<?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>218433</bug_id>
          
          <creation_ts>2020-11-02 03:38:47 -0800</creation_ts>
          <short_desc>Update WebRTC usrsctp to M87</short_desc>
          <delta_ts>2020-11-03 06:21:26 -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>WebRTC</component>
          <version>WebKit Local 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>annulen</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1703474</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-02 03:38:47 -0800</bug_when>
    <thetext>Update WebRTC usrsctp to M87</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703475</commentid>
    <comment_count>1</comment_count>
      <attachid>412898</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-02 03:41:51 -0800</bug_when>
    <thetext>Created attachment 412898
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703479</commentid>
    <comment_count>2</comment_count>
      <attachid>412899</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-02 03:47:29 -0800</bug_when>
    <thetext>Created attachment 412899
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703689</commentid>
    <comment_count>3</comment_count>
      <attachid>412899</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-11-02 14:06:14 -0800</bug_when>
    <thetext>Comment on attachment 412899
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703903</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-03 03:19:20 -0800</bug_when>
    <thetext>commit-queue failed to commit attachment 412899 to WebKit repository.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703957</commentid>
    <comment_count>5</comment_count>
      <attachid>413053</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-03 05:41:12 -0800</bug_when>
    <thetext>Created attachment 413053
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703969</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-03 06:20:52 -0800</bug_when>
    <thetext>Committed r269300: &lt;https://trac.webkit.org/changeset/269300&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 413053.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703970</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-03 06:21:26 -0800</bug_when>
    <thetext>&lt;rdar://problem/70992153&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412898</attachid>
            <date>2020-11-02 03:41:51 -0800</date>
            <delta_ts>2020-11-02 03:59:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218433-20201102124134.patch</filename>
            <type>text/plain</type>
            <size>1336798</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4OTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBiNTBjMzIzNTA0YWYwNmYyNmE0YmZkZjZiMDU1OGFlZTYwYmM5N2EzLi5mMTQ2
YjIwMTE0NTI3YjcwMDljZDQ1NWNlN2QyMzg3Mzk1MDE5MTNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMC0xMS0wMiAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIFdlYlJUQyB1c3JzY3Rw
IHRvIE04NworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE4NDMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBTb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cDogUmVzeW5jZWQuCisKIDIwMjAtMTEtMDIgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBXZWJSVEMg
YWJzZWlsIHRvIE04NwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL0JVSUxELmduCmluZGV4IDk0ZjI2Nzg2
ZTFkODE0Mzk4YjEwMGMxNTQxNDBhMjhkOGJkMzYyNGUuLmI4Njk4NTIwMGI4ZjQxZjFjZjQ3N2Nh
MzM0YWE5Y2ZhN2EyZjNiOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvQlVJTEQuZ24KQEAgLTks
NiArOSwxMiBAQCBjb25maWcoInVzcnNjdHBfY29uZmlnIikgewogICAgICJ1c3JzY3RwbGliL3Vz
cnNjdHBsaWIiLAogICAgICJ1c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldCIsCiAgIF0KKwor
ICAjIFRoaXMgaXMgcGFydCBvZiB0aGUgcHVibGljIGNvbmZpZyBiZWNhdXNlIGl0J3MgdXNlZCBi
b3RoIGJ5IHVzcnNjdHAgYW5kCisgICMgdGhlIGNsaWVudCAoV2ViUlRDKSwgdG8gZGV0ZXJtaW5l
IGlmIHRoZSBsZW5ndGggZmllbGQgbmVlZHMgcG9wdWxhdGluZy4KKyAgaWYgKGlzX21hYyB8fCBp
c19pb3MgfHwgdGFyZ2V0X29zID09ICJmcmVlYnNkIikgeworICAgIGRlZmluZXMgPSBbICJIQVZF
X1NDT05OX0xFTiIgXQorICB9CiB9CiAKIGNvbmZpZygidXNyc2N0cF93YXJuaW5ncyIpIHsKQEAg
LTIxLDYgKzI3LDExIEBAIGNvbmZpZygidXNyc2N0cF93YXJuaW5ncyIpIHsKICAgICAgICMgd2hh
dCB0aGV5IGRpZCBpbiBjb25maWd1cmUuYWMuIFdlIGNhbiByZW1vdmUgdGhpcyBvbmNlCiAgICAg
ICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9zY3RwbGFiL3VzcnNjdHAvaXNzdWVzLzE3NyBpcyBmaXhl
ZC4KICAgICAgICItV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIiwKKworICAgICAgIyB1c3Jz
Y3RwIHVzZXMgdGltaW5nc2FmZV9iY21wIHdoaWNoIGlzIG5vdCBhdmFpbGFibGUgaW4gYWxsCisg
ICAgICAjIHZlcnNpb25zIG9mIE9TIFgsIGhvd2V2ZXIgdGhpcyBpc24ndCBhY3R1YWxseSBhbiBp
c3N1ZSBzaW5jZQorICAgICAgIyB1c3JzY3RwIHByb3ZpZGVzIGl0cyBvd24gaW1wbGVtZW50YXRp
b24uCisgICAgICAiLVduby11bmd1YXJkZWQtYXZhaWxhYmlsaXR5IiwKICAgICBdCiAgIH0KIH0K
QEAgLTExNiwxOSArMTI3LDE3IEBAIHN0YXRpY19saWJyYXJ5KCJ1c3JzY3RwIikgewogICAgICIt
VUlORVQ2IiwKICAgXQogCi0gIGlmIChpc19saW51eCB8fCBpc19hbmRyb2lkKSB7CisgIGlmIChp
c19saW51eCB8fCBpc19jaHJvbWVvcyB8fCBpc19hbmRyb2lkKSB7CiAgICAgZGVmaW5lcyArPSBb
CiAgICAgICAiX19Vc2Vyc3BhY2Vfb3NfTGludXgiLAogICAgICAgIl9HTlVfU09VUkNFIiwKICAg
ICBdCi0gIH0gZWxzZSBpZiAoaXNfbWFjIHx8IGlzX2lvcykgeworICB9IGVsc2UgaWYgKGlzX2Fw
cGxlKSB7CiAgICAgZGVmaW5lcyArPSBbCiAgICAgICAiSEFWRV9TQV9MRU4iLAotICAgICAgIkhB
VkVfU0NPTk5fTEVOIiwKICAgICAgICJfX0FQUExFX1VTRV9SRkNfMjI5MiIsCiAgICAgICAiX19V
c2Vyc3BhY2Vfb3NfRGFyd2luIiwKICAgICBdCi0gICAgY2ZsYWdzICs9IFsgIi1VX19BUFBMRV9f
IiBdCiAgIH0KIAogICBpZiAoaXNfd2luKSB7CkBAIC0xNDAsNyArMTQ5LDUgQEAgc3RhdGljX2xp
YnJhcnkoInVzcnNjdHAiKSB7CiAgIGlmIChpc19mdWNoc2lhKSB7CiAgICAgZGVmaW5lcyArPSBb
ICJfX1VzZXJzcGFjZV9vc19GdWNoc2lhIiBdCiAgIH0KLSAgZGVwcyA9IFsKLSAgICAiLy90aGly
ZF9wYXJ0eS9ib3Jpbmdzc2wiLAotICBdCisgIGRlcHMgPSBbICIvL3RoaXJkX3BhcnR5L2Jvcmlu
Z3NzbCIgXQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL09XTkVSUyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC9PV05FUlMKaW5kZXggZTgxM2IwNzk2ODBhMDdi
ZGYyZTY1ODQxNzRlZDFhNGZlOTRjNzRiZS4uYWFlNTM4YjBiODZhYzhkZDczYmI5YmY2MDlmY2Iz
NjY0ZTlmZmJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL09XTkVSUworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvT1dORVJTCkBAIC0xLDMgKzEsNCBAQAot
cHRoYXRjaGVyQGNocm9taXVtLm9yZwotamlheWxAY2hyb21pdW0ub3JnCi1sZGl4b25AY2hyb21p
dW0ub3JnCitodGFAY2hyb21pdW0ub3JnCitvcnBoaXNAY2hyb21pdW0ub3JnCisKKyMgQ09NUE9O
RU5UOiBCbGluaz5XZWJSVEM+TmV0d29yawpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL1JFQURNRS5jaHJvbWl1bSBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC9SRUFE
TUUuY2hyb21pdW0KaW5kZXggMjRiMGJkZjQ1ZjdhZDBmYmM0NjhmODExMTU2ZjdlYjI3MTY2OGYz
Mi4uZTc0MDVhYzk1NDk4ZjQ2MjAwNGY0ZTcyYzc4MTJmMGFhNGM1MjQyZiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL1JF
QURNRS5jaHJvbWl1bQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L3VzcnNjdHAvUkVBRE1FLmNocm9taXVtCkBAIC0xLDggKzEsOSBAQAogTmFtZTog
dXNyc2N0cAogVVJMOiBodHRwOi8vZ2l0aHViLmNvbS9zY3RwbGFiL3VzcnNjdHAKIFZlcnNpb246
IDAKLURhdGU6IEp1biAyMiwgMjAxOAotUmV2aXNpb246IDdhOGJjOWE5MGNhOTY2MzRhYTU2ZWU3
MTI4NTZkOTdmMjdkOTAzZjgKK0NQRVByZWZpeDogY3BlOi9hOnVzcnNjdHBfcHJvamVjdDp1c3Jz
Y3RwOjIwMTktMTItMjAKK0RhdGU6IEF1ZyAyOCwgMjAyMAorUmV2aXNpb246IDk5NWMwYjg0NDE0
NDY2ZDc3ZDUyMDExZTViNTcyY2JlMjEzYjc3MGEKIExpY2Vuc2U6IE5ldyBCU0QKIExpY2Vuc2Ug
RmlsZTogTElDRU5TRQogU2VjdXJpdHkgQ3JpdGljYWw6IHllcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBs
aWIvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtd2l0aC1jbWFrZS55bWwgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi8uZ2l0
aHViL3dvcmtmbG93cy9idWlsZC13aXRoLWNtYWtlLnltbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YmE5ZDY5YzMx
ZmQ4ZmUyODJmMDFlMGEwYTZhMDA5ZTAwYWU1ZjVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBs
aWIvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtd2l0aC1jbWFrZS55bWwKQEAgLTAsMCArMSw1NyBA
QAorbmFtZTogQnVpbGQgd2l0aCBDTWFrZQorCitvbjoKKyAgcHVzaDoKKyAgICBicmFuY2hlczog
WyBtYXN0ZXIsIGdpdGh1Yi1hY3Rpb25zIF0KKyAgcHVsbF9yZXF1ZXN0OgorICAgIGJyYW5jaGVz
OiBbIG1hc3RlciBdCisKK2pvYnM6CisgIGJ1aWxkOgorCisgICAgc3RyYXRlZ3k6CisgICAgICBt
YXRyaXg6CisgICAgICAgIHBsYXRmb3JtOiBbdWJ1bnR1LWxhdGVzdCwgbWFjb3MtbGF0ZXN0LCB3
aW5kb3dzLWxhdGVzdF0KKyAgICAgICAgY21ha2VfYnVpbGRfdHlwZTogW0RlYnVnLCBSZWxXaXRo
RGViSW5mb10KKyAgICAgICAgc2N0cF9pbnZhcmlhbnRzOiBbT04sIE9GRl0KKyAgICAgICAgc2N0
cF9pbmV0NjogW09OLCBPRkZdCisgICAgICAgIHNjdHBfaW5ldDogW09OLCBPRkZdCisgICAgICAg
IHNjdHBfZGVidWc6IFtPTiwgT0ZGXQorCisgICAgcnVucy1vbjogJHt7IG1hdHJpeC5wbGF0Zm9y
bSB9fQorCisgICAgc3RlcHM6CisgICAgLSB1c2VzOiBhY3Rpb25zL2NoZWNrb3V0QHYyCisgICAg
ICB3aXRoOgorICAgICAgICBwYXRoOiAndXNyc2N0cF9zb3VyY2UnCisKKyAgICAtIG5hbWU6IFBy
ZXBhcmUgZGlycworICAgICAgc2hlbGw6IGJhc2gKKyAgICAgIHJ1bjogfAorICAgICAgICBta2Rp
ciAtcCBjbWFrZV9idWlsZAorICAgICAgICBta2RpciAtcCBjbWFrZV9pbnN0YWxsCisgICAgICAg
IAorICAgIC0gbmFtZTogR2VuZXJhdGUgQ01ha2UgcHJvamVjdAorICAgICAgc2hlbGw6IGJhc2gK
KyAgICAgIHJ1bjogfAorICAgICAgICBjZCBjbWFrZV9idWlsZAorICAgICAgICBjbWFrZSAtRENN
QUtFX0JVSUxEX1RZUEU9JHt7IG1hdHJpeC5jbWFrZV9idWlsZF90eXBlIH19IFwKKyAgICAgICAg
ICAgICAgLURDTUFLRV9QT1NJVElPTl9JTkRFUEVOREVOVF9DT0RFPU9OIFwKKyAgICAgICAgICAg
ICAgLURDTUFLRV9WRVJCT1NFX01BS0VGSUxFOkJPT0w9T04gXAorICAgICAgICAgICAgICAtRHNj
dHBfZGVidWc9JHt7IG1hdHJpeC5zY3RwX2RlYnVnIH19IFwKKyAgICAgICAgICAgICAgLURzY3Rw
X2ludmFyaWFudHM9JHt7IG1hdHJpeC5zY3RwX2ludmFyaWFudHMgfX0gXAorICAgICAgICAgICAg
ICAtRHNjdHBfaW5ldDY9JHt7IG1hdHJpeC5zY3RwX2luZXQ2IH19IFwKKyAgICAgICAgICAgICAg
LURzY3RwX2luZXQ9JHt7IG1hdHJpeC5zY3RwX2luZXQgfX0gXAorICAgICAgICAgICAgICAtRHNj
dHBfYnVpbGRfcHJvZ3JhbXM9T04gXAorICAgICAgICAgICAgICAtRHNjdHBfYnVpbGRfZnV6emVy
PU9GRiBcCisgICAgICAgICAgICAgIC1EQ01BS0VfSU5TVEFMTF9QUkVGSVg9JHtHSVRIVUJfV09S
S1NQQUNFfS9jbWFrZV9pbnN0YWxsIFwKKyAgICAgICAgICAgICAgJHtHSVRIVUJfV09SS1NQQUNF
fS91c3JzY3RwX3NvdXJjZQorICAgICAgICAKKyAgICAtIG5hbWU6IEJ1aWxkIGFuZCBpbnN0YWxs
IHByb2plY3QKKyAgICAgIHNoZWxsOiBiYXNoCisgICAgICBydW46IHwKKyAgICAgICAgY21ha2Ug
LS1idWlsZCBjbWFrZV9idWlsZCBcCisgICAgICAgICAgICAgIC0tcGFyYWxsZWwgMiBcCisgICAg
ICAgICAgICAgIC0tY29uZmlnICR7eyBtYXRyaXguY21ha2VfYnVpbGRfdHlwZSB9fSBcCisgICAg
ICAgICAgICAgIC0tdGFyZ2V0IGluc3RhbGwgXAorICAgICAgICAgICAgICAtLWNsZWFuLWZpcnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3VzcnNjdHAvdXNyc2N0cGxpYi8uZ2l0aWdub3JlIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvLmdpdGlnbm9yZQpp
bmRleCA0YTM4MDEzOGRmNTk5YTRhZmVkZTcwOTZlYzg1ZGZjNGE3NDU3ZTQyLi45ZTJkMWEyYTM3
MWYzZGQwMmU1NzFhNGMxOGUwMzhkMjA1ZDM0NTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi8uZ2l0
aWdub3JlCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvdXNyc2N0cC91c3JzY3RwbGliLy5naXRpZ25vcmUKQEAgLTU1LDE3ICs1NSwyNCBAQCBNYWtl
ZmlsZS5pbgogLmRpcnN0YW1wCiAKICMgYmluYXJpZXMKK3Byb2dyYW1zL2NoYXJnZW5fc2VydmVy
X3VwY2FsbAogcHJvZ3JhbXMvY2xpZW50Citwcm9ncmFtcy9jbGllbnRfdXBjYWxsCiBwcm9ncmFt
cy9kYXl0aW1lX3NlcnZlcgorcHJvZ3JhbXMvZGF5dGltZV9zZXJ2ZXJfdXBjYWxsCiBwcm9ncmFt
cy9kaXNjYXJkX3NlcnZlcgorcHJvZ3JhbXMvZGlzY2FyZF9zZXJ2ZXJfdXBjYWxsCiBwcm9ncmFt
cy9lY2hvX3NlcnZlcgorcHJvZ3JhbXMvZWNob19zZXJ2ZXJfdXBjYWxsCiBwcm9ncmFtcy9la3Jf
Y2xpZW50CiBwcm9ncmFtcy9la3JfbG9vcAotcHJvZ3JhbXMvZWtyX2xvb3Bfb2ZmbG9hZAorcHJv
Z3JhbXMvZWtyX2xvb3BfdXBjYWxsCiBwcm9ncmFtcy9la3JfcGVlcgogcHJvZ3JhbXMvZWtyX3Nl
cnZlcgogcHJvZ3JhbXMvaHR0cF9jbGllbnQKK3Byb2dyYW1zL2h0dHBfY2xpZW50X3VwY2FsbAog
cHJvZ3JhbXMvcnRjd2ViCitwcm9ncmFtcy9zdF9jbGllbnQKIHByb2dyYW1zL3RzY3RwCiBwcm9n
cmFtcy90ZXN0X2xpYm1nbXQKIHByb2dyYW1zL3Rlc3RfdGltZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3Rw
bGliL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvQ01ha2VMaXN0cy50eHQKaW5kZXggYWNmNTA1
NWE0ZTI4MTkxZDI5YjgwYjQ5YjE5MmJiY2Q4M2ZlN2UwMy4uMzcyNzBkMWQzNzk1YjJhNTNiNTk0
NzMwMDRhZjZjNWRkYjk0NWRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3Jz
Y3RwL3VzcnNjdHBsaWIvQ01ha2VMaXN0cy50eHQKQEAgLTEsNiArMSw2IEBACiAjCiAjIENvcHly
aWdodCAoQykgMjAxNS0yMDE1IE9sZWcgQWxleGVlbmtvdgotIyBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAxNyBGZWxpeCBXZWlucmFuaworIyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBGZWxpeCBXZWlu
cmFuawogIwogIyBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwpAQCAtMjksNyArMjksNyBAQAogIyBT
VUNIIERBTUFHRS4KICMKIAotcHJvamVjdCh1c3JzY3RwbGliKQorcHJvamVjdCh1c3JzY3RwbGli
IEMpCiBjbWFrZV9taW5pbXVtX3JlcXVpcmVkKFZFUlNJT04gMy4wKQogCiAjIERlYnVnIGJ1aWxk
IHR5cGUgYXMgZGVmYXVsdApAQCAtNzcsNiArNzcsOCBAQCBvcHRpb24oc2N0cF9zYW5pdGl6ZXJf
YWRkcmVzcyAiQ29tcGlsZSB3aXRoIGFkZHJlc3Mgc2FuaXRpemVyIiAwKQogCiBvcHRpb24oc2N0
cF9zYW5pdGl6ZXJfbWVtb3J5ICJDb21waWxlIHdpdGggbWVtb3J5IHNhbml0aXplciIgMCkKIAor
b3B0aW9uKHNjdHBfYnVpbGRfZnV6emVyICJDb21waWxlIGluIGNsYW5nIGZ1enppbmcgbW9kZSIg
MCkKKwogaWYgKHNjdHBfc2FuaXRpemVyX2FkZHJlc3MgQU5EIHNjdHBfc2FuaXRpemVyX21lbW9y
eSkKIAltZXNzYWdlKEZBVEFMX0VSUk9SICJDYW4gbm90IGNvbXBpbGUgd2l0aCBib3RoIHNhbml0
aXplciBvcHRpb25zIikKIGVuZGlmICgpCkBAIC0xMjIsNyArMTI0LDcgQEAgZW5kaWYgKCkKICMg
Q0hFQ0sgU1RSVUNUIE1FTUJFUlMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKIAotc2V0KENNQUtFX1JFUVVJUkVEX0lOQ0xVREVTICIke0NNQUtFX1NP
VVJDRV9ESVJ9L3VzcnNjdHBsaWIiKQorc2V0KENNQUtFX1JFUVVJUkVEX0lOQ0xVREVTICIke0NN
QUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vdXNyc2N0cGxpYiIpCiAKIGNoZWNrX2luY2x1ZGVfZmls
ZSh1c3JzY3RwLmggaGF2ZV91c3JzY3RwX2gpCiBpZiAoTk9UIGhhdmVfdXNyc2N0cF9oKQpAQCAt
MTU4LDk0ICsxNjAsMTEzIEBAIGVuZGlmICgpCiAjIENPTVBJTEVSIFNFVFRJTkdTCiAjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKKyMgRGV0ZXJtaW5l
IGlmIGNvbXBpbGVyIGlzIFZpc3VhbCBTdHVkaW8gY29tcGlsZXIgb3IgQ2xhbmcgaW4gTVNWQyBj
b21wYXRpYmxlIG1vZGUKK2lmIChDTUFLRV9DX0NPTVBJTEVSX0lEIE1BVENIRVMgIk1TVkMiIE9S
IENNQUtFX0NfU0lNVUxBVEVfSUQgTUFUQ0hFUyAiTVNWQyIpCisgIHNldChDX0NPTVBJTEVSX0lT
X01TVkNfTElLRSBUUlVFKQorZW5kaWYoKQorCisjIFNFVFRJTkdTIEZPUiBWSVNVQUwgU1RVRElP
IENPTVBJTEVSCitpZiAoQ19DT01QSUxFUl9JU19NU1ZDX0xJS0UpCisJaWYgKENNQUtFX0NfRkxB
R1MgTUFUQ0hFUyAiL1dbMC00XSIpCisJCXN0cmluZyhSRUdFWCBSRVBMQUNFICIvV1swLTRdIiAi
L1c0IiBDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IikKKwllbHNlICgpCisJCXNldChD
TUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC9XNCIpCisJZW5kaWYgKCkKKworCXNldChD
TUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC93ZDQxMDAiKSAjICdpZGVudGlmaWVyJyA6
IHVucmVmZXJlbmNlZCBmb3JtYWwgcGFyYW1ldGVyCisJc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01B
S0VfQ19GTEFHU30gL3dkNDEyNyIpICMgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBpcyBjb25zdGFu
dAorCXNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC93ZDQyMDAiKSAjIG5vbnN0
YW5kYXJkIGV4dGVuc2lvbiB1c2VkIDogemVyby1zaXplZCBhcnJheSBpbiBzdHJ1Y3QvdW5pb24K
KwlzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAvd2Q0MjE0IikgIyBiaXQgZmll
bGQgdHlwZXMgb3RoZXIgdGhhbiBpbnQKKwlzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZM
QUdTfSAvd2Q0NzA2IikgIyBhc3NpZ25tZW50IHdpdGhpbiBjb25kaXRpb25hbCBleHByZXNzaW9u
CisJc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gL3dkNDI0NSIpICMgJ2NvbnZl
cnNpb24nIDogY29udmVyc2lvbiBmcm9tICd0eXBlMScgdG8gJ3R5cGUyJywgc2lnbmVkL3Vuc2ln
bmVkIG1pc21hdGNoCisJc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gL3dkNDM4
OSIpICMgJ29wZXJhdG9yJyA6IHNpZ25lZC91bnNpZ25lZCBtaXNtYXRjaAorCXNldChDTUFLRV9D
X0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC93ZDQ3MDIiKSAjIHVucmVhY2hhYmxlIGNvZGUKKwlz
ZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAvd2Q0NzAxIikgIyBQb3RlbnRpYWxs
eSB1bmluaXRpYWxpemVkIGxvY2FsIHZhcmlhYmxlICduYW1lJyB1c2VkCisKKwkjIFRvRG8KKwlz
ZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAvd2Q0MjQ0IikgIyAnY29udmVyc2lv
bicgY29udmVyc2lvbiBmcm9tICd0eXBlMScgdG8gJ3R5cGUyJywgcG9zc2libGUgbG9zcyBvZiBk
YXRhCisKKwlpZiAoc2N0cF93ZXJyb3IpCisJCXNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0Nf
RkxBR1N9IC9XWCIpCisKKwkJaWYgKENNQUtFX0NfQ09NUElMRVJfSUQgTUFUQ0hFUyAiQ2xhbmci
KQorCQkJIyB0ZW1wb3JhcnkgZGlzYWJsZSBleHRhIGNsYW5nIHdhcm5pbmdzIHByZXZlbnRpbmcg
Y29tcGlsYXRpb24KKwkJCXNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC9jbGFu
ZzotV25vLXVudXNlZC1mdW5jdGlvbiIpCisJCQlzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9D
X0ZMQUdTfSAvY2xhbmc6LVduby1taXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyIpCisJCQlzZXQo
Q01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAvY2xhbmc6LVduby1zaWduLWNvbXBhcmUi
KQorCQkJc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gL2NsYW5nOi1Xbm8tZm9y
bWF0IikKKwkJZW5kaWYoKQorCWVuZGlmICgpCiAjIFNFVFRJTkdTIEZPUiBVTklYIENPTVBJTEVS
Ci1pZiAoIiR7Q01BS0VfQ19DT01QSUxFUl9JRH0iIE1BVENIRVMgIkNsYW5nIiBPUiAiJHtDTUFL
RV9DX0NPTVBJTEVSX0lEfSIgTUFUQ0hFUyAiQXBwbGVDbGFuZyIgT1IgIiR7Q01BS0VfQ19DT01Q
SUxFUl9JRH0iIE1BVENIRVMgIkdOVSIpCi0Jc2V0KENNQUtFX0NfRkxBR1MgICAiJHtDTUFLRV9D
X0ZMQUdTfSAgIC1zdGQ9Yzk5IC1wZWRhbnRpYyAtV2FsbCAtV2V4dHJhIikKLQlzZXQoQ01BS0Vf
Q1hYX0ZMQUdTICIke0NNQUtFX0NYWF9GTEFHU30gLXN0ZD1jOTkgLXBlZGFudGljIC1XYWxsIC1X
ZXh0cmEiKQorZWxzZWlmIChDTUFLRV9DX0NPTVBJTEVSX0lEIE1BVENIRVMgIkNsYW5nIiBPUiBD
TUFLRV9DX0NPTVBJTEVSX0lEIE1BVENIRVMgIkFwcGxlQ2xhbmciIE9SIENNQUtFX0NfQ09NUElM
RVJfSUQgTUFUQ0hFUyAiR05VIikKKwlzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdT
fSAtc3RkPWM5OSAtcGVkYW50aWMgLVdhbGwgLVdleHRyYSIpCiAKIAljaGVja19jX2NvbXBpbGVy
X2ZsYWcoLVdmbG9hdC1lcXVhbCBoYXNfd2Zsb2F0X2VxdWFsKQogCWlmIChoYXNfd2Zsb2F0X2Vx
dWFsKQotCQlzZXQoQ01BS0VfQ19GTEFHUyAgICIke0NNQUtFX0NfRkxBR1N9ICAgLVdmbG9hdC1l
cXVhbCIpCi0JCXNldChDTUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAtV2Zsb2F0
LWVxdWFsIikKKwkJc2V0KENNQUtFX0NfRkxBR1MgICIke0NNQUtFX0NfRkxBR1N9IC1XZmxvYXQt
ZXF1YWwiKQogCWVuZGlmICgpCiAKIAljaGVja19jX2NvbXBpbGVyX2ZsYWcoLVdzaGFkb3cgaGFz
X3dzaGFkb3cpCiAJaWYgKGhhc193c2hhZG93KQotCQlzZXQoQ01BS0VfQ19GTEFHUyAgICIke0NN
QUtFX0NfRkxBR1N9ICAgLVdzaGFkb3ciKQotCQlzZXQoQ01BS0VfQ1hYX0ZMQUdTICIke0NNQUtF
X0NYWF9GTEFHU30gLVdzaGFkb3ciKQorCQlzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZM
QUdTfSAtV3NoYWRvdyIpCiAJZW5kaWYgKCkKIAogCWNoZWNrX2NfY29tcGlsZXJfZmxhZygtV3Bv
aW50ZXItYXJpdGggaGFzX3dwb2ludGVyX2FyaXRpaCkKIAlpZiAoaGFzX3dwb2ludGVyX2FyaXRp
aCkKLQkJc2V0KENNQUtFX0NfRkxBR1MgICAiJHtDTUFLRV9DX0ZMQUdTfSAgIC1XcG9pbnRlci1h
cml0aCIpCi0JCXNldChDTUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAtV3BvaW50
ZXItYXJpdGgiKQorCQlzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAtV3BvaW50
ZXItYXJpdGgiKQogCWVuZGlmICgpCiAKIAljaGVja19jX2NvbXBpbGVyX2ZsYWcoLVd1bnJlYWNo
YWJsZS1jb2RlIGhhc193dW5yZWFjaGFibGVfY29kZSkKIAlpZiAoaGFzX3d1bnJlYWNoYWJsZV9j
b2RlKQotCQlzZXQoQ01BS0VfQ19GTEFHUyAgICIke0NNQUtFX0NfRkxBR1N9ICAgLVd1bnJlYWNo
YWJsZS1jb2RlIikKLQkJc2V0KENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9IC1X
dW5yZWFjaGFibGUtY29kZSIpCisJCXNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9
IC1XdW5yZWFjaGFibGUtY29kZSIpCiAJZW5kaWYgKCkKIAogCWNoZWNrX2NfY29tcGlsZXJfZmxh
ZygtV2luaXQtc2VsZiBoYXNfd2luaXRfc2VsZikKIAlpZiAoaGFzX3dpbml0X3NlbGYpCi0JCXNl
dChDTUFLRV9DX0ZMQUdTICAgIiR7Q01BS0VfQ19GTEFHU30gICAtV2luaXQtc2VsZiIpCi0JCXNl
dChDTUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAtV2luaXQtc2VsZiIpCisJCXNl
dChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC1XaW5pdC1zZWxmIikKIAllbmRpZiAo
KQogCiAJY2hlY2tfY19jb21waWxlcl9mbGFnKC1Xbm8tdW51c2VkLWZ1bmN0aW9uIGhhc193bm9f
dW51c2VkX2Z1bmN0aW9uKQogCWlmIChoYXNfd25vX3VudXNlZF9mdW5jdGlvbikKLQkJc2V0KENN
QUtFX0NfRkxBR1MgICAiJHtDTUFLRV9DX0ZMQUdTfSAgIC1Xbm8tdW51c2VkLWZ1bmN0aW9uIikK
LQkJc2V0KENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9IC1Xbm8tdW51c2VkLWZ1
bmN0aW9uIikKKwkJc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gLVduby11bnVz
ZWQtZnVuY3Rpb24iKQogCWVuZGlmICgpCiAKIAljaGVja19jX2NvbXBpbGVyX2ZsYWcoLVduby11
bnVzZWQtcGFyYW1ldGVyIGhhc193bm9fdW51c2VkX3BhcmFtZXRlcikKIAlpZiAoaGFzX3dub191
bnVzZWRfcGFyYW1ldGVyKQotCQlzZXQoQ01BS0VfQ19GTEFHUyAgICIke0NNQUtFX0NfRkxBR1N9
ICAgLVduby11bnVzZWQtcGFyYW1ldGVyIikKLQkJc2V0KENNQUtFX0NYWF9GTEFHUyAiJHtDTUFL
RV9DWFhfRkxBR1N9IC1Xbm8tdW51c2VkLXBhcmFtZXRlciIpCisJCXNldChDTUFLRV9DX0ZMQUdT
ICIke0NNQUtFX0NfRkxBR1N9IC1Xbm8tdW51c2VkLXBhcmFtZXRlciIpCiAJZW5kaWYgKCkKIAog
CWNoZWNrX2NfY29tcGlsZXJfZmxhZygtV25vLXVucmVhY2hhYmxlLWNvZGUgaGFzX3dub191bnJl
YWNoYWJsZV9jb2RlKQogCWlmIChoYXNfd25vX3VucmVhY2hhYmxlX2NvZGUpCi0JCXNldChDTUFL
RV9DX0ZMQUdTICAgIiR7Q01BS0VfQ19GTEFHU30gICAtV25vLXVucmVhY2hhYmxlLWNvZGUiKQot
CQlzZXQoQ01BS0VfQ1hYX0ZMQUdTICIke0NNQUtFX0NYWF9GTEFHU30gLVduby11bnJlYWNoYWJs
ZS1jb2RlIikKKwkJc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gLVduby11bnJl
YWNoYWJsZS1jb2RlIikKIAllbmRpZiAoKQogCiAJY2hlY2tfY19jb21waWxlcl9mbGFnKC1Xc3Ry
aWN0LXByb3RvdHlwZXMgaGFzX3dzdHJpY3RfcHJvdG90eXBlcykKIAlpZiAoaGFzX3dzdHJpY3Rf
cHJvdG90eXBlcykKLQkJc2V0KENNQUtFX0NfRkxBR1MgICAiJHtDTUFLRV9DX0ZMQUdTfSAgIC1X
c3RyaWN0LXByb3RvdHlwZXMiKQotCQlzZXQoQ01BS0VfQ1hYX0ZMQUdTICIke0NNQUtFX0NYWF9G
TEFHU30gLVdzdHJpY3QtcHJvdG90eXBlcyIpCisJCXNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtF
X0NfRkxBR1N9IC1Xc3RyaWN0LXByb3RvdHlwZXMiKQogCWVuZGlmICgpCiAKIAlpZiAoc2N0cF93
ZXJyb3IpCi0JCXNldChDTUFLRV9DX0ZMQUdTICAgIiR7Q01BS0VfQ19GTEFHU30gICAtV2Vycm9y
IikKLQkJc2V0KENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9IC1XZXJyb3IiKQor
CQlzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAtV2Vycm9yIikKIAllbmRpZiAo
KQogCiAJaWYgKHNjdHBfc2FuaXRpemVyX2FkZHJlc3MpCi0JCXNldChDTUFLRV9DX0ZMQUdTICAg
IiR7Q01BS0VfQ19GTEFHU30gICAtZnNhbml0aXplPWFkZHJlc3MgLWZuby1vbWl0LWZyYW1lLXBv
aW50ZXIgLWciKQotCQlzZXQoQ01BS0VfQ1hYX0ZMQUdTICIke0NNQUtFX0NYWF9GTEFHU30gLWZz
YW5pdGl6ZT1hZGRyZXNzIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyIC1nIikKKwkJc2V0KENNQUtF
X0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gLWZzYW5pdGl6ZT1hZGRyZXNzLHVuZGVmaW5lZCxz
aWduZWQtaW50ZWdlci1vdmVyZmxvdyAtZm5vLW9taXQtZnJhbWUtcG9pbnRlciAtZm5vLXNhbml0
aXplLXJlY292ZXI9YWxsIC1mc2FuaXRpemUtYWRkcmVzcy11c2UtYWZ0ZXItc2NvcGUgIikKIAll
bmRpZiAoKQogCiAJaWYgKHNjdHBfc2FuaXRpemVyX21lbW9yeSkKLQkJc2V0KENNQUtFX0NfRkxB
R1MgICAiJHtDTUFLRV9DX0ZMQUdTfSAgIC1mc2FuaXRpemU9bWVtb3J5IC1mbm8tb21pdC1mcmFt
ZS1wb2ludGVyIC1nIC1mc2FuaXRpemUtbWVtb3J5LXRyYWNrLW9yaWdpbnMiKQotCQlzZXQoQ01B
S0VfQ1hYX0ZMQUdTICIke0NNQUtFX0NYWF9GTEFHU30gLWZzYW5pdGl6ZT1tZW1vcnkgLWZuby1v
bWl0LWZyYW1lLXBvaW50ZXIgLWcgLWZzYW5pdGl6ZS1tZW1vcnktdHJhY2stb3JpZ2lucyIpCisJ
CXNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC1mc2FuaXRpemU9bWVtb3J5IC1m
bm8tb21pdC1mcmFtZS1wb2ludGVyIC1mc2FuaXRpemUtbWVtb3J5LXRyYWNrLW9yaWdpbnMgLWZQ
SUUiKQogCWVuZGlmICgpCi1lbmRpZiAoKQogCi0jIFNFVFRJTkdTIEZPUiBWSVNVQUwgU1RVRElP
IENPTVBJTEVSCi1pZiAoIngke0NNQUtFX0NfQ09NUElMRVJfSUR9IiBTVFJFUVVBTCAieE1TVkMi
KQotCWlmIChDTUFLRV9DX0ZMQUdTIE1BVENIRVMgIi9XWzAtNF0iKQotCQlzdHJpbmcoUkVHRVgg
UkVQTEFDRSAiL1dbMC00XSIgIi9XMyIgQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSIp
Ci0JZWxzZSAoKQotCQlzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAvVzMiKQot
CWVuZGlmICgpCi0KLQlpZiAoV0VSUk9SKQotCQlzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9D
X0ZMQUdTfSAvV1giKQorCWlmIChzY3RwX2J1aWxkX2Z1enplcikKKwkJc2V0KENNQUtFX0JVSUxE
X1RZUEUgIkRFQlVHIikKKwkJYWRkX2RlZmluaXRpb25zKC1ERlVaWklOR19CVUlMRF9NT0RFX1VO
U0FGRV9GT1JfUFJPRFVDVElPTikKKwkJc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFH
U30gLU8xIC1mc2FuaXRpemU9ZnV6emVyLW5vLWxpbmsiKQogCWVuZGlmICgpCiBlbmRpZiAoKQog
CittZXNzYWdlKFNUQVRVUyAiQ29tcGlsZXIgZmxhZ3MgKENNQUtFX0NfRkxBR1MpOiAke0NNQUtF
X0NfRkxBR1N9IikKKwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCiAjIElOQ0xVREUgU1VCRElSUwpAQCAtMjU2LDMgKzI3Nyw3IEBAIGFkZF9zdWJk
aXJlY3RvcnkodXNyc2N0cGxpYikKIGlmIChzY3RwX2J1aWxkX3Byb2dyYW1zKQogCWFkZF9zdWJk
aXJlY3RvcnkocHJvZ3JhbXMpCiBlbmRpZiAoKQorCitpZiAoc2N0cF9idWlsZF9mdXp6ZXIpCisJ
YWRkX3N1YmRpcmVjdG9yeShmdXp6ZXIpCitlbmRpZiAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIv
TWFrZWZpbGUuYW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9NYWtlZmlsZS5hbQppbmRleCBlOWUxN2UyMmM0Zjc4ZGZi
YjU2MmNlNTY0ZDlhNWFhNWY3N2UwMjZiLi40YmQ5OThmYmU3MGFkNjA4NWI0OTI3YzkxMWY4NGZj
YzhjYzgzY2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9NYWtlZmlsZS5hbQorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi9NYWtlZmlsZS5hbQpAQCAtMjgsNyArMjgsMTEgQEAKICMgU1VDSCBEQU1BR0UuCiAjCiAKLVNV
QkRJUlMgPSB1c3JzY3RwbGliIHByb2dyYW1zCitpZiBDT05EX1BST0dSQU1TCitNQVlCRVBST0dS
QU1TID0gcHJvZ3JhbXMKK2VuZGlmCisKK1NVQkRJUlMgPSB1c3JzY3RwbGliICQoTUFZQkVQUk9H
UkFNUykKIEVYVFJBX0RJU1QgPSBib290c3RyYXAgTWFrZWZpbGUubm1ha2UKIEFDTE9DQUxfQU1G
TEFHUyA9IC1JIG00CiAjIHBrZ2NvbmZpZ19EQVRBID0gdXNyc2N0cC5wYwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3Vz
cnNjdHBsaWIvTWFudWFsLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvTWFudWFsLm1kCmluZGV4IDcwNTczNjg4NDRk
ZWUzMjQwYTAzYTcyNWIwOTlkZDgwYTZkMjFmNTkuLmIxN2M3NTQxNDJkZjE2MGY5ODE0YzRjODlh
YjE5NjY3ZDJjZTM4N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL01hbnVhbC5tZAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0
cGxpYi9NYW51YWwubWQKQEAgLTQsNyArNCw3IEBAIFNDVFAgaXMgYSBtZXNzYWdlIG9yaWVudGVk
LCByZWxpYWJsZSB0cmFuc3BvcnQgcHJvdG9jb2wgd2l0aCBkaXJlY3Qgc3VwcG9ydCBmb3IKIAog
TGlrZSBUQ1AsIFNDVFAgcHJvdmlkZXMgcmVsaWFibGUsIGNvbm5lY3Rpb24gb3JpZW50ZWQgZGF0
YSBkZWxpdmVyeSB3aXRoIGNvbmdlc3Rpb24gY29udHJvbC4gVW5saWtlIFRDUCwgU0NUUCBhbHNv
IHByb3ZpZGVzIG1lc3NhZ2UgYm91bmRhcnkgcHJlc2VydmF0aW9uLCBvcmRlcmVkIGFuZCB1bm9y
ZGVyZWQgbWVzc2FnZSBkZWxpdmVyeSwgbXVsdGktc3RyZWFtaW5nIGFuZCBtdWx0aS1ob21pbmcu
IERldGVjdGlvbiBvZiBkYXRhIGNvcnJ1cHRpb24sIGxvc3Mgb2YgZGF0YSBhbmQgZHVwbGljYXRp
b24gb2YgZGF0YSBpcyBhY2hpZXZlZCBieSB1c2luZyBjaGVja3N1bXMgYW5kIHNlcXVlbmNlIG51
bWJlcnMuIEEgc2VsZWN0aXZlIHJldHJhbnNtaXNzaW9uIG1lY2hhbmlzbSBpcyBhcHBsaWVkIHRv
IGNvcnJlY3QgbG9zcyBvciBjb3JydXB0aW9uIG9mIGRhdGEuCiAKLUluIHRoaXMgbWFudWFsIHRo
ZSBzb2NrZXQgQVBJIGZvciB0aGUgU0NUUCBVc2VyLWxhbmQgaW1wbGVtZW50YXRpb24gd2lsbCBi
ZSBkZXNjcmliZWQuICBJdCBpcyBiYXNlZCBvbiBbUkZDIDY0NThdKGh0dHA6Ly90b29scy5pZXRm
Lm9yZy9odG1sL3JmYzY0NTgpLiBUaGUgbWFpbiBmb2N1cyBvZiB0aGlzIGRvY3VtZW50IGlzIG9u
IHBvaW50aW5nIG91dCB0aGUgZGlmZmVyZW5jZXMgdG8gdGhlIFNDVFAgU29ja2V0cyBBUEkuIEZv
ciBhbGwgYXNwZWN0cyBvZiB0aGUgc29ja2V0cyBBUEkgdGhhdCBhcmUgbm90IG1lbnRpb25lZCBp
biB0aGlzIGRvY3VtZW50LCBwbGVhc2UgcmVmZXIgdG8gW1JGQyA2NDU4XShodHRwOi8vdG9vbHMu
aWV0Zi5vcmcvaHRtbC9yZmM2NDU4KS4gUXVlc3Rpb25zIGFib3V0IFNDVFAgaXRzZWxmIGNhbiBo
b3BlZnVsbHkgYmUgYW5zd2VyZWQgYnkgW1JGQyA0OTYwXShodHRwOi8vdG9vbHMuaWV0Zi5vcmcv
aHRtbC9yZmM0OTYwKS4KK0luIHRoaXMgbWFudWFsIHRoZSBzb2NrZXQgQVBJIGZvciB0aGUgU0NU
UCBVc2VyLWxhbmQgaW1wbGVtZW50YXRpb24gd2lsbCBiZSBkZXNjcmliZWQuICBJdCBpcyBiYXNl
ZCBvbiBbUkZDIDY0NThdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU4KS4gVGhl
IG1haW4gZm9jdXMgb2YgdGhpcyBkb2N1bWVudCBpcyBvbiBwb2ludGluZyBvdXQgdGhlIGRpZmZl
cmVuY2VzIHRvIHRoZSBTQ1RQIFNvY2tldHMgQVBJLiBGb3IgYWxsIGFzcGVjdHMgb2YgdGhlIHNv
Y2tldHMgQVBJIHRoYXQgYXJlIG5vdCBtZW50aW9uZWQgaW4gdGhpcyBkb2N1bWVudCwgcGxlYXNl
IHJlZmVyIHRvIFtSRkMgNjQ1OF0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTgp
LiBRdWVzdGlvbnMgYWJvdXQgU0NUUCBpdHNlbGYgY2FuIGhvcGVmdWxseSBiZSBhbnN3ZXJlZCBi
eSBbUkZDIDQ5NjBdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM0OTYwKS4KIAogIyMg
R2V0dGluZyBTdGFydGVkCiBUaGUgdXNlci1sYW5kIHN0YWNrIGhhcyBiZWVuIHRlc3RlZCBvbiBG
cmVlQlNEIDEwLjAsIFVidW50dSAxMS4xMCwgV2luZG93cyA3LCBNYWMgT1MgWCAxMC42LCBhbmQg
TWFjIE9TIFggMTAuNy4gVGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgdXNlci1sYW5kIHN0YWNr
IGlzIHByb3ZpZGVkIG9uIFtnaXRodWJdKGh0dHBzOi8vZ2l0aHViLmNvbS9zY3RwbGFiL3VzcnNj
dHApLiBEb3dubG9hZCB0aGUgdGFyYmFsbCBhbmQgdW50YXIgaXQgaW4gYSBmb2xkZXIgb2YgeW91
ciBjaG9pY2UuIFRoZSB0YXJiYWxsIGNvbnRhaW5zIGFsbCB0aGUgc291cmNlcyB0byBidWlsZCB0
aGUgbGlidXNyc2N0cCwgd2hpY2ggaGFzIHRvIGJlIGxpbmtlZCB0byB0aGUgb2JqZWN0IGZpbGUg
b2YgYW4gZXhhbXBsZSBwcm9ncmFtLiBJbiBhZGRpdGlvbiB0aGVyZSBhcmUgdHdvIGFwcGxpY2F0
aW9ucyBpbiB0aGUgZm9sZGVyIGBwcm9ncmFtc2AgdGhhdCBjYW4gYmUgYnVpbHQgYW5kIHJ1bi4K
QEAgLTEyOCwxNyArMTI4LDE4IEBAIHVzcnNjdHBfc29ja2V0KGludCBkb21haW4sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2b2lkICp1bHBfaW5mbyksCiAgICAgICAgICAgICAgICBpbnQgKCpzZW5k
X2NiKShzdHJ1Y3Qgc29ja2V0ICpzb2NrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWludDMyX3Qgc2JfZnJlZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf
dCBzYl9mcmVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdWxwX2luZm8p
LAogICAgICAgICAgICAgICAgdWludDMyX3Qgc2JfdGhyZXNob2xkLAogICAgICAgICAgICAgICAg
dm9pZCAqdWxwX2luZm8pCiBgYGAKIAotVGhlIGFyZ3VtZW50cyB0YWtlbiBmcm9tIFtSRkMgNjQ1
OF0oaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1OCkgYXJlOgorVGhlIGFyZ3VtZW50
cyB0YWtlbiBmcm9tIFtSRkMgNjQ1OF0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0
NTgpIGFyZToKIAogKiBkb21haW46IFBGX0lORVQgb3IgUEZfSU5FVDYgY2FuIGJlIHVzZWQuCiAq
IHR5cGU6IEluIGNhc2Ugb2YgYSBvbmUtdG8tbWFueSBzdHlsZSBzb2NrZXQgaXQgaXMgU09DS19T
RVFQQUNLRVQsIGluIGNhc2Ugb2YgYSBvbmUtdG8tb25lIHN0eWxlCiBzb2NrZXQgaXQgaXMgU09D
S19TVFJFQU0uIEZvciBhbiBleHBsYW5hdGlvbiBvZiB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0
aGUgc29ja2V0IHR5cGVzIHBsZWFzZQotcmVmZXIgdG8gW1JGQyA2NDU4XShodHRwOi8vdG9vbHMu
aWV0Zi5vcmcvaHRtbC9yZmM2NDU4KS4KK3JlZmVyIHRvIFtSRkMgNjQ1OF0oaHR0cHM6Ly90b29s
cy5pZXRmLm9yZy9odG1sL3JmYzY0NTgpLgogKiBwcm90b2NvbDogU2V0IElQUFJPVE9fU0NUUC4K
IAogSW4gdXNyc2N0cCwgYSBjYWxsYmFjayBBUEkgY2FuIGJlIHVzZWQuCkBAIC0xNjEsNyArMTYy
LDcgQEAgVGh1cyB0aGUgb25seSBkaWZmZXJlbmNlIGlzIHRoZSBhYnNlbmNlIG9mIGEgcmV0dXJu
IGNvZGUuCiAjIyBTYW1lIEZ1bmN0aW9uYWxpdHkgYXMgUkZDIDY0NTgKIAogVGhlIGZvbGxvd2lu
ZyBmdW5jdGlvbnMgaGF2ZSB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5IGFzIHRoZWlyIGtlcm5lbCBw
ZW5kYW50cy4gVGhlcmUgcHJvdG90eXBlcwotYXJlIGRlc2NyaWJlZCBpbiB0aGUgZm9sbG93aW5n
IHN1YnNlY3Rpb25zLiBGb3IgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBwbGVhc2UgcmVmZXIgdG8g
W1JGQyA2NDU4XShodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU4KS4KK2FyZSBkZXNj
cmliZWQgaW4gdGhlIGZvbGxvd2luZyBzdWJzZWN0aW9ucy4gRm9yIGEgZGV0YWlsZWQgZGVzY3Jp
cHRpb24gcGxlYXNlIHJlZmVyIHRvIFtSRkMgNjQ1OF0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9o
dG1sL3JmYzY0NTgpLgogCiAjIyMgdXNyc2N0cF9iaW5kKCkKIApAQCAtMjM3LDcgKzIzOCw3IEBA
IHVzcnNjdHBfc2h1dGRvd24oc3RydWN0IHNvY2tldCAqc28sIGludCBob3cpCiBgdXNyc2N0cF9z
aHV0ZG93bigpYCByZXR1cm5zIDAgb24gc3VjY2VzcyBhbmQgLTEgaW4gY2FzZSBvZiBhbiBlcnJv
ci4KIAogIyMgU2VuZGluZyBhbmQgUmVjZWl2aW5nIERhdGEKLVNpbmNlIHRoZSBwdWJsaWNhdGlv
biBvZiBbUkZDIDY0NThdKGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTgpIHRoZXJl
IGlzIG9ubHkgb25lIGZ1bmN0aW9uIGZvciBzZW5kaW5nIGFuZCBvbmUgZm9yIHJlY2VpdmluZwor
U2luY2UgdGhlIHB1YmxpY2F0aW9uIG9mIFtSRkMgNjQ1OF0oaHR0cHM6Ly90b29scy5pZXRmLm9y
Zy9odG1sL3JmYzY0NTgpIHRoZXJlIGlzIG9ubHkgb25lIGZ1bmN0aW9uIGZvciBzZW5kaW5nIGFu
ZCBvbmUgZm9yIHJlY2VpdmluZwogdGhhdCBpcyBub3QgZGVwcmVjYXRlZC4gVGhlcmVmb3JlLCBv
bmx5IHRoZXNlIHR3byBhcmUgZGVzY3JpYmVkIGhlcmUuCiAKICMjIyB1c3JzY3RwX3NlbmR2KCkK
QEAgLTI2MCwxNCArMjYxLDE0IEBAIHVzcnNjdHBfc2VuZHYoc3RydWN0IHNvY2tldCAqc28sCiAq
IGxlbjogTGVuZ3RoIG9mIHRoZSBkYXRhLgogKiBhZGRyczogSW4gdGhpcyB2ZXJzaW9uIG9mIHVz
cnNjdHAgYXQgbW9zdCBvbmUgZGVzdGluYXRpb24gYWRkcmVzcyBpcyBzdXBwb3J0ZWQuIEluIHRo
ZSBjYXNlIG9mIGEgY29ubmVjdGVkIHNvY2tldCwgdGhlIHBhcmFtZXRlciBgYWRkcnNgIGNhbiBi
ZSBzZXQgdG8gTlVMTC4KICogYWRkcmNudDogTnVtYmVyIG9mIGFkZHJlc3Nlcy4gQXMgYXQgbW9z
dCBvbmUgYWRkcmVzcyBpcyBzdXBwb3J0ZWQsIGFkZHJjbnQgaXMgMCBpZiBhZGRycyBpcyBOVUxM
IGFuZCAxIG90aGVyd2lzZS4KLSogaW5mbzogQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBmb3IgYSBt
ZXNzYWdlIGlzIHN0b3JlZCBpbiBgdm9pZCAqaW5mb2AuIFRoZSBkYXRhIHR5cGVzIGBzdHJ1Y3Qg
c2N0cF9zbmRpbmZvYCwgYHN0cnVjdCBzY3RwX3ByaW5mb2AsIGFuZCBgc3RydWN0IHNjdHBfc2Vu
ZHZfc3BhYCBhcmUgc3VwcG9ydGVkIGFzIGRlZmluZWQgaW4gW1JGQyA2NDU4XShodHRwOi8vdG9v
bHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU4KS4gU3VwcG9ydCBmb3IgYHN0cnVjdCBzY3RwX2F1dGhp
bmZvYCBpcyBub3QgaW1wbGVtZW50ZWQgeWV0LCB0aGVyZWZvcmUsIGVycm5vIGlzIHNldCBFSU5W
QUwgYW5kIC0xIHdpbGwgYmUgcmV0dXJuZWQsIGlmIGl0IGlzIHVzZWQuCisqIGluZm86IEFkZGl0
aW9uYWwgaW5mb3JtYXRpb24gZm9yIGEgbWVzc2FnZSBpcyBzdG9yZWQgaW4gYHZvaWQgKmluZm9g
LiBUaGUgZGF0YSB0eXBlcyBgc3RydWN0IHNjdHBfc25kaW5mb2AsIGBzdHJ1Y3Qgc2N0cF9wcmlu
Zm9gLCBhbmQgYHN0cnVjdCBzY3RwX3NlbmR2X3NwYWAgYXJlIHN1cHBvcnRlZCBhcyBkZWZpbmVk
IGluIFtSRkMgNjQ1OF0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTgpLiBTdXBw
b3J0IGZvciBgc3RydWN0IHNjdHBfYXV0aGluZm9gIGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQsIHRo
ZXJlZm9yZSwgZXJybm8gaXMgc2V0IEVJTlZBTCBhbmQgLTEgd2lsbCBiZSByZXR1cm5lZCwgaWYg
aXQgaXMgdXNlZC4KICogaW5mb2xlbjogTGVuZ3RoIG9mIGluZm8gaW4gYnl0ZXMuCiAqIGluZm90
eXBlOiBJZGVudGlmaWVzIHRoZSB0eXBlIG9mIHRoZSBpbmZvcm1hdGlvbiBwcm92aWRlZCBpbiBp
bmZvLiBQb3NzaWJsZSB2YWx1ZXMgYXJlCiAgICogU0NUUF9TRU5EVl9OT0lORk8KICAgKiBTQ1RQ
X1NFTkRWX1NORElORk8KICAgKiBTQ1RQX1NFTkRWX1BSSU5GTwotICAqIFNDVFBfU0VORFZfU1BB
IChGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBwbGVhc2UgcmVmZXIgdG8gW1JGQyA2NDU4XSho
dHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU4KS4pCi0qIGZsYWdzOiBGbGFncyBhcyBk
ZXNjcmliZWQgaW4gW1JGQyA2NDU4XShodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU4
KS4KKyAgKiBTQ1RQX1NFTkRWX1NQQSAoRm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcGxlYXNl
IHJlZmVyIHRvIFtSRkMgNjQ1OF0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTgp
LikKKyogZmxhZ3M6IEZsYWdzIGFzIGRlc2NyaWJlZCBpbiBbUkZDIDY0NThdKGh0dHBzOi8vdG9v
bHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU4KS4KIAogYHVzcnNjdHBfc2VuZHYoKWAgcmV0dXJucyB0
aGUgbnVtYmVyIG9mIGJ5dGVzIHNlbnQsIG9yIC0xIGlmIGFuIGVycm9yIG9jY3VycmVkLiAgVGhl
IHZhcmlhYmxlIGVycm5vIGlzIHRoZW4gc2V0IGFwcHJvcHJpYXRlbHkuCiAKQEAgLTI5MSwyMCAr
MjkyLDIwIEBAIHVzcnNjdHBfcmVjdnYoc3RydWN0IHNvY2tldCAqc28sCiAqIGxlbjogTGVuZ3Ro
IG9mIHRoZSBidWZmZXIgaW4gYnl0ZXMuCiAqIGZyb206IEEgcG9pbnRlciB0byBhbiBhZGRyZXNz
IHRvIGJlIGZpbGxlZCB3aXRoIHRoZSBzZW5kZXIgb2YgdGhlIHJlY2VpdmVkIG1lc3NhZ2UncyBh
ZGRyZXNzLgogKiBmcm9tbGVuOiBBbiBpbi9vdXQgcGFyYW1ldGVyIGRlc2NyaWJpbmcgdGhlIGZy
b20gbGVuZ3RoLgotKiBpbmZvOiBBIHBvaW50ZXIgdG8gdGhlIGJ1ZmZlciB0byBob2xkIHRoZSBh
dHRyaWJ1dGVzIG9mIHRoZSByZWNlaXZlZCBtZXNzYWdlLiAgVGhlIHN0cnVjdHVyZSB0eXBlIG9m
IGluZm8gaXMgZGV0ZXJtaW5lZCBieSB0aGUgaW5mb3R5cGUgcGFyYW1ldGVyLiBUaGUgYXR0cmli
dXRlcyByZXR1cm5lZCBpbiBgaW5mb2AgaGF2ZSB0byBiZSBoYW5kbGVkIGluIHRoZSBzYW1lIHdh
eSBhcyBzcGVjaWZpZWQgaW4gW1JGQyA2NDU4XShodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9y
ZmM2NDU4KS4KKyogaW5mbzogQSBwb2ludGVyIHRvIHRoZSBidWZmZXIgdG8gaG9sZCB0aGUgYXR0
cmlidXRlcyBvZiB0aGUgcmVjZWl2ZWQgbWVzc2FnZS4gIFRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiBp
bmZvIGlzIGRldGVybWluZWQgYnkgdGhlIGluZm90eXBlIHBhcmFtZXRlci4gVGhlIGF0dHJpYnV0
ZXMgcmV0dXJuZWQgaW4gYGluZm9gIGhhdmUgdG8gYmUgaGFuZGxlZCBpbiB0aGUgc2FtZSB3YXkg
YXMgc3BlY2lmaWVkIGluIFtSRkMgNjQ1OF0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3Jm
YzY0NTgpLgogKiBpbmZvbGVuOiAgQW4gaW4vb3V0IHBhcmFtZXRlciBkZXNjcmliaW5nIHRoZSBz
aXplIG9mIHRoZSBpbmZvIGJ1ZmZlci4KICogaW5mb3R5cGU6ICBPbiByZXR1cm4sIGAqaW5mb3R5
cGVgIGlzIHNldCB0byB0aGUgdHlwZSBvZiB0aGUgaW5mbyBidWZmZXIuICBUaGUgY3VycmVudCBk
ZWZpbmVkIHZhbHVlcyBhcmUKICAgKiBTQ1RQX1JFQ1ZWX05PSU5GTwogICAqIFNDVFBfUkVDVlZf
UkNWSU5GTwogICAqIFNDVFBfUkVDVlZfTlhUSU5GTwotICAqIFNDVFBfUkVDVlZfUk4gKEEgZGV0
YWlsZWQgZGVzY3JpcHRpb24gaXMgZ2l2ZW4gaW4gW1JGQyA2NDU4XShodHRwOi8vdG9vbHMuaWV0
Zi5vcmcvaHRtbC9yZmM2NDU4KSkKKyAgKiBTQ1RQX1JFQ1ZWX1JOIChBIGRldGFpbGVkIGRlc2Ny
aXB0aW9uIGlzIGdpdmVuIGluIFtSRkMgNjQ1OF0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1s
L3JmYzY0NTgpKQogKiBmbGFnczogQSBwb2ludGVyIHRvIGFuIGludGVnZXIgdG8gYmUgZmlsbGVk
IHdpdGggYW55IG1lc3NhZ2UgZmxhZ3MgKGUuZy4sIGBNU0dfTk9USUZJQ0FUSU9OYCkuICBOb3Rl
IHRoYXQgdGhpcyBmaWVsZCBpcyBhbiBpbi9vdXQgcGFyYW1ldGVyLiAgT3B0aW9ucyBmb3IgdGhl
IHJlY2VpdmUgbWF5IGFsc28gYmUgcGFzc2VkIGludG8gdGhlIHZhbHVlIChlLmcuLCBgTVNHX0VP
UmApLiAgUmV0dXJuaW5nIGZyb20gdGhlIGNhbGwsIHRoZSBmbGFncycgdmFsdWUgd2lsbCBkaWZm
ZXIgZnJvbSBpdHMgb3JpZ2luYWwgdmFsdWUuCiAKLWB1c3JzY3RwX3JlY3Z2KClgIHJldHVybnMg
dGhlIG51bWJlciBvZiBieXRlcyBzZW50LCBvciAtMSBpZiBhbiBlcnJvciBvY2N1cnJlZC4gIFRo
ZSB2YXJpYWJsZSBlcnJubyBpcyB0aGVuIHNldCBhcHByb3ByaWF0ZWx5LgorYHVzcnNjdHBfcmVj
dnYoKWAgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlY2VpdmVkLCBvciAtMSBpZiBhbiBl
cnJvciBvY2N1cnJlZC4gIFRoZSB2YXJpYWJsZSBlcnJubyBpcyB0aGVuIHNldCBhcHByb3ByaWF0
ZWx5LgogCiAjIyBTb2NrZXQgT3B0aW9ucwogU29ja2V0IG9wdGlvbnMgYXJlIHVzZWQgdG8gY2hh
bmdlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHNvY2tldCBjYWxscy4KLVRoZWlyIGJlaGF2aW9y
IGlzIHNwZWNpZmllZCBpbiBbUkZDIDY0NThdKGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3Jm
YzY0NTgpLiBUaGUgZnVuY3Rpb25zIHRvIGdldCBvciBzZXQgdGhlbSBhcmUKK1RoZWlyIGJlaGF2
aW9yIGlzIHNwZWNpZmllZCBpbiBbUkZDIDY0NThdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRt
bC9yZmM2NDU4KS4gVGhlIGZ1bmN0aW9ucyB0byBnZXQgb3Igc2V0IHRoZW0gYXJlCiAKIGBgYGMK
IGludApAQCAtMzc1LDcgKzM3Niw3IEBAIFNDVFBfUkVTRVRfU1RSRUFNUyB8IHN0cnVjdCBzY3Rw
X3Jlc2V0X3N0cmVhbXMgfCB3CiBTQ1RQX1JFU0VUX0FTU09DIHwgc3RydWN0IHNjdHBfYXNzb2Nf
dCB8IHcKIFNDVFBfQUREX1NUUkVBTVMgfCBzdHJ1Y3Qgc2N0cF9hZGRfc3RyZWFtcyB8IHcKIAot
RnVydGhlciB1c2FnZSBkZXRhaWxzIGFyZSBkZXNjcmliZWQgaW4gW1JGQyA2NDU4XSh0b29scy5p
ZXRmLm9yZy9odG1sL3JmYzY0NTgpLCBbUkZDIDY1MjVdKHRvb2xzLmlldGYub3JnL2h0bWwvcmZj
NjUyNSksIGFuZCBbZHJhZnQtaWV0Zi10c3Z3Zy1zY3RwLXVkcC1lbmNhcHMtMDNdKGh0dHBzOi8v
dG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1pZXRmLXRzdndnLXNjdHAtdWRwLWVuY2Fwcy0wMykg
KHdvcmsgaW4gcHJvZ3Jlc3MpLgorRnVydGhlciB1c2FnZSBkZXRhaWxzIGFyZSBkZXNjcmliZWQg
aW4gW1JGQyA2NDU4XShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1OCksIFtSRkMg
NjUyNV0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY1MjUpLCBhbmQgW2RyYWZ0LWll
dGYtdHN2d2ctc2N0cC11ZHAtZW5jYXBzLTAzXShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwv
ZHJhZnQtaWV0Zi10c3Z3Zy1zY3RwLXVkcC1lbmNhcHMtMDMpICh3b3JrIGluIHByb2dyZXNzKS4K
IAogIyMgU3lzY3RsIHZhcmlhYmxlcwogCkBAIC01NjMsNyArNTY0LDcgQEAgVGhlIGNvbmdlc3Rp
b24gY29udHJvbCBzaG91bGQgcHJvdGVjdCB0aGUgbmV0d29yayBhZ2FpbnN0IGZhc3Qgc2VuZGVy
cy4KIEV4cGxpY2l0IGNvbmdlc3Rpb24gbm90aWZpY2F0aW9ucyBhcmUgdHVybmVkIG9uIGJ5IGRl
ZmF1bHQuCiAKICMjIyMgdXNyc2N0cF9zeXNjdGxfc2V0X3NjdHBfZGVmYXVsdF9jY19tb2R1bGUo
KQotVGhpcyBwYXJhbWV0ZXIgc2V0cyB0aGUgZGVmYXVsdCBhbGdvcml0aG0gZm9yIHRoZSBjb25n
ZXN0aW9uIGNvbnRyb2wuIERlZmF1bHQgaXMgMCwgaS5lLiB0aGUgb25lIHNwZWNpZmllZCBpbiBb
UkZDIDQ5NjBdKGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzQ5NjApLgorVGhpcyBwYXJh
bWV0ZXIgc2V0cyB0aGUgZGVmYXVsdCBhbGdvcml0aG0gZm9yIHRoZSBjb25nZXN0aW9uIGNvbnRy
b2wuIERlZmF1bHQgaXMgMCwgaS5lLiB0aGUgb25lIHNwZWNpZmllZCBpbiBbUkZDIDQ5NjBdKGh0
dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM0OTYwKS4KIAogIyMjIyB1c3JzY3RwX3N5c2N0
bF9zZXRfc2N0cF9pbml0aWFsX2N3bmQoKQogU2V0IHRoZSBpbml0aWFsIGNvbmdlc3Rpb24gd2lu
ZG93IGluIE1UVXMuIFRoZSBkZWZhdWx0IGlzIDMuCkBAIC01NzgsNyArNTc5LDcgQEAgSG93IG1h
bnkgdGhlIHNhbWVzIGl0IHRha2VzIHRvIHRyeSBzdGVwIGRvd24gb2YgY3duZC4gRGVmYXVsdDog
MjAKIAogCiAjIyBDb25maWd1cmUgQVVUSCBhbmQgQURELUlQCi1BbiBpbXBvcnRhbnQgZXh0ZW5z
aW9uIG9mIFNDVFAgaXMgdGhlIGR5bmFtaWMgYWRkcmVzcyByZWNvbmZpZ3VyYXRpb24gKHNlZSBb
UkZDIDUwNjFdKGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzUwNjEpKSwgYWxzbyBrbm93
biBhcyBBREQtSVAsIHdoaWNoIGFsbG93cyB0aGUgY2hhbmdpbmcgb2YgYWRkcmVzc2VzIGR1cmlu
ZyB0aGUgbGlmZXRpbWUgb2YgYW4gYXNzb2NpYXRpb24uIEZvciB0aGlzIGZlYXR1cmUgdGhlIEFV
VEggZXh0ZW5zaW9uIChzZWUgW1JGQyA0ODk1XShodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9y
ZmM0ODk1KSkgaXMgbmVjZXNzYXJ5LgorQW4gaW1wb3J0YW50IGV4dGVuc2lvbiBvZiBTQ1RQIGlz
IHRoZSBkeW5hbWljIGFkZHJlc3MgcmVjb25maWd1cmF0aW9uIChzZWUgW1JGQyA1MDYxXShodHRw
czovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNTA2MSkpLCBhbHNvIGtub3duIGFzIEFERC1JUCwg
d2hpY2ggYWxsb3dzIHRoZSBjaGFuZ2luZyBvZiBhZGRyZXNzZXMgZHVyaW5nIHRoZSBsaWZldGlt
ZSBvZiBhbiBhc3NvY2lhdGlvbi4gRm9yIHRoaXMgZmVhdHVyZSB0aGUgQVVUSCBleHRlbnNpb24g
KHNlZSBbUkZDIDQ4OTVdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM0ODk1KSkgaXMg
bmVjZXNzYXJ5LgogCiAjIyMjIHVzcnNjdHBfc3lzY3RsX3NldF9zY3RwX2F1dG9fYXNjb25mKCkK
IElmIFNDVFAgQXV0by1BU0NPTkYgaXMgZW5hYmxlZCwgdGhlIHBlZXIgaXMgaW5mb3JtZWQgYXV0
b21hdGljYWxseSB3aGVuIGEgbmV3IGFkZHJlc3MKQEAgLTU4Nyw4ICs1ODgsOCBAQCBpcyBhZGRl
ZCBvciByZW1vdmVkLiBUaGlzIGZlYXR1cmUgaXMgZW5hYmxlZCBieSBkZWZhdWx0LgogIyMjIyB1
c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9tdWx0aXBsZV9hc2NvbmZzKCkKIEJ5IGRlZmF1bHQgdGhl
IHNlbmRpbmcgb2YgbXVsdGlwbGUgQVNDT05GcyBpcyBkaXNhYmxlZC4KIAotIyMjIyB1c3JzY3Rw
X3N5c2N0bF9zZXRfc2N0cF9hdXRoX2Rpc2FibGUoKQotVGhlIHVzZSBvZiBBVVRILCB3aGljaCBp
cyBub3JtYWxseSB0dXJuZWQgb24sIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoaXMgcGFy
YW1ldGVyIHRvIDEuCisjIyMjIHVzcnNjdHBfc3lzY3RsX3NldF9zY3RwX2F1dGhfZW5hYmxlKCkK
K1RoZSB1c2Ugb2YgQVVUSCwgd2hpY2ggaXMgbm9ybWFsbHkgdHVybmVkIG9uLCBjYW4gYmUgZGlz
YWJsZWQgYnkgc2V0dGluZyB0aGlzIHBhcmFtZXRlciB0byAwLgogCiAjIyMjIHVzcnNjdHBfc3lz
Y3RsX3NldF9zY3RwX2FzY29uZl9hdXRoX25vY2hrKCkKIEl0IGlzIGFsc28gcG9zc2libGUgdG8g
ZGlzYWJsZSB0aGUgcmVxdWlyZW1lbnQgdG8gdXNlIEFVVEggaW4gY29uanVuY3Rpb24gd2l0aCBB
REQtSVAgYnkgc2V0dGluZyB0aGlzIHBhcmFtZXRlcgpAQCAtNzUyLDI3ICs3NTMsMjcgQEAgU2Vl
IGh0dHBzOi8vZ2l0aHViLmNvbS9zY3RwbGFiL3VzcnNjdHAvdHJlZS9tYXN0ZXIvcHJvZ3JhbXMK
ICMjIyMgU0NUUAogUi4gU3Rld2FydDo8L2JyPgogYFN0cmVhbSBDb250cm9sIFRyYW5zbWlzc2lv
biBQcm90b2NvbGAuPC9icj4KLVtSRkMgNDk2MF0oaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwv
cmZjNDk2MCksIFNlcHRlbWJlciAyMDA3LgorW1JGQyA0OTYwXShodHRwczovL3Rvb2xzLmlldGYu
b3JnL2h0bWwvcmZjNDk2MCksIFNlcHRlbWJlciAyMDA3LgogCiAjIyMjIGF1dGgKIE0uIFTDvHhl
biwgUi4gU3Rld2FydCwgUC4gTGVpLCBhbmQgRS4gUmVzY29ybGE6PC9icj4KIGBBdXRoZW50aWNh
dGVkIENodW5rcyBmb3IgdGhlIFN0cmVhbSBDb250cm9sIFRyYW5zbWlzc2lvbiBQcm90b2NvbCAo
U0NUUClgLjwvYnI+Ci1bUkZDIDQ4OTVdKGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzQ4
OTUpLCBBdWd1c3QgMjAwNy4KK1tSRkMgNDg5NV0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1s
L3JmYzQ4OTUpLCBBdWd1c3QgMjAwNy4KIAogIyMjIyBhZGRpcAogUi4gU3Rld2FydCwgUS4gWGll
LCBNLiBUw7x4ZW4sIFMuIE1hcnV5YW1hLCBhbmQgTS4gS296dWthOjwvYnI+CiBgU3RyZWFtIENv
bnRyb2wgVHJhbnNtaXNzaW9uIFByb3RvY29sIChTQ1RQKSBEeW5hbWljIEFkZHJlc3MgUmVjb25m
aWd1cmF0aW9uYC48L2JyPgotW1JGQyA1MDYxXShodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9y
ZmM1MDYxKSwgU2VwdGVtYmVyIDIwMDcuCitbUkZDIDUwNjFdKGh0dHBzOi8vdG9vbHMuaWV0Zi5v
cmcvaHRtbC9yZmM1MDYxKSwgU2VwdGVtYmVyIDIwMDcuCiAKICMjIyMgc29ja2V0QVBJCiBSLiBT
dGV3YXJ0LCBNLiBUw7x4ZW4sIEsuIFBvb24sIGFuZCBWLiBZYXNldmljaDo8L2JyPgogYFNvY2tl
dHMgQVBJIEV4dGVuc2lvbnMgZm9yIHRoZSBTdHJlYW0gQ29udHJvbCBUcmFuc21pc3Npb24gUHJv
dG9jb2wgKFNDVFApYC48L2JyPgotW1JGQyA2NDU4XShodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRt
bC9yZmM2NDU4KSwgRGV6ZW1iZXIgMjAxMS4KK1tSRkMgNjQ1OF0oaHR0cHM6Ly90b29scy5pZXRm
Lm9yZy9odG1sL3JmYzY0NTgpLCBEZXplbWJlciAyMDExLgogCiAjIyMjIHN0cmVhbVJlc2V0CiBS
LiBTdGV3YXJ0LCBNLiBUw7x4ZW4sIGFuZCBQLiBMZWk6PC9icj4KIGBTdHJlYW0gQ29udHJvbCBU
cmFuc21pc3Npb24gUHJvdG9jb2wgKFNDVFApIFN0cmVhbSBSZWNvbmZpZ3VyYXRpb25gLjwvYnI+
Ci1bUkZDIDY1MjVdKGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY1MjUpLCBGZWJydWFy
eSAyMDEyLgorW1JGQyA2NTI1XShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjUyNSks
IEZlYnJ1YXJ5IDIwMTIuCiAKICMjIyMgdWRwZW5jYXBzCiBNLiBUw7x4ZW4gYW5kIFIuIFN0ZXdh
cnQ8L2JyPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvTWFudWFsLnRleCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL01hbnVh
bC50ZXgKaW5kZXggN2VjMWUxZjUzYjMxZTRlZDFkN2RiOTY4NTcyN2NjYzkxYzVkMGUzYy4uMzI3
MTFlZTk3NDVhMGNhYmE3YWJmODQ2YjJmNjFhMjZlOTYzZDdjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBs
aWIvTWFudWFsLnRleAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9NYW51YWwudGV4CkBAIC0yMDUsNyArMjA1LDgg
QEAgdXNyc2N0cF9zb2NrZXQoaW50IGRvbWFpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBmbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQg
KnVscF9pbmZvKSwKICAgICAgICAgICAgICAgIGludCAoKnNlbmRfY2IpKHN0cnVjdCBzb2NrZXQg
KnNvY2ssIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc2JfZnJlZSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzYl9mcmVlLCAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVscF9pbmZvKSwgCiAgICAgICAgICAgICAg
ICB1aW50MzJfdCBzYl90aHJlc2hvbGQsCiAgICAgICAgICAgICAgICB2b2lkICp1bHBfaW5mbyku
CiBcZW5ke3ZlcmJhdGltfQpAQCAtOTcwLDcgKzk3MSw3IEBAIFNDVFBcX0RFQlVHIGhhcyB0byBi
ZSBzZXQgYXMgYSBjb21waWxlIGZsYWcuCiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8
c3RyaW5nLmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2Vfb3NfV2luZG93cykKKyNpZiAhZGVmaW5lZChfV0lOMzIpCiAjaW5jbHVkZSA8dW5pc3RkLmg+
CiAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgogI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KQEAgLTEw
OTgsNyArMTA5OSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICB9CiAgICAg
d2hpbGUgKDEpIHsKICAgICAgICAgaWYgKHVzZV9jYikgewotI2lmIGRlZmluZWQgKF9fVXNlcnNw
YWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAgICAgICAgICAgICBTbGVlcCgx
KjEwMDApOwogI2Vsc2UKICAgICAgICAgICAgIHNsZWVwKDEpOwpAQCAtMTEzMyw3ICsxMTM0LDcg
QEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgIH0KICAgICB1c3JzY3RwX2Nsb3Nl
KHNvY2spOwogICAgIHdoaWxlICh1c3JzY3RwX2ZpbmlzaCgpICE9IDApIHsKLSNpZiBkZWZpbmVk
IChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogICAgICAgICBT
bGVlcCgxMDAwKTsKICNlbHNlCiAgICAgICAgIHNsZWVwKDEpOwpAQCAtMTE4MywxMSArMTE4NCwx
MSBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNp
bmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpZiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmICFkZWZpbmVkKF9XSU4zMikKICNpbmNsdWRlIDx1bmlz
dGQuaD4KICNlbmRpZgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX29zX1dpbmRvd3MpCisjaWYgIWRlZmluZWQoX1dJTjMyKQogI2luY2x1ZGUgPHN5cy9z
b2NrZXQuaD4KICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CiAjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+
CkBAIC0xMjQyLDcgKzEyNDMsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAg
fQogICAgIG1lbXNldCgodm9pZCAqKSZhZGRyNCwgMCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9p
bikpOwogICAgIG1lbXNldCgodm9pZCAqKSZhZGRyNiwgMCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRk
cl9pbjYpKTsKLSNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19MaW51eCkgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiAhZGVmaW5lZChfX2xpbnV4X18pICYmICFkZWZp
bmVkKF9XSU4zMikKICAgICBhZGRyNC5zaW5fbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9p
bik7CiAgICAgYWRkcjYuc2luNl9sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNik7CiAj
ZW5kaWYKQEAgLTEyNzEsMTQgKzEyNzIsMTQgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltd
KQogICAgICAgICB1c3JzY3RwX3NodXRkb3duKHNvY2ssIFNIVVRfV1IpOwogICAgIH0KICAgICB3
aGlsZSAoIWRvbmUpIHsKLSNpZiBkZWZpbmVkIChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lm
IGRlZmluZWQoX1dJTjMyKQogICAgICAgICBTbGVlcCgxKjEwMDApOwogI2Vsc2UKICAgICAgICAg
c2xlZXAoMSk7CiAjZW5kaWYKICAgICB9CiAgICAgd2hpbGUgKHVzcnNjdHBfZmluaXNoKCkgIT0g
MCkgewotI2lmIGRlZmluZWQgKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChf
V0lOMzIpCiAgICAgICAgIFNsZWVwKDEwMDApOwogI2Vsc2UKICAgICAgICAgc2xlZXAoMSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi9SRUFETUUubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9SRUFETUUubWQKaW5kZXgg
MGYwZjhiMTZjNTE5Y2UwOWVkZjZjOWM0ZmVmMTZiMmNjNDRiOTQ2NC4uNmYyYWYxZjQ1YWUxOGNh
OWNhMjYxZmI4ZWJjZWIxMmFlZGZiYWE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvUkVBRE1FLm1k
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNy
c2N0cC91c3JzY3RwbGliL1JFQURNRS5tZApAQCAtMSw5ICsxLDEwIEBACiAjIHVzcnNjdHAKIFsh
W0NvdmVyaXR5IFNjYW4gQnVpbGQgU3RhdHVzXShodHRwczovL3NjYW4uY292ZXJpdHkuY29tL3By
b2plY3RzLzEzNDMwL2JhZGdlLnN2ZyldKGh0dHBzOi8vc2Nhbi5jb3Zlcml0eS5jb20vcHJvamVj
dHMvdXNyc2N0cCkKIAorIVtHaXRIdWIgQWN0aW9ucyBCdWlsZCBTdGF0dXMgKENNYWtlLWJhc2Vk
IGJ1aWxkIG9ubHkpXShodHRwczovL2dpdGh1Yi5jb20vc2N0cGxhYi91c3JzY3RwL3dvcmtmbG93
cy9CdWlsZCUyMHdpdGglMjBDTWFrZS9iYWRnZS5zdmcpCisKIFRoaXMgaXMgYSB1c2VybGFuZCBT
Q1RQIHN0YWNrIHN1cHBvcnRpbmcgRnJlZUJTRCwgTGludXgsIE1hYyBPUyBYIGFuZCBXaW5kb3dz
LgogCiBTZWUgW21hbnVhbF0oTWFudWFsLm1kKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAotVGhl
IHN0YXR1cyBvZiBjb250aW51b3VzIGludGVncmF0aW9uIHRlc3RpbmcgaXMgYXZhaWxhYmxlIGZy
b20gW2dyaWRdKGh0dHA6Ly8yMTIuMjAxLjEyMS4xMTA6MTgwMTAvZ3JpZCkgYW5kIFt3YXRlcmZh
bGxdKGh0dHA6Ly8yMTIuMjAxLjEyMS4xMTA6MTgwMTAvd2F0ZXJmYWxsKS4KLUlmIHlvdSBhcmUg
b25seSBpbnRlcmVzdGVkIGluIGEgc2luZ2xlIGJyYW5jaCwganVzdCBhcHBlbmQgYD9icmFuY2g9
QlJBTkNITkFNRWAgdG8gdGhlIFVSTCwgZm9yIGV4YW1wbGUgW3dhdGVyZmFsbF0oaHR0cDovLzIx
Mi4yMDEuMTIxLjExMDoxODAxMC93YXRlcmZhbGw/YnJhbmNoPW1hc3RlcikuCitUaGUgc3RhdHVz
IG9mIGNvbnRpbnVvdXMgaW50ZWdyYXRpb24gdGVzdGluZyBpcyBhdmFpbGFibGUgZnJvbSBvdXIg
W0J1aWxkYm90XShodHRwOi8vYnVpbGRib3QubnBsYWIuZGU6MTgwMTAvIy9jb25zb2xlKS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
dXNyc2N0cC91c3JzY3RwbGliL2Jvb3RzdHJhcCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL2Jvb3RzdHJhcApvbGQgbW9k
ZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9jb25maWd1cmUu
YWMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi9jb25maWd1cmUuYWMKaW5kZXggYTZiZmJkOTNkNzk2ZDcyYmZjNzZiYTNm
NDllZDRhMDdhN2VjYzUxNC4uMTc2ZDVmYTdlMzljNWM3NjQxNTczNjllNjc5NDBiZDIxYzI1ODBl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvY29uZmlndXJlLmFjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL2NvbmZp
Z3VyZS5hYwpAQCAtMjksNyArMjksNyBAQCBkbmwgU1VDSCBEQU1BR0UuCiBkbmwKIAogQUNfSU5J
VChbbGlidXNyc2N0cF0sIFswLjkuMy4wXSkKLUFNX0lOSVRfQVVUT01BS0UKK0FNX0lOSVRfQVVU
T01BS0UoW2ZvcmVpZ25dKQogCiBBQ19QUk9HX0NDCiBBQ19QUk9HX0xJQlRPT0wKQEAgLTQ2LDEx
ICs0Niw5IEBAIEFQUENGTEFHUz0iIgogY2FzZSAkaG9zdF9vcyBpbgogZGFyd2luKikKICAgQ0ZM
QUdTPSIkQ0ZMQUdTIC1zdGQ9Yzk5IC1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMgLURfX0FQ
UExFX1VTRV9SRkNfMjI5MiIKLSAgTElCQ0ZMQUdTPSIkTElCQ0ZMQUdTIC1VX19BUFBMRV9fIC1E
X19Vc2Vyc3BhY2Vfb3NfRGFyd2luIgogICA7OwogZHJhZ29uZmx5KikKICAgQ0ZMQUdTPSIkQ0ZM
QUdTIC1zdGQ9Yzk5IC1wdGhyZWFkIgotICBMSUJDRkxBR1M9IiRMSUJDRkxBR1MgLVVfX0RyYWdv
bkZseV9fIC1EX19Vc2Vyc3BhY2Vfb3NfRHJhZ29uRmx5IgogICA7OwogZnJlZWJzZCopCiAgIENG
TEFHUz0iJENGTEFHUyAtc3RkPWM5OSAtcHRocmVhZCIKQEAgLTU4LDE5ICs1NiwxNSBAQCBmcmVl
YnNkKikKICAgICBDRkxBR1M9IiRDRkxBR1MgLVduby11bmtub3duLXdhcm5pbmctb3B0aW9uIgog
ICAgIExERkxBR1M9IiRMREZMQUdTIC1RdW51c2VkLWFyZ3VtZW50cyIKICAgZmkKLSAgTElCQ0ZM
QUdTPSIkTElCQ0ZMQUdTIC1VX19GcmVlQlNEX18gLURfX1VzZXJzcGFjZV9vc19GcmVlQlNEIgog
ICA7OwogbGludXgqKQotICBDRkxBR1M9IiRDRkxBR1MgLXN0ZD1jOTkgLXB0aHJlYWQgLURfR05V
X1NPVVJDRSIKLSAgTElCQ0ZMQUdTPSIkTElCQ0ZMQUdTIC1EX19Vc2Vyc3BhY2Vfb3NfTGludXgi
CisgIENGTEFHUz0iJENGTEFHUyAtc3RkPWM5OSAtcHRocmVhZCAtRF9HTlVfU09VUkNFIC1Xbm8t
YWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVyIgogICA7OwogbmV0YnNkKikKICAgQ0ZMQUdTPSIkQ0ZM
QUdTIC1zdGQ9Yzk5IC1wdGhyZWFkIgotICBMSUJDRkxBR1M9IiRMSUJDRkxBR1MgLVVfX05ldEJT
RF9fIC1EX19Vc2Vyc3BhY2Vfb3NfTmV0QlNEIgogICA7Owogb3BlbmJzZCopCiAgIENGTEFHUz0i
JENGTEFHUyAtc3RkPWM5OSAtcHRocmVhZCIKLSAgTElCQ0ZMQUdTPSIkTElCQ0ZMQUdTIC1VX19P
cGVuQlNEX18gLURfX1VzZXJzcGFjZV9vc19PcGVuQlNEIgogICA7Owogc29sYXJpcyopCiAgIENG
TEFHUz0iJENGTEFHUyAtRF9YUEc0XzIiCkBAIC0xMzYsOSArMTMwLDcgQEAgQUNfQVJHX0VOQUJM
RShwcm9ncmFtcywKICAgQUNfSEVMUF9TVFJJTkcoIFstLWVuYWJsZS1wcm9ncmFtc10sCiAgICAg
ICAgICAgICAgICAgICBbYnVpbGQgZXhhbXBsZSBwcm9ncmFtcyBAPDpAZGVmYXVsdD15ZXNAOj5A
XSksCiAgICAgZW5hYmxlX3Byb2dyYW1zPSRlbmFibGV2YWwsZW5hYmxlX3Byb2dyYW1zPXllcykK
LWlmIHRlc3QgeCRlbmFibGVfcHJvZ3JhbXMgPSB4eWVzOyB0aGVuCi0gICAgICAgIEFDX0NPTkZJ
R19GSUxFUyhwcm9ncmFtcy9NYWtlZmlsZSkKLWZpCitBTV9DT05ESVRJT05BTChbQ09ORF9QUk9H
UkFNU10sIFt0ZXN0ICIkZW5hYmxlX3Byb2dyYW1zIiA9IHllc10pCiAKIEFDX0NIRUNLX1RZUEUo
c2l6ZV90KQogQUNfQ0hFQ0tfVFlQRShzc2l6ZV90KQpAQCAtMTkyLDQgKzE4NCw1IEBAIEFDX0Nf
QklHRU5ESUFOCiBBQ19TVUJTVChbTElCQ0ZMQUdTXSkKIEFDX1NVQlNUKFtBUFBDRkxBR1NdKQog
ZG5sIEFDX0NPTkZJR19GSUxFUyhbdXNyc2N0cC5wY10pCi1BQ19PVVRQVVQoTWFrZWZpbGUgdXNy
c2N0cGxpYi9NYWtlZmlsZSkKK0FDX0NPTkZJR19GSUxFUyh1c3JzY3RwbGliL01ha2VmaWxlIHBy
b2dyYW1zL01ha2VmaWxlIE1ha2VmaWxlKQorQUNfT1VUUFVUCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi9nZW4tZGVmLnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvZ2VuLWRlZi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NWMwMjg1NDQy
OGJlOTA5N2M0ZTcwMGZiNjY1ZTZmNmFjZmUwNDEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBs
aWIvZ2VuLWRlZi5weQpAQCAtMCwwICsxLDI2IEBACisjIS91c3IvYmluL2VudiBweXRob24zCisj
CisjIGdlbi1kZWYucHkgdXNyc2N0cC5saWIKK2ltcG9ydCByZQoraW1wb3J0IHN5cworaW1wb3J0
IHN1YnByb2Nlc3MKK2Zyb20gc2h1dGlsIGltcG9ydCB3aGljaAorCit0cnk6CisgICAgbGliX2Zp
bGUgPSBzeXMuYXJndlsxXQorZXhjZXB0OgorICAgIHByaW50KCdVc2FnZTogZ2VuLWRlZi5weSBM
SUItRklMRScpCisgICAgZXhpdCgtMSkKKworcHJpbnQoJ0VYUE9SVFMnKQorCitpZiB3aGljaCgn
ZHVtcGJpbicpOgorICAgIGR1bXBiaW5fY21kID0gc3VicHJvY2Vzcy5ydW4oWydkdW1wYmluJywg
Jy9saW5rZXJtZW1iZXI6MScsIGxpYl9maWxlXSwKKyAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3Mu
UElQRSkKKworICAgIHBhdHRlcm4gPSByZS5jb21waWxlKCdccypbMC05YS1mQS1GXSsgXz8oP1A8
ZnVuY3Rpb25uYW1lPnVzcnNjdHBfW15cc10qKScpCisKKyAgICBmb3IgbGluZSBpbiBkdW1wYmlu
X2NtZC5zdGRvdXQuZGVjb2RlKCd1dGYtOCcpLnNwbGl0bGluZXMoKToKKyAgICAgICAgbWF0Y2gg
PSBwYXR0ZXJuLm1hdGNoKGxpbmUpCisgICAgICAgIGlmIG1hdGNoOgorICAgICAgICAgICAgcHJp
bnQobWF0Y2guZ3JvdXAoJ2Z1bmN0aW9ubmFtZScpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvbWVz
b24uYnVpbGQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi9tZXNvbi5idWlsZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOWYwNjQ3N2RhYmMy
OTUwOTRjODg1MWFmYTg0NzlhYmM4OTVmMzUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIv
bWVzb24uYnVpbGQKQEAgLTAsMCArMSwyMTkgQEAKKyMgUHJvamVjdCBkZWZpbml0aW9uCitwcm9q
ZWN0KCd1c3JzY3RwbGliJywgJ2MnLAorICAgIHZlcnNpb246ICcxLjAuMCcsCisgICAgZGVmYXVs
dF9vcHRpb25zOiBbJ2Nfc3RkPWM5OSddLAorICAgIG1lc29uX3ZlcnNpb246ICc+PTAuNDkuMCcp
CisKKyMgU2V0IGNvbXBpbGVyIHdhcm5pbmcgZmxhZ3MKK2NvbXBpbGVyID0gbWVzb24uZ2V0X2Nv
bXBpbGVyKCdjJykKK2lmIGNvbXBpbGVyLmdldF9hcmd1bWVudF9zeW50YXgoKSA9PSAnbXN2YycK
KyAgICBjb21waWxlcl9hcmdzID0gY29tcGlsZXIuZ2V0X3N1cHBvcnRlZF9hcmd1bWVudHMoWwor
ICAgICAgICAnL3dkNDEwMCcsICMgJ2lkZW50aWZpZXInIDogdW5yZWZlcmVuY2VkIGZvcm1hbCBw
YXJhbWV0ZXIKKyAgICAgICAgJy93ZDQxMjcnLCAjIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gaXMg
Y29uc3RhbnQKKyAgICAgICAgJy93ZDQyMDAnLCAjIG5vbnN0YW5kYXJkIGV4dGVuc2lvbiB1c2Vk
IDogemVyby1zaXplZCBhcnJheSBpbiBzdHJ1Y3QvdW5pb24KKyAgICAgICAgJy93ZDQyMTQnLCAj
IGJpdCBmaWVsZCB0eXBlcyBvdGhlciB0aGFuIGludAorICAgICAgICAnL3dkNDcwNicsICMgYXNz
aWdubWVudCB3aXRoaW4gY29uZGl0aW9uYWwgZXhwcmVzc2lvbgorICAgICAgICAnL3dkNDI0NScs
ICMgJ2NvbnZlcnNpb24nIDogY29udmVyc2lvbiBmcm9tICd0eXBlMScgdG8gJ3R5cGUyJywgc2ln
bmVkL3Vuc2lnbmVkIG1pc21hdGNoCisgICAgICAgICcvd2Q0Mzg5JywgIyAnb3BlcmF0b3InIDog
c2lnbmVkL3Vuc2lnbmVkIG1pc21hdGNoCisgICAgICAgICcvd2Q0NzAyJywgIyB1bnJlYWNoYWJs
ZSBjb2RlCisgICAgICAgICcvd2Q0NzAxJywgIyBQb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIGxv
Y2FsIHZhcmlhYmxlICduYW1lJyB1c2VkCisgICAgICAgICcvd2Q0MjQ0JywgIyAnY29udmVyc2lv
bicgY29udmVyc2lvbiBmcm9tICd0eXBlMScgdG8gJ3R5cGUyJywgcG9zc2libGUgbG9zcyBvZiBk
YXRhCisgICAgXSkKK2Vsc2UKKyAgICBjb21waWxlcl9hcmdzID0gY29tcGlsZXIuZ2V0X3N1cHBv
cnRlZF9hcmd1bWVudHMoWworICAgICAgICAnLXBlZGFudGljJywKKyAgICAgICAgJy1XYWxsJywK
KyAgICAgICAgJy1XZXh0cmEnLAorICAgICAgICAnLVdmbG9hdC1lcXVhbCcsCisgICAgICAgICct
V3NoYWRvdycsCisgICAgICAgICctV3BvaW50ZXItYXJpdGgnLAorICAgICAgICAnLVdpbml0LXNl
bGYnLAorICAgICAgICAnLVduby11bnVzZWQtZnVuY3Rpb24nLAorICAgICAgICAnLVduby11bnVz
ZWQtcGFyYW1ldGVyJywKKyAgICAgICAgJy1Xbm8tdW5yZWFjaGFibGUtY29kZScsCisgICAgICAg
ICctV3N0cmljdC1wcm90b3R5cGVzJywKKyAgICBdKQorZW5kaWYKK2FkZF9wcm9qZWN0X2FyZ3Vt
ZW50cyhjb21waWxlcl9hcmdzLCBsYW5ndWFnZTogJ2MnKQorCisjIENvbmZpZ3VyYXRpb24KK2Nv
bXBpbGVfYXJncyA9IFtdCisKKyMgRGVwZW5kZW5jeTogVGhyZWFkcwordGhyZWFkX2RlcCA9IGRl
cGVuZGVuY3koJ3RocmVhZHMnLCByZXF1aXJlZDogdHJ1ZSkKKworIyBEZXBlbmRlbmNpZXMgbGlz
dAorZGVwZW5kZW5jaWVzID0gWworICAgIHRocmVhZF9kZXAsCitdCisKKyMgR2xvYmFsIHNldHRp
bmdzCithZGRfcHJvamVjdF9hcmd1bWVudHMoWworICAgICctRF9fVXNlcnNwYWNlX18nLAorICAg
ICctRFNDVFBfU0lNUExFX0FMTE9DQVRPUicsCisgICAgJy1EU0NUUF9QUk9DRVNTX0xFVkVMX0xP
Q0tTJywKK10sIGxhbmd1YWdlOiAnYycpCisKKyMgT1Mtc3BlY2lmaWMgc2V0dGluZ3MKK3N5c3Rl
bSA9IGhvc3RfbWFjaGluZS5zeXN0ZW0oKQoraWYgc3lzdGVtIGluIFsnbGludXgnLCAnYW5kcm9p
ZCddCisgICAgYWRkX3Byb2plY3RfYXJndW1lbnRzKFsKKyAgICAgICAgJy1EX0dOVV9TT1VSQ0Un
LAorICAgIF0sIGxhbmd1YWdlOiAnYycpCitlbGlmIHN5c3RlbSA9PSAnZnJlZWJzZCcKKyAgICBh
ZGRfcHJvamVjdF9hcmd1bWVudHMoY29tcGlsZXIuZ2V0X3N1cHBvcnRlZF9hcmd1bWVudHMoWwor
ICAgICAgICAgICAgJy1Xbm8tYWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVyJywKKyAgICAgICAgXSks
IGxhbmd1YWdlOiAnYycpCitlbGlmIHN5c3RlbSBpbiBbJ2RhcndpbicsICdpb3MnXQorICAgIGFk
ZF9wcm9qZWN0X2FyZ3VtZW50cyhbCisgICAgICAgICAgICAnLURfX0FQUExFX1VTRV9SRkNfMjI5
MicsCisgICAgICAgIF0gKyBjb21waWxlci5nZXRfc3VwcG9ydGVkX2FyZ3VtZW50cyhbCisgICAg
ICAgICAgICAnLVduby1hZGRyZXNzLW9mLXBhY2tlZC1tZW1iZXInLAorICAgICAgICAgICAgJy1X
bm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMnLAorICAgICAgICBdKSwgbGFuZ3VhZ2U6ICdjJykK
K2VsaWYgc3lzdGVtID09ICd3aW5kb3dzJworICAgIGRlcGVuZGVuY2llcyArPSBjb21waWxlci5m
aW5kX2xpYnJhcnkoJ3dzMl8zMicsIHJlcXVpcmVkOiB0cnVlKQorICAgIGRlcGVuZGVuY2llcyAr
PSBjb21waWxlci5maW5kX2xpYnJhcnkoJ2lwaGxwYXBpJywgcmVxdWlyZWQ6IHRydWUpCisgICAg
aWYgY29tcGlsZXIuZ2V0X2lkKCkgPT0gJ2djYycKKyAgICAgICAgYWRkX3Byb2plY3RfYXJndW1l
bnRzKGNvbXBpbGVyLmdldF9zdXBwb3J0ZWRfYXJndW1lbnRzKFsKKyAgICAgICAgICAgICctV25v
LWZvcm1hdCcsCisgICAgICAgICAgICAnLURfV0lOMzJfV0lOTlQ9MHg2MDEnLCAgIyBFbmFibGVz
IGluZXRfbnRvcCBhbmQgZnJpZW5kcworICAgICAgICBdKSwgbGFuZ3VhZ2U6ICdjJykKKyAgICBl
bmRpZgorZWxzZQorICAgIGVycm9yKCdVbmtub3duIHN5c3RlbTogQDBAJy5mb3JtYXQoc3lzdGVt
KSkKK2VuZGlmCisKKyMgRmVhdHVyZTogc3lzL3F1ZXVlCitpZiBjb21waWxlci5oYXNfaGVhZGVy
KCdzeXMvcXVldWUuaCcpCisgICAgYWRkX3Byb2plY3RfYXJndW1lbnRzKCctREhBVkVfU1lTX1FV
RVVFX0gnLCBsYW5ndWFnZTogJ2MnKQorZW5kaWYKKworIyBGZWF0dXJlOiBzeXMvc29ja2V0LCBs
aW51eC9pZmFkZHIsIGxpbnV4L3J0bmV0bGluaworaWYgY29tcGlsZXIuaGFzX2hlYWRlcignc3lz
L3NvY2tldC5oJykKKyAgICBpZiBjb21waWxlci5oYXNfaGVhZGVyKCdsaW51eC9pZl9hZGRyLmgn
KQorICAgICAgICBhZGRfcHJvamVjdF9hcmd1bWVudHMoJy1ESEFWRV9MSU5VWF9JRl9BRERSX0gn
LCBsYW5ndWFnZTogJ2MnKQorICAgIGVuZGlmCisKKyAgICBpZiBjb21waWxlci5oYXNfaGVhZGVy
KCdsaW51eC9ydG5ldGxpbmsuaCcpCisgICAgICAgIGFkZF9wcm9qZWN0X2FyZ3VtZW50cygnLURI
QVZFX0xJTlVYX1JUTkVUTElOS19IJywgbGFuZ3VhZ2U6ICdjJykKKyAgICBlbmRpZgorZW5kaWYK
KworIyBGZWF0dXJlOiBJQ01QCitoYXZlX3N5c190eXBlcyA9IGNvbXBpbGVyLmhhc19oZWFkZXIo
J3N5cy90eXBlcy5oJykKK2hhdmVfbmV0aW5ldF9pbiA9IGNvbXBpbGVyLmhhc19oZWFkZXIoJ25l
dGluZXQvaW4uaCcpCitoYXZlX25ldGluZXRfaXAgPSBjb21waWxlci5oYXNfaGVhZGVyKCduZXRp
bmV0L2lwLmgnKQoraGF2ZV9uZXRpbmV0X2lwX2ljbXAgPSBjb21waWxlci5oYXNfaGVhZGVyKCdu
ZXRpbmV0L2lwX2ljbXAuaCcpCitpZiBoYXZlX3N5c190eXBlcyBhbmQgaGF2ZV9uZXRpbmV0X2lu
IGFuZCBoYXZlX25ldGluZXRfaXAgYW5kIGhhdmVfbmV0aW5ldF9pcF9pY21wCisgICAgYWRkX3By
b2plY3RfYXJndW1lbnRzKCctREhBVkVfTkVUSU5FVF9JUF9JQ01QX0gnLCBsYW5ndWFnZTogJ2Mn
KQorZW5kaWYKKworIyBGZWF0dXJlOiBzdGRhdG9taWMKK2lmIGNvbXBpbGVyLmhhc19oZWFkZXIo
J3N0ZGF0b21pYy5oJykKKyAgICBhZGRfcHJvamVjdF9hcmd1bWVudHMoJy1ESEFWRV9TVERBVE9N
SUNfSCcsIGxhbmd1YWdlOiAnYycpCitlbmRpZgorCisjIEZlYXR1cmU6IHNvY2thZGRyLnNhX2xl
bgorcHJlZml4ID0gJycnCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3Nv
Y2tldC5oPgorJycnCitoYXZlX3NhX2xlbiA9IGNvbXBpbGVyLmhhc19tZW1iZXIoJ3N0cnVjdCBz
b2NrYWRkcicsICdzYV9sZW4nLCBwcmVmaXg6IHByZWZpeCkKK2lmIGhhdmVfc2FfbGVuCisgICAg
YWRkX3Byb2plY3RfYXJndW1lbnRzKCctREhBVkVfU0FfTEVOJywgbGFuZ3VhZ2U6ICdjJykKK2Vu
ZGlmCisKKyMgRmVhdHVyZTogc29ja2FkZHJfaW4uc2luX2xlbiAvIHNvY2thZGRyX2luNi5zaW42
X2xlbiAvIHNvY2thZGRyX2Nvbm4uc2Nvbm5fbGVuCitwcmVmaXggPSAnJycKKyNpbmNsdWRlIDxz
eXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisnJycKK2hhdmVfc2luX2xlbiA9
IGNvbXBpbGVyLmhhc19tZW1iZXIoJ3N0cnVjdCBzb2NrYWRkcl9pbicsICdzaW5fbGVuJywgcHJl
Zml4OiBwcmVmaXgpCitpZiBoYXZlX3Npbl9sZW4KKyAgICBhZGRfcHJvamVjdF9hcmd1bWVudHMo
Jy1ESEFWRV9TSU5fTEVOJywgbGFuZ3VhZ2U6ICdjJykKK2VuZGlmCitoYXZlX3NpbjZfbGVuID0g
Y29tcGlsZXIuaGFzX21lbWJlcignc3RydWN0IHNvY2thZGRyX2luNicsICdzaW42X2xlbicsIHBy
ZWZpeDogcHJlZml4KQoraWYgaGF2ZV9zaW42X2xlbgorICAgIGFkZF9wcm9qZWN0X2FyZ3VtZW50
cygnLURIQVZFX1NJTjZfTEVOJywgbGFuZ3VhZ2U6ICdjJykKK2VuZGlmCitoYXZlX3Njb25uX2xl
biA9IGNvbXBpbGVyLmhhc19tZW1iZXIoJ3N0cnVjdCBzb2NrYWRkcl9jb25uJywgJ3Njb25uX2xl
bicsIHByZWZpeDogJyNpbmNsdWRlICJ1c3JzY3RwLmgiJywgaW5jbHVkZV9kaXJlY3Rvcmllczog
aW5jbHVkZV9kaXJlY3RvcmllcygndXNyc2N0cGxpYicpKQoraWYgaGF2ZV9zY29ubl9sZW4KKyAg
ICBhZGRfcHJvamVjdF9hcmd1bWVudHMoJy1ESEFWRV9TQ09OTl9MRU4nLCBsYW5ndWFnZTogJ2Mn
KQorZW5kaWYKKworIyBPcHRpb25zCitpZiBnZXRfb3B0aW9uKCdzY3RwX2ludmFyaWFudHMnKQor
ICAgIGFkZF9wcm9qZWN0X2FyZ3VtZW50cygnLURJTlZBUklBTlRTJywgbGFuZ3VhZ2U6ICdjJykK
K2VuZGlmCitpZiBnZXRfb3B0aW9uKCdzY3RwX2RlYnVnJykKKyAgICBhZGRfcHJvamVjdF9hcmd1
bWVudHMoJy1EU0NUUF9ERUJVRycsIGxhbmd1YWdlOiAnYycpCisgICAgY29tcGlsZV9hcmdzICs9
ICctRFNDVFBfREVCVUcnCitlbmRpZgoraWYgZ2V0X29wdGlvbignc2N0cF9pbmV0JykKKyAgICBh
ZGRfcHJvamVjdF9hcmd1bWVudHMoJy1ESU5FVCcsIGxhbmd1YWdlOiAnYycpCitlbmRpZgoraWYg
Z2V0X29wdGlvbignc2N0cF9pbmV0NicpCisgICAgYWRkX3Byb2plY3RfYXJndW1lbnRzKCctRElO
RVQ2JywgbGFuZ3VhZ2U6ICdjJykKK2VuZGlmCisKKyMgTGlicmFyeQorc3ViZGlyKCd1c3JzY3Rw
bGliJykKKworIyBCdWlsZCBsaWJyYXJ5CitpZiBjb21waWxlci5nZXRfaWQoKSA9PSAnbXN2Yycg
YW5kIGdldF9vcHRpb24oJ2RlZmF1bHRfbGlicmFyeScpID09ICdzaGFyZWQnCisgICAgIyBOZWVk
ZWQgYnkgdXNyc2N0cF9kZWYKKyAgICBmaW5kX3Byb2dyYW0oJ2R1bXBiaW4nKQorCisgICAgdXNy
c2N0cF9zdGF0aWMgPSBzdGF0aWNfbGlicmFyeSgndXNyc2N0cC1zdGF0aWMnLCBzb3VyY2VzLAor
ICAgICAgICBkZXBlbmRlbmNpZXM6IGRlcGVuZGVuY2llcywKKyAgICAgICAgaW5jbHVkZV9kaXJl
Y3RvcmllczogaW5jbHVkZV9kaXJzKQorCisgICB1c3JzY3RwX2RlZiA9IGN1c3RvbV90YXJnZXQo
J3VzcnNjdHAuZGVmJywKKyAgICAgICAgY29tbWFuZDogW2ZpbmRfcHJvZ3JhbSgnZ2VuLWRlZi5w
eScpLCAnQElOUFVUQCddLAorICAgICAgICBpbnB1dDogdXNyc2N0cF9zdGF0aWMsCisgICAgICAg
IG91dHB1dDogJ3VzcnNjdHAuZGVmJywKKyAgICAgICAgY2FwdHVyZTogdHJ1ZSkKKworICAgIHVz
cnNjdHAgPSBzaGFyZWRfbGlicmFyeSgndXNyc2N0cCcsCisgICAgICAgIGxpbmtfd2hvbGU6IHVz
cnNjdHBfc3RhdGljLAorICAgICAgICBkZXBlbmRlbmNpZXM6IGRlcGVuZGVuY2llcywKKyAgICAg
ICAgdnNfbW9kdWxlX2RlZnM6IHVzcnNjdHBfZGVmLAorICAgICAgICBpbnN0YWxsOiB0cnVlLAor
ICAgICAgICB2ZXJzaW9uOiBtZXNvbi5wcm9qZWN0X3ZlcnNpb24oKSkKK2Vsc2UKKyAgICB1c3Jz
Y3RwID0gbGlicmFyeSgndXNyc2N0cCcsIHNvdXJjZXMsCisgICAgICAgIGRlcGVuZGVuY2llczog
ZGVwZW5kZW5jaWVzLAorICAgICAgICBpbmNsdWRlX2RpcmVjdG9yaWVzOiBpbmNsdWRlX2RpcnMs
CisgICAgICAgIGluc3RhbGw6IHRydWUsCisgICAgICAgIHZlcnNpb246IG1lc29uLnByb2plY3Rf
dmVyc2lvbigpKQorZW5kaWYKKworIyBEZWNsYXJlIGRlcGVuZGVuY3kKK3VzcnNjdHBfZGVwID0g
ZGVjbGFyZV9kZXBlbmRlbmN5KAorICAgIGNvbXBpbGVfYXJnczogY29tcGlsZV9hcmdzLAorICAg
IGluY2x1ZGVfZGlyZWN0b3JpZXM6IGluY2x1ZGVfZGlycywKKyAgICBsaW5rX3dpdGg6IHVzcnNj
dHApCisKKyMgR2VuZXJhdGUgcGtnLWNvbmZpZyBmaWxlCitwa2cgPSBpbXBvcnQoJ3BrZ2NvbmZp
ZycpCitwa2cuZ2VuZXJhdGUodXNyc2N0cCwKKyAgICBuYW1lOiAndXNyc2N0cCcsCisgICAgZGVz
Y3JpcHRpb246ICdBIHBvcnRhYmxlIFNDVFAgdXNlcmxhbmQgc3RhY2snLAorICAgIHVybDogJ2h0
dHBzOi8vZ2l0aHViLmNvbS9zY3RwbGFiL3VzcnNjdHAnLAorICAgIGV4dHJhX2NmbGFnczogY29t
cGlsZV9hcmdzKQorCisjIFByb2dyYW1zIChvcHRpb25hbCkKK2lmIGdldF9vcHRpb24oJ3NjdHBf
YnVpbGRfcHJvZ3JhbXMnKQorICAgIHN1YmRpcigncHJvZ3JhbXMnKQorCisgICAgIyBCdWlsZCBl
eGVjdXRhYmxlcworICAgIGZvcmVhY2ggbmFtZSwgc291cmNlcyA6IHByb2dyYW1zCisgICAgICAg
IGV4ZWN1dGFibGUoCisgICAgICAgICAgICBuYW1lLAorICAgICAgICAgICAgcHJvZ3JhbXNfaGVs
cGVyX3NvdXJjZXMgKyBzb3VyY2VzLAorICAgICAgICAgICAgZGVwZW5kZW5jaWVzOiBkZXBlbmRl
bmNpZXMsCisgICAgICAgICAgICBsaW5rX3dpdGg6IHVzcnNjdHAsCisgICAgICAgICAgICBpbmNs
dWRlX2RpcmVjdG9yaWVzOiBpbmNsdWRlX2RpcnMpCisgICAgZW5kZm9yZWFjaAorZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
dXNyc2N0cC91c3JzY3RwbGliL21lc29uX29wdGlvbnMudHh0IGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvbWVzb25fb3B0
aW9ucy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTZkOTUwNjEyMTU2ZjQ2NzQwMTYxYWY5OTUxMjk5YzNhMjUx
MjQ3YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL21lc29uX29wdGlvbnMudHh0CkBAIC0w
LDAgKzEsMTAgQEAKK29wdGlvbignc2N0cF9pbnZhcmlhbnRzJywgdHlwZTogJ2Jvb2xlYW4nLCB2
YWx1ZTogZmFsc2UsCisgICAgZGVzY3JpcHRpb246ICdBZGQgcnVudGltZSBjaGVja3MnKQorb3B0
aW9uKCdzY3RwX2RlYnVnJywgdHlwZTogJ2Jvb2xlYW4nLCB2YWx1ZTogZmFsc2UsCisgICAgZGVz
Y3JpcHRpb246ICdQcm92aWRlIGRlYnVnIGluZm9ybWF0aW9uJykKK29wdGlvbignc2N0cF9pbmV0
JywgdHlwZTogJ2Jvb2xlYW4nLCB2YWx1ZTogdHJ1ZSwKKyAgICBkZXNjcmlwdGlvbjogJ1N1cHBv
cnQgSVB2NCcpCitvcHRpb24oJ3NjdHBfaW5ldDYnLCB0eXBlOiAnYm9vbGVhbicsIHZhbHVlOiB0
cnVlLAorICAgIGRlc2NyaXB0aW9uOiAnU3VwcG9ydCBJUHY2JykKK29wdGlvbignc2N0cF9idWls
ZF9wcm9ncmFtcycsIHR5cGU6ICdib29sZWFuJywgdmFsdWU6IHRydWUsCisgICAgZGVzY3JpcHRp
b246ICdCdWlsZCBleGFtcGxlIHByb2dyYW1zJykKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dy
YW1zL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvQ01ha2VMaXN0cy50eHQKaW5k
ZXggYWI0YzdmZGEzOWI3MTNkYzhjZDQxZWUwMWU1Yzk3ZDNlZWYxYjA1MS4uNjc5ZmUyODMxNGZj
OWRlMGUzOThmZjJlOTVlYjA5MWI3MTZiZmZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3Jh
bXMvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvQ01ha2VMaXN0cy50eHQK
QEAgLTEsNiArMSw2IEBACiAjCiAjIENvcHlyaWdodCAoQykgMjAxNS0yMDE1IE9sZWcgQWxleGVl
bmtvdgotIyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBGZWxpeCBXZWlucmFuaworIyBDb3B5cmln
aHQgKEMpIDIwMTUtMjAxOSBGZWxpeCBXZWlucmFuawogIwogIyBBbGwgcmlnaHRzIHJlc2VydmVk
LgogIwpAQCAtNDgsMTQgKzQ4LDI3IEBAIGluY2x1ZGVfZGlyZWN0b3JpZXMoJHtDTUFLRV9TT1VS
Q0VfRElSfS91c3JzY3RwbGliKQogIyBPUyBERVBFTkRFTlQKICMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotaWYgKCR7Q01BS0VfU1lTVEVNX05BTUV9
IE1BVENIRVMgIkxpbnV4IikKK2lmIChDTUFLRV9TWVNURU1fTkFNRSBNQVRDSEVTICJMaW51eCIp
CiAJYWRkX2RlZmluaXRpb25zKC1EX0dOVV9TT1VSQ0UpCiBlbmRpZiAoKQogCi1pZiAoJHtDTUFL
RV9TWVNURU1fTkFNRX0gTUFUQ0hFUyAiRGFyd2luIikKK2lmIChDTUFLRV9TWVNURU1fTkFNRSBN
QVRDSEVTICJEYXJ3aW4iKQogCWFkZF9kZWZpbml0aW9ucygtRF9fQVBQTEVfVVNFX1JGQ18yMjky
KQogZW5kaWYgKCkKIAoraWYgKE1TWVMgT1IgTUlOR1cpCisJbWVzc2FnZShTVEFUVVMgIk1TWVMg
LyBNSU5HVyIpCisJYWRkX2RlZmluaXRpb25zKC1EX19VU0VfTUlOR1dfQU5TSV9TVERJTykKKwkj
IDB4MDYwMSA9IFdpbmRvd3MgNyBBUEkKKwlhZGRfZGVmaW5pdGlvbnMoLURXSU5WRVI9MHgwNjAx
KQorCWFkZF9kZWZpbml0aW9ucygtRF9XSU4zMl9XSU5OVD0weDA2MDEpCisKKwlpZiAoQ01BS0Vf
Q19DT01QSUxFUl9JRCBNQVRDSEVTICJHTlUiKQorCQltZXNzYWdlKFNUQVRVUyAiTVNZUyAvIE1J
TkdXICsgR0NDIikKKwkJc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gLVduby1m
b3JtYXQiKQorCWVuZGlmICgpCitlbmRpZiAoKQorCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgTUlTQwpAQCAtNjgsMjEgKzgxLDI5IEBAIGZp
bmRfcGFja2FnZShUaHJlYWRzKQogIyBQUk9HUkFNUwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi1zZXQoY2hlY2tfcHJvZ3JhbXMKK2xpc3QoQVBQ
RU5EIGNoZWNrX3Byb2dyYW1zCisJY2hhcmdlbl9zZXJ2ZXJfdXBjYWxsLmMKIAljbGllbnQuYwor
CWNsaWVudF91cGNhbGwuYwogCWRheXRpbWVfc2VydmVyLmMKKwlkYXl0aW1lX3NlcnZlcl91cGNh
bGwuYwogCWRpc2NhcmRfc2VydmVyLmMKKwlkaXNjYXJkX3NlcnZlcl91cGNhbGwuYwogCWVjaG9f
c2VydmVyLmMKKwllY2hvX3NlcnZlcl91cGNhbGwuYwogCWVrcl9jbGllbnQuYwotCWVrcl9sb29w
X29mZmxvYWQuYwogCWVrcl9sb29wLmMKKwlla3JfbG9vcF91cGNhbGwuYwogCWVrcl9wZWVyLmMK
IAlla3Jfc2VydmVyLmMKIAlodHRwX2NsaWVudC5jCisJaHR0cF9jbGllbnRfdXBjYWxsLmMKIAly
dGN3ZWIuYworCXN0X2NsaWVudC5jCiAJdGVzdF9saWJtZ210LmMKIAl0ZXN0X3RpbWVyLmMKIAl0
c2N0cC5jCisJdHNjdHBfdXBjYWxsLmMKICkKIAogZm9yZWFjaCAoc291cmNlX2ZpbGUgJHtjaGVj
a19wcm9ncmFtc30pCkBAIC05MCw5ICsxMTEsMTEgQEAgZm9yZWFjaCAoc291cmNlX2ZpbGUgJHtj
aGVja19wcm9ncmFtc30pCiAJYWRkX2V4ZWN1dGFibGUoCiAJCSR7c291cmNlX2ZpbGVfd2V9CiAJ
CSR7c291cmNlX2ZpbGV9CisJCXByb2dyYW1zX2hlbHBlci5jCiAJKQogCi0JdGFyZ2V0X2xpbmtf
bGlicmFyaWVzKCR7c291cmNlX2ZpbGVfd2V9CisJdGFyZ2V0X2xpbmtfbGlicmFyaWVzKAorCQkk
e3NvdXJjZV9maWxlX3dlfQogCQkke3Byb2dyYW1zX2xpbmtfbGlicmFyeX0KIAkJJHtDTUFLRV9U
SFJFQURfTElCU19JTklUfQogCSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL01ha2Vm
aWxlLmFtIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91
c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvTWFrZWZpbGUuYW0KaW5kZXggNDVjMjQ4ZmJhM2U5
Yzg2OGMzOTZiMzdmMzYyZjAxMWY2MjkwM2JlNS4uNTE1MDFiNWZkODk5NzE4ZjFhMzAyMzczODc2
MzA2MTkyMTEzODdlMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvTWFrZWZpbGUuYW0K
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3Jz
Y3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvTWFrZWZpbGUuYW0KQEAgLTI5LDM0ICsyOSw5NCBAQAog
IwogCiBBTV9DUFBGTEFHUyA9IC1JJChzcmNkaXIpLy4uL3VzcnNjdHBsaWIKLUVYVFJBX0RJU1Qg
PSBNYWtlZmlsZS5ubWFrZSB0c2N0cC5jIGRheXRpbWVfc2VydmVyLmMgZGlzY2FyZF9zZXJ2ZXIu
YyBlY2hvX3NlcnZlci5jIGNsaWVudC5jIHJ0Y3dlYi5jIGVrcl9jbGllbnQuYyBla3Jfc2VydmVy
LmMgZWtyX2xvb3AuYyBla3JfbG9vcF9vZmZsb2FkLmMgdGVzdF9saWJtZ210LmMgaHR0cF9jbGll
bnQuYworRVhUUkFfRElTVCA9IFwKKyAgICBNYWtlZmlsZS5ubWFrZSBcCisgICAgdGVzdF9saWJt
Z210LmMgXAorICAgIHRlc3RfdGltZXIuYyBcCisgICAgdHNjdHAuYyBcCisgICAgY2hhcmdlbl9z
ZXJ2ZXJfdXBjYWxsLmMgXAorICAgIGRheXRpbWVfc2VydmVyLmMgXAorICAgIGRheXRpbWVfc2Vy
dmVyX3VwY2FsbC5jIFwKKyAgICBkaXNjYXJkX3NlcnZlci5jIFwKKyAgICBkaXNjYXJkX3NlcnZl
cl91cGNhbGwuYyBcCisgICAgZWNob19zZXJ2ZXIuYyBcCisgICAgZWNob19zZXJ2ZXJfdXBjYWxs
LmMgXAorICAgIGNsaWVudC5jIFwKKyAgICBjbGllbnRfdXBjYWxsLmMgXAorICAgIHJ0Y3dlYi5j
IFwKKyAgICBla3JfY2xpZW50LmMgXAorICAgIGVrcl9zZXJ2ZXIuYyBcCisgICAgZWtyX2xvb3Au
YyBcCisgICAgZWtyX2xvb3BfdXBjYWxsLmMgXAorICAgIGVrcl9wZWVyLmMgXAorICAgIHRlc3Rf
bGlibWdtdC5jIFwKKyAgICBodHRwX2NsaWVudC5jIFwKKyAgICBodHRwX2NsaWVudF91cGNhbGwu
YyBcCisgICAgc3RfY2xpZW50LmMKIAotbm9pbnN0X1BST0dSQU1TID0gdHNjdHAgZGF5dGltZV9z
ZXJ2ZXIgZGlzY2FyZF9zZXJ2ZXIgZWNob19zZXJ2ZXIgY2xpZW50IHJ0Y3dlYiBla3JfY2xpZW50
IGVrcl9zZXJ2ZXIgZWtyX3BlZXIgZWtyX2xvb3AgZWtyX2xvb3Bfb2ZmbG9hZCB0ZXN0X2xpYm1n
bXQgdGVzdF90aW1lciBodHRwX2NsaWVudAotdGVzdF9saWJtZ210X1NPVVJDRVMgPSB0ZXN0X2xp
Ym1nbXQuYworbm9pbnN0X1BST0dSQU1TID0gXAorICAgIHRlc3RfbGlibWdtdCBcCisgICAgdGVz
dF90aW1lciBcCisgICAgdHNjdHAgXAorICAgIGNoYXJnZW5fc2VydmVyX3VwY2FsbCBcCisgICAg
ZGF5dGltZV9zZXJ2ZXIgXAorICAgIGRheXRpbWVfc2VydmVyX3VwY2FsbCBcCisgICAgZGlzY2Fy
ZF9zZXJ2ZXIgXAorICAgIGRpc2NhcmRfc2VydmVyX3VwY2FsbCBcCisgICAgZWNob19zZXJ2ZXIg
XAorICAgIGVjaG9fc2VydmVyX3VwY2FsbCBcCisgICAgY2xpZW50IFwKKyAgICBjbGllbnRfdXBj
YWxsIFwKKyAgICBydGN3ZWIgXAorICAgIGVrcl9jbGllbnQgXAorICAgIGVrcl9zZXJ2ZXIgXAor
ICAgIGVrcl9sb29wIFwKKyAgICBla3JfbG9vcF91cGNhbGwgXAorICAgIGVrcl9wZWVyIFwKKyAg
ICB0ZXN0X2xpYm1nbXQgXAorICAgIGh0dHBfY2xpZW50IFwKKyAgICBodHRwX2NsaWVudF91cGNh
bGwgXAorICAgIHN0X2NsaWVudAorCit0ZXN0X2xpYm1nbXRfU09VUkNFUyA9IHByb2dyYW1zX2hl
bHBlci5jIHRlc3RfbGlibWdtdC5jCiB0ZXN0X2xpYm1nbXRfTERBREQgPSAuLi91c3JzY3RwbGli
L2xpYnVzcnNjdHAubGEKLXRlc3RfdGltZXJfU09VUkNFUyA9IHRlc3RfdGltZXIuYwordGVzdF90
aW1lcl9TT1VSQ0VTID0gcHJvZ3JhbXNfaGVscGVyLmMgdGVzdF90aW1lci5jCiB0ZXN0X3RpbWVy
X0xEQUREID0gLi4vdXNyc2N0cGxpYi9saWJ1c3JzY3RwLmxhCi10c2N0cF9TT1VSQ0VTID0gdHNj
dHAuYwordHNjdHBfU09VUkNFUyA9IHByb2dyYW1zX2hlbHBlci5jIHRzY3RwLmMKIHRzY3RwX0xE
QUREID0gLi4vdXNyc2N0cGxpYi9saWJ1c3JzY3RwLmxhCi1kYXl0aW1lX3NlcnZlcl9TT1VSQ0VT
ID0gZGF5dGltZV9zZXJ2ZXIuYworY2hhcmdlbl9zZXJ2ZXJfdXBjYWxsX1NPVVJDRVMgPSBwcm9n
cmFtc19oZWxwZXIuYyBjaGFyZ2VuX3NlcnZlcl91cGNhbGwuYworY2hhcmdlbl9zZXJ2ZXJfdXBj
YWxsX0xEQUREID0gLi4vdXNyc2N0cGxpYi9saWJ1c3JzY3RwLmxhCitkYXl0aW1lX3NlcnZlcl9T
T1VSQ0VTID0gcHJvZ3JhbXNfaGVscGVyLmMgZGF5dGltZV9zZXJ2ZXIuYwogZGF5dGltZV9zZXJ2
ZXJfTERBREQgPSAuLi91c3JzY3RwbGliL2xpYnVzcnNjdHAubGEKLWRpc2NhcmRfc2VydmVyX1NP
VVJDRVMgPSBkaXNjYXJkX3NlcnZlci5jCitkYXl0aW1lX3NlcnZlcl91cGNhbGxfU09VUkNFUyA9
IHByb2dyYW1zX2hlbHBlci5jIGRheXRpbWVfc2VydmVyX3VwY2FsbC5jCitkYXl0aW1lX3NlcnZl
cl91cGNhbGxfTERBREQgPSAuLi91c3JzY3RwbGliL2xpYnVzcnNjdHAubGEKK2Rpc2NhcmRfc2Vy
dmVyX1NPVVJDRVMgPSBwcm9ncmFtc19oZWxwZXIuYyBkaXNjYXJkX3NlcnZlci5jCiBkaXNjYXJk
X3NlcnZlcl9MREFERCA9IC4uL3VzcnNjdHBsaWIvbGlidXNyc2N0cC5sYQotZWNob19zZXJ2ZXJf
U09VUkNFUyA9IGVjaG9fc2VydmVyLmMKK2Rpc2NhcmRfc2VydmVyX3VwY2FsbF9TT1VSQ0VTID0g
cHJvZ3JhbXNfaGVscGVyLmMgZGlzY2FyZF9zZXJ2ZXJfdXBjYWxsLmMKK2Rpc2NhcmRfc2VydmVy
X3VwY2FsbF9MREFERCA9IC4uL3VzcnNjdHBsaWIvbGlidXNyc2N0cC5sYQorZWNob19zZXJ2ZXJf
U09VUkNFUyA9IHByb2dyYW1zX2hlbHBlci5jIGVjaG9fc2VydmVyLmMKIGVjaG9fc2VydmVyX0xE
QUREID0gLi4vdXNyc2N0cGxpYi9saWJ1c3JzY3RwLmxhCi1jbGllbnRfU09VUkNFUyA9IGNsaWVu
dC5jCitlY2hvX3NlcnZlcl91cGNhbGxfU09VUkNFUyA9IHByb2dyYW1zX2hlbHBlci5jIGVjaG9f
c2VydmVyX3VwY2FsbC5jCitlY2hvX3NlcnZlcl91cGNhbGxfTERBREQgPSAuLi91c3JzY3RwbGli
L2xpYnVzcnNjdHAubGEKK2NsaWVudF9TT1VSQ0VTID0gcHJvZ3JhbXNfaGVscGVyLmMgY2xpZW50
LmMKIGNsaWVudF9MREFERCA9IC4uL3VzcnNjdHBsaWIvbGlidXNyc2N0cC5sYQotcnRjd2ViX1NP
VVJDRVMgPSBydGN3ZWIuYworY2xpZW50X3VwY2FsbF9TT1VSQ0VTID0gcHJvZ3JhbXNfaGVscGVy
LmMgY2xpZW50X3VwY2FsbC5jCitjbGllbnRfdXBjYWxsX0xEQUREID0gLi4vdXNyc2N0cGxpYi9s
aWJ1c3JzY3RwLmxhCitydGN3ZWJfU09VUkNFUyA9IHByb2dyYW1zX2hlbHBlci5jIHJ0Y3dlYi5j
CiBydGN3ZWJfTERBREQgPSAuLi91c3JzY3RwbGliL2xpYnVzcnNjdHAubGEKLWVrcl9zZXJ2ZXJf
U09VUkNFUyA9IGVrcl9zZXJ2ZXIuYworZWtyX3NlcnZlcl9TT1VSQ0VTID0gcHJvZ3JhbXNfaGVs
cGVyLmMgZWtyX3NlcnZlci5jCiBla3Jfc2VydmVyX0xEQUREID0gLi4vdXNyc2N0cGxpYi9saWJ1
c3JzY3RwLmxhCi1la3JfY2xpZW50X1NPVVJDRVMgPSBla3JfY2xpZW50LmMKK2Vrcl9jbGllbnRf
U09VUkNFUyA9IHByb2dyYW1zX2hlbHBlci5jIGVrcl9jbGllbnQuYwogZWtyX2NsaWVudF9MREFE
RCA9IC4uL3VzcnNjdHBsaWIvbGlidXNyc2N0cC5sYQotZWtyX3BlZXJfU09VUkNFUyA9IGVrcl9w
ZWVyLmMKK2Vrcl9wZWVyX1NPVVJDRVMgPSBwcm9ncmFtc19oZWxwZXIuYyBla3JfcGVlci5jCiBl
a3JfcGVlcl9MREFERCA9IC4uL3VzcnNjdHBsaWIvbGlidXNyc2N0cC5sYQotZWtyX2xvb3BfU09V
UkNFUyA9IGVrcl9sb29wLmMKK2Vrcl9sb29wX1NPVVJDRVMgPSBwcm9ncmFtc19oZWxwZXIuYyBl
a3JfbG9vcC5jCiBla3JfbG9vcF9MREFERCA9IC4uL3VzcnNjdHBsaWIvbGlidXNyc2N0cC5sYQot
ZWtyX2xvb3Bfb2ZmbG9hZF9TT1VSQ0VTID0gZWtyX2xvb3Bfb2ZmbG9hZC5jCi1la3JfbG9vcF9v
ZmZsb2FkX0xEQUREID0gLi4vdXNyc2N0cGxpYi9saWJ1c3JzY3RwLmxhCi1odHRwX2NsaWVudF9T
T1VSQ0VTID0gaHR0cF9jbGllbnQuYworZWtyX2xvb3BfdXBjYWxsX1NPVVJDRVMgPSBwcm9ncmFt
c19oZWxwZXIuYyBla3JfbG9vcF91cGNhbGwuYworZWtyX2xvb3BfdXBjYWxsX0xEQUREID0gLi4v
dXNyc2N0cGxpYi9saWJ1c3JzY3RwLmxhCitodHRwX2NsaWVudF9TT1VSQ0VTID0gcHJvZ3JhbXNf
aGVscGVyLmMgaHR0cF9jbGllbnQuYwogaHR0cF9jbGllbnRfTERBREQgPSAuLi91c3JzY3RwbGli
L2xpYnVzcnNjdHAubGEKK2h0dHBfY2xpZW50X3VwY2FsbF9TT1VSQ0VTID0gcHJvZ3JhbXNfaGVs
cGVyLmMgaHR0cF9jbGllbnRfdXBjYWxsLmMKK2h0dHBfY2xpZW50X3VwY2FsbF9MREFERCA9IC4u
L3VzcnNjdHBsaWIvbGlidXNyc2N0cC5sYQorc3RfY2xpZW50X1NPVVJDRVMgPSBwcm9ncmFtc19o
ZWxwZXIuYyBzdF9jbGllbnQuYworc3RfY2xpZW50X0xEQUREID0gLi4vdXNyc2N0cGxpYi9saWJ1
c3JzY3RwLmxhCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9NYWtlZmlsZS5ubWFrZSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3Byb2dyYW1zL01ha2VmaWxlLm5tYWtlCmluZGV4IDAxYzQxMWNlZjY4OWViODhi
OThiNGZmNjhmZWI0MGY5YjRmODM2NGQuLmFhY2ZjNzRlNWZjOTMwY2VkNGRiNjc0OWQ1YmFhYmNk
YjJiMjFkZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL01ha2VmaWxlLm5tYWtlCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0
cC91c3JzY3RwbGliL3Byb2dyYW1zL01ha2VmaWxlLm5tYWtlCkBAIC0zOCw3NiArMzgsMTIzIEBA
IExJTktGTEFHUz0vTElCUEFUSDouLlx1c3JzY3RwbGliIHVzcnNjdHAubGliCiAJJChDQykgJChD
VkFSU0RMTCkgJChDRkxBR1MpIC1GZC5cIC1jICQ8DQogDQogYWxsOiBcDQorCXByb2dyYW1zX2hl
bHBlci5vYmogXA0KIAljbGllbnQgXA0KKwljbGllbnRfdXBjYWxsIFwNCiAJZGF5dGltZV9zZXJ2
ZXIgXA0KKwlkYXl0aW1lX3NlcnZlcl91cGNhbGwgXA0KIAlkaXNjYXJkX3NlcnZlciBcDQorCWRp
c2NhcmRfc2VydmVyX3VwY2FsbCBcDQogCWVjaG9fc2VydmVyIFwNCisJZWNob19zZXJ2ZXJfdXBj
YWxsIFwNCiAJdHNjdHAgXA0KIAlydGN3ZWIgXA0KIAlla3JfY2xpZW50IFwNCiAJZWtyX3NlcnZl
ciBcDQogCWVrcl9wZWVyIFwNCiAJZWtyX2xvb3AgXA0KKwlla3JfbG9vcF91cGNhbGwgXA0KIAl0
ZXN0X2xpYm1nbXQgXA0KLQlodHRwX2NsaWVudA0KKwlodHRwX2NsaWVudCBcDQorCWh0dHBfY2xp
ZW50X3VwY2FsbCBcDQorCXN0X2NsaWVudA0KKwkNCitwcm9ncmFtc19oZWxwZXIub2JqIDogcHJv
Z3JhbXNfaGVscGVyLmMgcHJvZ3JhbXNfaGVscGVyLmgNCisJY2wgJChDVkFSU0RMTCkgJChDRkxB
R1MpIC1jIHByb2dyYW1zX2hlbHBlci5jDQogDQogY2xpZW50Og0KIAkkKENDKSAkKENGTEFHUykg
JChDVkFSU0RMTCkgLWMgY2xpZW50LmMNCi0JbGluayAtb3V0OmNsaWVudC5leGUgY2xpZW50Lm9i
aiAkKExJTktGTEFHUykNCisJbGluayAtb3V0OmNsaWVudC5leGUgY2xpZW50Lm9iaiBwcm9ncmFt
c19oZWxwZXIub2JqICQoTElOS0ZMQUdTKQ0KKw0KK2NsaWVudF91cGNhbGw6DQorCSQoQ0MpICQo
Q0ZMQUdTKSAkKENWQVJTRExMKSAtYyBjbGllbnRfdXBjYWxsLmMNCisJbGluayAtb3V0OmNsaWVu
dF91cGNhbGwuZXhlIGNsaWVudF91cGNhbGwub2JqIHByb2dyYW1zX2hlbHBlci5vYmogJChMSU5L
RkxBR1MpDQogDQogZGF5dGltZV9zZXJ2ZXI6DQogCSQoQ0MpICQoQ0ZMQUdTKSAkKENWQVJTRExM
KSAtYyBkYXl0aW1lX3NlcnZlci5jDQotCWxpbmsgLW91dDpkYXl0aW1lX3NlcnZlci5leGUgZGF5
dGltZV9zZXJ2ZXIub2JqICQoTElOS0ZMQUdTKQ0KKwlsaW5rIC1vdXQ6ZGF5dGltZV9zZXJ2ZXIu
ZXhlIGRheXRpbWVfc2VydmVyLm9iaiBwcm9ncmFtc19oZWxwZXIub2JqICQoTElOS0ZMQUdTKQ0K
Kw0KK2RheXRpbWVfc2VydmVyX3VwY2FsbDoNCisJJChDQykgJChDRkxBR1MpICQoQ1ZBUlNETEwp
IC1jIGRheXRpbWVfc2VydmVyX3VwY2FsbC5jDQorCWxpbmsgLW91dDpkYXl0aW1lX3NlcnZlcl91
cGNhbGwuZXhlIGRheXRpbWVfc2VydmVyX3VwY2FsbC5vYmogcHJvZ3JhbXNfaGVscGVyLm9iaiAk
KExJTktGTEFHUykNCiANCiBkaXNjYXJkX3NlcnZlcjoNCiAJJChDQykgJChDRkxBR1MpICQoQ1ZB
UlNETEwpIC1jIGRpc2NhcmRfc2VydmVyLmMNCi0JbGluayAtb3V0OmRpc2NhcmRfc2VydmVyLmV4
ZSBkaXNjYXJkX3NlcnZlci5vYmogJChMSU5LRkxBR1MpDQorCWxpbmsgLW91dDpkaXNjYXJkX3Nl
cnZlci5leGUgZGlzY2FyZF9zZXJ2ZXIub2JqIHByb2dyYW1zX2hlbHBlci5vYmogJChMSU5LRkxB
R1MpDQorDQorZGlzY2FyZF9zZXJ2ZXJfdXBjYWxsOg0KKwkkKENDKSAkKENGTEFHUykgJChDVkFS
U0RMTCkgLWMgZGlzY2FyZF9zZXJ2ZXJfdXBjYWxsLmMNCisJbGluayAtb3V0OmRpc2NhcmRfc2Vy
dmVyX3VwY2FsbC5leGUgZGlzY2FyZF9zZXJ2ZXJfdXBjYWxsLm9iaiBwcm9ncmFtc19oZWxwZXIu
b2JqICQoTElOS0ZMQUdTKQ0KIA0KIGVjaG9fc2VydmVyOg0KIAkkKENDKSAkKENGTEFHUykgJChD
VkFSU0RMTCkgLWMgZWNob19zZXJ2ZXIuYw0KLQlsaW5rIC1vdXQ6ZWNob19zZXJ2ZXIuZXhlIGVj
aG9fc2VydmVyLm9iaiAkKExJTktGTEFHUykNCisJbGluayAtb3V0OmVjaG9fc2VydmVyLmV4ZSBl
Y2hvX3NlcnZlci5vYmogcHJvZ3JhbXNfaGVscGVyLm9iaiAkKExJTktGTEFHUykNCisNCitlY2hv
X3NlcnZlcl91cGNhbGw6DQorCSQoQ0MpICQoQ0ZMQUdTKSAkKENWQVJTRExMKSAtYyBlY2hvX3Nl
cnZlcl91cGNhbGwuYw0KKwlsaW5rIC1vdXQ6ZWNob19zZXJ2ZXJfdXBjYWxsLmV4ZSBlY2hvX3Nl
cnZlcl91cGNhbGwub2JqIHByb2dyYW1zX2hlbHBlci5vYmogJChMSU5LRkxBR1MpDQogDQogdHNj
dHA6DQogCSQoQ0MpICQoQ0ZMQUdTKSAkKENWQVJTRExMKSAtYyB0c2N0cC5jDQotCWxpbmsgLW91
dDp0c2N0cC5leGUgdHNjdHAub2JqICQoTElOS0ZMQUdTKQ0KKwlsaW5rIC1vdXQ6dHNjdHAuZXhl
IHRzY3RwLm9iaiBwcm9ncmFtc19oZWxwZXIub2JqICQoTElOS0ZMQUdTKQ0KIA0KIHJ0Y3dlYjoN
CiAJJChDQykgJChDRkxBR1MpICQoQ1ZBUlNETEwpIC1jIHJ0Y3dlYi5jDQotCWxpbmsgLW91dDpy
dGN3ZWIuZXhlIHJ0Y3dlYi5vYmogJChMSU5LRkxBR1MpDQorCWxpbmsgLW91dDpydGN3ZWIuZXhl
IHJ0Y3dlYi5vYmogcHJvZ3JhbXNfaGVscGVyLm9iaiAkKExJTktGTEFHUykNCiANCiBla3JfY2xp
ZW50Og0KIAkkKENDKSAkKENGTEFHUykgJChDVkFSU0RMTCkgLWMgZWtyX2NsaWVudC5jDQotCWxp
bmsgLW91dDpla3JfY2xpZW50LmV4ZSBla3JfY2xpZW50Lm9iaiAkKExJTktGTEFHUykNCisJbGlu
ayAtb3V0OmVrcl9jbGllbnQuZXhlIGVrcl9jbGllbnQub2JqIHByb2dyYW1zX2hlbHBlci5vYmog
JChMSU5LRkxBR1MpDQogDQogZWtyX3NlcnZlcjoNCiAJJChDQykgJChDRkxBR1MpICQoQ1ZBUlNE
TEwpIC1jIGVrcl9zZXJ2ZXIuYw0KLQlsaW5rIC1vdXQ6ZWtyX3NlcnZlci5leGUgZWtyX3NlcnZl
ci5vYmogJChMSU5LRkxBR1MpDQorCWxpbmsgLW91dDpla3Jfc2VydmVyLmV4ZSBla3Jfc2VydmVy
Lm9iaiBwcm9ncmFtc19oZWxwZXIub2JqICQoTElOS0ZMQUdTKQ0KIA0KIGVrcl9wZWVyOg0KIAkk
KENDKSAkKENGTEFHUykgJChDVkFSU0RMTCkgLWMgZWtyX3BlZXIuYw0KLQlsaW5rIC1vdXQ6ZWty
X3BlZXIuZXhlIGVrcl9wZWVyLm9iaiAkKExJTktGTEFHUykNCisJbGluayAtb3V0OmVrcl9wZWVy
LmV4ZSBla3JfcGVlci5vYmogcHJvZ3JhbXNfaGVscGVyLm9iaiAkKExJTktGTEFHUykNCiANCiBl
a3JfbG9vcDoNCiAJJChDQykgJChDRkxBR1MpICQoQ1ZBUlNETEwpIC1jIGVrcl9sb29wLmMNCi0J
bGluayAtb3V0OmVrcl9sb29wLmV4ZSBla3JfbG9vcC5vYmogJChMSU5LRkxBR1MpDQorCWxpbmsg
LW91dDpla3JfbG9vcC5leGUgZWtyX2xvb3Aub2JqIHByb2dyYW1zX2hlbHBlci5vYmogJChMSU5L
RkxBR1MpDQorDQorZWtyX2xvb3BfdXBjYWxsOg0KKwkkKENDKSAkKENGTEFHUykgJChDVkFSU0RM
TCkgLWMgZWtyX2xvb3BfdXBjYWxsLmMNCisJbGluayAtb3V0OmVrcl9sb29wX3VwY2FsbC5leGUg
ZWtyX2xvb3BfdXBjYWxsLm9iaiBwcm9ncmFtc19oZWxwZXIub2JqICQoTElOS0ZMQUdTKQ0KIA0K
IHRlc3RfbGlibWdtdDoNCiAJJChDQykgJChDRkxBR1MpICQoQ1ZBUlNETEwpIC1jIHRlc3RfbGli
bWdtdC5jDQotCWxpbmsgLW91dDp0ZXN0X2xpYm1nbXQuZXhlIHRlc3RfbGlibWdtdC5vYmogJChM
SU5LRkxBR1MpDQorCWxpbmsgLW91dDp0ZXN0X2xpYm1nbXQuZXhlIHRlc3RfbGlibWdtdC5vYmog
cHJvZ3JhbXNfaGVscGVyLm9iaiAkKExJTktGTEFHUykNCiANCiBodHRwX2NsaWVudDoNCiAJJChD
QykgJChDRkxBR1MpICQoQ1ZBUlNETEwpIC1jIGh0dHBfY2xpZW50LmMNCi0JbGluayAtb3V0Omh0
dHBfY2xpZW50LmV4ZSBodHRwX2NsaWVudC5vYmogJChMSU5LRkxBR1MpDQorCWxpbmsgLW91dDpo
dHRwX2NsaWVudC5leGUgaHR0cF9jbGllbnQub2JqIHByb2dyYW1zX2hlbHBlci5vYmogJChMSU5L
RkxBR1MpDQorDQoraHR0cF9jbGllbnRfdXBjYWxsOg0KKwkkKENDKSAkKENGTEFHUykgJChDVkFS
U0RMTCkgLWMgaHR0cF9jbGllbnRfdXBjYWxsLmMNCisJbGluayAtb3V0Omh0dHBfY2xpZW50X3Vw
Y2FsbC5leGUgaHR0cF9jbGllbnRfdXBjYWxsLm9iaiBwcm9ncmFtc19oZWxwZXIub2JqICQoTElO
S0ZMQUdTKQ0KKw0KK3N0X2NsaWVudDoNCisJJChDQykgJChDRkxBR1MpICQoQ1ZBUlNETEwpIC1j
IHN0X2NsaWVudC5jDQorCWxpbmsgLW91dDpzdF9jbGllbnQuZXhlIHN0X2NsaWVudC5vYmogcHJv
Z3JhbXNfaGVscGVyLm9iaiAkKExJTktGTEFHUykNCiANCiBjbGVhbjoNCiAJZGVsIC9GIGNsaWVu
dC5leGUNCiAJZGVsIC9GIGNsaWVudC5vYmoNCisJZGVsIC9GIGNsaWVudF91cGNhbGwuZXhlDQor
CWRlbCAvRiBjbGllbnRfdXBjYWxsLm9iag0KIAlkZWwgL0YgZGF5dGltZV9zZXJ2ZXIuZXhlDQog
CWRlbCAvRiBkYXl0aW1lX3NlcnZlci5vYmoNCisJZGVsIC9GIGRheXRpbWVfc2VydmVyX3VwY2Fs
bC5leGUNCisJZGVsIC9GIGRheXRpbWVfc2VydmVyX3VwY2FsbC5vYmoNCiAJZGVsIC9GIGRpc2Nh
cmRfc2VydmVyLmV4ZQ0KIAlkZWwgL0YgZGlzY2FyZF9zZXJ2ZXIub2JqDQorCWRlbCAvRiBkaXNj
YXJkX3NlcnZlcl91cGNhbGwuZXhlDQorCWRlbCAvRiBkaXNjYXJkX3NlcnZlcl91cGNhbGwub2Jq
DQogCWRlbCAvRiBlY2hvX3NlcnZlci5leGUNCiAJZGVsIC9GIGVjaG9fc2VydmVyLm9iag0KKwlk
ZWwgL0YgZWNob19zZXJ2ZXJfdXBjYWxsLmV4ZQ0KKwlkZWwgL0YgZWNob19zZXJ2ZXJfdXBjYWxs
Lm9iag0KIAlkZWwgL0YgdHNjdHAuZXhlDQogCWRlbCAvRiB0c2N0cC5vYmoNCiAJZGVsIC9GIHJ0
Y3dlYi5leGUNCkBAIC0xMjAsNyArMTY3LDEzIEBAIGNsZWFuOgogCWRlbCAvRiBla3JfcGVlci5v
YmoNCiAJZGVsIC9GIGVrcl9sb29wLmV4ZQ0KIAlkZWwgL0YgZWtyX2xvb3Aub2JqDQorCWRlbCAv
RiBla3JfbG9vcF91cGNhbGwuZXhlDQorCWRlbCAvRiBla3JfbG9vcF91cGNhbGwub2JqDQogCWRl
bCAvRiB0ZXN0X2xpYm1nbXQuZXhlDQogCWRlbCAvRiB0ZXN0X2xpYm1nbXQub2JqDQogCWRlbCAv
RiBodHRwX2NsaWVudC5leGUNCiAJZGVsIC9GIGh0dHBfY2xpZW50Lm9iag0KKwlkZWwgL0YgaHR0
cF9jbGllbnRfdXBjYWxsLmV4ZQ0KKwlkZWwgL0YgaHR0cF9jbGllbnRfdXBjYWxsLm9iag0KKwlk
ZWwgL0Ygc3RfY2xpZW50LmV4ZQ0KKwlkZWwgL0Ygc3RfY2xpZW50Lm9iag0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3Byb2dyYW1zL2NoYXJnZW5fc2VydmVyX3VwY2FsbC5jIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJv
Z3JhbXMvY2hhcmdlbl9zZXJ2ZXJfdXBjYWxsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmRhZjMyMWIzZjlmMGUz
Y2RlM2M3ZWE4NTM4NWI5MmVlN2E4YzE4YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3By
b2dyYW1zL2NoYXJnZW5fc2VydmVyX3VwY2FsbC5jCkBAIC0wLDAgKzEsMjMxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyLTIwMTMgTWljaGFlbCBUdWV4ZW4KKyAqCisgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgcHJvamVj
dCBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQor
ICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUFJPSkVDVCBBTkQgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAq
IEFSRSBESVNDTEFJTUVELglJTiBOTyBFVkVOVCBTSEFMTCBUSEUgUFJPSkVDVCBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMK
KyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKy8qCisgKiBVc2Fn
ZTogY2hhcmdlbl9zZXJ2ZXJfdXBjYWxsIFtsb2NhbF9lbmNhcHNfcG9ydF0gW3JlbW90ZV9lbmNh
cHNfcG9ydF0KKyAqLworCisjaWZkZWYgX1dJTjMyCisjZGVmaW5lIF9DUlRfU0VDVVJFX05PX1dB
Uk5JTkdTCisjZW5kaWYKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgor
I2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHN5cy90
eXBlcy5oPgorI2lmbmRlZiBfV0lOMzIKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVk
ZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5j
bHVkZSA8bmV0aW5ldC9pbi5oPgorI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorI2VuZGlmCisjaW5j
bHVkZSA8dXNyc2N0cC5oPgorI2luY2x1ZGUgInByb2dyYW1zX2hlbHBlci5oIgorCisjZGVmaW5l
IEJVRkZFUlNJWkUgMTAyNDAKKyNkZWZpbmUgUE9SVCAxOQorCitjaGFyIGJ1ZmZlcls5NV07Citp
bnQgZG9uZSA9IDA7CitpbnQgc2VuZF9kb25lID0gMDsKKworc3RhdGljIHZvaWQKK2luaXRCdWZm
ZXIodm9pZCkgeworCWludCBpLCBqOworCWZvciAoaSA9IDMyLCBqID0gMDsgaSA8IDEyNjsgaSsr
LCBqKyspIHsKKwkJYnVmZmVyW2pdID0gaTsKKwl9Cit9CisKK3Vuc2lnbmVkIGludCBzaWduQ291
bnRlciA9IDA7CitzdGF0aWMgdm9pZAoraGFuZGxlX3VwY2FsbChzdHJ1Y3Qgc29ja2V0ICp1cGNh
bGxfc29ja2V0LCB2b2lkICp1cGNhbGxfZGF0YSwgaW50IHVwY2FsbF9mbGFncyk7CisKK3N0YXRp
YyB2b2lkCitoYW5kbGVfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnVwY2FsbF9zb2NrZXQsIHZvaWQg
KnVwY2FsbF9kYXRhLCBpbnQgdXBjYWxsX2ZsYWdzKQoreworCXN0cnVjdCBzb2NrZXQgKmNvbm5f
c29jazsKKworCWlmICgoKGNvbm5fc29jayA9IHVzcnNjdHBfYWNjZXB0KHVwY2FsbF9zb2NrZXQs
IE5VTEwsIE5VTEwpKSA9PSBOVUxMKQorCSAgICAmJiAoZXJybm8gIT0gRUlOUFJPR1JFU1MpKSB7
CisJCXBlcnJvcigidXNyc2N0cF9hY2NlcHQiKTsKKwkJcmV0dXJuOworCX0KKwlkb25lID0gMDsK
KwlwcmludGYoImNvbm5lY3Rpb24gYWNjZXB0ZWQgZnJvbSBzb2NrZXQgJXBcbiIsICh2b2lkICop
Y29ubl9zb2NrKTsKKwl1c3JzY3RwX3NldF91cGNhbGwoY29ubl9zb2NrLCBoYW5kbGVfdXBjYWxs
LCBOVUxMKTsKK30KKworc3RhdGljIHZvaWQKK2hhbmRsZV91cGNhbGwoc3RydWN0IHNvY2tldCAq
dXBjYWxsX3NvY2tldCwgdm9pZCAqdXBjYWxsX2RhdGEsIGludCB1cGNhbGxfZmxhZ3MpCit7CisJ
aW50IGV2ZW50cyA9IHVzcnNjdHBfZ2V0X2V2ZW50cyh1cGNhbGxfc29ja2V0KTsKKworCWlmIChl
dmVudHMgJiBTQ1RQX0VWRU5UX1JFQUQgJiYgIXNlbmRfZG9uZSkgeworCQljaGFyICpidWY7CisJ
CXN0cnVjdCBzY3RwX3JlY3Z2X3JuIHJuOworCQlzc2l6ZV90IG47CisJCXN0cnVjdCBzb2NrYWRk
cl9zdG9yYWdlIGFkZHI7CisJCWJ1ZiA9IG1hbGxvYyhCVUZGRVJTSVpFKTsKKwkJaW50IHJlY3Zf
ZmxhZ3MgPSAwOworCQlzb2NrbGVuX3QgbGVuID0gKHNvY2tsZW5fdClzaXplb2Yoc3RydWN0IHNv
Y2thZGRyX3N0b3JhZ2UpOworCQl1bnNpZ25lZCBpbnQgaW5mb3R5cGUgPSAwOworCQlzb2NrbGVu
X3QgaW5mb2xlbiA9IHNpemVvZihzdHJ1Y3Qgc2N0cF9yZWN2dl9ybik7CisJCW1lbXNldCgmcm4s
IDAsIHNpemVvZihzdHJ1Y3Qgc2N0cF9yZWN2dl9ybikpOworCisJCW4gPSB1c3JzY3RwX3JlY3Z2
KHVwY2FsbF9zb2NrZXQsIGJ1ZiwgQlVGRkVSU0laRSwgKHN0cnVjdCBzb2NrYWRkciAqKSAmYWRk
ciwgJmxlbiwgKHZvaWQgKikmcm4sCisJCQkJICZpbmZvbGVuLCAmaW5mb3R5cGUsICZyZWN2X2Zs
YWdzKTsKKwkJaWYgKG4gPCAwKSB7CisJCQlwZXJyb3IoInVzcnNjdHBfcmVjdnYiKTsKKwkJCWRv
bmUgPSAxOworCQkJdXNyc2N0cF9jbG9zZSh1cGNhbGxfc29ja2V0KTsKKwkJCXByaW50ZigiY2xp
ZW50IHNvY2tldCAlcCBjbG9zZWRcbiIsICh2b2lkICopdXBjYWxsX3NvY2tldCk7CisJCQl1cGNh
bGxfc29ja2V0ID0gTlVMTDsKKwkJCXJldHVybjsKKwkJfQorCQlpZiAobiA9PSAwKSB7CisJCQlk
b25lID0gMTsKKwkJCXVzcnNjdHBfY2xvc2UodXBjYWxsX3NvY2tldCk7CisJCQlwcmludGYoImNs
aWVudCBzb2NrZXQgJXAgY2xvc2VkXG4iLCAodm9pZCAqKXVwY2FsbF9zb2NrZXQpOworCQkJdXBj
YWxsX3NvY2tldCA9IE5VTEw7CisJCQlyZXR1cm47CisJCX0KKwkJaWYgKG4gPiAwKSB7CisJCQlp
ZiAocmVjdl9mbGFncyAmIE1TR19OT1RJRklDQVRJT04pIHsKKwkJCQlwcmludGYoIk5vdGlmaWNh
dGlvbiBvZiBsZW5ndGggJWQgcmVjZWl2ZWQuXG4iLCAoaW50KW4pOworCQkJfSBlbHNlIHsKKwkJ
CQlwcmludGYoImRhdGEgb2Ygc2l6ZSAlZCByZWNlaXZlZFxuIiwgKGludCluKTsKKwkJCX0KKwkJ
fQorCQlmcmVlKGJ1Zik7CisJfQorCisJaWYgKChldmVudHMgJiBTQ1RQX0VWRU5UX1dSSVRFKSAm
JiAhZG9uZSkgeworCQlzdHJ1Y3Qgc2N0cF9zbmRpbmZvIHNuZF9pbmZvOworCQlzbmRfaW5mby5z
bmRfc2lkID0gMDsKKwkJc25kX2luZm8uc25kX2ZsYWdzID0gMDsKKwkJc25kX2luZm8uc25kX3Bw
aWQgPSAwOworCQlzbmRfaW5mby5zbmRfY29udGV4dCA9IDA7CisJCXNuZF9pbmZvLnNuZF9hc3Nv
Y19pZCA9IDA7CisJCWlmICh1c3JzY3RwX3NlbmR2KHVwY2FsbF9zb2NrZXQsIGJ1ZmZlciwgc3Ry
bGVuKGJ1ZmZlciksIE5VTEwsIDAsICZzbmRfaW5mbywgKHNvY2tsZW5fdClzaXplb2Yoc3RydWN0
IHNjdHBfc25kaW5mbyksIFNDVFBfU0VORFZfU05ESU5GTywgMCkgPCAwKSB7CisJCQlpZiAoZXJy
bm8gIT0gRUFHQUlOICYmIGVycm5vICE9IEVXT1VMREJMT0NLKSB7CisJCQkJc2VuZF9kb25lID0g
MTsKKwkJCQl1c3JzY3RwX2Nsb3NlKHVwY2FsbF9zb2NrZXQpOworCQkJCXByaW50ZigiY2xpZW50
IHNvY2tldCAlcCBjbG9zZWRcbiIsICh2b2lkICopdXBjYWxsX3NvY2tldCk7CisJCQkJcmV0dXJu
OworCQkJfQorCQl9CisJfQorCisJcmV0dXJuOworfQorCitpbnQKK21haW4oaW50IGFyZ2MsIGNo
YXIgKmFyZ3ZbXSkKK3sKKwlzdHJ1Y3Qgc29ja2V0ICpsaXN0ZW5pbmdfc29ja2V0OworCXN0cnVj
dCBzb2NrYWRkcl9pbjYgYWRkcjsKKwlzdHJ1Y3Qgc2N0cF91ZHBlbmNhcHMgZW5jYXBzOworCXN0
cnVjdCBzY3RwX2Fzc29jX3ZhbHVlIGF2OworCWNvbnN0IGludCBvbiA9IDE7CisKKwlpZiAoYXJn
YyA+IDEpIHsKKwkJdXNyc2N0cF9pbml0KGF0b2koYXJndlsxXSksIE5VTEwsIGRlYnVnX3ByaW50
Zl9zdGFjayk7CisJfSBlbHNlIHsKKwkJdXNyc2N0cF9pbml0KDk4OTksIE5VTEwsIGRlYnVnX3By
aW50Zl9zdGFjayk7CisJfQorI2lmZGVmIFNDVFBfREVCVUcKKwl1c3JzY3RwX3N5c2N0bF9zZXRf
c2N0cF9kZWJ1Z19vbihTQ1RQX0RFQlVHX05PTkUpOworI2VuZGlmCisJdXNyc2N0cF9zeXNjdGxf
c2V0X3NjdHBfYmxhY2tob2xlKDIpOworCXVzcnNjdHBfc3lzY3RsX3NldF9zY3RwX25vX2NzdW1f
b25fbG9vcGJhY2soMCk7CisKKwlpZiAoKGxpc3RlbmluZ19zb2NrZXQgPSB1c3JzY3RwX3NvY2tl
dChBRl9JTkVUNiwgU09DS19TVFJFQU0sIElQUFJPVE9fU0NUUCwgTlVMTCwgTlVMTCwgMCwgTlVM
TCkpID09IE5VTEwpIHsKKwkJcGVycm9yKCJ1c3JzY3RwX3NvY2tldCIpOworCX0KKwl1c3JzY3Rw
X3NldF9ub25fYmxvY2tpbmcobGlzdGVuaW5nX3NvY2tldCwgMSk7CisJaWYgKHVzcnNjdHBfc2V0
c29ja29wdChsaXN0ZW5pbmdfc29ja2V0LCBJUFBST1RPX1NDVFAsIFNDVFBfSV9XQU5UX01BUFBF
RF9WNF9BRERSLCAoY29uc3Qgdm9pZCopJm9uLCAoc29ja2xlbl90KXNpemVvZihpbnQpKSA8IDAp
IHsKKwkJcGVycm9yKCJ1c3JzY3RwX3NldHNvY2tvcHQgU0NUUF9JX1dBTlRfTUFQUEVEX1Y0X0FE
RFIiKTsKKwl9CisJbWVtc2V0KCZhdiwgMCwgc2l6ZW9mKHN0cnVjdCBzY3RwX2Fzc29jX3ZhbHVl
KSk7CisJYXYuYXNzb2NfaWQgPSBTQ1RQX0FMTF9BU1NPQzsKKwlhdi5hc3NvY192YWx1ZSA9IDQ3
OworCisJaWYgKHVzcnNjdHBfc2V0c29ja29wdChsaXN0ZW5pbmdfc29ja2V0LCBJUFBST1RPX1ND
VFAsIFNDVFBfQ09OVEVYVCwgKGNvbnN0IHZvaWQqKSZhdiwgKHNvY2tsZW5fdClzaXplb2Yoc3Ry
dWN0IHNjdHBfYXNzb2NfdmFsdWUpKSA8IDApIHsKKwkJcGVycm9yKCJ1c3JzY3RwX3NldHNvY2tv
cHQgU0NUUF9DT05URVhUIik7CisJfQorCWlmICh1c3JzY3RwX3NldHNvY2tvcHQobGlzdGVuaW5n
X3NvY2tldCwgSVBQUk9UT19TQ1RQLCBTQ1RQX1JFQ1ZSQ1ZJTkZPLCAmb24sIHNpemVvZihpbnQp
KSA8IDApIHsKKwkJcGVycm9yKCJ1c3JzY3RwX3NldHNvY2tvcHQgU0NUUF9SRUNWUkNWSU5GTyIp
OworCX0KKwlpZiAoYXJnYyA+IDIpIHsKKwkJbWVtc2V0KCZlbmNhcHMsIDAsIHNpemVvZihzdHJ1
Y3Qgc2N0cF91ZHBlbmNhcHMpKTsKKwkJZW5jYXBzLnN1ZV9hZGRyZXNzLnNzX2ZhbWlseSA9IEFG
X0lORVQ2OworCQllbmNhcHMuc3VlX3BvcnQgPSBodG9ucyhhdG9pKGFyZ3ZbMl0pKTsKKwkJaWYg
KHVzcnNjdHBfc2V0c29ja29wdChsaXN0ZW5pbmdfc29ja2V0LCBJUFBST1RPX1NDVFAsIFNDVFBf
UkVNT1RFX1VEUF9FTkNBUFNfUE9SVCwgKGNvbnN0IHZvaWQqKSZlbmNhcHMsIChzb2NrbGVuX3Qp
c2l6ZW9mKHN0cnVjdCBzY3RwX3VkcGVuY2FwcykpIDwgMCkgeworCQkJcGVycm9yKCJ1c3JzY3Rw
X3NldHNvY2tvcHQgU0NUUF9SRU1PVEVfVURQX0VOQ0FQU19QT1JUIik7CisJCX0KKwl9CisKKwlp
bml0QnVmZmVyKCk7CisKKwltZW1zZXQoKHZvaWQgKikmYWRkciwgMCwgc2l6ZW9mKHN0cnVjdCBz
b2NrYWRkcl9pbjYpKTsKKyNpZmRlZiBIQVZFX1NJTjZfTEVOCisJYWRkci5zaW42X2xlbiA9IHNp
emVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KTsKKyNlbmRpZgorCWFkZHIuc2luNl9mYW1pbHkgPSBB
Rl9JTkVUNjsKKwlhZGRyLnNpbjZfcG9ydCA9IGh0b25zKFBPUlQpOworCWFkZHIuc2luNl9hZGRy
ID0gaW42YWRkcl9hbnk7CisJaWYgKHVzcnNjdHBfYmluZChsaXN0ZW5pbmdfc29ja2V0LCAoc3Ry
dWN0IHNvY2thZGRyICopJmFkZHIsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSkgPCAwKSB7
CisJCXBlcnJvcigidXNyc2N0cF9iaW5kIik7CisJfQorCWlmICh1c3JzY3RwX2xpc3RlbihsaXN0
ZW5pbmdfc29ja2V0LCAxKSA8IDApIHsKKwkJcGVycm9yKCJ1c3JzY3RwX2xpc3RlbiIpOworCX0K
Kwl1c3JzY3RwX3NldF91cGNhbGwobGlzdGVuaW5nX3NvY2tldCwgaGFuZGxlX2FjY2VwdCwgTlVM
TCk7CisKKwl3aGlsZSAoMSkgeworI2lmZGVmIF9XSU4zMgorCQlTbGVlcCgxKjEwMDApOworI2Vs
c2UKKwkJc2xlZXAoMSk7CisjZW5kaWYKKwl9CisJdXNyc2N0cF9jbG9zZShsaXN0ZW5pbmdfc29j
a2V0KTsKKwl3aGlsZSAodXNyc2N0cF9maW5pc2goKSAhPSAwKSB7CisjaWZkZWYgX1dJTjMyCisJ
CVNsZWVwKDEwMDApOworI2Vsc2UKKwkJc2xlZXAoMSk7CisjZW5kaWYKKwl9CisJcmV0dXJuICgw
KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2NsaWVudC5jIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIv
cHJvZ3JhbXMvY2xpZW50LmMKaW5kZXggMWZlNzU3OTFkZTJmZmM3ZGJlMmZjZDUyMmE2YzUwYjhj
N2E4ZmFhZi4uOGExNWE3YmU4MmQzZjQxODc1NWVjNTdhNDU1NDdiMDM0NmI1MmUxYiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3Jz
Y3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvY2xpZW50LmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMv
Y2xpZW50LmMKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlIDxpby5oPgogI2VuZGlmCiAjaW5j
bHVkZSA8dXNyc2N0cC5oPgorI2luY2x1ZGUgInByb2dyYW1zX2hlbHBlci5oIgogCiBpbnQgZG9u
ZSA9IDA7CiAKQEAgLTU4LDIwNSArNTksNyBAQCBpbnQgZG9uZSA9IDA7CiB0eXBlZGVmIGNoYXIq
IGNhZGRyX3Q7CiAjZW5kaWYKIAotc3RhdGljIHZvaWQKLWhhbmRsZV9hc3NvY2lhdGlvbl9jaGFu
Z2VfZXZlbnQoc3RydWN0IHNjdHBfYXNzb2NfY2hhbmdlICpzYWMpCi17Ci0JdW5zaWduZWQgaW50
IGksIG47CiAKLQlwcmludGYoIkFzc29jaWF0aW9uIGNoYW5nZSAiKTsKLQlzd2l0Y2ggKHNhYy0+
c2FjX3N0YXRlKSB7Ci0JY2FzZSBTQ1RQX0NPTU1fVVA6Ci0JCXByaW50ZigiU0NUUF9DT01NX1VQ
Iik7Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9DT01NX0xPU1Q6Ci0JCXByaW50ZigiU0NUUF9DT01N
X0xPU1QiKTsKLQkJYnJlYWs7Ci0JY2FzZSBTQ1RQX1JFU1RBUlQ6Ci0JCXByaW50ZigiU0NUUF9S
RVNUQVJUIik7Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9TSFVURE9XTl9DT01QOgotCQlwcmludGYo
IlNDVFBfU0hVVERPV05fQ09NUCIpOwotCQlicmVhazsKLQljYXNlIFNDVFBfQ0FOVF9TVFJfQVNT
T0M6Ci0JCXByaW50ZigiU0NUUF9DQU5UX1NUUl9BU1NPQyIpOwotCQlicmVhazsKLQlkZWZhdWx0
OgotCQlwcmludGYoIlVOS05PV04iKTsKLQkJYnJlYWs7Ci0JfQotCXByaW50ZigiLCBzdHJlYW1z
IChpbi9vdXQpID0gKCV1LyV1KSIsCi0JICAgICAgIHNhYy0+c2FjX2luYm91bmRfc3RyZWFtcywg
c2FjLT5zYWNfb3V0Ym91bmRfc3RyZWFtcyk7Ci0JbiA9IHNhYy0+c2FjX2xlbmd0aCAtIHNpemVv
ZihzdHJ1Y3Qgc2N0cF9hc3NvY19jaGFuZ2UpOwotCWlmICgoKHNhYy0+c2FjX3N0YXRlID09IFND
VFBfQ09NTV9VUCkgfHwKLQkgICAgIChzYWMtPnNhY19zdGF0ZSA9PSBTQ1RQX1JFU1RBUlQpKSAm
JiAobiA+IDApKSB7Ci0JCXByaW50ZigiLCBzdXBwb3J0cyIpOwotCQlmb3IgKGkgPSAwOyBpIDwg
bjsgaSsrKSB7Ci0JCQlzd2l0Y2ggKHNhYy0+c2FjX2luZm9baV0pIHsKLQkJCWNhc2UgU0NUUF9B
U1NPQ19TVVBQT1JUU19QUjoKLQkJCQlwcmludGYoIiBQUiIpOwotCQkJCWJyZWFrOwotCQkJY2Fz
ZSBTQ1RQX0FTU09DX1NVUFBPUlRTX0FVVEg6Ci0JCQkJcHJpbnRmKCIgQVVUSCIpOwotCQkJCWJy
ZWFrOwotCQkJY2FzZSBTQ1RQX0FTU09DX1NVUFBPUlRTX0FTQ09ORjoKLQkJCQlwcmludGYoIiBB
U0NPTkYiKTsKLQkJCQlicmVhazsKLQkJCWNhc2UgU0NUUF9BU1NPQ19TVVBQT1JUU19NVUxUSUJV
RjoKLQkJCQlwcmludGYoIiBNVUxUSUJVRiIpOwotCQkJCWJyZWFrOwotCQkJY2FzZSBTQ1RQX0FT
U09DX1NVUFBPUlRTX1JFX0NPTkZJRzoKLQkJCQlwcmludGYoIiBSRS1DT05GSUciKTsKLQkJCQli
cmVhazsKLQkJCWRlZmF1bHQ6Ci0JCQkJcHJpbnRmKCIgVU5LTk9XTigweCUwMngpIiwgc2FjLT5z
YWNfaW5mb1tpXSk7Ci0JCQkJYnJlYWs7Ci0JCQl9Ci0JCX0KLQl9IGVsc2UgaWYgKCgoc2FjLT5z
YWNfc3RhdGUgPT0gU0NUUF9DT01NX0xPU1QpIHx8Ci0JICAgICAgICAgICAgKHNhYy0+c2FjX3N0
YXRlID09IFNDVFBfQ0FOVF9TVFJfQVNTT0MpKSAmJiAobiA+IDApKSB7Ci0JCXByaW50ZigiLCBB
Qk9SVCA9Iik7Ci0JCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLQkJCXByaW50ZigiIDB4JTAy
eCIsIHNhYy0+c2FjX2luZm9baV0pOwotCQl9Ci0JfQotCXByaW50ZigiLlxuIik7Ci0JaWYgKChz
YWMtPnNhY19zdGF0ZSA9PSBTQ1RQX0NBTlRfU1RSX0FTU09DKSB8fAotCSAgICAoc2FjLT5zYWNf
c3RhdGUgPT0gU0NUUF9TSFVURE9XTl9DT01QKSB8fAotCSAgICAoc2FjLT5zYWNfc3RhdGUgPT0g
U0NUUF9DT01NX0xPU1QpKSB7Ci0JCWV4aXQoMCk7Ci0JfQotCXJldHVybjsKLX0KLQotc3RhdGlj
IHZvaWQKLWhhbmRsZV9wZWVyX2FkZHJlc3NfY2hhbmdlX2V2ZW50KHN0cnVjdCBzY3RwX3BhZGRy
X2NoYW5nZSAqc3BjKQotewotCWNoYXIgYWRkcl9idWZbSU5FVDZfQUREUlNUUkxFTl07Ci0JY29u
c3QgY2hhciAqYWRkcjsKLQlzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbjsKLQlzdHJ1Y3Qgc29ja2Fk
ZHJfaW42ICpzaW42OwotCXN0cnVjdCBzb2NrYWRkcl9jb25uICpzY29ubjsKLQotCXN3aXRjaCAo
c3BjLT5zcGNfYWFkZHIuc3NfZmFtaWx5KSB7Ci0JY2FzZSBBRl9JTkVUOgotCQlzaW4gPSAoc3Ry
dWN0IHNvY2thZGRyX2luICopJnNwYy0+c3BjX2FhZGRyOwotCQlhZGRyID0gaW5ldF9udG9wKEFG
X0lORVQsICZzaW4tPnNpbl9hZGRyLCBhZGRyX2J1ZiwgSU5FVF9BRERSU1RSTEVOKTsKLQkJYnJl
YWs7Ci0JY2FzZSBBRl9JTkVUNjoKLQkJc2luNiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopJnNw
Yy0+c3BjX2FhZGRyOwotCQlhZGRyID0gaW5ldF9udG9wKEFGX0lORVQ2LCAmc2luNi0+c2luNl9h
ZGRyLCBhZGRyX2J1ZiwgSU5FVDZfQUREUlNUUkxFTik7Ci0JCWJyZWFrOwotCWNhc2UgQUZfQ09O
TjoKLQkJc2Nvbm4gPSAoc3RydWN0IHNvY2thZGRyX2Nvbm4gKikmc3BjLT5zcGNfYWFkZHI7Ci0j
aWZkZWYgX1dJTjMyCi0JCV9zbnByaW50ZihhZGRyX2J1ZiwgSU5FVDZfQUREUlNUUkxFTiwgIiVw
Iiwgc2Nvbm4tPnNjb25uX2FkZHIpOwotI2Vsc2UKLQkJc25wcmludGYoYWRkcl9idWYsIElORVQ2
X0FERFJTVFJMRU4sICIlcCIsIHNjb25uLT5zY29ubl9hZGRyKTsKLSNlbmRpZgotCQlhZGRyID0g
YWRkcl9idWY7Ci0JCWJyZWFrOwotCWRlZmF1bHQ6Ci0jaWZkZWYgX1dJTjMyCi0JCV9zbnByaW50
ZihhZGRyX2J1ZiwgSU5FVDZfQUREUlNUUkxFTiwgIlVua25vd24gZmFtaWx5ICVkIiwgc3BjLT5z
cGNfYWFkZHIuc3NfZmFtaWx5KTsKLSNlbHNlCi0JCXNucHJpbnRmKGFkZHJfYnVmLCBJTkVUNl9B
RERSU1RSTEVOLCAiVW5rbm93biBmYW1pbHkgJWQiLCBzcGMtPnNwY19hYWRkci5zc19mYW1pbHkp
OwotI2VuZGlmCi0JCWFkZHIgPSBhZGRyX2J1ZjsKLQkJYnJlYWs7Ci0JfQotCXByaW50ZigiUGVl
ciBhZGRyZXNzICVzIGlzIG5vdyAiLCBhZGRyKTsKLQlzd2l0Y2ggKHNwYy0+c3BjX3N0YXRlKSB7
Ci0JY2FzZSBTQ1RQX0FERFJfQVZBSUxBQkxFOgotCQlwcmludGYoIlNDVFBfQUREUl9BVkFJTEFC
TEUiKTsKLQkJYnJlYWs7Ci0JY2FzZSBTQ1RQX0FERFJfVU5SRUFDSEFCTEU6Ci0JCXByaW50Zigi
U0NUUF9BRERSX1VOUkVBQ0hBQkxFIik7Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9BRERSX1JFTU9W
RUQ6Ci0JCXByaW50ZigiU0NUUF9BRERSX1JFTU9WRUQiKTsKLQkJYnJlYWs7Ci0JY2FzZSBTQ1RQ
X0FERFJfQURERUQ6Ci0JCXByaW50ZigiU0NUUF9BRERSX0FEREVEIik7Ci0JCWJyZWFrOwotCWNh
c2UgU0NUUF9BRERSX01BREVfUFJJTToKLQkJcHJpbnRmKCJTQ1RQX0FERFJfTUFERV9QUklNIik7
Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9BRERSX0NPTkZJUk1FRDoKLQkJcHJpbnRmKCJTQ1RQX0FE
RFJfQ09ORklSTUVEIik7Ci0JCWJyZWFrOwotCWRlZmF1bHQ6Ci0JCXByaW50ZigiVU5LTk9XTiIp
OwotCQlicmVhazsKLQl9Ci0JcHJpbnRmKCIgKGVycm9yID0gMHglMDh4KS5cbiIsIHNwYy0+c3Bj
X2Vycm9yKTsKLQlyZXR1cm47Ci19Ci0KLXN0YXRpYyB2b2lkCi1oYW5kbGVfc2VuZF9mYWlsZWRf
ZXZlbnQoc3RydWN0IHNjdHBfc2VuZF9mYWlsZWRfZXZlbnQgKnNzZmUpCi17Ci0Jc2l6ZV90IGks
IG47Ci0KLQlpZiAoc3NmZS0+c3NmZV9mbGFncyAmIFNDVFBfREFUQV9VTlNFTlQpIHsKLQkJcHJp
bnRmKCJVbnNlbnQgIik7Ci0JfQotCWlmIChzc2ZlLT5zc2ZlX2ZsYWdzICYgU0NUUF9EQVRBX1NF
TlQpIHsKLQkJcHJpbnRmKCJTZW50ICIpOwotCX0KLQlpZiAoc3NmZS0+c3NmZV9mbGFncyAmIH4o
U0NUUF9EQVRBX1NFTlQgfCBTQ1RQX0RBVEFfVU5TRU5UKSkgewotCQlwcmludGYoIihmbGFncyA9
ICV4KSAiLCBzc2ZlLT5zc2ZlX2ZsYWdzKTsKLQl9Ci0JcHJpbnRmKCJtZXNzYWdlIHdpdGggUFBJ
RCA9ICV1LCBTSUQgPSAldSwgZmxhZ3M6IDB4JTA0eCBkdWUgdG8gZXJyb3IgPSAweCUwOHgiLAot
CSAgICAgICBudG9obChzc2ZlLT5zc2ZlX2luZm8uc25kX3BwaWQpLCBzc2ZlLT5zc2ZlX2luZm8u
c25kX3NpZCwKLQkgICAgICAgc3NmZS0+c3NmZV9pbmZvLnNuZF9mbGFncywgc3NmZS0+c3NmZV9l
cnJvcik7Ci0JbiA9IHNzZmUtPnNzZmVfbGVuZ3RoIC0gc2l6ZW9mKHN0cnVjdCBzY3RwX3NlbmRf
ZmFpbGVkX2V2ZW50KTsKLQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0JCXByaW50ZigiIDB4
JTAyeCIsIHNzZmUtPnNzZmVfZGF0YVtpXSk7Ci0JfQotCXByaW50ZigiLlxuIik7Ci0JcmV0dXJu
OwotfQotCi1zdGF0aWMgdm9pZAotaGFuZGxlX25vdGlmaWNhdGlvbih1bmlvbiBzY3RwX25vdGlm
aWNhdGlvbiAqbm90aWYsIHNpemVfdCBuKQotewotCWlmIChub3RpZi0+c25faGVhZGVyLnNuX2xl
bmd0aCAhPSAodWludDMyX3QpbikgewotCQlyZXR1cm47Ci0JfQotCXN3aXRjaCAobm90aWYtPnNu
X2hlYWRlci5zbl90eXBlKSB7Ci0JY2FzZSBTQ1RQX0FTU09DX0NIQU5HRToKLQkJaGFuZGxlX2Fz
c29jaWF0aW9uX2NoYW5nZV9ldmVudCgmKG5vdGlmLT5zbl9hc3NvY19jaGFuZ2UpKTsKLQkJYnJl
YWs7Ci0JY2FzZSBTQ1RQX1BFRVJfQUREUl9DSEFOR0U6Ci0JCWhhbmRsZV9wZWVyX2FkZHJlc3Nf
Y2hhbmdlX2V2ZW50KCYobm90aWYtPnNuX3BhZGRyX2NoYW5nZSkpOwotCQlicmVhazsKLQljYXNl
IFNDVFBfUkVNT1RFX0VSUk9SOgotCQlicmVhazsKLQljYXNlIFNDVFBfU0hVVERPV05fRVZFTlQ6
Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9BREFQVEFUSU9OX0lORElDQVRJT046Ci0JCWJyZWFrOwot
CWNhc2UgU0NUUF9QQVJUSUFMX0RFTElWRVJZX0VWRU5UOgotCQlicmVhazsKLQljYXNlIFNDVFBf
QVVUSEVOVElDQVRJT05fRVZFTlQ6Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9TRU5ERVJfRFJZX0VW
RU5UOgotCQlicmVhazsKLQljYXNlIFNDVFBfTk9USUZJQ0FUSU9OU19TVE9QUEVEX0VWRU5UOgot
CQlicmVhazsKLQljYXNlIFNDVFBfU0VORF9GQUlMRURfRVZFTlQ6Ci0JCWhhbmRsZV9zZW5kX2Zh
aWxlZF9ldmVudCgmKG5vdGlmLT5zbl9zZW5kX2ZhaWxlZF9ldmVudCkpOwotCQlicmVhazsKLQlj
YXNlIFNDVFBfU1RSRUFNX1JFU0VUX0VWRU5UOgotCQlicmVhazsKLQljYXNlIFNDVFBfQVNTT0Nf
UkVTRVRfRVZFTlQ6Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9TVFJFQU1fQ0hBTkdFX0VWRU5UOgot
CQlicmVhazsKLQlkZWZhdWx0OgotCQlicmVhazsKLQl9Ci19CiAKIHN0YXRpYyBpbnQKIHJlY2Vp
dmVfY2Ioc3RydWN0IHNvY2tldCAqc29jaywgdW5pb24gc2N0cF9zb2Nrc3RvcmUgYWRkciwgdm9p
ZCAqZGF0YSwKQEAgLTI4MiwxNiArODUsNiBAQCByZWNlaXZlX2NiKHN0cnVjdCBzb2NrZXQgKnNv
Y2ssIHVuaW9uIHNjdHBfc29ja3N0b3JlIGFkZHIsIHZvaWQgKmRhdGEsCiAJcmV0dXJuICgxKTsK
IH0KIAotdm9pZAotZGVidWdfcHJpbnRmKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQotewotCXZh
X2xpc3QgYXA7Ci0KLQl2YV9zdGFydChhcCwgZm9ybWF0KTsKLQl2cHJpbnRmKGZvcm1hdCwgYXAp
OwotCXZhX2VuZChhcCk7Ci19Ci0KIGludAogbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQog
ewpAQCAtMzE0LDE0ICsxMDcsMTYgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQly
ZXR1cm4gKC0xKTsKIAl9CiAJaWYgKGFyZ2MgPiA0KSB7Ci0JCXVzcnNjdHBfaW5pdChhdG9pKGFy
Z3ZbNF0pLCBOVUxMLCBkZWJ1Z19wcmludGYpOworCQl1c3JzY3RwX2luaXQoYXRvaShhcmd2WzRd
KSwgTlVMTCwgZGVidWdfcHJpbnRmX3N0YWNrKTsKIAl9IGVsc2UgewotCQl1c3JzY3RwX2luaXQo
OTg5OSwgTlVMTCwgZGVidWdfcHJpbnRmKTsKKwkJdXNyc2N0cF9pbml0KDk4OTksIE5VTEwsIGRl
YnVnX3ByaW50Zl9zdGFjayk7CiAJfQogI2lmZGVmIFNDVFBfREVCVUcKIAl1c3JzY3RwX3N5c2N0
bF9zZXRfc2N0cF9kZWJ1Z19vbihTQ1RQX0RFQlVHX05PTkUpOwogI2VuZGlmCiAJdXNyc2N0cF9z
eXNjdGxfc2V0X3NjdHBfYmxhY2tob2xlKDIpOworCXVzcnNjdHBfc3lzY3RsX3NldF9zY3RwX25v
X2NzdW1fb25fbG9vcGJhY2soMCk7CisKIAlpZiAoKHNvY2sgPSB1c3JzY3RwX3NvY2tldChBRl9J
TkVUNiwgU09DS19TVFJFQU0sIElQUFJPVE9fU0NUUCwgcmVjZWl2ZV9jYiwgTlVMTCwgMCwgTlVM
TCkpID09IE5VTEwpIHsKIAkJcGVycm9yKCJ1c3JzY3RwX3NvY2tldCIpOwogCX0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0
cC91c3JzY3RwbGliL3Byb2dyYW1zL2NsaWVudF91cGNhbGwuYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1z
L2NsaWVudF91cGNhbGwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZDU1YTM4NWE2YzdlNzZjZGNiZjczOTdjY2Jm
MGMwN2YxNDAwNTI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvY2xpZW50
X3VwY2FsbC5jCkBAIC0wLDAgKzEsMzQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MTMgTWljaGFlbCBUdWV4ZW4KKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgcHJvamVjdCBub3IgdGhlIG5hbWVzIG9mIGl0
cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgUFJPSkVDVCBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELglJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgUFJPSkVDVCBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICog
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YK
KyAqIFNVQ0ggREFNQUdFLgorICovCisKKy8qCisgKiBVc2FnZTogY2xpZW50X3VwY2FsbCByZW1v
dGVfYWRkciByZW1vdGVfcG9ydCBbbG9jYWxfcG9ydF0gW2xvY2FsX2VuY2Fwc19wb3J0XSBbcmVt
b3RlX2VuY2Fwc19wb3J0XQorICovCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0
ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorCisjaWYg
IWRlZmluZWQoX1dJTjMyKQorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN5cy90aW1l
Lmg+CisjZW5kaWYgLyogIWRlZmluZWQoX1dJTjMyKSAqLworCisjaW5jbHVkZSA8c3lzL3R5cGVz
Lmg+CisKKyNpZiAhZGVmaW5lZChfV0lOMzIpCisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2lu
Y2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyNlbHNlIC8qICFk
ZWZpbmVkKF9XSU4zMikgKi8KKyNpbmNsdWRlIDxpby5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDx1
c3JzY3RwLmg+CisjaW5jbHVkZSAicHJvZ3JhbXNfaGVscGVyLmgiCisjaW5jbHVkZSA8ZmNudGwu
aD4KKworI2RlZmluZSBCVUZGRVJTSVpFICAgICAgICAgICAgICAgICAoMTw8MTYpCisKK2ludCBk
b25lID0gMCwgaW5wdXRfZG9uZSA9IDAsIGNvbm5lY3RlZCA9IDA7CisKKyNpZmRlZiBfV0lOMzIK
K3R5cGVkZWYgY2hhciogY2FkZHJfdDsKKyNlbmRpZgorCitpbnQgaW5wdXRBdmFpbGFibGUodm9p
ZCkKK3sKKwlzdHJ1Y3QgdGltZXZhbCB0djsKKwlmZF9zZXQgZmRzOworCXR2LnR2X3NlYyA9IDA7
CisJdHYudHZfdXNlYyA9IDA7CisJRkRfWkVSTygmZmRzKTsKKyNpZiBkZWZpbmVkKF9XSU4zMikg
JiYgIWRlZmluZWQoX19NSU5HVzMyX18pCisJRkRfU0VUKF9maWxlbm8oc3RkaW4pLCAmZmRzKTsK
KyAgCXNlbGVjdChfZmlsZW5vKHN0ZGluKSArIDEsICZmZHMsIE5VTEwsIE5VTEwsICZ0dik7Cisj
ZWxzZQorCUZEX1NFVChTVERJTl9GSUxFTk8sICZmZHMpOworCXNlbGVjdChTVERJTl9GSUxFTk8r
MSwgJmZkcywgTlVMTCwgTlVMTCwgJnR2KTsKKyNlbmRpZgorICByZXR1cm4gKEZEX0lTU0VUKDAs
ICZmZHMpKTsKK30KKworc3RhdGljIHZvaWQKK2hhbmRsZV91cGNhbGwoc3RydWN0IHNvY2tldCAq
c29jaywgdm9pZCAqYXJnLCBpbnQgZmxncykKK3sKKwlpbnQgZXZlbnRzID0gdXNyc2N0cF9nZXRf
ZXZlbnRzKHNvY2spOworCisJaWYgKGV2ZW50cyAmIFNDVFBfRVZFTlRfV1JJVEUgJiYgIWRvbmUg
JiYgIWNvbm5lY3RlZCkgeworCQljb25uZWN0ZWQgPSAxOworCQlwcmludGYoInNvY2tldCBjb25u
ZWN0ZWRcbiIpOworCQlyZXR1cm47CisJfQorCisJd2hpbGUgKGV2ZW50cyAmIFNDVFBfRVZFTlRf
UkVBRCAmJiAhZG9uZSAmJiBjb25uZWN0ZWQpIHsKKwkJc3RydWN0IHNjdHBfcmVjdnZfcm4gcm47
CisJCXNzaXplX3QgbjsKKwkJc3RydWN0IHNvY2thZGRyX2luIGFkZHI7CisJCWNoYXIgKmJ1ZiA9
IGNhbGxvYygxLCBCVUZGRVJTSVpFKTsKKwkJaW50IGZsYWdzID0gMDsKKwkJc29ja2xlbl90IGxl
biA9IChzb2NrbGVuX3Qpc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7CisJCXVuc2lnbmVkIGlu
dCBpbmZvdHlwZSA9IDA7CisJCXNvY2tsZW5fdCBpbmZvbGVuID0gc2l6ZW9mKHN0cnVjdCBzY3Rw
X3JlY3Z2X3JuKTsKKwkJbWVtc2V0KCZybiwgMCwgc2l6ZW9mKHN0cnVjdCBzY3RwX3JlY3Z2X3Ju
KSk7CisJCW4gPSB1c3JzY3RwX3JlY3Z2KHNvY2ssIGJ1ZiwgQlVGRkVSU0laRSwgKHN0cnVjdCBz
b2NrYWRkciAqKSAmYWRkciwgJmxlbiwgKHZvaWQgKikmcm4sCisJCQkJCSAmaW5mb2xlbiwgJmlu
Zm90eXBlLCAmZmxhZ3MpOworCisJCWlmIChuID4gMCkgeworI2lmZGVmIF9XSU4zMgorCQkJX3dy
aXRlKF9maWxlbm8oc3Rkb3V0KSwgYnVmLCAodW5zaWduZWQgaW50KW4pOworI2Vsc2UKKwkJCWlm
ICh3cml0ZShmaWxlbm8oc3Rkb3V0KSwgYnVmLCBuKSA8IDApIHsKKwkJCQlwZXJyb3IoIndyaXRl
Iik7CisJCQl9CisjZW5kaWYKKwkJfSBlbHNlIGlmIChuID09IDApIHsKKwkJCWRvbmUgPSAxOwor
CQkJaW5wdXRfZG9uZSA9IDE7CisJCQlmcmVlKGJ1Zik7CisJCQlicmVhazsKKwkJfSBlbHNlIHsK
KwkJCXBlcnJvcigiXG51c3JzY3RwX3JlY3Z2Iik7CisJCQlmcmVlIChidWYpOworCQkJYnJlYWs7
CisJCX0KKwkJZnJlZShidWYpOworCQlldmVudHMgPSB1c3JzY3RwX2dldF9ldmVudHMoc29jayk7
CisJfQorCXJldHVybjsKK30KKworaW50CittYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7
CisJc3RydWN0IHNvY2tldCAqc29jazsKKwlzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsICphZGRyczsK
KwlzdHJ1Y3Qgc29ja2FkZHJfaW4gYWRkcjQ7CisJc3RydWN0IHNvY2thZGRyX2luNiBhZGRyNjsK
KwlzdHJ1Y3Qgc2N0cF91ZHBlbmNhcHMgZW5jYXBzOworCXN0cnVjdCBzY3Rwc3RhdCBzdGF0Owor
CWNoYXIgYnVmZmVyWzIwMF07CisJaW50IGksIG47CisKKwlpZiAoYXJnYyA+IDQpIHsKKwkJdXNy
c2N0cF9pbml0KGF0b2koYXJndls0XSksIE5VTEwsIGRlYnVnX3ByaW50Zl9zdGFjayk7CisJfSBl
bHNlIHsKKwkJdXNyc2N0cF9pbml0KDk4OTksIE5VTEwsIGRlYnVnX3ByaW50Zl9zdGFjayk7CisJ
fQorI2lmZGVmIFNDVFBfREVCVUcKKwl1c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9kZWJ1Z19vbihT
Q1RQX0RFQlVHX05PTkUpOworI2VuZGlmCisJdXNyc2N0cF9zeXNjdGxfc2V0X3NjdHBfYmxhY2to
b2xlKDIpOworCXVzcnNjdHBfc3lzY3RsX3NldF9zY3RwX25vX2NzdW1fb25fbG9vcGJhY2soMCk7
CisKKwlpZiAoKHNvY2sgPSB1c3JzY3RwX3NvY2tldChBRl9JTkVUNiwgU09DS19TVFJFQU0sIElQ
UFJPVE9fU0NUUCwgTlVMTCwgTlVMTCwgMCwgTlVMTCkpID09IE5VTEwpIHsKKwkJcGVycm9yKCJ1
c3JzY3RwX3NvY2tldCIpOworCQlleGl0KDEpOworCX0KKworCXVzcnNjdHBfc2V0X25vbl9ibG9j
a2luZyhzb2NrLCAxKTsKKworCWlmIChhcmdjID4gMykgeworCQltZW1zZXQoKHZvaWQgKikmYWRk
cjYsIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSk7CisjaWZkZWYgSEFWRV9TSU42X0xF
TgorCQlhZGRyNi5zaW42X2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KTsKKyNlbmRp
ZgorCQlhZGRyNi5zaW42X2ZhbWlseSA9IEFGX0lORVQ2OworCQlhZGRyNi5zaW42X3BvcnQgPSBo
dG9ucyhhdG9pKGFyZ3ZbM10pKTsKKwkJYWRkcjYuc2luNl9hZGRyID0gaW42YWRkcl9hbnk7CisJ
CWlmICh1c3JzY3RwX2JpbmQoc29jaywgKHN0cnVjdCBzb2NrYWRkciAqKSZhZGRyNiwgc2l6ZW9m
KHN0cnVjdCBzb2NrYWRkcl9pbjYpKSA8IDApIHsKKwkJCXBlcnJvcigiYmluZCIpOworCQkJdXNy
c2N0cF9jbG9zZShzb2NrKTsKKwkJCWV4aXQoMSk7CisJCX0KKwl9CisJaWYgKGFyZ2MgPiA1KSB7
CisJCW1lbXNldCgmZW5jYXBzLCAwLCBzaXplb2Yoc3RydWN0IHNjdHBfdWRwZW5jYXBzKSk7CisJ
CWVuY2Fwcy5zdWVfYWRkcmVzcy5zc19mYW1pbHkgPSBBRl9JTkVUNjsKKwkJZW5jYXBzLnN1ZV9w
b3J0ID0gaHRvbnMoYXRvaShhcmd2WzVdKSk7CisJCWlmICh1c3JzY3RwX3NldHNvY2tvcHQoc29j
aywgSVBQUk9UT19TQ1RQLCBTQ1RQX1JFTU9URV9VRFBfRU5DQVBTX1BPUlQsIChjb25zdCB2b2lk
KikmZW5jYXBzLCAoc29ja2xlbl90KXNpemVvZihzdHJ1Y3Qgc2N0cF91ZHBlbmNhcHMpKSA8IDAp
IHsKKwkJCXBlcnJvcigic2V0c29ja29wdCIpOworCQkJdXNyc2N0cF9jbG9zZShzb2NrKTsKKwkJ
CWV4aXQoMSk7CisJCX0KKwl9CisKKwltZW1zZXQoKHZvaWQgKikmYWRkcjQsIDAsIHNpemVvZihz
dHJ1Y3Qgc29ja2FkZHJfaW4pKTsKKwltZW1zZXQoKHZvaWQgKikmYWRkcjYsIDAsIHNpemVvZihz
dHJ1Y3Qgc29ja2FkZHJfaW42KSk7CisjaWZkZWYgSEFWRV9TSU5fTEVOCisJYWRkcjQuc2luX2xl
biA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pOworI2VuZGlmCisjaWZkZWYgSEFWRV9TSU42
X0xFTgorCWFkZHI2LnNpbjZfbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpOworI2Vu
ZGlmCisJYWRkcjQuc2luX2ZhbWlseSA9IEFGX0lORVQ7CisJYWRkcjYuc2luNl9mYW1pbHkgPSBB
Rl9JTkVUNjsKKwlhZGRyNC5zaW5fcG9ydCA9IGh0b25zKGF0b2koYXJndlsyXSkpOworCWFkZHI2
LnNpbjZfcG9ydCA9IGh0b25zKGF0b2koYXJndlsyXSkpOworCWlmIChpbmV0X3B0b24oQUZfSU5F
VDYsIGFyZ3ZbMV0sICZhZGRyNi5zaW42X2FkZHIpID09IDEpIHsKKwkJaWYgKHVzcnNjdHBfY29u
bmVjdChzb2NrLCAoc3RydWN0IHNvY2thZGRyICopJmFkZHI2LCBzaXplb2Yoc3RydWN0IHNvY2th
ZGRyX2luNikpIDwgMCkgeworCQkJcGVycm9yKCJ1c3JzY3RwX2Nvbm5lY3QiKTsKKwkJfQorCX0g
ZWxzZSBpZiAoaW5ldF9wdG9uKEFGX0lORVQsIGFyZ3ZbMV0sICZhZGRyNC5zaW5fYWRkcikgPT0g
MSkgeworCQlpZiAodXNyc2N0cF9jb25uZWN0KHNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikmYWRk
cjQsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKSA8IDApIHsKKwkJCXBlcnJvcigidXNyc2N0
cF9jb25uZWN0Iik7CisJCX0KKwl9IGVsc2UgeworCQlwcmludGYoIklsbGVnYWwgZGVzdGluYXRp
b24gYWRkcmVzcy5cbiIpOworCX0KKworCXVzcnNjdHBfc2V0X3VwY2FsbChzb2NrLCBoYW5kbGVf
dXBjYWxsLCBOVUxMKTsKKwlpZiAoKG4gPSB1c3JzY3RwX2dldGxhZGRycyhzb2NrLCAwLCAmYWRk
cnMpKSA8IDApIHsKKwkJcGVycm9yKCJ1c3JzY3RwX2dldGxhZGRycyIpOworCX0gZWxzZSB7CisJ
CWFkZHIgPSBhZGRyczsKKwkJcHJpbnRmKCJMb2NhbCBhZGRyZXNzZXM6ICIpOworCQlmb3IgKGkg
PSAwOyBpIDwgbjsgaSsrKSB7CisJCQlpZiAoaSA+IDApIHsKKwkJCQlwcmludGYoIiVzIiwgIiwg
Iik7CisJCQl9CisJCQlzd2l0Y2ggKGFkZHItPnNhX2ZhbWlseSkgeworCQkJY2FzZSBBRl9JTkVU
OgorCQkJeworCQkJCXN0cnVjdCBzb2NrYWRkcl9pbiAqc2luOworCQkJCWNoYXIgYnVmW0lORVRf
QUREUlNUUkxFTl07CisJCQkJY29uc3QgY2hhciAqbmFtZTsKKworCQkJCXNpbiA9IChzdHJ1Y3Qg
c29ja2FkZHJfaW4gKilhZGRyOworCQkJCW5hbWUgPSBpbmV0X250b3AoQUZfSU5FVCwgJnNpbi0+
c2luX2FkZHIsIGJ1ZiwgSU5FVF9BRERSU1RSTEVOKTsKKwkJCQlwcmludGYoIiVzIiwgbmFtZSk7
CisjaWZuZGVmIEhBVkVfU0FfTEVOCisJCQkJYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHIgKikoKGNh
ZGRyX3QpYWRkciArIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKKyNlbmRpZgorCQkJCWJy
ZWFrOworCQkJfQorCQkJY2FzZSBBRl9JTkVUNjoKKwkJCXsKKwkJCQlzdHJ1Y3Qgc29ja2FkZHJf
aW42ICpzaW42OworCQkJCWNoYXIgYnVmW0lORVQ2X0FERFJTVFJMRU5dOworCQkJCWNvbnN0IGNo
YXIgKm5hbWU7CisKKwkJCQlzaW42ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilhZGRyOworCQkJ
CW5hbWUgPSBpbmV0X250b3AoQUZfSU5FVDYsICZzaW42LT5zaW42X2FkZHIsIGJ1ZiwgSU5FVDZf
QUREUlNUUkxFTik7CisJCQkJcHJpbnRmKCIlcyIsIG5hbWUpOworI2lmbmRlZiBIQVZFX1NBX0xF
TgorCQkJCWFkZHIgPSAoc3RydWN0IHNvY2thZGRyICopKChjYWRkcl90KWFkZHIgKyBzaXplb2Yo
c3RydWN0IHNvY2thZGRyX2luNikpOworI2VuZGlmCisJCQkJYnJlYWs7CisJCQl9CisJCQlkZWZh
dWx0OgorCQkJCWJyZWFrOworCQkJfQorI2lmZGVmIEhBVkVfU0FfTEVOCisJCQlhZGRyID0gKHN0
cnVjdCBzb2NrYWRkciAqKSgoY2FkZHJfdClhZGRyICsgYWRkci0+c2FfbGVuKTsKKyNlbmRpZgor
CQl9CisJCXByaW50ZigiLlxuIik7CisJCXVzcnNjdHBfZnJlZWxhZGRycyhhZGRycyk7CisJfQor
CWlmICgobiA9IHVzcnNjdHBfZ2V0cGFkZHJzKHNvY2ssIDAsICZhZGRycykpIDwgMCkgeworCQlw
ZXJyb3IoInVzcnNjdHBfZ2V0cGFkZHJzIik7CisJfSBlbHNlIHsKKwkJYWRkciA9IGFkZHJzOwor
CQlwcmludGYoIlBlZXIgYWRkcmVzc2VzOiAiKTsKKwkJZm9yIChpID0gMDsgaSA8IG47IGkrKykg
eworCQkJaWYgKGkgPiAwKSB7CisJCQkJcHJpbnRmKCIlcyIsICIsICIpOworCQkJfQorCQkJc3dp
dGNoIChhZGRyLT5zYV9mYW1pbHkpIHsKKwkJCWNhc2UgQUZfSU5FVDoKKwkJCXsKKwkJCQlzdHJ1
Y3Qgc29ja2FkZHJfaW4gKnNpbjsKKwkJCQljaGFyIGJ1ZltJTkVUX0FERFJTVFJMRU5dOworCQkJ
CWNvbnN0IGNoYXIgKm5hbWU7CisKKwkJCQlzaW4gPSAoc3RydWN0IHNvY2thZGRyX2luICopYWRk
cjsKKwkJCQluYW1lID0gaW5ldF9udG9wKEFGX0lORVQsICZzaW4tPnNpbl9hZGRyLCBidWYsIElO
RVRfQUREUlNUUkxFTik7CisJCQkJcHJpbnRmKCIlcyIsIG5hbWUpOworI2lmbmRlZiBIQVZFX1NB
X0xFTgorCQkJCWFkZHIgPSAoc3RydWN0IHNvY2thZGRyICopKChjYWRkcl90KWFkZHIgKyBzaXpl
b2Yoc3RydWN0IHNvY2thZGRyX2luKSk7CisjZW5kaWYKKwkJCQlicmVhazsKKwkJCX0KKwkJCWNh
c2UgQUZfSU5FVDY6CisJCQl7CisJCQkJc3RydWN0IHNvY2thZGRyX2luNiAqc2luNjsKKwkJCQlj
aGFyIGJ1ZltJTkVUNl9BRERSU1RSTEVOXTsKKwkJCQljb25zdCBjaGFyICpuYW1lOworCisJCQkJ
c2luNiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopYWRkcjsKKwkJCQluYW1lID0gaW5ldF9udG9w
KEFGX0lORVQ2LCAmc2luNi0+c2luNl9hZGRyLCBidWYsIElORVQ2X0FERFJTVFJMRU4pOworCQkJ
CXByaW50ZigiJXMiLCBuYW1lKTsKKyNpZm5kZWYgSEFWRV9TQV9MRU4KKwkJCQlhZGRyID0gKHN0
cnVjdCBzb2NrYWRkciAqKSgoY2FkZHJfdClhZGRyICsgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9p
bjYpKTsKKyNlbmRpZgorCQkJCWJyZWFrOworCQkJfQorCQkJZGVmYXVsdDoKKwkJCQlicmVhazsK
KwkJCX0KKyNpZmRlZiBIQVZFX1NBX0xFTgorCQkJYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHIgKiko
KGNhZGRyX3QpYWRkciArIGFkZHItPnNhX2xlbik7CisjZW5kaWYKKwkJfQorCQlwcmludGYoIi5c
biIpOworCQl1c3JzY3RwX2ZyZWVwYWRkcnMoYWRkcnMpOworCX0KKwl3aGlsZSAoIWRvbmUgJiYg
IWlucHV0X2RvbmUpIHsKKwkJaWYgKGlucHV0QXZhaWxhYmxlKCkpIHsKKwkJCWlmIChmZ2V0cyhi
dWZmZXIsIHNpemVvZihidWZmZXIpLCBzdGRpbikgIT0gTlVMTCkgeworCQkJCWJ1ZmZlcltzdHJs
ZW4oYnVmZmVyKV0gPSAnXDAnOworCQkJCXVzcnNjdHBfc2VuZHYoc29jaywgYnVmZmVyLCBzdHJs
ZW4oYnVmZmVyKSwgTlVMTCwgMCwgTlVMTCwgMCwgU0NUUF9TRU5EVl9OT0lORk8sIDApOworCQkJ
fSBlbHNlIHsKKwkJCQlpZiAodXNyc2N0cF9zaHV0ZG93bihzb2NrLCBTSFVUX1dSKSA8IDApIHsK
KwkJCQkJcGVycm9yKCJ1c3JzY3RwX3NodXRkb3duIik7CisJCQkJfQorCQkJCWJyZWFrOworCQkJ
fQorCQl9CisJfQorI2lmZGVmIF9XSU4zMgorCVNsZWVwKDEwMDApOworI2Vsc2UKKwlzbGVlcCgx
KTsKKyNlbmRpZgorCXVzcnNjdHBfY2xvc2Uoc29jayk7CisKKwl1c3JzY3RwX2dldF9zdGF0KCZz
dGF0KTsKKwlwcmludGYoIk51bWJlciBvZiBwYWNrZXRzIChzZW50L3JlY2VpdmVkKTogKCV1LyV1
KS5cbiIsCisJICAgICAgIHN0YXQuc2N0cHNfb3V0cGFja2V0cywgc3RhdC5zY3Rwc19pbnBhY2tl
dHMpOworCXdoaWxlICh1c3JzY3RwX2ZpbmlzaCgpICE9IDApIHsKKyNpZmRlZiBfV0lOMzIKKwkJ
U2xlZXAoMTAwMCk7CisjZWxzZQorCQlzbGVlcCgxKTsKKyNlbmRpZgorCX0KKwlwcmludGYoIkNs
aWVudCBmaW5pc2hlZFxuIik7CisJcmV0dXJuKDApOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIv
cHJvZ3JhbXMvZGF5dGltZV9zZXJ2ZXIuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2RheXRpbWVfc2Vy
dmVyLmMKaW5kZXggMzVjYWRmNTNkMTE5MDNlMWQ5NGFmODI5NWNhMWYyMDI3NTZiNzJkMy4uY2Fi
Mjc1NTQwMTg0ZmRkNjdhMDI1Mzg3ODgyOTBlOTUwMTJhYjk3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBs
aWIvcHJvZ3JhbXMvZGF5dGltZV9zZXJ2ZXIuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9kYXl0
aW1lX3NlcnZlci5jCkBAIC01MiwyMSArNTIsMTIgQEAKICNpbmNsdWRlIDxhcnBhL2luZXQuaD4K
ICNlbmRpZgogI2luY2x1ZGUgPHVzcnNjdHAuaD4KKyNpbmNsdWRlICJwcm9ncmFtc19oZWxwZXIu
aCIKIAogI2RlZmluZSBQT1JUIDEzCiAjZGVmaW5lIERBWVRJTUVfUFBJRCA0MAogI2RlZmluZSBT
TEVFUCAxCiAKLXZvaWQKLWRlYnVnX3ByaW50Zihjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKLXsK
LQl2YV9saXN0IGFwOwotCi0JdmFfc3RhcnQoYXAsIGZvcm1hdCk7Ci0JdnByaW50Zihmb3JtYXQs
IGFwKTsKLQl2YV9lbmQoYXApOwotfQotCiBpbnQKIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb
XSkKIHsKQEAgLTc5LDE0ICs3MCwxNSBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJ
c3RydWN0IHNjdHBfc25kaW5mbyBzbmRpbmZvOwogCiAJaWYgKGFyZ2MgPiAxKSB7Ci0JCXVzcnNj
dHBfaW5pdChhdG9pKGFyZ3ZbMV0pLCBOVUxMLCBkZWJ1Z19wcmludGYpOworCQl1c3JzY3RwX2lu
aXQoYXRvaShhcmd2WzFdKSwgTlVMTCwgZGVidWdfcHJpbnRmX3N0YWNrKTsKIAl9IGVsc2Ugewot
CQl1c3JzY3RwX2luaXQoOTg5OSwgTlVMTCwgZGVidWdfcHJpbnRmKTsKKwkJdXNyc2N0cF9pbml0
KDk4OTksIE5VTEwsIGRlYnVnX3ByaW50Zl9zdGFjayk7CiAJfQogI2lmZGVmIFNDVFBfREVCVUcK
IAl1c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9kZWJ1Z19vbihTQ1RQX0RFQlVHX05PTkUpOwogI2Vu
ZGlmCiAJdXNyc2N0cF9zeXNjdGxfc2V0X3NjdHBfYmxhY2tob2xlKDIpOworCXVzcnNjdHBfc3lz
Y3RsX3NldF9zY3RwX25vX2NzdW1fb25fbG9vcGJhY2soMCk7CiAKIAlpZiAoKHNvY2sgPSB1c3Jz
Y3RwX3NvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgSVBQUk9UT19TQ1RQLCBOVUxMLCBOVUxM
LCAwLCBOVUxMKSkgPT0gTlVMTCkgewogCQlwZXJyb3IoInVzcnNjdHBfc29ja2V0Iik7CkBAIC0x
MTksMTAgKzExMSwxMiBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCX0KIAkJdGlt
ZSgmbm93KTsKICNpZmRlZiBfV0lOMzIKLQkJX3NucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZl
ciksICIlcyIsIGN0aW1lKCZub3cpKTsKKwkJaWYgKF9zbnByaW50ZihidWZmZXIsIHNpemVvZihi
dWZmZXIpLCAiJXMiLCBjdGltZSgmbm93KSkgPCAwKSB7CiAjZWxzZQotCQlzbnByaW50ZihidWZm
ZXIsIHNpemVvZihidWZmZXIpLCAiJXMiLCBjdGltZSgmbm93KSk7CisJCWlmIChzbnByaW50Zihi
dWZmZXIsIHNpemVvZihidWZmZXIpLCAiJXMiLCBjdGltZSgmbm93KSkgPCAwKSB7CiAjZW5kaWYK
KwkJCWJ1ZmZlclswXSA9ICdcMCc7CisJCX0KIAkJc25kaW5mby5zbmRfc2lkID0gMDsKIAkJc25k
aW5mby5zbmRfZmxhZ3MgPSAwOwogCQlzbmRpbmZvLnNuZF9wcGlkID0gaHRvbmwoREFZVElNRV9Q
UElEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2RheXRpbWVfc2VydmVyX3VwY2Fs
bC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3Jz
Y3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvZGF5dGltZV9zZXJ2ZXJfdXBjYWxsLmMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODcwMTdjZjJmZTQ4MzAxNTZhZTczNDkwNWE4NjkzNzRlYTNkNWVjYgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNy
c2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2RheXRpbWVfc2VydmVyX3VwY2FsbC5jCkBAIC0wLDAg
KzEsMTUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTMgTWljaGFlbCBUdWV4ZW4K
KyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUg
bmFtZSBvZiB0aGUgcHJvamVjdCBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAq
ICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUFJPSkVD
VCBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELglJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
UFJPSkVDVCBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAor
ICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QK
KyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgor
ICovCisKKy8qCisgKiBVc2FnZTogZGF5dGltZV9zZXJ2ZXJfdXBjYWxsIFtsb2NhbF9lbmNhcHNf
cG9ydF0gW3JlbW90ZV9lbmNhcHNfcG9ydF0KKyAqLworCisjaWZkZWYgX1dJTjMyCisjZGVmaW5l
IF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTCisjZW5kaWYKKyNpbmNsdWRlIDxzdGRpby5oPgorI2lu
Y2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGFyZy5o
PgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpZm5kZWYgX1dJ
TjMyCisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2luY2x1
ZGUgPG5ldGluZXQvaW4uaD4KKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyNlbmRpZgorI2luY2x1
ZGUgPHVzcnNjdHAuaD4KKyNpbmNsdWRlICJwcm9ncmFtc19oZWxwZXIuaCIKKworI2RlZmluZSBE
QVlUSU1FX1BQSUQgNDAKKyNkZWZpbmUgUE9SVCAxMworCitzdGF0aWMgdm9pZAoraGFuZGxlX2Fj
Y2VwdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCB2b2lkICpkYXRhLCBpbnQgZmxhZ3MpCit7CisJc3Ry
dWN0IHNvY2tldCAqY29ubl9zb2NrOworCWNoYXIgYnVmZmVyWzgwXTsKKwl0aW1lX3Qgbm93Owor
CXNvY2tsZW5fdCBhZGRyX2xlbiA9IDA7CisJc3RydWN0IHNjdHBfc25kaW5mbyBzbmRpbmZvOwor
CisJaWYgKCgoY29ubl9zb2NrID0gdXNyc2N0cF9hY2NlcHQoc29jaywgTlVMTCwgJmFkZHJfbGVu
KSkgPT0gTlVMTCkKKwkgICAgJiYgKGVycm5vICE9IEVJTlBST0dSRVNTKSkgeworCQlwZXJyb3Io
InVzcnNjdHBfYWNjZXB0Iik7CisJCXJldHVybjsKKwl9CisJdGltZSgmbm93KTsKKyNpZmRlZiBf
V0lOMzIKKwkJaWYgKF9zbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAiJXMiLCBjdGlt
ZSgmbm93KSkgPCAwKSB7CisjZWxzZQorCQlpZiAoc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVm
ZmVyKSwgIiVzIiwgY3RpbWUoJm5vdykpIDwgMCkgeworI2VuZGlmCisJCQlidWZmZXJbMF0gPSAn
XDAnOworCQl9CisJCXNuZGluZm8uc25kX3NpZCA9IDA7CisJCXNuZGluZm8uc25kX2ZsYWdzID0g
MDsKKwkJc25kaW5mby5zbmRfcHBpZCA9IGh0b25sKERBWVRJTUVfUFBJRCk7CisJCXNuZGluZm8u
c25kX2NvbnRleHQgPSAwOworCQlzbmRpbmZvLnNuZF9hc3NvY19pZCA9IDA7CisJCXVzcnNjdHBf
c2VuZHYoY29ubl9zb2NrLCBidWZmZXIsIHN0cmxlbihidWZmZXIpLCBOVUxMLCAwLCAodm9pZCAq
KSZzbmRpbmZvLAorCQkgICAgICAgICAgICAgIChzb2NrbGVuX3Qpc2l6ZW9mKHN0cnVjdCBzY3Rw
X3NuZGluZm8pLCBTQ1RQX1NFTkRWX1NORElORk8sIDApOworCQl1c3JzY3RwX2Nsb3NlKGNvbm5f
c29jayk7Cit9CisKK2ludAorbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCXN0cnVj
dCBzb2NrZXQgKnNvY2s7CisJc3RydWN0IHNvY2thZGRyX2luIGFkZHI7CisJc3RydWN0IHNjdHBf
dWRwZW5jYXBzIGVuY2FwczsKKworCWlmIChhcmdjID4gMSkgeworCQl1c3JzY3RwX2luaXQoYXRv
aShhcmd2WzFdKSwgTlVMTCwgZGVidWdfcHJpbnRmX3N0YWNrKTsKKwl9IGVsc2UgeworCQl1c3Jz
Y3RwX2luaXQoOTg5OSwgTlVMTCwgZGVidWdfcHJpbnRmX3N0YWNrKTsKKwl9CisjaWZkZWYgU0NU
UF9ERUJVRworCXVzcnNjdHBfc3lzY3RsX3NldF9zY3RwX2RlYnVnX29uKFNDVFBfREVCVUdfTk9O
RSk7CisjZW5kaWYKKwl1c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9ibGFja2hvbGUoMik7CisJdXNy
c2N0cF9zeXNjdGxfc2V0X3NjdHBfbm9fY3N1bV9vbl9sb29wYmFjaygwKTsKKworCWlmICgoc29j
ayA9IHVzcnNjdHBfc29ja2V0KEFGX0lORVQsIFNPQ0tfU1RSRUFNLCBJUFBST1RPX1NDVFAsIE5V
TEwsIE5VTEwsIDAsIE5VTEwpKSA9PSBOVUxMKSB7CisJCXBlcnJvcigidXNyc2N0cF9zb2NrZXQi
KTsKKwl9CisJdXNyc2N0cF9zZXRfbm9uX2Jsb2NraW5nKHNvY2ssIDEpOworCWlmIChhcmdjID4g
MikgeworCQltZW1zZXQoJmVuY2FwcywgMCwgc2l6ZW9mKHN0cnVjdCBzY3RwX3VkcGVuY2Fwcykp
OworCQllbmNhcHMuc3VlX2FkZHJlc3Muc3NfZmFtaWx5ID0gQUZfSU5FVDsKKwkJZW5jYXBzLnN1
ZV9wb3J0ID0gaHRvbnMoYXRvaShhcmd2WzJdKSk7CisJCWlmICh1c3JzY3RwX3NldHNvY2tvcHQo
c29jaywgSVBQUk9UT19TQ1RQLCBTQ1RQX1JFTU9URV9VRFBfRU5DQVBTX1BPUlQsIChjb25zdCB2
b2lkKikmZW5jYXBzLCAoc29ja2xlbl90KXNpemVvZihzdHJ1Y3Qgc2N0cF91ZHBlbmNhcHMpKSA8
IDApIHsKKwkJCXBlcnJvcigic2V0c29ja29wdCIpOworCQl9CisJfQorCW1lbXNldCgodm9pZCAq
KSZhZGRyLCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7CisjaWZkZWYgSEFWRV9TSU5f
TEVOCisJYWRkci5zaW5fbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7CisjZW5kaWYK
KwlhZGRyLnNpbl9mYW1pbHkgPSBBRl9JTkVUOworCWFkZHIuc2luX3BvcnQgPSBodG9ucyhQT1JU
KTsKKwlhZGRyLnNpbl9hZGRyLnNfYWRkciA9IGh0b25sKElOQUREUl9BTlkpOworCWlmICh1c3Jz
Y3RwX2JpbmQoc29jaywgKHN0cnVjdCBzb2NrYWRkciAqKSZhZGRyLCBzaXplb2Yoc3RydWN0IHNv
Y2thZGRyX2luKSkgPCAwKSB7CisJCXBlcnJvcigidXNyc2N0cF9iaW5kIik7CisJfQorCWlmICh1
c3JzY3RwX2xpc3Rlbihzb2NrLCAxKSA8IDApIHsKKwkJcGVycm9yKCJ1c3JzY3RwX2xpc3RlbiIp
OworCX0KKworCXVzcnNjdHBfc2V0X3VwY2FsbChzb2NrLCBoYW5kbGVfYWNjZXB0LCBOVUxMKTsK
KworCXdoaWxlICgxKSB7CisjaWZkZWYgX1dJTjMyCisJCVNsZWVwKDEqMTAwMCk7CisjZWxzZQor
CQlzbGVlcCgxKTsKKyNlbmRpZgorCX0KKwl1c3JzY3RwX2Nsb3NlKHNvY2spOworCXdoaWxlICh1
c3JzY3RwX2ZpbmlzaCgpICE9IDApIHsKKyNpZmRlZiBfV0lOMzIKKwkJU2xlZXAoMTAwMCk7Cisj
ZWxzZQorCQlzbGVlcCgxKTsKKyNlbmRpZgorCX0KKwlyZXR1cm4gKDApOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvcHJvZ3JhbXMvZGlzY2FyZF9zZXJ2ZXIuYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1z
L2Rpc2NhcmRfc2VydmVyLmMKaW5kZXggMzk4NDZkZGVkMDRiOTkwOWExOGMzNDAzYjY4ZWI2YWI2
N2RiZDA1My4uNDg3MDg5ZDUzZTdkNjhlYzIwYTM2ODhjMjMwMGNmNTRiOGYzNDYxNSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3Jz
Y3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvZGlzY2FyZF9zZXJ2ZXIuYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9w
cm9ncmFtcy9kaXNjYXJkX3NlcnZlci5jCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSA8YXJw
YS9pbmV0Lmg+CiAjZW5kaWYKICNpbmNsdWRlIDx1c3JzY3RwLmg+CisjaW5jbHVkZSAicHJvZ3Jh
bXNfaGVscGVyLmgiCiAKICNkZWZpbmUgUE9SVCA5CiAjZGVmaW5lIEJVRkZFUl9TSVpFIDEwMjQw
CkBAIC04NSwxNSArODYsMTcgQEAgcmVjZWl2ZV9jYihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCB1bmlv
biBzY3RwX3NvY2tzdG9yZSBhZGRyLCB2b2lkICpkYXRhLAogI2VuZGlmCiAJCQljYXNlIEFGX0NP
Tk46CiAjaWZkZWYgX1dJTjMyCi0JCQkJX3NucHJpbnRmKG5hbWVidWYsIElORVQ2X0FERFJTVFJM
RU4sICIlcCIsIGFkZHIuc2Nvbm4uc2Nvbm5fYWRkcik7CisJCQkJaWYgKF9zbnByaW50ZihuYW1l
YnVmLCBJTkVUNl9BRERSU1RSTEVOLCAiJXAiLCBhZGRyLnNjb25uLnNjb25uX2FkZHIpIDwgMCkg
ewogI2Vsc2UKLQkJCQlzbnByaW50ZihuYW1lYnVmLCBJTkVUNl9BRERSU1RSTEVOLCAiJXAiLCBh
ZGRyLnNjb25uLnNjb25uX2FkZHIpOworCQkJCWlmIChzbnByaW50ZihuYW1lYnVmLCBJTkVUNl9B
RERSU1RSTEVOLCAiJXAiLCBhZGRyLnNjb25uLnNjb25uX2FkZHIpIDwgMCkgewogI2VuZGlmCisJ
CQkJCW5hbWVidWZbMF0gPSAnXDAnOworCQkJCX0KIAkJCQluYW1lID0gbmFtZWJ1ZjsKIAkJCQlw
b3J0ID0gbnRvaHMoYWRkci5zY29ubi5zY29ubl9wb3J0KTsKIAkJCQlicmVhazsKIAkJCWRlZmF1
bHQ6Ci0JCQkJbmFtZSA9IE5VTEw7CisJCQkJbmFtZSA9ICI/Pz8iOwogCQkJCXBvcnQgPSAwOwog
CQkJCWJyZWFrOwogCQkJfQpAQCAtMTEyLDE2ICsxMTUsNiBAQCByZWNlaXZlX2NiKHN0cnVjdCBz
b2NrZXQgKnNvY2ssIHVuaW9uIHNjdHBfc29ja3N0b3JlIGFkZHIsIHZvaWQgKmRhdGEsCiAJcmV0
dXJuICgxKTsKIH0KIAotdm9pZAotZGVidWdfcHJpbnRmKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4u
KQotewotCXZhX2xpc3QgYXA7Ci0KLQl2YV9zdGFydChhcCwgZm9ybWF0KTsKLQl2cHJpbnRmKGZv
cm1hdCwgYXApOwotCXZhX2VuZChhcCk7Ci19Ci0KIGludAogbWFpbihpbnQgYXJnYywgY2hhciAq
YXJndltdKQogewpAQCAtMTQ4LDE0ICsxNDEsMTUgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJn
dltdKQogCXVuc2lnbmVkIGludCBpbmZvdHlwZTsKIAogCWlmIChhcmdjID4gMSkgewotCQl1c3Jz
Y3RwX2luaXQoYXRvaShhcmd2WzFdKSwgTlVMTCwgZGVidWdfcHJpbnRmKTsKKwkJdXNyc2N0cF9p
bml0KGF0b2koYXJndlsxXSksIE5VTEwsIGRlYnVnX3ByaW50Zl9zdGFjayk7CiAJfSBlbHNlIHsK
LQkJdXNyc2N0cF9pbml0KDk4OTksIE5VTEwsIGRlYnVnX3ByaW50Zik7CisJCXVzcnNjdHBfaW5p
dCg5ODk5LCBOVUxMLCBkZWJ1Z19wcmludGZfc3RhY2spOwogCX0KICNpZmRlZiBTQ1RQX0RFQlVH
CiAJdXNyc2N0cF9zeXNjdGxfc2V0X3NjdHBfZGVidWdfb24oU0NUUF9ERUJVR19BTEwpOwogI2Vu
ZGlmCiAJdXNyc2N0cF9zeXNjdGxfc2V0X3NjdHBfYmxhY2tob2xlKDIpOworCXVzcnNjdHBfc3lz
Y3RsX3NldF9zY3RwX25vX2NzdW1fb25fbG9vcGJhY2soMCk7CiAKIAlpZiAoKHNvY2sgPSB1c3Jz
Y3RwX3NvY2tldChBRl9JTkVUNiwgU09DS19TRVFQQUNLRVQsIElQUFJPVE9fU0NUUCwgdXNlX2Ni
P3JlY2VpdmVfY2I6TlVMTCwgTlVMTCwgMCwgTlVMTCkpID09IE5VTEwpIHsKIAkJcGVycm9yKCJ1
c3JzY3RwX3NvY2tldCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvZGlzY2FyZF9z
ZXJ2ZXJfdXBjYWxsLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9kaXNjYXJkX3NlcnZlcl91cGNhbGwu
YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44ODFiZjBkOTRlZTAwMzgxNjVmZjEwYWM1YThjYmZmZGU2ODk2OGM2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvZGlzY2FyZF9zZXJ2ZXJfdXBjYWxs
LmMKQEAgLTAsMCArMSwyMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMyBNaWNo
YWVsIFR1ZXhlbgorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBwcm9qZWN0IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRy
aWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBQUk9KRUNUIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuCUlOIE5PIEVWRU5U
IFNIQUxMIFRIRSBQUk9KRUNUIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VD
SCBEQU1BR0UuCisgKi8KKworLyoKKyAqIFVzYWdlOiBkaXNjYXJkX3NlcnZlcl91cGNhbGwgW2xv
Y2FsX2VuY2Fwc19wb3J0XSBbcmVtb3RlX2VuY2Fwc19wb3J0XQorICovCisKKyNpZmRlZiBfV0lO
MzIKKyNkZWZpbmUgX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MKKyNlbmRpZgorI2luY2x1ZGUgPHN0
ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVk
ZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaWZuZGVmIF9XSU4zMgorI2lu
Y2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRlIDxuZXRp
bmV0L2luLmg+CisjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisjZW5kaWYKKyNpbmNsdWRlIDx1c3Jz
Y3RwLmg+CisjaW5jbHVkZSAicHJvZ3JhbXNfaGVscGVyLmgiCisKKyNkZWZpbmUgQlVGRkVSU0la
RSAxMDI0MAorI2RlZmluZSBQT1JUIDkKKworCitzdGF0aWMgdm9pZAoraGFuZGxlX3VwY2FsbChz
dHJ1Y3Qgc29ja2V0ICpzb2NrLCB2b2lkICpkYXRhLCBpbnQgZmxncykKK3sKKwljaGFyIG5hbWVi
dWZbSU5FVDZfQUREUlNUUkxFTl07CisJY29uc3QgY2hhciAqbmFtZTsKKwl1aW50MTZfdCBwb3J0
OworCWNoYXIgKmJ1ZjsKKwlpbnQgZXZlbnRzOworCisJd2hpbGUgKChldmVudHMgPSB1c3JzY3Rw
X2dldF9ldmVudHMoc29jaykpICYmIChldmVudHMgJiBTQ1RQX0VWRU5UX1JFQUQpKSB7CisJCXN0
cnVjdCBzY3RwX3JlY3Z2X3JuIHJuOworCQlzc2l6ZV90IG47CisJCXN0cnVjdCBzb2NrYWRkcl9z
dG9yYWdlIGFkZHI7CisJCWJ1ZiA9IG1hbGxvYyhCVUZGRVJTSVpFKTsKKwkJaW50IGZsYWdzID0g
MDsKKwkJc29ja2xlbl90IGxlbiA9IChzb2NrbGVuX3Qpc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9z
dG9yYWdlKTsKKwkJdW5zaWduZWQgaW50IGluZm90eXBlID0gMDsKKwkJc29ja2xlbl90IGluZm9s
ZW4gPSBzaXplb2Yoc3RydWN0IHNjdHBfcmVjdnZfcm4pOworCQltZW1zZXQoJnJuLCAwLCBzaXpl
b2Yoc3RydWN0IHNjdHBfcmVjdnZfcm4pKTsKKwkJbiA9IHVzcnNjdHBfcmVjdnYoc29jaywgYnVm
LCBCVUZGRVJTSVpFLCAoc3RydWN0IHNvY2thZGRyICopICZhZGRyLCAmbGVuLCAodm9pZCAqKSZy
biwKKwkJICAgICAgICAgICAgICZpbmZvbGVuLCAmaW5mb3R5cGUsICZmbGFncyk7CisJCWlmIChu
IDwgMCkgeworCQkJcGVycm9yKCJ1c3JzY3RwX3JlY3Z2Iik7CisJCX0KKwkJaWYgKG4gPiAwKSB7
CisJCQlpZiAoZmxhZ3MgJiBNU0dfTk9USUZJQ0FUSU9OKSB7CisJCQkJcHJpbnRmKCJOb3RpZmlj
YXRpb24gb2YgbGVuZ3RoICVkIHJlY2VpdmVkLlxuIiwgKGludCluKTsKKwkJCX0gZWxzZSB7Cisv
KgorI2lmZGVmIF9XSU4zMgorCQkJCV93cml0ZShfZmlsZW5vKHN0ZG91dCksIGJ1ZiwgKHVuc2ln
bmVkIGludCluKTsKKyNlbHNlCisJCQkJaWYgKHdyaXRlKGZpbGVubyhzdGRvdXQpLCBidWYsIG4p
IDwgMCkgeworCQkJCQlwZXJyb3IoIndyaXRlIik7CisJCQkJfQorI2VuZGlmCisqLworCQkJCXN3
aXRjaCAoYWRkci5zc19mYW1pbHkpIHsKKyNpZmRlZiBJTkVUCisJCQkJY2FzZSBBRl9JTkVUOiB7
CisJCQkJCXN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyNDsKKwkJCQkJbWVtY3B5KCZhZGRyNCwgKHN0
cnVjdCBzb2NrYWRkcl9pbiAqKSZhZGRyLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7CisJ
CQkJCW5hbWUgPSBpbmV0X250b3AoQUZfSU5FVCwgJmFkZHI0LnNpbl9hZGRyLCBuYW1lYnVmLCBJ
TkVUX0FERFJTVFJMRU4pOworCQkJCQlwb3J0ID0gbnRvaHMoYWRkcjQuc2luX3BvcnQpOworCQkJ
CQlicmVhazsKKwkJCQkJfQorI2VuZGlmCisjaWZkZWYgSU5FVDYKKwkJCQljYXNlIEFGX0lORVQ2
OiB7CisJCQkJCXN0cnVjdCBzb2NrYWRkcl9pbjYgYWRkcjY7CisJCQkJCW1lbWNweSgmYWRkcjYs
IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopJmFkZHIsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42
KSk7CisJCQkJCW5hbWUgPSBpbmV0X250b3AoQUZfSU5FVDYsICZhZGRyNi5zaW42X2FkZHIsIG5h
bWVidWYsIElORVQ2X0FERFJTVFJMRU4pLAorCQkJCQlwb3J0ID0gbnRvaHMoYWRkcjYuc2luNl9w
b3J0KTsKKwkJCQkJYnJlYWs7CisJCQkJCX0KKyNlbmRpZgorCQkJCWRlZmF1bHQ6CisJCQkJCW5h
bWUgPSBOVUxMOworCQkJCQlwb3J0ID0gMDsKKwkJCQkJYnJlYWs7CisJCQkJfQorCisJCQkJaWYg
KG5hbWUgPT0gTlVMTCkgeworCQkJCQlwcmludGYoImluZXRfbnRvcCBmYWlsZWRcbiIpOworCQkJ
CQlmcmVlKGJ1Zik7CisJCQkJCXJldHVybjsKKwkJCQl9CisKKwkJCQlwcmludGYoIk1zZyBvZiBs
ZW5ndGggJWQgcmVjZWl2ZWQgZnJvbSAlczoldSBvbiBzdHJlYW0gJWQgd2l0aCBTU04gJXUgYW5k
IFRTTiAldSwgUFBJRCAldSwgY29udGV4dCAldS5cbiIsCisJCQkJICAgICAgIChpbnQpbiwKKwkJ
CQkgICAgICAgbmFtZWJ1ZiwKKwkJCQkgICAgICAgcG9ydCwKKwkJCQkgICAgICAgcm4ucmVjdnZf
cmN2aW5mby5yY3Zfc2lkLAorCQkJCSAgICAgICBybi5yZWN2dl9yY3ZpbmZvLnJjdl9zc24sCisJ
CQkJICAgICAgIHJuLnJlY3Z2X3JjdmluZm8ucmN2X3RzbiwKKwkJCQkgICAgICAgbnRvaGwocm4u
cmVjdnZfcmN2aW5mby5yY3ZfcHBpZCksCisJCQkJICAgICAgIHJuLnJlY3Z2X3JjdmluZm8ucmN2
X2NvbnRleHQpOworCQkJfQorCQl9CisJCWZyZWUoYnVmKTsKKwl9CisJcmV0dXJuOworfQorCitp
bnQKK21haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwlzdHJ1Y3Qgc29ja2V0ICpzb2Nr
OworCXN0cnVjdCBzb2NrYWRkcl9pbjYgYWRkcjsKKwlzdHJ1Y3Qgc2N0cF91ZHBlbmNhcHMgZW5j
YXBzOworCXN0cnVjdCBzY3RwX2V2ZW50IGV2ZW50OworCXVpbnQxNl90IGV2ZW50X3R5cGVzW10g
PSB7U0NUUF9BU1NPQ19DSEFOR0UsCisJICAgICAgICAgICAgICAgICAgICAgICAgICBTQ1RQX1BF
RVJfQUREUl9DSEFOR0UsCisJICAgICAgICAgICAgICAgICAgICAgICAgICBTQ1RQX1JFTU9URV9F
UlJPUiwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgIFNDVFBfU0hVVERPV05fRVZFTlQsCisJ
ICAgICAgICAgICAgICAgICAgICAgICAgICBTQ1RQX0FEQVBUQVRJT05fSU5ESUNBVElPTiwKKwkg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNDVFBfUEFSVElBTF9ERUxJVkVSWV9FVkVOVH07CisJ
dW5zaWduZWQgaW50IGk7CisJc3RydWN0IHNjdHBfYXNzb2NfdmFsdWUgYXY7CisJY29uc3QgaW50
IG9uID0gMTsKKworCWlmIChhcmdjID4gMSkgeworCQl1c3JzY3RwX2luaXQoYXRvaShhcmd2WzFd
KSwgTlVMTCwgZGVidWdfcHJpbnRmX3N0YWNrKTsKKwl9IGVsc2UgeworCQl1c3JzY3RwX2luaXQo
OTg5OSwgTlVMTCwgZGVidWdfcHJpbnRmX3N0YWNrKTsKKwl9CisjaWZkZWYgU0NUUF9ERUJVRwor
CXVzcnNjdHBfc3lzY3RsX3NldF9zY3RwX2RlYnVnX29uKFNDVFBfREVCVUdfTk9ORSk7CisjZW5k
aWYKKwl1c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9ibGFja2hvbGUoMik7CisJdXNyc2N0cF9zeXNj
dGxfc2V0X3NjdHBfbm9fY3N1bV9vbl9sb29wYmFjaygwKTsKKworCWlmICgoc29jayA9IHVzcnNj
dHBfc29ja2V0KEFGX0lORVQ2LCBTT0NLX1NFUVBBQ0tFVCwgSVBQUk9UT19TQ1RQLCBOVUxMLCBO
VUxMLCAwLCBOVUxMKSkgPT0gTlVMTCkgeworCQlwZXJyb3IoInVzcnNjdHBfc29ja2V0Iik7CisJ
fQorCXVzcnNjdHBfc2V0X25vbl9ibG9ja2luZyhzb2NrLCAxKTsKKwlpZiAodXNyc2N0cF9zZXRz
b2Nrb3B0KHNvY2ssIElQUFJPVE9fU0NUUCwgU0NUUF9JX1dBTlRfTUFQUEVEX1Y0X0FERFIsIChj
b25zdCB2b2lkKikmb24sIChzb2NrbGVuX3Qpc2l6ZW9mKGludCkpIDwgMCkgeworCQlwZXJyb3Io
InVzcnNjdHBfc2V0c29ja29wdCBTQ1RQX0lfV0FOVF9NQVBQRURfVjRfQUREUiIpOworCX0KKwlt
ZW1zZXQoJmF2LCAwLCBzaXplb2Yoc3RydWN0IHNjdHBfYXNzb2NfdmFsdWUpKTsKKwlhdi5hc3Nv
Y19pZCA9IFNDVFBfQUxMX0FTU09DOworCWF2LmFzc29jX3ZhbHVlID0gNDc7CisKKwlpZiAodXNy
c2N0cF9zZXRzb2Nrb3B0KHNvY2ssIElQUFJPVE9fU0NUUCwgU0NUUF9DT05URVhULCAoY29uc3Qg
dm9pZCopJmF2LCAoc29ja2xlbl90KXNpemVvZihzdHJ1Y3Qgc2N0cF9hc3NvY192YWx1ZSkpIDwg
MCkgeworCQlwZXJyb3IoInVzcnNjdHBfc2V0c29ja29wdCBTQ1RQX0NPTlRFWFQiKTsKKwl9CisJ
aWYgKHVzcnNjdHBfc2V0c29ja29wdChzb2NrLCBJUFBST1RPX1NDVFAsIFNDVFBfUkVDVlJDVklO
Rk8sICZvbiwgc2l6ZW9mKGludCkpIDwgMCkgeworCQlwZXJyb3IoInVzcnNjdHBfc2V0c29ja29w
dCBTQ1RQX1JFQ1ZSQ1ZJTkZPIik7CisJfQorCWlmIChhcmdjID4gMikgeworCQltZW1zZXQoJmVu
Y2FwcywgMCwgc2l6ZW9mKHN0cnVjdCBzY3RwX3VkcGVuY2FwcykpOworCQllbmNhcHMuc3VlX2Fk
ZHJlc3Muc3NfZmFtaWx5ID0gQUZfSU5FVDY7CisJCWVuY2Fwcy5zdWVfcG9ydCA9IGh0b25zKGF0
b2koYXJndlsyXSkpOworCQlpZiAodXNyc2N0cF9zZXRzb2Nrb3B0KHNvY2ssIElQUFJPVE9fU0NU
UCwgU0NUUF9SRU1PVEVfVURQX0VOQ0FQU19QT1JULCAoY29uc3Qgdm9pZCopJmVuY2FwcywgKHNv
Y2tsZW5fdClzaXplb2Yoc3RydWN0IHNjdHBfdWRwZW5jYXBzKSkgPCAwKSB7CisJCQlwZXJyb3Io
InVzcnNjdHBfc2V0c29ja29wdCBTQ1RQX1JFTU9URV9VRFBfRU5DQVBTX1BPUlQiKTsKKwkJfQor
CX0KKwltZW1zZXQoJmV2ZW50LCAwLCBzaXplb2YoZXZlbnQpKTsKKwlldmVudC5zZV9hc3NvY19p
ZCA9IFNDVFBfRlVUVVJFX0FTU09DOworCWV2ZW50LnNlX29uID0gMTsKKwlmb3IgKGkgPSAwOyBp
IDwgKHVuc2lnbmVkIGludCkoc2l6ZW9mKGV2ZW50X3R5cGVzKS9zaXplb2YodWludDE2X3QpKTsg
aSsrKSB7CisJCWV2ZW50LnNlX3R5cGUgPSBldmVudF90eXBlc1tpXTsKKwkJaWYgKHVzcnNjdHBf
c2V0c29ja29wdChzb2NrLCBJUFBST1RPX1NDVFAsIFNDVFBfRVZFTlQsICZldmVudCwgc2l6ZW9m
KHN0cnVjdCBzY3RwX2V2ZW50KSkgPCAwKSB7CisJCQlwZXJyb3IoInVzcnNjdHBfc2V0c29ja29w
dCBTQ1RQX0VWRU5UIik7CisJCX0KKwl9CisKKwl1c3JzY3RwX3NldF91cGNhbGwoc29jaywgaGFu
ZGxlX3VwY2FsbCwgTlVMTCk7CisKKwltZW1zZXQoKHZvaWQgKikmYWRkciwgMCwgc2l6ZW9mKHN0
cnVjdCBzb2NrYWRkcl9pbjYpKTsKKyNpZmRlZiBIQVZFX1NJTjZfTEVOCisJYWRkci5zaW42X2xl
biA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KTsKKyNlbmRpZgorCWFkZHIuc2luNl9mYW1p
bHkgPSBBRl9JTkVUNjsKKwlhZGRyLnNpbjZfcG9ydCA9IGh0b25zKFBPUlQpOworCWFkZHIuc2lu
Nl9hZGRyID0gaW42YWRkcl9hbnk7CisJaWYgKHVzcnNjdHBfYmluZChzb2NrLCAoc3RydWN0IHNv
Y2thZGRyICopJmFkZHIsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSkgPCAwKSB7CisJCXBl
cnJvcigidXNyc2N0cF9iaW5kIik7CisJfQorCWlmICh1c3JzY3RwX2xpc3Rlbihzb2NrLCAxKSA8
IDApIHsKKwkJcGVycm9yKCJ1c3JzY3RwX2xpc3RlbiIpOworCX0KKwl3aGlsZSAoMSkgeworI2lm
ZGVmIF9XSU4zMgorCQkJU2xlZXAoMSoxMDAwKTsKKyNlbHNlCisJCQlzbGVlcCgxKTsKKyNlbmRp
ZgorCX0KKwl1c3JzY3RwX2Nsb3NlKHNvY2spOworCXdoaWxlICh1c3JzY3RwX2ZpbmlzaCgpICE9
IDApIHsKKyNpZmRlZiBfV0lOMzIKKwkJU2xlZXAoMTAwMCk7CisjZWxzZQorCQlzbGVlcCgxKTsK
KyNlbmRpZgorCX0KKwlyZXR1cm4gKDApOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3Jh
bXMvZWNob19zZXJ2ZXIuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2VjaG9fc2VydmVyLmMKaW5kZXgg
NjRmMTJjNTZkOTkxMmE0ODdiZDBiNmY3OWUwODhjMzczOTE0YWNhOC4uZGE2OTc2NWRkZTY2MzRm
MTk5NDcxMzhlYTk2Y2QzOGI1ZWNlZmVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMv
ZWNob19zZXJ2ZXIuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9lY2hvX3NlcnZlci5jCkBAIC0z
MCw3ICszMCw3IEBACiAKIC8qCiAgKiBVc2FnZTogZWNob19zZXJ2ZXIgW2xvY2FsX2VuY2Fwc19w
b3J0XSBbcmVtb3RlX2VuY2Fwc19wb3J0XQotICogCisgKgogICogRXhhbXBsZQogICogU2VydmVy
OiAkIC4vZWNob19zZXJ2ZXIgMTExMTEgMjIyMjIKICAqIENsaWVudDogJCAuL2NsaWVudCAxMjcu
MC4wLjEgNyAwIDIyMjIyIDExMTExCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSA8YXJwYS9p
bmV0Lmg+CiAjZW5kaWYKICNpbmNsdWRlIDx1c3JzY3RwLmg+CisjaW5jbHVkZSAicHJvZ3JhbXNf
aGVscGVyLmgiCiAKICNkZWZpbmUgUE9SVCA3CiAjZGVmaW5lIEJVRkZFUl9TSVpFIDEwMjQwCkBA
IC04NSwxNSArODYsMTcgQEAgcmVjZWl2ZV9jYihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCB1bmlvbiBz
Y3RwX3NvY2tzdG9yZSBhZGRyLCB2b2lkICpkYXRhLAogI2VuZGlmCiAJCQljYXNlIEFGX0NPTk46
CiAjaWZkZWYgX1dJTjMyCi0JCQkJX3NucHJpbnRmKG5hbWVidWYsIElORVQ2X0FERFJTVFJMRU4s
ICIlcCIsIGFkZHIuc2Nvbm4uc2Nvbm5fYWRkcik7CisJCQkJaWYgKF9zbnByaW50ZihuYW1lYnVm
LCBJTkVUNl9BRERSU1RSTEVOLCAiJXAiLCBhZGRyLnNjb25uLnNjb25uX2FkZHIpIDwgMCkgewog
I2Vsc2UKLQkJCQlzbnByaW50ZihuYW1lYnVmLCBJTkVUNl9BRERSU1RSTEVOLCAiJXAiLCBhZGRy
LnNjb25uLnNjb25uX2FkZHIpOworCQkJCWlmIChzbnByaW50ZihuYW1lYnVmLCBJTkVUNl9BRERS
U1RSTEVOLCAiJXAiLCBhZGRyLnNjb25uLnNjb25uX2FkZHIpIDwgMCkgewogI2VuZGlmCisJCQkJ
CW5hbWVidWZbMF0gPSAnXDAnOworCQkJCX0KIAkJCQluYW1lID0gbmFtZWJ1ZjsKIAkJCQlwb3J0
ID0gbnRvaHMoYWRkci5zY29ubi5zY29ubl9wb3J0KTsKIAkJCQlicmVhazsKIAkJCWRlZmF1bHQ6
Ci0JCQkJbmFtZSA9IE5VTEw7CisJCQkJbmFtZSA9ICI/Pz8iOwogCQkJCXBvcnQgPSAwOwogCQkJ
CWJyZWFrOwogCQkJfQpAQCAtMTI3LDE2ICsxMzAsNiBAQCByZWNlaXZlX2NiKHN0cnVjdCBzb2Nr
ZXQgKnNvY2ssIHVuaW9uIHNjdHBfc29ja3N0b3JlIGFkZHIsIHZvaWQgKmRhdGEsCiAJcmV0dXJu
ICgxKTsKIH0KIAotdm9pZAotZGVidWdfcHJpbnRmKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQot
ewotCXZhX2xpc3QgYXA7Ci0KLQl2YV9zdGFydChhcCwgZm9ybWF0KTsKLQl2cHJpbnRmKGZvcm1h
dCwgYXApOwotCXZhX2VuZChhcCk7Ci19Ci0KIGludAogbWFpbihpbnQgYXJnYywgY2hhciAqYXJn
dltdKQogewpAQCAtMTYzLDE0ICsxNTYsMTUgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltd
KQogCXVuc2lnbmVkIGludCBpbmZvdHlwZTsKIAogCWlmIChhcmdjID4gMSkgewotCQl1c3JzY3Rw
X2luaXQoYXRvaShhcmd2WzFdKSwgTlVMTCwgZGVidWdfcHJpbnRmKTsKKwkJdXNyc2N0cF9pbml0
KGF0b2koYXJndlsxXSksIE5VTEwsIGRlYnVnX3ByaW50Zl9zdGFjayk7CiAJfSBlbHNlIHsKLQkJ
dXNyc2N0cF9pbml0KDk4OTksIE5VTEwsIGRlYnVnX3ByaW50Zik7CisJCXVzcnNjdHBfaW5pdCg5
ODk5LCBOVUxMLCBkZWJ1Z19wcmludGZfc3RhY2spOwogCX0KICNpZmRlZiBTQ1RQX0RFQlVHCiAJ
dXNyc2N0cF9zeXNjdGxfc2V0X3NjdHBfZGVidWdfb24oU0NUUF9ERUJVR19OT05FKTsKICNlbmRp
ZgogCXVzcnNjdHBfc3lzY3RsX3NldF9zY3RwX2JsYWNraG9sZSgyKTsKKwl1c3JzY3RwX3N5c2N0
bF9zZXRfc2N0cF9ub19jc3VtX29uX2xvb3BiYWNrKDApOwogCiAJaWYgKChzb2NrID0gdXNyc2N0
cF9zb2NrZXQoQUZfSU5FVDYsIFNPQ0tfU0VRUEFDS0VULCBJUFBST1RPX1NDVFAsIHVzZV9jYj9y
ZWNlaXZlX2NiOk5VTEwsIE5VTEwsIDAsIE5VTEwpKSA9PSBOVUxMKSB7CiAJCXBlcnJvcigidXNy
c2N0cF9zb2NrZXQiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2VjaG9fc2VydmVy
X3VwY2FsbC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvZWNob19zZXJ2ZXJfdXBjYWxsLmMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOGVjZGZlNGM5MzcyYzk4MjQzZDk5Mjc0NjU4MDRkNjg1YmU0ZjMxZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
dXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2VjaG9fc2VydmVyX3VwY2FsbC5jCkBAIC0wLDAg
KzEsMjUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTMgTWljaGFlbCBUdWV4ZW4K
KyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUg
bmFtZSBvZiB0aGUgcHJvamVjdCBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAq
ICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUFJPSkVD
VCBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELglJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
UFJPSkVDVCBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAor
ICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QK
KyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgor
ICovCisKKy8qCisgKiBVc2FnZTogZGlzY2FyZF9zZXJ2ZXJfdXBjYWxsIFtsb2NhbF9lbmNhcHNf
cG9ydF0gW3JlbW90ZV9lbmNhcHNfcG9ydF0KKyAqLworCisjaWZkZWYgX1dJTjMyCisjZGVmaW5l
IF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTCisjaW5jbHVkZSA8aW8uaD4KKyNlbmRpZgorI2luY2x1
ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+Cisj
aW5jbHVkZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaWZuZGVmIF9XSU4z
MgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRl
IDxuZXRpbmV0L2luLmg+CisjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisjZW5kaWYKKyNpbmNsdWRl
IDx1c3JzY3RwLmg+CisjaW5jbHVkZSAicHJvZ3JhbXNfaGVscGVyLmgiCisKKyNkZWZpbmUgQlVG
RkVSU0laRSAxMDI0MAorI2RlZmluZSBQT1JUIDcKKworc3RhdGljIHZvaWQKK2hhbmRsZV91cGNh
bGwoc3RydWN0IHNvY2tldCAqc29jaywgdm9pZCAqZGF0YSwgaW50IGZsZ3MpCit7CisJY2hhciBu
YW1lYnVmW0lORVQ2X0FERFJTVFJMRU5dOworCWNvbnN0IGNoYXIgKm5hbWU7CisJdWludDE2X3Qg
cG9ydDsKKwljaGFyICpidWY7CisJaW50IGV2ZW50czsKKworCXdoaWxlICgoZXZlbnRzID0gdXNy
c2N0cF9nZXRfZXZlbnRzKHNvY2spKSAmJiAoZXZlbnRzICYgU0NUUF9FVkVOVF9SRUFEKSkgewor
CQlzdHJ1Y3Qgc2N0cF9yZWN2dl9ybiBybjsKKwkJc3NpemVfdCBuOworCQlzdHJ1Y3Qgc29ja2Fk
ZHJfc3RvcmFnZSBhZGRyOworCQlidWYgPSBtYWxsb2MoQlVGRkVSU0laRSk7CisJCWludCBmbGFn
cyA9IDA7CisJCXNvY2tsZW5fdCBsZW4gPSAoc29ja2xlbl90KXNpemVvZihzdHJ1Y3Qgc29ja2Fk
ZHJfc3RvcmFnZSk7CisJCXVuc2lnbmVkIGludCBpbmZvdHlwZSA9IDA7CisJCXNvY2tsZW5fdCBp
bmZvbGVuID0gc2l6ZW9mKHN0cnVjdCBzY3RwX3JlY3Z2X3JuKTsKKwkJbWVtc2V0KCZybiwgMCwg
c2l6ZW9mKHN0cnVjdCBzY3RwX3JlY3Z2X3JuKSk7CisJCW4gPSB1c3JzY3RwX3JlY3Z2KHNvY2ss
IGJ1ZiwgQlVGRkVSU0laRSwgKHN0cnVjdCBzb2NrYWRkciAqKSAmYWRkciwgJmxlbiwgKHZvaWQg
Kikmcm4sCisJCSAgICAgICAgICAgICAmaW5mb2xlbiwgJmluZm90eXBlLCAmZmxhZ3MpOworCQlp
ZiAobiA8IDApIHsKKwkJCXBlcnJvcigidXNyc2N0cF9yZWN2diIpOworCQl9CisJCWlmIChuID09
IDApIHsKKwkJCXVzcnNjdHBfY2xvc2Uoc29jayk7CisJCQlyZXR1cm47CisJCX0KKwkJaWYgKG4g
PiAwKSB7CisJCQlpZiAoZmxhZ3MgJiBNU0dfTk9USUZJQ0FUSU9OKSB7CisJCQkJcHJpbnRmKCJO
b3RpZmljYXRpb24gb2YgbGVuZ3RoICVkIHJlY2VpdmVkLlxuIiwgKGludCluKTsKKwkJCX0gZWxz
ZSB7CisjaWZkZWYgX1dJTjMyCisJCQkJX3dyaXRlKF9maWxlbm8oc3Rkb3V0KSwgYnVmLCAodW5z
aWduZWQgaW50KW4pOworI2Vsc2UKKwkJCQlpZiAod3JpdGUoZmlsZW5vKHN0ZG91dCksIGJ1Ziwg
bikgPCAwKSB7CisJCQkJCXBlcnJvcigid3JpdGUiKTsKKwkJCQl9CisjZW5kaWYKKwkJCQlzd2l0
Y2ggKGFkZHIuc3NfZmFtaWx5KSB7CisjaWZkZWYgSU5FVAorCQkJCQljYXNlIEFGX0lORVQ6IHsK
KwkJCQkJCXN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyNDsKKwkJCQkJCW1lbWNweSgmYWRkcjQsIChz
dHJ1Y3Qgc29ja2FkZHJfaW4gKikmYWRkciwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOwor
CQkJCQkJbmFtZSA9IGluZXRfbnRvcChBRl9JTkVULCAmYWRkcjQuc2luX2FkZHIsIG5hbWVidWYs
IElORVRfQUREUlNUUkxFTik7CisJCQkJCQlwb3J0ID0gbnRvaHMoYWRkcjQuc2luX3BvcnQpOwor
CQkJCQkJYnJlYWs7CisJCQkJCQl9CisjZW5kaWYKKyNpZmRlZiBJTkVUNgorCQkJCQljYXNlIEFG
X0lORVQ2OiB7CisJCQkJCQlzdHJ1Y3Qgc29ja2FkZHJfaW42IGFkZHI2OworCQkJCQkJbWVtY3B5
KCZhZGRyNiwgKHN0cnVjdCBzb2NrYWRkcl9pbjYgKikmYWRkciwgc2l6ZW9mKHN0cnVjdCBzb2Nr
YWRkcl9pbjYpKTsKKwkJCQkJCW5hbWUgPSBpbmV0X250b3AoQUZfSU5FVDYsICZhZGRyNi5zaW42
X2FkZHIsIG5hbWVidWYsIElORVQ2X0FERFJTVFJMRU4pLAorCQkJCQkJcG9ydCA9IG50b2hzKGFk
ZHI2LnNpbjZfcG9ydCk7CisJCQkJCQlicmVhazsKKwkJCQkJCX0KKyNlbmRpZgorCQkJCQlkZWZh
dWx0OgorCQkJCQkJbmFtZSA9IE5VTEw7CisJCQkJCQlwb3J0ID0gMDsKKwkJCQkJCWJyZWFrOwor
CQkJCQl9CisKKwkJCQkJaWYgKG5hbWUgPT0gTlVMTCkgeworCQkJCQkJcHJpbnRmKCJpbmV0X250
b3AgZmFpbGVkXG4iKTsKKwkJCQkJCWZyZWUoYnVmKTsKKwkJCQkJCXJldHVybjsKKwkJCQkJfQor
CisJCQkJcHJpbnRmKCJNc2cgb2YgbGVuZ3RoICVkIHJlY2VpdmVkIGZyb20gJXM6JXUgb24gc3Ry
ZWFtICVkIHdpdGggU1NOICV1IGFuZCBUU04gJXUsIFBQSUQgJXUsIGNvbnRleHQgJXUuXG4iLAor
CQkJCSAgICAgICAoaW50KW4sCisJCQkJICAgICAgIG5hbWVidWYsCisJCQkJICAgICAgIHBvcnQs
CisJCQkJICAgICAgIHJuLnJlY3Z2X3JjdmluZm8ucmN2X3NpZCwKKwkJCQkgICAgICAgcm4ucmVj
dnZfcmN2aW5mby5yY3Zfc3NuLAorCQkJCSAgICAgICBybi5yZWN2dl9yY3ZpbmZvLnJjdl90c24s
CisJCQkJICAgICAgIG50b2hsKHJuLnJlY3Z2X3JjdmluZm8ucmN2X3BwaWQpLAorCQkJCSAgICAg
ICBybi5yZWN2dl9yY3ZpbmZvLnJjdl9jb250ZXh0KTsKKwkJCQlpZiAoZmxhZ3MgJiBNU0dfRU9S
KSB7CisJCQkJCXN0cnVjdCBzY3RwX3NuZGluZm8gc25kX2luZm87CisKKwkJCQkJc25kX2luZm8u
c25kX3NpZCA9IHJuLnJlY3Z2X3JjdmluZm8ucmN2X3NpZDsKKwkJCQkJc25kX2luZm8uc25kX2Zs
YWdzID0gMDsKKwkJCQkJaWYgKHJuLnJlY3Z2X3JjdmluZm8ucmN2X2ZsYWdzICYgU0NUUF9VTk9S
REVSRUQpIHsKKwkJCQkJCXNuZF9pbmZvLnNuZF9mbGFncyB8PSBTQ1RQX1VOT1JERVJFRDsKKwkJ
CQkJfQorCQkJCQlzbmRfaW5mby5zbmRfcHBpZCA9IHJuLnJlY3Z2X3JjdmluZm8ucmN2X3BwaWQ7
CisJCQkJCXNuZF9pbmZvLnNuZF9jb250ZXh0ID0gMDsKKwkJCQkJc25kX2luZm8uc25kX2Fzc29j
X2lkID0gcm4ucmVjdnZfcmN2aW5mby5yY3ZfYXNzb2NfaWQ7CisJCQkJCWlmICh1c3JzY3RwX3Nl
bmR2KHNvY2ssIGJ1ZiwgKHNpemVfdCkgbiwgTlVMTCwgMCwgJnNuZF9pbmZvLCBzaXplb2Yoc3Ry
dWN0IHNjdHBfc25kaW5mbyksIFNDVFBfU0VORFZfU05ESU5GTywgMCkgPCAwKSB7CisJCQkJCQlw
ZXJyb3IoInNjdHBfc2VuZHYiKTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfQorCQlmcmVlKGJ1
Zik7CisJfQorCXJldHVybjsKK30KKworaW50CittYWluKGludCBhcmdjLCBjaGFyICphcmd2W10p
Cit7CisJc3RydWN0IHNvY2tldCAqc29jazsKKwlzdHJ1Y3Qgc29ja2FkZHJfaW42IGFkZHI7CisJ
c3RydWN0IHNjdHBfdWRwZW5jYXBzIGVuY2FwczsKKwlzdHJ1Y3Qgc2N0cF9ldmVudCBldmVudDsK
Kwl1aW50MTZfdCBldmVudF90eXBlc1tdID0ge1NDVFBfQVNTT0NfQ0hBTkdFLAorCSAgICAgICAg
ICAgICAgICAgICAgICAgICAgU0NUUF9QRUVSX0FERFJfQ0hBTkdFLAorCSAgICAgICAgICAgICAg
ICAgICAgICAgICAgU0NUUF9SRU1PVEVfRVJST1IsCisJICAgICAgICAgICAgICAgICAgICAgICAg
ICBTQ1RQX1NIVVRET1dOX0VWRU5ULAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgU0NUUF9B
REFQVEFUSU9OX0lORElDQVRJT04sCisJICAgICAgICAgICAgICAgICAgICAgICAgICBTQ1RQX1BB
UlRJQUxfREVMSVZFUllfRVZFTlR9OworCXVuc2lnbmVkIGludCBpOworCXN0cnVjdCBzY3RwX2Fz
c29jX3ZhbHVlIGF2OworCWNvbnN0IGludCBvbiA9IDE7CisKKwlpZiAoYXJnYyA+IDEpIHsKKwkJ
dXNyc2N0cF9pbml0KGF0b2koYXJndlsxXSksIE5VTEwsIGRlYnVnX3ByaW50Zl9zdGFjayk7CisJ
fSBlbHNlIHsKKwkJdXNyc2N0cF9pbml0KDk4OTksIE5VTEwsIGRlYnVnX3ByaW50Zl9zdGFjayk7
CisJfQorI2lmZGVmIFNDVFBfREVCVUcKKwl1c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9kZWJ1Z19v
bihTQ1RQX0RFQlVHX05PTkUpOworI2VuZGlmCisJdXNyc2N0cF9zeXNjdGxfc2V0X3NjdHBfYmxh
Y2tob2xlKDIpOworCXVzcnNjdHBfc3lzY3RsX3NldF9zY3RwX25vX2NzdW1fb25fbG9vcGJhY2so
MCk7CisKKwlpZiAoKHNvY2sgPSB1c3JzY3RwX3NvY2tldChBRl9JTkVUNiwgU09DS19TRVFQQUNL
RVQsIElQUFJPVE9fU0NUUCwgTlVMTCwgTlVMTCwgMCwgTlVMTCkpID09IE5VTEwpIHsKKwkJcGVy
cm9yKCJ1c3JzY3RwX3NvY2tldCIpOworCX0KKwl1c3JzY3RwX3NldF9ub25fYmxvY2tpbmcoc29j
aywgMSk7CisJaWYgKHVzcnNjdHBfc2V0c29ja29wdChzb2NrLCBJUFBST1RPX1NDVFAsIFNDVFBf
SV9XQU5UX01BUFBFRF9WNF9BRERSLCAoY29uc3Qgdm9pZCopJm9uLCAoc29ja2xlbl90KXNpemVv
ZihpbnQpKSA8IDApIHsKKwkJcGVycm9yKCJ1c3JzY3RwX3NldHNvY2tvcHQgU0NUUF9JX1dBTlRf
TUFQUEVEX1Y0X0FERFIiKTsKKwl9CisJbWVtc2V0KCZhdiwgMCwgc2l6ZW9mKHN0cnVjdCBzY3Rw
X2Fzc29jX3ZhbHVlKSk7CisJYXYuYXNzb2NfaWQgPSBTQ1RQX0FMTF9BU1NPQzsKKwlhdi5hc3Nv
Y192YWx1ZSA9IDQ3OworCisJaWYgKHVzcnNjdHBfc2V0c29ja29wdChzb2NrLCBJUFBST1RPX1ND
VFAsIFNDVFBfQ09OVEVYVCwgKGNvbnN0IHZvaWQqKSZhdiwgKHNvY2tsZW5fdClzaXplb2Yoc3Ry
dWN0IHNjdHBfYXNzb2NfdmFsdWUpKSA8IDApIHsKKwkJcGVycm9yKCJ1c3JzY3RwX3NldHNvY2tv
cHQgU0NUUF9DT05URVhUIik7CisJfQorCWlmICh1c3JzY3RwX3NldHNvY2tvcHQoc29jaywgSVBQ
Uk9UT19TQ1RQLCBTQ1RQX1JFQ1ZSQ1ZJTkZPLCAmb24sIHNpemVvZihpbnQpKSA8IDApIHsKKwkJ
cGVycm9yKCJ1c3JzY3RwX3NldHNvY2tvcHQgU0NUUF9SRUNWUkNWSU5GTyIpOworCX0KKwlpZiAo
YXJnYyA+IDIpIHsKKwkJbWVtc2V0KCZlbmNhcHMsIDAsIHNpemVvZihzdHJ1Y3Qgc2N0cF91ZHBl
bmNhcHMpKTsKKwkJZW5jYXBzLnN1ZV9hZGRyZXNzLnNzX2ZhbWlseSA9IEFGX0lORVQ2OworCQll
bmNhcHMuc3VlX3BvcnQgPSBodG9ucyhhdG9pKGFyZ3ZbMl0pKTsKKwkJaWYgKHVzcnNjdHBfc2V0
c29ja29wdChzb2NrLCBJUFBST1RPX1NDVFAsIFNDVFBfUkVNT1RFX1VEUF9FTkNBUFNfUE9SVCwg
KGNvbnN0IHZvaWQqKSZlbmNhcHMsIChzb2NrbGVuX3Qpc2l6ZW9mKHN0cnVjdCBzY3RwX3VkcGVu
Y2FwcykpIDwgMCkgeworCQkJcGVycm9yKCJ1c3JzY3RwX3NldHNvY2tvcHQgU0NUUF9SRU1PVEVf
VURQX0VOQ0FQU19QT1JUIik7CisJCX0KKwl9CisJbWVtc2V0KCZldmVudCwgMCwgc2l6ZW9mKGV2
ZW50KSk7CisJZXZlbnQuc2VfYXNzb2NfaWQgPSBTQ1RQX0ZVVFVSRV9BU1NPQzsKKwlldmVudC5z
ZV9vbiA9IDE7CisJZm9yIChpID0gMDsgaSA8ICh1bnNpZ25lZCBpbnQpKHNpemVvZihldmVudF90
eXBlcykvc2l6ZW9mKHVpbnQxNl90KSk7IGkrKykgeworCQlldmVudC5zZV90eXBlID0gZXZlbnRf
dHlwZXNbaV07CisJCWlmICh1c3JzY3RwX3NldHNvY2tvcHQoc29jaywgSVBQUk9UT19TQ1RQLCBT
Q1RQX0VWRU5ULCAmZXZlbnQsIHNpemVvZihzdHJ1Y3Qgc2N0cF9ldmVudCkpIDwgMCkgeworCQkJ
cGVycm9yKCJ1c3JzY3RwX3NldHNvY2tvcHQgU0NUUF9FVkVOVCIpOworCQl9CisJfQorCisJdXNy
c2N0cF9zZXRfdXBjYWxsKHNvY2ssIGhhbmRsZV91cGNhbGwsIE5VTEwpOworCisJbWVtc2V0KCh2
b2lkICopJmFkZHIsIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSk7CisjaWZkZWYgSEFW
RV9TSU42X0xFTgorCWFkZHIuc2luNl9sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNik7
CisjZW5kaWYKKwlhZGRyLnNpbjZfZmFtaWx5ID0gQUZfSU5FVDY7CisJYWRkci5zaW42X3BvcnQg
PSBodG9ucyhQT1JUKTsKKwlhZGRyLnNpbjZfYWRkciA9IGluNmFkZHJfYW55OworCWlmICh1c3Jz
Y3RwX2JpbmQoc29jaywgKHN0cnVjdCBzb2NrYWRkciAqKSZhZGRyLCBzaXplb2Yoc3RydWN0IHNv
Y2thZGRyX2luNikpIDwgMCkgeworCQlwZXJyb3IoInVzcnNjdHBfYmluZCIpOworCX0KKwlpZiAo
dXNyc2N0cF9saXN0ZW4oc29jaywgMSkgPCAwKSB7CisJCXBlcnJvcigidXNyc2N0cF9saXN0ZW4i
KTsKKwl9CisJd2hpbGUgKDEpIHsKKyNpZmRlZiBfV0lOMzIKKwkJU2xlZXAoMSoxMDAwKTsKKyNl
bHNlCisJCXNsZWVwKDEpOworI2VuZGlmCisJfQorCXVzcnNjdHBfY2xvc2Uoc29jayk7CisJd2hp
bGUgKHVzcnNjdHBfZmluaXNoKCkgIT0gMCkgeworI2lmZGVmIF9XSU4zMgorCQlTbGVlcCgxMDAw
KTsKKyNlbHNlCisJCXNsZWVwKDEpOworI2VuZGlmCisJfQorCXJldHVybiAoMCk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3Vz
cnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9la3JfY2xpZW50LmMgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFt
cy9la3JfY2xpZW50LmMKaW5kZXggMWU1ZTdlMzJlZDZjNWU3NTk0YjJiMThiNWFkYjY3MmFkZThj
MTRiOC4uOTM2NDE2ZjUzYTM4ZWM2OTlhNzY2ZTUyNzlkNzAwN2VjODRkNjZlNyAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvcHJvZ3JhbXMvZWtyX2NsaWVudC5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1z
L2Vrcl9jbGllbnQuYwpAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgPHdzMnRjcGlwLmg+CiAj
ZW5kaWYKICNpbmNsdWRlIDx1c3JzY3RwLmg+CisjaW5jbHVkZSAicHJvZ3JhbXNfaGVscGVyLmgi
CiAKICNkZWZpbmUgTUFYX1BBQ0tFVF9TSVpFICgxPDwxNikKICNkZWZpbmUgQlVGRkVSX1NJWkUg
ODAKQEAgLTE1MiwxNiArMTUzLDYgQEAgcmVjZWl2ZV9jYihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCB1
bmlvbiBzY3RwX3NvY2tzdG9yZSBhZGRyLCB2b2lkICpkYXRhLAogCXJldHVybiAoMSk7CiB9CiAK
LXZvaWQKLWRlYnVnX3ByaW50Zihjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKLXsKLQl2YV9saXN0
IGFwOwotCi0JdmFfc3RhcnQoYXAsIGZvcm1hdCk7Ci0JdnByaW50Zihmb3JtYXQsIGFwKTsKLQl2
YV9lbmQoYXApOwotfQotCiBpbnQKIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsKQEAg
LTE3MCw3ICsxNjEsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAjaWZkZWYgX1dJ
TjMyCiAJU09DS0VUIGZkOwogI2Vsc2UKLQlpbnQgZmQ7CisJaW50IGZkLCByYzsKICNlbmRpZgog
CXN0cnVjdCBzb2NrZXQgKnM7CiAjaWZkZWYgX1dJTjMyCkBAIC0xODUsMjEgKzE3NiwyMSBAQCBt
YWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAjZW5kaWYKIAogCWlmIChhcmdjIDwgNCkgewot
CQlwcmludGYoImVycm9yOiB0aGlzIHByb2dyYW0gcmVxdWlyZXMgNCBhcmd1bWVudHMhXG4iKTsK
KwkJZnByaW50ZihzdGRlcnIsICJlcnJvcjogdGhpcyBwcm9ncmFtIHJlcXVpcmVzIDQgYXJndW1l
bnRzIVxuIik7CiAJCWV4aXQoRVhJVF9GQUlMVVJFKTsKIAl9CiAKICNpZmRlZiBfV0lOMzIKIAlp
ZiAoV1NBU3RhcnR1cChNQUtFV09SRCgyLDIpLCAmd3NhRGF0YSkgIT0gMCkgewotCQlwcmludGYo
IldTQVN0YXJ0dXAgZmFpbGVkXG4iKTsKKwkJZnByaW50ZihzdGRlcnIsICJXU0FTdGFydHVwIGZh
aWxlZFxuIik7CiAJCWV4aXQgKEVYSVRfRkFJTFVSRSk7CiAJfQogI2VuZGlmCi0JdXNyc2N0cF9p
bml0KDAsIGNvbm5fb3V0cHV0LCBkZWJ1Z19wcmludGYpOworCXVzcnNjdHBfaW5pdCgwLCBjb25u
X291dHB1dCwgZGVidWdfcHJpbnRmX3N0YWNrKTsKIAkvKiBzZXQgdXAgYSBjb25uZWN0ZWQgVURQ
IHNvY2tldCAqLwogI2lmZGVmIF9XSU4zMgogCWlmICgoZmQgPSBzb2NrZXQoQUZfSU5FVCwgU09D
S19ER1JBTSwgSVBQUk9UT19VRFApKSA9PSBJTlZBTElEX1NPQ0tFVCkgewotCQlwcmludGYoInNv
Y2tldCgpIGZhaWxlZCB3aXRoIGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOworCQlm
cHJpbnRmKHN0ZGVyciwgInNvY2tldCgpIGZhaWxlZCB3aXRoIGVycm9yOiAlZFxuIiwgV1NBR2V0
TGFzdEVycm9yKCkpOwogCQlleGl0KEVYSVRfRkFJTFVSRSk7CiAJfQogI2Vsc2UKQEAgLTIxNSwx
MiArMjA2LDEyIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICNlbmRpZgogCXNpbi5z
aW5fcG9ydCA9IGh0b25zKGF0b2koYXJndlsyXSkpOwogCWlmICghaW5ldF9wdG9uKEFGX0lORVQs
IGFyZ3ZbMV0sICZzaW4uc2luX2FkZHIuc19hZGRyKSl7Ci0JCXByaW50ZigiZXJyb3I6IGludmFs
aWQgYWRkcmVzc1xuIik7CisJCWZwcmludGYoc3RkZXJyLCAiZXJyb3I6IGludmFsaWQgYWRkcmVz
c1xuIik7CiAJCWV4aXQoRVhJVF9GQUlMVVJFKTsKIAl9CiAjaWZkZWYgX1dJTjMyCiAJaWYgKGJp
bmQoZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2lu
KSkgPT0gU09DS0VUX0VSUk9SKSB7Ci0JCXByaW50ZigiYmluZCgpIGZhaWxlZCB3aXRoIGVycm9y
OiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOworCQlmcHJpbnRmKHN0ZGVyciwgImJpbmQoKSBm
YWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIFdTQUdldExhc3RFcnJvcigpKTsKIAkJZXhpdChFWElU
X0ZBSUxVUkUpOwogCX0KICNlbHNlCkBAIC0yNDEsNyArMjMyLDcgQEAgbWFpbihpbnQgYXJnYywg
Y2hhciAqYXJndltdKQogCX0KICNpZmRlZiBfV0lOMzIKIAlpZiAoY29ubmVjdChmZCwgKHN0cnVj
dCBzb2NrYWRkciAqKSZzaW4sIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKSA9PSBTT0NLRVRf
RVJST1IpIHsKLQkJcHJpbnRmKCJjb25uZWN0KCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBX
U0FHZXRMYXN0RXJyb3IoKSk7CisJCWZwcmludGYoc3RkZXJyLCAiY29ubmVjdCgpIGZhaWxlZCB3
aXRoIGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOwogCQlleGl0KEVYSVRfRkFJTFVS
RSk7CiAJfQogI2Vsc2UKQEAgLTI1Niw5ICsyNDcsMTUgQEAgbWFpbihpbnQgYXJnYywgY2hhciAq
YXJndltdKQogCXVzcnNjdHBfc3lzY3RsX3NldF9zY3RwX2Vjbl9lbmFibGUoMCk7CiAJdXNyc2N0
cF9yZWdpc3Rlcl9hZGRyZXNzKCh2b2lkICopJmZkKTsKICNpZmRlZiBfV0lOMzIKLQl0aWQgPSBD
cmVhdGVUaHJlYWQoTlVMTCwgMCwgJmhhbmRsZV9wYWNrZXRzLCAodm9pZCAqKSZmZCwgMCwgTlVM
TCk7CisJaWYgKCh0aWQgPSBDcmVhdGVUaHJlYWQoTlVMTCwgMCwgJmhhbmRsZV9wYWNrZXRzLCAo
dm9pZCAqKSZmZCwgMCwgTlVMTCkpID09IE5VTEwpIHsKKwkJZnByaW50ZihzdGRlcnIsICJDcmVh
dGVUaHJlYWQoKSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIEdldExhc3RFcnJvcigpKTsKKwkJ
ZXhpdChFWElUX0ZBSUxVUkUpOworCX0KICNlbHNlCi0JcHRocmVhZF9jcmVhdGUoJnRpZCwgTlVM
TCwgJmhhbmRsZV9wYWNrZXRzLCAodm9pZCAqKSZmZCk7CisJaWYgKChyYyA9IHB0aHJlYWRfY3Jl
YXRlKCZ0aWQsIE5VTEwsICZoYW5kbGVfcGFja2V0cywgKHZvaWQgKikmZmQpKSAhPSAwKSB7CisJ
CWZwcmludGYoc3RkZXJyLCAicHRocmVhZF9jcmVhdGU6ICVzXG4iLCBzdHJlcnJvcihyYykpOwor
CQlleGl0KEVYSVRfRkFJTFVSRSk7CisJfQogI2VuZGlmCiAJaWYgKChzID0gdXNyc2N0cF9zb2Nr
ZXQoQUZfQ09OTiwgU09DS19TVFJFQU0sIElQUFJPVE9fU0NUUCwgcmVjZWl2ZV9jYiwgTlVMTCwg
MCwgJmZkKSkgPT0gTlVMTCkgewogCQlwZXJyb3IoInVzcnNjdHBfc29ja2V0Iik7CkBAIC0zMDgs
NyArMzA1LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCVRlcm1pbmF0ZVRocmVh
ZCh0aWQsIDApOwogCVdhaXRGb3JTaW5nbGVPYmplY3QodGlkLCBJTkZJTklURSk7CiAJaWYgKGNs
b3Nlc29ja2V0KGZkKSA9PSBTT0NLRVRfRVJST1IpIHsKLQkJcHJpbnRmKCJjbG9zZXNvY2tldCgp
IGZhaWxlZCB3aXRoIGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOworCQlmcHJpbnRm
KHN0ZGVyciwgImNsb3Nlc29ja2V0KCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBXU0FHZXRM
YXN0RXJyb3IoKSk7CiAJfQogCVdTQUNsZWFudXAoKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0
cGxpYi9wcm9ncmFtcy9la3JfbG9vcC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvZWtyX2xvb3AuYwpp
bmRleCA3N2U3MmM1Yjg0ZjY0MWRiZTk3MTZlNDlkYWU3ZjRmYzk3N2QxNTQ5Li42NWZkYjRhNzAz
ZDNmNzczNjY1OWVhMWU4ZDQzYjljODZmYTZjMTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9n
cmFtcy9la3JfbG9vcC5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2Vrcl9sb29wLmMKQEAgLTI4
LDYgKzI4LDEwIEBACiAgKiBTVUNIIERBTUFHRS4KICAqLwogCisvKgorICogVXNhZ2U6IGVrcl9s
b29wIFtjbGllbnRfcG9ydF0gW3NlcnZlcl9wb3J0XSBbY3JjMzJjIG9mZmxvYWRpbmcgPDAvMT5d
CisgKi8KKwogI2lmZGVmIF9XSU4zMgogI2RlZmluZSBfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUwog
I2VuZGlmCkBAIC00OCwxMCArNTIsMTQgQEAKICNpbmNsdWRlIDx3czJ0Y3BpcC5oPgogI2VuZGlm
CiAjaW5jbHVkZSA8dXNyc2N0cC5oPgorI2luY2x1ZGUgInByb2dyYW1zX2hlbHBlci5oIgogCiAj
ZGVmaW5lIE1BWF9QQUNLRVRfU0laRSAoMTw8MTYpCiAjZGVmaW5lIExJTkVfTEVOR1RIICgxPDwy
MCkKICNkZWZpbmUgRElTQ0FSRF9QUElEIDM5CisjZGVmaW5lIE5VTUJFUl9PRl9TVEVQUyAxMAor
CitzdGF0aWMgdWludDhfdCBjcmMzMmNfb2ZmbG9hZGluZyA9IDA7CiAKICNpZmRlZiBfV0lOMzIK
IHN0YXRpYyBEV09SRCBXSU5BUEkKQEAgLTY2LDggKzc0LDEwIEBAIGhhbmRsZV9wYWNrZXRzKHZv
aWQgKmFyZykKIAlpbnQgKmZkcDsKICNlbmRpZgogCWNoYXIgKmR1bXBfYnVmOworCXN0cnVjdCBz
Y3RwX2NvbW1vbl9oZWFkZXIgKmhkcjsKIAlzc2l6ZV90IGxlbmd0aDsKIAljaGFyIGJ1ZltNQVhf
UEFDS0VUX1NJWkVdOworCXVpbnQzMl90IHJlY2VpdmVkX2NyYzMyYywgY29tcHV0ZWRfY3JjMzJj
OwogCiAjaWZkZWYgX1dJTjMyCiAJZmRwID0gKFNPQ0tFVCAqKWFyZzsKQEAgLTgxLDEwICs5MSwy
OSBAQCBoYW5kbGVfcGFja2V0cyh2b2lkICphcmcpCiAJCWxlbmd0aCA9IHJlY3YoKmZkcCwgYnVm
LCBNQVhfUEFDS0VUX1NJWkUsIDApOwogCQlpZiAobGVuZ3RoID4gMCkgewogCQkJaWYgKChkdW1w
X2J1ZiA9IHVzcnNjdHBfZHVtcHBhY2tldChidWYsIChzaXplX3QpbGVuZ3RoLCBTQ1RQX0RVTVBf
SU5CT1VORCkpICE9IE5VTEwpIHsKLQkJCQkvL2ZwcmludGYoc3RkZXJyLCAiJXMiLCBkdW1wX2J1
Zik7CisJCQkJLyogZGVidWdfcHJpbnRmX2NsZWFuKCIlcyIsIGR1bXBfYnVmKTsgKi8KIAkJCQl1
c3JzY3RwX2ZyZWVkdW1wYnVmZmVyKGR1bXBfYnVmKTsKIAkJCX0KLQkJCXVzcnNjdHBfY29ubmlu
cHV0KGZkcCwgYnVmLCAoc2l6ZV90KWxlbmd0aCwgMCk7CisKKwkJCWlmIChjcmMzMmNfb2ZmbG9h
ZGluZykgeworCQkJCWlmICgoc2l6ZV90KWxlbmd0aCA+PSBzaXplb2Yoc3RydWN0IHNjdHBfY29t
bW9uX2hlYWRlcikpIHsKKwkJCQkJaGRyID0gKHN0cnVjdCBzY3RwX2NvbW1vbl9oZWFkZXIgKili
dWY7CisJCQkJCXJlY2VpdmVkX2NyYzMyYyA9IGhkci0+Y3JjMzJjOworCQkJCQloZHItPmNyYzMy
YyA9IGh0b25sKDApOworCQkJCQljb21wdXRlZF9jcmMzMmMgPSB1c3JzY3RwX2NyYzMyYyhidWYs
IChzaXplX3QpbGVuZ3RoKTsKKwkJCQkJaGRyLT5jcmMzMmMgPSByZWNlaXZlZF9jcmMzMmM7CisJ
CQkJCWlmIChyZWNlaXZlZF9jcmMzMmMgPT0gY29tcHV0ZWRfY3JjMzJjKSB7CisJCQkJCQl1c3Jz
Y3RwX2Nvbm5pbnB1dChmZHAsIGJ1ZiwgKHNpemVfdClsZW5ndGgsIDApOworCQkJCQl9IGVsc2Ug
eworCQkJCQkJZGVidWdfcHJpbnRmKCJXcm9uZyBDUkMzMmM6IGV4cGVjdGVkICUwOHggcmVjZWl2
ZWQgJTA4eFxuIiwKKwkJCQkJCSAgICAgICAgICAgICBudG9obChjb21wdXRlZF9jcmMzMmMpLCBu
dG9obChyZWNlaXZlZF9jcmMzMmMpKTsKKwkJCQkJfQorCQkJCX0gZWxzZSB7CisJCQkJCWRlYnVn
X3ByaW50ZigiUGFja2V0IHRvbyBzaG9ydDogbGVuZ3RoICV6ZCIsIGxlbmd0aCk7CisJCQkJfQor
CQkJfSBlbHNlIHsKKwkJCQl1c3JzY3RwX2Nvbm5pbnB1dChmZHAsIGJ1ZiwgKHNpemVfdClsZW5n
dGgsIDApOworCQkJfQogCQl9CiAJfQogI2lmZGVmIF9XSU4zMgpAQCAtOTgsNiArMTI3LDcgQEAg
c3RhdGljIGludAogY29ubl9vdXRwdXQodm9pZCAqYWRkciwgdm9pZCAqYnVmLCBzaXplX3QgbGVu
Z3RoLCB1aW50OF90IHRvcywgdWludDhfdCBzZXRfZGYpCiB7CiAJY2hhciAqZHVtcF9idWY7CisJ
c3RydWN0IHNjdHBfY29tbW9uX2hlYWRlciAqaGRyOwogI2lmZGVmIF9XSU4zMgogCVNPQ0tFVCAq
ZmRwOwogI2Vsc2UKQEAgLTEwOSw4ICsxMzksMTMgQEAgY29ubl9vdXRwdXQodm9pZCAqYWRkciwg
dm9pZCAqYnVmLCBzaXplX3QgbGVuZ3RoLCB1aW50OF90IHRvcywgdWludDhfdCBzZXRfZGYpCiAj
ZWxzZQogCWZkcCA9IChpbnQgKilhZGRyOwogI2VuZGlmCisJaWYgKGNyYzMyY19vZmZsb2FkaW5n
ICYmIGxlbmd0aCA+PSBzaXplb2Yoc3RydWN0IHNjdHBfY29tbW9uX2hlYWRlcikpIHsKKwkJaGRy
ID0gKHN0cnVjdCBzY3RwX2NvbW1vbl9oZWFkZXIgKilidWY7CisJCWhkci0+Y3JjMzJjID0gdXNy
c2N0cF9jcmMzMmMoYnVmLCAoc2l6ZV90KWxlbmd0aCk7CisJfQorCiAJaWYgKChkdW1wX2J1ZiA9
IHVzcnNjdHBfZHVtcHBhY2tldChidWYsIGxlbmd0aCwgU0NUUF9EVU1QX09VVEJPVU5EKSkgIT0g
TlVMTCkgewotCQkvL2ZwcmludGYoc3RkZXJyLCAiJXMiLCBkdW1wX2J1Zik7CisJCS8qIGRlYnVn
X3ByaW50Zl9jbGVhbigiJXMiLCBkdW1wX2J1Zik7ICovCiAJCXVzcnNjdHBfZnJlZWR1bXBidWZm
ZXIoZHVtcF9idWYpOwogCX0KICNpZmRlZiBfV0lOMzIKQEAgLTEyOSwxMCArMTY0LDEwIEBAIHN0
YXRpYyBpbnQKIHJlY2VpdmVfY2Ioc3RydWN0IHNvY2tldCAqc29jaywgdW5pb24gc2N0cF9zb2Nr
c3RvcmUgYWRkciwgdm9pZCAqZGF0YSwKICAgICAgICAgICAgc2l6ZV90IGRhdGFsZW4sIHN0cnVj
dCBzY3RwX3JjdmluZm8gcmN2LCBpbnQgZmxhZ3MsIHZvaWQgKnVscF9pbmZvKQogewotCXByaW50
ZigiTWVzc2FnZSAlcCByZWNlaXZlZCBvbiBzb2NrID0gJXAuXG4iLCBkYXRhLCAodm9pZCAqKXNv
Y2spOworCWRlYnVnX3ByaW50ZigiTVNHIFJDVjogJXAgcmVjZWl2ZWQgb24gc29jayA9ICVwLlxu
IiwgZGF0YSwgKHZvaWQgKilzb2NrKTsKIAlpZiAoZGF0YSkgewogCQlpZiAoKGZsYWdzICYgTVNH
X05PVElGSUNBVElPTikgPT0gMCkgewotCQkJcHJpbnRmKCJNZXNzc2FnZSBvZiBsZW5ndGggJWQg
cmVjZWl2ZWQgdmlhICVwOiV1IG9uIHN0cmVhbSAldSB3aXRoIFNTTiAldSBhbmQgVFNOICV1LCBQ
UElEICV1LCBjb250ZXh0ICV1LCBmbGFncyAleC5cbiIsCisJCQlkZWJ1Z19wcmludGYoIk1TRyBS
Q1Y6IGxlbmd0aCAlZCwgYWRkciAlcDoldSwgc3RyZWFtICV1LCBTU04gJXUsIFRTTiAldSwgUFBJ
RCAldSwgY29udGV4dCAldSwgJXMlcy5cbiIsCiAJCQkgICAgICAgKGludClkYXRhbGVuLAogCQkJ
ICAgICAgIGFkZHIuc2Nvbm4uc2Nvbm5fYWRkciwKIAkJCSAgICAgICBudG9ocyhhZGRyLnNjb25u
LnNjb25uX3BvcnQpLApAQCAtMTQxLDcgKzE3Niw4IEBAIHJlY2VpdmVfY2Ioc3RydWN0IHNvY2tl
dCAqc29jaywgdW5pb24gc2N0cF9zb2Nrc3RvcmUgYWRkciwgdm9pZCAqZGF0YSwKIAkJCSAgICAg
ICByY3YucmN2X3RzbiwKIAkJCSAgICAgICBudG9obChyY3YucmN2X3BwaWQpLAogCQkJICAgICAg
IHJjdi5yY3ZfY29udGV4dCwKLQkJCSAgICAgICBmbGFncyk7CisJCQkgICAgICAgKHJjdi5yY3Zf
ZmxhZ3MgJiBTQ1RQX1VOT1JERVJFRCkgPyAidW5vcmRlcmVkIiA6ICJvcmRlcmVkIiwKKwkJCQkg
ICAoZmxhZ3MgJiBNU0dfRU9SKSA/ICIsIEVPUiIgOiAiIik7CiAJCX0KIAkJZnJlZShkYXRhKTsK
IAl9IGVsc2UgewpAQCAtMTUxLDEzICsxODcsMTYgQEAgcmVjZWl2ZV9jYihzdHJ1Y3Qgc29ja2V0
ICpzb2NrLCB1bmlvbiBzY3RwX3NvY2tzdG9yZSBhZGRyLCB2b2lkICpkYXRhLAogCXJldHVybiAo
MSk7CiB9CiAKLSNpZiAwCiBzdGF0aWMgdm9pZAogcHJpbnRfYWRkcmVzc2VzKHN0cnVjdCBzb2Nr
ZXQgKnNvY2spCiB7CiAJaW50IGksIG47CiAJc3RydWN0IHNvY2thZGRyICphZGRycywgKmFkZHI7
CisjaWYgIWRlZmluZWQoSEFWRV9TQV9MRU4pCisJaW50IHNhX2xlbjsKKyNlbmRpZgogCisJZGVi
dWdfcHJpbnRmKCJBZGRyZXNzZXM6ICIpOwogCW4gPSB1c3JzY3RwX2dldGxhZGRycyhzb2NrLCAw
LCAmYWRkcnMpOwogCWFkZHIgPSBhZGRyczsKIAlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CkBA
IC0xNzAsNyArMjA5LDEwIEBAIHByaW50X2FkZHJlc3NlcyhzdHJ1Y3Qgc29ja2V0ICpzb2NrKQog
CiAJCQlzaW4gPSAoc3RydWN0IHNvY2thZGRyX2luICopYWRkcjsKIAkJCW5hbWUgPSBpbmV0X250
b3AoQUZfSU5FVCwgJnNpbi0+c2luX2FkZHIsIGJ1ZiwgSU5FVF9BRERSU1RSTEVOKTsKLQkJCXBy
aW50ZigiJXM6JWQiLCBuYW1lLCBudG9ocyhzaW4tPnNpbl9wb3J0KSk7CisJCQlkZWJ1Z19wcmlu
dGZfY2xlYW4oIiVzOiVkIiwgbmFtZSwgbnRvaHMoc2luLT5zaW5fcG9ydCkpOworI2lmICFkZWZp
bmVkKEhBVkVfU0FfTEVOKQorCQkJc2FfbGVuID0gKGludClzaXplb2Yoc3RydWN0IHNvY2thZGRy
X2luKTsKKyNlbmRpZgogCQkJYnJlYWs7CiAJCX0KIAkJY2FzZSBBRl9JTkVUNjoKQEAgLTE4MSw3
ICsyMjMsMTAgQEAgcHJpbnRfYWRkcmVzc2VzKHN0cnVjdCBzb2NrZXQgKnNvY2spCiAKIAkJCXNp
bjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKWFkZHI7CiAJCQluYW1lID0gaW5ldF9udG9wKEFG
X0lORVQ2LCAmc2luNi0+c2luNl9hZGRyLCBidWYsIElORVQ2X0FERFJTVFJMRU4pOwotCQkJcHJp
bnRmKCIlczolZCIsIG5hbWUsIG50b2hzKHNpbjYtPnNpbjZfcG9ydCkpOworCQkJZGVidWdfcHJp
bnRmX2NsZWFuKCIlczolZCIsIG5hbWUsIG50b2hzKHNpbjYtPnNpbjZfcG9ydCkpOworI2lmICFk
ZWZpbmVkKEhBVkVfU0FfTEVOKQorCQkJc2FfbGVuID0gKGludClzaXplb2Yoc3RydWN0IHNvY2th
ZGRyX2luNik7CisjZW5kaWYKIAkJCWJyZWFrOwogCQl9CiAJCWNhc2UgQUZfQ09OTjoKQEAgLTE4
OSwyMiArMjM0LDMyIEBAIHByaW50X2FkZHJlc3NlcyhzdHJ1Y3Qgc29ja2V0ICpzb2NrKQogCQkJ
c3RydWN0IHNvY2thZGRyX2Nvbm4gKnNjb25uOwogCiAJCQlzY29ubiA9IChzdHJ1Y3Qgc29ja2Fk
ZHJfY29ubiAqKWFkZHI7Ci0JCQlwcmludGYoIiVwOiVkIiwgc2Nvbm4tPnNjb25uX2FkZHIsIG50
b2hzKHNjb25uLT5zY29ubl9wb3J0KSk7CisJCQlkZWJ1Z19wcmludGZfY2xlYW4oIiVwOiVkIiwg
c2Nvbm4tPnNjb25uX2FkZHIsIG50b2hzKHNjb25uLT5zY29ubl9wb3J0KSk7CisjaWYgIWRlZmlu
ZWQoSEFWRV9TQV9MRU4pCisJCQlzYV9sZW4gPSAoaW50KXNpemVvZihzdHJ1Y3Qgc29ja2FkZHJf
Y29ubik7CisjZW5kaWYKIAkJCWJyZWFrOwogCQl9CiAJCWRlZmF1bHQ6Ci0JCQlwcmludGYoIlVu
a25vd24gZmFtaWx5OiAlZCIsIGFkZHItPnNhX2ZhbWlseSk7CisJCQlkZWJ1Z19wcmludGZfY2xl
YW4oIlVua25vd24gZmFtaWx5OiAlZCIsIGFkZHItPnNhX2ZhbWlseSk7CisjaWYgIWRlZmluZWQo
SEFWRV9TQV9MRU4pCisJCQlzYV9sZW4gPSAoaW50KXNpemVvZihzdHJ1Y3Qgc29ja2FkZHIpOwor
I2VuZGlmCiAJCQlicmVhazsKIAkJfQorI2lmICFkZWZpbmVkKEhBVkVfU0FfTEVOKQorCQlhZGRy
ID0gKHN0cnVjdCBzb2NrYWRkciAqKSgoY2hhciAqKWFkZHIgKyBzYV9sZW4pOworI2Vsc2UKIAkJ
YWRkciA9IChzdHJ1Y3Qgc29ja2FkZHIgKikoKGNhZGRyX3QpYWRkciArIGFkZHItPnNhX2xlbik7
CisjZW5kaWYKIAkJaWYgKGkgIT0gbiAtIDEpIHsKLQkJCXByaW50ZigiLCIpOworCQkJZGVidWdf
cHJpbnRmX2NsZWFuKCIsIik7CiAJCX0KIAl9CiAJaWYgKG4gPiAwKSB7CiAJCXVzcnNjdHBfZnJl
ZWxhZGRycyhhZGRycyk7CiAJfQotCXByaW50ZigiPC0+Iik7CisJZGVidWdfcHJpbnRmX2NsZWFu
KCI8LT4iKTsKIAluID0gdXNyc2N0cF9nZXRwYWRkcnMoc29jaywgMCwgJmFkZHJzKTsKIAlhZGRy
ID0gYWRkcnM7CiAJZm9yIChpID0gMDsgaSA8IG47IGkrKykgewpAQCAtMjE3LDcgKzI3MiwxMCBA
QCBwcmludF9hZGRyZXNzZXMoc3RydWN0IHNvY2tldCAqc29jaykKIAogCQkJc2luID0gKHN0cnVj
dCBzb2NrYWRkcl9pbiAqKWFkZHI7CiAJCQluYW1lID0gaW5ldF9udG9wKEFGX0lORVQsICZzaW4t
PnNpbl9hZGRyLCBidWYsIElORVRfQUREUlNUUkxFTik7Ci0JCQlwcmludGYoIiVzOiVkIiwgbmFt
ZSwgbnRvaHMoc2luLT5zaW5fcG9ydCkpOworCQkJZGVidWdfcHJpbnRmX2NsZWFuKCIlczolZCIs
IG5hbWUsIG50b2hzKHNpbi0+c2luX3BvcnQpKTsKKyNpZiAhZGVmaW5lZChIQVZFX1NBX0xFTikK
KwkJCXNhX2xlbiA9IChpbnQpc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7CisjZW5kaWYKIAkJ
CWJyZWFrOwogCQl9CiAJCWNhc2UgQUZfSU5FVDY6CkBAIC0yMjgsNyArMjg2LDEwIEBAIHByaW50
X2FkZHJlc3NlcyhzdHJ1Y3Qgc29ja2V0ICpzb2NrKQogCiAJCQlzaW42ID0gKHN0cnVjdCBzb2Nr
YWRkcl9pbjYgKilhZGRyOwogCQkJbmFtZSA9IGluZXRfbnRvcChBRl9JTkVUNiwgJnNpbjYtPnNp
bjZfYWRkciwgYnVmLCBJTkVUNl9BRERSU1RSTEVOKTsKLQkJCXByaW50ZigiJXM6JWQiLCBuYW1l
LCBudG9ocyhzaW42LT5zaW42X3BvcnQpKTsKKwkJCWRlYnVnX3ByaW50Zl9jbGVhbigiJXM6JWQi
LCBuYW1lLCBudG9ocyhzaW42LT5zaW42X3BvcnQpKTsKKyNpZiAhZGVmaW5lZChIQVZFX1NBX0xF
TikKKwkJCXNhX2xlbiA9IChpbnQpc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpOworI2VuZGlm
CiAJCQlicmVhazsKIAkJfQogCQljYXNlIEFGX0NPTk46CkBAIC0yMzYsNDQgKzI5Nyw0NCBAQCBw
cmludF9hZGRyZXNzZXMoc3RydWN0IHNvY2tldCAqc29jaykKIAkJCXN0cnVjdCBzb2NrYWRkcl9j
b25uICpzY29ubjsKIAogCQkJc2Nvbm4gPSAoc3RydWN0IHNvY2thZGRyX2Nvbm4gKilhZGRyOwot
CQkJcHJpbnRmKCIlcDolZCIsIHNjb25uLT5zY29ubl9hZGRyLCBudG9ocyhzY29ubi0+c2Nvbm5f
cG9ydCkpOworCQkJZGVidWdfcHJpbnRmX2NsZWFuKCIlcDolZCIsIHNjb25uLT5zY29ubl9hZGRy
LCBudG9ocyhzY29ubi0+c2Nvbm5fcG9ydCkpOworI2lmICFkZWZpbmVkKEhBVkVfU0FfTEVOKQor
CQkJc2FfbGVuID0gKGludClzaXplb2Yoc3RydWN0IHNvY2thZGRyX2Nvbm4pOworI2VuZGlmCiAJ
CQlicmVhazsKIAkJfQogCQlkZWZhdWx0OgotCQkJcHJpbnRmKCJVbmtub3duIGZhbWlseTogJWQi
LCBhZGRyLT5zYV9mYW1pbHkpOworCQkJZGVidWdfcHJpbnRmX2NsZWFuKCJVbmtub3duIGZhbWls
eTogJWQiLCBhZGRyLT5zYV9mYW1pbHkpOworI2lmICFkZWZpbmVkKEhBVkVfU0FfTEVOKQorCQkJ
c2FfbGVuID0gKGludClzaXplb2Yoc3RydWN0IHNvY2thZGRyKTsKKyNlbmRpZgogCQkJYnJlYWs7
CiAJCX0KKyNpZiAhZGVmaW5lZChIQVZFX1NBX0xFTikKKwkJYWRkciA9IChzdHJ1Y3Qgc29ja2Fk
ZHIgKikoKGNoYXIgKilhZGRyICsgc2FfbGVuKTsKKyNlbHNlCiAJCWFkZHIgPSAoc3RydWN0IHNv
Y2thZGRyICopKChjYWRkcl90KWFkZHIgKyBhZGRyLT5zYV9sZW4pOworI2VuZGlmCiAJCWlmIChp
ICE9IG4gLSAxKSB7Ci0JCQlwcmludGYoIiwiKTsKKwkJCWRlYnVnX3ByaW50Zl9jbGVhbigiLCIp
OwogCQl9CiAJfQogCWlmIChuID4gMCkgewogCQl1c3JzY3RwX2ZyZWVwYWRkcnMoYWRkcnMpOwog
CX0KLQlwcmludGYoIlxuIik7Ci19Ci0jZW5kaWYKLQotdm9pZAotZGVidWdfcHJpbnRmKGNvbnN0
IGNoYXIgKmZvcm1hdCwgLi4uKQotewotCXZhX2xpc3QgYXA7Ci0KLQl2YV9zdGFydChhcCwgZm9y
bWF0KTsKLQl2cHJpbnRmKGZvcm1hdCwgYXApOwotCXZhX2VuZChhcCk7CisJZGVidWdfcHJpbnRm
X2NsZWFuKCJcbiIpOwogfQogCiBpbnQKLW1haW4odm9pZCkKK21haW4oaW50IGFyZ2MsIGNoYXIg
KmFyZ3ZbXSkKIHsKIAlzdHJ1Y3Qgc29ja2FkZHJfaW4gc2luX3MsIHNpbl9jOwogCXN0cnVjdCBz
b2NrYWRkcl9jb25uIHNjb25uOworCXN0cnVjdCBzY3RwX3BhZGRycGFyYW1zIHBhZGRycGFyYW1z
OwogI2lmZGVmIF9XSU4zMgogCVNPQ0tFVCBmZF9jLCBmZF9zOwogI2Vsc2UKLQlpbnQgZmRfYywg
ZmRfczsKKwlpbnQgZmRfYywgZmRfcywgcmM7CiAjZW5kaWYKIAlzdHJ1Y3Qgc29ja2V0ICpzX2Ms
ICpzX3MsICpzX2w7CiAjaWZkZWYgX1dJTjMyCkBAIC0yODEsMjkgKzM0Miw1NSBAQCBtYWluKHZv
aWQpCiAjZWxzZQogCXB0aHJlYWRfdCB0aWRfYywgdGlkX3M7CiAjZW5kaWYKLQlpbnQgY3VyX2J1
Zl9zaXplLCBzbmRfYnVmX3NpemUsIHJjdl9idWZfc2l6ZTsKKwlpbnQgaSwgaiwgY3VyX2J1Zl9z
aXplLCBzbmRfYnVmX3NpemUsIHJjdl9idWZfc2l6ZSwgc2VuZHZfcmV0cmllc19sZWZ0OwogCXNv
Y2tsZW5fdCBvcHRfbGVuOwogCXN0cnVjdCBzY3RwX3NuZGluZm8gc25kaW5mbzsKIAljaGFyICps
aW5lOwogI2lmZGVmIF9XSU4zMgogCVdTQURBVEEgd3NhRGF0YTsKICNlbmRpZgorCXVpbnQxNl90
IGNsaWVudF9wb3J0ID0gOTkwMDsKKwl1aW50MTZfdCBzZXJ2ZXJfcG9ydCA9IDk5MDE7CisKKwlp
ZiAoYXJnYyA+IDEpIHsKKwkJY2xpZW50X3BvcnQgPSBhdG9pKGFyZ3ZbMV0pOworCX0KKworCWlm
IChhcmdjID4gMikgeworCQlzZXJ2ZXJfcG9ydCA9IGF0b2koYXJndlsyXSk7CisJfQorCisJaWYg
KGFyZ2MgPiAzKSB7CisJCWNyYzMyY19vZmZsb2FkaW5nID0gYXRvaShhcmd2WzNdKTsKKwl9CisK
KwlkZWJ1Z19wcmludGYoIlN0YXJ0aW5nIHByb2dyYW1cbiIpOworCWRlYnVnX3ByaW50ZigiQ29u
ZmlnOlxuXHRDbGllbnQgUG9ydDpcdCVkXG5cdFNlcnZlciBQb3J0Olx0JWRcblx0Q1JDMzJDIENh
bGM6XHQlc1xuIiwgY2xpZW50X3BvcnQsIHNlcnZlcl9wb3J0LCBjcmMzMmNfb2ZmbG9hZGluZyA/
ICJvZmZsb2FkZWQiIDogIk5PVCBvZmZsb2FkZWQiKTsKIAogI2lmZGVmIF9XSU4zMgogCWlmIChX
U0FTdGFydHVwKE1BS0VXT1JEKDIsMiksICZ3c2FEYXRhKSAhPSAwKSB7Ci0JCXByaW50ZigiV1NB
U3RhcnR1cCBmYWlsZWRcbiIpOworCQlkZWJ1Z19wcmludGYoIldTQVN0YXJ0dXAgZmFpbGVkXG4i
KTsKIAkJZXhpdCAoRVhJVF9GQUlMVVJFKTsKIAl9CiAjZW5kaWYKLQl1c3JzY3RwX2luaXQoMCwg
Y29ubl9vdXRwdXQsIGRlYnVnX3ByaW50Zik7CisJdXNyc2N0cF9pbml0KDAsIGNvbm5fb3V0cHV0
LCBkZWJ1Z19wcmludGZfc3RhY2spOworCisjaWZkZWYgU0NUUF9ERUJVRworCXVzcnNjdHBfc3lz
Y3RsX3NldF9zY3RwX2RlYnVnX29uKFNDVFBfREVCVUdfTk9ORSk7CisjZW5kaWYKKworCWlmIChj
cmMzMmNfb2ZmbG9hZGluZykgeworCQl1c3JzY3RwX2VuYWJsZV9jcmMzMmNfb2ZmbG9hZCgpOwor
CX0KKwogCS8qIHNldCB1cCBhIGNvbm5lY3RlZCBVRFAgc29ja2V0ICovCiAjaWZkZWYgX1dJTjMy
CiAJaWYgKChmZF9jID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfREdSQU0sIElQUFJPVE9fVURQKSkg
PT0gSU5WQUxJRF9TT0NLRVQpIHsKLQkJcHJpbnRmKCJzb2NrZXQoKSBmYWlsZWQgd2l0aCBlcnJv
cjogJWRcbiIsIFdTQUdldExhc3RFcnJvcigpKTsKKwkJZGVidWdfcHJpbnRmKCJzb2NrZXQoKSBm
YWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIFdTQUdldExhc3RFcnJvcigpKTsKIAkJZXhpdChFWElU
X0ZBSUxVUkUpOwogCX0KIAlpZiAoKGZkX3MgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwg
SVBQUk9UT19VRFApKSA9PSBJTlZBTElEX1NPQ0tFVCkgewotCQlwcmludGYoInNvY2tldCgpIGZh
aWxlZCB3aXRoIGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOworCQlkZWJ1Z19wcmlu
dGYoInNvY2tldCgpIGZhaWxlZCB3aXRoIGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkp
OwogCQlleGl0KEVYSVRfRkFJTFVSRSk7CiAJfQogI2Vsc2UKQEAgLTMyMSwyMiArNDA4LDIyIEBA
IG1haW4odm9pZCkKICNpZmRlZiBIQVZFX1NJTl9MRU4KIAlzaW5fYy5zaW5fbGVuID0gc2l6ZW9m
KHN0cnVjdCBzb2NrYWRkcl9pbik7CiAjZW5kaWYKLQlzaW5fYy5zaW5fcG9ydCA9IGh0b25zKDk5
MDApOworCXNpbl9jLnNpbl9wb3J0ID0gaHRvbnMoY2xpZW50X3BvcnQpOwogCXNpbl9jLnNpbl9h
ZGRyLnNfYWRkciA9IGh0b25sKElOQUREUl9MT09QQkFDSyk7CiAJbWVtc2V0KCZzaW5fcywgMCwg
c2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOwogCXNpbl9zLnNpbl9mYW1pbHkgPSBBRl9JTkVU
OwogI2lmZGVmIEhBVkVfU0lOX0xFTgogCXNpbl9zLnNpbl9sZW4gPSBzaXplb2Yoc3RydWN0IHNv
Y2thZGRyX2luKTsKICNlbmRpZgotCXNpbl9zLnNpbl9wb3J0ID0gaHRvbnMoOTkwMSk7CisJc2lu
X3Muc2luX3BvcnQgPSBodG9ucyhzZXJ2ZXJfcG9ydCk7CiAJc2luX3Muc2luX2FkZHIuc19hZGRy
ID0gaHRvbmwoSU5BRERSX0xPT1BCQUNLKTsKICNpZmRlZiBfV0lOMzIKIAlpZiAoYmluZChmZF9j
LCAoc3RydWN0IHNvY2thZGRyICopJnNpbl9jLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSkg
PT0gU09DS0VUX0VSUk9SKSB7Ci0JCXByaW50ZigiYmluZCgpIGZhaWxlZCB3aXRoIGVycm9yOiAl
ZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOworCQlkZWJ1Z19wcmludGYoImJpbmQoKSBmYWlsZWQg
d2l0aCBlcnJvcjogJWRcbiIsIFdTQUdldExhc3RFcnJvcigpKTsKIAkJZXhpdChFWElUX0ZBSUxV
UkUpOwogCX0KIAlpZiAoYmluZChmZF9zLCAoc3RydWN0IHNvY2thZGRyICopJnNpbl9zLCBzaXpl
b2Yoc3RydWN0IHNvY2thZGRyX2luKSkgPT0gU09DS0VUX0VSUk9SKSB7Ci0JCXByaW50ZigiYmlu
ZCgpIGZhaWxlZCB3aXRoIGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOworCQlkZWJ1
Z19wcmludGYoImJpbmQoKSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIFdTQUdldExhc3RFcnJv
cigpKTsKIAkJZXhpdChFWElUX0ZBSUxVUkUpOwogCX0KICNlbHNlCkBAIC0zNTEsMTEgKzQzOCwx
MSBAQCBtYWluKHZvaWQpCiAjZW5kaWYKICNpZmRlZiBfV0lOMzIKIAlpZiAoY29ubmVjdChmZF9j
LCAoc3RydWN0IHNvY2thZGRyICopJnNpbl9zLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSkg
PT0gU09DS0VUX0VSUk9SKSB7Ci0JCXByaW50ZigiY29ubmVjdCgpIGZhaWxlZCB3aXRoIGVycm9y
OiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOworCQlkZWJ1Z19wcmludGYoImNvbm5lY3QoKSBm
YWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIFdTQUdldExhc3RFcnJvcigpKTsKIAkJZXhpdChFWElU
X0ZBSUxVUkUpOwogCX0KIAlpZiAoY29ubmVjdChmZF9zLCAoc3RydWN0IHNvY2thZGRyICopJnNp
bl9jLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSkgPT0gU09DS0VUX0VSUk9SKSB7Ci0JCXBy
aW50ZigiY29ubmVjdCgpIGZhaWxlZCB3aXRoIGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9y
KCkpOworCQlkZWJ1Z19wcmludGYoImNvbm5lY3QoKSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIs
IFdTQUdldExhc3RFcnJvcigpKTsKIAkJZXhpdChFWElUX0ZBSUxVUkUpOwogCX0KICNlbHNlCkBA
IC0zNjksMjIgKzQ1NiwyNiBAQCBtYWluKHZvaWQpCiAJfQogI2VuZGlmCiAjaWZkZWYgX1dJTjMy
Ci0JdGlkX2MgPSBDcmVhdGVUaHJlYWQoTlVMTCwgMCwgJmhhbmRsZV9wYWNrZXRzLCAodm9pZCAq
KSZmZF9jLCAwLCBOVUxMKTsKLQl0aWRfcyA9IENyZWF0ZVRocmVhZChOVUxMLCAwLCAmaGFuZGxl
X3BhY2tldHMsICh2b2lkICopJmZkX3MsIDAsIE5VTEwpOworCWlmICgodGlkX2MgPSBDcmVhdGVU
aHJlYWQoTlVMTCwgMCwgJmhhbmRsZV9wYWNrZXRzLCAodm9pZCAqKSZmZF9jLCAwLCBOVUxMKSkg
PT0gTlVMTCkgeworCQlkZWJ1Z19wcmludGYoIkNyZWF0ZVRocmVhZCgpIGZhaWxlZCB3aXRoIGVy
cm9yOiAlZFxuIiwgR2V0TGFzdEVycm9yKCkpOworCQlleGl0KEVYSVRfRkFJTFVSRSk7CisJfQor
CWlmICgodGlkX3MgPSBDcmVhdGVUaHJlYWQoTlVMTCwgMCwgJmhhbmRsZV9wYWNrZXRzLCAodm9p
ZCAqKSZmZF9zLCAwLCBOVUxMKSkgPT0gTlVMTCkgeworCQlkZWJ1Z19wcmludGYoIkNyZWF0ZVRo
cmVhZCgpIGZhaWxlZCB3aXRoIGVycm9yOiAlZFxuIiwgR2V0TGFzdEVycm9yKCkpOworCQlleGl0
KEVYSVRfRkFJTFVSRSk7CisJfQogI2Vsc2UKLQlpZiAocHRocmVhZF9jcmVhdGUoJnRpZF9jLCBO
VUxMLCAmaGFuZGxlX3BhY2tldHMsICh2b2lkICopJmZkX2MpKSB7Ci0JCXBlcnJvcigicHRocmVh
ZF9jcmVhdGUgdGlkX2MiKTsKKwlpZiAoKHJjID0gcHRocmVhZF9jcmVhdGUoJnRpZF9jLCBOVUxM
LCAmaGFuZGxlX3BhY2tldHMsICh2b2lkICopJmZkX2MpKSAhPSAwKSB7CisJCWRlYnVnX3ByaW50
Zl9jbGVhbigicHRocmVhZF9jcmVhdGUgdGlkX2M6ICVzXG4iLCBzdHJlcnJvcihyYykpOwogCQll
eGl0KEVYSVRfRkFJTFVSRSk7CiAJfQogCi0JaWYgKHB0aHJlYWRfY3JlYXRlKCZ0aWRfcywgTlVM
TCwgJmhhbmRsZV9wYWNrZXRzLCAodm9pZCAqKSZmZF9zKSkgewotCQlwZXJyb3IoInB0aHJlYWRf
Y3JlYXRlIHRpZF9zIik7CisJaWYgKChyYyA9IHB0aHJlYWRfY3JlYXRlKCZ0aWRfcywgTlVMTCwg
JmhhbmRsZV9wYWNrZXRzLCAodm9pZCAqKSZmZF9zKSkgIT0gMCkgeworCQlkZWJ1Z19wcmludGZf
Y2xlYW4oInB0aHJlYWRfY3JlYXRlIHRpZF9zOiAlc1xuIiwgc3RyZXJyb3IocmMpKTsKIAkJZXhp
dChFWElUX0ZBSUxVUkUpOwogCX07CiAjZW5kaWYKLSNpZmRlZiBTQ1RQX0RFQlVHCi0JdXNyc2N0
cF9zeXNjdGxfc2V0X3NjdHBfZGVidWdfb24oU0NUUF9ERUJVR19OT05FKTsKLSNlbmRpZgorCiAJ
dXNyc2N0cF9zeXNjdGxfc2V0X3NjdHBfZWNuX2VuYWJsZSgwKTsKIAl1c3JzY3RwX3JlZ2lzdGVy
X2FkZHJlc3MoKHZvaWQgKikmZmRfYyk7CiAJdXNyc2N0cF9yZWdpc3Rlcl9hZGRyZXNzKCh2b2lk
ICopJmZkX3MpOwpAQCAtMzk4LDcgKzQ4OSw3IEBAIG1haW4odm9pZCkKIAkJcGVycm9yKCJ1c3Jz
Y3RwX2dldHNvY2tvcHQiKTsKIAkJZXhpdChFWElUX0ZBSUxVUkUpOwogCX0KLQlwcmludGYoIkNo
YW5nZSBzZW5kIHNvY2tldCBidWZmZXIgc2l6ZSBmcm9tICVkICIsIGN1cl9idWZfc2l6ZSk7CisJ
ZGVidWdfcHJpbnRmKCJDaGFuZ2Ugc2VuZCBzb2NrZXQgYnVmZmVyIHNpemUgZnJvbSAlZCAiLCBj
dXJfYnVmX3NpemUpOwogCXNuZF9idWZfc2l6ZSA9IDE8PDIyOyAvKiA0IE1CICovCiAJaWYgKHVz
cnNjdHBfc2V0c29ja29wdChzX2MsIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgJnNuZF9idWZfc2l6
ZSwgc2l6ZW9mKGludCkpIDwgMCkgewogCQlwZXJyb3IoInVzcnNjdHBfc2V0c29ja29wdCIpOwpA
QCAtNDEwLDcgKzUwMSwxOCBAQCBtYWluKHZvaWQpCiAJCXBlcnJvcigidXNyc2N0cF9nZXRzb2Nr
b3B0Iik7CiAJCWV4aXQoRVhJVF9GQUlMVVJFKTsKIAl9Ci0JcHJpbnRmKCJ0byAlZC5cbiIsIGN1
cl9idWZfc2l6ZSk7CisJZGVidWdfcHJpbnRmX2NsZWFuKCJ0byAlZC5cbiIsIGN1cl9idWZfc2l6
ZSk7CisJbWVtc2V0KCZwYWRkcnBhcmFtcywgMCwgc2l6ZW9mKHN0cnVjdCBzY3RwX3BhZGRycGFy
YW1zKSk7CisJcGFkZHJwYXJhbXMuc3BwX2FkZHJlc3Muc3NfZmFtaWx5ID0gQUZfQ09OTjsKKyNp
ZmRlZiBIQVZFX1NDT05OX0xFTgorCXBhZGRycGFyYW1zLnNwcF9hZGRyZXNzLnNzX2xlbiA9IHNp
emVvZihzdHJ1Y3Qgc29ja2FkZHJfY29ubik7CisjZW5kaWYKKwlwYWRkcnBhcmFtcy5zcHBfZmxh
Z3MgPSBTUFBfUE1UVURfRElTQUJMRTsKKwlwYWRkcnBhcmFtcy5zcHBfcGF0aG10dSA9IDkwMDA7
CisJaWYgKHVzcnNjdHBfc2V0c29ja29wdChzX2MsIElQUFJPVE9fU0NUUCwgU0NUUF9QRUVSX0FE
RFJfUEFSQU1TLCAmcGFkZHJwYXJhbXMsIHNpemVvZihzdHJ1Y3Qgc2N0cF9wYWRkcnBhcmFtcykp
IDwgMCkgeworCQlwZXJyb3IoInVzcnNjdHBfc2V0c29ja29wdCIpOworCQlleGl0KEVYSVRfRkFJ
TFVSRSk7CisJfQogCWlmICgoc19sID0gdXNyc2N0cF9zb2NrZXQoQUZfQ09OTiwgU09DS19TVFJF
QU0sIElQUFJPVE9fU0NUUCwgcmVjZWl2ZV9jYiwgTlVMTCwgMCwgJmZkX3MpKSA9PSBOVUxMKSB7
CiAJCXBlcnJvcigidXNyc2N0cF9zb2NrZXQiKTsKIAkJZXhpdChFWElUX0ZBSUxVUkUpOwpAQCAt
NDIxLDcgKzUyMyw3IEBAIG1haW4odm9pZCkKIAkJcGVycm9yKCJ1c3JzY3RwX2dldHNvY2tvcHQi
KTsKIAkJZXhpdChFWElUX0ZBSUxVUkUpOwogCX0KLQlwcmludGYoIkNoYW5nZSByZWNlaXZlIHNv
Y2tldCBidWZmZXIgc2l6ZSBmcm9tICVkICIsIGN1cl9idWZfc2l6ZSk7CisJZGVidWdfcHJpbnRm
KCJDaGFuZ2UgcmVjZWl2ZSBzb2NrZXQgYnVmZmVyIHNpemUgZnJvbSAlZCAiLCBjdXJfYnVmX3Np
emUpOwogCXJjdl9idWZfc2l6ZSA9IDE8PDE2OyAvKiA2NCBLQiAqLwogCWlmICh1c3JzY3RwX3Nl
dHNvY2tvcHQoc19sLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsICZyY3ZfYnVmX3NpemUsIHNpemVv
ZihpbnQpKSA8IDApIHsKIAkJcGVycm9yKCJ1c3JzY3RwX3NldHNvY2tvcHQiKTsKQEAgLTQzMyw3
ICs1MzUsNyBAQCBtYWluKHZvaWQpCiAJCXBlcnJvcigidXNyc2N0cF9nZXRzb2Nrb3B0Iik7CiAJ
CWV4aXQoRVhJVF9GQUlMVVJFKTsKIAl9Ci0JcHJpbnRmKCJ0byAlZC5cbiIsIGN1cl9idWZfc2l6
ZSk7CisJZGVidWdfcHJpbnRmX2NsZWFuKCJ0byAlZC5cbiIsIGN1cl9idWZfc2l6ZSk7CiAJLyog
QmluZCB0aGUgY2xpZW50IHNpZGUuICovCiAJbWVtc2V0KCZzY29ubiwgMCwgc2l6ZW9mKHN0cnVj
dCBzb2NrYWRkcl9jb25uKSk7CiAJc2Nvbm4uc2Nvbm5fZmFtaWx5ID0gQUZfQ09OTjsKQEAgLTQ4
MCwzMSArNTgyLDUzIEBAIG1haW4odm9pZCkKIAkJZXhpdChFWElUX0ZBSUxVUkUpOwogCX0KIAl1
c3JzY3RwX2Nsb3NlKHNfbCk7CisJcHJpbnRfYWRkcmVzc2VzKHNfcyk7CisKIAlpZiAoKGxpbmUg
PSBtYWxsb2MoTElORV9MRU5HVEgpKSA9PSBOVUxMKSB7CiAJCWV4aXQoRVhJVF9GQUlMVVJFKTsK
IAl9CiAJbWVtc2V0KGxpbmUsICdBJywgTElORV9MRU5HVEgpOwogCXNuZGluZm8uc25kX3NpZCA9
IDE7Ci0Jc25kaW5mby5zbmRfZmxhZ3MgPSAwOwogCXNuZGluZm8uc25kX3BwaWQgPSBodG9ubChE
SVNDQVJEX1BQSUQpOwogCXNuZGluZm8uc25kX2NvbnRleHQgPSAwOwogCXNuZGluZm8uc25kX2Fz
c29jX2lkID0gMDsKLQkvKiBTZW5kIGEgMSBNQiBvcmRlcmVkIG1lc3NhZ2UgKi8KLQlpZiAodXNy
c2N0cF9zZW5kdihzX2MsIGxpbmUsIExJTkVfTEVOR1RILCBOVUxMLCAwLCAodm9pZCAqKSZzbmRp
bmZvLAotCSAgICAgICAgICAgICAgICAgKHNvY2tsZW5fdClzaXplb2Yoc3RydWN0IHNjdHBfc25k
aW5mbyksIFNDVFBfU0VORFZfU05ESU5GTywgMCkgPCAwKSB7Ci0JCXBlcnJvcigidXNyc2N0cF9z
ZW5kdiIpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0JfQotCS8qIFNlbmQgYSAxIE1CIG9yZGVy
ZWQgbWVzc2FnZSAqLwotCWlmICh1c3JzY3RwX3NlbmR2KHNfYywgbGluZSwgTElORV9MRU5HVEgs
IE5VTEwsIDAsICh2b2lkICopJnNuZGluZm8sCi0JICAgICAgICAgICAgICAgICAoc29ja2xlbl90
KXNpemVvZihzdHJ1Y3Qgc2N0cF9zbmRpbmZvKSwgU0NUUF9TRU5EVl9TTkRJTkZPLCAwKSA8IDAp
IHsKLQkJcGVycm9yKCJ1c3JzY3RwX3NlbmR2Iik7Ci0JCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwor
CWZvciAoaSA9IDA7IGkgPCBOVU1CRVJfT0ZfU1RFUFM7IGkrKykgeworCQlpZiAoaSAlIDIpIHsK
KwkJCXNuZGluZm8uc25kX2ZsYWdzID0gU0NUUF9VTk9SREVSRUQ7CisJCX0gZWxzZSB7CisJCQlz
bmRpbmZvLnNuZF9mbGFncyA9IDA7CisJCX0KKwkJZm9yIChqID0gMDsgaiA8IDI7IGorKykgewor
CQkJLyogU2VuZCBhIDEgTUIgbWVzc2FnZSAqLworCQkJc2VuZHZfcmV0cmllc19sZWZ0ID0gMTIw
OworCQkJZGVidWdfcHJpbnRmKCJ1c3JzY3Bfc2VuZHYgLSBzdGVwICVkIC0gY2FsbCAlZCBmbGFn
cyAleFxuIiwgaSwgaiArIDEsIHNuZGluZm8uc25kX2ZsYWdzKTsKKwkJCXdoaWxlICh1c3JzY3Rw
X3NlbmR2KHNfYywgbGluZSwgTElORV9MRU5HVEgsIE5VTEwsIDAsICh2b2lkICopJnNuZGluZm8s
CisJCQkJCSAoc29ja2xlbl90KXNpemVvZihzdHJ1Y3Qgc2N0cF9zbmRpbmZvKSwgU0NUUF9TRU5E
Vl9TTkRJTkZPLCAwKSA8IDApIHsKKwkJCQlkZWJ1Z19wcmludGYoInVzcnNjdHBfc2VuZHYgLSBl
cnJubzogJWQgLSAlc1xuIiwgZXJybm8sIHN0cmVycm9yKGVycm5vKSk7CisJCQkJaWYgKGVycm5v
ICE9IEVXT1VMREJMT0NLIHx8ICFzZW5kdl9yZXRyaWVzX2xlZnQpIHsKKwkJCQkJZXhpdChFWElU
X0ZBSUxVUkUpOworCQkJCX0KKwkJCQlzZW5kdl9yZXRyaWVzX2xlZnQtLTsKKyNpZmRlZiBfV0lO
MzIKKwkJCQlTbGVlcCgxMDAwKTsKKyNlbHNlCisJCQkJc2xlZXAoMSk7CisjZW5kaWYKKwkJCX0K
KwkJfQorCQlkZWJ1Z19wcmludGYoIlNlbmRpbmcgZG9uZSwgc2xlZXBpbmdcbiIpOworI2lmZGVm
IF9XSU4zMgorCQlTbGVlcCgxMDAwKTsKKyNlbHNlCisJCXNsZWVwKDEpOworI2VuZGlmCiAJfQog
CWZyZWUobGluZSk7CiAJdXNyc2N0cF9zaHV0ZG93bihzX2MsIFNIVVRfV1IpOwogCiAJd2hpbGUg
KHVzcnNjdHBfZmluaXNoKCkgIT0gMCkgeworCQlkZWJ1Z19wcmludGYoIldhaXRpbmcgZm9yIHVz
cnNjdHBfZmluaXNoKClcbiIpOwogI2lmZGVmIF9XSU4zMgogCQlTbGVlcCgxMDAwKTsKICNlbHNl
CkBAIC01MTcsMTEgKzY0MSwxMSBAQCBtYWluKHZvaWQpCiAJVGVybWluYXRlVGhyZWFkKHRpZF9z
LCAwKTsKIAlXYWl0Rm9yU2luZ2xlT2JqZWN0KHRpZF9zLCBJTkZJTklURSk7CiAJaWYgKGNsb3Nl
c29ja2V0KGZkX2MpID09IFNPQ0tFVF9FUlJPUikgewotCQlwcmludGYoImNsb3Nlc29ja2V0KCkg
ZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7CisJCWRlYnVnX3By
aW50ZigiY2xvc2Vzb2NrZXQoKSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIFdTQUdldExhc3RF
cnJvcigpKTsKIAkJZXhpdChFWElUX0ZBSUxVUkUpOwogCX0KIAlpZiAoY2xvc2Vzb2NrZXQoZmRf
cykgPT0gU09DS0VUX0VSUk9SKSB7Ci0JCXByaW50ZigiY2xvc2Vzb2NrZXQoKSBmYWlsZWQgd2l0
aCBlcnJvcjogJWRcbiIsIFdTQUdldExhc3RFcnJvcigpKTsKKwkJZGVidWdfcHJpbnRmKCJjbG9z
ZXNvY2tldCgpIGZhaWxlZCB3aXRoIGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOwog
CQlleGl0KEVYSVRfRkFJTFVSRSk7CiAJfQogCVdTQUNsZWFudXAoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3Jz
Y3RwbGliL3Byb2dyYW1zL2Vrcl9sb29wX29mZmxvYWQuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2Vr
cl9sb29wX29mZmxvYWQuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTVmN2Q3ZmM2
OTQ1Yjc1YTA2MDVkNzg1ZWE1OTVkNzhkNjYxNmM2YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9la3JfbG9vcF9vZmZsb2Fk
LmMKKysrIC9kZXYvbnVsbApAQCAtMSw1NTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMS0yMDEzIE1pY2hhZWwgVHVleGVuCi0gKgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIHByb2plY3Qgbm9yIHRoZSBuYW1l
cyBvZiBpdHMgY29udHJpYnV0b3JzCi0gKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKLSAqICAgIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIFBST0pFQ1QgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
Ci0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0gKiBBUkUgRElTQ0xBSU1F
RC4JSU4gTk8gRVZFTlQgU0hBTEwgVEhFIFBST0pFQ1QgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RQotICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0gKiBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikKLSAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0gKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0gKiBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GCi0gKiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZkZWYgX1dJTjMyCi0jZGVmaW5lIF9D
UlRfU0VDVVJFX05PX1dBUk5JTkdTCi0jZW5kaWYKLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1
ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPHN0ZGFyZy5oPgot
I2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmbmRlZiBfV0lOMzIKLSNpbmNsdWRlIDxzeXMvc29j
a2V0Lmg+Ci0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotI2luY2x1ZGUgPGFycGEvaW5ldC5oPgot
I2luY2x1ZGUgPGVycm5vLmg+Ci0jaW5jbHVkZSA8cHRocmVhZC5oPgotI2luY2x1ZGUgPHVuaXN0
ZC5oPgotI2Vsc2UKLSNpbmNsdWRlIDx3aW5zb2NrMi5oPgotI2luY2x1ZGUgPHdzMnRjcGlwLmg+
Ci0jZW5kaWYKLSNpbmNsdWRlIDx1c3JzY3RwLmg+Ci0KLSNkZWZpbmUgTUFYX1BBQ0tFVF9TSVpF
ICgxPDwxNikKLSNkZWZpbmUgTElORV9MRU5HVEggKDE8PDIwKQotI2RlZmluZSBESVNDQVJEX1BQ
SUQgMzkKLQotI2lmZGVmIF9XSU4zMgotc3RhdGljIERXT1JEIFdJTkFQSQotI2Vsc2UKLXN0YXRp
YyB2b2lkICoKLSNlbmRpZgotaGFuZGxlX3BhY2tldHModm9pZCAqYXJnKQotewotI2lmZGVmIF9X
SU4zMgotCVNPQ0tFVCAqZmRwOwotI2Vsc2UKLQlpbnQgKmZkcDsKLSNlbmRpZgotCWNoYXIgKmR1
bXBfYnVmZmVyOwotCXN0cnVjdCBzY3RwX2NvbW1vbl9oZWFkZXIgKmhkcjsKLQlzc2l6ZV90IGxl
bmd0aDsKLQljaGFyIGJ1ZmZlcltNQVhfUEFDS0VUX1NJWkVdOwotCXVpbnQzMl90IHJlY2VpdmVk
X2NyYzMyYywgY29tcHV0ZWRfY3JjMzJjOwotCi0jaWZkZWYgX1dJTjMyCi0JZmRwID0gKFNPQ0tF
VCAqKWFyZzsKLSNlbHNlCi0JZmRwID0gKGludCAqKWFyZzsKLSNlbmRpZgotCWZvciAoOzspIHsK
LSNpZiBkZWZpbmVkKF9fTmV0QlNEX18pCi0JCXB0aHJlYWRfdGVzdGNhbmNlbCgpOwotI2VuZGlm
Ci0JCWxlbmd0aCA9IHJlY3YoKmZkcCwgYnVmZmVyLCBNQVhfUEFDS0VUX1NJWkUsIDApOwotCQlp
ZiAobGVuZ3RoID4gMCkgewotCQkJaWYgKChkdW1wX2J1ZmZlciA9IHVzcnNjdHBfZHVtcHBhY2tl
dChidWZmZXIsIChzaXplX3QpbGVuZ3RoLCBTQ1RQX0RVTVBfSU5CT1VORCkpICE9IE5VTEwpIHsK
LQkJCQkvL2ZwcmludGYoc3RkZXJyLCAiJXMiLCBkdW1wX2J1ZmZlcik7Ci0JCQkJdXNyc2N0cF9m
cmVlZHVtcGJ1ZmZlcihkdW1wX2J1ZmZlcik7Ci0JCQl9Ci0JCQlpZiAoKHNpemVfdClsZW5ndGgg
Pj0gc2l6ZW9mKHN0cnVjdCBzY3RwX2NvbW1vbl9oZWFkZXIpKSB7Ci0JCQkJaGRyID0gKHN0cnVj
dCBzY3RwX2NvbW1vbl9oZWFkZXIgKilidWZmZXI7Ci0JCQkJcmVjZWl2ZWRfY3JjMzJjID0gaGRy
LT5jcmMzMmM7Ci0JCQkJaGRyLT5jcmMzMmMgPSBodG9ubCgwKTsKLQkJCQljb21wdXRlZF9jcmMz
MmMgPSB1c3JzY3RwX2NyYzMyYyhidWZmZXIsIChzaXplX3QpbGVuZ3RoKTsKLQkJCQloZHItPmNy
YzMyYyA9IHJlY2VpdmVkX2NyYzMyYzsKLQkJCQlpZiAocmVjZWl2ZWRfY3JjMzJjID09IGNvbXB1
dGVkX2NyYzMyYykgewotCQkJCQl1c3JzY3RwX2Nvbm5pbnB1dChmZHAsIGJ1ZmZlciwgKHNpemVf
dClsZW5ndGgsIDApOwotCQkJCX0gZWxzZSB7Ci0JCQkJCWZwcmludGYoc3RkZXJyLCAiV3Jvbmcg
Q1JDMzJjOiBleHBlY3RlZCAlMDh4IHJlY2VpdmVkICUwOHhcbiIsCi0JCQkJCSAgICAgICAgbnRv
aGwoY29tcHV0ZWRfY3JjMzJjKSwgbnRvaGwocmVjZWl2ZWRfY3JjMzJjKSk7Ci0JCQkJfQotCQkJ
fSBlbHNlIHsKLQkJCQlmcHJpbnRmKHN0ZGVyciwgIlBhY2tldCB0b28gc2hvcnQ6IGxlbmd0aCAl
enUiLCAoc2l6ZV90KWxlbmd0aCk7Ci0JCQl9Ci0JCX0KLQl9Ci0jaWZkZWYgX1dJTjMyCi0JcmV0
dXJuIDA7Ci0jZWxzZQotCXJldHVybiAoTlVMTCk7Ci0jZW5kaWYKLX0KLQotc3RhdGljIGludAot
Y29ubl9vdXRwdXQodm9pZCAqYWRkciwgdm9pZCAqYnVmZmVyLCBzaXplX3QgbGVuZ3RoLCB1aW50
OF90IHRvcywgdWludDhfdCBzZXRfZGYpCi17Ci0JY2hhciAqZHVtcF9idWZmZXI7Ci0Jc3RydWN0
IHNjdHBfY29tbW9uX2hlYWRlciAqaGRyOwotI2lmZGVmIF9XSU4zMgotCVNPQ0tFVCAqZmRwOwot
I2Vsc2UKLQlpbnQgKmZkcDsKLSNlbmRpZgotCi0jaWZkZWYgX1dJTjMyCi0JZmRwID0gKFNPQ0tF
VCAqKWFkZHI7Ci0jZWxzZQotCWZkcCA9IChpbnQgKilhZGRyOwotI2VuZGlmCi0JaWYgKGxlbmd0
aCA+PSBzaXplb2Yoc3RydWN0IHNjdHBfY29tbW9uX2hlYWRlcikpIHsKLQkJaGRyID0gKHN0cnVj
dCBzY3RwX2NvbW1vbl9oZWFkZXIgKilidWZmZXI7Ci0JCWhkci0+Y3JjMzJjID0gdXNyc2N0cF9j
cmMzMmMoYnVmZmVyLCAoc2l6ZV90KWxlbmd0aCk7Ci0JfQotCWlmICgoZHVtcF9idWZmZXIgPSB1
c3JzY3RwX2R1bXBwYWNrZXQoYnVmZmVyLCBsZW5ndGgsIFNDVFBfRFVNUF9PVVRCT1VORCkpICE9
IE5VTEwpIHsKLQkJLy9mcHJpbnRmKHN0ZGVyciwgIiVzIiwgZHVtcF9idWZmZXIpOwotCQl1c3Jz
Y3RwX2ZyZWVkdW1wYnVmZmVyKGR1bXBfYnVmZmVyKTsKLQl9Ci0jaWZkZWYgX1dJTjMyCi0JaWYg
KHNlbmQoKmZkcCwgYnVmZmVyLCAoaW50KWxlbmd0aCwgMCkgPT0gU09DS0VUX0VSUk9SKSB7Ci0J
CXJldHVybiAoV1NBR2V0TGFzdEVycm9yKCkpOwotI2Vsc2UKLQlpZiAoc2VuZCgqZmRwLCBidWZm
ZXIsIGxlbmd0aCwgMCkgPCAwKSB7Ci0JCXJldHVybiAoZXJybm8pOwotI2VuZGlmCi0JfSBlbHNl
IHsKLQkJcmV0dXJuICgwKTsKLQl9Ci19Ci0KLXN0YXRpYyBpbnQKLXJlY2VpdmVfY2Ioc3RydWN0
IHNvY2tldCAqc29jaywgdW5pb24gc2N0cF9zb2Nrc3RvcmUgYWRkciwgdm9pZCAqZGF0YSwKLSAg
ICAgICAgICAgc2l6ZV90IGRhdGFsZW4sIHN0cnVjdCBzY3RwX3JjdmluZm8gcmN2LCBpbnQgZmxh
Z3MsIHZvaWQgKnVscF9pbmZvKQotewotCXByaW50ZigiTWVzc2FnZSAlcCByZWNlaXZlZCBvbiBz
b2NrID0gJXAuXG4iLCBkYXRhLCAodm9pZCAqKXNvY2spOwotCWlmIChkYXRhKSB7Ci0JCWlmICgo
ZmxhZ3MgJiBNU0dfTk9USUZJQ0FUSU9OKSA9PSAwKSB7Ci0JCQlwcmludGYoIk1lc3NzYWdlIG9m
IGxlbmd0aCAlZCByZWNlaXZlZCB2aWEgJXA6JXUgb24gc3RyZWFtICV1IHdpdGggU1NOICV1IGFu
ZCBUU04gJXUsIFBQSUQgJXUsIGNvbnRleHQgJXUsIGZsYWdzICV4LlxuIiwKLQkJCSAgICAgICAo
aW50KWRhdGFsZW4sCi0JCQkgICAgICAgYWRkci5zY29ubi5zY29ubl9hZGRyLAotCQkJICAgICAg
IG50b2hzKGFkZHIuc2Nvbm4uc2Nvbm5fcG9ydCksCi0JCQkgICAgICAgcmN2LnJjdl9zaWQsCi0J
CQkgICAgICAgcmN2LnJjdl9zc24sCi0JCQkgICAgICAgcmN2LnJjdl90c24sCi0JCQkgICAgICAg
bnRvaGwocmN2LnJjdl9wcGlkKSwKLQkJCSAgICAgICByY3YucmN2X2NvbnRleHQsCi0JCQkgICAg
ICAgZmxhZ3MpOwotCQl9Ci0JCWZyZWUoZGF0YSk7Ci0JfSBlbHNlIHsKLQkJdXNyc2N0cF9kZXJl
Z2lzdGVyX2FkZHJlc3ModWxwX2luZm8pOwotCQl1c3JzY3RwX2Nsb3NlKHNvY2spOwotCX0KLQly
ZXR1cm4gKDEpOwotfQotCi0jaWYgMAotc3RhdGljIHZvaWQKLXByaW50X2FkZHJlc3NlcyhzdHJ1
Y3Qgc29ja2V0ICpzb2NrKQotewotCWludCBpLCBuOwotCXN0cnVjdCBzb2NrYWRkciAqYWRkcnMs
ICphZGRyOwotCi0JbiA9IHVzcnNjdHBfZ2V0bGFkZHJzKHNvY2ssIDAsICZhZGRycyk7Ci0JYWRk
ciA9IGFkZHJzOwotCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLQkJc3dpdGNoIChhZGRyLT5z
YV9mYW1pbHkpIHsKLQkJY2FzZSBBRl9JTkVUOgotCQl7Ci0JCQlzdHJ1Y3Qgc29ja2FkZHJfaW4g
KnNpbjsKLQkJCWNoYXIgYnVmW0lORVRfQUREUlNUUkxFTl07Ci0JCQljb25zdCBjaGFyICpuYW1l
OwotCi0JCQlzaW4gPSAoc3RydWN0IHNvY2thZGRyX2luICopYWRkcjsKLQkJCW5hbWUgPSBpbmV0
X250b3AoQUZfSU5FVCwgJnNpbi0+c2luX2FkZHIsIGJ1ZiwgSU5FVF9BRERSU1RSTEVOKTsKLQkJ
CXByaW50ZigiJXM6JWQiLCBuYW1lLCBudG9ocyhzaW4tPnNpbl9wb3J0KSk7Ci0JCQlicmVhazsK
LQkJfQotCQljYXNlIEFGX0lORVQ2OgotCQl7Ci0JCQlzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW42
OwotCQkJY2hhciBidWZbSU5FVDZfQUREUlNUUkxFTl07Ci0JCQljb25zdCBjaGFyICpuYW1lOwot
Ci0JCQlzaW42ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilhZGRyOwotCQkJbmFtZSA9IGluZXRf
bnRvcChBRl9JTkVUNiwgJnNpbjYtPnNpbjZfYWRkciwgYnVmLCBJTkVUNl9BRERSU1RSTEVOKTsK
LQkJCXByaW50ZigiJXM6JWQiLCBuYW1lLCBudG9ocyhzaW42LT5zaW42X3BvcnQpKTsKLQkJCWJy
ZWFrOwotCQl9Ci0JCWNhc2UgQUZfQ09OTjoKLQkJewotCQkJc3RydWN0IHNvY2thZGRyX2Nvbm4g
KnNjb25uOwotCi0JCQlzY29ubiA9IChzdHJ1Y3Qgc29ja2FkZHJfY29ubiAqKWFkZHI7Ci0JCQlw
cmludGYoIiVwOiVkIiwgc2Nvbm4tPnNjb25uX2FkZHIsIG50b2hzKHNjb25uLT5zY29ubl9wb3J0
KSk7Ci0JCQlicmVhazsKLQkJfQotCQlkZWZhdWx0OgotCQkJcHJpbnRmKCJVbmtub3duIGZhbWls
eTogJWQiLCBhZGRyLT5zYV9mYW1pbHkpOwotCQkJYnJlYWs7Ci0JCX0KLQkJYWRkciA9IChzdHJ1
Y3Qgc29ja2FkZHIgKikoKGNhZGRyX3QpYWRkciArIGFkZHItPnNhX2xlbik7Ci0JCWlmIChpICE9
IG4gLSAxKSB7Ci0JCQlwcmludGYoIiwiKTsKLQkJfQotCX0KLQlpZiAobiA+IDApIHsKLQkJdXNy
c2N0cF9mcmVlbGFkZHJzKGFkZHJzKTsKLQl9Ci0JcHJpbnRmKCI8LT4iKTsKLQluID0gdXNyc2N0
cF9nZXRwYWRkcnMoc29jaywgMCwgJmFkZHJzKTsKLQlhZGRyID0gYWRkcnM7Ci0JZm9yIChpID0g
MDsgaSA8IG47IGkrKykgewotCQlzd2l0Y2ggKGFkZHItPnNhX2ZhbWlseSkgewotCQljYXNlIEFG
X0lORVQ6Ci0JCXsKLQkJCXN0cnVjdCBzb2NrYWRkcl9pbiAqc2luOwotCQkJY2hhciBidWZbSU5F
VF9BRERSU1RSTEVOXTsKLQkJCWNvbnN0IGNoYXIgKm5hbWU7Ci0KLQkJCXNpbiA9IChzdHJ1Y3Qg
c29ja2FkZHJfaW4gKilhZGRyOwotCQkJbmFtZSA9IGluZXRfbnRvcChBRl9JTkVULCAmc2luLT5z
aW5fYWRkciwgYnVmLCBJTkVUX0FERFJTVFJMRU4pOwotCQkJcHJpbnRmKCIlczolZCIsIG5hbWUs
IG50b2hzKHNpbi0+c2luX3BvcnQpKTsKLQkJCWJyZWFrOwotCQl9Ci0JCWNhc2UgQUZfSU5FVDY6
Ci0JCXsKLQkJCXN0cnVjdCBzb2NrYWRkcl9pbjYgKnNpbjY7Ci0JCQljaGFyIGJ1ZltJTkVUNl9B
RERSU1RSTEVOXTsKLQkJCWNvbnN0IGNoYXIgKm5hbWU7Ci0KLQkJCXNpbjYgPSAoc3RydWN0IHNv
Y2thZGRyX2luNiAqKWFkZHI7Ci0JCQluYW1lID0gaW5ldF9udG9wKEFGX0lORVQ2LCAmc2luNi0+
c2luNl9hZGRyLCBidWYsIElORVQ2X0FERFJTVFJMRU4pOwotCQkJcHJpbnRmKCIlczolZCIsIG5h
bWUsIG50b2hzKHNpbjYtPnNpbjZfcG9ydCkpOwotCQkJYnJlYWs7Ci0JCX0KLQkJY2FzZSBBRl9D
T05OOgotCQl7Ci0JCQlzdHJ1Y3Qgc29ja2FkZHJfY29ubiAqc2Nvbm47Ci0KLQkJCXNjb25uID0g
KHN0cnVjdCBzb2NrYWRkcl9jb25uICopYWRkcjsKLQkJCXByaW50ZigiJXA6JWQiLCBzY29ubi0+
c2Nvbm5fYWRkciwgbnRvaHMoc2Nvbm4tPnNjb25uX3BvcnQpKTsKLQkJCWJyZWFrOwotCQl9Ci0J
CWRlZmF1bHQ6Ci0JCQlwcmludGYoIlVua25vd24gZmFtaWx5OiAlZCIsIGFkZHItPnNhX2ZhbWls
eSk7Ci0JCQlicmVhazsKLQkJfQotCQlhZGRyID0gKHN0cnVjdCBzb2NrYWRkciAqKSgoY2FkZHJf
dClhZGRyICsgYWRkci0+c2FfbGVuKTsKLQkJaWYgKGkgIT0gbiAtIDEpIHsKLQkJCXByaW50Zigi
LCIpOwotCQl9Ci0JfQotCWlmIChuID4gMCkgewotCQl1c3JzY3RwX2ZyZWVwYWRkcnMoYWRkcnMp
OwotCX0KLQlwcmludGYoIlxuIik7Ci19Ci0jZW5kaWYKLQotdm9pZAotZGVidWdfcHJpbnRmKGNv
bnN0IGNoYXIgKmZvcm1hdCwgLi4uKQotewotCXZhX2xpc3QgYXA7Ci0KLQl2YV9zdGFydChhcCwg
Zm9ybWF0KTsKLQl2cHJpbnRmKGZvcm1hdCwgYXApOwotCXZhX2VuZChhcCk7Ci19Ci0KLWludAot
bWFpbih2b2lkKQotewotCXN0cnVjdCBzb2NrYWRkcl9pbiBzaW5fcywgc2luX2M7Ci0Jc3RydWN0
IHNvY2thZGRyX2Nvbm4gc2Nvbm47Ci0jaWZkZWYgX1dJTjMyCi0JU09DS0VUIGZkX2MsIGZkX3M7
Ci0jZWxzZQotCWludCBmZF9jLCBmZF9zOwotI2VuZGlmCi0Jc3RydWN0IHNvY2tldCAqc19jLCAq
c19zLCAqc19sOwotI2lmZGVmIF9XSU4zMgotCUhBTkRMRSB0aWRfYywgdGlkX3M7Ci0jZWxzZQot
CXB0aHJlYWRfdCB0aWRfYywgdGlkX3M7Ci0jZW5kaWYKLQlpbnQgY3VyX2J1Zl9zaXplLCBzbmRf
YnVmX3NpemUsIHJjdl9idWZfc2l6ZTsKLQlzb2NrbGVuX3Qgb3B0X2xlbjsKLQlzdHJ1Y3Qgc2N0
cF9zbmRpbmZvIHNuZGluZm87Ci0JY2hhciAqbGluZTsKLSNpZmRlZiBfV0lOMzIKLQlXU0FEQVRB
IHdzYURhdGE7Ci0jZW5kaWYKLQotI2lmZGVmIF9XSU4zMgotCWlmIChXU0FTdGFydHVwKE1BS0VX
T1JEKDIsMiksICZ3c2FEYXRhKSAhPSAwKSB7Ci0JCXByaW50ZigiV1NBU3RhcnR1cCBmYWlsZWRc
biIpOwotCQlleGl0IChFWElUX0ZBSUxVUkUpOwotCX0KLSNlbmRpZgotCXVzcnNjdHBfaW5pdCgw
LCBjb25uX291dHB1dCwgZGVidWdfcHJpbnRmKTsKLQl1c3JzY3RwX2VuYWJsZV9jcmMzMmNfb2Zm
bG9hZCgpOwotCS8qIHNldCB1cCBhIGNvbm5lY3RlZCBVRFAgc29ja2V0ICovCi0jaWZkZWYgX1dJ
TjMyCi0JaWYgKChmZF9jID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfREdSQU0sIElQUFJPVE9fVURQ
KSkgPT0gSU5WQUxJRF9TT0NLRVQpIHsKLQkJcHJpbnRmKCJzb2NrZXQoKSBmYWlsZWQgd2l0aCBl
cnJvcjogJWRcbiIsIFdTQUdldExhc3RFcnJvcigpKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwot
CX0KLQlpZiAoKGZkX3MgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgSVBQUk9UT19VRFAp
KSA9PSBJTlZBTElEX1NPQ0tFVCkgewotCQlwcmludGYoInNvY2tldCgpIGZhaWxlZCB3aXRoIGVy
cm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0J
fQotI2Vsc2UKLQlpZiAoKGZkX2MgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgSVBQUk9U
T19VRFApKSA8IDApIHsKLQkJcGVycm9yKCJzb2NrZXQiKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUp
OwotCX0KLQlpZiAoKGZkX3MgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgSVBQUk9UT19V
RFApKSA8IDApIHsKLQkJcGVycm9yKCJzb2NrZXQiKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwot
CX0KLSNlbmRpZgotCW1lbXNldCgmc2luX2MsIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4p
KTsKLQlzaW5fYy5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKLSNpZmRlZiBIQVZFX1NJTl9MRU4KLQlz
aW5fYy5zaW5fbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7Ci0jZW5kaWYKLQlzaW5f
Yy5zaW5fcG9ydCA9IGh0b25zKDk4OTkpOwotCXNpbl9jLnNpbl9hZGRyLnNfYWRkciA9IGh0b25s
KElOQUREUl9MT09QQkFDSyk7Ci0JbWVtc2V0KCZzaW5fcywgMCwgc2l6ZW9mKHN0cnVjdCBzb2Nr
YWRkcl9pbikpOwotCXNpbl9zLnNpbl9mYW1pbHkgPSBBRl9JTkVUOwotI2lmZGVmIEhBVkVfU0lO
X0xFTgotCXNpbl9zLnNpbl9sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKTsKLSNlbmRp
ZgotCXNpbl9zLnNpbl9wb3J0ID0gaHRvbnMoOTkwMSk7Ci0Jc2luX3Muc2luX2FkZHIuc19hZGRy
ID0gaHRvbmwoSU5BRERSX0xPT1BCQUNLKTsKLSNpZmRlZiBfV0lOMzIKLQlpZiAoYmluZChmZF9j
LCAoc3RydWN0IHNvY2thZGRyICopJnNpbl9jLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSkg
PT0gU09DS0VUX0VSUk9SKSB7Ci0JCXByaW50ZigiYmluZCgpIGZhaWxlZCB3aXRoIGVycm9yOiAl
ZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0JfQotCWlm
IChiaW5kKGZkX3MsIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luX3MsIHNpemVvZihzdHJ1Y3Qgc29j
a2FkZHJfaW4pKSA9PSBTT0NLRVRfRVJST1IpIHsKLQkJcHJpbnRmKCJiaW5kKCkgZmFpbGVkIHdp
dGggZXJyb3I6ICVkXG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7Ci0JCWV4aXQoRVhJVF9GQUlMVVJF
KTsKLQl9Ci0jZWxzZQotCWlmIChiaW5kKGZkX2MsIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luX2Ms
IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKSA8IDApIHsKLQkJcGVycm9yKCJiaW5kIik7Ci0J
CWV4aXQoRVhJVF9GQUlMVVJFKTsKLQl9Ci0JaWYgKGJpbmQoZmRfcywgKHN0cnVjdCBzb2NrYWRk
ciAqKSZzaW5fcywgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpIDwgMCkgewotCQlwZXJyb3Io
ImJpbmQiKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwotCX0KLSNlbmRpZgotI2lmZGVmIF9XSU4z
MgotCWlmIChjb25uZWN0KGZkX2MsIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luX3MsIHNpemVvZihz
dHJ1Y3Qgc29ja2FkZHJfaW4pKSA9PSBTT0NLRVRfRVJST1IpIHsKLQkJcHJpbnRmKCJjb25uZWN0
KCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7Ci0JCWV4aXQo
RVhJVF9GQUlMVVJFKTsKLQl9Ci0JaWYgKGNvbm5lY3QoZmRfcywgKHN0cnVjdCBzb2NrYWRkciAq
KSZzaW5fYywgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpID09IFNPQ0tFVF9FUlJPUikgewot
CQlwcmludGYoImNvbm5lY3QoKSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIFdTQUdldExhc3RF
cnJvcigpKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwotCX0KLSNlbHNlCi0JaWYgKGNvbm5lY3Qo
ZmRfYywgKHN0cnVjdCBzb2NrYWRkciAqKSZzaW5fcywgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9p
bikpIDwgMCkgewotCQlwZXJyb3IoImNvbm5lY3QiKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwot
CX0KLQlpZiAoY29ubmVjdChmZF9zLCAoc3RydWN0IHNvY2thZGRyICopJnNpbl9jLCBzaXplb2Yo
c3RydWN0IHNvY2thZGRyX2luKSkgPCAwKSB7Ci0JCXBlcnJvcigiY29ubmVjdCIpOwotCQlleGl0
KEVYSVRfRkFJTFVSRSk7Ci0JfQotI2VuZGlmCi0jaWZkZWYgX1dJTjMyCi0JdGlkX2MgPSBDcmVh
dGVUaHJlYWQoTlVMTCwgMCwgJmhhbmRsZV9wYWNrZXRzLCAodm9pZCAqKSZmZF9jLCAwLCBOVUxM
KTsKLQl0aWRfcyA9IENyZWF0ZVRocmVhZChOVUxMLCAwLCAmaGFuZGxlX3BhY2tldHMsICh2b2lk
ICopJmZkX3MsIDAsIE5VTEwpOwotI2Vsc2UKLQlpZiAocHRocmVhZF9jcmVhdGUoJnRpZF9jLCBO
VUxMLCAmaGFuZGxlX3BhY2tldHMsICh2b2lkICopJmZkX2MpKSB7Ci0JCXBlcnJvcigicHRocmVh
ZF9jcmVhdGUgdGlkX2MiKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwotCX0KLQotCWlmIChwdGhy
ZWFkX2NyZWF0ZSgmdGlkX3MsIE5VTEwsICZoYW5kbGVfcGFja2V0cywgKHZvaWQgKikmZmRfcykp
IHsKLQkJcGVycm9yKCJwdGhyZWFkX2NyZWF0ZSB0aWRfcyIpOwotCQlleGl0KEVYSVRfRkFJTFVS
RSk7Ci0JfTsKLSNlbmRpZgotI2lmZGVmIFNDVFBfREVCVUcKLQl1c3JzY3RwX3N5c2N0bF9zZXRf
c2N0cF9kZWJ1Z19vbihTQ1RQX0RFQlVHX0FMTCk7Ci0jZW5kaWYKLQl1c3JzY3RwX3N5c2N0bF9z
ZXRfc2N0cF9lY25fZW5hYmxlKDApOwotCXVzcnNjdHBfcmVnaXN0ZXJfYWRkcmVzcygodm9pZCAq
KSZmZF9jKTsKLQl1c3JzY3RwX3JlZ2lzdGVyX2FkZHJlc3MoKHZvaWQgKikmZmRfcyk7Ci0JaWYg
KChzX2MgPSB1c3JzY3RwX3NvY2tldChBRl9DT05OLCBTT0NLX1NUUkVBTSwgSVBQUk9UT19TQ1RQ
LCByZWNlaXZlX2NiLCBOVUxMLCAwLCAmZmRfYykpID09IE5VTEwpIHsKLQkJcGVycm9yKCJ1c3Jz
Y3RwX3NvY2tldCIpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0JfQotCW9wdF9sZW4gPSAoc29j
a2xlbl90KXNpemVvZihpbnQpOwotCWN1cl9idWZfc2l6ZSA9IDA7Ci0JaWYgKHVzcnNjdHBfZ2V0
c29ja29wdChzX2MsIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgJmN1cl9idWZfc2l6ZSwgJm9wdF9s
ZW4pIDwgMCkgewotCQlwZXJyb3IoInVzcnNjdHBfZ2V0c29ja29wdCIpOwotCQlleGl0KEVYSVRf
RkFJTFVSRSk7Ci0JfQotCXByaW50ZigiQ2hhbmdlIHNlbmQgc29ja2V0IGJ1ZmZlciBzaXplIGZy
b20gJWQgIiwgY3VyX2J1Zl9zaXplKTsKLQlzbmRfYnVmX3NpemUgPSAxPDwyMDsgLyogMSBNQiAq
LwotCWlmICh1c3JzY3RwX3NldHNvY2tvcHQoc19jLCBTT0xfU09DS0VULCBTT19TTkRCVUYsICZz
bmRfYnVmX3NpemUsIHNpemVvZihpbnQpKSA8IDApIHsKLQkJcGVycm9yKCJ1c3JzY3RwX3NldHNv
Y2tvcHQiKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwotCX0KLQlvcHRfbGVuID0gKHNvY2tsZW5f
dClzaXplb2YoaW50KTsKLQljdXJfYnVmX3NpemUgPSAwOwotCWlmICh1c3JzY3RwX2dldHNvY2tv
cHQoc19jLCBTT0xfU09DS0VULCBTT19TTkRCVUYsICZjdXJfYnVmX3NpemUsICZvcHRfbGVuKSA8
IDApIHsKLQkJcGVycm9yKCJ1c3JzY3RwX2dldHNvY2tvcHQiKTsKLQkJZXhpdChFWElUX0ZBSUxV
UkUpOwotCX0KLQlwcmludGYoInRvICVkLlxuIiwgY3VyX2J1Zl9zaXplKTsKLQlpZiAoKHNfbCA9
IHVzcnNjdHBfc29ja2V0KEFGX0NPTk4sIFNPQ0tfU1RSRUFNLCBJUFBST1RPX1NDVFAsIHJlY2Vp
dmVfY2IsIE5VTEwsIDAsICZmZF9zKSkgPT0gTlVMTCkgewotCQlwZXJyb3IoInVzcnNjdHBfc29j
a2V0Iik7Ci0JCWV4aXQoRVhJVF9GQUlMVVJFKTsKLQl9Ci0Jb3B0X2xlbiA9IChzb2NrbGVuX3Qp
c2l6ZW9mKGludCk7Ci0JY3VyX2J1Zl9zaXplID0gMDsKLQlpZiAodXNyc2N0cF9nZXRzb2Nrb3B0
KHNfbCwgU09MX1NPQ0tFVCwgU09fUkNWQlVGLCAmY3VyX2J1Zl9zaXplLCAmb3B0X2xlbikgPCAw
KSB7Ci0JCXBlcnJvcigidXNyc2N0cF9nZXRzb2Nrb3B0Iik7Ci0JCWV4aXQoRVhJVF9GQUlMVVJF
KTsKLQl9Ci0JcHJpbnRmKCJDaGFuZ2UgcmVjZWl2ZSBzb2NrZXQgYnVmZmVyIHNpemUgZnJvbSAl
ZCAiLCBjdXJfYnVmX3NpemUpOwotCXJjdl9idWZfc2l6ZSA9IDE8PDE2OyAvKiA2NCBLQiAqLwot
CWlmICh1c3JzY3RwX3NldHNvY2tvcHQoc19sLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsICZyY3Zf
YnVmX3NpemUsIHNpemVvZihpbnQpKSA8IDApIHsKLQkJcGVycm9yKCJ1c3JzY3RwX3NldHNvY2tv
cHQiKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwotCX0KLQlvcHRfbGVuID0gKHNvY2tsZW5fdClz
aXplb2YoaW50KTsKLQljdXJfYnVmX3NpemUgPSAwOwotCWlmICh1c3JzY3RwX2dldHNvY2tvcHQo
c19sLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsICZjdXJfYnVmX3NpemUsICZvcHRfbGVuKSA8IDAp
IHsKLQkJcGVycm9yKCJ1c3JzY3RwX2dldHNvY2tvcHQiKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUp
OwotCX0KLQlwcmludGYoInRvICVkLlxuIiwgY3VyX2J1Zl9zaXplKTsKLQkvKiBCaW5kIHRoZSBj
bGllbnQgc2lkZS4gKi8KLQltZW1zZXQoJnNjb25uLCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRy
X2Nvbm4pKTsKLQlzY29ubi5zY29ubl9mYW1pbHkgPSBBRl9DT05OOwotI2lmZGVmIEhBVkVfU0NP
Tk5fTEVOCi0Jc2Nvbm4uc2Nvbm5fbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9jb25uKTsK
LSNlbmRpZgotCXNjb25uLnNjb25uX3BvcnQgPSBodG9ucyg1MDAxKTsKLQlzY29ubi5zY29ubl9h
ZGRyID0gJmZkX2M7Ci0JaWYgKHVzcnNjdHBfYmluZChzX2MsIChzdHJ1Y3Qgc29ja2FkZHIgKikm
c2Nvbm4sIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfY29ubikpIDwgMCkgewotCQlwZXJyb3IoInVz
cnNjdHBfYmluZCIpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0JfQotCS8qIEJpbmQgdGhlIHNl
cnZlciBzaWRlLiAqLwotCW1lbXNldCgmc2Nvbm4sIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJf
Y29ubikpOwotCXNjb25uLnNjb25uX2ZhbWlseSA9IEFGX0NPTk47Ci0jaWZkZWYgSEFWRV9TQ09O
Tl9MRU4KLQlzY29ubi5zY29ubl9sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2Nvbm4pOwot
I2VuZGlmCi0Jc2Nvbm4uc2Nvbm5fcG9ydCA9IGh0b25zKDUwMDEpOwotCXNjb25uLnNjb25uX2Fk
ZHIgPSAmZmRfczsKLQlpZiAodXNyc2N0cF9iaW5kKHNfbCwgKHN0cnVjdCBzb2NrYWRkciAqKSZz
Y29ubiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9jb25uKSkgPCAwKSB7Ci0JCXBlcnJvcigidXNy
c2N0cF9iaW5kIik7Ci0JCWV4aXQoRVhJVF9GQUlMVVJFKTsKLQl9Ci0JLyogTWFrZSBzZXJ2ZXIg
c2lkZSBwYXNzaXZlLi4uICovCi0JaWYgKHVzcnNjdHBfbGlzdGVuKHNfbCwgMSkgPCAwKSB7Ci0J
CXBlcnJvcigidXNyc2N0cF9saXN0ZW4iKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwotCX0KLQkv
KiBJbml0aWF0ZSB0aGUgaGFuZHNoYWtlICovCi0JbWVtc2V0KCZzY29ubiwgMCwgc2l6ZW9mKHN0
cnVjdCBzb2NrYWRkcl9jb25uKSk7Ci0Jc2Nvbm4uc2Nvbm5fZmFtaWx5ID0gQUZfQ09OTjsKLSNp
ZmRlZiBIQVZFX1NDT05OX0xFTgotCXNjb25uLnNjb25uX2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29j
a2FkZHJfY29ubik7Ci0jZW5kaWYKLQlzY29ubi5zY29ubl9wb3J0ID0gaHRvbnMoNTAwMSk7Ci0J
c2Nvbm4uc2Nvbm5fYWRkciA9ICZmZF9jOwotCWlmICh1c3JzY3RwX2Nvbm5lY3Qoc19jLCAoc3Ry
dWN0IHNvY2thZGRyICopJnNjb25uLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2Nvbm4pKSA8IDAp
IHsKLQkJcGVycm9yKCJ1c3JzY3RwX2Nvbm5lY3QiKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwot
CX0KLQlpZiAoKHNfcyA9IHVzcnNjdHBfYWNjZXB0KHNfbCwgTlVMTCwgTlVMTCkpID09IE5VTEwp
IHsKLQkJcGVycm9yKCJ1c3JzY3RwX2FjY2VwdCIpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0J
fQotCXVzcnNjdHBfY2xvc2Uoc19sKTsKLQlpZiAoKGxpbmUgPSBtYWxsb2MoTElORV9MRU5HVEgp
KSA9PSBOVUxMKSB7Ci0JCWV4aXQoRVhJVF9GQUlMVVJFKTsKLQl9Ci0JbWVtc2V0KGxpbmUsICdB
JywgTElORV9MRU5HVEgpOwotCXNuZGluZm8uc25kX3NpZCA9IDE7Ci0Jc25kaW5mby5zbmRfZmxh
Z3MgPSAwOwotCXNuZGluZm8uc25kX3BwaWQgPSBodG9ubChESVNDQVJEX1BQSUQpOwotCXNuZGlu
Zm8uc25kX2NvbnRleHQgPSAwOwotCXNuZGluZm8uc25kX2Fzc29jX2lkID0gMDsKLQkvKiBTZW5k
IGEgMSBNQiBtZXNzYWdlICovCi0JaWYgKHVzcnNjdHBfc2VuZHYoc19jLCBsaW5lLCBMSU5FX0xF
TkdUSCwgTlVMTCwgMCwgKHZvaWQgKikmc25kaW5mbywKLQkgICAgICAgICAgICAgICAgIChzb2Nr
bGVuX3Qpc2l6ZW9mKHN0cnVjdCBzY3RwX3NuZGluZm8pLCBTQ1RQX1NFTkRWX1NORElORk8sIDAp
IDwgMCkgewotCQlwZXJyb3IoInVzcnNjdHBfc2VuZHYiKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUp
OwotCX0KLQlmcmVlKGxpbmUpOwotCXVzcnNjdHBfc2h1dGRvd24oc19jLCBTSFVUX1dSKTsKLQot
CXdoaWxlICh1c3JzY3RwX2ZpbmlzaCgpICE9IDApIHsKLSNpZmRlZiBfV0lOMzIKLQkJU2xlZXAo
MTAwMCk7Ci0jZWxzZQotCQlzbGVlcCgxKTsKLSNlbmRpZgotCX0KLSNpZmRlZiBfV0lOMzIKLQlU
ZXJtaW5hdGVUaHJlYWQodGlkX2MsIDApOwotCVdhaXRGb3JTaW5nbGVPYmplY3QodGlkX2MsIElO
RklOSVRFKTsKLQlUZXJtaW5hdGVUaHJlYWQodGlkX3MsIDApOwotCVdhaXRGb3JTaW5nbGVPYmpl
Y3QodGlkX3MsIElORklOSVRFKTsKLQlpZiAoY2xvc2Vzb2NrZXQoZmRfYykgPT0gU09DS0VUX0VS
Uk9SKSB7Ci0JCXByaW50ZigiY2xvc2Vzb2NrZXQoKSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIs
IFdTQUdldExhc3RFcnJvcigpKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwotCX0KLQlpZiAoY2xv
c2Vzb2NrZXQoZmRfcykgPT0gU09DS0VUX0VSUk9SKSB7Ci0JCXByaW50ZigiY2xvc2Vzb2NrZXQo
KSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIFdTQUdldExhc3RFcnJvcigpKTsKLQkJZXhpdChF
WElUX0ZBSUxVUkUpOwotCX0KLQlXU0FDbGVhbnVwKCk7Ci0jZWxzZQotCXB0aHJlYWRfY2FuY2Vs
KHRpZF9jKTsKLQlwdGhyZWFkX2pvaW4odGlkX2MsIE5VTEwpOwotCXB0aHJlYWRfY2FuY2VsKHRp
ZF9zKTsKLQlwdGhyZWFkX2pvaW4odGlkX3MsIE5VTEwpOwotCWlmIChjbG9zZShmZF9jKSA8IDAp
IHsKLQkJcGVycm9yKCJjbG9zZSIpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0JfQotCWlmIChj
bG9zZShmZF9zKSA8IDApIHsKLQkJcGVycm9yKCJjbG9zZSIpOwotCQlleGl0KEVYSVRfRkFJTFVS
RSk7Ci0JfQotI2VuZGlmCi0JcmV0dXJuICgwKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3By
b2dyYW1zL2Vrcl9sb29wX3VwY2FsbC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvZWtyX2xvb3BfdXBj
YWxsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uM2RiNDgwYTcyOWMzNGJmMmUxZDhjODMxZjQ5MTM0OGU5MWZjOTQ0
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2Vrcl9sb29wX3VwY2FsbC5j
CkBAIC0wLDAgKzEsNzI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTMgTWljaGFl
bCBUdWV4ZW4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEZlbGl4IFdlaW5yYW5rCisgKgor
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUg
b2YgdGhlIHByb2plY3Qgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRo
aXMgc29mdHdhcmUKKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIFBST0pFQ1QgQU5E
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4JSU4gTk8gRVZFTlQgU0hBTEwgVEhFIFBST0pF
Q1QgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLwor
CisvKgorICogVXNhZ2U6IGVrcl9sb29wIFtjbGllbnRfcG9ydF0gW3NlcnZlcl9wb3J0XSBbY3Jj
MzJjIG9mZmxvYWRpbmcgPDAvMT5dCisgKi8KKworI2lmZGVmIF9XSU4zMgorI2RlZmluZSBfQ1JU
X1NFQ1VSRV9OT19XQVJOSU5HUworI2VuZGlmCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRl
IDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRhcmcuaD4KKyNp
bmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpZm5kZWYgX1dJTjMyCisjaW5jbHVkZSA8c3lzL3NvY2tl
dC5oPgorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyNp
bmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHB0aHJlYWQuaD4KKyNpbmNsdWRlIDx1bmlzdGQu
aD4KKyNlbHNlCisjaW5jbHVkZSA8d2luc29jazIuaD4KKyNpbmNsdWRlIDx3czJ0Y3BpcC5oPgor
I2VuZGlmCisjaW5jbHVkZSA8dXNyc2N0cC5oPgorI2luY2x1ZGUgInByb2dyYW1zX2hlbHBlci5o
IgorCisjZGVmaW5lIE1BWF9QQUNLRVRfU0laRSAoMTw8MTYpCisjZGVmaW5lIExJTkVfTEVOR1RI
ICgxPDwyMCkKKyNkZWZpbmUgRElTQ0FSRF9QUElEIDM5CisjZGVmaW5lIE5VTUJFUl9PRl9TVEVQ
UyAxMAorCitzdGF0aWMgdWludDhfdCBjcmMzMmNfb2ZmbG9hZGluZyA9IDA7CisKK3N0cnVjdCB1
cGNhbGxfbWV0YSB7CisJdWludDhfdCBzZW5kZXI7CisJdm9pZCogYWRkcjsKK307CisKKyNpZmRl
ZiBfV0lOMzIKK3N0YXRpYyBEV09SRCBXSU5BUEkKKyNlbHNlCitzdGF0aWMgdm9pZCAqCisjZW5k
aWYKK2hhbmRsZV9wYWNrZXRzKHZvaWQgKmFyZykKK3sKKyNpZmRlZiBfV0lOMzIKKwlTT0NLRVQg
KmZkcDsKKyNlbHNlCisJaW50ICpmZHA7CisjZW5kaWYKKwljaGFyICpkdW1wX2J1ZjsKKwlzdHJ1
Y3Qgc2N0cF9jb21tb25faGVhZGVyICpoZHI7CisJc3NpemVfdCBsZW5ndGg7CisJY2hhciBidWZb
TUFYX1BBQ0tFVF9TSVpFXTsKKwl1aW50MzJfdCByZWNlaXZlZF9jcmMzMmMsIGNvbXB1dGVkX2Ny
YzMyYzsKKworI2lmZGVmIF9XSU4zMgorCWZkcCA9IChTT0NLRVQgKilhcmc7CisjZWxzZQorCWZk
cCA9IChpbnQgKilhcmc7CisjZW5kaWYKKwlmb3IgKDs7KSB7CisjaWYgZGVmaW5lZChfX05ldEJT
RF9fKQorCQlwdGhyZWFkX3Rlc3RjYW5jZWwoKTsKKyNlbmRpZgorCQlsZW5ndGggPSByZWN2KCpm
ZHAsIGJ1ZiwgTUFYX1BBQ0tFVF9TSVpFLCAwKTsKKwkJaWYgKGxlbmd0aCA+IDApIHsKKwkJCWlm
ICgoZHVtcF9idWYgPSB1c3JzY3RwX2R1bXBwYWNrZXQoYnVmLCAoc2l6ZV90KWxlbmd0aCwgU0NU
UF9EVU1QX0lOQk9VTkQpKSAhPSBOVUxMKSB7CisJCQkJLy9kZWJ1Z19wcmludGZfY2xlYW4oIiVz
XG4iLCBkdW1wX2J1Zik7CisJCQkJdXNyc2N0cF9mcmVlZHVtcGJ1ZmZlcihkdW1wX2J1Zik7CisJ
CQl9CisKKwkJCWlmIChjcmMzMmNfb2ZmbG9hZGluZykgeworCQkJCWlmICgoc2l6ZV90KWxlbmd0
aCA+PSBzaXplb2Yoc3RydWN0IHNjdHBfY29tbW9uX2hlYWRlcikpIHsKKwkJCQkJaGRyID0gKHN0
cnVjdCBzY3RwX2NvbW1vbl9oZWFkZXIgKilidWY7CisJCQkJCXJlY2VpdmVkX2NyYzMyYyA9IGhk
ci0+Y3JjMzJjOworCQkJCQloZHItPmNyYzMyYyA9IGh0b25sKDApOworCQkJCQljb21wdXRlZF9j
cmMzMmMgPSB1c3JzY3RwX2NyYzMyYyhidWYsIChzaXplX3QpbGVuZ3RoKTsKKwkJCQkJaGRyLT5j
cmMzMmMgPSByZWNlaXZlZF9jcmMzMmM7CisJCQkJCWlmIChyZWNlaXZlZF9jcmMzMmMgPT0gY29t
cHV0ZWRfY3JjMzJjKSB7CisJCQkJCQl1c3JzY3RwX2Nvbm5pbnB1dChmZHAsIGJ1ZiwgKHNpemVf
dClsZW5ndGgsIDApOworCQkJCQl9IGVsc2UgeworCQkJCQkJZGVidWdfcHJpbnRmKCJXcm9uZyBD
UkMzMmM6IGV4cGVjdGVkICUwOHggcmVjZWl2ZWQgJTA4eFxuIiwKKwkJCQkJCSAgICAgICAgICAg
ICBudG9obChjb21wdXRlZF9jcmMzMmMpLCBudG9obChyZWNlaXZlZF9jcmMzMmMpKTsKKwkJCQkJ
fQorCQkJCX0gZWxzZSB7CisJCQkJCWRlYnVnX3ByaW50ZigiUGFja2V0IHRvbyBzaG9ydDogbGVu
Z3RoICV6ZCIsIGxlbmd0aCk7CisJCQkJfQorCQkJfSBlbHNlIHsKKwkJCQl1c3JzY3RwX2Nvbm5p
bnB1dChmZHAsIGJ1ZiwgKHNpemVfdClsZW5ndGgsIDApOworCQkJfQorCQl9CisJfQorI2lmZGVm
IF9XSU4zMgorCXJldHVybiAwOworI2Vsc2UKKwlyZXR1cm4gKE5VTEwpOworI2VuZGlmCit9CisK
K3N0YXRpYyBpbnQKK2Nvbm5fb3V0cHV0KHZvaWQgKmFkZHIsIHZvaWQgKmJ1Ziwgc2l6ZV90IGxl
bmd0aCwgdWludDhfdCB0b3MsIHVpbnQ4X3Qgc2V0X2RmKQoreworCWNoYXIgKmR1bXBfYnVmOwor
CXN0cnVjdCBzY3RwX2NvbW1vbl9oZWFkZXIgKmhkcjsKKyNpZmRlZiBfV0lOMzIKKwlTT0NLRVQg
KmZkcDsKKyNlbHNlCisJaW50ICpmZHA7CisjZW5kaWYKKworI2lmZGVmIF9XSU4zMgorCWZkcCA9
IChTT0NLRVQgKilhZGRyOworI2Vsc2UKKwlmZHAgPSAoaW50ICopYWRkcjsKKyNlbmRpZgorCWlm
IChjcmMzMmNfb2ZmbG9hZGluZyAmJiBsZW5ndGggPj0gc2l6ZW9mKHN0cnVjdCBzY3RwX2NvbW1v
bl9oZWFkZXIpKSB7CisJCWhkciA9IChzdHJ1Y3Qgc2N0cF9jb21tb25faGVhZGVyICopYnVmOwor
CQloZHItPmNyYzMyYyA9IHVzcnNjdHBfY3JjMzJjKGJ1ZiwgKHNpemVfdClsZW5ndGgpOworCX0K
KworCWlmICgoZHVtcF9idWYgPSB1c3JzY3RwX2R1bXBwYWNrZXQoYnVmLCBsZW5ndGgsIFNDVFBf
RFVNUF9PVVRCT1VORCkpICE9IE5VTEwpIHsKKwkJLy9kZWJ1Z19wcmludGZfY2xlYW4oIiVzXG4i
LCBkdW1wX2J1Zik7CisJCXVzcnNjdHBfZnJlZWR1bXBidWZmZXIoZHVtcF9idWYpOworCX0KKyNp
ZmRlZiBfV0lOMzIKKwlpZiAoc2VuZCgqZmRwLCBidWYsIChpbnQpbGVuZ3RoLCAwKSA9PSBTT0NL
RVRfRVJST1IpIHsKKwkJcmV0dXJuIChXU0FHZXRMYXN0RXJyb3IoKSk7CisjZWxzZQorCWlmIChz
ZW5kKCpmZHAsIGJ1ZiwgbGVuZ3RoLCAwKSA8IDApIHsKKwkJcmV0dXJuIChlcnJubyk7CisjZW5k
aWYKKwl9IGVsc2UgeworCQlyZXR1cm4gKDApOworCX0KK30KKworc3RhdGljIHZvaWQKK2hhbmRs
ZV91cGNhbGwoc3RydWN0IHNvY2tldCAqc29jaywgdm9pZCAqZGF0YSwgaW50IGZsZ3MpCit7CisJ
Y2hhciAqYnVmOworCWludCBldmVudHM7CisJc3RydWN0IHVwY2FsbF9tZXRhICptZXRhOworCisJ
bWV0YSA9IGRhdGE7CisJYnVmID0gbWFsbG9jKE1BWF9QQUNLRVRfU0laRSk7CisKKwl3aGlsZSAo
KGV2ZW50cyA9IHVzcnNjdHBfZ2V0X2V2ZW50cyhzb2NrKSkgJiYgKGV2ZW50cyAmIFNDVFBfRVZF
TlRfUkVBRCkpIHsKKwkJc3RydWN0IHNjdHBfcmVjdnZfcm4gcm47CisJCXNzaXplX3QgbjsKKwkJ
dW5pb24gc2N0cF9zb2Nrc3RvcmUgYWRkcjsKKwkJaW50IGZsYWdzID0gMDsKKwkJc29ja2xlbl90
IGxlbiA9IChzb2NrbGVuX3Qpc2l6ZW9mKGFkZHIpOworCQl1bnNpZ25lZCBpbnQgaW5mb3R5cGUg
PSAwOworCQlzb2NrbGVuX3QgaW5mb2xlbiA9IHNpemVvZihzdHJ1Y3Qgc2N0cF9yZWN2dl9ybik7
CisJCW1lbXNldCgmcm4sIDAsIHNpemVvZihzdHJ1Y3Qgc2N0cF9yZWN2dl9ybikpOworCQluID0g
dXNyc2N0cF9yZWN2dihzb2NrLCBidWYsIE1BWF9QQUNLRVRfU0laRSwgKHN0cnVjdCBzb2NrYWRk
ciAqKSAmYWRkciwgJmxlbiwgKHZvaWQgKikmcm4sICZpbmZvbGVuLCAmaW5mb3R5cGUsICZmbGFn
cyk7CisJCWlmIChuIDwgMCkgeworCQkJcGVycm9yKCJ1c3JzY3RwX3JlY3Z2Iik7CisJCQlicmVh
azsKKwkJfSBlbHNlIGlmIChuID4gMCkgeworCQkJaWYgKGZsYWdzICYgTVNHX05PVElGSUNBVElP
TikgeworCQkJCWRlYnVnX3ByaW50ZigiTVNHIFJDVjogTm90aWZpY2F0aW9uIG9mIGxlbmd0aCAl
ZCByZWNlaXZlZC5cbiIsIChpbnQpbik7CisJCQl9IGVsc2UgeworCQkJCWRlYnVnX3ByaW50Zigi
TVNHIFJDVjogRGF0YSBsZW5ndGggJWQsIGFkZHIgJXA6JXUsIHN0cmVhbSAldSwgU1NOICV1LCBU
U04gJXUsIFBQSUQgJXUsIGNvbnRleHQgJXUsICVzJXMuXG4iLAorCQkJCSAgICAgICAoaW50KW4s
CisJCQkJICAgICAgIGFkZHIuc2Nvbm4uc2Nvbm5fYWRkciwKKwkJCQkgICAgICAgbnRvaHMoYWRk
ci5zY29ubi5zY29ubl9wb3J0KSwKKwkJCQkgICAgICAgcm4ucmVjdnZfcmN2aW5mby5yY3Zfc2lk
LAorCQkJCSAgICAgICBybi5yZWN2dl9yY3ZpbmZvLnJjdl9zc24sCisJCQkJICAgICAgIHJuLnJl
Y3Z2X3JjdmluZm8ucmN2X3RzbiwKKwkJCQkgICAgICAgbnRvaGwocm4ucmVjdnZfcmN2aW5mby5y
Y3ZfcHBpZCksCisJCQkJICAgICAgIHJuLnJlY3Z2X3JjdmluZm8ucmN2X2NvbnRleHQsCisJCQkJ
ICAgICAgIChybi5yZWN2dl9yY3ZpbmZvLnJjdl9mbGFncyAmIFNDVFBfVU5PUkRFUkVEKSA/ICJ1
bm9yZGVyZWQiIDogIm9yZGVyZWQiLAorCQkJCSAgICAgICAoZmxhZ3MgJiBNU0dfRU9SKSA/ICIs
IEVPUiIgOiAiIik7CisJCQl9CisJCX0gZWxzZSB7CisJCQlkZWJ1Z19wcmludGYoIkNvbm5lY3Rp
b24gY2xvc2VkIVxuIik7CisJCQl1c3JzY3RwX2RlcmVnaXN0ZXJfYWRkcmVzcyhtZXRhLT5hZGRy
KTsKKwkJCXVzcnNjdHBfY2xvc2Uoc29jayk7CisJCQlicmVhazsKKwkJfQorCX0KKwlmcmVlKGJ1
Zik7CisKKwlyZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkCitwcmludF9hZGRyZXNzZXMoc3RydWN0
IHNvY2tldCAqc29jaykKK3sKKwlpbnQgaSwgbjsKKwlzdHJ1Y3Qgc29ja2FkZHIgKmFkZHJzLCAq
YWRkcjsKKyNpZiAhZGVmaW5lZChIQVZFX1NBX0xFTikKKwlpbnQgc2FfbGVuOworI2VuZGlmCisK
KwlkZWJ1Z19wcmludGYoIkFkZHJlc3NlczogIik7CisJbiA9IHVzcnNjdHBfZ2V0bGFkZHJzKHNv
Y2ssIDAsICZhZGRycyk7CisJYWRkciA9IGFkZHJzOworCWZvciAoaSA9IDA7IGkgPCBuOyBpKysp
IHsKKwkJc3dpdGNoIChhZGRyLT5zYV9mYW1pbHkpIHsKKwkJY2FzZSBBRl9JTkVUOgorCQl7CisJ
CQlzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbjsKKwkJCWNoYXIgYnVmW0lORVRfQUREUlNUUkxFTl07
CisJCQljb25zdCBjaGFyICpuYW1lOworCisJCQlzaW4gPSAoc3RydWN0IHNvY2thZGRyX2luICop
YWRkcjsKKwkJCW5hbWUgPSBpbmV0X250b3AoQUZfSU5FVCwgJnNpbi0+c2luX2FkZHIsIGJ1Ziwg
SU5FVF9BRERSU1RSTEVOKTsKKwkJCWRlYnVnX3ByaW50Zl9jbGVhbigiJXM6JWQiLCBuYW1lLCBu
dG9ocyhzaW4tPnNpbl9wb3J0KSk7CisjaWYgIWRlZmluZWQoSEFWRV9TQV9MRU4pCisJCQlzYV9s
ZW4gPSAoaW50KXNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pOworI2VuZGlmCisJCQlicmVhazsK
KwkJfQorCQljYXNlIEFGX0lORVQ2OgorCQl7CisJCQlzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW42
OworCQkJY2hhciBidWZbSU5FVDZfQUREUlNUUkxFTl07CisJCQljb25zdCBjaGFyICpuYW1lOwor
CisJCQlzaW42ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilhZGRyOworCQkJbmFtZSA9IGluZXRf
bnRvcChBRl9JTkVUNiwgJnNpbjYtPnNpbjZfYWRkciwgYnVmLCBJTkVUNl9BRERSU1RSTEVOKTsK
KwkJCWRlYnVnX3ByaW50Zl9jbGVhbigiJXM6JWQiLCBuYW1lLCBudG9ocyhzaW42LT5zaW42X3Bv
cnQpKTsKKyNpZiAhZGVmaW5lZChIQVZFX1NBX0xFTikKKwkJCXNhX2xlbiA9IChpbnQpc2l6ZW9m
KHN0cnVjdCBzb2NrYWRkcl9pbjYpOworI2VuZGlmCisJCQlicmVhazsKKwkJfQorCQljYXNlIEFG
X0NPTk46CisJCXsKKwkJCXN0cnVjdCBzb2NrYWRkcl9jb25uICpzY29ubjsKKworCQkJc2Nvbm4g
PSAoc3RydWN0IHNvY2thZGRyX2Nvbm4gKilhZGRyOworCQkJZGVidWdfcHJpbnRmX2NsZWFuKCIl
cDolZCIsIHNjb25uLT5zY29ubl9hZGRyLCBudG9ocyhzY29ubi0+c2Nvbm5fcG9ydCkpOworI2lm
ICFkZWZpbmVkKEhBVkVfU0FfTEVOKQorCQkJc2FfbGVuID0gKGludClzaXplb2Yoc3RydWN0IHNv
Y2thZGRyX2Nvbm4pOworI2VuZGlmCisJCQlicmVhazsKKwkJfQorCQlkZWZhdWx0OgorCQkJZGVi
dWdfcHJpbnRmX2NsZWFuKCJVbmtub3duIGZhbWlseTogJWQiLCBhZGRyLT5zYV9mYW1pbHkpOwor
I2lmICFkZWZpbmVkKEhBVkVfU0FfTEVOKQorCQkJc2FfbGVuID0gKGludClzaXplb2Yoc3RydWN0
IHNvY2thZGRyKTsKKyNlbmRpZgorCQkJYnJlYWs7CisJCX0KKyNpZiAhZGVmaW5lZChIQVZFX1NB
X0xFTikKKwkJYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHIgKikoKGNoYXIgKilhZGRyICsgc2FfbGVu
KTsKKyNlbHNlCisJCWFkZHIgPSAoc3RydWN0IHNvY2thZGRyICopKChjYWRkcl90KWFkZHIgKyBh
ZGRyLT5zYV9sZW4pOworI2VuZGlmCisJCWlmIChpICE9IG4gLSAxKSB7CisJCQlkZWJ1Z19wcmlu
dGZfY2xlYW4oIiwiKTsKKwkJfQorCX0KKwlpZiAobiA+IDApIHsKKwkJdXNyc2N0cF9mcmVlbGFk
ZHJzKGFkZHJzKTsKKwl9CisJZGVidWdfcHJpbnRmX2NsZWFuKCI8LT4iKTsKKwluID0gdXNyc2N0
cF9nZXRwYWRkcnMoc29jaywgMCwgJmFkZHJzKTsKKwlhZGRyID0gYWRkcnM7CisJZm9yIChpID0g
MDsgaSA8IG47IGkrKykgeworCQlzd2l0Y2ggKGFkZHItPnNhX2ZhbWlseSkgeworCQljYXNlIEFG
X0lORVQ6CisJCXsKKwkJCXN0cnVjdCBzb2NrYWRkcl9pbiAqc2luOworCQkJY2hhciBidWZbSU5F
VF9BRERSU1RSTEVOXTsKKwkJCWNvbnN0IGNoYXIgKm5hbWU7CisKKwkJCXNpbiA9IChzdHJ1Y3Qg
c29ja2FkZHJfaW4gKilhZGRyOworCQkJbmFtZSA9IGluZXRfbnRvcChBRl9JTkVULCAmc2luLT5z
aW5fYWRkciwgYnVmLCBJTkVUX0FERFJTVFJMRU4pOworCQkJZGVidWdfcHJpbnRmX2NsZWFuKCIl
czolZCIsIG5hbWUsIG50b2hzKHNpbi0+c2luX3BvcnQpKTsKKyNpZiAhZGVmaW5lZChIQVZFX1NB
X0xFTikKKwkJCXNhX2xlbiA9IChpbnQpc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7CisjZW5k
aWYKKwkJCWJyZWFrOworCQl9CisJCWNhc2UgQUZfSU5FVDY6CisJCXsKKwkJCXN0cnVjdCBzb2Nr
YWRkcl9pbjYgKnNpbjY7CisJCQljaGFyIGJ1ZltJTkVUNl9BRERSU1RSTEVOXTsKKwkJCWNvbnN0
IGNoYXIgKm5hbWU7CisKKwkJCXNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKWFkZHI7CisJ
CQluYW1lID0gaW5ldF9udG9wKEFGX0lORVQ2LCAmc2luNi0+c2luNl9hZGRyLCBidWYsIElORVQ2
X0FERFJTVFJMRU4pOworCQkJZGVidWdfcHJpbnRmX2NsZWFuKCIlczolZCIsIG5hbWUsIG50b2hz
KHNpbjYtPnNpbjZfcG9ydCkpOworI2lmICFkZWZpbmVkKEhBVkVfU0FfTEVOKQorCQkJc2FfbGVu
ID0gKGludClzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNik7CisjZW5kaWYKKwkJCWJyZWFrOwor
CQl9CisJCWNhc2UgQUZfQ09OTjoKKwkJeworCQkJc3RydWN0IHNvY2thZGRyX2Nvbm4gKnNjb25u
OworCisJCQlzY29ubiA9IChzdHJ1Y3Qgc29ja2FkZHJfY29ubiAqKWFkZHI7CisJCQlkZWJ1Z19w
cmludGZfY2xlYW4oIiVwOiVkIiwgc2Nvbm4tPnNjb25uX2FkZHIsIG50b2hzKHNjb25uLT5zY29u
bl9wb3J0KSk7CisjaWYgIWRlZmluZWQoSEFWRV9TQV9MRU4pCisJCQlzYV9sZW4gPSAoaW50KXNp
emVvZihzdHJ1Y3Qgc29ja2FkZHJfY29ubik7CisjZW5kaWYKKwkJCWJyZWFrOworCQl9CisJCWRl
ZmF1bHQ6CisJCQlkZWJ1Z19wcmludGZfY2xlYW4oIlVua25vd24gZmFtaWx5OiAlZCIsIGFkZHIt
PnNhX2ZhbWlseSk7CisjaWYgIWRlZmluZWQoSEFWRV9TQV9MRU4pCisJCQlzYV9sZW4gPSAoaW50
KXNpemVvZihzdHJ1Y3Qgc29ja2FkZHIpOworI2VuZGlmCisJCQlicmVhazsKKwkJfQorI2lmICFk
ZWZpbmVkKEhBVkVfU0FfTEVOKQorCQlhZGRyID0gKHN0cnVjdCBzb2NrYWRkciAqKSgoY2hhciAq
KWFkZHIgKyBzYV9sZW4pOworI2Vsc2UKKwkJYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHIgKikoKGNh
ZGRyX3QpYWRkciArIGFkZHItPnNhX2xlbik7CisjZW5kaWYKKwkJaWYgKGkgIT0gbiAtIDEpIHsK
KwkJCWRlYnVnX3ByaW50Zl9jbGVhbigiLCIpOworCQl9CisJfQorCWlmIChuID4gMCkgeworCQl1
c3JzY3RwX2ZyZWVwYWRkcnMoYWRkcnMpOworCX0KKwlkZWJ1Z19wcmludGZfY2xlYW4oIlxuIik7
Cit9CisKK2ludAorbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCXN0cnVjdCBzb2Nr
YWRkcl9pbiBzaW5fcywgc2luX2M7CisJc3RydWN0IHNvY2thZGRyX2Nvbm4gc2Nvbm47CisJc3Ry
dWN0IHNjdHBfcGFkZHJwYXJhbXMgcGFkZHJwYXJhbXM7CisjaWZkZWYgX1dJTjMyCisJU09DS0VU
IGZkX2MsIGZkX3M7CisjZWxzZQorCWludCBmZF9jLCBmZF9zLCByYzsKKyNlbmRpZgorCXN0cnVj
dCBzb2NrZXQgKnNfYywgKnNfcywgKnNfbDsKKyNpZmRlZiBfV0lOMzIKKwlIQU5ETEUgdGlkX2Ms
IHRpZF9zOworI2Vsc2UKKwlwdGhyZWFkX3QgdGlkX2MsIHRpZF9zOworI2VuZGlmCisJaW50IGks
IGosIGN1cl9idWZfc2l6ZSwgc25kX2J1Zl9zaXplLCByY3ZfYnVmX3NpemUsIHNlbmR2X3JldHJp
ZXNfbGVmdCwgb247CisJc29ja2xlbl90IG9wdF9sZW47CisJc3RydWN0IHNjdHBfc25kaW5mbyBz
bmRpbmZvOworCWNoYXIgKmxpbmU7CisjaWZkZWYgX1dJTjMyCisJV1NBREFUQSB3c2FEYXRhOwor
I2VuZGlmCisJdWludDE2X3QgY2xpZW50X3BvcnQgPSA5OTAwOworCXVpbnQxNl90IHNlcnZlcl9w
b3J0ID0gOTkwMTsKKworCisJc3RydWN0IHVwY2FsbF9tZXRhIHVwY2FsbF9tZXRhX2NsaWVudDsK
KwlzdHJ1Y3QgdXBjYWxsX21ldGEgdXBjYWxsX21ldGFfc2VydmVyOworCisjaWZkZWYgT1VUUFVU
X1RPX0xPR0ZJTEUKKwlGSUxFICpsb2dmaWxlOworCWxvZ2ZpbGUgPSBmb3BlbigiZWtyX2xvb3Bf
dXBjYWxsLmxvZyIsICJhKyIpOworCWlmIChsb2dmaWxlID09IE5VTEwpIHsKKwkJZGVidWdfcHJp
bnRmKCJGYWlsZWQgY3JlYXRpbmcgbG9nZmlsZVxuIik7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsK
Kwl9CisJZGVidWdfc2V0X3RhcmdldChsb2dmaWxlKTsKKyNlbmRpZgorCisJaWYgKGFyZ2MgPiAx
KSB7CisJCWNsaWVudF9wb3J0ID0gYXRvaShhcmd2WzFdKTsKKwl9CisKKwlpZiAoYXJnYyA+IDIp
IHsKKwkJc2VydmVyX3BvcnQgPSBhdG9pKGFyZ3ZbMl0pOworCX0KKworCWlmIChhcmdjID4gMykg
eworCQljcmMzMmNfb2ZmbG9hZGluZyA9IGF0b2koYXJndlszXSk7CisJfQorCisJZGVidWdfcHJp
bnRmKCJTdGFydGluZyBwcm9ncmFtXG4iKTsKKwlkZWJ1Z19wcmludGYoIkNvbmZpZzpcblx0Q2xp
ZW50IFBvcnQ6XHQlZFxuXHRTZXJ2ZXIgUG9ydDpcdCVkXG5cdENSQzMyQyBDYWxjOlx0JXNcbiIs
IGNsaWVudF9wb3J0LCBzZXJ2ZXJfcG9ydCwgY3JjMzJjX29mZmxvYWRpbmcgPyAib2ZmbG9hZGVk
IiA6ICJOT1Qgb2ZmbG9hZGVkIik7CisKKyNpZmRlZiBfV0lOMzIKKwlpZiAoV1NBU3RhcnR1cChN
QUtFV09SRCgyLDIpLCAmd3NhRGF0YSkgIT0gMCkgeworCQlkZWJ1Z19wcmludGYoIldTQVN0YXJ0
dXAgZmFpbGVkXG4iKTsKKwkJZXhpdCAoRVhJVF9GQUlMVVJFKTsKKwl9CisjZW5kaWYKKwl1c3Jz
Y3RwX2luaXQoMCwgY29ubl9vdXRwdXQsIGRlYnVnX3ByaW50Zl9zdGFjayk7CisKKyNpZmRlZiBT
Q1RQX0RFQlVHCisJdXNyc2N0cF9zeXNjdGxfc2V0X3NjdHBfZGVidWdfb24oU0NUUF9ERUJVR19O
T05FKTsKKyNlbmRpZiAvLyBTQ1RQX0RFQlVHCisKKwlpZiAoY3JjMzJjX29mZmxvYWRpbmcpIHsK
KwkJdXNyc2N0cF9lbmFibGVfY3JjMzJjX29mZmxvYWQoKTsKKwl9CisKKwkvKiBzZXQgdXAgYSBj
b25uZWN0ZWQgVURQIHNvY2tldCAqLworI2lmZGVmIF9XSU4zMgorCWlmICgoZmRfYyA9IHNvY2tl
dChBRl9JTkVULCBTT0NLX0RHUkFNLCBJUFBST1RPX1VEUCkpID09IElOVkFMSURfU09DS0VUKSB7
CisJCWRlYnVnX3ByaW50Zigic29ja2V0KCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBXU0FH
ZXRMYXN0RXJyb3IoKSk7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwl9CisJaWYgKChmZF9zID0g
c29ja2V0KEFGX0lORVQsIFNPQ0tfREdSQU0sIElQUFJPVE9fVURQKSkgPT0gSU5WQUxJRF9TT0NL
RVQpIHsKKwkJZGVidWdfcHJpbnRmKCJzb2NrZXQoKSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIs
IFdTQUdldExhc3RFcnJvcigpKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKyNlbHNlCisJ
aWYgKChmZF9jID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfREdSQU0sIElQUFJPVE9fVURQKSkgPCAw
KSB7CisJCXBlcnJvcigic29ja2V0Iik7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwl9CisJaWYg
KChmZF9zID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfREdSQU0sIElQUFJPVE9fVURQKSkgPCAwKSB7
CisJCXBlcnJvcigic29ja2V0Iik7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwl9CisjZW5kaWYK
KwltZW1zZXQoJnNpbl9jLCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7CisJc2luX2Mu
c2luX2ZhbWlseSA9IEFGX0lORVQ7CisjaWZkZWYgSEFWRV9TSU5fTEVOCisJc2luX2Muc2luX2xl
biA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pOworI2VuZGlmCisJc2luX2Muc2luX3BvcnQg
PSBodG9ucyhjbGllbnRfcG9ydCk7CisJc2luX2Muc2luX2FkZHIuc19hZGRyID0gaHRvbmwoSU5B
RERSX0xPT1BCQUNLKTsKKwltZW1zZXQoJnNpbl9zLCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRy
X2luKSk7CisJc2luX3Muc2luX2ZhbWlseSA9IEFGX0lORVQ7CisjaWZkZWYgSEFWRV9TSU5fTEVO
CisJc2luX3Muc2luX2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pOworI2VuZGlmCisJ
c2luX3Muc2luX3BvcnQgPSBodG9ucyhzZXJ2ZXJfcG9ydCk7CisJc2luX3Muc2luX2FkZHIuc19h
ZGRyID0gaHRvbmwoSU5BRERSX0xPT1BCQUNLKTsKKyNpZmRlZiBfV0lOMzIKKwlpZiAoYmluZChm
ZF9jLCAoc3RydWN0IHNvY2thZGRyICopJnNpbl9jLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2lu
KSkgPT0gU09DS0VUX0VSUk9SKSB7CisJCWRlYnVnX3ByaW50ZigiYmluZCgpIGZhaWxlZCB3aXRo
IGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOworCQlleGl0KEVYSVRfRkFJTFVSRSk7
CisJfQorCWlmIChiaW5kKGZkX3MsIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luX3MsIHNpemVvZihz
dHJ1Y3Qgc29ja2FkZHJfaW4pKSA9PSBTT0NLRVRfRVJST1IpIHsKKwkJZGVidWdfcHJpbnRmKCJi
aW5kKCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7CisJCWV4
aXQoRVhJVF9GQUlMVVJFKTsKKwl9CisjZWxzZQorCWlmIChiaW5kKGZkX2MsIChzdHJ1Y3Qgc29j
a2FkZHIgKikmc2luX2MsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKSA8IDApIHsKKwkJcGVy
cm9yKCJiaW5kIik7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwl9CisJaWYgKGJpbmQoZmRfcywg
KHN0cnVjdCBzb2NrYWRkciAqKSZzaW5fcywgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpIDwg
MCkgeworCQlwZXJyb3IoImJpbmQiKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKyNlbmRp
ZgorI2lmZGVmIF9XSU4zMgorCWlmIChjb25uZWN0KGZkX2MsIChzdHJ1Y3Qgc29ja2FkZHIgKikm
c2luX3MsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKSA9PSBTT0NLRVRfRVJST1IpIHsKKwkJ
ZGVidWdfcHJpbnRmKCJjb25uZWN0KCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBXU0FHZXRM
YXN0RXJyb3IoKSk7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwl9CisJaWYgKGNvbm5lY3QoZmRf
cywgKHN0cnVjdCBzb2NrYWRkciAqKSZzaW5fYywgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikp
ID09IFNPQ0tFVF9FUlJPUikgeworCQlkZWJ1Z19wcmludGYoImNvbm5lY3QoKSBmYWlsZWQgd2l0
aCBlcnJvcjogJWRcbiIsIFdTQUdldExhc3RFcnJvcigpKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUp
OworCX0KKyNlbHNlCisJaWYgKGNvbm5lY3QoZmRfYywgKHN0cnVjdCBzb2NrYWRkciAqKSZzaW5f
cywgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpIDwgMCkgeworCQlwZXJyb3IoImNvbm5lY3Qi
KTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKwlpZiAoY29ubmVjdChmZF9zLCAoc3RydWN0
IHNvY2thZGRyICopJnNpbl9jLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSkgPCAwKSB7CisJ
CXBlcnJvcigiY29ubmVjdCIpOworCQlleGl0KEVYSVRfRkFJTFVSRSk7CisJfQorI2VuZGlmCisj
aWZkZWYgX1dJTjMyCisJaWYgKCh0aWRfYyA9IENyZWF0ZVRocmVhZChOVUxMLCAwLCAmaGFuZGxl
X3BhY2tldHMsICh2b2lkICopJmZkX2MsIDAsIE5VTEwpKSA9PSBOVUxMKSB7CisJCWRlYnVnX3By
aW50ZigiQ3JlYXRlVGhyZWFkKCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBHZXRMYXN0RXJy
b3IoKSk7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwl9CisJaWYgKCh0aWRfcyA9IENyZWF0ZVRo
cmVhZChOVUxMLCAwLCAmaGFuZGxlX3BhY2tldHMsICh2b2lkICopJmZkX3MsIDAsIE5VTEwpKSA9
PSBOVUxMKSB7CisJCWRlYnVnX3ByaW50ZigiQ3JlYXRlVGhyZWFkKCkgZmFpbGVkIHdpdGggZXJy
b3I6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwl9Cisj
ZWxzZQorCWlmICgocmMgPSBwdGhyZWFkX2NyZWF0ZSgmdGlkX2MsIE5VTEwsICZoYW5kbGVfcGFj
a2V0cywgKHZvaWQgKikmZmRfYykpICE9IDApIHsKKwkJZGVidWdfcHJpbnRmKCJwdGhyZWFkX2Ny
ZWF0ZSB0aWRfYzogJXNcbiIsIHN0cmVycm9yKHJjKSk7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsK
Kwl9CisKKwlpZiAoKHJjID0gcHRocmVhZF9jcmVhdGUoJnRpZF9zLCBOVUxMLCAmaGFuZGxlX3Bh
Y2tldHMsICh2b2lkICopJmZkX3MpKSAhPSAwKSB7CisJCWRlYnVnX3ByaW50ZigicHRocmVhZF9j
cmVhdGUgdGlkX3M6ICVzXG4iLCBzdHJlcnJvcihyYykpOworCQlleGl0KEVYSVRfRkFJTFVSRSk7
CisJfTsKKyNlbmRpZgorCisJdXNyc2N0cF9zeXNjdGxfc2V0X3NjdHBfZWNuX2VuYWJsZSgwKTsK
Kwl1c3JzY3RwX3JlZ2lzdGVyX2FkZHJlc3MoKHZvaWQgKikmZmRfYyk7CisJdXNyc2N0cF9yZWdp
c3Rlcl9hZGRyZXNzKCh2b2lkICopJmZkX3MpOworCWlmICgoc19jID0gdXNyc2N0cF9zb2NrZXQo
QUZfQ09OTiwgU09DS19TVFJFQU0sIElQUFJPVE9fU0NUUCwgTlVMTCwgTlVMTCwgMCwgTlVMTCkp
ID09IE5VTEwpIHsKKwkJcGVycm9yKCJ1c3JzY3RwX3NvY2tldCIpOworCQlleGl0KEVYSVRfRkFJ
TFVSRSk7CisJfQorCisJdXBjYWxsX21ldGFfY2xpZW50LmFkZHIgPSAmZmRfYzsKKwl1cGNhbGxf
bWV0YV9jbGllbnQuc2VuZGVyID0gMTsKKwl1c3JzY3RwX3NldF91cGNhbGwoc19jLCBoYW5kbGVf
dXBjYWxsLCAmdXBjYWxsX21ldGFfY2xpZW50KTsKKworCW9wdF9sZW4gPSAoc29ja2xlbl90KXNp
emVvZihpbnQpOworCWN1cl9idWZfc2l6ZSA9IDA7CisJaWYgKHVzcnNjdHBfZ2V0c29ja29wdChz
X2MsIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgJmN1cl9idWZfc2l6ZSwgJm9wdF9sZW4pIDwgMCkg
eworCQlwZXJyb3IoInVzcnNjdHBfZ2V0c29ja29wdCIpOworCQlleGl0KEVYSVRfRkFJTFVSRSk7
CisJfQorCWRlYnVnX3ByaW50ZigiQ2hhbmdlIHNlbmQgc29ja2V0IGJ1ZmZlciBzaXplIGZyb20g
JWQgIiwgY3VyX2J1Zl9zaXplKTsKKwlzbmRfYnVmX3NpemUgPSAxPDwyMjsgLyogNCBNQiAqLwor
CWlmICh1c3JzY3RwX3NldHNvY2tvcHQoc19jLCBTT0xfU09DS0VULCBTT19TTkRCVUYsICZzbmRf
YnVmX3NpemUsIHNpemVvZihpbnQpKSA8IDApIHsKKwkJcGVycm9yKCJ1c3JzY3RwX3NldHNvY2tv
cHQiKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKwlvcHRfbGVuID0gKHNvY2tsZW5fdClz
aXplb2YoaW50KTsKKwljdXJfYnVmX3NpemUgPSAwOworCWlmICh1c3JzY3RwX2dldHNvY2tvcHQo
c19jLCBTT0xfU09DS0VULCBTT19TTkRCVUYsICZjdXJfYnVmX3NpemUsICZvcHRfbGVuKSA8IDAp
IHsKKwkJcGVycm9yKCJ1c3JzY3RwX2dldHNvY2tvcHQiKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUp
OworCX0KKwlkZWJ1Z19wcmludGZfY2xlYW4oInRvICVkLlxuIiwgY3VyX2J1Zl9zaXplKTsKKwlt
ZW1zZXQoJnBhZGRycGFyYW1zLCAwLCBzaXplb2Yoc3RydWN0IHNjdHBfcGFkZHJwYXJhbXMpKTsK
KwlwYWRkcnBhcmFtcy5zcHBfYWRkcmVzcy5zc19mYW1pbHkgPSBBRl9DT05OOworI2lmZGVmIEhB
VkVfU0NPTk5fTEVOCisJcGFkZHJwYXJhbXMuc3BwX2FkZHJlc3Muc3NfbGVuID0gc2l6ZW9mKHN0
cnVjdCBzb2NrYWRkcl9jb25uKTsKKyNlbmRpZgorCXBhZGRycGFyYW1zLnNwcF9mbGFncyA9IFNQ
UF9QTVRVRF9ESVNBQkxFOworCXBhZGRycGFyYW1zLnNwcF9wYXRobXR1ID0gOTAwMDsKKwlpZiAo
dXNyc2N0cF9zZXRzb2Nrb3B0KHNfYywgSVBQUk9UT19TQ1RQLCBTQ1RQX1BFRVJfQUREUl9QQVJB
TVMsICZwYWRkcnBhcmFtcywgc2l6ZW9mKHN0cnVjdCBzY3RwX3BhZGRycGFyYW1zKSkgPCAwKSB7
CisJCXBlcnJvcigidXNyc2N0cF9zZXRzb2Nrb3B0Iik7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsK
Kwl9CisJaWYgKChzX2wgPSB1c3JzY3RwX3NvY2tldChBRl9DT05OLCBTT0NLX1NUUkVBTSwgSVBQ
Uk9UT19TQ1RQLCBOVUxMLCBOVUxMLCAwLCBOVUxMKSkgPT0gTlVMTCkgeworCQlwZXJyb3IoInVz
cnNjdHBfc29ja2V0Iik7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwl9CisJb3B0X2xlbiA9IChz
b2NrbGVuX3Qpc2l6ZW9mKGludCk7CisJY3VyX2J1Zl9zaXplID0gMDsKKwlpZiAodXNyc2N0cF9n
ZXRzb2Nrb3B0KHNfbCwgU09MX1NPQ0tFVCwgU09fUkNWQlVGLCAmY3VyX2J1Zl9zaXplLCAmb3B0
X2xlbikgPCAwKSB7CisJCXBlcnJvcigidXNyc2N0cF9nZXRzb2Nrb3B0Iik7CisJCWV4aXQoRVhJ
VF9GQUlMVVJFKTsKKwl9CisJZGVidWdfcHJpbnRmKCJDaGFuZ2UgcmVjZWl2ZSBzb2NrZXQgYnVm
ZmVyIHNpemUgZnJvbSAlZCAiLCBjdXJfYnVmX3NpemUpOworCXJjdl9idWZfc2l6ZSA9IDE8PDE2
OyAvKiA2NCBLQiAqLworCWlmICh1c3JzY3RwX3NldHNvY2tvcHQoc19sLCBTT0xfU09DS0VULCBT
T19SQ1ZCVUYsICZyY3ZfYnVmX3NpemUsIHNpemVvZihpbnQpKSA8IDApIHsKKwkJcGVycm9yKCJ1
c3JzY3RwX3NldHNvY2tvcHQiKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKwlvcHRfbGVu
ID0gKHNvY2tsZW5fdClzaXplb2YoaW50KTsKKwljdXJfYnVmX3NpemUgPSAwOworCWlmICh1c3Jz
Y3RwX2dldHNvY2tvcHQoc19sLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsICZjdXJfYnVmX3NpemUs
ICZvcHRfbGVuKSA8IDApIHsKKwkJcGVycm9yKCJ1c3JzY3RwX2dldHNvY2tvcHQiKTsKKwkJZXhp
dChFWElUX0ZBSUxVUkUpOworCX0KKwlkZWJ1Z19wcmludGZfY2xlYW4oInRvICVkLlxuIiwgY3Vy
X2J1Zl9zaXplKTsKKworCW9uID0gMTsKKwlpZiAodXNyc2N0cF9zZXRzb2Nrb3B0KHNfbCwgSVBQ
Uk9UT19TQ1RQLCBTQ1RQX1JFQ1ZSQ1ZJTkZPLCAmb24sIHNpemVvZihpbnQpKSA8IDApIHsKKwkJ
cGVycm9yKCJ1c3JzY3RwX3NldHNvY2tvcHQiKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0K
KworCS8qIEJpbmQgdGhlIGNsaWVudCBzaWRlLiAqLworCW1lbXNldCgmc2Nvbm4sIDAsIHNpemVv
ZihzdHJ1Y3Qgc29ja2FkZHJfY29ubikpOworCXNjb25uLnNjb25uX2ZhbWlseSA9IEFGX0NPTk47
CisjaWZkZWYgSEFWRV9TQ09OTl9MRU4KKwlzY29ubi5zY29ubl9sZW4gPSBzaXplb2Yoc3RydWN0
IHNvY2thZGRyX2Nvbm4pOworI2VuZGlmCisJc2Nvbm4uc2Nvbm5fcG9ydCA9IGh0b25zKDUwMDEp
OworCXNjb25uLnNjb25uX2FkZHIgPSAmZmRfYzsKKwlpZiAodXNyc2N0cF9iaW5kKHNfYywgKHN0
cnVjdCBzb2NrYWRkciAqKSZzY29ubiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9jb25uKSkgPCAw
KSB7CisJCXBlcnJvcigidXNyc2N0cF9iaW5kIik7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwl9
CisJLyogQmluZCB0aGUgc2VydmVyIHNpZGUuICovCisJbWVtc2V0KCZzY29ubiwgMCwgc2l6ZW9m
KHN0cnVjdCBzb2NrYWRkcl9jb25uKSk7CisJc2Nvbm4uc2Nvbm5fZmFtaWx5ID0gQUZfQ09OTjsK
KyNpZmRlZiBIQVZFX1NDT05OX0xFTgorCXNjb25uLnNjb25uX2xlbiA9IHNpemVvZihzdHJ1Y3Qg
c29ja2FkZHJfY29ubik7CisjZW5kaWYKKwlzY29ubi5zY29ubl9wb3J0ID0gaHRvbnMoNTAwMSk7
CisJc2Nvbm4uc2Nvbm5fYWRkciA9ICZmZF9zOworCWlmICh1c3JzY3RwX2JpbmQoc19sLCAoc3Ry
dWN0IHNvY2thZGRyICopJnNjb25uLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2Nvbm4pKSA8IDAp
IHsKKwkJcGVycm9yKCJ1c3JzY3RwX2JpbmQiKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0K
KwkvKiBNYWtlIHNlcnZlciBzaWRlIHBhc3NpdmUuLi4gKi8KKwlpZiAodXNyc2N0cF9saXN0ZW4o
c19sLCAxKSA8IDApIHsKKwkJcGVycm9yKCJ1c3JzY3RwX2xpc3RlbiIpOworCQlleGl0KEVYSVRf
RkFJTFVSRSk7CisJfQorCS8qIEluaXRpYXRlIHRoZSBoYW5kc2hha2UgKi8KKwltZW1zZXQoJnNj
b25uLCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2Nvbm4pKTsKKwlzY29ubi5zY29ubl9mYW1p
bHkgPSBBRl9DT05OOworI2lmZGVmIEhBVkVfU0NPTk5fTEVOCisJc2Nvbm4uc2Nvbm5fbGVuID0g
c2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9jb25uKTsKKyNlbmRpZgorCXNjb25uLnNjb25uX3BvcnQg
PSBodG9ucyg1MDAxKTsKKwlzY29ubi5zY29ubl9hZGRyID0gJmZkX2M7CisJaWYgKHVzcnNjdHBf
Y29ubmVjdChzX2MsIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2Nvbm4sIHNpemVvZihzdHJ1Y3Qgc29j
a2FkZHJfY29ubikpIDwgMCkgeworCQlwZXJyb3IoInVzcnNjdHBfY29ubmVjdCIpOworCQlleGl0
KEVYSVRfRkFJTFVSRSk7CisJfQorCWlmICgoc19zID0gdXNyc2N0cF9hY2NlcHQoc19sLCBOVUxM
LCBOVUxMKSkgPT0gTlVMTCkgeworCQlwZXJyb3IoInVzcnNjdHBfYWNjZXB0Iik7CisJCWV4aXQo
RVhJVF9GQUlMVVJFKTsKKwl9CisKKwl1cGNhbGxfbWV0YV9zZXJ2ZXIuYWRkciAJPSAmZmRfczsK
Kwl1cGNhbGxfbWV0YV9zZXJ2ZXIuc2VuZGVyIAk9IDA7CisJdXNyc2N0cF9zZXRfdXBjYWxsKHNf
cywgaGFuZGxlX3VwY2FsbCwgJnVwY2FsbF9tZXRhX3NlcnZlcik7CisKKwl1c3JzY3RwX2Nsb3Nl
KHNfbCk7CisJcHJpbnRfYWRkcmVzc2VzKHNfcyk7CisKKwlpZiAoKGxpbmUgPSBtYWxsb2MoTElO
RV9MRU5HVEgpKSA9PSBOVUxMKSB7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwl9CisJbWVtc2V0
KGxpbmUsICdBJywgTElORV9MRU5HVEgpOworCXNuZGluZm8uc25kX3NpZCA9IDE7CisJc25kaW5m
by5zbmRfcHBpZCA9IGh0b25sKERJU0NBUkRfUFBJRCk7CisJc25kaW5mby5zbmRfY29udGV4dCA9
IDA7CisJc25kaW5mby5zbmRfYXNzb2NfaWQgPSAwOworCisJZm9yIChpID0gMDsgaSA8IE5VTUJF
Ul9PRl9TVEVQUzsgaSsrKSB7CisJCWlmIChpICUgMikgeworCQkJc25kaW5mby5zbmRfZmxhZ3Mg
PSBTQ1RQX1VOT1JERVJFRDsKKwkJfSBlbHNlIHsKKwkJCXNuZGluZm8uc25kX2ZsYWdzID0gMDsK
KwkJfQorCQlmb3IgKGogPSAwOyBqIDwgMjsgaisrKSB7CisJCQkvKiBTZW5kIGEgMSBNQiBtZXNz
YWdlICovCisJCQlzZW5kdl9yZXRyaWVzX2xlZnQgPSAxMjA7CisJCQlkZWJ1Z19wcmludGYoInVz
cnNjcF9zZW5kdiAtIHN0ZXAgJWQgLSBjYWxsICVkIGZsYWdzICV4XG4iLCBpLCBqICsgMSwgc25k
aW5mby5zbmRfZmxhZ3MpOworCQkJd2hpbGUgKHVzcnNjdHBfc2VuZHYoc19jLCBsaW5lLCBMSU5F
X0xFTkdUSCwgTlVMTCwgMCwgKHZvaWQgKikmc25kaW5mbywKKwkJCQkJIChzb2NrbGVuX3Qpc2l6
ZW9mKHN0cnVjdCBzY3RwX3NuZGluZm8pLCBTQ1RQX1NFTkRWX1NORElORk8sIDApIDwgMCkgewor
CQkJCWRlYnVnX3ByaW50ZigidXNyc2N0cF9zZW5kdiAtIGVycm5vOiAlZCAtICVzXG4iLCBlcnJu
bywgc3RyZXJyb3IoZXJybm8pKTsKKwkJCQlpZiAoZXJybm8gIT0gRVdPVUxEQkxPQ0sgfHwgIXNl
bmR2X3JldHJpZXNfbGVmdCkgeworCQkJCQlleGl0KEVYSVRfRkFJTFVSRSk7CisJCQkJfQorCQkJ
CXNlbmR2X3JldHJpZXNfbGVmdC0tOworI2lmZGVmIF9XSU4zMgorCQkJCVNsZWVwKDEwMDApOwor
I2Vsc2UKKwkJCQlzbGVlcCgxKTsKKyNlbmRpZgorCQkJfQorCQl9CisJCWRlYnVnX3ByaW50Zigi
U2VuZGluZyBkb25lLCBzbGVlcGluZ1xuIik7CisjaWZkZWYgX1dJTjMyCisJCVNsZWVwKDEwMDAp
OworI2Vsc2UKKwkJc2xlZXAoMSk7CisjZW5kaWYKKwl9CisJZnJlZShsaW5lKTsKKwl1c3JzY3Rw
X3NodXRkb3duKHNfYywgU0hVVF9XUik7CisKKwl3aGlsZSAodXNyc2N0cF9maW5pc2goKSAhPSAw
KSB7CisJCWRlYnVnX3ByaW50ZigiV2FpdGluZyBmb3IgdXNyc2N0cF9maW5pc2goKVxuIik7Cisj
aWZkZWYgX1dJTjMyCisJCVNsZWVwKDEwMDApOworI2Vsc2UKKwkJc2xlZXAoMSk7CisjZW5kaWYK
Kwl9CisjaWZkZWYgX1dJTjMyCisJVGVybWluYXRlVGhyZWFkKHRpZF9jLCAwKTsKKwlXYWl0Rm9y
U2luZ2xlT2JqZWN0KHRpZF9jLCBJTkZJTklURSk7CisJVGVybWluYXRlVGhyZWFkKHRpZF9zLCAw
KTsKKwlXYWl0Rm9yU2luZ2xlT2JqZWN0KHRpZF9zLCBJTkZJTklURSk7CisJaWYgKGNsb3Nlc29j
a2V0KGZkX2MpID09IFNPQ0tFVF9FUlJPUikgeworCQlkZWJ1Z19wcmludGYoImNsb3Nlc29ja2V0
KCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7CisJCWV4aXQo
RVhJVF9GQUlMVVJFKTsKKwl9CisJaWYgKGNsb3Nlc29ja2V0KGZkX3MpID09IFNPQ0tFVF9FUlJP
UikgeworCQlkZWJ1Z19wcmludGYoImNsb3Nlc29ja2V0KCkgZmFpbGVkIHdpdGggZXJyb3I6ICVk
XG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwl9CisJV1NB
Q2xlYW51cCgpOworI2Vsc2UKKwlwdGhyZWFkX2NhbmNlbCh0aWRfYyk7CisJcHRocmVhZF9qb2lu
KHRpZF9jLCBOVUxMKTsKKwlwdGhyZWFkX2NhbmNlbCh0aWRfcyk7CisJcHRocmVhZF9qb2luKHRp
ZF9zLCBOVUxMKTsKKwlpZiAoY2xvc2UoZmRfYykgPCAwKSB7CisJCXBlcnJvcigiY2xvc2UiKTsK
KwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKwlpZiAoY2xvc2UoZmRfcykgPCAwKSB7CisJCXBl
cnJvcigiY2xvc2UiKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKyNlbmRpZgorCXJldHVy
biAoMCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9la3JfcGVlci5jIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNj
dHBsaWIvcHJvZ3JhbXMvZWtyX3BlZXIuYwppbmRleCBjYTBjNjRkNmRhZDE1ZTU2NmEyYWFmOWE0
Y2U4ODBmZDJjYzhmYzQyLi5hOTRmNWYxYWUyN2M2ZDA2NGVlZjBhOTIzYWQxODUwMmVhYmQwNWY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9la3JfcGVlci5jCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L3Byb2dyYW1zL2Vrcl9wZWVyLmMKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlIDx3czJ0Y3Bp
cC5oPgogI2VuZGlmCiAjaW5jbHVkZSA8dXNyc2N0cC5oPgorI2luY2x1ZGUgInByb2dyYW1zX2hl
bHBlci5oIgogCiAjZGVmaW5lIE1BWF9QQUNLRVRfU0laRSAoMTw8MTYpCiAjZGVmaW5lIExJTkVf
TEVOR1RIIDgwCkBAIC0xMTYsMjA2ICsxMTcsNiBAQCBjb25uX291dHB1dCh2b2lkICphZGRyLCB2
b2lkICpidWZmZXIsIHNpemVfdCBsZW5ndGgsIHVpbnQ4X3QgdG9zLCB1aW50OF90IHNldF9kZgog
CX0KIH0KIAotc3RhdGljIHZvaWQKLWhhbmRsZV9hc3NvY2lhdGlvbl9jaGFuZ2VfZXZlbnQoc3Ry
dWN0IHNjdHBfYXNzb2NfY2hhbmdlICpzYWMpCi17Ci0JdW5zaWduZWQgaW50IGksIG47Ci0KLQlw
cmludGYoIkFzc29jaWF0aW9uIGNoYW5nZSAiKTsKLQlzd2l0Y2ggKHNhYy0+c2FjX3N0YXRlKSB7
Ci0JY2FzZSBTQ1RQX0NPTU1fVVA6Ci0JCXByaW50ZigiU0NUUF9DT01NX1VQIik7Ci0JCWJyZWFr
OwotCWNhc2UgU0NUUF9DT01NX0xPU1Q6Ci0JCXByaW50ZigiU0NUUF9DT01NX0xPU1QiKTsKLQkJ
YnJlYWs7Ci0JY2FzZSBTQ1RQX1JFU1RBUlQ6Ci0JCXByaW50ZigiU0NUUF9SRVNUQVJUIik7Ci0J
CWJyZWFrOwotCWNhc2UgU0NUUF9TSFVURE9XTl9DT01QOgotCQlwcmludGYoIlNDVFBfU0hVVERP
V05fQ09NUCIpOwotCQlicmVhazsKLQljYXNlIFNDVFBfQ0FOVF9TVFJfQVNTT0M6Ci0JCXByaW50
ZigiU0NUUF9DQU5UX1NUUl9BU1NPQyIpOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlwcmludGYo
IlVOS05PV04iKTsKLQkJYnJlYWs7Ci0JfQotCXByaW50ZigiLCBzdHJlYW1zIChpbi9vdXQpID0g
KCV1LyV1KSIsCi0JICAgICAgIHNhYy0+c2FjX2luYm91bmRfc3RyZWFtcywgc2FjLT5zYWNfb3V0
Ym91bmRfc3RyZWFtcyk7Ci0JbiA9IHNhYy0+c2FjX2xlbmd0aCAtIHNpemVvZihzdHJ1Y3Qgc2N0
cF9hc3NvY19jaGFuZ2UpOwotCWlmICgoKHNhYy0+c2FjX3N0YXRlID09IFNDVFBfQ09NTV9VUCkg
fHwKLQkgICAgIChzYWMtPnNhY19zdGF0ZSA9PSBTQ1RQX1JFU1RBUlQpKSAmJiAobiA+IDApKSB7
Ci0JCXByaW50ZigiLCBzdXBwb3J0cyIpOwotCQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0J
CQlzd2l0Y2ggKHNhYy0+c2FjX2luZm9baV0pIHsKLQkJCWNhc2UgU0NUUF9BU1NPQ19TVVBQT1JU
U19QUjoKLQkJCQlwcmludGYoIiBQUiIpOwotCQkJCWJyZWFrOwotCQkJY2FzZSBTQ1RQX0FTU09D
X1NVUFBPUlRTX0FVVEg6Ci0JCQkJcHJpbnRmKCIgQVVUSCIpOwotCQkJCWJyZWFrOwotCQkJY2Fz
ZSBTQ1RQX0FTU09DX1NVUFBPUlRTX0FTQ09ORjoKLQkJCQlwcmludGYoIiBBU0NPTkYiKTsKLQkJ
CQlicmVhazsKLQkJCWNhc2UgU0NUUF9BU1NPQ19TVVBQT1JUU19NVUxUSUJVRjoKLQkJCQlwcmlu
dGYoIiBNVUxUSUJVRiIpOwotCQkJCWJyZWFrOwotCQkJY2FzZSBTQ1RQX0FTU09DX1NVUFBPUlRT
X1JFX0NPTkZJRzoKLQkJCQlwcmludGYoIiBSRS1DT05GSUciKTsKLQkJCQlicmVhazsKLQkJCWRl
ZmF1bHQ6Ci0JCQkJcHJpbnRmKCIgVU5LTk9XTigweCUwMngpIiwgc2FjLT5zYWNfaW5mb1tpXSk7
Ci0JCQkJYnJlYWs7Ci0JCQl9Ci0JCX0KLQl9IGVsc2UgaWYgKCgoc2FjLT5zYWNfc3RhdGUgPT0g
U0NUUF9DT01NX0xPU1QpIHx8Ci0JICAgICAgICAgICAgKHNhYy0+c2FjX3N0YXRlID09IFNDVFBf
Q0FOVF9TVFJfQVNTT0MpKSAmJiAobiA+IDApKSB7Ci0JCXByaW50ZigiLCBBQk9SVCA9Iik7Ci0J
CWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLQkJCXByaW50ZigiIDB4JTAyeCIsIHNhYy0+c2Fj
X2luZm9baV0pOwotCQl9Ci0JfQotCXByaW50ZigiLlxuIik7Ci0JaWYgKChzYWMtPnNhY19zdGF0
ZSA9PSBTQ1RQX0NBTlRfU1RSX0FTU09DKSB8fAotCSAgICAoc2FjLT5zYWNfc3RhdGUgPT0gU0NU
UF9TSFVURE9XTl9DT01QKSB8fAotCSAgICAoc2FjLT5zYWNfc3RhdGUgPT0gU0NUUF9DT01NX0xP
U1QpKSB7Ci0JCWV4aXQoMCk7Ci0JfQotCXJldHVybjsKLX0KLQotc3RhdGljIHZvaWQKLWhhbmRs
ZV9wZWVyX2FkZHJlc3NfY2hhbmdlX2V2ZW50KHN0cnVjdCBzY3RwX3BhZGRyX2NoYW5nZSAqc3Bj
KQotewotCWNoYXIgYWRkcl9idWZbSU5FVDZfQUREUlNUUkxFTl07Ci0JY29uc3QgY2hhciAqYWRk
cjsKLQlzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbjsKLQlzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW42
OwotCXN0cnVjdCBzb2NrYWRkcl9jb25uICpzY29ubjsKLQotCXN3aXRjaCAoc3BjLT5zcGNfYWFk
ZHIuc3NfZmFtaWx5KSB7Ci0JY2FzZSBBRl9JTkVUOgotCQlzaW4gPSAoc3RydWN0IHNvY2thZGRy
X2luICopJnNwYy0+c3BjX2FhZGRyOwotCQlhZGRyID0gaW5ldF9udG9wKEFGX0lORVQsICZzaW4t
PnNpbl9hZGRyLCBhZGRyX2J1ZiwgSU5FVF9BRERSU1RSTEVOKTsKLQkJYnJlYWs7Ci0JY2FzZSBB
Rl9JTkVUNjoKLQkJc2luNiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopJnNwYy0+c3BjX2FhZGRy
OwotCQlhZGRyID0gaW5ldF9udG9wKEFGX0lORVQ2LCAmc2luNi0+c2luNl9hZGRyLCBhZGRyX2J1
ZiwgSU5FVDZfQUREUlNUUkxFTik7Ci0JCWJyZWFrOwotCWNhc2UgQUZfQ09OTjoKLQkJc2Nvbm4g
PSAoc3RydWN0IHNvY2thZGRyX2Nvbm4gKikmc3BjLT5zcGNfYWFkZHI7Ci0jaWZkZWYgX1dJTjMy
Ci0JCV9zbnByaW50ZihhZGRyX2J1ZiwgSU5FVDZfQUREUlNUUkxFTiwgIiVwIiwgc2Nvbm4tPnNj
b25uX2FkZHIpOwotI2Vsc2UKLQkJc25wcmludGYoYWRkcl9idWYsIElORVQ2X0FERFJTVFJMRU4s
ICIlcCIsIHNjb25uLT5zY29ubl9hZGRyKTsKLSNlbmRpZgotCQlhZGRyID0gYWRkcl9idWY7Ci0J
CWJyZWFrOwotCWRlZmF1bHQ6Ci0jaWZkZWYgX1dJTjMyCi0JCV9zbnByaW50ZihhZGRyX2J1Ziwg
SU5FVDZfQUREUlNUUkxFTiwgIlVua25vd24gZmFtaWx5ICVkIiwgc3BjLT5zcGNfYWFkZHIuc3Nf
ZmFtaWx5KTsKLSNlbHNlCi0JCXNucHJpbnRmKGFkZHJfYnVmLCBJTkVUNl9BRERSU1RSTEVOLCAi
VW5rbm93biBmYW1pbHkgJWQiLCBzcGMtPnNwY19hYWRkci5zc19mYW1pbHkpOwotI2VuZGlmCi0J
CWFkZHIgPSBhZGRyX2J1ZjsKLQkJYnJlYWs7Ci0JfQotCXByaW50ZigiUGVlciBhZGRyZXNzICVz
IGlzIG5vdyAiLCBhZGRyKTsKLQlzd2l0Y2ggKHNwYy0+c3BjX3N0YXRlKSB7Ci0JY2FzZSBTQ1RQ
X0FERFJfQVZBSUxBQkxFOgotCQlwcmludGYoIlNDVFBfQUREUl9BVkFJTEFCTEUiKTsKLQkJYnJl
YWs7Ci0JY2FzZSBTQ1RQX0FERFJfVU5SRUFDSEFCTEU6Ci0JCXByaW50ZigiU0NUUF9BRERSX1VO
UkVBQ0hBQkxFIik7Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9BRERSX1JFTU9WRUQ6Ci0JCXByaW50
ZigiU0NUUF9BRERSX1JFTU9WRUQiKTsKLQkJYnJlYWs7Ci0JY2FzZSBTQ1RQX0FERFJfQURERUQ6
Ci0JCXByaW50ZigiU0NUUF9BRERSX0FEREVEIik7Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9BRERS
X01BREVfUFJJTToKLQkJcHJpbnRmKCJTQ1RQX0FERFJfTUFERV9QUklNIik7Ci0JCWJyZWFrOwot
CWNhc2UgU0NUUF9BRERSX0NPTkZJUk1FRDoKLQkJcHJpbnRmKCJTQ1RQX0FERFJfQ09ORklSTUVE
Iik7Ci0JCWJyZWFrOwotCWRlZmF1bHQ6Ci0JCXByaW50ZigiVU5LTk9XTiIpOwotCQlicmVhazsK
LQl9Ci0JcHJpbnRmKCIgKGVycm9yID0gMHglMDh4KS5cbiIsIHNwYy0+c3BjX2Vycm9yKTsKLQly
ZXR1cm47Ci19Ci0KLXN0YXRpYyB2b2lkCi1oYW5kbGVfc2VuZF9mYWlsZWRfZXZlbnQoc3RydWN0
IHNjdHBfc2VuZF9mYWlsZWRfZXZlbnQgKnNzZmUpCi17Ci0Jc2l6ZV90IGksIG47Ci0KLQlpZiAo
c3NmZS0+c3NmZV9mbGFncyAmIFNDVFBfREFUQV9VTlNFTlQpIHsKLQkJcHJpbnRmKCJVbnNlbnQg
Iik7Ci0JfQotCWlmIChzc2ZlLT5zc2ZlX2ZsYWdzICYgU0NUUF9EQVRBX1NFTlQpIHsKLQkJcHJp
bnRmKCJTZW50ICIpOwotCX0KLQlpZiAoc3NmZS0+c3NmZV9mbGFncyAmIH4oU0NUUF9EQVRBX1NF
TlQgfCBTQ1RQX0RBVEFfVU5TRU5UKSkgewotCQlwcmludGYoIihmbGFncyA9ICV4KSAiLCBzc2Zl
LT5zc2ZlX2ZsYWdzKTsKLQl9Ci0JcHJpbnRmKCJtZXNzYWdlIHdpdGggUFBJRCA9ICV1LCBTSUQg
PSAldSwgZmxhZ3M6IDB4JTA0eCBkdWUgdG8gZXJyb3IgPSAweCUwOHgiLAotCSAgICAgICBudG9o
bChzc2ZlLT5zc2ZlX2luZm8uc25kX3BwaWQpLCBzc2ZlLT5zc2ZlX2luZm8uc25kX3NpZCwKLQkg
ICAgICAgc3NmZS0+c3NmZV9pbmZvLnNuZF9mbGFncywgc3NmZS0+c3NmZV9lcnJvcik7Ci0JbiA9
IHNzZmUtPnNzZmVfbGVuZ3RoIC0gc2l6ZW9mKHN0cnVjdCBzY3RwX3NlbmRfZmFpbGVkX2V2ZW50
KTsKLQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0JCXByaW50ZigiIDB4JTAyeCIsIHNzZmUt
PnNzZmVfZGF0YVtpXSk7Ci0JfQotCXByaW50ZigiLlxuIik7Ci0JcmV0dXJuOwotfQotCi1zdGF0
aWMgdm9pZAotaGFuZGxlX25vdGlmaWNhdGlvbih1bmlvbiBzY3RwX25vdGlmaWNhdGlvbiAqbm90
aWYsIHNpemVfdCBuKQotewotCWlmIChub3RpZi0+c25faGVhZGVyLnNuX2xlbmd0aCAhPSAodWlu
dDMyX3QpbikgewotCQlyZXR1cm47Ci0JfQotCXN3aXRjaCAobm90aWYtPnNuX2hlYWRlci5zbl90
eXBlKSB7Ci0JY2FzZSBTQ1RQX0FTU09DX0NIQU5HRToKLQkJaGFuZGxlX2Fzc29jaWF0aW9uX2No
YW5nZV9ldmVudCgmKG5vdGlmLT5zbl9hc3NvY19jaGFuZ2UpKTsKLQkJYnJlYWs7Ci0JY2FzZSBT
Q1RQX1BFRVJfQUREUl9DSEFOR0U6Ci0JCWhhbmRsZV9wZWVyX2FkZHJlc3NfY2hhbmdlX2V2ZW50
KCYobm90aWYtPnNuX3BhZGRyX2NoYW5nZSkpOwotCQlicmVhazsKLQljYXNlIFNDVFBfUkVNT1RF
X0VSUk9SOgotCQlicmVhazsKLQljYXNlIFNDVFBfU0hVVERPV05fRVZFTlQ6Ci0JCWJyZWFrOwot
CWNhc2UgU0NUUF9BREFQVEFUSU9OX0lORElDQVRJT046Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9Q
QVJUSUFMX0RFTElWRVJZX0VWRU5UOgotCQlicmVhazsKLQljYXNlIFNDVFBfQVVUSEVOVElDQVRJ
T05fRVZFTlQ6Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9TRU5ERVJfRFJZX0VWRU5UOgotCQlicmVh
azsKLQljYXNlIFNDVFBfTk9USUZJQ0FUSU9OU19TVE9QUEVEX0VWRU5UOgotCQlicmVhazsKLQlj
YXNlIFNDVFBfU0VORF9GQUlMRURfRVZFTlQ6Ci0JCWhhbmRsZV9zZW5kX2ZhaWxlZF9ldmVudCgm
KG5vdGlmLT5zbl9zZW5kX2ZhaWxlZF9ldmVudCkpOwotCQlicmVhazsKLQljYXNlIFNDVFBfU1RS
RUFNX1JFU0VUX0VWRU5UOgotCQlicmVhazsKLQljYXNlIFNDVFBfQVNTT0NfUkVTRVRfRVZFTlQ6
Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9TVFJFQU1fQ0hBTkdFX0VWRU5UOgotCQlicmVhazsKLQlk
ZWZhdWx0OgotCQlicmVhazsKLQl9Ci19Ci0KIHN0YXRpYyBpbnQKIHJlY2VpdmVfY2Ioc3RydWN0
IHNvY2tldCAqc29jaywgdW5pb24gc2N0cF9zb2Nrc3RvcmUgYWRkciwgdm9pZCAqZGF0YSwKICAg
ICAgICAgICAgc2l6ZV90IGRhdGFsZW4sIHN0cnVjdCBzY3RwX3JjdmluZm8gcmN2LCBpbnQgZmxh
Z3MsIHZvaWQgKnVscF9pbmZvKQpAQCAtMzQyLDE2ICsxNDMsNiBAQCByZWNlaXZlX2NiKHN0cnVj
dCBzb2NrZXQgKnNvY2ssIHVuaW9uIHNjdHBfc29ja3N0b3JlIGFkZHIsIHZvaWQgKmRhdGEsCiAJ
cmV0dXJuICgxKTsKIH0KIAotdm9pZAotZGVidWdfcHJpbnRmKGNvbnN0IGNoYXIgKmZvcm1hdCwg
Li4uKQotewotCXZhX2xpc3QgYXA7Ci0KLQl2YV9zdGFydChhcCwgZm9ybWF0KTsKLQl2cHJpbnRm
KGZvcm1hdCwgYXApOwotCXZhX2VuZChhcCk7Ci19Ci0KIGludAogbWFpbihpbnQgYXJnYywgY2hh
ciAqYXJndltdKQogewpAQCAtMzY1LDcgKzE1Niw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFy
Z3ZbXSkKICNpZmRlZiBfV0lOMzIKIAlTT0NLRVQgZmQ7CiAjZWxzZQotCWludCBmZDsKKwlpbnQg
ZmQsIHJjOwogI2VuZGlmCiAJc3RydWN0IHNvY2tldCAqczsKICNpZmRlZiBfV0lOMzIKQEAgLTM4
NiwxNSArMTc3LDE1IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogI2lmZGVmIF9X
SU4zMgogCWlmIChXU0FTdGFydHVwKE1BS0VXT1JEKDIsMiksICZ3c2FEYXRhKSAhPSAwKSB7Ci0J
CXByaW50ZigiV1NBU3RhcnR1cCBmYWlsZWRcbiIpOworCQlmcHJpbnRmKHN0ZGVyciwgIldTQVN0
YXJ0dXAgZmFpbGVkXG4iKTsKIAkJZXhpdChFWElUX0ZBSUxVUkUpOwogCX0KICNlbmRpZgotCXVz
cnNjdHBfaW5pdCgwLCBjb25uX291dHB1dCwgZGVidWdfcHJpbnRmKTsKKwl1c3JzY3RwX2luaXQo
MCwgY29ubl9vdXRwdXQsIGRlYnVnX3ByaW50Zl9zdGFjayk7CiAJLyogc2V0IHVwIGEgY29ubmVj
dGVkIFVEUCBzb2NrZXQgKi8KICNpZmRlZiBfV0lOMzIKIAlpZiAoKGZkID0gc29ja2V0KEFGX0lO
RVQsIFNPQ0tfREdSQU0sIElQUFJPVE9fVURQKSkgPT0gSU5WQUxJRF9TT0NLRVQpIHsKLQkJcHJp
bnRmKCJzb2NrZXQoKSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIFdTQUdldExhc3RFcnJvcigp
KTsKKwkJZnByaW50ZihzdGRlcnIsICJzb2NrZXQoKSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIs
IFdTQUdldExhc3RFcnJvcigpKTsKIAkJZXhpdChFWElUX0ZBSUxVUkUpOwogCX0KICNlbHNlCkBA
IC00MTUsNyArMjA2LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCX0KICNpZmRl
ZiBfV0lOMzIKIAlpZiAoYmluZChmZCwgKHN0cnVjdCBzb2NrYWRkciAqKSZzaW4sIHNpemVvZihz
dHJ1Y3Qgc29ja2FkZHJfaW4pKSA9PSBTT0NLRVRfRVJST1IpIHsKLQkJcHJpbnRmKCJiaW5kKCkg
ZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7CisJCWZwcmludGYo
c3RkZXJyLCAiYmluZCgpIGZhaWxlZCB3aXRoIGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9y
KCkpOwogCQlleGl0KEVYSVRfRkFJTFVSRSk7CiAJfQogI2Vsc2UKQEAgLTQzNiw3ICsyMjcsNyBA
QCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJfQogI2lmZGVmIF9XSU4zMgogCWlmIChj
b25uZWN0KGZkLCAoc3RydWN0IHNvY2thZGRyICopJnNpbiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRk
cl9pbikpID09IFNPQ0tFVF9FUlJPUikgewotCQlwcmludGYoImNvbm5lY3QoKSBmYWlsZWQgd2l0
aCBlcnJvcjogJWRcbiIsIFdTQUdldExhc3RFcnJvcigpKTsKKwkJZnByaW50ZihzdGRlcnIsICJj
b25uZWN0KCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7CiAJ
CWV4aXQoRVhJVF9GQUlMVVJFKTsKIAl9CiAjZWxzZQpAQCAtNDQ2LDkgKzIzNywxNSBAQCBtYWlu
KGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJfQogI2VuZGlmCiAjaWZkZWYgX1dJTjMyCi0JdGlk
ID0gQ3JlYXRlVGhyZWFkKE5VTEwsIDAsICZoYW5kbGVfcGFja2V0cywgKHZvaWQgKikmZmQsIDAs
IE5VTEwpOworCWlmICgodGlkID0gQ3JlYXRlVGhyZWFkKE5VTEwsIDAsICZoYW5kbGVfcGFja2V0
cywgKHZvaWQgKikmZmQsIDAsIE5VTEwpKSA9PSBOVUxMKSB7CisJCWZwcmludGYoc3RkZXJyLCAi
Q3JlYXRlVGhyZWFkKCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7
CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwl9CiAjZWxzZQotCXB0aHJlYWRfY3JlYXRlKCZ0aWQs
IE5VTEwsICZoYW5kbGVfcGFja2V0cywgKHZvaWQgKikmZmQpOworCWlmICgocmMgPSBwdGhyZWFk
X2NyZWF0ZSgmdGlkLCBOVUxMLCAmaGFuZGxlX3BhY2tldHMsICh2b2lkICopJmZkKSkgIT0gMCkg
eworCQlmcHJpbnRmKHN0ZGVyciwgInB0aHJlYWRfY3JlYXRlOiAlc1xuIiwgc3RyZXJyb3IocmMp
KTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KICNlbmRpZgogI2lmZGVmIFNDVFBfREVCVUcK
IAl1c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9kZWJ1Z19vbihTQ1RQX0RFQlVHX05PTkUpOwpAQCAt
NDkyLDcgKzI4OSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJcGVycm9yKCJ1
c3JzY3RwX2Nvbm5lY3QiKTsKIAl9CiAJZm9yICg7OykgewotI2lmZGVmIF9XSU4zMgorI2lmIGRl
ZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX01JTkdXMzJfXykKIAkJaWYgKGdldHNfcyhsaW5l
LCBMSU5FX0xFTkdUSCkgPT0gTlVMTCkgewogI2Vsc2UKIAkJaWYgKGZnZXRzKGxpbmUsIExJTkVf
TEVOR1RILCBzdGRpbikgPT0gTlVMTCkgewpAQCAtNTE1LDcgKzMxMiw3IEBAIG1haW4oaW50IGFy
Z2MsIGNoYXIgKmFyZ3ZbXSkKIAkJc25kaW5mby5zbmRfY29udGV4dCA9IDA7CiAJCXNuZGluZm8u
c25kX2Fzc29jX2lkID0gMDsKIAkJaWYgKHVzcnNjdHBfc2VuZHYocywgbGluZSwgc3RybGVuKGxp
bmUpLCBOVUxMLCAwLCAodm9pZCAqKSZzbmRpbmZvLAotCSAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHNvY2tsZW5fdClzaXplb2Yoc3RydWN0IHNjdHBfc25kaW5mbyksIFNDVFBfU0VORFZfU05E
SU5GTywgMCkgPCAwKSB7CisJCSAgICAgICAgICAgICAgICAgIChzb2NrbGVuX3Qpc2l6ZW9mKHN0
cnVjdCBzY3RwX3NuZGluZm8pLCBTQ1RQX1NFTkRWX1NORElORk8sIDApIDwgMCkgewogCQkJcGVy
cm9yKCJ1c3JzY3RwX3NlbmR2Iik7CiAJCX0KIAl9CkBAIC01MzAsNyArMzI3LDcgQEAgbWFpbihp
bnQgYXJnYywgY2hhciAqYXJndltdKQogCVRlcm1pbmF0ZVRocmVhZCh0aWQsIDApOwogCVdhaXRG
b3JTaW5nbGVPYmplY3QodGlkLCBJTkZJTklURSk7CiAJaWYgKGNsb3Nlc29ja2V0KGZkKSA9PSBT
T0NLRVRfRVJST1IpIHsKLQkJcHJpbnRmKCJjbG9zZXNvY2tldCgpIGZhaWxlZCB3aXRoIGVycm9y
OiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOworCQlmcHJpbnRmKHN0ZGVyciwgImNsb3Nlc29j
a2V0KCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7CiAJfQog
CVdTQUNsZWFudXAoKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9la3Jf
c2VydmVyLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9la3Jfc2VydmVyLmMKaW5kZXggNTU0NWFiYjMy
NjVkZDEyMDhiNDY2OTJiYzM3ZjVlOWM2MzhjNjIzZi4uZDhkOWQxY2U4YjA5NDFjYzk2MzhkNDcw
NDQ2YjIyMGZlOGQ1ODMwNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvZWtyX3NlcnZl
ci5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
dXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2Vrcl9zZXJ2ZXIuYwpAQCAtNDksNiArNDksNyBA
QAogI2luY2x1ZGUgPHdzMnRjcGlwLmg+CiAjZW5kaWYKICNpbmNsdWRlIDx1c3JzY3RwLmg+Cisj
aW5jbHVkZSAicHJvZ3JhbXNfaGVscGVyLmgiCiAKICNkZWZpbmUgUE9SVCA1MDAxCiAjZGVmaW5l
IE1BWF9QQUNLRVRfU0laRSAoMTw8MTYpCkBAIC0xNTIsMTYgKzE1Myw2IEBAIHJlY2VpdmVfY2Io
c3RydWN0IHNvY2tldCAqcywgdW5pb24gc2N0cF9zb2Nrc3RvcmUgYWRkciwgdm9pZCAqZGF0YSwK
IAlyZXR1cm4gKDEpOwogfQogCi12b2lkCi1kZWJ1Z19wcmludGYoY29uc3QgY2hhciAqZm9ybWF0
LCAuLi4pCi17Ci0JdmFfbGlzdCBhcDsKLQotCXZhX3N0YXJ0KGFwLCBmb3JtYXQpOwotCXZwcmlu
dGYoZm9ybWF0LCBhcCk7Ci0JdmFfZW5kKGFwKTsKLX0KLQogaW50CiBtYWluKGludCBhcmdjLCBj
aGFyICphcmd2W10pCiB7CkBAIC0xNzAsNyArMTYxLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAq
YXJndltdKQogI2lmZGVmIF9XSU4zMgogCVNPQ0tFVCBmZDsKICNlbHNlCi0JaW50IGZkOworCWlu
dCBmZCwgcmM7CiAjZW5kaWYKIAlzdHJ1Y3Qgc29ja2V0ICpzOwogI2lmZGVmIF9XSU4zMgpAQCAt
MTgzLDIxICsxNzQsMjEgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogI2VuZGlmCiAK
IAlpZiAoYXJnYyA8IDQpIHsKLQkJcHJpbnRmKCJlcnJvcjogdGhpcyBwcm9ncmFtIHJlcXVpcmVz
IDQgYXJndW1lbnRzIVxuIik7CisJCWZwcmludGYoc3RkZXJyLCAiZXJyb3I6IHRoaXMgcHJvZ3Jh
bSByZXF1aXJlcyA0IGFyZ3VtZW50cyFcbiIpOwogCQlleGl0KEVYSVRfRkFJTFVSRSk7CiAJfQog
CiAjaWZkZWYgX1dJTjMyCiAJaWYgKFdTQVN0YXJ0dXAoTUFLRVdPUkQoMiwyKSwgJndzYURhdGEp
ICE9IDApIHsKLQkJcHJpbnRmKCJXU0FTdGFydHVwIGZhaWxlZFxuIik7CisJCWZwcmludGYoc3Rk
ZXJyLCAiV1NBU3RhcnR1cCBmYWlsZWRcbiIpOwogCQlleGl0IChFWElUX0ZBSUxVUkUpOwogCX0K
ICNlbmRpZgotCXVzcnNjdHBfaW5pdCgwLCBjb25uX291dHB1dCwgZGVidWdfcHJpbnRmKTsKKwl1
c3JzY3RwX2luaXQoMCwgY29ubl9vdXRwdXQsIGRlYnVnX3ByaW50Zl9zdGFjayk7CiAJLyogc2V0
IHVwIGEgY29ubmVjdGVkIFVEUCBzb2NrZXQgKi8KICNpZmRlZiBfV0lOMzIKIAlpZiAoKGZkID0g
c29ja2V0KEFGX0lORVQsIFNPQ0tfREdSQU0sIElQUFJPVE9fVURQKSkgPT0gSU5WQUxJRF9TT0NL
RVQpIHsKLQkJcHJpbnRmKCJzb2NrZXQoKSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIFdTQUdl
dExhc3RFcnJvcigpKTsKKwkJZnByaW50ZihzdGRlcnIsICJzb2NrZXQoKSBmYWlsZWQgd2l0aCBl
cnJvcjogJWRcbiIsIFdTQUdldExhc3RFcnJvcigpKTsKIAkJZXhpdChFWElUX0ZBSUxVUkUpOwog
CX0KICNlbHNlCkBAIC0yMTMsMTIgKzIwNCwxMiBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2
W10pCiAjZW5kaWYKIAlzaW4uc2luX3BvcnQgPSBodG9ucyhhdG9pKGFyZ3ZbMl0pKTsKIAlpZiAo
IWluZXRfcHRvbihBRl9JTkVULCBhcmd2WzFdLCAmc2luLnNpbl9hZGRyLnNfYWRkcikpewotCQlw
cmludGYoImVycm9yOiBpbnZhbGlkIGFkZHJlc3NcbiIpOworCQlmcHJpbnRmKHN0ZGVyciwgImVy
cm9yOiBpbnZhbGlkIGFkZHJlc3NcbiIpOwogCQlleGl0KEVYSVRfRkFJTFVSRSk7CiAJfQogI2lm
ZGVmIF9XSU4zMgogCWlmIChiaW5kKGZkLCAoc3RydWN0IHNvY2thZGRyICopJnNpbiwgc2l6ZW9m
KHN0cnVjdCBzb2NrYWRkcl9pbikpID09IFNPQ0tFVF9FUlJPUikgewotCQlwcmludGYoImJpbmQo
KSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIFdTQUdldExhc3RFcnJvcigpKTsKKwkJZnByaW50
ZihzdGRlcnIsICJiaW5kKCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBXU0FHZXRMYXN0RXJy
b3IoKSk7CiAJCWV4aXQoRVhJVF9GQUlMVVJFKTsKIAl9CiAjZWxzZQpAQCAtMjM5LDcgKzIzMCw3
IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAl9CiAjaWZkZWYgX1dJTjMyCiAJaWYg
KGNvbm5lY3QoZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luLCBzaXplb2Yoc3RydWN0IHNvY2th
ZGRyX2luKSkgPT0gU09DS0VUX0VSUk9SKSB7Ci0JCXByaW50ZigiY29ubmVjdCgpIGZhaWxlZCB3
aXRoIGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOworCQlmcHJpbnRmKHN0ZGVyciwg
ImNvbm5lY3QoKSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIFdTQUdldExhc3RFcnJvcigpKTsK
IAkJZXhpdChFWElUX0ZBSUxVUkUpOwogCX0KICNlbHNlCkBAIC0yNTQsOSArMjQ1LDE1IEBAIG1h
aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAl1c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9lY25f
ZW5hYmxlKDApOwogCXVzcnNjdHBfcmVnaXN0ZXJfYWRkcmVzcygodm9pZCAqKSZmZCk7CiAjaWZk
ZWYgX1dJTjMyCi0JdGlkID0gQ3JlYXRlVGhyZWFkKE5VTEwsIDAsICZoYW5kbGVfcGFja2V0cywg
KHZvaWQgKikmZmQsIDAsIE5VTEwpOworCWlmICgodGlkID0gQ3JlYXRlVGhyZWFkKE5VTEwsIDAs
ICZoYW5kbGVfcGFja2V0cywgKHZvaWQgKikmZmQsIDAsIE5VTEwpKSA9PSBOVUxMKSB7CisJCWZw
cmludGYoc3RkZXJyLCAiQ3JlYXRlVGhyZWFkKCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBH
ZXRMYXN0RXJyb3IoKSk7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwl9CiAjZWxzZQotCXB0aHJl
YWRfY3JlYXRlKCZ0aWQsIE5VTEwsICZoYW5kbGVfcGFja2V0cywgKHZvaWQgKikmZmQpOworCWlm
ICgocmMgPSBwdGhyZWFkX2NyZWF0ZSgmdGlkLCBOVUxMLCAmaGFuZGxlX3BhY2tldHMsICh2b2lk
ICopJmZkKSkgIT0gMCkgeworCQlmcHJpbnRmKHN0ZGVyciwgInB0aHJlYWRfY3JlYXRlOiAlc1xu
Iiwgc3RyZXJyb3IocmMpKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KICNlbmRpZgogCWlm
ICgocyA9IHVzcnNjdHBfc29ja2V0KEFGX0NPTk4sIFNPQ0tfU1RSRUFNLCBJUFBST1RPX1NDVFAs
IHJlY2VpdmVfY2IsIE5VTEwsIDAsIE5VTEwpKSA9PSBOVUxMKSB7CiAJCXBlcnJvcigidXNyc2N0
cF9zb2NrZXQiKTsKQEAgLTI5Miw3ICsyODksNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2
W10pCiAJVGVybWluYXRlVGhyZWFkKHRpZCwgMCk7CiAJV2FpdEZvclNpbmdsZU9iamVjdCh0aWQs
IElORklOSVRFKTsKIAlpZiAoY2xvc2Vzb2NrZXQoZmQpID09IFNPQ0tFVF9FUlJPUikgewotCQlw
cmludGYoImNsb3Nlc29ja2V0KCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBXU0FHZXRMYXN0
RXJyb3IoKSk7CisJCWZwcmludGYoc3RkZXJyLCAiY2xvc2Vzb2NrZXQoKSBmYWlsZWQgd2l0aCBl
cnJvcjogJWRcbiIsIFdTQUdldExhc3RFcnJvcigpKTsKIAl9CiAJV1NBQ2xlYW51cCgpOwogI2Vs
c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2h0dHBfY2xpZW50LmMgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi9wcm9ncmFtcy9odHRwX2NsaWVudC5jCmluZGV4IDRkYzE5N2YwMTM3YmQyYmFkYjlmY2ZhYTc2
ZTJjOTZiZjJhMTk4MGUuLjAzYzkyODYwYTc2YWVhMGRlZDAwNjdhNjdkOWM1NjU2MzRlZTFkNjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2h0dHBfY2xpZW50LmMKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBs
aWIvcHJvZ3JhbXMvaHR0cF9jbGllbnQuYwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTYgRmVsaXggV2VpbnJhbmsKKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEZl
bGl4IFdlaW5yYW5rCiAgKgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0zMCw3ICsz
MCw3IEBACiAKIC8qCiAgKiBVc2FnZTogaHR0cF9jbGllbnQgcmVtb3RlX2FkZHIgcmVtb3RlX3Bv
cnQgW2xvY2FsX3BvcnRdIFtsb2NhbF9lbmNhcHNfcG9ydF0gW3JlbW90ZV9lbmNhcHNfcG9ydF0g
W3VyaV0KLSAqIAorICoKICAqIEV4YW1wbGUKICAqIENsaWVudDogJCAuL2h0dHBfY2xpZW50IDIx
Mi4yMDEuMTIxLjEwMCA4MCAwIDk4OTkgOTg5OSAvY2dpLWJpbi9oZQogICogICAgICAgICAgIC4v
aHR0cF9jbGllbnQgMmEwMjpjNmEwOjQwMTU6MTA6OjEwMCA4MCAwIDk4OTkgOTg5OSAvY2dpLWJp
bi9oZQpAQCAtNTEsMTAgKzUxLDE4IEBACiAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgogI2luY2x1
ZGUgPG5ldGluZXQvaW4uaD4KICNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyNpbmNsdWRlIDxzeXMv
dGltZS5oPgogI2Vsc2UKICNpbmNsdWRlIDxpby5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgor
I2luY2x1ZGUgPHN5cy90aW1lYi5oPgogI2VuZGlmCiAjaW5jbHVkZSA8dXNyc2N0cC5oPgorI2lu
Y2x1ZGUgInByb2dyYW1zX2hlbHBlci5oIgorCisjZGVmaW5lIFJFVFZBTF9DQVRDSEFMTCAgICAg
NTAKKyNkZWZpbmUgUkVUVkFMX1RJTUVPVVQgICAgICA2MAorI2RlZmluZSBSRVRWQUxfRUNPTk5S
RUZVU0VEIDYxCiAKIGludCBkb25lID0gMDsKIHN0YXRpYyBjb25zdCBjaGFyICpyZXF1ZXN0X3By
ZWZpeCA9ICJHRVQiOwpAQCAtNzMsNiArODEsOSBAQCByZWNlaXZlX2NiKHN0cnVjdCBzb2NrZXQg
KnNvY2ssIHVuaW9uIHNjdHBfc29ja3N0b3JlIGFkZHIsIHZvaWQgKmRhdGEsCiAJCWRvbmUgPSAx
OwogCQl1c3JzY3RwX2Nsb3NlKHNvY2spOwogCX0gZWxzZSB7CisJCWlmIChmbGFncyAmIE1TR19O
T1RJRklDQVRJT04pIHsKKwkJCWhhbmRsZV9ub3RpZmljYXRpb24oKHVuaW9uIHNjdHBfbm90aWZp
Y2F0aW9uICopZGF0YSwgZGF0YWxlbik7CisJCX0gZWxzZSB7CiAjaWZkZWYgX1dJTjMyCiAJCV93
cml0ZShfZmlsZW5vKHN0ZG91dCksIGRhdGEsICh1bnNpZ25lZCBpbnQpZGF0YWxlbik7CiAjZWxz
ZQpAQCAtODAsNDEgKzkxLDc3IEBAIHJlY2VpdmVfY2Ioc3RydWN0IHNvY2tldCAqc29jaywgdW5p
b24gc2N0cF9zb2Nrc3RvcmUgYWRkciwgdm9pZCAqZGF0YSwKIAkJCXBlcnJvcigid3JpdGUiKTsK
IAkJfQogI2VuZGlmCisJCX0KIAkJZnJlZShkYXRhKTsKIAl9CiAJcmV0dXJuICgxKTsKIH0KIAot
dm9pZAotZGVidWdfcHJpbnRmKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQotewotCXZhX2xpc3Qg
YXA7Ci0KLQl2YV9zdGFydChhcCwgZm9ybWF0KTsKLQl2cHJpbnRmKGZvcm1hdCwgYXApOwotCXZh
X2VuZChhcCk7Ci19Ci0KIGludAogbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogewogCXN0
cnVjdCBzb2NrZXQgKnNvY2s7CisJc3RydWN0IHNvY2thZGRyICphZGRyOworCXNvY2tsZW5fdCBh
ZGRyX2xlbjsKIAlzdHJ1Y3Qgc29ja2FkZHJfaW4gYWRkcjQ7CiAJc3RydWN0IHNvY2thZGRyX2lu
NiBhZGRyNjsKKwlzdHJ1Y3Qgc29ja2FkZHJfaW4gYmluZDQ7CisJc3RydWN0IHNvY2thZGRyX2lu
NiBiaW5kNjsKIAlzdHJ1Y3Qgc2N0cF91ZHBlbmNhcHMgZW5jYXBzOwogCXN0cnVjdCBzY3RwX3Nu
ZGluZm8gc25kaW5mbzsKLQlpbnQgcmVzdWx0OworCXN0cnVjdCBzY3RwX3J0b2luZm8gcnRvaW5m
bzsKKwlzdHJ1Y3Qgc2N0cF9pbml0bXNnIGluaXRtc2c7CisJc3RydWN0IHNjdHBfZXZlbnQgZXZl
bnQ7CisJaW50IHJlc3VsdCA9IDA7CisJdW5zaWduZWQgaW50IGk7CisJdWludDhfdCBhZGRyZXNz
X2ZhbWlseSA9IDA7CisJdWludDE2X3QgZXZlbnRfdHlwZXNbXSA9IHtTQ1RQX0FTU09DX0NIQU5H
RSwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgIFNDVFBfUEVFUl9BRERSX0NIQU5HRSwKKwkg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNDVFBfU0VORF9GQUlMRURfRVZFTlQsCisgCSAgICAg
ICAgICAgICAgICAgICAgICAgICAgU0NUUF9SRU1PVEVfRVJST1IsCisJICAgICAgICAgICAgICAg
ICAgICAgICAgICBTQ1RQX1NIVVRET1dOX0VWRU5ULAorCSAgICAgICAgICAgICAgICAgICAgICAg
ICAgU0NUUF9BREFQVEFUSU9OX0lORElDQVRJT04sCisJICAgICAgICAgICAgICAgICAgICAgICAg
ICBTQ1RQX1BBUlRJQUxfREVMSVZFUllfRVZFTlQKKwkgICAgICAgICAgICAgICAgICAgICAgICB9
OwogCi0gICAgaWYgKGFyZ2MgPCAzKSB7Ci0gICAgICAgIHByaW50ZigiVXNhZ2U6IGh0dHBfY2xp
ZW50IHJlbW90ZV9hZGRyIHJlbW90ZV9wb3J0IFtsb2NhbF9wb3J0XSBbbG9jYWxfZW5jYXBzX3Bv
cnRdIFtyZW1vdGVfZW5jYXBzX3BvcnRdIFt1cmldXG4iKTsKLSAgICAgICAgcmV0dXJuKEVYSVRf
RkFJTFVSRSk7Ci0gICAgfQorCWlmIChhcmdjIDwgMykgeworCQlwcmludGYoIlVzYWdlOiBodHRw
X2NsaWVudCByZW1vdGVfYWRkciByZW1vdGVfcG9ydCBbbG9jYWxfcG9ydF0gW2xvY2FsX2VuY2Fw
c19wb3J0XSBbcmVtb3RlX2VuY2Fwc19wb3J0XSBbdXJpXVxuIik7CisJCXJldHVybihFWElUX0ZB
SUxVUkUpOworCX0KKworCW1lbXNldCgodm9pZCAqKSZhZGRyNCwgMCwgc2l6ZW9mKHN0cnVjdCBz
b2NrYWRkcl9pbikpOworCW1lbXNldCgodm9pZCAqKSZhZGRyNiwgMCwgc2l6ZW9mKHN0cnVjdCBz
b2NrYWRkcl9pbjYpKTsKKworCWlmIChpbmV0X3B0b24oQUZfSU5FVCwgYXJndlsxXSwgJmFkZHI0
LnNpbl9hZGRyKSA9PSAxKSB7CisJCWFkZHJlc3NfZmFtaWx5ID0gQUZfSU5FVDsKKworCQlhZGRy
ID0gKHN0cnVjdCBzb2NrYWRkciAqKSZhZGRyNDsKKwkJYWRkcl9sZW4gPSBzaXplb2YoYWRkcjQp
OworI2lmZGVmIEhBVkVfU0lOX0xFTgorCQlhZGRyNC5zaW5fbGVuID0gc2l6ZW9mKHN0cnVjdCBz
b2NrYWRkcl9pbik7CisjZW5kaWYKKwkJYWRkcjQuc2luX2ZhbWlseSA9IEFGX0lORVQ7CisJCWFk
ZHI0LnNpbl9wb3J0ID0gaHRvbnMoYXRvaShhcmd2WzJdKSk7CisJfSBlbHNlIGlmIChpbmV0X3B0
b24oQUZfSU5FVDYsIGFyZ3ZbMV0sICZhZGRyNi5zaW42X2FkZHIpID09IDEpIHsKKwkJYWRkcmVz
c19mYW1pbHkgPSBBRl9JTkVUNjsKKworCQlhZGRyID0gKHN0cnVjdCBzb2NrYWRkciAqKSZhZGRy
NjsKKwkJYWRkcl9sZW4gPSBzaXplb2YoYWRkcjYpOworI2lmZGVmIEhBVkVfU0lONl9MRU4KKwkJ
YWRkcjYuc2luNl9sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNik7CisjZW5kaWYKKwkJ
YWRkcjYuc2luNl9mYW1pbHkgPSBBRl9JTkVUNjsKKwkJYWRkcjYuc2luNl9wb3J0ID0gaHRvbnMo
YXRvaShhcmd2WzJdKSk7CisJfSBlbHNlIHsKKwkJcHJpbnRmKCJVbnN1cHBvcnRlZCBkZXN0aW5h
dGlvbiBhZGRyZXNzIC0gdXNlIElQdjQgb3IgSVB2NiBhZGRyZXNzXG4iKTsKKwkJcmVzdWx0ID0g
UkVUVkFMX0NBVENIQUxMOworCQlnb3RvIG91dDsKKwl9CiAKLQlyZXN1bHQgPSAwOwogCWlmIChh
cmdjID4gNCkgewotCQl1c3JzY3RwX2luaXQoYXRvaShhcmd2WzRdKSwgTlVMTCwgZGVidWdfcHJp
bnRmKTsKKwkJdXNyc2N0cF9pbml0KGF0b2koYXJndls0XSksIE5VTEwsIGRlYnVnX3ByaW50Zl9z
dGFjayk7CiAJfSBlbHNlIHsKLQkJdXNyc2N0cF9pbml0KDk4OTksIE5VTEwsIGRlYnVnX3ByaW50
Zik7CisJCXVzcnNjdHBfaW5pdCg5ODk5LCBOVUxMLCBkZWJ1Z19wcmludGZfc3RhY2spOwogCX0K
IAogI2lmZGVmIFNDVFBfREVCVUcKQEAgLTEyMiw4OCArMTY5LDEyMyBAQCBtYWluKGludCBhcmdj
LCBjaGFyICphcmd2W10pCiAjZW5kaWYKIAogCXVzcnNjdHBfc3lzY3RsX3NldF9zY3RwX2JsYWNr
aG9sZSgyKTsKKwl1c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9ub19jc3VtX29uX2xvb3BiYWNrKDAp
OwogCi0JaWYgKChzb2NrID0gdXNyc2N0cF9zb2NrZXQoQUZfSU5FVDYsIFNPQ0tfU1RSRUFNLCBJ
UFBST1RPX1NDVFAsIHJlY2VpdmVfY2IsIE5VTEwsIDAsIE5VTEwpKSA9PSBOVUxMKSB7CisJaWYg
KChzb2NrID0gdXNyc2N0cF9zb2NrZXQoYWRkcmVzc19mYW1pbHksIFNPQ0tfU1RSRUFNLCBJUFBS
T1RPX1NDVFAsIHJlY2VpdmVfY2IsIE5VTEwsIDAsIE5VTEwpKSA9PSBOVUxMKSB7CiAJCXBlcnJv
cigidXNyc2N0cF9zb2NrZXQiKTsKLQkJcmVzdWx0ID0gMTsKKwkJcmVzdWx0ID0gUkVUVkFMX0NB
VENIQUxMOworCQlnb3RvIG91dDsKKwl9CisKKwltZW1zZXQoJmV2ZW50LCAwLCBzaXplb2YoZXZl
bnQpKTsKKwlldmVudC5zZV9hc3NvY19pZCA9IFNDVFBfQUxMX0FTU09DOworCWV2ZW50LnNlX29u
ID0gMTsKKwlmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGV2ZW50X3R5cGVzKSAvIHNpemVvZih1aW50
MTZfdCk7IGkrKykgeworCQlldmVudC5zZV90eXBlID0gZXZlbnRfdHlwZXNbaV07CisJCWlmICh1
c3JzY3RwX3NldHNvY2tvcHQoc29jaywgSVBQUk9UT19TQ1RQLCBTQ1RQX0VWRU5ULCAmZXZlbnQs
IHNpemVvZihldmVudCkpIDwgMCkgeworCQkJcGVycm9yKCJzZXRzb2Nrb3B0IFNDVFBfRVZFTlQi
KTsKKwkJfQorCX0KKworCXJ0b2luZm8uc3J0b19hc3NvY19pZCA9IDA7CisJcnRvaW5mby5zcnRv
X2luaXRpYWwgPSAxMDAwOworCXJ0b2luZm8uc3J0b19taW4gPSAxMDAwOworCXJ0b2luZm8uc3J0
b19tYXggPSA4MDAwOworCWlmICh1c3JzY3RwX3NldHNvY2tvcHQoc29jaywgSVBQUk9UT19TQ1RQ
LCBTQ1RQX1JUT0lORk8sIChjb25zdCB2b2lkICopJnJ0b2luZm8sIChzb2NrbGVuX3Qpc2l6ZW9m
KHN0cnVjdCBzY3RwX3J0b2luZm8pKSA8IDApIHsKKwkJcGVycm9yKCJzZXRzb2Nrb3B0Iik7CisJ
CXVzcnNjdHBfY2xvc2Uoc29jayk7CisJCXJlc3VsdCA9IFJFVFZBTF9DQVRDSEFMTDsKKwkJZ290
byBvdXQ7CisJfQorCWluaXRtc2cuc2luaXRfbnVtX29zdHJlYW1zID0gMTsKKwlpbml0bXNnLnNp
bml0X21heF9pbnN0cmVhbXMgPSAxOworCWluaXRtc2cuc2luaXRfbWF4X2F0dGVtcHRzID0gNTsK
Kwlpbml0bXNnLnNpbml0X21heF9pbml0X3RpbWVvID0gNDAwMDsKKwlpZiAodXNyc2N0cF9zZXRz
b2Nrb3B0KHNvY2ssIElQUFJPVE9fU0NUUCwgU0NUUF9JTklUTVNHLCAoY29uc3Qgdm9pZCAqKSZp
bml0bXNnLCAoc29ja2xlbl90KXNpemVvZihzdHJ1Y3Qgc2N0cF9pbml0bXNnKSkgPCAwKSB7CisJ
CXBlcnJvcigic2V0c29ja29wdCIpOworCQl1c3JzY3RwX2Nsb3NlKHNvY2spOworCQlyZXN1bHQg
PSBSRVRWQUxfQ0FUQ0hBTEw7CiAJCWdvdG8gb3V0OwogCX0KIAogCWlmIChhcmdjID4gMykgewot
CQltZW1zZXQoKHZvaWQgKikmYWRkcjYsIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSk7
CisKKwkJaWYgKGFkZHJlc3NfZmFtaWx5ID09IEFGX0lORVQpIHsKKwkJCW1lbXNldCgodm9pZCAq
KSZiaW5kNCwgMCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOworI2lmZGVmIEhBVkVfU0lO
X0xFTgorCQkJYmluZDQuc2luX2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KTsKKyNl
bmRpZgorCQkJYmluZDQuc2luX2ZhbWlseSA9IEFGX0lORVQ7CisJCQliaW5kNC5zaW5fcG9ydCA9
IGh0b25zKGF0b2koYXJndlszXSkpOworCQkJYmluZDQuc2luX2FkZHIuc19hZGRyID0gaHRvbmwo
SU5BRERSX0FOWSk7CisKKwkJCWlmICh1c3JzY3RwX2JpbmQoc29jaywgKHN0cnVjdCBzb2NrYWRk
ciAqKSZiaW5kNCwgc2l6ZW9mKGJpbmQ0KSkgPCAwKSB7CisJCQkJcGVycm9yKCJiaW5kIik7CisJ
CQkJdXNyc2N0cF9jbG9zZShzb2NrKTsKKwkJCQlyZXN1bHQgPSBSRVRWQUxfQ0FUQ0hBTEw7CisJ
CQkJZ290byBvdXQ7CisJCQl9CisJCX0gZWxzZSB7CisJCQltZW1zZXQoKHZvaWQgKikmYmluZDYs
IDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSk7CiAjaWZkZWYgSEFWRV9TSU42X0xFTgot
CQlhZGRyNi5zaW42X2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KTsKKwkJCWJpbmQ2
LnNpbjZfbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpOwogI2VuZGlmCi0JCWFkZHI2
LnNpbjZfZmFtaWx5ID0gQUZfSU5FVDY7Ci0JCWFkZHI2LnNpbjZfcG9ydCA9IGh0b25zKGF0b2ko
YXJndlszXSkpOwotCQlhZGRyNi5zaW42X2FkZHIgPSBpbjZhZGRyX2FueTsKLQkJaWYgKHVzcnNj
dHBfYmluZChzb2NrLCAoc3RydWN0IHNvY2thZGRyICopJmFkZHI2LCBzaXplb2Yoc3RydWN0IHNv
Y2thZGRyX2luNikpIDwgMCkgewotCQkJcGVycm9yKCJiaW5kIik7Ci0JCQl1c3JzY3RwX2Nsb3Nl
KHNvY2spOwotCQkJcmVzdWx0ID0gMjsKLQkJCWdvdG8gb3V0OworCQkJYmluZDYuc2luNl9mYW1p
bHkgPSBBRl9JTkVUNjsKKwkJCWJpbmQ2LnNpbjZfcG9ydCA9IGh0b25zKGF0b2koYXJndlszXSkp
OworCQkJYmluZDYuc2luNl9hZGRyID0gaW42YWRkcl9hbnk7CisJCQlpZiAodXNyc2N0cF9iaW5k
KHNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikmYmluZDYsIHNpemVvZihiaW5kNikpIDwgMCkgewor
CQkJCXBlcnJvcigiYmluZCIpOworCQkJCXVzcnNjdHBfY2xvc2Uoc29jayk7CisJCQkJcmVzdWx0
ID0gUkVUVkFMX0NBVENIQUxMOworCQkJCWdvdG8gb3V0OworCQkJfQogCQl9CiAJfQogCiAJaWYg
KGFyZ2MgPiA1KSB7CiAJCW1lbXNldCgmZW5jYXBzLCAwLCBzaXplb2Yoc3RydWN0IHNjdHBfdWRw
ZW5jYXBzKSk7Ci0JCWVuY2Fwcy5zdWVfYWRkcmVzcy5zc19mYW1pbHkgPSBBRl9JTkVUNjsKKwkJ
ZW5jYXBzLnN1ZV9hZGRyZXNzLnNzX2ZhbWlseSA9IGFkZHJlc3NfZmFtaWx5OwogCQllbmNhcHMu
c3VlX3BvcnQgPSBodG9ucyhhdG9pKGFyZ3ZbNV0pKTsKIAkJaWYgKHVzcnNjdHBfc2V0c29ja29w
dChzb2NrLCBJUFBST1RPX1NDVFAsIFNDVFBfUkVNT1RFX1VEUF9FTkNBUFNfUE9SVCwgKGNvbnN0
IHZvaWQgKikmZW5jYXBzLCAoc29ja2xlbl90KXNpemVvZihzdHJ1Y3Qgc2N0cF91ZHBlbmNhcHMp
KSA8IDApIHsKIAkJCXBlcnJvcigic2V0c29ja29wdCIpOwogCQkJdXNyc2N0cF9jbG9zZShzb2Nr
KTsKLQkJCXJlc3VsdCA9IDM7CisJCQlyZXN1bHQgPSBSRVRWQUxfQ0FUQ0hBTEw7CiAJCQlnb3Rv
IG91dDsKIAkJfQogCX0KIAogCWlmIChhcmdjID4gNikgewogI2lmZGVmIF9XSU4zMgotCQlfc25w
cmludGYocmVxdWVzdCwgc2l6ZW9mKHJlcXVlc3QpLCAiJXMgJXMgJXMiLCByZXF1ZXN0X3ByZWZp
eCwgYXJndls2XSwgcmVxdWVzdF9wb3N0Zml4KTsKKwkJaWYgKF9zbnByaW50ZihyZXF1ZXN0LCBz
aXplb2YocmVxdWVzdCksICIlcyAlcyAlcyIsIHJlcXVlc3RfcHJlZml4LCBhcmd2WzZdLCByZXF1
ZXN0X3Bvc3RmaXgpIDwgMCkgewogI2Vsc2UKLQkJc25wcmludGYocmVxdWVzdCwgc2l6ZW9mKHJl
cXVlc3QpLCAiJXMgJXMgJXMiLCByZXF1ZXN0X3ByZWZpeCwgYXJndls2XSwgcmVxdWVzdF9wb3N0
Zml4KTsKKwkJaWYgKHNucHJpbnRmKHJlcXVlc3QsIHNpemVvZihyZXF1ZXN0KSwgIiVzICVzICVz
IiwgcmVxdWVzdF9wcmVmaXgsIGFyZ3ZbNl0sIHJlcXVlc3RfcG9zdGZpeCkgPCAwKSB7CiAjZW5k
aWYKKwkJCXJlcXVlc3RbMF0gPSAnXDAnOworCQl9CiAJfSBlbHNlIHsKICNpZmRlZiBfV0lOMzIK
LQkJX3NucHJpbnRmKHJlcXVlc3QsIHNpemVvZihyZXF1ZXN0KSwgIiVzICVzICVzIiwgcmVxdWVz
dF9wcmVmaXgsICIvIiwgcmVxdWVzdF9wb3N0Zml4KTsKKwkJaWYgKF9zbnByaW50ZihyZXF1ZXN0
LCBzaXplb2YocmVxdWVzdCksICIlcyAlcyAlcyIsIHJlcXVlc3RfcHJlZml4LCAiLyIsIHJlcXVl
c3RfcG9zdGZpeCkgPCAwKSB7CiAjZWxzZQotCQlzbnByaW50ZihyZXF1ZXN0LCBzaXplb2YocmVx
dWVzdCksICIlcyAlcyAlcyIsIHJlcXVlc3RfcHJlZml4LCAiLyIsIHJlcXVlc3RfcG9zdGZpeCk7
CisJCWlmIChzbnByaW50ZihyZXF1ZXN0LCBzaXplb2YocmVxdWVzdCksICIlcyAlcyAlcyIsIHJl
cXVlc3RfcHJlZml4LCAiLyIsIHJlcXVlc3RfcG9zdGZpeCkgPCAwKSB7CiAjZW5kaWYKKwkJCXJl
cXVlc3RbMF0gPSAnXDAnOworCQl9CiAJfQogCiAJcHJpbnRmKCJcbkhUVFAgcmVxdWVzdDpcbiVz
XG4iLCByZXF1ZXN0KTsKIAlwcmludGYoIlxuSFRUUCByZXNwb25zZTpcbiIpOwogCi0JbWVtc2V0
KCh2b2lkICopJmFkZHI0LCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7Ci0JbWVtc2V0
KCh2b2lkICopJmFkZHI2LCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNikpOwotI2lmZGVm
IEhBVkVfU0lOX0xFTgotCWFkZHI0LnNpbl9sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2lu
KTsKLSNlbmRpZgotI2lmZGVmIEhBVkVfU0lONl9MRU4KLQlhZGRyNi5zaW42X2xlbiA9IHNpemVv
ZihzdHJ1Y3Qgc29ja2FkZHJfaW42KTsKLSNlbmRpZgotCWFkZHI0LnNpbl9mYW1pbHkgPSBBRl9J
TkVUOwotCWFkZHI2LnNpbjZfZmFtaWx5ID0gQUZfSU5FVDY7Ci0JYWRkcjQuc2luX3BvcnQgPSBo
dG9ucyhhdG9pKGFyZ3ZbMl0pKTsKLQlhZGRyNi5zaW42X3BvcnQgPSBodG9ucyhhdG9pKGFyZ3Zb
Ml0pKTsKLQlpZiAoaW5ldF9wdG9uKEFGX0lORVQ2LCBhcmd2WzFdLCAmYWRkcjYuc2luNl9hZGRy
KSA9PSAxKSB7Ci0JCWlmICh1c3JzY3RwX2Nvbm5lY3Qoc29jaywgKHN0cnVjdCBzb2NrYWRkciAq
KSZhZGRyNiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKSA8IDApIHsKLQkJCXBlcnJvcigi
dXNyc2N0cF9jb25uZWN0Iik7Ci0JCQl1c3JzY3RwX2Nsb3NlKHNvY2spOwotCQkJcmVzdWx0ID0g
NDsKLQkJCWdvdG8gb3V0OworCWlmICh1c3JzY3RwX2Nvbm5lY3Qoc29jaywgYWRkciwgYWRkcl9s
ZW4pIDwgMCkgeworCQlpZiAoZXJybm8gPT0gRUNPTk5SRUZVU0VEKSB7CisJCQlyZXN1bHQgPSBS
RVRWQUxfRUNPTk5SRUZVU0VEOworCQl9IGVsc2UgaWYgKGVycm5vID09IEVUSU1FRE9VVCkgewor
CQkJcmVzdWx0ID0gUkVUVkFMX1RJTUVPVVQ7CisJCX0gZWxzZSB7CisJCQlyZXN1bHQgPSBSRVRW
QUxfQ0FUQ0hBTEw7CiAJCX0KLQl9IGVsc2UgaWYgKGluZXRfcHRvbihBRl9JTkVULCBhcmd2WzFd
LCAmYWRkcjQuc2luX2FkZHIpID09IDEpIHsKLQkJaWYgKHVzcnNjdHBfY29ubmVjdChzb2NrLCAo
c3RydWN0IHNvY2thZGRyICopJmFkZHI0LCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSkgPCAw
KSB7Ci0JCQlwZXJyb3IoInVzcnNjdHBfY29ubmVjdCIpOwotCQkJdXNyc2N0cF9jbG9zZShzb2Nr
KTsKLQkJCXJlc3VsdCA9IDU7Ci0JCQlnb3RvIG91dDsKLQkJfQotCX0gZWxzZSB7Ci0JCXByaW50
ZigiSWxsZWdhbCBkZXN0aW5hdGlvbiBhZGRyZXNzXG4iKTsKKwkJcGVycm9yKCJ1c3JzY3RwX2Nv
bm5lY3QiKTsKIAkJdXNyc2N0cF9jbG9zZShzb2NrKTsKLQkJcmVzdWx0ID0gNjsKKwogCQlnb3Rv
IG91dDsKIAl9CiAKQEAgLTIxMyw3ICsyOTUsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2
W10pCiAJaWYgKHVzcnNjdHBfc2VuZHYoc29jaywgcmVxdWVzdCwgc3RybGVuKHJlcXVlc3QpLCBO
VUxMLCAwLCAmc25kaW5mbywgc2l6ZW9mKHN0cnVjdCBzY3RwX3NuZGluZm8pLCBTQ1RQX1NFTkRW
X1NORElORk8sIDApIDwgMCkgewogCQlwZXJyb3IoInVzcnNjdHBfc2VuZHYiKTsKIAkJdXNyc2N0
cF9jbG9zZShzb2NrKTsKLQkJcmVzdWx0ID0gNjsKKwkJcmVzdWx0ID0gUkVUVkFMX0NBVENIQUxM
OwogCQlnb3RvIG91dDsKIAl9CiAKQEAgLTIzMiw1ICszMTQsNiBAQCBvdXQ6CiAJCXNsZWVwKDEp
OwogI2VuZGlmCiAJfQorCXByaW50ZigiRmluaXNoZWQsIHJldHVybmluZyB3aXRoICVkXG4iLCBy
ZXN1bHQpOwogCXJldHVybiAocmVzdWx0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dy
YW1zL2h0dHBfY2xpZW50X3VwY2FsbC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvaHR0cF9jbGllbnRf
dXBjYWxsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQyMjFjMjU5MzgxMjM2NmQ4NTNlMDU1NWIzNzlhYjg3Y2Uw
Nzc0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2h0dHBfY2xpZW50X3Vw
Y2FsbC5jCkBAIC0wLDAgKzEsMzMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkg
RmVsaXggV2VpbnJhbmsKKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
My4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgcHJvamVjdCBub3IgdGhlIG5hbWVzIG9mIGl0cyBj
b250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgUFJPSkVDVCBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELglJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgUFJPSkVDVCBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAq
IFNVQ0ggREFNQUdFLgorICovCisKKy8qCisgKiBVc2FnZTogaHR0cF9jbGllbnRfdXBjYWxsIHJl
bW90ZV9hZGRyIHJlbW90ZV9wb3J0IFtsb2NhbF9wb3J0XSBbbG9jYWxfZW5jYXBzX3BvcnRdIFty
ZW1vdGVfZW5jYXBzX3BvcnRdIFt1cmldCisgKi8KKworI2lmZGVmIF9XSU4zMgorI2RlZmluZSBf
Q1JUX1NFQ1VSRV9OT19XQVJOSU5HUworI2VuZGlmCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNs
dWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRhcmcuaD4K
KyNpZm5kZWYgX1dJTjMyCisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxz
eXMvdHlwZXMuaD4KKyNpZm5kZWYgX1dJTjMyCisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2lu
Y2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyNpbmNsdWRlIDxz
eXMvdGltZS5oPgorI2Vsc2UKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMv
dGltZWIuaD4KKyNpbmNsdWRlIDxpby5oPgorI2VuZGlmCisjaW5jbHVkZSA8dXNyc2N0cC5oPgor
I2luY2x1ZGUgInByb2dyYW1zX2hlbHBlci5oIgorCisKKyNkZWZpbmUgUkVUVkFMX0NBVENIQUxM
ICAgICA1MAorI2RlZmluZSBSRVRWQUxfVElNRU9VVCAgICAgIDYwCisjZGVmaW5lIFJFVFZBTF9F
Q09OTlJFRlVTRUQgNjEKKworaW50IGRvbmUgPSAwOworaW50IHdyaXRlUGVuZGluZyA9IDE7Citp
bnQgcmVzdWx0ID0gMDsKKworc3RhdGljIGNvbnN0IGNoYXIgKnJlcXVlc3RfcHJlZml4ID0gIkdF
VCI7CitzdGF0aWMgY29uc3QgY2hhciAqcmVxdWVzdF9wb3N0Zml4ID0gIkhUVFAvMS4wXHJcblVz
ZXItYWdlbnQ6IGxpYnVzcnNjdHBcclxuQ29ubmVjdGlvbjogY2xvc2VcclxuXHJcbiI7CitjaGFy
IHJlcXVlc3RbNTEyXTsKKworI2lmZGVmIF9XSU4zMgordHlwZWRlZiBjaGFyKiBjYWRkcl90Owor
I2VuZGlmCisKKyNkZWZpbmUgQlVGRkVSU0laRSAoMTw8MTYpCisKK3N0YXRpYyB2b2lkIGhhbmRs
ZV91cGNhbGwoc3RydWN0IHNvY2tldCAqc29jaywgdm9pZCAqYXJnLCBpbnQgZmxncykKK3sKKwlp
bnQgZXZlbnRzID0gdXNyc2N0cF9nZXRfZXZlbnRzKHNvY2spOworCXNzaXplX3QgYnl0ZXNTZW50
OworCWNoYXIgKmJ1ZjsKKworCWlmICgoZXZlbnRzICYgU0NUUF9FVkVOVF9SRUFEKSAmJiAhZG9u
ZSkgeworCQlzdHJ1Y3Qgc2N0cF9yZWN2dl9ybiBybjsKKwkJc3NpemVfdCBuOworCQlzdHJ1Y3Qg
c29ja2FkZHJfaW4gYWRkcjsKKwkJYnVmID0gbWFsbG9jKEJVRkZFUlNJWkUpOworCQlpbnQgZmxh
Z3MgPSAwOworCQlzb2NrbGVuX3QgbGVuID0gKHNvY2tsZW5fdClzaXplb2Yoc3RydWN0IHNvY2th
ZGRyX2luKTsKKwkJdW5zaWduZWQgaW50IGluZm90eXBlID0gMDsKKwkJc29ja2xlbl90IGluZm9s
ZW4gPSBzaXplb2Yoc3RydWN0IHNjdHBfcmVjdnZfcm4pOworCisJCW1lbXNldCgmcm4sIDAsIHNp
emVvZihzdHJ1Y3Qgc2N0cF9yZWN2dl9ybikpOworCQluID0gdXNyc2N0cF9yZWN2dihzb2NrLCBi
dWYsIEJVRkZFUlNJWkUsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJmFkZHIsICZsZW4sICh2b2lkICop
JnJuLAorCQkgICAgICAgICAgICAgICAgICAmaW5mb2xlbiwgJmluZm90eXBlLCAmZmxhZ3MpOwor
CisJCWlmIChuIDwgMCkgeworCQkJaWYgKGVycm5vID09IEVDT05OUkVGVVNFRCkgeworCQkJCXJl
c3VsdCA9IFJFVFZBTF9FQ09OTlJFRlVTRUQ7CisJCQl9IGVsc2UgaWYgKGVycm5vID09IEVUSU1F
RE9VVCkgeworCQkJCXJlc3VsdCA9IFJFVFZBTF9USU1FT1VUOworCQkJfSBlbHNlIHsKKwkJCQly
ZXN1bHQgPSBSRVRWQUxfQ0FUQ0hBTEw7CisJCQl9CisJCQlwZXJyb3IoInVzcnNjdHBfcmVjdnYi
KTsKKwkJfQorCisJCWlmIChuIDw9IDApIHsKKwkJCWRvbmUgPSAxOworCQkJdXNyc2N0cF9jbG9z
ZShzb2NrKTsKKwkJfSBlbHNlIHsKKyNpZmRlZiBfV0lOMzIKKwkJCV93cml0ZShfZmlsZW5vKHN0
ZG91dCksIGJ1ZiwgKHVuc2lnbmVkIGludCluKTsKKyNlbHNlCisJCQlpZiAod3JpdGUoZmlsZW5v
KHN0ZG91dCksIGJ1ZiwgbikgPCAwKSB7CisJCQkJcGVycm9yKCJ3cml0ZSIpOworCQkJfQorI2Vu
ZGlmCisJCX0KKwkJZnJlZShidWYpOworCX0KKworCWlmICgoZXZlbnRzICYgU0NUUF9FVkVOVF9X
UklURSkgJiYgd3JpdGVQZW5kaW5nICYmICFkb25lKSB7CisJCXdyaXRlUGVuZGluZyA9IDA7CisJ
CXByaW50ZigiXG5IVFRQIHJlcXVlc3Q6XG4lc1xuIiwgcmVxdWVzdCk7CisJCXByaW50ZigiXG5I
VFRQIHJlc3BvbnNlOlxuIik7CisKKwkJLyogc2VuZCBHRVQgcmVxdWVzdCAqLworCQlieXRlc1Nl
bnQgPSB1c3JzY3RwX3NlbmR2KHNvY2ssIHJlcXVlc3QsIHN0cmxlbihyZXF1ZXN0KSwgTlVMTCwg
MCwgTlVMTCwgMCwgU0NUUF9TRU5EVl9OT0lORk8sIDApOworCQlpZiAoYnl0ZXNTZW50IDwgMCkg
eworCQkJcGVycm9yKCJ1c3JzY3RwX3NlbmR2Iik7CisJCQl1c3JzY3RwX2Nsb3NlKHNvY2spOwor
CQl9IGVsc2UgeworCQkJcHJpbnRmKCIlemQgYnl0ZXMgc2VudFxuIiwgYnl0ZXNTZW50KTsKKwkJ
fQorCX0KK30KKworaW50CittYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJc3RydWN0
IHNvY2tldCAqc29jazsKKwlzdHJ1Y3Qgc29ja2FkZHIgKmFkZHI7CisJc29ja2xlbl90IGFkZHJf
bGVuOworCXN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyNDsKKwlzdHJ1Y3Qgc29ja2FkZHJfaW42IGFk
ZHI2OworCXN0cnVjdCBzb2NrYWRkcl9pbiBiaW5kNDsKKwlzdHJ1Y3Qgc29ja2FkZHJfaW42IGJp
bmQ2OworCXN0cnVjdCBzY3RwX3VkcGVuY2FwcyBlbmNhcHM7CisJc3RydWN0IHNjdHBfcnRvaW5m
byBydG9pbmZvOworCXN0cnVjdCBzY3RwX2luaXRtc2cgaW5pdG1zZzsKKwl1aW50OF90IGFkZHJl
c3NfZmFtaWx5ID0gMDsKKworCWlmIChhcmdjIDwgMykgeworCQlwcmludGYoIlVzYWdlOiBodHRw
X2NsaWVudF91cGNhbGwgcmVtb3RlX2FkZHIgcmVtb3RlX3BvcnQgW2xvY2FsX3BvcnRdIFtsb2Nh
bF9lbmNhcHNfcG9ydF0gW3JlbW90ZV9lbmNhcHNfcG9ydF0gW3VyaV1cbiIpOworCQlyZXR1cm4o
RVhJVF9GQUlMVVJFKTsKKwl9CisKKwltZW1zZXQoKHZvaWQgKikmYWRkcjQsIDAsIHNpemVvZihz
dHJ1Y3Qgc29ja2FkZHJfaW4pKTsKKwltZW1zZXQoKHZvaWQgKikmYWRkcjYsIDAsIHNpemVvZihz
dHJ1Y3Qgc29ja2FkZHJfaW42KSk7CisKKwlpZiAoaW5ldF9wdG9uKEFGX0lORVQsIGFyZ3ZbMV0s
ICZhZGRyNC5zaW5fYWRkcikgPT0gMSkgeworCQlhZGRyZXNzX2ZhbWlseSA9IEFGX0lORVQ7CisK
KwkJYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHIgKikmYWRkcjQ7CisJCWFkZHJfbGVuID0gc2l6ZW9m
KGFkZHI0KTsKKyNpZmRlZiBIQVZFX1NJTl9MRU4KKwkJYWRkcjQuc2luX2xlbiA9IHNpemVvZihz
dHJ1Y3Qgc29ja2FkZHJfaW4pOworI2VuZGlmCisJCWFkZHI0LnNpbl9mYW1pbHkgPSBBRl9JTkVU
OworCQlhZGRyNC5zaW5fcG9ydCA9IGh0b25zKGF0b2koYXJndlsyXSkpOworCX0gZWxzZSBpZiAo
aW5ldF9wdG9uKEFGX0lORVQ2LCBhcmd2WzFdLCAmYWRkcjYuc2luNl9hZGRyKSA9PSAxKSB7CisJ
CWFkZHJlc3NfZmFtaWx5ID0gQUZfSU5FVDY7CisKKwkJYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHIg
KikmYWRkcjY7CisJCWFkZHJfbGVuID0gc2l6ZW9mKGFkZHI2KTsKKyNpZmRlZiBIQVZFX1NJTjZf
TEVOCisJCWFkZHI2LnNpbjZfbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpOworI2Vu
ZGlmCisJCWFkZHI2LnNpbjZfZmFtaWx5ID0gQUZfSU5FVDY7CisJCWFkZHI2LnNpbjZfcG9ydCA9
IGh0b25zKGF0b2koYXJndlsyXSkpOworCX0gZWxzZSB7CisJCXByaW50ZigiVW5zdXBwb3J0ZWQg
ZGVzdGluYXRpb24gYWRkcmVzcyAtIHVzZSBJUHY0IG9yIElQdjYgYWRkcmVzc1xuIik7CisJCXJl
c3VsdCA9IFJFVFZBTF9DQVRDSEFMTDsKKwkJZ290byBvdXQ7CisJfQorCisJaWYgKGFyZ2MgPiA0
KSB7CisJCXVzcnNjdHBfaW5pdChhdG9pKGFyZ3ZbNF0pLCBOVUxMLCBkZWJ1Z19wcmludGZfc3Rh
Y2spOworCX0gZWxzZSB7CisJCXVzcnNjdHBfaW5pdCg5ODk5LCBOVUxMLCBkZWJ1Z19wcmludGZf
c3RhY2spOworCX0KKworI2lmZGVmIFNDVFBfREVCVUcKKwl1c3JzY3RwX3N5c2N0bF9zZXRfc2N0
cF9kZWJ1Z19vbihTQ1RQX0RFQlVHX0FMTCk7CisjZW5kaWYKKworCXVzcnNjdHBfc3lzY3RsX3Nl
dF9zY3RwX2JsYWNraG9sZSgyKTsKKwl1c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9ub19jc3VtX29u
X2xvb3BiYWNrKDApOworCisJaWYgKChzb2NrID0gdXNyc2N0cF9zb2NrZXQoYWRkcmVzc19mYW1p
bHksIFNPQ0tfU1RSRUFNLCBJUFBST1RPX1NDVFAsIE5VTEwsIE5VTEwsIDAsIE5VTEwpKSA9PSBO
VUxMKSB7CisJCXBlcnJvcigidXNyc2N0cF9zb2NrZXQiKTsKKwkJcmVzdWx0ID0gUkVUVkFMX0NB
VENIQUxMOworCQlnb3RvIG91dDsKKwl9CisKKwkvKiB1c3JzY3RwX3NldF9ub25fYmxvY2tpbmco
c29jaywgMSk7ICovCisKKwlydG9pbmZvLnNydG9fYXNzb2NfaWQgPSAwOworCXJ0b2luZm8uc3J0
b19pbml0aWFsID0gMTAwMDsKKwlydG9pbmZvLnNydG9fbWluID0gMTAwMDsKKwlydG9pbmZvLnNy
dG9fbWF4ID0gODAwMDsKKwlpZiAodXNyc2N0cF9zZXRzb2Nrb3B0KHNvY2ssIElQUFJPVE9fU0NU
UCwgU0NUUF9SVE9JTkZPLCAoY29uc3Qgdm9pZCAqKSZydG9pbmZvLCAoc29ja2xlbl90KXNpemVv
ZihzdHJ1Y3Qgc2N0cF9ydG9pbmZvKSkgPCAwKSB7CisJCXBlcnJvcigic2V0c29ja29wdCIpOwor
CQl1c3JzY3RwX2Nsb3NlKHNvY2spOworCQlyZXN1bHQgPSBSRVRWQUxfQ0FUQ0hBTEw7CisJCWdv
dG8gb3V0OworCX0KKwlpbml0bXNnLnNpbml0X251bV9vc3RyZWFtcyA9IDE7CisJaW5pdG1zZy5z
aW5pdF9tYXhfaW5zdHJlYW1zID0gMTsKKwlpbml0bXNnLnNpbml0X21heF9hdHRlbXB0cyA9IDU7
CisJaW5pdG1zZy5zaW5pdF9tYXhfaW5pdF90aW1lbyA9IDQwMDA7CisJaWYgKHVzcnNjdHBfc2V0
c29ja29wdChzb2NrLCBJUFBST1RPX1NDVFAsIFNDVFBfSU5JVE1TRywgKGNvbnN0IHZvaWQgKikm
aW5pdG1zZywgKHNvY2tsZW5fdClzaXplb2Yoc3RydWN0IHNjdHBfaW5pdG1zZykpIDwgMCkgewor
CQlwZXJyb3IoInNldHNvY2tvcHQiKTsKKwkJdXNyc2N0cF9jbG9zZShzb2NrKTsKKwkJcmVzdWx0
ID0gUkVUVkFMX0NBVENIQUxMOworCQlnb3RvIG91dDsKKwl9CisKKwlpZiAoYXJnYyA+IDMpIHsK
KworCQlpZiAoYWRkcmVzc19mYW1pbHkgPT0gQUZfSU5FVCkgeworCQkJbWVtc2V0KCh2b2lkICop
JmJpbmQ0LCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7CisjaWZkZWYgSEFWRV9TSU5f
TEVOCisJCQliaW5kNC5zaW5fbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpOworI2Vu
ZGlmCisJCQliaW5kNC5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKKwkJCWJpbmQ0LnNpbl9wb3J0ID0g
aHRvbnMoYXRvaShhcmd2WzNdKSk7CisJCQliaW5kNC5zaW5fYWRkci5zX2FkZHIgPSBodG9ubChJ
TkFERFJfQU5ZKTsKKworCQkJaWYgKHVzcnNjdHBfYmluZChzb2NrLCAoc3RydWN0IHNvY2thZGRy
ICopJmJpbmQ0LCBzaXplb2YoYmluZDQpKSA8IDApIHsKKwkJCQlwZXJyb3IoImJpbmQiKTsKKwkJ
CQl1c3JzY3RwX2Nsb3NlKHNvY2spOworCQkJCXJlc3VsdCA9IFJFVFZBTF9DQVRDSEFMTDsKKwkJ
CQlnb3RvIG91dDsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCW1lbXNldCgodm9pZCAqKSZiaW5kNiwg
MCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKTsKKyNpZmRlZiBIQVZFX1NJTjZfTEVOCisJ
CQliaW5kNi5zaW42X2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KTsKKyNlbmRpZgor
CQkJYmluZDYuc2luNl9mYW1pbHkgPSBBRl9JTkVUNjsKKwkJCWJpbmQ2LnNpbjZfcG9ydCA9IGh0
b25zKGF0b2koYXJndlszXSkpOworCQkJYmluZDYuc2luNl9hZGRyID0gaW42YWRkcl9hbnk7CisJ
CQlpZiAodXNyc2N0cF9iaW5kKHNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikmYmluZDYsIHNpemVv
ZihiaW5kNikpIDwgMCkgeworCQkJCXBlcnJvcigiYmluZCIpOworCQkJCXVzcnNjdHBfY2xvc2Uo
c29jayk7CisJCQkJcmVzdWx0ID0gUkVUVkFMX0NBVENIQUxMOworCQkJCWdvdG8gb3V0OworCQkJ
fQorCQl9CisJfQorCisJaWYgKGFyZ2MgPiA1KSB7CisJCW1lbXNldCgmZW5jYXBzLCAwLCBzaXpl
b2Yoc3RydWN0IHNjdHBfdWRwZW5jYXBzKSk7CisJCWVuY2Fwcy5zdWVfYWRkcmVzcy5zc19mYW1p
bHkgPSBhZGRyZXNzX2ZhbWlseTsKKwkJZW5jYXBzLnN1ZV9wb3J0ID0gaHRvbnMoYXRvaShhcmd2
WzVdKSk7CisJCWlmICh1c3JzY3RwX3NldHNvY2tvcHQoc29jaywgSVBQUk9UT19TQ1RQLCBTQ1RQ
X1JFTU9URV9VRFBfRU5DQVBTX1BPUlQsIChjb25zdCB2b2lkICopJmVuY2FwcywgKHNvY2tsZW5f
dClzaXplb2Yoc3RydWN0IHNjdHBfdWRwZW5jYXBzKSkgPCAwKSB7CisJCQlwZXJyb3IoInNldHNv
Y2tvcHQiKTsKKwkJCXVzcnNjdHBfY2xvc2Uoc29jayk7CisJCQlyZXN1bHQgPSBSRVRWQUxfQ0FU
Q0hBTEw7CisJCQlnb3RvIG91dDsKKwkJfQorCX0KKworCWlmIChhcmdjID4gNikgeworI2lmZGVm
IF9XSU4zMgorCQlpZiAoX3NucHJpbnRmKHJlcXVlc3QsIHNpemVvZihyZXF1ZXN0KSwgIiVzICVz
ICVzIiwgcmVxdWVzdF9wcmVmaXgsIGFyZ3ZbNl0sIHJlcXVlc3RfcG9zdGZpeCkgPCAwKSB7Cisj
ZWxzZQorCQlpZiAoc25wcmludGYocmVxdWVzdCwgc2l6ZW9mKHJlcXVlc3QpLCAiJXMgJXMgJXMi
LCByZXF1ZXN0X3ByZWZpeCwgYXJndls2XSwgcmVxdWVzdF9wb3N0Zml4KSA8IDApIHsKKyNlbmRp
ZgorCQkJcmVxdWVzdFswXSA9ICdcMCc7CisJCX0KKwl9IGVsc2UgeworI2lmZGVmIF9XSU4zMgor
CQlpZiAoX3NucHJpbnRmKHJlcXVlc3QsIHNpemVvZihyZXF1ZXN0KSwgIiVzICVzICVzIiwgcmVx
dWVzdF9wcmVmaXgsICIvIiwgcmVxdWVzdF9wb3N0Zml4KSA8IDApIHsKKyNlbHNlCisJCWlmIChz
bnByaW50ZihyZXF1ZXN0LCBzaXplb2YocmVxdWVzdCksICIlcyAlcyAlcyIsIHJlcXVlc3RfcHJl
Zml4LCAiLyIsIHJlcXVlc3RfcG9zdGZpeCkgPCAwKSB7CisjZW5kaWYKKwkJCXJlcXVlc3RbMF0g
PSAnXDAnOworCQl9CisJfQorCisJcHJpbnRmKCJcbkhUVFAgcmVxdWVzdDpcbiVzXG4iLCByZXF1
ZXN0KTsKKwlwcmludGYoIlxuSFRUUCByZXNwb25zZTpcbiIpOworCisKKwl1c3JzY3RwX3NldF91
cGNhbGwoc29jaywgaGFuZGxlX3VwY2FsbCwgTlVMTCk7CisJdXNyc2N0cF9zZXRfbm9uX2Jsb2Nr
aW5nKHNvY2ssIDEpOworCisJaWYgKHVzcnNjdHBfY29ubmVjdChzb2NrLCBhZGRyLCBhZGRyX2xl
bikgPCAwKSB7CisJCWlmIChlcnJubyAhPSBFSU5QUk9HUkVTUykgeworCQkJaWYgKGVycm5vID09
IEVDT05OUkVGVVNFRCkgeworCQkJCXJlc3VsdCA9IFJFVFZBTF9FQ09OTlJFRlVTRUQ7CisJCQl9
IGVsc2UgaWYgKGVycm5vID09IEVUSU1FRE9VVCkgeworCQkJCXJlc3VsdCA9IFJFVFZBTF9USU1F
T1VUOworCQkJfSBlbHNlIHsKKwkJCQlyZXN1bHQgPSBSRVRWQUxfQ0FUQ0hBTEw7CisJCQl9CisJ
CQlwZXJyb3IoInVzcnNjdHBfY29ubmVjdCIpOworCQl9CisJfQorCisJd2hpbGUgKCFkb25lKSB7
CisjaWZkZWYgX1dJTjMyCisJCVNsZWVwKDEqMTAwMCk7CisjZWxzZQorCQlzbGVlcCgxKTsKKyNl
bmRpZgorCX0KK291dDoKKwl3aGlsZSAodXNyc2N0cF9maW5pc2goKSAhPSAwKSB7CisjaWZkZWYg
X1dJTjMyCisJCVNsZWVwKDEwMDApOworI2Vsc2UKKwkJc2xlZXAoMSk7CisjZW5kaWYKKwl9CisK
KwlwcmludGYoIkZpbmlzaGVkLCByZXR1cm5pbmcgd2l0aCAlZFxuIiwgcmVzdWx0KTsKKwlyZXR1
cm4gKHJlc3VsdCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9tZXNvbi5idWls
ZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0
cC91c3JzY3RwbGliL3Byb2dyYW1zL21lc29uLmJ1aWxkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2MjlhNDRiY2Qy
NWM1NmExZDVhM2I5YjNkYmY0NjBmNGNkNGJiMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi9wcm9ncmFtcy9tZXNvbi5idWlsZApAQCAtMCwwICsxLDI4IEBACisjIEhlbHBlciBzb3VyY2Vz
IGZvciBhbGwgcHJvZ3JhbXMKK3Byb2dyYW1zX2hlbHBlcl9zb3VyY2VzID0gZmlsZXMoJ3Byb2dy
YW1zX2hlbHBlci5jJykKKworIyBQcm9ncmFtcyBhbmQgdGhlaXIgc291cmNlcworcHJvZ3JhbXMg
PSB7CisgICAgJ2NoYXJnZW5fc2VydmVyX3VwY2FsbCc6IGZpbGVzKCdjaGFyZ2VuX3NlcnZlcl91
cGNhbGwuYycpLAorICAgICdjbGllbnQnOiBmaWxlcygnY2xpZW50LmMnKSwKKyAgICAnc3RfY2xp
ZW50JzogZmlsZXMoJ3N0X2NsaWVudC5jJyksCisgICAgJ2NsaWVudF91cGNhbGwnOiBmaWxlcygn
Y2xpZW50X3VwY2FsbC5jJyksCisgICAgJ2RheXRpbWVfc2VydmVyJzogZmlsZXMoJ2RheXRpbWVf
c2VydmVyLmMnKSwKKyAgICAnZGF5dGltZV9zZXJ2ZXJfdXBjYWxsJzogZmlsZXMoJ2RheXRpbWVf
c2VydmVyX3VwY2FsbC5jJyksCisgICAgJ2Rpc2NhcmRfc2VydmVyJzogZmlsZXMoJ2Rpc2NhcmRf
c2VydmVyLmMnKSwKKyAgICAnZGlzY2FyZF9zZXJ2ZXJfdXBjYWxsJzogZmlsZXMoJ2Rpc2NhcmRf
c2VydmVyX3VwY2FsbC5jJyksCisgICAgJ2VjaG9fc2VydmVyJzogZmlsZXMoJ2VjaG9fc2VydmVy
LmMnKSwKKyAgICAnZWNob19zZXJ2ZXJfdXBjYWxsJzogZmlsZXMoJ2VjaG9fc2VydmVyX3VwY2Fs
bC5jJyksCisgICAgJ2Vrcl9jbGllbnQnOiBmaWxlcygnZWtyX2NsaWVudC5jJyksCisgICAgJ2Vr
cl9sb29wJzogZmlsZXMoJ2Vrcl9sb29wLmMnKSwKKyAgICAnZWtyX2xvb3BfdXBjYWxsJzogZmls
ZXMoJ2Vrcl9sb29wX3VwY2FsbC5jJyksCisgICAgJ2Vrcl9wZWVyJzogZmlsZXMoJ2Vrcl9wZWVy
LmMnKSwKKyAgICAnZWtyX3NlcnZlcic6IGZpbGVzKCdla3Jfc2VydmVyLmMnKSwKKyAgICAnaHR0
cF9jbGllbnQnOiBmaWxlcygnaHR0cF9jbGllbnQuYycpLAorICAgICdodHRwX2NsaWVudF91cGNh
bGwnOiBmaWxlcygnaHR0cF9jbGllbnRfdXBjYWxsLmMnKSwKKyAgICAncnRjd2ViJzogZmlsZXMo
J3J0Y3dlYi5jJyksCisgICAgJ3Rlc3RfbGlibWdtdCc6IGZpbGVzKCd0ZXN0X2xpYm1nbXQuYycp
LAorICAgICd0ZXN0X3RpbWVyJzogZmlsZXMoJ3Rlc3RfdGltZXIuYycpLAorICAgICd0c2N0cCc6
IGZpbGVzKCd0c2N0cC5jJyksCit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL3By
b2dyYW1zX2hlbHBlci5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvcHJvZ3JhbXNfaGVscGVyLmMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTUwZjc1MzgwMmE4ZTk1MDJhNjY3ZjU0NjlkNTg5ZjZlMTg2ZjQzYgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL3Byb2dyYW1zX2hlbHBlci5jCkBAIC0wLDAg
KzEsNDYwIEBACisKKyNpZmRlZiBfV0lOMzIKKyNkZWZpbmUgX0NSVF9TRUNVUkVfTk9fV0FSTklO
R1MKKyNlbmRpZgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNp
bmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlIDx1c3JzY3RwLmg+CisKKyNpZm5kZWYgX1dJTjMy
CisjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyNlbHNlCisj
aW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3RpbWViLmg+CisjaW5jbHVkZSA8
aW8uaD4KKyNlbmRpZgorCisjaW5jbHVkZSAicHJvZ3JhbXNfaGVscGVyLmgiCisKKyNkZWZpbmUg
REVGQVVMVF9UQVJHRVQgc3Rkb3V0OworCitzdGF0aWMgRklMRSAqZGVidWdfdGFyZ2V0ID0gTlVM
TDsKKworI2lmZGVmIF9XSU4zMgorc3RhdGljIHZvaWQKK2dldHRpbWVvZmRheShzdHJ1Y3QgdGlt
ZXZhbCAqdHYsIHZvaWQgKmlnbm9yZSkKK3sKKwlGSUxFVElNRSBmaWxldGltZTsKKwlVTEFSR0Vf
SU5URUdFUiB1bGFyZ2U7CisKKwlHZXRTeXN0ZW1UaW1lQXNGaWxlVGltZSgmZmlsZXRpbWUpOwor
CXVsYXJnZS5Mb3dQYXJ0ID0gZmlsZXRpbWUuZHdMb3dEYXRlVGltZTsKKwl1bGFyZ2UuSGlnaFBh
cnQgPSBmaWxldGltZS5kd0hpZ2hEYXRlVGltZTsKKwkvKiBDaGFuZ2UgYmFzZSBmcm9tIEphbiAx
IDE2MDEgMDA6MDA6MDAgdG8gSmFuIDEgMTk3MCAwMDowMDowMCAqLworI2lmIGRlZmluZWQoX19N
SU5HVzMyX18pCisJdWxhcmdlLlF1YWRQYXJ0IC09IDExNjQ0NDczNjAwMDAwMDAwMFVMTDsKKyNl
bHNlCisJdWxhcmdlLlF1YWRQYXJ0IC09IDExNjQ0NDczNjAwMDAwMDAwMFVJNjQ7CisjZW5kaWYK
KwkvKgorCSAqIHVsYXJnZS5RdWFkUGFydCBpcyBub3cgdGhlIG51bWJlciBvZiAxMDAtbmFub3Nl
Y29uZCBpbnRlcnZhbHMKKwkgKiBzaW5jZSBKYW4gMSAxOTcwIDAwOjAwOjAwLgorCSAqLworI2lm
IGRlZmluZWQoX19NSU5HVzMyX18pCisJdHYtPnR2X3NlYyA9IChsb25nKSh1bGFyZ2UuUXVhZFBh
cnQgLyAxMDAwMDAwMFVMTCk7CisJdHYtPnR2X3VzZWMgPSAobG9uZykoKHVsYXJnZS5RdWFkUGFy
dCAlIDEwMDAwMDAwVUxMKSAvIDEwVUxMKTsKKyNlbHNlCisJdHYtPnR2X3NlYyA9IChsb25nKSh1
bGFyZ2UuUXVhZFBhcnQgLyAxMDAwMDAwMFVJNjQpOworCXR2LT50dl91c2VjID0gKGxvbmcpKCh1
bGFyZ2UuUXVhZFBhcnQgJSAxMDAwMDAwMFVJNjQpIC8gMTBVSTY0KTsKKyNlbmRpZgorfQorI2Vu
ZGlmCisKK3ZvaWQKK2RlYnVnX3NldF90YXJnZXQoRklMRSAqZnApIHsKKwlkZWJ1Z190YXJnZXQg
PSBmcDsKK30KKwordm9pZAorZGVidWdfcHJpbnRmX2NsZWFuKGNvbnN0IGNoYXIgKmZvcm1hdCwg
Li4uKSB7CisJY2hhciBjaGFyYnVmWzEwMjRdOworCXZhX2xpc3QgYXA7CisKKwlpZiAoZGVidWdf
dGFyZ2V0ID09IE5VTEwpIHsKKwkJZGVidWdfdGFyZ2V0ID0gREVGQVVMVF9UQVJHRVQ7CisJfQor
CisJdmFfc3RhcnQoYXAsIGZvcm1hdCk7CisJaWYgKHZzbnByaW50ZihjaGFyYnVmLCAxMDI0LCBm
b3JtYXQsIGFwKSA8IDApIHsKKwkJY2hhcmJ1ZlswXSA9ICdcMCc7CisJfQorCXZhX2VuZChhcCk7
CisKKwlmcHJpbnRmKGRlYnVnX3RhcmdldCwgIiVzIiwgY2hhcmJ1Zik7CisJZmZsdXNoKGRlYnVn
X3RhcmdldCk7Cit9CisKK3ZvaWQKK2RlYnVnX3ByaW50Zihjb25zdCBjaGFyICpmb3JtYXQsIC4u
LikgeworCXZhX2xpc3QgYXA7CisJY2hhciBjaGFyYnVmWzEwMjRdOworCXN0YXRpYyBzdHJ1Y3Qg
dGltZXZhbCB0aW1lX21haW47CisJc3RydWN0IHRpbWV2YWwgdGltZV9ub3c7CisJc3RydWN0IHRp
bWV2YWwgdGltZV9kZWx0YTsKKworCWlmIChkZWJ1Z190YXJnZXQgPT0gTlVMTCkgeworCQlkZWJ1
Z190YXJnZXQgPSBERUZBVUxUX1RBUkdFVDsKKwl9CisKKwlpZiAodGltZV9tYWluLnR2X3NlYyA9
PSAwICAmJiB0aW1lX21haW4udHZfdXNlYyA9PSAwKSB7CisJCWdldHRpbWVvZmRheSgmdGltZV9t
YWluLCBOVUxMKTsKKwl9CisKKwlnZXR0aW1lb2ZkYXkoJnRpbWVfbm93LCBOVUxMKTsKKwl0aW1l
cnN1YigmdGltZV9ub3csICZ0aW1lX21haW4sICZ0aW1lX2RlbHRhKTsKKworCXZhX3N0YXJ0KGFw
LCBmb3JtYXQpOworCWlmICh2c25wcmludGYoY2hhcmJ1ZiwgMTAyNCwgZm9ybWF0LCBhcCkgPCAw
KSB7CisJCWNoYXJidWZbMF0gPSAnXDAnOworCX0KKwl2YV9lbmQoYXApOworCisJZnByaW50Zihk
ZWJ1Z190YXJnZXQsICJbUF1bJXUuJTAzdV0gJXMiLCAodW5zaWduZWQgaW50KSB0aW1lX2RlbHRh
LnR2X3NlYywgKHVuc2lnbmVkIGludCkgdGltZV9kZWx0YS50dl91c2VjIC8gMTAwMCwgY2hhcmJ1
Zik7CisJZmZsdXNoKGRlYnVnX3RhcmdldCk7Cit9CisKK3ZvaWQKK2RlYnVnX3ByaW50Zl9zdGFj
ayhjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKK3sKKwl2YV9saXN0IGFwOworCWNoYXIgY2hhcmJ1
ZlsxMDI0XTsKKwlzdGF0aWMgc3RydWN0IHRpbWV2YWwgdGltZV9tYWluOworCXN0cnVjdCB0aW1l
dmFsIHRpbWVfbm93OworCXN0cnVjdCB0aW1ldmFsIHRpbWVfZGVsdGE7CisKKwlpZiAoZGVidWdf
dGFyZ2V0ID09IE5VTEwpIHsKKwkJZGVidWdfdGFyZ2V0ID0gREVGQVVMVF9UQVJHRVQ7CisJfQor
CisJaWYgKHRpbWVfbWFpbi50dl9zZWMgPT0gMCAgJiYgdGltZV9tYWluLnR2X3VzZWMgPT0gMCkg
eworCQlnZXR0aW1lb2ZkYXkoJnRpbWVfbWFpbiwgTlVMTCk7CisJfQorCisJZ2V0dGltZW9mZGF5
KCZ0aW1lX25vdywgTlVMTCk7CisJdGltZXJzdWIoJnRpbWVfbm93LCAmdGltZV9tYWluLCAmdGlt
ZV9kZWx0YSk7CisKKwl2YV9zdGFydChhcCwgZm9ybWF0KTsKKwlpZiAodnNucHJpbnRmKGNoYXJi
dWYsIDEwMjQsIGZvcm1hdCwgYXApIDwgMCkgeworCQljaGFyYnVmWzBdID0gJ1wwJzsKKwl9CisJ
dmFfZW5kKGFwKTsKKworCWZwcmludGYoZGVidWdfdGFyZ2V0LCAiW1NdWyV1LiUwM3VdICVzIiwg
KHVuc2lnbmVkIGludCkgdGltZV9kZWx0YS50dl9zZWMsICh1bnNpZ25lZCBpbnQpIHRpbWVfZGVs
dGEudHZfdXNlYyAvIDEwMDAsIGNoYXJidWYpOworCWZmbHVzaChkZWJ1Z190YXJnZXQpOworfQor
CitzdGF0aWMgdm9pZAoraGFuZGxlX2Fzc29jaWF0aW9uX2NoYW5nZV9ldmVudChzdHJ1Y3Qgc2N0
cF9hc3NvY19jaGFuZ2UgKnNhYykKK3sKKwl1bnNpZ25lZCBpbnQgaSwgbjsKKworCWlmIChkZWJ1
Z190YXJnZXQgPT0gTlVMTCkgeworCQlkZWJ1Z190YXJnZXQgPSBERUZBVUxUX1RBUkdFVDsKKwl9
CisKKwlmcHJpbnRmKGRlYnVnX3RhcmdldCwgIkFzc29jaWF0aW9uIGNoYW5nZSAiKTsKKwlzd2l0
Y2ggKHNhYy0+c2FjX3N0YXRlKSB7CisJY2FzZSBTQ1RQX0NPTU1fVVA6CisJCWZwcmludGYoZGVi
dWdfdGFyZ2V0LCAiU0NUUF9DT01NX1VQIik7CisJCWJyZWFrOworCWNhc2UgU0NUUF9DT01NX0xP
U1Q6CisJCWZwcmludGYoZGVidWdfdGFyZ2V0LCAiU0NUUF9DT01NX0xPU1QiKTsKKwkJYnJlYWs7
CisJY2FzZSBTQ1RQX1JFU1RBUlQ6CisJCWZwcmludGYoZGVidWdfdGFyZ2V0LCAiU0NUUF9SRVNU
QVJUIik7CisJCWJyZWFrOworCWNhc2UgU0NUUF9TSFVURE9XTl9DT01QOgorCQlmcHJpbnRmKGRl
YnVnX3RhcmdldCwgIlNDVFBfU0hVVERPV05fQ09NUCIpOworCQlicmVhazsKKwljYXNlIFNDVFBf
Q0FOVF9TVFJfQVNTT0M6CisJCWZwcmludGYoZGVidWdfdGFyZ2V0LCAiU0NUUF9DQU5UX1NUUl9B
U1NPQyIpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlmcHJpbnRmKGRlYnVnX3RhcmdldCwgIlVO
S05PV04iKTsKKwkJYnJlYWs7CisJfQorCWZwcmludGYoZGVidWdfdGFyZ2V0LCAiLCBzdHJlYW1z
IChpbi9vdXQpID0gKCV1LyV1KSIsCisJICAgICAgIHNhYy0+c2FjX2luYm91bmRfc3RyZWFtcywg
c2FjLT5zYWNfb3V0Ym91bmRfc3RyZWFtcyk7CisJbiA9IHNhYy0+c2FjX2xlbmd0aCAtIHNpemVv
ZihzdHJ1Y3Qgc2N0cF9hc3NvY19jaGFuZ2UpOworCWlmICgoKHNhYy0+c2FjX3N0YXRlID09IFND
VFBfQ09NTV9VUCkgfHwKKwkgICAgIChzYWMtPnNhY19zdGF0ZSA9PSBTQ1RQX1JFU1RBUlQpKSAm
JiAobiA+IDApKSB7CisJCWZwcmludGYoZGVidWdfdGFyZ2V0LCAiLCBzdXBwb3J0cyIpOworCQlm
b3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisJCQlzd2l0Y2ggKHNhYy0+c2FjX2luZm9baV0pIHsK
KwkJCWNhc2UgU0NUUF9BU1NPQ19TVVBQT1JUU19QUjoKKwkJCQlmcHJpbnRmKGRlYnVnX3Rhcmdl
dCwgIiBQUiIpOworCQkJCWJyZWFrOworCQkJY2FzZSBTQ1RQX0FTU09DX1NVUFBPUlRTX0FVVEg6
CisJCQkJZnByaW50ZihkZWJ1Z190YXJnZXQsICIgQVVUSCIpOworCQkJCWJyZWFrOworCQkJY2Fz
ZSBTQ1RQX0FTU09DX1NVUFBPUlRTX0FTQ09ORjoKKwkJCQlmcHJpbnRmKGRlYnVnX3RhcmdldCwg
IiBBU0NPTkYiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgU0NUUF9BU1NPQ19TVVBQT1JUU19NVUxU
SUJVRjoKKwkJCQlmcHJpbnRmKGRlYnVnX3RhcmdldCwgIiBNVUxUSUJVRiIpOworCQkJCWJyZWFr
OworCQkJY2FzZSBTQ1RQX0FTU09DX1NVUFBPUlRTX1JFX0NPTkZJRzoKKwkJCQlmcHJpbnRmKGRl
YnVnX3RhcmdldCwgIiBSRS1DT05GSUciKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgU0NUUF9BU1NP
Q19TVVBQT1JUU19JTlRFUkxFQVZJTkc6CisJCQkJZnByaW50ZihkZWJ1Z190YXJnZXQsICIgSU5U
RVJMRUFWSU5HIik7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWZwcmludGYoZGVidWdf
dGFyZ2V0LCAiIFVOS05PV04oMHglMDJ4KSIsIHNhYy0+c2FjX2luZm9baV0pOworCQkJCWJyZWFr
OworCQkJfQorCQl9CisJfSBlbHNlIGlmICgoKHNhYy0+c2FjX3N0YXRlID09IFNDVFBfQ09NTV9M
T1NUKSB8fAorCSAgICAgICAgICAgIChzYWMtPnNhY19zdGF0ZSA9PSBTQ1RQX0NBTlRfU1RSX0FT
U09DKSkgJiYgKG4gPiAwKSkgeworCQlmcHJpbnRmKGRlYnVnX3RhcmdldCwgIiwgQUJPUlQgPSIp
OworCQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisJCQlmcHJpbnRmKGRlYnVnX3RhcmdldCwg
IiAweCUwMngiLCBzYWMtPnNhY19pbmZvW2ldKTsKKwkJfQorCX0KKwlmcHJpbnRmKGRlYnVnX3Rh
cmdldCwgIi5cbiIpOworCXJldHVybjsKK30KKworc3RhdGljIHZvaWQKK2hhbmRsZV9wZWVyX2Fk
ZHJlc3NfY2hhbmdlX2V2ZW50KHN0cnVjdCBzY3RwX3BhZGRyX2NoYW5nZSAqc3BjKQoreworCWNo
YXIgYWRkcl9idWZbSU5FVDZfQUREUlNUUkxFTl07CisJY29uc3QgY2hhciAqYWRkcjsKKwlzdHJ1
Y3Qgc29ja2FkZHJfaW4gKnNpbjsKKwlzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW42OworCXN0cnVj
dCBzb2NrYWRkcl9jb25uICpzY29ubjsKKworCWlmIChkZWJ1Z190YXJnZXQgPT0gTlVMTCkgewor
CQlkZWJ1Z190YXJnZXQgPSBERUZBVUxUX1RBUkdFVDsKKwl9CisKKwlzd2l0Y2ggKHNwYy0+c3Bj
X2FhZGRyLnNzX2ZhbWlseSkgeworCWNhc2UgQUZfSU5FVDoKKwkJc2luID0gKHN0cnVjdCBzb2Nr
YWRkcl9pbiAqKSZzcGMtPnNwY19hYWRkcjsKKwkJYWRkciA9IGluZXRfbnRvcChBRl9JTkVULCAm
c2luLT5zaW5fYWRkciwgYWRkcl9idWYsIElORVRfQUREUlNUUkxFTik7CisJCWJyZWFrOworCWNh
c2UgQUZfSU5FVDY6CisJCXNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKSZzcGMtPnNwY19h
YWRkcjsKKwkJYWRkciA9IGluZXRfbnRvcChBRl9JTkVUNiwgJnNpbjYtPnNpbjZfYWRkciwgYWRk
cl9idWYsIElORVQ2X0FERFJTVFJMRU4pOworCQlicmVhazsKKwljYXNlIEFGX0NPTk46CisJCXNj
b25uID0gKHN0cnVjdCBzb2NrYWRkcl9jb25uICopJnNwYy0+c3BjX2FhZGRyOworI2lmZGVmIF9X
SU4zMgorCQlpZiAoX3NucHJpbnRmKGFkZHJfYnVmLCBJTkVUNl9BRERSU1RSTEVOLCAiJXAiLCBz
Y29ubi0+c2Nvbm5fYWRkcikgPCAwKSB7CisjZWxzZQorCQlpZiAoc25wcmludGYoYWRkcl9idWYs
IElORVQ2X0FERFJTVFJMRU4sICIlcCIsIHNjb25uLT5zY29ubl9hZGRyKSA8IDApIHsKKyNlbmRp
ZgorCQkJYWRkcl9idWZbMF0gPSAnXDAnOworCQl9CisJCWFkZHIgPSBhZGRyX2J1ZjsKKwkJYnJl
YWs7CisJZGVmYXVsdDoKKyNpZmRlZiBfV0lOMzIKKwkJaWYgKF9zbnByaW50ZihhZGRyX2J1Ziwg
SU5FVDZfQUREUlNUUkxFTiwgIlVua25vd24gZmFtaWx5ICVkIiwgc3BjLT5zcGNfYWFkZHIuc3Nf
ZmFtaWx5KSA8IDApIHsKKyNlbHNlCisJCWlmIChzbnByaW50ZihhZGRyX2J1ZiwgSU5FVDZfQURE
UlNUUkxFTiwgIlVua25vd24gZmFtaWx5ICVkIiwgc3BjLT5zcGNfYWFkZHIuc3NfZmFtaWx5KSA8
IDApIHsKKyNlbmRpZgorCQkJYWRkcl9idWZbMF0gPSAnXDAnOworCQl9CisJCWFkZHIgPSBhZGRy
X2J1ZjsKKwkJYnJlYWs7CisJfQorCWZwcmludGYoZGVidWdfdGFyZ2V0LCAiUGVlciBhZGRyZXNz
ICVzIGlzIG5vdyAiLCBhZGRyKTsKKwlzd2l0Y2ggKHNwYy0+c3BjX3N0YXRlKSB7CisJY2FzZSBT
Q1RQX0FERFJfQVZBSUxBQkxFOgorCQlmcHJpbnRmKGRlYnVnX3RhcmdldCwgIlNDVFBfQUREUl9B
VkFJTEFCTEUiKTsKKwkJYnJlYWs7CisJY2FzZSBTQ1RQX0FERFJfVU5SRUFDSEFCTEU6CisJCWZw
cmludGYoZGVidWdfdGFyZ2V0LCAiU0NUUF9BRERSX1VOUkVBQ0hBQkxFIik7CisJCWJyZWFrOwor
CWNhc2UgU0NUUF9BRERSX1JFTU9WRUQ6CisJCWZwcmludGYoZGVidWdfdGFyZ2V0LCAiU0NUUF9B
RERSX1JFTU9WRUQiKTsKKwkJYnJlYWs7CisJY2FzZSBTQ1RQX0FERFJfQURERUQ6CisJCWZwcmlu
dGYoZGVidWdfdGFyZ2V0LCAiU0NUUF9BRERSX0FEREVEIik7CisJCWJyZWFrOworCWNhc2UgU0NU
UF9BRERSX01BREVfUFJJTToKKwkJZnByaW50ZihkZWJ1Z190YXJnZXQsICJTQ1RQX0FERFJfTUFE
RV9QUklNIik7CisJCWJyZWFrOworCWNhc2UgU0NUUF9BRERSX0NPTkZJUk1FRDoKKwkJZnByaW50
ZihkZWJ1Z190YXJnZXQsICJTQ1RQX0FERFJfQ09ORklSTUVEIik7CisJCWJyZWFrOworCWRlZmF1
bHQ6CisJCWZwcmludGYoZGVidWdfdGFyZ2V0LCAiVU5LTk9XTiIpOworCQlicmVhazsKKwl9CisJ
ZnByaW50ZihkZWJ1Z190YXJnZXQsICIgKGVycm9yID0gMHglMDh4KS5cbiIsIHNwYy0+c3BjX2Vy
cm9yKTsKKwlyZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkCitoYW5kbGVfc2VuZF9mYWlsZWRfZXZl
bnQoc3RydWN0IHNjdHBfc2VuZF9mYWlsZWRfZXZlbnQgKnNzZmUpCit7CisJc2l6ZV90IGksIG47
CisKKwlpZiAoZGVidWdfdGFyZ2V0ID09IE5VTEwpIHsKKwkJZGVidWdfdGFyZ2V0ID0gREVGQVVM
VF9UQVJHRVQ7CisJfQorCisJaWYgKHNzZmUtPnNzZmVfZmxhZ3MgJiBTQ1RQX0RBVEFfVU5TRU5U
KSB7CisJCWZwcmludGYoZGVidWdfdGFyZ2V0LCAiVW5zZW50ICIpOworCX0KKwlpZiAoc3NmZS0+
c3NmZV9mbGFncyAmIFNDVFBfREFUQV9TRU5UKSB7CisJCWZwcmludGYoZGVidWdfdGFyZ2V0LCAi
U2VudCAiKTsKKwl9CisJaWYgKHNzZmUtPnNzZmVfZmxhZ3MgJiB+KFNDVFBfREFUQV9TRU5UIHwg
U0NUUF9EQVRBX1VOU0VOVCkpIHsKKwkJZnByaW50ZihkZWJ1Z190YXJnZXQsICIoZmxhZ3MgPSAl
eCkgIiwgc3NmZS0+c3NmZV9mbGFncyk7CisJfQorCWZwcmludGYoZGVidWdfdGFyZ2V0LCAibWVz
c2FnZSB3aXRoIFBQSUQgPSAldSwgU0lEID0gJXUsIGZsYWdzOiAweCUwNHggZHVlIHRvIGVycm9y
ID0gMHglMDh4IiwKKwkgICAgICAgbnRvaGwoc3NmZS0+c3NmZV9pbmZvLnNuZF9wcGlkKSwgc3Nm
ZS0+c3NmZV9pbmZvLnNuZF9zaWQsCisJICAgICAgIHNzZmUtPnNzZmVfaW5mby5zbmRfZmxhZ3Ms
IHNzZmUtPnNzZmVfZXJyb3IpOworCW4gPSBzc2ZlLT5zc2ZlX2xlbmd0aCAtIHNpemVvZihzdHJ1
Y3Qgc2N0cF9zZW5kX2ZhaWxlZF9ldmVudCk7CisJZm9yIChpID0gMDsgaSA8IG47IGkrKykgewor
CQlmcHJpbnRmKGRlYnVnX3RhcmdldCwgIiAweCUwMngiLCBzc2ZlLT5zc2ZlX2RhdGFbaV0pOwor
CX0KKwlmcHJpbnRmKGRlYnVnX3RhcmdldCwgIi5cbiIpOworCXJldHVybjsKK30KKworc3RhdGlj
IHZvaWQKK2hhbmRsZV9hZGFwdGF0aW9uX2luZGljYXRpb24oc3RydWN0IHNjdHBfYWRhcHRhdGlv
bl9ldmVudCAqc2FpKQoreworCWlmIChkZWJ1Z190YXJnZXQgPT0gTlVMTCkgeworCQlkZWJ1Z190
YXJnZXQgPSBERUZBVUxUX1RBUkdFVDsKKwl9CisKKwlmcHJpbnRmKGRlYnVnX3RhcmdldCwgIkFk
YXB0YXRpb24gaW5kaWNhdGlvbjogJXguXG4iLCBzYWktPiBzYWlfYWRhcHRhdGlvbl9pbmQpOwor
CXJldHVybjsKK30KKworc3RhdGljIHZvaWQKK2hhbmRsZV9zaHV0ZG93bl9ldmVudChzdHJ1Y3Qg
c2N0cF9zaHV0ZG93bl9ldmVudCAqc3NlKQoreworCWlmIChkZWJ1Z190YXJnZXQgPT0gTlVMTCkg
eworCQlkZWJ1Z190YXJnZXQgPSBERUZBVUxUX1RBUkdFVDsKKwl9CisKKwlmcHJpbnRmKGRlYnVn
X3RhcmdldCwgIlNodXRkb3duIGV2ZW50LlxuIik7CisJLyogWFhYOiBub3RpZnkgYWxsIGNoYW5u
ZWxzLiAqLworCXJldHVybjsKK30KKworc3RhdGljIHZvaWQKK2hhbmRsZV9zdHJlYW1fcmVzZXRf
ZXZlbnQoc3RydWN0IHNjdHBfc3RyZWFtX3Jlc2V0X2V2ZW50ICpzdHJyc3QpCit7CisJdWludDMy
X3QgbiwgaTsKKworCWlmIChkZWJ1Z190YXJnZXQgPT0gTlVMTCkgeworCQlkZWJ1Z190YXJnZXQg
PSBERUZBVUxUX1RBUkdFVDsKKwl9CisKKwluID0gKHN0cnJzdC0+c3RycmVzZXRfbGVuZ3RoIC0g
c2l6ZW9mKHN0cnVjdCBzY3RwX3N0cmVhbV9yZXNldF9ldmVudCkpIC8gc2l6ZW9mKHVpbnQxNl90
KTsKKwlmcHJpbnRmKGRlYnVnX3RhcmdldCwgIlN0cmVhbSByZXNldCBldmVudDogZmxhZ3MgPSAl
eCwgIiwgc3RycnN0LT5zdHJyZXNldF9mbGFncyk7CisJaWYgKHN0cnJzdC0+c3RycmVzZXRfZmxh
Z3MgJiBTQ1RQX1NUUkVBTV9SRVNFVF9JTkNPTUlOR19TU04pIHsKKwkJaWYgKHN0cnJzdC0+c3Ry
cmVzZXRfZmxhZ3MgJiBTQ1RQX1NUUkVBTV9SRVNFVF9PVVRHT0lOR19TU04pIHsKKwkJCWZwcmlu
dGYoZGVidWdfdGFyZ2V0LCAiaW5jb21pbmcvIik7CisJCX0KKwkJZnByaW50ZihkZWJ1Z190YXJn
ZXQsICJpbmNvbWluZyAiKTsKKwl9CisJaWYgKHN0cnJzdC0+c3RycmVzZXRfZmxhZ3MgJiBTQ1RQ
X1NUUkVBTV9SRVNFVF9PVVRHT0lOR19TU04pIHsKKwkJZnByaW50ZihkZWJ1Z190YXJnZXQsICJv
dXRnb2luZyAiKTsKKwl9CisJZnByaW50ZihkZWJ1Z190YXJnZXQsICJzdHJlYW0gaWRzID0gIik7
CisJZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworCQlpZiAoaSA+IDApIHsKKwkJCWZwcmludGYo
ZGVidWdfdGFyZ2V0LCAiLCAiKTsKKwkJfQorCQlmcHJpbnRmKGRlYnVnX3RhcmdldCwgIiVkIiwg
c3RycnN0LT5zdHJyZXNldF9zdHJlYW1fbGlzdFtpXSk7CisJfQorCWZwcmludGYoZGVidWdfdGFy
Z2V0LCAiLlxuIik7CisJcmV0dXJuOworfQorCitzdGF0aWMgdm9pZAoraGFuZGxlX3N0cmVhbV9j
aGFuZ2VfZXZlbnQoc3RydWN0IHNjdHBfc3RyZWFtX2NoYW5nZV9ldmVudCAqc3RyY2hnKQorewor
CWlmIChkZWJ1Z190YXJnZXQgPT0gTlVMTCkgeworCQlkZWJ1Z190YXJnZXQgPSBERUZBVUxUX1RB
UkdFVDsKKwl9CisKKwlmcHJpbnRmKGRlYnVnX3RhcmdldCwgIlN0cmVhbSBjaGFuZ2UgZXZlbnQ6
IHN0cmVhbXMgKGluL291dCkgPSAoJXUvJXUpLCBmbGFncyA9ICV4LlxuIiwKKwkgICAgICAgc3Ry
Y2hnLT5zdHJjaGFuZ2VfaW5zdHJtcywgc3RyY2hnLT5zdHJjaGFuZ2Vfb3V0c3RybXMsIHN0cmNo
Zy0+c3RyY2hhbmdlX2ZsYWdzKTsKKwlyZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkCitoYW5kbGVf
cmVtb3RlX2Vycm9yX2V2ZW50KHN0cnVjdCBzY3RwX3JlbW90ZV9lcnJvciAqc3JlKQoreworCXNp
emVfdCBpLCBuOworCisJaWYgKGRlYnVnX3RhcmdldCA9PSBOVUxMKSB7CisJCWRlYnVnX3Rhcmdl
dCA9IERFRkFVTFRfVEFSR0VUOworCX0KKworCW4gPSBzcmUtPnNyZV9sZW5ndGggLSBzaXplb2Yo
c3RydWN0IHNjdHBfcmVtb3RlX2Vycm9yKTsKKwlmcHJpbnRmKGRlYnVnX3RhcmdldCwgIlJlbW90
ZSBFcnJvciAoZXJyb3IgPSAweCUwNHgpOiAiLCBzcmUtPnNyZV9lcnJvcik7CisJZm9yIChpID0g
MDsgaSA8IG47IGkrKykgeworCQlmcHJpbnRmKGRlYnVnX3RhcmdldCwgIiAweCUwMngiLCBzcmUt
PiBzcmVfZGF0YVtpXSk7CisJfQorCWZwcmludGYoZGVidWdfdGFyZ2V0LCAiLlxuIik7CisJcmV0
dXJuOworfQorCit2b2lkCitoYW5kbGVfbm90aWZpY2F0aW9uKHVuaW9uIHNjdHBfbm90aWZpY2F0
aW9uICpub3RpZiwgc2l6ZV90IG4pCit7CisJaWYgKG5vdGlmLT5zbl9oZWFkZXIuc25fbGVuZ3Ro
ICE9ICh1aW50MzJfdCluKSB7CisJCXJldHVybjsKKwl9CisKKwlpZiAoZGVidWdfdGFyZ2V0ID09
IE5VTEwpIHsKKwkJZGVidWdfdGFyZ2V0ID0gREVGQVVMVF9UQVJHRVQ7CisJfQorCisJZnByaW50
ZihkZWJ1Z190YXJnZXQsICJoYW5kbGVfbm90aWZpY2F0aW9uIDogIik7CisKKwlzd2l0Y2ggKG5v
dGlmLT5zbl9oZWFkZXIuc25fdHlwZSkgeworCWNhc2UgU0NUUF9BU1NPQ19DSEFOR0U6CisJCWZw
cmludGYoZGVidWdfdGFyZ2V0LCAiU0NUUF9BU1NPQ19DSEFOR0VcbiIpOworCQloYW5kbGVfYXNz
b2NpYXRpb25fY2hhbmdlX2V2ZW50KCYobm90aWYtPnNuX2Fzc29jX2NoYW5nZSkpOworCQlicmVh
azsKKwljYXNlIFNDVFBfUEVFUl9BRERSX0NIQU5HRToKKwkJZnByaW50ZihkZWJ1Z190YXJnZXQs
ICJTQ1RQX1BFRVJfQUREUl9DSEFOR0VcbiIpOworCQloYW5kbGVfcGVlcl9hZGRyZXNzX2NoYW5n
ZV9ldmVudCgmKG5vdGlmLT5zbl9wYWRkcl9jaGFuZ2UpKTsKKwkJYnJlYWs7CisJY2FzZSBTQ1RQ
X1JFTU9URV9FUlJPUjoKKwkJZnByaW50ZihkZWJ1Z190YXJnZXQsICJTQ1RQX1JFTU9URV9FUlJP
UlxuIik7CisJCWhhbmRsZV9yZW1vdGVfZXJyb3JfZXZlbnQoJihub3RpZi0+c25fcmVtb3RlX2Vy
cm9yKSk7CisJCWJyZWFrOworCWNhc2UgU0NUUF9TSFVURE9XTl9FVkVOVDoKKwkJZnByaW50Zihk
ZWJ1Z190YXJnZXQsICJTQ1RQX1NIVVRET1dOX0VWRU5UXG4iKTsKKwkJaGFuZGxlX3NodXRkb3du
X2V2ZW50KCYobm90aWYtPnNuX3NodXRkb3duX2V2ZW50KSk7CisJCWJyZWFrOworCWNhc2UgU0NU
UF9BREFQVEFUSU9OX0lORElDQVRJT046CisJCWZwcmludGYoZGVidWdfdGFyZ2V0LCAiU0NUUF9B
REFQVEFUSU9OX0lORElDQVRJT05cbiIpOworCQloYW5kbGVfYWRhcHRhdGlvbl9pbmRpY2F0aW9u
KCYobm90aWYtPnNuX2FkYXB0YXRpb25fZXZlbnQpKTsKKwkJYnJlYWs7CisJY2FzZSBTQ1RQX1BB
UlRJQUxfREVMSVZFUllfRVZFTlQ6CisJCWZwcmludGYoZGVidWdfdGFyZ2V0LCAiU0NUUF9QQVJU
SUFMX0RFTElWRVJZX0VWRU5UXG4iKTsKKwkJYnJlYWs7CisJY2FzZSBTQ1RQX0FVVEhFTlRJQ0FU
SU9OX0VWRU5UOgorCQlmcHJpbnRmKGRlYnVnX3RhcmdldCwgIlNDVFBfQVVUSEVOVElDQVRJT05f
RVZFTlRcbiIpOworCQlicmVhazsKKwljYXNlIFNDVFBfU0VOREVSX0RSWV9FVkVOVDoKKwkJZnBy
aW50ZihkZWJ1Z190YXJnZXQsICJTQ1RQX1NFTkRFUl9EUllfRVZFTlRcbiIpOworCQlicmVhazsK
KwljYXNlIFNDVFBfTk9USUZJQ0FUSU9OU19TVE9QUEVEX0VWRU5UOgorCQlmcHJpbnRmKGRlYnVn
X3RhcmdldCwgIlNDVFBfTk9USUZJQ0FUSU9OU19TVE9QUEVEX0VWRU5UXG4iKTsKKwkJYnJlYWs7
CisJY2FzZSBTQ1RQX1NFTkRfRkFJTEVEX0VWRU5UOgorCQlmcHJpbnRmKGRlYnVnX3RhcmdldCwg
IlNDVFBfU0VORF9GQUlMRURfRVZFTlRcbiIpOworCQloYW5kbGVfc2VuZF9mYWlsZWRfZXZlbnQo
Jihub3RpZi0+c25fc2VuZF9mYWlsZWRfZXZlbnQpKTsKKwkJYnJlYWs7CisJY2FzZSBTQ1RQX1NU
UkVBTV9SRVNFVF9FVkVOVDoKKwkJZnByaW50ZihkZWJ1Z190YXJnZXQsICJTQ1RQX1NUUkVBTV9S
RVNFVF9FVkVOVFxuIik7CisJCWhhbmRsZV9zdHJlYW1fcmVzZXRfZXZlbnQoJihub3RpZi0+c25f
c3RycmVzZXRfZXZlbnQpKTsKKwkJYnJlYWs7CisJY2FzZSBTQ1RQX0FTU09DX1JFU0VUX0VWRU5U
OgorCQlmcHJpbnRmKGRlYnVnX3RhcmdldCwgIlNDVFBfQVNTT0NfUkVTRVRfRVZFTlRcbiIpOwor
CQlicmVhazsKKwljYXNlIFNDVFBfU1RSRUFNX0NIQU5HRV9FVkVOVDoKKwkJZnByaW50ZihkZWJ1
Z190YXJnZXQsICJTQ1RQX1NUUkVBTV9DSEFOR0VfRVZFTlRcbiIpOworCQloYW5kbGVfc3RyZWFt
X2NoYW5nZV9ldmVudCgmKG5vdGlmLT5zbl9zdHJjaGFuZ2VfZXZlbnQpKTsKKwkJYnJlYWs7CisJ
ZGVmYXVsdDoKKwkJYnJlYWs7CisJfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMv
cHJvZ3JhbXNfaGVscGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9wcm9ncmFtc19oZWxwZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTgwZDc1ZTRiMThmYThiNDMyOGFkYWY0ZTljOWM3MjkzOTZmYjQ0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvcHJvZ3JhbXNfaGVscGVyLmgKQEAgLTAs
MCArMSw4NyBAQAorLyotCisgKiBDb3B5cmlnaHQgKGMpIDIwMTkgRmVsaXggV2VpbnJhbmsKKyAq
CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQK
KyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
CisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgX19QUk9HUkFNU19IRUxQRVJf
SF9fCisjZGVmaW5lIF9fUFJPR1JBTVNfSEVMUEVSX0hfXworCisjaWZuZGVmIF9XSU4zMgorI2Rl
ZmluZSBTQ1RQX1BBQ0tFRCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKQorI2Vsc2UKKyNwcmFnbWEg
cGFjayAocHVzaCwgMSkKKyNkZWZpbmUgU0NUUF9QQUNLRUQKKyNlbmRpZgorCitzdHJ1Y3Qgc2N0
cF9jaHVua19oZWFkZXIgeworCXVpbnQ4X3QgY2h1bmtfdHlwZTsJLyogY2h1bmsgdHlwZSAqLwor
CXVpbnQ4X3QgY2h1bmtfZmxhZ3M7CS8qIGNodW5rIGZsYWdzICovCisJdWludDE2X3QgY2h1bmtf
bGVuZ3RoOwkvKiBjaHVuayBsZW5ndGggKi8KKwkvKiBvcHRpb25hbCBwYXJhbXMgZm9sbG93ICov
Cit9IFNDVFBfUEFDS0VEOworCitzdHJ1Y3Qgc2N0cF9pbml0X2NodW5rIHsKKwlzdHJ1Y3Qgc2N0
cF9jaHVua19oZWFkZXIgY2g7CisJdWludDMyX3QgaW5pdGlhdGVfdGFnOwkvKiBpbml0aWF0ZSB0
YWcgKi8KKwl1aW50MzJfdCBhX3J3bmQ7CS8qIGFfcnduZCAqLworCXVpbnQxNl90IG51bV9vdXRi
b3VuZF9zdHJlYW1zOwkvKiBPUyAqLworCXVpbnQxNl90IG51bV9pbmJvdW5kX3N0cmVhbXM7CS8q
IE1JUyAqLworCXVpbnQzMl90IGluaXRpYWxfdHNuOwkvKiBJLVRTTiAqLworCS8qIG9wdGlvbmFs
IHBhcmFtJ3MgZm9sbG93ICovCit9IFNDVFBfUEFDS0VEOworCisjaWZkZWYgX1dJTjMyCisjcHJh
Z21hIHBhY2socG9wKQorI2VuZGlmCisKKyN1bmRlZiBTQ1RQX1BBQ0tFRAorCit2b2lkCitoYW5k
bGVfbm90aWZpY2F0aW9uKHVuaW9uIHNjdHBfbm90aWZpY2F0aW9uICpub3RpZiwgc2l6ZV90IG4p
OworI2lmbmRlZiB0aW1lcnN1YgorI2RlZmluZSB0aW1lcnN1Yih0dnAsIHV2cCwgdnZwKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCWRvIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJCSh2dnApLT50dl9zZWMgPSAo
dHZwKS0+dHZfc2VjIC0gKHV2cCktPnR2X3NlYzsgICAgXAorCQkodnZwKS0+dHZfdXNlYyA9ICh0
dnApLT50dl91c2VjIC0gKHV2cCktPnR2X3VzZWM7IFwKKwkJaWYgKCh2dnApLT50dl91c2VjIDwg
MCkgeyAgICAgICAgICAgICAgICAgICAgICAgICBcCisJCQkodnZwKS0+dHZfc2VjLS07ICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisJCQkodnZwKS0+dHZfdXNlYyArPSAxMDAwMDAwOyAgICAg
ICAgICAgICAgICBcCisJCX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorCX0gd2hpbGUgKDApCisjZW5kaWYKKwordm9pZAorZGVidWdfcHJpbnRmKGNv
bnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKKwordm9pZAorZGVidWdfcHJpbnRmX2NsZWFuKGNvbnN0
IGNoYXIgKmZvcm1hdCwgLi4uKTsKKwordm9pZAorZGVidWdfcHJpbnRmX3N0YWNrKGNvbnN0IGNo
YXIgKmZvcm1hdCwgLi4uKTsKKwordm9pZAorZGVidWdfc2V0X3RhcmdldChGSUxFICpmcCk7CisK
KyNlbmRpZiAvKiBfX1BST0dSQU1TX0hFTFBFUl9IX18gKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L3Byb2dyYW1zL3J0Y3dlYi5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvcnRjd2ViLmMKaW5kZXggNWM1
OTA4ZDg1NTY2OTAyYTBkZGQ0ODdmOGFhZjkzN2JhNWMwMjk0MC4uOTE1YjllZThjZGQyZTliZTcz
MmY3ZGIyZTg2NmUwOTA3YjFiNTczZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvcnRj
d2ViLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvcnRjd2ViLmMKQEAgLTU2LDYgKzU2LDcgQEAK
ICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPHVzcnNj
dHAuaD4KKyNpbmNsdWRlICJwcm9ncmFtc19oZWxwZXIuaCIKIAogI2RlZmluZSBMSU5FX0xFTkdU
SCAoMTAyNCkKICNkZWZpbmUgQlVGRkVSX1NJWkUgKDE8PDE2KQpAQCAtMTE5LDYgKzEyMCwxMCBA
QCBzdHJ1Y3QgcGVlcl9jb25uZWN0aW9uIHsKICNkZWZpbmUgU0NUUF9QQUNLRUQKICNlbmRpZgog
CisjaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fTUlOR1czMl9fKQorI3ByYWdtYSB3
YXJuaW5nKCBwdXNoICkKKyNwcmFnbWEgd2FybmluZyggZGlzYWJsZSA6IDQyMDAgKQorI2VuZGlm
IC8qIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX01JTkdXMzJfXykgKi8KIHN0cnVjdCBy
dGN3ZWJfZGF0YWNoYW5uZWxfb3Blbl9yZXF1ZXN0IHsKIAl1aW50OF90IG1zZ190eXBlOyAvKiBE
QVRBX0NIQU5ORUxfT1BFTl9SRVFVRVNUICovCiAJdWludDhfdCBjaGFubmVsX3R5cGU7CkBAIC0x
MjcsNiArMTMyLDkgQEAgc3RydWN0IHJ0Y3dlYl9kYXRhY2hhbm5lbF9vcGVuX3JlcXVlc3Qgewog
CWludDE2X3QgcHJpb3JpdHk7CiAJY2hhciBsYWJlbFtdOwogfSBTQ1RQX1BBQ0tFRDsKKyNpZiBk
ZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19NSU5HVzMyX18pCisjcHJhZ21hIHdhcm5pbmco
IHBvcCApCisjZW5kaWYgLyogZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fTUlOR1czMl9f
KSAqLwogCiBzdHJ1Y3QgcnRjd2ViX2RhdGFjaGFubmVsX29wZW5fcmVzcG9uc2UgewogCXVpbnQ4
X3QgIG1zZ190eXBlOyAvKiBEQVRBX0NIQU5ORUxfT1BFTl9SRVNQT05TRSAqLwpAQCAtNjExLDcg
KzYxOSw3IEBAIGhhbmRsZV9vcGVuX3JlcXVlc3RfbWVzc2FnZShzdHJ1Y3QgcGVlcl9jb25uZWN0
aW9uICpwYywKIAl1aW50OF90IHVub3JkZXJlZDsKIAogCWlmICgoY2hhbm5lbCA9IGZpbmRfY2hh
bm5lbF9ieV9pX3N0cmVhbShwYywgaV9zdHJlYW0pKSkgewotCQlwcmludGYoImhhbmRsZV9vcGVu
X3JlcXVlc3RfbWVzc2FnZTogY2hhbm5lbCAlZCBpcyBpbiBzdGF0ZSAlZCBpbnN0ZWFkIG9mIENM
T1NFRC5cbiIsCisJCXByaW50ZigiaGFuZGxlX29wZW5fcmVxdWVzdF9tZXNzYWdlOiBjaGFubmVs
ICV1IGlzIGluIHN0YXRlICV1IGluc3RlYWQgb2YgQ0xPU0VELlxuIiwKIAkJICAgICAgIGNoYW5u
ZWwtPmlkLCBjaGFubmVsLT5zdGF0ZSk7CiAJCS8qIFhYWDogc29tZSBlcnJvciBoYW5kbGluZyAq
LwogCQlyZXR1cm47CkBAIC02OTksMTIgKzcwNywxMiBAQCBoYW5kbGVfb3Blbl9yZXNwb25zZV9t
ZXNzYWdlKHN0cnVjdCBwZWVyX2Nvbm5lY3Rpb24gKnBjLAogCX0KIAlpZiAoY2hhbm5lbC0+c3Rh
dGUgIT0gREFUQV9DSEFOTkVMX0NPTk5FQ1RJTkcpIHsKIAkJLyogWFhYOiBpbXByb3ZlIGVycm9y
IGhhbmRsaW5nICovCi0JCXByaW50ZigiaGFuZGxlX29wZW5fcmVzcG9uc2VfbWVzc2FnZTogQ2hh
bm5lbCB3aXRoIGlkICVkIGZvciBvdXRnb2luZyBzdGVhbSAlZCBpcyBpbiBzdGF0ZSAlZC5cbiIs
IGNoYW5uZWwtPmlkLCBvX3N0cmVhbSwgY2hhbm5lbC0+c3RhdGUpOworCQlwcmludGYoImhhbmRs
ZV9vcGVuX3Jlc3BvbnNlX21lc3NhZ2U6IENoYW5uZWwgd2l0aCBpZCAldSBmb3Igb3V0Z29pbmcg
c3RlYW0gJXUgaXMgaW4gc3RhdGUgJXUuXG4iLCBjaGFubmVsLT5pZCwgb19zdHJlYW0sIGNoYW5u
ZWwtPnN0YXRlKTsKIAkJcmV0dXJuOwogCX0KIAlpZiAoZmluZF9jaGFubmVsX2J5X2lfc3RyZWFt
KHBjLCBpX3N0cmVhbSkpIHsKIAkJLyogWFhYOiBpbXByb3ZlIGVycm9yIGhhbmRsaW5nICovCi0J
CXByaW50ZigiaGFuZGxlX29wZW5fcmVzcG9uc2VfbWVzc2FnZTogQ2hhbm5lbCBjb2xsaXNpb24g
Zm9yIGNoYW5uZWwgd2l0aCBpZCAlZCBhbmQgc3RyZWFtcyAoaW4vb3V0KSA9ICglZC8lZCkuXG4i
LCBjaGFubmVsLT5pZCwgaV9zdHJlYW0sIG9fc3RyZWFtKTsKKwkJcHJpbnRmKCJoYW5kbGVfb3Bl
bl9yZXNwb25zZV9tZXNzYWdlOiBDaGFubmVsIGNvbGxpc2lvbiBmb3IgY2hhbm5lbCB3aXRoIGlk
ICV1IGFuZCBzdHJlYW1zIChpbi9vdXQpID0gKCV1LyV1KS5cbiIsIGNoYW5uZWwtPmlkLCBpX3N0
cmVhbSwgb19zdHJlYW0pOwogCQlyZXR1cm47CiAJfQogCWNoYW5uZWwtPmlfc3RyZWFtID0gaV9z
dHJlYW07CkBAIC03NzAsNyArNzc4LDcgQEAgaGFuZGxlX2RhdGFfbWVzc2FnZShzdHJ1Y3QgcGVl
cl9jb25uZWN0aW9uICpwYywKIAl9IGVsc2UgewogCQkvKiBBc3N1bWluZyBEQVRBX0NIQU5ORUxf
UFBJRF9ET01TVFJJTkcgKi8KIAkJLyogWFhYOiBQcm90ZWN0IGZvciBub24gMCB0ZXJtaW5hdGVk
IGJ1ZmZlciAqLwotCQlwcmludGYoIk1lc3NhZ2UgcmVjZWl2ZWQgb2YgbGVuZ3RoICV6dSBvbiBj
aGFubmVsIHdpdGggaWQgJWQ6ICUuKnNcbiIsCisJCXByaW50ZigiTWVzc2FnZSByZWNlaXZlZCBv
ZiBsZW5ndGggJXp1IG9uIGNoYW5uZWwgd2l0aCBpZCAldTogJS4qc1xuIiwKIAkJICAgICAgIGxl
bmd0aCwgY2hhbm5lbC0+aWQsIChpbnQpbGVuZ3RoLCBidWZmZXIpOwogCX0KIAlyZXR1cm47CkBA
IC04NzksNiArODg3LDkgQEAgaGFuZGxlX2Fzc29jaWF0aW9uX2NoYW5nZV9ldmVudChzdHJ1Y3Qg
c2N0cF9hc3NvY19jaGFuZ2UgKnNhYykKIAkJCWNhc2UgU0NUUF9BU1NPQ19TVVBQT1JUU19SRV9D
T05GSUc6CiAJCQkJcHJpbnRmKCIgUkUtQ09ORklHIik7CiAJCQkJYnJlYWs7CisJCQljYXNlIFND
VFBfQVNTT0NfU1VQUE9SVFNfSU5URVJMRUFWSU5HOgorCQkJCXByaW50ZigiIElOVEVSTEVBVklO
RyIpOworCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKIAkJCQlwcmludGYoIiBVTktOT1dOKDB4JTAy
eCkiLCBzYWMtPnNhY19pbmZvW2ldKTsKIAkJCQlicmVhazsKQEAgLTkxOSwxMCArOTMwLDEyIEBA
IGhhbmRsZV9wZWVyX2FkZHJlc3NfY2hhbmdlX2V2ZW50KHN0cnVjdCBzY3RwX3BhZGRyX2NoYW5n
ZSAqc3BjKQogCQlicmVhazsKIAlkZWZhdWx0OgogI2lmZGVmIF9XSU4zMgotCQlfc25wcmludGYo
YWRkcl9idWYsIElORVQ2X0FERFJTVFJMRU4sICJVbmtub3duIGZhbWlseSAlZCIsIHNwYy0+c3Bj
X2FhZGRyLnNzX2ZhbWlseSk7CisJCWlmIChfc25wcmludGYoYWRkcl9idWYsIElORVQ2X0FERFJT
VFJMRU4sICJVbmtub3duIGZhbWlseSAlZCIsIHNwYy0+c3BjX2FhZGRyLnNzX2ZhbWlseSkgPCAw
KSB7CiAjZWxzZQotCQlzbnByaW50ZihhZGRyX2J1ZiwgSU5FVDZfQUREUlNUUkxFTiwgIlVua25v
d24gZmFtaWx5ICVkIiwgc3BjLT5zcGNfYWFkZHIuc3NfZmFtaWx5KTsKKwkJaWYgKHNucHJpbnRm
KGFkZHJfYnVmLCBJTkVUNl9BRERSU1RSTEVOLCAiVW5rbm93biBmYW1pbHkgJWQiLCBzcGMtPnNw
Y19hYWRkci5zc19mYW1pbHkpIDwgMCkgewogI2VuZGlmCisJCQlhZGRyX2J1ZlswXSA9ICdcMCc7
CisJCX0KIAkJYWRkciA9IGFkZHJfYnVmOwogCQlicmVhazsKIAl9CkBAIC0xMTIzLDcgKzExMzYs
NyBAQCBoYW5kbGVfc2VuZF9mYWlsZWRfZXZlbnQoc3RydWN0IHNjdHBfc2VuZF9mYWlsZWRfZXZl
bnQgKnNzZmUpCiB9CiAKIHN0YXRpYyB2b2lkCi1oYW5kbGVfbm90aWZpY2F0aW9uKHN0cnVjdCBw
ZWVyX2Nvbm5lY3Rpb24gKnBjLCB1bmlvbiBzY3RwX25vdGlmaWNhdGlvbiAqbm90aWYsIHNpemVf
dCBuKQoraGFuZGxlX25vdGlmaWNhdGlvbl9ydGN3ZWIoc3RydWN0IHBlZXJfY29ubmVjdGlvbiAq
cGMsIHVuaW9uIHNjdHBfbm90aWZpY2F0aW9uICpub3RpZiwgc2l6ZV90IG4pCiB7CiAJaWYgKG5v
dGlmLT5zbl9oZWFkZXIuc25fbGVuZ3RoICE9ICh1aW50MzJfdCluKSB7CiAJCXJldHVybjsKQEAg
LTEyNjgsNyArMTI4MSw3IEBAIHByaW50X3N0YXR1cyhzdHJ1Y3QgcGVlcl9jb25uZWN0aW9uICpw
YykKIAkJCXByaW50ZigidW5yZWxpYWJsZSAobWF4LiAldSBydHgpLlxuIiwgY2hhbm5lbC0+cHJf
dmFsdWUpOwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6Ci0JCQlwcmludGYoInVua293biBwb2xpY3kg
JXUuXG4iLCBjaGFubmVsLT5wcl9wb2xpY3kpOworCQkJcHJpbnRmKCJ1bmtub3duIHBvbGljeSAl
dS5cbiIsIGNoYW5uZWwtPnByX3BvbGljeSk7CiAJCQlicmVhazsKIAkJfQogCX0KQEAgLTEyODUs
NyArMTI5OCw3IEBAIHJlY2VpdmVfY2Ioc3RydWN0IHNvY2tldCAqc29jaywgdW5pb24gc2N0cF9z
b2Nrc3RvcmUgYWRkciwgdm9pZCAqZGF0YSwKIAlpZiAoZGF0YSkgewogCQlsb2NrX3BlZXJfY29u
bmVjdGlvbihwYyk7CiAJCWlmIChmbGFncyAmIE1TR19OT1RJRklDQVRJT04pIHsKLQkJCWhhbmRs
ZV9ub3RpZmljYXRpb24ocGMsICh1bmlvbiBzY3RwX25vdGlmaWNhdGlvbiAqKWRhdGEsIGRhdGFs
ZW4pOworCQkJaGFuZGxlX25vdGlmaWNhdGlvbl9ydGN3ZWIocGMsICh1bmlvbiBzY3RwX25vdGlm
aWNhdGlvbiAqKWRhdGEsIGRhdGFsZW4pOwogCQl9IGVsc2UgewogCQkJaGFuZGxlX21lc3NhZ2Uo
cGMsIGRhdGEsIGRhdGFsZW4sIG50b2hsKHJjdi5yY3ZfcHBpZCksIHJjdi5yY3Zfc2lkKTsKIAkJ
fQpAQCAtMTI5NCwxNiArMTMwNyw2IEBAIHJlY2VpdmVfY2Ioc3RydWN0IHNvY2tldCAqc29jaywg
dW5pb24gc2N0cF9zb2Nrc3RvcmUgYWRkciwgdm9pZCAqZGF0YSwKIAlyZXR1cm4gKDEpOwogfQog
Ci12b2lkCi1kZWJ1Z19wcmludGYoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCi17Ci0JdmFfbGlz
dCBhcDsKLQotCXZhX3N0YXJ0KGFwLCBmb3JtYXQpOwotCXZwcmludGYoZm9ybWF0LCBhcCk7Ci0J
dmFfZW5kKGFwKTsKLX0KLQogaW50CiBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiB7CkBA
IC0xMzMwLDE0ICsxMzMzLDE1IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAljaGFy
IGFkZHJidWZbSU5FVF9BRERSU1RSTEVOXTsKIAogCWlmIChhcmdjID4gMSkgewotCQl1c3JzY3Rw
X2luaXQoYXRvaShhcmd2WzFdKSwgTlVMTCwgZGVidWdfcHJpbnRmKTsKKwkJdXNyc2N0cF9pbml0
KGF0b2koYXJndlsxXSksIE5VTEwsIGRlYnVnX3ByaW50Zl9zdGFjayk7CiAJfSBlbHNlIHsKLQkJ
dXNyc2N0cF9pbml0KDk4OTksIE5VTEwsIGRlYnVnX3ByaW50Zik7CisJCXVzcnNjdHBfaW5pdCg5
ODk5LCBOVUxMLCBkZWJ1Z19wcmludGZfc3RhY2spOwogCX0KICNpZmRlZiBTQ1RQX0RFQlVHCiAJ
dXNyc2N0cF9zeXNjdGxfc2V0X3NjdHBfZGVidWdfb24oU0NUUF9ERUJVR19OT05FKTsKICNlbmRp
ZgogCXVzcnNjdHBfc3lzY3RsX3NldF9zY3RwX2JsYWNraG9sZSgyKTsKKwl1c3JzY3RwX3N5c2N0
bF9zZXRfc2N0cF9ub19jc3VtX29uX2xvb3BiYWNrKDApOwogCiAJaWYgKChzb2NrID0gdXNyc2N0
cF9zb2NrZXQoQUZfSU5FVCwgU09DS19TVFJFQU0sIElQUFJPVE9fU0NUUCwgcmVjZWl2ZV9jYiwg
TlVMTCwgMCwgJnBlZXJfY29ubmVjdGlvbikpID09IE5VTEwpIHsKIAkJcGVycm9yKCJzb2NrZXQi
KTsKQEAgLTE0MzQsNyArMTQzOCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAl1
bmxvY2tfcGVlcl9jb25uZWN0aW9uKCZwZWVyX2Nvbm5lY3Rpb24pOwogCiAJZm9yICg7Oykgewot
I2lmZGVmIF9XSU4zMgorI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX01JTkdXMzJf
XykKIAkJaWYgKGdldHNfcyhsaW5lLCBMSU5FX0xFTkdUSCkgPT0gTlVMTCkgewogI2Vsc2UKIAkJ
aWYgKGZnZXRzKGxpbmUsIExJTkVfTEVOR1RILCBzdGRpbikgPT0gTlVMTCkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvcHJvZ3JhbXMvc3RfY2xpZW50LmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9zdF9j
bGllbnQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41ZTJmODdjOGQ2OTczNDI0OWU3NGU4MTY3MTI1MjZjYzkwNmIz
NTc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvc3RfY2xpZW50LmMKQEAg
LTAsMCArMSwzODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMyBNaWNoYWVsIFR1
ZXhlbgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTUgQ29saW4gQ2F1Z2hpZQorICogQ29weXJp
Z2h0IChDKSAyMDExLTIwMTkgRmVsaXggV2VpbnJhbmsKKyAqCisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgcHJvamVjdCBub3Ig
dGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUFJPSkVDVCBBTkQgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBE
SVNDTEFJTUVELglJTiBOTyBFVkVOVCBTSEFMTCBUSEUgUFJPSkVDVCBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAq
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKy8qCisgKiBVc2FnZTogc3Rf
Y2xpZW50IGxvY2FsX2FkZHIgbG9jYWxfcG9ydCByZW1vdGVfYWRkciByZW1vdGVfcG9ydCByZW1v
dGVfc2N0cF9wb3J0CisgKi8KKworI2lmZGVmIF9XSU4zMgorI2RlZmluZSBfQ1JUX1NFQ1VSRV9O
T19XQVJOSU5HUworI2VuZGlmCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIu
aD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlIDxz
eXMvdHlwZXMuaD4KKyNpZm5kZWYgX1dJTjMyCisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2lu
Y2x1ZGUgPHN5cy90aW1lLmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2luY2x1ZGUgPGFy
cGEvaW5ldC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2lu
Y2x1ZGUgPHVuaXN0ZC5oPgorI2Vsc2UKKyNpbmNsdWRlIDx3aW5zb2NrMi5oPgorI2luY2x1ZGUg
PHdzMnRjcGlwLmg+CisjZW5kaWYKKyNpbmNsdWRlIDx1c3JzY3RwLmg+CisjaW5jbHVkZSAicHJv
Z3JhbXNfaGVscGVyLmgiCisKKyNkZWZpbmUgTUFYX1BBQ0tFVF9TSVpFICgxPDwxNikKKyNkZWZp
bmUgQlVGRkVSX1NJWkUgODAKKyNkZWZpbmUgRElTQ0FSRF9QUElEIDM5CisjZGVmaW5lIEhUVFBf
UFBJRCA2MworCisjZGVmaW5lIFRJTUVSX0lOVEVSVkFMX01TRUNTIDEwCisKK3N0YXRpYyBpbnQg
Y29ubmVjdGluZyA9IDA7CitzdGF0aWMgaW50IGZpbmlzaCA9IDA7CisKK3N0YXRpYyB1bnNpZ25l
ZCBpbnQKK2dldF9taWxsaXNlY29uZHNfY291bnQodm9pZCkKK3sKKyNpZmRlZiBfV0lOMzIKKwkv
LyBvYnRhaW4gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBzaW5jZSBzeXN0ZW0gc3RhcnRlZAorCXJl
dHVybiBHZXRUaWNrQ291bnQoKTsKKyNlbHNlCisJc3RydWN0IHRpbWV2YWwgdHY7CisJdW5zaWdu
ZWQgaW50IG1pbGxpc2Vjb25kczsKKworCWdldHRpbWVvZmRheSgmdHYsIE5VTEwpOyAvKiBnZXQg
Y3VycmVudCB0aW1lICovCisJbWlsbGlzZWNvbmRzID0gdHYudHZfc2VjKjEwMDBMTCArIHR2LnR2
X3VzZWMvMTAwMDsgLyogY2FsY3VsYXRlIG1pbGxpc2Vjb25kcyAqLworCXJldHVybiAobWlsbGlz
ZWNvbmRzKTsKKyNlbmRpZgorfQorCitzdGF0aWMgdm9pZAoraGFuZGxlX2V2ZW50cyhpbnQgc29j
aywgc3RydWN0IHNvY2tldCogcywgdm9pZCogc2Nvbm5fYWRkcikKK3sKKwljaGFyICpkdW1wX2J1
ZjsKKwlzc2l6ZV90IGxlbmd0aDsKKwljaGFyIGJ1ZltNQVhfUEFDS0VUX1NJWkVdOworCisJZmRf
c2V0IHJmZHM7CisJc3RydWN0IHRpbWV2YWwgdHY7CisKKwl1bnNpZ25lZCBuZXh0X2ZpcmVfdGlt
ZSA9IGdldF9taWxsaXNlY29uZHNfY291bnQoKTsKKwl1bnNpZ25lZCBsYXN0X2ZpcmVfdGltZSA9
IG5leHRfZmlyZV90aW1lOworCXVuc2lnbmVkIG5vdyA9IGdldF9taWxsaXNlY29uZHNfY291bnQo
KTsKKwlpbnQgd2FpdF90aW1lOworCisJd2hpbGUgKCFmaW5pc2gpIHsKKwkJaWYgKChpbnQpIChu
b3cgLSBuZXh0X2ZpcmVfdGltZSkgPiAwKSB7CisJCQl1c3JzY3RwX2hhbmRsZV90aW1lcnMobm93
IC0gbGFzdF9maXJlX3RpbWUpOworCQkJbGFzdF9maXJlX3RpbWUgPSBub3c7CisJCQluZXh0X2Zp
cmVfdGltZSA9IG5vdyArIFRJTUVSX0lOVEVSVkFMX01TRUNTOworCQl9CisKKwkJd2FpdF90aW1l
ID0gbmV4dF9maXJlX3RpbWUgLSBub3c7CisJCXR2LnR2X3NlYyA9IHdhaXRfdGltZSAvIDEwMDA7
CisJCXR2LnR2X3VzZWMgPSAod2FpdF90aW1lICUgMTAwMCkgKiAxMDAwOworCisJCUZEX1pFUk8o
JnJmZHMpOworCQlGRF9TRVQoc29jaywgJnJmZHMpOworCisJCXNlbGVjdChzb2NrICsgMSwgJnJm
ZHMsIE5VTEwsIE5VTEwsICZ0dik7CisKKwkJaWYgKEZEX0lTU0VUKHNvY2ssICZyZmRzKSkgewor
CQkJbGVuZ3RoID0gcmVjdihzb2NrLCBidWYsIE1BWF9QQUNLRVRfU0laRSwgMCk7CisKKwkJCWlm
IChsZW5ndGggPiAwKSB7CisJCQkJaWYgKChkdW1wX2J1ZiA9IHVzcnNjdHBfZHVtcHBhY2tldChi
dWYsIChzaXplX3QpbGVuZ3RoLCBTQ1RQX0RVTVBfSU5CT1VORCkpICE9IE5VTEwpIHsKKwkJCQkJ
ZnByaW50ZihzdGRlcnIsICIlcyIsIGR1bXBfYnVmKTsKKwkJCQkJdXNyc2N0cF9mcmVlZHVtcGJ1
ZmZlcihkdW1wX2J1Zik7CisJCQkJfQorCQkJCXVzcnNjdHBfY29ubmlucHV0KHNjb25uX2FkZHIs
IGJ1ZiwgKHNpemVfdClsZW5ndGgsIDApOworCQkJfQorCQl9CisJfQorfQorCitzdGF0aWMgdm9p
ZAorb25fY29ubmVjdChzdHJ1Y3Qgc29ja2V0KiBzKQoreworCXN0cnVjdCBzY3RwX3NuZGluZm8g
c25kaW5mbzsKKwljaGFyIGJ1ZmZlcltCVUZGRVJfU0laRV07CisJaW50IGJ1ZmZlcmxlbjsKKwor
CS8qIG1lbXNldChidWZmZXIsICdBJywgQlVGRkVSX1NJWkUpOyAqLworCS8qIGJ1ZmZlcmxlbiA9
IEJVRkZFUl9TSVpFOyAqLworCWJ1ZmZlcmxlbiA9IHNucHJpbnRmKGJ1ZmZlciwgQlVGRkVSX1NJ
WkUsICJHRVQgLyBIVFRQLzEuMFxyXG5Vc2VyLWFnZW50OiBsaWJ1c3JzY3RwXHJcbkNvbm5lY3Rp
b246IGNsb3NlXHJcblxyXG4iKTsKKwlpZiAoYnVmZmVybGVuIDwgMCkgeworCQlyZXR1cm47CisJ
fQorCXNuZGluZm8uc25kX3NpZCA9IDA7CisJc25kaW5mby5zbmRfZmxhZ3MgPSAwOworCXNuZGlu
Zm8uc25kX3BwaWQgPSBodG9ubChESVNDQVJEX1BQSUQpOworCXNuZGluZm8uc25kX2NvbnRleHQg
PSAwOworCXNuZGluZm8uc25kX2Fzc29jX2lkID0gMDsKKwlpZiAodXNyc2N0cF9zZW5kdihzLCBi
dWZmZXIsIGJ1ZmZlcmxlbiwgTlVMTCwgMCwgKHZvaWQgKikmc25kaW5mbywKKwkgICAgICAgICAg
ICAgICAgICAoc29ja2xlbl90KXNpemVvZihzdHJ1Y3Qgc2N0cF9zbmRpbmZvKSwgU0NUUF9TRU5E
Vl9TTkRJTkZPLCAwKSA8IDApIHsKKwkJcGVycm9yKCJ1c3JzY3RwX3NlbmR2Iik7CisJfQorfQor
CitzdGF0aWMgdm9pZAorb25fc29ja2V0X3JlYWRhYmxlKHN0cnVjdCBzb2NrZXQqIHMpIHsKKwlj
aGFyIGJ1ZmZlcltCVUZGRVJfU0laRV07CisJdW5pb24gc2N0cF9zb2Nrc3RvcmUgYWRkcjsKKwlz
b2NrbGVuX3QgZnJvbWxlbiA9IHNpemVvZihhZGRyKTsKKwlzdHJ1Y3Qgc2N0cF9yY3ZpbmZvIHJj
dl9pbmZvOworCXNvY2tsZW5fdCBpbmZvbGVuID0gc2l6ZW9mKHJjdl9pbmZvKTsKKwl1bnNpZ25l
ZCBpbnQgaW5mb3R5cGUgPSAwOworCWludCBmbGFncyA9IDA7CisJc3NpemVfdCByZXR2YWw7CisK
KwkvKiBLZWVwIHJlYWRpbmcgdW50aWwgdGhlcmUgaXMgbm8gbW9yZSBkYXRhICovCisJZm9yICg7
OykgeworCQlyZXR2YWwgPSB1c3JzY3RwX3JlY3Z2KHMsIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciks
IChzdHJ1Y3Qgc29ja2FkZHIqKSAmYWRkciwKKwkJICAgICAgICAgICAgICAgICAgICAgICAmZnJv
bWxlbiwgJnJjdl9pbmZvLCAmaW5mb2xlbiwgJmluZm90eXBlLCAmZmxhZ3MpOworCisJCWlmIChy
ZXR2YWwgPCAwKSB7CisJCQlpZiAoZXJybm8gIT0gRVdPVUxEQkxPQ0spIHsKKwkJCQlwZXJyb3Io
InVzcnNjdHBfcmVjdnYiKTsKKwkJCQlmaW5pc2ggPSAxOworCQkJfQorCQkJcmV0dXJuOworCQl9
IGVsc2UgaWYgKHJldHZhbCA9PSAwKSB7CisJCQlwcmludGYoInNvY2tldCB3YXMgZGlzY29ubmVj
dGVkXG4iKTsKKwkJCWZpbmlzaCA9IDE7CisJCQlyZXR1cm47CisJCX0KKworCQlpZiAoZmxhZ3Mg
JiBNU0dfTk9USUZJQ0FUSU9OKSB7CisJCQlwcmludGYoIk5vdGlmaWNhdGlvbiBvZiBsZW5ndGgg
JWQgcmVjZWl2ZWQuXG4iLCAoaW50KXJldHZhbCk7CisJCX0gZWxzZSB7CisJCQlwcmludGYoIk1z
ZyBvZiBsZW5ndGggJWQgcmVjZWl2ZWQgdmlhICVwOiV1IG9uIHN0cmVhbSAlZCB3aXRoIFNTTiAl
dSBhbmQgVFNOICV1LCBQUElEICV1LCBjb250ZXh0ICV1LlxuIiwKKwkJCSAgICAgICAoaW50KXJl
dHZhbCwKKwkJCSAgICAgICBhZGRyLnNjb25uLnNjb25uX2FkZHIsCisJCQkgICAgICAgbnRvaHMo
YWRkci5zY29ubi5zY29ubl9wb3J0KSwKKwkJCSAgICAgICByY3ZfaW5mby5yY3Zfc2lkLAorCQkJ
ICAgICAgIHJjdl9pbmZvLnJjdl9zc24sCisJCQkgICAgICAgcmN2X2luZm8ucmN2X3RzbiwKKwkJ
CSAgICAgICBudG9obChyY3ZfaW5mby5yY3ZfcHBpZCksCisJCQkgICAgICAgcmN2X2luZm8ucmN2
X2NvbnRleHQpOworCQl9CisJfQorfQorCitzdGF0aWMgdm9pZAoraGFuZGxlX3VwY2FsbChzdHJ1
Y3Qgc29ja2V0ICpzLCB2b2lkICphcmcsIGludCBmbGFncykKK3sKKwlpbnQgZXZlbnRzID0gdXNy
c2N0cF9nZXRfZXZlbnRzKHMpOworCisJaWYgKGNvbm5lY3RpbmcpIHsKKwkJaWYgKGV2ZW50cyAm
IFNDVFBfRVZFTlRfRVJST1IpIHsKKwkJCWNvbm5lY3RpbmcgPSAwOworCQkJZmluaXNoID0gMTsK
KwkJfSBlbHNlIGlmIChldmVudHMgJiBTQ1RQX0VWRU5UX1dSSVRFKSB7CisJCQljb25uZWN0aW5n
ID0gMDsKKwkJCW9uX2Nvbm5lY3Qocyk7CisJCX0KKworCQlyZXR1cm47CisJfQorCisJaWYgKGV2
ZW50cyAmIFNDVFBfRVZFTlRfUkVBRCkgeworCQlvbl9zb2NrZXRfcmVhZGFibGUocyk7CisJfQor
fQorCitzdGF0aWMgaW50Citjb25uX291dHB1dCh2b2lkICphZGRyLCB2b2lkICpidWYsIHNpemVf
dCBsZW5ndGgsIHVpbnQ4X3QgdG9zLCB1aW50OF90IHNldF9kZikKK3sKKwljaGFyICpkdW1wX2J1
ZjsKKyNpZmRlZiBfV0lOMzIKKwlTT0NLRVQgKmZkcDsKKyNlbHNlCisJaW50ICpmZHA7CisjZW5k
aWYKKworI2lmZGVmIF9XSU4zMgorCWZkcCA9IChTT0NLRVQgKilhZGRyOworI2Vsc2UKKwlmZHAg
PSAoaW50ICopYWRkcjsKKyNlbmRpZgorCWlmICgoZHVtcF9idWYgPSB1c3JzY3RwX2R1bXBwYWNr
ZXQoYnVmLCBsZW5ndGgsIFNDVFBfRFVNUF9PVVRCT1VORCkpICE9IE5VTEwpIHsKKwkJZnByaW50
ZihzdGRlcnIsICIlcyIsIGR1bXBfYnVmKTsKKwkJdXNyc2N0cF9mcmVlZHVtcGJ1ZmZlcihkdW1w
X2J1Zik7CisJfQorI2lmZGVmIF9XSU4zMgorCWlmIChzZW5kKCpmZHAsIGJ1ZiwgKGludClsZW5n
dGgsIDApID09IFNPQ0tFVF9FUlJPUikgeworCQlyZXR1cm4gKFdTQUdldExhc3RFcnJvcigpKTsK
KyNlbHNlCisJaWYgKHNlbmQoKmZkcCwgYnVmLCBsZW5ndGgsIDApIDwgMCkgeworCQlyZXR1cm4g
KGVycm5vKTsKKyNlbmRpZgorCX0gZWxzZSB7CisJCXJldHVybiAoMCk7CisJfQorfQorCisvKiBV
c2FnZTogc3RfY2xpZW50IGxvY2FsX2FkZHIgbG9jYWxfcG9ydCByZW1vdGVfYWRkciByZW1vdGVf
cG9ydCByZW1vdGVfc2N0cF9wb3J0ICovCitpbnQKK21haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb
XSkKK3sKKwlzdHJ1Y3Qgc29ja2FkZHJfaW4gc2luOworCXN0cnVjdCBzb2NrYWRkcl9jb25uIHNj
b25uOworI2lmZGVmIF9XSU4zMgorCVNPQ0tFVCBmZDsKKyNlbHNlCisJaW50IGZkOworI2VuZGlm
CisJc3RydWN0IHNvY2tldCAqczsKKwlpbnQgcmV0dmFsOworI2lmZGVmIF9XSU4zMgorCVdTQURB
VEEgd3NhRGF0YTsKKyNlbmRpZgorCWNvbnN0IGludCBvbiA9IDE7CisKKwlpZiAoYXJnYyA8IDYp
IHsKKwkJcHJpbnRmKCJVc2FnZTogc3RfY2xpZW50IGxvY2FsX2FkZHIgbG9jYWxfcG9ydCByZW1v
dGVfYWRkciByZW1vdGVfcG9ydCByZW1vdGVfc2N0cF9wb3J0XG4iKTsKKwkJcmV0dXJuICgtMSk7
CisJfQorCisjaWZkZWYgX1dJTjMyCisJaWYgKFdTQVN0YXJ0dXAoTUFLRVdPUkQoMiwyKSwgJndz
YURhdGEpICE9IDApIHsKKwkJcHJpbnRmKCJXU0FTdGFydHVwIGZhaWxlZFxuIik7CisJCWV4aXQo
RVhJVF9GQUlMVVJFKTsKKwl9CisjZW5kaWYKKwl1c3JzY3RwX2luaXRfbm90aHJlYWRzKDAsIGNv
bm5fb3V0cHV0LCBkZWJ1Z19wcmludGZfc3RhY2spOworCS8qIHNldCB1cCBhIGNvbm5lY3RlZCBV
RFAgc29ja2V0ICovCisjaWZkZWYgX1dJTjMyCisJaWYgKChmZCA9IHNvY2tldChBRl9JTkVULCBT
T0NLX0RHUkFNLCBJUFBST1RPX1VEUCkpID09IElOVkFMSURfU09DS0VUKSB7CisJCXByaW50Zigi
c29ja2V0KCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7CisJ
CWV4aXQoRVhJVF9GQUlMVVJFKTsKKwl9CisjZWxzZQorCWlmICgoZmQgPSBzb2NrZXQoQUZfSU5F
VCwgU09DS19ER1JBTSwgSVBQUk9UT19VRFApKSA8IDApIHsKKwkJcGVycm9yKCJzb2NrZXQiKTsK
KwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKyNlbmRpZgorCW1lbXNldCgmc2luLCAwLCBzaXpl
b2Yoc3RydWN0IHNvY2thZGRyX2luKSk7CisJc2luLnNpbl9mYW1pbHkgPSBBRl9JTkVUOworI2lm
ZGVmIEhBVkVfU0lOX0xFTgorCXNpbi5zaW5fbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9p
bik7CisjZW5kaWYKKwlzaW4uc2luX3BvcnQgPSBodG9ucyhhdG9pKGFyZ3ZbMl0pKTsKKwlpZiAo
IWluZXRfcHRvbihBRl9JTkVULCBhcmd2WzFdLCAmc2luLnNpbl9hZGRyLnNfYWRkcikpeworCQlw
cmludGYoImVycm9yOiBpbnZhbGlkIGFkZHJlc3NcbiIpOworCQlleGl0KEVYSVRfRkFJTFVSRSk7
CisJfQorI2lmZGVmIF9XSU4zMgorCWlmIChiaW5kKGZkLCAoc3RydWN0IHNvY2thZGRyICopJnNp
biwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpID09IFNPQ0tFVF9FUlJPUikgeworCQlwcmlu
dGYoImJpbmQoKSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIFdTQUdldExhc3RFcnJvcigpKTsK
KwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKyNlbHNlCisJaWYgKGJpbmQoZmQsIChzdHJ1Y3Qg
c29ja2FkZHIgKikmc2luLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSkgPCAwKSB7CisJCXBl
cnJvcigiYmluZCIpOworCQlleGl0KEVYSVRfRkFJTFVSRSk7CisJfQorI2VuZGlmCisJbWVtc2V0
KCZzaW4sIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKKwlzaW4uc2luX2ZhbWlseSA9
IEFGX0lORVQ7CisjaWZkZWYgSEFWRV9TSU5fTEVOCisJc2luLnNpbl9sZW4gPSBzaXplb2Yoc3Ry
dWN0IHNvY2thZGRyX2luKTsKKyNlbmRpZgorCXNpbi5zaW5fcG9ydCA9IGh0b25zKGF0b2koYXJn
dls0XSkpOworCWlmICghaW5ldF9wdG9uKEFGX0lORVQsIGFyZ3ZbM10sICZzaW4uc2luX2FkZHIu
c19hZGRyKSl7CisJCXByaW50ZigiZXJyb3I6IGludmFsaWQgYWRkcmVzc1xuIik7CisJCWV4aXQo
RVhJVF9GQUlMVVJFKTsKKwl9CisjaWZkZWYgX1dJTjMyCisJaWYgKGNvbm5lY3QoZmQsIChzdHJ1
Y3Qgc29ja2FkZHIgKikmc2luLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSkgPT0gU09DS0VU
X0VSUk9SKSB7CisJCXByaW50ZigiY29ubmVjdCgpIGZhaWxlZCB3aXRoIGVycm9yOiAlZFxuIiwg
V1NBR2V0TGFzdEVycm9yKCkpOworCQlleGl0KEVYSVRfRkFJTFVSRSk7CisJfQorI2Vsc2UKKwlp
ZiAoY29ubmVjdChmZCwgKHN0cnVjdCBzb2NrYWRkciAqKSZzaW4sIHNpemVvZihzdHJ1Y3Qgc29j
a2FkZHJfaW4pKSA8IDApIHsKKwkJcGVycm9yKCJjb25uZWN0Iik7CisJCWV4aXQoRVhJVF9GQUlM
VVJFKTsKKwl9CisjZW5kaWYKKyNpZmRlZiBTQ1RQX0RFQlVHCisJdXNyc2N0cF9zeXNjdGxfc2V0
X3NjdHBfZGVidWdfb24oU0NUUF9ERUJVR19OT05FKTsKKyNlbmRpZgorCXVzcnNjdHBfc3lzY3Rs
X3NldF9zY3RwX2Vjbl9lbmFibGUoMCk7CisJdXNyc2N0cF9yZWdpc3Rlcl9hZGRyZXNzKCh2b2lk
ICopJmZkKTsKKworCWlmICgocyA9IHVzcnNjdHBfc29ja2V0KEFGX0NPTk4sIFNPQ0tfU1RSRUFN
LCBJUFBST1RPX1NDVFAsIE5VTEwsIE5VTEwsIDAsIE5VTEwpKSA9PSBOVUxMKSB7CisJCXBlcnJv
cigidXNyc2N0cF9zb2NrZXQiKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKworCXVzcnNj
dHBfc2V0c29ja29wdChzLCBJUFBST1RPX1NDVFAsIFNDVFBfUkVDVlJDVklORk8sICZvbiwgc2l6
ZW9mKGludCkpOworCXVzcnNjdHBfc2V0X25vbl9ibG9ja2luZyhzLCAxKTsKKwl1c3JzY3RwX3Nl
dF91cGNhbGwocywgaGFuZGxlX3VwY2FsbCwgTlVMTCk7CisKKwltZW1zZXQoJnNjb25uLCAwLCBz
aXplb2Yoc3RydWN0IHNvY2thZGRyX2Nvbm4pKTsKKwlzY29ubi5zY29ubl9mYW1pbHkgPSBBRl9D
T05OOworI2lmZGVmIEhBVkVfU0NPTk5fTEVOCisJc2Nvbm4uc2Nvbm5fbGVuID0gc2l6ZW9mKHN0
cnVjdCBzb2NrYWRkcl9jb25uKTsKKyNlbmRpZgorCXNjb25uLnNjb25uX3BvcnQgPSBodG9ucygw
KTsKKwlzY29ubi5zY29ubl9hZGRyID0gTlVMTDsKKwlpZiAodXNyc2N0cF9iaW5kKHMsIChzdHJ1
Y3Qgc29ja2FkZHIgKikmc2Nvbm4sIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfY29ubikpIDwgMCkg
eworCQlwZXJyb3IoInVzcnNjdHBfYmluZCIpOworCQlleGl0KEVYSVRfRkFJTFVSRSk7CisJfQor
CisJbWVtc2V0KCZzY29ubiwgMCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9jb25uKSk7CisJc2Nv
bm4uc2Nvbm5fZmFtaWx5ID0gQUZfQ09OTjsKKyNpZmRlZiBIQVZFX1NDT05OX0xFTgorCXNjb25u
LnNjb25uX2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfY29ubik7CisjZW5kaWYKKwlzY29u
bi5zY29ubl9wb3J0ID0gaHRvbnMoYXRvaShhcmd2WzVdKSk7CisJc2Nvbm4uc2Nvbm5fYWRkciA9
ICZmZDsKKworCXJldHZhbCA9IHVzcnNjdHBfY29ubmVjdChzLCAoc3RydWN0IHNvY2thZGRyICop
JnNjb25uLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2Nvbm4pKTsKKworCWlmIChyZXR2YWwgPCAw
ICYmIGVycm5vICE9IEVXT1VMREJMT0NLICYmIGVycm5vICE9IEVJTlBST0dSRVNTKSB7CisJCXBl
cnJvcigidXNyc2N0cF9jb25uZWN0Iik7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwl9CisKKwlj
b25uZWN0aW5nID0gMTsKKworCWhhbmRsZV9ldmVudHMoZmQsIHMsIHNjb25uLnNjb25uX2FkZHIp
OworCisJcmV0dXJuICgwKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL3RzY3Rw
LmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi9wcm9ncmFtcy90c2N0cC5jCmluZGV4IGM4NWRhMjJiMTg4ZWYzYThlMDRk
MzUxN2JmYzg4ZmRhMTMwOTFjZTIuLjM4MWE0MjlmODgwYzFhZWZkZmIyMWU0MDY4ZGZkMzU0MjU1
YTdmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL3RzY3RwLmMKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBs
aWIvcHJvZ3JhbXMvdHNjdHAuYwpAQCAtNTAsMTAgKzUwLDEyIEBACiAjaW5jbHVkZSA8c3RyaW5n
Lmg+CiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDx0
aW1lLmg+CiAjaWZkZWYgTElOVVgKICNpbmNsdWRlIDxnZXRvcHQuaD4KICNlbmRpZgogI2luY2x1
ZGUgPHVzcnNjdHAuaD4KKyNpbmNsdWRlICJwcm9ncmFtc19oZWxwZXIuaCIKIAogLyogZ2xvYmFs
IGZvciB0aGUgc2VuZCBjYWxsYmFjaywgYnV0IHVzZWQgaW4ga2VybmVsIHZlcnNpb24gYXMgd2Vs
bCAqLwogc3RhdGljIHVuc2lnbmVkIGxvbmcgbnVtYmVyX29mX21lc3NhZ2VzOwpAQCAtNjYsMjEg
KzY4LDQxIEBAIHN0cnVjdCBzb2NrZXQgKnBzb2NrID0gTlVMTDsKIAogc3RhdGljIHN0cnVjdCB0
aW1ldmFsIHN0YXJ0X3RpbWU7CiB1bnNpZ25lZCBpbnQgcnVudGltZSA9IDA7Ci1zdGF0aWMgdW5z
aWduZWQgbG9uZyBtZXNzYWdlcyA9IDA7Ci1zdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIGZpcnN0
X2xlbmd0aCA9IDA7Ci1zdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIHN1bSA9IDA7CitzdGF0aWMg
aW50IHBvbGljeSA9IDA7CitzdGF0aWMgdW5zaWduZWQgaW50IHRpbWV0b2xpdmUgPSAwOworc3Rh
dGljIHVuc2lnbmVkIGxvbmcgY2JfbWVzc2FnZXMgPSAwOworc3RhdGljIHVuc2lnbmVkIGxvbmcg
bG9uZyBjYl9maXJzdF9sZW5ndGggPSAwOworc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyBjYl9z
dW0gPSAwOwogc3RhdGljIHVuc2lnbmVkIGludCB1c2VfY2IgPSAwOwogCi0jaWZuZGVmIHRpbWVy
c3ViCi0jZGVmaW5lIHRpbWVyc3ViKHR2cCwgdXZwLCB2dnApICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0JZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLQkJKHZ2cCktPnR2X3NlYyA9ICh0dnApLT50dl9zZWMgLSAo
dXZwKS0+dHZfc2VjOyAgICBcCi0JCSh2dnApLT50dl91c2VjID0gKHR2cCktPnR2X3VzZWMgLSAo
dXZwKS0+dHZfdXNlYzsgXAotCQlpZiAoKHZ2cCktPnR2X3VzZWMgPCAwKSB7ICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLQkJCSh2dnApLT50dl9zZWMtLTsgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLQkJCSh2dnApLT50dl91c2VjICs9IDEwMDAwMDA7ICAgICAgICAgICAgICAgIFwKLQkJ
fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0JfSB3
aGlsZSAoMCkKKyNpZmRlZiBfV0lOMzIKK3N0YXRpYyB2b2lkCitnZXR0aW1lb2ZkYXkoc3RydWN0
IHRpbWV2YWwgKnR2LCB2b2lkICppZ25vcmUpCit7CisJRklMRVRJTUUgZmlsZXRpbWU7CisJVUxB
UkdFX0lOVEVHRVIgdWxhcmdlOworCisJR2V0U3lzdGVtVGltZUFzRmlsZVRpbWUoJmZpbGV0aW1l
KTsKKwl1bGFyZ2UuTG93UGFydCA9IGZpbGV0aW1lLmR3TG93RGF0ZVRpbWU7CisJdWxhcmdlLkhp
Z2hQYXJ0ID0gZmlsZXRpbWUuZHdIaWdoRGF0ZVRpbWU7CisJLyogQ2hhbmdlIGJhc2UgZnJvbSBK
YW4gMSAxNjAxIDAwOjAwOjAwIHRvIEphbiAxIDE5NzAgMDA6MDA6MDAgKi8KKyNpZiBkZWZpbmVk
KF9fTUlOR1czMl9fKQorCXVsYXJnZS5RdWFkUGFydCAtPSAxMTY0NDQ3MzYwMDAwMDAwMDBVTEw7
CisjZWxzZQorCXVsYXJnZS5RdWFkUGFydCAtPSAxMTY0NDQ3MzYwMDAwMDAwMDBVSTY0OworI2Vu
ZGlmCisJLyoKKwkgKiB1bGFyZ2UuUXVhZFBhcnQgaXMgbm93IHRoZSBudW1iZXIgb2YgMTAwLW5h
bm9zZWNvbmQgaW50ZXJ2YWxzCisJICogc2luY2UgSmFuIDEgMTk3MCAwMDowMDowMC4KKwkgKi8K
KyNpZiBkZWZpbmVkKF9fTUlOR1czMl9fKQorCXR2LT50dl9zZWMgPSAobG9uZykodWxhcmdlLlF1
YWRQYXJ0IC8gMTAwMDAwMDBVTEwpOworCXR2LT50dl91c2VjID0gKGxvbmcpKCh1bGFyZ2UuUXVh
ZFBhcnQgJSAxMDAwMDAwMFVMTCkgLyAxMFVMTCk7CisjZWxzZQorCXR2LT50dl9zZWMgPSAobG9u
ZykodWxhcmdlLlF1YWRQYXJ0IC8gMTAwMDAwMDBVSTY0KTsKKwl0di0+dHZfdXNlYyA9IChsb25n
KSgodWxhcmdlLlF1YWRQYXJ0ICUgMTAwMDAwMDBVSTY0KSAvIDEwVUk2NCk7CisjZW5kaWYKK30K
ICNlbmRpZgogCiAKQEAgLTg5LDE0ICsxMTEsMTggQEAgY2hhciBVc2FnZVtdID0KICJPcHRpb25z
OlxuIgogIiAgICAgICAgLWEgICAgICAgICAgICAgc2V0IGFkYXB0YXRpb24gbGF5ZXIgaW5kaWNh
dGlvblxuIgogIiAgICAgICAgLWMgICAgICAgICAgICAgdXNlIGNhbGxiYWNrIEFQSVxuIgorIiAg
ICAgICAgLWQgICAgICAgICAgICAgdGltZSBpbiBzZWNvbmRzIGFmdGVyIHdoaWNoIGEgc3RhdHVz
IHVwZGF0ZSBpcyBwcmludGVkXG4iCisiICAgICAgICAtRCAgICAgICAgICAgICB0dXJucyBOYWds
ZSBvZmZcbiIKICIgICAgICAgIC1FICAgICAgICAgICAgIGxvY2FsIFVEUCBlbmNhcHN1bGF0aW9u
IHBvcnQgKGRlZmF1bHQgOTg5OSlcbiIKICIgICAgICAgIC1mICAgICAgICAgICAgIGZyYWdtZW50
YXRpb24gcG9pbnRcbiIKLSIgICAgICAgIC1sICAgICAgICAgICAgIHNpemUgb2Ygc2VuZC9yZWNl
aXZlIGJ1ZmZlclxuIgorIiAgICAgICAgLWwgICAgICAgICAgICAgbWVzc2FnZSBsZW5ndGhcbiIK
ICIgICAgICAgIC1MICAgICAgICAgICAgIGJpbmQgdG8gbG9jYWwgSVAgKGRlZmF1bHQgSU5BRERS
X0FOWSlcbiIKICIgICAgICAgIC1uICAgICAgICAgICAgIG51bWJlciBvZiBtZXNzYWdlcyBzZW50
ICgwIG1lYW5zIGluZmluaXRlKS9yZWNlaXZlZFxuIgotIiAgICAgICAgLUQgICAgICAgICAgICAg
dHVybnMgTmFnbGUgb2ZmXG4iCisiICAgICAgICAtcCAgICAgICAgICAgICBwb3J0IG51bWJlclxu
IgorIiAgICAgICAgLVAgICAgICAgICAgICAgcGFydGlhbCByZWxpYWJpbGl0eSBwb2xpY3kgdG8g
dXNlICgwPW5vbmUgKGRlZmF1bHQpLCAxPXR0bCwgMj1ydHgsIDM9YnVmKVxuIgogIiAgICAgICAg
LVIgICAgICAgICAgICAgc29ja2V0IHJlY3YgYnVmZmVyXG4iCiAiICAgICAgICAtUyAgICAgICAg
ICAgICBzb2NrZXQgc2VuZCBidWZmZXJcbiIKKyIgICAgICAgIC10ICAgICAgICAgICAgIGJhc2Vk
IG9uIC1QIHRoZSB0aW1lIHRvIGxpdmUsIG51bWJlciBvZiByZXRyYW5zbWlzc2lvbnMsIG9yIHBy
aW9yaXR5IGZvciBtZXNzYWdlc1xuIgogIiAgICAgICAgLVQgICAgICAgICAgICAgdGltZSB0byBz
ZW5kIG1lc3NhZ2VzXG4iCiAiICAgICAgICAtdSAgICAgICAgICAgICB1c2UgdW5vcmRlcmVkIHVz
ZXIgbWVzc2FnZXNcbiIKICIgICAgICAgIC1VICAgICAgICAgICAgIHJlbW90ZSBVRFAgZW5jYXBz
dWxhdGlvbiBwb3J0XG4iCkBAIC0xMTEsMjMgKzEzNywyMSBAQCBjaGFyIFVzYWdlW10gPQogCiBz
dGF0aWMgaW50IHZlcmJvc2UsIHZlcnlfdmVyYm9zZTsKIHN0YXRpYyB1bnNpZ25lZCBpbnQgZG9u
ZTsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgcm91bmRfZHVyYXRpb247CiAKIHZvaWQgc3RvcF9zZW5k
ZXIoaW50IHNpZykKIHsKIAlkb25lID0gMTsKIH0KIAotI2lmZGVmIF9XSU4zMgotc3RhdGljIHZv
aWQKLWdldHRpbWVvZmRheShzdHJ1Y3QgdGltZXZhbCAqdHYsIHZvaWQgKmlnbm9yZSkKK3N0YXRp
YyB0aW1lX3QgY2FsY19yb3VuZF90aW1lb3V0KHN0cnVjdCB0aW1ldmFsIHJvdW5kX3N0YXJ0KQog
ewotCXN0cnVjdCB0aW1lYiB0YjsKLQotCWZ0aW1lKCZ0Yik7Ci0JdHYtPnR2X3NlYyA9IChsb25n
KXRiLnRpbWU7Ci0gCXR2LT50dl91c2VjID0gdGIubWlsbGl0bSAqIDEwMDA7CisJdGltZV90IHJv
dW5kX3RpbWVvdXQgPSByb3VuZF9zdGFydC50dl9zZWMgKyByb3VuZF9kdXJhdGlvbjsKKwlpZiAo
cm91bmRfc3RhcnQudHZfdXNlYyA+PSA1MDAwMDApIHsKKwkJcm91bmRfdGltZW91dCsrOworCX0K
KwlyZXR1cm4gcm91bmRfdGltZW91dDsKIH0KLSNlbmRpZgogCiAjaWZkZWYgX1dJTjMyCiBzdGF0
aWMgRFdPUkQgV0lOQVBJCkBAIC0xMzgsOSArMTYyLDggQEAgaGFuZGxlX2Nvbm5lY3Rpb24odm9p
ZCAqYXJnKQogewogCXNzaXplX3QgbjsKIAljaGFyICpidWY7Ci0jaWZkZWYgX1dJTjMyCi0JSEFO
RExFIHRpZDsKLSNlbHNlCisKKyNpZiAhZGVmaW5lZChfV0lOMzIpCiAJcHRocmVhZF90IHRpZDsK
ICNlbmRpZgogCXN0cnVjdCBzb2NrZXQgKmNvbm5fc29jazsKQEAgLTE1NywxMSArMTgwLDE2IEBA
IGhhbmRsZV9jb25uZWN0aW9uKHZvaWQgKmFyZykKIAl1bnNpZ25lZCBpbnQgaW5mb3R5cGU7CiAJ
c3RydWN0IHNjdHBfcmVjdnZfcm4gcm47CiAJc29ja2xlbl90IGluZm9sZW4gPSBzaXplb2Yoc3Ry
dWN0IHNjdHBfcmVjdnZfcm4pOworCXVuc2lnbmVkIGxvbmcgbWVzc2FnZXMgPSAwOworCXVuc2ln
bmVkIGxvbmcgbG9uZyBmaXJzdF9sZW5ndGggPSAwOworCXVuc2lnbmVkIGxvbmcgbG9uZyBzdW0g
PSAwOworCXVuc2lnbmVkIGxvbmcgbG9uZyByb3VuZF9ieXRlczsKKwlzdHJ1Y3QgdGltZXZhbCBy
b3VuZF9zdGFydDsKKwl0aW1lX3Qgcm91bmRfdGltZW91dCA9IDA7CiAKIAljb25uX3NvY2sgPSAq
KHN0cnVjdCBzb2NrZXQgKiopYXJnOwotI2lmZGVmIF9XSU4zMgotCXRpZCA9IEdldEN1cnJlbnRU
aHJlYWQoKTsKLSNlbHNlCisKKyNpZiAhZGVmaW5lZChfV0lOMzIpCiAJdGlkID0gcHRocmVhZF9z
ZWxmKCk7CiAJcHRocmVhZF9kZXRhY2godGlkKTsKICNlbmRpZgpAQCAtMTc1LDYgKzIwMywxMSBA
QCBoYW5kbGVfY29ubmVjdGlvbih2b2lkICphcmcpCiAJICAgICAgICAgICAgICAgICAmaW5mb2xl
biwgJmluZm90eXBlLCAmZmxhZ3MpOwogCiAJZ2V0dGltZW9mZGF5KCZ0aW1lX3N0YXJ0LCBOVUxM
KTsKKwlpZiAocm91bmRfZHVyYXRpb24gPiAwKSB7CisJCXJvdW5kX2J5dGVzID0gMDsKKwkJZ2V0
dGltZW9mZGF5KCZyb3VuZF9zdGFydCwgTlVMTCk7CisJCXJvdW5kX3RpbWVvdXQgPSBjYWxjX3Jv
dW5kX3RpbWVvdXQocm91bmRfc3RhcnQpOworCX0KIAl3aGlsZSAobiA+IDApIHsKIAkJcmVjdl9j
YWxscysrOwogCQlpZiAoZmxhZ3MgJiBNU0dfTk9USUZJQ0FUSU9OKSB7CkBAIC0xODIsMTAgKzIx
NSw5IEBAIGhhbmRsZV9jb25uZWN0aW9uKHZvaWQgKmFyZykKIAkJCWdldHRpbWVvZmRheSgmbm90
ZV90aW1lLCBOVUxMKTsKIAkJCXByaW50Zigibm90aWZpY2F0aW9uIGFycml2ZWQgYXQgJWZcbiIs
IG5vdGVfdGltZS50dl9zZWMrKGRvdWJsZSlub3RlX3RpbWUudHZfdXNlYy8xMDAwMDAwLjApOwog
CQkJc25wID0gKHVuaW9uIHNjdHBfbm90aWZpY2F0aW9uICopYnVmOwotCQkJaWYgKHNucC0+c25f
aGVhZGVyLnNuX3R5cGU9PVNDVFBfUEVFUl9BRERSX0NIQU5HRSkKLQkJCXsKKwkJCWlmIChzbnAt
PnNuX2hlYWRlci5zbl90eXBlID09IFNDVFBfUEVFUl9BRERSX0NIQU5HRSkgewogCQkJCXNwYyA9
ICZzbnAtPnNuX3BhZGRyX2NoYW5nZTsKLQkJCQlwcmludGYoIlNDVFBfUEVFUl9BRERSX0NIQU5H
RTogc3RhdGU9JWQsIGVycm9yPSVkXG4iLHNwYy0+c3BjX3N0YXRlLCBzcGMtPnNwY19lcnJvcik7
CisJCQkJcHJpbnRmKCJTQ1RQX1BFRVJfQUREUl9DSEFOR0U6IHN0YXRlPSV1LCBlcnJvcj0ldVxu
IixzcGMtPnNwY19zdGF0ZSwgc3BjLT5zcGNfZXJyb3IpOwogCQkJfQogCQl9IGVsc2UgewogCQkJ
aWYgKHZlcnlfdmVyYm9zZSkgewpAQCAtMTk0LDEwICsyMjYsMjQgQEAgaGFuZGxlX2Nvbm5lY3Rp
b24odm9pZCAqYXJnKQogCQkJc3VtICs9IG47CiAJCQlpZiAoZmxhZ3MgJiBNU0dfRU9SKSB7CiAJ
CQkJbWVzc2FnZXMrKzsKLQkJCQlpZiAoZmlyc3RfbGVuZ3RoID09IDApCisJCQkJaWYgKGZpcnN0
X2xlbmd0aCA9PSAwKSB7CiAJCQkJCWZpcnN0X2xlbmd0aCA9IHN1bTsKKwkJCQl9CisJCQkJaWYg
KHJvdW5kX2R1cmF0aW9uID4gMCkgeworCQkJCQlyb3VuZF9ieXRlcyArPSBmaXJzdF9sZW5ndGg7
CisJCQkJfQogCQkJfQogCQl9CisJCWlmIChyb3VuZF9kdXJhdGlvbiA+IDAgJiYgcm91bmRfdGlt
ZW91dCA8PSB0aW1lKE5VTEwpKSB7CisJCQlnZXR0aW1lb2ZkYXkoJnRpbWVfbm93LCBOVUxMKTsK
KwkJCXRpbWVyc3ViKCZ0aW1lX25vdywgJnJvdW5kX3N0YXJ0LCAmdGltZV9kaWZmKTsKKwkJCXNl
Y29uZHMgPSB0aW1lX2RpZmYudHZfc2VjICsgKGRvdWJsZSl0aW1lX2RpZmYudHZfdXNlYy8xMDAw
MDAwLjA7CisJCQlmcHJpbnRmKHN0ZG91dCwgInRocm91Z2hwdXQgZm9yIHRoZSBsYXN0ICVmIHNl
Y29uZHM6ICVmIEIvc1xuIiwgc2Vjb25kcywgKGRvdWJsZSlyb3VuZF9ieXRlcyAvIHNlY29uZHMp
OworCisJCQlyb3VuZF9ieXRlcyA9IDA7CisJCQlnZXR0aW1lb2ZkYXkoJnJvdW5kX3N0YXJ0LCBO
VUxMKTsKKwkJCXJvdW5kX3RpbWVvdXQgPSBjYWxjX3JvdW5kX3RpbWVvdXQocm91bmRfc3RhcnQp
OworCQl9CiAJCWZsYWdzID0gMDsKIAkJbGVuID0gKHNvY2tsZW5fdClzaXplb2Yoc3RydWN0IHNv
Y2thZGRyX2luKTsKIAkJaW5mb2xlbiA9IHNpemVvZihzdHJ1Y3Qgc2N0cF9yZWN2dl9ybik7CkBA
IC0yMDYsMTMgKzI1MiwxNCBAQCBoYW5kbGVfY29ubmVjdGlvbih2b2lkICphcmcpCiAJCW4gPSB1
c3JzY3RwX3JlY3Z2KGNvbm5fc29jaywgKHZvaWQgKikgYnVmLCBCVUZGRVJTSVpFLCAoc3RydWN0
IHNvY2thZGRyICopICZhZGRyLCAmbGVuLCAodm9pZCAqKSZybiwKIAkJICAgICAgICAgICAgICAg
ICAgJmluZm9sZW4sICZpbmZvdHlwZSwgJmZsYWdzKTsKIAl9Ci0JaWYgKG4gPCAwKQorCWlmIChu
IDwgMCkgewogCQlwZXJyb3IoInNjdHBfcmVjdnYiKTsKKwl9CiAJZ2V0dGltZW9mZGF5KCZ0aW1l
X25vdywgTlVMTCk7CiAJdGltZXJzdWIoJnRpbWVfbm93LCAmdGltZV9zdGFydCwgJnRpbWVfZGlm
Zik7CiAJc2Vjb25kcyA9IHRpbWVfZGlmZi50dl9zZWMgKyAoZG91YmxlKXRpbWVfZGlmZi50dl91
c2VjLzEwMDAwMDAuMDsKLQlwcmludGYoIiVsbHUsICVsdSwgJWx1LCAlbHUsICVsbHUsICVmLCAl
ZlxuIiwKLQkgICAgICAgIGZpcnN0X2xlbmd0aCwgbWVzc2FnZXMsIHJlY3ZfY2FsbHMsIG5vdGlm
aWNhdGlvbnMsIHN1bSwgc2Vjb25kcywgKGRvdWJsZSlmaXJzdF9sZW5ndGggKiAoZG91YmxlKW1l
c3NhZ2VzIC8gc2Vjb25kcyk7CisJcHJpbnRmKCIlbGx1LCAlbHUsICVsdSwgJWxsdSwgJWYsICVm
LCAlbHVcbiIsCisJICAgICAgICBmaXJzdF9sZW5ndGgsIG1lc3NhZ2VzLCByZWN2X2NhbGxzLCBz
dW0sIHNlY29uZHMsIChkb3VibGUpZmlyc3RfbGVuZ3RoICogKGRvdWJsZSltZXNzYWdlcyAvIHNl
Y29uZHMsIG5vdGlmaWNhdGlvbnMpOwogCWZmbHVzaChzdGRvdXQpOwogCXVzcnNjdHBfY2xvc2Uo
Y29ubl9zb2NrKTsKIAlmcmVlKGJ1Zik7CkBAIC0yMjQsMTAgKzI3MSwxMCBAQCBoYW5kbGVfY29u
bmVjdGlvbih2b2lkICphcmcpCiB9CiAKIHN0YXRpYyBpbnQKLXNlbmRfY2Ioc3RydWN0IHNvY2tl
dCAqc29jaywgdWludDMyX3Qgc2JfZnJlZSkgewotCXN0cnVjdCBzY3RwX3NuZGluZm8gc25kaW5m
bzsKK3NlbmRfY2Ioc3RydWN0IHNvY2tldCAqc29jaywgdWludDMyX3Qgc2JfZnJlZSwgdm9pZCAq
dWxwX2luZm8pIHsKKwlzdHJ1Y3Qgc2N0cF9zZW5kdl9zcGEgc2VuZHZfc3BhOwogCi0JaWYgKCht
ZXNzYWdlcyA9PSAwKSAmIHZlcmJvc2UpIHsKKwlpZiAoKGNiX21lc3NhZ2VzID09IDApICYmIHZl
cmJvc2UpIHsKIAkJcHJpbnRmKCJTdGFydCBzZW5kaW5nICIpOwogCQlpZiAobnVtYmVyX29mX21l
c3NhZ2VzID4gMCkgewogCQkJcHJpbnRmKCIlbGQgbWVzc2FnZXMgIiwgKGxvbmcpbnVtYmVyX29m
X21lc3NhZ2VzKTsKQEAgLTIzOSw1NyArMjg2LDg4IEBAIHNlbmRfY2Ioc3RydWN0IHNvY2tldCAq
c29jaywgdWludDMyX3Qgc2JfZnJlZSkgewogCQlmZmx1c2goc3Rkb3V0KTsKIAl9CiAKLQlzbmRp
bmZvLnNuZF9zaWQgPSAwOwotCXNuZGluZm8uc25kX2ZsYWdzID0gMDsKKwlzZW5kdl9zcGEuc2Vu
ZHZfZmxhZ3MgPSBTQ1RQX1NFTkRfU05ESU5GT19WQUxJRCB8IFNDVFBfU0VORF9QUklORk9fVkFM
SUQ7CisKKwlzZW5kdl9zcGEuc2VuZHZfc25kaW5mby5zbmRfc2lkID0gMDsKKwlzZW5kdl9zcGEu
c2VuZHZfc25kaW5mby5zbmRfZmxhZ3MgPSAwOwogCWlmICh1bm9yZGVyZWQgIT0gMCkgewotCQlz
bmRpbmZvLnNuZF9mbGFncyB8PSBTQ1RQX1VOT1JERVJFRDsKKwkJc2VuZHZfc3BhLnNlbmR2X3Nu
ZGluZm8uc25kX2ZsYWdzIHw9IFNDVFBfVU5PUkRFUkVEOwogCX0KLQlzbmRpbmZvLnNuZF9wcGlk
ID0gMDsKLQlzbmRpbmZvLnNuZF9jb250ZXh0ID0gMDsKLQlzbmRpbmZvLnNuZF9hc3NvY19pZCA9
IDA7CisJc2VuZHZfc3BhLnNlbmR2X3NuZGluZm8uc25kX3BwaWQgPSAwOworCXNlbmR2X3NwYS5z
ZW5kdl9zbmRpbmZvLnNuZF9jb250ZXh0ID0gMDsKKwlzZW5kdl9zcGEuc2VuZHZfc25kaW5mby5z
bmRfYXNzb2NfaWQgPSAwOworCisJc2VuZHZfc3BhLnNlbmR2X3ByaW5mby5wcl9wb2xpY3kgPSAw
OworCXN3aXRjaCAocG9saWN5KSB7CisjaWZkZWYgU0NUUF9QUl9TQ1RQX05PTkUKKwljYXNlIDA6
CisJCXNlbmR2X3NwYS5zZW5kdl9wcmluZm8ucHJfcG9saWN5ID0gU0NUUF9QUl9TQ1RQX05PTkU7
CisJCWJyZWFrOworI2VuZGlmCisjaWZkZWYgU0NUUF9QUl9TQ1RQX1RUTAorCWNhc2UgMToKKwkJ
c2VuZHZfc3BhLnNlbmR2X3ByaW5mby5wcl9wb2xpY3kgPSBTQ1RQX1BSX1NDVFBfVFRMOworCQli
cmVhazsKKyNlbmRpZgorI2lmZGVmIFNDVFBfUFJfU0NUUF9SVFgKKwljYXNlIDI6CisJCXNlbmR2
X3NwYS5zZW5kdl9wcmluZm8ucHJfcG9saWN5ID0gU0NUUF9QUl9TQ1RQX1JUWDsKKwkJYnJlYWs7
CisjZW5kaWYKKyNpZmRlZiBTQ1RQX1BSX1NDVFBfQlVGCisJY2FzZSAzOgorCQlzZW5kdl9zcGEu
c2VuZHZfcHJpbmZvLnByX3BvbGljeSA9IFNDVFBfUFJfU0NUUF9CVUY7CisJCWJyZWFrOworI2Vu
ZGlmCisJZGVmYXVsdDoKKwkJcHJpbnRmKCJVbmtub3duIFBSLVNDVFAgcG9saWN5LlxuIik7CisJ
CWJyZWFrOworCX0KKwlzZW5kdl9zcGEuc2VuZHZfcHJpbmZvLnByX3ZhbHVlID0gdGltZXRvbGl2
ZTsKIAotCXdoaWxlICghZG9uZSAmJiAoKG51bWJlcl9vZl9tZXNzYWdlcyA9PSAwKSB8fCAobWVz
c2FnZXMgPCAobnVtYmVyX29mX21lc3NhZ2VzIC0gMSkpKSkgeworCXdoaWxlICghZG9uZSAmJiAo
KG51bWJlcl9vZl9tZXNzYWdlcyA9PSAwKSB8fCAoY2JfbWVzc2FnZXMgPCAobnVtYmVyX29mX21l
c3NhZ2VzIC0gMSkpKSkgewogCQlpZiAodmVyeV92ZXJib3NlKSB7Ci0JCQlwcmludGYoIlNlbmRp
bmcgbWVzc2FnZSBudW1iZXIgJWx1LlxuIiwgbWVzc2FnZXMgKyAxKTsKKwkJCXByaW50ZigiU2Vu
ZGluZyBtZXNzYWdlIG51bWJlciAlbHUuXG4iLCBjYl9tZXNzYWdlcyArIDEpOwogCQl9CiAKIAkJ
aWYgKHVzcnNjdHBfc2VuZHYocHNvY2ssIGJ1ZmZlciwgbGVuZ3RoLAogCQkgICAgICAgICAgICAg
ICAgICAoc3RydWN0IHNvY2thZGRyICopICZyZW1vdGVfYWRkciwgMSwKLQkJICAgICAgICAgICAg
ICAgICAgKHZvaWQgKikmc25kaW5mbywgKHNvY2tsZW5fdClzaXplb2Yoc3RydWN0IHNjdHBfc25k
aW5mbyksIFNDVFBfU0VORFZfU05ESU5GTywKKwkJICAgICAgICAgICAgICAgICAgKHZvaWQgKikm
c2VuZHZfc3BhLCAoc29ja2xlbl90KXNpemVvZihzdHJ1Y3Qgc2N0cF9zZW5kdl9zcGEpLCBTQ1RQ
X1NFTkRWX1NQQSwKIAkJICAgICAgICAgICAgICAgICAgMCkgPCAwKSB7CiAJCQlpZiAoZXJybm8g
IT0gRVdPVUxEQkxPQ0sgJiYgZXJybm8gIT0gRUFHQUlOKSB7CiAJCQkJcGVycm9yKCJ1c3JzY3Rw
X3NlbmR2IChjYikiKTsKIAkJCQlleGl0KDEpOwogCQkJfSBlbHNlIHsKIAkJCQlpZiAodmVyeV92
ZXJib3NlKXsKLQkJCQkJcHJpbnRmKCJFV09VTERCTE9DSyBvciBFQUdBSU4gZm9yIG1lc3NhZ2Ug
bnVtYmVyICVsdSAtIHdpbGwgcmV0cnlcbiIsIG1lc3NhZ2VzICsgMSk7CisJCQkJCXByaW50Zigi
RVdPVUxEQkxPQ0sgb3IgRUFHQUlOIGZvciBtZXNzYWdlIG51bWJlciAlbHUgLSB3aWxsIHJldHJ5
XG4iLCBjYl9tZXNzYWdlcyArIDEpOwogCQkJCX0KIAkJCQkvKiBzZW5kIHVudGlsIEVXT1VMREJM
T0NLIHRoZW4gZXhpdCBjYWxsYmFjay4gKi8KIAkJCQlyZXR1cm4gKDEpOwogCQkJfQogCQl9Ci0J
CW1lc3NhZ2VzKys7CisJCWNiX21lc3NhZ2VzKys7CiAJfQotCWlmICgoZG9uZSA9PSAxKSB8fCAo
bWVzc2FnZXMgPT0gKG51bWJlcl9vZl9tZXNzYWdlcyAtIDEpKSkgewotCQlpZiAodmVyeV92ZXJi
b3NlKQotCQkJcHJpbnRmKCJTZW5kaW5nIGZpbmFsIG1lc3NhZ2UgbnVtYmVyICVsdS5cbiIsIG1l
c3NhZ2VzICsgMSk7CisJaWYgKChkb25lID09IDEpIHx8IChjYl9tZXNzYWdlcyA9PSAobnVtYmVy
X29mX21lc3NhZ2VzIC0gMSkpKSB7CisJCWlmICh2ZXJ5X3ZlcmJvc2UpIHsKKwkJCXByaW50Zigi
U2VuZGluZyBmaW5hbCBtZXNzYWdlIG51bWJlciAlbHUuXG4iLCBjYl9tZXNzYWdlcyArIDEpOwor
CQl9CiAKLQkJc25kaW5mby5zbmRfZmxhZ3MgfD0gU0NUUF9FT0Y7CisJCXNlbmR2X3NwYS5zZW5k
dl9zbmRpbmZvLnNuZF9mbGFncyB8PSBTQ1RQX0VPRjsKIAkJaWYgKHVzcnNjdHBfc2VuZHYocHNv
Y2ssIGJ1ZmZlciwgbGVuZ3RoLCAoc3RydWN0IHNvY2thZGRyICopICZyZW1vdGVfYWRkciwgMSwK
LQkJICAgICAgICAgICAgICAgICAgKHZvaWQgKikmc25kaW5mbywgKHNvY2tsZW5fdClzaXplb2Yo
c3RydWN0IHNjdHBfc25kaW5mbyksIFNDVFBfU0VORFZfU05ESU5GTywKKwkJICAgICAgICAgICAg
ICAgICAgKHZvaWQgKikmc2VuZHZfc3BhLCAoc29ja2xlbl90KXNpemVvZihzdHJ1Y3Qgc2N0cF9z
ZW5kdl9zcGEpLCBTQ1RQX1NFTkRWX1NQQSwKIAkJICAgICAgICAgICAgICAgICAgMCkgPCAwKSB7
CiAJCQlpZiAoZXJybm8gIT0gRVdPVUxEQkxPQ0sgJiYgZXJybm8gIT0gRUFHQUlOKSB7CiAJCQkJ
cGVycm9yKCJ1c3JzY3RwX3NlbmR2IChjYikiKTsKIAkJCQlleGl0KDEpOwogCQkJfSBlbHNlIHsK
IAkJCQlpZiAodmVyeV92ZXJib3NlKXsKLQkJCQkJcHJpbnRmKCJFV09VTERCTE9DSyBvciBFQUdB
SU4gZm9yIGZpbmFsIG1lc3NhZ2UgbnVtYmVyICVsdSAtIHdpbGwgcmV0cnlcbiIsIG1lc3NhZ2Vz
ICsgMSk7CisJCQkJCXByaW50ZigiRVdPVUxEQkxPQ0sgb3IgRUFHQUlOIGZvciBmaW5hbCBtZXNz
YWdlIG51bWJlciAlbHUgLSB3aWxsIHJldHJ5XG4iLCBjYl9tZXNzYWdlcyArIDEpOwogCQkJCX0K
IAkJCQkvKiBzZW5kIHVudGlsIEVXT1VMREJMT0NLIHRoZW4gZXhpdCBjYWxsYmFjay4gKi8KIAkJ
CQlyZXR1cm4gKDEpOwogCQkJfQogCQl9Ci0JCW1lc3NhZ2VzKys7CisJCWNiX21lc3NhZ2VzKys7
CiAJCWRvbmUgPSAyOwogCX0KIApAQCAtMzA2LDIxICszODQsMjEgQEAgc2VydmVyX3JlY2VpdmVf
Y2Ioc3RydWN0IHNvY2tldCAqc29jaywgdW5pb24gc2N0cF9zb2Nrc3RvcmUgYWRkciwgdm9pZCAq
ZGF0YSwKIAlpZiAoZGF0YSA9PSBOVUxMKSB7CiAJCWdldHRpbWVvZmRheSgmbm93LCBOVUxMKTsK
IAkJdGltZXJzdWIoJm5vdywgJnN0YXJ0X3RpbWUsICZkaWZmX3RpbWUpOwotCQlzZWNvbmRzID0g
ZGlmZl90aW1lLnR2X3NlYyArIChkb3VibGUpZGlmZl90aW1lLnR2X3VzZWMvMTAwMDAwMC4wOwor
CQlzZWNvbmRzID0gZGlmZl90aW1lLnR2X3NlYyArIChkb3VibGUpZGlmZl90aW1lLnR2X3VzZWMg
LyAxMDAwMDAwLjA7CiAJCXByaW50ZigiJWxsdSwgJWx1LCAlbGx1LCAlZiwgJWZcbiIsCi0JCQlm
aXJzdF9sZW5ndGgsIG1lc3NhZ2VzLCBzdW0sIHNlY29uZHMsIChkb3VibGUpZmlyc3RfbGVuZ3Ro
ICogKGRvdWJsZSltZXNzYWdlcyAvIHNlY29uZHMpOworCQkJY2JfZmlyc3RfbGVuZ3RoLCBjYl9t
ZXNzYWdlcywgY2Jfc3VtLCBzZWNvbmRzLCAoZG91YmxlKWNiX2ZpcnN0X2xlbmd0aCAqIChkb3Vi
bGUpY2JfbWVzc2FnZXMgLyBzZWNvbmRzKTsKIAkJdXNyc2N0cF9jbG9zZShzb2NrKTsKLQkJZmly
c3RfbGVuZ3RoID0gMDsKLQkJc3VtID0gMDsKLQkJbWVzc2FnZXMgPSAwOworCQljYl9maXJzdF9s
ZW5ndGggPSAwOworCQljYl9zdW0gPSAwOworCQljYl9tZXNzYWdlcyA9IDA7CiAJCXJldHVybiAo
MSk7CiAJfQotCWlmIChmaXJzdF9sZW5ndGggPT0gMCkgewotCQlmaXJzdF9sZW5ndGggPSAodW5z
aWduZWQgaW50KWRhdGFsZW47CisJaWYgKGNiX2ZpcnN0X2xlbmd0aCA9PSAwKSB7CisJCWNiX2Zp
cnN0X2xlbmd0aCA9ICh1bnNpZ25lZCBpbnQpZGF0YWxlbjsKIAkJZ2V0dGltZW9mZGF5KCZzdGFy
dF90aW1lLCBOVUxMKTsKIAl9Ci0Jc3VtICs9IGRhdGFsZW47Ci0JbWVzc2FnZXMrKzsKKwljYl9z
dW0gKz0gZGF0YWxlbjsKKwljYl9tZXNzYWdlcysrOwogCiAJZnJlZShkYXRhKTsKIAlyZXR1cm4g
KDEpOwpAQCAtMzM0LDIwICs0MTIsMTAgQEAgY2xpZW50X3JlY2VpdmVfY2Ioc3RydWN0IHNvY2tl
dCAqc29jaywgdW5pb24gc2N0cF9zb2Nrc3RvcmUgYWRkciwgdm9pZCAqZGF0YSwKIAlyZXR1cm4g
KDEpOwogfQogCi12b2lkCi1kZWJ1Z19wcmludGYoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCi17
Ci0JdmFfbGlzdCBhcDsKLQotCXZhX3N0YXJ0KGFwLCBmb3JtYXQpOwotCXZwcmludGYoZm9ybWF0
LCBhcCk7Ci0JdmFfZW5kKGFwKTsKLX0KLQogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2
KQogewogI2lmbmRlZiBfV0lOMzIKLQlpbnQgYzsKKwlpbnQgYywgcmM7CiAjZW5kaWYKIAlzb2Nr
bGVuX3QgYWRkcl9sZW47CiAJc3RydWN0IHNvY2thZGRyX2luIGxvY2FsX2FkZHI7CkBAIC0zNjEs
NyArNDI5LDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCWludCBub2RlbGF5
ID0gMDsKIAlzdHJ1Y3Qgc2N0cF9hc3NvY192YWx1ZSBhdjsKIAlzdHJ1Y3Qgc2N0cF91ZHBlbmNh
cHMgZW5jYXBzOwotCXN0cnVjdCBzY3RwX3NuZGluZm8gc25kaW5mbzsKKwlzdHJ1Y3Qgc2N0cF9z
ZW5kdl9zcGEgc2VuZHZfc3BhOworCXVuc2lnbmVkIGxvbmcgbWVzc2FnZXMgPSAwOwogI2lmZGVm
IF9XSU4zMgogCXVuc2lnbmVkIGxvbmcgc3JjQWRkcjsKIAlIQU5ETEUgdGlkOwpAQCAtMzg1LDEy
ICs0NTQsMTMgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCXZlcmJvc2UgPSAw
OwogCXZlcnlfdmVyYm9zZSA9IDA7CiAJc3JjQWRkciA9IGh0b25sKElOQUREUl9BTlkpOworCXJv
dW5kX2R1cmF0aW9uID0gMDsKIAogCW1lbXNldCgodm9pZCAqKSAmcmVtb3RlX2FkZHIsIDAsIHNp
emVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKIAltZW1zZXQoKHZvaWQgKikgJmxvY2FsX2FkZHIs
IDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKIAogI2lmbmRlZiBfV0lOMzIKLQl3aGls
ZSAoKGMgPSBnZXRvcHQoYXJnYywgYXJndiwgImE6Y3A6bDpFOmY6TDpuOlI6UzpUOnVVOnZWRCIp
KSAhPSAtMSkKKwl3aGlsZSAoKGMgPSBnZXRvcHQoYXJnYywgYXJndiwgImE6Y2Q6REU6ZjpsOkw6
bjpwOlA6UjpTOnQ6VDp1VTp2ViIpKSAhPSAtMSkKIAkJc3dpdGNoKGMpIHsKIAkJCWNhc2UgJ2En
OgogCQkJCWluZC5zc2JfYWRhcHRhdGlvbl9pbmQgPSBhdG9pKG9wdGFyZyk7CkBAIC0zOTgsNiAr
NDY4LDEyIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCWNhc2UgJ2MnOgog
CQkJCXVzZV9jYiA9IDE7CiAJCQkJYnJlYWs7CisJCQljYXNlICdkJzoKKwkJCQlyb3VuZF9kdXJh
dGlvbiA9IGF0b2kob3B0YXJnKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgJ0QnOgorCQkJCW5vZGVs
YXkgPSAxOworCQkJCWJyZWFrOwogCQkJY2FzZSAnbCc6CiAJCQkJbGVuZ3RoID0gYXRvaShvcHRh
cmcpOwogCQkJCWJyZWFrOwpAQCAtNDA3LDYgKzQ4Myw5IEBAIGludCBtYWluKGludCBhcmdjLCBj
aGFyICoqYXJndikKIAkJCWNhc2UgJ3AnOgogCQkJCXBvcnQgPSBhdG9pKG9wdGFyZyk7CiAJCQkJ
YnJlYWs7CisJCQljYXNlICdQJzoKKwkJCQlwb2xpY3kgPSBhdG9pKG9wdGFyZyk7CisJCQkJYnJl
YWs7CiAJCQljYXNlICdFJzoKIAkJCQlsb2NhbF91ZHBfcG9ydCA9IGF0b2kob3B0YXJnKTsKIAkJ
CQlicmVhazsKQEAgLTQyNCw2ICs1MDMsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy
Z3YpCiAJCQljYXNlICdTJzoKIAkJCQlzbmRidWZzaXplID0gYXRvaShvcHRhcmcpOwogCQkJCWJy
ZWFrOworCQkJY2FzZSAndCc6CisJCQkJdGltZXRvbGl2ZSA9IGF0b2kob3B0YXJnKTsKKwkJCQli
cmVhazsKIAkJCWNhc2UgJ1QnOgogCQkJCXJ1bnRpbWUgPSBhdG9pKG9wdGFyZyk7CiAJCQkJbnVt
YmVyX29mX21lc3NhZ2VzID0gMDsKQEAgLTQ0MSw5ICs1MjMsNiBAQCBpbnQgbWFpbihpbnQgYXJn
YywgY2hhciAqKmFyZ3YpCiAJCQkJdmVyYm9zZSA9IDE7CiAJCQkJdmVyeV92ZXJib3NlID0gMTsK
IAkJCQlicmVhazsKLQkJCWNhc2UgJ0QnOgotCQkJCW5vZGVsYXkgPSAxOwotCQkJCWJyZWFrOwog
CQkJZGVmYXVsdDoKIAkJCQlmcHJpbnRmKHN0ZGVyciwgIiVzIiwgVXNhZ2UpOwogCQkJCWV4aXQo
MSk7CkBAIC00NzksNiArNTU4LDE0IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikK
IAkJCQkJb3B0ID0gYXJndltvcHRpbmRdOwogCQkJCQlwb3J0ID0gYXRvaShvcHQpOwogCQkJCQli
cmVhazsKKwkJCQljYXNlICdQJzoKKwkJCQkJaWYgKCsrb3B0aW5kID49IGFyZ2MpIHsKKwkJCQkJ
CXByaW50ZigiJXMiLCBVc2FnZSk7CisJCQkJCQlleGl0KDEpOworCQkJCQl9CisJCQkJCW9wdCA9
IGFyZ3Zbb3B0aW5kXTsKKwkJCQkJcG9saWN5ID0gYXRvaShvcHQpOworCQkJCQlicmVhazsKIAkJ
CQljYXNlICduJzoKIAkJCQkJaWYgKCsrb3B0aW5kID49IGFyZ2MpIHsKIAkJCQkJCXByaW50Zigi
JXMiLCBVc2FnZSk7CkBAIC01MzUsNiArNjIyLDE0IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFy
ICoqYXJndikKIAkJCQkJb3B0ID0gYXJndltvcHRpbmRdOwogCQkJCQlzbmRidWZzaXplID0gYXRv
aShvcHQpOwogCQkJCQlicmVhazsKKwkJCQljYXNlICd0JzoKKwkJCQkJaWYgKCsrb3B0aW5kID49
IGFyZ2MpIHsKKwkJCQkJCXByaW50ZigiJXMiLCBVc2FnZSk7CisJCQkJCQlleGl0KDEpOworCQkJ
CQl9CisJCQkJCW9wdCA9IGFyZ3Zbb3B0aW5kXTsKKwkJCQkJdGltZXRvbGl2ZSA9IGF0b2kob3B0
KTsKKwkJCQkJYnJlYWs7CiAJCQkJY2FzZSAnVCc6CiAJCQkJCWlmICgrK29wdGluZCA+PSBhcmdj
KSB7CiAJCQkJCQlwcmludGYoIiVzIiwgVXNhZ2UpOwpAQCAtNTgyLDExICs2NzcsMTIgQEAgaW50
IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCWxvY2FsX2FkZHIuc2luX3BvcnQgPSBodG9u
cyhsb2NhbF9wb3J0KTsKIAlsb2NhbF9hZGRyLnNpbl9hZGRyLnNfYWRkciA9IHNyY0FkZHI7CiAK
LQl1c3JzY3RwX2luaXQobG9jYWxfdWRwX3BvcnQsIE5VTEwsIGRlYnVnX3ByaW50Zik7CisJdXNy
c2N0cF9pbml0KGxvY2FsX3VkcF9wb3J0LCBOVUxMLCBkZWJ1Z19wcmludGZfc3RhY2spOwogI2lm
ZGVmIFNDVFBfREVCVUcKIAl1c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9kZWJ1Z19vbihTQ1RQX0RF
QlVHX0FMTCk7CiAjZW5kaWYKIAl1c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9ibGFja2hvbGUoMik7
CisJdXNyc2N0cF9zeXNjdGxfc2V0X3NjdHBfbm9fY3N1bV9vbl9sb29wYmFjaygwKTsKIAl1c3Jz
Y3RwX3N5c2N0bF9zZXRfc2N0cF9lbmFibGVfc2Fja19pbW1lZGlhdGVseSgxKTsKIAogCWlmIChj
bGllbnQpIHsKQEAgLTY1MCwzMiArNzQ2LDM3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoq
YXJndikKIAkJCWlmICh1c2VfY2IpIHsKIAkJCQlzdHJ1Y3Qgc29ja2V0ICpjb25uX3NvY2s7CiAK
LQkJCQlpZiAoKGNvbm5fc29jayA9IHVzcnNjdHBfYWNjZXB0KHBzb2NrLCAoc3RydWN0IHNvY2th
ZGRyICopICZyZW1vdGVfYWRkciwgJmFkZHJfbGVuKSk9PSBOVUxMKSB7CisJCQkJaWYgKChjb25u
X3NvY2sgPSB1c3JzY3RwX2FjY2VwdChwc29jaywgKHN0cnVjdCBzb2NrYWRkciAqKSAmcmVtb3Rl
X2FkZHIsICZhZGRyX2xlbikpID09IE5VTEwpIHsKIAkJCQkJcGVycm9yKCJ1c3JzY3RwX2FjY2Vw
dCIpOwogCQkJCQljb250aW51ZTsKIAkJCQl9CiAJCQl9IGVsc2UgewogCQkJCXN0cnVjdCBzb2Nr
ZXQgKipjb25uX3NvY2s7CiAKLQkJCQljb25uX3NvY2sgPSAoc3RydWN0IHNvY2tldCAqKiltYWxs
b2Moc2l6ZW9mKHN0cnVjdCBzb2NrZXQgKikpOwotCQkJCWlmICgoKmNvbm5fc29jayA9IHVzcnNj
dHBfYWNjZXB0KHBzb2NrLCAoc3RydWN0IHNvY2thZGRyICopICZyZW1vdGVfYWRkciwgJmFkZHJf
bGVuKSk9PSBOVUxMKSB7CisJCQkJY29ubl9zb2NrID0gKHN0cnVjdCBzb2NrZXQgKiopIG1hbGxv
YyhzaXplb2Yoc3RydWN0IHNvY2tldCAqKSk7CisJCQkJaWYgKCgqY29ubl9zb2NrID0gdXNyc2N0
cF9hY2NlcHQocHNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikgJnJlbW90ZV9hZGRyLCAmYWRkcl9s
ZW4pKSA9PSBOVUxMKSB7CiAJCQkJCXBlcnJvcigidXNyc2N0cF9hY2NlcHQiKTsKIAkJCQkJY29u
dGludWU7CiAJCQkJfQogI2lmZGVmIF9XSU4zMgotCQkJCXRpZCA9IENyZWF0ZVRocmVhZChOVUxM
LCAwLCAmaGFuZGxlX2Nvbm5lY3Rpb24sICh2b2lkICopY29ubl9zb2NrLCAwLCBOVUxMKTsKKwkJ
CQlpZiAoKHRpZCA9IENyZWF0ZVRocmVhZChOVUxMLCAwLCAmaGFuZGxlX2Nvbm5lY3Rpb24sICh2
b2lkICopY29ubl9zb2NrLCAwLCBOVUxMKSkgPT0gTlVMTCkgeworCQkJCQlmcHJpbnRmKHN0ZGVy
ciwgIkNyZWF0ZVRocmVhZCgpIGZhaWxlZCB3aXRoIGVycm9yOiAlZFxuIiwgR2V0TGFzdEVycm9y
KCkpOwogI2Vsc2UKLQkJCQlwdGhyZWFkX2NyZWF0ZSgmdGlkLCBOVUxMLCAmaGFuZGxlX2Nvbm5l
Y3Rpb24sICh2b2lkICopY29ubl9zb2NrKTsKKwkJCQlpZiAoKHJjID0gcHRocmVhZF9jcmVhdGUo
JnRpZCwgTlVMTCwgJmhhbmRsZV9jb25uZWN0aW9uLCAodm9pZCAqKWNvbm5fc29jaykpICE9IDAp
IHsKKwkJCQkJZnByaW50ZihzdGRlcnIsICJwdGhyZWFkX2NyZWF0ZTogJXNcbiIsIHN0cmVycm9y
KHJjKSk7CiAjZW5kaWYKKwkJCQkJdXNyc2N0cF9jbG9zZSgqY29ubl9zb2NrKTsKKwkJCQkJY29u
dGludWU7CisJCQkJfQogCQkJfQogCQkJaWYgKHZlcmJvc2UpIHsKLQkJCQkvLyBjb25zdCBjaGFy
ICppbmV0X250b3AoaW50IGFmLCBjb25zdCB2b2lkICpzcmMsIGNoYXIgKmRzdCwgc29ja2xlbl90
IHNpemUpCi0JCQkJLy9pbmV0X250b2EocmVtb3RlX2FkZHIuc2luX2FkZHIpCisJCQkJLyogY29u
c3QgY2hhciAqaW5ldF9udG9wKGludCBhZiwgY29uc3Qgdm9pZCAqc3JjLCBjaGFyICpkc3QsIHNv
Y2tsZW5fdCBzaXplKQorCQkJCWluZXRfbnRvYShyZW1vdGVfYWRkci5zaW5fYWRkcikgKi8KIAkJ
CQljaGFyIGFkZHJidWZbSU5FVF9BRERSU1RSTEVOXTsKIAkJCQlwcmludGYoIkNvbm5lY3Rpb24g
YWNjZXB0ZWQgZnJvbSAlczolZFxuIiwgaW5ldF9udG9wKEFGX0lORVQsICYocmVtb3RlX2FkZHIu
c2luX2FkZHIpLCBhZGRyYnVmLCBJTkVUX0FERFJTVFJMRU4pLCBudG9ocyhyZW1vdGVfYWRkci5z
aW5fcG9ydCkpOwogCQkJfQogCQl9Ci0JCS8vdXNyc2N0cF9jbG9zZShwc29jayk7IC8vIHVucmVh
Y2hhYmxlCisJCS8qIHVzcnNjdHBfY2xvc2UocHNvY2spOyAgdW5yZWFjaGFibGUgKi8KIAl9IGVs
c2UgewogCQltZW1zZXQoJmVuY2FwcywgMCwgc2l6ZW9mKHN0cnVjdCBzY3RwX3VkcGVuY2Fwcykp
OwogCQllbmNhcHMuc3VlX2FkZHJlc3Muc3NfZmFtaWx5ID0gQUZfSU5FVDsKQEAgLTc0MSwxMyAr
ODQyLDEzIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCXNpZ25hbChTSUdB
TFJNLCBzdG9wX3NlbmRlcik7CiAJCQlhbGFybShydW50aW1lKTsKICNlbHNlCi0JCQlwcmludGYo
IllvdSBjYW5ub3Qgc2V0IHRoZSBydW50aW1lIGluIFdpbmRvd3MgeWV0XG4iKTsKKwkJCWZwcmlu
dGYoc3RkZXJyLCAiWW91IGNhbm5vdCBzZXQgdGhlIHJ1bnRpbWUgaW4gV2luZG93cyB5ZXRcbiIp
OwogCQkJZXhpdCgtMSk7CiAjZW5kaWYKIAkJfQogCiAJCWlmICh1c2VfY2IpIHsKLQkJCXdoaWxl
IChkb25lIDwgMiAmJiAobWVzc2FnZXMgPCAobnVtYmVyX29mX21lc3NhZ2VzIC0gMSkpKSB7CisJ
CQl3aGlsZSAoZG9uZSA8IDIgJiYgKGNiX21lc3NhZ2VzIDwgKG51bWJlcl9vZl9tZXNzYWdlcyAt
IDEpKSkgewogI2lmZGVmIF9XSU4zMgogCQkJCVNsZWVwKDEwMDApOwogI2Vsc2UKQEAgLTc1NSwx
NCArODU2LDQ1IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICNlbmRpZgogCQkJ
fQogCQl9IGVsc2UgewotCQkJc25kaW5mby5zbmRfc2lkID0gMDsKLQkJCXNuZGluZm8uc25kX2Zs
YWdzID0gMDsKKwkJCXNlbmR2X3NwYS5zZW5kdl9mbGFncyA9IFNDVFBfU0VORF9TTkRJTkZPX1ZB
TElEIHwgU0NUUF9TRU5EX1BSSU5GT19WQUxJRDsKKworCQkJc2VuZHZfc3BhLnNlbmR2X3NuZGlu
Zm8uc25kX3NpZCA9IDA7CisJCQlzZW5kdl9zcGEuc2VuZHZfc25kaW5mby5zbmRfZmxhZ3MgPSAw
OwogCQkJaWYgKHVub3JkZXJlZCAhPSAwKSB7Ci0JCQkJc25kaW5mby5zbmRfZmxhZ3MgfD0gU0NU
UF9VTk9SREVSRUQ7CisJCQkJc2VuZHZfc3BhLnNlbmR2X3NuZGluZm8uc25kX2ZsYWdzIHw9IFND
VFBfVU5PUkRFUkVEOwogCQkJfQotCQkJc25kaW5mby5zbmRfcHBpZCA9IDA7Ci0JCQlzbmRpbmZv
LnNuZF9jb250ZXh0ID0gMDsKLQkJCXNuZGluZm8uc25kX2Fzc29jX2lkID0gMDsKKwkJCXNlbmR2
X3NwYS5zZW5kdl9zbmRpbmZvLnNuZF9wcGlkID0gMDsKKwkJCXNlbmR2X3NwYS5zZW5kdl9zbmRp
bmZvLnNuZF9jb250ZXh0ID0gMDsKKwkJCXNlbmR2X3NwYS5zZW5kdl9zbmRpbmZvLnNuZF9hc3Nv
Y19pZCA9IDA7CisKKwkJCXNlbmR2X3NwYS5zZW5kdl9wcmluZm8ucHJfcG9saWN5ID0gMDsKKwkJ
CXN3aXRjaCAocG9saWN5KSB7CisjaWZkZWYgU0NUUF9QUl9TQ1RQX05PTkUKKwkJCWNhc2UgMDoK
KwkJCQlzZW5kdl9zcGEuc2VuZHZfcHJpbmZvLnByX3BvbGljeSA9IFNDVFBfUFJfU0NUUF9OT05F
OworCQkJCWJyZWFrOworI2VuZGlmCisjaWZkZWYgU0NUUF9QUl9TQ1RQX1RUTAorCQkJY2FzZSAx
OgorCQkJCXNlbmR2X3NwYS5zZW5kdl9wcmluZm8ucHJfcG9saWN5ID0gU0NUUF9QUl9TQ1RQX1RU
TDsKKwkJCQlicmVhazsKKyNlbmRpZgorI2lmZGVmIFNDVFBfUFJfU0NUUF9SVFgKKwkJCWNhc2Ug
MjoKKwkJCQlzZW5kdl9zcGEuc2VuZHZfcHJpbmZvLnByX3BvbGljeSA9IFNDVFBfUFJfU0NUUF9S
VFg7CisJCQkJYnJlYWs7CisjZW5kaWYKKyNpZmRlZiBTQ1RQX1BSX1NDVFBfQlVGCisJCQljYXNl
IDM6CisJCQkJc2VuZHZfc3BhLnNlbmR2X3ByaW5mby5wcl9wb2xpY3kgPSBTQ1RQX1BSX1NDVFBf
QlVGOworCQkJCWJyZWFrOworI2VuZGlmCisJCQlkZWZhdWx0OgorCQkJCXByaW50ZigiVW5rbm93
biBQUi1TQ1RQIHBvbGljeS5cbiIpOworCQkJCWJyZWFrOworCQkJfQorCQkJc2VuZHZfc3BhLnNl
bmR2X3ByaW5mby5wcl92YWx1ZSA9IHRpbWV0b2xpdmU7CisKIAkJCWlmICh2ZXJib3NlKSB7CiAJ
CQkJcHJpbnRmKCJTdGFydCBzZW5kaW5nICIpOwogCQkJCWlmIChudW1iZXJfb2ZfbWVzc2FnZXMg
PiAwKSB7CkBAIC03ODAsNyArOTEyLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2
KQogCQkJCX0KIAogCQkJCWlmICh1c3JzY3RwX3NlbmR2KHBzb2NrLCBidWZmZXIsIGxlbmd0aCwg
KHN0cnVjdCBzb2NrYWRkciAqKSAmcmVtb3RlX2FkZHIsIDEsCi0JCQkJICAgICAgICAgICAgICAg
ICAgKHZvaWQgKikmc25kaW5mbywgKHNvY2tsZW5fdClzaXplb2Yoc3RydWN0IHNjdHBfc25kaW5m
byksIFNDVFBfU0VORFZfU05ESU5GTywKKwkJCQkgICAgICAgICAgICAgICAgICAodm9pZCAqKSZz
ZW5kdl9zcGEsIChzb2NrbGVuX3Qpc2l6ZW9mKHN0cnVjdCBzY3RwX3NlbmR2X3NwYSksIFNDVFBf
U0VORFZfU1BBLAogCQkJCSAgICAgICAgICAgICAgICAgIDApIDwgMCkgewogCQkJCQlwZXJyb3Io
InVzcnNjdHBfc2VuZHYiKTsKIAkJCQkJZXhpdCgxKTsKQEAgLTc5MSw5ICs5MjMsOSBAQCBpbnQg
bWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQkJcHJpbnRmKCJTZW5kaW5nIG1lc3NhZ2Ug
bnVtYmVyICVsdS5cbiIsIG1lc3NhZ2VzICsgMSk7CiAJCQl9CiAKLQkJCXNuZGluZm8uc25kX2Zs
YWdzIHw9IFNDVFBfRU9GOworCQkJc2VuZHZfc3BhLnNlbmR2X3NuZGluZm8uc25kX2ZsYWdzIHw9
IFNDVFBfRU9GOwogCQkJaWYgKHVzcnNjdHBfc2VuZHYocHNvY2ssIGJ1ZmZlciwgbGVuZ3RoLCAo
c3RydWN0IHNvY2thZGRyICopICZyZW1vdGVfYWRkciwgMSwKLQkJCSAgICAgICAgICAgICAgICAg
ICh2b2lkICopJnNuZGluZm8sIChzb2NrbGVuX3Qpc2l6ZW9mKHN0cnVjdCBzY3RwX3NuZGluZm8p
LCBTQ1RQX1NFTkRWX1NORElORk8sCisJCQkgICAgICAgICAgICAgICAgICAodm9pZCAqKSZzZW5k
dl9zcGEsIChzb2NrbGVuX3Qpc2l6ZW9mKHN0cnVjdCBzY3RwX3NlbmR2X3NwYSksIFNDVFBfU0VO
RFZfU1BBLAogCQkJICAgICAgICAgICAgICAgICAgMCkgPCAwKSB7CiAJCQkJcGVycm9yKCJ1c3Jz
Y3RwX3NlbmR2Iik7CiAJCQkJZXhpdCgxKTsKQEAgLTgxMCw3ICs5NDIsNyBAQCBpbnQgbWFpbihp
bnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCWdldHRpbWVvZmRheSgmdGltZV9ub3csIE5VTEwpOwog
CQl0aW1lcnN1YigmdGltZV9ub3csICZ0aW1lX3N0YXJ0LCAmdGltZV9kaWZmKTsKIAkJc2Vjb25k
cyA9IHRpbWVfZGlmZi50dl9zZWMgKyAoZG91YmxlKXRpbWVfZGlmZi50dl91c2VjLzEwMDAwMDA7
Ci0JCXByaW50ZigiJXMgb2YgJWxkIG1lc3NhZ2VzIG9mIGxlbmd0aCAldSB0b29rICVmIHNlY29u
ZHMuXG4iLAorCQlwcmludGYoIiVzIG9mICVsdSBtZXNzYWdlcyBvZiBsZW5ndGggJWQgdG9vayAl
ZiBzZWNvbmRzLlxuIiwKIAkJICAgICAgICJTZW5kaW5nIiwgbWVzc2FnZXMsIGxlbmd0aCwgc2Vj
b25kcyk7CiAJCXRocm91Z2hwdXQgPSAoZG91YmxlKW1lc3NhZ2VzICogKGRvdWJsZSlsZW5ndGgg
LyBzZWNvbmRzOwogCQlwcmludGYoIlRocm91Z2hwdXQgd2FzICVmIEJ5dGUvc2VjLlxuIiwgdGhy
b3VnaHB1dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy90c2N0cF91cGNhbGwuYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3Byb2dyYW1zL3RzY3RwX3VwY2FsbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwY2M0ODM3MjA4
MmEwOWNhZGFhNjVlNDI5ZjAxNDYxYTNlODE2NTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi9wcm9ncmFtcy90c2N0cF91cGNhbGwuYwpAQCAtMCwwICsxLDc4MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwNS0yMDEzIE1pY2hhZWwgVHVleGVuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEt
MjAxMyBJcmVuZSBSdWVuZ2VsZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE5IEZlbGl4IFdl
aW5yYW5rCisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRo
ZXIgdGhlIG5hbWUgb2YgdGhlIHByb2plY3Qgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0
b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IFBST0pFQ1QgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4JSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIFBST0pFQ1QgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaWZkZWYgX1dJTjMyCisjaW5j
bHVkZSA8d2luc29jazIuaD4KKyNpbmNsdWRlIDx3czJ0Y3BpcC5oPgorI2luY2x1ZGUgPHN0ZGxp
Yi5oPgorI2luY2x1ZGUgPGNydGRiZy5oPgorI2luY2x1ZGUgPHN5cy90aW1lYi5oPgorI2Vsc2UK
KyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2luY2x1
ZGUgPGFycGEvaW5ldC5oPgorI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjaW5jbHVkZSA8dW5pc3Rk
Lmg+CisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3RkYXJnLmg+Cisj
aW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcu
aD4KKyNpbmNsdWRlIDxzaWduYWwuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGlu
dHR5cGVzLmg+CisjaWZkZWYgTElOVVgKKyNpbmNsdWRlIDxnZXRvcHQuaD4KKyNlbmRpZgorI2lu
Y2x1ZGUgPHVzcnNjdHAuaD4KKyNpbmNsdWRlICJwcm9ncmFtc19oZWxwZXIuaCIKKworI2RlZmlu
ZSBUU0NUUF9DTElFTlQgMQorI2RlZmluZSBUU0NUUF9TRVJWRVIgMgorCisjZGVmaW5lIERFRkFV
TFRfTEVOR1RIICAgICAgICAgICAgIDEwMjQKKyNkZWZpbmUgREVGQVVMVF9OVU1CRVJfT0ZfTUVT
U0FHRVMgMTAyNAorI2RlZmluZSBERUZBVUxUX1BPUlQgICAgICAgICAgICAgICA1MDAxCisjZGVm
aW5lIEJVRkZFUlNJWkUgICAgICAgICAgICAgICAgICgxPDwxNikKKworc3RhdGljIGludCBwYXJf
dmVyYm9zZSA9IDA7CitzdGF0aWMgaW50IHBhcl92ZXJ5X3ZlcmJvc2UgPSAwOworc3RhdGljIHVu
c2lnbmVkIGludCBkb25lID0gMDsKKworc3RydWN0IHRzY3RwX21ldGEgeworCXVpbnQ4X3QgcGFy
X3JvbGU7CisJdWludDhfdCBwYXJfc3RhdHNfaHVtYW47CisJdWludDhfdCBwYXJfb3JkZXJlZDsK
Kwl1aW50NjRfdCBwYXJfbWVzc2FnZXM7CisJdWludDY0X3QgcGFyX21lc3NhZ2VfbGVuZ3RoOwor
CXVpbnQ2NF90IHBhcl9ydW50aW1lOworCisJdWludDY0X3Qgc3RhdF9tZXNzYWdlczsKKwl1aW50
NjRfdCBzdGF0X21lc3NhZ2VfbGVuZ3RoOworCXVpbnQ2NF90IHN0YXRfbm90aWZpY2F0aW9uczsK
Kwl1aW50NjRfdCBzdGF0X3JlY3ZfY2FsbHM7CisJc3RydWN0IHRpbWV2YWwgc3RhdF9zdGFydDsK
KworCXVpbnQ2NF90IHN0YXRfZnJhZ21lbnRfc3VtOworCisJY2hhciAqYnVmZmVyOworfTsKKwor
I2lmbmRlZiB0aW1lcnN1YgorI2RlZmluZSB0aW1lcnN1Yih0dnAsIHV2cCwgdnZwKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCWRvIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJCSh2dnApLT50dl9zZWMgPSAodHZw
KS0+dHZfc2VjIC0gKHV2cCktPnR2X3NlYzsgICAgXAorCQkodnZwKS0+dHZfdXNlYyA9ICh0dnAp
LT50dl91c2VjIC0gKHV2cCktPnR2X3VzZWM7IFwKKwkJaWYgKCh2dnApLT50dl91c2VjIDwgMCkg
eyAgICAgICAgICAgICAgICAgICAgICAgICBcCisJCQkodnZwKS0+dHZfc2VjLS07ICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisJCQkodnZwKS0+dHZfdXNlYyArPSAxMDAwMDAwOyAgICAgICAg
ICAgICAgICBcCisJCX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorCX0gd2hpbGUgKDApCisjZW5kaWYKKworI2lmZGVmIF9XSU4zMgorc3RhdGljIHZv
aWQKK2dldHRpbWVvZmRheShzdHJ1Y3QgdGltZXZhbCAqdHYsIHZvaWQgKmlnbm9yZSkKK3sKKwlG
SUxFVElNRSBmaWxldGltZTsKKwlVTEFSR0VfSU5URUdFUiB1bGFyZ2U7CisKKwlHZXRTeXN0ZW1U
aW1lQXNGaWxlVGltZSgmZmlsZXRpbWUpOworCXVsYXJnZS5Mb3dQYXJ0ID0gZmlsZXRpbWUuZHdM
b3dEYXRlVGltZTsKKwl1bGFyZ2UuSGlnaFBhcnQgPSBmaWxldGltZS5kd0hpZ2hEYXRlVGltZTsK
KwkvKiBDaGFuZ2UgYmFzZSBmcm9tIEphbiAxIDE2MDEgMDA6MDA6MDAgdG8gSmFuIDEgMTk3MCAw
MDowMDowMCAqLworI2lmIGRlZmluZWQoX19NSU5HVzMyX18pCisJdWxhcmdlLlF1YWRQYXJ0IC09
IDExNjQ0NDczNjAwMDAwMDAwMFVMTDsKKyNlbHNlCisJdWxhcmdlLlF1YWRQYXJ0IC09IDExNjQ0
NDczNjAwMDAwMDAwMFVJNjQ7CisjZW5kaWYKKwkvKgorCSAqIHVsYXJnZS5RdWFkUGFydCBpcyBu
b3cgdGhlIG51bWJlciBvZiAxMDAtbmFub3NlY29uZCBpbnRlcnZhbHMKKwkgKiBzaW5jZSBKYW4g
MSAxOTcwIDAwOjAwOjAwLgorCSAqLworI2lmIGRlZmluZWQoX19NSU5HVzMyX18pCisJdHYtPnR2
X3NlYyA9IChsb25nKSh1bGFyZ2UuUXVhZFBhcnQgLyAxMDAwMDAwMFVMTCk7CisJdHYtPnR2X3Vz
ZWMgPSAobG9uZykoKHVsYXJnZS5RdWFkUGFydCAlIDEwMDAwMDAwVUxMKSAvIDEwVUxMKTsKKyNl
bHNlCisJdHYtPnR2X3NlYyA9IChsb25nKSh1bGFyZ2UuUXVhZFBhcnQgLyAxMDAwMDAwMFVJNjQp
OworCXR2LT50dl91c2VjID0gKGxvbmcpKCh1bGFyZ2UuUXVhZFBhcnQgJSAxMDAwMDAwMFVJNjQp
IC8gMTBVSTY0KTsKKyNlbmRpZgorfQorI2VuZGlmCisKKworY2hhciBVc2FnZVtdID0KKyJVc2Fn
ZTogdHNjdHAgW29wdGlvbnNdIFthZGRyZXNzXVxuIgorIk9wdGlvbnM6XG4iCisiICAgICAgICAt
YSAgICAgICAgICAgICBzZXQgYWRhcHRhdGlvbiBsYXllciBpbmRpY2F0aW9uXG4iCisiICAgICAg
ICAtRSAgICAgICAgICAgICBsb2NhbCBVRFAgZW5jYXBzdWxhdGlvbiBwb3J0IChkZWZhdWx0IDk4
OTkpXG4iCisiICAgICAgICAtZiAgICAgICAgICAgICBmcmFnbWVudGF0aW9uIHBvaW50XG4iCisi
ICAgICAgICAtSCAgICAgICAgICAgICBodW1hbiByZWFkYWJsZSBzdGF0aXN0aWNzIgorIiAgICAg
ICAgLWwgICAgICAgICAgICAgbWVzc2FnZSBsZW5ndGhcbiIKKyIgICAgICAgIC1MICAgICAgICAg
ICAgIGJpbmQgdG8gbG9jYWwgSVAgKGRlZmF1bHQgSU5BRERSX0FOWSlcbiIKKyIgICAgICAgIC1u
ICAgICAgICAgICAgIG51bWJlciBvZiBtZXNzYWdlcyBzZW50ICgwIG1lYW5zIGluZmluaXRlKS9y
ZWNlaXZlZFxuIgorIiAgICAgICAgLUQgICAgICAgICAgICAgdHVybnMgTmFnbGUgb2ZmXG4iCisi
ICAgICAgICAtUiAgICAgICAgICAgICBzb2NrZXQgcmVjdiBidWZmZXJcbiIKKyIgICAgICAgIC1T
ICAgICAgICAgICAgIHNvY2tldCBzZW5kIGJ1ZmZlclxuIgorIiAgICAgICAgLVQgICAgICAgICAg
ICAgdGltZSB0byBzZW5kIG1lc3NhZ2VzXG4iCisiICAgICAgICAtdSAgICAgICAgICAgICB1c2Ug
dW5vcmRlcmVkIHVzZXIgbWVzc2FnZXNcbiIKKyIgICAgICAgIC1VICAgICAgICAgICAgIHJlbW90
ZSBVRFAgZW5jYXBzdWxhdGlvbiBwb3J0XG4iCisiICAgICAgICAtdiAgICAgICAgICAgICB2ZXJi
b3NlXG4iCisiICAgICAgICAtViAgICAgICAgICAgICB2ZXJ5IHZlcmJvc2VcbiIKKzsKKworc3Rh
dGljIHZvaWQgaGFuZGxlX3VwY2FsbChzdHJ1Y3Qgc29ja2V0ICp1cGNhbGxfc29ja2V0LCB2b2lk
ICp1cGNhbGxfZGF0YSwgaW50IHVwY2FsbF9mbGFncyk7CisKK3N0YXRpYyBjb25zdCBjaGFyICpi
eXRlczJodW1hbih1aW50NjRfdCBieXRlcykKK3sKKwljaGFyICpzdWZmaXhbXSA9IHsiIiwgIksi
LCAiTSIsICJHIiwgIlQifTsKKwljaGFyIHN1ZmZpeF9sZW5ndGggPSBzaXplb2Yoc3VmZml4KSAv
IHNpemVvZihzdWZmaXhbMF0pOworCWludCBpID0gMDsKKwlkb3VibGUgaHVtYW5fc2l6ZSA9IGJ5
dGVzOworCXN0YXRpYyBjaGFyIG91dHB1dFsyMDBdOworCisJaWYgKGJ5dGVzID4gMTAyNCkgewor
CQlmb3IgKGkgPSAwOyAoYnl0ZXMgLyAxMDI0KSA+IDAgJiYgaSA8IHN1ZmZpeF9sZW5ndGggLSAx
OyBpKyspIHsKKwkJCWh1bWFuX3NpemUgPSBieXRlcyAvIDEwMjQuMDsKKwkJCWJ5dGVzIC89IDEw
MjQ7CisJCX0KKwl9CisKKwlpZiAoc25wcmludGYob3V0cHV0LCBzaXplb2Yob3V0cHV0KSwgIiUu
MDJsZiAlcyIsIGh1bWFuX3NpemUsIHN1ZmZpeFtpXSkgPCAwKSB7CisJCW91dHB1dFswXSA9ICdc
MCc7CisJfQorCXJldHVybiBvdXRwdXQ7Cit9CisKKworc3RhdGljIHZvaWQKK2hhbmRsZV9hY2Nl
cHQoc3RydWN0IHNvY2tldCAqdXBjYWxsX3NvY2tldCwgdm9pZCAqdXBjYWxsX2RhdGEsIGludCB1
cGNhbGxfZmxhZ3MpCit7CisJc3RydWN0IHNvY2tldCAqY29ubl9zb2NrOworCXN0cnVjdCBzb2Nr
YWRkcl9pbiByZW1vdGVfYWRkcjsKKwlzb2NrbGVuX3QgYWRkcl9sZW4gPSBzaXplb2Yoc3RydWN0
IHNvY2thZGRyX2luKTsKKwlzdHJ1Y3QgdHNjdHBfbWV0YSAqbWV0YV9saXN0ZW5pbmcsICptZXRh
X2FjY2VwdGVkOworCWNoYXIgYWRkcmJ1ZltJTkVUX0FERFJTVFJMRU5dOworCisJbWV0YV9saXN0
ZW5pbmcgPSAoc3RydWN0IHRzY3RwX21ldGEgKikgdXBjYWxsX2RhdGE7CisKKwltZW1zZXQoJnJl
bW90ZV9hZGRyLCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7CisJaWYgKCgoY29ubl9z
b2NrID0gdXNyc2N0cF9hY2NlcHQodXBjYWxsX3NvY2tldCwgKHN0cnVjdCBzb2NrYWRkciAqKSAm
cmVtb3RlX2FkZHIsICZhZGRyX2xlbikpID09IE5VTEwpICYmIChlcnJubyAhPSBFSU5QUk9HUkVT
UykpIHsKKwkJcGVycm9yKCJ1c3JzY3RwX2FjY2VwdCIpOworCQlleGl0KEVYSVRfRkFJTFVSRSk7
CisJfQorCisJaWYgKHBhcl92ZXJib3NlKSB7CisJCXByaW50ZigiQ29ubmVjdGlvbiBhY2NlcHRl
ZCBmcm9tICVzOiVkXG4iLCBpbmV0X250b3AoQUZfSU5FVCwgJihyZW1vdGVfYWRkci5zaW5fYWRk
ciksIGFkZHJidWYsIElORVRfQUREUlNUUkxFTiksIG50b2hzKHJlbW90ZV9hZGRyLnNpbl9wb3J0
KSk7CisJfQorCisJbWV0YV9hY2NlcHRlZCA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IHRzY3RwX21l
dGEpKTsKKwlpZiAoIW1ldGFfYWNjZXB0ZWQpIHsKKwkJcHJpbnRmKCJtYWxsb2MoKSBmYWlsZWQh
XG4iKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKworCW1lbXNldChtZXRhX2FjY2VwdGVk
LCAwLCBzaXplb2Yoc3RydWN0IHRzY3RwX21ldGEpKTsKKworCW1ldGFfYWNjZXB0ZWQtPnBhcl9y
b2xlID0gbWV0YV9saXN0ZW5pbmctPnBhcl9yb2xlOworCW1ldGFfYWNjZXB0ZWQtPnBhcl9zdGF0
c19odW1hbiA9IG1ldGFfbGlzdGVuaW5nLT5wYXJfc3RhdHNfaHVtYW47CisJbWV0YV9hY2NlcHRl
ZC0+YnVmZmVyID0gbWFsbG9jKEJVRkZFUlNJWkUpOworCisJaWYgKCFtZXRhX2FjY2VwdGVkLT5i
dWZmZXIpIHsKKwkJcHJpbnRmKCJtYWxsb2MoKSBmYWlsZWQhXG4iKTsKKwkJZXhpdChFWElUX0ZB
SUxVUkUpOworCX0KKworCXVzcnNjdHBfc2V0X3VwY2FsbChjb25uX3NvY2ssIGhhbmRsZV91cGNh
bGwsIG1ldGFfYWNjZXB0ZWQpOworfQorCitzdGF0aWMgdm9pZAoraGFuZGxlX3VwY2FsbChzdHJ1
Y3Qgc29ja2V0ICp1cGNhbGxfc29ja2V0LCB2b2lkICp1cGNhbGxfZGF0YSwgaW50IHVwY2FsbF9m
bGFncykKK3sKKwlpbnQgZXZlbnRzID0gdXNyc2N0cF9nZXRfZXZlbnRzKHVwY2FsbF9zb2NrZXQp
OworCXN0cnVjdCB0c2N0cF9tZXRhKiB0c2N0cF9tZXRhID0gKHN0cnVjdCB0c2N0cF9tZXRhKikg
dXBjYWxsX2RhdGE7CisKKwlzdHJ1Y3Qgc2N0cF9yZWN2dl9ybiBybjsKKwlzc2l6ZV90IG47CisJ
c3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgYWRkcjsKKwlpbnQgcmVjdl9mbGFncyA9IDA7CisJc29j
a2xlbl90IGxlbiA9IChzb2NrbGVuX3Qpc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlKTsK
Kwl1bnNpZ25lZCBpbnQgaW5mb3R5cGUgPSAwOworCXNvY2tsZW5fdCBpbmZvbGVuID0gc2l6ZW9m
KHN0cnVjdCBzY3RwX3JlY3Z2X3JuKTsKKwlzdHJ1Y3Qgc2N0cF9yY3ZpbmZvICpyY3ZpbmZvID0g
KHN0cnVjdCBzY3RwX3JjdmluZm8gKikgJnJuOworCW1lbXNldCgmcm4sIDAsIHNpemVvZihzdHJ1
Y3Qgc2N0cF9yZWN2dl9ybikpOworCXN0cnVjdCB0aW1ldmFsIG5vdGVfdGltZTsKKwl1bmlvbiBz
Y3RwX25vdGlmaWNhdGlvbiAqc25wOworCXN0cnVjdCBzY3RwX3BhZGRyX2NoYW5nZSAqc3BjOwor
CXN0cnVjdCB0aW1ldmFsIHRpbWVfbm93OworCXN0cnVjdCB0aW1ldmFsIHRpbWVfZGlmZjsKKwlm
bG9hdCBzZWNvbmRzOworCXN0cnVjdCBzY3RwX3NuZGluZm8gc25kX2luZm87CisKKwlpZiAoZXZl
bnRzICYgU0NUUF9FVkVOVF9SRUFEKSB7CisJCXdoaWxlICgobiA9IHVzcnNjdHBfcmVjdnYodXBj
YWxsX3NvY2tldCwgdHNjdHBfbWV0YS0+YnVmZmVyLCBCVUZGRVJTSVpFLCAoc3RydWN0IHNvY2th
ZGRyICopICZhZGRyLCAmbGVuLCAodm9pZCAqKSZybiwgJmluZm9sZW4sICZpbmZvdHlwZSwgJnJl
Y3ZfZmxhZ3MpKSA+IDApIHsKKworCQkJaWYgKCF0c2N0cF9tZXRhLT5zdGF0X3JlY3ZfY2FsbHMp
IHsKKwkJCQlnZXR0aW1lb2ZkYXkoJnRzY3RwX21ldGEtPnN0YXRfc3RhcnQsIE5VTEwpOworCQkJ
fQorCQkJdHNjdHBfbWV0YS0+c3RhdF9yZWN2X2NhbGxzKys7CisKKwkJCWlmIChyZWN2X2ZsYWdz
ICYgTVNHX05PVElGSUNBVElPTikgeworCQkJCXRzY3RwX21ldGEtPnN0YXRfbm90aWZpY2F0aW9u
cysrOworCQkJCWdldHRpbWVvZmRheSgmbm90ZV90aW1lLCBOVUxMKTsKKwkJCQlpZiAocGFyX3Zl
cmJvc2UpIHsKKwkJCQkJcHJpbnRmKCJub3RpZmljYXRpb24gYXJyaXZlZCBhdCAlZlxuIiwgbm90
ZV90aW1lLnR2X3NlYyArIChkb3VibGUpbm90ZV90aW1lLnR2X3VzZWMgLyAxMDAwMDAwLjApOwor
CisJCQkJCXNucCA9ICh1bmlvbiBzY3RwX25vdGlmaWNhdGlvbiAqKXRzY3RwX21ldGEtPmJ1ZmZl
cjsKKwkJCQkJaWYgKHNucC0+c25faGVhZGVyLnNuX3R5cGUgPT0gU0NUUF9QRUVSX0FERFJfQ0hB
TkdFKSB7CisJCQkJCQlzcGMgPSAmc25wLT5zbl9wYWRkcl9jaGFuZ2U7CisJCQkJCQlwcmludGYo
IlNDVFBfUEVFUl9BRERSX0NIQU5HRTogc3RhdGU9JXUsIGVycm9yPSV1XG4iLHNwYy0+c3BjX3N0
YXRlLCBzcGMtPnNwY19lcnJvcik7CisJCQkJCX0KKwkJCQl9CisJCQl9IGVsc2UgeworCQkJCWlm
IChwYXJfdmVyeV92ZXJib3NlKSB7CisJCQkJCWlmIChpbmZvdHlwZSA9PSBTQ1RQX1JFQ1ZWX1JD
VklORk8pIHsKKwkJCQkJCXByaW50ZigiTWVzc2FnZSByZWNlaXZlZCAtICV6ZCBieXRlcyAtICVz
IC0gc2lkICV1IC0gdHNuICV1ICVzXG4iLAorCQkJCQkJCW4sCisJCQkJCQkJKHJjdmluZm8tPnJj
dl9mbGFncyAmIFNDVFBfVU5PUkRFUkVEKSA/ICJ1bm9yZGVyZWQiIDogIm9yZGVyZWQiLAorCQkJ
CQkJCXJjdmluZm8tPnJjdl9zaWQsCisJCQkJCQkJcmN2aW5mby0+cmN2X3RzbiwKKwkJCQkJCQko
cmVjdl9mbGFncyAmIE1TR19FT1IpID8gIi0gRU9SIiA6ICIiCisJCQkJCQkpOworCisJCQkJCX0g
ZWxzZSB7CisJCQkJCQlwcmludGYoIk1lc3NhZ2UgcmVjZWl2ZWQgLSAlemQgYnl0ZXMgJXNcbiIs
IG4sIChyZWN2X2ZsYWdzICYgTVNHX0VPUikgPyAiLSBFT1IiIDogIiIpOworCQkJCQl9CisJCQkJ
fQorCQkJCXRzY3RwX21ldGEtPnN0YXRfZnJhZ21lbnRfc3VtICs9IG47CisJCQkJaWYgKHJlY3Zf
ZmxhZ3MgJiBNU0dfRU9SKSB7CisJCQkJCXRzY3RwX21ldGEtPnN0YXRfbWVzc2FnZXMrKzsKKwkJ
CQkJaWYgKHRzY3RwX21ldGEtPnN0YXRfbWVzc2FnZV9sZW5ndGggPT0gMCkgeworCQkJCQkJdHNj
dHBfbWV0YS0+c3RhdF9tZXNzYWdlX2xlbmd0aCA9IHRzY3RwX21ldGEtPnN0YXRfZnJhZ21lbnRf
c3VtOworCQkJCQl9CisJCQkJfQorCQkJfQorCQl9CisKKwkJaWYgKG4gPCAwICYmIGVycm5vICE9
IEVBR0FJTiAmJiBlcnJubyAhPSBFV09VTERCTE9DSykgeworCQkJcGVycm9yKCJ1c3JzY3RwX3Jl
Y3Z2Iik7CisJCQlleGl0KEVYSVRfRkFJTFVSRSk7CisJCX0KKworCQlpZiAobiA9PSAwKSB7CisJ
CQlkb25lID0gMTsKKworCQkJZ2V0dGltZW9mZGF5KCZ0aW1lX25vdywgTlVMTCk7CisJCQl0aW1l
cnN1YigmdGltZV9ub3csICZ0c2N0cF9tZXRhLT5zdGF0X3N0YXJ0LCAmdGltZV9kaWZmKTsKKwkJ
CXNlY29uZHMgPSB0aW1lX2RpZmYudHZfc2VjICsgKGRvdWJsZSl0aW1lX2RpZmYudHZfdXNlYyAv
IDEwMDAwMDAuMDsKKworCQkJaWYgKHRzY3RwX21ldGEtPnBhcl9zdGF0c19odW1hbikgeworCQkJ
CXByaW50ZigiQ29ubmVjdGlvbiBjbG9zZWQgLSBzdGF0aXN0aWNzXG4iKTsKKworCQkJCXByaW50
ZigiXHRtZXNzYWdlIHNpemUgIDogJSIgUFJJdTY0ICJcbiIsIHRzY3RwX21ldGEtPnN0YXRfbWVz
c2FnZV9sZW5ndGgpOworCQkJCXByaW50ZigiXHRtZXNzYWdlcyAgICAgIDogJSIgUFJJdTY0ICJc
biIsIHRzY3RwX21ldGEtPnN0YXRfbWVzc2FnZXMpOworCQkJCXByaW50ZigiXHRyZWN2KCkgY2Fs
bHMgIDogJSIgUFJJdTY0ICJcbiIsIHRzY3RwX21ldGEtPnN0YXRfcmVjdl9jYWxscyk7CisJCQkJ
cHJpbnRmKCJcdG5vdGlmaWNhdGlvbnMgOiAlIiBQUkl1NjQgIlxuIiwgdHNjdHBfbWV0YS0+c3Rh
dF9ub3RpZmljYXRpb25zKTsKKwkJCQlwcmludGYoIlx0dHJhbnNmZXJyZWQgICA6ICVzQnl0ZVxu
IiwgYnl0ZXMyaHVtYW4odHNjdHBfbWV0YS0+c3RhdF9tZXNzYWdlX2xlbmd0aCAqIHRzY3RwX21l
dGEtPnN0YXRfbWVzc2FnZXMpKTsKKwkJCQlwcmludGYoIlx0cnVudGltZSAgICAgICA6ICUuMmYg
c1xuIiwgc2Vjb25kcyk7CisJCQkJcHJpbnRmKCJcdGdvb2RwdXQgICAgICAgOiAlc0JpdC9zXG4i
LCBieXRlczJodW1hbigoZG91YmxlKSB0c2N0cF9tZXRhLT5zdGF0X21lc3NhZ2VfbGVuZ3RoICog
KGRvdWJsZSkgdHNjdHBfbWV0YS0+c3RhdF9tZXNzYWdlcyAvIHNlY29uZHMgKiA4KSk7CisKKwkJ
CX0gZWxzZSB7CisJCQkJcHJpbnRmKCIlIiBQUkl1NjQgIiwgJSIgUFJJdTY0ICIsICUiIFBSSXU2
NCAiLCAlIiBQUkl1NjQgIiwgJWYsICVmLCAlIiBQUkl1NjQgIlxuIiwKKwkJCQkJCXRzY3RwX21l
dGEtPnN0YXRfbWVzc2FnZV9sZW5ndGgsCisJCQkJCQl0c2N0cF9tZXRhLT5zdGF0X21lc3NhZ2Vz
LAorCQkJCQkJdHNjdHBfbWV0YS0+c3RhdF9yZWN2X2NhbGxzLAorCQkJCQkJdHNjdHBfbWV0YS0+
c3RhdF9tZXNzYWdlX2xlbmd0aCAqIHRzY3RwX21ldGEtPnN0YXRfbWVzc2FnZXMsCisJCQkJCQlz
ZWNvbmRzLAorCQkJCQkJKGRvdWJsZSkgdHNjdHBfbWV0YS0+c3RhdF9tZXNzYWdlX2xlbmd0aCAq
IChkb3VibGUpIHRzY3RwX21ldGEtPnN0YXRfbWVzc2FnZXMgLyBzZWNvbmRzLAorCQkJCQkJdHNj
dHBfbWV0YS0+c3RhdF9ub3RpZmljYXRpb25zKTsKKwkJCX0KKwkJCWZmbHVzaChzdGRvdXQpOwor
CQkJdXNyc2N0cF9jbG9zZSh1cGNhbGxfc29ja2V0KTsKKworCQkJZnJlZSh0c2N0cF9tZXRhLT5i
dWZmZXIpOworCQkJZnJlZSh0c2N0cF9tZXRhKTsKKwkJCXJldHVybjsKKwkJfQorCX0KKworCWlm
ICgoZXZlbnRzICYgU0NUUF9FVkVOVF9XUklURSkgJiYgdHNjdHBfbWV0YS0+cGFyX3JvbGUgPT0g
VFNDVFBfQ0xJRU5UICYmICFkb25lKSB7CisKKwkJbWVtc2V0KCZzbmRfaW5mbywgMCwgc2l6ZW9m
KHN0cnVjdCBzY3RwX3NuZGluZm8pKTsKKwkJaWYgKHRzY3RwX21ldGEtPnBhcl9vcmRlcmVkID09
IDApIHsKKwkJCXNuZF9pbmZvLnNuZF9mbGFncyB8PSBTQ1RQX1VOT1JERVJFRDsKKwkJfQorCisJ
CXdoaWxlICgobiA9IHVzcnNjdHBfc2VuZHYodXBjYWxsX3NvY2tldCwgdHNjdHBfbWV0YS0+YnVm
ZmVyLCB0c2N0cF9tZXRhLT5wYXJfbWVzc2FnZV9sZW5ndGgsIE5VTEwsIDAsICZzbmRfaW5mbywg
KHNvY2tsZW5fdClzaXplb2Yoc3RydWN0IHNjdHBfc25kaW5mbyksIFNDVFBfU0VORFZfU05ESU5G
TywgMCkpID4gMCkgeworCQkJaWYgKHRzY3RwX21ldGEtPnN0YXRfbWVzc2FnZXMgPT0gMCkgewor
CQkJCWdldHRpbWVvZmRheSgmdHNjdHBfbWV0YS0+c3RhdF9zdGFydCwgTlVMTCk7CisJCQl9CisJ
CQl0c2N0cF9tZXRhLT5zdGF0X21lc3NhZ2VzKys7CisKKwkJCWlmIChwYXJfdmVyeV92ZXJib3Nl
KSB7CisJCQkJcHJpbnRmKCJNZXNzYWdlICMlIiBQUkl1NjQgIiBzZW50XG4iLCB0c2N0cF9tZXRh
LT5zdGF0X21lc3NhZ2VzKTsKKwkJCX0KKworCQkJaWYgKHRzY3RwX21ldGEtPnBhcl9tZXNzYWdl
cyAmJiB0c2N0cF9tZXRhLT5wYXJfbWVzc2FnZXMgPT0gdHNjdHBfbWV0YS0+c3RhdF9tZXNzYWdl
cykgeworCQkJCWJyZWFrOworCQkJfQorCQl9CisKKwkJaWYgKGVycm5vICE9IEVBR0FJTiAmJiBl
cnJubyAhPSBFV09VTERCTE9DSykgeworCQkJZG9uZSA9IDE7CisJCQl1c3JzY3RwX2Nsb3NlKHVw
Y2FsbF9zb2NrZXQpOworCQkJcHJpbnRmKCJjbGllbnQgc29ja2V0ICVwIGNsb3NlZFxuIiwgKHZv
aWQgKil1cGNhbGxfc29ja2V0KTsKKwkJCWZyZWUodHNjdHBfbWV0YS0+YnVmZmVyKTsKKwkJCWZy
ZWUodHNjdHBfbWV0YSk7CisJCQlyZXR1cm47CisJCX0KKworCQlnZXR0aW1lb2ZkYXkoJnRpbWVf
bm93LCBOVUxMKTsKKwkJdGltZXJzdWIoJnRpbWVfbm93LCAmdHNjdHBfbWV0YS0+c3RhdF9zdGFy
dCwgJnRpbWVfZGlmZik7CisJCXNlY29uZHMgPSB0aW1lX2RpZmYudHZfc2VjICsgKGRvdWJsZSl0
aW1lX2RpZmYudHZfdXNlYyAvIDEwMDAwMDAuMDsKKworCQlpZiAoKHRzY3RwX21ldGEtPnBhcl9t
ZXNzYWdlcyAmJiB0c2N0cF9tZXRhLT5wYXJfbWVzc2FnZXMgPT0gdHNjdHBfbWV0YS0+c3RhdF9t
ZXNzYWdlcykgfHwKKwkJCSh0c2N0cF9tZXRhLT5wYXJfcnVudGltZSAmJiB0c2N0cF9tZXRhLT5w
YXJfcnVudGltZSA8PSBzZWNvbmRzKSkgeworCisJCQlpZiAocGFyX3ZlcmJvc2UpIHsKKwkJCQlw
cmludGYoIlJ1bnRpbWUgb3IgbWF4IG1lc3NhZ2VzIHJlYWNoZWQgLSBmaW5pc2hpbmcuLi5cbiIp
OworCQkJfQorCisJCQlkb25lID0gMTsKKwkJCXVzcnNjdHBfY2xvc2UodXBjYWxsX3NvY2tldCk7
CisJCQlmcmVlKHRzY3RwX21ldGEtPmJ1ZmZlcik7CisJCQlmcmVlKHRzY3RwX21ldGEpOworCQkJ
cmV0dXJuOworCQl9CisJfQorCisJcmV0dXJuOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hh
ciAqKmFyZ3YpCit7CisjaWZuZGVmIF9XSU4zMgorCWludCBjOworI2VuZGlmCisJc3RydWN0IHNv
Y2tldCAqcHNvY2sgPSBOVUxMOworCXN0cnVjdCBzb2NrYWRkcl9pbiBsb2NhbF9hZGRyOworCXN0
cnVjdCBzb2NrYWRkcl9pbiByZW1vdGVfYWRkcjsKKwlpbnQgb3B0dmFsOworCXVpbnQxNl90IGxv
Y2FsX3BvcnQ7CisJdWludDE2X3QgcmVtb3RlX3BvcnQ7CisJdWludDE2X3QgbG9jYWxfdWRwX3Bv
cnQ7CisJdWludDE2X3QgcmVtb3RlX3VkcF9wb3J0OworCWludCByY3ZidWZzaXplID0gMDsKKwlp
bnQgc25kYnVmc2l6ZSA9IDA7CisJc29ja2xlbl90IGludGxlbjsKKwlpbnQgbm9kZWxheSA9IDA7
CisJc3RydWN0IHNjdHBfYXNzb2NfdmFsdWUgYXY7CisJc3RydWN0IHNjdHBfdWRwZW5jYXBzIGVu
Y2FwczsKKwlzdHJ1Y3QgdHNjdHBfbWV0YSAqbWV0YTsKKworCXVpbnQxNl90IHBhcl9wb3J0ID0g
REVGQVVMVF9QT1JUOworCXVpbnQ4X3QgcGFyX3N0YXRzX2h1bWFuID0gMDsKKwlpbnQgcGFyX29y
ZGVyZWQgPSAxOworCWludCBwYXJfbWVzc2FnZV9sZW5ndGggPSBERUZBVUxUX0xFTkdUSDsKKwlp
bnQgcGFyX21lc3NhZ2VzID0gREVGQVVMVF9OVU1CRVJfT0ZfTUVTU0FHRVM7CisJaW50IHBhcl9y
dW50aW1lID0gMDsKKworI2lmZGVmIF9XSU4zMgorCXVuc2lnbmVkIGxvbmcgc3JjX2FkZHI7Cisj
ZWxzZQorCWluX2FkZHJfdCBzcmNfYWRkcjsKKyNlbmRpZgorCWludCBmcmFncG9pbnQgPSAwOwor
CXN0cnVjdCBzY3RwX3NldGFkYXB0YXRpb24gaW5kID0gezB9OworI2lmZGVmIF9XSU4zMgorCWNo
YXIgKm9wdDsKKwlpbnQgb3B0aW5kOworI2VuZGlmCisKKwlyZW1vdGVfdWRwX3BvcnQgPSAwOwor
CWxvY2FsX3VkcF9wb3J0ID0gOTg5OTsKKwlzcmNfYWRkciA9IGh0b25sKElOQUREUl9BTlkpOwor
CisJbWVtc2V0KCh2b2lkICopICZyZW1vdGVfYWRkciwgMCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRk
cl9pbikpOworCW1lbXNldCgodm9pZCAqKSAmbG9jYWxfYWRkciwgMCwgc2l6ZW9mKHN0cnVjdCBz
b2NrYWRkcl9pbikpOworCisjaWZuZGVmIF9XSU4zMgorCXdoaWxlICgoYyA9IGdldG9wdChhcmdj
LCBhcmd2LCAiYTpERTpmOkhsOkw6bjpwOlI6UzpUOnVVOnZWIikpICE9IC0xKQorCQlzd2l0Y2go
YykgeworCQkJY2FzZSAnYSc6CisJCQkJaW5kLnNzYl9hZGFwdGF0aW9uX2luZCA9IGF0b2kob3B0
YXJnKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgJ0QnOgorCQkJCW5vZGVsYXkgPSAxOworCQkJCWJy
ZWFrOworCQkJY2FzZSAnRSc6CisJCQkJbG9jYWxfdWRwX3BvcnQgPSBhdG9pKG9wdGFyZyk7CisJ
CQkJYnJlYWs7CisJCQljYXNlICdmJzoKKwkJCQlmcmFncG9pbnQgPSBhdG9pKG9wdGFyZyk7CisJ
CQkJYnJlYWs7CisJCQljYXNlICdIJzoKKwkJCQlwYXJfc3RhdHNfaHVtYW4gPSAxOworCQkJCWJy
ZWFrOworCQkJY2FzZSAnbCc6CisJCQkJcGFyX21lc3NhZ2VfbGVuZ3RoID0gYXRvaShvcHRhcmcp
OworCQkJCWJyZWFrOworCQkJY2FzZSAnTCc6CisJCQkJaWYgKGluZXRfcHRvbihBRl9JTkVULCBv
cHRhcmcsICZzcmNfYWRkcikgIT0gMSkgeworCQkJCQlwcmludGYoIkNhbid0IHBhcnNlICVzXG4i
LCBvcHRhcmcpOworCQkJCQlleGl0KEVYSVRfRkFJTFVSRSk7CisJCQkJfQorCQkJCWJyZWFrOwor
CQkJY2FzZSAnbic6CisJCQkJcGFyX21lc3NhZ2VzID0gYXRvaShvcHRhcmcpOworCQkJCWJyZWFr
OworCQkJY2FzZSAncCc6CisJCQkJcGFyX3BvcnQgPSBhdG9pKG9wdGFyZyk7CisJCQkJYnJlYWs7
CisJCQljYXNlICdSJzoKKwkJCQlyY3ZidWZzaXplID0gYXRvaShvcHRhcmcpOworCQkJCWJyZWFr
OworCQkJY2FzZSAnUyc6CisJCQkJc25kYnVmc2l6ZSA9IGF0b2kob3B0YXJnKTsKKwkJCQlicmVh
azsKKwkJCWNhc2UgJ1QnOgorCQkJCXBhcl9ydW50aW1lID0gYXRvaShvcHRhcmcpOworCQkJCXBh
cl9tZXNzYWdlcyA9IDA7CisJCQkJYnJlYWs7CisJCQljYXNlICd1JzoKKwkJCQlwYXJfb3JkZXJl
ZCA9IDA7CisJCQkJYnJlYWs7CisJCQljYXNlICdVJzoKKwkJCQlyZW1vdGVfdWRwX3BvcnQgPSBh
dG9pKG9wdGFyZyk7CisJCQkJYnJlYWs7CisJCQljYXNlICd2JzoKKwkJCQlwYXJfdmVyYm9zZSA9
IDE7CisJCQkJYnJlYWs7CisJCQljYXNlICdWJzoKKwkJCQlwYXJfdmVyYm9zZSA9IDE7CisJCQkJ
cGFyX3ZlcnlfdmVyYm9zZSA9IDE7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWZwcmlu
dGYoc3RkZXJyLCAiJXMiLCBVc2FnZSk7CisJCQkJZXhpdCgxKTsKKwkJfQorI2Vsc2UKKwlmb3Ig
KG9wdGluZCA9IDE7IG9wdGluZCA8IGFyZ2M7IG9wdGluZCsrKSB7CisJCWlmIChhcmd2W29wdGlu
ZF1bMF0gPT0gJy0nKSB7CisJCQlzd2l0Y2ggKGFyZ3Zbb3B0aW5kXVsxXSkgeworCQkJCWNhc2Ug
J2EnOgorCQkJCQlpZiAoKytvcHRpbmQgPj0gYXJnYykgeworCQkJCQkJcHJpbnRmKCIlcyIsIFVz
YWdlKTsKKwkJCQkJCWV4aXQoMSk7CisJCQkJCX0KKwkJCQkJb3B0ID0gYXJndltvcHRpbmRdOwor
CQkJCQlpbmQuc3NiX2FkYXB0YXRpb25faW5kID0gYXRvaShvcHQpOworCQkJCQlicmVhazsKKwkJ
CQljYXNlICdEJzoKKwkJCQkJbm9kZWxheSA9IDE7CisJCQkJCWJyZWFrOworCQkJCWNhc2UgJ0Un
OgorCQkJCQlpZiAoKytvcHRpbmQgPj0gYXJnYykgeworCQkJCQkJcHJpbnRmKCIlcyIsIFVzYWdl
KTsKKwkJCQkJCWV4aXQoMSk7CisJCQkJCX0KKwkJCQkJb3B0ID0gYXJndltvcHRpbmRdOworCQkJ
CQlsb2NhbF91ZHBfcG9ydCA9IGF0b2kob3B0KTsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSAnZic6
CisJCQkJCWlmICgrK29wdGluZCA+PSBhcmdjKSB7CisJCQkJCQlwcmludGYoIiVzIiwgVXNhZ2Up
OworCQkJCQkJZXhpdCgxKTsKKwkJCQkJfQorCQkJCQlvcHQgPSBhcmd2W29wdGluZF07CisJCQkJ
CWZyYWdwb2ludCA9IGF0b2kob3B0KTsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSAnSCc6CisJCQkJ
CXBhcl9zdGF0c19odW1hbiA9IDE7CisJCQkJCWJyZWFrOworCQkJCWNhc2UgJ2wnOgorCQkJCQlp
ZiAoKytvcHRpbmQgPj0gYXJnYykgeworCQkJCQkJcHJpbnRmKCIlcyIsIFVzYWdlKTsKKwkJCQkJ
CWV4aXQoMSk7CisJCQkJCX0KKwkJCQkJb3B0ID0gYXJndltvcHRpbmRdOworCQkJCQlwYXJfbWVz
c2FnZV9sZW5ndGggPSBhdG9pKG9wdCk7CisJCQkJCWJyZWFrOworCQkJCWNhc2UgJ0wnOgorCQkJ
CQlpZiAoKytvcHRpbmQgPj0gYXJnYykgeworCQkJCQkJcHJpbnRmKCIlcyIsIFVzYWdlKTsKKwkJ
CQkJCWV4aXQoMSk7CisJCQkJCX0KKwkJCQkJb3B0ID0gYXJndltvcHRpbmRdOworCQkJCQlpbmV0
X3B0b24oQUZfSU5FVCwgb3B0LCAmc3JjX2FkZHIpOworCQkJCQlicmVhazsKKwkJCQljYXNlICdu
JzoKKwkJCQkJaWYgKCsrb3B0aW5kID49IGFyZ2MpIHsKKwkJCQkJCXByaW50ZigiJXMiLCBVc2Fn
ZSk7CisJCQkJCQlleGl0KDEpOworCQkJCQl9CisJCQkJCW9wdCA9IGFyZ3Zbb3B0aW5kXTsKKwkJ
CQkJcGFyX21lc3NhZ2VzID0gYXRvaShvcHQpOworCQkJCQlicmVhazsKKwkJCQljYXNlICdwJzoK
KwkJCQkJaWYgKCsrb3B0aW5kID49IGFyZ2MpIHsKKwkJCQkJCXByaW50ZigiJXMiLCBVc2FnZSk7
CisJCQkJCQlleGl0KDEpOworCQkJCQl9CisJCQkJCW9wdCA9IGFyZ3Zbb3B0aW5kXTsKKwkJCQkJ
cGFyX3BvcnQgPSBhdG9pKG9wdCk7CisJCQkJCWJyZWFrOworCQkJCWNhc2UgJ1InOgorCQkJCQlp
ZiAoKytvcHRpbmQgPj0gYXJnYykgeworCQkJCQkJcHJpbnRmKCIlcyIsIFVzYWdlKTsKKwkJCQkJ
CWV4aXQoMSk7CisJCQkJCX0KKwkJCQkJb3B0ID0gYXJndltvcHRpbmRdOworCQkJCQlyY3ZidWZz
aXplID0gYXRvaShvcHQpOworCQkJCQlicmVhazsKKwkJCQljYXNlICdTJzoKKwkJCQkJaWYgKCsr
b3B0aW5kID49IGFyZ2MpIHsKKwkJCQkJCXByaW50ZigiJXMiLCBVc2FnZSk7CisJCQkJCQlleGl0
KDEpOworCQkJCQl9CisJCQkJCW9wdCA9IGFyZ3Zbb3B0aW5kXTsKKwkJCQkJc25kYnVmc2l6ZSA9
IGF0b2kob3B0KTsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSAnVCc6CisJCQkJCWlmICgrK29wdGlu
ZCA+PSBhcmdjKSB7CisJCQkJCQlwcmludGYoIiVzIiwgVXNhZ2UpOworCQkJCQkJZXhpdCgxKTsK
KwkJCQkJfQorCQkJCQlvcHQgPSBhcmd2W29wdGluZF07CisJCQkJCXBhcl9ydW50aW1lID0gYXRv
aShvcHQpOworCQkJCQlwYXJfbWVzc2FnZXMgPSAwOworCQkJCQlicmVhazsKKwkJCQljYXNlICd1
JzoKKwkJCQkJcGFyX29yZGVyZWQgPSAwOworCQkJCQlicmVhazsKKwkJCQljYXNlICdVJzoKKwkJ
CQkJaWYgKCsrb3B0aW5kID49IGFyZ2MpIHsKKwkJCQkJCXByaW50ZigiJXMiLCBVc2FnZSk7CisJ
CQkJCQlleGl0KDEpOworCQkJCQl9CisJCQkJCW9wdCA9IGFyZ3Zbb3B0aW5kXTsKKwkJCQkJcmVt
b3RlX3VkcF9wb3J0ID0gYXRvaShvcHQpOworCQkJCQlicmVhazsKKwkJCQljYXNlICd2JzoKKwkJ
CQkJcGFyX3ZlcmJvc2UgPSAxOworCQkJCQlicmVhazsKKwkJCQljYXNlICdWJzoKKwkJCQkJcGFy
X3ZlcmJvc2UgPSAxOworCQkJCQlwYXJfdmVyeV92ZXJib3NlID0gMTsKKwkJCQkJYnJlYWs7CisJ
CQkJZGVmYXVsdDoKKwkJCQkJcHJpbnRmKCIlcyIsIFVzYWdlKTsKKwkJCQkJZXhpdCgxKTsKKwkJ
CX0KKwkJfSBlbHNlIHsKKwkJCWJyZWFrOworCQl9CisJfQorI2VuZGlmCisKKwltZXRhID0gbWFs
bG9jKHNpemVvZihzdHJ1Y3QgdHNjdHBfbWV0YSkpOworCWlmICghbWV0YSkgeworCQlwcmludGYo
Im1hbGxvYygpIGZhaWxlZCFcbiIpOworCQlleGl0KEVYSVRfRkFJTFVSRSk7CisJfQorCisJbWVt
c2V0KG1ldGEsIDAsIHNpemVvZihzdHJ1Y3QgdHNjdHBfbWV0YSkpOworCisJbWV0YS0+YnVmZmVy
ID0gbWFsbG9jKEJVRkZFUlNJWkUpOworCWlmICghbWV0YS0+YnVmZmVyKSB7CisJCXByaW50Zigi
bWFsbG9jKCkgZmFpbGVkIVxuIik7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwl9CisKKwltZXRh
LT5wYXJfc3RhdHNfaHVtYW4gPSBwYXJfc3RhdHNfaHVtYW47CisJbWV0YS0+cGFyX21lc3NhZ2Vf
bGVuZ3RoID0gcGFyX21lc3NhZ2VfbGVuZ3RoOworCW1ldGEtPnBhcl9tZXNzYWdlcyA9IHBhcl9t
ZXNzYWdlczsKKwltZXRhLT5wYXJfb3JkZXJlZCA9IHBhcl9vcmRlcmVkOworCW1ldGEtPnBhcl9y
dW50aW1lID0gcGFyX3J1bnRpbWU7CisKKwlpZiAob3B0aW5kID09IGFyZ2MpIHsKKwkJbWV0YS0+
cGFyX3JvbGUgPSBUU0NUUF9TRVJWRVI7CisJCWxvY2FsX3BvcnQgPSBwYXJfcG9ydDsKKwkJcmVt
b3RlX3BvcnQgPSAwOworCX0gZWxzZSB7CisJCW1ldGEtPnBhcl9yb2xlID0gVFNDVFBfQ0xJRU5U
OworCQlsb2NhbF9wb3J0ID0gMDsKKwkJcmVtb3RlX3BvcnQgPSBwYXJfcG9ydDsKKwl9CisJbG9j
YWxfYWRkci5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKKyNpZmRlZiBIQVZFX1NJTl9MRU4KKwlsb2Nh
bF9hZGRyLnNpbl9sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKTsKKyNlbmRpZgorCWxv
Y2FsX2FkZHIuc2luX3BvcnQgPSBodG9ucyhsb2NhbF9wb3J0KTsKKwlsb2NhbF9hZGRyLnNpbl9h
ZGRyLnNfYWRkciA9IHNyY19hZGRyOworCisJdXNyc2N0cF9pbml0KGxvY2FsX3VkcF9wb3J0LCBO
VUxMLCBkZWJ1Z19wcmludGZfc3RhY2spOworI2lmZGVmIFNDVFBfREVCVUcKKwl1c3JzY3RwX3N5
c2N0bF9zZXRfc2N0cF9kZWJ1Z19vbihTQ1RQX0RFQlVHX0FMTCk7CisjZW5kaWYKKwl1c3JzY3Rw
X3N5c2N0bF9zZXRfc2N0cF9ibGFja2hvbGUoMik7CisJdXNyc2N0cF9zeXNjdGxfc2V0X3NjdHBf
bm9fY3N1bV9vbl9sb29wYmFjaygwKTsKKwl1c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9lbmFibGVf
c2Fja19pbW1lZGlhdGVseSgxKTsKKworCWlmICghKHBzb2NrID0gdXNyc2N0cF9zb2NrZXQoQUZf
SU5FVCwgU09DS19TVFJFQU0sIElQUFJPVE9fU0NUUCwgTlVMTCwgTlVMTCwgMCwgTlVMTCkpKSB7
CisJCXBlcnJvcigidXNlcl9zb2NrZXQiKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKwor
CW9wdHZhbCA9IDE7CisJaWYgKHVzcnNjdHBfc2V0c29ja29wdChwc29jaywgSVBQUk9UT19TQ1RQ
LCBTQ1RQX1JFQ1ZSQ1ZJTkZPLCAmb3B0dmFsLCBzaXplb2Yob3B0dmFsKSkgPCAwKSB7CisJCXBl
cnJvcigidXNyc2N0cF9zZXRzb2Nrb3B0IFNDVFBfUkVDVlJDVklORk8iKTsKKwl9CisKKwl1c3Jz
Y3RwX3NldF9ub25fYmxvY2tpbmcocHNvY2ssIDEpOworCisJaWYgKHVzcnNjdHBfYmluZChwc29j
aywgKHN0cnVjdCBzb2NrYWRkciAqKSAmbG9jYWxfYWRkciwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRk
cl9pbikpID09IC0xKSB7CisJCXBlcnJvcigidXNyc2N0cF9iaW5kIik7CisJCWV4aXQoMSk7CisJ
fQorCisJaWYgKHVzcnNjdHBfc2V0c29ja29wdChwc29jaywgSVBQUk9UT19TQ1RQLCBTQ1RQX0FE
QVBUQVRJT05fTEFZRVIsIChjb25zdCB2b2lkKikmaW5kLCAoc29ja2xlbl90KXNpemVvZihzdHJ1
Y3Qgc2N0cF9zZXRhZGFwdGF0aW9uKSkgPCAwKSB7CisJCXBlcnJvcigic2V0c29ja29wdCIpOwor
CX0KKworCWlmIChtZXRhLT5wYXJfcm9sZSA9PSBUU0NUUF9TRVJWRVIpIHsKKwkJaWYgKHJjdmJ1
ZnNpemUpIHsKKwkJCWlmICh1c3JzY3RwX3NldHNvY2tvcHQocHNvY2ssIFNPTF9TT0NLRVQsIFNP
X1JDVkJVRiwgJnJjdmJ1ZnNpemUsIHNpemVvZihpbnQpKSA8IDApIHsKKwkJCQlwZXJyb3IoInNl
dHNvY2tvcHQ6IHJjdmJ1ZiIpOworCQkJfQorCQl9CisJCWlmIChwYXJfdmVyYm9zZSkgeworCQkJ
aW50bGVuID0gc2l6ZW9mKGludCk7CisJCQlpZiAodXNyc2N0cF9nZXRzb2Nrb3B0KHBzb2NrLCBT
T0xfU09DS0VULCBTT19SQ1ZCVUYsICZyY3ZidWZzaXplLCAoc29ja2xlbl90ICopJmludGxlbikg
PCAwKSB7CisJCQkJcGVycm9yKCJnZXRzb2Nrb3B0OiByY3ZidWYiKTsKKwkJCX0gZWxzZSB7CisJ
CQkJZnByaW50ZihzdGRvdXQsICJSZWNlaXZlIGJ1ZmZlciBzaXplOiAlZC5cbiIsIHJjdmJ1ZnNp
emUpOworCQkJfQorCQl9CisKKwkJaWYgKHVzcnNjdHBfbGlzdGVuKHBzb2NrLCAxKSA8IDApIHsK
KwkJCXBlcnJvcigidXNyc2N0cF9saXN0ZW4iKTsKKwkJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwkJ
fQorCisJCXVzcnNjdHBfc2V0X3VwY2FsbChwc29jaywgaGFuZGxlX2FjY2VwdCwgbWV0YSk7CisK
KwkJd2hpbGUgKDEpIHsKKyNpZmRlZiBfV0lOMzIKKwkJCVNsZWVwKDEwMDApOworI2Vsc2UKKwkJ
CXNsZWVwKDEpOworI2VuZGlmCisJCX0KKworCX0gZWxzZSB7CisJCW1lbXNldCgmZW5jYXBzLCAw
LCBzaXplb2Yoc3RydWN0IHNjdHBfdWRwZW5jYXBzKSk7CisJCWVuY2Fwcy5zdWVfYWRkcmVzcy5z
c19mYW1pbHkgPSBBRl9JTkVUOworCQllbmNhcHMuc3VlX3BvcnQgPSBodG9ucyhyZW1vdGVfdWRw
X3BvcnQpOworCQlpZiAodXNyc2N0cF9zZXRzb2Nrb3B0KHBzb2NrLCBJUFBST1RPX1NDVFAsIFND
VFBfUkVNT1RFX1VEUF9FTkNBUFNfUE9SVCwgKGNvbnN0IHZvaWQqKSZlbmNhcHMsIChzb2NrbGVu
X3Qpc2l6ZW9mKHN0cnVjdCBzY3RwX3VkcGVuY2FwcykpIDwgMCkgeworCQkJcGVycm9yKCJzZXRz
b2Nrb3B0Iik7CisJCX0KKworCQlyZW1vdGVfYWRkci5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKKyNp
ZmRlZiBIQVZFX1NJTl9MRU4KKwkJcmVtb3RlX2FkZHIuc2luX2xlbiA9IHNpemVvZihzdHJ1Y3Qg
c29ja2FkZHJfaW4pOworI2VuZGlmCisJCWlmICghaW5ldF9wdG9uKEFGX0lORVQsIGFyZ3Zbb3B0
aW5kXSwgJnJlbW90ZV9hZGRyLnNpbl9hZGRyLnNfYWRkcikpeworCQkJcHJpbnRmKCJlcnJvcjog
aW52YWxpZCBkZXN0aW5hdGlvbiBhZGRyZXNzXG4iKTsKKwkJCWV4aXQoRVhJVF9GQUlMVVJFKTsK
KwkJfQorCQlyZW1vdGVfYWRkci5zaW5fcG9ydCA9IGh0b25zKHJlbW90ZV9wb3J0KTsKKworCQlt
ZW1zZXQobWV0YS0+YnVmZmVyLCAnWCcsIEJVRkZFUlNJWkUpOworCisJCXVzcnNjdHBfc2V0X3Vw
Y2FsbChwc29jaywgaGFuZGxlX3VwY2FsbCwgbWV0YSk7CisKKwkJdXNyc2N0cF9zZXRzb2Nrb3B0
KHBzb2NrLCBJUFBST1RPX1NDVFAsIFNDVFBfTk9ERUxBWSwgJm5vZGVsYXksIHNpemVvZihub2Rl
bGF5KSk7CisKKwkJaWYgKGZyYWdwb2ludCkgeworCQkJYXYuYXNzb2NfaWQgPSAwOworCQkJYXYu
YXNzb2NfdmFsdWUgPSBmcmFncG9pbnQ7CisJCQlpZiAodXNyc2N0cF9zZXRzb2Nrb3B0KHBzb2Nr
LCBJUFBST1RPX1NDVFAsIFNDVFBfTUFYU0VHLCAmYXYsIHNpemVvZihzdHJ1Y3Qgc2N0cF9hc3Nv
Y192YWx1ZSkpIDwgMCkgeworCQkJCXBlcnJvcigic2V0c29ja29wdDogU0NUUF9NQVhTRUciKTsK
KwkJCX0KKwkJfQorCisJCWlmIChzbmRidWZzaXplKSB7CisJCQlpZiAodXNyc2N0cF9zZXRzb2Nr
b3B0KHBzb2NrLCBTT0xfU09DS0VULCBTT19TTkRCVUYsICZzbmRidWZzaXplLCBzaXplb2YoaW50
KSkgPCAwKSB7CisJCQkJcGVycm9yKCJzZXRzb2Nrb3B0OiBzbmRidWYiKTsKKwkJCX0KKwkJfQor
CisJCWlmIChwYXJfdmVyYm9zZSkgeworCQkJaW50bGVuID0gc2l6ZW9mKGludCk7CisJCQlpZiAo
dXNyc2N0cF9nZXRzb2Nrb3B0KHBzb2NrLCBTT0xfU09DS0VULCBTT19TTkRCVUYsICZzbmRidWZz
aXplLCAoc29ja2xlbl90ICopJmludGxlbikgPCAwKSB7CisJCQkJcGVycm9yKCJzZXRzb2Nrb3B0
OiBTT19TTkRCVUYiKTsKKwkJCX0gZWxzZSB7CisJCQkJZnByaW50ZihzdGRvdXQsIlNlbmQgYnVm
ZmVyIHNpemU6ICVkLlxuIiwgc25kYnVmc2l6ZSk7CisJCQl9CisJCX0KKworCQlpZiAodXNyc2N0
cF9jb25uZWN0KHBzb2NrLCAoc3RydWN0IHNvY2thZGRyICopICZyZW1vdGVfYWRkciwgc2l6ZW9m
KHN0cnVjdCBzb2NrYWRkcl9pbikpID09IC0xICkgeworCQkJaWYgKGVycm5vICE9IEVJTlBST0dS
RVNTKSB7CisJCQkJcGVycm9yKCJ1c3JzY3RwX2Nvbm5lY3QiKTsKKwkJCQlleGl0KEVYSVRfRkFJ
TFVSRSk7CisJCQl9CisJCX0KKworCQl3aGlsZSAoIWRvbmUpIHsKKyNpZmRlZiBfV0lOMzIKKwkJ
CVNsZWVwKDEwMDApOworI2Vsc2UKKwkJCXNsZWVwKDEpOworI2VuZGlmCisJCX0KKworCQlpZiAo
cGFyX3ZlcmJvc2UpIHsKKwkJCXByaW50ZigiRmluaXNoZWQuLi4gXG4iKTsKKwkJfQorCX0KKwor
CXdoaWxlICh1c3JzY3RwX2ZpbmlzaCgpICE9IDApIHsKKyNpZmRlZiBfV0lOMzIKKwkJU2xlZXAo
MTAwMCk7CisjZWxzZQorCQlzbGVlcCgxKTsKKyNlbmRpZgorCX0KKworCXJldHVybiAwOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L3VzcnNjdHBsaWIvQ01ha2VMaXN0cy50eHQKaW5kZXggYzViNzIyOTZiNjUxMzM2NTYwNGY0MzVl
M2U3MTk0MGVjZWQ0Yzg4NS4uODk5Y2E4ZTBkZTRiZjc0MTJhZGJiZDNhNjI4NDcxYTM2ZTAzNDQ0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9DTWFrZUxpc3RzLnR4dAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNy
c2N0cGxpYi91c3JzY3RwbGliL0NNYWtlTGlzdHMudHh0CkBAIC0xLDYgKzEsNiBAQAogIwogIyBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAxNSBPbGVnIEFsZXhlZW5rb3YKLSMgQ29weXJpZ2h0IChDKSAy
MDE1LTIwMTcgRmVsaXggV2VpbnJhbmsKKyMgQ29weXJpZ2h0IChDKSAyMDE1LTIwMTkgRmVsaXgg
V2VpbnJhbmsKICMKICMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKQEAgLTQzLDggKzQzLDkgQEAg
c2V0KGluY2x1ZGVkaXIgCQkJCSR7cHJlZml4fS9pbmNsdWRlL3VzcnNjdHApCiBzZXQoQ01BS0Vf
UkVRVUlSRURfSU5DTFVERVMgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9KQogc2V0KENNQUtF
X01BQ09TWF9SUEFUSCAJCTEpCiAKK2luY2x1ZGUoQ2hlY2tDQ29tcGlsZXJGbGFnKQorCiBhZGRf
ZGVmaW5pdGlvbnMoLURfX1VzZXJzcGFjZV9fKQotYWRkX2RlZmluaXRpb25zKC1EX19Vc2Vyc3Bh
Y2Vfb3NfJHtDTUFLRV9TWVNURU1fTkFNRX0pCiBhZGRfZGVmaW5pdGlvbnMoLURTQ1RQX1NJTVBM
RV9BTExPQ0FUT1IpCiBhZGRfZGVmaW5pdGlvbnMoLURTQ1RQX1BST0NFU1NfTEVWRUxfTE9DS1Mp
CiAKQEAgLTUzLDM0ICs1NCwyOCBAQCBhZGRfZGVmaW5pdGlvbnMoLURTQ1RQX1BST0NFU1NfTEVW
RUxfTE9DS1MpCiAjIE9TIERFUEVOREVOVAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIwogCi1pZiAoJHtDTUFLRV9TWVNURU1fTkFNRX0gTUFUQ0hFUyAi
TGludXgiKQotCWFkZF9kZWZpbml0aW9ucygtRF9HTlVfU09VUkNFKQorY2hlY2tfY19jb21waWxl
cl9mbGFnKC1Xbm8tYWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVyIGhhc193bm9fYWRkcmVzc19vZl9w
YWNrZWRfbWVtYmVyKQoraWYgKGhhc193bm9fYWRkcmVzc19vZl9wYWNrZWRfbWVtYmVyKQorCXNl
dChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC1Xbm8tYWRkcmVzcy1vZi1wYWNrZWQt
bWVtYmVyIikKIGVuZGlmICgpCiAKLWlmICgke0NNQUtFX1NZU1RFTV9OQU1FfSBNQVRDSEVTICJG
cmVlQlNEIikKLQlhZGRfZGVmaW5pdGlvbnMoLVVfX0ZyZWVCU0RfXykKLQlzZXQoQ01BS0VfQ19G
TEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAgICAgLVduby1hZGRyZXNzLW9mLXBhY2tlZC1tZW1iZXIi
KQotCXNldChDTUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAtV25vLWFkZHJlc3Mt
b2YtcGFja2VkLW1lbWJlciIpCitjaGVja19jX2NvbXBpbGVyX2ZsYWcoLVduby1kZXByZWNhdGVk
LWRlY2xhcmF0aW9ucyBoYXNfd25vX2RlcHJlY2F0ZWRfZGVjbGFyYXRpb25zKQoraWYgKGhhc193
bm9fZGVwcmVjYXRlZF9kZWNsYXJhdGlvbnMpCisJc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0Vf
Q19GTEFHU30gLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIpCiBlbmRpZiAoKQogCi1pZiAo
JHtDTUFLRV9TWVNURU1fTkFNRX0gTUFUQ0hFUyAiRGFyd2luIikKLQlhZGRfZGVmaW5pdGlvbnMo
LVVfX0FQUExFX18pCi0JYWRkX2RlZmluaXRpb25zKC1EX19BUFBMRV9VU0VfUkZDXzIyOTIpCi0J
c2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gICAgIC1Xbm8tYWRkcmVzcy1vZi1w
YWNrZWQtbWVtYmVyIC1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiKQotCXNldChDTUFLRV9D
WFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAtV25vLWFkZHJlc3Mtb2YtcGFja2VkLW1lbWJl
ciAtV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIikKK2lmIChDTUFLRV9TWVNURU1fTkFNRSBN
QVRDSEVTICJMaW51eCIpCisJYWRkX2RlZmluaXRpb25zKC1EX0dOVV9TT1VSQ0UpCiBlbmRpZiAo
KQogCi1pZiAoJHtDTUFLRV9TWVNURU1fTkFNRX0gTUFUQ0hFUyAiRHJhZ29uRmx5IikKLQlhZGRf
ZGVmaW5pdGlvbnMoLVVfX0RyYWdvbkZseV9fKQoraWYgKENNQUtFX1NZU1RFTV9OQU1FIE1BVENI
RVMgIkRhcndpbiIpCisJYWRkX2RlZmluaXRpb25zKC1EX19BUFBMRV9VU0VfUkZDXzIyOTIpCiBl
bmRpZiAoKQogCi1pZiAoJHtDTUFLRV9TWVNURU1fTkFNRX0gTUFUQ0hFUyAiTmV0QlNEIikKLQlh
ZGRfZGVmaW5pdGlvbnMoLVVfX05ldEJTRF9fKQotZW5kaWYgKCkKKyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgTUlTQworIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi1pZiAoJHtDTUFLRV9TWVNURU1f
TkFNRX0gTUFUQ0hFUyAiT3BlbkJTRCIpCi0JYWRkX2RlZmluaXRpb25zKC1VX19PcGVuQlNEX18p
Ci1lbmRpZiAoKQogCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKQEAgLTE3MSwxMCArMTY2LDEzIEBAIGxpc3QoQVBQRU5EIHVzcnNjdHBfc291cmNl
cwogYWRkX2xpYnJhcnkodXNyc2N0cCBTSEFSRUQgJHt1c3JzY3RwX3NvdXJjZXN9ICR7dXNyc2N0
cF9oZWFkZXJzfSkKIGFkZF9saWJyYXJ5KHVzcnNjdHAtc3RhdGljIFNUQVRJQyAke3VzcnNjdHBf
c291cmNlc30gJHt1c3JzY3RwX2hlYWRlcnN9KQogCit0YXJnZXRfaW5jbHVkZV9kaXJlY3Rvcmll
cyh1c3JzY3RwIFBVQkxJQyAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0pCit0YXJnZXRfaW5j
bHVkZV9kaXJlY3Rvcmllcyh1c3JzY3RwLXN0YXRpYyBQVUJMSUMgJHtDTUFLRV9DVVJSRU5UX1NP
VVJDRV9ESVJ9KQorCiBpZiAoV0lOMzIpCiAJbWVzc2FnZShTVEFUVVMgImxpbmsgbGlicmFyeTog
d3MyXzMyIikKLQl0YXJnZXRfbGlua19saWJyYXJpZXModXNyc2N0cCB3czJfMzIpCi0JdGFyZ2V0
X2xpbmtfbGlicmFyaWVzKHVzcnNjdHAtc3RhdGljIHdzMl8zMikKKwl0YXJnZXRfbGlua19saWJy
YXJpZXModXNyc2N0cCB3czJfMzIgaXBobHBhcGkubGliKQorCXRhcmdldF9saW5rX2xpYnJhcmll
cyh1c3JzY3RwLXN0YXRpYyB3czJfMzIgaXBobHBhcGkubGliKQogZW5kaWYgKCkKIAogc2V0X3Rh
cmdldF9wcm9wZXJ0aWVzKHVzcnNjdHAtc3RhdGljIFBST1BFUlRJRVMgT1VUUFVUX05BTUUgInVz
cnNjdHAiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9NYWtlZmlsZS5ubWFrZSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3VzcnNjdHBsaWIvTWFrZWZpbGUubm1ha2UKaW5kZXggNDhkMmJkMTEwYzdlNWJj
ZjhiOWQ0YzliOGUzMDc5YWU1YmNmZmQ1MC4uYWZjZGE2ZDkxNWRiOGM0NTY4MWQzYTQ5NzY0OGE3
NzQ1NmQxZmQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9NYWtlZmlsZS5ubWFr
ZQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3Vz
cnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL01ha2VmaWxlLm5tYWtlCkBAIC0zMSw3ICszMSw3
IEBACiBDRkxBR1M9L0kuIC9XMyAvV1gNCiANCiBDVkFSU0RMTD0tRFNDVFBfREVCVUcgLURTQ1RQ
X1NJTVBMRV9BTExPQ0FUT1IgLURTQ1RQX1BST0NFU1NfTEVWRUxfTE9DS1MNCi1DVkFSU0RMTD0k
KENWQVJTRExMKSAtRF9fVXNlcnNwYWNlX18gLURfX1VzZXJzcGFjZV9vc19XaW5kb3dzDQorQ1ZB
UlNETEw9JChDVkFSU0RMTCkgLURfX1VzZXJzcGFjZV9fDQogQ1ZBUlNETEw9JChDVkFSU0RMTCkg
LURJTkVUIC1ESU5FVDYNCiBDVkFSU0RMTD0kKENWQVJTRExMKSAtRF9MSUINCiANCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL21lc29uLmJ1aWxkIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxp
Yi9tZXNvbi5idWlsZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMWE2NjU2ZjFkYTliMzViODk4MWM0NDAxYWRjOGI4
MGQ4YTE5YzA2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9tZXNvbi5i
dWlsZApAQCAtMCwwICsxLDIwIEBACisjIEluY2x1ZGVzCitpbmNsdWRlX2RpcnMgPSBpbmNsdWRl
X2RpcmVjdG9yaWVzKAorICAgICcuJywKKyAgICAnbmV0aW5ldCcsCisgICAgJ25ldGluZXQ2JywK
KykKKworIyBTb3VyY2VzCitzb3VyY2VzID0gZmlsZXMoWworICAgICd1c2VyX2Vudmlyb25tZW50
LmMnLAorICAgICd1c2VyX21idWYuYycsCisgICAgJ3VzZXJfcmVjdl90aHJlYWQuYycsCisgICAg
J3VzZXJfc29ja2V0LmMnLAorXSkKKworc3ViZGlyKCduZXRpbmV0JykKK3N1YmRpcignbmV0aW5l
dDYnKQorCisjIEluc3RhbGwgdXNyc2N0cC5oCitpbnN0YWxsX2hlYWRlcnMoJ3VzcnNjdHAuaCcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvbWVzb24uYnVpbGQgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNy
c2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvbWVzb24uYnVpbGQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGE4NjYx
NWJjZDRkMjA4NWQxYjAwZTA3MTE0YTMwMWY0MmYwODE3YQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3Jz
Y3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9tZXNvbi5idWlsZApAQCAtMCwwICsxLDIwIEBACitz
b3VyY2VzICs9IGZpbGVzKFsKKyAgICAnc2N0cF9hc2NvbmYuYycsCisgICAgJ3NjdHBfYXV0aC5j
JywKKyAgICAnc2N0cF9ic2RfYWRkci5jJywKKyAgICAnc2N0cF9jYWxsb3V0LmMnLAorICAgICdz
Y3RwX2NjX2Z1bmN0aW9ucy5jJywKKyAgICAnc2N0cF9jcmMzMi5jJywKKyAgICAnc2N0cF9pbmRh
dGEuYycsCisgICAgJ3NjdHBfaW5wdXQuYycsCisgICAgJ3NjdHBfb3V0cHV0LmMnLAorICAgICdz
Y3RwX3BjYi5jJywKKyAgICAnc2N0cF9wZWVsb2ZmLmMnLAorICAgICdzY3RwX3NoYTEuYycsCisg
ICAgJ3NjdHBfc3NfZnVuY3Rpb25zLmMnLAorICAgICdzY3RwX3N5c2N0bC5jJywKKyAgICAnc2N0
cF90aW1lci5jJywKKyAgICAnc2N0cF91c2Vyc3BhY2UuYycsCisgICAgJ3NjdHBfdXNycmVxLmMn
LAorICAgICdzY3RwdXRpbC5jJywKK10pCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGli
L25ldGluZXQvc2N0cC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHAuaApvbGQg
bW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGY1YjFkODI4OTAyMzhiZWI4NDhkNWZh
MTlmM2RiY2YwMjlkNzA3MDQuLjhkOGJmMzFmZTgwMDZhODA4Mzg4M2ZiMTc1MjMyY2I2ZTFjODBi
NWMKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91
c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHAuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi91c3JzY3RwbGliL25ldGluZXQvc2N0cC5oCkBAIC0zMiwyMiArMzIsMjIgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZkZWYgX19GcmVlQlNEX18KKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1
ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3Nj
dHAuaCAzMjM2NTcgMjAxNy0wOS0xNiAyMToyNjowNlogdHVleGVuICQiKTsKK19fRkJTRElEKCIk
RnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwLmggMzU2MzU3IDIwMjAtMDEtMDQgMjA6MzM6
MTJaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAogI2lmbmRlZiBfTkVUSU5FVF9TQ1RQX0hfCiAjZGVm
aW5lIF9ORVRJTkVUX1NDVFBfSF8KIAotI2lmIChkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5l
ZChfX1VzZXJzcGFjZV9vc19MaW51eCkgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19EYXJ3aW4p
KQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fbGludXhfXykKICNpbmNsdWRl
IDxzdGRpbnQuaD4KICNlbmRpZgogCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAKIAotI2lmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgIWRlZmluZWQoX1dJTjMyKQogI2Rl
ZmluZSBTQ1RQX1BBQ0tFRCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKQogI2Vsc2UKICNwcmFnbWEg
cGFjayAocHVzaCwgMSkKQEAgLTI4NiwxMSArMjg2LDExIEBAIHN0cnVjdCBzY3RwX3BhcmFtaGRy
IHsKICNkZWZpbmUgU0NUUF9QRUVMT0ZGICAgICAgICAgICAgICAgICAgICAweDAwMDA4MDBhCiAv
KiB0aGUgcmVhbCB3b3JrZXIgZm9yIHNjdHBfZ2V0YWRkcmxlbigpICovCiAjZGVmaW5lIFNDVFBf
R0VUX0FERFJfTEVOICAgICAgICAgICAgICAgMHgwMDAwODAwYgotI2lmIGRlZmluZWQoX19BUFBM
RV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
LyogdGVtcG9yYXJ5IHdvcmthcm91bmQgZm9yIEFwcGxlIGxpc3RlbigpIGlzc3VlLCBubyBhcmdz
IHVzZWQgKi8KICNkZWZpbmUgU0NUUF9MSVNURU5fRklYCQkJMHgwMDAwODAwYwogI2VuZGlmCi0j
aWYgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKIC8qIHdvcmthcm91bmQgZm9yIEN5Z3dpbiBvbiBXaW5kb3dzOiByZXR1
cm5zIHRoZSBTT0NLRVQgaGFuZGxlICovCiAjZGVmaW5lIFNDVFBfR0VUX0hBTkRMRQkJCTB4MDAw
MDgwMGQKICNlbmRpZgpAQCAtNTMwLDYgKzUzMCw3IEBAIHN0cnVjdCBzY3RwX2Vycm9yX2F1dGhf
aW52YWxpZF9obWFjIHsKICNkZWZpbmUgU0NUUF9QQ0JfRkxBR1NfQk9VTkRBTEwJCTB4MDAwMDAw
MDQKICNkZWZpbmUgU0NUUF9QQ0JfRkxBR1NfQUNDRVBUSU5HCTB4MDAwMDAwMDgKICNkZWZpbmUg
U0NUUF9QQ0JfRkxBR1NfVU5CT1VORAkJMHgwMDAwMDAxMAorI2RlZmluZSBTQ1RQX1BDQl9GTEFH
U19TTkRfSVRFUkFUT1JfVVAgIDB4MDAwMDAwMjAKICNkZWZpbmUgU0NUUF9QQ0JfRkxBR1NfQ0xP
U0VfSVAgICAgICAgICAweDAwMDQwMDAwCiAjZGVmaW5lIFNDVFBfUENCX0ZMQUdTX1dBU19DT05O
RUNURUQgICAgMHgwMDA4MDAwMAogI2RlZmluZSBTQ1RQX1BDQl9GTEFHU19XQVNfQUJPUlRFRCAg
ICAgIDB4MDAxMDAwMDAKQEAgLTYwNyw5ICs2MDgsMTIgQEAgc3RydWN0IHNjdHBfZXJyb3JfYXV0
aF9pbnZhbGlkX2htYWMgewogI2RlZmluZSBTQ1RQX01PQklMSVRZX1BSSU1fREVMRVRFRCAgICAg
ICAweDAwMDAwMDA0CiAKIAotI2RlZmluZSBTQ1RQX1NNQUxMRVNUX1BNVFUgNTEyCSAvKiBzbWFs
bGVzdCBwbXR1IGFsbG93ZWQgd2hlbiBkaXNhYmxpbmcgUE1UVSBkaXNjb3ZlcnkgKi8KKy8qIFNt
YWxsZXN0IFBNVFUgYWxsb3dlZCB3aGVuIGRpc2FibGluZyBQTVRVIGRpc2NvdmVyeSAqLworI2Rl
ZmluZSBTQ1RQX1NNQUxMRVNUX1BNVFUgNTEyCisvKiBMYXJnZXN0IFBNVFUgYWxsb3dlZCB3aGVu
IGRpc2FibGluZyBQTVRVIGRpc2NvdmVyeSAqLworI2RlZmluZSBTQ1RQX0xBUkdFU1RfUE1UVSAg
NjU1MzYKIAotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVk
KF9XSU4zMikKICNwcmFnbWEgcGFjayhwb3ApCiAjZW5kaWYKICN1bmRlZiBTQ1RQX1BBQ0tFRApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfYXNjb25mLmMgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNy
c2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9hc2NvbmYuYwpvbGQgbW9kZSAxMDA2NDQK
bmV3IG1vZGUgMTAwNzU1CmluZGV4IGY2NTVmNjNjMjcyNDgyODI3MjJhMjJiYzEyODYyZTAxM2I0
MjlkODEuLjgxZTJhY2ZkNTBhMWZiMjUyMzlkZGViNjlkM2Y4NjRkNTRiYjkwZjMKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNj
dHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfYXNjb25mLmMKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNy
c2N0cGxpYi9uZXRpbmV0L3NjdHBfYXNjb25mLmMKQEAgLTMyLDkgKzMyLDkgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZkZWYgX19GcmVlQlNEX18KKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1
ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3Nj
dHBfYXNjb25mLmMgMzI0MDU2IDIwMTctMDktMjcgMTM6MDU6MjNaIHR1ZXhlbiAkIik7CitfX0ZC
U0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9hc2NvbmYuYyAzNjMxOTQgMjAy
MC0wNy0xNCAyMDozMjo1MFogdHVleGVuICQiKTsKICNlbmRpZgogCiAjaW5jbHVkZSA8bmV0aW5l
dC9zY3RwX29zLmg+CkBAIC01MywxMCArNTMsNiBAQCBfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQv
c3lzL25ldGluZXQvc2N0cF9hc2NvbmYuYyAzMjQwNTYgMjAxNy0wOS0yNyAxMzowNToyM1ogdAog
ICogU0NUUF9ERUJVR19BU0NPTkYyOiBkZXRhaWxlZCBpbmZvCiAgKi8KIAotI2lmIGRlZmluZWQo
X19BUFBMRV9fKQotI2RlZmluZSBBUFBMRV9GSUxFX05PIDEKLSNlbmRpZgotCiAvKgogICogUkZD
IDUwNjEKICAqCkBAIC0xMDUsNDcgKzEwMSw1MiBAQCBzY3RwX2FzY29uZl9zdWNjZXNzX3Jlc3Bv
bnNlKHVpbnQzMl90IGlkKQogCiBzdGF0aWMgc3RydWN0IG1idWYgKgogc2N0cF9hc2NvbmZfZXJy
b3JfcmVzcG9uc2UodWludDMyX3QgaWQsIHVpbnQxNl90IGNhdXNlLCB1aW50OF90ICplcnJvcl90
bHYsCi0JCQkgICB1aW50MTZfdCB0bHZfbGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDE2X3QgdGx2X2xlbmd0aCkKIHsKIAlzdHJ1Y3QgbWJ1ZiAqbV9yZXBseSA9IE5VTEw7
CiAJc3RydWN0IHNjdHBfYXNjb25mX3BhcmFtaGRyICphcGg7CiAJc3RydWN0IHNjdHBfZXJyb3Jf
Y2F1c2UgKmVycm9yOworCXVpbnQzMl90IGJ1Zl9sZW47CisJdWludDE2X3QgaSwgcGFyYW1fbGVu
Z3RoLCBjYXVzZV9sZW5ndGgsIHBhZGRpbmdfbGVuZ3RoOwogCXVpbnQ4X3QgKnRsdjsKIAotCW1f
cmVwbHkgPSBzY3RwX2dldF9tYnVmX2Zvcl9tc2coKHNpemVvZihzdHJ1Y3Qgc2N0cF9hc2NvbmZf
cGFyYW1oZHIpICsKLQkJCQkJIHRsdl9sZW5ndGggKwotCQkJCQkgc2l6ZW9mKHN0cnVjdCBzY3Rw
X2Vycm9yX2NhdXNlKSksCi0JCQkJCTAsIE1fTk9XQUlULCAxLCBNVF9EQVRBKTsKKwlpZiAoZXJy
b3JfdGx2ID09IE5VTEwpIHsKKwkJdGx2X2xlbmd0aCA9IDA7CisJfQorCWNhdXNlX2xlbmd0aCA9
IHNpemVvZihzdHJ1Y3Qgc2N0cF9lcnJvcl9jYXVzZSkgKyB0bHZfbGVuZ3RoOworCXBhcmFtX2xl
bmd0aCA9IHNpemVvZihzdHJ1Y3Qgc2N0cF9hc2NvbmZfcGFyYW1oZHIpICsgY2F1c2VfbGVuZ3Ro
OworCXBhZGRpbmdfbGVuZ3RoID0gdGx2X2xlbmd0aCAlIDQ7CisJaWYgKHBhZGRpbmdfbGVuZ3Ro
ICE9IDApIHsKKwkJcGFkZGluZ19sZW5ndGggPSA0IC0gcGFkZGluZ19sZW5ndGg7CisJfQorCWJ1
Zl9sZW4gPSBwYXJhbV9sZW5ndGggKyBwYWRkaW5nX2xlbmd0aDsKKwlpZiAoYnVmX2xlbiA+IE1M
RU4pIHsKKwkJU0NUUERCRyhTQ1RQX0RFQlVHX0FTQ09ORjEsCisJCQkiYXNjb25mX2Vycm9yX3Jl
c3BvbnNlOiB0bHZfbGVuZ3RoICgleGgpIHRvbyBiaWdcbiIsCisJCQl0bHZfbGVuZ3RoKTsKKwkJ
cmV0dXJuIChOVUxMKTsKKwl9CisJbV9yZXBseSA9IHNjdHBfZ2V0X21idWZfZm9yX21zZyhidWZf
bGVuLCAwLCBNX05PV0FJVCwgMSwgTVRfREFUQSk7CiAJaWYgKG1fcmVwbHkgPT0gTlVMTCkgewog
CQlTQ1RQREJHKFNDVFBfREVCVUdfQVNDT05GMSwKIAkJCSJhc2NvbmZfZXJyb3JfcmVzcG9uc2U6
IGNvdWxkbid0IGdldCBtYnVmIVxuIik7CiAJCXJldHVybiAoTlVMTCk7CiAJfQogCWFwaCA9IG10
b2QobV9yZXBseSwgc3RydWN0IHNjdHBfYXNjb25mX3BhcmFtaGRyICopOwotCWVycm9yID0gKHN0
cnVjdCBzY3RwX2Vycm9yX2NhdXNlICopKGFwaCArIDEpOwotCi0JYXBoLT5jb3JyZWxhdGlvbl9p
ZCA9IGlkOwogCWFwaC0+cGgucGFyYW1fdHlwZSA9IGh0b25zKFNDVFBfRVJST1JfQ0FVU0VfSU5E
KTsKKwlhcGgtPnBoLnBhcmFtX2xlbmd0aCA9IGh0b25zKHBhcmFtX2xlbmd0aCk7CisJYXBoLT5j
b3JyZWxhdGlvbl9pZCA9IGlkOworCWVycm9yID0gKHN0cnVjdCBzY3RwX2Vycm9yX2NhdXNlICop
KGFwaCArIDEpOwogCWVycm9yLT5jb2RlID0gaHRvbnMoY2F1c2UpOwotCWVycm9yLT5sZW5ndGgg
PSB0bHZfbGVuZ3RoICsgc2l6ZW9mKHN0cnVjdCBzY3RwX2Vycm9yX2NhdXNlKTsKLQlhcGgtPnBo
LnBhcmFtX2xlbmd0aCA9IGVycm9yLT5sZW5ndGggKwotCSAgICBzaXplb2Yoc3RydWN0IHNjdHBf
YXNjb25mX3BhcmFtaGRyKTsKLQotCWlmIChhcGgtPnBoLnBhcmFtX2xlbmd0aCA+IE1MRU4pIHsK
LQkJU0NUUERCRyhTQ1RQX0RFQlVHX0FTQ09ORjEsCi0JCQkiYXNjb25mX2Vycm9yX3Jlc3BvbnNl
OiB0bHZfbGVuZ3RoICgleGgpIHRvbyBiaWdcbiIsCi0JCQl0bHZfbGVuZ3RoKTsKLQkJc2N0cF9t
X2ZyZWVtKG1fcmVwbHkpOwkvKiBkaXNjYXJkICovCi0JCXJldHVybiAoTlVMTCk7Ci0JfQorCWVy
cm9yLT5sZW5ndGggPSBodG9ucyhjYXVzZV9sZW5ndGgpOwogCWlmIChlcnJvcl90bHYgIT0gTlVM
TCkgewogCQl0bHYgPSAodWludDhfdCAqKSAoZXJyb3IgKyAxKTsKIAkJbWVtY3B5KHRsdiwgZXJy
b3JfdGx2LCB0bHZfbGVuZ3RoKTsKKwkJZm9yIChpID0gMDsgaSA8IHBhZGRpbmdfbGVuZ3RoOyBp
KyspIHsKKwkJCXRsdlt0bHZfbGVuZ3RoICsgaV0gPSAwOworCQl9CiAJfQotCVNDVFBfQlVGX0xF
TihtX3JlcGx5KSA9IGFwaC0+cGgucGFyYW1fbGVuZ3RoOwotCWVycm9yLT5sZW5ndGggPSBodG9u
cyhlcnJvci0+bGVuZ3RoKTsKLQlhcGgtPnBoLnBhcmFtX2xlbmd0aCA9IGh0b25zKGFwaC0+cGgu
cGFyYW1fbGVuZ3RoKTsKLQorCVNDVFBfQlVGX0xFTihtX3JlcGx5KSA9IGJ1Zl9sZW47CiAJcmV0
dXJuIChtX3JlcGx5KTsKIH0KIApAQCAtMTc0LDEwICsxNzUsMTYgQEAgc2N0cF9wcm9jZXNzX2Fz
Y29uZl9hZGRfaXAoc3RydWN0IHNvY2thZGRyICpzcmMsIHN0cnVjdCBzY3RwX2FzY29uZl9wYXJh
bWhkciAqYXAKICNlbmRpZgogCiAJYXBhcmFtX2xlbmd0aCA9IG50b2hzKGFwaC0+cGgucGFyYW1f
bGVuZ3RoKTsKKwlpZiAoYXBhcmFtX2xlbmd0aCA8IHNpemVvZihzdHJ1Y3Qgc2N0cF9hc2NvbmZf
cGFyYW1oZHIpICsgc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKSkgeworCQlyZXR1cm4gKE5V
TEwpOworCX0KIAlwaCA9IChzdHJ1Y3Qgc2N0cF9wYXJhbWhkciAqKShhcGggKyAxKTsKIAlwYXJh
bV90eXBlID0gbnRvaHMocGgtPnBhcmFtX3R5cGUpOwogI2lmIGRlZmluZWQoSU5FVCkgfHwgZGVm
aW5lZChJTkVUNikKIAlwYXJhbV9sZW5ndGggPSBudG9ocyhwaC0+cGFyYW1fbGVuZ3RoKTsKKwlp
ZiAocGFyYW1fbGVuZ3RoICsgc2l6ZW9mKHN0cnVjdCBzY3RwX2FzY29uZl9wYXJhbWhkcikgIT0g
YXBhcmFtX2xlbmd0aCkgeworCQlyZXR1cm4gKE5VTEwpOworCX0KICNlbmRpZgogCXNhID0gJnN0
b3JlLnNhOwogCXN3aXRjaCAocGFyYW1fdHlwZSkgewpAQCAtMjQ1LDYgKzI1Miw3IEBAIHNjdHBf
cHJvY2Vzc19hc2NvbmZfYWRkX2lwKHN0cnVjdCBzb2NrYWRkciAqc3JjLCBzdHJ1Y3Qgc2N0cF9h
c2NvbmZfcGFyYW1oZHIgKmFwCiAJCSAgICAgICAgInByb2Nlc3NfYXNjb25mX2FkZF9pcDogdXNp
bmcgc291cmNlIGFkZHIgIik7CiAJCVNDVFBEQkdfQUREUihTQ1RQX0RFQlVHX0FTQ09ORjEsIHNy
Yyk7CiAJfQorCW5ldCA9IE5VTEw7CiAJLyogYWRkIHRoZSBhZGRyZXNzICovCiAJaWYgKGJhZF9h
ZGRyZXNzKSB7CiAJCW1fcmVwbHkgPSBzY3RwX2FzY29uZl9lcnJvcl9yZXNwb25zZShhcGgtPmNv
cnJlbGF0aW9uX2lkLApAQCAtMjU5LDE3ICsyNjcsMTkgQEAgc2N0cF9wcm9jZXNzX2FzY29uZl9h
ZGRfaXAoc3RydWN0IHNvY2thZGRyICpzcmMsIHN0cnVjdCBzY3RwX2FzY29uZl9wYXJhbWhkciAq
YXAKIAkJICAgIFNDVFBfQ0FVU0VfUkVTT1VSQ0VfU0hPUlRBR0UsICh1aW50OF90ICopIGFwaCwK
IAkJICAgIGFwYXJhbV9sZW5ndGgpOwogCX0gZWxzZSB7Ci0JCS8qIG5vdGlmeSB1cHBlciBsYXll
ciAqLwotCQlzY3RwX3VscF9ub3RpZnkoU0NUUF9OT1RJRllfQVNDT05GX0FERF9JUCwgc3RjYiwg
MCwgc2EsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CiAJCWlmIChyZXNwb25zZV9yZXF1aXJlZCkgewog
CQkJbV9yZXBseSA9CiAJCQkgICAgc2N0cF9hc2NvbmZfc3VjY2Vzc19yZXNwb25zZShhcGgtPmNv
cnJlbGF0aW9uX2lkKTsKIAkJfQotCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9Q
QVRITVRVUkFJU0UsIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIG5ldCk7Ci0JCXNjdHBfdGltZXJfc3Rh
cnQoU0NUUF9USU1FUl9UWVBFX0hFQVJUQkVBVCwgc3RjYi0+c2N0cF9lcCwKLQkJICAgICAgICAg
ICAgICAgICBzdGNiLCBuZXQpOwotCQlpZiAoc2VuZF9oYikgewotCQkJc2N0cF9zZW5kX2hiKHN0
Y2IsIG5ldCwgU0NUUF9TT19OT1RfTE9DS0VEKTsKKwkJaWYgKG5ldCAhPSBOVUxMKSB7CisJCQkv
KiBub3RpZnkgdXBwZXIgbGF5ZXIgKi8KKwkJCXNjdHBfdWxwX25vdGlmeShTQ1RQX05PVElGWV9B
U0NPTkZfQUREX0lQLCBzdGNiLCAwLCBzYSwgU0NUUF9TT19OT1RfTE9DS0VEKTsKKwkJCXNjdHBf
dGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1BBVEhNVFVSQUlTRSwgc3RjYi0+c2N0cF9lcCwg
c3RjYiwgbmV0KTsKKwkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX0hFQVJUQkVB
VCwgc3RjYi0+c2N0cF9lcCwKKwkJCQkJIHN0Y2IsIG5ldCk7CisJCQlpZiAoc2VuZF9oYikgewor
CQkJCXNjdHBfc2VuZF9oYihzdGNiLCBuZXQsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CisJCQl9CiAJ
CX0KIAl9CiAJcmV0dXJuIChtX3JlcGx5KTsKQEAgLTI3OCw3ICsyODgsNyBAQCBzY3RwX3Byb2Nl
c3NfYXNjb25mX2FkZF9pcChzdHJ1Y3Qgc29ja2FkZHIgKnNyYywgc3RydWN0IHNjdHBfYXNjb25m
X3BhcmFtaGRyICphcAogc3RhdGljIGludAogc2N0cF9hc2NvbmZfZGVsX3JlbW90ZV9hZGRyc19l
eGNlcHQoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc29ja2FkZHIgKnNyYykKIHsKLQlz
dHJ1Y3Qgc2N0cF9uZXRzICpzcmNfbmV0LCAqbmV0OworCXN0cnVjdCBzY3RwX25ldHMgKnNyY19u
ZXQsICpuZXQsICpubmV0OwogCiAJLyogbWFrZSBzdXJlIHRoZSBzb3VyY2UgYWRkcmVzcyBleGlz
dHMgYXMgYSBkZXN0aW5hdGlvbiBuZXQgKi8KIAlzcmNfbmV0ID0gc2N0cF9maW5kbmV0KHN0Y2Is
IHNyYyk7CkBAIC0yODgsMTAgKzI5OCw5IEBAIHNjdHBfYXNjb25mX2RlbF9yZW1vdGVfYWRkcnNf
ZXhjZXB0KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNvY2thZGRyICpzcmMpCiAJfQog
CiAJLyogZGVsZXRlIGFsbCBkZXN0aW5hdGlvbiBhZGRyZXNzZXMgZXhjZXB0IHRoZSBzb3VyY2Ug
Ki8KLQlUQUlMUV9GT1JFQUNIKG5ldCwgJnN0Y2ItPmFzb2MubmV0cywgc2N0cF9uZXh0KSB7CisJ
VEFJTFFfRk9SRUFDSF9TQUZFKG5ldCwgJnN0Y2ItPmFzb2MubmV0cywgc2N0cF9uZXh0LCBubmV0
KSB7CiAJCWlmIChuZXQgIT0gc3JjX25ldCkgewogCQkJLyogZGVsZXRlIHRoaXMgYWRkcmVzcyAq
LwotCQkJc2N0cF9yZW1vdmVfbmV0KHN0Y2IsIG5ldCk7CiAJCQlTQ1RQREJHKFNDVFBfREVCVUdf
QVNDT05GMSwKIAkJCQkiYXNjb25mX2RlbF9yZW1vdGVfYWRkcnNfZXhjZXB0OiBkZWxldGluZyAi
KTsKIAkJCVNDVFBEQkdfQUREUihTQ1RQX0RFQlVHX0FTQ09ORjEsCkBAIC0yOTksNiArMzA4LDcg
QEAgc2N0cF9hc2NvbmZfZGVsX3JlbW90ZV9hZGRyc19leGNlcHQoc3RydWN0IHNjdHBfdGNiICpz
dGNiLCBzdHJ1Y3Qgc29ja2FkZHIgKnNyYykKIAkJCS8qIG5vdGlmeSB1cHBlciBsYXllciAqLwog
CQkJc2N0cF91bHBfbm90aWZ5KFNDVFBfTk9USUZZX0FTQ09ORl9ERUxFVEVfSVAsIHN0Y2IsIDAs
CiAJCQkgICAgKHN0cnVjdCBzb2NrYWRkciAqKSZuZXQtPnJvLl9sX2FkZHIsIFNDVFBfU09fTk9U
X0xPQ0tFRCk7CisJCQlzY3RwX3JlbW92ZV9uZXQoc3RjYiwgbmV0KTsKIAkJfQogCX0KIAlyZXR1
cm4gKDApOwpAQCAtMzI5LDEwICszMzksMTYgQEAgc2N0cF9wcm9jZXNzX2FzY29uZl9kZWxldGVf
aXAoc3RydWN0IHNvY2thZGRyICpzcmMsCiAjZW5kaWYKIAogCWFwYXJhbV9sZW5ndGggPSBudG9o
cyhhcGgtPnBoLnBhcmFtX2xlbmd0aCk7CisJaWYgKGFwYXJhbV9sZW5ndGggPCBzaXplb2Yoc3Ry
dWN0IHNjdHBfYXNjb25mX3BhcmFtaGRyKSArIHNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcikp
IHsKKwkJcmV0dXJuIChOVUxMKTsKKwl9CiAJcGggPSAoc3RydWN0IHNjdHBfcGFyYW1oZHIgKiko
YXBoICsgMSk7CiAJcGFyYW1fdHlwZSA9IG50b2hzKHBoLT5wYXJhbV90eXBlKTsKICNpZiBkZWZp
bmVkKElORVQpIHx8IGRlZmluZWQoSU5FVDYpCiAJcGFyYW1fbGVuZ3RoID0gbnRvaHMocGgtPnBh
cmFtX2xlbmd0aCk7CisJaWYgKHBhcmFtX2xlbmd0aCArIHNpemVvZihzdHJ1Y3Qgc2N0cF9hc2Nv
bmZfcGFyYW1oZHIpICE9IGFwYXJhbV9sZW5ndGgpIHsKKwkJcmV0dXJuIChOVUxMKTsKKwl9CiAj
ZW5kaWYKIAlzYSA9ICZzdG9yZS5zYTsKIAlzd2l0Y2ggKHBhcmFtX3R5cGUpIHsKQEAgLTQ2NCwx
MCArNDgwLDE2IEBAIHNjdHBfcHJvY2Vzc19hc2NvbmZfc2V0X3ByaW1hcnkoc3RydWN0IHNvY2th
ZGRyICpzcmMsCiAjZW5kaWYKIAogCWFwYXJhbV9sZW5ndGggPSBudG9ocyhhcGgtPnBoLnBhcmFt
X2xlbmd0aCk7CisJaWYgKGFwYXJhbV9sZW5ndGggPCBzaXplb2Yoc3RydWN0IHNjdHBfYXNjb25m
X3BhcmFtaGRyKSArIHNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcikpIHsKKwkJcmV0dXJuIChO
VUxMKTsKKwl9CiAJcGggPSAoc3RydWN0IHNjdHBfcGFyYW1oZHIgKikoYXBoICsgMSk7CiAJcGFy
YW1fdHlwZSA9IG50b2hzKHBoLT5wYXJhbV90eXBlKTsKICNpZiBkZWZpbmVkKElORVQpIHx8IGRl
ZmluZWQoSU5FVDYpCiAJcGFyYW1fbGVuZ3RoID0gbnRvaHMocGgtPnBhcmFtX2xlbmd0aCk7CisJ
aWYgKHBhcmFtX2xlbmd0aCArIHNpemVvZihzdHJ1Y3Qgc2N0cF9hc2NvbmZfcGFyYW1oZHIpICE9
IGFwYXJhbV9sZW5ndGgpIHsKKwkJcmV0dXJuIChOVUxMKTsKKwl9CiAjZW5kaWYKIAlzYSA9ICZz
dG9yZS5zYTsKIAlzd2l0Y2ggKHBhcmFtX3R5cGUpIHsKQEAgLTU3Niw4ICs1OTgsNyBAQCBzY3Rw
X3Byb2Nlc3NfYXNjb25mX3NldF9wcmltYXJ5KHN0cnVjdCBzb2NrYWRkciAqc3JjLAogCQkJCXNj
dHBfbW92ZV9jaHVua3NfZnJvbV9uZXQoc3RjYiwKIAkJCQkJCXN0Y2ItPmFzb2MuZGVsZXRlZF9w
cmltYXJ5KTsKIAkJCX0KLQkJCXNjdHBfZGVsZXRlX3ByaW1fdGltZXIoc3RjYi0+c2N0cF9lcCwg
c3RjYiwKLQkJCQkJCXN0Y2ItPmFzb2MuZGVsZXRlZF9wcmltYXJ5KTsKKwkJCXNjdHBfZGVsZXRl
X3ByaW1fdGltZXIoc3RjYi0+c2N0cF9lcCwgc3RjYik7CiAJCX0KIAl9IGVsc2UgewogCQkvKiBj
b3VsZG4ndCBzZXQgdGhlIHJlcXVlc3RlZCBwcmltYXJ5IGFkZHJlc3MhICovCkBAIC02ODcsMTAg
KzcwOCwxMSBAQCBzY3RwX2hhbmRsZV9hc2NvbmYoc3RydWN0IG1idWYgKm0sIHVuc2lnbmVkIGlu
dCBvZmZzZXQsCiAJCVNDVFBEQkcoU0NUUF9ERUJVR19BU0NPTkYxLAogCQkJImhhbmRsZV9hc2Nv
bmY6IGNvdWxkbid0IGdldCBsb29rdXAgYWRkciFcbiIpOwogCQkvKiByZXNwb25kIHdpdGggYSBt
aXNzaW5nL2ludmFsaWQgbWFuZGF0b3J5IHBhcmFtZXRlciBlcnJvciAqLworCQlzY3RwX21fZnJl
ZW0obV9hY2spOwogCQlyZXR1cm47CiAJfQotCS8qIHBhcmFtX2xlbmd0aCBpcyBhbHJlYWR5IHZh
bGlkYXRlZCBpbiBwcm9jZXNzX2NvbnRyb2wuLi4gKi8KLQlvZmZzZXQgKz0gbnRvaHMocF9hZGRy
LT5waC5wYXJhbV9sZW5ndGgpOwkvKiBza2lwIGxvb2t1cCBhZGRyICovCisJLyogc2tpcCBsb29r
dXAgYWRkciAqLworCW9mZnNldCArPSBTQ1RQX1NJWkUzMihudG9ocyhwX2FkZHItPnBoLnBhcmFt
X2xlbmd0aCkpOwogCS8qIGdldCBwb2ludGVyIHRvIGZpcnN0IGFzY29uZiBwYXJhbSBpbiBBU0NP
TkYgKi8KIAlhcGggPSAoc3RydWN0IHNjdHBfYXNjb25mX3BhcmFtaGRyICopc2N0cF9tX2dldHB0
cihtLCBvZmZzZXQsIHNpemVvZihzdHJ1Y3Qgc2N0cF9hc2NvbmZfcGFyYW1oZHIpLCAodWludDhf
dCAqKSZhcGFyYW1fYnVmKTsKIAlpZiAoYXBoID09IE5VTEwpIHsKQEAgLTc3NSw4ICs3OTcsNiBA
QCBzY3RwX2hhbmRsZV9hc2NvbmYoc3RydWN0IG1idWYgKm0sIHVuc2lnbmVkIGludCBvZmZzZXQs
CiAJCWlmIChtX3Jlc3VsdCAhPSBOVUxMKSB7CiAJCQlTQ1RQX0JVRl9ORVhUKG1fdGFpbCkgPSBt
X3Jlc3VsdDsKIAkJCW1fdGFpbCA9IG1fcmVzdWx0OwotCQkJLyogdXBkYXRlIGxlbmd0aHMsIG1h
a2Ugc3VyZSBpdCdzIGFsaWduZWQgdG9vICovCi0JCQlTQ1RQX0JVRl9MRU4obV9yZXN1bHQpID0g
U0NUUF9TSVpFMzIoU0NUUF9CVUZfTEVOKG1fcmVzdWx0KSk7CiAJCQlhY2tfY3AtPmNoLmNodW5r
X2xlbmd0aCArPSBTQ1RQX0JVRl9MRU4obV9yZXN1bHQpOwogCQkJLyogc2V0IGZsYWcgdG8gZm9y
Y2Ugc3VjY2VzcyByZXBvcnRzICovCiAJCQllcnJvciA9IDE7CkBAIC05MzAsMTIgKzk1MCwxMiBA
QCBzY3RwX2FkZHJfbWF0Y2goc3RydWN0IHNjdHBfcGFyYW1oZHIgKnBoLCBzdHJ1Y3Qgc29ja2Fk
ZHIgKnNhKQogICogQ2xlYW51cCBmb3Igbm9uLXJlc3BvbmRlZC9PUCBFUlInZCBBU0NPTkYKICAq
Lwogdm9pZAotc2N0cF9hc2NvbmZfY2xlYW51cChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVj
dCBzY3RwX25ldHMgKm5ldCkKK3NjdHBfYXNjb25mX2NsZWFudXAoc3RydWN0IHNjdHBfdGNiICpz
dGNiKQogewogCS8qCiAJICogY2xlYXIgb3V0IGFueSBleGlzdGluZyBhc2NvbmZzIGdvaW5nIG91
dAogCSAqLwotCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfQVNDT05GLCBzdGNiLT5z
Y3RwX2VwLCBzdGNiLCBuZXQsCisJc2N0cF90aW1lcl9zdG9wKFNDVFBfVElNRVJfVFlQRV9BU0NP
TkYsIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIE5VTEwsCiAJCQlTQ1RQX0ZST01fU0NUUF9BU0NPTkYg
KyBTQ1RQX0xPQ18yKTsKIAlzdGNiLT5hc29jLmFzY29uZl9zZXFfb3V0X2Fja2VkID0gc3RjYi0+
YXNvYy5hc2NvbmZfc2VxX291dDsKIAkvKiByZW1vdmUgdGhlIG9sZCBBU0NPTkYgb24gb3VyIG91
dGJvdW5kIHF1ZXVlICovCkBAIC05NzIsOCArOTkyLDEyIEBAIHNjdHBfYXNjb25mX25ldHNfY2xl
YW51cChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2lmbiAqaWZuKQogCQkgICAg
KChpZm4gPT0gTlVMTCkgfHwKIAkJICAgICAoU0NUUF9HRVRfSUZfSU5ERVhfRlJPTV9ST1VURSgm
bmV0LT5ybykgIT0gaWZuLT5pZm5faW5kZXgpKSkgewogCQkJLyogY2xlYXIgYW55IGNhY2hlZCBy
b3V0ZSAqLworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCisJCQlST19OSEZSRUUoJm5ldC0+cm8pOworI2Vsc2UKIAkJCVJURlJFRShuZXQtPnJvLnJv
X3J0KTsKIAkJCW5ldC0+cm8ucm9fcnQgPSBOVUxMOworI2VuZGlmCiAJCX0KIAkJLyogY2xlYXIg
YW55IGNhY2hlZCBzb3VyY2UgYWRkcmVzcyAqLwogCQlpZiAobmV0LT5zcmNfYWRkcl9zZWxlY3Rl
ZCkgewpAQCAtMTAyNSw5ICsxMDQ5LDE0IEBAIHNjdHBfYXNzb2NfaW1tZWRpYXRlX3JldHJhbnMo
c3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9uZXRzICpkc3RuZXQpCiAJCSAgICAo
c3RjYi0+YXNvYy5zZW50X3F1ZXVlX2NudCA+IDApKSB7CiAJCQlzdHJ1Y3Qgc2N0cF90bWl0X2No
dW5rICpjaGs7CiAKLQkJCWNoayA9IFRBSUxRX0ZJUlNUKCZzdGNiLT5hc29jLnNlbnRfcXVldWUp
OwotCQkJc2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfU0VORCwgc3RjYi0+c2N0cF9l
cCwKLQkJCQkJIHN0Y2IsIGNoay0+d2hvVG8pOworCQkJVEFJTFFfRk9SRUFDSChjaGssICZzdGNi
LT5hc29jLnNlbnRfcXVldWUsIHNjdHBfbmV4dCkgeworCQkJCWlmIChjaGstPndob1RvICE9IE5V
TEwpIHsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJfQorCQkJaWYgKGNoayAhPSBOVUxMKSB7CisJ
CQkJc2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfU0VORCwgc3RjYi0+c2N0cF9lcCwg
c3RjYiwgY2hrLT53aG9Ubyk7CisJCQl9CiAJCX0KIAl9CiAJcmV0dXJuOwpAQCAtMTA4MiwxMCAr
MTExMSwxNCBAQCBzY3RwX3BhdGhfY2hlY2tfYW5kX3JlYWN0KHN0cnVjdCBzY3RwX3RjYiAqc3Rj
Yiwgc3RydWN0IHNjdHBfaWZhICpuZXdpZmEpCiAJaWYgKGFkZHJudW0gPT0gMSkgewogCQlUQUlM
UV9GT1JFQUNIKG5ldCwgJnN0Y2ItPmFzb2MubmV0cywgc2N0cF9uZXh0KSB7CiAJCQkvKiBjbGVh
ciBhbnkgY2FjaGVkIHJvdXRlIGFuZCBzb3VyY2UgYWRkcmVzcyAqLworI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQlST19OSEZSRUUoJm5ldC0+
cm8pOworI2Vsc2UKIAkJCWlmIChuZXQtPnJvLnJvX3J0KSB7CiAJCQkJUlRGUkVFKG5ldC0+cm8u
cm9fcnQpOwogCQkJCW5ldC0+cm8ucm9fcnQgPSBOVUxMOwogCQkJfQorI2VuZGlmCiAJCQlpZiAo
bmV0LT5zcmNfYWRkcl9zZWxlY3RlZCkgewogCQkJCXNjdHBfZnJlZV9pZmEobmV0LT5yby5fc19h
ZGRyKTsKIAkJCQluZXQtPnJvLl9zX2FkZHIgPSBOVUxMOwpAQCAtMTEwNCwxMCArMTEzNywxNCBA
QCBzY3RwX3BhdGhfY2hlY2tfYW5kX3JlYWN0KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0
IHNjdHBfaWZhICpuZXdpZmEpCiAJLyogTXVsdGlwbGUgbG9jYWwgYWRkcmVzc2VzIGV4c2lzdCBp
biB0aGUgYXNzb2NpYXRpb24uICAqLwogCVRBSUxRX0ZPUkVBQ0gobmV0LCAmc3RjYi0+YXNvYy5u
ZXRzLCBzY3RwX25leHQpIHsKIAkJLyogY2xlYXIgYW55IGNhY2hlZCByb3V0ZSBhbmQgc291cmNl
IGFkZHJlc3MgKi8KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQorCQlST19OSEZSRUUoJm5ldC0+cm8pOworI2Vsc2UKIAkJaWYgKG5ldC0+cm8ucm9f
cnQpIHsKIAkJCVJURlJFRShuZXQtPnJvLnJvX3J0KTsKIAkJCW5ldC0+cm8ucm9fcnQgPSBOVUxM
OwogCQl9CisjZW5kaWYKIAkJaWYgKG5ldC0+c3JjX2FkZHJfc2VsZWN0ZWQpIHsKIAkJCXNjdHBf
ZnJlZV9pZmEobmV0LT5yby5fc19hZGRyKTsKIAkJCW5ldC0+cm8uX3NfYWRkciA9IE5VTEw7CkBA
IC0xMTIyLDcgKzExNTksMTEgQEAgc2N0cF9wYXRoX2NoZWNrX2FuZF9yZWFjdChzdHJ1Y3Qgc2N0
cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2lmYSAqbmV3aWZhKQogCQlTQ1RQX1JUQUxMT0MoKHNj
dHBfcm91dGVfdCAqKSZuZXQtPnJvLAogCQkJICAgICBzdGNiLT5zY3RwX2VwLT5kZWZfdnJmX2lk
LAogCQkJICAgICBzdGNiLT5zY3RwX2VwLT5maWJudW0pOworI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCWlmIChuZXQtPnJvLnJvX25oID09IE5V
TEwpCisjZWxzZQogCQlpZiAobmV0LT5yby5yb19ydCA9PSBOVUxMKQorI2VuZGlmCiAJCQljb250
aW51ZTsKIAogCQljaGFuZ2VkID0gMDsKQEAgLTExNjIsNyArMTIwMyw3IEBAIHNjdHBfcGF0aF9j
aGVja19hbmRfcmVhY3Qoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9pZmEgKm5l
d2lmYSkKIAkJfQogCX0KIH0KLSNlbmRpZiAvKiBfX0ZyZWVCU0RfXyAgX19BUFBMRV9fICBfX1Vz
ZXJzcGFjZV9fICovCisjZW5kaWYKIAogLyoKICAqIHByb2Nlc3MgYW4gQUREL0RFTEVURSBJUCBh
Y2sgZnJvbSBwZWVyLgpAQCAtMTE5NCw3ICsxMjM1LDcgQEAgc2N0cF9hc2NvbmZfYWRkcl9tZ210
X2FjayhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2lmYSAqYWRkciwgdWludDMy
X3QKIAkJCXNjdHBfcGF0aF9jaGVja19hbmRfcmVhY3Qoc3RjYiwgYWRkcik7CiAJCQlyZXR1cm47
CiAJCX0KLSNlbmRpZiAvKiBfX0ZyZWVCU0RfXyBfX0FQUExFX18gX19Vc2Vyc3BhY2VfXyAqLwor
I2VuZGlmCiAJCS8qIGNsZWFyIGFueSBjYWNoZWQvdG9wb2xvZ2ljYWxseSBpbmNvcnJlY3Qgc291
cmNlIGFkZHJlc3NlcyAqLwogCQlzY3RwX2FzY29uZl9uZXRzX2NsZWFudXAoc3RjYiwgYWRkci0+
aWZuX3ApOwogCX0KQEAgLTEzODEsNyArMTQyMiw3IEBAIHNjdHBfYXNjb25mX3F1ZXVlX2FkZChz
dHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2lmYSAqaWZhLAogCQlpZiAoc2N0cF9h
c2NvbmZfcXVldWVfbWdtdChzdGNiLAogCQkJCQkgICBzdGNiLT5hc29jLmFzY29uZl9hZGRyX2Rl
bF9wZW5kaW5nLAogCQkJCQkgICBTQ1RQX0RFTF9JUF9BRERSRVNTKSA9PSAwKSB7Ci0JCQlTQ1RQ
REJHKFNDVFBfREVCVUdfQVNDT05GMiwgImFzY29uZl9xdWV1ZV9hZGQ6IHF1ZWluZyBwZW5kaW5n
IGRlbGV0ZVxuIik7CisJCQlTQ1RQREJHKFNDVFBfREVCVUdfQVNDT05GMiwgImFzY29uZl9xdWV1
ZV9hZGQ6IHF1ZXVpbmcgcGVuZGluZyBkZWxldGVcbiIpOwogCQkJcGVuZGluZ19kZWxldGVfcXVl
dWVkID0gMTsKIAkJCS8qIGNsZWFyIG91dCB0aGUgcGVuZGluZyBkZWxldGUgaW5mbyAqLwogCQkJ
c3RjYi0+YXNvYy5hc2NvbmZfZGVsX3BlbmRpbmcgPSAwOwpAQCAtMTY5OCw4ICsxNzM5LDcgQEAg
c2N0cF9oYW5kbGVfYXNjb25mX2FjayhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IG9mZnNldCwKIAkJY2hh
ciBtc2dbU0NUUF9ESUFHX0lORk9fTEVOXTsKIAogCQlTQ1RQREJHKFNDVFBfREVCVUdfQVNDT05G
MSwgImhhbmRsZV9hc2NvbmZfYWNrOiBnb3QgdW5leHBlY3RlZCBuZXh0IHNlcmlhbCBudW1iZXIh
IEFib3J0aW5nIGFzb2MhXG4iKTsKLQkJc25wcmludGYobXNnLCBzaXplb2YobXNnKSwgIk5ldmVy
IHNlbnQgc2VyaWFsIG51bWJlciAlOC44eCIsCi0JCQkgc2VyaWFsX251bSk7CisJCVNDVFBfU05Q
UklOVEYobXNnLCBzaXplb2YobXNnKSwgIk5ldmVyIHNlbnQgc2VyaWFsIG51bWJlciAlOC44eCIs
IHNlcmlhbF9udW0pOwogCQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBfQ0FVU0Vf
UFJPVE9DT0xfVklPTEFUSU9OLCBtc2cpOwogCQlzY3RwX2Fib3J0X2FuX2Fzc29jaWF0aW9uKHN0
Y2ItPnNjdHBfZXAsIHN0Y2IsIG9wX2VyciwgU0NUUF9TT19OT1RfTE9DS0VEKTsKIAkJKmFib3J0
X25vX3VubG9jayA9IDE7CkBAIC0xNzE0LDcgKzE3NTQsNyBAQCBzY3RwX2hhbmRsZV9hc2NvbmZf
YWNrKHN0cnVjdCBtYnVmICptLCBpbnQgb2Zmc2V0LAogCiAJaWYgKHNlcmlhbF9udW0gPT0gYXNv
Yy0+YXNjb25mX3NlcV9vdXQgLSAxKSB7CiAJCS8qIHN0b3Agb3VyIHRpbWVyICovCi0JCXNjdHBf
dGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfQVNDT05GLCBzdGNiLT5zY3RwX2VwLCBzdGNiLCBu
ZXQsCisJCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfQVNDT05GLCBzdGNiLT5zY3Rw
X2VwLCBzdGNiLCBOVUxMLAogCQkJCVNDVFBfRlJPTV9TQ1RQX0FTQ09ORiArIFNDVFBfTE9DXzUp
OwogCX0KIApAQCAtMTc4OCw5ICsxODI4LDkgQEAgc2N0cF9oYW5kbGVfYXNjb25mX2FjayhzdHJ1
Y3QgbWJ1ZiAqbSwgaW50IG9mZnNldCwKIAkJfQkJLyogc3dpdGNoICovCiAKIAkJLyogdXBkYXRl
IHJlbWFpbmluZyBBU0NPTkYtQUNLIG1lc3NhZ2UgbGVuZ3RoIHRvIHByb2Nlc3MgKi8KLQkJYWNr
X2xlbmd0aCAtPSBTQ1RQX1NJWkUzMihwYXJhbV9sZW5ndGgpOwotCQlpZiAoYWNrX2xlbmd0aCA8
PSAwKSB7Ci0JCQkvKiBubyBtb3JlIGRhdGEgaW4gdGhlIG1idWYgY2hhaW4gKi8KKwkJaWYgKGFj
a19sZW5ndGggPiBTQ1RQX1NJWkUzMihwYXJhbV9sZW5ndGgpKSB7CisJCQlhY2tfbGVuZ3RoIC09
IFNDVFBfU0laRTMyKHBhcmFtX2xlbmd0aCk7CisJCX0gZWxzZSB7CiAJCQlicmVhazsKIAkJfQog
CQlvZmZzZXQgKz0gU0NUUF9TSVpFMzIocGFyYW1fbGVuZ3RoKTsKQEAgLTE5MDEsNyArMTk0MSw3
IEBAIHNjdHBfYWRkcl9tZ210X2Fzc29jKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBz
Y3RwX3RjYiAqc3RjYiwKIAlzd2l0Y2ggKGlmYS0+YWRkcmVzcy5zYS5zYV9mYW1pbHkpIHsKICNp
ZmRlZiBJTkVUNgogCWNhc2UgQUZfSU5FVDY6Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlpZiAo
cHJpc29uX2NoZWNrX2lwNihpbnAtPmlwX2lucC5pbnAuaW5wX2NyZWQsCiAJCSAgICAgICAgICAg
ICAgICAgICAgICZpZmEtPmFkZHJlc3Muc2luNi5zaW42X2FkZHIpICE9IDApIHsKIAkJCXJldHVy
bjsKQEAgLTE5MTEsNyArMTk1MSw3IEBAIHNjdHBfYWRkcl9tZ210X2Fzc29jKHN0cnVjdCBzY3Rw
X2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKICNlbmRpZgogI2lmZGVmIElORVQK
IAljYXNlIEFGX0lORVQ6Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlpZiAocHJpc29uX2NoZWNr
X2lwNChpbnAtPmlwX2lucC5pbnAuaW5wX2NyZWQsCiAJCSAgICAgICAgICAgICAgICAgICAgICZp
ZmEtPmFkZHJlc3Muc2luLnNpbl9hZGRyKSAhPSAwKSB7CiAJCQlyZXR1cm47CkBAIC0xOTcyLDEy
ICsyMDEyLDEwIEBAIHNjdHBfYWRkcl9tZ210X2Fzc29jKHN0cnVjdCBzY3RwX2lucGNiICppbnAs
IHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAljYXNlIEFGX0lORVQ6CiAJewogCQlzdHJ1Y3Qgc29j
a2FkZHJfaW4gKnNpbjsKLQkJc3RydWN0IGluNnBjYiAqaW5wNjsKIAotCQlpbnA2ID0gKHN0cnVj
dCBpbjZwY2IgKikmaW5wLT5pcF9pbnAuaW5wOwogCQkvKiBpbnZhbGlkIGlmIHdlIGFyZSBhIHY2
IG9ubHkgZW5kcG9pbnQgKi8KIAkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFH
U19CT1VORF9WNikgJiYKLQkJICAgIFNDVFBfSVBWNl9WNk9OTFkoaW5wNikpCisJCSAgICBTQ1RQ
X0lQVjZfVjZPTkxZKGlucCkpCiAJCQlyZXR1cm47CiAKIAkJc2luID0gJmlmYS0+YWRkcmVzcy5z
aW47CkBAIC0yMDEwLDggKzIwNDgsOCBAQCBzY3RwX2FkZHJfbWdtdF9hc3NvYyhzdHJ1Y3Qgc2N0
cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCQkgKiBzZW50IHdoZW4gdGhl
IHN0YXRlIGdvZXMgb3Blbi4KIAkJCSAqLwogCQkJaWYgKHN0YXR1cyA9PSAwICYmCi0JCQkgICAg
KChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9PUEVOKSB8fAotCQkJ
ICAgICAoU0NUUF9HRVRfU1RBVEUoJnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05f
UkVDRUlWRUQpKSkgeworCQkJICAgICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFU
RV9PUEVOKSB8fAorCQkJICAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9T
SFVURE9XTl9SRUNFSVZFRCkpKSB7CiAjaWZkZWYgU0NUUF9USU1FUl9CQVNFRF9BU0NPTkYKIAkJ
CQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9BU0NPTkYsIGlucCwKIAkJCQkgICAg
c3RjYiwgc3RjYi0+YXNvYy5wcmltYXJ5X2Rlc3RpbmF0aW9uKTsKQEAgLTIwNTAsMTAgKzIwODgs
OCBAQCBzY3RwX2FzY29uZl9pdGVyYXRvcl9lcChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCB2b2lk
ICpwdHIsIHVpbnQzMl90IHZhbCBTQ1RQX1VOVQogCQljYXNlIEFGX0lORVQ6CiAJCXsKIAkJCS8q
IGludmFsaWQgaWYgd2UgYXJlIGEgdjYgb25seSBlbmRwb2ludCAqLwotCQkJc3RydWN0IGluNnBj
YiAqaW5wNjsKLQkJCWlucDYgPSAoc3RydWN0IGluNnBjYiAqKSZpbnAtPmlwX2lucC5pbnA7CiAJ
CQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0JPVU5EX1Y2KSAmJgotCQkJ
ICAgIFNDVFBfSVBWNl9WNk9OTFkoaW5wNikpIHsKKwkJCSAgICBTQ1RQX0lQVjZfVjZPTkxZKGlu
cCkpIHsKIAkJCQljbnRfaW52YWxpZCsrOwogCQkJCWlmIChhc2MtPmNudCA9PSBjbnRfaW52YWxp
ZCkKIAkJCQkJcmV0dXJuICgxKTsKQEAgLTIxNDQsNyArMjE4MCw3IEBAIHNjdHBfYXNjb25mX2l0
ZXJhdG9yX3N0Y2Ioc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNi
LAogCQkJCS8qIHdlIHNraXAgdW5zcGVjaWZlZCBhZGRyZXNzZXMgKi8KIAkJCQljb250aW51ZTsK
IAkJCX0KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQlpZiAocHJpc29uX2NoZWNrX2lwNihpbnAt
PmlwX2lucC5pbnAuaW5wX2NyZWQsCiAJCQkgICAgICAgICAgICAgICAgICAgICAmc2luNi0+c2lu
Nl9hZGRyKSAhPSAwKSB7CiAJCQkJY29udGludWU7CkBAIC0yMTY2LDEzICsyMjAyLDExIEBAIHNj
dHBfYXNjb25mX2l0ZXJhdG9yX3N0Y2Ioc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNj
dHBfdGNiICpzdGNiLAogCQljYXNlIEFGX0lORVQ6CiAJCXsKIAkJCS8qIGludmFsaWQgaWYgd2Ug
YXJlIGEgdjYgb25seSBlbmRwb2ludCAqLwotCQkJc3RydWN0IGluNnBjYiAqaW5wNjsKIAkJCXN0
cnVjdCBzb2NrYWRkcl9pbiAqc2luOwogCi0JCQlpbnA2ID0gKHN0cnVjdCBpbjZwY2IgKikmaW5w
LT5pcF9pbnAuaW5wOwogCQkJLyogaW52YWxpZCBpZiB3ZSBhcmUgYSB2NiBvbmx5IGVuZHBvaW50
ICovCiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0JPVU5EX1Y2KSAm
JgotCQkJICAgIFNDVFBfSVBWNl9WNk9OTFkoaW5wNikpCisJCQkgICAgU0NUUF9JUFY2X1Y2T05M
WShpbnApKQogCQkJCWNvbnRpbnVlOwogCiAJCQlzaW4gPSAmaWZhLT5hZGRyZXNzLnNpbjsKQEAg
LTIxODAsNyArMjIxNCw3IEBAIHNjdHBfYXNjb25mX2l0ZXJhdG9yX3N0Y2Ioc3RydWN0IHNjdHBf
aW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkJCS8qIHdlIHNraXAgdW5zcGVj
aWZlZCBhZGRyZXNzZXMgKi8KIAkJCQljb250aW51ZTsKIAkJCX0KLSNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAJCQlpZiAocHJpc29uX2NoZWNrX2lwNChpbnAtPmlwX2lucC5pbnAuaW5wX2NyZWQsCiAJ
CQkgICAgICAgICAgICAgICAgICAgICAmc2luLT5zaW5fYWRkcikgIT0gMCkgewogCQkJCWNvbnRp
bnVlOwpAQCAtMjE5MSw3ICsyMjI1LDcgQEAgc2N0cF9hc2NvbmZfaXRlcmF0b3Jfc3RjYihzdHJ1
Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCQkJY29udGludWU7
CiAJCQl9CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0JPVU5EX1Y2
KSAmJgotCQkJICAgIFNDVFBfSVBWNl9WNk9OTFkoaW5wNikpIHsKKwkJCSAgICBTQ1RQX0lQVjZf
VjZPTkxZKGlucCkpIHsKIAkJCQljbnRfaW52YWxpZCsrOwogCQkJCWlmIChhc2MtPmNudCA9PSBj
bnRfaW52YWxpZCkKIAkJCQkJcmV0dXJuOwpAQCAtMjIxNywxOCArMjI1MSwxOSBAQCBzY3RwX2Fz
Y29uZl9pdGVyYXRvcl9zdGNiKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3Rj
YiAqc3RjYiwKIAkJfSBlbHNlIGlmICh0eXBlID09IFNDVFBfREVMX0lQX0FERFJFU1MpIHsKIAkJ
CXN0cnVjdCBzY3RwX25ldHMgKm5ldDsKIAkJCVRBSUxRX0ZPUkVBQ0gobmV0LCAmc3RjYi0+YXNv
Yy5uZXRzLCBzY3RwX25leHQpIHsKLQkJCQlzY3RwX3J0ZW50cnlfdCAqcnQ7Ci0KIAkJCQkvKiBk
ZWxldGUgdGhpcyBhZGRyZXNzIGlmIGNhY2hlZCAqLwogCQkJCWlmIChuZXQtPnJvLl9zX2FkZHIg
PT0gaWZhKSB7CiAJCQkJCXNjdHBfZnJlZV9pZmEobmV0LT5yby5fc19hZGRyKTsKIAkJCQkJbmV0
LT5yby5fc19hZGRyID0gTlVMTDsKIAkJCQkJbmV0LT5zcmNfYWRkcl9zZWxlY3RlZCA9IDA7Ci0J
CQkJCXJ0ID0gbmV0LT5yby5yb19ydDsKLQkJCQkJaWYgKHJ0KSB7Ci0JCQkJCQlSVEZSRUUocnQp
OworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJ
CQkJCVJPX05IRlJFRSgmbmV0LT5ybyk7CisjZWxzZQorCQkJCQlpZiAobmV0LT5yby5yb19ydCkg
eworCQkJCQkJUlRGUkVFKG5ldC0+cm8ucm9fcnQpOwogCQkJCQkJbmV0LT5yby5yb19ydCA9IE5V
TEw7CiAJCQkJCX0KKyNlbmRpZgogCQkJCQkvKgogCQkJCQkgKiBOb3cgd2UgZGVsZXRlZCBvdXIg
c3JjIGFkZHJlc3MsCiAJCQkJCSAqIHNob3VsZCB3ZSBub3QgYWxzbyBub3cgcmVzZXQgdGhlCkBA
IC0yMjYzLDggKzIyOTgsOCBAQCBzY3RwX2FzY29uZl9pdGVyYXRvcl9zdGNiKHN0cnVjdCBzY3Rw
X2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJCSAqIGNvdW50IG9mIHF1ZXVl
ZCBwYXJhbXMuICBJZiBpbiB0aGUgbm9uLW9wZW4gc3RhdGUsCiAJCQkgKiB0aGVzZSBnZXQgc2Vu
dCB3aGVuIHRoZSBhc3NvYyBnb2VzIG9wZW4uCiAJCQkgKi8KLQkJCWlmICgoU0NUUF9HRVRfU1RB
VEUoJnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVfT1BFTikgfHwKLQkJCSAgICAoU0NUUF9HRVRf
U1RBVEUoJnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpKSB7CisJ
CQlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfT1BFTikgfHwKKwkJCSAg
ICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkp
IHsKIAkJCQlpZiAoc3RhdHVzID49IDApIHsKIAkJCQkJbnVtX3F1ZXVlZCsrOwogCQkJCX0KQEAg
LTIzMjUsOCArMjM2MCw4IEBAIHNjdHBfc2V0X3ByaW1hcnlfaXBfYWRkcmVzc19zYShzdHJ1Y3Qg
c2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzb2NrYWRkciAqc2EpCiAJCQkic2V0X3ByaW1hcnlfaXBf
YWRkcmVzc19zYTogcXVldWVkIG9uIHRjYj0lcCwgIiwKIAkJCSh2b2lkICopc3RjYik7CiAJCVND
VFBEQkdfQUREUihTQ1RQX0RFQlVHX0FTQ09ORjEsIHNhKTsKLQkJaWYgKChTQ1RQX0dFVF9TVEFU
RSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9PUEVOKSB8fAotCQkgICAgKFNDVFBfR0VUX1NU
QVRFKCZzdGNiLT5hc29jKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgeworCQlp
ZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfT1BFTikgfHwKKwkJICAgIChT
Q1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgewog
I2lmZGVmIFNDVFBfVElNRVJfQkFTRURfQVNDT05GCiAJCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBf
VElNRVJfVFlQRV9BU0NPTkYsCiAJCQkJCSBzdGNiLT5zY3RwX2VwLCBzdGNiLApAQCAtMjQ2OSw3
ICsyNTA0LDcgQEAgc2N0cF9maW5kX3ZhbGlkX2xvY2FsYWRkcihzdHJ1Y3Qgc2N0cF90Y2IgKnN0
Y2IsIGludCBhZGRyX2xvY2tlZCkKIAkJCQkJCS8qIHNraXAgdW5zcGVjaWZlZCBhZGRyZXNzZXMg
Ki8KIAkJCQkJCWNvbnRpbnVlOwogCQkJCQl9Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCQlp
ZiAocHJpc29uX2NoZWNrX2lwNChzdGNiLT5zY3RwX2VwLT5pcF9pbnAuaW5wLmlucF9jcmVkLAog
CQkJCQkgICAgICAgICAgICAgICAgICAgICAmc2luLT5zaW5fYWRkcikgIT0gMCkgewogCQkJCQkJ
Y29udGludWU7CkBAIC0yNTAzLDcgKzI1MzgsNyBAQCBzY3RwX2ZpbmRfdmFsaWRfbG9jYWxhZGRy
KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgaW50IGFkZHJfbG9ja2VkKQogCQkJCQkJLyogd2Ugc2tp
cCB1bnNwZWNpZmVkIGFkZHJlc3NlcyAqLwogCQkJCQkJY29udGludWU7CiAJCQkJCX0KLSNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiAJCQkJCWlmIChwcmlzb25fY2hlY2tfaXA2KHN0Y2ItPnNjdHBfZXAt
PmlwX2lucC5pbnAuaW5wX2NyZWQsCiAJCQkJCSAgICAgICAgICAgICAgICAgICAgICZzaW42LT5z
aW42X2FkZHIpICE9IDApIHsKIAkJCQkJCWNvbnRpbnVlOwpAQCAtMjU5MiwxNCArMjYyNywxNCBA
QCBzY3RwX2NvbXBvc2VfYXNjb25mKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgaW50ICpyZXRsZW4s
IGludCBhZGRyX2xvY2tlZCkKIAlpZiAobV9hc2NvbmZfY2hrID09IE5VTEwpIHsKIAkJLyogbm8g
bWJ1ZidzICovCiAJCVNDVFBEQkcoU0NUUF9ERUJVR19BU0NPTkYxLAotCQkJImNvbXBvc2VfYXNj
b25mOiBjb3VsZG4ndCBnZXQgY2h1bmsgbWJ1ZiFcbiIpOworCQkJInNjdHBfY29tcG9zZV9hc2Nv
bmY6IGNvdWxkbid0IGdldCBjaHVuayBtYnVmIVxuIik7CiAJCXJldHVybiAoTlVMTCk7CiAJfQog
CW1fYXNjb25mID0gc2N0cF9nZXRfbWJ1Zl9mb3JfbXNnKE1DTEJZVEVTLCAwLCBNX05PV0FJVCwg
MSwgTVRfREFUQSk7CiAJaWYgKG1fYXNjb25mID09IE5VTEwpIHsKIAkJLyogbm8gbWJ1ZidzICov
CiAJCVNDVFBEQkcoU0NUUF9ERUJVR19BU0NPTkYxLAotCQkJImNvbXBvc2VfYXNjb25mOiBjb3Vs
ZG4ndCBnZXQgbWJ1ZiFcbiIpOworCQkJInNjdHBfY29tcG9zZV9hc2NvbmY6IGNvdWxkbid0IGdl
dCBtYnVmIVxuIik7CiAJCXNjdHBfbV9mcmVlbShtX2FzY29uZl9jaGspOwogCQlyZXR1cm4gKE5V
TEwpOwogCX0KQEAgLTI3MjQsMTAgKzI3NTksMTIgQEAgc2N0cF9jb21wb3NlX2FzY29uZihzdHJ1
Y3Qgc2N0cF90Y2IgKnN0Y2IsIGludCAqcmV0bGVuLCBpbnQgYWRkcl9sb2NrZWQpCiAJCQkJYnJl
YWs7CiAjZW5kaWYKIAkJCWRlZmF1bHQ6Ci0JCQkJcF9zaXplID0gMDsKLQkJCQlhZGRyX3NpemUg
PSAwOwotCQkJCWFkZHJfcHRyID0gTlVMTDsKLQkJCQlicmVhazsKKwkJCQlTQ1RQREJHKFNDVFBf
REVCVUdfQVNDT05GMSwKKwkJCQkJInNjdHBfY29tcG9zZV9hc2NvbmY6IG5vIHVzYWJsZSBsb29r
dXAgYWRkciAoZmFtaWx5ID0gJWQpIVxuIiwKKwkJCQkJZm91bmRfYWRkci0+c2FfZmFtaWx5KTsK
KwkJCQlzY3RwX21fZnJlZW0obV9hc2NvbmZfY2hrKTsKKwkJCQlzY3RwX21fZnJlZW0obV9hc2Nv
bmYpOworCQkJCXJldHVybiAoTlVMTCk7CiAJCQl9CiAJCQlsb29rdXAtPnBoLnBhcmFtX2xlbmd0
aCA9IGh0b25zKFNDVFBfU0laRTMyKHBfc2l6ZSkpOwogCQkJbWVtY3B5KGxvb2t1cC0+YWRkciwg
YWRkcl9wdHIsIGFkZHJfc2l6ZSk7CkBAIC0yNzM1LDEyICsyNzcyLDEwIEBAIHNjdHBfY29tcG9z
ZV9hc2NvbmYoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBpbnQgKnJldGxlbiwgaW50IGFkZHJfbG9j
a2VkKQogCQl9IGVsc2UgewogCQkJLyogdWggb2guLi4gZG9uJ3QgaGF2ZSBhbnkgYWRkcmVzcz8/
ICovCiAJCQlTQ1RQREJHKFNDVFBfREVCVUdfQVNDT05GMSwKLQkJCQkiY29tcG9zZV9hc2NvbmY6
IG5vIGxvb2t1cCBhZGRyIVxuIik7Ci0JCQkvKiBYWFggZm9yIG5vdywgd2Ugc2VuZCBhIElQdjQg
YWRkcmVzcyBvZiAwLjAuMC4wICovCi0JCQlsb29rdXAtPnBoLnBhcmFtX3R5cGUgPSBodG9ucyhT
Q1RQX0lQVjRfQUREUkVTUyk7Ci0JCQlsb29rdXAtPnBoLnBhcmFtX2xlbmd0aCA9IGh0b25zKFND
VFBfU0laRTMyKHNpemVvZihzdHJ1Y3Qgc2N0cF9pcHY0YWRkcl9wYXJhbSkpKTsKLQkJCW1lbXNl
dChsb29rdXAtPmFkZHIsIDAsIHNpemVvZihzdHJ1Y3QgaW5fYWRkcikpOwotCQkJU0NUUF9CVUZf
TEVOKG1fYXNjb25mX2NoaykgKz0gU0NUUF9TSVpFMzIoc2l6ZW9mKHN0cnVjdCBzY3RwX2lwdjRh
ZGRyX3BhcmFtKSk7CisJCQkJInNjdHBfY29tcG9zZV9hc2NvbmY6IG5vIGxvb2t1cCBhZGRyIVxu
Iik7CisJCQlzY3RwX21fZnJlZW0obV9hc2NvbmZfY2hrKTsKKwkJCXNjdHBfbV9mcmVlbShtX2Fz
Y29uZik7CisJCQlyZXR1cm4gKE5VTEwpOwogCQl9CiAJfQogCS8qIGNoYWluIGl0IGFsbCB0b2dl
dGhlciAqLwpAQCAtMjg2MSw4ICsyODk2LDcgQEAgc2N0cF9wcm9jZXNzX2luaXRhY2tfYWRkcmVz
c2VzKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IG1idWYgKm0sCiAJCQkJICogb3V0IHRo
ZSBBU0NPTkYuCiAJCQkJICovCiAJCQkJaWYgKHN0YXR1cyA9PSAwICYmCi0JCQkJICAgIFNDVFBf
R0VUX1NUQVRFKCZzdGNiLT5hc29jKSA9PQotCQkJCSAgICBTQ1RQX1NUQVRFX09QRU4pIHsKKwkJ
CQkgICAgU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9PUEVOKSB7CiAjaWZkZWYg
U0NUUF9USU1FUl9CQVNFRF9BU0NPTkYKIAkJCQkJc2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVS
X1RZUEVfQVNDT05GLAogCQkJCQkJCSBzdGNiLT5zY3RwX2VwLCBzdGNiLApAQCAtMzAzNywxMCAr
MzA3MSw2IEBAIHNjdHBfY2hlY2tfYWRkcmVzc19saXN0X2VwKHN0cnVjdCBzY3RwX3RjYiAqc3Rj
Yiwgc3RydWN0IG1idWYgKm0sIGludCBvZmZzZXQsCiAJCQkJImNoZWNrX2FkZHJfbGlzdF9lcDog
bGFkZHItPmlmYSBpcyBOVUxMIik7CiAJCQljb250aW51ZTsKIAkJfQotCQlpZiAobGFkZHItPmlm
YSA9PSBOVUxMKSB7Ci0JCQlTQ1RQREJHKFNDVFBfREVCVUdfQVNDT05GMSwgImNoZWNrX2FkZHJf
bGlzdF9lcDogbGFkZHItPmlmYS0+aWZhX2FkZHIgaXMgTlVMTCIpOwotCQkJY29udGludWU7Ci0J
CX0KIAkJLyogZG8gaSBoYXZlIGl0IGltcGxpY2l0bHk/ICovCiAJCWlmIChzY3RwX2NtcGFkZHIo
JmxhZGRyLT5pZmEtPmFkZHJlc3Muc2EsIGluaXRfYWRkcikpIHsKIAkJCWNvbnRpbnVlOwpAQCAt
MzEwMiw3ICszMTMyLDcgQEAgc2N0cF9jaGVja19hZGRyZXNzX2xpc3RfYWxsKHN0cnVjdCBzY3Rw
X3RjYiAqc3RjYiwgc3RydWN0IG1idWYgKm0sIGludCBvZmZzZXQsCiAjaWZkZWYgSU5FVAogCQkJ
Y2FzZSBBRl9JTkVUOgogCQkJCXNpbiA9ICZzY3RwX2lmYS0+YWRkcmVzcy5zaW47Ci0jaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogCQkJCWlmIChwcmlzb25fY2hlY2tfaXA0KHN0Y2ItPnNjdHBfZXAtPmlw
X2lucC5pbnAuaW5wX2NyZWQsCiAJCQkJICAgICAgICAgICAgICAgICAgICAgJnNpbi0+c2luX2Fk
ZHIpICE9IDApIHsKIAkJCQkJY29udGludWU7CkBAIC0zMTE4LDcgKzMxNDgsNyBAQCBzY3RwX2No
ZWNrX2FkZHJlc3NfbGlzdF9hbGwoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3QgbWJ1ZiAq
bSwgaW50IG9mZnNldCwKICNpZmRlZiBJTkVUNgogCQkJY2FzZSBBRl9JTkVUNjoKIAkJCQlzaW42
ID0gJnNjdHBfaWZhLT5hZGRyZXNzLnNpbjY7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCWlm
IChwcmlzb25fY2hlY2tfaXA2KHN0Y2ItPnNjdHBfZXAtPmlwX2lucC5pbnAuaW5wX2NyZWQsCiAJ
CQkJICAgICAgICAgICAgICAgICAgICAgJnNpbjYtPnNpbjZfYWRkcikgIT0gMCkgewogCQkJCQlj
b250aW51ZTsKQEAgLTMxODcsNyArMzIxNyw3IEBAIHNjdHBfY2hlY2tfYWRkcmVzc19saXN0KHN0
cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IG1idWYgKm0sIGludCBvZmZzZXQsCiAgKi8KIHVp
bnQzMl90CiBzY3RwX2FkZHJfbWdtdF9lcF9zYShzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1
Y3Qgc29ja2FkZHIgKnNhLAotICAgIHVpbnQzMl90IHR5cGUsIHVpbnQzMl90IHZyZl9pZCwgc3Ry
dWN0IHNjdHBfaWZhICpzY3RwX2lmYXApCisgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB0
eXBlLCB1aW50MzJfdCB2cmZfaWQpCiB7CiAJc3RydWN0IHNjdHBfaWZhICppZmE7CiAJc3RydWN0
IHNjdHBfbGFkZHIgKmxhZGRyLCAqbmxhZGRyOwpAQCAtMzE5OCw5ICszMjI4LDcgQEAgc2N0cF9h
ZGRyX21nbXRfZXBfc2Eoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNvY2thZGRyICpz
YSwKIAkJcmV0dXJuIChFSU5WQUwpOwogCX0KICNlbmRpZgotCWlmIChzY3RwX2lmYXApIHsKLQkJ
aWZhID0gc2N0cF9pZmFwOwotCX0gZWxzZSBpZiAodHlwZSA9PSBTQ1RQX0FERF9JUF9BRERSRVNT
KSB7CisJaWYgKHR5cGUgPT0gU0NUUF9BRERfSVBfQUREUkVTUykgewogCQkvKiBGb3IgYW4gYWRk
IHRoZSBhZGRyZXNzIE1VU1QgYmUgb24gdGhlIHN5c3RlbSAqLwogCQlpZmEgPSBzY3RwX2ZpbmRf
aWZhX2J5X2FkZHIoc2EsIHZyZl9pZCwgU0NUUF9BRERSX05PVF9MT0NLRUQpOwogCX0gZWxzZSBp
ZiAodHlwZSA9PSBTQ1RQX0RFTF9JUF9BRERSRVNTKSB7CkBAIC0zMjg3LDEwICszMzE1LDkgQEAg
c2N0cF9hZGRyX21nbXRfZXBfc2Eoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNvY2th
ZGRyICpzYSwKIH0KIAogdm9pZAotc2N0cF9hc2NvbmZfc2VuZF9uYXRfc3RhdGVfdXBkYXRlKHN0
cnVjdCBzY3RwX3RjYiAqc3RjYiwKLQkJCQkgIHN0cnVjdCBzY3RwX25ldHMgKm5ldCkKK3NjdHBf
YXNjb25mX3NlbmRfbmF0X3N0YXRlX3VwZGF0ZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVj
dCBzY3RwX25ldHMgKm5ldCkKIHsKLQlzdHJ1Y3Qgc2N0cF9hc2NvbmZfYWRkciAqYWE7CisJc3Ry
dWN0IHNjdHBfYXNjb25mX2FkZHIgKmFhX3Z0YWcsICphYV9hZGQsICphYV9kZWw7CiAJc3RydWN0
IHNjdHBfaWZhICpzY3RwX2lmYXA7CiAJc3RydWN0IHNjdHBfYXNjb25mX3RhZ19wYXJhbSAqdnRh
ZzsKICNpZmRlZiBJTkVUCkBAIC0zMjk5LDYgKzMzMjYsNyBAQCBzY3RwX2FzY29uZl9zZW5kX25h
dF9zdGF0ZV91cGRhdGUoc3RydWN0IHNjdHBfdGNiICpzdGNiLAogI2lmZGVmIElORVQ2CiAJc3Ry
dWN0IHNvY2thZGRyX2luNiAqdG82OwogI2VuZGlmCisKIAlpZiAobmV0ID09IE5VTEwpIHsKIAkJ
U0NUUERCRyhTQ1RQX0RFQlVHX0FTQ09ORjEsICJzY3RwX2FzY29uZl9zZW5kX25hdF9zdGF0ZV91
cGRhdGU6IE1pc3NpbmcgbmV0XG4iKTsKIAkJcmV0dXJuOwpAQCAtMzMwNywxMDggKzMzMzUsODQg
QEAgc2N0cF9hc2NvbmZfc2VuZF9uYXRfc3RhdGVfdXBkYXRlKHN0cnVjdCBzY3RwX3RjYiAqc3Rj
YiwKIAkJU0NUUERCRyhTQ1RQX0RFQlVHX0FTQ09ORjEsICJzY3RwX2FzY29uZl9zZW5kX25hdF9z
dGF0ZV91cGRhdGU6IE1pc3Npbmcgc3RjYlxuIik7CiAJCXJldHVybjsKIAl9Ci0gIC8qIE5lZWQg
dG8gaGF2ZSBpbiB0aGUgYXNjb25mOgotICAgKiAtIHZ0YWdwYXJhbShteV92dGFnL3BlZXJfdnRh
ZykKLSAgICogLSBhZGQoMC4wLjAuMCkKLSAgICogLSBkZWwoMC4wLjAuMCkKLSAgICogLSBBbnkg
Z2xvYmFsIGFkZHJlc3NlcyBhZGQoYWRkcikKLSAgICovCi0JU0NUUF9NQUxMT0MoYWEsIHN0cnVj
dCBzY3RwX2FzY29uZl9hZGRyICosIHNpemVvZigqYWEpLAotCSAgICAgICAgICAgIFNDVFBfTV9B
U0NfQUREUik7Ci0JaWYgKGFhID09IE5VTEwpIHsKLQkJLyogZGlkbid0IGdldCBtZW1vcnkgKi8K
LQkJU0NUUERCRyhTQ1RQX0RFQlVHX0FTQ09ORjEsCi0JCSAgICAgICAgInNjdHBfYXNjb25mX3Nl
bmRfbmF0X3N0YXRlX3VwZGF0ZTogZmFpbGVkIHRvIGdldCBtZW1vcnkhXG4iKTsKKwkvKiBOZWVk
IHRvIGhhdmUgaW4gdGhlIEFTQ09ORjoKKwkgKiAtIFZUQUcobXlfdnRhZy9wZWVyX3Z0YWcpCisJ
ICogLSBBREQod2lsZGNhcmQpCisJICogLSBERUwod2lsZGNhcmQpCisJICogLSBBREQoQW55IGds
b2JhbCBhZGRyZXNzZXMpCisJICovCisJU0NUUF9NQUxMT0MoYWFfdnRhZywgc3RydWN0IHNjdHBf
YXNjb25mX2FkZHIgKiwgc2l6ZW9mKHN0cnVjdCBzY3RwX2FzY29uZl9hZGRyKSwgU0NUUF9NX0FT
Q19BRERSKTsKKwlTQ1RQX01BTExPQyhhYV9hZGQsIHN0cnVjdCBzY3RwX2FzY29uZl9hZGRyICos
IHNpemVvZihzdHJ1Y3Qgc2N0cF9hc2NvbmZfYWRkciksIFNDVFBfTV9BU0NfQUREUik7CisJU0NU
UF9NQUxMT0MoYWFfZGVsLCBzdHJ1Y3Qgc2N0cF9hc2NvbmZfYWRkciAqLCBzaXplb2Yoc3RydWN0
IHNjdHBfYXNjb25mX2FkZHIpLCBTQ1RQX01fQVNDX0FERFIpOworCisJaWYgKChhYV92dGFnID09
IE5VTEwpIHx8IChhYV9hZGQgPT0gTlVMTCkgfHwgKGFhX2RlbCA9PSBOVUxMKSkgeworCQkvKiBE
aWRuJ3QgZ2V0IG1lbW9yeSAqLworCQlTQ1RQREJHKFNDVFBfREVCVUdfQVNDT05GMSwgInNjdHBf
YXNjb25mX3NlbmRfbmF0X3N0YXRlX3VwZGF0ZTogZmFpbGVkIHRvIGdldCBtZW1vcnkhXG4iKTsK
K291dDoKKwkJaWYgKGFhX3Z0YWcgIT0gTlVMTCkgeworCQkJU0NUUF9GUkVFKGFhX3Z0YWcsIFND
VFBfTV9BU0NfQUREUik7CisJCX0KKwkJaWYgKGFhX2FkZCAhPSBOVUxMKSB7CisJCQlTQ1RQX0ZS
RUUoYWFfYWRkLCBTQ1RQX01fQVNDX0FERFIpOworCQl9CisJCWlmIChhYV9kZWwgIT0gTlVMTCkg
eworCQkJU0NUUF9GUkVFKGFhX2RlbCwgU0NUUF9NX0FTQ19BRERSKTsKKwkJfQogCQlyZXR1cm47
CiAJfQotCWFhLT5zcGVjaWFsX2RlbCA9IDA7Ci0JLyogZmlsbCBpbiBhc2NvbmYgYWRkcmVzcyBw
YXJhbWV0ZXIgZmllbGRzICovCi0JLyogdG9wIGxldmVsIGVsZW1lbnRzIGFyZSAibmV0d29ya2Vk
IiBkdXJpbmcgc2VuZCAqLwotCWFhLT5pZmEgPSBOVUxMOwotCWFhLT5zZW50ID0gMDsJCS8qIGNs
ZWFyIHNlbnQgZmxhZyAqLwotCXZ0YWcgPSAoc3RydWN0IHNjdHBfYXNjb25mX3RhZ19wYXJhbSAq
KSZhYS0+YXAuYXBoOworCW1lbXNldChhYV92dGFnLCAwLCBzaXplb2Yoc3RydWN0IHNjdHBfYXNj
b25mX2FkZHIpKTsKKwlhYV92dGFnLT5zcGVjaWFsX2RlbCA9IDA7CisJLyogRmlsbCBpbiBBU0NP
TkYgYWRkcmVzcyBwYXJhbWV0ZXIgZmllbGRzLiAqLworCS8qIFRvcCBsZXZlbCBlbGVtZW50cyBh
cmUgIm5ldHdvcmtlZCIgZHVyaW5nIHNlbmQuICovCisJYWFfdnRhZy0+aWZhID0gTlVMTDsKKwlh
YV92dGFnLT5zZW50ID0gMDsJCS8qIGNsZWFyIHNlbnQgZmxhZyAqLworCXZ0YWcgPSAoc3RydWN0
IHNjdHBfYXNjb25mX3RhZ19wYXJhbSAqKSZhYV92dGFnLT5hcC5hcGg7CiAJdnRhZy0+YXBoLnBo
LnBhcmFtX3R5cGUgPSBTQ1RQX05BVF9WVEFHUzsKIAl2dGFnLT5hcGgucGgucGFyYW1fbGVuZ3Ro
ID0gc2l6ZW9mKHN0cnVjdCBzY3RwX2FzY29uZl90YWdfcGFyYW0pOwogCXZ0YWctPmxvY2FsX3Z0
YWcgPSBodG9ubChzdGNiLT5hc29jLm15X3Z0YWcpOwogCXZ0YWctPnJlbW90ZV92dGFnID0gaHRv
bmwoc3RjYi0+YXNvYy5wZWVyX3Z0YWcpOwotCVRBSUxRX0lOU0VSVF9UQUlMKCZzdGNiLT5hc29j
LmFzY29uZl9xdWV1ZSwgYWEsIG5leHQpOwogCi0JU0NUUF9NQUxMT0MoYWEsIHN0cnVjdCBzY3Rw
X2FzY29uZl9hZGRyICosIHNpemVvZigqYWEpLAotCSAgICAgICAgICAgIFNDVFBfTV9BU0NfQURE
Uik7Ci0JaWYgKGFhID09IE5VTEwpIHsKLQkJLyogZGlkbid0IGdldCBtZW1vcnkgKi8KLQkJU0NU
UERCRyhTQ1RQX0RFQlVHX0FTQ09ORjEsCi0JCSAgICAgICAgInNjdHBfYXNjb25mX3NlbmRfbmF0
X3N0YXRlX3VwZGF0ZTogZmFpbGVkIHRvIGdldCBtZW1vcnkhXG4iKTsKLQkJcmV0dXJuOwotCX0K
LQltZW1zZXQoYWEsIDAsIHNpemVvZihzdHJ1Y3Qgc2N0cF9hc2NvbmZfYWRkcikpOwotCS8qIGZp
bGwgaW4gYXNjb25mIGFkZHJlc3MgcGFyYW1ldGVyIGZpZWxkcyAqLwotCS8qIEFERCgwLjAuMC4w
KSAqLwotCXN3aXRjaCAobmV0LT5yby5fbF9hZGRyLnNhLnNhX2ZhbWlseSkgewotI2lmZGVmIElO
RVQKLQljYXNlIEFGX0lORVQ6Ci0JCWFhLT5hcC5hcGgucGgucGFyYW1fdHlwZSA9IFNDVFBfQURE
X0lQX0FERFJFU1M7Ci0JCWFhLT5hcC5hcGgucGgucGFyYW1fbGVuZ3RoID0gc2l6ZW9mKHN0cnVj
dCBzY3RwX2FzY29uZl9hZGRydjRfcGFyYW0pOwotCQlhYS0+YXAuYWRkcnAucGgucGFyYW1fdHlw
ZSA9IFNDVFBfSVBWNF9BRERSRVNTOwotCQlhYS0+YXAuYWRkcnAucGgucGFyYW1fbGVuZ3RoID0g
c2l6ZW9mIChzdHJ1Y3Qgc2N0cF9pcHY0YWRkcl9wYXJhbSk7Ci0JCS8qIE5vIG5lZWQgdG8gYWRk
IGFuIGFkZHJlc3MsIHdlIGFyZSB1c2luZyAwLjAuMC4wICovCi0JCVRBSUxRX0lOU0VSVF9UQUlM
KCZzdGNiLT5hc29jLmFzY29uZl9xdWV1ZSwgYWEsIG5leHQpOwotCQlicmVhazsKLSNlbmRpZgot
I2lmZGVmIElORVQ2Ci0JY2FzZSBBRl9JTkVUNjoKLQkJYWEtPmFwLmFwaC5waC5wYXJhbV90eXBl
ID0gU0NUUF9BRERfSVBfQUREUkVTUzsKLQkJYWEtPmFwLmFwaC5waC5wYXJhbV9sZW5ndGggPSBz
aXplb2Yoc3RydWN0IHNjdHBfYXNjb25mX2FkZHJfcGFyYW0pOwotCQlhYS0+YXAuYWRkcnAucGgu
cGFyYW1fdHlwZSA9IFNDVFBfSVBWNl9BRERSRVNTOwotCQlhYS0+YXAuYWRkcnAucGgucGFyYW1f
bGVuZ3RoID0gc2l6ZW9mIChzdHJ1Y3Qgc2N0cF9pcHY2YWRkcl9wYXJhbSk7Ci0JCS8qIE5vIG5l
ZWQgdG8gYWRkIGFuIGFkZHJlc3MsIHdlIGFyZSB1c2luZyAwLjAuMC4wICovCi0JCVRBSUxRX0lO
U0VSVF9UQUlMKCZzdGNiLT5hc29jLmFzY29uZl9xdWV1ZSwgYWEsIG5leHQpOwotCQlicmVhazsK
LSNlbmRpZgotCWRlZmF1bHQ6Ci0JCVNDVFBEQkcoU0NUUF9ERUJVR19BU0NPTkYxLAotCQkgICAg
ICAgICJzY3RwX2FzY29uZl9zZW5kX25hdF9zdGF0ZV91cGRhdGU6IHVua25vd24gYWRkcmVzcyBm
YW1pbHlcbiIpOwotCQlTQ1RQX0ZSRUUoYWEsIFNDVFBfTV9BU0NfQUREUik7Ci0JCXJldHVybjsK
LQl9Ci0JU0NUUF9NQUxMT0MoYWEsIHN0cnVjdCBzY3RwX2FzY29uZl9hZGRyICosIHNpemVvZigq
YWEpLAotCSAgICAgICAgICAgIFNDVFBfTV9BU0NfQUREUik7Ci0JaWYgKGFhID09IE5VTEwpIHsK
LQkJLyogZGlkbid0IGdldCBtZW1vcnkgKi8KLQkJU0NUUERCRyhTQ1RQX0RFQlVHX0FTQ09ORjEs
Ci0JCSAgICAgICAgInNjdHBfYXNjb25mX3NlbmRfbmF0X3N0YXRlX3VwZGF0ZTogZmFpbGVkIHRv
IGdldCBtZW1vcnkhXG4iKTsKLQkJcmV0dXJuOwotCX0KLQltZW1zZXQoYWEsIDAsIHNpemVvZihz
dHJ1Y3Qgc2N0cF9hc2NvbmZfYWRkcikpOwotCS8qIGZpbGwgaW4gYXNjb25mIGFkZHJlc3MgcGFy
YW1ldGVyIGZpZWxkcyAqLwotCS8qIEFERCgwLjAuMC4wKSAqLworCW1lbXNldChhYV9hZGQsIDAs
IHNpemVvZihzdHJ1Y3Qgc2N0cF9hc2NvbmZfYWRkcikpOworCW1lbXNldChhYV9kZWwsIDAsIHNp
emVvZihzdHJ1Y3Qgc2N0cF9hc2NvbmZfYWRkcikpOwogCXN3aXRjaCAobmV0LT5yby5fbF9hZGRy
LnNhLnNhX2ZhbWlseSkgewogI2lmZGVmIElORVQKIAljYXNlIEFGX0lORVQ6Ci0JCWFhLT5hcC5h
cGgucGgucGFyYW1fdHlwZSA9IFNDVFBfQUREX0lQX0FERFJFU1M7Ci0JCWFhLT5hcC5hcGgucGgu
cGFyYW1fbGVuZ3RoID0gc2l6ZW9mKHN0cnVjdCBzY3RwX2FzY29uZl9hZGRydjRfcGFyYW0pOwot
CQlhYS0+YXAuYWRkcnAucGgucGFyYW1fdHlwZSA9IFNDVFBfSVBWNF9BRERSRVNTOwotCQlhYS0+
YXAuYWRkcnAucGgucGFyYW1fbGVuZ3RoID0gc2l6ZW9mIChzdHJ1Y3Qgc2N0cF9pcHY0YWRkcl9w
YXJhbSk7Ci0JCS8qIE5vIG5lZWQgdG8gYWRkIGFuIGFkZHJlc3MsIHdlIGFyZSB1c2luZyAwLjAu
MC4wICovCi0JCVRBSUxRX0lOU0VSVF9UQUlMKCZzdGNiLT5hc29jLmFzY29uZl9xdWV1ZSwgYWEs
IG5leHQpOworCQlhYV9hZGQtPmFwLmFwaC5waC5wYXJhbV90eXBlID0gU0NUUF9BRERfSVBfQURE
UkVTUzsKKwkJYWFfYWRkLT5hcC5hcGgucGgucGFyYW1fbGVuZ3RoID0gc2l6ZW9mKHN0cnVjdCBz
Y3RwX2FzY29uZl9hZGRydjRfcGFyYW0pOworCQlhYV9hZGQtPmFwLmFkZHJwLnBoLnBhcmFtX3R5
cGUgPSBTQ1RQX0lQVjRfQUREUkVTUzsKKwkJYWFfYWRkLT5hcC5hZGRycC5waC5wYXJhbV9sZW5n
dGggPSBzaXplb2YgKHN0cnVjdCBzY3RwX2lwdjRhZGRyX3BhcmFtKTsKKwkJLyogTm8gbmVlZCB0
byBmaWxsIHRoZSBhZGRyZXNzLCB3ZSBhcmUgdXNpbmcgMC4wLjAuMCAqLworCQlhYV9kZWwtPmFw
LmFwaC5waC5wYXJhbV90eXBlID0gU0NUUF9BRERfSVBfQUREUkVTUzsKKwkJYWFfZGVsLT5hcC5h
cGgucGgucGFyYW1fbGVuZ3RoID0gc2l6ZW9mKHN0cnVjdCBzY3RwX2FzY29uZl9hZGRydjRfcGFy
YW0pOworCQlhYV9kZWwtPmFwLmFkZHJwLnBoLnBhcmFtX3R5cGUgPSBTQ1RQX0lQVjRfQUREUkVT
UzsKKwkJYWFfZGVsLT5hcC5hZGRycC5waC5wYXJhbV9sZW5ndGggPSBzaXplb2YgKHN0cnVjdCBz
Y3RwX2lwdjRhZGRyX3BhcmFtKTsKKwkJLyogTm8gbmVlZCB0byBmaWxsIHRoZSBhZGRyZXNzLCB3
ZSBhcmUgdXNpbmcgMC4wLjAuMCAqLwogCQlicmVhazsKICNlbmRpZgogI2lmZGVmIElORVQ2CiAJ
Y2FzZSBBRl9JTkVUNjoKLQkJYWEtPmFwLmFwaC5waC5wYXJhbV90eXBlID0gU0NUUF9ERUxfSVBf
QUREUkVTUzsKLQkJYWEtPmFwLmFwaC5waC5wYXJhbV9sZW5ndGggPSBzaXplb2Yoc3RydWN0IHNj
dHBfYXNjb25mX2FkZHJfcGFyYW0pOwotCQlhYS0+YXAuYWRkcnAucGgucGFyYW1fdHlwZSA9IFND
VFBfSVBWNl9BRERSRVNTOwotCQlhYS0+YXAuYWRkcnAucGgucGFyYW1fbGVuZ3RoID0gc2l6ZW9m
IChzdHJ1Y3Qgc2N0cF9pcHY2YWRkcl9wYXJhbSk7Ci0JCS8qIE5vIG5lZWQgdG8gYWRkIGFuIGFk
ZHJlc3MsIHdlIGFyZSB1c2luZyAwLjAuMC4wICovCi0JCVRBSUxRX0lOU0VSVF9UQUlMKCZzdGNi
LT5hc29jLmFzY29uZl9xdWV1ZSwgYWEsIG5leHQpOworCQlhYV9hZGQtPmFwLmFwaC5waC5wYXJh
bV90eXBlID0gU0NUUF9BRERfSVBfQUREUkVTUzsKKwkJYWFfYWRkLT5hcC5hcGgucGgucGFyYW1f
bGVuZ3RoID0gc2l6ZW9mKHN0cnVjdCBzY3RwX2FzY29uZl9hZGRyX3BhcmFtKTsKKwkJYWFfYWRk
LT5hcC5hZGRycC5waC5wYXJhbV90eXBlID0gU0NUUF9JUFY2X0FERFJFU1M7CisJCWFhX2FkZC0+
YXAuYWRkcnAucGgucGFyYW1fbGVuZ3RoID0gc2l6ZW9mIChzdHJ1Y3Qgc2N0cF9pcHY2YWRkcl9w
YXJhbSk7CisJCS8qIE5vIG5lZWQgdG8gZmlsbCB0aGUgYWRkcmVzcywgd2UgYXJlIHVzaW5nIDo6
MCAqLworCQlhYV9kZWwtPmFwLmFwaC5waC5wYXJhbV90eXBlID0gU0NUUF9ERUxfSVBfQUREUkVT
UzsKKwkJYWFfZGVsLT5hcC5hcGgucGgucGFyYW1fbGVuZ3RoID0gc2l6ZW9mKHN0cnVjdCBzY3Rw
X2FzY29uZl9hZGRyX3BhcmFtKTsKKwkJYWFfZGVsLT5hcC5hZGRycC5waC5wYXJhbV90eXBlID0g
U0NUUF9JUFY2X0FERFJFU1M7CisJCWFhX2RlbC0+YXAuYWRkcnAucGgucGFyYW1fbGVuZ3RoID0g
c2l6ZW9mIChzdHJ1Y3Qgc2N0cF9pcHY2YWRkcl9wYXJhbSk7CisJCS8qIE5vIG5lZWQgdG8gZmls
bCB0aGUgYWRkcmVzcywgd2UgYXJlIHVzaW5nIDo6MCAqLwogCQlicmVhazsKICNlbmRpZgogCWRl
ZmF1bHQ6CiAJCVNDVFBEQkcoU0NUUF9ERUJVR19BU0NPTkYxLAotCQkgICAgICAgICJzY3RwX2Fz
Y29uZl9zZW5kX25hdF9zdGF0ZV91cGRhdGU6IHVua25vd24gYWRkcmVzcyBmYW1pbHlcbiIpOwot
CQlTQ1RQX0ZSRUUoYWEsIFNDVFBfTV9BU0NfQUREUik7Ci0JCXJldHVybjsKKwkJICAgICAgICAi
c2N0cF9hc2NvbmZfc2VuZF9uYXRfc3RhdGVfdXBkYXRlOiB1bmtub3duIGFkZHJlc3MgZmFtaWx5
ICVkXG4iLAorCQkgICAgICAgIG5ldC0+cm8uX2xfYWRkci5zYS5zYV9mYW1pbHkpOworCQlnb3Rv
IG91dDsKIAl9CisJVEFJTFFfSU5TRVJUX1RBSUwoJnN0Y2ItPmFzb2MuYXNjb25mX3F1ZXVlLCBh
YV92dGFnLCBuZXh0KTsKKwlUQUlMUV9JTlNFUlRfVEFJTCgmc3RjYi0+YXNvYy5hc2NvbmZfcXVl
dWUsIGFhX2FkZCwgbmV4dCk7CisJVEFJTFFfSU5TRVJUX1RBSUwoJnN0Y2ItPmFzb2MuYXNjb25m
X3F1ZXVlLCBhYV9kZWwsIG5leHQpOworCiAJLyogTm93IHdlIG11c3QgaHVudCB0aGUgYWRkcmVz
c2VzIGFuZCBhZGQgYWxsIGdsb2JhbCBhZGRyZXNzZXMgKi8KIAlpZiAoc3RjYi0+c2N0cF9lcC0+
c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0JPVU5EQUxMKSB7CiAJCXN0cnVjdCBzY3RwX3Zy
ZiAqdnJmID0gTlVMTDsKQEAgLTM0MjgsNyArMzQzMiw3IEBAIHNjdHBfYXNjb25mX3NlbmRfbmF0
X3N0YXRlX3VwZGF0ZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAjaWZkZWYgSU5FVAogCQkJCWNh
c2UgQUZfSU5FVDoKIAkJCQkJdG8gPSAmc2N0cF9pZmFwLT5hZGRyZXNzLnNpbjsKLSNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAJCQkJCWlmIChwcmlzb25fY2hlY2tfaXA0KHN0Y2ItPnNjdHBfZXAtPmlw
X2lucC5pbnAuaW5wX2NyZWQsCiAJCQkJCSAgICAgICAgICAgICAgICAgICAgICZ0by0+c2luX2Fk
ZHIpICE9IDApIHsKIAkJCQkJCWNvbnRpbnVlOwpAQCAtMzQ0NSw3ICszNDQ5LDcgQEAgc2N0cF9h
c2NvbmZfc2VuZF9uYXRfc3RhdGVfdXBkYXRlKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKICNpZmRl
ZiBJTkVUNgogCQkJCWNhc2UgQUZfSU5FVDY6CiAJCQkJCXRvNiA9ICZzY3RwX2lmYXAtPmFkZHJl
c3Muc2luNjsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJCWlmIChwcmlzb25fY2hlY2tfaXA2
KHN0Y2ItPnNjdHBfZXAtPmlwX2lucC5pbnAuaW5wX2NyZWQsCiAJCQkJCSAgICAgICAgICAgICAg
ICAgICAgICZ0bzYtPnNpbjZfYWRkcikgIT0gMCkgewogCQkJCQkJY29udGludWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9hc2NvbmYuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2FzY29uZi5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9k
ZSAxMDA3NTUKaW5kZXggMjgxMzBmM2IyZjYwMGQ4Njk4OTQ1OTgzZGY3MDRlYzMyOGFlZjY2OS4u
ZTE3MWEwYjU2MTc2MzJmMGIwNWIwMTM3MjU2YmZkNjMwZjZiNjYzOAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91
c3JzY3RwbGliL25ldGluZXQvc2N0cF9hc2NvbmYuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGli
L25ldGluZXQvc2N0cF9hc2NvbmYuaApAQCAtMzIsOSArMzIsOSBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZmRlZiBfX0ZyZWVCU0RfXworI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8c3lz
L2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9hc2Nv
bmYuaCAzMjQwNTYgMjAxNy0wOS0yNyAxMzowNToyM1ogdHVleGVuICQiKTsKK19fRkJTRElEKCIk
RnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX2FzY29uZi5oIDM2MjM3NyAyMDIwLTA2LTE5
IDEyOjM1OjI5WiB0dWV4ZW4gJCIpOwogI2VuZGlmCiAKICNpZm5kZWYgX05FVElORVRfU0NUUF9B
U0NPTkZfSF8KQEAgLTQ1LDcgKzQ1LDcgQEAgX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9u
ZXRpbmV0L3NjdHBfYXNjb25mLmggMzI0MDU2IDIwMTctMDktMjcgMTM6MDU6MjNaIHQKIC8qCiAg
KiBmdW5jdGlvbiBwcm90b3R5cGVzCiAgKi8KLWV4dGVybiB2b2lkIHNjdHBfYXNjb25mX2NsZWFu
dXAoc3RydWN0IHNjdHBfdGNiICosIHN0cnVjdCBzY3RwX25ldHMgKik7CitleHRlcm4gdm9pZCBz
Y3RwX2FzY29uZl9jbGVhbnVwKHN0cnVjdCBzY3RwX3RjYiAqKTsKIAogZXh0ZXJuIHN0cnVjdCBt
YnVmICpzY3RwX2NvbXBvc2VfYXNjb25mKHN0cnVjdCBzY3RwX3RjYiAqLCBpbnQgKiwgaW50KTsK
IApAQCAtNTgsOCArNTgsOCBAQCBzY3RwX2hhbmRsZV9hc2NvbmZfYWNrKHN0cnVjdCBtYnVmICos
IGludCwgc3RydWN0IHNjdHBfYXNjb25mX2Fja19jaHVuayAqLAogICAgICBzdHJ1Y3Qgc2N0cF90
Y2IgKiwgc3RydWN0IHNjdHBfbmV0cyAqLCBpbnQgKik7CiAKIGV4dGVybiB1aW50MzJfdAotc2N0
cF9hZGRyX21nbXRfZXBfc2Eoc3RydWN0IHNjdHBfaW5wY2IgKiwgc3RydWN0IHNvY2thZGRyICos
Ci0JCSAgICAgdWludDMyX3QsIHVpbnQzMl90LCBzdHJ1Y3Qgc2N0cF9pZmEgKik7CitzY3RwX2Fk
ZHJfbWdtdF9lcF9zYShzdHJ1Y3Qgc2N0cF9pbnBjYiAqLCBzdHJ1Y3Qgc29ja2FkZHIgKiwgdWlu
dDMyX3QsCisgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCk7CiAKIAogZXh0ZXJuIGludCBz
Y3RwX2FzY29uZl9pdGVyYXRvcl9lcChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCB2b2lkICpwdHIs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9hdXRoLmMgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNy
c2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9hdXRoLmMKb2xkIG1vZGUgMTAwNjQ0Cm5l
dyBtb2RlIDEwMDc1NQppbmRleCBiYzY0NWIzNmQ5MDFhNTc4ZjFlZGE4MmU5YmRkMmYyNzFmMzZm
YTFmLi4zYThmYWMwNzMxMWNiYmFiZGI5YjVlNzFjYjkyODAwNWRjMGM2NTFjCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3Rw
bGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2F1dGguYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3Rw
bGliL25ldGluZXQvc2N0cF9hdXRoLmMKQEAgLTMyLDkgKzMyLDkgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZkZWYgX19GcmVlQlNEX18KKyNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPHN5
cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfYXV0
aC5jIDM1NTkzMSAyMDE5LTEyLTIwIDE1OjI1OjA4WiB0dWV4ZW4gJCIpOworX19GQlNESUQoIiRG
cmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfYXV0aC5jIDM2MjA1NCAyMDIwLTA2LTExIDEz
OjM0OjA5WiB0dWV4ZW4gJCIpOwogI2VuZGlmCiAKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfb3Mu
aD4KQEAgLTUyNSw3ICs1MjUsNyBAQCBzY3RwX2luc2VydF9zaGFyZWRrZXkoc3RydWN0IHNjdHBf
a2V5aGVhZCAqc2hhcmVkX2tleXMsCiAJCX0gZWxzZSBpZiAobmV3X3NrZXktPmtleWlkID09IHNr
ZXktPmtleWlkKSB7CiAJCQkvKiByZXBsYWNlIHRoZSBleGlzdGluZyBrZXkgKi8KIAkJCS8qIHZl
cmlmeSB0aGlzIGtleSAqY2FuKiBiZSByZXBsYWNlZCAqLwotCQkJaWYgKChza2V5LT5kZWFjdGl2
YXRlZCkgJiYgKHNrZXktPnJlZmNvdW50ID4gMSkpIHsKKwkJCWlmICgoc2tleS0+ZGVhY3RpdmF0
ZWQpIHx8IChza2V5LT5yZWZjb3VudCA+IDEpKSB7CiAJCQkJU0NUUERCRyhTQ1RQX0RFQlVHX0FV
VEgxLAogCQkJCQkiY2FuJ3QgcmVwbGFjZSBzaGFyZWQga2V5IGlkICV1XG4iLAogCQkJCQluZXdf
c2tleS0+a2V5aWQpOwpAQCAtNTY3LDExICs1NjcsNyBAQCBzY3RwX2F1dGhfa2V5X2FjcXVpcmUo
c3RydWN0IHNjdHBfdGNiICpzdGNiLCB1aW50MTZfdCBrZXlfaWQpCiB9CiAKIHZvaWQKLXNjdHBf
YXV0aF9rZXlfcmVsZWFzZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQxNl90IGtleV9pZCwg
aW50IHNvX2xvY2tlZAotI2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoU0NUUF9T
T19MT0NLX1RFU1RJTkcpCi0JU0NUUF9VTlVTRUQKLSNlbmRpZgotKQorc2N0cF9hdXRoX2tleV9y
ZWxlYXNlKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgdWludDE2X3Qga2V5X2lkLCBpbnQgc29fbG9j
a2VkKQogewogCXNjdHBfc2hhcmVka2V5X3QgKnNrZXk7CiAKQEAgLTY2MCw3ICs2NTYsNiBAQCBz
Y3RwX2ZyZWVfaG1hY2xpc3Qoc2N0cF9obWFjbGlzdF90ICpsaXN0KQogewogCWlmIChsaXN0ICE9
IE5VTEwpIHsKIAkJU0NUUF9GUkVFKGxpc3QsU0NUUF9NX0FVVEhfSEwpOwotCQlsaXN0ID0gTlVM
TDsKIAl9CiB9CiAKQEAgLTEwODQsNDAgKzEwNzksNiBAQCBzY3RwX2htYWNfbSh1aW50MTZfdCBo
bWFjX2FsZ28sIHVpbnQ4X3QgKmtleSwgdWludDMyX3Qga2V5bGVuLAogCXJldHVybiAoZGlnZXN0
bGVuKTsKIH0KIAotLyotCi0gKiB2ZXJpZnkgdGhlIEhNQUMgZGlnZXN0IHVzaW5nIHRoZSBkZXNp
cmVkIGhhc2gga2V5LCB0ZXh0LCBhbmQgSE1BQwotICogYWxnb3JpdGhtLgotICogUmV0dXJucyAt
MSBvbiBlcnJvciwgMCBvbiBzdWNjZXNzLgotICovCi1pbnQKLXNjdHBfdmVyaWZ5X2htYWModWlu
dDE2X3QgaG1hY19hbGdvLCB1aW50OF90ICprZXksIHVpbnQzMl90IGtleWxlbiwKLSAgICB1aW50
OF90ICp0ZXh0LCB1aW50MzJfdCB0ZXh0bGVuLAotICAgIHVpbnQ4X3QgKmRpZ2VzdCwgdWludDMy
X3QgZGlnZXN0bGVuKQotewotCXVpbnQzMl90IGxlbjsKLQl1aW50OF90IHRlbXBbU0NUUF9BVVRI
X0RJR0VTVF9MRU5fTUFYXTsKLQotCS8qIHNhbml0eSBjaGVjayB0aGUgbWF0ZXJpYWwgYW5kIGxl
bmd0aCAqLwotCWlmICgoa2V5ID09IE5VTEwpIHx8IChrZXlsZW4gPT0gMCkgfHwKLQkgICAgKHRl
eHQgPT0gTlVMTCkgfHwgKHRleHRsZW4gPT0gMCkgfHwgKGRpZ2VzdCA9PSBOVUxMKSkgewotCQkv
KiBjYW4ndCBkbyBITUFDIHdpdGggZW1wdHkga2V5IG9yIHRleHQgb3IgZGlnZXN0ICovCi0JCXJl
dHVybiAoLTEpOwotCX0KLQlsZW4gPSBzY3RwX2dldF9obWFjX2RpZ2VzdF9sZW4oaG1hY19hbGdv
KTsKLQlpZiAoKGxlbiA9PSAwKSB8fCAoZGlnZXN0bGVuICE9IGxlbikpCi0JCXJldHVybiAoLTEp
OwotCi0JLyogY29tcHV0ZSB0aGUgZXhwZWN0ZWQgaGFzaCAqLwotCWlmIChzY3RwX2htYWMoaG1h
Y19hbGdvLCBrZXksIGtleWxlbiwgdGV4dCwgdGV4dGxlbiwgdGVtcCkgIT0gbGVuKQotCQlyZXR1
cm4gKC0xKTsKLQotCWlmIChtZW1jbXAoZGlnZXN0LCB0ZW1wLCBkaWdlc3RsZW4pICE9IDApCi0J
CXJldHVybiAoLTEpOwotCWVsc2UKLQkJcmV0dXJuICgwKTsKLX0KLQotCiAvKgogICogY29tcHV0
ZXMgdGhlIHJlcXVlc3RlZCBITUFDIHVzaW5nIGEga2V5IHN0cnVjdCAod2hpY2ggbWF5IGJlIG1v
ZGlmaWVkIGlmCiAgKiB0aGUga2V5bGVuIGV4Y2VlZHMgdGhlIEhNQUMgYmxvY2sgbGVuKS4KQEAg
LTE2ODQsNiArMTY0NSwxMSBAQCBzY3RwX2hhbmRsZV9hdXRoKHN0cnVjdCBzY3RwX3RjYiAqc3Rj
Yiwgc3RydWN0IHNjdHBfYXV0aF9jaHVuayAqYXV0aCwKIAkJIlNDVFAgQVVUSCBDaHVuazogc2hh
cmVkIGtleSAldSwgSE1BQyBpZCAldVxuIiwKIAkJc2hhcmVkX2tleV9pZCwgaG1hY19pZCk7CiAK
KyNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaWZkZWYgRlVaWklOR19CVUlMRF9NT0RFX1VO
U0FGRV9GT1JfUFJPRFVDVElPTgorCXJldHVybiAoMCk7CisjZW5kaWYKKyNlbmRpZgogCS8qIGlz
IHRoZSBpbmRpY2F0ZWQgSE1BQyBzdXBwb3J0ZWQ/ICovCiAJaWYgKCFzY3RwX2F1dGhfaXNfc3Vw
cG9ydGVkX2htYWMoc3RjYi0+YXNvYy5sb2NhbF9obWFjcywgaG1hY19pZCkpIHsKIAkJc3RydWN0
IG1idWYgKm9wX2VycjsKQEAgLTE3NjUsNyArMTczMSw3IEBAIHNjdHBfaGFuZGxlX2F1dGgoc3Ry
dWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9hdXRoX2NodW5rICphdXRoLAogCSAgICBt
LCBvZmZzZXQsIGNvbXB1dGVkX2RpZ2VzdCk7CiAKIAkvKiBjb21wYXJlIHRoZSBjb21wdXRlZCBk
aWdlc3Qgd2l0aCB0aGUgb25lIGluIHRoZSBBVVRIIGNodW5rICovCi0JaWYgKG1lbWNtcChkaWdl
c3QsIGNvbXB1dGVkX2RpZ2VzdCwgZGlnZXN0bGVuKSAhPSAwKSB7CisJaWYgKHRpbWluZ3NhZmVf
YmNtcChkaWdlc3QsIGNvbXB1dGVkX2RpZ2VzdCwgZGlnZXN0bGVuKSAhPSAwKSB7CiAJCVNDVFBf
U1RBVF9JTkNSKHNjdHBzX3JlY3ZhdXRoZmFpbGVkKTsKIAkJU0NUUERCRyhTQ1RQX0RFQlVHX0FV
VEgxLAogCQkJIlNDVFAgQXV0aDogSE1BQyBkaWdlc3QgY2hlY2sgZmFpbGVkXG4iKTsKQEAgLTE3
NzksMTEgKzE3NDUsNyBAQCBzY3RwX2hhbmRsZV9hdXRoKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwg
c3RydWN0IHNjdHBfYXV0aF9jaHVuayAqYXV0aCwKICAqLwogdm9pZAogc2N0cF9ub3RpZnlfYXV0
aGVudGljYXRpb24oc3RydWN0IHNjdHBfdGNiICpzdGNiLCB1aW50MzJfdCBpbmRpY2F0aW9uLAot
CQkJICAgdWludDE2X3Qga2V5aWQsIHVpbnQxNl90IGFsdF9rZXlpZCwgaW50IHNvX2xvY2tlZAot
I2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcp
Ci0JU0NUUF9VTlVTRUQKLSNlbmRpZgotKQorCQkJICAgdWludDE2X3Qga2V5aWQsIHVpbnQxNl90
IGFsdF9rZXlpZCwgaW50IHNvX2xvY2tlZCkKIHsKIAlzdHJ1Y3QgbWJ1ZiAqbV9ub3RpZnk7CiAJ
c3RydWN0IHNjdHBfYXV0aGtleV9ldmVudCAqYXV0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Vz
cnNjdHBsaWIvbmV0aW5ldC9zY3RwX2F1dGguaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5l
dC9zY3RwX2F1dGguaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGMxZjgy
ZDg4MjVhNGQ4MDIzZmU0YWRiMzAxZGY0OTc2NDZhYzgwOGMuLjNkYzVhNTllMjhjYzFmMzczMzQ4
YWZiYzA3ZjlhNzU3MmQyZjcyNGYKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3Nj
dHBfYXV0aC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2F1dGguaApA
QCAtMzIsOSArMzIsOSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpZmRlZiBfX0ZyZWVCU0RfXworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZy
ZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9hdXRoLmggMzEwNTkwIDIwMTYtMTItMjYgMTE6
MDY6NDFaIHR1ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQv
c2N0cF9hdXRoLmggMzM4NzQ5IDIwMTgtMDktMTggMTA6NTM6MDdaIHR1ZXhlbiAkIik7CiAjZW5k
aWYKIAogI2lmbmRlZiBfTkVUSU5FVF9TQ1RQX0FVVEhfSF8KQEAgLTE3MCw4ICsxNzAsNiBAQCBl
eHRlcm4gdWludDMyX3Qgc2N0cF9nZXRfYXV0aF9jaHVua19sZW4odWludDE2X3QgaG1hY19hbGdv
KTsKIGV4dGVybiB1aW50MzJfdCBzY3RwX2dldF9obWFjX2RpZ2VzdF9sZW4odWludDE2X3QgaG1h
Y19hbGdvKTsKIGV4dGVybiB1aW50MzJfdCBzY3RwX2htYWModWludDE2X3QgaG1hY19hbGdvLCB1
aW50OF90ICprZXksIHVpbnQzMl90IGtleWxlbiwKICAgICB1aW50OF90ICp0ZXh0LCB1aW50MzJf
dCB0ZXh0bGVuLCB1aW50OF90ICpkaWdlc3QpOwotZXh0ZXJuIGludCBzY3RwX3ZlcmlmeV9obWFj
KHVpbnQxNl90IGhtYWNfYWxnbywgdWludDhfdCAqa2V5LCB1aW50MzJfdCBrZXlsZW4sCi0gICAg
dWludDhfdCAqdGV4dCwgdWludDMyX3QgdGV4dGxlbiwgdWludDhfdCAqZGlnZXN0LCB1aW50MzJf
dCBkaWdlc3RsZW4pOwogZXh0ZXJuIHVpbnQzMl90IHNjdHBfY29tcHV0ZV9obWFjKHVpbnQxNl90
IGhtYWNfYWxnbywgc2N0cF9rZXlfdCAqa2V5LAogICAgIHVpbnQ4X3QgKnRleHQsIHVpbnQzMl90
IHRleHRsZW4sIHVpbnQ4X3QgKmRpZ2VzdCk7CiBleHRlcm4gaW50IHNjdHBfYXV0aF9pc19zdXBw
b3J0ZWRfaG1hYyhzY3RwX2htYWNsaXN0X3QgKmxpc3QsIHVpbnQxNl90IGlkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0
cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2JzZF9hZGRyLmMgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9ic2RfYWRkci5jCm9sZCBtb2RlIDEwMDY0NApuZXcg
bW9kZSAxMDA3NTUKaW5kZXggZTNiNmUxYjZkZTdlZGMwZjFiYWYyZTVlNWY0MzY4YmVkM2E4MDk0
Yi4uNDBlMzA4ZjhmMmViNDZkZDdhZTFiN2JhNmNkMDJmNjk1M2NhMzgyOQotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9ic2RfYWRkci5jCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNj
dHBsaWIvbmV0aW5ldC9zY3RwX2JzZF9hZGRyLmMKQEAgLTMyLDkgKzMyLDkgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZkZWYgX19GcmVlQlNEX18KKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1
ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3Nj
dHBfYnNkX2FkZHIuYyAzMzM4MTMgMjAxOC0wNS0xOCAyMDoxMzozNFogbW1hY3kgJCIpOworX19G
QlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfYnNkX2FkZHIuYyAzNTgwODAg
MjAyMC0wMi0xOCAxOTo0MTo1NVogdHVleGVuICQiKTsKICNlbmRpZgogCiAjaW5jbHVkZSA8bmV0
aW5ldC9zY3RwX29zLmg+CkBAIC01MCwxMiArNTAsMTEgQEAgX19GQlNESUQoIiRGcmVlQlNEOiBo
ZWFkL3N5cy9uZXRpbmV0L3NjdHBfYnNkX2FkZHIuYyAzMzM4MTMgMjAxOC0wNS0xOCAyMDoxMzoz
NFoKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfYXNjb25mLmg+CiAjaW5jbHVkZSA8bmV0aW5ldC9z
Y3RwX3N5c2N0bC5oPgogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9pbmRhdGEuaD4KLSNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8c3lzL3VuaXN0ZC5oPgogI2VuZGlmCiAKIC8qIERlY2xh
cmUgYWxsIG9mIG91ciBtYWxsb2MgbmFtZWQgdHlwZXMgKi8KLSNpZm5kZWYgX19QYW5kYV9fCiBN
QUxMT0NfREVGSU5FKFNDVFBfTV9NQVAsICJzY3RwX21hcCIsICJzY3RwIGFzb2MgbWFwIGRlc2Ny
aXB0b3IiKTsKIE1BTExPQ19ERUZJTkUoU0NUUF9NX1NUUk1JLCAic2N0cF9zdHJpIiwgInNjdHAg
c3RyZWFtIGluIGFycmF5Iik7CiBNQUxMT0NfREVGSU5FKFNDVFBfTV9TVFJNTywgInNjdHBfc3Ry
byIsICJzY3RwIHN0cmVhbSBvdXQgYXJyYXkiKTsKQEAgLTc2LDEyICs3NSwxMSBAQCBNQUxMT0Nf
REVGSU5FKFNDVFBfTV9NVlJGLCAic2N0cF9tdnJmIiwgInNjdHAgbXZyZiBwY2IgbGlzdCIpOwog
TUFMTE9DX0RFRklORShTQ1RQX01fSVRFUiwgInNjdHBfaXRlciIsICJzY3RwIGl0ZXJhdG9yIGNv
bnRyb2wiKTsKIE1BTExPQ19ERUZJTkUoU0NUUF9NX1NPQ0tPUFQsICJzY3RwX3NvY2tvIiwgInNj
dHAgc29ja2V0IG9wdGlvbiIpOwogTUFMTE9DX0RFRklORShTQ1RQX01fTUNPUkUsICJzY3RwX21j
b3JlIiwgInNjdHAgbWNvcmUgcXVldWUiKTsKLSNlbmRpZgogCiAvKiBHbG9iYWwgTk9OLVZORVQg
c3RydWN0dXJlIHRoYXQgY29udHJvbHMgdGhlIGl0ZXJhdG9yICovCiBzdHJ1Y3QgaXRlcmF0b3Jf
Y29udHJvbCBzY3RwX2l0X2N0bDsKIAotI2lmICFkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmICEo
ZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiBzdGF0aWMg
dm9pZAogc2N0cF9jbGVhbnVwX2l0cXVldWUodm9pZCkKIHsKQEAgLTEwOSw3ICsxMDcsNyBAQCB2
b2lkCiBzY3RwX3dha2V1cF9pdGVyYXRvcih2b2lkKQogewogI2lmIGRlZmluZWQoU0NUUF9QUk9D
RVNTX0xFVkVMX0xPQ0tTKQotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNp
ZiBkZWZpbmVkKF9XSU4zMikKIAlXYWtlQWxsQ29uZGl0aW9uVmFyaWFibGUoJnNjdHBfaXRfY3Rs
Lml0ZXJhdG9yX3dha2V1cCk7CiAjZWxzZQogCXB0aHJlYWRfY29uZF9icm9hZGNhc3QoJnNjdHBf
aXRfY3RsLml0ZXJhdG9yX3dha2V1cCk7CkBAIC0xMzEsNyArMTI5LDcgQEAgc2N0cF9pdGVyYXRv
cl90aHJlYWQodm9pZCAqdiBTQ1RQX1VOVVNFRCkKICNlbmRpZgogCVNDVFBfSVBJX0lURVJBVE9S
X1dRX0xPQ0soKTsKIAkvKiBJbiBGcmVlQlNEIHRoaXMgdGhyZWFkIG5ldmVyIHRlcm1pbmF0ZXMu
ICovCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWZvciAoOzspIHsKICNlbHNlCiAJd2hpbGUgKChz
Y3RwX2l0X2N0bC5pdGVyYXRvcl9mbGFncyAmIFNDVFBfSVRFUkFUT1JfTVVTVF9FWElUKSA9PSAw
KSB7CkBAIC0xNDAsMjUgKzEzOCwyNSBAQCBzY3RwX2l0ZXJhdG9yX3RocmVhZCh2b2lkICp2IFND
VFBfVU5VU0VEKQogCQltc2xlZXAoJnNjdHBfaXRfY3RsLml0ZXJhdG9yX3J1bm5pbmcsCiAjaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykKIAkJICAgICAgICZzY3RwX2l0X2N0bC5pcGlfaXRlcmF0b3Jf
d3FfbXR4LAotI2VsaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vf
b3NfRGFyd2luKQorI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCiAJCSAgICAgICBzY3RwX2l0X2N0
bC5pcGlfaXRlcmF0b3Jfd3FfbXR4LAogI2VuZGlmCiAJCSAgICAgICAwLCAid2FpdGluZ19mb3Jf
d29yayIsIDApOwogI2Vsc2UKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisj
aWYgZGVmaW5lZChfV0lOMzIpCiAJCVNsZWVwQ29uZGl0aW9uVmFyaWFibGVDUygmc2N0cF9pdF9j
dGwuaXRlcmF0b3Jfd2FrZXVwLCAmc2N0cF9pdF9jdGwuaXBpX2l0ZXJhdG9yX3dxX210eCwgSU5G
SU5JVEUpOwogI2Vsc2UKIAkJcHRocmVhZF9jb25kX3dhaXQoJnNjdHBfaXRfY3RsLml0ZXJhdG9y
X3dha2V1cCwgJnNjdHBfaXRfY3RsLmlwaV9pdGVyYXRvcl93cV9tdHgpOwogI2VuZGlmCiAjZW5k
aWYKLSNpZiAhZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiAhKGRlZmluZWQoX19GcmVlQlNEX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pKQogCQlpZiAoc2N0cF9pdF9jdGwuaXRlcmF0b3Jf
ZmxhZ3MgJiBTQ1RQX0lURVJBVE9SX01VU1RfRVhJVCkgewogCQkJYnJlYWs7CiAJCX0KICNlbmRp
ZgogCQlzY3RwX2l0ZXJhdG9yX3dvcmtlcigpOwogCX0KLSNpZiAhZGVmaW5lZChfX0ZyZWVCU0Rf
XykKKyNpZiAhKGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
KQogCS8qIE5vdyB0aGlzIHRocmVhZCBuZWVkcyB0byBiZSB0ZXJtaW5hdGVkICovCiAJc2N0cF9j
bGVhbnVwX2l0cXVldWUoKTsKIAlzY3RwX2l0X2N0bC5pdGVyYXRvcl9mbGFncyB8PSBTQ1RQX0lU
RVJBVE9SX0VYSVRFRDsKQEAgLTE4NywxMiArMTg1LDE0IEBAIHNjdHBfc3RhcnR1cF9pdGVyYXRv
cih2b2lkKQogCVNDVFBfSVRFUkFUT1JfTE9DS19JTklUKCk7CiAJU0NUUF9JUElfSVRFUkFUT1Jf
V1FfSU5JVCgpOwogCVRBSUxRX0lOSVQoJnNjdHBfaXRfY3RsLml0ZXJhdG9yaGVhZCk7Ci0jaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykKLSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA8PSA3MDEwMDAKLQlr
dGhyZWFkX2NyZWF0ZShzY3RwX2l0ZXJhdG9yX3RocmVhZCwKLSNlbHNlCisjaWYgZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQorCWlmIChzY3RwX3VzZXJzcGFjZV90aHJlYWRfY3JlYXRlKCZzY3RwX2l0
X2N0bC50aHJlYWRfcHJvYywgJnNjdHBfaXRlcmF0b3JfdGhyZWFkKSkgeworCQlTQ1RQX1BSSU5U
RigiRVJST1I6IENyZWF0aW5nIHNjdHBfaXRlcmF0b3JfdGhyZWFkIGZhaWxlZC5cbiIpOworCX0g
ZWxzZSB7CisJCVNDVFBfQkFTRV9WQVIoaXRlcmF0b3JfdGhyZWFkX3N0YXJ0ZWQpID0gMTsKKwl9
CisjZWxpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQogCWtwcm9jX2NyZWF0ZShzY3RwX2l0ZXJhdG9y
X3RocmVhZCwKLSNlbmRpZgogCSAgICAgICAgICAgICAodm9pZCAqKU5VTEwsCiAJICAgICAgICAg
ICAgICZzY3RwX2l0X2N0bC50aHJlYWRfcHJvYywKIAkgICAgICAgICAgICAgUkZQUk9DLApAQCAt
MjAwLDEwICsyMDAsNiBAQCBzY3RwX3N0YXJ0dXBfaXRlcmF0b3Iodm9pZCkKIAkgICAgICAgICAg
ICAgU0NUUF9LVFJIRUFEX05BTUUpOwogI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCiAJa2VybmVs
X3RocmVhZF9zdGFydCgodGhyZWFkX2NvbnRpbnVlX3Qpc2N0cF9pdGVyYXRvcl90aHJlYWQsIE5V
TEwsICZzY3RwX2l0X2N0bC50aHJlYWRfcHJvYyk7Ci0jZWxpZiBkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCi0JaWYgKHNjdHBfdXNlcnNwYWNlX3RocmVhZF9jcmVhdGUoJnNjdHBfaXRfY3RsLnRocmVh
ZF9wcm9jLCAmc2N0cF9pdGVyYXRvcl90aHJlYWQpKSB7Ci0JCVNDVFBfUFJJTlRGKCJFUlJPUjog
Q3JlYXRpbmcgc2N0cF9pdGVyYXRvcl90aHJlYWQgZmFpbGVkLlxuIik7Ci0JfQogI2VuZGlmCiB9
CiAKQEAgLTI1Niw3ICsyNTIsNyBAQCBzY3RwX2lzX2Rlc2lyZWRfaW50ZXJmYWNlX3R5cGUoc3Ry
dWN0IGlmbmV0ICppZm4pCiAJaW50IHJlc3VsdDsKIAogCS8qIGNoZWNrIHRoZSBpbnRlcmZhY2Ug
dHlwZSB0byBzZWUgaWYgaXQncyBvbmUgd2UgY2FyZSBhYm91dCAqLwotI2lmIGRlZmluZWQoX19B
UFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCXN3aXRjaChpZm5ldF90eXBlKGlmbikpIHsKICNlbHNlCiAJc3dpdGNoIChpZm4tPmlmX3R5
cGUpIHsKQEAgLTI4Miw3ICsyNzgsNyBAQCBzY3RwX2lzX2Rlc2lyZWRfaW50ZXJmYWNlX3R5cGUo
c3RydWN0IGlmbmV0ICppZm4pCiAJY2FzZSBJRlRfR0lGOgogCWNhc2UgSUZUX0wyVkxBTjoKIAlj
YXNlIElGVF9TVEY6Ci0jaWYgIWRlZmluZWQoX19BUFBMRV9fKQorI2lmICEoZGVmaW5lZChfX0FQ
UExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pKQogCWNhc2UgSUZUX0lQOgogCWNhc2Ug
SUZUX0lQT1ZFUkNETEM6CiAJY2FzZSBJRlRfSVBPVkVSQ0xBVzoKQEAgLTI5OSw3ICsyOTUsNyBA
QCBzY3RwX2lzX2Rlc2lyZWRfaW50ZXJmYWNlX3R5cGUoc3RydWN0IGlmbmV0ICppZm4pCiB9CiAj
ZW5kaWYKIAotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogaW50CiBzY3RwX2lzX3Ztd2FyZV9pbnRlcmZhY2Uo
c3RydWN0IGlmbmV0ICppZm4pCiB7CkBAIC0zMDcsNyArMzAzLDcgQEAgc2N0cF9pc192bXdhcmVf
aW50ZXJmYWNlKHN0cnVjdCBpZm5ldCAqaWZuKQogfQogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKF9f
VXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpICYmIGRlZmluZWQoX19V
c2Vyc3BhY2VfXykKICNpZmRlZiBNQUxMT0MKICN1bmRlZiBNQUxMT0MKICNkZWZpbmUgTUFMTE9D
KHgpIEhlYXBBbGxvYyhHZXRQcm9jZXNzSGVhcCgpLCAwLCAoeCkpCkBAIC00ODEsNyArNDc3LDcg
QEAgc2N0cF9pbml0X2lmbnNfZm9yX3ZyZihpbnQgdnJmaWQpCiB9CiAjZW5kaWYKIAotI2lmIGRl
ZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogc3RhdGljIHZvaWQKIHNjdHBfaW5pdF9pZm5zX2Zvcl92cmYoaW50IHZyZmlk
KQogewpAQCAtNTQwLDcgKzUzNiw3IEBAIHNjdHBfaW5pdF9pZm5zX2Zvcl92cmYoaW50IHZyZmlk
KQogCQkJfSBlbHNlIHsKIAkJCQlpZmFfZmxhZ3MgPSAwOwogCQkJfQotCQkJc25wcmludGYobmFt
ZSwgU0NUUF9JRk5BTVNJWiwgIiVzJWQiLCBpZm5ldF9uYW1lKGlmbiksIGlmbmV0X3VuaXQoaWZu
KSk7CisJCQlTQ1RQX1NOUFJJTlRGKG5hbWUsIFNDVFBfSUZOQU1TSVosICIlcyVkIiwgaWZuZXRf
bmFtZShpZm4pLCBpZm5ldF91bml0KGlmbikpOwogCQkJc2N0cF9pZmEgPSBzY3RwX2FkZF9hZGRy
X3RvX3ZyZih2cmZpZCwKIAkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQg
KilpZm4sIC8qIFhYWCAqLwogCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZm5l
dF9pbmRleChpZm4pLApAQCAtNTYwLDcgKzU1Niw3IEBAIHNjdHBfaW5pdF9pZm5zX2Zvcl92cmYo
aW50IHZyZmlkKQogfQogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBzdGF0aWMgdm9p
ZAogc2N0cF9pbml0X2lmbnNfZm9yX3ZyZihpbnQgdnJmaWQpCiB7CkBAIC01NjksNiArNTY1LDcg
QEAgc2N0cF9pbml0X2lmbnNfZm9yX3ZyZihpbnQgdnJmaWQpCiAJICogYW55IElGQSB0aGF0IGV4
aXN0cyBhcyB3ZSBmbG9hdCB0aHJvdWdoIHRoZQogCSAqIGxpc3Qgb2YgSUZBJ3MKIAkgKi8KKwlz
dHJ1Y3QgZXBvY2hfdHJhY2tlciBldDsKIAlzdHJ1Y3QgaWZuZXQgKmlmbjsKIAlzdHJ1Y3QgaWZh
ZGRyICppZmE7CiAJc3RydWN0IHNjdHBfaWZhICpzY3RwX2lmYTsKQEAgLTU3OCwxMiArNTc1LDEy
IEBAIHNjdHBfaW5pdF9pZm5zX2Zvcl92cmYoaW50IHZyZmlkKQogI2VuZGlmCiAKIAlJRk5FVF9S
TE9DSygpOwotCVRBSUxRX0ZPUkVBQ0goaWZuLCAmTU9EVUxFX0dMT0JBTChpZm5ldCksIGlmX2xp
bmspIHsKKwlORVRfRVBPQ0hfRU5URVIoZXQpOworCUNLX1NUQUlMUV9GT1JFQUNIKGlmbiwgJk1P
RFVMRV9HTE9CQUwoaWZuZXQpLCBpZl9saW5rKSB7CiAJCWlmIChzY3RwX2lzX2Rlc2lyZWRfaW50
ZXJmYWNlX3R5cGUoaWZuKSA9PSAwKSB7CiAJCQkvKiBub24gZGVzaXJlZCB0eXBlICovCiAJCQlj
b250aW51ZTsKIAkJfQotCQlJRl9BRERSX1JMT0NLKGlmbik7CiAJCUNLX1NUQUlMUV9GT1JFQUNI
KGlmYSwgJmlmbi0+aWZfYWRkcmhlYWQsIGlmYV9saW5rKSB7CiAJCQlpZiAoaWZhLT5pZmFfYWRk
ciA9PSBOVUxMKSB7CiAJCQkJY29udGludWU7CkBAIC02MzYsOCArNjMzLDggQEAgc2N0cF9pbml0
X2lmbnNfZm9yX3ZyZihpbnQgdnJmaWQpCiAJCQkJc2N0cF9pZmEtPmxvY2FsaWZhX2ZsYWdzICY9
IH5TQ1RQX0FERFJfREVGRVJfVVNFOwogCQkJfQogCQl9Ci0JCUlGX0FERFJfUlVOTE9DSyhpZm4p
OwogCX0KKwlORVRfRVBPQ0hfRVhJVChldCk7CiAJSUZORVRfUlVOTE9DSygpOwogfQogI2VuZGlm
CkBAIC03MTUsNyArNzEyLDcgQEAgc2N0cF9hZGRyX2NoYW5nZShzdHJ1Y3QgaWZhZGRyICppZmEs
IGludCBjbWQpCiAJfQogCWlmIChjbWQgPT0gUlRNX0FERCkgewogCQkodm9pZClzY3RwX2FkZF9h
ZGRyX3RvX3ZyZihTQ1RQX0RFRkFVTFRfVlJGSUQsICh2b2lkICopaWZhLT5pZmFfaWZwLAotI2lm
IGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogCQkgICAgICAgICAgICAgICAgICAgICAgICAgICBpZm5ldF9pbmRleChp
ZmEtPmlmYV9pZnApLCBpZm5ldF90eXBlKGlmYS0+aWZhX2lmcCksIGlmbmV0X25hbWUoaWZhLT5p
ZmFfaWZwKSwKICNlbHNlCiAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmYS0+aWZhX2lm
cC0+aWZfaW5kZXgsIGlmYS0+aWZhX2lmcC0+aWZfdHlwZSwgaWZhLT5pZmFfaWZwLT5pZl94bmFt
ZSwKQEAgLTcyNCw3ICs3MjEsNyBAQCBzY3RwX2FkZHJfY2hhbmdlKHN0cnVjdCBpZmFkZHIgKmlm
YSwgaW50IGNtZCkKIAl9IGVsc2UgewogCiAJCXNjdHBfZGVsX2FkZHJfZnJvbV92cmYoU0NUUF9E
RUZBVUxUX1ZSRklELCBpZmEtPmlmYV9hZGRyLAotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lm
IGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkgICAgICAg
ICAgICAgICAgICAgICAgIGlmbmV0X2luZGV4KGlmYS0+aWZhX2lmcCksCiAJCSAgICAgICAgICAg
ICAgICAgICAgICAgaWZuZXRfbmFtZShpZmEtPmlmYV9pZnApKTsKICNlbHNlCkBAIC03MzksMjYg
KzczNiwxMyBAQCBzY3RwX2FkZHJfY2hhbmdlKHN0cnVjdCBpZmFkZHIgKmlmYSwgaW50IGNtZCkK
ICNlbmRpZgogfQogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogdm9pZAotc2N0cF9hZGRfb3JfZGVs
X2ludGVyZmFjZXMoaW50ICgqcHJlZCkoc3RydWN0IGlmbmV0ICopLCBpbnQgYWRkKQotewotCXN0
cnVjdCBpZm5ldCAqaWZuOwotCXN0cnVjdCBpZmFkZHIgKmlmYTsKLQotCUlGTkVUX1JMT0NLKCk7
Ci0JVEFJTFFfRk9SRUFDSChpZm4sICZNT0RVTEVfR0xPQkFMKGlmbmV0KSwgaWZfbGluaykgewot
CQlpZiAoISgqcHJlZCkoaWZuKSkgewotCQkJY29udGludWU7Ci0JCX0KLQkJQ0tfU1RBSUxRX0ZP
UkVBQ0goaWZhLCAmaWZuLT5pZl9hZGRyaGVhZCwgaWZhX2xpbmspIHsKLQkJCXNjdHBfYWRkcl9j
aGFuZ2UoaWZhLCBhZGQgPyBSVE1fQUREIDogUlRNX0RFTEVURSk7Ci0JCX0KLQl9Ci0JSUZORVRf
UlVOTE9DSygpOworc2N0cF9hZGRyX2NoYW5nZV9ldmVudF9oYW5kbGVyKHZvaWQgKmFyZyBfX3Vu
dXNlZCwgc3RydWN0IGlmYWRkciAqaWZhLCBpbnQgY21kKSB7CisJc2N0cF9hZGRyX2NoYW5nZShp
ZmEsIGNtZCk7CiB9CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVk
KF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIHZvaWQKIHNjdHBfYWRkX29y
X2RlbF9pbnRlcmZhY2VzKGludCAoKnByZWQpKHN0cnVjdCBpZm5ldCAqKSwgaW50IGFkZCkKIHsK
QEAgLTc5MSw3ICs3NzUsNyBAQCBzY3RwX2dldF9tYnVmX2Zvcl9tc2codW5zaWduZWQgaW50IHNw
YWNlX25lZWRlZCwgaW50IHdhbnRfaGVhZGVyLAogCQkgICAgICBpbnQgaG93LCBpbnQgYWxsb25l
YnVmLCBpbnQgdHlwZSkKIHsKIAlzdHJ1Y3QgbWJ1ZiAqbSA9IE5VTEw7Ci0jaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPiAxMTAwMDUyIHx8IGRlZmluZWQoX19V
c2Vyc3BhY2VfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCW0gPSAgbV9nZXRtMihOVUxMLCBz
cGFjZV9uZWVkZWQsIGhvdywgdHlwZSwgd2FudF9oZWFkZXIgPyBNX1BLVEhEUiA6IDAsIGFsbG9u
ZWJ1Zik7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3Nj
dHBfYnNkX2FkZHIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2JzZF9hZGRy
LmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCBhODNjMGVjNGM3Njk3ZDUw
MjY1YWE3MzhhYTI1ZTZlOGVhOTk1NDQ5Li4wNWQxYjNmZWVmYTI0MTAxODFhMmY5MGQ5NGY2ODJj
ODc3ZGFkNWI3Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2JzZF9hZGRy
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91
c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfYnNkX2FkZHIuaApAQCAt
MzIsOSArMzIsOSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpZmRlZiBfX0ZyZWVCU0RfXworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVC
U0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9ic2RfYWRkci5oIDMxMDU5MCAyMDE2LTEyLTI2IDEx
OjA2OjQxWiB0dWV4ZW4gJCIpOworX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0
L3NjdHBfYnNkX2FkZHIuaCAzNTM0ODAgMjAxOS0xMC0xMyAxODoxNzowOFogdHVleGVuICQiKTsK
ICNlbmRpZgogCiAjaWZuZGVmIF9ORVRJTkVUX1NDVFBfQlNEX0FERFJfSF8KQEAgLTYxLDggKzYx
LDEwIEBAIGludCBzY3RwX2NvcHlfb3V0X3BhY2tldF9sb2codWludDhfdCAqdGFyZ2V0LCBpbnQg
bGVuZ3RoKTsKIAogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChfX1BhbmRhX18pCiB2b2lkIHNjdHBf
YWRkcl9jaGFuZ2Uoc3RydWN0IGlmYWRkciAqaWZhLCBpbnQgY21kKTsKKyNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCit2b2lkIHNjdHBfYWRkcl9j
aGFuZ2VfZXZlbnRfaGFuZGxlcih2b2lkICosIHN0cnVjdCBpZmFkZHIgKiwgaW50KTsKICNlbmRp
ZgogCiB2b2lkIHNjdHBfYWRkX29yX2RlbF9pbnRlcmZhY2VzKGludCAoKnByZWQpKHN0cnVjdCBp
Zm5ldCAqKSwgaW50IGFkZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGlu
ZXQvc2N0cF9jYWxsb3V0LmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9jYWxs
b3V0LmMKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA4ZmM1N2M3YWZmMGJm
ZjhhZGRlMGQ1ZDc5MmNkOTc2NTJhNmRkNWU2Li40YzliZTc1NjhiZmJjNmE5YWQ3MzJiOWZmMzUw
Y2JiZjcxYTI1NWFjCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2NhbGxv
dXQuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9jYWxsb3V0LmMKQEAg
LTM0LDEyICszNCwxMiBAQAogCiAjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUg
PHN5cy90eXBlcy5oPgotI2lmICFkZWZpbmVkIChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lm
ICFkZWZpbmVkKF9XSU4zMikKICNpbmNsdWRlIDxzeXMvd2FpdC5oPgogI2luY2x1ZGUgPHVuaXN0
ZC5oPgogI2luY2x1ZGUgPHB0aHJlYWQuaD4KICNlbmRpZgotI2lmIGRlZmluZWQoX19Vc2Vyc3Bh
Y2Vfb3NfTmFDbCkKKyNpZiBkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9fKQogI2luY2x1ZGUgPHN5
cy9zZWxlY3QuaD4KICNlbmRpZgogI2luY2x1ZGUgPHN0ZGxpYi5oPgpAQCAtNTQsMTggKzU0LDE5
IEBACiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX2NhbGxvdXQuaD4KICNpbmNsdWRlIDxuZXRpbmV0
L3NjdHBfcGNiLmg+CiAjZW5kaWYKKyNpbmNsdWRlIDxuZXRpbmV0L3NjdHB1dGlsLmg+CiAKIC8q
CiAgKiBDYWxsb3V0L1RpbWVyIHJvdXRpbmVzIGZvciBPUyB0aGF0IGRvZXNuJ3QgaGF2ZSB0aGVt
CiAgKi8KICNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQot
c3RhdGljIGludCB0aWNrcyA9IDA7CitzdGF0aWMgdWludDMyX3QgdGlja3MgPSAwOwogI2Vsc2UK
IGV4dGVybiBpbnQgdGlja3M7CiAjZW5kaWYKIAotaW50IHNjdHBfZ2V0X3RpY2tfY291bnQodm9p
ZCkgewotCWludCByZXQ7Cit1aW50MzJfdCBzY3RwX2dldF90aWNrX2NvdW50KHZvaWQpIHsKKwl1
aW50MzJfdCByZXQ7CiAKIAlTQ1RQX1RJTUVSUV9MT0NLKCk7CiAJcmV0ID0gdGlja3M7CkBAIC04
NiwxNyArODcsMjAgQEAgc2N0cF9vc190aW1lcl9pbml0KHNjdHBfb3NfdGltZXJfdCAqYykKIAlt
ZW1zZXQoYywgMCwgc2l6ZW9mKCpjKSk7CiB9CiAKLXZvaWQKLXNjdHBfb3NfdGltZXJfc3RhcnQo
c2N0cF9vc190aW1lcl90ICpjLCBpbnQgdG9fdGlja3MsIHZvaWQgKCpmdG4pICh2b2lkICopLAor
aW50CitzY3RwX29zX3RpbWVyX3N0YXJ0KHNjdHBfb3NfdGltZXJfdCAqYywgdWludDMyX3QgdG9f
dGlja3MsIHZvaWQgKCpmdG4pICh2b2lkICopLAogICAgICAgICAgICAgICAgICAgICB2b2lkICph
cmcpCiB7CisJaW50IHJldCA9IDA7CisKIAkvKiBwYXJhbm9pYSAqLwogCWlmICgoYyA9PSBOVUxM
KSB8fCAoZnRuID09IE5VTEwpKQotCSAgICByZXR1cm47CisJCXJldHVybiAocmV0KTsKIAogCVND
VFBfVElNRVJRX0xPQ0soKTsKIAkvKiBjaGVjayB0byBzZWUgaWYgd2UncmUgcmVzY2hlZHVsaW5n
IGEgdGltZXIgKi8KIAlpZiAoYy0+Y19mbGFncyAmIFNDVFBfQ0FMTE9VVF9QRU5ESU5HKSB7CisJ
CXJldCA9IDE7CiAJCWlmIChjID09IHNjdHBfb3NfdGltZXJfbmV4dCkgewogCQkJc2N0cF9vc190
aW1lcl9uZXh0ID0gVEFJTFFfTkVYVChjLCB0cWUpOwogCQl9CkBAIC0xMTMsNyArMTE3LDcgQEAg
c2N0cF9vc190aW1lcl9zdGFydChzY3RwX29zX3RpbWVyX3QgKmMsIGludCB0b190aWNrcywgdm9p
ZCAoKmZ0bikgKHZvaWQgKiksCiAJICogV2UgY291bGQgdW5sb2NrL3NwbHggaGVyZSBhbmQgbG9j
ay9zcGwgYXQgdGhlIFRBSUxRX0lOU0VSVF9UQUlMLAogCSAqIGJ1dCB0aGVyZSdzIG5vIHBvaW50
IHNpbmNlIGRvaW5nIHRoaXMgc2V0dXAgZG9lc24ndCB0YWtlIG11Y2ggdGltZS4KIAkgKi8KLQlp
ZiAodG9fdGlja3MgPD0gMCkKKwlpZiAodG9fdGlja3MgPT0gMCkKIAkJdG9fdGlja3MgPSAxOwog
CiAJYy0+Y19hcmcgPSBhcmc7CkBAIC0xMjIsNiArMTI2LDcgQEAgc2N0cF9vc190aW1lcl9zdGFy
dChzY3RwX29zX3RpbWVyX3QgKmMsIGludCB0b190aWNrcywgdm9pZCAoKmZ0bikgKHZvaWQgKiks
CiAJYy0+Y190aW1lID0gdGlja3MgKyB0b190aWNrczsKIAlUQUlMUV9JTlNFUlRfVEFJTCgmU0NU
UF9CQVNFX0lORk8oY2FsbHF1ZXVlKSwgYywgdHFlKTsKIAlTQ1RQX1RJTUVSUV9VTkxPQ0soKTsK
KwlyZXR1cm4gKHJldCk7CiB9CiAKIGludApAQCAtMTQ1LDggKzE1MCw4IEBAIHNjdHBfb3NfdGlt
ZXJfc3RvcChzY3RwX29zX3RpbWVyX3QgKmMpCiAJcmV0dXJuICgxKTsKIH0KIAotc3RhdGljIHZv
aWQKLXNjdHBfaGFuZGxlX3RpY2soaW50IGRlbHRhKQordm9pZAorc2N0cF9oYW5kbGVfdGljayh1
aW50MzJfdCBlbGFwc2VkX3RpY2tzKQogewogCXNjdHBfb3NfdGltZXJfdCAqYzsKIAl2b2lkICgq
Y19mdW5jKSh2b2lkICopOwpAQCAtMTU0LDEwICsxNTksMTAgQEAgc2N0cF9oYW5kbGVfdGljayhp
bnQgZGVsdGEpCiAKIAlTQ1RQX1RJTUVSUV9MT0NLKCk7CiAJLyogdXBkYXRlIG91ciB0aWNrIGNv
dW50ICovCi0JdGlja3MgKz0gZGVsdGE7CisJdGlja3MgKz0gZWxhcHNlZF90aWNrczsKIAljID0g
VEFJTFFfRklSU1QoJlNDVFBfQkFTRV9JTkZPKGNhbGxxdWV1ZSkpOwogCXdoaWxlIChjKSB7Ci0J
CWlmIChjLT5jX3RpbWUgPD0gdGlja3MpIHsKKwkJaWYgKFNDVFBfVUlOVDMyX0dFKHRpY2tzLCBj
LT5jX3RpbWUpKSB7CiAJCQlzY3RwX29zX3RpbWVyX25leHQgPSBUQUlMUV9ORVhUKGMsIHRxZSk7
CiAJCQlUQUlMUV9SRU1PVkUoJlNDVFBfQkFTRV9JTkZPKGNhbGxxdWV1ZSksIGMsIHRxZSk7CiAJ
CQljX2Z1bmMgPSBjLT5jX2Z1bmM7CkBAIC0xNzUsNyArMTgwLDcgQEAgc2N0cF9oYW5kbGVfdGlj
ayhpbnQgZGVsdGEpCiAJU0NUUF9USU1FUlFfVU5MT0NLKCk7CiB9CiAKLSNpZiBkZWZpbmVkKF9f
QVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKIHZvaWQKIHNjdHBfdGltZW91dCh2b2lkICphcmcgU0NUUF9VTlVTRUQpCiB7CkBAIC0xOTIs
MjUgKzE5NywyNyBAQCB1c2VyX3NjdHBfdGltZXJfaXRlcmF0ZSh2b2lkICphcmcpCiB7CiAJc2N0
cF91c2Vyc3BhY2Vfc2V0X3RocmVhZG5hbWUoIlNDVFAgdGltZXIiKTsKIAlmb3IgKDs7KSB7Ci0j
aWYgZGVmaW5lZCAoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikK
IAkJU2xlZXAoVElNRU9VVF9JTlRFUlZBTCk7CiAjZWxzZQotCQlzdHJ1Y3QgdGltZXZhbCB0aW1l
b3V0OworCQlzdHJ1Y3QgdGltZXNwZWMgYW1vdW50LCByZW1haW5pbmc7CiAKLQkJdGltZW91dC50
dl9zZWMgID0gMDsKLQkJdGltZW91dC50dl91c2VjID0gMTAwMCAqIFRJTUVPVVRfSU5URVJWQUw7
Ci0JCXNlbGVjdCgwLCBOVUxMLCBOVUxMLCBOVUxMLCAmdGltZW91dCk7CisJCXJlbWFpbmluZy50
dl9zZWMgPSAwOworCQlyZW1haW5pbmcudHZfbnNlYyA9IFRJTUVPVVRfSU5URVJWQUwgKiAxMDAw
ICogMTAwMDsKKwkJZG8geworCQkJYW1vdW50ID0gcmVtYWluaW5nOworCQl9IHdoaWxlIChuYW5v
c2xlZXAoJmFtb3VudCwgJnJlbWFpbmluZykgPT0gLTEpOwogI2VuZGlmCiAJCWlmIChhdG9taWNf
Y21wc2V0X2ludCgmU0NUUF9CQVNFX1ZBUih0aW1lcl90aHJlYWRfc2hvdWxkX2V4aXQpLCAxLCAx
KSkgewogCQkJYnJlYWs7CiAJCX0KLQkJc2N0cF9oYW5kbGVfdGljayhNU0VDX1RPX1RJQ0tTKFRJ
TUVPVVRfSU5URVJWQUwpKTsKKwkJc2N0cF9oYW5kbGVfdGljayhzY3RwX21zZWNzX3RvX3RpY2tz
KFRJTUVPVVRfSU5URVJWQUwpKTsKIAl9CiAJcmV0dXJuIChOVUxMKTsKIH0KIAogdm9pZAotc2N0
cF9zdGFydF90aW1lcih2b2lkKQorc2N0cF9zdGFydF90aW1lcl90aHJlYWQodm9pZCkKIHsKIAkv
KgogCSAqIE5vIG5lZWQgdG8gZG8gU0NUUF9USU1FUlFfTE9DS19JTklUKCk7CkBAIC0yMjEsNyAr
MjI4LDIyIEBAIHNjdHBfc3RhcnRfdGltZXIodm9pZCkKIAlyYyA9IHNjdHBfdXNlcnNwYWNlX3Ro
cmVhZF9jcmVhdGUoJlNDVFBfQkFTRV9WQVIodGltZXJfdGhyZWFkKSwgdXNlcl9zY3RwX3RpbWVy
X2l0ZXJhdGUpOwogCWlmIChyYykgewogCQlTQ1RQX1BSSU5URigiRVJST1I7IHJldHVybiBjb2Rl
IGZyb20gc2N0cF90aHJlYWRfY3JlYXRlKCkgaXMgJWRcbiIsIHJjKTsKKwl9IGVsc2UgeworCQlT
Q1RQX0JBU0VfVkFSKHRpbWVyX3RocmVhZF9zdGFydGVkKSA9IDE7CiAJfQogfQogCit2b2lkCitz
Y3RwX3N0b3BfdGltZXJfdGhyZWFkKHZvaWQpCit7CisJYXRvbWljX2NtcHNldF9pbnQoJlNDVFBf
QkFTRV9WQVIodGltZXJfdGhyZWFkX3Nob3VsZF9leGl0KSwgMCwgMSk7CisJaWYgKFNDVFBfQkFT
RV9WQVIodGltZXJfdGhyZWFkX3N0YXJ0ZWQpKSB7CisjaWYgZGVmaW5lZChfV0lOMzIpCisJCVdh
aXRGb3JTaW5nbGVPYmplY3QoU0NUUF9CQVNFX1ZBUih0aW1lcl90aHJlYWQpLCBJTkZJTklURSk7
CisJCUNsb3NlSGFuZGxlKFNDVFBfQkFTRV9WQVIodGltZXJfdGhyZWFkKSk7CisjZWxzZQorCQlw
dGhyZWFkX2pvaW4oU0NUUF9CQVNFX1ZBUih0aW1lcl90aHJlYWQpLCBOVUxMKTsKKyNlbmRpZgor
CX0KK30KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3Nj
dHBfY2FsbG91dC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfY2FsbG91dC5o
Cm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggNzY1Zjk2NmJkMWMzMjFhODAw
MDNlNzU2MmViNTUzMzU0OTA2MmI2Ny4uODFmZDg1MzBkMWY2ZmVhZTQzYTQyYjFjZjYzM2MxZDFk
YTNjZGNkMQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9jYWxsb3V0LmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3Jz
Y3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfY2FsbG91dC5oCkBAIC0zMCw3
ICszMCw3IEBACiAgKiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZkZWYgX19GcmVlQlNEX18KKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1
ZGUgPHN5cy9jZGVmcy5oPgogX19GQlNESUQoIiRGcmVlQlNEJCIpOwogI2VuZGlmCkBAIC01Myw3
ICs1Myw3IEBAIF9fRkJTRElEKCIkRnJlZUJTRCQiKTsKICNkZWZpbmUgU0NUUF9USUNLU19QRVJf
RkFTVFRJTU8gMjAJLyogY2FsbGVkIGFib3V0IGV2ZXJ5IDIwbXMgKi8KIAogI2lmIGRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYg
ZGVmaW5lZChfV0lOMzIpCiAjZGVmaW5lIFNDVFBfVElNRVJRX0xPQ0soKSAgICAgICAgICBFbnRl
ckNyaXRpY2FsU2VjdGlvbigmU0NUUF9CQVNFX1ZBUih0aW1lcl9tdHgpKQogI2RlZmluZSBTQ1RQ
X1RJTUVSUV9VTkxPQ0soKSAgICAgICAgTGVhdmVDcml0aWNhbFNlY3Rpb24oJlNDVFBfQkFTRV9W
QVIodGltZXJfbXR4KSkKICNkZWZpbmUgU0NUUF9USU1FUlFfTE9DS19JTklUKCkgICAgIEluaXRp
YWxpemVDcml0aWNhbFNlY3Rpb24oJlNDVFBfQkFTRV9WQVIodGltZXJfbXR4KSkKQEAgLTcxLDEz
ICs3MSwxMyBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAjZW5kaWYKICNlbmRpZgogCi1pbnQg
c2N0cF9nZXRfdGlja19jb3VudCh2b2lkKTsKK3VpbnQzMl90IHNjdHBfZ2V0X3RpY2tfY291bnQo
dm9pZCk7CiAKIFRBSUxRX0hFQUQoY2FsbG91dGxpc3QsIHNjdHBfY2FsbG91dCk7CiAKIHN0cnVj
dCBzY3RwX2NhbGxvdXQgewogCVRBSUxRX0VOVFJZKHNjdHBfY2FsbG91dCkgdHFlOwotCWludCBj
X3RpbWU7CQkvKiB0aWNrcyB0byB0aGUgZXZlbnQgKi8KKwl1aW50MzJfdCBjX3RpbWU7CQkvKiB0
aWNrcyB0byB0aGUgZXZlbnQgKi8KIAl2b2lkICpjX2FyZzsJCS8qIGZ1bmN0aW9uIGFyZ3VtZW50
ICovCiAJdm9pZCAoKmNfZnVuYykodm9pZCAqKTsJLyogZnVuY3Rpb24gdG8gY2FsbCAqLwogCWlu
dCBjX2ZsYWdzOwkJLyogc3RhdGUgb2YgdGhpcyBlbnRyeSAqLwpAQCAtODgsMTAgKzg4LDE4IEBA
IHR5cGVkZWYgc3RydWN0IHNjdHBfY2FsbG91dCBzY3RwX29zX3RpbWVyX3Q7CiAjZGVmaW5lCVND
VFBfQ0FMTE9VVF9QRU5ESU5HCTB4MDAwNAkvKiBjYWxsb3V0IGlzIHdhaXRpbmcgZm9yIHRpbWVv
dXQgKi8KIAogdm9pZCBzY3RwX29zX3RpbWVyX2luaXQoc2N0cF9vc190aW1lcl90ICp0bXIpOwot
dm9pZCBzY3RwX29zX3RpbWVyX3N0YXJ0KHNjdHBfb3NfdGltZXJfdCAqLCBpbnQsIHZvaWQgKCop
KHZvaWQgKiksIHZvaWQgKik7CisvKiBSZXR1cm5zIDEgaWYgcGVuZGluZyB0aW1lciB3YXMgcmVz
Y2hlZHVsZWQsIDAgb3RoZXJ3aXNlLiAqLworaW50IHNjdHBfb3NfdGltZXJfc3RhcnQoc2N0cF9v
c190aW1lcl90ICosIHVpbnQzMl90LCB2b2lkICgqKSh2b2lkICopLCB2b2lkICopOworLyogUmV0
dXJucyAxIGlmIHBlbmRpbmcgdGltZXIgd2FzIHN0b3BwZWQsIDAgb3RoZXJ3aXNlLiAqLwogaW50
IHNjdHBfb3NfdGltZXJfc3RvcChzY3RwX29zX3RpbWVyX3QgKik7Cit2b2lkIHNjdHBfaGFuZGxl
X3RpY2sodWludDMyX3QpOwogCiAjZGVmaW5lIFNDVFBfT1NfVElNRVJfSU5JVAlzY3RwX29zX3Rp
bWVyX2luaXQKKy8qCisgKiBOT1RFOiBUaGUgbmV4dCB0d28gc2hvdWxkbid0IGJlIGNhbGxlZCBk
aXJlY3RseSBvdXRzaWRlIG9mIHNjdHBfdGltZXJfc3RhcnQoKQorICogYW5kIHNjdHBfdGltZXJf
c3RvcCgpLCBzaW5jZSB0aGV5IGRvbid0IGhhbmRsZSBpbmNyZW1lbnRpbmcvZGVjcmVtZW50aW5n
CisgKiByZWxldmFudCByZWZlcmVuY2UgY291bnRzLgorICovCiAjZGVmaW5lIFNDVFBfT1NfVElN
RVJfU1RBUlQJc2N0cF9vc190aW1lcl9zdGFydAogI2RlZmluZSBTQ1RQX09TX1RJTUVSX1NUT1AJ
c2N0cF9vc190aW1lcl9zdG9wCiAvKiBNVCBGSVhNRTogSXMgdGhlIGZvbGxvd2luZyBjb3JyZWN0
PyAqLwpAQCAtMTAxLDkgKzEwOSwxMCBAQCBpbnQgc2N0cF9vc190aW1lcl9zdG9wKHNjdHBfb3Nf
dGltZXJfdCAqKTsKICNkZWZpbmUJU0NUUF9PU19USU1FUl9ERUFDVElWQVRFKHRtcikgKCh0bXIp
LT5jX2ZsYWdzICY9IH5TQ1RQX0NBTExPVVRfQUNUSVZFKQogCiAjaWYgZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQotdm9pZCBzY3RwX3N0YXJ0X3RpbWVyKHZvaWQpOwordm9pZCBzY3RwX3N0YXJ0X3Rp
bWVyX3RocmVhZCh2b2lkKTsKK3ZvaWQgc2N0cF9zdG9wX3RpbWVyX3RocmVhZCh2b2lkKTsKICNl
bmRpZgotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogdm9pZCBzY3RwX3RpbWVvdXQodm9pZCAqKTsKICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9jY19mdW5j
dGlvbnMuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
dXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2NjX2Z1bmN0aW9ucy5j
Cm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggZTUzZTRkNzQ3ZjMyMTg5MDRh
YWVlNTNhZjhhMmFhY2YyNzU3YzllMi4uZGNmNjI5ODU3OWEwMTc2MWZmYmM4YzczYzM4MWZjYWNm
NjQwOTQyNQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9jY19mdW5jdGlv
bnMuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9jY19mdW5jdGlvbnMu
YwpAQCAtMzIsOSArMzIsOSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLSNpZmRlZiBfX0ZyZWVCU0RfXworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci1fX0ZCU0RJRCgi
JEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9jY19mdW5jdGlvbnMuYyAzMTA1OTAgMjAx
Ni0xMi0yNiAxMTowNjo0MVogdHVleGVuICQiKTsKK19fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9z
eXMvbmV0aW5ldC9zY3RwX2NjX2Z1bmN0aW9ucy5jIDM1OTQwNSAyMDIwLTAzLTI4IDIwOjI1OjQ1
WiB0dWV4ZW4gJCIpOwogI2VuZGlmCiAKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfb3MuaD4KQEAg
LTUwLDggKzUwLDggQEAgX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBf
Y2NfZnVuY3Rpb25zLmMgMzEwNTkwIDIwMTYtMTItMjYgMTE6MDYKICNpbmNsdWRlIDxuZXRpbmV0
L3NjdHBfdGltZXIuaD4KICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfYXV0aC5oPgogI2luY2x1ZGUg
PG5ldGluZXQvc2N0cF9hc2NvbmYuaD4KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0Zy
ZWVCU0RfdmVyc2lvbiA+PSA4MDMwMDAKLSNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfZHRyYWNlX2Rl
Y2xhcmUuaD4KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQorI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9rZHRyYWNlLmg+CiAjZW5kaWYKIAogI2RlZmlu
ZSBTSElGVF9NUFRDUF9NVUxUSV9OIDQwCkBAIC0xMDEsNyArMTAxLDcgQEAgc2N0cF9zZXRfaW5p
dGlhbF9jY19wYXJhbShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX25ldHMgKm5l
dCkKIAl9CiAJc2N0cF9lbmZvcmNlX2N3bmRfbGltaXQoYXNzb2MsIG5ldCk7CiAJbmV0LT5zc3Ro
cmVzaCA9IGFzc29jLT5wZWVyc19yd25kOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9f
RnJlZUJTRF92ZXJzaW9uID49IDgwMzAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJU0RUX1BST0JFNShzY3RwLCBjd25kLCBuZXQsIGluaXQs
CiAJICAgICAgICAgIHN0Y2ItPmFzb2MubXlfdnRhZywgKChzdGNiLT5zY3RwX2VwLT5zY3RwX2xw
b3J0IDw8IDE2KSB8IChzdGNiLT5ycG9ydCkpLCBuZXQsCiAJICAgICAgICAgIDAsIG5ldC0+Y3du
ZCk7CkBAIC0xOTYsNyArMTk2LDcgQEAgc2N0cF9jd25kX3VwZGF0ZV9hZnRlcl9mcihzdHJ1Y3Qg
c2N0cF90Y2IgKnN0Y2IsCiAJCQkJfQogCQkJCW5ldC0+Y3duZCA9IG5ldC0+c3N0aHJlc2g7CiAJ
CQkJc2N0cF9lbmZvcmNlX2N3bmRfbGltaXQoYXNvYywgbmV0KTsKLSNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCVNEVF9QUk9CRTUoc2N0cCwg
Y3duZCwgbmV0LCBmciwKIAkJCQkJICBzdGNiLT5hc29jLm15X3Z0YWcsICgoc3RjYi0+c2N0cF9l
cC0+c2N0cF9scG9ydCA8PCAxNikgfCAoc3RjYi0+cnBvcnQpKSwgbmV0LAogCQkJCQkgIG9sZF9j
d25kLCBuZXQtPmN3bmQpOwpAQCAtMjUyLDcgKzI1Miw3IEBAIHNjdHBfY3duZF91cGRhdGVfYWZ0
ZXJfZnIoc3RydWN0IHNjdHBfdGNiICpzdGNiLAogI2RlZmluZSBTQ1RQX0lOU1RfR0FJTklORyAz
IC8qIEdhaW5pbmcsIHN0ZXAgZG93biBwb3NzaWJsZSAqLwogCiAKLSNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogc3RhdGljIGludAogY2NfYndfc2Ft
ZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX25ldHMgKm5ldCwgdWludDY0X3Qg
bmJ3LAogCSAgIHVpbnQ2NF90IHJ0dF9vZmZzZXQsIHVpbnQ2NF90IHZ0YWcsIHVpbnQ4X3QgaW5z
dF9pbmQpCkBAIC0yNjIsMTEgKzI2MiwxMSBAQCBjY19id19zYW1lKHN0cnVjdCBzY3RwX3RjYiAq
c3RjYiBTQ1RQX1VOVVNFRCwgc3RydWN0IHNjdHBfbmV0cyAqbmV0LCB1aW50NjRfdCBuYgogCSAg
IHVpbnQ2NF90IHJ0dF9vZmZzZXQsIHVpbnQ4X3QgaW5zdF9pbmQpCiAjZW5kaWYKIHsKLSNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDMwMDAKKyNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCXVpbnQ2NF90
IG90aCwgcHJvYmVwb2ludDsKICNlbmRpZgogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
X19GcmVlQlNEX3ZlcnNpb24gPj0gODAzMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlwcm9iZXBvaW50ID0gKCgodWludDY0X3QpbmV0LT5j
d25kKSA8PCAzMik7CiAjZW5kaWYKIAlpZiAobmV0LT5ydHQgPiBuZXQtPmNjX21vZC5ydGNjLmxi
d19ydHQgKyBydHRfb2Zmc2V0KSB7CkBAIC0yNzUsNyArMjc1LDcgQEAgY2NfYndfc2FtZShzdHJ1
Y3Qgc2N0cF90Y2IgKnN0Y2IgU0NUUF9VTlVTRUQsIHN0cnVjdCBzY3RwX25ldHMgKm5ldCwgdWlu
dDY0X3QgbmIKIAkJICogd2UgZG9uJ3QgdXBkYXRlIGJ3Li4gc28gd2UgZG9uJ3QKIAkJICogdXBk
YXRlIHRoZSBydHQgZWl0aGVyLgogCQkgKi8KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBf
X0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkvKiBQcm9iZSBwb2ludCA1ICovCiAJCXByb2JlcG9p
bnQgfD0gICgoNSA8PCAxNikgfCAxKTsKIAkJU0RUX1BST0JFNShzY3RwLCBjd25kLCBuZXQsIHJ0
dHZhciwKQEAgLTI5NSw3ICsyOTUsNyBAQCBjY19id19zYW1lKHN0cnVjdCBzY3RwX3RjYiAqc3Rj
YiBTQ1RQX1VOVVNFRCwgc3RydWN0IHNjdHBfbmV0cyAqbmV0LCB1aW50NjRfdCBuYgogCQkJICAg
ICgobmV0LT5jY19tb2QucnRjYy5zdGVwX2NudCA+IG5ldC0+Y2NfbW9kLnJ0Y2Muc3RlYWR5X3N0
ZXApICYmCiAJCQkgICAgICgobmV0LT5jY19tb2QucnRjYy5zdGVwX2NudCAlIG5ldC0+Y2NfbW9k
LnJ0Y2Muc3RlYWR5X3N0ZXApID09IDApKSkgewogCQkJCS8qIFRyeSBhIHN0ZXAgZG93biAqLwot
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMzAwMAor
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJ
b3RoID0gbmV0LT5jY19tb2QucnRjYy52b2xfcmVkdWNlOwogCQkJCW90aCA8PD0gMTY7CiAJCQkJ
b3RoIHw9IG5ldC0+Y2NfbW9kLnJ0Y2Muc3RlcF9jbnQ7CkBAIC0zMjQsNyArMzI0LDcgQEAgY2Nf
Yndfc2FtZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IgU0NUUF9VTlVTRUQsIHN0cnVjdCBzY3RwX25l
dHMgKm5ldCwgdWludDY0X3QgbmIKIAkJICogd2UgdXBkYXRlIGJvdGggdGhlIGJ3IGFuZCB0aGUg
cnR0IGhlcmUgdG8KIAkJICogbG9jayB0aGlzIGluIGFzIGEgZ29vZCBzdGVwIGRvd24uCiAJCSAq
LwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMzAw
MAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJ
CS8qIFByb2JlIHBvaW50IDYgKi8KIAkJcHJvYmVwb2ludCB8PSAgKCg2IDw8IDE2KSB8IDApOwog
CQlTRFRfUFJPQkU1KHNjdHAsIGN3bmQsIG5ldCwgcnR0dmFyLApAQCAtMzM1LDcgKzMzNSw3IEBA
IGNjX2J3X3NhbWUoc3RydWN0IHNjdHBfdGNiICpzdGNiIFNDVFBfVU5VU0VELCBzdHJ1Y3Qgc2N0
cF9uZXRzICpuZXQsIHVpbnQ2NF90IG5iCiAJCQkgIHByb2JlcG9pbnQpOwogI2VuZGlmCiAJCWlm
IChuZXQtPmNjX21vZC5ydGNjLnN0ZWFkeV9zdGVwKSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAzMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCW90aCA9IG5ldC0+Y2NfbW9kLnJ0Y2Mu
dm9sX3JlZHVjZTsKIAkJCW90aCA8PD0gMTY7CiAJCQlvdGggfD0gbmV0LT5jY19tb2QucnRjYy5z
dGVwX2NudDsKQEAgLTM3MCw3ICszNzAsNyBAQCBjY19id19zYW1lKHN0cnVjdCBzY3RwX3RjYiAq
c3RjYiBTQ1RQX1VOVVNFRCwgc3RydWN0IHNjdHBfbmV0cyAqbmV0LCB1aW50NjRfdCBuYgogCX0K
IAkvKiBPayBidyBhbmQgcnR0IHJlbWFpbmVkIHRoZSBzYW1lIC4uIG5vIHVwZGF0ZSB0byBhbnkK
IAkgKi8KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4
MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCS8qIFByb2JlIHBvaW50IDcgKi8KIAlwcm9iZXBvaW50IHw9ICAoKDcgPDwgMTYpIHwgbmV0
LT5jY19tb2QucnRjYy5yZXRfZnJvbV9lcSk7CiAJU0RUX1BST0JFNShzY3RwLCBjd25kLCBuZXQs
IHJ0dHZhciwKQEAgLTQwNyw3ICs0MDcsNyBAQCBjY19id19zYW1lKHN0cnVjdCBzY3RwX3RjYiAq
c3RjYiBTQ1RQX1VOVVNFRCwgc3RydWN0IHNjdHBfbmV0cyAqbmV0LCB1aW50NjRfdCBuYgogCQly
ZXR1cm4gKChpbnQpbmV0LT5jY19tb2QucnRjYy5yZXRfZnJvbV9lcSk7CiB9CiAKLSNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDMwMDAKKyNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogc3RhdGljIGludAog
Y2NfYndfZGVjcmVhc2Uoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9uZXRzICpu
ZXQsIHVpbnQ2NF90IG5idywgdWludDY0X3QgcnR0X29mZnNldCwKIAkgICAgICAgdWludDY0X3Qg
dnRhZywgdWludDhfdCBpbnN0X2luZCkKQEAgLTQxNywxMiArNDE3LDEyIEBAIGNjX2J3X2RlY3Jl
YXNlKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiBTQ1RQX1VOVVNFRCwgc3RydWN0IHNjdHBfbmV0cyAq
bmV0LCB1aW50NjRfCiAJICAgICAgIHVpbnQ4X3QgaW5zdF9pbmQpCiAjZW5kaWYKIHsKLSNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDMwMDAKKyNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCXVpbnQ2NF90
IG90aCwgcHJvYmVwb2ludDsKICNlbmRpZgogCiAJLyogQmFuZHdpZHRoIGRlY3JlYXNlZC4qLwot
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMzAwMAor
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJcHJv
YmVwb2ludCA9ICgoKHVpbnQ2NF90KW5ldC0+Y3duZCkgPDwgMzIpOwogI2VuZGlmCiAJaWYgKG5l
dC0+cnR0ICA+IG5ldC0+Y2NfbW9kLnJ0Y2MubGJ3X3J0dCtydHRfb2Zmc2V0KSB7CkBAIC00MzEs
NyArNDMxLDcgQEAgY2NfYndfZGVjcmVhc2Uoc3RydWN0IHNjdHBfdGNiICpzdGNiIFNDVFBfVU5V
U0VELCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsIHVpbnQ2NF8KIAkJaWYgKChuZXQtPmN3bmQgPiBu
ZXQtPmNjX21vZC5ydGNjLmN3bmRfYXRfYndfc2V0KSAmJgogCQkgICAgKGluc3RfaW5kICE9IFND
VFBfSU5TVF9MT09TSU5HKSkgewogCQkJLyogV2UgY2F1c2VkIGl0IG1heWJlLi4gYmFjayBvZmY/
ICovCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAz
MDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
IAkJCS8qIFBST0JFIFBPSU5UIDEgKi8KIAkJCXByb2JlcG9pbnQgfD0gICgoMSA8PCAxNikgfCAx
KTsKIAkJCVNEVF9QUk9CRTUoc2N0cCwgY3duZCwgbmV0LCBydHR2YXIsCkBAIC00NDgsNyArNDQ4
LDcgQEAgY2NfYndfZGVjcmVhc2Uoc3RydWN0IHNjdHBfdGNiICpzdGNiIFNDVFBfVU5VU0VELCBz
dHJ1Y3Qgc2N0cF9uZXRzICpuZXQsIHVpbnQ2NF8KIAkJCX0KIAkJCXJldHVybiAoMSk7CiAJCX0K
LSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDMwMDAK
KyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkv
KiBQcm9iZSBwb2ludCAyICovCiAJCXByb2JlcG9pbnQgfD0gICgoMiA8PCAxNikgfCAwKTsKIAkJ
U0RUX1BST0JFNShzY3RwLCBjd25kLCBuZXQsIHJ0dHZhciwKQEAgLTQ2MCw3ICs0NjAsNyBAQCBj
Y19id19kZWNyZWFzZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IgU0NUUF9VTlVTRUQsIHN0cnVjdCBz
Y3RwX25ldHMgKm5ldCwgdWludDY0XwogI2VuZGlmCiAJCS8qIFNvbWVvbmUgZWxzZSAtIGZpZ2h0
IGZvciBtb3JlPyAqLwogCQlpZiAobmV0LT5jY19tb2QucnRjYy5zdGVhZHlfc3RlcCkgewotI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMzAwMAorI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQlvdGgg
PSBuZXQtPmNjX21vZC5ydGNjLnZvbF9yZWR1Y2U7CiAJCQlvdGggPDw9IDE2OwogCQkJb3RoIHw9
IG5ldC0+Y2NfbW9kLnJ0Y2Muc3RlcF9jbnQ7CkBAIC00ODgsNyArNDg4LDcgQEAgY2NfYndfZGVj
cmVhc2Uoc3RydWN0IHNjdHBfdGNiICpzdGNiIFNDVFBfVU5VU0VELCBzdHJ1Y3Qgc2N0cF9uZXRz
ICpuZXQsIHVpbnQ2NF8KIAkJZ290byBvdXRfZGVjaXNpb247CiAJfSBlbHNlICBpZiAobmV0LT5y
dHQgIDwgbmV0LT5jY19tb2QucnRjYy5sYndfcnR0LXJ0dF9vZmZzZXQpIHsKIAkJLyogYncgJiBy
dHQgZGVjcmVhc2VkICovCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3Zl
cnNpb24gPj0gODAzMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKIAkJLyogUHJvYmUgcG9pbnQgMyAqLwogCQlwcm9iZXBvaW50IHw9ICAoKDMg
PDwgMTYpIHwgMCk7CiAJCVNEVF9QUk9CRTUoc2N0cCwgY3duZCwgbmV0LCBydHR2YXIsCkBAIC00
OTksNyArNDk5LDcgQEAgY2NfYndfZGVjcmVhc2Uoc3RydWN0IHNjdHBfdGNiICpzdGNiIFNDVFBf
VU5VU0VELCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsIHVpbnQ2NF8KIAkJCSAgcHJvYmVwb2ludCk7
CiAjZW5kaWYKIAkJaWYgKG5ldC0+Y2NfbW9kLnJ0Y2Muc3RlYWR5X3N0ZXApIHsKLSNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDMwMDAKKyNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJb3RoID0gbmV0
LT5jY19tb2QucnRjYy52b2xfcmVkdWNlOwogCQkJb3RoIDw8PSAxNjsKIAkJCW90aCB8PSBuZXQt
PmNjX21vZC5ydGNjLnN0ZXBfY250OwpAQCAtNTI0LDcgKzUyNCw3IEBAIGNjX2J3X2RlY3JlYXNl
KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiBTQ1RQX1VOVVNFRCwgc3RydWN0IHNjdHBfbmV0cyAqbmV0
LCB1aW50NjRfCiAJCWdvdG8gb3V0X2RlY2lzaW9uOwogCX0KIAkvKiBUaGUgYncgZGVjcmVhc2Vk
IGJ1dCBydHQgc3RheWVkIHRoZSBzYW1lICovCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
X19GcmVlQlNEX3ZlcnNpb24gPj0gODAzMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkvKiBQcm9iZSBwb2ludCA0ICovCiAJcHJvYmVwb2lu
dCB8PSAgKCg0IDw8IDE2KSB8IDApOwogCVNEVF9QUk9CRTUoc2N0cCwgY3duZCwgbmV0LCBydHR2
YXIsCkBAIC01MzUsNyArNTM1LDcgQEAgY2NfYndfZGVjcmVhc2Uoc3RydWN0IHNjdHBfdGNiICpz
dGNiIFNDVFBfVU5VU0VELCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsIHVpbnQ2NF8KIAkJICBwcm9i
ZXBvaW50KTsKICNlbmRpZgogCWlmIChuZXQtPmNjX21vZC5ydGNjLnN0ZWFkeV9zdGVwKSB7Ci0j
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAzMDAwCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJb3Ro
ID0gbmV0LT5jY19tb2QucnRjYy52b2xfcmVkdWNlOwogCQlvdGggPDw9IDE2OwogCQlvdGggfD0g
bmV0LT5jY19tb2QucnRjYy5zdGVwX2NudDsKQEAgLTU2OCw3ICs1NjgsNyBAQCBvdXRfZGVjaXNp
b246CiAJfQogfQogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNp
b24gPj0gODAzMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKIHN0YXRpYyBpbnQKIGNjX2J3X2luY3JlYXNlKHN0cnVjdCBzY3RwX3RjYiAqc3Rj
Yiwgc3RydWN0IHNjdHBfbmV0cyAqbmV0LCB1aW50NjRfdCBuYncsIHVpbnQ2NF90IHZ0YWcpCiAj
ZWxzZQpAQCAtNTc2LDcgKzU3Niw3IEBAIHN0YXRpYyBpbnQKIGNjX2J3X2luY3JlYXNlKHN0cnVj
dCBzY3RwX3RjYiAqc3RjYiBTQ1RQX1VOVVNFRCwgc3RydWN0IHNjdHBfbmV0cyAqbmV0LCB1aW50
NjRfdCBuYncpCiAjZW5kaWYKIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVC
U0RfdmVyc2lvbiA+PSA4MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogCXVpbnQ2NF90IG90aCwgcHJvYmVwb2ludDsKIAogI2VuZGlmCkBA
IC01ODYsNyArNTg2LDcgQEAgY2NfYndfaW5jcmVhc2Uoc3RydWN0IHNjdHBfdGNiICpzdGNiIFND
VFBfVU5VU0VELCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsIHVpbnQ2NF8KIAkgKiB1cGRhdGUuIE5v
dGUgdGhhdCB3ZSBwYXkgbm8gYXR0ZW50aW9uIHRvCiAJICogdGhlIGluc3RfaW5kIHNpbmNlIG91
ciBvdmVyYWxsIHN1bSBpcyBpbmNyZWFzaW5nLgogCSAqLwotI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMzAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJLyogUFJPQkUgUE9JTlQgMCAqLwogCXBy
b2JlcG9pbnQgPSAoKCh1aW50NjRfdCluZXQtPmN3bmQpIDw8IDMyKTsKIAlTRFRfUFJPQkU1KHNj
dHAsIGN3bmQsIG5ldCwgcnR0dmFyLApAQCAtNTk3LDcgKzU5Nyw3IEBAIGNjX2J3X2luY3JlYXNl
KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiBTQ1RQX1VOVVNFRCwgc3RydWN0IHNjdHBfbmV0cyAqbmV0
LCB1aW50NjRfCiAJCSAgcHJvYmVwb2ludCk7CiAjZW5kaWYKIAlpZiAobmV0LT5jY19tb2QucnRj
Yy5zdGVhZHlfc3RlcCkgewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92
ZXJzaW9uID49IDgwMzAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAJCW90aCA9IG5ldC0+Y2NfbW9kLnJ0Y2Mudm9sX3JlZHVjZTsKIAkJb3Ro
IDw8PSAxNjsKIAkJb3RoIHw9IG5ldC0+Y2NfbW9kLnJ0Y2Muc3RlcF9jbnQ7CkBAIC02MjcsNyAr
NjI3LDcgQEAgc3RhdGljIGludAogY2NfYndfbGltaXQoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBz
dHJ1Y3Qgc2N0cF9uZXRzICpuZXQsIHVpbnQ2NF90IG5idykKIHsKIAl1aW50NjRfdCBid19vZmZz
ZXQsIHJ0dF9vZmZzZXQ7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3Zl
cnNpb24gPj0gODAzMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKIAl1aW50NjRfdCBwcm9iZXBvaW50LCBydHQsIHZ0YWc7CiAjZW5kaWYKIAl1
aW50NjRfdCBieXRlc19mb3JfdGhpc19ydHQsIGluc3RfYnc7CkBAIC02NzMsNyArNjczLDcgQEAg
Y2NfYndfbGltaXQoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQs
IHVpbnQ2NF90IG5idykKIAkgKiBjaGFuZ2Ugd2l0aGluIDEvMzJuZAogCSAqLwogCWJ3X3NoaWZ0
ID0gU0NUUF9CQVNFX1NZU0NUTChzY3RwX3J0dHZhcl9idyk7Ci0jaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAzMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlydHQgPSBzdGNiLT5hc29jLm15X3Z0
YWc7CiAJdnRhZyA9IChydHQgPDwgMzIpIHwgKCgodWludDMyX3QpKHN0Y2ItPnNjdHBfZXAtPnNj
dHBfbHBvcnQpKSA8PCAxNikgfCAoc3RjYi0+cnBvcnQpOwogCXByb2JlcG9pbnQgPSAoKCh1aW50
NjRfdCluZXQtPmN3bmQpIDw8IDMyKTsKQEAgLTY5NCwxMiArNjk0LDEyIEBAIGNjX2J3X2xpbWl0
KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfbmV0cyAqbmV0LCB1aW50NjRfdCBu
YncpCiAJCQkJCWluc3RfaW5kID0gU0NUUF9JTlNUX0xPT1NJTkc7CiAJCQkJZWxzZQogCQkJCQlp
bnN0X2luZCA9IFNDVFBfSU5TVF9ORVVUUkFMOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYm
IF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMzAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJcHJvYmVwb2ludCB8PSAgKCgweGIgPDwgMTYp
IHwgaW5zdF9pbmQpOwogI2VuZGlmCiAJCQl9IGVsc2UgewogCQkJCWluc3RfaW5kID0gbmV0LT5j
Y19tb2QucnRjYy5sYXN0X2luc3RfaW5kOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9f
RnJlZUJTRF92ZXJzaW9uID49IDgwMzAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJaW5zdF9idyA9IGJ5dGVzX2Zvcl90aGlzX3J0dCAv
ICh1aW50NjRfdCkobmV0LT5ydHQpOwogCQkJCS8qIENhbid0IGRldGVybWluZSBkbyBub3QgY2hh
bmdlICovCiAJCQkJcHJvYmVwb2ludCB8PSAgKCgweGMgPDwgMTYpIHwgaW5zdF9pbmQpOwpAQCAt
NzA3LDEzICs3MDcsMTMgQEAgY2NfYndfbGltaXQoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1
Y3Qgc2N0cF9uZXRzICpuZXQsIHVpbnQ2NF90IG5idykKIAkJCX0KIAkJfSBlbHNlIHsKIAkJCWlu
c3RfaW5kID0gbmV0LT5jY19tb2QucnRjYy5sYXN0X2luc3RfaW5kOwotI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMzAwMAorI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQlpbnN0X2J3ID0gYnl0ZXNf
Zm9yX3RoaXNfcnR0OwogCQkJLyogQ2FuJ3QgZGV0ZXJtaW5lIGRvIG5vdCBjaGFuZ2UgKi8KIAkJ
CXByb2JlcG9pbnQgfD0gICgoMHhkIDw8IDE2KSB8IGluc3RfaW5kKTsKICNlbmRpZgogCQl9Ci0j
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAzMDAwCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJU0RU
X1BST0JFNShzY3RwLCBjd25kLCBuZXQsIHJ0dHZhciwKIAkJCSAgdnRhZywKIAkJCSAgKChuYncg
PDwgMzIpIHwgaW5zdF9idyksCkBAIC03MjcsNyArNzI3LDcgQEAgY2NfYndfbGltaXQoc3RydWN0
IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsIHVpbnQ2NF90IG5idykKIAl9
CiAJYndfb2Zmc2V0ID0gbmV0LT5jY19tb2QucnRjYy5sYncgPj4gYndfc2hpZnQ7CiAJaWYgKG5i
dyA+IG5ldC0+Y2NfbW9kLnJ0Y2MubGJ3ICsgYndfb2Zmc2V0KSB7Ci0jaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAzMDAwCisjaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJcmV0ID0gY2NfYndfaW5jcmVh
c2Uoc3RjYiwgbmV0LCBuYncsIHZ0YWcpOwogI2Vsc2UKIAkJcmV0ID0gY2NfYndfaW5jcmVhc2Uo
c3RjYiwgbmV0LCBuYncpOwpAQCAtNzM2LDcgKzczNiw3IEBAIGNjX2J3X2xpbWl0KHN0cnVjdCBz
Y3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfbmV0cyAqbmV0LCB1aW50NjRfdCBuYncpCiAJfQog
CXJ0dF9vZmZzZXQgPSBuZXQtPmNjX21vZC5ydGNjLmxid19ydHQgPj4gU0NUUF9CQVNFX1NZU0NU
TChzY3RwX3J0dHZhcl9ydHQpOwogCWlmIChuYncgPCBuZXQtPmNjX21vZC5ydGNjLmxidyAtIGJ3
X29mZnNldCkgewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9u
ID49IDgwMzAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJCXJldCA9IGNjX2J3X2RlY3JlYXNlKHN0Y2IsIG5ldCwgbmJ3LCBydHRfb2Zmc2V0
LCB2dGFnLCBpbnN0X2luZCk7CiAjZWxzZQogCQlyZXQgPSBjY19id19kZWNyZWFzZShzdGNiLCBu
ZXQsIG5idywgcnR0X29mZnNldCwgaW5zdF9pbmQpOwpAQCAtNzQ3LDcgKzc0Nyw3IEBAIGNjX2J3
X2xpbWl0KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfbmV0cyAqbmV0LCB1aW50
NjRfdCBuYncpCiAJICogd2UgYXJlIGluIGEgc2l0dWF0aW9uIHdoZXJlCiAJICogdGhlIGJ3IHN0
YXllZCB0aGUgc2FtZS4KIAkgKi8KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVC
U0RfdmVyc2lvbiA+PSA4MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogCXJldCA9IGNjX2J3X3NhbWUoc3RjYiwgbmV0LCBuYncsIHJ0dF9v
ZmZzZXQsIHZ0YWcsIGluc3RfaW5kKTsKICNlbHNlCiAJcmV0ID0gY2NfYndfc2FtZShzdGNiLCBu
ZXQsIG5idywgcnR0X29mZnNldCwgaW5zdF9pbmQpOwpAQCAtNzYzLDcgKzc2Myw3IEBAIHNjdHBf
Y3duZF91cGRhdGVfYWZ0ZXJfc2Fja19jb21tb24oc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkJ
CSAgIGludCBhY2N1bV9tb3ZlZCwgaW50IHJlbmVnZWRfYWxsIFNDVFBfVU5VU0VELCBpbnQgd2ls
bF9leGl0LCBpbnQgdXNlX3J0Y2MpCiB7CiAJc3RydWN0IHNjdHBfbmV0cyAqbmV0OwotI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMzAwMAorI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJaW50IG9sZF9j
d25kOwogI2VuZGlmCiAJdWludDMyX3QgdF9zc3RocmVzaCwgdF9jd25kLCBpbmNyOwpAQCAtODc5
LDcgKzg3OSw3IEBAIHNjdHBfY3duZF91cGRhdGVfYWZ0ZXJfc2Fja19jb21tb24oc3RydWN0IHNj
dHBfdGNiICpzdGNiLAogCQkJCQljb250aW51ZTsKIAkJCQl9CiAJCQl9IGVsc2UgewotI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMzAwMAorI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJdWludDY0
X3QgdnRhZywgcHJvYmVwb2ludDsKIAogCQkJCXByb2JlcG9pbnQgPSAoKCh1aW50NjRfdCluZXQt
PmN3bmQpIDw8IDMyKTsKQEAgLTkxNSw3ICs5MTUsNyBAQCBzY3RwX2N3bmRfdXBkYXRlX2FmdGVy
X3NhY2tfY29tbW9uKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJCQlpZiAobmV0LT5mbGlnaHRf
c2l6ZSArIG5ldC0+bmV0X2FjayA+PSBuZXQtPmN3bmQpIHsKIAkJCQkJdWludDMyX3QgbGltaXQ7
CiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDMw
MDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
CQkJCQlvbGRfY3duZCA9IG5ldC0+Y3duZDsKICNlbmRpZgogCQkJCQlzd2l0Y2ggKGFzb2MtPnNj
dHBfY210X29uX29mZikgewpAQCAtOTg3LDcgKzk4Nyw3IEBAIHNjdHBfY3duZF91cGRhdGVfYWZ0
ZXJfc2Fja19jb21tb24oc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkJCQkJc2N0cF9sb2dfY3du
ZChzdGNiLCBuZXQsIGluY3IsCiAJCQkJCQkgICAgICAgICAgICAgIFNDVFBfQ1dORF9MT0dfRlJP
TV9TUyk7CiAJCQkJCX0KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVy
c2lvbiA+PSA4MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogCQkJCQlTRFRfUFJPQkU1KHNjdHAsIGN3bmQsIG5ldCwgYWNrLAogCQkJCQkg
ICAgICAgICAgc3RjYi0+YXNvYy5teV92dGFnLAogCQkJCQkgICAgICAgICAgKChzdGNiLT5zY3Rw
X2VwLT5zY3RwX2xwb3J0IDw8IDE2KSB8IChzdGNiLT5ycG9ydCkpLApAQCAtMTAxMCw3ICsxMDEw
LDcgQEAgc2N0cF9jd25kX3VwZGF0ZV9hZnRlcl9zYWNrX2NvbW1vbihzdHJ1Y3Qgc2N0cF90Y2Ig
KnN0Y2IsCiAJCQkJaWYgKChuZXQtPmZsaWdodF9zaXplICsgbmV0LT5uZXRfYWNrID49IG5ldC0+
Y3duZCkgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZXQtPnBhcnRp
YWxfYnl0ZXNfYWNrZWQgPj0gbmV0LT5jd25kKSkgewogCQkJCQluZXQtPnBhcnRpYWxfYnl0ZXNf
YWNrZWQgLT0gbmV0LT5jd25kOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJT
RF92ZXJzaW9uID49IDgwMzAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiAJCQkJCW9sZF9jd25kID0gbmV0LT5jd25kOwogI2VuZGlmCiAJCQkJ
CXN3aXRjaCAoYXNvYy0+c2N0cF9jbXRfb25fb2ZmKSB7CkBAIC0xMDUxLDcgKzEwNTEsNyBAQCBz
Y3RwX2N3bmRfdXBkYXRlX2FmdGVyX3NhY2tfY29tbW9uKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwK
IAkJCQkJfQogCQkJCQluZXQtPmN3bmQgKz0gaW5jcjsKIAkJCQkJc2N0cF9lbmZvcmNlX2N3bmRf
bGltaXQoYXNvYywgbmV0KTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0Rf
dmVyc2lvbiA+PSA4MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogCQkJCQlTRFRfUFJPQkU1KHNjdHAsIGN3bmQsIG5ldCwgYWNrLAogCQkJ
CQkJICBzdGNiLT5hc29jLm15X3Z0YWcsCiAJCQkJCQkgICgoc3RjYi0+c2N0cF9lcC0+c2N0cF9s
cG9ydCA8PCAxNikgfCAoc3RjYi0+cnBvcnQpKSwKQEAgLTEwNzgsNyArMTA3OCw3IEBAIHNjdHBf
Y3duZF91cGRhdGVfYWZ0ZXJfc2Fja19jb21tb24oc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCX0K
IH0KIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgw
MzAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiBzdGF0aWMgdm9pZAogc2N0cF9jd25kX3VwZGF0ZV9leGl0X3BmX2NvbW1vbihzdHJ1Y3Qgc2N0
cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX25ldHMgKm5ldCkKICNlbHNlCkBAIC0xMDg2LDEzICsx
MDg2LDEzIEBAIHN0YXRpYyB2b2lkCiBzY3RwX2N3bmRfdXBkYXRlX2V4aXRfcGZfY29tbW9uKHN0
cnVjdCBzY3RwX3RjYiAqc3RjYiBTQ1RQX1VOVVNFRCwgc3RydWN0IHNjdHBfbmV0cyAqbmV0KQog
I2VuZGlmCiB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24g
Pj0gODAzMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKIAlpbnQgb2xkX2N3bmQ7CiAKIAlvbGRfY3duZCA9IG5ldC0+Y3duZDsKICNlbmRpZgog
CW5ldC0+Y3duZCA9IG5ldC0+bXR1OwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJl
ZUJTRF92ZXJzaW9uID49IDgwMzAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAJU0RUX1BST0JFNShzY3RwLCBjd25kLCBuZXQsIGFjaywKIAkg
ICAgICAgICAgc3RjYi0+YXNvYy5teV92dGFnLCAoKHN0Y2ItPnNjdHBfZXAtPnNjdHBfbHBvcnQg
PDwgMTYpIHwgKHN0Y2ItPnJwb3J0KSksIG5ldCwKIAkgICAgICAgICAgb2xkX2N3bmQsIG5ldC0+
Y3duZCk7CkBAIC0xMTY1LDcgKzExNjUsNyBAQCBzY3RwX2N3bmRfdXBkYXRlX2FmdGVyX3RpbWVv
dXQoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQpCiAJfQogCW5l
dC0+Y3duZCA9IG5ldC0+bXR1OwogCW5ldC0+cGFydGlhbF9ieXRlc19hY2tlZCA9IDA7Ci0jaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAzMDAwCisjaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlTRFRfUFJP
QkU1KHNjdHAsIGN3bmQsIG5ldCwgdG8sCiAJCSAgc3RjYi0+YXNvYy5teV92dGFnLAogCQkgICgo
c3RjYi0+c2N0cF9lcC0+c2N0cF9scG9ydCA8PCAxNikgfCAoc3RjYi0+cnBvcnQpKSwKQEAgLTEy
MjAsNyArMTIyMCw3IEBAIHNjdHBfY3duZF91cGRhdGVfYWZ0ZXJfZWNuX2VjaG9fY29tbW9uKHN0
cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfbmV0cyAqCiAJCQkJbmV0LT5SVE8gPDw9
IDE7CiAJCQl9CiAJCQluZXQtPmN3bmQgPSBuZXQtPnNzdGhyZXNoOwotI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMzAwMAorI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQlTRFRfUFJPQkU1KHNjdHAs
IGN3bmQsIG5ldCwgZWNuLAogCQkJCSAgc3RjYi0+YXNvYy5teV92dGFnLAogCQkJCSAgKChzdGNi
LT5zY3RwX2VwLT5zY3RwX2xwb3J0IDw8IDE2KSB8IChzdGNiLT5ycG9ydCkpLApAQCAtMTM0MSw3
ICsxMzQxLDcgQEAgc2N0cF9jd25kX3VwZGF0ZV9hZnRlcl9wYWNrZXRfZHJvcHBlZChzdHJ1Y3Qg
c2N0cF90Y2IgKnN0Y2IsCiAJc2N0cF9lbmZvcmNlX2N3bmRfbGltaXQoJnN0Y2ItPmFzb2MsIG5l
dCk7CiAJaWYgKG5ldC0+Y3duZCAtIG9sZF9jd25kICE9IDApIHsKIAkJLyogbG9nIG9ubHkgY2hh
bmdlcyAqLwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49
IDgwMzAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAJCVNEVF9QUk9CRTUoc2N0cCwgY3duZCwgbmV0LCBwZCwKIAkJCSAgc3RjYi0+YXNvYy5t
eV92dGFnLAogCQkJICAoKHN0Y2ItPnNjdHBfZXAtPnNjdHBfbHBvcnQgPDwgMTYpIHwgKHN0Y2It
PnJwb3J0KSksCkBAIC0xMzY2LDcgKzEzNjYsNyBAQCBzY3RwX2N3bmRfdXBkYXRlX2FmdGVyX291
dHB1dChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJaWYgKGJ1cnN0X2xpbWl0KSB7CiAJCW5ldC0+
Y3duZCA9IChuZXQtPmZsaWdodF9zaXplICsgKGJ1cnN0X2xpbWl0ICogbmV0LT5tdHUpKTsKIAkJ
c2N0cF9lbmZvcmNlX2N3bmRfbGltaXQoJnN0Y2ItPmFzb2MsIG5ldCk7Ci0jaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAzMDAwCisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJU0RUX1BST0JFNShzY3Rw
LCBjd25kLCBuZXQsIGJsLAogCQkJICBzdGNiLT5hc29jLm15X3Z0YWcsCiAJCQkgICgoc3RjYi0+
c2N0cF9lcC0+c2N0cF9scG9ydCA8PCAxNikgfCAoc3RjYi0+cnBvcnQpKSwKQEAgLTE0MzMsMTIg
KzE0MzMsMTIgQEAgc3RhdGljIHZvaWQKIHNjdHBfY3duZF9uZXdfcnRjY190cmFuc21pc3Npb25f
YmVnaW5zKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJCQkgICAgICAgc3RydWN0IHNjdHBfbmV0
cyAqbmV0KQogewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9u
ID49IDgwMzAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJdWludDY0X3QgdnRhZywgcHJvYmVwb2ludDsKIAogI2VuZGlmCiAJaWYgKG5ldC0+
Y2NfbW9kLnJ0Y2MubGJ3KSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNE
X3ZlcnNpb24gPj0gODAzMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKIAkJLyogQ2xlYXIgdGhlIG9sZCBidy4uIHdlIHdlbnQgdG8gMCBpbi1m
bGlnaHQgKi8KIAkJdnRhZyA9IChuZXQtPnJ0dCA8PCAzMikgfCAoKCh1aW50MzJfdCkoc3RjYi0+
c2N0cF9lcC0+c2N0cF9scG9ydCkpIDw8IDE2KSB8CiAJCQkoc3RjYi0+cnBvcnQpOwpAQCAtMTQ5
NCwxMyArMTQ5NCwxMyBAQCBzdGF0aWMgdm9pZAogc2N0cF9zZXRfcnRjY19pbml0aWFsX2NjX3Bh
cmFtKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJCSAgICAgICBzdHJ1Y3Qgc2N0cF9uZXRzICpu
ZXQpCiB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0g
ODAzMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKIAl1aW50NjRfdCB2dGFnLCBwcm9iZXBvaW50OwogCiAjZW5kaWYKIAlzY3RwX3NldF9pbml0
aWFsX2NjX3BhcmFtKHN0Y2IsIG5ldCk7CiAJc3RjYi0+YXNvYy51c2VfcHJlY2lzZV90aW1lID0g
MTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDMw
MDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
CXByb2JlcG9pbnQgPSAoKCh1aW50NjRfdCluZXQtPmN3bmQpIDw8IDMyKTsKIAlwcm9iZXBvaW50
IHw9ICAoKDkgPDwgMTYpIHwgMCk7CiAJdnRhZyA9IChuZXQtPnJ0dCA8PCAzMikgfApAQCAtMTk2
Miw3ICsxOTYyLDcgQEAgaHRjcF9jb25nX3RpbWUoc3RydWN0IGh0Y3AgKmNhKQogc3RhdGljIGlu
bGluZSB1aW50MzJfdAogaHRjcF9jY291bnQoc3RydWN0IGh0Y3AgKmNhKQogewotCXJldHVybiAo
aHRjcF9jb25nX3RpbWUoY2EpL2NhLT5taW5SVFQpOworCXJldHVybiAoY2EtPm1pblJUVCA9PSAw
ID8gaHRjcF9jb25nX3RpbWUoY2EpIDogaHRjcF9jb25nX3RpbWUoY2EpL2NhLT5taW5SVFQpOwog
fQogCiBzdGF0aWMgaW5saW5lIHZvaWQKQEAgLTIwMDAsNyArMjAwMCw3IEBAIG1lYXN1cmVfcnR0
KHN0cnVjdCBzY3RwX25ldHMgKm5ldCkKIAlpZiAobmV0LT5mYXN0X3JldHJhbl9pcCA9PSAwICYm
IG5ldC0+c3N0aHJlc2ggPCAweEZGRkYgJiYgaHRjcF9jY291bnQoJm5ldC0+Y2NfbW9kLmh0Y3Bf
Y2EpID4gMykgewogCQlpZiAobmV0LT5jY19tb2QuaHRjcF9jYS5tYXhSVFQgPCBuZXQtPmNjX21v
ZC5odGNwX2NhLm1pblJUVCkKIAkJCW5ldC0+Y2NfbW9kLmh0Y3BfY2EubWF4UlRUID0gbmV0LT5j
Y19tb2QuaHRjcF9jYS5taW5SVFQ7Ci0JCWlmIChuZXQtPmNjX21vZC5odGNwX2NhLm1heFJUVCA8
IHNydHQgJiYgc3J0dCA8PSBuZXQtPmNjX21vZC5odGNwX2NhLm1heFJUVCtNU0VDX1RPX1RJQ0tT
KDIwKSkKKwkJaWYgKG5ldC0+Y2NfbW9kLmh0Y3BfY2EubWF4UlRUIDwgc3J0dCAmJiBzcnR0IDw9
IG5ldC0+Y2NfbW9kLmh0Y3BfY2EubWF4UlRUK3NjdHBfbXNlY3NfdG9fdGlja3MoMjApKQogCQkJ
bmV0LT5jY19tb2QuaHRjcF9jYS5tYXhSVFQgPSBzcnR0OwogCX0KIH0KQEAgLTIwNjAsNyArMjA2
MCw3IEBAIGh0Y3BfYmV0YV91cGRhdGUoc3RydWN0IGh0Y3AgKmNhLCB1aW50MzJfdCBtaW5SVFQs
IHVpbnQzMl90IG1heFJUVCkKIAkJfQogCX0KIAotCWlmIChjYS0+bW9kZXN3aXRjaCAmJiBtaW5S
VFQgPiAodWludDMyX3QpTVNFQ19UT19USUNLUygxMCkgJiYgbWF4UlRUKSB7CisJaWYgKGNhLT5t
b2Rlc3dpdGNoICYmIG1pblJUVCA+IHNjdHBfbXNlY3NfdG9fdGlja3MoMTApICYmIG1heFJUVCkg
ewogCQljYS0+YmV0YSA9IChtaW5SVFQ8PDcpL21heFJUVDsKIAkJaWYgKGNhLT5iZXRhIDwgQkVU
QV9NSU4pCiAJCQljYS0+YmV0YSA9IEJFVEFfTUlOOwpAQCAtMjQxMCw3ICsyNDEwLDcgQEAgc2N0
cF9odGNwX2N3bmRfdXBkYXRlX2FmdGVyX2Vjbl9lY2hvKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwK
IAogY29uc3Qgc3RydWN0IHNjdHBfY2NfZnVuY3Rpb25zIHNjdHBfY2NfZnVuY3Rpb25zW10gPSB7
CiB7Ci0jaWYgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19X
aW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX01JTkdXMzJfXykKIAlz
Y3RwX3NldF9pbml0aWFsX2NjX3BhcmFtLAogCXNjdHBfY3duZF91cGRhdGVfYWZ0ZXJfc2FjaywK
IAlzY3RwX2N3bmRfdXBkYXRlX2V4aXRfcGZfY29tbW9uLApAQCAtMjQzMSw3ICsyNDMxLDcgQEAg
Y29uc3Qgc3RydWN0IHNjdHBfY2NfZnVuY3Rpb25zIHNjdHBfY2NfZnVuY3Rpb25zW10gPSB7CiAj
ZW5kaWYKIH0sCiB7Ci0jaWYgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJz
cGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX01JTkdX
MzJfXykKIAlzY3RwX3NldF9pbml0aWFsX2NjX3BhcmFtLAogCXNjdHBfaHNfY3duZF91cGRhdGVf
YWZ0ZXJfc2FjaywKIAlzY3RwX2N3bmRfdXBkYXRlX2V4aXRfcGZfY29tbW9uLApAQCAtMjQ1Miw3
ICsyNDUyLDcgQEAgY29uc3Qgc3RydWN0IHNjdHBfY2NfZnVuY3Rpb25zIHNjdHBfY2NfZnVuY3Rp
b25zW10gPSB7CiAjZW5kaWYKIH0sCiB7Ci0jaWYgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVm
aW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVm
aW5lZChfX01JTkdXMzJfXykKIAlzY3RwX2h0Y3Bfc2V0X2luaXRpYWxfY2NfcGFyYW0sCiAJc2N0
cF9odGNwX2N3bmRfdXBkYXRlX2FmdGVyX3NhY2ssCiAJc2N0cF9jd25kX3VwZGF0ZV9leGl0X3Bm
X2NvbW1vbiwKQEAgLTI0NzMsNyArMjQ3Myw3IEBAIGNvbnN0IHN0cnVjdCBzY3RwX2NjX2Z1bmN0
aW9ucyBzY3RwX2NjX2Z1bmN0aW9uc1tdID0gewogI2VuZGlmCiB9LAogewotI2lmIGRlZmluZWQo
X19XaW5kb3dzX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZp
bmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19NSU5HVzMyX18pCiAJc2N0cF9zZXRfcnRjY19pbml0
aWFsX2NjX3BhcmFtLAogCXNjdHBfY3duZF91cGRhdGVfcnRjY19hZnRlcl9zYWNrLAogCXNjdHBf
Y3duZF91cGRhdGVfZXhpdF9wZl9jb21tb24sCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3Rw
bGliL25ldGluZXQvc2N0cF9jb25zdGFudHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5l
dC9zY3RwX2NvbnN0YW50cy5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXgg
ZjlhODdhNDdiMmExOGMxYThiMDcyNWQ1Y2ZhYTAzMzc1NzlmYzc4ZC4uYjkzMmQ3ZjE5MTQ5ZTEx
NmM2YzQzMTc1Y2YyMTViYWUxMmM1ZTc5NwotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGlu
ZXQvc2N0cF9jb25zdGFudHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0
cF9jb25zdGFudHMuaApAQCAtMzIsMTUgKzMyLDE1IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxzeXMvY2RlZnMu
aD4KLV9fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX2NvbnN0YW50cy5o
IDMyODQ3OCAyMDE4LTAxLTI3IDEzOjQ2OjU1WiB0dWV4ZW4gJCIpOworX19GQlNESUQoIiRGcmVl
QlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfY29uc3RhbnRzLmggMzYzNDQwIDIwMjAtMDctMjMg
MDE6MzU6MjRaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAogI2lmbmRlZiBfTkVUSU5FVF9TQ1RQX0NP
TlNUQU5UU19IXwogI2RlZmluZSBfTkVUSU5FVF9TQ1RQX0NPTlNUQU5UU19IXwogCi0jaWYgZGVm
aW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKSAmJiBkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiBleHRlcm4gdm9pZCBnZXR3aW50aW1lb2ZkYXkoc3RydWN0IHRp
bWV2YWwgKnR2KTsKICNlbmRpZgogCkBAIC00NzgsMTAgKzQ3OCwxNCBAQCBleHRlcm4gdm9pZCBn
ZXR3aW50aW1lb2ZkYXkoc3RydWN0IHRpbWV2YWwgKnR2KTsKICNkZWZpbmUgU0NUUF9TVEFURV9J
Tl9BQ0NFUFRfUVVFVUUgICAgICAweDEwMDAKICNkZWZpbmUgU0NUUF9TVEFURV9NQVNLCQkJMHgw
MDdmCiAKLSNkZWZpbmUgU0NUUF9HRVRfU1RBVEUoYXNvYykJKChhc29jKS0+c3RhdGUgJiBTQ1RQ
X1NUQVRFX01BU0spCi0jZGVmaW5lIFNDVFBfU0VUX1NUQVRFKGFzb2MsIG5ld3N0YXRlKSAgKChh
c29jKS0+c3RhdGUgPSAoKGFzb2MpLT5zdGF0ZSAmIH5TQ1RQX1NUQVRFX01BU0spIHwgIG5ld3N0
YXRlKQotI2RlZmluZSBTQ1RQX0NMRUFSX1NVQlNUQVRFKGFzb2MsIHN1YnN0YXRlKSAoKGFzb2Mp
LT5zdGF0ZSAmPSB+c3Vic3RhdGUpCi0jZGVmaW5lIFNDVFBfQUREX1NVQlNUQVRFKGFzb2MsIHN1
YnN0YXRlKSAoKGFzb2MpLT5zdGF0ZSB8PSBzdWJzdGF0ZSkKKyNkZWZpbmUgU0NUUF9HRVRfU1RB
VEUoX3N0Y2IpIFwKKwkoKF9zdGNiKS0+YXNvYy5zdGF0ZSAmIFNDVFBfU1RBVEVfTUFTSykKKyNk
ZWZpbmUgU0NUUF9TRVRfU1RBVEUoX3N0Y2IsIF9zdGF0ZSkgXAorCXNjdHBfc2V0X3N0YXRlKF9z
dGNiLCBfc3RhdGUpCisjZGVmaW5lIFNDVFBfQ0xFQVJfU1VCU1RBVEUoX3N0Y2IsIF9zdWJzdGF0
ZSkgXAorCShfc3RjYiktPmFzb2Muc3RhdGUgJj0gfihfc3Vic3RhdGUpCisjZGVmaW5lIFNDVFBf
QUREX1NVQlNUQVRFKF9zdGNiLCBfc3Vic3RhdGUpIFwKKwlzY3RwX2FkZF9zdWJzdGF0ZShfc3Rj
YiwgX3N1YnN0YXRlKQogCiAvKiBTQ1RQIHJlYWNoYWJpbGl0eSBzdGF0ZSBmb3IgZWFjaCBhZGRy
ZXNzICovCiAjZGVmaW5lIFNDVFBfQUREUl9SRUFDSEFCTEUJCTB4MDAxCkBAIC01NDcsMjAgKzU1
MSwxOSBAQCBleHRlcm4gdm9pZCBnZXR3aW50aW1lb2ZkYXkoc3RydWN0IHRpbWV2YWwgKnR2KTsK
ICNkZWZpbmUgU0NUUF9USU1FUl9UWVBFX0FTQ09ORgkJMTAKICNkZWZpbmUgU0NUUF9USU1FUl9U
WVBFX1NIVVRET1dOR1VBUkQJMTEKICNkZWZpbmUgU0NUUF9USU1FUl9UWVBFX0FVVE9DTE9TRQkx
MgotI2RlZmluZSBTQ1RQX1RJTUVSX1RZUEVfRVZFTlRXQUtFCTEzCi0jZGVmaW5lIFNDVFBfVElN
RVJfVFlQRV9TVFJSRVNFVCAgICAgICAgMTQKLSNkZWZpbmUgU0NUUF9USU1FUl9UWVBFX0lOUEtJ
TEwgICAgICAgICAxNQotI2RlZmluZSBTQ1RQX1RJTUVSX1RZUEVfQVNPQ0tJTEwgICAgICAgIDE2
Ci0jZGVmaW5lIFNDVFBfVElNRVJfVFlQRV9BRERSX1dRICAgICAgICAgMTcKLSNkZWZpbmUgU0NU
UF9USU1FUl9UWVBFX1BSSU1fREVMRVRFRCAgICAxOAorI2RlZmluZSBTQ1RQX1RJTUVSX1RZUEVf
U1RSUkVTRVQJMTMKKyNkZWZpbmUgU0NUUF9USU1FUl9UWVBFX0lOUEtJTEwJCTE0CisjZGVmaW5l
IFNDVFBfVElNRVJfVFlQRV9BU09DS0lMTAkxNQorI2RlZmluZSBTQ1RQX1RJTUVSX1RZUEVfQURE
Ul9XUQkJMTYKKyNkZWZpbmUgU0NUUF9USU1FUl9UWVBFX1BSSU1fREVMRVRFRAkxNwogLyogYWRk
IG5ldyB0aW1lcnMgaGVyZSAtIGFuZCBpbmNyZW1lbnQgTEFTVCAqLwotI2RlZmluZSBTQ1RQX1RJ
TUVSX1RZUEVfTEFTVCAgICAgICAgICAgIDE5CisjZGVmaW5lIFNDVFBfVElNRVJfVFlQRV9MQVNU
CQkxOAogCiAjZGVmaW5lIFNDVFBfSVNfVElNRVJfVFlQRV9WQUxJRCh0KQkoKCh0KSA+IFNDVFBf
VElNRVJfVFlQRV9OT05FKSAmJiBcCiAJCQkJCSAoKHQpIDwgU0NUUF9USU1FUl9UWVBFX0xBU1Qp
KQogCiAKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIC8qIE51bWJlciBvZiB0aWNrcyB0byBydW4gdGhlIG1h
aW4gdGltZXIgYXQgaW4gbXNlYyAqLwogI2RlZmluZSBTQ1RQX01BSU5fVElNRVJfREVGQVVMVAkJ
MTAKICNlbmRpZgpAQCAtNTgzLDIyICs1ODYsNyBAQCBleHRlcm4gdm9pZCBnZXR3aW50aW1lb2Zk
YXkoc3RydWN0IHRpbWV2YWwgKnR2KTsKICAqIG51bWJlciBvZiBjbHVzdGVycyBhcyBhIGJhc2Uu
IFRoaXMgd2F5IGhpZ2ggYmFuZHdpZHRoIGVudmlyb25tZW50cyB3aWxsCiAgKiBub3QgZ2V0IGlt
cGFjdGVkIGJ5IHRoZSBsb3dlciBiYW5kd2lkdGggc2VuZGluZyBhIGJ1bmNoIG9mIDEgYnl0ZSBj
aHVua3MKICAqLwotI2lmZGVmIF9fUGFuZGFfXwotI2RlZmluZSBTQ1RQX0FTT0NfTUFYX0NIVU5L
U19PTl9RVUVVRSAxMDI0MAotI2Vsc2UKICNkZWZpbmUgU0NUUF9BU09DX01BWF9DSFVOS1NfT05f
UVVFVUUgNTEyCi0jZW5kaWYKLQotCi0vKiBUaGUgY29udmVyc2lvbiBmcm9tIHRpbWUgdG8gdGlj
a3MgYW5kIHZpY2UgdmVyc2EgaXMgZG9uZSBieSByb3VuZGluZwotICogdXB3YXJkcy4gVGhpcyB3
YXkgd2UgY2FuIHRlc3QgaW4gdGhlIGNvZGUgdGhlIHRpbWUgdG8gYmUgcG9zaXRpdmUgYW5kCi0g
KiBrbm93IHRoYXQgdGhpcyBjb3JyZXNwb25kcyB0byBhIHBvc2l0aXZlIG51bWJlciBvZiB0aWNr
cy4KLSAqLwotI2RlZmluZSBNU0VDX1RPX1RJQ0tTKHgpICgoaHogPT0gMTAwMCkgPyB4IDogKCgo
KHgpICogaHopICsgOTk5KSAvIDEwMDApKQotI2RlZmluZSBUSUNLU19UT19NU0VDKHgpICgoaHog
PT0gMTAwMCkgPyB4IDogKCgoKHgpICogMTAwMCkgKyAoaHogLSAxKSkgLyBoeikpCi0KLSNkZWZp
bmUgU0VDX1RPX1RJQ0tTKHgpICgoeCkgKiBoeikKLSNkZWZpbmUgVElDS1NfVE9fU0VDKHgpICgo
KHgpICsgKGh6IC0gMSkpIC8gaHopCiAKIC8qCiAgKiBCYXNpY2FsbHkgdGhlIG1pbmltdW0gYW1v
dW50IG9mIHRpbWUgYmVmb3JlIEkgZG8gYSBlYXJseSBGUi4gTWFraW5nIHRoaXMKQEAgLTc2NSw3
ICs3NTMsMTEgQEAgZXh0ZXJuIHZvaWQgZ2V0d2ludGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICp0
dik7CiAjZGVmaW5lIFNDVFBfREVGQVVMVF9TUExJVF9QT0lOVF9NSU4gMjkwNAogCiAvKiBNYXhp
bXVtIGxlbmd0aCBvZiBkaWFnbm9zdGljIGluZm9ybWF0aW9uIGluIGVycm9yIGNhdXNlcyAqLwor
I2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNkZWZpbmUgU0NUUF9ESUFHX0lORk9fTEVOIDI1
NgorI2Vsc2UKICNkZWZpbmUgU0NUUF9ESUFHX0lORk9fTEVOIDEyOAorI2VuZGlmCiAKIC8qIEFC
T1JUIENPREVTIGFuZCBvdGhlciB0ZWxsLXRhbGUgbG9jYXRpb24KICAqIGNvZGVzIGFyZSBnZW5l
cmF0ZWQgYnkgYWRkaW5nIHRoZSBiZWxvdwpAQCAtNzgzLDkgKzc3NSw4IEBAIGV4dGVybiB2b2lk
IGdldHdpbnRpbWVvZmRheShzdHJ1Y3QgdGltZXZhbCAqdHYpOwogI2RlZmluZSBTQ1RQX0ZST01f
U0NUUF9BU0NPTkYgICAgICAgMHg4MDAwMDAwMAogI2RlZmluZSBTQ1RQX0ZST01fU0NUUF9PVVRQ
VVQgICAgICAgMHg5MDAwMDAwMAogI2RlZmluZSBTQ1RQX0ZST01fU0NUUF9QRUVMT0ZGICAgICAg
MHhhMDAwMDAwMAotI2RlZmluZSBTQ1RQX0ZST01fU0NUUF9QQU5EQSAgICAgICAgMHhiMDAwMDAw
MAotI2RlZmluZSBTQ1RQX0ZST01fU0NUUF9TWVNDVEwgICAgICAgMHhjMDAwMDAwMAotI2RlZmlu
ZSBTQ1RQX0ZST01fU0NUUF9DQ19GVU5DVElPTlMgMHhkMDAwMDAwMAorI2RlZmluZSBTQ1RQX0ZS
T01fU0NUUF9TWVNDVEwgICAgICAgMHhiMDAwMDAwMAorI2RlZmluZSBTQ1RQX0ZST01fU0NUUF9D
Q19GVU5DVElPTlMgMHhjMDAwMDAwMAogCiAvKiBMb2NhdGlvbiBJRCdzICovCiAjZGVmaW5lIFND
VFBfTE9DXzEgIDB4MDAwMDAwMDEKQEAgLTgyMyw3ICs4MTQsOCBAQCBleHRlcm4gdm9pZCBnZXR3
aW50aW1lb2ZkYXkoc3RydWN0IHRpbWV2YWwgKnR2KTsKICNkZWZpbmUgU0NUUF9MT0NfMzMgMHgw
MDAwMDAyMQogI2RlZmluZSBTQ1RQX0xPQ18zNCAweDAwMDAwMDIyCiAjZGVmaW5lIFNDVFBfTE9D
XzM1IDB4MDAwMDAwMjMKLQorI2RlZmluZSBTQ1RQX0xPQ18zNiAweDAwMDAwMDI0CisjZGVmaW5l
IFNDVFBfTE9DXzM3IDB4MDAwMDAwMjUKIAogLyogRnJlZSBhc3NvYyBjb2RlcyAqLwogI2RlZmlu
ZSBTQ1RQX05PUk1BTF9QUk9DICAgICAgMApAQCAtODcwLDcgKzg2Miw3IEBAIGV4dGVybiB2b2lk
IGdldHdpbnRpbWVvZmRheShzdHJ1Y3QgdGltZXZhbCAqdHYpOwogI2RlZmluZSBTQ1RQX0NIVU5L
UVVFVUVfU0NBTEUgMTAKICNlbmRpZgogCi0jaWZkZWYgX19GcmVlQlNEX18KKyNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogLyogY2xvY2sgdmFyaWFu
Y2UgaXMgMSBtcyAqLwogI2RlZmluZSBTQ1RQX0NMT0NLX0dSQU5VTEFSSVRZCTEKICNlbHNlCkBA
IC05NzcsNyArOTY5LDcgQEAgZXh0ZXJuIHZvaWQgZ2V0d2ludGltZW9mZGF5KHN0cnVjdCB0aW1l
dmFsICp0dik7CiAKIC8qLQogICogZGVmaW5lcyBmb3Igc29ja2V0IGxvY2sgc3RhdGVzLgotICog
VXNlZCBieSBfX0FQUExFX18gYW5kIFNDVFBfU09fTE9DS19URVNUSU5HCisgKiBVc2VkIGJ5IF9f
QVBQTEVfXwogICovCiAjZGVmaW5lIFNDVFBfU09fTE9DS0VECQkxCiAjZGVmaW5lIFNDVFBfU09f
Tk9UX0xPQ0tFRAkwCkBAIC0xMDA0LDggKzk5NiwxMSBAQCBleHRlcm4gdm9pZCBnZXR3aW50aW1l
b2ZkYXkoc3RydWN0IHRpbWV2YWwgKnR2KTsKICAgICAoKCgodWludDhfdCAqKSYoYSktPnNfYWRk
cilbMF0gPT0gMTY5KSAmJiBcCiAgICAgICgoKHVpbnQ4X3QgKikmKGEpLT5zX2FkZHIpWzFdID09
IDI1NCkpCiAKKy8qIE1heGltdW0gc2l6ZSBvZiBvcHR2YWwgZm9yIElQUFJPVE9fU0NUUCBsZXZl
bCBzb2NrZXQgb3B0aW9ucy4gKi8KKyNkZWZpbmUgU0NUUF9TT0NLRVRfT1BUSU9OX0xJTUlUICg2
NCAqIDEwMjQpCisKICNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi0jaWYgZGVmaW5lZChfX1Vz
ZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogI2RlZmluZSBTQ1RQX0dF
VFRJTUVfVElNRVZBTCh4KQlnZXR3aW50aW1lb2ZkYXkoeCkKICNkZWZpbmUgU0NUUF9HRVRQVElN
RV9USU1FVkFMKHgpIGdldHdpbnRpbWVvZmRheSh4KSAvKiB0aGlzIGRvZXNuJ3Qgc2VlbSB0byBl
dmVyIGJlIHVzZWQuLiAqLwogI2Vsc2UKQEAgLTEwMjksMTEgKzEwMjQsMTEgQEAgZG8geyBcCiAJ
fSBcCiB9IHdoaWxlICgwKQogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChf
X1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pIHx8IGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjZGVm
aW5lIHNjdHBfc293d2FrZXVwX2xvY2tlZChpbnAsIHNvKSBcCiBkbyB7IFwKIAlpZiAoaW5wLT5z
Y3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfRE9OVF9XQUtFKSB7IFwKLSAgICAgICAgICAgICAg
ICBTT0NLQlVGX1VOTE9DSygmKChzbyktPnNvX3NuZCkpOyBcCisJCVNPQ0tCVUZfVU5MT0NLKCYo
KHNvKS0+c29fc25kKSk7IFwKIAkJaW5wLT5zY3RwX2ZsYWdzIHw9IFNDVFBfUENCX0ZMQUdTX1dB
S0VPVVRQVVQ7IFwKIAl9IGVsc2UgeyBcCiAJCXNvd3dha2V1cF9sb2NrZWQoc28pOyBcCkBAIC0x
MDQzLDcgKzEwMzgsNyBAQCBkbyB7IFwKICNkZWZpbmUgc2N0cF9zb3d3YWtldXBfbG9ja2VkKGlu
cCwgc28pIFwKIGRvIHsgXAogCWlmIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19E
T05UX1dBS0UpIHsgXAotICAgICAgICAgICAgICAgIFNPQ0tCVUZfVU5MT0NLKCYoKHNvKS0+c29f
c25kKSk7IFwKKwkJU09DS0JVRl9VTkxPQ0soJigoc28pLT5zb19zbmQpKTsgXAogCQlpbnAtPnNj
dHBfZmxhZ3MgfD0gU0NUUF9QQ0JfRkxBR1NfV0FLRU9VVFBVVDsgXAogCX0gZWxzZSB7IFwKIAkJ
c293d2FrZXVwKHNvKTsgXApAQCAtMTA2MCwxMiArMTA1NSwxMiBAQCBkbyB7IFwKIAl9IFwKIH0g
d2hpbGUgKDApCiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fV2luZG93
c19fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
fHwgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNkZWZpbmUgc2N0
cF9zb3J3YWtldXBfbG9ja2VkKGlucCwgc28pIFwKIGRvIHsgXAogCWlmIChpbnAtPnNjdHBfZmxh
Z3MgJiBTQ1RQX1BDQl9GTEFHU19ET05UX1dBS0UpIHsgXAogCQlpbnAtPnNjdHBfZmxhZ3MgfD0g
U0NUUF9QQ0JfRkxBR1NfV0FLRUlOUFVUOyBcCi0gICAgICAgICAgICAgICAgU09DS0JVRl9VTkxP
Q0soJigoc28pLT5zb19yY3YpKTsgXAorCQlTT0NLQlVGX1VOTE9DSygmKChzbyktPnNvX3Jjdikp
OyBcCiAJfSBlbHNlIHsgXAogCQlzb3J3YWtldXBfbG9ja2VkKHNvKTsgXAogCX0gXApAQCAtMTA3
Niw3ICsxMDcxLDcgQEAgZG8geyBcCiBkbyB7IFwKIAlpZiAoaW5wLT5zY3RwX2ZsYWdzICYgU0NU
UF9QQ0JfRkxBR1NfRE9OVF9XQUtFKSB7IFwKIAkJaW5wLT5zY3RwX2ZsYWdzIHw9IFNDVFBfUENC
X0ZMQUdTX1dBS0VJTlBVVDsgXAotICAgICAgICAgICAgICAgIFNPQ0tCVUZfVU5MT0NLKCYoKHNv
KS0+c29fcmN2KSk7IFwKKwkJU09DS0JVRl9VTkxPQ0soJigoc28pLT5zb19yY3YpKTsgXAogCX0g
ZWxzZSB7IFwKIAkJc29yd2FrZXVwKHNvKTsgXAogCX0gXApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIv
dXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfY3JjMzIuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0
aW5ldC9zY3RwX2NyYzMyLmMKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCAw
YmUwNzk1Y2YyYTZhODVhMDQ3YTRmODRlMzhkZjM3NjE5ZjBjNjViLi4wYjVhMDZlMDY3NjBmNDZk
ZmQwYTQxM2EyYjAwNzQwMzE5Nzg1MDAzCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5l
dC9zY3RwX2NyYzMyLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfY3Jj
MzIuYwpAQCAtMzIsMjMgKzMyLDIyIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLV9fRkJT
RElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX2NyYzMyLmMgMzI3MjAwIDIwMTct
MTItMjYgMTI6MzU6MDJaIHR1ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lz
L25ldGluZXQvc2N0cF9jcmMzMi5jIDM2MjQ5OCAyMDIwLTA2LTIyIDE0OjM2OjE0WiB0dWV4ZW4g
JCIpOwogCiAjaW5jbHVkZSAib3B0X3NjdHAuaCIKIAotI2lmZGVmIFNDVFAKLSNpbmNsdWRlIDxu
ZXRpbmV0L3NjdHBfb3MuaD4KLSNpbmNsdWRlIDxuZXRpbmV0L3NjdHAuaD4KLSNpbmNsdWRlIDxu
ZXRpbmV0L3NjdHBfY3JjMzIuaD4KLSNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfcGNiLmg+Ci0jZWxz
ZQogI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgogI2luY2x1ZGUgPHN5cy9zeXN0bS5oPgorI2luY2x1
ZGUgPHN5cy9nc2JfY3JjMzIuaD4KICNpbmNsdWRlIDxzeXMvbWJ1Zi5oPgogCisjaW5jbHVkZSA8
bmV0aW5ldC9zY3RwLmg+CiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX2NyYzMyLmg+CisjaWYgZGVm
aW5lZChTQ1RQKSB8fCBkZWZpbmVkKFNDVFBfU1VQUE9SVCkKKyNpbmNsdWRlIDxuZXRpbmV0L3Nj
dHBfb3MuaD4KKyNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfcGNiLmg+CiAjZW5kaWYKICNlbHNlCiAj
aW5jbHVkZSA8bmV0aW5ldC9zY3RwX29zLmg+CkBAIC01Nyw3ICs1Niw3IEBAIF9fRkJTRElEKCIk
RnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX2NyYzMyLmMgMzI3MjAwIDIwMTctMTItMjYg
MTI6MzU6MDJaIHR1CiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX3BjYi5oPgogI2VuZGlmCiAKLSNp
ZiAhZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiAhKGRlZmluZWQoX19GcmVlQlNEX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pKQogLyoqCiAgKgogICogUm91dGluZSBEZXNjcmlwdGlvbjoK
QEAgLTc5Niw4ICs3OTUsMTEgQEAgc2N0cF9jYWxjdWxhdGVfY2tzdW0oc3RydWN0IG1idWYgKm0s
IHVpbnQzMl90IG9mZnNldCkKIAlyZXR1cm4gKGJhc2UpOwogfQogCi0jaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykKLSNpZmRlZiBTQ1RQCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiBkZWZpbmVkKFNDVFApIHx8IGRlZmluZWQoU0NUUF9TVVBQ
T1JUKQorCitWTkVUX0RFRklORShzdHJ1Y3Qgc2N0cF9iYXNlX2luZm8sIHN5c3RlbV9iYXNlX2lu
Zm8pOworCiAvKgogICogQ29tcHV0ZSBhbmQgaW5zZXJ0IHRoZSBTQ1RQIGNoZWNrc3VtIGluIG5l
dHdvcmsgYnl0ZSBvcmRlciBmb3IgYSBnaXZlbgogICogbWJ1ZiBjaGFpbiBtIHdoaWNoIGNvbnRh
aW5zIGFuIFNDVFAgcGFja2V0IHN0YXJ0aW5nIGF0IG9mZnNldC4KQEAgLTgxMiwxNyArODE0LDE3
IEBAIHNjdHBfZGVsYXllZF9ja3N1bShzdHJ1Y3QgbWJ1ZiAqbSwgdWludDMyX3Qgb2Zmc2V0KQog
CVNDVFBfU1RBVF9JTkNSKHNjdHBzX3NlbmRzd2NyYyk7CiAJb2Zmc2V0ICs9IG9mZnNldG9mKHN0
cnVjdCBzY3RwaGRyLCBjaGVja3N1bSk7CiAKLQlpZiAob2Zmc2V0ICsgc2l6ZW9mKHVpbnQzMl90
KSA+ICh1aW50MzJfdCkobS0+bV9sZW4pKSB7CisJaWYgKG9mZnNldCArIHNpemVvZih1aW50MzJf
dCkgPiAodWludDMyX3QpKG0tPm1fcGt0aGRyLmxlbikpIHsKICNpZmRlZiBJTlZBUklBTlRTCi0J
CXBhbmljKCJzY3RwX2RlbGF5ZWRfY2tzdW0oKTogbS0+bV9sZW46ICVkLCBvZmZzZXQ6ICV1LiIs
Ci0JCSAgICAgIG0tPm1fbGVuLCBvZmZzZXQpOworCQlwYW5pYygic2N0cF9kZWxheWVkX2Nrc3Vt
KCk6IG0tPm1fcGt0aGRyLmxlbjogJWQsIG9mZnNldDogJXUuIiwKKwkJICAgICAgbS0+bV9wa3Ro
ZHIubGVuLCBvZmZzZXQpOwogI2Vsc2UKLQkJU0NUUF9QUklOVEYoInNjdHBfZGVsYXllZF9ja3N1
bSgpOiBtLT5tX2xlbjogJWQsIG9mZnNldDogJXUuXG4iLAotCQkgICAgICAgICAgICBtLT5tX2xl
biwgb2Zmc2V0KTsKKwkJU0NUUF9QUklOVEYoInNjdHBfZGVsYXllZF9ja3N1bSgpOiBtLT5tX3Br
dGhkci5sZW46ICVkLCBvZmZzZXQ6ICV1LlxuIiwKKwkJICAgICAgICAgICAgbS0+bV9wa3RoZHIu
bGVuLCBvZmZzZXQpOwogI2VuZGlmCiAJCXJldHVybjsKIAl9Ci0JKih1aW50MzJfdCAqKShtLT5t
X2RhdGEgKyBvZmZzZXQpID0gY2hlY2tzdW07CisJbV9jb3B5YmFjayhtLCAoaW50KW9mZnNldCwg
KGludClzaXplb2YodWludDMyX3QpLCAoY2FkZHJfdCkmY2hlY2tzdW0pOwogfQogI2VuZGlmCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2NyYzMy
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9jcmMzMi5oCm9sZCBtb2RlIDEw
MDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggYWMyMGMxMDM0MWZhMTkxNjcxNTAzYWIzM2EyYjM5
M2Q2YmUzNGNlNy4uNWU3NmZmMjFiZjk1ZmJhYmI0MmViNDU1N2VmYjhkMTc2MzVmZmFjNwotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAv
dXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9jcmMzMi5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2NyYzMyLmgKQEAgLTMyLDkgKzMyLDkgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZkZWYgX19GcmVlQlNEX18K
KyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lu
Y2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0
L3NjdHBfY3JjMzIuaCAzMjcyMDAgMjAxNy0xMi0yNiAxMjozNTowMlogdHVleGVuICQiKTsKK19f
RkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX2NyYzMyLmggMzYyMzM4IDIw
MjAtMDYtMTggMTk6MzI6MzRaIG1hcmtqICQiKTsKICNlbmRpZgogCiAjaWZuZGVmIF9ORVRJTkVU
X1NDVFBfQ1JDMzJfSF8KQEAgLTQyLDggKzQyLDggQEAgX19GQlNESUQoIiRGcmVlQlNEOiBoZWFk
L3N5cy9uZXRpbmV0L3NjdHBfY3JjMzIuaCAzMjcyMDAgMjAxNy0xMi0yNiAxMjozNTowMlogdHUK
IAogI2lmIGRlZmluZWQoX0tFUk5FTCkKIHVpbnQzMl90IHNjdHBfY2FsY3VsYXRlX2Nrc3VtKHN0
cnVjdCBtYnVmICosIHVpbnQzMl90KTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQotI2lmZGVm
IFNDVFAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQorI2lmIGRlZmluZWQoU0NUUCkgfHwgZGVmaW5lZChTQ1RQX1NVUFBPUlQpCiB2b2lkIHNjdHBf
ZGVsYXllZF9ja3N1bShzdHJ1Y3QgbWJ1ZiAqLCB1aW50MzJfdCBvZmZzZXQpOwogI2VuZGlmCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2hlYWRl
ci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3Jz
Y3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfaGVhZGVyLmgKb2xkIG1vZGUg
MTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA2MDM1ZDljYmRiYmRmYjkxZjI1Yjk2NzQyMmQ4
YTRhMDdmOWI2NGEzLi42MDI5MjFkMGUyYmQwZjVjNDE5M2RkZjkzOGQ4ZDZhMTM4ZGYxNTk3Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0
cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2hlYWRlci5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3Rw
bGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2hlYWRlci5oCkBAIC0zMiw3ICszMiw3IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmZGVmIF9fRnJlZUJT
RF9fCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
ICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KIF9fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0
aW5ldC9zY3RwX2hlYWRlci5oIDMwOTY4MiAyMDE2LTEyLTA3IDE5OjMwOjU5WiB0dWV4ZW4gJCIp
OwogI2VuZGlmCkBAIC00MCwxNiArNDAsMTYgQEAgX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5
cy9uZXRpbmV0L3NjdHBfaGVhZGVyLmggMzA5NjgyIDIwMTYtMTItMDcgMTk6MzA6NTlaIHQKICNp
Zm5kZWYgX05FVElORVRfU0NUUF9IRUFERVJfSF8KICNkZWZpbmUgX05FVElORVRfU0NUUF9IRUFE
RVJfSF8KIAotI2lmIGRlZmluZWQoX19XaW5kb3dzX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAjaW5jbHVkZSA8cGFja29uLmg+CiAjZW5kaWYKLSNpZiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9vc19XaW5kb3dzKQorI2lmICFkZWZpbmVkKF9XSU4zMikKICNpbmNsdWRlIDxzeXMvdGltZS5o
PgogI2VuZGlmCiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwLmg+CiAjaW5jbHVkZSA8bmV0aW5ldC9z
Y3RwX2NvbnN0YW50cy5oPgogCi0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykK
KyNpZiAhZGVmaW5lZChfV0lOMzIpCiAjZGVmaW5lIFNDVFBfUEFDS0VEIF9fYXR0cmlidXRlX18o
KHBhY2tlZCkpCiAjZWxzZQogI3ByYWdtYSBwYWNrIChwdXNoLCAxKQpAQCAtNjAxLDEwICs2MDEs
MTAgQEAgc3RydWN0IHNjdHBfYXV0aF9jaHVuayB7CiAjZGVmaW5lIFNDVFBfTUlOX1Y0X09WRVJI
RUFEIChzaXplb2Yoc3RydWN0IGlwKSArIFwKIAkJCSAgICAgIHNpemVvZihzdHJ1Y3Qgc2N0cGhk
cikpCiAKLSNpZiBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPHBhY2tvZmYuaD4KICNlbmRpZgotI2lm
IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikgJiYg
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI3ByYWdtYSBwYWNrKHBvcCkKICNlbmRpZgogI3VuZGVm
IFNDVFBfUEFDS0VECmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0
cF9pbmRhdGEuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2luZGF0YS5jCm9s
ZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggMmZiYWMyZmYwYmY3YzkyOTIwZGRk
MGM1ZWUwNjFmYmZlMGZjM2ZiNC4uODA2ZjYzMDkyN2FhODg0NzY2YzYxMTU0NzUwYzA3YWI2ZjU3
YWEzZAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9pbmRhdGEuYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAv
dXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9pbmRhdGEuYwpAQCAtMzIsMTMgKzMy
LDEzIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmZGVm
IF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLV9fRkJTRElEKCIkRnJlZUJTRDogaGVh
ZC9zeXMvbmV0aW5ldC9zY3RwX2luZGF0YS5jIDMzMzk3OSAyMDE4LTA1LTIxIDE0OjUxOjIwWiB0
dWV4ZW4gJCIpOworX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfaW5k
YXRhLmMgMzYzNDQwIDIwMjAtMDctMjMgMDE6MzU6MjRaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAog
I2luY2x1ZGUgPG5ldGluZXQvc2N0cF9vcy5oPgotI2lmZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxz
eXMvcHJvYy5oPgogI2VuZGlmCiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX3Zhci5oPgpAQCAtNTUs
NyArNTUsNyBAQCBfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9pbmRh
dGEuYyAzMzM5NzkgMjAxOC0wNS0yMSAxNDo1MToyMFogdAogI2luY2x1ZGUgPG5ldGluZXQvc2N0
cF9ic2RfYWRkci5oPgogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9pbnB1dC5oPgogI2luY2x1ZGUg
PG5ldGluZXQvc2N0cF9jcmMzMi5oPgotI2lmZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxuZXRpbmV0
L3NjdHBfbG9ja19ic2QuaD4KICNlbmRpZgogLyoKQEAgLTcyLDcgKzcyLDcgQEAgc2N0cF9hZGRf
Y2hrX3RvX2NvbnRyb2woc3RydWN0IHNjdHBfcXVldWVkX3RvX3JlYWQgKmNvbnRyb2wsCiAJCQlz
dHJ1Y3Qgc2N0cF9zdHJlYW1faW4gKnN0cm0sCiAJCQlzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJ
CQlzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKLQkJCXN0cnVjdCBzY3RwX3RtaXRfY2h1
bmsgKmNoaywgaW50IGxvY2tfaGVsZCk7CisJCQlzdHJ1Y3Qgc2N0cF90bWl0X2NodW5rICpjaGss
IGludCBob2xkX3Jsb2NrKTsKIAogCiB2b2lkCkBAIC0xNjksNiArMTY5LDkgQEAgc2N0cF9idWls
ZF9yZWFkcV9lbnRyeShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJcmVhZF9xdWV1ZV9lLT5kYXRh
ID0gZG07CiAJcmVhZF9xdWV1ZV9lLT5zdGNiID0gc3RjYjsKIAlyZWFkX3F1ZXVlX2UtPnBvcnRf
ZnJvbSA9IHN0Y2ItPnJwb3J0OworCWlmIChzdGNiLT5hc29jLnN0YXRlICYgU0NUUF9TVEFURV9B
Qk9VVF9UT19CRV9GUkVFRCkgeworCQlyZWFkX3F1ZXVlX2UtPmRvX25vdF9yZWZfc3RjYiA9IDE7
CisJfQogZmFpbGVkX2J1aWxkOgogCXJldHVybiAocmVhZF9xdWV1ZV9lKTsKIH0KQEAgLTE4MCw3
ICsxODMsNyBAQCBzY3RwX2J1aWxkX2N0bF9uY2h1bmsoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwg
c3RydWN0IHNjdHBfc25kcmN2aW5mbyAqc2luZm8pCiAJc3RydWN0IHNjdHBfc25kcmN2aW5mbyAq
b3V0aW5mbzsKIAlzdHJ1Y3Qgc2N0cF9yY3ZpbmZvICpyY3ZpbmZvOwogCXN0cnVjdCBzY3RwX254
dGluZm8gKm54dGluZm87Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lm
IGRlZmluZWQoX1dJTjMyKQogCVdTQUNNU0dIRFIgKmNtaDsKICNlbHNlCiAJc3RydWN0IGNtc2do
ZHIgKmNtaDsKQEAgLTIyOSw3ICsyMzIsNyBAQCBzY3RwX2J1aWxkX2N0bF9uY2h1bmsoc3RydWN0
IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfc25kcmN2aW5mbyAqc2luZm8pCiAJU0NUUF9C
VUZfTEVOKHJldCkgPSAwOwogCiAJLyogV2UgbmVlZCBhIENNU0cgaGVhZGVyIGZvbGxvd2VkIGJ5
IHRoZSBzdHJ1Y3QgKi8KLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYg
ZGVmaW5lZChfV0lOMzIpCiAJY21oID0gbXRvZChyZXQsIFdTQUNNU0dIRFIgKik7CiAjZWxzZQog
CWNtaCA9IG10b2QocmV0LCBzdHJ1Y3QgY21zZ2hkciAqKTsKQEAgLTI1Miw3ICsyNTUsNyBAQCBz
Y3RwX2J1aWxkX2N0bF9uY2h1bmsoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBf
c25kcmN2aW5mbyAqc2luZm8pCiAJCXJjdmluZm8tPnJjdl9jdW10c24gPSBzaW5mby0+c2luZm9f
Y3VtdHNuOwogCQlyY3ZpbmZvLT5yY3ZfY29udGV4dCA9IHNpbmZvLT5zaW5mb19jb250ZXh0Owog
CQlyY3ZpbmZvLT5yY3ZfYXNzb2NfaWQgPSBzaW5mby0+c2luZm9fYXNzb2NfaWQ7Ci0jaWYgZGVm
aW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogCQljbWgg
PSAoV1NBQ01TR0hEUiAqKSgoY2FkZHJfdCljbWggKyBDTVNHX1NQQUNFKHNpemVvZihzdHJ1Y3Qg
c2N0cF9yY3ZpbmZvKSkpOwogI2Vsc2UKIAkJY21oID0gKHN0cnVjdCBjbXNnaGRyICopKChjYWRk
cl90KWNtaCArIENNU0dfU1BBQ0Uoc2l6ZW9mKHN0cnVjdCBzY3RwX3JjdmluZm8pKSk7CkBAIC0y
NzgsNyArMjgxLDcgQEAgc2N0cF9idWlsZF9jdGxfbmNodW5rKHN0cnVjdCBzY3RwX2lucGNiICpp
bnAsIHN0cnVjdCBzY3RwX3NuZHJjdmluZm8gKnNpbmZvKQogCQlueHRpbmZvLT5ueHRfcHBpZCA9
IHNlaW5mby0+c2VyaW5mb19uZXh0X3BwaWQ7CiAJCW54dGluZm8tPm54dF9sZW5ndGggPSBzZWlu
Zm8tPnNlcmluZm9fbmV4dF9sZW5ndGg7CiAJCW54dGluZm8tPm54dF9hc3NvY19pZCA9IHNlaW5m
by0+c2VyaW5mb19uZXh0X2FpZDsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3Mp
CisjaWYgZGVmaW5lZChfV0lOMzIpCiAJCWNtaCA9IChXU0FDTVNHSERSICopKChjYWRkcl90KWNt
aCArIENNU0dfU1BBQ0Uoc2l6ZW9mKHN0cnVjdCBzY3RwX254dGluZm8pKSk7CiAjZWxzZQogCQlj
bWggPSAoc3RydWN0IGNtc2doZHIgKikoKGNhZGRyX3QpY21oICsgQ01TR19TUEFDRShzaXplb2Yo
c3RydWN0IHNjdHBfbnh0aW5mbykpKTsKQEAgLTQ0NywyMiArNDUwLDIyIEBAIHNjdHBfYWJvcnRf
aW5fcmVhc20oc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCXN0cnVjdCBtYnVmICpvcGVyOwogCiAJ
aWYgKHN0Y2ItPmFzb2MuaWRhdGFfc3VwcG9ydGVkKSB7Ci0JCXNucHJpbnRmKG1zZywgc2l6ZW9m
KG1zZyksCi0JCQkgIlJlYXNzICV4LENGOiV4LFRTTj0lOC44eCxTSUQ9JTQuNHgsRlNOPSU4Ljh4
LE1JRDolOC44eCIsCi0JCQkgb3BzcG90LAotCQkJIGNvbnRyb2wtPmZzbl9pbmNsdWRlZCwKLQkJ
CSBjaGstPnJlYy5kYXRhLnRzbiwKLQkJCSBjaGstPnJlYy5kYXRhLnNpZCwKLQkJCSBjaGstPnJl
Yy5kYXRhLmZzbiwgY2hrLT5yZWMuZGF0YS5taWQpOworCQlTQ1RQX1NOUFJJTlRGKG1zZywgc2l6
ZW9mKG1zZyksCisJCSAgICAgICAgICAgICAgIlJlYXNzICV4LENGOiV4LFRTTj0lOC44eCxTSUQ9
JTQuNHgsRlNOPSU4Ljh4LE1JRDolOC44eCIsCisJCSAgICAgICAgICAgICAgb3BzcG90LAorCQkg
ICAgICAgICAgICAgIGNvbnRyb2wtPmZzbl9pbmNsdWRlZCwKKwkJICAgICAgICAgICAgICBjaGst
PnJlYy5kYXRhLnRzbiwKKwkJICAgICAgICAgICAgICBjaGstPnJlYy5kYXRhLnNpZCwKKwkJICAg
ICAgICAgICAgICBjaGstPnJlYy5kYXRhLmZzbiwgY2hrLT5yZWMuZGF0YS5taWQpOwogCX0gZWxz
ZSB7Ci0JCXNucHJpbnRmKG1zZywgc2l6ZW9mKG1zZyksCi0JCQkgIlJlYXNzICV4LENJOiV4LFRT
Tj0lOC44eCxTSUQ9JTQuNHgsRlNOPSU0LjR4LFNTTjolNC40eCIsCi0JCQkgb3BzcG90LAotCQkJ
IGNvbnRyb2wtPmZzbl9pbmNsdWRlZCwKLQkJCSBjaGstPnJlYy5kYXRhLnRzbiwKLQkJCSBjaGst
PnJlYy5kYXRhLnNpZCwKLQkJCSBjaGstPnJlYy5kYXRhLmZzbiwKLQkJCSAodWludDE2X3QpY2hr
LT5yZWMuZGF0YS5taWQpOworCQlTQ1RQX1NOUFJJTlRGKG1zZywgc2l6ZW9mKG1zZyksCisJCSAg
ICAgICAgICAgICAgIlJlYXNzICV4LENJOiV4LFRTTj0lOC44eCxTSUQ9JTQuNHgsRlNOPSU0LjR4
LFNTTjolNC40eCIsCisJCSAgICAgICAgICAgICAgb3BzcG90LAorCQkgICAgICAgICAgICAgIGNv
bnRyb2wtPmZzbl9pbmNsdWRlZCwKKwkJICAgICAgICAgICAgICBjaGstPnJlYy5kYXRhLnRzbiwK
KwkJICAgICAgICAgICAgICBjaGstPnJlYy5kYXRhLnNpZCwKKwkJICAgICAgICAgICAgICBjaGst
PnJlYy5kYXRhLmZzbiwKKwkJICAgICAgICAgICAgICAodWludDE2X3QpY2hrLT5yZWMuZGF0YS5t
aWQpOwogCX0KIAlvcGVyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQX0NBVVNFX1BST1RPQ09M
X1ZJT0xBVElPTiwgbXNnKTsKIAlzY3RwX21fZnJlZW0oY2hrLT5kYXRhKTsKQEAgLTQ3Niw3ICs0
NzksNyBAQCBzY3RwX2Fib3J0X2luX3JlYXNtKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIHN0YXRp
YyB2b2lkCiBzY3RwX2NsZWFuX3VwX2NvbnRyb2woc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1
Y3Qgc2N0cF9xdWV1ZWRfdG9fcmVhZCAqY29udHJvbCkKIHsKLQkvKiAKKwkvKgogCSAqIFRoZSBj
b250cm9sIGNvdWxkIG5vdCBiZSBwbGFjZWQgYW5kIG11c3QgYmUgY2xlYW5lZC4KIAkgKi8KIAlz
dHJ1Y3Qgc2N0cF90bWl0X2NodW5rICpjaGssICpuY2hrOwpAQCAtNDg3LDcgKzQ5MCwxMiBAQCBz
Y3RwX2NsZWFuX3VwX2NvbnRyb2woc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9x
dWV1ZWRfdG9fcmVhZCAqY29udHJvbAogCQljaGstPmRhdGEgPSBOVUxMOwogCQlzY3RwX2ZyZWVf
YV9jaHVuayhzdGNiLCBjaGssIFNDVFBfU09fTk9UX0xPQ0tFRCk7CiAJfQotCXNjdHBfZnJlZV9h
X3JlYWRxKHN0Y2IsIGNvbnRyb2wpOwkKKwlzY3RwX2ZyZWVfcmVtb3RlX2FkZHIoY29udHJvbC0+
d2hvRnJvbSk7CisJaWYgKGNvbnRyb2wtPmRhdGEpIHsKKwkJc2N0cF9tX2ZyZWVtKGNvbnRyb2wt
PmRhdGEpOworCQljb250cm9sLT5kYXRhID0gTlVMTDsKKwl9CisJc2N0cF9mcmVlX2FfcmVhZHEo
c3RjYiwgY29udHJvbCk7CiB9CiAKIC8qCkBAIC01NDAsMTUgKzU0OCwxNSBAQCBzY3RwX3F1ZXVl
X2RhdGFfdG9fc3RyZWFtKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJICovCiAJCVRBSUxRX0lO
U0VSVF9IRUFEKCZzdHJtLT5pbnF1ZXVlLCBjb250cm9sLCBuZXh0X2luc3RybSk7CiAJCWlmIChh
c29jLT5pZGF0YV9zdXBwb3J0ZWQpIHsKLQkJCXNucHJpbnRmKG1zZywgc2l6ZW9mKG1zZyksICJE
ZWxpdmVyZWQgTUlEPSU4Ljh4LCBnb3QgVFNOPSU4Ljh4LCBTSUQ9JTQuNHgsIE1JRD0lOC44eCIs
Ci0JCQkgICAgICAgICBzdHJtLT5sYXN0X21pZF9kZWxpdmVyZWQsIGNvbnRyb2wtPnNpbmZvX3Rz
biwKLQkJCSAgICAgICAgIGNvbnRyb2wtPnNpbmZvX3N0cmVhbSwgY29udHJvbC0+bWlkKTsKKwkJ
CVNDVFBfU05QUklOVEYobXNnLCBzaXplb2YobXNnKSwgIkRlbGl2ZXJlZCBNSUQ9JTguOHgsIGdv
dCBUU049JTguOHgsIFNJRD0lNC40eCwgTUlEPSU4Ljh4IiwKKwkJCSAgICAgICAgICAgICAgc3Ry
bS0+bGFzdF9taWRfZGVsaXZlcmVkLCBjb250cm9sLT5zaW5mb190c24sCisJCQkgICAgICAgICAg
ICAgIGNvbnRyb2wtPnNpbmZvX3N0cmVhbSwgY29udHJvbC0+bWlkKTsKIAkJfSBlbHNlIHsKLQkJ
CXNucHJpbnRmKG1zZywgc2l6ZW9mKG1zZyksICJEZWxpdmVyZWQgU1NOPSU0LjR4LCBnb3QgVFNO
PSU4Ljh4LCBTSUQ9JTQuNHgsIFNTTj0lNC40eCIsCi0JCQkgICAgICAgICAodWludDE2X3Qpc3Ry
bS0+bGFzdF9taWRfZGVsaXZlcmVkLAotCQkJICAgICAgICAgY29udHJvbC0+c2luZm9fdHNuLAot
CQkJICAgICAgICAgY29udHJvbC0+c2luZm9fc3RyZWFtLAotCQkJICAgICAgICAgKHVpbnQxNl90
KWNvbnRyb2wtPm1pZCk7CisJCQlTQ1RQX1NOUFJJTlRGKG1zZywgc2l6ZW9mKG1zZyksICJEZWxp
dmVyZWQgU1NOPSU0LjR4LCBnb3QgVFNOPSU4Ljh4LCBTSUQ9JTQuNHgsIFNTTj0lNC40eCIsCisJ
CQkgICAgICAgICAgICAgICh1aW50MTZfdClzdHJtLT5sYXN0X21pZF9kZWxpdmVyZWQsCisJCQkg
ICAgICAgICAgICAgIGNvbnRyb2wtPnNpbmZvX3RzbiwKKwkJCSAgICAgICAgICAgICAgY29udHJv
bC0+c2luZm9fc3RyZWFtLAorCQkJICAgICAgICAgICAgICAodWludDE2X3QpY29udHJvbC0+bWlk
KTsKIAkJfQogCQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBfQ0FVU0VfUFJPVE9D
T0xfVklPTEFUSU9OLCBtc2cpOwogCQlzdGNiLT5zY3RwX2VwLT5sYXN0X2Fib3J0X2NvZGUgPSBT
Q1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18yOwpAQCAtNTYyLDcgKzU3MCw3IEBAIHNj
dHBfcXVldWVfZGF0YV90b19zdHJlYW0oc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCXNjdHBfdWNv
dW50X2luY3IoYXNvYy0+Y250X29uX2FsbF9zdHJlYW1zKTsKIAlueHRfdG9kZWwgPSBzdHJtLT5s
YXN0X21pZF9kZWxpdmVyZWQgKyAxOwogCWlmIChTQ1RQX01JRF9FUShhc29jLT5pZGF0YV9zdXBw
b3J0ZWQsIG54dF90b2RlbCwgY29udHJvbC0+bWlkKSkgewotI2lmIGRlZmluZWQoX19BUFBMRV9f
KSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlzdHJ1Y3Qgc29ja2V0ICpzbzsKIAogCQlz
byA9IFNDVFBfSU5QX1NPKHN0Y2ItPnNjdHBfZXApOwpAQCAtNjQ1LDcgKzY1Myw3IEBAIHNjdHBf
cXVldWVfZGF0YV90b19zdHJlYW0oc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkJfQogCQkJYnJl
YWs7CiAJCX0KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tf
VEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKIAkJU0NUUF9TT0NLRVRfVU5MT0NLKHNvLCAxKTsKICNlbmRpZgogCX0KQEAgLTY1NSw5ICs2
NjMsOCBAQCBzY3RwX3F1ZXVlX2RhdGFfdG9fc3RyZWFtKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwK
IAkJICogdG8gcHV0IGl0IG9uIHRoZSBxdWV1ZS4KIAkJICovCiAJCWlmIChzY3RwX3BsYWNlX2Nv
bnRyb2xfaW5fc3RyZWFtKHN0cm0sIGFzb2MsIGNvbnRyb2wpKSB7Ci0JCQlzbnByaW50Zihtc2cs
IHNpemVvZihtc2cpLAotCQkJCSAiUXVldWUgdG8gc3RyIE1JRDogJXUgZHVwbGljYXRlIiwKLQkJ
CQkgY29udHJvbC0+bWlkKTsKKwkJCVNDVFBfU05QUklOVEYobXNnLCBzaXplb2YobXNnKSwKKwkJ
CSAgICAgICAgICAgICAgIlF1ZXVlIHRvIHN0ciBNSUQ6ICV1IGR1cGxpY2F0ZSIsIGNvbnRyb2wt
Pm1pZCk7CiAJCQlzY3RwX2NsZWFuX3VwX2NvbnRyb2woc3RjYiwgY29udHJvbCk7CiAJCQlvcF9l
cnIgPSBzY3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBfQ0FVU0VfUFJPVE9DT0xfVklPTEFUSU9OLCBt
c2cpOwogCQkJc3RjYi0+c2N0cF9lcC0+bGFzdF9hYm9ydF9jb2RlID0gU0NUUF9GUk9NX1NDVFBf
SU5EQVRBICsgU0NUUF9MT0NfMzsKQEAgLTcyNiw2ICs3MzMsNyBAQCBzY3RwX2FkZF90b190YWls
X3BvaW50ZXIoc3RydWN0IHNjdHBfcXVldWVkX3RvX3JlYWQgKmNvbnRyb2wsIHN0cnVjdCBtYnVm
ICptLCB1aQogCX0KIAlpZiAoY29udHJvbC0+dGFpbF9tYnVmID09IE5VTEwpIHsKIAkJLyogVFNO
SCAqLworCQlzY3RwX21fZnJlZW0oY29udHJvbC0+ZGF0YSk7CiAJCWNvbnRyb2wtPmRhdGEgPSBt
OwogCQlzY3RwX3NldHVwX3RhaWxfcG9pbnRlcihjb250cm9sKTsKIAkJcmV0dXJuOwpAQCAtNzY0
LDcgKzc3Miw3IEBAIHNjdHBfYWRkX3RvX3RhaWxfcG9pbnRlcihzdHJ1Y3Qgc2N0cF9xdWV1ZWRf
dG9fcmVhZCAqY29udHJvbCwgc3RydWN0IG1idWYgKm0sIHVpCiAJfQogfQogCi1zdGF0aWMgdm9p
ZCAKK3N0YXRpYyB2b2lkCiBzY3RwX2J1aWxkX3JlYWRxX2VudHJ5X2Zyb21fY3RsKHN0cnVjdCBz
Y3RwX3F1ZXVlZF90b19yZWFkICpuYywgc3RydWN0IHNjdHBfcXVldWVkX3RvX3JlYWQgKmNvbnRy
b2wpCiB7CiAJbWVtc2V0KG5jLCAwLCBzaXplb2Yoc3RydWN0IHNjdHBfcXVldWVkX3RvX3JlYWQp
KTsKQEAgLTc4NCwxNSArNzkyLDE2IEBAIHNjdHBfYnVpbGRfcmVhZHFfZW50cnlfZnJvbV9jdGwo
c3RydWN0IHNjdHBfcXVldWVkX3RvX3JlYWQgKm5jLCBzdHJ1Y3Qgc2N0cF9xdWV1CiAJYXRvbWlj
X2FkZF9pbnQoJm5jLT53aG9Gcm9tLT5yZWZfY291bnQsIDEpOwogCW5jLT5zdGNiID0gY29udHJv
bC0+c3RjYjsKIAluYy0+cG9ydF9mcm9tID0gY29udHJvbC0+cG9ydF9mcm9tOworCW5jLT5kb19u
b3RfcmVmX3N0Y2IgPSBjb250cm9sLT5kb19ub3RfcmVmX3N0Y2I7CiB9CiAKLXN0YXRpYyB2b2lk
IAorc3RhdGljIHZvaWQKIHNjdHBfcmVzZXRfYV9jb250cm9sKHN0cnVjdCBzY3RwX3F1ZXVlZF90
b19yZWFkICpjb250cm9sLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNjdHBfaW5wY2Ig
KmlucCwgdWludDMyX3QgdHNuKQogewogCWNvbnRyb2wtPmZzbl9pbmNsdWRlZCA9IHRzbjsKIAlp
ZiAoY29udHJvbC0+b25fcmVhZF9xKSB7Ci0JCS8qIAorCQkvKgogCQkgKiBXZSBoYXZlIHRvIHB1
cmdlIGl0IGZyb20gdGhlcmUsCiAJCSAqIGhvcGVmdWxseSB0aGlzIHdpbGwgd29yayA6LSkKIAkJ
ICovCkBAIC04NDgsNyArODU3LDcgQEAgcmVzdGFydDoKIAkJCWlmIChjb250cm9sLT5lbmRfYWRk
ZWQpIHsKIAkJCQkvKiBXZSBhcmUgZG9uZSAqLwogCQkJCWlmICghVEFJTFFfRU1QVFkoJmNvbnRy
b2wtPnJlYXNtKSkgewotCQkJCQkvKiAKKwkJCQkJLyoKIAkJCQkJICogT2sgd2UgaGF2ZSB0byBt
b3ZlIGFueXRoaW5nIGxlZnQgb24KIAkJCQkJICogdGhlIGNvbnRyb2wgcXVldWUgdG8gYSBuZXcg
Y29udHJvbC4KIAkJCQkJICovCkBAIC05MjgsNiArOTM3LDEyIEBAIHJlc3RhcnQ6CiAJCQlicmVh
azsKIAkJfQogCX0KKwlpZiAoY250X2FkZGVkICYmIHN0cm0tPnBkX2FwaV9zdGFydGVkKSB7Cisj
aWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQlzY3RwX2ludm9rZV9yZWN2X2NhbGxiYWNrKHN0
Y2ItPnNjdHBfZXAsIHN0Y2IsIGNvbnRyb2wsIFNDVFBfUkVBRF9MT0NLX05PVF9IRUxEKTsKKyNl
bmRpZgorCQlzY3RwX3dha2V1cF90aGVfcmVhZF9zb2NrZXQoc3RjYi0+c2N0cF9lcCwgc3RjYiwg
U0NUUF9TT19OT1RfTE9DS0VEKTsKKwl9CiAJaWYgKChjb250cm9sLT5sZW5ndGggPiBwZF9wb2lu
dCkgJiYgKHN0cm0tPnBkX2FwaV9zdGFydGVkID09IDApKSB7CiAJCXN0cm0tPnBkX2FwaV9zdGFy
dGVkID0gMTsKIAkJY29udHJvbC0+cGRhcGlfc3RhcnRlZCA9IDE7CkBAIC05NTksNiArOTc0LDE2
IEBAIHNjdHBfaW5qZWN0X29sZF91bm9yZGVyZWRfZGF0YShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2Is
CiAJCVNDVFBEQkcoU0NUUF9ERUJVR19YWFgsCiAJCQkiY2h1bmsgaXMgYSBmaXJzdCBmc246ICV1
IGJlY29tZXMgZnNuX2luY2x1ZGVkXG4iLAogCQkJY2hrLT5yZWMuZGF0YS5mc24pOworCQlhdCA9
IFRBSUxRX0ZJUlNUKCZjb250cm9sLT5yZWFzbSk7CisJCWlmIChhdCAmJiBTQ1RQX1RTTl9HVChj
aGstPnJlYy5kYXRhLmZzbiwgYXQtPnJlYy5kYXRhLmZzbikpIHsKKwkJCS8qCisJCQkgKiBUaGUg
Zmlyc3QgY2h1bmsgaW4gdGhlIHJlYXNzZW1ibHkgaXMKKwkJCSAqIGEgc21hbGxlciBUU04gdGhh
biB0aGlzIG9uZSwgZXZlbiB0aG91Z2gKKwkJCSAqIHRoaXMgaGFzIGEgZmlyc3QsIGl0IG11c3Qg
YmUgZnJvbSBhIHN1YnNlcXVlbnQKKwkJCSAqIG1zZy4KKwkJCSAqLworCQkJZ290byBwbGFjZV9j
aHVuazsKKwkJfQogCQlpZiAoY29udHJvbC0+Zmlyc3RfZnJhZ19zZWVuKSB7CiAJCQkvKgogCQkJ
ICogSW4gb2xkIHVuLW9yZGVyZWQgd2UgY2FuIHJlYXNzZW1ibHkgb24KQEAgLTk3NSw3ICsxMDAw
LDcgQEAgc2N0cF9pbmplY3Rfb2xkX3Vub3JkZXJlZF9kYXRhKHN0cnVjdCBzY3RwX3RjYiAqc3Rj
YiwKIAkJCX0KIAkJCWlmICgoY2hrLT5yZWMuZGF0YS5mc24gPT0gY29udHJvbC0+ZnNuX2luY2x1
ZGVkKSB8fAogCQkJICAgIChjb250cm9sLT5wZGFwaV9zdGFydGVkKSkgewotCQkJCS8qIAorCQkJ
CS8qCiAJCQkJICogT2sgdGhpcyBzaG91bGQgbm90IGhhcHBlbiwgaWYgaXQgZG9lcwogCQkJCSAq
IHdlIHN0YXJ0ZWQgdGhlIHBkLWFwaSBvbiB0aGUgaGlnaGVyIFRTTiAoc2luY2UKIAkJCQkgKiB0
aGUgZXF1YWxzIHBhcnQgaXMgYSBUU04gZmFpbHVyZSBpdCBtdXN0IGJlIHRoYXQpLgpAQCAtMTA0
NCw3ICsxMDY5LDcgQEAgcGxhY2VfY2h1bms6CiAJCQlUQUlMUV9JTlNFUlRfQkVGT1JFKGF0LCBj
aGssIHNjdHBfbmV4dCk7CiAJCQlicmVhazsKIAkJfSBlbHNlIGlmIChhdC0+cmVjLmRhdGEuZnNu
ID09IGNoay0+cmVjLmRhdGEuZnNuKSB7Ci0JCQkvKiAKKwkJCS8qCiAJCQkgKiBUaGV5IHNlbnQg
YSBkdXBsaWNhdGUgZnNuIG51bWJlci4gVGhpcwogCQkJICogcmVhbGx5IHNob3VsZCBub3QgaGFw
cGVuIHNpbmNlIHRoZSBGU04gaXMKIAkJCSAqIGEgVFNOIGFuZCBpdCBzaG91bGQgaGF2ZSBiZWVu
IGRyb3BwZWQgZWFybGllci4KQEAgLTExMTYsNiArMTE0MSwxNiBAQCBzY3RwX2RlbGl2ZXJfcmVh
c21fY2hlY2soc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAq
YXNvYywKICNlbmRpZgogCQkJCVNDVFBfU1RBVF9JTkNSX0NPVU5URVI2NChzY3Rwc19yZWFzbXVz
cm1zZ3MpOwogCQkJCVRBSUxRX1JFTU9WRSgmc3RybS0+dW5vX2lucXVldWUsIGNvbnRyb2wsIG5l
eHRfaW5zdHJtKTsKKwkJCQlpZiAoYXNvYy0+c2l6ZV9vbl9hbGxfc3RyZWFtcyA+PSBjb250cm9s
LT5sZW5ndGgpIHsKKwkJCQkJYXNvYy0+c2l6ZV9vbl9hbGxfc3RyZWFtcyAtPSBjb250cm9sLT5s
ZW5ndGg7CisJCQkJfSBlbHNlIHsKKyNpZmRlZiBJTlZBUklBTlRTCisJCQkJCXBhbmljKCJzaXpl
X29uX2FsbF9zdHJlYW1zID0gJXUgc21hbGxlciB0aGFuIGNvbnRyb2wgbGVuZ3RoICV1IiwgYXNv
Yy0+c2l6ZV9vbl9hbGxfc3RyZWFtcywgY29udHJvbC0+bGVuZ3RoKTsKKyNlbHNlCisJCQkJCWFz
b2MtPnNpemVfb25fYWxsX3N0cmVhbXMgPSAwOworI2VuZGlmCisJCQkJfQorCQkJCXNjdHBfdWNv
dW50X2RlY3IoYXNvYy0+Y250X29uX2FsbF9zdHJlYW1zKTsKIAkJCQljb250cm9sLT5vbl9zdHJt
X3EgPSAwOwogCQkJfQogCQkJaWYgKGNvbnRyb2wtPm9uX3JlYWRfcSA9PSAwKSB7CkBAIC0xMzg0
LDcgKzE0MTksNyBAQCBzY3RwX3F1ZXVlX2RhdGFfZm9yX3JlYXNtKHN0cnVjdCBzY3RwX3RjYiAq
c3RjYiwgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiAJfQogCS8qIE11c3QgYmUgYWRk
ZWQgdG8gdGhlIHN0cmVhbS1pbiBxdWV1ZSAqLwogCWlmIChjcmVhdGVkX2NvbnRyb2wpIHsKLQkJ
aWYgKHVub3JkZXJlZCA9PSAwKSB7CisJCWlmICgodW5vcmRlcmVkID09IDApIHx8IChhc29jLT5p
ZGF0YV9zdXBwb3J0ZWQpKSB7CiAJCQlzY3RwX3Vjb3VudF9pbmNyKGFzb2MtPmNudF9vbl9hbGxf
c3RyZWFtcyk7CiAJCX0KIAkJaWYgKHNjdHBfcGxhY2VfY29udHJvbF9pbl9zdHJlYW0oc3RybSwg
YXNvYywgY29udHJvbCkpIHsKQEAgLTE0NjMsOSArMTQ5OCwxOSBAQCBzY3RwX3F1ZXVlX2RhdGFf
Zm9yX3JlYXNtKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24g
KmFzb2MsCiAJCQkJCSJUaGUgbGFzdCBmc24gaXMgbm93IGluIHBsYWNlIGZzbjogJXVcbiIsCiAJ
CQkJCWNoay0+cmVjLmRhdGEuZnNuKTsKIAkJCQljb250cm9sLT5sYXN0X2ZyYWdfc2VlbiA9IDE7
CisJCQkJaWYgKFNDVFBfVFNOX0dUKGNvbnRyb2wtPnRvcF9mc24sIGNoay0+cmVjLmRhdGEuZnNu
KSkgeworCQkJCQlTQ1RQREJHKFNDVFBfREVCVUdfWFhYLAorCQkJCQkJIk5ldyBmc246ICV1IGlz
IG5vdCBhdCB0b3BfZnNuOiAldSAtLSBhYm9ydFxuIiwKKwkJCQkJCWNoay0+cmVjLmRhdGEuZnNu
LAorCQkJCQkJY29udHJvbC0+dG9wX2Zzbik7CisJCQkJCXNjdHBfYWJvcnRfaW5fcmVhc20oc3Rj
YiwgY29udHJvbCwgY2hrLAorCQkJCQkJCSAgICBhYm9ydF9mbGFnLAorCQkJCQkJCSAgICBTQ1RQ
X0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ185KTsKKwkJCQkJcmV0dXJuOworCQkJCX0KIAkJ
CX0KIAkJCWlmIChhc29jLT5pZGF0YV9zdXBwb3J0ZWQgfHwgY29udHJvbC0+Zmlyc3RfZnJhZ19z
ZWVuKSB7Ci0JCQkJLyogCisJCQkJLyoKIAkJCQkgKiBGb3IgSURBVEEgd2UgYWx3YXlzIGNoZWNr
IHNpbmNlIHdlIGtub3cgdGhhdAogCQkJCSAqIHRoZSBmaXJzdCBmcmFnbWVudCBpcyAwLiBGb3Ig
b2xkIERBVEEgd2UgaGF2ZQogCQkJCSAqIHRvIHJlY2VpdmUgdGhlIGZpcnN0IGJlZm9yZSB3ZSBr
bm93IHRoZSBmaXJzdCBGU04KQEAgLTE0NzUsNyArMTUyMCw3IEBAIHNjdHBfcXVldWVfZGF0YV9m
b3JfcmVhc20oc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAq
YXNvYywKIAkJCQkJLyogV2UgaGF2ZSBhbHJlYWR5IGRlbGl2ZXJlZCB1cCB0byB0aGlzIHNvIGl0
cyBhIGR1cCAqLwogCQkJCQlzY3RwX2Fib3J0X2luX3JlYXNtKHN0Y2IsIGNvbnRyb2wsIGNoaywK
IAkJCQkJCQkgICAgYWJvcnRfZmxhZywKLQkJCQkJCQkgICAgU0NUUF9GUk9NX1NDVFBfSU5EQVRB
ICsgU0NUUF9MT0NfOSk7CisJCQkJCQkJICAgIFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBf
TE9DXzEwKTsKIAkJCQkJcmV0dXJuOwogCQkJCX0KIAkJCX0KQEAgLTE0ODcsMTEgKzE1MzIsMTEg
QEAgc2N0cF9xdWV1ZV9kYXRhX2Zvcl9yZWFzbShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVj
dCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAogCQkJCQljaGstPnJlYy5kYXRhLmZzbiwgY29udHJv
bC0+dG9wX2Zzbik7CiAJCQkJc2N0cF9hYm9ydF9pbl9yZWFzbShzdGNiLCBjb250cm9sLAogCQkJ
CQkJICAgIGNoaywgYWJvcnRfZmxhZywKLQkJCQkJCSAgICBTQ1RQX0ZST01fU0NUUF9JTkRBVEEg
KyBTQ1RQX0xPQ18xMCk7CisJCQkJCQkgICAgU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9M
T0NfMTEpOwogCQkJCXJldHVybjsKIAkJCX0KIAkJCWlmIChhc29jLT5pZGF0YV9zdXBwb3J0ZWQg
fHwgY29udHJvbC0+Zmlyc3RfZnJhZ19zZWVuKSB7Ci0JCQkJLyogCisJCQkJLyoKIAkJCQkgKiBG
b3IgSURBVEEgd2UgYWx3YXlzIGNoZWNrIHNpbmNlIHdlIGtub3cgdGhhdAogCQkJCSAqIHRoZSBm
aXJzdCBmcmFnbWVudCBpcyAwLiBGb3Igb2xkIERBVEEgd2UgaGF2ZQogCQkJCSAqIHRvIHJlY2Vp
dmUgdGhlIGZpcnN0IGJlZm9yZSB3ZSBrbm93IHRoZSBmaXJzdCBGU04KQEAgLTE1MDUsNyArMTU1
MCw3IEBAIHNjdHBfcXVldWVfZGF0YV9mb3JfcmVhc20oc3RydWN0IHNjdHBfdGNiICpzdGNiLCBz
dHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKIAkJCQkJCWNoay0+cmVjLmRhdGEuZnNuLCBj
b250cm9sLT5mc25faW5jbHVkZWQpOwogCQkJCQlzY3RwX2Fib3J0X2luX3JlYXNtKHN0Y2IsIGNv
bnRyb2wsIGNoaywKIAkJCQkJCQkgICAgYWJvcnRfZmxhZywKLQkJCQkJCQkgICAgU0NUUF9GUk9N
X1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMTEpOworCQkJCQkJCSAgICBTQ1RQX0ZST01fU0NUUF9J
TkRBVEEgKyBTQ1RQX0xPQ18xMik7CiAJCQkJCXJldHVybjsKIAkJCQl9CiAJCQl9CkBAIC0xNTE3
LDEzICsxNTYyLDEzIEBAIHNjdHBfcXVldWVfZGF0YV9mb3JfcmVhc20oc3RydWN0IHNjdHBfdGNi
ICpzdGNiLCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKIAkJCQkJY29udHJvbC0+dG9w
X2Zzbik7CiAJCQkJc2N0cF9hYm9ydF9pbl9yZWFzbShzdGNiLCBjb250cm9sLCBjaGssCiAJCQkJ
CQkgICAgYWJvcnRfZmxhZywKLQkJCQkJCSAgICBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQ
X0xPQ18xMik7CisJCQkJCQkgICAgU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMTMp
OwogCQkJCXJldHVybjsKIAkJCX0KIAkJfQogCQkvKgogCQkgKiBJZiB3ZSByZWFjaCBoZXJlLCB3
ZSBuZWVkIHRvIHBsYWNlIHRoZQotCQkgKiBuZXcgY2h1bmsgaW4gdGhlIHJlYXNzZW1ibHkgZm9y
IHRoaXMgCisJCSAqIG5ldyBjaHVuayBpbiB0aGUgcmVhc3NlbWJseSBmb3IgdGhpcwogCQkgKiBj
b250cm9sLgogCQkgKi8KIAkJU0NUUERCRyhTQ1RQX0RFQlVHX1hYWCwKQEAgLTE1MzEsNiArMTU3
NiwxNSBAQCBzY3RwX3F1ZXVlX2RhdGFfZm9yX3JlYXNtKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwg
c3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiAJCQljaGstPnJlYy5kYXRhLmZzbik7CiAJ
CVRBSUxRX0ZPUkVBQ0goYXQsICZjb250cm9sLT5yZWFzbSwgc2N0cF9uZXh0KSB7CiAJCQlpZiAo
U0NUUF9UU05fR1QoYXQtPnJlYy5kYXRhLmZzbiwgY2hrLT5yZWMuZGF0YS5mc24pKSB7CisJCQkJ
aWYgKGNoay0+cmVjLmRhdGEucmN2X2ZsYWdzICYgU0NUUF9EQVRBX0xBU1RfRlJBRykgeworCQkJ
CQkvKiBMYXN0IG5vdCBhdCB0aGUgZW5kPyBodWg/ICovCisJCQkJCVNDVFBEQkcoU0NUUF9ERUJV
R19YWFgsCisJCQkJCSAgICAgICAgIkxhc3QgZnJhZ21lbnQgbm90IGxhc3QgaW4gbGlzdDogLS0g
YWJvcnRcbiIpOworCQkJCQlzY3RwX2Fib3J0X2luX3JlYXNtKHN0Y2IsIGNvbnRyb2wsCisJCQkJ
CSAgICAgICAgICAgICAgICAgICAgY2hrLCBhYm9ydF9mbGFnLAorCQkJCQkgICAgICAgICAgICAg
ICAgICAgIFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzE0KTsKKwkJCQkJcmV0dXJu
OworCQkJCX0KIAkJCQkvKgogCQkJCSAqIFRoaXMgb25lIGluIHF1ZXVlIGlzIGJpZ2dlciB0aGFu
IHRoZSBuZXcgb25lLCBpbnNlcnQKIAkJCQkgKiB0aGUgbmV3IG9uZSBiZWZvcmUgYXQuCkBAIC0x
NTU3LDcgKzE2MTEsNyBAQCBzY3RwX3F1ZXVlX2RhdGFfZm9yX3JlYXNtKHN0cnVjdCBzY3RwX3Rj
YiAqc3RjYiwgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiAJCQkJCWF0LT5yZWMuZGF0
YS5mc24pOwogCQkJCXNjdHBfYWJvcnRfaW5fcmVhc20oc3RjYiwgY29udHJvbCwKIAkJCQkJCSAg
ICBjaGssIGFib3J0X2ZsYWcsCi0JCQkJCQkgICAgU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NU
UF9MT0NfMTMpOworCQkJCQkJICAgIFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzE1
KTsKIAkJCQlyZXR1cm47CiAJCQl9CiAJCX0KQEAgLTE2NjIsNiArMTcxNiw3IEBAIHNjdHBfcHJv
Y2Vzc19hX2RhdGFfY2h1bmsoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9hc3Nv
Y2lhdGlvbiAqYXNvYywKIAkJCSAgaW50ICpicmVha19mbGFnLCBpbnQgbGFzdF9jaHVuaywgdWlu
dDhfdCBjaGtfdHlwZSkKIHsKIAlzdHJ1Y3Qgc2N0cF90bWl0X2NodW5rICpjaGsgPSBOVUxMOyAv
KiBtYWtlIGdjYyBoYXBweSAqLworCXN0cnVjdCBzY3RwX3N0cmVhbV9pbiAqc3RybTsKIAl1aW50
MzJfdCB0c24sIGZzbiwgZ2FwLCBtaWQ7CiAJc3RydWN0IG1idWYgKmRtYnVmOwogCWludCB0aGVf
bGVuOwpAQCAtMTcxMyw3ICsxNzY4LDcgQEAgc2N0cF9wcm9jZXNzX2FfZGF0YV9jaHVuayhzdHJ1
Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAogCQkgKiBl
bXB0eSBkYXRhIGNodW5rLgogCQkgKi8KIAkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9ub191c2Vy
X2RhdGFfY2F1c2UodHNuKTsKLQkJc3RjYi0+c2N0cF9lcC0+bGFzdF9hYm9ydF9jb2RlID0gU0NU
UF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMTQ7CisJCXN0Y2ItPnNjdHBfZXAtPmxhc3Rf
YWJvcnRfY29kZSA9IFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzE2OwogCQlzY3Rw
X2Fib3J0X2FuX2Fzc29jaWF0aW9uKHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIG9wX2VyciwgU0NUUF9T
T19OT1RfTE9DS0VEKTsKIAkJKmFib3J0X2ZsYWcgPSAxOwogCQlyZXR1cm4gKDApOwpAQCAtMTgz
MSwxNCArMTg4NiwxMyBAQCBzY3RwX3Byb2Nlc3NfYV9kYXRhX2NodW5rKHN0cnVjdCBzY3RwX3Rj
YiAqc3RjYiwgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiAJaWYgKChjaGtfdHlwZSA9
PSBTQ1RQX0lEQVRBKSAmJgogCSAgICAoKGNoa19mbGFncyAmIFNDVFBfREFUQV9GSVJTVF9GUkFH
KSA9PSAwKSAmJgogCSAgICAoZnNuID09IDApKSB7Ci0JCS8qIAotCQkgKiAgVGhlIGZpcnN0ICpt
dXN0KiBiZSBmc24gMCwgYW5kIG90aGVyIAorCQkvKgorCQkgKiAgVGhlIGZpcnN0ICptdXN0KiBi
ZSBmc24gMCwgYW5kIG90aGVyCiAJCSAqICAobWlkZGxlL2VuZCkgcGllY2VzIGNhbiAqbm90KiBi
ZSBmc24gMC4KIAkJICogWFhYOiBUaGlzIGNhbiBoYXBwZW4gaW4gY2FzZSBvZiBhIHdyYXAgYXJv
dW5kLgogCQkgKiAgICAgIElnbm9yZSBpcyBmb3Igbm93LgogCQkgKi8KLQkJc25wcmludGYobXNn
LCBzaXplb2YobXNnKSwgIkZTTiB6ZXJvIGZvciBNSUQ9JTguOHgsIGJ1dCBmbGFncz0lMi4yeCIs
Ci0JCSAgICAgICAgIG1pZCwgY2hrX2ZsYWdzKTsKKwkJU0NUUF9TTlBSSU5URihtc2csIHNpemVv
Zihtc2cpLCAiRlNOIHplcm8gZm9yIE1JRD0lOC44eCwgYnV0IGZsYWdzPSUyLjJ4IiwgbWlkLCBj
aGtfZmxhZ3MpOwogCQlnb3RvIGVycl9vdXQ7CiAJfQogCWNvbnRyb2wgPSBzY3RwX2ZpbmRfcmVh
c21fZW50cnkoJmFzb2MtPnN0cm1pbltzaWRdLCBtaWQsIG9yZGVyZWQsIGFzb2MtPmlkYXRhX3N1
cHBvcnRlZCk7CkBAIC0xODQ5LDI0ICsxOTAzLDI2IEBAIHNjdHBfcHJvY2Vzc19hX2RhdGFfY2h1
bmsoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywK
IAkJaWYgKGNvbnRyb2wgIT0gTlVMTCkgewogCQkJLyogV2UgZm91bmQgc29tZXRoaW5nLCBkb2Vz
IGl0IGJlbG9uZz8gKi8KIAkJCWlmIChvcmRlcmVkICYmIChtaWQgIT0gY29udHJvbC0+bWlkKSkg
ewotCQkJCXNucHJpbnRmKG1zZywgc2l6ZW9mKG1zZyksICJSZWFzc2VtYmx5IHByb2JsZW0gKE1J
RD0lOC44eCkiLCBtaWQpOworCQkJCVNDVFBfU05QUklOVEYobXNnLCBzaXplb2YobXNnKSwgIlJl
YXNzZW1ibHkgcHJvYmxlbSAoTUlEPSU4Ljh4KSIsIG1pZCk7CiAJCQllcnJfb3V0OgogCQkJCW9w
X2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9DQVVTRV9QUk9UT0NPTF9WSU9MQVRJT04s
IG1zZyk7Ci0JCQkJc3RjYi0+c2N0cF9lcC0+bGFzdF9hYm9ydF9jb2RlID0gU0NUUF9GUk9NX1ND
VFBfSU5EQVRBICsgU0NUUF9MT0NfMTU7CisJCQkJc3RjYi0+c2N0cF9lcC0+bGFzdF9hYm9ydF9j
b2RlID0gU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMTc7CiAJCQkJc2N0cF9hYm9y
dF9hbl9hc3NvY2lhdGlvbihzdGNiLT5zY3RwX2VwLCBzdGNiLCBvcF9lcnIsIFNDVFBfU09fTk9U
X0xPQ0tFRCk7CiAJCQkJKmFib3J0X2ZsYWcgPSAxOwogCQkJCXJldHVybiAoMCk7CiAJCQl9CiAJ
CQlpZiAob3JkZXJlZCAmJiAoKGNvbnRyb2wtPnNpbmZvX2ZsYWdzID4+IDgpICYgU0NUUF9EQVRB
X1VOT1JERVJFRCkpIHsKIAkJCQkvKiBXZSBjYW4ndCBoYXZlIGEgc3dpdGNoZWQgb3JkZXIgd2l0
aCBhbiB1bm9yZGVyZWQgY2h1bmsgKi8KLQkJCQlzbnByaW50Zihtc2csIHNpemVvZihtc2cpLCAi
QWxsIGZyYWdtZW50cyBvZiBhIHVzZXIgbWVzc2FnZSBtdXN0IGJlIG9yZGVyZWQgb3IgdW5vcmRl
cmVkIChUU049JTguOHgpIiwKLQkJCQkJIHRzbik7CisJCQkJU0NUUF9TTlBSSU5URihtc2csIHNp
emVvZihtc2cpLAorCQkJCSAgICAgICAgICAgICAgIkFsbCBmcmFnbWVudHMgb2YgYSB1c2VyIG1l
c3NhZ2UgbXVzdCBiZSBvcmRlcmVkIG9yIHVub3JkZXJlZCAoVFNOPSU4Ljh4KSIsCisJCQkJICAg
ICAgICAgICAgICB0c24pOwogCQkJCWdvdG8gZXJyX291dDsKIAkJCX0KIAkJCWlmICghb3JkZXJl
ZCAmJiAoKChjb250cm9sLT5zaW5mb19mbGFncyA+PiA4KSAmIFNDVFBfREFUQV9VTk9SREVSRUQp
ID09IDApKSB7CiAJCQkJLyogV2UgY2FuJ3QgaGF2ZSBhIHN3aXRjaGVkIHVub3JkZXJlZCB3aXRo
IGEgb3JkZXJlZCBjaHVuayAqLwotCQkJCXNucHJpbnRmKG1zZywgc2l6ZW9mKG1zZyksICJBbGwg
ZnJhZ21lbnRzIG9mIGEgdXNlciBtZXNzYWdlIG11c3QgYmUgb3JkZXJlZCBvciB1bm9yZGVyZWQg
KFRTTj0lOC44eCkiLAotCQkJCQkgdHNuKTsKKwkJCQlTQ1RQX1NOUFJJTlRGKG1zZywgc2l6ZW9m
KG1zZyksCisJCQkJICAgICAgICAgICAgICJBbGwgZnJhZ21lbnRzIG9mIGEgdXNlciBtZXNzYWdl
IG11c3QgYmUgb3JkZXJlZCBvciB1bm9yZGVyZWQgKFRTTj0lOC44eCkiLAorCQkJCSAgICAgICAg
ICAgICB0c24pOwogCQkJCWdvdG8gZXJyX291dDsKIAkJCX0KIAkJfQpAQCAtMTg4MCwxMiArMTkz
NiwxNCBAQCBzY3RwX3Byb2Nlc3NfYV9kYXRhX2NodW5rKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwg
c3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiAJCQlpZiAob3JkZXJlZCB8fCBhc29jLT5p
ZGF0YV9zdXBwb3J0ZWQpIHsKIAkJCQlTQ1RQREJHKFNDVFBfREVCVUdfWFhYLCAiY2h1bmtfZmxh
Z3M6IDB4JXggZHVwIGRldGVjdGVkIG9uIE1JRDogJXVcbiIsCiAJCQkJCWNoa19mbGFncywgbWlk
KTsKLQkJCQlzbnByaW50Zihtc2csIHNpemVvZihtc2cpLCAiRHVwbGljYXRlIE1JRD0lOC44eCBk
ZXRlY3RlZC4iLCBtaWQpOworCQkJCVNDVFBfU05QUklOVEYobXNnLCBzaXplb2YobXNnKSwgIkR1
cGxpY2F0ZSBNSUQ9JTguOHggZGV0ZWN0ZWQuIiwgbWlkKTsKIAkJCQlnb3RvIGVycl9vdXQ7CiAJ
CQl9IGVsc2UgewogCQkJCWlmICgodHNuID09IGNvbnRyb2wtPmZzbl9pbmNsdWRlZCArIDEpICYm
CiAJCQkJICAgIChjb250cm9sLT5lbmRfYWRkZWQgPT0gMCkpIHsKLQkJCQkJc25wcmludGYobXNn
LCBzaXplb2YobXNnKSwgIklsbGVnYWwgbWVzc2FnZSBzZXF1ZW5jZSwgbWlzc2luZyBlbmQgZm9y
IE1JRDogJTguOHgiLCBjb250cm9sLT5mc25faW5jbHVkZWQpOworCQkJCQlTQ1RQX1NOUFJJTlRG
KG1zZywgc2l6ZW9mKG1zZyksCisJCQkJCSAgICAgICAgICAgICAgIklsbGVnYWwgbWVzc2FnZSBz
ZXF1ZW5jZSwgbWlzc2luZyBlbmQgZm9yIE1JRDogJTguOHgiLAorCQkJCQkgICAgICAgICAgICAg
IGNvbnRyb2wtPmZzbl9pbmNsdWRlZCk7CiAJCQkJCWdvdG8gZXJyX291dDsKIAkJCQl9IGVsc2Ug
ewogCQkJCQljb250cm9sID0gTlVMTDsKQEAgLTE5MDQsNyArMTk2Miw3IEBAIHNjdHBfcHJvY2Vz
c19hX2RhdGFfY2h1bmsoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9hc3NvY2lh
dGlvbiAqYXNvYywKIAkJICovCiAJCWlmIChzdGNiLT5zY3RwX3NvY2tldC0+c29fcmN2LnNiX2Nj
KSB7CiAJCQkvKiBzb21lIHRvIHJlYWQsIHdha2UtdXAgKi8KLSNpZiBkZWZpbmVkKF9fQVBQTEVf
XykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCXN0cnVjdCBzb2NrZXQgKnNvOwogCiAJ
CQlzbyA9IFNDVFBfSU5QX1NPKHN0Y2ItPnNjdHBfZXApOwpAQCAtMTkyMCw3ICsxOTc4LDcgQEAg
c2N0cF9wcm9jZXNzX2FfZGF0YV9jaHVuayhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBz
Y3RwX2Fzc29jaWF0aW9uICphc29jLAogCQkJfQogI2VuZGlmCiAJCQlzY3RwX3Nvcndha2V1cChz
dGNiLT5zY3RwX2VwLCBzdGNiLT5zY3RwX3NvY2tldCk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18p
IHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDEp
OwogI2VuZGlmCiAJCX0KQEAgLTE5ODIsMjAgKzIwNDAsMjAgQEAgc2N0cF9wcm9jZXNzX2FfZGF0
YV9jaHVuayhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICph
c29jLAogCQkJbWlkLCBhc29jLT5zdHJtaW5bc2lkXS5sYXN0X21pZF9kZWxpdmVyZWQpOwogCiAJ
CWlmIChhc29jLT5pZGF0YV9zdXBwb3J0ZWQpIHsKLQkJCXNucHJpbnRmKG1zZywgc2l6ZW9mKG1z
ZyksICJEZWxpdmVyZWQgTUlEPSU4Ljh4LCBnb3QgVFNOPSU4Ljh4LCBTSUQ9JTQuNHgsIE1JRD0l
OC44eCIsCi0JCQkgICAgICAgICBhc29jLT5zdHJtaW5bc2lkXS5sYXN0X21pZF9kZWxpdmVyZWQs
Ci0JCQkgICAgICAgICB0c24sCi0JCQkgICAgICAgICBzaWQsCi0JCQkgICAgICAgICBtaWQpOwor
CQkJU0NUUF9TTlBSSU5URihtc2csIHNpemVvZihtc2cpLCAiRGVsaXZlcmVkIE1JRD0lOC44eCwg
Z290IFRTTj0lOC44eCwgU0lEPSU0LjR4LCBNSUQ9JTguOHgiLAorCQkJICAgICAgICAgICAgICBh
c29jLT5zdHJtaW5bc2lkXS5sYXN0X21pZF9kZWxpdmVyZWQsCisJCQkgICAgICAgICAgICAgIHRz
biwKKwkJCSAgICAgICAgICAgICAgc2lkLAorCQkJICAgICAgICAgICAgICBtaWQpOwogCQl9IGVs
c2UgewotCQkJc25wcmludGYobXNnLCBzaXplb2YobXNnKSwgIkRlbGl2ZXJlZCBTU049JTQuNHgs
IGdvdCBUU049JTguOHgsIFNJRD0lNC40eCwgU1NOPSU0LjR4IiwKLQkJCSAgICAgICAgICh1aW50
MTZfdClhc29jLT5zdHJtaW5bc2lkXS5sYXN0X21pZF9kZWxpdmVyZWQsCi0JCQkgICAgICAgICB0
c24sCi0JCQkgICAgICAgICBzaWQsCi0JCQkgICAgICAgICAodWludDE2X3QpbWlkKTsKKwkJCVND
VFBfU05QUklOVEYobXNnLCBzaXplb2YobXNnKSwgIkRlbGl2ZXJlZCBTU049JTQuNHgsIGdvdCBU
U049JTguOHgsIFNJRD0lNC40eCwgU1NOPSU0LjR4IiwKKwkJCSAgICAgICAgICAgICAgKHVpbnQx
Nl90KWFzb2MtPnN0cm1pbltzaWRdLmxhc3RfbWlkX2RlbGl2ZXJlZCwKKwkJCSAgICAgICAgICAg
ICAgdHNuLAorCQkJICAgICAgICAgICAgICBzaWQsCisJCQkgICAgICAgICAgICAgICh1aW50MTZf
dCltaWQpOwogCQl9CiAJCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9DQVVTRV9Q
Uk9UT0NPTF9WSU9MQVRJT04sIG1zZyk7Ci0JCXN0Y2ItPnNjdHBfZXAtPmxhc3RfYWJvcnRfY29k
ZSA9IFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzE2OworCQlzdGNiLT5zY3RwX2Vw
LT5sYXN0X2Fib3J0X2NvZGUgPSBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18xODsK
IAkJc2N0cF9hYm9ydF9hbl9hc3NvY2lhdGlvbihzdGNiLT5zY3RwX2VwLCBzdGNiLCBvcF9lcnIs
IFNDVFBfU09fTk9UX0xPQ0tFRCk7CiAJCSphYm9ydF9mbGFnID0gMTsKIAkJcmV0dXJuICgwKTsK
QEAgLTIwNzIsMTAgKzIxMzAsMTMgQEAgc2N0cF9wcm9jZXNzX2FfZGF0YV9jaHVuayhzdHJ1Y3Qg
c2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAogCQkJc3RydWN0
IG1idWYgKm1tOwogCiAJCQljb250cm9sLT5kYXRhID0gZG1idWY7CisJCQljb250cm9sLT50YWls
X21idWYgPSBOVUxMOwogCQkJZm9yIChtbSA9IGNvbnRyb2wtPmRhdGE7IG1tOyBtbSA9IG1tLT5t
X25leHQpIHsKIAkJCQljb250cm9sLT5sZW5ndGggKz0gU0NUUF9CVUZfTEVOKG1tKTsKKwkJCQlp
ZiAoU0NUUF9CVUZfTkVYVChtbSkgPT0gTlVMTCkgeworCQkJCQljb250cm9sLT50YWlsX21idWYg
PSBtbTsKKwkJCQl9CiAJCQl9Ci0JCQljb250cm9sLT50YWlsX21idWYgPSBOVUxMOwogCQkJY29u
dHJvbC0+ZW5kX2FkZGVkID0gMTsKIAkJCWNvbnRyb2wtPmxhc3RfZnJhZ19zZWVuID0gMTsKIAkJ
CWNvbnRyb2wtPmZpcnN0X2ZyYWdfc2VlbiA9IDE7CkBAIC0yMjk0LDEyICsyMzU1LDEzIEBAIGZp
bmlzaF9leHByZXNzX2RlbDoKIAkJCS8qIEFsbCBjYW4gYmUgcmVtb3ZlZCAqLwogCQkJVEFJTFFf
Rk9SRUFDSF9TQUZFKGNvbnRyb2wsICZhc29jLT5wZW5kaW5nX3JlcGx5X3F1ZXVlLCBuZXh0LCBu
Y29udHJvbCkgewogCQkJCVRBSUxRX1JFTU9WRSgmYXNvYy0+cGVuZGluZ19yZXBseV9xdWV1ZSwg
Y29udHJvbCwgbmV4dCk7CisJCQkJc3RybSA9ICZhc29jLT5zdHJtaW5bY29udHJvbC0+c2luZm9f
c3RyZWFtXTsKIAkJCQlzY3RwX3F1ZXVlX2RhdGFfdG9fc3RyZWFtKHN0Y2IsIGFzb2MsIGNvbnRy
b2wsIGFib3J0X2ZsYWcsICZuZWVkX3JlYXNtX2NoZWNrKTsKIAkJCQlpZiAoKmFib3J0X2ZsYWcp
IHsKIAkJCQkJcmV0dXJuICgwKTsKIAkJCQl9CiAJCQkJaWYgKG5lZWRfcmVhc21fY2hlY2spIHsK
LQkJCQkJKHZvaWQpc2N0cF9kZWxpdmVyX3JlYXNtX2NoZWNrKHN0Y2IsIGFzb2MsICZhc29jLT5z
dHJtaW5bY29udHJvbC0+c2luZm9fc3RyZWFtXSwgU0NUUF9SRUFEX0xPQ0tfTk9UX0hFTEQpOwor
CQkJCQkodm9pZClzY3RwX2RlbGl2ZXJfcmVhc21fY2hlY2soc3RjYiwgYXNvYywgc3RybSwgU0NU
UF9SRUFEX0xPQ0tfTk9UX0hFTEQpOwogCQkJCQluZWVkX3JlYXNtX2NoZWNrID0gMDsKIAkJCQl9
CiAJCQl9CkBAIC0yMzE0LDEyICsyMzc2LDEzIEBAIGZpbmlzaF9leHByZXNzX2RlbDoKIAkJCQkg
KiBjb250cm9sLT5zaW5mb190c24gPiBsaXN0ZS0+dHNuCiAJCQkJICovCiAJCQkJVEFJTFFfUkVN
T1ZFKCZhc29jLT5wZW5kaW5nX3JlcGx5X3F1ZXVlLCBjb250cm9sLCBuZXh0KTsKKwkJCQlzdHJt
ID0gJmFzb2MtPnN0cm1pbltjb250cm9sLT5zaW5mb19zdHJlYW1dOwogCQkJCXNjdHBfcXVldWVf
ZGF0YV90b19zdHJlYW0oc3RjYiwgYXNvYywgY29udHJvbCwgYWJvcnRfZmxhZywgJm5lZWRfcmVh
c21fY2hlY2spOwogCQkJCWlmICgqYWJvcnRfZmxhZykgewogCQkJCQlyZXR1cm4gKDApOwogCQkJ
CX0KIAkJCQlpZiAobmVlZF9yZWFzbV9jaGVjaykgewotCQkJCQkodm9pZClzY3RwX2RlbGl2ZXJf
cmVhc21fY2hlY2soc3RjYiwgYXNvYywgJmFzb2MtPnN0cm1pbltjb250cm9sLT5zaW5mb19zdHJl
YW1dLCBTQ1RQX1JFQURfTE9DS19OT1RfSEVMRCk7CisJCQkJCSh2b2lkKXNjdHBfZGVsaXZlcl9y
ZWFzbV9jaGVjayhzdGNiLCBhc29jLCBzdHJtLCBTQ1RQX1JFQURfTE9DS19OT1RfSEVMRCk7CiAJ
CQkJCW5lZWRfcmVhc21fY2hlY2sgPSAwOwogCQkJCX0KIAkJCX0KQEAgLTI1NTQsNyArMjYxNyw3
IEBAIHNjdHBfc2Fja19jaGVjayhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIGludCB3YXNfYV9nYXAp
CiAJICogTm93IHdlIG5lZWQgdG8gc2VlIGlmIHdlIG5lZWQgdG8gcXVldWUgYSBzYWNrIG9yIGp1
c3Qgc3RhcnQgdGhlCiAJICogdGltZXIgKGlmIGFsbG93ZWQpLgogCSAqLwotCWlmIChTQ1RQX0dF
VF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpIHsKKwlpZiAoU0NUUF9H
RVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKSB7CiAJCS8qCiAJCSAq
IE9rIHNwZWNpYWwgY2FzZSwgaW4gU0hVVERPV04tU0VOVCBjYXNlLiBoZXJlIHdlCiAJCSAqIG1h
a2VyIHN1cmUgU0FDSyB0aW1lciBpcyBvZmYgYW5kIGluc3RlYWQgc2VuZCBhCkBAIC0yNTYzLDcg
KzI2MjYsNyBAQCBzY3RwX3NhY2tfY2hlY2soc3RydWN0IHNjdHBfdGNiICpzdGNiLCBpbnQgd2Fz
X2FfZ2FwKQogCQlpZiAoU0NUUF9PU19USU1FUl9QRU5ESU5HKCZzdGNiLT5hc29jLmRhY2tfdGlt
ZXIudGltZXIpKSB7CiAJCQlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX1JFQ1YsCiAJ
CQkgICAgICAgICAgICAgICAgc3RjYi0+c2N0cF9lcCwgc3RjYiwgTlVMTCwKLQkJCSAgICAgICAg
ICAgICAgICBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18xNyk7CisJCQkgICAgICAg
ICAgICAgICAgU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMTkpOwogCQl9CiAJCXNj
dHBfc2VuZF9zaHV0ZG93bihzdGNiLAogCQkgICAgICAgICAgICAgICAgICAgKChzdGNiLT5hc29j
LmFsdGVybmF0ZSkgPyBzdGNiLT5hc29jLmFsdGVybmF0ZSA6IHN0Y2ItPmFzb2MucHJpbWFyeV9k
ZXN0aW5hdGlvbikpOwpAQCAtMjYxNCw3ICsyNjc3LDggQEAgc2N0cF9zYWNrX2NoZWNrKHN0cnVj
dCBzY3RwX3RjYiAqc3RjYiwgaW50IHdhc19hX2dhcCkKIAkJCQkgKiBmaXJzdCBwYWNrZXQgT1Ig
dGhlcmUgYXJlIGdhcHMgb3IKIAkJCQkgKiBkdXBsaWNhdGVzLgogCQkJCSAqLwotCQkJCSh2b2lk
KVNDVFBfT1NfVElNRVJfU1RPUCgmc3RjYi0+YXNvYy5kYWNrX3RpbWVyLnRpbWVyKTsKKwkJCQlz
Y3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX1JFQ1YsIHN0Y2ItPnNjdHBfZXAsIHN0Y2Is
IE5VTEwsCisJCQkJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBf
TE9DXzIwKTsKIAkJCQlzY3RwX3NlbmRfc2FjayhzdGNiLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwog
CQkJfQogCQl9IGVsc2UgewpAQCAtMjY2MCwxNCArMjcyNCwxMiBAQCBzY3RwX3Byb2Nlc3NfZGF0
YShzdHJ1Y3QgbWJ1ZiAqKm1tLCBpbnQgaXBobGVuLCBpbnQgKm9mZnNldCwgaW50IGxlbmd0aCwK
IAkgKi8KIAlhc29jLT5sYXN0X2RhdGFfY2h1bmtfZnJvbSA9IG5ldDsKIAotI2lmbmRlZiBfX1Bh
bmRhX18KIAkvKi0KIAkgKiBOb3cgYmVmb3JlIHdlIHByb2NlZWQgd2UgbXVzdCBmaWd1cmUgb3V0
IGlmIHRoaXMgaXMgYSB3YXN0ZWQKIAkgKiBjbHVzdGVyLi4uIGkuZS4gaXQgaXMgYSBzbWFsbCBw
YWNrZXQgc2VudCBpbiBhbmQgeWV0IHRoZSBkcml2ZXIKIAkgKiB1bmRlcm5lYXRoIGFsbG9jYXRl
ZCBhIGZ1bGwgY2x1c3RlciBmb3IgaXQuIElmIHNvIHdlIG11c3QgY29weSBpdAogCSAqIHRvIGEg
c21hbGxlciBtYnVmIGFuZCBmcmVlIHVwIHRoZSBjbHVzdGVyIG1idWYuIFRoaXMgd2lsbCBoZWxw
Ci0JICogd2l0aCBjbHVzdGVyIHN0YXJ2YXRpb24uIE5vdGUgZm9yIF9fUGFuZGFfXyB3ZSBkb24n
dCBkbyB0aGlzCi0JICogc2luY2UgaXQgaGFzIGNsdXN0ZXJzIGFsbCB0aGUgd2F5IGRvd24gdG8g
NjQgYnl0ZXMuCisJICogd2l0aCBjbHVzdGVyIHN0YXJ2YXRpb24uCiAJICovCiAJaWYgKFNDVFBf
QlVGX0xFTihtKSA8IChsb25nKU1MRU4gJiYgU0NUUF9CVUZfTkVYVChtKSA9PSBOVUxMKSB7CiAJ
CS8qIHdlIG9ubHkgaGFuZGxlIG1idWZzIHRoYXQgYXJlIHNpbmdsZXRvbnMuLiBub3QgY2hhaW5z
ICovCkBAIC0yNjg5LDcgKzI3NTEsNiBAQCBzY3RwX3Byb2Nlc3NfZGF0YShzdHJ1Y3QgbWJ1ZiAq
Km1tLCBpbnQgaXBobGVuLCBpbnQgKm9mZnNldCwgaW50IGxlbmd0aCwKIAkJCW0gPSAqbW07CiAJ
CX0KIAl9Ci0jZW5kaWYKIAkvKiBnZXQgcG9pbnRlciB0byB0aGUgZmlyc3QgY2h1bmsgaGVhZGVy
ICovCiAJY2ggPSAoc3RydWN0IHNjdHBfY2h1bmtoZHIgKilzY3RwX21fZ2V0cHRyKG0sICpvZmZz
ZXQsCiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihz
dHJ1Y3Qgc2N0cF9jaHVua2hkciksCkBAIC0yNzE2LDkgKzI3NzcsOSBAQCBzY3RwX3Byb2Nlc3Nf
ZGF0YShzdHJ1Y3QgbWJ1ZiAqKm1tLCBpbnQgaXBobGVuLCBpbnQgKm9mZnNldCwgaW50IGxlbmd0
aCwKIAkJCXN0cnVjdCBtYnVmICpvcF9lcnI7CiAJCQljaGFyIG1zZ1tTQ1RQX0RJQUdfSU5GT19M
RU5dOwogCi0JCQlzbnByaW50Zihtc2csIHNpemVvZihtc2cpLCAiJXMiLCAiSS1EQVRBIGNodW5r
IHJlY2VpdmVkIHdoZW4gREFUQSB3YXMgbmVnb3RpYXRlZCIpOworCQkJU0NUUF9TTlBSSU5URiht
c2csIHNpemVvZihtc2cpLCAiJXMiLCAiREFUQSBjaHVuayByZWNlaXZlZCB3aGVuIEktREFUQSB3
YXMgbmVnb3RpYXRlZCIpOwogCQkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQX0NB
VVNFX1BST1RPQ09MX1ZJT0xBVElPTiwgbXNnKTsKLQkJCXN0Y2ItPnNjdHBfZXAtPmxhc3RfYWJv
cnRfY29kZSA9IFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzE4OworCQkJc3RjYi0+
c2N0cF9lcC0+bGFzdF9hYm9ydF9jb2RlID0gU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9M
T0NfMjE7CiAJCQlzY3RwX2Fib3J0X2FuX2Fzc29jaWF0aW9uKGlucCwgc3RjYiwgb3BfZXJyLCBT
Q1RQX1NPX05PVF9MT0NLRUQpOwogCQkJcmV0dXJuICgyKTsKIAkJfQpAQCAtMjcyNyw5ICsyNzg4
LDkgQEAgc2N0cF9wcm9jZXNzX2RhdGEoc3RydWN0IG1idWYgKiptbSwgaW50IGlwaGxlbiwgaW50
ICpvZmZzZXQsIGludCBsZW5ndGgsCiAJCQlzdHJ1Y3QgbWJ1ZiAqb3BfZXJyOwogCQkJY2hhciBt
c2dbU0NUUF9ESUFHX0lORk9fTEVOXTsKIAotCQkJc25wcmludGYobXNnLCBzaXplb2YobXNnKSwg
IiVzIiwgIkRBVEEgY2h1bmsgcmVjZWl2ZWQgd2hlbiBJLURBVEEgd2FzIG5lZ290aWF0ZWQiKTsK
KwkJCVNDVFBfU05QUklOVEYobXNnLCBzaXplb2YobXNnKSwgIiVzIiwgIkktREFUQSBjaHVuayBy
ZWNlaXZlZCB3aGVuIERBVEEgd2FzIG5lZ290aWF0ZWQiKTsKIAkJCW9wX2VyciA9IHNjdHBfZ2Vu
ZXJhdGVfY2F1c2UoU0NUUF9DQVVTRV9QUk9UT0NPTF9WSU9MQVRJT04sIG1zZyk7Ci0JCQlzdGNi
LT5zY3RwX2VwLT5sYXN0X2Fib3J0X2NvZGUgPSBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQ
X0xPQ18xOTsKKwkJCXN0Y2ItPnNjdHBfZXAtPmxhc3RfYWJvcnRfY29kZSA9IFNDVFBfRlJPTV9T
Q1RQX0lOREFUQSArIFNDVFBfTE9DXzIyOwogCQkJc2N0cF9hYm9ydF9hbl9hc3NvY2lhdGlvbihp
bnAsIHN0Y2IsIG9wX2VyciwgU0NUUF9TT19OT1RfTE9DS0VEKTsKIAkJCXJldHVybiAoMik7CiAJ
CX0KQEAgLTI3NTAsMTEgKzI4MTEsMTEgQEAgc2N0cF9wcm9jZXNzX2RhdGEoc3RydWN0IG1idWYg
KiptbSwgaW50IGlwaGxlbiwgaW50ICpvZmZzZXQsIGludCBsZW5ndGgsCiAJCQkJc3RydWN0IG1i
dWYgKm9wX2VycjsKIAkJCQljaGFyIG1zZ1tTQ1RQX0RJQUdfSU5GT19MRU5dOwogCi0JCQkJc25w
cmludGYobXNnLCBzaXplb2YobXNnKSwgIiVzIGNodW5rIG9mIGxlbmd0aCAldSIsCi0JCQkJICAg
ICAgICAgY2gtPmNodW5rX3R5cGUgPT0gU0NUUF9EQVRBID8gIkRBVEEiIDogIkktREFUQSIsCi0J
CQkJICAgICAgICAgY2hrX2xlbmd0aCk7CisJCQkJU0NUUF9TTlBSSU5URihtc2csIHNpemVvZiht
c2cpLCAiJXMgY2h1bmsgb2YgbGVuZ3RoICV1IiwKKwkJCQkgICAgICAgICAgICAgIGNoLT5jaHVu
a190eXBlID09IFNDVFBfREFUQSA/ICJEQVRBIiA6ICJJLURBVEEiLAorCQkJCSAgICAgICAgICAg
ICAgY2hrX2xlbmd0aCk7CiAJCQkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQX0NB
VVNFX1BST1RPQ09MX1ZJT0xBVElPTiwgbXNnKTsKLQkJCQlzdGNiLT5zY3RwX2VwLT5sYXN0X2Fi
b3J0X2NvZGUgPSBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18yMDsKKwkJCQlzdGNi
LT5zY3RwX2VwLT5sYXN0X2Fib3J0X2NvZGUgPSBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQ
X0xPQ18yMzsKIAkJCQlzY3RwX2Fib3J0X2FuX2Fzc29jaWF0aW9uKGlucCwgc3RjYiwgb3BfZXJy
LCBTQ1RQX1NPX05PVF9MT0NLRUQpOwogCQkJCXJldHVybiAoMik7CiAJCQl9CkBAIC0yNzY2LDcg
KzI4MjcsNyBAQCBzY3RwX3Byb2Nlc3NfZGF0YShzdHJ1Y3QgbWJ1ZiAqKm1tLCBpbnQgaXBobGVu
LCBpbnQgKm9mZnNldCwgaW50IGxlbmd0aCwKIAkJCX0gZWxzZSB7CiAJCQkJbGFzdF9jaHVuayA9
IDA7CiAJCQl9Ci0JCQlpZiAoc2N0cF9wcm9jZXNzX2FfZGF0YV9jaHVuayhzdGNiLCBhc29jLCBt
bSwgKm9mZnNldCwgCisJCQlpZiAoc2N0cF9wcm9jZXNzX2FfZGF0YV9jaHVuayhzdGNiLCBhc29j
LCBtbSwgKm9mZnNldCwKIAkJCQkJCSAgICAgIGNoa19sZW5ndGgsIG5ldCwgaGlnaF90c24sICZh
Ym9ydF9mbGFnLCAmYnJlYWtfZmxhZywKIAkJCQkJCSAgICAgIGxhc3RfY2h1bmssIGNoLT5jaHVu
a190eXBlKSkgewogCQkJCW51bV9jaHVua3MrKzsKQEAgLTI4MTksOCArMjg4MCw4IEBAIHNjdHBf
cHJvY2Vzc19kYXRhKHN0cnVjdCBtYnVmICoqbW0sIGludCBpcGhsZW4sIGludCAqb2Zmc2V0LCBp
bnQgbGVuZ3RoLAogCQkJCXN0cnVjdCBtYnVmICpvcF9lcnI7CiAJCQkJY2hhciBtc2dbU0NUUF9E
SUFHX0lORk9fTEVOXTsKIAotCQkJCXNucHJpbnRmKG1zZywgc2l6ZW9mKG1zZyksICJEQVRBIGNo
dW5rIGZvbGxvd2VkIGJ5IGNodW5rIG9mIHR5cGUgJTIuMngiLAotCQkJCSAgICAgICAgIGNoLT5j
aHVua190eXBlKTsKKwkJCQlTQ1RQX1NOUFJJTlRGKG1zZywgc2l6ZW9mKG1zZyksICJEQVRBIGNo
dW5rIGZvbGxvd2VkIGJ5IGNodW5rIG9mIHR5cGUgJTIuMngiLAorCQkJCSAgICAgICAgICAgICAg
Y2gtPmNodW5rX3R5cGUpOwogCQkJCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9D
QVVTRV9QUk9UT0NPTF9WSU9MQVRJT04sIG1zZyk7CiAJCQkJc2N0cF9hYm9ydF9hbl9hc3NvY2lh
dGlvbihpbnAsIHN0Y2IsIG9wX2VyciwgU0NUUF9TT19OT1RfTE9DS0VEKTsKIAkJCQlyZXR1cm4g
KDIpOwpAQCAtMjgzOCwxMCArMjg5OSw5IEBAIHNjdHBfcHJvY2Vzc19kYXRhKHN0cnVjdCBtYnVm
ICoqbW0sIGludCBpcGhsZW4sIGludCAqb2Zmc2V0LCBpbnQgbGVuZ3RoLAogCQkJCQlzdHJ1Y3Qg
bWJ1ZiAqb3BfZXJyOwogCQkJCQljaGFyIG1zZ1tTQ1RQX0RJQUdfSU5GT19MRU5dOwogCi0JCQkJ
CXNucHJpbnRmKG1zZywgc2l6ZW9mKG1zZyksICJDaHVuayBvZiBsZW5ndGggJXUiLAotCQkJCQkJ
IGNoa19sZW5ndGgpOworCQkJCQlTQ1RQX1NOUFJJTlRGKG1zZywgc2l6ZW9mKG1zZyksICJDaHVu
ayBvZiBsZW5ndGggJXUiLCBjaGtfbGVuZ3RoKTsKIAkJCQkJb3BfZXJyID0gc2N0cF9nZW5lcmF0
ZV9jYXVzZShTQ1RQX0NBVVNFX1BST1RPQ09MX1ZJT0xBVElPTiwgbXNnKTsKLQkJCQkJc3RjYi0+
c2N0cF9lcC0+bGFzdF9hYm9ydF9jb2RlID0gU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9M
T0NfMjA7CisJCQkJCXN0Y2ItPnNjdHBfZXAtPmxhc3RfYWJvcnRfY29kZSA9IFNDVFBfRlJPTV9T
Q1RQX0lOREFUQSArIFNDVFBfTE9DXzI0OwogCQkJCQlzY3RwX2Fib3J0X2FuX2Fzc29jaWF0aW9u
KGlucCwgc3RjYiwgb3BfZXJyLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwogCQkJCQlyZXR1cm4gKDIp
OwogCQkJCX0KQEAgLTI5MTEsNyArMjk3MSw3IEBAIHNjdHBfcHJvY2Vzc19kYXRhKHN0cnVjdCBt
YnVmICoqbW0sIGludCBpcGhsZW4sIGludCAqb2Zmc2V0LCBpbnQgbGVuZ3RoLAogCQkodm9pZClT
Q1RQX0dFVFRJTUVfVElNRVZBTCgmc3RjYi0+YXNvYy50aW1lX2xhc3RfcmN2ZCk7CiAJfQogCS8q
IG5vdyBzZXJ2aWNlIGFsbCBvZiB0aGUgcmVhc3NtIHF1ZXVlIGlmIG5lZWRlZCAqLwotCWlmIChT
Q1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpIHsKKwlpZiAo
U0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKSB7CiAJCS8q
IEFzc3VyZSB0aGF0IHdlIGFjayByaWdodCBhd2F5ICovCiAJCXN0Y2ItPmFzb2Muc2VuZF9zYWNr
ID0gMTsKIAl9CkBAIC0zMDU5LDcgKzMxMTksNyBAQCBzY3RwX3Byb2Nlc3Nfc2VnbWVudF9yYW5n
ZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX3RtaXRfY2h1bmsgKipwX3RwMQog
CQkJCQkJdHAxLT53aG9Uby0+bmV0X2FjayArPSB0cDEtPnNlbmRfc2l6ZTsKIAkJCQkJCWlmICh0
cDEtPnNuZF9jb3VudCA8IDIpIHsKIAkJCQkJCQkvKi0KLQkJCQkJCQkgKiBUcnVlIG5vbi1yZXRy
YW5zbWl0ZWQgY2h1bmsKKwkJCQkJCQkgKiBUcnVlIG5vbi1yZXRyYW5zbWl0dGVkIGNodW5rCiAJ
CQkJCQkJICovCiAJCQkJCQkJdHAxLT53aG9Uby0+bmV0X2FjazIgKz0gdHAxLT5zZW5kX3NpemU7
CiAKQEAgLTMwNjcsMTMgKzMxMjcsMTIgQEAgc2N0cF9wcm9jZXNzX3NlZ21lbnRfcmFuZ2Uoc3Ry
dWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF90bWl0X2NodW5rICoqcF90cDEKIAkJCQkJ
CQkgKiB1cGRhdGUgUlRPIHRvbyA/CiAJCQkJCQkJICovCiAJCQkJCQkJaWYgKHRwMS0+ZG9fcnR0
KSB7Ci0JCQkJCQkJCWlmICgqcnRvX29rKSB7Ci0JCQkJCQkJCQl0cDEtPndob1RvLT5SVE8gPQot
CQkJCQkJCQkJCXNjdHBfY2FsY3VsYXRlX3J0byhzdGNiLAotCQkJCQkJCQkJCQkJICAgJnN0Y2It
PmFzb2MsCi0JCQkJCQkJCQkJCQkgICB0cDEtPndob1RvLAotCQkJCQkJCQkJCQkJICAgJnRwMS0+
c2VudF9yY3ZfdGltZSwKLQkJCQkJCQkJCQkJCSAgIFNDVFBfUlRUX0ZST01fREFUQSk7CisJCQkJ
CQkJCWlmICgqcnRvX29rICYmCisJCQkJCQkJCSAgICBzY3RwX2NhbGN1bGF0ZV9ydG8oc3RjYiwK
KwkJCQkJCQkJICAgICAgICAgICAgICAgICAgICAgICAmc3RjYi0+YXNvYywKKwkJCQkJCQkJICAg
ICAgICAgICAgICAgICAgICAgICB0cDEtPndob1RvLAorCQkJCQkJCQkgICAgICAgICAgICAgICAg
ICAgICAgICZ0cDEtPnNlbnRfcmN2X3RpbWUsCisJCQkJCQkJCSAgICAgICAgICAgICAgICAgICAg
ICAgU0NUUF9SVFRfRlJPTV9EQVRBKSkgewogCQkJCQkJCQkJKnJ0b19vayA9IDA7CiAJCQkJCQkJ
CX0KIAkJCQkJCQkJaWYgKHRwMS0+d2hvVG8tPnJ0b19uZWVkZWQgPT0gMCkgewpAQCAtMzMzNCw3
ICszMzkzLDcgQEAgc2N0cF9zdHJpa2VfZ2FwX2Fja19jaHVua3Moc3RydWN0IHNjdHBfdGNiICpz
dGNiLCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKIAkJaWYgKHN0Y2ItPmFzb2MucHJz
Y3RwX3N1cHBvcnRlZCkgewogCQkJaWYgKChQUl9TQ1RQX1RUTF9FTkFCTEVEKHRwMS0+ZmxhZ3Mp
KSAmJiB0cDEtPnNlbnQgPCBTQ1RQX0RBVEFHUkFNX0FDS0VEKSB7CiAJCQkJLyogSXMgaXQgZXhw
aXJlZD8gKi8KLSNpZm5kZWYgX19GcmVlQlNEX18KKyNpZiAhKGRlZmluZWQoX19GcmVlQlNEX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pKQogCQkJCWlmICh0aW1lcmNtcCgmbm93LCAmdHAx
LT5yZWMuZGF0YS50aW1ldG9kcm9wLCA+KSkgewogI2Vsc2UKIAkJCQlpZiAodGltZXZhbGNtcCgm
bm93LCAmdHAxLT5yZWMuZGF0YS50aW1ldG9kcm9wLCA+KSkgewpAQCAtMzc2Miw3ICszODIxLDcg
QEAgc2N0cF90cnlfYWR2YW5jZV9wZWVyX2Fja19wb2ludChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2Is
CiAJCQkgKiBOb3cgaXMgdGhpcyBvbmUgbWFya2VkIGZvciByZXNlbmQgYW5kIGl0cyB0aW1lIGlz
CiAJCQkgKiBub3cgdXA/CiAJCQkgKi8KLSNpZm5kZWYgX19GcmVlQlNEX18KKyNpZiAhKGRlZmlu
ZWQoX19GcmVlQlNEX18pICAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkKIAkJCWlmICh0aW1l
cmNtcCgmbm93LCAmdHAxLT5yZWMuZGF0YS50aW1ldG9kcm9wLCA+KSkgewogI2Vsc2UKIAkJCWlm
ICh0aW1ldmFsY21wKCZub3csICZ0cDEtPnJlYy5kYXRhLnRpbWV0b2Ryb3AsID4pKSB7CkBAIC0z
OTcxLDEwICs0MDMwLDExIEBAIHNjdHBfZXhwcmVzc19oYW5kbGVfc2FjayhzdHJ1Y3Qgc2N0cF90
Y2IgKnN0Y2IsIHVpbnQzMl90IGN1bWFjaywKIAogCQkqYWJvcnRfbm93ID0gMTsKIAkJLyogWFhY
ICovCi0JCXNucHJpbnRmKG1zZywgc2l6ZW9mKG1zZyksICJDdW0gYWNrICU4Ljh4IGdyZWF0ZXIg
b3IgZXF1YWwgdGhhbiBUU04gJTguOHgiLAotCQkJIGN1bWFjaywgc2VuZF9zKTsKKwkJU0NUUF9T
TlBSSU5URihtc2csIHNpemVvZihtc2cpLAorCQkgICAgICAgICAgICAgICJDdW0gYWNrICU4Ljh4
IGdyZWF0ZXIgb3IgZXF1YWwgdGhhbiBUU04gJTguOHgiLAorCQkgICAgICAgICAgICAgIGN1bWFj
aywgc2VuZF9zKTsKIAkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQX0NBVVNFX1BS
T1RPQ09MX1ZJT0xBVElPTiwgbXNnKTsKLQkJc3RjYi0+c2N0cF9lcC0+bGFzdF9hYm9ydF9jb2Rl
ID0gU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMjE7CisJCXN0Y2ItPnNjdHBfZXAt
Pmxhc3RfYWJvcnRfY29kZSA9IFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzI1Owog
CQlzY3RwX2Fib3J0X2FuX2Fzc29jaWF0aW9uKHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIG9wX2Vyciwg
U0NUUF9TT19OT1RfTE9DS0VEKTsKIAkJcmV0dXJuOwogCX0KQEAgLTQwMTksNyArNDA3OSw3IEBA
IHNjdHBfZXhwcmVzc19oYW5kbGVfc2FjayhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQzMl90
IGN1bWFjaywKIAkJCQkJdHAxLT53aG9Uby0+bmV0X2FjayArPSB0cDEtPnNlbmRfc2l6ZTsKIAkJ
CQkJaWYgKHRwMS0+c25kX2NvdW50IDwgMikgewogCQkJCQkJLyoKLQkJCQkJCSAqIFRydWUgbm9u
LXJldHJhbnNtaXRlZAorCQkJCQkJICogVHJ1ZSBub24tcmV0cmFuc21pdHRlZAogCQkJCQkJICog
Y2h1bmsKIAkJCQkJCSAqLwogCQkJCQkJdHAxLT53aG9Uby0+bmV0X2FjazIgKz0KQEAgLTQwMjcs
MTYgKzQwODcsMTIgQEAgc2N0cF9leHByZXNzX2hhbmRsZV9zYWNrKHN0cnVjdCBzY3RwX3RjYiAq
c3RjYiwgdWludDMyX3QgY3VtYWNrLAogCiAJCQkJCQkvKiB1cGRhdGUgUlRPIHRvbz8gKi8KIAkJ
CQkJCWlmICh0cDEtPmRvX3J0dCkgewotCQkJCQkJCWlmIChydG9fb2spIHsKLQkJCQkJCQkJdHAx
LT53aG9Uby0+UlRPID0KLQkJCQkJCQkJCS8qCi0JCQkJCQkJCQkgKiBzYV9pZ25vcmUKLQkJCQkJ
CQkJCSAqIE5PX05VTExfQ0hLCi0JCQkJCQkJCQkgKi8KLQkJCQkJCQkJCXNjdHBfY2FsY3VsYXRl
X3J0byhzdGNiLAotCQkJCQkJCQkJCQkgICBhc29jLCB0cDEtPndob1RvLAotCQkJCQkJCQkJCQkg
ICAmdHAxLT5zZW50X3Jjdl90aW1lLAotCQkJCQkJCQkJCQkgICBTQ1RQX1JUVF9GUk9NX0RBVEEp
OworCQkJCQkJCWlmIChydG9fb2sgJiYKKwkJCQkJCQkgICAgc2N0cF9jYWxjdWxhdGVfcnRvKHN0
Y2IsCisJCQkJCQkJCQkgICAgICAgJnN0Y2ItPmFzb2MsCisJCQkJCQkJCQkgICAgICAgdHAxLT53
aG9UbywKKwkJCQkJCQkJCSAgICAgICAmdHAxLT5zZW50X3Jjdl90aW1lLAorCQkJCQkJCQkJICAg
ICAgIFNDVFBfUlRUX0ZST01fREFUQSkpIHsKIAkJCQkJCQkJcnRvX29rID0gMDsKIAkJCQkJCQl9
CiAJCQkJCQkJaWYgKHRwMS0+d2hvVG8tPnJ0b19uZWVkZWQgPT0gMCkgewpAQCAtNDEyOSw3ICs0
MTg1LDcgQEAgc2N0cF9leHByZXNzX2hhbmRsZV9zYWNrKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwg
dWludDMyX3QgY3VtYWNrLAogCQkJICAgICAoaW5wLT5zZW5kX3NiX3RocmVzaG9sZCA9PSAwKSkp
IHsKIAkJCQlhdG9taWNfYWRkX2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIDEpOwogCQkJCVNDVFBf
VENCX1VOTE9DSyhzdGNiKTsKLQkJCQlpbnAtPnNlbmRfY2FsbGJhY2soc3RjYi0+c2N0cF9zb2Nr
ZXQsIHNiX2ZyZWVfbm93KTsKKwkJCQlpbnAtPnNlbmRfY2FsbGJhY2soc3RjYi0+c2N0cF9zb2Nr
ZXQsIHNiX2ZyZWVfbm93LCBpbnAtPnVscF9pbmZvKTsKIAkJCQlTQ1RQX1RDQl9MT0NLKHN0Y2Ip
OwogCQkJCWF0b21pY19zdWJ0cmFjdF9pbnQoJnN0Y2ItPmFzb2MucmVmY250LCAxKTsKIAkJCX0K
QEAgLTQxMzksNyArNDE5NSw3IEBAIHNjdHBfZXhwcmVzc19oYW5kbGVfc2FjayhzdHJ1Y3Qgc2N0
cF90Y2IgKnN0Y2IsIHVpbnQzMl90IGN1bWFjaywKIAkvKiBzYV9pZ25vcmUgTk9fTlVMTF9DSEsg
Ki8KIAlpZiAoc3RjYi0+c2N0cF9zb2NrZXQpIHsKICNlbmRpZgotI2lmIGRlZmluZWQoX19BUFBM
RV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBM
RV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlzdHJ1Y3Qgc29ja2V0ICpzbzsKIAog
I2VuZGlmCkBAIC00MTQ4LDcgKzQyMDQsNyBAQCBzY3RwX2V4cHJlc3NfaGFuZGxlX3NhY2soc3Ry
dWN0IHNjdHBfdGNiICpzdGNiLCB1aW50MzJfdCBjdW1hY2ssCiAJCQkvKiBzYV9pZ25vcmUgTk9f
TlVMTF9DSEsgKi8KIAkJCXNjdHBfd2FrZXVwX2xvZyhzdGNiLCAxLCBTQ1RQX1dBS0VTTkRfRlJP
TV9TQUNLKTsKIAkJfQotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09f
TE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCQlzbyA9IFNDVFBfSU5QX1NPKHN0Y2ItPnNjdHBfZXApOwogCQlhdG9taWNfYWRk
X2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIDEpOwogCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CkBA
IC00MTYyLDcgKzQyMTgsNyBAQCBzY3RwX2V4cHJlc3NfaGFuZGxlX3NhY2soc3RydWN0IHNjdHBf
dGNiICpzdGNiLCB1aW50MzJfdCBjdW1hY2ssCiAJCX0KICNlbmRpZgogCQlzY3RwX3Nvd3dha2V1
cF9sb2NrZWQoc3RjYi0+c2N0cF9lcCwgc3RjYi0+c2N0cF9zb2NrZXQpOwotI2lmIGRlZmluZWQo
X19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQo
X19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlTQ1RQX1NPQ0tFVF9VTkxP
Q0soc28sIDEpOwogI2VuZGlmCiAJfSBlbHNlIHsKQEAgLTQxOTcsNyArNDI1Myw3IEBAIHNjdHBf
ZXhwcmVzc19oYW5kbGVfc2FjayhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQzMl90IGN1bWFj
aywKIAkJCQkJbmV0LT5kZXN0X3N0YXRlICY9IH5TQ1RQX0FERFJfUEY7CiAJCQkJCXNjdHBfdGlt
ZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfSEVBUlRCRUFULAogCQkJCQkgICAgICAgICAgICAgICAg
c3RjYi0+c2N0cF9lcCwgc3RjYiwgbmV0LAotCQkJCQkgICAgICAgICAgICAgICAgU0NUUF9GUk9N
X1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMjIpOworCQkJCQkgICAgICAgICAgICAgICAgU0NUUF9G
Uk9NX1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMjYpOwogCQkJCQlzY3RwX3RpbWVyX3N0YXJ0KFND
VFBfVElNRVJfVFlQRV9IRUFSVEJFQVQsIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIG5ldCk7CiAJCQkJ
CWFzb2MtPmNjX2Z1bmN0aW9ucy5zY3RwX2N3bmRfdXBkYXRlX2V4aXRfcGYoc3RjYiwgbmV0KTsK
IAkJCQkJLyogRG9uZSB3aXRoIHRoaXMgbmV0ICovCkBAIC00MjcyLDcgKzQzMjgsNyBAQCBhZ2Fp
bjoKIAkJCX0gZWxzZSBpZiAoU0NUUF9PU19USU1FUl9QRU5ESU5HKCZuZXQtPnJ4dF90aW1lci50
aW1lcikpIHsKIAkJCQlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX1NFTkQsIHN0Y2It
PnNjdHBfZXAsCiAJCQkJICAgICAgICAgICAgICAgIHN0Y2IsIG5ldCwKLQkJCQkgICAgICAgICAg
ICAgICAgU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMjMpOworCQkJCSAgICAgICAg
ICAgICAgICBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18yNyk7CiAJCQl9CiAJCX0K
IAl9CkBAIC00MzExLDEyICs0MzY3LDEyIEBAIGFnYWluOgogCQkvKiBjbGVhbiB1cCAqLwogCQlp
ZiAoKGFzb2MtPnN0cmVhbV9xdWV1ZV9jbnQgPT0gMSkgJiYKIAkJICAgICgoYXNvYy0+c3RhdGUg
JiBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJTkcpIHx8Ci0JCSAgICAgKGFzb2MtPnN0YXRlICYg
U0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkpICYmCisJCSAgICAgKFNDVFBfR0VUX1NUQVRF
KHN0Y2IpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpKSAmJgogCQkgICAgKCgqYXNv
Yy0+c3NfZnVuY3Rpb25zLnNjdHBfc3NfaXNfdXNlcl9tc2dzX2luY29tcGxldGUpKHN0Y2IsIGFz
b2MpKSkgewotCQkJYXNvYy0+c3RhdGUgfD0gU0NUUF9TVEFURV9QQVJUSUFMX01TR19MRUZUOwor
CQkJU0NUUF9BRERfU1VCU1RBVEUoc3RjYiwgU0NUUF9TVEFURV9QQVJUSUFMX01TR19MRUZUKTsK
IAkJfQogCQlpZiAoKChhc29jLT5zdGF0ZSAmIFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORykg
fHwKLQkJICAgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05f
UkVDRUlWRUQpKSAmJgorCQkgICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRF
X1NIVVRET1dOX1JFQ0VJVkVEKSkgJiYKIAkJICAgIChhc29jLT5zdHJlYW1fcXVldWVfY250ID09
IDEpICYmCiAJCSAgICAoYXNvYy0+c3RhdGUgJiBTQ1RQX1NUQVRFX1BBUlRJQUxfTVNHX0xFRlQp
KSB7CiAJCQlzdHJ1Y3QgbWJ1ZiAqb3BfZXJyOwpAQCAtNDMyNCw3ICs0MzgwLDcgQEAgYWdhaW46
CiAJCQkqYWJvcnRfbm93ID0gMTsKIAkJCS8qIFhYWCAqLwogCQkJb3BfZXJyID0gc2N0cF9nZW5l
cmF0ZV9jYXVzZShTQ1RQX0NBVVNFX1VTRVJfSU5JVElBVEVEX0FCVCwgIiIpOwotCQkJc3RjYi0+
c2N0cF9lcC0+bGFzdF9hYm9ydF9jb2RlID0gU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9M
T0NfMjQ7CisJCQlzdGNiLT5zY3RwX2VwLT5sYXN0X2Fib3J0X2NvZGUgPSBTQ1RQX0ZST01fU0NU
UF9JTkRBVEEgKyBTQ1RQX0xPQ18yODsKIAkJCXNjdHBfYWJvcnRfYW5fYXNzb2NpYXRpb24oc3Rj
Yi0+c2N0cF9lcCwgc3RjYiwgb3BfZXJyLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwogCQkJcmV0dXJu
OwogCQl9CkBAIC00MzMyLDEyICs0Mzg4LDExIEBAIGFnYWluOgogCQkgICAgKGFzb2MtPnN0cmVh
bV9xdWV1ZV9jbnQgPT0gMCkpIHsKIAkJCXN0cnVjdCBzY3RwX25ldHMgKm5ldHA7CiAKLQkJCWlm
ICgoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9PUEVOKSB8fAotCQkJICAgIChT
Q1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgewor
CQkJaWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHx8CisJCQkg
ICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQp
KSB7CiAJCQkJU0NUUF9TVEFUX0RFQ1JfR0FVR0UzMihzY3Rwc19jdXJyZXN0YWIpOwogCQkJfQot
CQkJU0NUUF9TRVRfU1RBVEUoYXNvYywgU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKTsKLQkJCVND
VFBfQ0xFQVJfU1VCU1RBVEUoYXNvYywgU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HKTsKKwkJ
CVNDVFBfU0VUX1NUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCk7CiAJCQlzY3Rw
X3N0b3BfdGltZXJzX2Zvcl9zaHV0ZG93bihzdGNiKTsKIAkJCWlmIChhc29jLT5hbHRlcm5hdGUp
IHsKIAkJCQluZXRwID0gYXNvYy0+YWx0ZXJuYXRlOwpAQCAtNDM0OCwxNCArNDQwMywxMyBAQCBh
Z2FpbjoKIAkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NIVVRET1dOLAogCQkJ
CQkgc3RjYi0+c2N0cF9lcCwgc3RjYiwgbmV0cCk7CiAJCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBf
VElNRVJfVFlQRV9TSFVURE9XTkdVQVJELAotCQkJCQkgc3RjYi0+c2N0cF9lcCwgc3RjYiwgbmV0
cCk7Ci0JCX0gZWxzZSBpZiAoKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfU0hV
VERPV05fUkVDRUlWRUQpICYmCisJCQkJCSBzdGNiLT5zY3RwX2VwLCBzdGNiLCBOVUxMKTsKKwkJ
fSBlbHNlIGlmICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9S
RUNFSVZFRCkgJiYKIAkJCSAgIChhc29jLT5zdHJlYW1fcXVldWVfY250ID09IDApKSB7CiAJCQlz
dHJ1Y3Qgc2N0cF9uZXRzICpuZXRwOwogCiAJCQlTQ1RQX1NUQVRfREVDUl9HQVVHRTMyKHNjdHBz
X2N1cnJlc3RhYik7Ci0JCQlTQ1RQX1NFVF9TVEFURShhc29jLCBTQ1RQX1NUQVRFX1NIVVRET1dO
X0FDS19TRU5UKTsKLQkJCVNDVFBfQ0xFQVJfU1VCU1RBVEUoYXNvYywgU0NUUF9TVEFURV9TSFVU
RE9XTl9QRU5ESU5HKTsKKwkJCVNDVFBfU0VUX1NUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfU0hVVERP
V05fQUNLX1NFTlQpOwogCQkJc2N0cF9zdG9wX3RpbWVyc19mb3Jfc2h1dGRvd24oc3RjYik7CiAJ
CQlpZiAoYXNvYy0+YWx0ZXJuYXRlKSB7CiAJCQkJbmV0cCA9IGFzb2MtPmFsdGVybmF0ZTsKQEAg
LTQzOTYsMTAgKzQ0NTAsMTUgQEAgYWdhaW46CiAJCQkJfQogCQkJfQogCQl9Ci0JCWlmIChsY2hr
KSB7CisJCWZvciAoOyBsY2hrICE9IE5VTEw7IGxjaGsgPSBUQUlMUV9ORVhUKGxjaGssIHNjdHBf
bmV4dCkpIHsKKwkJCWlmIChsY2hrLT53aG9UbyAhPSBOVUxMKSB7CisJCQkJYnJlYWs7CisJCQl9
CisJCX0KKwkJaWYgKGxjaGsgIT0gTlVMTCkgewogCQkJLyogQXNzdXJlIGEgdGltZXIgaXMgdXAg
Ki8KIAkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NFTkQsCi0JCQkJCSBzdGNi
LT5zY3RwX2VwLCBzdGNiLCBsY2hrLT53aG9Ubyk7CisJCQkgICAgICAgICAgICAgICAgIHN0Y2It
PnNjdHBfZXAsIHN0Y2IsIGxjaGstPndob1RvKTsKIAkJfQogCX0KIAlpZiAoU0NUUF9CQVNFX1NZ
U0NUTChzY3RwX2xvZ2dpbmdfbGV2ZWwpICYgU0NUUF9TQUNLX1JXTkRfTE9HR0lOR19FTkFCTEUp
IHsKQEAgLTQ1MzIsMTAgKzQ1OTEsMTEgQEAgc2N0cF9oYW5kbGVfc2FjayhzdHJ1Y3QgbWJ1ZiAq
bSwgaW50IG9mZnNldF9zZWcsIGludCBvZmZzZXRfZHVwLAogCWhvcGVsZXNzX3BlZXI6CiAJCSph
Ym9ydF9ub3cgPSAxOwogCQkvKiBYWFggKi8KLQkJc25wcmludGYobXNnLCBzaXplb2YobXNnKSwg
IkN1bSBhY2sgJTguOHggZ3JlYXRlciBvciBlcXVhbCB0aGFuIFRTTiAlOC44eCIsCi0JCQkgY3Vt
X2Fjaywgc2VuZF9zKTsKKwkJU0NUUF9TTlBSSU5URihtc2csIHNpemVvZihtc2cpLAorCQkgICAg
ICAgICAgICAgICJDdW0gYWNrICU4Ljh4IGdyZWF0ZXIgb3IgZXF1YWwgdGhhbiBUU04gJTguOHgi
LAorCQkgICAgICAgICAgICAgIGN1bV9hY2ssIHNlbmRfcyk7CiAJCW9wX2VyciA9IHNjdHBfZ2Vu
ZXJhdGVfY2F1c2UoU0NUUF9DQVVTRV9QUk9UT0NPTF9WSU9MQVRJT04sIG1zZyk7Ci0JCXN0Y2It
PnNjdHBfZXAtPmxhc3RfYWJvcnRfY29kZSA9IFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBf
TE9DXzI1OworCQlzdGNiLT5zY3RwX2VwLT5sYXN0X2Fib3J0X2NvZGUgPSBTQ1RQX0ZST01fU0NU
UF9JTkRBVEEgKyBTQ1RQX0xPQ18yOTsKIAkJc2N0cF9hYm9ydF9hbl9hc3NvY2lhdGlvbihzdGNi
LT5zY3RwX2VwLCBzdGNiLCBvcF9lcnIsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CiAJCXJldHVybjsK
IAl9CkBAIC00NTY3LDcgKzQ2MjcsNyBAQCBzY3RwX2hhbmRsZV9zYWNrKHN0cnVjdCBtYnVmICpt
LCBpbnQgb2Zmc2V0X3NlZywgaW50IG9mZnNldF9kdXAsCiAJCS8qIHN0b3AgYW55IHRpbWVycyAq
LwogCQlUQUlMUV9GT1JFQUNIKG5ldCwgJmFzb2MtPm5ldHMsIHNjdHBfbmV4dCkgewogCQkJc2N0
cF90aW1lcl9zdG9wKFNDVFBfVElNRVJfVFlQRV9TRU5ELCBzdGNiLT5zY3RwX2VwLAotCQkJICAg
ICAgICAgICAgICAgIHN0Y2IsIG5ldCwgU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9MT0Nf
MjYpOworCQkJICAgICAgICAgICAgICAgIHN0Y2IsIG5ldCwgU0NUUF9GUk9NX1NDVFBfSU5EQVRB
ICsgU0NUUF9MT0NfMzApOwogCQkJbmV0LT5wYXJ0aWFsX2J5dGVzX2Fja2VkID0gMDsKIAkJCW5l
dC0+ZmxpZ2h0X3NpemUgPSAwOwogCQl9CkBAIC00NjU3LDcgKzQ3MTcsNyBAQCBzY3RwX2hhbmRs
ZV9zYWNrKHN0cnVjdCBtYnVmICptLCBpbnQgb2Zmc2V0X3NlZywgaW50IG9mZnNldF9kdXAsCiAK
IAkJCQkJaWYgKHRwMS0+c25kX2NvdW50IDwgMikgewogCQkJCQkJLyoKLQkJCQkJCSAqIFRydWUg
bm9uLXJldHJhbnNtaXRlZAorCQkJCQkJICogVHJ1ZSBub24tcmV0cmFuc21pdHRlZAogCQkJCQkJ
ICogY2h1bmsKIAkJCQkJCSAqLwogCQkJCQkJdHAxLT53aG9Uby0+bmV0X2FjazIgKz0KQEAgLTQ2
NjUsMTIgKzQ3MjUsMTIgQEAgc2N0cF9oYW5kbGVfc2FjayhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IG9m
ZnNldF9zZWcsIGludCBvZmZzZXRfZHVwLAogCiAJCQkJCQkvKiB1cGRhdGUgUlRPIHRvbz8gKi8K
IAkJCQkJCWlmICh0cDEtPmRvX3J0dCkgewotCQkJCQkJCWlmIChydG9fb2spIHsKLQkJCQkJCQkJ
dHAxLT53aG9Uby0+UlRPID0KLQkJCQkJCQkJCXNjdHBfY2FsY3VsYXRlX3J0byhzdGNiLAotCQkJ
CQkJCQkJCQkgICBhc29jLCB0cDEtPndob1RvLAotCQkJCQkJCQkJCQkgICAmdHAxLT5zZW50X3Jj
dl90aW1lLAotCQkJCQkJCQkJCQkgICBTQ1RQX1JUVF9GUk9NX0RBVEEpOworCQkJCQkJCWlmIChy
dG9fb2sgJiYKKwkJCQkJCQkgICAgc2N0cF9jYWxjdWxhdGVfcnRvKHN0Y2IsCisJCQkJCQkJCQkg
ICAgICAgJnN0Y2ItPmFzb2MsCisJCQkJCQkJCQkgICAgICAgdHAxLT53aG9UbywKKwkJCQkJCQkJ
CSAgICAgICAmdHAxLT5zZW50X3Jjdl90aW1lLAorCQkJCQkJCQkJICAgICAgIFNDVFBfUlRUX0ZS
T01fREFUQSkpIHsKIAkJCQkJCQkJcnRvX29rID0gMDsKIAkJCQkJCQl9CiAJCQkJCQkJaWYgKHRw
MS0+d2hvVG8tPnJ0b19uZWVkZWQgPT0gMCkgewpAQCAtNDc2NywxNCArNDgyNywxNCBAQCBzY3Rw
X2hhbmRsZV9zYWNrKHN0cnVjdCBtYnVmICptLCBpbnQgb2Zmc2V0X3NlZywgaW50IG9mZnNldF9k
dXAsCiAJCQlpZiAobmV0LT5uZXdfcHNldWRvX2N1bWFjaykKIAkJCQlzY3RwX3RpbWVyX3N0b3Ao
U0NUUF9USU1FUl9UWVBFX1NFTkQsIHN0Y2ItPnNjdHBfZXAsCiAJCQkJICAgICAgICAgICAgICAg
IHN0Y2IsIG5ldCwKLQkJCQkgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsg
U0NUUF9MT0NfMjcpOworCQkJCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUF9JTkRBVEEg
KyBTQ1RQX0xPQ18zMSk7CiAKIAkJfQogCX0gZWxzZSB7CiAJCWlmIChhY2N1bV9tb3ZlZCkgewog
CQkJVEFJTFFfRk9SRUFDSChuZXQsICZhc29jLT5uZXRzLCBzY3RwX25leHQpIHsKIAkJCQlzY3Rw
X3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX1NFTkQsIHN0Y2ItPnNjdHBfZXAsCi0JCQkJICAg
ICAgICAgICAgICAgIHN0Y2IsIG5ldCwgU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9MT0Nf
MjgpOworCQkJCSAgICAgICAgICAgICAgICBzdGNiLCBuZXQsIFNDVFBfRlJPTV9TQ1RQX0lOREFU
QSArIFNDVFBfTE9DXzMyKTsKIAkJCX0KIAkJfQogCX0KQEAgLTQ4NTMsNyArNDkxMyw3IEBAIHNj
dHBfaGFuZGxlX3NhY2soc3RydWN0IG1idWYgKm0sIGludCBvZmZzZXRfc2VnLCBpbnQgb2Zmc2V0
X2R1cCwKIAkJCSAgICAoaW5wLT5zZW5kX3NiX3RocmVzaG9sZCA9PSAwKSkpIHsKIAkJCQlhdG9t
aWNfYWRkX2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIDEpOwogCQkJCVNDVFBfVENCX1VOTE9DSyhz
dGNiKTsKLQkJCQlpbnAtPnNlbmRfY2FsbGJhY2soc3RjYi0+c2N0cF9zb2NrZXQsIHNiX2ZyZWVf
bm93KTsKKwkJCQlpbnAtPnNlbmRfY2FsbGJhY2soc3RjYi0+c2N0cF9zb2NrZXQsIHNiX2ZyZWVf
bm93LCBpbnAtPnVscF9pbmZvKTsKIAkJCQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwogCQkJCWF0b21p
Y19zdWJ0cmFjdF9pbnQoJnN0Y2ItPmFzb2MucmVmY250LCAxKTsKIAkJCX0KQEAgLTQ4NjMsNyAr
NDkyMyw3IEBAIHNjdHBfaGFuZGxlX3NhY2soc3RydWN0IG1idWYgKm0sIGludCBvZmZzZXRfc2Vn
LCBpbnQgb2Zmc2V0X2R1cCwKIAkvKiBzYV9pZ25vcmUgTk9fTlVMTF9DSEsgKi8KIAlpZiAoKHdh
a2VfaGltKSAmJiAoc3RjYi0+c2N0cF9zb2NrZXQpKSB7CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9f
QVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9f
QVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJc3RydWN0IHNvY2tldCAqc287
CiAKICNlbmRpZgpAQCAtNDg3MSw3ICs0OTMxLDcgQEAgc2N0cF9oYW5kbGVfc2FjayhzdHJ1Y3Qg
bWJ1ZiAqbSwgaW50IG9mZnNldF9zZWcsIGludCBvZmZzZXRfZHVwLAogCQlpZiAoU0NUUF9CQVNF
X1NZU0NUTChzY3RwX2xvZ2dpbmdfbGV2ZWwpICYgU0NUUF9XQUtFX0xPR0dJTkdfRU5BQkxFKSB7
CiAJCQlzY3RwX3dha2V1cF9sb2coc3RjYiwgd2FrZV9oaW0sIFNDVFBfV0FLRVNORF9GUk9NX1NB
Q0spOwogCQl9Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NL
X1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAJCXNvID0gU0NUUF9JTlBfU08oc3RjYi0+c2N0cF9lcCk7CiAJCWF0b21pY19hZGRfaW50
KCZzdGNiLT5hc29jLnJlZmNudCwgMSk7CiAJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKQEAgLTQ4
ODUsNyArNDk0NSw3IEBAIHNjdHBfaGFuZGxlX3NhY2soc3RydWN0IG1idWYgKm0sIGludCBvZmZz
ZXRfc2VnLCBpbnQgb2Zmc2V0X2R1cCwKIAkJfQogI2VuZGlmCiAJCXNjdHBfc293d2FrZXVwX2xv
Y2tlZChzdGNiLT5zY3RwX2VwLCBzdGNiLT5zY3RwX3NvY2tldCk7Ci0jaWYgZGVmaW5lZChfX0FQ
UExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQ
UExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCVNDVFBfU09DS0VUX1VOTE9DSyhz
bywgMSk7CiAjZW5kaWYKIAl9IGVsc2UgewpAQCAtNDk3OSw3ICs1MDM5LDcgQEAgc2N0cF9oYW5k
bGVfc2FjayhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IG9mZnNldF9zZWcsIGludCBvZmZzZXRfZHVwLAog
CQkJCQluZXQtPmRlc3Rfc3RhdGUgJj0gflNDVFBfQUREUl9QRjsKIAkJCQkJc2N0cF90aW1lcl9z
dG9wKFNDVFBfVElNRVJfVFlQRV9IRUFSVEJFQVQsCiAJCQkJCSAgICAgICAgICAgICAgICBzdGNi
LT5zY3RwX2VwLCBzdGNiLCBuZXQsCi0JCQkJCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NU
UF9JTkRBVEEgKyBTQ1RQX0xPQ18yOSk7CisJCQkJCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01f
U0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18zMyk7CiAJCQkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9U
SU1FUl9UWVBFX0hFQVJUQkVBVCwgc3RjYi0+c2N0cF9lcCwgc3RjYiwgbmV0KTsKIAkJCQkJYXNv
Yy0+Y2NfZnVuY3Rpb25zLnNjdHBfY3duZF91cGRhdGVfZXhpdF9wZihzdGNiLCBuZXQpOwogCQkJ
CQkvKiBEb25lIHdpdGggdGhpcyBuZXQgKi8KQEAgLTUwMDQsNyArNTA2NCw3IEBAIHNjdHBfaGFu
ZGxlX3NhY2soc3RydWN0IG1idWYgKm0sIGludCBvZmZzZXRfc2VnLCBpbnQgb2Zmc2V0X2R1cCwK
IAkJCS8qIHN0b3AgYWxsIHRpbWVycyAqLwogCQkJc2N0cF90aW1lcl9zdG9wKFNDVFBfVElNRVJf
VFlQRV9TRU5ELCBzdGNiLT5zY3RwX2VwLAogCQkJICAgICAgICAgICAgICAgIHN0Y2IsIG5ldCwK
LQkJCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18zMCk7
CisJCQkgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMzQp
OwogCQkJbmV0LT5mbGlnaHRfc2l6ZSA9IDA7CiAJCQluZXQtPnBhcnRpYWxfYnl0ZXNfYWNrZWQg
PSAwOwogCQl9CkBAIC01MDI5LDEyICs1MDg5LDEyIEBAIHNjdHBfaGFuZGxlX3NhY2soc3RydWN0
IG1idWYgKm0sIGludCBvZmZzZXRfc2VnLCBpbnQgb2Zmc2V0X2R1cCwKIAkJLyogY2xlYW4gdXAg
Ki8KIAkJaWYgKChhc29jLT5zdHJlYW1fcXVldWVfY250ID09IDEpICYmCiAJCSAgICAoKGFzb2Mt
PnN0YXRlICYgU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HKSB8fAotCQkgICAgIChhc29jLT5z
dGF0ZSAmIFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpKSAmJgorCQkgICAgIChTQ1RQX0dF
VF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgJiYKIAkJICAg
ICgoKmFzb2MtPnNzX2Z1bmN0aW9ucy5zY3RwX3NzX2lzX3VzZXJfbXNnc19pbmNvbXBsZXRlKShz
dGNiLCBhc29jKSkpIHsKLQkJCWFzb2MtPnN0YXRlIHw9IFNDVFBfU1RBVEVfUEFSVElBTF9NU0df
TEVGVDsKKwkJCVNDVFBfQUREX1NVQlNUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfUEFSVElBTF9NU0df
TEVGVCk7CiAJCX0KIAkJaWYgKCgoYXNvYy0+c3RhdGUgJiBTQ1RQX1NUQVRFX1NIVVRET1dOX1BF
TkRJTkcpIHx8Ci0JCSAgICAgIChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX1NI
VVRET1dOX1JFQ0VJVkVEKSkgJiYKKwkJICAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NU
UF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkpICYmCiAJCSAgICAoYXNvYy0+c3RyZWFtX3F1ZXVl
X2NudCA9PSAxKSAmJgogCQkgICAgKGFzb2MtPnN0YXRlICYgU0NUUF9TVEFURV9QQVJUSUFMX01T
R19MRUZUKSkgewogCQkJc3RydWN0IG1idWYgKm9wX2VycjsKQEAgLTUwNDIsNyArNTEwMiw3IEBA
IHNjdHBfaGFuZGxlX3NhY2soc3RydWN0IG1idWYgKm0sIGludCBvZmZzZXRfc2VnLCBpbnQgb2Zm
c2V0X2R1cCwKIAkJCSphYm9ydF9ub3cgPSAxOwogCQkJLyogWFhYICovCiAJCQlvcF9lcnIgPSBz
Y3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBfQ0FVU0VfVVNFUl9JTklUSUFURURfQUJULCAiIik7Ci0J
CQlzdGNiLT5zY3RwX2VwLT5sYXN0X2Fib3J0X2NvZGUgPSBTQ1RQX0ZST01fU0NUUF9JTkRBVEEg
KyBTQ1RQX0xPQ18yNDsKKwkJCXN0Y2ItPnNjdHBfZXAtPmxhc3RfYWJvcnRfY29kZSA9IFNDVFBf
RlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzM1OwogCQkJc2N0cF9hYm9ydF9hbl9hc3NvY2lh
dGlvbihzdGNiLT5zY3RwX2VwLCBzdGNiLCBvcF9lcnIsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CiAJ
CQlyZXR1cm47CiAJCX0KQEAgLTUwNTAsMTIgKzUxMTAsMTEgQEAgc2N0cF9oYW5kbGVfc2Fjayhz
dHJ1Y3QgbWJ1ZiAqbSwgaW50IG9mZnNldF9zZWcsIGludCBvZmZzZXRfZHVwLAogCQkgICAgKGFz
b2MtPnN0cmVhbV9xdWV1ZV9jbnQgPT0gMCkpIHsKIAkJCXN0cnVjdCBzY3RwX25ldHMgKm5ldHA7
CiAKLQkJCWlmICgoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9PUEVOKSB8fAot
CQkJICAgIChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJ
VkVEKSkgeworCQkJaWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX09QRU4p
IHx8CisJCQkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfU0hVVERPV05f
UkVDRUlWRUQpKSB7CiAJCQkJU0NUUF9TVEFUX0RFQ1JfR0FVR0UzMihzY3Rwc19jdXJyZXN0YWIp
OwogCQkJfQotCQkJU0NUUF9TRVRfU1RBVEUoYXNvYywgU0NUUF9TVEFURV9TSFVURE9XTl9TRU5U
KTsKLQkJCVNDVFBfQ0xFQVJfU1VCU1RBVEUoYXNvYywgU0NUUF9TVEFURV9TSFVURE9XTl9QRU5E
SU5HKTsKKwkJCVNDVFBfU0VUX1NUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCk7
CiAJCQlzY3RwX3N0b3BfdGltZXJzX2Zvcl9zaHV0ZG93bihzdGNiKTsKIAkJCWlmIChhc29jLT5h
bHRlcm5hdGUpIHsKIAkJCQluZXRwID0gYXNvYy0+YWx0ZXJuYXRlOwpAQCAtNTA2NiwxNSArNTEy
NSwxNCBAQCBzY3RwX2hhbmRsZV9zYWNrKHN0cnVjdCBtYnVmICptLCBpbnQgb2Zmc2V0X3NlZywg
aW50IG9mZnNldF9kdXAsCiAJCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9TSFVU
RE9XTiwKIAkJCQkJIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIG5ldHApOwogCQkJc2N0cF90aW1lcl9z
dGFydChTQ1RQX1RJTUVSX1RZUEVfU0hVVERPV05HVUFSRCwKLQkJCQkJIHN0Y2ItPnNjdHBfZXAs
IHN0Y2IsIG5ldHApOworCQkJCQkgc3RjYi0+c2N0cF9lcCwgc3RjYiwgTlVMTCk7CiAJCQlyZXR1
cm47Ci0JCX0gZWxzZSBpZiAoKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfU0hV
VERPV05fUkVDRUlWRUQpICYmCisJCX0gZWxzZSBpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09
IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpICYmCiAJCQkgICAoYXNvYy0+c3RyZWFtX3F1
ZXVlX2NudCA9PSAwKSkgewogCQkJc3RydWN0IHNjdHBfbmV0cyAqbmV0cDsKIAogCQkJU0NUUF9T
VEFUX0RFQ1JfR0FVR0UzMihzY3Rwc19jdXJyZXN0YWIpOwotCQkJU0NUUF9TRVRfU1RBVEUoYXNv
YywgU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tfU0VOVCk7Ci0JCQlTQ1RQX0NMRUFSX1NVQlNUQVRF
KGFzb2MsIFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORyk7CisJCQlTQ1RQX1NFVF9TVEFURShz
dGNiLCBTQ1RQX1NUQVRFX1NIVVRET1dOX0FDS19TRU5UKTsKIAkJCXNjdHBfc3RvcF90aW1lcnNf
Zm9yX3NodXRkb3duKHN0Y2IpOwogCQkJaWYgKGFzb2MtPmFsdGVybmF0ZSkgewogCQkJCW5ldHAg
PSBhc29jLT5hbHRlcm5hdGU7CkBAIC01MTkwLDcgKzUyNDgsNyBAQCBhZ2FpbjoKIAkJCX0gZWxz
ZSBpZiAoU0NUUF9PU19USU1FUl9QRU5ESU5HKCZuZXQtPnJ4dF90aW1lci50aW1lcikpIHsKIAkJ
CQlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX1NFTkQsIHN0Y2ItPnNjdHBfZXAsCiAJ
CQkJICAgICAgICAgICAgICAgIHN0Y2IsIG5ldCwKLQkJCQkgICAgICAgICAgICAgICAgU0NUUF9G
Uk9NX1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMzIpOworCQkJCSAgICAgICAgICAgICAgICBTQ1RQ
X0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18zNik7CiAJCQl9CiAJCX0KIAl9CkBAIC01MjU1
LDcgKzUzMTMsMTIgQEAgYWdhaW46CiAJCQkJfQogCQkJfQogCQl9Ci0JCWlmIChsY2hrKSB7CisJ
CWZvciAoOyBsY2hrICE9IE5VTEw7IGxjaGsgPSBUQUlMUV9ORVhUKGxjaGssIHNjdHBfbmV4dCkp
IHsKKwkJCWlmIChsY2hrLT53aG9UbyAhPSBOVUxMKSB7CisJCQkJYnJlYWs7CisJCQl9CisJCX0K
KwkJaWYgKGxjaGsgIT0gTlVMTCkgewogCQkJLyogQXNzdXJlIGEgdGltZXIgaXMgdXAgKi8KIAkJ
CXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NFTkQsCiAJCQkgICAgICAgICAgICAg
ICAgIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIGxjaGstPndob1RvKTsKQEAgLTU0MjksMTMgKzU0OTIs
MTEgQEAgc2N0cF9raWNrX3Byc2N0cF9yZW9yZGVyX3F1ZXVlKHN0cnVjdCBzY3RwX3RjYiAqc3Rj
YiwKIAogc3RhdGljIHZvaWQKIHNjdHBfZmx1c2hfcmVhc3NtX2Zvcl9zdHJfc2VxKHN0cnVjdCBz
Y3RwX3RjYiAqc3RjYiwKLQlzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKLQl1aW50MTZf
dCBzdHJlYW0sIHVpbnQzMl90IG1pZCwgaW50IG9yZGVyZWQsIHVpbnQzMl90IGN1bXRzbikKKwlz
dHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywgc3RydWN0IHNjdHBfc3RyZWFtX2luICpzdHJt
LAorCXN0cnVjdCBzY3RwX3F1ZXVlZF90b19yZWFkICpjb250cm9sLCBpbnQgb3JkZXJlZCwgdWlu
dDMyX3QgY3VtdHNuKQogewotCXN0cnVjdCBzY3RwX3F1ZXVlZF90b19yZWFkICpjb250cm9sOwot
CXN0cnVjdCBzY3RwX3N0cmVhbV9pbiAqc3RybTsKIAlzdHJ1Y3Qgc2N0cF90bWl0X2NodW5rICpj
aGssICpuY2hrOwotCWludCBjbnRfcmVtb3ZlZD0wOworCWludCBjbnRfcmVtb3ZlZCA9IDA7CiAK
IAkvKgogCSAqIEZvciBub3cgbGFyZ2UgbWVzc2FnZXMgaGVsZCBvbiB0aGUgc3RyZWFtIHJlYXNt
IHRoYXQgYXJlCkBAIC01NDQ1LDEyICs1NTA2LDYgQEAgc2N0cF9mbHVzaF9yZWFzc21fZm9yX3N0
cl9zZXEoc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCSAqIGRlbGl2ZXJ5IGZ1bmN0aW9uLi4uIHRv
IHNlZSBpZiBpdCBjYW4gYmUgZGVsaXZlcmVkLi4uIEJ1dAogCSAqIGZvciBub3cgd2UganVzdCBk
dW1wIGV2ZXJ5dGhpbmcgb24gdGhlIHF1ZXVlLgogCSAqLwotCXN0cm0gPSAmYXNvYy0+c3RybWlu
W3N0cmVhbV07Ci0JY29udHJvbCA9IHNjdHBfZmluZF9yZWFzbV9lbnRyeShzdHJtLCBtaWQsIG9y
ZGVyZWQsIGFzb2MtPmlkYXRhX3N1cHBvcnRlZCk7Ci0JaWYgKGNvbnRyb2wgPT0gTlVMTCkgewot
CQkvKiBOb3QgZm91bmQgKi8KLQkJcmV0dXJuOwotCX0KIAlpZiAoIWFzb2MtPmlkYXRhX3N1cHBv
cnRlZCAmJiAhb3JkZXJlZCAmJiBTQ1RQX1RTTl9HVChjb250cm9sLT5mc25faW5jbHVkZWQsIGN1
bXRzbikpIHsKIAkJcmV0dXJuOwogCX0KQEAgLTU1NDAsMTAgKzU1OTUsMTAgQEAgc2N0cF9oYW5k
bGVfZm9yd2FyZF90c24oc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCSAqCiAJICogQXNzdW1lIHdl
IGdldCBGd2RUU04oeCk6CiAJICoKLQkgKiAxKSB1cGRhdGUgbG9jYWwgY3VtVFNOIHRvIHggCi0J
ICogMikgdHJ5IHRvIGZ1cnRoZXIgYWR2YW5jZSBjdW1UU04gdG8geCArIG90aGVycyB3ZSBoYXZl
IAotCSAqIDMpIGV4YW1pbmUgYW5kIHVwZGF0ZSByZS1vcmRlcmluZyBxdWV1ZSBvbiBwci1pbi1z
dHJlYW1zIAotCSAqIDQpIGNsZWFuIHVwIHJlLWFzc2VtYmx5IHF1ZXVlIAorCSAqIDEpIHVwZGF0
ZSBsb2NhbCBjdW1UU04gdG8geAorCSAqIDIpIHRyeSB0byBmdXJ0aGVyIGFkdmFuY2UgY3VtVFNO
IHRvIHggKyBvdGhlcnMgd2UgaGF2ZQorCSAqIDMpIGV4YW1pbmUgYW5kIHVwZGF0ZSByZS1vcmRl
cmluZyBxdWV1ZSBvbiBwci1pbi1zdHJlYW1zCisJICogNCkgY2xlYW4gdXAgcmUtYXNzZW1ibHkg
cXVldWUKIAkgKiA1KSBTZW5kIGEgc2FjayB0byByZXBvcnQgd2hlcmUgd2UgYXJlLgogCSAqLwog
CXN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jOwpAQCAtNTU4NSwxMSArNTY0MCwxMSBAQCBz
Y3RwX2hhbmRsZV9mb3J3YXJkX3RzbihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCQkgKiBnaXZl
IG91dCkuIFRoaXMgbXVzdCBiZSBhbiBhdHRhY2tlci4KIAkJCSAqLwogCQkJKmFib3J0X2ZsYWcg
PSAxOwotCQkJc25wcmludGYobXNnLCBzaXplb2YobXNnKSwKLQkJCSAgICAgICAgICJOZXcgY3Vt
IGFjayAlOC44eCB0b28gaGlnaCwgaGlnaGVzdCBUU04gJTguOHgiLAotCQkJICAgICAgICAgbmV3
X2N1bV90c24sIGFzb2MtPmhpZ2hlc3RfdHNuX2luc2lkZV9tYXApOworCQkJU0NUUF9TTlBSSU5U
Rihtc2csIHNpemVvZihtc2cpLAorCQkJICAgICAgICAgICAgICAiTmV3IGN1bSBhY2sgJTguOHgg
dG9vIGhpZ2gsIGhpZ2hlc3QgVFNOICU4Ljh4IiwKKwkJCSAgICAgICAgICAgICAgbmV3X2N1bV90
c24sIGFzb2MtPmhpZ2hlc3RfdHNuX2luc2lkZV9tYXApOwogCQkJb3BfZXJyID0gc2N0cF9nZW5l
cmF0ZV9jYXVzZShTQ1RQX0NBVVNFX1BST1RPQ09MX1ZJT0xBVElPTiwgbXNnKTsKLQkJCXN0Y2It
PnNjdHBfZXAtPmxhc3RfYWJvcnRfY29kZSA9IFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBf
TE9DXzMzOworCQkJc3RjYi0+c2N0cF9lcC0+bGFzdF9hYm9ydF9jb2RlID0gU0NUUF9GUk9NX1ND
VFBfSU5EQVRBICsgU0NUUF9MT0NfMzc7CiAJCQlzY3RwX2Fib3J0X2FuX2Fzc29jaWF0aW9uKHN0
Y2ItPnNjdHBfZXAsIHN0Y2IsIG9wX2VyciwgU0NUUF9TT19OT1RfTE9DS0VEKTsKIAkJCXJldHVy
bjsKIAkJfQpAQCAtNTYyNCwxMCArNTY3OSwxNCBAQCBzY3RwX2hhbmRsZV9mb3J3YXJkX3Rzbihz
dHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJLyogVGhpcyBpcyBub3cgZG9uZSBhcyBwYXJ0IG9mIGNs
ZWFyaW5nIHVwIHRoZSBzdHJlYW0vc2VxICovCiAJaWYgKGFzb2MtPmlkYXRhX3N1cHBvcnRlZCA9
PSAwKSB7CiAJCXVpbnQxNl90IHNpZDsKKwogCQkvKiBGbHVzaCBhbGwgdGhlIHVuLW9yZGVyZWQg
ZGF0YSBiYXNlZCBvbiBjdW0tdHNuICovCiAJCVNDVFBfSU5QX1JFQURfTE9DSyhzdGNiLT5zY3Rw
X2VwKTsKIAkJZm9yIChzaWQgPSAwIDsgc2lkIDwgYXNvYy0+c3RyZWFtaW5jbnQ7IHNpZCsrKSB7
Ci0JCQlzY3RwX2ZsdXNoX3JlYXNzbV9mb3Jfc3RyX3NlcShzdGNiLCBhc29jLCBzaWQsIDAsIDAs
IG5ld19jdW1fdHNuKTsKKwkJCXN0cm0gPSAmYXNvYy0+c3RybWluW3NpZF07CisJCQlpZiAoIVRB
SUxRX0VNUFRZKCZzdHJtLT51bm9faW5xdWV1ZSkpIHsKKwkJCQlzY3RwX2ZsdXNoX3JlYXNzbV9m
b3Jfc3RyX3NlcShzdGNiLCBhc29jLCBzdHJtLCBUQUlMUV9GSVJTVCgmc3RybS0+dW5vX2lucXVl
dWUpLCAwLCBuZXdfY3VtX3Rzbik7CisJCQl9CiAJCX0KIAkJU0NUUF9JTlBfUkVBRF9VTkxPQ0so
c3RjYi0+c2N0cF9lcCk7CiAJfQpAQCAtNTYzOSw3ICs1Njk4LDcgQEAgc2N0cF9oYW5kbGVfZm9y
d2FyZF90c24oc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCWlmIChtICYmIGZ3ZF9zeikgewogCQkv
KiBOZXcgbWV0aG9kLiAqLwogCQl1bnNpZ25lZCBpbnQgbnVtX3N0cjsKLQkJdWludDMyX3QgbWlk
LCBjdXJfbWlkOworCQl1aW50MzJfdCBtaWQ7CiAJCXVpbnQxNl90IHNpZDsKIAkJdWludDE2X3Qg
b3JkZXJlZCwgZmxhZ3M7CiAJCXN0cnVjdCBzY3RwX3N0cnNlcSAqc3RzZXEsIHN0cnNlcWJ1ZjsK
QEAgLTU3MDMsOCArNTc2MiwyNCBAQCBzY3RwX2hhbmRsZV9mb3J3YXJkX3RzbihzdHJ1Y3Qgc2N0
cF90Y2IgKnN0Y2IsCiAJCQkJYXNvYy0+ZnJhZ21lbnRlZF9kZWxpdmVyeV9pbnByb2dyZXNzID0g
MDsKIAkJCX0KIAkJCXN0cm0gPSAmYXNvYy0+c3RybWluW3NpZF07Ci0JCQlmb3IgKGN1cl9taWQg
PSBzdHJtLT5sYXN0X21pZF9kZWxpdmVyZWQ7IFNDVFBfTUlEX0dFKGFzb2MtPmlkYXRhX3N1cHBv
cnRlZCwgbWlkLCBjdXJfbWlkKTsgY3VyX21pZCsrKSB7Ci0JCQkJc2N0cF9mbHVzaF9yZWFzc21f
Zm9yX3N0cl9zZXEoc3RjYiwgYXNvYywgc2lkLCBjdXJfbWlkLCBvcmRlcmVkLCBuZXdfY3VtX3Rz
bik7CisJCQlpZiAob3JkZXJlZCkgeworCQkJCVRBSUxRX0ZPUkVBQ0goY29udHJvbCwgJnN0cm0t
PmlucXVldWUsIG5leHRfaW5zdHJtKSB7CisJCQkJCWlmIChTQ1RQX01JRF9HRShhc29jLT5pZGF0
YV9zdXBwb3J0ZWQsIG1pZCwgY29udHJvbC0+bWlkKSkgeworCQkJCQkJc2N0cF9mbHVzaF9yZWFz
c21fZm9yX3N0cl9zZXEoc3RjYiwgYXNvYywgc3RybSwgY29udHJvbCwgb3JkZXJlZCwgbmV3X2N1
bV90c24pOworCQkJCQl9CisJCQkJfQorCQkJfSBlbHNlIHsKKwkJCQlpZiAoYXNvYy0+aWRhdGFf
c3VwcG9ydGVkKSB7CisJCQkJCVRBSUxRX0ZPUkVBQ0goY29udHJvbCwgJnN0cm0tPnVub19pbnF1
ZXVlLCBuZXh0X2luc3RybSkgeworCQkJCQkJaWYgKFNDVFBfTUlEX0dFKGFzb2MtPmlkYXRhX3N1
cHBvcnRlZCwgbWlkLCBjb250cm9sLT5taWQpKSB7CisJCQkJCQkJc2N0cF9mbHVzaF9yZWFzc21f
Zm9yX3N0cl9zZXEoc3RjYiwgYXNvYywgc3RybSwgY29udHJvbCwgb3JkZXJlZCwgbmV3X2N1bV90
c24pOworCQkJCQkJfQorCQkJCQl9CisJCQkJfSBlbHNlIHsKKwkJCQkJaWYgKCFUQUlMUV9FTVBU
WSgmc3RybS0+dW5vX2lucXVldWUpKSB7CisJCQkJCQlzY3RwX2ZsdXNoX3JlYXNzbV9mb3Jfc3Ry
X3NlcShzdGNiLCBhc29jLCBzdHJtLCBUQUlMUV9GSVJTVCgmc3RybS0+dW5vX2lucXVldWUpLCBv
cmRlcmVkLCBuZXdfY3VtX3Rzbik7CisJCQkJCX0KKwkJCQl9CiAJCQl9CiAJCQlUQUlMUV9GT1JF
QUNIKGNvbnRyb2wsICZzdGNiLT5zY3RwX2VwLT5yZWFkX3F1ZXVlLCBuZXh0KSB7CiAJCQkJaWYg
KChjb250cm9sLT5zaW5mb19zdHJlYW0gPT0gc2lkKSAmJgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIv
dXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfaW5kYXRhLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25l
dGluZXQvc2N0cF9pbmRhdGEuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4
IGJkYmExMTQ4YjY4NTUxNDdkNGQ0NGEwMjdjZWZhNDM4NjE3ZDVkM2QuLjgyOWEwMTRmMmQ2NDlj
Nzc5MzI4NGY0YmZiZmEyOWU4NjUzYWE4ZWQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRp
bmV0L3NjdHBfaW5kYXRhLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBf
aW5kYXRhLmgKQEAgLTMyLDkgKzMyLDkgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWZkZWYgX19GcmVlQlNEX18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19G
QlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfaW5kYXRhLmggMzEwNTkwIDIw
MTYtMTItMjYgMTE6MDY6NDFaIHR1ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQv
c3lzL25ldGluZXQvc2N0cF9pbmRhdGEuaCAzNjExMTYgMjAyMC0wNS0xNiAxOToyNjozOVogdHVl
eGVuICQiKTsKICNlbmRpZgogCiAjaWZuZGVmIF9ORVRJTkVUX1NDVFBfSU5EQVRBX0hfCkBAIC02
Myw3ICs2Myw2IEBAIHNjdHBfYnVpbGRfcmVhZHFfZW50cnkoc3RydWN0IHNjdHBfdGNiICpzdGNi
LAogCQkoX2N0bCktPnNpbmZvX3BwaWQgPSBwcGlkOyBcCiAJCShfY3RsKS0+c2luZm9fY29udGV4
dCA9IGNvbnRleHQ7IFwKIAkJKF9jdGwpLT5mc25faW5jbHVkZWQgPSAweGZmZmZmZmZmOyBcCi0J
CShfY3RsKS0+dG9wX2ZzbiA9IDB4ZmZmZmZmZmY7IFwKIAkJKF9jdGwpLT5zaW5mb190c24gPSB0
c247IFwKIAkJKF9jdGwpLT5zaW5mb19jdW10c24gPSB0c247IFwKIAkJKF9jdGwpLT5zaW5mb19h
c3NvY19pZCA9IHNjdHBfZ2V0X2Fzc29jaWQoKGluX2l0KSk7IFwKQEAgLTcxLDYgKzcwLDkgQEAg
c2N0cF9idWlsZF9yZWFkcV9lbnRyeShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCShfY3RsKS0+
ZGF0YSA9IGRtOyBcCiAJCShfY3RsKS0+c3RjYiA9IChpbl9pdCk7IFwKIAkJKF9jdGwpLT5wb3J0
X2Zyb20gPSAoaW5faXQpLT5ycG9ydDsgXAorCQlpZiAoKGluX2l0KS0+YXNvYy5zdGF0ZSAmIFND
VFBfU1RBVEVfQUJPVVRfVE9fQkVfRlJFRUQpIHsgXAorCQkJKF9jdGwpLT5kb19ub3RfcmVmX3N0
Y2IgPSAxOyBcCisJCX1cCiAJfSBcCiB9IHdoaWxlICgwKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9pbnB1dC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9u
ZXRpbmV0L3NjdHBfaW5wdXQuYwpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4
IGM2MmJiODUwNmRjMGZiODYxMTJmMzVlMGI2NmQwOGMxOThlOGY5YmQuLjI1NTVlYWNkNjhhOWJm
OGM1YTI5ZWUxOTBlZTZmYzAzZjVjNzY5OWMKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRp
bmV0L3NjdHBfaW5wdXQuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9p
bnB1dC5jCkBAIC0zMiw5ICszMiw5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLV9fRkJT
RElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX2lucHV0LmMgMzM0NzI1IDIwMTgt
MDYtMDYgMTk6Mjc6MDZaIHR1ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lz
L25ldGluZXQvc2N0cF9pbnB1dC5jIDM2NDI2OCAyMDIwLTA4LTE2IDExOjUwOjM3WiB0dWV4ZW4g
JCIpOwogI2VuZGlmCiAKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfb3MuaD4KQEAgLTUxLDIwICs1
MSwxOCBAQCBfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9pbnB1dC5j
IDMzNDcyNSAyMDE4LTA2LTA2IDE5OjI3OjA2WiB0dQogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9i
c2RfYWRkci5oPgogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF90aW1lci5oPgogI2luY2x1ZGUgPG5l
dGluZXQvc2N0cF9jcmMzMi5oPgorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCisjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX2tkdHJhY2UuaD4KKyNlbmRp
ZgogI2lmIGRlZmluZWQoSU5FVCkgfHwgZGVmaW5lZChJTkVUNikKLSNpZiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmICFkZWZpbmVkKF9XSU4zMikKICNpbmNsdWRlIDxuZXRp
bmV0L3VkcC5oPgogI2VuZGlmCiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVk
ZSA8c3lzL3NtcC5oPgogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKLSNkZWZpbmUg
QVBQTEVfRklMRV9OTyAyCi0jZW5kaWYKLQotCiBzdGF0aWMgdm9pZAogc2N0cF9zdG9wX2FsbF9j
b29raWVfdGltZXJzKHN0cnVjdCBzY3RwX3RjYiAqc3RjYikKIHsKQEAgLTk3LDcgKzk1LDcgQEAg
c2N0cF9oYW5kbGVfaW5pdChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwK
ICAgICAgICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyICpzcmMsIHN0cnVjdCBzb2NrYWRkciAq
ZHN0LCBzdHJ1Y3Qgc2N0cGhkciAqc2gsCiAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY3RwX2lu
aXRfY2h1bmsgKmNwLCBzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogICAgICAgICAgICAgICAgICBz
dHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX25ldHMgKm5ldCwgaW50ICphYm9ydF9u
b191bmxvY2ssCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogICAgICAgICAgICAgICAgICB1aW50OF90
IG1mbG93dHlwZSwgdWludDMyX3QgbWZsb3dpZCwKICNlbmRpZgogICAgICAgICAgICAgICAgICB1
aW50MzJfdCB2cmZfaWQsIHVpbnQxNl90IHBvcnQpCkBAIC0xMTQsNyArMTEyLDcgQEAgc2N0cF9o
YW5kbGVfaW5pdChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAlpZiAo
bnRvaHMoY3AtPmNoLmNodW5rX2xlbmd0aCkgPCBzaXplb2Yoc3RydWN0IHNjdHBfaW5pdF9jaHVu
aykpIHsKIAkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQX0NBVVNFX0lOVkFMSURf
UEFSQU0sICIiKTsKIAkJc2N0cF9hYm9ydF9hc3NvY2lhdGlvbihpbnAsIHN0Y2IsIG0sIGlwaGxl
biwgc3JjLCBkc3QsIHNoLCBvcF9lcnIsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkgICAgICAg
ICAgICAgICAgICAgICAgIG1mbG93dHlwZSwgbWZsb3dpZCwKICNlbmRpZgogCQkJCSAgICAgICB2
cmZfaWQsIHBvcnQpOwpAQCAtMTI4LDcgKzEyNiw3IEBAIHNjdHBfaGFuZGxlX2luaXQoc3RydWN0
IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJCS8qIHByb3RvY29sIGVycm9yLi4u
IHNlbmQgYWJvcnQgKi8KIAkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQX0NBVVNF
X0lOVkFMSURfUEFSQU0sICIiKTsKIAkJc2N0cF9hYm9ydF9hc3NvY2lhdGlvbihpbnAsIHN0Y2Is
IG0sIGlwaGxlbiwgc3JjLCBkc3QsIHNoLCBvcF9lcnIsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
CQkgICAgICAgICAgICAgICAgICAgICAgIG1mbG93dHlwZSwgbWZsb3dpZCwKICNlbmRpZgogCQkJ
CSAgICAgICB2cmZfaWQsIHBvcnQpOwpAQCAtMTQwLDcgKzEzOCw3IEBAIHNjdHBfaGFuZGxlX2lu
aXQoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJCS8qIGludmFsaWQg
cGFyYW1ldGVyLi4uIHNlbmQgYWJvcnQgKi8KIAkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVz
ZShTQ1RQX0NBVVNFX0lOVkFMSURfUEFSQU0sICIiKTsKIAkJc2N0cF9hYm9ydF9hc3NvY2lhdGlv
bihpbnAsIHN0Y2IsIG0sIGlwaGxlbiwgc3JjLCBkc3QsIHNoLCBvcF9lcnIsCi0jaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogCQkgICAgICAgICAgICAgICAgICAgICAgIG1mbG93dHlwZSwgbWZsb3dpZCwK
ICNlbmRpZgogCQkJCSAgICAgICB2cmZfaWQsIHBvcnQpOwpAQCAtMTUyLDcgKzE1MCw3IEBAIHNj
dHBfaGFuZGxlX2luaXQoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJ
CS8qIHByb3RvY29sIGVycm9yLi4uIHNlbmQgYWJvcnQgKi8KIAkJb3BfZXJyID0gc2N0cF9nZW5l
cmF0ZV9jYXVzZShTQ1RQX0NBVVNFX0lOVkFMSURfUEFSQU0sICIiKTsKIAkJc2N0cF9hYm9ydF9h
c3NvY2lhdGlvbihpbnAsIHN0Y2IsIG0sIGlwaGxlbiwgc3JjLCBkc3QsIHNoLCBvcF9lcnIsCi0j
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCQkgICAgICAgICAgICAgICAgICAgICAgIG1mbG93dHlwZSwg
bWZsb3dpZCwKICNlbmRpZgogCQkJCSAgICAgICB2cmZfaWQsIHBvcnQpOwpAQCAtMTY0LDcgKzE2
Miw3IEBAIHNjdHBfaGFuZGxlX2luaXQoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBv
ZmZzZXQsCiAJCS8qIHByb3RvY29sIGVycm9yLi4uIHNlbmQgYWJvcnQgKi8KIAkJb3BfZXJyID0g
c2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQX0NBVVNFX0lOVkFMSURfUEFSQU0sICIiKTsKIAkJc2N0
cF9hYm9ydF9hc3NvY2lhdGlvbihpbnAsIHN0Y2IsIG0sIGlwaGxlbiwgc3JjLCBkc3QsIHNoLCBv
cF9lcnIsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkgICAgICAgICAgICAgICAgICAgICAgIG1m
bG93dHlwZSwgbWZsb3dpZCwKICNlbmRpZgogCQkJCSAgICAgICB2cmZfaWQsIHBvcnQpOwpAQCAt
MTc4LDcgKzE3Niw3IEBAIHNjdHBfaGFuZGxlX2luaXQoc3RydWN0IG1idWYgKm0sIGludCBpcGhs
ZW4sIGludCBvZmZzZXQsCiAJCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9CQVNF
X1NZU0NUTChzY3RwX2RpYWdfaW5mb19jb2RlKSwKIAkJICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiUHJvYmxlbSB3aXRoIEFVVEggcGFyYW1ldGVycyIpOwogCQlzY3RwX2Fib3J0X2Fzc29j
aWF0aW9uKGlucCwgc3RjYiwgbSwgaXBobGVuLCBzcmMsIGRzdCwgc2gsIG9wX2VyciwKLSNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiAJCSAgICAgICAgICAgICAgICAgICAgICAgbWZsb3d0eXBlLCBtZmxv
d2lkLAogI2VuZGlmCiAJCSAgICAgICAgICAgICAgICAgICAgICAgdnJmX2lkLCBwb3J0KTsKQEAg
LTIwNyw3ICsyMDUsNyBAQCBzY3RwX2hhbmRsZV9pbml0KHN0cnVjdCBtYnVmICptLCBpbnQgaXBo
bGVuLCBpbnQgb2Zmc2V0LAogCQkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQX0JB
U0VfU1lTQ1RMKHNjdHBfZGlhZ19pbmZvX2NvZGUpLAogCQkJICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiTm8gbGlzdGVuZXIiKTsKIAkJCXNjdHBfc2VuZF9hYm9ydChtLCBpcGhsZW4sIHNy
YywgZHN0LCBzaCwgMCwgb3BfZXJyLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCSAgICAgICAg
ICAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQsIGlucC0+ZmlibnVtLAogI2VuZGlmCiAJCQkgICAg
ICAgICAgICAgICAgdnJmX2lkLCBwb3J0KTsKQEAgLTIxNSw3ICsyMTMsNyBAQCBzY3RwX2hhbmRs
ZV9pbml0KHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCQlnb3RvIG91
dG5vdzsKIAl9CiAJaWYgKChzdGNiICE9IE5VTEwpICYmCi0JICAgIChTQ1RQX0dFVF9TVEFURSgm
c3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tfU0VOVCkpIHsKKwkgICAgKFND
VFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQpKSB7CiAJ
CVNDVFBEQkcoU0NUUF9ERUJVR19JTlBVVDMsICJzY3RwX2hhbmRsZV9pbml0OiBzZW5kaW5nIFNI
VVRET1dOLUFDS1xuIik7CiAJCXNjdHBfc2VuZF9zaHV0ZG93bl9hY2soc3RjYiwgTlVMTCk7CiAJ
CXNjdHBfY2h1bmtfb3V0cHV0KGlucCwgc3RjYiwgU0NUUF9PVVRQVVRfRlJPTV9DT05UUk9MX1BS
T0MsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CkBAIC0yMjMsNyArMjIxLDcgQEAgc2N0cF9oYW5kbGVf
aW5pdChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJU0NUUERCRyhT
Q1RQX0RFQlVHX0lOUFVUMywgInNjdHBfaGFuZGxlX2luaXQ6IHNlbmRpbmcgSU5JVC1BQ0tcbiIp
OwogCQlzY3RwX3NlbmRfaW5pdGlhdGVfYWNrKGlucCwgc3RjYiwgbmV0LCBtLCBpcGhsZW4sIG9m
ZnNldCwKIAkJICAgICAgICAgICAgICAgICAgICAgICBzcmMsIGRzdCwgc2gsIGNwLAotI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKIAkJICAgICAgICAgICAgICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93
aWQsCiAjZW5kaWYKIAkJICAgICAgICAgICAgICAgICAgICAgICB2cmZfaWQsIHBvcnQpOwpAQCAt
MjM5LDExICsyMzcsNyBAQCBzY3RwX2hhbmRsZV9pbml0KHN0cnVjdCBtYnVmICptLCBpbnQgaXBo
bGVuLCBpbnQgb2Zmc2V0LAogICovCiAKIGludAotc2N0cF9pc190aGVyZV91bnNlbnRfZGF0YShz
dHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIGludCBzb19sb2NrZWQKLSNpZiAhZGVmaW5lZChfX0FQUExF
X18pICYmICFkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQotCVNDVFBfVU5VU0VECi0jZW5k
aWYKLSkKK3NjdHBfaXNfdGhlcmVfdW5zZW50X2RhdGEoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBp
bnQgc29fbG9ja2VkKQogewogCWludCB1bnNlbnRfZGF0YTsKIAl1bnNpZ25lZCBpbnQgaTsKQEAg
LTQ2MywzNCArNDU3LDY5IEBAIHNjdHBfcHJvY2Vzc19pbml0X2FjayhzdHJ1Y3QgbWJ1ZiAqbSwg
aW50IGlwaGxlbiwgaW50IG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc29j
a2FkZHIgKnNyYywgc3RydWN0IHNvY2thZGRyICpkc3QsIHN0cnVjdCBzY3RwaGRyICpzaCwKICAg
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2N0cF9pbml0X2Fja19jaHVuayAqY3AsIHN0cnVj
dCBzY3RwX3RjYiAqc3RjYiwKICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2N0cF9uZXRz
ICpuZXQsIGludCAqYWJvcnRfbm9fdW5sb2NrLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJICAg
ICAgdWludDhfdCBtZmxvd3R5cGUsIHVpbnQzMl90IG1mbG93aWQsCiAjZW5kaWYKICAgICAgICAg
ICAgICAgICAgICAgICB1aW50MzJfdCB2cmZfaWQpCiB7CiAJc3RydWN0IHNjdHBfYXNzb2NpYXRp
b24gKmFzb2M7CiAJc3RydWN0IG1idWYgKm9wX2VycjsKLQlpbnQgcmV0dmFsLCBhYm9ydF9mbGFn
OwotCXVpbnQzMl90IGluaXRhY2tfbGltaXQ7CisJaW50IHJldHZhbCwgYWJvcnRfZmxhZywgY29v
a2llX2ZvdW5kOworCWludCBpbml0YWNrX2xpbWl0OwogCWludCBuYXRfZnJpZW5kbHkgPSAwOwog
CiAJLyogRmlyc3QgdmVyaWZ5IHRoYXQgd2UgaGF2ZSBubyBpbGxlZ2FsIHBhcmFtJ3MgKi8KIAlh
Ym9ydF9mbGFnID0gMDsKKwljb29raWVfZm91bmQgPSAwOwogCiAJb3BfZXJyID0gc2N0cF9hcmV0
aGVyZV91bnJlY29nbml6ZWRfcGFyYW1ldGVycyhtLAogCQkJCQkJICAgICAgIChvZmZzZXQgKyBz
aXplb2Yoc3RydWN0IHNjdHBfaW5pdF9jaHVuaykpLAotCQkJCQkJICAgICAgICZhYm9ydF9mbGFn
LCAoc3RydWN0IHNjdHBfY2h1bmtoZHIgKiljcCwgJm5hdF9mcmllbmRseSk7CisJCQkJCQkgICAg
ICAgJmFib3J0X2ZsYWcsIChzdHJ1Y3Qgc2N0cF9jaHVua2hkciAqKWNwLAorCQkJCQkJICAgICAg
ICZuYXRfZnJpZW5kbHksICZjb29raWVfZm91bmQpOwogCWlmIChhYm9ydF9mbGFnKSB7CiAJCS8q
IFNlbmQgYW4gYWJvcnQgYW5kIG5vdGlmeSBwZWVyICovCiAJCXNjdHBfYWJvcnRfYW5fYXNzb2Np
YXRpb24oc3RjYi0+c2N0cF9lcCwgc3RjYiwgb3BfZXJyLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwog
CQkqYWJvcnRfbm9fdW5sb2NrID0gMTsKIAkJcmV0dXJuICgtMSk7CiAJfQorCWlmICghY29va2ll
X2ZvdW5kKSB7CisJCXVpbnQxNl90IGxlbjsKKworCQkvKiBPbmx5IHJlcG9ydCB0aGUgbWlzc2lu
ZyBjb29raWUgcGFyYW1ldGVyICovCisJCWlmIChvcF9lcnIgIT0gTlVMTCkgeworCQkJc2N0cF9t
X2ZyZWVtKG9wX2Vycik7CisJCX0KKwkJbGVuID0gKHVpbnQxNl90KShzaXplb2Yoc3RydWN0IHNj
dHBfZXJyb3JfbWlzc2luZ19wYXJhbSkgKyBzaXplb2YodWludDE2X3QpKTsKKwkJLyogV2UgYWJv
cnQgd2l0aCBhbiBlcnJvciBvZiBtaXNzaW5nIG1hbmRhdG9yeSBwYXJhbSAqLworCQlvcF9lcnIg
PSBzY3RwX2dldF9tYnVmX2Zvcl9tc2cobGVuLCAwLCBNX05PV0FJVCwgMSwgTVRfREFUQSk7CisJ
CWlmIChvcF9lcnIgIT0gTlVMTCkgeworCQkJc3RydWN0IHNjdHBfZXJyb3JfbWlzc2luZ19wYXJh
bSAqY2F1c2U7CisKKwkJCVNDVFBfQlVGX0xFTihvcF9lcnIpID0gbGVuOworCQkJY2F1c2UgPSBt
dG9kKG9wX2Vyciwgc3RydWN0IHNjdHBfZXJyb3JfbWlzc2luZ19wYXJhbSAqKTsKKwkJCS8qIFN1
YnRyYWN0IHRoZSByZXNlcnZlZCBwYXJhbSAqLworCQkJY2F1c2UtPmNhdXNlLmNvZGUgPSBodG9u
cyhTQ1RQX0NBVVNFX01JU1NJTkdfUEFSQU0pOworCQkJY2F1c2UtPmNhdXNlLmxlbmd0aCA9IGh0
b25zKGxlbik7CisJCQljYXVzZS0+bnVtX21pc3NpbmdfcGFyYW1zID0gaHRvbmwoMSk7CisJCQlj
YXVzZS0+dHlwZVswXSA9IGh0b25zKFNDVFBfU1RBVEVfQ09PS0lFKTsKKwkJfQorCQlzY3RwX2Fi
b3J0X2Fzc29jaWF0aW9uKHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIG0sIGlwaGxlbiwKKwkJCQkgICAg
ICAgc3JjLCBkc3QsIHNoLCBvcF9lcnIsCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJCQkgICAgICAgbWZsb3d0eXBlLCBtZmxvd2lkLAorI2Vu
ZGlmCisJCQkJICAgICAgIHZyZl9pZCwgbmV0LT5wb3J0KTsKKwkJKmFib3J0X25vX3VubG9jayA9
IDE7CisJCXJldHVybiAoLTMpOworCX0KIAlhc29jID0gJnN0Y2ItPmFzb2M7CiAJYXNvYy0+cGVl
cl9zdXBwb3J0c19uYXQgPSAodWludDhfdCluYXRfZnJpZW5kbHk7CiAJLyogcHJvY2VzcyB0aGUg
cGVlcidzIHBhcmFtZXRlcnMgaW4gdGhlIElOSVQtQUNLICovCiAJcmV0dmFsID0gc2N0cF9wcm9j
ZXNzX2luaXQoKHN0cnVjdCBzY3RwX2luaXRfY2h1bmsgKiljcCwgc3RjYik7CiAJaWYgKHJldHZh
bCA8IDApIHsKKwkJaWYgKG9wX2VyciAhPSBOVUxMKSB7CisJCQlzY3RwX21fZnJlZW0ob3BfZXJy
KTsKKwkJfQogCQlyZXR1cm4gKHJldHZhbCk7CiAJfQogCWluaXRhY2tfbGltaXQgPSBvZmZzZXQg
KyBudG9ocyhjcC0+Y2guY2h1bmtfbGVuZ3RoKTsKQEAgLTQ5OCw2ICs1MjcsOSBAQCBzY3RwX3By
b2Nlc3NfaW5pdF9hY2soc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJ
aWYgKChyZXR2YWwgPSBzY3RwX2xvYWRfYWRkcmVzc2VzX2Zyb21faW5pdChzdGNiLCBtLAogCSAg
ICAob2Zmc2V0ICsgc2l6ZW9mKHN0cnVjdCBzY3RwX2luaXRfY2h1bmspKSwgaW5pdGFja19saW1p
dCwKIAkgICAgc3JjLCBkc3QsIE5VTEwsIHN0Y2ItPmFzb2MucG9ydCkpKSB7CisJCWlmIChvcF9l
cnIgIT0gTlVMTCkgeworCQkJc2N0cF9tX2ZyZWVtKG9wX2Vycik7CisJCX0KIAkJb3BfZXJyID0g
c2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfZGlhZ19pbmZvX2NvZGUp
LAogCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQcm9ibGVtIHdpdGggYWRkcmVzcyBw
YXJhbWV0ZXJzIik7CiAJCVNDVFBEQkcoU0NUUF9ERUJVR19JTlBVVDEsCkBAIC01MDUsNyArNTM3
LDcgQEAgc2N0cF9wcm9jZXNzX2luaXRfYWNrKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBp
bnQgb2Zmc2V0LAogCQkJcmV0dmFsKTsKIAkJc2N0cF9hYm9ydF9hc3NvY2lhdGlvbihzdGNiLT5z
Y3RwX2VwLCBzdGNiLCBtLCBpcGhsZW4sCiAJCSAgICAgICAgICAgICAgICAgICAgICAgc3JjLCBk
c3QsIHNoLCBvcF9lcnIsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkgICAgICAgICAgICAgICAg
ICAgICAgIG1mbG93dHlwZSwgbWZsb3dpZCwKICNlbmRpZgogCQkgICAgICAgICAgICAgICAgICAg
ICAgIHZyZl9pZCwgbmV0LT5wb3J0KTsKQEAgLTU1MCw4ICs1ODIsOCBAQCBzY3RwX3Byb2Nlc3Nf
aW5pdF9hY2soc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJICAgIGFz
b2MtPnByaW1hcnlfZGVzdGluYXRpb24sIFNDVFBfRlJPTV9TQ1RQX0lOUFVUICsgU0NUUF9MT0Nf
Myk7CiAKIAkvKiBjYWxjdWxhdGUgdGhlIFJUTyAqLwotCW5ldC0+UlRPID0gc2N0cF9jYWxjdWxh
dGVfcnRvKHN0Y2IsIGFzb2MsIG5ldCwgJmFzb2MtPnRpbWVfZW50ZXJlZCwKLQkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTQ1RQX1JUVF9GUk9NX05PTl9EQVRBKTsKKwlzY3RwX2NhbGN1
bGF0ZV9ydG8oc3RjYiwgYXNvYywgbmV0LCAmYXNvYy0+dGltZV9lbnRlcmVkLAorCSAgICAgICAg
ICAgICAgICAgICBTQ1RQX1JUVF9GUk9NX05PTl9EQVRBKTsKICNpZiBkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJaWYgKHN0Y2ItPnNjdHBfZXAtPnJlY3ZfY2FsbGJhY2spIHsKIAkJaWYgKHN0Y2It
PnNjdHBfc29ja2V0KSB7CkBAIC01NzAsNDkgKzYwMiwxNSBAQCBzY3RwX3Byb2Nlc3NfaW5pdF9h
Y2soc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJCQkgICAgIChpbnAt
PnNlbmRfc2JfdGhyZXNob2xkID09IDApKSkgewogCQkJCWF0b21pY19hZGRfaW50KCZzdGNiLT5h
c29jLnJlZmNudCwgMSk7CiAJCQkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwotCQkJCWlucC0+c2Vu
ZF9jYWxsYmFjayhzdGNiLT5zY3RwX3NvY2tldCwgc2JfZnJlZV9ub3cpOworCQkJCWlucC0+c2Vu
ZF9jYWxsYmFjayhzdGNiLT5zY3RwX3NvY2tldCwgc2JfZnJlZV9ub3csIGlucC0+dWxwX2luZm8p
OwogCQkJCVNDVFBfVENCX0xPQ0soc3RjYik7CiAJCQkJYXRvbWljX3N1YnRyYWN0X2ludCgmc3Rj
Yi0+YXNvYy5yZWZjbnQsIDEpOwogCQkJfQogCQl9CiAJfQogI2VuZGlmCi0JcmV0dmFsID0gc2N0
cF9zZW5kX2Nvb2tpZV9lY2hvKG0sIG9mZnNldCwgc3RjYiwgbmV0KTsKLQlpZiAocmV0dmFsIDwg
MCkgewotCQkvKgotCQkgKiBObyBjb29raWUsIHdlIHByb2JhYmx5IHNob3VsZCBzZW5kIGEgb3Ag
ZXJyb3IuIEJ1dCBpbiBhbnkKLQkJICogY2FzZSBpZiB0aGVyZSBpcyBubyBjb29raWUgaW4gdGhl
IElOSVQtQUNLLCB3ZSBjYW4KLQkJICogYWJhbmRvbiB0aGUgcGVlciwgaXRzIGJyb2tlLgotCQkg
Ki8KLQkJaWYgKHJldHZhbCA9PSAtMykgewotCQkJdWludDE2X3QgbGVuOwotCi0JCQlsZW4gPSAo
dWludDE2X3QpKHNpemVvZihzdHJ1Y3Qgc2N0cF9lcnJvcl9taXNzaW5nX3BhcmFtKSArIHNpemVv
Zih1aW50MTZfdCkpOwotCQkJLyogV2UgYWJvcnQgd2l0aCBhbiBlcnJvciBvZiBtaXNzaW5nIG1h
bmRhdG9yeSBwYXJhbSAqLwotCQkJb3BfZXJyID0gc2N0cF9nZXRfbWJ1Zl9mb3JfbXNnKGxlbiwg
MCwgTV9OT1dBSVQsIDEsIE1UX0RBVEEpOwotCQkJaWYgKG9wX2VyciAhPSBOVUxMKSB7Ci0JCQkJ
c3RydWN0IHNjdHBfZXJyb3JfbWlzc2luZ19wYXJhbSAqY2F1c2U7Ci0KLQkJCQlTQ1RQX0JVRl9M
RU4ob3BfZXJyKSA9IGxlbjsKLQkJCQljYXVzZSA9IG10b2Qob3BfZXJyLCBzdHJ1Y3Qgc2N0cF9l
cnJvcl9taXNzaW5nX3BhcmFtICopOwotCQkJCS8qIFN1YnRyYWN0IHRoZSByZXNlcnZlZCBwYXJh
bSAqLwotCQkJCWNhdXNlLT5jYXVzZS5jb2RlID0gaHRvbnMoU0NUUF9DQVVTRV9NSVNTSU5HX1BB
UkFNKTsKLQkJCQljYXVzZS0+Y2F1c2UubGVuZ3RoID0gaHRvbnMobGVuKTsKLQkJCQljYXVzZS0+
bnVtX21pc3NpbmdfcGFyYW1zID0gaHRvbmwoMSk7Ci0JCQkJY2F1c2UtPnR5cGVbMF0gPSBodG9u
cyhTQ1RQX1NUQVRFX0NPT0tJRSk7Ci0JCQl9Ci0JCQlzY3RwX2Fib3J0X2Fzc29jaWF0aW9uKHN0
Y2ItPnNjdHBfZXAsIHN0Y2IsIG0sIGlwaGxlbiwKLQkJCSAgICAgICAgICAgICAgICAgICAgICAg
c3JjLCBkc3QsIHNoLCBvcF9lcnIsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKLQkJCSAgICAg
ICAgICAgICAgICAgICAgICAgbWZsb3d0eXBlLCBtZmxvd2lkLAotI2VuZGlmCi0JCQkgICAgICAg
ICAgICAgICAgICAgICAgIHZyZl9pZCwgbmV0LT5wb3J0KTsKLQkJCSphYm9ydF9ub191bmxvY2sg
PSAxOwotCQl9Ci0JCXJldHVybiAocmV0dmFsKTsKLQl9Ci0KLQlyZXR1cm4gKDApOworCXJldHZh
bCA9IHNjdHBfc2VuZF9jb29raWVfZWNobyhtLCBvZmZzZXQsIGluaXRhY2tfbGltaXQsIHN0Y2Is
IG5ldCk7CisJcmV0dXJuIChyZXR2YWwpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtNzI2LDggKzcy
NCw4IEBAIHNjdHBfaGFuZGxlX2hlYXJ0YmVhdF9hY2soc3RydWN0IHNjdHBfaGVhcnRiZWF0X2No
dW5rICpjcCwKIAl0di50dl9zZWMgPSBjcC0+aGVhcnRiZWF0LmhiX2luZm8udGltZV92YWx1ZV8x
OwogCXR2LnR2X3VzZWMgPSBjcC0+aGVhcnRiZWF0LmhiX2luZm8udGltZV92YWx1ZV8yOwogCS8q
IE5vdyBsZXRzIGRvIGEgUlRPIHdpdGggdGhpcyAqLwotCXJfbmV0LT5SVE8gPSBzY3RwX2NhbGN1
bGF0ZV9ydG8oc3RjYiwgJnN0Y2ItPmFzb2MsIHJfbmV0LCAmdHYsCi0JICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTQ1RQX1JUVF9GUk9NX05PTl9EQVRBKTsKKwlzY3RwX2NhbGN1bGF0
ZV9ydG8oc3RjYiwgJnN0Y2ItPmFzb2MsIHJfbmV0LCAmdHYsCisJICAgICAgICAgICAgICAgICAg
IFNDVFBfUlRUX0ZST01fTk9OX0RBVEEpOwogCWlmICghKHJfbmV0LT5kZXN0X3N0YXRlICYgU0NU
UF9BRERSX1JFQUNIQUJMRSkpIHsKIAkJcl9uZXQtPmRlc3Rfc3RhdGUgfD0gU0NUUF9BRERSX1JF
QUNIQUJMRTsKIAkJc2N0cF91bHBfbm90aWZ5KFNDVFBfTk9USUZZX0lOVEVSRkFDRV9VUCwgc3Rj
YiwKQEAgLTc3MSw4ICs3NjksNyBAQCBzY3RwX2hhbmRsZV9oZWFydGJlYXRfYWNrKHN0cnVjdCBz
Y3RwX2hlYXJ0YmVhdF9jaHVuayAqY3AsCiAJCQkJc2N0cF9tb3ZlX2NodW5rc19mcm9tX25ldChz
dGNiLAogCQkJCQlzdGNiLT5hc29jLmRlbGV0ZWRfcHJpbWFyeSk7CiAJCQl9Ci0JCQlzY3RwX2Rl
bGV0ZV9wcmltX3RpbWVyKHN0Y2ItPnNjdHBfZXAsIHN0Y2IsCi0JCQkJCXN0Y2ItPmFzb2MuZGVs
ZXRlZF9wcmltYXJ5KTsKKwkJCXNjdHBfZGVsZXRlX3ByaW1fdGltZXIoc3RjYi0+c2N0cF9lcCwg
c3RjYik7CiAJCX0KIAl9CiB9CkBAIC03ODAsMzEgKzc3NywzNSBAQCBzY3RwX2hhbmRsZV9oZWFy
dGJlYXRfYWNrKHN0cnVjdCBzY3RwX2hlYXJ0YmVhdF9jaHVuayAqY3AsCiBzdGF0aWMgaW50CiBz
Y3RwX2hhbmRsZV9uYXRfY29sbGlkaW5nX3N0YXRlKHN0cnVjdCBzY3RwX3RjYiAqc3RjYikKIHsK
LQkvKiByZXR1cm4gMCBtZWFucyB3ZSB3YW50IHlvdSB0byBwcm9jZWVkIHdpdGggdGhlIGFib3J0
Ci0JICogbm9uLXplcm8gbWVhbnMgbm8gYWJvcnQgcHJvY2Vzc2luZwotCSovCisJLyoKKwkgKiBS
ZXR1cm4gMCBtZWFucyB3ZSB3YW50IHlvdSB0byBwcm9jZWVkIHdpdGggdGhlIGFib3J0CisJICog
bm9uLXplcm8gbWVhbnMgbm8gYWJvcnQgcHJvY2Vzc2luZy4KKwkgKi8KKwl1aW50MzJfdCBuZXdf
dnRhZzsKIAlzdHJ1Y3Qgc2N0cGFzb2NoZWFkICpoZWFkOwogCi0JaWYgKChTQ1RQX0dFVF9TVEFU
RSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9DT09LSUVfV0FJVCkgfHwKLQkgICAgKFNDVFBf
R0VUX1NUQVRFKCZzdGNiLT5hc29jKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9FQ0hPRUQpKSB7CisJ
aWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB8fAor
CSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9DT09LSUVfRUNIT0VEKSkg
eworCQluZXdfdnRhZyA9IHNjdHBfc2VsZWN0X2FfdGFnKHN0Y2ItPnNjdHBfZXAsIHN0Y2ItPnNj
dHBfZXAtPnNjdHBfbHBvcnQsIHN0Y2ItPnJwb3J0LCAxKTsKIAkJYXRvbWljX2FkZF9pbnQoJnN0
Y2ItPmFzb2MucmVmY250LCAxKTsKIAkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwogCQlTQ1RQX0lO
UF9JTkZPX1dMT0NLKCk7CiAJCVNDVFBfVENCX0xPQ0soc3RjYik7CiAJCWF0b21pY19zdWJ0cmFj
dF9pbnQoJnN0Y2ItPmFzb2MucmVmY250LCAxKTsKKwl9IGVsc2UgeworCQlyZXR1cm4gKDApOwog
CX0KLQlpZiAoU0NUUF9HRVRfU1RBVEUoJnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVfQ09PS0lF
X1dBSVQpIHsKKwlpZiAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9DT09LSUVf
V0FJVCkgewogCQkvKiBnZW5lcmF0ZSBhIG5ldyB2dGFnIGFuZCBzZW5kIGluaXQgKi8KIAkJTElT
VF9SRU1PVkUoc3RjYiwgc2N0cF9hc29jcyk7Ci0JCXN0Y2ItPmFzb2MubXlfdnRhZyA9IHNjdHBf
c2VsZWN0X2FfdGFnKHN0Y2ItPnNjdHBfZXAsIHN0Y2ItPnNjdHBfZXAtPnNjdHBfbHBvcnQsIHN0
Y2ItPnJwb3J0LCAxKTsKKwkJc3RjYi0+YXNvYy5teV92dGFnID0gbmV3X3Z0YWc7CiAJCWhlYWQg
PSAmU0NUUF9CQVNFX0lORk8oc2N0cF9hc29jaGFzaClbU0NUUF9QQ0JIQVNIX0FTT0Moc3RjYi0+
YXNvYy5teV92dGFnLCBTQ1RQX0JBU0VfSU5GTyhoYXNoYXNvY21hcmspKV07CiAJCS8qIHB1dCBp
dCBpbiB0aGUgYnVja2V0IGluIHRoZSB2dGFnIGhhc2ggb2YgYXNzb2MncyBmb3IgdGhlIHN5c3Rl
bSAqLwogCQlMSVNUX0lOU0VSVF9IRUFEKGhlYWQsIHN0Y2IsIHNjdHBfYXNvY3MpOwotCQlzY3Rw
X3NlbmRfaW5pdGlhdGUoc3RjYi0+c2N0cF9lcCwgc3RjYiwgU0NUUF9TT19OT1RfTE9DS0VEKTsK
IAkJU0NUUF9JTlBfSU5GT19XVU5MT0NLKCk7CisJCXNjdHBfc2VuZF9pbml0aWF0ZShzdGNiLT5z
Y3RwX2VwLCBzdGNiLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwogCQlyZXR1cm4gKDEpOwotCX0KLQlp
ZiAoU0NUUF9HRVRfU1RBVEUoJnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9F
RCkgeworCX0gZWxzZSB7CiAJCS8qIHRyZWF0IGxpa2UgYSBjYXNlIHdoZXJlIHRoZSBjb29raWUg
ZXhwaXJlZCBpLmUuOgogCQkqIC0gZHVtcCBjdXJyZW50IGNvb2tpZS4KIAkJKiAtIGdlbmVyYXRl
IGEgbmV3IHZ0YWcuCkBAIC04MTIsMTYgKzgxMywxNSBAQCBzY3RwX2hhbmRsZV9uYXRfY29sbGlk
aW5nX3N0YXRlKHN0cnVjdCBzY3RwX3RjYiAqc3RjYikKIAkJKi8KIAkJLyogZ2VuZXJhdGUgYSBu
ZXcgdnRhZyBhbmQgc2VuZCBpbml0ICovCiAJCUxJU1RfUkVNT1ZFKHN0Y2IsIHNjdHBfYXNvY3Mp
OwotCQlzdGNiLT5hc29jLnN0YXRlICY9IH5TQ1RQX1NUQVRFX0NPT0tJRV9FQ0hPRUQ7Ci0JCXN0
Y2ItPmFzb2Muc3RhdGUgfD0gU0NUUF9TVEFURV9DT09LSUVfV0FJVDsKKwkJU0NUUF9TRVRfU1RB
VEUoc3RjYiwgU0NUUF9TVEFURV9DT09LSUVfV0FJVCk7CiAJCXNjdHBfc3RvcF9hbGxfY29va2ll
X3RpbWVycyhzdGNiKTsKIAkJc2N0cF90b3NzX29sZF9jb29raWVzKHN0Y2IsICZzdGNiLT5hc29j
KTsKLQkJc3RjYi0+YXNvYy5teV92dGFnID0gc2N0cF9zZWxlY3RfYV90YWcoc3RjYi0+c2N0cF9l
cCwgc3RjYi0+c2N0cF9lcC0+c2N0cF9scG9ydCwgc3RjYi0+cnBvcnQsICAxKTsKKwkJc3RjYi0+
YXNvYy5teV92dGFnID0gbmV3X3Z0YWc7CiAJCWhlYWQgPSAmU0NUUF9CQVNFX0lORk8oc2N0cF9h
c29jaGFzaClbU0NUUF9QQ0JIQVNIX0FTT0Moc3RjYi0+YXNvYy5teV92dGFnLCBTQ1RQX0JBU0Vf
SU5GTyhoYXNoYXNvY21hcmspKV07CiAJCS8qIHB1dCBpdCBpbiB0aGUgYnVja2V0IGluIHRoZSB2
dGFnIGhhc2ggb2YgYXNzb2MncyBmb3IgdGhlIHN5c3RlbSAqLwogCQlMSVNUX0lOU0VSVF9IRUFE
KGhlYWQsIHN0Y2IsIHNjdHBfYXNvY3MpOwotCQlzY3RwX3NlbmRfaW5pdGlhdGUoc3RjYi0+c2N0
cF9lcCwgc3RjYiwgU0NUUF9TT19OT1RfTE9DS0VEKTsKIAkJU0NUUF9JTlBfSU5GT19XVU5MT0NL
KCk7CisJCXNjdHBfc2VuZF9pbml0aWF0ZShzdGNiLT5zY3RwX2VwLCBzdGNiLCBTQ1RQX1NPX05P
VF9MT0NLRUQpOwogCQlyZXR1cm4gKDEpOwogCX0KIAlyZXR1cm4gKDApOwpAQCAtODQ4LDcgKzg0
OCw3IEBAIHN0YXRpYyBpbnQKIHNjdHBfaGFuZGxlX2Fib3J0KHN0cnVjdCBzY3RwX2Fib3J0X2No
dW5rICphYm9ydCwKICAgICBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX25ldHMg
Km5ldCkKIHsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tf
VEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKIAlzdHJ1Y3Qgc29ja2V0ICpzbzsKICNlbmRpZgogCXVpbnQxNl90IGxlbjsKQEAgLTg2OSwx
MyArODY5LDEzIEBAIHNjdHBfaGFuZGxlX2Fib3J0KHN0cnVjdCBzY3RwX2Fib3J0X2NodW5rICph
Ym9ydCwKIAkJY2F1c2UgPSAoc3RydWN0IHNjdHBfZXJyb3JfY2F1c2UgKikoYWJvcnQgKyAxKTsK
IAkJZXJyb3IgPSBudG9ocyhjYXVzZS0+Y29kZSk7CiAJCWlmIChlcnJvciA9PSBTQ1RQX0NBVVNF
X05BVF9DT0xMSURJTkdfU1RBVEUpIHsKLQkJCVNDVFBEQkcoU0NUUF9ERUJVR19JTlBVVDIsICJS
ZWNlaXZlZCBDb2xsaWRpbmcgc3RhdGUgYWJvcnQgZmxhZ3M6JXhcbiIsCisJCQlTQ1RQREJHKFND
VFBfREVCVUdfSU5QVVQyLCAiUmVjZWl2ZWQgQ29sbGlkaW5nIHN0YXRlLCBBQk9SVCBmbGFnczol
eFxuIiwKIAkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgIGFib3J0LT5jaC5jaHVua19mbGFn
cyk7CiAJCQlpZiAoc2N0cF9oYW5kbGVfbmF0X2NvbGxpZGluZ19zdGF0ZShzdGNiKSkgewogCQkJ
CXJldHVybiAoMCk7CiAJCQl9CiAJCX0gZWxzZSBpZiAoZXJyb3IgPT0gU0NUUF9DQVVTRV9OQVRf
TUlTU0lOR19TVEFURSkgewotCQkJU0NUUERCRyhTQ1RQX0RFQlVHX0lOUFVUMiwgIlJlY2VpdmVk
IG1pc3Npbmcgc3RhdGUgYWJvcnQgZmxhZ3M6JXhcbiIsCisJCQlTQ1RQREJHKFNDVFBfREVCVUdf
SU5QVVQyLCAiUmVjZWl2ZWQgbWlzc2luZyBzdGF0ZSwgQUJPUlQgZmxhZ3M6JXhcbiIsCiAJCQkg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhYm9ydC0+Y2guY2h1bmtfZmxhZ3MpOwogCQkJaWYg
KHNjdHBfaGFuZGxlX25hdF9taXNzaW5nX3N0YXRlKHN0Y2IsIG5ldCkpIHsKIAkJCQlyZXR1cm4g
KDApOwpAQCAtODg1LDIwICs4ODUsMjAgQEAgc2N0cF9oYW5kbGVfYWJvcnQoc3RydWN0IHNjdHBf
YWJvcnRfY2h1bmsgKmFib3J0LAogCQllcnJvciA9IDA7CiAJfQogCS8qIHN0b3AgYW55IHJlY2Vp
dmUgdGltZXJzICovCi0Jc2N0cF90aW1lcl9zdG9wKFNDVFBfVElNRVJfVFlQRV9SRUNWLCBzdGNi
LT5zY3RwX2VwLCBzdGNiLCBuZXQsCisJc2N0cF90aW1lcl9zdG9wKFNDVFBfVElNRVJfVFlQRV9S
RUNWLCBzdGNiLT5zY3RwX2VwLCBzdGNiLCBOVUxMLAogCSAgICAgICAgICAgICAgICBTQ1RQX0ZS
T01fU0NUUF9JTlBVVCArIFNDVFBfTE9DXzcpOwogCS8qIG5vdGlmeSB1c2VyIG9mIHRoZSBhYm9y
dCBhbmQgY2xlYW4gdXAuLi4gKi8KIAlzY3RwX2Fib3J0X25vdGlmaWNhdGlvbihzdGNiLCAxLCBl
cnJvciwgYWJvcnQsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CiAJLyogZnJlZSB0aGUgdGNiICovCiAJ
U0NUUF9TVEFUX0lOQ1JfQ09VTlRFUjMyKHNjdHBzX2Fib3J0ZWQpOwotCWlmICgoU0NUUF9HRVRf
U1RBVEUoJnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVfT1BFTikgfHwKLQkgICAgKFNDVFBfR0VU
X1NUQVRFKCZzdGNiLT5hc29jKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgewor
CWlmICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9PUEVOKSB8fAorCSAgICAo
U0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkpIHsK
IAkJU0NUUF9TVEFUX0RFQ1JfR0FVR0UzMihzY3Rwc19jdXJyZXN0YWIpOwogCX0KICNpZmRlZiBT
Q1RQX0FTT0NMT0dfT0ZfVFNOUwogCXNjdHBfcHJpbnRfb3V0X3RyYWNrX2xvZyhzdGNiKTsKICNl
bmRpZgotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNU
SU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
CXNvID0gU0NUUF9JTlBfU08oc3RjYi0+c2N0cF9lcCk7CiAJYXRvbWljX2FkZF9pbnQoJnN0Y2It
PmFzb2MucmVmY250LCAxKTsKIAlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CkBAIC05MDYsMTAgKzkw
Niw5IEBAIHNjdHBfaGFuZGxlX2Fib3J0KHN0cnVjdCBzY3RwX2Fib3J0X2NodW5rICphYm9ydCwK
IAlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwogCWF0b21pY19zdWJ0cmFjdF9pbnQoJnN0Y2ItPmFzb2Mu
cmVmY250LCAxKTsKICNlbmRpZgotCXN0Y2ItPmFzb2Muc3RhdGUgfD0gU0NUUF9TVEFURV9XQVNf
QUJPUlRFRDsKIAkodm9pZClzY3RwX2ZyZWVfYXNzb2Moc3RjYi0+c2N0cF9lcCwgc3RjYiwgU0NU
UF9OT1JNQUxfUFJPQywKIAkJCSAgICAgIFNDVFBfRlJPTV9TQ1RQX0lOUFVUICsgU0NUUF9MT0Nf
OCk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJ
TkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJ
U0NUUF9TT0NLRVRfVU5MT0NLKHNvLCAxKTsKICNlbmRpZgogCVNDVFBEQkcoU0NUUF9ERUJVR19J
TlBVVDIsICJzY3RwX2hhbmRsZV9hYm9ydDogZmluaXNoZWRcbiIpOwpAQCAtOTU0LDcgKzk1Myw3
IEBAIHNjdHBfaGFuZGxlX3NodXRkb3duKHN0cnVjdCBzY3RwX3NodXRkb3duX2NodW5rICpjcCwK
IAlzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYzsKIAlpbnQgc29tZV9vbl9zdHJlYW13aGVl
bDsKIAlpbnQgb2xkX3N0YXRlOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFND
VFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogCXN0cnVjdCBzb2NrZXQgKnNvOwogI2VuZGlmCiAKQEAgLTk2MywxNSAr
OTYyLDE1IEBAIHNjdHBfaGFuZGxlX3NodXRkb3duKHN0cnVjdCBzY3RwX3NodXRkb3duX2NodW5r
ICpjcCwKIAlpZiAoc3RjYiA9PSBOVUxMKQogCQlyZXR1cm47CiAJYXNvYyA9ICZzdGNiLT5hc29j
OwotCWlmICgoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9DT09LSUVfV0FJVCkg
fHwKLQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9F
RCkpIHsKKwlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfQ09PS0lFX1dB
SVQpIHx8CisJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9F
Q0hPRUQpKSB7CiAJCXJldHVybjsKIAl9CiAJaWYgKG50b2hzKGNwLT5jaC5jaHVua19sZW5ndGgp
ICE9IHNpemVvZihzdHJ1Y3Qgc2N0cF9zaHV0ZG93bl9jaHVuaykpIHsKIAkJLyogU2h1dGRvd24g
Tk9UIHRoZSBleHBlY3RlZCBzaXplICovCiAJCXJldHVybjsKIAl9Ci0Jb2xkX3N0YXRlID0gU0NU
UF9HRVRfU1RBVEUoYXNvYyk7CisJb2xkX3N0YXRlID0gU0NUUF9HRVRfU1RBVEUoc3RjYik7CiAJ
c2N0cF91cGRhdGVfYWNrZWQoc3RjYiwgY3AsIGFib3J0X2ZsYWcpOwogCWlmICgqYWJvcnRfZmxh
ZykgewogCQlyZXR1cm47CkBAIC0xMDA1LDcgKzEwMDQsNyBAQCBzY3RwX2hhbmRsZV9zaHV0ZG93
bihzdHJ1Y3Qgc2N0cF9zaHV0ZG93bl9jaHVuayAqY3AsCiAJCWFzb2MtPmNvbnRyb2xfcGRhcGkt
PnBkYXBpX2Fib3J0ZWQgPSAxOwogCQlhc29jLT5jb250cm9sX3BkYXBpID0gTlVMTDsKIAkJU0NU
UF9JTlBfUkVBRF9VTkxPQ0soc3RjYi0+c2N0cF9lcCk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18p
IHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCXNvID0gU0NUUF9JTlBfU08oc3RjYi0+c2N0
cF9lcCk7CiAJCWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29jLnJlZmNudCwgMSk7CiAJCVNDVFBf
VENCX1VOTE9DSyhzdGNiKTsKQEAgLTEwMjEsMTcgKzEwMjAsMTYgQEAgc2N0cF9oYW5kbGVfc2h1
dGRvd24oc3RydWN0IHNjdHBfc2h1dGRvd25fY2h1bmsgKmNwLAogCQlpZiAoc3RjYi0+c2N0cF9z
b2NrZXQpIHsKIAkJCXNjdHBfc29yd2FrZXVwKHN0Y2ItPnNjdHBfZXAsIHN0Y2ItPnNjdHBfc29j
a2V0KTsKIAkJfQotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9D
S19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDEpOwogI2VuZGlmCiAJfQogCS8qIGdvdG8g
U0hVVERPV05fUkVDRUlWRUQgc3RhdGUgdG8gYmxvY2sgbmV3IHJlcXVlc3RzICovCiAJaWYgKHN0
Y2ItPnNjdHBfc29ja2V0KSB7Ci0JCWlmICgoU0NUUF9HRVRfU1RBVEUoYXNvYykgIT0gU0NUUF9T
VEFURV9TSFVURE9XTl9SRUNFSVZFRCkgJiYKLQkJICAgIChTQ1RQX0dFVF9TVEFURShhc29jKSAh
PSBTQ1RQX1NUQVRFX1NIVVRET1dOX0FDS19TRU5UKSAmJgotCQkgICAgKFNDVFBfR0VUX1NUQVRF
KGFzb2MpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCkpIHsKLQkJCVNDVFBfU0VUX1NUQVRF
KGFzb2MsIFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpOwotCQkJU0NUUF9DTEVBUl9TVUJT
VEFURShhc29jLCBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJTkcpOworCQlpZiAoKFNDVFBfR0VU
X1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpICYmCisJCSAgICAo
U0NUUF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tfU0VOVCkgJiYK
KwkJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQp
KSB7CisJCQlTQ1RQX1NFVF9TVEFURShzdGNiLCBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVE
KTsKIAkJCS8qIG5vdGlmeSB1cHBlciBsYXllciB0aGF0IHBlZXIgaGFzIGluaXRpYXRlZCBhIHNo
dXRkb3duICovCiAJCQlzY3RwX3VscF9ub3RpZnkoU0NUUF9OT1RJRllfUEVFUl9TSFVURE9XTiwg
c3RjYiwgMCwgTlVMTCwgU0NUUF9TT19OT1RfTE9DS0VEKTsKIApAQCAtMTAzOSw3ICsxMDM3LDcg
QEAgc2N0cF9oYW5kbGVfc2h1dGRvd24oc3RydWN0IHNjdHBfc2h1dGRvd25fY2h1bmsgKmNwLAog
CQkJKHZvaWQpU0NUUF9HRVRUSU1FX1RJTUVWQUwoJmFzb2MtPnRpbWVfZW50ZXJlZCk7CiAJCX0K
IAl9Ci0JaWYgKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05fU0VO
VCkgeworCWlmIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1NF
TlQpIHsKIAkJLyoKIAkJICogc3RvcCB0aGUgc2h1dGRvd24gdGltZXIsIHNpbmNlIHdlIFdJTEwg
bW92ZSB0bwogCQkgKiBTSFVURE9XTi1BQ0stU0VOVC4KQEAgLTEwNTksMTMgKzEwNTcsMTIgQEAg
c2N0cF9oYW5kbGVfc2h1dGRvd24oc3RydWN0IHNjdHBfc2h1dGRvd25fY2h1bmsgKmNwLAogCQkv
KiBubyBvdXRzdGFuZGluZyBkYXRhIHRvIHNlbmQsIHNvIG1vdmUgb24uLi4gKi8KIAkJLyogc2Vu
ZCBTSFVURE9XTi1BQ0sgKi8KIAkJLyogbW92ZSB0byBTSFVURE9XTi1BQ0stU0VOVCBzdGF0ZSAq
LwotCQlpZiAoKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfT1BFTikgfHwKLQkJ
ICAgIChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVE
KSkgeworCQlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfT1BFTikgfHwK
KwkJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJ
VkVEKSkgewogCQkJU0NUUF9TVEFUX0RFQ1JfR0FVR0UzMihzY3Rwc19jdXJyZXN0YWIpOwogCQl9
Ci0JCVNDVFBfQ0xFQVJfU1VCU1RBVEUoYXNvYywgU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5H
KTsKLQkJaWYgKFNDVFBfR0VUX1NUQVRFKGFzb2MpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fQUNL
X1NFTlQpIHsKLQkJCVNDVFBfU0VUX1NUQVRFKGFzb2MsIFNDVFBfU1RBVEVfU0hVVERPV05fQUNL
X1NFTlQpOworCQlpZiAoU0NUUF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9TVEFURV9TSFVURE9X
Tl9BQ0tfU0VOVCkgeworCQkJU0NUUF9TRVRfU1RBVEUoc3RjYiwgU0NUUF9TVEFURV9TSFVURE9X
Tl9BQ0tfU0VOVCk7CiAJCQlzY3RwX3N0b3BfdGltZXJzX2Zvcl9zaHV0ZG93bihzdGNiKTsKIAkJ
CXNjdHBfc2VuZF9zaHV0ZG93bl9hY2soc3RjYiwgbmV0KTsKIAkJCXNjdHBfdGltZXJfc3RhcnQo
U0NUUF9USU1FUl9UWVBFX1NIVVRET1dOQUNLLApAQCAtMTA4Miw3ICsxMDc5LDcgQEAgc2N0cF9o
YW5kbGVfc2h1dGRvd25fYWNrKHN0cnVjdCBzY3RwX3NodXRkb3duX2Fja19jaHVuayAqY3AgU0NU
UF9VTlVTRUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNjdHBfbmV0cyAqbmV0
KQogewogCXN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jOwotI2lmIGRlZmluZWQoX19BUFBM
RV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBM
RV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCXN0cnVjdCBzb2NrZXQgKnNvOwogCiAJ
c28gPSBTQ1RQX0lOUF9TTyhzdGNiLT5zY3RwX2VwKTsKQEAgLTEwOTQsMTUgKzEwOTEsMTUgQEAg
c2N0cF9oYW5kbGVfc2h1dGRvd25fYWNrKHN0cnVjdCBzY3RwX3NodXRkb3duX2Fja19jaHVuayAq
Y3AgU0NUUF9VTlVTRUQsCiAKIAlhc29jID0gJnN0Y2ItPmFzb2M7CiAJLyogcHJvY2VzcyBhY2Nv
cmRpbmcgdG8gYXNzb2NpYXRpb24gc3RhdGUgKi8KLQlpZiAoKFNDVFBfR0VUX1NUQVRFKGFzb2Mp
ID09IFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQpIHx8Ci0JICAgIChTQ1RQX0dFVF9TVEFURShhc29j
KSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9FQ0hPRUQpKSB7CisJaWYgKChTQ1RQX0dFVF9TVEFURShz
dGNiKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB8fAorCSAgICAoU0NUUF9HRVRfU1RBVEUo
c3RjYikgPT0gU0NUUF9TVEFURV9DT09LSUVfRUNIT0VEKSkgewogCQkvKiB1bmV4cGVjdGVkIFNI
VVRET1dOLUFDSy4uLiBkbyBPT1RCIGhhbmRsaW5nLi4uICovCiAJCXNjdHBfc2VuZF9zaHV0ZG93
bl9jb21wbGV0ZShzdGNiLCBuZXQsIDEpOwogCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CiAJCXJl
dHVybjsKIAl9Ci0JaWYgKChTQ1RQX0dFVF9TVEFURShhc29jKSAhPSBTQ1RQX1NUQVRFX1NIVVRE
T1dOX1NFTlQpICYmCi0JICAgIChTQ1RQX0dFVF9TVEFURShhc29jKSAhPSBTQ1RQX1NUQVRFX1NI
VVRET1dOX0FDS19TRU5UKSkgeworCWlmICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9T
VEFURV9TSFVURE9XTl9TRU5UKSAmJgorCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgIT0gU0NU
UF9TVEFURV9TSFVURE9XTl9BQ0tfU0VOVCkpIHsKIAkJLyogdW5leHBlY3RlZCBTSFVURE9XTi1B
Q0suLi4gc28gaWdub3JlLi4uICovCiAJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKIAkJcmV0dXJu
OwpAQCAtMTExNiw3ICsxMTEzLDcgQEAgc2N0cF9oYW5kbGVfc2h1dGRvd25fYWNrKHN0cnVjdCBz
Y3RwX3NodXRkb3duX2Fja19jaHVuayAqY3AgU0NUUF9VTlVTRUQsCiAJCWFzb2MtPmNvbnRyb2xf
cGRhcGktPnBkYXBpX2Fib3J0ZWQgPSAxOwogCQlhc29jLT5jb250cm9sX3BkYXBpID0gTlVMTDsK
IAkJU0NUUF9JTlBfUkVBRF9VTkxPQ0soc3RjYi0+c2N0cF9lcCk7Ci0jaWYgZGVmaW5lZChfX0FQ
UExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQ
UExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCWF0b21pY19hZGRfaW50KCZzdGNi
LT5hc29jLnJlZmNudCwgMSk7CiAJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKIAkJU0NUUF9TT0NL
RVRfTE9DSyhzbywgMSk7CkBAIC0xMTI5LDcgKzExMjYsNyBAQCBzY3RwX2hhbmRsZV9zaHV0ZG93
bl9hY2soc3RydWN0IHNjdHBfc2h1dGRvd25fYWNrX2NodW5rICpjcCBTQ1RQX1VOVVNFRCwKIAkJ
fQogI2VuZGlmCiAJCXNjdHBfc29yd2FrZXVwKHN0Y2ItPnNjdHBfZXAsIHN0Y2ItPnNjdHBfc29j
a2V0KTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVT
VElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
IAkJU0NUUF9TT0NLRVRfVU5MT0NLKHNvLCAxKTsKICNlbmRpZgogCX0KQEAgLTExNTUsNyArMTE1
Miw3IEBAIHNjdHBfaGFuZGxlX3NodXRkb3duX2FjayhzdHJ1Y3Qgc2N0cF9zaHV0ZG93bl9hY2tf
Y2h1bmsgKmNwIFNDVFBfVU5VU0VELAogCX0KIAlTQ1RQX1NUQVRfSU5DUl9DT1VOVEVSMzIoc2N0
cHNfc2h1dGRvd24pOwogCS8qIGZyZWUgdGhlIFRDQiBidXQgZmlyc3Qgc2F2ZSBvZmYgdGhlIGVw
ICovCi0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJ
TkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJ
YXRvbWljX2FkZF9pbnQoJnN0Y2ItPmFzb2MucmVmY250LCAxKTsKIAlTQ1RQX1RDQl9VTkxPQ0so
c3RjYik7CiAJU0NUUF9TT0NLRVRfTE9DSyhzbywgMSk7CkBAIC0xMTY0LDE5ICsxMTYxLDE4IEBA
IHNjdHBfaGFuZGxlX3NodXRkb3duX2FjayhzdHJ1Y3Qgc2N0cF9zaHV0ZG93bl9hY2tfY2h1bmsg
KmNwIFNDVFBfVU5VU0VELAogI2VuZGlmCiAJKHZvaWQpc2N0cF9mcmVlX2Fzc29jKHN0Y2ItPnNj
dHBfZXAsIHN0Y2IsIFNDVFBfTk9STUFMX1BST0MsCiAJCQkgICAgICBTQ1RQX0ZST01fU0NUUF9J
TlBVVCArIFNDVFBfTE9DXzExKTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChT
Q1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKIAlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDEpOwogI2VuZGlmCiB9CiAK
IHN0YXRpYyB2b2lkCi1zY3RwX3Byb2Nlc3NfdW5yZWNvZ19jaHVuayhzdHJ1Y3Qgc2N0cF90Y2Ig
KnN0Y2IsIHVpbnQ4X3QgY2h1bmtfdHlwZSwKLSAgICBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQpCitz
Y3RwX3Byb2Nlc3NfdW5yZWNvZ19jaHVuayhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQ4X3Qg
Y2h1bmtfdHlwZSkKIHsKIAlzd2l0Y2ggKGNodW5rX3R5cGUpIHsKIAljYXNlIFNDVFBfQVNDT05G
X0FDSzoKIAljYXNlIFNDVFBfQVNDT05GOgotCQlzY3RwX2FzY29uZl9jbGVhbnVwKHN0Y2IsIG5l
dCk7CisJCXNjdHBfYXNjb25mX2NsZWFudXAoc3RjYik7CiAJCWJyZWFrOwogCWNhc2UgU0NUUF9J
Rk9SV0FSRF9DVU1fVFNOOgogCWNhc2UgU0NUUF9GT1JXQVJEX0NVTV9UU046CkBAIC0xMjM4LDcg
KzEyMzQsNyBAQCBzY3RwX2hhbmRsZV9lcnJvcihzdHJ1Y3Qgc2N0cF9jaHVua2hkciAqY2gsCiAJ
c3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2M7CiAJdWludDMyX3QgcmVtYWluaW5nX2xlbmd0
aCwgYWRqdXN0OwogCXVpbnQxNl90IGNvZGUsIGNhdXNlX2NvZGUsIGNhdXNlX2xlbmd0aDsKLSNp
ZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNp
ZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzdHJ1Y3Qg
c29ja2V0ICpzbzsKICNlbmRpZgogCkBAIC0xMjc5LDE0ICsxMjc1LDE0IEBAIHNjdHBfaGFuZGxl
X2Vycm9yKHN0cnVjdCBzY3RwX2NodW5raGRyICpjaCwKIAkJCQljYXVzZV9jb2RlKTsKIAkJCWJy
ZWFrOwogCQljYXNlIFNDVFBfQ0FVU0VfTkFUX0NPTExJRElOR19TVEFURToKLQkJICAgICAgICBT
Q1RQREJHKFNDVFBfREVCVUdfSU5QVVQyLCAiUmVjZWl2ZWQgQ29sbGlkaW5nIHN0YXRlIGFib3J0
IGZsYWdzOiAleFxuIiwKKwkJCVNDVFBEQkcoU0NUUF9ERUJVR19JTlBVVDIsICJSZWNlaXZlZCBD
b2xsaWRpbmcgc3RhdGUsIEVSUk9SIGZsYWdzOiAleFxuIiwKIAkJCQljaC0+Y2h1bmtfZmxhZ3Mp
OwogCQkJaWYgKHNjdHBfaGFuZGxlX25hdF9jb2xsaWRpbmdfc3RhdGUoc3RjYikpIHsKIAkJCQly
ZXR1cm4gKDApOwogCQkJfQogCQkJYnJlYWs7CiAJCWNhc2UgU0NUUF9DQVVTRV9OQVRfTUlTU0lO
R19TVEFURToKLQkJCVNDVFBEQkcoU0NUUF9ERUJVR19JTlBVVDIsICJSZWNlaXZlZCBtaXNzaW5n
IHN0YXRlIGFib3J0IGZsYWdzOiAleFxuIiwKKwkJCVNDVFBEQkcoU0NUUF9ERUJVR19JTlBVVDIs
ICJSZWNlaXZlZCBtaXNzaW5nIHN0YXRlLCBFUlJPUiBmbGFnczogJXhcbiIsCiAJCQkgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjaC0+Y2h1bmtfZmxhZ3MpOwogCQkJaWYgKHNjdHBfaGFuZGxl
X25hdF9taXNzaW5nX3N0YXRlKHN0Y2IsIG5ldCkpIHsKIAkJCQlyZXR1cm4gKDApOwpAQCAtMTI5
OCw3ICsxMjk0LDcgQEAgc2N0cF9oYW5kbGVfZXJyb3Ioc3RydWN0IHNjdHBfY2h1bmtoZHIgKmNo
LAogCQkJICogd2FpdGluZy4KIAkJCSAqLwogCQkJaWYgKChjYXVzZV9sZW5ndGggPj0gc2l6ZW9m
KHN0cnVjdCBzY3RwX2Vycm9yX3N0YWxlX2Nvb2tpZSkpICYmCi0JCQkgICAgKFNDVFBfR0VUX1NU
QVRFKGFzb2MpID09IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCkpIHsKKwkJCSAgICAoU0NUUF9H
RVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9DT09LSUVfRUNIT0VEKSkgewogCQkJCXN0cnVj
dCBzY3RwX2Vycm9yX3N0YWxlX2Nvb2tpZSAqc3RhbGVfY29va2llOwogCiAJCQkJc3RhbGVfY29v
a2llID0gKHN0cnVjdCBzY3RwX2Vycm9yX3N0YWxlX2Nvb2tpZSAqKWNhdXNlOwpAQCAtMTMxNCw3
ICsxMzEwLDcgQEAgc2N0cF9oYW5kbGVfZXJyb3Ioc3RydWN0IHNjdHBfY2h1bmtoZHIgKmNoLAog
CQkJCSAgICBhc29jLT5tYXhfaW5pdF90aW1lcykgewogCQkJCQlzY3RwX2Fib3J0X25vdGlmaWNh
dGlvbihzdGNiLCAwLCAwLCBOVUxMLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwogCQkJCQkvKiBub3cg
ZnJlZSB0aGUgYXNvYyAqLwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBf
U09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogCQkJCQlzbyA9IFNDVFBfSU5QX1NPKHN0Y2ItPnNjdHBfZXApOwogCQkJCQlh
dG9taWNfYWRkX2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIDEpOwogCQkJCQlTQ1RQX1RDQl9VTkxP
Q0soc3RjYik7CkBAIC0xMzI0LDE1ICsxMzIwLDE0IEBAIHNjdHBfaGFuZGxlX2Vycm9yKHN0cnVj
dCBzY3RwX2NodW5raGRyICpjaCwKICNlbmRpZgogCQkJCQkodm9pZClzY3RwX2ZyZWVfYXNzb2Mo
c3RjYi0+c2N0cF9lcCwgc3RjYiwgU0NUUF9OT1JNQUxfUFJPQywKIAkJCQkJCQkgICAgICBTQ1RQ
X0ZST01fU0NUUF9JTlBVVCArIFNDVFBfTE9DXzEyKTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykg
fHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQkJU0NUUF9TT0NLRVRfVU5MT0NLKHNvLCAx
KTsKICNlbmRpZgogCQkJCQlyZXR1cm4gKC0xKTsKIAkJCQl9CiAJCQkJLyogYmxhc3QgYmFjayB0
byBJTklUIHN0YXRlICovCiAJCQkJc2N0cF90b3NzX29sZF9jb29raWVzKHN0Y2IsICZzdGNiLT5h
c29jKTsKLQkJCQlhc29jLT5zdGF0ZSAmPSB+U0NUUF9TVEFURV9DT09LSUVfRUNIT0VEOwotCQkJ
CWFzb2MtPnN0YXRlIHw9IFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQ7CisJCQkJU0NUUF9TRVRfU1RB
VEUoc3RjYiwgU0NUUF9TVEFURV9DT09LSUVfV0FJVCk7CiAJCQkJc2N0cF9zdG9wX2FsbF9jb29r
aWVfdGltZXJzKHN0Y2IpOwogCQkJCXNjdHBfc2VuZF9pbml0aWF0ZShzdGNiLT5zY3RwX2VwLCBz
dGNiLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwogCQkJfQpAQCAtMTM1NSw3ICsxMzUwLDcgQEAgc2N0
cF9oYW5kbGVfZXJyb3Ioc3RydWN0IHNjdHBfY2h1bmtoZHIgKmNoLAogCQkJCXN0cnVjdCBzY3Rw
X2Vycm9yX3VucmVjb2duaXplZF9jaHVuayAqdW5yZWNfY2h1bms7CiAKIAkJCQl1bnJlY19jaHVu
ayA9IChzdHJ1Y3Qgc2N0cF9lcnJvcl91bnJlY29nbml6ZWRfY2h1bmsgKiljYXVzZTsKLQkJCQlz
Y3RwX3Byb2Nlc3NfdW5yZWNvZ19jaHVuayhzdGNiLCB1bnJlY19jaHVuay0+Y2guY2h1bmtfdHlw
ZSwgbmV0KTsKKwkJCQlzY3RwX3Byb2Nlc3NfdW5yZWNvZ19jaHVuayhzdGNiLCB1bnJlY19jaHVu
ay0+Y2guY2h1bmtfdHlwZSk7CiAJCQl9CiAJCQlicmVhazsKIAkJY2FzZSBTQ1RQX0NBVVNFX1VO
UkVDT0dfUEFSQU06CkBAIC0xNDE2LDcgKzE0MTEsNyBAQCBzY3RwX2hhbmRsZV9pbml0X2Fjayhz
dHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKICAgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCBzb2NrYWRkciAqc3JjLCBzdHJ1Y3Qgc29ja2FkZHIgKmRzdCwgc3RydWN0IHNj
dHBoZHIgKnNoLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNjdHBfaW5pdF9hY2tfY2h1
bmsgKmNwLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3Qgc2N0cF9uZXRzICpuZXQsIGludCAqYWJvcnRfbm9fdW5sb2NrLAotI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgbWZsb3d0eXBlLCB1aW50MzJfdCBt
Zmxvd2lkLAogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB2cmZfaWQpCkBA
IC0xNDM3LDcgKzE0MzIsNyBAQCBzY3RwX2hhbmRsZV9pbml0X2FjayhzdHJ1Y3QgbWJ1ZiAqbSwg
aW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShT
Q1RQX0NBVVNFX0lOVkFMSURfUEFSQU0sICIiKTsKIAkJc2N0cF9hYm9ydF9hc3NvY2lhdGlvbihz
dGNiLT5zY3RwX2VwLCBzdGNiLCBtLCBpcGhsZW4sCiAJCSAgICAgICAgICAgICAgICAgICAgICAg
c3JjLCBkc3QsIHNoLCBvcF9lcnIsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkgICAgICAgICAg
ICAgICAgICAgICAgIG1mbG93dHlwZSwgbWZsb3dpZCwKICNlbmRpZgogCQkgICAgICAgICAgICAg
ICAgICAgICAgIHZyZl9pZCwgbmV0LT5wb3J0KTsKQEAgLTE0NTEsNyArMTQ0Niw3IEBAIHNjdHBf
aGFuZGxlX2luaXRfYWNrKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAog
CQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBfQ0FVU0VfSU5WQUxJRF9QQVJBTSwg
IiIpOwogCQlzY3RwX2Fib3J0X2Fzc29jaWF0aW9uKHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIG0sIGlw
aGxlbiwKIAkJICAgICAgICAgICAgICAgICAgICAgICBzcmMsIGRzdCwgc2gsIG9wX2VyciwKLSNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAJCSAgICAgICAgICAgICAgICAgICAgICAgbWZsb3d0eXBlLCBt
Zmxvd2lkLAogI2VuZGlmCiAJCSAgICAgICAgICAgICAgICAgICAgICAgdnJmX2lkLCBuZXQtPnBv
cnQpOwpAQCAtMTQ2Myw3ICsxNDU4LDcgQEAgc2N0cF9oYW5kbGVfaW5pdF9hY2soc3RydWN0IG1i
dWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVf
Y2F1c2UoU0NUUF9DQVVTRV9JTlZBTElEX1BBUkFNLCAiIik7CiAJCXNjdHBfYWJvcnRfYXNzb2Np
YXRpb24oc3RjYi0+c2N0cF9lcCwgc3RjYiwgbSwgaXBobGVuLAogCQkgICAgICAgICAgICAgICAg
ICAgICAgIHNyYywgZHN0LCBzaCwgb3BfZXJyLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJICAg
ICAgICAgICAgICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQsCiAjZW5kaWYKIAkJICAgICAg
ICAgICAgICAgICAgICAgICB2cmZfaWQsIG5ldC0+cG9ydCk7CkBAIC0xNDc1LDcgKzE0NzAsNyBA
QCBzY3RwX2hhbmRsZV9pbml0X2FjayhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9m
ZnNldCwKIAkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQX0NBVVNFX0lOVkFMSURf
UEFSQU0sICIiKTsKIAkJc2N0cF9hYm9ydF9hc3NvY2lhdGlvbihzdGNiLT5zY3RwX2VwLCBzdGNi
LCBtLCBpcGhsZW4sCiAJCSAgICAgICAgICAgICAgICAgICAgICAgc3JjLCBkc3QsIHNoLCBvcF9l
cnIsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkgICAgICAgICAgICAgICAgICAgICAgIG1mbG93
dHlwZSwgbWZsb3dpZCwKICNlbmRpZgogCQkgICAgICAgICAgICAgICAgICAgICAgIHZyZl9pZCwg
bmV0LT5wb3J0KTsKQEAgLTE0ODcsNyArMTQ4Miw3IEBAIHNjdHBfaGFuZGxlX2luaXRfYWNrKHN0
cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCQlvcF9lcnIgPSBzY3RwX2dl
bmVyYXRlX2NhdXNlKFNDVFBfQ0FVU0VfSU5WQUxJRF9QQVJBTSwgIiIpOwogCQlzY3RwX2Fib3J0
X2Fzc29jaWF0aW9uKHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIG0sIGlwaGxlbiwKIAkJICAgICAgICAg
ICAgICAgICAgICAgICBzcmMsIGRzdCwgc2gsIG9wX2VyciwKLSNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAJCSAgICAgICAgICAgICAgICAgICAgICAgbWZsb3d0eXBlLCBtZmxvd2lkLAogI2VuZGlmCiAJ
CSAgICAgICAgICAgICAgICAgICAgICAgdnJmX2lkLCBuZXQtPnBvcnQpOwpAQCAtMTQ5NSw3ICsx
NDkwLDcgQEAgc2N0cF9oYW5kbGVfaW5pdF9hY2soc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4s
IGludCBvZmZzZXQsCiAJCXJldHVybiAoLTEpOwogCX0KIAkvKiBwcm9jZXNzIGFjY29yZGluZyB0
byBhc3NvY2lhdGlvbiBzdGF0ZS4uLiAqLwotCXN3aXRjaCAoc3RjYi0+YXNvYy5zdGF0ZSAmIFND
VFBfU1RBVEVfTUFTSykgeworCXN3aXRjaCAoU0NUUF9HRVRfU1RBVEUoc3RjYikpIHsKIAljYXNl
IFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQ6CiAJCS8qIHRoaXMgaXMgdGhlIGV4cGVjdGVkIHN0YXRl
IGZvciB0aGlzIGNodW5rICovCiAJCS8qIHByb2Nlc3MgdGhlIElOSVQtQUNLIHBhcmFtZXRlcnMg
Ki8KQEAgLTE1MTQsNyArMTUwOSw3IEBAIHNjdHBfaGFuZGxlX2luaXRfYWNrKHN0cnVjdCBtYnVm
ICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCQl9CiAJCWlmIChzY3RwX3Byb2Nlc3NfaW5p
dF9hY2sobSwgaXBobGVuLCBvZmZzZXQsIHNyYywgZHN0LCBzaCwgY3AsIHN0Y2IsCiAJCSAgICAg
ICAgICAgICAgICAgICAgICAgICAgbmV0LCBhYm9ydF9ub191bmxvY2ssCi0jaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCQkgICAgICAgICAgICAgICAgICAgICAgICAgIG1mbG93dHlwZSwgbWZsb3dpZCwK
ICNlbmRpZgogCQkgICAgICAgICAgICAgICAgICAgICAgICAgIHZyZl9pZCkgPCAwKSB7CkBAIC0x
NTIzLDcgKzE1MTgsNyBAQCBzY3RwX2hhbmRsZV9pbml0X2FjayhzdHJ1Y3QgbWJ1ZiAqbSwgaW50
IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJfQogCQkvKiB1cGRhdGUgb3VyIHN0YXRlICovCiAJCVND
VFBEQkcoU0NUUF9ERUJVR19JTlBVVDIsICJtb3ZpbmcgdG8gQ09PS0lFLUVDSE9FRCBzdGF0ZVxu
Iik7Ci0JCVNDVFBfU0VUX1NUQVRFKCZzdGNiLT5hc29jLCBTQ1RQX1NUQVRFX0NPT0tJRV9FQ0hP
RUQpOworCQlTQ1RQX1NFVF9TVEFURShzdGNiLCBTQ1RQX1NUQVRFX0NPT0tJRV9FQ0hPRUQpOwog
CiAJCS8qIHJlc2V0IHRoZSBSVE8gY2FsYyAqLwogCQlpZiAoU0NUUF9CQVNFX1NZU0NUTChzY3Rw
X2xvZ2dpbmdfbGV2ZWwpICYgU0NUUF9USFJFU0hPTERfTE9HR0lORykgewpAQCAtMTU3Myw3ICsx
NTY4LDcgQEAgc2N0cF9wcm9jZXNzX2Nvb2tpZV9uZXcoc3RydWN0IG1idWYgKm0sIGludCBpcGhs
ZW4sIGludCBvZmZzZXQsCiAgICAgc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBf
bmV0cyAqKm5ldHAsCiAgICAgc3RydWN0IHNvY2thZGRyICppbml0X3NyYywgaW50ICpub3RpZmlj
YXRpb24sCiAgICAgaW50IGF1dGhfc2tpcHBlZCwgdWludDMyX3QgYXV0aF9vZmZzZXQsIHVpbnQz
Ml90IGF1dGhfbGVuLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICAgICB1aW50OF90IG1mbG93dHlw
ZSwgdWludDMyX3QgbWZsb3dpZCwKICNlbmRpZgogICAgIHVpbnQzMl90IHZyZl9pZCwgdWludDE2
X3QgcG9ydCk7CkBAIC0xNTkyLDcgKzE1ODcsNyBAQCBzY3RwX3Byb2Nlc3NfY29va2llX2V4aXN0
aW5nKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogICAgIHN0cnVjdCBz
Y3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfbmV0cyAq
Km5ldHAsCiAgICAgc3RydWN0IHNvY2thZGRyICppbml0X3NyYywgaW50ICpub3RpZmljYXRpb24s
CiAgICAgaW50IGF1dGhfc2tpcHBlZCwgdWludDMyX3QgYXV0aF9vZmZzZXQsIHVpbnQzMl90IGF1
dGhfbGVuLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICAgICB1aW50OF90IG1mbG93dHlwZSwgdWlu
dDMyX3QgbWZsb3dpZCwKICNlbmRpZgogICAgIHVpbnQzMl90IHZyZl9pZCwgdWludDE2X3QgcG9y
dCkKQEAgLTE2MjEsMTIgKzE2MTYsMTIgQEAgc2N0cF9wcm9jZXNzX2Nvb2tpZV9leGlzdGluZyhz
dHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAlpZiAoaG93X2luZHggPCBz
aXplb2YoYXNvYy0+Y29va2llX2hvdykpIHsKIAkJYXNvYy0+Y29va2llX2hvd1tob3dfaW5keF0g
PSAxOwogCX0KLQlpZiAoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9TSFVURE9X
Tl9BQ0tfU0VOVCkgeworCWlmIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NI
VVRET1dOX0FDS19TRU5UKSB7CiAJCS8qIFNIVVRET1dOIGNhbWUgaW4gYWZ0ZXIgc2VuZGluZyBJ
TklULUFDSyAqLwogCQlzY3RwX3NlbmRfc2h1dGRvd25fYWNrKHN0Y2IsIHN0Y2ItPmFzb2MucHJp
bWFyeV9kZXN0aW5hdGlvbik7CiAJCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9D
QVVTRV9DT09LSUVfSU5fU0hVVERPV04sICIiKTsKIAkJc2N0cF9zZW5kX29wZXJyX3RvKHNyYywg
ZHN0LCBzaCwgY29va2llLT5wZWVyc192dGFnLCBvcF9lcnIsCi0jaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCQkgICAgICAgICAgICAgICAgICAgbWZsb3d0eXBlLCBtZmxvd2lkLCBpbnAtPmZpYm51bSwK
ICNlbmRpZgogCQkgICAgICAgICAgICAgICAgICAgdnJmX2lkLCBuZXQtPnBvcnQpOwpAQCAtMTY5
Miw3ICsxNjg3LDcgQEAgc2N0cF9wcm9jZXNzX2Nvb2tpZV9leGlzdGluZyhzdHJ1Y3QgbWJ1ZiAq
bSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJCXJldHVybiAoTlVMTCk7CiAKIAkJfQotCQlz
d2l0Y2ggKFNDVFBfR0VUX1NUQVRFKGFzb2MpKSB7CisJCXN3aXRjaCAoU0NUUF9HRVRfU1RBVEUo
c3RjYikpIHsKIAkJCWNhc2UgU0NUUF9TVEFURV9DT09LSUVfV0FJVDoKIAkJCWNhc2UgU0NUUF9T
VEFURV9DT09LSUVfRUNIT0VEOgogCQkJCS8qCkBAIC0xNzE2LDIyICsxNzExLDIyIEBAIHNjdHBf
cHJvY2Vzc19jb29raWVfZXhpc3Rpbmcoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBv
ZmZzZXQsCiAJCQkJICAgICAgICAgICAgICAgIHN0Y2IsIG5ldCwKIAkJCQkgICAgICAgICAgICAg
ICAgU0NUUF9GUk9NX1NDVFBfSU5QVVQgKyBTQ1RQX0xPQ18xNCk7CiAJCQkJLyogdXBkYXRlIGN1
cnJlbnQgc3RhdGUgKi8KLQkJCQlpZiAoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFU
RV9DT09LSUVfRUNIT0VEKQorCQkJCWlmIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NU
QVRFX0NPT0tJRV9FQ0hPRUQpCiAJCQkJCVNDVFBfU1RBVF9JTkNSX0NPVU5URVIzMihzY3Rwc19h
Y3RpdmVlc3RhYik7CiAJCQkJZWxzZQogCQkJCQlTQ1RQX1NUQVRfSU5DUl9DT1VOVEVSMzIoc2N0
cHNfY29sbGlzaW9uZXN0YWIpOwogCi0JCQkJU0NUUF9TRVRfU1RBVEUoYXNvYywgU0NUUF9TVEFU
RV9PUEVOKTsKKwkJCQlTQ1RQX1NFVF9TVEFURShzdGNiLCBTQ1RQX1NUQVRFX09QRU4pOwogCQkJ
CWlmIChhc29jLT5zdGF0ZSAmIFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORykgewogCQkJCQlz
Y3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9TSFVURE9XTkdVQVJELAotCQkJCQkJCSBz
dGNiLT5zY3RwX2VwLCBzdGNiLCBhc29jLT5wcmltYXJ5X2Rlc3RpbmF0aW9uKTsKKwkJCQkJICAg
ICAgICAgICAgICAgICBzdGNiLT5zY3RwX2VwLCBzdGNiLCBOVUxMKTsKIAkJCQl9CiAJCQkJU0NU
UF9TVEFUX0lOQ1JfR0FVR0UzMihzY3Rwc19jdXJyZXN0YWIpOwogCQkJCXNjdHBfc3RvcF9hbGxf
Y29va2llX3RpbWVycyhzdGNiKTsKIAkJCQlpZiAoKChzdGNiLT5zY3RwX2VwLT5zY3RwX2ZsYWdz
ICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCQkgICAgIChzdGNiLT5zY3RwX2VwLT5z
Y3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkpICYmCiAJCQkJICAgICghU0NU
UF9JU19MSVNURU5JTkcoaW5wKSkpIHsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5l
ZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQkJc3RydWN0IHNvY2tldCAqc287CiAjZW5kaWYKIAkJCQkJ
LyoKQEAgLTE3NDIsNyArMTczNyw3IEBAIHNjdHBfcHJvY2Vzc19jb29raWVfZXhpc3Rpbmcoc3Ry
dWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJCQkJCSAqLwogCQkJCQlzdGNi
LT5zY3RwX2VwLT5zY3RwX2ZsYWdzIHw9CiAJCQkJCQlTQ1RQX1BDQl9GTEFHU19DT05ORUNURUQ7
Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcp
CisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJ
CXNvID0gU0NUUF9JTlBfU08oc3RjYi0+c2N0cF9lcCk7CiAJCQkJCWF0b21pY19hZGRfaW50KCZz
dGNiLT5hc29jLnJlZmNudCwgMSk7CiAJCQkJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKQEAgLTE3
NTUsNyArMTc1MCw3IEBAIHNjdHBfcHJvY2Vzc19jb29raWVfZXhpc3Rpbmcoc3RydWN0IG1idWYg
Km0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJCQkJCX0KICNlbmRpZgogCQkJCQlzb2lzY29u
bmVjdGVkKHN0Y2ItPnNjdHBfc29ja2V0KTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVm
aW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQkJU0NUUF9TT0NLRVRfVU5MT0NLKHNvLCAxKTsKICNl
bmRpZgogCQkJCX0KQEAgLTE3NjgsOSArMTc2Myw4IEBAIHNjdHBfcHJvY2Vzc19jb29raWVfZXhp
c3Rpbmcoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJCQkJb2xkLnR2
X3NlYyA9IGNvb2tpZS0+dGltZV9lbnRlcmVkLnR2X3NlYzsKIAkJCQlvbGQudHZfdXNlYyA9IGNv
b2tpZS0+dGltZV9lbnRlcmVkLnR2X3VzZWM7CiAJCQkJbmV0LT5oYl9yZXNwb25kZWQgPSAxOwot
CQkJCW5ldC0+UlRPID0gc2N0cF9jYWxjdWxhdGVfcnRvKHN0Y2IsIGFzb2MsIG5ldCwKLQkJCQkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb2xkLAotCQkJCSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNDVFBfUlRUX0ZST01fTk9OX0RBVEEpOworCQkJCXNjdHBfY2FsY3VsYXRl
X3J0byhzdGNiLCBhc29jLCBuZXQsICZvbGQsCisJCQkJICAgICAgICAgICAgICAgICAgIFNDVFBf
UlRUX0ZST01fTk9OX0RBVEEpOwogCiAJCQkJaWYgKHN0Y2ItPmFzb2Muc2N0cF9hdXRvY2xvc2Vf
dGlja3MgJiYKIAkJCQkgICAgKHNjdHBfaXNfZmVhdHVyZV9vbihpbnAsIFNDVFBfUENCX0ZMQUdT
X0FVVE9DTE9TRSkpKSB7CkBAIC0xODIwLDcgKzE4MTQsNyBAQCBzY3RwX3Byb2Nlc3NfY29va2ll
X2V4aXN0aW5nKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCS8qIElm
IG5hdCBzdXBwb3J0LCBhbmQgdGhlIGJlbG93IGFuZCBzdGNiIGlzIGVzdGFibGlzaGVkLAogCSAq
IHNlbmQgYmFjayBhIEFCT1JUKGNvbGxpZGluZyBzdGF0ZSkgaWYgd2UgYXJlIGVzdGFibGlzaGVk
LgogCSAqLwotCWlmICgoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9PUEVOKSAg
JiYKKwlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfT1BFTikgICYmCiAJ
ICAgIChhc29jLT5wZWVyX3N1cHBvcnRzX25hdCkgJiYKIAkgICAgKChudG9obChpbml0YWNrX2Nw
LT5pbml0LmluaXRpYXRlX3RhZykgPT0gYXNvYy0+bXlfdnRhZykgJiYKIAkgICAgKChudG9obChp
bml0X2NwLT5pbml0LmluaXRpYXRlX3RhZykgIT0gYXNvYy0+cGVlcl92dGFnKSB8fApAQCAtMTgz
Niw3ICsxODMwLDcgQEAgc2N0cF9wcm9jZXNzX2Nvb2tpZV9leGlzdGluZyhzdHJ1Y3QgbWJ1ZiAq
bSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJICovCiAJCW9wX2VyciA9IHNjdHBfZ2VuZXJh
dGVfY2F1c2UoU0NUUF9DQVVTRV9OQVRfQ09MTElESU5HX1NUQVRFLCAiIik7CiAJCXNjdHBfc2Vu
ZF9hYm9ydChtLCBpcGhsZW4sICBzcmMsIGRzdCwgc2gsIDAsIG9wX2VyciwKLSNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAJCSAgICAgICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQsIGlucC0+Zmli
bnVtLAogI2VuZGlmCiAJCSAgICAgICAgICAgICAgICB2cmZfaWQsIHBvcnQpOwpAQCAtMTkyMywx
OSArMTkxNywxOSBAQCBzY3RwX3Byb2Nlc3NfY29va2llX2V4aXN0aW5nKHN0cnVjdCBtYnVmICpt
LCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCQkJCWFzb2MtPmNvb2tpZV9ob3dbaG93X2luZHhd
ID0gMTA7CiAJCQlyZXR1cm4gKE5VTEwpOwogCQl9Ci0JCWlmICgoYXNvYy0+c3RhdGUgJiBTQ1RQ
X1NUQVRFX0NPT0tJRV9XQUlUKSB8fAotCQkgICAgKGFzb2MtPnN0YXRlICYgU0NUUF9TVEFURV9D
T09LSUVfRUNIT0VEKSkgeworCQlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RB
VEVfQ09PS0lFX1dBSVQpIHx8CisJCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9T
VEFURV9DT09LSUVfRUNIT0VEKSkgewogCQkJKm5vdGlmaWNhdGlvbiA9IFNDVFBfTk9USUZZX0FT
U09DX1VQOwogCiAJCQlpZiAoKChzdGNiLT5zY3RwX2VwLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0Jf
RkxBR1NfVENQVFlQRSkgfHwKIAkJCSAgICAgKHN0Y2ItPnNjdHBfZXAtPnNjdHBfZmxhZ3MgJiBT
Q1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSkgJiYKIAkJCSAgICAoIVNDVFBfSVNfTElTVEVOSU5H
KGlucCkpKSB7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NL
X1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAJCQkJc3RydWN0IHNvY2tldCAqc287CiAjZW5kaWYKIAkJCQlzdGNiLT5zY3RwX2VwLT5z
Y3RwX2ZsYWdzIHw9CiAJCQkJCVNDVFBfUENCX0ZMQUdTX0NPTk5FQ1RFRDsKLSNpZiBkZWZpbmVk
KF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVk
KF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQlzbyA9IFNDVFBfSU5Q
X1NPKHN0Y2ItPnNjdHBfZXApOwogCQkJCWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29jLnJlZmNu
dCwgMSk7CiAJCQkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwpAQCAtMTk0OCwyNCArMTk0MiwyNCBA
QCBzY3RwX3Byb2Nlc3NfY29va2llX2V4aXN0aW5nKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVu
LCBpbnQgb2Zmc2V0LAogCQkJCX0KICNlbmRpZgogCQkJCXNvaXNjb25uZWN0ZWQoc3RjYi0+c2N0
cF9zb2NrZXQpOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9D
S19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogCQkJCVNDVFBfU09DS0VUX1VOTE9DSyhzbywgMSk7CiAjZW5kaWYKIAkJCX0KLQkJCWlm
IChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9FQ0hPRUQpCisJCQlp
ZiAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9DT09LSUVfRUNIT0VEKQogCQkJ
CVNDVFBfU1RBVF9JTkNSX0NPVU5URVIzMihzY3Rwc19hY3RpdmVlc3RhYik7CiAJCQllbHNlCiAJ
CQkJU0NUUF9TVEFUX0lOQ1JfQ09VTlRFUjMyKHNjdHBzX2NvbGxpc2lvbmVzdGFiKTsKIAkJCVND
VFBfU1RBVF9JTkNSX0dBVUdFMzIoc2N0cHNfY3VycmVzdGFiKTsKLQkJfSBlbHNlIGlmIChTQ1RQ
X0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHsKKwkJfSBlbHNlIGlmIChTQ1RQ
X0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHsKIAkJCVNDVFBfU1RBVF9JTkNS
X0NPVU5URVIzMihzY3Rwc19yZXN0YXJ0ZXN0YWIpOwogCQl9IGVsc2UgewogCQkJU0NUUF9TVEFU
X0lOQ1JfQ09VTlRFUjMyKHNjdHBzX2NvbGxpc2lvbmVzdGFiKTsKIAkJfQotCQlTQ1RQX1NFVF9T
VEFURShhc29jLCBTQ1RQX1NUQVRFX09QRU4pOworCQlTQ1RQX1NFVF9TVEFURShzdGNiLCBTQ1RQ
X1NUQVRFX09QRU4pOwogCQlpZiAoYXNvYy0+c3RhdGUgJiBTQ1RQX1NUQVRFX1NIVVRET1dOX1BF
TkRJTkcpIHsKIAkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NIVVRET1dOR1VB
UkQsCi0JCQkJCSBzdGNiLT5zY3RwX2VwLCBzdGNiLCBhc29jLT5wcmltYXJ5X2Rlc3RpbmF0aW9u
KTsKKwkJCSAgICAgICAgICAgICAgICAgc3RjYi0+c2N0cF9lcCwgc3RjYiwgTlVMTCk7CiAJCX0K
IAkJc2N0cF9zdG9wX2FsbF9jb29raWVfdGltZXJzKHN0Y2IpOwogCQlzY3RwX3Rvc3Nfb2xkX2Nv
b2tpZXMoc3RjYiwgYXNvYyk7CkBAIC0xOTkwLDcgKzE5ODQsNyBAQCBzY3RwX3Byb2Nlc3NfY29v
a2llX2V4aXN0aW5nKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCSAg
ICBjb29raWUtPnRpZV90YWdfcGVlcl92dGFnID09IGFzb2MtPnBlZXJfdnRhZ19ub25jZSAmJgog
CSAgICBjb29raWUtPnRpZV90YWdfcGVlcl92dGFnICE9IDApIHsKIAkJc3RydWN0IHNjdHBhc29j
aGVhZCAqaGVhZDsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xP
Q0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKIAkJc3RydWN0IHNvY2tldCAqc287CiAjZW5kaWYKIApAQCAtMjAwNCw3ICsxOTk4LDcg
QEAgc2N0cF9wcm9jZXNzX2Nvb2tpZV9leGlzdGluZyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxl
biwgaW50IG9mZnNldCwKIAkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2gsIGNv
b2tpZSwgY29va2llX2xlbiwKIAkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5w
LCBuZXRwLCBpbml0X3NyYyxub3RpZmljYXRpb24sCiAJCQkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGF1dGhfc2tpcHBlZCwgYXV0aF9vZmZzZXQsIGF1dGhfbGVuLAotI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKIAkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWZsb3d0eXBl
LCBtZmxvd2lkLAogI2VuZGlmCiAJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZy
Zl9pZCwgcG9ydCkpOwpAQCAtMjAyMywyNCArMjAxNywyNCBAQCBzY3RwX3Byb2Nlc3NfY29va2ll
X2V4aXN0aW5nKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCQkvKiBu
b3RpZnkgdXBwZXIgbGF5ZXIgKi8KIAkJKm5vdGlmaWNhdGlvbiA9IFNDVFBfTk9USUZZX0FTU09D
X1JFU1RBUlQ7CiAJCWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29jLnJlZmNudCwgMSk7Ci0JCWlm
ICgoU0NUUF9HRVRfU1RBVEUoYXNvYykgIT0gU0NUUF9TVEFURV9PUEVOKSAmJgotCQkgICAgKFND
VFBfR0VUX1NUQVRFKGFzb2MpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpICYmCi0J
CSAgICAoU0NUUF9HRVRfU1RBVEUoYXNvYykgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKSkg
eworCQlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVfT1BFTikgJiYKKwkJ
ICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVE
KSAmJgorCQkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVfU0hVVERPV05f
U0VOVCkpIHsKIAkJCVNDVFBfU1RBVF9JTkNSX0dBVUdFMzIoc2N0cHNfY3VycmVzdGFiKTsKIAkJ
fQotCQlpZiAoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9PUEVOKSB7CisJCWlm
IChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHsKIAkJCVNDVFBfU1RB
VF9JTkNSX0dBVUdFMzIoc2N0cHNfcmVzdGFydGVzdGFiKTsKLQkJfSBlbHNlIGlmIChTQ1RQX0dF
VF9TVEFURShhc29jKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpIHsKKwkJfSBlbHNlIGlm
IChTQ1RQX0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpIHsKIAkJ
CVNDVFBfU1RBVF9JTkNSX0dBVUdFMzIoc2N0cHNfY29sbGlzaW9uZXN0YWIpOwogCQl9CiAJCWlm
IChhc29jLT5zdGF0ZSAmIFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORykgewotCQkJU0NUUF9T
RVRfU1RBVEUoYXNvYywgU0NUUF9TVEFURV9PUEVOKTsKKwkJCVNDVFBfU0VUX1NUQVRFKHN0Y2Is
IFNDVFBfU1RBVEVfT1BFTik7CiAJCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9T
SFVURE9XTkdVQVJELAotCQkJCQkgc3RjYi0+c2N0cF9lcCwgc3RjYiwgYXNvYy0+cHJpbWFyeV9k
ZXN0aW5hdGlvbik7CisJCQkgICAgICAgICAgICAgICAgIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIE5V
TEwpOwogCi0JCX0gZWxzZSBpZiAoIShhc29jLT5zdGF0ZSAmIFNDVFBfU1RBVEVfU0hVVERPV05f
U0VOVCkpIHsKKwkJfSBlbHNlIGlmIChTQ1RQX0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQX1NUQVRF
X1NIVVRET1dOX1NFTlQpIHsKIAkJCS8qIG1vdmUgdG8gT1BFTiBzdGF0ZSwgaWYgbm90IGluIFNI
VVRET1dOX1NFTlQgKi8KLQkJCVNDVFBfU0VUX1NUQVRFKGFzb2MsIFNDVFBfU1RBVEVfT1BFTik7
CisJCQlTQ1RQX1NFVF9TVEFURShzdGNiLCBTQ1RQX1NUQVRFX09QRU4pOwogCQl9CiAJCWFzb2Mt
PnByZV9vcGVuX3N0cmVhbXMgPQogCQkJbnRvaHMoaW5pdGFja19jcC0+aW5pdC5udW1fb3V0Ym91
bmRfc3RyZWFtcyk7CkBAIC0yMDYyLDcgKzIwNTYsNyBAQCBzY3RwX3Byb2Nlc3NfY29va2llX2V4
aXN0aW5nKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCQkJICAgIGFz
b2MtPm1hcHBpbmdfYXJyYXlfc2l6ZSk7CiAJCX0KIAkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwot
I2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQor
I2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlzbyA9
IFNDVFBfSU5QX1NPKHN0Y2ItPnNjdHBfZXApOwogCQlTQ1RQX1NPQ0tFVF9MT0NLKHNvLCAxKTsK
ICNlbmRpZgpAQCAtMjA3Myw3ICsyMDY3LDcgQEAgc2N0cF9wcm9jZXNzX2Nvb2tpZV9leGlzdGlu
ZyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJLyogc2VuZCB1cCBh
bGwgdGhlIGRhdGEgKi8KIAkJU0NUUF9UQ0JfU0VORF9MT0NLKHN0Y2IpOwogCi0JCXNjdHBfcmVw
b3J0X2FsbF9vdXRib3VuZChzdGNiLCAwLCAxLCBTQ1RQX1NPX0xPQ0tFRCk7CisJCXNjdHBfcmVw
b3J0X2FsbF9vdXRib3VuZChzdGNiLCAwLCBTQ1RQX1NPX0xPQ0tFRCk7CiAJCWZvciAoaSA9IDA7
IGkgPCBzdGNiLT5hc29jLnN0cmVhbW91dGNudDsgaSsrKSB7CiAJCQlzdGNiLT5hc29jLnN0cm1v
dXRbaV0uY2h1bmtzX29uX3F1ZXVlcyA9IDA7CiAjaWYgZGVmaW5lZChTQ1RQX0RFVEFJTEVEX1NU
Ul9TVEFUUykKQEAgLTIxMDgsNyArMjEwMiw3IEBAIHNjdHBfcHJvY2Vzc19jb29raWVfZXhpc3Rp
bmcoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJCVNDVFBfVENCX1NF
TkRfVU5MT0NLKHN0Y2IpOwogCQlTQ1RQX0lOUF9XVU5MT0NLKHN0Y2ItPnNjdHBfZXApOwogCQlT
Q1RQX0lOUF9JTkZPX1dVTkxPQ0soKTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5l
ZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKIAkJU0NUUF9TT0NLRVRfVU5MT0NLKHNvLCAxKTsKICNlbmRpZgog
CQlhc29jLT50b3RhbF9mbGlnaHQgPSAwOwpAQCAtMjE2NSw3ICsyMTU5LDcgQEAgc2N0cF9wcm9j
ZXNzX2Nvb2tpZV9uZXcoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAg
ICAgc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfbmV0cyAqKm5ldHAsCiAgICAg
c3RydWN0IHNvY2thZGRyICppbml0X3NyYywgaW50ICpub3RpZmljYXRpb24sCiAgICAgaW50IGF1
dGhfc2tpcHBlZCwgdWludDMyX3QgYXV0aF9vZmZzZXQsIHVpbnQzMl90IGF1dGhfbGVuLAotI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKICAgICB1aW50OF90IG1mbG93dHlwZSwgdWludDMyX3QgbWZsb3dp
ZCwKICNlbmRpZgogICAgIHVpbnQzMl90IHZyZl9pZCwgdWludDE2X3QgcG9ydCkKQEAgLTIxNzgs
OCArMjE3Miw4IEBAIHNjdHBfcHJvY2Vzc19jb29raWVfbmV3KHN0cnVjdCBtYnVmICptLCBpbnQg
aXBobGVuLCBpbnQgb2Zmc2V0LAogCWludCBpbml0X29mZnNldCwgaW5pdGFja19vZmZzZXQsIGlu
aXRhY2tfbGltaXQ7CiAJaW50IHJldHZhbDsKIAlpbnQgZXJyb3IgPSAwOwotCXVpbnQ4X3QgYXV0
aF9jaHVua19idWZbU0NUUF9QQVJBTV9CVUZGRVJfU0laRV07Ci0jaWYgZGVmaW5lZChfX0FQUExF
X18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisJdWludDhfdCBhdXRoX2NodW5r
X2J1ZltTQ1RQX0NIVU5LX0JVRkZFUl9TSVpFXTsKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzdHJ1Y3Qgc29ja2V0ICpzbzsKIAogCXNvID0gU0NU
UF9JTlBfU08oaW5wKTsKQEAgLTIyNDMsMTQgKzIyMzcsMTQgQEAgc2N0cF9wcm9jZXNzX2Nvb2tp
ZV9uZXcoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJICAgICAgICAg
ICAgICAgICAgICAgICBudG9obChpbml0YWNrX2NwLT5pbml0LmluaXRpYXRlX3RhZyksIHZyZl9p
ZCwKIAkgICAgICAgICAgICAgICAgICAgICAgIG50b2hzKGluaXRhY2tfY3AtPmluaXQubnVtX291
dGJvdW5kX3N0cmVhbXMpLAogCSAgICAgICAgICAgICAgICAgICAgICAgcG9ydCwKLSNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMDAKLQkgICAgICAg
ICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGhyZWFkICopTlVMTAotI2VsaWYgZGVmaW5lZChfX1dp
bmRvd3NfXykKLQkgICAgICAgICAgICAgICAgICAgICAgIChQS1RIUkVBRClOVUxMCisjaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkgICAgICAgICAg
ICAgICAgICAgICAgIChzdHJ1Y3QgdGhyZWFkICopTlVMTCwKKyNlbGlmIGRlZmluZWQoX1dJTjMy
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCSAgICAgICAgICAgICAgICAgICAgICAgKFBL
VEhSRUFEKU5VTEwsCiAjZWxzZQotCSAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBwcm9j
ICopTlVMTAorCSAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBwcm9jICopTlVMTCwKICNl
bmRpZgotCSAgICAgICAgICAgICAgICAgICAgICAgKTsKKwkgICAgICAgICAgICAgICAgICAgICAg
IFNDVFBfRE9OVF9JTklUSUFMSVpFX0FVVEhfUEFSQU1TKTsKIAlpZiAoc3RjYiA9PSBOVUxMKSB7
CiAJCXN0cnVjdCBtYnVmICpvcF9lcnI7CiAKQEAgLTIyNjAsNyArMjI1NCw3IEBAIHNjdHBfcHJv
Y2Vzc19jb29raWVfbmV3KHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAog
CQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBfQ0FVU0VfT1VUX09GX1JFU0MsICIi
KTsKIAkJc2N0cF9hYm9ydF9hc3NvY2lhdGlvbihpbnAsIChzdHJ1Y3Qgc2N0cF90Y2IgKilOVUxM
LCBtLCBpcGhsZW4sCiAJCSAgICAgICAgICAgICAgICAgICAgICAgc3JjLCBkc3QsIHNoLCBvcF9l
cnIsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkgICAgICAgICAgICAgICAgICAgICAgIG1mbG93
dHlwZSwgbWZsb3dpZCwKICNlbmRpZgogCQkgICAgICAgICAgICAgICAgICAgICAgIHZyZl9pZCwg
cG9ydCk7CkBAIC0yMjk1LDExICsyMjg5LDExIEBAIHNjdHBfcHJvY2Vzc19jb29raWVfbmV3KHN0
cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCQlvcF9lcnIgPSBzY3RwX2dl
bmVyYXRlX2NhdXNlKFNDVFBfQ0FVU0VfT1VUX09GX1JFU0MsICIiKTsKIAkJc2N0cF9hYm9ydF9h
c3NvY2lhdGlvbihpbnAsIChzdHJ1Y3Qgc2N0cF90Y2IgKilOVUxMLCBtLCBpcGhsZW4sCiAJCQkJ
ICAgICAgIHNyYywgZHN0LCBzaCwgb3BfZXJyLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJICAg
ICAgICAgICAgICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQsCiAjZW5kaWYKIAkJICAgICAg
ICAgICAgICAgICAgICAgICB2cmZfaWQsIHBvcnQpOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8
fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlhdG9taWNfYWRkX2ludCgmc3RjYi0+YXNvYy5y
ZWZjbnQsIDEpOwogCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CiAJCVNDVFBfU09DS0VUX0xPQ0so
c28sIDEpOwpAQCAtMjMwOCw3ICsyMzAyLDcgQEAgc2N0cF9wcm9jZXNzX2Nvb2tpZV9uZXcoc3Ry
dWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAjZW5kaWYKIAkJKHZvaWQpc2N0
cF9mcmVlX2Fzc29jKGlucCwgc3RjYiwgU0NUUF9OT1JNQUxfUFJPQywKIAkJCQkgICAgICBTQ1RQ
X0ZST01fU0NUUF9JTlBVVCArIFNDVFBfTE9DXzE4KTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykg
fHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJU0NUUF9TT0NLRVRfVU5MT0NLKHNvLCAxKTsK
ICNlbmRpZgogCQlyZXR1cm4gKE5VTEwpOwpAQCAtMjMzMSw3ICsyMzI1LDcgQEAgc2N0cF9wcm9j
ZXNzX2Nvb2tpZV9uZXcoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJ
ZWxzZQogCQlyZXR2YWwgPSAwOwogCWlmIChyZXR2YWwgPCAwKSB7Ci0jaWYgZGVmaW5lZChfX0FQ
UExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQ
UExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCWF0b21pY19hZGRfaW50KCZzdGNi
LT5hc29jLnJlZmNudCwgMSk7CiAJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKIAkJU0NUUF9TT0NL
RVRfTE9DSyhzbywgMSk7CkBAIC0yMzQwLDcgKzIzMzQsNyBAQCBzY3RwX3Byb2Nlc3NfY29va2ll
X25ldyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKICNlbmRpZgogCQko
dm9pZClzY3RwX2ZyZWVfYXNzb2MoaW5wLCBzdGNiLCBTQ1RQX05PUk1BTF9QUk9DLAogCQkgICAg
ICAgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBfSU5QVVQgKyBTQ1RQX0xPQ18xOSk7Ci0j
aWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisj
aWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCVNDVFBf
U09DS0VUX1VOTE9DSyhzbywgMSk7CiAjZW5kaWYKIAkJcmV0dXJuIChOVUxMKTsKQEAgLTIzNDks
NyArMjM0Myw3IEBAIHNjdHBfcHJvY2Vzc19jb29raWVfbmV3KHN0cnVjdCBtYnVmICptLCBpbnQg
aXBobGVuLCBpbnQgb2Zmc2V0LAogCWlmIChzY3RwX2xvYWRfYWRkcmVzc2VzX2Zyb21faW5pdChz
dGNiLCBtLAogCSAgICBpbml0X29mZnNldCArIHNpemVvZihzdHJ1Y3Qgc2N0cF9pbml0X2NodW5r
KSwgaW5pdGFja19vZmZzZXQsCiAJICAgIHNyYywgZHN0LCBpbml0X3NyYywgcG9ydCkpIHsKLSNp
ZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNp
ZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJYXRvbWlj
X2FkZF9pbnQoJnN0Y2ItPmFzb2MucmVmY250LCAxKTsKIAkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2Ip
OwogCQlTQ1RQX1NPQ0tFVF9MT0NLKHNvLCAxKTsKQEAgLTIzNTgsNyArMjM1Miw3IEBAIHNjdHBf
cHJvY2Vzc19jb29raWVfbmV3KHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0
LAogI2VuZGlmCiAJCSh2b2lkKXNjdHBfZnJlZV9hc3NvYyhpbnAsIHN0Y2IsIFNDVFBfTk9STUFM
X1BST0MsCiAJCSAgICAgICAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUF9JTlBVVCArIFND
VFBfTE9DXzIwKTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xP
Q0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKIAkJU0NUUF9TT0NLRVRfVU5MT0NLKHNvLCAxKTsKICNlbmRpZgogCQlyZXR1cm4gKE5V
TEwpOwpAQCAtMjM3MywxMyArMjM2NywxNiBAQCBzY3RwX3Byb2Nlc3NfY29va2llX25ldyhzdHJ1
Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAlpZiAoYXV0aF9za2lwcGVkKSB7
CiAJCXN0cnVjdCBzY3RwX2F1dGhfY2h1bmsgKmF1dGg7CiAKLQkJYXV0aCA9IChzdHJ1Y3Qgc2N0
cF9hdXRoX2NodW5rICopCi0JCSAgICBzY3RwX21fZ2V0cHRyKG0sIGF1dGhfb2Zmc2V0LCBhdXRo
X2xlbiwgYXV0aF9jaHVua19idWYpOworCQlpZiAoYXV0aF9sZW4gPD0gU0NUUF9DSFVOS19CVUZG
RVJfU0laRSkgeworCQkJYXV0aCA9IChzdHJ1Y3Qgc2N0cF9hdXRoX2NodW5rICopc2N0cF9tX2dl
dHB0cihtLCBhdXRoX29mZnNldCwgYXV0aF9sZW4sIGF1dGhfY2h1bmtfYnVmKTsKKwkJfSBlbHNl
IHsKKwkJCWF1dGggPSBOVUxMOworCQl9CiAJCWlmICgoYXV0aCA9PSBOVUxMKSB8fCBzY3RwX2hh
bmRsZV9hdXRoKHN0Y2IsIGF1dGgsIG0sIGF1dGhfb2Zmc2V0KSkgewogCQkJLyogYXV0aCBITUFD
IGZhaWxlZCwgZHVtcCB0aGUgYXNzb2MgYW5kIHBhY2tldCAqLwogCQkJU0NUUERCRyhTQ1RQX0RF
QlVHX0FVVEgxLAogCQkJCSJDT09LSUUtRUNITzogQVVUSCBmYWlsZWRcbiIpOwotI2lmIGRlZmlu
ZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmlu
ZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJYXRvbWljX2FkZF9p
bnQoJnN0Y2ItPmFzb2MucmVmY250LCAxKTsKIAkJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKIAkJ
CVNDVFBfU09DS0VUX0xPQ0soc28sIDEpOwpAQCAtMjM4OCw3ICsyMzg1LDcgQEAgc2N0cF9wcm9j
ZXNzX2Nvb2tpZV9uZXcoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAj
ZW5kaWYKIAkJCSh2b2lkKXNjdHBfZnJlZV9hc3NvYyhpbnAsIHN0Y2IsIFNDVFBfTk9STUFMX1BS
T0MsCiAJCQkgICAgICAgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBfSU5QVVQgKyBTQ1RQ
X0xPQ18yMSk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NL
X1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAJCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDEpOwogI2VuZGlmCiAJCQlyZXR1cm4gKE5V
TEwpOwpAQCAtMjQ0NSw3ICsyNDQyLDcgQEAgc2N0cF9wcm9jZXNzX2Nvb2tpZV9uZXcoc3RydWN0
IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJCWJyZWFrOwogI2VuZGlmCiAJZGVm
YXVsdDoKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVT
VElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
IAkJYXRvbWljX2FkZF9pbnQoJnN0Y2ItPmFzb2MucmVmY250LCAxKTsKIAkJU0NUUF9UQ0JfVU5M
T0NLKHN0Y2IpOwogCQlTQ1RQX1NPQ0tFVF9MT0NLKHNvLCAxKTsKQEAgLTI0NTQsNyArMjQ1MSw3
IEBAIHNjdHBfcHJvY2Vzc19jb29raWVfbmV3KHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBp
bnQgb2Zmc2V0LAogI2VuZGlmCiAJCSh2b2lkKXNjdHBfZnJlZV9hc3NvYyhpbnAsIHN0Y2IsIFND
VFBfTk9STUFMX1BST0MsCiAJCSAgICAgICAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUF9J
TlBVVCArIFNDVFBfTE9DXzIyKTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChT
Q1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKIAkJU0NUUF9TT0NLRVRfVU5MT0NLKHNvLCAxKTsKICNlbmRpZgogCQly
ZXR1cm4gKE5VTEwpOwpAQCAtMjQ2MiwxMCArMjQ1OSwxMCBAQCBzY3RwX3Byb2Nlc3NfY29va2ll
X25ldyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAogCS8qIHVwZGF0
ZSBjdXJyZW50IHN0YXRlICovCiAJU0NUUERCRyhTQ1RQX0RFQlVHX0lOUFVUMiwgIm1vdmluZyB0
byBPUEVOIHN0YXRlXG4iKTsKLQlTQ1RQX1NFVF9TVEFURShhc29jLCBTQ1RQX1NUQVRFX09QRU4p
OworCVNDVFBfU0VUX1NUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfT1BFTik7CiAJaWYgKGFzb2MtPnN0
YXRlICYgU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HKSB7CiAJCXNjdHBfdGltZXJfc3RhcnQo
U0NUUF9USU1FUl9UWVBFX1NIVVRET1dOR1VBUkQsCi0JCQkJIHN0Y2ItPnNjdHBfZXAsIHN0Y2Is
IGFzb2MtPnByaW1hcnlfZGVzdGluYXRpb24pOworCQkgICAgICAgICAgICAgICAgIHN0Y2ItPnNj
dHBfZXAsIHN0Y2IsIE5VTEwpOwogCX0KIAlzY3RwX3N0b3BfYWxsX2Nvb2tpZV90aW1lcnMoc3Rj
Yik7CiAJU0NUUF9TVEFUX0lOQ1JfQ09VTlRFUjMyKHNjdHBzX3Bhc3NpdmVlc3RhYik7CkBAIC0y
NDg1LDcgKzI0ODIsNyBAQCBzY3RwX3Byb2Nlc3NfY29va2llX25ldyhzdHJ1Y3QgbWJ1ZiAqbSwg
aW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJICogYSBiaXQgb2YgcHJvdGVjdGlvbiBpcyB3b3J0
aCBoYXZpbmcuLgogCQkgKi8KIAkJc3RjYi0+c2N0cF9lcC0+c2N0cF9mbGFncyB8PSBTQ1RQX1BD
Ql9GTEFHU19DT05ORUNURUQ7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NU
UF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAJCWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29jLnJlZmNudCwgMSk7CiAJ
CVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKIAkJU0NUUF9TT0NLRVRfTE9DSyhzbywgMSk7CkBAIC0y
NDk3LDcgKzI0OTQsNyBAQCBzY3RwX3Byb2Nlc3NfY29va2llX25ldyhzdHJ1Y3QgbWJ1ZiAqbSwg
aW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJfQogI2VuZGlmCiAJCXNvaXNjb25uZWN0ZWQoc3Rj
Yi0+c2N0cF9zb2NrZXQpOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBf
U09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDEpOwogI2VuZGlmCiAJfSBlbHNl
IGlmICgoc3RjYi0+c2N0cF9lcC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUp
ICYmCkBAIC0yNTI0LDggKzI1MjEsNyBAQCBzY3RwX3Byb2Nlc3NfY29va2llX25ldyhzdHJ1Y3Qg
bWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJLyogY2FsY3VsYXRlIHRoZSBSVFQg
YW5kIHNldCB0aGUgZW5jYXBzIHBvcnQgKi8KIAkJb2xkLnR2X3NlYyA9IGNvb2tpZS0+dGltZV9l
bnRlcmVkLnR2X3NlYzsKIAkJb2xkLnR2X3VzZWMgPSBjb29raWUtPnRpbWVfZW50ZXJlZC50dl91
c2VjOwotCQkoKm5ldHApLT5SVE8gPSBzY3RwX2NhbGN1bGF0ZV9ydG8oc3RjYiwgYXNvYywgKm5l
dHAsCi0JCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb2xkLCBTQ1RQX1JUVF9G
Uk9NX05PTl9EQVRBKTsKKwkJc2N0cF9jYWxjdWxhdGVfcnRvKHN0Y2IsIGFzb2MsICpuZXRwLCAm
b2xkLCBTQ1RQX1JUVF9GUk9NX05PTl9EQVRBKTsKIAl9CiAJLyogcmVzcG9uZCB3aXRoIGEgQ09P
S0lFLUFDSyAqLwogCXNjdHBfc2VuZF9jb29raWVfYWNrKHN0Y2IpOwpAQCAtMjU2OCw3ICsyNTY0
LDcgQEAgc2N0cF9oYW5kbGVfY29va2llX2VjaG8oc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4s
IGludCBvZmZzZXQsCiAgICAgc3RydWN0IHNjdHBfaW5wY2IgKippbnBfcCwgc3RydWN0IHNjdHBf
dGNiICoqc3RjYiwgc3RydWN0IHNjdHBfbmV0cyAqKm5ldHAsCiAgICAgaW50IGF1dGhfc2tpcHBl
ZCwgdWludDMyX3QgYXV0aF9vZmZzZXQsIHVpbnQzMl90IGF1dGhfbGVuLAogICAgIHN0cnVjdCBz
Y3RwX3RjYiAqKmxvY2tlZF90Y2IsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogICAgIHVpbnQ4X3Qg
bWZsb3d0eXBlLCB1aW50MzJfdCBtZmxvd2lkLAogI2VuZGlmCiAgICAgdWludDMyX3QgdnJmX2lk
LCB1aW50MTZfdCBwb3J0KQpAQCAtMjYyOCw2ICsyNjI0LDI3IEBAIHNjdHBfaGFuZGxlX2Nvb2tp
ZV9lY2hvKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCQkgKi8KIAkJ
cmV0dXJuIChOVUxMKTsKIAl9CisjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCS8qCisJICog
UmVjb3ZlciB0aGUgQUZfQ09OTiBhZGRyZXNzZXMgd2l0aGluIHRoZSBjb29raWUuCisJICogVGhp
cyBuZWVkcyB0byBiZSBkb25lIGluIHRoZSBidWZmZXIgcHJvdmlkZWQgZm9yIGxhdGVyIHByb2Nl
c3NpbmcKKwkgKiBvZiB0aGUgY29va2llIGFuZCBpbiB0aGUgbWJ1ZiBjaGFpbiBmb3IgSE1BQyB2
YWxpZGF0aW9uLgorCSAqLworCWlmICgoY29va2llLT5hZGRyX3R5cGUgPT0gU0NUUF9DT05OX0FE
RFJFU1MpICYmIChzcmMtPnNhX2ZhbWlseSA9PSBBRl9DT05OKSkgeworCQlzdHJ1Y3Qgc29ja2Fk
ZHJfY29ubiAqc2Nvbm5wID0gKHN0cnVjdCBzb2NrYWRkcl9jb25uICopc3JjOworCisJCW1lbWNw
eShjb29raWUtPmFkZHJlc3MsICZzY29ubnAtPnNjb25uX2FkZHIgLCBzaXplb2Yodm9pZCAqKSk7
CisJCW1fY29weWJhY2sobSwgY29va2llX29mZnNldCArIG9mZnNldG9mKHN0cnVjdCBzY3RwX3N0
YXRlX2Nvb2tpZSwgYWRkcmVzcyksCisJCSAgICAgICAgICAgKGludClzaXplb2Yodm9pZCAqKSwg
KGNhZGRyX3QpJnNjb25ucC0+c2Nvbm5fYWRkcik7CisJfQorCWlmICgoY29va2llLT5sYWRkcl90
eXBlID09IFNDVFBfQ09OTl9BRERSRVNTKSAmJiAoZHN0LT5zYV9mYW1pbHkgPT0gQUZfQ09OTikp
IHsKKwkJc3RydWN0IHNvY2thZGRyX2Nvbm4gKnNjb25ucCA9IChzdHJ1Y3Qgc29ja2FkZHJfY29u
biAqKWRzdDsKKworCQltZW1jcHkoY29va2llLT5sYWRkcmVzcywgJnNjb25ucC0+c2Nvbm5fYWRk
ciAsIHNpemVvZih2b2lkICopKTsKKwkJbV9jb3B5YmFjayhtLCBjb29raWVfb2Zmc2V0ICsgb2Zm
c2V0b2Yoc3RydWN0IHNjdHBfc3RhdGVfY29va2llLCBsYWRkcmVzcyksCisJCSAgICAgICAgICAg
KGludClzaXplb2Yodm9pZCAqKSwgKGNhZGRyX3QpJnNjb25ucC0+c2Nvbm5fYWRkcik7CisJfQor
I2VuZGlmCiAJLyoKIAkgKiBzcGxpdCBvZmYgdGhlIHNpZ25hdHVyZSBpbnRvIGl0cyBvd24gbWJ1
ZiAoc2luY2UgaXQgc2hvdWxkIG5vdCBiZQogCSAqIGNhbGN1bGF0ZWQgaW4gdGhlIHNjdHBfaG1h
Y19tKCkgY2FsbCkuCkBAIC0yNjc4LDcgKzI2OTUsNyBAQCBzY3RwX2hhbmRsZV9jb29raWVfZWNo
byhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJcmV0dXJuIChOVUxM
KTsKIAl9CiAJLyogY29tcGFyZSB0aGUgcmVjZWl2ZWQgZGlnZXN0IHdpdGggdGhlIGNvbXB1dGVk
IGRpZ2VzdCAqLwotCWlmIChtZW1jbXAoY2FsY19zaWcsIHNpZywgU0NUUF9TSUdOQVRVUkVfU0la
RSkgIT0gMCkgeworCWlmICh0aW1pbmdzYWZlX2JjbXAoY2FsY19zaWcsIHNpZywgU0NUUF9TSUdO
QVRVUkVfU0laRSkgIT0gMCkgewogCQkvKiB0cnkgdGhlIG9sZCBjb29raWU/ICovCiAJCWlmICgo
Y29va2llLT50aW1lX2VudGVyZWQudHZfc2VjID09IChsb25nKWVwLT50aW1lX29mX3NlY3JldF9j
aGFuZ2UpICYmCiAJCSAgICAoZXAtPmN1cnJlbnRfc2VjcmV0X251bWJlciAhPSBlcC0+bGFzdF9z
ZWNyZXRfbnVtYmVyKSkgewpAQCAtMjY4Nyw3ICsyNzA0LDcgQEAgc2N0cF9oYW5kbGVfY29va2ll
X2VjaG8oc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJCQkgICAgKHVp
bnQ4X3QgKillcC0+c2VjcmV0X2tleVsoaW50KWVwLT5sYXN0X3NlY3JldF9udW1iZXJdLAogCQkJ
ICAgIFNDVFBfU0VDUkVUX1NJWkUsIG0sIGNvb2tpZV9vZmZzZXQsIGNhbGNfc2lnLCAwKTsKIAkJ
CS8qIGNvbXBhcmUgKi8KLQkJCWlmIChtZW1jbXAoY2FsY19zaWcsIHNpZywgU0NUUF9TSUdOQVRV
UkVfU0laRSkgPT0gMCkKKwkJCWlmICh0aW1pbmdzYWZlX2JjbXAoY2FsY19zaWcsIHNpZywgU0NU
UF9TSUdOQVRVUkVfU0laRSkgPT0gMCkKIAkJCQljb29raWVfb2sgPSAxOwogCQl9CiAJfSBlbHNl
IHsKQEAgLTI3MjEsOSArMjczOCw5IEBAIHNjdHBfaGFuZGxlX2Nvb2tpZV9lY2hvKHN0cnVjdCBt
YnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCSAqLwogCSh2b2lkKVNDVFBfR0VUVElN
RV9USU1FVkFMKCZub3cpOwogCS8qIEV4cGlyZSB0aW1lIGlzIGluIFRpY2tzLCBzbyB3ZSBjb252
ZXJ0IHRvIHNlY29uZHMgKi8KLQl0aW1lX2V4cGlyZXMudHZfc2VjID0gY29va2llLT50aW1lX2Vu
dGVyZWQudHZfc2VjICsgVElDS1NfVE9fU0VDKGNvb2tpZS0+Y29va2llX2xpZmUpOworCXRpbWVf
ZXhwaXJlcy50dl9zZWMgPSBjb29raWUtPnRpbWVfZW50ZXJlZC50dl9zZWMgKyBzY3RwX3RpY2tz
X3RvX3NlY3MoY29va2llLT5jb29raWVfbGlmZSk7CiAJdGltZV9leHBpcmVzLnR2X3VzZWMgPSBj
b29raWUtPnRpbWVfZW50ZXJlZC50dl91c2VjOwotI2lmbmRlZiBfX0ZyZWVCU0RfXworI2lmICEo
ZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAJaWYgKHRp
bWVyY21wKCZub3csICZ0aW1lX2V4cGlyZXMsID4pKQogI2Vsc2UKIAlpZiAodGltZXZhbGNtcCgm
bm93LCAmdGltZV9leHBpcmVzLCA+KSkKQEAgLTI3NDcsNyArMjc2NCw3IEBAIHNjdHBfaGFuZGxl
X2Nvb2tpZV9lY2hvKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCQlj
YXVzZS0+Y2F1c2UuY29kZSA9IGh0b25zKFNDVFBfQ0FVU0VfU1RBTEVfQ09PS0lFKTsKIAkJY2F1
c2UtPmNhdXNlLmxlbmd0aCA9IGh0b25zKChzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpICsK
IAkJICAgIChzaXplb2YodWludDMyX3QpKSkpOwotI2lmbmRlZiBfX0ZyZWVCU0RfXworI2lmICEo
ZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAJCXRpbWVy
c3ViKCZub3csICZ0aW1lX2V4cGlyZXMsICZkaWZmKTsKICNlbHNlCiAJCWRpZmYgPSBub3c7CkBA
IC0yNzY1LDcgKzI3ODIsNyBAQCBzY3RwX2hhbmRsZV9jb29raWVfZWNobyhzdHJ1Y3QgbWJ1ZiAq
bSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJfQogCQljYXVzZS0+c3RhbGVfdGltZSA9IGh0
b25sKHN0YWxlbmVzcyk7CiAJCXNjdHBfc2VuZF9vcGVycl90byhzcmMsIGRzdCwgc2gsIGNvb2tp
ZS0+cGVlcnNfdnRhZywgb3BfZXJyLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJICAgICAgICAg
ICAgICAgICAgIG1mbG93dHlwZSwgbWZsb3dpZCwgbF9pbnAtPmZpYm51bSwKICNlbmRpZgogCQkg
ICAgICAgICAgICAgICAgICAgdnJmX2lkLCBwb3J0KTsKQEAgLTI4NjgsNyArMjg4NSw3IEBAIHNj
dHBfaGFuZGxlX2Nvb2tpZV9lY2hvKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zm
c2V0LAogCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvb2tpZSwgY29va2llX2xl
biwgKmlucF9wLAogCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHAsIHRvLCAm
bm90aWZpY2F0aW9uLAogCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhfc2tp
cHBlZCwgYXV0aF9vZmZzZXQsIGF1dGhfbGVuLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQsCiAjZW5kaWYK
IAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2cmZfaWQsIHBvcnQpOwpAQCAtMjg3
OSw3ICsyODk2LDcgQEAgc2N0cF9oYW5kbGVfY29va2llX2VjaG8oc3RydWN0IG1idWYgKm0sIGlu
dCBpcGhsZW4sIGludCBvZmZzZXQsCiAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzcmMsIGRzdCwgc2gsCiAJCQkJCQkgICAgIGNvb2tpZSwgY29va2llX2xlbiwgKmlucF9w
LCAqc3RjYiwgbmV0cCwgdG8sCiAJCQkJCQkgICAgICZub3RpZmljYXRpb24sIGF1dGhfc2tpcHBl
ZCwgYXV0aF9vZmZzZXQsIGF1dGhfbGVuLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1mbG93dHlwZSwgbWZsb3dpZCwKICNlbmRp
ZgogCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnJmX2lkLCBwb3J0KTsK
QEAgLTI4ODksNyArMjkwNiw3IEBAIHNjdHBfaGFuZGxlX2Nvb2tpZV9lY2hvKHN0cnVjdCBtYnVm
ICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCQkvKiBzdGlsbCBubyBUQ0IuLi4gbXVzdCBi
ZSBiYWQgY29va2llLWVjaG8gKi8KIAkJcmV0dXJuIChOVUxMKTsKIAl9Ci0jaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCWlmICgqbmV0cCAhPSBOVUxMKSB7CiAJCSgqbmV0cCktPmZsb3d0eXBlID0gbWZs
b3d0eXBlOwogCQkoKm5ldHApLT5mbG93aWQgPSBtZmxvd2lkOwpAQCAtMjk0NCwzNiArMjk2MSwy
MyBAQCBzY3RwX2hhbmRsZV9jb29raWVfZWNobyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwg
aW50IG9mZnNldCwKIAkJCQlyZXR1cm4gKG0pOwogCQkJfQogCQkJb3NvID0gKCppbnBfcCktPnNj
dHBfc29ja2V0OwotI2lmIChkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lv
biA8IDcwMDAwMCkKLQkJCS8qCi0JCQkgKiBXZSBkbyB0aGlzIHRvIGtlZXAgdGhlIHNvY2tldHMg
c2lkZSBoYXBweSBkdXJpbmcKLQkJCSAqIHRoZSBzb25ld2NvbiBPTkxZLgotCQkJICovCi0JCQlO
RVRfTE9DS19HSUFOVCgpOwotI2VuZGlmCiAJCQlhdG9taWNfYWRkX2ludCgmKCpzdGNiKS0+YXNv
Yy5yZWZjbnQsIDEpOwogCQkJU0NUUF9UQ0JfVU5MT0NLKCgqc3RjYikpOwotI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMTAwMAorI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQlDVVJWTkVUX1NFVChv
c28tPnNvX3ZuZXQpOwogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5l
ZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQlTQ1RQX1NPQ0tFVF9M
T0NLKG9zbywgMSk7CiAjZW5kaWYKIAkJCXNvID0gc29uZXdjb25uKG9zbywgMAotI2lmIGRlZmlu
ZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCQkJICAgICxOVUxMCi0jZW5kaWYKLSNpZmRlZiBfX1BhbmRhX18KLQkJCSAgICAg
LE5VTEwgLCAoKmlucF9wKS0+ZGVmX3ZyZl9pZAogI2VuZGlmCiAJCQkgICAgKTsKLSNpZiAoZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPCA3MDAwMDApCi0JCQlORVRf
VU5MT0NLX0dJQU5UKCk7Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZp
bmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCVNDVFBfU09DS0VU
X1VOTE9DSyhvc28sIDEpOwogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19G
cmVlQlNEX3ZlcnNpb24gPj0gODAxMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCUNVUlZORVRfUkVTVE9SRSgpOwogI2VuZGlmCiAJCQlT
Q1RQX1RDQl9MT0NLKCgqc3RjYikpOwpAQCAtMjk4MSw3ICsyOTg1LDcgQEAgc2N0cF9oYW5kbGVf
Y29va2llX2VjaG8oc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAKIAkJ
CWlmIChzbyA9PSBOVUxMKSB7CiAJCQkJc3RydWN0IG1idWYgKm9wX2VycjsKLSNpZiBkZWZpbmVk
KF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVk
KF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQlzdHJ1Y3Qgc29ja2V0
ICpwY2Jfc287CiAjZW5kaWYKIAkJCQkvKiBUb28gbWFueSBzb2NrZXRzICovCkBAIC0yOTg5LDEx
ICsyOTkzLDExIEBAIHNjdHBfaGFuZGxlX2Nvb2tpZV9lY2hvKHN0cnVjdCBtYnVmICptLCBpbnQg
aXBobGVuLCBpbnQgb2Zmc2V0LAogCQkJCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NU
UF9DQVVTRV9PVVRfT0ZfUkVTQywgIiIpOwogCQkJCXNjdHBfYWJvcnRfYXNzb2NpYXRpb24oKmlu
cF9wLCBOVUxMLCBtLCBpcGhsZW4sCiAJCQkJCQkgICAgICAgc3JjLCBkc3QsIHNoLCBvcF9lcnIs
Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCSAgICAgICAgICAgICAgICAgICAgICAgbWZsb3d0
eXBlLCBtZmxvd2lkLAogI2VuZGlmCiAJCQkJICAgICAgICAgICAgICAgICAgICAgICB2cmZfaWQs
IHBvcnQpOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19U
RVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCQkJCXBjYl9zbyA9IFNDVFBfSU5QX1NPKCppbnBfcCk7CiAJCQkJYXRvbWljX2FkZF9pbnQo
Jigqc3RjYiktPmFzb2MucmVmY250LCAxKTsKIAkJCQlTQ1RQX1RDQl9VTkxPQ0soKCpzdGNiKSk7
CkBAIC0zMDAzLDcgKzMwMDcsNyBAQCBzY3RwX2hhbmRsZV9jb29raWVfZWNobyhzdHJ1Y3QgbWJ1
ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKICNlbmRpZgogCQkJCSh2b2lkKXNjdHBfZnJl
ZV9hc3NvYygqaW5wX3AsICpzdGNiLCBTQ1RQX05PUk1BTF9QUk9DLAogCQkJCSAgICAgICAgICAg
ICAgICAgICAgICBTQ1RQX0ZST01fU0NUUF9JTlBVVCArIFNDVFBfTE9DXzIzKTsKLSNpZiBkZWZp
bmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZp
bmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQlTQ1RQX1NPQ0tF
VF9VTkxPQ0socGNiX3NvLCAxKTsKICNlbmRpZgogCQkJCXJldHVybiAoTlVMTCk7CkBAIC0zMDY3
LDE0ICszMDcxLDE0IEBAIHNjdHBfaGFuZGxlX2Nvb2tpZV9lY2hvKHN0cnVjdCBtYnVmICptLCBp
bnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCQkJICogdGhlIGFjY2VwdCBzdGF0ZSB3YWl0aW5nIGZv
ciB0aGUgYWNjZXB0IQogCQkJICovCiAJCQlpZiAoKnN0Y2IpIHsKLQkJCQkoKnN0Y2IpLT5hc29j
LnN0YXRlIHw9IFNDVFBfU1RBVEVfSU5fQUNDRVBUX1FVRVVFOworCQkJCVNDVFBfQUREX1NVQlNU
QVRFKCpzdGNiLCBTQ1RQX1NUQVRFX0lOX0FDQ0VQVF9RVUVVRSk7CiAJCQl9CiAJCQlzY3RwX21v
dmVfcGNiX2FuZF9hc3NvYygqaW5wX3AsIGlucCwgKnN0Y2IpOwogCiAJCQlhdG9taWNfYWRkX2lu
dCgmKCpzdGNiKS0+YXNvYy5yZWZjbnQsIDEpOwogCQkJU0NUUF9UQ0JfVU5MT0NLKCgqc3RjYikp
OwogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJc2N0cF9wdWxsX29mZl9jb250cm9sX3RvX25l
d19pbnAoKCppbnBfcCksIGlucCwgKnN0Y2IsCiAJCQkgICAgMCk7CiAjZWxzZQpAQCAtMzEwNiwx
MyArMzExMCwxMyBAQCBzY3RwX2hhbmRsZV9jb29raWVfZWNobyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50
IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJCX0KIAogCQkJLyogUHVsbCBpdCBmcm9tIHRoZSBpbmNv
bXBsZXRlIHF1ZXVlIGFuZCB3YWtlIHRoZSBndXkgKi8KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykg
fHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCWF0b21pY19hZGRfaW50KCYoKnN0Y2IpLT5h
c29jLnJlZmNudCwgMSk7CiAJCQlTQ1RQX1RDQl9VTkxPQ0soKCpzdGNiKSk7CiAJCQlTQ1RQX1NP
Q0tFVF9MT0NLKHNvLCAxKTsKICNlbmRpZgogCQkJc29pc2Nvbm5lY3RlZChzbyk7Ci0jaWYgZGVm
aW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVm
aW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQlTQ1RQX1RDQl9M
T0NLKCgqc3RjYikpOwogCQkJYXRvbWljX3N1YnRyYWN0X2ludCgmKCpzdGNiKS0+YXNvYy5yZWZj
bnQsIDEpOwogCQkJU0NUUF9TT0NLRVRfVU5MT0NLKHNvLCAxKTsKQEAgLTMxMzYsNiArMzE0MCw3
IEBAIHNjdHBfaGFuZGxlX2Nvb2tpZV9hY2soc3RydWN0IHNjdHBfY29va2llX2Fja19jaHVuayAq
Y3AgU0NUUF9VTlVTRUQsCiB7CiAJLyogY3AgbXVzdCBub3QgYmUgdXNlZCwgb3RoZXJzIGNhbGwg
dGhpcyB3aXRob3V0IGEgYy1hY2sgOi0pICovCiAJc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFz
b2M7CisJc3RydWN0IHNjdHBfdG1pdF9jaHVuayAqY2hrOwogCiAJU0NUUERCRyhTQ1RQX0RFQlVH
X0lOUFVUMiwKIAkJInNjdHBfaGFuZGxlX2Nvb2tpZV9hY2s6IGhhbmRsaW5nIENPT0tJRS1BQ0tc
biIpOwpAQCAtMzE1NCwzNCArMzE1OSwzMyBAQCBzY3RwX2hhbmRsZV9jb29raWVfYWNrKHN0cnVj
dCBzY3RwX2Nvb2tpZV9hY2tfY2h1bmsgKmNwIFNDVFBfVU5VU0VELAogCWFzb2MtPm92ZXJhbGxf
ZXJyb3JfY291bnQgPSAwOwogCXNjdHBfc3RvcF9hbGxfY29va2llX3RpbWVycyhzdGNiKTsKIAkv
KiBwcm9jZXNzIGFjY29yZGluZyB0byBhc3NvY2lhdGlvbiBzdGF0ZSAqLwotCWlmIChTQ1RQX0dF
VF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9FQ0hPRUQpIHsKKwlpZiAoU0NUUF9H
RVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9DT09LSUVfRUNIT0VEKSB7CiAJCS8qIHN0YXRl
IGNoYW5nZSBvbmx5IG5lZWRlZCB3aGVuIEkgYW0gaW4gcmlnaHQgc3RhdGUgKi8KIAkJU0NUUERC
RyhTQ1RQX0RFQlVHX0lOUFVUMiwgIm1vdmluZyB0byBPUEVOIHN0YXRlXG4iKTsKLQkJU0NUUF9T
RVRfU1RBVEUoYXNvYywgU0NUUF9TVEFURV9PUEVOKTsKKwkJU0NUUF9TRVRfU1RBVEUoc3RjYiwg
U0NUUF9TVEFURV9PUEVOKTsKIAkJc2N0cF9zdGFydF9uZXRfdGltZXJzKHN0Y2IpOwogCQlpZiAo
YXNvYy0+c3RhdGUgJiBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJTkcpIHsKIAkJCXNjdHBfdGlt
ZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NIVVRET1dOR1VBUkQsCi0JCQkJCSBzdGNiLT5zY3Rw
X2VwLCBzdGNiLCBhc29jLT5wcmltYXJ5X2Rlc3RpbmF0aW9uKTsKKwkJCSAgICAgICAgICAgICAg
ICAgc3RjYi0+c2N0cF9lcCwgc3RjYiwgTlVMTCk7CiAKIAkJfQogCQkvKiB1cGRhdGUgUlRPICov
CiAJCVNDVFBfU1RBVF9JTkNSX0NPVU5URVIzMihzY3Rwc19hY3RpdmVlc3RhYik7CiAJCVNDVFBf
U1RBVF9JTkNSX0dBVUdFMzIoc2N0cHNfY3VycmVzdGFiKTsKIAkJaWYgKGFzb2MtPm92ZXJhbGxf
ZXJyb3JfY291bnQgPT0gMCkgewotCQkJbmV0LT5SVE8gPSBzY3RwX2NhbGN1bGF0ZV9ydG8oc3Rj
YiwgYXNvYywgbmV0LAotCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFzb2MtPnRp
bWVfZW50ZXJlZCwKLQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNDVFBfUlRUX0ZS
T01fTk9OX0RBVEEpOworCQkJc2N0cF9jYWxjdWxhdGVfcnRvKHN0Y2IsIGFzb2MsIG5ldCwgJmFz
b2MtPnRpbWVfZW50ZXJlZCwKKwkJCSAgICAgICAgICAgICAgICAgICBTQ1RQX1JUVF9GUk9NX05P
Tl9EQVRBKTsKIAkJfQogCQkodm9pZClTQ1RQX0dFVFRJTUVfVElNRVZBTCgmYXNvYy0+dGltZV9l
bnRlcmVkKTsKIAkJc2N0cF91bHBfbm90aWZ5KFNDVFBfTk9USUZZX0FTU09DX1VQLCBzdGNiLCAw
LCBOVUxMLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwogCQlpZiAoKHN0Y2ItPnNjdHBfZXAtPnNjdHBf
ZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkgICAgKHN0Y2ItPnNjdHBfZXAt
PnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSkgewotI2lmIGRlZmluZWQo
X19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQo
X19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJc3RydWN0IHNvY2tldCAq
c287CiAKICNlbmRpZgogCQkJc3RjYi0+c2N0cF9lcC0+c2N0cF9mbGFncyB8PSBTQ1RQX1BDQl9G
TEFHU19DT05ORUNURUQ7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9T
T19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAJCQlzbyA9IFNDVFBfSU5QX1NPKHN0Y2ItPnNjdHBfZXApOwogCQkJYXRvbWlj
X2FkZF9pbnQoJnN0Y2ItPmFzb2MucmVmY250LCAxKTsKIAkJCVNDVFBfVENCX1VOTE9DSyhzdGNi
KTsKQEAgLTMxOTIsNyArMzE5Niw3IEBAIHNjdHBfaGFuZGxlX2Nvb2tpZV9hY2soc3RydWN0IHNj
dHBfY29va2llX2Fja19jaHVuayAqY3AgU0NUUF9VTlVTRUQsCiAJCQlpZiAoKHN0Y2ItPmFzb2Mu
c3RhdGUgJiBTQ1RQX1NUQVRFX0NMT1NFRF9TT0NLRVQpID09IDApIHsKIAkJCQlzb2lzY29ubmVj
dGVkKHN0Y2ItPnNjdHBfc29ja2V0KTsKIAkJCX0KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwg
ZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCVNDVFBfU09DS0VUX1VOTE9DSyhzbywgMSk7CiAj
ZW5kaWYKIAkJfQpAQCAtMzIzOSwxMSArMzI0MywxMyBAQCBzY3RwX2hhbmRsZV9jb29raWVfYWNr
KHN0cnVjdCBzY3RwX2Nvb2tpZV9hY2tfY2h1bmsgKmNwIFNDVFBfVU5VU0VELAogY2xvc2VkX3Nv
Y2tldDoKIAkvKiBUb3NzIHRoZSBjb29raWUgaWYgSSBjYW4gKi8KIAlzY3RwX3Rvc3Nfb2xkX2Nv
b2tpZXMoc3RjYiwgYXNvYyk7Ci0JaWYgKCFUQUlMUV9FTVBUWSgmYXNvYy0+c2VudF9xdWV1ZSkp
IHsKLQkJLyogUmVzdGFydCB0aGUgdGltZXIgaWYgd2UgaGF2ZSBwZW5kaW5nIGRhdGEgKi8KLQkJ
c3RydWN0IHNjdHBfdG1pdF9jaHVuayAqY2hrOwotCi0JCWNoayA9IFRBSUxRX0ZJUlNUKCZhc29j
LT5zZW50X3F1ZXVlKTsKKwkvKiBSZXN0YXJ0IHRoZSB0aW1lciBpZiB3ZSBoYXZlIHBlbmRpbmcg
ZGF0YSAqLworCVRBSUxRX0ZPUkVBQ0goY2hrLCAmYXNvYy0+c2VudF9xdWV1ZSwgc2N0cF9uZXh0
KSB7CisJCWlmIChjaGstPndob1RvICE9IE5VTEwpIHsKKwkJCWJyZWFrOworCQl9CisJfQorCWlm
IChjaGsgIT0gTlVMTCkgewogCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9TRU5E
LCBzdGNiLT5zY3RwX2VwLCBzdGNiLCBjaGstPndob1RvKTsKIAl9CiB9CkBAIC0zNDExLDggKzM0
MTcsNyBAQCBzdGF0aWMgdm9pZAogc2N0cF9oYW5kbGVfc2h1dGRvd25fY29tcGxldGUoc3RydWN0
IHNjdHBfc2h1dGRvd25fY29tcGxldGVfY2h1bmsgKmNwIFNDVFBfVU5VU0VELAogICAgIHN0cnVj
dCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfbmV0cyAqbmV0KQogewotCXN0cnVjdCBzY3Rw
X2Fzc29jaWF0aW9uICphc29jOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFND
VFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogCXN0cnVjdCBzb2NrZXQgKnNvOwogI2VuZGlmCiAKQEAgLTM0MjEsOSAr
MzQyNiw4IEBAIHNjdHBfaGFuZGxlX3NodXRkb3duX2NvbXBsZXRlKHN0cnVjdCBzY3RwX3NodXRk
b3duX2NvbXBsZXRlX2NodW5rICpjcCBTQ1RQX1VOVVNFCiAJaWYgKHN0Y2IgPT0gTlVMTCkKIAkJ
cmV0dXJuOwogCi0JYXNvYyA9ICZzdGNiLT5hc29jOwogCS8qIHByb2Nlc3MgYWNjb3JkaW5nIHRv
IGFzc29jaWF0aW9uIHN0YXRlICovCi0JaWYgKFNDVFBfR0VUX1NUQVRFKGFzb2MpICE9IFNDVFBf
U1RBVEVfU0hVVERPV05fQUNLX1NFTlQpIHsKKwlpZiAoU0NUUF9HRVRfU1RBVEUoc3RjYikgIT0g
U0NUUF9TVEFURV9TSFVURE9XTl9BQ0tfU0VOVCkgewogCQkvKiB1bmV4cGVjdGVkIFNIVVRET1dO
LUNPTVBMRVRFLi4uIHNvIGlnbm9yZS4uLiAqLwogCQlTQ1RQREJHKFNDVFBfREVCVUdfSU5QVVQy
LAogCQkJInNjdHBfaGFuZGxlX3NodXRkb3duX2NvbXBsZXRlOiBub3QgaW4gU0NUUF9TVEFURV9T
SFVURE9XTl9BQ0tfU0VOVCAtLS0gaWdub3JlXG4iKTsKQEAgLTM0MzUsOCArMzQzOSw4IEBAIHNj
dHBfaGFuZGxlX3NodXRkb3duX2NvbXBsZXRlKHN0cnVjdCBzY3RwX3NodXRkb3duX2NvbXBsZXRl
X2NodW5rICpjcCBTQ1RQX1VOVVNFCiAJCXNjdHBfdWxwX25vdGlmeShTQ1RQX05PVElGWV9BU1NP
Q19ET1dOLCBzdGNiLCAwLCBOVUxMLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwogCX0KICNpZmRlZiBJ
TlZBUklBTlRTCi0JaWYgKCFUQUlMUV9FTVBUWSgmYXNvYy0+c2VuZF9xdWV1ZSkgfHwKLQkgICAg
IVRBSUxRX0VNUFRZKCZhc29jLT5zZW50X3F1ZXVlKSB8fAorCWlmICghVEFJTFFfRU1QVFkoJnN0
Y2ItPmFzb2Muc2VuZF9xdWV1ZSkgfHwKKwkgICAgIVRBSUxRX0VNUFRZKCZzdGNiLT5hc29jLnNl
bnRfcXVldWUpIHx8CiAJICAgIHNjdHBfaXNfdGhlcmVfdW5zZW50X2RhdGEoc3RjYiwgU0NUUF9T
T19OT1RfTE9DS0VEKSkgewogCQlwYW5pYygiUXVldWVzIGFyZSBub3QgZW1wdHkgd2hlbiBoYW5k
bGluZyBTSFVURE9XTi1DT01QTEVURSIpOwogCX0KQEAgLTM0NDgsNyArMzQ1Miw3IEBAIHNjdHBf
aGFuZGxlX3NodXRkb3duX2NvbXBsZXRlKHN0cnVjdCBzY3RwX3NodXRkb3duX2NvbXBsZXRlX2No
dW5rICpjcCBTQ1RQX1VOVVNFCiAJLyogZnJlZSB0aGUgVENCICovCiAJU0NUUERCRyhTQ1RQX0RF
QlVHX0lOUFVUMiwKIAkJInNjdHBfaGFuZGxlX3NodXRkb3duX2NvbXBsZXRlOiBjYWxscyBmcmVl
LWFzb2NcbiIpOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9D
S19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogCXNvID0gU0NUUF9JTlBfU08oc3RjYi0+c2N0cF9lcCk7CiAJYXRvbWljX2FkZF9pbnQo
JnN0Y2ItPmFzb2MucmVmY250LCAxKTsKIAlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CkBAIC0zNDU4
LDcgKzM0NjIsNyBAQCBzY3RwX2hhbmRsZV9zaHV0ZG93bl9jb21wbGV0ZShzdHJ1Y3Qgc2N0cF9z
aHV0ZG93bl9jb21wbGV0ZV9jaHVuayAqY3AgU0NUUF9VTlVTRQogI2VuZGlmCiAJKHZvaWQpc2N0
cF9mcmVlX2Fzc29jKHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIFNDVFBfTk9STUFMX1BST0MsCiAJICAg
ICAgICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX0lOUFVUICsgU0NUUF9MT0NfMjUpOwot
I2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQor
I2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCVNDVFBf
U09DS0VUX1VOTE9DSyhzbywgMSk7CiAjZW5kaWYKIAlyZXR1cm47CkBAIC0zNDcwLDcgKzM0NzQs
OCBAQCBwcm9jZXNzX2NodW5rX2Ryb3Aoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0
cF9jaHVua19kZXNjICpkZXNjLAogewogCXN3aXRjaCAoZGVzYy0+Y2h1bmtfdHlwZSkgewogCWNh
c2UgU0NUUF9EQVRBOgotCQkvKiBmaW5kIHRoZSB0c24gdG8gcmVzZW5kIChwb3NzaWJseSAqLwor
CWNhc2UgU0NUUF9JREFUQToKKwkJLyogZmluZCB0aGUgdHNuIHRvIHJlc2VuZCAocG9zc2libHkp
ICovCiAJewogCQl1aW50MzJfdCB0c247CiAJCXN0cnVjdCBzY3RwX3RtaXRfY2h1bmsgKnRwMTsK
QEAgLTM1MDQsOCArMzUwOSw2IEBAIHByb2Nlc3NfY2h1bmtfZHJvcChzdHJ1Y3Qgc2N0cF90Y2Ig
KnN0Y2IsIHN0cnVjdCBzY3RwX2NodW5rX2Rlc2MgKmRlc2MsCiAJCQlTQ1RQX1NUQVRfSU5DUihz
Y3Rwc19wZHJwdHNubmYpOwogCQl9CiAJCWlmICgodHAxKSAmJiAodHAxLT5zZW50IDwgU0NUUF9E
QVRBR1JBTV9BQ0tFRCkpIHsKLQkJCXVpbnQ4X3QgKmRkcDsKLQogCQkJaWYgKCgoZmxnICYgU0NU
UF9CQURDUkMpID09IDApICYmCiAJCQkgICAgKChmbGcgJiBTQ1RQX0ZST01fTUlERExFX0JPWCkg
PT0gMCkpIHsKIAkJCQlyZXR1cm4gKDApOwpAQCAtMzUyMCwyMCArMzUyMywxOCBAQCBwcm9jZXNz
X2NodW5rX2Ryb3Aoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9jaHVua19kZXNj
ICpkZXNjLAogCQkJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3BkcnBkaXpydyk7CiAJCQkJcmV0dXJu
ICgwKTsKIAkJCX0KLQkJCWRkcCA9ICh1aW50OF90ICopIChtdG9kKHRwMS0+ZGF0YSwgY2FkZHJf
dCkgKwotCQkJCQkgICBzaXplb2Yoc3RydWN0IHNjdHBfZGF0YV9jaHVuaykpOwotCQkJewotCQkJ
CXVuc2lnbmVkIGludCBpaWk7Ci0KLQkJCQlmb3IgKGlpaSA9IDA7IGlpaSA8IHNpemVvZihkZXNj
LT5kYXRhX2J5dGVzKTsKLQkJCQkgICAgIGlpaSsrKSB7Ci0JCQkJCWlmIChkZHBbaWlpXSAhPSBk
ZXNjLT5kYXRhX2J5dGVzW2lpaV0pIHsKLQkJCQkJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3BkcnBi
YWRkKTsKLQkJCQkJCXJldHVybiAoLTEpOwotCQkJCQl9Ci0JCQkJfQorCQkJaWYgKCh1aW50MzJf
dClTQ1RQX0JVRl9MRU4odHAxLT5kYXRhKSA8CisJCQkgICAgU0NUUF9EQVRBX0NIVU5LX09WRVJI
RUFEKHN0Y2IpICsgU0NUUF9OVU1fREJfVE9fVkVSSUZZKSB7CisJCQkJLyogUGF5bG9hZCBub3Qg
bWF0Y2hpbmcuICovCisJCQkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfcGRycGJhZGQpOworCQkJCXJl
dHVybiAoLTEpOworCQkJfQorCQkJaWYgKG1lbWNtcChtdG9kKHRwMS0+ZGF0YSwgY2FkZHJfdCkg
KyBTQ1RQX0RBVEFfQ0hVTktfT1ZFUkhFQUQoc3RjYiksCisJCQkgICAgICAgICAgIGRlc2MtPmRh
dGFfYnl0ZXMsIFNDVFBfTlVNX0RCX1RPX1ZFUklGWSkgIT0gMCkgeworCQkJCS8qIFBheWxvYWQg
bm90IG1hdGNoaW5nLiAqLworCQkJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3BkcnBiYWRkKTsKKwkJ
CQlyZXR1cm4gKC0xKTsKIAkJCX0KLQogCQkJaWYgKHRwMS0+ZG9fcnR0KSB7CiAJCQkJLyoKIAkJ
CQkgKiB0aGlzIGd1eSBoYWQgYSBSVE8gY2FsY3VsYXRpb24KQEAgLTM4MzYsNyArMzgzNyw3IEBA
IHNjdHBfY2xlYW5fdXBfc3RyZWFtX3Jlc2V0KHN0cnVjdCBzY3RwX3RjYiAqc3RjYikKIAl9CiAJ
YXNvYy0+c3RyX3Jlc2V0ID0gTlVMTDsKIAlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBF
X1NUUlJFU0VULCBzdGNiLT5zY3RwX2VwLCBzdGNiLAotCSAgICAgICAgICAgICAgICBjaGstPndo
b1RvLCBTQ1RQX0ZST01fU0NUUF9JTlBVVCArIFNDVFBfTE9DXzI4KTsKKwkgICAgICAgICAgICAg
ICAgTlVMTCwgU0NUUF9GUk9NX1NDVFBfSU5QVVQgKyBTQ1RQX0xPQ18yOCk7CiAJVEFJTFFfUkVN
T1ZFKCZhc29jLT5jb250cm9sX3NlbmRfcXVldWUsIGNoaywgc2N0cF9uZXh0KTsKIAlhc29jLT5j
dHJsX3F1ZXVlX2NudC0tOwogCWlmIChjaGstPmRhdGEpIHsKQEAgLTQzNjgsMTEgKzQzNjksOSBA
QCBzY3RwX2hhbmRsZV9zdHJfcmVzZXRfYWRkX291dF9zdHJtKHN0cnVjdCBzY3RwX3RjYiAqc3Rj
Yiwgc3RydWN0IHNjdHBfdG1pdF9jaHVuawogCX0KIH0KIAotI2lmICFkZWZpbmVkKF9fUGFuZGFf
XykKICNpZmRlZiBfX0dOVUNfXwogX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSkKICNlbmRpZgot
I2VuZGlmCiBzdGF0aWMgaW50CiBzY3RwX2hhbmRsZV9zdHJlYW1fcmVzZXQoc3RydWN0IHNjdHBf
dGNiICpzdGNiLCBzdHJ1Y3QgbWJ1ZiAqbSwgaW50IG9mZnNldCwKIAkJCSBzdHJ1Y3Qgc2N0cF9j
aHVua2hkciAqY2hfcmVxKQpAQCAtNDU1NCwxMDQgKzQ1NTMsMTIwIEBAIHN0YXRpYyB2b2lkCiBz
Y3RwX2hhbmRsZV9wYWNrZXRfZHJvcHBlZChzdHJ1Y3Qgc2N0cF9wa3Rkcm9wX2NodW5rICpjcCwK
ICAgICBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX25ldHMgKm5ldCwgdWludDMy
X3QgbGltaXQpCiB7CisJc3RydWN0IHNjdHBfY2h1bmtfZGVzYyBkZXNjOworCXN0cnVjdCBzY3Rw
X2NodW5raGRyICpjaGtfaGRyOworCXN0cnVjdCBzY3RwX2RhdGFfY2h1bmsgKmRhdGFfY2h1bms7
CisJc3RydWN0IHNjdHBfaWRhdGFfY2h1bmsgKmlkYXRhX2NodW5rOwogCXVpbnQzMl90IGJvdHRs
ZV9idywgb25fcXVldWU7CisJdWludDMyX3Qgb2Zmc2V0LCBjaGtfbGVuOwogCXVpbnQxNl90IHRy
dW5jX2xlbjsKLQl1bnNpZ25lZCBpbnQgY2hsZW47Ci0JdW5zaWduZWQgaW50IGF0OwotCXN0cnVj
dCBzY3RwX2NodW5rX2Rlc2MgZGVzYzsKLQlzdHJ1Y3Qgc2N0cF9jaHVua2hkciAqY2g7Ci0KLQlj
aGxlbiA9IG50b2hzKGNwLT5jaC5jaHVua19sZW5ndGgpOwotCWNobGVuIC09IHNpemVvZihzdHJ1
Y3Qgc2N0cF9wa3Rkcm9wX2NodW5rKTsKLQkvKiBYWFggcG9zc2libGUgY2hsZW4gdW5kZXJmbG93
ICovCi0JaWYgKGNobGVuID09IDApIHsKLQkJY2ggPSBOVUxMOwotCQlpZiAoY3AtPmNoLmNodW5r
X2ZsYWdzICYgU0NUUF9GUk9NX01JRERMRV9CT1gpCi0JCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19w
ZHJwYndycHQpOworCXVpbnQxNl90IHBrdGRycF9sZW47CisJdWludDhfdCBwa3RkcnBfZmxhZ3M7
CisKKwlLQVNTRVJUKHNpemVvZihzdHJ1Y3Qgc2N0cF9wa3Rkcm9wX2NodW5rKSA8PSBsaW1pdCwK
KwkgICAgICAgICgiUEtURFJPUCBjaHVuayB0b28gc21hbGwiKSk7CisJcGt0ZHJwX2ZsYWdzID0g
Y3AtPmNoLmNodW5rX2ZsYWdzOworCXBrdGRycF9sZW4gPSBudG9ocyhjcC0+Y2guY2h1bmtfbGVu
Z3RoKTsKKwlLQVNTRVJUKGxpbWl0IDw9IHBrdGRycF9sZW4sICgiSW5jb25zaXN0ZW50IGxpbWl0
IikpOworCWlmIChwa3RkcnBfZmxhZ3MgJiBTQ1RQX1BBQ0tFVF9UUlVOQ0FURUQpIHsKKwkJdHJ1
bmNfbGVuID0gbnRvaHMoY3AtPnRydW5jX2xlbik7CisJCWlmICh0cnVuY19sZW4gPD0gcGt0ZHJw
X2xlbiAtIHNpemVvZihzdHJ1Y3Qgc2N0cF9wa3Rkcm9wX2NodW5rKSkgeworCQkJLyogVGhlIHBl
ZXIgcGxheXMgZ2FtZXMgd2l0aCB1cy4gKi8KKwkJCXJldHVybjsKKwkJfQogCX0gZWxzZSB7Ci0J
CWNoID0gKHN0cnVjdCBzY3RwX2NodW5raGRyICopKGNwLT5kYXRhICsgc2l6ZW9mKHN0cnVjdCBz
Y3RwaGRyKSk7Ci0JCWNobGVuIC09IHNpemVvZihzdHJ1Y3Qgc2N0cGhkcik7Ci0JCS8qIFhYWCBw
b3NzaWJsZSBjaGxlbiB1bmRlcmZsb3cgKi8KLQkJbWVtc2V0KCZkZXNjLCAwLCBzaXplb2YoZGVz
YykpOworCQl0cnVuY19sZW4gPSAwOwogCX0KLQl0cnVuY19sZW4gPSAodWludDE2X3QpIG50b2hz
KGNwLT50cnVuY19sZW4pOwotCWlmICh0cnVuY19sZW4gPiBsaW1pdCkgewotCQl0cnVuY19sZW4g
PSBsaW1pdDsKKwlsaW1pdCAtPSBzaXplb2Yoc3RydWN0IHNjdHBfcGt0ZHJvcF9jaHVuayk7CisJ
b2Zmc2V0ID0gMDsKKwlpZiAob2Zmc2V0ID09IGxpbWl0KSB7CisJCWlmIChwa3RkcnBfZmxhZ3Mg
JiBTQ1RQX0ZST01fTUlERExFX0JPWCkgeworCQkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfcGRycGJ3
cnB0KTsKKwkJfQorCX0gZWxzZSBpZiAob2Zmc2V0ICsgc2l6ZW9mKHN0cnVjdCBzY3RwaGRyKSA+
IGxpbWl0KSB7CisJCS8qIE9ubHkgYSBwYXJ0aWFsIFNDVFAgY29tbW9uIGhlYWRlci4gKi8KKwkJ
U0NUUF9TVEFUX0lOQ1Ioc2N0cHNfcGRycGNydXB0KTsKKwkJb2Zmc2V0ID0gbGltaXQ7CisJfSBl
bHNlIHsKKwkJLyogWFhYOiBDaGVjayBlbWJlZGRlZCBTQ1RQIGNvbW1vbiBoZWFkZXIuICovCisJ
CW9mZnNldCArPSBzaXplb2Yoc3RydWN0IHNjdHBoZHIpOwogCX0KLQotCS8qIG5vdyB0aGUgY2h1
bmtzIHRoZW1zZWx2ZXMgKi8KLQl3aGlsZSAoKGNoICE9IE5VTEwpICYmIChjaGxlbiA+PSBzaXpl
b2Yoc3RydWN0IHNjdHBfY2h1bmtoZHIpKSkgewotCQlkZXNjLmNodW5rX3R5cGUgPSBjaC0+Y2h1
bmtfdHlwZTsKLQkJLyogZ2V0IGFtb3VudCB3ZSBuZWVkIHRvIG1vdmUgKi8KLQkJYXQgPSBudG9o
cyhjaC0+Y2h1bmtfbGVuZ3RoKTsKLQkJaWYgKGF0IDwgc2l6ZW9mKHN0cnVjdCBzY3RwX2NodW5r
aGRyKSkgewotCQkJLyogY29ycnVwdCBjaHVuaywgbWF5YmUgYXQgdGhlIGVuZD8gKi8KKwkvKiBO
b3cgcGFyc2UgdGhyb3VnaCB0aGUgY2h1bmtzIHRoZW1zZWx2ZXMuICovCisJd2hpbGUgKG9mZnNl
dCA8IGxpbWl0KSB7CisJCWlmIChvZmZzZXQgKyBzaXplb2Yoc3RydWN0IHNjdHBfY2h1bmtoZHIp
ID4gbGltaXQpIHsKIAkJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3BkcnBjcnVwdCk7CiAJCQlicmVh
azsKIAkJfQotCQlpZiAodHJ1bmNfbGVuID09IDApIHsKLQkJCS8qIHdlIGFyZSBzdXBwb3NlZCB0
byBoYXZlIGFsbCBvZiBpdCAqLwotCQkJaWYgKGF0ID4gY2hsZW4pIHsKLQkJCQkvKiBjb3JydXB0
IHNraXAgaXQgKi8KLQkJCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19wZHJwY3J1cHQpOworCQljaGtf
aGRyID0gKHN0cnVjdCBzY3RwX2NodW5raGRyICopKGNwLT5kYXRhICsgb2Zmc2V0KTsKKwkJZGVz
Yy5jaHVua190eXBlID0gY2hrX2hkci0+Y2h1bmtfdHlwZTsKKwkJLyogZ2V0IGFtb3VudCB3ZSBu
ZWVkIHRvIG1vdmUgKi8KKwkJY2hrX2xlbiA9ICh1aW50MzJfdCludG9ocyhjaGtfaGRyLT5jaHVu
a19sZW5ndGgpOworCQlpZiAoY2hrX2xlbiA8IHNpemVvZihzdHJ1Y3Qgc2N0cF9jaHVua2hkcikp
IHsKKwkJCS8qIFNvbWVvbmUgaXMgbHlpbmcuLi4gKi8KKwkJCWJyZWFrOworCQl9CisJCWlmIChk
ZXNjLmNodW5rX3R5cGUgPT0gU0NUUF9EQVRBKSB7CisJCQlpZiAoc3RjYi0+YXNvYy5pZGF0YV9z
dXBwb3J0ZWQpIHsKKwkJCQkvKiBTb21lIGlzIHBsYXlpbmcgZ2FtZXMgd2l0aCB1cy4gKi8KIAkJ
CQlicmVhazsKIAkJCX0KLQkJfSBlbHNlIHsKLQkJCS8qIGlzIHRoZXJlIGVub3VnaCBvZiBpdCBs
ZWZ0ID8gKi8KLQkJCWlmIChkZXNjLmNodW5rX3R5cGUgPT0gU0NUUF9EQVRBKSB7Ci0JCQkJaWYg
KGNobGVuIDwgKHNpemVvZihzdHJ1Y3Qgc2N0cF9kYXRhX2NodW5rKSArCi0JCQkJICAgIHNpemVv
ZihkZXNjLmRhdGFfYnl0ZXMpKSkgewotCQkJCQlicmVhazsKLQkJCQl9Ci0JCQl9IGVsc2Ugewot
CQkJCWlmIChjaGxlbiA8IHNpemVvZihzdHJ1Y3Qgc2N0cF9jaHVua2hkcikpIHsKLQkJCQkJYnJl
YWs7Ci0JCQkJfQorCQkJaWYgKGNoa19sZW4gPD0gc2l6ZW9mKHN0cnVjdCBzY3RwX2RhdGFfY2h1
bmspKSB7CisJCQkJLyogU29tZSBpcyBwbGF5aW5nIGdhbWVzIHdpdGggdXMuICovCisJCQkJYnJl
YWs7CiAJCQl9Ci0JCX0KLQkJaWYgKGRlc2MuY2h1bmtfdHlwZSA9PSBTQ1RQX0RBVEEpIHsKLQkJ
CS8qIGNhbiB3ZSBnZXQgb3V0IHRoZSB0c24/ICovCi0JCQlpZiAoKGNwLT5jaC5jaHVua19mbGFn
cyAmIFNDVFBfRlJPTV9NSURETEVfQk9YKSkKKwkJCWlmIChjaGtfbGVuIDwgc2l6ZW9mKHN0cnVj
dCBzY3RwX2RhdGFfY2h1bmspICsgU0NUUF9OVU1fREJfVE9fVkVSSUZZKSB7CisJCQkJLyogTm90
IGVub3VnaCBkYXRhIGJ5dGVzIGF2YWlsYWJsZSBpbiB0aGUgY2h1bmsuICovCisJCQkJU0NUUF9T
VEFUX0lOQ1Ioc2N0cHNfcGRycG5lZGF0KTsKKwkJCQlnb3RvIG5leHRfY2h1bms7CisJCQl9CisJ
CQlpZiAob2Zmc2V0ICsgc2l6ZW9mKHN0cnVjdCBzY3RwX2RhdGFfY2h1bmspICsgU0NUUF9OVU1f
REJfVE9fVkVSSUZZID4gbGltaXQpIHsKKwkJCQkvKiBOb3QgZW5vdWdoIGRhdGEgaW4gYnVmZmVy
LiAqLworCQkJCWJyZWFrOworCQkJfQorCQkJZGF0YV9jaHVuayA9IChzdHJ1Y3Qgc2N0cF9kYXRh
X2NodW5rICopKGNwLT5kYXRhICsgb2Zmc2V0KTsKKwkJCW1lbWNweShkZXNjLmRhdGFfYnl0ZXMs
IGRhdGFfY2h1bmsgKyAxLCBTQ1RQX05VTV9EQl9UT19WRVJJRlkpOworCQkJZGVzYy50c25faWZh
bnkgPSBkYXRhX2NodW5rLT5kcC50c247CisJCQlpZiAocGt0ZHJwX2ZsYWdzICYgU0NUUF9GUk9N
X01JRERMRV9CT1gpIHsKIAkJCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19wZHJwbWJkYSk7Ci0KLQkJ
CWlmIChjaGxlbiA+PSAoc2l6ZW9mKHN0cnVjdCBzY3RwX2RhdGFfY2h1bmspICsgc2l6ZW9mKHVp
bnQzMl90KSkpIHsKLQkJCQkvKiB5ZXAgKi8KLQkJCQlzdHJ1Y3Qgc2N0cF9kYXRhX2NodW5rICpk
Y3A7Ci0JCQkJdWludDhfdCAqZGRwOwotCQkJCXVuc2lnbmVkIGludCBpaWk7Ci0KLQkJCQlkY3Ag
PSAoc3RydWN0IHNjdHBfZGF0YV9jaHVuayAqKWNoOwotCQkJCWRkcCA9ICh1aW50OF90ICopIChk
Y3AgKyAxKTsKLQkJCQlmb3IgKGlpaSA9IDA7IGlpaSA8IHNpemVvZihkZXNjLmRhdGFfYnl0ZXMp
OyBpaWkrKykgewotCQkJCQlkZXNjLmRhdGFfYnl0ZXNbaWlpXSA9IGRkcFtpaWldOwotCQkJCX0K
LQkJCQlkZXNjLnRzbl9pZmFueSA9IGRjcC0+ZHAudHNuOwotCQkJfSBlbHNlIHsKLQkJCQkvKiBu
b3BlIHdlIGFyZSBkb25lLiAqLworCQkJfQorCQl9IGVsc2UgaWYgKGRlc2MuY2h1bmtfdHlwZSA9
PSBTQ1RQX0lEQVRBKSB7CisJCQlpZiAoIXN0Y2ItPmFzb2MuaWRhdGFfc3VwcG9ydGVkKSB7CisJ
CQkJLyogU29tZSBpcyBwbGF5aW5nIGdhbWVzIHdpdGggdXMuICovCisJCQkJYnJlYWs7CisJCQl9
CisJCQlpZiAoY2hrX2xlbiA8PSBzaXplb2Yoc3RydWN0IHNjdHBfaWRhdGFfY2h1bmspKSB7CisJ
CQkJLyogU29tZSBpcyBwbGF5aW5nIGdhbWVzIHdpdGggdXMuICovCisJCQkJYnJlYWs7CisJCQl9
CisJCQlpZiAoY2hrX2xlbiA8IHNpemVvZihzdHJ1Y3Qgc2N0cF9pZGF0YV9jaHVuaykgKyBTQ1RQ
X05VTV9EQl9UT19WRVJJRlkpIHsKKwkJCQkvKiBOb3QgZW5vdWdoIGRhdGEgYnl0ZXMgYXZhaWxh
YmxlIGluIHRoZSBjaHVuay4gKi8KIAkJCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19wZHJwbmVkYXQp
OworCQkJCWdvdG8gbmV4dF9jaHVuazsKKwkJCX0KKwkJCWlmIChvZmZzZXQgKyBzaXplb2Yoc3Ry
dWN0IHNjdHBfaWRhdGFfY2h1bmspICsgU0NUUF9OVU1fREJfVE9fVkVSSUZZID4gbGltaXQpIHsK
KwkJCQkvKiBOb3QgZW5vdWdoIGRhdGEgaW4gYnVmZmVyLiAqLwogCQkJCWJyZWFrOwogCQkJfQor
CQkJaWRhdGFfY2h1bmsgPSAoc3RydWN0IHNjdHBfaWRhdGFfY2h1bmsgKikoY3AtPmRhdGEgKyBv
ZmZzZXQpOworCQkJbWVtY3B5KGRlc2MuZGF0YV9ieXRlcywgaWRhdGFfY2h1bmsgKyAxLCBTQ1RQ
X05VTV9EQl9UT19WRVJJRlkpOworCQkJZGVzYy50c25faWZhbnkgPSBpZGF0YV9jaHVuay0+ZHAu
dHNuOworCQkJaWYgKHBrdGRycF9mbGFncyAmIFNDVFBfRlJPTV9NSURETEVfQk9YKSB7CisJCQkJ
U0NUUF9TVEFUX0lOQ1Ioc2N0cHNfcGRycG1iZGEpOworCQkJfQogCQl9IGVsc2UgewotCQkJaWYg
KChjcC0+Y2guY2h1bmtfZmxhZ3MgJiBTQ1RQX0ZST01fTUlERExFX0JPWCkpCisJCQlpZiAocGt0
ZHJwX2ZsYWdzICYgU0NUUF9GUk9NX01JRERMRV9CT1gpIHsKIAkJCQlTQ1RQX1NUQVRfSU5DUihz
Y3Rwc19wZHJwbWJjdCk7CisJCQl9CiAJCX0KLQotCQlpZiAocHJvY2Vzc19jaHVua19kcm9wKHN0
Y2IsICZkZXNjLCBuZXQsIGNwLT5jaC5jaHVua19mbGFncykpIHsKKwkJaWYgKHByb2Nlc3NfY2h1
bmtfZHJvcChzdGNiLCAmZGVzYywgbmV0LCBwa3RkcnBfZmxhZ3MpKSB7CiAJCQlTQ1RQX1NUQVRf
SU5DUihzY3Rwc19wZHJwcGRicmspOwogCQkJYnJlYWs7CiAJCX0KLQkJaWYgKFNDVFBfU0laRTMy
KGF0KSA+IGNobGVuKSB7Ci0JCQlicmVhazsKLQkJfQotCQljaGxlbiAtPSBTQ1RQX1NJWkUzMihh
dCk7Ci0JCWlmIChjaGxlbiA8IHNpemVvZihzdHJ1Y3Qgc2N0cF9jaHVua2hkcikpIHsKLQkJCS8q
IGRvbmUsIG5vbmUgbGVmdCAqLwotCQkJYnJlYWs7Ci0JCX0KLQkJY2ggPSAoc3RydWN0IHNjdHBf
Y2h1bmtoZHIgKikoKGNhZGRyX3QpY2ggKyBTQ1RQX1NJWkUzMihhdCkpOworbmV4dF9jaHVuazoK
KwkJb2Zmc2V0ICs9IFNDVFBfU0laRTMyKGNoa19sZW4pOwogCX0KIAkvKiBOb3cgdXBkYXRlIGFu
eSByd25kIC0tLSBwb3NzaWJseSAqLwotCWlmICgoY3AtPmNoLmNodW5rX2ZsYWdzICYgU0NUUF9G
Uk9NX01JRERMRV9CT1gpID09IDApIHsKKwlpZiAoKHBrdGRycF9mbGFncyAmIFNDVFBfRlJPTV9N
SURETEVfQk9YKSA9PSAwKSB7CiAJCS8qIEZyb20gYSBwZWVyLCB3ZSBnZXQgYSByd25kIHJlcG9y
dCAqLwogCQl1aW50MzJfdCBhX3J3bmQ7CiAKQEAgLTQ2ODcsNyArNDcwMiw3IEBAIHNjdHBfaGFu
ZGxlX3BhY2tldF9kcm9wcGVkKHN0cnVjdCBzY3RwX3BrdGRyb3BfY2h1bmsgKmNwLAogCX0KIAog
CS8qIG5vdyBtaWRkbGUgYm94ZXMgaW4gc2F0IG5ldHdvcmtzIGdldCBhIGN3bmQgYnVtcCAqLwot
CWlmICgoY3AtPmNoLmNodW5rX2ZsYWdzICYgU0NUUF9GUk9NX01JRERMRV9CT1gpICYmCisJaWYg
KChwa3RkcnBfZmxhZ3MgJiBTQ1RQX0ZST01fTUlERExFX0JPWCkgJiYKIAkgICAgKHN0Y2ItPmFz
b2Muc2F0X3QzX2xvc3NfcmVjb3ZlcnkgPT0gMCkgJiYKIAkgICAgKHN0Y2ItPmFzb2Muc2F0X25l
dHdvcmspKSB7CiAJCS8qCkBAIC00NzA5LDE3ICs0NzI0LDE1IEBAIHNjdHBfaGFuZGxlX3BhY2tl
dF9kcm9wcGVkKHN0cnVjdCBzY3RwX3BrdGRyb3BfY2h1bmsgKmNwLAogICogY29va2llLWVjaG8g
cHJvY2Vzc2luZyAtIHJldHVybiBOVUxMIHRvIGRpc2NhcmQgdGhlIHBhY2tldCAoaWUuIG5vIGFz
b2MsCiAgKiBiYWQgcGFja2V0LC4uLikgb3RoZXJ3aXNlIHJldHVybiB0aGUgdGNiIGZvciB0aGlz
IHBhY2tldAogICovCi0jaWYgIWRlZmluZWQoX19QYW5kYV9fKQogI2lmZGVmIF9fR05VQ19fCiBf
X2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKQogI2VuZGlmCi0jZW5kaWYKIHN0YXRpYyBzdHJ1Y3Qg
c2N0cF90Y2IgKgogc2N0cF9wcm9jZXNzX2NvbnRyb2woc3RydWN0IG1idWYgKm0sIGludCBpcGhs
ZW4sIGludCAqb2Zmc2V0LCBpbnQgbGVuZ3RoLAogICAgIHN0cnVjdCBzb2NrYWRkciAqc3JjLCBz
dHJ1Y3Qgc29ja2FkZHIgKmRzdCwKICAgICBzdHJ1Y3Qgc2N0cGhkciAqc2gsIHN0cnVjdCBzY3Rw
X2NodW5raGRyICpjaCwgc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKICAgICBzdHJ1Y3Qgc2N0cF90
Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX25ldHMgKipuZXRwLCBpbnQgKmZ3ZF90c25fc2VlbiwKLSNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAgICAgdWludDhfdCBtZmxvd3R5cGUsIHVpbnQzMl90IG1mbG93
aWQsIHVpbnQxNl90IGZpYm51bSwKICNlbmRpZgogICAgIHVpbnQzMl90IHZyZl9pZCwgdWludDE2
X3QgcG9ydCkKQEAgLTQ3NDMsNyArNDc1Niw3IEBAIHNjdHBfcHJvY2Vzc19jb250cm9sKHN0cnVj
dCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgKm9mZnNldCwgaW50IGxlbmd0aCwKIAl1aW50MzJf
dCBhdXRoX29mZnNldCA9IDAsIGF1dGhfbGVuID0gMDsKIAlpbnQgYXV0aF9za2lwcGVkID0gMDsK
IAlpbnQgYXNjb25mX2NudCA9IDA7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQo
U0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiAJc3RydWN0IHNvY2tldCAqc287CiAjZW5kaWYKIApAQCAtNDg0Niwx
MSArNDg1OSwxMyBAQCBzY3RwX3Byb2Nlc3NfY29udHJvbChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlw
aGxlbiwgaW50ICpvZmZzZXQsIGludCBsZW5ndGgsCiAJCQlpZiAoYXV0aF9za2lwcGVkICYmIChz
dGNiICE9IE5VTEwpKSB7CiAJCQkJc3RydWN0IHNjdHBfYXV0aF9jaHVuayAqYXV0aDsKIAotCQkJ
CWF1dGggPSAoc3RydWN0IHNjdHBfYXV0aF9jaHVuayAqKQotCQkJCQlzY3RwX21fZ2V0cHRyKG0s
IGF1dGhfb2Zmc2V0LAotCQkJCQkJICAgICAgYXV0aF9sZW4sIGNodW5rX2J1Zik7Ci0JCQkJZ290
X2F1dGggPSAxOwotCQkJCWF1dGhfc2tpcHBlZCA9IDA7CisJCQkJaWYgKGF1dGhfbGVuIDw9IFND
VFBfQ0hVTktfQlVGRkVSX1NJWkUpIHsKKwkJCQkJYXV0aCA9IChzdHJ1Y3Qgc2N0cF9hdXRoX2No
dW5rICopc2N0cF9tX2dldHB0cihtLCBhdXRoX29mZnNldCwgYXV0aF9sZW4sIGNodW5rX2J1Zik7
CisJCQkJCWdvdF9hdXRoID0gMTsKKwkJCQkJYXV0aF9za2lwcGVkID0gMDsKKwkJCQl9IGVsc2Ug
eworCQkJCQlhdXRoID0gTlVMTDsKKwkJCQl9CiAJCQkJaWYgKChhdXRoID09IE5VTEwpIHx8IHNj
dHBfaGFuZGxlX2F1dGgoc3RjYiwgYXV0aCwgbSwKIAkJCQkJCQkJICAgICAgIGF1dGhfb2Zmc2V0
KSkgewogCQkJCQkvKiBhdXRoIEhNQUMgZmFpbGVkIHNvIGR1bXAgaXQgKi8KQEAgLTQ4NjMsMTIg
KzQ4NzgsMTIgQEAgc2N0cF9wcm9jZXNzX2NvbnRyb2woc3RydWN0IG1idWYgKm0sIGludCBpcGhs
ZW4sIGludCAqb2Zmc2V0LCBpbnQgbGVuZ3RoLAogCQkJfQogCQl9CiAJCWlmIChzdGNiID09IE5V
TEwpIHsKLQkJCXNucHJpbnRmKG1zZywgc2l6ZW9mKG1zZyksICJPT1RCLCAlczolZCBhdCAlcyIs
IF9fRklMRV9fLCBfX0xJTkVfXywgX19mdW5jX18pOworCQkJU0NUUF9TTlBSSU5URihtc2csIHNp
emVvZihtc2cpLCAiT09UQiwgJXM6JWQgYXQgJXMiLCBfX0ZJTEVfXywgX19MSU5FX18sIF9fZnVu
Y19fKTsKIAkJCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9CQVNFX1NZU0NUTChz
Y3RwX2RpYWdfaW5mb19jb2RlKSwKIAkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNn
KTsKIAkJCS8qIG5vIGFzc29jaWF0aW9uLCBzbyBpdCdzIG91dCBvZiB0aGUgYmx1ZS4uLiAqLwog
CQkJc2N0cF9oYW5kbGVfb290YihtLCBpcGhsZW4sICpvZmZzZXQsIHNyYywgZHN0LCBzaCwgaW5w
LCBvcF9lcnIsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJICAgICAgICAgICAgICAgICBtZmxv
d3R5cGUsIG1mbG93aWQsIGlucC0+ZmlibnVtLAogI2VuZGlmCiAJCQkJCSB2cmZfaWQsIHBvcnQp
OwpAQCAtNDkwNywxMiArNDkyMiwxMiBAQCBzY3RwX3Byb2Nlc3NfY29udHJvbChzdHJ1Y3QgbWJ1
ZiAqbSwgaW50IGlwaGxlbiwgaW50ICpvZmZzZXQsIGludCBsZW5ndGgsCiAJCQkJaWYgKHN0Y2Ig
IT0gTlVMTCkgewogCQkJCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CiAJCQkJfQotCQkJCXNucHJp
bnRmKG1zZywgc2l6ZW9mKG1zZyksICJPT1RCLCAlczolZCBhdCAlcyIsIF9fRklMRV9fLCBfX0xJ
TkVfXywgX19mdW5jX18pOworCQkJCVNDVFBfU05QUklOVEYobXNnLCBzaXplb2YobXNnKSwgIk9P
VEIsICVzOiVkIGF0ICVzIiwgX19GSUxFX18sIF9fTElORV9fLCBfX2Z1bmNfXyk7CiAJCQkJb3Bf
ZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfZGlhZ19pbmZv
X2NvZGUpLAogCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnKTsKIAkJCQlzY3Rw
X2hhbmRsZV9vb3RiKG0sIGlwaGxlbiwgKm9mZnNldCwgc3JjLCBkc3QsCiAJCQkJICAgICAgICAg
ICAgICAgICBzaCwgaW5wLCBvcF9lcnIsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCSAgICAg
ICAgICAgICAgICAgbWZsb3d0eXBlLCBtZmxvd2lkLCBmaWJudW0sCiAjZW5kaWYKIAkJCQkgICAg
ICAgICAgICAgICAgIHZyZl9pZCwgcG9ydCk7CkBAIC00OTQwLDcgKzQ5NTUsNyBAQCBzY3RwX3By
b2Nlc3NfY29udHJvbChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50ICpvZmZzZXQsIGlu
dCBsZW5ndGgsCiAJaWYgKCgoY2gtPmNodW5rX3R5cGUgPT0gU0NUUF9TRUxFQ1RJVkVfQUNLKSB8
fAogCSAgICAgKGNoLT5jaHVua190eXBlID09IFNDVFBfTlJfU0VMRUNUSVZFX0FDSykgfHwKIAkg
ICAgIChjaC0+Y2h1bmtfdHlwZSA9PSBTQ1RQX0hFQVJUQkVBVF9SRVFVRVNUKSkgJiYKLQkgICAg
KFNDVFBfR0VUX1NUQVRFKCZzdGNiLT5hc29jKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9FQ0hPRUQp
KSB7CisJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9FQ0hP
RUQpKSB7CiAJCS8qIGltcGxpZWQgY29va2llLWFjay4uIHdlIG11c3QgaGF2ZSBsb3N0IHRoZSBh
Y2sgKi8KIAkJc2N0cF9oYW5kbGVfY29va2llX2Fjaygoc3RydWN0IHNjdHBfY29va2llX2Fja19j
aHVuayAqKWNoLCBzdGNiLAogCQkJCSAgICAgICAqbmV0cCk7CkBAIC01MDI5LDcgKzUwNDQsNyBA
QCBzY3RwX3Byb2Nlc3NfY29udHJvbChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50ICpv
ZmZzZXQsIGludCBsZW5ndGgsCiAJCQkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQ
X0NBVVNFX09VVF9PRl9SRVNDLCAiIik7CiAJCQkJc2N0cF9hYm9ydF9hc3NvY2lhdGlvbihpbnAs
IHN0Y2IsIG0sIGlwaGxlbiwKIAkJCQkJCSAgICAgICBzcmMsIGRzdCwgc2gsIG9wX2VyciwKLSNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJICAgICAgICAgICAgICAgICAgICAgICBtZmxvd3R5cGUs
IG1mbG93aWQsCiAjZW5kaWYKIAkJCQkgICAgICAgICAgICAgICAgICAgICAgIHZyZl9pZCwgcG9y
dCk7CkBAIC01MDM5LDcgKzUwNTQsNyBAQCBzY3RwX3Byb2Nlc3NfY29udHJvbChzdHJ1Y3QgbWJ1
ZiAqbSwgaW50IGlwaGxlbiwgaW50ICpvZmZzZXQsIGludCBsZW5ndGgsCiAJCQlzY3RwX2hhbmRs
ZV9pbml0KG0sIGlwaGxlbiwgKm9mZnNldCwgc3JjLCBkc3QsIHNoLAogCQkJICAgICAgICAgICAg
ICAgICAoc3RydWN0IHNjdHBfaW5pdF9jaHVuayAqKWNoLCBpbnAsCiAJCQkgICAgICAgICAgICAg
ICAgIHN0Y2IsICpuZXRwLCAmYWJvcnRfbm9fdW5sb2NrLAotI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
IAkJCSAgICAgICAgICAgICAgICAgbWZsb3d0eXBlLCBtZmxvd2lkLAogI2VuZGlmCiAJCQkgICAg
ICAgICAgICAgICAgIHZyZl9pZCwgcG9ydCk7CkBAIC01MDYwLDcgKzUwNzUsNyBAQCBzY3RwX3By
b2Nlc3NfY29udHJvbChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50ICpvZmZzZXQsIGlu
dCBsZW5ndGgsCiAJCQkJfSBlbHNlIHsKIAkJCQkJKm9mZnNldCA9IGxlbmd0aDsKIAkJCQkJaWYg
KHN0Y2IgIT0gTlVMTCkgewotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBf
U09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogCQkJCQkJc28gPSBTQ1RQX0lOUF9TTyhpbnApOwogCQkJCQkJYXRvbWljX2Fk
ZF9pbnQoJnN0Y2ItPmFzb2MucmVmY250LCAxKTsKIAkJCQkJCVNDVFBfVENCX1VOTE9DSyhzdGNi
KTsKQEAgLTUwNzAsNyArNTA4NSw3IEBAIHNjdHBfcHJvY2Vzc19jb250cm9sKHN0cnVjdCBtYnVm
ICptLCBpbnQgaXBobGVuLCBpbnQgKm9mZnNldCwgaW50IGxlbmd0aCwKICNlbmRpZgogCQkJCQkJ
KHZvaWQpc2N0cF9mcmVlX2Fzc29jKGlucCwgc3RjYiwgU0NUUF9OT1JNQUxfUFJPQywKIAkJCQkJ
CSAgICAgICAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUF9JTlBVVCArIFNDVFBfTE9DXzI5
KTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElO
RykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJ
CQkJCVNDVFBfU09DS0VUX1VOTE9DSyhzbywgMSk7CiAjZW5kaWYKIAkJCQkJfQpAQCAtNTA4OSw3
ICs1MTA0LDcgQEAgc2N0cF9wcm9jZXNzX2NvbnRyb2woc3RydWN0IG1idWYgKm0sIGludCBpcGhs
ZW4sIGludCAqb2Zmc2V0LCBpbnQgbGVuZ3RoLAogCQkJCSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChzdHJ1Y3Qgc2N0cF9pbml0X2Fja19jaHVuayAqKWNoLAogCQkJCSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0Y2IsICpuZXRwLAogCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZhYm9ydF9ub191bmxvY2ssCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1mbG93dHlwZSwgbWZsb3dpZCwKICNlbmRpZgogCQkJCSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZyZl9pZCk7CkBAIC01MTQwLDcgKzUxNTUsNyBAQCBzY3RwX3By
b2Nlc3NfY29udHJvbChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50ICpvZmZzZXQsIGlu
dCBsZW5ndGgsCiAJCQkJCWJyZWFrOwogCQkJCX0KIAkJCX0KLQkJCWlmIChTQ1RQX0dFVF9TVEFU
RSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tfU0VOVCkgeworCQkJaWYg
KFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQpIHsK
IAkJCQkvKi0KIAkJCQkgKiBJZiB3ZSBoYXZlIHNlbnQgYSBzaHV0ZG93bi1hY2ssIHdlIHdpbGwg
cGF5IG5vCiAJCQkJICogYXR0ZW50aW9uIHRvIGEgc2FjayBzZW50IGluIHRvIHVzIHNpbmNlCkBA
IC01MzI5LDcgKzUzNDQsNyBAQCBzY3RwX3Byb2Nlc3NfY29udHJvbChzdHJ1Y3QgbWJ1ZiAqbSwg
aW50IGlwaGxlbiwgaW50ICpvZmZzZXQsIGludCBsZW5ndGgsCiAJCQlpZiAoKHN0Y2IgPT0gTlVM
TCkgJiYKIAkJCSAgICAoIVNDVFBfSVNfTElTVEVOSU5HKGlucCkgfHwKIAkJCSAgICAgKCEoaW5w
LT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKLSNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSAxMjAwMDM0CisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCSAgICAgIGlucC0+c2N0
cF9zb2NrZXQtPnNvbF9xbGVuID49IGlucC0+c2N0cF9zb2NrZXQtPnNvbF9xbGltaXQpKSkgewog
I2Vsc2UKIAkJCSAgICAgIGlucC0+c2N0cF9zb2NrZXQtPnNvX3FsZW4gPj0gaW5wLT5zY3RwX3Nv
Y2tldC0+c29fcWxpbWl0KSkpIHsKQEAgLTUzMzksNyArNTM1NCw3IEBAIHNjdHBfcHJvY2Vzc19j
b250cm9sKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgKm9mZnNldCwgaW50IGxlbmd0
aCwKIAkJCQkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQX0NBVVNFX09VVF9PRl9S
RVNDLCAiIik7CiAJCQkJCXNjdHBfYWJvcnRfYXNzb2NpYXRpb24oaW5wLCBzdGNiLCBtLCBpcGhs
ZW4sCiAJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgc3JjLCBkc3QsIHNoLCBvcF9lcnIsCi0j
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCQkgICAgICAgICAgICAgICAgICAgICAgIG1mbG93dHlw
ZSwgbWZsb3dpZCwKICNlbmRpZgogCQkJCQkgICAgICAgICAgICAgICAgICAgICAgIHZyZl9pZCwg
cG9ydCk7CkBAIC01MzQ5LDYgKzUzNjQsOCBAQCBzY3RwX3Byb2Nlc3NfY29udHJvbChzdHJ1Y3Qg
bWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50ICpvZmZzZXQsIGludCBsZW5ndGgsCiAJCQl9IGVsc2Ug
ewogCQkJCXN0cnVjdCBtYnVmICpyZXRfYnVmOwogCQkJCXN0cnVjdCBzY3RwX2lucGNiICpsaW5w
OworCQkJCXN0cnVjdCBzY3RwX3RtaXRfY2h1bmsgKmNoazsKKwogCQkJCWlmIChzdGNiKSB7CiAJ
CQkJCWxpbnAgPSBOVUxMOwogCQkJCX0gZWxzZSB7CkBAIC01Mzc5LDcgKzUzOTYsNyBAQCBzY3Rw
X3Byb2Nlc3NfY29udHJvbChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50ICpvZmZzZXQs
IGludCBsZW5ndGgsCiAJCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICBhdXRoX29mZnNldCwK
IAkJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhfbGVuLAogCQkJCQkJICAgICAgICAg
ICAgICAgICAgICAgICAgJmxvY2tlZF9zdGNiLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQkJ
CSAgICAgICAgICAgICAgICAgICAgICAgIG1mbG93dHlwZSwKIAkJCQkJCSAgICAgICAgICAgICAg
ICAgICAgICAgIG1mbG93aWQsCiAjZW5kaWYKQEAgLTU0MTEsMTQgKzU0MjgsMTMgQEAgc2N0cF9w
cm9jZXNzX2NvbnRyb2woc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCAqb2Zmc2V0LCBp
bnQgbGVuZ3RoLAogCQkJCQlnb3RfYXV0aCA9IDE7CiAJCQkJCWF1dGhfc2tpcHBlZCA9IDA7CiAJ
CQkJfQotCQkJCWlmICghVEFJTFFfRU1QVFkoJnN0Y2ItPmFzb2Muc2VudF9xdWV1ZSkpIHsKLQkJ
CQkJLyoKLQkJCQkJICogUmVzdGFydCB0aGUgdGltZXIgaWYgd2UgaGF2ZQotCQkJCQkgKiBwZW5k
aW5nIGRhdGEKLQkJCQkJICovCi0JCQkJCXN0cnVjdCBzY3RwX3RtaXRfY2h1bmsgKmNoazsKLQot
CQkJCQljaGsgPSBUQUlMUV9GSVJTVCgmc3RjYi0+YXNvYy5zZW50X3F1ZXVlKTsKKwkJCQkvKiBS
ZXN0YXJ0IHRoZSB0aW1lciBpZiB3ZSBoYXZlIHBlbmRpbmcgZGF0YSAqLworCQkJCVRBSUxRX0ZP
UkVBQ0goY2hrLCAmc3RjYi0+YXNvYy5zZW50X3F1ZXVlLCBzY3RwX25leHQpIHsKKwkJCQkJaWYg
KGNoay0+d2hvVG8gIT0gTlVMTCkgeworCQkJCQkJYnJlYWs7CisJCQkJCX0KKwkJCQl9CisJCQkJ
aWYgKGNoayAhPSBOVUxMKSB7CiAJCQkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBF
X1NFTkQsIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIGNoay0+d2hvVG8pOwogCQkJCX0KIAkJCX0KQEAg
LTU0MzMsNyArNTQ0OSw3IEBAIHNjdHBfcHJvY2Vzc19jb250cm9sKHN0cnVjdCBtYnVmICptLCBp
bnQgaXBobGVuLCBpbnQgKm9mZnNldCwgaW50IGxlbmd0aCwKIAkJCQlpZiAoKHN0Y2IpICYmIChz
dGNiLT5hc29jLnRvdGFsX291dHB1dF9xdWV1ZV9zaXplKSkgewogCQkJCQk7CiAJCQkJfSBlbHNl
IGlmIChzdGNiKSB7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19M
T0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJCQkJCXNvID0gU0NUUF9JTlBfU08oaW5wKTsKIAkJCQkJYXRvbWljX2FkZF9pbnQo
JnN0Y2ItPmFzb2MucmVmY250LCAxKTsKIAkJCQkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwpAQCAt
NTQ0Myw3ICs1NDU5LDcgQEAgc2N0cF9wcm9jZXNzX2NvbnRyb2woc3RydWN0IG1idWYgKm0sIGlu
dCBpcGhsZW4sIGludCAqb2Zmc2V0LCBpbnQgbGVuZ3RoLAogI2VuZGlmCiAJCQkJCSh2b2lkKXNj
dHBfZnJlZV9hc3NvYyhpbnAsIHN0Y2IsIFNDVFBfTk9STUFMX1BST0MsCiAJCQkJCSAgICAgICAg
ICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUF9JTlBVVCArIFNDVFBfTE9DXzMwKTsKLSNpZiBk
ZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBk
ZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQkJU0NUUF9T
T0NLRVRfVU5MT0NLKHNvLCAxKTsKICNlbmRpZgogCQkJCQkqb2Zmc2V0ID0gbGVuZ3RoOwpAQCAt
NTUzMiw3ICs1NTQ4LDggQEAgc2N0cF9wcm9jZXNzX2NvbnRyb2woc3RydWN0IG1idWYgKm0sIGlu
dCBpcGhsZW4sIGludCAqb2Zmc2V0LCBpbnQgbGVuZ3RoLAogCQkJYnJlYWs7CiAJCWNhc2UgU0NU
UF9GT1JXQVJEX0NVTV9UU046CiAJCWNhc2UgU0NUUF9JRk9SV0FSRF9DVU1fVFNOOgotCQkJU0NU
UERCRyhTQ1RQX0RFQlVHX0lOUFVUMywgIlNDVFBfRldEX1RTTlxuIik7CisJCQlTQ1RQREJHKFND
VFBfREVCVUdfSU5QVVQzLCAiJXNcbiIsCisJCQkJY2gtPmNodW5rX3R5cGUgPT0gU0NUUF9GT1JX
QVJEX0NVTV9UU04gPyAiRk9SV0FSRF9UU04iIDogIklfRk9SV0FSRF9UU04iKTsKIAkJCWlmIChj
aGtfbGVuZ3RoIDwgc2l6ZW9mKHN0cnVjdCBzY3RwX2ZvcndhcmRfdHNuX2NodW5rKSkgewogCQkJ
CS8qIEl0cyBub3Qgb3VycyAqLwogCQkJCSpvZmZzZXQgPSBsZW5ndGg7CkBAIC01NTQ1LDEwICs1
NTYyLDIyIEBAIHNjdHBfcHJvY2Vzc19jb250cm9sKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVu
LCBpbnQgKm9mZnNldCwgaW50IGxlbmd0aCwKIAkJCQlpZiAoc3RjYi0+YXNvYy5wcnNjdHBfc3Vw
cG9ydGVkID09IDApIHsKIAkJCQkJZ290byB1bmtub3duX2NodW5rOwogCQkJCX0KKwkJCQlpZiAo
KChzdGNiLT5hc29jLmlkYXRhX3N1cHBvcnRlZCA9PSAxKSAmJiAoY2gtPmNodW5rX3R5cGUgPT0g
U0NUUF9GT1JXQVJEX0NVTV9UU04pKSB8fAorCQkJCSAgICAoKHN0Y2ItPmFzb2MuaWRhdGFfc3Vw
cG9ydGVkID09IDApICYmIChjaC0+Y2h1bmtfdHlwZSA9PSBTQ1RQX0lGT1JXQVJEX0NVTV9UU04p
KSkgeworCQkJCQlpZiAoY2gtPmNodW5rX3R5cGUgPT0gU0NUUF9GT1JXQVJEX0NVTV9UU04pIHsK
KwkJCQkJCVNDVFBfU05QUklOVEYobXNnLCBzaXplb2YobXNnKSwgIiVzIiwgIkZPUldBUkQtVFNO
IGNodW5rIHJlY2VpdmVkIHdoZW4gSS1GT1JXQVJELVRTTiB3YXMgbmVnb3RpYXRlZCIpOworCQkJ
CQl9IGVsc2UgeworCQkJCQkJU0NUUF9TTlBSSU5URihtc2csIHNpemVvZihtc2cpLCAiJXMiLCAi
SS1GT1JXQVJELVRTTiBjaHVuayByZWNlaXZlZCB3aGVuIEZPUldBUkQtVFNOIHdhcyBuZWdvdGlh
dGVkIik7CisJCQkJCX0KKwkJCQkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQX0NB
VVNFX1BST1RPQ09MX1ZJT0xBVElPTiwgbXNnKTsKKwkJCQkJc2N0cF9hYm9ydF9hbl9hc3NvY2lh
dGlvbihpbnAsIHN0Y2IsIG9wX2VyciwgU0NUUF9TT19OT1RfTE9DS0VEKTsKKwkJCQkJKm9mZnNl
dCA9IGxlbmd0aDsKKwkJCQkJcmV0dXJuIChOVUxMKTsKKwkJCQl9CiAJCQkJKmZ3ZF90c25fc2Vl
biA9IDE7CiAJCQkJaWYgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1NPQ0tFVF9H
T05FKSB7CiAJCQkJCS8qIFdlIGFyZSBub3QgaW50ZXJlc3RlZCBhbnltb3JlICovCi0jaWYgZGVm
aW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVm
aW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJCXNvID0gU0NU
UF9JTlBfU08oaW5wKTsKIAkJCQkJYXRvbWljX2FkZF9pbnQoJnN0Y2ItPmFzb2MucmVmY250LCAx
KTsKIAkJCQkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwpAQCAtNTU1OCw3ICs1NTg3LDcgQEAgc2N0
cF9wcm9jZXNzX2NvbnRyb2woc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCAqb2Zmc2V0
LCBpbnQgbGVuZ3RoLAogI2VuZGlmCiAJCQkJCSh2b2lkKXNjdHBfZnJlZV9hc3NvYyhpbnAsIHN0
Y2IsIFNDVFBfTk9STUFMX1BST0MsCiAJCQkJCSAgICAgICAgICAgICAgICAgICAgICBTQ1RQX0ZS
T01fU0NUUF9JTlBVVCArIFNDVFBfTE9DXzMxKTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwg
ZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQkJU0NUUF9TT0NLRVRfVU5MT0NLKHNvLCAxKTsK
ICNlbmRpZgogCQkJCQkqb2Zmc2V0ID0gbGVuZ3RoOwpAQCAtNTU3OSw3ICs1NjA4LDcgQEAgc2N0
cF9wcm9jZXNzX2NvbnRyb2woc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCAqb2Zmc2V0
LCBpbnQgbGVuZ3RoLAogCQkJYnJlYWs7CiAJCWNhc2UgU0NUUF9TVFJFQU1fUkVTRVQ6CiAJCQlT
Q1RQREJHKFNDVFBfREVCVUdfSU5QVVQzLCAiU0NUUF9TVFJFQU1fUkVTRVRcbiIpOwotCQkJaWYg
KCgoc3RjYiA9PSBOVUxMKSB8fCAoY2ggPT0gTlVMTCkgfHwgKGNoa19sZW5ndGggPCBzaXplb2Yo
c3RydWN0IHNjdHBfc3RyZWFtX3Jlc2V0X3Rzbl9yZXEpKSkpIHsKKwkJCWlmICgoc3RjYiA9PSBO
VUxMKSB8fCAoY2hrX2xlbmd0aCA8IHNpemVvZihzdHJ1Y3Qgc2N0cF9zdHJlYW1fcmVzZXRfdHNu
X3JlcSkpKSB7CiAJCQkJLyogSXRzIG5vdCBvdXJzICovCiAJCQkJKm9mZnNldCA9IGxlbmd0aDsK
IAkJCQlyZXR1cm4gKHN0Y2IpOwpAQCAtNTYwMiw3ICs1NjMxLDcgQEAgc2N0cF9wcm9jZXNzX2Nv
bnRyb2woc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCAqb2Zmc2V0LCBpbnQgbGVuZ3Ro
LAogCQkJCXJldHVybiAoc3RjYik7CiAJCQl9CiAKLQkJCWlmICgoY2ggIT0gTlVMTCkgJiYgKHN0
Y2IgIT0gTlVMTCkgJiYgKG5ldHAgIT0gTlVMTCkgJiYgKCpuZXRwICE9IE5VTEwpKSB7CisJCQlp
ZiAoKHN0Y2IgIT0gTlVMTCkgJiYgKG5ldHAgIT0gTlVMTCkgJiYgKCpuZXRwICE9IE5VTEwpKSB7
CiAJCQkJaWYgKHN0Y2ItPmFzb2MucGt0ZHJvcF9zdXBwb3J0ZWQgPT0gMCkgewogCQkJCQlnb3Rv
IHVua25vd25fY2h1bms7CiAJCQkJfQpAQCAtNTYzOCw4ICs1NjY3LDcgQEAgc2N0cF9wcm9jZXNz
X2NvbnRyb2woc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCAqb2Zmc2V0LCBpbnQgbGVu
Z3RoLAogCQkJCWdvdG8gbmV4dF9jaHVuazsKIAkJCX0KIAkJCWdvdF9hdXRoID0gMTsKLQkJCWlm
ICgoY2ggPT0gTlVMTCkgfHwgc2N0cF9oYW5kbGVfYXV0aChzdGNiLCAoc3RydWN0IHNjdHBfYXV0
aF9jaHVuayAqKWNoLAotCQkJCQkJCSAgICAgbSwgKm9mZnNldCkpIHsKKwkJCWlmIChzY3RwX2hh
bmRsZV9hdXRoKHN0Y2IsIChzdHJ1Y3Qgc2N0cF9hdXRoX2NodW5rICopY2gsIG0sICpvZmZzZXQp
KSB7CiAJCQkJLyogYXV0aCBITUFDIGZhaWxlZCBzbyBkdW1wIHRoZSBwYWNrZXQgKi8KIAkJCQkq
b2Zmc2V0ID0gbGVuZ3RoOwogCQkJCXJldHVybiAoc3RjYik7CkBAIC01NjUyLDcgKzU2ODAsMTEg
QEAgc2N0cF9wcm9jZXNzX2NvbnRyb2woc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCAq
b2Zmc2V0LCBpbnQgbGVuZ3RoLAogCQlkZWZhdWx0OgogCQl1bmtub3duX2NodW5rOgogCQkJLyog
aXQncyBhbiB1bmtub3duIGNodW5rISAqLwotCQkJaWYgKChjaC0+Y2h1bmtfdHlwZSAmIDB4NDAp
ICYmIChzdGNiICE9IE5VTEwpKSB7CisJCQlpZiAoKGNoLT5jaHVua190eXBlICYgMHg0MCkgJiYK
KwkJCSAgICAoc3RjYiAhPSBOVUxMKSAmJgorCQkJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSAh
PSBTQ1RQX1NUQVRFX0VNUFRZKSAmJgorCQkJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSAhPSBT
Q1RQX1NUQVRFX0lOVVNFKSAmJgorCQkJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQ
X1NUQVRFX0NPT0tJRV9XQUlUKSkgewogCQkJCXN0cnVjdCBzY3RwX2dlbl9lcnJvcl9jYXVzZSAq
Y2F1c2U7CiAJCQkJaW50IGxlbjsKIApAQCAtNTcxNyw3ICs1NzQ5LDcgQEAgc2N0cF9jb21tb25f
aW5wdXRfcHJvY2Vzc2luZyhzdHJ1Y3QgbWJ1ZiAqKm1tLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0
LCBpbnQgbGVuZ3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNjdHBoZHIg
KnNoLCBzdHJ1Y3Qgc2N0cF9jaHVua2hkciAqY2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQ4X3QgY29tcHV0ZV9jcmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQ4X3QgZWNuX2JpdHMsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50OF90IG1mbG93dHlwZSwgdWludDMyX3QgbWZsb3dpZCwgdWludDE2X3Qg
ZmlibnVtLAogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHZy
Zl9pZCwgdWludDE2X3QgcG9ydCkKQEAgLTU3MzEsNiArNTc2Myw5IEBAIHNjdHBfY29tbW9uX2lu
cHV0X3Byb2Nlc3Npbmcoc3RydWN0IG1idWYgKiptbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwg
aW50IGxlbmd0CiAJc3RydWN0IHNjdHBfaW5wY2IgKmlucCA9IE5VTEwsICppbnBfZGVjciA9IE5V
TEw7CiAJc3RydWN0IHNjdHBfdGNiICpzdGNiID0gTlVMTDsKIAlzdHJ1Y3Qgc2N0cF9uZXRzICpu
ZXQgPSBOVUxMOworI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwlzdHJ1Y3Qgc29ja2V0ICp1
cGNhbGxfc29ja2V0ID0gTlVMTDsKKyNlbmRpZgogCiAJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfcmVj
dmRhdGFncmFtcyk7CiAjaWZkZWYgU0NUUF9BVURJVElOR19FTkFCTEVECkBAIC01NzY2LDExICs1
ODAxLDEyIEBAIHNjdHBfY29tbW9uX2lucHV0X3Byb2Nlc3Npbmcoc3RydWN0IG1idWYgKiptbSwg
aW50IGlwaGxlbiwgaW50IG9mZnNldCwgaW50IGxlbmd0CiAJCQkJbmV0LT5wb3J0ID0gcG9ydDsK
IAkJCX0KICNlbmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCWlmIChuZXQgIT0gTlVMTCkg
ewogCQkJCW5ldC0+Zmxvd3R5cGUgPSBtZmxvd3R5cGU7CiAJCQkJbmV0LT5mbG93aWQgPSBtZmxv
d2lkOwogCQkJfQorCQkJU0NUUF9QUk9CRTUocmVjZWl2ZSwgTlVMTCwgc3RjYiwgbSwgc3RjYiwg
c2gpOwogI2VuZGlmCiAJCQlpZiAoKGlucCAhPSBOVUxMKSAmJiAoc3RjYiAhPSBOVUxMKSkgewog
CQkJCXNjdHBfc2VuZF9wYWNrZXRfZHJvcHBlZChzdGNiLCBuZXQsIG0sIGxlbmd0aCwgaXBobGVu
LCAxKTsKQEAgLTU4MDcsMjIgKzU4NDMsMjUgQEAgc2N0cF9jb21tb25faW5wdXRfcHJvY2Vzc2lu
ZyhzdHJ1Y3QgbWJ1ZiAqKm1tLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LCBpbnQgbGVuZ3QKIAkJ
bmV0LT5wb3J0ID0gcG9ydDsKIAl9CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQor
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJaWYg
KG5ldCAhPSBOVUxMKSB7CiAJCW5ldC0+Zmxvd3R5cGUgPSBtZmxvd3R5cGU7CiAJCW5ldC0+Zmxv
d2lkID0gbWZsb3dpZDsKIAl9CiAjZW5kaWYKIAlpZiAoaW5wID09IE5VTEwpIHsKKyNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQlTQ1RQX1BST0JF
NShyZWNlaXZlLCBOVUxMLCBzdGNiLCBtLCBzdGNiLCBzaCk7CisjZW5kaWYKIAkJU0NUUF9TVEFU
X0lOQ1Ioc2N0cHNfbm9wb3J0KTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAoKChfX0Zy
ZWVCU0RfdmVyc2lvbiA8IDkwMDAwMCkgJiYgKF9fRnJlZUJTRF92ZXJzaW9uID49IDgwNDAwMCkp
IHx8IChfX0ZyZWVCU0RfdmVyc2lvbiA+IDkwMDAwMCkpCisjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJaWYgKGJhZHBvcnRfYmFuZGxpbShCQU5E
TElNX1NDVFBfT09UQikgPCAwKSB7CiAJCQlnb3RvIG91dDsKIAkJfQogI2VuZGlmCiAJCWlmIChj
aC0+Y2h1bmtfdHlwZSA9PSBTQ1RQX1NIVVRET1dOX0FDSykgewogCQkJc2N0cF9zZW5kX3NodXRk
b3duX2NvbXBsZXRlMihzcmMsIGRzdCwgc2gsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQsIGZpYm51bSwKICNl
bmRpZgogCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2cmZfaWQsIHBvcnQpOwpAQCAt
NTgzOSw3ICs1ODc4LDcgQEAgc2N0cF9jb21tb25faW5wdXRfcHJvY2Vzc2luZyhzdHJ1Y3QgbWJ1
ZiAqKm1tLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LCBpbnQgbGVuZ3QKIAkJCQkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJPdXQgb2YgdGhlIGJsdWUiKTsKIAkJCQlzY3RwX3NlbmRfYWJv
cnQobSwgaXBobGVuLCBzcmMsIGRzdCwKIAkJCQkgICAgICAgICAgICAgICAgc2gsIDAsIG9wX2Vy
ciwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJICAgICAgICAgICAgICAgIG1mbG93dHlwZSwg
bWZsb3dpZCwgZmlibnVtLAogI2VuZGlmCiAJCQkJICAgICAgICAgICAgICAgIHZyZl9pZCwgcG9y
dCk7CkBAIC01ODY4LDI1ICs1OTA3LDQxIEBAIHNjdHBfY29tbW9uX2lucHV0X3Byb2Nlc3Npbmco
c3RydWN0IG1idWYgKiptbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwgaW50IGxlbmd0CiAJCQkg
Ki8KIAkJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKIAkJCXN0Y2IgPSBOVUxMOwotCQkJc25wcmlu
dGYobXNnLCBzaXplb2YobXNnKSwgIk9PVEIsICVzOiVkIGF0ICVzIiwgX19GSUxFX18sIF9fTElO
RV9fLCBfX2Z1bmNfXyk7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKKwkJCVNDVFBfUFJPQkU1KHJlY2VpdmUsIE5VTEwsIHN0Y2IsIG0sIHN0Y2Is
IHNoKTsKKyNlbmRpZgorCQkJU0NUUF9TTlBSSU5URihtc2csIHNpemVvZihtc2cpLCAiT09UQiwg
JXM6JWQgYXQgJXMiLCBfX0ZJTEVfXywgX19MSU5FX18sIF9fZnVuY19fKTsKIAkJCW9wX2VyciA9
IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2RpYWdfaW5mb19jb2Rl
KSwKIAkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnKTsKIAkJCXNjdHBfaGFuZGxl
X29vdGIobSwgaXBobGVuLCBvZmZzZXQsIHNyYywgZHN0LCBzaCwgaW5wLCBvcF9lcnIsCi0jaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogCQkJICAgICAgICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQs
IGlucC0+ZmlibnVtLAogI2VuZGlmCiAJCQkgICAgICAgICAgICAgICAgIHZyZl9pZCwgcG9ydCk7
CiAJCQlnb3RvIG91dDsKIAkJfQotCiAJfQorI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwlp
ZiAoKHN0Y2IgIT0gTlVMTCkgJiYKKwkgICAgIShzdGNiLT5zY3RwX2VwLT5zY3RwX2ZsYWdzICYg
U0NUUF9QQ0JfRkxBR1NfU09DS0VUX0dPTkUpICYmCisJICAgIChzdGNiLT5zY3RwX3NvY2tldCAh
PSBOVUxMKSkgeworCQlpZiAoc3RjYi0+c2N0cF9zb2NrZXQtPnNvX2hlYWQgIT0gTlVMTCkgewor
CQkJdXBjYWxsX3NvY2tldCA9IHN0Y2ItPnNjdHBfc29ja2V0LT5zb19oZWFkOworCQl9IGVsc2Ug
eworCQkJdXBjYWxsX3NvY2tldCA9IHN0Y2ItPnNjdHBfc29ja2V0OworCQl9CisJCVNPQ0tfTE9D
Syh1cGNhbGxfc29ja2V0KTsKKwkJc29yZWYodXBjYWxsX3NvY2tldCk7CisJCVNPQ0tfVU5MT0NL
KHVwY2FsbF9zb2NrZXQpOworCX0KKyNlbmRpZgogCWlmIChJU19TQ1RQX0NPTlRST0woY2gpKSB7
CiAJCS8qIHByb2Nlc3MgdGhlIGNvbnRyb2wgcG9ydGlvbiBvZiB0aGUgU0NUUCBwYWNrZXQgKi8K
IAkJLyogc2FfaWdub3JlIE5PX05VTExfQ0hLICovCiAJCXN0Y2IgPSBzY3RwX3Byb2Nlc3NfY29u
dHJvbChtLCBpcGhsZW4sICZvZmZzZXQsIGxlbmd0aCwKIAkJICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNyYywgZHN0LCBzaCwgY2gsCiAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnAsIHN0Y2IsICZuZXQsICZmd2RfdHNuX3NlZW4sCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykK
KyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWZsb3d0eXBlLCBtZmxvd2lkLCBmaWJudW0sCiAj
ZW5kaWYKIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZyZl9pZCwgcG9ydCk7CkBAIC01
OTI3LDE2ICs1OTgyLDIyIEBAIHNjdHBfY29tbW9uX2lucHV0X3Byb2Nlc3Npbmcoc3RydWN0IG1i
dWYgKiptbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwgaW50IGxlbmd0CiAJCWlmICgoc3RjYiAh
PSBOVUxMKSAmJgogCQkgICAgc2N0cF9hdXRoX2lzX3JlcXVpcmVkX2NodW5rKFNDVFBfREFUQSwg
c3RjYi0+YXNvYy5sb2NhbF9hdXRoX2NodW5rcykpIHsKIAkJCS8qICJzaWxlbnRseSIgaWdub3Jl
ICovCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
KwkJCVNDVFBfUFJPQkU1KHJlY2VpdmUsIE5VTEwsIHN0Y2IsIG0sIHN0Y2IsIHNoKTsKKyNlbmRp
ZgogCQkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfcmVjdmF1dGhtaXNzaW5nKTsKIAkJCWdvdG8gb3V0
OwogCQl9CiAJCWlmIChzdGNiID09IE5VTEwpIHsKIAkJCS8qIG91dCBvZiB0aGUgYmx1ZSBEQVRB
IGNodW5rICovCi0JCQlzbnByaW50Zihtc2csIHNpemVvZihtc2cpLCAiT09UQiwgJXM6JWQgYXQg
JXMiLCBfX0ZJTEVfXywgX19MSU5FX18sIF9fZnVuY19fKTsKKyNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQkJU0NUUF9QUk9CRTUocmVjZWl2ZSwg
TlVMTCwgTlVMTCwgbSwgTlVMTCwgc2gpOworI2VuZGlmCisJCQlTQ1RQX1NOUFJJTlRGKG1zZywg
c2l6ZW9mKG1zZyksICJPT1RCLCAlczolZCBhdCAlcyIsIF9fRklMRV9fLCBfX0xJTkVfXywgX19m
dW5jX18pOwogCQkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQX0JBU0VfU1lTQ1RM
KHNjdHBfZGlhZ19pbmZvX2NvZGUpLAogCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
c2cpOwogCQkJc2N0cF9oYW5kbGVfb290YihtLCBpcGhsZW4sIG9mZnNldCwgc3JjLCBkc3QsIHNo
LCBpbnAsIG9wX2VyciwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkgICAgICAgICAgICAgICAg
IG1mbG93dHlwZSwgbWZsb3dpZCwgZmlibnVtLAogI2VuZGlmCiAJCQkJCSB2cmZfaWQsIHBvcnQp
OwpAQCAtNTk0NCwxMSArNjAwNSwxNyBAQCBzY3RwX2NvbW1vbl9pbnB1dF9wcm9jZXNzaW5nKHN0
cnVjdCBtYnVmICoqbW0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsIGludCBsZW5ndAogCQl9CiAJ
CWlmIChzdGNiLT5hc29jLm15X3Z0YWcgIT0gbnRvaGwoc2gtPnZfdGFnKSkgewogCQkJLyogdl90
YWcgbWlzbWF0Y2ghICovCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKKwkJCVNDVFBfUFJPQkU1KHJlY2VpdmUsIE5VTEwsIHN0Y2IsIG0sIHN0Y2Is
IHNoKTsKKyNlbmRpZgogCQkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfYmFkdnRhZyk7CiAJCQlnb3Rv
IG91dDsKIAkJfQogCX0KIAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCisJU0NUUF9QUk9CRTUocmVjZWl2ZSwgTlVMTCwgc3RjYiwgbSwgc3RjYiwg
c2gpOworI2VuZGlmCiAJaWYgKHN0Y2IgPT0gTlVMTCkgewogCQkvKgogCQkgKiBubyB2YWxpZCBU
Q0IgZm9yIHRoaXMgcGFja2V0LCBvciB3ZSBmb3VuZCBpdCdzIGEgYmFkCkBAIC01OTU3LDYgKzYw
MjQsMjAgQEAgc2N0cF9jb21tb25faW5wdXRfcHJvY2Vzc2luZyhzdHJ1Y3QgbWJ1ZiAqKm1tLCBp
bnQgaXBobGVuLCBpbnQgb2Zmc2V0LCBpbnQgbGVuZ3QKIAkJICovCiAJCWdvdG8gb3V0OwogCX0K
KyNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJaWYgKCh1cGNhbGxfc29ja2V0ID09IE5VTEwp
ICYmCisJICAgICEoc3RjYi0+c2N0cF9lcC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1NP
Q0tFVF9HT05FKSAmJgorCSAgICAoc3RjYi0+c2N0cF9zb2NrZXQgIT0gTlVMTCkpIHsKKwkJaWYg
KHN0Y2ItPnNjdHBfc29ja2V0LT5zb19oZWFkICE9IE5VTEwpIHsKKwkJCXVwY2FsbF9zb2NrZXQg
PSBzdGNiLT5zY3RwX3NvY2tldC0+c29faGVhZDsKKwkJfSBlbHNlIHsKKwkJCXVwY2FsbF9zb2Nr
ZXQgPSBzdGNiLT5zY3RwX3NvY2tldDsKKwkJfQorCQlTT0NLX0xPQ0sodXBjYWxsX3NvY2tldCk7
CisJCXNvcmVmKHVwY2FsbF9zb2NrZXQpOworCQlTT0NLX1VOTE9DSyh1cGNhbGxfc29ja2V0KTsK
Kwl9CisjZW5kaWYKIAogCS8qCiAJICogREFUQSBjaHVuayBwcm9jZXNzaW5nCkBAIC01OTg1LDcg
KzYwNjYsNyBAQCBzY3RwX2NvbW1vbl9pbnB1dF9wcm9jZXNzaW5nKHN0cnVjdCBtYnVmICoqbW0s
IGludCBpcGhsZW4sIGludCBvZmZzZXQsIGludCBsZW5ndAogCQkgKiBub3QgZ2V0IGhlcmUgdW5s
ZXNzIHdlIHJlYWxseSBkaWQgaGF2ZSBhIHRhZywgc28gd2UgZG9uJ3QKIAkJICogYWJvcnQgaWYg
dGhpcyBoYXBwZW5zLCBqdXN0IGR1bXAgdGhlIGNodW5rIHNpbGVudGx5LgogCQkgKi8KLQkJc3dp
dGNoIChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykpIHsKKwkJc3dpdGNoIChTQ1RQX0dFVF9T
VEFURShzdGNiKSkgewogCQljYXNlIFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRDoKIAkJCS8qCiAJ
CQkgKiB3ZSBjb25zaWRlciBkYXRhIHdpdGggdmFsaWQgdGFncyBpbiB0aGlzIHN0YXRlCkBAIC01
OTk4LDExICs2MDc5LDExIEBAIHNjdHBfY29tbW9uX2lucHV0X3Byb2Nlc3Npbmcoc3RydWN0IG1i
dWYgKiptbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwgaW50IGxlbmd0CiAJCQkvKgogCQkJICog
V2UgY29uc2lkZXIgT09UQiBhbnkgZGF0YSBzZW50IGR1cmluZyBhc29jIHNldHVwLgogCQkJICov
Ci0JCQlzbnByaW50Zihtc2csIHNpemVvZihtc2cpLCAiT09UQiwgJXM6JWQgYXQgJXMiLCBfX0ZJ
TEVfXywgX19MSU5FX18sIF9fZnVuY19fKTsKKwkJCVNDVFBfU05QUklOVEYobXNnLCBzaXplb2Yo
bXNnKSwgIk9PVEIsICVzOiVkIGF0ICVzIiwgX19GSUxFX18sIF9fTElORV9fLCBfX2Z1bmNfXyk7
CiAJCQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9k
aWFnX2luZm9fY29kZSksCiAJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyk7CiAJ
CQlzY3RwX2hhbmRsZV9vb3RiKG0sIGlwaGxlbiwgb2Zmc2V0LCBzcmMsIGRzdCwgc2gsIGlucCwg
b3BfZXJyLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCSAgICAgICAgICAgICAgICAgbWZsb3d0
eXBlLCBtZmxvd2lkLCBpbnAtPmZpYm51bSwKICNlbmRpZgogCQkJCQkgdnJmX2lkLCBwb3J0KTsK
QEAgLTYwODAsOSArNjE2MSw4IEBAIHRyaWdnZXJfc2VuZDoKIAlpZiAoIVRBSUxRX0VNUFRZKCZz
dGNiLT5hc29jLmFzY29uZl9zZW5kX3F1ZXVlKSB8fAogCSAgICBjbnRfY3RybF9yZWFkeSB8fAog
CSAgICBzdGNiLT5hc29jLnRyaWdnZXJfcmVzZXQgfHwKLQkgICAgKCh1bl9zZW50KSAmJgotCSAg
ICAgKHN0Y2ItPmFzb2MucGVlcnNfcnduZCA+IDAgfHwKLQkgICAgICAoc3RjYi0+YXNvYy5wZWVy
c19yd25kIDw9IDAgJiYgc3RjYi0+YXNvYy50b3RhbF9mbGlnaHQgPT0gMCkpKSkgeworCSAgICAo
KHVuX3NlbnQgPiAwKSAmJgorCSAgICAgKHN0Y2ItPmFzb2MucGVlcnNfcnduZCA+IDAgfHwgc3Rj
Yi0+YXNvYy50b3RhbF9mbGlnaHQgPT0gMCkpKSB7CiAJCVNDVFBEQkcoU0NUUF9ERUJVR19JTlBV
VDMsICJDYWxsaW5nIGNodW5rIE9VVFBVVFxuIik7CiAJCXNjdHBfY2h1bmtfb3V0cHV0KGlucCwg
c3RjYiwgU0NUUF9PVVRQVVRfRlJPTV9DT05UUk9MX1BST0MsIFNDVFBfU09fTk9UX0xPQ0tFRCk7
CiAJCVNDVFBEQkcoU0NUUF9ERUJVR19JTlBVVDMsICJjaHVuayBPVVRQVVQgcmV0dXJuc1xuIik7
CkBAIC02MDk1LDYgKzYxNzUsMjAgQEAgdHJpZ2dlcl9zZW5kOgogCWlmIChzdGNiICE9IE5VTEwp
IHsKIAkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwogCX0KKyNpZiBkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCisJaWYgKHVwY2FsbF9zb2NrZXQgIT0gTlVMTCkgeworCQlpZiAodXBjYWxsX3NvY2tldC0+
c29fdXBjYWxsICE9IE5VTEwpIHsKKwkJCWlmIChzb3JlYWRhYmxlKHVwY2FsbF9zb2NrZXQpIHx8
CisJCQkgICAgc293cml0ZWFibGUodXBjYWxsX3NvY2tldCkgfHwKKwkJCSAgICB1cGNhbGxfc29j
a2V0LT5zb19lcnJvcikgeworCQkJCSgqdXBjYWxsX3NvY2tldC0+c29fdXBjYWxsKSh1cGNhbGxf
c29ja2V0LCB1cGNhbGxfc29ja2V0LT5zb191cGNhbGxhcmcsIE1fTk9XQUlUKTsKKwkJCX0KKwkJ
fQorCQlBQ0NFUFRfTE9DSygpOworCQlTT0NLX0xPQ0sodXBjYWxsX3NvY2tldCk7CisJCXNvcmVs
ZSh1cGNhbGxfc29ja2V0KTsKKwl9CisjZW5kaWYKIAlpZiAoaW5wX2RlY3IgIT0gTlVMTCkgewog
CQkvKiByZWR1Y2UgcmVmLWNvdW50ICovCiAJCVNDVFBfSU5QX1dMT0NLKGlucF9kZWNyKTsKQEAg
LTYxMDYsMjEgKzYyMDAsOCBAQCB0cmlnZ2VyX3NlbmQ6CiAKICNpZmRlZiBJTkVUCiAjaWYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVk
KF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKIHZvaWQKIHNjdHBfaW5wdXRfd2l0
aF9wb3J0KHN0cnVjdCBtYnVmICppX3BhaywgaW50IG9mZiwgdWludDE2X3QgcG9ydCkKLSNlbGlm
IGRlZmluZWQoX19QYW5kYV9fKQotdm9pZAotc2N0cF9pbnB1dChwYWtoYW5kbGVfdHlwZSBpX3Bh
aykKLSNlbHNlCi12b2lkCi0jaWYgX19TVERDX18KLXNjdHBfaW5wdXQoc3RydWN0IG1idWYgKmlf
cGFrLC4uLikKLSNlbHNlCi1zY3RwX2lucHV0KGlfcGFrLCB2YV9hbGlzdCkKLQlzdHJ1Y3QgbWJ1
ZiAqaV9wYWs7Ci0jZW5kaWYKLSNlbmRpZgogewogCXN0cnVjdCBtYnVmICptOwogCWludCBpcGhs
ZW47CkBAIC02MTMyLDMwICs2MjEzLDIxIEBAIHNjdHBfaW5wdXQoaV9wYWssIHZhX2FsaXN0KQog
CXN0cnVjdCBzY3RwX2NodW5raGRyICpjaDsKIAlpbnQgbGVuZ3RoLCBvZmZzZXQ7CiAJdWludDhf
dCBjb21wdXRlX2NyYzsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJdWludDMyX3QgbWZsb3dpZDsK
IAl1aW50OF90IG1mbG93dHlwZTsKIAl1aW50MTZfdCBmaWJudW07CiAjZW5kaWYKLSNpZiAhKGRl
ZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2lu
ZG93c19fKSkKKyNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJdWludDE2X3QgcG9ydCA9IDA7
CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoX19QYW5kYV9fKQotCS8qIFRoaXMgaXMgRXZpbCwgYnV0
IGl0cyB0aGUgb25seSB3YXkgdG8gbWFrZSBwYW5kYSB3b3JrIHJpZ2h0LiAqLwotCWlwaGxlbiA9
IHNpemVvZihzdHJ1Y3QgaXApOwotI2Vsc2UKIAlpcGhsZW4gPSBvZmY7Ci0jZW5kaWYKIAlpZiAo
U0NUUF9HRVRfUEtUX1ZSRklEKGlfcGFrLCB2cmZfaWQpKSB7CiAJCVNDVFBfUkVMRUFTRV9QS1Qo
aV9wYWspOwogCQlyZXR1cm47CiAJfQogCW0gPSBTQ1RQX0hFQURFUl9UT19DSEFJTihpX3Bhayk7
Ci0jaWZkZWYgX19QYW5kYV9fCi0JU0NUUF9ERVRBQ0hfSEVBREVSX0ZST01fQ0hBSU4oaV9wYWsp
OwotCSh2b2lkKVNDVFBfUkVMRUFTRV9IRUFERVIoaV9wYWspOwotI2VuZGlmCiAjaWZkZWYgU0NU
UF9NQlVGX0xPR0dJTkcKIAkvKiBMb2cgaW4gYW55IGlucHV0IG1idWZzICovCiAJaWYgKFNDVFBf
QkFTRV9TWVNDVEwoc2N0cF9sb2dnaW5nX2xldmVsKSAmIFNDVFBfTUJVRl9MT0dHSU5HX0VOQUJM
RSkgewpAQCAtNjE2NywyOCArNjIzOSwxNCBAQCBzY3RwX2lucHV0KGlfcGFrLCB2YV9hbGlzdCkK
IAkJc2N0cF9wYWNrZXRfbG9nKG0pOwogCX0KICNlbmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pCi0jaWYgX19GcmVlQlNEX3ZlcnNpb24gPiAxMDAwMDQ5CisjaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlTQ1RQREJHKFNDVFBfREVCVUdfQ1JD
T0ZGTE9BRCwKIAkgICAgICAgICJzY3RwX2lucHV0KCk6IFBhY2tldCBvZiBsZW5ndGggJWQgcmVj
ZWl2ZWQgb24gJXMgd2l0aCBjc3VtX2ZsYWdzIDB4JWIuXG4iLAogCSAgICAgICAgbS0+bV9wa3Ro
ZHIubGVuLAogCSAgICAgICAgaWZfbmFtZShtLT5tX3BrdGhkci5yY3ZpZiksCiAJICAgICAgICAo
aW50KW0tPm1fcGt0aGRyLmNzdW1fZmxhZ3MsIENTVU1fQklUUyk7Ci0jZWxpZiBfX0ZyZWVCU0Rf
dmVyc2lvbiA+PSA4MDAwMDAKLQlTQ1RQREJHKFNDVFBfREVCVUdfQ1JDT0ZGTE9BRCwKLQkgICAg
ICAgICJzY3RwX2lucHV0KCk6IFBhY2tldCBvZiBsZW5ndGggJWQgcmVjZWl2ZWQgb24gJXMgd2l0
aCBjc3VtX2ZsYWdzIDB4JXguXG4iLAotCSAgICAgICAgbS0+bV9wa3RoZHIubGVuLAotCSAgICAg
ICAgaWZfbmFtZShtLT5tX3BrdGhkci5yY3ZpZiksCi0JICAgICAgICBtLT5tX3BrdGhkci5jc3Vt
X2ZsYWdzKTsKLSNlbHNlCi0JU0NUUERCRyhTQ1RQX0RFQlVHX0NSQ09GRkxPQUQsCi0JICAgICAg
ICAic2N0cF9pbnB1dCgpOiBQYWNrZXQgb2YgbGVuZ3RoICVkIHJlY2VpdmVkIG9uICVzIHdpdGgg
Y3N1bV9mbGFncyAweCV4LlxuIiwKLQkgICAgICAgIG0tPm1fcGt0aGRyLmxlbiwKLQkgICAgICAg
IG0tPm1fcGt0aGRyLnJjdmlmLT5pZl94bmFtZSwKLQkgICAgICAgIG0tPm1fcGt0aGRyLmNzdW1f
ZmxhZ3MpOwotI2VuZGlmCiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZp
bmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlTQ1RQREJHKFNDVFBf
REVCVUdfQ1JDT0ZGTE9BRCwKIAkgICAgICAgICJzY3RwX2lucHV0KCk6IFBhY2tldCBvZiBsZW5n
dGggJWQgcmVjZWl2ZWQgb24gJXMlZCB3aXRoIGNzdW1fZmxhZ3MgMHgleC5cbiIsCiAJICAgICAg
ICBtLT5tX3BrdGhkci5sZW4sCkBAIC02MTk2LDE0ICs2MjU0LDE0IEBAIHNjdHBfaW5wdXQoaV9w
YWssIHZhX2FsaXN0KQogCSAgICAgICAgbS0+bV9wa3RoZHIucmN2aWYtPmlmX3VuaXQsCiAJICAg
ICAgICBtLT5tX3BrdGhkci5jc3VtX2ZsYWdzKTsKICNlbmRpZgotI2lmIGRlZmluZWQoX19XaW5k
b3dzX18pCisjaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJ
U0NUUERCRyhTQ1RQX0RFQlVHX0NSQ09GRkxPQUQsCiAJICAgICAgICAic2N0cF9pbnB1dCgpOiBQ
YWNrZXQgb2YgbGVuZ3RoICVkIHJlY2VpdmVkIG9uICVzIHdpdGggY3N1bV9mbGFncyAweCV4Llxu
IiwKIAkgICAgICAgIG0tPm1fcGt0aGRyLmxlbiwKIAkgICAgICAgIG0tPm1fcGt0aGRyLnJjdmlm
LT5pZl94bmFtZSwKIAkgICAgICAgIG0tPm1fcGt0aGRyLmNzdW1fZmxhZ3MpOwogI2VuZGlmCi0j
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCW1mbG93aWQgPSBtLT5tX3BrdGhkci5mbG93aWQ7CiAJbWZs
b3d0eXBlID0gTV9IQVNIVFlQRV9HRVQobSk7CiAJZmlibnVtID0gTV9HRVRGSUIobSk7CkBAIC02
MjM2LDI2ICs2Mjk0LDIyIEBAIHNjdHBfaW5wdXQoaV9wYWssIHZhX2FsaXN0KQogI2VuZGlmCiAJ
ZHN0LnNpbl9wb3J0ID0gc2gtPmRlc3RfcG9ydDsKIAlkc3Quc2luX2FkZHIgPSBpcC0+aXBfZHN0
OwotI2lmIGRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAJTlRPSFMoaXAtPmlwX2xlbik7CiAjZW5kaWYKLSNpZiBkZWZp
bmVkKF9fVXNlcnNwYWNlX29zX0xpbnV4KSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRv
d3MpCisjaWYgZGVmaW5lZChfX2xpbnV4X18pIHx8IChkZWZpbmVkKF9XSU4zMikgJiYgZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKSkKIAlpcC0+aXBfbGVuID0gbnRvaHMoaXAtPmlwX2xlbik7CiAjZW5k
aWYKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQotI2lmIF9fRnJlZUJTRF92ZXJzaW9uID49IDEw
MDAwMDAKLQlsZW5ndGggPSBudG9ocyhpcC0+aXBfbGVuKTsKKyNpZiBkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCisjaWYgZGVmaW5lZChfX2xpbnV4X18pIHx8IGRlZmluZWQoX1dJTjMyKQorCWxlbmd0
aCA9IGlwLT5pcF9sZW47CiAjZWxzZQogCWxlbmd0aCA9IGlwLT5pcF9sZW4gKyBpcGhsZW47CiAj
ZW5kaWYKKyNlbGlmIGRlZmluZWQoX19GcmVlQlNEX18pCisJbGVuZ3RoID0gbnRvaHMoaXAtPmlw
X2xlbik7CiAjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKIAlsZW5ndGggPSBpcC0+aXBfbGVuICsg
aXBobGVuOwotI2VsaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQotI2lmIGRlZmluZWQoX19Vc2Vy
c3BhY2Vfb3NfTGludXgpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKLQlsZW5n
dGggPSBpcC0+aXBfbGVuOwotI2Vsc2UKLQlsZW5ndGggPSBpcC0+aXBfbGVuICsgaXBobGVuOwot
I2VuZGlmCiAjZWxzZQogCWxlbmd0aCA9IGlwLT5pcF9sZW47CiAjZW5kaWYKQEAgLTYyNzQsNyAr
NjMyOCw3IEBAIHNjdHBfaW5wdXQoaV9wYWssIHZhX2FsaXN0KQogCQlnb3RvIG91dDsKIAl9CiAJ
ZWNuX2JpdHMgPSBpcC0+aXBfdG9zOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJl
ZUJTRF92ZXJzaW9uID49IDgwMDAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAJaWYgKG0tPm1fcGt0aGRyLmNzdW1fZmxhZ3MgJiBDU1VNX1ND
VFBfVkFMSUQpIHsKIAkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfcmVjdmh3Y3JjKTsKIAkJY29tcHV0
ZV9jcmMgPSAwOwpAQCAtNjI5Niw3ICs2MzUwLDcgQEAgc2N0cF9pbnB1dChpX3BhaywgdmFfYWxp
c3QpCiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaCwgY2gsCiAJICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb21wdXRlX2NyYywKIAkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVjbl9iaXRzLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1mbG93dHlwZSwgbWZsb3dpZCwgZmlibnVtLAogI2VuZGlmCiAJICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2cmZfaWQsIHBvcnQpOwpAQCAtNjMwNywxMSArNjM2MSwxMyBA
QCBzY3RwX2lucHV0KGlfcGFrLCB2YV9hbGlzdCkKIAlyZXR1cm47CiB9CiAKLSNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSAmJiBkZWZpbmVkKFNDVFBfTUNPUkVfSU5QVVQpICYmIGRlZmluZWQoU01Q
KQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisj
aWYgZGVmaW5lZChTQ1RQX01DT1JFX0lOUFVUKSAmJiBkZWZpbmVkKFNNUCkKIGV4dGVybiBpbnQg
KnNjdHBfY3B1YXJyeTsKICNlbmRpZgorI2VuZGlmCiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSAxMTAwMDIwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIGludAogc2N0cF9pbnB1dChzdHJ1Y3QgbWJ1
ZiAqKm1wLCBpbnQgKm9mZnAsIGludCBwcm90byBTQ1RQX1VOVVNFRCkKIHsKQEAgLTYzMjUsNyAr
NjM4MSw4IEBAIHZvaWQKIHNjdHBfaW5wdXQoc3RydWN0IG1idWYgKm0sIGludCBvZmYpCiB7CiAj
ZW5kaWYKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBkZWZpbmVkKFNDVFBfTUNPUkVfSU5Q
VVQpICYmIGRlZmluZWQoU01QKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCisjaWYgZGVmaW5lZChTQ1RQX01DT1JFX0lOUFVUKSAmJiBkZWZpbmVk
KFNNUCkKIAlpZiAobXBfbmNwdXMgPiAxKSB7CiAJCXN0cnVjdCBpcCAqaXA7CiAJCXN0cnVjdCBz
Y3RwaGRyICpzaDsKQEAgLTYzNDMsMTEgKzY0MDAsNyBAQCBzY3RwX2lucHV0KHN0cnVjdCBtYnVm
ICptLCBpbnQgb2ZmKQogCQkJaWYgKFNDVFBfQlVGX0xFTihtKSA8IG9mZnNldCkgewogCQkJCWlm
ICgobSA9IG1fcHVsbHVwKG0sIG9mZnNldCkpID09IE5VTEwpIHsKIAkJCQkJU0NUUF9TVEFUX0lO
Q1Ioc2N0cHNfaGRyb3BzKTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0Rf
dmVyc2lvbiA+PSAxMTAwMDIwCiAJCQkJCXJldHVybiAoSVBQUk9UT19ET05FKTsKLSNlbHNlCi0J
CQkJCXJldHVybjsKLSNlbmRpZgogCQkJCX0KIAkJCX0KIAkJCWlwID0gbXRvZChtLCBzdHJ1Y3Qg
aXAgKik7CkBAIC02MzU5LDE1ICs2NDEyLDEyIEBAIHNjdHBfaW5wdXQoc3RydWN0IG1idWYgKm0s
IGludCBvZmYpCiAJCX0KIAkJY3B1X3RvX3VzZSA9IHNjdHBfY3B1YXJyeVtmbG93aWQgJSBtcF9u
Y3B1c107CiAJCXNjdHBfcXVldWVfdG9fbWNvcmUobSwgb2ZmLCBjcHVfdG9fdXNlKTsKLSNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSAxMTAwMDIwCiAJCXJl
dHVybiAoSVBQUk9UT19ET05FKTsKLSNlbHNlCi0JCXJldHVybjsKLSNlbmRpZgogCX0KKyNlbmRp
ZgogI2VuZGlmCiAJc2N0cF9pbnB1dF93aXRoX3BvcnQobSwgb2ZmLCAwKTsKLSNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSAxMTAwMDIwCisjaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlyZXR1cm4gKElQUFJP
VE9fRE9ORSk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0
aW5ldC9zY3RwX2lucHV0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9pbnB1
dC5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggMmQwMWJlYjA4ZGVkOTA4
ZWU4MGMwMmY0YWY1OWZkMjhjMDU1MGE4ZS4uNTVhMTc0YmFlZmFmYTlkYjQyYTU4NWJlZTQzYzdl
MDYwYWIwN2E5NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9pbnB1dC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNy
c2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2lucHV0LmgKQEAgLTMyLDcg
KzMyLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZk
ZWYgX19GcmVlQlNEX18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgogX19GQlNESUQoIiRGcmVlQlNEOiBo
ZWFkL3N5cy9uZXRpbmV0L3NjdHBfaW5wdXQuaCAzMjY2NzIgMjAxNy0xMi0wNyAyMjoxOTowOFog
dHVleGVuICQiKTsKICNlbmRpZgpAQCAtNDcsNyArNDcsNyBAQCBzY3RwX2NvbW1vbl9pbnB1dF9w
cm9jZXNzaW5nKHN0cnVjdCBtYnVmICoqLCBpbnQsIGludCwgaW50LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3Qgc2N0cGhkciAqLCBzdHJ1Y3Qgc2N0cF9jaHVua2hkciAqLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50OF90LAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDhfdCwgdWludDMyX3QsIHVpbnQxNl90LAogI2VuZGlmCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90LCB1aW50MTZfdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAv
dXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9sb2NrX3VzZXJzcGFjZS5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNj
dHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfbG9ja191c2Vyc3BhY2UuaApvbGQgbW9kZSAx
MDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDdiOGIwY2JkZGQyMmZlYjZmNTM1NjEyNTlhOGQy
YTkyYzAwYmQ1MGQuLjBhZWQzNDc3MGFhODJiZTQ1NmEzNjg0NThjMWZiMzcwYWUzMjJkYTkKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfbG9ja191c2Vyc3BhY2UuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAv
dXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9sb2NrX3VzZXJzcGFjZS5oCkBAIC0z
Myw3ICszMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
I2lmZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KIF9fRkJTRElEKCIkRnJlZUJT
RCQiKTsKICNlbmRpZgpAQCAtNjgsNyArNjgsNyBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAj
ZGVmaW5lIFNDVFBfV1FfQUREUl9ERVNUUk9ZKCkKICNkZWZpbmUgU0NUUF9XUV9BRERSX0xPQ0so
KQogI2RlZmluZSBTQ1RQX1dRX0FERFJfVU5MT0NLKCkKLQorI2RlZmluZSBTQ1RQX1dRX0FERFJf
TE9DS19BU1NFUlQoKQogCiAjZGVmaW5lIFNDVFBfSVBJX0FERFJfSU5JVCgpCiAjZGVmaW5lIFND
VFBfSVBJX0FERFJfREVTVFJPWSgpCkBAIC03NiwyMCArNzYsMTkgQEAgX19GQlNESUQoIiRGcmVl
QlNEJCIpOwogI2RlZmluZSBTQ1RQX0lQSV9BRERSX1dMT0NLKCkKICNkZWZpbmUgU0NUUF9JUElf
QUREUl9SVU5MT0NLKCkKICNkZWZpbmUgU0NUUF9JUElfQUREUl9XVU5MT0NLKCkKKyNkZWZpbmUg
U0NUUF9JUElfQUREUl9MT0NLX0FTU0VSVCgpCisjZGVmaW5lIFNDVFBfSVBJX0FERFJfV0xPQ0tf
QVNTRVJUKCkKIAogI2RlZmluZSBTQ1RQX0lQSV9JVEVSQVRPUl9XUV9JTklUKCkKICNkZWZpbmUg
U0NUUF9JUElfSVRFUkFUT1JfV1FfREVTVFJPWSgpCiAjZGVmaW5lIFNDVFBfSVBJX0lURVJBVE9S
X1dRX0xPQ0soKQogI2RlZmluZSBTQ1RQX0lQSV9JVEVSQVRPUl9XUV9VTkxPQ0soKQogCi0KICNk
ZWZpbmUgU0NUUF9JUF9QS1RMT0dfSU5JVCgpCiAjZGVmaW5lIFNDVFBfSVBfUEtUTE9HX0xPQ0so
KQogI2RlZmluZSBTQ1RQX0lQX1BLVExPR19VTkxPQ0soKQogI2RlZmluZSBTQ1RQX0lQX1BLVExP
R19ERVNUUk9ZKCkKIAotCi0KICNkZWZpbmUgU0NUUF9JTlBfUkVBRF9JTklUKF9pbnApCiAjZGVm
aW5lIFNDVFBfSU5QX1JFQURfREVTVFJPWShfaW5wKQogI2RlZmluZSBTQ1RQX0lOUF9SRUFEX0xP
Q0soX2lucCkKQEAgLTEwMCw5ICs5OSwxMCBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAjZGVm
aW5lIFNDVFBfSU5QX0xPQ0tfREVTVFJPWShfaW5wKQogI2RlZmluZSBTQ1RQX0FTT0NfQ1JFQVRF
X0xPQ0tfREVTVFJPWShfaW5wKQogCi0KICNkZWZpbmUgU0NUUF9JTlBfUkxPQ0soX2lucCkKICNk
ZWZpbmUgU0NUUF9JTlBfV0xPQ0soX2lucCkKKyNkZWZpbmUgU0NUUF9JTlBfUkxPQ0tfQVNTRVJU
KF9pbnApCisjZGVmaW5lIFNDVFBfSU5QX1dMT0NLX0FTU0VSVChfaW5wKQogCiAjZGVmaW5lIFND
VFBfSU5QX0xPQ0tfQ09OVEVOREVEKF9pbnApICgwKSAvKiBEb24ndCBrbm93IGlmIHRoaXMgaXMg
cG9zc2libGUgKi8KIApAQCAtMjE0LDE0ICsyMTQsNiBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7
CiAJICAgICAgICB9IHdoaWxlICgwKQogCiAKLS8qIG5vdCBzdXJlIGlmIF9fVXNlcnNwYWNlX18g
bmVlZHMgdGhlc2UgKGJ1dCBjb3BpZWQgbm9uZXRoZWxlc3MuLi4pICovCi0jaWYgZGVmaW5lZChT
Q1RQX1NPX0xPQ0tfVEVTVElORykKLSNkZWZpbmUgU0NUUF9JTlBfU08oc2N0cGlucCkJKHNjdHBp
bnApLT5pcF9pbnAuaW5wLmlucF9zb2NrZXQKLSNkZWZpbmUgU0NUUF9TT0NLRVRfTE9DSyhzbywg
cmVmY250KQotI2RlZmluZSBTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIHJlZmNudCkKLSNlbmRpZgot
Ci0KIC8qIHRoZXNlIHdlcmUgaW4gc2N0cF9sb2NrX2VtcHR5LmggYnV0IGFyZW4ndCBpbiBzY3Rw
X2xvY2tfYnNkLmggLi4uICovCiAjaWYgMAogI2RlZmluZSBTQ1RQX0lQSV9BRERSX0xPQ0soKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfb3MuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3Rw
bGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX29zLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2Rl
IDEwMDc1NQppbmRleCBiMzc0NmRkOTQ2ZjA2MDUzNjdmNDZhOTMxNTkxNGNiMTQ2MWJkNzdiLi5l
MDFiOTU3NzdhM2M1Yjk1ZGI1NDFiODc2MmU0M2U1Yzc5OGQzOGEyCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Vz
cnNjdHBsaWIvbmV0aW5ldC9zY3RwX29zLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRp
bmV0L3NjdHBfb3MuaApAQCAtMzIsOSArMzIsOSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLSNpZmRlZiBfX0ZyZWVCU0RfXworI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+
Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9vcy5oIDIzNTgyOCAy
MDEyLTA1LTIzIDExOjI2OjI4WiB0dWV4ZW4gJCIpOworX19GQlNESUQoIiRGcmVlQlNEOiBoZWFk
L3N5cy9uZXRpbmV0L3NjdHBfb3MuaCAzNjE4NzIgMjAyMC0wNi0wNiAxODoyMDowOVogdHVleGVu
ICQiKTsKICNlbmRpZgogCiAjaWZuZGVmIF9ORVRJTkVUX1NDVFBfT1NfSF8KQEAgLTY0LDcgKzY0
LDcgQEAgX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfb3MuaCAyMzU4
MjggMjAxMi0wNS0yMyAxMToyNjoyOFogdHVleGUKICAqIFNDVFBfWk9ORV9ERVNUUk9ZKHpvbmUp
CiAgKi8KIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfb3Nf
YnNkLmg+CiAjZWxzZQogI2RlZmluZSBNT0RVTEVfR0xPQkFMKF9CKSAoX0IpCkBAIC03NCwxNSAr
NzQsMTEgQEAgX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfb3MuaCAy
MzU4MjggMjAxMi0wNS0yMyAxMToyNjoyOFogdHVleGUKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBf
b3NfdXNlcnNwYWNlLmg+CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRl
ZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPG5l
dGluZXQvc2N0cF9vc19tYWNvc3guaD4KICNlbmRpZgogCi0jaWYgZGVmaW5lZChfX1BhbmRhX18p
Ci0jaW5jbHVkZSA8aXAvc2N0cC9zY3RwX29zX2lveC5oPgotI2VuZGlmCi0KLSNpZiBkZWZpbmVk
KF9fV2luZG93c19fKQorI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9vc193aW5kb3dzLmg+CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91
c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfb3NfdXNlcnNwYWNlLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAv
dXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9vc191c2Vyc3BhY2UuaApvbGQgbW9k
ZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDg2MTMzMDFhYjA4ZWFmNmUxOWUzODI4MzE1
ZWMwZDgyYTI0Y2Y3ZDguLjNhOTQwN2E4MjJiZTI5MGQ3NzViZTJkZTEyNjZiODEwMmY0YWQ1MDMK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3Jz
Y3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfb3NfdXNlcnNwYWNlLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfb3NfdXNlcnNwYWNlLmgKQEAgLTQz
LDEyICs0MywxMiBAQAogCiAjaW5jbHVkZSA8ZXJybm8uaD4KIAotI2lmIGRlZmluZWQoX19Vc2Vy
c3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKICNpbmNsdWRlIDx3aW5zb2Nr
Mi5oPgogI2luY2x1ZGUgPHdzMnRjcGlwLmg+CiAjaW5jbHVkZSA8aXBobHBhcGkuaD4KLSNpbmNs
dWRlIDxNc3dzb2NrLmg+Ci0jaW5jbHVkZSA8V2luZG93cy5oPgorI2luY2x1ZGUgPG1zd3NvY2su
aD4KKyNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjaW5jbHVkZSAidXNlcl9lbnZpcm9ubWVudC5oIgog
dHlwZWRlZiBDUklUSUNBTF9TRUNUSU9OIHVzZXJsYW5kX211dGV4X3Q7CiAjaWYgV0lOVkVSIDwg
MHgwNjAwCkBAIC04MCwzMyArODAsMzAgQEAgdHlwZWRlZiBIQU5ETEUgdXNlcmxhbmRfdGhyZWFk
X3Q7CiAjZGVmaW5lIElQVkVSU0lPTiAgNAogI2RlZmluZSBNQVhUVEwgICAgIDI1NQogLyogVlMy
MDEwIGNvbWVzIHdpdGggc3RkaW50LmggKi8KLSNpZiBfTVNDX1ZFUiA+PSAxNjAwCisjaWYgIWRl
ZmluZWQoX01TQ19WRVIpIHx8IChfTVNDX1ZFUiA+PSAxNjAwKQogI2luY2x1ZGUgPHN0ZGludC5o
PgogI2Vsc2UKLSNkZWZpbmUgdWludDY0X3QgICB1bnNpZ25lZCBfX2ludDY0Ci0jZGVmaW5lIHVp
bnQzMl90ICAgdW5zaWduZWQgX19pbnQzMgotI2RlZmluZSBpbnQzMl90ICAgIF9faW50MzIKLSNk
ZWZpbmUgdWludDE2X3QgICB1bnNpZ25lZCBfX2ludDE2Ci0jZGVmaW5lIGludDE2X3QgICAgX19p
bnQxNgotI2RlZmluZSB1aW50OF90ICAgIHVuc2lnbmVkIF9faW50OAotI2RlZmluZSBpbnQ4X3Qg
ICAgIF9faW50OAordHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0IHVpbnQ2NF90OwordHlwZWRlZiB1
bnNpZ25lZCBfX2ludDMyIHVpbnQzMl90OwordHlwZWRlZiBfX2ludDMyICAgICAgICAgIGludDMy
X3Q7Cit0eXBlZGVmIHVuc2lnbmVkIF9faW50MTYgdWludDE2X3Q7Cit0eXBlZGVmIF9faW50MTYg
ICAgICAgICAgaW50MTZfdDsKK3R5cGVkZWYgdW5zaWduZWQgX19pbnQ4ICB1aW50OF90OwordHlw
ZWRlZiBfX2ludDggICAgICAgICAgIGludDhfdDsKICNlbmRpZgogI2lmbmRlZiBfU0laRV9UX0RF
RklORUQKLSNkZWZpbmUgc2l6ZV90ICAgICBfX2ludDMyCi0jZW5kaWYKLSNkZWZpbmUgdV9sb25n
ICAgICB1bnNpZ25lZCBfX2ludDY0Ci0jZGVmaW5lIHVfaW50ICAgICAgdW5zaWduZWQgX19pbnQz
MgotI2RlZmluZSB1X2ludDMyX3QgIHVuc2lnbmVkIF9faW50MzIKLSNkZWZpbmUgdV9pbnQxNl90
ICB1bnNpZ25lZCBfX2ludDE2Ci0jZGVmaW5lIHVfaW50OF90ICAgdW5zaWduZWQgX19pbnQ4Ci0j
ZGVmaW5lIHVfY2hhciAgICAgdW5zaWduZWQgY2hhcgotI2RlZmluZSBuX3Nob3J0ICAgIHVuc2ln
bmVkIF9faW50MTYKLSNkZWZpbmUgdV9zaG9ydCAgICB1bnNpZ25lZCBfX2ludDE2Ci0jZGVmaW5l
IG5fdGltZSAgICAgdW5zaWduZWQgX19pbnQzMgotI2RlZmluZSBzYV9mYW1pbHlfdCB1bnNpZ25l
ZCBfX2ludDgKLSNkZWZpbmUgc3NpemVfdCAgICBfX2ludDY0CisjdHlwZWRlZiBfX2ludDMyICAg
ICAgICAgc2l6ZV90OworI2VuZGlmCit0eXBlZGVmIHVuc2lnbmVkIF9faW50MzIgdV9pbnQ7Cit0
eXBlZGVmIHVuc2lnbmVkIGNoYXIgICAgdV9jaGFyOwordHlwZWRlZiB1bnNpZ25lZCBfX2ludDE2
IHVfc2hvcnQ7Cit0eXBlZGVmIHVuc2lnbmVkIF9faW50OCAgc2FfZmFtaWx5X3Q7CisjaWZuZGVm
IF9TU0laRV9UX0RFRklORUQKK3R5cGVkZWYgX19pbnQ2NCAgICAgICAgICBzc2l6ZV90OworI2Vu
ZGlmCisjaWYgIWRlZmluZWQoX19NSU5HVzMyX18pCiAjZGVmaW5lIF9fZnVuY19fCV9fRlVOQ1RJ
T05fXwotCisjZW5kaWYKICNpZm5kZWYgRVdPVUxEQkxPQ0sKICNkZWZpbmUgRVdPVUxEQkxPQ0sg
ICAgICAgICAgICAgV1NBRVdPVUxEQkxPQ0sKICNlbmRpZgpAQCAtMjIwLDkgKzIxNywxOSBAQCB0
eXBlZGVmIGNoYXIqIGNhZGRyX3Q7CiAKICNkZWZpbmUgYnplcm8oYnVmLCBsZW4pIG1lbXNldChi
dWYsIDAsIGxlbikKICNkZWZpbmUgYmNvcHkoc3JjS2V5LCBkc3RLZXksIGxlbikgbWVtY3B5KGRz
dEtleSwgc3JjS2V5LCBsZW4pCi0jaWYgX01TQ19WRVIgPCAxOTAwCi0jZGVmaW5lIHNucHJpbnRm
KGRhdGEsIHNpemUsIGZvcm1hdCwgLi4uKSBfc25wcmludGZfcyhkYXRhLCBzaXplLCBfVFJVTkNB
VEUsIGZvcm1hdCwgX19WQV9BUkdTX18pCisKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01T
Q19WRVIgPCAxOTAwKSAmJiAhZGVmaW5lZChfX01JTkdXMzJfXykKKyNkZWZpbmUgU0NUUF9TTlBS
SU5URihkYXRhLCBzaXplLCBmb3JtYXQsIC4uLikgCQkJCQlcCisJaWYgKF9zbnByaW50Zl9zKGRh
dGEsIHNpemUsIF9UUlVOQ0FURSwgZm9ybWF0LCBfX1ZBX0FSR1NfXykgPCAwKSB7CVwKKwkJZGF0
YVswXSA9ICdcMCc7CQkJCQkJCVwKKwl9CisjZWxzZQorI2RlZmluZSBTQ1RQX1NOUFJJTlRGKGRh
dGEsIC4uLikJCQkJCQlcCisJaWYgKHNucHJpbnRmKGRhdGEsIF9fVkFfQVJHU19fKSA8IDAgKSB7
CQkJCQlcCisJCWRhdGFbMF0gPSAnXDAnOwkJCQkJCQlcCisJfQogI2VuZGlmCisKICNkZWZpbmUg
aW5saW5lIF9faW5saW5lCiAjZGVmaW5lIF9faW5saW5lX18gX19pbmxpbmUKICNkZWZpbmUJTVNH
X0VPUgkJMHg4CQkvKiBkYXRhIGNvbXBsZXRlcyByZWNvcmQgKi8KQEAgLTI3Niw3ICsyODMsNyBA
QCB0eXBlZGVmIGNoYXIqIGNhZGRyX3Q7CiAKICNlbHNlIC8qICFkZWZpbmVkKFVzZXJzcGFjZV9v
c19XaW5kb3dzKSAqLwogI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNpZiBkZWZpbmVkKF9fVXNl
cnNwYWNlX29zX0RyYWdvbkZseSkgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19GcmVlQlNEKSB8
fCBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0xpbnV4KSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX29z
X05ldEJTRCkgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19PcGVuQlNEKSB8fCBkZWZpbmVkKF9f
VXNlcnNwYWNlX29zX05hQ2wpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRnVjaHNpYSkKKyNp
ZiBkZWZpbmVkKF9fRHJhZ29uRmx5X18pIHx8IGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmlu
ZWQoX19saW51eF9fKSB8fCBkZWZpbmVkKF9fTmV0QlNEX18pIHx8IGRlZmluZWQoX19PcGVuQlNE
X18pIHx8IGRlZmluZWQoX19uYXRpdmVfY2xpZW50X18pIHx8IGRlZmluZWQoX19GdWNoc2lhX18p
CiAjaW5jbHVkZSA8cHRocmVhZC5oPgogI2VuZGlmCiB0eXBlZGVmIHB0aHJlYWRfbXV0ZXhfdCB1
c2VybGFuZF9tdXRleF90OwpAQCAtMjg0LDcgKzI5MSw3IEBAIHR5cGVkZWYgcHRocmVhZF9jb25k
X3QgdXNlcmxhbmRfY29uZF90OwogdHlwZWRlZiBwdGhyZWFkX3QgdXNlcmxhbmRfdGhyZWFkX3Q7
CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykgfHwgZGVmaW5l
ZChfX1VzZXJzcGFjZV9vc19OYUNsKQorI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9f
bmF0aXZlX2NsaWVudF9fKQogCiAjZGVmaW5lIElGTkFNU0laIDY0CiAKQEAgLTM3OCw0MyArMzg1
LDkgQEAgc3RydWN0IGlma3BpIHsKIAkJaW50IGlma192YWx1ZTsKIAl9IGlma19kYXRhOwogfTsK
LQotc3RydWN0IGlmcmVxIHsKLQljaGFyICAgIGlmcl9uYW1lWzE2XTsKLQl1bmlvbiB7Ci0JCXN0
cnVjdCBzb2NrYWRkciBpZnJ1X2FkZHI7Ci0JCXN0cnVjdCBzb2NrYWRkciBpZnJ1X2RzdGFkZHI7
Ci0JCXN0cnVjdCBzb2NrYWRkciBpZnJ1X2Jyb2FkYWRkcjsKLQkJc2hvcnQgIGlmcnVfZmxhZ3M7
Ci0JCWludCBpZnJ1X21ldHJpYzsKLQkJaW50IGlmcnVfbXR1OwotCQlpbnQgaWZydV9waHlzOwot
CQlpbnQgaWZydV9tZWRpYTsKLQkJaW50ICAgIGlmcnVfaW50dmFsOwotCQljaGFyKiAgaWZydV9k
YXRhOwotCQlzdHJ1Y3QgaWZkZXZtdHUgaWZydV9kZXZtdHU7Ci0JCXN0cnVjdCBpZmtwaSAgaWZy
dV9rcGk7Ci0JCXVpbnQzMl90IGlmcnVfd2FrZV9mbGFnczsKLQl9IGlmcl9pZnJ1OwotI2RlZmlu
ZSBpZnJfYWRkciAgICAgICAgaWZyX2lmcnUuaWZydV9hZGRyCi0jZGVmaW5lIGlmcl9kc3RhZGRy
ICAgICBpZnJfaWZydS5pZnJ1X2RzdGFkZHIKLSNkZWZpbmUgaWZyX2Jyb2FkYWRkciAgIGlmcl9p
ZnJ1LmlmcnVfYnJvYWRhZGRyCi0jZGVmaW5lIGlmcl9mbGFncyAgICAgICBpZnJfaWZydS5pZnJ1
X2ZsYWdzWzBdCi0jZGVmaW5lIGlmcl9wcmV2ZmxhZ3MgICBpZnJfaWZydS5pZnJ1X2ZsYWdzWzFd
Ci0jZGVmaW5lIGlmcl9tZXRyaWMgICAgICBpZnJfaWZydS5pZnJ1X21ldHJpYwotI2RlZmluZSBp
ZnJfbXR1ICAgICAgICAgaWZyX2lmcnUuaWZydV9tdHUKLSNkZWZpbmUgaWZyX3BoeXMgICAgICAg
IGlmcl9pZnJ1LmlmcnVfcGh5cwotI2RlZmluZSBpZnJfbWVkaWEgICAgICAgaWZyX2lmcnUuaWZy
dV9tZWRpYQotI2RlZmluZSBpZnJfZGF0YSAgICAgICAgaWZyX2lmcnUuaWZydV9kYXRhCi0jZGVm
aW5lIGlmcl9kZXZtdHUgICAgICBpZnJfaWZydS5pZnJ1X2Rldm10dQotI2RlZmluZSBpZnJfaW50
dmFsICAgICAgaWZyX2lmcnUuaWZydV9pbnR2YWwKLSNkZWZpbmUgaWZyX2twaSAgICAgICAgIGlm
cl9pZnJ1LmlmcnVfa3BpCi0jZGVmaW5lIGlmcl93YWtlX2ZsYWdzICBpZnJfaWZydS5pZnJ1X3dh
a2VfZmxhZ3MKLX07Ci0KICNlbmRpZgogCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5k
b3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogaW50IFdpbl9nZXRpZmFkZHJzKHN0cnVjdCBpZmFk
ZHJzKiopOwogI2RlZmluZSBnZXRpZmFkZHJzKGludGVyZmFjZXMpICAoaW50KVdpbl9nZXRpZmFk
ZHJzKGludGVyZmFjZXMpCiBpbnQgd2luX2lmX25hbWV0b2luZGV4KGNvbnN0IGNoYXIgKik7CkBA
IC00MjUsOSArMzk4LDkgQEAgaW50IHdpbl9pZl9uYW1ldG9pbmRleChjb25zdCBjaGFyICopOwog
I2RlZmluZSBtdHhfdW5sb2NrKGFyZzEpCiAjZGVmaW5lIG10eF9hc3NlcnQoYXJnMSxhcmcyKQog
I2RlZmluZSBNQV9PV05FRCA3IC8qIHN5cy9tdXRleC5oIHR5cGljYWxseSBvbiBGcmVlQlNEICov
Ci0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRnJlZUJTRCkKKyNpZiAhZGVmaW5lZChfX0Zy
ZWVCU0RfXykKIHN0cnVjdCBtdHgge2ludCBkdW1teTt9OwotI2lmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX29zX05ldEJTRCkKKyNpZiAhZGVmaW5lZChfX05ldEJTRF9fKQogc3RydWN0IHNlbGluZm8g
e2ludCBkdW1teTt9OwogI2VuZGlmCiBzdHJ1Y3Qgc3gge2ludCBkdW1teTt9OwpAQCAtNDM1LDYg
KzQwOCw3IEBAIHN0cnVjdCBzeCB7aW50IGR1bW15O307CiAKICNpbmNsdWRlIDxzdGRpby5oPgog
I2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGJvb2wuaD4KIC8qICNpbmNsdWRlIDxz
eXMvcGFyYW0uaD4gIGluIEZyZWVCU0QgZGVmaW5lcyBNU0laRSAqLwogLyogI2luY2x1ZGUgPHN5
cy9rdHIuaD4gKi8KIC8qICNpbmNsdWRlIDxzeXMvc3lzdG0uaD4gKi8KQEAgLTQ1NywyMiArNDMx
LDIyIEBAIHN0cnVjdCBzeCB7aW50IGR1bW15O307CiAjaW5jbHVkZSA8dXNlcl9tYnVmLmg+CiAv
KiAjaW5jbHVkZSA8c3lzL3Vpby5oPiAqLwogLyogI2luY2x1ZGUgPHN5cy9sb2NrLmg+ICovCi0j
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPiA2MDIwMDAKKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1
ZGUgPHN5cy9yd2xvY2suaD4KICNlbmRpZgogLyogI2luY2x1ZGUgPHN5cy9rdGhyZWFkLmg+ICov
Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPiA2MDIwMDAK
KyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lu
Y2x1ZGUgPHN5cy9wcml2Lmg+CiAjZW5kaWYKIC8qICNpbmNsdWRlIDxzeXMvcmFuZG9tLmg+ICov
CiAjaW5jbHVkZSA8bGltaXRzLmg+CiAvKiAjaW5jbHVkZSA8bWFjaGluZS9jcHUuaD4gKi8KIAot
I2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRGFyd2luKQorI2lmIGRlZmluZWQoX19BUFBMRV9f
KQogLyogd2FzIGEgMCBieXRlIGZpbGUuICBuZWVkZWQgZm9yIHN0cnVjdHMgaWZfZGF0YSg2NCkg
YW5kIG5ldF9ldmVudF9kYXRhICovCiAjaW5jbHVkZSA8bmV0L2lmX3Zhci5oPgogI2VuZGlmCi0j
aWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19GcmVlQlNEKQorI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pCiAjaW5jbHVkZSA8bmV0L2lmX3R5cGVzLmg+CiAvKiAjaW5jbHVkZSA8bmV0L2lmX3Zhci5o
PiB3YXMgYSAwIGJ5dGUgZmlsZS4gIGNhdXNlcyBzdHJ1Y3QgbXR4IHJlZGVmaW5pdGlvbiAqLwog
I2VuZGlmCkBAIC00ODAsNyArNDU0LDcgQEAgc3RydWN0IHN4IHtpbnQgZHVtbXk7fTsKICAqICB1
c2Vyc3BhY2UgYXMgd2VsbD8gKi8KIC8qIG9uIEZyZWVCU0QsIHRoaXMgcmVzdWx0cyBpbiBhIHJl
ZGVmaW50aW9uIG9mIHN0cnVjdCByb3V0ZSAqLwogLyogI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPiAq
LwotI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX29zX05hQ2wpCisjaWYgIWRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX25hdGl2
ZV9jbGllbnRfXykKICNpbmNsdWRlIDxuZXQvaWYuaD4KICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+
CiAjaW5jbHVkZSA8bmV0aW5ldC9pbl9zeXN0bS5oPgpAQCAtNDk2LDcgKzQ3MCw3IEBAIHN0cnVj
dCBzeCB7aW50IGR1bW15O307CiAKIC8qIGZvciBnZXRpZmFkZHJzICovCiAjaW5jbHVkZSA8c3lz
L3R5cGVzLmg+Ci0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiAhZGVm
aW5lZChfV0lOMzIpCiAjaWYgZGVmaW5lZChJTkVUKSB8fCBkZWZpbmVkKElORVQ2KQogI2luY2x1
ZGUgPGlmYWRkcnMuaD4KICNlbmRpZgpAQCAtNTA2LDYgKzQ4MCw4IEBAIHN0cnVjdCBzeCB7aW50
IGR1bW15O307CiAKIC8qIGZvciBjbG9zZSwgZXRjLiAqLwogI2luY2x1ZGUgPHVuaXN0ZC5oPgor
LyogZm9yIGdldHRpbWVvZmRheSAqLworI2luY2x1ZGUgPHN5cy90aW1lLmg+CiAjZW5kaWYKIAog
LyogbG90cyBvZiBlcnJubydzIHVzZWQgYW5kIG5lZWRlZCBpbiB1c2Vyc3BhY2UgKi8KQEAgLTUx
Myw3ICs0ODksNyBAQCBzdHJ1Y3Qgc3gge2ludCBkdW1teTt9OwogLyogZm9yIG9mZnNldG9mICov
CiAjaW5jbHVkZSA8c3RkZGVmLmg+CiAKLSNpZiBkZWZpbmVkKFNDVFBfUFJPQ0VTU19MRVZFTF9M
T0NLUykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKFND
VFBfUFJPQ0VTU19MRVZFTF9MT0NLUykgJiYgIWRlZmluZWQoX1dJTjMyKQogLyogZm9yIHB0aHJl
YWRfbXV0ZXhfbG9jaywgcHRocmVhZF9tdXRleF91bmxvY2ssIGV0Yy4gKi8KICNpbmNsdWRlIDxw
dGhyZWFkLmg+CiAjZW5kaWYKQEAgLTUyNCwyMSArNTAwLDIxIEBAIHN0cnVjdCBzeCB7aW50IGR1
bW15O307CiAjZW5kaWYJCQkJLyogSVBTRUMgKi8KIAogI2lmZGVmIElORVQ2Ci0jaWYgZGVmaW5l
ZChfX1VzZXJzcGFjZV9vc19GcmVlQlNEKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCiAjaW5j
bHVkZSA8c3lzL2RvbWFpbi5oPgogI2VuZGlmCiAjaWZkZWYgSVBTRUMKICNpbmNsdWRlIDxuZXRp
cHNlYy9pcHNlYzYuaD4KICNlbmRpZgotI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRv
d3MpCisjaWYgIWRlZmluZWQoX1dJTjMyKQogI2luY2x1ZGUgPG5ldGluZXQvaXA2Lmg+CiAjZW5k
aWYKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0RhcndpbikgfHwgZGVmaW5lZChfX1VzZXJz
cGFjZV9vc19GcmVlQlNEKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0xpbnV4KSB8fCBkZWZp
bmVkKF9fVXNlcnNwYWNlX29zX05ldEJTRCkgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19PcGVu
QlNEKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfX0FQ
UExFX18pIHx8IGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19saW51eF9fKSB8fCBk
ZWZpbmVkKF9fTmV0QlNEX18pIHx8IGRlZmluZWQoX19PcGVuQlNEX18pIHx8IGRlZmluZWQoX1dJ
TjMyKQogI2luY2x1ZGUgInVzZXJfaXA2X3Zhci5oIgogI2Vsc2UKICNpbmNsdWRlIDxuZXRpbmV0
Ni9pcDZfdmFyLmg+CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0ZyZWVCU0Qp
CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKICNpbmNsdWRlIDxuZXRpbmV0Ni9pbjZfcGNiLmg+
CiAjaW5jbHVkZSA8bmV0aW5ldDYvaXA2cHJvdG9zdy5oPgogLyogI2luY2x1ZGUgPG5ldGluZXQ2
L25kNi5oPiB3YXMgYSAwIGJ5dGUgZmlsZSAqLwpAQCAtNTUzLDcgKzUyOSw3IEBAIHN0cnVjdCBz
eCB7aW50IGR1bW15O307CiAKICNpbmNsdWRlICJuZXRpbmV0L3NjdHBfc2hhMS5oIgogCi0jaWYg
X19GcmVlQlNEX3ZlcnNpb24gPj0gNzAwMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxuZXRpbmV0L2lwX29wdGlvbnMuaD4K
ICNlbmRpZgogCkBAIC01NjIsMTEgKzUzOCw2IEBAIHN0cnVjdCBzeCB7aW50IGR1bW15O307CiAJ
CVNDVFBfQkFTRV9WQVIoZGVidWdfcHJpbnRmKShfX1ZBX0FSR1NfXyk7IFwKIAl9CiAKLSNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKQotI2lmbmRlZiBpbjZwY2IKLSNkZWZpbmUgaW42cGNiCQlpbnBj
YgotI2VuZGlmCi0jZW5kaWYKIC8qIERlY2xhcmUgYWxsIHRoZSBtYWxsb2MgbmFtZXMgZm9yIGFs
bCB0aGUgdmFyaW91cyBtYWxsb2NzICovCiBNQUxMT0NfREVDTEFSRShTQ1RQX01fTUFQKTsKIE1B
TExPQ19ERUNMQVJFKFNDVFBfTV9TVFJNSSk7CkBAIC02MTEsMTIgKzU4MiwxMiBAQCBNQUxMT0Nf
REVDTEFSRShTQ1RQX01fU09DS09QVCk7CiAvKgogICoKICAqLwotI2lmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX29zX0RhcndpbikKKyNpZiAhZGVmaW5lZChfX0FQUExFX18pCiAjZGVmaW5lIFVTRVJf
QUREUl9OVUxMCShOVUxMKQkJLyogRklYIE1FOiB0ZW1wICovCiAjZW5kaWYKIAotI2lmIGRlZmlu
ZWQoU0NUUF9ERUJVRykKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfY29uc3RhbnRzLmg+CisjaWYg
ZGVmaW5lZChTQ1RQX0RFQlVHKQogI2RlZmluZSBTQ1RQREJHKGxldmVsLCAuLi4pCQkJCQlcCiB7
CQkJCQkJCQlcCiAJZG8gewkJCQkJCQlcCkBAIC02NzAsNyArNjQxLDcgQEAgTUFMTE9DX0RFQ0xB
UkUoU0NUUF9NX1NPQ0tPUFQpOwogI2RlZmluZSBTQ1RQX1ZSRl9JRk5fSEFTSF9TSVpFCTMKICNk
ZWZpbmUJU0NUUF9JTklUX1ZSRl9UQUJMRUlEKHZyZikKIAotI2lmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX29zX1dpbmRvd3MpCisjaWYgIWRlZmluZWQoX1dJTjMyKQogI2RlZmluZSBTQ1RQX0lGTl9J
U19JRlRfTE9PUChpZm4pIChzdHJuY21wKChpZm4pLT5pZm5fbmFtZSwgImxvIiwgMikgPT0gMCkK
IC8qIEJTRCBkZWZpbml0aW9uICovCiAvKiAjZGVmaW5lIFNDVFBfUk9VVEVfSVNfUkVBTF9MT09Q
KHJvKSAoKHJvKS0+cm9fcnQgJiYgKHJvKS0+cm9fcnQtPnJ0X2lmYSAmJiAocm8pLT5yb19ydC0+
cnRfaWZhLT5pZmFfaWZwICYmIChybyktPnJvX3J0LT5ydF9pZmEtPmlmYV9pZnAtPmlmX3R5cGUg
PT0gSUZUX0xPT1ApICovCkBAIC04MDQsNyArNzc1LDcgQEAgc2N0cF9oYXNoZnJlZWRlc3Ryb3ko
dm9pZCAqdmhhc2h0YmwsIHN0cnVjdCBtYWxsb2NfdHlwZSAqdHlwZSwgdV9sb25nIGhhc2htYXNr
KTsKICNkZWZpbmUgS1RSX1NVQlNZUyAxCiAKIC8qIFRoZSBwYWNrZWQgZGVmaW5lIGZvciA2NCBi
aXQgcGxhdGZvcm1zICovCi0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNp
ZiAhZGVmaW5lZChfV0lOMzIpCiAjZGVmaW5lIFNDVFBfUEFDS0VEIF9fYXR0cmlidXRlX18oKHBh
Y2tlZCkpCiAjZGVmaW5lIFNDVFBfVU5VU0VEIF9fYXR0cmlidXRlX18oKHVudXNlZCkpCiAjZWxz
ZQpAQCAtODMzLDYgKzgwNCwxMyBAQCBzY3RwX2hhc2hmcmVlZGVzdHJveSh2b2lkICp2aGFzaHRi
bCwgc3RydWN0IG1hbGxvY190eXBlICp0eXBlLCB1X2xvbmcgaGFzaG1hc2spOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1fQUxJR04obSwgbGVuKTsgXAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KIAorI2lmICFkZWZpbmVkKF9XSU4zMikKKyNkZWZp
bmUgU0NUUF9TTlBSSU5URihkYXRhLCAuLi4pCQkJCQkJXAorCWlmIChzbnByaW50ZihkYXRhLCBf
X1ZBX0FSR1NfXykgPCAwKSB7CQkJCQlcCisJCWRhdGFbMF0gPSAnXDAnOwkJCQkJCQlcCisJfQor
I2VuZGlmCisKIC8qIFdlIG1ha2UgaXQgc28gaWYgeW91IGhhdmUgdXAgdG8gNCB0aHJlYWRzCiAg
KiB3cml0dGluZyBiYXNlZCBvbiB0aGUgZGVmYXVsdCBzaXplIG9mCiAgKiB0aGUgcGFja2V0IGxv
ZyA2NSBrLCB0aGF0IHdvdWxkIGJlCkBAIC04OTEsNyArODY5LDYgQEAgc3RhdGljIGlubGluZSB2
b2lkIHNjdHBfdXNlcnNwYWNlX3J0ZnJlZShzY3RwX3J0ZW50cnlfdCAqcnQpCiAJCXJldHVybjsK
IAl9CiAJZnJlZShydCk7Ci0JcnQgPSBOVUxMOwogfQogI2RlZmluZSBydGZyZWUoYXJnMSkgc2N0
cF91c2Vyc3BhY2VfcnRmcmVlKGFyZzEpCiAKQEAgLTkxMiwxMCArODg5LDYgQEAgaW50IHNjdHBf
dXNlcnNwYWNlX2dldF9tdHVfZnJvbV9pZm4odWludDMyX3QgaWZfaW5kZXgsIGludCBhZik7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnQtPnJ0X3Jt
eC5ybXhfbXR1ID0gbXR1OyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSB3aGlsZSgwKQogCi0vKiAoZGUtKXJlZ2lzdGVyIGludGVyZmFjZSBldmVudCBub3Rp
ZmljYXRpb25zICovCi0jZGVmaW5lIFNDVFBfUkVHSVNURVJfSU5URVJGQUNFKGlmaGFuZGxlLCBh
ZikKLSNkZWZpbmUgU0NUUF9ERVJFR0lTVEVSX0lOVEVSRkFDRShpZmhhbmRsZSwgYWYpCi0KIAog
LyoqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKiBUaGVzZSBhcmUgZm9yIGxvZ2dpbmcgKi8K
QEAgLTk2NSwxMSArOTM4LDExIEBAIGludCBzY3RwX3VzZXJzcGFjZV9nZXRfbXR1X2Zyb21faWZu
KHVpbnQzMl90IGlmX2luZGV4LCBpbnQgYWYpOwogICovCiAKIC8qIGdldCB0aGUgdjYgaG9wIGxp
bWl0ICovCi0jZGVmaW5lIFNDVFBfR0VUX0hMSU0oaW5wLCBybykgMTI4IC8qIEFzIGRvbmUgZm9y
IF9fV2luZG93c19fICovCisjZGVmaW5lIFNDVFBfR0VUX0hMSU0oaW5wLCBybykgMTI4CiAjZGVm
aW5lIElQdjZfSE9QX0xJTUlUIDEyOAogCiAvKiBpcyB0aGUgZW5kcG9pbnQgdjZvbmx5PyAqLwot
I2RlZmluZSBTQ1RQX0lQVjZfVjZPTkxZKGlucCkJKCgoc3RydWN0IGlucGNiICopaW5wKS0+aW5w
X2ZsYWdzICYgSU42UF9JUFY2X1Y2T05MWSkKKyNkZWZpbmUgU0NUUF9JUFY2X1Y2T05MWShzY3Rw
X2lucGNiKQkoKHNjdHBfaW5wY2IpLT5pcF9pbnAuaW5wLmlucF9mbGFncyAmIElONlBfSVBWNl9W
Nk9OTFkpCiAvKiBpcyB0aGUgc29ja2V0IG5vbi1ibG9ja2luZz8gKi8KICNkZWZpbmUgU0NUUF9T
T19JU19OQklPKHNvKQkoKHNvKS0+c29fc3RhdGUgJiBTU19OQklPKQogI2RlZmluZSBTQ1RQX1NF
VF9TT19OQklPKHNvKQkoKHNvKS0+c29fc3RhdGUgfD0gU1NfTkJJTykKQEAgLTEwMDQsNyArOTc3
LDcgQEAgaW50IHNjdHBfdXNlcnNwYWNlX2dldF9tdHVfZnJvbV9pZm4odWludDMyX3QgaWZfaW5k
ZXgsIGludCBhZik7CiAKIC8qIHNjdHBfcGNiLmggKi8KIAotI2lmIGRlZmluZWQoX19Vc2Vyc3Bh
Y2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKICNkZWZpbmUgU0hVVF9SRCAxCiAj
ZGVmaW5lIFNIVVRfV1IgMgogI2RlZmluZSBTSFVUX1JEV1IgMwpAQCAtMTA3Nyw3ICsxMDUwLDcg
QEAgZXh0ZXJuIHZvaWQgc2N0cF91c2Vyc3BhY2VfaXA2X291dHB1dChpbnQgKnJlc3VsdCwgc3Ry
dWN0IG1idWYgKm9fcGFrLAogeyBcCiAJaWYgKHN0Y2IgJiYgc3RjYi0+c2N0cF9lcCkgXAogCQly
ZXN1bHQgPSBpcDZfb3V0cHV0KG9fcGFrLCBcCi0JCQkJICAgICgoc3RydWN0IGluNnBjYiAqKShz
dGNiLT5zY3RwX2VwKSktPmluNnBfb3V0cHV0b3B0cywgXAorCQkJCSAgICAoKHN0cnVjdCBpbnBj
YiAqKShzdGNiLT5zY3RwX2VwKSktPmluNnBfb3V0cHV0b3B0cywgXAogCQkJCSAgICAocm8pLCAw
LCAwLCBpZnAsIE5VTEwpOyBcCiAJZWxzZSBcCiAJCXJlc3VsdCA9IGlwNl9vdXRwdXQob19wYWss
IE5VTEwsIChybyksIDAsIDAsIGlmcCwgTlVMTCk7IFwKQEAgLTEwOTEsMTIgKzEwNjQsMTIgQEAg
c2N0cF9nZXRfbWJ1Zl9mb3JfbXNnKHVuc2lnbmVkIGludCBzcGFjZV9uZWVkZWQsIGludCB3YW50
X2hlYWRlciwgaW50IGhvdywgaW50IGEKIC8qIHdpdGggdGhlIGN1cnJlbnQgaW5jbHVkZWQgZmls
ZXMsIHRoaXMgaXMgZGVmaW5lZCBpbiBMaW51eCBidXQKICAqICBpbiBGcmVlQlNELCBpdCBpcyBi
ZWhpbmQgYSBfS0VSTkVMIGluIHN5cy9zb2NrZXQuaCAuLi4KICAqLwotI2lmIGRlZmluZWQoX19V
c2Vyc3BhY2Vfb3NfRHJhZ29uRmx5KSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0ZyZWVCU0Qp
IHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfT3BlbkJTRCkgfHwgZGVmaW5lZChfX1VzZXJzcGFj
ZV9vc19OYUNsKQorI2lmIGRlZmluZWQoX19EcmFnb25GbHlfXykgfHwgZGVmaW5lZChfX0ZyZWVC
U0RfXykgfHwgZGVmaW5lZChfX09wZW5CU0RfXykgfHwgZGVmaW5lZChfX25hdGl2ZV9jbGllbnRf
XykKIC8qIHN0b2xlbiBmcm9tIC91c3IvaW5jbHVkZS9zeXMvc29ja2V0LmggKi8KICNkZWZpbmUg
Q01TR19BTElHTihuKSAgIF9BTElHTihuKQotI2VsaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19O
ZXRCU0QpCisjZWxpZiBkZWZpbmVkKF9fTmV0QlNEX18pCiAjZGVmaW5lIENNU0dfQUxJR04obikg
ICAoKChuKSArIF9fQUxJR05CWVRFUykgJiB+X19BTElHTkJZVEVTKQotI2VsaWYgZGVmaW5lZChf
X1VzZXJzcGFjZV9vc19EYXJ3aW4pCisjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKICNpZiAhZGVm
aW5lZChfX0RBUldJTl9BTElHTkJZVEVTKQogI2RlZmluZQlfX0RBUldJTl9BTElHTkJZVEVTCShz
aXplb2YoX19kYXJ3aW5fc2l6ZV90KSAtIDEpCiAjZW5kaWYKQEAgLTExMzEsNyArMTEwNCw3IEBA
IHNjdHBfZ2V0X21idWZfZm9yX21zZyh1bnNpZ25lZCBpbnQgc3BhY2VfbmVlZGVkLCBpbnQgd2Fu
dF9oZWFkZXIsIGludCBob3csIGludCBhCiAJfSB3aGlsZSAoMCkKICNlbmRpZgogCi0jaWYgZGVm
aW5lZChfX1VzZXJzcGFjZV9vc19MaW51eCkKKyNpZiBkZWZpbmVkKF9fbGludXhfXykKICNpZiAh
ZGVmaW5lZChUQUlMUV9GT1JFQUNIX1NBRkUpCiAjZGVmaW5lIFRBSUxRX0ZPUkVBQ0hfU0FGRSh2
YXIsIGhlYWQsIGZpZWxkLCB0dmFyKSAgICAgICAgICAgICBcCiAgICAgICAgICBmb3IgKCh2YXIp
ID0gKChoZWFkKS0+dHFoX2ZpcnN0KTsgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xMTQ1LDEy
ICsxMTE4LDEyIEBAIHNjdHBfZ2V0X21idWZfZm9yX21zZyh1bnNpZ25lZCBpbnQgc3BhY2VfbmVl
ZGVkLCBpbnQgd2FudF9oZWFkZXIsIGludCBob3csIGludCBhCiAgICAgICAgICAgICAgICh2YXIp
ID0gKHR2YXIpKQogI2VuZGlmCiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0Ry
YWdvbkZseSkKKyNpZiBkZWZpbmVkKF9fRHJhZ29uRmx5X18pCiAjZGVmaW5lIFRBSUxRX0ZPUkVB
Q0hfU0FGRSBUQUlMUV9GT1JFQUNIX01VVEFCTEUKICNkZWZpbmUgTElTVF9GT1JFQUNIX1NBRkUg
TElTVF9GT1JFQUNIX01VVEFCTEUKICNlbmRpZgogCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9v
c19OYUNsKQorI2lmIGRlZmluZWQoX19uYXRpdmVfY2xpZW50X18pCiAjZGVmaW5lCXRpbWVyY21w
KHR2cCwgdXZwLCBjbXApCQkJCQkJXAogCSgoKHR2cCktPnR2X3NlYyA9PSAodXZwKS0+dHZfc2Vj
KSA/CQkJCVwKIAkgICAgKCh0dnApLT50dl91c2VjIGNtcCAodXZwKS0+dHZfdXNlYykgOgkJCVwK
QEAgLTExNTksNCArMTEzMiw5IEBAIHNjdHBfZ2V0X21idWZfZm9yX21zZyh1bnNpZ25lZCBpbnQg
c3BhY2VfbmVlZGVkLCBpbnQgd2FudF9oZWFkZXIsIGludCBob3csIGludCBhCiAKICNkZWZpbmUg
U0NUUF9JU19MSVNURU5JTkcoaW5wKSAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdT
X0FDQ0VQVElORykgIT0gMCkKIAorI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9f
RHJhZ29uRmx5X18pIHx8IGRlZmluZWQoX19saW51eF9fKSB8fCBkZWZpbmVkKF9fbmF0aXZlX2Ns
aWVudF9fKSB8fCBkZWZpbmVkKF9fTmV0QlNEX18pIHx8IGRlZmluZWQoX1dJTjMyKSB8fCBkZWZp
bmVkKF9fRnVjaHNpYV9fKQoraW50Cit0aW1pbmdzYWZlX2JjbXAoY29uc3Qgdm9pZCAqLCBjb25z
dCB2b2lkICosIHNpemVfdCk7CisjZW5kaWYKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9vdXRwdXQuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIv
bmV0aW5ldC9zY3RwX291dHB1dC5jCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5k
ZXggZTI5YTcyN2ZhZGQ5YTRlYjJmMWU5ZjQ2YzYxNTU3NjQwMDBhYmU1NS4uMjE0MjRiNjk0NTli
ZjQ0NThlMDk5MTUyZTYwOTM0OTQ2YTk4ZWE0OAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25l
dGluZXQvc2N0cF9vdXRwdXQuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0
cF9vdXRwdXQuYwpAQCAtMzIsMTMgKzMyLDEzIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotI2lmZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4K
LV9fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX291dHB1dC5jIDMzNTE3
OSAyMDE4LTA2LTE0IDIxOjMwOjUyWiB0dWV4ZW4gJCIpOworX19GQlNESUQoIiRGcmVlQlNEOiBo
ZWFkL3N5cy9uZXRpbmV0L3NjdHBfb3V0cHV0LmMgMzY0OTM3IDIwMjAtMDgtMjggMjA6MDU6MTha
IHR1ZXhlbiAkIik7CiAjZW5kaWYKIAogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9vcy5oPgotI2lm
ZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKICNpbmNsdWRlIDxzeXMvcHJvYy5oPgogI2VuZGlmCiAjaW5jbHVkZSA8bmV0
aW5ldC9zY3RwX3Zhci5oPgpAQCAtNTYsMzIgKzU2LDMxIEBAIF9fRkJTRElEKCIkRnJlZUJTRDog
aGVhZC9zeXMvbmV0aW5ldC9zY3RwX291dHB1dC5jIDMzNTE3OSAyMDE4LTA2LTE0IDIxOjMwOjUy
WiB0CiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX2JzZF9hZGRyLmg+CiAjaW5jbHVkZSA8bmV0aW5l
dC9zY3RwX2lucHV0Lmg+CiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX2NyYzMyLmg+Ci0jaWYgZGVm
aW5lZChfX1VzZXJzcGFjZV9vc19MaW51eCkKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9rZHRyYWNlLmg+
CisjZW5kaWYKKyNpZiBkZWZpbmVkKF9fbGludXhfXykKICNkZWZpbmUgX19GQVZPUl9CU0QgICAg
LyogKG9uIFVidW50dSBhdCBsZWFzdCkgZW5hYmxlcyBVRFAgaGVhZGVyIGZpZWxkIG5hbWVzIGxp
a2UgQlNEIGluIFJGQyA3NjggKi8KICNlbmRpZgogI2lmIGRlZmluZWQoSU5FVCkgfHwgZGVmaW5l
ZChJTkVUNikKLSNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmICFkZWZp
bmVkKF9XSU4zMikKICNpbmNsdWRlIDxuZXRpbmV0L3VkcC5oPgogI2VuZGlmCiAjZW5kaWYKKyNp
ZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmIGRlZmluZWQoX19BUFBMRV9fKQogI2luY2x1
ZGUgPG5ldGluZXQvaW4uaD4KICNlbmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCi0jaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAwMDAwCisjaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRl
IDxuZXRpbmV0L3VkcF92YXIuaD4KLSNlbmRpZgogI2luY2x1ZGUgPG1hY2hpbmUvaW5fY2tzdW0u
aD4KICNlbmRpZgorI2VuZGlmCiAjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKSAmJiBkZWZpbmVk
KElORVQ2KQogI2luY2x1ZGUgPG5ldGluZXQ2L3NjdHA2X3Zhci5oPgogI2VuZGlmCiAKLSNpZiBk
ZWZpbmVkKF9fQVBQTEVfXykKLSNkZWZpbmUgQVBQTEVfRklMRV9OTyAzCi0jZW5kaWYKLQotI2lm
IGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogI2lmICEoZGVmaW5lZChBUFBMRV9MRU9QQVJEKSB8fCBkZWZpbmVkKEFQ
UExFX1NOT1dMRU9QQVJEKSkKICNkZWZpbmUgU0NUUF9NQVhfTElOS0hEUiAxNgogI2VuZGlmCkBA
IC0xOTMwLDE0ICsxOTI5LDEyIEBAIHNjdHBfaXNfYWRkcmVzc19pbl9zY29wZShzdHJ1Y3Qgc2N0
cF9pZmEgKmlmYSwKIAkJaWYgKHNjb3BlLT5pcHY2X2FkZHJfbGVnYWwpIHsKIAkJCXN0cnVjdCBz
b2NrYWRkcl9pbjYgKnNpbjY7CiAKLSNpZiAhZGVmaW5lZChfX1BhbmRhX18pCiAJCQkvKiBNdXN0
IHVwZGF0ZSB0aGUgZmxhZ3MsICBidW1tZXIsIHdoaWNoCiAJCQkgKiBtZWFucyBhbnkgSUZBIGxv
Y2tzIG11c3Qgbm93IGJlIGFwcGxpZWQgSEVSRSA8LT4KIAkJCSAqLwogCQkJaWYgKGRvX3VwZGF0
ZSkgewogCQkJCXNjdHBfZ2F0aGVyX2ludGVybmFsX2lmYV9mbGFncyhpZmEpOwogCQkJfQotI2Vu
ZGlmCiAJCQlpZiAoaWZhLT5sb2NhbGlmYV9mbGFncyAmIFNDVFBfQUREUl9JRkFfVU5VU0VBQkxF
KSB7CiAJCQkJcmV0dXJuICgwKTsKIAkJCX0KQEAgLTIxMDAsNyArMjA5Nyw3IEBAIHNjdHBfYWRk
X2FkZHJlc3Nlc190b19pX2lhKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3Rj
YiAqc3RjYiwKIAkJCQljb250aW51ZTsKIAkJCX0KIAkJCUxJU1RfRk9SRUFDSChzY3RwX2lmYXAs
ICZzY3RwX2lmbnAtPmlmYWxpc3QsIG5leHRfaWZhKSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
I2lmZGVmIElORVQKIAkJCQlpZiAoKHNjdHBfaWZhcC0+YWRkcmVzcy5zYS5zYV9mYW1pbHkgPT0g
QUZfSU5FVCkgJiYKIAkJCQkgICAgKHByaXNvbl9jaGVja19pcDQoaW5wLT5pcF9pbnAuaW5wLmlu
cF9jcmVkLApAQCAtMjE1MCw3ICsyMTQ3LDcgQEAgc2N0cF9hZGRfYWRkcmVzc2VzX3RvX2lfaWEo
c3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkJCQljb250
aW51ZTsKIAkJCQl9CiAJCQkJTElTVF9GT1JFQUNIKHNjdHBfaWZhcCwgJnNjdHBfaWZucC0+aWZh
bGlzdCwgbmV4dF9pZmEpIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaWZkZWYgSU5FVAogCQkJ
CQlpZiAoKHNjdHBfaWZhcC0+YWRkcmVzcy5zYS5zYV9mYW1pbHkgPT0gQUZfSU5FVCkgJiYKIAkJ
CQkJICAgIChwcmlzb25fY2hlY2tfaXA0KGlucC0+aXBfaW5wLmlucC5pbnBfY3JlZCwKQEAgLTI1
MzgsNyArMjUzNSw3IEBAIHNjdHBfY2hvb3NlX2JvdW5kc3BlY2lmaWNfaW5wKHN0cnVjdCBzY3Rw
X2lucGNiICppbnAsCiAJaWYgKHNjdHBfaWZuKSB7CiAJCS8qIGlzIGEgcHJlZmVycmVkIG9uZSBv
biB0aGUgaW50ZXJmYWNlIHdlIHJvdXRlIG91dD8gKi8KIAkJTElTVF9GT1JFQUNIKHNjdHBfaWZh
LCAmc2N0cF9pZm4tPmlmYWxpc3QsIG5leHRfaWZhKSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
I2lmZGVmIElORVQKIAkJCWlmICgoc2N0cF9pZmEtPmFkZHJlc3Muc2Euc2FfZmFtaWx5ID09IEFG
X0lORVQpICYmCiAJCQkgICAgKHByaXNvbl9jaGVja19pcDQoaW5wLT5pcF9pbnAuaW5wLmlucF9j
cmVkLApAQCAtMjY4MCw3ICsyNjc3LDcgQEAgc2N0cF9jaG9vc2VfYm91bmRzcGVjaWZpY19zdGNi
KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJaWYgKHNjdHBfaWZuKSB7CiAJCS8qIGZpcnN0IHRy
eSBmb3IgYSBwcmVmZXJyZWQgYWRkcmVzcyBvbiB0aGUgZXAgKi8KIAkJTElTVF9GT1JFQUNIKHNj
dHBfaWZhLCAmc2N0cF9pZm4tPmlmYWxpc3QsIG5leHRfaWZhKSB7Ci0jaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogI2lmZGVmIElORVQKIAkJCWlmICgoc2N0cF9pZmEtPmFkZHJlc3Muc2Euc2FfZmFtaWx5
ID09IEFGX0lORVQpICYmCiAJCQkgICAgKHByaXNvbl9jaGVja19pcDQoaW5wLT5pcF9pbnAuaW5w
LmlucF9jcmVkLApAQCAtMjcxNiw3ICsyNzEzLDcgQEAgc2N0cF9jaG9vc2VfYm91bmRzcGVjaWZp
Y19zdGNiKHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCX0KIAkJLyogbmV4dCB0cnkgZm9yIGFu
IGFjY2VwdGFibGUgYWRkcmVzcyBvbiB0aGUgZXAgKi8KIAkJTElTVF9GT1JFQUNIKHNjdHBfaWZh
LCAmc2N0cF9pZm4tPmlmYWxpc3QsIG5leHRfaWZhKSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
I2lmZGVmIElORVQKIAkJCWlmICgoc2N0cF9pZmEtPmFkZHJlc3Muc2Euc2FfZmFtaWx5ID09IEFG
X0lORVQpICYmCiAJCQkgICAgKHByaXNvbl9jaGVja19pcDQoaW5wLT5pcF9pbnAuaW5wLmlucF9j
cmVkLApAQCAtMjgzNyw3ICsyODM0LDcgQEAgc2N0cF9jaG9vc2VfYm91bmRzcGVjaWZpY19zdGNi
KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAKIHN0YXRpYyBzdHJ1Y3Qgc2N0cF9pZmEgKgogc2N0
cF9zZWxlY3RfbnRoX3ByZWZlcnJlZF9hZGRyX2Zyb21faWZuX2JvdW5kYWxsKHN0cnVjdCBzY3Rw
X2lmbiAqaWZuLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogI2Vsc2UK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg
c2N0cF9pbnBjYiAqaW5wIFNDVFBfVU5VU0VELApAQCAtMjg2OCw3ICsyODY1LDcgQEAgc2N0cF9z
ZWxlY3RfbnRoX3ByZWZlcnJlZF9hZGRyX2Zyb21faWZuX2JvdW5kYWxsKHN0cnVjdCBzY3RwX2lm
biAqaWZuLAogI2VuZGlmICAvKiBTQ1RQX0VNQkVEREVEX1Y2X1NDT1BFICovCiAjZW5kaWYJLyog
SU5FVDYgKi8KIAlMSVNUX0ZPUkVBQ0goaWZhLCAmaWZuLT5pZmFsaXN0LCBuZXh0X2lmYSkgewot
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZmRlZiBJTkVUCiAJCWlmICgoaWZhLT5hZGRyZXNzLnNh
LnNhX2ZhbWlseSA9PSBBRl9JTkVUKSAmJgogCQkgICAgKHByaXNvbl9jaGVja19pcDQoaW5wLT5p
cF9pbnAuaW5wLmlucF9jcmVkLApAQCAtMjk3MSw3ICsyOTY4LDcgQEAgc2N0cF9zZWxlY3RfbnRo
X3ByZWZlcnJlZF9hZGRyX2Zyb21faWZuX2JvdW5kYWxsKHN0cnVjdCBzY3RwX2lmbiAqaWZuLAog
CiBzdGF0aWMgaW50CiBzY3RwX2NvdW50X251bV9wcmVmZXJyZWRfYm91bmRhbGwoc3RydWN0IHNj
dHBfaWZuICppZm4sCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAjZWxzZQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY3RwX2lucGNiICppbnAgU0NUUF9VTlVTRUQs
CkBAIC0yOTg2LDcgKzI5ODMsNyBAQCBzY3RwX2NvdW50X251bV9wcmVmZXJyZWRfYm91bmRhbGwo
c3RydWN0IHNjdHBfaWZuICppZm4sCiAJaW50IG51bV9lbGlnaWJsZV9hZGRyID0gMDsKIAogCUxJ
U1RfRk9SRUFDSChpZmEsICZpZm4tPmlmYWxpc3QsIG5leHRfaWZhKSB7Ci0jaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogI2lmZGVmIElORVQKIAkJaWYgKChpZmEtPmFkZHJlc3Muc2Euc2FfZmFtaWx5ID09
IEFGX0lORVQpICYmCiAJCSAgICAocHJpc29uX2NoZWNrX2lwNChpbnAtPmlwX2lucC5pbnAuaW5w
X2NyZWQsCkBAIC0zMTk2LDcgKzMxOTMsNyBAQCBhZ2Fpbl93aXRoX3ByaXZhdGVfYWRkcmVzc2Vz
X2FsbG93ZWQ6CiAJfQogCUxJU1RfRk9SRUFDSChzY3RwX2lmYSwgJmVtaXRfaWZuLT5pZmFsaXN0
LCBuZXh0X2lmYSkgewogCQlTQ1RQREJHKFNDVFBfREVCVUdfT1VUUFVUMiwgImlmYTolcFxuIiwg
KHZvaWQgKilzY3RwX2lmYSk7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmZGVmIElORVQKIAkJ
aWYgKChzY3RwX2lmYS0+YWRkcmVzcy5zYS5zYV9mYW1pbHkgPT0gQUZfSU5FVCkgJiYKIAkJICAg
IChwcmlzb25fY2hlY2tfaXA0KGlucC0+aXBfaW5wLmlucC5pbnBfY3JlZCwKQEAgLTMyNjIsNyAr
MzI1OSw3IEBAIGFnYWluX3dpdGhfcHJpdmF0ZV9hZGRyZXNzZXNfYWxsb3dlZDoKIAkJCWNvbnRp
bnVlOwogCQl9CiAJCUxJU1RfRk9SRUFDSChzY3RwX2lmYSwgJnNjdHBfaWZuLT5pZmFsaXN0LCBu
ZXh0X2lmYSkgewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZmRlZiBJTkVUCiAJCQlpZiAoKHNj
dHBfaWZhLT5hZGRyZXNzLnNhLnNhX2ZhbWlseSA9PSBBRl9JTkVUKSAmJgogCQkJICAgIChwcmlz
b25fY2hlY2tfaXA0KGlucC0+aXBfaW5wLmlucC5pbnBfY3JlZCwKQEAgLTMzMzAsNyArMzMyNyw3
IEBAIG91dDoKIAkJCQlMSVNUX0ZPUkVBQ0goc2N0cF9pZmEsICZzY3RwX2lmbi0+aWZhbGlzdCwg
bmV4dF9pZmEpIHsKIAkJCQkJc3RydWN0IHNjdHBfaWZhICp0bXBfc2lmYTsKIAotI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKICNpZmRlZiBJTkVUCiAJCQkJCWlmICgoc2N0cF9pZmEtPmFkZHJlc3Muc2Eu
c2FfZmFtaWx5ID09IEFGX0lORVQpICYmCiAJCQkJCSAgICAocHJpc29uX2NoZWNrX2lwNChpbnAt
PmlwX2lucC5pbnAuaW5wX2NyZWQsCkBAIC0zNDcxLDE2ICszNDY4LDI0IEBAIHNjdHBfc291cmNl
X2FkZHJlc3Nfc2VsZWN0aW9uKHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJICogICBhZGRyZXNz
ZXMuIElmIHRoZSBib3VuZCBzZXQgaXMgTk9UIGFzc2lnbmVkIHRvIHRoZSBpbnRlcmZhY2UgdGhl
bgogCSAqICAgd2UgbXVzdCB1c2Ugcm90YXRpb24gYW1vbmdzdCB0aGUgYm91bmQgYWRkcmVzc2Vz
Li4KIAkgKi8KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQorCWlmIChyby0+cm9fbmggPT0gTlVMTCkgeworI2Vsc2UKIAlpZiAocm8tPnJvX3J0ID09
IE5VTEwpIHsKKyNlbmRpZgogCQkvKgogCQkgKiBOZWVkIGEgcm91dGUgdG8gY2FjaGUuCiAJCSAq
LwogCQlTQ1RQX1JUQUxMT0Mocm8sIHZyZl9pZCwgaW5wLT5maWJudW0pOwogCX0KKyNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCWlmIChyby0+cm9f
bmggPT0gTlVMTCkgeworI2Vsc2UKIAlpZiAocm8tPnJvX3J0ID09IE5VTEwpIHsKKyNlbmRpZgog
CQlyZXR1cm4gKE5VTEwpOwogCX0KLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3Mp
CisjaWYgZGVmaW5lZChfV0lOMzIpCiAJLyogT24gV2luZG93cyB0aGUgc2FfZmFtaWx5IGlzIFVf
U0hPUlQgb3IgQUREUkVTU19GQU1JTFkgKi8KIAlmYW0gPSAoc2FfZmFtaWx5X3Qpcm8tPnJvX2Rz
dC5zYV9mYW1pbHk7CiAjZWxzZQpAQCAtMzUwNiw3ICszNTExLDcgQEAgc2N0cF9zb3VyY2VfYWRk
cmVzc19zZWxlY3Rpb24oc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKICNpZmRlZiBJTkVUNgogCWNh
c2UgQUZfSU5FVDY6CiAJCS8qIFNjb3BlIGJhc2VkIG9uIG91dGJvdW5kIGFkZHJlc3MgKi8KLSNp
ZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJ
CWlmIChJTjZfSVNfQUREUl9MT09QQkFDSygmdG82LT5zaW42X2FkZHIpKSB7CiAjZWxzZQogCQlp
ZiAoSU42X0lTX0FERFJfTE9PUEJBQ0soJnRvNi0+c2luNl9hZGRyKSB8fApAQCAtMzU2Myw3ICsz
NTY4LDcgQEAgc2N0cF9zb3VyY2VfYWRkcmVzc19zZWxlY3Rpb24oc3RydWN0IHNjdHBfaW5wY2Ig
KmlucCwKIHN0YXRpYyBpbnQKIHNjdHBfZmluZF9jbXNnKGludCBjX3R5cGUsIHZvaWQgKmRhdGEs
IHN0cnVjdCBtYnVmICpjb250cm9sLCBzaXplX3QgY3BzaXplKQogewotI2lmIGRlZmluZWQoX19V
c2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIAlXU0FDTVNHSERSIGNt
aDsKICNlbHNlCiAJc3RydWN0IGNtc2doZHIgY21oOwpAQCAtMzY2OCwxMiArMzY3MywxMSBAQCBz
Y3RwX2ZpbmRfY21zZyhpbnQgY190eXBlLCB2b2lkICpkYXRhLCBzdHJ1Y3QgbWJ1ZiAqY29udHJv
bCwgc2l6ZV90IGNwc2l6ZSkKIHN0YXRpYyBpbnQKIHNjdHBfcHJvY2Vzc19jbXNnc19mb3JfaW5p
dChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBtYnVmICpjb250cm9sLCBpbnQgKmVycm9y
KQogewotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9X
SU4zMikKIAlXU0FDTVNHSERSIGNtaDsKICNlbHNlCiAJc3RydWN0IGNtc2doZHIgY21oOwogI2Vu
ZGlmCi0JaW50IHRsZW4sIGF0OwogCXN0cnVjdCBzY3RwX2luaXRtc2cgaW5pdG1zZzsKICNpZmRl
ZiBJTkVUCiAJc3RydWN0IHNvY2thZGRyX2luIHNpbjsKQEAgLTM2ODEsMzQgKzM2ODUsMzcgQEAg
c2N0cF9wcm9jZXNzX2Ntc2dzX2Zvcl9pbml0KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0
IG1idWYgKmNvbnRyb2wsIGludCAqZXIKICNpZmRlZiBJTkVUNgogCXN0cnVjdCBzb2NrYWRkcl9p
bjYgc2luNjsKICNlbmRpZgorCWludCB0b3RfbGVuLCByZW1fbGVuLCBjbXNnX2RhdGFfbGVuLCBj
bXNnX2RhdGFfb2ZmLCBvZmY7CiAKLQl0bGVuID0gU0NUUF9CVUZfTEVOKGNvbnRyb2wpOwotCWF0
ID0gMDsKLQl3aGlsZSAoYXQgPCB0bGVuKSB7Ci0JCWlmICgodGxlbiAtIGF0KSA8IChpbnQpQ01T
R19BTElHTihzaXplb2YoY21oKSkpIHsKKwl0b3RfbGVuID0gU0NUUF9CVUZfTEVOKGNvbnRyb2wp
OworCWZvciAob2ZmID0gMDsgb2ZmIDwgdG90X2xlbjsgb2ZmICs9IENNU0dfQUxJR04oY21oLmNt
c2dfbGVuKSkgeworCQlyZW1fbGVuID0gdG90X2xlbiAtIG9mZjsKKwkJaWYgKHJlbV9sZW4gPCAo
aW50KUNNU0dfQUxJR04oc2l6ZW9mKGNtaCkpKSB7CiAJCQkvKiBUaGVyZSBpcyBub3QgZW5vdWdo
IHJvb20gZm9yIG9uZSBtb3JlLiAqLwogCQkJKmVycm9yID0gRUlOVkFMOwogCQkJcmV0dXJuICgx
KTsKIAkJfQotCQltX2NvcHlkYXRhKGNvbnRyb2wsIGF0LCBzaXplb2YoY21oKSwgKGNhZGRyX3Qp
JmNtaCk7CisJCW1fY29weWRhdGEoY29udHJvbCwgb2ZmLCBzaXplb2YoY21oKSwgKGNhZGRyX3Qp
JmNtaCk7CiAJCWlmIChjbWguY21zZ19sZW4gPCBDTVNHX0FMSUdOKHNpemVvZihjbWgpKSkgewog
CQkJLyogV2UgZG9udCd0IGhhdmUgYSBjb21wbGV0ZSBDTVNHIGhlYWRlci4gKi8KIAkJCSplcnJv
ciA9IEVJTlZBTDsKIAkJCXJldHVybiAoMSk7CiAJCX0KLQkJaWYgKCgoaW50KWNtaC5jbXNnX2xl
biArIGF0KSA+IHRsZW4pIHsKKwkJaWYgKChjbWguY21zZ19sZW4gPiBJTlRfTUFYKSB8fCAoKGlu
dCljbWguY21zZ19sZW4gPiByZW1fbGVuKSkgewogCQkJLyogV2UgZG9uJ3QgaGF2ZSB0aGUgY29t
cGxldGUgQ01TRy4gKi8KIAkJCSplcnJvciA9IEVJTlZBTDsKIAkJCXJldHVybiAoMSk7CiAJCX0K
KwkJY21zZ19kYXRhX2xlbiA9IChpbnQpY21oLmNtc2dfbGVuIC0gQ01TR19BTElHTihzaXplb2Yo
Y21oKSk7CisJCWNtc2dfZGF0YV9vZmYgPSBvZmYgKyBDTVNHX0FMSUdOKHNpemVvZihjbWgpKTsK
IAkJaWYgKGNtaC5jbXNnX2xldmVsID09IElQUFJPVE9fU0NUUCkgewogCQkJc3dpdGNoIChjbWgu
Y21zZ190eXBlKSB7CiAJCQljYXNlIFNDVFBfSU5JVDoKLQkJCQlpZiAoKHNpemVfdCkoY21oLmNt
c2dfbGVuIC0gQ01TR19BTElHTihzaXplb2YoY21oKSkpIDwgc2l6ZW9mKHN0cnVjdCBzY3RwX2lu
aXRtc2cpKSB7CisJCQkJaWYgKGNtc2dfZGF0YV9sZW4gPCAoaW50KXNpemVvZihzdHJ1Y3Qgc2N0
cF9pbml0bXNnKSkgewogCQkJCQkqZXJyb3IgPSBFSU5WQUw7CiAJCQkJCXJldHVybiAoMSk7CiAJ
CQkJfQotCQkJCW1fY29weWRhdGEoY29udHJvbCwgYXQgKyBDTVNHX0FMSUdOKHNpemVvZihjbWgp
KSwgc2l6ZW9mKHN0cnVjdCBzY3RwX2luaXRtc2cpLCAoY2FkZHJfdCkmaW5pdG1zZyk7CisJCQkJ
bV9jb3B5ZGF0YShjb250cm9sLCBjbXNnX2RhdGFfb2ZmLCBzaXplb2Yoc3RydWN0IHNjdHBfaW5p
dG1zZyksIChjYWRkcl90KSZpbml0bXNnKTsKIAkJCQlpZiAoaW5pdG1zZy5zaW5pdF9tYXhfYXR0
ZW1wdHMpCiAJCQkJCXN0Y2ItPmFzb2MubWF4X2luaXRfdGltZXMgPSBpbml0bXNnLnNpbml0X21h
eF9hdHRlbXB0czsKIAkJCQlpZiAoaW5pdG1zZy5zaW5pdF9udW1fb3N0cmVhbXMpCkBAIC0zNzYz
LDcgKzM3NzAsNyBAQCBzY3RwX3Byb2Nlc3NfY21zZ3NfZm9yX2luaXQoc3RydWN0IHNjdHBfdGNi
ICpzdGNiLCBzdHJ1Y3QgbWJ1ZiAqY29udHJvbCwgaW50ICplcgogCQkJCWJyZWFrOwogI2lmZGVm
IElORVQKIAkJCWNhc2UgU0NUUF9EU1RBRERSVjQ6Ci0JCQkJaWYgKChzaXplX3QpKGNtaC5jbXNn
X2xlbiAtIENNU0dfQUxJR04oc2l6ZW9mKGNtaCkpKSA8IHNpemVvZihzdHJ1Y3QgaW5fYWRkcikp
IHsKKwkJCQlpZiAoY21zZ19kYXRhX2xlbiA8IChpbnQpc2l6ZW9mKHN0cnVjdCBpbl9hZGRyKSkg
ewogCQkJCQkqZXJyb3IgPSBFSU5WQUw7CiAJCQkJCXJldHVybiAoMSk7CiAJCQkJfQpAQCAtMzc3
Myw3ICszNzgwLDcgQEAgc2N0cF9wcm9jZXNzX2Ntc2dzX2Zvcl9pbml0KHN0cnVjdCBzY3RwX3Rj
YiAqc3RjYiwgc3RydWN0IG1idWYgKmNvbnRyb2wsIGludCAqZXIKIAkJCQlzaW4uc2luX2xlbiA9
IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pOwogI2VuZGlmCiAJCQkJc2luLnNpbl9wb3J0ID0g
c3RjYi0+cnBvcnQ7Ci0JCQkJbV9jb3B5ZGF0YShjb250cm9sLCBhdCArIENNU0dfQUxJR04oc2l6
ZW9mKGNtaCkpLCBzaXplb2Yoc3RydWN0IGluX2FkZHIpLCAoY2FkZHJfdCkmc2luLnNpbl9hZGRy
KTsKKwkJCQltX2NvcHlkYXRhKGNvbnRyb2wsIGNtc2dfZGF0YV9vZmYsIHNpemVvZihzdHJ1Y3Qg
aW5fYWRkciksIChjYWRkcl90KSZzaW4uc2luX2FkZHIpOwogCQkJCWlmICgoc2luLnNpbl9hZGRy
LnNfYWRkciA9PSBJTkFERFJfQU5ZKSB8fAogCQkJCSAgICAoc2luLnNpbl9hZGRyLnNfYWRkciA9
PSBJTkFERFJfQlJPQURDQVNUKSB8fAogCQkJCSAgICBJTl9NVUxUSUNBU1QobnRvaGwoc2luLnNp
bl9hZGRyLnNfYWRkcikpKSB7CkBAIC0zNzg5LDcgKzM3OTYsNyBAQCBzY3RwX3Byb2Nlc3NfY21z
Z3NfZm9yX2luaXQoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3QgbWJ1ZiAqY29udHJvbCwg
aW50ICplcgogI2VuZGlmCiAjaWZkZWYgSU5FVDYKIAkJCWNhc2UgU0NUUF9EU1RBRERSVjY6Ci0J
CQkJaWYgKChzaXplX3QpKGNtaC5jbXNnX2xlbiAtIENNU0dfQUxJR04oc2l6ZW9mKGNtaCkpKSA8
IHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKSB7CisJCQkJaWYgKGNtc2dfZGF0YV9sZW4gPCAoaW50
KXNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKSB7CiAJCQkJCSplcnJvciA9IEVJTlZBTDsKIAkJCQkJ
cmV0dXJuICgxKTsKIAkJCQl9CkBAIC0zNzk5LDcgKzM4MDYsNyBAQCBzY3RwX3Byb2Nlc3NfY21z
Z3NfZm9yX2luaXQoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3QgbWJ1ZiAqY29udHJvbCwg
aW50ICplcgogCQkJCXNpbjYuc2luNl9sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNik7
CiAjZW5kaWYKIAkJCQlzaW42LnNpbjZfcG9ydCA9IHN0Y2ItPnJwb3J0OwotCQkJCW1fY29weWRh
dGEoY29udHJvbCwgYXQgKyBDTVNHX0FMSUdOKHNpemVvZihjbWgpKSwgc2l6ZW9mKHN0cnVjdCBp
bjZfYWRkciksIChjYWRkcl90KSZzaW42LnNpbjZfYWRkcik7CisJCQkJbV9jb3B5ZGF0YShjb250
cm9sLCBjbXNnX2RhdGFfb2ZmLCBzaXplb2Yoc3RydWN0IGluNl9hZGRyKSwgKGNhZGRyX3QpJnNp
bjYuc2luNl9hZGRyKTsKIAkJCQlpZiAoSU42X0lTX0FERFJfVU5TUEVDSUZJRUQoJnNpbjYuc2lu
Nl9hZGRyKSB8fAogCQkJCSAgICBJTjZfSVNfQUREUl9NVUxUSUNBU1QoJnNpbjYuc2luNl9hZGRy
KSkgewogCQkJCQkqZXJyb3IgPSBFSU5WQUw7CkBAIC0zODMyLDExICszODM5LDExIEBAIHNjdHBf
cHJvY2Vzc19jbXNnc19mb3JfaW5pdChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBtYnVm
ICpjb250cm9sLCBpbnQgKmVyCiAJCQkJYnJlYWs7CiAJCQl9CiAJCX0KLQkJYXQgKz0gQ01TR19B
TElHTihjbWguY21zZ19sZW4pOwogCX0KIAlyZXR1cm4gKDApOwogfQogCisjaWYgZGVmaW5lZChJ
TkVUKSB8fCBkZWZpbmVkKElORVQ2KQogc3RhdGljIHN0cnVjdCBzY3RwX3RjYiAqCiBzY3RwX2Zp
bmRhc3NvY2lhdGlvbl9jbXNncyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqKmlucF9wLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDE2X3QgcG9ydCwKQEAgLTM4NDQsMTIgKzM4NTEsMTEgQEAg
c2N0cF9maW5kYXNzb2NpYXRpb25fY21zZ3Moc3RydWN0IHNjdHBfaW5wY2IgKippbnBfcCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY3RwX25ldHMgKipuZXRfcCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCAqZXJyb3IpCiB7Ci0jaWYgZGVmaW5lZChfX1VzZXJz
cGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogCVdTQUNNU0dIRFIgY21oOwog
I2Vsc2UKIAlzdHJ1Y3QgY21zZ2hkciBjbWg7CiAjZW5kaWYKLQlpbnQgdGxlbiwgYXQ7CiAJc3Ry
dWN0IHNjdHBfdGNiICpzdGNiOwogCXN0cnVjdCBzb2NrYWRkciAqYWRkcjsKICNpZmRlZiBJTkVU
CkBAIC0zODU4LDMxICszODY0LDM0IEBAIHNjdHBfZmluZGFzc29jaWF0aW9uX2Ntc2dzKHN0cnVj
dCBzY3RwX2lucGNiICoqaW5wX3AsCiAjaWZkZWYgSU5FVDYKIAlzdHJ1Y3Qgc29ja2FkZHJfaW42
IHNpbjY7CiAjZW5kaWYKKwlpbnQgdG90X2xlbiwgcmVtX2xlbiwgY21zZ19kYXRhX2xlbiwgY21z
Z19kYXRhX29mZiwgb2ZmOwogCi0JdGxlbiA9IFNDVFBfQlVGX0xFTihjb250cm9sKTsKLQlhdCA9
IDA7Ci0Jd2hpbGUgKGF0IDwgdGxlbikgewotCQlpZiAoKHRsZW4gLSBhdCkgPCAoaW50KUNNU0df
QUxJR04oc2l6ZW9mKGNtaCkpKSB7CisJdG90X2xlbiA9IFNDVFBfQlVGX0xFTihjb250cm9sKTsK
Kwlmb3IgKG9mZiA9IDA7IG9mZiA8IHRvdF9sZW47IG9mZiArPSBDTVNHX0FMSUdOKGNtaC5jbXNn
X2xlbikpIHsKKwkJcmVtX2xlbiA9IHRvdF9sZW4gLSBvZmY7CisJCWlmIChyZW1fbGVuIDwgKGlu
dClDTVNHX0FMSUdOKHNpemVvZihjbWgpKSkgewogCQkJLyogVGhlcmUgaXMgbm90IGVub3VnaCBy
b29tIGZvciBvbmUgbW9yZS4gKi8KIAkJCSplcnJvciA9IEVJTlZBTDsKIAkJCXJldHVybiAoTlVM
TCk7CiAJCX0KLQkJbV9jb3B5ZGF0YShjb250cm9sLCBhdCwgc2l6ZW9mKGNtaCksIChjYWRkcl90
KSZjbWgpOworCQltX2NvcHlkYXRhKGNvbnRyb2wsIG9mZiwgc2l6ZW9mKGNtaCksIChjYWRkcl90
KSZjbWgpOwogCQlpZiAoY21oLmNtc2dfbGVuIDwgQ01TR19BTElHTihzaXplb2YoY21oKSkpIHsK
IAkJCS8qIFdlIGRvbnQndCBoYXZlIGEgY29tcGxldGUgQ01TRyBoZWFkZXIuICovCiAJCQkqZXJy
b3IgPSBFSU5WQUw7CiAJCQlyZXR1cm4gKE5VTEwpOwogCQl9Ci0JCWlmICgoKGludCljbWguY21z
Z19sZW4gKyBhdCkgPiB0bGVuKSB7CisJCWlmICgoY21oLmNtc2dfbGVuID4gSU5UX01BWCkgfHwg
KChpbnQpY21oLmNtc2dfbGVuID4gcmVtX2xlbikpIHsKIAkJCS8qIFdlIGRvbid0IGhhdmUgdGhl
IGNvbXBsZXRlIENNU0cuICovCiAJCQkqZXJyb3IgPSBFSU5WQUw7CiAJCQlyZXR1cm4gKE5VTEwp
OwogCQl9CisJCWNtc2dfZGF0YV9sZW4gPSAoaW50KWNtaC5jbXNnX2xlbiAtIENNU0dfQUxJR04o
c2l6ZW9mKGNtaCkpOworCQljbXNnX2RhdGFfb2ZmID0gb2ZmICsgQ01TR19BTElHTihzaXplb2Yo
Y21oKSk7CiAJCWlmIChjbWguY21zZ19sZXZlbCA9PSBJUFBST1RPX1NDVFApIHsKIAkJCXN3aXRj
aCAoY21oLmNtc2dfdHlwZSkgewogI2lmZGVmIElORVQKIAkJCWNhc2UgU0NUUF9EU1RBRERSVjQ6
Ci0JCQkJaWYgKChzaXplX3QpKGNtaC5jbXNnX2xlbiAtIENNU0dfQUxJR04oc2l6ZW9mKGNtaCkp
KSA8IHNpemVvZihzdHJ1Y3QgaW5fYWRkcikpIHsKKwkJCQlpZiAoY21zZ19kYXRhX2xlbiA8IChp
bnQpc2l6ZW9mKHN0cnVjdCBpbl9hZGRyKSkgewogCQkJCQkqZXJyb3IgPSBFSU5WQUw7CiAJCQkJ
CXJldHVybiAoTlVMTCk7CiAJCQkJfQpAQCAtMzg5MiwxMyArMzkwMSwxMyBAQCBzY3RwX2ZpbmRh
c3NvY2lhdGlvbl9jbXNncyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqKmlucF9wLAogCQkJCXNpbi5zaW5f
bGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7CiAjZW5kaWYKIAkJCQlzaW4uc2luX3Bv
cnQgPSBwb3J0OwotCQkJCW1fY29weWRhdGEoY29udHJvbCwgYXQgKyBDTVNHX0FMSUdOKHNpemVv
ZihjbWgpKSwgc2l6ZW9mKHN0cnVjdCBpbl9hZGRyKSwgKGNhZGRyX3QpJnNpbi5zaW5fYWRkcik7
CisJCQkJbV9jb3B5ZGF0YShjb250cm9sLCBjbXNnX2RhdGFfb2ZmLCBzaXplb2Yoc3RydWN0IGlu
X2FkZHIpLCAoY2FkZHJfdCkmc2luLnNpbl9hZGRyKTsKIAkJCQlhZGRyID0gKHN0cnVjdCBzb2Nr
YWRkciAqKSZzaW47CiAJCQkJYnJlYWs7CiAjZW5kaWYKICNpZmRlZiBJTkVUNgogCQkJY2FzZSBT
Q1RQX0RTVEFERFJWNjoKLQkJCQlpZiAoKHNpemVfdCkoY21oLmNtc2dfbGVuIC0gQ01TR19BTElH
TihzaXplb2YoY21oKSkpIDwgc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpIHsKKwkJCQlpZiAoY21z
Z19kYXRhX2xlbiA8IChpbnQpc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpIHsKIAkJCQkJKmVycm9y
ID0gRUlOVkFMOwogCQkJCQlyZXR1cm4gKE5VTEwpOwogCQkJCX0KQEAgLTM5MDgsNyArMzkxNyw3
IEBAIHNjdHBfZmluZGFzc29jaWF0aW9uX2Ntc2dzKHN0cnVjdCBzY3RwX2lucGNiICoqaW5wX3As
CiAJCQkJc2luNi5zaW42X2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KTsKICNlbmRp
ZgogCQkJCXNpbjYuc2luNl9wb3J0ID0gcG9ydDsKLQkJCQltX2NvcHlkYXRhKGNvbnRyb2wsIGF0
ICsgQ01TR19BTElHTihzaXplb2YoY21oKSksIHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpLCAoY2Fk
ZHJfdCkmc2luNi5zaW42X2FkZHIpOworCQkJCW1fY29weWRhdGEoY29udHJvbCwgY21zZ19kYXRh
X29mZiwgc2l6ZW9mKHN0cnVjdCBpbjZfYWRkciksIChjYWRkcl90KSZzaW42LnNpbjZfYWRkcik7
CiAjaWZkZWYgSU5FVAogCQkJCWlmIChJTjZfSVNfQUREUl9WNE1BUFBFRCgmc2luNi5zaW42X2Fk
ZHIpKSB7CiAJCQkJCWluNl9zaW42XzJfc2luKCZzaW4sICZzaW42KTsKQEAgLTM5MjksMTAgKzM5
MzgsMTAgQEAgc2N0cF9maW5kYXNzb2NpYXRpb25fY21zZ3Moc3RydWN0IHNjdHBfaW5wY2IgKipp
bnBfcCwKIAkJCQl9CiAJCQl9CiAJCX0KLQkJYXQgKz0gQ01TR19BTElHTihjbWguY21zZ19sZW4p
OwogCX0KIAlyZXR1cm4gKE5VTEwpOwogfQorI2VuZGlmCiAKIHN0YXRpYyBzdHJ1Y3QgbWJ1ZiAq
CiBzY3RwX2FkZF9jb29raWUoc3RydWN0IG1idWYgKmluaXQsIGludCBpbml0X29mZnNldCwKQEAg
LTM5NDEsOCArMzk1MCw2IEBAIHNjdHBfYWRkX2Nvb2tpZShzdHJ1Y3QgbWJ1ZiAqaW5pdCwgaW50
IGluaXRfb2Zmc2V0LAogCXN0cnVjdCBtYnVmICpjb3B5X2luaXQsICpjb3B5X2luaXRhY2ssICpt
X2F0LCAqc2lnLCAqbXJldDsKIAlzdHJ1Y3Qgc2N0cF9zdGF0ZV9jb29raWUgKnN0YzsKIAlzdHJ1
Y3Qgc2N0cF9wYXJhbWhkciAqcGg7Ci0JdWludDhfdCAqZm9vOwotCWludCBzaWdfb2Zmc2V0Owog
CXVpbnQxNl90IGNvb2tpZV9zejsKIAogCW1yZXQgPSBzY3RwX2dldF9tYnVmX2Zvcl9tc2coKHNp
emVvZihzdHJ1Y3Qgc2N0cF9zdGF0ZV9jb29raWUpICsKQEAgLTQwMDYsMjUgKzQwMTMsMjEgQEAg
c2N0cF9hZGRfY29va2llKHN0cnVjdCBtYnVmICppbml0LCBpbnQgaW5pdF9vZmZzZXQsCiAJCQli
cmVhazsKIAkJfQogCX0KLQlzaWcgPSBzY3RwX2dldF9tYnVmX2Zvcl9tc2coU0NUUF9TRUNSRVRf
U0laRSwgMCwgTV9OT1dBSVQsIDEsIE1UX0RBVEEpOworCXNpZyA9IHNjdHBfZ2V0X21idWZfZm9y
X21zZyhTQ1RQX1NJR05BVFVSRV9TSVpFLCAwLCBNX05PV0FJVCwgMSwgTVRfREFUQSk7CiAJaWYg
KHNpZyA9PSBOVUxMKSB7CiAJCS8qIG5vIHNwYWNlLCBzbyBmcmVlIHRoZSBlbnRpcmUgY2hhaW4g
Ki8KIAkJc2N0cF9tX2ZyZWVtKG1yZXQpOwogCQlyZXR1cm4gKE5VTEwpOwogCX0KLQlTQ1RQX0JV
Rl9MRU4oc2lnKSA9IDA7CiAJU0NUUF9CVUZfTkVYVChtX2F0KSA9IHNpZzsKLQlzaWdfb2Zmc2V0
ID0gMDsKLQlmb28gPSAodWludDhfdCAqKSAobXRvZChzaWcsIGNhZGRyX3QpICsgc2lnX29mZnNl
dCk7Ci0JbWVtc2V0KGZvbywgMCwgU0NUUF9TSUdOQVRVUkVfU0laRSk7Ci0JKnNpZ25hdHVyZSA9
IGZvbzsKLQlTQ1RQX0JVRl9MRU4oc2lnKSArPSBTQ1RQX1NJR05BVFVSRV9TSVpFOworCVNDVFBf
QlVGX0xFTihzaWcpID0gU0NUUF9TSUdOQVRVUkVfU0laRTsKIAljb29raWVfc3ogKz0gU0NUUF9T
SUdOQVRVUkVfU0laRTsKIAlwaC0+cGFyYW1fbGVuZ3RoID0gaHRvbnMoY29va2llX3N6KTsKKwkq
c2lnbmF0dXJlID0gKHVpbnQ4X3QgKiltdG9kKHNpZywgY2FkZHJfdCk7CisJbWVtc2V0KCpzaWdu
YXR1cmUsIDAsIFNDVFBfU0lHTkFUVVJFX1NJWkUpOwogCXJldHVybiAobXJldCk7CiB9CiAKLQog
c3RhdGljIHVpbnQ4X3QKIHNjdHBfZ2V0X2VjdChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IpCiB7CkBA
IC00MDk4LDE1ICs0MTAxLDEwIEBAIHNjdHBfbG93bGV2ZWxfY2h1bmtfb3V0cHV0KHN0cnVjdCBz
Y3RwX2lucGNiICppbnAsCiAgICAgdWludDMyX3Qgdl90YWcsCiAgICAgdWludDE2X3QgcG9ydCwK
ICAgICB1bmlvbiBzY3RwX3NvY2tzdG9yZSAqb3Zlcl9hZGRyLAotI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKICAgICB1aW50OF90IG1mbG93dHlwZSwgdWludDMyX3QgbWZsb3dpZCwKICNlbmRpZgotI2lm
ICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCi0g
ICAgaW50IHNvX2xvY2tlZCBTQ1RQX1VOVVNFRAotI2Vsc2UKLSAgICBpbnQgc29fbG9ja2VkCi0j
ZW5kaWYKLSAgICApCitpbnQgc29fbG9ja2VkKQogLyogbm9mcmFnbWVudF9mbGFnIHRvIHRlbGwg
aWYgSVBfREYgc2hvdWxkIGJlIHNldCAoSVB2NCBvbmx5KSAqLwogewogCS8qKgpAQCAtNDEyMiw5
ICs0MTIwLDYgQEAgc2N0cF9sb3dsZXZlbF9jaHVua19vdXRwdXQoc3RydWN0IHNjdHBfaW5wY2Ig
KmlucCwKIAkgKiAgIGludGVyZmFjZSBhbmQgc21hbGxlc3RfbXR1IHNpemUgYXMgd2VsbC4KIAkg
Ki8KIAkvKiBXaWxsIG5lZWQgaWZkZWZzIGFyb3VuZCB0aGlzICovCi0jaWZkZWYgX19QYW5kYV9f
Ci0JcGFraGFuZGxlX3R5cGUgb19wYWs7Ci0jZW5kaWYKIAlzdHJ1Y3QgbWJ1ZiAqbmV3bTsKIAlz
dHJ1Y3Qgc2N0cGhkciAqc2N0cGhkcjsKIAlpbnQgcGFja2V0X2xlbmd0aDsKQEAgLTQxMzMsMTgg
KzQxMjgsMTYgQEAgc2N0cF9sb3dsZXZlbF9jaHVua19vdXRwdXQoc3RydWN0IHNjdHBfaW5wY2Ig
KmlucCwKIAl1aW50MzJfdCB2cmZfaWQ7CiAjZW5kaWYKICNpZiBkZWZpbmVkKElORVQpIHx8IGRl
ZmluZWQoSU5FVDYpCi0jaWYgIWRlZmluZWQoX19QYW5kYV9fKQogCXN0cnVjdCBtYnVmICpvX3Bh
azsKLSNlbmRpZgogCXNjdHBfcm91dGVfdCAqcm8gPSBOVUxMOwogCXN0cnVjdCB1ZHBoZHIgKnVk
cCA9IE5VTEw7CiAjZW5kaWYKIAl1aW50OF90IHRvc192YWx1ZTsKLSNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzdHJ1Y3Qgc29ja2V0ICpzbyA9IE5V
TEw7CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBM
RV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWlmIChzb19sb2NrZWQpIHsKIAkJc2N0
cF9sb2NrX2Fzc2VydChTQ1RQX0lOUF9TTyhpbnApKTsKIAkJU0NUUF9UQ0JfTE9DS19BU1NFUlQo
c3RjYik7CkBAIC00MTk5LDcgKzQxOTIsNyBAQCBzY3RwX2xvd2xldmVsX2NodW5rX291dHB1dChz
dHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogCQlTQ1RQX0JVRl9MRU4obmV3bSkgPSBsZW47CiAJCVND
VFBfQlVGX05FWFQobmV3bSkgPSBtOwogCQltID0gbmV3bTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAJCWlmIChuZXQgIT0gTlVMTCkgewogCQkJbS0+bV9wa3RoZHIuZmxvd2lkID0gbmV0LT5mbG93
aWQ7CiAJCQlNX0hBU0hUWVBFX1NFVChtLCBuZXQtPmZsb3d0eXBlKTsKQEAgLTQyMTcsMzYgKzQy
MTAsMzAgQEAgc2N0cF9sb3dsZXZlbF9jaHVua19vdXRwdXQoc3RydWN0IHNjdHBfaW5wY2IgKmlu
cCwKIAkJCSAqIFRoaXMgbWVhbnMgZXNwZWNpYWxseSwgdGhhdCBpdCBpcyBub3Qgc2V0IGF0IHRo
ZQogCQkJICogU0NUUCBsYXllci4gU28gdXNlIHRoZSB2YWx1ZSBmcm9tIHRoZSBJUCBsYXllci4K
IAkJCSAqLwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8
fCBkZWZpbmVkKF9fUGFuZGFfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogCQkJdG9zX3ZhbHVlID0gaW5wLT5pcF9pbnAuaW5wLmlucF9pcF90b3M7
Ci0jZWxzZQotCQkJdG9zX3ZhbHVlID0gaW5wLT5pbnBfaXBfdG9zOwotI2VuZGlmCiAJCX0KIAkJ
dG9zX3ZhbHVlICY9IDB4ZmM7CiAJCWlmIChlY25fb2spIHsKIAkJCXRvc192YWx1ZSB8PSBzY3Rw
X2dldF9lY3Qoc3RjYik7CiAJCX0KIAkJaWYgKChub2ZyYWdtZW50X2ZsYWcpICYmIChwb3J0ID09
IDApKSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKLSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+
PSAxMDAwMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKIAkJCWlwLT5pcF9vZmYgPSBodG9ucyhJUF9ERik7Ci0jZWxzZQotCQkJaXAtPmlwX29m
ZiA9IElQX0RGOwotI2VuZGlmCi0jZWxpZiBkZWZpbmVkKFdJVEhfQ09OVkVSVF9JUF9PRkYpIHx8
IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0RhcndpbikKKyNl
bGlmIGRlZmluZWQoV0lUSF9DT05WRVJUX0lQX09GRikgfHwgZGVmaW5lZChfX0FQUExFX18pCiAJ
CQlpcC0+aXBfb2ZmID0gSVBfREY7CiAjZWxzZQogCQkJaXAtPmlwX29mZiA9IGh0b25zKElQX0RG
KTsKICNlbmRpZgogCQl9IGVsc2UgewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJl
ZUJTRF92ZXJzaW9uID49IDEwMDAwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCQkJaXAtPmlwX29mZiA9IGh0b25zKDApOwogI2Vsc2UKIAkJ
CWlwLT5pcF9vZmYgPSAwOwogI2VuZGlmCiAJCX0KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQor
I2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJaXAtPmlwX2lkID0gaHRvbnMoU0NUUF9JUF9J
RChpbnApKyspOworI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKIAkJLyogRnJlZUJTRCBoYXMg
YSBmdW5jdGlvbiBmb3IgaXBfaWQncyAqLwogCQlpcF9maWxsaWQoaXApOwogI2VsaWYgZGVmaW5l
ZChfX0FQUExFX18pCkBAIC00MjU1LDE4ICs0MjQyLDEyIEBAIHNjdHBfbG93bGV2ZWxfY2h1bmtf
b3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAjZWxzZQogCQlpcC0+aXBfaWQgPSBodG9u
cyhpcF9pZCsrKTsKICNlbmRpZgotI2VsaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQotCQlpcC0+
aXBfaWQgPSBodG9ucyhTQ1RQX0lQX0lEKGlucCkrKyk7CiAjZWxzZQogCQlpcC0+aXBfaWQgPSBT
Q1RQX0lQX0lEKGlucCkrKzsKICNlbmRpZgogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwg
ZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19QYW5kYV9fKSB8fCBkZWZpbmVkKF9fV2lu
ZG93c19fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCWlwLT5pcF90dGwgPSBpbnAtPmlw
X2lucC5pbnAuaW5wX2lwX3R0bDsKLSNlbHNlCi0JCWlwLT5pcF90dGwgPSBpbnAtPmlucF9pcF90
dGw7Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lv
biA+PSAxMDAwMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKIAkJaXAtPmlwX2xlbiA9IGh0b25zKHBhY2tldF9sZW5ndGgpOwogI2Vsc2UKIAkJ
aXAtPmlwX2xlbiA9IHBhY2tldF9sZW5ndGg7CkBAIC00Mjk4LDEwICs0Mjc5LDE0IEBAIHNjdHBf
bG93bGV2ZWxfY2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCQkJc2N0cF9m
cmVlX2lmYShuZXQtPnJvLl9zX2FkZHIpOwogCQkJCW5ldC0+cm8uX3NfYWRkciA9IE5VTEw7CiAJ
CQkJbmV0LT5zcmNfYWRkcl9zZWxlY3RlZCA9IDA7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJCQlST19OSEZSRUUocm8pOworI2Vsc2UKIAkJ
CQlpZiAocm8tPnJvX3J0KSB7CiAJCQkJCVJURlJFRShyby0+cm9fcnQpOwogCQkJCQlyby0+cm9f
cnQgPSBOVUxMOwogCQkJCX0KKyNlbmRpZgogCQkJfQogCQkJaWYgKG5ldC0+c3JjX2FkZHJfc2Vs
ZWN0ZWQgPT0gMCkgewogCQkJCS8qIENhY2hlIHRoZSBzb3VyY2UgYWRkcmVzcyAqLwpAQCAtNDM1
MSw4ICs0MzM2LDggQEAgc2N0cF9sb3dsZXZlbF9jaHVua19vdXRwdXQoc3RydWN0IHNjdHBfaW5w
Y2IgKmlucCwKIAkJCXVkcC0+dWhfc3BvcnQgPSBodG9ucyhTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBf
dWRwX3R1bm5lbGluZ19wb3J0KSk7CiAJCQl1ZHAtPnVoX2Rwb3J0ID0gcG9ydDsKIAkJCXVkcC0+
dWhfdWxlbiA9IGh0b25zKCh1aW50MTZfdCkocGFja2V0X2xlbmd0aCAtIHNpemVvZihzdHJ1Y3Qg
aXApKSk7Ci0jaWYgIWRlZmluZWQoX19XaW5kb3dzX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgKChfX0ZyZWVCU0RfdmVyc2lvbiA+IDgw
MzAwMCAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA8IDkwMDAwMCkgfHwgX19GcmVlQlNEX3ZlcnNpb24g
PiA5MDAwMDApCisjaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKQogCQkJaWYgKFZfdWRwX2Nrc3VtKSB7CiAJCQkJdWRwLT51aF9zdW0gPSBpbl9wc2V1
ZG8oaXAtPmlwX3NyYy5zX2FkZHIsIGlwLT5pcF9kc3Quc19hZGRyLCB1ZHAtPnVoX3VsZW4gKyBo
dG9ucyhJUFBST1RPX1VEUCkpOwogCQkJfSBlbHNlIHsKQEAgLTQzODEsNyArNDM2NiwxMSBAQCBz
Y3RwX2xvd2xldmVsX2NodW5rX291dHB1dChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogCQkgKiB0
aGF0IHNvbWV3aGVyZSBhbmQgYWJvcnQgdGhlIGFzc29jaWF0aW9uIHJpZ2h0IGF3YXkKIAkJICog
KGFzc3VtaW5nIHRoaXMgaXMgYW4gSU5JVCBiZWluZyBzZW50KS4KIAkJICovCisjaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJaWYgKHJvLT5yb19u
aCA9PSBOVUxMKSB7CisjZWxzZQogCQlpZiAocm8tPnJvX3J0ID09IE5VTEwpIHsKKyNlbmRpZgog
CQkJLyoKIAkJCSAqIHNyYyBhZGRyIHNlbGVjdGlvbiBmYWlsZWQgdG8gZmluZCBhIHJvdXRlIChv
cgogCQkJICogdmFsaWQgc291cmNlIGFkZHIpLCBzbyB3ZSBjYW4ndCBnZXQgdGhlcmUgZnJvbQpA
QCAtNDM5OSw4ICs0Mzg4LDEzIEBAIHNjdHBfbG93bGV2ZWxfY2h1bmtfb3V0cHV0KHN0cnVjdCBz
Y3RwX2lucGNiICppbnAsCiAJCQkodWludDMyX3QpIChudG9obChpcC0+aXBfc3JjLnNfYWRkcikp
KTsKIAkJU0NUUERCRyhTQ1RQX0RFQlVHX09VVFBVVDMsICJEZXN0aW5hdGlvbiBpcyAleFxuIiwK
IAkJCSh1aW50MzJfdCkobnRvaGwoaXAtPmlwX2RzdC5zX2FkZHIpKSk7CisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJU0NUUERCRyhTQ1RQX0RF
QlVHX09VVFBVVDMsICJSVFAgcm91dGUgaXMgJXAgdGhyb3VnaFxuIiwKKwkJCSh2b2lkICopcm8t
PnJvX25oKTsKKyNlbHNlCiAJCVNDVFBEQkcoU0NUUF9ERUJVR19PVVRQVVQzLCAiUlRQIHJvdXRl
IGlzICVwIHRocm91Z2hcbiIsCiAJCQkodm9pZCAqKXJvLT5yb19ydCk7CisjZW5kaWYKIAogCQlp
ZiAoU0NUUF9HRVRfSEVBREVSX0ZPUl9PVVRQVVQob19wYWspKSB7CiAJCQkvKiBmYWlsZWQgdG8g
cHJlcGVuZCBkYXRhLCBnaXZlIHVwICovCkBAIC00NDEyLDggKzQ0MDYsOCBAQCBzY3RwX2xvd2xl
dmVsX2NodW5rX291dHB1dChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogCQlpZiAocG9ydCkgewog
CQkJc2N0cGhkci0+Y2hlY2tzdW0gPSBzY3RwX2NhbGN1bGF0ZV9ja3N1bShtLCBzaXplb2Yoc3Ry
dWN0IGlwKSArIHNpemVvZihzdHJ1Y3QgdWRwaGRyKSk7CiAJCQlTQ1RQX1NUQVRfSU5DUihzY3Rw
c19zZW5kc3djcmMpOwotI2lmICFkZWZpbmVkKF9fV2luZG93c19fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICgoX19GcmVlQlNEX3ZlcnNp
b24gPiA4MDMwMDAgJiYgX19GcmVlQlNEX3ZlcnNpb24gPCA5MDAwMDApIHx8IF9fRnJlZUJTRF92
ZXJzaW9uID4gOTAwMDAwKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykKIAkJCWlmIChWX3VkcF9ja3N1bSkgewogCQkJCVNDVFBfRU5BQkxFX1VE
UF9DU1VNKG9fcGFrKTsKIAkJCX0KQEAgLTQ0MjIsNyArNDQxNiw3IEBAIHNjdHBfbG93bGV2ZWxf
Y2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAjZW5kaWYKICNlbmRpZgogCQl9
IGVsc2UgewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49
IDgwMDAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAJCQltLT5tX3BrdGhkci5jc3VtX2ZsYWdzID0gQ1NVTV9TQ1RQOwogCQkJbS0+bV9wa3Ro
ZHIuY3N1bV9kYXRhID0gb2Zmc2V0b2Yoc3RydWN0IHNjdHBoZHIsIGNoZWNrc3VtKTsKIAkJCVND
VFBfU1RBVF9JTkNSKHNjdHBzX3NlbmRod2NyYyk7CkBAIC00NDQxLDE0ICs0NDM1LDE3IEBAIHNj
dHBfbG93bGV2ZWxfY2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCQlzY3Rw
X3BhY2tldF9sb2cob19wYWspOwogI2VuZGlmCiAJCS8qIHNlbmQgaXQgb3V0LiAgdGFibGUgaWQg
aXMgdGFrZW4gZnJvbSBzdGNiICovCi0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQo
U0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiAJCWlmICgoU0NUUF9CQVNFX1NZU0NUTChzY3RwX291dHB1dF91bmxv
Y2tlZCkpICYmIChzb19sb2NrZWQpKSB7CiAJCQlzbyA9IFNDVFBfSU5QX1NPKGlucCk7CiAJCQlT
Q1RQX1NPQ0tFVF9VTkxPQ0soc28sIDApOwogCQl9CisjZW5kaWYKKyNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQlTQ1RQX1BST0JFNShzZW5kLCBO
VUxMLCBzdGNiLCBpcCwgc3RjYiwgc2N0cGhkcik7CiAjZW5kaWYKIAkJU0NUUF9JUF9PVVRQVVQo
cmV0LCBvX3Bhaywgcm8sIHN0Y2IsIHZyZl9pZCk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8
IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCWlmICgoU0NUUF9CQVNFX1NZU0NUTChzY3RwX291
dHB1dF91bmxvY2tlZCkpICYmIChzb19sb2NrZWQpKSB7CiAJCQlhdG9taWNfYWRkX2ludCgmc3Rj
Yi0+YXNvYy5yZWZjbnQsIDEpOwogCQkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwpAQCAtNDQ1Niw2
ICs0NDUzLDExIEBAIHNjdHBfbG93bGV2ZWxfY2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNi
ICppbnAsCiAJCQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwogCQkJYXRvbWljX3N1YnRyYWN0X2ludCgm
c3RjYi0+YXNvYy5yZWZjbnQsIDEpOwogCQl9CisjZW5kaWYKKyNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQlpZiAocG9ydCkgeworCQkJVURQU1RB
VF9JTkModWRwc19vcGFja2V0cyk7CisJCX0KICNlbmRpZgogCQlTQ1RQX1NUQVRfSU5DUihzY3Rw
c19zZW5kcGFja2V0cyk7CiAJCVNDVFBfU1RBVF9JTkNSX0NPVU5URVI2NChzY3Rwc19vdXRwYWNr
ZXRzKTsKQEAgLTQ0NjUsOCArNDQ2Nyw4IEBAIHNjdHBfbG93bGV2ZWxfY2h1bmtfb3V0cHV0KHN0
cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCVNDVFBEQkcoU0NUUF9ERUJVR19PVVRQVVQzLCAiSVAg
b3V0cHV0IHJldHVybnMgJWRcbiIsIHJldCk7CiAJCWlmIChuZXQgPT0gTlVMTCkgewogCQkJLyog
ZnJlZSB0ZW1weSByb3V0ZXMgKi8KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVC
U0RfdmVyc2lvbiA+IDkwMTAwMAotCQkJUk9fUlRGUkVFKHJvKTsKKyNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQkJUk9fTkhGUkVFKHJvKTsKICNl
bHNlCiAJCQlpZiAocm8tPnJvX3J0KSB7CiAJCQkJUlRGUkVFKHJvLT5yb19ydCk7CkBAIC00NDc0
LDIxICs0NDc2LDM1IEBAIHNjdHBfbG93bGV2ZWxfY2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lu
cGNiICppbnAsCiAJCQl9CiAjZW5kaWYKIAkJfSBlbHNlIHsKKyNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQkJaWYgKChyby0+cm9fbmggIT0gTlVM
TCkgJiYgKG5ldC0+cm8uX3NfYWRkcikgJiYKKyNlbHNlCiAJCQlpZiAoKHJvLT5yb19ydCAhPSBO
VUxMKSAmJiAobmV0LT5yby5fc19hZGRyKSAmJgorI2VuZGlmCiAJCQkgICAgKChuZXQtPmRlc3Rf
c3RhdGUgJiBTQ1RQX0FERFJfTk9fUE1UVUQpID09IDApKSB7CiAJCQkJdWludDMyX3QgbXR1Owog
CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJ
CQltdHUgPSBTQ1RQX0dBVEhFUl9NVFVfRlJPTV9ST1VURShuZXQtPnJvLl9zX2FkZHIsICZuZXQt
PnJvLl9sX2FkZHIuc2EsIHJvLT5yb19uaCk7CisjZWxzZQogCQkJCW10dSA9IFNDVFBfR0FUSEVS
X01UVV9GUk9NX1JPVVRFKG5ldC0+cm8uX3NfYWRkciwgJm5ldC0+cm8uX2xfYWRkci5zYSwgcm8t
PnJvX3J0KTsKKyNlbmRpZgogCQkJCWlmIChtdHUgPiAwKSB7CiAJCQkJCWlmIChuZXQtPnBvcnQp
IHsKIAkJCQkJCW10dSAtPSBzaXplb2Yoc3RydWN0IHVkcGhkcik7CiAJCQkJCX0KLQkJCQkJaWYg
KChzdGNiICE9IE5VTEwpICYmIChzdGNiLT5hc29jLnNtYWxsZXN0X210dSA+IG10dSkpIHsKLQkJ
CQkJCXNjdHBfbXR1X3NpemVfcmVzZXQoaW5wLCAmc3RjYi0+YXNvYywgbXR1KTsKKwkJCQkJaWYg
KG10dSA8IG5ldC0+bXR1KSB7CisJCQkJCQlpZiAoKHN0Y2IgIT0gTlVMTCkgJiYgKHN0Y2ItPmFz
b2Muc21hbGxlc3RfbXR1ID4gbXR1KSkgeworCQkJCQkJCXNjdHBfbXR1X3NpemVfcmVzZXQoaW5w
LCAmc3RjYi0+YXNvYywgbXR1KTsKKwkJCQkJCX0KKwkJCQkJCW5ldC0+bXR1ID0gbXR1OwogCQkJ
CQl9Ci0JCQkJCW5ldC0+bXR1ID0gbXR1OwogCQkJCX0KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQkJfSBlbHNlIGlmIChyby0+cm9fbmggPT0g
TlVMTCkgeworI2Vsc2UKIAkJCX0gZWxzZSBpZiAocm8tPnJvX3J0ID09IE5VTEwpIHsKKyNlbmRp
ZgogCQkJCS8qIHJvdXRlIHdhcyBmcmVlZCAqLwogCQkJCWlmIChuZXQtPnJvLl9zX2FkZHIgJiYK
IAkJCQkgICAgbmV0LT5zcmNfYWRkcl9zZWxlY3RlZCkgewpAQCAtNDUwNyw3ICs0NTIzLDcgQEAg
c2N0cF9sb3dsZXZlbF9jaHVua19vdXRwdXQoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJdWlu
dDMyX3QgZmxvd2xhYmVsLCBmbG93aW5mbzsKIAkJc3RydWN0IGlwNl9oZHIgKmlwNmg7CiAJCXN0
cnVjdCByb3V0ZV9pbjYgaXA2cm91dGU7Ci0jaWYgIShkZWZpbmVkKF9fUGFuZGFfXykgfHwgZGVm
aW5lZChfX1VzZXJzcGFjZV9fKSkKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlzdHJ1
Y3QgaWZuZXQgKmlmcDsKICNlbmRpZgogCQlzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW42LCB0bXAs
ICpsc2E2LCBsc2E2X3RtcDsKQEAgLTQ1MzEsMTAgKzQ1NDcsMTAgQEAgc2N0cF9sb3dsZXZlbF9j
aHVua19vdXRwdXQoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJCSAqIFRoaXMgbWVhbnMgZXNw
ZWNpYWxseSwgdGhhdCBpdCBpcyBub3Qgc2V0IGF0IHRoZQogCQkJICogU0NUUCBsYXllci4gU28g
dXNlIHRoZSB2YWx1ZSBmcm9tIHRoZSBJUCBsYXllci4KIAkJCSAqLwotI2lmIGRlZmluZWQoX19B
UFBMRV9fKSAmJiAoIWRlZmluZWQoQVBQTEVfTEVPUEFSRCkgJiYgIWRlZmluZWQoQVBQTEVfU05P
V0xFT1BBUkQpICYmICFkZWZpbmVkKEFQUExFX0xJT04pICYmICFkZWZpbmVkKEFQUExFX01PVU5U
QUlOTElPTikpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKSAmJiAoIWRlZmluZWQoQVBQTEVfTEVPUEFSRCkgJiYgIWRlZmluZWQoQVBQTEVfU05PV0xF
T1BBUkQpICYmICFkZWZpbmVkKEFQUExFX0xJT04pICYmICFkZWZpbmVkKEFQUExFX01PVU5UQUlO
TElPTikpCiAJCQlmbG93bGFiZWwgPSBudG9obChpbnAtPmlwX2lucC5pbnAuaW5wX2Zsb3cpOwog
I2Vsc2UKLQkJCWZsb3dsYWJlbCA9IG50b2hsKCgoc3RydWN0IGluNnBjYiAqKWlucCktPmluNnBf
Zmxvd2luZm8pOworCQkJZmxvd2xhYmVsID0gbnRvaGwoKChzdHJ1Y3QgaW5wY2IgKilpbnApLT5p
bnBfZmxvdyk7CiAjZW5kaWYKIAkJfQogCQlmbG93bGFiZWwgJj0gMHgwMDBmZmZmZjsKQEAgLTQ1
NTIsNyArNDU2OCw3IEBAIHNjdHBfbG93bGV2ZWxfY2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lu
cGNiICppbnAsCiAJCVNDVFBfQlVGX0xFTihuZXdtKSA9IGxlbjsKIAkJU0NUUF9CVUZfTkVYVChu
ZXdtKSA9IG07CiAJCW0gPSBuZXdtOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJaWYgKG5ldCAh
PSBOVUxMKSB7CiAJCQltLT5tX3BrdGhkci5mbG93aWQgPSBuZXQtPmZsb3dpZDsKIAkJCU1fSEFT
SFRZUEVfU0VUKG0sIG5ldC0+Zmxvd3R5cGUpOwpAQCAtNDU3MSw3ICs0NTg3LDcgQEAgc2N0cF9s
b3dsZXZlbF9jaHVua19vdXRwdXQoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAogI2lmZGVmIFND
VFBfRU1CRURERURfVjZfU0NPUEUKIAkJLyogS0FNRSBoYWNrOiBlbWJlZCBzY29wZWlkICovCi0j
aWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiAjaWYgZGVmaW5lZChBUFBMRV9MRU9QQVJEKSB8fCBkZWZpbmVkKEFQ
UExFX1NOT1dMRU9QQVJEKQogCQlpZiAoaW42X2VtYmVkc2NvcGUoJnNpbjYtPnNpbjZfYWRkciwg
c2luNiwgTlVMTCwgTlVMTCkgIT0gMCkKICNlbHNlCkBAIC00NTg0LDYgKzQ2MDAsNyBAQCBzY3Rw
X2xvd2xldmVsX2NodW5rX291dHB1dChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogI2VuZGlmCiAJ
CXsKIAkJCVNDVFBfTFRSQUNFX0VSUl9SRVRfUEtUKG0sIGlucCwgc3RjYiwgbmV0LCBTQ1RQX0ZS
T01fU0NUUF9PVVRQVVQsIEVJTlZBTCk7CisJCQlzY3RwX21fZnJlZW0obSk7CiAJCQlyZXR1cm4g
KEVJTlZBTCk7CiAJCX0KICNlbmRpZiAvKiBTQ1RQX0VNQkVEREVEX1Y2X1NDT1BFICovCkBAIC00
NjA3LDEyICs0NjI0LDEwIEBAIHNjdHBfbG93bGV2ZWxfY2h1bmtfb3V0cHV0KHN0cnVjdCBzY3Rw
X2lucGNiICppbnAsCiAJCQkgKiBUaGlzIG1lYW5zIGVzcGVjaWFsbHksIHRoYXQgaXQgaXMgbm90
IHNldCBhdCB0aGUKIAkJCSAqIFNDVFAgbGF5ZXIuIFNvIHVzZSB0aGUgdmFsdWUgZnJvbSB0aGUg
SVAgbGF5ZXIuCiAJCQkgKi8KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9f
QVBQTEVfXykgfHwgZGVmaW5lZChfX1BhbmRhX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pIHx8
IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgKCFkZWZp
bmVkKEFQUExFX0xFT1BBUkQpICYmICFkZWZpbmVkKEFQUExFX1NOT1dMRU9QQVJEKSAmJiAhZGVm
aW5lZChBUFBMRV9MSU9OKSAmJiAhZGVmaW5lZChBUFBMRV9NT1VOVEFJTkxJT04pKQorI2lmIGRl
ZmluZWQoX19BUFBMRV9fKSAgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykgJiYgKCFkZWZpbmVk
KEFQUExFX0xFT1BBUkQpICYmICFkZWZpbmVkKEFQUExFX1NOT1dMRU9QQVJEKSAmJiAhZGVmaW5l
ZChBUFBMRV9MSU9OKSAmJiAhZGVmaW5lZChBUFBMRV9NT1VOVEFJTkxJT04pKQogCQkJdG9zX3Zh
bHVlID0gKG50b2hsKGlucC0+aXBfaW5wLmlucC5pbnBfZmxvdykgPj4gMjApICYgMHhmZjsKICNl
bHNlCi0JCQl0b3NfdmFsdWUgPSAobnRvaGwoKChzdHJ1Y3QgaW42cGNiICopaW5wKS0+aW42cF9m
bG93aW5mbykgPj4gMjApICYgMHhmZjsKLSNlbmRpZgorCQkJdG9zX3ZhbHVlID0gKG50b2hsKCgo
c3RydWN0IGlucGNiICopaW5wKS0+aW5wX2Zsb3cpID4+IDIwKSAmIDB4ZmY7CiAjZW5kaWYKIAkJ
fQogCQl0b3NfdmFsdWUgJj0gMHhmYzsKQEAgLTQ2MzAsNyArNDY0NSw3IEBAIHNjdHBfbG93bGV2
ZWxfY2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCX0gZWxzZSB7CiAJCQlp
cDZoLT5pcDZfbnh0ID0gSVBQUk9UT19TQ1RQOwogCQl9Ci0JCWlwNmgtPmlwNl9wbGVuID0gaHRv
bnMocGFja2V0X2xlbmd0aCAtIHNpemVvZihzdHJ1Y3QgaXA2X2hkcikpOworCQlpcDZoLT5pcDZf
cGxlbiA9IGh0b25zKCh1aW50MTZfdCkocGFja2V0X2xlbmd0aCAtIHNpemVvZihzdHJ1Y3QgaXA2
X2hkcikpKTsKIAkJaXA2aC0+aXA2X2RzdCA9IHNpbjYtPnNpbjZfYWRkcjsKIAogCQkvKgpAQCAt
NDY0OSwxNiArNDY2NCwyMCBAQCBzY3RwX2xvd2xldmVsX2NodW5rX291dHB1dChzdHJ1Y3Qgc2N0
cF9pbnBjYiAqaW5wLAogCQkJCXNjdHBfZnJlZV9pZmEobmV0LT5yby5fc19hZGRyKTsKIAkJCQlu
ZXQtPnJvLl9zX2FkZHIgPSBOVUxMOwogCQkJCW5ldC0+c3JjX2FkZHJfc2VsZWN0ZWQgPSAwOwor
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQkJ
Uk9fTkhGUkVFKHJvKTsKKyNlbHNlCiAJCQkJaWYgKHJvLT5yb19ydCkgewogCQkJCQlSVEZSRUUo
cm8tPnJvX3J0KTsKIAkJCQkJcm8tPnJvX3J0ID0gTlVMTDsKIAkJCQl9CisjZW5kaWYKIAkJCX0K
IAkJCWlmIChuZXQtPnNyY19hZGRyX3NlbGVjdGVkID09IDApIHsKICNpZmRlZiBTQ1RQX0VNQkVE
REVEX1Y2X1NDT1BFCiAJCQkJc2luNiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopJm5ldC0+cm8u
X2xfYWRkcjsKIAkJCQkvKiBLQU1FIGhhY2s6IGVtYmVkIHNjb3BlaWQgKi8KLSNpZiBkZWZpbmVk
KF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKICNpZiBkZWZpbmVkKEFQUExFX0xFT1BBUkQpIHx8IGRlZmluZWQoQVBQTEVfU05PV0xF
T1BBUkQpCiAJCQkJaWYgKGluNl9lbWJlZHNjb3BlKCZzaW42LT5zaW42X2FkZHIsIHNpbjYsIE5V
TEwsIE5VTEwpICE9IDApCiAjZWxzZQpAQCAtNDY3MSw2ICs0NjkwLDcgQEAgc2N0cF9sb3dsZXZl
bF9jaHVua19vdXRwdXQoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKICNlbmRpZgogCQkJCXsKIAkJ
CQkJU0NUUF9MVFJBQ0VfRVJSX1JFVF9QS1QobSwgaW5wLCBzdGNiLCBuZXQsIFNDVFBfRlJPTV9T
Q1RQX09VVFBVVCwgRUlOVkFMKTsKKwkJCQkJc2N0cF9tX2ZyZWVtKG0pOwogCQkJCQlyZXR1cm4g
KEVJTlZBTCk7CiAJCQkJfQogI2VuZGlmIC8qIFNDVFBfRU1CRURERURfVjZfU0NPUEUgKi8KQEAg
LTQ3MDMsNyArNDcyMyw3IEBAIHNjdHBfbG93bGV2ZWxfY2h1bmtfb3V0cHV0KHN0cnVjdCBzY3Rw
X2lucGNiICppbnAsCiAjaWZkZWYgU0NUUF9FTUJFRERFRF9WNl9TQ09QRQogCQkJc2luNiA9IChz
dHJ1Y3Qgc29ja2FkZHJfaW42ICopJnJvLT5yb19kc3Q7CiAJCQkvKiBLQU1FIGhhY2s6IGVtYmVk
IHNjb3BlaWQgKi8KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZiBkZWZpbmVkKEFQUExFX0xFT1BBUkQp
IHx8IGRlZmluZWQoQVBQTEVfU05PV0xFT1BBUkQpCiAJCQlpZiAoaW42X2VtYmVkc2NvcGUoJnNp
bjYtPnNpbjZfYWRkciwgc2luNiwgTlVMTCwgTlVMTCkgIT0gMCkKICNlbHNlCkBAIC00NzE2LDYg
KzQ3MzYsNyBAQCBzY3RwX2xvd2xldmVsX2NodW5rX291dHB1dChzdHJ1Y3Qgc2N0cF9pbnBjYiAq
aW5wLAogI2VuZGlmCiAJCQkgIHsKIAkJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUX1BLVChtLCBpbnAs
IHN0Y2IsIG5ldCwgU0NUUF9GUk9NX1NDVFBfT1VUUFVULCBFSU5WQUwpOworCQkJCXNjdHBfbV9m
cmVlbShtKTsKIAkJCQlyZXR1cm4gKEVJTlZBTCk7CiAJCQkgIH0KICNlbmRpZiAvKiBTQ1RQX0VN
QkVEREVEX1Y2X1NDT1BFICovCkBAIC00NzQ4LDcgKzQ3NjksMTEgQEAgc2N0cF9sb3dsZXZlbF9j
aHVua19vdXRwdXQoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJfQogCQlsc2E2LT5zaW42X3Bv
cnQgPSBpbnAtPnNjdHBfbHBvcnQ7CiAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQorCQlpZiAocm8tPnJvX25oID09IE5VTEwpIHsKKyNlbHNlCiAJ
CWlmIChyby0+cm9fcnQgPT0gTlVMTCkgeworI2VuZGlmCiAJCQkvKgogCQkJICogc3JjIGFkZHIg
c2VsZWN0aW9uIGZhaWxlZCB0byBmaW5kIGEgcm91dGUgKG9yCiAJCQkgKiB2YWxpZCBzb3VyY2Ug
YWRkciksIHNvIHdlIGNhbid0IGdldCB0aGVyZSBmcm9tCkBAIC00ODE2LDcgKzQ4NDEsNyBAQCBz
Y3RwX2xvd2xldmVsX2NodW5rX291dHB1dChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogCQkgKiB0
aGF0IG91ciBybyBwb2ludGVyIGlzIG5vdyBmaWxsZWQKIAkJICovCiAJCWlwNmgtPmlwNl9obGlt
ID0gU0NUUF9HRVRfSExJTShpbnAsIHJvKTsKLSNpZiAhKGRlZmluZWQoX19QYW5kYV9fKSB8fCBk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCWlm
cCA9IFNDVFBfR0VUX0lGTl9WT0lEX0ZST01fUk9VVEUocm8pOwogI2VuZGlmCiAKQEAgLTQ4NDgs
MjcgKzQ4NzMsMjAgQEAgc2N0cF9sb3dsZXZlbF9jaHVua19vdXRwdXQoc3RydWN0IHNjdHBfaW5w
Y2IgKmlucCwKIAkJaWYgKHBvcnQpIHsKIAkJCXNjdHBoZHItPmNoZWNrc3VtID0gc2N0cF9jYWxj
dWxhdGVfY2tzdW0obSwgc2l6ZW9mKHN0cnVjdCBpcDZfaGRyKSArIHNpemVvZihzdHJ1Y3QgdWRw
aGRyKSk7CiAJCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19zZW5kc3djcmMpOwotI2lmIGRlZmluZWQo
X19XaW5kb3dzX18pCisjaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiBkZWZpbmVkKF9X
SU4zMikKIAkJCXVkcC0+dWhfc3VtID0gMDsKLSNlbGlmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CisjZWxzZQogCQkJaWYgKCh1ZHAtPnVoX3N1bSA9IGluNl9ja3N1bShvX3BhaywgSVBQUk9UT19V
RFAsIHNpemVvZihzdHJ1Y3QgaXA2X2hkciksIHBhY2tldF9sZW5ndGggLSBzaXplb2Yoc3RydWN0
IGlwNl9oZHIpKSkgPT0gMCkgewogCQkJCXVkcC0+dWhfc3VtID0gMHhmZmZmOwogCQkJfQorI2Vu
ZGlmCiAjZW5kaWYKIAkJfSBlbHNlIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0Zy
ZWVCU0RfdmVyc2lvbiA+PSA4MDAwMDAKLSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA8IDkwMDAwMAot
CQkJc2N0cGhkci0+Y2hlY2tzdW0gPSBzY3RwX2NhbGN1bGF0ZV9ja3N1bShtLCBzaXplb2Yoc3Ry
dWN0IGlwNl9oZHIpKTsKLQkJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3NlbmRzd2NyYyk7Ci0jZWxz
ZQotI2lmIF9fRnJlZUJTRF92ZXJzaW9uID4gOTAxMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCW0tPm1fcGt0aGRyLmNzdW1fZmxhZ3Mg
PSBDU1VNX1NDVFBfSVBWNjsKLSNlbHNlCi0JCQltLT5tX3BrdGhkci5jc3VtX2ZsYWdzID0gQ1NV
TV9TQ1RQOwotI2VuZGlmCiAJCQltLT5tX3BrdGhkci5jc3VtX2RhdGEgPSBvZmZzZXRvZihzdHJ1
Y3Qgc2N0cGhkciwgY2hlY2tzdW0pOwogCQkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfc2VuZGh3Y3Jj
KTsKLSNlbmRpZgogI2Vsc2UKIAkJCWlmICghKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9ub19jc3Vt
X29uX2xvb3BiYWNrKSAmJgogCQkJICAgICAgKHN0Y2IpICYmIChzdGNiLT5hc29jLnNjb3BlLmxv
b3BiYWNrX3Njb3BlKSkpIHsKQEAgLTQ4ODAsNyArNDg5OCw3IEBAIHNjdHBfbG93bGV2ZWxfY2h1
bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAjZW5kaWYKIAkJfQogCQkvKiBzZW5k
IGl0IG91dC4gdGFibGUgaWQgaXMgdGFrZW4gZnJvbSBzdGNiICovCi0jaWYgZGVmaW5lZChfX0FQ
UExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQ
UExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCWlmICgoU0NUUF9CQVNFX1NZU0NU
TChzY3RwX291dHB1dF91bmxvY2tlZCkpICYmIChzb19sb2NrZWQpKSB7CiAJCQlzbyA9IFNDVFBf
SU5QX1NPKGlucCk7CiAJCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDApOwpAQCAtNDg5MCwxMiAr
NDkwOCwxNSBAQCBzY3RwX2xvd2xldmVsX2NodW5rX291dHB1dChzdHJ1Y3Qgc2N0cF9pbnBjYiAq
aW5wLAogCQlpZiAoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2xvZ2dpbmdfbGV2ZWwpICYgU0NUUF9M
QVNUX1BBQ0tFVF9UUkFDSU5HKQogCQkJc2N0cF9wYWNrZXRfbG9nKG9fcGFrKTsKICNlbmRpZgot
I2lmICEoZGVmaW5lZChfX1BhbmRhX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCisjaWYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorCQlTQ1RQ
X1BST0JFNShzZW5kLCBOVUxMLCBzdGNiLCBpcDZoLCBzdGNiLCBzY3RwaGRyKTsKKyNlbmRpZgog
CQlTQ1RQX0lQNl9PVVRQVVQocmV0LCBvX3BhaywgKHN0cnVjdCByb3V0ZV9pbjYgKilybywgJmlm
cCwgc3RjYiwgdnJmX2lkKTsKICNlbHNlCiAJCVNDVFBfSVA2X09VVFBVVChyZXQsIG9fcGFrLCAo
c3RydWN0IHJvdXRlX2luNiAqKXJvLCBOVUxMLCBzdGNiLCB2cmZfaWQpOwogI2VuZGlmCi0jaWYg
ZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYg
ZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCWlmICgoU0NU
UF9CQVNFX1NZU0NUTChzY3RwX291dHB1dF91bmxvY2tlZCkpICYmIChzb19sb2NrZWQpKSB7CiAJ
CQlhdG9taWNfYWRkX2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIDEpOwogCQkJU0NUUF9UQ0JfVU5M
T0NLKHN0Y2IpOwpAQCAtNDkxMCw2ICs0OTMxLDExIEBAIHNjdHBfbG93bGV2ZWxfY2h1bmtfb3V0
cHV0KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCQlzaW42LT5zaW42X3BvcnQgPSBwcmV2X3Bv
cnQ7CiAJCX0KIAkJU0NUUERCRyhTQ1RQX0RFQlVHX09VVFBVVDMsICJyZXR1cm4gZnJvbSBzZW5k
IGlzICVkXG4iLCByZXQpOworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCisJCWlmIChwb3J0KSB7CisJCQlVRFBTVEFUX0lOQyh1ZHBzX29wYWNrZXRz
KTsKKwkJfQorI2VuZGlmCiAJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3NlbmRwYWNrZXRzKTsKIAkJ
U0NUUF9TVEFUX0lOQ1JfQ09VTlRFUjY0KHNjdHBzX291dHBhY2tldHMpOwogCQlpZiAocmV0KSB7
CkBAIC00OTE3LDggKzQ5NDMsOCBAQCBzY3RwX2xvd2xldmVsX2NodW5rX291dHB1dChzdHJ1Y3Qg
c2N0cF9pbnBjYiAqaW5wLAogCQl9CiAJCWlmIChuZXQgPT0gTlVMTCkgewogCQkJLyogTm93IGlm
IHdlIGhhZCBhIHRlbXAgcm91dGUgZnJlZSBpdCAqLwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
ICYmIF9fRnJlZUJTRF92ZXJzaW9uID4gOTAxMDAwCi0JCQlST19SVEZSRUUocm8pOworI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQlST19OSEZS
RUUocm8pOwogI2Vsc2UKIAkJCWlmIChyby0+cm9fcnQpIHsKIAkJCQlSVEZSRUUocm8tPnJvX3J0
KTsKQEAgLTQ5MjcsNyArNDk1MywxMSBAQCBzY3RwX2xvd2xldmVsX2NodW5rX291dHB1dChzdHJ1
Y3Qgc2N0cF9pbnBjYiAqaW5wLAogI2VuZGlmCiAJCX0gZWxzZSB7CiAJCQkvKiBQTVRVIGNoZWNr
IHZlcnN1cyBzbWFsbGVzdCBhc29jIE1UVSBnb2VzIGhlcmUgKi8KKyNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQkJaWYgKHJvLT5yb19uaCA9PSBO
VUxMKSB7CisjZWxzZQogCQkJaWYgKHJvLT5yb19ydCA9PSBOVUxMKSB7CisjZW5kaWYKIAkJCQkv
KiBSb3V0ZSB3YXMgZnJlZWQgKi8KIAkJCQlpZiAobmV0LT5yby5fc19hZGRyICYmCiAJCQkJICAg
IG5ldC0+c3JjX2FkZHJfc2VsZWN0ZWQpIHsKQEAgLTQ5MzYsMjQgKzQ5NjYsMzQgQEAgc2N0cF9s
b3dsZXZlbF9jaHVua19vdXRwdXQoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJCQl9CiAJCQkJ
bmV0LT5zcmNfYWRkcl9zZWxlY3RlZCA9IDA7CiAJCQl9CisjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJCWlmICgocm8tPnJvX25oICE9IE5VTEwp
ICYmIChuZXQtPnJvLl9zX2FkZHIpICYmCisjZWxzZQogCQkJaWYgKChyby0+cm9fcnQgIT0gTlVM
TCkgJiYgKG5ldC0+cm8uX3NfYWRkcikgJiYKKyNlbmRpZgogCQkJICAgICgobmV0LT5kZXN0X3N0
YXRlICYgU0NUUF9BRERSX05PX1BNVFVEKSA9PSAwKSkgewogCQkJCXVpbnQzMl90IG10dTsKIAor
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQkJ
bXR1ID0gU0NUUF9HQVRIRVJfTVRVX0ZST01fUk9VVEUobmV0LT5yby5fc19hZGRyLCAmbmV0LT5y
by5fbF9hZGRyLnNhLCByby0+cm9fbmgpOworI2Vsc2UKIAkJCQltdHUgPSBTQ1RQX0dBVEhFUl9N
VFVfRlJPTV9ST1VURShuZXQtPnJvLl9zX2FkZHIsICZuZXQtPnJvLl9sX2FkZHIuc2EsIHJvLT5y
b19ydCk7CisjZW5kaWYKIAkJCQlpZiAobXR1ID4gMCkgewogCQkJCQlpZiAobmV0LT5wb3J0KSB7
CiAJCQkJCQltdHUgLT0gc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpOwogCQkJCQl9Ci0JCQkJCWlmICgo
c3RjYiAhPSBOVUxMKSAmJiAoc3RjYi0+YXNvYy5zbWFsbGVzdF9tdHUgPiBtdHUpKSB7Ci0JCQkJ
CQlzY3RwX210dV9zaXplX3Jlc2V0KGlucCwgJnN0Y2ItPmFzb2MsIG10dSk7CisJCQkJCWlmICht
dHUgPCBuZXQtPm10dSkgeworCQkJCQkJaWYgKChzdGNiICE9IE5VTEwpICYmIChzdGNiLT5hc29j
LnNtYWxsZXN0X210dSA+IG10dSkpIHsKKwkJCQkJCQlzY3RwX210dV9zaXplX3Jlc2V0KGlucCwg
JnN0Y2ItPmFzb2MsIG10dSk7CisJCQkJCQl9CisJCQkJCQluZXQtPm10dSA9IG10dTsKIAkJCQkJ
fQotCQkJCQluZXQtPm10dSA9IG10dTsKIAkJCQl9CiAJCQl9Ci0jaWYgIWRlZmluZWQoX19QYW5k
YV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAJCQllbHNlIGlmIChpZnApIHsKLSNpZiBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmIGRl
ZmluZWQoX1dJTjMyKQogI2RlZmluZSBORF9JRklORk8oaWZwKQkoaWZwKQogI2RlZmluZSBsaW5r
bXR1CQlpZl9tdHUKICNlbmRpZgpAQCAtNTAzMCwxMSArNTA3MCw3IEBAIHNjdHBfbG93bGV2ZWxf
Y2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAKIAogdm9pZAotc2N0cF9zZW5k
X2luaXRpYXRlKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwg
aW50IHNvX2xvY2tlZAotI2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoU0NUUF9T
T19MT0NLX1RFU1RJTkcpCi0gICAgU0NUUF9VTlVTRUQKLSNlbmRpZgotICAgICkKK3NjdHBfc2Vu
ZF9pbml0aWF0ZShzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2Is
IGludCBzb19sb2NrZWQpCiB7CiAJc3RydWN0IG1idWYgKm0sICptX2xhc3Q7CiAJc3RydWN0IHNj
dHBfbmV0cyAqbmV0OwpAQCAtNTA0Nyw3ICs1MDgzLDcgQEAgc2N0cF9zZW5kX2luaXRpYXRlKHN0
cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgaW50IHNvX2xvY2tl
ZAogCWludCBlcnJvcjsKIAl1aW50MTZfdCBudW1fZXh0LCBjaHVua19sZW4sIHBhZGRpbmdfbGVu
LCBwYXJhbWV0ZXJfbGVuOwogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChf
X0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJaWYgKHNvX2xvY2tlZCkgewog
CQlzY3RwX2xvY2tfYXNzZXJ0KFNDVFBfSU5QX1NPKGlucCkpOwogCX0gZWxzZSB7CkBAIC01MzEy
LDcgKzUzNDgsNyBAQCBzY3RwX3NlbmRfaW5pdGlhdGUoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwg
c3RydWN0IHNjdHBfdGNiICpzdGNiLCBpbnQgc29fbG9ja2VkCiAJICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG0sIDAsIE5VTEwsIDAsIDAsIDAsIDAsCiAJICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucC0+c2N0cF9scG9ydCwgc3RjYi0+cnBv
cnQsIGh0b25sKDApLAogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
ZXQtPnBvcnQsIE5VTEwsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLCAwLAogI2VuZGlmCiAJICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNvX2xvY2tlZCkpKSB7CkBAIC01MzMwLDcgKzUzNjYsMTAg
QEAgc2N0cF9zZW5kX2luaXRpYXRlKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3Rw
X3RjYiAqc3RjYiwgaW50IHNvX2xvY2tlZAogCiBzdHJ1Y3QgbWJ1ZiAqCiBzY3RwX2FyZXRoZXJl
X3VucmVjb2duaXplZF9wYXJhbWV0ZXJzKHN0cnVjdCBtYnVmICppbl9pbml0cGt0LAotCWludCBw
YXJhbV9vZmZzZXQsIGludCAqYWJvcnRfcHJvY2Vzc2luZywgc3RydWN0IHNjdHBfY2h1bmtoZHIg
KmNwLCBpbnQgKm5hdF9mcmllbmRseSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IHBhcmFtX29mZnNldCwgaW50ICphYm9ydF9wcm9jZXNzaW5nLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2N0cF9jaHVua2hkciAqY3AsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqbmF0X2ZyaWVuZGx5LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmNvb2tpZV9mb3VuZCkK
IHsKIAkvKgogCSAqIEdpdmVuIGEgbWJ1ZiBjb250YWluaW5nIGFuIElOSVQgb3IgSU5JVC1BQ0sg
d2l0aCB0aGUgcGFyYW1fb2Zmc2V0CkBAIC01MzQ4LDE4ICs1Mzg3LDIwIEBAIHNjdHBfYXJldGhl
cmVfdW5yZWNvZ25pemVkX3BhcmFtZXRlcnMoc3RydWN0IG1idWYgKmluX2luaXRwa3QsCiAJICov
CiAJc3RydWN0IHNjdHBfcGFyYW1oZHIgKnBoZHIsIHBhcmFtczsKIAotCXN0cnVjdCBtYnVmICpt
YXQsICpvcF9lcnI7Ci0JY2hhciB0ZW1wYnVmW1NDVFBfUEFSQU1fQlVGRkVSX1NJWkVdOworCXN0
cnVjdCBtYnVmICptYXQsICptX3RtcCwgKm9wX2VyciwgKm9wX2Vycl9sYXN0OwogCWludCBhdCwg
bGltaXQsIHBhZF9uZWVkZWQ7CiAJdWludDE2X3QgcHR5cGUsIHBsZW4sIHBhZGRlZF9zaXplOwot
CWludCBlcnJfYXQ7CiAKIAkqYWJvcnRfcHJvY2Vzc2luZyA9IDA7CisJaWYgKGNvb2tpZV9mb3Vu
ZCAhPSBOVUxMKSB7CisJCSpjb29raWVfZm91bmQgPSAwOworCX0KIAltYXQgPSBpbl9pbml0cGt0
OwotCWVycl9hdCA9IDA7CiAJbGltaXQgPSBudG9ocyhjcC0+Y2h1bmtfbGVuZ3RoKSAtIHNpemVv
ZihzdHJ1Y3Qgc2N0cF9pbml0X2NodW5rKTsKIAlhdCA9IHBhcmFtX29mZnNldDsKIAlvcF9lcnIg
PSBOVUxMOworCW9wX2Vycl9sYXN0ID0gTlVMTDsKKwlwYWRfbmVlZGVkID0gMDsKIAlTQ1RQREJH
KFNDVFBfREVCVUdfT1VUUFVUMSwgIkNoZWNrIGZvciB1bnJlY29nbml6ZWQgcGFyYW0nc1xuIik7
CiAJcGhkciA9IHNjdHBfZ2V0X25leHRfcGFyYW0obWF0LCBhdCwgJnBhcmFtcywgc2l6ZW9mKHBh
cmFtcykpOwogCXdoaWxlICgocGhkciAhPSBOVUxMKSAmJiAoKHNpemVfdClsaW1pdCA+PSBzaXpl
b2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpKSkgewpAQCAtNTM4MiwxMiArNTQyMywxNyBAQCBzY3Rw
X2FyZXRoZXJlX3VucmVjb2duaXplZF9wYXJhbWV0ZXJzKHN0cnVjdCBtYnVmICppbl9pbml0cGt0
LAogCQlzd2l0Y2ggKHB0eXBlKSB7CiAJCQkvKiBQYXJhbSdzIHdpdGggdmFyaWFibGUgc2l6ZSAq
LwogCQljYXNlIFNDVFBfSEVBUlRCRUFUX0lORk86Ci0JCWNhc2UgU0NUUF9TVEFURV9DT09LSUU6
CiAJCWNhc2UgU0NUUF9VTlJFQ09HX1BBUkFNOgogCQljYXNlIFNDVFBfRVJST1JfQ0FVU0VfSU5E
OgogCQkJLyogb2sgc2tpcCBmd2QgKi8KIAkJCWF0ICs9IHBhZGRlZF9zaXplOwogCQkJYnJlYWs7
CisJCWNhc2UgU0NUUF9TVEFURV9DT09LSUU6CisJCQlpZiAoY29va2llX2ZvdW5kICE9IE5VTEwp
IHsKKwkJCQkqY29va2llX2ZvdW5kID0gMTsKKwkJCX0KKwkJCWF0ICs9IHBhZGRlZF9zaXplOwor
CQkJYnJlYWs7CiAJCQkvKiBQYXJhbSdzIHdpdGggdmFyaWFibGUgc2l6ZSB3aXRoaW4gYSByYW5n
ZSAqLwogCQljYXNlIFNDVFBfQ0hVTktfTElTVDoKIAkJY2FzZSBTQ1RQX1NVUFBPUlRFRF9DSFVO
S19FWFQ6CkBAIC01NDc2LDcwICs1NTIyLDQ3IEBAIHNjdHBfYXJldGhlcmVfdW5yZWNvZ25pemVk
X3BhcmFtZXRlcnMoc3RydWN0IG1idWYgKmluX2luaXRwa3QsCiAJCQlicmVhazsKIAkJY2FzZSBT
Q1RQX0hPU1ROQU1FX0FERFJFU1M6CiAJCXsKLQkJCS8qIFdlIGNhbiBOT1QgaGFuZGxlIEhPU1Qg
TkFNRSBhZGRyZXNzZXMhISAqLworCQkJLyogSG9zdG5hbWUgcGFyYW1ldGVycyBhcmUgZGVwcmVj
YXRlZC4gKi8KKwkJCXN0cnVjdCBzY3RwX2dlbl9lcnJvcl9jYXVzZSAqY2F1c2U7CiAJCQlpbnQg
bF9sZW47CiAKIAkJCVNDVFBEQkcoU0NUUF9ERUJVR19PVVRQVVQxLCAiQ2FuJ3QgaGFuZGxlIGhv
c3RuYW1lIGFkZHJlc3Nlcy4uIGFib3J0IHByb2Nlc3NpbmdcbiIpOwogCQkJKmFib3J0X3Byb2Nl
c3NpbmcgPSAxOwotCQkJaWYgKG9wX2VyciA9PSBOVUxMKSB7Ci0JCQkJLyogT2sgbmVlZCB0byB0
cnkgdG8gZ2V0IGEgbWJ1ZiAqLworCQkJc2N0cF9tX2ZyZWVtKG9wX2Vycik7CisJCQlvcF9lcnIg
PSBOVUxMOworCQkJb3BfZXJyX2xhc3QgPSBOVUxMOwogI2lmZGVmIElORVQ2Ci0JCQkJbF9sZW4g
PSBTQ1RQX01JTl9PVkVSSEVBRDsKKwkJCWxfbGVuID0gU0NUUF9NSU5fT1ZFUkhFQUQ7CiAjZWxz
ZQotCQkJCWxfbGVuID0gU0NUUF9NSU5fVjRfT1ZFUkhFQUQ7CisJCQlsX2xlbiA9IFNDVFBfTUlO
X1Y0X09WRVJIRUFEOwogI2VuZGlmCi0JCQkJbF9sZW4gKz0gc2l6ZW9mKHN0cnVjdCBzY3RwX2No
dW5raGRyKTsKLQkJCQlsX2xlbiArPSBwbGVuOwotCQkJCWxfbGVuICs9IHNpemVvZihzdHJ1Y3Qg
c2N0cF9wYXJhbWhkcik7Ci0JCQkJb3BfZXJyID0gc2N0cF9nZXRfbWJ1Zl9mb3JfbXNnKGxfbGVu
LCAwLCBNX05PV0FJVCwgMSwgTVRfREFUQSk7Ci0JCQkJaWYgKG9wX2VycikgewotCQkJCQlTQ1RQ
X0JVRl9MRU4ob3BfZXJyKSA9IDA7Ci0JCQkJCS8qCi0JCQkJCSAqIHByZS1yZXNlcnZlIHNwYWNl
IGZvciBpcCBhbmQgc2N0cAotCQkJCQkgKiBoZWFkZXIgIGFuZCBjaHVuayBoZHIKLQkJCQkJICov
CisJCQlsX2xlbiArPSBzaXplb2Yoc3RydWN0IHNjdHBfY2h1bmtoZHIpOworCQkJbF9sZW4gKz0g
c2l6ZW9mKHN0cnVjdCBzY3RwX2dlbl9lcnJvcl9jYXVzZSk7CisJCQlvcF9lcnIgPSBzY3RwX2dl
dF9tYnVmX2Zvcl9tc2cobF9sZW4sIDAsIE1fTk9XQUlULCAxLCBNVF9EQVRBKTsKKwkJCWlmIChv
cF9lcnIgIT0gTlVMTCkgeworCQkJCS8qCisJCQkJICogUHJlLXJlc2VydmUgc3BhY2UgZm9yIElQ
LCBTQ1RQLCBhbmQKKwkJCQkgKiBjaHVuayBoZWFkZXIuCisJCQkJICovCiAjaWZkZWYgSU5FVDYK
LQkJCQkJU0NUUF9CVUZfUkVTVl9VRihvcF9lcnIsIHNpemVvZihzdHJ1Y3QgaXA2X2hkcikpOwor
CQkJCVNDVFBfQlVGX1JFU1ZfVUYob3BfZXJyLCBzaXplb2Yoc3RydWN0IGlwNl9oZHIpKTsKICNl
bHNlCi0JCQkJCVNDVFBfQlVGX1JFU1ZfVUYob3BfZXJyLCBzaXplb2Yoc3RydWN0IGlwKSk7Ci0j
ZW5kaWYKLQkJCQkJU0NUUF9CVUZfUkVTVl9VRihvcF9lcnIsIHNpemVvZihzdHJ1Y3Qgc2N0cGhk
cikpOwotCQkJCQlTQ1RQX0JVRl9SRVNWX1VGKG9wX2Vyciwgc2l6ZW9mKHN0cnVjdCBzY3RwX2No
dW5raGRyKSk7Ci0JCQkJfQotCQkJfQotCQkJaWYgKG9wX2VycikgewotCQkJCS8qIElmIHdlIGhh
dmUgc3BhY2UgKi8KLQkJCQlzdHJ1Y3Qgc2N0cF9wYXJhbWhkciBzOwotCi0JCQkJaWYgKGVycl9h
dCAlIDQpIHsKLQkJCQkJdWludDMyX3QgY3B0aGlzID0gMDsKLQotCQkJCQlwYWRfbmVlZGVkID0g
NCAtIChlcnJfYXQgJSA0KTsKLQkJCQkJbV9jb3B5YmFjayhvcF9lcnIsIGVycl9hdCwgcGFkX25l
ZWRlZCwgKGNhZGRyX3QpJmNwdGhpcyk7Ci0JCQkJCWVycl9hdCArPSBwYWRfbmVlZGVkOwotCQkJ
CX0KLQkJCQlzLnBhcmFtX3R5cGUgPSBodG9ucyhTQ1RQX0NBVVNFX1VOUkVTT0xWQUJMRV9BRERS
KTsKLQkJCQlzLnBhcmFtX2xlbmd0aCA9IGh0b25zKHNpemVvZihzKSArIHBsZW4pOwotCQkJCW1f
Y29weWJhY2sob3BfZXJyLCBlcnJfYXQsIHNpemVvZihzKSwgKGNhZGRyX3QpJnMpOwotCQkJCWVy
cl9hdCArPSBzaXplb2Yocyk7Ci0JCQkJaWYgKHBsZW4gPiBzaXplb2YodGVtcGJ1ZikpIHsKLQkJ
CQkJcGxlbiA9IHNpemVvZih0ZW1wYnVmKTsKLQkJCQl9Ci0JCQkJcGhkciA9IHNjdHBfZ2V0X25l
eHRfcGFyYW0obWF0LCBhdCwgKHN0cnVjdCBzY3RwX3BhcmFtaGRyICopdGVtcGJ1ZiwgcGxlbik7
Ci0JCQkJaWYgKHBoZHIgPT0gTlVMTCkgeworCQkJCVNDVFBfQlVGX1JFU1ZfVUYob3BfZXJyLCBz
aXplb2Yoc3RydWN0IGlwKSk7CisjZW5kaWYKKwkJCQlTQ1RQX0JVRl9SRVNWX1VGKG9wX2Vyciwg
c2l6ZW9mKHN0cnVjdCBzY3RwaGRyKSk7CisJCQkJU0NUUF9CVUZfUkVTVl9VRihvcF9lcnIsIHNp
emVvZihzdHJ1Y3Qgc2N0cF9jaHVua2hkcikpOworCQkJCVNDVFBfQlVGX0xFTihvcF9lcnIpID0g
c2l6ZW9mKHN0cnVjdCBzY3RwX2dlbl9lcnJvcl9jYXVzZSk7CisJCQkJY2F1c2UgPSBtdG9kKG9w
X2Vyciwgc3RydWN0IHNjdHBfZ2VuX2Vycm9yX2NhdXNlICopOworCQkJCWNhdXNlLT5jb2RlID0g
aHRvbnMoU0NUUF9DQVVTRV9VTlJFU09MVkFCTEVfQUREUik7CisJCQkJY2F1c2UtPmxlbmd0aCA9
IGh0b25zKCh1aW50MTZfdCkoc2l6ZW9mKHN0cnVjdCBzY3RwX2dlbl9lcnJvcl9jYXVzZSkgKyBw
bGVuKSk7CisJCQkJU0NUUF9CVUZfTkVYVChvcF9lcnIpID0gU0NUUF9NX0NPUFlNKG1hdCwgYXQs
IHBsZW4sIE1fTk9XQUlUKTsKKwkJCQlpZiAoU0NUUF9CVUZfTkVYVChvcF9lcnIpID09IE5VTEwp
IHsKIAkJCQkJc2N0cF9tX2ZyZWVtKG9wX2Vycik7Ci0JCQkJCS8qCi0JCQkJCSAqIHdlIGFyZSBv
dXQgb2YgbWVtb3J5IGJ1dCB3ZSBzdGlsbAotCQkJCQkgKiBuZWVkIHRvIGhhdmUgYSBsb29rIGF0
IHdoYXQgdG8gZG8KLQkJCQkJICogKHRoZSBzeXN0ZW0gaXMgaW4gdHJvdWJsZQotCQkJCQkgKiB0
aG91Z2gpLgotCQkJCQkgKi8KLQkJCQkJcmV0dXJuIChOVUxMKTsKKwkJCQkJb3BfZXJyID0gTlVM
TDsKKwkJCQkJb3BfZXJyX2xhc3QgPSBOVUxMOwogCQkJCX0KLQkJCQltX2NvcHliYWNrKG9wX2Vy
ciwgZXJyX2F0LCBwbGVuLCAoY2FkZHJfdClwaGRyKTsKIAkJCX0KIAkJCXJldHVybiAob3BfZXJy
KTsKLQkJCWJyZWFrOwogCQl9CiAJCWRlZmF1bHQ6CiAJCQkvKgpAQCAtNTU1OSw3ICs1NTgyLDYg
QEAgc2N0cF9hcmV0aGVyZV91bnJlY29nbml6ZWRfcGFyYW1ldGVycyhzdHJ1Y3QgbWJ1ZiAqaW5f
aW5pdHBrdCwKIAkJCQkJbF9sZW4gPSBTQ1RQX01JTl9WNF9PVkVSSEVBRDsKICNlbmRpZgogCQkJ
CQlsX2xlbiArPSBzaXplb2Yoc3RydWN0IHNjdHBfY2h1bmtoZHIpOwotCQkJCQlsX2xlbiArPSBw
bGVuOwogCQkJCQlsX2xlbiArPSBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpOwogCQkJCQlv
cF9lcnIgPSBzY3RwX2dldF9tYnVmX2Zvcl9tc2cobF9sZW4sIDAsIE1fTk9XQUlULCAxLCBNVF9E
QVRBKTsKIAkJCQkJaWYgKG9wX2VycikgewpAQCAtNTU3MSw0MSArNTU5Myw1NSBAQCBzY3RwX2Fy
ZXRoZXJlX3VucmVjb2duaXplZF9wYXJhbWV0ZXJzKHN0cnVjdCBtYnVmICppbl9pbml0cGt0LAog
I2VuZGlmCiAJCQkJCQlTQ1RQX0JVRl9SRVNWX1VGKG9wX2Vyciwgc2l6ZW9mKHN0cnVjdCBzY3Rw
aGRyKSk7CiAJCQkJCQlTQ1RQX0JVRl9SRVNWX1VGKG9wX2Vyciwgc2l6ZW9mKHN0cnVjdCBzY3Rw
X2NodW5raGRyKSk7CisJCQkJCQlvcF9lcnJfbGFzdCA9IG9wX2VycjsKIAkJCQkJfQogCQkJCX0K
LQkJCQlpZiAob3BfZXJyKSB7CisJCQkJaWYgKG9wX2VyciAhPSBOVUxMKSB7CiAJCQkJCS8qIElm
IHdlIGhhdmUgc3BhY2UgKi8KLQkJCQkJc3RydWN0IHNjdHBfcGFyYW1oZHIgczsKKwkJCQkJc3Ry
dWN0IHNjdHBfcGFyYW1oZHIgKnBhcmFtOwogCi0JCQkJCWlmIChlcnJfYXQgJSA0KSB7Ci0JCQkJ
CQl1aW50MzJfdCBjcHRoaXMgPSAwOwotCi0JCQkJCQlwYWRfbmVlZGVkID0gNCAtIChlcnJfYXQg
JSA0KTsKLQkJCQkJCW1fY29weWJhY2sob3BfZXJyLCBlcnJfYXQsIHBhZF9uZWVkZWQsIChjYWRk
cl90KSZjcHRoaXMpOwotCQkJCQkJZXJyX2F0ICs9IHBhZF9uZWVkZWQ7CisJCQkJCWlmIChwYWRf
bmVlZGVkID4gMCkgeworCQkJCQkJb3BfZXJyX2xhc3QgPSBzY3RwX2FkZF9wYWRfdG9tYnVmKG9w
X2Vycl9sYXN0LCBwYWRfbmVlZGVkKTsKKwkJCQkJfQorCQkJCQlpZiAob3BfZXJyX2xhc3QgPT0g
TlVMTCkgeworCQkJCQkJc2N0cF9tX2ZyZWVtKG9wX2Vycik7CisJCQkJCQlvcF9lcnIgPSBOVUxM
OworCQkJCQkJb3BfZXJyX2xhc3QgPSBOVUxMOworCQkJCQkJZ290byBtb3JlX3Byb2Nlc3Npbmc7
CiAJCQkJCX0KLQkJCQkJcy5wYXJhbV90eXBlID0gaHRvbnMoU0NUUF9VTlJFQ09HX1BBUkFNKTsK
LQkJCQkJcy5wYXJhbV9sZW5ndGggPSBodG9ucyhzaXplb2YocykgKyBwbGVuKTsKLQkJCQkJbV9j
b3B5YmFjayhvcF9lcnIsIGVycl9hdCwgc2l6ZW9mKHMpLCAoY2FkZHJfdCkmcyk7Ci0JCQkJCWVy
cl9hdCArPSBzaXplb2Yocyk7Ci0JCQkJCWlmIChwbGVuID4gc2l6ZW9mKHRlbXBidWYpKSB7Ci0J
CQkJCQlwbGVuID0gc2l6ZW9mKHRlbXBidWYpOworCQkJCQlpZiAoTV9UUkFJTElOR1NQQUNFKG9w
X2Vycl9sYXN0KSA8IChpbnQpc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKSkgeworCQkJCQkJ
bV90bXAgPSBzY3RwX2dldF9tYnVmX2Zvcl9tc2coc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRy
KSwgMCwgTV9OT1dBSVQsIDEsIE1UX0RBVEEpOworCQkJCQkJaWYgKG1fdG1wID09IE5VTEwpIHsK
KwkJCQkJCQlzY3RwX21fZnJlZW0ob3BfZXJyKTsKKwkJCQkJCQlvcF9lcnIgPSBOVUxMOworCQkJ
CQkJCW9wX2Vycl9sYXN0ID0gTlVMTDsKKwkJCQkJCQlnb3RvIG1vcmVfcHJvY2Vzc2luZzsKKwkJ
CQkJCX0KKwkJCQkJCVNDVFBfQlVGX0xFTihtX3RtcCkgPSAwOworCQkJCQkJU0NUUF9CVUZfTkVY
VChtX3RtcCkgPSBOVUxMOworCQkJCQkJU0NUUF9CVUZfTkVYVChvcF9lcnJfbGFzdCkgPSBtX3Rt
cDsKKwkJCQkJCW9wX2Vycl9sYXN0ID0gbV90bXA7CiAJCQkJCX0KLQkJCQkJcGhkciA9IHNjdHBf
Z2V0X25leHRfcGFyYW0obWF0LCBhdCwgKHN0cnVjdCBzY3RwX3BhcmFtaGRyICopdGVtcGJ1Ziwg
cGxlbik7Ci0JCQkJCWlmIChwaGRyID09IE5VTEwpIHsKKwkJCQkJcGFyYW0gPSAoc3RydWN0IHNj
dHBfcGFyYW1oZHIgKikobXRvZChvcF9lcnJfbGFzdCwgY2FkZHJfdCkgKyBTQ1RQX0JVRl9MRU4o
b3BfZXJyX2xhc3QpKTsKKwkJCQkJcGFyYW0tPnBhcmFtX3R5cGUgPSBodG9ucyhTQ1RQX1VOUkVD
T0dfUEFSQU0pOworCQkJCQlwYXJhbS0+cGFyYW1fbGVuZ3RoID0gaHRvbnMoKHVpbnQxNl90KXNp
emVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcikgKyBwbGVuKTsKKwkJCQkJU0NUUF9CVUZfTEVOKG9w
X2Vycl9sYXN0KSArPSBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpOworCQkJCQlTQ1RQX0JV
Rl9ORVhUKG9wX2Vycl9sYXN0KSA9IFNDVFBfTV9DT1BZTShtYXQsIGF0LCBwbGVuLCBNX05PV0FJ
VCk7CisJCQkJCWlmIChTQ1RQX0JVRl9ORVhUKG9wX2Vycl9sYXN0KSA9PSBOVUxMKSB7CiAJCQkJ
CQlzY3RwX21fZnJlZW0ob3BfZXJyKTsKLQkJCQkJCS8qCi0JCQkJCQkgKiB3ZSBhcmUgb3V0IG9m
IG1lbW9yeSBidXQKLQkJCQkJCSAqIHdlIHN0aWxsIG5lZWQgdG8gaGF2ZSBhCi0JCQkJCQkgKiBs
b29rIGF0IHdoYXQgdG8gZG8gKHRoZQotCQkJCQkJICogc3lzdGVtIGlzIGluIHRyb3VibGUKLQkJ
CQkJCSAqIHRob3VnaCkuCi0JCQkJCQkgKi8KIAkJCQkJCW9wX2VyciA9IE5VTEw7CisJCQkJCQlv
cF9lcnJfbGFzdCA9IE5VTEw7CiAJCQkJCQlnb3RvIG1vcmVfcHJvY2Vzc2luZzsKKwkJCQkJfSBl
bHNlIHsKKwkJCQkJCXdoaWxlIChTQ1RQX0JVRl9ORVhUKG9wX2Vycl9sYXN0KSAhPSBOVUxMKSB7
CisJCQkJCQkJb3BfZXJyX2xhc3QgPSBTQ1RQX0JVRl9ORVhUKG9wX2Vycl9sYXN0KTsKKwkJCQkJ
CX0KKwkJCQkJfQorCQkJCQlpZiAocGxlbiAlIDQgIT0gMCkgeworCQkJCQkJcGFkX25lZWRlZCA9
IDQgLSAocGxlbiAlIDQpOworCQkJCQl9IGVsc2UgeworCQkJCQkJcGFkX25lZWRlZCA9IDA7CiAJ
CQkJCX0KLQkJCQkJbV9jb3B5YmFjayhvcF9lcnIsIGVycl9hdCwgcGxlbiwgKGNhZGRyX3QpcGhk
cik7Ci0JCQkJCWVycl9hdCArPSBwbGVuOwogCQkJCX0KIAkJCX0KIAkJbW9yZV9wcm9jZXNzaW5n
OgpAQCAtNTYyNiw3ICs1NjYyLDExIEBAIHNjdHBfYXJldGhlcmVfdW5yZWNvZ25pemVkX3BhcmFt
ZXRlcnMoc3RydWN0IG1idWYgKmluX2luaXRwa3QsCiAgaW52YWxpZF9zaXplOgogCVNDVFBEQkco
U0NUUF9ERUJVR19PVVRQVVQxLCAiYWJvcnQgZmxhZyBzZXRcbiIpOwogCSphYm9ydF9wcm9jZXNz
aW5nID0gMTsKLQlpZiAoKG9wX2VyciA9PSBOVUxMKSAmJiBwaGRyKSB7CisJc2N0cF9tX2ZyZWVt
KG9wX2Vycik7CisJb3BfZXJyID0gTlVMTDsKKwlvcF9lcnJfbGFzdCA9IE5VTEw7CisJaWYgKHBo
ZHIgIT0gTlVMTCkgeworCQlzdHJ1Y3Qgc2N0cF9wYXJhbWhkciAqcGFyYW07CiAJCWludCBsX2xl
bjsKICNpZmRlZiBJTkVUNgogCQlsX2xlbiA9IFNDVFBfTUlOX09WRVJIRUFEOwpAQCAtNTY0NSwy
NSArNTY4NSwxNSBAQCBzY3RwX2FyZXRoZXJlX3VucmVjb2duaXplZF9wYXJhbWV0ZXJzKHN0cnVj
dCBtYnVmICppbl9pbml0cGt0LAogI2VuZGlmCiAJCQlTQ1RQX0JVRl9SRVNWX1VGKG9wX2Vyciwg
c2l6ZW9mKHN0cnVjdCBzY3RwaGRyKSk7CiAJCQlTQ1RQX0JVRl9SRVNWX1VGKG9wX2Vyciwgc2l6
ZW9mKHN0cnVjdCBzY3RwX2NodW5raGRyKSk7CisJCQlTQ1RQX0JVRl9MRU4ob3BfZXJyKSA9IDIg
KiBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpOworCQkJcGFyYW0gPSBtdG9kKG9wX2Vyciwg
c3RydWN0IHNjdHBfcGFyYW1oZHIgKik7CisJCQlwYXJhbS0+cGFyYW1fdHlwZSA9IGh0b25zKFND
VFBfQ0FVU0VfUFJPVE9DT0xfVklPTEFUSU9OKTsKKwkJCXBhcmFtLT5wYXJhbV9sZW5ndGggPSBo
dG9ucygyICogc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKSk7CisJCQlwYXJhbSsrOworCQkJ
cGFyYW0tPnBhcmFtX3R5cGUgPSBodG9ucyhwdHlwZSk7CisJCQlwYXJhbS0+cGFyYW1fbGVuZ3Ro
ID0gaHRvbnMocGxlbik7CiAJCX0KIAl9Ci0JaWYgKChvcF9lcnIpICYmIHBoZHIpIHsKLQkJc3Ry
dWN0IHNjdHBfcGFyYW1oZHIgczsKLQotCQlpZiAoZXJyX2F0ICUgNCkgewotCQkJdWludDMyX3Qg
Y3B0aGlzID0gMDsKLQotCQkJcGFkX25lZWRlZCA9IDQgLSAoZXJyX2F0ICUgNCk7Ci0JCQltX2Nv
cHliYWNrKG9wX2VyciwgZXJyX2F0LCBwYWRfbmVlZGVkLCAoY2FkZHJfdCkmY3B0aGlzKTsKLQkJ
CWVycl9hdCArPSBwYWRfbmVlZGVkOwotCQl9Ci0JCXMucGFyYW1fdHlwZSA9IGh0b25zKFNDVFBf
Q0FVU0VfUFJPVE9DT0xfVklPTEFUSU9OKTsKLQkJcy5wYXJhbV9sZW5ndGggPSBodG9ucyhzaXpl
b2YocykgKyBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpKTsKLQkJbV9jb3B5YmFjayhvcF9l
cnIsIGVycl9hdCwgc2l6ZW9mKHMpLCAoY2FkZHJfdCkmcyk7Ci0JCWVycl9hdCArPSBzaXplb2Yo
cyk7Ci0JCS8qIE9ubHkgY29weSBiYWNrIHRoZSBwLWhkciB0aGF0IGNhdXNlZCB0aGUgaXNzdWUg
Ki8KLQkJbV9jb3B5YmFjayhvcF9lcnIsIGVycl9hdCwgc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFt
aGRyKSwgKGNhZGRyX3QpcGhkcik7Ci0JfQogCXJldHVybiAob3BfZXJyKTsKIH0KIApAQCAtNTg5
Miw3ICs1OTIyLDcgQEAgc2N0cF9zZW5kX2luaXRpYXRlX2FjayhzdHJ1Y3Qgc2N0cF9pbnBjYiAq
aW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAgICAgICAgICAgICAgICAgICAgICAgIGludCBp
cGhsZW4sIGludCBvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRk
ciAqc3JjLCBzdHJ1Y3Qgc29ja2FkZHIgKmRzdCwKICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0IHNjdHBoZHIgKnNoLCBzdHJ1Y3Qgc2N0cF9pbml0X2NodW5rICppbml0X2NoaywKLSNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiAJCSAgICAgICB1aW50OF90IG1mbG93dHlwZSwgdWludDMyX3QgbWZs
b3dpZCwKICNlbmRpZgogICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB2cmZfaWQsIHVp
bnQxNl90IHBvcnQpCkBAIC01OTM5LDcgKzU5NjksNyBAQCBzY3RwX3NlbmRfaW5pdGlhdGVfYWNr
KHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJYXNvYyA9
IE5VTEw7CiAJfQogCWlmICgoYXNvYyAhPSBOVUxMKSAmJgotCSAgICAoU0NUUF9HRVRfU1RBVEUo
YXNvYykgIT0gU0NUUF9TVEFURV9DT09LSUVfV0FJVCkpIHsKKwkgICAgKFNDVFBfR0VUX1NUQVRF
KHN0Y2IpICE9IFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQpKSB7CiAJCWlmIChzY3RwX2FyZV90aGVy
ZV9uZXdfYWRkcmVzc2VzKGFzb2MsIGluaXRfcGt0LCBvZmZzZXQsIHNyYykpIHsKIAkJCS8qCiAJ
CQkgKiBuZXcgYWRkcmVzc2VzLCBvdXQgb2YgaGVyZSBpbiBub24tY29va2llLXdhaXQgc3RhdGVz
CkBAIC01OTUxLDcgKzU5ODEsNyBAQCBzY3RwX3NlbmRfaW5pdGlhdGVfYWNrKHN0cnVjdCBzY3Rw
X2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJCW9wX2VyciA9IHNjdHBfZ2Vu
ZXJhdGVfY2F1c2UoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2RpYWdfaW5mb19jb2RlKSwKIAkJCSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFkZHJlc3MgYWRkZWQiKTsKIAkJCXNjdHBfc2Vu
ZF9hYm9ydChpbml0X3BrdCwgaXBobGVuLCBzcmMsIGRzdCwgc2gsIDAsIG9wX2VyciwKLSNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiAJCQkgICAgICAgICAgICAgICAgbWZsb3d0eXBlLCBtZmxvd2lkLCBp
bnAtPmZpYm51bSwKICNlbmRpZgogCQkJICAgICAgICAgICAgICAgIHZyZl9pZCwgcG9ydCk7CkBA
IC01OTY5LDcgKzU5OTksNyBAQCBzY3RwX3NlbmRfaW5pdGlhdGVfYWNrKHN0cnVjdCBzY3RwX2lu
cGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJCW9wX2VyciA9IHNjdHBfZ2VuZXJh
dGVfY2F1c2UoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2RpYWdfaW5mb19jb2RlKSwKIAkJCSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlJlbW90ZSBlbmNhcHN1bGF0aW9uIHBvcnQgY2hhbmdl
ZCIpOwogCQkJc2N0cF9zZW5kX2Fib3J0KGluaXRfcGt0LCBpcGhsZW4sIHNyYywgZHN0LCBzaCwg
MCwgb3BfZXJyLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCSAgICAgICAgICAgICAgICBtZmxv
d3R5cGUsIG1mbG93aWQsIGlucC0+ZmlibnVtLAogI2VuZGlmCiAJCQkgICAgICAgICAgICAgICAg
dnJmX2lkLCBwb3J0KTsKQEAgLTU5NzgsMjAgKzYwMDgsMjIgQEAgc2N0cF9zZW5kX2luaXRpYXRl
X2FjayhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJfQog
CWFib3J0X2ZsYWcgPSAwOwogCW9wX2VyciA9IHNjdHBfYXJldGhlcmVfdW5yZWNvZ25pemVkX3Bh
cmFtZXRlcnMoaW5pdF9wa3QsCi0JCQkJCQkgICAgICAgKG9mZnNldCArIHNpemVvZihzdHJ1Y3Qg
c2N0cF9pbml0X2NodW5rKSksCi0JCQkJCQkgICAgICAgJmFib3J0X2ZsYWcsIChzdHJ1Y3Qgc2N0
cF9jaHVua2hkciAqKWluaXRfY2hrLCAmbmF0X2ZyaWVuZGx5KTsKKwkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvZmZzZXQgKyBzaXplb2Yoc3RydWN0IHNj
dHBfaW5pdF9jaHVuaykpLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJmFib3J0X2ZsYWcsCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoc3RydWN0IHNjdHBfY2h1bmtoZHIgKilpbml0X2NoaywKKwkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYXRfZnJpZW5kbHksIE5V
TEwpOwogCWlmIChhYm9ydF9mbGFnKSB7CiAJZG9fYV9hYm9ydDoKIAkJaWYgKG9wX2VyciA9PSBO
VUxMKSB7CiAJCQljaGFyIG1zZ1tTQ1RQX0RJQUdfSU5GT19MRU5dOwogCi0JCQlzbnByaW50Ziht
c2csIHNpemVvZihtc2cpLCAiJXM6JWQgYXQgJXMiLCBfX0ZJTEVfXywgX19MSU5FX18sIF9fZnVu
Y19fKTsKKwkJCVNDVFBfU05QUklOVEYobXNnLCBzaXplb2YobXNnKSwgIiVzOiVkIGF0ICVzIiwg
X19GSUxFX18sIF9fTElORV9fLCBfX2Z1bmNfXyk7CiAJCQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRl
X2NhdXNlKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9kaWFnX2luZm9fY29kZSksCiAJCQkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1zZyk7CiAJCX0KIAkJc2N0cF9zZW5kX2Fib3J0KGluaXRf
cGt0LCBpcGhsZW4sIHNyYywgZHN0LCBzaCwKIAkJCQlpbml0X2Noay0+aW5pdC5pbml0aWF0ZV90
YWcsIG9wX2VyciwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCSAgICAgICAgICAgICAgICBtZmxv
d3R5cGUsIG1mbG93aWQsIGlucC0+ZmlibnVtLAogI2VuZGlmCiAJCSAgICAgICAgICAgICAgICB2
cmZfaWQsIHBvcnQpOwpAQCAtNjAwMCw4ICs2MDMyLDcgQEAgc2N0cF9zZW5kX2luaXRpYXRlX2Fj
ayhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJbSA9IHNj
dHBfZ2V0X21idWZfZm9yX21zZyhNQ0xCWVRFUywgMCwgTV9OT1dBSVQsIDEsIE1UX0RBVEEpOwog
CWlmIChtID09IE5VTEwpIHsKIAkJLyogTm8gbWVtb3J5LCBJTklUIHRpbWVyIHdpbGwgcmUtYXR0
ZW1wdC4gKi8KLQkJaWYgKG9wX2VycikKLQkJCXNjdHBfbV9mcmVlbShvcF9lcnIpOworCQlzY3Rw
X21fZnJlZW0ob3BfZXJyKTsKIAkJcmV0dXJuOwogCX0KIAljaHVua19sZW4gPSAodWludDE2X3Qp
c2l6ZW9mKHN0cnVjdCBzY3RwX2luaXRfYWNrX2NodW5rKTsKQEAgLTYxMDcsNyArNjEzOCw3IEBA
IHNjdHBfc2VuZF9pbml0aWF0ZV9hY2soc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNj
dHBfdGNiICpzdGNiLAogCQl7CiAJCQlzdGMuYWRkcl90eXBlID0gU0NUUF9JUFY2X0FERFJFU1M7
CiAJCQltZW1jcHkoJnN0Yy5hZGRyZXNzLCAmc3JjNi0+c2luNl9hZGRyLCBzaXplb2Yoc3RydWN0
IGluNl9hZGRyKSk7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgKCgoX19GcmVlQlNEX3Zl
cnNpb24gPCA5MDAwMDApICYmIChfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDQwMDApKSB8fCAoX19G
cmVlQlNEX3ZlcnNpb24gPiA5MDAwMDApKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQlzdGMuc2NvcGVfaWQgPSBudG9ocyhpbjZfZ2V0c2Nv
cGUoJnNyYzYtPnNpbjZfYWRkcikpOwogI2Vsc2UKIAkJCXN0Yy5zY29wZV9pZCA9IDA7CkBAIC02
MTI4LDcgKzYxNTksNyBAQCBzY3RwX3NlbmRfaW5pdGlhdGVfYWNrKHN0cnVjdCBzY3RwX2lucGNi
ICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJCQkgKiBiZWNhdXNlIHdlIHNoYXJlIG9u
ZSBsaW5rIHRoYXQgYWxsIGxpbmtzIGFyZQogCQkJCSAqIGNvbW1vbi4KIAkJCQkgKi8KLSNpZiBk
ZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKIAkJCQkvKiBNYWMgT1MgWCBjdXJyZW50bHkgZG9lc24ndCBoYXZlIGluNl9n
ZXRzY29wZSgpICovCiAJCQkJc3RjLnNjb3BlX2lkID0gc3JjNi0+c2luNl9hZGRyLnM2X2FkZHIx
NlsxXTsKICNlbmRpZgpAQCAtNjIyOCw4ICs2MjU5LDExIEBAIHNjdHBfc2VuZF9pbml0aWF0ZV9h
Y2soc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkJCW5l
dC0+cm8uX3NfYWRkciA9IHNjdHBfc291cmNlX2FkZHJlc3Nfc2VsZWN0aW9uKGlucCwKIAkJCQkJ
CQkJCQlzdGNiLCAoc2N0cF9yb3V0ZV90ICopJm5ldC0+cm8sCiAJCQkJCQkJCQkJbmV0LCAwLCB2
cmZfaWQpOwotCQkJCWlmIChuZXQtPnJvLl9zX2FkZHIgPT0gTlVMTCkKKwkJCQlpZiAobmV0LT5y
by5fc19hZGRyID09IE5VTEwpIHsKKwkJCQkJc2N0cF9tX2ZyZWVtKG9wX2Vycik7CisJCQkJCXNj
dHBfbV9mcmVlbShtKTsKIAkJCQkJcmV0dXJuOworCQkJCX0KIAogCQkJCW5ldC0+c3JjX2FkZHJf
c2VsZWN0ZWQgPSAxOwogCkBAIC02MjU4LDggKzYyOTIsMTEgQEAgc2N0cF9zZW5kX2luaXRpYXRl
X2FjayhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCQkJ
bmV0LT5yby5fc19hZGRyID0gc2N0cF9zb3VyY2VfYWRkcmVzc19zZWxlY3Rpb24oaW5wLAogCQkJ
CQkJCQkJCXN0Y2IsIChzY3RwX3JvdXRlX3QgKikmbmV0LT5ybywKIAkJCQkJCQkJCQluZXQsIDAs
IHZyZl9pZCk7Ci0JCQkJaWYgKG5ldC0+cm8uX3NfYWRkciA9PSBOVUxMKQorCQkJCWlmIChuZXQt
PnJvLl9zX2FkZHIgPT0gTlVMTCkgeworCQkJCQlzY3RwX21fZnJlZW0ob3BfZXJyKTsKKwkJCQkJ
c2N0cF9tX2ZyZWVtKG0pOwogCQkJCQlyZXR1cm47CisJCQkJfQogCiAJCQkJbmV0LT5zcmNfYWRk
cl9zZWxlY3RlZCA9IDE7CiAJCQl9CkBAIC02MzAzLDkgKzYzNDAsOSBAQCBzY3RwX3NlbmRfaW5p
dGlhdGVfYWNrKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwK
IAlpbml0YWNrLT5jaC5jaHVua19sZW5ndGggPSAwOwogCS8qIHBsYWNlIGluIG15IHRhZyAqLwog
CWlmICgoYXNvYyAhPSBOVUxMKSAmJgotCSAgICAoKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFND
VFBfU1RBVEVfQ09PS0lFX1dBSVQpIHx8Ci0JICAgICAoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0g
U0NUUF9TVEFURV9JTlVTRSkgfHwKLQkgICAgIChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQ
X1NUQVRFX0NPT0tJRV9FQ0hPRUQpKSkgeworCSAgICAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09
IFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQpIHx8CisJICAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikg
PT0gU0NUUF9TVEFURV9JTlVTRSkgfHwKKwkgICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBT
Q1RQX1NUQVRFX0NPT0tJRV9FQ0hPRUQpKSkgewogCQkvKiByZS11c2UgdGhlIHYtdGFncyBhbmQg
aW5pdC1zZXEgaGVyZSAqLwogCQlpbml0YWNrLT5pbml0LmluaXRpYXRlX3RhZyA9IGh0b25sKGFz
b2MtPm15X3Z0YWcpOwogCQlpbml0YWNrLT5pbml0LmluaXRpYWxfdHNuID0gaHRvbmwoYXNvYy0+
aW5pdF9zZXFfbnVtYmVyKTsKQEAgLTYzNDcsNiArNjM4NCw3IEBAIHNjdHBfc2VuZF9pbml0aWF0
ZV9hY2soc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCXNv
ID0gaW5wLT5zY3RwX3NvY2tldDsKIAlpZiAoc28gPT0gTlVMTCkgewogCQkvKiBtZW1vcnkgcHJv
YmxlbSAqLworCQlzY3RwX21fZnJlZW0ob3BfZXJyKTsKIAkJc2N0cF9tX2ZyZWVtKG0pOwogCQly
ZXR1cm47CiAJfSBlbHNlIHsKQEAgLTY1OTMsNiArNjYzMSwyNyBAQCBzY3RwX3NlbmRfaW5pdGlh
dGVfYWNrKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJ
CSAgKHVpbnQ4X3QgKilpbnAtPnNjdHBfZXAuc2VjcmV0X2tleVsoaW50KShpbnAtPnNjdHBfZXAu
Y3VycmVudF9zZWNyZXRfbnVtYmVyKV0sCiAJCQkgIFNDVFBfU0VDUkVUX1NJWkUsIG1fY29va2ll
LCBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpLAogCQkJICAodWludDhfdCAqKXNpZ25hdHVy
ZSwgU0NUUF9TSUdOQVRVUkVfU0laRSk7CisjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCS8q
CisJICogRG9uJ3QgcHV0IEFGX0NPTk4gYWRkcmVzc2VzIG9uIHRoZSB3aXJlLCBpbiBjYXNlIHRo
aXMgaXMgY3JpdGljYWwKKwkgKiBmb3IgdGhlIGFwcGxpY2F0aW9uLiBIb3dldmVyLCB0aGV5IGFy
ZSBwcm90ZWN0ZWQgYnkgdGhlIEhNQUMgYW5kCisJICogbmVlZCB0byBiZSByZWNvbnN0cnVjdGVk
IGJlZm9yZSBjaGVja2luZyB0aGUgSE1BQy4KKwkgKiBDbGVhcmluZyBpcyBvbmx5IGRvbmUgaW4g
dGhlIG1idWYgY2hhaW4sIHNpbmNlIHRoZSBsb2NhbCBzdGMgaXMKKwkgKiBub3QgdXNlZCBhbnlt
b3JlLgorCSAqLworCWlmIChzdGMuYWRkcl90eXBlID09IFNDVFBfQ09OTl9BRERSRVNTKSB7CisJ
CWNvbnN0IHZvaWQgKnAgPSBOVUxMOworCisJCW1fY29weWJhY2sobV9jb29raWUsIHNpemVvZihz
dHJ1Y3Qgc2N0cF9wYXJhbWhkcikgKyBvZmZzZXRvZihzdHJ1Y3Qgc2N0cF9zdGF0ZV9jb29raWUs
IGFkZHJlc3MpLAorCQkgICAgICAgICAgIChpbnQpc2l6ZW9mKHZvaWQgKiksIChjYWRkcl90KSZw
KTsKKwl9CisJaWYgKHN0Yy5sYWRkcl90eXBlID09IFNDVFBfQ09OTl9BRERSRVNTKSB7CisJCWNv
bnN0IHZvaWQgKnAgPSBOVUxMOworCisJCW1fY29weWJhY2sobV9jb29raWUsIHNpemVvZihzdHJ1
Y3Qgc2N0cF9wYXJhbWhkcikgKyBvZmZzZXRvZihzdHJ1Y3Qgc2N0cF9zdGF0ZV9jb29raWUsIGxh
ZGRyZXNzKSwKKwkJICAgICAgICAgICAoaW50KXNpemVvZih2b2lkICopLCAoY2FkZHJfdCkmcCk7
CisJfQorI2VuZGlmCiAJLyoKIAkgKiBXZSBzaWZhIDAgaGVyZSB0byBOT1Qgc2V0IElQX0RGIGlm
IGl0cyBJUHY0LCB3ZSBpZ25vcmUgdGhlIHJldHVybgogCSAqIGhlcmUgc2luY2UgdGhlIHRpbWVy
IHdpbGwgZHJpdmUgYSByZXRyYW5taXNzaW9uLgpAQCAtNjYxMyw3ICs2NjcyLDcgQEAgc2N0cF9z
ZW5kX2luaXRpYXRlX2FjayhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2Ig
KnN0Y2IsCiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsCiAJ
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucC0+c2N0cF9scG9ydCwg
c2gtPnNyY19wb3J0LCBpbml0X2Noay0+aW5pdC5pbml0aWF0ZV90YWcsCiAJICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQsIG92ZXJfYWRkciwKLSNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1mbG93
dHlwZSwgbWZsb3dpZCwKICNlbmRpZgogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTQ1RQX1NPX05PVF9MT0NLRUQpKSkgewpAQCAtNjY1NywxMyArNjcxNiwxMyBAQCBz
Y3RwX3BydW5lX3Byc2N0cChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCQkJICogVGhpcyBvbmUg
aXMgUFItU0NUUCBBTkQgYnVmZmVyIHNwYWNlCiAJCQkJICogbGltaXRlZCB0eXBlCiAJCQkJICov
Ci0JCQkJaWYgKGNoay0+cmVjLmRhdGEudGltZXRvZHJvcC50dl9zZWMgPj0gKGxvbmcpc3Jjdi0+
c2luZm9fdGltZXRvbGl2ZSkgeworCQkJCWlmIChjaGstPnJlYy5kYXRhLnRpbWV0b2Ryb3AudHZf
c2VjID4gKGxvbmcpc3Jjdi0+c2luZm9fdGltZXRvbGl2ZSkgewogCQkJCQkvKgogCQkJCQkgKiBM
b3dlciBudW1iZXJzIGVxdWF0ZXMgdG8gaGlnaGVyCi0JCQkJCSAqIHByaW9yaXR5IHNvIGlmIHRo
ZSBvbmUgd2UgYXJlCi0JCQkJCSAqIGxvb2tpbmcgYXQgaGFzIGEgbGFyZ2VyIG9yIGVxdWFsCi0J
CQkJCSAqIHByaW9yaXR5IHdlIHdhbnQgdG8gZHJvcCB0aGUgZGF0YQotCQkJCQkgKiBhbmQgTk9U
IHJldHJhbnNtaXQgaXQuCisJCQkJCSAqIHByaW9yaXR5LiBTbyBpZiB0aGUgb25lIHdlIGFyZQor
CQkJCQkgKiBsb29raW5nIGF0IGhhcyBhIGxhcmdlciBwcmlvcml0eSwKKwkJCQkJICogd2Ugd2Fu
dCB0byBkcm9wIHRoZSBkYXRhIGFuZCBOT1QKKwkJCQkJICogcmV0cmFuc21pdCBpdC4KIAkJCQkJ
ICovCiAJCQkJCWlmIChjaGstPmRhdGEpIHsKIAkJCQkJCS8qCkBAIC02NjkyLDcgKzY3NTEsNyBA
QCBzY3RwX3BydW5lX3Byc2N0cChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCVRBSUxRX0ZPUkVB
Q0hfU0FGRShjaGssICZhc29jLT5zZW5kX3F1ZXVlLCBzY3RwX25leHQsIG5jaGspIHsKIAkJCS8q
IEhlcmUgd2UgbXVzdCBtb3ZlIHRvIHRoZSBzZW50IHF1ZXVlIGFuZCBtYXJrICovCiAJCQlpZiAo
UFJfU0NUUF9CVUZfRU5BQkxFRChjaGstPmZsYWdzKSkgewotCQkJCWlmIChjaGstPnJlYy5kYXRh
LnRpbWV0b2Ryb3AudHZfc2VjID49IChsb25nKXNyY3YtPnNpbmZvX3RpbWV0b2xpdmUpIHsKKwkJ
CQlpZiAoY2hrLT5yZWMuZGF0YS50aW1ldG9kcm9wLnR2X3NlYyA+IChsb25nKXNyY3YtPnNpbmZv
X3RpbWV0b2xpdmUpIHsKIAkJCQkJaWYgKGNoay0+ZGF0YSkgewogCQkJCQkJLyoKIAkJCQkJCSAq
IFdlIHJlbGVhc2UgdGhlIGJvb2tfc2l6ZQpAQCAtNjc5NSw3ICs2ODU0LDcgQEAgc2N0cF9zZXRf
cHJzY3RwX3BvbGljeShzdHJ1Y3Qgc2N0cF9zdHJlYW1fcXVldWVfcGVuZGluZyAqc3ApCiAJCS8q
IFRPRE8gc2N0cF9jb25zdGFudHMuaCBuZWVkcyBhbHRlcm5hdGl2ZSB0aW1lIG1hY3JvcyB3aGVu
CiAJCSAqICBfS0VSTkVMIGlzIHVuZGVmaW5lZC4KIAkJICovCi0jaWZuZGVmIF9fRnJlZUJTRF9f
CisjaWYgIShkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkK
IAkJdGltZXJhZGQoJnNwLT50cywgJnR2LCAmc3AtPnRzKTsKICNlbHNlCiAJCXRpbWV2YWxhZGQo
JnNwLT50cywgJnR2KTsKQEAgLTY4NDcsOSArNjkwNiw5IEBAIHNjdHBfbXNnX2FwcGVuZChzdHJ1
Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJfQogCXN0cm0gPSAmc3RjYi0+YXNvYy5zdHJtb3V0W3NyY3Yt
PnNpbmZvX3N0cmVhbV07CiAJLyogTm93IGNhbiB3ZSBzZW5kIHRoaXM/ICovCi0JaWYgKChTQ1RQ
X0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKSB8fAot
CSAgICAoU0NUUF9HRVRfU1RBVEUoJnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05f
QUNLX1NFTlQpIHx8Ci0JICAgIChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9T
VEFURV9TSFVURE9XTl9SRUNFSVZFRCkgfHwKKwlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09
IFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCkgfHwKKwkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2Ip
ID09IFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQpIHx8CisJICAgIChTQ1RQX0dFVF9TVEFU
RShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSB8fAogCSAgICAoc3RjYi0+
YXNvYy5zdGF0ZSAmIFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORykpIHsKIAkJLyogZ290IGRh
dGEgd2hpbGUgc2h1dHRpbmcgZG93biAqLwogCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKE5VTEwsIHN0
Y2IsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX09VVFBVVCwgRUNPTk5SRVNFVCk7CkBAIC02OTQzLDEy
ICs3MDAyLDcgQEAgc2N0cF9jb3B5X21idWZjaGFpbihzdHJ1Y3QgbWJ1ZiAqY2xvbmVjaGFpbiwK
IAkJYXBwZW5kY2hhaW4gPSBjbG9uZWNoYWluOwogCX0gZWxzZSB7CiAJCWlmICghY29weV9ieV9y
ZWYgJiYKLSNpZiBkZWZpbmVkKF9fUGFuZGFfXykKLQkJICAgIDAKLSNlbHNlCi0JCSAgICAoc2l6
ZW9mY3B5IDw9IChpbnQpKCgoKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9tYnVmX3RocmVzaG9sZF9j
b3VudCkgLSAxKSAqIE1MRU4pICsgTUhMRU4pKSkKLSNlbmRpZgotCQkgICAgKSB7CisJCSAgICAo
c2l6ZW9mY3B5IDw9IChpbnQpKCgoKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9tYnVmX3RocmVzaG9s
ZF9jb3VudCkgLSAxKSAqIE1MRU4pICsgTUhMRU4pKSkpIHsKIAkJCS8qIEl0cyBub3QgaW4gYSBj
bHVzdGVyICovCiAJCQlpZiAoKmVuZG9mY2hhaW4gPT0gTlVMTCkgewogCQkJCS8qIGxldHMgZ2V0
IGEgbWJ1ZiBjbHVzdGVyICovCkBAIC03MDc5LDExICs3MTMzLDcgQEAgc2N0cF9tZWRfY2h1bmtf
b3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCSAgICAgIGludCAqbnVtX291dCwKIAkJ
ICAgICAgaW50ICpyZWFzb25fY29kZSwKIAkJICAgICAgaW50IGNvbnRyb2xfb25seSwgaW50IGZy
b21fd2hlcmUsCi0JCSAgICAgIHN0cnVjdCB0aW1ldmFsICpub3csIGludCAqbm93X2ZpbGxlZCwg
aW50IGZyYWdfcG9pbnQsIGludCBzb19sb2NrZWQKLSNpZiAhZGVmaW5lZChfX0FQUExFX18pICYm
ICFkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQotCQkgICAgICBTQ1RQX1VOVVNFRAotI2Vu
ZGlmCi0gICAgICAgICAgICAgICAgICAgICAgKTsKKwkJICAgICAgc3RydWN0IHRpbWV2YWwgKm5v
dywgaW50ICpub3dfZmlsbGVkLCBpbnQgZnJhZ19wb2ludCwgaW50IHNvX2xvY2tlZCk7CiAKIHN0
YXRpYyB2b2lkCiBzY3RwX3NlbmRhbGxfaXRlcmF0b3Ioc3RydWN0IHNjdHBfaW5wY2IgKmlucCwg
c3RydWN0IHNjdHBfdGNiICpzdGNiLCB2b2lkICpwdHIsCkBAIC03MTc2LDIxICs3MjI2LDIwIEBA
IHNjdHBfc2VuZGFsbF9pdGVyYXRvcihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0
cF90Y2IgKnN0Y2IsIHZvaWQgKnB0ciwKIAkJCQkJZ290byBhYm9ydF9hbnl3YXk7CiAJCQkJfQog
CQkJCS8qIHRoZXJlIGlzIG5vdGhpbmcgcXVldWVkIHRvIHNlbmQsIHNvIEknbSBkb25lLi4uICov
Ci0JCQkJaWYgKChTQ1RQX0dFVF9TVEFURShhc29jKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX1NF
TlQpICYmCi0JCQkJICAgIChTQ1RQX0dFVF9TVEFURShhc29jKSAhPSBTQ1RQX1NUQVRFX1NIVVRE
T1dOX1JFQ0VJVkVEKSAmJgotCQkJCSAgICAoU0NUUF9HRVRfU1RBVEUoYXNvYykgIT0gU0NUUF9T
VEFURV9TSFVURE9XTl9BQ0tfU0VOVCkpIHsKKwkJCQlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2Ip
ICE9IFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCkgJiYKKwkJCQkgICAgKFNDVFBfR0VUX1NUQVRF
KHN0Y2IpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpICYmCisJCQkJICAgIChTQ1RQ
X0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX0FDS19TRU5UKSkgewogCQkJ
CQkvKiBvbmx5IHNlbmQgU0hVVERPV04gdGhlIGZpcnN0IHRpbWUgdGhyb3VnaCAqLwotCQkJCQlp
ZiAoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9PUEVOKSB7CisJCQkJCWlmIChT
Q1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHsKIAkJCQkJCVNDVFBfU1RB
VF9ERUNSX0dBVUdFMzIoc2N0cHNfY3VycmVzdGFiKTsKIAkJCQkJfQotCQkJCQlTQ1RQX1NFVF9T
VEFURShhc29jLCBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpOwotCQkJCQlTQ1RQX0NMRUFSX1NV
QlNUQVRFKGFzb2MsIFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORyk7CisJCQkJCVNDVFBfU0VU
X1NUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCk7CiAJCQkJCXNjdHBfc3RvcF90
aW1lcnNfZm9yX3NodXRkb3duKHN0Y2IpOwogCQkJCQlzY3RwX3NlbmRfc2h1dGRvd24oc3RjYiwg
bmV0KTsKIAkJCQkJc2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfU0hVVERPV04sIHN0
Y2ItPnNjdHBfZXAsIHN0Y2IsCiAJCQkJCQkJIG5ldCk7CiAJCQkJCXNjdHBfdGltZXJfc3RhcnQo
U0NUUF9USU1FUl9UWVBFX1NIVVRET1dOR1VBUkQsIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsCi0JCQkJ
CQkJIGFzb2MtPnByaW1hcnlfZGVzdGluYXRpb24pOworCQkJCQkgICAgICAgICAgICAgICAgIE5V
TEwpOwogCQkJCQlhZGRlZF9jb250cm9sID0gMTsKIAkJCQkJZG9fY2h1bmtfb3V0cHV0ID0gMDsK
IAkJCQl9CkBAIC03MjA1LDEzICs3MjU0LDEzIEBAIHNjdHBfc2VuZGFsbF9pdGVyYXRvcihzdHJ1
Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHZvaWQgKnB0ciwKIAkJ
CQkgKiBkYXRhIHRvIGJlIHNlbnQgZmlyc3QgYW5kIG1vdmUgdG8KIAkJCQkgKiBTSFVURE9XTi1Q
RU5ESU5HCiAJCQkJICovCi0JCQkJaWYgKChTQ1RQX0dFVF9TVEFURShhc29jKSAhPSBTQ1RQX1NU
QVRFX1NIVVRET1dOX1NFTlQpICYmCi0JCQkJICAgIChTQ1RQX0dFVF9TVEFURShhc29jKSAhPSBT
Q1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSAmJgotCQkJCSAgICAoU0NUUF9HRVRfU1RBVEUo
YXNvYykgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tfU0VOVCkpIHsKKwkJCQlpZiAoKFNDVFBf
R0VUX1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCkgJiYKKwkJCQkgICAg
KFNDVFBfR0VUX1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpICYm
CisJCQkJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX0FD
S19TRU5UKSkgewogCQkJCQlpZiAoKCphc29jLT5zc19mdW5jdGlvbnMuc2N0cF9zc19pc191c2Vy
X21zZ3NfaW5jb21wbGV0ZSkoc3RjYiwgYXNvYykpIHsKLQkJCQkJCWFzb2MtPnN0YXRlIHw9IFND
VFBfU1RBVEVfUEFSVElBTF9NU0dfTEVGVDsKKwkJCQkJCVNDVFBfQUREX1NVQlNUQVRFKHN0Y2Is
IFNDVFBfU1RBVEVfUEFSVElBTF9NU0dfTEVGVCk7CiAJCQkJCX0KLQkJCQkJYXNvYy0+c3RhdGUg
fD0gU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HOworCQkJCQlTQ1RQX0FERF9TVUJTVEFURShz
dGNiLCBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJTkcpOwogCQkJCQlpZiAoVEFJTFFfRU1QVFko
JmFzb2MtPnNlbmRfcXVldWUpICYmCiAJCQkJCSAgICBUQUlMUV9FTVBUWSgmYXNvYy0+c2VudF9x
dWV1ZSkgJiYKIAkJCQkJICAgIChhc29jLT5zdGF0ZSAmIFNDVFBfU1RBVEVfUEFSVElBTF9NU0df
TEVGVCkpIHsKQEAgLTcyMTksOCArNzI2OCw4IEBAIHNjdHBfc2VuZGFsbF9pdGVyYXRvcihzdHJ1
Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHZvaWQgKnB0ciwKIAkJ
CQkJCWNoYXIgbXNnW1NDVFBfRElBR19JTkZPX0xFTl07CiAKIAkJCQkJYWJvcnRfYW55d2F5Ogot
CQkJCQkJc25wcmludGYobXNnLCBzaXplb2YobXNnKSwKLQkJCQkJCSAgICAgICAgICIlczolZCBh
dCAlcyIsIF9fRklMRV9fLCBfX0xJTkVfXywgX19mdW5jX18pOworCQkJCQkJU0NUUF9TTlBSSU5U
Rihtc2csIHNpemVvZihtc2cpLAorCQkJCQkJICAgICAgICAgICAgICAiJXM6JWQgYXQgJXMiLCBf
X0ZJTEVfXywgX19MSU5FX18sIF9fZnVuY19fKTsKIAkJCQkJCW9wX2VyciA9IHNjdHBfZ2VuZXJh
dGVfY2F1c2UoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2RpYWdfaW5mb19jb2RlKSwKIAkJCQkJCSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnKTsKIAkJCQkJCWF0b21pY19hZGRfaW50KCZz
dGNiLT5hc29jLnJlZmNudCwgMSk7CkBAIC03MjMwLDcgKzcyNzksNyBAQCBzY3RwX3NlbmRhbGxf
aXRlcmF0b3Ioc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLCB2
b2lkICpwdHIsCiAJCQkJCQlnb3RvIG5vX2NodW5rX291dHB1dDsKIAkJCQkJfQogCQkJCQlzY3Rw
X3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9TSFVURE9XTkdVQVJELCBzdGNiLT5zY3RwX2Vw
LCBzdGNiLAotCQkJCQkJCSBhc29jLT5wcmltYXJ5X2Rlc3RpbmF0aW9uKTsKKwkJCQkJICAgICAg
ICAgICAgICAgICBOVUxMKTsKIAkJCQl9CiAJCQl9CiAKQEAgLTcyNzksMTUgKzczMjgsMTkgQEAg
c2N0cF9zZW5kYWxsX2NvbXBsZXRlcyh2b2lkICpwdHIsIHVpbnQzMl90IHZhbCBTQ1RQX1VOVVNF
RCkKIAkgKi8KIAogCS8qIG5vdyBmcmVlIGV2ZXJ5dGhpbmcgKi8KKwlpZiAoY2EtPmlucCkgewor
CQkvKiBMZXRzIGNsZWFyIHRoZSBmbGFnIHRvIGFsbG93IG90aGVycyB0byBydW4uICovCisJCWNh
LT5pbnAtPnNjdHBfZmxhZ3MgJj0gflNDVFBfUENCX0ZMQUdTX1NORF9JVEVSQVRPUl9VUDsKKwl9
CiAJc2N0cF9tX2ZyZWVtKGNhLT5tKTsKIAlTQ1RQX0ZSRUUoY2EsIFNDVFBfTV9DT1BZQUwpOwog
fQogCiBzdGF0aWMgc3RydWN0IG1idWYgKgotc2N0cF9jb3B5X291dF9hbGwoc3RydWN0IHVpbyAq
dWlvLCBpbnQgbGVuKQorc2N0cF9jb3B5X291dF9hbGwoc3RydWN0IHVpbyAqdWlvLCBzc2l6ZV90
IGxlbikKIHsKIAlzdHJ1Y3QgbWJ1ZiAqcmV0LCAqYXQ7Ci0JaW50IGxlZnQsIHdpbGxjcHksIGNh
bmNweSwgZXJyb3I7CisJc3NpemVfdCBsZWZ0LCB3aWxsY3B5LCBjYW5jcHksIGVycm9yOwogCiAJ
cmV0ID0gc2N0cF9nZXRfbWJ1Zl9mb3JfbXNnKE1DTEJZVEVTLCAwLCBNX1dBSVRPSywgMSwgTVRf
REFUQSk7CiAJaWYgKHJldCA9PSBOVUxMKSB7CkBAIC03MzAyLDE3ICs3MzU1LDE3IEBAIHNjdHBf
Y29weV9vdXRfYWxsKHN0cnVjdCB1aW8gKnVpbywgaW50IGxlbikKIAlhdCA9IHJldDsKIAl3aGls
ZSAobGVmdCA+IDApIHsKIAkJLyogQWxpZ24gZGF0YSB0byB0aGUgZW5kICovCi0JCWVycm9yID0g
dWlvbW92ZShtdG9kKGF0LCBjYWRkcl90KSwgd2lsbGNweSwgdWlvKTsKKwkJZXJyb3IgPSB1aW9t
b3ZlKG10b2QoYXQsIGNhZGRyX3QpLCAoaW50KXdpbGxjcHksIHVpbyk7CiAJCWlmIChlcnJvcikg
ewogCWVycl9vdXRfbm93OgogCQkJc2N0cF9tX2ZyZWVtKGF0KTsKIAkJCXJldHVybiAoTlVMTCk7
CiAJCX0KLQkJU0NUUF9CVUZfTEVOKGF0KSA9IHdpbGxjcHk7CisJCVNDVFBfQlVGX0xFTihhdCkg
PSAoaW50KXdpbGxjcHk7CiAJCVNDVFBfQlVGX05FWFRfUEtUKGF0KSA9IFNDVFBfQlVGX05FWFQo
YXQpID0gMDsKIAkJbGVmdCAtPSB3aWxsY3B5OwogCQlpZiAobGVmdCA+IDApIHsKLQkJCVNDVFBf
QlVGX05FWFQoYXQpID0gc2N0cF9nZXRfbWJ1Zl9mb3JfbXNnKGxlZnQsIDAsIE1fV0FJVE9LLCAx
LCBNVF9EQVRBKTsKKwkJCVNDVFBfQlVGX05FWFQoYXQpID0gc2N0cF9nZXRfbWJ1Zl9mb3JfbXNn
KCh1bnNpZ25lZCBpbnQpbGVmdCwgMCwgTV9XQUlUT0ssIDEsIE1UX0RBVEEpOwogCQkJaWYgKFND
VFBfQlVGX05FWFQoYXQpID09IE5VTEwpIHsKIAkJCQlnb3RvIGVycl9vdXRfbm93OwogCQkJfQpA
QCAtNzMzMiw2ICs3Mzg1LDIyIEBAIHNjdHBfc2VuZGFsbChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5w
LCBzdHJ1Y3QgdWlvICp1aW8sIHN0cnVjdCBtYnVmICptLAogCWludCByZXQ7CiAJc3RydWN0IHNj
dHBfY29weV9hbGwgKmNhOwogCisJaWYgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdT
X1NORF9JVEVSQVRPUl9VUCkgeworCQkvKiBUaGVyZSBpcyBhbm90aGVyLiAqLworCQlyZXR1cm4g
KEVCVVNZKTsKKwl9CisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCisjaWYgZGVmaW5lZChBUFBMRV9MRU9QQVJEKQorCWlmICh1aW8tPnVpb19yZXNpZCA+
IFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9zZW5kYWxsX2xpbWl0KSkgeworI2Vsc2UKKwlpZiAodWlv
X3Jlc2lkKHVpbykgPiBTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfc2VuZGFsbF9saW1pdCkpIHsKKyNl
bmRpZgorI2Vsc2UKKwlpZiAodWlvLT51aW9fcmVzaWQgPiAoc3NpemVfdClTQ1RQX0JBU0VfU1lT
Q1RMKHNjdHBfc2VuZGFsbF9saW1pdCkpIHsKKyNlbmRpZgorCQkvKiBZb3UgbXVzdCBub3QgYmUg
bGFyZ2VyIHRoYW4gdGhlIGxpbWl0ISAqLworCQlyZXR1cm4gKEVNU0dTSVpFKTsKKwl9CiAJU0NU
UF9NQUxMT0MoY2EsIHN0cnVjdCBzY3RwX2NvcHlfYWxsICosIHNpemVvZihzdHJ1Y3Qgc2N0cF9j
b3B5X2FsbCksCiAJCSAgICBTQ1RQX01fQ09QWUFMKTsKIAlpZiAoY2EgPT0gTlVMTCkgewpAQCAt
NzM1MiwyMCArNzQyMSwyMCBAQCBzY3RwX3NlbmRhbGwoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwg
c3RydWN0IHVpbyAqdWlvLCBzdHJ1Y3QgbWJ1ZiAqbSwKIAljYS0+c25kcmN2LnNpbmZvX2ZsYWdz
ICY9IH5TQ1RQX1NFTkRBTEw7CiAJLyogZ2V0IGxlbmd0aCBhbmQgbWJ1ZiBjaGFpbiAqLwogCWlm
ICh1aW8pIHsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZiBkZWZpbmVkKEFQUExFX0xFT1BBUkQpCiAJ
CWNhLT5zbmRsZW4gPSB1aW8tPnVpb19yZXNpZDsKICNlbHNlCiAJCWNhLT5zbmRsZW4gPSB1aW9f
cmVzaWQodWlvKTsKICNlbmRpZgogI2Vsc2UKLQkJY2EtPnNuZGxlbiA9IChpbnQpdWlvLT51aW9f
cmVzaWQ7CisJCWNhLT5zbmRsZW4gPSB1aW8tPnVpb19yZXNpZDsKICNlbmRpZgotI2lmIGRlZmlu
ZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soU0NUUF9JTlBfU08oaW5wKSwgMCk7CiAjZW5k
aWYKIAkJY2EtPm0gPSBzY3RwX2NvcHlfb3V0X2FsbCh1aW8sIGNhLT5zbmRsZW4pOwotI2lmIGRl
ZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogCQlTQ1RQX1NPQ0tFVF9MT0NLKFNDVFBfSU5QX1NPKGlucCksIDApOwogI2Vu
ZGlmCiAJCWlmIChjYS0+bSA9PSBOVUxMKSB7CkBAIC03MzgyLDEzICs3NDUxLDE0IEBAIHNjdHBf
c2VuZGFsbChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3QgdWlvICp1aW8sIHN0cnVjdCBt
YnVmICptLAogCQkJY2EtPnNuZGxlbiArPSBTQ1RQX0JVRl9MRU4obWF0KTsKIAkJfQogCX0KKwlp
bnAtPnNjdHBfZmxhZ3MgfD0gU0NUUF9QQ0JfRkxBR1NfU05EX0lURVJBVE9SX1VQOwogCXJldCA9
IHNjdHBfaW5pdGlhdGVfaXRlcmF0b3IoTlVMTCwgc2N0cF9zZW5kYWxsX2l0ZXJhdG9yLCBOVUxM
LAogCQkJCSAgICAgU0NUUF9QQ0JfQU5ZX0ZMQUdTLCBTQ1RQX1BDQl9BTllfRkVBVFVSRVMsCiAJ
CQkJICAgICBTQ1RQX0FTT0NfQU5ZX1NUQVRFLAogCQkJCSAgICAgKHZvaWQgKiljYSwgMCwKIAkJ
CQkgICAgIHNjdHBfc2VuZGFsbF9jb21wbGV0ZXMsIGlucCwgMSk7CiAJaWYgKHJldCkgewotCQlT
Q1RQX1BSSU5URigiRmFpbGVkIHRvIGluaXRpYXRlIGl0ZXJhdG9yIGZvciBzZW5kYWxsXG4iKTsK
KwkJaW5wLT5zY3RwX2ZsYWdzICY9IH5TQ1RQX1BDQl9GTEFHU19TTkRfSVRFUkFUT1JfVVA7CiAJ
CVNDVFBfRlJFRShjYSwgU0NUUF9NX0NPUFlBTCk7CiAJCVNDVFBfTFRSQUNFX0VSUl9SRVRfUEtU
KG0sIGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfT1VUUFVULCBFRkFVTFQpOwogCQly
ZXR1cm4gKEVGQVVMVCk7CkBAIC03NTM4LDExICs3NjA4LDcgQEAgc2N0cF9jbGVhbl91cF9kYXRh
bGlzdChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiB9CiAKIHN0YXRpYyB2b2lkCi1zY3RwX2NsZWFu
X3VwX2N0bChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICph
c29jLCBpbnQgc29fbG9ja2VkCi0jaWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChT
Q1RQX1NPX0xPQ0tfVEVTVElORykKLQlTQ1RQX1VOVVNFRAotI2VuZGlmCi0pCitzY3RwX2NsZWFu
X3VwX2N0bChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICph
c29jLCBpbnQgc29fbG9ja2VkKQogewogCXN0cnVjdCBzY3RwX3RtaXRfY2h1bmsgKmNoaywgKm5j
aGs7CiAKQEAgLTc2NDUsMTEgKzc3MTEsNyBAQCBzY3RwX21vdmVfdG9fb3V0cXVldWUoc3RydWN0
IHNjdHBfdGNiICpzdGNiLAogICAgICAgICAgICAgICAgICAgICAgIGludCAqZ2l2ZXVwLAogICAg
ICAgICAgICAgICAgICAgICAgIGludCBlZW9yX21vZGUsCiAgICAgICAgICAgICAgICAgICAgICAg
aW50ICpiYWlsLAotICAgICAgICAgICAgICAgICAgICAgIGludCBzb19sb2NrZWQKLSNpZiAhZGVm
aW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQotICAgICAg
ICAgICAgICAgICAgICAgIFNDVFBfVU5VU0VECi0jZW5kaWYKLQkpCisgICAgICAgICAgICAgICAg
ICAgICAgaW50IHNvX2xvY2tlZCkKIHsKIAkvKiBNb3ZlIGZyb20gdGhlIHN0cmVhbSB0byB0aGUg
c2VuZF9xdWV1ZSBrZWVwaW5nIHRyYWNrIG9mIHRoZSB0b3RhbCAqLwogCXN0cnVjdCBzY3RwX2Fz
c29jaWF0aW9uICphc29jOwpAQCAtNzY5NCw3ICs3NzU2LDcgQEAgb25lX21vcmVfdGltZToKIAl9
CiAJaWYgKChzcC0+bXNnX2lzX2NvbXBsZXRlKSAmJiAoc3AtPmxlbmd0aCA9PSAwKSkgewogCQlp
ZiAoc3AtPnNlbmRlcl9hbGxfZG9uZSkgewotCQkJLyogV2UgYXJlIGRvaW5nIGRpZmZlcmVkIGNs
ZWFudXAuIExhc3QKKwkJCS8qIFdlIGFyZSBkb2luZyBkZWZlcnJlZCBjbGVhbnVwLiBMYXN0CiAJ
CQkgKiB0aW1lIHRocm91Z2ggd2hlbiB3ZSB0b29rIGFsbCB0aGUgZGF0YQogCQkJICogdGhlIHNl
bmRlcl9hbGxfZG9uZSB3YXMgbm90IHNldC4KIAkJCSAqLwpAQCAtODA0OCw3ICs4MTEwLDcgQEAg
cmVfbG9vazoKIAkJc2N0cF9hdXRoX2tleV9hY3F1aXJlKHN0Y2IsIGNoay0+YXV0aF9rZXlpZCk7
CiAJCWNoay0+aG9sZHNfa2V5X3JlZiA9IDE7CiAJfQotI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
IHx8IGRlZmluZWQoX19QYW5kYV9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAJY2hrLT5yZWMuZGF0YS50c24gPSBhdG9taWNfZmV0Y2hhZGRf
aW50KCZhc29jLT5zZW5kaW5nX3NlcSwgMSk7CiAjZWxzZQogCWNoay0+cmVjLmRhdGEudHNuID0g
YXNvYy0+c2VuZGluZ19zZXErKzsKQEAgLTgxNzEsMTEgKzgyMzMsNyBAQCBvdXRfb2Y6CiAKIHN0
YXRpYyB2b2lkCiBzY3RwX2ZpbGxfb3V0cXVldWUoc3RydWN0IHNjdHBfdGNiICpzdGNiLAotICAg
IHN0cnVjdCBzY3RwX25ldHMgKm5ldCwgaW50IGZyYWdfcG9pbnQsIGludCBlZW9yX21vZGUsIGlu
dCAqcXVpdF9ub3csIGludCBzb19sb2NrZWQKLSNpZiAhZGVmaW5lZChfX0FQUExFX18pICYmICFk
ZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQotCVNDVFBfVU5VU0VECi0jZW5kaWYKLSkKKyAg
ICBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsIGludCBmcmFnX3BvaW50LCBpbnQgZWVvcl9tb2RlLCBp
bnQgKnF1aXRfbm93LCBpbnQgc29fbG9ja2VkKQogewogCXN0cnVjdCBzY3RwX2Fzc29jaWF0aW9u
ICphc29jOwogCXN0cnVjdCBzY3RwX3N0cmVhbV9vdXQgKnN0cnE7CkBAIC04MjIzLDcgKzgyODEs
MTEgQEAgc2N0cF9maWxsX291dHF1ZXVlKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJfQogCQlz
dHJxID0gc3RjYi0+YXNvYy5zc19mdW5jdGlvbnMuc2N0cF9zc19zZWxlY3Rfc3RyZWFtKHN0Y2Is
IG5ldCwgYXNvYyk7CiAJCXRvdGFsX21vdmVkICs9IG1vdmVkOwotCQlzcGFjZV9sZWZ0IC09IG1v
dmVkOworCQlpZiAoc3BhY2VfbGVmdCA+PSBtb3ZlZCkgeworCQkJc3BhY2VfbGVmdCAtPSBtb3Zl
ZDsKKwkJfSBlbHNlIHsKKwkJCXNwYWNlX2xlZnQgPSAwOworCQl9CiAJCWlmIChzcGFjZV9sZWZ0
ID49IFNDVFBfREFUQV9DSFVOS19PVkVSSEVBRChzdGNiKSkgewogCQkJc3BhY2VfbGVmdCAtPSBT
Q1RQX0RBVEFfQ0hVTktfT1ZFUkhFQUQoc3RjYik7CiAJCX0gZWxzZSB7CkBAIC04Mjk1LDExICs4
MzU3LDcgQEAgc2N0cF9tZWRfY2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJ
CSAgICAgIGludCAqbnVtX291dCwKIAkJICAgICAgaW50ICpyZWFzb25fY29kZSwKIAkJICAgICAg
aW50IGNvbnRyb2xfb25seSwgaW50IGZyb21fd2hlcmUsCi0JCSAgICAgIHN0cnVjdCB0aW1ldmFs
ICpub3csIGludCAqbm93X2ZpbGxlZCwgaW50IGZyYWdfcG9pbnQsIGludCBzb19sb2NrZWQKLSNp
ZiAhZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQot
CQkgICAgICBTQ1RQX1VOVVNFRAotI2VuZGlmCi0JKQorCQkgICAgICBzdHJ1Y3QgdGltZXZhbCAq
bm93LCBpbnQgKm5vd19maWxsZWQsIGludCBmcmFnX3BvaW50LCBpbnQgc29fbG9ja2VkKQogewog
CS8qKgogCSAqIE9rIHRoaXMgaXMgdGhlIGdlbmVyaWMgY2h1bmsgc2VydmljZSBxdWV1ZS4gd2Ug
bXVzdCBkbyB0aGUKQEAgLTgzMjYsOCArODM4NCw4IEBAIHNjdHBfbWVkX2NodW5rX291dHB1dChz
dHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogCWludCBidW5kbGVfYXQsIGN0bF9jbnQsIG5vX2RhdGFf
Y2h1bmtzLCBlZW9yX21vZGU7CiAJdW5zaWduZWQgaW50IG10dSwgcl9tdHUsIG9tdHUsIG14X210
dSwgdG9fb3V0OwogCWludCB0c25zX3NlbnQgPSAwOwotCXVpbnQzMl90IGF1dGhfb2Zmc2V0ID0g
MDsKLQlzdHJ1Y3Qgc2N0cF9hdXRoX2NodW5rICphdXRoID0gTlVMTDsKKwl1aW50MzJfdCBhdXRo
X29mZnNldDsKKwlzdHJ1Y3Qgc2N0cF9hdXRoX2NodW5rICphdXRoOwogCXVpbnQxNl90IGF1dGhf
a2V5aWQ7CiAJaW50IG92ZXJyaWRlX29rID0gMTsKIAlpbnQgc2tpcF9maWxsX3VwID0gMDsKQEAg
LTgzMzYsNyArODM5NCw3IEBAIHNjdHBfbWVkX2NodW5rX291dHB1dChzdHJ1Y3Qgc2N0cF9pbnBj
YiAqaW5wLAogCSAgIHRoZSBkZXN0aW5hdGlvbi4gKi8KIAlpbnQgcXVpdF9ub3cgPSAwOwogCi0j
aWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiAJaWYgKHNvX2xvY2tlZCkgewogCQlzY3RwX2xvY2tfYXNzZXJ0KFND
VFBfSU5QX1NPKGlucCkpOwogCX0gZWxzZSB7CkBAIC04MzQ3LDcgKzg0MDUsNyBAQCBzY3RwX21l
ZF9jaHVua19vdXRwdXQoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkqcmVhc29uX2NvZGUgPSAw
OwogCWF1dGhfa2V5aWQgPSBzdGNiLT5hc29jLmF1dGhpbmZvLmFjdGl2ZV9rZXlpZDsKIAlpZiAo
KGFzb2MtPnN0YXRlICYgU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HKSB8fAotCSAgICAoYXNv
Yy0+c3RhdGUgJiBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSB8fAorCSAgICAoU0NUUF9H
RVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkgfHwKIAkgICAg
KHNjdHBfaXNfZmVhdHVyZV9vbihpbnAsIFNDVFBfUENCX0ZMQUdTX0VYUExJQ0lUX0VPUikpKSB7
CiAJCWVlb3JfbW9kZSA9IDE7CiAJfSBlbHNlIHsKQEAgLTg1MjUsNiArODU4Myw4IEBAIGFnYWlu
X29uZV9tb3JlX3RpbWU6CiAJCX0KIAkJYnVuZGxlX2F0ID0gMDsKIAkJZW5kb3V0Y2hhaW4gPSBv
dXRjaGFpbiA9IE5VTEw7CisJCWF1dGggPSBOVUxMOworCQlhdXRoX29mZnNldCA9IDA7CiAJCW5v
X2ZyYWdtZW50ZmxnID0gMTsKIAkJb25lX2NodW5rID0gMDsKIAkJaWYgKG5ldC0+ZGVzdF9zdGF0
ZSAmIFNDVFBfQUREUl9VTkNPTkZJUk1FRCkgewpAQCAtODcwNyw3ICs4NzY3LDcgQEAgYWdhaW5f
b25lX21vcmVfdGltZToKIAkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlucC0+c2N0cF9scG9ydCwgc3RjYi0+cnBvcnQsCiAJCQkJCSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBodG9ubChzdGNiLT5hc29jLnBlZXJfdnRhZyksCiAJCQkJ
CSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXQtPnBvcnQsIE5VTEws
Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMCwgMCwKICNlbmRpZgogCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc29fbG9ja2VkKSkpIHsKQEAgLTg5MDYsNyArODk2Niw3IEBAIGFnYWlu
X29uZV9tb3JlX3RpbWU6CiAJCQkJCQkvKiB0dXJuIG9mZiB0aGUgdGltZXIgKi8KIAkJCQkJCWlm
IChTQ1RQX09TX1RJTUVSX1BFTkRJTkcoJnN0Y2ItPmFzb2MuZGFja190aW1lci50aW1lcikpIHsK
IAkJCQkJCQlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX1JFQ1YsCi0JCQkJCQkJCQlp
bnAsIHN0Y2IsIG5ldCwKKwkJCQkJCQkgICAgICAgICAgICAgICAgaW5wLCBzdGNiLCBOVUxMLAog
CQkJCQkJCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUF9PVVRQVVQgKyBTQ1RQX0xPQ18x
KTsKIAkJCQkJCX0KIAkJCQkJfQpAQCAtODk3OCw3ICs5MDM4LDcgQEAgYWdhaW5fb25lX21vcmVf
dGltZToKIAkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucC0+
c2N0cF9scG9ydCwgc3RjYi0+cnBvcnQsCiAJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBodG9ubChzdGNiLT5hc29jLnBlZXJfdnRhZyksCiAJCQkJCSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXQtPnBvcnQsIE5VTEwsCi0jaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMCwgMCwKICNlbmRpZgogCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc29fbG9ja2VkKSkpIHsKQEAgLTkxMTcsOCArOTE3Nyw4IEBAIGFnYWluX29uZV9tb3Jl
X3RpbWU6CiAJCQlvbXR1ID0gMDsKIAkJCWJyZWFrOwogCQl9Ci0JCWlmICgoKChTQ1RQX0dFVF9T
VEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHx8Ci0JCSAgICAgIChTQ1RQX0dFVF9TVEFU
RShhc29jKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgJiYKKwkJaWYgKCgoKFND
VFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfT1BFTikgfHwKKwkJICAgICAgKFNDVFBf
R0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpKSAmJgogCQkg
ICAgIChza2lwX2RhdGFfZm9yX3RoaXNfbmV0ID09IDApKSB8fAogCQkgICAgKGNvb2tpZSkpIHsK
IAkJCVRBSUxRX0ZPUkVBQ0hfU0FGRShjaGssICZhc29jLT5zZW5kX3F1ZXVlLCBzY3RwX25leHQs
IG5jaGspIHsKQEAgLTkxNjcsNyArOTIyNyw3IEBAIGFnYWluX29uZV9tb3JlX3RpbWU6CiAJCQkJ
CWNoay0+ZmxhZ3MgfD0gQ0hVTktfRkxBR1NfRlJBR01FTlRfT0s7CiAJCQkJfQogCQkJCWlmIChT
Q1RQX0JBU0VfU1lTQ1RMKHNjdHBfZW5hYmxlX3NhY2tfaW1tZWRpYXRlbHkpICYmCi0JCQkJICAg
ICgoYXNvYy0+c3RhdGUgJiBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJTkcpID09IFNDVFBfU1RB
VEVfU0hVVERPV05fUEVORElORykpIHsKKwkJCQkgICAgKGFzb2MtPnN0YXRlICYgU0NUUF9TVEFU
RV9TSFVURE9XTl9QRU5ESU5HKSkgewogCQkJCQlzdHJ1Y3Qgc2N0cF9kYXRhX2NodW5rICpkY2hr
aDsKIAogCQkJCQlkY2hraCA9IG10b2QoY2hrLT5kYXRhLCBzdHJ1Y3Qgc2N0cF9kYXRhX2NodW5r
ICopOwpAQCAtOTMyMCw3ICs5MzgwLDcgQEAgYWdhaW5fb25lX21vcmVfdGltZToKIAkJCSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnAtPnNjdHBfbHBvcnQsIHN0Y2It
PnJwb3J0LAogCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0b25s
KHN0Y2ItPmFzb2MucGVlcl92dGFnKSwKIAkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuZXQtPnBvcnQsIE5VTEwsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsCiAjZW5kaWYKIAkJCSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb19sb2NrZWQpKSkgewpAQCAt
OTQ1NCwxNCArOTUxNCwxNSBAQCBzY3RwX3F1ZXVlX29wX2VycihzdHJ1Y3Qgc2N0cF90Y2IgKnN0
Y2IsIHN0cnVjdCBtYnVmICpvcF9lcnIpCiAJCXJldHVybjsKIAl9CiAJY2hrLT5jb3B5X2J5X3Jl
ZiA9IDA7CisJY2hrLT5yZWMuY2h1bmtfaWQuaWQgPSBTQ1RQX09QRVJBVElPTl9FUlJPUjsKKwlj
aGstPnJlYy5jaHVua19pZC5jYW5fdGFrZV9kYXRhID0gMDsKKwljaGstPmZsYWdzID0gMDsKIAlj
aGstPnNlbmRfc2l6ZSA9ICh1aW50MTZfdCljaHVua19sZW5ndGg7CiAJY2hrLT5zZW50ID0gU0NU
UF9EQVRBR1JBTV9VTlNFTlQ7CiAJY2hrLT5zbmRfY291bnQgPSAwOwogCWNoay0+YXNvYyA9ICZz
dGNiLT5hc29jOwogCWNoay0+ZGF0YSA9IG9wX2VycjsKIAljaGstPndob1RvID0gTlVMTDsKLQlj
aGstPnJlYy5jaHVua19pZC5pZCA9IFNDVFBfT1BFUkFUSU9OX0VSUk9SOwotCWNoay0+cmVjLmNo
dW5rX2lkLmNhbl90YWtlX2RhdGEgPSAwOwogCWhkciA9IG10b2Qob3BfZXJyLCBzdHJ1Y3Qgc2N0
cF9jaHVua2hkciAqKTsKIAloZHItPmNodW5rX3R5cGUgPSBTQ1RQX09QRVJBVElPTl9FUlJPUjsK
IAloZHItPmNodW5rX2ZsYWdzID0gMDsKQEAgLTk0NzIsNyArOTUzMyw3IEBAIHNjdHBfcXVldWVf
b3BfZXJyKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IG1idWYgKm9wX2VycikKIAogaW50
CiBzY3RwX3NlbmRfY29va2llX2VjaG8oc3RydWN0IG1idWYgKm0sCi0gICAgaW50IG9mZnNldCwK
KyAgICBpbnQgb2Zmc2V0LCBpbnQgbGltaXQsCiAgICAgc3RydWN0IHNjdHBfdGNiICpzdGNiLAog
ICAgIHN0cnVjdCBzY3RwX25ldHMgKm5ldCkKIHsKQEAgLTk0OTgsMTggKzk1NTksMjkgQEAgc2N0
cF9zZW5kX2Nvb2tpZV9lY2hvKHN0cnVjdCBtYnVmICptLAogCQl9CiAJCXB0eXBlID0gbnRvaHMo
cGhkci0+cGFyYW1fdHlwZSk7CiAJCXBsZW4gPSBudG9ocyhwaGRyLT5wYXJhbV9sZW5ndGgpOwor
CQlpZiAocGxlbiA8IHNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcikpIHsKKwkJCXJldHVybiAo
LTYpOworCQl9CiAJCWlmIChwdHlwZSA9PSBTQ1RQX1NUQVRFX0NPT0tJRSkgewogCQkJaW50IHBh
ZDsKIAogCQkJLyogZm91bmQgdGhlIGNvb2tpZSAqLwotCQkJaWYgKChwYWQgPSAocGxlbiAlIDQp
KSkgewotCQkJCXBsZW4gKz0gNCAtIHBhZDsKKwkJCWlmIChhdCArIHBsZW4gPiBsaW1pdCkgewor
CQkJCXJldHVybiAoLTcpOwogCQkJfQogCQkJY29va2llID0gU0NUUF9NX0NPUFlNKG0sIGF0LCBw
bGVuLCBNX05PV0FJVCk7CiAJCQlpZiAoY29va2llID09IE5VTEwpIHsKIAkJCQkvKiBObyBtZW1v
cnkgKi8KIAkJCQlyZXR1cm4gKC0yKTsKIAkJCX0KKwkJCWlmICgocGFkID0gKHBsZW4gJSA0KSkg
PiAwKSB7CisJCQkJcGFkID0gNCAtIHBhZDsKKwkJCX0KKwkJCWlmIChwYWQgPiAwKSB7CisJCQkJ
aWYgKHNjdHBfcGFkX2xhc3RtYnVmKGNvb2tpZSwgcGFkLCBOVUxMKSA9PSBOVUxMKSB7CisJCQkJ
CXJldHVybiAoLTgpOworCQkJCX0KKwkJCX0KICNpZmRlZiBTQ1RQX01CVUZfTE9HR0lORwogCQkJ
aWYgKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9sb2dnaW5nX2xldmVsKSAmIFNDVFBfTUJVRl9MT0dH
SU5HX0VOQUJMRSkgewogCQkJCXNjdHBfbG9nX21iYyhjb29raWUsIFNDVFBfTUJVRl9JQ09QWSk7
CkBAIC05NTM1LDcgKzk2MDcsNyBAQCBzY3RwX3NlbmRfY29va2llX2VjaG8oc3RydWN0IG1idWYg
Km0sCiAJY2hrLT5yZWMuY2h1bmtfaWQuaWQgPSBTQ1RQX0NPT0tJRV9FQ0hPOwogCWNoay0+cmVj
LmNodW5rX2lkLmNhbl90YWtlX2RhdGEgPSAwOwogCWNoay0+ZmxhZ3MgPSBDSFVOS19GTEFHU19G
UkFHTUVOVF9PSzsKLQljaGstPnNlbmRfc2l6ZSA9IHBsZW47CisJY2hrLT5zZW5kX3NpemUgPSBT
Q1RQX1NJWkUzMihwbGVuKTsKIAljaGstPnNlbnQgPSBTQ1RQX0RBVEFHUkFNX1VOU0VOVDsKIAlj
aGstPnNuZF9jb3VudCA9IDA7CiAJY2hrLT5hc29jID0gJnN0Y2ItPmFzb2M7CkBAIC05NTYxLDcg
Kzk2MzMsNiBAQCBzY3RwX3NlbmRfaGVhcnRiZWF0X2FjayhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2Is
CiAJc3RydWN0IHNjdHBfY2h1bmtoZHIgKmNoZHI7CiAJc3RydWN0IHNjdHBfdG1pdF9jaHVuayAq
Y2hrOwogCi0KIAlpZiAobmV0ID09IE5VTEwpCiAJCS8qIG11c3QgaGF2ZSBhIG5ldCBwb2ludGVy
ICovCiAJCXJldHVybjsKQEAgLTk1NzksMTMgKzk2NTAsOCBAQCBzY3RwX3NlbmRfaGVhcnRiZWF0
X2FjayhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJY2hkciA9IG10b2Qob3V0Y2hhaW4sIHN0cnVj
dCBzY3RwX2NodW5raGRyICopOwogCWNoZHItPmNodW5rX3R5cGUgPSBTQ1RQX0hFQVJUQkVBVF9B
Q0s7CiAJY2hkci0+Y2h1bmtfZmxhZ3MgPSAwOwotCWlmIChjaGtfbGVuZ3RoICUgNCkgewotCQkv
KiBuZWVkIHBhZCAqLwotCQl1aW50MzJfdCBjcHRoaXMgPSAwOwotCQlpbnQgcGFkbGVuOwotCi0J
CXBhZGxlbiA9IDQgLSAoY2hrX2xlbmd0aCAlIDQpOwotCQltX2NvcHliYWNrKG91dGNoYWluLCBj
aGtfbGVuZ3RoLCBwYWRsZW4sIChjYWRkcl90KSZjcHRoaXMpOworCWlmIChjaGtfbGVuZ3RoICUg
NCAhPSAwKSB7CisJCXNjdHBfcGFkX2xhc3RtYnVmKG91dGNoYWluLCA0IC0gKGNoa19sZW5ndGgg
JSA0KSwgTlVMTCk7CiAJfQogCXNjdHBfYWxsb2NfYV9jaHVuayhzdGNiLCBjaGspOwogCWlmIChj
aGsgPT0gTlVMTCkgewpAQCAtOTY4Myw3ICs5NzQ5LDYgQEAgc2N0cF9zZW5kX3NodXRkb3duX2Fj
ayhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX25ldHMgKm5ldCkKIAljaGstPnNl
bmRfc2l6ZSA9IHNpemVvZihzdHJ1Y3Qgc2N0cF9jaHVua2hkcik7CiAJY2hrLT5zZW50ID0gU0NU
UF9EQVRBR1JBTV9VTlNFTlQ7CiAJY2hrLT5zbmRfY291bnQgPSAwOwotCWNoay0+ZmxhZ3MgPSAw
OwogCWNoay0+YXNvYyA9ICZzdGNiLT5hc29jOwogCWNoay0+ZGF0YSA9IG1fc2h1dGRvd25fYWNr
OwogCWNoay0+d2hvVG8gPSBuZXQ7CkBAIC05NzM4LDcgKzk4MDMsNiBAQCBzY3RwX3NlbmRfc2h1
dGRvd24oc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQpCiAJCWNo
ay0+c2VuZF9zaXplID0gc2l6ZW9mKHN0cnVjdCBzY3RwX3NodXRkb3duX2NodW5rKTsKIAkJY2hr
LT5zZW50ID0gU0NUUF9EQVRBR1JBTV9VTlNFTlQ7CiAJCWNoay0+c25kX2NvdW50ID0gMDsKLQkJ
Y2hrLT5mbGFncyA9IDA7CiAJCWNoay0+YXNvYyA9ICZzdGNiLT5hc29jOwogCQljaGstPmRhdGEg
PSBtX3NodXRkb3duOwogCQljaGstPndob1RvID0gbmV0OwpAQCAtOTkxMywxMSArOTk3Nyw3IEBA
IHN0YXRpYyBpbnQKIHNjdHBfY2h1bmtfcmV0cmFuc21pc3Npb24oc3RydWN0IHNjdHBfaW5wY2Ig
KmlucCwKICAgICBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAgICAgc3RydWN0IHNjdHBfYXNzb2Np
YXRpb24gKmFzb2MsCi0gICAgaW50ICpjbnRfb3V0LCBzdHJ1Y3QgdGltZXZhbCAqbm93LCBpbnQg
Km5vd19maWxsZWQsIGludCAqZnJfZG9uZSwgaW50IHNvX2xvY2tlZAotI2lmICFkZWZpbmVkKF9f
QVBQTEVfXykgJiYgIWRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCi0gICAgU0NUUF9VTlVT
RUQKLSNlbmRpZgotICAgICkKKyAgICBpbnQgKmNudF9vdXQsIHN0cnVjdCB0aW1ldmFsICpub3cs
IGludCAqbm93X2ZpbGxlZCwgaW50ICpmcl9kb25lLCBpbnQgc29fbG9ja2VkKQogewogCS8qLQog
CSAqIHNlbmQgb3V0IG9uZSBNVFUgb2YgcmV0cmFuc21pc3Npb24uIElmIGZhc3RfcmV0cmFuc21p
dCBpcwpAQCAtOTk0Niw3ICsxMDAwNiw3IEBAIHNjdHBfY2h1bmtfcmV0cmFuc21pc3Npb24oc3Ry
dWN0IHNjdHBfaW5wY2IgKmlucCwKIAlpbnQgZGF0YV9hdXRoX3JlcWQgPSAwOwogCXVpbnQzMl90
IGRtdHUgPSAwOwogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExF
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJaWYgKHNvX2xvY2tlZCkgewogCQlzY3Rw
X2xvY2tfYXNzZXJ0KFNDVFBfSU5QX1NPKGlucCkpOwogCX0gZWxzZSB7CkBAIC0xMDAyNyw3ICsx
MDA4Nyw3IEBAIHNjdHBfY2h1bmtfcmV0cmFuc21pc3Npb24oc3RydWN0IHNjdHBfaW5wY2IgKmlu
cCwKIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vX2ZyYWdtZW50
ZmxnLCAwLCAwLAogCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5w
LT5zY3RwX2xwb3J0LCBzdGNiLT5ycG9ydCwgaHRvbmwoc3RjYi0+YXNvYy5wZWVyX3Z0YWcpLAog
CQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hrLT53aG9Uby0+cG9y
dCwgTlVMTCwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLCAwLAogI2VuZGlmCiAJCSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzb19sb2NrZWQpKSkgewpAQCAtMTAwNjYsOCArMTAxMjYsOCBAQCBz
Y3RwX2NodW5rX3JldHJhbnNtaXNzaW9uKHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJaWYgKFRB
SUxRX0VNUFRZKCZhc29jLT5zZW50X3F1ZXVlKSkgewogCQlyZXR1cm4gKFNDVFBfUkVUUkFOX0RP
TkUpOwogCX0KLQlpZiAoKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfQ09PS0lF
X0VDSE9FRCkgfHwKLQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfQ09P
S0lFX1dBSVQpKSB7CisJaWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX0NP
T0tJRV9FQ0hPRUQpIHx8CisJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRF
X0NPT0tJRV9XQUlUKSkgewogCQkvKiBub3QgeWV0IG9wZW4sIHJlc2VuZCB0aGUgY29va2llIGFu
ZCB0aGF0IGlzIGl0ICovCiAJCXJldHVybiAoMSk7CiAJfQpAQCAtMTAwOTAsOCArMTAxNTAsOCBA
QCBzY3RwX2NodW5rX3JldHJhbnNtaXNzaW9uKHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCQlz
dHJ1Y3QgbWJ1ZiAqb3BfZXJyOwogCQkJY2hhciBtc2dbU0NUUF9ESUFHX0lORk9fTEVOXTsKIAot
CQkJc25wcmludGYobXNnLCBzaXplb2YobXNnKSwgIlRTTiAlOC44eCByZXRyYW5zbWl0dGVkICVk
IHRpbWVzLCBnaXZpbmcgdXAiLAotCQkJCSBjaGstPnJlYy5kYXRhLnRzbiwgY2hrLT5zbmRfY291
bnQpOworCQkJU0NUUF9TTlBSSU5URihtc2csIHNpemVvZihtc2cpLCAiVFNOICU4Ljh4IHJldHJh
bnNtaXR0ZWQgJWQgdGltZXMsIGdpdmluZyB1cCIsCisJCQkgICAgICAgICAgICAgIGNoay0+cmVj
LmRhdGEudHNuLCBjaGstPnNuZF9jb3VudCk7CiAJCQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRlX2Nh
dXNlKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9kaWFnX2luZm9fY29kZSksCiAJCQkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1zZyk7CiAJCQlhdG9taWNfYWRkX2ludCgmc3RjYi0+YXNvYy5y
ZWZjbnQsIDEpOwpAQCAtMTAzMDgsNyArMTAzNjgsNyBAQCBzY3RwX2NodW5rX3JldHJhbnNtaXNz
aW9uKHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCQkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbm9fZnJhZ21lbnRmbGcsIDAsIDAsCiAJCQkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW5wLT5zY3RwX2xwb3J0LCBzdGNiLT5ycG9ydCwgaHRv
bmwoc3RjYi0+YXNvYy5wZWVyX3Z0YWcpLAogCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5ldC0+cG9ydCwgTlVMTCwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQor
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwKICNlbmRpZgogCQkJ
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvX2xvY2tlZCkpKSB7CkBA
IC0xMDQxOCw3ICsxMDQ3OCw3IEBAIHNjdHBfY2h1bmtfcmV0cmFuc21pc3Npb24oc3RydWN0IHNj
dHBfaW5wY2IgKmlucCwKIAkJCQkJCSAqIHQzLWV4cGlyaW5nLgogCQkJCQkJICovCiAJCQkJCQlz
Y3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX1NFTkQsIGlucCwgc3RjYiwgbmV0LAotCQkJ
CQkJCQlTQ1RQX0ZST01fU0NUUF9PVVRQVVQgKyBTQ1RQX0xPQ18yKTsKKwkJCQkJCSAgICAgICAg
ICAgICAgICBTQ1RQX0ZST01fU0NUUF9PVVRQVVQgKyBTQ1RQX0xPQ18yKTsKIAkJCQkJCXNjdHBf
dGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NFTkQsIGlucCwgc3RjYiwgbmV0KTsKIAkJCQkJ
fQogCQkJCX0KQEAgLTEwNDc3LDExICsxMDUzNyw3IEBAIHZvaWQKIHNjdHBfY2h1bmtfb3V0cHV0
KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAgICAgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogICAg
IGludCBmcm9tX3doZXJlLAotICAgIGludCBzb19sb2NrZWQKLSNpZiAhZGVmaW5lZChfX0FQUExF
X18pICYmICFkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQotICAgIFNDVFBfVU5VU0VECi0j
ZW5kaWYKLSAgICApCisgICAgaW50IHNvX2xvY2tlZCkKIHsKIAkvKi0KIAkgKiBPayB0aGlzIGlz
IHRoZSBnZW5lcmljIGNodW5rIHNlcnZpY2UgcXVldWUuIHdlIG11c3QgZG8gdGhlCkBAIC0xMDUw
OCw3ICsxMDU2NCw3IEBAIHNjdHBfY2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiICppbnAs
CiAJaW50IGZyX2RvbmU7CiAJdW5zaWduZWQgaW50IHRvdF9mcnMgPSAwOwogCi0jaWYgZGVmaW5l
ZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJaWYgKHNvX2xvY2tlZCkgewogCQlzY3RwX2xvY2tfYXNzZXJ0KFNDVFBfSU5QX1NP
KGlucCkpOwogCX0gZWxzZSB7CkBAIC0xMDU0NCw3ICsxMDYwMCw4IEBAIGRvX2l0X2FnYWluOgog
CSAqLwogCWlmIChTQ1RQX09TX1RJTUVSX1BFTkRJTkcoJnN0Y2ItPmFzb2MuZGFja190aW1lci50
aW1lcikpIHsKIAkJc2N0cF9zZW5kX3NhY2soc3RjYiwgc29fbG9ja2VkKTsKLQkJKHZvaWQpU0NU
UF9PU19USU1FUl9TVE9QKCZzdGNiLT5hc29jLmRhY2tfdGltZXIudGltZXIpOworCQlzY3RwX3Rp
bWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX1JFQ1YsIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIE5VTEws
CisJCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUF9PVVRQVVQgKyBTQ1RQX0xPQ18zKTsK
IAl9CiAJd2hpbGUgKGFzb2MtPnNlbnRfcXVldWVfcmV0cmFuX2NudCkgewogCQkvKi0KQEAgLTEw
NzU3LDIzICsxMDgxNCwxNSBAQCBkb19pdF9hZ2FpbjoKIGludAogc2N0cF9vdXRwdXQoCiAJc3Ry
dWN0IHNjdHBfaW5wY2IgKmlucCwKLSNpZiBkZWZpbmVkKF9fUGFuZGFfXykKLQlwYWtoYW5kbGVf
dHlwZSBtLAotI2Vsc2UKIAlzdHJ1Y3QgbWJ1ZiAqbSwKLSNlbmRpZgogCXN0cnVjdCBzb2NrYWRk
ciAqYWRkciwKLSNpZiBkZWZpbmVkKF9fUGFuZGFfXykKLQlwYWtoYW5kbGVfdHlwZSBjb250cm9s
LAotI2Vsc2UKIAlzdHJ1Y3QgbWJ1ZiAqY29udHJvbCwKLSNlbmRpZgotI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAwMAorI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJc3RydWN0IHRocmVhZCAqcCwK
LSNlbGlmIGRlZmluZWQoX19XaW5kb3dzX18pCisjZWxpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlQS1RIUkVBRCBwLAogI2Vsc2UKLSNpZiBkZWZpbmVkKF9f
QVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKIAlzdHJ1Y3QgcHJvYyAqcCBTQ1RQX1VOVVNFRCwKICNlbHNlCiAJc3RydWN0IHByb2MgKnAs
CkBAIC0xMDc5NSw3ICsxMDg0NCw3IEBAIHNjdHBfb3V0cHV0KAogCQkJICAgIChzdHJ1Y3QgdWlv
ICopTlVMTCwKIAkJCSAgICBtLAogCQkJICAgIGNvbnRyb2wsCi0jaWYgZGVmaW5lZChfX0FQUExF
X18pIHx8IGRlZmluZWQoX19QYW5kYV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCQkJICAgIGZsYWdzCiAjZWxzZQogCQkJICAgIGZsYWdzLCBw
CkBAIC0xMTAyMCwxMSArMTEwNjksNyBAQCBzY3RwX2ZpbGxfaW5fcmVzdDoKIH0KIAogdm9pZAot
c2N0cF9zZW5kX3NhY2soc3RydWN0IHNjdHBfdGNiICpzdGNiLCBpbnQgc29fbG9ja2VkCi0jaWYg
IWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKLQlT
Q1RQX1VOVVNFRAotI2VuZGlmCi0pCitzY3RwX3NlbmRfc2FjayhzdHJ1Y3Qgc2N0cF90Y2IgKnN0
Y2IsIGludCBzb19sb2NrZWQpCiB7CiAJLyotCiAJICogUXVldWUgdXAgYSBTQUNLIG9yIE5SLVNB
Q0sgaW4gdGhlIGNvbnRyb2wgcXVldWUuCkBAIC0xMTA5MCw3ICsxMTEzNSw3IEBAIHNjdHBfc2Vu
ZF9zYWNrKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgaW50IHNvX2xvY2tlZAogCQkJaWYgKHN0Y2It
PmFzb2MuZGVsYXllZF9hY2spIHsKIAkJCQlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBF
X1JFQ1YsCiAJCQkJICAgICAgICAgICAgICAgIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIE5VTEwsCi0J
CQkJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX09VVFBVVCArIFNDVFBfTE9DXzMpOwor
CQkJCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUF9PVVRQVVQgKyBTQ1RQX0xPQ180KTsK
IAkJCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9SRUNWLAogCQkJCSAgICBzdGNi
LT5zY3RwX2VwLCBzdGNiLCBOVUxMKTsKIAkJCX0gZWxzZSB7CkBAIC0xMTE1OSw3ICsxMTIwNCw3
IEBAIHNjdHBfc2VuZF9zYWNrKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgaW50IHNvX2xvY2tlZAog
CQlpZiAoc3RjYi0+YXNvYy5kZWxheWVkX2FjaykgewogCQkJc2N0cF90aW1lcl9zdG9wKFNDVFBf
VElNRVJfVFlQRV9SRUNWLAogCQkJICAgICAgICAgICAgICAgIHN0Y2ItPnNjdHBfZXAsIHN0Y2Is
IE5VTEwsCi0JCQkgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBfT1VUUFVUICsgU0NUUF9M
T0NfNCk7CisJCQkgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBfT1VUUFVUICsgU0NUUF9M
T0NfNSk7CiAJCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9SRUNWLAogCQkJICAg
IHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIE5VTEwpOwogCQl9IGVsc2UgewpAQCAtMTEyMDUsNyArMTEy
NTAsNyBAQCBzY3RwX3NlbmRfc2FjayhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIGludCBzb19sb2Nr
ZWQKIAkJaWYgKGhpZ2hlc3RfdHNuID4gYXNvYy0+bWFwcGluZ19hcnJheV9iYXNlX3Rzbikgewog
CQkJc2l6ID0gKCgoaGlnaGVzdF90c24gLSBhc29jLT5tYXBwaW5nX2FycmF5X2Jhc2VfdHNuKSAr
IDEpICsgNykgLyA4OwogCQl9IGVsc2UgewotCQkJc2l6ID0gKCgoTUFYX1RTTiAtIGhpZ2hlc3Rf
dHNuKSArIDEpICsgaGlnaGVzdF90c24gKyA3KSAvIDg7CisJCQlzaXogPSAoKChNQVhfVFNOIC0g
YXNvYy0+bWFwcGluZ19hcnJheV9iYXNlX3RzbikgKyAxKSArIGhpZ2hlc3RfdHNuICsgNykgLyA4
OwogCQl9CiAJfSBlbHNlIHsKIAkJc2FjayA9IE5VTEw7CkBAIC0xMTQxNiwxMSArMTE0NjEsNyBA
QCBzY3RwX3NlbmRfc2FjayhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIGludCBzb19sb2NrZWQKIH0K
IAogdm9pZAotc2N0cF9zZW5kX2Fib3J0X3RjYihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVj
dCBtYnVmICpvcGVyciwgaW50IHNvX2xvY2tlZAotI2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYg
IWRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCi0gICAgU0NUUF9VTlVTRUQKLSNlbmRpZgot
ICAgICkKK3NjdHBfc2VuZF9hYm9ydF90Y2Ioc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qg
bWJ1ZiAqb3BlcnIsIGludCBzb19sb2NrZWQpCiB7CiAJc3RydWN0IG1idWYgKm1fYWJvcnQsICpt
LCAqbV9sYXN0OwogCXN0cnVjdCBtYnVmICptX291dCwgKm1fZW5kID0gTlVMTDsKQEAgLTExNDMy
LDcgKzExNDczLDcgQEAgc2N0cF9zZW5kX2Fib3J0X3RjYihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2Is
IHN0cnVjdCBtYnVmICpvcGVyciwgaW50IHNvX2xvY2tlZAogCWludCBlcnJvcjsKIAl1aW50MTZf
dCBjYXVzZV9sZW4sIGNodW5rX2xlbiwgcGFkZGluZ19sZW47CiAKLSNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
IAlpZiAoc29fbG9ja2VkKSB7CiAJCXNjdHBfbG9ja19hc3NlcnQoU0NUUF9JTlBfU08oc3RjYi0+
c2N0cF9lcCkpOwogCX0gZWxzZSB7CkBAIC0xMTUxMyw3ICsxMTU1NCw3IEBAIHNjdHBfc2VuZF9h
Ym9ydF90Y2Ioc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3QgbWJ1ZiAqb3BlcnIsIGludCBz
b19sb2NrZWQKIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQs
IGF1dGhfb2Zmc2V0LCBhdXRoLCBzdGNiLT5hc29jLmF1dGhpbmZvLmFjdGl2ZV9rZXlpZCwgMSwg
MCwgMCwKIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RjYi0+c2N0
cF9lcC0+c2N0cF9scG9ydCwgc3RjYi0+cnBvcnQsIGh0b25sKHZ0YWcpLAogCSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGNiLT5hc29jLnByaW1hcnlfZGVzdGluYXRp
b24tPnBvcnQsIE5VTEwsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLCAwLAogI2VuZGlmCiAJICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNvX2xvY2tlZCkpKSB7CkBAIC0xMTU2Myw3ICsxMTYwNCw3
IEBAIHNjdHBfc2VuZF9zaHV0ZG93bl9jb21wbGV0ZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJ
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0Y2ItPnNjdHBfZXAtPnNj
dHBfbHBvcnQsIHN0Y2ItPnJwb3J0LAogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBodG9ubCh2dGFnKSwKIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbmV0LT5wb3J0LCBOVUxMLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwKICNlbmRpZgogCSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTQ1RQX1NPX05PVF9MT0NLRUQpKSkgewpAQCAt
MTE1NzksNyArMTE2MjAsNyBAQCBzY3RwX3NlbmRfc2h1dGRvd25fY29tcGxldGUoc3RydWN0IHNj
dHBfdGNiICpzdGNiLAogCXJldHVybjsKIH0KIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIHN0YXRp
YyB2b2lkCiBzY3RwX3NlbmRfcmVzcF9tc2coc3RydWN0IHNvY2thZGRyICpzcmMsIHN0cnVjdCBz
b2NrYWRkciAqZHN0LAogICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY3RwaGRyICpzaCwgdWlu
dDMyX3QgdnRhZywKQEAgLTExNTk0LDExICsxMTYzNSw3IEBAIHNjdHBfc2VuZF9yZXNwX21zZyhz
dHJ1Y3Qgc29ja2FkZHIgKnNyYywgc3RydWN0IHNvY2thZGRyICpkc3QsCiAgICAgICAgICAgICAg
ICAgICAgdWludDMyX3QgdnJmX2lkIFNDVFBfVU5VU0VELCB1aW50MTZfdCBwb3J0KQogI2VuZGlm
CiB7Ci0jaWZkZWYgX19QYW5kYV9fCi0JcGFraGFuZGxlX3R5cGUgb19wYWs7Ci0jZWxzZQogCXN0
cnVjdCBtYnVmICpvX3BhazsKLSNlbmRpZgogCXN0cnVjdCBtYnVmICptb3V0OwogCXN0cnVjdCBz
Y3RwaGRyICpzaG91dDsKIAlzdHJ1Y3Qgc2N0cF9jaHVua2hkciAqY2g7CkBAIC0xMTYwNyw3ICsx
MTY0NCw3IEBAIHNjdHBfc2VuZF9yZXNwX21zZyhzdHJ1Y3Qgc29ja2FkZHIgKnNyYywgc3RydWN0
IHNvY2thZGRyICpkc3QsCiAjZW5kaWYKIAlpbnQgcmV0LCBsZW4sIGNhdXNlX2xlbiwgcGFkZGlu
Z19sZW47CiAjaWZkZWYgSU5FVAotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9f
UGFuZGFfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKIAlzY3RwX3JvdXRlX3Qgcm87CiAjZW5kaWYKIAlzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNyY19z
aW4sICpkc3Rfc2luOwpAQCAtMTE2NjIsNyArMTE2OTksNyBAQCBzY3RwX3NlbmRfcmVzcF9tc2co
c3RydWN0IHNvY2thZGRyICpzcmMsIHN0cnVjdCBzb2NrYWRkciAqZHN0LAogCQlsZW4gKz0gc2l6
ZW9mKHN0cnVjdCB1ZHBoZHIpOwogCX0KICNlbmRpZgotI2lmIGRlZmluZWQoX19BUFBMRV9fKQor
I2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmIGRl
ZmluZWQoQVBQTEVfTEVPUEFSRCkgfHwgZGVmaW5lZChBUFBMRV9TTk9XTEVPUEFSRCkKIAltb3V0
ID0gc2N0cF9nZXRfbWJ1Zl9mb3JfbXNnKGxlbiArIG1heF9saW5raGRyLCAxLCBNX05PV0FJVCwg
MSwgTVRfREFUQSk7CiAjZWxzZQpAQCAtMTE2NzcsNyArMTE3MTQsNyBAQCBzY3RwX3NlbmRfcmVz
cF9tc2coc3RydWN0IHNvY2thZGRyICpzcmMsIHN0cnVjdCBzb2NrYWRkciAqZHN0LAogCQl9CiAJ
CXJldHVybjsKIAl9Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExF
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaWYgZGVmaW5lZChBUFBMRV9MRU9QQVJE
KSB8fCBkZWZpbmVkKEFQUExFX1NOT1dMRU9QQVJEKQogCVNDVFBfQlVGX1JFU1ZfVUYobW91dCwg
bWF4X2xpbmtoZHIpOwogI2Vsc2UKQEAgLTExNjg4LDcgKzExNzI1LDcgQEAgc2N0cF9zZW5kX3Jl
c3BfbXNnKHN0cnVjdCBzb2NrYWRkciAqc3JjLCBzdHJ1Y3Qgc29ja2FkZHIgKmRzdCwKICNlbmRp
ZgogCVNDVFBfQlVGX0xFTihtb3V0KSA9IGxlbjsKIAlTQ1RQX0JVRl9ORVhUKG1vdXQpID0gY2F1
c2U7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCU1fU0VURklCKG1vdXQsIGZpYm51bSk7CiAJbW91
dC0+bV9wa3RoZHIuZmxvd2lkID0gbWZsb3dpZDsKIAlNX0hBU0hUWVBFX1NFVChtb3V0LCBtZmxv
d3R5cGUpOwpAQCAtMTE3MDgsMTggKzExNzQ1LDE2IEBAIHNjdHBfc2VuZF9yZXNwX21zZyhzdHJ1
Y3Qgc29ja2FkZHIgKnNyYywgc3RydWN0IHNvY2thZGRyICpkc3QsCiAJCWlwLT5pcF92ID0gSVBW
RVJTSU9OOwogCQlpcC0+aXBfaGwgPSAoc2l6ZW9mKHN0cnVjdCBpcCkgPj4gMik7CiAJCWlwLT5p
cF90b3MgPSAwOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCi0jaWYgX19GcmVlQlNEX3ZlcnNp
b24gPj0gMTAwMDAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAJCWlwLT5pcF9vZmYgPSBodG9ucyhJUF9ERik7Ci0jZWxzZQotCQlpcC0+aXBf
b2ZmID0gSVBfREY7Ci0jZW5kaWYKLSNlbGlmIGRlZmluZWQoV0lUSF9DT05WRVJUX0lQX09GRikg
fHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRGFyd2luKQor
I2VsaWYgZGVmaW5lZChXSVRIX0NPTlZFUlRfSVBfT0ZGKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykK
IAkJaXAtPmlwX29mZiA9IElQX0RGOwogI2Vsc2UKIAkJaXAtPmlwX29mZiA9IGh0b25zKElQX0RG
KTsKICNlbmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQorCQlpcC0+aXBfaWQgPSBodG9ucyhpcF9pZCsrKTsKKyNlbGlmIGRlZmluZWQoX19G
cmVlQlNEX18pCiAJCWlwX2ZpbGxpZChpcCk7CiAjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKICNp
ZiBSQU5ET01fSVBfSUQKQEAgLTExNzI3LDggKzExNzYyLDYgQEAgc2N0cF9zZW5kX3Jlc3BfbXNn
KHN0cnVjdCBzb2NrYWRkciAqc3JjLCBzdHJ1Y3Qgc29ja2FkZHIgKmRzdCwKICNlbHNlCiAJCWlw
LT5pcF9pZCA9IGh0b25zKGlwX2lkKyspOwogI2VuZGlmCi0jZWxpZiBkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCi0JCWlwLT5pcF9pZCA9IGh0b25zKGlwX2lkKyspOwogI2Vsc2UKIAkJaXAtPmlwX2lk
ID0gaXBfaWQrKzsKICNlbmRpZgpAQCAtMTE3NTEsNyArMTE3ODQsNyBAQCBzY3RwX3NlbmRfcmVz
cF9tc2coc3RydWN0IHNvY2thZGRyICpzcmMsIHN0cnVjdCBzb2NrYWRkciAqZHN0LAogCQlkc3Rf
c2luNiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopZHN0OwogCQlpcDYgPSBtdG9kKG1vdXQsIHN0
cnVjdCBpcDZfaGRyICopOwogCQlpcDYtPmlwNl9mbG93ID0gaHRvbmwoMHg2MDAwMDAwMCk7Ci0j
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCQlpZiAoVl9pcDZfYXV0b19mbG93bGFiZWwpIHsKIAkJCWlw
Ni0+aXA2X2Zsb3cgfD0gKGh0b25sKGlwNl9yYW5kb21mbG93bGFiZWwoKSkgJiBJUFY2X0ZMT1dM
QUJFTF9NQVNLKTsKIAkJfQpAQCAtMTE4MjUsMTYgKzExODU4LDEzIEBAIHNjdHBfc2VuZF9yZXNw
X21zZyhzdHJ1Y3Qgc29ja2FkZHIgKnNyYywgc3RydWN0IHNvY2thZGRyICpkc3QsCiAJc3dpdGNo
IChkc3QtPnNhX2ZhbWlseSkgewogI2lmZGVmIElORVQKIAljYXNlIEFGX0lORVQ6Ci0jaWYgZGVm
aW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19QYW5kYV9fKQorI2lmIGRlZmluZWQoX19BUFBM
RV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkvKiB6YXAgdGhlIHN0YWNrIHBvaW50
ZXIgdG8gdGhlIHJvdXRlICovCiAJCW1lbXNldCgmcm8sIDAsIHNpemVvZihzY3RwX3JvdXRlX3Qp
KTsKLSNpZiBkZWZpbmVkKF9fUGFuZGFfXykKLQkJcm8uX2xfYWRkci5zYS5zYV9mYW1pbHkgPSBB
Rl9JTkVUOwotI2VuZGlmCiAjZW5kaWYKIAkJaWYgKHBvcnQpIHsKLSNpZiAhZGVmaW5lZChfX1dp
bmRvd3NfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKLSNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiAoKF9fRnJlZUJTRF92ZXJzaW9uID4gODAzMDAwICYmIF9fRnJlZUJTRF92ZXJzaW9u
IDwgOTAwMDAwKSB8fCBfX0ZyZWVCU0RfdmVyc2lvbiA+IDkwMDAwMCkKKyNpZiAhZGVmaW5lZChf
V0lOMzIpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykKIAkJCWlmIChWX3VkcF9ja3N1bSkgewogCQkJCXVkcC0+dWhfc3VtID0gaW5fcHNldWRvKGlw
LT5pcF9zcmMuc19hZGRyLCBpcC0+aXBfZHN0LnNfYWRkciwgdWRwLT51aF91bGVuICsgaHRvbnMo
SVBQUk9UT19VRFApKTsKIAkJCX0gZWxzZSB7CkBAIC0xMTg0NywxMiArMTE4NzcsOCBAQCBzY3Rw
X3NlbmRfcmVzcF9tc2coc3RydWN0IHNvY2thZGRyICpzcmMsIHN0cnVjdCBzb2NrYWRkciAqZHN0
LAogCQkJdWRwLT51aF9zdW0gPSAwOwogI2VuZGlmCiAJCX0KLSNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKQotI2lmIF9fRnJlZUJTRF92ZXJzaW9uID49IDEwMDAwMDAKKyNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlpcC0+aXBfbGVuID0gaHRvbnMo
bGVuKTsKLSNlbHNlCi0JCWlwLT5pcF9sZW4gPSBsZW47Ci0jZW5kaWYKICNlbGlmIGRlZmluZWQo
X19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCWlwLT5pcF9sZW4gPSBsZW47
CiAjZWxzZQpAQCAtMTE4NjEsOCArMTE4ODcsOCBAQCBzY3RwX3NlbmRfcmVzcF9tc2coc3RydWN0
IHNvY2thZGRyICpzcmMsIHN0cnVjdCBzb2NrYWRkciAqZHN0LAogCQlpZiAocG9ydCkgewogCQkJ
c2hvdXQtPmNoZWNrc3VtID0gc2N0cF9jYWxjdWxhdGVfY2tzdW0obW91dCwgc2l6ZW9mKHN0cnVj
dCBpcCkgKyBzaXplb2Yoc3RydWN0IHVkcGhkcikpOwogCQkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNf
c2VuZHN3Y3JjKTsKLSNpZiAhZGVmaW5lZChfX1dpbmRvd3NfXykgJiYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAoKF9fRnJlZUJTRF92ZXJzaW9u
ID4gODAzMDAwICYmIF9fRnJlZUJTRF92ZXJzaW9uIDwgOTAwMDAwKSB8fCBfX0ZyZWVCU0RfdmVy
c2lvbiA+IDkwMDAwMCkKKyNpZiAhZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKIAkJCWlmIChWX3VkcF9ja3N1bSkgewog
CQkJCVNDVFBfRU5BQkxFX1VEUF9DU1VNKG9fcGFrKTsKIAkJCX0KQEAgLTExODcxLDcgKzExODk3
LDcgQEAgc2N0cF9zZW5kX3Jlc3BfbXNnKHN0cnVjdCBzb2NrYWRkciAqc3JjLCBzdHJ1Y3Qgc29j
a2FkZHIgKmRzdCwKICNlbmRpZgogI2VuZGlmCiAJCX0gZWxzZSB7Ci0jaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAwMDAwCisjaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCW1vdXQtPm1fcGt0aGRyLmNz
dW1fZmxhZ3MgPSBDU1VNX1NDVFA7CiAJCQltb3V0LT5tX3BrdGhkci5jc3VtX2RhdGEgPSBvZmZz
ZXRvZihzdHJ1Y3Qgc2N0cGhkciwgY2hlY2tzdW0pOwogCQkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNf
c2VuZGh3Y3JjKTsKQEAgLTExODg1LDcgKzExOTExLDcgQEAgc2N0cF9zZW5kX3Jlc3BfbXNnKHN0
cnVjdCBzb2NrYWRkciAqc3JjLCBzdHJ1Y3Qgc29ja2FkZHIgKmRzdCwKIAkJCXNjdHBfcGFja2V0
X2xvZyhvX3Bhayk7CiAJCX0KICNlbmRpZgotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZp
bmVkKF9fUGFuZGFfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKIAkJU0NUUF9JUF9PVVRQVVQocmV0LCBvX3BhaywgJnJvLCBOVUxMLCB2cmZfaWQp
OwogCQkvKiBGcmVlIHRoZSByb3V0ZSBpZiB3ZSBnb3Qgb25lIGJhY2sgKi8KIAkJaWYgKHJvLnJv
X3J0KSB7CkBAIC0xMTg5MywzMCArMTE5MTksMzEgQEAgc2N0cF9zZW5kX3Jlc3BfbXNnKHN0cnVj
dCBzb2NrYWRkciAqc3JjLCBzdHJ1Y3Qgc29ja2FkZHIgKmRzdCwKIAkJCXJvLnJvX3J0ID0gTlVM
TDsKIAkJfQogI2Vsc2UKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQorCQlTQ1RQX1BST0JFNShzZW5kLCBOVUxMLCBOVUxMLCBpcCwgTlVMTCwgc2hv
dXQpOworI2VuZGlmCiAJCVNDVFBfSVBfT1VUUFVUKHJldCwgb19wYWssIE5VTEwsIE5VTEwsIHZy
Zl9pZCk7CiAjZW5kaWYKIAkJYnJlYWs7CiAjZW5kaWYKICNpZmRlZiBJTkVUNgogCWNhc2UgQUZf
SU5FVDY6Ci0JCWlwNi0+aXA2X3BsZW4gPSBodG9ucyhsZW4gLSBzaXplb2Yoc3RydWN0IGlwNl9o
ZHIpKTsKKwkJaXA2LT5pcDZfcGxlbiA9IGh0b25zKCh1aW50MTZfdCkobGVuIC0gc2l6ZW9mKHN0
cnVjdCBpcDZfaGRyKSkpOwogCQlpZiAocG9ydCkgewogCQkJc2hvdXQtPmNoZWNrc3VtID0gc2N0
cF9jYWxjdWxhdGVfY2tzdW0obW91dCwgc2l6ZW9mKHN0cnVjdCBpcDZfaGRyKSArIHNpemVvZihz
dHJ1Y3QgdWRwaGRyKSk7CiAJCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19zZW5kc3djcmMpOwotI2lm
IGRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiBk
ZWZpbmVkKF9XSU4zMikKIAkJCXVkcC0+dWhfc3VtID0gMDsKLSNlbGlmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCisjZWxzZQogCQkJaWYgKCh1ZHAtPnVoX3N1bSA9IGluNl9ja3N1bShvX3Bhaywg
SVBQUk9UT19VRFAsIHNpemVvZihzdHJ1Y3QgaXA2X2hkciksIGxlbiAtIHNpemVvZihzdHJ1Y3Qg
aXA2X2hkcikpKSA9PSAwKSB7CiAJCQkJdWRwLT51aF9zdW0gPSAweGZmZmY7CiAJCQl9CisjZW5k
aWYKICNlbmRpZgogCQl9IGVsc2UgewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJl
ZUJTRF92ZXJzaW9uID49IDkwMDAwMAotI2lmIF9fRnJlZUJTRF92ZXJzaW9uID4gOTAxMDAwCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCW1v
dXQtPm1fcGt0aGRyLmNzdW1fZmxhZ3MgPSBDU1VNX1NDVFBfSVBWNjsKLSNlbHNlCi0JCQltb3V0
LT5tX3BrdGhkci5jc3VtX2ZsYWdzID0gQ1NVTV9TQ1RQOwotI2VuZGlmCiAJCQltb3V0LT5tX3Br
dGhkci5jc3VtX2RhdGEgPSBvZmZzZXRvZihzdHJ1Y3Qgc2N0cGhkciwgY2hlY2tzdW0pOwogCQkJ
U0NUUF9TVEFUX0lOQ1Ioc2N0cHNfc2VuZGh3Y3JjKTsKICNlbHNlCkBAIC0xMTkyOCw2ICsxMTk1
NSw5IEBAIHNjdHBfc2VuZF9yZXNwX21zZyhzdHJ1Y3Qgc29ja2FkZHIgKnNyYywgc3RydWN0IHNv
Y2thZGRyICpkc3QsCiAJCWlmIChTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbG9nZ2luZ19sZXZlbCkg
JiBTQ1RQX0xBU1RfUEFDS0VUX1RSQUNJTkcpIHsKIAkJCXNjdHBfcGFja2V0X2xvZyhvX3Bhayk7
CiAJCX0KKyNlbmRpZgorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCisJCVNDVFBfUFJPQkU1KHNlbmQsIE5VTEwsIE5VTEwsIGlwNiwgTlVMTCwgc2hv
dXQpOwogI2VuZGlmCiAJCVNDVFBfSVA2X09VVFBVVChyZXQsIG9fcGFrLCBOVUxMLCBOVUxMLCBO
VUxMLCB2cmZfaWQpOwogCQlicmVhazsKQEAgLTExOTcwLDYgKzEyMDAwLDExIEBAIHNjdHBfc2Vu
ZF9yZXNwX21zZyhzdHJ1Y3Qgc29ja2FkZHIgKnNyYywgc3RydWN0IHNvY2thZGRyICpkc3QsCiAJ
CXJldHVybjsKIAl9CiAJU0NUUERCRyhTQ1RQX0RFQlVHX09VVFBVVDMsICJyZXR1cm4gZnJvbSBz
ZW5kIGlzICVkXG4iLCByZXQpOworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCisJaWYgKHBvcnQpIHsKKwkJVURQU1RBVF9JTkModWRwc19vcGFja2V0
cyk7CisJfQorI2VuZGlmCiAJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfc2VuZHBhY2tldHMpOwogCVND
VFBfU1RBVF9JTkNSX0NPVU5URVI2NChzY3Rwc19vdXRwYWNrZXRzKTsKIAlTQ1RQX1NUQVRfSU5D
Ul9DT1VOVEVSNjQoc2N0cHNfb3V0Y29udHJvbGNodW5rcyk7CkBAIC0xMTk4MiwyNCArMTIwMTcs
MjAgQEAgc2N0cF9zZW5kX3Jlc3BfbXNnKHN0cnVjdCBzb2NrYWRkciAqc3JjLCBzdHJ1Y3Qgc29j
a2FkZHIgKmRzdCwKIHZvaWQKIHNjdHBfc2VuZF9zaHV0ZG93bl9jb21wbGV0ZTIoc3RydWN0IHNv
Y2thZGRyICpzcmMsIHN0cnVjdCBzb2NrYWRkciAqZHN0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3Qgc2N0cGhkciAqc2gsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IG1mbG93dHlwZSwgdWludDMyX3QgbWZsb3dp
ZCwgdWludDE2X3QgZmlibnVtLAogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQzMl90IHZyZl9pZCwgdWludDE2X3QgcG9ydCkKIHsKIAlzY3RwX3NlbmRfcmVzcF9tc2co
c3JjLCBkc3QsIHNoLCAwLCBTQ1RQX1NIVVRET1dOX0NPTVBMRVRFLCBOVUxMLAotI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKIAkgICAgICAgICAgICAgICAgICAgbWZsb3d0eXBlLCBtZmxvd2lkLCBmaWJu
dW0sCiAjZW5kaWYKIAkgICAgICAgICAgICAgICAgICAgdnJmX2lkLCBwb3J0KTsKIH0KIAogdm9p
ZAotc2N0cF9zZW5kX2hiKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfbmV0cyAq
bmV0LGludCBzb19sb2NrZWQKLSNpZiAhZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKFND
VFBfU09fTE9DS19URVNUSU5HKQotCVNDVFBfVU5VU0VECi0jZW5kaWYKLSkKK3NjdHBfc2VuZF9o
YihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX25ldHMgKm5ldCxpbnQgc29fbG9j
a2VkKQogewogCXN0cnVjdCBzY3RwX3RtaXRfY2h1bmsgKmNoazsKIAlzdHJ1Y3Qgc2N0cF9oZWFy
dGJlYXRfY2h1bmsgKmhiOwpAQCAtMTIyNDAsNyArMTIyNzEsNyBAQCBzY3RwX3NlbmRfcGFja2V0
X2Ryb3BwZWQoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsCiAJ
Y2hrLT5mbGFncyA9IDA7CiAJbGVuIC09IGlwaGxlbjsKIAljaGstPnNlbmRfc2l6ZSA9IGxlbjsK
LSAgICAgICAgLyogVmFsaWRhdGUgdGhhdCB3ZSBkbyBub3QgaGF2ZSBhbiBBQk9SVCBpbiBoZXJl
LiAqLworCS8qIFZhbGlkYXRlIHRoYXQgd2UgZG8gbm90IGhhdmUgYW4gQUJPUlQgaW4gaGVyZS4g
Ki8KIAlvZmZzZXQgPSBpcGhsZW4gKyBzaXplb2Yoc3RydWN0IHNjdHBoZHIpOwogCWNoID0gKHN0
cnVjdCBzY3RwX2NodW5raGRyICopc2N0cF9tX2dldHB0cihtLCBvZmZzZXQsCiAJCQkJCQkgICBz
aXplb2YoKmNoKSwgKHVpbnQ4X3QgKikgJiBjaHVua19idWYpOwpAQCAtMTI4NjYsNyArMTI4OTcs
NiBAQCBzY3RwX3NlbmRfc3RyX3Jlc2V0X3JlcShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJY2hr
LT5ib29rX3NpemUgPSBzaXplb2Yoc3RydWN0IHNjdHBfY2h1bmtoZHIpOwogCWNoay0+c2VuZF9z
aXplID0gU0NUUF9TSVpFMzIoY2hrLT5ib29rX3NpemUpOwogCWNoay0+Ym9va19zaXplX3NjYWxl
ID0gMDsKLQogCWNoay0+ZGF0YSA9IHNjdHBfZ2V0X21idWZfZm9yX21zZyhNQ0xCWVRFUywgMCwg
TV9OT1dBSVQsIDEsIE1UX0RBVEEpOwogCWlmIChjaGstPmRhdGEgPT0gTlVMTCkgewogCQlzY3Rw
X2ZyZWVfYV9jaHVuayhzdGNiLCBjaGssIFNDVFBfU09fTE9DS0VEKTsKQEAgLTEzMDA4LDcgKzEz
MDM4LDcgQEAgc2tpcF9zdHVmZjoKIHZvaWQKIHNjdHBfc2VuZF9hYm9ydChzdHJ1Y3QgbWJ1ZiAq
bSwgaW50IGlwaGxlbiwgc3RydWN0IHNvY2thZGRyICpzcmMsIHN0cnVjdCBzb2NrYWRkciAqZHN0
LAogICAgICAgICAgICAgICAgIHN0cnVjdCBzY3RwaGRyICpzaCwgdWludDMyX3QgdnRhZywgc3Ry
dWN0IG1idWYgKmNhdXNlLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICAgICAgICAgICAgICAgICB1
aW50OF90IG1mbG93dHlwZSwgdWludDMyX3QgbWZsb3dpZCwgdWludDE2X3QgZmlibnVtLAogI2Vu
ZGlmCiAgICAgICAgICAgICAgICAgdWludDMyX3QgdnJmX2lkLCB1aW50MTZfdCBwb3J0KQpAQCAt
MTMwMjAsNyArMTMwNTAsNyBAQCBzY3RwX3NlbmRfYWJvcnQoc3RydWN0IG1idWYgKm0sIGludCBp
cGhsZW4sIHN0cnVjdCBzb2NrYWRkciAqc3JjLCBzdHJ1Y3Qgc29ja2FkZAogCQlyZXR1cm47CiAJ
fQogCXNjdHBfc2VuZF9yZXNwX21zZyhzcmMsIGRzdCwgc2gsIHZ0YWcsIFNDVFBfQUJPUlRfQVNT
T0NJQVRJT04sIGNhdXNlLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkgICAgICAgICAgICAgICAg
ICAgbWZsb3d0eXBlLCBtZmxvd2lkLCBmaWJudW0sCiAjZW5kaWYKIAkgICAgICAgICAgICAgICAg
ICAgdnJmX2lkLCBwb3J0KTsKQEAgLTEzMDMwLDEzICsxMzA2MCwxMyBAQCBzY3RwX3NlbmRfYWJv
cnQoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIHN0cnVjdCBzb2NrYWRkciAqc3JjLCBzdHJ1
Y3Qgc29ja2FkZAogdm9pZAogc2N0cF9zZW5kX29wZXJyX3RvKHN0cnVjdCBzb2NrYWRkciAqc3Jj
LCBzdHJ1Y3Qgc29ja2FkZHIgKmRzdCwKICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2N0cGhk
ciAqc2gsIHVpbnQzMl90IHZ0YWcsIHN0cnVjdCBtYnVmICpjYXVzZSwKLSNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAgICAgICAgICAgICAgICAgICAgdWludDhfdCBtZmxvd3R5cGUsIHVpbnQzMl90IG1m
bG93aWQsIHVpbnQxNl90IGZpYm51bSwKICNlbmRpZgogICAgICAgICAgICAgICAgICAgIHVpbnQz
Ml90IHZyZl9pZCwgdWludDE2X3QgcG9ydCkKIHsKIAlzY3RwX3NlbmRfcmVzcF9tc2coc3JjLCBk
c3QsIHNoLCB2dGFnLCBTQ1RQX09QRVJBVElPTl9FUlJPUiwgY2F1c2UsCi0jaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCSAgICAgICAgICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQsIGZpYm51bSwK
ICNlbmRpZgogCSAgICAgICAgICAgICAgICAgICB2cmZfaWQsIHBvcnQpOwpAQCAtMTMwNDYsMjcg
KzEzMDc2LDE0IEBAIHNjdHBfc2VuZF9vcGVycl90byhzdHJ1Y3Qgc29ja2FkZHIgKnNyYywgc3Ry
dWN0IHNvY2thZGRyICpkc3QsCiBzdGF0aWMgc3RydWN0IG1idWYgKgogc2N0cF9jb3B5X3Jlc3Vt
ZShzdHJ1Y3QgdWlvICp1aW8sCiAJCSBpbnQgbWF4X3NlbmRfbGVuLAotI2lmIChkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDYwMjAwMCkgfHwgZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKIAkJIGludCB1c2VyX21hcmtzX2VvciwKICNlbmRpZgogCQkgaW50ICplcnJvciwKIAkJ
IHVpbnQzMl90ICpzbmRvdXQsCiAJCSBzdHJ1Y3QgbWJ1ZiAqKm5ld190YWlsKQogewotI2lmIGRl
ZmluZWQoX19QYW5kYV9fKQotCXN0cnVjdCBtYnVmICptOwotCi0JbSA9IG1fdWlvdG9tYnVmKHVp
bywgTV9XQUlUT0ssIG1heF9zZW5kX2xlbiwgMCwKLQkJCSh1c2VyX21hcmtzX2VvciA/IE1fRU9S
IDogMCkpOwotCWlmIChtID09IE5VTEwpIHsKLQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChOVUxMLCBO
VUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9PVVRQVVQsIEVOT0JVRlMpOwotCQkqZXJyb3IgPSBF
Tk9CVUZTOwotCX0gZWxzZSB7Ci0JCSpzbmRvdXQgPSBtX2xlbmd0aChtLCBOVUxMKTsKLQkJKm5l
d190YWlsID0gbV9sYXN0KG0pOwotCX0KLQlyZXR1cm4gKG0pOwotI2VsaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPiA2MDIwMDAgfHwgZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKIAlzdHJ1Y3QgbWJ1ZiAqbTsKIAogCW0gPSBtX3Vpb3RvbWJ1Zih1aW8sIE1fV0FJVE9LLCBt
YXhfc2VuZF9sZW4sIDAsCkBAIC0xMzA4Myw3ICsxMzEwMCw3IEBAIHNjdHBfY29weV9yZXN1bWUo
c3RydWN0IHVpbyAqdWlvLAogCWludCBsZWZ0LCBjYW5jcHksIHdpbGxjcHk7CiAJc3RydWN0IG1i
dWYgKm0sICpoZWFkOwogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQ
UExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaWYgZGVmaW5lZChBUFBMRV9MRU9Q
QVJEKQogCWxlZnQgPSAoaW50KW1pbih1aW8tPnVpb19yZXNpZCwgbWF4X3NlbmRfbGVuKTsKICNl
bHNlCkBAIC0xMzE0OSwxNyArMTMxNjYsNyBAQCBzY3RwX2NvcHlfb25lKHN0cnVjdCBzY3RwX3N0
cmVhbV9xdWV1ZV9wZW5kaW5nICpzcCwKICAgICAgICAgICAgICAgc3RydWN0IHVpbyAqdWlvLAog
ICAgICAgICAgICAgICBpbnQgcmVzdl91cGZyb250KQogewotI2lmIGRlZmluZWQoX19QYW5kYV9f
KQotCXNwLT5kYXRhID0gbV91aW90b21idWYodWlvLCBNX1dBSVRPSywgc3AtPmxlbmd0aCwKLQkg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3ZfdXBmcm9udCwgMCk7Ci0JaWYgKHNwLT5kYXRhID09
IE5VTEwpIHsKLQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChOVUxMLCBOVUxMLCBOVUxMLCBTQ1RQX0ZS
T01fU0NUUF9PVVRQVVQsIEVOT0JVRlMpOwotCQlyZXR1cm4gKEVOT0JVRlMpOwotCX0KLQotCXNw
LT50YWlsX21idWYgPSBtX2xhc3Qoc3AtPmRhdGEpOwotCXJldHVybiAoMCk7Ci0jZWxpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDYwMjAwMCB8fCBkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogCXNwLT5kYXRhID0gbV91aW90b21idWYodWlvLCBNX1dBSVRPSywgc3AtPmxl
bmd0aCwKIAkgICAgICAgICAgICAgICAgICAgICAgIHJlc3ZfdXBmcm9udCwgMCk7CiAJaWYgKHNw
LT5kYXRhID09IE5VTEwpIHsKQEAgLTEzMjMyLDcgKzEzMjM5LDcgQEAgc2N0cF9jb3B5X2l0X2lu
KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKICAgICBzdHJ1Y3Qgc2N0cF9zbmRyY3ZpbmZvICpzcmN2
LAogICAgIHN0cnVjdCB1aW8gKnVpbywKICAgICBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsCi0gICAg
aW50IG1heF9zZW5kX2xlbiwKKyAgICBzc2l6ZV90IG1heF9zZW5kX2xlbiwKICAgICBpbnQgdXNl
cl9tYXJrc19lb3IsCiAgICAgaW50ICplcnJvcikKIApAQCAtMTMyNDksOSArMTMyNTYsOSBAQCBz
Y3RwX2NvcHlfaXRfaW4oc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCiAJKmVycm9yID0gMDsKIAkv
KiBOb3cgY2FuIHdlIHNlbmQgdGhpcz8gKi8KLQlpZiAoKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09
IFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCkgfHwKLQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2Mp
ID09IFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQpIHx8Ci0JICAgIChTQ1RQX0dFVF9TVEFU
RShhc29jKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSB8fAorCWlmICgoU0NUUF9H
RVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKSB8fAorCSAgICAoU0NU
UF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tfU0VOVCkgfHwKKwkg
ICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQp
IHx8CiAJICAgIChhc29jLT5zdGF0ZSAmIFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORykpIHsK
IAkJLyogZ290IGRhdGEgd2hpbGUgc2h1dHRpbmcgZG93biAqLwogCQlTQ1RQX0xUUkFDRV9FUlJf
UkVUKE5VTEwsIHN0Y2IsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX09VVFBVVCwgRUNPTk5SRVNFVCk7
CkBAIC0xMzI3NCw3ICsxMzI4MSw3IEBAIHNjdHBfY29weV9pdF9pbihzdHJ1Y3Qgc2N0cF90Y2Ig
KnN0Y2IsCiAJKHZvaWQpU0NUUF9HRVRUSU1FX1RJTUVWQUwoJnNwLT50cyk7CiAKIAlzcC0+c2lk
ID0gc3Jjdi0+c2luZm9fc3RyZWFtOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmlu
ZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmIGRlZmluZWQoQVBQ
TEVfTEVPUEFSRCkKIAlzcC0+bGVuZ3RoID0gKHVpbnQzMl90KW1pbih1aW8tPnVpb19yZXNpZCwg
bWF4X3NlbmRfbGVuKTsKICNlbHNlCkBAIC0xMzI4Myw3ICsxMzI5MCw3IEBAIHNjdHBfY29weV9p
dF9pbihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAjZWxzZQogCXNwLT5sZW5ndGggPSAodWludDMy
X3QpbWluKHVpby0+dWlvX3Jlc2lkLCBtYXhfc2VuZF9sZW4pOwogI2VuZGlmCi0jaWYgZGVmaW5l
ZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAjaWYgZGVmaW5lZChBUFBMRV9MRU9QQVJEKQogCWlmICgoc3AtPmxlbmd0aCA9PSAo
dWludDMyX3QpdWlvLT51aW9fcmVzaWQpICYmCiAjZWxzZQpAQCAtMTMzMTYsMTEgKzEzMzIzLDEx
IEBAIHNjdHBfY29weV9pdF9pbihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCXNjdHBfYXV0aF9r
ZXlfYWNxdWlyZShzdGNiLCBzcC0+YXV0aF9rZXlpZCk7CiAJCXNwLT5ob2xkc19rZXlfcmVmID0g
MTsKIAl9Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJU0NUUF9TT0NLRVRfVU5MT0NLKFNDVFBfSU5QX1NP
KHN0Y2ItPnNjdHBfZXApLCAwKTsKICNlbmRpZgogCSplcnJvciA9IHNjdHBfY29weV9vbmUoc3As
IHVpbywgcmVzdl9pbl9maXJzdCk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5l
ZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJU0NUUF9TT0NLRVRfTE9D
SyhTQ1RQX0lOUF9TTyhzdGNiLT5zY3RwX2VwKSwgMCk7CiAjZW5kaWYKICBza2lwX2NvcHk6CkBA
IC0xMzM1MSwyMCArMTMzNTgsMTUgQEAgaW50CiBzY3RwX3Nvc2VuZChzdHJ1Y3Qgc29ja2V0ICpz
bywKICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkciAqYWRkciwKICAgICAgICAgICAgIHN0cnVj
dCB1aW8gKnVpbywKLSNpZmRlZiBfX1BhbmRhX18KLSAgICAgICAgICAgIHBha2hhbmRsZV90eXBl
IHRvcCwKLSAgICAgICAgICAgIHBha2hhbmRsZV90eXBlIGljb250cm9sLAotI2Vsc2UKICAgICAg
ICAgICAgIHN0cnVjdCBtYnVmICp0b3AsCiAgICAgICAgICAgICBzdHJ1Y3QgbWJ1ZiAqY29udHJv
bCwKLSNlbmRpZgotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fUGFuZGFfXykK
KyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICAgICAg
ICAgICAgIGludCBmbGFncwogI2Vsc2UKICAgICAgICAgICAgIGludCBmbGFncywKLSNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMDAKKyNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogICAgICAgICAgICAg
c3RydWN0IHRocmVhZCAqcAotI2VsaWYgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNlbGlmIGRlZmlu
ZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogICAgICAgICAgICAgUEtUSFJF
QUQgcAogI2Vsc2UKICNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCkBAIC0xMzM3OCwxMCArMTMz
ODAsNyBAQCBzY3RwX3Nvc2VuZChzdHJ1Y3Qgc29ja2V0ICpzbywKICNlbmRpZgogKQogewotI2lm
ZGVmIF9fUGFuZGFfXwotCXN0cnVjdCBtYnVmICpjb250cm9sID0gTlVMTDsKLSNlbmRpZgotI2lm
IGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogCXN0cnVjdCBwcm9jICpwID0gY3VycmVudF9wcm9jKCk7CiAjZW5kaWYK
IAlpbnQgZXJyb3IsIHVzZV9zbmRpbmZvID0gMDsKQEAgLTEzMzkxLDExICsxMzM5MCw4IEBAIHNj
dHBfc29zZW5kKHN0cnVjdCBzb2NrZXQgKnNvLAogCXN0cnVjdCBzb2NrYWRkcl9pbiBzaW47CiAj
ZW5kaWYKIAotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCVNDVFBfU09DS0VUX0xPQ0soc28sIDEpOwotI2Vu
ZGlmCi0jaWZkZWYgX19QYW5kYV9fCi0JY29udHJvbCA9IFNDVFBfSEVBREVSX1RPX0NIQUlOKGlj
b250cm9sKTsKICNlbmRpZgogCWlmIChjb250cm9sKSB7CiAJCS8qIHByb2Nlc3MgY21zZyBzbmQv
cmN2IGluZm8gKG1heWJlIGEgYXNzb2MtaWQpICovCkBAIC0xMzQxOCwxOCArMTM0MTQsMTQgQEAg
c2N0cF9zb3NlbmQoc3RydWN0IHNvY2tldCAqc28sCiAJfQogI2VuZGlmCiAJZXJyb3IgPSBzY3Rw
X2xvd2VyX3Nvc2VuZChzbywgYWRkcl90b191c2UsIHVpbywgdG9wLAotI2lmZGVmIF9fUGFuZGFf
XwotCQkJCSAgaWNvbnRyb2wsCi0jZWxzZQogCQkJCSAgY29udHJvbCwKLSNlbmRpZgogCQkJCSAg
ZmxhZ3MsCiAJCQkJICB1c2Vfc25kaW5mbyA/ICZzbmRyY3ZuaW5mbzogTlVMTAotI2lmICEoZGVm
aW5lZChfX1BhbmRhX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCisjaWYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKIAkJCQkgICwgcAogI2VuZGlmCiAJCSk7Ci0jaWYgZGVmaW5lZChfX0FQ
UExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAJU0NUUF9TT0NLRVRfVU5MT0NLKHNvLCAxKTsKICNlbmRpZgogCXJldHVybiAoZXJyb3IpOwpA
QCAtMTM0NDAsMjAgKzEzNDMyLDE1IEBAIGludAogc2N0cF9sb3dlcl9zb3NlbmQoc3RydWN0IHNv
Y2tldCAqc28sCiAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsCiAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3QgdWlvICp1aW8sCi0jaWZkZWYgX19QYW5kYV9fCi0gICAgICAg
ICAgICAgICAgICBwYWtoYW5kbGVfdHlwZSBpX3BhaywKLSAgICAgICAgICAgICAgICAgIHBha2hh
bmRsZV90eXBlIGlfY29udHJvbCwKLSNlbHNlCiAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbWJ1
ZiAqaV9wYWssCiAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbWJ1ZiAqY29udHJvbCwKLSNlbmRp
ZgogICAgICAgICAgICAgICAgICAgaW50IGZsYWdzLAogICAgICAgICAgICAgICAgICAgc3RydWN0
IHNjdHBfc25kcmN2aW5mbyAqc3JjdgotI2lmICEoZGVmaW5lZCggX19QYW5kYV9fKSB8fCBkZWZp
bmVkKF9fVXNlcnNwYWNlX18pKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAgICAgICAg
ICAgICAgICAgICAsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNp
b24gPj0gNTAwMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKICAgICAgICAgICAgICAgICAg
IHN0cnVjdCB0aHJlYWQgKnAKLSNlbGlmIGRlZmluZWQoX19XaW5kb3dzX18pCisjZWxpZiBkZWZp
bmVkKF9XSU4zMikKICAgICAgICAgICAgICAgICAgIFBLVEhSRUFEIHAKICNlbHNlCiAgICAgICAg
ICAgICAgICAgICBzdHJ1Y3QgcHJvYyAqcApAQCAtMTM0NjEsMTIgKzEzNDQ4LDEyIEBAIHNjdHBf
bG93ZXJfc29zZW5kKHN0cnVjdCBzb2NrZXQgKnNvLAogI2VuZGlmCiAJKQogewotCXVuc2lnbmVk
IGludCBzbmRsZW4gPSAwLCBtYXhfbGVuOworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJc3RydWN0IGVwb2NoX3RyYWNrZXIgZXQ7CisjZW5kaWYK
Kwlzc2l6ZV90IHNuZGxlbiA9IDAsIG1heF9sZW4sIGxvY2FsX2FkZF9tb3JlOwogCWludCBlcnJv
ciwgbGVuOwogCXN0cnVjdCBtYnVmICp0b3AgPSBOVUxMOwotI2lmZGVmIF9fUGFuZGFfXwotCXN0
cnVjdCBtYnVmICpjb250cm9sID0gTlVMTDsKLSNlbmRpZgogCWludCBxdWV1ZV9vbmx5ID0gMCwg
cXVldWVfb25seV9mb3JfaW5pdCA9IDA7CiAJaW50IGZyZWVfY250X2FwcGxpZWQgPSAwOwogCWlu
dCB1bl9zZW50OwpAQCAtMTM0ODYsNyArMTM0NzMsNyBAQCBzY3RwX2xvd2VyX3Nvc2VuZChzdHJ1
Y3Qgc29ja2V0ICpzbywKIAlpbnQgZ290X2FsbF9vZl90aGVfc2VuZCA9IDA7CiAJaW50IGhvbGRf
dGNibG9jayA9IDA7CiAJaW50IG5vbl9ibG9ja2luZyA9IDA7Ci0JdWludDMyX3QgbG9jYWxfYWRk
X21vcmUsIGxvY2FsX3NvcmVzdiA9IDA7CisJc3NpemVfdCBsb2NhbF9zb3Jlc3YgPSAwOwogCXVp
bnQxNl90IHBvcnQ7CiAJdWludDE2X3Qgc2luZm9fZmxhZ3M7CiAJc2N0cF9hc3NvY190IHNpbmZv
X2Fzc29jX2lkOwpAQCAtMTM0OTYsNyArMTM0ODMsNyBAQCBzY3RwX2xvd2VyX3Nvc2VuZChzdHJ1
Y3Qgc29ja2V0ICpzbywKIAlzdGNiID0gTlVMTDsKIAlhc29jID0gTlVMTDsKIAotI2lmIGRlZmlu
ZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCXNjdHBfbG9ja19hc3NlcnQoc28pOwogI2VuZGlmCiAJdF9pbnAgPSBpbnAgPSAo
c3RydWN0IHNjdHBfaW5wY2IgKilzby0+c29fcGNiOwpAQCAtMTM1MTUsNyArMTM1MDIsNyBAQCBz
Y3RwX2xvd2VyX3Nvc2VuZChzdHJ1Y3Qgc29ja2V0ICpzbywKIAl1c2VyX21hcmtzX2VvciA9IHNj
dHBfaXNfZmVhdHVyZV9vbihpbnAsIFNDVFBfUENCX0ZMQUdTX0VYUExJQ0lUX0VPUik7CiAJYXRv
bWljX2FkZF9pbnQoJmlucC0+dG90YWxfc2VuZHMsIDEpOwogCWlmICh1aW8pIHsKLSNpZiBkZWZp
bmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKICNpZiBkZWZpbmVkKEFQUExFX0xFT1BBUkQpCiAJCWlmICh1aW8tPnVpb19yZXNp
ZCA8IDApIHsKICNlbHNlCkBAIC0xMzUyNyw1MCArMTM1MTQsMjIgQEAgc2N0cF9sb3dlcl9zb3Nl
bmQoc3RydWN0IHNvY2tldCAqc28sCiAJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgc3RjYiwg
bmV0LCBTQ1RQX0ZST01fU0NUUF9PVVRQVVQsIEVJTlZBTCk7CiAJCQlyZXR1cm4gKEVJTlZBTCk7
CiAJCX0KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZiBkZWZpbmVkKEFQUExFX0xFT1BBUkQpCi0JCXNu
ZGxlbiA9ICh1bnNpZ25lZCBpbnQpdWlvLT51aW9fcmVzaWQ7CisJCXNuZGxlbiA9IHVpby0+dWlv
X3Jlc2lkOwogI2Vsc2UKLQkJc25kbGVuID0gKHVuc2lnbmVkIGludCl1aW9fcmVzaWQodWlvKTsK
KwkJc25kbGVuID0gdWlvX3Jlc2lkKHVpbyk7CiAjZW5kaWYKICNlbHNlCi0JCXNuZGxlbiA9ICh1
bnNpZ25lZCBpbnQpdWlvLT51aW9fcmVzaWQ7CisJCXNuZGxlbiA9IHVpby0+dWlvX3Jlc2lkOwog
I2VuZGlmCiAJfSBlbHNlIHsKIAkJdG9wID0gU0NUUF9IRUFERVJfVE9fQ0hBSU4oaV9wYWspOwot
I2lmZGVmIF9fUGFuZGFfXwotCQkvKi0KLQkJICogYXBwIGxlbiBpbmRpY2F0ZXMgdGhlIGRhdGFs
ZW4sIGRnc2l6ZSBmb3IgY2FzZXMKLQkJICogb2YgU0NUUF9FT0YvQUJPUlQgd2lsbCBub3QgaGF2
ZSB0aGUgcmlnaHQgbGVuCi0JCSAqLwotCQlzbmRsZW4gPSBTQ1RQX0FQUF9EQVRBX0xFTihpX3Bh
ayk7Ci0JCS8qLQotCQkgKiBTZXQgdGhlIHBhcnRpY2xlIGxlbiBhbHNvIHRvIHplcm8gdG8gbWF0
Y2gKLQkJICogdXAgd2l0aCBhcHAgbGVuLiBXZSBvbmx5IGhhdmUgb25lIHBhcnRpY2xlCi0JCSAq
IGlmIGFwcCBsZW4gaXMgemVybyBmb3IgUGFuZGEuIFRoaXMgaXMgZW5zdXJlZAotCQkgKiBpbiB0
aGUgc29ja2V0IGxpYgotCQkgKi8KLQkJaWYgKHNuZGxlbiA9PSAwKSB7Ci0JCQlTQ1RQX0JVRl9M
RU4odG9wKSAgPSAwOwotCQl9Ci0JCS8qLQotCQkgKiBXZSBkZWxpbmsgdGhlIGNoYWluIGZyb20g
aGVhZGVyLCBidXQga2VlcAotCQkgKiB0aGUgaGVhZGVyIGFyb3VuZCBhcyB3ZSB3aWxsIG5lZWQg
aXQgaW4KLQkJICogRUFHQUlOIGNhc2UKLQkJICovCi0JCVNDVFBfREVUQUNIX0hFQURFUl9GUk9N
X0NIQUlOKGlfcGFrKTsKLSNlbHNlCiAJCXNuZGxlbiA9IFNDVFBfSEVBREVSX0xFTihpX3Bhayk7
Ci0jZW5kaWYKIAl9Ci0JU0NUUERCRyhTQ1RQX0RFQlVHX09VVFBVVDEsICJTZW5kIGNhbGxlZCBh
ZGRyOiVwIHNlbmQgbGVuZ3RoICVkXG4iLAotCQkodm9pZCAqKWFkZHIsCisJU0NUUERCRyhTQ1RQ
X0RFQlVHX09VVFBVVDEsICJTZW5kIGNhbGxlZCBhZGRyOiVwIHNlbmQgbGVuZ3RoICV6ZFxuIiwK
KwkgICAgICAgICh2b2lkICopYWRkciwKIAkgICAgICAgIHNuZGxlbik7Ci0jaWZkZWYgX19QYW5k
YV9fCi0JaWYgKGlfY29udHJvbCkgewotCQljb250cm9sID0gU0NUUF9IRUFERVJfVE9fQ0hBSU4o
aV9jb250cm9sKTsKLQl9Ci0jZW5kaWYKIAlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENC
X0ZMQUdTX1RDUFRZUEUpICYmCiAJICAgIFNDVFBfSVNfTElTVEVOSU5HKGlucCkpIHsKIAkJLyog
VGhlIGxpc3RlbmVyIGNhbiBOT1Qgc2VuZCAqLwpAQCAtMTM2NDQsNiArMTM2MDMsMTQgQEAgc2N0
cF9sb3dlcl9zb3NlbmQoc3RydWN0IHNvY2tldCAqc28sCiAJCXNpbmZvX2ZsYWdzID0gaW5wLT5k
ZWZfc2VuZC5zaW5mb19mbGFnczsKIAkJc2luZm9fYXNzb2NfaWQgPSBpbnAtPmRlZl9zZW5kLnNp
bmZvX2Fzc29jX2lkOwogCX0KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQorCWlmIChmbGFncyAmIE1TR19FT1IpIHsKKwkJc2luZm9fZmxhZ3MgfD0g
U0NUUF9FT1I7CisJfQorCWlmIChmbGFncyAmIE1TR19FT0YpIHsKKwkJc2luZm9fZmxhZ3MgfD0g
U0NUUF9FT0Y7CisJfQorI2VuZGlmCiAJaWYgKHNpbmZvX2ZsYWdzICYgU0NUUF9TRU5EQUxMKSB7
CiAJCS8qIGl0cyBhIHNlbmRhbGwgKi8KIAkJZXJyb3IgPSBzY3RwX3NlbmRhbGwoaW5wLCB1aW8s
IHRvcCwgc3Jjdik7CkBAIC0xMzcxMSw5ICsxMzY3OCwxMSBAQCBzY3RwX2xvd2VyX3Nvc2VuZChz
dHJ1Y3Qgc29ja2V0ICpzbywKIAkJU0NUUF9JTlBfV1VOTE9DSyhpbnApOwogCQkvKiBXaXRoIHRo
ZSBsb2NrIGFwcGxpZWQgbG9vayBhZ2FpbiAqLwogCQlzdGNiID0gc2N0cF9maW5kYXNzb2NpYXRp
b25fZXBfYWRkcigmdF9pbnAsIGFkZHIsICZuZXQsIE5VTEwsIE5VTEwpOworI2lmIGRlZmluZWQo
SU5FVCkgfHwgZGVmaW5lZChJTkVUNikKIAkJaWYgKChzdGNiID09IE5VTEwpICYmIChjb250cm9s
ICE9IE5VTEwpICYmIChwb3J0ID4gMCkpIHsKIAkJCXN0Y2IgPSBzY3RwX2ZpbmRhc3NvY2lhdGlv
bl9jbXNncygmdF9pbnAsIHBvcnQsIGNvbnRyb2wsICZuZXQsICZlcnJvcik7CiAJCX0KKyNlbmRp
ZgogCQlpZiAoc3RjYiA9PSBOVUxMKSB7CiAJCQlTQ1RQX0lOUF9XTE9DSyhpbnApOwogCQkJU0NU
UF9JTlBfREVDUl9SRUYoaW5wKTsKQEAgLTEzNzU5LDExICsxMzcyOCwxMiBAQCBzY3RwX2xvd2Vy
X3Nvc2VuZChzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJCXN0Y2IgPSBzY3RwX2Fsb2NfYXNzb2MoaW5w
LCBhZGRyLCAmZXJyb3IsIDAsIHZyZl9pZCwKIAkJCSAgICAgICAgICAgICAgICAgICAgICAgaW5w
LT5zY3RwX2VwLnByZV9vcGVuX3N0cmVhbV9jb3VudCwKIAkJCSAgICAgICAgICAgICAgICAgICAg
ICAgaW5wLT5zY3RwX2VwLnBvcnQsCi0jaWYgIShkZWZpbmVkKCBfX1BhbmRhX18pIHx8IGRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykpCi0JCQkgICAgICAgICAgICAgICAgICAgICAgIHApOworI2lmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQkgICAgICAgICAgICAgICAgICAgICAgIHAsCiAjZWxz
ZQotCQkJICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHByb2MgKilOVUxMKTsKKwkJCSAg
ICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBwcm9jICopTlVMTCwKICNlbmRpZgorCQkJICAg
ICAgICAgICAgICAgICAgICAgICBTQ1RQX0lOSVRJQUxJWkVfQVVUSF9QQVJBTVMpOwogCQkJaWYg
KHN0Y2IgPT0gTlVMTCkgewogCQkJCS8qIEVycm9yIGlzIHNldHVwIGZvciB1cyBpbiB0aGUgY2Fs
bCAqLwogCQkJCWdvdG8gb3V0X3VubG9ja2VkOwpAQCAtMTM3ODMsMTYgKzEzNzUzLDEzIEBAIHNj
dHBfbG93ZXJfc29zZW5kKHN0cnVjdCBzb2NrZXQgKnNvLAogCQkJLyogVHVybiBvbiBxdWV1ZSBv
bmx5IGZsYWcgdG8gcHJldmVudCBkYXRhIGZyb20gYmVpbmcgc2VudCAqLwogCQkJcXVldWVfb25s
eSA9IDE7CiAJCQlhc29jID0gJnN0Y2ItPmFzb2M7Ci0JCQlTQ1RQX1NFVF9TVEFURShhc29jLCBT
Q1RQX1NUQVRFX0NPT0tJRV9XQUlUKTsKKwkJCVNDVFBfU0VUX1NUQVRFKHN0Y2IsIFNDVFBfU1RB
VEVfQ09PS0lFX1dBSVQpOwogCQkJKHZvaWQpU0NUUF9HRVRUSU1FX1RJTUVWQUwoJmFzb2MtPnRp
bWVfZW50ZXJlZCk7CiAKLQkJCS8qIGluaXRpYWxpemUgYXV0aGVudGljYXRpb24gcGFyYW1zIGZv
ciB0aGUgYXNzb2MgKi8KLQkJCXNjdHBfaW5pdGlhbGl6ZV9hdXRoX3BhcmFtcyhpbnAsIHN0Y2Ip
OwotCiAJCQlpZiAoY29udHJvbCkgewogCQkJCWlmIChzY3RwX3Byb2Nlc3NfY21zZ3NfZm9yX2lu
aXQoc3RjYiwgY29udHJvbCwgJmVycm9yKSkgewogCQkJCQlzY3RwX2ZyZWVfYXNzb2MoaW5wLCBz
dGNiLCBTQ1RQX1BDQkZSRUVfRk9SQ0UsCi0JCQkJCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01f
U0NUUF9PVVRQVVQgKyBTQ1RQX0xPQ181KTsKKwkJCQkJICAgICAgICAgICAgICAgIFNDVFBfRlJP
TV9TQ1RQX09VVFBVVCArIFNDVFBfTE9DXzYpOwogCQkJCQlob2xkX3RjYmxvY2sgPSAwOwogCQkJ
CQlzdGNiID0gTlVMTDsKIAkJCQkJZ290byBvdXRfdW5sb2NrZWQ7CkBAIC0xMzgwOSw5ICsxMzc3
NiwxOSBAQCBzY3RwX2xvd2VyX3Nvc2VuZChzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJfQogCX0gZWxz
ZQogCQlhc29jID0gJnN0Y2ItPmFzb2M7Ci0JaWYgKHNyY3YgPT0gTlVMTCkKKwlpZiAoc3JjdiA9
PSBOVUxMKSB7CiAJCXNyY3YgPSAoc3RydWN0IHNjdHBfc25kcmN2aW5mbyAqKSZhc29jLT5kZWZf
c2VuZDsKLQlpZiAoc3Jjdi0+c2luZm9fZmxhZ3MgJiBTQ1RQX0FERFJfT1ZFUikgeworCQlzaW5m
b19mbGFncyA9IHNyY3YtPnNpbmZvX2ZsYWdzOworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCWlmIChmbGFncyAmIE1TR19FT1IpIHsKKwkJCXNp
bmZvX2ZsYWdzIHw9IFNDVFBfRU9SOworCQl9CisJCWlmIChmbGFncyAmIE1TR19FT0YpIHsKKwkJ
CXNpbmZvX2ZsYWdzIHw9IFNDVFBfRU9GOworCQl9CisjZW5kaWYKKwl9CisJaWYgKHNpbmZvX2Zs
YWdzICYgU0NUUF9BRERSX09WRVIpIHsKIAkJaWYgKGFkZHIpCiAJCQluZXQgPSBzY3RwX2ZpbmRu
ZXQoc3RjYiwgYWRkcik7CiAJCWVsc2UKQEAgLTEzODM1LDcgKzEzODEyLDcgQEAgc2N0cF9sb3dl
cl9zb3NlbmQoc3RydWN0IHNvY2tldCAqc28sCiAJZnJlZV9jbnRfYXBwbGllZCA9IDE7CiAKIAlp
ZiAoc2N0cF9pc19mZWF0dXJlX29uKGlucCwgU0NUUF9QQ0JfRkxBR1NfTk9fRlJBR01FTlQpKSB7
Ci0JCWlmIChzbmRsZW4gPiBhc29jLT5zbWFsbGVzdF9tdHUpIHsKKwkJaWYgKHNuZGxlbiA+IChz
c2l6ZV90KWFzb2MtPnNtYWxsZXN0X210dSkgewogCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAs
IHN0Y2IsIG5ldCwgU0NUUF9GUk9NX1NDVFBfT1VUUFVULCBFTVNHU0laRSk7CiAJCQllcnJvciA9
IEVNU0dTSVpFOwogCQkJZ290byBvdXRfdW5sb2NrZWQ7CkBAIC0xMzg0NywxNSArMTM4MjQsMTUg
QEAgc2N0cF9sb3dlcl9zb3NlbmQoc3RydWN0IHNvY2tldCAqc28sCiAJfQogI2VuZGlmCiAJaWYg
KFNDVFBfU09fSVNfTkJJTyhzbykKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVC
U0RfdmVyc2lvbiA+PSA1MDAwMDAKLQkgICAgIHx8IChmbGFncyAmIE1TR19OQklPKQorI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJICAgICB8fCAo
ZmxhZ3MgJiAoTVNHX05CSU8gfCBNU0dfRE9OVFdBSVQpKSAhPSAwCiAjZW5kaWYKIAkgICAgKSB7
CiAJCW5vbl9ibG9ja2luZyA9IDE7CiAJfQogCS8qIHdvdWxkIHdlIGJsb2NrPyAqLwogCWlmIChu
b25fYmxvY2tpbmcpIHsKLQkJdWludDMyX3QgYW1vdW50OworCQlzc2l6ZV90IGFtb3VudDsKIAog
CQlpZiAoaG9sZF90Y2Jsb2NrID09IDApIHsKIAkJCVNDVFBfVENCX0xPQ0soc3RjYik7CkBAIC0x
Mzg3MCwxMyArMTM4NDcsMTMgQEAgc2N0cF9sb3dlcl9zb3NlbmQoc3RydWN0IHNvY2tldCAqc28s
CiAJCWlmICgoU0NUUF9TQl9MSU1JVF9TTkQoc28pIDwgIChhbW91bnQgKyBpbnF1ZXVlX2J5dGVz
ICsgc3RjYi0+YXNvYy5zYl9zZW5kX3Jlc3YpKSB8fAogCQkgICAgKHN0Y2ItPmFzb2MuY2h1bmtz
X29uX291dF9xdWV1ZSA+PSBTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbWF4X2NodW5rc19vbl9xdWV1
ZSkpKSB7CiAJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgc3RjYiwgbmV0LCBTQ1RQX0ZST01f
U0NUUF9PVVRQVVQsIEVXT1VMREJMT0NLKTsKLQkJCWlmIChzbmRsZW4gPiBTQ1RQX1NCX0xJTUlU
X1NORChzbykpCisJCQlpZiAoc25kbGVuID4gKHNzaXplX3QpU0NUUF9TQl9MSU1JVF9TTkQoc28p
KQogCQkJCWVycm9yID0gRU1TR1NJWkU7CiAJCQllbHNlCiAJCQkJZXJyb3IgPSBFV09VTERCTE9D
SzsKIAkJCWdvdG8gb3V0X3VubG9ja2VkOwogCQl9Ci0JCXN0Y2ItPmFzb2Muc2Jfc2VuZF9yZXN2
ICs9IHNuZGxlbjsKKwkJc3RjYi0+YXNvYy5zYl9zZW5kX3Jlc3YgKz0gKHVpbnQzMl90KXNuZGxl
bjsKIAkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwogCQlob2xkX3RjYmxvY2sgPSAwOwogCX0gZWxz
ZSB7CkBAIC0xMzkxMiw4ICsxMzg4OSw4IEBAIHNjdHBfbG93ZXJfc29zZW5kKHN0cnVjdCBzb2Nr
ZXQgKnNvLAogCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgc3RjYiwgbmV0LCBTQ1RQX0ZST01f
U0NUUF9PVVRQVVQsIGVycm9yKTsKIAkJZ290byBvdXRfdW5sb2NrZWQ7CiAJfQotCWlmICgoU0NU
UF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9DT09LSUVfV0FJVCkgfHwKLQkgICAgKFND
VFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCkpIHsKKwlpZiAo
KFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQpIHx8CisJICAg
IChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9FQ0hPRUQpKSB7CiAJ
CXF1ZXVlX29ubHkgPSAxOwogCX0KIAkvKiB3ZSBhcmUgbm93IGRvbmUgd2l0aCBhbGwgY29udHJv
bCAqLwpAQCAtMTM5MjEsMTEgKzEzODk4LDExIEBAIHNjdHBfbG93ZXJfc29zZW5kKHN0cnVjdCBz
b2NrZXQgKnNvLAogCQlzY3RwX21fZnJlZW0oY29udHJvbCk7CiAJCWNvbnRyb2wgPSBOVUxMOwog
CX0KLQlpZiAoKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05fU0VO
VCkgfHwKLQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05f
UkVDRUlWRUQpIHx8Ci0JICAgIChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX1NI
VVRET1dOX0FDS19TRU5UKSB8fAorCWlmICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9T
VEFURV9TSFVURE9XTl9TRU5UKSB8fAorCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NU
UF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkgfHwKKwkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2Ip
ID09IFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQpIHx8CiAJICAgIChhc29jLT5zdGF0ZSAm
IFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORykpIHsKLQkJaWYgKHNyY3YtPnNpbmZvX2ZsYWdz
ICYgU0NUUF9BQk9SVCkgeworCQlpZiAoc2luZm9fZmxhZ3MgJiBTQ1RQX0FCT1JUKSB7CiAJCQk7
CiAJCX0gZWxzZSB7CiAJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKE5VTEwsIHN0Y2IsIE5VTEwsIFND
VFBfRlJPTV9TQ1RQX09VVFBVVCwgRUNPTk5SRVNFVCk7CkBAIC0xMzkzNCwyNSArMTM5MTEsMjMg
QEAgc2N0cF9sb3dlcl9zb3NlbmQoc3RydWN0IHNvY2tldCAqc28sCiAJCX0KIAl9CiAJLyogT2ss
IHdlIHdpbGwgYXR0ZW1wdCBhIG1zZ3NuZCA6PiAqLwotI2lmICEoZGVmaW5lZChfX1BhbmRhX18p
IHx8IGRlZmluZWQoX19XaW5kb3dzX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCisjaWYg
IShkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkKIAlpZiAocCkgewot
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDYwMzAwMAor
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pCiAJCXAtPnRkX3J1LnJ1X21zZ3NuZCsrOwotI2VsaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMDAwCi0JCXAt
PnRkX3Byb2MtPnBfc3RhdHMtPnBfcnUucnVfbXNnc25kKys7CiAjZWxzZQogCQlwLT5wX3N0YXRz
LT5wX3J1LnJ1X21zZ3NuZCsrOwogI2VuZGlmCiAJfQogI2VuZGlmCiAJLyogQXJlIHdlIGFib3J0
aW5nPyAqLwotCWlmIChzcmN2LT5zaW5mb19mbGFncyAmIFNDVFBfQUJPUlQpIHsKKwlpZiAoc2lu
Zm9fZmxhZ3MgJiBTQ1RQX0FCT1JUKSB7CiAJCXN0cnVjdCBtYnVmICptbTsKLQkJaW50IHRvdF9k
ZW1hbmQsIHRvdF9vdXQgPSAwLCBtYXhfb3V0OworCQlzc2l6ZV90IHRvdF9kZW1hbmQsIHRvdF9v
dXQgPSAwLCBtYXhfb3V0OwogCiAJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3NlbmRzX3dpdGhfYWJv
cnQpOwotCQlpZiAoKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfQ09PS0lFX1dB
SVQpIHx8Ci0JCSAgICAoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9DT09LSUVf
RUNIT0VEKSkgeworCQlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfQ09P
S0lFX1dBSVQpIHx8CisJCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9D
T09LSUVfRUNIT0VEKSkgewogCQkJLyogSXQgaGFzIHRvIGJlIHVwIGJlZm9yZSB3ZSBhYm9ydCAq
LwogCQkJLyogaG93IGJpZyBpcyB0aGUgdXNlciBpbml0aWF0ZWQgYWJvcnQ/ICovCiAJCQlTQ1RQ
X0xUUkFDRV9FUlJfUkVUKGlucCwgc3RjYiwgbmV0LCBTQ1RQX0ZST01fU0NUUF9PVVRQVVQsIEVJ
TlZBTCk7CkBAIC0xMzk4Miw3ICsxMzk1Nyw3IEBAIHNjdHBfbG93ZXJfc29zZW5kKHN0cnVjdCBz
b2NrZXQgKnNvLAogCQkJCWVycm9yID0gRU1TR1NJWkU7CiAJCQkJZ290byBvdXQ7CiAJCQl9Ci0J
CQltbSA9IHNjdHBfZ2V0X21idWZfZm9yX21zZyh0b3RfZGVtYW5kLCAwLCBNX1dBSVRPSywgMSwg
TVRfREFUQSk7CisJCQltbSA9IHNjdHBfZ2V0X21idWZfZm9yX21zZygodW5zaWduZWQgaW50KXRv
dF9kZW1hbmQsIDAsIE1fV0FJVE9LLCAxLCBNVF9EQVRBKTsKIAkJfQogCQlpZiAobW0gPT0gTlVM
TCkgewogCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChOVUxMLCBzdGNiLCBuZXQsIFNDVFBfRlJPTV9T
Q1RQX09VVFBVVCwgRU5PTUVNKTsKQEAgLTE0MDAyLDEzICsxMzk3NywxMyBAQCBzY3RwX2xvd2Vy
X3Nvc2VuZChzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJCXBoLT5wYXJhbV90eXBlID0gaHRvbnMoU0NU
UF9DQVVTRV9VU0VSX0lOSVRJQVRFRF9BQlQpOwogCQkJcGgtPnBhcmFtX2xlbmd0aCA9IGh0b25z
KCh1aW50MTZfdCkoc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKSArIHRvdF9vdXQpKTsKIAkJ
CXBoKys7Ci0JCQlTQ1RQX0JVRl9MRU4obW0pID0gdG90X291dCArIHNpemVvZihzdHJ1Y3Qgc2N0
cF9wYXJhbWhkcik7CisJCQlTQ1RQX0JVRl9MRU4obW0pID0gKGludCkodG90X291dCArIHNpemVv
ZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcikpOwogCQkJaWYgKHRvcCA9PSBOVUxMKSB7Ci0jaWYgZGVm
aW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAJCQkJU0NUUF9TT0NLRVRfVU5MT0NLKHNvLCAwKTsKICNlbmRpZgogCQkJCWVy
cm9yID0gdWlvbW92ZSgoY2FkZHJfdClwaCwgKGludCl0b3Rfb3V0LCB1aW8pOwotI2lmIGRlZmlu
ZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCQkJCVNDVFBfU09DS0VUX0xPQ0soc28sIDApOwogI2VuZGlmCiAJCQkJaWYgKGVy
cm9yKSB7CkBAIC0xNDAzMiw3ICsxNDAwNywxMyBAQCBzY3RwX2xvd2VyX3Nvc2VuZChzdHJ1Y3Qg
c29ja2V0ICpzbywKIAkJYXRvbWljX2FkZF9pbnQoJnN0Y2ItPmFzb2MucmVmY250LCAtMSk7CiAJ
CWZyZWVfY250X2FwcGxpZWQgPSAwOwogCQkvKiByZWxlYXNlIHRoaXMgbG9jaywgb3RoZXJ3aXNl
IHdlIGhhbmcgb24gb3Vyc2VsdmVzICovCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJTkVUX0VQT0NIX0VOVEVSKGV0KTsKKyNlbmRpZgogCQlz
Y3RwX2Fib3J0X2FuX2Fzc29jaWF0aW9uKHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIG1tLCBTQ1RQX1NP
X0xPQ0tFRCk7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKKwkJTkVUX0VQT0NIX0VYSVQoZXQpOworI2VuZGlmCiAJCS8qIG5vdyByZWxvY2sgdGhl
IHN0Y2Igc28gZXZlcnl0aGluZyBpcyBzYW5lICovCiAJCWhvbGRfdGNibG9jayA9IDA7CiAJCXN0
Y2IgPSBOVUxMOwpAQCAtMTQwNDksMTIgKzE0MDMwLDcgQEAgc2N0cF9sb3dlcl9zb3NlbmQoc3Ry
dWN0IHNvY2tldCAqc28sCiAJLyogQ2FsY3VsYXRlIHRoZSBtYXhpbXVtIHdlIGNhbiBzZW5kICov
CiAJaW5xdWV1ZV9ieXRlcyA9IHN0Y2ItPmFzb2MudG90YWxfb3V0cHV0X3F1ZXVlX3NpemUgLSAo
c3RjYi0+YXNvYy5jaHVua3Nfb25fb3V0X3F1ZXVlICogU0NUUF9EQVRBX0NIVU5LX09WRVJIRUFE
KHN0Y2IpKTsKIAlpZiAoU0NUUF9TQl9MSU1JVF9TTkQoc28pID4gaW5xdWV1ZV9ieXRlcykgewot
CQlpZiAobm9uX2Jsb2NraW5nKSB7Ci0JCQkvKiB3ZSBhbHJlYWR5IGNoZWNrZWQgZm9yIG5vbi1i
bG9ja2luZyBhYm92ZS4gKi8KLQkJCW1heF9sZW4gPSBzbmRsZW47Ci0JCX0gZWxzZSB7Ci0JCQlt
YXhfbGVuID0gU0NUUF9TQl9MSU1JVF9TTkQoc28pIC0gaW5xdWV1ZV9ieXRlczsKLQkJfQorCQlt
YXhfbGVuID0gU0NUUF9TQl9MSU1JVF9TTkQoc28pIC0gaW5xdWV1ZV9ieXRlczsKIAl9IGVsc2Ug
ewogCQltYXhfbGVuID0gMDsKIAl9CkBAIC0xNDA3MSw3ICsxNDA0Nyw3IEBAIHNjdHBfbG93ZXJf
c29zZW5kKHN0cnVjdCBzb2NrZXQgKnNvLAogCiAJLyogVW5sZXNzIEVfRU9SIG1vZGUgaXMgb24s
IHdlIG11c3QgbWFrZSBhIHNlbmQgRklUIGluIG9uZSBjYWxsLiAqLwogCWlmICgodXNlcl9tYXJr
c19lb3IgPT0gMCkgJiYKLQkgICAgKHNuZGxlbiA+IFNDVFBfU0JfTElNSVRfU05EKHN0Y2ItPnNj
dHBfc29ja2V0KSkpIHsKKwkgICAgKHNuZGxlbiA+IChzc2l6ZV90KVNDVFBfU0JfTElNSVRfU05E
KHN0Y2ItPnNjdHBfc29ja2V0KSkpIHsKIAkJLyogSXQgd2lsbCBORVZFUiBmaXQgKi8KIAkJU0NU
UF9MVFJBQ0VfRVJSX1JFVChOVUxMLCBzdGNiLCBuZXQsIFNDVFBfRlJPTV9TQ1RQX09VVFBVVCwg
RU1TR1NJWkUpOwogCQllcnJvciA9IEVNU0dTSVpFOwpAQCAtMTQwODgsNyArMTQwNjQsNyBAQCBz
Y3RwX2xvd2VyX3Nvc2VuZChzdHJ1Y3Qgc29ja2V0ICpzbywKIAl9CiAKIAlpZiAodXNlcl9tYXJr
c19lb3IpIHsKLQkJbG9jYWxfYWRkX21vcmUgPSBtaW4oU0NUUF9TQl9MSU1JVF9TTkQoc28pLCBT
Q1RQX0JBU0VfU1lTQ1RMKHNjdHBfYWRkX21vcmVfdGhyZXNob2xkKSk7CisJCWxvY2FsX2FkZF9t
b3JlID0gKHNzaXplX3QpbWluKFNDVFBfU0JfTElNSVRfU05EKHNvKSwgU0NUUF9CQVNFX1NZU0NU
TChzY3RwX2FkZF9tb3JlX3RocmVzaG9sZCkpOwogCX0gZWxzZSB7CiAJCS8qLQogCQkgKiBGb3Ig
bm9uLWVlb3IgdGhlIHdob2xlIG1lc3NhZ2UgbXVzdCBmaXQgaW4KQEAgLTE0MTAxLDE1ICsxNDA3
NywxNSBAQCBzY3RwX2xvd2VyX3Nvc2VuZChzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJZ290byBza2lw
X3ByZWJsb2NrOwogCX0KIAlpZiAoKChtYXhfbGVuIDw9IGxvY2FsX2FkZF9tb3JlKSAmJgotCSAg
ICAgKFNDVFBfU0JfTElNSVRfU05EKHNvKSA+PSBsb2NhbF9hZGRfbW9yZSkpIHx8CisJICAgICAo
KHNzaXplX3QpU0NUUF9TQl9MSU1JVF9TTkQoc28pID49IGxvY2FsX2FkZF9tb3JlKSkgfHwKIAkg
ICAgKG1heF9sZW4gPT0gMCkgfHwKIAkgICAgKChzdGNiLT5hc29jLmNodW5rc19vbl9vdXRfcXVl
dWUrc3RjYi0+YXNvYy5zdHJlYW1fcXVldWVfY250KSA+PSBTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBf
bWF4X2NodW5rc19vbl9xdWV1ZSkpKSB7CiAJCS8qIE5vIHJvb20gcmlnaHQgbm93ICEgKi8KIAkJ
U09DS0JVRl9MT0NLKCZzby0+c29fc25kKTsKIAkJaW5xdWV1ZV9ieXRlcyA9IHN0Y2ItPmFzb2Mu
dG90YWxfb3V0cHV0X3F1ZXVlX3NpemUgLSAoc3RjYi0+YXNvYy5jaHVua3Nfb25fb3V0X3F1ZXVl
ICogU0NUUF9EQVRBX0NIVU5LX09WRVJIRUFEKHN0Y2IpKTsKIAkJd2hpbGUgKChTQ1RQX1NCX0xJ
TUlUX1NORChzbykgPCAoaW5xdWV1ZV9ieXRlcyArIGxvY2FsX2FkZF9tb3JlKSkgfHwKLQkJICAg
ICAgICgoc3RjYi0+YXNvYy5zdHJlYW1fcXVldWVfY250K3N0Y2ItPmFzb2MuY2h1bmtzX29uX291
dF9xdWV1ZSkgPj0gU0NUUF9CQVNFX1NZU0NUTChzY3RwX21heF9jaHVua3Nfb25fcXVldWUpKSkg
ewotCQkJU0NUUERCRyhTQ1RQX0RFQlVHX09VVFBVVDEsInByZV9ibG9jayBsaW1pdDoldSA8KGlu
cTolZCArICVkKSB8fCAoJWQrJWQgPiAlZClcbiIsCisJCSAgICAgICAoKHN0Y2ItPmFzb2Muc3Ry
ZWFtX3F1ZXVlX2NudCArIHN0Y2ItPmFzb2MuY2h1bmtzX29uX291dF9xdWV1ZSkgPj0gU0NUUF9C
QVNFX1NZU0NUTChzY3RwX21heF9jaHVua3Nfb25fcXVldWUpKSkgeworCQkJU0NUUERCRyhTQ1RQ
X0RFQlVHX09VVFBVVDEsInByZV9ibG9jayBsaW1pdDoldSA8KGlucTolZCArICV6ZCkgfHwgKCVk
KyVkID4gJWQpXG4iLAogCQkJICAgICAgICAodW5zaWduZWQgaW50KVNDVFBfU0JfTElNSVRfU05E
KHNvKSwKIAkJCSAgICAgICAgaW5xdWV1ZV9ieXRlcywKIAkJCSAgICAgICAgbG9jYWxfYWRkX21v
cmUsCkBAIC0xNDEyMCw3ICsxNDA5Niw3IEBAIHNjdHBfbG93ZXJfc29zZW5kKHN0cnVjdCBzb2Nr
ZXQgKnNvLAogCQkJCXNjdHBfbG9nX2Jsb2NrKFNDVFBfQkxPQ0tfTE9HX0lOVE9fQkxLQSwgYXNv
Yywgc25kbGVuKTsKIAkJCX0KIAkJCWJlLmVycm9yID0gMDsKLSNpZiAhZGVmaW5lZChfX1BhbmRh
X18pICYmICFkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICEoZGVmaW5lZChfV0lOMzIpICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pKQogCQkJc3RjYi0+YmxvY2tfZW50cnkgPSAmYmU7CiAjZW5k
aWYKIAkJCWVycm9yID0gc2J3YWl0KCZzby0+c29fc25kKTsKQEAgLTE0MTU4LDcgKzE0MTM0LDcg
QEAgc2tpcF9wcmVibG9jazoKIAlpZiAoc3RjYi0+YXNvYy5zdGF0ZSAmIFNDVFBfU1RBVEVfQUJP
VVRfVE9fQkVfRlJFRUQpIHsKIAkJZ290byBvdXRfdW5sb2NrZWQ7CiAJfQotI2lmIGRlZmluZWQo
X19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogCWVycm9yID0gc2Jsb2NrKCZzby0+c29fc25kLCBTQkxPQ0tXQUlUKGZsYWdzKSk7CiAj
ZW5kaWYKIAkvKiBzbmRsZW4gY292ZXJzIGZvciBtYnVmIGNhc2UKQEAgLTE0MTY2LDcgKzE0MTQy
LDcgQEAgc2tpcF9wcmVibG9jazoKIAkgKiBOT1RFOiB1aW8gd2lsbCBiZSBudWxsIHdoZW4gdG9w
L21idWYgaXMgcGFzc2VkCiAJICovCiAJaWYgKHNuZGxlbiA9PSAwKSB7Ci0JCWlmIChzcmN2LT5z
aW5mb19mbGFncyAmIFNDVFBfRU9GKSB7CisJCWlmIChzaW5mb19mbGFncyAmIFNDVFBfRU9GKSB7
CiAJCQlnb3RfYWxsX29mX3RoZV9zZW5kID0gMTsKIAkJCWdvdG8gZGF0YWxlc3NfZW9mOwogCQl9
IGVsc2UgewpAQCAtMTQxODgsMTEgKzE0MTY0LDEwIEBAIHNraXBfcHJlYmxvY2s6CiAJCQllcnJv
ciA9IEVJTlZBTDsKIAkJCWdvdG8gb3V0OwogCQl9Ci0JCVNDVFBfVENCX1NFTkRfVU5MT0NLKHN0
Y2IpOwotCiAJCXN0cm0gPSAmc3RjYi0+YXNvYy5zdHJtb3V0W3NyY3YtPnNpbmZvX3N0cmVhbV07
CiAJCWlmIChzdHJtLT5sYXN0X21zZ19pbmNvbXBsZXRlID09IDApIHsKIAkJZG9fYV9jb3B5X2lu
OgorCQkJU0NUUF9UQ0JfU0VORF9VTkxPQ0soc3RjYik7CiAJCQlzcCA9IHNjdHBfY29weV9pdF9p
bihzdGNiLCBhc29jLCBzcmN2LCB1aW8sIG5ldCwgbWF4X2xlbiwgdXNlcl9tYXJrc19lb3IsICZl
cnJvcik7CiAJCQlpZiAoZXJyb3IpIHsKIAkJCQlnb3RvIG91dDsKQEAgLTE0MjE0LDE2ICsxNDE4
OSwxNCBAQCBza2lwX3ByZWJsb2NrOgogCQkJfQogCQkJc2N0cF9zbmRfc2JfYWxsb2Moc3RjYiwg
c3AtPmxlbmd0aCk7CiAJCQlhdG9taWNfYWRkX2ludCgmYXNvYy0+c3RyZWFtX3F1ZXVlX2NudCwg
MSk7Ci0JCQlpZiAoc3Jjdi0+c2luZm9fZmxhZ3MgJiBTQ1RQX1VOT1JERVJFRCkgeworCQkJaWYg
KHNpbmZvX2ZsYWdzICYgU0NUUF9VTk9SREVSRUQpIHsKIAkJCQlTQ1RQX1NUQVRfSU5DUihzY3Rw
c19zZW5kc193aXRoX3Vub3JkKTsKIAkJCX0KKwkJCXNwLT5wcm9jZXNzaW5nID0gMTsKIAkJCVRB
SUxRX0lOU0VSVF9UQUlMKCZzdHJtLT5vdXRxdWV1ZSwgc3AsIG5leHQpOwogCQkJc3RjYi0+YXNv
Yy5zc19mdW5jdGlvbnMuc2N0cF9zc19hZGRfdG9fc3RyZWFtKHN0Y2IsIGFzb2MsIHN0cm0sIHNw
LCAxKTsKLQkJCVNDVFBfVENCX1NFTkRfVU5MT0NLKHN0Y2IpOwogCQl9IGVsc2UgewotCQkJU0NU
UF9UQ0JfU0VORF9MT0NLKHN0Y2IpOwogCQkJc3AgPSBUQUlMUV9MQVNUKCZzdHJtLT5vdXRxdWV1
ZSwgc2N0cF9zdHJlYW1oZWFkKTsKLQkJCVNDVFBfVENCX1NFTkRfVU5MT0NLKHN0Y2IpOwogCQkJ
aWYgKHNwID09IE5VTEwpIHsKIAkJCQkvKiA/Pz8/IEh1aCA/Pz8gbGFzdCBtc2cgaXMgZ29uZSAq
LwogI2lmZGVmIElOVkFSSUFOVFMKQEAgLTE0MjM1LDggKzE0MjA4LDE3IEBAIHNraXBfcHJlYmxv
Y2s6CiAJCQkJZ290byBkb19hX2NvcHlfaW47CiAKIAkJCX0KKwkJCWlmIChzcC0+cHJvY2Vzc2lu
ZykgeworCQkJCVNDVFBfVENCX1NFTkRfVU5MT0NLKHN0Y2IpOworCQkJCVNDVFBfTFRSQUNFX0VS
Ul9SRVQoaW5wLCBzdGNiLCBuZXQsIFNDVFBfRlJPTV9TQ1RQX09VVFBVVCwgRUlOVkFMKTsKKwkJ
CQllcnJvciA9IEVJTlZBTDsKKwkJCQlnb3RvIG91dDsKKwkJCX0gZWxzZSB7CisJCQkJc3AtPnBy
b2Nlc3NpbmcgPSAxOworCQkJfQogCQl9Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pCisJCVNDVFBf
VENCX1NFTkRfVU5MT0NLKHN0Y2IpOworI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogI2lmIGRlZmluZWQoQVBQTEVfTEVPUEFSRCkKIAkJd2hpbGUgKHVp
by0+dWlvX3Jlc2lkID4gMCkgewogI2Vsc2UKQEAgLTE0MjU0LDE2ICsxNDIzNiwxNiBAQCBza2lw
X3ByZWJsb2NrOgogCQkJZWxzZQogCQkJCW1heF9sZW4gPSAwOwogCi0JCQlpZiAoKG1heF9sZW4g
PiBTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfYWRkX21vcmVfdGhyZXNob2xkKSkgfHwKKwkJCWlmICgo
bWF4X2xlbiA+IChzc2l6ZV90KVNDVFBfQkFTRV9TWVNDVEwoc2N0cF9hZGRfbW9yZV90aHJlc2hv
bGQpKSB8fAogCQkJICAgIChtYXhfbGVuICYmIChTQ1RQX1NCX0xJTUlUX1NORChzbykgPCBTQ1RQ
X0JBU0VfU1lTQ1RMKHNjdHBfYWRkX21vcmVfdGhyZXNob2xkKSkpIHx8Ci0jaWYgZGVmaW5lZChf
X0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAjaWYgZGVmaW5lZChBUFBMRV9MRU9QQVJEKQotCQkJICAgICh1aW8tPnVpb19yZXNpZCAm
JiAodWlvLT51aW9fcmVzaWQgPD0gKGludCltYXhfbGVuKSkpIHsKKwkJCSAgICAodWlvLT51aW9f
cmVzaWQgJiYgKHVpby0+dWlvX3Jlc2lkIDw9IG1heF9sZW4pKSkgewogI2Vsc2UKLQkJCSAgICAo
dWlvX3Jlc2lkKHVpbykgJiYgKHVpb19yZXNpZCh1aW8pIDw9IChpbnQpbWF4X2xlbikpKSB7CisJ
CQkgICAgKHVpb19yZXNpZCh1aW8pICYmICh1aW9fcmVzaWQodWlvKSA8PSBtYXhfbGVuKSkpIHsK
ICNlbmRpZgogI2Vsc2UKLQkJCSAgICAodWlvLT51aW9fcmVzaWQgJiYgKHVpby0+dWlvX3Jlc2lk
IDw9IChpbnQpbWF4X2xlbikpKSB7CisJCQkgICAgKHVpby0+dWlvX3Jlc2lkICYmICh1aW8tPnVp
b19yZXNpZCA8PSBtYXhfbGVuKSkpIHsKICNlbmRpZgogCQkJCXNuZG91dCA9IDA7CiAJCQkJbmV3
X3RhaWwgPSBOVUxMOwpAQCAtMTQyNzEsMzQgKzE0MjUzLDQzIEBAIHNraXBfcHJlYmxvY2s6CiAJ
CQkJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKIAkJCQkJaG9sZF90Y2Jsb2NrID0gMDsKIAkJCQl9
Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJU0NUUF9TT0NLRVRfVU5MT0NLKHNvLCAwKTsKICNlbmRp
ZgotI2lmIChkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDYwMjAw
MCkgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQotCQkJCSAgICBtbSA9IHNjdHBfY29weV9yZXN1
bWUodWlvLCBtYXhfbGVuLCB1c2VyX21hcmtzX2VvciwgJmVycm9yLCAmc25kb3V0LCAmbmV3X3Rh
aWwpOworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
KwkJCQltbSA9IHNjdHBfY29weV9yZXN1bWUodWlvLCAoaW50KW1heF9sZW4sIHVzZXJfbWFya3Nf
ZW9yLCAmZXJyb3IsICZzbmRvdXQsICZuZXdfdGFpbCk7CiAjZWxzZQotCQkJCSAgICBtbSA9IHNj
dHBfY29weV9yZXN1bWUodWlvLCBtYXhfbGVuLCAmZXJyb3IsICZzbmRvdXQsICZuZXdfdGFpbCk7
CisJCQkJbW0gPSBzY3RwX2NvcHlfcmVzdW1lKHVpbywgKGludCltYXhfbGVuLCAmZXJyb3IsICZz
bmRvdXQsICZuZXdfdGFpbCk7CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBk
ZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQlTQ1RQX1NP
Q0tFVF9MT0NLKHNvLCAwKTsKICNlbmRpZgogCQkJCWlmICgobW0gPT0gTlVMTCkgfHwgZXJyb3Ip
IHsKIAkJCQkJaWYgKG1tKSB7CiAJCQkJCQlzY3RwX21fZnJlZW0obW0pOwogCQkJCQl9CisJCQkJ
CVNDVFBfVENCX1NFTkRfTE9DSyhzdGNiKTsKKwkJCQkJaWYgKHNwICE9IE5VTEwpIHsKKwkJCQkJ
CXNwLT5wcm9jZXNzaW5nID0gMDsKKwkJCQkJfQorCQkJCQlTQ1RQX1RDQl9TRU5EX1VOTE9DSyhz
dGNiKTsKIAkJCQkJZ290byBvdXQ7CiAJCQkJfQogCQkJCS8qIFVwZGF0ZSB0aGUgbWJ1ZiBhbmQg
Y291bnQgKi8KIAkJCQlTQ1RQX1RDQl9TRU5EX0xPQ0soc3RjYik7Ci0JCQkJaWYgKHN0Y2ItPmFz
b2Muc3RhdGUgJiBTQ1RQX1NUQVRFX0FCT1VUX1RPX0JFX0ZSRUVEKSB7CisJCQkJaWYgKChzdGNi
LT5hc29jLnN0YXRlICYgU0NUUF9TVEFURV9BQk9VVF9UT19CRV9GUkVFRCkgfHwKKwkJCQkgICAg
KHN0Y2ItPmFzb2Muc3RhdGUgJiBTQ1RQX1NUQVRFX1dBU19BQk9SVEVEKSkgewogCQkJCQkvKiB3
ZSBuZWVkIHRvIGdldCBvdXQuCiAJCQkJCSAqIFBlZXIgcHJvYmFibHkgYWJvcnRlZC4KIAkJCQkJ
ICovCiAJCQkJCXNjdHBfbV9mcmVlbShtbSk7Ci0JCQkJCWlmIChzdGNiLT5hc29jLnN0YXRlICYg
U0NUUF9QQ0JfRkxBR1NfV0FTX0FCT1JURUQpIHsKKwkJCQkJaWYgKHN0Y2ItPmFzb2Muc3RhdGUg
JiBTQ1RQX1NUQVRFX1dBU19BQk9SVEVEKSB7CiAJCQkJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKE5V
TEwsIHN0Y2IsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX09VVFBVVCwgRUNPTk5SRVNFVCk7CiAJCQkJ
CQllcnJvciA9IEVDT05OUkVTRVQ7CiAJCQkJCX0KKwkJCQkJaWYgKHNwICE9IE5VTEwpIHsKKwkJ
CQkJCXNwLT5wcm9jZXNzaW5nID0gMDsKKwkJCQkJfQogCQkJCQlTQ1RQX1RDQl9TRU5EX1VOTE9D
SyhzdGNiKTsKIAkJCQkJZ290byBvdXQ7CiAJCQkJfQpAQCAtMTQzMTQsMTIgKzE0MzA1LDEyIEBA
IHNraXBfcHJlYmxvY2s6CiAJCQkJc2N0cF9zbmRfc2JfYWxsb2Moc3RjYiwgc25kb3V0KTsKIAkJ
CQlhdG9taWNfYWRkX2ludCgmc3AtPmxlbmd0aCwgc25kb3V0KTsKIAkJCQlsZW4gKz0gc25kb3V0
OwotCQkJCWlmIChzcmN2LT5zaW5mb19mbGFncyAmIFNDVFBfU0FDS19JTU1FRElBVEVMWSkgewor
CQkJCWlmIChzaW5mb19mbGFncyAmIFNDVFBfU0FDS19JTU1FRElBVEVMWSkgewogCQkJCQlzcC0+
c2luZm9fZmxhZ3MgfD0gU0NUUF9TQUNLX0lNTUVESUFURUxZOwogCQkJCX0KIAogCQkJCS8qIERp
ZCB3ZSByZWFjaCBFT1I/ICovCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChf
X0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaWYgZGVmaW5lZChBUFBMRV9M
RU9QQVJEKQogCQkJCWlmICgodWlvLT51aW9fcmVzaWQgPT0gMCkgJiYKICNlbHNlCkBAIC0xNDMy
OSwxNSArMTQzMjAsMTUgQEAgc2tpcF9wcmVibG9jazoKIAkJCQlpZiAoKHVpby0+dWlvX3Jlc2lk
ID09IDApICYmCiAjZW5kaWYKIAkJCQkgICAgKCh1c2VyX21hcmtzX2VvciA9PSAwKSB8fAotCQkJ
CSAgICAgKHNyY3YtPnNpbmZvX2ZsYWdzICYgU0NUUF9FT0YpIHx8Ci0JCQkJICAgICAodXNlcl9t
YXJrc19lb3IgJiYgKHNyY3YtPnNpbmZvX2ZsYWdzICYgU0NUUF9FT1IpKSkpIHsKKwkJCQkgICAg
IChzaW5mb19mbGFncyAmIFNDVFBfRU9GKSB8fAorCQkJCSAgICAgKHVzZXJfbWFya3NfZW9yICYm
IChzaW5mb19mbGFncyAmIFNDVFBfRU9SKSkpKSB7CiAJCQkJCXNwLT5tc2dfaXNfY29tcGxldGUg
PSAxOwogCQkJCX0gZWxzZSB7CiAJCQkJCXNwLT5tc2dfaXNfY29tcGxldGUgPSAwOwogCQkJCX0K
IAkJCQlTQ1RQX1RDQl9TRU5EX1VOTE9DSyhzdGNiKTsKIAkJCX0KLSNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
ICNpZiBkZWZpbmVkKEFQUExFX0xFT1BBUkQpCiAJCQlpZiAodWlvLT51aW9fcmVzaWQgPT0gMCkg
ewogI2Vsc2UKQEAgLTE0MzU2LDcgKzE0MzQ3LDcgQEAgc2tpcF9wcmVibG9jazoKIAkJCQkJU0NU
UF9UQ0JfTE9DSyhzdGNiKTsKIAkJCQkJaG9sZF90Y2Jsb2NrID0gMTsKIAkJCQl9Ci0JCQkJc2N0
cF9wcnVuZV9wcnNjdHAoc3RjYiwgYXNvYywgc3Jjdiwgc25kbGVuKTsKKwkJCQlzY3RwX3BydW5l
X3Byc2N0cChzdGNiLCBhc29jLCBzcmN2LCAoaW50KXNuZGxlbik7CiAJCQkJaW5xdWV1ZV9ieXRl
cyA9IHN0Y2ItPmFzb2MudG90YWxfb3V0cHV0X3F1ZXVlX3NpemUgLSAoc3RjYi0+YXNvYy5jaHVu
a3Nfb25fb3V0X3F1ZXVlICogU0NUUF9EQVRBX0NIVU5LX09WRVJIRUFEKHN0Y2IpKTsKIAkJCQlp
ZiAoU0NUUF9TQl9MSU1JVF9TTkQoc28pID4gaW5xdWV1ZV9ieXRlcykKIAkJCQkJbWF4X2xlbiA9
IFNDVFBfU0JfTElNSVRfU05EKHNvKSAtIGlucXVldWVfYnl0ZXM7CkBAIC0xNDM3MSw2ICsxNDM2
MiwxMSBAQCBza2lwX3ByZWJsb2NrOgogCQkJLyogd2FpdCBmb3Igc3BhY2Ugbm93ICovCiAJCQlp
ZiAobm9uX2Jsb2NraW5nKSB7CiAJCQkJLyogTm9uLWJsb2NraW5nIGlvIGluIHBsYWNlIG91dCAq
LworCQkJCVNDVFBfVENCX1NFTkRfTE9DSyhzdGNiKTsKKwkJCQlpZiAoc3AgIT0gTlVMTCkgewor
CQkJCQlzcC0+cHJvY2Vzc2luZyA9IDA7CisJCQkJfQorCQkJCVNDVFBfVENCX1NFTkRfVU5MT0NL
KHN0Y2IpOwogCQkJCWdvdG8gc2tpcF9vdXRfZW9mOwogCQkJfQogCQkJLyogV2hhdCBhYm91dCB0
aGUgSU5JVCwgc2VuZCBpdCBtYXliZSAqLwpAQCAtMTQzNzksMTIgKzE0Mzc1LDE4IEBAIHNraXBf
cHJlYmxvY2s6CiAJCQkJCVNDVFBfVENCX0xPQ0soc3RjYik7CiAJCQkJCWhvbGRfdGNibG9jayA9
IDE7CiAJCQkJfQotCQkJCWlmIChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9T
VEFURV9PUEVOKSB7CisJCQkJaWYgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVf
T1BFTikgewogCQkJCQkvKiBhIGNvbGxpc2lvbiB0b29rIHVzIGZvcndhcmQ/ICovCiAJCQkJCXF1
ZXVlX29ubHkgPSAwOwogCQkJCX0gZWxzZSB7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJCQkJTkVUX0VQT0NIX0VOVEVSKGV0KTsKKyNlbmRp
ZgogCQkJCQlzY3RwX3NlbmRfaW5pdGlhdGUoaW5wLCBzdGNiLCBTQ1RQX1NPX0xPQ0tFRCk7Ci0J
CQkJCVNDVFBfU0VUX1NUQVRFKGFzb2MsIFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQpOworI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQkJCU5FVF9F
UE9DSF9FWElUKGV0KTsKKyNlbmRpZgorCQkJCQlTQ1RQX1NFVF9TVEFURShzdGNiLCBTQ1RQX1NU
QVRFX0NPT0tJRV9XQUlUKTsKIAkJCQkJcXVldWVfb25seSA9IDE7CiAJCQkJfQogCQkJfQpAQCAt
MTQ0NDEsNiArMTQ0NDMsOSBAQCBza2lwX3ByZWJsb2NrOgogCQkJCSAqIHRoZSBpbnB1dCB2aWEg
dGhlIG5ldCBpcyBoYXBwZW5pbmcKIAkJCQkgKiBhbmQgSSBkb24ndCBuZWVkIHRvIHN0YXJ0IG91
dHB1dCA6LUQKIAkJCQkgKi8KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQorCQkJCU5FVF9FUE9DSF9FTlRFUihldCk7CisjZW5kaWYKIAkJCQlpZiAo
aG9sZF90Y2Jsb2NrID09IDApIHsKIAkJCQkJaWYgKFNDVFBfVENCX1RSWUxPQ0soc3RjYikpIHsK
IAkJCQkJCWhvbGRfdGNibG9jayA9IDE7CkBAIC0xNDQ1MywxMCArMTQ0NTgsMTMgQEAgc2tpcF9w
cmVibG9jazoKIAkJCQkJCQkgIHN0Y2IsCiAJCQkJCQkJICBTQ1RQX09VVFBVVF9GUk9NX1VTUl9T
RU5ELCBTQ1RQX1NPX0xPQ0tFRCk7CiAJCQkJfQotCQkJCWlmIChob2xkX3RjYmxvY2sgPT0gMSkg
ewotCQkJCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7Ci0JCQkJCWhvbGRfdGNibG9jayA9IDA7Ci0J
CQkJfQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CisJCQkJTkVUX0VQT0NIX0VYSVQoZXQpOworI2VuZGlmCisJCQl9CisJCQlpZiAoaG9sZF90Y2Js
b2NrID09IDEpIHsKKwkJCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CisJCQkJaG9sZF90Y2Jsb2Nr
ID0gMDsKIAkJCX0KIAkJCVNPQ0tCVUZfTE9DSygmc28tPnNvX3NuZCk7CiAJCQkvKi0KQEAgLTE0
NDc3LDcgKzE0NDg1LDcgQEAgc2tpcF9wcmVibG9jazoKIAkJCWlmIChTQ1RQX1NCX0xJTUlUX1NO
RChzbykgPD0gKGlucXVldWVfYnl0ZXMgKwogCQkJCQkJICAgICAgbWluKFNDVFBfQkFTRV9TWVND
VEwoc2N0cF9hZGRfbW9yZV90aHJlc2hvbGQpLCBTQ1RQX1NCX0xJTUlUX1NORChzbykpKSkgewog
CQkJCWlmIChTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbG9nZ2luZ19sZXZlbCkgJiBTQ1RQX0JMS19M
T0dHSU5HX0VOQUJMRSkgewotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19B
UFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmIGRlZmluZWQoQVBQTEVfTEVP
UEFSRCkKIAkJCQkJc2N0cF9sb2dfYmxvY2soU0NUUF9CTE9DS19MT0dfSU5UT19CTEssCiAJCQkJ
CQkgICAgICAgYXNvYywgdWlvLT51aW9fcmVzaWQpOwpAQCAtMTQ0ODcsMTQgKzE0NDk1LDE0IEBA
IHNraXBfcHJlYmxvY2s6CiAjZW5kaWYKICNlbHNlCiAJCQkJCXNjdHBfbG9nX2Jsb2NrKFNDVFBf
QkxPQ0tfTE9HX0lOVE9fQkxLLAotCQkJCQkJICAgICAgIGFzb2MsIChzaXplX3QpdWlvLT51aW9f
cmVzaWQpOworCQkJCQkJICAgICAgIGFzb2MsIHVpby0+dWlvX3Jlc2lkKTsKICNlbmRpZgogCQkJ
CX0KIAkJCQliZS5lcnJvciA9IDA7Ci0jaWYgIWRlZmluZWQoX19QYW5kYV9fKSAmJiAhZGVmaW5l
ZChfX1dpbmRvd3NfXykKKyNpZiAhKGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKSkKIAkJCQlzdGNiLT5ibG9ja19lbnRyeSA9ICZiZTsKICNlbmRpZgotI2lmIGRlZmlu
ZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCQkJCXNidW5sb2NrKCZzby0+c29fc25kLCAxKTsKICNlbmRpZgogCQkJCWVycm9y
ID0gc2J3YWl0KCZzby0+c29fc25kKTsKQEAgLTE0NTA5LDEwICsxNDUxNywxNSBAQCBza2lwX3By
ZWJsb2NrOgogCQkJCQkJfQogCQkJCQl9CiAJCQkJCVNPQ0tCVUZfVU5MT0NLKCZzby0+c29fc25k
KTsKKwkJCQkJU0NUUF9UQ0JfU0VORF9MT0NLKHN0Y2IpOworCQkJCQlpZiAoc3AgIT0gTlVMTCkg
eworCQkJCQkJc3AtPnByb2Nlc3NpbmcgPSAwOworCQkJCQl9CisJCQkJCVNDVFBfVENCX1NFTkRf
VU5MT0NLKHN0Y2IpOwogCQkJCQlnb3RvIG91dF91bmxvY2tlZDsKIAkJCQl9CiAKLSNpZiBkZWZp
bmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKIAkJCQllcnJvciA9IHNibG9jaygmc28tPnNvX3NuZCwgU0JMT0NLV0FJVChmbGFn
cykpOwogI2VuZGlmCiAJCQkJaWYgKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9sb2dnaW5nX2xldmVs
KSAmIFNDVFBfQkxLX0xPR0dJTkdfRU5BQkxFKSB7CkBAIC0xNDUyMSwxMiArMTQ1MzQsMTkgQEAg
c2tpcF9wcmVibG9jazoKIAkJCQl9CiAJCQl9CiAJCQlTT0NLQlVGX1VOTE9DSygmc28tPnNvX3Nu
ZCk7CisJCQlTQ1RQX1RDQl9TRU5EX0xPQ0soc3RjYik7CiAJCQlpZiAoc3RjYi0+YXNvYy5zdGF0
ZSAmIFNDVFBfU1RBVEVfQUJPVVRfVE9fQkVfRlJFRUQpIHsKKwkJCQlpZiAoc3AgIT0gTlVMTCkg
eworCQkJCQlzcC0+cHJvY2Vzc2luZyA9IDA7CisJCQkJfQorCQkJCVNDVFBfVENCX1NFTkRfVU5M
T0NLKHN0Y2IpOwogCQkJCWdvdG8gb3V0X3VubG9ja2VkOwogCQkJfQorCQkJU0NUUF9UQ0JfU0VO
RF9VTkxPQ0soc3RjYik7CiAJCX0KIAkJU0NUUF9UQ0JfU0VORF9MT0NLKHN0Y2IpOwotCQlpZiAo
c3RjYi0+YXNvYy5zdGF0ZSAmIFNDVFBfU1RBVEVfQUJPVVRfVE9fQkVfRlJFRUQpIHsKKwkJaWYg
KChzdGNiLT5hc29jLnN0YXRlICYgU0NUUF9TVEFURV9BQk9VVF9UT19CRV9GUkVFRCkgfHwKKwkJ
ICAgIChzdGNiLT5hc29jLnN0YXRlICYgU0NUUF9TVEFURV9XQVNfQUJPUlRFRCkpIHsKIAkJCVND
VFBfVENCX1NFTkRfVU5MT0NLKHN0Y2IpOwogCQkJZ290byBvdXRfdW5sb2NrZWQ7CiAJCX0KQEAg
LTE0NTQyLDEzICsxNDU2MiwxNCBAQCBza2lwX3ByZWJsb2NrOgogCQkJCXN0cm0tPmxhc3RfbXNn
X2luY29tcGxldGUgPSAwOwogCQkJCWFzb2MtPnN0cmVhbV9sb2NrZWQgPSAwOwogCQkJfQorCQkJ
c3AtPnByb2Nlc3NpbmcgPSAwOwogCQl9IGVsc2UgewogCQkJU0NUUF9QUklOVEYoIkh1aCBubyBz
cCBUU05IP1xuIik7CiAJCQlzdHJtLT5sYXN0X21zZ19pbmNvbXBsZXRlID0gMDsKIAkJCWFzb2Mt
PnN0cmVhbV9sb2NrZWQgPSAwOwogCQl9CiAJCVNDVFBfVENCX1NFTkRfVU5MT0NLKHN0Y2IpOwot
I2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogI2lmIGRlZmluZWQoQVBQTEVfTEVPUEFSRCkKIAkJaWYgKHVpby0+
dWlvX3Jlc2lkID09IDApIHsKICNlbHNlCkBAIC0xNDU2MywxMyArMTQ1ODQsNyBAQCBza2lwX3By
ZWJsb2NrOgogCQkvKiBXZSBzZW5kIGluIGEgMCwgc2luY2Ugd2UgZG8gTk9UIGhhdmUgYW55IGxv
Y2tzICovCiAJCWVycm9yID0gc2N0cF9tc2dfYXBwZW5kKHN0Y2IsIG5ldCwgdG9wLCBzcmN2LCAw
KTsKIAkJdG9wID0gTlVMTDsKLQkJaWYgKHNyY3YtPnNpbmZvX2ZsYWdzICYgU0NUUF9FT0YpIHsK
LQkJCS8qCi0JCQkgKiBUaGlzIHNob3VsZCBvbmx5IGhhcHBlbiBmb3IgUGFuZGEgZm9yIHRoZSBt
YnVmCi0JCQkgKiBzZW5kIGNhc2UsIHdoaWNoIGRvZXMgTk9UIHlldCBzdXBwb3J0IEVFT1IgbW9k
ZS4KLQkJCSAqIFRodXMsIHdlIGNhbiBqdXN0IHNldCB0aGlzIGZsYWcgdG8gZG8gdGhlIHByb3Bl
cgotCQkJICogRU9GIGhhbmRsaW5nLgotCQkJICovCisJCWlmIChzaW5mb19mbGFncyAmIFNDVFBf
RU9GKSB7CiAJCQlnb3RfYWxsX29mX3RoZV9zZW5kID0gMTsKIAkJfQogCX0KQEAgLTE0NTc4LDcg
KzE0NTkzLDcgQEAgc2tpcF9wcmVibG9jazoKIAl9CiBkYXRhbGVzc19lb2Y6CiAJLyogRU9GIHRo
aW5nID8gKi8KLQlpZiAoKHNyY3YtPnNpbmZvX2ZsYWdzICYgU0NUUF9FT0YpICYmCisJaWYgKChz
aW5mb19mbGFncyAmIFNDVFBfRU9GKSAmJgogCSAgICAoZ290X2FsbF9vZl90aGVfc2VuZCA9PSAx
KSkgewogCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19zZW5kc193aXRoX2VvZik7CiAJCWVycm9yID0g
MDsKQEAgLTE0NTkzLDE3ICsxNDYwOCwxNiBAQCBkYXRhbGVzc19lb2Y6CiAJCQkJZ290byBhYm9y
dF9hbnl3YXk7CiAJCQl9CiAJCQkvKiB0aGVyZSBpcyBub3RoaW5nIHF1ZXVlZCB0byBzZW5kLCBz
byBJJ20gZG9uZS4uLiAqLwotCQkJaWYgKChTQ1RQX0dFVF9TVEFURShhc29jKSAhPSBTQ1RQX1NU
QVRFX1NIVVRET1dOX1NFTlQpICYmCi0JCQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpICE9IFND
VFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpICYmCi0JCQkgICAgKFNDVFBfR0VUX1NUQVRFKGFz
b2MpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQpKSB7CisJCQlpZiAoKFNDVFBfR0VU
X1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCkgJiYKKwkJCSAgICAoU0NU
UF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkgJiYKKwkJ
CSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tfU0VO
VCkpIHsKIAkJCQlzdHJ1Y3Qgc2N0cF9uZXRzICpuZXRwOwogCiAJCQkJLyogb25seSBzZW5kIFNI
VVRET1dOIHRoZSBmaXJzdCB0aW1lIHRocm91Z2ggKi8KLQkJCQlpZiAoU0NUUF9HRVRfU1RBVEUo
YXNvYykgPT0gU0NUUF9TVEFURV9PUEVOKSB7CisJCQkJaWYgKFNDVFBfR0VUX1NUQVRFKHN0Y2Ip
ID09IFNDVFBfU1RBVEVfT1BFTikgewogCQkJCQlTQ1RQX1NUQVRfREVDUl9HQVVHRTMyKHNjdHBz
X2N1cnJlc3RhYik7CiAJCQkJfQotCQkJCVNDVFBfU0VUX1NUQVRFKGFzb2MsIFNDVFBfU1RBVEVf
U0hVVERPV05fU0VOVCk7Ci0JCQkJU0NUUF9DTEVBUl9TVUJTVEFURShhc29jLCBTQ1RQX1NUQVRF
X1NIVVRET1dOX1BFTkRJTkcpOworCQkJCVNDVFBfU0VUX1NUQVRFKHN0Y2IsIFNDVFBfU1RBVEVf
U0hVVERPV05fU0VOVCk7CiAJCQkJc2N0cF9zdG9wX3RpbWVyc19mb3Jfc2h1dGRvd24oc3RjYik7
CiAJCQkJaWYgKHN0Y2ItPmFzb2MuYWx0ZXJuYXRlKSB7CiAJCQkJCW5ldHAgPSBzdGNiLT5hc29j
LmFsdGVybmF0ZTsKQEAgLTE0NjE0LDcgKzE0NjI4LDcgQEAgZGF0YWxlc3NfZW9mOgogCQkJCXNj
dHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NIVVRET1dOLCBzdGNiLT5zY3RwX2VwLCBz
dGNiLAogCQkJCSAgICAgICAgICAgICAgICAgbmV0cCk7CiAJCQkJc2N0cF90aW1lcl9zdGFydChT
Q1RQX1RJTUVSX1RZUEVfU0hVVERPV05HVUFSRCwgc3RjYi0+c2N0cF9lcCwgc3RjYiwKLQkJCQkg
ICAgICAgICAgICAgICAgIGFzb2MtPnByaW1hcnlfZGVzdGluYXRpb24pOworCQkJCSAgICAgICAg
ICAgICAgICAgTlVMTCk7CiAJCQl9CiAJCX0gZWxzZSB7CiAJCQkvKi0KQEAgLTE0NjI3LDE3ICsx
NDY0MSwxNyBAQCBkYXRhbGVzc19lb2Y6CiAJCQkgKiBkYXRhIHRvIGJlIHNlbnQgZmlyc3QgYW5k
IG1vdmUgdG8KIAkJCSAqIFNIVVRET1dOLVBFTkRJTkcKIAkJCSAqLwotCQkJaWYgKChTQ1RQX0dF
VF9TVEFURShhc29jKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpICYmCi0JCQkgICAgKFND
VFBfR0VUX1NUQVRFKGFzb2MpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpICYmCi0J
CQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NF
TlQpKSB7CisJCQlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVfU0hVVERP
V05fU0VOVCkgJiYKKwkJCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9TVEFURV9T
SFVURE9XTl9SRUNFSVZFRCkgJiYKKwkJCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgIT0gU0NU
UF9TVEFURV9TSFVURE9XTl9BQ0tfU0VOVCkpIHsKIAkJCQlpZiAoaG9sZF90Y2Jsb2NrID09IDAp
IHsKIAkJCQkJU0NUUF9UQ0JfTE9DSyhzdGNiKTsKIAkJCQkJaG9sZF90Y2Jsb2NrID0gMTsKIAkJ
CQl9CiAJCQkJaWYgKCgqYXNvYy0+c3NfZnVuY3Rpb25zLnNjdHBfc3NfaXNfdXNlcl9tc2dzX2lu
Y29tcGxldGUpKHN0Y2IsIGFzb2MpKSB7Ci0JCQkJCWFzb2MtPnN0YXRlIHw9IFNDVFBfU1RBVEVf
UEFSVElBTF9NU0dfTEVGVDsKKwkJCQkJU0NUUF9BRERfU1VCU1RBVEUoc3RjYiwgU0NUUF9TVEFU
RV9QQVJUSUFMX01TR19MRUZUKTsKIAkJCQl9Ci0JCQkJYXNvYy0+c3RhdGUgfD0gU0NUUF9TVEFU
RV9TSFVURE9XTl9QRU5ESU5HOworCQkJCVNDVFBfQUREX1NVQlNUQVRFKHN0Y2IsIFNDVFBfU1RB
VEVfU0hVVERPV05fUEVORElORyk7CiAJCQkJaWYgKFRBSUxRX0VNUFRZKCZhc29jLT5zZW5kX3F1
ZXVlKSAmJgogCQkJCSAgICBUQUlMUV9FTVBUWSgmYXNvYy0+c2VudF9xdWV1ZSkgJiYKIAkJCQkg
ICAgKGFzb2MtPnN0YXRlICYgU0NUUF9TVEFURV9QQVJUSUFMX01TR19MRUZUKSkgewpAQCAtMTQ2
NDksMTkgKzE0NjYzLDI1IEBAIGRhdGFsZXNzX2VvZjoKIAkJCQkJCWF0b21pY19hZGRfaW50KCZz
dGNiLT5hc29jLnJlZmNudCwgLTEpOwogCQkJCQkJZnJlZV9jbnRfYXBwbGllZCA9IDA7CiAJCQkJ
CX0KLQkJCQkJc25wcmludGYobXNnLCBzaXplb2YobXNnKSwKLQkJCQkJICAgICAgICAgIiVzOiVk
IGF0ICVzIiwgX19GSUxFX18sIF9fTElORV9fLCBfX2Z1bmNfXyk7CisJCQkJCVNDVFBfU05QUklO
VEYobXNnLCBzaXplb2YobXNnKSwKKwkJCQkJICAgICAgICAgICAgICAiJXM6JWQgYXQgJXMiLCBf
X0ZJTEVfXywgX19MSU5FX18sIF9fZnVuY19fKTsKIAkJCQkJb3BfZXJyID0gc2N0cF9nZW5lcmF0
ZV9jYXVzZShTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfZGlhZ19pbmZvX2NvZGUpLAogCQkJCQkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyk7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJCQkJTkVUX0VQT0NIX0VOVEVSKGV0KTsKKyNl
bmRpZgogCQkJCQlzY3RwX2Fib3J0X2FuX2Fzc29jaWF0aW9uKHN0Y2ItPnNjdHBfZXAsIHN0Y2Is
CiAJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgb3BfZXJyLCBTQ1RQX1NPX0xPQ0tFRCk7
CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJ
CQkJTkVUX0VQT0NIX0VYSVQoZXQpOworI2VuZGlmCiAJCQkJCS8qIG5vdyByZWxvY2sgdGhlIHN0
Y2Igc28gZXZlcnl0aGluZyBpcyBzYW5lICovCiAJCQkJCWhvbGRfdGNibG9jayA9IDA7CiAJCQkJ
CXN0Y2IgPSBOVUxMOwogCQkJCQlnb3RvIG91dDsKIAkJCQl9CiAJCQkJc2N0cF90aW1lcl9zdGFy
dChTQ1RQX1RJTUVSX1RZUEVfU0hVVERPV05HVUFSRCwgc3RjYi0+c2N0cF9lcCwgc3RjYiwKLQkJ
CQkgICAgICAgICAgICAgICAgIGFzb2MtPnByaW1hcnlfZGVzdGluYXRpb24pOworCQkJCSAgICAg
ICAgICAgICAgICAgTlVMTCk7CiAJCQkJc2N0cF9mZWF0dXJlX29mZihpbnAsIFNDVFBfUENCX0ZM
QUdTX05PREVMQVkpOwogCQkJfQogCQl9CkBAIC0xNDY3NSwxMiArMTQ2OTUsMTggQEAgc2tpcF9v
dXRfZW9mOgogCQkJU0NUUF9UQ0JfTE9DSyhzdGNiKTsKIAkJCWhvbGRfdGNibG9jayA9IDE7CiAJ
CX0KLQkJaWYgKFNDVFBfR0VUX1NUQVRFKCZzdGNiLT5hc29jKSA9PSBTQ1RQX1NUQVRFX09QRU4p
IHsKKwkJaWYgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfT1BFTikgewogCQkJ
LyogYSBjb2xsaXNpb24gdG9vayB1cyBmb3J3YXJkPyAqLwogCQkJcXVldWVfb25seSA9IDA7CiAJ
CX0gZWxzZSB7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKKwkJCU5FVF9FUE9DSF9FTlRFUihldCk7CisjZW5kaWYKIAkJCXNjdHBfc2VuZF9pbml0
aWF0ZShpbnAsIHN0Y2IsIFNDVFBfU09fTE9DS0VEKTsKLQkJCVNDVFBfU0VUX1NUQVRFKCZzdGNi
LT5hc29jLCBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKTsKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQkJTkVUX0VQT0NIX0VYSVQoZXQpOworI2Vu
ZGlmCisJCQlTQ1RQX1NFVF9TVEFURShzdGNiLCBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKTsKIAkJ
CXF1ZXVlX29ubHkgPSAxOwogCQl9CiAJfQpAQCAtMTQ3MjUsNiArMTQ3NTEsOSBAQCBza2lwX291
dF9lb2Y6CiAJCSAgICAgICAgICAgICAgIHN0Y2ItPmFzb2MudG90YWxfZmxpZ2h0LAogCQkgICAg
ICAgICAgICAgICBzdGNiLT5hc29jLmNodW5rc19vbl9vdXRfcXVldWUsIHN0Y2ItPmFzb2MudG90
YWxfZmxpZ2h0X2NvdW50KTsKIAl9CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKKwlORVRfRVBPQ0hfRU5URVIoZXQpOworI2VuZGlmCiAJaWYgKChx
dWV1ZV9vbmx5ID09IDApICYmIChuYWdsZV9hcHBsaWVzID09IDApICYmIChzdGNiLT5hc29jLnBl
ZXJzX3J3bmQgJiYgdW5fc2VudCkpIHsKIAkJLyogd2UgY2FuIGF0dGVtcHQgdG8gc2VuZCB0b28u
ICovCiAJCWlmIChob2xkX3RjYmxvY2sgPT0gMCkgewpAQCAtMTQ3NTcsMTMgKzE0Nzg2LDE2IEBA
IHNraXBfb3V0X2VvZjoKIAkJKHZvaWQpc2N0cF9tZWRfY2h1bmtfb3V0cHV0KGlucCwgc3RjYiwg
JnN0Y2ItPmFzb2MsICZudW1fb3V0LAogCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJl
YXNvbiwgMSwgMSwgJm5vdywgJm5vd19maWxsZWQsIGZyYWdfcG9pbnQsIFNDVFBfU09fTE9DS0VE
KTsKIAl9CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKKwlORVRfRVBPQ0hfRVhJVChldCk7CisjZW5kaWYKIAlTQ1RQREJHKFNDVFBfREVCVUdfT1VU
UFVUMSwgIlVTUiBTZW5kIGNvbXBsZXRlIHFvOiVkIHBydzolZCB1bnNlbnQ6JWQgdGY6JWQgY29v
cTolZCB0b3FzOiVkIGVycjolZFxuIiwKIAkgICAgICAgIHF1ZXVlX29ubHksIHN0Y2ItPmFzb2Mu
cGVlcnNfcnduZCwgdW5fc2VudCwKIAkJc3RjYi0+YXNvYy50b3RhbF9mbGlnaHQsIHN0Y2ItPmFz
b2MuY2h1bmtzX29uX291dF9xdWV1ZSwKIAkgICAgICAgIHN0Y2ItPmFzb2MudG90YWxfb3V0cHV0
X3F1ZXVlX3NpemUsIGVycm9yKTsKIAogb3V0OgotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lm
IGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCXNidW5sb2Nr
KCZzby0+c29fc25kLCAxKTsKICNlbmRpZgogb3V0X3VubG9ja2VkOgpAQCAtMTQ3ODEsNyArMTQ4
MTMsNyBAQCBvdXRfdW5sb2NrZWQ6CiAJCWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29jLnJlZmNu
dCwgLTEpOwogCX0KICNpZmRlZiBJTlZBUklBTlRTCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykK
KyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWlm
IChzdGNiKSB7CiAJCWlmIChtdHhfb3duZWQoJnN0Y2ItPnRjYl9tdHgpKSB7CiAJCQlwYW5pYygi
TGVhdmluZyB3aXRoIHRjYiBtdHggb3duZWQ/Iik7CkBAIC0xNDc5MSwzMyArMTQ4MjMsNiBAQCBv
dXRfdW5sb2NrZWQ6CiAJCX0KIAl9CiAjZW5kaWYKLSNlbmRpZgotI2lmZGVmIF9fUGFuZGFfXwot
CS8qCi0JICogSGFuZGxlIHRoZSBFQUdBSU4vRU5PTUVNIGNhc2VzIHRvIHJlYXR0YWNoIHRoZSBw
YWsgaGVhZGVyCi0JICogdG8gcGFydGljbGUgd2hlbiBwYWsgaXMgcGFzc2VkIGluLCBzbyB0aGF0
IGNhbGxlcgotCSAqIGNhbiB0cnkgYWdhaW4gd2l0aCB0aGlzIHBhawotCSAqCi0JICogTk9URTog
Rm9yIG90aGVyIGNhc2VzLCBpbmNsdWRpbmcgc3VjY2VzcyBjYXNlLAotCSAqIHdlIHNpbXBseSB3
YW50IHRvIHJldHVybiB0aGUgaGVhZGVyIGJhY2sgdG8gZnJlZQotCSAqIHBvb2wKLQkgKi8KLQlp
ZiAodG9wKSB7Ci0JCWlmICgoZXJyb3IgPT0gRUFHQUlOKSB8fCAoZXJyb3IgPT0gRU5PTUVNKSkg
ewotCQkJU0NUUF9BVFRBQ0hfQ0hBSU4oaV9wYWssIHRvcCwgc25kbGVuKTsKLQkJCXRvcCA9IE5V
TEw7Ci0JCX0gZWxzZSB7Ci0JCQkodm9pZClTQ1RQX1JFTEVBU0VfSEVBREVSKGlfcGFrKTsKLQkJ
fQotCX0gZWxzZSB7Ci0JCS8qIFRoaXMgaXMgdG8gaGFuZGxlIGNhc2VzIHdoZW4gdG9wIGhhcwot
CQkgKiBiZWVuIHJlc2V0IHRvIE5VTEwgYnV0IHBhayBtaWdodCBub3QKLQkJICogYmUgZnJlZWQK
LQkJICovCi0JCWlmIChpX3BhaykgewotCQkJKHZvaWQpU0NUUF9SRUxFQVNFX0hFQURFUihpX3Bh
ayk7Ci0JCX0KLQl9CiAjZW5kaWYKIAlpZiAodG9wKSB7CiAJCXNjdHBfbV9mcmVlbSh0b3ApOwpA
QCAtMTQ4ODcsNyArMTQ4OTIsNyBAQCBzY3RwX2FkZF9hdXRoX2NodW5rKHN0cnVjdCBtYnVmICpt
LCBzdHJ1Y3QgbWJ1ZiAqKm1fZW5kLAogCXJldHVybiAobSk7CiB9CiAKLSNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAgfHwgZGVmaW5lZChfX0FQUExFX18pCisjaWYgKGRlZmluZWQoX19GcmVlQlNE
X18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSkgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNp
ZmRlZiBJTkVUNgogaW50CiBzY3RwX3Y2c3JjX21hdGNoX25leHRob3Aoc3RydWN0IHNvY2thZGRy
X2luNiAqc3JjNiwgc2N0cF9yb3V0ZV90ICpybykKQEAgLTE0ODk2LDcgKzE0OTAxLDExIEBAIHNj
dHBfdjZzcmNfbWF0Y2hfbmV4dGhvcChzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzcmM2LCBzY3RwX3Jv
dXRlX3QgKnJvKQogCXN0cnVjdCBuZF9wZnhyb3V0ZXIgKnBmeHJ0ciA9IE5VTEw7CiAJc3RydWN0
IHNvY2thZGRyX2luNiBndzY7CiAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorCWlmIChybyA9
PSBOVUxMIHx8IHJvLT5yb19uaCA9PSBOVUxMIHx8IHNyYzYtPnNpbjZfZmFtaWx5ICE9IEFGX0lO
RVQ2KQorI2Vsc2UKIAlpZiAocm8gPT0gTlVMTCB8fCByby0+cm9fcnQgPT0gTlVMTCB8fCBzcmM2
LT5zaW42X2ZhbWlseSAhPSBBRl9JTkVUNikKKyNlbmRpZgogCQlyZXR1cm4gKDApOwogCiAJLyog
Z2V0IHByZWZpeCBlbnRyeSBvZiBhZGRyZXNzICovCkBAIC0xNDkzNSwxMCArMTQ5NDQsMTYgQEAg
c2N0cF92NnNyY19tYXRjaF9uZXh0aG9wKHN0cnVjdCBzb2NrYWRkcl9pbjYgKnNyYzYsIHNjdHBf
cm91dGVfdCAqcm8pCiAJCVNDVFBEQkcoU0NUUF9ERUJVR19PVVRQVVQyLCAicHJlZml4IHJvdXRl
ciBpcyAiKTsKIAkJU0NUUERCR19BRERSKFNDVFBfREVCVUdfT1VUUFVUMiwgKHN0cnVjdCBzb2Nr
YWRkciAqKSZndzYpOwogCQlTQ1RQREJHKFNDVFBfREVCVUdfT1VUUFVUMiwgImluc3RhbGxlZCBy
b3V0ZXIgaXMgIik7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKwkJU0NUUERCR19BRERSKFND
VFBfREVCVUdfT1VUUFVUMiwgJnJvLT5yb19uaC0+Z3dfc2EpOworI2Vsc2UKIAkJU0NUUERCR19B
RERSKFNDVFBfREVCVUdfT1VUUFVUMiwgcm8tPnJvX3J0LT5ydF9nYXRld2F5KTsKLQkJaWYgKHNj
dHBfY21wYWRkcigoc3RydWN0IHNvY2thZGRyICopJmd3Niwgcm8tPnJvX3J0LT5ydF9nYXRld2F5
KSkgeworI2VuZGlmCiAjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKwkJaWYgKHNjdHBfY21wYWRk
cigoc3RydWN0IHNvY2thZGRyICopJmd3NiwgJnJvLT5yb19uaC0+Z3dfc2EpKSB7CiAJCQlORDZf
UlVOTE9DSygpOworI2Vsc2UKKwkJaWYgKHNjdHBfY21wYWRkcigoc3RydWN0IHNvY2thZGRyICop
Jmd3Niwgcm8tPnJvX3J0LT5ydF9nYXRld2F5KSkgewogI2VuZGlmCiAJCQlTQ1RQREJHKFNDVFBf
REVCVUdfT1VUUFVUMiwgInBmeHJvdXRlciBpcyBpbnN0YWxsZWRcbiIpOwogCQkJcmV0dXJuICgx
KTsKQEAgLTE0OTYwLDcgKzE0OTc1LDExIEBAIHNjdHBfdjRzcmNfbWF0Y2hfbmV4dGhvcChzdHJ1
Y3Qgc2N0cF9pZmEgKnNpZmEsIHNjdHBfcm91dGVfdCAqcm8pCiAJc3RydWN0IGlmYWRkciAqaWZh
OwogCXN0cnVjdCBpbl9hZGRyIHNyY25ldGFkZHIsIGd3bmV0YWRkcjsKIAorI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pCisJaWYgKHJvID09IE5VTEwgfHwgcm8tPnJvX25oID09IE5VTEwgfHwKKyNl
bHNlCiAJaWYgKHJvID09IE5VTEwgfHwgcm8tPnJvX3J0ID09IE5VTEwgfHwKKyNlbmRpZgogCSAg
ICBzaWZhLT5hZGRyZXNzLnNhLnNhX2ZhbWlseSAhPSBBRl9JTkVUKSB7CiAJCXJldHVybiAoMCk7
CiAJfQpAQCAtMTQ5NzIsMTAgKzE0OTkxLDE4IEBAIHNjdHBfdjRzcmNfbWF0Y2hfbmV4dGhvcChz
dHJ1Y3Qgc2N0cF9pZmEgKnNpZmEsIHNjdHBfcm91dGVfdCAqcm8pCiAJU0NUUERCR19BRERSKFND
VFBfREVCVUdfT1VUUFVUMiwgJnNpZmEtPmFkZHJlc3Muc2EpOwogCVNDVFBEQkcoU0NUUF9ERUJV
R19PVVRQVVQxLCAibmV0d29yayBhZGRyZXNzIGlzICV4XG4iLCBzcmNuZXRhZGRyLnNfYWRkcik7
CiAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorCXNpbiA9ICZyby0+cm9fbmgtPmd3NF9zYTsK
KyNlbHNlCiAJc2luID0gKHN0cnVjdCBzb2NrYWRkcl9pbiAqKXJvLT5yb19ydC0+cnRfZ2F0ZXdh
eTsKKyNlbmRpZgogCWd3bmV0YWRkci5zX2FkZHIgPSAoc2luLT5zaW5fYWRkci5zX2FkZHIgJiBt
YXNrLT5zaW5fYWRkci5zX2FkZHIpOwogCVNDVFBEQkcoU0NUUF9ERUJVR19PVVRQVVQxLCAibWF0
Y2hfbmV4dGhvcDQ6IG5leHRob3AgaXMgIik7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKwlT
Q1RQREJHX0FERFIoU0NUUF9ERUJVR19PVVRQVVQyLCAmcm8tPnJvX25oLT5nd19zYSk7CisjZWxz
ZQogCVNDVFBEQkdfQUREUihTQ1RQX0RFQlVHX09VVFBVVDIsIHJvLT5yb19ydC0+cnRfZ2F0ZXdh
eSk7CisjZW5kaWYKIAlTQ1RQREJHKFNDVFBfREVCVUdfT1VUUFVUMSwgIm5ldHdvcmsgYWRkcmVz
cyBpcyAleFxuIiwgZ3duZXRhZGRyLnNfYWRkcik7CiAJaWYgKHNyY25ldGFkZHIuc19hZGRyID09
IGd3bmV0YWRkci5zX2FkZHIpIHsKIAkJcmV0dXJuICgxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX291dHB1dC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9u
ZXRpbmV0L3NjdHBfb3V0cHV0LmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRl
eCA1OTdkZGMzYmYzYTVjYjRlNGI4OTAwOTYzZThkYWE4OGRkZTg1OTAzLi40ODQ5YzJiNDkyNWQz
ZDExNWIyZTA1MzBmOTY3MzJlZDViMDhiYWJmCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0
aW5ldC9zY3RwX291dHB1dC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3Rw
X291dHB1dC5oCkBAIC0zMiw5ICszMiw5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotI2lmZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLV9f
RkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX291dHB1dC5oIDMyMzg2MSAy
MDE3LTA5LTIxIDExOjU2OjMxWiB0dWV4ZW4gJCIpOworX19GQlNESUQoIiRGcmVlQlNEOiBoZWFk
L3N5cy9uZXRpbmV0L3NjdHBfb3V0cHV0LmggMzYyMDU0IDIwMjAtMDYtMTEgMTM6MzQ6MDlaIHR1
ZXhlbiAkIik7CiAjZW5kaWYKIAogI2lmbmRlZiBfTkVUSU5FVF9TQ1RQX09VVFBVVF9IXwpAQCAt
NzgsMTEgKzc4LDcgQEAgaW50CiBzY3RwX3Y0c3JjX21hdGNoX25leHRob3Aoc3RydWN0IHNjdHBf
aWZhICpzaWZhLCBzY3RwX3JvdXRlX3QgKnJvKTsKICNlbmRpZgogCi12b2lkIHNjdHBfc2VuZF9p
bml0aWF0ZShzdHJ1Y3Qgc2N0cF9pbnBjYiAqLCBzdHJ1Y3Qgc2N0cF90Y2IgKiwgaW50Ci0jaWYg
IWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKLSAg
ICBTQ1RQX1VOVVNFRAotI2VuZGlmCi0gICAgKTsKK3ZvaWQgc2N0cF9zZW5kX2luaXRpYXRlKHN0
cnVjdCBzY3RwX2lucGNiICosIHN0cnVjdCBzY3RwX3RjYiAqLCBpbnQpOwogCiB2b2lkCiBzY3Rw
X3NlbmRfaW5pdGlhdGVfYWNrKHN0cnVjdCBzY3RwX2lucGNiICosIHN0cnVjdCBzY3RwX3RjYiAq
LApAQCAtOTAsMTggKzg2LDE4IEBAIHNjdHBfc2VuZF9pbml0aWF0ZV9hY2soc3RydWN0IHNjdHBf
aW5wY2IgKiwgc3RydWN0IHNjdHBfdGNiICosCiAgICAgICAgICAgICAgICAgICAgICAgIGludCwg
aW50LAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIgKiwgc3RydWN0IHNv
Y2thZGRyICosCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY3RwaGRyICosIHN0cnVj
dCBzY3RwX2luaXRfY2h1bmsgKiwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQ4X3QsIHVpbnQzMl90LAogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQzMl90LCB1aW50MTZfdCk7CiAKIHN0cnVjdCBtYnVmICoKIHNjdHBfYXJldGhlcmVf
dW5yZWNvZ25pemVkX3BhcmFtZXRlcnMoc3RydWN0IG1idWYgKiwgaW50LCBpbnQgKiwKLQkJCQkg
ICAgICBzdHJ1Y3Qgc2N0cF9jaHVua2hkciAqLCBpbnQgKik7CisJCQkJICAgICAgc3RydWN0IHNj
dHBfY2h1bmtoZHIgKiwgaW50ICosIGludCAqKTsKIHZvaWQgc2N0cF9xdWV1ZV9vcF9lcnIoc3Ry
dWN0IHNjdHBfdGNiICosIHN0cnVjdCBtYnVmICopOwogCiBpbnQKLXNjdHBfc2VuZF9jb29raWVf
ZWNobyhzdHJ1Y3QgbWJ1ZiAqLCBpbnQsIHN0cnVjdCBzY3RwX3RjYiAqLAorc2N0cF9zZW5kX2Nv
b2tpZV9lY2hvKHN0cnVjdCBtYnVmICosIGludCwgaW50LCBzdHJ1Y3Qgc2N0cF90Y2IgKiwKICAg
ICBzdHJ1Y3Qgc2N0cF9uZXRzICopOwogCiB2b2lkIHNjdHBfc2VuZF9jb29raWVfYWNrKHN0cnVj
dCBzY3RwX3RjYiAqKTsKQEAgLTEyNCw3ICsxMjAsNyBAQCB2b2lkIHNjdHBfc2VuZF9zaHV0ZG93
bl9jb21wbGV0ZShzdHJ1Y3Qgc2N0cF90Y2IgKiwgc3RydWN0IHNjdHBfbmV0cyAqLCBpbnQpOwog
CiB2b2lkIHNjdHBfc2VuZF9zaHV0ZG93bl9jb21wbGV0ZTIoc3RydWN0IHNvY2thZGRyICosIHN0
cnVjdCBzb2NrYWRkciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj
dCBzY3RwaGRyICosCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQ4X3QsIHVpbnQzMl90LCB1aW50MTZfdCwKICNlbmRpZgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90LCB1aW50MTZfdCk7CkBAIC0xNDgs
MTEgKzE0NCwxMSBAQCB2b2lkIHNjdHBfbW92ZV9jaHVua3NfZnJvbV9uZXQoc3RydWN0IHNjdHBf
dGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQpOwogCQkJCQlzaXplb2Yoc3RydWN0IHNj
dHBfaWRhdGFfY2h1bmspIDogXAogCQkJCQlzaXplb2Yoc3RydWN0IHNjdHBfZGF0YV9jaHVuaykp
CiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAw
MDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
aW50CiBzY3RwX291dHB1dChzdHJ1Y3Qgc2N0cF9pbnBjYiAqLCBzdHJ1Y3QgbWJ1ZiAqLCBzdHJ1
Y3Qgc29ja2FkZHIgKiwKICAgICBzdHJ1Y3QgbWJ1ZiAqLCBzdHJ1Y3QgdGhyZWFkICosIGludCk7
Ci0jZWxpZiBkZWZpbmVkKF9fV2luZG93c19fKQorI2VsaWYgZGVmaW5lZChfV0lOMzIpICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBzY3RwX291dHB1dChzdHJ1Y3Qgc2N0cF9pbnBjYiAqLCBz
dHJ1Y3QgbWJ1ZiAqLCBzdHJ1Y3Qgc29ja2FkZHIgKiwKICAgICBzdHJ1Y3QgbWJ1ZiAqLCBQS1RI
UkVBRCwgaW50KTsKICNlbHNlCkBAIC0xNjEsMzAgKzE1NywxNSBAQCBzY3RwX291dHB1dChzdHJ1
Y3Qgc2N0cF9pbnBjYiAqLCBzdHJ1Y3QgbWJ1ZiAqLCBzdHJ1Y3Qgc29ja2FkZHIgKiwKICNlbmRp
ZgogaW50CiBzY3RwX291dHB1dChzdHJ1Y3Qgc2N0cF9pbnBjYiAqLAotI2lmIGRlZmluZWQoX19Q
YW5kYV9fKQotICAgIHBha2hhbmRsZV90eXBlLAotI2Vsc2UKICAgICBzdHJ1Y3QgbWJ1ZiAqLAot
I2VuZGlmCiAgICAgc3RydWN0IHNvY2thZGRyICosCi0jaWYgZGVmaW5lZChfX1BhbmRhX18pCi0g
ICAgcGFraGFuZGxlX3R5cGUsCi0jZWxzZQogICAgIHN0cnVjdCBtYnVmICosCi0jZW5kaWYKICAg
ICBzdHJ1Y3QgcHJvYyAqLCBpbnQpOwogI2VuZGlmCiAKLXZvaWQgc2N0cF9jaHVua19vdXRwdXQo
c3RydWN0IHNjdHBfaW5wY2IgKiwgc3RydWN0IHNjdHBfdGNiICosIGludCwgaW50Ci0jaWYgIWRl
ZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKLSAgICBT
Q1RQX1VOVVNFRAotI2VuZGlmCi0gICAgKTsKLXZvaWQgc2N0cF9zZW5kX2Fib3J0X3RjYihzdHJ1
Y3Qgc2N0cF90Y2IgKiwgc3RydWN0IG1idWYgKiwgaW50Ci0jaWYgIWRlZmluZWQoX19BUFBMRV9f
KSAmJiAhZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKLSAgICBTQ1RQX1VOVVNFRAotI2Vu
ZGlmCi0gICAgKTsKK3ZvaWQgc2N0cF9jaHVua19vdXRwdXQoc3RydWN0IHNjdHBfaW5wY2IgKiwg
c3RydWN0IHNjdHBfdGNiICosIGludCwgaW50KTsKKwordm9pZCBzY3RwX3NlbmRfYWJvcnRfdGNi
KHN0cnVjdCBzY3RwX3RjYiAqLCBzdHJ1Y3QgbWJ1ZiAqLCBpbnQpOwogCiB2b2lkIHNlbmRfZm9y
d2FyZF90c24oc3RydWN0IHNjdHBfdGNiICosIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICopOwog
CkBAIC0xOTQsNyArMTc1LDYgQEAgdm9pZCBzY3RwX3NlbmRfaGIoc3RydWN0IHNjdHBfdGNiICos
IHN0cnVjdCBzY3RwX25ldHMgKiwgaW50KTsKIAogdm9pZCBzY3RwX3NlbmRfZWNuX2VjaG8oc3Ry
dWN0IHNjdHBfdGNiICosIHN0cnVjdCBzY3RwX25ldHMgKiwgdWludDMyX3QpOwogCi0KIHZvaWQK
IHNjdHBfc2VuZF9wYWNrZXRfZHJvcHBlZChzdHJ1Y3Qgc2N0cF90Y2IgKiwgc3RydWN0IHNjdHBf
bmV0cyAqLCBzdHJ1Y3QgbWJ1ZiAqLAogICAgIGludCwgaW50LCBpbnQpOwpAQCAtMjI1LDE0ICsy
MDUsMTQgQEAgc2N0cF9zZW5kX3N0cl9yZXNldF9yZXEoc3RydWN0IHNjdHBfdGNiICosIHVpbnQx
Nl90ICwgdWludDE2X3QgKiwKIHZvaWQKIHNjdHBfc2VuZF9hYm9ydChzdHJ1Y3QgbWJ1ZiAqLCBp
bnQsIHN0cnVjdCBzb2NrYWRkciAqLCBzdHJ1Y3Qgc29ja2FkZHIgKiwKICAgICAgICAgICAgICAg
ICBzdHJ1Y3Qgc2N0cGhkciAqLCB1aW50MzJfdCwgc3RydWN0IG1idWYgKiwKLSNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAgICAgICAgICAgICAgICAgdWludDhfdCwgdWludDMyX3QsIHVpbnQxNl90LAog
I2VuZGlmCiAgICAgICAgICAgICAgICAgdWludDMyX3QsIHVpbnQxNl90KTsKIAogdm9pZCBzY3Rw
X3NlbmRfb3BlcnJfdG8oc3RydWN0IHNvY2thZGRyICosIHN0cnVjdCBzb2NrYWRkciAqLAogICAg
ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNjdHBoZHIgKiwgdWludDMyX3QsIHN0cnVjdCBt
YnVmICosCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDhfdCwgdWludDMyX3QsIHVpbnQxNl90LAogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50MzJfdCwgdWludDE2X3QpOwpAQCAtMjQ0LDIwICsyMjQsMTUgQEAgaW50CiBzY3RwX3Nv
c2VuZChzdHJ1Y3Qgc29ja2V0ICpzbywKICAgICBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsCiAgICAg
c3RydWN0IHVpbyAqdWlvLAotI2lmZGVmIF9fUGFuZGFfXwotICAgIHBha2hhbmRsZV90eXBlIHRv
cCwKLSAgICBwYWtoYW5kbGVfdHlwZSBjb250cm9sLAotI2Vsc2UKICAgICBzdHJ1Y3QgbWJ1ZiAq
dG9wLAogICAgIHN0cnVjdCBtYnVmICpjb250cm9sLAotI2VuZGlmCi0jaWYgZGVmaW5lZChfX0FQ
UExFX18pIHx8IGRlZmluZWQoX19QYW5kYV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogICAgIGludCBmbGFncwogI2Vsc2UKICAgICBpbnQgZmxh
Z3MsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAw
MDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
ICAgICBzdHJ1Y3QgdGhyZWFkICpwCi0jZWxpZiBkZWZpbmVkKF9fV2luZG93c19fKQorI2VsaWYg
ZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAgICAgUEtUSFJFQUQg
cAogI2Vsc2UKICNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9wY2IuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0
aW5ldC9zY3RwX3BjYi5jCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggN2Yz
OTNiYzBlNzAyZDI1NjEyYjk5YzE3MmNmYmM4MDk0OWZkNjhhMC4uMmJhZTc5NmU1YWQ1YzdjYzQ5
MGNlYjRmYTAxYzVjYzQ0ODQ5OTIzMgotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQv
c2N0cF9wY2IuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9wY2IuYwpA
QCAtMzIsMTMgKzMyLDEzIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotI2lmZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLV9fRkJTRElEKCIk
RnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX3BjYi5jIDM1NTkzMSAyMDE5LTEyLTIwIDE1
OjI1OjA4WiB0dWV4ZW4gJCIpOworX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0
L3NjdHBfcGNiLmMgMzY0MjY4IDIwMjAtMDgtMTYgMTE6NTA6MzdaIHR1ZXhlbiAkIik7CiAjZW5k
aWYKIAogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9vcy5oPgotI2lmZGVmIF9fRnJlZUJTRF9fCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNs
dWRlIDxzeXMvcHJvYy5oPgogI2VuZGlmCiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX3Zhci5oPgpA
QCAtNTEsMTEgKzUxLDggQEAgX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3Nj
dHBfcGNiLmMgMzU1OTMxIDIwMTktMTItMjAgMTU6MjU6MDhaIHR1ZXgKICNpbmNsdWRlIDxuZXRp
bmV0L3NjdHBfb3V0cHV0Lmg+CiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX3RpbWVyLmg+CiAjaW5j
bHVkZSA8bmV0aW5ldC9zY3RwX2JzZF9hZGRyLmg+Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
JiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gMTAwMDAwMAotI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9k
dHJhY2VfZGVmaW5lLmg+Ci0jZW5kaWYKICNpZiBkZWZpbmVkKElORVQpIHx8IGRlZmluZWQoSU5F
VDYpCi0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiAhZGVmaW5lZChf
V0lOMzIpCiAjaW5jbHVkZSA8bmV0aW5ldC91ZHAuaD4KICNlbmRpZgogI2VuZGlmCkBAIC02Niwy
OCArNjMsMjMgQEAgX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfcGNi
LmMgMzU1OTMxIDIwMTktMTItMjAgMTU6MjU6MDhaIHR1ZXgKICNpbmNsdWRlIDxuZXRpbmV0Ni9p
cDZfdmFyLmg+CiAjZW5kaWYKICNlbmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRl
IDxzeXMvc2NoZWQuaD4KICNpbmNsdWRlIDxzeXMvc21wLmg+CiAjaW5jbHVkZSA8c3lzL3VuaXN0
ZC5oPgogI2VuZGlmCiAjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPHVzZXJf
c29ja2V0dmFyLmg+Ci0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpbmNs
dWRlIDx1c2VyX2F0b21pYy5oPgorI2lmICFkZWZpbmVkKF9XSU4zMikKICNpbmNsdWRlIDxuZXRk
Yi5oPgogI2VuZGlmCiAjZW5kaWYKIAotI2lmIGRlZmluZWQoX19BUFBMRV9fKQotI2RlZmluZSBB
UFBMRV9GSUxFX05PIDQKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19G
cmVlQlNEX3ZlcnNpb24gPj0gODAxMDAwCi1WTkVUX0RFRklORShzdHJ1Y3Qgc2N0cF9iYXNlX2lu
Zm8sIHN5c3RlbV9iYXNlX2luZm8pOwotI2Vsc2UKKyNpZiAhZGVmaW5lZChfX0ZyZWVCU0RfXykg
fHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogc3RydWN0IHNjdHBfYmFzZV9pbmZvIHN5c3RlbV9i
YXNlX2luZm87Ci0jZW5kaWYKIAorI2VuZGlmCiAvKiBGSVg6IHdlIGRvbid0IGhhbmRsZSBtdWx0
aXBsZSBsaW5rIGxvY2FsIHNjb3BlcyAqLwogLyogInNjb3BlbGVzcyIgcmVwbGFjZW1lbnQgSU42
X0FSRV9BRERSX0VRVUFMICovCiAjaWZkZWYgSU5FVDYKQEAgLTk1LDcgKzg3LDcgQEAgaW50CiBT
Q1RQNl9BUkVfQUREUl9FUVVBTChzdHJ1Y3Qgc29ja2FkZHJfaW42ICphLCBzdHJ1Y3Qgc29ja2Fk
ZHJfaW42ICpiKQogewogI2lmZGVmIFNDVFBfRU1CRURERURfVjZfU0NPUEUKLSNpZiBkZWZpbmVk
KF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKIAlzdHJ1Y3QgaW42X2FkZHIgdG1wX2EsIHRtcF9iOwogCiAJdG1wX2EgPSBhLT5zaW42
X2FkZHI7CkBAIC0yNjgsNiArMjYwLDcgQEAgc2N0cF9maW5kX2lmbih2b2lkICppZm4sIHVpbnQz
Ml90IGlmbl9pbmRleCkKIAkvKiBXZSBhc3N1bWUgdGhlIGxvY2sgaXMgaGVsZCBmb3IgdGhlIGFk
ZHJlc3NlcwogCSAqIGlmIHRoYXQncyB3cm9uZyBwcm9ibGVtcyBjb3VsZCBvY2N1ciA6LSkKIAkg
Ki8KKwlTQ1RQX0lQSV9BRERSX0xPQ0tfQVNTRVJUKCk7CiAJaGFzaF9pZm5faGVhZCA9ICZTQ1RQ
X0JBU0VfSU5GTyh2cmZfaWZuX2hhc2gpWyhpZm5faW5kZXggJiBTQ1RQX0JBU0VfSU5GTyh2cmZf
aWZuX2hhc2htYXJrKSldOwogCUxJU1RfRk9SRUFDSChzY3RwX2lmbnAsIGhhc2hfaWZuX2hlYWQs
IG5leHRfYnVja2V0KSB7CiAJCWlmIChzY3RwX2lmbnAtPmlmbl9pbmRleCA9PSBpZm5faW5kZXgp
IHsKQEAgLTM2MywxNCArMzU2LDE2IEBAIHNjdHBfZGVsZXRlX2lmbihzdHJ1Y3Qgc2N0cF9pZm4g
KnNjdHBfaWZucCwgaW50IGhvbGRfYWRkcl9sb2NrKQogCQkvKiBOb3QgaW4gdGhlIGxpc3QuLiBz
b3JyeSAqLwogCQlyZXR1cm47CiAJfQotCWlmIChob2xkX2FkZHJfbG9jayA9PSAwKQorCWlmICho
b2xkX2FkZHJfbG9jayA9PSAwKSB7CiAJCVNDVFBfSVBJX0FERFJfV0xPQ0soKTsKKwl9IGVsc2Ug
eworCQlTQ1RQX0lQSV9BRERSX1dMT0NLX0FTU0VSVCgpOworCX0KIAlMSVNUX1JFTU9WRShzY3Rw
X2lmbnAsIG5leHRfYnVja2V0KTsKIAlMSVNUX1JFTU9WRShzY3RwX2lmbnAsIG5leHRfaWZuKTsK
LQlTQ1RQX0RFUkVHSVNURVJfSU5URVJGQUNFKHNjdHBfaWZucC0+aWZuX2luZGV4LAotCQkJCSAg
c2N0cF9pZm5wLT5yZWdpc3RlcmVkX2FmKTsKLQlpZiAoaG9sZF9hZGRyX2xvY2sgPT0gMCkKKwlp
ZiAoaG9sZF9hZGRyX2xvY2sgPT0gMCkgewogCQlTQ1RQX0lQSV9BRERSX1dVTkxPQ0soKTsKKwl9
CiAJLyogVGFrZSBhd2F5IHRoZSByZWZlcmVuY2UsIGFuZCBwb3NzaWJseSBmcmVlIGl0ICovCiAJ
c2N0cF9mcmVlX2lmbihzY3RwX2lmbnApOwogfQpAQCAtNDk2LDcgKzQ5MSw2IEBAIHNjdHBfYWRk
X2lmYV90b19pZm4oc3RydWN0IHNjdHBfaWZuICpzY3RwX2lmbnAsIHN0cnVjdCBzY3RwX2lmYSAq
c2N0cF9pZmFwKQogCX0KIAlpZiAoc2N0cF9pZm5wLT5pZmFfY291bnQgPT0gMSkgewogCQkvKiBy
ZWdpc3RlciB0aGUgbmV3IGludGVyZmFjZSAqLwotCQlTQ1RQX1JFR0lTVEVSX0lOVEVSRkFDRShz
Y3RwX2lmbnAtPmlmbl9pbmRleCwgaWZhX2FmKTsKIAkJc2N0cF9pZm5wLT5yZWdpc3RlcmVkX2Fm
ID0gaWZhX2FmOwogCX0KIH0KQEAgLTUzNywxMyArNTMxLDkgQEAgc2N0cF9yZW1vdmVfaWZhX2Zy
b21faWZuKHN0cnVjdCBzY3RwX2lmYSAqc2N0cF9pZmFwKQogCQkJLyogcmUtcmVnaXN0ZXIgYWRk
cmVzcyBmYW1pbHkgdHlwZSwgaWYgbmVlZGVkICovCiAJCQlpZiAoKHNjdHBfaWZhcC0+aWZuX3At
Pm51bV92NiA9PSAwKSAmJgogCQkJICAgIChzY3RwX2lmYXAtPmlmbl9wLT5yZWdpc3RlcmVkX2Fm
ID09IEFGX0lORVQ2KSkgewotCQkJCVNDVFBfREVSRUdJU1RFUl9JTlRFUkZBQ0Uoc2N0cF9pZmFw
LT5pZm5fcC0+aWZuX2luZGV4LCBBRl9JTkVUNik7Ci0JCQkJU0NUUF9SRUdJU1RFUl9JTlRFUkZB
Q0Uoc2N0cF9pZmFwLT5pZm5fcC0+aWZuX2luZGV4LCBBRl9JTkVUKTsKIAkJCQlzY3RwX2lmYXAt
Pmlmbl9wLT5yZWdpc3RlcmVkX2FmID0gQUZfSU5FVDsKIAkJCX0gZWxzZSBpZiAoKHNjdHBfaWZh
cC0+aWZuX3AtPm51bV92NCA9PSAwKSAmJgogCQkJCSAgIChzY3RwX2lmYXAtPmlmbl9wLT5yZWdp
c3RlcmVkX2FmID09IEFGX0lORVQpKSB7Ci0JCQkJU0NUUF9ERVJFR0lTVEVSX0lOVEVSRkFDRShz
Y3RwX2lmYXAtPmlmbl9wLT5pZm5faW5kZXgsIEFGX0lORVQpOwotCQkJCVNDVFBfUkVHSVNURVJf
SU5URVJGQUNFKHNjdHBfaWZhcC0+aWZuX3AtPmlmbl9pbmRleCwgQUZfSU5FVDYpOwogCQkJCXNj
dHBfaWZhcC0+aWZuX3AtPnJlZ2lzdGVyZWRfYWYgPSBBRl9JTkVUNjsKIAkJCX0KIAkJCS8qIGZy
ZWUgdGhlIGlmbiByZWZjb3VudCAqLwpAQCAtNTYxLDggKzU1MSw4IEBAIHNjdHBfYWRkX2FkZHJf
dG9fdnJmKHVpbnQzMl90IHZyZl9pZCwgdm9pZCAqaWZuLCB1aW50MzJfdCBpZm5faW5kZXgsCiAJ
CSAgICAgaW50IGR5bmFtaWNfYWRkKQogewogCXN0cnVjdCBzY3RwX3ZyZiAqdnJmOwotCXN0cnVj
dCBzY3RwX2lmbiAqc2N0cF9pZm5wID0gTlVMTDsKLQlzdHJ1Y3Qgc2N0cF9pZmEgKnNjdHBfaWZh
cCA9IE5VTEw7CisJc3RydWN0IHNjdHBfaWZuICpzY3RwX2lmbnAsICpuZXdfc2N0cF9pZm5wOwor
CXN0cnVjdCBzY3RwX2lmYSAqc2N0cF9pZmFwLCAqbmV3X3NjdHBfaWZhcDsKIAlzdHJ1Y3Qgc2N0
cF9pZmFsaXN0ICpoYXNoX2FkZHJfaGVhZDsKIAlzdHJ1Y3Qgc2N0cF9pZm5saXN0ICpoYXNoX2lm
bl9oZWFkOwogCXVpbnQzMl90IGhhc2hfb2ZfYWRkcjsKQEAgLTU3Miw2ICs1NjIsMjMgQEAgc2N0
cF9hZGRfYWRkcl90b192cmYodWludDMyX3QgdnJmX2lkLCB2b2lkICppZm4sIHVpbnQzMl90IGlm
bl9pbmRleCwKIAlTQ1RQREJHKFNDVFBfREVCVUdfUENCNCwgInZyZl9pZCAweCV4OiBhZGRpbmcg
YWRkcmVzczogIiwgdnJmX2lkKTsKIAlTQ1RQREJHX0FERFIoU0NUUF9ERUJVR19QQ0I0LCBhZGRy
KTsKICNlbmRpZgorCVNDVFBfTUFMTE9DKG5ld19zY3RwX2lmbnAsIHN0cnVjdCBzY3RwX2lmbiAq
LAorCSAgICAgICAgICAgIHNpemVvZihzdHJ1Y3Qgc2N0cF9pZm4pLCBTQ1RQX01fSUZOKTsKKwlp
ZiAobmV3X3NjdHBfaWZucCA9PSBOVUxMKSB7CisjaWZkZWYgSU5WQVJJQU5UUworCQlwYW5pYygi
Tm8gbWVtb3J5IGZvciBJRk4iKTsKKyNlbmRpZgorCQlyZXR1cm4gKE5VTEwpOworCX0KKwlTQ1RQ
X01BTExPQyhuZXdfc2N0cF9pZmFwLCBzdHJ1Y3Qgc2N0cF9pZmEgKiwgc2l6ZW9mKHN0cnVjdCBz
Y3RwX2lmYSksIFNDVFBfTV9JRkEpOworCWlmIChuZXdfc2N0cF9pZmFwID09IE5VTEwpIHsKKyNp
ZmRlZiBJTlZBUklBTlRTCisJCXBhbmljKCJObyBtZW1vcnkgZm9yIElGQSIpOworI2VuZGlmCisJ
CVNDVFBfRlJFRShuZXdfc2N0cF9pZm5wLCBTQ1RQX01fSUZOKTsKKwkJcmV0dXJuIChOVUxMKTsK
Kwl9CisKIAlTQ1RQX0lQSV9BRERSX1dMT0NLKCk7CiAJc2N0cF9pZm5wID0gc2N0cF9maW5kX2lm
bihpZm4sIGlmbl9pbmRleCk7CiAJaWYgKHNjdHBfaWZucCkgewpAQCAtNTgyLDYgKzU4OSw4IEBA
IHNjdHBfYWRkX2FkZHJfdG9fdnJmKHVpbnQzMl90IHZyZl9pZCwgdm9pZCAqaWZuLCB1aW50MzJf
dCBpZm5faW5kZXgsCiAJCQl2cmYgPSBzY3RwX2FsbG9jYXRlX3ZyZih2cmZfaWQpOwogCQkJaWYg
KHZyZiA9PSBOVUxMKSB7CiAJCQkJU0NUUF9JUElfQUREUl9XVU5MT0NLKCk7CisJCQkJU0NUUF9G
UkVFKG5ld19zY3RwX2lmbnAsIFNDVFBfTV9JRk4pOworCQkJCVNDVFBfRlJFRShuZXdfc2N0cF9p
ZmFwLCBTQ1RQX01fSUZBKTsKIAkJCQlyZXR1cm4gKE5VTEwpOwogCQkJfQogCQl9CkBAIC01OTAs
MTUgKzU5OSw4IEBAIHNjdHBfYWRkX2FkZHJfdG9fdnJmKHVpbnQzMl90IHZyZl9pZCwgdm9pZCAq
aWZuLCB1aW50MzJfdCBpZm5faW5kZXgsCiAJCS8qIGJ1aWxkIG9uZSBhbmQgYWRkIGl0LCBjYW4n
dCBob2xkIGxvY2sKIAkJICogdW50aWwgYWZ0ZXIgbWFsbG9jIGRvbmUgdGhvdWdoLgogCQkgKi8K
LQkJU0NUUF9JUElfQUREUl9XVU5MT0NLKCk7Ci0JCVNDVFBfTUFMTE9DKHNjdHBfaWZucCwgc3Ry
dWN0IHNjdHBfaWZuICosCi0JCQkgICAgc2l6ZW9mKHN0cnVjdCBzY3RwX2lmbiksIFNDVFBfTV9J
Rk4pOwotCQlpZiAoc2N0cF9pZm5wID09IE5VTEwpIHsKLSNpZmRlZiBJTlZBUklBTlRTCi0JCQlw
YW5pYygiTm8gbWVtb3J5IGZvciBJRk4iKTsKLSNlbmRpZgotCQkJcmV0dXJuIChOVUxMKTsKLQkJ
fQorCQlzY3RwX2lmbnAgPSBuZXdfc2N0cF9pZm5wOworCQluZXdfc2N0cF9pZm5wID0gTlVMTDsK
IAkJbWVtc2V0KHNjdHBfaWZucCwgMCwgc2l6ZW9mKHN0cnVjdCBzY3RwX2lmbikpOwogCQlzY3Rw
X2lmbnAtPmlmbl9pbmRleCA9IGlmbl9pbmRleDsKIAkJc2N0cF9pZm5wLT5pZm5fcCA9IGlmbjsK
QEAgLTYwOCwxMyArNjEwLDEyIEBAIHNjdHBfYWRkX2FkZHJfdG9fdnJmKHVpbnQzMl90IHZyZl9p
ZCwgdm9pZCAqaWZuLCB1aW50MzJfdCBpZm5faW5kZXgsCiAJCWF0b21pY19hZGRfaW50KCZ2cmYt
PnJlZmNvdW50LCAxKTsKIAkJc2N0cF9pZm5wLT5pZm5fbXR1ID0gU0NUUF9HQVRIRVJfTVRVX0ZS
T01fSUZOX0lORk8oaWZuLCBpZm5faW5kZXgsIGFkZHItPnNhX2ZhbWlseSk7CiAJCWlmIChpZl9u
YW1lICE9IE5VTEwpIHsKLQkJCXNucHJpbnRmKHNjdHBfaWZucC0+aWZuX25hbWUsIFNDVFBfSUZO
QU1TSVosICIlcyIsIGlmX25hbWUpOworCQkJU0NUUF9TTlBSSU5URihzY3RwX2lmbnAtPmlmbl9u
YW1lLCBTQ1RQX0lGTkFNU0laLCAiJXMiLCBpZl9uYW1lKTsKIAkJfSBlbHNlIHsKLQkJCXNucHJp
bnRmKHNjdHBfaWZucC0+aWZuX25hbWUsIFNDVFBfSUZOQU1TSVosICIlcyIsICJ1bmtub3duIik7
CisJCQlTQ1RQX1NOUFJJTlRGKHNjdHBfaWZucC0+aWZuX25hbWUsIFNDVFBfSUZOQU1TSVosICIl
cyIsICJ1bmtub3duIik7CiAJCX0KIAkJaGFzaF9pZm5faGVhZCA9ICZTQ1RQX0JBU0VfSU5GTyh2
cmZfaWZuX2hhc2gpWyhpZm5faW5kZXggJiBTQ1RQX0JBU0VfSU5GTyh2cmZfaWZuX2hhc2htYXJr
KSldOwogCQlMSVNUX0lOSVQoJnNjdHBfaWZucC0+aWZhbGlzdCk7Ci0JCVNDVFBfSVBJX0FERFJf
V0xPQ0soKTsKIAkJTElTVF9JTlNFUlRfSEVBRChoYXNoX2lmbl9oZWFkLCBzY3RwX2lmbnAsIG5l
eHRfYnVja2V0KTsKIAkJTElTVF9JTlNFUlRfSEVBRCgmdnJmLT5pZm5saXN0LCBzY3RwX2lmbnAs
IG5leHRfaWZuKTsKIAkJYXRvbWljX2FkZF9pbnQoJlNDVFBfQkFTRV9JTkZPKGlwaV9jb3VudF9p
Zm5zKSwgMSk7CkBAIC02NDEsNiArNjQyLDEwIEBAIHNjdHBfYWRkX2FkZHJfdG9fdnJmKHVpbnQz
Ml90IHZyZl9pZCwgdm9pZCAqaWZuLCB1aW50MzJfdCBpZm5faW5kZXgsCiAJCQl9CiAJCWV4aXRf
c3RhZ2VfbGVmdDoKIAkJCVNDVFBfSVBJX0FERFJfV1VOTE9DSygpOworCQkJaWYgKG5ld19zY3Rw
X2lmbnAgIT0gTlVMTCkgeworCQkJCVNDVFBfRlJFRShuZXdfc2N0cF9pZm5wLCBTQ1RQX01fSUZO
KTsKKwkJCX0KKwkJCVNDVFBfRlJFRShuZXdfc2N0cF9pZmFwLCBTQ1RQX01fSUZBKTsKIAkJCXJl
dHVybiAoc2N0cF9pZmFwKTsKIAkJfSBlbHNlIHsKIAkJCWlmIChzY3RwX2lmYXAtPmlmbl9wKSB7
CkBAIC02NjcsMTQgKzY3Miw3IEBAIHNjdHBfYWRkX2FkZHJfdG9fdnJmKHVpbnQzMl90IHZyZl9p
ZCwgdm9pZCAqaWZuLCB1aW50MzJfdCBpZm5faW5kZXgsCiAJCQlnb3RvIGV4aXRfc3RhZ2VfbGVm
dDsKIAkJfQogCX0KLQlTQ1RQX0lQSV9BRERSX1dVTkxPQ0soKTsKLQlTQ1RQX01BTExPQyhzY3Rw
X2lmYXAsIHN0cnVjdCBzY3RwX2lmYSAqLCBzaXplb2Yoc3RydWN0IHNjdHBfaWZhKSwgU0NUUF9N
X0lGQSk7Ci0JaWYgKHNjdHBfaWZhcCA9PSBOVUxMKSB7Ci0jaWZkZWYgSU5WQVJJQU5UUwotCQlw
YW5pYygiTm8gbWVtb3J5IGZvciBJRkEiKTsKLSNlbmRpZgotCQlyZXR1cm4gKE5VTEwpOwotCX0K
KwlzY3RwX2lmYXAgPSBuZXdfc2N0cF9pZmFwOwogCW1lbXNldChzY3RwX2lmYXAsIDAsIHNpemVv
ZihzdHJ1Y3Qgc2N0cF9pZmEpKTsKIAlzY3RwX2lmYXAtPmlmbl9wID0gc2N0cF9pZm5wOwogCWF0
b21pY19hZGRfaW50KCZzY3RwX2lmbnAtPnJlZmNvdW50LCAxKTsKQEAgLTc2Myw3ICs3NjEsNiBA
QCBzY3RwX2FkZF9hZGRyX3RvX3ZyZih1aW50MzJfdCB2cmZfaWQsIHZvaWQgKmlmbiwgdWludDMy
X3QgaWZuX2luZGV4LAogCSAgICAoc2N0cF9pZmFwLT5zcmNfaXNfbG9vcCA9PSAwKSkgewogCQlz
Y3RwX2lmYXAtPnNyY19pc19nbG9iID0gMTsKIAl9Ci0JU0NUUF9JUElfQUREUl9XTE9DSygpOwog
CWhhc2hfYWRkcl9oZWFkID0gJnZyZi0+dnJmX2FkZHJfaGFzaFsoaGFzaF9vZl9hZGRyICYgdnJm
LT52cmZfYWRkcl9oYXNobWFyayldOwogCUxJU1RfSU5TRVJUX0hFQUQoaGFzaF9hZGRyX2hlYWQs
IHNjdHBfaWZhcCwgbmV4dF9idWNrZXQpOwogCXNjdHBfaWZhcC0+cmVmY291bnQgPSAxOwpAQCAt
NzcyLDEwICs3NjksMTMgQEAgc2N0cF9hZGRfYWRkcl90b192cmYodWludDMyX3QgdnJmX2lkLCB2
b2lkICppZm4sIHVpbnQzMl90IGlmbl9pbmRleCwKIAl2cmYtPnRvdGFsX2lmYV9jb3VudCsrOwog
CWF0b21pY19hZGRfaW50KCZTQ1RQX0JBU0VfSU5GTyhpcGlfY291bnRfaWZhcyksIDEpOwogCWlm
IChuZXdfaWZuX2FmKSB7Ci0JCVNDVFBfUkVHSVNURVJfSU5URVJGQUNFKGlmbl9pbmRleCwgbmV3
X2lmbl9hZik7CiAJCXNjdHBfaWZucC0+cmVnaXN0ZXJlZF9hZiA9IG5ld19pZm5fYWY7CiAJfQog
CVNDVFBfSVBJX0FERFJfV1VOTE9DSygpOworCWlmIChuZXdfc2N0cF9pZm5wICE9IE5VTEwpIHsK
KwkJU0NUUF9GUkVFKG5ld19zY3RwX2lmbnAsIFNDVFBfTV9JRk4pOworCX0KKwogCWlmIChkeW5h
bWljX2FkZCkgewogCQkvKiBCdW1wIHVwIHRoZSByZWZjb3VudCBzbyB0aGF0IHdoZW4gdGhlIHRp
bWVyCiAJCSAqIGNvbXBsZXRlcyBpdCB3aWxsIGRyb3AgYmFjayBkb3duLgpAQCAtODQwLDggKzg0
MCw3IEBAIHNjdHBfZGVsX2FkZHJfZnJvbV92cmYodWludDMyX3QgdnJmX2lkLCBzdHJ1Y3Qgc29j
a2FkZHIgKmFkZHIsCiAJCQlpbnQgdmFsaWQgPSAwOwogCQkJLyotCiAJCQkgKiBUaGUgbmFtZSBo
YXMgcHJpb3JpdHkgb3ZlciB0aGUgaWZuX2luZGV4Ci0JCQkgKiBpZiBpdHMgZ2l2ZW4uIFdlIGRv
IHRoaXMgZXNwZWNpYWxseSBmb3IKLQkJCSAqIHBhbmRhIHdobyBtaWdodCByZWN5Y2xlIGluZGV4
ZXMgZmFzdC4KKwkJCSAqIGlmIGl0cyBnaXZlbi4KIAkJCSAqLwogCQkJaWYgKGlmX25hbWUpIHsK
IAkJCQlpZiAoc3RybmNtcChpZl9uYW1lLCBzY3RwX2lmYXAtPmlmbl9wLT5pZm5fbmFtZSwgU0NU
UF9JRk5BTVNJWikgPT0gMCkgewpAQCAtODY2LDcgKzg2NSw3IEBAIHNjdHBfZGVsX2FkZHJfZnJv
bV92cmYodWludDMyX3QgdnJmX2lkLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsCiAJCX0KIAkJU0NU
UERCRyhTQ1RQX0RFQlVHX1BDQjQsICJEZWxldGluZyBpZmEgJXBcbiIsICh2b2lkICopc2N0cF9p
ZmFwKTsKIAkJc2N0cF9pZmFwLT5sb2NhbGlmYV9mbGFncyAmPSBTQ1RQX0FERFJfVkFMSUQ7Ci0g
ICAgICAgICAgICAgICAgLyoKKwkJLyoKIAkJICogV2UgZG9uJ3Qgc2V0IHRoZSBmbGFnLiBUaGlz
IG1lYW5zIHRoYXQgdGhlIHN0cnVjdHVyZSB3aWxsCiAJCSAqIGhhbmcgYXJvdW5kIGluIEVQJ3Mg
dGhhdCBoYXZlIGJvdW5kIHNwZWNpZmljIHRvIGl0IHVudGlsCiAJCSAqIHRoZXkgY2xvc2UuIFRo
aXMgZ2l2ZXMgdXMgVENQIGxpa2UgYmVoYXZpb3IgaWYgc29tZW9uZQpAQCAtOTkyLDcgKzk5MSw3
IEBAIHNjdHBfZG9lc19zdGNiX293bl90aGlzX2FkZHIoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBz
dHJ1Y3Qgc29ja2FkZHIgKnRvKQogCQkJCQkJICAgIElONF9JU1BSSVZBVEVfQUREUkVTUygmc2lu
LT5zaW5fYWRkcikpIHsKIAkJCQkJCQljb250aW51ZTsKIAkJCQkJCX0KLSNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJCQkJCQlpZiAocHJpc29uX2NoZWNrX2lwNChzdGNiLT5zY3RwX2VwLT5pcF9pbnAu
aW5wLmlucF9jcmVkLAogCQkJCQkJICAgICAgICAgICAgICAgICAgICAgJnNpbi0+c2luX2FkZHIp
ICE9IDApIHsKIAkJCQkJCQljb250aW51ZTsKQEAgLTEwMTQsNyArMTAxMyw3IEBAIHNjdHBfZG9l
c19zdGNiX293bl90aGlzX2FkZHIoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc29ja2Fk
ZHIgKnRvKQogI2VuZGlmCiAJCQkJCQlzaW42ID0gJnNjdHBfaWZhLT5hZGRyZXNzLnNpbjY7CiAJ
CQkJCQlyc2luNiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopdG87Ci0jaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogCQkJCQkJaWYgKHByaXNvbl9jaGVja19pcDYoc3RjYi0+c2N0cF9lcC0+aXBfaW5wLmlu
cC5pbnBfY3JlZCwKIAkJCQkJCSAgICAgICAgICAgICAgICAgICAgICZzaW42LT5zaW42X2FkZHIp
ICE9IDApIHsKIAkJCQkJCQljb250aW51ZTsKQEAgLTEyMTksNyArMTIxOCw3IEBAIHNjdHBfdGNi
X3NwZWNpYWxfbG9jYXRlKHN0cnVjdCBzY3RwX2lucGNiICoqaW5wX3AsIHN0cnVjdCBzb2NrYWRk
ciAqZnJvbSwKIAkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKIAkJCWNvbnRpbnVlOwogCQl9Ci0j
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCQlzd2l0Y2ggKHRvLT5zYV9mYW1pbHkpIHsKICNpZmRlZiBJ
TkVUCiAJCWNhc2UgQUZfSU5FVDoKQEAgLTE5NjAsNyArMTk1OSw3IEBAIHNjdHBfZW5kcG9pbnRf
cHJvYmUoc3RydWN0IHNvY2thZGRyICpuYW0sIHN0cnVjdCBzY3RwcGNiaGVhZCAqaGVhZCwKIAkJ
CQkJU0NUUF9JTlBfUlVOTE9DSyhpbnApOwogCQkJCQljb250aW51ZTsKIAkJCQl9Ci0jaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogCQkJCWlmIChwcmlzb25fY2hlY2tfaXA0KGlucC0+aXBfaW5wLmlucC5p
bnBfY3JlZCwKIAkJCQkgICAgICAgICAgICAgICAgICAgICAmc2luLT5zaW5fYWRkcikgIT0gMCkg
ewogCQkJCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CkBAIC0xOTc2LDcgKzE5NzUsNyBAQCBzY3Rw
X2VuZHBvaW50X3Byb2JlKHN0cnVjdCBzb2NrYWRkciAqbmFtLCBzdHJ1Y3Qgc2N0cHBjYmhlYWQg
KmhlYWQsCiAJCQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKIAkJCQkJY29udGludWU7CiAJCQkJ
fQotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQlpZiAocHJpc29uX2NoZWNrX2lwNihpbnAtPmlw
X2lucC5pbnAuaW5wX2NyZWQsCiAJCQkJICAgICAgICAgICAgICAgICAgICAgJnNpbjYtPnNpbjZf
YWRkcikgIT0gMCkgewogCQkJCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CkBAIC0yMDkzLDcgKzIw
OTIsNyBAQCBzY3RwX2VuZHBvaW50X3Byb2JlKHN0cnVjdCBzb2NrYWRkciAqbmFtLCBzdHJ1Y3Qg
c2N0cHBjYmhlYWQgKmhlYWQsCiAJCQkJc3dpdGNoIChuYW0tPnNhX2ZhbWlseSkgewogI2lmZGVm
IElORVQKIAkJCQljYXNlIEFGX0lORVQ6Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVm
aW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJCWlmIChzaW4g
PT0gTlVMTCkgewogCQkJCQkJLyogVFNOSCAqLwogCQkJCQkJYnJlYWs7CkBAIC0yNzk5LDE3ICsy
Nzk4LDE3IEBAIHNjdHBfaW5wY2JfYWxsb2Moc3RydWN0IHNvY2tldCAqc28sIHVpbnQzMl90IHZy
Zl9pZCkKIAltZW1zZXQoaW5wLCAwLCBzaXplb2YoKmlucCkpOwogCiAJLyogYnVtcCBnZW5lcmF0
aW9ucyAqLwotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWlucC0+aXBfaW5wLmlucC5pbnBfc3RhdGUgPSBJ
TlBDQl9TVEFURV9JTlVTRTsKICNlbmRpZgogCS8qIHNldHVwIHNvY2tldCBwb2ludGVycyAqLwog
CWlucC0+c2N0cF9zb2NrZXQgPSBzbzsKIAlpbnAtPmlwX2lucC5pbnAuaW5wX3NvY2tldCA9IHNv
OwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlpbnAtPmlwX2lucC5pbnAuaW5wX2NyZWQgPSBjcmhv
bGQoc28tPnNvX2NyZWQpOwogI2VuZGlmCiAjaWZkZWYgSU5FVDYKLSNpZiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKSAmJiAhZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKSAmJiAhZGVmaW5lZChfV0lOMzIpCiAJaWYgKElOUF9TT0NLQUYoc28pID09IEFGX0lO
RVQ2KSB7CiAJCWlmIChNT0RVTEVfR0xPQkFMKGlwNl9hdXRvX2Zsb3dsYWJlbCkpIHsKIAkJCWlu
cC0+aXBfaW5wLmlucC5pbnBfZmxhZ3MgfD0gSU42UF9BVVRPRkxPV0xBQkVMOwpAQCAtMjgzNCw3
ICsyODMzLDcgQEAgc2N0cF9pbnBjYl9hbGxvYyhzdHJ1Y3Qgc29ja2V0ICpzbywgdWludDMyX3Qg
dnJmX2lkKQogCWlucC0+cGt0ZHJvcF9zdXBwb3J0ZWQgPSAodWludDhfdClTQ1RQX0JBU0VfU1lT
Q1RMKHNjdHBfcGt0ZHJvcF9lbmFibGUpOwogCWlucC0+aWRhdGFfc3VwcG9ydGVkID0gMDsKIAot
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlpbnAtPmZpYm51bSA9IHNvLT5zb19maWJudW07CiAjZWxz
ZQogCWlucC0+ZmlibnVtID0gMDsKQEAgLTI4NDgsNyArMjg0Nyw3IEBAIHNjdHBfaW5wY2JfYWxs
b2Moc3RydWN0IHNvY2tldCAqc28sIHVpbnQzMl90IHZyZl9pZCkKIAkvKiBpbml0IHRoZSBzbWFs
bCBoYXNoIHRhYmxlIHdlIHVzZSB0byB0cmFjayBhc29jaWQgPC0+IHRjYiAqLwogCWlucC0+c2N0
cF9hc29jaWRoYXNoID0gU0NUUF9IQVNIX0lOSVQoU0NUUF9TVEFDS19WVEFHX0hBU0hfU0laRSwg
JmlucC0+aGFzaGFzb2NpZG1hcmspOwogCWlmIChpbnAtPnNjdHBfYXNvY2lkaGFzaCA9PSBOVUxM
KSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQljcmZyZWUoaW5wLT5pcF9pbnAuaW5wLmlucF9j
cmVkKTsKICNlbmRpZgogCQlTQ1RQX1pPTkVfRlJFRShTQ1RQX0JBU0VfSU5GTyhpcGlfem9uZV9l
cCksIGlucCk7CkBAIC0yODYxLDEyICsyODYwLDcgQEAgc2N0cF9pbnBjYl9hbGxvYyhzdHJ1Y3Qg
c29ja2V0ICpzbywgdWludDMyX3QgdnJmX2lkKQogCiAJc28tPnNvX3BjYiA9IChjYWRkcl90KWlu
cDsKIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uIDwgODAz
MDAwCi0JaWYgKChTQ1RQX1NPX1RZUEUoc28pID09IFNPQ0tfREdSQU0pIHx8Ci0JICAgIChTQ1RQ
X1NPX1RZUEUoc28pID09IFNPQ0tfU0VRUEFDS0VUKSkgewotI2Vsc2UKIAlpZiAoU0NUUF9TT19U
WVBFKHNvKSA9PSBTT0NLX1NFUVBBQ0tFVCkgewotI2VuZGlmCiAJCS8qIFVEUCBzdHlsZSBzb2Nr
ZXQgKi8KIAkJaW5wLT5zY3RwX2ZsYWdzID0gKFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUgfAogCQkg
ICAgU0NUUF9QQ0JfRkxBR1NfVU5CT1VORCk7CkBAIC0yODgwLDE0ICsyODc0LDYgQEAgc2N0cF9p
bnBjYl9hbGxvYyhzdHJ1Y3Qgc29ja2V0ICpzbywgdWludDMyX3QgdnJmX2lkKQogCQlTT0NLX0xP
Q0soc28pOwogCQlTQ1RQX0NMRUFSX1NPX05CSU8oc28pOwogCQlTT0NLX1VOTE9DSyhzbyk7Ci0j
aWYgZGVmaW5lZChfX1BhbmRhX18pCi0JfSBlbHNlIGlmIChTQ1RQX1NPX1RZUEUoc28pID09IFNP
Q0tfRkFTVFNFUVBBQ0tFVCkgewotCQlpbnAtPnNjdHBfZmxhZ3MgPSAoU0NUUF9QQ0JfRkxBR1Nf
VURQVFlQRSB8Ci0JCSAgICBTQ1RQX1BDQl9GTEFHU19VTkJPVU5EKTsKLQl9IGVsc2UgaWYgKFND
VFBfU09fVFlQRShzbykgPT0gU09DS19GQVNUU1RSRUFNKSB7Ci0JCWlucC0+c2N0cF9mbGFncyA9
IChTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFIHwKLQkJICAgIFNDVFBfUENCX0ZMQUdTX1VOQk9VTkQp
OwotI2VuZGlmCiAJfSBlbHNlIHsKIAkJLyoKIAkJICogdW5zdXBwb3J0ZWQgc29ja2V0IHR5cGUg
KFJBVywgZXRjKS0gaW4gY2FzZSB3ZSBtaXNzZWQgaXQKQEAgLTI4OTUsNyArMjg4MSw3IEBAIHNj
dHBfaW5wY2JfYWxsb2Moc3RydWN0IHNvY2tldCAqc28sIHVpbnQzMl90IHZyZl9pZCkKIAkJICov
CiAJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9Q
Q0IsIEVPUE5PVFNVUFApOwogCQlzby0+c29fcGNiID0gTlVMTDsKLSNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAJCWNyZnJlZShpbnAtPmlwX2lucC5pbnAuaW5wX2NyZWQpOwogI2VuZGlmCiAJCVNDVFBf
Wk9ORV9GUkVFKFNDVFBfQkFTRV9JTkZPKGlwaV96b25lX2VwKSwgaW5wKTsKQEAgLTI5MTcsNyAr
MjkwMyw3IEBAIHNjdHBfaW5wY2JfYWxsb2Moc3RydWN0IHNvY2tldCAqc28sIHVpbnQzMl90IHZy
Zl9pZCkKIAkJU0NUUF9QUklOVEYoIk91dCBvZiBTQ1RQLUlOUENCLT5oYXNoaW5pdCAtIG5vIHJl
c291cmNlc1xuIik7CiAJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQ
X0ZST01fU0NUUF9QQ0IsIEVOT0JVRlMpOwogCQlzby0+c29fcGNiID0gTlVMTDsKLSNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAJCWNyZnJlZShpbnAtPmlwX2lucC5pbnAuaW5wX2NyZWQpOwogI2VuZGlm
CiAJCVNDVFBfWk9ORV9GUkVFKFNDVFBfQkFTRV9JTkZPKGlwaV96b25lX2VwKSwgaW5wKTsKQEAg
LTI5MzEsNyArMjkxNyw3IEBAIHNjdHBfaW5wY2JfYWxsb2Moc3RydWN0IHNvY2tldCAqc28sIHVp
bnQzMl90IHZyZl9pZCkKIAkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFND
VFBfRlJPTV9TQ1RQX1BDQiwgRU5PQlVGUyk7CiAJCXNvLT5zb19wY2IgPSBOVUxMOwogCQlTQ1RQ
X0hBU0hfRlJFRShpbnAtPnNjdHBfdGNiaGFzaCwgaW5wLT5zY3RwX2hhc2htYXJrKTsKLSNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiAJCWNyZnJlZShpbnAtPmlwX2lucC5pbnAuaW5wX2NyZWQpOwogI2Vu
ZGlmCiAJCVNDVFBfWk9ORV9GUkVFKFNDVFBfQkFTRV9JTkZPKGlwaV96b25lX2VwKSwgaW5wKTsK
QEAgLTI5NDIsNyArMjkyOCw3IEBAIHNjdHBfaW5wY2JfYWxsb2Moc3RydWN0IHNvY2tldCAqc28s
IHVpbnQzMl90IHZyZl9pZCkKICNlbmRpZgogCWlucC0+ZGVmX3ZyZl9pZCA9IHZyZl9pZDsKIAot
I2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogI2lmIGRlZmluZWQoQVBQTEVfTEVPUEFSRCkgfHwgZGVmaW5lZChB
UFBMRV9TTk9XTEVPUEFSRCkKIAlpbnAtPmlwX2lucC5pbnAuaW5wY2JfbXR4ID0gbGNrX210eF9h
bGxvY19pbml0KFNDVFBfQkFTRV9JTkZPKHNjdGJpbmZvKS5tdHhfZ3JwLCBTQ1RQX0JBU0VfSU5G
TyhzY3RiaW5mbykubXR4X2F0dHIpOwogCWlmIChpbnAtPmlwX2lucC5pbnAuaW5wY2JfbXR4ID09
IE5VTEwpIHsKQEAgLTI5NjUsNyArMjk1MSw3IEBAIHNjdHBfaW5wY2JfYWxsb2Moc3RydWN0IHNv
Y2tldCAqc28sIHVpbnQzMl90IHZyZl9pZCkKICNlbmRpZgogCVNDVFBfSU5QX0lORk9fV0xPQ0so
KTsKIAlTQ1RQX0lOUF9MT0NLX0lOSVQoaW5wKTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQor
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJSU5Q
X0xPQ0tfSU5JVCgmaW5wLT5pcF9pbnAuaW5wLCAiaW5wIiwgInNjdHBpbnAiKTsKICNlbmRpZgog
CVNDVFBfSU5QX1JFQURfSU5JVChpbnApOwpAQCAtMjk3NSw3ICsyOTYxLDcgQEAgc2N0cF9pbnBj
Yl9hbGxvYyhzdHJ1Y3Qgc29ja2V0ICpzbywgdWludDMyX3QgdnJmX2lkKQogCiAJLyogYWRkIGl0
IHRvIHRoZSBpbmZvIGFyZWEgKi8KIAlMSVNUX0lOU0VSVF9IRUFEKCZTQ1RQX0JBU0VfSU5GTyhs
aXN0aGVhZCksIGlucCwgc2N0cF9saXN0KTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBk
ZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlpbnAtPmlwX2lu
cC5pbnAuaW5wX3BjYmluZm8gPSAmU0NUUF9CQVNFX0lORk8oc2N0YmluZm8pOwogI2lmIGRlZmlu
ZWQoQVBQTEVfTEVPUEFSRCkgfHwgZGVmaW5lZChBUFBMRV9TTk9XTEVPUEFSRCkgfHwgZGVmaW5l
ZChBUFBMRV9MSU9OKSB8fCBkZWZpbmVkKEFQUExFX01PVU5UQUlOTElPTikKIAlMSVNUX0lOU0VS
VF9IRUFEKFNDVFBfQkFTRV9JTkZPKHNjdGJpbmZvKS5saXN0aGVhZCwgJmlucC0+aXBfaW5wLmlu
cCwgaW5wX2xpc3QpOwpAQCAtMzAwMiwxMyArMjk4OCwxMyBAQCBzY3RwX2lucGNiX2FsbG9jKHN0
cnVjdCBzb2NrZXQgKnNvLCB1aW50MzJfdCB2cmZfaWQpCiAJbSA9ICZpbnAtPnNjdHBfZXA7CiAK
IAkvKiBzZXR1cCB0aGUgYmFzZSB0aW1lb3V0IGluZm9ybWF0aW9uICovCi0JbS0+c2N0cF90aW1l
b3V0dGlja3NbU0NUUF9USU1FUl9TRU5EXSA9IFNFQ19UT19USUNLUyhTQ1RQX1NFTkRfU0VDKTsJ
LyogbmVlZGVkID8gKi8KLQltLT5zY3RwX3RpbWVvdXR0aWNrc1tTQ1RQX1RJTUVSX0lOSVRdID0g
U0VDX1RPX1RJQ0tTKFNDVFBfSU5JVF9TRUMpOwkvKiBuZWVkZWQgPyAqLwotCW0tPnNjdHBfdGlt
ZW91dHRpY2tzW1NDVFBfVElNRVJfUkVDVl0gPSBNU0VDX1RPX1RJQ0tTKFNDVFBfQkFTRV9TWVND
VEwoc2N0cF9kZWxheWVkX3NhY2tfdGltZV9kZWZhdWx0KSk7Ci0JbS0+c2N0cF90aW1lb3V0dGlj
a3NbU0NUUF9USU1FUl9IRUFSVEJFQVRdID0gTVNFQ19UT19USUNLUyhTQ1RQX0JBU0VfU1lTQ1RM
KHNjdHBfaGVhcnRiZWF0X2ludGVydmFsX2RlZmF1bHQpKTsKLQltLT5zY3RwX3RpbWVvdXR0aWNr
c1tTQ1RQX1RJTUVSX1BNVFVdID0gU0VDX1RPX1RJQ0tTKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9w
bXR1X3JhaXNlX3RpbWVfZGVmYXVsdCkpOwotCW0tPnNjdHBfdGltZW91dHRpY2tzW1NDVFBfVElN
RVJfTUFYU0hVVERPV05dID0gU0VDX1RPX1RJQ0tTKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9zaHV0
ZG93bl9ndWFyZF90aW1lX2RlZmF1bHQpKTsKLQltLT5zY3RwX3RpbWVvdXR0aWNrc1tTQ1RQX1RJ
TUVSX1NJR05BVFVSRV0gPSBTRUNfVE9fVElDS1MoU0NUUF9CQVNFX1NZU0NUTChzY3RwX3NlY3Jl
dF9saWZldGltZV9kZWZhdWx0KSk7CisJbS0+c2N0cF90aW1lb3V0dGlja3NbU0NUUF9USU1FUl9T
RU5EXSA9IHNjdHBfc2Vjc190b190aWNrcyhTQ1RQX1NFTkRfU0VDKTsJLyogbmVlZGVkID8gKi8K
KwltLT5zY3RwX3RpbWVvdXR0aWNrc1tTQ1RQX1RJTUVSX0lOSVRdID0gc2N0cF9zZWNzX3RvX3Rp
Y2tzKFNDVFBfSU5JVF9TRUMpOwkvKiBuZWVkZWQgPyAqLworCW0tPnNjdHBfdGltZW91dHRpY2tz
W1NDVFBfVElNRVJfUkVDVl0gPSBzY3RwX21zZWNzX3RvX3RpY2tzKFNDVFBfQkFTRV9TWVNDVEwo
c2N0cF9kZWxheWVkX3NhY2tfdGltZV9kZWZhdWx0KSk7CisJbS0+c2N0cF90aW1lb3V0dGlja3Nb
U0NUUF9USU1FUl9IRUFSVEJFQVRdID0gc2N0cF9tc2Vjc190b190aWNrcyhTQ1RQX0JBU0VfU1lT
Q1RMKHNjdHBfaGVhcnRiZWF0X2ludGVydmFsX2RlZmF1bHQpKTsKKwltLT5zY3RwX3RpbWVvdXR0
aWNrc1tTQ1RQX1RJTUVSX1BNVFVdID0gc2N0cF9zZWNzX3RvX3RpY2tzKFNDVFBfQkFTRV9TWVND
VEwoc2N0cF9wbXR1X3JhaXNlX3RpbWVfZGVmYXVsdCkpOworCW0tPnNjdHBfdGltZW91dHRpY2tz
W1NDVFBfVElNRVJfTUFYU0hVVERPV05dID0gc2N0cF9zZWNzX3RvX3RpY2tzKFNDVFBfQkFTRV9T
WVNDVEwoc2N0cF9zaHV0ZG93bl9ndWFyZF90aW1lX2RlZmF1bHQpKTsKKwltLT5zY3RwX3RpbWVv
dXR0aWNrc1tTQ1RQX1RJTUVSX1NJR05BVFVSRV0gPSBzY3RwX3NlY3NfdG9fdGlja3MoU0NUUF9C
QVNFX1NZU0NUTChzY3RwX3NlY3JldF9saWZldGltZV9kZWZhdWx0KSk7CiAJLyogYWxsIG1heC9t
aW4gbWF4IGFyZSBpbiBtcyAqLwogCW0tPnNjdHBfbWF4cnRvID0gU0NUUF9CQVNFX1NZU0NUTChz
Y3RwX3J0b19tYXhfZGVmYXVsdCk7CiAJbS0+c2N0cF9taW5ydG8gPSBTQ1RQX0JBU0VfU1lTQ1RM
KHNjdHBfcnRvX21pbl9kZWZhdWx0KTsKQEAgLTMwNTYsNyArMzA0Miw3IEBAIHNjdHBfaW5wY2Jf
YWxsb2Moc3RydWN0IHNvY2tldCAqc28sIHVpbnQzMl90IHZyZl9pZCkKIAlzY3RwX3RpbWVyX3N0
YXJ0KFNDVFBfVElNRVJfVFlQRV9ORVdDT09LSUUsIGlucCwgTlVMTCwgTlVMTCk7CiAKIAkvKiBI
b3cgbG9uZyBpcyBhIGNvb2tpZSBnb29kIGZvciA/ICovCi0JbS0+ZGVmX2Nvb2tpZV9saWZlID0g
TVNFQ19UT19USUNLUyhTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfdmFsaWRfY29va2llX2xpZmVfZGVm
YXVsdCkpOworCW0tPmRlZl9jb29raWVfbGlmZSA9IHNjdHBfbXNlY3NfdG9fdGlja3MoU0NUUF9C
QVNFX1NZU0NUTChzY3RwX3ZhbGlkX2Nvb2tpZV9saWZlX2RlZmF1bHQpKTsKIAkvKgogCSAqIElu
aXRpYWxpemUgYXV0aGVudGljYXRpb24gcGFyYW1ldGVycwogCSAqLwpAQCAtMzE4MCwyNCArMzE2
Niw1NCBAQCBzY3RwX21vdmVfcGNiX2FuZF9hc3NvYyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqb2xkX2lu
cCwgc3RydWN0IHNjdHBfaW5wY2IgKm5ld19pbnAsCiAJCQl9CiAJCX0KIAl9Ci0JLyogTm93IGFu
eSBydW5uaW5nIHRpbWVycyBuZWVkIHRvIGJlIGFkanVzdGVkCi0JICogc2luY2Ugd2UgcmVhbGx5
IGRvbid0IGNhcmUgaWYgdGhleSBhcmUgcnVubmluZwotCSAqIG9yIG5vdCBqdXN0IGJsYXN0IGlu
IHRoZSBuZXdfaW5wIGludG8gYWxsIG9mCi0JICogdGhlbS4KLQkgKi8KLQotCXN0Y2ItPmFzb2Mu
ZGFja190aW1lci5lcCA9ICh2b2lkICopbmV3X2lucDsKLQlzdGNiLT5hc29jLmFzY29uZl90aW1l
ci5lcCA9ICh2b2lkICopbmV3X2lucDsKLQlzdGNiLT5hc29jLnN0cnJlc2V0X3RpbWVyLmVwID0g
KHZvaWQgKiluZXdfaW5wOwotCXN0Y2ItPmFzb2Muc2h1dF9ndWFyZF90aW1lci5lcCA9ICh2b2lk
ICopbmV3X2lucDsKLQlzdGNiLT5hc29jLmF1dG9jbG9zZV90aW1lci5lcCA9ICh2b2lkICopbmV3
X2lucDsKLQlzdGNiLT5hc29jLmRlbGF5ZWRfZXZlbnRfdGltZXIuZXAgPSAodm9pZCAqKW5ld19p
bnA7Ci0Jc3RjYi0+YXNvYy5kZWxldGVfcHJpbV90aW1lci5lcCA9ICh2b2lkICopbmV3X2lucDsK
KwkvKiBOb3cgYW55IHJ1bm5pbmcgdGltZXJzIG5lZWQgdG8gYmUgYWRqdXN0ZWQuICovCisJaWYg
KHN0Y2ItPmFzb2MuZGFja190aW1lci5lcCA9PSBvbGRfaW5wKSB7CisJCVNDVFBfSU5QX0RFQ1Jf
UkVGKG9sZF9pbnApOworCQlzdGNiLT5hc29jLmRhY2tfdGltZXIuZXAgPSBuZXdfaW5wOworCQlT
Q1RQX0lOUF9JTkNSX1JFRihuZXdfaW5wKTsKKwl9CisJaWYgKHN0Y2ItPmFzb2MuYXNjb25mX3Rp
bWVyLmVwID09IG9sZF9pbnApIHsKKwkJU0NUUF9JTlBfREVDUl9SRUYob2xkX2lucCk7CisJCXN0
Y2ItPmFzb2MuYXNjb25mX3RpbWVyLmVwID0gbmV3X2lucDsKKwkJU0NUUF9JTlBfSU5DUl9SRUYo
bmV3X2lucCk7CisJfQorCWlmIChzdGNiLT5hc29jLnN0cnJlc2V0X3RpbWVyLmVwID09IG9sZF9p
bnApIHsKKwkJU0NUUF9JTlBfREVDUl9SRUYob2xkX2lucCk7CisJCXN0Y2ItPmFzb2Muc3RycmVz
ZXRfdGltZXIuZXAgPSBuZXdfaW5wOworCQlTQ1RQX0lOUF9JTkNSX1JFRihuZXdfaW5wKTsKKwl9
CisJaWYgKHN0Y2ItPmFzb2Muc2h1dF9ndWFyZF90aW1lci5lcCA9PSBvbGRfaW5wKSB7CisJCVND
VFBfSU5QX0RFQ1JfUkVGKG9sZF9pbnApOworCQlzdGNiLT5hc29jLnNodXRfZ3VhcmRfdGltZXIu
ZXAgPSBuZXdfaW5wOworCQlTQ1RQX0lOUF9JTkNSX1JFRihuZXdfaW5wKTsKKwl9CisJaWYgKHN0
Y2ItPmFzb2MuYXV0b2Nsb3NlX3RpbWVyLmVwID09IG9sZF9pbnApIHsKKwkJU0NUUF9JTlBfREVD
Ul9SRUYob2xkX2lucCk7CisJCXN0Y2ItPmFzb2MuYXV0b2Nsb3NlX3RpbWVyLmVwID0gbmV3X2lu
cDsKKwkJU0NUUF9JTlBfSU5DUl9SRUYobmV3X2lucCk7CisJfQorCWlmIChzdGNiLT5hc29jLmRl
bGV0ZV9wcmltX3RpbWVyLmVwID09IG9sZF9pbnApIHsKKwkJU0NUUF9JTlBfREVDUl9SRUYob2xk
X2lucCk7CisJCXN0Y2ItPmFzb2MuZGVsZXRlX3ByaW1fdGltZXIuZXAgPSBuZXdfaW5wOworCQlT
Q1RQX0lOUF9JTkNSX1JFRihuZXdfaW5wKTsKKwl9CiAJLyogbm93IHdoYXQgYWJvdXQgdGhlIG5l
dHM/ICovCiAJVEFJTFFfRk9SRUFDSChuZXQsICZzdGNiLT5hc29jLm5ldHMsIHNjdHBfbmV4dCkg
ewotCQluZXQtPnBtdHVfdGltZXIuZXAgPSAodm9pZCAqKW5ld19pbnA7Ci0JCW5ldC0+aGJfdGlt
ZXIuZXAgPSAodm9pZCAqKW5ld19pbnA7Ci0JCW5ldC0+cnh0X3RpbWVyLmVwID0gKHZvaWQgKilu
ZXdfaW5wOworCQlpZiAobmV0LT5wbXR1X3RpbWVyLmVwID09IG9sZF9pbnApIHsKKwkJCVNDVFBf
SU5QX0RFQ1JfUkVGKG9sZF9pbnApOworCQkJbmV0LT5wbXR1X3RpbWVyLmVwID0gbmV3X2lucDsK
KwkJCVNDVFBfSU5QX0lOQ1JfUkVGKG5ld19pbnApOworCQl9CisJCWlmIChuZXQtPmhiX3RpbWVy
LmVwID09IG9sZF9pbnApIHsKKwkJCVNDVFBfSU5QX0RFQ1JfUkVGKG9sZF9pbnApOworCQkJbmV0
LT5oYl90aW1lci5lcCA9IG5ld19pbnA7CisJCQlTQ1RQX0lOUF9JTkNSX1JFRihuZXdfaW5wKTsK
KwkJfQorCQlpZiAobmV0LT5yeHRfdGltZXIuZXAgPT0gb2xkX2lucCkgeworCQkJU0NUUF9JTlBf
REVDUl9SRUYob2xkX2lucCk7CisJCQluZXQtPnJ4dF90aW1lci5lcCA9IG5ld19pbnA7CisJCQlT
Q1RQX0lOUF9JTkNSX1JFRihuZXdfaW5wKTsKKwkJfQogCX0KIAlTQ1RQX0lOUF9XVU5MT0NLKG5l
d19pbnApOwogCVNDVFBfSU5QX1dVTkxPQ0sob2xkX2lucCk7CkBAIC0zMjU0LDEwICszMjcwLDEw
IEBAIGV4dGVybiB2b2lkIGluNl9zaW42XzJfc2luKHN0cnVjdCBzb2NrYWRkcl9pbiAqLCBzdHJ1
Y3Qgc29ja2FkZHJfaW42ICpzaW42KTsKIAogLyogc2N0cF9pZmFwIGlzIHVzZWQgdG8gYnlwYXNz
IG5vcm1hbCBsb2NhbCBhZGRyZXNzIHZhbGlkYXRpb24gY2hlY2tzICovCiBpbnQKLSNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMDAKKyNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogc2N0cF9pbnBjYl9i
aW5kKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsCiAgICAgICAgICAg
ICAgICAgc3RydWN0IHNjdHBfaWZhICpzY3RwX2lmYXAsIHN0cnVjdCB0aHJlYWQgKnApCi0jZWxp
ZiBkZWZpbmVkKF9fV2luZG93c19fKQorI2VsaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiBzY3RwX2lucGNiX2JpbmQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVj
dCBzb2NrYWRkciAqYWRkciwKICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2N0cF9pZmEgKnNjdHBf
aWZhcCwgUEtUSFJFQUQgcCkKICNlbHNlCkBAIC0zMjY4LDcgKzMyODQsNyBAQCBzY3RwX2lucGNi
X2JpbmQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqYWRkciwKIAkvKiBiaW5k
IGEgZXAgdG8gYSBzb2NrZXQgYWRkcmVzcyAqLwogCXN0cnVjdCBzY3RwcGNiaGVhZCAqaGVhZDsK
IAlzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCAqaW5wX3RtcDsKLSNpZiBkZWZpbmVkKElORVQpIHx8
IChkZWZpbmVkKElORVQ2KSAmJiBkZWZpbmVkKF9fQVBQTEVfXykpIHx8IGRlZmluZWQoX19GcmVl
QlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKQorI2lmIChkZWZpbmVkKF9fRnJlZUJTRF9fKSB8
fCBkZWZpbmVkKF9fQVBQTEVfXykpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJc3RydWN0
IGlucGNiICppcF9pbnA7CiAjZW5kaWYKIAlpbnQgcG9ydF9yZXVzZV9hY3RpdmUgPSAwOwpAQCAt
MzI4Myw3ICszMjk5LDcgQEAgc2N0cF9pbnBjYl9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1
Y3Qgc29ja2FkZHIgKmFkZHIsCiAJbHBvcnQgPSAwOwogCWJpbmRhbGwgPSAxOwogCWlucCA9IChz
dHJ1Y3Qgc2N0cF9pbnBjYiAqKXNvLT5zb19wY2I7Ci0jaWYgZGVmaW5lZChJTkVUKSB8fCAoZGVm
aW5lZChJTkVUNikgJiYgZGVmaW5lZChfX0FQUExFX18pKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9f
KSB8fCBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVm
aW5lZChfX0FQUExFX18pKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWlwX2lucCA9IChz
dHJ1Y3QgaW5wY2IgKilzby0+c29fcGNiOwogI2VuZGlmCiAjaWZkZWYgU0NUUF9ERUJVRwpAQCAt
MzI5OSw3ICszMzE1LDcgQEAgc2N0cF9pbnBjYl9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1
Y3Qgc29ja2FkZHIgKmFkZHIsCiAJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxM
LCBTQ1RQX0ZST01fU0NUUF9QQ0IsIEVJTlZBTCk7CiAJCXJldHVybiAoRUlOVkFMKTsKIAl9Ci0j
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMDAwCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZmRl
ZiBJTlZBUklBTlRTCiAJaWYgKHAgPT0gTlVMTCkKIAkJcGFuaWMoIm51bGwgcHJvYy90aHJlYWQi
KTsKQEAgLTMzMTMsNyArMzMyOSw3IEBAIHNjdHBfaW5wY2JfYmluZChzdHJ1Y3Qgc29ja2V0ICpz
bywgc3RydWN0IHNvY2thZGRyICphZGRyLAogCQkJc3RydWN0IHNvY2thZGRyX2luICpzaW47CiAK
IAkJCS8qIElQVjZfVjZPTkxZIHNvY2tldD8gKi8KLQkJCWlmIChTQ1RQX0lQVjZfVjZPTkxZKGlw
X2lucCkpIHsKKwkJCWlmIChTQ1RQX0lQVjZfVjZPTkxZKGlucCkpIHsKIAkJCQlTQ1RQX0xUUkFD
RV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfUENCLCBFSU5WQUwpOwog
CQkJCXJldHVybiAoRUlOVkFMKTsKIAkJCX0KQEAgLTMzMjYsNyArMzM0Miw3IEBAIHNjdHBfaW5w
Y2JfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRyLAogCiAJCQlz
aW4gPSAoc3RydWN0IHNvY2thZGRyX2luICopYWRkcjsKIAkJCWxwb3J0ID0gc2luLT5zaW5fcG9y
dDsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDAw
MDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
CQkJLyoKIAkJCSAqIEZvciBMT09QQkFDSyB0aGUgcHJpc29uX2xvY2FsX2lwNCgpIGNhbGwgd2ls
bCB0cmFuc211dGUgdGhlIGlwIGFkZHJlc3MKIAkJCSAqIHRvIHRoZSBwcm9wZXIgdmFsdWUuCkBA
IC0zMzU3LDcgKzMzNzMsNyBAQCBzY3RwX2lucGNiX2JpbmQoc3RydWN0IHNvY2tldCAqc28sIHN0
cnVjdCBzb2NrYWRkciAqYWRkciwKIAkJCX0KICNlbmRpZgogCQkJbHBvcnQgPSBzaW42LT5zaW42
X3BvcnQ7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0g
ODAwMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKIAkJCS8qCiAJCQkgKiBGb3IgTE9PUEJBQ0sgdGhlIHByaXNvbl9sb2NhbF9pcDYoKSBjYWxs
IHdpbGwgdHJhbnNtdXRlIHRoZSBpcHY2IGFkZHJlc3MKIAkJCSAqIHRvIHRoZSBwcm9wZXIgdmFs
dWUuCkBAIC0zMzc3LDcgKzMzOTMsNyBAQCBzY3RwX2lucGNiX2JpbmQoc3RydWN0IHNvY2tldCAq
c28sIHN0cnVjdCBzb2NrYWRkciAqYWRkciwKIAkJCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAs
IE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1BDQiwgRUlOVkFMKTsKIAkJCQkJcmV0dXJuIChF
SU5WQUwpOwogCQkJCX0KLSNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQorI2VsaWYgZGVmaW5lZChf
X0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaWYgZGVmaW5lZChBUFBMRV9M
RU9QQVJEKSB8fCBkZWZpbmVkKEFQUExFX1NOT1dMRU9QQVJEKQogCQkJCWlmIChpbjZfZW1iZWRz
Y29wZSgmc2luNi0+c2luNl9hZGRyLCBzaW42LCBpcF9pbnAsIE5VTEwpICE9IDApIHsKICNlbHNl
CkBAIC0zMzg2LDcgKzM0MDIsNyBAQCBzY3RwX2lucGNiX2JpbmQoc3RydWN0IHNvY2tldCAqc28s
IHN0cnVjdCBzb2NrYWRkciAqYWRkciwKIAkJCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5V
TEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1BDQiwgRUlOVkFMKTsKIAkJCQkJcmV0dXJuIChFSU5W
QUwpOwogCQkJCX0KLSNlbGlmIGRlZmluZWQoX19GcmVlQlNEX18pCisjZWxpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCWVycm9yID0gc2NvcGU2
X2NoZWNrX2lkKHNpbjYsIE1PRFVMRV9HTE9CQUwoaXA2X3VzZV9kZWZ6b25lKSk7CiAJCQkJaWYg
KGVycm9yICE9IDApIHsKIAkJCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEws
IFNDVFBfRlJPTV9TQ1RQX1BDQiwgZXJyb3IpOwpAQCAtMzQ0NCwxOCArMzQ2MCwxMiBAQCBzY3Rw
X2lucGNiX2JpbmQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqYWRkciwKIAkJ
ICogYWxyZWFkeSBoYXMgdGhpcyBvbmUgYm91bmQuCiAJCSAqLwogCQkvKiBnb3QgdG8gYmUgcm9v
dCB0byBnZXQgYXQgbG93IHBvcnRzICovCi0jaWYgIWRlZmluZWQoX19XaW5kb3dzX18pCisjaWYg
IShkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAJCWlmIChudG9o
cyhscG9ydCkgPCBJUFBPUlRfUkVTRVJWRUQpIHsKIAkJCWlmICgocCAhPSBOVUxMKSAmJiAoKGVy
cm9yID0KLSNpZmRlZiBfX0ZyZWVCU0RfXwotI2lmIF9fRnJlZUJTRF92ZXJzaW9uID4gNjAyMDAw
CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJ
CQkgIHByaXZfY2hlY2socCwgUFJJVl9ORVRJTkVUX1JFU0VSVkVEUE9SVCkKLSNlbGlmIF9fRnJl
ZUJTRF92ZXJzaW9uID49IDUwMDAwMAotCQkJCSAgc3VzZXJfY3JlZChwLT50ZF91Y3JlZCwgMCkK
LSNlbHNlCi0JCQkJICBzdXNlcihwKQotI2VuZGlmCi0jZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykK
KyNlbGlmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJ
CSAgc3VzZXIocC0+cF91Y3JlZCwgJnAtPnBfYWNmbGFnKQogI2VsaWYgZGVmaW5lZChfX1VzZXJz
cGFjZV9fKSAvKiBtdXN0IGJlIHRydWUgdG8gdXNlIHJhdyBzb2NrZXQgKi8KIAkJCQkgIDEKQEAg
LTM0NjgsMTcgKzM0NzgsOCBAQCBzY3RwX2lucGNiX2JpbmQoc3RydWN0IHNvY2tldCAqc28sIHN0
cnVjdCBzb2NrYWRkciAqYWRkciwKIAkJCQlTQ1RQX0lOUF9JTkZPX1dVTkxPQ0soKTsKIAkJCQly
ZXR1cm4gKGVycm9yKTsKIAkJCX0KLSNpZiBkZWZpbmVkKF9fUGFuZGFfXykKLQkJCWlmICghU0NU
UF9JU19QUklWSUxFREdFRChzbykpIHsKLQkJCQlTQ1RQX0lOUF9ERUNSX1JFRihpbnApOwotCQkJ
CVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsKLQkJCQlTQ1RQX0lOUF9JTkZPX1dVTkxPQ0soKTsKLQkJ
CQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfUENC
LCBFQUNDRVMpOwotCQkJCXJldHVybiAoRUFDQ0VTKTsKLQkJCX0KLSNlbmRpZgogCQl9Ci0jZW5k
aWYgLyogX19XaW5kb3dzX18gKi8KKyNlbmRpZgogCQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7CiAJ
CWlmIChiaW5kYWxsKSB7CiAjaWZkZWYgU0NUUF9NVlJGCkBAIC0zNTYxLDI2ICszNTYyLDIwIEBA
IHNjdHBfaW5wY2JfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRy
LAogCQl1aW50MTZfdCBjb3VudDsKIAkJaW50IGRvbmU7CiAKLSNpZiBkZWZpbmVkKF9fV2luZG93
c19fKQorI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlm
aXJzdCA9IDE7CiAJCWxhc3QgPSAweGZmZmY7CiAjZWxzZQogI2lmIGRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKIAkJLyogVE9ETyBlbnN1cmUgdWlkIGlzIDAsIGV0Yy4uLiAqLwotI2VsaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pCisjZWxpZiAoZGVmaW5lZChfX0Zy
ZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCQlpZiAoaXBfaW5wLT5pbnBfZmxhZ3MgJiBJTlBfSElHSFBPUlQpIHsKIAkJCWZpcnN0ID0g
TU9EVUxFX0dMT0JBTChpcHBvcnRfaGlmaXJzdGF1dG8pOwogCQkJbGFzdCA9IE1PRFVMRV9HTE9C
QUwoaXBwb3J0X2hpbGFzdGF1dG8pOwogCQl9IGVsc2UgaWYgKGlwX2lucC0+aW5wX2ZsYWdzICYg
SU5QX0xPV1BPUlQpIHsKIAkJCWlmIChwICYmIChlcnJvciA9Ci0jaWZkZWYgX19GcmVlQlNEX18K
LSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDYwMjAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
CiAJCQkJICBwcml2X2NoZWNrKHAsIFBSSVZfTkVUSU5FVF9SRVNFUlZFRFBPUlQpCi0jZWxpZiBf
X0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMDAKLQkJCQkgIHN1c2VyX2NyZWQocC0+dGRfdWNyZWQs
IDApCi0jZWxzZQotCQkJCSAgc3VzZXIocCkKLSNlbmRpZgogI2VsaWYgZGVmaW5lZChfX0FQUExF
X18pCiAJCQkJICBzdXNlcihwLT5wX3VjcmVkLCAmcC0+cF9hY2ZsYWcpCiAjZWxzZQpAQCAtMzU5
OSwxMCArMzU5NCwxMCBAQCBzY3RwX2lucGNiX2JpbmQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVj
dCBzb2NrYWRkciAqYWRkciwKICNlbmRpZgogCQkJZmlyc3QgPSBNT0RVTEVfR0xPQkFMKGlwcG9y
dF9maXJzdGF1dG8pOwogCQkJbGFzdCA9IE1PRFVMRV9HTE9CQUwoaXBwb3J0X2xhc3RhdXRvKTsK
LSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiAoZGVm
aW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogCQl9CiAjZW5kaWYKLSNlbmRpZiAvKiBfX1dpbmRvd3NfXyAqLworI2VuZGlm
CiAJCWlmIChmaXJzdCA+IGxhc3QpIHsKIAkJCXVpbnQxNl90IHRlbXA7CiAKQEAgLTM3NDEsNyAr
MzczNiw3IEBAIHNjdHBfaW5wY2JfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2th
ZGRyICphZGRyLAogCQl9IGVsc2UgewogCQkJLyogTm90ZSBmb3IgQlNEIHdlIGhpdCBoZXJlIGFs
d2F5cyBvdGhlcgogCQkJICogTy9TJ3Mgd2lsbCBwYXNzIHRoaW5ncyBpbiB2aWEgdGhlCi0JCQkg
KiBzY3RwX2lmYXAgYXJndW1lbnQgKFBhbmRhKS4KKwkJCSAqIHNjdHBfaWZhcCBhcmd1bWVudC4K
IAkJCSAqLwogCQkJaWZhID0gc2N0cF9maW5kX2lmYV9ieV9hZGRyKCZzdG9yZS5zYSwKIAkJCQkJ
CSAgICB2cmZfaWQsIFNDVFBfQUREUl9OT1RfTE9DS0VEKTsKQEAgLTM4MTQsNyArMzgwOSw3IEBA
IHNjdHBfaXRlcmF0b3JfaW5wX2JlaW5nX2ZyZWVkKHN0cnVjdCBzY3RwX2lucGNiICppbnApCiAJ
ICogbG9jayBvbiB0aGUgaW5wX2luZm8gc3R1ZmYuCiAJICovCiAJaXQgPSBzY3RwX2l0X2N0bC5j
dXJfaXQ7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0g
ODAxMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKIAlpZiAoaXQgJiYgKGl0LT52biAhPSBjdXJ2bmV0KSkgewogCQkvKiBJdHMgbm90IGxvb2tp
bmcgYXQgb3VyIFZORVQgKi8KIAkJcmV0dXJuOwpAQCAtMzg0NSw3ICszODQwLDcgQEAgc2N0cF9p
dGVyYXRvcl9pbnBfYmVpbmdfZnJlZWQoc3RydWN0IHNjdHBfaW5wY2IgKmlucCkKIAkgKi8KIAlT
Q1RQX0lQSV9JVEVSQVRPUl9XUV9MT0NLKCk7CiAJVEFJTFFfRk9SRUFDSF9TQUZFKGl0LCAmc2N0
cF9pdF9jdGwuaXRlcmF0b3JoZWFkLCBzY3RwX254dF9pdHIsIG5pdCkgewotI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMTAwMAorI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCWlmIChpdC0+dm4gIT0g
Y3Vydm5ldCkgewogCQkJY29udGludWU7CiAJCX0KQEAgLTM4OTEsOCArMzg4Niw4IEBAIHNjdHBf
aW5wY2JfZnJlZShzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBpbnQgaW1tZWRpYXRlLCBpbnQgZnJv
bSkKIAlzdHJ1Y3Qgc29ja2V0ICpzbzsKIAlpbnQgYmVpbmdfcmVmZWQgPSAwOwogCXN0cnVjdCBz
Y3RwX3F1ZXVlZF90b19yZWFkICpzcSwgKm5zcTsKLSNpZiAhZGVmaW5lZChfX1BhbmRhX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi0jaWYgIWRlZmluZWQoX19GcmVlQlNEX18pIHx8IF9f
RnJlZUJTRF92ZXJzaW9uIDwgNTAwMDAwCisjaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNp
ZiAhZGVmaW5lZChfX0ZyZWVCU0RfXykKIAlzY3RwX3J0ZW50cnlfdCAqcnQ7CiAjZW5kaWYKICNl
bmRpZgpAQCAtMzkwMCw3ICszODk1LDcgQEAgc2N0cF9pbnBjYl9mcmVlKHN0cnVjdCBzY3RwX2lu
cGNiICppbnAsIGludCBpbW1lZGlhdGUsIGludCBmcm9tKQogCXNjdHBfc2hhcmVka2V5X3QgKnNo
YXJlZF9rZXksICpuc2hhcmVkX2tleTsKIAogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYg
ZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJc2N0cF9sb2Nr
X2Fzc2VydChTQ1RQX0lOUF9TTyhpbnApKTsKICNlbmRpZgogI2lmZGVmIFNDVFBfTE9HX0NMT1NJ
TkcKQEAgLTM5MzMsNyArMzkyOCw3IEBAIHNjdHBfaW5wY2JfZnJlZShzdHJ1Y3Qgc2N0cF9pbnBj
YiAqaW5wLCBpbnQgaW1tZWRpYXRlLCBpbnQgZnJvbSkKIAl9CiAJLyogRmlyc3QgdGltZSB0aHJv
dWdoIHdlIGhhdmUgdGhlIHNvY2tldCBsb2NrLCBhZnRlciB0aGF0IG5vIG1vcmUuICovCiAJc2N0
cF90aW1lcl9zdG9wKFNDVFBfVElNRVJfVFlQRV9ORVdDT09LSUUsIGlucCwgTlVMTCwgTlVMTCwK
LQkJCVNDVFBfRlJPTV9TQ1RQX1BDQiArIFNDVFBfTE9DXzEpOworCSAgICAgICAgICAgICAgICBT
Q1RQX0ZST01fU0NUUF9QQ0IgKyBTQ1RQX0xPQ18xKTsKIAogCWlmIChpbnAtPmNvbnRyb2wpIHsK
IAkJc2N0cF9tX2ZyZWVtKGlucC0+Y29udHJvbCk7CkBAIC0zOTYxLDE0ICszOTU2LDE0IEBAIHNj
dHBfaW5wY2JfZnJlZShzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBpbnQgaW1tZWRpYXRlLCBpbnQg
ZnJvbSkKIAkJCQkJICogdGltZXIgb24gdGhlIGFzb2MgZHVlIHRvIGl0IHdhcyBub3QKIAkJCQkJ
ICogY2xvc2VkLiBTbyBnbyBhaGVhZCBhbmQgc3RhcnQgaXQgbm93LgogCQkJCQkgKi8KLQkJCQkJ
YXNvYy0+YXNvYy5zdGF0ZSAmPSB+U0NUUF9TVEFURV9JTl9BQ0NFUFRfUVVFVUU7CisJCQkJCVND
VFBfQ0xFQVJfU1VCU1RBVEUoYXNvYywgU0NUUF9TVEFURV9JTl9BQ0NFUFRfUVVFVUUpOwogCQkJ
CQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9BU09DS0lMTCwgaW5wLCBhc29jLCBO
VUxMKTsKIAkJCQl9CiAJCQkJU0NUUF9UQ0JfVU5MT0NLKGFzb2MpOwogCQkJCWNvbnRpbnVlOwog
CQkJfQotCQkJaWYgKCgoU0NUUF9HRVRfU1RBVEUoJmFzb2MtPmFzb2MpID09IFNDVFBfU1RBVEVf
Q09PS0lFX1dBSVQpIHx8Ci0JCQkgICAgKFNDVFBfR0VUX1NUQVRFKCZhc29jLT5hc29jKSA9PSBT
Q1RQX1NUQVRFX0NPT0tJRV9FQ0hPRUQpKSAmJgorCQkJaWYgKCgoU0NUUF9HRVRfU1RBVEUoYXNv
YykgPT0gU0NUUF9TVEFURV9DT09LSUVfV0FJVCkgfHwKKwkJCSAgICAgKFNDVFBfR0VUX1NUQVRF
KGFzb2MpID09IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCkpICYmCiAJCQkgICAgKGFzb2MtPmFz
b2MudG90YWxfb3V0cHV0X3F1ZXVlX3NpemUgPT0gMCkpIHsKIAkJCQkvKiBJZiB3ZSBoYXZlIGRh
dGEgaW4gcXVldWUsIHdlIGRvbid0IHdhbnQgdG8ganVzdAogCQkJCSAqIGZyZWUgc2luY2UgdGhl
IGFwcCBtYXkgaGF2ZSBkb25lLCBzZW5kKCkvY2xvc2UKQEAgLTM5ODQsNyArMzk3OSw3IEBAIHNj
dHBfaW5wY2JfZnJlZShzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBpbnQgaW1tZWRpYXRlLCBpbnQg
ZnJvbSkKIAkJCX0KIAkJCS8qIERpc2Nvbm5lY3QgdGhlIHNvY2tldCBwbGVhc2UgKi8KIAkJCWFz
b2MtPnNjdHBfc29ja2V0ID0gTlVMTDsKLQkJCWFzb2MtPmFzb2Muc3RhdGUgfD0gU0NUUF9TVEFU
RV9DTE9TRURfU09DS0VUOworCQkJU0NUUF9BRERfU1VCU1RBVEUoYXNvYywgU0NUUF9TVEFURV9D
TE9TRURfU09DS0VUKTsKIAkJCWlmICgoYXNvYy0+YXNvYy5zaXplX29uX3JlYXNtX3F1ZXVlID4g
MCkgfHwKIAkJCSAgICAoYXNvYy0+YXNvYy5jb250cm9sX3BkYXBpKSB8fAogCQkJICAgIChhc29j
LT5hc29jLnNpemVfb25fYWxsX3N0cmVhbXMgPiAwKSB8fApAQCAtMzk5Niw4ICszOTkxLDggQEAg
c2N0cF9pbnBjYl9mcmVlKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIGludCBpbW1lZGlhdGUsIGlu
dCBmcm9tKQogCQkJCWFzb2MtPnNjdHBfZXAtPmxhc3RfYWJvcnRfY29kZSA9IFNDVFBfRlJPTV9T
Q1RQX1BDQiArIFNDVFBfTE9DXzM7CiAJCQkJc2N0cF9zZW5kX2Fib3J0X3RjYihhc29jLCBvcF9l
cnIsIFNDVFBfU09fTE9DS0VEKTsKIAkJCQlTQ1RQX1NUQVRfSU5DUl9DT1VOVEVSMzIoc2N0cHNf
YWJvcnRlZCk7Ci0JCQkJaWYgKChTQ1RQX0dFVF9TVEFURSgmYXNvYy0+YXNvYykgPT0gU0NUUF9T
VEFURV9PUEVOKSB8fAotCQkJCSAgICAoU0NUUF9HRVRfU1RBVEUoJmFzb2MtPmFzb2MpID09IFND
VFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpKSB7CisJCQkJaWYgKChTQ1RQX0dFVF9TVEFURShh
c29jKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHx8CisJCQkJICAgIChTQ1RQX0dFVF9TVEFURShhc29j
KSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgewogCQkJCQlTQ1RQX1NUQVRfREVD
Ul9HQVVHRTMyKHNjdHBzX2N1cnJlc3RhYik7CiAJCQkJfQogCQkJCWlmIChzY3RwX2ZyZWVfYXNz
b2MoaW5wLCBhc29jLApAQCAtNDAxMSwyMCArNDAwNiwxOSBAQCBzY3RwX2lucGNiX2ZyZWUoc3Ry
dWN0IHNjdHBfaW5wY2IgKmlucCwgaW50IGltbWVkaWF0ZSwgaW50IGZyb20pCiAJCQkJaWYgKCgq
YXNvYy0+YXNvYy5zc19mdW5jdGlvbnMuc2N0cF9zc19pc191c2VyX21zZ3NfaW5jb21wbGV0ZSko
YXNvYywgJmFzb2MtPmFzb2MpKSB7CiAJCQkJCWdvdG8gYWJvcnRfYW55d2F5OwogCQkJCX0KLQkJ
CQlpZiAoKFNDVFBfR0VUX1NUQVRFKCZhc29jLT5hc29jKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dO
X1NFTlQpICYmCi0JCQkJICAgIChTQ1RQX0dFVF9TVEFURSgmYXNvYy0+YXNvYykgIT0gU0NUUF9T
VEFURV9TSFVURE9XTl9BQ0tfU0VOVCkpIHsKKwkJCQlpZiAoKFNDVFBfR0VUX1NUQVRFKGFzb2Mp
ICE9IFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCkgJiYKKwkJCQkgICAgKFNDVFBfR0VUX1NUQVRF
KGFzb2MpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQpKSB7CiAJCQkJCXN0cnVjdCBz
Y3RwX25ldHMgKm5ldHA7CiAKIAkJCQkJLyoKIAkJCQkJICogdGhlcmUgaXMgbm90aGluZyBxdWV1
ZWQgdG8gc2VuZCwKIAkJCQkJICogc28gSSBzZW5kIHNodXRkb3duCiAJCQkJCSAqLwotCQkJCQlp
ZiAoKFNDVFBfR0VUX1NUQVRFKCZhc29jLT5hc29jKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHx8Ci0J
CQkJCSAgICAoU0NUUF9HRVRfU1RBVEUoJmFzb2MtPmFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERP
V05fUkVDRUlWRUQpKSB7CisJCQkJCWlmICgoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9T
VEFURV9PUEVOKSB8fAorCQkJCQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RB
VEVfU0hVVERPV05fUkVDRUlWRUQpKSB7CiAJCQkJCQlTQ1RQX1NUQVRfREVDUl9HQVVHRTMyKHNj
dHBzX2N1cnJlc3RhYik7CiAJCQkJCX0KLQkJCQkJU0NUUF9TRVRfU1RBVEUoJmFzb2MtPmFzb2Ms
IFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCk7Ci0JCQkJCVNDVFBfQ0xFQVJfU1VCU1RBVEUoJmFz
b2MtPmFzb2MsIFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORyk7CisJCQkJCVNDVFBfU0VUX1NU
QVRFKGFzb2MsIFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCk7CiAJCQkJCXNjdHBfc3RvcF90aW1l
cnNfZm9yX3NodXRkb3duKGFzb2MpOwogCQkJCQlpZiAoYXNvYy0+YXNvYy5hbHRlcm5hdGUpIHsK
IAkJCQkJCW5ldHAgPSBhc29jLT5hc29jLmFsdGVybmF0ZTsKQEAgLTQwMzQsMTcgKzQwMjgsMTUg
QEAgc2N0cF9pbnBjYl9mcmVlKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIGludCBpbW1lZGlhdGUs
IGludCBmcm9tKQogCQkJCQlzY3RwX3NlbmRfc2h1dGRvd24oYXNvYywgbmV0cCk7CiAJCQkJCXNj
dHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NIVVRET1dOLCBhc29jLT5zY3RwX2VwLCBh
c29jLAogCQkJCQkgICAgbmV0cCk7Ci0JCQkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9U
WVBFX1NIVVRET1dOR1VBUkQsIGFzb2MtPnNjdHBfZXAsIGFzb2MsCi0JCQkJCSAgICBhc29jLT5h
c29jLnByaW1hcnlfZGVzdGluYXRpb24pOworCQkJCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElN
RVJfVFlQRV9TSFVURE9XTkdVQVJELCBhc29jLT5zY3RwX2VwLCBhc29jLCBOVUxMKTsKIAkJCQkJ
c2N0cF9jaHVua19vdXRwdXQoaW5wLCBhc29jLCBTQ1RQX09VVFBVVF9GUk9NX1NIVVRfVE1SLCBT
Q1RQX1NPX0xPQ0tFRCk7CiAJCQkJfQogCQkJfSBlbHNlIHsKIAkJCQkvKiBtYXJrIGludG8gc2h1
dGRvd24gcGVuZGluZyAqLwotCQkJCWFzb2MtPmFzb2Muc3RhdGUgfD0gU0NUUF9TVEFURV9TSFVU
RE9XTl9QRU5ESU5HOwotCQkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NIVVRE
T1dOR1VBUkQsIGFzb2MtPnNjdHBfZXAsIGFzb2MsCi0JCQkJCQkgYXNvYy0+YXNvYy5wcmltYXJ5
X2Rlc3RpbmF0aW9uKTsKKwkJCQlTQ1RQX0FERF9TVUJTVEFURShhc29jLCBTQ1RQX1NUQVRFX1NI
VVRET1dOX1BFTkRJTkcpOworCQkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NI
VVRET1dOR1VBUkQsIGFzb2MtPnNjdHBfZXAsIGFzb2MsIE5VTEwpOwogCQkJCWlmICgoKmFzb2Mt
PmFzb2Muc3NfZnVuY3Rpb25zLnNjdHBfc3NfaXNfdXNlcl9tc2dzX2luY29tcGxldGUpKGFzb2Ms
ICZhc29jLT5hc29jKSkgewotCQkJCQlhc29jLT5hc29jLnN0YXRlIHw9IFNDVFBfU1RBVEVfUEFS
VElBTF9NU0dfTEVGVDsKKwkJCQkJU0NUUF9BRERfU1VCU1RBVEUoYXNvYywgU0NUUF9TVEFURV9Q
QVJUSUFMX01TR19MRUZUKTsKIAkJCQl9CiAJCQkJaWYgKFRBSUxRX0VNUFRZKCZhc29jLT5hc29j
LnNlbmRfcXVldWUpICYmCiAJCQkJICAgIFRBSUxRX0VNUFRZKCZhc29jLT5hc29jLnNlbnRfcXVl
dWUpICYmCkBAIC00MDU1LDggKzQwNDcsOCBAQCBzY3RwX2lucGNiX2ZyZWUoc3RydWN0IHNjdHBf
aW5wY2IgKmlucCwgaW50IGltbWVkaWF0ZSwgaW50IGZyb20pCiAJCQkJCWFzb2MtPnNjdHBfZXAt
Pmxhc3RfYWJvcnRfY29kZSA9IFNDVFBfRlJPTV9TQ1RQX1BDQiArIFNDVFBfTE9DXzU7CiAJCQkJ
CXNjdHBfc2VuZF9hYm9ydF90Y2IoYXNvYywgb3BfZXJyLCBTQ1RQX1NPX0xPQ0tFRCk7CiAJCQkJ
CVNDVFBfU1RBVF9JTkNSX0NPVU5URVIzMihzY3Rwc19hYm9ydGVkKTsKLQkJCQkJaWYgKChTQ1RQ
X0dFVF9TVEFURSgmYXNvYy0+YXNvYykgPT0gU0NUUF9TVEFURV9PUEVOKSB8fAotCQkJCQkgICAg
KFNDVFBfR0VUX1NUQVRFKCZhc29jLT5hc29jKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJ
VkVEKSkgeworCQkJCQlpZiAoKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfT1BF
TikgfHwKKwkJCQkJICAgIChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX1NIVVRE
T1dOX1JFQ0VJVkVEKSkgewogCQkJCQkJU0NUUF9TVEFUX0RFQ1JfR0FVR0UzMihzY3Rwc19jdXJy
ZXN0YWIpOwogCQkJCQl9CiAJCQkJCWlmIChzY3RwX2ZyZWVfYXNzb2MoaW5wLCBhc29jLApAQCAt
NDEwNCwxNyArNDA5NiwyMiBAQCBzY3RwX2lucGNiX2ZyZWUoc3RydWN0IHNjdHBfaW5wY2IgKmlu
cCwgaW50IGltbWVkaWF0ZSwgaW50IGZyb20pCiAJY250ID0gMDsKIAlMSVNUX0ZPUkVBQ0hfU0FG
RShhc29jLCAmaW5wLT5zY3RwX2Fzb2NfbGlzdCwgc2N0cF90Y2JsaXN0LCBuYXNvYykgewogCQlT
Q1RQX1RDQl9MT0NLKGFzb2MpOworCQlpZiAoaW1tZWRpYXRlICE9IFNDVFBfRlJFRV9TSE9VTERf
VVNFX0dSQUNFRlVMX0NMT1NFKSB7CisJCQkvKiBEaXNjb25uZWN0IHRoZSBzb2NrZXQgcGxlYXNl
ICovCisJCQlhc29jLT5zY3RwX3NvY2tldCA9IE5VTEw7CisJCQlTQ1RQX0FERF9TVUJTVEFURShh
c29jLCBTQ1RQX1NUQVRFX0NMT1NFRF9TT0NLRVQpOworCQl9CiAJCWlmIChhc29jLT5hc29jLnN0
YXRlICYgU0NUUF9TVEFURV9BQk9VVF9UT19CRV9GUkVFRCkgewogCQkJaWYgKGFzb2MtPmFzb2Mu
c3RhdGUgJiBTQ1RQX1NUQVRFX0lOX0FDQ0VQVF9RVUVVRSkgewotCQkJCWFzb2MtPmFzb2Muc3Rh
dGUgJj0gflNDVFBfU1RBVEVfSU5fQUNDRVBUX1FVRVVFOworCQkJCVNDVFBfQ0xFQVJfU1VCU1RB
VEUoYXNvYywgU0NUUF9TVEFURV9JTl9BQ0NFUFRfUVVFVUUpOwogCQkJCXNjdHBfdGltZXJfc3Rh
cnQoU0NUUF9USU1FUl9UWVBFX0FTT0NLSUxMLCBpbnAsIGFzb2MsIE5VTEwpOwogCQkJfQotCQkg
ICAgICAgIGNudCsrOworCQkJY250Kys7CiAJCQlTQ1RQX1RDQl9VTkxPQ0soYXNvYyk7CiAJCQlj
b250aW51ZTsKIAkJfQogCQkvKiBGcmVlIGFzc29jaWF0aW9ucyB0aGF0IGFyZSBOT1Qga2lsbGlu
ZyB1cyAqLwotCQlpZiAoKFNDVFBfR0VUX1NUQVRFKCZhc29jLT5hc29jKSAhPSBTQ1RQX1NUQVRF
X0NPT0tJRV9XQUlUKSAmJgorCQlpZiAoKFNDVFBfR0VUX1NUQVRFKGFzb2MpICE9IFNDVFBfU1RB
VEVfQ09PS0lFX1dBSVQpICYmCiAJCSAgICAoKGFzb2MtPmFzb2Muc3RhdGUgJiBTQ1RQX1NUQVRF
X0FCT1VUX1RPX0JFX0ZSRUVEKSA9PSAwKSkgewogCQkJc3RydWN0IG1idWYgKm9wX2VycjsKIApA
QCAtNDEyNyw4ICs0MTI0LDggQEAgc2N0cF9pbnBjYl9mcmVlKHN0cnVjdCBzY3RwX2lucGNiICpp
bnAsIGludCBpbW1lZGlhdGUsIGludCBmcm9tKQogCQkJU0NUUF9UQ0JfVU5MT0NLKGFzb2MpOwog
CQkJY29udGludWU7CiAJCX0KLQkJaWYgKChTQ1RQX0dFVF9TVEFURSgmYXNvYy0+YXNvYykgPT0g
U0NUUF9TVEFURV9PUEVOKSB8fAotCQkgICAgKFNDVFBfR0VUX1NUQVRFKCZhc29jLT5hc29jKSA9
PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgeworCQlpZiAoKFNDVFBfR0VUX1NUQVRF
KGFzb2MpID09IFNDVFBfU1RBVEVfT1BFTikgfHwKKwkJICAgIChTQ1RQX0dFVF9TVEFURShhc29j
KSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgewogCQkJU0NUUF9TVEFUX0RFQ1Jf
R0FVR0UzMihzY3Rwc19jdXJyZXN0YWIpOwogCQl9CiAJCWlmIChzY3RwX2ZyZWVfYXNzb2MoaW5w
LCBhc29jLCBTQ1RQX1BDQkZSRUVfRk9SQ0UsCkBAIC00MTM4LDcgKzQxMzUsNiBAQCBzY3RwX2lu
cGNiX2ZyZWUoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgaW50IGltbWVkaWF0ZSwgaW50IGZyb20p
CiAJfQogCWlmIChjbnQpIHsKIAkJLyogT2sgd2UgaGF2ZSBzb21lb25lIG91dCB0aGVyZSB0aGF0
IHdpbGwga2lsbCB1cyAqLwotCQkodm9pZClTQ1RQX09TX1RJTUVSX1NUT1AoJmlucC0+c2N0cF9l
cC5zaWduYXR1cmVfY2hhbmdlLnRpbWVyKTsKICNpZmRlZiBTQ1RQX0xPR19DTE9TSU5HCiAJCXNj
dHBfbG9nX2Nsb3NpbmcoaW5wLCBOVUxMLCAzKTsKICNlbmRpZgpAQCAtNDE1MywxMSArNDE0OSwx
MCBAQCBzY3RwX2lucGNiX2ZyZWUoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgaW50IGltbWVkaWF0
ZSwgaW50IGZyb20pCiAJCWJlaW5nX3JlZmVkKys7CiAJaWYgKFNDVFBfQVNPQ19DUkVBVEVfTE9D
S19DT05URU5ERUQoaW5wKSkKIAkJYmVpbmdfcmVmZWQrKzsKLQorCS8qIE5PVEU6IDAgcmVmY291
bnQgYWxzbyBtZWFucyBubyB0aW1lcnMgYXJlIHJlZmVyZW5jaW5nIHVzLiAqLwogCWlmICgoaW5w
LT5yZWZjb3VudCkgfHwKIAkgICAgKGJlaW5nX3JlZmVkKSB8fAogCSAgICAoaW5wLT5zY3RwX2Zs
YWdzICYgU0NUUF9QQ0JfRkxBR1NfQ0xPU0VfSVApKSB7Ci0JCSh2b2lkKVNDVFBfT1NfVElNRVJf
U1RPUCgmaW5wLT5zY3RwX2VwLnNpZ25hdHVyZV9jaGFuZ2UudGltZXIpOwogI2lmZGVmIFNDVFBf
TE9HX0NMT1NJTkcKIAkJc2N0cF9sb2dfY2xvc2luZyhpbnAsIE5VTEwsIDQpOwogI2VuZGlmCkBA
IC00MTc2LDI2ICs0MTcxLDEzIEBAIHNjdHBfaW5wY2JfZnJlZShzdHJ1Y3Qgc2N0cF9pbnBjYiAq
aW5wLCBpbnQgaW1tZWRpYXRlLCBpbnQgZnJvbSkKIAlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7CiAJ
U0NUUF9BU09DX0NSRUFURV9VTkxPQ0soaW5wKTsKIAlTQ1RQX0lOUF9JTkZPX1dVTkxPQ0soKTsK
LQkvKiBOb3cgd2UgcmVsZWFzZSBhbGwgbG9ja3MuIFNpbmNlIHRoaXMgSU5QCi0JICogY2Fubm90
IGJlIGZvdW5kIGFueW1vcmUgZXhjZXB0IHBvc3NpYmx5IGJ5IHRoZQotCSAqIGtpbGwgdGltZXIg
dGhhdCBtaWdodCBiZSBydW5uaW5nLiBXZSBjYWxsCi0JICogdGhlIGRyYWluIGZ1bmN0aW9uIGhl
cmUuIEl0IHNob3VsZCBoaXQgdGhlIGNhc2UKLQkgKiB3ZXJlIGl0IHNlZXMgdGhlIEFDVElWRSBm
bGFnIGNsZWFyZWQgYW5kIGV4aXQKLQkgKiBvdXQgZnJlZWluZyB1cyB0byBwcm9jZWVkIGFuZCBk
ZXN0cm95IGV2ZXJ5dGhpbmcuCi0JICovCi0JaWYgKGZyb20gIT0gU0NUUF9DQUxMRURfRlJPTV9J
TlBLSUxMX1RJTUVSKSB7Ci0JCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUF9EUkFJTigmaW5wLT5z
Y3RwX2VwLnNpZ25hdHVyZV9jaGFuZ2UudGltZXIpOwotCX0gZWxzZSB7Ci0JCS8qIFByb2JhYmx5
IHVuLW5lZWRlZCAqLwotCQkodm9pZClTQ1RQX09TX1RJTUVSX1NUT1AoJmlucC0+c2N0cF9lcC5z
aWduYXR1cmVfY2hhbmdlLnRpbWVyKTsKLQl9CiAKICNpZmRlZiBTQ1RQX0xPR19DTE9TSU5HCiAJ
c2N0cF9sb2dfY2xvc2luZyhpbnAsIE5VTEwsIDUpOwogI2VuZGlmCiAKLSNpZiAhKGRlZmluZWQo
X19QYW5kYV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNl
X18pKQotI2lmICFkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBfX0ZyZWVCU0RfdmVyc2lvbiA8IDUw
MDAwMAorI2lmICEoZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCisj
aWYgIShkZWZpbmVkKF9fRnJlZUJTRF9fKSAgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAJ
cnQgPSBpcF9wY2ItPmlucF9yb3V0ZS5yb19ydDsKICNlbmRpZgogI2VuZGlmCkBAIC00MjMwLDQ5
ICs0MjEyLDMyIEBAIHNjdHBfaW5wY2JfZnJlZShzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBpbnQg
aW1tZWRpYXRlLCBpbnQgZnJvbSkKIAkgKiBtYWNybyBoZXJlIHNpbmNlIGxlX25leHQgd2lsbCBn
ZXQgZnJlZWQgYXMgcGFydCBvZiB0aGUKIAkgKiBzY3RwX2ZyZWVfYXNzb2MoKSBjYWxsLgogCSAq
LwotI2lmbmRlZiBfX1BhbmRhX18KIAlpZiAoaXBfcGNiLT5pbnBfb3B0aW9ucykgewogCQkodm9p
ZClzY3RwX21fZnJlZShpcF9wY2ItPmlucF9vcHRpb25zKTsKIAkJaXBfcGNiLT5pbnBfb3B0aW9u
cyA9IDA7CiAJfQotI2VuZGlmCiAKLSNpZiAhKGRlZmluZWQoX19QYW5kYV9fKSB8fCBkZWZpbmVk
KF9fV2luZG93c19fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pKQotI2lmICFkZWZpbmVkKF9f
RnJlZUJTRF9fKSB8fCBfX0ZyZWVCU0RfdmVyc2lvbiA8IDUwMDAwMAorI2lmICEoZGVmaW5lZChf
V0lOMzIpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCisjaWYgIWRlZmluZWQoX19GcmVlQlNE
X18pCiAJaWYgKHJ0KSB7CiAJCVJURlJFRShydCk7CiAJCWlwX3BjYi0+aW5wX3JvdXRlLnJvX3J0
ID0gMDsKIAl9CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0Rf
dmVyc2lvbiA8IDgwMzAwMAotI2lmZGVmIElORVQKLQlpZiAoaXBfcGNiLT5pbnBfbW9wdGlvbnMp
IHsKLQkJaW5wX2ZyZWVtb3B0aW9ucyhpcF9wY2ItPmlucF9tb3B0aW9ucyk7Ci0JCWlwX3BjYi0+
aW5wX21vcHRpb25zID0gMDsKLQl9Ci0jZW5kaWYKLSNlbmRpZgogI2VuZGlmCiAKICNpZmRlZiBJ
TkVUNgotI2lmICEoZGVmaW5lZChfX1BhbmRhX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pIHx8
IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVm
aW5lZChfX0FQUExFX18pCisjaWYgIShkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX1VzZXJz
cGFjZV9fKSkKKyNpZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pKQogCWlmIChpcF9wY2ItPmlucF92ZmxhZyAmIElO
UF9JUFY2KSB7CiAjZWxzZQogCWlmIChpbnAtPmlucF92ZmxhZyAmIElOUF9JUFY2KSB7CiAjZW5k
aWYKLQkJc3RydWN0IGluNnBjYiAqaW42cDsKLQotCQlpbjZwID0gKHN0cnVjdCBpbjZwY2IgKilp
bnA7Ci0JCWlwNl9mcmVlcGNib3B0cyhpbjZwLT5pbjZwX291dHB1dG9wdHMpOworCQlpcDZfZnJl
ZXBjYm9wdHMoaXBfcGNiLT5pbjZwX291dHB1dG9wdHMpOwogCX0KICNlbmRpZgogI2VuZGlmCQkJ
CS8qIElORVQ2ICovCi0jaWYgIShkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQ
TEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkK
LQlpbnAtPmlucF92ZmxhZyA9IDA7Ci0jZWxzZQogCWlwX3BjYi0+aW5wX3ZmbGFnID0gMDsKLSNl
bmRpZgogCS8qIGZyZWUgdXAgYXV0aGVudGljYXRpb24gZmllbGRzICovCiAJaWYgKGlucC0+c2N0
cF9lcC5sb2NhbF9hdXRoX2NodW5rcyAhPSBOVUxMKQogCQlzY3RwX2ZyZWVfY2h1bmtsaXN0KGlu
cC0+c2N0cF9lcC5sb2NhbF9hdXRoX2NodW5rcyk7CkBAIC00Mjg1LDcgKzQyNTAsNyBAQCBzY3Rw
X2lucGNiX2ZyZWUoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgaW50IGltbWVkaWF0ZSwgaW50IGZy
b20pCiAJCS8qc2FfaWdub3JlIEZSRUVEX01FTU9SWSovCiAJfQogCi0jaWYgZGVmaW5lZChfX0FQ
UExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAJaW5wLT5pcF9pbnAuaW5wLmlucF9zdGF0ZSA9IElOUENCX1NUQVRFX0RFQUQ7CiAJaWYgKGlu
X3BjYl9jaGVja3N0YXRlKCZpbnAtPmlwX2lucC5pbnAsIFdOVF9TVE9QVVNJTkcsIDEpICE9IFdO
VF9TVE9QVVNJTkcpIHsKICNpZmRlZiBJTlZBUklBTlRTCkBAIC00MzIzLDE0ICs0Mjg4LDE0IEBA
IHNjdHBfaW5wY2JfZnJlZShzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBpbnQgaW1tZWRpYXRlLCBp
bnQgZnJvbSkKIAkJaW5wLT5zY3RwX3RjYmhhc2ggPSBOVUxMOwogCX0KIAkvKiBOb3cgd2UgbXVz
dCBwdXQgdGhlIGVwIG1lbW9yeSBiYWNrIGludG8gdGhlIHpvbmUgcG9vbCAqLwotI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKIAljcmZyZWUoaW5wLT5pcF9pbnAuaW5wLmlucF9jcmVkKTsKIAlJTlBfTE9D
S19ERVNUUk9ZKCZpbnAtPmlwX2lucC5pbnApOwogI2VuZGlmCiAJU0NUUF9JTlBfTE9DS19ERVNU
Uk9ZKGlucCk7CiAJU0NUUF9JTlBfUkVBRF9ERVNUUk9ZKGlucCk7CiAJU0NUUF9BU09DX0NSRUFU
RV9MT0NLX0RFU1RST1koaW5wKTsKLSNpZiAhZGVmaW5lZChfX0FQUExFX18pCisjaWYgIShkZWZp
bmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAJU0NUUF9aT05FX0ZS
RUUoU0NUUF9CQVNFX0lORk8oaXBpX3pvbmVfZXApLCBpbnApOwogCVNDVFBfREVDUl9FUF9DT1VO
VCgpOwogI2Vsc2UKQEAgLTQzNTUsOSArNDMyMCw2IEBAIHNjdHBfZmluZG5ldChzdHJ1Y3Qgc2N0
cF90Y2IgKnN0Y2IsIHN0cnVjdCBzb2NrYWRkciAqYWRkcikKIGludAogc2N0cF9pc19hZGRyZXNz
X29uX2xvY2FsX2hvc3Qoc3RydWN0IHNvY2thZGRyICphZGRyLCB1aW50MzJfdCB2cmZfaWQpCiB7
Ci0jaWZkZWYgX19QYW5kYV9fCi0JcmV0dXJuICgwKTsKLSNlbHNlCiAJc3RydWN0IHNjdHBfaWZh
ICpzY3RwX2lmYTsKIAlzY3RwX2lmYSA9IHNjdHBfZmluZF9pZmFfYnlfYWRkcihhZGRyLCB2cmZf
aWQsIFNDVFBfQUREUl9OT1RfTE9DS0VEKTsKIAlpZiAoc2N0cF9pZmEpIHsKQEAgLTQzNjUsNyAr
NDMyNyw2IEBAIHNjdHBfaXNfYWRkcmVzc19vbl9sb2NhbF9ob3N0KHN0cnVjdCBzb2NrYWRkciAq
YWRkciwgdWludDMyX3QgdnJmX2lkKQogCX0gZWxzZSB7CiAJCXJldHVybiAoMCk7CiAJfQotI2Vu
ZGlmCiB9CiAKIC8qCkBAIC00NjE0LDcgKzQ1NzUsNyBAQCBzY3RwX2FkZF9yZW1vdGVfYWRkcihz
dHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzb2NrYWRkciAqbmV3YWRkciwKIAkJc3RydWN0
IHNvY2thZGRyX2luNiAqc2luNjsKIAogCQlzaW42ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKikm
bmV0LT5yby5fbF9hZGRyOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19B
UFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmIGRlZmluZWQoQVBQTEVfTEVP
UEFSRCkgfHwgZGVmaW5lZChBUFBMRV9TTk9XTEVPUEFSRCkKIAkJKHZvaWQpaW42X2VtYmVkc2Nv
cGUoJnNpbjYtPnNpbjZfYWRkciwgc2luNiwgJnN0Y2ItPnNjdHBfZXAtPmlwX2lucC5pbnAsIE5V
TEwpOwogI2Vsc2UKQEAgLTQ2ODEsMTggKzQ2NDIsMjIgQEAgc2N0cF9hZGRfcmVtb3RlX2FkZHIo
c3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc29ja2FkZHIgKm5ld2FkZHIsCiAJCQl9IGVs
c2UgewogCQkJCWltdHUgPSAwOwogCQkJfQotCQkJcm10dSA9IFNDVFBfR0FUSEVSX01UVV9GUk9N
X1JPVVRFKG5ldC0+cm8uX3NfYWRkciwgJm5ldC0+cm8uX2xfYWRkci5zYSwgbmV0LT5yby5yb19y
dCk7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQkJcm10dSA9IFNDVFBfR0FUSEVSX01UVV9GUk9N
X1JPVVRFKG5ldC0+cm8uX3NfYWRkciwgJm5ldC0+cm8uX2xfYWRkci5zYSwgbmV0LT5yby5yb19u
aCk7CiAJCQloY210dSA9IHNjdHBfaGNfZ2V0X210dSgmbmV0LT5yby5fbF9hZGRyLCBzdGNiLT5z
Y3RwX2VwLT5maWJudW0pOwogI2Vsc2UKKwkJCXJtdHUgPSBTQ1RQX0dBVEhFUl9NVFVfRlJPTV9S
T1VURShuZXQtPnJvLl9zX2FkZHIsICZuZXQtPnJvLl9sX2FkZHIuc2EsIG5ldC0+cm8ucm9fcnQp
OwogCQkJaGNtdHUgPSAwOwogI2VuZGlmCiAJCQluZXQtPm10dSA9IHNjdHBfbWluX210dShoY210
dSwgcm10dSwgaW10dSk7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKKyNlbHNlCiAJCQlpZiAocm10dSA9PSAwKSB7CiAJCQkJLyogU3RhcnQgdGhp
bmdzIG9mZiB0byBtYXRjaCBtdHUgb2YgaW50ZXJmYWNlIHBsZWFzZS4gKi8KIAkJCQlTQ1RQX1NF
VF9NVFVfT0ZfUk9VVEUoJm5ldC0+cm8uX2xfYWRkci5zYSwKIAkJCQkgICAgICAgICAgICAgICAg
ICAgICAgbmV0LT5yby5yb19ydCwgbmV0LT5tdHUpOwogCQkJfQorI2VuZGlmCiAJCX0KIAl9CiAj
ZW5kaWYKQEAgLTQ3ODEsNyArNDc0Niw3IEBAIHNjdHBfYWRkX3JlbW90ZV9hZGRyKHN0cnVjdCBz
Y3RwX3RjYiAqc3RjYiwgc3RydWN0IHNvY2thZGRyICpuZXdhZGRyLAogCSAqLwogCW5ldC0+Zmlu
ZF9wc2V1ZG9fY3VtYWNrID0gMTsKIAluZXQtPmZpbmRfcnR4X3BzZXVkb19jdW1hY2sgPSAxOwot
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkvKiBDaG9vc2UgYW4gaW5pdGlhbCBmbG93aWQuICovCiAJ
bmV0LT5mbG93aWQgPSBzdGNiLT5hc29jLm15X3Z0YWcgXgogCSAgICAgICAgICAgICAgbnRvaHMo
c3RjYi0+cnBvcnQpIF4KQEAgLTQ3OTIsMjYgKzQ3NTcsMzYgQEAgc2N0cF9hZGRfcmVtb3RlX2Fk
ZHIoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc29ja2FkZHIgKm5ld2FkZHIsCiAJCSpu
ZXRwID0gbmV0OwogCX0KIAluZXRmaXJzdCA9IFRBSUxRX0ZJUlNUKCZzdGNiLT5hc29jLm5ldHMp
OworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJ
aWYgKG5ldC0+cm8ucm9fbmggPT0gTlVMTCkgeworI2Vsc2UKIAlpZiAobmV0LT5yby5yb19ydCA9
PSBOVUxMKSB7CisjZW5kaWYKIAkJLyogU2luY2Ugd2UgaGF2ZSBubyByb3V0ZSBwdXQgaXQgYXQg
dGhlIGJhY2sgKi8KIAkJVEFJTFFfSU5TRVJUX1RBSUwoJnN0Y2ItPmFzb2MubmV0cywgbmV0LCBz
Y3RwX25leHQpOwogCX0gZWxzZSBpZiAobmV0Zmlyc3QgPT0gTlVMTCkgewogCQkvKiBXZSBhcmUg
dGhlIGZpcnN0IG9uZSBpbiB0aGUgcG9vbC4gKi8KIAkJVEFJTFFfSU5TRVJUX0hFQUQoJnN0Y2It
PmFzb2MubmV0cywgbmV0LCBzY3RwX25leHQpOworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJfSBlbHNlIGlmIChuZXRmaXJzdC0+cm8ucm9fbmgg
PT0gTlVMTCkgeworI2Vsc2UKIAl9IGVsc2UgaWYgKG5ldGZpcnN0LT5yby5yb19ydCA9PSBOVUxM
KSB7CisjZW5kaWYKIAkJLyoKIAkJICogRmlyc3Qgb25lIGhhcyBOTyByb3V0ZS4gUGxhY2UgdGhp
cyBvbmUgYWhlYWQgb2YgdGhlIGZpcnN0CiAJCSAqIG9uZS4KIAkJICovCiAJCVRBSUxRX0lOU0VS
VF9IRUFEKCZzdGNiLT5hc29jLm5ldHMsIG5ldCwgc2N0cF9uZXh0KTsKLSNpZm5kZWYgX19QYW5k
YV9fCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
Kwl9IGVsc2UgaWYgKG5ldC0+cm8ucm9fbmgtPm5oX2lmcCAhPSBuZXRmaXJzdC0+cm8ucm9fbmgt
Pm5oX2lmcCkgeworI2Vsc2UKIAl9IGVsc2UgaWYgKG5ldC0+cm8ucm9fcnQtPnJ0X2lmcCAhPSBu
ZXRmaXJzdC0+cm8ucm9fcnQtPnJ0X2lmcCkgeworI2VuZGlmCiAJCS8qCiAJCSAqIFRoaXMgb25l
IGhhcyBhIGRpZmZlcmVudCBpbnRlcmZhY2UgdGhhbiB0aGUgb25lIGF0IHRoZQogCQkgKiB0b3Ag
b2YgdGhlIGxpc3QuIFBsYWNlIGl0IGFoZWFkLgogCQkgKi8KIAkJVEFJTFFfSU5TRVJUX0hFQUQo
JnN0Y2ItPmFzb2MubmV0cywgbmV0LCBzY3RwX25leHQpOwotI2VuZGlmCiAJfSBlbHNlIHsKIAkJ
LyoKIAkJICogT2sgd2UgaGF2ZSB0aGUgc2FtZSBpbnRlcmZhY2UgYXMgdGhlIGZpcnN0IG9uZS4g
TW92ZQpAQCAtNDgyNywzNCArNDgwMiwzOSBAQCBzY3RwX2FkZF9yZW1vdGVfYWRkcihzdHJ1Y3Qg
c2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzb2NrYWRkciAqbmV3YWRkciwKIAkJCQkvKiBFbmQgb2Yg
dGhlIGxpc3QgKi8KIAkJCQlUQUlMUV9JTlNFUlRfVEFJTCgmc3RjYi0+YXNvYy5uZXRzLCBuZXQs
IHNjdHBfbmV4dCk7CiAJCQkJYnJlYWs7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJCX0gZWxzZSBpZiAobmV0bG9vay0+cm8ucm9fbmggPT0g
TlVMTCkgeworI2Vsc2UKIAkJCX0gZWxzZSBpZiAobmV0bG9vay0+cm8ucm9fcnQgPT0gTlVMTCkg
eworI2VuZGlmCiAJCQkJLyogbmV4dCBvbmUgaGFzIE5PIHJvdXRlICovCiAJCQkJVEFJTFFfSU5T
RVJUX0JFRk9SRShuZXRmaXJzdCwgbmV0LCBzY3RwX25leHQpOwogCQkJCWJyZWFrOwotCQkJfQot
I2lmbmRlZiBfX1BhbmRhX18KLQkJCWVsc2UgaWYgKG5ldGxvb2stPnJvLnJvX3J0LT5ydF9pZnAg
IT0gbmV0LT5yby5yb19ydC0+cnRfaWZwKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQl9IGVsc2UgaWYgKG5ldGxvb2stPnJvLnJvX25oLT5u
aF9pZnAgIT0gbmV0LT5yby5yb19uaC0+bmhfaWZwKSB7CiAjZWxzZQotCQkJZWxzZQorCQkJfSBl
bHNlIGlmIChuZXRsb29rLT5yby5yb19ydC0+cnRfaWZwICE9IG5ldC0+cm8ucm9fcnQtPnJ0X2lm
cCkgewogI2VuZGlmCi0JCQl7CiAJCQkJVEFJTFFfSU5TRVJUX0FGVEVSKCZzdGNiLT5hc29jLm5l
dHMsIG5ldGxvb2ssCi0JCQkJCQkgICBuZXQsIHNjdHBfbmV4dCk7CisJCQkJICAgICAgICAgICAg
ICAgICAgIG5ldCwgc2N0cF9uZXh0KTsKIAkJCQlicmVhazsKIAkJCX0KLSNpZm5kZWYgX19QYW5k
YV9fCiAJCQkvKiBTaGlmdCBmb3J3YXJkICovCiAJCQluZXRmaXJzdCA9IG5ldGxvb2s7Ci0jZW5k
aWYKIAkJfSB3aGlsZSAobmV0bG9vayAhPSBOVUxMKTsKIAl9CiAKIAkvKiBnb3QgdG8gaGF2ZSBh
IHByaW1hcnkgc2V0ICovCiAJaWYgKHN0Y2ItPmFzb2MucHJpbWFyeV9kZXN0aW5hdGlvbiA9PSAw
KSB7CiAJCXN0Y2ItPmFzb2MucHJpbWFyeV9kZXN0aW5hdGlvbiA9IG5ldDsKKyNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCX0gZWxzZSBpZiAoKHN0
Y2ItPmFzb2MucHJpbWFyeV9kZXN0aW5hdGlvbi0+cm8ucm9fbmggPT0gTlVMTCkgJiYKKwkgICAg
ICAgICAgIChuZXQtPnJvLnJvX25oKSAmJgorI2Vsc2UKIAl9IGVsc2UgaWYgKChzdGNiLT5hc29j
LnByaW1hcnlfZGVzdGluYXRpb24tPnJvLnJvX3J0ID09IE5VTEwpICYmCi0JCSAgICAobmV0LT5y
by5yb19ydCkgJiYKLQkgICAgKChuZXQtPmRlc3Rfc3RhdGUgJiBTQ1RQX0FERFJfVU5DT05GSVJN
RUQpID09IDApKSB7CisJICAgICAgICAgICAobmV0LT5yby5yb19ydCkgJiYKKyNlbmRpZgorCSAg
ICAgICAgICAgKChuZXQtPmRlc3Rfc3RhdGUgJiBTQ1RQX0FERFJfVU5DT05GSVJNRUQpID09IDAp
KSB7CiAJCS8qIE5vIHJvdXRlIHRvIGN1cnJlbnQgcHJpbWFyeSBhZG9wdCBuZXcgcHJpbWFyeSAq
LwogCQlzdGNiLT5hc29jLnByaW1hcnlfZGVzdGluYXRpb24gPSBuZXQ7CiAJfQpAQCAtNDg4Mywx
MSArNDg2Myw5IEBAIHNjdHBfYWxvY19hX2Fzc29jX2lkKHN0cnVjdCBzY3RwX2lucGNiICppbnAs
IHN0cnVjdCBzY3RwX3RjYiAqc3RjYikKIAlzdHJ1Y3Qgc2N0cGFzb2NoZWFkICpoZWFkOwogCXN0
cnVjdCBzY3RwX3RjYiAqbHN0Y2I7CiAKLQlTQ1RQX0lOUF9XTE9DSyhpbnApOwogIHRyeV9hZ2Fp
bjoKIAlpZiAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfU09DS0VUX0FMTEdPTkUp
IHsKIAkJLyogVFNOSCAqLwotCQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7CiAJCXJldHVybiAoMCk7
CiAJfQogCS8qCkBAIC00OTA2LDggKzQ4ODQsNyBAQCBzY3RwX2Fsb2NfYV9hc3NvY19pZChzdHJ1
Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IpCiAJaGVhZCA9ICZpbnAt
PnNjdHBfYXNvY2lkaGFzaFtTQ1RQX1BDQkhBU0hfQVNPQyhpZCwgaW5wLT5oYXNoYXNvY2lkbWFy
ayldOwogCUxJU1RfSU5TRVJUX0hFQUQoaGVhZCwgc3RjYiwgc2N0cF90Y2Jhc29jaWRoYXNoKTsK
IAlzdGNiLT5hc29jLmluX2Fzb2NpZF9oYXNoID0gMTsKLQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7
Ci0JcmV0dXJuIGlkOworCXJldHVybiAoaWQpOwogfQogCiAvKgpAQCAtNDkxOSwxNyArNDg5Niwx
NyBAQCBzdHJ1Y3Qgc2N0cF90Y2IgKgogc2N0cF9hbG9jX2Fzc29jKHN0cnVjdCBzY3RwX2lucGNi
ICppbnAsIHN0cnVjdCBzb2NrYWRkciAqZmlyc3RhZGRyLAogICAgICAgICAgICAgICAgIGludCAq
ZXJyb3IsIHVpbnQzMl90IG92ZXJyaWRlX3RhZywgdWludDMyX3QgdnJmX2lkLAogICAgICAgICAg
ICAgICAgIHVpbnQxNl90IG9fc3RyZWFtcywgdWludDE2X3QgcG9ydCwKLSNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMDAKLQkJc3RydWN0IHRocmVh
ZCAqcAotI2VsaWYgZGVmaW5lZChfX1dpbmRvd3NfXykKLQkJUEtUSFJFQUQgcAorI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisgICAgICAgICAgICAg
ICAgc3RydWN0IHRocmVhZCAqcCwKKyNlbGlmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQorICAgICAgICAgICAgICAgIFBLVEhSRUFEIHAsCiAjZWxzZQogI2lmIGRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKICAgICAgICAgICAgICAgICAvKiAgX19Vc2Vyc3BhY2VfXyBO
VUxMIHByb2MgaXMgZ29pbmcgdG8gYmUgcGFzc2VkIGhlcmUuIFNlZSBzY3RwX2xvd2VyX3Nvc2Vu
ZCAqLwogI2VuZGlmCi0JCXN0cnVjdCBwcm9jICpwCisgICAgICAgICAgICAgICAgc3RydWN0IHBy
b2MgKnAsCiAjZW5kaWYKLSkKKyAgICAgICAgICAgICAgICBpbnQgaW5pdGlhbGl6ZV9hdXRoX3Bh
cmFtcykKIHsKIAkvKiBub3RlIHRoZSBwIGFyZ3VtZW50IGlzIG9ubHkgdmFsaWQgaW4gdW5ib3Vu
ZCBzb2NrZXRzICovCiAKQEAgLTUwODEsMTUgKzUwNTgsNyBAQCBzY3RwX2Fsb2NfYXNzb2Moc3Ry
dWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNvY2thZGRyICpmaXJzdGFkZHIsCiAJCSAqIElm
IHlvdSBoYXZlIG5vdCBwZXJmb3JtZWQgYSBiaW5kLCB0aGVuIHdlIG5lZWQgdG8gZG8gdGhlCiAJ
CSAqIGVwaGVtZXJhbCBiaW5kIGZvciB5b3UuCiAJCSAqLwotCQlpZiAoKGVyciA9IHNjdHBfaW5w
Y2JfYmluZChpbnAtPnNjdHBfc29ja2V0LAotCQkgICAgKHN0cnVjdCBzb2NrYWRkciAqKU5VTEws
Ci0JCSAgICAoc3RydWN0IHNjdHBfaWZhICopTlVMTCwKLSNpZm5kZWYgX19QYW5kYV9fCi0JCQkJ
CSAgIHAKLSNlbHNlCi0JCQkJCSAgIChzdHJ1Y3QgcHJvYyAqKU5VTEwKLSNlbmRpZgotCQkgICAg
KSkpIHsKKwkJaWYgKChlcnIgPSBzY3RwX2lucGNiX2JpbmQoaW5wLT5zY3RwX3NvY2tldCwgTlVM
TCwgTlVMTCwgcCkpKSB7CiAJCQkvKiBiaW5kIGVycm9yLCBwcm9iYWJseSBwZXJtICovCiAJCQkq
ZXJyb3IgPSBlcnI7CiAJCQlyZXR1cm4gKE5VTEwpOwpAQCAtNTEwNyw3ICs1MDc2LDYgQEAgc2N0
cF9hbG9jX2Fzc29jKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzb2NrYWRkciAqZmly
c3RhZGRyLAogCW1lbXNldChzdGNiLCAwLCBzaXplb2YoKnN0Y2IpKTsKIAlhc29jID0gJnN0Y2It
PmFzb2M7CiAKLQlhc29jLT5hc3NvY19pZCA9IHNjdHBfYWxvY19hX2Fzc29jX2lkKGlucCwgc3Rj
Yik7CiAJU0NUUF9UQ0JfTE9DS19JTklUKHN0Y2IpOwogCVNDVFBfVENCX1NFTkRfTE9DS19JTklU
KHN0Y2IpOwogCXN0Y2ItPnJwb3J0ID0gcnBvcnQ7CkBAIC01MTE4LDcgKzUwODYsNiBAQCBzY3Rw
X2Fsb2NfYXNzb2Moc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNvY2thZGRyICpmaXJz
dGFkZHIsCiAJCS8qIGZhaWxlZCAqLwogCQlTQ1RQX1RDQl9MT0NLX0RFU1RST1koc3RjYik7CiAJ
CVNDVFBfVENCX1NFTkRfTE9DS19ERVNUUk9ZKHN0Y2IpOwotCQlMSVNUX1JFTU9WRShzdGNiLCBz
Y3RwX3RjYmFzb2NpZGhhc2gpOwogCQlTQ1RQX1pPTkVfRlJFRShTQ1RQX0JBU0VfSU5GTyhpcGlf
em9uZV9hc29jKSwgc3RjYik7CiAJCVNDVFBfREVDUl9BU09DX0NPVU5UKCk7CiAJCSplcnJvciA9
IGVycjsKQEAgLTUxMzEsNyArNTA5OCw2IEBAIHNjdHBfYWxvY19hc3NvYyhzdHJ1Y3Qgc2N0cF9p
bnBjYiAqaW5wLCBzdHJ1Y3Qgc29ja2FkZHIgKmZpcnN0YWRkciwKIAkJLyogaW5wY2IgZnJlZWQg
d2hpbGUgYWxsb2MgZ29pbmcgb24gKi8KIAkJU0NUUF9UQ0JfTE9DS19ERVNUUk9ZKHN0Y2IpOwog
CQlTQ1RQX1RDQl9TRU5EX0xPQ0tfREVTVFJPWShzdGNiKTsKLQkJTElTVF9SRU1PVkUoc3RjYiwg
c2N0cF90Y2Jhc29jaWRoYXNoKTsKIAkJU0NUUF9aT05FX0ZSRUUoU0NUUF9CQVNFX0lORk8oaXBp
X3pvbmVfYXNvYyksIHN0Y2IpOwogCQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7CiAJCVNDVFBfSU5Q
X0lORk9fV1VOTE9DSygpOwpAQCAtNTE0Miw2ICs1MTA4LDcgQEAgc2N0cF9hbG9jX2Fzc29jKHN0
cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzb2NrYWRkciAqZmlyc3RhZGRyLAogCX0KIAlT
Q1RQX1RDQl9MT0NLKHN0Y2IpOwogCisJYXNvYy0+YXNzb2NfaWQgPSBzY3RwX2Fsb2NfYV9hc3Nv
Y19pZChpbnAsIHN0Y2IpOwogCS8qIG5vdyB0aGF0IG15X3Z0YWcgaXMgc2V0LCBhZGQgaXQgdG8g
dGhlIGhhc2ggKi8KIAloZWFkID0gJlNDVFBfQkFTRV9JTkZPKHNjdHBfYXNvY2hhc2gpW1NDVFBf
UENCSEFTSF9BU09DKHN0Y2ItPmFzb2MubXlfdnRhZywgU0NUUF9CQVNFX0lORk8oaGFzaGFzb2Nt
YXJrKSldOwogCS8qIHB1dCBpdCBpbiB0aGUgYnVja2V0IGluIHRoZSB2dGFnIGhhc2ggb2YgYXNz
b2MncyBmb3IgdGhlIHN5c3RlbSAqLwpAQCAtNTE3OSw3ICs1MTQ2LDYgQEAgc2N0cF9hbG9jX2Fz
c29jKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzb2NrYWRkciAqZmlyc3RhZGRyLAog
CVNDVFBfT1NfVElNRVJfSU5JVCgmYXNvYy0+YXNjb25mX3RpbWVyLnRpbWVyKTsKIAlTQ1RQX09T
X1RJTUVSX0lOSVQoJmFzb2MtPnNodXRfZ3VhcmRfdGltZXIudGltZXIpOwogCVNDVFBfT1NfVElN
RVJfSU5JVCgmYXNvYy0+YXV0b2Nsb3NlX3RpbWVyLnRpbWVyKTsKLQlTQ1RQX09TX1RJTUVSX0lO
SVQoJmFzb2MtPmRlbGF5ZWRfZXZlbnRfdGltZXIudGltZXIpOwogCVNDVFBfT1NfVElNRVJfSU5J
VCgmYXNvYy0+ZGVsZXRlX3ByaW1fdGltZXIudGltZXIpOwogCiAJTElTVF9JTlNFUlRfSEVBRCgm
aW5wLT5zY3RwX2Fzb2NfbGlzdCwgc3RjYiwgc2N0cF90Y2JsaXN0KTsKQEAgLTUxODksNiArNTE1
NSw5IEBAIHNjdHBfYWxvY19hc3NvYyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc29j
a2FkZHIgKmZpcnN0YWRkciwKIAkJICAgIGlucC0+c2N0cF9oYXNobWFyayldOwogCQlMSVNUX0lO
U0VSVF9IRUFEKGhlYWQsIHN0Y2IsIHNjdHBfdGNiaGFzaCk7CiAJfQorCWlmIChpbml0aWFsaXpl
X2F1dGhfcGFyYW1zID09IFNDVFBfSU5JVElBTElaRV9BVVRIX1BBUkFNUykgeworCQlzY3RwX2lu
aXRpYWxpemVfYXV0aF9wYXJhbXMoaW5wLCBzdGNiKTsKKwl9CiAJU0NUUF9JTlBfV1VOTE9DSyhp
bnApOwogCVNDVFBEQkcoU0NUUF9ERUJVR19QQ0IxLCAiQXNzb2NpYXRpb24gJXAgbm93IGFsbG9j
YXRlZFxuIiwgKHZvaWQgKilzdGNiKTsKIAlyZXR1cm4gKHN0Y2IpOwpAQCAtNTE5OCw4ICs1MTY3
LDEwIEBAIHNjdHBfYWxvY19hc3NvYyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc29j
a2FkZHIgKmZpcnN0YWRkciwKIHZvaWQKIHNjdHBfcmVtb3ZlX25ldChzdHJ1Y3Qgc2N0cF90Y2Ig
KnN0Y2IsIHN0cnVjdCBzY3RwX25ldHMgKm5ldCkKIHsKKwlzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5w
OwogCXN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jOwogCisJaW5wID0gc3RjYi0+c2N0cF9l
cDsKIAlhc29jID0gJnN0Y2ItPmFzb2M7CiAJYXNvYy0+bnVtbmV0cy0tOwogCVRBSUxRX1JFTU9W
RSgmYXNvYy0+bmV0cywgbmV0LCBzY3RwX25leHQpOwpAQCAtNTI0Nyw2ICs1MjE4LDExIEBAIG91
dDoKIAkJc2N0cF9mcmVlX3JlbW90ZV9hZGRyKHN0Y2ItPmFzb2MuYWx0ZXJuYXRlKTsKIAkJc3Rj
Yi0+YXNvYy5hbHRlcm5hdGUgPSBOVUxMOwogCX0KKwlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1F
Ul9UWVBFX1BBVEhNVFVSQUlTRSwgaW5wLCBzdGNiLCBuZXQsCisJICAgICAgICAgICAgICAgIFND
VFBfRlJPTV9TQ1RQX1BDQiArIFNDVFBfTE9DXzkpOworCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJ
TUVSX1RZUEVfSEVBUlRCRUFULCBpbnAsIHN0Y2IsIG5ldCwKKwkgICAgICAgICAgICAgICAgU0NU
UF9GUk9NX1NDVFBfUENCICsgU0NUUF9MT0NfMTApOworCW5ldC0+ZGVzdF9zdGF0ZSB8PSBTQ1RQ
X0FERFJfQkVJTkdfREVMRVRFRDsKIAlzY3RwX2ZyZWVfcmVtb3RlX2FkZHIobmV0KTsKIH0KIApA
QCAtNTQwMCw5ICs1Mzc2LDYgQEAgc2N0cF9hZGRfdnRhZ190b190aW1ld2FpdCh1aW50MzJfdCB0
YWcsIHVpbnQzMl90IHRpbWUsIHVpbnQxNl90IGxwb3J0LCB1aW50MTZfdAogCQlTQ1RQX01BTExP
Qyh0d2FpdF9ibG9jaywgc3RydWN0IHNjdHBfdGFnYmxvY2sgKiwKIAkJICAgIHNpemVvZihzdHJ1
Y3Qgc2N0cF90YWdibG9jayksIFNDVFBfTV9USU1XKTsKIAkJaWYgKHR3YWl0X2Jsb2NrID09IE5V
TEwpIHsKLSNpZmRlZiBJTlZBUklBTlRTCi0JCQlwYW5pYygiQ2FuIG5vdCBhbGxvYyB0YWdibG9j
ayIpOwotI2VuZGlmCiAJCQlyZXR1cm47CiAJCX0KIAkJbWVtc2V0KHR3YWl0X2Jsb2NrLCAwLCBz
aXplb2Yoc3RydWN0IHNjdHBfdGFnYmxvY2spKTsKQEAgLTU0NTUsMTAgKzU0MjgsNiBAQCBzY3Rw
X2NsZWFuX3VwX3N0cmVhbShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX3JlYWRo
ZWFkICpyaCkKIAl9CiB9CiAKLSNpZmRlZiBfX1BhbmRhX18KLXZvaWQgcGFuZGFfd2FrZXVwX3Nv
Y2tldChzdHJ1Y3Qgc29ja2V0ICpzbyk7Ci0jZW5kaWYKLQogLyotCiAgKiBGcmVlIHRoZSBhc3Nv
Y2lhdGlvbiBhZnRlciB1bi1oYXNoaW5nIHRoZSByZW1vdGUgcG9ydC4gVGhpcwogICogZnVuY3Rp
b24gQUxXQVlTIHJldHVybnMgaG9sZGluZyBOTyBMT0NLIG9uIHRoZSBzdGNiLiBJdCBET0VTCkBA
IC01NDg0LDcgKzU0NTMsNyBAQCBzY3RwX2ZyZWVfYXNzb2Moc3RydWN0IHNjdHBfaW5wY2IgKmlu
cCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLCBpbnQgZnJvbV9pbnBjYmZyZQogCXN0cnVjdCBzb2Nr
ZXQgKnNvOwogCiAJLyogZmlyc3QsIGxldHMgcHVyZ2UgdGhlIGVudHJ5IGZyb20gdGhlIGhhc2gg
dGFibGUuICovCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJc2N0cF9sb2NrX2Fzc2VydChTQ1RQX0lOUF9T
TyhpbnApKTsKICNlbmRpZgogCkBAIC01NDk4LDE3ICs1NDY3LDE4IEBAIHNjdHBfZnJlZV9hc3Nv
YyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIGludCBmcm9t
X2lucGNiZnJlCiAJCS8qIHRoZXJlIGlzIG5vIGFzb2MsIHJlYWxseSBUU05IIDotMCAqLwogCQly
ZXR1cm4gKDEpOwogCX0KKwlTQ1RQX1RDQl9TRU5EX0xPQ0soc3RjYik7CiAJaWYgKHN0Y2ItPmFz
b2MuYWx0ZXJuYXRlKSB7CiAJCXNjdHBfZnJlZV9yZW1vdGVfYWRkcihzdGNiLT5hc29jLmFsdGVy
bmF0ZSk7CiAJCXN0Y2ItPmFzb2MuYWx0ZXJuYXRlID0gTlVMTDsKIAl9Ci0jaWYgIWRlZmluZWQo
X19BUFBMRV9fKSAvKiBURU1QOiBtb3ZlZCB0byBiZWxvdyAqLwotICAgICAgICAvKiBURU1QIENP
REUgKi8KKyNpZiAhKGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KSkKKwkvKiBURU1QIENPREUgKi8KIAlpZiAoc3RjYi0+ZnJlZWRfZnJvbV93aGVyZSA9PSAwKSB7
CiAJCS8qIE9ubHkgcmVjb3JkIHRoZSBmaXJzdCBwbGFjZSBmcmVlIGhhcHBlbmVkIGZyb20gKi8K
IAkJc3RjYi0+ZnJlZWRfZnJvbV93aGVyZSA9IGZyb21fbG9jYXRpb247CiAJfQotICAgICAgICAv
KiBURU1QIENPREUgKi8KKwkvKiBURU1QIENPREUgKi8KICNlbmRpZgogCiAJYXNvYyA9ICZzdGNi
LT5hc29jOwpAQCAtNTUzNCw2ICs1NTA0LDcgQEAgc2N0cF9mcmVlX2Fzc29jKHN0cnVjdCBzY3Rw
X2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgaW50IGZyb21faW5wY2JmcmUKIAkJ
CS8qIG5vcGUsIHJlYWRlciBvciB3cml0ZXIgaW4gdGhlIHdheSAqLwogCQkJc2N0cF90aW1lcl9z
dGFydChTQ1RQX1RJTUVSX1RZUEVfQVNPQ0tJTEwsIGlucCwgc3RjYiwgTlVMTCk7CiAJCQkvKiBu
byBhc29jIGRlc3Ryb3llZCAqLworCQkJU0NUUF9UQ0JfU0VORF9VTkxPQ0soc3RjYik7CiAJCQlT
Q1RQX1RDQl9VTkxPQ0soc3RjYik7CiAjaWZkZWYgU0NUUF9MT0dfQ0xPU0lORwogCQkJc2N0cF9s
b2dfY2xvc2luZyhpbnAsIHN0Y2IsIDgpOwpAQCAtNTU0MSw0MCArNTUxMiwxMSBAQCBzY3RwX2Zy
ZWVfYXNzb2Moc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLCBp
bnQgZnJvbV9pbnBjYmZyZQogCQkJcmV0dXJuICgwKTsKIAkJfQogCX0KLQkvKiBub3cgY2xlYW4g
dXAgYW55IG90aGVyIHRpbWVycyAqLwotCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmYXNvYy0+
ZGFja190aW1lci50aW1lcik7Ci0JYXNvYy0+ZGFja190aW1lci5zZWxmID0gTlVMTDsKLQkodm9p
ZClTQ1RQX09TX1RJTUVSX1NUT1AoJmFzb2MtPnN0cnJlc2V0X3RpbWVyLnRpbWVyKTsKLQkvKi0K
LQkgKiBGb3Igc3RyZWFtIHJlc2V0IHdlIGRvbid0IGJsYXN0IHRoaXMgdW5sZXNzCi0JICogaXQg
aXMgYSBzdHItcmVzZXQgdGltZXIsIGl0IG1pZ2h0IGJlIHRoZQotCSAqIGZyZWUtYXNvYyB0aW1l
ciB3aGljaCB3ZSBET04nVCB3YW50IHRvCi0JICogZGlzdHVyYi4KLQkgKi8KLQlpZiAoYXNvYy0+
c3RycmVzZXRfdGltZXIudHlwZSA9PSBTQ1RQX1RJTUVSX1RZUEVfU1RSUkVTRVQpCi0JCWFzb2Mt
PnN0cnJlc2V0X3RpbWVyLnNlbGYgPSBOVUxMOwotCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgm
YXNvYy0+YXNjb25mX3RpbWVyLnRpbWVyKTsKLQlhc29jLT5hc2NvbmZfdGltZXIuc2VsZiA9IE5V
TEw7Ci0JKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCZhc29jLT5hdXRvY2xvc2VfdGltZXIudGlt
ZXIpOwotCWFzb2MtPmF1dG9jbG9zZV90aW1lci5zZWxmID0gTlVMTDsKLQkodm9pZClTQ1RQX09T
X1RJTUVSX1NUT1AoJmFzb2MtPnNodXRfZ3VhcmRfdGltZXIudGltZXIpOwotCWFzb2MtPnNodXRf
Z3VhcmRfdGltZXIuc2VsZiA9IE5VTEw7Ci0JKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCZhc29j
LT5kZWxheWVkX2V2ZW50X3RpbWVyLnRpbWVyKTsKLQlhc29jLT5kZWxheWVkX2V2ZW50X3RpbWVy
LnNlbGYgPSBOVUxMOwotCS8qIE1vYmlsaXR5IGFkYXB0YXRpb24gKi8KLQkodm9pZClTQ1RQX09T
X1RJTUVSX1NUT1AoJmFzb2MtPmRlbGV0ZV9wcmltX3RpbWVyLnRpbWVyKTsKLQlhc29jLT5kZWxl
dGVfcHJpbV90aW1lci5zZWxmID0gTlVMTDsKLQlUQUlMUV9GT1JFQUNIKG5ldCwgJmFzb2MtPm5l
dHMsIHNjdHBfbmV4dCkgewotCQkodm9pZClTQ1RQX09TX1RJTUVSX1NUT1AoJm5ldC0+cnh0X3Rp
bWVyLnRpbWVyKTsKLQkJbmV0LT5yeHRfdGltZXIuc2VsZiA9IE5VTEw7Ci0JCSh2b2lkKVNDVFBf
T1NfVElNRVJfU1RPUCgmbmV0LT5wbXR1X3RpbWVyLnRpbWVyKTsKLQkJbmV0LT5wbXR1X3RpbWVy
LnNlbGYgPSBOVUxMOwotCQkodm9pZClTQ1RQX09TX1RJTUVSX1NUT1AoJm5ldC0+aGJfdGltZXIu
dGltZXIpOwotCQluZXQtPmhiX3RpbWVyLnNlbGYgPSBOVUxMOwotCX0KKwkvKiBOb3cgY2xlYW4g
dXAgYW55IG90aGVyIHRpbWVycyAqLworCXNjdHBfc3RvcF9hc3NvY2lhdGlvbl90aW1lcnMoc3Rj
YiwgZmFsc2UpOwogCS8qIE5vdyB0aGUgcmVhZCBxdWV1ZSBuZWVkcyB0byBiZSBjbGVhbmVkIHVw
IChvbmx5IG9uY2UpICovCiAJaWYgKChzdGNiLT5hc29jLnN0YXRlICYgU0NUUF9TVEFURV9BQk9V
VF9UT19CRV9GUkVFRCkgPT0gMCkgewotCQlzdGNiLT5hc29jLnN0YXRlIHw9IFNDVFBfU1RBVEVf
QUJPVVRfVE9fQkVfRlJFRUQ7CisJCVNDVFBfQUREX1NVQlNUQVRFKHN0Y2IsIFNDVFBfU1RBVEVf
QUJPVVRfVE9fQkVfRlJFRUQpOwogCQlTQ1RQX0lOUF9SRUFEX0xPQ0soaW5wKTsKIAkJVEFJTFFf
Rk9SRUFDSChzcSwgJmlucC0+cmVhZF9xdWV1ZSwgbmV4dCkgewogCQkJaWYgKHNxLT5zdGNiID09
IHN0Y2IpIHsKQEAgLTU2MjEsOSArNTU2MywxMCBAQCBzY3RwX2ZyZWVfYXNzb2Moc3RydWN0IHNj
dHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLCBpbnQgZnJvbV9pbnBjYmZyZQog
CQlpZiAoKHN0Y2ItPmFzb2MucmVmY250KSAgfHwKIAkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBT
Q1RQX1BDQl9GTEFHU19TT0NLRVRfQUxMR09ORSkgfHwKIAkJICAgIChpbnAtPnNjdHBfZmxhZ3Mg
JiBTQ1RQX1BDQl9GTEFHU19TT0NLRVRfR09ORSkpIHsKLQkJCXN0Y2ItPmFzb2Muc3RhdGUgJj0g
flNDVFBfU1RBVEVfSU5fQUNDRVBUX1FVRVVFOworCQkJU0NUUF9DTEVBUl9TVUJTVEFURShzdGNi
LCBTQ1RQX1NUQVRFX0lOX0FDQ0VQVF9RVUVVRSk7CiAJCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBf
VElNRVJfVFlQRV9BU09DS0lMTCwgaW5wLCBzdGNiLCBOVUxMKTsKIAkJfQorCQlTQ1RQX1RDQl9T
RU5EX1VOTE9DSyhzdGNiKTsKIAkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwogCQlpZiAoKGlucC0+
c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1NPQ0tFVF9BTExHT05FKSB8fAogCQkgICAgKGlu
cC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1NPQ0tFVF9HT05FKSkKQEAgLTU2NjIsMTAg
KzU2MDUsMTIgQEAgc2N0cF9mcmVlX2Fzc29jKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVj
dCBzY3RwX3RjYiAqc3RjYiwgaW50IGZyb21faW5wY2JmcmUKIAlpZiAoZnJvbV9pbnBjYmZyZWUg
PT0gU0NUUF9OT1JNQUxfUFJPQykgewogCQlhdG9taWNfYWRkX2ludCgmc3RjYi0+YXNvYy5yZWZj
bnQsIDEpOwogCisJCVNDVFBfVENCX1NFTkRfVU5MT0NLKHN0Y2IpOwogCQlTQ1RQX1RDQl9VTkxP
Q0soc3RjYik7CiAJCVNDVFBfSU5QX0lORk9fV0xPQ0soKTsKIAkJU0NUUF9JTlBfV0xPQ0soaW5w
KTsKIAkJU0NUUF9UQ0JfTE9DSyhzdGNiKTsKKwkJU0NUUF9UQ0JfU0VORF9MT0NLKHN0Y2IpOwog
CX0KIAkvKiBEb3VibGUgY2hlY2sgdGhlIEdPTkUgZmxhZyAqLwogCWlmICgoaW5wLT5zY3RwX2Zs
YWdzICYgU0NUUF9QQ0JfRkxBR1NfU09DS0VUX0FMTEdPTkUpIHx8CkBAIC01Njg0LDEzICs1NjI5
LDEyIEBAIHNjdHBfZnJlZV9hc3NvYyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0
cF90Y2IgKnN0Y2IsIGludCBmcm9tX2lucGNiZnJlCiAJCQlpbnAtPnNjdHBfZmxhZ3MgfD0gU0NU
UF9QQ0JfRkxBR1NfV0FTX0NPTk5FQ1RFRDsKIAkJCWlmIChzbykgewogCQkJCVNPQ0tCVUZfTE9D
Sygmc28tPnNvX3Jjdik7Ci0JCQkJaWYgKHNvLT5zb19yY3Yuc2JfY2MgPT0gMCkgewotCQkJCQlz
by0+c29fc3RhdGUgJj0gfihTU19JU0NPTk5FQ1RJTkcgfAotCQkJCQkJCSAgU1NfSVNESVNDT05O
RUNUSU5HIHwKLQkJCQkJCQkgIFNTX0lTQ09ORklSTUlORyB8Ci0JCQkJCQkJICBTU19JU0NPTk5F
Q1RFRCk7Ci0JCQkJfQotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorCQkJCXNvLT5zb19zdGF0ZSAm
PSB+KFNTX0lTQ09OTkVDVElORyB8CisJCQkJICAgIFNTX0lTRElTQ09OTkVDVElORyB8CisJCQkJ
ICAgIFNTX0lTQ09ORklSTUlORyB8CisJCQkJICAgIFNTX0lTQ09OTkVDVEVEKTsKKwkJCQlzby0+
c29fc3RhdGUgfD0gU1NfSVNESVNDT05ORUNURUQ7CisjaWYgZGVmaW5lZChfX0FQUExFX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJc29jYW50cmN2bW9yZShzbyk7CiAjZWxzZQog
CQkJCXNvY2FudHJjdm1vcmVfbG9ja2VkKHNvKTsKQEAgLTU3MTEsMTIgKzU2NTUsMTMgQEAgc2N0
cF9mcmVlX2Fzc29jKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3Rj
YiwgaW50IGZyb21faW5wY2JmcmUKIAkJYXRvbWljX2FkZF9pbnQoJnN0Y2ItPmFzb2MucmVmY250
LCAtMSk7CiAJfQogCWlmIChzdGNiLT5hc29jLnJlZmNudCkgewotCQlzdGNiLT5hc29jLnN0YXRl
ICY9IH5TQ1RQX1NUQVRFX0lOX0FDQ0VQVF9RVUVVRTsKKwkJU0NUUF9DTEVBUl9TVUJTVEFURShz
dGNiLCBTQ1RQX1NUQVRFX0lOX0FDQ0VQVF9RVUVVRSk7CiAJCXNjdHBfdGltZXJfc3RhcnQoU0NU
UF9USU1FUl9UWVBFX0FTT0NLSUxMLCBpbnAsIHN0Y2IsIE5VTEwpOwogCQlpZiAoZnJvbV9pbnBj
YmZyZWUgPT0gU0NUUF9OT1JNQUxfUFJPQykgewogCQkJU0NUUF9JTlBfSU5GT19XVU5MT0NLKCk7
CiAJCQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7CiAJCX0KKwkJU0NUUF9UQ0JfU0VORF9VTkxPQ0so
c3RjYik7CiAJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKIAkJcmV0dXJuICgwKTsKIAl9CkBAIC01
NzQxLDIwICs1Njg2LDggQEAgc2N0cF9mcmVlX2Fzc29jKHN0cnVjdCBzY3RwX2lucGNiICppbnAs
IHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgaW50IGZyb21faW5wY2JmcmUKIAkvKiBOb3cgcmVzdG9w
IHRoZSB0aW1lcnMgdG8gYmUgc3VyZQogCSAqIHRoaXMgaXMgcGFyYW5vaWEgYXQgaXMgZmluZXN0
IQogCSAqLwotCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmYXNvYy0+c3RycmVzZXRfdGltZXIu
dGltZXIpOwotCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmYXNvYy0+ZGFja190aW1lci50aW1l
cik7Ci0JKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCZhc29jLT5zdHJyZXNldF90aW1lci50aW1l
cik7Ci0JKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCZhc29jLT5hc2NvbmZfdGltZXIudGltZXIp
OwotCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmYXNvYy0+c2h1dF9ndWFyZF90aW1lci50aW1l
cik7Ci0JKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCZhc29jLT5hdXRvY2xvc2VfdGltZXIudGlt
ZXIpOwotCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmYXNvYy0+ZGVsYXllZF9ldmVudF90aW1l
ci50aW1lcik7Ci0JVEFJTFFfRk9SRUFDSChuZXQsICZhc29jLT5uZXRzLCBzY3RwX25leHQpIHsK
LQkJKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCZuZXQtPnJ4dF90aW1lci50aW1lcik7Ci0JCSh2
b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmbmV0LT5wbXR1X3RpbWVyLnRpbWVyKTsKLQkJKHZvaWQp
U0NUUF9PU19USU1FUl9TVE9QKCZuZXQtPmhiX3RpbWVyLnRpbWVyKTsKLQl9Ci0KLQlhc29jLT5z
dHJyZXNldF90aW1lci50eXBlID0gU0NUUF9USU1FUl9UWVBFX05PTkU7CisJc2N0cF9zdG9wX2Fz
c29jaWF0aW9uX3RpbWVycyhzdGNiLCB0cnVlKTsKKwogCS8qCiAJICogVGhlIGNodW5rIGxpc3Rz
IGFuZCBzdWNoIFNIT1VMRCBiZSBlbXB0eSBidXQgd2UgY2hlY2sgdGhlbSBqdXN0CiAJICogaW4g
Y2FzZS4KQEAgLTU3NjgsNyArNTcwMSw3IEBAIHNjdHBfZnJlZV9hc3NvYyhzdHJ1Y3Qgc2N0cF9p
bnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIGludCBmcm9tX2lucGNiZnJlCiAJCVRB
SUxRX0ZPUkVBQ0hfU0FGRShzcCwgJm91dHMtPm91dHF1ZXVlLCBuZXh0LCBuc3ApIHsKIAkJCWF0
b21pY19zdWJ0cmFjdF9pbnQoJmFzb2MtPnN0cmVhbV9xdWV1ZV9jbnQsIDEpOwogCQkJVEFJTFFf
UkVNT1ZFKCZvdXRzLT5vdXRxdWV1ZSwgc3AsIG5leHQpOwotCQkJc3RjYi0+YXNvYy5zc19mdW5j
dGlvbnMuc2N0cF9zc19yZW1vdmVfZnJvbV9zdHJlYW0oc3RjYiwgYXNvYywgb3V0cywgc3AsIDAp
OworCQkJc3RjYi0+YXNvYy5zc19mdW5jdGlvbnMuc2N0cF9zc19yZW1vdmVfZnJvbV9zdHJlYW0o
c3RjYiwgYXNvYywgb3V0cywgc3AsIDEpOwogCQkJc2N0cF9mcmVlX3NwYnVmc3BhY2Uoc3RjYiwg
YXNvYywgc3ApOwogCQkJaWYgKHNwLT5kYXRhKSB7CiAJCQkJaWYgKHNvKSB7CkBAIC01OTkxLDYg
KzU5MjQsNyBAQCBzY3RwX2ZyZWVfYXNzb2Moc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0
IHNjdHBfdGNiICpzdGNiLCBpbnQgZnJvbV9pbnBjYmZyZQogCS8qIEluc2VydCBuZXcgaXRlbXMg
aGVyZSA6PiAqLwogCiAJLyogR2V0IHJpZCBvZiBMT0NLICovCisJU0NUUF9UQ0JfU0VORF9VTkxP
Q0soc3RjYik7CiAJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwogCVNDVFBfVENCX0xPQ0tfREVTVFJP
WShzdGNiKTsKIAlTQ1RQX1RDQl9TRU5EX0xPQ0tfREVTVFJPWShzdGNiKTsKQEAgLTU5OTgsNyAr
NTkzMiw4IEBAIHNjdHBfZnJlZV9hc3NvYyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qg
c2N0cF90Y2IgKnN0Y2IsIGludCBmcm9tX2lucGNiZnJlCiAJCVNDVFBfSU5QX0lORk9fV1VOTE9D
SygpOwogCQlTQ1RQX0lOUF9STE9DSyhpbnApOwogCX0KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykg
LyogVEVNUCBDT0RFICovCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCisJLyogVEVNUCBDT0RFICovCiAJc3RjYi0+ZnJlZWRfZnJvbV93aGVyZSA9IGZy
b21fbG9jYXRpb247CiAjZW5kaWYKICNpZmRlZiBTQ1RQX1RSQUNLX0ZSRUVEX0FTT0NTCkBAIC02
MDMxLDE2ICs1OTY2LDEyIEBAIHNjdHBfZnJlZV9hc3NvYyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5w
LCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIGludCBmcm9tX2lucGNiZnJlCiAJCQkJCVNDVFBfRlJF
RV9TSE9VTERfVVNFX0dSQUNFRlVMX0NMT1NFLAogCQkJCQlTQ1RQX0NBTExFRF9ESVJFQ1RMWV9O
T0NNUFNFVCk7CiAJCQlTQ1RQX0lOUF9ERUNSX1JFRihpbnApOwotCQkJZ290byBvdXRfb2Y7CiAJ
CX0gZWxzZSB7CiAJCQkvKiBUaGUgc29ja2V0IGlzIHN0aWxsIG9wZW4uICovCiAJCQlTQ1RQX0lO
UF9ERUNSX1JFRihpbnApOworCQkJU0NUUF9JTlBfUlVOTE9DSyhpbnApOwogCQl9CiAJfQotCWlm
IChmcm9tX2lucGNiZnJlZSA9PSBTQ1RQX05PUk1BTF9QUk9DKSB7Ci0JCVNDVFBfSU5QX1JVTkxP
Q0soaW5wKTsKLQl9Ci0gb3V0X29mOgogCS8qIGRlc3Ryb3llZCB0aGUgYXNvYyAqLwogI2lmZGVm
IFNDVFBfTE9HX0NMT1NJTkcKIAlzY3RwX2xvZ19jbG9zaW5nKGlucCwgTlVMTCwgMTEpOwpAQCAt
NjA4OSwyMCArNjAyMCwxMiBAQCBzY3RwX2Rlc3RpbmF0aW9uX2lzX3JlYWNoYWJsZShzdHJ1Y3Qg
c2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzb2NrYWRkciAqZGVzdGFkZHIpCiAJc3dpdGNoIChkZXN0
YWRkci0+c2FfZmFtaWx5KSB7CiAjaWZkZWYgSU5FVDYKIAljYXNlIEFGX0lORVQ2OgotI2lmICEo
ZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19X
aW5kb3dzX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCi0JCWFuc3dlciA9IGlucC0+aW5w
X3ZmbGFnICYgSU5QX0lQVjY7Ci0jZWxzZQogCQlhbnN3ZXIgPSBpbnAtPmlwX2lucC5pbnAuaW5w
X3ZmbGFnICYgSU5QX0lQVjY7Ci0jZW5kaWYKIAkJYnJlYWs7CiAjZW5kaWYKICNpZmRlZiBJTkVU
CiAJY2FzZSBBRl9JTkVUOgotI2lmICEoZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChf
X0FQUExFX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykpCi0JCWFuc3dlciA9IGlucC0+aW5wX3ZmbGFnICYgSU5QX0lQVjQ7Ci0jZWxzZQogCQlhbnN3
ZXIgPSBpbnAtPmlwX2lucC5pbnAuaW5wX3ZmbGFnICYgSU5QX0lQVjQ7Ci0jZW5kaWYKIAkJYnJl
YWs7CiAjZW5kaWYKICNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCkBAIC02MTI3LDExICs2MDUw
LDcgQEAgc2N0cF91cGRhdGVfZXBfdmZsYWcoc3RydWN0IHNjdHBfaW5wY2IgKmlucCkKIAlzdHJ1
Y3Qgc2N0cF9sYWRkciAqbGFkZHI7CiAKIAkvKiBmaXJzdCBjbGVhciB0aGUgZmxhZyAqLwotI2lm
ICEoZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQo
X19XaW5kb3dzX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCi0JaW5wLT5pbnBfdmZsYWcg
PSAwOwotI2Vsc2UKIAlpbnAtPmlwX2lucC5pbnAuaW5wX3ZmbGFnID0gMDsKLSNlbmRpZgogCS8q
IHNldCB0aGUgZmxhZyBiYXNlZCBvbiBhZGRyZXNzZXMgb24gdGhlIGVwIGxpc3QgKi8KIAlMSVNU
X0ZPUkVBQ0gobGFkZHIsICZpbnAtPnNjdHBfYWRkcl9saXN0LCBzY3RwX254dF9hZGRyKSB7CiAJ
CWlmIChsYWRkci0+aWZhID09IE5VTEwpIHsKQEAgLTYxNDYsMjAgKzYwNjUsMTIgQEAgc2N0cF91
cGRhdGVfZXBfdmZsYWcoc3RydWN0IHNjdHBfaW5wY2IgKmlucCkKIAkJc3dpdGNoIChsYWRkci0+
aWZhLT5hZGRyZXNzLnNhLnNhX2ZhbWlseSkgewogI2lmZGVmIElORVQ2CiAJCWNhc2UgQUZfSU5F
VDY6Ci0jaWYgIShkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwg
ZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkKLQkJCWlucC0+
aW5wX3ZmbGFnIHw9IElOUF9JUFY2OwotI2Vsc2UKIAkJCWlucC0+aXBfaW5wLmlucC5pbnBfdmZs
YWcgfD0gSU5QX0lQVjY7Ci0jZW5kaWYKIAkJCWJyZWFrOwogI2VuZGlmCiAjaWZkZWYgSU5FVAog
CQljYXNlIEFGX0lORVQ6Ci0jaWYgIShkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9f
QVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9f
KSkKLQkJCWlucC0+aW5wX3ZmbGFnIHw9IElOUF9JUFY0OwotI2Vsc2UKIAkJCWlucC0+aXBfaW5w
LmlucC5pbnBfdmZsYWcgfD0gSU5QX0lQVjQ7Ci0jZW5kaWYKIAkJCWJyZWFrOwogI2VuZGlmCiAj
aWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQpAQCAtNjIxNiwyMCArNjEyNywxMiBAQCBzY3RwX2Fk
ZF9sb2NhbF9hZGRyX2VwKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX2lmYSAq
aWZhLCB1aW50MzJfdCBhYwogCQlzd2l0Y2ggKGlmYS0+YWRkcmVzcy5zYS5zYV9mYW1pbHkpIHsK
ICNpZmRlZiBJTkVUNgogCQljYXNlIEFGX0lORVQ2OgotI2lmICEoZGVmaW5lZChfX0ZyZWVCU0Rf
XykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pIHx8IGRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykpCi0JCQlpbnAtPmlucF92ZmxhZyB8PSBJTlBfSVBWNjsKLSNlbHNl
CiAJCQlpbnAtPmlwX2lucC5pbnAuaW5wX3ZmbGFnIHw9IElOUF9JUFY2OwotI2VuZGlmCiAJCQli
cmVhazsKICNlbmRpZgogI2lmZGVmIElORVQKIAkJY2FzZSBBRl9JTkVUOgotI2lmICEoZGVmaW5l
ZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19XaW5kb3dz
X18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCi0JCQlpbnAtPmlucF92ZmxhZyB8PSBJTlBf
SVBWNDsKLSNlbHNlCiAJCQlpbnAtPmlwX2lucC5pbnAuaW5wX3ZmbGFnIHw9IElOUF9JUFY0Owot
I2VuZGlmCiAJCQlicmVhazsKICNlbmRpZgogI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKQEAg
LTYzMjMsNiArNjIyNiw5IEBAIHNjdHBfZGVsX2xvY2FsX2FkZHJfZXAoc3RydWN0IHNjdHBfaW5w
Y2IgKmlucCwgc3RydWN0IHNjdHBfaWZhICppZmEpCiAJCQlUQUlMUV9GT1JFQUNIKG5ldCwgJnN0
Y2ItPmFzb2MubmV0cywgc2N0cF9uZXh0KSB7CiAJCQkJaWYgKG5ldC0+cm8uX3NfYWRkciA9PSBs
YWRkci0+aWZhKSB7CiAJCQkJCS8qIFllcCwgcHVyZ2Ugc3JjIGFkZHJlc3Mgc2VsZWN0ZWQgKi8K
KyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQkJ
CQlST19OSEZSRUUoJm5ldC0+cm8pOworI2Vsc2UKIAkJCQkJc2N0cF9ydGVudHJ5X3QgKnJ0Owog
CiAJCQkJCS8qIGRlbGV0ZSB0aGlzIGFkZHJlc3MgaWYgY2FjaGVkICovCkBAIC02MzMxLDYgKzYy
MzcsNyBAQCBzY3RwX2RlbF9sb2NhbF9hZGRyX2VwKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0
cnVjdCBzY3RwX2lmYSAqaWZhKQogCQkJCQkJUlRGUkVFKHJ0KTsKIAkJCQkJCW5ldC0+cm8ucm9f
cnQgPSBOVUxMOwogCQkJCQl9CisjZW5kaWYKIAkJCQkJc2N0cF9mcmVlX2lmYShuZXQtPnJvLl9z
X2FkZHIpOwogCQkJCQluZXQtPnJvLl9zX2FkZHIgPSBOVUxMOwogCQkJCQluZXQtPnNyY19hZGRy
X3NlbGVjdGVkID0gMDsKQEAgLTY0MjYsMjAgKzYzMzMsMTcgQEAgc2N0cF9kZWxfbG9jYWxfYWRk
cl9yZXN0cmljdGVkKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfaWZhICppZmEp
CiAJcmV0dXJuOwogfQogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKLS8qCi0gKiBUZW1wb3Jh
cmlseSByZW1vdmUgZm9yIF9fQVBQTEVfXyB1bnRpbCB3ZSB1c2UgdGhlIFRpZ2VyIGVxdWl2YWxl
bnRzCi0gKi8KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogLyogc3lzY3RsICovCiBzdGF0aWMgaW50IHNjdHBfbWF4X251bWJlcl9vZl9hc3NvYyA9
IFNDVFBfTUFYX05VTV9PRl9BU09DOwogc3RhdGljIGludCBzY3RwX3NjYWxlX3VwX2Zvcl9hZGRy
ZXNzID0gU0NUUF9TQ0FMRV9GT1JfQUREUjsKLSNlbmRpZgkJCQkvKiBGcmVlQlNEIHx8IEFQUExF
ICovCi0KLQorI2VuZGlmCiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBkZWZpbmVkKFND
VFBfTUNPUkVfSU5QVVQpICYmIGRlZmluZWQoU01QKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaWYgZGVmaW5lZChTQ1RQX01DT1JFX0lOUFVU
KSAmJiBkZWZpbmVkKFNNUCkKIHN0cnVjdCBzY3RwX21jb3JlX2N0cmwgKnNjdHBfbWNvcmVfd29y
a2VycyA9IE5VTEw7CiBpbnQgKnNjdHBfY3B1YXJyeSA9IE5VTEw7CisKIHZvaWQKIHNjdHBfcXVl
dWVfdG9fbWNvcmUoc3RydWN0IG1idWYgKm0sIGludCBvZmYsIGludCBjcHVfdG9fdXNlKQogewpA
QCAtNjQ0Nyw2ICs2MzUxLDcgQEAgc2N0cF9xdWV1ZV90b19tY29yZShzdHJ1Y3QgbWJ1ZiAqbSwg
aW50IG9mZiwgaW50IGNwdV90b191c2UpCiAJc3RydWN0IHNjdHBfbWNvcmVfcXVldWUgKnFlbnQ7
CiAJc3RydWN0IHNjdHBfbWNvcmVfY3RybCAqd2txOwogCWludCBuZWVkX3dha2UgPSAwOworCiAJ
aWYgKHNjdHBfbWNvcmVfd29ya2VycyA9PSBOVUxMKSB7CiAJCS8qIFNvbWV0aGluZyB3ZW50IHdh
eSBiYWQgZHVyaW5nIHNldHVwICovCiAJCXNjdHBfaW5wdXRfd2l0aF9wb3J0KG0sIG9mZiwgMCk7
CkBAIC02NDYwLDkgKzYzNjUsNyBAQCBzY3RwX3F1ZXVlX3RvX21jb3JlKHN0cnVjdCBtYnVmICpt
LCBpbnQgb2ZmLCBpbnQgY3B1X3RvX3VzZSkKIAkJc2N0cF9pbnB1dF93aXRoX3BvcnQobSwgb2Zm
LCAwKTsKIAkJcmV0dXJuOwogCX0KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVC
U0RfdmVyc2lvbiA+PSA4MDEwMDAKIAlxZW50LT52biA9IGN1cnZuZXQ7Ci0jZW5kaWYKIAlxZW50
LT5tID0gbTsKIAlxZW50LT5vZmYgPSBvZmY7CiAJcWVudC0+djYgPSAwOwpAQCAtNjUxNCw5ICs2
NDE3LDcgQEAgc2N0cF9tY29yZV90aHJlYWQodm9pZCAqYXJnKQogCQlpZiAocWVudCkgewogCQkJ
VEFJTFFfUkVNT1ZFKCZ3a3EtPnF1ZSwgcWVudCwgbmV4dCk7CiAJCQlTQ1RQX01DT1JFX1FVTkxP
Q0sod2txKTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+
PSA4MDEwMDAKIAkJCUNVUlZORVRfU0VUKHFlbnQtPnZuKTsKLSNlbmRpZgogCQkJbSA9IHFlbnQt
Pm07CiAJCQlvZmYgPSBxZW50LT5vZmY7CiAJCQl2NiA9IHFlbnQtPnY2OwpAQCAtNjUyNyw5ICs2
NDI4LDcgQEAgc2N0cF9tY29yZV90aHJlYWQodm9pZCAqYXJnKQogCQkJCVNDVFBfUFJJTlRGKCJW
NiBub3QgeWV0IHN1cHBvcnRlZFxuIik7CiAJCQkJc2N0cF9tX2ZyZWVtKG0pOwogCQkJfQotI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMTAwMAogCQkJ
Q1VSVk5FVF9SRVNUT1JFKCk7Ci0jZW5kaWYKIAkJCVNDVFBfTUNPUkVfUUxPQ0sod2txKTsKIAkJ
fQogCQl3a3EtPnJ1bm5pbmcgPSAwOwpAQCAtNjU4MywzMCArNjQ4MiwyMSBAQCBzY3RwX3N0YXJ0
dXBfbWNvcmVfdGhyZWFkcyh2b2lkKQogCQkJaSsrOwogCQl9CiAJfQotCiAJLyogTm93IHN0YXJ0
IHRoZW0gYWxsICovCiAJQ1BVX0ZPUkVBQ0goY3B1KSB7Ci0jaWYgX19GcmVlQlNEX3ZlcnNpb24g
PD0gNzAxMDAwCi0JCSh2b2lkKWt0aHJlYWRfY3JlYXRlKHNjdHBfbWNvcmVfdGhyZWFkLAotCQkJ
CSAgICAgKHZvaWQgKikmc2N0cF9tY29yZV93b3JrZXJzW2NwdV0sCi0JCQkJICAgICAmc2N0cF9t
Y29yZV93b3JrZXJzW2NwdV0udGhyZWFkX3Byb2MsCi0JCQkJICAgICBSRlBST0MsCi0JCQkJICAg
ICBTQ1RQX0tUSFJFQURfUEFHRVMsCi0JCQkJICAgICBTQ1RQX01DT1JFX05BTUUpOwotCi0jZWxz
ZQogCQkodm9pZClrcHJvY19jcmVhdGUoc2N0cF9tY29yZV90aHJlYWQsCiAJCQkJICAgKHZvaWQg
Kikmc2N0cF9tY29yZV93b3JrZXJzW2NwdV0sCiAJCQkJICAgJnNjdHBfbWNvcmVfd29ya2Vyc1tj
cHVdLnRocmVhZF9wcm9jLAogCQkJCSAgIFJGUFJPQywKIAkJCQkgICBTQ1RQX0tUSFJFQURfUEFH
RVMsCiAJCQkJICAgU0NUUF9NQ09SRV9OQU1FKTsKLSNlbmRpZgotCiAJfQogfQogI2VuZGlmCi0j
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX2NjX3ZlcnNpb24gPj0gMTMwMDAw
MAorI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQorI2lmIGRlZmluZWQoU0NUUF9OT1RfWUVUKQogc3RhdGljIHN0cnVjdCBtYnVmICoK
IHNjdHBfbmV0aXNyX2hkbHIoc3RydWN0IG1idWYgKm0sIHVpbnRwdHJfdCBzb3VyY2UpCiB7CkBA
IC02NjMyLDE0ICs2NTIyLDE5IEBAIHNjdHBfbmV0aXNyX2hkbHIoc3RydWN0IG1idWYgKm0sIHVp
bnRwdHJfdCBzb3VyY2UpCiAJdGFnID0gaHRvbmwoc2gtPnZfdGFnKTsKIAlmbG93aWQgPSB0YWcg
XiBudG9ocyhzaC0+ZGVzdF9wb3J0KSBeIG50b2hzKHNoLT5zcmNfcG9ydCk7CiAJbS0+bV9wa3Ro
ZHIuZmxvd2lkID0gZmxvd2lkOwotLyogRklYIE1FICovCisJLyogRklYIE1FICovCiAJbS0+bV9m
bGFncyB8PSBNX0ZMT1dJRDsKIAlyZXR1cm4gKG0pOwogfQotI2VuZGlmCiAKKyNlbmRpZgorI2Vu
ZGlmCiB2b2lkCi1zY3RwX3BjYl9pbml0KCkKKyNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCitz
Y3RwX3BjYl9pbml0KGludCBzdGFydF90aHJlYWRzKQorI2Vsc2UKK3NjdHBfcGNiX2luaXQodm9p
ZCkKKyNlbmRpZgogewogCS8qCiAJICogU0NUUCBpbml0aWFsaXphdGlvbiBmb3IgdGhlIFBDQiBz
dHJ1Y3R1cmVzIHNob3VsZCBiZSBjYWxsZWQgYnkKQEAgLTY2NTUsNyArNjU1MCw3IEBAIHNjdHBf
cGNiX2luaXQoKQogCVNDVFBfQkFTRV9WQVIoc2N0cF9wY2JfaW5pdGlhbGl6ZWQpID0gMTsKIAog
I2lmIGRlZmluZWQoU0NUUF9QUk9DRVNTX0xFVkVMX0xPQ0tTKQotI2lmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX29zX1dpbmRvd3MpCisjaWYgIWRlZmluZWQoX1dJTjMyKQogCXB0aHJlYWRfbXV0ZXhh
dHRyX2luaXQoJlNDVFBfQkFTRV9WQVIobXR4X2F0dHIpKTsKICNpZmRlZiBJTlZBUklBTlRTCiAJ
cHRocmVhZF9tdXRleGF0dHJfc2V0dHlwZSgmU0NUUF9CQVNFX1ZBUihtdHhfYXR0ciksIFBUSFJF
QURfTVVURVhfRVJST1JDSEVDSyk7CkBAIC02NjYzLDcgKzY1NTgsNyBAQCBzY3RwX3BjYl9pbml0
KCkKICNlbmRpZgogI2VuZGlmCiAjaWYgZGVmaW5lZChTQ1RQX0xPQ0FMX1RSQUNFX0JVRikKLSNp
ZiBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogCWlmIChTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbG9nKSAhPSBOVUxMKSB7
CiAJCW1lbXNldChTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbG9nKSwgMCwgc2l6ZW9mKHN0cnVjdCBz
Y3RwX2xvZykpOwogCX0KQEAgLTY2NzEsMTYgKzY1NjYsMjQgQEAgc2N0cF9wY2JfaW5pdCgpCiAJ
bWVtc2V0KCZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbG9nKSwgMCwgc2l6ZW9mKHN0cnVjdCBzY3Rw
X2xvZykpOwogI2VuZGlmCiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBkZWZp
bmVkKFNNUCkgJiYgZGVmaW5lZChTQ1RQX1VTRV9QRVJDUFVfU1RBVCkKKyNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmIGRlZmluZWQoU01QKSAm
JiBkZWZpbmVkKFNDVFBfVVNFX1BFUkNQVV9TVEFUKQogCVNDVFBfTUFMTE9DKFNDVFBfQkFTRV9T
VEFUUywgc3RydWN0IHNjdHBzdGF0ICosCiAJCSAgICAoKG1wX21heGlkKzEpICogc2l6ZW9mKHN0
cnVjdCBzY3Rwc3RhdCkpLAogCQkgICAgU0NUUF9NX01DT1JFKTsKKyNlbmRpZgogI2VuZGlmCiAJ
KHZvaWQpU0NUUF9HRVRUSU1FX1RJTUVWQUwoJnR2KTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiBkZWZpbmVkKFNNUCkgJiYgZGVmaW5lZChTQ1RQX1VTRV9QRVJDUFVfU1RBVCkKKyNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmIGRlZmlu
ZWQoU01QKSAmJiBkZWZpbmVkKFNDVFBfVVNFX1BFUkNQVV9TVEFUKQogCW1lbXNldChTQ1RQX0JB
U0VfU1RBVFMsIDAsIHNpemVvZihzdHJ1Y3Qgc2N0cHN0YXQpICogKG1wX21heGlkKzEpKTsKIAlT
Q1RQX0JBU0VfU1RBVFNbUENQVV9HRVQoY3B1aWQpXS5zY3Rwc19kaXNjb250aW51aXR5dGltZS50
dl9zZWMgPSAodWludDMyX3QpdHYudHZfc2VjOwogCVNDVFBfQkFTRV9TVEFUU1tQQ1BVX0dFVChj
cHVpZCldLnNjdHBzX2Rpc2NvbnRpbnVpdHl0aW1lLnR2X3VzZWMgPSAodWludDMyX3QpdHYudHZf
dXNlYzsKKyNlbHNlCisJbWVtc2V0KCZTQ1RQX0JBU0VfU1RBVFMsIDAsIHNpemVvZihzdHJ1Y3Qg
c2N0cHN0YXQpKTsKKwlTQ1RQX0JBU0VfU1RBVChzY3Rwc19kaXNjb250aW51aXR5dGltZSkudHZf
c2VjID0gKHVpbnQzMl90KXR2LnR2X3NlYzsKKwlTQ1RQX0JBU0VfU1RBVChzY3Rwc19kaXNjb250
aW51aXR5dGltZSkudHZfdXNlYyA9ICh1aW50MzJfdCl0di50dl91c2VjOworI2VuZGlmCiAjZWxz
ZQogCW1lbXNldCgmU0NUUF9CQVNFX1NUQVRTLCAwLCBzaXplb2Yoc3RydWN0IHNjdHBzdGF0KSk7
CiAJU0NUUF9CQVNFX1NUQVQoc2N0cHNfZGlzY29udGludWl0eXRpbWUpLnR2X3NlYyA9ICh1aW50
MzJfdCl0di50dl9zZWM7CkBAIC02Njg4LDcgKzY1OTEsNyBAQCBzY3RwX3BjYl9pbml0KCkKICNl
bmRpZgogCS8qIGluaXQgdGhlIGVtcHR5IGxpc3Qgb2YgKEFsbCkgRW5kcG9pbnRzICovCiAJTElT
VF9JTklUKCZTQ1RQX0JBU0VfSU5GTyhsaXN0aGVhZCkpOwotI2lmIGRlZmluZWQoX19BUFBMRV9f
KQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCUxJ
U1RfSU5JVCgmU0NUUF9CQVNFX0lORk8oaW5wbGlzdGhlYWQpKTsKICNpZiBkZWZpbmVkKEFQUExF
X0xFT1BBUkQpIHx8IGRlZmluZWQoQVBQTEVfU05PV0xFT1BBUkQpIHx8IGRlZmluZWQoQVBQTEVf
TElPTikgfHwgZGVmaW5lZChBUFBMRV9NT1VOVEFJTkxJT04pCiAJU0NUUF9CQVNFX0lORk8oc2N0
YmluZm8pLmxpc3RoZWFkID0gJlNDVFBfQkFTRV9JTkZPKGlucGxpc3RoZWFkKTsKQEAgLTY3MTMs
MTkgKzY2MTYsMTAgQEAgc2N0cF9wY2JfaW5pdCgpCiAKIAogCS8qIGluaXQgdGhlIGhhc2ggdGFi
bGUgb2YgZW5kcG9pbnRzICovCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKLSNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9jY192ZXJzaW9uKSAmJiBfX0ZyZWVCU0RfY2NfdmVyc2lvbiA+PSA0NDAwMDAK
KyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCVRV
TkFCTEVfSU5UX0ZFVENIKCJuZXQuaW5ldC5zY3RwLnRjYmhhc2hzaXplIiwgJlNDVFBfQkFTRV9T
WVNDVEwoc2N0cF9oYXNodGJsc2l6ZSkpOwogCVRVTkFCTEVfSU5UX0ZFVENIKCJuZXQuaW5ldC5z
Y3RwLnBjYmhhc2hzaXplIiwgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9wY2J0YmxzaXplKSk7CiAJ
VFVOQUJMRV9JTlRfRkVUQ0goIm5ldC5pbmV0LnNjdHAuY2h1bmtzY2FsZSIsICZTQ1RQX0JBU0Vf
U1lTQ1RMKHNjdHBfY2h1bmtzY2FsZSkpOwotI2Vsc2UKLQlUVU5BQkxFX0lOVF9GRVRDSCgibmV0
LmluZXQuc2N0cC50Y2JoYXNoc2l6ZSIsIFNDVFBfVENCSEFTSFNJWkUsCi0JCQkgIFNDVFBfQkFT
RV9TWVNDVEwoc2N0cF9oYXNodGJsc2l6ZSkpOwotCVRVTkFCTEVfSU5UX0ZFVENIKCJuZXQuaW5l
dC5zY3RwLnBjYmhhc2hzaXplIiwgU0NUUF9QQ0JIQVNIU0laRSwKLQkJCSAgU0NUUF9CQVNFX1NZ
U0NUTChzY3RwX3BjYnRibHNpemUpKTsKLQlUVU5BQkxFX0lOVF9GRVRDSCgibmV0LmluZXQuc2N0
cC5jaHVua3NjYWxlIiwgU0NUUF9DSFVOS1FVRVVFX1NDQUxFLAotCQkJICBTQ1RQX0JBU0VfU1lT
Q1RMKHNjdHBfY2h1bmtzY2FsZSkpOwotI2VuZGlmCiAjZW5kaWYKIAlTQ1RQX0JBU0VfSU5GTyhz
Y3RwX2Fzb2NoYXNoKSA9IFNDVFBfSEFTSF9JTklUKChTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfaGFz
aHRibHNpemUpICogMzEpLAogCQkJCQkJICAgICAgICZTQ1RQX0JBU0VfSU5GTyhoYXNoYXNvY21h
cmspKTsKQEAgLTY4MjAsNyArNjcxNCw3IEBAIHNjdHBfcGNiX2luaXQoKQogCQlMSVNUX0lOSVQo
JlNDVFBfQkFTRV9JTkZPKHZ0YWdfdGltZXdhaXQpW2ldKTsKIAl9CiAjaWYgZGVmaW5lZChTQ1RQ
X1BST0NFU1NfTEVWRUxfTE9DS1MpCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dz
KQorI2lmIGRlZmluZWQoX1dJTjMyKQogCUluaXRpYWxpemVDb25kaXRpb25WYXJpYWJsZSgmc2N0
cF9pdF9jdGwuaXRlcmF0b3Jfd2FrZXVwKTsKICNlbHNlCiAJKHZvaWQpcHRocmVhZF9jb25kX2lu
aXQoJnNjdHBfaXRfY3RsLml0ZXJhdG9yX3dha2V1cCwgTlVMTCk7CkBAIC02ODI4LDE5ICs2NzIy
LDE5IEBAIHNjdHBfcGNiX2luaXQoKQogI2VuZGlmCiAJc2N0cF9zdGFydHVwX2l0ZXJhdG9yKCk7
CiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBkZWZpbmVkKFNDVFBfTUNPUkVfSU5QVVQp
ICYmIGRlZmluZWQoU01QKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCisjaWYgZGVmaW5lZChTQ1RQX01DT1JFX0lOUFVUKSAmJiBkZWZpbmVkKFNN
UCkKIAlzY3RwX3N0YXJ0dXBfbWNvcmVfdGhyZWFkcygpOworI2VuZGlmCiAjZW5kaWYKIAotI2lm
bmRlZiBfX1BhbmRhX18KIAkvKgogCSAqIElOSVQgdGhlIGRlZmF1bHQgVlJGIHdoaWNoIGZvciBC
U0QgaXMgdGhlIG9ubHkgb25lLCBvdGhlciBPL1MncwogCSAqIG1heSBoYXZlIG1vcmUuIEJ1dCBp
bml0aWFsbHkgdGhleSBtdXN0IHN0YXJ0IHdpdGggb25lIGFuZCB0aGVuCiAJICogYWRkIHRoZSBW
UkYncyBhcyBhZGRyZXNzZXMgYXJlIGFkZGVkLgogCSAqLwogCXNjdHBfaW5pdF92cmZfbGlzdChT
Q1RQX0RFRkFVTFRfVlJGKTsKLSNlbmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9f
RnJlZUJTRF9jY192ZXJzaW9uID49IDEzMDAwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKSAmJiBkZWZpbmVkKFNDVFBfTk9UX1lFVCkKIAlpZiAo
aXBfcmVnaXN0ZXJfZmxvd19oYW5kbGVyKHNjdHBfbmV0aXNyX2hkbHIsIElQUFJPVE9fU0NUUCkp
IHsKIAkJU0NUUF9QUklOVEYoIioqKlNDVFAtIEVycm9yIGNhbid0IHJlZ2lzdGVyIG5ldGlzciBo
YW5kbGVyKioqXG4iKTsKIAl9CkBAIC02ODUyLDggKzY3NDYsMTAgQEAgc2N0cF9wY2JfaW5pdCgp
CiAjZW5kaWYKICNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJbWJ1Zl9pbml0aWFsaXplKE5V
TEwpOworCWF0b21pY19pbml0KCk7CiAjaWYgZGVmaW5lZChJTkVUKSB8fCBkZWZpbmVkKElORVQ2
KQotCXJlY3ZfdGhyZWFkX2luaXQoKTsKKwlpZiAoc3RhcnRfdGhyZWFkcykKKwkJcmVjdl90aHJl
YWRfaW5pdCgpOwogI2VuZGlmCiAjZW5kaWYKIH0KQEAgLTY4NzksMTQgKzY3NzUsMTQgQEAgc2N0
cF9wY2JfZmluaXNoKHZvaWQpCiAJCXJldHVybjsKIAl9CiAJU0NUUF9CQVNFX1ZBUihzY3RwX3Bj
Yl9pbml0aWFsaXplZCkgPSAwOwotI2lmICFkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmICEoZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAJLyogTm90aWZ5
IHRoZSBpdGVyYXRvciB0byBleGl0LiAqLwogCVNDVFBfSVBJX0lURVJBVE9SX1dRX0xPQ0soKTsK
IAlzY3RwX2l0X2N0bC5pdGVyYXRvcl9mbGFncyB8PSBTQ1RQX0lURVJBVE9SX01VU1RfRVhJVDsK
IAlzY3RwX3dha2V1cF9pdGVyYXRvcigpOwogCVNDVFBfSVBJX0lURVJBVE9SX1dRX1VOTE9DSygp
OwogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaWYgIWRlZmluZWQoQVBQTEVfTEVPUEFSRCkg
JiYgIWRlZmluZWQoQVBQTEVfU05PV0xFT1BBUkQpICYmICFkZWZpbmVkKEFQUExFX0xJT04pICYm
ICFkZWZpbmVkKEFQUExFX01PVU5UQUlOTElPTikKIAlpbl9wY2JpbmZvX2RldGFjaCgmU0NUUF9C
QVNFX0lORk8oc2N0YmluZm8pKTsKICNlbmRpZgpAQCAtNjg5OSw3ICs2Nzk1LDcgQEAgc2N0cF9w
Y2JfZmluaXNoKHZvaWQpCiAJdGhyZWFkX2RlYWxsb2NhdGUoc2N0cF9pdF9jdGwudGhyZWFkX3By
b2MpOwogCVNDVFBfSVBJX0lURVJBVE9SX1dRX1VOTE9DSygpOwogI2VuZGlmCi0jaWYgZGVmaW5l
ZChfX1dpbmRvd3NfXykKKyNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKIAlpZiAoc2N0cF9pdF9jdGwuaXRlcmF0b3JfdGhyZWFkX29iaiAhPSBOVUxMKSB7CiAJ
CU5UU1RBVFVTIHN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOwogCkBAIC02OTEzLDggKzY4MDksOCBA
QCBzY3RwX3BjYl9maW5pc2godm9pZCkKIAl9CiAjZW5kaWYKICNpZiBkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCi0JaWYgKHNjdHBfaXRfY3RsLnRocmVhZF9wcm9jKSB7Ci0jaWYgZGVmaW5lZChfX1Vz
ZXJzcGFjZV9vc19XaW5kb3dzKQorCWlmIChTQ1RQX0JBU0VfVkFSKGl0ZXJhdG9yX3RocmVhZF9z
dGFydGVkKSkgeworI2lmIGRlZmluZWQoX1dJTjMyKQogCQlXYWl0Rm9yU2luZ2xlT2JqZWN0KHNj
dHBfaXRfY3RsLnRocmVhZF9wcm9jLCBJTkZJTklURSk7CiAJCUNsb3NlSGFuZGxlKHNjdHBfaXRf
Y3RsLnRocmVhZF9wcm9jKTsKIAkJc2N0cF9pdF9jdGwudGhyZWFkX3Byb2MgPSBOVUxMOwpAQCAt
NjkyNSw3ICs2ODIxLDcgQEAgc2N0cF9wY2JfZmluaXNoKHZvaWQpCiAJfQogI2VuZGlmCiAjaWYg
ZGVmaW5lZChTQ1RQX1BST0NFU1NfTEVWRUxfTE9DS1MpCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFj
ZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogCURlbGV0ZUNvbmRpdGlvblZhcmlh
YmxlKCZzY3RwX2l0X2N0bC5pdGVyYXRvcl93YWtldXApOwogI2Vsc2UKIAlwdGhyZWFkX2NvbmRf
ZGVzdHJveSgmc2N0cF9pdF9jdGwuaXRlcmF0b3Jfd2FrZXVwKTsKQEAgLTY5MzcsMTcgKzY4MzMs
MTcgQEAgc2N0cF9wY2JfZmluaXNoKHZvaWQpCiAJICogVGhlIG9ubHkgd2F5IEZyZWVCU0QgcmVh
Y2hlcyBoZXJlIGlzIGlmIHdlIGhhdmUgVlJGJ3MKIAkgKiBidXQgd2Ugc3RpbGwgYWRkIHRoZSBp
ZmRlZiB0byBtYWtlIGl0IGNvbXBpbGUgb24gb2xkIHZlcnNpb25zLgogCSAqLwotI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKIHJldHJ5OgogI2VuZGlmCiAJU0NUUF9JUElfSVRFUkFUT1JfV1FfTE9DSygp
OwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkvKgogCSAqIHNjdHBfaXRlcmF0b3Jfd29ya2VyKCkg
bWlnaHQgYmUgd29ya2luZyBvbiBhbiBpdCBlbnRyeSB3aXRob3V0CiAJICogaG9sZGluZyB0aGUg
bG9jay4gIFdlIHdvbid0IGZpbmQgaXQgb24gdGhlIGxpc3QgZWl0aGVyIGFuZAogCSAqIGNvbnRp
bnVlIGFuZCBmcmVlL2Rlc3Ryb3kgaXQuICBXaGlsZSBob2xkaW5nIHRoZSBsb2NrLCBzcGluLCB0
bwogCSAqIGF2b2lkIHRoZSByYWNlIGNvbmRpdGlvbiBhcyBzY3RwX2l0ZXJhdG9yX3dvcmtlcigp
IHdpbGwgaGF2ZSB0bwotCSAqIHdhaXQgdG8gcmUtYXF1aXJlIHRoZSBsb2NrLgorCSAqIHdhaXQg
dG8gcmUtYWNxdWlyZSB0aGUgbG9jay4KIAkgKi8KIAlpZiAoc2N0cF9pdF9jdGwuaXRlcmF0b3Jf
cnVubmluZyAhPSAwIHx8IHNjdHBfaXRfY3RsLmN1cl9pdCAhPSBOVUxMKSB7CiAJCVNDVFBfSVBJ
X0lURVJBVE9SX1dRX1VOTE9DSygpOwpAQCAtNjk1OCw3ICs2ODU0LDcgQEAgcmV0cnk6CiAJfQog
I2VuZGlmCiAJVEFJTFFfRk9SRUFDSF9TQUZFKGl0LCAmc2N0cF9pdF9jdGwuaXRlcmF0b3JoZWFk
LCBzY3RwX254dF9pdHIsIG5pdCkgewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJl
ZUJTRF92ZXJzaW9uID49IDgwMTAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAJCWlmIChpdC0+dm4gIT0gY3Vydm5ldCkgewogCQkJY29udGlu
dWU7CiAJCX0KQEAgLTY5NzAsNyArNjg2Niw3IEBAIHJldHJ5OgogCQlTQ1RQX0ZSRUUoaXQsU0NU
UF9NX0lURVIpOwogCX0KIAlTQ1RQX0lQSV9JVEVSQVRPUl9XUV9VTkxPQ0soKTsKLSNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDEwMDAKKyNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCVNDVFBfSVRFUkFU
T1JfTE9DSygpOwogCWlmICgoc2N0cF9pdF9jdGwuY3VyX2l0KSAmJgogCSAgICAoc2N0cF9pdF9j
dGwuY3VyX2l0LT52biA9PSBjdXJ2bmV0KSkgewpAQCAtNjk3OCw3ICs2ODc0LDcgQEAgcmV0cnk6
CiAJfQogCVNDVFBfSVRFUkFUT1JfVU5MT0NLKCk7CiAjZW5kaWYKLSNpZiAhZGVmaW5lZChfX0Zy
ZWVCU0RfXykKKyNpZiAhKGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pKQogCVNDVFBfSVBJX0lURVJBVE9SX1dRX0RFU1RST1koKTsKIAlTQ1RQX0lURVJBVE9S
X0xPQ0tfREVTVFJPWSgpOwogI2VuZGlmCkBAIC02OTk4LDYgKzY4OTQsNyBAQCByZXRyeToKIAkg
KiBmcmVlIHRoZSB2cmYvaWZuL2lmYSBsaXN0cyBhbmQgaGFzaGVzIChiZSBzdXJlIGFkZHJlc3Mg
bW9uaXRvcgogCSAqIGlzIGRlc3Ryb3llZCBmaXJzdCkuCiAJICovCisJU0NUUF9JUElfQUREUl9X
TE9DSygpOwogCXZyZl9idWNrZXQgPSAmU0NUUF9CQVNFX0lORk8oc2N0cF92cmZoYXNoKVsoU0NU
UF9ERUZBVUxUX1ZSRklEICYgU0NUUF9CQVNFX0lORk8oaGFzaHZyZm1hcmspKV07CiAJTElTVF9G
T1JFQUNIX1NBRkUodnJmLCB2cmZfYnVja2V0LCBuZXh0X3ZyZiwgbnZyZikgewogCQlMSVNUX0ZP
UkVBQ0hfU0FGRShpZm4sICZ2cmYtPmlmbmxpc3QsIG5leHRfaWZuLCBuaWZuKSB7CkBAIC03MDE3
LDYgKzY5MTQsNyBAQCByZXRyeToKIAkJTElTVF9SRU1PVkUodnJmLCBuZXh0X3ZyZik7CiAJCVND
VFBfRlJFRSh2cmYsIFNDVFBfTV9WUkYpOwogCX0KKwlTQ1RQX0lQSV9BRERSX1dVTkxPQ0soKTsK
IAkvKiBmcmVlIHRoZSB2cmYgaGFzaGVzICovCiAJU0NUUF9IQVNIX0ZSRUUoU0NUUF9CQVNFX0lO
Rk8oc2N0cF92cmZoYXNoKSwgU0NUUF9CQVNFX0lORk8oaGFzaHZyZm1hcmspKTsKIAlTQ1RQX0hB
U0hfRlJFRShTQ1RQX0JBU0VfSU5GTyh2cmZfaWZuX2hhc2gpLCBTQ1RQX0JBU0VfSU5GTyh2cmZf
aWZuX2hhc2htYXJrKSk7CkBAIC03MDM5LDE0ICs2OTM3LDE0IEBAIHJldHJ5OgogCX0KIAogCS8q
IGZyZWUgdGhlIGxvY2tzIGFuZCBtdXRleGVzICovCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisj
aWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJU0NUUF9U
SU1FUlFfTE9DS19ERVNUUk9ZKCk7CiAjZW5kaWYKICNpZmRlZiBTQ1RQX1BBQ0tFVF9MT0dHSU5H
CiAJU0NUUF9JUF9QS1RMT0dfREVTVFJPWSgpOwogI2VuZGlmCiAJU0NUUF9JUElfQUREUl9ERVNU
Uk9ZKCk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJU0NUUF9JUElfQ09VTlRfREVTVFJPWSgpOwogI2Vu
ZGlmCiAJU0NUUF9TVEFUTE9HX0RFU1RST1koKTsKQEAgLTcwNTQsNyArNjk1Miw3IEBAIHJldHJ5
OgogCiAJU0NUUF9XUV9BRERSX0RFU1RST1koKTsKIAotI2lmIGRlZmluZWQoX19BUFBMRV9fKQor
I2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmIGRl
ZmluZWQoQVBQTEVfTEVPUEFSRCkgfHwgZGVmaW5lZChBUFBMRV9TTk9XTEVPUEFSRCkgfHwgZGVm
aW5lZChBUFBMRV9MSU9OKSB8fCBkZWZpbmVkKEFQUExFX01PVU5UQUlOTElPTikKIAlsY2tfZ3Jw
X2F0dHJfZnJlZShTQ1RQX0JBU0VfSU5GTyhzY3RiaW5mbykubXR4X2dycF9hdHRyKTsKIAlsY2tf
Z3JwX2ZyZWUoU0NUUF9CQVNFX0lORk8oc2N0YmluZm8pLm10eF9ncnApOwpAQCAtNzA3OSw3ICs2
OTc3LDcgQEAgcmV0cnk6CiAJaWYgKFNDVFBfQkFTRV9JTkZPKHNjdHBfdGNwZXBoYXNoKSAhPSBO
VUxMKQogCQlTQ1RQX0hBU0hfRlJFRShTQ1RQX0JBU0VfSU5GTyhzY3RwX3RjcGVwaGFzaCksIFND
VFBfQkFTRV9JTkZPKGhhc2h0Y3BtYXJrKSk7CiAKLSNpZiBkZWZpbmVkKF9fV2luZG93c19fKSB8
fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaWYgZGVm
aW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKIAlTQ1RQX1pPTkVfREVTVFJPWShTQ1RQX0JBU0VfSU5GTyhpcGlfem9uZV9lcCkpOwog
CVNDVFBfWk9ORV9ERVNUUk9ZKFNDVFBfQkFTRV9JTkZPKGlwaV96b25lX2Fzb2MpKTsKIAlTQ1RQ
X1pPTkVfREVTVFJPWShTQ1RQX0JBU0VfSU5GTyhpcGlfem9uZV9sYWRkcikpOwpAQCAtNzA5MCw5
ICs2OTg4LDExIEBAIHJldHJ5OgogCVNDVFBfWk9ORV9ERVNUUk9ZKFNDVFBfQkFTRV9JTkZPKGlw
aV96b25lX2FzY29uZikpOwogCVNDVFBfWk9ORV9ERVNUUk9ZKFNDVFBfQkFTRV9JTkZPKGlwaV96
b25lX2FzY29uZl9hY2spKTsKICNlbmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIGRl
ZmluZWQoU01QKSAmJiBkZWZpbmVkKFNDVFBfVVNFX1BFUkNQVV9TVEFUKQorI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaWYgZGVmaW5lZChTTVAp
ICYmIGRlZmluZWQoU0NUUF9VU0VfUEVSQ1BVX1NUQVQpCiAJU0NUUF9GUkVFKFNDVFBfQkFTRV9T
VEFUUywgU0NUUF9NX01DT1JFKTsKICNlbmRpZgorI2VuZGlmCiB9CiAKIApAQCAtNzMxNCwxMyAr
NzIxNCwxMyBAQCBzY3RwX2xvYWRfYWRkcmVzc2VzX2Zyb21faW5pdChzdHJ1Y3Qgc2N0cF90Y2Ig
KnN0Y2IsIHN0cnVjdCBtYnVmICptLAogCQkJCQkgKiBhc3NvYz8gc3RyYWlnaHRlbiBvdXQgbG9j
a3MuCiAJCQkJCSAqLwogCQkJCQlpZiAoc3RjYl90bXApIHsKLQkJCQkJCWlmIChTQ1RQX0dFVF9T
VEFURSgmc3RjYl90bXAtPmFzb2MpICYgU0NUUF9TVEFURV9DT09LSUVfV0FJVCkgeworCQkJCQkJ
aWYgKFNDVFBfR0VUX1NUQVRFKHN0Y2JfdG1wKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB7
CiAJCQkJCQkJc3RydWN0IG1idWYgKm9wX2VycjsKIAkJCQkJCQljaGFyIG1zZ1tTQ1RQX0RJQUdf
SU5GT19MRU5dOwogCiAJCQkJCQkJLyogaW4gc2V0dXAgc3RhdGUgd2UgYWJvcnQgdGhpcyBndXkg
Ki8KLQkJCQkJCQlzbnByaW50Zihtc2csIHNpemVvZihtc2cpLAotCQkJCQkJCSAgICAgICAgICIl
czolZCBhdCAlcyIsIF9fRklMRV9fLCBfX0xJTkVfXywgX19mdW5jX18pOworCQkJCQkJCVNDVFBf
U05QUklOVEYobXNnLCBzaXplb2YobXNnKSwKKwkJCQkJCQkgICAgICAgICAgICAgICIlczolZCBh
dCAlcyIsIF9fRklMRV9fLCBfX0xJTkVfXywgX19mdW5jX18pOwogCQkJCQkJCW9wX2VyciA9IHNj
dHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2RpYWdfaW5mb19jb2RlKSwK
IAkJCQkJCQkgICAgICAgICBtc2cpOwogCQkJCQkJCXNjdHBfYWJvcnRfYW5fYXNzb2NpYXRpb24o
c3RjYl90bXAtPnNjdHBfZXAsCkBAIC03NDA4LDEzICs3MzA4LDEzIEBAIHNjdHBfbG9hZF9hZGRy
ZXNzZXNfZnJvbV9pbml0KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IG1idWYgKm0sCiAJ
CQkJCSAqIGFzc29jPyBzdHJhaWdodGVuIG91dCBsb2Nrcy4KIAkJCQkJICovCiAJCQkJCWlmIChz
dGNiX3RtcCkgewotCQkJCQkJaWYgKFNDVFBfR0VUX1NUQVRFKCZzdGNiX3RtcC0+YXNvYykgJiBT
Q1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB7CisJCQkJCQlpZiAoU0NUUF9HRVRfU1RBVEUoc3RjYl90
bXApID09IFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQpIHsKIAkJCQkJCQlzdHJ1Y3QgbWJ1ZiAqb3Bf
ZXJyOwogCQkJCQkJCWNoYXIgbXNnW1NDVFBfRElBR19JTkZPX0xFTl07CiAKIAkJCQkJCQkvKiBp
biBzZXR1cCBzdGF0ZSB3ZSBhYm9ydCB0aGlzIGd1eSAqLwotCQkJCQkJCXNucHJpbnRmKG1zZywg
c2l6ZW9mKG1zZyksCi0JCQkJCQkJICAgICAgICAgIiVzOiVkIGF0ICVzIiwgX19GSUxFX18sIF9f
TElORV9fLCBfX2Z1bmNfXyk7CisJCQkJCQkJU0NUUF9TTlBSSU5URihtc2csIHNpemVvZihtc2cp
LAorCQkJCQkJCSAgICAgICAgICAgICAgIiVzOiVkIGF0ICVzIiwgX19GSUxFX18sIF9fTElORV9f
LCBfX2Z1bmNfXyk7CiAJCQkJCQkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQX0JB
U0VfU1lTQ1RMKHNjdHBfZGlhZ19pbmZvX2NvZGUpLAogCQkJCQkJCSAgICAgICAgIG1zZyk7CiAJ
CQkJCQkJc2N0cF9hYm9ydF9hbl9hc3NvY2lhdGlvbihzdGNiX3RtcC0+c2N0cF9lcCwKQEAgLTgw
NjksNyArNzk2OSw4IEBAIHNjdHBfZHJhaW5fbWJ1ZnMoc3RydWN0IHNjdHBfdGNiICpzdGNiKQog
CQkgKiBhc29jLT5oaWdoZXN0X3Rzbl9pbnNpZGVfbWFwPwogCQkgKi8KIAkJYXNvYy0+bGFzdF9y
ZXZva2VfY291bnQgPSBjbnQ7Ci0JCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmc3RjYi0+YXNv
Yy5kYWNrX3RpbWVyLnRpbWVyKTsKKwkJc2N0cF90aW1lcl9zdG9wKFNDVFBfVElNRVJfVFlQRV9S
RUNWLCBzdGNiLT5zY3RwX2VwLCBzdGNiLCBOVUxMLAorCQkgICAgICAgICAgICAgICAgU0NUUF9G
Uk9NX1NDVFBfUENCICsgU0NUUF9MT0NfMTEpOwogCQkvKnNhX2lnbm9yZSBOT19OVUxMX0NISyov
CiAJCXNjdHBfc2VuZF9zYWNrKHN0Y2IsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CiAJCXNjdHBfY2h1
bmtfb3V0cHV0KHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIFNDVFBfT1VUUFVUX0ZST01fRFJBSU4sIFND
VFBfU09fTk9UX0xPQ0tFRCk7CkBAIC04MDkzLDcgKzc5OTQsNyBAQCBzY3RwX2RyYWluKCkKIAkg
KiBpcyBMT1cgb24gTUJVRidzIGFuZCBuZWVkcyBoZWxwLiBUaGlzIGlzIHdoZXJlIHJlbmVnaW5n
IHdpbGwKIAkgKiBvY2N1ci4gV2UgcmVhbGx5IGhvcGUgdGhpcyBkb2VzIE5PVCBoYXBwZW4hCiAJ
ICovCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAx
MDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
IAlWTkVUX0lURVJBVE9SX0RFQ0wodm5ldF9pdGVyKTsKICNlbHNlCiAJc3RydWN0IHNjdHBfaW5w
Y2IgKmlucDsKQEAgLTgxMDQsNyArODAwNSw3IEBAIHNjdHBfZHJhaW4oKQogCQlyZXR1cm47CiAJ
fQogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24g
Pj0gODAxMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKIAlWTkVUX0xJU1RfUkxPQ0tfTk9TTEVFUCgpOwogCVZORVRfRk9SRUFDSCh2bmV0X2l0
ZXIpIHsKIAkJQ1VSVk5FVF9TRVQodm5ldF9pdGVyKTsKQEAgLTgxMTIsNyArODAxMyw3IEBAIHNj
dHBfZHJhaW4oKQogCQlzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2I7CiAjZW5kaWYKIAotI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMTAwMAorI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCVNDVFBfU1RBVF9J
TkNSKHNjdHBzX3Byb3RvY29sX2RyYWluX2NhbGxzKTsKIAkJaWYgKFNDVFBfQkFTRV9TWVNDVEwo
c2N0cF9kb19kcmFpbikgPT0gMCkgewogI2lmZGVmIFZJTUFHRQpAQCAtODEzNSw3ICs4MDM2LDcg
QEAgc2N0cF9kcmFpbigpCiAJCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CiAJCX0KIAkJU0NUUF9J
TlBfSU5GT19SVU5MT0NLKCk7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNE
X3ZlcnNpb24gPj0gODAxMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKIAkJQ1VSVk5FVF9SRVNUT1JFKCk7CiAJfQogCVZORVRfTElTVF9SVU5M
T0NLX05PU0xFRVAoKTsKQEAgLTgxNzgsNyArODA3OSw3IEBAIHNjdHBfaW5pdGlhdGVfaXRlcmF0
b3IoaW5wX2Z1bmMgaW5wZiwKIAkJICAgIFNDVFBfTV9JVEVSKTsKIAlpZiAoaXQgPT0gTlVMTCkg
ewogCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKE5VTEwsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQ
X1BDQiwgRU5PTUVNKTsKLQkJcmV0dXJuIChFTk9NRU0pOworCQlyZXR1cm4gKC0xKTsKIAl9CiAJ
bWVtc2V0KGl0LCAwLCBzaXplb2YoKml0KSk7CiAJaXQtPmZ1bmN0aW9uX2Fzc29jID0gYWY7CkBA
IC04MTk1LDcgKzgwOTYsNyBAQCBzY3RwX2luaXRpYXRlX2l0ZXJhdG9yKGlucF9mdW5jIGlucGYs
CiAJaXQtPmFzb2Nfc3RhdGUgPSBhc29jX3N0YXRlOwogCWl0LT5mdW5jdGlvbl9pbnBfZW5kID0g
aW5wZTsKIAlpdC0+bm9fY2h1bmtfb3V0cHV0ID0gY2h1bmtfb3V0cHV0X29mZjsKLSNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDEwMDAKKyNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWl0LT52biA9IGN1
cnZuZXQ7CiAjZW5kaWYKIAlpZiAoc19pbnApIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNj
dHBsaWIvbmV0aW5ldC9zY3RwX3BjYi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3Nj
dHBfcGNiLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCAzNDg4MTg2M2Zm
YWExN2IyMWE1MGU1Nzk0MzQxNDJhYzMyZjU4YmQ3Li43M2IzMjU0OWIwYWQ5N2Q5YjhkYTUyOGRl
NjhkY2FlMjI0ZGUzZTkyCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3Bj
Yi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
dXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3BjYi5oCkBAIC0zMiw5
ICszMiw5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lm
ZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLV9fRkJTRElEKCIkRnJlZUJTRDog
aGVhZC9zeXMvbmV0aW5ldC9zY3RwX3BjYi5oIDMyNTM3MCAyMDE3LTExLTAzIDIwOjQ2OjEyWiB0
dWV4ZW4gJCIpOworX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfcGNi
LmggMzYyMTA2IDIwMjAtMDYtMTIgMTY6MzE6MTNaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAogI2lm
bmRlZiBfTkVUSU5FVF9TQ1RQX1BDQl9IXwpAQCAtMTQ5LDcgKzE0OSw3IEBAIHN0cnVjdCBzY3Rw
X3RhZ2Jsb2NrIHsKIAogCiBzdHJ1Y3Qgc2N0cF9lcGluZm8gewotI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKICNpZmRlZiBJTkVUCiAJc3RydWN0IHNvY2tldCAqdWRwNF90dW5fc29ja2V0OwogI2VuZGlm
CkBAIC0xODksNyArMTg5LDcgQEAgc3RydWN0IHNjdHBfZXBpbmZvIHsKIAlzdHJ1Y3Qgc2N0cHBj
YmhlYWQgbGlzdGhlYWQ7CiAJc3RydWN0IHNjdHBsYWRkciBhZGRyX3dxOwogCi0jaWYgZGVmaW5l
ZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJc3RydWN0IGlucGNiaGVhZCBpbnBsaXN0aGVhZDsKIAlzdHJ1Y3QgaW5wY2JpbmZv
IHNjdGJpbmZvOwogI2VuZGlmCkBAIC0yMDQsMTggKzIwNCwxMCBAQCBzdHJ1Y3Qgc2N0cF9lcGlu
Zm8gewogCXNjdHBfem9uZV90IGlwaV96b25lX2FzY29uZjsKIAlzY3RwX3pvbmVfdCBpcGlfem9u
ZV9hc2NvbmZfYWNrOwogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3Zl
cnNpb24gPj0gNTAzMDAwCi0jaWYgX19GcmVlQlNEX3ZlcnNpb24gPD0gNjAyMDAwCi0Jc3RydWN0
IG10eCBpcGlfZXBfbXR4OwotI2Vsc2UKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCXN0cnVjdCByd2xvY2sgaXBpX2VwX210eDsKLSNlbmRpZgog
CXN0cnVjdCBtdHggaXBpX2l0ZXJhdG9yX3dxX210eDsKLSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA8
PSA2MDIwMDAKLQlzdHJ1Y3QgbXR4IGlwaV9hZGRyX210eDsKLSNlbHNlCiAJc3RydWN0IHJ3bG9j
ayBpcGlfYWRkcl9tdHg7Ci0jZW5kaWYKIAlzdHJ1Y3QgbXR4IGlwaV9wa3Rsb2dfbXR4OwogCXN0
cnVjdCBtdHggd3FfYWRkcl9tdHg7CiAjZWxpZiBkZWZpbmVkKFNDVFBfUFJPQ0VTU19MRVZFTF9M
T0NLUykKQEAgLTIyNCw3ICsyMTYsNyBAQCBzdHJ1Y3Qgc2N0cF9lcGluZm8gewogCXVzZXJsYW5k
X211dGV4X3QgaXBpX2NvdW50X210eDsKIAl1c2VybGFuZF9tdXRleF90IGlwaV9wa3Rsb2dfbXR4
OwogCXVzZXJsYW5kX211dGV4X3Qgd3FfYWRkcl9tdHg7Ci0jZWxpZiBkZWZpbmVkKF9fQVBQTEVf
XykKKyNlbGlmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
I2lmZGVmIF9LRVJOX0xPQ0tTX0hfCiAJbGNrX210eF90ICppcGlfYWRkcl9tdHg7CiAJbGNrX210
eF90ICppcGlfY291bnRfbXR4OwpAQCAtMjM1LDEzICsyMjcsMTIgQEAgc3RydWN0IHNjdHBfZXBp
bmZvIHsKIAl2b2lkICppcGlfY291bnRfbXR4OwogCXZvaWQgKmxvZ2dpbmdfbXR4OwogI2VuZGlm
IC8qIF9LRVJOX0xPQ0tTX0hfICovCi0jZWxpZiBkZWZpbmVkKF9fV2luZG93c19fKQorI2VsaWYg
ZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJc3RydWN0IHJ3bG9j
ayBpcGlfZXBfbG9jazsKIAlzdHJ1Y3Qgcndsb2NrIGlwaV9hZGRyX2xvY2s7CiAJc3RydWN0IHNw
aW5sb2NrIGlwaV9wa3Rsb2dfbXR4OwogCXN0cnVjdCByd2xvY2sgd3FfYWRkcl9tdHg7CiAjZWxp
ZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi0gICAgLyogVE9ETyBkZWNpZGUgb24gX19Vc2Vyc3Bh
Y2VfXyBsb2NrcyAqLwogI2VuZGlmCiAJdWludDMyX3QgaXBpX2NvdW50X2VwOwogCkBAIC0yOTIs
OCArMjgzLDEyIEBAIHN0cnVjdCBzY3RwX2Jhc2VfaW5mbyB7CiAJICogYW5jaG9yIHRoZSBzeXN0
ZW0gbXVzdCBiZSBoZXJlLgogCSAqLwogCXN0cnVjdCBzY3RwX2VwaW5mbyBzY3RwcGNiaW5mbzsK
LSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBkZWZpbmVkKFNNUCkgJiYgZGVmaW5lZChTQ1RQ
X1VTRV9QRVJDUFVfU1RBVCkKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQorI2lmIGRlZmluZWQoU01QKSAmJiBkZWZpbmVkKFNDVFBfVVNFX1BFUkNQ
VV9TVEFUKQogCXN0cnVjdCBzY3Rwc3RhdCAgICAqc2N0cHN0YXQ7CisjZWxzZQorCXN0cnVjdCBz
Y3Rwc3RhdCAgICBzY3Rwc3RhdDsKKyNlbmRpZgogI2Vsc2UKIAlzdHJ1Y3Qgc2N0cHN0YXQgICAg
c2N0cHN0YXQ7CiAjZW5kaWYKQEAgLTMwNSwxNCArMzAwLDE5IEBAIHN0cnVjdCBzY3RwX2Jhc2Vf
aW5mbyB7CiAJaW50IHBhY2tldF9sb2dfZW5kOwogCXVpbnQ4X3QgcGFja2V0X2xvZ19idWZmZXJb
U0NUUF9QQUNLRVRfTE9HX1NJWkVdOwogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwlldmVu
dGhhbmRsZXJfdGFnIGVoX3RhZzsKKyNlbmRpZgorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWludCBzY3RwX21haW5fdGltZXJfdGlja3M7CiAjZW5k
aWYKICNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJdXNlcmxhbmRfbXV0ZXhfdCB0aW1lcl9t
dHg7CiAJdXNlcmxhbmRfdGhyZWFkX3QgdGltZXJfdGhyZWFkOwogCWludCB0aW1lcl90aHJlYWRf
c2hvdWxkX2V4aXQ7Ci0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKwlpbnQg
aXRlcmF0b3JfdGhyZWFkX3N0YXJ0ZWQ7CisJaW50IHRpbWVyX3RocmVhZF9zdGFydGVkOworI2lm
ICFkZWZpbmVkKF9XSU4zMikKIAlwdGhyZWFkX211dGV4YXR0cl90IG10eF9hdHRyOwogI2lmIGRl
ZmluZWQoSU5FVCkgfHwgZGVmaW5lZChJTkVUNikKIAlpbnQgdXNlcnNwYWNlX3JvdXRlOwpAQCAt
MzIwLDcgKzMyMCw3IEBAIHN0cnVjdCBzY3RwX2Jhc2VfaW5mbyB7CiAjZW5kaWYKICNlbmRpZgog
I2lmZGVmIElORVQKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVm
aW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fTUlOR1czMl9fKQogCVNPQ0tFVCB1c2Vyc3BhY2Vf
cmF3c2N0cDsKIAlTT0NLRVQgdXNlcnNwYWNlX3VkcHNjdHA7CiAjZWxzZQpAQCAtMzMxLDcgKzMz
MSw3IEBAIHN0cnVjdCBzY3RwX2Jhc2VfaW5mbyB7CiAJdXNlcmxhbmRfdGhyZWFkX3QgcmVjdnRo
cmVhZHVkcDsKICNlbmRpZgogI2lmZGVmIElORVQ2Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9v
c19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX01JTkdXMzJfXykK
IAlTT0NLRVQgdXNlcnNwYWNlX3Jhd3NjdHA2OwogCVNPQ0tFVCB1c2Vyc3BhY2VfdWRwc2N0cDY7
CiAjZWxzZQpAQCAtMzU4LDExICszNTgsMTEgQEAgc3RydWN0IHNjdHBfcGNiIHsKIAl1aW50MzJf
dCBzZWNyZXRfa2V5W1NDVFBfSE9XX01BTllfU0VDUkVUU11bU0NUUF9OVU1CRVJfT0ZfU0VDUkVU
U107CiAJdW5zaWduZWQgaW50IHNpemVfb2ZfYV9jb29raWU7CiAKLQl1bnNpZ25lZCBpbnQgc2N0
cF90aW1lb3V0dGlja3NbU0NUUF9OVU1fVE1SU107Ci0JdW5zaWduZWQgaW50IHNjdHBfbWlucnRv
OwotCXVuc2lnbmVkIGludCBzY3RwX21heHJ0bzsKLQl1bnNpZ25lZCBpbnQgaW5pdGlhbF9ydG87
Ci0JaW50IGluaXRpYWxfaW5pdF9ydG9fbWF4OworCXVpbnQzMl90IHNjdHBfdGltZW91dHRpY2tz
W1NDVFBfTlVNX1RNUlNdOworCXVpbnQzMl90IHNjdHBfbWlucnRvOworCXVpbnQzMl90IHNjdHBf
bWF4cnRvOworCXVpbnQzMl90IGluaXRpYWxfcnRvOworCXVpbnQzMl90IGluaXRpYWxfaW5pdF9y
dG9fbWF4OwogCiAJdW5zaWduZWQgaW50IHNjdHBfc2Fja19mcmVxOwogCXVpbnQzMl90IHNjdHBf
c3dzX3NlbmRlcjsKQEAgLTQwNSw3ICs0MDUsNyBAQCBzdHJ1Y3Qgc2N0cF9wY2IgewogCiAJdWlu
dDMyX3QgZGVmX2Nvb2tpZV9saWZlOwogCS8qIGRlZmF1bHRzIHRvIDAgKi8KLQlpbnQgYXV0b19j
bG9zZV90aW1lOworCXVpbnQzMl90IGF1dG9fY2xvc2VfdGltZTsKIAl1aW50MzJfdCBpbml0aWFs
X3NlcXVlbmNlX2RlYnVnOwogCXVpbnQzMl90IGFkYXB0YXRpb25fbGF5ZXJfaW5kaWNhdG9yOwog
CXVpbnQ4X3QgYWRhcHRhdGlvbl9sYXllcl9pbmRpY2F0b3JfcHJvdmlkZWQ7CkBAIC00NDgsMTEg
KzQ0OCwxMSBAQCBzdHJ1Y3Qgc2N0cF9pbnBjYiB7CiAJICovCiAJdW5pb24gewogCQlzdHJ1Y3Qg
aW5wY2IgaW5wOwotCQljaGFyIGFsaWduWyhzaXplb2Yoc3RydWN0IGluNnBjYikgKyBTQ1RQX0FM
SUdOTTEpICYKKwkJY2hhciBhbGlnblsoc2l6ZW9mKHN0cnVjdCBpbnBjYikgKyBTQ1RQX0FMSUdO
TTEpICYKIAkJICAgICAgICB+U0NUUF9BTElHTk0xXTsKIAl9ICAgICBpcF9pbnA7CiAKLSNpZiBk
ZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKIAkvKiBsZWF2ZSBzb21lIHNwYWNlIGluIGNhc2UgaTM4NiBpbnBjYiBpcyBi
aWdnZXIgdGhhbiBwcGMgKi8KIAl1aW50OF90CQlwYWRkaW5nWzEyOF07CiAjZW5kaWYKQEAgLTUw
OSwyNiArNTA5LDkgQEAgc3RydWN0IHNjdHBfaW5wY2IgewogCSAqIHRoZXkgYXJlIGNhbmRpZGF0
ZXMgd2l0aCBzY3RwX3NlbmRtIGZvcgogCSAqIGRlLXN1cHBvcnRpbmcuCiAJICovCi0jaWZkZWYg
X19QYW5kYV9fCi0JcGFraGFuZGxlX3R5cGUgcGFrX3RvX3JlYWQ7Ci0JcGFraGFuZGxlX3R5cGUg
cGFrX3RvX3JlYWRfc2VuZHE7Ci0jZW5kaWYKIAlzdHJ1Y3QgbWJ1ZiAqcGt0LCAqcGt0X2xhc3Q7
CiAJc3RydWN0IG1idWYgKmNvbnRyb2w7Ci0jaWYgIShkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBk
ZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKSkKLSNpZm5kZWYgSU5QX0lQVjYKLSNkZWZpbmUgSU5QX0lQVjYJMHgxCi0jZW5k
aWYKLSNpZm5kZWYgSU5QX0lQVjQKLSNkZWZpbmUgSU5QX0lQVjQJMHgyCi0jZW5kaWYKLQl1aW50
OF90IGlucF92ZmxhZzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUT0RPIF9f
VXNlcnNwYWNlX18gd2hlcmUgaXMgb3VyIGlucF92bGFnIGdvaW5nIHRvIGJlPyAqLwotCXVpbnQ4
X3QgaW5wX2lwX3R0bDsKLSAgICAgICAgdWludDhfdCBpbnBfaXBfdG9zOyAgICAvKiBkZWZpbmVk
IGFzIG1hY3JvIGluIHVzZXJfaW5wY2IuaCAqLwotCXVpbnQ4X3QgaW5wX2lwX3Jlc3Y7Ci0jZW5k
aWYKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDMw
MDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
CXN0cnVjdCBtdHggaW5wX210eDsKIAlzdHJ1Y3QgbXR4IGlucF9jcmVhdGVfbXR4OwogCXN0cnVj
dCBtdHggaW5wX3JkYXRhX210eDsKQEAgLTUzOCw3ICs1MjEsNyBAQCBzdHJ1Y3Qgc2N0cF9pbnBj
YiB7CiAJdXNlcmxhbmRfbXV0ZXhfdCBpbnBfY3JlYXRlX210eDsKIAl1c2VybGFuZF9tdXRleF90
IGlucF9yZGF0YV9tdHg7CiAJaW50MzJfdCByZWZjb3VudDsKLSNlbGlmIGRlZmluZWQoX19BUFBM
RV9fKQorI2VsaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAjaWYgZGVmaW5lZChTQ1RQX0FQUExFX1JXTE9DSykKIAlsY2tfcndfdCAqaW5wX210eDsKICNl
bHNlCkBAIC01NDYsMTYgKzUyOSwxNSBAQCBzdHJ1Y3Qgc2N0cF9pbnBjYiB7CiAjZW5kaWYKIAls
Y2tfbXR4X3QgKmlucF9jcmVhdGVfbXR4OwogCWxja19tdHhfdCAqaW5wX3JkYXRhX210eDsKLSNl
bGlmIGRlZmluZWQoX19XaW5kb3dzX18pCisjZWxpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKIAlzdHJ1Y3Qgcndsb2NrIGlucF9sb2NrOwogCXN0cnVjdCBzcGlu
bG9jayBpbnBfY3JlYXRlX2xvY2s7CiAJc3RydWN0IHNwaW5sb2NrIGlucF9yZGF0YV9sb2NrOwog
CWludDMyX3QgcmVmY291bnQ7CiAjZWxpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi0gICAgLyog
VE9ETyBkZWNpZGUgb24gX19Vc2Vyc3BhY2VfXyBsb2NrcyAqLwogCWludDMyX3QgcmVmY291bnQ7
CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlpbnQzMl90IHJlZmNvdW50OwogCiAJdWludDMy
X3QgbG9ja19jYWxsZXIxOwpAQCAtNTk5LDcgKzU4MSw3IEBAIHN0cnVjdCBzY3RwX2lucGNiIHsK
IAlpbnQgKCpyZWN2X2NhbGxiYWNrKShzdHJ1Y3Qgc29ja2V0ICosIHVuaW9uIHNjdHBfc29ja3N0
b3JlLCB2b2lkICosIHNpemVfdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0
IHNjdHBfcmN2aW5mbywgaW50LCB2b2lkICopOwogCXVpbnQzMl90IHNlbmRfc2JfdGhyZXNob2xk
OwotCWludCAoKnNlbmRfY2FsbGJhY2spKHN0cnVjdCBzb2NrZXQgKiwgdWludDMyX3QpOworCWlu
dCAoKnNlbmRfY2FsbGJhY2spKHN0cnVjdCBzb2NrZXQgKiwgdWludDMyX3QsIHZvaWQgKik7CiAj
ZW5kaWYKIH07CiAKQEAgLTYwNyw4ICs1ODksOSBAQCBzdHJ1Y3Qgc2N0cF9pbnBjYiB7CiBpbnQg
cmVnaXN0ZXJfcmVjdl9jYiAoc3RydWN0IHNvY2tldCAqLAogICAgICAgICAgICAgICAgICAgICAg
IGludCAoKikoc3RydWN0IHNvY2tldCAqLCB1bmlvbiBzY3RwX3NvY2tzdG9yZSwgdm9pZCAqLCBz
aXplX3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2N0cF9yY3ZpbmZv
LCBpbnQsIHZvaWQgKikpOwotaW50IHJlZ2lzdGVyX3NlbmRfY2IgKHN0cnVjdCBzb2NrZXQgKiwg
dWludDMyX3QsIGludCAoKikoc3RydWN0IHNvY2tldCAqLCB1aW50MzJfdCkpOworaW50IHJlZ2lz
dGVyX3NlbmRfY2IgKHN0cnVjdCBzb2NrZXQgKiwgdWludDMyX3QsIGludCAoKikoc3RydWN0IHNv
Y2tldCAqLCB1aW50MzJfdCwgdm9pZCAqKSk7CiBpbnQgcmVnaXN0ZXJfdWxwX2luZm8gKHN0cnVj
dCBzb2NrZXQgKiwgdm9pZCAqKTsKK2ludCByZXRyaWV2ZV91bHBfaW5mbyAoc3RydWN0IHNvY2tl
dCAqLCB2b2lkICoqKTsKIAogI2VuZGlmCiBzdHJ1Y3Qgc2N0cF90Y2IgewpAQCAtNjM2LDIyICs2
MTksMjEgQEAgc3RydWN0IHNjdHBfdGNiIHsKIAlpbnQgZnJlZWRfZnJvbV93aGVyZTsKIAl1aW50
MTZfdCBycG9ydDsJCS8qIHJlbW90ZSBwb3J0IGluIG5ldHdvcmsgZm9ybWF0ICovCiAJdWludDE2
X3QgcmVzdjsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+
PSA1MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogCXN0cnVjdCBtdHggdGNiX210eDsKIAlzdHJ1Y3QgbXR4IHRjYl9zZW5kX210eDsKICNl
bGlmIGRlZmluZWQoU0NUUF9QUk9DRVNTX0xFVkVMX0xPQ0tTKQogCXVzZXJsYW5kX211dGV4X3Qg
dGNiX210eDsKIAl1c2VybGFuZF9tdXRleF90IHRjYl9zZW5kX210eDsKLSNlbGlmIGRlZmluZWQo
X19BUFBMRV9fKQorI2VsaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJbGNrX210eF90KiB0Y2JfbXR4OwogCWxja19tdHhfdCogdGNiX3NlbmRfbXR4Owot
I2VsaWYgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNlbGlmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCXN0cnVjdCBzcGlubG9jayB0Y2JfbG9jazsKIAlzdHJ1Y3Qg
c3BpbmxvY2sgdGNiX3NlbmRfbG9jazsKICNlbGlmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKLSAg
ICAvKiBUT0RPIGRlY2lkZSBvbiBfX1VzZXJzcGFjZV9fIGxvY2tzICovCiAjZW5kaWYKLSNpZiBk
ZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKIAl1aW50MzJfdCBjYWxsZXIxOwogCXVpbnQzMl90IGNhbGxlcjI7CiAJdWlu
dDMyX3QgY2FsbGVyMzsKQEAgLTY1OSwxMSArNjQxLDExIEBAIHN0cnVjdCBzY3RwX3RjYiB7CiB9
OwogCiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1
MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX2xvY2tfYnNkLmg+CiAKLSNlbGlmIGRlZmluZWQo
X19BUFBMRV9fKQorI2VsaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAvKgogICogQXBwbGUgTWFjT1MgWCAxMC40ICJUaWdlciIKICAqLwpAQCAtNjc0LDcg
KzY1Niw3IEBAIHN0cnVjdCBzY3RwX3RjYiB7CiAKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfcHJv
Y2Vzc19sb2NrLmg+CiAKLSNlbGlmIGRlZmluZWQoX19XaW5kb3dzX18pCisjZWxpZiBkZWZpbmVk
KF9XSU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAogI2luY2x1ZGUgPG5ldGluZXQv
c2N0cF9sb2NrX3dpbmRvd3MuaD4KIApAQCAtNjg5LDE0ICs2NzEsMTMgQEAgc3RydWN0IHNjdHBf
dGNiIHsKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfbG9ja19lbXB0eS5oPgogI2VuZGlmCiAKLS8q
IFRPRE8gd2hlcmUgdG8gcHV0IG5vbi1fS0VSTkVMIHRoaW5ncyBmb3IgX19Vc2Vyc3BhY2VfXz8g
Ki8KICNpZiBkZWZpbmVkKF9LRVJORUwpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAogLyog
QXR0ZW50aW9uIEp1bGlhbiwgdGhpcyBpcyB0aGUgZXh0ZXJuIHRoYXQKICAqIGdvZXMgd2l0aCB0
aGUgYmFzZSBpbmZvLiBzY3RwX3BjYi5jIGhhcwogICogdGhlIHJlYWwgZGVmaW5pdGlvbi4KICAq
LwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMTAw
MAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBW
TkVUX0RFQ0xBUkUoc3RydWN0IHNjdHBfYmFzZV9pbmZvLCBzeXN0ZW1fYmFzZV9pbmZvKSA7CiAj
ZWxzZQogZXh0ZXJuIHN0cnVjdCBzY3RwX2Jhc2VfaW5mbyBzeXN0ZW1fYmFzZV9pbmZvOwpAQCAt
NzQ5LDEwICs3MzAsMTAgQEAgc3RydWN0IHNjdHBfbmV0cyAqc2N0cF9maW5kbmV0KHN0cnVjdCBz
Y3RwX3RjYiAqLCBzdHJ1Y3Qgc29ja2FkZHIgKik7CiAKIHN0cnVjdCBzY3RwX2lucGNiICpzY3Rw
X3BjYl9maW5kZXAoc3RydWN0IHNvY2thZGRyICosIGludCwgaW50LCB1aW50MzJfdCk7CiAKLSNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMDAKKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogaW50IHNj
dHBfaW5wY2JfYmluZChzdHJ1Y3Qgc29ja2V0ICosIHN0cnVjdCBzb2NrYWRkciAqLAogCQkgICAg
c3RydWN0IHNjdHBfaWZhICosc3RydWN0IHRocmVhZCAqKTsKLSNlbGlmIGRlZmluZWQoX19XaW5k
b3dzX18pCisjZWxpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
IGludCBzY3RwX2lucGNiX2JpbmQoc3RydWN0IHNvY2tldCAqLCBzdHJ1Y3Qgc29ja2FkZHIgKiwK
IAkJICAgIHN0cnVjdCBzY3RwX2lmYSAqLFBLVEhSRUFEKTsKICNlbHNlCkBAIC04MDMsMTkgKzc4
NCwyNCBAQCBpbnQgc2N0cF9pc19hZGRyZXNzX29uX2xvY2FsX2hvc3Qoc3RydWN0IHNvY2thZGRy
ICphZGRyLCB1aW50MzJfdCB2cmZfaWQpOwogCiB2b2lkIHNjdHBfaW5wY2JfZnJlZShzdHJ1Y3Qg
c2N0cF9pbnBjYiAqLCBpbnQsIGludCk7CiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBf
X0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMDAKKyNkZWZpbmUgU0NUUF9ET05UX0lOSVRJQUxJWkVf
QVVUSF9QQVJBTVMJMAorI2RlZmluZSBTQ1RQX0lOSVRJQUxJWkVfQVVUSF9QQVJBTVMJCTEKKwor
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBzdHJ1
Y3Qgc2N0cF90Y2IgKgogc2N0cF9hbG9jX2Fzc29jKHN0cnVjdCBzY3RwX2lucGNiICosIHN0cnVj
dCBzb2NrYWRkciAqLAotICAgICAgICAgICAgICAgIGludCAqLCB1aW50MzJfdCwgdWludDMyX3Qs
IHVpbnQxNl90LCB1aW50MTZfdCwgc3RydWN0IHRocmVhZCAqKTsKLSNlbGlmIGRlZmluZWQoX19X
aW5kb3dzX18pCisgICAgICAgICAgICAgICAgaW50ICosIHVpbnQzMl90LCB1aW50MzJfdCwgdWlu
dDE2X3QsIHVpbnQxNl90LCBzdHJ1Y3QgdGhyZWFkICosCisgICAgICAgICAgICAgICAgaW50KTsK
KyNlbGlmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogc3RydWN0
IHNjdHBfdGNiICoKIHNjdHBfYWxvY19hc3NvYyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqLCBzdHJ1Y3Qg
c29ja2FkZHIgKiwKLSAgICAgICAgICAgICAgICBpbnQgKiwgdWludDMyX3QsIHVpbnQzMl90LCB1
aW50MTZfdCwgdWludDE2X3QsIFBLVEhSRUFEKTsKKyAgICAgICAgICAgICAgICBpbnQgKiwgdWlu
dDMyX3QsIHVpbnQzMl90LCB1aW50MTZfdCwgdWludDE2X3QsIFBLVEhSRUFELCBpbnQpOwogI2Vs
c2UKIC8qIHByb2Mgd2lsbCBiZSBOVUxMIGZvciBfX1VzZXJzcGFjZV9fICovCiBzdHJ1Y3Qgc2N0
cF90Y2IgKgogc2N0cF9hbG9jX2Fzc29jKHN0cnVjdCBzY3RwX2lucGNiICosIHN0cnVjdCBzb2Nr
YWRkciAqLAotICAgICAgICAgICAgICAgIGludCAqLCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQx
Nl90LCB1aW50MTZfdCwgc3RydWN0IHByb2MgKik7CisgICAgICAgICAgICAgICAgaW50ICosIHVp
bnQzMl90LCB1aW50MzJfdCwgdWludDE2X3QsIHVpbnQxNl90LCBzdHJ1Y3QgcHJvYyAqLAorICAg
ICAgICAgICAgICAgIGludCk7CiAjZW5kaWYKIAogaW50IHNjdHBfZnJlZV9hc3NvYyhzdHJ1Y3Qg
c2N0cF9pbnBjYiAqLCBzdHJ1Y3Qgc2N0cF90Y2IgKiwgaW50LCBpbnQpOwpAQCAtODM4LDcgKzgy
NCwxMSBAQCB2b2lkIHNjdHBfcmVtb3ZlX25ldChzdHJ1Y3Qgc2N0cF90Y2IgKiwgc3RydWN0IHNj
dHBfbmV0cyAqKTsKIAogaW50IHNjdHBfZGVsX3JlbW90ZV9hZGRyKHN0cnVjdCBzY3RwX3RjYiAq
LCBzdHJ1Y3Qgc29ja2FkZHIgKik7CiAKKyNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCit2b2lk
IHNjdHBfcGNiX2luaXQoaW50KTsKKyNlbHNlCiB2b2lkIHNjdHBfcGNiX2luaXQodm9pZCk7Cisj
ZW5kaWYKIAogdm9pZCBzY3RwX3BjYl9maW5pc2godm9pZCk7CiAKQEAgLTg3NywxMCArODY3LDEy
IEBAIHNjdHBfaW5pdGlhdGVfaXRlcmF0b3IoaW5wX2Z1bmMgaW5wZiwKIAkJICAgICAgIGVuZF9m
dW5jIGVmLAogCQkgICAgICAgc3RydWN0IHNjdHBfaW5wY2IgKiwKIAkJICAgICAgIHVpbnQ4X3Qg
Y29fb2ZmKTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBkZWZpbmVkKFNDVFBfTUNPUkVf
SU5QVVQpICYmIGRlZmluZWQoU01QKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCisjaWYgZGVmaW5lZChTQ1RQX01DT1JFX0lOUFVUKSAmJiBkZWZp
bmVkKFNNUCkKIHZvaWQKIHNjdHBfcXVldWVfdG9fbWNvcmUoc3RydWN0IG1idWYgKm0sIGludCBv
ZmYsIGludCBjcHVfdG9fdXNlKTsKIAorI2VuZGlmCiAjZW5kaWYKIAogI2VuZGlmCQkJCS8qIF9L
RVJORUwgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3Bl
ZWxvZmYuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
dXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3BlZWxvZmYuYwpvbGQg
bW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDM5MWI0ZjU0NDZiNjQ5ZWQzNTQyNDdk
MmZkOTRjNTM3YzEyYTJlMGYuLjg1ODFmNTE1ZjQxMzM5ZmNmM2NkMzI5OWYzZDg0OGU2ZmMwZmRm
NDEKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91
c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfcGVlbG9mZi5jCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3BlZWxvZmYuYwpAQCAtMzIsOSArMzIs
OSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZmRlZiBf
X0ZyZWVCU0RfXworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQv
c3lzL25ldGluZXQvc2N0cF9wZWVsb2ZmLmMgMjc5ODU5IDIwMTUtMDMtMTAgMTk6NDk6MjVaIHR1
ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9wZWVs
b2ZmLmMgMzYyMDU0IDIwMjAtMDYtMTEgMTM6MzQ6MDlaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAog
I2luY2x1ZGUgPG5ldGluZXQvc2N0cF9vcy5oPgpAQCAtNDksMTAgKzQ5LDYgQEAgX19GQlNESUQo
IiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfcGVlbG9mZi5jIDI3OTg1OSAyMDE1LTAz
LTEwIDE5OjQ5OjI1WgogI2luY2x1ZGUgPG5ldGluZXQvc2N0cHV0aWwuaD4KICNpbmNsdWRlIDxu
ZXRpbmV0L3NjdHBfYXV0aC5oPgogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCi0jZGVmaW5lIEFQ
UExFX0ZJTEVfTk8gNQotI2VuZGlmCi0KIGludAogc2N0cF9jYW5fcGVlbF9vZmYoc3RydWN0IHNv
Y2tldCAqaGVhZCwgc2N0cF9hc3NvY190IGFzc29jX2lkKQogewpAQCAtNzksNyArNzUsNyBAQCBz
Y3RwX2Nhbl9wZWVsX29mZihzdHJ1Y3Qgc29ja2V0ICpoZWFkLCBzY3RwX2Fzc29jX3QgYXNzb2Nf
aWQpCiAJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBzdGNiLCBOVUxMLCBTQ1RQX0ZST01fU0NU
UF9QRUVMT0ZGLCBFTk9FTlQpOwogCQlyZXR1cm4gKEVOT0VOVCk7CiAJfQotCXN0YXRlID0gU0NU
UF9HRVRfU1RBVEUoKCZzdGNiLT5hc29jKSk7CisJc3RhdGUgPSBTQ1RQX0dFVF9TVEFURShzdGNi
KTsKIAlpZiAoKHN0YXRlID09IFNDVFBfU1RBVEVfRU1QVFkpIHx8CiAJICAgIChzdGF0ZSA9PSBT
Q1RQX1NUQVRFX0lOVVNFKSkgewogCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CkBAIC0xMDksNyAr
MTA1LDcgQEAgc2N0cF9kb19wZWVsb2ZmKHN0cnVjdCBzb2NrZXQgKmhlYWQsIHN0cnVjdCBzb2Nr
ZXQgKnNvLCBzY3RwX2Fzc29jX3QgYXNzb2NfaWQpCiAJCXJldHVybiAoRU5PVENPTk4pOwogCX0K
IAotCXN0YXRlID0gU0NUUF9HRVRfU1RBVEUoKCZzdGNiLT5hc29jKSk7CisJc3RhdGUgPSBTQ1RQ
X0dFVF9TVEFURShzdGNiKTsKIAlpZiAoKHN0YXRlID09IFNDVFBfU1RBVEVfRU1QVFkpIHx8CiAJ
ICAgIChzdGF0ZSA9PSBTQ1RQX1NUQVRFX0lOVVNFKSkgewogCQlTQ1RQX1RDQl9VTkxPQ0soc3Rj
Yik7CkBAIC0xNjQsNyArMTYwLDcgQEAgc2N0cF9kb19wZWVsb2ZmKHN0cnVjdCBzb2NrZXQgKmhl
YWQsIHN0cnVjdCBzb2NrZXQgKnNvLCBzY3RwX2Fzc29jX3QgYXNzb2NfaWQpCiAJYXRvbWljX2Fk
ZF9pbnQoJnN0Y2ItPmFzb2MucmVmY250LCAxKTsKIAlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CiAK
LSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJc2N0cF9wdWxsX29mZl9jb250cm9sX3RvX25ld19pbnAo
aW5wLCBuX2lucCwgc3RjYiwgU0JMX1dBSVQpOwogI2Vsc2UKIAlzY3RwX3B1bGxfb2ZmX2NvbnRy
b2xfdG9fbmV3X2lucChpbnAsIG5faW5wLCBzdGNiLCBNX1dBSVRPSyk7CkBAIC0xNzgsMTQgKzE3
NCw2IEBAIHNjdHBfZG9fcGVlbG9mZihzdHJ1Y3Qgc29ja2V0ICpoZWFkLCBzdHJ1Y3Qgc29ja2V0
ICpzbywgc2N0cF9hc3NvY190IGFzc29jX2lkKQogc3RydWN0IHNvY2tldCAqCiBzY3RwX2dldF9w
ZWVsb2ZmKHN0cnVjdCBzb2NrZXQgKmhlYWQsIHNjdHBfYXNzb2NfdCBhc3NvY19pZCwgaW50ICpl
cnJvcikKIHsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi0gICAgLyogaWYgX19Vc2Vyc3Bh
Y2VfXyBjaG9vc2VzIHRvIG9yaWdpbmFsbHkgbm90IHN1cHBvcnQgcGVlbG9mZiwgcHV0IGl0IGhl
cmUuLi4gKi8KLSNlbmRpZgotI2lmIGRlZmluZWQoX19QYW5kYV9fKQotCVNDVFBfTFRSQUNFX0VS
Ul9SRVQoTlVMTCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfUEVFTE9GRiwgRUlOVkFMKTsK
LQkqZXJyb3IgPSBFSU5WQUw7Ci0JcmV0dXJuIChOVUxMKTsKLSNlbHNlCiAJc3RydWN0IHNvY2tl
dCAqbmV3c287CiAJc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgKm5faW5wOwogCXN0cnVjdCBzY3Rw
X3RjYiAqc3RjYjsKQEAgLTIwNSwxOCArMTkzLDE1IEBAIHNjdHBfZ2V0X3BlZWxvZmYoc3RydWN0
IHNvY2tldCAqaGVhZCwgc2N0cF9hc3NvY190IGFzc29jX2lkLCBpbnQgKmVycm9yKQogCX0KIAlh
dG9taWNfYWRkX2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIDEpOwogCVNDVFBfVENCX1VOTE9DSyhz
dGNiKTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4
MDEwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCUNVUlZORVRfU0VUKGhlYWQtPnNvX3ZuZXQpOwogI2VuZGlmCiAJbmV3c28gPSBzb25ld2Nv
bm4oaGVhZCwgU1NfSVNDT05ORUNURUQKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZp
bmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkgICAgLCBOVUxMCi0j
ZWxpZiBkZWZpbmVkKF9fUGFuZGFfXykKLQkgICAgLyogcGxhY2UgdGhpcyBzb2NrZXQgaW4gdGhl
IGFzc29jJ3MgdnJmIGlkICovCi0JICAgICwgTlVMTCwgc3RjYi0+YXNvYy52cmZfaWQKICNlbmRp
ZgogCQkpOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49
IDgwMTAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAJQ1VSVk5FVF9SRVNUT1JFKCk7CiAjZW5kaWYKIAlpZiAobmV3c28gPT0gTlVMTCkgewpA
QCAtMjI3LDcgKzIxMiw3IEBAIHNjdHBfZ2V0X3BlZWxvZmYoc3RydWN0IHNvY2tldCAqaGVhZCwg
c2N0cF9hc3NvY190IGFzc29jX2lkLCBpbnQgKmVycm9yKQogCQlyZXR1cm4gKE5VTEwpOwogCiAJ
fQotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCSAgZWxzZSB7CiAJCVNDVFBfU09DS0VUX0xPQ0sobmV3c28s
IDEpOwogCX0KQEAgLTI4OCw3ICsyNzMsNiBAQCBzY3RwX2dldF9wZWVsb2ZmKHN0cnVjdCBzb2Nr
ZXQgKmhlYWQsIHNjdHBfYXNzb2NfdCBhc3NvY19pZCwgaW50ICplcnJvcikKIAlTT0NLX1VOTE9D
SyhuZXdzbyk7CiAJLyogV2UgcmVtb3ZlIGl0IHJpZ2h0IGF3YXkgKi8KIAotI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19f
KSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaWZkZWYgU0NUUF9MT0NLX0xPR0dJTkcKIAlp
ZiAoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2xvZ2dpbmdfbGV2ZWwpICYgU0NUUF9MT0NLX0xPR0dJ
TkdfRU5BQkxFKSB7CiAJCXNjdHBfbG9nX2xvY2soaW5wLCAoc3RydWN0IHNjdHBfdGNiICopTlVM
TCwgU0NUUF9MT0dfTE9DS19TT0NLKTsKQEAgLTI5NywxNiArMjgxLDYgQEAgc2N0cF9nZXRfcGVl
bG9mZihzdHJ1Y3Qgc29ja2V0ICpoZWFkLCBzY3RwX2Fzc29jX3QgYXNzb2NfaWQsIGludCAqZXJy
b3IpCiAJVEFJTFFfUkVNT1ZFKCZoZWFkLT5zb19jb21wLCBuZXdzbywgc29fbGlzdCk7CiAJaGVh
ZC0+c29fcWxlbi0tOwogCVNPQ0tfVU5MT0NLKGhlYWQpOwotI2Vsc2UKLQluZXdzbyA9IFRBSUxR
X0ZJUlNUKCZoZWFkLT5zb19xKTsKLQlpZiAoc29xcmVtcXVlKG5ld3NvLCAxKSA9PSAwKSB7Ci0J
CVNDVFBfUFJJTlRGKCJzb3JlbXF1ZSBmYWlsZWQsIHBlZWxvZmYtZmFpbHMgKGludmFyaWVudHMg
d291bGQgcGFuaWMpXG4iKTsKLQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEws
IFNDVFBfRlJPTV9TQ1RQX1BFRUxPRkYsIEVOT1RDT05OKTsKLQkJKmVycm9yID0gRU5PVENPTk47
Ci0JCXJldHVybiAoTlVMTCk7Ci0KLQl9Ci0jZW5kaWYKIAkvKgogCSAqIE5vdyB3ZSBtdXN0IG1v
dmUgaXQgZnJvbSBvbmUgaGFzaCB0YWJsZSB0byBhbm90aGVyIGFuZCBnZXQgdGhlCiAJICogc3Rj
YiBpbiB0aGUgcmlnaHQgcGxhY2UuCkBAIC0zMTgsMTMgKzI5MiwxMiBAQCBzY3RwX2dldF9wZWVs
b2ZmKHN0cnVjdCBzb2NrZXQgKmhlYWQsIHNjdHBfYXNzb2NfdCBhc3NvY19pZCwgaW50ICplcnJv
cikKIAkgKiBBbmQgbm93IHRoZSBmaW5hbCBoYWNrLiBXZSBtb3ZlIGRhdGEgaW4gdGhlIHBlbmRp
bmcgc2lkZSBpLmUuCiAJICogaGVhZCB0byB0aGUgbmV3IHNvY2tldCBidWZmZXIuIExldCB0aGUg
R1JVQkJJTkcgYmVnaW4gOi0wCiAJICovCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCXNjdHBfcHVs
bF9vZmZfY29udHJvbF90b19uZXdfaW5wKGlucCwgbl9pbnAsIHN0Y2IsIFNCTF9XQUlUKTsKICNl
bHNlCiAJc2N0cF9wdWxsX29mZl9jb250cm9sX3RvX25ld19pbnAoaW5wLCBuX2lucCwgc3RjYiwg
TV9XQUlUT0spOwogI2VuZGlmCiAJYXRvbWljX3N1YnRyYWN0X2ludCgmc3RjYi0+YXNvYy5yZWZj
bnQsIDEpOwogCXJldHVybiAobmV3c28pOwotI2VuZGlmCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3BlZWxvZmYuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Vz
cnNjdHBsaWIvbmV0aW5ldC9zY3RwX3BlZWxvZmYuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUg
MTAwNzU1CmluZGV4IGFkZWZjZGVkMTMxMWQzMTBlZDhmMTkxMzc2Y2EyZmZmYjY5ODRiZGMuLjdl
MWM1ZWNlZWI4ZTgyMjEyNDdiMjRhNjIwMTdkNTRlOWE2ZDA1YWYKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNy
c2N0cGxpYi9uZXRpbmV0L3NjdHBfcGVlbG9mZi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIv
bmV0aW5ldC9zY3RwX3BlZWxvZmYuaApAQCAtMzIsNyArMzIsNyBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZmRlZiBfX0ZyZWVCU0RfXworI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8c3lz
L2NkZWZzLmg+CiBfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9wZWVs
b2ZmLmggMzA5NjA3IDIwMTYtMTItMDYgMTA6MjE6MjVaIHR1ZXhlbiAkIik7CiAjZW5kaWYKQEAg
LTQyLDEzICs0MiwxMyBAQCBfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0
cF9wZWVsb2ZmLmggMzA5NjA3IDIwMTYtMTItMDYgMTA6MjE6MjVaCiAjaWYgZGVmaW5lZChIQVZF
X1NDVFBfUEVFTE9GRl9TT0NLT1BUKQogLyogc29ja2V0IG9wdGlvbiBwZWVsb2ZmICovCiBzdHJ1
Y3Qgc2N0cF9wZWVsb2ZmX29wdCB7Ci0jaWYgIWRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgIShk
ZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAJaW50IHM7CiAjZWxz
ZQogCUhBTkRMRSBzOwogI2VuZGlmCiAJc2N0cF9hc3NvY190IGFzc29jX2lkOwotI2lmICFkZWZp
bmVkKF9fV2luZG93c19fKQorI2lmICEoZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pKQogCWludCBuZXdfc2Q7CiAjZWxzZQogCUhBTkRMRSBuZXdfc2Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9wcm9jZXNzX2xvY2suaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3Jz
Y3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3Byb2Nlc3NfbG9jay5oCm9sZCBtb2RlIDEw
MDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggY2E2NjkyMTIwMjEwODgzOTEyZWZlYjk5Y2ZmYTI2
MWNkZjUzMmU0YS4uZmYwZTA1MDQ4ZTYzZWQyYzYyNGJkZGEzM2MyNGJlNWY4NGYwNTJkNgotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAv
dXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9wcm9jZXNzX2xvY2suaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNy
c2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9wcm9jZXNzX2xvY2suaApAQCAtNTMsNyAr
NTMsNyBAQAogICogcGVyIHNvY2tldCBsZXZlbCBsb2NraW5nCiAgKi8KIAotI2lmIGRlZmluZWQo
X19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIC8qIExvY2sgZm9y
IElORk8gc3R1ZmYgKi8KICNkZWZpbmUgU0NUUF9JTlBfSU5GT19MT0NLX0lOSVQoKQogI2RlZmlu
ZSBTQ1RQX0lOUF9JTkZPX1JMT0NLKCkKQEAgLTg2LDcgKzg2LDkgQEAKICNkZWZpbmUgU0NUUF9J
TlBfUkxPQ0soX2lucCkKICNkZWZpbmUgU0NUUF9JTlBfUlVOTE9DSyhfaW5wKQogI2RlZmluZSBT
Q1RQX0lOUF9XTE9DSyhfaW5wKQotI2RlZmluZSBTQ1RQX0lOUF9XVU5MT0NLKF9pbmVwKQorI2Rl
ZmluZSBTQ1RQX0lOUF9XVU5MT0NLKF9pbnApCisjZGVmaW5lIFNDVFBfSU5QX1JMT0NLX0FTU0VS
VChfaW5wKQorI2RlZmluZSBTQ1RQX0lOUF9XTE9DS19BU1NFUlQoX2lucCkKICNkZWZpbmUgU0NU
UF9JTlBfSU5DUl9SRUYoX2lucCkKICNkZWZpbmUgU0NUUF9JTlBfREVDUl9SRUYoX2lucCkKIApA
QCAtMTE1LDcgKzExNyw3IEBACiAgKi8KICNkZWZpbmUgU0NUUF9JUElfQ09VTlRfSU5JVCgpCiAK
LSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIp
CiAjZGVmaW5lIFNDVFBfV1FfQUREUl9JTklUKCkgXAogCUluaXRpYWxpemVDcml0aWNhbFNlY3Rp
b24oJlNDVFBfQkFTRV9JTkZPKHdxX2FkZHJfbXR4KSkKICNkZWZpbmUgU0NUUF9XUV9BRERSX0RF
U1RST1koKSBcCkBAIC0xMjQsNyArMTI2LDcgQEAKIAlFbnRlckNyaXRpY2FsU2VjdGlvbigmU0NU
UF9CQVNFX0lORk8od3FfYWRkcl9tdHgpKQogI2RlZmluZSBTQ1RQX1dRX0FERFJfVU5MT0NLKCkg
XAogCUxlYXZlQ3JpdGljYWxTZWN0aW9uKCZTQ1RQX0JBU0VfSU5GTyh3cV9hZGRyX210eCkpCi0K
KyNkZWZpbmUgU0NUUF9XUV9BRERSX0xPQ0tfQVNTRVJUKCkKIAogI2RlZmluZSBTQ1RQX0lOUF9J
TkZPX0xPQ0tfSU5JVCgpIFwKIAlJbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uKCZTQ1RQX0JBU0Vf
SU5GTyhpcGlfZXBfbXR4KSkKQEAgLTE4NSw2ICsxODcsOCBAQAogI2RlZmluZSBTQ1RQX0lOUF9X
TE9DSyhfaW5wKSBcCiAJRW50ZXJDcml0aWNhbFNlY3Rpb24oJihfaW5wKS0+aW5wX210eCkKICNl
bmRpZgorI2RlZmluZSBTQ1RQX0lOUF9STE9DS19BU1NFUlQoX3RjYikKKyNkZWZpbmUgU0NUUF9J
TlBfV0xPQ0tfQVNTRVJUKF90Y2IpCiAKICNkZWZpbmUgU0NUUF9UQ0JfU0VORF9MT0NLX0lOSVQo
X3RjYikgXAogCUluaXRpYWxpemVDcml0aWNhbFNlY3Rpb24oJihfdGNiKS0+dGNiX3NlbmRfbXR4
KQpAQCAtMjYzLDYgKzI2Nyw4IEBACiAjZGVmaW5lIFNDVFBfV1FfQUREUl9VTkxPQ0soKSBcCiAJ
KHZvaWQpcHRocmVhZF9tdXRleF91bmxvY2soJlNDVFBfQkFTRV9JTkZPKHdxX2FkZHJfbXR4KSkK
ICNlbmRpZgorI2RlZmluZSBTQ1RQX1dRX0FERFJfTE9DS19BU1NFUlQoKSBcCisJS0FTU0VSVChw
dGhyZWFkX211dGV4X3RyeWxvY2soJlNDVFBfQkFTRV9JTkZPKHdxX2FkZHJfbXR4KSkgPT0gRUJV
U1ksICgiJXM6IHdxX2FkZHJfbXR4IG5vdCBsb2NrZWQiLCBfX2Z1bmNfXykpCiAKICNkZWZpbmUg
U0NUUF9JTlBfSU5GT19MT0NLX0lOSVQoKSBcCiAJKHZvaWQpcHRocmVhZF9tdXRleF9pbml0KCZT
Q1RQX0JBU0VfSU5GTyhpcGlfZXBfbXR4KSwgJlNDVFBfQkFTRV9WQVIobXR4X2F0dHIpKQpAQCAt
Mzc3LDYgKzM4MywxMCBAQAogI2RlZmluZSBTQ1RQX0lOUF9XVU5MT0NLKF9pbnApIFwKIAkodm9p
ZClwdGhyZWFkX211dGV4X3VubG9jaygmKF9pbnApLT5pbnBfbXR4KQogI2VuZGlmCisjZGVmaW5l
IFNDVFBfSU5QX1JMT0NLX0FTU0VSVChfaW5wKSBcCisJS0FTU0VSVChwdGhyZWFkX211dGV4X3Ry
eWxvY2soJihfaW5wKS0+aW5wX210eCkgPT0gRUJVU1ksICgiJXM6IGlucF9tdHggbm90IGxvY2tl
ZCIsIF9fZnVuY19fKSkKKyNkZWZpbmUgU0NUUF9JTlBfV0xPQ0tfQVNTRVJUKF9pbnApIFwKKwlL
QVNTRVJUKHB0aHJlYWRfbXV0ZXhfdHJ5bG9jaygmKF9pbnApLT5pbnBfbXR4KSA9PSBFQlVTWSwg
KCIlczogaW5wX210eCBub3QgbG9ja2VkIiwgX19mdW5jX18pKQogI2RlZmluZSBTQ1RQX0lOUF9J
TkNSX1JFRihfaW5wKSBhdG9taWNfYWRkX2ludCgmKChfaW5wKS0+cmVmY291bnQpLCAxKQogI2Rl
ZmluZSBTQ1RQX0lOUF9ERUNSX1JFRihfaW5wKSBhdG9taWNfYWRkX2ludCgmKChfaW5wKS0+cmVm
Y291bnQpLCAtMSkKIApAQCAtNDg0LDcgKzQ5NCw3IEBACiAKIC8qIHNvY2tldCBsb2NrcyAqLwog
Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMy
KQogI2RlZmluZSBTT0NLQlVGX0xPQ0tfQVNTRVJUKF9zb19idWYpCiAjZGVmaW5lIFNPQ0tCVUZf
TE9DSyhfc29fYnVmKSBcCiAJRW50ZXJDcml0aWNhbFNlY3Rpb24oJihfc29fYnVmKS0+c2JfbXR4
KQpAQCAtNTE5LDcgKzUyOSw3IEBACiAjZGVmaW5lIFNDVFBfU1RBVExPR19VTkxPQ0soKQogI2Rl
ZmluZSBTQ1RQX1NUQVRMT0dfREVTVFJPWSgpCiAKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29z
X1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAvKiBhZGRyZXNzIGxpc3QgbG9ja3MgKi8K
ICNkZWZpbmUgU0NUUF9JUElfQUREUl9JTklUKCkgXAogCUluaXRpYWxpemVDcml0aWNhbFNlY3Rp
b24oJlNDVFBfQkFTRV9JTkZPKGlwaV9hZGRyX210eCkpCkBAIC01MzMsNiArNTQzLDggQEAKIAlF
bnRlckNyaXRpY2FsU2VjdGlvbigmU0NUUF9CQVNFX0lORk8oaXBpX2FkZHJfbXR4KSkKICNkZWZp
bmUgU0NUUF9JUElfQUREUl9XVU5MT0NLKCkgXAogCUxlYXZlQ3JpdGljYWxTZWN0aW9uKCZTQ1RQ
X0JBU0VfSU5GTyhpcGlfYWRkcl9tdHgpKQorI2RlZmluZSBTQ1RQX0lQSV9BRERSX0xPQ0tfQVNT
RVJUKCkKKyNkZWZpbmUgU0NUUF9JUElfQUREUl9XTE9DS19BU1NFUlQoKQogCiAKIC8qIGl0ZXJh
dG9yIGxvY2tzICovCkBAIC01NTQsNyArNTY2LDcgQEAKICNkZWZpbmUgU0NUUF9JUElfSVRFUkFU
T1JfV1FfVU5MT0NLKCkgXAogCUxlYXZlQ3JpdGljYWxTZWN0aW9uKCZzY3RwX2l0X2N0bC5pcGlf
aXRlcmF0b3Jfd3FfbXR4KQogCi0jZWxzZSAvKiBlbmQgb2YgX19Vc2Vyc3BhY2Vfb3NfV2luZG93
cyAqLworI2Vsc2UKIC8qIGFkZHJlc3MgbGlzdCBsb2NrcyAqLwogI2RlZmluZSBTQ1RQX0lQSV9B
RERSX0lOSVQoKSBcCiAJKHZvaWQpcHRocmVhZF9tdXRleF9pbml0KCZTQ1RQX0JBU0VfSU5GTyhp
cGlfYWRkcl9tdHgpLCAmU0NUUF9CQVNFX1ZBUihtdHhfYXR0cikpCkBAIC01NjksNiArNTgxLDEw
IEBACiAJS0FTU0VSVChwdGhyZWFkX211dGV4X2xvY2soJlNDVFBfQkFTRV9JTkZPKGlwaV9hZGRy
X210eCkpID09IDAsICgiJXM6IGlwaV9hZGRyX210eCBhbHJlYWR5IGxvY2tlZCIsIF9fZnVuY19f
KSkKICNkZWZpbmUgU0NUUF9JUElfQUREUl9XVU5MT0NLKCkgXAogCUtBU1NFUlQocHRocmVhZF9t
dXRleF91bmxvY2soJlNDVFBfQkFTRV9JTkZPKGlwaV9hZGRyX210eCkpID09IDAsICgiJXM6IGlw
aV9hZGRyX210eCBub3QgbG9ja2VkIiwgX19mdW5jX18pKQorI2RlZmluZSBTQ1RQX0lQSV9BRERS
X0xPQ0tfQVNTRVJUKCkgXAorCUtBU1NFUlQocHRocmVhZF9tdXRleF90cnlsb2NrKCZTQ1RQX0JB
U0VfSU5GTyhpcGlfYWRkcl9tdHgpKSA9PSBFQlVTWSwgKCIlczogaXBpX2FkZHJfbXR4IG5vdCBs
b2NrZWQiLCBfX2Z1bmNfXykpCisjZGVmaW5lIFNDVFBfSVBJX0FERFJfV0xPQ0tfQVNTRVJUKCkg
XAorCUtBU1NFUlQocHRocmVhZF9tdXRleF90cnlsb2NrKCZTQ1RQX0JBU0VfSU5GTyhpcGlfYWRk
cl9tdHgpKSA9PSBFQlVTWSwgKCIlczogaXBpX2FkZHJfbXR4IG5vdCBsb2NrZWQiLCBfX2Z1bmNf
XykpCiAjZWxzZQogI2RlZmluZSBTQ1RQX0lQSV9BRERSX1JMT0NLKCkgXAogCSh2b2lkKXB0aHJl
YWRfbXV0ZXhfbG9jaygmU0NUUF9CQVNFX0lORk8oaXBpX2FkZHJfbXR4KSkKQEAgLTU3OCw2ICs1
OTQsOCBAQAogCSh2b2lkKXB0aHJlYWRfbXV0ZXhfbG9jaygmU0NUUF9CQVNFX0lORk8oaXBpX2Fk
ZHJfbXR4KSkKICNkZWZpbmUgU0NUUF9JUElfQUREUl9XVU5MT0NLKCkgXAogCSh2b2lkKXB0aHJl
YWRfbXV0ZXhfdW5sb2NrKCZTQ1RQX0JBU0VfSU5GTyhpcGlfYWRkcl9tdHgpKQorI2RlZmluZSBT
Q1RQX0lQSV9BRERSX0xPQ0tfQVNTRVJUKCkKKyNkZWZpbmUgU0NUUF9JUElfQUREUl9XTE9DS19B
U1NFUlQoKQogI2VuZGlmCiAKIC8qIGl0ZXJhdG9yIGxvY2tzICovCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0
cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9zaGExLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGli
L25ldGluZXQvc2N0cF9zaGExLmMKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRl
eCBhYmE2MTYwNjliNzIyYzkwMjMzN2UxNDE4MGNmM2M2YmMzOTgyZDczLi5kYjBlNzUzM2ZmNmFi
NzY0ZjA1MTc5MGMwMDZkMmFkMTVkNDlmYmQxCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0
aW5ldC9zY3RwX3NoYTEuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9z
aGExLmMKQEAgLTg0LDkgKzg0LDkgQEAgc2N0cF9zaGExX2ZpbmFsKHVuc2lnbmVkIGNoYXIgKmRp
Z2VzdCwgc3RydWN0IHNjdHBfc2hhMV9jb250ZXh0ICpjdHgpCiAjZWxzZQogCiAjaW5jbHVkZSA8
c3RyaW5nLmg+Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmlu
ZWQoX1dJTjMyKSAmJiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8d2luc29jazIu
aD4KLSNlbGlmICFkZWZpbmVkKF9fV2luZG93c19fKQorI2VsaWYgIShkZWZpbmVkKF9XSU4zMikg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfc2hhMS5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfc2hhMS5oCm9sZCBtb2RlIDEwMDY0
NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggNmQ2YTA1YzEwY2RkMmI1MGEyNDM4NDY0ZjRiODgwNTky
MDVmMWFlNi4uZDUzNWVlNDYzOTUxODgyNzExNzI2YjM0Zjg3M2FhZjJhZTI3MTI2OQotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNy
c2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9zaGExLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNy
c2N0cGxpYi9uZXRpbmV0L3NjdHBfc2hhMS5oCkBAIC0zMiw3ICszMiw3IEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmZGVmIF9fRnJlZUJTRF9fCisjaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRl
IDxzeXMvY2RlZnMuaD4KIF9fRkJTRElEKCIkRnJlZUJTRCQiKTsKICNlbmRpZgpAQCAtNDMsMTYg
KzQzLDcgQEAgX19GQlNESUQoIiRGcmVlQlNEJCIpOwogCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+
CiAjaWYgZGVmaW5lZChTQ1RQX1VTRV9OU1NfU0hBMSkKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNl
X29zX0RhcndpbikKLS8qIFRoZSBOU1Mgc291cmNlcyByZXF1aXJlIF9fQVBQTEVfXyB0byBiZSBk
ZWZpbmVkLgotICogWFhYOiBSZW1vdmUgdGhpcyB1Z2x5IGhhY2sgb25jZSB0aGUgcGxhdGZvcm0g
ZGVmaW5lcyBoYXZlIGJlZW4gY2xlYW5lZCB1cC4KLSAqLwotI2RlZmluZSBfX0FQUExFX18KLSNl
bmRpZgogI2luY2x1ZGUgPHBrMTFwdWIuaD4KLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0Rh
cndpbikKLSN1bmRlZiBfX0FQUExFX18KLSNlbmRpZgogI2VsaWYgZGVmaW5lZChTQ1RQX1VTRV9P
UEVOU1NMX1NIQTEpCiAjaW5jbHVkZSA8b3BlbnNzbC9zaGEuaD4KICNlbmRpZgpAQCAtODMsNyAr
NzQsNyBAQCBzdHJ1Y3Qgc2N0cF9zaGExX2NvbnRleHQgewogI2VuZGlmCiB9OwogCi0jaWYgKGRl
ZmluZWQoX19BUFBMRV9fKSAmJiBkZWZpbmVkKEtFUk5FTCkpCisjaWYgKGRlZmluZWQoX19BUFBM
RV9fKSAgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykgJiYgZGVmaW5lZChLRVJORUwpKQogI2lm
bmRlZiBfS0VSTkVMCiAjZGVmaW5lIF9LRVJORUwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBs
aWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfc3NfZnVuY3Rpb25zLmMgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3Jz
Y3RwbGliL25ldGluZXQvc2N0cF9zc19mdW5jdGlvbnMuYwpvbGQgbW9kZSAxMDA2NDQKbmV3IG1v
ZGUgMTAwNzU1CmluZGV4IGYxOTgyNTcyNDY4M2YxYjM0NjdmZTJiODdhOGVkMTMyMmZlNTdhZjgu
LmZhZDQyNDY3YzIwYzk3NTViNjkyN2VjMzY1Zjk1MjdhOTIxNzJjYjkKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIv
dXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfc3NfZnVuY3Rpb25zLmMKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNy
c2N0cGxpYi9uZXRpbmV0L3NjdHBfc3NfZnVuY3Rpb25zLmMKQEAgLTI4LDkgKzI4LDkgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZkZWYgX19GcmVlQlNE
X18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
I2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRp
bmV0L3NjdHBfc3NfZnVuY3Rpb25zLmMgMzI2MTgwIDIwMTctMTEtMjQgMTk6Mzg6NTlaIHR1ZXhl
biAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9zc19mdW5j
dGlvbnMuYyAzNjIxNzMgMjAyMC0wNi0xNCAwOTo1MDowMFogdHVleGVuICQiKTsKICNlbmRpZgog
CiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX3BjYi5oPgpAQCAtNTksNiArNTksOSBAQCBzY3RwX3Nz
X2RlZmF1bHRfaW5pdChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0
aW9uICphc29jLAogewogCXVpbnQxNl90IGk7CiAKKwlpZiAoaG9sZHNfbG9jayA9PSAwKSB7CisJ
CVNDVFBfVENCX1NFTkRfTE9DSyhzdGNiKTsKKwl9CiAJYXNvYy0+c3NfZGF0YS5sb2NrZWRfb25f
c2VuZGluZyA9IE5VTEw7CiAJYXNvYy0+c3NfZGF0YS5sYXN0X291dF9zdHJlYW0gPSBOVUxMOwog
CVRBSUxRX0lOSVQoJmFzb2MtPnNzX2RhdGEub3V0LndoZWVsKTsKQEAgLTcxLDcgKzc0LDEwIEBA
IHNjdHBfc3NfZGVmYXVsdF9pbml0KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBf
YXNzb2NpYXRpb24gKmFzb2MsCiAJZm9yIChpID0gMDsgaSA8IHN0Y2ItPmFzb2Muc3RyZWFtb3V0
Y250OyBpKyspIHsKIAkJc3RjYi0+YXNvYy5zc19mdW5jdGlvbnMuc2N0cF9zc19hZGRfdG9fc3Ry
ZWFtKHN0Y2IsICZzdGNiLT5hc29jLAogCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJnN0Y2ItPmFzb2Muc3RybW91dFtpXSwKLQkJICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIGhvbGRzX2xvY2spOworCQkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMSk7CisJfQor
CWlmIChob2xkc19sb2NrID09IDApIHsKKwkJU0NUUF9UQ0JfU0VORF9VTkxPQ0soc3RjYik7CiAJ
fQogCXJldHVybjsKIH0KQEAgLTg0LDggKzkwLDEwIEBAIHNjdHBfc3NfZGVmYXVsdF9jbGVhcihz
dHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAogCQlT
Q1RQX1RDQl9TRU5EX0xPQ0soc3RjYik7CiAJfQogCXdoaWxlICghVEFJTFFfRU1QVFkoJmFzb2Mt
PnNzX2RhdGEub3V0LndoZWVsKSkgewotCQlzdHJ1Y3Qgc2N0cF9zdHJlYW1fb3V0ICpzdHJxID0g
VEFJTFFfRklSU1QoJmFzb2MtPnNzX2RhdGEub3V0LndoZWVsKTsKLQkJVEFJTFFfUkVNT1ZFKCZh
c29jLT5zc19kYXRhLm91dC53aGVlbCwgVEFJTFFfRklSU1QoJmFzb2MtPnNzX2RhdGEub3V0Lndo
ZWVsKSwgc3NfcGFyYW1zLnJyLm5leHRfc3Bva2UpOworCQlzdHJ1Y3Qgc2N0cF9zdHJlYW1fb3V0
ICpzdHJxOworCisJCXN0cnEgPSBUQUlMUV9GSVJTVCgmYXNvYy0+c3NfZGF0YS5vdXQud2hlZWwp
OworCQlUQUlMUV9SRU1PVkUoJmFzb2MtPnNzX2RhdGEub3V0LndoZWVsLCBzdHJxLCBzc19wYXJh
bXMucnIubmV4dF9zcG9rZSk7CiAJCXN0cnEtPnNzX3BhcmFtcy5yci5uZXh0X3Nwb2tlLnRxZV9u
ZXh0ID0gTlVMTDsKIAkJc3RycS0+c3NfcGFyYW1zLnJyLm5leHRfc3Bva2UudHFlX3ByZXYgPSBO
VUxMOwogCX0KQEAgLTQwMSwxMSArNDA5LDEzIEBAIHNjdHBfc3NfcHJpb19jbGVhcihzdHJ1Y3Qg
c2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAogCQlTQ1RQX1RD
Ql9TRU5EX0xPQ0soc3RjYik7CiAJfQogCXdoaWxlICghVEFJTFFfRU1QVFkoJmFzb2MtPnNzX2Rh
dGEub3V0LndoZWVsKSkgewotCQlzdHJ1Y3Qgc2N0cF9zdHJlYW1fb3V0ICpzdHJxID0gVEFJTFFf
RklSU1QoJmFzb2MtPnNzX2RhdGEub3V0LndoZWVsKTsKKwkJc3RydWN0IHNjdHBfc3RyZWFtX291
dCAqc3RycTsKKworCQlzdHJxID0gVEFJTFFfRklSU1QoJmFzb2MtPnNzX2RhdGEub3V0LndoZWVs
KTsKIAkJaWYgKGNsZWFyX3ZhbHVlcykgewogCQkJc3RycS0+c3NfcGFyYW1zLnByaW8ucHJpb3Jp
dHkgPSAwOwogCQl9Ci0JCVRBSUxRX1JFTU9WRSgmYXNvYy0+c3NfZGF0YS5vdXQud2hlZWwsIFRB
SUxRX0ZJUlNUKCZhc29jLT5zc19kYXRhLm91dC53aGVlbCksIHNzX3BhcmFtcy5wcmlvLm5leHRf
c3Bva2UpOworCQlUQUlMUV9SRU1PVkUoJmFzb2MtPnNzX2RhdGEub3V0LndoZWVsLCBzdHJxLCBz
c19wYXJhbXMucHJpby5uZXh0X3Nwb2tlKTsKIAkJc3RycS0+c3NfcGFyYW1zLnByaW8ubmV4dF9z
cG9rZS50cWVfbmV4dCA9IE5VTEw7CiAJCXN0cnEtPnNzX3BhcmFtcy5wcmlvLm5leHRfc3Bva2Uu
dHFlX3ByZXYgPSBOVUxMOwogCkBAIC01MTEsNiArNTIxLDkgQEAgc2N0cF9zc19wcmlvX3NlbGVj
dChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IgU0NUUF9VTlVTRUQsIHN0cnVjdCBzY3RwX25ldHMgKm5l
dCwKIHsKIAlzdHJ1Y3Qgc2N0cF9zdHJlYW1fb3V0ICpzdHJxLCAqc3RycXQsICpzdHJxbjsKIAor
CWlmIChhc29jLT5zc19kYXRhLmxvY2tlZF9vbl9zZW5kaW5nKSB7CisJCXJldHVybiAoYXNvYy0+
c3NfZGF0YS5sb2NrZWRfb25fc2VuZGluZyk7CisJfQogCXN0cnF0ID0gYXNvYy0+c3NfZGF0YS5s
YXN0X291dF9zdHJlYW07CiBwcmlvX2FnYWluOgogCS8qIEZpbmQgdGhlIG5leHQgc3RyZWFtIHRv
IHVzZSAqLwpAQCAtNTg5LDExICs2MDIsMTMgQEAgc2N0cF9zc19mYl9jbGVhcihzdHJ1Y3Qgc2N0
cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAogCQlTQ1RQX1RDQl9T
RU5EX0xPQ0soc3RjYik7CiAJfQogCXdoaWxlICghVEFJTFFfRU1QVFkoJmFzb2MtPnNzX2RhdGEu
b3V0LndoZWVsKSkgewotCQlzdHJ1Y3Qgc2N0cF9zdHJlYW1fb3V0ICpzdHJxID0gVEFJTFFfRklS
U1QoJmFzb2MtPnNzX2RhdGEub3V0LndoZWVsKTsKKwkJc3RydWN0IHNjdHBfc3RyZWFtX291dCAq
c3RycTsKKworCQlzdHJxID0gVEFJTFFfRklSU1QoJmFzb2MtPnNzX2RhdGEub3V0LndoZWVsKTsK
IAkJaWYgKGNsZWFyX3ZhbHVlcykgewogCQkJc3RycS0+c3NfcGFyYW1zLmZiLnJvdW5kcyA9IC0x
OwogCQl9Ci0JCVRBSUxRX1JFTU9WRSgmYXNvYy0+c3NfZGF0YS5vdXQud2hlZWwsIFRBSUxRX0ZJ
UlNUKCZhc29jLT5zc19kYXRhLm91dC53aGVlbCksIHNzX3BhcmFtcy5mYi5uZXh0X3Nwb2tlKTsK
KwkJVEFJTFFfUkVNT1ZFKCZhc29jLT5zc19kYXRhLm91dC53aGVlbCwgc3RycSwgc3NfcGFyYW1z
LmZiLm5leHRfc3Bva2UpOwogCQlzdHJxLT5zc19wYXJhbXMuZmIubmV4dF9zcG9rZS50cWVfbmV4
dCA9IE5VTEw7CiAJCXN0cnEtPnNzX3BhcmFtcy5mYi5uZXh0X3Nwb2tlLnRxZV9wcmV2ID0gTlVM
TDsKIAl9CkBAIC02ODUsNiArNzAwLDkgQEAgc2N0cF9zc19mYl9zZWxlY3Qoc3RydWN0IHNjdHBf
dGNiICpzdGNiIFNDVFBfVU5VU0VELCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsCiB7CiAJc3RydWN0
IHNjdHBfc3RyZWFtX291dCAqc3RycSA9IE5VTEwsICpzdHJxdDsKIAorCWlmIChhc29jLT5zc19k
YXRhLmxvY2tlZF9vbl9zZW5kaW5nKSB7CisJCXJldHVybiAoYXNvYy0+c3NfZGF0YS5sb2NrZWRf
b25fc2VuZGluZyk7CisJfQogCWlmIChhc29jLT5zc19kYXRhLmxhc3Rfb3V0X3N0cmVhbSA9PSBO
VUxMIHx8CiAJICAgIFRBSUxRX0ZJUlNUKCZhc29jLT5zc19kYXRhLm91dC53aGVlbCkgPT0gVEFJ
TFFfTEFTVCgmYXNvYy0+c3NfZGF0YS5vdXQud2hlZWwsIHNjdHB3aGVlbF9saXN0aGVhZCkpIHsK
IAkJc3RycXQgPSBUQUlMUV9GSVJTVCgmYXNvYy0+c3NfZGF0YS5vdXQud2hlZWwpOwpAQCAtNzUy
LDggKzc3MCw4IEBAIHNjdHBfc3NfZmJfc2NoZWR1bGVkKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwg
c3RydWN0IHNjdHBfbmV0cyAqbmV0IFNDVFBfVU5VU0VELAogICovCiBzdGF0aWMgdm9pZAogc2N0
cF9zc19mY2ZzX2FkZChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0
aW9uICphc29jLAotICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2N0cF9zdHJlYW1fb3V0ICpzdHJx
LCBzdHJ1Y3Qgc2N0cF9zdHJlYW1fcXVldWVfcGVuZGluZyAqc3AsCi0gICAgICAgICAgICAgICAg
IGludCBob2xkc19sb2NrKTsKKyAgICAgICAgICAgICAgICAgc3RydWN0IHNjdHBfc3RyZWFtX291
dCAqc3RycSBTQ1RQX1VOVVNFRCwKKyAgICAgICAgICAgICAgICAgc3RydWN0IHNjdHBfc3RyZWFt
X3F1ZXVlX3BlbmRpbmcgKnNwLCBpbnQgaG9sZHNfbG9jayk7CiAKIHN0YXRpYyB2b2lkCiBzY3Rw
X3NzX2ZjZnNfaW5pdChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0
aW9uICphc29jLApAQCAtNzYzLDYgKzc4MSw5IEBAIHNjdHBfc3NfZmNmc19pbml0KHN0cnVjdCBz
Y3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiAJc3RydWN0IHNj
dHBfc3RyZWFtX3F1ZXVlX3BlbmRpbmcgKnNwOwogCXVpbnQxNl90IGk7CiAKKwlpZiAoaG9sZHNf
bG9jayA9PSAwKSB7CisJCVNDVFBfVENCX1NFTkRfTE9DSyhzdGNiKTsKKwl9CiAJVEFJTFFfSU5J
VCgmYXNvYy0+c3NfZGF0YS5vdXQubGlzdCk7CiAJLyoKIAkgKiBJZiB0aGVyZSBpcyBkYXRhIGlu
IHRoZSBzdHJlYW0gcXVldWVzIGFscmVhZHksCkBAIC03ODIsMTIgKzgwMywxNSBAQCBzY3RwX3Nz
X2ZjZnNfaW5pdChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9u
ICphc29jLAogCQkJCXgrKzsKIAkJCX0KIAkJCWlmIChzcCAhPSBOVUxMKSB7Ci0JCQkJc2N0cF9z
c19mY2ZzX2FkZChzdGNiLCAmc3RjYi0+YXNvYywgJnN0Y2ItPmFzb2Muc3RybW91dFtpXSwgc3As
IGhvbGRzX2xvY2spOworCQkJCXNjdHBfc3NfZmNmc19hZGQoc3RjYiwgJnN0Y2ItPmFzb2MsICZz
dGNiLT5hc29jLnN0cm1vdXRbaV0sIHNwLCAxKTsKIAkJCQlhZGRfbW9yZSA9IDE7CiAJCQl9CiAJ
CX0KIAkJbisrOwogCX0KKwlpZiAoaG9sZHNfbG9jayA9PSAwKSB7CisJCVNDVFBfVENCX1NFTkRf
VU5MT0NLKHN0Y2IpOworCX0KIAlyZXR1cm47CiB9CiAKQEAgLTc5NSwxMiArODE5LDE3IEBAIHN0
YXRpYyB2b2lkCiBzY3RwX3NzX2ZjZnNfY2xlYXIoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1
Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKICAgICAgICAgICAgICAgICAgICBpbnQgY2xlYXJf
dmFsdWVzLCBpbnQgaG9sZHNfbG9jaykKIHsKKwlzdHJ1Y3Qgc2N0cF9zdHJlYW1fcXVldWVfcGVu
ZGluZyAqc3A7CisKIAlpZiAoY2xlYXJfdmFsdWVzKSB7CiAJCWlmIChob2xkc19sb2NrID09IDAp
IHsKIAkJCVNDVFBfVENCX1NFTkRfTE9DSyhzdGNiKTsKIAkJfQogCQl3aGlsZSAoIVRBSUxRX0VN
UFRZKCZhc29jLT5zc19kYXRhLm91dC5saXN0KSkgewotCQkJVEFJTFFfUkVNT1ZFKCZhc29jLT5z
c19kYXRhLm91dC5saXN0LCBUQUlMUV9GSVJTVCgmYXNvYy0+c3NfZGF0YS5vdXQubGlzdCksIHNz
X25leHQpOworCQkJc3AgPSBUQUlMUV9GSVJTVCgmYXNvYy0+c3NfZGF0YS5vdXQubGlzdCk7CisJ
CQlUQUlMUV9SRU1PVkUoJmFzb2MtPnNzX2RhdGEub3V0Lmxpc3QsIHNwLCBzc19uZXh0KTsKKwkJ
CXNwLT5zc19uZXh0LnRxZV9uZXh0ID0gTlVMTDsKKwkJCXNwLT5zc19uZXh0LnRxZV9wcmV2ID0g
TlVMTDsKIAkJfQogCQlpZiAoaG9sZHNfbG9jayA9PSAwKSB7CiAJCQlTQ1RQX1RDQl9TRU5EX1VO
TE9DSyhzdGNiKTsKQEAgLTgyMCw2ICs4NDksOCBAQCBzY3RwX3NzX2ZjZnNfaW5pdF9zdHJlYW0o
c3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9zdHJlYW1fb3V0ICpzdHJxLCBzdAog
CQkJc3RjYi0+YXNvYy5zc19kYXRhLmxhc3Rfb3V0X3N0cmVhbSA9IHN0cnE7CiAJCX0KIAl9CisJ
c3RycS0+c3NfcGFyYW1zLmZiLm5leHRfc3Bva2UudHFlX25leHQgPSBOVUxMOworCXN0cnEtPnNz
X3BhcmFtcy5mYi5uZXh0X3Nwb2tlLnRxZV9wcmV2ID0gTlVMTDsKIAlyZXR1cm47CiB9CiAKQEAg
LTg2Myw2ICs4OTQsOCBAQCBzY3RwX3NzX2ZjZnNfcmVtb3ZlKHN0cnVjdCBzY3RwX3RjYiAqc3Rj
Yiwgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiAJICAgICgoc3AtPnNzX25leHQudHFl
X25leHQgIT0gTlVMTCkgfHwKIAkgICAgIChzcC0+c3NfbmV4dC50cWVfcHJldiAhPSBOVUxMKSkp
IHsKIAkJVEFJTFFfUkVNT1ZFKCZhc29jLT5zc19kYXRhLm91dC5saXN0LCBzcCwgc3NfbmV4dCk7
CisJCXNwLT5zc19uZXh0LnRxZV9uZXh0ID0gTlVMTDsKKwkJc3AtPnNzX25leHQudHFlX3ByZXYg
PSBOVUxMOwogCX0KIAlpZiAoaG9sZHNfbG9jayA9PSAwKSB7CiAJCVNDVFBfVENCX1NFTkRfVU5M
T0NLKHN0Y2IpOwpAQCAtODc4LDYgKzkxMSw5IEBAIHNjdHBfc3NfZmNmc19zZWxlY3Qoc3RydWN0
IHNjdHBfdGNiICpzdGNiIFNDVFBfVU5VU0VELCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsCiAJc3Ry
dWN0IHNjdHBfc3RyZWFtX291dCAqc3RycTsKIAlzdHJ1Y3Qgc2N0cF9zdHJlYW1fcXVldWVfcGVu
ZGluZyAqc3A7CiAKKwlpZiAoYXNvYy0+c3NfZGF0YS5sb2NrZWRfb25fc2VuZGluZykgeworCQly
ZXR1cm4gKGFzb2MtPnNzX2RhdGEubG9ja2VkX29uX3NlbmRpbmcpOworCX0KIAlzcCA9IFRBSUxR
X0ZJUlNUKCZhc29jLT5zc19kYXRhLm91dC5saXN0KTsKIGRlZmF1bHRfYWdhaW46CiAJaWYgKHNw
ICE9IE5VTEwpIHsKQEAgLTkxMyw3ICs5NDksNyBAQCBkZWZhdWx0X2FnYWluOgogY29uc3Qgc3Ry
dWN0IHNjdHBfc3NfZnVuY3Rpb25zIHNjdHBfc3NfZnVuY3Rpb25zW10gPSB7CiAvKiBTQ1RQX1NT
X0RFRkFVTFQgKi8KIHsKLSNpZiBkZWZpbmVkKF9fV2luZG93c19fKSB8fCBkZWZpbmVkKF9fVXNl
cnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJc2N0cF9zc19kZWZhdWx0
X2luaXQsCiAJc2N0cF9zc19kZWZhdWx0X2NsZWFyLAogCXNjdHBfc3NfZGVmYXVsdF9pbml0X3N0
cmVhbSwKQEAgLTk0Myw3ICs5NzksNyBAQCBjb25zdCBzdHJ1Y3Qgc2N0cF9zc19mdW5jdGlvbnMg
c2N0cF9zc19mdW5jdGlvbnNbXSA9IHsKIH0sCiAvKiBTQ1RQX1NTX1JPVU5EX1JPQklOICovCiB7
Ci0jaWYgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5k
b3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogCXNjdHBfc3NfZGVmYXVsdF9pbml0LAogCXNjdHBf
c3NfZGVmYXVsdF9jbGVhciwKIAlzY3RwX3NzX2RlZmF1bHRfaW5pdF9zdHJlYW0sCkBAIC05NzMs
NyArMTAwOSw3IEBAIGNvbnN0IHN0cnVjdCBzY3RwX3NzX2Z1bmN0aW9ucyBzY3RwX3NzX2Z1bmN0
aW9uc1tdID0gewogfSwKIC8qIFNDVFBfU1NfUk9VTkRfUk9CSU5fUEFDS0VUICovCiB7Ci0jaWYg
ZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQor
I2lmIGRlZmluZWQoX1dJTjMyKQogCXNjdHBfc3NfZGVmYXVsdF9pbml0LAogCXNjdHBfc3NfZGVm
YXVsdF9jbGVhciwKIAlzY3RwX3NzX2RlZmF1bHRfaW5pdF9zdHJlYW0sCkBAIC0xMDAzLDcgKzEw
MzksNyBAQCBjb25zdCBzdHJ1Y3Qgc2N0cF9zc19mdW5jdGlvbnMgc2N0cF9zc19mdW5jdGlvbnNb
XSA9IHsKIH0sCiAvKiBTQ1RQX1NTX1BSSU9SSVRZICovCiB7Ci0jaWYgZGVmaW5lZChfX1dpbmRv
d3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJ
TjMyKQogCXNjdHBfc3NfZGVmYXVsdF9pbml0LAogCXNjdHBfc3NfcHJpb19jbGVhciwKIAlzY3Rw
X3NzX3ByaW9faW5pdF9zdHJlYW0sCkBAIC0xMDMzLDcgKzEwNjksNyBAQCBjb25zdCBzdHJ1Y3Qg
c2N0cF9zc19mdW5jdGlvbnMgc2N0cF9zc19mdW5jdGlvbnNbXSA9IHsKIH0sCiAvKiBTQ1RQX1NT
X0ZBSVJfQkFORFdJVEggKi8KIHsKLSNpZiBkZWZpbmVkKF9fV2luZG93c19fKSB8fCBkZWZpbmVk
KF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJc2N0cF9zc19k
ZWZhdWx0X2luaXQsCiAJc2N0cF9zc19mYl9jbGVhciwKIAlzY3RwX3NzX2ZiX2luaXRfc3RyZWFt
LApAQCAtMTA2Myw3ICsxMDk5LDcgQEAgY29uc3Qgc3RydWN0IHNjdHBfc3NfZnVuY3Rpb25zIHNj
dHBfc3NfZnVuY3Rpb25zW10gPSB7CiB9LAogLyogU0NUUF9TU19GSVJTVF9DT01FICovCiB7Ci0j
aWYgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dz
KQorI2lmIGRlZmluZWQoX1dJTjMyKQogCXNjdHBfc3NfZmNmc19pbml0LAogCXNjdHBfc3NfZmNm
c19jbGVhciwKIAlzY3RwX3NzX2ZjZnNfaW5pdF9zdHJlYW0sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9zdHJ1Y3RzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGli
L25ldGluZXQvc2N0cF9zdHJ1Y3RzLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpp
bmRleCBmNDlmMmM4N2E3NzAyNzk3Zjc3MGQxYzgzZWU1MjIyNWZkZmE3NWVjLi4xZjVmMTUzZTk4
NzdkZGY0N2JkYjFlMzc0MzMxOWU1ZWE3NmU3NDg4Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIv
bmV0aW5ldC9zY3RwX3N0cnVjdHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQv
c2N0cF9zdHJ1Y3RzLmgKQEAgLTMyLDkgKzMyLDkgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0jaWZkZWYgX19GcmVlQlNEX18KKyNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPHN5cy9jZGVmcy5o
PgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfc3RydWN0cy5oIDMy
NTM3MCAyMDE3LTExLTAzIDIwOjQ2OjEyWiB0dWV4ZW4gJCIpOworX19GQlNESUQoIiRGcmVlQlNE
OiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfc3RydWN0cy5oIDM2NDI2OCAyMDIwLTA4LTE2IDExOjUw
OjM3WiB0dWV4ZW4gJCIpOwogI2VuZGlmCiAKICNpZm5kZWYgX05FVElORVRfU0NUUF9TVFJVQ1RT
X0hfCkBAIC01NSw3ICs1NSw3IEBAIHN0cnVjdCBzY3RwX3RpbWVyIHsKIAl2b2lkICplcDsKIAl2
b2lkICp0Y2I7CiAJdm9pZCAqbmV0OwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJl
ZUJTRF92ZXJzaW9uID49IDgwMDAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAJdm9pZCAqdm5ldDsKICNlbmRpZgogCkBAIC0xMTMsMTMgKzEx
MywxMiBAQCB0eXBlZGVmIHZvaWQgKCphc29jX2Z1bmMpIChzdHJ1Y3Qgc2N0cF9pbnBjYiAqLCBz
dHJ1Y3Qgc2N0cF90Y2IgKiwgdm9pZCAqcHRyLAogdHlwZWRlZiBpbnQgKCppbnBfZnVuYykgKHN0
cnVjdCBzY3RwX2lucGNiICosIHZvaWQgKnB0ciwgdWludDMyX3QgdmFsKTsKIHR5cGVkZWYgdm9p
ZCAoKmVuZF9mdW5jKSAodm9pZCAqcHRyLCB1aW50MzJfdCB2YWwpOwogCi0jaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgZGVmaW5lZChTQ1RQX01DT1JFX0lOUFVUKSAmJiBkZWZpbmVkKFNNUCkK
KyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lm
IGRlZmluZWQoU0NUUF9NQ09SRV9JTlBVVCkgJiYgZGVmaW5lZChTTVApCiAvKiB3aGF0cyBvbiB0
aGUgbWNvcmUgY29udHJvbCBzdHJ1Y3QgKi8KIHN0cnVjdCBzY3RwX21jb3JlX3F1ZXVlIHsKIAlU
QUlMUV9FTlRSWShzY3RwX21jb3JlX3F1ZXVlKSBuZXh0OwotI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMTAwMAogCXN0cnVjdCB2bmV0ICp2bjsKLSNl
bmRpZgogCXN0cnVjdCBtYnVmICptOwogCWludCBvZmY7CiAJaW50IHY2OwpAQCAtMTM1LDE0ICsx
MzQsMTIgQEAgc3RydWN0IHNjdHBfbWNvcmVfY3RybCB7CiAJaW50IHJ1bm5pbmc7CiAJaW50IGNw
dWlkOwogfTsKLQotCiAjZW5kaWYKLQorI2VuZGlmCiAKIHN0cnVjdCBzY3RwX2l0ZXJhdG9yIHsK
IAlUQUlMUV9FTlRSWShzY3RwX2l0ZXJhdG9yKSBzY3RwX254dF9pdHI7Ci0jaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAxMDAwCisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzdHJ1Y3Qgdm5ldCAqdm47
CiAjZW5kaWYKIAlzdHJ1Y3Qgc2N0cF90aW1lciB0bXI7CkBAIC0xNzMsNyArMTcwLDcgQEAgc3Ry
dWN0IHNjdHBfY29weV9hbGwgewogCXN0cnVjdCBzY3RwX2lucGNiICppbnA7CS8qIGVwICovCiAJ
c3RydWN0IG1idWYgKm07CiAJc3RydWN0IHNjdHBfc25kcmN2aW5mbyBzbmRyY3Y7Ci0JaW50IHNu
ZGxlbjsKKwlzc2l6ZV90IHNuZGxlbjsKIAlpbnQgY250X3NlbnQ7CiAJaW50IGNudF9mYWlsZWQ7
CiB9OwpAQCAtMTg0LDEwICsxODEsMTAgQEAgc3RydWN0IHNjdHBfYXNjb25mX2l0ZXJhdG9yIHsK
IH07CiAKIHN0cnVjdCBpdGVyYXRvcl9jb250cm9sIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJ
c3RydWN0IG10eCBpcGlfaXRlcmF0b3Jfd3FfbXR4OwogCXN0cnVjdCBtdHggaXRfbXR4OwotI2Vs
aWYgZGVmaW5lZChfX0FQUExFX18pCisjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKIAlsY2tfbXR4X3QgKmlwaV9pdGVyYXRvcl93cV9tdHg7CiAJbGNr
X210eF90ICppdF9tdHg7CiAjZWxpZiBkZWZpbmVkKFNDVFBfUFJPQ0VTU19MRVZFTF9MT0NLUykK
QEAgLTIwMCw3ICsxOTcsNyBAQCBzdHJ1Y3QgaXRlcmF0b3JfY29udHJvbCB7CiAJcHRocmVhZF9t
dXRleF90IGl0X210eDsKIAlwdGhyZWFkX2NvbmRfdCBpdGVyYXRvcl93YWtldXA7CiAjZW5kaWYK
LSNlbGlmIGRlZmluZWQoX19XaW5kb3dzX18pCisjZWxpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzdHJ1Y3Qgc3BpbmxvY2sgaXRfbG9jazsKIAlzdHJ1Y3Qg
c3BpbmxvY2sgaXBpX2l0ZXJhdG9yX3dxX2xvY2s7CiAJS0VWRU5UIGl0ZXJhdG9yX3dha2V1cFsy
XTsKQEAgLTIwOCw3ICsyMDUsNyBAQCBzdHJ1Y3QgaXRlcmF0b3JfY29udHJvbCB7CiAjZWxzZQog
CXZvaWQgKml0X210eDsKICNlbmRpZgotI2lmICFkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICEo
ZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pKQogI2lmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiAJU0NUUF9QUk9DRVNTX1NUUlVDVCB0aHJlYWRfcHJvYzsKICNlbHNl
CkBAIC0yMjAsNyArMjE3LDcgQEAgc3RydWN0IGl0ZXJhdG9yX2NvbnRyb2wgewogCXVpbnQzMl90
IGl0ZXJhdG9yX3J1bm5pbmc7CiAJdWludDMyX3QgaXRlcmF0b3JfZmxhZ3M7CiB9OwotI2lmICFk
ZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmICEoZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykpCiAjZGVmaW5lIFNDVFBfSVRFUkFUT1JfTVVTVF9FWElUCQkweDAw
MDAwMDAxCiAjZGVmaW5lIFNDVFBfSVRFUkFUT1JfRVhJVEVECQkweDAwMDAwMDAyCiAjZW5kaWYK
QEAgLTIyOCwyOCArMjI1LDE4IEBAIHN0cnVjdCBpdGVyYXRvcl9jb250cm9sIHsKICNkZWZpbmUg
U0NUUF9JVEVSQVRPUl9TVE9QX0NVUl9JTlAJMHgwMDAwMDAwOAogCiBzdHJ1Y3Qgc2N0cF9uZXRf
cm91dGUgewotCXNjdHBfcnRlbnRyeV90ICpyb19ydDsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KQotI2lmIF9fRnJlZUJTRF92ZXJzaW9uIDwgMTEwMDA5MwotI2lmIF9fRnJlZUJTRF92ZXJzaW9u
ID49IDgwMDAwMAotCXZvaWQgKnJvX2xsZTsKLSNlbmRpZgotI2lmIF9fRnJlZUJTRF92ZXJzaW9u
ID49IDkwMDAwMAotCXZvaWQgKnJvX2lhOwotCWludCByb19mbGFnczsKLSNlbmRpZgotI2Vsc2UK
LSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSAxMTAwMTE2CisjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwlzdHJ1Y3QgbmhvcF9vYmplY3QgKnJvX25o
OwogCXN0cnVjdCBsbGVudHJ5ICpyb19sbGU7Ci0jZW5kaWYKIAljaGFyCQkqcm9fcHJlcGVuZDsK
IAl1aW50MTZfdAlyb19wbGVuOwogCXVpbnQxNl90CXJvX2ZsYWdzOwogCXVpbnQxNl90CXJvX210
dTsKIAl1aW50MTZfdAlzcGFyZTsKKyNlbHNlCisJc2N0cF9ydGVudHJ5X3QgKnJvX3J0OwogI2Vu
ZGlmCi0jZW5kaWYKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZiAhZGVmaW5lZChBUFBMRV9MRU9QQVJE
KSAmJiAhZGVmaW5lZChBUFBMRV9TTk9XTEVPUEFSRCkgJiYgIWRlZmluZWQoQVBQTEVfTElPTikg
JiYgIWRlZmluZWQoQVBQTEVfTU9VTlRBSU5MSU9OKSAmJiAhZGVmaW5lZChBUFBMRV9FTENBUElU
QU4pCiAJc3RydWN0IGxsZW50cnkJKnJvX2xsZTsKICNlbmRpZgpAQCAtMzM0LDcgKzMyMSw3IEBA
IHN0cnVjdCBzY3RwX25ldHMgewogCWludCBsYXN0c2E7CiAJaW50IGxhc3RzdjsKIAl1aW50NjRf
dCBydHQ7IC8qIGxhc3QgbWVhc3VyZWQgcnR0IHZhbHVlIGluIHVzICovCi0JdW5zaWduZWQgaW50
IFJUTzsKKwl1aW50MzJfdCBSVE87CiAKIAkvKiBUaGlzIGlzIHVzZWQgZm9yIFNIVVRET1dOL1NI
VVRET1dOLUFDSy9TRU5EIG9yIElOSVQgdGltZXJzICovCiAJc3RydWN0IHNjdHBfdGltZXIgcnh0
X3RpbWVyOwpAQCAtNDQzLDcgKzQzMCw3IEBAIHN0cnVjdCBzY3RwX25ldHMgewogCXVpbnQ4X3Qg
bGFzdF9oc191c2VkOwkvKiBpbmRleCBpbnRvIHRoZSBsYXN0IEhTIHRhYmxlIGVudHJ5IHdlIHVz
ZWQgKi8KIAl1aW50OF90IGxhbl90eXBlOwogCXVpbnQ4X3QgcnRvX25lZWRlZDsKLSNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAJdWludDMyX3QgZmxvd2lkOwogCXVpbnQ4X3QgZmxvd3R5cGU7CiAjZW5k
aWYKQEAgLTU5Nyw2ICs1ODQsNyBAQCBzdHJ1Y3Qgc2N0cF9zdHJlYW1fcXVldWVfcGVuZGluZyB7
CiAJdWludDhfdCAgc2VuZGVyX2FsbF9kb25lOwogCXVpbnQ4X3QgIHB1dF9sYXN0X291dDsKIAl1
aW50OF90ICBkaXNjYXJkX3Jlc3Q7CisJdWludDhfdCAgcHJvY2Vzc2luZzsKIH07CiAKIC8qCkBA
IC04NjgsNyArODU2LDYgQEAgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gewogCXN0cnVjdCBzY3Rw
X3RpbWVyIHN0cnJlc2V0X3RpbWVyOwkvKiBzdHJlYW0gcmVzZXQgKi8KIAlzdHJ1Y3Qgc2N0cF90
aW1lciBzaHV0X2d1YXJkX3RpbWVyOwkvKiBzaHV0ZG93biBndWFyZCAqLwogCXN0cnVjdCBzY3Rw
X3RpbWVyIGF1dG9jbG9zZV90aW1lcjsJLyogYXV0b21hdGljIGNsb3NlIHRpbWVyICovCi0Jc3Ry
dWN0IHNjdHBfdGltZXIgZGVsYXllZF9ldmVudF90aW1lcjsJLyogdGltZXIgZm9yIGRlbGF5ZWQg
ZXZlbnRzICovCiAJc3RydWN0IHNjdHBfdGltZXIgZGVsZXRlX3ByaW1fdGltZXI7CS8qIGRlbGV0
aW5nIHByaW1hcnkgZHN0ICovCiAKIAkvKiBsaXN0IG9mIHJlc3RyaWN0ZWQgbG9jYWwgYWRkcmVz
c2VzICovCkBAIC0xMTIyLDcgKzExMDksNyBAQCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiB7CiAJ
dWludDMyX3QgaGVhcnRfYmVhdF9kZWxheTsKIAogCS8qIGF1dG9jbG9zZSAqLwotCXVuc2lnbmVk
IGludCBzY3RwX2F1dG9jbG9zZV90aWNrczsKKwl1aW50MzJfdCBzY3RwX2F1dG9jbG9zZV90aWNr
czsKIAogCS8qIGhvdyBtYW55IHByZW9wZW4gc3RyZWFtcyB3ZSBoYXZlICovCiAJdW5zaWduZWQg
aW50IHByZV9vcGVuX3N0cmVhbXM7CkBAIC0xMTMxLDcgKzExMTgsNyBAQCBzdHJ1Y3Qgc2N0cF9h
c3NvY2lhdGlvbiB7CiAJdW5zaWduZWQgaW50IG1heF9pbmJvdW5kX3N0cmVhbXM7CiAKIAkvKiB0
aGUgY29va2llIGxpZmUgSSBhd2FyZCBmb3IgYW55IGNvb2tpZSwgaW4gc2Vjb25kcyAqLwotCXVu
c2lnbmVkIGludCBjb29raWVfbGlmZTsKKwl1aW50MzJfdCBjb29raWVfbGlmZTsKIAkvKiB0aW1l
IHRvIGRlbGF5IGFja3MgZm9yICovCiAJdW5zaWduZWQgaW50IGRlbGF5ZWRfYWNrOwogCXVuc2ln
bmVkIGludCBvbGRfZGVsYXllZF9hY2s7CkBAIC0xMTQwLDEwICsxMTI3LDEwIEBAIHN0cnVjdCBz
Y3RwX2Fzc29jaWF0aW9uIHsKIAogCXVuc2lnbmVkIGludCBudW1kdXB0c25zOwogCWludCBkdXBf
dHNuc1tTQ1RQX01BWF9EVVBfVFNOU107Ci0JdW5zaWduZWQgaW50IGluaXRpYWxfaW5pdF9ydG9f
bWF4OwkvKiBpbml0aWFsIFJUTyBmb3IgSU5JVCdzICovCi0JdW5zaWduZWQgaW50IGluaXRpYWxf
cnRvOwkvKiBpbml0aWFsIHNlbmQgUlRPICovCi0JdW5zaWduZWQgaW50IG1pbnJ0bzsJLyogcGVy
IGFzc29jIFJUTy1NSU4gKi8KLQl1bnNpZ25lZCBpbnQgbWF4cnRvOwkvKiBwZXIgYXNzb2MgUlRP
LU1BWCAqLworCXVpbnQzMl90IGluaXRpYWxfaW5pdF9ydG9fbWF4OwkvKiBpbml0aWFsIFJUTyBm
b3IgSU5JVCdzICovCisJdWludDMyX3QgaW5pdGlhbF9ydG87CS8qIGluaXRpYWwgc2VuZCBSVE8g
Ki8KKwl1aW50MzJfdCBtaW5ydG87CS8qIHBlciBhc3NvYyBSVE8tTUlOICovCisJdWludDMyX3Qg
bWF4cnRvOwkvKiBwZXIgYXNzb2MgUlRPLU1BWCAqLwogCiAJLyogYXV0aGVudGljYXRpb24gZmll
bGRzICovCiAJc2N0cF9hdXRoX2Noa2xpc3RfdCAqbG9jYWxfYXV0aF9jaHVua3M7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9zeXNjdGwuYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3N5c2N0bC5jCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9k
ZSAxMDA3NTUKaW5kZXggODNkMmM5YTJiODNhMzQ0OTExMjc0ZWQ2MTYwMWY4MjcwMTI0MWFhZS4u
OTEwNjgxMThlMTc2ODlhNGE0NjBmNGM0YWU5NmY1Mzg3YjI2NTM1MwotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91
c3JzY3RwbGliL25ldGluZXQvc2N0cF9zeXNjdGwuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGli
L25ldGluZXQvc2N0cF9zeXNjdGwuYwpAQCAtMzIsOSArMzIsOSBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZmRlZiBfX0ZyZWVCU0RfXworI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8c3lz
L2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9zeXNj
dGwuYyAzMjY2NzIgMjAxNy0xMi0wNyAyMjoxOTowOFogdHVleGVuICQiKTsKK19fRkJTRElEKCIk
RnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX3N5c2N0bC5jIDM2MTkzNCAyMDIwLTA2LTA4
IDIwOjIzOjIwWiB0dWV4ZW4gJCIpOwogI2VuZGlmCiAKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBf
b3MuaD4KQEAgLTQ0LDE1ICs0NCwxNSBAQCBfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25l
dGluZXQvc2N0cF9zeXNjdGwuYyAzMjY2NzIgMjAxNy0xMi0wNyAyMjoxOTowOFogdAogI2luY2x1
ZGUgPG5ldGluZXQvc2N0cF9wY2IuaD4KICNpbmNsdWRlIDxuZXRpbmV0L3NjdHB1dGlsLmg+CiAj
aW5jbHVkZSA8bmV0aW5ldC9zY3RwX291dHB1dC5oPgotI2lmZGVmIF9fRnJlZUJTRF9fCisjaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRl
IDxzeXMvc21wLmg+CiAjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgogI2VuZGlmCi0jaWYgZGVmaW5l
ZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX2JzZF9hZGRyLmg+CiAjZW5kaWYKIAotI2lm
ZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKIEZFQVRVUkUoc2N0cCwgIlN0cmVhbSBDb250cm9sIFRyYW5zbWlzc2lvbiBQ
cm90b2NvbCIpOwogI2VuZGlmCiAKQEAgLTc0LDcgKzc0LDcgQEAgc2N0cF9pbml0X3N5c2N0bHMo
KQogCVNDVFBfQkFTRV9TWVNDVEwoc2N0cF9yZWNvbmZpZ19lbmFibGUpID0gU0NUUENUTF9SRUNP
TkZJR19FTkFCTEVfREVGQVVMVDsKIAlTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbnJzYWNrX2VuYWJs
ZSkgPSBTQ1RQQ1RMX05SU0FDS19FTkFCTEVfREVGQVVMVDsKIAlTQ1RQX0JBU0VfU1lTQ1RMKHNj
dHBfcGt0ZHJvcF9lbmFibGUpID0gU0NUUENUTF9QS1REUk9QX0VOQUJMRV9ERUZBVUxUOwotI2lm
ICEoZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAwMDAwKQor
I2lmICEoZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAJ
U0NUUF9CQVNFX1NZU0NUTChzY3RwX25vX2NzdW1fb25fbG9vcGJhY2spID0gU0NUUENUTF9MT09Q
QkFDS19OT0NTVU1fREVGQVVMVDsKICNlbmRpZgogCVNDVFBfQkFTRV9TWVNDVEwoc2N0cF9wZWVy
X2NodW5rX29oKSA9IFNDVFBDVExfUEVFUl9DSEtPSF9ERUZBVUxUOwpAQCAtMTQ5LDkgKzE0OSwx
MCBAQCBzY3RwX2luaXRfc3lzY3RscygpCiAJU0NUUF9CQVNFX1NZU0NUTChzY3RwX3N0ZWFkeV9z
dGVwKSA9IFNDVFBDVExfUlRUVkFSX1NURUFEWVNfREVGQVVMVDsKIAlTQ1RQX0JBU0VfU1lTQ1RM
KHNjdHBfdXNlX2RjY2NfZWNuKSA9IFNDVFBDVExfUlRUVkFSX0RDQ0NFQ05fREVGQVVMVDsKIAlT
Q1RQX0JBU0VfU1lTQ1RMKHNjdHBfYmxhY2tob2xlKSA9IFNDVFBDVExfQkxBQ0tIT0xFX0RFRkFV
TFQ7CisJU0NUUF9CQVNFX1NZU0NUTChzY3RwX3NlbmRhbGxfbGltaXQpID0gU0NUUENUTF9TRU5E
QUxMX0xJTUlUX0RFRkFVTFQ7CiAJU0NUUF9CQVNFX1NZU0NUTChzY3RwX2RpYWdfaW5mb19jb2Rl
KSA9IFNDVFBDVExfRElBR19JTkZPX0NPREVfREVGQVVMVDsKICNpZiBkZWZpbmVkKFNDVFBfTE9D
QUxfVFJBQ0VfQlVGKQotI2lmIGRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgZGVmaW5lZChfV0lO
MzIpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJLyogT24gV2luZG93cywgdGhlIHJlc291
cmNlIGZvciBnbG9iYWwgdmFyaWFibGVzIGlzIGxpbWl0ZWQuICovCiAJTUFMTE9DKFNDVFBfQkFT
RV9TWVNDVEwoc2N0cF9sb2cpLCBzdHJ1Y3Qgc2N0cF9sb2cgKiwgc2l6ZW9mKHN0cnVjdCBzY3Rw
X2xvZyksIE1fU1lTQ1RMLCBNX1pFUk8pOwogI2Vsc2UKQEAgLTE2NCwxOCArMTY1LDE4IEBAIHNj
dHBfaW5pdF9zeXNjdGxzKCkKICNpZiBkZWZpbmVkKFNDVFBfREVCVUcpCiAJU0NUUF9CQVNFX1NZ
U0NUTChzY3RwX2RlYnVnX29uKSA9IFNDVFBDVExfREVCVUdfREVGQVVMVDsKICNlbmRpZgotI2lm
IGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogCVNDVFBfQkFTRV9TWVNDVEwoc2N0cF9pZ25vcmVfdm13YXJlX2ludGVy
ZmFjZXMpID0gU0NUUENUTF9JR05PUkVfVk1XQVJFX0lOVEVSRkFDRVNfREVGQVVMVDsKIAlTQ1RQ
X0JBU0VfU1lTQ1RMKHNjdHBfbWFpbl90aW1lcikgPSBTQ1RQQ1RMX01BSU5fVElNRVJfREVGQVVM
VDsKIAlTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfYWRkcl93YXRjaGRvZ19saW1pdCkgPSBTQ1RQQ1RM
X0FERFJfV0FUQ0hET0dfTElNSVRfREVGQVVMVDsKIAlTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfdnRh
Z193YXRjaGRvZ19saW1pdCkgPSBTQ1RQQ1RMX1ZUQUdfV0FUQ0hET0dfTElNSVRfREVGQVVMVDsK
ICNlbmRpZgotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19U
RVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCVNDVFBfQkFTRV9TWVNDVEwoc2N0cF9vdXRwdXRfdW5sb2NrZWQpID0gU0NUUENUTF9PVVRQ
VVRfVU5MT0NLRURfREVGQVVMVDsKICNlbmRpZgogfQogCi0jaWYgZGVmaW5lZChfX1dpbmRvd3Nf
XykKKyNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIHZvaWQK
IHNjdHBfZmluaXNoX3N5c2N0bHMoKQogewpAQCAtMTg4LDcgKzE4OSw3IEBAIHNjdHBfZmluaXNo
X3N5c2N0bHMoKQogfQogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5l
ZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogLyogSXQgcmV0dXJucyBhbiB1cHBlciBsaW1pdC4gTm8gZmlsdGVyaW5nIGlz
IGRvbmUgaGVyZSAqLwogc3RhdGljIHVuc2lnbmVkIGludAogc2N0cF9zeXNjdGxfbnVtYmVyX29m
X2FkZHJlc3NlcyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wKQpAQCAtMzI4LDcgKzMyOSw3IEBAIHNj
dHBfc3lzY3RsX2NvcHlfb3V0X2xvY2FsX2FkZHJlc3NlcyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5w
LCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0CiAJCQkJCQlzaW4gPSAmc2N0cF9pZmEtPmFkZHJlc3Muc2lu
OwogCQkJCQkJaWYgKHNpbi0+c2luX2FkZHIuc19hZGRyID09IDApCiAJCQkJCQkJY29udGludWU7
Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCQkJaWYgKHByaXNvbl9jaGVja19pcDQoaW5wLT5p
cF9pbnAuaW5wLmlucF9jcmVkLAogCQkJCQkJICAgICAgICAgICAgICAgICAgICAgJnNpbi0+c2lu
X2FkZHIpICE9IDApIHsKIAkJCQkJCQljb250aW51ZTsKQEAgLTM0OSw3ICszNTAsNyBAQCBzY3Rw
X3N5c2N0bF9jb3B5X291dF9sb2NhbF9hZGRyZXNzZXMoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwg
c3RydWN0IHNjdHBfdGNiICpzdAogCQkJCQkJc2luNiA9ICZzY3RwX2lmYS0+YWRkcmVzcy5zaW42
OwogCQkJCQkJaWYgKElONl9JU19BRERSX1VOU1BFQ0lGSUVEKCZzaW42LT5zaW42X2FkZHIpKQog
CQkJCQkJCWNvbnRpbnVlOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQkJCWlmIChwcmlzb25f
Y2hlY2tfaXA2KGlucC0+aXBfaW5wLmlucC5pbnBfY3JlZCwKIAkJCQkJCSAgICAgICAgICAgICAg
ICAgICAgICZzaW42LT5zaW42X2FkZHIpICE9IDApIHsKIAkJCQkJCQljb250aW51ZTsKQEAgLTQy
Nyw3ICs0MjgsNyBAQCBzY3RwX3N5c2N0bF9jb3B5X291dF9sb2NhbF9hZGRyZXNzZXMoc3RydWN0
IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdAogLyoKICAqIHN5c2N0bCBmdW5j
dGlvbnMKICAqLwotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogc3RhdGljIGludAogc2N0cF9zeXNjdGxfaGFu
ZGxlX2Fzc29jbGlzdCBTWVNDVExfSEFORExFUl9BUkdTCiB7CkBAIC00NTcsNyArNDU4LDcgQEAg
c2N0cF9zeXNjdGxfaGFuZGxlX2Fzc29jbGlzdChTWVNDVExfSEFORExFUl9BUkdTKQogCW51bWJl
cl9vZl9yZW1vdGVfYWRkcmVzc2VzID0gMDsKIAogCVNDVFBfSU5QX0lORk9fUkxPQ0soKTsKLSNp
ZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKIAlpZiAocmVxLT5vbGRwdHIgPT0gVVNFUl9BRERSX05VTEwpIHsKICNl
bHNlCiAJaWYgKHJlcS0+b2xkcHRyID09IE5VTEwpIHsKQEAgLTQ4MiwxNCArNDgzLDE0IEBAIHNj
dHBfc3lzY3RsX2hhbmRsZV9hc3NvY2xpc3QoU1lTQ1RMX0hBTkRMRVJfQVJHUykKIAkJICAgIChu
dW1iZXJfb2ZfcmVtb3RlX2FkZHJlc3NlcyArIG51bWJlcl9vZl9hc3NvY2lhdGlvbnMpICogc2l6
ZW9mKHN0cnVjdCB4c2N0cF9yYWRkcik7CiAKIAkJLyogcmVxdWVzdCBzb21lIG1vcmUgbWVtb3J5
IHRoYW4gbmVlZGVkICovCi0jaWYgIWRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgIShkZWZpbmVk
KF9XSU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAJCXJlcS0+b2xkaWR4ID0gKG4g
KyBuIC8gOCk7CiAjZWxzZQogCQlyZXEtPmRhdGFpZHggPSAobiArIG4gLyA4KTsKICNlbmRpZgog
CQlyZXR1cm4gKDApOwogCX0KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9f
QVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlpZiAocmVxLT5uZXdwdHIgIT0g
VVNFUl9BRERSX05VTEwpIHsKICNlbHNlCiAJaWYgKHJlcS0+bmV3cHRyICE9IE5VTEwpIHsKQEAg
LTQ5OCw2ICs0OTksOSBAQCBzY3RwX3N5c2N0bF9oYW5kbGVfYXNzb2NsaXN0KFNZU0NUTF9IQU5E
TEVSX0FSR1MpCiAJCVNDVFBfTFRSQUNFX0VSUl9SRVQoTlVMTCwgTlVMTCwgTlVMTCwgU0NUUF9G
Uk9NX1NDVFBfU1lTQ1RMLCBFUEVSTSk7CiAJCXJldHVybiAoRVBFUk0pOwogCX0KKwltZW1zZXQo
JnhpbnBjYiwgMCwgc2l6ZW9mKHhpbnBjYikpOworCW1lbXNldCgmeHN0Y2IsIDAsIHNpemVvZih4
c3RjYikpOworCW1lbXNldCgmeHJhZGRyLCAwLCBzaXplb2YoeHJhZGRyKSk7CiAJTElTVF9GT1JF
QUNIKGlucCwgJlNDVFBfQkFTRV9JTkZPKGxpc3RoZWFkKSwgc2N0cF9saXN0KSB7CiAJCVNDVFBf
SU5QX1JMT0NLKGlucCk7CiAJCWlmIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19T
T0NLRVRfQUxMR09ORSkgewpAQCAtNTA3LDE2ICs1MTEsMTQgQEAgc2N0cF9zeXNjdGxfaGFuZGxl
X2Fzc29jbGlzdChTWVNDVExfSEFORExFUl9BUkdTKQogCQl4aW5wY2IubGFzdCA9IDA7CiAJCXhp
bnBjYi5sb2NhbF9wb3J0ID0gbnRvaHMoaW5wLT5zY3RwX2xwb3J0KTsKIAkJeGlucGNiLmZsYWdz
ID0gaW5wLT5zY3RwX2ZsYWdzOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJT
RF92ZXJzaW9uIDwgMTAwMDA0OAotCQl4aW5wY2IuZmVhdHVyZXMgPSAodWludDMyX3QpaW5wLT5z
Y3RwX2ZlYXR1cmVzOwotI2Vsc2UKIAkJeGlucGNiLmZlYXR1cmVzID0gaW5wLT5zY3RwX2ZlYXR1
cmVzOwotI2VuZGlmCiAJCXhpbnBjYi50b3RhbF9zZW5kcyA9IGlucC0+dG90YWxfc2VuZHM7CiAJ
CXhpbnBjYi50b3RhbF9yZWN2cyA9IGlucC0+dG90YWxfcmVjdnM7CiAJCXhpbnBjYi50b3RhbF9u
b3NwYWNlcyA9IGlucC0+dG90YWxfbm9zcGFjZXM7CiAJCXhpbnBjYi5mcmFnbWVudGF0aW9uX3Bv
aW50ID0gaW5wLT5zY3RwX2ZyYWdfcG9pbnQ7Ci0jaWYgIShkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAoX19GcmVlQlNEX3ZlcnNpb24gPCAxMDAxNTE3KSkKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQl4aW5wY2Iuc29ja2V0ID0gKHVpbnRwdHJf
dClpbnAtPnNjdHBfc29ja2V0OworI2Vsc2UKIAkJeGlucGNiLnNvY2tldCA9IGlucC0+c2N0cF9z
b2NrZXQ7CiAjZW5kaWYKIAkJc28gPSBpbnAtPnNjdHBfc29ja2V0OwpAQCAtNTI2LDMzICs1Mjgs
MTYgQEAgc2N0cF9zeXNjdGxfaGFuZGxlX2Fzc29jbGlzdChTWVNDVExfSEFORExFUl9BUkdTKQog
CQkJeGlucGNiLnFsZW4gPSAwOwogCQkJeGlucGNiLm1heHFsZW4gPSAwOwogCQl9IGVsc2Ugewot
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDEyMDAwMzQK
KyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJ
eGlucGNiLnFsZW4gPSBzby0+c29sX3FsZW47Ci0jZWxzZQotCQkJeGlucGNiLnFsZW4gPSBzby0+
c29fcWxlbjsKLSNlbmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92
ZXJzaW9uID4gMTEwMDA5NgotI2lmIF9fRnJlZUJTRF92ZXJzaW9uID49IDEyMDAwMzQKIAkJCXhp
bnBjYi5xbGVuX29sZCA9IHNvLT5zb2xfcWxlbiA+IFVTSFJUX01BWCA/CiAJCQkgICAgVVNIUlRf
TUFYIDogKHVpbnQxNl90KSBzby0+c29sX3FsZW47Ci0jZWxzZQotCQkJeGlucGNiLnFsZW5fb2xk
ID0gc28tPnNvX3FsZW4gPiBVU0hSVF9NQVggPwotCQkJICAgIFVTSFJUX01BWCA6ICh1aW50MTZf
dCkgc28tPnNvX3FsZW47Ci0jZW5kaWYKLSNlbmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
ICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDEyMDAwMzQKIAkJCXhpbnBjYi5tYXhxbGVuID0gc28t
PnNvbF9xbGltaXQ7Ci0jZWxzZQotCQkJeGlucGNiLm1heHFsZW4gPSBzby0+c29fcWxpbWl0Owot
I2VuZGlmCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPiAx
MTAwMDk2Ci0jaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0gMTIwMDAzNAogCQkJeGlucGNiLm1heHFs
ZW5fb2xkID0gc28tPnNvbF9xbGltaXQgPiBVU0hSVF9NQVggPwogCQkJICAgIFVTSFJUX01BWCA6
ICh1aW50MTZfdCkgc28tPnNvbF9xbGltaXQ7CiAjZWxzZQotCQkJeGlucGNiLm1heHFsZW5fb2xk
ID0gc28tPnNvX3FsaW1pdCA+IFVTSFJUX01BWCA/Ci0JCQkgICAgVVNIUlRfTUFYIDogKHVpbnQx
Nl90KSBzby0+c29fcWxpbWl0OwotI2VuZGlmCisJCQl4aW5wY2IucWxlbiA9IHNvLT5zb19xbGVu
OworCQkJeGlucGNiLm1heHFsZW4gPSBzby0+c29fcWxpbWl0OwogI2VuZGlmCiAJCX0KIAkJU0NU
UF9JTlBfSU5DUl9SRUYoaW5wKTsKQEAgLTU4MSwxNiArNTY2LDggQEAgc2N0cF9zeXNjdGxfaGFu
ZGxlX2Fzc29jbGlzdChTWVNDVExfSEFORExFUl9BUkdTKQogCQkJCXhzdGNiLnByaW1hcnlfYWRk
ciA9IHN0Y2ItPmFzb2MucHJpbWFyeV9kZXN0aW5hdGlvbi0+cm8uX2xfYWRkcjsKIAkJCXhzdGNi
LmhlYXJ0YmVhdF9pbnRlcnZhbCA9IHN0Y2ItPmFzb2MuaGVhcnRfYmVhdF9kZWxheTsKIAkJCXhz
dGNiLnN0YXRlID0gKHVpbnQzMl90KXNjdHBfbWFwX2Fzc29jX3N0YXRlKHN0Y2ItPmFzb2Muc3Rh
dGUpOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCi0jaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0g
ODAwMDAwCi0JCQkvKiA3LjAgZG9lcyBub3Qgc3VwcG9ydCB0aGVzZSAqLwogCQkJeHN0Y2IuYXNz
b2NfaWQgPSBzY3RwX2dldF9hc3NvY2lkKHN0Y2IpOwogCQkJeHN0Y2IucGVlcnNfcnduZCA9IHN0
Y2ItPmFzb2MucGVlcnNfcnduZDsKLSNlbmRpZgotI2Vsc2UKLQkJCXhzdGNiLmFzc29jX2lkID0g
c2N0cF9nZXRfYXNzb2NpZChzdGNiKTsKLQkJCXhzdGNiLnBlZXJzX3J3bmQgPSBzdGNiLT5hc29j
LnBlZXJzX3J3bmQ7Ci0jZW5kaWYKIAkJCXhzdGNiLmluX3N0cmVhbXMgPSBzdGNiLT5hc29jLnN0
cmVhbWluY250OwogCQkJeHN0Y2Iub3V0X3N0cmVhbXMgPSBzdGNiLT5hc29jLnN0cmVhbW91dGNu
dDsKIAkJCXhzdGNiLm1heF9ucl9yZXRyYW5zID0gc3RjYi0+YXNvYy5vdmVyYWxsX2Vycm9yX2Nv
dW50OwpAQCAtNjQyLDggKzYxOSw2IEBAIHNjdHBfc3lzY3RsX2hhbmRsZV9hc3NvY2xpc3QoU1lT
Q1RMX0hBTkRMRVJfQVJHUykKIAkJCQl4cmFkZHIuY3duZCA9IG5ldC0+Y3duZDsKIAkJCQl4cmFk
ZHIuZmxpZ2h0X3NpemUgPSBuZXQtPmZsaWdodF9zaXplOwogCQkJCXhyYWRkci5tdHUgPSBuZXQt
Pm10dTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQotI2lmIF9fRnJlZUJTRF92ZXJzaW9uID49
IDgwMDAwMAogCQkJCXhyYWRkci5ydHQgPSBuZXQtPnJ0dCAvIDEwMDA7CiAJCQkJeHJhZGRyLmhl
YXJ0YmVhdF9pbnRlcnZhbCA9IG5ldC0+aGVhcnRfYmVhdF9kZWxheTsKIAkJCQl4cmFkZHIuc3N0
aHJlc2ggPSBuZXQtPnNzdGhyZXNoOwpAQCAtNjU1LDIwICs2MzAsNiBAQCBzY3RwX3N5c2N0bF9o
YW5kbGVfYXNzb2NsaXN0KFNZU0NUTF9IQU5ETEVSX0FSR1MpCiAJCQkJfSBlbHNlIHsKIAkJCQkJ
eHJhZGRyLnN0YXRlID0gU0NUUF9JTkFDVElWRTsKIAkJCQl9Ci0jZW5kaWYKLSNlbHNlCi0JCQkJ
eHJhZGRyLnJ0dCA9IG5ldC0+cnR0IC8gMTAwMDsKLQkJCQl4cmFkZHIuaGVhcnRiZWF0X2ludGVy
dmFsID0gbmV0LT5oZWFydF9iZWF0X2RlbGF5OwotCQkJCXhyYWRkci5zc3RocmVzaCA9IG5ldC0+
c3N0aHJlc2g7Ci0JCQkJeHJhZGRyLmVuY2Fwc19wb3J0ID0gbmV0LT5wb3J0OwotCQkJCWlmIChu
ZXQtPmRlc3Rfc3RhdGUgJiBTQ1RQX0FERFJfVU5DT05GSVJNRUQpIHsKLQkJCQkJeHJhZGRyLnN0
YXRlID0gU0NUUF9VTkNPTkZJUk1FRDsKLQkJCQl9IGVsc2UgaWYgKG5ldC0+ZGVzdF9zdGF0ZSAm
IFNDVFBfQUREUl9SRUFDSEFCTEUpIHsKLQkJCQkJeHJhZGRyLnN0YXRlID0gU0NUUF9BQ1RJVkU7
Ci0JCQkJfSBlbHNlIHsKLQkJCQkJeHJhZGRyLnN0YXRlID0gU0NUUF9JTkFDVElWRTsKLQkJCQl9
Ci0jZW5kaWYKIAkJCQl4cmFkZHIuc3RhcnRfdGltZS50dl9zZWMgPSAodWludDMyX3QpbmV0LT5z
dGFydF90aW1lLnR2X3NlYzsKIAkJCQl4cmFkZHIuc3RhcnRfdGltZS50dl91c2VjID0gKHVpbnQz
Ml90KW5ldC0+c3RhcnRfdGltZS50dl91c2VjOwogCQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsK
QEAgLTcxNSw3ICs2NzYsNyBAQCBza2lwOgogCXJldHVybiAoZXJyb3IpOwogfQogCi0jaWYgZGVm
aW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiBzdGF0aWMgaW50CiBzY3RwX3N5c2N0bF9oYW5kbGVfdWRwX3R1bm5lbGluZyBT
WVNDVExfSEFORExFUl9BUkdTCiB7CkBAIC03MzIsMjIgKzY5MywxNCBAQCBzY3RwX3N5c2N0bF9o
YW5kbGVfdWRwX3R1bm5lbGluZyhTWVNDVExfSEFORExFUl9BUkdTKQogCW9sZCA9IFNDVFBfQkFT
RV9TWVNDVEwoc2N0cF91ZHBfdHVubmVsaW5nX3BvcnQpOwogCVNDVFBfSU5QX0lORk9fUlVOTE9D
SygpOwogCW5ldyA9IG9sZDsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0Rf
dmVyc2lvbiA+PSA4MDAwNTYgJiYgX19GcmVlQlNEX3ZlcnNpb24gPCAxMDAwMTAwCi0jaWZkZWYg
VklNQUdFCi0JZXJyb3IgPSB2bmV0X3N5c2N0bF9oYW5kbGVfaW50KG9pZHAsICZuZXcsIDAsIHJl
cSk7Ci0jZWxzZQogCWVycm9yID0gc3lzY3RsX2hhbmRsZV9pbnQob2lkcCwgJm5ldywgMCwgcmVx
KTsKLSNlbmRpZgotI2Vsc2UKLQllcnJvciA9IHN5c2N0bF9oYW5kbGVfaW50KG9pZHAsICZuZXcs
IDAsIHJlcSk7Ci0jZW5kaWYKIAlpZiAoKGVycm9yID09IDApICYmCi0jaWYgZGVmaW5lZCAoX19B
UFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCSAgICAocmVxLT5uZXdwdHIgIT0gVVNFUl9BRERSX05VTEwpKSB7CiAjZWxzZQogCSAgICAo
cmVxLT5uZXdwdHIgIT0gTlVMTCkpIHsKICNlbmRpZgotI2lmIGRlZmluZWQoX19XaW5kb3dzX18p
CisjaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCVNDVFBf
SU5QX0lORk9fV0xPQ0soKTsKIAkJc2N0cF9vdmVyX3VkcF9yZXN0YXJ0KCk7CiAJCVNDVFBfSU5Q
X0lORk9fV1VOTE9DSygpOwpAQCAtNzc1LDcgKzcyOCw3IEBAIHNjdHBfc3lzY3RsX2hhbmRsZV91
ZHBfdHVubmVsaW5nKFNZU0NUTF9IQU5ETEVSX0FSR1MpCiAJcmV0dXJuIChlcnJvcik7CiB9CiAK
LSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKIGludCBzY3RwX2lzX3Ztd2FyZV9pbnRlcmZhY2Uoc3RydWN0IGlm
bmV0ICopOwogCiBzdGF0aWMgaW50CkBAIC04MDgsNyArNzYxLDcgQEAgc2N0cF9zeXNjdGxfaGFu
ZGxlX3Ztd2FyZV9pbnRlcmZhY2VzIFNZU0NUTF9IQU5ETEVSX0FSR1MKIH0KICNlbmRpZgogCi0j
aWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiBzdGF0aWMgaW50CiBzY3RwX3N5c2N0bF9oYW5kbGVfYXV0aCBTWVND
VExfSEFORExFUl9BUkdTCiB7CkBAIC04MjIsMTcgKzc3NSw5IEBAIHNjdHBfc3lzY3RsX2hhbmRs
ZV9hdXRoKFNZU0NUTF9IQU5ETEVSX0FSR1MpCiAJdWludDMyX3QgbmV3OwogCiAJbmV3ID0gU0NU
UF9CQVNFX1NZU0NUTChzY3RwX2F1dGhfZW5hYmxlKTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDAwNTYgJiYgX19GcmVlQlNEX3ZlcnNpb24gPCAx
MDAwMTAwCi0jaWZkZWYgVklNQUdFCi0JZXJyb3IgPSB2bmV0X3N5c2N0bF9oYW5kbGVfaW50KG9p
ZHAsICZuZXcsIDAsIHJlcSk7Ci0jZWxzZQotCWVycm9yID0gc3lzY3RsX2hhbmRsZV9pbnQob2lk
cCwgJm5ldywgMCwgcmVxKTsKLSNlbmRpZgotI2Vsc2UKIAllcnJvciA9IHN5c2N0bF9oYW5kbGVf
aW50KG9pZHAsICZuZXcsIDAsIHJlcSk7Ci0jZW5kaWYKIAlpZiAoKGVycm9yID09IDApICYmCi0j
aWYgZGVmaW5lZCAoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogCSAgICAocmVxLT5uZXdwdHIgIT0gVVNFUl9BRERSX05VTEwpKSB7
CiAjZWxzZQogCSAgICAocmVxLT5uZXdwdHIgIT0gTlVMTCkpIHsKQEAgLTg1Myw3ICs3OTgsNyBA
QCBzY3RwX3N5c2N0bF9oYW5kbGVfYXV0aChTWVNDVExfSEFORExFUl9BUkdTKQogCXJldHVybiAo
ZXJyb3IpOwogfQogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExF
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBzdGF0aWMgaW50CiBzY3RwX3N5c2N0bF9o
YW5kbGVfYXNjb25mIFNZU0NUTF9IQU5ETEVSX0FSR1MKIHsKQEAgLTg2NywxNyArODEyLDkgQEAg
c2N0cF9zeXNjdGxfaGFuZGxlX2FzY29uZihTWVNDVExfSEFORExFUl9BUkdTKQogCXVpbnQzMl90
IG5ldzsKIAogCW5ldyA9IFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9hc2NvbmZfZW5hYmxlKTsKLSNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDAwNTYgJiYg
X19GcmVlQlNEX3ZlcnNpb24gPCAxMDAwMTAwCi0jaWZkZWYgVklNQUdFCi0JZXJyb3IgPSB2bmV0
X3N5c2N0bF9oYW5kbGVfaW50KG9pZHAsICZuZXcsIDAsIHJlcSk7Ci0jZWxzZQogCWVycm9yID0g
c3lzY3RsX2hhbmRsZV9pbnQob2lkcCwgJm5ldywgMCwgcmVxKTsKLSNlbmRpZgotI2Vsc2UKLQll
cnJvciA9IHN5c2N0bF9oYW5kbGVfaW50KG9pZHAsICZuZXcsIDAsIHJlcSk7Ci0jZW5kaWYKIAlp
ZiAoKGVycm9yID09IDApICYmCi0jaWYgZGVmaW5lZCAoX19BUFBMRV9fKQorI2lmIGRlZmluZWQo
X19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCSAgICAocmVxLT5uZXdwdHIg
IT0gVVNFUl9BRERSX05VTEwpKSB7CiAjZWxzZQogCSAgICAocmVxLT5uZXdwdHIgIT0gTlVMTCkp
IHsKQEAgLTg5OCw3ICs4MzUsNyBAQCBzY3RwX3N5c2N0bF9oYW5kbGVfYXNjb25mKFNZU0NUTF9I
QU5ETEVSX0FSR1MpCiAJcmV0dXJuIChlcnJvcik7CiB9CiAKLSNpZiBkZWZpbmVkKF9fQVBQTEVf
XykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIHN0
YXRpYyBpbnQKIHNjdHBfc3lzY3RsX2hhbmRsZV9zdGF0cyBTWVNDVExfSEFORExFUl9BUkdTCiB7
CkBAIC05MDksNyArODQ2LDcgQEAgc2N0cF9zeXNjdGxfaGFuZGxlX3N0YXRzKFNZU0NUTF9IQU5E
TEVSX0FSR1MpCiB7CiAjZW5kaWYKIAlpbnQgZXJyb3I7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
I2lmIGRlZmluZWQoU01QKSAmJiBkZWZpbmVkKFNDVFBfVVNFX1BFUkNQVV9TVEFUKQogCXN0cnVj
dCBzY3Rwc3RhdCAqc2Fycnk7CiAJc3RydWN0IHNjdHBzdGF0IHNiOwpAQCAtOTE4LDcgKzg1NSw3
IEBAIHNjdHBfc3lzY3RsX2hhbmRsZV9zdGF0cyhTWVNDVExfSEFORExFUl9BUkdTKQogCXN0cnVj
dCBzY3Rwc3RhdCBzYl90ZW1wOwogI2VuZGlmCiAKLSNpZiBkZWZpbmVkIChfX0FQUExFX18pCisj
aWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJaWYgKChy
ZXEtPm5ld3B0ciAhPSBVU0VSX0FERFJfTlVMTCkgJiYKICNlbHNlCiAJaWYgKChyZXEtPm5ld3B0
ciAhPSBOVUxMKSAmJgpAQCAtOTI2LDcgKzg2Myw3IEBAIHNjdHBfc3lzY3RsX2hhbmRsZV9zdGF0
cyhTWVNDVExfSEFORExFUl9BUkdTKQogCSAgICAocmVxLT5uZXdsZW4gIT0gc2l6ZW9mKHN0cnVj
dCBzY3Rwc3RhdCkpKSB7CiAJCXJldHVybiAoRUlOVkFMKTsKIAl9Ci0jaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogCW1lbXNldCgmc2JfdGVtcCwgMCwgc2l6ZW9mKHN0cnVjdCBzY3Rwc3RhdCkpOwogCiAJ
aWYgKHJlcS0+bmV3cHRyICE9IE5VTEwpIHsKQEAgLTEwODMsNyArMTAyMCw3IEBAIHNjdHBfc3lz
Y3RsX2hhbmRsZV9zdGF0cyhTWVNDVExfSEFORExFUl9BUkdTKQogfQogCiAjaWYgZGVmaW5lZChT
Q1RQX0xPQ0FMX1RSQUNFX0JVRikKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVk
KF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIHN0YXRpYyBpbnQKIHNjdHBf
c3lzY3RsX2hhbmRsZV90cmFjZV9sb2cgU1lTQ1RMX0hBTkRMRVJfQVJHUwogewpAQCAtMTA5NSw3
ICsxMDMyLDcgQEAgc2N0cF9zeXNjdGxfaGFuZGxlX3RyYWNlX2xvZyhTWVNDVExfSEFORExFUl9B
UkdTKQogI2VuZGlmCiAJaW50IGVycm9yOwogCi0jaWYgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNp
ZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAllcnJvciA9IFNZ
U0NUTF9PVVQocmVxLCBTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbG9nKSwgc2l6ZW9mKHN0cnVjdCBz
Y3RwX2xvZykpOwogI2Vsc2UKIAllcnJvciA9IFNZU0NUTF9PVVQocmVxLCAmU0NUUF9CQVNFX1NZ
U0NUTChzY3RwX2xvZyksIHNpemVvZihzdHJ1Y3Qgc2N0cF9sb2cpKTsKQEAgLTExMDMsNyArMTA0
MCw3IEBAIHNjdHBfc3lzY3RsX2hhbmRsZV90cmFjZV9sb2coU1lTQ1RMX0hBTkRMRVJfQVJHUykK
IAlyZXR1cm4gKGVycm9yKTsKIH0KIAotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmlu
ZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogc3RhdGljIGludAogc2N0
cF9zeXNjdGxfaGFuZGxlX3RyYWNlX2xvZ19jbGVhciBTWVNDVExfSEFORExFUl9BUkdTCiB7CkBA
IC0xMTE0LDcgKzEwNTEsNyBAQCBzY3RwX3N5c2N0bF9oYW5kbGVfdHJhY2VfbG9nX2NsZWFyKFNZ
U0NUTF9IQU5ETEVSX0FSR1MpCiB7CiAjZW5kaWYKIAlpbnQgZXJyb3IgPSAwOwotI2lmIGRlZmlu
ZWQoX19XaW5kb3dzX18pCisjaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJaW50IHZhbHVlID0gMDsKIAogCWlmIChyZXEtPm5ld19kYXRhID09IE5VTEwpIHsK
QEAgLTExMzIsNTcgKzEwNjksOCBAQCBzY3RwX3N5c2N0bF9oYW5kbGVfdHJhY2VfbG9nX2NsZWFy
KFNZU0NUTF9IQU5ETEVSX0FSR1MpCiB9CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoX19BUFBMRV9f
KSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIChkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVm
aW5lZChfX0ZyZWVCU0RfXykpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykKLSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDAwNTYgJiYgX19GcmVl
QlNEX3ZlcnNpb24gPCAxMDAwMTAwCi0jaWZkZWYgVklNQUdFCi0jZGVmaW5lIFNDVFBfVUlOVF9T
WVNDVEwobmFtZSwgdmFyX25hbWUsIHByZWZpeCkJCQlcCi0Jc3RhdGljIGludAkJCQkJCQlcCi0J
c2N0cF9zeXNjdGxfaGFuZGxlXyMjbWliX25hbWUoU1lTQ1RMX0hBTkRMRVJfQVJHUykJCVwKLQl7
CQkJCQkJCQlcCi0JCWludCBlcnJvcjsJCQkJCQlcCi0JCXVpbnQzMl90IG5ldzsJCQkJCQlcCi0J
CQkJCQkJCQlcCi0JCW5ldyA9IFNDVFBfQkFTRV9TWVNDVEwodmFyX25hbWUpOwkJCVwKLQkJZXJy
b3IgPSB2bmV0X3N5c2N0bF9oYW5kbGVfaW50KG9pZHAsICZuZXcsIDAsIHJlcSk7CVwKLQkJaWYg
KChlcnJvciA9PSAwKSAmJiAocmVxLT5uZXdwdHIgIT0gTlVMTCkpIHsJCVwKLQkJCWlmICgobmV3
IDwgcHJlZml4IyNfTUlOKSB8fAkJCVwKLQkJCSAgICAobmV3ID4gcHJlZml4IyNfTUFYKSkgewkJ
CVwKLQkJCQllcnJvciA9IEVJTlZBTDsJCQkJXAotCQkJfSBlbHNlIHsJCQkJCVwKLQkJCQlTQ1RQ
X0JBU0VfU1lTQ1RMKHZhcl9uYW1lKSA9IG5ldzsJXAotCQkJfQkJCQkJCVwKLQkJfQkJCQkJCQlc
Ci0JCXJldHVybiAoZXJyb3IpOwkJCQkJCVwKLQl9CQkJCQkJCQlcCi0JU1lTQ1RMX1BST0MoX25l
dF9pbmV0X3NjdHAsIE9JRF9BVVRPLCBtaWJfbmFtZSwJCQlcCi0JICAgICAgICAgICAgICAgICBD
VExUWVBFX1VJTlR8Q1RMRkxBR19SVywgTlVMTCwgMCwJCVwKLQkgICAgICAgICAgICAgICAgIHNj
dHBfc3lzY3RsX2hhbmRsZV8jI21pYl9uYW1lLCAiVUkiLCBwcmVmaXgjI19ERVNDKTsKLSNlbHNl
Ci0jZGVmaW5lIFNDVFBfVUlOVF9TWVNDVEwobWliX25hbWUsIHZhcl9uYW1lLCBwcmVmaXgpCQkJ
XAotCXN0YXRpYyBpbnQJCQkJCQkJXAotCXNjdHBfc3lzY3RsX2hhbmRsZV8jI21pYl9uYW1lKFNZ
U0NUTF9IQU5ETEVSX0FSR1MpCQlcCi0JewkJCQkJCQkJXAotCQlpbnQgZXJyb3I7CQkJCQkJXAot
CQl1aW50MzJfdCBuZXc7CQkJCQkJXAotCQkJCQkJCQkJXAotCQluZXcgPSBTQ1RQX0JBU0VfU1lT
Q1RMKHZhcl9uYW1lKTsJCQlcCi0JCWVycm9yID0gc3lzY3RsX2hhbmRsZV9pbnQob2lkcCwgJm5l
dywgMCwgcmVxKTsJCVwKLQkJaWYgKChlcnJvciA9PSAwKSAmJiAocmVxLT5uZXdwdHIgIT0gTlVM
TCkpIHsJCVwKLQkJCWlmICgobmV3IDwgcHJlZml4IyNfTUlOKSB8fAkJCVwKLQkJCSAgICAobmV3
ID4gcHJlZml4IyNfTUFYKSkgewkJCVwKLQkJCQllcnJvciA9IEVJTlZBTDsJCQkJXAotCQkJfSBl
bHNlIHsJCQkJCVwKLQkJCQlTQ1RQX0JBU0VfU1lTQ1RMKHZhcl9uYW1lKSA9IG5ldzsJXAotCQkJ
fQkJCQkJCVwKLQkJfQkJCQkJCQlcCi0JCXJldHVybiAoZXJyb3IpOwkJCQkJCVwKLQl9CQkJCQkJ
CQlcCi0JU1lTQ1RMX1BST0MoX25ldF9pbmV0X3NjdHAsIE9JRF9BVVRPLCBtaWJfbmFtZSwJCQlc
Ci0JICAgICAgICAgICAgICAgICBDVExGTEFHX1ZORVR8Q1RMVFlQRV9VSU5UfENUTEZMQUdfUlcs
IE5VTEwsIDAsCVwKLQkgICAgICAgICAgICAgICAgIHNjdHBfc3lzY3RsX2hhbmRsZV8jI21pYl9u
YW1lLCAiVUkiLCBwcmVmaXgjI19ERVNDKTsKLSNlbmRpZgotI2Vsc2UKICNkZWZpbmUgU0NUUF9V
SU5UX1NZU0NUTChtaWJfbmFtZSwgdmFyX25hbWUsIHByZWZpeCkJCQlcCiAJc3RhdGljIGludAkJ
CQkJCQlcCiAJc2N0cF9zeXNjdGxfaGFuZGxlXyMjbWliX25hbWUoU1lTQ1RMX0hBTkRMRVJfQVJH
UykJCVwKQEAgLTEyMDUsNyArMTA5Myw2IEBAIHNjdHBfc3lzY3RsX2hhbmRsZV90cmFjZV9sb2df
Y2xlYXIoU1lTQ1RMX0hBTkRMRVJfQVJHUykKIAlTWVNDVExfUFJPQyhfbmV0X2luZXRfc2N0cCwg
T0lEX0FVVE8sIG1pYl9uYW1lLAkJCVwKIAkgICAgICAgICAgICAgICAgIENUTEZMQUdfVk5FVHxD
VExUWVBFX1VJTlR8Q1RMRkxBR19SVywgTlVMTCwgMCwJXAogCSAgICAgICAgICAgICAgICAgc2N0
cF9zeXNjdGxfaGFuZGxlXyMjbWliX25hbWUsICJVSSIsIHByZWZpeCMjX0RFU0MpOwotI2VuZGlm
CiAjZWxzZQogI2RlZmluZSBTQ1RQX1VJTlRfU1lTQ1RMKG1pYl9uYW1lLCB2YXJfbmFtZSwgcHJl
Zml4KQkJCVwKIAlzdGF0aWMgaW50CQkJCQkJCVwKQEAgLTEyNTIsNyArMTEzOSw3IEBAIFNZU0NU
TF9QUk9DKF9uZXRfaW5ldF9zY3RwLCBPSURfQVVUTywgYXNjb25mX2VuYWJsZSwgQ1RMRkxBR19W
TkVUfENUTFRZUEVfVUlOVHxDCiBTQ1RQX1VJTlRfU1lTQ1RMKHJlY29uZmlnX2VuYWJsZSwgc2N0
cF9yZWNvbmZpZ19lbmFibGUsIFNDVFBDVExfUkVDT05GSUdfRU5BQkxFKQogU0NUUF9VSU5UX1NZ
U0NUTChucnNhY2tfZW5hYmxlLCBzY3RwX25yc2Fja19lbmFibGUsIFNDVFBDVExfTlJTQUNLX0VO
QUJMRSkKIFNDVFBfVUlOVF9TWVNDVEwocGt0ZHJvcF9lbmFibGUsIHNjdHBfcGt0ZHJvcF9lbmFi
bGUsIFNDVFBDVExfUEtURFJPUF9FTkFCTEUpCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYg
ZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBTQ1RQX1VJTlRf
U1lTQ1RMKGxvb3BiYWNrX25vY3N1bSwgc2N0cF9ub19jc3VtX29uX2xvb3BiYWNrLCBTQ1RQQ1RM
X0xPT1BCQUNLX05PQ1NVTSkKICNlbmRpZgogU0NUUF9VSU5UX1NZU0NUTChwZWVyX2Noa29oLCBz
Y3RwX3BlZXJfY2h1bmtfb2gsIFNDVFBDVExfUEVFUl9DSEtPSCkKQEAgLTEzMTksMTggKzEyMDYs
MTkgQEAgU0NUUF9VSU5UX1NZU0NUTChydHR2YXJfZXFyZXQsIHNjdHBfcnR0dmFyX2VxcmV0LCBT
Q1RQQ1RMX1JUVFZBUl9FUVJFVCkKIFNDVFBfVUlOVF9TWVNDVEwocnR0dmFyX3N0ZWFkeV9zdGVw
LCBzY3RwX3N0ZWFkeV9zdGVwLCBTQ1RQQ1RMX1JUVFZBUl9TVEVBRFlTKQogU0NUUF9VSU5UX1NZ
U0NUTCh1c2VfZGNjY2Vjbiwgc2N0cF91c2VfZGNjY19lY24sIFNDVFBDVExfUlRUVkFSX0RDQ0NF
Q04pCiBTQ1RQX1VJTlRfU1lTQ1RMKGJsYWNraG9sZSwgc2N0cF9ibGFja2hvbGUsIFNDVFBDVExf
QkxBQ0tIT0xFKQorU0NUUF9VSU5UX1NZU0NUTChzZW5kYWxsX2xpbWl0LCBzY3RwX3NlbmRhbGxf
bGltaXQsIFNDVFBDVExfU0VOREFMTF9MSU1JVCkKIFNDVFBfVUlOVF9TWVNDVEwoZGlhZ19pbmZv
X2NvZGUsIHNjdHBfZGlhZ19pbmZvX2NvZGUsIFNDVFBDVExfRElBR19JTkZPX0NPREUpCiAjaWZk
ZWYgU0NUUF9ERUJVRwogU0NUUF9VSU5UX1NZU0NUTChkZWJ1Zywgc2N0cF9kZWJ1Z19vbiwgU0NU
UENUTF9ERUJVRykKICNlbmRpZgotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQo
X19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogU0NUUF9VSU5UX1NZU0NUTCht
YWluX3RpbWVyLCBzY3RwX21haW5fdGltZXIsIFNDVFBDVExfTUFJTl9USU1FUikKIFNZU0NUTF9Q
Uk9DKF9uZXRfaW5ldF9zY3RwLCBPSURfQVVUTywgaWdub3JlX3Ztd2FyZV9pbnRlcmZhY2VzLCBD
VExUWVBFX1VJTlR8Q1RMRkxBR19SVywKICAgICAgICAgICAgIE5VTEwsIDAsIHNjdHBfc3lzY3Rs
X2hhbmRsZV92bXdhcmVfaW50ZXJmYWNlcywgIklVIiwgU0NUUENUTF9JR05PUkVfVk1XQVJFX0lO
VEVSRkFDRVNfREVTQyk7CiBTQ1RQX1VJTlRfU1lTQ1RMKGFkZHJfd2F0Y2hkb2dfbGltaXQsIHNj
dHBfYWRkcl93YXRjaGRvZ19saW1pdCwgU0NUUENUTF9BRERSX1dBVENIRE9HX0xJTUlUKQogU0NU
UF9VSU5UX1NZU0NUTCh2dGFnX3dhdGNoZG9nX2xpbWl0LCBzY3RwX3Z0YWdfd2F0Y2hkb2dfbGlt
aXQsIFNDVFBDVExfVlRBR19XQVRDSERPR19MSU1JVCkKICNlbmRpZgotI2lmIGRlZmluZWQoX19B
UFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19B
UFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogU0NUUF9VSU5UX1NZU0NUTChvdXRw
dXRfdW5sb2NrZWQsIHNjdHBfb3V0cHV0X3VubG9ja2VkLCBTQ1RQQ1RMX09VVFBVVF9VTkxPQ0tF
RCkKICNlbmRpZgogU1lTQ1RMX1BST0MoX25ldF9pbmV0X3NjdHAsIE9JRF9BVVRPLCBzdGF0cywg
Q1RMRkxBR19WTkVUfENUTFRZUEVfU1RSVUNUfENUTEZMQUdfUlcsCkBAIC0xMzM4LDcgKzEyMjYs
NyBAQCBTWVNDVExfUFJPQyhfbmV0X2luZXRfc2N0cCwgT0lEX0FVVE8sIHN0YXRzLCBDVExGTEFH
X1ZORVR8Q1RMVFlQRV9TVFJVQ1R8Q1RMRkxBRwogU1lTQ1RMX1BST0MoX25ldF9pbmV0X3NjdHAs
IE9JRF9BVVRPLCBhc3NvY2xpc3QsIENUTEZMQUdfVk5FVHxDVExUWVBFX09QQVFVRXxDVExGTEFH
X1JELAogICAgICAgICAgICAgTlVMTCwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2Fzc29jbGlzdCwg
IlMseGFzc29jIiwgIkxpc3Qgb2YgYWN0aXZlIFNDVFAgYXNzb2NpYXRpb25zIik7CiAKLSNlbGlm
IGRlZmluZWQoX19XaW5kb3dzX18pCisjZWxpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKIAogI2RlZmluZSBSQU5HRUNISyh2YXIsIG1pbiwgbWF4KSBcCiAJaWYg
KCh2YXIpIDwgKG1pbikpIHsgKHZhcikgPSAobWluKTsgfSBcCkBAIC0xNDE3LDYgKzEzMDUsNyBA
QCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50KFNZU0NUTF9IQU5ETEVSX0FSR1MpCiAJCVJBTkdFQ0hL
KFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9lbmFibGVfc2Fja19pbW1lZGlhdGVseSksIFNDVFBDVExf
U0FDS19JTU1FRElBVEVMWV9FTkFCTEVfTUlOLCBTQ1RQQ1RMX1NBQ0tfSU1NRURJQVRFTFlfRU5B
QkxFX01BWCk7CiAJCVJBTkdFQ0hLKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9pbml0c19pbmNsdWRl
X25hdF9mcmllbmRseSksIFNDVFBDVExfTkFUX0ZSSUVORExZX0lOSVRTX01JTiwgU0NUUENUTF9O
QVRfRlJJRU5ETFlfSU5JVFNfTUFYKTsKIAkJUkFOR0VDSEsoU0NUUF9CQVNFX1NZU0NUTChzY3Rw
X2JsYWNraG9sZSksIFNDVFBDVExfQkxBQ0tIT0xFX01JTiwgU0NUUENUTF9CTEFDS0hPTEVfTUFY
KTsKKwkJUkFOR0VDSEsoU0NUUF9CQVNFX1NZU0NUTChzY3RwX3NlbmRhbGxfbGltaXQpLCBTQ1RQ
Q1RMX1NFTkRBTExfTElNSVRfTUlOLCBTQ1RQQ1RMX1NFTkRBTExfTElNSVRfTUFYKTsKIAkJUkFO
R0VDSEsoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2RpYWdfaW5mb19jb2RlKSwgU0NUUENUTF9ESUFH
X0lORk9fQ09ERV9NSU4sIFNDVFBDVExfRElBR19JTkZPX0NPREVfTUFYKTsKICNpZmRlZiBTQ1RQ
X0RFQlVHCiAJCVJBTkdFQ0hLKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9kZWJ1Z19vbiksIFNDVFBD
VExfREVCVUdfTUlOLCBTQ1RQQ1RMX0RFQlVHX01BWCk7CkBAIC0xNDI5LDE0MyArMTMxOCwxNDMg
QEAgdm9pZAogc3lzY3RsX3NldHVwX3NjdHAodm9pZCkKIHsKIAlzeXNjdGxfYWRkX29pZCgmc3lz
Y3RsX29pZF90b3AsICJzZW5kc3BhY2UiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAg
ICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9zZW5kc3BhY2UpLCAwLCBzY3RwX3N5c2N0bF9o
YW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3NlbmRzcGFjZSksIDAsIHNj
dHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExfTUFYREdSQU1fREVTQyk7CiAKIAlz
eXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJyZWN2c3BhY2UiLCBDVExUWVBFX0lOVHxD
VExGTEFHX1JXLAotICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3JlY3ZzcGFjZSks
IDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBf
cmVjdnNwYWNlKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9SRUNW
U1BBQ0VfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJhdXRvX2Fz
Y29uZiIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZ
U0NUTChzY3RwX2F1dG9fYXNjb25mKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAg
JlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9hdXRvX2FzY29uZiksIDAsIHNjdHBfc3lzY3RsX2hhbmRs
ZV9pbnQsCiAJICAgIFNDVFBDVExfQVVUT0FTQ09ORl9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lk
KCZzeXNjdGxfb2lkX3RvcCwgImVjbl9lbmFibGUiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAot
ICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9lY25fZW5hYmxlKSwgMCwgc2N0cF9z
eXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9lY25fZW5hYmxl
KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9FQ05fRU5BQkxFX0RF
U0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAicHJfZW5hYmxlIiwgQ1RM
VFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBf
cHJfZW5hYmxlKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9T
WVNDVEwoc2N0cF9wcl9lbmFibGUpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBT
Q1RQQ1RMX1BSX0VOQUJMRV9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3Rv
cCwgImF1dGhfZW5hYmxlIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZT
Q1RQX0JBU0VfU1lTQ1RMKHNjdHBfYXV0aF9lbmFibGUpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVf
YXV0aCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9hdXRoX2VuYWJsZSksIDAsIHNjdHBf
c3lzY3RsX2hhbmRsZV9hdXRoLAogCSAgICBTQ1RQQ1RMX0FVVEhfRU5BQkxFX0RFU0MpOwogCiAJ
c3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAiYXNjb25mX2VuYWJsZSIsIENUTFRZUEVf
SU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2FzY29u
Zl9lbmFibGUpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfYXNjb25mLAorCSAgICAmU0NUUF9CQVNF
X1NZU0NUTChzY3RwX2FzY29uZl9lbmFibGUpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfYXNjb25m
LAogCSAgICBTQ1RQQ1RMX0FTQ09ORl9FTkFCTEVfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgm
c3lzY3RsX29pZF90b3AsICJyZWNvbmZpZ19lbmFibGUiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JX
LAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9yZWNvbmZpZ19lbmFibGUpLCAw
LCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3Jl
Y29uZmlnX2VuYWJsZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExf
UkVDT05GSUdfRU5BQkxFX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9w
LCAibnJzYWNrX2VuYWJsZSIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAm
U0NUUF9CQVNFX1NZU0NUTChzY3RwX25yc2Fja19lbmFibGUpLCAwLCBzY3RwX3N5c2N0bF9oYW5k
bGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX25yc2Fja19lbmFibGUpLCAwLCBz
Y3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX05SU0FDS19FTkFCTEVfREVTQyk7
CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJwa3Rkcm9wX2VuYWJsZSIsIENU
TFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3Rw
X3BrdGRyb3BfZW5hYmxlKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBf
QkFTRV9TWVNDVEwoc2N0cF9wa3Rkcm9wX2VuYWJsZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9p
bnQsCiAJICAgIFNDVFBDVExfUEtURFJPUF9FTkFCTEVfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29p
ZCgmc3lzY3RsX29pZF90b3AsICJsb29wYmFja19ub2NzdW0iLCBDVExUWVBFX0lOVHxDVExGTEFH
X1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9ub19jc3VtX29uX2xvb3Bi
YWNrKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwo
c2N0cF9ub19jc3VtX29uX2xvb3BiYWNrKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkg
ICAgU0NUUENUTF9MT09QQkFDS19OT0NTVU1fREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lz
Y3RsX29pZF90b3AsICJwZWVyX2Noa29oIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAg
ICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfcGVlcl9jaHVua19vaCksIDAsIHNjdHBfc3lz
Y3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfcGVlcl9jaHVua19v
aCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExfUEVFUl9DSEtPSF9E
RVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgIm1heGJ1cnN0IiwgQ1RM
VFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBf
bWF4X2J1cnN0X2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NU
UF9CQVNFX1NZU0NUTChzY3RwX21heF9idXJzdF9kZWZhdWx0KSwgMCwgc2N0cF9zeXNjdGxfaGFu
ZGxlX2ludCwKIAkgICAgU0NUUENUTF9NQVhCVVJTVF9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lk
KCZzeXNjdGxfb2lkX3RvcCwgImZyX21heGJ1cnN0IiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywK
LSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfZnJfbWF4X2J1cnN0X2RlZmF1bHQp
LCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3Rw
X2ZyX21heF9idXJzdF9kZWZhdWx0KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAg
U0NUUENUTF9GUk1BWEJVUlNUX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRf
dG9wLCAibWF4Y2h1bmtzIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZT
Q1RQX0JBU0VfU1lTQ1RMKHNjdHBfbWF4X2NodW5rc19vbl9xdWV1ZSksIDAsIHNjdHBfc3lzY3Rs
X2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbWF4X2NodW5rc19vbl9x
dWV1ZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExfTUFYQ0hVTktT
X0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAidGNiaGFzaHNpemUi
LCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwo
c2N0cF9oYXNodGJsc2l6ZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQ
X0JBU0VfU1lTQ1RMKHNjdHBfaGFzaHRibHNpemUpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50
LAogCSAgICBTQ1RQQ1RMX1RDQkhBU0hTSVpFX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5
c2N0bF9vaWRfdG9wLCAicGNiaGFzaHNpemUiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAg
ICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9wY2J0YmxzaXplKSwgMCwgc2N0cF9zeXNj
dGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9wY2J0YmxzaXplKSwg
MCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9QQ0JIQVNIU0laRV9ERVND
KTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgIm1pbl9zcGxpdF9wb2ludCIs
IENUTFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChz
Y3RwX21pbl9zcGxpdF9wb2ludCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZT
Q1RQX0JBU0VfU1lTQ1RMKHNjdHBfbWluX3NwbGl0X3BvaW50KSwgMCwgc2N0cF9zeXNjdGxfaGFu
ZGxlX2ludCwKIAkgICAgU0NUUENUTF9NSU5fU1BMSVRfUE9JTlRfREVTQyk7CiAKIAlzeXNjdGxf
YWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJjaHVua3NjYWxlIiwgQ1RMVFlQRV9JTlR8Q1RMRkxB
R19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfY2h1bmtzY2FsZSksIDAs
IHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfY2h1
bmtzY2FsZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExfQ0hVTktT
Q0FMRV9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgImRlbGF5ZWRf
c2Fja190aW1lIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JB
U0VfU1lTQ1RMKHNjdHBfZGVsYXllZF9zYWNrX3RpbWVfZGVmYXVsdCksIDAsIHNjdHBfc3lzY3Rs
X2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfZGVsYXllZF9zYWNrX3Rp
bWVfZGVmYXVsdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExfREVM
QVlFRF9TQUNLX1RJTUVfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3As
ICJzYWNrX2ZyZXEiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBf
QkFTRV9TWVNDVEwoc2N0cF9zYWNrX2ZyZXFfZGVmYXVsdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRs
ZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfc2Fja19mcmVxX2RlZmF1bHQpLCAw
LCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX1NBQ0tfRlJFUV9ERVNDKTsK
IAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgInN5c19yZXNvdXJjZSIsIENUTFRZ
UEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3N5
c3RlbV9mcmVlX3Jlc2NfbGltaXQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAm
U0NUUF9CQVNFX1NZU0NUTChzY3RwX3N5c3RlbV9mcmVlX3Jlc2NfbGltaXQpLCAwLCBzY3RwX3N5
c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX1NZU19SRVNPVVJDRV9ERVNDKTsKIAogCXN5
c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgImFzb2NfcmVzb3VyY2UiLCBDVExUWVBFX0lO
VHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9hc29jX2Zy
ZWVfcmVzY19saW1pdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JB
U0VfU1lTQ1RMKHNjdHBfYXNvY19mcmVlX3Jlc2NfbGltaXQpLCAwLCBzY3RwX3N5c2N0bF9oYW5k
bGVfaW50LAogCSAgICBTQ1RQQ1RMX0FTT0NfUkVTT1VSQ0VfREVTQyk7CiAKIAlzeXNjdGxfYWRk
X29pZCgmc3lzY3RsX29pZF90b3AsICJoZWFydGJlYXRfaW50ZXJ2YWwiLCBDVExUWVBFX0lOVHxD
VExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9oZWFydGJlYXRf
aW50ZXJ2YWxfZGVmYXVsdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQ
X0JBU0VfU1lTQ1RMKHNjdHBfaGVhcnRiZWF0X2ludGVydmFsX2RlZmF1bHQpLCAwLCBzY3RwX3N5
c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX0hFQVJUQkVBVF9JTlRFUlZBTF9ERVNDKTsK
IAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgInBtdHVfcmFpc2VfdGltZSIsIENU
TFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3Rw
X3BtdHVfcmFpc2VfdGltZV9kZWZhdWx0KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkg
ICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9wbXR1X3JhaXNlX3RpbWVfZGVmYXVsdCksIDAsIHNj
dHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExfUE1UVV9SQUlTRV9USU1FX0RFU0Mp
OwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAic2h1dGRvd25fZ3VhcmRfdGlt
ZSIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NU
TChzY3RwX3NodXRkb3duX2d1YXJkX3RpbWVfZGVmYXVsdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRs
ZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfc2h1dGRvd25fZ3VhcmRfdGltZV9k
ZWZhdWx0KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9TSFVURE9X
Tl9HVUFSRF9USU1FX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAi
c2VjcmV0X2xpZmV0aW1lIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZT
Q1RQX0JBU0VfU1lTQ1RMKHNjdHBfc2VjcmV0X2xpZmV0aW1lX2RlZmF1bHQpLCAwLCBzY3RwX3N5
c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3NlY3JldF9saWZl
dGltZV9kZWZhdWx0KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9T
RUNSRVRfTElGRVRJTUVfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3As
ICJydG9fbWF4IiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JB
U0VfU1lTQ1RMKHNjdHBfcnRvX21heF9kZWZhdWx0KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2lu
dCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9ydG9fbWF4X2RlZmF1bHQpLCAwLCBzY3Rw
X3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX1JUT19NQVhfREVTQyk7CiAKIAlzeXNj
dGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJydG9fbWluIiwgQ1RMVFlQRV9JTlR8Q1RMRkxB
R19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfcnRvX21pbl9kZWZhdWx0
KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0
cF9ydG9fbWluX2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQ
Q1RMX1JUT19NSU5fREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJy
dG9faW5pdGlhbCIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9C
QVNFX1NZU0NUTChzY3RwX3J0b19pbml0aWFsX2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5k
bGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3J0b19pbml0aWFsX2RlZmF1bHQp
LCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX1JUT19JTklUSUFMX0RF
U0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAiaW5pdF9ydG9fbWF4Iiwg
Q1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNj
dHBfaW5pdF9ydG9fbWF4X2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAg
ICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2luaXRfcnRvX21heF9kZWZhdWx0KSwgMCwgc2N0cF9z
eXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9JTklUX1JUT19NQVhfREVTQyk7CiAKIAlz
eXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJ2YWxpZF9jb29raWVfbGlmZSIsIENUTFRZ
UEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3Zh
bGlkX2Nvb2tpZV9saWZlX2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAg
ICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3ZhbGlkX2Nvb2tpZV9saWZlX2RlZmF1bHQpLCAwLCBz
Y3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX1ZBTElEX0NPT0tJRV9MSUZFX0RF
U0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAiaW5pdF9ydHhfbWF4Iiwg
Q1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNj
dHBfaW5pdF9ydHhfbWF4X2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAg
ICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2luaXRfcnR4X21heF9kZWZhdWx0KSwgMCwgc2N0cF9z
eXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9JTklUX1JUWF9NQVhfREVTQyk7CiAKIAlz
eXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJhc3NvY19ydHhfbWF4IiwgQ1RMVFlQRV9J
TlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfYXNzb2Nf
cnR4X21heF9kZWZhdWx0KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBf
QkFTRV9TWVNDVEwoc2N0cF9hc3NvY19ydHhfbWF4X2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9o
YW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX0FTU09DX1JUWF9NQVhfREVTQyk7CiAKIAlzeXNjdGxf
YWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJwYXRoX3J0eF9tYXgiLCBDVExUWVBFX0lOVHxDVExG
TEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9wYXRoX3J0eF9tYXhf
ZGVmYXVsdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lT
Q1RMKHNjdHBfcGF0aF9ydHhfbWF4X2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50
LAogCSAgICBTQ1RQQ1RMX1BBVEhfUlRYX01BWF9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZz
eXNjdGxfb2lkX3RvcCwgInBhdGhfcGZfdGhyZXNob2xkIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19S
VywKQEAgLTE1NzMsODMgKzE0NjIsODMgQEAgc3lzY3RsX3NldHVwX3NjdHAodm9pZCkKIAkgICAg
U0NUUENUTF9QQVRIX1BGX1RIUkVTSE9MRF9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNj
dGxfb2lkX3RvcCwgImFkZF9tb3JlX29uX291dHB1dCIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcs
Ci0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2FkZF9tb3JlX3RocmVzaG9sZCks
IDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBf
YWRkX21vcmVfdGhyZXNob2xkKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NU
UENUTF9BRERfTU9SRV9PTl9PVVRQVVRfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3Rs
X29pZF90b3AsICJpbmNvbWluZ19zdHJlYW1zIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAg
ICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbnJfaW5jb21pbmdfc3RyZWFtc19kZWZh
dWx0KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwo
c2N0cF9ucl9pbmNvbWluZ19zdHJlYW1zX2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVf
aW50LAogCSAgICBTQ1RQQ1RMX0lOQ09NSU5HX1NUUkVBTVNfREVTQyk7CiAKIAlzeXNjdGxfYWRk
X29pZCgmc3lzY3RsX29pZF90b3AsICJvdXRnb2luZ19zdHJlYW1zIiwgQ1RMVFlQRV9JTlR8Q1RM
RkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbnJfb3V0Z29pbmdf
c3RyZWFtc19kZWZhdWx0KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBf
QkFTRV9TWVNDVEwoc2N0cF9ucl9vdXRnb2luZ19zdHJlYW1zX2RlZmF1bHQpLCAwLCBzY3RwX3N5
c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX09VVEdPSU5HX1NUUkVBTVNfREVTQyk7CiAK
IAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJjbXRfb25fb2ZmIiwgQ1RMVFlQRV9J
TlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfY210X29u
X29mZiksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RM
KHNjdHBfY210X29uX29mZiksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBD
VExfQ01UX09OX09GRl9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwg
ImNtdF91c2VfZGFjIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQ
X0JBU0VfU1lTQ1RMKHNjdHBfY210X3VzZV9kYWMpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50
LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2NtdF91c2VfZGFjKSwgMCwgc2N0cF9zeXNj
dGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9DTVRfVVNFX0RBQ19ERVNDKTsKIAogCXN5c2N0
bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgImN3bmRfbWF4YnVyc3QiLCBDVExUWVBFX0lOVHxD
VExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF91c2VfY3duZF9i
YXNlZF9tYXhidXJzdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JB
U0VfU1lTQ1RMKHNjdHBfdXNlX2N3bmRfYmFzZWRfbWF4YnVyc3QpLCAwLCBzY3RwX3N5c2N0bF9o
YW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX0NXTkRfTUFYQlVSU1RfREVTQyk7CiAKIAlzeXNjdGxf
YWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJuYXRfZnJpZW5kbHkiLCBDVExUWVBFX0lOVHxDVExG
TEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9uYXRfZnJpZW5kbHkp
LCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3Rw
X25hdF9mcmllbmRseSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExf
TkFUX0ZSSUVORExZX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAi
YWJjX2xfdmFyIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JB
U0VfU1lTQ1RMKHNjdHBfTDJfYWJjX3ZhcmlhYmxlKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2lu
dCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9MMl9hYmNfdmFyaWFibGUpLCAwLCBzY3Rw
X3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX0FCQ19MX1ZBUl9ERVNDKTsKIAogCXN5
c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgIm1heF9jaGFpbmVkX21idWZzIiwgQ1RMVFlQ
RV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbWJ1
Zl90aHJlc2hvbGRfY291bnQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NU
UF9CQVNFX1NZU0NUTChzY3RwX21idWZfdGhyZXNob2xkX2NvdW50KSwgMCwgc2N0cF9zeXNjdGxf
aGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9NQVhfQ0hBSU5FRF9NQlVGU19ERVNDKTsKIAogCXN5
c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgImRvX3NjdHBfZHJhaW4iLCBDVExUWVBFX0lO
VHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9kb19kcmFp
biksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNj
dHBfZG9fZHJhaW4pLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX0RP
X1NDVFBfRFJBSU5fREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJo
Yl9tYXhfYnVyc3QiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBf
QkFTRV9TWVNDVEwoc2N0cF9oYl9tYXhidXJzdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQs
CisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfaGJfbWF4YnVyc3QpLCAwLCBzY3RwX3N5c2N0
bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX0hCX01BWF9CVVJTVF9ERVNDKTsKIAogCXN5c2N0
bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgImFib3J0X2F0X2xpbWl0IiwgQ1RMVFlQRV9JTlR8
Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfYWJvcnRfaWZf
b25lXzJfb25lX2hpdHNfbGltaXQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAm
U0NUUF9CQVNFX1NZU0NUTChzY3RwX2Fib3J0X2lmX29uZV8yX29uZV9oaXRzX2xpbWl0KSwgMCwg
c2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9BQk9SVF9BVF9MSU1JVF9ERVND
KTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgIm1pbl9yZXNpZHVhbCIsIENU
TFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3Rw
X21pbl9yZXNpZHVhbCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JB
U0VfU1lTQ1RMKHNjdHBfbWluX3Jlc2lkdWFsKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwK
IAkgICAgU0NUUENUTF9NSU5fUkVTSURVQUxfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lz
Y3RsX29pZF90b3AsICJtYXhfcmV0cmFuX2NodW5rIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywK
LSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbWF4X3JldHJhbl9jaHVuayksIDAs
IHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbWF4
X3JldHJhbl9jaHVuayksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExf
TUFYX1JFVFJBTl9DSFVOS19ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3Rv
cCwgImxvZ19sZXZlbCIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NU
UF9CQVNFX1NZU0NUTChzY3RwX2xvZ2dpbmdfbGV2ZWwpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVf
aW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2xvZ2dpbmdfbGV2ZWwpLCAwLCBzY3Rw
X3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX0xPR0dJTkdfTEVWRUxfREVTQyk7CiAK
IAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJkZWZhdWx0X2NjX21vZHVsZSIsIENU
TFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3Rw
X2RlZmF1bHRfY2NfbW9kdWxlKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlND
VFBfQkFTRV9TWVNDVEwoc2N0cF9kZWZhdWx0X2NjX21vZHVsZSksIDAsIHNjdHBfc3lzY3RsX2hh
bmRsZV9pbnQsCiAJICAgIFNDVFBDVExfREVGQVVMVF9DQ19NT0RVTEVfREVTQyk7CiAKIAlzeXNj
dGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJkZWZhdWx0X3NzX21vZHVsZSIsIENUTFRZUEVf
SU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2RlZmF1
bHRfc3NfbW9kdWxlKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFT
RV9TWVNDVEwoc2N0cF9kZWZhdWx0X3NzX21vZHVsZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9p
bnQsCiAJICAgIFNDVFBDVExfREVGQVVMVF9TU19NT0RVTEVfREVTQyk7CiAKIAlzeXNjdGxfYWRk
X29pZCgmc3lzY3RsX29pZF90b3AsICJkZWZhdWx0X2ZyYWdfaW50ZXJsZWF2ZSIsIENUTFRZUEVf
SU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2RlZmF1
bHRfZnJhZ19pbnRlcmxlYXZlKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlND
VFBfQkFTRV9TWVNDVEwoc2N0cF9kZWZhdWx0X2ZyYWdfaW50ZXJsZWF2ZSksIDAsIHNjdHBfc3lz
Y3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExfREVGQVVMVF9GUkFHX0lOVEVSTEVBVkVfREVT
Qyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJtb2JpbGl0eV9iYXNlIiwg
Q1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNj
dHBfbW9iaWxpdHlfYmFzZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQ
X0JBU0VfU1lTQ1RMKHNjdHBfbW9iaWxpdHlfYmFzZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9p
bnQsCiAJICAgIFNDVFBDVExfTU9CSUxJVFlfQkFTRV9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lk
KCZzeXNjdGxfb2lkX3RvcCwgIm1vYmlsaXR5X2Zhc3RoYW5kb2ZmIiwgQ1RMVFlQRV9JTlR8Q1RM
RkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbW9iaWxpdHlfZmFz
dGhhbmRvZmYpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZ
U0NUTChzY3RwX21vYmlsaXR5X2Zhc3RoYW5kb2ZmKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2lu
dCwKIAkgICAgU0NUUENUTF9NT0JJTElUWV9GQVNUSEFORE9GRl9ERVNDKTsKIAogI2lmIGRlZmlu
ZWQoU0NUUF9MT0NBTF9UUkFDRV9CVUYpCkBAIC0xNjY3LDUyICsxNTU2LDU2IEBAIHN5c2N0bF9z
ZXR1cF9zY3RwKHZvaWQpCiAJICAgIFNDVFBDVExfVURQX1RVTk5FTElOR19QT1JUX0RFU0MpOwog
CiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAiZW5hYmxlX3NhY2tfaW1tZWRpYXRl
bHkiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVND
VEwoc2N0cF9lbmFibGVfc2Fja19pbW1lZGlhdGVseSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9p
bnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfZW5hYmxlX3NhY2tfaW1tZWRpYXRlbHkp
LCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX1NBQ0tfSU1NRURJQVRF
TFlfRU5BQkxFX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAibmF0
X2ZyaWVuZGx5X2luaXQiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlND
VFBfQkFTRV9TWVNDVEwoc2N0cF9pbml0c19pbmNsdWRlX25hdF9mcmllbmRseSksIDAsIHNjdHBf
c3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfaW5pdHNfaW5j
bHVkZV9uYXRfZnJpZW5kbHkpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQ
Q1RMX05BVF9GUklFTkRMWV9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3Rv
cCwgInZ0YWdfdGltZV93YWl0IiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAg
ICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfdnRhZ190aW1lX3dhaXQpLCAwLCBzY3RwX3N5c2N0bF9o
YW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3Z0YWdfdGltZV93YWl0KSwg
MCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9USU1FX1dBSVRfREVTQyk7
CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJidWZmZXJfc3BsaXR0aW5nIiwg
Q1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNj
dHBfYnVmZmVyX3NwbGl0dGluZyksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZT
Q1RQX0JBU0VfU1lTQ1RMKHNjdHBfYnVmZmVyX3NwbGl0dGluZyksIDAsIHNjdHBfc3lzY3RsX2hh
bmRsZV9pbnQsCiAJICAgIFNDVFBDVExfQlVGRkVSX1NQTElUVElOR19ERVNDKTsKIAogCXN5c2N0
bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgImluaXRpYWxfY3duZCIsIENUTFRZUEVfSU5UfENU
TEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2luaXRpYWxfY3du
ZCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNj
dHBfaW5pdGlhbF9jd25kKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENU
TF9JTklUSUFMX0NXTkRfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3As
ICJydHR2YXJfYnciLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBf
QkFTRV9TWVNDVEwoc2N0cF9ydHR2YXJfYncpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAor
CSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3J0dHZhcl9idyksIDAsIHNjdHBfc3lzY3RsX2hh
bmRsZV9pbnQsCiAJICAgIFNDVFBDVExfUlRUVkFSX0JXX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9v
aWQoJnN5c2N0bF9vaWRfdG9wLCAicnR0dmFyX3J0dCIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcs
Ci0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3J0dHZhcl9ydHQpLCAwLCBzY3Rw
X3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3J0dHZhcl9y
dHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX1JUVFZBUl9SVFRf
REVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJydHR2YXJfZXFyZXQi
LCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwo
c2N0cF9ydHR2YXJfZXFyZXQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NU
UF9CQVNFX1NZU0NUTChzY3RwX3J0dHZhcl9lcXJldCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9p
bnQsCiAJICAgIFNDVFBDVExfUlRUVkFSX0VRUkVUX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQo
JnN5c2N0bF9vaWRfdG9wLCAicnR0dmFyX3N0ZWFkeV9zdGVwIiwgQ1RMVFlQRV9JTlR8Q1RMRkxB
R19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfc3RlYWR5X3N0ZXApLCAw
LCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3N0
ZWFkeV9zdGVwKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9SVFRW
QVJfU1RFQURZU19ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgInVz
ZV9kY2NjZWNuIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JB
U0VfU1lTQ1RMKHNjdHBfdXNlX2RjY2NfZWNuKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwK
KwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF91c2VfZGNjY19lY24pLCAwLCBzY3RwX3N5c2N0
bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX1JUVFZBUl9EQ0NDRUNOX0RFU0MpOwogCiAJc3lz
Y3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAiYmxhY2tob2xlIiwgQ1RMVFlQRV9JTlR8Q1RM
RkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfYmxhY2tob2xlKSwg
MCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKLSAgICAgICAgICAgIFNDVFBDVExfQkxBQ0tIT0xF
X0RFU0MpOworCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2JsYWNraG9sZSksIDAsIHNjdHBf
c3lzY3RsX2hhbmRsZV9pbnQsCisJICAgIFNDVFBDVExfQkxBQ0tIT0xFX0RFU0MpOworCisJc3lz
Y3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAic2VuZGFsbF9saW1pdCIsIENUTFRZUEVfSU5U
fENUTEZMQUdfUlcsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfc2VuZGFsbF9saW1pdCks
IDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgIFNDVFBDVExfU0VOREFMTF9MSU1JVF9E
RVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgImRpYWdfaW5mb19jb2Rl
IiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RM
KHNjdHBfZGlhZ19pbmZvX2NvZGUpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAotICAgICAg
ICAgICAgU0NUUENUTF9ESUFHX0lORk9fQ09ERV9ERVNDKTsKKwkgICAgJlNDVFBfQkFTRV9TWVND
VEwoc2N0cF9kaWFnX2luZm9fY29kZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAg
IFNDVFBDVExfRElBR19JTkZPX0NPREVfREVTQyk7CiAKICNpZmRlZiBTQ1RQX0RFQlVHCiAJc3lz
Y3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAiZGVidWciLCBDVExUWVBFX0lOVHxDVExGTEFH
X1JXLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfc3lzY3Rs
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9zeXNjdGwuaApvbGQgbW9kZSAx
MDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDRmMTBmZjY3NjkxNTVjZTU0ZTVmODdjNGFmMTI3
YmYyZTY4NDQ1N2UuLmViODg4MzM4Y2E4NjYyMDYxMTYwZDkwZmFiYmM5MTBhOTA3YTgxOWQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfc3lzY3RsLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBs
aWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfc3lzY3RsLmgKQEAgLTMyLDkgKzMyLDkgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZkZWYgX19GcmVlQlNE
X18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
I2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRp
bmV0L3NjdHBfc3lzY3RsLmggMjk5NTQzIDIwMTYtMDUtMTIgMTY6MzQ6NTlaIHR1ZXhlbiAkIik7
CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9zeXNjdGwuaCAzNjE4
OTUgMjAyMC0wNi0wNyAxNDozOToyMFogdHVleGVuICQiKTsKICNlbmRpZgogCiAjaWZuZGVmIF9O
RVRJTkVUX1NDVFBfU1lTQ1RMX0hfCkBAIC01Niw3ICs1Niw3IEBAIHN0cnVjdCBzY3RwX3N5c2N0
bCB7CiAJdWludDMyX3Qgc2N0cF9ucnNhY2tfZW5hYmxlOwogCXVpbnQzMl90IHNjdHBfcGt0ZHJv
cF9lbmFibGU7CiAJdWludDMyX3Qgc2N0cF9mcl9tYXhfYnVyc3RfZGVmYXVsdDsKLSNpZiAhKGRl
ZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMDAwMCkKKyNpZiAh
KGRlZmluZWQoX19GcmVlQlNEX18pICAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkKIAl1aW50
MzJfdCBzY3RwX25vX2NzdW1fb25fbG9vcGJhY2s7CiAjZW5kaWYKIAl1aW50MzJfdCBzY3RwX3Bl
ZXJfY2h1bmtfb2g7CkBAIC0xMTMsNyArMTEzLDcgQEAgc3RydWN0IHNjdHBfc3lzY3RsIHsKIAl1
aW50MzJfdCBzY3RwX3VzZV9kY2NjX2VjbjsKIAl1aW50MzJfdCBzY3RwX2RpYWdfaW5mb19jb2Rl
OwogI2lmIGRlZmluZWQoU0NUUF9MT0NBTF9UUkFDRV9CVUYpCi0jaWYgZGVmaW5lZChfX1dpbmRv
d3NfXykKKyNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlz
dHJ1Y3Qgc2N0cF9sb2cgKnNjdHBfbG9nOwogI2Vsc2UKIAlzdHJ1Y3Qgc2N0cF9sb2cgc2N0cF9s
b2c7CkBAIC0xMjUsMTYgKzEyNSwxNyBAQCBzdHJ1Y3Qgc2N0cF9zeXNjdGwgewogCXVpbnQzMl90
IHNjdHBfYnVmZmVyX3NwbGl0dGluZzsKIAl1aW50MzJfdCBzY3RwX2luaXRpYWxfY3duZDsKIAl1
aW50MzJfdCBzY3RwX2JsYWNraG9sZTsKKwl1aW50MzJfdCBzY3RwX3NlbmRhbGxfbGltaXQ7CiAj
aWYgZGVmaW5lZChTQ1RQX0RFQlVHKQogCXVpbnQzMl90IHNjdHBfZGVidWdfb247CiAjZW5kaWYK
LSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKIAl1aW50MzJfdCBzY3RwX2lnbm9yZV92bXdhcmVfaW50ZXJmYWNl
czsKIAl1aW50MzJfdCBzY3RwX21haW5fdGltZXI7CiAJdWludDMyX3Qgc2N0cF9hZGRyX3dhdGNo
ZG9nX2xpbWl0OwogCXVpbnQzMl90IHNjdHBfdnRhZ193YXRjaGRvZ19saW1pdDsKICNlbmRpZgot
I2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQor
I2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCXVpbnQz
Ml90IHNjdHBfb3V0cHV0X3VubG9ja2VkOwogI2VuZGlmCiB9OwpAQCAtMjM1LDcgKzIzNiw3IEBA
IHN0cnVjdCBzY3RwX3N5c2N0bCB7CiAjZGVmaW5lIFNDVFBDVExfTUFYQlVSU1RfREVGQVVMVAlT
Q1RQX0RFRl9NQVhfQlVSU1QKIAogLyogZnJfbWF4YnVyc3Q6IERlZmF1bHQgbWF4IGJ1cnN0IGZv
ciBzY3RwIGVuZHBvaW50cyB3aGVuIGZhc3QgcmV0cmFuc21pdHRpbmcgKi8KLSNkZWZpbmUgU0NU
UENUTF9GUk1BWEJVUlNUX0RFU0MJCSJEZWZhdWx0IGZyIG1heCBidXJzdCBmb3Igc2N0cCBlbmRw
b2ludHMiCisjZGVmaW5lIFNDVFBDVExfRlJNQVhCVVJTVF9ERVNDCQkiRGVmYXVsdCBtYXggYnVy
c3QgZm9yIFNDVFAgZW5kcG9pbnRzIHdoZW4gZmFzdCByZXRyYW5zbWl0dGluZyIKICNkZWZpbmUg
U0NUUENUTF9GUk1BWEJVUlNUX01JTgkJMAogI2RlZmluZSBTQ1RQQ1RMX0ZSTUFYQlVSU1RfTUFY
CQkweEZGRkZGRkZGCiAjZGVmaW5lIFNDVFBDVExfRlJNQVhCVVJTVF9ERUZBVUxUCVNDVFBfREVG
X0ZSTUFYX0JVUlNUCkBAIC0yNjYsNyArMjY3LDcgQEAgc3RydWN0IHNjdHBfc3lzY3RsIHsKICNk
ZWZpbmUgU0NUUENUTF9NSU5fU1BMSVRfUE9JTlRfREVGQVVMVAlTQ1RQX0RFRkFVTFRfU1BMSVRf
UE9JTlRfTUlOCiAKIC8qIGNodW5rc2NhbGU6IFR1bmFibGUgZm9yIFNjYWxpbmcgb2YgbnVtYmVy
IG9mIGNodW5rcyBhbmQgbWVzc2FnZXMgKi8KLSNkZWZpbmUgU0NUUENUTF9DSFVOS1NDQUxFX0RF
U0MJCSJUdW5hYmxlIGZvciBTY2FsaW5nIG9mIG51bWJlciBvZiBjaHVua3MgYW5kIG1lc3NhZ2Vz
IgorI2RlZmluZSBTQ1RQQ1RMX0NIVU5LU0NBTEVfREVTQwkJIlR1bmFibGUgZm9yIHNjYWxpbmcg
b2YgbnVtYmVyIG9mIGNodW5rcyBhbmQgbWVzc2FnZXMiCiAjZGVmaW5lIFNDVFBDVExfQ0hVTktT
Q0FMRV9NSU4JCTEKICNkZWZpbmUgU0NUUENUTF9DSFVOS1NDQUxFX01BWAkJMHhGRkZGRkZGRgog
I2RlZmluZSBTQ1RQQ1RMX0NIVU5LU0NBTEVfREVGQVVMVAlTQ1RQX0NIVU5LUVVFVUVfU0NBTEUK
QEAgLTM1MCw3ICszNTEsNyBAQCBzdHJ1Y3Qgc2N0cF9zeXNjdGwgewogI2RlZmluZSBTQ1RQQ1RM
X1ZBTElEX0NPT0tJRV9MSUZFX0RFRkFVTFQJU0NUUF9ERUZBVUxUX0NPT0tJRV9MSUZFCiAKIC8q
IGluaXRfcnR4X21heDogRGVmYXVsdCBtYXhpbXVtIG51bWJlciBvZiByZXRyYW5zbWlzc2lvbiBm
b3IgSU5JVCBjaHVua3MgKi8KLSNkZWZpbmUgU0NUUENUTF9JTklUX1JUWF9NQVhfREVTQwkiRGVm
YXVsdCBtYXhpbXVtIG51bWJlciBvZiByZXRyYW5zbWlzc2lvbiBmb3IgSU5JVCBjaHVua3MiCisj
ZGVmaW5lIFNDVFBDVExfSU5JVF9SVFhfTUFYX0RFU0MJIkRlZmF1bHQgbWF4aW11bSBudW1iZXIg
b2YgcmV0cmFuc21pc3Npb25zIGZvciBJTklUIGNodW5rcyIKICNkZWZpbmUgU0NUUENUTF9JTklU
X1JUWF9NQVhfTUlOCTAKICNkZWZpbmUgU0NUUENUTF9JTklUX1JUWF9NQVhfTUFYCTB4RkZGRkZG
RkYKICNkZWZpbmUgU0NUUENUTF9JTklUX1JUWF9NQVhfREVGQVVMVAlTQ1RQX0RFRl9NQVhfSU5J
VApAQCAtNDAzLDggKzQwNCw4IEBAIHN0cnVjdCBzY3RwX3N5c2N0bCB7CiAjZGVmaW5lIFNDVFBD
VExfQ01UX1VTRV9EQUNfTUFYCQkxCiAjZGVmaW5lIFNDVFBDVExfQ01UX1VTRV9EQUNfREVGQVVM
VCAgICAJMAogCi0vKiBjd25kX21heGJ1cnN0OiBVc2UgYSBDV05EIGFkanVzdGluZyBtYXhidXJz
dCAqLwotI2RlZmluZSBTQ1RQQ1RMX0NXTkRfTUFYQlVSU1RfREVTQwkiVXNlIGEgQ1dORCBhZGp1
c3RpbmcgbWF4YnVyc3QiCisvKiBjd25kX21heGJ1cnN0OiBVc2UgYSBDV05EIGFkanVzdGluZyB0
byBpbXBsZW1lbnQgbWF4YnVyc3QgKi8KKyNkZWZpbmUgU0NUUENUTF9DV05EX01BWEJVUlNUX0RF
U0MJIkFkanVzdCBjb25nZXN0aW9uIGNvbnRyb2wgd2luZG93IHRvIGxpbWl0IG1heGltdW0gYnVy
c3Qgd2hlbiBzZW5kaW5nIgogI2RlZmluZSBTQ1RQQ1RMX0NXTkRfTUFYQlVSU1RfTUlOCTAKICNk
ZWZpbmUgU0NUUENUTF9DV05EX01BWEJVUlNUX01BWAkxCiAjZGVmaW5lIFNDVFBDVExfQ1dORF9N
QVhCVVJTVF9ERUZBVUxUCTEKQEAgLTQ0MCw3ICs0NDEsNyBAQCBzdHJ1Y3Qgc2N0cF9zeXNjdGwg
ewogI2RlZmluZSBTQ1RQQ1RMX0hCX01BWF9CVVJTVF9ERUZBVUxUCVNDVFBfREVGX0hCTUFYX0JV
UlNUCiAKIC8qIGFib3J0X2F0X2xpbWl0OiBXaGVuIG9uZS0yLW9uZSBoaXRzIHFsaW1pdCBhYm9y
dCAqLwotI2RlZmluZSBTQ1RQQ1RMX0FCT1JUX0FUX0xJTUlUX0RFU0MJIldoZW4gb25lLTItb25l
IGhpdHMgcWxpbWl0IGFib3J0IgorI2RlZmluZSBTQ1RQQ1RMX0FCT1JUX0FUX0xJTUlUX0RFU0MJ
IkFib3J0IHdoZW4gb25lLXRvLW9uZSBoaXRzIHFsaW1pdCIKICNkZWZpbmUgU0NUUENUTF9BQk9S
VF9BVF9MSU1JVF9NSU4JMAogI2RlZmluZSBTQ1RQQ1RMX0FCT1JUX0FUX0xJTUlUX01BWAkxCiAj
ZGVmaW5lIFNDVFBDVExfQUJPUlRfQVRfTElNSVRfREVGQVVMVAkwCkBAIC00NTIsNyArNDUzLDcg
QEAgc3RydWN0IHNjdHBfc3lzY3RsIHsKICNkZWZpbmUgU0NUUENUTF9NSU5fUkVTSURVQUxfREVG
QVVMVAkxNDUyCiAKIC8qIG1heF9yZXRyYW5fY2h1bms6IG1heCBjaHVuayByZXRyYW5zbWlzc2lv
bnMgKi8KLSNkZWZpbmUgU0NUUENUTF9NQVhfUkVUUkFOX0NIVU5LX0RFU0MJIk1heGltdW0gdGlt
ZXMgYW4gdW5sdWNreSBjaHVuayBjYW4gYmUgcmV0cmFuJ2QgYmVmb3JlIGFzc29jIGFib3J0Igor
I2RlZmluZSBTQ1RQQ1RMX01BWF9SRVRSQU5fQ0hVTktfREVTQwkiTWF4aW11bSB0aW1lcyBhbiB1
bmx1Y2t5IGNodW5rIGNhbiBiZSByZXRyYW5zbWl0dGVkIGJlZm9yZSBhc3NvYyBhYm9ydCIKICNk
ZWZpbmUgU0NUUENUTF9NQVhfUkVUUkFOX0NIVU5LX01JTgkwCiAjZGVmaW5lIFNDVFBDVExfTUFY
X1JFVFJBTl9DSFVOS19NQVgJNjU1MzUKICNkZWZpbmUgU0NUUENUTF9NQVhfUkVUUkFOX0NIVU5L
X0RFRkFVTFQJMzAKQEAgLTQ5Nyw3NCArNDk4LDgwIEBAIHN0cnVjdCBzY3RwX3N5c2N0bCB7CiAj
ZGVmaW5lIFNDVFBDVExfVURQX1RVTk5FTElOR19QT1JUX0RFU0MJCSJTZXQgdGhlIFNDVFAvVURQ
IHR1bm5lbGluZyBwb3J0IgogI2RlZmluZSBTQ1RQQ1RMX1VEUF9UVU5ORUxJTkdfUE9SVF9NSU4J
CTAKICNkZWZpbmUgU0NUUENUTF9VRFBfVFVOTkVMSU5HX1BPUlRfTUFYCQk2NTUzNQotI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKICNkZWZpbmUgU0NUUENUTF9VRFBfVFVOTkVMSU5HX1BPUlRfREVGQVVM
VAkwCiAjZWxzZQogI2RlZmluZSBTQ1RQQ1RMX1VEUF9UVU5ORUxJTkdfUE9SVF9ERUZBVUxUCVND
VFBfT1ZFUl9VRFBfVFVOTkVMSU5HX1BPUlQKICNlbmRpZgogCiAvKiBFbmFibGUgc2VuZGluZyBv
ZiB0aGUgU0FDSy1JTU1FRElBVEVMWSBiaXQgKi8KLSNkZWZpbmUgU0NUUENUTF9TQUNLX0lNTUVE
SUFURUxZX0VOQUJMRV9ERVNDCSJFbmFibGUgc2VuZGluZyBvZiB0aGUgU0FDSy1JTU1FRElBVEVM
WS1iaXQuIgorI2RlZmluZSBTQ1RQQ1RMX1NBQ0tfSU1NRURJQVRFTFlfRU5BQkxFX0RFU0MJIkVu
YWJsZSBzZW5kaW5nIG9mIHRoZSBTQUNLLUlNTUVESUFURUxZLWJpdCIKICNkZWZpbmUgU0NUUENU
TF9TQUNLX0lNTUVESUFURUxZX0VOQUJMRV9NSU4JMAogI2RlZmluZSBTQ1RQQ1RMX1NBQ0tfSU1N
RURJQVRFTFlfRU5BQkxFX01BWAkxCiAjZGVmaW5lIFNDVFBDVExfU0FDS19JTU1FRElBVEVMWV9F
TkFCTEVfREVGQVVMVAlTQ1RQQ1RMX1NBQ0tfSU1NRURJQVRFTFlfRU5BQkxFX01BWAogCiAvKiBF
bmFibGUgc2VuZGluZyBvZiB0aGUgTkFULUZSSUVORExZIG1lc3NhZ2UgKi8KLSNkZWZpbmUgU0NU
UENUTF9OQVRfRlJJRU5ETFlfSU5JVFNfREVTQwkiRW5hYmxlIHNlbmRpbmcgb2YgdGhlIG5hdC1m
cmllbmRseSBTQ1RQIG9wdGlvbiBvbiBJTklUcy4iCisjZGVmaW5lIFNDVFBDVExfTkFUX0ZSSUVO
RExZX0lOSVRTX0RFU0MJIkVuYWJsZSBzZW5kaW5nIG9mIHRoZSBuYXQtZnJpZW5kbHkgU0NUUCBv
cHRpb24gb24gSU5JVHMiCiAjZGVmaW5lIFNDVFBDVExfTkFUX0ZSSUVORExZX0lOSVRTX01JTgkw
CiAjZGVmaW5lIFNDVFBDVExfTkFUX0ZSSUVORExZX0lOSVRTX01BWAkxCiAjZGVmaW5lIFNDVFBD
VExfTkFUX0ZSSUVORExZX0lOSVRTX0RFRkFVTFQJU0NUUENUTF9OQVRfRlJJRU5ETFlfSU5JVFNf
TUlOCiAKIC8qIFZ0YWcgdGltZSB3YWl0IGluIHNlY29uZHMgKi8KLSNkZWZpbmUgU0NUUENUTF9U
SU1FX1dBSVRfREVTQwkiVnRhZyB0aW1lIHdhaXQgdGltZSBpbiBzZWNvbmRzLCAwIGRpc2FibGVz
IGl0LiIKKyNkZWZpbmUgU0NUUENUTF9USU1FX1dBSVRfREVTQwkiVnRhZyB0aW1lIHdhaXQgdGlt
ZSBpbiBzZWNvbmRzLCAwIGRpc2FibGVzIGl0IgogI2RlZmluZSBTQ1RQQ1RMX1RJTUVfV0FJVF9N
SU4JMAogI2RlZmluZSBTQ1RQQ1RMX1RJTUVfV0FJVF9NQVgJMHhmZmZmZmZmZgogI2RlZmluZSBT
Q1RQQ1RMX1RJTUVfV0FJVF9ERUZBVUxUCVNDVFBfVElNRV9XQUlUCiAKIC8qIEVuYWJsZSBTZW5k
L1JlY2VpdmUgYnVmZmVyIHNwbGl0dGluZyAqLwotI2RlZmluZSBTQ1RQQ1RMX0JVRkZFUl9TUExJ
VFRJTkdfREVTQwkJIkVuYWJsZSBzZW5kL3JlY2VpdmUgYnVmZmVyIHNwbGl0dGluZy4iCisjZGVm
aW5lIFNDVFBDVExfQlVGRkVSX1NQTElUVElOR19ERVNDCQkiRW5hYmxlIHNlbmQvcmVjZWl2ZSBi
dWZmZXIgc3BsaXR0aW5nIgogI2RlZmluZSBTQ1RQQ1RMX0JVRkZFUl9TUExJVFRJTkdfTUlOCQkw
CiAjZGVmaW5lIFNDVFBDVExfQlVGRkVSX1NQTElUVElOR19NQVgJCTB4MwogI2RlZmluZSBTQ1RQ
Q1RMX0JVRkZFUl9TUExJVFRJTkdfREVGQVVMVAlTQ1RQQ1RMX0JVRkZFUl9TUExJVFRJTkdfTUlO
CiAKLS8qIEluaXRpYWwgY29uZ2VzdGlvbiB3aW5kb3cgaW4gTVRVICovCi0jZGVmaW5lIFNDVFBD
VExfSU5JVElBTF9DV05EX0RFU0MJIkluaXRpYWwgY29uZ2VzdGlvbiB3aW5kb3cgaW4gTVRVcyIK
Ky8qIEluaXRpYWwgY29uZ2VzdGlvbiB3aW5kb3cgaW4gTVRVcyAqLworI2RlZmluZSBTQ1RQQ1RM
X0lOSVRJQUxfQ1dORF9ERVNDCSJEZWZpbmVzIHRoZSBpbml0aWFsIGNvbmdlc3Rpb24gd2luZG93
IHNpemUgaW4gTVRVcyIKICNkZWZpbmUgU0NUUENUTF9JTklUSUFMX0NXTkRfTUlOCTAKICNkZWZp
bmUgU0NUUENUTF9JTklUSUFMX0NXTkRfTUFYCTB4ZmZmZmZmZmYKICNkZWZpbmUgU0NUUENUTF9J
TklUSUFMX0NXTkRfREVGQVVMVAkzCiAKIC8qIHJ0dHZhciBzbW9vdGggYXZnIGZvciBidyBjYWxj
ICAqLwotI2RlZmluZSBTQ1RQQ1RMX1JUVFZBUl9CV19ERVNDCSJTaGlmdCBhbW91bnQgZm9yIGJ3
IHNtb290aGluZyBvbiBydHQgY2FsYyIKKyNkZWZpbmUgU0NUUENUTF9SVFRWQVJfQldfREVTQwki
U2hpZnQgYW1vdW50IERDQ0MgdXNlcyBmb3IgYncgc21vb3RoaW5nIG9uIHJ0dCBjYWxjIgogI2Rl
ZmluZSBTQ1RQQ1RMX1JUVFZBUl9CV19NSU4JMAogI2RlZmluZSBTQ1RQQ1RMX1JUVFZBUl9CV19N
QVgJMzIKICNkZWZpbmUgU0NUUENUTF9SVFRWQVJfQldfREVGQVVMVAk0CiAKIC8qIHJ0dHZhciBz
bW9vdGggYXZnIGZvciBidyBjYWxjICAqLwotI2RlZmluZSBTQ1RQQ1RMX1JUVFZBUl9SVFRfREVT
QwkiU2hpZnQgYW1vdW50IGZvciBydHQgc21vb3RoaW5nIG9uIHJ0dCBjYWxjIgorI2RlZmluZSBT
Q1RQQ1RMX1JUVFZBUl9SVFRfREVTQwkiU2hpZnQgYW1vdW50IERDQ0MgdXNlcyBmb3IgcnR0IHNt
b290aGluZyBvbiBydHQgY2FsYyIKICNkZWZpbmUgU0NUUENUTF9SVFRWQVJfUlRUX01JTgkwCiAj
ZGVmaW5lIFNDVFBDVExfUlRUVkFSX1JUVF9NQVgJMzIKICNkZWZpbmUgU0NUUENUTF9SVFRWQVJf
UlRUX0RFRkFVTFQJNQogCi0jZGVmaW5lIFNDVFBDVExfUlRUVkFSX0VRUkVUX0RFU0MJIldoYXQg
dG8gcmV0dXJuIHdoZW4gcnR0IGFuZCBidyBhcmUgdW5jaGFuZ2VkIgorI2RlZmluZSBTQ1RQQ1RM
X1JUVFZBUl9FUVJFVF9ERVNDCSJXaGV0aGVyIERDQ0MgaW5jcmVhc2VzIGN3bmQgd2hlbiB0aGUg
cnR0IGFuZCBidyBhcmUgdW5jaGFuZ2VkIgogI2RlZmluZSBTQ1RQQ1RMX1JUVFZBUl9FUVJFVF9N
SU4JMAogI2RlZmluZSBTQ1RQQ1RMX1JUVFZBUl9FUVJFVF9NQVgJMQogI2RlZmluZSBTQ1RQQ1RM
X1JUVFZBUl9FUVJFVF9ERUZBVUxUCTAKIAotI2RlZmluZSBTQ1RQQ1RMX1JUVFZBUl9TVEVBRFlT
X0RFU0MJIkhvdyBtYW55IHRoZSBzYW1lcyBpdCB0YWtlcyB0byB0cnkgc3RlcCBkb3duIG9mIGN3
bmQiCisjZGVmaW5lIFNDVFBDVExfUlRUVkFSX1NURUFEWVNfREVTQwkiTnVtYmVyIG9mIGlkZW50
aWNhbCBidyBtZWFzdXJlbWVudHMgRENDQyB0YWtlcyB0byB0cnkgc3RlcCBkb3duIG9mIGN3bmQi
CiAjZGVmaW5lIFNDVFBDVExfUlRUVkFSX1NURUFEWVNfTUlOCTAKICNkZWZpbmUgU0NUUENUTF9S
VFRWQVJfU1RFQURZU19NQVgJMHhGRkZGCiAjZGVmaW5lIFNDVFBDVExfUlRUVkFSX1NURUFEWVNf
REVGQVVMVAkyMCAvKiAwIG1lYW5zIGRpc2FibGUgZmVhdHVyZSAqLwogCi0jZGVmaW5lIFNDVFBD
VExfUlRUVkFSX0RDQ0NFQ05fREVTQwkiRW5hYmxlIGZvciBSVENDIENDIGRhdGFjZW50ZXIgRUNO
IgorI2RlZmluZSBTQ1RQQ1RMX1JUVFZBUl9EQ0NDRUNOX0RFU0MJIkVuYWJsZSBFQ04gZm9yIERD
Q0MuIgogI2RlZmluZSBTQ1RQQ1RMX1JUVFZBUl9EQ0NDRUNOX01JTgkwCiAjZGVmaW5lIFNDVFBD
VExfUlRUVkFSX0RDQ0NFQ05fTUFYCTEKICNkZWZpbmUgU0NUUENUTF9SVFRWQVJfRENDQ0VDTl9E
RUZBVUxUCTEgLyogMCBtZWFucyBkaXNhYmxlIGZlYXR1cmUgKi8KIAotI2RlZmluZSBTQ1RQQ1RM
X0JMQUNLSE9MRV9ERVNDCQkiRW5hYmxlIFNDVFAgYmxhY2tob2xpbmcuIFNlZSBibGFja2hvbGUo
NCkgZm9yIG1vcmUgZGV0YWlscy4iCisjZGVmaW5lIFNDVFBDVExfQkxBQ0tIT0xFX0RFU0MJCSJF
bmFibGUgU0NUUCBibGFja2hvbGluZywgc2VlIGJsYWNraG9sZSg0KSBmb3IgbW9yZSBkZXRhaWxz
IgogI2RlZmluZSBTQ1RQQ1RMX0JMQUNLSE9MRV9NSU4JCTAKICNkZWZpbmUgU0NUUENUTF9CTEFD
S0hPTEVfTUFYCQkyCiAjZGVmaW5lIFNDVFBDVExfQkxBQ0tIT0xFX0RFRkFVTFQJU0NUUENUTF9C
TEFDS0hPTEVfTUlOCiAKKy8qIHNlbmRhbGxfbGltaXQ6IE1heGltdW0gbWVzc2FnZSB3aXRoIFND
VFBfU0VOREFMTCAqLworI2RlZmluZSBTQ1RQQ1RMX1NFTkRBTExfTElNSVRfREVTQwkiTWF4aW11
bSBzaXplIG9mIGEgbWVzc2FnZSBzZW5kIHdpdGggU0NUUF9TRU5EQUxMIgorI2RlZmluZSBTQ1RQ
Q1RMX1NFTkRBTExfTElNSVRfTUlOCTAKKyNkZWZpbmUgU0NUUENUTF9TRU5EQUxMX0xJTUlUX01B
WAkweEZGRkZGRkZGCisjZGVmaW5lIFNDVFBDVExfU0VOREFMTF9MSU1JVF9ERUZBVUxUCTE0MzIK
KwogI2RlZmluZSBTQ1RQQ1RMX0RJQUdfSU5GT19DT0RFX0RFU0MJIkRpYWdub3N0aWMgaW5mb3Jt
YXRpb24gZXJyb3IgY2F1c2UgY29kZSIKICNkZWZpbmUgU0NUUENUTF9ESUFHX0lORk9fQ09ERV9N
SU4JMAogI2RlZmluZSBTQ1RQQ1RMX0RJQUdfSU5GT19DT0RFX01BWAk2NTUzNQpAQCAtNTc4LDcg
KzU4NSw3IEBAIHN0cnVjdCBzY3RwX3N5c2N0bCB7CiAjZGVmaW5lIFNDVFBDVExfREVCVUdfREVG
QVVMVAkwCiAjZW5kaWYKIAotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19B
UFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2RlZmluZSBTQ1RQQ1RMX01BSU5f
VElNRVJfREVTQwkJIk1haW4gdGltZXIgaW50ZXJ2YWwgaW4gbXMiCiAjZGVmaW5lIFNDVFBDVExf
TUFJTl9USU1FUl9NSU4JCTEKICNkZWZpbmUgU0NUUENUTF9NQUlOX1RJTUVSX01BWAkJMHhGRkZG
RkZGRgpAQCAtNTkwLDE0ICs1OTcsMTQgQEAgc3RydWN0IHNjdHBfc3lzY3RsIHsKICNkZWZpbmUg
U0NUUENUTF9JR05PUkVfVk1XQVJFX0lOVEVSRkFDRVNfREVGQVVMVAlTQ1RQQ1RMX0lHTk9SRV9W
TVdBUkVfSU5URVJGQUNFU19NQVgKICNlbmRpZgogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8
IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCi0jZGVmaW5lIFNDVFBDVExfT1VUUFVUX1VO
TE9DS0VEX0RFU0MJIlVubG9jayBzb2NrZXQgd2hlbiBzZW5kaW5nIHBhY2tldHMgZG93biB0byBJ
UC4iCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisj
ZGVmaW5lIFNDVFBDVExfT1VUUFVUX1VOTE9DS0VEX0RFU0MJIlVubG9jayBzb2NrZXQgd2hlbiBz
ZW5kaW5nIHBhY2tldHMgZG93biB0byBJUCIKICNkZWZpbmUgU0NUUENUTF9PVVRQVVRfVU5MT0NL
RURfTUlOCTAKICNkZWZpbmUgU0NUUENUTF9PVVRQVVRfVU5MT0NLRURfTUFYCTEKICNkZWZpbmUg
U0NUUENUTF9PVVRQVVRfVU5MT0NLRURfREVGQVVMVAlTQ1RQQ1RMX09VVFBVVF9VTkxPQ0tFRF9N
SU4KICNlbmRpZgogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExF
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjZGVmaW5lCVNDVFBDVExfQUREUl9XQVRD
SERPR19MSU1JVF9ERVNDCSJBZGRyZXNzIHdhdGNoZG9nIGxpbWl0IgogI2RlZmluZQlTQ1RQQ1RM
X0FERFJfV0FUQ0hET0dfTElNSVRfTUlOCQkwCiAjZGVmaW5lCVNDVFBDVExfQUREUl9XQVRDSERP
R19MSU1JVF9NQVgJCTB4RkZGRkZGRkYKQEAgLTYxNyw3ICs2MjQsNyBAQCBTWVNDVExfREVDTChf
bmV0X2luZXRfc2N0cCk7CiAjZW5kaWYKIAogdm9pZCBzY3RwX2luaXRfc3lzY3Rscyh2b2lkKTsK
LSNpZiBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogdm9pZCBzY3RwX2ZpbmlzaF9zeXNjdGxzKHZvaWQpOwogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3RpbWVyLmMg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAv
dXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF90aW1lci5jCm9sZCBtb2RlIDEwMDY0
NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggNDI2YmE0NGFlZWUyMTVhYmZjNmQ5OTdhM2YwYTM1ZTI0
ZDYzMDhkOC4uYWQwNjJiMzVlZWEwMWM0NjEyMTM3MGQ2YmY0YzZiZDRiMTY5MzExYgotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNy
c2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF90aW1lci5jCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Vz
cnNjdHBsaWIvbmV0aW5ldC9zY3RwX3RpbWVyLmMKQEAgLTMyLDE2ICszMiwxNiBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZmRlZiBfX0ZyZWVCU0RfXwor
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5j
bHVkZSA8c3lzL2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQv
c2N0cF90aW1lci5jIDMxNzU5MiAyMDE3LTA0LTI5IDA5OjU3OjI3WiB0dWV4ZW4gJCIpOworX19G
QlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfdGltZXIuYyAzNjIwNTQgMjAy
MC0wNi0xMSAxMzozNDowOVogdHVleGVuICQiKTsKICNlbmRpZgogCiAjZGVmaW5lIF9JUF9WSEwK
ICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfb3MuaD4KICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfcGNi
Lmg+CiAjaWZkZWYgSU5FVDYKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0ZyZWVCU0QpCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1
ZGUgPG5ldGluZXQ2L3NjdHA2X3Zhci5oPgogI2VuZGlmCiAjZW5kaWYKQEAgLTU3LDE1ICs1Nywx
MSBAQCBfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF90aW1lci5jIDMx
NzU5MiAyMDE3LTA0LTI5IDA5OjU3OjI3WiB0dQogI2luY2x1ZGUgPG5ldGluZXQvc2N0cC5oPgog
I2luY2x1ZGUgPG5ldGluZXQvc2N0cF91aW8uaD4KICNpZiBkZWZpbmVkKElORVQpIHx8IGRlZmlu
ZWQoSU5FVDYpCi0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiAhKGRl
ZmluZWQoX1dJTjMyKSAmJiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pKQogI2luY2x1ZGUgPG5ldGlu
ZXQvdWRwLmg+CiAjZW5kaWYKICNlbmRpZgogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCi0jZGVm
aW5lIEFQUExFX0ZJTEVfTk8gNgotI2VuZGlmCi0KIHZvaWQKIHNjdHBfYXVkaXRfcmV0cmFubWlz
c2lvbl9xdWV1ZShzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYykKIHsKQEAgLTM0OCw3ICsz
NDQsMTEgQEAgc2N0cF9maW5kX2FsdGVybmF0ZV9uZXQoc3RydWN0IHNjdHBfdGNiICpzdGNiLAog
CQkJCXJldHVybiAoTlVMTCk7CiAJCQl9CiAJCX0KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQlpZiAoYWx0LT5yby5yb19uaCA9PSBOVUxMKSB7
CisjZWxzZQogCQlpZiAoYWx0LT5yby5yb19ydCA9PSBOVUxMKSB7CisjZW5kaWYKIAkJCWlmIChh
bHQtPnJvLl9zX2FkZHIpIHsKIAkJCQlzY3RwX2ZyZWVfaWZhKGFsdC0+cm8uX3NfYWRkcik7CiAJ
CQkJYWx0LT5yby5fc19hZGRyID0gTlVMTDsKQEAgLTM1Niw3ICszNTYsMTEgQEAgc2N0cF9maW5k
X2FsdGVybmF0ZV9uZXQoc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkJYWx0LT5zcmNfYWRkcl9z
ZWxlY3RlZCA9IDA7CiAJCX0KIAkJaWYgKCgoYWx0LT5kZXN0X3N0YXRlICYgU0NUUF9BRERSX1JF
QUNIQUJMRSkgPT0gU0NUUF9BRERSX1JFQUNIQUJMRSkgJiYKKyNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQkgICAgKGFsdC0+cm8ucm9fbmggIT0g
TlVMTCkgJiYKKyNlbHNlCiAJCSAgICAoYWx0LT5yby5yb19ydCAhPSBOVUxMKSAmJgorI2VuZGlm
CiAJCSAgICAoIShhbHQtPmRlc3Rfc3RhdGUgJiBTQ1RQX0FERFJfVU5DT05GSVJNRUQpKSkgewog
CQkJLyogRm91bmQgYSByZWFjaGFibGUgYWRkcmVzcyAqLwogCQkJYnJlYWs7CkBAIC01MTcsNyAr
NTIxLDcgQEAgc2N0cF9tYXJrX2FsbF9mb3JfcmVzZW5kKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwK
IAl9CiAJdHYudHZfc2VjID0gY3VyX3J0byAvIDEwMDAwMDA7CiAJdHYudHZfdXNlYyA9IGN1cl9y
dG8gJSAxMDAwMDAwOwotI2lmbmRlZiBfX0ZyZWVCU0RfXworI2lmICEoZGVmaW5lZChfX0ZyZWVC
U0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAJdGltZXJzdWIoJm5vdywgJnR2LCAm
bWluX3dhaXQpOwogI2Vsc2UKIAltaW5fd2FpdCA9IG5vdzsKQEAgLTYxNCw3ICs2MTgsNyBAQCBz
Y3RwX21hcmtfYWxsX2Zvcl9yZXNlbmQoc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkJfQogCQkJ
aWYgKHN0Y2ItPmFzb2MucHJzY3RwX3N1cHBvcnRlZCAmJiBQUl9TQ1RQX1RUTF9FTkFCTEVEKGNo
ay0+ZmxhZ3MpKSB7CiAJCQkJLyogSXMgaXQgZXhwaXJlZD8gKi8KLSNpZm5kZWYgX19GcmVlQlNE
X18KKyNpZiAhKGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
KQogCQkJCWlmICh0aW1lcmNtcCgmbm93LCAmY2hrLT5yZWMuZGF0YS50aW1ldG9kcm9wLCA+KSkg
ewogI2Vsc2UKIAkJCQlpZiAodGltZXZhbGNtcCgmbm93LCAmY2hrLT5yZWMuZGF0YS50aW1ldG9k
cm9wLCA+KSkgewpAQCAtOTQyLDEwICs5NDYsMTQgQEAgc2N0cF90M3J4dF90aW1lcihzdHJ1Y3Qg
c2N0cF9pbnBjYiAqaW5wLAogCQluZXQtPnNyY19hZGRyX3NlbGVjdGVkID0gMDsKIAogCQkvKiBG
b3JjZSBhIHJvdXRlIGFsbG9jYXRpb24gdG9vICovCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJUk9fTkhGUkVFKCZuZXQtPnJvKTsKKyNlbHNl
CiAJCWlmIChuZXQtPnJvLnJvX3J0KSB7CiAJCQlSVEZSRUUobmV0LT5yby5yb19ydCk7CiAJCQlu
ZXQtPnJvLnJvX3J0ID0gTlVMTDsKIAkJfQorI2VuZGlmCiAKIAkJLyogV2FzIGl0IG91ciBwcmlt
YXJ5PyAqLwogCQlpZiAoKHN0Y2ItPmFzb2MucHJpbWFyeV9kZXN0aW5hdGlvbiA9PSBuZXQpICYm
IChhbHQgIT0gbmV0KSkgewpAQCAtOTY3LDcgKzk3NSw3IEBAIHNjdHBfdDNyeHRfdGltZXIoc3Ry
dWN0IHNjdHBfaW5wY2IgKmlucCwKIAkgKiBTcGVjaWFsIGNhc2UgZm9yIGNvb2tpZS1lY2hvJ2Vk
IGNhc2UsIHdlIGRvbid0IGRvIG91dHB1dCBidXQgbXVzdAogCSAqIGF3YWl0IHRoZSBDT09LSUUt
QUNLIGJlZm9yZSByZXRyYW5zbWlzc2lvbgogCSAqLwotCWlmIChTQ1RQX0dFVF9TVEFURSgmc3Rj
Yi0+YXNvYykgPT0gU0NUUF9TVEFURV9DT09LSUVfRUNIT0VEKSB7CisJaWYgKFNDVFBfR0VUX1NU
QVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCkgewogCQkvKgogCQkgKiBIZXJl
IHdlIGp1c3QgcmVzZXQgdGhlIHRpbWVyIGFuZCBzdGFydCBhZ2FpbiBzaW5jZSB3ZQogCQkgKiBo
YXZlIG5vdCBlc3RhYmxpc2hlZCB0aGUgYXNvYwpAQCAtOTgyLDcgKzk5MCwxMiBAQCBzY3RwX3Qz
cnh0X3RpbWVyKHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCS8qIEMzLiBTZWUgaWYgd2UgbmVl
ZCB0byBzZW5kIGEgRndkLVRTTiAqLwogCQlpZiAoU0NUUF9UU05fR1Qoc3RjYi0+YXNvYy5hZHZh
bmNlZF9wZWVyX2Fja19wb2ludCwgc3RjYi0+YXNvYy5sYXN0X2Fja2VkX3NlcSkpIHsKIAkJCXNl
bmRfZm9yd2FyZF90c24oc3RjYiwgJnN0Y2ItPmFzb2MpOwotCQkJaWYgKGxjaGspIHsKKwkJCWZv
ciAoOyBsY2hrICE9IE5VTEw7IGxjaGsgPSBUQUlMUV9ORVhUKGxjaGssIHNjdHBfbmV4dCkpIHsK
KwkJCQlpZiAobGNoay0+d2hvVG8gIT0gTlVMTCkgeworCQkJCQlicmVhazsKKwkJCQl9CisJCQl9
CisJCQlpZiAobGNoayAhPSBOVUxMKSB7CiAJCQkJLyogQXNzdXJlIGEgdGltZXIgaXMgdXAgKi8K
IAkJCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9TRU5ELCBzdGNiLT5zY3RwX2Vw
LCBzdGNiLCBsY2hrLT53aG9Ubyk7CiAJCQl9CkBAIC0xMDA5LDcgKzEwMjIsNyBAQCBzY3RwX3Qx
aW5pdF90aW1lcihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogCQlzY3RwX3NlbmRfaW5pdGlhdGUo
aW5wLCBzdGNiLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwogCQlyZXR1cm4gKDApOwogCX0KLQlpZiAo
U0NUUF9HRVRfU1RBVEUoKCZzdGNiLT5hc29jKSkgIT0gU0NUUF9TVEFURV9DT09LSUVfV0FJVCkg
eworCWlmIChTQ1RQX0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB7
CiAJCXJldHVybiAoMCk7CiAJfQogCWlmIChzY3RwX3RocmVzaG9sZF9tYW5hZ2VtZW50KGlucCwg
c3RjYiwgbmV0LApAQCAtMTA1Nyw3ICsxMDcwLDcgQEAgc2N0cF9jb29raWVfdGltZXIoc3RydWN0
IHNjdHBfaW5wY2IgKmlucCwKIAkJfQogCX0KIAlpZiAoY29va2llID09IE5VTEwpIHsKLQkJaWYg
KFNDVFBfR0VUX1NUQVRFKCZzdGNiLT5hc29jKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9FQ0hPRUQp
IHsKKwkJaWYgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9F
RCkgewogCQkJLyogRk9PQkFSISAqLwogCQkJc3RydWN0IG1idWYgKm9wX2VycjsKIApAQCAtMTA2
OSw3ICsxMDgyLDcgQEAgc2N0cF9jb29raWVfdGltZXIoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwK
ICNpZmRlZiBJTlZBUklBTlRTCiAJCQlwYW5pYygiQ29va2llIHRpbWVyIGV4cGlyZXMgaW4gd3Jv
bmcgc3RhdGU/Iik7CiAjZWxzZQotCQkJU0NUUF9QUklOVEYoIlN0cmFuZ2UgaW4gc3RhdGUgJWQg
bm90IGNvb2tpZS1lY2hvZWQgeWV0IGMtZSB0aW1lciBleHBpcmVzP1xuIiwgU0NUUF9HRVRfU1RB
VEUoJnN0Y2ItPmFzb2MpKTsKKwkJCVNDVFBfUFJJTlRGKCJTdHJhbmdlIGluIHN0YXRlICVkIG5v
dCBjb29raWUtZWNob2VkIHlldCBjLWUgdGltZXIgZXhwaXJlcz9cbiIsIFNDVFBfR0VUX1NUQVRF
KHN0Y2IpKTsKIAkJCXJldHVybiAoMCk7CiAjZW5kaWYKIAkJfQpAQCAtMTEwOCwxMCArMTEyMSw5
IEBAIHNjdHBfY29va2llX3RpbWVyKHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiB9CiAKIGludAot
c2N0cF9zdHJyZXNldF90aW1lcihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90
Y2IgKnN0Y2IsCi0gICAgc3RydWN0IHNjdHBfbmV0cyAqbmV0KQorc2N0cF9zdHJyZXNldF90aW1l
cihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IpCiB7Ci0Jc3Ry
dWN0IHNjdHBfbmV0cyAqYWx0OworCXN0cnVjdCBzY3RwX25ldHMgKmFsdCwgKm5ldDsKIAlzdHJ1
Y3Qgc2N0cF90bWl0X2NodW5rICpzdHJyc3QgPSBOVUxMLCAqY2hrID0gTlVMTDsKIAogCWlmIChz
dGNiLT5hc29jLnN0cmVhbV9yZXNldF9vdXRzdGFuZGluZyA9PSAwKSB7CkBAIC0xMTIyLDkgKzEx
MzQsOSBAQCBzY3RwX3N0cnJlc2V0X3RpbWVyKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVj
dCBzY3RwX3RjYiAqc3RjYiwKIAlpZiAoc3RycnN0ID09IE5VTEwpIHsKIAkJcmV0dXJuICgwKTsK
IAl9CisJbmV0ID0gc3RycnN0LT53aG9UbzsKIAkvKiBkbyB0aHJlc2hvbGQgbWFuYWdlbWVudCAq
LwotCWlmIChzY3RwX3RocmVzaG9sZF9tYW5hZ2VtZW50KGlucCwgc3RjYiwgc3RycnN0LT53aG9U
bywKLQkgICAgc3RjYi0+YXNvYy5tYXhfc2VuZF90aW1lcykpIHsKKwlpZiAoc2N0cF90aHJlc2hv
bGRfbWFuYWdlbWVudChpbnAsIHN0Y2IsIG5ldCwgc3RjYi0+YXNvYy5tYXhfc2VuZF90aW1lcykp
IHsKIAkJLyogQXNzb2MgaXMgb3ZlciAqLwogCQlyZXR1cm4gKDEpOwogCX0KQEAgLTExMzIsOSAr
MTE0NCw4IEBAIHNjdHBfc3RycmVzZXRfdGltZXIoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3Ry
dWN0IHNjdHBfdGNiICpzdGNiLAogCSAqIENsZWFyZWQgdGhyZXNob2xkIG1hbmFnZW1lbnQsIG5v
dyBsZXRzIGJhY2tvZmYgdGhlIGFkZHJlc3MKIAkgKiBhbmQgc2VsZWN0IGFuIGFsdGVybmF0ZQog
CSAqLwotCXNjdHBfYmFja29mZl9vbl90aW1lb3V0KHN0Y2IsIHN0cnJzdC0+d2hvVG8sIDEsIDAs
IDApOwotCWFsdCA9IHNjdHBfZmluZF9hbHRlcm5hdGVfbmV0KHN0Y2IsIHN0cnJzdC0+d2hvVG8s
IDApOwotCXNjdHBfZnJlZV9yZW1vdGVfYWRkcihzdHJyc3QtPndob1RvKTsKKwlzY3RwX2JhY2tv
ZmZfb25fdGltZW91dChzdGNiLCBuZXQsIDEsIDAsIDApOworCWFsdCA9IHNjdHBfZmluZF9hbHRl
cm5hdGVfbmV0KHN0Y2IsIG5ldCwgMCk7CiAJc3RycnN0LT53aG9UbyA9IGFsdDsKIAlhdG9taWNf
YWRkX2ludCgmYWx0LT5yZWZfY291bnQsIDEpOwogCkBAIC0xMTU5LDYgKzExNzAsOCBAQCBzY3Rw
X3N0cnJlc2V0X3RpbWVyKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAq
c3RjYiwKIAkJICovCiAJCXNjdHBfbW92ZV9jaHVua3NfZnJvbV9uZXQoc3RjYiwgbmV0KTsKIAl9
CisJc2N0cF9mcmVlX3JlbW90ZV9hZGRyKG5ldCk7CisKIAkvKiBtYXJrIHRoZSByZXRyYW4gaW5m
byAqLwogCWlmIChzdHJyc3QtPnNlbnQgIT0gU0NUUF9EQVRBR1JBTV9SRVNFTkQpCiAJCXNjdHBf
dWNvdW50X2luY3Ioc3RjYi0+YXNvYy5zZW50X3F1ZXVlX3JldHJhbl9jbnQpOwpAQCAtMTE2Niw3
ICsxMTc5LDcgQEAgc2N0cF9zdHJyZXNldF90aW1lcihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBz
dHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJc3RycnN0LT5mbGFncyB8PSBDSFVOS19GTEFHU19GUkFH
TUVOVF9PSzsKIAogCS8qIHJlc3RhcnQgdGhlIHRpbWVyICovCi0Jc2N0cF90aW1lcl9zdGFydChT
Q1RQX1RJTUVSX1RZUEVfU1RSUkVTRVQsIGlucCwgc3RjYiwgc3RycnN0LT53aG9Ubyk7CisJc2N0
cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfU1RSUkVTRVQsIGlucCwgc3RjYiwgYWx0KTsK
IAlyZXR1cm4gKDApOwogfQogCkBAIC0xMTkxLDggKzEyMDQsOSBAQCBzY3RwX2FzY29uZl90aW1l
cihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCWlmIChh
c2NvbmYgPT0gTlVMTCkgewogCQkJcmV0dXJuICgwKTsKIAkJfQorCQluZXQgPSBhc2NvbmYtPndo
b1RvOwogCQkvKiBkbyB0aHJlc2hvbGQgbWFuYWdlbWVudCAqLwotCQlpZiAoc2N0cF90aHJlc2hv
bGRfbWFuYWdlbWVudChpbnAsIHN0Y2IsIGFzY29uZi0+d2hvVG8sCisJCWlmIChzY3RwX3RocmVz
aG9sZF9tYW5hZ2VtZW50KGlucCwgc3RjYiwgbmV0LAogCQkgICAgc3RjYi0+YXNvYy5tYXhfc2Vu
ZF90aW1lcykpIHsKIAkJCS8qIEFzc29jIGlzIG92ZXIgKi8KIAkJCXJldHVybiAoMSk7CkBAIC0x
MjA1LDE3ICsxMjE5LDE2IEBAIHNjdHBfYXNjb25mX3RpbWVyKHN0cnVjdCBzY3RwX2lucGNiICpp
bnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJCSAqIE1hcmsgdGhpcyBwZWVyIGFzIEFTQ09O
RiBpbmNhcGFibGUgYW5kIGNsZWFudXAuCiAJCQkgKi8KIAkJCVNDVFBEQkcoU0NUUF9ERUJVR19U
SU1FUjEsICJhc2NvbmZfdGltZXI6IFBlZXIgaGFzIG5vdCByZXNwb25kZWQgdG8gb3VyIHJlcGVh
dGVkIEFTQ09ORnNcbiIpOwotCQkJc2N0cF9hc2NvbmZfY2xlYW51cChzdGNiLCBuZXQpOworCQkJ
c2N0cF9hc2NvbmZfY2xlYW51cChzdGNiKTsKIAkJCXJldHVybiAoMCk7CiAJCX0KIAkJLyoKIAkJ
ICogY2xlYXJlZCB0aHJlc2hvbGQgbWFuYWdlbWVudCwgc28gbm93IGJhY2tvZmYgdGhlIG5ldCBh
bmQKIAkJICogc2VsZWN0IGFuIGFsdGVybmF0ZQogCQkgKi8KLQkJc2N0cF9iYWNrb2ZmX29uX3Rp
bWVvdXQoc3RjYiwgYXNjb25mLT53aG9UbywgMSwgMCwgMCk7Ci0JCWFsdCA9IHNjdHBfZmluZF9h
bHRlcm5hdGVfbmV0KHN0Y2IsIGFzY29uZi0+d2hvVG8sIDApOworCQlzY3RwX2JhY2tvZmZfb25f
dGltZW91dChzdGNiLCBuZXQsIDEsIDAsIDApOworCQlhbHQgPSBzY3RwX2ZpbmRfYWx0ZXJuYXRl
X25ldChzdGNiLCBuZXQsIDApOwogCQlpZiAoYXNjb25mLT53aG9UbyAhPSBhbHQpIHsKLQkJCXNj
dHBfZnJlZV9yZW1vdGVfYWRkcihhc2NvbmYtPndob1RvKTsKIAkJCWFzY29uZi0+d2hvVG8gPSBh
bHQ7CiAJCQlhdG9taWNfYWRkX2ludCgmYWx0LT5yZWZfY291bnQsIDEpOwogCQl9CkBAIC0xMjUy
LDYgKzEyNjUsOCBAQCBzY3RwX2FzY29uZl90aW1lcihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBz
dHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCQkgKi8KIAkJCXNjdHBfbW92ZV9jaHVua3NfZnJvbV9u
ZXQoc3RjYiwgbmV0KTsKIAkJfQorCQlzY3RwX2ZyZWVfcmVtb3RlX2FkZHIobmV0KTsKKwogCQkv
KiBtYXJrIHRoZSByZXRyYW4gaW5mbyAqLwogCQlpZiAoYXNjb25mLT5zZW50ICE9IFNDVFBfREFU
QUdSQU1fUkVTRU5EKQogCQkJc2N0cF91Y291bnRfaW5jcihzdGNiLT5hc29jLnNlbnRfcXVldWVf
cmV0cmFuX2NudCk7CkBAIC0xMjY2LDggKzEyODEsNyBAQCBzY3RwX2FzY29uZl90aW1lcihzdHJ1
Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAKIC8qIE1vYmlsaXR5
IGFkYXB0YXRpb24gKi8KIHZvaWQKLXNjdHBfZGVsZXRlX3ByaW1fdGltZXIoc3RydWN0IHNjdHBf
aW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAotICAgICAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQgU0NUUF9VTlVTRUQpCitzY3RwX2RlbGV0ZV9wcmltX3Rp
bWVyKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYikKIHsKIAlp
ZiAoc3RjYi0+YXNvYy5kZWxldGVkX3ByaW1hcnkgPT0gTlVMTCkgewogCQlTQ1RQREJHKFNDVFBf
REVCVUdfQVNDT05GMSwgImRlbGV0ZV9wcmltX3RpbWVyOiBkZWxldGVkX3ByaW1hcnkgaXMgbm90
IHN0b3JlZC4uLlxuIik7CkBAIC0xNDQxLDcgKzE0NTUsNyBAQCBzY3RwX2hlYXJ0YmVhdF90aW1l
cihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAKIAkJaWYg
KChuZXQtPmxhc3Rfc2VudF90aW1lLnR2X3NlYyA+IDApIHx8CiAJCSAgICAobmV0LT5sYXN0X3Nl
bnRfdGltZS50dl91c2VjID4gMCkpIHsKLSNpZmRlZiBfX0ZyZWVCU0RfXworI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQlzdHJ1Y3QgdGltZXZh
bCBkaWZmOwogCiAJCQlTQ1RQX0dFVFRJTUVfVElNRVZBTCgmZGlmZik7CkBAIC0xNDg3LDcgKzE1
MDEsNyBAQCBzY3RwX3BhdGhtdHVfdGltZXIoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJCQlp
ZiAobmV0LT5yby5fbF9hZGRyLnNhLnNhX2ZhbWlseSA9PSBBRl9JTkVUNikgewogCQkJCQlzdHJ1
Y3Qgc29ja2FkZHJfaW42ICpzaW42ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKikmbmV0LT5yby5f
bF9hZGRyOwogCQkJCQkvKiBLQU1FIGhhY2s6IGVtYmVkIHNjb3BlaWQgKi8KLSNpZiBkZWZpbmVk
KF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKICNpZiBkZWZpbmVkKEFQUExFX0xFT1BBUkQpIHx8IGRlZmluZWQoQVBQTEVfU05PV0xF
T1BBUkQpCiAJCQkJCSh2b2lkKWluNl9lbWJlZHNjb3BlKCZzaW42LT5zaW42X2FkZHIsIHNpbjYs
IE5VTEwsIE5VTEwpOwogI2Vsc2UKQEAgLTE1MjAsNyArMTUzNCwxMSBAQCBzY3RwX3BhdGhtdHVf
dGltZXIoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJCQluZXQtPnNyY19hZGRyX3NlbGVjdGVk
ID0gMTsKIAkJfQogCQlpZiAobmV0LT5yby5fc19hZGRyKSB7CisjaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJCW10dSA9IFNDVFBfR0FUSEVSX01U
VV9GUk9NX1JPVVRFKG5ldC0+cm8uX3NfYWRkciwgJm5ldC0+cm8uX3NfYWRkci5zYSwgbmV0LT5y
by5yb19uaCk7CisjZWxzZQogCQkJbXR1ID0gU0NUUF9HQVRIRVJfTVRVX0ZST01fUk9VVEUobmV0
LT5yby5fc19hZGRyLCAmbmV0LT5yby5fc19hZGRyLnNhLCBuZXQtPnJvLnJvX3J0KTsKKyNlbmRp
ZgogI2lmIGRlZmluZWQoSU5FVCkgfHwgZGVmaW5lZChJTkVUNikKIAkJCWlmIChuZXQtPnBvcnQp
IHsKIAkJCQltdHUgLT0gc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpOwpAQCAtMTUzOCwxNiArMTU1Niwx
NCBAQCBzY3RwX3BhdGhtdHVfdGltZXIoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIH0KIAogdm9p
ZAotc2N0cF9hdXRvY2xvc2VfdGltZXIoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKLSAgICBzdHJ1
Y3Qgc2N0cF90Y2IgKnN0Y2IsCi0gICAgc3RydWN0IHNjdHBfbmV0cyAqbmV0KQorc2N0cF9hdXRv
Y2xvc2VfdGltZXIoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNi
KQogewogCXN0cnVjdCB0aW1ldmFsIHRuLCAqdGltX3RvdXNlOwogCXN0cnVjdCBzY3RwX2Fzc29j
aWF0aW9uICphc29jOwotCWludCB0aWNrc19nb25lX2J5OworCXVpbnQzMl90IHRpY2tzX2dvbmVf
Ynk7CiAKIAkodm9pZClTQ1RQX0dFVFRJTUVfVElNRVZBTCgmdG4pOwotCWlmIChzdGNiLT5hc29j
LnNjdHBfYXV0b2Nsb3NlX3RpY2tzICYmCisJaWYgKHN0Y2ItPmFzb2Muc2N0cF9hdXRvY2xvc2Vf
dGlja3MgPiAwICYmCiAJICAgIHNjdHBfaXNfZmVhdHVyZV9vbihpbnAsIFNDVFBfUENCX0ZMQUdT
X0FVVE9DTE9TRSkpIHsKIAkJLyogQXV0byBjbG9zZSBpcyBvbiAqLwogCQlhc29jID0gJnN0Y2It
PmFzb2M7CkBAIC0xNTU5LDkgKzE1NzUsOCBAQCBzY3RwX2F1dG9jbG9zZV90aW1lcihzdHJ1Y3Qg
c2N0cF9pbnBjYiAqaW5wLAogCQkJdGltX3RvdXNlID0gJmFzb2MtPnRpbWVfbGFzdF9zZW50Owog
CQl9CiAJCS8qIE5vdyBoYXMgbG9uZyBlbm91Z2ggdHJhbnNwaXJlZCB0byBhdXRvY2xvc2U/ICov
Ci0JCXRpY2tzX2dvbmVfYnkgPSBTRUNfVE9fVElDS1ModG4udHZfc2VjIC0gdGltX3RvdXNlLT50
dl9zZWMpOwotCQlpZiAoKHRpY2tzX2dvbmVfYnkgPiAwKSAmJgotCQkgICAgKHRpY2tzX2dvbmVf
YnkgPj0gKGludClhc29jLT5zY3RwX2F1dG9jbG9zZV90aWNrcykpIHsKKwkJdGlja3NfZ29uZV9i
eSA9IHNjdHBfc2Vjc190b190aWNrcygodWludDMyX3QpKHRuLnR2X3NlYyAtIHRpbV90b3VzZS0+
dHZfc2VjKSk7CisJCWlmICh0aWNrc19nb25lX2J5ID49IGFzb2MtPnNjdHBfYXV0b2Nsb3NlX3Rp
Y2tzKSB7CiAJCQkvKgogCQkJICogYXV0b2Nsb3NlIHRpbWUgaGFzIGhpdCwgY2FsbCB0aGUgb3V0
cHV0IHJvdXRpbmUsCiAJCQkgKiB3aGljaCBzaG91bGQgZG8gbm90aGluZyBqdXN0IHRvIGJlIFNV
UkUgd2UgZG9uJ3QKQEAgLTE1NzcsMjkgKzE1OTIsMjYgQEAgc2N0cF9hdXRvY2xvc2VfdGltZXIo
c3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJCQkgKiB0aGVyZSBpcyBub3RoaW5nIHF1ZXVlZCB0
byBzZW5kLCBzbyBJJ20KIAkJCQkgKiBkb25lLi4uCiAJCQkJICovCi0JCQkJaWYgKFNDVFBfR0VU
X1NUQVRFKGFzb2MpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCkgeworCQkJCWlmIChTQ1RQ
X0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpIHsKIAkJCQkJLyog
b25seSBzZW5kIFNIVVRET1dOIDFzdCB0aW1lIHRocnUgKi8KLQkJCQkJc3RydWN0IHNjdHBfbmV0
cyAqbmV0cDsKKwkJCQkJc3RydWN0IHNjdHBfbmV0cyAqbmV0OwogCi0JCQkJCWlmICgoU0NUUF9H
RVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9PUEVOKSB8fAotCQkJCQkgICAgKFNDVFBfR0VU
X1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpKSB7CisJCQkJCWlm
ICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9PUEVOKSB8fAorCQkJCQkgICAg
KFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpKSB7
CiAJCQkJCQlTQ1RQX1NUQVRfREVDUl9HQVVHRTMyKHNjdHBzX2N1cnJlc3RhYik7CiAJCQkJCX0K
LQkJCQkJU0NUUF9TRVRfU1RBVEUoYXNvYywgU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKTsKLQkJ
CQkJU0NUUF9DTEVBUl9TVUJTVEFURShhc29jLCBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJTkcp
OworCQkJCQlTQ1RQX1NFVF9TVEFURShzdGNiLCBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpOwog
CQkJCQlzY3RwX3N0b3BfdGltZXJzX2Zvcl9zaHV0ZG93bihzdGNiKTsKIAkJCQkJaWYgKHN0Y2It
PmFzb2MuYWx0ZXJuYXRlKSB7Ci0JCQkJCQluZXRwID0gc3RjYi0+YXNvYy5hbHRlcm5hdGU7CisJ
CQkJCQluZXQgPSBzdGNiLT5hc29jLmFsdGVybmF0ZTsKIAkJCQkJfSBlbHNlIHsKLQkJCQkJCW5l
dHAgPSBzdGNiLT5hc29jLnByaW1hcnlfZGVzdGluYXRpb247CisJCQkJCQluZXQgPSBzdGNiLT5h
c29jLnByaW1hcnlfZGVzdGluYXRpb247CiAJCQkJCX0KLQkJCQkJc2N0cF9zZW5kX3NodXRkb3du
KHN0Y2IsIG5ldHApOworCQkJCQlzY3RwX3NlbmRfc2h1dGRvd24oc3RjYiwgbmV0KTsKIAkJCQkJ
c2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfU0hVVERPV04sCi0JCQkJCQkJIHN0Y2It
PnNjdHBfZXAsIHN0Y2IsCi0JCQkJCQkJIG5ldHApOworCQkJCQkJCSBzdGNiLT5zY3RwX2VwLCBz
dGNiLCBuZXQpOwogCQkJCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9TSFVURE9X
TkdVQVJELAotCQkJCQkJCSBzdGNiLT5zY3RwX2VwLCBzdGNiLAotCQkJCQkJCSBuZXRwKTsKKwkJ
CQkJCQkgc3RjYi0+c2N0cF9lcCwgc3RjYiwgTlVMTCk7CiAJCQkJfQogCQkJfQogCQl9IGVsc2Ug
ewpAQCAtMTYwNywxMyArMTYxOSwxMiBAQCBzY3RwX2F1dG9jbG9zZV90aW1lcihzdHJ1Y3Qgc2N0
cF9pbnBjYiAqaW5wLAogCQkJICogTm8gYXV0byBjbG9zZSBhdCB0aGlzIHRpbWUsIHJlc2V0IHQt
byB0byBjaGVjawogCQkJICogbGF0ZXIKIAkJCSAqLwotCQkJaW50IHRtcDsKKwkJCXVpbnQzMl90
IHRtcDsKIAogCQkJLyogZm9vbCB0aGUgdGltZXIgc3RhcnR1cCB0byB1c2UgdGhlIHRpbWUgbGVm
dCAqLwogCQkJdG1wID0gYXNvYy0+c2N0cF9hdXRvY2xvc2VfdGlja3M7CiAJCQlhc29jLT5zY3Rw
X2F1dG9jbG9zZV90aWNrcyAtPSB0aWNrc19nb25lX2J5OwotCQkJc2N0cF90aW1lcl9zdGFydChT
Q1RQX1RJTUVSX1RZUEVfQVVUT0NMT1NFLCBpbnAsIHN0Y2IsCi0JCQkgICAgbmV0KTsKKwkJCXNj
dHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX0FVVE9DTE9TRSwgaW5wLCBzdGNiLCBOVUxM
KTsKIAkJCS8qIHJlc3RvcmUgdGhlIHJlYWwgdGljayB2YWx1ZSAqLwogCQkJYXNvYy0+c2N0cF9h
dXRvY2xvc2VfdGlja3MgPSB0bXA7CiAJCX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBs
aWIvbmV0aW5ldC9zY3RwX3RpbWVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0
cF90aW1lci5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggODIyZDViNDAw
N2JhNmNiYzY2ZmQ3NTg1NjZlM2Q5YzY5N2E3NmM1Ni4uZWUxYzQ5MzA4MWVlNDY0OGY4ZDUzODdi
NDVlYWQwZjhlMjBmYTRkNwotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF90
aW1lci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3RpbWVyLmgKQEAg
LTMyLDkgKzMyLDkgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jaWZkZWYgX19GcmVlQlNEX18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVl
QlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfdGltZXIuaCAyOTU3MDkgMjAxNi0wMi0xNyAxODow
NDoyMlogdHVleGVuICQiKTsKK19fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9z
Y3RwX3RpbWVyLmggMzU5MTk1IDIwMjAtMDMtMjEgMTY6MTI6MTlaIHR1ZXhlbiAkIik7CiAjZW5k
aWYKIAogI2lmbmRlZiBfTkVUSU5FVF9TQ1RQX1RJTUVSX0hfCkBAIC00NiwxOCArNDYsMjAgQEAg
X19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfdGltZXIuaCAyOTU3MDkg
MjAxNi0wMi0xNyAxODowNDoyMlogdHUKICNkZWZpbmUgU0NUUF9SVFRfVkFSX1NISUZUIDIKIAog
c3RydWN0IHNjdHBfbmV0cyAqCi1zY3RwX2ZpbmRfYWx0ZXJuYXRlX25ldChzdHJ1Y3Qgc2N0cF90
Y2IgKiwKLSAgICBzdHJ1Y3Qgc2N0cF9uZXRzICosIGludCBtb2RlKTsKK3NjdHBfZmluZF9hbHRl
cm5hdGVfbmV0KHN0cnVjdCBzY3RwX3RjYiAqLCBzdHJ1Y3Qgc2N0cF9uZXRzICosIGludCk7CiAK
IGludAogc2N0cF90M3J4dF90aW1lcihzdHJ1Y3Qgc2N0cF9pbnBjYiAqLCBzdHJ1Y3Qgc2N0cF90
Y2IgKiwKICAgICBzdHJ1Y3Qgc2N0cF9uZXRzICopOworCiBpbnQKIHNjdHBfdDFpbml0X3RpbWVy
KHN0cnVjdCBzY3RwX2lucGNiICosIHN0cnVjdCBzY3RwX3RjYiAqLAogICAgIHN0cnVjdCBzY3Rw
X25ldHMgKik7CisKIGludAogc2N0cF9zaHV0ZG93bl90aW1lcihzdHJ1Y3Qgc2N0cF9pbnBjYiAq
LCBzdHJ1Y3Qgc2N0cF90Y2IgKiwKICAgICBzdHJ1Y3Qgc2N0cF9uZXRzICopOworCiBpbnQKIHNj
dHBfaGVhcnRiZWF0X3RpbWVyKHN0cnVjdCBzY3RwX2lucGNiICosIHN0cnVjdCBzY3RwX3RjYiAq
LAogICAgIHN0cnVjdCBzY3RwX25ldHMgKik7CkBAIC03NCwyNiArNzYsMjMgQEAgaW50CiBzY3Rw
X3NodXRkb3duYWNrX3RpbWVyKHN0cnVjdCBzY3RwX2lucGNiICosIHN0cnVjdCBzY3RwX3RjYiAq
LAogICAgIHN0cnVjdCBzY3RwX25ldHMgKik7CiBpbnQKLXNjdHBfc3RycmVzZXRfdGltZXIoc3Ry
dWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAotICAgIHN0cnVjdCBz
Y3RwX25ldHMgKm5ldCk7CitzY3RwX3N0cnJlc2V0X3RpbWVyKHN0cnVjdCBzY3RwX2lucGNiICos
IHN0cnVjdCBzY3RwX3RjYiAqKTsKIAogaW50CiBzY3RwX2FzY29uZl90aW1lcihzdHJ1Y3Qgc2N0
cF9pbnBjYiAqLCBzdHJ1Y3Qgc2N0cF90Y2IgKiwKICAgICBzdHJ1Y3Qgc2N0cF9uZXRzICopOwog
CiB2b2lkCi1zY3RwX2RlbGV0ZV9wcmltX3RpbWVyKHN0cnVjdCBzY3RwX2lucGNiICosIHN0cnVj
dCBzY3RwX3RjYiAqLAotICAgIHN0cnVjdCBzY3RwX25ldHMgKik7CitzY3RwX2RlbGV0ZV9wcmlt
X3RpbWVyKHN0cnVjdCBzY3RwX2lucGNiICosIHN0cnVjdCBzY3RwX3RjYiAqKTsKIAogdm9pZAot
c2N0cF9hdXRvY2xvc2VfdGltZXIoc3RydWN0IHNjdHBfaW5wY2IgKiwgc3RydWN0IHNjdHBfdGNi
ICosCi0gICAgc3RydWN0IHNjdHBfbmV0cyAqbmV0KTsKK3NjdHBfYXV0b2Nsb3NlX3RpbWVyKHN0
cnVjdCBzY3RwX2lucGNiICosIHN0cnVjdCBzY3RwX3RjYiAqKTsKIAogdm9pZCBzY3RwX2F1ZGl0
X3JldHJhbm1pc3Npb25fcXVldWUoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKik7CiAKIHZvaWQg
c2N0cF9pdGVyYXRvcl90aW1lcihzdHJ1Y3Qgc2N0cF9pdGVyYXRvciAqaXQpOwogCi0jaWYgZGVm
aW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAjaWYgZGVmaW5lZChBUFBMRV9MRU9QQVJEKSB8fCBkZWZpbmVkKEFQUExFX1NO
T1dMRU9QQVJEKSB8fCBkZWZpbmVkKEFQUExFX0xJT04pIHx8IGRlZmluZWQoQVBQTEVfTU9VTlRB
SU5MSU9OKQogdm9pZCBzY3RwX3Nsb3d0aW1vKHZvaWQpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3Jz
Y3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3Vpby5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxp
Yi9uZXRpbmV0L3NjdHBfdWlvLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRl
eCA5ZDMxYWExNTkwYTAzMGM4MWQwMmNhYmJmMGZjYmI1YjZlYjAxYTM2Li42Mjk4ZjkzMzRhNTBl
Y2I3ZDI0M2FjNGQ0ZWFiMDczMWU0MzljY2RjCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0
aW5ldC9zY3RwX3Vpby5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3Vp
by5oCkBAIC0zMiwyOSArMzIsMjkgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi0jaWZkZWYgX19GcmVlQlNEX18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNE
SUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfdWlvLmggMzI2NjcyIDIwMTctMTIt
MDcgMjI6MTk6MDhaIHR1ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25l
dGluZXQvc2N0cF91aW8uaCAzNjI0NzMgMjAyMC0wNi0yMSAyMzoxMjo1NlogdHVleGVuICQiKTsK
ICNlbmRpZgogCiAjaWZuZGVmIF9ORVRJTkVUX1NDVFBfVUlPX0hfCiAjZGVmaW5lIF9ORVRJTkVU
X1NDVFBfVUlPX0hfCiAKLSNpZiAoZGVmaW5lZChfX0FQUExFX18pICYmIGRlZmluZWQoS0VSTkVM
KSkKKyNpZiAoZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pICYm
IGRlZmluZWQoS0VSTkVMKSkKICNpZm5kZWYgX0tFUk5FTAogI2RlZmluZSBfS0VSTkVMCiAjZW5k
aWYKICNlbmRpZgogCi0jaWYgIShkZWZpbmVkKF9fV2luZG93c19fKSkgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2Vfb3NfV2luZG93cykKLSNpZiAhIGRlZmluZWQoX0tFUk5FTCkKKyNpZiAhZGVmaW5l
ZChfV0lOMzIpCisjaWYgIWRlZmluZWQoX0tFUk5FTCkKICNpbmNsdWRlIDxzdGRpbnQuaD4KICNl
bmRpZgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KICNp
bmNsdWRlIDxuZXRpbmV0L2luLmg+CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fV2luZG93c19fKQor
I2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI3ByYWdtYSB3
YXJuaW5nKHB1c2gpCiAjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDIwMCkKICNpZiBkZWZpbmVk
KF9LRVJORUwpCkBAIC0xMTAsMTQgKzExMCw4IEBAIHN0cnVjdCBzY3RwX2V2ZW50X3N1YnNjcmli
ZSB7CiAgKiBhbmNpbGxhcnkgZGF0YSBzdHJ1Y3R1cmVzCiAgKi8KIHN0cnVjdCBzY3RwX2luaXRt
c2cgewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uIDwgODAw
MDAwCi0JLyogVGhpcyBpcyBhIGJ1Zy4gTm90IGZpeGVkIGZvciBBQkkgY29tcGF0aWJpbGl0eSAq
LwotCXVpbnQzMl90IHNpbml0X251bV9vc3RyZWFtczsKLQl1aW50MzJfdCBzaW5pdF9tYXhfaW5z
dHJlYW1zOwotI2Vsc2UKIAl1aW50MTZfdCBzaW5pdF9udW1fb3N0cmVhbXM7CiAJdWludDE2X3Qg
c2luaXRfbWF4X2luc3RyZWFtczsKLSNlbmRpZgogCXVpbnQxNl90IHNpbml0X21heF9hdHRlbXB0
czsKIAl1aW50MTZfdCBzaW5pdF9tYXhfaW5pdF90aW1lbzsKIH07CkBAIC0xNDMsOSArMTM3LDYg
QEAgc3RydWN0IHNjdHBfc25kcmN2aW5mbyB7CiAJdWludDE2X3Qgc2luZm9fc3RyZWFtOwogCXVp
bnQxNl90IHNpbmZvX3NzbjsKIAl1aW50MTZfdCBzaW5mb19mbGFnczsKLSNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA8IDgwMDAwMAotCXVpbnQxNl90IHNpbmZv
X3ByX3BvbGljeTsKLSNlbmRpZgogCXVpbnQzMl90IHNpbmZvX3BwaWQ7CiAJdWludDMyX3Qgc2lu
Zm9fY29udGV4dDsKIAl1aW50MzJfdCBzaW5mb190aW1ldG9saXZlOwpAQCAtMTYxLDkgKzE1Miw2
IEBAIHN0cnVjdCBzY3RwX2V4dHJjdmluZm8gewogCXVpbnQxNl90IHNpbmZvX3N0cmVhbTsKIAl1
aW50MTZfdCBzaW5mb19zc247CiAJdWludDE2X3Qgc2luZm9fZmxhZ3M7Ci0jaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPCA4MDAwMDAKLQl1aW50MTZfdCBzaW5m
b19wcl9wb2xpY3k7Ci0jZW5kaWYKIAl1aW50MzJfdCBzaW5mb19wcGlkOwogCXVpbnQzMl90IHNp
bmZvX2NvbnRleHQ7CiAJdWludDMyX3Qgc2luZm9fdGltZXRvbGl2ZTsgLyogc2hvdWxkIGhhdmUg
YmVlbiBzaW5mb19wcl92YWx1ZSAqLwpAQCAtNjYyLDEwICs2NTAsMTggQEAgc3RydWN0IHNjdHBf
c2V0cGVlcnByaW0gewogCXVpbnQ4X3Qgc3NwcF9wYWRkaW5nWzRdOwogfTsKIAordW5pb24gc2N0
cF9zb2Nrc3RvcmUgeworCXN0cnVjdCBzb2NrYWRkcl9pbiBzaW47CisJc3RydWN0IHNvY2thZGRy
X2luNiBzaW42OworI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwlzdHJ1Y3Qgc29ja2FkZHJf
Y29ubiBzY29ubjsKKyNlbmRpZgorCXN0cnVjdCBzb2NrYWRkciBzYTsKK307CisKIHN0cnVjdCBz
Y3RwX2dldGFkZHJlc3NlcyB7CiAJc2N0cF9hc3NvY190IHNnZXRfYXNzb2NfaWQ7Ci0JLyogYWRk
ciBpcyBmaWxsZWQgaW4gZm9yIE4gKiBzb2NrYWRkcl9zdG9yYWdlICovCi0Jc3RydWN0IHNvY2th
ZGRyIGFkZHJbMV07CisJdW5pb24gc2N0cF9zb2Nrc3RvcmUgYWRkcltdOwogfTsKIAogc3RydWN0
IHNjdHBfc3RhdHVzIHsKQEAgLTExMjEsMTMgKzExMTcsMTggQEAgc3RydWN0IHNjdHBzdGF0IHsK
IAogI2RlZmluZSBTQ1RQX1NUQVRfSU5DUihfeCkgU0NUUF9TVEFUX0lOQ1JfQlkoX3gsMSkKICNk
ZWZpbmUgU0NUUF9TVEFUX0RFQ1IoX3gpIFNDVFBfU1RBVF9ERUNSX0JZKF94LDEpCi0jaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgZGVmaW5lZChTTVApICYmIGRlZmluZWQoU0NUUF9VU0VfUEVS
Q1BVX1NUQVQpCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKKyNpZiBkZWZpbmVkKFNNUCkgJiYgZGVmaW5lZChTQ1RQX1VTRV9QRVJDUFVfU1RBVCkK
ICNkZWZpbmUgU0NUUF9TVEFUX0lOQ1JfQlkoX3gsX2QpIChTQ1RQX0JBU0VfU1RBVFNbUENQVV9H
RVQoY3B1aWQpXS5feCArPSBfZCkKICNkZWZpbmUgU0NUUF9TVEFUX0RFQ1JfQlkoX3gsX2QpIChT
Q1RQX0JBU0VfU1RBVFNbUENQVV9HRVQoY3B1aWQpXS5feCAtPSBfZCkKICNlbHNlCiAjZGVmaW5l
IFNDVFBfU1RBVF9JTkNSX0JZKF94LF9kKSBhdG9taWNfYWRkX2ludCgmU0NUUF9CQVNFX1NUQVQo
X3gpLCBfZCkKICNkZWZpbmUgU0NUUF9TVEFUX0RFQ1JfQlkoX3gsX2QpIGF0b21pY19zdWJ0cmFj
dF9pbnQoJlNDVFBfQkFTRV9TVEFUKF94KSwgX2QpCiAjZW5kaWYKKyNlbHNlCisjZGVmaW5lIFND
VFBfU1RBVF9JTkNSX0JZKF94LF9kKSBhdG9taWNfYWRkX2ludCgmU0NUUF9CQVNFX1NUQVQoX3gp
LCBfZCkKKyNkZWZpbmUgU0NUUF9TVEFUX0RFQ1JfQlkoX3gsX2QpIGF0b21pY19zdWJ0cmFjdF9p
bnQoJlNDVFBfQkFTRV9TVEFUKF94KSwgX2QpCisjZW5kaWYKIC8qIFRoZSBmb2xsb3dpbmcgbWFj
cm9zIGFyZSBmb3IgaGFuZGxpbmcgTUlCIHZhbHVlcywgKi8KICNkZWZpbmUgU0NUUF9TVEFUX0lO
Q1JfQ09VTlRFUjMyKF94KSBTQ1RQX1NUQVRfSU5DUihfeCkKICNkZWZpbmUgU0NUUF9TVEFUX0lO
Q1JfQ09VTlRFUjY0KF94KSBTQ1RQX1NUQVRfSU5DUihfeCkKQEAgLTExMzYsMzQgKzExMzcsMTUg
QEAgc3RydWN0IHNjdHBzdGF0IHsKICNkZWZpbmUgU0NUUF9TVEFUX0RFQ1JfQ09VTlRFUjY0KF94
KSBTQ1RQX1NUQVRfREVDUihfeCkKICNkZWZpbmUgU0NUUF9TVEFUX0RFQ1JfR0FVR0UzMihfeCkg
U0NUUF9TVEFUX0RFQ1IoX3gpCiAKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi11bmlvbiBz
Y3RwX3NvY2tzdG9yZSB7Ci0jaWYgZGVmaW5lZChJTkVUKQotCXN0cnVjdCBzb2NrYWRkcl9pbiBz
aW47Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKElORVQ2KQotCXN0cnVjdCBzb2NrYWRkcl9pbjYgc2lu
NjsKLSNlbmRpZgotCXN0cnVjdCBzb2NrYWRkcl9jb25uIHNjb25uOwotCXN0cnVjdCBzb2NrYWRk
ciBzYTsKLX07Ci0jZWxzZQotdW5pb24gc2N0cF9zb2Nrc3RvcmUgewotCXN0cnVjdCBzb2NrYWRk
cl9pbiBzaW47Ci0Jc3RydWN0IHNvY2thZGRyX2luNiBzaW42OwotCXN0cnVjdCBzb2NrYWRkciBz
YTsKLX07Ci0jZW5kaWYKLQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov
CiAvKiBBbmQgc29tZXRoaW5nIGZvciB1cyBvbGQgdGltZXJzICovCiAvKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKiovCiAKLSNpZm5kZWYgX19BUFBMRV9fCi0jaWZuZGVmIF9fVXNl
cnNwYWNlX18KKyNpZiAhKGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKSkKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmbmRlZiBudG9obGwKLSNpZiBk
ZWZpbmVkKF9fVXNlcnNwYWNlX29zX0xpbnV4KQorI2lmIGRlZmluZWQoX19saW51eF9fKQogI2lm
bmRlZiBfQlNEX1NPVVJDRQogI2RlZmluZSBfQlNEX1NPVVJDRQogI2VuZGlmCkBAIC0xMTc1LDcg
KzExNTcsNyBAQCB1bmlvbiBzY3RwX3NvY2tzdG9yZSB7CiAjZW5kaWYKIAogI2lmbmRlZiBodG9u
bGwKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0xpbnV4KQorI2lmIGRlZmluZWQoX19saW51
eF9fKQogI2lmbmRlZiBfQlNEX1NPVVJDRQogI2RlZmluZSBfQlNEX1NPVVJDRQogI2VuZGlmCkBA
IC0xMTkzLDUyICsxMTc1LDMwIEBAIHVuaW9uIHNjdHBfc29ja3N0b3JlIHsKIHN0cnVjdCB4c2N0
cF9pbnBjYiB7CiAJdWludDMyX3QgbGFzdDsKIAl1aW50MzJfdCBmbGFnczsKLSNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA8IDEwMDAwNDgKLQl1aW50MzJfdCBm
ZWF0dXJlczsKLSNlbHNlCiAJdWludDY0X3QgZmVhdHVyZXM7Ci0jZW5kaWYKIAl1aW50MzJfdCB0
b3RhbF9zZW5kczsKIAl1aW50MzJfdCB0b3RhbF9yZWN2czsKIAl1aW50MzJfdCB0b3RhbF9ub3Nw
YWNlczsKIAl1aW50MzJfdCBmcmFnbWVudGF0aW9uX3BvaW50OwogCXVpbnQxNl90IGxvY2FsX3Bv
cnQ7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPiAxMTAw
MDk2CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
IAl1aW50MTZfdCBxbGVuX29sZDsKIAl1aW50MTZfdCBtYXhxbGVuX29sZDsKICNlbHNlCiAJdWlu
dDE2X3QgcWxlbjsKIAl1aW50MTZfdCBtYXhxbGVuOwogI2VuZGlmCi0jaWYgZGVmaW5lZChfX1dp
bmRvd3NfXykKLQl1aW50MTZfdCBwYWRkaW5nOwotI2VuZGlmCi0jaWYgIShkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiAoX19GcmVlQlNEX3ZlcnNpb24gPCAxMDAxNTE3KSkKKwl1aW50MTZfdCBfX3Nw
YXJlMTY7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKKwlrdmFkZHJfdCBzb2NrZXQ7CisjZWxzZQogCXZvaWQgKnNvY2tldDsKICNlbmRpZgotI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID4gMTEwMDA5NgorI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJdWludDMy
X3QgcWxlbjsKIAl1aW50MzJfdCBtYXhxbGVuOwogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPCAxMDAwMDQ4Ci0JdWludDMyX3QgZXh0cmFfcGFk
ZGluZ1szMl07IC8qIGZ1dHVyZSAqLwotI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgKF9f
RnJlZUJTRF92ZXJzaW9uIDwgMTAwMTUxNykKLQl1aW50MzJfdCBleHRyYV9wYWRkaW5nWzMxXTsg
LyogZnV0dXJlICovCi0jZWxzZQotI2lmIGRlZmluZWQoX19MUDY0X18pCi0jaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPiAxMTAwMDk2Ci0JdWludDMyX3QgZXh0
cmFfcGFkZGluZ1syN107IC8qIGZ1dHVyZSAqLwotI2Vsc2UKLQl1aW50MzJfdCBleHRyYV9wYWRk
aW5nWzI5XTsgLyogZnV0dXJlICovCi0jZW5kaWYKLSNlbHNlCi0jaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPiAxMTAwMDk2Ci0JdWludDMyX3QgZXh0cmFfcGFk
ZGluZ1syOF07IC8qIGZ1dHVyZSAqLwotI2Vsc2UKLQl1aW50MzJfdCBleHRyYV9wYWRkaW5nWzMw
XTsgLyogZnV0dXJlICovCi0jZW5kaWYKLSNlbmRpZgotI2VuZGlmCisJdWludDMyX3QgZXh0cmFf
cGFkZGluZ1syNl07IC8qIGZ1dHVyZSAqLwogfTsKIAogc3RydWN0IHhzY3RwX3RjYiB7CkBAIC0x
MjY3LDE4ICsxMjI3LDkgQEAgc3RydWN0IHhzY3RwX3RjYiB7CiAJdWludDE2X3QgcmVtb3RlX3Bv
cnQ7ICAgICAgICAgICAgICAgICAgIC8qIHNjdHBBc3NvY0VudHJ5IDQgICAqLwogCXN0cnVjdCBz
Y3RwX3RpbWV2YWwgc3RhcnRfdGltZTsgICAgICAgICAvKiBzY3RwQXNzb2NFbnRyeSAxNiAgKi8K
IAlzdHJ1Y3Qgc2N0cF90aW1ldmFsIGRpc2NvbnRpbnVpdHlfdGltZTsgLyogc2N0cEFzc29jRW50
cnkgMTcgICovCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKLSNpZiBfX0ZyZWVCU0RfdmVyc2lv
biA+PSA4MDAwMDAKLQl1aW50MzJfdCBwZWVyc19yd25kOwotCXNjdHBfYXNzb2NfdCBhc3NvY19p
ZDsgICAgICAgICAgICAgICAgICAvKiBzY3RwQXNzb2NFbnRyeSAxICAgKi8KLQl1aW50MzJfdCBl
eHRyYV9wYWRkaW5nWzMyXTsgICAgICAgICAgICAgIC8qIGZ1dHVyZSAqLwotI2Vsc2UKLSNlbmRp
ZgotI2Vsc2UKIAl1aW50MzJfdCBwZWVyc19yd25kOwogCXNjdHBfYXNzb2NfdCBhc3NvY19pZDsg
ICAgICAgICAgICAgICAgICAvKiBzY3RwQXNzb2NFbnRyeSAxICAgKi8KIAl1aW50MzJfdCBleHRy
YV9wYWRkaW5nWzMyXTsgICAgICAgICAgICAgIC8qIGZ1dHVyZSAqLwotI2VuZGlmCiB9OwogCiBz
dHJ1Y3QgeHNjdHBfbGFkZHIgewpAQCAtMTMwMywyMyArMTI1NCwxMiBAQCBzdHJ1Y3QgeHNjdHBf
cmFkZHIgewogCXVpbnQ4X3QgaGVhcnRiZWF0X2VuYWJsZWQ7ICAgICAgICAgLyogc2N0cEFzc29j
TG9jYWxSZW1FbnRyeSA0ICAgKi8KIAl1aW50OF90IHBvdGVudGlhbGx5X2ZhaWxlZDsKIAlzdHJ1
Y3Qgc2N0cF90aW1ldmFsIHN0YXJ0X3RpbWU7ICAgIC8qIHNjdHBBc3NvY0xvY2FsUmVtRW50cnkg
OCAgICovCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKLSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+
PSA4MDAwMDAKLQl1aW50MzJfdCBydHQ7Ci0JdWludDMyX3QgaGVhcnRiZWF0X2ludGVydmFsOwot
CXVpbnQzMl90IHNzdGhyZXNoOwotCXVpbnQxNl90IGVuY2Fwc19wb3J0OwotCXVpbnQxNl90IHN0
YXRlOwotCXVpbnQzMl90IGV4dHJhX3BhZGRpbmdbMjldOyAgICAgICAgICAgICAgLyogZnV0dXJl
ICovCi0jZW5kaWYKLSNlbHNlCiAJdWludDMyX3QgcnR0OwogCXVpbnQzMl90IGhlYXJ0YmVhdF9p
bnRlcnZhbDsKIAl1aW50MzJfdCBzc3RocmVzaDsKIAl1aW50MTZfdCBlbmNhcHNfcG9ydDsKIAl1
aW50MTZfdCBzdGF0ZTsKIAl1aW50MzJfdCBleHRyYV9wYWRkaW5nWzI5XTsgICAgICAgICAgICAg
IC8qIGZ1dHVyZSAqLwotI2VuZGlmCiB9OwogCiAjZGVmaW5lIFNDVFBfTUFYX0xPR0dJTkdfU0la
RSAzMDAwMApAQCAtMTM0NiwxOSArMTI4NiwxNCBAQCBpbnQKIHNjdHBfbG93ZXJfc29zZW5kKHN0
cnVjdCBzb2NrZXQgKnNvLAogICAgIHN0cnVjdCBzb2NrYWRkciAqYWRkciwKICAgICBzdHJ1Y3Qg
dWlvICp1aW8sCi0jaWYgZGVmaW5lZChfX1BhbmRhX18pCi0gICAgcGFraGFuZGxlX3R5cGUgaV9w
YWssCi0gICAgcGFraGFuZGxlX3R5cGUgaV9jb250cm9sLAotI2Vsc2UKICAgICBzdHJ1Y3QgbWJ1
ZiAqaV9wYWssCiAgICAgc3RydWN0IG1idWYgKmNvbnRyb2wsCi0jZW5kaWYKICAgICBpbnQgZmxh
Z3MsCiAgICAgc3RydWN0IHNjdHBfc25kcmN2aW5mbyAqc3JjdgotI2lmICEoZGVmaW5lZChfX1Bh
bmRhX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMDAwCisjaWYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQogICAgICxzdHJ1Y3QgdGhyZWFkICpwCi0j
ZWxpZiBkZWZpbmVkKF9fV2luZG93c19fKQorI2VsaWYgZGVmaW5lZChfV0lOMzIpCiAgICAgLCBQ
S1RIUkVBRCBwCiAjZWxzZQogICAgICxzdHJ1Y3QgcHJvYyAqcApAQCAtMTM2OSwxMSArMTMwNCw3
IEBAIHNjdHBfbG93ZXJfc29zZW5kKHN0cnVjdCBzb2NrZXQgKnNvLAogaW50CiBzY3RwX3NvcmVj
dm1zZyhzdHJ1Y3Qgc29ja2V0ICpzbywKICAgICBzdHJ1Y3QgdWlvICp1aW8sCi0jaWYgZGVmaW5l
ZChfX1BhbmRhX18pCi0gICAgcGFydGljbGV0eXBlICoqbXAsCi0jZWxzZQogICAgIHN0cnVjdCBt
YnVmICoqbXAsCi0jZW5kaWYKICAgICBzdHJ1Y3Qgc29ja2FkZHIgKmZyb20sCiAgICAgaW50IGZy
b21sZW4sCiAgICAgaW50ICptc2dfZmxhZ3MsCkBAIC0xMzg3LDQ1ICsxMzE4LDYgQEAgc2N0cF9z
b3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc28sCiAjaWYgIShkZWZpbmVkKF9LRVJORUwpKSAmJiAh
KGRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAKIF9fQkVHSU5fREVDTFMKLSNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA8IDkwMjAwMAotaW50CXNjdHBfcGVlbG9m
ZiBfX1AoKGludCwgc2N0cF9hc3NvY190KSk7Ci1pbnQJc2N0cF9iaW5keCBfX1AoKGludCwgc3Ry
dWN0IHNvY2thZGRyICosIGludCwgaW50KSk7Ci1pbnQJc2N0cF9jb25uZWN0eCBfX1AoKGludCwg
Y29uc3Qgc3RydWN0IHNvY2thZGRyICosIGludCwgc2N0cF9hc3NvY190ICopKTsKLWludAlzY3Rw
X2dldGFkZHJsZW4gX19QKChzYV9mYW1pbHlfdCkpOwotaW50CXNjdHBfZ2V0cGFkZHJzIF9fUCgo
aW50LCBzY3RwX2Fzc29jX3QsIHN0cnVjdCBzb2NrYWRkciAqKikpOwotdm9pZAlzY3RwX2ZyZWVw
YWRkcnMgX19QKChzdHJ1Y3Qgc29ja2FkZHIgKikpOwotaW50CXNjdHBfZ2V0bGFkZHJzIF9fUCgo
aW50LCBzY3RwX2Fzc29jX3QsIHN0cnVjdCBzb2NrYWRkciAqKikpOwotdm9pZAlzY3RwX2ZyZWVs
YWRkcnMgX19QKChzdHJ1Y3Qgc29ja2FkZHIgKikpOwotaW50CXNjdHBfb3B0X2luZm8gX19QKChp
bnQsIHNjdHBfYXNzb2NfdCwgaW50LCB2b2lkICosIHNvY2tsZW5fdCAqKSk7Ci0KLS8qIGRlcHJl
Y2F0ZWQgKi8KLXNzaXplX3QJc2N0cF9zZW5kbXNnIF9fUCgoaW50LCBjb25zdCB2b2lkICosIHNp
emVfdCwgY29uc3Qgc3RydWN0IHNvY2thZGRyICosCi0JICAgIHNvY2tsZW5fdCwgdWludDMyX3Qs
IHVpbnQzMl90LCB1aW50MTZfdCwgdWludDMyX3QsIHVpbnQzMl90KSk7Ci0KLS8qIGRlcHJlY2F0
ZWQgKi8KLXNzaXplX3QJc2N0cF9zZW5kIF9fUCgoaW50LCBjb25zdCB2b2lkICosIHNpemVfdCwK
LQkgICAgY29uc3Qgc3RydWN0IHNjdHBfc25kcmN2aW5mbyAqLCBpbnQpKTsKLQotLyogZGVwcmVj
YXRlZCAqLwotc3NpemVfdAlzY3RwX3NlbmR4IF9fUCgoaW50LCBjb25zdCB2b2lkICosIHNpemVf
dCwgc3RydWN0IHNvY2thZGRyICosCi0JICAgIGludCwgc3RydWN0IHNjdHBfc25kcmN2aW5mbyAq
LCBpbnQpKTsKLQotLyogZGVwcmVjYXRlZCAqLwotc3NpemVfdAlzY3RwX3NlbmRtc2d4IF9fUCgo
aW50IHNkLCBjb25zdCB2b2lkICosIHNpemVfdCwgc3RydWN0IHNvY2thZGRyICosCi0JICAgIGlu
dCwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MTZfdCwgdWludDMyX3QsIHVpbnQzMl90KSk7Ci0K
LXNjdHBfYXNzb2NfdAlzY3RwX2dldGFzc29jaWQgX19QKChpbnQsIHN0cnVjdCBzb2NrYWRkciAq
KSk7Ci0KLS8qIGRlcHJlY2F0ZWQgKi8KLXNzaXplX3QJc2N0cF9yZWN2bXNnIF9fUCgoaW50LCB2
b2lkICosIHNpemVfdCwgc3RydWN0IHNvY2thZGRyICosIHNvY2tsZW5fdCAqLAotCSAgICBzdHJ1
Y3Qgc2N0cF9zbmRyY3ZpbmZvICosIGludCAqKSk7Ci0KLXNzaXplX3QJc2N0cF9zZW5kdiBfX1Ao
KGludCwgY29uc3Qgc3RydWN0IGlvdmVjICosIGludCwgc3RydWN0IHNvY2thZGRyICosCi0JICAg
IGludCwgdm9pZCAqLCBzb2NrbGVuX3QsIHVuc2lnbmVkIGludCwgaW50KSk7Ci0KLXNzaXplX3QJ
c2N0cF9yZWN2diBfX1AoKGludCwgY29uc3Qgc3RydWN0IGlvdmVjICosIGludCwgc3RydWN0IHNv
Y2thZGRyICosCi0JICAgIHNvY2tsZW5fdCAqLCB2b2lkICosIHNvY2tsZW5fdCAqLCB1bnNpZ25l
ZCBpbnQgKiwgaW50ICopKTsKLSNlbHNlCiBpbnQJc2N0cF9wZWVsb2ZmKGludCwgc2N0cF9hc3Nv
Y190KTsKIGludAlzY3RwX2JpbmR4KGludCwgc3RydWN0IHNvY2thZGRyICosIGludCwgaW50KTsK
IGludAlzY3RwX2Nvbm5lY3R4KGludCwgY29uc3Qgc3RydWN0IHNvY2thZGRyICosIGludCwgc2N0
cF9hc3NvY190ICopOwpAQCAtMTQ2Myw3ICsxMzU1LDYgQEAgc3NpemVfdAlzY3RwX3NlbmR2KGlu
dCwgY29uc3Qgc3RydWN0IGlvdmVjICosIGludCwgc3RydWN0IHNvY2thZGRyICosCiAKIHNzaXpl
X3QJc2N0cF9yZWN2dihpbnQsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqLCBpbnQsIHN0cnVjdCBzb2Nr
YWRkciAqLAogCSAgICBzb2NrbGVuX3QgKiwgdm9pZCAqLCBzb2NrbGVuX3QgKiwgdW5zaWduZWQg
aW50ICosIGludCAqKTsKLSNlbmRpZgogX19FTkRfREVDTFMKIAogI2VuZGlmCQkJCS8qICFfS0VS
TkVMICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF91c2Vy
c3BhY2UuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
dXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3VzZXJzcGFjZS5jCm9s
ZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggNmZjYzA4ZDE2ZDMzN2Q5OWUxMmI0
NTc3YjJhMDhiMjc1MzRiYWI2MS4uOGUyZWJmNDYyM2JlYjA4MDg5NzBkODFmOGJjZDNlNjgzODU2
ZGQyZgotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF91c2Vyc3BhY2UuYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF91c2Vyc3BhY2UuYwpAQCAtMzEs
MjEgKzMxLDI3IEBACiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX3BjYi5oPgogI2luY2x1ZGUgPHN5
cy90aW1lYi5oPgogI2luY2x1ZGUgPGlwaGxwYXBpLmg+CisjaWYgIWRlZmluZWQoX19NSU5HVzMy
X18pCiAjcHJhZ21hIGNvbW1lbnQobGliLCAiSVBITFBBUEkubGliIikKICNlbmRpZgorI2VuZGlm
CiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX29zX3VzZXJzcGFjZS5oPgotI2lmIGRlZmluZWQoX19V
c2Vyc3BhY2Vfb3NfRnJlZUJTRCkKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQogI2luY2x1ZGUg
PHB0aHJlYWRfbnAuaD4KICNlbmRpZgogCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19MaW51
eCkKKyNpZiBkZWZpbmVkKF9fbGludXhfXykKICNpbmNsdWRlIDxzeXMvcHJjdGwuaD4KICNlbmRp
ZgogCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJ
TjMyKQogLyogQWRhcHRlciB0byB0cmFuc2xhdGUgVW5peCB0aHJlYWQgc3RhcnQgcm91dGluZXMg
dG8gV2luZG93cyB0aHJlYWQgc3RhcnQKICAqIHJvdXRpbmVzLgogICovCisjaWYgZGVmaW5lZChf
X01JTkdXMzJfXykKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBHQ0MgZGlh
Z25vc3RpYyBpZ25vcmVkICItV3BlZGFudGljIgorI2VuZGlmCiBzdGF0aWMgRFdPUkQgV0lOQVBJ
CiBzY3RwX2NyZWF0ZV90aHJlYWRfYWRhcHRlcih2b2lkICphcmcpIHsKIAlzdGFydF9yb3V0aW5l
X3Qgc3RhcnRfcm91dGluZSA9IChzdGFydF9yb3V0aW5lX3QpYXJnOwpAQCAtNjEsNiArNjcsMTEg
QEAgc2N0cF91c2Vyc3BhY2VfdGhyZWFkX2NyZWF0ZSh1c2VybGFuZF90aHJlYWRfdCAqdGhyZWFk
LCBzdGFydF9yb3V0aW5lX3Qgc3RhcnRfcm8KIAkJcmV0dXJuIEdldExhc3RFcnJvcigpOwogCXJl
dHVybiAwOwogfQorCisjaWYgZGVmaW5lZChfX01JTkdXMzJfXykKKyNwcmFnbWEgR0NDIGRpYWdu
b3N0aWMgcG9wCisjZW5kaWYKKwogI2Vsc2UKIGludAogc2N0cF91c2Vyc3BhY2VfdGhyZWFkX2Ny
ZWF0ZSh1c2VybGFuZF90aHJlYWRfdCAqdGhyZWFkLCBzdGFydF9yb3V0aW5lX3Qgc3RhcnRfcm91
dGluZSkKQEAgLTcyLDE4ICs4MywxOCBAQCBzY3RwX3VzZXJzcGFjZV90aHJlYWRfY3JlYXRlKHVz
ZXJsYW5kX3RocmVhZF90ICp0aHJlYWQsIHN0YXJ0X3JvdXRpbmVfdCBzdGFydF9ybwogdm9pZAog
c2N0cF91c2Vyc3BhY2Vfc2V0X3RocmVhZG5hbWUoY29uc3QgY2hhciAqbmFtZSkKIHsKLSNpZiBk
ZWZpbmVkKF9fVXNlcnNwYWNlX29zX0RhcndpbikKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykKIAlw
dGhyZWFkX3NldG5hbWVfbnAobmFtZSk7CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNl
X29zX0xpbnV4KQorI2lmIGRlZmluZWQoX19saW51eF9fKQogCXByY3RsKFBSX1NFVF9OQU1FLCBu
YW1lKTsKICNlbmRpZgotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRnJlZUJTRCkKKyNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKQogCXB0aHJlYWRfc2V0X25hbWVfbnAocHRocmVhZF9zZWxmKCks
IG5hbWUpOwogI2VuZGlmCiB9CiAKLSNpZiAhZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX29zX05hQ2wpCisjaWYgIWRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX25h
dGl2ZV9jbGllbnRfXykKIGludAogc2N0cF91c2Vyc3BhY2VfZ2V0X210dV9mcm9tX2lmbih1aW50
MzJfdCBpZl9pbmRleCwgaW50IGFmKQogewpAQCAtMTA3LDcgKzExOCw3IEBAIHNjdHBfdXNlcnNw
YWNlX2dldF9tdHVfZnJvbV9pZm4odWludDMyX3QgaWZfaW5kZXgsIGludCBhZikKIH0KICNlbmRp
ZgogCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19OYUNsKQorI2lmIGRlZmluZWQoX19uYXRp
dmVfY2xpZW50X18pCiBpbnQKIHNjdHBfdXNlcnNwYWNlX2dldF9tdHVfZnJvbV9pZm4odWludDMy
X3QgaWZfaW5kZXgsIGludCBhZikKIHsKQEAgLTExNSw2ICsxMjYsMTkgQEAgc2N0cF91c2Vyc3Bh
Y2VfZ2V0X210dV9mcm9tX2lmbih1aW50MzJfdCBpZl9pbmRleCwgaW50IGFmKQogfQogI2VuZGlm
CiAKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKSB8fCBk
ZWZpbmVkKF9fbGludXhfXykgfHwgZGVmaW5lZChfX25hdGl2ZV9jbGllbnRfXykgfHwgZGVmaW5l
ZChfX05ldEJTRF9fKSB8fCBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0Z1Y2hzaWFfXykK
K2ludAordGltaW5nc2FmZV9iY21wKGNvbnN0IHZvaWQgKmIxLCBjb25zdCB2b2lkICpiMiwgc2l6
ZV90IG4pCit7CisJY29uc3QgdW5zaWduZWQgY2hhciAqcDEgPSBiMSwgKnAyID0gYjI7CisJaW50
IHJldCA9IDA7CisKKwlmb3IgKDsgbiA+IDA7IG4tLSkKKwkJcmV0IHw9ICpwMSsrIF4gKnAyKys7
CisJcmV0dXJuIChyZXQgIT0gMCk7Cit9CisjZW5kaWYKKwogI2lmZGVmIF9XSU4zMgogaW50CiBz
Y3RwX3VzZXJzcGFjZV9nZXRfbXR1X2Zyb21faWZuKHVpbnQzMl90IGlmX2luZGV4LCBpbnQgYWYp
CkBAIC0xNTksMTEgKzE4MywyOSBAQCBjbGVhbnVwOgogdm9pZAogZ2V0d2ludGltZW9mZGF5KHN0
cnVjdCB0aW1ldmFsICp0dikKIHsKLQlzdHJ1Y3QgdGltZWIgdGI7CisJRklMRVRJTUUgZmlsZXRp
bWU7CisJVUxBUkdFX0lOVEVHRVIgdWxhcmdlOwogCi0JZnRpbWUoJnRiKTsKLQl0di0+dHZfc2Vj
ID0gKGxvbmcpdGIudGltZTsKLQl0di0+dHZfdXNlYyA9IChsb25nKSh0Yi5taWxsaXRtKSAqIDEw
MDBMOworCUdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lKCZmaWxldGltZSk7CisJdWxhcmdlLkxvd1Bh
cnQgPSBmaWxldGltZS5kd0xvd0RhdGVUaW1lOworCXVsYXJnZS5IaWdoUGFydCA9IGZpbGV0aW1l
LmR3SGlnaERhdGVUaW1lOworCS8qIENoYW5nZSBiYXNlIGZyb20gSmFuIDEgMTYwMSAwMDowMDow
MCB0byBKYW4gMSAxOTcwIDAwOjAwOjAwICovCisjaWYgZGVmaW5lZChfX01JTkdXMzJfXykKKwl1
bGFyZ2UuUXVhZFBhcnQgLT0gMTE2NDQ0NzM2MDAwMDAwMDAwVUxMOworI2Vsc2UKKwl1bGFyZ2Uu
UXVhZFBhcnQgLT0gMTE2NDQ0NzM2MDAwMDAwMDAwVUk2NDsKKyNlbmRpZgorCS8qCisJICogdWxh
cmdlLlF1YWRQYXJ0IGlzIG5vdyB0aGUgbnVtYmVyIG9mIDEwMC1uYW5vc2Vjb25kIGludGVydmFs
cworCSAqIHNpbmNlIEphbiAxIDE5NzAgMDA6MDA6MDAuCisJICovCisjaWYgZGVmaW5lZChfX01J
TkdXMzJfXykKKwl0di0+dHZfc2VjID0gKGxvbmcpKHVsYXJnZS5RdWFkUGFydCAvIDEwMDAwMDAw
VUxMKTsKKwl0di0+dHZfdXNlYyA9IChsb25nKSgodWxhcmdlLlF1YWRQYXJ0ICUgMTAwMDAwMDBV
TEwpIC8gMTBVTEwpOworI2Vsc2UKKwl0di0+dHZfc2VjID0gKGxvbmcpKHVsYXJnZS5RdWFkUGFy
dCAvIDEwMDAwMDAwVUk2NCk7CisJdHYtPnR2X3VzZWMgPSAobG9uZykoKHVsYXJnZS5RdWFkUGFy
dCAlIDEwMDAwMDAwVUk2NCkgLyAxMFVJNjQpOworI2VuZGlmCiB9CiAKIGludApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfdXNycmVxLmMgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91
c3JzY3RwbGliL25ldGluZXQvc2N0cF91c3JyZXEuYwpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUg
MTAwNzU1CmluZGV4IGJiNWVhOGUwYjAwOTE2NmIyZTQ1ZjIxYjc5ZDIzODM0OWNhYjY0OTQuLjc4
ZDc5NWNjMTM1NjlmZDY3ZDJiNWJjNWExNzY0OTkxYjQzNTk1YTEKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNy
c2N0cGxpYi9uZXRpbmV0L3NjdHBfdXNycmVxLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9u
ZXRpbmV0L3NjdHBfdXNycmVxLmMKQEAgLTMyLDEzICszMiwxMyBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZmRlZiBfX0ZyZWVCU0RfXworI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8c3lz
L2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF91c3Jy
ZXEuYyAzMzQ3MjUgMjAxOC0wNi0wNiAxOToyNzowNlogdHVleGVuICQiKTsKK19fRkJTRElEKCIk
RnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX3VzcnJlcS5jIDM2NDM1MyAyMDIwLTA4LTE4
IDE5OjI1OjAzWiB0dWV4ZW4gJCIpOwogI2VuZGlmCiAKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBf
b3MuaD4KLSNpZmRlZiBfX0ZyZWVCU0RfXworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8c3lzL3Byb2MuaD4KICNlbmRpZgogI2lu
Y2x1ZGUgPG5ldGluZXQvc2N0cF9wY2IuaD4KQEAgLTYxLDE1ICs2MSwxNCBAQCBfX0ZCU0RJRCgi
JEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF91c3JyZXEuYyAzMzQ3MjUgMjAxOC0wNi0w
NiAxOToyNzowNlogdAogI2Vsc2UKICNpbmNsdWRlIDxuZXRpbmV0L3VkcC5oPgogI2VuZGlmCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpbmNs
dWRlIDxzeXMvZXZlbnRoYW5kbGVyLmg+CisjZW5kaWYKIAogI2lmIGRlZmluZWQoSEFWRV9TQ1RQ
X1BFRUxPRkZfU09DS09QVCkKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfcGVlbG9mZi5oPgogI2Vu
ZGlmCQkJCS8qIEhBVkVfU0NUUF9QRUVMT0ZGX1NPQ0tPUFQgKi8KIAotI2lmIGRlZmluZWQoX19B
UFBMRV9fKQotI2RlZmluZSBBUFBMRV9GSUxFX05PIDcKLSNlbmRpZgotCiBleHRlcm4gY29uc3Qg
c3RydWN0IHNjdHBfY2NfZnVuY3Rpb25zIHNjdHBfY2NfZnVuY3Rpb25zW107CiBleHRlcm4gY29u
c3Qgc3RydWN0IHNjdHBfc3NfZnVuY3Rpb25zIHNjdHBfc3NfZnVuY3Rpb25zW107CiAKQEAgLTc3
LDQ5ICs3NiwzNSBAQCB2b2lkCiAjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogc2N0cF9pbml0
KHVpbnQxNl90IHBvcnQsCiAgICAgICAgICAgaW50ICgqY29ubl9vdXRwdXQpKHZvaWQgKmFkZHIs
IHZvaWQgKmJ1ZmZlciwgc2l6ZV90IGxlbmd0aCwgdWludDhfdCB0b3MsIHVpbnQ4X3Qgc2V0X2Rm
KSwKLSAgICAgICAgICB2b2lkICgqZGVidWdfcHJpbnRmKShjb25zdCBjaGFyICpmb3JtYXQsIC4u
LikpCisgICAgICAgICAgdm9pZCAoKmRlYnVnX3ByaW50ZikoY29uc3QgY2hhciAqZm9ybWF0LCAu
Li4pLCBpbnQgc3RhcnRfdGhyZWFkcykKICNlbGlmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAoIWRl
ZmluZWQoQVBQTEVfTEVPUEFSRCkgJiYgIWRlZmluZWQoQVBQTEVfU05PV0xFT1BBUkQpICYmIWRl
ZmluZWQoQVBQTEVfTElPTikgJiYgIWRlZmluZWQoQVBQTEVfTU9VTlRBSU5MSU9OKSkKIHNjdHBf
aW5pdChzdHJ1Y3QgcHJvdG9zdyAqcHAgU0NUUF9VTlVTRUQsIHN0cnVjdCBkb21haW4gKmRwIFND
VFBfVU5VU0VEKQogI2Vsc2UKIHNjdHBfaW5pdCh2b2lkKQogI2VuZGlmCiB7Ci0jaWYgIWRlZmlu
ZWQoX19QYW5kYV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAJdV9sb25nIHNiX21heF9hZGo7CiAKKyNlbHNlCisJaW5pdF9yYW5kb20o
KTsKICNlbmRpZgogCS8qIEluaXRpYWxpemUgYW5kIG1vZGlmeSB0aGUgc3lzY3RsZWQgdmFyaWFi
bGVzICovCiAJc2N0cF9pbml0X3N5c2N0bHMoKTsKICNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18p
Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKSB8fCBkZWZpbmVkKF9fVXNlcnNw
YWNlX29zX05hQ2wpCi0Jc3JhbmQoKHVuc2lnbmVkIGludCl0aW1lKE5VTEwpKTsKLSNlbHNlCi0J
c3JhbmRvbShnZXRwaWQoKSk7IC8qIHNvIGlucC0+c2N0cF9lcC5yYW5kb21fbnVtYmVycyBhcmUg
dHJ1bHkgcmFuZG9tLi4uICovCi0jZW5kaWYKLSNlbmRpZgotI2lmIGRlZmluZWQoX19QYW5kYV9f
KQotCXNjdHBfc2VuZHNwYWNlID0gU0JfTUFYOwotCXNjdHBfcmVjdnNwYWNlID0gU0JfTUFYOwot
Ci0jZWxpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJU0NUUF9CQVNFX1NZU0NUTChzY3RwX3Vk
cF90dW5uZWxpbmdfcG9ydCkgPSBwb3J0OwogI2Vsc2UKLSNpZiAhZGVmaW5lZChfX0FQUExFX18p
CisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJc2Jf
bWF4X2FkaiA9ICh1X2xvbmcpKCh1X3F1YWRfdCkgKHNiX21heCkgKiBNQ0xCWVRFUyAvIChNU0la
RSArIE1DTEJZVEVTKSk7CisJU0NUUF9CQVNFX1NZU0NUTChzY3RwX3NlbmRzcGFjZSkgPSBzYl9t
YXhfYWRqOworI2Vsc2UKIAlpZiAoKG5tYmNsdXN0ZXJzIC8gOCkgPiBTQ1RQX0FTT0NfTUFYX0NI
VU5LU19PTl9RVUVVRSkKIAkJU0NUUF9CQVNFX1NZU0NUTChzY3RwX21heF9jaHVua3Nfb25fcXVl
dWUpID0gKG5tYmNsdXN0ZXJzIC8gOCk7Ci0jZW5kaWYKIAkvKgogCSAqIEFsbG93IGEgdXNlciB0
byB0YWtlIG5vIG1vcmUgdGhhbiAxLzIgdGhlIG51bWJlciBvZiBjbHVzdGVycyBvcgotCSAqIHRo
ZSBTQl9NQVggd2hpY2hldmVyIGlzIHNtYWxsZXIgZm9yIHRoZSBzZW5kIHdpbmRvdy4KKwkgKiB0
aGUgU0JfTUFYLCB3aGljaGV2ZXIgaXMgc21hbGxlciwgZm9yIHRoZSBzZW5kIHdpbmRvdy4KIAkg
Ki8KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKLQlzYl9tYXhfYWRqID0gKHVfbG9uZykoKHVfcXVh
ZF90KSAoc2JfbWF4KSAqIE1DTEJZVEVTIC8gKE1TSVpFICsgTUNMQllURVMpKTsKLSNlbHNlCiAJ
c2JfbWF4X2FkaiA9ICh1X2xvbmcpKCh1X3F1YWRfdCkgKFNCX01BWCkgKiBNQ0xCWVRFUyAvIChN
U0laRSArIE1DTEJZVEVTKSk7Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKLQlTQ1RQ
X0JBU0VfU1lTQ1RMKHNjdHBfc2VuZHNwYWNlKSA9IHNiX21heF9hZGo7Ci0jZWxzZQogCVNDVFBf
QkFTRV9TWVNDVEwoc2N0cF9zZW5kc3BhY2UpID0gbWluKHNiX21heF9hZGosCiAJICAgICgoKHVp
bnQzMl90KW5tYmNsdXN0ZXJzIC8gMikgKiBTQ1RQX0RFRkFVTFRfTUFYU0VHTUVOVCkpOwogI2Vu
ZGlmCkBAIC0xMzMsNyArMTE4LDcgQEAgc2N0cF9pbml0KHZvaWQpCiAJU0NUUF9CQVNFX1ZBUihm
aXJzdF90aW1lKSA9IDA7CiAJU0NUUF9CQVNFX1ZBUihzY3RwX3BjYl9pbml0aWFsaXplZCkgPSAw
OwogI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKLSNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9v
c19XaW5kb3dzKQorI2lmICFkZWZpbmVkKF9XSU4zMikKICNpZiBkZWZpbmVkKElORVQpIHx8IGRl
ZmluZWQoSU5FVDYpCiAJU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2Vfcm91dGUpID0gLTE7CiAjZW5k
aWYKQEAgLTE1MCwyOCArMTM1LDM5IEBAIHNjdHBfaW5pdCh2b2lkKQogCVNDVFBfQkFTRV9WQVIo
Y29ubl9vdXRwdXQpID0gY29ubl9vdXRwdXQ7CiAJU0NUUF9CQVNFX1ZBUihkZWJ1Z19wcmludGYp
ID0gZGVidWdfcHJpbnRmOwogCVNDVFBfQkFTRV9WQVIoY3JjMzJjX29mZmxvYWRlZCkgPSAwOwor
CVNDVFBfQkFTRV9WQVIoaXRlcmF0b3JfdGhyZWFkX3N0YXJ0ZWQpID0gMDsKKwlTQ1RQX0JBU0Vf
VkFSKHRpbWVyX3RocmVhZF9zdGFydGVkKSA9IDA7CiAjZW5kaWYKLQlzY3RwX3BjYl9pbml0KCk7
CiAjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQotCXNjdHBfc3RhcnRfdGltZXIoKTsKKwlzY3Rw
X3BjYl9pbml0KHN0YXJ0X3RocmVhZHMpOworCWlmIChzdGFydF90aHJlYWRzKSB7CisJCXNjdHBf
c3RhcnRfdGltZXJfdGhyZWFkKCk7CisJfQorI2Vsc2UKKwlzY3RwX3BjYl9pbml0KCk7CiAjZW5k
aWYKICNpZiBkZWZpbmVkKFNDVFBfUEFDS0VUX0xPR0dJTkcpCiAJU0NUUF9CQVNFX1ZBUihwYWNr
ZXRfbG9nX3dyaXRlcnMpID0gMDsKIAlTQ1RQX0JBU0VfVkFSKHBhY2tldF9sb2dfZW5kKSA9IDA7
CiAJbWVtc2V0KCZTQ1RQX0JBU0VfVkFSKHBhY2tldF9sb2dfYnVmZmVyKSwgMCwgU0NUUF9QQUNL
RVRfTE9HX1NJWkUpOwogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5l
ZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJU0NUUF9CQVNFX1ZBUihz
Y3RwX21haW5fdGltZXJfdGlja3MpID0gMDsKIAlzY3RwX3N0YXJ0X21haW5fdGltZXIoKTsKIAl0
aW1lb3V0KHNjdHBfZGVsYXllZF9zdGFydHVwLCBOVUxMLCAxKTsKICNlbmRpZgorI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJU0NUUF9CQVNFX1ZB
UihlaF90YWcpID0gRVZFTlRIQU5ETEVSX1JFR0lTVEVSKHJ0X2FkZHJtc2csCisJICAgIHNjdHBf
YWRkcl9jaGFuZ2VfZXZlbnRfaGFuZGxlciwgTlVMTCwgRVZFTlRIQU5ETEVSX1BSSV9GSVJTVCk7
CisjZW5kaWYKIH0KIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZmRlZiBWSU1BR0UKIHN0YXRp
YyB2b2lkCiBzY3RwX2ZpbmlzaCh2b2lkICp1bnVzZWQgX191bnVzZWQpCiB7CisJRVZFTlRIQU5E
TEVSX0RFUkVHSVNURVIocnRfYWRkcm1zZywgU0NUUF9CQVNFX1ZBUihlaF90YWcpKTsKIAlzY3Rw
X3BjYl9maW5pc2goKTsKIH0KIFZORVRfU1lTVU5JTklUKHNjdHAsIFNJX1NVQl9QUk9UT19ET01B
SU4sIFNJX09SREVSX0ZPVVJUSCwgc2N0cF9maW5pc2gsIE5VTEwpOwpAQCAtMTgwLDcgKzE3Niw3
IEBAIFZORVRfU1lTVU5JTklUKHNjdHAsIFNJX1NVQl9QUk9UT19ET01BSU4sIFNJX09SREVSX0ZP
VVJUSCwgc2N0cF9maW5pc2gsIE5VTEwpOwogdm9pZAogc2N0cF9maW5pc2godm9pZCkKIHsKLSNp
ZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKIAl1bnRpbWVvdXQoc2N0cF9kZWxheWVkX3N0YXJ0dXAsIE5VTEwpOwog
CXNjdHBfb3Zlcl91ZHBfc3RvcCgpOwogCXNjdHBfYWRkcmVzc19tb25pdG9yX3N0b3AoKTsKQEAg
LTE5MCw1OSArMTg2LDEwIEBAIHNjdHBfZmluaXNoKHZvaWQpCiAjaWYgZGVmaW5lZChJTkVUKSB8
fCBkZWZpbmVkKElORVQ2KQogCXJlY3ZfdGhyZWFkX2Rlc3Ryb3koKTsKICNlbmRpZgotI2lmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCi0jaWYgZGVmaW5lZChJTkVUKSB8fCBkZWZp
bmVkKElORVQ2KQotCWlmIChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yb3V0ZSkgIT0gLTEpIHsK
LQkJcHRocmVhZF9qb2luKFNDVFBfQkFTRV9WQVIocmVjdnRocmVhZHJvdXRlKSwgTlVMTCk7Ci0J
fQotI2VuZGlmCi0jZW5kaWYKLSNpZmRlZiBJTkVUCi0JaWYgKFNDVFBfQkFTRV9WQVIodXNlcnNw
YWNlX3Jhd3NjdHApICE9IC0xKSB7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dz
KQotCQlXYWl0Rm9yU2luZ2xlT2JqZWN0KFNDVFBfQkFTRV9WQVIocmVjdnRocmVhZHJhdyksIElO
RklOSVRFKTsKLQkJQ2xvc2VIYW5kbGUoU0NUUF9CQVNFX1ZBUihyZWN2dGhyZWFkcmF3KSk7Ci0j
ZWxzZQotCQlwdGhyZWFkX2pvaW4oU0NUUF9CQVNFX1ZBUihyZWN2dGhyZWFkcmF3KSwgTlVMTCk7
Ci0jZW5kaWYKLQl9Ci0JaWYgKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNjdHApICE9IC0x
KSB7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQotCQlXYWl0Rm9yU2luZ2xl
T2JqZWN0KFNDVFBfQkFTRV9WQVIocmVjdnRocmVhZHVkcCksIElORklOSVRFKTsKLQkJQ2xvc2VI
YW5kbGUoU0NUUF9CQVNFX1ZBUihyZWN2dGhyZWFkdWRwKSk7Ci0jZWxzZQotCQlwdGhyZWFkX2pv
aW4oU0NUUF9CQVNFX1ZBUihyZWN2dGhyZWFkdWRwKSwgTlVMTCk7Ci0jZW5kaWYKLQl9Ci0jZW5k
aWYKLSNpZmRlZiBJTkVUNgotCWlmIChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3RwNikg
IT0gLTEpIHsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCi0JCVdhaXRGb3JT
aW5nbGVPYmplY3QoU0NUUF9CQVNFX1ZBUihyZWN2dGhyZWFkcmF3NiksIElORklOSVRFKTsKLQkJ
Q2xvc2VIYW5kbGUoU0NUUF9CQVNFX1ZBUihyZWN2dGhyZWFkcmF3NikpOwotI2Vsc2UKLQkJcHRo
cmVhZF9qb2luKFNDVFBfQkFTRV9WQVIocmVjdnRocmVhZHJhdzYpLCBOVUxMKTsKLSNlbmRpZgot
CX0KLQlpZiAoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfdWRwc2N0cDYpICE9IC0xKSB7Ci0jaWYg
ZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQotCQlXYWl0Rm9yU2luZ2xlT2JqZWN0KFND
VFBfQkFTRV9WQVIocmVjdnRocmVhZHVkcDYpLCBJTkZJTklURSk7Ci0JCUNsb3NlSGFuZGxlKFND
VFBfQkFTRV9WQVIocmVjdnRocmVhZHVkcDYpKTsKLSNlbHNlCi0JCXB0aHJlYWRfam9pbihTQ1RQ
X0JBU0VfVkFSKHJlY3Z0aHJlYWR1ZHA2KSwgTlVMTCk7Ci0jZW5kaWYKLQl9Ci0jZW5kaWYKLQlh
dG9taWNfY21wc2V0X2ludCgmU0NUUF9CQVNFX1ZBUih0aW1lcl90aHJlYWRfc2hvdWxkX2V4aXQp
LCAwLCAxKTsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCi0JV2FpdEZvclNp
bmdsZU9iamVjdChTQ1RQX0JBU0VfVkFSKHRpbWVyX3RocmVhZCksIElORklOSVRFKTsKLQlDbG9z
ZUhhbmRsZShTQ1RQX0JBU0VfVkFSKHRpbWVyX3RocmVhZCkpOwotI2Vsc2UKLQlwdGhyZWFkX2pv
aW4oU0NUUF9CQVNFX1ZBUih0aW1lcl90aHJlYWQpLCBOVUxMKTsKLSNlbmRpZgorCXNjdHBfc3Rv
cF90aW1lcl90aHJlYWQoKTsKICNlbmRpZgogCXNjdHBfcGNiX2ZpbmlzaCgpOwotI2lmIGRlZmlu
ZWQoX19XaW5kb3dzX18pCisjaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJc2N0cF9maW5pc2hfc3lzY3RscygpOwogI2VuZGlmCiB9CkBAIC0yODcsNyArMjM0
LDEwIEBAIHNjdHBfcGF0aG10dV9hZGp1c3RtZW50KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgdWlu
dDE2X3Qgbnh0c3opCiAJCQkJCQkgICAgICAgY2hrLT5yZWMuZGF0YS50c24pOwogCQkJCX0KIAkJ
CQkvKiBDbGVhciBhbnkgdGltZSBzbyBOTyBSVFQgaXMgYmVpbmcgZG9uZSAqLwotCQkJCWNoay0+
ZG9fcnR0ID0gMDsKKwkJCQlpZiAoY2hrLT5kb19ydHQgPT0gMSkgeworCQkJCQljaGstPmRvX3J0
dCA9IDA7CisJCQkJCWNoay0+d2hvVG8tPnJ0b19uZWVkZWQgPSAxOworCQkJCX0KIAkJCX0KIAkJ
fQogCX0KQEAgLTMwNCw3ICsyNTQsNyBAQCBzY3RwX25vdGlmeShzdHJ1Y3Qgc2N0cF9pbnBjYiAq
aW5wLAogICAgICAgICAgICAgdWludDE2X3QgaXBfbGVuLAogICAgICAgICAgICAgdWludDMyX3Qg
bmV4dF9tdHUpCiB7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19M
T0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJc3RydWN0IHNvY2tldCAqc287CiAjZW5kaWYKIAlpbnQgdGltZXJfc3RvcHBlZDsK
QEAgLTMyMSw5ICsyNzEsNyBAQCBzY3RwX25vdGlmeShzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAog
CSAgICAoaWNtcF9jb2RlID09IElDTVBfVU5SRUFDSF9JU09MQVRFRCkgfHwKIAkgICAgKGljbXBf
Y29kZSA9PSBJQ01QX1VOUkVBQ0hfTkVUX1BST0hJQikgfHwKIAkgICAgKGljbXBfY29kZSA9PSBJ
Q01QX1VOUkVBQ0hfSE9TVF9QUk9ISUIpIHx8Ci0jaWYgZGVmaW5lZChfX1BhbmRhX18pCi0JICAg
IChpY21wX2NvZGUgPT0gSUNNUF9VTlJFQUNIX0FETUlOKSkgewotI2VsaWYgZGVmaW5lZChfX1Vz
ZXJzcGFjZV9vc19OZXRCU0QpCisjaWYgZGVmaW5lZChfX05ldEJTRF9fKQogCSAgICAoaWNtcF9j
b2RlID09IElDTVBfVU5SRUFDSF9BRE1JTl9QUk9ISUJJVCkpIHsKICNlbHNlCiAJICAgIChpY21w
X2NvZGUgPT0gSUNNUF9VTlJFQUNIX0ZJTFRFUl9QUk9ISUIpKSB7CkBAIC0zNDIsNyArMjkwLDcg
QEAgc2N0cF9ub3RpZnkoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJICAgIChpY21wX2NvZGUg
PT0gSUNNUF9VTlJFQUNIX1BPUlQpKSB7CiAJCS8qIFRyZWF0IGl0IGxpa2UgYW4gQUJPUlQuICov
CiAJCXNjdHBfYWJvcnRfbm90aWZpY2F0aW9uKHN0Y2IsIDEsIDAsIE5VTEwsIFNDVFBfU09fTk9U
X0xPQ0tFRCk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NL
X1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAJCXNvID0gU0NUUF9JTlBfU08oaW5wKTsKIAkJYXRvbWljX2FkZF9pbnQoJnN0Y2ItPmFz
b2MucmVmY250LCAxKTsKIAkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwpAQCAtMzUyLDcgKzMwMCw3
IEBAIHNjdHBfbm90aWZ5KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAjZW5kaWYKIAkJKHZvaWQp
c2N0cF9mcmVlX2Fzc29jKGlucCwgc3RjYiwgU0NUUF9OT1JNQUxfUFJPQywKIAkJICAgICAgICAg
ICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX1VTUlJFUSArIFNDVFBfTE9DXzIpOwotI2lmIGRl
ZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRl
ZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlTQ1RQX1NPQ0tF
VF9VTkxPQ0soc28sIDEpOwogCQkvKiBTQ1RQX1RDQl9VTkxPQ0soc3RjYik7IE1UOiBJIHRoaW5r
IHRoaXMgaXMgbm90IG5lZWRlZC4qLwogI2VuZGlmCkBAIC0zODYsNyArMzM0LDcgQEAgc2N0cF9u
b3RpZnkoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJfQogCQlpZiAobmV0LT5tdHUgPiBuZXh0
X210dSkgewogCQkJbmV0LT5tdHUgPSBuZXh0X210dTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJ
CQlpZiAobmV0LT5wb3J0KSB7CiAJCQkJc2N0cF9oY19zZXRfbXR1KCZuZXQtPnJvLl9sX2FkZHIs
IGlucC0+ZmlibnVtLCBuZXh0X210dSArIHNpemVvZihzdHJ1Y3QgdWRwaGRyKSk7CiAJCQl9IGVs
c2UgewpAQCAtNDA5LDE5ICszNTcsMTUgQEAgc2N0cF9ub3RpZnkoc3RydWN0IHNjdHBfaW5wY2Ig
KmlucCwKIH0KICNlbmRpZgogCi0jaWYgIWRlZmluZWQoX19QYW5kYV9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBM
RV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiB2b2lkCi0jZWxzZQotdm9pZCAqCi0jZW5kaWYKICNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYg
IWRlZmluZWQoQVBQTEVfTEVPUEFSRCkgJiYgIWRlZmluZWQoQVBQTEVfU05PV0xFT1BBUkQpICYm
ICFkZWZpbmVkKEFQUExFX0xJT04pICYmICFkZWZpbmVkKEFQUExFX01PVU5UQUlOTElPTikgJiYg
IWRlZmluZWQoQVBQTEVfRUxDQVBJVEFOKQogc2N0cF9jdGxpbnB1dChpbnQgY21kLCBzdHJ1Y3Qg
c29ja2FkZHIgKnNhLCB2b2lkICp2aXAsIHN0cnVjdCBpZm5ldCAqaWZwIFNDVFBfVU5VU0VEKQog
I2Vsc2UKIHNjdHBfY3RsaW5wdXQoaW50IGNtZCwgc3RydWN0IHNvY2thZGRyICpzYSwgdm9pZCAq
dmlwKQogI2VuZGlmCiB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCXN0cnVjdCBpcCAqb3V0ZXJf
aXA7CiAjZW5kaWYKIAlzdHJ1Y3QgaXAgKmlubmVyX2lwOwpAQCAtNDMwLDMzICszNzQsMjUgQEAg
c2N0cF9jdGxpbnB1dChpbnQgY21kLCBzdHJ1Y3Qgc29ja2FkZHIgKnNhLCB2b2lkICp2aXApCiAJ
c3RydWN0IHNjdHBfaW5wY2IgKmlucDsKIAlzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2I7CiAJc3RydWN0
IHNjdHBfbmV0cyAqbmV0OwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzdHJ1Y3Qgc2N0cF9pbml0
X2NodW5rICpjaDsKICNlbmRpZgogCXN0cnVjdCBzb2NrYWRkcl9pbiBzcmMsIGRzdDsKIAogCWlm
IChzYS0+c2FfZmFtaWx5ICE9IEFGX0lORVQgfHwKIAkgICAgKChzdHJ1Y3Qgc29ja2FkZHJfaW4g
KilzYSktPnNpbl9hZGRyLnNfYWRkciA9PSBJTkFERFJfQU5ZKSB7Ci0jaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pCiAJ
CXJldHVybjsKLSNlbHNlCi0JCXJldHVybiAoTlVMTCk7Ci0jZW5kaWYKIAl9CiAJaWYgKFBSQ19J
U19SRURJUkVDVChjbWQpKSB7CiAJCXZpcCA9IE5VTEw7CiAJfSBlbHNlIGlmICgodW5zaWduZWQp
Y21kID49IFBSQ19OQ01EUyB8fCBpbmV0Y3RsZXJybWFwW2NtZF0gPT0gMCkgewotI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93
c19fKQogCQlyZXR1cm47Ci0jZWxzZQotCQlyZXR1cm4gKE5VTEwpOwotI2VuZGlmCiAJfQogCWlm
ICh2aXAgIT0gTlVMTCkgewogCQlpbm5lcl9pcCA9IChzdHJ1Y3QgaXAgKil2aXA7CiAJCWljbXAg
PSAoc3RydWN0IGljbXAgKikoKGNhZGRyX3QpaW5uZXJfaXAgLQogCQkgICAgKHNpemVvZihzdHJ1
Y3QgaWNtcCkgLSBzaXplb2Yoc3RydWN0IGlwKSkpOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJ
b3V0ZXJfaXAgPSAoc3RydWN0IGlwICopKChjYWRkcl90KWljbXAgLSBzaXplb2Yoc3RydWN0IGlw
KSk7CiAjZW5kaWYKIAkJc2ggPSAoc3RydWN0IHNjdHBoZHIgKikoKGNhZGRyX3QpaW5uZXJfaXAg
KyAoaW5uZXJfaXAtPmlwX2hsIDw8IDIpKTsKQEAgLTUwMCw3ICs0MzYsNyBAQCBzY3RwX2N0bGlu
cHV0KGludCBjbWQsIHN0cnVjdCBzb2NrYWRkciAqc2EsIHZvaWQgKnZpcCkKIAkJCQkJcmV0dXJu
OwogCQkJCX0KIAkJCX0gZWxzZSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCWlmIChudG9o
cyhvdXRlcl9pcC0+aXBfbGVuKSA+PQogCQkJCSAgICBzaXplb2Yoc3RydWN0IGlwKSArCiAJCQkJ
ICAgIDggKyAoaW5uZXJfaXAtPmlwX2hsIDw8IDIpICsgMjApIHsKQEAgLTUyNywyMyArNDYzLDMx
IEBAIHNjdHBfY3RsaW5wdXQoaW50IGNtZCwgc3RydWN0IHNvY2thZGRyICpzYSwgdm9pZCAqdmlw
KQogCQkJc2N0cF9ub3RpZnkoaW5wLCBzdGNiLCBuZXQsCiAJCQkgICAgICAgICAgICBpY21wLT5p
Y21wX3R5cGUsCiAJCQkgICAgICAgICAgICBpY21wLT5pY21wX2NvZGUsCi0jaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gMTAwMDAwMAorI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkgICAgICAgICAgICBu
dG9ocyhpbm5lcl9pcC0+aXBfbGVuKSwKICNlbHNlCiAJCQkgICAgICAgICAgICBpbm5lcl9pcC0+
aXBfbGVuLAogI2VuZGlmCiAJCQkgICAgICAgICAgICAodWludDMyX3QpbnRvaHMoaWNtcC0+aWNt
cF9uZXh0bXR1KSk7Ci0JCX0gZWxzZSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19G
cmVlQlNEX3ZlcnNpb24gPCA1MDAwMDAKLQkJCS8qCi0JCQkgKiBYWFggbXVzdCBiZSBmaXhlZCBm
b3IgNS54IGFuZCBoaWdoZXIsIGxlYXZlIGZvcgotCQkJICogNC54Ci0JCQkgKi8KLQkJCWlmIChQ
UkNfSVNfUkVESVJFQ1QoY21kKSAmJiAoaW5wICE9IE5VTEwpKSB7Ci0JCQkJaW5fcnRjaGFuZ2Uo
KHN0cnVjdCBpbnBjYiAqKWlucCwKLQkJCQkgICAgaW5ldGN0bGVycm1hcFtjbWRdKTsKKyNpZiBk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQlpZiAoIShzdGNiLT5zY3RwX2VwLT5zY3RwX2ZsYWdz
ICYgU0NUUF9QQ0JfRkxBR1NfU09DS0VUX0dPTkUpICYmCisJCQkgICAgKHN0Y2ItPnNjdHBfc29j
a2V0ICE9IE5VTEwpKSB7CisJCQkJc3RydWN0IHNvY2tldCAqdXBjYWxsX3NvY2tldDsKKworCQkJ
CXVwY2FsbF9zb2NrZXQgPSBzdGNiLT5zY3RwX3NvY2tldDsKKwkJCQlTT0NLX0xPQ0sodXBjYWxs
X3NvY2tldCk7CisJCQkJc29yZWYodXBjYWxsX3NvY2tldCk7CisJCQkJU09DS19VTkxPQ0sodXBj
YWxsX3NvY2tldCk7CisJCQkJaWYgKCh1cGNhbGxfc29ja2V0LT5zb191cGNhbGwgIT0gTlVMTCkg
JiYKKwkJCQkgICAgKHVwY2FsbF9zb2NrZXQtPnNvX2Vycm9yICE9IDApKSB7CisJCQkJCSgqdXBj
YWxsX3NvY2tldC0+c29fdXBjYWxsKSh1cGNhbGxfc29ja2V0LCB1cGNhbGxfc29ja2V0LT5zb191
cGNhbGxhcmcsIE1fTk9XQUlUKTsKKwkJCQl9CisJCQkJQUNDRVBUX0xPQ0soKTsKKwkJCQlTT0NL
X0xPQ0sodXBjYWxsX3NvY2tldCk7CisJCQkJc29yZWxlKHVwY2FsbF9zb2NrZXQpOwogCQkJfQog
I2VuZGlmCisJCX0gZWxzZSB7CiAJCQlpZiAoKHN0Y2IgPT0gTlVMTCkgJiYgKGlucCAhPSBOVUxM
KSkgewogCQkJCS8qIHJlZHVjZSByZWYtY291bnQgKi8KIAkJCQlTQ1RQX0lOUF9XTE9DSyhpbnAp
OwpAQCAtNTU1LDE2ICs0OTksMTIgQEAgc2N0cF9jdGxpbnB1dChpbnQgY21kLCBzdHJ1Y3Qgc29j
a2FkZHIgKnNhLCB2b2lkICp2aXApCiAJCQl9CiAJCX0KIAl9Ci0jaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pCiAJcmV0
dXJuOwotI2Vsc2UKLQlyZXR1cm4gKE5VTEwpOwotI2VuZGlmCiB9CiAjZW5kaWYKICNlbmRpZgog
Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogc3RhdGljIGludAogc2N0cF9nZXRjcmVkKFNZU0NUTF9I
QU5ETEVSX0FSR1MpCiB7CkBAIC01NzksMTQgKzUxOSw4IEBAIHNjdHBfZ2V0Y3JlZChTWVNDVExf
SEFORExFUl9BUkdTKQogCS8qIEZJWCwgZm9yIG5vbi1ic2QgaXMgdGhpcyByaWdodD8gKi8KIAl2
cmZfaWQgPSBTQ1RQX0RFRkFVTFRfVlJGSUQ7CiAKLSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDYw
MjAwMAogCWVycm9yID0gcHJpdl9jaGVjayhyZXEtPnRkLCBQUklWX05FVElORVRfR0VUQ1JFRCk7
CiAKLSNlbGlmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAwMAotCWVycm9yID0gc3VzZXIocmVx
LT50ZCk7Ci0jZWxzZQotCWVycm9yID0gc3VzZXIocmVxLT5wKTsKLSNlbmRpZgogCWlmIChlcnJv
cikKIAkJcmV0dXJuIChlcnJvcik7CiAKQEAgLTYzMSwyNyArNTY1LDMyIEBAIG91dDoKIAlyZXR1
cm4gKGVycm9yKTsKIH0KIAotU1lTQ1RMX1BST0MoX25ldF9pbmV0X3NjdHAsIE9JRF9BVVRPLCBn
ZXRjcmVkLCBDVExUWVBFX09QQVFVRSB8IENUTEZMQUdfUlcsCi0gICAgMCwgMCwgc2N0cF9nZXRj
cmVkLCAiUyx1Y3JlZCIsICJHZXQgdGhlIHVjcmVkIG9mIGEgU0NUUCBjb25uZWN0aW9uIik7Ci0j
ZW5kaWYJCQkJLyogI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICovCitTWVNDVExfUFJPQyhfbmV0
X2luZXRfc2N0cCwgT0lEX0FVVE8sIGdldGNyZWQsCisgICAgQ1RMVFlQRV9PUEFRVUUgfCBDVExG
TEFHX1JXIHwgQ1RMRkxBR19ORUVER0lBTlQsCisgICAgMCwgMCwgc2N0cF9nZXRjcmVkLCAiUyx1
Y3JlZCIsCisgICAgIkdldCB0aGUgdWNyZWQgb2YgYSBTQ1RQIGNvbm5lY3Rpb24iKTsKKyNlbmRp
ZgogCiAKICNpZmRlZiBJTkVUCi0jaWYgZGVmaW5lZChfX1BhbmRhX18pIHx8IGRlZmluZWQoX19X
aW5kb3dzX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiBkZWZpbmVkKF9XSU4zMikg
fHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogaW50Ci0jZWxpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDY5MDAwMAorI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykKIHN0YXRpYyB2b2lkCiAjZWxzZQogc3RhdGljIGludAogI2VuZGlmCiBzY3RwX2Fib3J0KHN0
cnVjdCBzb2NrZXQgKnNvKQogeworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCisJc3RydWN0IGVwb2NoX3RyYWNrZXIgZXQ7CisjZW5kaWYKIAlzdHJ1
Y3Qgc2N0cF9pbnBjYiAqaW5wOwogCXVpbnQzMl90IGZsYWdzOwogCiAJaW5wID0gKHN0cnVjdCBz
Y3RwX2lucGNiICopc28tPnNvX3BjYjsKIAlpZiAoaW5wID09IE5VTEwpIHsKLSNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDY5MDAwMAorI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCXJldHVybjsKICNlbHNl
CiAJCVNDVFBfTFRSQUNFX0VSUl9SRVQoTlVMTCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBf
VVNSUkVRLCBFSU5WQUwpOwpAQCAtNjU5LDYgKzU5OCw5IEBAIHNjdHBfYWJvcnQoc3RydWN0IHNv
Y2tldCAqc28pCiAjZW5kaWYKIAl9CiAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQorCU5FVF9FUE9DSF9FTlRFUihldCk7CisjZW5kaWYKICBzY3Rw
X211c3RfdHJ5X2FnYWluOgogCWZsYWdzID0gaW5wLT5zY3RwX2ZsYWdzOwogI2lmZGVmIFNDVFBf
TE9HX0NMT1NJTkcKQEAgLTY3OCw3ICs2MjAsNyBAQCBzY3RwX2Fib3J0KHN0cnVjdCBzb2NrZXQg
KnNvKQogCQkgKi8KIAkJU0NUUF9TQl9DTEVBUihzby0+c29fcmN2KTsKIAotI2lmIGRlZmluZWQo
X19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogCQlzby0+c29fdXNlY291bnQtLTsKICNlbHNlCiAJCS8qIE5vdyBudWxsIG91dCB0aGUg
cmVmZXJlbmNlLCB3ZSBhcmUgY29tcGxldGVseSBkZXRhY2hlZC4gKi8KQEAgLTY5MSwyMyArNjMz
LDI0IEBAIHNjdHBfYWJvcnQoc3RydWN0IHNvY2tldCAqc28pCiAJCQlnb3RvIHNjdHBfbXVzdF90
cnlfYWdhaW47CiAJCX0KIAl9Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNE
X3ZlcnNpb24gPiA2OTAwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQorCU5FVF9FUE9DSF9FWElUKGV0KTsKIAlyZXR1cm47CiAjZWxzZQogCXJl
dHVybiAoMCk7CiAjZW5kaWYKIH0KIAotI2lmIGRlZmluZWQoX19QYW5kYV9fKSB8fCBkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCisjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogaW50CiAjZWxzZQog
c3RhdGljIGludAogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNE
X3ZlcnNpb24gPj0gNTAwMDAwCi1zY3RwX2F0dGFjaChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IHBy
b3RvIFNDVFBfVU5VU0VELCBzdHJ1Y3QgdGhyZWFkICpwIFNDVFBfVU5VU0VEKQotI2VsaWYgZGVm
aW5lZChfX1BhbmRhX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiBkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiBzY3RwX2F0dGFjaChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IHByb3RvIFND
VFBfVU5VU0VELCB1aW50MzJfdCB2cmZfaWQpCi0jZWxpZiBkZWZpbmVkKF9fV2luZG93c19fKQor
I2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKK3NjdHBfYXR0YWNoKHN0cnVjdCBzb2NrZXQgKnNv
LCBpbnQgcHJvdG8gU0NUUF9VTlVTRUQsIHN0cnVjdCB0aHJlYWQgKnAgU0NUUF9VTlVTRUQpCisj
ZWxpZiBkZWZpbmVkKF9XSU4zMikKIHNjdHBfYXR0YWNoKHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQg
cHJvdG8gU0NUUF9VTlVTRUQsIFBLVEhSRUFEIHAgU0NUUF9VTlVTRUQpCiAjZWxzZQogc2N0cF9h
dHRhY2goc3RydWN0IHNvY2tldCAqc28sIGludCBwcm90byBTQ1RQX1VOVVNFRCwgc3RydWN0IHBy
b2MgKnAgU0NUUF9VTlVTRUQpCkBAIC03MTYsNyArNjU5LDcgQEAgc2N0cF9hdHRhY2goc3RydWN0
IHNvY2tldCAqc28sIGludCBwcm90byBTQ1RQX1VOVVNFRCwgc3RydWN0IHByb2MgKnAgU0NUUF9V
TlVTRUQKIAlzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wOwogCXN0cnVjdCBpbnBjYiAqaXBfaW5wOwog
CWludCBlcnJvcjsKLSNpZiAhZGVmaW5lZChfX1BhbmRhX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCisjaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAl1aW50MzJfdCB2cmZfaWQgPSBT
Q1RQX0RFRkFVTFRfVlJGSUQ7CiAjZW5kaWYKIApAQCAtNzQ1LDE4ICs2ODgsMTggQEAgc2N0cF9h
dHRhY2goc3RydWN0IHNvY2tldCAqc28sIGludCBwcm90byBTQ1RQX1VOVVNFRCwgc3RydWN0IHBy
b2MgKnAgU0NUUF9VTlVTRUQKIAlyZXR1cm4gKDApOwogfQogCi0jaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMDAwCisjaWYgZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQoraW50CitzY3RwX2JpbmQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRk
ciAqYWRkcikgeworCXZvaWQgKnAgPSBOVUxMOworI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykK
IHN0YXRpYyBpbnQKIHNjdHBfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRy
ICphZGRyLCBzdHJ1Y3QgdGhyZWFkICpwKQogewotI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
fHwgZGVmaW5lZChfX0FQUExFX18pCisjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKIHN0YXRpYyBp
bnQKIHNjdHBfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRyLCBz
dHJ1Y3QgcHJvYyAqcCkgewotI2VsaWYgZGVmaW5lZChfX1BhbmRhX18pIHx8IGRlZmluZWQoX19V
c2Vyc3BhY2VfXykKLWludAotc2N0cF9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29j
a2FkZHIgKmFkZHIpIHsKLQl2b2lkICpwID0gTlVMTDsKLSNlbGlmIGRlZmluZWQoX19XaW5kb3dz
X18pCisjZWxpZiBkZWZpbmVkKF9XSU4zMikKIHN0YXRpYyBpbnQKIHNjdHBfYmluZChzdHJ1Y3Qg
c29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRyLCBQS1RIUkVBRCBwKSB7CiAjZWxzZQpA
QCAtODQ4LDEwICs3OTEsMTMgQEAgc2N0cGNvbm5fYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3Ry
dWN0IHNvY2thZGRyICphZGRyKQogfQogCiAjZW5kaWYKLSNpZiAoZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPiA2OTAwMDApIHx8IGRlZmluZWQoX19XaW5kb3dzX18p
IHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBk
ZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogdm9pZAogc2N0cF9jbG9z
ZShzdHJ1Y3Qgc29ja2V0ICpzbykKIHsKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQorCXN0cnVjdCBlcG9jaF90cmFja2VyIGV0OworI2VuZGlmCiAJ
c3RydWN0IHNjdHBfaW5wY2IgKmlucDsKIAl1aW50MzJfdCBmbGFnczsKIApAQCAtODYyLDYgKzgw
OCw5IEBAIHNjdHBfY2xvc2Uoc3RydWN0IHNvY2tldCAqc28pCiAJLyogSW5mb3JtIGFsbCB0aGUg
bG93ZXIgbGF5ZXIgYXNzb2MgdGhhdCB3ZQogCSAqIGFyZSBkb25lLgogCSAqLworI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJTkVUX0VQT0NIX0VO
VEVSKGV0KTsKKyNlbmRpZgogIHNjdHBfbXVzdF90cnlfYWdhaW46CiAJZmxhZ3MgPSBpbnAtPnNj
dHBfZmxhZ3M7CiAjaWZkZWYgU0NUUF9MT0dfQ0xPU0lORwpAQCAtODk4LDcgKzg0Nyw3IEBAIHNj
dHBfY2xvc2Uoc3RydWN0IHNvY2tldCAqc28pCiAJCSAqLwogCQlTQ1RQX1NCX0NMRUFSKHNvLT5z
b19yY3YpOwogCi0jaWYgIWRlZmluZWQoX19BUFBMRV9fKQorI2lmICEoZGVmaW5lZChfX0FQUExF
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pKQogCQkvKiBOb3cgbnVsbCBvdXQgdGhlIHJl
ZmVyZW5jZSwgd2UgYXJlIGNvbXBsZXRlbHkgZGV0YWNoZWQuICovCiAJCXNvLT5zb19wY2IgPSBO
VUxMOwogI2VuZGlmCkBAIC05MDksNiArODU4LDkgQEAgc2N0cF9jbG9zZShzdHJ1Y3Qgc29ja2V0
ICpzbykKIAkJCWdvdG8gc2N0cF9tdXN0X3RyeV9hZ2FpbjsKIAkJfQogCX0KKyNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCU5FVF9FUE9DSF9FWElU
KGV0KTsKKyNlbmRpZgogCXJldHVybjsKIH0KIApAQCAtOTIzLDcgKzg3NSw3IEBAIHNjdHBfZGV0
YWNoKHN0cnVjdCBzb2NrZXQgKnNvKQogCiAJaW5wID0gKHN0cnVjdCBzY3RwX2lucGNiICopc28t
PnNvX3BjYjsKIAlpZiAoaW5wID09IE5VTEwpIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDY5MDAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCXJldHVybjsKICNlbHNlCiAJCVNDVFBfTFRSQUNF
X0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIEVJTlZBTCk7
CkBAIC05NjQsNyArOTE2LDcgQEAgc2N0cF9kZXRhY2goc3RydWN0IHNvY2tldCAqc28pCiAJCSAq
IGhlcmUgZm9yIHRoZSBhY2NvdW50aW5nL3NlbGVjdC4KIAkJICovCiAJCVNDVFBfU0JfQ0xFQVIo
c28tPnNvX3Jjdik7Ci0jaWYgIWRlZmluZWQoX19BUFBMRV9fKQorI2lmICEoZGVmaW5lZChfX0FQ
UExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pKQogCQkvKiBOb3cgZGlzY29ubmVjdCAq
LwogCQlzby0+c29fcGNiID0gTlVMTDsKICNlbmRpZgpAQCAtOTc0LDcgKzkyNiw3IEBAIHNjdHBf
ZGV0YWNoKHN0cnVjdCBzb2NrZXQgKnNvKQogCQkJZ290byBzY3RwX211c3RfdHJ5X2FnYWluOwog
CQl9CiAJfQotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID4g
NjkwMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKIAlyZXR1cm47CiAjZWxzZQogCXJldHVybiAoMCk7CkBAIC05ODUsOSArOTM3LDkgQEAgc2N0
cF9kZXRhY2goc3RydWN0IHNvY2tldCAqc28pCiAjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
LyogX19Vc2Vyc3BhY2VfXyBpcyBub3QgY2FsbGluZyBzY3RwX3NlbmRtICovCiAjZW5kaWYKLSNp
ZiAhKGRlZmluZWQoX19QYW5kYV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKSkKKyNpZiAhKGRl
ZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkKIGludAotI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAwMAorI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBzY3RwX3NlbmRtKHN0
cnVjdCBzb2NrZXQgKnNvLCBpbnQgZmxhZ3MsIHN0cnVjdCBtYnVmICptLCBzdHJ1Y3Qgc29ja2Fk
ZHIgKmFkZHIsCiAgICAgc3RydWN0IG1idWYgKmNvbnRyb2wsIHN0cnVjdCB0aHJlYWQgKnApOwog
CkBAIC05OTgsNyArOTUwLDcgQEAgc2N0cF9zZW5kbShzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IGZs
YWdzLCBzdHJ1Y3QgbWJ1ZiAqbSwgc3RydWN0IHNvY2thZGRyICphZGRyLAogI2VuZGlmCiAKIGlu
dAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAw
MAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBz
Y3RwX3NlbmRtKHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgZmxhZ3MsIHN0cnVjdCBtYnVmICptLCBz
dHJ1Y3Qgc29ja2FkZHIgKmFkZHIsCiAgICAgc3RydWN0IG1idWYgKmNvbnRyb2wsIHN0cnVjdCB0
aHJlYWQgKnApCiB7CkBAIC0xMDUyLDcgKzEwMDQsNiBAQCBjb25uZWN0ZWRfdHlwZToKIAkvKiBu
b3cgd2hhdCBhYm91dCBjb250cm9sICovCiAJaWYgKGNvbnRyb2wpIHsKIAkJaWYgKGlucC0+Y29u
dHJvbCkgewotCQkJU0NUUF9QUklOVEYoImh1aD8gY29udHJvbCBzZXQ/XG4iKTsKIAkJCXNjdHBf
bV9mcmVlbShpbnAtPmNvbnRyb2wpOwogCQkJaW5wLT5jb250cm9sID0gTlVMTDsKIAkJfQpAQCAt
MTA2Niw3ICsxMDE3LDcgQEAgY29ubmVjdGVkX3R5cGU6CiAJCWlucC0+cGt0X2xhc3QgPSBpbnAt
PnBrdCA9IG07CiAJfQogCWlmICgKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVk
KF9fQVBQTEVfXykKKyNpZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExF
X18pKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCS8qIEZyZWVCU0QgdXNlcyBhIGZsYWcg
cGFzc2VkICovCiAJICAgICgoZmxhZ3MgJiBQUlVTX01PUkVUT0NPTUUpID09IDApCiAjZWxzZQpA
QCAtMTA4Miw5ICsxMDMzLDE4IEBAIGNvbm5lY3RlZF90eXBlOgogCQkgKiBkZWZpbml0aW9ucykg
YnV0IHRoaXMgaXMgbm90IGFkdmlzYWJsZS4gVGhpcyBjb2RlIGlzIHVzZWQKIAkJICogYnkgRnJl
ZUJTRCB3aGVuIHNlbmRpbmcgYSBmaWxlIHdpdGggc2VuZGZpbGUoKSB0aG91Z2guCiAJCSAqLwor
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCXN0
cnVjdCBlcG9jaF90cmFja2VyIGV0OworI2VuZGlmCiAJCWludCByZXQ7CiAKKyNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCU5FVF9FUE9DSF9FTlRF
UihldCk7CisjZW5kaWYKIAkJcmV0ID0gc2N0cF9vdXRwdXQoaW5wLCBpbnAtPnBrdCwgYWRkciwg
aW5wLT5jb250cm9sLCBwLCBmbGFncyk7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKKwlORVRfRVBPQ0hfRVhJVChldCk7CisjZW5kaWYKIAkJaW5w
LT5wa3QgPSBOVUxMOwogCQlpbnAtPmNvbnRyb2wgPSBOVUxMOwogCQlyZXR1cm4gKHJldCk7CkBA
IC0xMTEyLDYgKzEwNzIsOSBAQCBzY3RwX2Rpc2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28pCiAJ
CQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CiAJCQlyZXR1cm4gKDApOwogCQl9IGVsc2UgeworI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQlzdHJ1
Y3QgZXBvY2hfdHJhY2tlciBldDsKKyNlbmRpZgogCQkJc3RydWN0IHNjdHBfYXNzb2NpYXRpb24g
KmFzb2M7CiAJCQlzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2I7CiAKQEAgLTExMjksNiArMTA5Miw5IEBA
IHNjdHBfZGlzY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbykKIAkJCQlTQ1RQX0lOUF9SVU5MT0NL
KGlucCk7CiAJCQkJcmV0dXJuICgwKTsKIAkJCX0KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQkJTkVUX0VQT0NIX0VOVEVSKGV0KTsKKyNlbmRp
ZgogI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCWlmICgoKHNvLT5zb19vcHRpb25zICYg
U0NUUF9TT19MSU5HRVIpICYmCiAJCQkgICAgIChzby0+c29fbGluZ2VyID09IDApKSB8fApAQCAt
MTEzOCw4ICsxMTA0LDcgQEAgc2N0cF9kaXNjb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvKQogCQkJ
ICAgICAoc28tPnNvX2xpbmdlciA9PSAwKSkgfHwKIAkJCSAgICAoc28tPnNvX3Jjdi5zYl9jYyA+
IDApKSB7CiAjZW5kaWYKLQkJCQlpZiAoU0NUUF9HRVRfU1RBVEUoYXNvYykgIT0KLQkJCQkgICAg
U0NUUF9TVEFURV9DT09LSUVfV0FJVCkgeworCQkJCWlmIChTQ1RQX0dFVF9TVEFURShzdGNiKSAh
PSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB7CiAJCQkJCS8qIExlZnQgd2l0aCBEYXRhIHVucmVh
ZCAqLwogCQkJCQlzdHJ1Y3QgbWJ1ZiAqb3BfZXJyOwogCkBAIC0xMTQ4LDEzICsxMTEzLDE2IEBA
IHNjdHBfZGlzY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbykKIAkJCQkJU0NUUF9TVEFUX0lOQ1Jf
Q09VTlRFUjMyKHNjdHBzX2Fib3J0ZWQpOwogCQkJCX0KIAkJCQlTQ1RQX0lOUF9SVU5MT0NLKGlu
cCk7Ci0JCQkJaWYgKChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9P
UEVOKSB8fAotCQkJCSAgICAoU0NUUF9HRVRfU1RBVEUoJnN0Y2ItPmFzb2MpID09IFNDVFBfU1RB
VEVfU0hVVERPV05fUkVDRUlWRUQpKSB7CisJCQkJaWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSA9
PSBTQ1RQX1NUQVRFX09QRU4pIHx8CisJCQkJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBT
Q1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgewogCQkJCQlTQ1RQX1NUQVRfREVDUl9HQVVH
RTMyKHNjdHBzX2N1cnJlc3RhYik7CiAJCQkJfQogCQkJCSh2b2lkKXNjdHBfZnJlZV9hc3NvYyhp
bnAsIHN0Y2IsIFNDVFBfTk9STUFMX1BST0MsCiAJCQkJICAgICAgICAgICAgICAgICAgICAgIFND
VFBfRlJPTV9TQ1RQX1VTUlJFUSArIFNDVFBfTE9DXzMpOwogCQkJCS8qIE5vIHVubG9jayB0Y2Ig
YXNzb2MgaXMgZ29uZSAqLworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCisJCQkJTkVUX0VQT0NIX0VYSVQoZXQpOworI2VuZGlmCiAJCQkJcmV0dXJu
ICgwKTsKIAkJCX0KIAkJCWlmIChUQUlMUV9FTVBUWSgmYXNvYy0+c2VuZF9xdWV1ZSkgJiYKQEAg
LTExNjQsMTcgKzExMzIsMTYgQEAgc2N0cF9kaXNjb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvKQog
CQkJCWlmICgoKmFzb2MtPnNzX2Z1bmN0aW9ucy5zY3RwX3NzX2lzX3VzZXJfbXNnc19pbmNvbXBs
ZXRlKShzdGNiLCBhc29jKSkgewogCQkJCQlnb3RvIGFib3J0X2FueXdheTsKIAkJCQl9Ci0JCQkJ
aWYgKChTQ1RQX0dFVF9TVEFURShhc29jKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpICYm
Ci0JCQkJICAgIChTQ1RQX0dFVF9TVEFURShhc29jKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX0FD
S19TRU5UKSkgeworCQkJCWlmICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9TVEFURV9T
SFVURE9XTl9TRU5UKSAmJgorCQkJCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9T
VEFURV9TSFVURE9XTl9BQ0tfU0VOVCkpIHsKIAkJCQkJLyogb25seSBzZW5kIFNIVVRET1dOIDFz
dCB0aW1lIHRocnUgKi8KIAkJCQkJc3RydWN0IHNjdHBfbmV0cyAqbmV0cDsKIAotCQkJCQlpZiAo
KFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfT1BFTikgfHwKLQkJCQkJICAgIChT
Q1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgewor
CQkJCQlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfT1BFTikgfHwKKwkJ
CQkJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJ
VkVEKSkgewogCQkJCQkJU0NUUF9TVEFUX0RFQ1JfR0FVR0UzMihzY3Rwc19jdXJyZXN0YWIpOwog
CQkJCQl9Ci0JCQkJCVNDVFBfU0VUX1NUQVRFKGFzb2MsIFNDVFBfU1RBVEVfU0hVVERPV05fU0VO
VCk7Ci0JCQkJCVNDVFBfQ0xFQVJfU1VCU1RBVEUoYXNvYywgU0NUUF9TVEFURV9TSFVURE9XTl9Q
RU5ESU5HKTsKKwkJCQkJU0NUUF9TRVRfU1RBVEUoc3RjYiwgU0NUUF9TVEFURV9TSFVURE9XTl9T
RU5UKTsKIAkJCQkJc2N0cF9zdG9wX3RpbWVyc19mb3Jfc2h1dGRvd24oc3RjYik7CiAJCQkJCWlm
IChzdGNiLT5hc29jLmFsdGVybmF0ZSkgewogCQkJCQkJbmV0cCA9IHN0Y2ItPmFzb2MuYWx0ZXJu
YXRlOwpAQCAtMTE4Myw5ICsxMTUwLDkgQEAgc2N0cF9kaXNjb25uZWN0KHN0cnVjdCBzb2NrZXQg
KnNvKQogCQkJCQl9CiAJCQkJCXNjdHBfc2VuZF9zaHV0ZG93bihzdGNiLG5ldHApOwogCQkJCQlz
Y3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9TSFVURE9XTiwKLQkJCQkJCQkgc3RjYi0+
c2N0cF9lcCwgc3RjYiwgbmV0cCk7CisJCQkJCSAgICAgICAgICAgICAgICAgc3RjYi0+c2N0cF9l
cCwgc3RjYiwgbmV0cCk7CiAJCQkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NI
VVRET1dOR1VBUkQsCi0JCQkJCQkJIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIG5ldHApOworCQkJCQkg
ICAgICAgICAgICAgICAgIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIE5VTEwpOwogCQkJCQlzY3RwX2No
dW5rX291dHB1dChzdGNiLT5zY3RwX2VwLCBzdGNiLCBTQ1RQX09VVFBVVF9GUk9NX1QzLCBTQ1RQ
X1NPX0xPQ0tFRCk7CiAJCQkJfQogCQkJfSBlbHNlIHsKQEAgLTExOTksMTggKzExNjYsMTAgQEAg
c2N0cF9kaXNjb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvKQogCQkJCSAqIHdlIHdpbGwgYWxsb3cg
dXNlciBkYXRhIHRvIGJlIHNlbnQgZmlyc3QKIAkJCQkgKiBhbmQgbW92ZSB0byBTSFVURE9XTi1Q
RU5ESU5HCiAJCQkJICovCi0JCQkJc3RydWN0IHNjdHBfbmV0cyAqbmV0cDsKLQkJCQlpZiAoc3Rj
Yi0+YXNvYy5hbHRlcm5hdGUpIHsKLQkJCQkJbmV0cCA9IHN0Y2ItPmFzb2MuYWx0ZXJuYXRlOwot
CQkJCX0gZWxzZSB7Ci0JCQkJCW5ldHAgPSBzdGNiLT5hc29jLnByaW1hcnlfZGVzdGluYXRpb247
Ci0JCQkJfQotCi0JCQkJYXNvYy0+c3RhdGUgfD0gU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5H
OwotCQkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NIVVRET1dOR1VBUkQsIHN0
Y2ItPnNjdHBfZXAsIHN0Y2IsCi0JCQkJCQkgbmV0cCk7CisJCQkJU0NUUF9BRERfU1VCU1RBVEUo
c3RjYiwgU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HKTsKKwkJCQlzY3RwX3RpbWVyX3N0YXJ0
KFNDVFBfVElNRVJfVFlQRV9TSFVURE9XTkdVQVJELCBzdGNiLT5zY3RwX2VwLCBzdGNiLCBOVUxM
KTsKIAkJCQlpZiAoKCphc29jLT5zc19mdW5jdGlvbnMuc2N0cF9zc19pc191c2VyX21zZ3NfaW5j
b21wbGV0ZSkoc3RjYiwgYXNvYykpIHsKLQkJCQkJYXNvYy0+c3RhdGUgfD0gU0NUUF9TVEFURV9Q
QVJUSUFMX01TR19MRUZUOworCQkJCQlTQ1RQX0FERF9TVUJTVEFURShzdGNiLCBTQ1RQX1NUQVRF
X1BBUlRJQUxfTVNHX0xFRlQpOwogCQkJCX0KIAkJCQlpZiAoVEFJTFFfRU1QVFkoJmFzb2MtPnNl
bmRfcXVldWUpICYmCiAJCQkJICAgIFRBSUxRX0VNUFRZKCZhc29jLT5zZW50X3F1ZXVlKSAmJgpA
QCAtMTIyMSwxOSArMTE4MCwyNSBAQCBzY3RwX2Rpc2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28p
CiAJCQkJCXN0Y2ItPnNjdHBfZXAtPmxhc3RfYWJvcnRfY29kZSA9IFNDVFBfRlJPTV9TQ1RQX1VT
UlJFUSArIFNDVFBfTE9DXzQ7CiAJCQkJCXNjdHBfc2VuZF9hYm9ydF90Y2Ioc3RjYiwgb3BfZXJy
LCBTQ1RQX1NPX0xPQ0tFRCk7CiAJCQkJCVNDVFBfU1RBVF9JTkNSX0NPVU5URVIzMihzY3Rwc19h
Ym9ydGVkKTsKLQkJCQkJaWYgKChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9T
VEFURV9PUEVOKSB8fAotCQkJCQkgICAgKFNDVFBfR0VUX1NUQVRFKCZzdGNiLT5hc29jKSA9PSBT
Q1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgeworCQkJCQlpZiAoKFNDVFBfR0VUX1NUQVRF
KHN0Y2IpID09IFNDVFBfU1RBVEVfT1BFTikgfHwKKwkJCQkJICAgIChTQ1RQX0dFVF9TVEFURShz
dGNiKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgewogCQkJCQkJU0NUUF9TVEFU
X0RFQ1JfR0FVR0UzMihzY3Rwc19jdXJyZXN0YWIpOwogCQkJCQl9CiAJCQkJCVNDVFBfSU5QX1JV
TkxPQ0soaW5wKTsKIAkJCQkJKHZvaWQpc2N0cF9mcmVlX2Fzc29jKGlucCwgc3RjYiwgU0NUUF9O
T1JNQUxfUFJPQywKIAkJCQkJICAgICAgICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX1VT
UlJFUSArIFNDVFBfTE9DXzUpOworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCisJCQkJCU5FVF9FUE9DSF9FWElUKGV0KTsKKyNlbmRpZgogCQkJCQly
ZXR1cm4gKDApOwogCQkJCX0gZWxzZSB7CiAJCQkJCXNjdHBfY2h1bmtfb3V0cHV0KGlucCwgc3Rj
YiwgU0NUUF9PVVRQVVRfRlJPTV9DTE9TSU5HLCBTQ1RQX1NPX0xPQ0tFRCk7CiAJCQkJfQogCQkJ
fQogCQkJc29pc2Rpc2Nvbm5lY3Rpbmcoc28pOworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQlORVRfRVBPQ0hfRVhJVChldCk7CisjZW5kaWYK
IAkJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKIAkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKIAkJ
CXJldHVybiAoMCk7CkBAIC0xMjQ3LDcgKzEyMTIsNyBAQCBzY3RwX2Rpc2Nvbm5lY3Qoc3RydWN0
IHNvY2tldCAqc28pCiAJfQogfQogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5l
ZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pIHx8IGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBp
bnQKIHNjdHBfZmx1c2goc3RydWN0IHNvY2tldCAqc28sIGludCBob3cpCiB7CkBAIC0xMzEzLDcg
KzEyNzgsNyBAQCBzY3RwX3NodXRkb3duKHN0cnVjdCBzb2NrZXQgKnNvKQogCWlmICghKChpbnAt
PnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCSAgICAgIChpbnAtPnNj
dHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSkpIHsKIAkJLyogUmVzdG9yZSB0
aGUgZmxhZ3MgdGhhdCB0aGUgc29zaHV0ZG93biB0b29rIGF3YXkuICovCi0jaWYgKGRlZmluZWQo
X19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMjExNSkgfHwgZGVmaW5lZChf
X1dpbmRvd3NfXykKKyNpZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfV0lOMzIp
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlTT0NLQlVGX0xPQ0soJnNvLT5zb19yY3Yp
OwogCQlzby0+c29fcmN2LnNiX3N0YXRlICY9IH5TQlNfQ0FOVFJDVk1PUkU7CiAJCVNPQ0tCVUZf
VU5MT0NLKCZzby0+c29fcmN2KTsKQEAgLTEzMzIsNiArMTI5Nyw5IEBAIHNjdHBfc2h1dGRvd24o
c3RydWN0IHNvY2tldCAqc28pCiAJCSAqIGEgU0hVVF9XUiBvciBTSFVUX1JEV1IuCiAJCSAqIFRo
aXMgbWVhbnMgd2UgcHV0IHRoZSBzaHV0ZG93biBmbGFnIGFnYWluc3QgaXQuCiAJCSAqLworI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCXN0cnVj
dCBlcG9jaF90cmFja2VyIGV0OworI2VuZGlmCiAJCXN0cnVjdCBzY3RwX3RjYiAqc3RjYjsKIAkJ
c3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2M7CiAJCXN0cnVjdCBzY3RwX25ldHMgKm5ldHA7
CkBAIC0xMzYwLDkgKzEzMjgsOSBAQCBzY3RwX3NodXRkb3duKHN0cnVjdCBzb2NrZXQgKnNvKQog
CQkJU0NUUF9JTlBfUlVOTE9DSyhpbnApOwogCQkJcmV0dXJuICgwKTsKIAkJfQotCQlpZiAoKFND
VFBfR0VUX1NUQVRFKGFzb2MpICE9IFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQpICYmCi0JCSAgICAo
U0NUUF9HRVRfU1RBVEUoYXNvYykgIT0gU0NUUF9TVEFURV9DT09LSUVfRUNIT0VEKSAmJgotCQkg
ICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpICE9IFNDVFBfU1RBVEVfT1BFTikpIHsKKwkJaWYgKChT
Q1RQX0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSAmJgorCQkgICAg
KFNDVFBfR0VUX1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCkgJiYKKwkJ
ICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQX1NUQVRFX09QRU4pKSB7CiAJCQkvKiBJ
ZiB3ZSBhcmUgbm90IGluIG9yIGJlZm9yZSBFU1RBQkxJU0hFRCwgdGhlcmUgaXMKIAkJCSAqIG5v
IHByb3RvY29sIGFjdGlvbiByZXF1aXJlZC4KIAkJCSAqLwpAQCAtMTM3MCwxMiArMTMzOCwxNSBA
QCBzY3RwX3NodXRkb3duKHN0cnVjdCBzb2NrZXQgKnNvKQogCQkJU0NUUF9JTlBfUlVOTE9DSyhp
bnApOwogCQkJcmV0dXJuICgwKTsKIAkJfQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCU5FVF9FUE9DSF9FTlRFUihldCk7CisjZW5kaWYKIAkJ
aWYgKHN0Y2ItPmFzb2MuYWx0ZXJuYXRlKSB7CiAJCQluZXRwID0gc3RjYi0+YXNvYy5hbHRlcm5h
dGU7CiAJCX0gZWxzZSB7CiAJCQluZXRwID0gc3RjYi0+YXNvYy5wcmltYXJ5X2Rlc3RpbmF0aW9u
OwogCQl9Ci0JCWlmICgoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9PUEVOKSAm
JgorCQlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfT1BFTikgJiYKIAkJ
ICAgIFRBSUxRX0VNUFRZKCZhc29jLT5zZW5kX3F1ZXVlKSAmJgogCQkgICAgVEFJTFFfRU1QVFko
JmFzb2MtPnNlbnRfcXVldWUpICYmCiAJCSAgICAoYXNvYy0+c3RyZWFtX3F1ZXVlX2NudCA9PSAw
KSkgewpAQCAtMTM4NCw4ICsxMzU1LDcgQEAgc2N0cF9zaHV0ZG93bihzdHJ1Y3Qgc29ja2V0ICpz
bykKIAkJCX0KIAkJCS8qIHRoZXJlIGlzIG5vdGhpbmcgcXVldWVkIHRvIHNlbmQsIHNvIEknbSBk
b25lLi4uICovCiAJCQlTQ1RQX1NUQVRfREVDUl9HQVVHRTMyKHNjdHBzX2N1cnJlc3RhYik7Ci0J
CQlTQ1RQX1NFVF9TVEFURShhc29jLCBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpOwotCQkJU0NU
UF9DTEVBUl9TVUJTVEFURShhc29jLCBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJTkcpOworCQkJ
U0NUUF9TRVRfU1RBVEUoc3RjYiwgU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKTsKIAkJCXNjdHBf
c3RvcF90aW1lcnNfZm9yX3NodXRkb3duKHN0Y2IpOwogCQkJc2N0cF9zZW5kX3NodXRkb3duKHN0
Y2IsIG5ldHApOwogCQkJc2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfU0hVVERPV04s
CkBAIC0xMzk1LDkgKzEzNjUsOSBAQCBzY3RwX3NodXRkb3duKHN0cnVjdCBzb2NrZXQgKnNvKQog
CQkJICogV2Ugc3RpbGwgZ290IChvciBqdXN0IGdvdCkgZGF0YSB0byBzZW5kLCBzbyBzZXQKIAkJ
CSAqIFNIVVRET1dOX1BFTkRJTkcuCiAJCQkgKi8KLQkJCVNDVFBfQUREX1NVQlNUQVRFKGFzb2Ms
IFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORyk7CisJCQlTQ1RQX0FERF9TVUJTVEFURShzdGNi
LCBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJTkcpOwogCQkJaWYgKCgqYXNvYy0+c3NfZnVuY3Rp
b25zLnNjdHBfc3NfaXNfdXNlcl9tc2dzX2luY29tcGxldGUpKHN0Y2IsIGFzb2MpKSB7Ci0JCQkJ
U0NUUF9BRERfU1VCU1RBVEUoYXNvYywgU0NUUF9TVEFURV9QQVJUSUFMX01TR19MRUZUKTsKKwkJ
CQlTQ1RQX0FERF9TVUJTVEFURShzdGNiLCBTQ1RQX1NUQVRFX1BBUlRJQUxfTVNHX0xFRlQpOwog
CQkJfQogCQkJaWYgKFRBSUxRX0VNUFRZKCZhc29jLT5zZW5kX3F1ZXVlKSAmJgogCQkJICAgIFRB
SUxRX0VNUFRZKCZhc29jLT5zZW50X3F1ZXVlKSAmJgpAQCAtMTQwNiwxNyArMTM3NiwyMyBAQCBz
Y3RwX3NodXRkb3duKHN0cnVjdCBzb2NrZXQgKnNvKQogCQkJYWJvcnRfYW55d2F5OgogCQkJCW9w
X2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9DQVVTRV9VU0VSX0lOSVRJQVRFRF9BQlQs
ICIiKTsKIAkJCQlzdGNiLT5zY3RwX2VwLT5sYXN0X2Fib3J0X2NvZGUgPSBTQ1RQX0ZST01fU0NU
UF9VU1JSRVEgKyBTQ1RQX0xPQ182OworCQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKIAkJCQlz
Y3RwX2Fib3J0X2FuX2Fzc29jaWF0aW9uKHN0Y2ItPnNjdHBfZXAsIHN0Y2IsCiAJCQkJCQkJICBv
cF9lcnIsIFNDVFBfU09fTE9DS0VEKTsKLQkJCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CisjaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJCQlORVRf
RVBPQ0hfRVhJVChldCk7CisjZW5kaWYKIAkJCQlyZXR1cm4gKDApOwogCQkJfQogCQl9Ci0JCXNj
dHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NIVVRET1dOR1VBUkQsIHN0Y2ItPnNjdHBf
ZXAsIHN0Y2IsIG5ldHApOworCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9TSFVU
RE9XTkdVQVJELCBzdGNiLT5zY3RwX2VwLCBzdGNiLCBOVUxMKTsKIAkJLyogWFhYOiBXaHkgZG8g
dGhpcyBpbiB0aGUgY2FzZSB3aGVyZSB3ZSBoYXZlIHN0aWxsIGRhdGEgcXVldWVkPyAqLwogCQlz
Y3RwX2NodW5rX291dHB1dChpbnAsIHN0Y2IsIFNDVFBfT1VUUFVUX0ZST01fQ0xPU0lORywgU0NU
UF9TT19MT0NLRUQpOwogCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CiAJCVNDVFBfSU5QX1JVTkxP
Q0soaW5wKTsKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQorCQlORVRfRVBPQ0hfRVhJVChldCk7CisjZW5kaWYKIAkJcmV0dXJuICgwKTsKIAl9CiB9
CkBAIC0xNDI2LDMzICsxNDAyLDMzIEBAIHNjdHBfc2h1dGRvd24oc3RydWN0IHNvY2tldCAqc28p
CiAgKiByZXR1cm5zIDAgb24gc3VjY2VzcywgMSBvbiBlcnJvcgogICovCiBzdGF0aWMgdWludDMy
X3QKLXNjdHBfZmlsbF91c2VyX2FkZHJlc3Moc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKnNzLCBz
dHJ1Y3Qgc29ja2FkZHIgKnNhKQorc2N0cF9maWxsX3VzZXJfYWRkcmVzcyhzdHJ1Y3Qgc29ja2Fk
ZHIgKmRzdCwgc3RydWN0IHNvY2thZGRyICpzcmMpCiB7CiAjaWZkZWYgSU5FVDYKICNpZiBkZWZp
bmVkKFNDVFBfRU1CRURERURfVjZfU0NPUEUpCiAJc3RydWN0IHNvY2thZGRyX2luNiBsc2E2Owog
Ci0Jc2EgPSAoc3RydWN0IHNvY2thZGRyICopc2N0cF9yZWNvdmVyX3Njb3BlKChzdHJ1Y3Qgc29j
a2FkZHJfaW42ICopc2EsCisJc3JjID0gKHN0cnVjdCBzb2NrYWRkciAqKXNjdHBfcmVjb3Zlcl9z
Y29wZSgoc3RydWN0IHNvY2thZGRyX2luNiAqKXNyYywKIAkgICAgJmxzYTYpOwogI2VuZGlmCiAj
ZW5kaWYKICNpZmRlZiBIQVZFX1NBX0xFTgotCW1lbWNweShzcywgc2EsIHNhLT5zYV9sZW4pOwor
CW1lbWNweShkc3QsIHNyYywgc3JjLT5zYV9sZW4pOwogI2Vsc2UKLQlzd2l0Y2ggKHNhLT5zYV9m
YW1pbHkpIHsKKwlzd2l0Y2ggKHNyYy0+c2FfZmFtaWx5KSB7CiAjaWZkZWYgSU5FVAogCWNhc2Ug
QUZfSU5FVDoKLQkJbWVtY3B5KHNzLCBzYSwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOwor
CQltZW1jcHkoZHN0LCBzcmMsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKIAkJYnJlYWs7
CiAjZW5kaWYKICNpZmRlZiBJTkVUNgogCWNhc2UgQUZfSU5FVDY6Ci0JCW1lbWNweShzcywgc2Es
IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSk7CisJCW1lbWNweShkc3QsIHNyYywgc2l6ZW9m
KHN0cnVjdCBzb2NrYWRkcl9pbjYpKTsKIAkJYnJlYWs7CiAjZW5kaWYKICNpZiBkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAJY2FzZSBBRl9DT05OOgotCQltZW1jcHkoc3MsIHNhLCBzaXplb2Yoc3Ry
dWN0IHNvY2thZGRyX2Nvbm4pKTsKKwkJbWVtY3B5KGRzdCwgc3JjLCBzaXplb2Yoc3RydWN0IHNv
Y2thZGRyX2Nvbm4pKTsKIAkJYnJlYWs7CiAjZW5kaWYKIAlkZWZhdWx0OgpAQCAtMTQ2NSwxNSAr
MTQ0MSwxMiBAQCBzY3RwX2ZpbGxfdXNlcl9hZGRyZXNzKHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdl
ICpzcywgc3RydWN0IHNvY2thZGRyICpzYSkKIAogCiAKLS8qCi0gKiBOT1RFOiBhc3N1bWVzIGFk
ZHIgbG9jayBpcyBoZWxkCi0gKi8KIHN0YXRpYyBzaXplX3QKIHNjdHBfZmlsbF91cF9hZGRyZXNz
ZXNfdnJmKHN0cnVjdCBzY3RwX2lucGNiICppbnAsCi0JCQkgICBzdHJ1Y3Qgc2N0cF90Y2IgKnN0
Y2IsCi0JCQkgICBzaXplX3QgbGltaXQsCi0JCQkgICBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAq
c2FzLAotCQkJICAgdWludDMyX3QgdnJmX2lkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RydWN0IHNjdHBfdGNiICpzdGNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyICphZGRy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdnJmX2lkKQogewogCXN0cnVj
dCBzY3RwX2lmbiAqc2N0cF9pZm47CiAJc3RydWN0IHNjdHBfaWZhICpzY3RwX2lmYTsKQEAgLTE0
OTAsOCArMTQ2Myw5IEBAIHNjdHBfZmlsbF91cF9hZGRyZXNzZXNfdnJmKHN0cnVjdCBzY3RwX2lu
cGNiICppbnAsCiAjZW5kaWYKIAlzdHJ1Y3Qgc2N0cF92cmYgKnZyZjsKIAorCVNDVFBfSVBJX0FE
RFJfTE9DS19BU1NFUlQoKTsKIAlhY3R1YWwgPSAwOwotCWlmIChsaW1pdCA8PSAwKQorCWlmIChs
aW1pdCA9PSAwKQogCQlyZXR1cm4gKGFjdHVhbCk7CiAKIAlpZiAoc3RjYikgewpAQCAtMTU3OCw3
ICsxNTUyLDcgQEAgc2N0cF9maWxsX3VwX2FkZHJlc3Nlc192cmYoc3RydWN0IHNjdHBfaW5wY2Ig
KmlucCwKIAkJCQkJICogaXMgb25lIG9mIHRob3NlIHdlIG11c3Qgc2tpcCBpdC4KIAkJCQkJICov
CiAJCQkJCWlmIChzY3RwX2lzX2FkZHJfcmVzdHJpY3RlZChzdGNiLAotCQkJCQkJCQkgICAgc2N0
cF9pZmEpKSB7CisJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3RwX2lmYSkpIHsK
IAkJCQkJCWNvbnRpbnVlOwogCQkJCQl9CiAJCQkJfQpAQCAtMTU5Niw3ICsxNTcwLDcgQEAgc2N0
cF9maWxsX3VwX2FkZHJlc3Nlc192cmYoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJCQkJCQkg
Ki8KIAkJCQkJCQljb250aW51ZTsKIAkJCQkJCX0KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQor
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJ
CQlpZiAocHJpc29uX2NoZWNrX2lwNChpbnAtPmlwX2lucC5pbnAuaW5wX2NyZWQsCiAJCQkJCQkg
ICAgICAgICAgICAgICAgICAgICAmc2luLT5zaW5fYWRkcikgIT0gMCkgewogCQkJCQkJCWNvbnRp
bnVlOwpAQCAtMTYwOCwyMiArMTU4MiwyNSBAQCBzY3RwX2ZpbGxfdXBfYWRkcmVzc2VzX3ZyZihz
dHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogCQkJCQkJfQogI2lmZGVmIElORVQ2CiAJCQkJCQlpZiAo
c2N0cF9pc19mZWF0dXJlX29uKGlucCwgU0NUUF9QQ0JfRkxBR1NfTkVFRFNfTUFQUEVEX1Y0KSkg
ewotCQkJCQkJCWluNl9zaW5fMl92NG1hcHNpbjYoc2luLCAoc3RydWN0IHNvY2thZGRyX2luNiAq
KXNhcyk7Ci0JCQkJCQkJKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopc2FzKS0+c2luNl9wb3J0ID0g
aW5wLT5zY3RwX2xwb3J0OwotCQkJCQkJCXNhcyA9IChzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAq
KSgoY2FkZHJfdClzYXMgKyBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNikpOworCQkJCQkJCWlm
IChhY3R1YWwgKyBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNikgPiBsaW1pdCkgeworCQkJCQkJ
CQlyZXR1cm4gKGFjdHVhbCk7CisJCQkJCQkJfQorCQkJCQkJCWluNl9zaW5fMl92NG1hcHNpbjYo
c2luLCAoc3RydWN0IHNvY2thZGRyX2luNiAqKWFkZHIpOworCQkJCQkJCSgoc3RydWN0IHNvY2th
ZGRyX2luNiAqKWFkZHIpLT5zaW42X3BvcnQgPSBpbnAtPnNjdHBfbHBvcnQ7CisJCQkJCQkJYWRk
ciA9IChzdHJ1Y3Qgc29ja2FkZHIgKikoKGNhZGRyX3QpYWRkciArIHNpemVvZihzdHJ1Y3Qgc29j
a2FkZHJfaW42KSk7CiAJCQkJCQkJYWN0dWFsICs9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42
KTsKIAkJCQkJCX0gZWxzZSB7CiAjZW5kaWYKLQkJCQkJCQltZW1jcHkoc2FzLCBzaW4sIHNpemVv
Zigqc2luKSk7Ci0JCQkJCQkJKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilzYXMpLT5zaW5fcG9ydCA9
IGlucC0+c2N0cF9scG9ydDsKLQkJCQkJCQlzYXMgPSAoc3RydWN0IHNvY2thZGRyX3N0b3JhZ2Ug
KikoKGNhZGRyX3Qpc2FzICsgc2l6ZW9mKCpzaW4pKTsKLQkJCQkJCQlhY3R1YWwgKz0gc2l6ZW9m
KCpzaW4pOworCQkJCQkJCWlmIChhY3R1YWwgKyBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSA+
IGxpbWl0KSB7CisJCQkJCQkJCXJldHVybiAoYWN0dWFsKTsKKwkJCQkJCQl9CisJCQkJCQkJbWVt
Y3B5KGFkZHIsIHNpbiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOworCQkJCQkJCSgoc3Ry
dWN0IHNvY2thZGRyX2luICopYWRkciktPnNpbl9wb3J0ID0gaW5wLT5zY3RwX2xwb3J0OworCQkJ
CQkJCWFkZHIgPSAoc3RydWN0IHNvY2thZGRyICopKChjYWRkcl90KWFkZHIgKyBzaXplb2Yoc3Ry
dWN0IHNvY2thZGRyX2luKSk7CisJCQkJCQkJYWN0dWFsICs9IHNpemVvZihzdHJ1Y3Qgc29ja2Fk
ZHJfaW4pOwogI2lmZGVmIElORVQ2CiAJCQkJCQl9CiAjZW5kaWYKLQkJCQkJCWlmIChhY3R1YWwg
Pj0gbGltaXQpIHsKLQkJCQkJCQlyZXR1cm4gKGFjdHVhbCk7Ci0JCQkJCQl9CiAJCQkJCX0gZWxz
ZSB7CiAJCQkJCQljb250aW51ZTsKIAkJCQkJfQpAQCAtMTY0NSw3ICsxNjIyLDcgQEAgc2N0cF9m
aWxsX3VwX2FkZHJlc3Nlc192cmYoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJCQkJCQkgKi8K
IAkJCQkJCQljb250aW51ZTsKIAkJCQkJCX0KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJCQlp
ZiAocHJpc29uX2NoZWNrX2lwNihpbnAtPmlwX2lucC5pbnAuaW5wX2NyZWQsCiAJCQkJCQkgICAg
ICAgICAgICAgICAgICAgICAmc2luNi0+c2luNl9hZGRyKSAhPSAwKSB7CiAJCQkJCQkJY29udGlu
dWU7CkBAIC0xNjg0LDEzICsxNjYxLDEzIEBAIHNjdHBfZmlsbF91cF9hZGRyZXNzZXNfdnJmKHN0
cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCQkJCQkgICAgKElONl9JU19BRERSX1NJVEVMT0NBTCgm
c2luNi0+c2luNl9hZGRyKSkpIHsKIAkJCQkJCQljb250aW51ZTsKIAkJCQkJCX0KLQkJCQkJCW1l
bWNweShzYXMsIHNpbjYsIHNpemVvZigqc2luNikpOwotCQkJCQkJKChzdHJ1Y3Qgc29ja2FkZHJf
aW42ICopc2FzKS0+c2luNl9wb3J0ID0gaW5wLT5zY3RwX2xwb3J0OwotCQkJCQkJc2FzID0gKHN0
cnVjdCBzb2NrYWRkcl9zdG9yYWdlICopKChjYWRkcl90KXNhcyArIHNpemVvZigqc2luNikpOwot
CQkJCQkJYWN0dWFsICs9IHNpemVvZigqc2luNik7Ci0JCQkJCQlpZiAoYWN0dWFsID49IGxpbWl0
KSB7CisJCQkJCQlpZiAoYWN0dWFsICsgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpID4gbGlt
aXQpIHsKIAkJCQkJCQlyZXR1cm4gKGFjdHVhbCk7CiAJCQkJCQl9CisJCQkJCQltZW1jcHkoYWRk
ciwgc2luNiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKTsKKwkJCQkJCSgoc3RydWN0IHNv
Y2thZGRyX2luNiAqKWFkZHIpLT5zaW42X3BvcnQgPSBpbnAtPnNjdHBfbHBvcnQ7CisJCQkJCQlh
ZGRyID0gKHN0cnVjdCBzb2NrYWRkciAqKSgoY2FkZHJfdClhZGRyICsgc2l6ZW9mKHN0cnVjdCBz
b2NrYWRkcl9pbjYpKTsKKwkJCQkJCWFjdHVhbCArPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2lu
Nik7CiAJCQkJCX0gZWxzZSB7CiAJCQkJCQljb250aW51ZTsKIAkJCQkJfQpAQCAtMTY5OSwxMyAr
MTY3NiwxMyBAQCBzY3RwX2ZpbGxfdXBfYWRkcmVzc2VzX3ZyZihzdHJ1Y3Qgc2N0cF9pbnBjYiAq
aW5wLAogI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQljYXNlIEFGX0NPTk46CiAJCQkJ
CWlmIChjb25uX2FkZHJfbGVnYWwpIHsKLQkJCQkJCW1lbWNweShzYXMsICZzY3RwX2lmYS0+YWRk
cmVzcy5zY29ubiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9jb25uKSk7Ci0JCQkJCQkoKHN0cnVj
dCBzb2NrYWRkcl9jb25uICopc2FzKS0+c2Nvbm5fcG9ydCA9IGlucC0+c2N0cF9scG9ydDsKLQkJ
CQkJCXNhcyA9IChzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqKSgoY2FkZHJfdClzYXMgKyBzaXpl
b2Yoc3RydWN0IHNvY2thZGRyX2Nvbm4pKTsKLQkJCQkJCWFjdHVhbCArPSBzaXplb2Yoc3RydWN0
IHNvY2thZGRyX2Nvbm4pOwotCQkJCQkJaWYgKGFjdHVhbCA+PSBsaW1pdCkgeworCQkJCQkJaWYg
KGFjdHVhbCArIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfY29ubikgPiBsaW1pdCkgewogCQkJCQkJ
CXJldHVybiAoYWN0dWFsKTsKIAkJCQkJCX0KKwkJCQkJCW1lbWNweShhZGRyLCAmc2N0cF9pZmEt
PmFkZHJlc3Muc2Nvbm4sIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfY29ubikpOworCQkJCQkJKChz
dHJ1Y3Qgc29ja2FkZHJfY29ubiAqKWFkZHIpLT5zY29ubl9wb3J0ID0gaW5wLT5zY3RwX2xwb3J0
OworCQkJCQkJYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHIgKikoKGNhZGRyX3QpYWRkciArIHNpemVv
ZihzdHJ1Y3Qgc29ja2FkZHJfY29ubikpOworCQkJCQkJYWN0dWFsICs9IHNpemVvZihzdHJ1Y3Qg
c29ja2FkZHJfY29ubik7CiAJCQkJCX0gZWxzZSB7CiAJCQkJCQljb250aW51ZTsKIAkJCQkJfQpA
QCAtMTcxOCw5ICsxNjk1LDcgQEAgc2N0cF9maWxsX3VwX2FkZHJlc3Nlc192cmYoc3RydWN0IHNj
dHBfaW5wY2IgKmlucCwKIAkJfQogCX0gZWxzZSB7CiAJCXN0cnVjdCBzY3RwX2xhZGRyICpsYWRk
cjsKLSNpZm5kZWYgSEFWRV9TQV9MRU4KLQkJdWludDMyX3Qgc2FfbGVuID0gMDsKLSNlbmRpZgor
CQlzaXplX3Qgc2FfbGVuOwogCiAJCUxJU1RfRk9SRUFDSChsYWRkciwgJmlucC0+c2N0cF9hZGRy
X2xpc3QsIHNjdHBfbnh0X2FkZHIpIHsKIAkJCWlmIChzdGNiKSB7CkBAIC0xNzI4LDU5ICsxNzAz
LDU4IEBAIHNjdHBfZmlsbF91cF9hZGRyZXNzZXNfdnJmKHN0cnVjdCBzY3RwX2lucGNiICppbnAs
CiAJCQkJCWNvbnRpbnVlOwogCQkJCX0KIAkJCX0KLQkJCWlmIChzY3RwX2ZpbGxfdXNlcl9hZGRy
ZXNzKHNhcywgJmxhZGRyLT5pZmEtPmFkZHJlc3Muc2EpKQotCQkJCWNvbnRpbnVlOworI2lmZGVm
IEhBVkVfU0FfTEVOCisJCQlzYV9sZW4gPSBsYWRkci0+aWZhLT5hZGRyZXNzLnNhLnNhX2xlbjsK
KyNlbHNlCiAJCQlzd2l0Y2ggKGxhZGRyLT5pZmEtPmFkZHJlc3Muc2Euc2FfZmFtaWx5KSB7CiAj
aWZkZWYgSU5FVAogCQkJY2FzZSBBRl9JTkVUOgotCQkJCSgoc3RydWN0IHNvY2thZGRyX2luICop
c2FzKS0+c2luX3BvcnQgPSBpbnAtPnNjdHBfbHBvcnQ7CisJCQkJc2FfbGVuID0gc2l6ZW9mKHN0
cnVjdCBzb2NrYWRkcl9pbik7CiAJCQkJYnJlYWs7CiAjZW5kaWYKICNpZmRlZiBJTkVUNgogCQkJ
Y2FzZSBBRl9JTkVUNjoKLQkJCQkoKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilzYXMpLT5zaW42X3Bv
cnQgPSBpbnAtPnNjdHBfbHBvcnQ7CisJCQkJc2FfbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRk
cl9pbjYpOwogCQkJCWJyZWFrOwogI2VuZGlmCiAjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
CQkJY2FzZSBBRl9DT05OOgotCQkJCSgoc3RydWN0IHNvY2thZGRyX2Nvbm4gKilzYXMpLT5zY29u
bl9wb3J0ID0gaW5wLT5zY3RwX2xwb3J0OworCQkJCXNhX2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29j
a2FkZHJfY29ubik7CiAJCQkJYnJlYWs7CiAjZW5kaWYKIAkJCWRlZmF1bHQ6CiAJCQkJLyogVFNO
SCAqLworCQkJCXNhX2xlbiA9IDA7CiAJCQkJYnJlYWs7CiAJCQl9Ci0jaWZkZWYgSEFWRV9TQV9M
RU4KLQkJCXNhcyA9IChzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqKSgoY2FkZHJfdClzYXMgKwot
CQkJCQkJCSAgbGFkZHItPmlmYS0+YWRkcmVzcy5zYS5zYV9sZW4pOwotCQkJYWN0dWFsICs9IGxh
ZGRyLT5pZmEtPmFkZHJlc3Muc2Euc2FfbGVuOwotI2Vsc2UKKyNlbmRpZgorCQkJaWYgKGFjdHVh
bCArIHNhX2xlbiA+IGxpbWl0KSB7CisJCQkJcmV0dXJuIChhY3R1YWwpOworCQkJfQorCQkJaWYg
KHNjdHBfZmlsbF91c2VyX2FkZHJlc3MoYWRkciwgJmxhZGRyLT5pZmEtPmFkZHJlc3Muc2EpKQor
CQkJCWNvbnRpbnVlOwogCQkJc3dpdGNoIChsYWRkci0+aWZhLT5hZGRyZXNzLnNhLnNhX2ZhbWls
eSkgewogI2lmZGVmIElORVQKIAkJCWNhc2UgQUZfSU5FVDoKLQkJCQlzYV9sZW4gPSBzaXplb2Yo
c3RydWN0IHNvY2thZGRyX2luKTsKKwkJCQkoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKWFkZHIpLT5z
aW5fcG9ydCA9IGlucC0+c2N0cF9scG9ydDsKIAkJCQlicmVhazsKICNlbmRpZgogI2lmZGVmIElO
RVQ2CiAJCQljYXNlIEFGX0lORVQ2OgotCQkJCXNhX2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2Fk
ZHJfaW42KTsKKwkJCQkoKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilhZGRyKS0+c2luNl9wb3J0ID0g
aW5wLT5zY3RwX2xwb3J0OwogCQkJCWJyZWFrOwogI2VuZGlmCiAjaWYgZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCQkJY2FzZSBBRl9DT05OOgotCQkJCXNhX2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29j
a2FkZHJfY29ubik7CisJCQkJKChzdHJ1Y3Qgc29ja2FkZHJfY29ubiAqKWFkZHIpLT5zY29ubl9w
b3J0ID0gaW5wLT5zY3RwX2xwb3J0OwogCQkJCWJyZWFrOwogI2VuZGlmCiAJCQlkZWZhdWx0Ogog
CQkJCS8qIFRTTkggKi8KIAkJCQlicmVhazsKIAkJCX0KLQkJCXNhcyA9IChzdHJ1Y3Qgc29ja2Fk
ZHJfc3RvcmFnZSAqKSgoY2FkZHJfdClzYXMgKyBzYV9sZW4pOworCQkJYWRkciA9IChzdHJ1Y3Qg
c29ja2FkZHIgKikoKGNhZGRyX3QpYWRkciArIHNhX2xlbik7CiAJCQlhY3R1YWwgKz0gc2FfbGVu
OwotI2VuZGlmCi0JCQlpZiAoYWN0dWFsID49IGxpbWl0KSB7Ci0JCQkJcmV0dXJuIChhY3R1YWwp
OwotCQkJfQogCQl9CiAJfQogCXJldHVybiAoYWN0dWFsKTsKQEAgLTE3OTAsNyArMTc2NCw3IEBA
IHN0YXRpYyBzaXplX3QKIHNjdHBfZmlsbF91cF9hZGRyZXNzZXMoc3RydWN0IHNjdHBfaW5wY2Ig
KmlucCwKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGltaXQsCi0gICAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlICpzYXMpCisgICAgICAgICAgICAgICAgICAgICAgIHN0
cnVjdCBzb2NrYWRkciAqYWRkcikKIHsKIAlzaXplX3Qgc2l6ZSA9IDA7CiAjaWZkZWYgU0NUUF9N
VlJGCkBAIC0xODA1LDIyICsxNzc5LDE5IEBAIHNjdHBfZmlsbF91cF9hZGRyZXNzZXMoc3RydWN0
IHNjdHBfaW5wY2IgKmlucCwKICAqLwogCS8qIGZpbGwgdXAgYWRkcmVzc2VzIGZvciBhbGwgVlJG
cyBvbiB0aGUgZW5kcG9pbnQgKi8KIAlmb3IgKGlkID0gMDsgKGlkIDwgaW5wLT5udW1fdnJmcykg
JiYgKHNpemUgPCBsaW1pdCk7IGlkKyspIHsKLQkJc2l6ZSArPSBzY3RwX2ZpbGxfdXBfYWRkcmVz
c2VzX3ZyZihpbnAsIHN0Y2IsIGxpbWl0LCBzYXMsCi0JCQkJCQkgICBpbnAtPm1fdnJmX2lkc1tp
ZF0pOwotCQlzYXMgPSAoc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKikoKGNhZGRyX3Qpc2FzICsg
c2l6ZSk7CisJCXNpemUgKz0gc2N0cF9maWxsX3VwX2FkZHJlc3Nlc192cmYoaW5wLCBzdGNiLCBs
aW1pdCwgYWRkciwKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnAtPm1f
dnJmX2lkc1tpZF0pOworCQlhZGRyID0gKHN0cnVjdCBzb2NrYWRkciAqKSgoY2FkZHJfdClhZGRy
ICsgc2l6ZSk7CiAJfQogI2Vsc2UKIAkvKiBmaWxsIHVwIGFkZHJlc3NlcyBmb3IgdGhlIGVuZHBv
aW50J3MgZGVmYXVsdCB2cmYgKi8KLQlzaXplID0gc2N0cF9maWxsX3VwX2FkZHJlc3Nlc192cmYo
aW5wLCBzdGNiLCBsaW1pdCwgc2FzLAotCQkJCQkgIGlucC0+ZGVmX3ZyZl9pZCk7CisJc2l6ZSA9
IHNjdHBfZmlsbF91cF9hZGRyZXNzZXNfdnJmKGlucCwgc3RjYiwgbGltaXQsIGFkZHIsCisJICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucC0+ZGVmX3ZyZl9pZCk7CiAjZW5kaWYK
IAlTQ1RQX0lQSV9BRERSX1JVTkxPQ0soKTsKIAlyZXR1cm4gKHNpemUpOwogfQogCi0vKgotICog
Tk9URTogYXNzdW1lcyBhZGRyIGxvY2sgaXMgaGVsZAotICovCiBzdGF0aWMgaW50CiBzY3RwX2Nv
dW50X21heF9hZGRyZXNzZXNfdnJmKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHVpbnQzMl90IHZy
Zl9pZCkKIHsKQEAgLTE4MzQsNiArMTgwNSw3IEBAIHNjdHBfY291bnRfbWF4X2FkZHJlc3Nlc192
cmYoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgdWludDMyX3QgdnJmX2lkKQogCSAqIGJvdW5kLWFs
bCBjYXNlIGEgVENCIG1heSBOT1QgaW5jbHVkZSB0aGUgbG9vcGJhY2sgb3Igb3RoZXIKIAkgKiBh
ZGRyZXNzZXMgYXMgd2VsbC4KIAkgKi8KKwlTQ1RQX0lQSV9BRERSX0xPQ0tfQVNTRVJUKCk7CiAJ
dnJmID0gc2N0cF9maW5kX3ZyZih2cmZfaWQpOwogCWlmICh2cmYgPT0gTlVMTCkgewogCQlyZXR1
cm4gKDApOwpAQCAtMTkzOCwxMyArMTkxMCwxMiBAQCBzdGF0aWMgaW50CiBzY3RwX2RvX2Nvbm5l
Y3RfeChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgdm9pZCAqb3B0
dmFsLAogCQkgIHNpemVfdCBvcHRzaXplLCB2b2lkICpwLCBpbnQgZGVsYXkpCiB7Ci0JaW50IGVy
cm9yID0gMDsKKwlpbnQgZXJyb3I7CiAJaW50IGNyZWF0X2xvY2tfb24gPSAwOwogCXN0cnVjdCBz
Y3RwX3RjYiAqc3RjYiA9IE5VTEw7CiAJc3RydWN0IHNvY2thZGRyICpzYTsKIAl1bnNpZ25lZCBp
bnQgbnVtX3Y2ID0gMCwgbnVtX3Y0ID0gMCwgKnRvdGFkZHJwLCB0b3RhZGRyOwogCXVpbnQzMl90
IHZyZl9pZDsKLQlpbnQgYmFkX2FkZHJlc3NlcyA9IDA7CiAJc2N0cF9hc3NvY190ICphX2lkOwog
CiAJU0NUUERCRyhTQ1RQX0RFQlVHX1BDQjEsICJDb25uZWN0eCBjYWxsZWRcbiIpOwpAQCAtMTk4
MywxNyArMTk1NCwxMiBAQCBzY3RwX2RvX2Nvbm5lY3RfeChzdHJ1Y3Qgc29ja2V0ICpzbywgc3Ry
dWN0IHNjdHBfaW5wY2IgKmlucCwgdm9pZCAqb3B0dmFsLAogCXRvdGFkZHJwID0gKHVuc2lnbmVk
IGludCAqKW9wdHZhbDsKIAl0b3RhZGRyID0gKnRvdGFkZHJwOwogCXNhID0gKHN0cnVjdCBzb2Nr
YWRkciAqKSh0b3RhZGRycCArIDEpOwotCXN0Y2IgPSBzY3RwX2Nvbm5lY3R4X2hlbHBlcl9maW5k
KGlucCwgc2EsICZ0b3RhZGRyLCAmbnVtX3Y0LCAmbnVtX3Y2LCAmZXJyb3IsICh1bnNpZ25lZCBp
bnQpKG9wdHNpemUgLSBzaXplb2YoaW50KSksICZiYWRfYWRkcmVzc2VzKTsKLQlpZiAoKHN0Y2Ig
IT0gTlVMTCkgfHwgYmFkX2FkZHJlc3NlcykgeworCWVycm9yID0gc2N0cF9jb25uZWN0eF9oZWxw
ZXJfZmluZChpbnAsIHNhLCB0b3RhZGRyLCAmbnVtX3Y0LCAmbnVtX3Y2LCAodW5zaWduZWQgaW50
KShvcHRzaXplIC0gc2l6ZW9mKGludCkpKTsKKwlpZiAoZXJyb3IgIT0gMCkgewogCQkvKiBBbHJl
YWR5IGhhdmUgb3IgYW0gYnJpbmcgdXAgYW4gYXNzb2NpYXRpb24gKi8KIAkJU0NUUF9BU09DX0NS
RUFURV9VTkxPQ0soaW5wKTsKIAkJY3JlYXRfbG9ja19vbiA9IDA7Ci0JCWlmIChzdGNiKQotCQkJ
U0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwotCQlpZiAoYmFkX2FkZHJlc3NlcyA9PSAwKSB7Ci0JCQlT
Q1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVR
LCBFQUxSRUFEWSk7Ci0JCQllcnJvciA9IEVBTFJFQURZOwotCQl9CisJCVNDVFBfTFRSQUNFX0VS
Ul9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIGVycm9yKTsKIAkJ
Z290byBvdXRfbm93OwogCX0KICNpZmRlZiBJTkVUNgpAQCAtMjAwNCwxMCArMTk3MCw3IEBAIHNj
dHBfZG9fY29ubmVjdF94KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5w
LCB2b2lkICpvcHR2YWwsCiAJfQogCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxB
R1NfQk9VTkRfVjYpICYmCiAJICAgIChudW1fdjQgPiAwKSkgewotCQlzdHJ1Y3QgaW42cGNiICpp
bnA2OwotCi0JCWlucDYgPSAoc3RydWN0IGluNnBjYiAqKWlucDsKLQkJaWYgKFNDVFBfSVBWNl9W
Nk9OTFkoaW5wNikpIHsKKwkJaWYgKFNDVFBfSVBWNl9WNk9OTFkoaW5wKSkgewogCQkJLyoKIAkJ
CSAqIGlmIElQVjZfVjZPTkxZIGZsYWcsIGlnbm9yZSBjb25uZWN0aW9ucyBkZXN0aW5lZAogCQkJ
ICogdG8gYSB2NCBhZGRyIG9yIHY0LW1hcHBlZCBhZGRyCkBAIC0yMDM1LDE0ICsxOTk4LDE0IEBA
IHNjdHBfZG9fY29ubmVjdF94KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc2N0cF9pbnBjYiAq
aW5wLCB2b2lkICpvcHR2YWwsCiAJc3RjYiA9IHNjdHBfYWxvY19hc3NvYyhpbnAsIHNhLCAmZXJy
b3IsIDAsIHZyZl9pZCwKIAkgICAgICAgICAgICAgICAgICAgICAgIGlucC0+c2N0cF9lcC5wcmVf
b3Blbl9zdHJlYW1fY291bnQsCiAJICAgICAgICAgICAgICAgICAgICAgICBpbnAtPnNjdHBfZXAu
cG9ydCwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1
MDAwMDAKLQkJCSAgICAgICAoc3RydWN0IHRocmVhZCAqKXAKLSNlbGlmIGRlZmluZWQoX19XaW5k
b3dzX18pCi0JCQkgICAgICAgKFBLVEhSRUFEKXAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCSAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVj
dCB0aHJlYWQgKilwLAorI2VsaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCisJICAgICAgICAgICAgICAgICAgICAgICAoUEtUSFJFQUQpcCwKICNlbHNlCi0JCQkg
ICAgICAgKHN0cnVjdCBwcm9jICopcAorCSAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBw
cm9jICopcCwKICNlbmRpZgotCQkpOworCSAgICAgICAgICAgICAgICAgICAgICAgU0NUUF9JTklU
SUFMSVpFX0FVVEhfUEFSQU1TKTsKIAlpZiAoc3RjYiA9PSBOVUxMKSB7CiAJCS8qIEdhayEgbm8g
bWVtb3J5ICovCiAJCWdvdG8gb3V0X25vdzsKQEAgLTIwNTIsNyArMjAxNSw3IEBAIHNjdHBfZG9f
Y29ubmVjdF94KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCB2b2lk
ICpvcHR2YWwsCiAJCS8qIFNldCB0aGUgY29ubmVjdGVkIGZsYWcgc28gd2UgY2FuIHF1ZXVlIGRh
dGEgKi8KIAkJc29pc2Nvbm5lY3Rpbmcoc28pOwogCX0KLQlTQ1RQX1NFVF9TVEFURSgmc3RjYi0+
YXNvYywgU0NUUF9TVEFURV9DT09LSUVfV0FJVCk7CisJU0NUUF9TRVRfU1RBVEUoc3RjYiwgU0NU
UF9TVEFURV9DT09LSUVfV0FJVCk7CiAJLyogbW92ZSB0byBzZWNvbmQgYWRkcmVzcyAqLwogCXN3
aXRjaCAoc2EtPnNhX2ZhbWlseSkgewogI2lmZGVmIElORVQKQEAgLTIwNzMsMTYgKzIwMzYsMTEg
QEAgc2N0cF9kb19jb25uZWN0X3goc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzY3RwX2lucGNi
ICppbnAsIHZvaWQgKm9wdHZhbCwKIAlzY3RwX2Nvbm5lY3R4X2hlbHBlcl9hZGQoc3RjYiwgc2Es
ICh0b3RhZGRyLTEpLCAmZXJyb3IpOwogCS8qIEZpbGwgaW4gdGhlIHJldHVybiBpZCAqLwogCWlm
IChlcnJvcikgewotCQkodm9pZClzY3RwX2ZyZWVfYXNzb2MoaW5wLCBzdGNiLCBTQ1RQX1BDQkZS
RUVfRk9SQ0UsCi0JCSAgICAgICAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUF9VU1JSRVEg
KyBTQ1RQX0xPQ183KTsKIAkJZ290byBvdXRfbm93OwogCX0KIAlhX2lkID0gKHNjdHBfYXNzb2Nf
dCAqKW9wdHZhbDsKIAkqYV9pZCA9IHNjdHBfZ2V0X2Fzc29jaWQoc3RjYik7CiAKLQkvKiBpbml0
aWFsaXplIGF1dGhlbnRpY2F0aW9uIHBhcmFtZXRlcnMgZm9yIHRoZSBhc3NvYyAqLwotCXNjdHBf
aW5pdGlhbGl6ZV9hdXRoX3BhcmFtcyhpbnAsIHN0Y2IpOwotCiAJaWYgKGRlbGF5KSB7CiAJCS8q
IGRvaW5nIGRlbGF5ZWQgY29ubmVjdGlvbiAqLwogCQlzdGNiLT5hc29jLmRlbGF5ZWRfY29ubmVj
dGlvbiA9IDE7CkBAIC0yMTMyLDcgKzIwOTAsNyBAQCBzY3RwX2RvX2Nvbm5lY3RfeChzdHJ1Y3Qg
c29ja2V0ICpzbywgc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgdm9pZCAqb3B0dmFsLAogCX0gXAog
fQogCi0jaWYgZGVmaW5lZChfX1BhbmRhX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNp
ZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBpbnQKICNlbHNlCiBzdGF0aWMgaW50CkBAIC0yMTky
LDcgKzIxNTAsNyBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUs
IHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRzaXplLAogCQkJYnJlYWs7CiAJCWNhc2UgU0NUUF9B
VVRPQ0xPU0U6CiAJCQlpZiAoc2N0cF9pc19mZWF0dXJlX29uKGlucCwgU0NUUF9QQ0JfRkxBR1Nf
QVVUT0NMT1NFKSkKLQkJCQl2YWwgPSBUSUNLU19UT19TRUMoaW5wLT5zY3RwX2VwLmF1dG9fY2xv
c2VfdGltZSk7CisJCQkJdmFsID0gc2N0cF90aWNrc190b19zZWNzKGlucC0+c2N0cF9lcC5hdXRv
X2Nsb3NlX3RpbWUpOwogCQkJZWxzZQogCQkJCXZhbCA9IDA7CiAJCQlicmVhazsKQEAgLTIyODEs
NyArMjIzOSw4IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwg
dm9pZCAqb3B0dmFsLCBzaXplX3QgKm9wdHNpemUsCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+
c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0
cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKGF2LT5hc3Nv
Y19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAm
IFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0gU0NU
UF9GVVRVUkVfQVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJaWYgKGlu
cC0+aWRhdGFfc3VwcG9ydGVkKSB7CiAJCQkJCWF2LT5hc3NvY192YWx1ZSA9IDE7CkBAIC0yMzEx
LDcgKzIyNzAsOCBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUs
IHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAt
PnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNj
dHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChhdi0+YXNz
b2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3Mg
JiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoYXYtPmFzc29jX2lkID09IFND
VFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9STE9DSyhpbnApOwogCQkJCWF2LT5h
c3NvY192YWx1ZSA9IGlucC0+c2N0cF9jbXRfb25fb2ZmOwogCQkJCVNDVFBfSU5QX1JVTkxPQ0so
aW5wKTsKQEAgLTIzMzcsNyArMjI5Nyw4IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNv
LCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3QgKm9wdHNpemUsCiAJCX0gZWxzZSB7
CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJ
CQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0J
CQkgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAoKGlu
cC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgIChhdi0+
YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlu
cCk7CiAJCQkJYXYtPmFzc29jX3ZhbHVlID0gaW5wLT5zY3RwX2VwLnNjdHBfZGVmYXVsdF9jY19t
b2R1bGU7CiAJCQkJU0NUUF9JTlBfUlVOTE9DSyhpbnApOwpAQCAtMjM4Miw3ICsyMzQzLDggQEAg
c2N0cF9nZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWws
IHNpemVfdCAqb3B0c2l6ZSwKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYg
U0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NU
UF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBf
RlVUVVJFX0FTU09DKSkgeworCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxB
R1NfVURQVFlQRSkgJiYKKwkJCSAgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NP
QykpKSB7CiAJCQkJU0NUUF9JTlBfUkxPQ0soaW5wKTsKIAkJCQlhdi0+YXNzb2NfdmFsdWUgPSBp
bnAtPnNjdHBfZXAuc2N0cF9kZWZhdWx0X3NzX21vZHVsZTsKIAkJCQlTQ1RQX0lOUF9SVU5MT0NL
KGlucCk7CkBAIC0yNTIzLDcgKzI0ODUsOCBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpz
bywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRzaXplLAogCQl9IGVsc2Ug
ewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAog
CQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAot
CQkJICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChp
bnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoYXYt
PmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9STE9DSyhp
bnApOwogCQkJCWF2LT5hc3NvY192YWx1ZSA9IGlucC0+c2N0cF9jb250ZXh0OwogCQkJCVNDVFBf
SU5QX1JVTkxPQ0soaW5wKTsKQEAgLTI2MTQsOSArMjU3NywxMCBAQCBzY3RwX2dldG9wdChzdHJ1
Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRzaXpl
LAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19U
Q1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9U
Q1BQT09MKSB8fAotCQkJICAgIChzYWNrLT5zYWNrX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FT
U09DKSkgeworCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQ
RSkgJiYKKwkJCSAgICAgKHNhY2stPnNhY2tfYXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0Mp
KSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7Ci0JCQkJc2Fjay0+c2Fja19kZWxheSA9IFRJ
Q0tTX1RPX01TRUMoaW5wLT5zY3RwX2VwLnNjdHBfdGltZW91dHRpY2tzW1NDVFBfVElNRVJfUkVD
Vl0pOworCQkJCXNhY2stPnNhY2tfZGVsYXkgPSBzY3RwX3RpY2tzX3RvX21zZWNzKGlucC0+c2N0
cF9lcC5zY3RwX3RpbWVvdXR0aWNrc1tTQ1RQX1RJTUVSX1JFQ1ZdKTsKIAkJCQlzYWNrLT5zYWNr
X2ZyZXEgPSBpbnAtPnNjdHBfZXAuc2N0cF9zYWNrX2ZyZXE7CiAJCQkJU0NUUF9JTlBfUlVOTE9D
SyhpbnApOwogCQkJfSBlbHNlIHsKQEAgLTI2NTAsMjAgKzI2MTQsNiBAQCBzY3RwX2dldG9wdChz
dHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRz
aXplLAogCX0KIAljYXNlIFNDVFBfTUFYX0JVUlNUOgogCXsKLSNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA8IDkwMDAwMAotCQl1aW50OF90ICp2YWx1ZTsKLQot
CQlTQ1RQX0NIRUNLX0FORF9DQVNUKHZhbHVlLCBvcHR2YWwsIHVpbnQ4X3QsICpvcHRzaXplKTsK
LQotCQlTQ1RQX0lOUF9STE9DSyhpbnApOwotCQlpZiAoaW5wLT5zY3RwX2VwLm1heF9idXJzdCA8
IDI1NikgewotCQkJKnZhbHVlID0gaW5wLT5zY3RwX2VwLm1heF9idXJzdDsKLQkJfSBlbHNlIHsK
LQkJCSp2YWx1ZSA9IDI1NTsKLQkJfQotCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7Ci0JCSpvcHRz
aXplID0gc2l6ZW9mKHVpbnQ4X3QpOwotI2Vsc2UKIAkJc3RydWN0IHNjdHBfYXNzb2NfdmFsdWUg
KmF2OwogCiAJCVNDVFBfQ0hFQ0tfQU5EX0NBU1QoYXYsIG9wdHZhbCwgc3RydWN0IHNjdHBfYXNz
b2NfdmFsdWUsICpvcHRzaXplKTsKQEAgLTI2NzUsNyArMjYyNSw4IEBAIHNjdHBfZ2V0b3B0KHN0
cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3QgKm9wdHNp
emUsCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdT
X1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lO
X1RDUFBPT0wpIHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykp
IHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYm
CisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkgewogCQkJCVND
VFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJYXYtPmFzc29jX3ZhbHVlID0gaW5wLT5zY3RwX2VwLm1h
eF9idXJzdDsKIAkJCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CkBAIC0yNjg3LDcgKzI2MzgsNiBA
QCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZh
bCwgc2l6ZV90ICpvcHRzaXplLAogCQlpZiAoZXJyb3IgPT0gMCkgewogCQkJKm9wdHNpemUgPSBz
aXplb2Yoc3RydWN0IHNjdHBfYXNzb2NfdmFsdWUpOwogCQl9Ci0jZW5kaWYKIAkJYnJlYWs7CiAJ
fQogCWNhc2UgU0NUUF9NQVhTRUc6CkBAIC0yNzA0LDcgKzI2NTQsOCBAQCBzY3RwX2dldG9wdChz
dHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRz
aXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFH
U19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19J
Tl9UQ1BQT09MKSB8fAotCQkJICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0Mp
KSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAm
JgorCQkJICAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlT
Q1RQX0lOUF9STE9DSyhpbnApOwogCQkJCWlmIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9G
TEFHU19CT1VORF9WNikgewogCQkJCQlvdmggPSBTQ1RQX01FRF9PVkVSSEVBRDsKQEAgLTI4NjQs
NyArMjgxNSw3IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwg
dm9pZCAqb3B0dmFsLCBzaXplX3QgKm9wdHNpemUsCiAJCSAqLwogCXsKIAkJc2l6ZV90IGNwc3os
IGxlZnQ7Ci0JCXN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlICpzYXM7CisJCXN0cnVjdCBzb2NrYWRk
ciAqYWRkcjsKIAkJc3RydWN0IHNjdHBfbmV0cyAqbmV0OwogCQlzdHJ1Y3Qgc2N0cF9nZXRhZGRy
ZXNzZXMgKnNhZGRyOwogCkBAIC0yODcyLDkgKzI4MjMsOSBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qg
c29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRzaXplLAog
CQlTQ1RQX0ZJTkRfU1RDQihpbnAsIHN0Y2IsIHNhZGRyLT5zZ2V0X2Fzc29jX2lkKTsKIAogCQlp
ZiAoc3RjYikgewotCQkJbGVmdCA9ICgqb3B0c2l6ZSkgLSBzaXplb2Yoc3RydWN0IHNjdHBfZ2V0
YWRkcmVzc2VzKTsKLQkJCSpvcHRzaXplID0gc2l6ZW9mKHN0cnVjdCBzY3RwX2dldGFkZHJlc3Nl
cyk7Ci0JCQlzYXMgPSAoc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKikmc2FkZHItPmFkZHJbMF07
CisJCQlsZWZ0ID0gKm9wdHNpemUgLSBvZmZzZXRvZihzdHJ1Y3Qgc2N0cF9nZXRhZGRyZXNzZXMs
IGFkZHIpOworCQkJKm9wdHNpemUgPSBvZmZzZXRvZihzdHJ1Y3Qgc2N0cF9nZXRhZGRyZXNzZXMs
IGFkZHIpOworCQkJYWRkciA9ICZzYWRkci0+YWRkclswXS5zYTsKIAogCQkJVEFJTFFfRk9SRUFD
SChuZXQsICZzdGNiLT5hc29jLm5ldHMsIHNjdHBfbmV4dCkgewogCQkJCXN3aXRjaCAobmV0LT5y
by5fbF9hZGRyLnNhLnNhX2ZhbWlseSkgewpAQCAtMjkxNywyMiArMjg2OCwyMiBAQCBzY3RwX2dl
dG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90
ICpvcHRzaXplLAogCQkJCSAgICAobmV0LT5yby5fbF9hZGRyLnNhLnNhX2ZhbWlseSA9PSBBRl9J
TkVUKSkgewogCQkJCQkvKiBNdXN0IG1hcCB0aGUgYWRkcmVzcyAqLwogCQkJCQlpbjZfc2luXzJf
djRtYXBzaW42KCZuZXQtPnJvLl9sX2FkZHIuc2luLAotCQkJCQkJCSAgICAoc3RydWN0IHNvY2th
ZGRyX2luNiAqKXNhcyk7CisJCQkJCSAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBzb2NrYWRk
cl9pbjYgKilhZGRyKTsKIAkJCQl9IGVsc2UgewotCQkJCQltZW1jcHkoc2FzLCAmbmV0LT5yby5f
bF9hZGRyLCBjcHN6KTsKKwkJCQkJbWVtY3B5KGFkZHIsICZuZXQtPnJvLl9sX2FkZHIsIGNwc3op
OwogCQkJCX0KICNlbHNlCi0JCQkJbWVtY3B5KHNhcywgJm5ldC0+cm8uX2xfYWRkciwgY3Bzeik7
CisJCQkJbWVtY3B5KGFkZHIsICZuZXQtPnJvLl9sX2FkZHIsIGNwc3opOwogI2VuZGlmCi0JCQkJ
KChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilzYXMpLT5zaW5fcG9ydCA9IHN0Y2ItPnJwb3J0OworCQkJ
CSgoc3RydWN0IHNvY2thZGRyX2luICopYWRkciktPnNpbl9wb3J0ID0gc3RjYi0+cnBvcnQ7CiAK
LQkJCQlzYXMgPSAoc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKikoKGNhZGRyX3Qpc2FzICsgY3Bz
eik7CisJCQkJYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHIgKikoKGNhZGRyX3QpYWRkciArIGNwc3op
OwogCQkJCWxlZnQgLT0gY3BzejsKIAkJCQkqb3B0c2l6ZSArPSBjcHN6OwogCQkJfQogCQkJU0NU
UF9UQ0JfVU5MT0NLKHN0Y2IpOwogCQl9IGVsc2UgewotCQkgICAgICAgIFNDVFBfTFRSQUNFX0VS
Ul9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIEVOT0VOVCk7CisJ
CQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNS
UkVRLCBFTk9FTlQpOwogCQkJZXJyb3IgPSBFTk9FTlQ7CiAJCX0KIAkJYnJlYWs7CkBAIC0yOTQw
LDE5ICsyODkxLDE3IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFt
ZSwgdm9pZCAqb3B0dmFsLCBzaXplX3QgKm9wdHNpemUsCiAJY2FzZSBTQ1RQX0dFVF9MT0NBTF9B
RERSRVNTRVM6CiAJewogCQlzaXplX3QgbGltaXQsIGFjdHVhbDsKLQkJc3RydWN0IHNvY2thZGRy
X3N0b3JhZ2UgKnNhczsKIAkJc3RydWN0IHNjdHBfZ2V0YWRkcmVzc2VzICpzYWRkcjsKIAogCQlT
Q1RQX0NIRUNLX0FORF9DQVNUKHNhZGRyLCBvcHR2YWwsIHN0cnVjdCBzY3RwX2dldGFkZHJlc3Nl
cywgKm9wdHNpemUpOwogCQlTQ1RQX0ZJTkRfU1RDQihpbnAsIHN0Y2IsIHNhZGRyLT5zZ2V0X2Fz
c29jX2lkKTsKIAotCQlzYXMgPSAoc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKikmc2FkZHItPmFk
ZHJbMF07Ci0JCWxpbWl0ID0gKm9wdHNpemUgLSBzaXplb2Yoc2N0cF9hc3NvY190KTsKLQkJYWN0
dWFsID0gc2N0cF9maWxsX3VwX2FkZHJlc3NlcyhpbnAsIHN0Y2IsIGxpbWl0LCBzYXMpOworCQls
aW1pdCA9ICpvcHRzaXplIC0gb2Zmc2V0b2Yoc3RydWN0IHNjdHBfZ2V0YWRkcmVzc2VzLCBhZGRy
KTsKKwkJYWN0dWFsID0gc2N0cF9maWxsX3VwX2FkZHJlc3NlcyhpbnAsIHN0Y2IsIGxpbWl0LCAm
c2FkZHItPmFkZHJbMF0uc2EpOwogCQlpZiAoc3RjYikgewogCQkJU0NUUF9UQ0JfVU5MT0NLKHN0
Y2IpOwogCQl9Ci0JCSpvcHRzaXplID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlKSAr
IGFjdHVhbDsKKwkJKm9wdHNpemUgPSBvZmZzZXRvZihzdHJ1Y3Qgc2N0cF9nZXRhZGRyZXNzZXMs
IGFkZHIpICsgYWN0dWFsOwogCQlicmVhazsKIAl9CiAJY2FzZSBTQ1RQX1BFRVJfQUREUl9QQVJB
TVM6CkBAIC0zMTMwLDExICszMDc5LDEyIEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNv
LCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3QgKm9wdHNpemUsCiAJCX0gZWxzZSB7
CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJ
CQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0J
CQkgICAgKHBhZGRycC0+c3BwX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkgeworCQkJ
ICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAg
ICAgKHBhZGRycC0+c3BwX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQkv
KiBVc2UgZW5kcG9pbnQgZGVmYXVsdHMgKi8KIAkJCQlTQ1RQX0lOUF9STE9DSyhpbnApOwogCQkJ
CXBhZGRycC0+c3BwX3BhdGhtYXhyeHQgPSBpbnAtPnNjdHBfZXAuZGVmX25ldF9mYWlsdXJlOwot
CQkJCXBhZGRycC0+c3BwX2hiaW50ZXJ2YWwgPSBUSUNLU19UT19NU0VDKGlucC0+c2N0cF9lcC5z
Y3RwX3RpbWVvdXR0aWNrc1tTQ1RQX1RJTUVSX0hFQVJUQkVBVF0pOworCQkJCXBhZGRycC0+c3Bw
X2hiaW50ZXJ2YWwgPSBzY3RwX3RpY2tzX3RvX21zZWNzKGlucC0+c2N0cF9lcC5zY3RwX3RpbWVv
dXR0aWNrc1tTQ1RQX1RJTUVSX0hFQVJUQkVBVF0pOwogCQkJCXBhZGRycC0+c3BwX2Fzc29jX2lk
ID0gU0NUUF9GVVRVUkVfQVNTT0M7CiAJCQkJLyogZ2V0IGlucCdzIGRlZmF1bHQgKi8KIAkJCQlp
ZiAoaW5wLT5zY3RwX2VwLmRlZmF1bHRfZHNjcCAmIDB4MDEpIHsKQEAgLTMyOTgsNTkgKzMyNDgs
NzkgQEAgc2N0cF9nZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpv
cHR2YWwsIHNpemVfdCAqb3B0c2l6ZSwKIAkJc3N0YXQtPnNzdGF0X2luc3RybXMgPSBzdGNiLT5h
c29jLnN0cmVhbWluY250OwogCQlzc3RhdC0+c3N0YXRfb3V0c3RybXMgPSBzdGNiLT5hc29jLnN0
cmVhbW91dGNudDsKIAkJc3N0YXQtPnNzdGF0X2ZyYWdtZW50YXRpb25fcG9pbnQgPSBzY3RwX2dl
dF9mcmFnX3BvaW50KHN0Y2IsICZzdGNiLT5hc29jKTsKKwkJbmV0ID0gc3RjYi0+YXNvYy5wcmlt
YXJ5X2Rlc3RpbmF0aW9uOworCQlpZiAobmV0ICE9IE5VTEwpIHsKICNpZmRlZiBIQVZFX1NBX0xF
TgotCQltZW1jcHkoJnNzdGF0LT5zc3RhdF9wcmltYXJ5LnNwaW5mb19hZGRyZXNzLAotCQkgICAg
ICAgJnN0Y2ItPmFzb2MucHJpbWFyeV9kZXN0aW5hdGlvbi0+cm8uX2xfYWRkciwKLQkJICAgICAg
ICgoc3RydWN0IHNvY2thZGRyICopKCZzdGNiLT5hc29jLnByaW1hcnlfZGVzdGluYXRpb24tPnJv
Ll9sX2FkZHIpKS0+c2FfbGVuKTsKLSNlbHNlCi0JCWlmIChzdGNiLT5hc29jLnByaW1hcnlfZGVz
dGluYXRpb24tPnJvLl9sX2FkZHIuc2Euc2FfZmFtaWx5ID09IEFGX0lORVQpIHsKIAkJCW1lbWNw
eSgmc3N0YXQtPnNzdGF0X3ByaW1hcnkuc3BpbmZvX2FkZHJlc3MsCi0JCQkgICAgICAgJnN0Y2It
PmFzb2MucHJpbWFyeV9kZXN0aW5hdGlvbi0+cm8uX2xfYWRkciwKLQkJCSAgICAgICBzaXplb2Yo
c3RydWN0IHNvY2thZGRyX2luKSk7Ci0JCX0gZWxzZSB7Ci0JCQltZW1jcHkoJnNzdGF0LT5zc3Rh
dF9wcmltYXJ5LnNwaW5mb19hZGRyZXNzLAotCQkJICAgICAgICZzdGNiLT5hc29jLnByaW1hcnlf
ZGVzdGluYXRpb24tPnJvLl9sX2FkZHIsCi0JCQkgICAgICAgc2l6ZW9mKHN0cnVjdCBzb2NrYWRk
cl9pbjYpKTsKLQkJfQorCQkJICAgICAgICZuZXQtPnJvLl9sX2FkZHIsCisJCQkgICAgICAgKChz
dHJ1Y3Qgc29ja2FkZHIgKikoJm5ldC0+cm8uX2xfYWRkcikpLT5zYV9sZW4pOworI2Vsc2UKKwkJ
CXN3aXRjaCAoc3RjYi0+YXNvYy5wcmltYXJ5X2Rlc3RpbmF0aW9uLT5yby5fbF9hZGRyLnNhLnNh
X2ZhbWlseSkgeworI2lmIGRlZmluZWQoSU5FVCkKKwkJCWNhc2UgQUZfSU5FVDoKKwkJCQltZW1j
cHkoJnNzdGF0LT5zc3RhdF9wcmltYXJ5LnNwaW5mb19hZGRyZXNzLAorCQkJCSAgICAgICAmbmV0
LT5yby5fbF9hZGRyLAorCQkJCSAgICAgICBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7CisJ
CQkJYnJlYWs7CiAjZW5kaWYKLQkJbmV0ID0gc3RjYi0+YXNvYy5wcmltYXJ5X2Rlc3RpbmF0aW9u
OwotCQkoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKSZzc3RhdC0+c3N0YXRfcHJpbWFyeS5zcGluZm9f
YWRkcmVzcyktPnNpbl9wb3J0ID0gc3RjYi0+cnBvcnQ7Ci0JCS8qCi0JCSAqIEFnYWluIHRoZSB1
c2VyIGNhbiBnZXQgaW5mbyBmcm9tIHNjdHBfY29uc3RhbnRzLmgKLQkJICogZm9yIHdoYXQgdGhl
IHN0YXRlIG9mIHRoZSBuZXR3b3JrIGlzLgotCQkgKi8KLQkJaWYgKG5ldC0+ZGVzdF9zdGF0ZSAm
IFNDVFBfQUREUl9VTkNPTkZJUk1FRCkgewotCQkJLyogSXQncyB1bmNvbmZpcm1lZCAqLwotCQkJ
c3N0YXQtPnNzdGF0X3ByaW1hcnkuc3BpbmZvX3N0YXRlID0gU0NUUF9VTkNPTkZJUk1FRDsKLQkJ
fSBlbHNlIGlmIChuZXQtPmRlc3Rfc3RhdGUgJiBTQ1RQX0FERFJfUkVBQ0hBQkxFKSB7Ci0JCQkv
KiBJdCdzIGFjdGl2ZSAqLwotCQkJc3N0YXQtPnNzdGF0X3ByaW1hcnkuc3BpbmZvX3N0YXRlID0g
U0NUUF9BQ1RJVkU7Ci0JCX0gZWxzZSB7Ci0JCQkvKiBJdCdzIGluYWN0aXZlICovCi0JCQlzc3Rh
dC0+c3N0YXRfcHJpbWFyeS5zcGluZm9fc3RhdGUgPSBTQ1RQX0lOQUNUSVZFOwotCQl9Ci0JCXNz
dGF0LT5zc3RhdF9wcmltYXJ5LnNwaW5mb19jd25kID0gbmV0LT5jd25kOwotCQlzc3RhdC0+c3N0
YXRfcHJpbWFyeS5zcGluZm9fc3J0dCA9IG5ldC0+bGFzdHNhID4+IFNDVFBfUlRUX1NISUZUOwot
CQlzc3RhdC0+c3N0YXRfcHJpbWFyeS5zcGluZm9fcnRvID0gbmV0LT5SVE87Ci0JCXNzdGF0LT5z
c3RhdF9wcmltYXJ5LnNwaW5mb19tdHUgPSBuZXQtPm10dTsKLQkJc3dpdGNoIChzdGNiLT5hc29j
LnByaW1hcnlfZGVzdGluYXRpb24tPnJvLl9sX2FkZHIuc2Euc2FfZmFtaWx5KSB7CisjaWYgZGVm
aW5lZChJTkVUNikKKwkJCWNhc2UgQUZfSU5FVDY6CisJCQkJbWVtY3B5KCZzc3RhdC0+c3N0YXRf
cHJpbWFyeS5zcGluZm9fYWRkcmVzcywKKwkJCQkgICAgICAgJm5ldC0+cm8uX2xfYWRkciwKKwkJ
CQkgICAgICAgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKTsKKwkJCQlicmVhazsKKyNlbmRp
ZgorI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJCWNhc2UgQUZfQ09OTjoKKwkJCQltZW1j
cHkoJnNzdGF0LT5zc3RhdF9wcmltYXJ5LnNwaW5mb19hZGRyZXNzLAorCQkJCSAgICAgICAmbmV0
LT5yby5fbF9hZGRyLAorCQkJCSAgICAgICBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2Nvbm4pKTsK
KwkJCQlicmVhazsKKyNlbmRpZgorCQkJZGVmYXVsdDoKKwkJCQlicmVhazsKKwkJCX0KKyNlbmRp
ZgorCQkJKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKikmc3N0YXQtPnNzdGF0X3ByaW1hcnkuc3BpbmZv
X2FkZHJlc3MpLT5zaW5fcG9ydCA9IHN0Y2ItPnJwb3J0OworCQkJLyoKKwkJCSAqIEFnYWluIHRo
ZSB1c2VyIGNhbiBnZXQgaW5mbyBmcm9tIHNjdHBfY29uc3RhbnRzLmgKKwkJCSAqIGZvciB3aGF0
IHRoZSBzdGF0ZSBvZiB0aGUgbmV0d29yayBpcy4KKwkJCSAqLworCQkJaWYgKG5ldC0+ZGVzdF9z
dGF0ZSAmIFNDVFBfQUREUl9VTkNPTkZJUk1FRCkgeworCQkJCS8qIEl0J3MgdW5jb25maXJtZWQg
Ki8KKwkJCQlzc3RhdC0+c3N0YXRfcHJpbWFyeS5zcGluZm9fc3RhdGUgPSBTQ1RQX1VOQ09ORklS
TUVEOworCQkJfSBlbHNlIGlmIChuZXQtPmRlc3Rfc3RhdGUgJiBTQ1RQX0FERFJfUkVBQ0hBQkxF
KSB7CisJCQkJLyogSXQncyBhY3RpdmUgKi8KKwkJCQlzc3RhdC0+c3N0YXRfcHJpbWFyeS5zcGlu
Zm9fc3RhdGUgPSBTQ1RQX0FDVElWRTsKKwkJCX0gZWxzZSB7CisJCQkJLyogSXQncyBpbmFjdGl2
ZSAqLworCQkJCXNzdGF0LT5zc3RhdF9wcmltYXJ5LnNwaW5mb19zdGF0ZSA9IFNDVFBfSU5BQ1RJ
VkU7CisJCQl9CisJCQlzc3RhdC0+c3N0YXRfcHJpbWFyeS5zcGluZm9fY3duZCA9IG5ldC0+Y3du
ZDsKKwkJCXNzdGF0LT5zc3RhdF9wcmltYXJ5LnNwaW5mb19zcnR0ID0gbmV0LT5sYXN0c2EgPj4g
U0NUUF9SVFRfU0hJRlQ7CisJCQlzc3RhdC0+c3N0YXRfcHJpbWFyeS5zcGluZm9fcnRvID0gbmV0
LT5SVE87CisJCQlzc3RhdC0+c3N0YXRfcHJpbWFyeS5zcGluZm9fbXR1ID0gbmV0LT5tdHU7CisJ
CQlzd2l0Y2ggKHN0Y2ItPmFzb2MucHJpbWFyeV9kZXN0aW5hdGlvbi0+cm8uX2xfYWRkci5zYS5z
YV9mYW1pbHkpIHsKICNpZiBkZWZpbmVkKElORVQpCi0JCWNhc2UgQUZfSU5FVDoKLQkJCXNzdGF0
LT5zc3RhdF9wcmltYXJ5LnNwaW5mb19tdHUgLT0gU0NUUF9NSU5fVjRfT1ZFUkhFQUQ7Ci0JCQli
cmVhazsKKwkJCWNhc2UgQUZfSU5FVDoKKwkJCQlzc3RhdC0+c3N0YXRfcHJpbWFyeS5zcGluZm9f
bXR1IC09IFNDVFBfTUlOX1Y0X09WRVJIRUFEOworCQkJCWJyZWFrOwogI2VuZGlmCiAjaWYgZGVm
aW5lZChJTkVUNikKLQkJY2FzZSBBRl9JTkVUNjoKLQkJCXNzdGF0LT5zc3RhdF9wcmltYXJ5LnNw
aW5mb19tdHUgLT0gU0NUUF9NSU5fT1ZFUkhFQUQ7Ci0JCQlicmVhazsKKwkJCWNhc2UgQUZfSU5F
VDY6CisJCQkJc3N0YXQtPnNzdGF0X3ByaW1hcnkuc3BpbmZvX210dSAtPSBTQ1RQX01JTl9PVkVS
SEVBRDsKKwkJCQlicmVhazsKICNlbmRpZgogI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKLQkJ
Y2FzZSBBRl9DT05OOgotCQkJc3N0YXQtPnNzdGF0X3ByaW1hcnkuc3BpbmZvX210dSAtPSBzaXpl
b2Yoc3RydWN0IHNjdHBoZHIpOwotCQkJYnJlYWs7CisJCQljYXNlIEFGX0NPTk46CisJCQkJc3N0
YXQtPnNzdGF0X3ByaW1hcnkuc3BpbmZvX210dSAtPSBzaXplb2Yoc3RydWN0IHNjdHBoZHIpOwor
CQkJCWJyZWFrOwogI2VuZGlmCi0JCWRlZmF1bHQ6Ci0JCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJ
CQkJYnJlYWs7CisJCQl9CisJCX0gZWxzZSB7CisJCQltZW1zZXQoJnNzdGF0LT5zc3RhdF9wcmlt
YXJ5LCAwLCBzaXplb2Yoc3RydWN0IHNjdHBfcGFkZHJpbmZvKSk7CiAJCX0KIAkJc3N0YXQtPnNz
dGF0X3ByaW1hcnkuc3BpbmZvX2Fzc29jX2lkID0gc2N0cF9nZXRfYXNzb2NpZChzdGNiKTsKIAkJ
U0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwpAQCAtMzM3Miw3ICszMzQyLDggQEAgc2N0cF9nZXRvcHQo
c3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCAqb3B0
c2l6ZSwKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxB
R1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1Nf
SU5fVENQUE9PTCkgfHwKLQkJCSAgICAoc3J0by0+c3J0b19hc3NvY19pZCA9PSBTQ1RQX0ZVVFVS
RV9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VE
UFRZUEUpICYmCisJCQkgICAgIChzcnRvLT5zcnRvX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FT
U09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9STE9DSyhpbnApOwogCQkJCXNydG8tPnNydG9faW5pdGlh
bCA9IGlucC0+c2N0cF9lcC5pbml0aWFsX3J0bzsKIAkJCQlzcnRvLT5zcnRvX21heCA9IGlucC0+
c2N0cF9lcC5zY3RwX21heHJ0bzsKQEAgLTM0MTksNyArMzM5MCw3IEBAIHNjdHBfZ2V0b3B0KHN0
cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3QgKm9wdHNp
emUsCiAJCVNDVFBfRklORF9TVENCKGlucCwgc3RjYiwgc2Fzb2MtPnNhc29jX2Fzc29jX2lkKTsK
IAogCQlpZiAoc3RjYikgewotCQkJc2Fzb2MtPnNhc29jX2Nvb2tpZV9saWZlID0gVElDS1NfVE9f
TVNFQyhzdGNiLT5hc29jLmNvb2tpZV9saWZlKTsKKwkJCXNhc29jLT5zYXNvY19jb29raWVfbGlm
ZSA9IHNjdHBfdGlja3NfdG9fbXNlY3Moc3RjYi0+YXNvYy5jb29raWVfbGlmZSk7CiAJCQlzYXNv
Yy0+c2Fzb2NfYXNvY21heHJ4dCA9IHN0Y2ItPmFzb2MubWF4X3NlbmRfdGltZXM7CiAJCQlzYXNv
Yy0+c2Fzb2NfbnVtYmVyX3BlZXJfZGVzdGluYXRpb25zID0gc3RjYi0+YXNvYy5udW1uZXRzOwog
CQkJc2Fzb2MtPnNhc29jX3BlZXJfcnduZCA9IHN0Y2ItPmFzb2MucGVlcnNfcnduZDsKQEAgLTM0
MjgsOSArMzM5OSwxMCBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5h
bWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChp
bnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAt
PnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChzYXNv
Yy0+c2Fzb2NfYXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAt
PnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoc2Fzb2Mt
PnNhc29jX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9S
TE9DSyhpbnApOwotCQkJCXNhc29jLT5zYXNvY19jb29raWVfbGlmZSA9IFRJQ0tTX1RPX01TRUMo
aW5wLT5zY3RwX2VwLmRlZl9jb29raWVfbGlmZSk7CisJCQkJc2Fzb2MtPnNhc29jX2Nvb2tpZV9s
aWZlID0gc2N0cF90aWNrc190b19tc2VjcyhpbnAtPnNjdHBfZXAuZGVmX2Nvb2tpZV9saWZlKTsK
IAkJCQlzYXNvYy0+c2Fzb2NfYXNvY21heHJ4dCA9IGlucC0+c2N0cF9lcC5tYXhfc2VuZF90aW1l
czsKIAkJCQlzYXNvYy0+c2Fzb2NfbnVtYmVyX3BlZXJfZGVzdGluYXRpb25zID0gMDsKIAkJCQlz
YXNvYy0+c2Fzb2NfcGVlcl9yd25kID0gMDsKQEAgLTM0NTksNyArMzQzMSw4IEBAIHNjdHBfZ2V0
b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qg
Km9wdHNpemUsCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENC
X0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZM
QUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKHNfaW5mby0+c2luZm9fYXNzb2NfaWQgPT0gU0NU
UF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9G
TEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoc19pbmZvLT5zaW5mb19hc3NvY19pZCA9PSBTQ1RQ
X0ZVVFVSRV9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfUkxPQ0soaW5wKTsKIAkJCQltZW1jcHko
c19pbmZvLCAmaW5wLT5kZWZfc2VuZCwgc2l6ZW9mKGlucC0+ZGVmX3NlbmQpKTsKIAkJCQlTQ1RQ
X0lOUF9SVU5MT0NLKGlucCk7CkBAIC0zNTg0LDcgKzM1NTcsOCBAQCBzY3RwX2dldG9wdChzdHJ1
Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRzaXpl
LAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19U
Q1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9U
Q1BQT09MKSB8fAotCQkJICAgIChzY2FjdC0+c2NhY3RfYXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVf
QVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBU
WVBFKSAmJgorCQkJICAgICAoc2NhY3QtPnNjYWN0X2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FT
U09DKSkpIHsKIAkJCQkvKiBnZXQgdGhlIGVuZHBvaW50IGFjdGl2ZSBrZXkgKi8KIAkJCQlTQ1RQ
X0lOUF9STE9DSyhpbnApOwogCQkJCXNjYWN0LT5zY2FjdF9rZXludW1iZXIgPSBpbnAtPnNjdHBf
ZXAuZGVmYXVsdF9rZXlpZDsKQEAgLTM2MjYsNyArMzYwMCw4IEBAIHNjdHBfZ2V0b3B0KHN0cnVj
dCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3QgKm9wdHNpemUs
CiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RD
UFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RD
UFBPT0wpIHx8Ci0JCQkgICAgKHNhYy0+Z2F1dGhfYXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNT
T0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBF
KSAmJgorCQkJICAgICAoc2FjLT5nYXV0aF9hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykp
KSB7CiAJCQkJLyogZ2V0IG9mZiB0aGUgZW5kcG9pbnQgKi8KIAkJCQlTQ1RQX0lOUF9STE9DSyhp
bnApOwogCQkJCWNoa2xpc3QgPSBpbnAtPnNjdHBfZXAubG9jYWxfYXV0aF9jaHVua3M7CkBAIC0z
NzU4LDcgKzM3MzMsOCBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5h
bWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRzaXplLAogCQkJfSBlbHNlIHsKIAkJCQlpZiAo
KGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkJICAgIChp
bnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJCSAgICAo
ZXZlbnQtPnNlX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkgeworCQkJCSAgICAoKGlu
cC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkJICAgICAoZXZl
bnQtPnNlX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQkJU0NUUF9JTlBf
UkxPQ0soaW5wKTsKIAkJCQkJZXZlbnQtPnNlX29uID0gc2N0cF9pc19mZWF0dXJlX29uKGlucCwg
ZXZlbnRfdHlwZSk7CiAJCQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKQEAgLTM4MzEsNyArMzgw
Nyw4IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAq
b3B0dmFsLCBzaXplX3QgKm9wdHNpemUsCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9m
bGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFn
cyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKGluZm8tPnNuZF9hc3Nv
Y19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAm
IFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgIChpbmZvLT5zbmRfYXNzb2NfaWQg
PT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJ
aW5mby0+c25kX3NpZCA9IGlucC0+ZGVmX3NlbmQuc2luZm9fc3RyZWFtOwogCQkJCWluZm8tPnNu
ZF9mbGFncyA9IGlucC0+ZGVmX3NlbmQuc2luZm9fZmxhZ3M7CkBAIC0zODYzLDcgKzM4NDAsOCBA
QCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZh
bCwgc2l6ZV90ICpvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3Mg
JiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBT
Q1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChpbmZvLT5wcl9hc3NvY19pZCA9
PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBf
UENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgIChpbmZvLT5wcl9hc3NvY19pZCA9PSBTQ1RQ
X0ZVVFVSRV9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfUkxPQ0soaW5wKTsKIAkJCQlpbmZvLT5w
cl9wb2xpY3kgPSBQUl9TQ1RQX1BPTElDWShpbnAtPmRlZl9zZW5kLnNpbmZvX2ZsYWdzKTsKIAkJ
CQlpbmZvLT5wcl92YWx1ZSA9IGlucC0+ZGVmX3NlbmQuc2luZm9fdGltZXRvbGl2ZTsKQEAgLTM5
ODQsNyArMzk2Miw4IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFt
ZSwgdm9pZCAqb3B0dmFsLCBzaXplX3QgKm9wdHNpemUsCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlu
cC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+
c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKHRobGRz
LT5zcHRfYXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNj
dHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAodGhsZHMtPnNw
dF9hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpKSB7CiAJCQkJLyogVXNlIGVuZHBvaW50
IGRlZmF1bHRzICovCiAJCQkJU0NUUF9JTlBfUkxPQ0soaW5wKTsKIAkJCQl0aGxkcy0+c3B0X3Bh
dGhtYXhyeHQgPSBpbnAtPnNjdHBfZXAuZGVmX25ldF9mYWlsdXJlOwpAQCAtNDEwMiw3ICs0MDgx
LDggQEAgc2N0cF9nZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpv
cHR2YWwsIHNpemVfdCAqb3B0c2l6ZSwKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2Zs
YWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdz
ICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAgICAoZW5jYXBzLT5zdWVfYXNz
b2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3Mg
JiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoZW5jYXBzLT5zdWVfYXNzb2Nf
aWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJ
CQkJZW5jYXBzLT5zdWVfcG9ydCA9IGlucC0+c2N0cF9lcC5wb3J0OwogCQkJCVNDVFBfSU5QX1JV
TkxPQ0soaW5wKTsKQEAgLTQxMjksNyArNDEwOSw4IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2Nr
ZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3QgKm9wdHNpemUsCiAJCX0g
ZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUp
IHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wp
IHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAg
ICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAg
IChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1JM
T0NLKGlucCk7CiAJCQkJYXYtPmFzc29jX3ZhbHVlID0gaW5wLT5lY25fc3VwcG9ydGVkOwogCQkJ
CVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKQEAgLTQxNTYsNyArNDEzNyw4IEBAIHNjdHBfZ2V0b3B0
KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3QgKm9w
dHNpemUsCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZM
QUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdT
X0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NP
QykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUp
ICYmCisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkgewogCQkJ
CVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJYXYtPmFzc29jX3ZhbHVlID0gaW5wLT5wcnNjdHBf
c3VwcG9ydGVkOwogCQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKQEAgLTQxODMsNyArNDE2NSw4
IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0
dmFsLCBzaXplX3QgKm9wdHNpemUsCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFn
cyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAm
IFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9PSBT
Q1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENC
X0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVf
QVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJYXYtPmFzc29jX3ZhbHVl
ID0gaW5wLT5hdXRoX3N1cHBvcnRlZDsKIAkJCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CkBAIC00
MjEwLDcgKzQxOTMsOCBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5h
bWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChp
bnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAt
PnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChhdi0+
YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxh
Z3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoYXYtPmFzc29jX2lkID09
IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9STE9DSyhpbnApOwogCQkJCWF2
LT5hc3NvY192YWx1ZSA9IGlucC0+YXNjb25mX3N1cHBvcnRlZDsKIAkJCQlTQ1RQX0lOUF9SVU5M
T0NLKGlucCk7CkBAIC00MjM3LDcgKzQyMjEsOCBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0
ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRzaXplLAogCQl9IGVs
c2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8
fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8
fAotCQkJICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAg
KChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAo
YXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9STE9D
SyhpbnApOwogCQkJCWF2LT5hc3NvY192YWx1ZSA9IGlucC0+cmVjb25maWdfc3VwcG9ydGVkOwog
CQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKQEAgLTQyNjQsNyArNDI0OSw4IEBAIHNjdHBfZ2V0
b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qg
Km9wdHNpemUsCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENC
X0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZM
QUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9B
U1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZ
UEUpICYmCisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkgewog
CQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJYXYtPmFzc29jX3ZhbHVlID0gaW5wLT5ucnNh
Y2tfc3VwcG9ydGVkOwogCQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKQEAgLTQyOTEsNyArNDI3
Nyw4IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAq
b3B0dmFsLCBzaXplX3QgKm9wdHNpemUsCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9m
bGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFn
cyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9
PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBf
UENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRV
UkVfQVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJYXYtPmFzc29jX3Zh
bHVlID0gaW5wLT5wa3Rkcm9wX3N1cHBvcnRlZDsKIAkJCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7
CkBAIC00MzE4LDcgKzQzMDUsOCBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50
IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRzaXplLAogCQl9IGVsc2UgewogCQkJ
aWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAg
IChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAg
IChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNj
dHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoYXYtPmFzc29j
X2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9STE9DSyhpbnApOwog
CQkJCWF2LT5hc3NvY192YWx1ZSA9ICh1aW50MzJfdClpbnAtPmxvY2FsX3N0cnJlc2V0X3N1cHBv
cnQ7CiAJCQkJU0NUUF9JTlBfUlVOTE9DSyhpbnApOwpAQCAtNDQyMCw3ICs0NDA4LDggQEAgc2N0
cF9nZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNp
emVfdCAqb3B0c2l6ZSwKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NU
UF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9Q
Q0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVU
VVJFX0FTU09DKSkgeworCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1Nf
VURQVFlQRSkgJiYKKwkJCSAgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykp
KSB7CiAJCQkJU0NUUF9JTlBfUkxPQ0soaW5wKTsKIAkJCQlhdi0+YXNzb2NfdmFsdWUgPSBpbnAt
Pm1heF9jd25kOwogCQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKQEAgLTQ0NDUsNyArNDQzNCw3
IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0
dmFsLCBzaXplX3QgKm9wdHNpemUsCiAJcmV0dXJuIChlcnJvcik7CiB9CiAKLSNpZiBkZWZpbmVk
KF9fUGFuZGFfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmIGRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKIGludAogI2Vsc2UKIHN0YXRpYyBpbnQKQEAgLTQ0NjAsMTMgKzQ0NDksMTEgQEAg
c2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWws
IHNpemVfdCBvcHRzaXplLAogCXVpbnQzMl90IHZyZl9pZDsKIAogCWlmIChvcHR2YWwgPT0gTlVM
TCkgewotCQlTQ1RQX1BSSU5URigib3B0dmFsIGlzIE5VTExcbiIpOwogCQlTQ1RQX0xUUkFDRV9F
UlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBFSU5WQUwpOwog
CQlyZXR1cm4gKEVJTlZBTCk7CiAJfQogCWlucCA9IChzdHJ1Y3Qgc2N0cF9pbnBjYiAqKXNvLT5z
b19wY2I7CiAJaWYgKGlucCA9PSBOVUxMKSB7Ci0JCVNDVFBfUFJJTlRGKCJpbnAgaXMgTlVMTD9c
biIpOwogCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1ND
VFBfVVNSUkVRLCBFSU5WQUwpOwogCQlyZXR1cm4gKEVJTlZBTCk7CiAJfQpAQCAtNDUzNiw3ICs0
NTIzLDcgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lk
ICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQkJICogVGhlIHZhbHVlIGlzIGluIHRpY2tzLiBO
b3RlIHRoaXMgZG9lcyBub3QgZWZmZWN0CiAJCQkgKiBvbGQgYXNzb2NpYXRpb25zLCBvbmx5IG5l
dyBvbmVzLgogCQkJICovCi0JCQlpbnAtPnNjdHBfZXAuYXV0b19jbG9zZV90aW1lID0gU0VDX1RP
X1RJQ0tTKCptb3B0KTsKKwkJCWlucC0+c2N0cF9lcC5hdXRvX2Nsb3NlX3RpbWUgPSBzY3RwX3Nl
Y3NfdG9fdGlja3MoKm1vcHQpOwogCQkJYnJlYWs7CiAJCX0KIAkJU0NUUF9JTlBfV0xPQ0soaW5w
KTsKQEAgLTQ2MTUsNyArNDYwMiw4IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBp
bnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJfSBlbHNlIHsKIAkJ
CWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAg
ICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAg
ICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkgeworCQkJICAgICgoaW5wLT5z
Y3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAgKGF2LT5hc3Nv
Y19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfV0xPQ0soaW5wKTsK
IAkJCQlpZiAoYXYtPmFzc29jX3ZhbHVlID09IDApIHsKIAkJCQkJaW5wLT5pZGF0YV9zdXBwb3J0
ZWQgPSAwOwpAQCAtNDY1NCwxNCArNDY0MiwxNiBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0
ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90IG9wdHNpemUsCiAJCQl9IGVs
c2UgewogCQkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkg
fHwKIAkJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wp
IHx8Ci0JCQkJICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpIHx8Ci0JCQkJ
ICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSB7CisJCQkJICAgICgoaW5wLT5z
Y3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCQkgICAgICgoYXYtPmFz
c29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSB8fAorCQkJCSAgICAgIChhdi0+YXNzb2NfaWQg
PT0gU0NUUF9BTExfQVNTT0MpKSkpIHsKIAkJCQkJU0NUUF9JTlBfV0xPQ0soaW5wKTsKIAkJCQkJ
aW5wLT5zY3RwX2NtdF9vbl9vZmYgPSBhdi0+YXNzb2NfdmFsdWU7CiAJCQkJCVNDVFBfSU5QX1dV
TkxPQ0soaW5wKTsKIAkJCQl9Ci0JCQkJaWYgKChhdi0+YXNzb2NfaWQgPT0gU0NUUF9DVVJSRU5U
X0FTU09DKSB8fAotCQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkgewor
CQkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJ
CQkgICAgKChhdi0+YXNzb2NfaWQgPT0gU0NUUF9DVVJSRU5UX0FTU09DKSB8fAorCQkJCSAgICAg
KGF2LT5hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpKSB7CiAJCQkJCVNDVFBfSU5QX1JMT0NL
KGlucCk7CiAJCQkJCUxJU1RfRk9SRUFDSChzdGNiLCAmaW5wLT5zY3RwX2Fzb2NfbGlzdCwgc2N0
cF90Y2JsaXN0KSB7CiAJCQkJCQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwpAQCAtNDcwMywxNCArNDY5
MywxNiBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQg
Km9wdHZhbCwgc2l6ZV90IG9wdHNpemUsCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9m
bGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFn
cyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9
PSBTQ1RQX0ZVVFVSRV9BU1NPQykgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfQUxM
X0FTU09DKSkgeworCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQ
VFlQRSkgJiYKKwkJCSAgICAgKChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpIHx8
CisJCQkgICAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkpKSB7CiAJCQkJU0NU
UF9JTlBfV0xPQ0soaW5wKTsKIAkJCQlpbnAtPnNjdHBfZXAuc2N0cF9kZWZhdWx0X2NjX21vZHVs
ZSA9IGF2LT5hc3NvY192YWx1ZTsKIAkJCQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7CiAJCQl9Ci0J
CQlpZiAoKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0NVUlJFTlRfQVNTT0MpIHx8Ci0JCQkgICAgKGF2
LT5hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpIHsKKwkJCWlmICgoaW5wLT5zY3RwX2ZsYWdz
ICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAoKGF2LT5hc3NvY19pZCA9PSBT
Q1RQX0NVUlJFTlRfQVNTT0MpIHx8CisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9BTExf
QVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJTElTVF9GT1JFQUNIKHN0
Y2IsICZpbnAtPnNjdHBfYXNvY19saXN0LCBzY3RwX3RjYmxpc3QpIHsKIAkJCQkJU0NUUF9UQ0Jf
TE9DSyhzdGNiKTsKQEAgLTQ3MzUsNyArNDcyNyw4IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2Nr
ZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJU0NU
UF9DSEVDS19BTkRfQ0FTVChjY19vcHQsIG9wdHZhbCwgc3RydWN0IHNjdHBfY2Nfb3B0aW9uLCBv
cHRzaXplKTsKIAkJU0NUUF9GSU5EX1NUQ0IoaW5wLCBzdGNiLCBjY19vcHQtPmFpZF92YWx1ZS5h
c3NvY19pZCk7CiAJCWlmIChzdGNiID09IE5VTEwpIHsKLQkJCWlmIChjY19vcHQtPmFpZF92YWx1
ZS5hc3NvY19pZCA9PSBTQ1RQX0NVUlJFTlRfQVNTT0MpIHsKKwkJCWlmICgoaW5wLT5zY3RwX2Zs
YWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAoY2Nfb3B0LT5haWRfdmFs
dWUuYXNzb2NfaWQgPT0gU0NUUF9DVVJSRU5UX0FTU09DKSkgewogCQkJCVNDVFBfSU5QX1JMT0NL
KGlucCk7CiAJCQkJTElTVF9GT1JFQUNIKHN0Y2IsICZpbnAtPnNjdHBfYXNvY19saXN0LCBzY3Rw
X3RjYmxpc3QpIHsKIAkJCQkJU0NUUF9UQ0JfTE9DSyhzdGNiKTsKQEAgLTQ3NzYsMjkgKzQ3Njks
MzUgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpv
cHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQl9CiAJCVNDVFBfRklORF9TVENCKGlucCwgc3RjYiwg
YXYtPmFzc29jX2lkKTsKIAkJaWYgKHN0Y2IpIHsKKwkJCVNDVFBfVENCX1NFTkRfTE9DSyhzdGNi
KTsKIAkJCXN0Y2ItPmFzb2Muc3NfZnVuY3Rpb25zLnNjdHBfc3NfY2xlYXIoc3RjYiwgJnN0Y2It
PmFzb2MsIDEsIDEpOwogCQkJc3RjYi0+YXNvYy5zc19mdW5jdGlvbnMgPSBzY3RwX3NzX2Z1bmN0
aW9uc1thdi0+YXNzb2NfdmFsdWVdOwogCQkJc3RjYi0+YXNvYy5zdHJlYW1fc2NoZWR1bGluZ19t
b2R1bGUgPSBhdi0+YXNzb2NfdmFsdWU7CiAJCQlzdGNiLT5hc29jLnNzX2Z1bmN0aW9ucy5zY3Rw
X3NzX2luaXQoc3RjYiwgJnN0Y2ItPmFzb2MsIDEpOworCQkJU0NUUF9UQ0JfU0VORF9VTkxPQ0so
c3RjYik7CiAJCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlu
cC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+
c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKGF2LT5h
c3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09
IFNDVFBfQUxMX0FTU09DKSkgeworCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0Jf
RkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAgKChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVf
QVNTT0MpIHx8CisJCQkgICAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkpKSB7
CiAJCQkJU0NUUF9JTlBfV0xPQ0soaW5wKTsKIAkJCQlpbnAtPnNjdHBfZXAuc2N0cF9kZWZhdWx0
X3NzX21vZHVsZSA9IGF2LT5hc3NvY192YWx1ZTsKIAkJCQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7
CiAJCQl9Ci0JCQlpZiAoKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0NVUlJFTlRfQVNTT0MpIHx8Ci0J
CQkgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpIHsKKwkJCWlmICgoaW5wLT5z
Y3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAoKGF2LT5hc3Nv
Y19pZCA9PSBTQ1RQX0NVUlJFTlRfQVNTT0MpIHx8CisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0g
U0NUUF9BTExfQVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJTElTVF9G
T1JFQUNIKHN0Y2IsICZpbnAtPnNjdHBfYXNvY19saXN0LCBzY3RwX3RjYmxpc3QpIHsKIAkJCQkJ
U0NUUF9UQ0JfTE9DSyhzdGNiKTsKKwkJCQkJU0NUUF9UQ0JfU0VORF9MT0NLKHN0Y2IpOwogCQkJ
CQlzdGNiLT5hc29jLnNzX2Z1bmN0aW9ucy5zY3RwX3NzX2NsZWFyKHN0Y2IsICZzdGNiLT5hc29j
LCAxLCAxKTsKIAkJCQkJc3RjYi0+YXNvYy5zc19mdW5jdGlvbnMgPSBzY3RwX3NzX2Z1bmN0aW9u
c1thdi0+YXNzb2NfdmFsdWVdOwogCQkJCQlzdGNiLT5hc29jLnN0cmVhbV9zY2hlZHVsaW5nX21v
ZHVsZSA9IGF2LT5hc3NvY192YWx1ZTsKIAkJCQkJc3RjYi0+YXNvYy5zc19mdW5jdGlvbnMuc2N0
cF9zc19pbml0KHN0Y2IsICZzdGNiLT5hc29jLCAxKTsKKwkJCQkJU0NUUF9UQ0JfU0VORF9VTkxP
Q0soc3RjYik7CiAJCQkJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKIAkJCQl9CiAJCQkJU0NUUF9J
TlBfUlVOTE9DSyhpbnApOwpAQCAtNDgyMSw3ICs0ODIwLDggQEAgc2N0cF9zZXRvcHQoc3RydWN0
IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAog
CQkJfQogCQkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwogCQl9IGVsc2UgewotCQkJaWYgKGF2LT5h
c3NvY19pZCA9PSBTQ1RQX0NVUlJFTlRfQVNTT0MpIHsKKwkJCWlmICgoaW5wLT5zY3RwX2ZsYWdz
ICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAoYXYtPmFzc29jX2lkID09IFND
VFBfQ1VSUkVOVF9BU1NPQykpIHsKIAkJCQlTQ1RQX0lOUF9STE9DSyhpbnApOwogCQkJCUxJU1Rf
Rk9SRUFDSChzdGNiLCAmaW5wLT5zY3RwX2Fzb2NfbGlzdCwgc2N0cF90Y2JsaXN0KSB7CiAJCQkJ
CVNDVFBfVENCX0xPQ0soc3RjYik7CkBAIC00ODU5LDE0ICs0ODU5LDE2IEBAIHNjdHBfc2V0b3B0
KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0
c2l6ZSwKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxB
R1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1Nf
SU5fVENQUE9PTCkgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09D
KSB8fAotCQkJICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSB7CisJCQkgICAg
KChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAo
KGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykgfHwKKwkJCSAgICAgIChhdi0+YXNz
b2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSkpIHsKIAkJCQlTQ1RQX0lOUF9XTE9DSyhpbnApOwog
CQkJCWlucC0+c2N0cF9jb250ZXh0ID0gYXYtPmFzc29jX3ZhbHVlOwogCQkJCVNDVFBfSU5QX1dV
TkxPQ0soaW5wKTsKIAkJCX0KLQkJCWlmICgoYXYtPmFzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9B
U1NPQykgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkgeworCQkJ
aWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAg
ICgoYXYtPmFzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKKwkJCSAgICAgKGF2LT5h
c3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfUkxPQ0soaW5wKTsK
IAkJCQlMSVNUX0ZPUkVBQ0goc3RjYiwgJmlucC0+c2N0cF9hc29jX2xpc3QsIHNjdHBfdGNibGlz
dCkgewogCQkJCQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwpAQCAtNTAyMywxMCArNTAyNSwxMiBAQCBz
Y3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwg
c2l6ZV90IG9wdHNpemUsCiAJCVNDVFBfQ0hFQ0tfQU5EX0NBU1Qoc2Fjaywgb3B0dmFsLCBzdHJ1
Y3Qgc2N0cF9zYWNrX2luZm8sIG9wdHNpemUpOwogCQlTQ1RQX0ZJTkRfU1RDQihpbnAsIHN0Y2Is
IHNhY2stPnNhY2tfYXNzb2NfaWQpOwogCQlpZiAoc2Fjay0+c2Fja19kZWxheSkgewotCQkJaWYg
KHNhY2stPnNhY2tfZGVsYXkgPiBTQ1RQX01BWF9TQUNLX0RFTEFZKQotCQkJCXNhY2stPnNhY2tf
ZGVsYXkgPSBTQ1RQX01BWF9TQUNLX0RFTEFZOwotCQkJaWYgKE1TRUNfVE9fVElDS1Moc2Fjay0+
c2Fja19kZWxheSkgPCAxKSB7Ci0JCQkJc2Fjay0+c2Fja19kZWxheSA9IFRJQ0tTX1RPX01TRUMo
MSk7CisJCQlpZiAoc2Fjay0+c2Fja19kZWxheSA+IFNDVFBfTUFYX1NBQ0tfREVMQVkpIHsKKwkJ
CQllcnJvciA9IEVJTlZBTDsKKwkJCQlpZiAoc3RjYiAhPSBOVUxMKSB7CisJCQkJCVNDVFBfVENC
X1VOTE9DSyhzdGNiKTsKKwkJCQl9CisJCQkJYnJlYWs7CiAJCQl9CiAJCX0KIAkJaWYgKHN0Y2Ip
IHsKQEAgLTUwNDAsMTkgKzUwNDQsMjEgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28s
IGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQl9IGVsc2Ugewog
CQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJ
ICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJ
ICAgIChzYWNrLT5zYWNrX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSB8fAotCQkJICAg
IChzYWNrLT5zYWNrX2Fzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkgeworCQkJICAgICgoaW5w
LT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAgKChzYWNr
LT5zYWNrX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSB8fAorCQkJICAgICAgKHNhY2st
PnNhY2tfYXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSkpIHsKIAkJCQlTQ1RQX0lOUF9XTE9D
SyhpbnApOwogCQkJCWlmIChzYWNrLT5zYWNrX2RlbGF5KSB7Ci0JCQkJCWlucC0+c2N0cF9lcC5z
Y3RwX3RpbWVvdXR0aWNrc1tTQ1RQX1RJTUVSX1JFQ1ZdID0gTVNFQ19UT19USUNLUyhzYWNrLT5z
YWNrX2RlbGF5KTsKKwkJCQkJaW5wLT5zY3RwX2VwLnNjdHBfdGltZW91dHRpY2tzW1NDVFBfVElN
RVJfUkVDVl0gPSBzY3RwX21zZWNzX3RvX3RpY2tzKHNhY2stPnNhY2tfZGVsYXkpOwogCQkJCX0K
IAkJCQlpZiAoc2Fjay0+c2Fja19mcmVxKSB7CiAJCQkJCWlucC0+c2N0cF9lcC5zY3RwX3NhY2tf
ZnJlcSA9IHNhY2stPnNhY2tfZnJlcTsKIAkJCQl9CiAJCQkJU0NUUF9JTlBfV1VOTE9DSyhpbnAp
OwogCQkJfQotCQkJaWYgKChzYWNrLT5zYWNrX2Fzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NP
QykgfHwKLQkJCSAgICAoc2Fjay0+c2Fja19hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpIHsK
KwkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJ
CSAgICAoKHNhY2stPnNhY2tfYXNzb2NfaWQgPT0gU0NUUF9DVVJSRU5UX0FTU09DKSB8fAorCQkJ
ICAgICAoc2Fjay0+c2Fja19hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpKSB7CiAJCQkJU0NU
UF9JTlBfUkxPQ0soaW5wKTsKIAkJCQlMSVNUX0ZPUkVBQ0goc3RjYiwgJmlucC0+c2N0cF9hc29j
X2xpc3QsIHNjdHBfdGNibGlzdCkgewogCQkJCQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwpAQCAtNTA5
Nyw3ICs1MTAzLDcgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1l
LCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQlpZiAoc2NhLT5zY2Ffa2V5bGVuZ3Ro
ID09IDApIHsKIAkJCXNpemUgPSBvcHRzaXplIC0gc2l6ZW9mKHN0cnVjdCBzY3RwX2F1dGhrZXkp
OwogCQl9IGVsc2UgewotCQkgICAgICAgIGlmIChzY2EtPnNjYV9rZXlsZW5ndGggKyBzaXplb2Yo
c3RydWN0IHNjdHBfYXV0aGtleSkgPD0gb3B0c2l6ZSkgeworCQkJaWYgKHNjYS0+c2NhX2tleWxl
bmd0aCArIHNpemVvZihzdHJ1Y3Qgc2N0cF9hdXRoa2V5KSA8PSBvcHRzaXplKSB7CiAJCQkJc2l6
ZSA9IHNjYS0+c2NhX2tleWxlbmd0aDsKIAkJCX0gZWxzZSB7CiAJCQkJU0NUUF9MVFJBQ0VfRVJS
X1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1VTUlJFUSwgRUlOVkFMKTsKQEAg
LTUxMzksOCArNTE0NSw5IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0
bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJfSBlbHNlIHsKIAkJCWlmICgo
aW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5w
LT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAgICAoc2Nh
LT5zY2FfYXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpIHx8Ci0JCQkgICAgKHNjYS0+c2Nh
X2Fzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkgeworCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdz
ICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAgKChzY2EtPnNjYV9hc3NvY19p
ZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykgfHwKKwkJCSAgICAgIChzY2EtPnNjYV9hc3NvY19pZCA9
PSBTQ1RQX0FMTF9BU1NPQykpKSkgewogCQkJCVNDVFBfSU5QX1dMT0NLKGlucCk7CiAJCQkJc2hh
cmVkX2tleXMgPSAmaW5wLT5zY3RwX2VwLnNoYXJlZF9rZXlzOwogCQkJCS8qCkBAIC01MTc0LDgg
KzUxODEsOSBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZv
aWQgKm9wdHZhbCwgc2l6ZV90IG9wdHNpemUsCiAJCQkJZXJyb3IgPSBzY3RwX2luc2VydF9zaGFy
ZWRrZXkoc2hhcmVkX2tleXMsIHNoYXJlZF9rZXkpOwogCQkJCVNDVFBfSU5QX1dVTkxPQ0soaW5w
KTsKIAkJCX0KLQkJCWlmICgoc2NhLT5zY2FfYXNzb2NfaWQgPT0gU0NUUF9DVVJSRU5UX0FTU09D
KSB8fAotCQkJICAgIChzY2EtPnNjYV9hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpIHsKKwkJ
CWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAg
ICAoKHNjYS0+c2NhX2Fzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKKwkJCSAgICAg
KHNjYS0+c2NhX2Fzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9S
TE9DSyhpbnApOwogCQkJCUxJU1RfRk9SRUFDSChzdGNiLCAmaW5wLT5zY3RwX2Fzb2NfbGlzdCwg
c2N0cF90Y2JsaXN0KSB7CiAJCQkJCVNDVFBfVENCX0xPQ0soc3RjYik7CkBAIC01MjgzLDggKzUy
OTEsOSBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQg
Km9wdHZhbCwgc2l6ZV90IG9wdHNpemUsCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9m
bGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFn
cyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKHNjYWN0LT5zY2FjdF9h
c3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykgfHwKLQkJCSAgICAoc2NhY3QtPnNjYWN0X2Fz
c29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkgeworCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYg
U0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAgKChzY2FjdC0+c2NhY3RfYXNzb2Nf
aWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpIHx8CisJCQkgICAgICAoc2NhY3QtPnNjYWN0X2Fzc29j
X2lkID09IFNDVFBfQUxMX0FTU09DKSkpKSB7CiAJCQkJU0NUUF9JTlBfV0xPQ0soaW5wKTsKIAkJ
CQlpZiAoc2N0cF9hdXRoX3NldGFjdGl2ZWtleV9lcChpbnAsIHNjYWN0LT5zY2FjdF9rZXludW1i
ZXIpKSB7CiAJCQkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZS
T01fU0NUUF9VU1JSRVEsIEVJTlZBTCk7CkBAIC01MjkyLDggKzUzMDEsOSBAQCBzY3RwX3NldG9w
dChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90IG9w
dHNpemUsCiAJCQkJfQogCQkJCVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsKIAkJCX0KLQkJCWlmICgo
c2NhY3QtPnNjYWN0X2Fzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKLQkJCSAgICAo
c2NhY3QtPnNjYWN0X2Fzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkgeworCQkJaWYgKChpbnAt
PnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICgoc2NhY3Qt
PnNjYWN0X2Fzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKKwkJCSAgICAgKHNjYWN0
LT5zY2FjdF9hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfUkxP
Q0soaW5wKTsKIAkJCQlMSVNUX0ZPUkVBQ0goc3RjYiwgJmlucC0+c2N0cF9hc29jX2xpc3QsIHNj
dHBfdGNibGlzdCkgewogCQkJCQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwpAQCAtNTMyMiw4ICs1MzMy
LDkgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpv
cHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxh
Z3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3Mg
JiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChzY2RlbC0+c2NhY3RfYXNz
b2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpIHx8Ci0JCQkgICAgKHNjZGVsLT5zY2FjdF9hc3Nv
Y19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFND
VFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgICgoc2NkZWwtPnNjYWN0X2Fzc29jX2lk
ID09IFNDVFBfRlVUVVJFX0FTU09DKSB8fAorCQkJICAgICAgKHNjZGVsLT5zY2FjdF9hc3NvY19p
ZCA9PSBTQ1RQX0FMTF9BU1NPQykpKSkgewogCQkJCVNDVFBfSU5QX1dMT0NLKGlucCk7CiAJCQkJ
aWYgKHNjdHBfZGVsZXRlX3NoYXJlZGtleV9lcChpbnAsIHNjZGVsLT5zY2FjdF9rZXludW1iZXIp
KSB7CiAJCQkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01f
U0NUUF9VU1JSRVEsIEVJTlZBTCk7CkBAIC01MzMxLDggKzUzNDIsOSBAQCBzY3RwX3NldG9wdChz
dHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90IG9wdHNp
emUsCiAJCQkJfQogCQkJCVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsKIAkJCX0KLQkJCWlmICgoc2Nk
ZWwtPnNjYWN0X2Fzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKLQkJCSAgICAoc2Nk
ZWwtPnNjYWN0X2Fzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkgeworCQkJaWYgKChpbnAtPnNj
dHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICgoc2NkZWwtPnNj
YWN0X2Fzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKKwkJCSAgICAgKHNjZGVsLT5z
Y2FjdF9hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfUkxPQ0so
aW5wKTsKIAkJCQlMSVNUX0ZPUkVBQ0goc3RjYiwgJmlucC0+c2N0cF9hc29jX2xpc3QsIHNjdHBf
dGNibGlzdCkgewogCQkJCQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwpAQCAtNTM2MSw4ICs1MzczLDkg
QEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2
YWwsIHNpemVfdCBvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3Mg
JiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBT
Q1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChrZXlpZC0+c2NhY3RfYXNzb2Nf
aWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpIHx8Ci0JCQkgICAgKGtleWlkLT5zY2FjdF9hc3NvY19p
ZCA9PSBTQ1RQX0FMTF9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBf
UENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgICgoa2V5aWQtPnNjYWN0X2Fzc29jX2lkID09
IFNDVFBfRlVUVVJFX0FTU09DKSB8fAorCQkJICAgICAgKGtleWlkLT5zY2FjdF9hc3NvY19pZCA9
PSBTQ1RQX0FMTF9BU1NPQykpKSkgewogCQkJCVNDVFBfSU5QX1dMT0NLKGlucCk7CiAJCQkJaWYg
KHNjdHBfZGVhY3Rfc2hhcmVka2V5X2VwKGlucCwga2V5aWQtPnNjYWN0X2tleW51bWJlcikpIHsK
IAkJCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQ
X1VTUlJFUSwgRUlOVkFMKTsKQEAgLTUzNzAsOCArNTM4Myw5IEBAIHNjdHBfc2V0b3B0KHN0cnVj
dCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwK
IAkJCQl9CiAJCQkJU0NUUF9JTlBfV1VOTE9DSyhpbnApOwogCQkJfQotCQkJaWYgKChrZXlpZC0+
c2NhY3RfYXNzb2NfaWQgPT0gU0NUUF9DVVJSRU5UX0FTU09DKSB8fAotCQkJICAgIChrZXlpZC0+
c2NhY3RfYXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSB7CisJCQlpZiAoKGlucC0+c2N0cF9m
bGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgKChrZXlpZC0+c2NhY3Rf
YXNzb2NfaWQgPT0gU0NUUF9DVVJSRU5UX0FTU09DKSB8fAorCQkJICAgICAoa2V5aWQtPnNjYWN0
X2Fzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9STE9DSyhpbnAp
OwogCQkJCUxJU1RfRk9SRUFDSChzdGNiLCAmaW5wLT5zY3RwX2Fzb2NfbGlzdCwgc2N0cF90Y2Js
aXN0KSB7CiAJCQkJCVNDVFBfVENCX0xPQ0soc3RjYik7CkBAIC01NDAwLDE0ICs1NDE0LDE2IEBA
IHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFs
LCBzaXplX3Qgb3B0c2l6ZSwKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYg
U0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NU
UF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBf
RlVUVVJFX0FTU09DKSB8fAotCQkJICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0Mp
KSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAm
JgorCQkJICAgICAoKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykgfHwKKwkJCSAg
ICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSkpIHsKIAkJCQlTQ1RQX0lOUF9X
TE9DSyhpbnApOwogCQkJCWlucC0+bG9jYWxfc3RycmVzZXRfc3VwcG9ydCA9ICh1aW50OF90KWF2
LT5hc3NvY192YWx1ZTsKIAkJCQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7CiAJCQl9Ci0JCQlpZiAo
KGF2LT5hc3NvY19pZCA9PSBTQ1RQX0NVUlJFTlRfQVNTT0MpIHx8Ci0JCQkgICAgKGF2LT5hc3Nv
Y19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpIHsKKwkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NU
UF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAoKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0NV
UlJFTlRfQVNTT0MpIHx8CisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0Mp
KSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJTElTVF9GT1JFQUNIKHN0Y2IsICZp
bnAtPnNjdHBfYXNvY19saXN0LCBzY3RwX3RjYmxpc3QpIHsKIAkJCQkJU0NUUF9UQ0JfTE9DSyhz
dGNiKTsKQEAgLTU0MjksNyArNTQ0NSw3IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNv
LCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJU0NUUF9DSEVD
S19BTkRfQ0FTVChzdHJyc3QsIG9wdHZhbCwgc3RydWN0IHNjdHBfcmVzZXRfc3RyZWFtcywgb3B0
c2l6ZSk7CiAJCVNDVFBfRklORF9TVENCKGlucCwgc3RjYiwgc3RycnN0LT5zcnNfYXNzb2NfaWQp
OwogCQlpZiAoc3RjYiA9PSBOVUxMKSB7Ci0JCSAgICAgICAgU0NUUF9MVFJBQ0VfRVJSX1JFVChp
bnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1VTUlJFUSwgRU5PRU5UKTsKKwkJCVNDVFBf
TFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIEVO
T0VOVCk7CiAJCQllcnJvciA9IEVOT0VOVDsKIAkJCWJyZWFrOwogCQl9CkBAIC01NDQyLDYgKzU0
NTgsMTIgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lk
ICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwogCQkJ
YnJlYWs7CiAJCX0KKwkJaWYgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVfT1BF
TikgeworCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9T
Q1RQX1VTUlJFUSwgRUlOVkFMKTsKKwkJCWVycm9yID0gRUlOVkFMOworCQkJU0NUUF9UQ0JfVU5M
T0NLKHN0Y2IpOworCQkJYnJlYWs7CisJCX0KIAkJaWYgKHNpemVvZihzdHJ1Y3Qgc2N0cF9yZXNl
dF9zdHJlYW1zKSArCiAJCSAgICBzdHJyc3QtPnNyc19udW1iZXJfc3RyZWFtcyAqIHNpemVvZih1
aW50MTZfdCkgPiBvcHRzaXplKSB7CiAJCQllcnJvciA9IEVJTlZBTDsKQEAgLTU0NzQsMTMgKzU0
OTYsMTMgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lk
ICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQl9CiAJCWZvciAoaSA9IDA7IGkgPCBzdHJyc3Qt
PnNyc19udW1iZXJfc3RyZWFtczsgaSsrKSB7CiAJCQlpZiAoKHNlbmRfaW4pICYmCi0JCQkgICAg
KHN0cnJzdC0+c3JzX3N0cmVhbV9saXN0W2ldID4gc3RjYi0+YXNvYy5zdHJlYW1pbmNudCkpIHsK
KwkJCSAgICAoc3RycnN0LT5zcnNfc3RyZWFtX2xpc3RbaV0gPj0gc3RjYi0+YXNvYy5zdHJlYW1p
bmNudCkpIHsKIAkJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9G
Uk9NX1NDVFBfVVNSUkVRLCBFSU5WQUwpOwogCQkJCWVycm9yID0gRUlOVkFMOwogCQkJCWJyZWFr
OwogCQkJfQogCQkJaWYgKChzZW5kX291dCkgJiYKLQkJCSAgICAoc3RycnN0LT5zcnNfc3RyZWFt
X2xpc3RbaV0gPiBzdGNiLT5hc29jLnN0cmVhbW91dGNudCkpIHsKKwkJCSAgICAoc3RycnN0LT5z
cnNfc3RyZWFtX2xpc3RbaV0gPj0gc3RjYi0+YXNvYy5zdHJlYW1vdXRjbnQpKSB7CiAJCQkJU0NU
UF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1VTUlJFUSwg
RUlOVkFMKTsKIAkJCQllcnJvciA9IEVJTlZBTDsKIAkJCQlicmVhazsKQEAgLTU1NDEsNyArNTU2
Myw3IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAq
b3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJU0NUUF9DSEVDS19BTkRfQ0FTVChzdHJhZGQsIG9w
dHZhbCwgc3RydWN0IHNjdHBfYWRkX3N0cmVhbXMsIG9wdHNpemUpOwogCQlTQ1RQX0ZJTkRfU1RD
QihpbnAsIHN0Y2IsIHN0cmFkZC0+c2FzX2Fzc29jX2lkKTsKIAkJaWYgKHN0Y2IgPT0gTlVMTCkg
ewotCQkgICAgICAgIFNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZS
T01fU0NUUF9VU1JSRVEsIEVOT0VOVCk7CisJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVM
TCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBFTk9FTlQpOwogCQkJZXJyb3IgPSBFTk9F
TlQ7CiAJCQlicmVhazsKIAkJfQpAQCAtNTU1NCw2ICs1NTc2LDEyIEBAIHNjdHBfc2V0b3B0KHN0
cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6
ZSwKIAkJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKIAkJCWJyZWFrOwogCQl9CisJCWlmIChTQ1RQ
X0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQX1NUQVRFX09QRU4pIHsKKwkJCVNDVFBfTFRSQUNFX0VS
Ul9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIEVJTlZBTCk7CisJ
CQllcnJvciA9IEVJTlZBTDsKKwkJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKKwkJCWJyZWFrOwor
CQl9CiAJCWlmIChzdGNiLT5hc29jLnN0cmVhbV9yZXNldF9vdXRzdGFuZGluZykgewogCQkJU0NU
UF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1VTUlJFUSwg
RUFMUkVBRFkpOwogCQkJZXJyb3IgPSBFQUxSRUFEWTsKQEAgLTU2MjEsNiArNTY0OSwxMiBAQCBz
Y3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwg
c2l6ZV90IG9wdHNpemUsCiAJCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CiAJCQlicmVhazsKIAkJ
fQorCQlpZiAoU0NUUF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9TVEFURV9PUEVOKSB7CisJCQlT
Q1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVR
LCBFSU5WQUwpOworCQkJZXJyb3IgPSBFSU5WQUw7CisJCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7
CisJCQlicmVhazsKKwkJfQogCQlpZiAoc3RjYi0+YXNvYy5zdHJlYW1fcmVzZXRfb3V0c3RhbmRp
bmcpIHsKIAkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01f
U0NUUF9VU1JSRVEsIEVBTFJFQURZKTsKIAkJCWVycm9yID0gRUFMUkVBRFk7CkBAIC01NzE1LDE1
ICs1NzQ5LDYgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2
b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCX0KIAljYXNlIFNDVFBfTUFYX0JVUlNUOgog
CXsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA8IDkwMDAw
MAotCQl1aW50OF90ICpidXJzdDsKLQotCQlTQ1RQX0NIRUNLX0FORF9DQVNUKGJ1cnN0LCBvcHR2
YWwsIHVpbnQ4X3QsIG9wdHNpemUpOwotCi0JCVNDVFBfSU5QX1dMT0NLKGlucCk7Ci0JCWlucC0+
c2N0cF9lcC5tYXhfYnVyc3QgPSAqYnVyc3Q7Ci0JCVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsKLSNl
bHNlCiAJCXN0cnVjdCBzY3RwX2Fzc29jX3ZhbHVlICphdjsKIAogCQlTQ1RQX0NIRUNLX0FORF9D
QVNUKGF2LCBvcHR2YWwsIHN0cnVjdCBzY3RwX2Fzc29jX3ZhbHVlLCBvcHRzaXplKTsKQEAgLTU3
MzUsMTQgKzU3NjAsMTYgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRu
YW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChp
bnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAt
PnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChhdi0+
YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpIHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9
PSBTQ1RQX0FMTF9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENC
X0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgICgoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJF
X0FTU09DKSB8fAorCQkJICAgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpKSkg
ewogCQkJCVNDVFBfSU5QX1dMT0NLKGlucCk7CiAJCQkJaW5wLT5zY3RwX2VwLm1heF9idXJzdCA9
IGF2LT5hc3NvY192YWx1ZTsKIAkJCQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7CiAJCQl9Ci0JCQlp
ZiAoKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0NVUlJFTlRfQVNTT0MpIHx8Ci0JCQkgICAgKGF2LT5h
c3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpIHsKKwkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYg
U0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAoKGF2LT5hc3NvY19pZCA9PSBTQ1RQ
X0NVUlJFTlRfQVNTT0MpIHx8CisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9BTExfQVNT
T0MpKSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJTElTVF9GT1JFQUNIKHN0Y2Is
ICZpbnAtPnNjdHBfYXNvY19saXN0LCBzY3RwX3RjYmxpc3QpIHsKIAkJCQkJU0NUUF9UQ0JfTE9D
SyhzdGNiKTsKQEAgLTU3NTIsNyArNTc3OSw2IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQg
KnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJCQlTQ1RQ
X0lOUF9SVU5MT0NLKGlucCk7CiAJCQl9CiAJCX0KLSNlbmRpZgogCQlicmVhazsKIAl9CiAJY2Fz
ZSBTQ1RQX01BWFNFRzoKQEAgLTU3NzgsNyArNTgwNCw4IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBz
b2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJ
fSBlbHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQ
RSkgfHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9P
TCkgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkgeworCQkJ
ICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAg
ICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBf
V0xPQ0soaW5wKTsKIAkJCQkvKiBGSVhNRSBNVDogSSB0aGluayB0aGlzIGlzIG5vdCBpbiB0dW5l
IHdpdGggdGhlIEFQSSBJRCAqLwogCQkJCWlmIChhdi0+YXNzb2NfdmFsdWUpIHsKQEAgLTU5ODMs
MTQgKzYwMTAsMTYgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1l
LCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAt
PnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNj
dHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChzX2luZm8t
PnNpbmZvX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSB8fAotCQkJICAgIChzX2luZm8t
PnNpbmZvX2Fzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkgeworCQkJICAgICgoaW5wLT5zY3Rw
X2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAgKChzX2luZm8tPnNp
bmZvX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSB8fAorCQkJICAgICAgKHNfaW5mby0+
c2luZm9fYXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSkpIHsKIAkJCQlTQ1RQX0lOUF9XTE9D
SyhpbnApOwogCQkJCW1lbWNweSgmaW5wLT5kZWZfc2VuZCwgc19pbmZvLCBtaW4ob3B0c2l6ZSwg
c2l6ZW9mKGlucC0+ZGVmX3NlbmQpKSk7CiAJCQkJU0NUUF9JTlBfV1VOTE9DSyhpbnApOwogCQkJ
fQotCQkJaWYgKChzX2luZm8tPnNpbmZvX2Fzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykg
fHwKLQkJCSAgICAoc19pbmZvLT5zaW5mb19hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpIHsK
KwkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJ
CSAgICAoKHNfaW5mby0+c2luZm9fYXNzb2NfaWQgPT0gU0NUUF9DVVJSRU5UX0FTU09DKSB8fAor
CQkJICAgICAoc19pbmZvLT5zaW5mb19hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpKSB7CiAJ
CQkJU0NUUF9JTlBfUkxPQ0soaW5wKTsKIAkJCQlMSVNUX0ZPUkVBQ0goc3RjYiwgJmlucC0+c2N0
cF9hc29jX2xpc3QsIHNjdHBfdGNibGlzdCkgewogCQkJCQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwpA
QCAtNjEwOSw2ICs2MTM4LDE0IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQg
b3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJCVNDVFBfTFRSQUNFX0VS
Ul9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIEVJTlZBTCk7CiAJ
CQlyZXR1cm4gKEVJTlZBTCk7CiAJCX0KKwkJaWYgKChwYWRkcnAtPnNwcF9mbGFncyAmIFNQUF9Q
TVRVRF9ESVNBQkxFKSAmJgorCQkgICAgKChwYWRkcnAtPnNwcF9wYXRobXR1IDwgU0NUUF9TTUFM
TEVTVF9QTVRVKSB8fAorCQkgICAgIChwYWRkcnAtPnNwcF9wYXRobXR1ID4gU0NUUF9MQVJHRVNU
X1BNVFUpKSkgeworCQkJaWYgKHN0Y2IpCisJCQkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOworCQkJ
U0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1VTUlJF
USwgRUlOVkFMKTsKKwkJCXJldHVybiAoRUlOVkFMKTsKKwkJfQogCiAJCWlmIChzdGNiICE9IE5V
TEwpIHsKIAkJCS8qKioqKioqKioqKioqKioqKioqKioqKipUQ0IgU1BFQ0lGSUMgU0VUICoqKioq
KioqKioqKioqKioqKi8KQEAgLTYxMzQsMTIgKzYxNzEsMTMgQEAgc2N0cF9zZXRvcHQoc3RydWN0
IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAog
CQkJCQluZXQtPmRlc3Rfc3RhdGUgJj0gflNDVFBfQUREUl9OT0hCOwogCQkJCX0KIAkJCQlpZiAo
cGFkZHJwLT5zcHBfZmxhZ3MgJiBTUFBfSEJfREVNQU5EKSB7Ci0JCQkJCS8qIG9uIGRlbWFuZCBI
QiAqLwotCQkJCQlzY3RwX3NlbmRfaGIoc3RjYiwgbmV0LCBTQ1RQX1NPX0xPQ0tFRCk7Ci0JCQkJ
CXNjdHBfY2h1bmtfb3V0cHV0KGlucCwgc3RjYiwgIFNDVFBfT1VUUFVUX0ZST01fU09DS09QVCwg
U0NUUF9TT19MT0NLRUQpOwotCQkJCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9I
RUFSVEJFQVQsIGlucCwgc3RjYiwgbmV0KTsKKwkJCQkJaWYgKFNDVFBfR0VUX1NUQVRFKHN0Y2Ip
ID09IFNDVFBfU1RBVEVfT1BFTikgeworCQkJCQkJc2N0cF9zZW5kX2hiKHN0Y2IsIG5ldCwgU0NU
UF9TT19MT0NLRUQpOworCQkJCQkJc2N0cF9jaHVua19vdXRwdXQoaW5wLCBzdGNiLCAgU0NUUF9P
VVRQVVRfRlJPTV9TT0NLT1BULCBTQ1RQX1NPX0xPQ0tFRCk7CisJCQkJCQlzY3RwX3RpbWVyX3N0
YXJ0KFNDVFBfVElNRVJfVFlQRV9IRUFSVEJFQVQsIGlucCwgc3RjYiwgbmV0KTsKKwkJCQkJfQog
CQkJCX0KLQkJCQlpZiAoKHBhZGRycC0+c3BwX2ZsYWdzICYgU1BQX1BNVFVEX0RJU0FCTEUpICYm
IChwYWRkcnAtPnNwcF9wYXRobXR1ID49IFNDVFBfU01BTExFU1RfUE1UVSkpIHsKKwkJCQlpZiAo
cGFkZHJwLT5zcHBfZmxhZ3MgJiBTUFBfUE1UVURfRElTQUJMRSkgewogCQkJCQlpZiAoU0NUUF9P
U19USU1FUl9QRU5ESU5HKCZuZXQtPnBtdHVfdGltZXIudGltZXIpKSB7CiAJCQkJCQlzY3RwX3Rp
bWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX1BBVEhNVFVSQUlTRSwgaW5wLCBzdGNiLCBuZXQsCiAJ
CQkJCQkJCVNDVFBfRlJPTV9TQ1RQX1VTUlJFUSArIFNDVFBfTE9DXzExKTsKQEAgLTYyODYsNyAr
NjMyNCw3IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9p
ZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJCQkJfQogCQkJCQlzY3RwX3N0Y2JfZmVhdHVy
ZV9vbihpbnAsIHN0Y2IsIFNDVFBfUENCX0ZMQUdTX0RPTk9UX0hFQVJUQkVBVCk7CiAJCQkJfQot
CQkJCWlmICgocGFkZHJwLT5zcHBfZmxhZ3MgJiBTUFBfUE1UVURfRElTQUJMRSkgJiYgKHBhZGRy
cC0+c3BwX3BhdGhtdHUgPj0gU0NUUF9TTUFMTEVTVF9QTVRVKSkgeworCQkJCWlmIChwYWRkcnAt
PnNwcF9mbGFncyAmIFNQUF9QTVRVRF9ESVNBQkxFKSB7CiAJCQkJCVRBSUxRX0ZPUkVBQ0gobmV0
LCAmc3RjYi0+YXNvYy5uZXRzLCBzY3RwX25leHQpIHsKIAkJCQkJCWlmIChTQ1RQX09TX1RJTUVS
X1BFTkRJTkcoJm5ldC0+cG10dV90aW1lci50aW1lcikpIHsKIAkJCQkJCQlzY3RwX3RpbWVyX3N0
b3AoU0NUUF9USU1FUl9UWVBFX1BBVEhNVFVSQUlTRSwgaW5wLCBzdGNiLCBuZXQsCkBAIC02MzU2
LDcgKzYzOTQsOCBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUs
IHZvaWQgKm9wdHZhbCwgc2l6ZV90IG9wdHNpemUsCiAJCQkvKioqKioqKioqKioqKioqKioqKioq
KioqTk8gVENCLCBTRVQgVE8gZGVmYXVsdCBzdHVmZiAqKioqKioqKioqKioqKioqKiovCiAJCQlp
ZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAg
KGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAg
KHBhZGRycC0+c3BwX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkgeworCQkJICAgICgo
aW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAgKHBh
ZGRycC0+c3BwX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lO
UF9XTE9DSyhpbnApOwogCQkJCS8qCiAJCQkJICogRm9yIHRoZSBUT1MvRkxPV0xBQkVMIHN0dWZm
IHlvdSBzZXQgaXQKQEAgLTYzNzEsMTQgKzY0MTAsMTQgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNv
Y2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQkJ
CWVsc2UgaWYgKHBhZGRycC0+c3BwX2hiaW50ZXJ2YWwgIT0gMCkgewogCQkJCQlpZiAocGFkZHJw
LT5zcHBfaGJpbnRlcnZhbCA+IFNDVFBfTUFYX0hCX0lOVEVSVkFMKQogCQkJCQkJcGFkZHJwLT5z
cHBfaGJpbnRlcnZhbD0gU0NUUF9NQVhfSEJfSU5URVJWQUw7Ci0JCQkJCWlucC0+c2N0cF9lcC5z
Y3RwX3RpbWVvdXR0aWNrc1tTQ1RQX1RJTUVSX0hFQVJUQkVBVF0gPSBNU0VDX1RPX1RJQ0tTKHBh
ZGRycC0+c3BwX2hiaW50ZXJ2YWwpOworCQkJCQlpbnAtPnNjdHBfZXAuc2N0cF90aW1lb3V0dGlj
a3NbU0NUUF9USU1FUl9IRUFSVEJFQVRdID0gc2N0cF9tc2Vjc190b190aWNrcyhwYWRkcnAtPnNw
cF9oYmludGVydmFsKTsKIAkJCQl9CiAKIAkJCQlpZiAocGFkZHJwLT5zcHBfZmxhZ3MgJiBTUFBf
SEJfRU5BQkxFKSB7CiAJCQkJCWlmIChwYWRkcnAtPnNwcF9mbGFncyAmIFNQUF9IQl9USU1FX0lT
X1pFUk8pIHsKIAkJCQkJCWlucC0+c2N0cF9lcC5zY3RwX3RpbWVvdXR0aWNrc1tTQ1RQX1RJTUVS
X0hFQVJUQkVBVF0gPSAwOwogCQkJCQl9IGVsc2UgaWYgKHBhZGRycC0+c3BwX2hiaW50ZXJ2YWwp
IHsKLQkJCQkJCWlucC0+c2N0cF9lcC5zY3RwX3RpbWVvdXR0aWNrc1tTQ1RQX1RJTUVSX0hFQVJU
QkVBVF0gPSBNU0VDX1RPX1RJQ0tTKHBhZGRycC0+c3BwX2hiaW50ZXJ2YWwpOworCQkJCQkJaW5w
LT5zY3RwX2VwLnNjdHBfdGltZW91dHRpY2tzW1NDVFBfVElNRVJfSEVBUlRCRUFUXSA9IHNjdHBf
bXNlY3NfdG9fdGlja3MocGFkZHJwLT5zcHBfaGJpbnRlcnZhbCk7CiAJCQkJCX0KIAkJCQkJc2N0
cF9mZWF0dXJlX29mZihpbnAsIFNDVFBfUENCX0ZMQUdTX0RPTk9UX0hFQVJUQkVBVCk7CiAJCQkJ
fSBlbHNlIGlmIChwYWRkcnAtPnNwcF9mbGFncyAmIFNQUF9IQl9ESVNBQkxFKSB7CkBAIC02Mzg4
LDkgKzY0MjcsNyBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUs
IHZvaWQgKm9wdHZhbCwgc2l6ZV90IG9wdHNpemUsCiAJCQkJCWlucC0+c2N0cF9lcC5kZWZhdWx0
X210dSA9IDA7CiAJCQkJCXNjdHBfZmVhdHVyZV9vZmYoaW5wLCBTQ1RQX1BDQl9GTEFHU19ET19O
T1RfUE1UVUQpOwogCQkJCX0gZWxzZSBpZiAocGFkZHJwLT5zcHBfZmxhZ3MgJiBTUFBfUE1UVURf
RElTQUJMRSkgewotCQkJCQlpZiAocGFkZHJwLT5zcHBfcGF0aG10dSA+PSBTQ1RQX1NNQUxMRVNU
X1BNVFUpIHsKLQkJCQkJCWlucC0+c2N0cF9lcC5kZWZhdWx0X210dSA9IHBhZGRycC0+c3BwX3Bh
dGhtdHU7Ci0JCQkJCX0KKwkJCQkJaW5wLT5zY3RwX2VwLmRlZmF1bHRfbXR1ID0gcGFkZHJwLT5z
cHBfcGF0aG10dTsKIAkJCQkJc2N0cF9mZWF0dXJlX29uKGlucCwgU0NUUF9QQ0JfRkxBR1NfRE9f
Tk9UX1BNVFVEKTsKIAkJCQl9CiAJCQkJaWYgKHBhZGRycC0+c3BwX2ZsYWdzICYgU1BQX0RTQ1Ap
IHsKQEAgLTY0NDYsNyArNjQ4Myw4IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBp
bnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJfSBlbHNlIHsKIAkJ
CWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAg
ICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAg
ICAoc3J0by0+c3J0b19hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAo
KGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgIChz
cnRvLT5zcnRvX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lO
UF9XTE9DSyhpbnApOwogCQkJCWlmIChzcnRvLT5zcnRvX2luaXRpYWwpCiAJCQkJCW5ld19pbml0
ID0gc3J0by0+c3J0b19pbml0aWFsOwpAQCAtNjQ5NCwxOCArNjUzMiwxOSBAQCBzY3RwX3NldG9w
dChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90IG9w
dHNpemUsCiAJCQlpZiAoc2Fzb2MtPnNhc29jX2Fzb2NtYXhyeHQpCiAJCQkJc3RjYi0+YXNvYy5t
YXhfc2VuZF90aW1lcyA9IHNhc29jLT5zYXNvY19hc29jbWF4cnh0OwogCQkJaWYgKHNhc29jLT5z
YXNvY19jb29raWVfbGlmZSkgewotCQkJCXN0Y2ItPmFzb2MuY29va2llX2xpZmUgPSBNU0VDX1RP
X1RJQ0tTKHNhc29jLT5zYXNvY19jb29raWVfbGlmZSk7CisJCQkJc3RjYi0+YXNvYy5jb29raWVf
bGlmZSA9IHNjdHBfbXNlY3NfdG9fdGlja3Moc2Fzb2MtPnNhc29jX2Nvb2tpZV9saWZlKTsKIAkJ
CX0KIAkJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5z
Y3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3Rw
X2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAgICAoc2Fzb2MtPnNh
c29jX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkgeworCQkJICAgICgoaW5wLT5zY3Rw
X2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAgKHNhc29jLT5zYXNv
Y19hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfV0xPQ0so
aW5wKTsKIAkJCQlpZiAoc2Fzb2MtPnNhc29jX2Fzb2NtYXhyeHQpCiAJCQkJCWlucC0+c2N0cF9l
cC5tYXhfc2VuZF90aW1lcyA9IHNhc29jLT5zYXNvY19hc29jbWF4cnh0OwogCQkJCWlmIChzYXNv
Yy0+c2Fzb2NfY29va2llX2xpZmUpIHsKLQkJCQkJaW5wLT5zY3RwX2VwLmRlZl9jb29raWVfbGlm
ZSA9IE1TRUNfVE9fVElDS1Moc2Fzb2MtPnNhc29jX2Nvb2tpZV9saWZlKTsKKwkJCQkJaW5wLT5z
Y3RwX2VwLmRlZl9jb29raWVfbGlmZSA9IHNjdHBfbXNlY3NfdG9fdGlja3Moc2Fzb2MtPnNhc29j
X2Nvb2tpZV9saWZlKTsKIAkJCQl9CiAJCQkJU0NUUF9JTlBfV1VOTE9DSyhpbnApOwogCQkJfSBl
bHNlIHsKQEAgLTY2MTUsMTkgKzY2NTQsMTMgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAq
c28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogI2lmZGVmIFND
VFBfTVZSRgogCQlpbnQgaSwgZm5kID0gMDsKICNlbmRpZgotI2lmICFkZWZpbmVkKF9fV2luZG93
c19fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmICFkZWZpbmVkKF9XSU4zMikgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZiBkZWZpbmVkKF9fQVBQTEVfXykKIAkJc3RydWN0
IHByb2MgKnByb2M7CiAjZW5kaWYKLSNpZmRlZiBfX0ZyZWVCU0RfXwotI2lmIF9fRnJlZUJTRF92
ZXJzaW9uID4gNjAyMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKIAkJZXJyb3IgPSBwcml2
X2NoZWNrKGN1cnRocmVhZCwKIAkJCQkgICBQUklWX05FVElORVRfUkVTRVJWRURQT1JUKTsKLSNl
bGlmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAwMAotCQllcnJvciA9IHN1c2VyKChzdHJ1Y3Qg
dGhyZWFkICopcCk7Ci0jZWxzZQotCQllcnJvciA9IHN1c2VyKHApOwotI2VuZGlmCiAjZWxpZiBk
ZWZpbmVkKF9fQVBQTEVfXykKIAkJcHJvYyA9IChzdHJ1Y3QgcHJvYyAqKXA7CiAJCWlmIChwKSB7
CkBAIC02NzIxLDcgKzY3NTQsNyBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50
IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90IG9wdHNpemUsCiAJCQkJCWVycm9yID0gRUlO
VkFMOwogCQkJCQlnb3RvIG91dF9vZl9pdDsKIAkJCQl9Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
CQkJfSBlbHNlIHsKIAkJCQlzd2l0Y2ggKGFkZHItPnNhX2ZhbWlseSkgewogI2lmZGVmIElORVQK
QEAgLTY3NzYsMjMgKzY4MDksMjMgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGlu
dCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCX0KIAljYXNlIFNDVFBf
QklORFhfQUREX0FERFI6CiAJewotCQlzdHJ1Y3Qgc2N0cF9nZXRhZGRyZXNzZXMgKmFkZHJzOwot
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAwMAor
CQlzdHJ1Y3Qgc29ja2FkZHIgKnNhOworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAJCXN0cnVjdCB0aHJlYWQgKnRkOwogCiAJCXRkID0gKHN0cnVj
dCB0aHJlYWQgKilwOwogI2VuZGlmCi0JCVNDVFBfQ0hFQ0tfQU5EX0NBU1QoYWRkcnMsIG9wdHZh
bCwgc3RydWN0IHNjdHBfZ2V0YWRkcmVzc2VzLAotCQkJCSAgICBvcHRzaXplKTsKKwkJU0NUUF9D
SEVDS19BTkRfQ0FTVChzYSwgb3B0dmFsLCBzdHJ1Y3Qgc29ja2FkZHIsIG9wdHNpemUpOwogI2lm
ZGVmIElORVQKLQkJaWYgKGFkZHJzLT5hZGRyLT5zYV9mYW1pbHkgPT0gQUZfSU5FVCkgewotCQkJ
aWYgKG9wdHNpemUgPCBzaXplb2Yoc3RydWN0IHNjdHBfZ2V0YWRkcmVzc2VzKSAtIHNpemVvZihz
dHJ1Y3Qgc29ja2FkZHIpICsgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpIHsKKwkJaWYgKHNh
LT5zYV9mYW1pbHkgPT0gQUZfSU5FVCkgeworCQkJaWYgKG9wdHNpemUgPCBzaXplb2Yoc3RydWN0
IHNvY2thZGRyX2luKSkgewogCQkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxM
LCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIEVJTlZBTCk7CiAJCQkJZXJyb3IgPSBFSU5WQUw7CiAJ
CQkJYnJlYWs7CiAJCQl9Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3Zl
cnNpb24gPj0gODAwMDAwCi0JCQlpZiAodGQgIT0gTlVMTCAmJiAoZXJyb3IgPSBwcmlzb25fbG9j
YWxfaXA0KHRkLT50ZF91Y3JlZCwgJigoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKShhZGRycy0+YWRk
cikpLT5zaW5fYWRkcikpKSkgeworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCisJCQlpZiAodGQgIT0gTlVMTCAmJgorCQkJICAgIChlcnJvciA9IHBy
aXNvbl9sb2NhbF9pcDQodGQtPnRkX3VjcmVkLCAmKCgoc3RydWN0IHNvY2thZGRyX2luICopc2Ep
LT5zaW5fYWRkcikpKSkgewogCQkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBzdGNiLCBOVUxM
LCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIGVycm9yKTsKIAkJCQlicmVhazsKIAkJCX0KQEAgLTY4
MDAsNDggKzY4MzMsNDkgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRu
YW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQl9IGVsc2UKICNlbmRpZgogI2lm
ZGVmIElORVQ2Ci0JCWlmIChhZGRycy0+YWRkci0+c2FfZmFtaWx5ID09IEFGX0lORVQ2KSB7Ci0J
CQlpZiAob3B0c2l6ZSA8IHNpemVvZihzdHJ1Y3Qgc2N0cF9nZXRhZGRyZXNzZXMpIC0gc2l6ZW9m
KHN0cnVjdCBzb2NrYWRkcikgKyBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNikpIHsKKwkJaWYg
KHNhLT5zYV9mYW1pbHkgPT0gQUZfSU5FVDYpIHsKKwkJCWlmIChvcHRzaXplIDwgc2l6ZW9mKHN0
cnVjdCBzb2NrYWRkcl9pbjYpKSB7CiAJCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEws
IE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1VTUlJFUSwgRUlOVkFMKTsKIAkJCQllcnJvciA9IEVJTlZB
TDsKIAkJCQlicmVhazsKIAkJCX0KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVC
U0RfdmVyc2lvbiA+PSA4MDAwMDAKLQkJCWlmICh0ZCAhPSBOVUxMICYmIChlcnJvciA9IHByaXNv
bl9sb2NhbF9pcDYodGQtPnRkX3VjcmVkLCAmKCgoc3RydWN0IHNvY2thZGRyX2luNiAqKShhZGRy
cy0+YWRkcikpLT5zaW42X2FkZHIpLAotCQkJCQkJCQkJCQkgICAoU0NUUF9JUFY2X1Y2T05MWShp
bnApICE9IDApKSkgIT0gMCkgewotCQkJICBTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgc3RjYiwg
TlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBlcnJvcik7Ci0JCQkgIGJyZWFrOworI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQlpZiAodGQg
IT0gTlVMTCAmJgorCQkJICAgIChlcnJvciA9IHByaXNvbl9sb2NhbF9pcDYodGQtPnRkX3VjcmVk
LAorCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJigoKHN0cnVjdCBzb2NrYWRkcl9p
bjYgKilzYSktPnNpbjZfYWRkciksCisJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
U0NUUF9JUFY2X1Y2T05MWShpbnApICE9IDApKSkgIT0gMCkgeworCQkJCVNDVFBfTFRSQUNFX0VS
Ul9SRVQoaW5wLCBzdGNiLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIGVycm9yKTsKKwkJ
CQlicmVhazsKIAkJCX0KICNlbmRpZgogCQl9IGVsc2UKICNlbmRpZgogCQl7Ci0JCSAgICAgICBl
cnJvciA9IEVBRk5PU1VQUE9SVDsKLQkJICAgICAgIGJyZWFrOworCQkJZXJyb3IgPSBFQUZOT1NV
UFBPUlQ7CisJCQlicmVhazsKIAkJfQotCQlzY3RwX2JpbmR4X2FkZF9hZGRyZXNzKHNvLCBpbnAs
IGFkZHJzLT5hZGRyLAotCQkJCSAgICAgICBhZGRycy0+c2dldF9hc3NvY19pZCwgdnJmX2lkLAot
CQkJCSAgICAgICAmZXJyb3IsIHApOworCQlzY3RwX2JpbmR4X2FkZF9hZGRyZXNzKHNvLCBpbnAs
IHNhLCB2cmZfaWQsICZlcnJvciwgcCk7CiAJCWJyZWFrOwogCX0KIAljYXNlIFNDVFBfQklORFhf
UkVNX0FERFI6CiAJewotCQlzdHJ1Y3Qgc2N0cF9nZXRhZGRyZXNzZXMgKmFkZHJzOwotI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAwMAorCQlzdHJ1
Y3Qgc29ja2FkZHIgKnNhOworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAJCXN0cnVjdCB0aHJlYWQgKnRkOwogCQl0ZCA9IChzdHJ1Y3QgdGhyZWFk
ICopcDsKIAogI2VuZGlmCi0JCVNDVFBfQ0hFQ0tfQU5EX0NBU1QoYWRkcnMsIG9wdHZhbCwgc3Ry
dWN0IHNjdHBfZ2V0YWRkcmVzc2VzLCBvcHRzaXplKTsKKwkJU0NUUF9DSEVDS19BTkRfQ0FTVChz
YSwgb3B0dmFsLCBzdHJ1Y3Qgc29ja2FkZHIsIG9wdHNpemUpOwogI2lmZGVmIElORVQKLQkJaWYg
KGFkZHJzLT5hZGRyLT5zYV9mYW1pbHkgPT0gQUZfSU5FVCkgewotCQkJaWYgKG9wdHNpemUgPCBz
aXplb2Yoc3RydWN0IHNjdHBfZ2V0YWRkcmVzc2VzKSAtIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHIp
ICsgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpIHsKKwkJaWYgKHNhLT5zYV9mYW1pbHkgPT0g
QUZfSU5FVCkgeworCQkJaWYgKG9wdHNpemUgPCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSkg
ewogCQkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NU
UF9VU1JSRVEsIEVJTlZBTCk7CiAJCQkJZXJyb3IgPSBFSU5WQUw7CiAJCQkJYnJlYWs7CiAJCQl9
Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAwMDAw
Ci0JCWlmICh0ZCAhPSBOVUxMICYmIChlcnJvciA9IHByaXNvbl9sb2NhbF9pcDQodGQtPnRkX3Vj
cmVkLCAmKCgoc3RydWN0IHNvY2thZGRyX2luICopKGFkZHJzLT5hZGRyKSktPnNpbl9hZGRyKSkp
KSB7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
KwkJCWlmICh0ZCAhPSBOVUxMICYmCisJCQkgICAgKGVycm9yID0gcHJpc29uX2xvY2FsX2lwNCh0
ZC0+dGRfdWNyZWQsICYoKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilzYSktPnNpbl9hZGRyKSkpKSB7
CiAJCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIHN0Y2IsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQ
X1VTUlJFUSwgZXJyb3IpOwogCQkJCWJyZWFrOwogCQkJfQpAQCAtNjg0OSwxNiArNjg4MywxNiBA
QCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZh
bCwgc2l6ZV90IG9wdHNpemUsCiAJCX0gZWxzZQogI2VuZGlmCiAjaWZkZWYgSU5FVDYKLQkJaWYg
KGFkZHJzLT5hZGRyLT5zYV9mYW1pbHkgPT0gQUZfSU5FVDYpIHsKLQkJCWlmIChvcHRzaXplIDwg
c2l6ZW9mKHN0cnVjdCBzY3RwX2dldGFkZHJlc3NlcykgLSBzaXplb2Yoc3RydWN0IHNvY2thZGRy
KSArIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSkgeworCQlpZiAoc2EtPnNhX2ZhbWlseSA9
PSBBRl9JTkVUNikgeworCQkJaWYgKG9wdHNpemUgPCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2lu
NikpIHsKIAkJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9N
X1NDVFBfVVNSUkVRLCBFSU5WQUwpOwogCQkJCWVycm9yID0gRUlOVkFMOwogCQkJCWJyZWFrOwog
CQkJfQotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgw
MDAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAJCQlpZiAodGQgIT0gTlVMTCAmJgogCQkJICAgIChlcnJvciA9IHByaXNvbl9sb2NhbF9pcDYo
dGQtPnRkX3VjcmVkLAotCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJigoKHN0cnVj
dCBzb2NrYWRkcl9pbjYgKikoYWRkcnMtPmFkZHIpKS0+c2luNl9hZGRyKSwKKwkJCSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICYoKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopc2EpLT5zaW42
X2FkZHIpLAogCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNDVFBfSVBWNl9WNk9O
TFkoaW5wKSAhPSAwKSkpICE9IDApIHsKIAkJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgc3Rj
YiwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBlcnJvcik7CiAJCQkJYnJlYWs7CkBAIC02
ODcwLDEyICs2OTA0LDEwIEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0
bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJCWVycm9yID0gRUFGTk9TVVBQ
T1JUOwogCQkJYnJlYWs7CiAJCX0KLQkJc2N0cF9iaW5keF9kZWxldGVfYWRkcmVzcyhpbnAsIGFk
ZHJzLT5hZGRyLAotCQkJCQkgIGFkZHJzLT5zZ2V0X2Fzc29jX2lkLCB2cmZfaWQsCi0JCQkJCSAg
JmVycm9yKTsKKwkJc2N0cF9iaW5keF9kZWxldGVfYWRkcmVzcyhpbnAsIHNhLCB2cmZfaWQsICZl
cnJvcik7CiAJCWJyZWFrOwogCX0KLSNpZmRlZiBfX0FQUExFX18KKyNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAljYXNlIFNDVFBfTElTVEVOX0ZJWDoK
IAkJLyogb25seSBhcHBsaWVzIHRvIG9uZS10by1tYW55IHNvY2tldHMgKi8KIAkJaWYgKGlucC0+
c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpIHsKQEAgLTY4ODcsNyArNjkxOSw3
IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0
dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJCWVycm9yID0gRUlOVkFMOwogCQl9CiAJCWJyZWFrOwot
I2VuZGlmCQkJCS8qIF9fQVBQTEVfXyAqLworI2VuZGlmCiAJY2FzZSBTQ1RQX0VWRU5UOgogCXsK
IAkJc3RydWN0IHNjdHBfZXZlbnQgKmV2ZW50OwpAQCAtNjk2Nyw4ICs2OTk5LDcgQEAgc2N0cF9z
ZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVf
dCBvcHRzaXplLAogCQkJCSAqIHNvIHJldHVybiBhbiBlcnJvciBmb3Igc2VuZGVyIGRyeSBldmVu
dHMKIAkJCQkgKi8KIAkJCQlpZiAoKGV2ZW50X3R5cGUgPT0gU0NUUF9QQ0JfRkxBR1NfRFJZRVZO
VCkgJiYKLQkJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBF
KSA9PSAwKSAmJgotCQkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lO
X1RDUFBPT0wpID09IDApICYmCisJCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9G
TEFHU19VRFBUWVBFKSAmJgogCQkJCSAgICAoKGV2ZW50LT5zZV9hc3NvY19pZCA9PSBTQ1RQX0FM
TF9BU1NPQykgfHwKIAkJCQkgICAgIChldmVudC0+c2VfYXNzb2NfaWQgPT0gU0NUUF9DVVJSRU5U
X0FTU09DKSkpIHsKIAkJCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFND
VFBfRlJPTV9TQ1RQX1VTUlJFUSwgRU5PVFNVUCk7CkBAIC02OTc3LDggKzcwMDgsOSBAQCBzY3Rw
X3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6
ZV90IG9wdHNpemUsCiAJCQkJfQogCQkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0Jf
RkxBR1NfVENQVFlQRSkgfHwKIAkJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZM
QUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkJICAgIChldmVudC0+c2VfYXNzb2NfaWQgPT0gU0NUUF9G
VVRVUkVfQVNTT0MpIHx8Ci0JCQkJICAgIChldmVudC0+c2VfYXNzb2NfaWQgPT0gU0NUUF9BTExf
QVNTT0MpKSB7CisJCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQ
VFlQRSkgJiYKKwkJCQkgICAgICgoZXZlbnQtPnNlX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FT
U09DKSB8fAorCQkJCSAgICAgIChldmVudC0+c2VfYXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0Mp
KSkpIHsKIAkJCQkJU0NUUF9JTlBfV0xPQ0soaW5wKTsKIAkJCQkJaWYgKGV2ZW50LT5zZV9vbikg
ewogCQkJCQkJc2N0cF9mZWF0dXJlX29uKGlucCwgZXZlbnRfdHlwZSk7CkBAIC02OTg3LDggKzcw
MTksOSBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQg
Km9wdHZhbCwgc2l6ZV90IG9wdHNpemUsCiAJCQkJCX0KIAkJCQkJU0NUUF9JTlBfV1VOTE9DSyhp
bnApOwogCQkJCX0KLQkJCQlpZiAoKGV2ZW50LT5zZV9hc3NvY19pZCA9PSBTQ1RQX0NVUlJFTlRf
QVNTT0MpIHx8Ci0JCQkJICAgIChldmVudC0+c2VfYXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0Mp
KSB7CisJCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAm
JgorCQkJCSAgICAoKGV2ZW50LT5zZV9hc3NvY19pZCA9PSBTQ1RQX0NVUlJFTlRfQVNTT0MpIHx8
CisJCQkJICAgICAoZXZlbnQtPnNlX2Fzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkpIHsKIAkJ
CQkJU0NUUF9JTlBfUkxPQ0soaW5wKTsKIAkJCQkJTElTVF9GT1JFQUNIKHN0Y2IsICZpbnAtPnNj
dHBfYXNvY19saXN0LCBzY3RwX3RjYmxpc3QpIHsKIAkJCQkJCVNDVFBfVENCX0xPQ0soc3RjYik7
CkBAIC03MDAyLDYgKzcwMzUsMTAgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGlu
dCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQkJCQlTQ1RQX0lOUF9S
VU5MT0NLKGlucCk7CiAJCQkJfQogCQkJfQorCQl9IGVsc2UgeworCQkJaWYgKHN0Y2IpIHsKKwkJ
CQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CisJCQl9CiAJCX0KIAkJYnJlYWs7CiAJfQpAQCAtNzA1
Nyw4ICs3MDk0LDkgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1l
LCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAt
PnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNj
dHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChpbmZvLT5z
bmRfYXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpIHx8Ci0JCQkgICAgKGluZm8tPnNuZF9h
c3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAm
IFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgICgoaW5mby0+c25kX2Fzc29jX2lk
ID09IFNDVFBfRlVUVVJFX0FTU09DKSB8fAorCQkJICAgICAgKGluZm8tPnNuZF9hc3NvY19pZCA9
PSBTQ1RQX0FMTF9BU1NPQykpKSkgewogCQkJCVNDVFBfSU5QX1dMT0NLKGlucCk7CiAJCQkJaW5w
LT5kZWZfc2VuZC5zaW5mb19zdHJlYW0gPSBpbmZvLT5zbmRfc2lkOwogCQkJCXBvbGljeSA9IFBS
X1NDVFBfUE9MSUNZKGlucC0+ZGVmX3NlbmQuc2luZm9fZmxhZ3MpOwpAQCAtNzA2OCw4ICs3MTA2
LDkgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpv
cHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQkJCWlucC0+ZGVmX3NlbmQuc2luZm9fY29udGV4dCA9
IGluZm8tPnNuZF9jb250ZXh0OwogCQkJCVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsKIAkJCX0KLQkJ
CWlmICgoaW5mby0+c25kX2Fzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKLQkJCSAg
ICAoaW5mby0+c25kX2Fzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkgeworCQkJaWYgKChpbnAt
PnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICgoaW5mby0+
c25kX2Fzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKKwkJCSAgICAgKGluZm8tPnNu
ZF9hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfUkxPQ0soaW5w
KTsKIAkJCQlMSVNUX0ZPUkVBQ0goc3RjYiwgJmlucC0+c2N0cF9hc29jX2xpc3QsIHNjdHBfdGNi
bGlzdCkgewogCQkJCQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwpAQCAtNzA5Niw2ICs3MTM1LDkgQEAg
c2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWws
IHNpemVfdCBvcHRzaXplLAogCQlTQ1RQX0ZJTkRfU1RDQihpbnAsIHN0Y2IsIGluZm8tPnByX2Fz
c29jX2lkKTsKIAogCQlpZiAoaW5mby0+cHJfcG9saWN5ID4gU0NUUF9QUl9TQ1RQX01BWCkgewor
CQkJaWYgKHN0Y2IpIHsKKwkJCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CisJCQl9CiAJCQlTQ1RQ
X0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBF
SU5WQUwpOwogCQkJZXJyb3IgPSBFSU5WQUw7CiAJCQlicmVhazsKQEAgLTcxMDgsMTYgKzcxNTAs
MTggQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpv
cHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxh
Z3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3Mg
JiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChpbmZvLT5wcl9hc3NvY19p
ZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykgfHwKLQkJCSAgICAoaW5mby0+cHJfYXNzb2NfaWQgPT0g
U0NUUF9BTExfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9G
TEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoKGluZm8tPnByX2Fzc29jX2lkID09IFNDVFBfRlVU
VVJFX0FTU09DKSB8fAorCQkJICAgICAgKGluZm8tPnByX2Fzc29jX2lkID09IFNDVFBfQUxMX0FT
U09DKSkpKSB7CiAJCQkJU0NUUF9JTlBfV0xPQ0soaW5wKTsKIAkJCQlpbnAtPmRlZl9zZW5kLnNp
bmZvX2ZsYWdzICY9IDB4ZmZmMDsKIAkJCQlpbnAtPmRlZl9zZW5kLnNpbmZvX2ZsYWdzIHw9IGlu
Zm8tPnByX3BvbGljeTsKIAkJCQlpbnAtPmRlZl9zZW5kLnNpbmZvX3RpbWV0b2xpdmUgPSBpbmZv
LT5wcl92YWx1ZTsKIAkJCQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7CiAJCQl9Ci0JCQlpZiAoKGlu
Zm8tPnByX2Fzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKLQkJCSAgICAoaW5mby0+
cHJfYXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSB7CisJCQlpZiAoKGlucC0+c2N0cF9mbGFn
cyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgKChpbmZvLT5wcl9hc3NvY19p
ZCA9PSBTQ1RQX0NVUlJFTlRfQVNTT0MpIHx8CisJCQkgICAgIChpbmZvLT5wcl9hc3NvY19pZCA9
PSBTQ1RQX0FMTF9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfUkxPQ0soaW5wKTsKIAkJCQlMSVNU
X0ZPUkVBQ0goc3RjYiwgJmlucC0+c2N0cF9hc29jX2xpc3QsIHNjdHBfdGNibGlzdCkgewogCQkJ
CQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwpAQCAtNzIyNCw2ICs3MjY4LDkgQEAgc2N0cF9zZXRvcHQo
c3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRz
aXplLAogCQkJfQogCQl9CiAJCWlmICh0aGxkcy0+c3B0X3BhdGhjcHRobGQgIT0gMHhmZmZmKSB7
CisJCQlpZiAoc3RjYiAhPSBOVUxMKSB7CisJCQkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOworCQkJ
fQogCQkJZXJyb3IgPSBFSU5WQUw7CiAJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwg
TlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBlcnJvcik7CiAJCQlicmVhazsKQEAgLTcyOTgs
NyArNzM0NSw4IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwg
dm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5z
Y3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3Rw
X2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAgICAodGhsZHMtPnNw
dF9hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9m
bGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgICh0aGxkcy0+c3B0X2Fz
c29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9XTE9DSyhpbnAp
OwogCQkJCWlucC0+c2N0cF9lcC5kZWZfbmV0X2ZhaWx1cmUgPSB0aGxkcy0+c3B0X3BhdGhtYXhy
eHQ7CiAJCQkJaW5wLT5zY3RwX2VwLmRlZl9uZXRfcGZfdGhyZXNob2xkID0gdGhsZHMtPnNwdF9w
YXRocGZ0aGxkOwpAQCAtNzQxMSw3ICs3NDU5LDggQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tl
dCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQl9IGVs
c2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8
fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8
fAotCQkJICAgIChlbmNhcHMtPnN1ZV9hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsK
KwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJ
CQkgICAgIChlbmNhcHMtPnN1ZV9hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpKSB7CiAJ
CQkJU0NUUF9JTlBfV0xPQ0soaW5wKTsKIAkJCQlpbnAtPnNjdHBfZXAucG9ydCA9IGVuY2Fwcy0+
c3VlX3BvcnQ7CiAJCQkJU0NUUF9JTlBfV1VOTE9DSyhpbnApOwpAQCAtNzQzNiw3ICs3NDg1LDgg
QEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2
YWwsIHNpemVfdCBvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3Mg
JiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBT
Q1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChhdi0+YXNzb2NfaWQgPT0gU0NU
UF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9G
TEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FT
U09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9XTE9DSyhpbnApOwogCQkJCWlmIChhdi0+YXNzb2NfdmFs
dWUgPT0gMCkgewogCQkJCQlpbnAtPmVjbl9zdXBwb3J0ZWQgPSAwOwpAQCAtNzQ2NSw3ICs3NTE1
LDggQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpv
cHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxh
Z3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3Mg
JiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChhdi0+YXNzb2NfaWQgPT0g
U0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BD
Ql9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJF
X0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9XTE9DSyhpbnApOwogCQkJCWlmIChhdi0+YXNzb2Nf
dmFsdWUgPT0gMCkgewogCQkJCQlpbnAtPnByc2N0cF9zdXBwb3J0ZWQgPSAwOwpAQCAtNzQ5NCw3
ICs3NTQ1LDggQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2
b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNj
dHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBf
ZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChhdi0+YXNzb2Nf
aWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBT
Q1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoYXYtPmFzc29jX2lkID09IFNDVFBf
RlVUVVJFX0FTU09DKSkpIHsKIAkJCQlpZiAoKGF2LT5hc3NvY192YWx1ZSA9PSAwKSAmJgogCQkJ
CSAgICAoaW5wLT5hc2NvbmZfc3VwcG9ydGVkID09IDEpKSB7CiAJCQkJICAgIAkvKiBBVVRIIGlz
IHJlcXVpcmVkIGZvciBBU0NPTkYgKi8KQEAgLTc1MzAsNyArNzU4Miw4IEBAIHNjdHBfc2V0b3B0
KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0
c2l6ZSwKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxB
R1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1Nf
SU5fVENQUE9PTCkgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09D
KSkgeworCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkg
JiYKKwkJCSAgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpKSB7CiAJCQkJ
aWYgKChhdi0+YXNzb2NfdmFsdWUgIT0gMCkgJiYKIAkJCQkgICAgKGlucC0+YXV0aF9zdXBwb3J0
ZWQgPT0gMCkpIHsKIAkJCQkgICAgCS8qIEFVVEggaXMgcmVxdWlyZWQgZm9yIEFTQ09ORiAqLwpA
QCAtNzU3NCw3ICs3NjI3LDggQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBv
cHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYg
KChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChp
bnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChh
di0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBf
ZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoYXYtPmFzc29jX2lk
ID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9XTE9DSyhpbnApOwogCQkJ
CWlmIChhdi0+YXNzb2NfdmFsdWUgPT0gMCkgewogCQkJCQlpbnAtPnJlY29uZmlnX3N1cHBvcnRl
ZCA9IDA7CkBAIC03NjAzLDcgKzc2NTcsOCBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpz
bywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90IG9wdHNpemUsCiAJCX0gZWxzZSB7
CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJ
CQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0J
CQkgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAoKGlu
cC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgIChhdi0+
YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1dMT0NLKGlu
cCk7CiAJCQkJaWYgKGF2LT5hc3NvY192YWx1ZSA9PSAwKSB7CiAJCQkJCWlucC0+bnJzYWNrX3N1
cHBvcnRlZCA9IDA7CkBAIC03NjMyLDcgKzc2ODcsOCBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29j
a2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90IG9wdHNpemUsCiAJCX0g
ZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUp
IHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wp
IHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAg
ICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAg
IChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1dM
T0NLKGlucCk7CiAJCQkJaWYgKGF2LT5hc3NvY192YWx1ZSA9PSAwKSB7CiAJCQkJCWlucC0+cGt0
ZHJvcF9zdXBwb3J0ZWQgPSAwOwpAQCAtNzY3Miw3ICs3NzI4LDggQEAgc2N0cF9zZXRvcHQoc3Ry
dWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXpl
LAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19U
Q1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9U
Q1BQT09MKSB8fAotCQkJICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7
CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgor
CQkJICAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQ
X0lOUF9XTE9DSyhpbnApOwogCQkJCWlucC0+bWF4X2N3bmQgPSBhdi0+YXNzb2NfdmFsdWU7CiAJ
CQkJU0NUUF9JTlBfV1VOTE9DSyhpbnApOwpAQCAtNzY5MSwxNyArNzc0OCwxOCBAQCBzY3RwX3Nl
dG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90
IG9wdHNpemUsCiAJcmV0dXJuIChlcnJvcik7CiB9CiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogaW50CiBzY3RwX2N0bG91dHB1dChzdHJ1Y3Qgc29ja2V0ICpz
bywgc3RydWN0IHNvY2tvcHQgKnNvcHQpCiB7Ci0Jdm9pZCAqb3B0dmFsID0gTlVMTDsKLQlzaXpl
X3Qgb3B0c2l6ZSA9IDA7Ci0Jdm9pZCAqcDsKLQlpbnQgZXJyb3IgPSAwOwogI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pCisJc3RydWN0IGVwb2NoX3RyYWNrZXIgZXQ7CiAJc3RydWN0IHNjdHBfaW5w
Y2IgKmlucDsKICNlbmRpZgorCXZvaWQgKm9wdHZhbCA9IE5VTEw7CisJdm9pZCAqcDsKKwlzaXpl
X3Qgb3B0c2l6ZSA9IDA7CisJaW50IGVycm9yID0gMDsKIAogI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pCiAJaWYgKChzb3B0LT5zb3B0X2xldmVsID09IFNPTF9TT0NLRVQpICYmCkBAIC03NzMyLDYg
Kzc3OTAsMTAgQEAgc2N0cF9jdGxvdXRwdXQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2Nr
b3B0ICpzb3B0KQogCQlyZXR1cm4gKGVycm9yKTsKIAl9CiAJb3B0c2l6ZSA9IHNvcHQtPnNvcHRf
dmFsc2l6ZTsKKwlpZiAob3B0c2l6ZSA+IFNDVFBfU09DS0VUX09QVElPTl9MSU1JVCkgeworCQlT
Q1RQX0xUUkFDRV9FUlJfUkVUKHNvLT5zb19wY2IsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQ
X1VTUlJFUSwgRU5PQlVGUyk7CisJCXJldHVybiAoRU5PQlVGUyk7CisJfQogCWlmIChvcHRzaXpl
KSB7CiAJCVNDVFBfTUFMTE9DKG9wdHZhbCwgdm9pZCAqLCBvcHRzaXplLCBTQ1RQX01fU09DS09Q
VCk7CiAJCWlmIChvcHR2YWwgPT0gTlVMTCkgewpAQCAtNzc0NCwxMyArNzgwNiwxOSBAQCBzY3Rw
X2N0bG91dHB1dChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2tvcHQgKnNvcHQpCiAJCQln
b3RvIG91dDsKIAkJfQogCX0KLSNpZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNE
X3ZlcnNpb24gPj0gNTAwMDAwKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pIHx8IGRlZmluZWQoX1dJTjMyKQogCXAgPSAodm9pZCAqKXNvcHQtPnNvcHRf
dGQ7CiAjZWxzZQogCXAgPSAodm9pZCAqKXNvcHQtPnNvcHRfcDsKICNlbmRpZgogCWlmIChzb3B0
LT5zb3B0X2RpciA9PSBTT1BUX1NFVCkgeworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisJCU5F
VF9FUE9DSF9FTlRFUihldCk7CisjZW5kaWYKIAkJZXJyb3IgPSBzY3RwX3NldG9wdChzbywgc29w
dC0+c29wdF9uYW1lLCBvcHR2YWwsIG9wdHNpemUsIHApOworI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pCisJCU5FVF9FUE9DSF9FWElUKGV0KTsKKyNlbmRpZgogCX0gZWxzZSBpZiAoc29wdC0+c29w
dF9kaXIgPT0gU09QVF9HRVQpIHsKIAkJZXJyb3IgPSBzY3RwX2dldG9wdChzbywgc29wdC0+c29w
dF9uYW1lLCBvcHR2YWwsICZvcHRzaXplLCBwKTsKIAl9IGVsc2UgewpAQCAtNzc2OSwyMSArNzgz
NywyMCBAQCBvdXQ6CiAjZW5kaWYKIAogI2lmZGVmIElORVQKLSNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMDAKKyNpZiBkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCitpbnQKK3NjdHBfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2th
ZGRyICphZGRyKQoreworCXZvaWQgKnAgPSBOVUxMOworI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykKIHN0YXRpYyBpbnQKIHNjdHBfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNv
Y2thZGRyICphZGRyLCBzdHJ1Y3QgdGhyZWFkICpwKQogewotI2Vsc2UKLSNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykKKyNlbGlmIGRlZmluZWQoX19BUFBMRV9f
KQogc3RhdGljIGludAogc2N0cF9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29j
a2FkZHIgKmFkZHIsIHN0cnVjdCBwcm9jICpwKQogewotI2VsaWYgZGVmaW5lZChfX1BhbmRhX18p
IHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKLWludAotc2N0cF9jb25uZWN0KHN0cnVjdCBzb2Nr
ZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIpCi17Ci0Jdm9pZCAqcCA9IE5VTEw7Ci0jZWxp
ZiBkZWZpbmVkKF9fV2luZG93c19fKQorI2VsaWYgZGVmaW5lZChfV0lOMzIpCiBzdGF0aWMgaW50
CiBzY3RwX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqYWRkciwg
UEtUSFJFQUQgcCkKIHsKQEAgLTc3OTQsNiArNzg2MSw4IEBAIHNjdHBfY29ubmVjdChzdHJ1Y3Qg
c29ja2V0ICpzbywgc3RydWN0IG1idWYgKm5hbSwgc3RydWN0IHByb2MgKnApCiAJc3RydWN0IHNv
Y2thZGRyICphZGRyID0gbXRvZChuYW0sIHN0cnVjdCBzb2NrYWRkciAqKTsKIAogI2VuZGlmCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwlzdHJ1
Y3QgZXBvY2hfdHJhY2tlciBldDsKICNlbmRpZgogI2lmZGVmIFNDVFBfTVZSRgogCWludCBpLCBm
bmQgPSAwOwpAQCAtNzgxNiwyNCArNzg4NSwyNCBAQCBzY3RwX2Nvbm5lY3Qoc3RydWN0IHNvY2tl
dCAqc28sIHN0cnVjdCBtYnVmICpuYW0sIHN0cnVjdCBwcm9jICpwKQogCX0KIAogI2lmIGRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKLSAgICAgICAgLyogVE9ETyBfX1VzZXJzcGFjZV9fIGZhbGxzIGlu
dG8gdGhpcyBjb2RlIGZvciBJUHY2IHN0dWZmIGF0IHRoZSBtb21lbnQuLi4gKi8KKwkvKiBUT0RP
IF9fVXNlcnNwYWNlX18gZmFsbHMgaW50byB0aGlzIGNvZGUgZm9yIElQdjYgc3R1ZmYgYXQgdGhl
IG1vbWVudC4uLiAqLwogI2VuZGlmCi0jaWYgIWRlZmluZWQoX19XaW5kb3dzX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX29zX0xpbnV4KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5k
b3dzKQorI2lmICFkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19saW51eF9fKQogCXN3aXRj
aCAoYWRkci0+c2FfZmFtaWx5KSB7CiAjaWZkZWYgSU5FVDYKIAljYXNlIEFGX0lORVQ2OgogCXsK
LSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDAwMDAK
LQkJc3RydWN0IHNvY2thZGRyX2luNiAqc2luNnA7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJc3RydWN0IHNvY2thZGRyX2luNiAqc2luNjsK
IAogI2VuZGlmCiAJCWlmIChhZGRyLT5zYV9sZW4gIT0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9p
bjYpKSB7CiAJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9N
X1NDVFBfVVNSUkVRLCBFSU5WQUwpOwogCQkJcmV0dXJuIChFSU5WQUwpOwogCQl9Ci0jaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAwMDAwCi0JCXNpbjZw
ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilhZGRyOwotCQlpZiAocCAhPSBOVUxMICYmIChlcnJv
ciA9IHByaXNvbl9yZW1vdGVfaXA2KHAtPnRkX3VjcmVkLCAmc2luNnAtPnNpbjZfYWRkcikpICE9
IDApIHsKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQorCQlzaW42ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilhZGRyOworCQlpZiAocCAhPSBOVUxM
ICYmIChlcnJvciA9IHByaXNvbl9yZW1vdGVfaXA2KHAtPnRkX3VjcmVkLCAmc2luNi0+c2luNl9h
ZGRyKSkgIT0gMCkgewogCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFND
VFBfRlJPTV9TQ1RQX1VTUlJFUSwgZXJyb3IpOwogCQkJcmV0dXJuIChlcnJvcik7CiAJCX0KQEAg
LTc4NDQsMTkgKzc5MTMsMTkgQEAgc2N0cF9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1
Y3QgbWJ1ZiAqbmFtLCBzdHJ1Y3QgcHJvYyAqcCkKICNpZmRlZiBJTkVUCiAJY2FzZSBBRl9JTkVU
OgogCXsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4
MDAwMDAKLQkJc3RydWN0IHNvY2thZGRyX2luICpzaW5wOworI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCXN0cnVjdCBzb2NrYWRkcl9pbiAqc2lu
OwogCiAjZW5kaWYKLSNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmICFk
ZWZpbmVkKF9XSU4zMikKIAkJaWYgKGFkZHItPnNhX2xlbiAhPSBzaXplb2Yoc3RydWN0IHNvY2th
ZGRyX2luKSkgewogCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBf
RlJPTV9TQ1RQX1VTUlJFUSwgRUlOVkFMKTsKIAkJCXJldHVybiAoRUlOVkFMKTsKIAkJfQogI2Vu
ZGlmCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAw
MDAwCi0JCXNpbnAgPSAoc3RydWN0IHNvY2thZGRyX2luICopYWRkcjsKLQkJaWYgKHAgIT0gTlVM
TCAmJiAoZXJyb3IgPSBwcmlzb25fcmVtb3RlX2lwNChwLT50ZF91Y3JlZCwgJnNpbnAtPnNpbl9h
ZGRyKSkgIT0gMCkgeworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCisJCXNpbiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilhZGRyOworCQlpZiAocCAh
PSBOVUxMICYmIChlcnJvciA9IHByaXNvbl9yZW1vdGVfaXA0KHAtPnRkX3VjcmVkLCAmc2luLT5z
aW5fYWRkcikpICE9IDApIHsKIAkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxM
LCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIGVycm9yKTsKIAkJCXJldHVybiAoZXJyb3IpOwogCQl9
CkBAIC03ODcyLDcgKzc5NDEsOSBAQCBzY3RwX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0
cnVjdCBtYnVmICpuYW0sIHN0cnVjdCBwcm9jICpwKQogCVNDVFBfSU5QX0lOQ1JfUkVGKGlucCk7
CiAJU0NUUF9BU09DX0NSRUFURV9MT0NLKGlucCk7CiAJY3JlYXRlX2xvY2tfb24gPSAxOwotCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwlORVRf
RVBPQ0hfRU5URVIoZXQpOworI2VuZGlmCiAKIAlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBf
UENCX0ZMQUdTX1NPQ0tFVF9BTExHT05FKSB8fAogCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NU
UF9QQ0JfRkxBR1NfU09DS0VUX0dPTkUpKSB7CkBAIC03OTYwLDcgKzgwMzEsOCBAQCBzY3RwX2Nv
bm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICpuYW0sIHN0cnVjdCBwcm9jICpw
KQogCS8qIFdlIGFyZSBHT09EIHRvIGdvICovCiAJc3RjYiA9IHNjdHBfYWxvY19hc3NvYyhpbnAs
IGFkZHIsICZlcnJvciwgMCwgdnJmX2lkLAogCSAgICAgICAgICAgICAgICAgICAgICAgaW5wLT5z
Y3RwX2VwLnByZV9vcGVuX3N0cmVhbV9jb3VudCwKLQkgICAgICAgICAgICAgICAgICAgICAgIGlu
cC0+c2N0cF9lcC5wb3J0LCBwKTsKKwkgICAgICAgICAgICAgICAgICAgICAgIGlucC0+c2N0cF9l
cC5wb3J0LCBwLAorCSAgICAgICAgICAgICAgICAgICAgICAgU0NUUF9JTklUSUFMSVpFX0FVVEhf
UEFSQU1TKTsKIAlpZiAoc3RjYiA9PSBOVUxMKSB7CiAJCS8qIEdhayEgbm8gbWVtb3J5ICovCiAJ
CWdvdG8gb3V0X25vdzsKQEAgLTc5NzAsMTkgKzgwNDIsMTggQEAgc2N0cF9jb25uZWN0KHN0cnVj
dCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtLCBzdHJ1Y3QgcHJvYyAqcCkKIAkJLyogU2V0
IHRoZSBjb25uZWN0ZWQgZmxhZyBzbyB3ZSBjYW4gcXVldWUgZGF0YSAqLwogCQlzb2lzY29ubmVj
dGluZyhzbyk7CiAJfQotCVNDVFBfU0VUX1NUQVRFKCZzdGNiLT5hc29jLCBTQ1RQX1NUQVRFX0NP
T0tJRV9XQUlUKTsKKwlTQ1RQX1NFVF9TVEFURShzdGNiLCBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlU
KTsKIAkodm9pZClTQ1RQX0dFVFRJTUVfVElNRVZBTCgmc3RjYi0+YXNvYy50aW1lX2VudGVyZWQp
OwogCi0JLyogaW5pdGlhbGl6ZSBhdXRoZW50aWNhdGlvbiBwYXJhbWV0ZXJzIGZvciB0aGUgYXNz
b2MgKi8KLQlzY3RwX2luaXRpYWxpemVfYXV0aF9wYXJhbXMoaW5wLCBzdGNiKTsKLQogCXNjdHBf
c2VuZF9pbml0aWF0ZShpbnAsIHN0Y2IsIFNDVFBfU09fTE9DS0VEKTsKIAlTQ1RQX1RDQl9VTkxP
Q0soc3RjYik7CiAgb3V0X25vdzoKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQorCU5FVF9FUE9DSF9FWElUKGV0KTsKKyNlbmRpZgogCWlmIChjcmVh
dGVfbG9ja19vbikgewogCQlTQ1RQX0FTT0NfQ1JFQVRFX1VOTE9DSyhpbnApOwogCX0KLQogCVND
VFBfSU5QX0RFQ1JfUkVGKGlucCk7CiAJcmV0dXJuIChlcnJvcik7CiB9CkBAIC04MTI3LDcgKzgx
OTgsOCBAQCBzY3RwY29ubl9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2Fk
ZHIgKmFkZHIpCiAJLyogV2UgYXJlIEdPT0QgdG8gZ28gKi8KIAlzdGNiID0gc2N0cF9hbG9jX2Fz
c29jKGlucCwgYWRkciwgJmVycm9yLCAwLCB2cmZfaWQsCiAJICAgICAgICAgICAgICAgICAgICAg
ICBpbnAtPnNjdHBfZXAucHJlX29wZW5fc3RyZWFtX2NvdW50LAotCSAgICAgICAgICAgICAgICAg
ICAgICAgaW5wLT5zY3RwX2VwLnBvcnQsIHApOworCSAgICAgICAgICAgICAgICAgICAgICAgaW5w
LT5zY3RwX2VwLnBvcnQsIHAsCisJICAgICAgICAgICAgICAgICAgICAgICBTQ1RQX0lOSVRJQUxJ
WkVfQVVUSF9QQVJBTVMpOwogCWlmIChzdGNiID09IE5VTEwpIHsKIAkJLyogR2FrISBubyBtZW1v
cnkgKi8KIAkJZ290byBvdXRfbm93OwpAQCAtODEzNywxMiArODIwOSw5IEBAIHNjdHBjb25uX2Nv
bm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqYWRkcikKIAkJLyogU2V0
IHRoZSBjb25uZWN0ZWQgZmxhZyBzbyB3ZSBjYW4gcXVldWUgZGF0YSAqLwogCQlzb2lzY29ubmVj
dGluZyhzbyk7CiAJfQotCVNDVFBfU0VUX1NUQVRFKCZzdGNiLT5hc29jLCBTQ1RQX1NUQVRFX0NP
T0tJRV9XQUlUKTsKKwlTQ1RQX1NFVF9TVEFURShzdGNiLCBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlU
KTsKIAkodm9pZClTQ1RQX0dFVFRJTUVfVElNRVZBTCgmc3RjYi0+YXNvYy50aW1lX2VudGVyZWQp
OwogCi0JLyogaW5pdGlhbGl6ZSBhdXRoZW50aWNhdGlvbiBwYXJhbWV0ZXJzIGZvciB0aGUgYXNz
b2MgKi8KLQlzY3RwX2luaXRpYWxpemVfYXV0aF9wYXJhbXMoaW5wLCBzdGNiKTsKLQogCXNjdHBf
c2VuZF9pbml0aWF0ZShpbnAsIHN0Y2IsIFNDVFBfU09fTE9DS0VEKTsKIAlTQ1RQX1RDQl9VTkxP
Q0soc3RjYik7CiAgb3V0X25vdzoKQEAgLTgxNTUsMTYgKzgyMjQsMTIgQEAgc2N0cGNvbm5fY29u
bmVjdChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRyKQogfQogI2VuZGlm
CiBpbnQKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1
MDAwMDAKLSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA3MDAwMDAKKyNpZiBkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCitzY3RwX2xpc3RlbihzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IGJhY2tsb2csIHN0
cnVjdCBwcm9jICpwKQorI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKIHNjdHBfbGlzdGVuKHN0
cnVjdCBzb2NrZXQgKnNvLCBpbnQgYmFja2xvZywgc3RydWN0IHRocmVhZCAqcCkKLSNlbHNlCi1z
Y3RwX2xpc3RlbihzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHRocmVhZCAqcCkKLSNlbmRpZgot
I2VsaWYgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNlbGlmIGRlZmluZWQoX1dJTjMyKQogc2N0cF9s
aXN0ZW4oc3RydWN0IHNvY2tldCAqc28sIGludCBiYWNrbG9nLCBQS1RIUkVBRCBwKQotI2VsaWYg
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQotc2N0cF9saXN0ZW4oc3RydWN0IHNvY2tldCAqc28sIGlu
dCBiYWNrbG9nLCBzdHJ1Y3QgcHJvYyAqcCkKICNlbHNlCiBzY3RwX2xpc3RlbihzdHJ1Y3Qgc29j
a2V0ICpzbywgc3RydWN0IHByb2MgKnApCiAjZW5kaWYKQEAgLTgyOTksNyArODM2NCw3IEBAIHNj
dHBfbGlzdGVuKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgcHJvYyAqcCkKIAkJc2N0cF9sb2df
bG9jayhpbnAsIChzdHJ1Y3Qgc2N0cF90Y2IgKilOVUxMLCBTQ1RQX0xPR19MT0NLX1NPQ0spOwog
CX0KICNlbmRpZgotI2lmIChkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lv
biA+IDUwMDAwMCkgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlTT0NLX0xPQ0soc28pOwogCWVycm9y
ID0gc29saXN0ZW5fcHJvdG9fY2hlY2soc28pOwogCVNPQ0tfVU5MT0NLKHNvKTsKQEAgLTgzMzks
MjUgKzg0MDQsMTcgQEAgc2N0cF9saXN0ZW4oc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBwcm9j
ICpwKQogCQl9CiAJfQogCVNDVFBfSU5QX1dMT0NLKGlucCk7Ci0jaWYgKGRlZmluZWQoX19GcmVl
QlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID4gNTAwMDAwKSB8fCBkZWZpbmVkKF9fV2luZG93
c19fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi0jaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0g
MTIwMDAzNAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSA9PSAw
KSB7CiAJCVNPQ0tfTE9DSyhzbyk7CiAJCXNvbGlzdGVuX3Byb3RvKHNvLCBiYWNrbG9nKTsKIAkJ
U09DS19VTkxPQ0soc28pOwogCX0KLSNlbGlmIF9fRnJlZUJTRF92ZXJzaW9uID49IDcwMDAwMCB8
fCBkZWZpbmVkKF9fV2luZG93c19fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi0JLyogSXQg
YXBwZWFycyBmb3IgNy4wIGFuZCBvbiwgd2UgbXVzdCBhbHdheXMgY2FsbCB0aGlzLiAqLworI2Vs
aWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlTT0NLX0xPQ0so
c28pOwogCXNvbGlzdGVuX3Byb3RvKHNvLCBiYWNrbG9nKTsKLSNlbHNlCi0JU09DS19MT0NLKHNv
KTsKLQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpID09IDAp
IHsKLQkJc29saXN0ZW5fcHJvdG8oc28pOwotCX0KLSNlbmRpZgogI2VuZGlmCi0jaWYgIWRlZmlu
ZWQoX19GcmVlQlNEX18pIHx8IF9fRnJlZUJTRF92ZXJzaW9uIDwgMTIwMDAzNAorI2lmICEoZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAJaWYgKGlucC0+
c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpIHsKIAkJLyogcmVtb3ZlIHRoZSBB
Q0NFUFRDT05OIGZsYWcgZm9yIG9uZS10by1tYW55IHNvY2tldHMgKi8KICNpZiBkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCkBAIC04MzY4LDcgKzg0MjUsNyBAQCBzY3RwX2xpc3RlbihzdHJ1Y3Qgc29j
a2V0ICpzbywgc3RydWN0IHByb2MgKnApCiAJfQogCVNPQ0tfVU5MT0NLKHNvKTsKICNlbmRpZgot
I2lmIChkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA3MDAwMDAp
IHx8IGRlZmluZWQoX19XaW5kb3dzX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCWlmIChiYWNrbG9nID4gMCkgewogCQlpbnAtPnNjdHBfZmxhZ3MgfD0gU0NUUF9Q
Q0JfRkxBR1NfQUNDRVBUSU5HOwogCX0gZWxzZSB7CkBAIC04Mzg0LDI1ICs4NDQxLDE1IEBAIHNj
dHBfbGlzdGVuKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgcHJvYyAqcCkKIHN0YXRpYyBpbnQg
c2N0cF9kZWZlcmVkX3dha2V1cF9jbnQgPSAwOwogCiBpbnQKLSNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogc2N0cF9hY2NlcHQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVj
dCBzb2NrYWRkciAqKmFkZHIpCiB7Ci0jZWxpZiBkZWZpbmVkKF9fUGFuZGFfXykKLXNjdHBfYWNj
ZXB0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIGludCAqbmFtZWxl
biwKLQkgICAgdm9pZCAqYWNjZXB0X2luZm8sIGludCAqYWNjZXB0X2luZm9fbGVuKQotewotI2Vs
c2UKLXNjdHBfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtKQotewot
CXN0cnVjdCBzb2NrYWRkciAqYWRkciA9IG10b2QobmFtLCBzdHJ1Y3Qgc29ja2FkZHIgKik7Ci0j
ZW5kaWYKIAlzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2I7CiAJc3RydWN0IHNjdHBfaW5wY2IgKmlucDsK
IAl1bmlvbiBzY3RwX3NvY2tzdG9yZSBzdG9yZTsKICNpZmRlZiBJTkVUNgotI2lmZGVmIFNDVFBf
S0FNRQorI2lmIGRlZmluZWQoU0NUUF9LQU1FKSAmJiBkZWZpbmVkKFNDVFBfRU1CRURERURfVjZf
U0NPUEUpCiAJaW50IGVycm9yOwotI2VuZGlmIC8qIFNDVFBfS0FNRSAqLworI2VuZGlmCiAjZW5k
aWYKIAlpbnAgPSAoc3RydWN0IHNjdHBfaW5wY2IgKilzby0+c29fcGNiOwogCkBAIC04NDEwLDUz
ICs4NDU3LDkyIEBAIHNjdHBfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAq
bmFtKQogCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1ND
VFBfVVNSUkVRLCBFSU5WQUwpOwogCQlyZXR1cm4gKEVDT05OUkVTRVQpOwogCX0KLQlTQ1RQX0lO
UF9STE9DSyhpbnApOworCVNDVFBfSU5QX1dMT0NLKGlucCk7CiAJaWYgKGlucC0+c2N0cF9mbGFn
cyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpIHsKLQkJU0NUUF9JTlBfUlVOTE9DSyhpbnApOwor
CQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7CiAJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxM
LCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIEVPUE5PVFNVUFApOwogCQlyZXR1cm4gKEVP
UE5PVFNVUFApOwogCX0KIAlpZiAoc28tPnNvX3N0YXRlICYgU1NfSVNESVNDT05ORUNURUQpIHsK
LQkJU0NUUF9JTlBfUlVOTE9DSyhpbnApOworCQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7CiAJCVND
VFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEs
IEVDT05OQUJPUlRFRCk7CiAJCXJldHVybiAoRUNPTk5BQk9SVEVEKTsKIAl9CiAJc3RjYiA9IExJ
U1RfRklSU1QoJmlucC0+c2N0cF9hc29jX2xpc3QpOwogCWlmIChzdGNiID09IE5VTEwpIHsKLQkJ
U0NUUF9JTlBfUlVOTE9DSyhpbnApOworCQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7CiAJCVNDVFBf
TFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIEVJ
TlZBTCk7CiAJCXJldHVybiAoRUNPTk5SRVNFVCk7CiAJfQogCVNDVFBfVENCX0xPQ0soc3RjYik7
Ci0JU0NUUF9JTlBfUlVOTE9DSyhpbnApOwogCXN0b3JlID0gc3RjYi0+YXNvYy5wcmltYXJ5X2Rl
c3RpbmF0aW9uLT5yby5fbF9hZGRyOwotCXN0Y2ItPmFzb2Muc3RhdGUgJj0gflNDVFBfU1RBVEVf
SU5fQUNDRVBUX1FVRVVFOwotCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKKwlTQ1RQX0NMRUFSX1NV
QlNUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfSU5fQUNDRVBUX1FVRVVFKTsKKwkvKiBXYWtlIGFueSBk
ZWxheWVkIHNsZWVwIGFjdGlvbiAqLworCWlmIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9G
TEFHU19ET05UX1dBS0UpIHsKKwkJaW5wLT5zY3RwX2ZsYWdzICY9IH5TQ1RQX1BDQl9GTEFHU19E
T05UX1dBS0U7CisJCWlmIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19XQUtFT1VU
UFVUKSB7CisJCQlpbnAtPnNjdHBfZmxhZ3MgJj0gflNDVFBfUENCX0ZMQUdTX1dBS0VPVVRQVVQ7
CisJCQlTT0NLQlVGX0xPQ0soJmlucC0+c2N0cF9zb2NrZXQtPnNvX3NuZCk7CisJCQlpZiAoc293
cml0ZWFibGUoaW5wLT5zY3RwX3NvY2tldCkpIHsKKyNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CisJCQkJLypfX1VzZXJzcGFjZV9fIGNhbGxpbmcgc293d2FrdXBfbG9ja2VkIGJlY2F1c2Ugb2Yg
U09DS0JVRl9MT0NLIGFib3ZlLiAqLworI2VuZGlmCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
fHwgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJCQlzb3d3YWtl
dXBfbG9ja2VkKGlucC0+c2N0cF9zb2NrZXQpOworI2Vsc2UKKyNpZiBkZWZpbmVkKF9fQVBQTEVf
XykKKwkJCQkvKiBzb2NrZXQgaXMgbG9ja2VkICovCisjZW5kaWYKKwkJCQlzb3d3YWtldXAoaW5w
LT5zY3RwX3NvY2tldCk7CisjZW5kaWYKKwkJCX0gZWxzZSB7CisJCQkJU09DS0JVRl9VTkxPQ0so
JmlucC0+c2N0cF9zb2NrZXQtPnNvX3NuZCk7CisJCQl9CisJCX0KKwkJaWYgKGlucC0+c2N0cF9m
bGFncyAmIFNDVFBfUENCX0ZMQUdTX1dBS0VJTlBVVCkgeworCQkJaW5wLT5zY3RwX2ZsYWdzICY9
IH5TQ1RQX1BDQl9GTEFHU19XQUtFSU5QVVQ7CisJCQlTT0NLQlVGX0xPQ0soJmlucC0+c2N0cF9z
b2NrZXQtPnNvX3Jjdik7CisJCQlpZiAoc29yZWFkYWJsZShpbnAtPnNjdHBfc29ja2V0KSkgewor
CQkJCXNjdHBfZGVmZXJlZF93YWtldXBfY250Kys7CisjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQorCQkJCS8qX19Vc2Vyc3BhY2VfXyBjYWxsaW5nIHNvcndha3VwX2xvY2tlZCBiZWNhdXNlIG9m
IFNPQ0tCVUZfTE9DSyBhYm92ZSAqLworI2VuZGlmCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
fHwgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJCQlzb3J3YWtl
dXBfbG9ja2VkKGlucC0+c2N0cF9zb2NrZXQpOworI2Vsc2UKKyNpZiBkZWZpbmVkKF9fQVBQTEVf
XykKKwkJCQkvKiBzb2NrZXQgaXMgbG9ja2VkICovCisjZW5kaWYKKwkJCQlzb3J3YWtldXAoaW5w
LT5zY3RwX3NvY2tldCk7CisjZW5kaWYKKwkJCX0gZWxzZSB7CisJCQkJU09DS0JVRl9VTkxPQ0so
JmlucC0+c2N0cF9zb2NrZXQtPnNvX3Jjdik7CisJCQl9CisJCX0KKwl9CisJU0NUUF9JTlBfV1VO
TE9DSyhpbnApOworCWlmIChzdGNiLT5hc29jLnN0YXRlICYgU0NUUF9TVEFURV9BQk9VVF9UT19C
RV9GUkVFRCkgeworCQlzY3RwX2ZyZWVfYXNzb2MoaW5wLCBzdGNiLCBTQ1RQX05PUk1BTF9QUk9D
LAorCQkgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBfVVNSUkVRICsgU0NUUF9MT0NfMTkp
OworCX0gZWxzZSB7CisJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKKwl9CiAJc3dpdGNoIChzdG9y
ZS5zYS5zYV9mYW1pbHkpIHsKICNpZmRlZiBJTkVUCiAJY2FzZSBBRl9JTkVUOgogCXsKIAkJc3Ry
dWN0IHNvY2thZGRyX2luICpzaW47CiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZp
bmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCQlTQ1RQX01BTExPQ19TT05BTUUoc2luLCBzdHJ1Y3Qgc29ja2FkZHJfaW4gKiwg
c2l6ZW9mICpzaW4pOwogCQlpZiAoc2luID09IE5VTEwpCiAJCQlyZXR1cm4gKEVOT01FTSk7Ci0j
ZWxzZQotCQlzaW4gPSAoc3RydWN0IHNvY2thZGRyX2luICopYWRkcjsKLQkJbWVtc2V0KHNpbiwg
MCwgc2l6ZW9mKCpzaW4pKTsKLSNlbmRpZgogCQlzaW4tPnNpbl9mYW1pbHkgPSBBRl9JTkVUOwog
I2lmZGVmIEhBVkVfU0lOX0xFTgogCQlzaW4tPnNpbl9sZW4gPSBzaXplb2YoKnNpbik7CiAjZW5k
aWYKIAkJc2luLT5zaW5fcG9ydCA9IHN0b3JlLnNpbi5zaW5fcG9ydDsKIAkJc2luLT5zaW5fYWRk
ciA9IHN0b3JlLnNpbi5zaW5fYWRkcjsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZp
bmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCQkqYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHIgKilzaW47Ci0jZWxpZiAhZGVmaW5l
ZChfX1BhbmRhX18pCi0JCVNDVFBfQlVGX0xFTihuYW0pID0gc2l6ZW9mKCpzaW4pOwotI2VuZGlm
CiAJCWJyZWFrOwogCX0KICNlbmRpZgpAQCAtODQ2NSwxNCArODU1MSw5IEBAIHNjdHBfYWNjZXB0
KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtKQogCXsKIAkJc3RydWN0IHNvY2th
ZGRyX2luNiAqc2luNjsKIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19B
UFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAJCVNDVFBfTUFMTE9DX1NPTkFNRShzaW42LCBzdHJ1Y3Qgc29ja2FkZHJfaW42ICosIHNpemVv
ZiAqc2luNik7CiAJCWlmIChzaW42ID09IE5VTEwpCiAJCQlyZXR1cm4gKEVOT01FTSk7Ci0jZWxz
ZQotCQlzaW42ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilhZGRyOwotCQltZW1zZXQoc2luNiwg
MCwgc2l6ZW9mKCpzaW42KSk7Ci0jZW5kaWYKIAkJc2luNi0+c2luNl9mYW1pbHkgPSBBRl9JTkVU
NjsKICNpZmRlZiBIQVZFX1NJTjZfTEVOCiAJCXNpbjYtPnNpbjZfbGVuID0gc2l6ZW9mKCpzaW42
KTsKQEAgLTg0OTYsMTEgKzg1NzcsNyBAQCBzY3RwX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzbywg
c3RydWN0IG1idWYgKm5hbSkKIAkJCXNpbjYtPnNpbjZfc2NvcGVfaWQgPSAwOwkvKiBYWFggKi8K
ICNlbmRpZiAvKiBTQ1RQX0tBTUUgKi8KICNlbmRpZiAvKiBTQ1RQX0VNQkVEREVEX1Y2X1NDT1BF
ICovCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRl
ZmluZWQoX19XaW5kb3dzX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJKmFkZHIgPSAo
c3RydWN0IHNvY2thZGRyICopc2luNjsKLSNlbGlmICFkZWZpbmVkKF9fUGFuZGFfXykKLQkJU0NU
UF9CVUZfTEVOKG5hbSkgPSBzaXplb2YoKnNpbjYpOwotI2VuZGlmCiAJCWJyZWFrOwogCX0KICNl
bmRpZgpAQCAtODUyNyw3MyArODYwNCwxNSBAQCBzY3RwX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpz
bywgc3RydWN0IG1idWYgKm5hbSkKIAkJLyogVFNOSCAqLwogCQlicmVhazsKIAl9Ci0JLyogV2Fr
ZSBhbnkgZGVsYXllZCBzbGVlcCBhY3Rpb24gKi8KLQlpZiAoaW5wLT5zY3RwX2ZsYWdzICYgU0NU
UF9QQ0JfRkxBR1NfRE9OVF9XQUtFKSB7Ci0JCVNDVFBfSU5QX1dMT0NLKGlucCk7Ci0JCWlucC0+
c2N0cF9mbGFncyAmPSB+U0NUUF9QQ0JfRkxBR1NfRE9OVF9XQUtFOwotCQlpZiAoaW5wLT5zY3Rw
X2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfV0FLRU9VVFBVVCkgewotCQkJaW5wLT5zY3RwX2ZsYWdz
ICY9IH5TQ1RQX1BDQl9GTEFHU19XQUtFT1VUUFVUOwotCQkJU0NUUF9JTlBfV1VOTE9DSyhpbnAp
OwotCQkJU09DS0JVRl9MT0NLKCZpbnAtPnNjdHBfc29ja2V0LT5zb19zbmQpOwotCQkJaWYgKHNv
d3JpdGVhYmxlKGlucC0+c2N0cF9zb2NrZXQpKSB7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qX19Vc2Vyc3BhY2VfXyBjYWxsaW5nIHNv
d3dha3VwX2xvY2tlZCBiZWNhdXNlIG9mIFNPQ0tCVUZfTE9DSyBhYm92ZS4gKi8KLSNlbmRpZgot
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pIHx8IGRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKLQkJCQlzb3d3YWtldXBfbG9ja2VkKGlucC0+c2N0cF9zb2NrZXQp
OwotI2Vsc2UKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKLQkJCQkvKiBzb2NrZXQgaXMgbG9ja2Vk
ICovCi0jZW5kaWYKLQkJCQlzb3d3YWtldXAoaW5wLT5zY3RwX3NvY2tldCk7Ci0jZW5kaWYKLQkJ
CX0gZWxzZSB7Ci0JCQkJU09DS0JVRl9VTkxPQ0soJmlucC0+c2N0cF9zb2NrZXQtPnNvX3NuZCk7
Ci0JCQl9Ci0JCQlTQ1RQX0lOUF9XTE9DSyhpbnApOwotCQl9Ci0JCWlmIChpbnAtPnNjdHBfZmxh
Z3MgJiBTQ1RQX1BDQl9GTEFHU19XQUtFSU5QVVQpIHsKLQkJCWlucC0+c2N0cF9mbGFncyAmPSB+
U0NUUF9QQ0JfRkxBR1NfV0FLRUlOUFVUOwotCQkJU0NUUF9JTlBfV1VOTE9DSyhpbnApOwotCQkJ
U09DS0JVRl9MT0NLKCZpbnAtPnNjdHBfc29ja2V0LT5zb19yY3YpOwotCQkJaWYgKHNvcmVhZGFi
bGUoaW5wLT5zY3RwX3NvY2tldCkpIHsKLQkJCQlzY3RwX2RlZmVyZWRfd2FrZXVwX2NudCsrOwot
I2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLypfX1VzZXJzcGFjZV9fIGNhbGxpbmcgc29yd2FrdXBfbG9ja2VkIGJlY2F1c2Ugb2YgU09D
S0JVRl9MT0NLIGFib3ZlICovCi0jZW5kaWYKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBk
ZWZpbmVkKF9fV2luZG93c19fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi0JCQkJc29yd2Fr
ZXVwX2xvY2tlZChpbnAtPnNjdHBfc29ja2V0KTsKLSNlbHNlCi0jaWYgZGVmaW5lZChfX0FQUExF
X18pCi0JCQkJLyogc29ja2V0IGlzIGxvY2tlZCAqLwotI2VuZGlmCi0JCQkJc29yd2FrZXVwKGlu
cC0+c2N0cF9zb2NrZXQpOwotI2VuZGlmCi0JCQl9IGVsc2UgewotCQkJCVNPQ0tCVUZfVU5MT0NL
KCZpbnAtPnNjdHBfc29ja2V0LT5zb19yY3YpOwotCQkJfQotCQkJU0NUUF9JTlBfV0xPQ0soaW5w
KTsKLQkJfQotCQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7Ci0JfQotCWlmIChzdGNiLT5hc29jLnN0
YXRlICYgU0NUUF9TVEFURV9BQk9VVF9UT19CRV9GUkVFRCkgewotCQlTQ1RQX1RDQl9MT0NLKHN0
Y2IpOwotCQlzY3RwX2ZyZWVfYXNzb2MoaW5wLCBzdGNiLCBTQ1RQX05PUk1BTF9QUk9DLAotCQkg
ICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBfVVNSUkVRICsgU0NUUF9MT0NfMTkpOwotCX0K
IAlyZXR1cm4gKDApOwogfQogCiAjaWZkZWYgSU5FVAogaW50Ci0jaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pCisjaWYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIHNjdHBfaW5nZXRhZGRyKHN0cnVjdCBzb2NrZXQgKnNv
LCBzdHJ1Y3Qgc29ja2FkZHIgKiphZGRyKQogewogCXN0cnVjdCBzb2NrYWRkcl9pbiAqc2luOwot
I2VsaWYgZGVmaW5lZChfX1BhbmRhX18pCi1zY3RwX2luZ2V0YWRkcihzdHJ1Y3Qgc29ja2V0ICpz
bywgc3RydWN0IHNvY2thZGRyICphZGRyKQotewotCXN0cnVjdCBzb2NrYWRkcl9pbiAqc2luID0g
KHN0cnVjdCBzb2NrYWRkcl9pbiAqKWFkZHI7CiAjZWxzZQogc2N0cF9pbmdldGFkZHIoc3RydWN0
IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICpuYW0pCiB7CkBAIC04NjA2LDEyICs4NjI1LDEwIEBA
IHNjdHBfaW5nZXRhZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtKQogCS8q
CiAJICogRG8gdGhlIG1hbGxvYyBmaXJzdCBpbiBjYXNlIGl0IGJsb2Nrcy4KIAkgKi8KLSNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dp
bmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCVNDVFBfTUFMTE9DX1NPTkFN
RShzaW4sIHN0cnVjdCBzb2NrYWRkcl9pbiAqLCBzaXplb2YgKnNpbik7CiAJaWYgKHNpbiA9PSBO
VUxMKQogCQlyZXR1cm4gKEVOT01FTSk7Ci0jZWxpZiBkZWZpbmVkKF9fUGFuZGFfXykKLQltZW1z
ZXQoc2luLCAwLCBzaXplb2YoKnNpbikpOwogI2Vsc2UKIAlTQ1RQX0JVRl9MRU4obmFtKSA9IHNp
emVvZigqc2luKTsKIAltZW1zZXQoc2luLCAwLCBzaXplb2YoKnNpbikpOwpAQCAtODYyMiw3ICs4
NjM5LDcgQEAgc2N0cF9pbmdldGFkZHIoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICpu
YW0pCiAjZW5kaWYKIAlpbnAgPSAoc3RydWN0IHNjdHBfaW5wY2IgKilzby0+c29fcGNiOwogCWlm
ICghaW5wKSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18p
IHx8IGRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJ
U0NUUF9GUkVFX1NPTkFNRShzaW4pOwogI2VuZGlmCiAJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5w
LCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIEVJTlZBTCk7CkBAIC04NjkzLDcg
Kzg3MTAsNyBAQCBzY3RwX2luZ2V0YWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYg
Km5hbSkKIAkJCX0KIAkJfQogCQlpZiAoIWZuZCkgewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
IHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAJCQlTQ1RQX0ZSRUVfU09OQU1FKHNpbik7CiAjZW5kaWYKIAkJ
CVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKQEAgLTg3MDIsMjEgKzg3MTksMTcgQEAgc2N0cF9pbmdl
dGFkZHIoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICpuYW0pCiAJCX0KIAl9CiAJU0NU
UF9JTlBfUlVOTE9DSyhpbnApOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQo
X19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJKCphZGRyKSA9IChzdHJ1Y3Qgc29ja2FkZHIgKilzaW47CiAjZW5kaWYKIAlyZXR1
cm4gKDApOwogfQogCiBpbnQKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9f
QVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogc2N0cF9wZWVyYWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICoq
YWRkcikKIHsKIAlzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbjsKLSNlbGlmIGRlZmluZWQoX19QYW5k
YV9fKQotc2N0cF9wZWVyYWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICph
ZGRyKQotewotCXN0cnVjdCBzb2NrYWRkcl9pbiAqc2luID0gKHN0cnVjdCBzb2NrYWRkcl9pbiAq
KWFkZHI7CiAjZWxzZQogc2N0cF9wZWVyYWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1i
dWYgKm5hbSkKIHsKQEAgLTg3MzAsMTIgKzg3NDMsMTAgQEAgc2N0cF9wZWVyYWRkcihzdHJ1Y3Qg
c29ja2V0ICpzbywgc3RydWN0IG1idWYgKm5hbSkKIAlzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQ7CiAK
IAkvKiBEbyB0aGUgbWFsbG9jIGZpcnN0IGluIGNhc2UgaXQgYmxvY2tzLiAqLwotI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93
c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJU0NUUF9NQUxMT0NfU09OQU1FKHNp
biwgc3RydWN0IHNvY2thZGRyX2luICosIHNpemVvZiAqc2luKTsKIAlpZiAoc2luID09IE5VTEwp
CiAJCXJldHVybiAoRU5PTUVNKTsKLSNlbGlmIGRlZmluZWQoX19QYW5kYV9fKQotCW1lbXNldChz
aW4sIDAsIHNpemVvZigqc2luKSk7CiAjZWxzZQogCVNDVFBfQlVGX0xFTihuYW0pID0gc2l6ZW9m
KCpzaW4pOwogCW1lbXNldChzaW4sIDAsIHNpemVvZigqc2luKSk7CkBAIC04NzQ5LDcgKzg3NjAs
NyBAQCBzY3RwX3BlZXJhZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtKQog
CWlmICgoaW5wID09IE5VTEwpIHx8CiAJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0Jf
RkxBR1NfQ09OTkVDVEVEKSA9PSAwKSkgewogCQkvKiBVRFAgdHlwZSBhbmQgbGlzdGVuZXJzIHdp
bGwgZHJvcCBvdXQgaGVyZSAqLwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQo
X19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJCVNDVFBfRlJFRV9TT05BTUUoc2luKTsKICNlbmRpZgogCQlTQ1RQX0xUUkFDRV9F
UlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBFTk9UQ09OTik7
CkBAIC04NzYyLDcgKzg3NzMsNyBAQCBzY3RwX3BlZXJhZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBz
dHJ1Y3QgbWJ1ZiAqbmFtKQogCX0KIAlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CiAJaWYgKHN0Y2Ig
PT0gTlVMTCkgewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9f
KSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJ
CVNDVFBfRlJFRV9TT05BTUUoc2luKTsKICNlbmRpZgogCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlu
cCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBFSU5WQUwpOwpAQCAtODc4MSwx
OSArODc5MiwxOSBAQCBzY3RwX3BlZXJhZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1
ZiAqbmFtKQogCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKIAlpZiAoIWZuZCkgewogCQkvKiBObyBJ
UHY0IGFkZHJlc3MgKi8KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQ
TEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCQlTQ1RQX0ZSRUVfU09OQU1FKHNpbik7CiAjZW5kaWYKIAkJU0NUUF9MVFJBQ0VfRVJSX1JF
VChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1VTUlJFUSwgRU5PRU5UKTsKIAkJcmV0
dXJuIChFTk9FTlQpOwogCX0KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9f
QVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogCSgqYWRkcikgPSAoc3RydWN0IHNvY2thZGRyICopc2luOwogI2VuZGlmCiAJcmV0dXJu
ICgwKTsKIH0KIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9f
KSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBz
dHJ1Y3QgcHJfdXNycmVxcyBzY3RwX3VzcnJlcXMgPSB7CiAjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykKIAkucHJ1X2Fib3J0ID0gc2N0cF9hYm9ydCwKQEAgLTg4MDIsMTUgKzg4MTMsMTAgQEAgc3Ry
dWN0IHByX3VzcnJlcXMgc2N0cF91c3JyZXFzID0gewogCS5wcnVfYmluZCA9IHNjdHBfYmluZCwK
IAkucHJ1X2Nvbm5lY3QgPSBzY3RwX2Nvbm5lY3QsCiAJLnBydV9jb250cm9sID0gaW5fY29udHJv
bCwKLSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA2OTAwMDAKIAkucHJ1X2Nsb3NlID0gc2N0cF9j
bG9zZSwKIAkucHJ1X2RldGFjaCA9IHNjdHBfY2xvc2UsCiAJLnBydV9zb3BvbGwgPSBzb3BvbGxf
Z2VuZXJpYywKIAkucHJ1X2ZsdXNoID0gc2N0cF9mbHVzaCwKLSNlbHNlCi0JLnBydV9kZXRhY2gg
PSBzY3RwX2RldGFjaCwKLQkucHJ1X3NvcG9sbCA9IHNvcG9sbCwKLSNlbmRpZgogCS5wcnVfZGlz
Y29ubmVjdCA9IHNjdHBfZGlzY29ubmVjdCwKIAkucHJ1X2xpc3RlbiA9IHNjdHBfbGlzdGVuLAog
CS5wcnVfcGVlcmFkZHIgPSBzY3RwX3BlZXJhZGRyLApAQCAtODg0MCw3ICs4ODQ2LDcgQEAgc3Ry
dWN0IHByX3VzcnJlcXMgc2N0cF91c3JyZXFzID0gewogCS5wcnVfc29zZW5kID0gc2N0cF9zb3Nl
bmQsCiAJLnBydV9zb3JlY2VpdmUgPSBzY3RwX3NvcmVjZWl2ZSwKIAkucHJ1X3NvcG9sbCA9IHNv
cG9sbAotI2VsaWYgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNlbGlmIGRlZmluZWQoX1dJTjMyKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCXNjdHBfYWJvcnQsCiAJc2N0cF9hY2NlcHQsCiAJ
c2N0cF9hdHRhY2gsCkBAIC04ODY2LDcgKzg4NzIsNyBAQCBzdHJ1Y3QgcHJfdXNycmVxcyBzY3Rw
X3VzcnJlcXMgPSB7CiAJc2N0cF9jbG9zZQogI2VuZGlmCiB9OwotI2VsaWYgIWRlZmluZWQoX19Q
YW5kYV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2VsaWYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKIGludAogc2N0cF91c3JyZXEoc28sIHJlcSwgbSwgbmFtLCBjb250cm9sKQogCXN0
cnVjdCBzb2NrZXQgKnNvOwpAQCAtODg3NCw4ICs4ODgwLDYgQEAgc2N0cF91c3JyZXEoc28sIHJl
cSwgbSwgbmFtLCBjb250cm9sKQogCXN0cnVjdCBtYnVmICptLCAqbmFtLCAqY29udHJvbDsKIHsK
IAlzdHJ1Y3QgcHJvYyAqcCA9IGN1cnByb2M7Ci0JdWludDMyX3QgdnJmX2lkOwotCXN0cnVjdCBz
Y3RwX3ZyZiAqdnJmOwogCWludCBlcnJvcjsKIAlpbnQgZmFtaWx5OwogCXN0cnVjdCBzY3RwX2lu
cGNiICppbnAgPSAoc3RydWN0IHNjdHBfaW5wY2IgKilzby0+c29fcGNiOwpAQCAtOTAxMSw3ICs5
MDE1LDcgQEAgcmVnaXN0ZXJfcmVjdl9jYihzdHJ1Y3Qgc29ja2V0ICpzbywKIH0KIAogaW50Ci1y
ZWdpc3Rlcl9zZW5kX2NiKHN0cnVjdCBzb2NrZXQgKnNvLCB1aW50MzJfdCBzYl90aHJlc2hvbGQs
IGludCAoKnNlbmRfY2IpKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHVpbnQzMl90IHNiX2ZyZWUpKQor
cmVnaXN0ZXJfc2VuZF9jYihzdHJ1Y3Qgc29ja2V0ICpzbywgdWludDMyX3Qgc2JfdGhyZXNob2xk
LCBpbnQgKCpzZW5kX2NiKShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCB1aW50MzJfdCBzYl9mcmVlLCB2
b2lkICp1bHBfaW5mbykpCiB7CiAJc3RydWN0IHNjdHBfaW5wY2IgKmlucDsKIApAQCAtOTA0NSw0
ICs5MDQ5LDIzIEBAIHJlZ2lzdGVyX3VscF9pbmZvIChzdHJ1Y3Qgc29ja2V0ICpzbywgdm9pZCAq
dWxwX2luZm8pCiAJU0NUUF9JTlBfV1VOTE9DSyhpbnApOwogCXJldHVybiAoMSk7CiB9CisKK2lu
dAorcmV0cmlldmVfdWxwX2luZm8gKHN0cnVjdCBzb2NrZXQgKnNvLCB2b2lkICoqcHVscF9pbmZv
KQoreworCXN0cnVjdCBzY3RwX2lucGNiICppbnA7CisKKwlpZiAocHVscF9pbmZvID09IE5VTEwp
IHsKKwkJcmV0dXJuICgwKTsKKwl9CisKKwlpbnAgPSAoc3RydWN0IHNjdHBfaW5wY2IgKikgc28t
PnNvX3BjYjsKKwlpZiAoaW5wID09IE5VTEwpIHsKKwkJcmV0dXJuICgwKTsKKwl9CisJU0NUUF9J
TlBfUkxPQ0soaW5wKTsKKwkqcHVscF9pbmZvID0gaW5wLT51bHBfaW5mbzsKKwlTQ1RQX0lOUF9S
VU5MT0NLKGlucCk7CisJcmV0dXJuICgxKTsKK30KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBs
aWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfdmFyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25l
dGluZXQvc2N0cF92YXIuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGJj
NGFmZTk1ZjFmMDlkY2Q3MmZlZmY1YjMyYTM5NTc5ZTY4OWI3NDAuLmQyNDMzZDYwNzIyODVhZTJh
ZWYzZmVlNDZjNzQwZTI5NGJmNjAwZjEKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0
L3NjdHBfdmFyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfdmFyLmgK
QEAgLTMyLDkgKzMyLDkgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaWZkZWYgX19GcmVlQlNEX18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRG
cmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfdmFyLmggMzE3NDU3IDIwMTctMDQtMjYgMTk6
MjY6NDBaIHR1ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQv
c2N0cF92YXIuaCAzNjMzMjMgMjAyMC0wNy0xOSAxMjozNDoxOVogdHVleGVuICQiKTsKICNlbmRp
ZgogCiAjaWZuZGVmIF9ORVRJTkVUX1NDVFBfVkFSX0hfCkBAIC00NCw3ICs0NCw3IEBAIF9fRkJT
RElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX3Zhci5oIDMxNzQ1NyAyMDE3LTA0
LTI2IDE5OjI2OjQwWiB0dWV4CiAKICNpZiBkZWZpbmVkKF9LRVJORUwpIHx8IGRlZmluZWQoX19V
c2Vyc3BhY2VfXykKIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBM
RV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiBleHRlcm4gc3RydWN0IHByX3VzcnJlcXMgc2N0cF91c3JyZXFzOwogI2VuZGlmCiAKQEAgLTE4
NiwxOCArMTg2LDEyIEBAIGV4dGVybiBzdHJ1Y3QgcHJfdXNycmVxcyBzY3RwX3VzcnJlcXM7CiAJ
fSBcCiB9CiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+
IDUwMDAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAKICNkZWZpbmUgc2N0cF9mcmVlX3JlbW90ZV9hZGRyKF9fbmV0KSB7IFwKIAlpZiAoKF9f
bmV0KSkgeyAgXAogCQlpZiAoU0NUUF9ERUNSRU1FTlRfQU5EX0NIRUNLX1JFRkNPVU5UKCYoX19u
ZXQpLT5yZWZfY291bnQpKSB7IFwKLQkJCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmKF9fbmV0
KS0+cnh0X3RpbWVyLnRpbWVyKTsgXAotCQkJKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCYoX19u
ZXQpLT5wbXR1X3RpbWVyLnRpbWVyKTsgXAotCQkJKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCYo
X19uZXQpLT5oYl90aW1lci50aW1lcik7IFwKLQkJCWlmICgoX19uZXQpLT5yby5yb19ydCkgeyBc
Ci0JCQkJUlRGUkVFKChfX25ldCktPnJvLnJvX3J0KTsgXAotCQkJCShfX25ldCktPnJvLnJvX3J0
ID0gTlVMTDsgXAotCQkJfSBcCisJCQlST19OSEZSRUUoJihfX25ldCktPnJvKTsgXAogCQkJaWYg
KChfX25ldCktPnNyY19hZGRyX3NlbGVjdGVkKSB7IFwKIAkJCQlzY3RwX2ZyZWVfaWZhKChfX25l
dCktPnJvLl9zX2FkZHIpOyBcCiAJCQkJKF9fbmV0KS0+cm8uX3NfYWRkciA9IE5VTEw7IFwKQEAg
LTIzOSw5ICsyMzMsNiBAQCBleHRlcm4gc3RydWN0IHByX3VzcnJlcXMgc2N0cF91c3JyZXFzOwog
I2RlZmluZSBzY3RwX2ZyZWVfcmVtb3RlX2FkZHIoX19uZXQpIHsgXAogCWlmICgoX19uZXQpKSB7
IFwKIAkJaWYgKFNDVFBfREVDUkVNRU5UX0FORF9DSEVDS19SRUZDT1VOVCgmKF9fbmV0KS0+cmVm
X2NvdW50KSkgeyBcCi0JCQkodm9pZClTQ1RQX09TX1RJTUVSX1NUT1AoJihfX25ldCktPnJ4dF90
aW1lci50aW1lcik7IFwKLQkJCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmKF9fbmV0KS0+cG10
dV90aW1lci50aW1lcik7IFwKLQkJCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmKF9fbmV0KS0+
aGJfdGltZXIudGltZXIpOyBcCiAJCQlpZiAoKF9fbmV0KS0+cm8ucm9fcnQpIHsgXAogCQkJCVJU
RlJFRSgoX19uZXQpLT5yby5yb19ydCk7IFwKIAkJCQkoX19uZXQpLT5yby5yb19ydCA9IE5VTEw7
IFwKQEAgLTI1OCwzMSArMjQ5LDYgQEAgZXh0ZXJuIHN0cnVjdCBwcl91c3JyZXFzIHNjdHBfdXNy
cmVxczsKIAl9IFwKIH0KIAotI2lmIGRlZmluZWQoX19QYW5kYV9fKQotI2RlZmluZSBzY3RwX3Ni
ZnJlZShjdGwsIHN0Y2IsIHNiLCBtKSB7IFwKLQlpZiAoKHNiKS0+c2JfY2MgPj0gKHVpbnQzMl90
KVNDVFBfQlVGX0xFTigobSkpKSB7IFwKLQkJYXRvbWljX3N1YnRyYWN0X2ludCgmKHNiKS0+c2Jf
Y2MsIFNDVFBfQlVGX0xFTigobSkpKTsgXAotCX0gZWxzZSB7IFwKLQkJKHNiKS0+c2JfY2MgPSAw
OyBcCi0JfSBcCi0JaWYgKCgoY3RsKS0+ZG9fbm90X3JlZl9zdGNiID09IDApICYmIHN0Y2IpIHsg
XAotCQlpZiAoKHN0Y2IpLT5hc29jLnNiX2NjID49ICh1aW50MzJfdClTQ1RQX0JVRl9MRU4oKG0p
KSkgeyBcCi0JCQlhdG9taWNfc3VidHJhY3RfaW50KCYoc3RjYiktPmFzb2Muc2JfY2MsIFNDVFBf
QlVGX0xFTigobSkpKTsgXAotCQl9IGVsc2UgeyBcCi0JCQkoc3RjYiktPmFzb2Muc2JfY2MgPSAw
OyBcCi0JCX0gXAotCX0gXAotfQotCi0jZGVmaW5lIHNjdHBfc2JhbGxvYyhzdGNiLCBzYiwgbSkg
eyBcCi0JYXRvbWljX2FkZF9pbnQoJihzYiktPnNiX2NjLCBTQ1RQX0JVRl9MRU4oKG0pKSk7IFwK
LQlpZiAoc3RjYikgeyBcCi0JCWF0b21pY19hZGRfaW50KCYoc3RjYiktPmFzb2Muc2JfY2MsIFND
VFBfQlVGX0xFTigobSkpKTsgXAotCX0gXAotfQotCi0jZWxzZQotCiAjZGVmaW5lIHNjdHBfc2Jm
cmVlKGN0bCwgc3RjYiwgc2IsIG0pIHsgXAogCVNDVFBfU0FWRV9BVE9NSUNfREVDUkVNRU5UKCYo
c2IpLT5zYl9jYywgU0NUUF9CVUZfTEVOKChtKSkpOyBcCiAJU0NUUF9TQVZFX0FUT01JQ19ERUNS
RU1FTlQoJihzYiktPnNiX21iY250LCBNU0laRSk7IFwKQEAgLTMwMSw3ICsyNjcsNiBAQCBleHRl
cm4gc3RydWN0IHByX3VzcnJlcXMgc2N0cF91c3JyZXFzOwogCX0gXAogfQogI2VuZGlmCi0jZW5k
aWYKIAogI2RlZmluZSBzY3RwX3Vjb3VudF9pbmNyKHZhbCkgeyBcCiAJdmFsKys7IFwKQEAgLTQw
MywyMiArMzY4LDEzIEBAIHN0cnVjdCBzY3RwX3RjYjsKIHN0cnVjdCBzY3RwaGRyOwogCiAKLSNp
ZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPiA2OTAwMDApIHx8
IGRlZmluZWQoX19XaW5kb3dzX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogdm9pZCBzY3RwX2Nsb3NlKHN0cnVjdCBzb2NrZXQgKnNvKTsKICNlbHNlCiBpbnQgc2N0
cF9kZXRhY2goc3RydWN0IHNvY2tldCAqc28pOwogI2VuZGlmCiBpbnQgc2N0cF9kaXNjb25uZWN0
KHN0cnVjdCBzb2NrZXQgKnNvKTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVk
KF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKLSNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA8IDkwMjAwMAotdm9pZCBzY3RwX2N0bGlucHV0IF9f
UCgoaW50LCBzdHJ1Y3Qgc29ja2FkZHIgKiwgdm9pZCAqKSk7Ci1pbnQgc2N0cF9jdGxvdXRwdXQg
X19QKChzdHJ1Y3Qgc29ja2V0ICosIHN0cnVjdCBzb2Nrb3B0ICopKTsKLSNpZmRlZiBJTkVUCi12
b2lkIHNjdHBfaW5wdXRfd2l0aF9wb3J0IF9fUCgoc3RydWN0IG1idWYgKiwgaW50LCB1aW50MTZf
dCkpOwotdm9pZCBzY3RwX2lucHV0IF9fUCgoc3RydWN0IG1idWYgKiwgaW50KSk7Ci0jZW5kaWYK
LXZvaWQgc2N0cF9wYXRobXR1X2FkanVzdG1lbnQgX19QKChzdHJ1Y3Qgc2N0cF90Y2IgKiwgdWlu
dDE2X3QpKTsKLSNlbHNlCisjaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZiBkZWZpbmVk
KF9fQVBQTEVfXykgJiYgIWRlZmluZWQoQVBQTEVfTEVPUEFSRCkgJiYgIWRlZmluZWQoQVBQTEVf
U05PV0xFT1BBUkQpICYmICFkZWZpbmVkKEFQUExFX0xJT04pICYmICFkZWZpbmVkKEFQUExFX01P
VU5UQUlOTElPTikgJiYgIWRlZmluZWQoQVBQTEVfRUxDQVBJVEFOKQogdm9pZCBzY3RwX2N0bGlu
cHV0KGludCwgc3RydWN0IHNvY2thZGRyICosIHZvaWQgKiwgc3RydWN0IGlmbmV0ICogU0NUUF9V
TlVTRUQpOwogI2Vsc2UKQEAgLTQyNywxOCArMzgzLDE1IEBAIHZvaWQgc2N0cF9jdGxpbnB1dChp
bnQsIHN0cnVjdCBzb2NrYWRkciAqLCB2b2lkICopOwogaW50IHNjdHBfY3Rsb3V0cHV0KHN0cnVj
dCBzb2NrZXQgKiwgc3RydWN0IHNvY2tvcHQgKik7CiAjaWZkZWYgSU5FVAogdm9pZCBzY3RwX2lu
cHV0X3dpdGhfcG9ydChzdHJ1Y3QgbWJ1ZiAqLCBpbnQsIHVpbnQxNl90KTsKLSNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSAxMTAwMDIwCisjaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIGludCBzY3RwX2lucHV0
KHN0cnVjdCBtYnVmICoqLCBpbnQgKiwgaW50KTsKICNlbHNlCiB2b2lkIHNjdHBfaW5wdXQoc3Ry
dWN0IG1idWYgKiwgaW50KTsKICNlbmRpZgogI2VuZGlmCiB2b2lkIHNjdHBfcGF0aG10dV9hZGp1
c3RtZW50KHN0cnVjdCBzY3RwX3RjYiAqLCB1aW50MTZfdCk7Ci0jZW5kaWYKICNlbHNlCi0jaWYg
ZGVmaW5lZChfX1BhbmRhX18pCi12b2lkIHNjdHBfaW5wdXQocGFraGFuZGxlX3R5cGUgaV9wYWsp
OwotI2VsaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKIHZvaWQgc2N0cF9wYXRobXR1X2FkanVzdG1lbnQoc3RydWN0IHNjdHBfdGNiICosIHVpbnQx
Nl90KTsKICNlbHNlCiB2b2lkIHNjdHBfaW5wdXQoc3RydWN0IG1idWYgKiwuLi4pOwpAQCAtNDQ2
LDE3ICszOTksMTEgQEAgdm9pZCBzY3RwX2lucHV0KHN0cnVjdCBtYnVmICosLi4uKTsKIHZvaWQg
KnNjdHBfY3RsaW5wdXQoaW50LCBzdHJ1Y3Qgc29ja2FkZHIgKiwgdm9pZCAqKTsKIGludCBzY3Rw
X2N0bG91dHB1dChpbnQsIHN0cnVjdCBzb2NrZXQgKiwgaW50LCBpbnQsIHN0cnVjdCBtYnVmICoq
KTsKICNlbmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9u
IDwgOTAyMDAwCi12b2lkIHNjdHBfZHJhaW4gX19QKCh2b2lkKSk7Ci0jZWxzZQogdm9pZCBzY3Rw
X2RyYWluKHZvaWQpOwotI2VuZGlmCiAjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogdm9pZCBz
Y3RwX2luaXQodWludDE2X3QsCiAgICAgICAgICAgICAgICBpbnQgKCopKHZvaWQgKmFkZHIsIHZv
aWQgKmJ1ZmZlciwgc2l6ZV90IGxlbmd0aCwgdWludDhfdCB0b3MsIHVpbnQ4X3Qgc2V0X2RmKSwK
LSAgICAgICAgICAgICAgIHZvaWQgKCopKGNvbnN0IGNoYXIgKiwgLi4uKSk7Ci0jZWxpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA8IDkwMjAwMAotdm9pZCBzY3Rw
X2luaXQgX19QKCh2b2lkKSk7CisgICAgICAgICAgICAgICB2b2lkICgqKShjb25zdCBjaGFyICos
IC4uLiksIGludCBzdGFydF90aHJlYWRzKTsKICNlbGlmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAo
IWRlZmluZWQoQVBQTEVfTEVPUEFSRCkgJiYgIWRlZmluZWQoQVBQTEVfU05PV0xFT1BBUkQpICYm
IWRlZmluZWQoQVBQTEVfTElPTikgJiYgIWRlZmluZWQoQVBQTEVfTU9VTlRBSU5MSU9OKSkKIHZv
aWQgc2N0cF9pbml0KHN0cnVjdCBwcm90b3N3ICpwcCwgc3RydWN0IGRvbWFpbiAqZHApOwogI2Vs
c2UKQEAgLTQ2NCw1NSArNDExLDM3IEBAIHZvaWQgc2N0cF9pbml0KHZvaWQpOwogdm9pZCBzY3Rw
X25vdGlmeShzdHJ1Y3Qgc2N0cF9pbnBjYiAqLCBzdHJ1Y3Qgc2N0cF90Y2IgKiwgc3RydWN0IHNj
dHBfbmV0cyAqLAogICAgIHVpbnQ4X3QsIHVpbnQ4X3QsIHVpbnQxNl90LCB1aW50MzJfdCk7CiAj
ZW5kaWYKLSNpZiAhZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiAhZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIHZvaWQgc2N0cF9maW5pc2godm9pZCk7CiAj
ZW5kaWYKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKSB8
fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVm
aW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIGludCBzY3RwX2ZsdXNoKHN0
cnVjdCBzb2NrZXQgKiwgaW50KTsKICNlbmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYm
IF9fRnJlZUJTRF92ZXJzaW9uIDwgOTAyMDAwCi1pbnQgc2N0cF9zaHV0ZG93biBfX1AoKHN0cnVj
dCBzb2NrZXQgKikpOwotI2Vsc2UKIGludCBzY3RwX3NodXRkb3duKHN0cnVjdCBzb2NrZXQgKik7
Ci0jZW5kaWYKIGludCBzY3RwX2JpbmR4KHN0cnVjdCBzb2NrZXQgKiwgaW50LCBzdHJ1Y3Qgc29j
a2FkZHJfc3RvcmFnZSAqLAogCWludCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsKIC8qIGNhbid0IHVz
ZSBzY3RwX2Fzc29jX3QgaGVyZSAqLwogaW50IHNjdHBfcGVlbG9mZihzdHJ1Y3Qgc29ja2V0ICos
IHN0cnVjdCBzb2NrZXQgKiwgaW50LCBjYWRkcl90LCBpbnQgKik7Ci0jaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pCisj
aWYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIGludCBzY3RwX2luZ2V0YWRkcihzdHJ1Y3Qgc29j
a2V0ICosIHN0cnVjdCBzb2NrYWRkciAqKik7Ci0jZWxpZiBkZWZpbmVkKF9fUGFuZGFfXykKLWlu
dCBzY3RwX2luZ2V0YWRkcihzdHJ1Y3Qgc29ja2V0ICosIHN0cnVjdCBzb2NrYWRkciAqKTsKICNl
bHNlCiBpbnQgc2N0cF9pbmdldGFkZHIoc3RydWN0IHNvY2tldCAqLCBzdHJ1Y3QgbWJ1ZiAqKTsK
ICNlbmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8
fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBpbnQg
c2N0cF9wZWVyYWRkcihzdHJ1Y3Qgc29ja2V0ICosIHN0cnVjdCBzb2NrYWRkciAqKik7Ci0jZWxp
ZiBkZWZpbmVkKF9fUGFuZGFfXykKLWludCBzY3RwX3BlZXJhZGRyKHN0cnVjdCBzb2NrZXQgKiwg
c3RydWN0IHNvY2thZGRyICopOwogI2Vsc2UKIGludCBzY3RwX3BlZXJhZGRyKHN0cnVjdCBzb2Nr
ZXQgKiwgc3RydWN0IG1idWYgKik7CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMDAKLSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA3
MDAwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogaW50IHNjdHBfbGlzdGVuKHN0cnVjdCBzb2NrZXQgKiwgaW50LCBzdHJ1Y3QgdGhyZWFkICop
OwotI2Vsc2UKLWludCBzY3RwX2xpc3RlbihzdHJ1Y3Qgc29ja2V0ICosIHN0cnVjdCB0aHJlYWQg
Kik7Ci0jZW5kaWYKLSNlbGlmIGRlZmluZWQoX19XaW5kb3dzX18pCisjZWxpZiBkZWZpbmVkKF9X
SU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIGludCBzY3RwX2xpc3RlbihzdHJ1Y3Qg
c29ja2V0ICosIGludCwgUEtUSFJFQUQpOwogI2VsaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
aW50IHNjdHBfbGlzdGVuKHN0cnVjdCBzb2NrZXQgKiwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsKICNl
bHNlCiBpbnQgc2N0cF9saXN0ZW4oc3RydWN0IHNvY2tldCAqLCBzdHJ1Y3QgcHJvYyAqKTsKICNl
bmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBk
ZWZpbmVkKF9fV2luZG93c19fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBpbnQgc2N0cF9h
Y2NlcHQoc3RydWN0IHNvY2tldCAqLCBzdHJ1Y3Qgc29ja2FkZHIgKiopOwotI2VsaWYgZGVmaW5l
ZChfX1BhbmRhX18pCi1pbnQgc2N0cF9hY2NlcHQoc3RydWN0IHNvY2tldCAqLCBzdHJ1Y3Qgc29j
a2FkZHIgKiwgaW50ICosIHZvaWQgKiwgaW50ICopOwotI2Vsc2UKLWludCBzY3RwX2FjY2VwdChz
dHJ1Y3Qgc29ja2V0ICosIHN0cnVjdCBtYnVmICopOwotI2VuZGlmCiAKICNlbmRpZiAvKiBfS0VS
TkVMICovCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwdXRp
bC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3Jz
Y3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHB1dGlsLmMKb2xkIG1vZGUgMTAw
NjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCAxMTM0YjUwNjU3OGJiNzg5NDgxYzJmMzEyOGI4N2Nl
MTFlYmJmZmM0Li5mMDUwNjEwYWI1ZDIzZWU1ODA5NWY4NGQwNmY5ODVjY2ExMDA5MDAzCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwdXRpbC5jCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Vz
cnNjdHBsaWIvbmV0aW5ldC9zY3RwdXRpbC5jCkBAIC0zMiw5ICszMiw5IEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmZGVmIF9fRnJlZUJTRF9fCisjaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRl
IDxzeXMvY2RlZnMuaD4KLV9fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3Rw
dXRpbC5jIDMzNDI4NiAyMDE4LTA1LTI4IDEzOjMxOjQ3WiB0dWV4ZW4gJCIpOworX19GQlNESUQo
IiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHB1dGlsLmMgMzY0MjY4IDIwMjAtMDgtMTYg
MTE6NTA6MzdaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9v
cy5oPgpAQCAtNTgsNyArNTgsOCBAQCBfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGlu
ZXQvc2N0cHV0aWwuYyAzMzQyODYgMjAxOC0wNS0yOCAxMzozMTo0N1ogdHVleAogI2lmIGRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfY29uc3RhbnRzLmg+CiAj
ZW5kaWYKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX2tkdHJh
Y2UuaD4KICNpZiBkZWZpbmVkKElORVQ2KSB8fCBkZWZpbmVkKElORVQpCiAjaW5jbHVkZSA8bmV0
aW5ldC90Y3BfdmFyLmg+CiAjZW5kaWYKQEAgLTcwLDExICs3MSw3IEBAIF9fRkJTRElEKCIkRnJl
ZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwdXRpbC5jIDMzNDI4NiAyMDE4LTA1LTI4IDEzOjMx
OjQ3WiB0dWV4CiAjZW5kaWYKICNlbmRpZgogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCi0jZGVm
aW5lIEFQUExFX0ZJTEVfTk8gOAotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fV2luZG93c19fKQor
I2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmICFkZWZp
bmVkKFNDVFBfTE9DQUxfVFJBQ0VfQlVGKQogI2luY2x1ZGUgImV2ZW50cmFjZV9uZXRpbmV0Lmgi
CiAjaW5jbHVkZSAic2N0cHV0aWwudG1oIiAvKiB0aGlzIGlzIHRoZSBmaWxlIHRoYXQgd2lsbCBi
ZSBhdXRvIGdlbmVyYXRlZCAqLwpAQCAtMjczLDcgKzI3MCw3IEBAIHNjdHBfbG9nX21iKHN0cnVj
dCBtYnVmICptLCBpbnQgZnJvbSkKIAlzY3RwX2Nsb2cueC5tYi5kYXRhID0gU0NUUF9CVUZfQVQo
bSwgMCk7CiAJaWYgKFNDVFBfQlVGX0lTX0VYVEVOREVEKG0pKSB7CiAJCXNjdHBfY2xvZy54Lm1i
LmV4dCA9IFNDVFBfQlVGX0VYVEVORF9CQVNFKG0pOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKQor
I2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkvKiBB
UFBMRSBkb2VzIG5vdCB1c2UgYSByZWZfY250LCBidXQgYSBmb3J3YXJkL2JhY2t3YXJkIHJlZiBx
dWV1ZSAqLwogI2Vsc2UKIAkJc2N0cF9jbG9nLngubWIucmVmY250ID0gKHVpbnQ4X3QpKFNDVFBf
QlVGX0VYVEVORF9SRUZDTlQobSkpOwpAQCAtMzcxLDcgKzM2OCw3IEBAIHNjdHBfbG9nX2N3bmQo
c3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsIGludCBhdWdtZW50
LCB1aW50OF90CiAjZW5kaWYKIH0KIAotI2lmbmRlZiBfX0FQUExFX18KKyNpZiAhZGVmaW5lZChf
X0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiB2b2lkCiBzY3RwX2xvZ19sb2Nr
KHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgdWludDhfdCBm
cm9tKQogewpAQCAtMzg2LDcgKzM4Myw3IEBAIHNjdHBfbG9nX2xvY2soc3RydWN0IHNjdHBfaW5w
Y2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLCB1aW50OF90IGZyb20pCiAJCXNjdHBfY2xv
Zy54LmxvY2suc29jayA9ICh2b2lkICopIE5VTEw7CiAJfQogCXNjdHBfY2xvZy54LmxvY2suaW5w
ID0gKHZvaWQgKikgaW5wOwotI2lmIChkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0Rf
dmVyc2lvbiA+PSA1MDMwMDApIHx8IChkZWZpbmVkKF9fQVBQTEVfXykpCisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykKIAlpZiAoc3RjYikgewogCQlzY3RwX2Nsb2cueC5sb2NrLnRjYl9sb2NrID0g
bXR4X293bmVkKCZzdGNiLT50Y2JfbXR4KTsKIAl9IGVsc2UgewpAQCAtMzk5LDExICszOTYsNyBA
QCBzY3RwX2xvZ19sb2NrKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAq
c3RjYiwgdWludDhfdCBmcm9tKQogCQlzY3RwX2Nsb2cueC5sb2NrLmlucF9sb2NrID0gU0NUUF9M
T0NLX1VOS05PV047CiAJCXNjdHBfY2xvZy54LmxvY2suY3JlYXRlX2xvY2sgPSBTQ1RQX0xPQ0tf
VU5LTk9XTjsKIAl9Ci0jaWYgKGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJz
aW9uIDw9IDYwMjAwMCkKLQlzY3RwX2Nsb2cueC5sb2NrLmluZm9fbG9jayA9IG10eF9vd25lZCgm
U0NUUF9CQVNFX0lORk8oaXBpX2VwX210eCkpOwotI2Vsc2UKIAlzY3RwX2Nsb2cueC5sb2NrLmlu
Zm9fbG9jayA9IHJ3X3dvd25lZCgmU0NUUF9CQVNFX0lORk8oaXBpX2VwX210eCkpOwotI2VuZGlm
CiAJaWYgKGlucCAmJiAoaW5wLT5zY3RwX3NvY2tldCkpIHsKIAkJc2N0cF9jbG9nLngubG9jay5z
b2NrX2xvY2sgPSBtdHhfb3duZWQoJihpbnAtPnNjdHBfc29ja2V0LT5zb19yY3Yuc2JfbXR4KSk7
CiAJCXNjdHBfY2xvZy54LmxvY2suc29ja3JjdmJ1Zl9sb2NrID0gbXR4X293bmVkKCYoaW5wLT5z
Y3RwX3NvY2tldC0+c29fcmN2LnNiX210eCkpOwpAQCAtNTc2LDcgKzU2OSw3IEBAIHNjdHBfd2Fr
ZXVwX2xvZyhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQzMl90IHdha2VfY250LCBpbnQgZnJv
bSkKIH0KIAogdm9pZAotc2N0cF9sb2dfYmxvY2sodWludDhfdCBmcm9tLCBzdHJ1Y3Qgc2N0cF9h
c3NvY2lhdGlvbiAqYXNvYywgc2l6ZV90IHNlbmRsZW4pCitzY3RwX2xvZ19ibG9jayh1aW50OF90
IGZyb20sIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLCBzc2l6ZV90IHNlbmRsZW4pCiB7
CiAjaWYgZGVmaW5lZChTQ1RQX0xPQ0FMX1RSQUNFX0JVRikKIAlzdHJ1Y3Qgc2N0cF9jd25kX2xv
ZyBzY3RwX2Nsb2c7CkBAIC04MDIsNiArNzk1LDgwIEBAIHNjdHBfYXVkaXRfbG9nKHVpbnQ4X3Qg
ZXYsIHVpbnQ4X3QgZmQpCiAKICNlbmRpZgogCisvKgorICogVGhlIGNvbnZlcnNpb24gZnJvbSB0
aW1lIHRvIHRpY2tzIGFuZCB2aWNlIHZlcnNhIGlzIGRvbmUgYnkgcm91bmRpbmcKKyAqIHVwd2Fy
ZHMuIFRoaXMgd2F5IHdlIGNhbiB0ZXN0IGluIHRoZSBjb2RlIHRoZSB0aW1lIHRvIGJlIHBvc2l0
aXZlIGFuZAorICoga25vdyB0aGF0IHRoaXMgY29ycmVzcG9uZHMgdG8gYSBwb3NpdGl2ZSBudW1i
ZXIgb2YgdGlja3MuCisgKi8KKwordWludDMyX3QKK3NjdHBfbXNlY3NfdG9fdGlja3ModWludDMy
X3QgbXNlY3MpCit7CisJdWludDY0X3QgdGVtcDsKKwl1aW50MzJfdCB0aWNrczsKKworCWlmICho
eiA9PSAxMDAwKSB7CisJCXRpY2tzID0gbXNlY3M7CisJfSBlbHNlIHsKKwkJdGVtcCA9ICgoKHVp
bnQ2NF90KW1zZWNzICogaHopICsgOTk5KSAvIDEwMDA7CisJCWlmICh0ZW1wID4gVUlOVDMyX01B
WCkgeworCQkJdGlja3MgPSBVSU5UMzJfTUFYOworCQl9IGVsc2UgeworCQkJdGlja3MgPSAodWlu
dDMyX3QpdGVtcDsKKwkJfQorCX0KKwlyZXR1cm4gKHRpY2tzKTsKK30KKwordWludDMyX3QKK3Nj
dHBfdGlja3NfdG9fbXNlY3ModWludDMyX3QgdGlja3MpCit7CisJdWludDY0X3QgdGVtcDsKKwl1
aW50MzJfdCBtc2VjczsKKworCWlmIChoeiA9PSAxMDAwKSB7CisJCW1zZWNzID0gdGlja3M7CisJ
fSBlbHNlIHsKKwkJdGVtcCA9ICgoKHVpbnQ2NF90KXRpY2tzICogMTAwMCkgKyAoaHogLSAxKSkg
LyBoejsKKwkJaWYgKHRlbXAgPiBVSU5UMzJfTUFYKSB7CisJCQltc2VjcyA9IFVJTlQzMl9NQVg7
CisJCX0gZWxzZSB7CisJCQltc2VjcyA9ICh1aW50MzJfdCl0ZW1wOworCQl9CisJfQorCXJldHVy
biAobXNlY3MpOworfQorCit1aW50MzJfdAorc2N0cF9zZWNzX3RvX3RpY2tzKHVpbnQzMl90IHNl
Y3MpCit7CisJdWludDY0X3QgdGVtcDsKKwl1aW50MzJfdCB0aWNrczsKKworCXRlbXAgPSAodWlu
dDY0X3Qpc2VjcyAqIGh6OworCWlmICh0ZW1wID4gVUlOVDMyX01BWCkgeworCQl0aWNrcyA9IFVJ
TlQzMl9NQVg7CisJfSBlbHNlIHsKKwkJdGlja3MgPSAodWludDMyX3QpdGVtcDsKKwl9CisJcmV0
dXJuICh0aWNrcyk7Cit9CisKK3VpbnQzMl90CitzY3RwX3RpY2tzX3RvX3NlY3ModWludDMyX3Qg
dGlja3MpCit7CisJdWludDY0X3QgdGVtcDsKKwl1aW50MzJfdCBzZWNzOworCisJdGVtcCA9ICgo
dWludDY0X3QpdGlja3MgKyAoaHogLSAxKSkgLyBoejsKKwlpZiAodGVtcCA+IFVJTlQzMl9NQVgp
IHsKKwkJc2VjcyA9IFVJTlQzMl9NQVg7CisJfSBlbHNlIHsKKwkJc2VjcyA9ICh1aW50MzJfdCl0
ZW1wOworCX0KKwlyZXR1cm4gKHNlY3MpOworfQorCiAvKgogICogc2N0cF9zdG9wX3RpbWVyc19m
b3Jfc2h1dGRvd24oKSBzaG91bGQgYmUgY2FsbGVkCiAgKiB3aGVuIGVudGVyaW5nIHRoZSBTSFVU
RE9XTl9TRU5UIG9yIFNIVVRET1dOX0FDS19TRU5UCkBAIC04MTAsMTkgKzg3Nyw2NiBAQCBzY3Rw
X2F1ZGl0X2xvZyh1aW50OF90IGV2LCB1aW50OF90IGZkKQogdm9pZAogc2N0cF9zdG9wX3RpbWVy
c19mb3Jfc2h1dGRvd24oc3RydWN0IHNjdHBfdGNiICpzdGNiKQogewotCXN0cnVjdCBzY3RwX2Fz
c29jaWF0aW9uICphc29jOworCXN0cnVjdCBzY3RwX2lucGNiICppbnA7CiAJc3RydWN0IHNjdHBf
bmV0cyAqbmV0OwogCi0JYXNvYyA9ICZzdGNiLT5hc29jOworCWlucCA9IHN0Y2ItPnNjdHBfZXA7
CisKKwlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX1JFQ1YsIGlucCwgc3RjYiwgTlVM
TCwKKwkgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBVVElMICsgU0NUUF9MT0NfMTIpOwor
CXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfU1RSUkVTRVQsIGlucCwgc3RjYiwgTlVM
TCwKKwkgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBVVElMICsgU0NUUF9MT0NfMTMpOwor
CXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfQVNDT05GLCBpbnAsIHN0Y2IsIE5VTEws
CisJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQVVRJTCArIFNDVFBfTE9DXzE0KTsKKwlz
Y3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX0FVVE9DTE9TRSwgaW5wLCBzdGNiLCBOVUxM
LAorCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUFVUSUwgKyBTQ1RQX0xPQ18xNSk7CisJ
VEFJTFFfRk9SRUFDSChuZXQsICZzdGNiLT5hc29jLm5ldHMsIHNjdHBfbmV4dCkgeworCQlzY3Rw
X3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX1BBVEhNVFVSQUlTRSwgaW5wLCBzdGNiLCBuZXQs
CisJCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUFVUSUwgKyBTQ1RQX0xPQ18xNik7CisJ
CXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfSEVBUlRCRUFULCBpbnAsIHN0Y2IsIG5l
dCwKKwkJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQVVRJTCArIFNDVFBfTE9DXzE3KTsK
Kwl9Cit9CiAKLQkodm9pZClTQ1RQX09TX1RJTUVSX1NUT1AoJmFzb2MtPmRhY2tfdGltZXIudGlt
ZXIpOwotCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmYXNvYy0+c3RycmVzZXRfdGltZXIudGlt
ZXIpOwotCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmYXNvYy0+YXNjb25mX3RpbWVyLnRpbWVy
KTsKLQkodm9pZClTQ1RQX09TX1RJTUVSX1NUT1AoJmFzb2MtPmF1dG9jbG9zZV90aW1lci50aW1l
cik7Ci0JKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCZhc29jLT5kZWxheWVkX2V2ZW50X3RpbWVy
LnRpbWVyKTsKLQlUQUlMUV9GT1JFQUNIKG5ldCwgJmFzb2MtPm5ldHMsIHNjdHBfbmV4dCkgewot
CQkodm9pZClTQ1RQX09TX1RJTUVSX1NUT1AoJm5ldC0+cG10dV90aW1lci50aW1lcik7Ci0JCSh2
b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmbmV0LT5oYl90aW1lci50aW1lcik7Cit2b2lkCitzY3Rw
X3N0b3BfYXNzb2NpYXRpb25fdGltZXJzKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgYm9vbCBzdG9w
X2Fzc29jX2tpbGxfdGltZXIpCit7CisJc3RydWN0IHNjdHBfaW5wY2IgKmlucDsKKwlzdHJ1Y3Qg
c2N0cF9uZXRzICpuZXQ7CisKKwlpbnAgPSBzdGNiLT5zY3RwX2VwOworCXNjdHBfdGltZXJfc3Rv
cChTQ1RQX1RJTUVSX1RZUEVfUkVDViwgaW5wLCBzdGNiLCBOVUxMLAorCSAgICAgICAgICAgICAg
ICBTQ1RQX0ZST01fU0NUUFVUSUwgKyBTQ1RQX0xPQ18xOCk7CisJc2N0cF90aW1lcl9zdG9wKFND
VFBfVElNRVJfVFlQRV9TVFJSRVNFVCwgaW5wLCBzdGNiLCBOVUxMLAorCSAgICAgICAgICAgICAg
ICBTQ1RQX0ZST01fU0NUUFVUSUwgKyBTQ1RQX0xPQ18xOSk7CisJaWYgKHN0b3BfYXNzb2Nfa2ls
bF90aW1lcikgeworCQlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX0FTT0NLSUxMLCBp
bnAsIHN0Y2IsIE5VTEwsCisJCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUFVUSUwgKyBT
Q1RQX0xPQ18yMCk7CisJfQorCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfQVNDT05G
LCBpbnAsIHN0Y2IsIE5VTEwsCisJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQVVRJTCAr
IFNDVFBfTE9DXzIxKTsKKwlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX0FVVE9DTE9T
RSwgaW5wLCBzdGNiLCBOVUxMLAorCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUFVUSUwg
KyBTQ1RQX0xPQ18yMik7CisJc2N0cF90aW1lcl9zdG9wKFNDVFBfVElNRVJfVFlQRV9TSFVURE9X
TkdVQVJELCBpbnAsIHN0Y2IsIE5VTEwsCisJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQ
VVRJTCArIFNDVFBfTE9DXzIzKTsKKwkvKiBNb2JpbGl0eSBhZGFwdGF0aW9uICovCisJc2N0cF90
aW1lcl9zdG9wKFNDVFBfVElNRVJfVFlQRV9QUklNX0RFTEVURUQsIGlucCwgc3RjYiwgTlVMTCwK
KwkgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBVVElMICsgU0NUUF9MT0NfMjQpOworCVRB
SUxRX0ZPUkVBQ0gobmV0LCAmc3RjYi0+YXNvYy5uZXRzLCBzY3RwX25leHQpIHsKKwkJc2N0cF90
aW1lcl9zdG9wKFNDVFBfVElNRVJfVFlQRV9TRU5ELCBpbnAsIHN0Y2IsIG5ldCwKKwkJICAgICAg
ICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQVVRJTCArIFNDVFBfTE9DXzI1KTsKKwkJc2N0cF90aW1l
cl9zdG9wKFNDVFBfVElNRVJfVFlQRV9JTklULCBpbnAsIHN0Y2IsIG5ldCwKKwkJICAgICAgICAg
ICAgICAgIFNDVFBfRlJPTV9TQ1RQVVRJTCArIFNDVFBfTE9DXzI2KTsKKwkJc2N0cF90aW1lcl9z
dG9wKFNDVFBfVElNRVJfVFlQRV9TSFVURE9XTiwgaW5wLCBzdGNiLCBuZXQsCisJCSAgICAgICAg
ICAgICAgICBTQ1RQX0ZST01fU0NUUFVUSUwgKyBTQ1RQX0xPQ18yNyk7CisJCXNjdHBfdGltZXJf
c3RvcChTQ1RQX1RJTUVSX1RZUEVfQ09PS0lFLCBpbnAsIHN0Y2IsIG5ldCwKKwkJICAgICAgICAg
ICAgICAgIFNDVFBfRlJPTV9TQ1RQVVRJTCArIFNDVFBfTE9DXzI4KTsKKwkJc2N0cF90aW1lcl9z
dG9wKFNDVFBfVElNRVJfVFlQRV9TSFVURE9XTkFDSywgaW5wLCBzdGNiLCBuZXQsCisJCSAgICAg
ICAgICAgICAgICBTQ1RQX0ZST01fU0NUUFVUSUwgKyBTQ1RQX0xPQ18yOSk7CisJCXNjdHBfdGlt
ZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfUEFUSE1UVVJBSVNFLCBpbnAsIHN0Y2IsIG5ldCwKKwkJ
ICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQVVRJTCArIFNDVFBfTE9DXzMwKTsKKwkJc2N0
cF90aW1lcl9zdG9wKFNDVFBfVElNRVJfVFlQRV9IRUFSVEJFQVQsIGlucCwgc3RjYiwgbmV0LAor
CQkgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBVVElMICsgU0NUUF9MT0NfMzEpOwogCX0K
IH0KIApAQCAtODQ1LDcgKzk1OSw3IEBAIHN0YXRpYyB1aW50MzJfdCBzY3RwX210dV9zaXplc1td
ID0gewogCTIwNDgsCiAJNDM1MiwKIAk0NDY0LAotCTgxNjYsCisJODE2OCwKIAkxNzkxMiwKIAkz
MjAwMCwKIAk2NTUzMgpAQCAtOTEyLDkgKzEwMjYsMTUgQEAgc2N0cF9maWxsX3JhbmRvbV9zdG9y
ZShzdHJ1Y3Qgc2N0cF9wY2IgKm0pCiAJICogbnVtYmVycywgYnV0IHRoYXRzIG9rIHRvbyBzaW5j
ZSB0aGF0IGlzIHJhbmRvbSBhcyB3ZWxsIDotPgogCSAqLwogCW0tPnN0b3JlX2F0ID0gMDsKKyNp
ZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pICYmIGRlZmluZWQoRlVaWklOR19CVUlMRF9NT0RFX1VO
U0FGRV9GT1JfUFJPRFVDVElPTikKKwlmb3IgKGludCBpID0gMDsgaSA8IChpbnQpIChzaXplb2Yo
bS0+cmFuZG9tX3N0b3JlKSAvIHNpemVvZihtLT5yYW5kb21fc3RvcmVbMF0pKTsgaSsrKSB7CisJ
CW0tPnJhbmRvbV9zdG9yZVtpXSA9ICh1aW50OF90KSByYW5kKCk7CisJfQorI2Vsc2UKIAkodm9p
ZClzY3RwX2htYWMoU0NUUF9ITUFDLCAodWludDhfdCAqKW0tPnJhbmRvbV9udW1iZXJzLAogCSAg
ICBzaXplb2YobS0+cmFuZG9tX251bWJlcnMpLCAodWludDhfdCAqKSZtLT5yYW5kb21fY291bnRl
ciwKIAkgICAgc2l6ZW9mKG0tPnJhbmRvbV9jb3VudGVyKSwgKHVpbnQ4X3QgKiltLT5yYW5kb21f
c3RvcmUpOworI2VuZGlmCiAJbS0+cmFuZG9tX2NvdW50ZXIrKzsKIH0KIApAQCAtMTA0NCwxNSAr
MTE2NCwxNCBAQCBzY3RwX2luaXRfYXNvYyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qg
c2N0cF90Y2IgKnN0Y2IsCiAKIAlhc29jID0gJnN0Y2ItPmFzb2M7CiAJLyogaW5pdCBhbGwgdmFy
aWFibGVzIHRvIGEga25vd24gdmFsdWUuICovCi0JU0NUUF9TRVRfU1RBVEUoJnN0Y2ItPmFzb2Ms
IFNDVFBfU1RBVEVfSU5VU0UpOworCVNDVFBfU0VUX1NUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfSU5V
U0UpOwogCWFzb2MtPm1heF9idXJzdCA9IGlucC0+c2N0cF9lcC5tYXhfYnVyc3Q7CiAJYXNvYy0+
ZnJfbWF4X2J1cnN0ID0gaW5wLT5zY3RwX2VwLmZyX21heF9idXJzdDsKLQlhc29jLT5oZWFydF9i
ZWF0X2RlbGF5ID0gVElDS1NfVE9fTVNFQyhpbnAtPnNjdHBfZXAuc2N0cF90aW1lb3V0dGlja3Nb
U0NUUF9USU1FUl9IRUFSVEJFQVRdKTsKKwlhc29jLT5oZWFydF9iZWF0X2RlbGF5ID0gc2N0cF90
aWNrc190b19tc2VjcyhpbnAtPnNjdHBfZXAuc2N0cF90aW1lb3V0dGlja3NbU0NUUF9USU1FUl9I
RUFSVEJFQVRdKTsKIAlhc29jLT5jb29raWVfbGlmZSA9IGlucC0+c2N0cF9lcC5kZWZfY29va2ll
X2xpZmU7CiAJYXNvYy0+c2N0cF9jbXRfb25fb2ZmID0gaW5wLT5zY3RwX2NtdF9vbl9vZmY7CiAJ
YXNvYy0+ZWNuX3N1cHBvcnRlZCA9IGlucC0+ZWNuX3N1cHBvcnRlZDsKIAlhc29jLT5wcnNjdHBf
c3VwcG9ydGVkID0gaW5wLT5wcnNjdHBfc3VwcG9ydGVkOwotCWFzb2MtPmlkYXRhX3N1cHBvcnRl
ZCA9IGlucC0+aWRhdGFfc3VwcG9ydGVkOwogCWFzb2MtPmF1dGhfc3VwcG9ydGVkID0gaW5wLT5h
dXRoX3N1cHBvcnRlZDsKIAlhc29jLT5hc2NvbmZfc3VwcG9ydGVkID0gaW5wLT5hc2NvbmZfc3Vw
cG9ydGVkOwogCWFzb2MtPnJlY29uZmlnX3N1cHBvcnRlZCA9IGlucC0+cmVjb25maWdfc3VwcG9y
dGVkOwpAQCAtMTEzMyw3ICsxMjUyLDcgQEAgc2N0cF9pbml0X2Fzb2Moc3RydWN0IHNjdHBfaW5w
Y2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCWFzb2MtPmNvbnRleHQgPSBpbnAtPnNj
dHBfY29udGV4dDsKIAlhc29jLT5sb2NhbF9zdHJyZXNldF9zdXBwb3J0ID0gaW5wLT5sb2NhbF9z
dHJyZXNldF9zdXBwb3J0OwogCWFzb2MtPmRlZl9zZW5kID0gaW5wLT5kZWZfc2VuZDsKLQlhc29j
LT5kZWxheWVkX2FjayA9IFRJQ0tTX1RPX01TRUMoaW5wLT5zY3RwX2VwLnNjdHBfdGltZW91dHRp
Y2tzW1NDVFBfVElNRVJfUkVDVl0pOworCWFzb2MtPmRlbGF5ZWRfYWNrID0gc2N0cF90aWNrc190
b19tc2VjcyhpbnAtPnNjdHBfZXAuc2N0cF90aW1lb3V0dGlja3NbU0NUUF9USU1FUl9SRUNWXSk7
CiAJYXNvYy0+c2Fja19mcmVxID0gaW5wLT5zY3RwX2VwLnNjdHBfc2Fja19mcmVxOwogCWFzb2Mt
PnByX3NjdHBfY250ID0gMDsKIAlhc29jLT50b3RhbF9vdXRwdXRfcXVldWVfc2l6ZSA9IDA7CkBA
IC0xMzY1LDExICsxNDg0LDE3IEBAIHNjdHBfZXhwYW5kX21hcHBpbmdfYXJyYXkoc3RydWN0IHNj
dHBfYXNzb2NpYXRpb24gKmFzb2MsIHVpbnQzMl90IG5lZWRlZCkKIHN0YXRpYyB2b2lkCiBzY3Rw
X2l0ZXJhdG9yX3dvcmsoc3RydWN0IHNjdHBfaXRlcmF0b3IgKml0KQogeworI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJc3RydWN0IGVwb2NoX3Ry
YWNrZXIgZXQ7CisjZW5kaWYKKwlzdHJ1Y3Qgc2N0cF9pbnBjYiAqdGlucDsKIAlpbnQgaXRlcmF0
aW9uX2NvdW50ID0gMDsKIAlpbnQgaW5wX3NraXAgPSAwOwogCWludCBmaXJzdF9pbiA9IDE7Ci0J
c3RydWN0IHNjdHBfaW5wY2IgKnRpbnA7CiAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCU5FVF9FUE9DSF9FTlRFUihldCk7CisjZW5kaWYKIAlT
Q1RQX0lOUF9JTkZPX1JMT0NLKCk7CiAJU0NUUF9JVEVSQVRPUl9MT0NLKCk7CiAJc2N0cF9pdF9j
dGwuY3VyX2l0ID0gaXQ7CkBAIC0xMzg3LDYgKzE1MTIsOSBAQCBkb25lX3dpdGhfaXRlcmF0b3I6
CiAJCQkoKml0LT5mdW5jdGlvbl9hdGVuZCkgKGl0LT5wb2ludGVyLCBpdC0+dmFsKTsKIAkJfQog
CQlTQ1RQX0ZSRUUoaXQsIFNDVFBfTV9JVEVSKTsKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQlORVRfRVBPQ0hfRVhJVChldCk7CisjZW5kaWYK
IAkJcmV0dXJuOwogCX0KIHNlbGVjdF9hX25ld19lcDoKQEAgLTE0MDYsNiArMTUzNCw3IEBAIHNl
bGVjdF9hX25ld19lcDoKIAkJfQogCQl0aW5wID0gaXQtPmlucDsKIAkJaXQtPmlucCA9IExJU1Rf
TkVYVChpdC0+aW5wLCBzY3RwX2xpc3QpOworCQlpdC0+c3RjYiA9IE5VTEw7CiAJCVNDVFBfSU5Q
X1JVTkxPQ0sodGlucCk7CiAJCWlmIChpdC0+aW5wID09IE5VTEwpIHsKIAkJCWdvdG8gZG9uZV93
aXRoX2l0ZXJhdG9yOwpAQCAtMTQ1NCw3ICsxNTgzLDcgQEAgc2VsZWN0X2FfbmV3X2VwOgogCQkJ
CS8qIFdlIHdvbid0IGJlIHN0YXlpbmcgaGVyZSAqLwogCQkJCVNDVFBfSU5QX0RFQ1JfUkVGKGl0
LT5pbnApOwogCQkJCWF0b21pY19hZGRfaW50KCZpdC0+c3RjYi0+YXNvYy5yZWZjbnQsIC0xKTsK
LSNpZiAhZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiAhKGRlZmluZWQoX19GcmVlQlNEX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pKQogCQkJCWlmIChzY3RwX2l0X2N0bC5pdGVyYXRvcl9m
bGFncyAmCiAJCQkJICAgU0NUUF9JVEVSQVRPUl9NVVNUX0VYSVQpIHsKIAkJCQkJZ290byBkb25l
X3dpdGhfaXRlcmF0b3I7CkBAIC0xNDgxLDYgKzE2MTAsOSBAQCBzZWxlY3RfYV9uZXdfZXA6CiAJ
CQlhdG9taWNfYWRkX2ludCgmaXQtPnN0Y2ItPmFzb2MucmVmY250LCAtMSk7CiAJCQlpdGVyYXRp
b25fY291bnQgPSAwOwogCQl9CisJCUtBU1NFUlQoaXQtPmlucCA9PSBpdC0+c3RjYi0+c2N0cF9l
cCwKKwkJICAgICAgICAoIiVzOiBzdGNiICVwIGRvZXMgbm90IGJlbG9uZyB0byBpbnAgJXAsIGJ1
dCBpbnAgJXAiLAorCQkgICAgICAgICBfX2Z1bmNfXywgaXQtPnN0Y2IsIGl0LT5pbnAsIGl0LT5z
dGNiLT5zY3RwX2VwKSk7CiAKIAkJLyogcnVuIGZ1bmN0aW9uIG9uIHRoaXMgb25lICovCiAJCSgq
aXQtPmZ1bmN0aW9uX2Fzc29jKShpdC0+aW5wLCBpdC0+c3RjYiwgaXQtPnBvaW50ZXIsIGl0LT52
YWwpOwpAQCAtMTUxMyw2ICsxNjQ1LDcgQEAgc2VsZWN0X2FfbmV3X2VwOgogCX0gZWxzZSB7CiAJ
CWl0LT5pbnAgPSBMSVNUX05FWFQoaXQtPmlucCwgc2N0cF9saXN0KTsKIAl9CisJaXQtPnN0Y2Ig
PSBOVUxMOwogCWlmIChpdC0+aW5wID09IE5VTEwpIHsKIAkJZ290byBkb25lX3dpdGhfaXRlcmF0
b3I7CiAJfQpAQCAtMTUyMiwyNCArMTY1NSwyMyBAQCBzZWxlY3RfYV9uZXdfZXA6CiB2b2lkCiBz
Y3RwX2l0ZXJhdG9yX3dvcmtlcih2b2lkKQogewotCXN0cnVjdCBzY3RwX2l0ZXJhdG9yICppdCwg
Km5pdDsKKwlzdHJ1Y3Qgc2N0cF9pdGVyYXRvciAqaXQ7CiAKIAkvKiBUaGlzIGZ1bmN0aW9uIGlz
IGNhbGxlZCB3aXRoIHRoZSBXUSBsb2NrIGluIHBsYWNlICovCi0KIAlzY3RwX2l0X2N0bC5pdGVy
YXRvcl9ydW5uaW5nID0gMTsKLQlUQUlMUV9GT1JFQUNIX1NBRkUoaXQsICZzY3RwX2l0X2N0bC5p
dGVyYXRvcmhlYWQsIHNjdHBfbnh0X2l0ciwgbml0KSB7CisJd2hpbGUgKChpdCA9IFRBSUxRX0ZJ
UlNUKCZzY3RwX2l0X2N0bC5pdGVyYXRvcmhlYWQpKSAhPSBOVUxMKSB7CiAJCS8qIG5vdyBsZXRz
IHdvcmsgb24gdGhpcyBvbmUgKi8KIAkJVEFJTFFfUkVNT1ZFKCZzY3RwX2l0X2N0bC5pdGVyYXRv
cmhlYWQsIGl0LCBzY3RwX254dF9pdHIpOwogCQlTQ1RQX0lQSV9JVEVSQVRPUl9XUV9VTkxPQ0so
KTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDEw
MDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
CQlDVVJWTkVUX1NFVChpdC0+dm4pOwogI2VuZGlmCiAJCXNjdHBfaXRlcmF0b3Jfd29yayhpdCk7
Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAxMDAw
CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJ
Q1VSVk5FVF9SRVNUT1JFKCk7CiAjZW5kaWYKIAkJU0NUUF9JUElfSVRFUkFUT1JfV1FfTE9DSygp
OwotI2lmICFkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmICFkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlpZiAoc2N0cF9pdF9jdGwuaXRlcmF0b3JfZmxh
Z3MgJiBTQ1RQX0lURVJBVE9SX01VU1RfRVhJVCkgewogCQkJYnJlYWs7CiAJCX0KQEAgLTE2MDUs
MjggKzE3MzcsNjggQEAgc2N0cF9oYW5kbGVfYWRkcl93cSh2b2lkKQogCX0KIH0KIAorLyotCisg
KiBUaGUgZm9sbG93aW5nIHRhYmxlIHNob3dzIHdoaWNoIHBvaW50ZXJzIGZvciB0aGUgaW5wLCBz
dGNiLCBvciBuZXQgYXJlCisgKiBzdG9yZWQgZm9yIGVhY2ggdGltZXIgYWZ0ZXIgaXQgd2FzIHN0
YXJ0ZWQuCisgKgorICp8TmFtZSAgICAgICAgICAgICAgICAgICAgICAgICB8VGltZXIgICAgICAg
ICAgICAgICAgICAgICAgICB8aW5wIHxzdGNifG5ldCB8CisgKnwtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tfC0tLS18LS0tLXwK
KyAqfFNDVFBfVElNRVJfVFlQRV9TRU5EICAgICAgICAgfG5ldC0+cnh0X3RpbWVyICAgICAgICAg
ICAgICAgfFllcyB8WWVzIHxZZXMgfAorICp8U0NUUF9USU1FUl9UWVBFX0lOSVQgICAgICAgICB8
bmV0LT5yeHRfdGltZXIgICAgICAgICAgICAgICB8WWVzIHxZZXMgfFllcyB8CisgKnxTQ1RQX1RJ
TUVSX1RZUEVfUkVDViAgICAgICAgIHxzdGNiLT5hc29jLmRhY2tfdGltZXIgICAgICAgIHxZZXMg
fFllcyB8Tm8gIHwKKyAqfFNDVFBfVElNRVJfVFlQRV9TSFVURE9XTiAgICAgfG5ldC0+cnh0X3Rp
bWVyICAgICAgICAgICAgICAgfFllcyB8WWVzIHxZZXMgfAorICp8U0NUUF9USU1FUl9UWVBFX0hF
QVJUQkVBVCAgICB8bmV0LT5oYl90aW1lciAgICAgICAgICAgICAgICB8WWVzIHxZZXMgfFllcyB8
CisgKnxTQ1RQX1RJTUVSX1RZUEVfQ09PS0lFICAgICAgIHxuZXQtPnJ4dF90aW1lciAgICAgICAg
ICAgICAgIHxZZXMgfFllcyB8WWVzIHwKKyAqfFNDVFBfVElNRVJfVFlQRV9ORVdDT09LSUUgICAg
fGlucC0+c2N0cF9lcC5zaWduYXR1cmVfY2hhbmdlfFllcyB8Tm8gIHxObyAgfAorICp8U0NUUF9U
SU1FUl9UWVBFX1BBVEhNVFVSQUlTRSB8bmV0LT5wbXR1X3RpbWVyICAgICAgICAgICAgICB8WWVz
IHxZZXMgfFllcyB8CisgKnxTQ1RQX1RJTUVSX1RZUEVfU0hVVERPV05BQ0sgIHxuZXQtPnJ4dF90
aW1lciAgICAgICAgICAgICAgIHxZZXMgfFllcyB8WWVzIHwKKyAqfFNDVFBfVElNRVJfVFlQRV9B
U0NPTkYgICAgICAgfHN0Y2ItPmFzb2MuYXNjb25mX3RpbWVyICAgICAgfFllcyB8WWVzIHxZZXMg
fAorICp8U0NUUF9USU1FUl9UWVBFX1NIVVRET1dOR1VBUkR8c3RjYi0+YXNvYy5zaHV0X2d1YXJk
X3RpbWVyICB8WWVzIHxZZXMgfE5vICB8CisgKnxTQ1RQX1RJTUVSX1RZUEVfQVVUT0NMT1NFICAg
IHxzdGNiLT5hc29jLmF1dG9jbG9zZV90aW1lciAgIHxZZXMgfFllcyB8Tm8gIHwKKyAqfFNDVFBf
VElNRVJfVFlQRV9TVFJSRVNFVCAgICAgfHN0Y2ItPmFzb2Muc3RycmVzZXRfdGltZXIgICAgfFll
cyB8WWVzIHxObyAgfAorICp8U0NUUF9USU1FUl9UWVBFX0lOUEtJTEwgICAgICB8aW5wLT5zY3Rw
X2VwLnNpZ25hdHVyZV9jaGFuZ2V8WWVzIHxObyAgfE5vICB8CisgKnxTQ1RQX1RJTUVSX1RZUEVf
QVNPQ0tJTEwgICAgIHxzdGNiLT5hc29jLnN0cnJlc2V0X3RpbWVyICAgIHxZZXMgfFllcyB8Tm8g
IHwKKyAqfFNDVFBfVElNRVJfVFlQRV9BRERSX1dRICAgICAgfFNDVFBfQkFTRV9JTkZPKGFkZHJf
d3FfdGltZXIpfE5vICB8Tm8gIHxObyAgfAorICp8U0NUUF9USU1FUl9UWVBFX1BSSU1fREVMRVRF
RCB8c3RjYi0+YXNvYy5kZWxldGVfcHJpbV90aW1lciB8WWVzIHxZZXMgfE5vICB8CisgKi8KKwog
dm9pZAogc2N0cF90aW1lb3V0X2hhbmRsZXIodm9pZCAqdCkKIHsKKyNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCXN0cnVjdCBlcG9jaF90cmFja2Vy
IGV0OworI2VuZGlmCisJc3RydWN0IHRpbWV2YWwgdHY7CiAJc3RydWN0IHNjdHBfaW5wY2IgKmlu
cDsKIAlzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2I7CiAJc3RydWN0IHNjdHBfbmV0cyAqbmV0OwogCXN0
cnVjdCBzY3RwX3RpbWVyICp0bXI7CiAJc3RydWN0IG1idWYgKm9wX2VycjsKLSNpZiBkZWZpbmVk
KF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVk
KF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzdHJ1Y3Qgc29ja2V0ICpz
bzsKICNlbmRpZgotCWludCBkaWRfb3V0cHV0OworI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
KwlzdHJ1Y3Qgc29ja2V0ICp1cGNhbGxfc29ja2V0ID0gTlVMTDsKKyNlbmRpZgogCWludCB0eXBl
OworCWludCBpLCBzZWNyZXQ7CisJYm9vbCBkaWRfb3V0cHV0LCByZWxlYXNlZF9hc29jX3JlZmVy
ZW5jZTsKIAorCS8qCisJICogSWYgaW5wLCBzdGNiIG9yIG5ldCBhcmUgbm90IE5VTEwsIHRoZW4g
cmVmZXJlbmNlcyB0byB0aGVzZSB3ZXJlCisJICogYWRkZWQgd2hlbiB0aGUgdGltZXIgd2FzIHN0
YXJ0ZWQsIGFuZCBtdXN0IGJlIHJlbGVhc2VkIGJlZm9yZSB0aGlzCisJICogZnVuY3Rpb24gcmV0
dXJucy4KKwkgKi8KIAl0bXIgPSAoc3RydWN0IHNjdHBfdGltZXIgKil0OwogCWlucCA9IChzdHJ1
Y3Qgc2N0cF9pbnBjYiAqKXRtci0+ZXA7CiAJc3RjYiA9IChzdHJ1Y3Qgc2N0cF90Y2IgKil0bXIt
PnRjYjsKIAluZXQgPSAoc3RydWN0IHNjdHBfbmV0cyAqKXRtci0+bmV0OwotI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMTAwMAorI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJQ1VSVk5FVF9TRVQoKHN0
cnVjdCB2bmV0ICopdG1yLT52bmV0KTsKKwlORVRfRVBPQ0hfRU5URVIoZXQpOwogI2VuZGlmCiAJ
ZGlkX291dHB1dCA9IDE7CisJcmVsZWFzZWRfYXNvY19yZWZlcmVuY2UgPSBmYWxzZTsKIAogI2lm
ZGVmIFNDVFBfQVVESVRJTkdfRU5BQkxFRAogCXNjdHBfYXVkaXRfbG9nKDB4RjAsICh1aW50OF90
KSB0bXItPnR5cGUpOwpAQCAtMTYzNCwxMzUgKzE4MDYsODcgQEAgc2N0cF90aW1lb3V0X2hhbmRs
ZXIodm9pZCAqdCkKICNlbmRpZgogCiAJLyogc2FuaXR5IGNoZWNrcy4uLiAqLwotCWlmICh0bXIt
PnNlbGYgIT0gKHZvaWQgKil0bXIpIHsKLQkJLyoKLQkJICogU0NUUF9QUklOVEYoIlN0YWxlIFND
VFAgdGltZXIgZmlyZWQgKCVwKSwgaWdub3JpbmcuLi5cbiIsCi0JCSAqICAgICAgICAgICAgICh2
b2lkICopdG1yKTsKLQkJICovCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNE
X3ZlcnNpb24gPj0gODAxMDAwCi0JCUNVUlZORVRfUkVTVE9SRSgpOwotI2VuZGlmCi0JCXJldHVy
bjsKLQl9CisJS0FTU0VSVCh0bXItPnNlbGYgPT0gTlVMTCB8fCB0bXItPnNlbGYgPT0gdG1yLAor
CSAgICAgICAgKCJzY3RwX3RpbWVvdXRfaGFuZGxlcjogdG1yLT5zZWxmIGNvcnJ1cHRlZCIpKTsK
KwlLQVNTRVJUKFNDVFBfSVNfVElNRVJfVFlQRV9WQUxJRCh0bXItPnR5cGUpLAorCSAgICAgICAg
KCJzY3RwX3RpbWVvdXRfaGFuZGxlcjogaW52YWxpZCB0aW1lciB0eXBlICVkIiwgdG1yLT50eXBl
KSk7CisJdHlwZSA9IHRtci0+dHlwZTsKKwlLQVNTRVJUKHN0Y2IgPT0gTlVMTCB8fCBzdGNiLT5z
Y3RwX2VwID09IGlucCwKKwkgICAgICAgICgic2N0cF90aW1lb3V0X2hhbmRsZXIgb2YgdHlwZSAl
ZDogaW5wID0gJXAsIHN0Y2ItPnNjdHBfZXAgJXAiLAorCSAgICAgICAgIHR5cGUsIHN0Y2IsIHN0
Y2ItPnNjdHBfZXApKTsKIAl0bXItPnN0b3BwZWRfZnJvbSA9IDB4YTAwMTsKLQlpZiAoIVNDVFBf
SVNfVElNRVJfVFlQRV9WQUxJRCh0bXItPnR5cGUpKSB7Ci0JCS8qCi0JCSAqIFNDVFBfUFJJTlRG
KCJTQ1RQIHRpbWVyIGZpcmVkIHdpdGggaW52YWxpZCB0eXBlOiAweCV4XG4iLAotCQkgKiB0bXIt
PnR5cGUpOwotCQkgKi8KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVy
c2lvbiA+PSA4MDEwMDAKLQkJQ1VSVk5FVF9SRVNUT1JFKCk7Ci0jZW5kaWYKLQkJcmV0dXJuOwor
CWlmICgoc3RjYiAhPSBOVUxMKSAmJiAoc3RjYi0+YXNvYy5zdGF0ZSA9PSBTQ1RQX1NUQVRFX0VN
UFRZKSkgeworCQlTQ1RQREJHKFNDVFBfREVCVUdfVElNRVIyLAorCQkgICAgICAgICJUaW1lciB0
eXBlICVkIGhhbmRsZXIgZXhpdGluZyBkdWUgdG8gQ0xPU0VEIGFzc29jaWF0aW9uLlxuIiwKKwkJ
ICAgICAgICB0eXBlKTsKKwkJZ290byBvdXRfZGVjcjsKIAl9CiAJdG1yLT5zdG9wcGVkX2Zyb20g
PSAweGEwMDI7Ci0JaWYgKCh0bXItPnR5cGUgIT0gU0NUUF9USU1FUl9UWVBFX0FERFJfV1EpICYm
IChpbnAgPT0gTlVMTCkpIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0Rf
dmVyc2lvbiA+PSA4MDEwMDAKLQkJQ1VSVk5FVF9SRVNUT1JFKCk7Ci0jZW5kaWYKLQkJcmV0dXJu
OwotCX0KLQkvKiBpZiB0aGlzIGlzIGFuIGl0ZXJhdG9yIHRpbWVvdXQsIGdldCB0aGUgc3RydWN0
IGFuZCBjbGVhciBpbnAgKi8KLQl0bXItPnN0b3BwZWRfZnJvbSA9IDB4YTAwMzsKLQlpZiAoaW5w
KSB7Ci0JCVNDVFBfSU5QX0lOQ1JfUkVGKGlucCk7Ci0JCWlmICgoaW5wLT5zY3RwX3NvY2tldCA9
PSBOVUxMKSAmJgotCQkgICAgKCh0bXItPnR5cGUgIT0gU0NUUF9USU1FUl9UWVBFX0lOUEtJTEwp
ICYmCi0JCSAgICAgKHRtci0+dHlwZSAhPSBTQ1RQX1RJTUVSX1RZUEVfSU5JVCkgJiYKLQkJICAg
ICAodG1yLT50eXBlICE9IFNDVFBfVElNRVJfVFlQRV9TRU5EKSAmJgotCQkgICAgICh0bXItPnR5
cGUgIT0gU0NUUF9USU1FUl9UWVBFX1JFQ1YpICYmCi0JCSAgICAgKHRtci0+dHlwZSAhPSBTQ1RQ
X1RJTUVSX1RZUEVfSEVBUlRCRUFUKSAmJgotCQkgICAgICh0bXItPnR5cGUgIT0gU0NUUF9USU1F
Ul9UWVBFX1NIVVRET1dOKSAmJgotCQkgICAgICh0bXItPnR5cGUgIT0gU0NUUF9USU1FUl9UWVBF
X1NIVVRET1dOQUNLKSAmJgotCQkgICAgICh0bXItPnR5cGUgIT0gU0NUUF9USU1FUl9UWVBFX1NI
VVRET1dOR1VBUkQpICYmCi0JCSAgICAgKHRtci0+dHlwZSAhPSBTQ1RQX1RJTUVSX1RZUEVfQVNP
Q0tJTEwpKSkgewotCQkJU0NUUF9JTlBfREVDUl9SRUYoaW5wKTsKLSNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDEwMDAKLQkJCUNVUlZORVRfUkVTVE9S
RSgpOwotI2VuZGlmCi0JCQlyZXR1cm47Ci0JCX0KLQl9Ci0JdG1yLT5zdG9wcGVkX2Zyb20gPSAw
eGEwMDQ7Ci0JaWYgKHN0Y2IpIHsKLQkJYXRvbWljX2FkZF9pbnQoJnN0Y2ItPmFzb2MucmVmY250
LCAxKTsKLQkJaWYgKHN0Y2ItPmFzb2Muc3RhdGUgPT0gMCkgewotCQkJYXRvbWljX2FkZF9pbnQo
JnN0Y2ItPmFzb2MucmVmY250LCAtMSk7Ci0JCQlpZiAoaW5wKSB7Ci0JCQkJU0NUUF9JTlBfREVD
Ul9SRUYoaW5wKTsKLQkJCX0KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0Rf
dmVyc2lvbiA+PSA4MDEwMDAKLQkJCUNVUlZORVRfUkVTVE9SRSgpOwotI2VuZGlmCi0JCQlyZXR1
cm47Ci0JCX0KLQl9Ci0JdHlwZSA9IHRtci0+dHlwZTsKLQl0bXItPnN0b3BwZWRfZnJvbSA9IDB4
YTAwNTsKLQlTQ1RQREJHKFNDVFBfREVCVUdfVElNRVIxLCAiVGltZXIgdHlwZSAlZCBnb2VzIG9m
ZlxuIiwgdHlwZSk7CisJU0NUUERCRyhTQ1RQX0RFQlVHX1RJTUVSMiwgIlRpbWVyIHR5cGUgJWQg
Z29lcyBvZmYuXG4iLCB0eXBlKTsKIAlpZiAoIVNDVFBfT1NfVElNRVJfQUNUSVZFKCZ0bXItPnRp
bWVyKSkgewotCQlpZiAoaW5wKSB7Ci0JCQlTQ1RQX0lOUF9ERUNSX1JFRihpbnApOwotCQl9Ci0J
CWlmIChzdGNiKSB7Ci0JCQlhdG9taWNfYWRkX2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIC0xKTsK
LQkJfQotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgw
MTAwMAotCQlDVVJWTkVUX1JFU1RPUkUoKTsKLSNlbmRpZgotCQlyZXR1cm47CisJCVNDVFBEQkco
U0NUUF9ERUJVR19USU1FUjIsCisJCQkiVGltZXIgdHlwZSAlZCBoYW5kbGVyIGV4aXRpbmcgZHVl
IHRvIG5vdCBiZWluZyBhY3RpdmUuXG4iLAorCQkJdHlwZSk7CisJCWdvdG8gb3V0X2RlY3I7CiAJ
fQotCXRtci0+c3RvcHBlZF9mcm9tID0gMHhhMDA2OwogCisJdG1yLT5zdG9wcGVkX2Zyb20gPSAw
eGEwMDM7CiAJaWYgKHN0Y2IpIHsKIAkJU0NUUF9UQ0JfTE9DSyhzdGNiKTsKKwkJLyoKKwkJICog
UmVsZWFzZSByZWZlcmVuY2Ugc28gdGhhdCBhc3NvY2lhdGlvbiBjYW4gYmUgZnJlZWQgaWYKKwkJ
ICogbmVjZXNzYXJ5IGJlbG93LgorCQkgKiBUaGlzIGlzIHNhZmUgbm93IHRoYXQgd2UgaGF2ZSBh
Y3F1aXJlZCB0aGUgbG9jay4KKwkJICovCiAJCWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29jLnJl
ZmNudCwgLTEpOworCQlyZWxlYXNlZF9hc29jX3JlZmVyZW5jZSA9IHRydWU7CiAJCWlmICgodHlw
ZSAhPSBTQ1RQX1RJTUVSX1RZUEVfQVNPQ0tJTEwpICYmCi0JCSAgICAoKHN0Y2ItPmFzb2Muc3Rh
dGUgPT0gMCkgfHwKKwkJICAgICgoc3RjYi0+YXNvYy5zdGF0ZSA9PSBTQ1RQX1NUQVRFX0VNUFRZ
KSB8fAogCQkgICAgIChzdGNiLT5hc29jLnN0YXRlICYgU0NUUF9TVEFURV9BQk9VVF9UT19CRV9G
UkVFRCkpKSB7Ci0JCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7Ci0JCQlpZiAoaW5wKSB7Ci0JCQkJ
U0NUUF9JTlBfREVDUl9SRUYoaW5wKTsKLQkJCX0KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDEwMDAKLQkJCUNVUlZORVRfUkVTVE9SRSgpOwotI2Vu
ZGlmCi0JCQlyZXR1cm47CisJCQlTQ1RQREJHKFNDVFBfREVCVUdfVElNRVIyLAorCQkJICAgICAg
ICAiVGltZXIgdHlwZSAlZCBoYW5kbGVyIGV4aXRpbmcgZHVlIHRvIENMT1NFRCBhc3NvY2lhdGlv
bi5cbiIsCisJCQkgICAgICAgIHR5cGUpOworCQkJZ290byBvdXQ7CiAJCX0KIAl9IGVsc2UgaWYg
KGlucCAhPSBOVUxMKSB7Ci0JCWlmICh0eXBlICE9IFNDVFBfVElNRVJfVFlQRV9JTlBLSUxMKSB7
Ci0JCQlTQ1RQX0lOUF9XTE9DSyhpbnApOwotCQl9CisJCVNDVFBfSU5QX1dMT0NLKGlucCk7CiAJ
fSBlbHNlIHsKIAkJU0NUUF9XUV9BRERSX0xPQ0soKTsKIAl9Ci0JLyogcmVjb3JkIGluIHN0b3Bw
ZWQgd2hhdCB0LW8gb2NjdXJyZWQgKi8KLQl0bXItPnN0b3BwZWRfZnJvbSA9IHR5cGU7CiAKKwkv
KiBSZWNvcmQgaW4gc3RvcHBlZF9mcm9tIHdoaWNoIHRpbWVvdXQgb2NjdXJyZWQuICovCisJdG1y
LT5zdG9wcGVkX2Zyb20gPSB0eXBlOwogCS8qIG1hcmsgYXMgYmVpbmcgc2VydmljZWQgbm93ICov
CiAJaWYgKFNDVFBfT1NfVElNRVJfUEVORElORygmdG1yLT50aW1lcikpIHsKIAkJLyoKIAkJICog
Q2FsbG91dCBoYXMgYmVlbiByZXNjaGVkdWxlZC4KIAkJICovCi0JCWdvdG8gZ2V0X291dDsKKwkJ
Z290byBvdXQ7CiAJfQogCWlmICghU0NUUF9PU19USU1FUl9BQ1RJVkUoJnRtci0+dGltZXIpKSB7
CiAJCS8qCiAJCSAqIE5vdCBhY3RpdmUsIHNvIG5vIGFjdGlvbi4KIAkJICovCi0JCWdvdG8gZ2V0
X291dDsKKwkJZ290byBvdXQ7CiAJfQogCVNDVFBfT1NfVElNRVJfREVBQ1RJVkFURSgmdG1yLT50
aW1lcik7CiAKKyNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJaWYgKChzdGNiICE9IE5VTEwp
ICYmCisJICAgICEoc3RjYi0+c2N0cF9lcC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1NP
Q0tFVF9HT05FKSAmJgorCSAgICAoc3RjYi0+c2N0cF9zb2NrZXQgIT0gTlVMTCkpIHsKKwkJdXBj
YWxsX3NvY2tldCA9IHN0Y2ItPnNjdHBfc29ja2V0OworCQlTT0NLX0xPQ0sodXBjYWxsX3NvY2tl
dCk7CisJCXNvcmVmKHVwY2FsbF9zb2NrZXQpOworCQlTT0NLX1VOTE9DSyh1cGNhbGxfc29ja2V0
KTsKKwl9CisjZW5kaWYKIAkvKiBjYWxsIHRoZSBoYW5kbGVyIGZvciB0aGUgYXBwcm9wcmlhdGUg
dGltZXIgdHlwZSAqLwogCXN3aXRjaCAodHlwZSkgewotCWNhc2UgU0NUUF9USU1FUl9UWVBFX0FE
RFJfV1E6Ci0JCXNjdHBfaGFuZGxlX2FkZHJfd3EoKTsKLQkJYnJlYWs7CiAJY2FzZSBTQ1RQX1RJ
TUVSX1RZUEVfU0VORDoKLQkJaWYgKChzdGNiID09IE5VTEwpIHx8IChpbnAgPT0gTlVMTCkpIHsK
LQkJCWJyZWFrOwotCQl9CisJCUtBU1NFUlQoaW5wICE9IE5VTEwgJiYgc3RjYiAhPSBOVUxMICYm
IG5ldCAhPSBOVUxMLAorCQkgICAgICAgICgidGltZW91dCBvZiB0eXBlICVkOiBpbnAgPSAlcCwg
c3RjYiA9ICVwLCBuZXQgPSAlcCIsCisJCSAgICAgICAgIHR5cGUsIGlucCwgc3RjYiwgbmV0KSk7
CiAJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3RpbW9kYXRhKTsKIAkJc3RjYi0+YXNvYy50aW1vZGF0
YSsrOwogCQlzdGNiLT5hc29jLm51bV9zZW5kX3RpbWVyc191cC0tOwpAQCAtMTc4MCw2NSArMTkw
NCw3MiBAQCBzY3RwX3RpbWVvdXRfaGFuZGxlcih2b2lkICp0KQogCQlzY3RwX2F1ZGl0aW5nKDQs
IGlucCwgc3RjYiwgbmV0KTsKICNlbmRpZgogCQlzY3RwX2NodW5rX291dHB1dChpbnAsIHN0Y2Is
IFNDVFBfT1VUUFVUX0ZST01fVDMsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CisJCWRpZF9vdXRwdXQg
PSB0cnVlOwogCQlpZiAoKHN0Y2ItPmFzb2MubnVtX3NlbmRfdGltZXJzX3VwID09IDApICYmCiAJ
CSAgICAoc3RjYi0+YXNvYy5zZW50X3F1ZXVlX2NudCA+IDApKSB7CiAJCQlzdHJ1Y3Qgc2N0cF90
bWl0X2NodW5rICpjaGs7CiAKIAkJCS8qCi0JCQkgKiBzYWZlZ3VhcmQuIElmIHRoZXJlIG9uIHNv
bWUgb24gdGhlIHNlbnQgcXVldWUKKwkJCSAqIFNhZmVndWFyZC4gSWYgdGhlcmUgb24gc29tZSBv
biB0aGUgc2VudCBxdWV1ZQogCQkJICogc29tZXdoZXJlIGJ1dCBubyB0aW1lcnMgcnVubmluZyBz
b21ldGhpbmcgaXMKIAkJCSAqIHdyb25nLi4uIHNvIHdlIHN0YXJ0IGEgdGltZXIgb24gdGhlIGZp
cnN0IGNodW5rCiAJCQkgKiBvbiB0aGUgc2VuZCBxdWV1ZSBvbiB3aGF0ZXZlciBuZXQgaXQgaXMg
c2VudCB0by4KIAkJCSAqLwotCQkJY2hrID0gVEFJTFFfRklSU1QoJnN0Y2ItPmFzb2Muc2VudF9x
dWV1ZSk7Ci0JCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9TRU5ELCBpbnAsIHN0
Y2IsCi0JCQkgICAgY2hrLT53aG9Ubyk7CisJCQlUQUlMUV9GT1JFQUNIKGNoaywgJnN0Y2ItPmFz
b2Muc2VudF9xdWV1ZSwgc2N0cF9uZXh0KSB7CisJCQkJaWYgKGNoay0+d2hvVG8gIT0gTlVMTCkg
eworCQkJCQlicmVhazsKKwkJCQl9CisJCQl9CisJCQlpZiAoY2hrICE9IE5VTEwpIHsKKwkJCQlz
Y3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9TRU5ELCBzdGNiLT5zY3RwX2VwLCBzdGNi
LCBjaGstPndob1RvKTsKKwkJCX0KIAkJfQogCQlicmVhazsKIAljYXNlIFNDVFBfVElNRVJfVFlQ
RV9JTklUOgotCQlpZiAoKHN0Y2IgPT0gTlVMTCkgfHwgKGlucCA9PSBOVUxMKSkgewotCQkJYnJl
YWs7Ci0JCX0KKwkJS0FTU0VSVChpbnAgIT0gTlVMTCAmJiBzdGNiICE9IE5VTEwgJiYgbmV0ICE9
IE5VTEwsCisJCSAgICAgICAgKCJ0aW1lb3V0IG9mIHR5cGUgJWQ6IGlucCA9ICVwLCBzdGNiID0g
JXAsIG5ldCA9ICVwIiwKKwkJICAgICAgICAgdHlwZSwgaW5wLCBzdGNiLCBuZXQpKTsKIAkJU0NU
UF9TVEFUX0lOQ1Ioc2N0cHNfdGltb2luaXQpOwogCQlzdGNiLT5hc29jLnRpbW9pbml0Kys7CiAJ
CWlmIChzY3RwX3QxaW5pdF90aW1lcihpbnAsIHN0Y2IsIG5ldCkpIHsKIAkJCS8qIG5vIG5lZWQg
dG8gdW5sb2NrIG9uIHRjYiBpdHMgZ29uZSAqLwogCQkJZ290byBvdXRfZGVjcjsKIAkJfQotCQkv
KiBXZSBkbyBvdXRwdXQgYnV0IG5vdCBoZXJlICovCi0JCWRpZF9vdXRwdXQgPSAwOworCQlkaWRf
b3V0cHV0ID0gZmFsc2U7CiAJCWJyZWFrOwogCWNhc2UgU0NUUF9USU1FUl9UWVBFX1JFQ1Y6Ci0J
CWlmICgoc3RjYiA9PSBOVUxMKSB8fCAoaW5wID09IE5VTEwpKSB7Ci0JCQlicmVhazsKLQkJfQor
CQlLQVNTRVJUKGlucCAhPSBOVUxMICYmIHN0Y2IgIT0gTlVMTCAmJiBuZXQgPT0gTlVMTCwKKwkJ
ICAgICAgICAoInRpbWVvdXQgb2YgdHlwZSAlZDogaW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0g
JXAiLAorCQkgICAgICAgICB0eXBlLCBpbnAsIHN0Y2IsIG5ldCkpOwogCQlTQ1RQX1NUQVRfSU5D
UihzY3Rwc190aW1vc2Fjayk7CiAJCXN0Y2ItPmFzb2MudGltb3NhY2srKzsKIAkJc2N0cF9zZW5k
X3NhY2soc3RjYiwgU0NUUF9TT19OT1RfTE9DS0VEKTsKICNpZmRlZiBTQ1RQX0FVRElUSU5HX0VO
QUJMRUQKLQkJc2N0cF9hdWRpdGluZyg0LCBpbnAsIHN0Y2IsIG5ldCk7CisJCXNjdHBfYXVkaXRp
bmcoNCwgaW5wLCBzdGNiLCBOVUxMKTsKICNlbmRpZgogCQlzY3RwX2NodW5rX291dHB1dChpbnAs
IHN0Y2IsIFNDVFBfT1VUUFVUX0ZST01fU0FDS19UTVIsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CisJ
CWRpZF9vdXRwdXQgPSB0cnVlOwogCQlicmVhazsKIAljYXNlIFNDVFBfVElNRVJfVFlQRV9TSFVU
RE9XTjoKLQkJaWYgKChzdGNiID09IE5VTEwpIHx8IChpbnAgPT0gTlVMTCkpIHsKLQkJCWJyZWFr
OwotCQl9CisJCUtBU1NFUlQoaW5wICE9IE5VTEwgJiYgc3RjYiAhPSBOVUxMICYmIG5ldCAhPSBO
VUxMLAorCQkgICAgICAgICgidGltZW91dCBvZiB0eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9ICVw
LCBuZXQgPSAlcCIsCisJCSAgICAgICAgIHR5cGUsIGlucCwgc3RjYiwgbmV0KSk7CisJCVNDVFBf
U1RBVF9JTkNSKHNjdHBzX3RpbW9zaHV0ZG93bik7CisJCXN0Y2ItPmFzb2MudGltb3NodXRkb3du
Kys7CiAJCWlmIChzY3RwX3NodXRkb3duX3RpbWVyKGlucCwgc3RjYiwgbmV0KSkgewogCQkJLyog
bm8gbmVlZCB0byB1bmxvY2sgb24gdGNiIGl0cyBnb25lICovCiAJCQlnb3RvIG91dF9kZWNyOwog
CQl9Ci0JCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3RpbW9zaHV0ZG93bik7Ci0JCXN0Y2ItPmFzb2Mu
dGltb3NodXRkb3duKys7CiAjaWZkZWYgU0NUUF9BVURJVElOR19FTkFCTEVECiAJCXNjdHBfYXVk
aXRpbmcoNCwgaW5wLCBzdGNiLCBuZXQpOwogI2VuZGlmCiAJCXNjdHBfY2h1bmtfb3V0cHV0KGlu
cCwgc3RjYiwgU0NUUF9PVVRQVVRfRlJPTV9TSFVUX1RNUiwgU0NUUF9TT19OT1RfTE9DS0VEKTsK
KwkJZGlkX291dHB1dCA9IHRydWU7CiAJCWJyZWFrOwogCWNhc2UgU0NUUF9USU1FUl9UWVBFX0hF
QVJUQkVBVDoKLQkJaWYgKChzdGNiID09IE5VTEwpIHx8IChpbnAgPT0gTlVMTCkgfHwgKG5ldCA9
PSBOVUxMKSkgewotCQkJYnJlYWs7Ci0JCX0KKwkJS0FTU0VSVChpbnAgIT0gTlVMTCAmJiBzdGNi
ICE9IE5VTEwgJiYgbmV0ICE9IE5VTEwsCisJCSAgICAgICAgKCJ0aW1lb3V0IG9mIHR5cGUgJWQ6
IGlucCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9ICVwIiwKKwkJICAgICAgICAgdHlwZSwgaW5wLCBz
dGNiLCBuZXQpKTsKIAkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfdGltb2hlYXJ0YmVhdCk7CiAJCXN0
Y2ItPmFzb2MudGltb2hlYXJ0YmVhdCsrOwogCQlpZiAoc2N0cF9oZWFydGJlYXRfdGltZXIoaW5w
LCBzdGNiLCBuZXQpKSB7CkBAIC0xODUxLDE5ICsxOTgyLDIxIEBAIHNjdHBfdGltZW91dF9oYW5k
bGVyKHZvaWQgKnQpCiAJCWlmICghKG5ldC0+ZGVzdF9zdGF0ZSAmIFNDVFBfQUREUl9OT0hCKSkg
ewogCQkJc2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfSEVBUlRCRUFULCBpbnAsIHN0
Y2IsIG5ldCk7CiAJCQlzY3RwX2NodW5rX291dHB1dChpbnAsIHN0Y2IsIFNDVFBfT1VUUFVUX0ZS
T01fSEJfVE1SLCBTQ1RQX1NPX05PVF9MT0NLRUQpOworCQkJZGlkX291dHB1dCA9IHRydWU7CisJ
CX0gZWxzZSB7CisJCQlkaWRfb3V0cHV0ID0gZmFsc2U7CiAJCX0KIAkJYnJlYWs7CiAJY2FzZSBT
Q1RQX1RJTUVSX1RZUEVfQ09PS0lFOgotCQlpZiAoKHN0Y2IgPT0gTlVMTCkgfHwgKGlucCA9PSBO
VUxMKSkgewotCQkJYnJlYWs7Ci0JCX0KLQorCQlLQVNTRVJUKGlucCAhPSBOVUxMICYmIHN0Y2Ig
IT0gTlVMTCAmJiBuZXQgIT0gTlVMTCwKKwkJICAgICAgICAoInRpbWVvdXQgb2YgdHlwZSAlZDog
aW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkgICAgICAgICB0eXBlLCBpbnAsIHN0
Y2IsIG5ldCkpOworCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc190aW1vY29va2llKTsKKwkJc3RjYi0+
YXNvYy50aW1vY29va2llKys7CiAJCWlmIChzY3RwX2Nvb2tpZV90aW1lcihpbnAsIHN0Y2IsIG5l
dCkpIHsKIAkJCS8qIG5vIG5lZWQgdG8gdW5sb2NrIG9uIHRjYiBpdHMgZ29uZSAqLwogCQkJZ290
byBvdXRfZGVjcjsKIAkJfQotCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc190aW1vY29va2llKTsKLQkJ
c3RjYi0+YXNvYy50aW1vY29va2llKys7CiAjaWZkZWYgU0NUUF9BVURJVElOR19FTkFCTEVECiAJ
CXNjdHBfYXVkaXRpbmcoNCwgaW5wLCBzdGNiLCBuZXQpOwogI2VuZGlmCkBAIC0xODcyLDQ1ICsy
MDA1LDQyIEBAIHNjdHBfdGltZW91dF9oYW5kbGVyKHZvaWQgKnQpCiAJCSAqIHJlc3BlY3QgdG8g
d2hlcmUgZnJvbSBpbiBjaHVua19vdXRwdXQuCiAJCSAqLwogCQlzY3RwX2NodW5rX291dHB1dChp
bnAsIHN0Y2IsIFNDVFBfT1VUUFVUX0ZST01fVDMsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CisJCWRp
ZF9vdXRwdXQgPSB0cnVlOwogCQlicmVhazsKIAljYXNlIFNDVFBfVElNRVJfVFlQRV9ORVdDT09L
SUU6Ci0JCXsKLQkJCXN0cnVjdCB0aW1ldmFsIHR2OwotCQkJaW50IGksIHNlY3JldDsKLQkJCWlm
IChpbnAgPT0gTlVMTCkgewotCQkJCWJyZWFrOwotCQkJfQotCQkJU0NUUF9TVEFUX0lOQ1Ioc2N0
cHNfdGltb3NlY3JldCk7Ci0JCQkodm9pZClTQ1RQX0dFVFRJTUVfVElNRVZBTCgmdHYpOwotCQkJ
aW5wLT5zY3RwX2VwLnRpbWVfb2Zfc2VjcmV0X2NoYW5nZSA9IHR2LnR2X3NlYzsKLQkJCWlucC0+
c2N0cF9lcC5sYXN0X3NlY3JldF9udW1iZXIgPQotCQkJICAgIGlucC0+c2N0cF9lcC5jdXJyZW50
X3NlY3JldF9udW1iZXI7Ci0JCQlpbnAtPnNjdHBfZXAuY3VycmVudF9zZWNyZXRfbnVtYmVyKys7
Ci0JCQlpZiAoaW5wLT5zY3RwX2VwLmN1cnJlbnRfc2VjcmV0X251bWJlciA+PQotCQkJICAgIFND
VFBfSE9XX01BTllfU0VDUkVUUykgewotCQkJCWlucC0+c2N0cF9lcC5jdXJyZW50X3NlY3JldF9u
dW1iZXIgPSAwOwotCQkJfQotCQkJc2VjcmV0ID0gKGludClpbnAtPnNjdHBfZXAuY3VycmVudF9z
ZWNyZXRfbnVtYmVyOwotCQkJZm9yIChpID0gMDsgaSA8IFNDVFBfTlVNQkVSX09GX1NFQ1JFVFM7
IGkrKykgewotCQkJCWlucC0+c2N0cF9lcC5zZWNyZXRfa2V5W3NlY3JldF1baV0gPQotCQkJCSAg
ICBzY3RwX3NlbGVjdF9pbml0aWFsX1RTTigmaW5wLT5zY3RwX2VwKTsKLQkJCX0KLQkJCXNjdHBf
dGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX05FV0NPT0tJRSwgaW5wLCBzdGNiLCBuZXQpOwot
CQl9Ci0JCWRpZF9vdXRwdXQgPSAwOworCQlLQVNTRVJUKGlucCAhPSBOVUxMICYmIHN0Y2IgPT0g
TlVMTCAmJiBuZXQgPT0gTlVMTCwKKwkJCSgidGltZW91dCBvZiB0eXBlICVkOiBpbnAgPSAlcCwg
c3RjYiA9ICVwLCBuZXQgPSAlcCIsCisJCQkgdHlwZSwgaW5wLCBzdGNiLCBuZXQpKTsKKwkJU0NU
UF9TVEFUX0lOQ1Ioc2N0cHNfdGltb3NlY3JldCk7CisJCSh2b2lkKVNDVFBfR0VUVElNRV9USU1F
VkFMKCZ0dik7CisJCWlucC0+c2N0cF9lcC50aW1lX29mX3NlY3JldF9jaGFuZ2UgPSB0di50dl9z
ZWM7CisJCWlucC0+c2N0cF9lcC5sYXN0X3NlY3JldF9udW1iZXIgPQorCQkgICAgaW5wLT5zY3Rw
X2VwLmN1cnJlbnRfc2VjcmV0X251bWJlcjsKKwkJaW5wLT5zY3RwX2VwLmN1cnJlbnRfc2VjcmV0
X251bWJlcisrOworCQlpZiAoaW5wLT5zY3RwX2VwLmN1cnJlbnRfc2VjcmV0X251bWJlciA+PQor
CQkgICAgU0NUUF9IT1dfTUFOWV9TRUNSRVRTKSB7CisJCQlpbnAtPnNjdHBfZXAuY3VycmVudF9z
ZWNyZXRfbnVtYmVyID0gMDsKKwkJfQorCQlzZWNyZXQgPSAoaW50KWlucC0+c2N0cF9lcC5jdXJy
ZW50X3NlY3JldF9udW1iZXI7CisJCWZvciAoaSA9IDA7IGkgPCBTQ1RQX05VTUJFUl9PRl9TRUNS
RVRTOyBpKyspIHsKKwkJCWlucC0+c2N0cF9lcC5zZWNyZXRfa2V5W3NlY3JldF1baV0gPQorCQkJ
ICAgIHNjdHBfc2VsZWN0X2luaXRpYWxfVFNOKCZpbnAtPnNjdHBfZXApOworCQl9CisJCXNjdHBf
dGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX05FV0NPT0tJRSwgaW5wLCBOVUxMLCBOVUxMKTsK
KwkJZGlkX291dHB1dCA9IGZhbHNlOwogCQlicmVhazsKIAljYXNlIFNDVFBfVElNRVJfVFlQRV9Q
QVRITVRVUkFJU0U6Ci0JCWlmICgoc3RjYiA9PSBOVUxMKSB8fCAoaW5wID09IE5VTEwpKSB7Ci0J
CQlicmVhazsKLQkJfQorCQlLQVNTRVJUKGlucCAhPSBOVUxMICYmIHN0Y2IgIT0gTlVMTCAmJiBu
ZXQgIT0gTlVMTCwKKwkJICAgICAgICAoInRpbWVvdXQgb2YgdHlwZSAlZDogaW5wID0gJXAsIHN0
Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkgICAgICAgICB0eXBlLCBpbnAsIHN0Y2IsIG5ldCkpOwog
CQlTQ1RQX1NUQVRfSU5DUihzY3Rwc190aW1vcGF0aG10dSk7CiAJCXNjdHBfcGF0aG10dV90aW1l
cihpbnAsIHN0Y2IsIG5ldCk7Ci0JCWRpZF9vdXRwdXQgPSAwOworCQlkaWRfb3V0cHV0ID0gZmFs
c2U7CiAJCWJyZWFrOwogCWNhc2UgU0NUUF9USU1FUl9UWVBFX1NIVVRET1dOQUNLOgotCQlpZiAo
KHN0Y2IgPT0gTlVMTCkgfHwgKGlucCA9PSBOVUxMKSkgewotCQkJYnJlYWs7Ci0JCX0KKwkJS0FT
U0VSVChpbnAgIT0gTlVMTCAmJiBzdGNiICE9IE5VTEwgJiYgbmV0ICE9IE5VTEwsCisJCSAgICAg
ICAgKCJ0aW1lb3V0IG9mIHR5cGUgJWQ6IGlucCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9ICVwIiwK
KwkJICAgICAgICAgdHlwZSwgaW5wLCBzdGNiLCBuZXQpKTsKIAkJaWYgKHNjdHBfc2h1dGRvd25h
Y2tfdGltZXIoaW5wLCBzdGNiLCBuZXQpKSB7CiAJCQkvKiBubyBuZWVkIHRvIHVubG9jayBvbiB0
Y2IgaXRzIGdvbmUgKi8KIAkJCWdvdG8gb3V0X2RlY3I7CkBAIC0xOTIxLDcwICsyMDUxLDg4IEBA
IHNjdHBfdGltZW91dF9oYW5kbGVyKHZvaWQgKnQpCiAJCXNjdHBfYXVkaXRpbmcoNCwgaW5wLCBz
dGNiLCBuZXQpOwogI2VuZGlmCiAJCXNjdHBfY2h1bmtfb3V0cHV0KGlucCwgc3RjYiwgU0NUUF9P
VVRQVVRfRlJPTV9TSFVUX0FDS19UTVIsIFNDVFBfU09fTk9UX0xPQ0tFRCk7Ci0JCWJyZWFrOwot
CWNhc2UgU0NUUF9USU1FUl9UWVBFX1NIVVRET1dOR1VBUkQ6Ci0JCWlmICgoc3RjYiA9PSBOVUxM
KSB8fCAoaW5wID09IE5VTEwpKSB7Ci0JCQlicmVhazsKLQkJfQotCQlTQ1RQX1NUQVRfSU5DUihz
Y3Rwc190aW1vc2h1dGRvd25ndWFyZCk7Ci0JCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2Uo
U0NUUF9CQVNFX1NZU0NUTChzY3RwX2RpYWdfaW5mb19jb2RlKSwKLQkJICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiU2h1dGRvd24gZ3VhcmQgdGltZXIgZXhwaXJlZCIpOwotCQlzY3RwX2Fi
b3J0X2FuX2Fzc29jaWF0aW9uKGlucCwgc3RjYiwgb3BfZXJyLCBTQ1RQX1NPX05PVF9MT0NLRUQp
OwotCQkvKiBubyBuZWVkIHRvIHVubG9jayBvbiB0Y2IgaXRzIGdvbmUgKi8KLQkJZ290byBvdXRf
ZGVjcjsKLQotCWNhc2UgU0NUUF9USU1FUl9UWVBFX1NUUlJFU0VUOgotCQlpZiAoKHN0Y2IgPT0g
TlVMTCkgfHwgKGlucCA9PSBOVUxMKSkgewotCQkJYnJlYWs7Ci0JCX0KLQkJaWYgKHNjdHBfc3Ry
cmVzZXRfdGltZXIoaW5wLCBzdGNiLCBuZXQpKSB7Ci0JCQkvKiBubyBuZWVkIHRvIHVubG9jayBv
biB0Y2IgaXRzIGdvbmUgKi8KLQkJCWdvdG8gb3V0X2RlY3I7Ci0JCX0KLQkJU0NUUF9TVEFUX0lO
Q1Ioc2N0cHNfdGltb3N0cm1yc3QpOwotCQlzY3RwX2NodW5rX291dHB1dChpbnAsIHN0Y2IsIFND
VFBfT1VUUFVUX0ZST01fU1RSUlNUX1RNUiwgU0NUUF9TT19OT1RfTE9DS0VEKTsKKwkJZGlkX291
dHB1dCA9IHRydWU7CiAJCWJyZWFrOwogCWNhc2UgU0NUUF9USU1FUl9UWVBFX0FTQ09ORjoKLQkJ
aWYgKChzdGNiID09IE5VTEwpIHx8IChpbnAgPT0gTlVMTCkpIHsKLQkJCWJyZWFrOwotCQl9CisJ
CUtBU1NFUlQoaW5wICE9IE5VTEwgJiYgc3RjYiAhPSBOVUxMICYmIG5ldCAhPSBOVUxMLAorCQkg
ICAgICAgICgidGltZW91dCBvZiB0eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9ICVwLCBuZXQgPSAl
cCIsCisJCSAgICAgICAgIHR5cGUsIGlucCwgc3RjYiwgbmV0KSk7CisJCVNDVFBfU1RBVF9JTkNS
KHNjdHBzX3RpbW9hc2NvbmYpOwogCQlpZiAoc2N0cF9hc2NvbmZfdGltZXIoaW5wLCBzdGNiLCBu
ZXQpKSB7CiAJCQkvKiBubyBuZWVkIHRvIHVubG9jayBvbiB0Y2IgaXRzIGdvbmUgKi8KIAkJCWdv
dG8gb3V0X2RlY3I7CiAJCX0KLQkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfdGltb2FzY29uZik7CiAj
aWZkZWYgU0NUUF9BVURJVElOR19FTkFCTEVECiAJCXNjdHBfYXVkaXRpbmcoNCwgaW5wLCBzdGNi
LCBuZXQpOwogI2VuZGlmCiAJCXNjdHBfY2h1bmtfb3V0cHV0KGlucCwgc3RjYiwgU0NUUF9PVVRQ
VVRfRlJPTV9BU0NPTkZfVE1SLCBTQ1RQX1NPX05PVF9MT0NLRUQpOworCQlkaWRfb3V0cHV0ID0g
dHJ1ZTsKIAkJYnJlYWs7Ci0JY2FzZSBTQ1RQX1RJTUVSX1RZUEVfUFJJTV9ERUxFVEVEOgotCQlp
ZiAoKHN0Y2IgPT0gTlVMTCkgfHwgKGlucCA9PSBOVUxMKSkgewotCQkJYnJlYWs7Ci0JCX0KLQkJ
c2N0cF9kZWxldGVfcHJpbV90aW1lcihpbnAsIHN0Y2IsIG5ldCk7Ci0JCVNDVFBfU1RBVF9JTkNS
KHNjdHBzX3RpbW9kZWxwcmltKTsKLQkJYnJlYWs7Ci0KKwljYXNlIFNDVFBfVElNRVJfVFlQRV9T
SFVURE9XTkdVQVJEOgorCQlLQVNTRVJUKGlucCAhPSBOVUxMICYmIHN0Y2IgIT0gTlVMTCAmJiBu
ZXQgPT0gTlVMTCwKKwkJICAgICAgICAoInRpbWVvdXQgb2YgdHlwZSAlZDogaW5wID0gJXAsIHN0
Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkgICAgICAgICB0eXBlLCBpbnAsIHN0Y2IsIG5ldCkpOwor
CQlTQ1RQX1NUQVRfSU5DUihzY3Rwc190aW1vc2h1dGRvd25ndWFyZCk7CisJCW9wX2VyciA9IHNj
dHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2RpYWdfaW5mb19jb2RlKSwK
KwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2h1dGRvd24gZ3VhcmQgdGltZXIgZXhw
aXJlZCIpOworCQlzY3RwX2Fib3J0X2FuX2Fzc29jaWF0aW9uKGlucCwgc3RjYiwgb3BfZXJyLCBT
Q1RQX1NPX05PVF9MT0NLRUQpOworCQlkaWRfb3V0cHV0ID0gdHJ1ZTsKKwkJLyogbm8gbmVlZCB0
byB1bmxvY2sgb24gdGNiIGl0cyBnb25lICovCisJCWdvdG8gb3V0X2RlY3I7CiAJY2FzZSBTQ1RQ
X1RJTUVSX1RZUEVfQVVUT0NMT1NFOgotCQlpZiAoKHN0Y2IgPT0gTlVMTCkgfHwgKGlucCA9PSBO
VUxMKSkgewotCQkJYnJlYWs7Ci0JCX0KKwkJS0FTU0VSVChpbnAgIT0gTlVMTCAmJiBzdGNiICE9
IE5VTEwgJiYgbmV0ID09IE5VTEwsCisJCSAgICAgICAgKCJ0aW1lb3V0IG9mIHR5cGUgJWQ6IGlu
cCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9ICVwIiwKKwkJICAgICAgICAgdHlwZSwgaW5wLCBzdGNi
LCBuZXQpKTsKIAkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfdGltb2F1dG9jbG9zZSk7Ci0JCXNjdHBf
YXV0b2Nsb3NlX3RpbWVyKGlucCwgc3RjYiwgbmV0KTsKKwkJc2N0cF9hdXRvY2xvc2VfdGltZXIo
aW5wLCBzdGNiKTsKIAkJc2N0cF9jaHVua19vdXRwdXQoaW5wLCBzdGNiLCBTQ1RQX09VVFBVVF9G
Uk9NX0FVVE9DTE9TRV9UTVIsIFNDVFBfU09fTk9UX0xPQ0tFRCk7Ci0JCWRpZF9vdXRwdXQgPSAw
OworCQlkaWRfb3V0cHV0ID0gdHJ1ZTsKIAkJYnJlYWs7Ci0JY2FzZSBTQ1RQX1RJTUVSX1RZUEVf
QVNPQ0tJTEw6Ci0JCWlmICgoc3RjYiA9PSBOVUxMKSB8fCAoaW5wID09IE5VTEwpKSB7Ci0JCQli
cmVhazsKKwljYXNlIFNDVFBfVElNRVJfVFlQRV9TVFJSRVNFVDoKKwkJS0FTU0VSVChpbnAgIT0g
TlVMTCAmJiBzdGNiICE9IE5VTEwgJiYgbmV0ID09IE5VTEwsCisJCSAgICAgICAgKCJ0aW1lb3V0
IG9mIHR5cGUgJWQ6IGlucCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9ICVwIiwKKwkJICAgICAgICAg
dHlwZSwgaW5wLCBzdGNiLCBuZXQpKTsKKwkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfdGltb3N0cm1y
c3QpOworCQlpZiAoc2N0cF9zdHJyZXNldF90aW1lcihpbnAsIHN0Y2IpKSB7CisJCQkvKiBubyBu
ZWVkIHRvIHVubG9jayBvbiB0Y2IgaXRzIGdvbmUgKi8KKwkJCWdvdG8gb3V0X2RlY3I7CiAJCX0K
KwkJc2N0cF9jaHVua19vdXRwdXQoaW5wLCBzdGNiLCBTQ1RQX09VVFBVVF9GUk9NX1NUUlJTVF9U
TVIsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CisJCWRpZF9vdXRwdXQgPSB0cnVlOworCQlicmVhazsK
KwljYXNlIFNDVFBfVElNRVJfVFlQRV9JTlBLSUxMOgorCQlLQVNTRVJUKGlucCAhPSBOVUxMICYm
IHN0Y2IgPT0gTlVMTCAmJiBuZXQgPT0gTlVMTCwKKwkJICAgICAgICAoInRpbWVvdXQgb2YgdHlw
ZSAlZDogaW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkgICAgICAgICB0eXBlLCBp
bnAsIHN0Y2IsIG5ldCkpOworCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc190aW1vaW5wa2lsbCk7CisJ
CS8qCisJCSAqIHNwZWNpYWwgY2FzZSwgdGFrZSBhd2F5IG91ciBpbmNyZW1lbnQgc2luY2UgV0Ug
YXJlIHRoZQorCQkgKiBraWxsZXIKKwkJICovCisJCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVS
X1RZUEVfSU5QS0lMTCwgaW5wLCBOVUxMLCBOVUxMLAorCQkgICAgICAgICAgICAgICAgU0NUUF9G
Uk9NX1NDVFBVVElMICsgU0NUUF9MT0NfMyk7CisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCVNDVFBfU09DS0VUX0xPQ0soU0NUUF9JTlBfU08oaW5w
KSwgMSk7CisjZW5kaWYKKwkJU0NUUF9JTlBfREVDUl9SRUYoaW5wKTsKKwkJU0NUUF9JTlBfV1VO
TE9DSyhpbnApOworCQlzY3RwX2lucGNiX2ZyZWUoaW5wLCBTQ1RQX0ZSRUVfU0hPVUxEX1VTRV9B
Qk9SVCwKKwkJICAgICAgICAgICAgICAgIFNDVFBfQ0FMTEVEX0ZST01fSU5QS0lMTF9USU1FUik7
CisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCVND
VFBfU09DS0VUX1VOTE9DSyhTQ1RQX0lOUF9TTyhpbnApLCAxKTsKKyNlbmRpZgorCQlpbnAgPSBO
VUxMOworCQlnb3RvIG91dF9ub19kZWNyOworCWNhc2UgU0NUUF9USU1FUl9UWVBFX0FTT0NLSUxM
OgorCQlLQVNTRVJUKGlucCAhPSBOVUxMICYmIHN0Y2IgIT0gTlVMTCAmJiBuZXQgPT0gTlVMTCwK
KwkJICAgICAgICAoInRpbWVvdXQgb2YgdHlwZSAlZDogaW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0
ID0gJXAiLAorCQkgICAgICAgICB0eXBlLCBpbnAsIHN0Y2IsIG5ldCkpOwogCQlTQ1RQX1NUQVRf
SU5DUihzY3Rwc190aW1vYXNzb2NraWxsKTsKIAkJLyogQ2FuIHdlIGZyZWUgaXQgeWV0PyAqLwog
CQlTQ1RQX0lOUF9ERUNSX1JFRihpbnApOwogCQlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9U
WVBFX0FTT0NLSUxMLCBpbnAsIHN0Y2IsIE5VTEwsCiAJCSAgICAgICAgICAgICAgICBTQ1RQX0ZS
T01fU0NUUFVUSUwgKyBTQ1RQX0xPQ18xKTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVm
aW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJc28gPSBTQ1RQX0lOUF9TTyhpbnApOwogCQlhdG9taWNf
YWRkX2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIDEpOwogCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7
CkBAIC0xOTk0LDcgKzIxNDIsNyBAQCBzY3RwX3RpbWVvdXRfaGFuZGxlcih2b2lkICp0KQogI2Vu
ZGlmCiAJCSh2b2lkKXNjdHBfZnJlZV9hc3NvYyhpbnAsIHN0Y2IsIFNDVFBfTk9STUFMX1BST0Ms
CiAJCSAgICAgICAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUFVUSUwgKyBTQ1RQX0xPQ18y
KTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElO
RykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJ
U0NUUF9TT0NLRVRfVU5MT0NLKHNvLCAxKTsKICNlbmRpZgogCQkvKgpAQCAtMjAwMywzOSArMjE1
MSwzNSBAQCBzY3RwX3RpbWVvdXRfaGFuZGxlcih2b2lkICp0KQogCQkgKi8KIAkJc3RjYiA9IE5V
TEw7CiAJCWdvdG8gb3V0X25vX2RlY3I7Ci0JY2FzZSBTQ1RQX1RJTUVSX1RZUEVfSU5QS0lMTDoK
LQkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfdGltb2lucGtpbGwpOwotCQlpZiAoaW5wID09IE5VTEwp
IHsKLQkJCWJyZWFrOwotCQl9Ci0JCS8qCi0JCSAqIHNwZWNpYWwgY2FzZSwgdGFrZSBhd2F5IG91
ciBpbmNyZW1lbnQgc2luY2UgV0UgYXJlIHRoZQotCQkgKiBraWxsZXIKLQkJICovCi0JCVNDVFBf
SU5QX0RFQ1JfUkVGKGlucCk7Ci0JCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfSU5Q
S0lMTCwgaW5wLCBOVUxMLCBOVUxMLAotCQkgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBV
VElMICsgU0NUUF9MT0NfMyk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pCi0JCVNDVFBfU09DS0VU
X0xPQ0soU0NUUF9JTlBfU08oaW5wKSwgMSk7Ci0jZW5kaWYKLQkJc2N0cF9pbnBjYl9mcmVlKGlu
cCwgU0NUUF9GUkVFX1NIT1VMRF9VU0VfQUJPUlQsCi0JCQkJU0NUUF9DQUxMRURfRlJPTV9JTlBL
SUxMX1RJTUVSKTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKLQkJU0NUUF9TT0NLRVRfVU5MT0NL
KFNDVFBfSU5QX1NPKGlucCksIDEpOwotI2VuZGlmCi0JCWlucCA9IE5VTEw7Ci0JCWdvdG8gb3V0
X25vX2RlY3I7Ci0JZGVmYXVsdDoKLQkJU0NUUERCRyhTQ1RQX0RFQlVHX1RJTUVSMSwgInNjdHBf
dGltZW91dF9oYW5kbGVyOnVua25vd24gdGltZXIgJWRcbiIsCi0JCQl0eXBlKTsKKwljYXNlIFND
VFBfVElNRVJfVFlQRV9BRERSX1dROgorCQlLQVNTRVJUKGlucCA9PSBOVUxMICYmIHN0Y2IgPT0g
TlVMTCAmJiBuZXQgPT0gTlVMTCwKKwkJICAgICAgICAoInRpbWVvdXQgb2YgdHlwZSAlZDogaW5w
ID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkgICAgICAgICB0eXBlLCBpbnAsIHN0Y2Is
IG5ldCkpOworCQlzY3RwX2hhbmRsZV9hZGRyX3dxKCk7CisJCWRpZF9vdXRwdXQgPSB0cnVlOwog
CQlicmVhazsKKwljYXNlIFNDVFBfVElNRVJfVFlQRV9QUklNX0RFTEVURUQ6CisJCUtBU1NFUlQo
aW5wICE9IE5VTEwgJiYgc3RjYiAhPSBOVUxMICYmIG5ldCA9PSBOVUxMLAorCQkgICAgICAgICgi
dGltZW91dCBvZiB0eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9ICVwLCBuZXQgPSAlcCIsCisJCSAg
ICAgICAgIHR5cGUsIGlucCwgc3RjYiwgbmV0KSk7CisJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3Rp
bW9kZWxwcmltKTsKKwkJc2N0cF9kZWxldGVfcHJpbV90aW1lcihpbnAsIHN0Y2IpOworCQlkaWRf
b3V0cHV0ID0gZmFsc2U7CisJCWJyZWFrOworCWRlZmF1bHQ6CisjaWZkZWYgSU5WQVJJQU5UUwor
CQlwYW5pYygiVW5rbm93biB0aW1lciB0eXBlICVkIiwgdHlwZSk7CisjZWxzZQorCQlkaWRfb3V0
cHV0ID0gZmFsc2U7CisJCWdvdG8gb3V0OworI2VuZGlmCiAJfQogI2lmZGVmIFNDVFBfQVVESVRJ
TkdfRU5BQkxFRAogCXNjdHBfYXVkaXRfbG9nKDB4RjEsICh1aW50OF90KSB0eXBlKTsKLQlpZiAo
aW5wKQorCWlmIChpbnAgIT0gTlVMTCkKIAkJc2N0cF9hdWRpdGluZyg1LCBpbnAsIHN0Y2IsIG5l
dCk7CiAjZW5kaWYKLQlpZiAoKGRpZF9vdXRwdXQpICYmIHN0Y2IpIHsKKwlpZiAoZGlkX291dHB1
dCAmJiAoc3RjYiAhPSBOVUxMKSApIHsKIAkJLyoKIAkJICogTm93IHdlIG5lZWQgdG8gY2xlYW4g
dXAgdGhlIGNvbnRyb2wgY2h1bmsgY2hhaW4gaWYgYW4KIAkJICogRUNORSBpcyBvbiBpdC4gSXQg
bXVzdCBiZSBtYXJrZWQgYXMgVU5TRU5UIGFnYWluIHNvIG5leHQKQEAgLTIwNDUsOCArMjE4OSw4
IEBAIHNjdHBfdGltZW91dF9oYW5kbGVyKHZvaWQgKnQpCiAJCSAqLwogCQlzY3RwX2ZpeF9lY25f
ZWNobygmc3RjYi0+YXNvYyk7CiAJfQotZ2V0X291dDoKLQlpZiAoc3RjYikgeworb3V0OgorCWlm
IChzdGNiICE9IE5VTEwpIHsKIAkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwogCX0gZWxzZSBpZiAo
aW5wICE9IE5VTEwpIHsKIAkJU0NUUF9JTlBfV1VOTE9DSyhpbnApOwpAQCAtMjA1NSwyODMgKzIx
OTksNDQwIEBAIGdldF9vdXQ6CiAJfQogCiBvdXRfZGVjcjoKLQlpZiAoaW5wKSB7CisjaWYgZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQorCWlmICh1cGNhbGxfc29ja2V0ICE9IE5VTEwpIHsKKwkJaWYg
KCh1cGNhbGxfc29ja2V0LT5zb191cGNhbGwgIT0gTlVMTCkgJiYKKwkJICAgICh1cGNhbGxfc29j
a2V0LT5zb19lcnJvciAhPSAwKSkgeworCQkJKCp1cGNhbGxfc29ja2V0LT5zb191cGNhbGwpKHVw
Y2FsbF9zb2NrZXQsIHVwY2FsbF9zb2NrZXQtPnNvX3VwY2FsbGFyZywgTV9OT1dBSVQpOworCQl9
CisJCUFDQ0VQVF9MT0NLKCk7CisJCVNPQ0tfTE9DSyh1cGNhbGxfc29ja2V0KTsKKwkJc29yZWxl
KHVwY2FsbF9zb2NrZXQpOworCX0KKyNlbmRpZgorCS8qIFRoZXNlIHJlZmVyZW5jZSBjb3VudHMg
d2VyZSBpbmNyZW1lbnRlZCBpbiBzY3RwX3RpbWVyX3N0YXJ0KCkuICovCisJaWYgKGlucCAhPSBO
VUxMKSB7CiAJCVNDVFBfSU5QX0RFQ1JfUkVGKGlucCk7CiAJfQotCisJaWYgKChzdGNiICE9IE5V
TEwpICYmICFyZWxlYXNlZF9hc29jX3JlZmVyZW5jZSkgeworCQlhdG9taWNfYWRkX2ludCgmc3Rj
Yi0+YXNvYy5yZWZjbnQsIC0xKTsKKwl9CisJaWYgKG5ldCAhPSBOVUxMKSB7CisJCXNjdHBfZnJl
ZV9yZW1vdGVfYWRkcihuZXQpOworCX0KIG91dF9ub19kZWNyOgotCVNDVFBEQkcoU0NUUF9ERUJV
R19USU1FUjEsICJUaW1lciBub3cgY29tcGxldGUgKHR5cGUgPSAlZClcbiIsIHR5cGUpOwotI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMTAwMAorCVND
VFBEQkcoU0NUUF9ERUJVR19USU1FUjIsICJUaW1lciB0eXBlICVkIGhhbmRsZXIgZmluaXNoZWQu
XG4iLCB0eXBlKTsKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCUNVUlZORVRfUkVTVE9SRSgpOworCU5FVF9FUE9DSF9FWElUKGV0KTsKICNlbmRp
ZgogfQogCisvKi0KKyAqIFRoZSBmb2xsb3dpbmcgdGFibGUgc2hvd3Mgd2hpY2ggcGFyYW1ldGVy
cyBtdXN0IGJlIHByb3ZpZGVkCisgKiB3aGVuIGNhbGxpbmcgc2N0cF90aW1lcl9zdGFydCgpLiBG
b3IgcGFyYW1ldGVycyBub3QgYmVpbmcKKyAqIHByb3ZpZGVkLCBOVUxMIG11c3QgYmUgdXNlZC4K
KyAqCisgKiB8TmFtZSAgICAgICAgICAgICAgICAgICAgICAgICB8aW5wIHxzdGNifG5ldCB8Cisg
KiB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLXwtLS0tfC0tLS18CisgKiB8U0NU
UF9USU1FUl9UWVBFX1NFTkQgICAgICAgICB8WWVzIHxZZXMgfFllcyB8CisgKiB8U0NUUF9USU1F
Ul9UWVBFX0lOSVQgICAgICAgICB8WWVzIHxZZXMgfFllcyB8CisgKiB8U0NUUF9USU1FUl9UWVBF
X1JFQ1YgICAgICAgICB8WWVzIHxZZXMgfE5vICB8CisgKiB8U0NUUF9USU1FUl9UWVBFX1NIVVRE
T1dOICAgICB8WWVzIHxZZXMgfFllcyB8CisgKiB8U0NUUF9USU1FUl9UWVBFX0hFQVJUQkVBVCAg
ICB8WWVzIHxZZXMgfFllcyB8CisgKiB8U0NUUF9USU1FUl9UWVBFX0NPT0tJRSAgICAgICB8WWVz
IHxZZXMgfFllcyB8CisgKiB8U0NUUF9USU1FUl9UWVBFX05FV0NPT0tJRSAgICB8WWVzIHxObyAg
fE5vICB8CisgKiB8U0NUUF9USU1FUl9UWVBFX1BBVEhNVFVSQUlTRSB8WWVzIHxZZXMgfFllcyB8
CisgKiB8U0NUUF9USU1FUl9UWVBFX1NIVVRET1dOQUNLICB8WWVzIHxZZXMgfFllcyB8CisgKiB8
U0NUUF9USU1FUl9UWVBFX0FTQ09ORiAgICAgICB8WWVzIHxZZXMgfFllcyB8CisgKiB8U0NUUF9U
SU1FUl9UWVBFX1NIVVRET1dOR1VBUkR8WWVzIHxZZXMgfE5vICB8CisgKiB8U0NUUF9USU1FUl9U
WVBFX0FVVE9DTE9TRSAgICB8WWVzIHxZZXMgfE5vICB8CisgKiB8U0NUUF9USU1FUl9UWVBFX1NU
UlJFU0VUICAgICB8WWVzIHxZZXMgfFllcyB8CisgKiB8U0NUUF9USU1FUl9UWVBFX0lOUEtJTEwg
ICAgICB8WWVzIHxObyAgfE5vICB8CisgKiB8U0NUUF9USU1FUl9UWVBFX0FTT0NLSUxMICAgICB8
WWVzIHxZZXMgfE5vICB8CisgKiB8U0NUUF9USU1FUl9UWVBFX0FERFJfV1EgICAgICB8Tm8gIHxO
byAgfE5vICB8CisgKiB8U0NUUF9USU1FUl9UWVBFX1BSSU1fREVMRVRFRCB8WWVzIHxZZXMgfE5v
ICB8CisgKgorICovCisKIHZvaWQKIHNjdHBfdGltZXJfc3RhcnQoaW50IHRfdHlwZSwgc3RydWN0
IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogICAgIHN0cnVjdCBzY3Rw
X25ldHMgKm5ldCkKIHsKLQl1aW50MzJfdCB0b190aWNrczsKIAlzdHJ1Y3Qgc2N0cF90aW1lciAq
dG1yOworCXVpbnQzMl90IHRvX3RpY2tzOworCXVpbnQzMl90IHJuZHZhbCwgaml0dGVyOwogCi0J
aWYgKCh0X3R5cGUgIT0gU0NUUF9USU1FUl9UWVBFX0FERFJfV1EpICYmIChpbnAgPT0gTlVMTCkp
Ci0JCXJldHVybjsKLQorCUtBU1NFUlQoc3RjYiA9PSBOVUxMIHx8IHN0Y2ItPnNjdHBfZXAgPT0g
aW5wLAorCSAgICAgICAgKCJzY3RwX3RpbWVyX3N0YXJ0IG9mIHR5cGUgJWQ6IGlucCA9ICVwLCBz
dGNiLT5zY3RwX2VwICVwIiwKKwkgICAgICAgICB0X3R5cGUsIHN0Y2IsIHN0Y2ItPnNjdHBfZXAp
KTsKIAl0bXIgPSBOVUxMOwotCWlmIChzdGNiKSB7CisJdG9fdGlja3MgPSAwOworCWlmIChzdGNi
ICE9IE5VTEwpIHsKIAkJU0NUUF9UQ0JfTE9DS19BU1NFUlQoc3RjYik7CisJfSBlbHNlIGlmIChp
bnAgIT0gTlVMTCkgeworCQlTQ1RQX0lOUF9XTE9DS19BU1NFUlQoaW5wKTsKKwl9IGVsc2Ugewor
CQlTQ1RQX1dRX0FERFJfTE9DS19BU1NFUlQoKTsKKwl9CisJaWYgKHN0Y2IgIT0gTlVMTCkgewor
CQkvKiBEb24ndCByZXN0YXJ0IHRpbWVyIG9uIGFzc29jaWF0aW9uIHRoYXQncyBhYm91dCB0byBi
ZSBraWxsZWQuICovCisJCWlmICgoc3RjYi0+YXNvYy5zdGF0ZSAmIFNDVFBfU1RBVEVfQUJPVVRf
VE9fQkVfRlJFRUQpICYmCisJCSAgICAodF90eXBlICE9IFNDVFBfVElNRVJfVFlQRV9BU09DS0lM
TCkpIHsKKwkJCVNDVFBEQkcoU0NUUF9ERUJVR19USU1FUjIsCisJCQkJIlRpbWVyIHR5cGUgJWQg
bm90IHN0YXJ0ZWQ6IGlucD0lcCwgc3RjYj0lcCwgbmV0PSVwIChzdGNiIGRlbGV0ZWQpLlxuIiwK
KwkJCQl0X3R5cGUsIGlucCwgc3RjYiwgbmV0KTsKKwkJCXJldHVybjsKKwkJfQorCQkvKiBEb24n
dCByZXN0YXJ0IHRpbWVyIG9uIG5ldCB0aGF0J3MgYmVlbiByZW1vdmVkLiAqLworCQlpZiAobmV0
ICE9IE5VTEwgJiYgKG5ldC0+ZGVzdF9zdGF0ZSAmIFNDVFBfQUREUl9CRUlOR19ERUxFVEVEKSkg
eworCQkJU0NUUERCRyhTQ1RQX0RFQlVHX1RJTUVSMiwKKwkJCQkiVGltZXIgdHlwZSAlZCBub3Qg
c3RhcnRlZDogaW5wPSVwLCBzdGNiPSVwLCBuZXQ9JXAgKG5ldCBkZWxldGVkKS5cbiIsCisJCQkJ
dF90eXBlLCBpbnAsIHN0Y2IsIG5ldCk7CisJCQlyZXR1cm47CisJCX0KIAl9CiAJc3dpdGNoICh0
X3R5cGUpIHsKLQljYXNlIFNDVFBfVElNRVJfVFlQRV9BRERSX1dROgotCQkvKiBPbmx5IDEgdGlj
ayBhd2F5IDotKSAqLwotCQl0bXIgPSAmU0NUUF9CQVNFX0lORk8oYWRkcl93cV90aW1lcik7Ci0J
CXRvX3RpY2tzID0gU0NUUF9BRERSRVNTX1RJQ0tfREVMQVk7Ci0JCWJyZWFrOwogCWNhc2UgU0NU
UF9USU1FUl9UWVBFX1NFTkQ6Ci0JCS8qIEhlcmUgd2UgdXNlIHRoZSBSVE8gdGltZXIgKi8KLQkJ
ewotCQkJaW50IHJ0b192YWw7Ci0KLQkJCWlmICgoc3RjYiA9PSBOVUxMKSB8fCAobmV0ID09IE5V
TEwpKSB7Ci0JCQkJcmV0dXJuOwotCQkJfQotCQkJdG1yID0gJm5ldC0+cnh0X3RpbWVyOwotCQkJ
aWYgKG5ldC0+UlRPID09IDApIHsKLQkJCQlydG9fdmFsID0gc3RjYi0+YXNvYy5pbml0aWFsX3J0
bzsKLQkJCX0gZWxzZSB7Ci0JCQkJcnRvX3ZhbCA9IG5ldC0+UlRPOwotCQkJfQotCQkJdG9fdGlj
a3MgPSBNU0VDX1RPX1RJQ0tTKHJ0b192YWwpOworCQkvKiBIZXJlIHdlIHVzZSB0aGUgUlRPIHRp
bWVyLiAqLworCQlpZiAoKGlucCA9PSBOVUxMKSB8fCAoc3RjYiA9PSBOVUxMKSB8fCAobmV0ID09
IE5VTEwpKSB7CisjaWZkZWYgSU5WQVJJQU5UUworCQkJcGFuaWMoInNjdHBfdGltZXJfc3RhcnQg
b2YgdHlwZSAlZDogaW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkJICAgICAgdF90
eXBlLCBpbnAsIHN0Y2IsIG5ldCk7CisjZWxzZQorCQkJcmV0dXJuOworI2VuZGlmCisJCX0KKwkJ
dG1yID0gJm5ldC0+cnh0X3RpbWVyOworCQlpZiAobmV0LT5SVE8gPT0gMCkgeworCQkJdG9fdGlj
a3MgPSBzY3RwX21zZWNzX3RvX3RpY2tzKHN0Y2ItPmFzb2MuaW5pdGlhbF9ydG8pOworCQl9IGVs
c2UgeworCQkJdG9fdGlja3MgPSBzY3RwX21zZWNzX3RvX3RpY2tzKG5ldC0+UlRPKTsKIAkJfQog
CQlicmVhazsKIAljYXNlIFNDVFBfVElNRVJfVFlQRV9JTklUOgogCQkvKgogCQkgKiBIZXJlIHdl
IHVzZSB0aGUgSU5JVCB0aW1lciBkZWZhdWx0IHVzdWFsbHkgYWJvdXQgMQotCQkgKiBtaW51dGUu
CisJCSAqIHNlY29uZC4KIAkJICovCi0JCWlmICgoc3RjYiA9PSBOVUxMKSB8fCAobmV0ID09IE5V
TEwpKSB7CisJCWlmICgoaW5wID09IE5VTEwpIHx8IChzdGNiID09IE5VTEwpIHx8IChuZXQgPT0g
TlVMTCkpIHsKKyNpZmRlZiBJTlZBUklBTlRTCisJCQlwYW5pYygic2N0cF90aW1lcl9zdGFydCBv
ZiB0eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9ICVwLCBuZXQgPSAlcCIsCisJCQkgICAgICB0X3R5
cGUsIGlucCwgc3RjYiwgbmV0KTsKKyNlbHNlCiAJCQlyZXR1cm47CisjZW5kaWYKIAkJfQogCQl0
bXIgPSAmbmV0LT5yeHRfdGltZXI7CiAJCWlmIChuZXQtPlJUTyA9PSAwKSB7Ci0JCQl0b190aWNr
cyA9IE1TRUNfVE9fVElDS1Moc3RjYi0+YXNvYy5pbml0aWFsX3J0byk7CisJCQl0b190aWNrcyA9
IHNjdHBfbXNlY3NfdG9fdGlja3Moc3RjYi0+YXNvYy5pbml0aWFsX3J0byk7CiAJCX0gZWxzZSB7
Ci0JCQl0b190aWNrcyA9IE1TRUNfVE9fVElDS1MobmV0LT5SVE8pOworCQkJdG9fdGlja3MgPSBz
Y3RwX21zZWNzX3RvX3RpY2tzKG5ldC0+UlRPKTsKIAkJfQogCQlicmVhazsKIAljYXNlIFNDVFBf
VElNRVJfVFlQRV9SRUNWOgogCQkvKgotCQkgKiBIZXJlIHdlIHVzZSB0aGUgRGVsYXllZC1BY2sg
dGltZXIgdmFsdWUgZnJvbSB0aGUgaW5wCisJCSAqIEhlcmUgd2UgdXNlIHRoZSBEZWxheWVkLUFj
ayB0aW1lciB2YWx1ZSBmcm9tIHRoZSBpbnAsCiAJCSAqIHVzdXN1YWxseSBhYm91dCAyMDBtcy4K
IAkJICovCi0JCWlmIChzdGNiID09IE5VTEwpIHsKKwkJaWYgKChpbnAgPT0gTlVMTCkgfHwgKHN0
Y2IgPT0gTlVMTCkgfHwgKG5ldCAhPSBOVUxMKSkgeworI2lmZGVmIElOVkFSSUFOVFMKKwkJCXBh
bmljKCJzY3RwX3RpbWVyX3N0YXJ0IG9mIHR5cGUgJWQ6IGlucCA9ICVwLCBzdGNiID0gJXAsIG5l
dCA9ICVwIiwKKwkJCSAgICAgIHRfdHlwZSwgaW5wLCBzdGNiLCBuZXQpOworI2Vsc2UKIAkJCXJl
dHVybjsKKyNlbmRpZgogCQl9CiAJCXRtciA9ICZzdGNiLT5hc29jLmRhY2tfdGltZXI7Ci0JCXRv
X3RpY2tzID0gTVNFQ19UT19USUNLUyhzdGNiLT5hc29jLmRlbGF5ZWRfYWNrKTsKKwkJdG9fdGlj
a3MgPSBzY3RwX21zZWNzX3RvX3RpY2tzKHN0Y2ItPmFzb2MuZGVsYXllZF9hY2spOwogCQlicmVh
azsKIAljYXNlIFNDVFBfVElNRVJfVFlQRV9TSFVURE9XTjoKIAkJLyogSGVyZSB3ZSB1c2UgdGhl
IFJUTyBvZiB0aGUgZGVzdGluYXRpb24uICovCi0JCWlmICgoc3RjYiA9PSBOVUxMKSB8fCAobmV0
ID09IE5VTEwpKSB7CisJCWlmICgoaW5wID09IE5VTEwpIHx8IChzdGNiID09IE5VTEwpIHx8IChu
ZXQgPT0gTlVMTCkpIHsKKyNpZmRlZiBJTlZBUklBTlRTCisJCQlwYW5pYygic2N0cF90aW1lcl9z
dGFydCBvZiB0eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9ICVwLCBuZXQgPSAlcCIsCisJCQkgICAg
ICB0X3R5cGUsIGlucCwgc3RjYiwgbmV0KTsKKyNlbHNlCiAJCQlyZXR1cm47CisjZW5kaWYKIAkJ
fQorCQl0bXIgPSAmbmV0LT5yeHRfdGltZXI7CiAJCWlmIChuZXQtPlJUTyA9PSAwKSB7Ci0JCQl0
b190aWNrcyA9IE1TRUNfVE9fVElDS1Moc3RjYi0+YXNvYy5pbml0aWFsX3J0byk7CisJCQl0b190
aWNrcyA9IHNjdHBfbXNlY3NfdG9fdGlja3Moc3RjYi0+YXNvYy5pbml0aWFsX3J0byk7CiAJCX0g
ZWxzZSB7Ci0JCQl0b190aWNrcyA9IE1TRUNfVE9fVElDS1MobmV0LT5SVE8pOworCQkJdG9fdGlj
a3MgPSBzY3RwX21zZWNzX3RvX3RpY2tzKG5ldC0+UlRPKTsKIAkJfQotCQl0bXIgPSAmbmV0LT5y
eHRfdGltZXI7CiAJCWJyZWFrOwogCWNhc2UgU0NUUF9USU1FUl9UWVBFX0hFQVJUQkVBVDoKIAkJ
LyoKLQkJICogdGhlIG5ldCBpcyB1c2VkIGhlcmUgc28gdGhhdCB3ZSBjYW4gYWRkIGluIHRoZSBS
VE8uIEV2ZW4KKwkJICogVGhlIG5ldCBpcyB1c2VkIGhlcmUgc28gdGhhdCB3ZSBjYW4gYWRkIGlu
IHRoZSBSVE8uIEV2ZW4KIAkJICogdGhvdWdoIHdlIHVzZSBhIGRpZmZlcmVudCB0aW1lci4gV2Ug
YWxzbyBhZGQgdGhlIEhCIHRpbWVyCiAJCSAqIFBMVVMgYSByYW5kb20gaml0dGVyLgogCQkgKi8K
LQkJaWYgKChzdGNiID09IE5VTEwpIHx8IChuZXQgPT0gTlVMTCkpIHsKKwkJaWYgKChpbnAgPT0g
TlVMTCkgfHwgKHN0Y2IgPT0gTlVMTCkgfHwgKG5ldCA9PSBOVUxMKSkgeworI2lmZGVmIElOVkFS
SUFOVFMKKwkJCXBhbmljKCJzY3RwX3RpbWVyX3N0YXJ0IG9mIHR5cGUgJWQ6IGlucCA9ICVwLCBz
dGNiID0gJXAsIG5ldCA9ICVwIiwKKwkJCSAgICAgIHRfdHlwZSwgaW5wLCBzdGNiLCBuZXQpOwor
I2Vsc2UKIAkJCXJldHVybjsKKyNlbmRpZgorCQl9CisJCWlmICgobmV0LT5kZXN0X3N0YXRlICYg
U0NUUF9BRERSX05PSEIpICYmCisJCSAgICAhKG5ldC0+ZGVzdF9zdGF0ZSAmIFNDVFBfQUREUl9V
TkNPTkZJUk1FRCkpIHsKKwkJCVNDVFBEQkcoU0NUUF9ERUJVR19USU1FUjIsCisJCQkgICAgICAg
ICJUaW1lciB0eXBlICVkIG5vdCBzdGFydGVkOiBpbnA9JXAsIHN0Y2I9JXAsIG5ldD0lcC5cbiIs
CisJCQkgICAgICAgIHRfdHlwZSwgaW5wLCBzdGNiLCBuZXQpOworCQkJcmV0dXJuOworCQl9CisJ
CXRtciA9ICZuZXQtPmhiX3RpbWVyOworCQlpZiAobmV0LT5SVE8gPT0gMCkgeworCQkJdG9fdGlj
a3MgPSBzdGNiLT5hc29jLmluaXRpYWxfcnRvOwogCQl9IGVsc2UgewotCQkJdWludDMyX3Qgcm5k
dmFsOwotCQkJdWludDMyX3Qgaml0dGVyOwotCi0JCQlpZiAoKG5ldC0+ZGVzdF9zdGF0ZSAmIFND
VFBfQUREUl9OT0hCKSAmJgotCQkJICAgICEobmV0LT5kZXN0X3N0YXRlICYgU0NUUF9BRERSX1VO
Q09ORklSTUVEKSkgewotCQkJCXJldHVybjsKLQkJCX0KLQkJCWlmIChuZXQtPlJUTyA9PSAwKSB7
Ci0JCQkJdG9fdGlja3MgPSBzdGNiLT5hc29jLmluaXRpYWxfcnRvOwotCQkJfSBlbHNlIHsKLQkJ
CQl0b190aWNrcyA9IG5ldC0+UlRPOwotCQkJfQotCQkJcm5kdmFsID0gc2N0cF9zZWxlY3RfaW5p
dGlhbF9UU04oJmlucC0+c2N0cF9lcCk7Ci0JCQlqaXR0ZXIgPSBybmR2YWwgJSB0b190aWNrczsK
LQkJCWlmIChqaXR0ZXIgPj0gKHRvX3RpY2tzID4+IDEpKSB7Ci0JCQkJdG9fdGlja3MgPSB0b190
aWNrcyArIChqaXR0ZXIgLSAodG9fdGlja3MgPj4gMSkpOwotCQkJfSBlbHNlIHsKLQkJCQl0b190
aWNrcyA9IHRvX3RpY2tzIC0gaml0dGVyOwotCQkJfQotCQkJaWYgKCEobmV0LT5kZXN0X3N0YXRl
ICYgU0NUUF9BRERSX1VOQ09ORklSTUVEKSAmJgotCQkJICAgICEobmV0LT5kZXN0X3N0YXRlICYg
U0NUUF9BRERSX1BGKSkgewotCQkJCXRvX3RpY2tzICs9IG5ldC0+aGVhcnRfYmVhdF9kZWxheTsK
LQkJCX0KLQkJCS8qCi0JCQkgKiBOb3cgd2UgbXVzdCBjb252ZXJ0IHRoZSB0b190aWNrcyB0aGF0
IGFyZSBub3cgaW4KLQkJCSAqIG1zIHRvIHRpY2tzLgotCQkJICovCi0JCQl0b190aWNrcyA9IE1T
RUNfVE9fVElDS1ModG9fdGlja3MpOwotCQkJdG1yID0gJm5ldC0+aGJfdGltZXI7CisJCQl0b190
aWNrcyA9IG5ldC0+UlRPOworCQl9CisJCXJuZHZhbCA9IHNjdHBfc2VsZWN0X2luaXRpYWxfVFNO
KCZpbnAtPnNjdHBfZXApOworCQlqaXR0ZXIgPSBybmR2YWwgJSB0b190aWNrczsKKwkJaWYgKGpp
dHRlciA+PSAodG9fdGlja3MgPj4gMSkpIHsKKwkJCXRvX3RpY2tzID0gdG9fdGlja3MgKyAoaml0
dGVyIC0gKHRvX3RpY2tzID4+IDEpKTsKKwkJfSBlbHNlIHsKKwkJCXRvX3RpY2tzID0gdG9fdGlj
a3MgLSBqaXR0ZXI7CiAJCX0KKwkJaWYgKCEobmV0LT5kZXN0X3N0YXRlICYgU0NUUF9BRERSX1VO
Q09ORklSTUVEKSAmJgorCQkgICAgIShuZXQtPmRlc3Rfc3RhdGUgJiBTQ1RQX0FERFJfUEYpKSB7
CisJCQl0b190aWNrcyArPSBuZXQtPmhlYXJ0X2JlYXRfZGVsYXk7CisJCX0KKwkJLyoKKwkJICog
Tm93IHdlIG11c3QgY29udmVydCB0aGUgdG9fdGlja3MgdGhhdCBhcmUgbm93IGluCisJCSAqIG1z
IHRvIHRpY2tzLgorCQkgKi8KKwkJdG9fdGlja3MgPSBzY3RwX21zZWNzX3RvX3RpY2tzKHRvX3Rp
Y2tzKTsKIAkJYnJlYWs7CiAJY2FzZSBTQ1RQX1RJTUVSX1RZUEVfQ09PS0lFOgogCQkvKgogCQkg
KiBIZXJlIHdlIGNhbiB1c2UgdGhlIFJUTyB0aW1lciBmcm9tIHRoZSBuZXR3b3JrIHNpbmNlIG9u
ZQotCQkgKiBSVFQgd2FzIGNvbXBlbGV0ZS4gSWYgYSByZXRyYW4gaGFwcGVuZWQgdGhlbiB3ZSB3
aWxsIGJlCi0JCSAqIHVzaW5nIHRoZSBSVE8gaW5pdGlhbCB2YWx1ZS4KKwkJICogUlRUIHdhcyBj
b21wbGV0ZS4gSWYgYSByZXRyYW5zbWlzc2lvbiBoYXBwZW5lZCB0aGVuIHdlIHdpbGwKKwkJICog
YmUgdXNpbmcgdGhlIFJUTyBpbml0aWFsIHZhbHVlLgogCQkgKi8KLQkJaWYgKChzdGNiID09IE5V
TEwpIHx8IChuZXQgPT0gTlVMTCkpIHsKKwkJaWYgKChpbnAgPT0gTlVMTCkgfHwgKHN0Y2IgPT0g
TlVMTCkgfHwgKG5ldCA9PSBOVUxMKSkgeworI2lmZGVmIElOVkFSSUFOVFMKKwkJCXBhbmljKCJz
Y3RwX3RpbWVyX3N0YXJ0IG9mIHR5cGUgJWQ6IGlucCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9ICVw
IiwKKwkJCSAgICAgIHRfdHlwZSwgaW5wLCBzdGNiLCBuZXQpOworI2Vsc2UKIAkJCXJldHVybjsK
KyNlbmRpZgogCQl9CisJCXRtciA9ICZuZXQtPnJ4dF90aW1lcjsKIAkJaWYgKG5ldC0+UlRPID09
IDApIHsKLQkJCXRvX3RpY2tzID0gTVNFQ19UT19USUNLUyhzdGNiLT5hc29jLmluaXRpYWxfcnRv
KTsKKwkJCXRvX3RpY2tzID0gc2N0cF9tc2Vjc190b190aWNrcyhzdGNiLT5hc29jLmluaXRpYWxf
cnRvKTsKIAkJfSBlbHNlIHsKLQkJCXRvX3RpY2tzID0gTVNFQ19UT19USUNLUyhuZXQtPlJUTyk7
CisJCQl0b190aWNrcyA9IHNjdHBfbXNlY3NfdG9fdGlja3MobmV0LT5SVE8pOwogCQl9Ci0JCXRt
ciA9ICZuZXQtPnJ4dF90aW1lcjsKIAkJYnJlYWs7CiAJY2FzZSBTQ1RQX1RJTUVSX1RZUEVfTkVX
Q09PS0lFOgogCQkvKgotCQkgKiBub3RoaW5nIG5lZWRlZCBidXQgdGhlIGVuZHBvaW50IGhlcmUg
dXN1c3VhbGx5IGFib3V0IDYwCisJCSAqIE5vdGhpbmcgbmVlZGVkIGJ1dCB0aGUgZW5kcG9pbnQg
aGVyZSB1c3VzdWFsbHkgYWJvdXQgNjAKIAkJICogbWludXRlcy4KIAkJICovCi0JCXRtciA9ICZp
bnAtPnNjdHBfZXAuc2lnbmF0dXJlX2NoYW5nZTsKLQkJdG9fdGlja3MgPSBpbnAtPnNjdHBfZXAu
c2N0cF90aW1lb3V0dGlja3NbU0NUUF9USU1FUl9TSUdOQVRVUkVdOwotCQlicmVhazsKLQljYXNl
IFNDVFBfVElNRVJfVFlQRV9BU09DS0lMTDoKLQkJaWYgKHN0Y2IgPT0gTlVMTCkgeworCQlpZiAo
KGlucCA9PSBOVUxMKSB8fCAoc3RjYiAhPSBOVUxMKSB8fCAobmV0ICE9IE5VTEwpKSB7CisjaWZk
ZWYgSU5WQVJJQU5UUworCQkJcGFuaWMoInNjdHBfdGltZXJfc3RhcnQgb2YgdHlwZSAlZDogaW5w
ID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkJICAgICAgdF90eXBlLCBpbnAsIHN0Y2Is
IG5ldCk7CisjZWxzZQogCQkJcmV0dXJuOworI2VuZGlmCiAJCX0KLQkJdG1yID0gJnN0Y2ItPmFz
b2Muc3RycmVzZXRfdGltZXI7Ci0JCXRvX3RpY2tzID0gTVNFQ19UT19USUNLUyhTQ1RQX0FTT0Nf
S0lMTF9USU1FT1VUKTsKLQkJYnJlYWs7Ci0JY2FzZSBTQ1RQX1RJTUVSX1RZUEVfSU5QS0lMTDoK
LQkJLyoKLQkJICogVGhlIGlucCBpcyBzZXR1cCB0byBkaWUuIFdlIHJlLXVzZSB0aGUgc2lnbmF0
dXJlX2NoYWdlCi0JCSAqIHRpbWVyIHNpbmNlIHRoYXQgaGFzIHN0b3BwZWQgYW5kIHdlIGFyZSBp
biB0aGUgR09ORQotCQkgKiBzdGF0ZS4KLQkJICovCiAJCXRtciA9ICZpbnAtPnNjdHBfZXAuc2ln
bmF0dXJlX2NoYW5nZTsKLQkJdG9fdGlja3MgPSBNU0VDX1RPX1RJQ0tTKFNDVFBfSU5QX0tJTExf
VElNRU9VVCk7CisJCXRvX3RpY2tzID0gaW5wLT5zY3RwX2VwLnNjdHBfdGltZW91dHRpY2tzW1ND
VFBfVElNRVJfU0lHTkFUVVJFXTsKIAkJYnJlYWs7CiAJY2FzZSBTQ1RQX1RJTUVSX1RZUEVfUEFU
SE1UVVJBSVNFOgogCQkvKgotCQkgKiBIZXJlIHdlIHVzZSB0aGUgdmFsdWUgZm91bmQgaW4gdGhl
IEVQIGZvciBQTVRVIHVzdXN1YWxseQorCQkgKiBIZXJlIHdlIHVzZSB0aGUgdmFsdWUgZm91bmQg
aW4gdGhlIEVQIGZvciBQTVRVRCwgdXN1c3VhbGx5CiAJCSAqIGFib3V0IDEwIG1pbnV0ZXMuCiAJ
CSAqLwotCQlpZiAoKHN0Y2IgPT0gTlVMTCkgfHwgKG5ldCA9PSBOVUxMKSkgeworCQlpZiAoKGlu
cCA9PSBOVUxMKSB8fCAoc3RjYiA9PSBOVUxMKSB8fCAobmV0ID09IE5VTEwpKSB7CisjaWZkZWYg
SU5WQVJJQU5UUworCQkJcGFuaWMoInNjdHBfdGltZXJfc3RhcnQgb2YgdHlwZSAlZDogaW5wID0g
JXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkJICAgICAgdF90eXBlLCBpbnAsIHN0Y2IsIG5l
dCk7CisjZWxzZQogCQkJcmV0dXJuOworI2VuZGlmCiAJCX0KIAkJaWYgKG5ldC0+ZGVzdF9zdGF0
ZSAmIFNDVFBfQUREUl9OT19QTVRVRCkgeworCQkJU0NUUERCRyhTQ1RQX0RFQlVHX1RJTUVSMiwK
KwkJCSAgICAgICAgIlRpbWVyIHR5cGUgJWQgbm90IHN0YXJ0ZWQ6IGlucD0lcCwgc3RjYj0lcCwg
bmV0PSVwLlxuIiwKKwkJCSAgICAgICAgdF90eXBlLCBpbnAsIHN0Y2IsIG5ldCk7CiAJCQlyZXR1
cm47CiAJCX0KLQkJdG9fdGlja3MgPSBpbnAtPnNjdHBfZXAuc2N0cF90aW1lb3V0dGlja3NbU0NU
UF9USU1FUl9QTVRVXTsKIAkJdG1yID0gJm5ldC0+cG10dV90aW1lcjsKKwkJdG9fdGlja3MgPSBp
bnAtPnNjdHBfZXAuc2N0cF90aW1lb3V0dGlja3NbU0NUUF9USU1FUl9QTVRVXTsKIAkJYnJlYWs7
CiAJY2FzZSBTQ1RQX1RJTUVSX1RZUEVfU0hVVERPV05BQ0s6Ci0JCS8qIEhlcmUgd2UgdXNlIHRo
ZSBSVE8gb2YgdGhlIGRlc3RpbmF0aW9uICovCi0JCWlmICgoc3RjYiA9PSBOVUxMKSB8fCAobmV0
ID09IE5VTEwpKSB7CisJCS8qIEhlcmUgd2UgdXNlIHRoZSBSVE8gb2YgdGhlIGRlc3RpbmF0aW9u
LiAqLworCQlpZiAoKGlucCA9PSBOVUxMKSB8fCAoc3RjYiA9PSBOVUxMKSB8fCAobmV0ID09IE5V
TEwpKSB7CisjaWZkZWYgSU5WQVJJQU5UUworCQkJcGFuaWMoInNjdHBfdGltZXJfc3RhcnQgb2Yg
dHlwZSAlZDogaW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkJICAgICAgdF90eXBl
LCBpbnAsIHN0Y2IsIG5ldCk7CisjZWxzZQogCQkJcmV0dXJuOworI2VuZGlmCiAJCX0KKwkJdG1y
ID0gJm5ldC0+cnh0X3RpbWVyOwogCQlpZiAobmV0LT5SVE8gPT0gMCkgewotCQkJdG9fdGlja3Mg
PSBNU0VDX1RPX1RJQ0tTKHN0Y2ItPmFzb2MuaW5pdGlhbF9ydG8pOworCQkJdG9fdGlja3MgPSBz
Y3RwX21zZWNzX3RvX3RpY2tzKHN0Y2ItPmFzb2MuaW5pdGlhbF9ydG8pOwogCQl9IGVsc2Ugewot
CQkJdG9fdGlja3MgPSBNU0VDX1RPX1RJQ0tTKG5ldC0+UlRPKTsKKwkJCXRvX3RpY2tzID0gc2N0
cF9tc2Vjc190b190aWNrcyhuZXQtPlJUTyk7CisJCX0KKwkJYnJlYWs7CisJY2FzZSBTQ1RQX1RJ
TUVSX1RZUEVfQVNDT05GOgorCQkvKgorCQkgKiBIZXJlIHRoZSB0aW1lciBjb21lcyBmcm9tIHRo
ZSBzdGNiIGJ1dCBpdHMgdmFsdWUgaXMgZnJvbQorCQkgKiB0aGUgbmV0J3MgUlRPLgorCQkgKi8K
KwkJaWYgKChpbnAgPT0gTlVMTCkgfHwgKHN0Y2IgPT0gTlVMTCkgfHwgKG5ldCA9PSBOVUxMKSkg
eworI2lmZGVmIElOVkFSSUFOVFMKKwkJCXBhbmljKCJzY3RwX3RpbWVyX3N0YXJ0IG9mIHR5cGUg
JWQ6IGlucCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9ICVwIiwKKwkJCSAgICAgIHRfdHlwZSwgaW5w
LCBzdGNiLCBuZXQpOworI2Vsc2UKKwkJCXJldHVybjsKKyNlbmRpZgorCQl9CisJCXRtciA9ICZz
dGNiLT5hc29jLmFzY29uZl90aW1lcjsKKwkJaWYgKG5ldC0+UlRPID09IDApIHsKKwkJCXRvX3Rp
Y2tzID0gc2N0cF9tc2Vjc190b190aWNrcyhzdGNiLT5hc29jLmluaXRpYWxfcnRvKTsKKwkJfSBl
bHNlIHsKKwkJCXRvX3RpY2tzID0gc2N0cF9tc2Vjc190b190aWNrcyhuZXQtPlJUTyk7CiAJCX0K
LQkJdG1yID0gJm5ldC0+cnh0X3RpbWVyOwogCQlicmVhazsKIAljYXNlIFNDVFBfVElNRVJfVFlQ
RV9TSFVURE9XTkdVQVJEOgogCQkvKgogCQkgKiBIZXJlIHdlIHVzZSB0aGUgZW5kcG9pbnRzIHNo
dXRkb3duIGd1YXJkIHRpbWVyIHVzdWFsbHkKIAkJICogYWJvdXQgMyBtaW51dGVzLgogCQkgKi8K
LQkJaWYgKHN0Y2IgPT0gTlVMTCkgeworCQlpZiAoKGlucCA9PSBOVUxMKSB8fCAoc3RjYiA9PSBO
VUxMKSB8fCAobmV0ICE9IE5VTEwpKSB7CisjaWZkZWYgSU5WQVJJQU5UUworCQkJcGFuaWMoInNj
dHBfdGltZXJfc3RhcnQgb2YgdHlwZSAlZDogaW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAi
LAorCQkJICAgICAgdF90eXBlLCBpbnAsIHN0Y2IsIG5ldCk7CisjZWxzZQogCQkJcmV0dXJuOwor
I2VuZGlmCiAJCX0KKwkJdG1yID0gJnN0Y2ItPmFzb2Muc2h1dF9ndWFyZF90aW1lcjsKIAkJaWYg
KGlucC0+c2N0cF9lcC5zY3RwX3RpbWVvdXR0aWNrc1tTQ1RQX1RJTUVSX01BWFNIVVRET1dOXSA9
PSAwKSB7Ci0JCQl0b190aWNrcyA9IDUgKiBNU0VDX1RPX1RJQ0tTKHN0Y2ItPmFzb2MubWF4cnRv
KTsKKwkJCWlmIChzdGNiLT5hc29jLm1heHJ0byA8IFVJTlQzMl9NQVggLyA1KSB7CisJCQkJdG9f
dGlja3MgPSBzY3RwX21zZWNzX3RvX3RpY2tzKDUgKiBzdGNiLT5hc29jLm1heHJ0byk7CisJCQl9
IGVsc2UgeworCQkJCXRvX3RpY2tzID0gc2N0cF9tc2Vjc190b190aWNrcyhVSU5UMzJfTUFYKTsK
KwkJCX0KIAkJfSBlbHNlIHsKIAkJCXRvX3RpY2tzID0gaW5wLT5zY3RwX2VwLnNjdHBfdGltZW91
dHRpY2tzW1NDVFBfVElNRVJfTUFYU0hVVERPV05dOwogCQl9Ci0JCXRtciA9ICZzdGNiLT5hc29j
LnNodXRfZ3VhcmRfdGltZXI7CisJCWJyZWFrOworCWNhc2UgU0NUUF9USU1FUl9UWVBFX0FVVE9D
TE9TRToKKwkJaWYgKChpbnAgPT0gTlVMTCkgfHwgKHN0Y2IgPT0gTlVMTCkgfHwgKG5ldCAhPSBO
VUxMKSkgeworI2lmZGVmIElOVkFSSUFOVFMKKwkJCXBhbmljKCJzY3RwX3RpbWVyX3N0YXJ0IG9m
IHR5cGUgJWQ6IGlucCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9ICVwIiwKKwkJCSAgICAgIHRfdHlw
ZSwgaW5wLCBzdGNiLCBuZXQpOworI2Vsc2UKKwkJCXJldHVybjsKKyNlbmRpZgorCQl9CisJCXRt
ciA9ICZzdGNiLT5hc29jLmF1dG9jbG9zZV90aW1lcjsKKwkJdG9fdGlja3MgPSBzdGNiLT5hc29j
LnNjdHBfYXV0b2Nsb3NlX3RpY2tzOwogCQlicmVhazsKIAljYXNlIFNDVFBfVElNRVJfVFlQRV9T
VFJSRVNFVDoKIAkJLyoKIAkJICogSGVyZSB0aGUgdGltZXIgY29tZXMgZnJvbSB0aGUgc3RjYiBi
dXQgaXRzIHZhbHVlIGlzIGZyb20KIAkJICogdGhlIG5ldCdzIFJUTy4KIAkJICovCi0JCWlmICgo
c3RjYiA9PSBOVUxMKSB8fCAobmV0ID09IE5VTEwpKSB7CisJCWlmICgoaW5wID09IE5VTEwpIHx8
IChzdGNiID09IE5VTEwpIHx8IChuZXQgPT0gTlVMTCkpIHsKKyNpZmRlZiBJTlZBUklBTlRTCisJ
CQlwYW5pYygic2N0cF90aW1lcl9zdGFydCBvZiB0eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9ICVw
LCBuZXQgPSAlcCIsCisJCQkgICAgICB0X3R5cGUsIGlucCwgc3RjYiwgbmV0KTsKKyNlbHNlCiAJ
CQlyZXR1cm47CisjZW5kaWYKIAkJfQorCQl0bXIgPSAmc3RjYi0+YXNvYy5zdHJyZXNldF90aW1l
cjsKIAkJaWYgKG5ldC0+UlRPID09IDApIHsKLQkJCXRvX3RpY2tzID0gTVNFQ19UT19USUNLUyhz
dGNiLT5hc29jLmluaXRpYWxfcnRvKTsKKwkJCXRvX3RpY2tzID0gc2N0cF9tc2Vjc190b190aWNr
cyhzdGNiLT5hc29jLmluaXRpYWxfcnRvKTsKIAkJfSBlbHNlIHsKLQkJCXRvX3RpY2tzID0gTVNF
Q19UT19USUNLUyhuZXQtPlJUTyk7CisJCQl0b190aWNrcyA9IHNjdHBfbXNlY3NfdG9fdGlja3Mo
bmV0LT5SVE8pOwogCQl9Ci0JCXRtciA9ICZzdGNiLT5hc29jLnN0cnJlc2V0X3RpbWVyOwogCQli
cmVhazsKLQljYXNlIFNDVFBfVElNRVJfVFlQRV9BU0NPTkY6CisJY2FzZSBTQ1RQX1RJTUVSX1RZ
UEVfSU5QS0lMTDoKIAkJLyoKLQkJICogSGVyZSB0aGUgdGltZXIgY29tZXMgZnJvbSB0aGUgc3Rj
YiBidXQgaXRzIHZhbHVlIGlzIGZyb20KLQkJICogdGhlIG5ldCdzIFJUTy4KKwkJICogVGhlIGlu
cCBpcyBzZXR1cCB0byBkaWUuIFdlIHJlLXVzZSB0aGUgc2lnbmF0dXJlX2NoYWdlCisJCSAqIHRp
bWVyIHNpbmNlIHRoYXQgaGFzIHN0b3BwZWQgYW5kIHdlIGFyZSBpbiB0aGUgR09ORQorCQkgKiBz
dGF0ZS4KIAkJICovCi0JCWlmICgoc3RjYiA9PSBOVUxMKSB8fCAobmV0ID09IE5VTEwpKSB7CisJ
CWlmICgoaW5wID09IE5VTEwpIHx8IChzdGNiICE9IE5VTEwpIHx8IChuZXQgIT0gTlVMTCkpIHsK
KyNpZmRlZiBJTlZBUklBTlRTCisJCQlwYW5pYygic2N0cF90aW1lcl9zdGFydCBvZiB0eXBlICVk
OiBpbnAgPSAlcCwgc3RjYiA9ICVwLCBuZXQgPSAlcCIsCisJCQkgICAgICB0X3R5cGUsIGlucCwg
c3RjYiwgbmV0KTsKKyNlbHNlCiAJCQlyZXR1cm47CisjZW5kaWYKIAkJfQotCQlpZiAobmV0LT5S
VE8gPT0gMCkgewotCQkJdG9fdGlja3MgPSBNU0VDX1RPX1RJQ0tTKHN0Y2ItPmFzb2MuaW5pdGlh
bF9ydG8pOwotCQl9IGVsc2UgewotCQkJdG9fdGlja3MgPSBNU0VDX1RPX1RJQ0tTKG5ldC0+UlRP
KTsKLQkJfQotCQl0bXIgPSAmc3RjYi0+YXNvYy5hc2NvbmZfdGltZXI7CisJCXRtciA9ICZpbnAt
PnNjdHBfZXAuc2lnbmF0dXJlX2NoYW5nZTsKKwkJdG9fdGlja3MgPSBzY3RwX21zZWNzX3RvX3Rp
Y2tzKFNDVFBfSU5QX0tJTExfVElNRU9VVCk7CiAJCWJyZWFrOwotCWNhc2UgU0NUUF9USU1FUl9U
WVBFX1BSSU1fREVMRVRFRDoKLQkJaWYgKChzdGNiID09IE5VTEwpIHx8IChuZXQgIT0gTlVMTCkp
IHsKKwljYXNlIFNDVFBfVElNRVJfVFlQRV9BU09DS0lMTDoKKwkJaWYgKChpbnAgPT0gTlVMTCkg
fHwgKHN0Y2IgPT0gTlVMTCkgfHwgKG5ldCAhPSBOVUxMKSkgeworI2lmZGVmIElOVkFSSUFOVFMK
KwkJCXBhbmljKCJzY3RwX3RpbWVyX3N0YXJ0IG9mIHR5cGUgJWQ6IGlucCA9ICVwLCBzdGNiID0g
JXAsIG5ldCA9ICVwIiwKKwkJCSAgICAgIHRfdHlwZSwgaW5wLCBzdGNiLCBuZXQpOworI2Vsc2UK
IAkJCXJldHVybjsKKyNlbmRpZgogCQl9Ci0JCXRvX3RpY2tzID0gTVNFQ19UT19USUNLUyhzdGNi
LT5hc29jLmluaXRpYWxfcnRvKTsKLQkJdG1yID0gJnN0Y2ItPmFzb2MuZGVsZXRlX3ByaW1fdGlt
ZXI7CisJCXRtciA9ICZzdGNiLT5hc29jLnN0cnJlc2V0X3RpbWVyOworCQl0b190aWNrcyA9IHNj
dHBfbXNlY3NfdG9fdGlja3MoU0NUUF9BU09DX0tJTExfVElNRU9VVCk7CiAJCWJyZWFrOwotCWNh
c2UgU0NUUF9USU1FUl9UWVBFX0FVVE9DTE9TRToKLQkJaWYgKHN0Y2IgPT0gTlVMTCkgeworCWNh
c2UgU0NUUF9USU1FUl9UWVBFX0FERFJfV1E6CisJCWlmICgoaW5wICE9IE5VTEwpIHx8IChzdGNi
ICE9IE5VTEwpIHx8IChuZXQgIT0gTlVMTCkpIHsKKyNpZmRlZiBJTlZBUklBTlRTCisJCQlwYW5p
Yygic2N0cF90aW1lcl9zdGFydCBvZiB0eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9ICVwLCBuZXQg
PSAlcCIsCisJCQkgICAgICB0X3R5cGUsIGlucCwgc3RjYiwgbmV0KTsKKyNlbHNlCiAJCQlyZXR1
cm47CisjZW5kaWYKIAkJfQotCQlpZiAoc3RjYi0+YXNvYy5zY3RwX2F1dG9jbG9zZV90aWNrcyA9
PSAwKSB7Ci0JCQkvKgotCQkJICogUmVhbGx5IGFuIGVycm9yIHNpbmNlIHN0Y2IgaXMgTk9UIHNl
dCB0bwotCQkJICogYXV0b2Nsb3NlCi0JCQkgKi8KKwkJLyogT25seSAxIHRpY2sgYXdheSA6LSkg
Ki8KKwkJdG1yID0gJlNDVFBfQkFTRV9JTkZPKGFkZHJfd3FfdGltZXIpOworCQl0b190aWNrcyA9
IFNDVFBfQUREUkVTU19USUNLX0RFTEFZOworCQlicmVhazsKKwljYXNlIFNDVFBfVElNRVJfVFlQ
RV9QUklNX0RFTEVURUQ6CisJCWlmICgoaW5wID09IE5VTEwpIHx8IChzdGNiID09IE5VTEwpIHx8
IChuZXQgIT0gTlVMTCkpIHsKKyNpZmRlZiBJTlZBUklBTlRTCisJCQlwYW5pYygic2N0cF90aW1l
cl9zdGFydCBvZiB0eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9ICVwLCBuZXQgPSAlcCIsCisJCQkg
ICAgICB0X3R5cGUsIGlucCwgc3RjYiwgbmV0KTsKKyNlbHNlCiAJCQlyZXR1cm47CisjZW5kaWYK
IAkJfQotCQl0b190aWNrcyA9IHN0Y2ItPmFzb2Muc2N0cF9hdXRvY2xvc2VfdGlja3M7Ci0JCXRt
ciA9ICZzdGNiLT5hc29jLmF1dG9jbG9zZV90aW1lcjsKKwkJdG1yID0gJnN0Y2ItPmFzb2MuZGVs
ZXRlX3ByaW1fdGltZXI7CisJCXRvX3RpY2tzID0gc2N0cF9tc2Vjc190b190aWNrcyhzdGNiLT5h
c29jLmluaXRpYWxfcnRvKTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKLQkJU0NUUERCRyhTQ1RQX0RF
QlVHX1RJTUVSMSwgIiVzOiBVbmtub3duIHRpbWVyIHR5cGUgJWRcbiIsCi0JCQlfX2Z1bmNfXywg
dF90eXBlKTsKLQkJcmV0dXJuOwotCQlicmVhazsKLQl9Ci0JaWYgKCh0b190aWNrcyA8PSAwKSB8
fCAodG1yID09IE5VTEwpKSB7Ci0JCVNDVFBEQkcoU0NUUF9ERUJVR19USU1FUjEsICIlczogJWQ6
c29mdHdhcmUgZXJyb3IgdG9fdGlja3M6JWQgdG1yOiVwIG5vdCBzZXQgPz9cbiIsCi0JCQlfX2Z1
bmNfXywgdF90eXBlLCB0b190aWNrcywgKHZvaWQgKil0bXIpOworI2lmZGVmIElOVkFSSUFOVFMK
KwkJcGFuaWMoIlVua25vd24gdGltZXIgdHlwZSAlZCIsIHRfdHlwZSk7CisjZWxzZQogCQlyZXR1
cm47CisjZW5kaWYKIAl9CisJS0FTU0VSVCh0bXIgIT0gTlVMTCwgKCJ0bXIgaXMgTlVMTCBmb3Ig
dGltZXIgdHlwZSAlZCIsIHRfdHlwZSkpOworCUtBU1NFUlQodG9fdGlja3MgPiAwLCAoInRvX3Rp
Y2tzID09IDAgZm9yIHRpbWVyIHR5cGUgJWQiLCB0X3R5cGUpKTsKIAlpZiAoU0NUUF9PU19USU1F
Ul9QRU5ESU5HKCZ0bXItPnRpbWVyKSkgewogCQkvKgotCQkgKiB3ZSBkbyBOT1QgYWxsb3cgeW91
IHRvIGhhdmUgaXQgYWxyZWFkeSBydW5uaW5nLiBpZiBpdCBpcwotCQkgKiB3ZSBsZWF2ZSB0aGUg
Y3VycmVudCBvbmUgdXAgdW5jaGFuZ2VkCisJCSAqIFdlIGRvIE5PVCBhbGxvdyB5b3UgdG8gaGF2
ZSBpdCBhbHJlYWR5IHJ1bm5pbmcuIElmIGl0IGlzLAorCQkgKiB3ZSBsZWF2ZSB0aGUgY3VycmVu
dCBvbmUgdXAgdW5jaGFuZ2VkLgogCQkgKi8KKwkJU0NUUERCRyhTQ1RQX0RFQlVHX1RJTUVSMiwK
KwkJICAgICAgICAiVGltZXIgdHlwZSAlZCBhbHJlYWR5IHJ1bm5pbmc6IGlucD0lcCwgc3RjYj0l
cCwgbmV0PSVwLlxuIiwKKwkJICAgICAgICAgdF90eXBlLCBpbnAsIHN0Y2IsIG5ldCk7CiAJCXJl
dHVybjsKIAl9Ci0JLyogQXQgdGhpcyBwb2ludCB3ZSBjYW4gcHJvY2VlZCAqLworCS8qIEF0IHRo
aXMgcG9pbnQgd2UgY2FuIHByb2NlZWQuICovCiAJaWYgKHRfdHlwZSA9PSBTQ1RQX1RJTUVSX1RZ
UEVfU0VORCkgewogCQlzdGNiLT5hc29jLm51bV9zZW5kX3RpbWVyc191cCsrOwogCX0KQEAgLTIz
MzksMTU1ICsyNjQwLDMwMSBAQCBzY3RwX3RpbWVyX3N0YXJ0KGludCB0X3R5cGUsIHN0cnVjdCBz
Y3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAl0bXItPnR5cGUgPSB0X3R5
cGU7CiAJdG1yLT5lcCA9ICh2b2lkICopaW5wOwogCXRtci0+dGNiID0gKHZvaWQgKilzdGNiOwot
CXRtci0+bmV0ID0gKHZvaWQgKiluZXQ7CisJaWYgKHRfdHlwZSA9PSBTQ1RQX1RJTUVSX1RZUEVf
U1RSUkVTRVQpIHsKKwkJdG1yLT5uZXQgPSBOVUxMOworCX0gZWxzZSB7CisJCXRtci0+bmV0ID0g
KHZvaWQgKiluZXQ7CisJfQogCXRtci0+c2VsZiA9ICh2b2lkICopdG1yOwotI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMDAwMAorI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJdG1yLT52bmV0ID0gKHZv
aWQgKiljdXJ2bmV0OwogI2VuZGlmCi0jaWZuZGVmIF9fUGFuZGFfXwogCXRtci0+dGlja3MgPSBz
Y3RwX2dldF90aWNrX2NvdW50KCk7Ci0jZW5kaWYKLQkodm9pZClTQ1RQX09TX1RJTUVSX1NUQVJU
KCZ0bXItPnRpbWVyLCB0b190aWNrcywgc2N0cF90aW1lb3V0X2hhbmRsZXIsIHRtcik7CisJaWYg
KFNDVFBfT1NfVElNRVJfU1RBUlQoJnRtci0+dGltZXIsIHRvX3RpY2tzLCBzY3RwX3RpbWVvdXRf
aGFuZGxlciwgdG1yKSA9PSAwKSB7CisJCVNDVFBEQkcoU0NUUF9ERUJVR19USU1FUjIsCisJCSAg
ICAgICAgIlRpbWVyIHR5cGUgJWQgc3RhcnRlZDogdGlja3M9JXUsIGlucD0lcCwgc3RjYj0lcCwg
bmV0PSVwLlxuIiwKKwkJICAgICAgICAgdF90eXBlLCB0b190aWNrcywgaW5wLCBzdGNiLCBuZXQp
OworCQkvKgorCQkgKiBJZiB0aGlzIGlzIGEgbmV3bHkgc2NoZWR1bGVkIGNhbGxvdXQsIGFzIG9w
cG9zZWQgdG8gYQorCQkgKiByZXNjaGVkdWxlZCBvbmUsIGluY3JlbWVudCByZWxldmFudCByZWZl
cmVuY2UgY291bnRzLgorCQkgKi8KKwkJaWYgKHRtci0+ZXAgIT0gTlVMTCkgeworCQkJU0NUUF9J
TlBfSU5DUl9SRUYoaW5wKTsKKwkJfQorCQlpZiAodG1yLT50Y2IgIT0gTlVMTCkgeworCQkJYXRv
bWljX2FkZF9pbnQoJnN0Y2ItPmFzb2MucmVmY250LCAxKTsKKwkJfQorCQlpZiAodG1yLT5uZXQg
IT0gTlVMTCkgeworCQkJYXRvbWljX2FkZF9pbnQoJm5ldC0+cmVmX2NvdW50LCAxKTsKKwkJfQor
CX0gZWxzZSB7CisJCS8qCisJCSAqIFRoaXMgc2hvdWxkIG5vdCBoYXBwZW4sIHNpbmNlIHdlIGNo
ZWNrZWQgZm9yIHBlbmRpbmcKKwkJICogYWJvdmUuCisJCSAqLworCQlTQ1RQREJHKFNDVFBfREVC
VUdfVElNRVIyLAorCQkgICAgICAgICJUaW1lciB0eXBlICVkIHJlc3RhcnRlZDogdGlja3M9JXUs
IGlucD0lcCwgc3RjYj0lcCwgbmV0PSVwLlxuIiwKKwkJICAgICAgICAgdF90eXBlLCB0b190aWNr
cywgaW5wLCBzdGNiLCBuZXQpOworCX0KIAlyZXR1cm47CiB9CiAKKy8qLQorICogVGhlIGZvbGxv
d2luZyB0YWJsZSBzaG93cyB3aGljaCBwYXJhbWV0ZXJzIG11c3QgYmUgcHJvdmlkZWQKKyAqIHdo
ZW4gY2FsbGluZyBzY3RwX3RpbWVyX3N0b3AoKS4gRm9yIHBhcmFtZXRlcnMgbm90IGJlaW5nCisg
KiBwcm92aWRlZCwgTlVMTCBtdXN0IGJlIHVzZWQuCisgKgorICogfE5hbWUgICAgICAgICAgICAg
ICAgICAgICAgICAgfGlucCB8c3RjYnxuZXQgfAorICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tfC0tLS18LS0tLXwtLS0tfAorICogfFNDVFBfVElNRVJfVFlQRV9TRU5EICAgICAgICAg
fFllcyB8WWVzIHxZZXMgfAorICogfFNDVFBfVElNRVJfVFlQRV9JTklUICAgICAgICAgfFllcyB8
WWVzIHxZZXMgfAorICogfFNDVFBfVElNRVJfVFlQRV9SRUNWICAgICAgICAgfFllcyB8WWVzIHxO
byAgfAorICogfFNDVFBfVElNRVJfVFlQRV9TSFVURE9XTiAgICAgfFllcyB8WWVzIHxZZXMgfAor
ICogfFNDVFBfVElNRVJfVFlQRV9IRUFSVEJFQVQgICAgfFllcyB8WWVzIHxZZXMgfAorICogfFND
VFBfVElNRVJfVFlQRV9DT09LSUUgICAgICAgfFllcyB8WWVzIHxZZXMgfAorICogfFNDVFBfVElN
RVJfVFlQRV9ORVdDT09LSUUgICAgfFllcyB8Tm8gIHxObyAgfAorICogfFNDVFBfVElNRVJfVFlQ
RV9QQVRITVRVUkFJU0UgfFllcyB8WWVzIHxZZXMgfAorICogfFNDVFBfVElNRVJfVFlQRV9TSFVU
RE9XTkFDSyAgfFllcyB8WWVzIHxZZXMgfAorICogfFNDVFBfVElNRVJfVFlQRV9BU0NPTkYgICAg
ICAgfFllcyB8WWVzIHxObyAgfAorICogfFNDVFBfVElNRVJfVFlQRV9TSFVURE9XTkdVQVJEfFll
cyB8WWVzIHxObyAgfAorICogfFNDVFBfVElNRVJfVFlQRV9BVVRPQ0xPU0UgICAgfFllcyB8WWVz
IHxObyAgfAorICogfFNDVFBfVElNRVJfVFlQRV9TVFJSRVNFVCAgICAgfFllcyB8WWVzIHxObyAg
fAorICogfFNDVFBfVElNRVJfVFlQRV9JTlBLSUxMICAgICAgfFllcyB8Tm8gIHxObyAgfAorICog
fFNDVFBfVElNRVJfVFlQRV9BU09DS0lMTCAgICAgfFllcyB8WWVzIHxObyAgfAorICogfFNDVFBf
VElNRVJfVFlQRV9BRERSX1dRICAgICAgfE5vICB8Tm8gIHxObyAgfAorICogfFNDVFBfVElNRVJf
VFlQRV9QUklNX0RFTEVURUQgfFllcyB8WWVzIHxObyAgfAorICoKKyAqLworCiB2b2lkCiBzY3Rw
X3RpbWVyX3N0b3AoaW50IHRfdHlwZSwgc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNj
dHBfdGNiICpzdGNiLAogICAgIHN0cnVjdCBzY3RwX25ldHMgKm5ldCwgdWludDMyX3QgZnJvbSkK
IHsKIAlzdHJ1Y3Qgc2N0cF90aW1lciAqdG1yOwogCi0JaWYgKCh0X3R5cGUgIT0gU0NUUF9USU1F
Ul9UWVBFX0FERFJfV1EpICYmCi0JICAgIChpbnAgPT0gTlVMTCkpCi0JCXJldHVybjsKLQotCXRt
ciA9IE5VTEw7Ci0JaWYgKHN0Y2IpIHsKKwlLQVNTRVJUKHN0Y2IgPT0gTlVMTCB8fCBzdGNiLT5z
Y3RwX2VwID09IGlucCwKKwkgICAgICAgICgic2N0cF90aW1lcl9zdG9wIG9mIHR5cGUgJWQ6IGlu
cCA9ICVwLCBzdGNiLT5zY3RwX2VwICVwIiwKKwkgICAgICAgICB0X3R5cGUsIHN0Y2IsIHN0Y2It
PnNjdHBfZXApKTsKKwlpZiAoc3RjYiAhPSBOVUxMKSB7CiAJCVNDVFBfVENCX0xPQ0tfQVNTRVJU
KHN0Y2IpOworCX0gZWxzZSBpZiAoaW5wICE9IE5VTEwpIHsKKwkJU0NUUF9JTlBfV0xPQ0tfQVNT
RVJUKGlucCk7CisJfSBlbHNlIHsKKwkJU0NUUF9XUV9BRERSX0xPQ0tfQVNTRVJUKCk7CiAJfQor
CXRtciA9IE5VTEw7CiAJc3dpdGNoICh0X3R5cGUpIHsKLQljYXNlIFNDVFBfVElNRVJfVFlQRV9B
RERSX1dROgotCQl0bXIgPSAmU0NUUF9CQVNFX0lORk8oYWRkcl93cV90aW1lcik7Ci0JCWJyZWFr
OwogCWNhc2UgU0NUUF9USU1FUl9UWVBFX1NFTkQ6Ci0JCWlmICgoc3RjYiA9PSBOVUxMKSB8fCAo
bmV0ID09IE5VTEwpKSB7CisJCWlmICgoaW5wID09IE5VTEwpIHx8IChzdGNiID09IE5VTEwpIHx8
IChuZXQgPT0gTlVMTCkpIHsKKyNpZmRlZiBJTlZBUklBTlRTCisJCQlwYW5pYygic2N0cF90aW1l
cl9zdG9wIG9mIHR5cGUgJWQ6IGlucCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9ICVwIiwKKwkJCSAg
ICAgIHRfdHlwZSwgaW5wLCBzdGNiLCBuZXQpOworI2Vsc2UKIAkJCXJldHVybjsKKyNlbmRpZgog
CQl9CiAJCXRtciA9ICZuZXQtPnJ4dF90aW1lcjsKIAkJYnJlYWs7CiAJY2FzZSBTQ1RQX1RJTUVS
X1RZUEVfSU5JVDoKLQkJaWYgKChzdGNiID09IE5VTEwpIHx8IChuZXQgPT0gTlVMTCkpIHsKKwkJ
aWYgKChpbnAgPT0gTlVMTCkgfHwgKHN0Y2IgPT0gTlVMTCkgfHwgKG5ldCA9PSBOVUxMKSkgewor
I2lmZGVmIElOVkFSSUFOVFMKKwkJCXBhbmljKCJzY3RwX3RpbWVyX3N0b3Agb2YgdHlwZSAlZDog
aW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkJICAgICAgdF90eXBlLCBpbnAsIHN0
Y2IsIG5ldCk7CisjZWxzZQogCQkJcmV0dXJuOworI2VuZGlmCiAJCX0KIAkJdG1yID0gJm5ldC0+
cnh0X3RpbWVyOwogCQlicmVhazsKIAljYXNlIFNDVFBfVElNRVJfVFlQRV9SRUNWOgotCQlpZiAo
c3RjYiA9PSBOVUxMKSB7CisJCWlmICgoaW5wID09IE5VTEwpIHx8IChzdGNiID09IE5VTEwpIHx8
IChuZXQgIT0gTlVMTCkpIHsKKyNpZmRlZiBJTlZBUklBTlRTCisJCQlwYW5pYygic2N0cF90aW1l
cl9zdG9wIG9mIHR5cGUgJWQ6IGlucCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9ICVwIiwKKwkJCSAg
ICAgIHRfdHlwZSwgaW5wLCBzdGNiLCBuZXQpOworI2Vsc2UKIAkJCXJldHVybjsKKyNlbmRpZgog
CQl9CiAJCXRtciA9ICZzdGNiLT5hc29jLmRhY2tfdGltZXI7CiAJCWJyZWFrOwogCWNhc2UgU0NU
UF9USU1FUl9UWVBFX1NIVVRET1dOOgotCQlpZiAoKHN0Y2IgPT0gTlVMTCkgfHwgKG5ldCA9PSBO
VUxMKSkgeworCQlpZiAoKGlucCA9PSBOVUxMKSB8fCAoc3RjYiA9PSBOVUxMKSB8fCAobmV0ID09
IE5VTEwpKSB7CisjaWZkZWYgSU5WQVJJQU5UUworCQkJcGFuaWMoInNjdHBfdGltZXJfc3RvcCBv
ZiB0eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9ICVwLCBuZXQgPSAlcCIsCisJCQkgICAgICB0X3R5
cGUsIGlucCwgc3RjYiwgbmV0KTsKKyNlbHNlCiAJCQlyZXR1cm47CisjZW5kaWYKIAkJfQogCQl0
bXIgPSAmbmV0LT5yeHRfdGltZXI7CiAJCWJyZWFrOwogCWNhc2UgU0NUUF9USU1FUl9UWVBFX0hF
QVJUQkVBVDoKLQkJaWYgKChzdGNiID09IE5VTEwpIHx8IChuZXQgPT0gTlVMTCkpIHsKKwkJaWYg
KChpbnAgPT0gTlVMTCkgfHwgKHN0Y2IgPT0gTlVMTCkgfHwgKG5ldCA9PSBOVUxMKSkgeworI2lm
ZGVmIElOVkFSSUFOVFMKKwkJCXBhbmljKCJzY3RwX3RpbWVyX3N0b3Agb2YgdHlwZSAlZDogaW5w
ID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkJICAgICAgdF90eXBlLCBpbnAsIHN0Y2Is
IG5ldCk7CisjZWxzZQogCQkJcmV0dXJuOworI2VuZGlmCiAJCX0KIAkJdG1yID0gJm5ldC0+aGJf
dGltZXI7CiAJCWJyZWFrOwogCWNhc2UgU0NUUF9USU1FUl9UWVBFX0NPT0tJRToKLQkJaWYgKChz
dGNiID09IE5VTEwpIHx8IChuZXQgPT0gTlVMTCkpIHsKKwkJaWYgKChpbnAgPT0gTlVMTCkgfHwg
KHN0Y2IgPT0gTlVMTCkgfHwgKG5ldCA9PSBOVUxMKSkgeworI2lmZGVmIElOVkFSSUFOVFMKKwkJ
CXBhbmljKCJzY3RwX3RpbWVyX3N0b3Agb2YgdHlwZSAlZDogaW5wID0gJXAsIHN0Y2IgPSAlcCwg
bmV0ID0gJXAiLAorCQkJICAgICAgdF90eXBlLCBpbnAsIHN0Y2IsIG5ldCk7CisjZWxzZQogCQkJ
cmV0dXJuOworI2VuZGlmCiAJCX0KIAkJdG1yID0gJm5ldC0+cnh0X3RpbWVyOwogCQlicmVhazsK
IAljYXNlIFNDVFBfVElNRVJfVFlQRV9ORVdDT09LSUU6Ci0JCS8qIG5vdGhpbmcgbmVlZGVkIGJ1
dCB0aGUgZW5kcG9pbnQgaGVyZSAqLwotCQl0bXIgPSAmaW5wLT5zY3RwX2VwLnNpZ25hdHVyZV9j
aGFuZ2U7Ci0JCS8qCi0JCSAqIFdlIHJlLXVzZSB0aGUgbmV3Y29va2llIHRpbWVyIGZvciB0aGUg
SU5QIGtpbGwgdGltZXIuIFdlCi0JCSAqIG11c3QgYXNzdXJlIHRoYXQgd2UgZG8gbm90IGtpbGwg
aXQgYnkgYWNjaWRlbnQuCi0JCSAqLwotCQlicmVhazsKLQljYXNlIFNDVFBfVElNRVJfVFlQRV9B
U09DS0lMTDoKLQkJLyoKLQkJICogU3RvcCB0aGUgYXNvYyBraWxsIHRpbWVyLgotCQkgKi8KLQkJ
aWYgKHN0Y2IgPT0gTlVMTCkgeworCQlpZiAoKGlucCA9PSBOVUxMKSB8fCAoc3RjYiAhPSBOVUxM
KSB8fCAobmV0ICE9IE5VTEwpKSB7CisjaWZkZWYgSU5WQVJJQU5UUworCQkJcGFuaWMoInNjdHBf
dGltZXJfc3RvcCBvZiB0eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9ICVwLCBuZXQgPSAlcCIsCisJ
CQkgICAgICB0X3R5cGUsIGlucCwgc3RjYiwgbmV0KTsKKyNlbHNlCiAJCQlyZXR1cm47CisjZW5k
aWYKIAkJfQotCQl0bXIgPSAmc3RjYi0+YXNvYy5zdHJyZXNldF90aW1lcjsKLQkJYnJlYWs7Ci0K
LQljYXNlIFNDVFBfVElNRVJfVFlQRV9JTlBLSUxMOgotCQkvKgotCQkgKiBUaGUgaW5wIGlzIHNl
dHVwIHRvIGRpZS4gV2UgcmUtdXNlIHRoZSBzaWduYXR1cmVfY2hhZ2UKLQkJICogdGltZXIgc2lu
Y2UgdGhhdCBoYXMgc3RvcHBlZCBhbmQgd2UgYXJlIGluIHRoZSBHT05FCi0JCSAqIHN0YXRlLgot
CQkgKi8KIAkJdG1yID0gJmlucC0+c2N0cF9lcC5zaWduYXR1cmVfY2hhbmdlOwogCQlicmVhazsK
IAljYXNlIFNDVFBfVElNRVJfVFlQRV9QQVRITVRVUkFJU0U6Ci0JCWlmICgoc3RjYiA9PSBOVUxM
KSB8fCAobmV0ID09IE5VTEwpKSB7CisJCWlmICgoaW5wID09IE5VTEwpIHx8IChzdGNiID09IE5V
TEwpIHx8IChuZXQgPT0gTlVMTCkpIHsKKyNpZmRlZiBJTlZBUklBTlRTCisJCQlwYW5pYygic2N0
cF90aW1lcl9zdG9wIG9mIHR5cGUgJWQ6IGlucCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9ICVwIiwK
KwkJCSAgICAgIHRfdHlwZSwgaW5wLCBzdGNiLCBuZXQpOworI2Vsc2UKIAkJCXJldHVybjsKKyNl
bmRpZgogCQl9CiAJCXRtciA9ICZuZXQtPnBtdHVfdGltZXI7CiAJCWJyZWFrOwogCWNhc2UgU0NU
UF9USU1FUl9UWVBFX1NIVVRET1dOQUNLOgotCQlpZiAoKHN0Y2IgPT0gTlVMTCkgfHwgKG5ldCA9
PSBOVUxMKSkgeworCQlpZiAoKGlucCA9PSBOVUxMKSB8fCAoc3RjYiA9PSBOVUxMKSB8fCAobmV0
ID09IE5VTEwpKSB7CisjaWZkZWYgSU5WQVJJQU5UUworCQkJcGFuaWMoInNjdHBfdGltZXJfc3Rv
cCBvZiB0eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9ICVwLCBuZXQgPSAlcCIsCisJCQkgICAgICB0
X3R5cGUsIGlucCwgc3RjYiwgbmV0KTsKKyNlbHNlCiAJCQlyZXR1cm47CisjZW5kaWYKIAkJfQog
CQl0bXIgPSAmbmV0LT5yeHRfdGltZXI7CiAJCWJyZWFrOworCWNhc2UgU0NUUF9USU1FUl9UWVBF
X0FTQ09ORjoKKwkJaWYgKChpbnAgPT0gTlVMTCkgfHwgKHN0Y2IgPT0gTlVMTCkgfHwgKG5ldCAh
PSBOVUxMKSkgeworI2lmZGVmIElOVkFSSUFOVFMKKwkJCXBhbmljKCJzY3RwX3RpbWVyX3N0b3Ag
b2YgdHlwZSAlZDogaW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkJICAgICAgdF90
eXBlLCBpbnAsIHN0Y2IsIG5ldCk7CisjZWxzZQorCQkJcmV0dXJuOworI2VuZGlmCisJCX0KKwkJ
dG1yID0gJnN0Y2ItPmFzb2MuYXNjb25mX3RpbWVyOworCQlicmVhazsKIAljYXNlIFNDVFBfVElN
RVJfVFlQRV9TSFVURE9XTkdVQVJEOgotCQlpZiAoc3RjYiA9PSBOVUxMKSB7CisJCWlmICgoaW5w
ID09IE5VTEwpIHx8IChzdGNiID09IE5VTEwpIHx8IChuZXQgIT0gTlVMTCkpIHsKKyNpZmRlZiBJ
TlZBUklBTlRTCisJCQlwYW5pYygic2N0cF90aW1lcl9zdG9wIG9mIHR5cGUgJWQ6IGlucCA9ICVw
LCBzdGNiID0gJXAsIG5ldCA9ICVwIiwKKwkJCSAgICAgIHRfdHlwZSwgaW5wLCBzdGNiLCBuZXQp
OworI2Vsc2UKIAkJCXJldHVybjsKKyNlbmRpZgogCQl9CiAJCXRtciA9ICZzdGNiLT5hc29jLnNo
dXRfZ3VhcmRfdGltZXI7CiAJCWJyZWFrOworCWNhc2UgU0NUUF9USU1FUl9UWVBFX0FVVE9DTE9T
RToKKwkJaWYgKChpbnAgPT0gTlVMTCkgfHwgKHN0Y2IgPT0gTlVMTCkgfHwgKG5ldCAhPSBOVUxM
KSkgeworI2lmZGVmIElOVkFSSUFOVFMKKwkJCXBhbmljKCJzY3RwX3RpbWVyX3N0b3Agb2YgdHlw
ZSAlZDogaW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkJICAgICAgdF90eXBlLCBp
bnAsIHN0Y2IsIG5ldCk7CisjZWxzZQorCQkJcmV0dXJuOworI2VuZGlmCisJCX0KKwkJdG1yID0g
JnN0Y2ItPmFzb2MuYXV0b2Nsb3NlX3RpbWVyOworCQlicmVhazsKIAljYXNlIFNDVFBfVElNRVJf
VFlQRV9TVFJSRVNFVDoKLQkJaWYgKHN0Y2IgPT0gTlVMTCkgeworCQlpZiAoKGlucCA9PSBOVUxM
KSB8fCAoc3RjYiA9PSBOVUxMKSB8fCAobmV0ICE9IE5VTEwpKSB7CisjaWZkZWYgSU5WQVJJQU5U
UworCQkJcGFuaWMoInNjdHBfdGltZXJfc3RvcCBvZiB0eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9
ICVwLCBuZXQgPSAlcCIsCisJCQkgICAgICB0X3R5cGUsIGlucCwgc3RjYiwgbmV0KTsKKyNlbHNl
CiAJCQlyZXR1cm47CisjZW5kaWYKIAkJfQogCQl0bXIgPSAmc3RjYi0+YXNvYy5zdHJyZXNldF90
aW1lcjsKIAkJYnJlYWs7Ci0JY2FzZSBTQ1RQX1RJTUVSX1RZUEVfQVNDT05GOgotCQlpZiAoc3Rj
YiA9PSBOVUxMKSB7CisJY2FzZSBTQ1RQX1RJTUVSX1RZUEVfSU5QS0lMTDoKKwkJLyoKKwkJICog
VGhlIGlucCBpcyBzZXR1cCB0byBkaWUuIFdlIHJlLXVzZSB0aGUgc2lnbmF0dXJlX2NoYWdlCisJ
CSAqIHRpbWVyIHNpbmNlIHRoYXQgaGFzIHN0b3BwZWQgYW5kIHdlIGFyZSBpbiB0aGUgR09ORQor
CQkgKiBzdGF0ZS4KKwkJICovCisJCWlmICgoaW5wID09IE5VTEwpIHx8IChzdGNiICE9IE5VTEwp
IHx8IChuZXQgIT0gTlVMTCkpIHsKKyNpZmRlZiBJTlZBUklBTlRTCisJCQlwYW5pYygic2N0cF90
aW1lcl9zdG9wIG9mIHR5cGUgJWQ6IGlucCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9ICVwIiwKKwkJ
CSAgICAgIHRfdHlwZSwgaW5wLCBzdGNiLCBuZXQpOworI2Vsc2UKIAkJCXJldHVybjsKKyNlbmRp
ZgogCQl9Ci0JCXRtciA9ICZzdGNiLT5hc29jLmFzY29uZl90aW1lcjsKKwkJdG1yID0gJmlucC0+
c2N0cF9lcC5zaWduYXR1cmVfY2hhbmdlOwogCQlicmVhazsKLQljYXNlIFNDVFBfVElNRVJfVFlQ
RV9QUklNX0RFTEVURUQ6Ci0JCWlmIChzdGNiID09IE5VTEwpIHsKKwljYXNlIFNDVFBfVElNRVJf
VFlQRV9BU09DS0lMTDoKKwkJaWYgKChpbnAgPT0gTlVMTCkgfHwgKHN0Y2IgPT0gTlVMTCkgfHwg
KG5ldCAhPSBOVUxMKSkgeworI2lmZGVmIElOVkFSSUFOVFMKKwkJCXBhbmljKCJzY3RwX3RpbWVy
X3N0b3Agb2YgdHlwZSAlZDogaW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkJICAg
ICAgdF90eXBlLCBpbnAsIHN0Y2IsIG5ldCk7CisjZWxzZQogCQkJcmV0dXJuOworI2VuZGlmCiAJ
CX0KLQkJdG1yID0gJnN0Y2ItPmFzb2MuZGVsZXRlX3ByaW1fdGltZXI7CisJCXRtciA9ICZzdGNi
LT5hc29jLnN0cnJlc2V0X3RpbWVyOwogCQlicmVhazsKLQljYXNlIFNDVFBfVElNRVJfVFlQRV9B
VVRPQ0xPU0U6Ci0JCWlmIChzdGNiID09IE5VTEwpIHsKKwljYXNlIFNDVFBfVElNRVJfVFlQRV9B
RERSX1dROgorCQlpZiAoKGlucCAhPSBOVUxMKSB8fCAoc3RjYiAhPSBOVUxMKSB8fCAobmV0ICE9
IE5VTEwpKSB7CisjaWZkZWYgSU5WQVJJQU5UUworCQkJcGFuaWMoInNjdHBfdGltZXJfc3RvcCBv
ZiB0eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9ICVwLCBuZXQgPSAlcCIsCisJCQkgICAgICB0X3R5
cGUsIGlucCwgc3RjYiwgbmV0KTsKKyNlbHNlCisJCQlyZXR1cm47CisjZW5kaWYKKwkJfQorCQl0
bXIgPSAmU0NUUF9CQVNFX0lORk8oYWRkcl93cV90aW1lcik7CisJCWJyZWFrOworCWNhc2UgU0NU
UF9USU1FUl9UWVBFX1BSSU1fREVMRVRFRDoKKwkJaWYgKChpbnAgPT0gTlVMTCkgfHwgKHN0Y2Ig
PT0gTlVMTCkgfHwgKG5ldCAhPSBOVUxMKSkgeworI2lmZGVmIElOVkFSSUFOVFMKKwkJCXBhbmlj
KCJzY3RwX3RpbWVyX3N0b3Agb2YgdHlwZSAlZDogaW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0g
JXAiLAorCQkJICAgICAgdF90eXBlLCBpbnAsIHN0Y2IsIG5ldCk7CisjZWxzZQogCQkJcmV0dXJu
OworI2VuZGlmCiAJCX0KLQkJdG1yID0gJnN0Y2ItPmFzb2MuYXV0b2Nsb3NlX3RpbWVyOworCQl0
bXIgPSAmc3RjYi0+YXNvYy5kZWxldGVfcHJpbV90aW1lcjsKIAkJYnJlYWs7CiAJZGVmYXVsdDoK
LQkJU0NUUERCRyhTQ1RQX0RFQlVHX1RJTUVSMSwgIiVzOiBVbmtub3duIHRpbWVyIHR5cGUgJWRc
biIsCi0JCQlfX2Z1bmNfXywgdF90eXBlKTsKLQkJYnJlYWs7Ci0JfQotCWlmICh0bXIgPT0gTlVM
TCkgeworI2lmZGVmIElOVkFSSUFOVFMKKwkJcGFuaWMoIlVua25vd24gdGltZXIgdHlwZSAlZCIs
IHRfdHlwZSk7CisjZWxzZQogCQlyZXR1cm47CisjZW5kaWYKIAl9Ci0JaWYgKCh0bXItPnR5cGUg
IT0gdF90eXBlKSAmJiB0bXItPnR5cGUpIHsKKwlLQVNTRVJUKHRtciAhPSBOVUxMLCAoInRtciBp
cyBOVUxMIGZvciB0aW1lciB0eXBlICVkIiwgdF90eXBlKSk7CisJaWYgKCh0bXItPnR5cGUgIT0g
U0NUUF9USU1FUl9UWVBFX05PTkUpICYmCisJICAgICh0bXItPnR5cGUgIT0gdF90eXBlKSkgewog
CQkvKgogCQkgKiBPayB3ZSBoYXZlIGEgdGltZXIgdGhhdCBpcyB1bmRlciBqb2ludCB1c2UuIENv
b2tpZSB0aW1lcgogCQkgKiBwZXIgY2hhbmNlIHdpdGggdGhlIFNFTkQgdGltZXIuIFdlIHRoZXJl
Zm9yZSBhcmUgTk9UCiAJCSAqIHJ1bm5pbmcgdGhlIHRpbWVyIHRoYXQgdGhlIGNhbGxlciB3YW50
cyBzdG9wcGVkLiAgU28ganVzdAogCQkgKiByZXR1cm4uCiAJCSAqLworCQlTQ1RQREJHKFNDVFBf
REVCVUdfVElNRVIyLAorCQkgICAgICAgICJTaGFyZWQgdGltZXIgdHlwZSAlZCBub3QgcnVubmlu
ZzogaW5wPSVwLCBzdGNiPSVwLCBuZXQ9JXAuXG4iLAorCQkgICAgICAgICB0X3R5cGUsIGlucCwg
c3RjYiwgbmV0KTsKIAkJcmV0dXJuOwogCX0KIAlpZiAoKHRfdHlwZSA9PSBTQ1RQX1RJTUVSX1RZ
UEVfU0VORCkgJiYgKHN0Y2IgIT0gTlVMTCkpIHsKQEAgLTI0OTgsNyArMjk0NSw0NSBAQCBzY3Rw
X3RpbWVyX3N0b3AoaW50IHRfdHlwZSwgc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNj
dHBfdGNiICpzdGNiLAogCX0KIAl0bXItPnNlbGYgPSBOVUxMOwogCXRtci0+c3RvcHBlZF9mcm9t
ID0gZnJvbTsKLQkodm9pZClTQ1RQX09TX1RJTUVSX1NUT1AoJnRtci0+dGltZXIpOworCWlmIChT
Q1RQX09TX1RJTUVSX1NUT1AoJnRtci0+dGltZXIpID09IDEpIHsKKwkJS0FTU0VSVCh0bXItPmVw
ID09IGlucCwKKwkJICAgICAgICAoInNjdHBfdGltZXJfc3RvcCBvZiB0eXBlICVkOiBpbnAgPSAl
cCwgdG1yLT5pbnAgPSAlcCIsCisJCSAgICAgICAgIHRfdHlwZSwgaW5wLCB0bXItPmVwKSk7CisJ
CUtBU1NFUlQodG1yLT50Y2IgPT0gc3RjYiwKKwkJICAgICAgICAoInNjdHBfdGltZXJfc3RvcCBv
ZiB0eXBlICVkOiBzdGNiID0gJXAsIHRtci0+c3RjYiA9ICVwIiwKKwkJICAgICAgICAgdF90eXBl
LCBzdGNiLCB0bXItPnRjYikpOworCQlLQVNTRVJUKCgodF90eXBlID09IFNDVFBfVElNRVJfVFlQ
RV9BU0NPTkYpICYmICh0bXItPm5ldCAhPSBOVUxMKSkgfHwKKwkJICAgICAgICAoKHRfdHlwZSAh
PSBTQ1RQX1RJTUVSX1RZUEVfQVNDT05GKSAmJiAodG1yLT5uZXQgPT0gbmV0KSksCisJCSAgICAg
ICAgKCJzY3RwX3RpbWVyX3N0b3Agb2YgdHlwZSAlZDogbmV0ID0gJXAsIHRtci0+bmV0ID0gJXAi
LAorCQkgICAgICAgICB0X3R5cGUsIG5ldCwgdG1yLT5uZXQpKTsKKwkJU0NUUERCRyhTQ1RQX0RF
QlVHX1RJTUVSMiwKKwkJICAgICAgICAiVGltZXIgdHlwZSAlZCBzdG9wcGVkOiBpbnA9JXAsIHN0
Y2I9JXAsIG5ldD0lcC5cbiIsCisJCSAgICAgICAgdF90eXBlLCBpbnAsIHN0Y2IsIG5ldCk7CisJ
CS8qCisJCSAqIElmIHRoZSB0aW1lciB3YXMgYWN0dWFsbHkgc3RvcHBlZCwgZGVjcmVtZW50IHJl
ZmVyZW5jZSBjb3VudHMKKwkJICogdGhhdCB3ZXJlIGluY3JlbWVudGVkIGluIHNjdHBfdGltZXJf
c3RhcnQoKS4KKwkJICovCisJCWlmICh0bXItPmVwICE9IE5VTEwpIHsKKwkJCVNDVFBfSU5QX0RF
Q1JfUkVGKGlucCk7CisJCQl0bXItPmVwID0gTlVMTDsKKwkJfQorCQlpZiAodG1yLT50Y2IgIT0g
TlVMTCkgeworCQkJYXRvbWljX2FkZF9pbnQoJnN0Y2ItPmFzb2MucmVmY250LCAtMSk7CisJCQl0
bXItPnRjYiA9IE5VTEw7CisJCX0KKwkJaWYgKHRtci0+bmV0ICE9IE5VTEwpIHsKKwkJCS8qCisJ
CQkgKiBDYW4ndCB1c2UgbmV0LCBzaW5jZSBpdCBkb2Vzbid0IHdvcmsgZm9yCisJCQkgKiBTQ1RQ
X1RJTUVSX1RZUEVfQVNDT05GLgorCQkJICovCisJCQlzY3RwX2ZyZWVfcmVtb3RlX2FkZHIoKHN0
cnVjdCBzY3RwX25ldHMgKil0bXItPm5ldCk7CisJCQl0bXItPm5ldCA9IE5VTEw7CisJCX0KKwl9
IGVsc2UgeworCQlTQ1RQREJHKFNDVFBfREVCVUdfVElNRVIyLAorCQkgICAgICAgICJUaW1lciB0
eXBlICVkIG5vdCBzdG9wcGVkOiBpbnA9JXAsIHN0Y2I9JXAsIG5ldD0lcC5cbiIsCisJCSAgICAg
ICAgIHRfdHlwZSwgaW5wLCBzdGNiLCBuZXQpOworCX0KIAlyZXR1cm47CiB9CiAKQEAgLTI1NDks
MjUgKzMwMzQsMjQgQEAgc2N0cF9tdHVfc2l6ZV9yZXNldChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5w
LAogCiAKIC8qCi0gKiBnaXZlbiBhbiBhc3NvY2lhdGlvbiBhbmQgc3RhcnRpbmcgdGltZSBvZiB0
aGUgY3VycmVudCBSVFQgcGVyaW9kIHJldHVybgotICogUlRPIGluIG51bWJlciBvZiBtc2VjcyBu
ZXQgc2hvdWxkIHBvaW50IHRvIHRoZSBjdXJyZW50IG5ldHdvcmsKKyAqIEdpdmVuIGFuIGFzc29j
aWF0aW9uIGFuZCBzdGFydGluZyB0aW1lIG9mIHRoZSBjdXJyZW50IFJUVCBwZXJpb2QsIHVwZGF0
ZQorICogUlRPIGluIG51bWJlciBvZiBtc2Vjcy4gbmV0IHNob3VsZCBwb2ludCB0byB0aGUgY3Vy
cmVudCBuZXR3b3JrLgorICogUmV0dXJuIDEsIGlmIGFuIFJUTyB1cGRhdGUgd2FzIHBlcmZvcm1l
ZCwgcmV0dXJuIDAgaWYgbm8gdXBkYXRlIHdhcworICogcGVyZm9ybWVkIGR1ZSB0byBpbnZhbGlk
IHN0YXJ0aW5nIHBvaW50LgogICovCiAKLXVpbnQzMl90CitpbnQKIHNjdHBfY2FsY3VsYXRlX3J0
byhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCSAgIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICph
c29jLAogCQkgICBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsCiAJCSAgIHN0cnVjdCB0aW1ldmFsICpv
bGQsCiAJCSAgIGludCBydHRfZnJvbV9zYWNrKQogewotCS8qLQotCSAqIGdpdmVuIGFuIGFzc29j
aWF0aW9uIGFuZCB0aGUgc3RhcnRpbmcgdGltZSBvZiB0aGUgY3VycmVudCBSVFQKLQkgKiBwZXJp
b2QgKGluIHZhbHVlMS92YWx1ZTIpIHJldHVybiBSVE8gaW4gbnVtYmVyIG9mIG1zZWNzLgotCSAq
LwotCWludDMyX3QgcnR0OyAvKiBSVFQgaW4gbXMgKi8KKwlzdHJ1Y3QgdGltZXZhbCBub3c7CisJ
dWludDY0X3QgcnR0X3VzOwkvKiBSVFQgaW4gdXMgKi8KKwlpbnQzMl90IHJ0dDsJCS8qIFJUVCBp
biBtcyAqLwogCXVpbnQzMl90IG5ld19ydG87CiAJaW50IGZpcnN0X21lYXN1cmUgPSAwOwotCXN0
cnVjdCB0aW1ldmFsIG5vdzsKIAogCS8qKioqKioqKioqKioqKioqKioqKioqKiovCiAJLyogMS4g
Y2FsY3VsYXRlIG5ldyBSVFQgKi8KQEAgLTI1NzgsMTAgKzMwNjIsMTkgQEAgc2N0cF9jYWxjdWxh
dGVfcnRvKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAl9IGVsc2UgewogCQkodm9pZClTQ1RQX0dF
VFRJTUVfVElNRVZBTCgmbm93KTsKIAl9CisJaWYgKChvbGQtPnR2X3NlYyA+IG5vdy50dl9zZWMp
IHx8CisJICAgICgob2xkLT50dl9zZWMgPT0gbm93LnR2X3NlYykgJiYgKG9sZC0+dHZfdXNlYyA+
IG5vdy50dl91c2VjKSkpIHsKKwkJLyogVGhlIHN0YXJ0aW5nIHBvaW50IGlzIGluIHRoZSBmdXR1
cmUuICovCisJCXJldHVybiAoMCk7CisJfQogCXRpbWV2YWxzdWIoJm5vdywgb2xkKTsKKwlydHRf
dXMgPSAodWludDY0X3QpMTAwMDAwMCAqICh1aW50NjRfdClub3cudHZfc2VjICsgKHVpbnQ2NF90
KW5vdy50dl91c2VjOworCWlmIChydHRfdXMgPiBTQ1RQX1JUT19VUFBFUl9CT1VORCAqIDEwMDAp
IHsKKwkJLyogVGhlIFJUVCBpcyBsYXJnZXIgdGhhbiBhIHNhbmUgdmFsdWUuICovCisJCXJldHVy
biAoMCk7CisJfQogCS8qIHN0b3JlIHRoZSBjdXJyZW50IFJUVCBpbiB1cyAqLwotCW5ldC0+cnR0
ID0gKHVpbnQ2NF90KTEwMDAwMDAgKiAodWludDY0X3Qpbm93LnR2X3NlYyArCi0JICAgICAgICAg
ICAodWludDY0X3Qpbm93LnR2X3VzZWM7CisJbmV0LT5ydHQgPSBydHRfdXM7CiAJLyogY29tcHV0
ZSBydHQgaW4gbXMgKi8KIAlydHQgPSAoaW50MzJfdCkobmV0LT5ydHQgLyAxMDAwKTsKIAlpZiAo
KGFzb2MtPmNjX2Z1bmN0aW9ucy5zY3RwX3J0dF9jYWxjdWxhdGVkKSAmJiAocnR0X2Zyb21fc2Fj
ayA9PSBTQ1RQX1JUVF9GUk9NX0RBVEEpKSB7CkBAIC0yNjEwLDcgKzMxMDMsNyBAQCBzY3RwX2Nh
bGN1bGF0ZV9ydG8oc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCSAqIFBhcGVyICJDb25nZXN0aW9u
IEF2b2lkYW5jZSBhbmQgQ29udHJvbCIsIEFubmV4IEEuCiAJICoKIAkgKiAobmV0LT5sYXN0c2Eg
Pj4gU0NUUF9SVFRfU0hJRlQpIGlzIHRoZSBzcnR0Ci0JICogKG5ldC0+bGFzdHNhID4+IFNDVFBf
UlRUX1ZBUl9TSElGVCkgaXMgdGhlIHJ0dHZhcgorCSAqIChuZXQtPmxhc3RzdiA+PiBTQ1RQX1JU
VF9WQVJfU0hJRlQpIGlzIHRoZSBydHR2YXIKIAkgKi8KIAlpZiAobmV0LT5SVE9fbWVhc3VyZWQp
IHsKIAkJcnR0IC09IChuZXQtPmxhc3RzYSA+PiBTQ1RQX1JUVF9TSElGVCk7CkBAIC0yNjUxLDgg
KzMxNDQsOCBAQCBzY3RwX2NhbGN1bGF0ZV9ydG8oc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCWlm
IChuZXdfcnRvID4gc3RjYi0+YXNvYy5tYXhydG8pIHsKIAkJbmV3X3J0byA9IHN0Y2ItPmFzb2Mu
bWF4cnRvOwogCX0KLQkvKiB3ZSBhcmUgbm93IHJldHVybmluZyB0aGUgUlRPICovCi0JcmV0dXJu
IChuZXdfcnRvKTsKKwluZXQtPlJUTyA9IG5ld19ydG87CisJcmV0dXJuICgxKTsKIH0KIAogLyoK
QEAgLTI3NjYsMTEgKzMyNTksNyBAQCBzY3RwX3BhZF9sYXN0bWJ1ZihzdHJ1Y3QgbWJ1ZiAqbSwg
aW50IHBhZHZhbCwgc3RydWN0IG1idWYgKmxhc3RfbWJ1ZikKIAogc3RhdGljIHZvaWQKIHNjdHBf
bm90aWZ5X2Fzc29jX2NoYW5nZSh1aW50MTZfdCBzdGF0ZSwgc3RydWN0IHNjdHBfdGNiICpzdGNi
LAotICAgIHVpbnQxNl90IGVycm9yLCBzdHJ1Y3Qgc2N0cF9hYm9ydF9jaHVuayAqYWJvcnQsIHVp
bnQ4X3QgZnJvbV9wZWVyLCBpbnQgc29fbG9ja2VkCi0jaWYgIWRlZmluZWQoX19BUFBMRV9fKSAm
JiAhZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKLSAgICBTQ1RQX1VOVVNFRAotI2VuZGlm
Ci0gICAgKQorICAgIHVpbnQxNl90IGVycm9yLCBzdHJ1Y3Qgc2N0cF9hYm9ydF9jaHVuayAqYWJv
cnQsIHVpbnQ4X3QgZnJvbV9wZWVyLCBpbnQgc29fbG9ja2VkKQogewogCXN0cnVjdCBtYnVmICpt
X25vdGlmeTsKIAlzdHJ1Y3Qgc2N0cF9hc3NvY19jaGFuZ2UgKnNhYzsKQEAgLTI3NzgsNyArMzI2
Nyw3IEBAIHNjdHBfbm90aWZ5X2Fzc29jX2NoYW5nZSh1aW50MTZfdCBzdGF0ZSwgc3RydWN0IHNj
dHBfdGNiICpzdGNiLAogCXVuc2lnbmVkIGludCBub3RpZl9sZW47CiAJdWludDE2X3QgYWJvcnRf
bGVuOwogCXVuc2lnbmVkIGludCBpOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVk
KFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogCXN0cnVjdCBzb2NrZXQgKnNvOwogI2VuZGlmCiAKQEAgLTI4Nzcs
NyArMzM2Niw3IEBAIHNldF9lcnJvcjoKIAkgICAgKChzdGF0ZSA9PSBTQ1RQX0NPTU1fTE9TVCkg
fHwgKHN0YXRlID09IFNDVFBfQ0FOVF9TVFJfQVNTT0MpKSkgewogCQlTT0NLX0xPQ0soc3RjYi0+
c2N0cF9zb2NrZXQpOwogCQlpZiAoZnJvbV9wZWVyKSB7Ci0JCQlpZiAoU0NUUF9HRVRfU1RBVEUo
JnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQpIHsKKwkJCWlmIChTQ1RQX0dF
VF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB7CiAJCQkJU0NUUF9MVFJB
Q0VfRVJSX1JFVChOVUxMLCBzdGNiLCBOVUxMLCBTQ1RQX0ZST01fU0NUUFVUSUwsIEVDT05OUkVG
VVNFRCk7CiAJCQkJc3RjYi0+c2N0cF9zb2NrZXQtPnNvX2Vycm9yID0gRUNPTk5SRUZVU0VEOwog
CQkJfSBlbHNlIHsKQEAgLTI4ODUsOCArMzM3NCw4IEBAIHNldF9lcnJvcjoKIAkJCQlzdGNiLT5z
Y3RwX3NvY2tldC0+c29fZXJyb3IgPSBFQ09OTlJFU0VUOwogCQkJfQogCQl9IGVsc2UgewotCQkJ
aWYgKChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9DT09LSUVfV0FJ
VCkgfHwKLQkJCSAgICAoU0NUUF9HRVRfU1RBVEUoJnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVf
Q09PS0lFX0VDSE9FRCkpIHsKKwkJCWlmICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9T
VEFURV9DT09LSUVfV0FJVCkgfHwKKwkJCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NU
UF9TVEFURV9DT09LSUVfRUNIT0VEKSkgewogCQkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoTlVMTCwg
c3RjYiwgTlVMTCwgU0NUUF9GUk9NX1NDVFBVVElMLCBFVElNRURPVVQpOwogCQkJCXN0Y2ItPnNj
dHBfc29ja2V0LT5zb19lcnJvciA9IEVUSU1FRE9VVDsKIAkJCX0gZWxzZSB7CkBAIC0yODk3LDcg
KzMzODYsNyBAQCBzZXRfZXJyb3I6CiAJCVNPQ0tfVU5MT0NLKHN0Y2ItPnNjdHBfc29ja2V0KTsK
IAl9CiAJLyogV2FrZSBBTlkgc2xlZXBlcnMgKi8KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwg
ZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzbyA9IFNDVFBfSU5QX1NPKHN0Y2ItPnNjdHBfZXAp
OwogCWlmICghc29fbG9ja2VkKSB7CiAJCWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29jLnJlZmNu
dCwgMSk7CkBAIC0yOTE4LDcgKzM0MDcsNyBAQCBzZXRfZXJyb3I6CiAJfQogCXNvcndha2V1cChz
dGNiLT5zY3RwX3NvY2tldCk7CiAJc293d2FrZXVwKHN0Y2ItPnNjdHBfc29ja2V0KTsKLSNpZiBk
ZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBk
ZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlpZiAoIXNvX2xv
Y2tlZCkgewogCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDEpOwogCX0KQEAgLTI5MjcsMTEgKzM0
MTYsNyBAQCBzZXRfZXJyb3I6CiAKIHN0YXRpYyB2b2lkCiBzY3RwX25vdGlmeV9wZWVyX2FkZHJf
Y2hhbmdlKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgdWludDMyX3Qgc3RhdGUsCi0gICAgc3RydWN0
IHNvY2thZGRyICpzYSwgdWludDMyX3QgZXJyb3IsIGludCBzb19sb2NrZWQKLSNpZiAhZGVmaW5l
ZChfX0FQUExFX18pICYmICFkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQotICAgIFNDVFBf
VU5VU0VECi0jZW5kaWYKLSkKKyAgICBzdHJ1Y3Qgc29ja2FkZHIgKnNhLCB1aW50MzJfdCBlcnJv
ciwgaW50IHNvX2xvY2tlZCkKIHsKIAlzdHJ1Y3QgbWJ1ZiAqbV9ub3RpZnk7CiAJc3RydWN0IHNj
dHBfcGFkZHJfY2hhbmdlICpzcGM7CkBAIC0zMDMzLDExICszNTE4LDcgQEAgc2N0cF9ub3RpZnlf
cGVlcl9hZGRyX2NoYW5nZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQzMl90IHN0YXRlLAog
CiBzdGF0aWMgdm9pZAogc2N0cF9ub3RpZnlfc2VuZF9mYWlsZWQoc3RydWN0IHNjdHBfdGNiICpz
dGNiLCB1aW50OF90IHNlbnQsIHVpbnQzMl90IGVycm9yLAotICAgIHN0cnVjdCBzY3RwX3RtaXRf
Y2h1bmsgKmNoaywgaW50IHNvX2xvY2tlZAotI2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRl
ZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCi0gICAgU0NUUF9VTlVTRUQKLSNlbmRpZgotICAg
ICkKKyAgICBzdHJ1Y3Qgc2N0cF90bWl0X2NodW5rICpjaGssIGludCBzb19sb2NrZWQpCiB7CiAJ
c3RydWN0IG1idWYgKm1fbm90aWZ5OwogCXN0cnVjdCBzY3RwX3NlbmRfZmFpbGVkICpzc2Y7CkBA
IC0zMTY5LDExICszNjUwLDcgQEAgc2N0cF9ub3RpZnlfc2VuZF9mYWlsZWQoc3RydWN0IHNjdHBf
dGNiICpzdGNiLCB1aW50OF90IHNlbnQsIHVpbnQzMl90IGVycm9yLAogCiBzdGF0aWMgdm9pZAog
c2N0cF9ub3RpZnlfc2VuZF9mYWlsZWQyKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgdWludDMyX3Qg
ZXJyb3IsCi0JCQkgc3RydWN0IHNjdHBfc3RyZWFtX3F1ZXVlX3BlbmRpbmcgKnNwLCBpbnQgc29f
bG9ja2VkCi0jaWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChTQ1RQX1NPX0xPQ0tf
VEVTVElORykKLSAgICAgICAgICAgICAgICAgICAgICAgICBTQ1RQX1VOVVNFRAotI2VuZGlmCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgKQorCQkJIHN0cnVjdCBzY3RwX3N0cmVhbV9xdWV1ZV9w
ZW5kaW5nICpzcCwgaW50IHNvX2xvY2tlZCkKIHsKIAlzdHJ1Y3QgbWJ1ZiAqbV9ub3RpZnk7CiAJ
c3RydWN0IHNjdHBfc2VuZF9mYWlsZWQgKnNzZjsKQEAgLTMzMTksMTEgKzM3OTYsNyBAQCBzY3Rw
X25vdGlmeV9hZGFwdGF0aW9uX2xheWVyKHN0cnVjdCBzY3RwX3RjYiAqc3RjYikKIC8qIFRoaXMg
YWx3YXlzIG11c3QgYmUgY2FsbGVkIHdpdGggdGhlIHJlYWQtcXVldWUgTE9DS0VEIGluIHRoZSBJ
TlAgKi8KIHN0YXRpYyB2b2lkCiBzY3RwX25vdGlmeV9wYXJ0aWFsX2RlbGl2ZXJ5X2luZGljYXRp
b24oc3RydWN0IHNjdHBfdGNiICpzdGNiLCB1aW50MzJfdCBlcnJvciwKLQkJCQkJdWludDMyX3Qg
dmFsLCBpbnQgc29fbG9ja2VkCi0jaWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChT
Q1RQX1NPX0xPQ0tfVEVTVElORykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0NUUF9V
TlVTRUQKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkK
KwkJCQkJdWludDMyX3QgdmFsLCBpbnQgc29fbG9ja2VkKQogewogCXN0cnVjdCBtYnVmICptX25v
dGlmeTsKIAlzdHJ1Y3Qgc2N0cF9wZGFwaV9ldmVudCAqcGRhcGk7CkBAIC0zMzg1LDcgKzM4NTgs
NyBAQCBzY3RwX25vdGlmeV9wYXJ0aWFsX2RlbGl2ZXJ5X2luZGljYXRpb24oc3RydWN0IHNjdHBf
dGNiICpzdGNiLCB1aW50MzJfdCBlcnJvciwKIAl9CiAJaWYgKHN0Y2ItPnNjdHBfZXAgJiYgc3Rj
Yi0+c2N0cF9zb2NrZXQpIHsKIAkJLyogVGhpcyBzaG91bGQgYWx3YXlzIGJlIHRoZSBjYXNlICov
Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcp
CisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCXN0
cnVjdCBzb2NrZXQgKnNvOwogCiAJCXNvID0gU0NUUF9JTlBfU08oc3RjYi0+c2N0cF9lcCk7CkBA
IC0zNDAyLDcgKzM4NzUsNyBAQCBzY3RwX25vdGlmeV9wYXJ0aWFsX2RlbGl2ZXJ5X2luZGljYXRp
b24oc3RydWN0IHNjdHBfdGNiICpzdGNiLCB1aW50MzJfdCBlcnJvciwKIAkJfQogI2VuZGlmCiAJ
CXNjdHBfc29yd2FrZXVwKHN0Y2ItPnNjdHBfZXAsIHN0Y2ItPnNjdHBfc29ja2V0KTsKLSNpZiBk
ZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBk
ZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJaWYgKCFzb19s
b2NrZWQpIHsKIAkJCVNDVFBfU09DS0VUX1VOTE9DSyhzbywgMSk7CiAJCX0KQEAgLTM0MjQsNyAr
Mzg5Nyw3IEBAIHNjdHBfbm90aWZ5X3NodXRkb3duX2V2ZW50KHN0cnVjdCBzY3RwX3RjYiAqc3Rj
YikKIAlpZiAoKHN0Y2ItPnNjdHBfZXAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BU
WVBFKSB8fAogCSAgICAoc3RjYi0+c2N0cF9lcC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdT
X0lOX1RDUFBPT0wpKSB7CiAJCS8qIG1hcmsgc29ja2V0IGNsb3NlZCBmb3IgcmVhZC93cml0ZSBh
bmQgd2FrZXVwISAqLwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09f
TE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCQlzdHJ1Y3Qgc29ja2V0ICpzbzsKIAogCQlzbyA9IFNDVFBfSU5QX1NPKHN0Y2It
PnNjdHBfZXApOwpAQCAtMzQzOSw3ICszOTEyLDcgQEAgc2N0cF9ub3RpZnlfc2h1dGRvd25fZXZl
bnQoc3RydWN0IHNjdHBfdGNiICpzdGNiKQogCQl9CiAjZW5kaWYKIAkJc29jYW50c2VuZG1vcmUo
c3RjYi0+c2N0cF9zb2NrZXQpOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFND
VFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDEpOwogI2VuZGlmCiAJfQpA
QCAtMzQ4MiwxMSArMzk1NSw3IEBAIHNjdHBfbm90aWZ5X3NodXRkb3duX2V2ZW50KHN0cnVjdCBz
Y3RwX3RjYiAqc3RjYikKIAogc3RhdGljIHZvaWQKIHNjdHBfbm90aWZ5X3NlbmRlcl9kcnlfZXZl
bnQoc3RydWN0IHNjdHBfdGNiICpzdGNiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgc29fbG9ja2VkCi0jaWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChTQ1RQX1NP
X0xPQ0tfVEVTVElORykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0NUUF9VTlVTRUQK
LSNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBzb19sb2NrZWQpCiB7CiAJc3RydWN0IG1idWYgKm1fbm90aWZ5Owog
CXN0cnVjdCBzY3RwX3NlbmRlcl9kcnlfZXZlbnQgKmV2ZW50OwpAQCAtMzc3MywxMSArNDI0Miw3
IEBAIHNjdHBfbm90aWZ5X3JlbW90ZV9lcnJvcihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQx
Nl90IGVycm9yLCBzdHJ1Y3Qgc2N0cF9lcnJvCiAKIHZvaWQKIHNjdHBfdWxwX25vdGlmeSh1aW50
MzJfdCBub3RpZmljYXRpb24sIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKLSAgICB1aW50MzJfdCBl
cnJvciwgdm9pZCAqZGF0YSwgaW50IHNvX2xvY2tlZAotI2lmICFkZWZpbmVkKF9fQVBQTEVfXykg
JiYgIWRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCi0gICAgU0NUUF9VTlVTRUQKLSNlbmRp
ZgotICAgICkKKyAgICB1aW50MzJfdCBlcnJvciwgdm9pZCAqZGF0YSwgaW50IHNvX2xvY2tlZCkK
IHsKIAlpZiAoKHN0Y2IgPT0gTlVMTCkgfHwKIAkgICAgKHN0Y2ItPnNjdHBfZXAtPnNjdHBfZmxh
Z3MgJiBTQ1RQX1BDQl9GTEFHU19TT0NLRVRfR09ORSkgfHwKQEAgLTM3ODYsMjIgKzQyNTEsMjIg
QEAgc2N0cF91bHBfbm90aWZ5KHVpbnQzMl90IG5vdGlmaWNhdGlvbiwgc3RydWN0IHNjdHBfdGNi
ICpzdGNiLAogCQkvKiBJZiB0aGUgc29ja2V0IGlzIGdvbmUgd2UgYXJlIG91dCBvZiBoZXJlICov
CiAJCXJldHVybjsKIAl9Ci0jaWYgKGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92
ZXJzaW9uID4gNTAwMDAwKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmIChkZWZpbmVkKF9f
RnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9XSU4zMikpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAJaWYgKHN0Y2ItPnNjdHBfc29ja2V0LT5zb19yY3Yuc2Jfc3RhdGUgJiBTQlNfQ0FOVFJDVk1P
UkUpIHsKICNlbHNlCiAJaWYgKHN0Y2ItPnNjdHBfc29ja2V0LT5zb19zdGF0ZSAmIFNTX0NBTlRS
Q1ZNT1JFKSB7CiAjZW5kaWYKIAkJcmV0dXJuOwogCX0KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykK
KyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlpZiAo
c29fbG9ja2VkKSB7CiAJCXNjdHBfbG9ja19hc3NlcnQoU0NUUF9JTlBfU08oc3RjYi0+c2N0cF9l
cCkpOwogCX0gZWxzZSB7CiAJCXNjdHBfdW5sb2NrX2Fzc2VydChTQ1RQX0lOUF9TTyhzdGNiLT5z
Y3RwX2VwKSk7CiAJfQogI2VuZGlmCi0JaWYgKChzdGNiLT5hc29jLnN0YXRlICYgU0NUUF9TVEFU
RV9DT09LSUVfV0FJVCkgfHwKLQkgICAgKHN0Y2ItPmFzb2Muc3RhdGUgJiAgU0NUUF9TVEFURV9D
T09LSUVfRUNIT0VEKSkgeworCWlmICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFU
RV9DT09LSUVfV0FJVCkgfHwKKwkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RB
VEVfQ09PS0lFX0VDSE9FRCkpIHsKIAkJaWYgKChub3RpZmljYXRpb24gPT0gU0NUUF9OT1RJRllf
SU5URVJGQUNFX0RPV04pIHx8CiAJCSAgICAobm90aWZpY2F0aW9uID09IFNDVFBfTk9USUZZX0lO
VEVSRkFDRV9VUCkgfHwKIAkJICAgIChub3RpZmljYXRpb24gPT0gU0NUUF9OT1RJRllfSU5URVJG
QUNFX0NPTkZJUk1FRCkpIHsKQEAgLTM4OTAsMTYgKzQzNTUsMTYgQEAgc2N0cF91bHBfbm90aWZ5
KHVpbnQzMl90IG5vdGlmaWNhdGlvbiwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQlicmVhazsK
IAkJfQogCWNhc2UgU0NUUF9OT1RJRllfQVNTT0NfTE9DX0FCT1JURUQ6Ci0JCWlmICgoKHN0Y2It
PmFzb2Muc3RhdGUgJiBTQ1RQX1NUQVRFX01BU0spID09IFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQp
IHx8Ci0JCSAgICAoKHN0Y2ItPmFzb2Muc3RhdGUgJiBTQ1RQX1NUQVRFX01BU0spID09IFNDVFBf
U1RBVEVfQ09PS0lFX0VDSE9FRCkpIHsKKwkJaWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBT
Q1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB8fAorCQkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09
IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCkpIHsKIAkJCXNjdHBfbm90aWZ5X2Fzc29jX2NoYW5n
ZShTQ1RQX0NBTlRfU1RSX0FTU09DLCBzdGNiLCBlcnJvciwgZGF0YSwgMCwgc29fbG9ja2VkKTsK
IAkJfSBlbHNlIHsKIAkJCXNjdHBfbm90aWZ5X2Fzc29jX2NoYW5nZShTQ1RQX0NPTU1fTE9TVCwg
c3RjYiwgZXJyb3IsIGRhdGEsIDAsIHNvX2xvY2tlZCk7CiAJCX0KIAkJYnJlYWs7CiAJY2FzZSBT
Q1RQX05PVElGWV9BU1NPQ19SRU1fQUJPUlRFRDoKLQkJaWYgKCgoc3RjYi0+YXNvYy5zdGF0ZSAm
IFNDVFBfU1RBVEVfTUFTSykgPT0gU0NUUF9TVEFURV9DT09LSUVfV0FJVCkgfHwKLQkJICAgICgo
c3RjYi0+YXNvYy5zdGF0ZSAmIFNDVFBfU1RBVEVfTUFTSykgPT0gU0NUUF9TVEFURV9DT09LSUVf
RUNIT0VEKSkgeworCQlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfQ09P
S0lFX1dBSVQpIHx8CisJCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9D
T09LSUVfRUNIT0VEKSkgewogCQkJc2N0cF9ub3RpZnlfYXNzb2NfY2hhbmdlKFNDVFBfQ0FOVF9T
VFJfQVNTT0MsIHN0Y2IsIGVycm9yLCBkYXRhLCAxLCBzb19sb2NrZWQpOwogCQl9IGVsc2Ugewog
CQkJc2N0cF9ub3RpZnlfYXNzb2NfY2hhbmdlKFNDVFBfQ09NTV9MT1NULCBzdGNiLCBlcnJvciwg
ZGF0YSwgMSwgc29fbG9ja2VkKTsKQEAgLTM5NzgsMTEgKzQ0NDMsNyBAQCBzY3RwX3VscF9ub3Rp
ZnkodWludDMyX3Qgbm90aWZpY2F0aW9uLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiB9CiAKIHZv
aWQKLXNjdHBfcmVwb3J0X2FsbF9vdXRib3VuZChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQx
Nl90IGVycm9yLCBpbnQgaG9sZHNfbG9jaywgaW50IHNvX2xvY2tlZAotI2lmICFkZWZpbmVkKF9f
QVBQTEVfXykgJiYgIWRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCi0gICAgU0NUUF9VTlVT
RUQKLSNlbmRpZgotICAgICkKK3NjdHBfcmVwb3J0X2FsbF9vdXRib3VuZChzdHJ1Y3Qgc2N0cF90
Y2IgKnN0Y2IsIHVpbnQxNl90IGVycm9yLCBpbnQgc29fbG9ja2VkKQogewogCXN0cnVjdCBzY3Rw
X2Fzc29jaWF0aW9uICphc29jOwogCXN0cnVjdCBzY3RwX3N0cmVhbV9vdXQgKm91dHM7CkBAIC0z
OTk4LDcgKzQ0NTksNyBAQCBzY3RwX3JlcG9ydF9hbGxfb3V0Ym91bmQoc3RydWN0IHNjdHBfdGNi
ICpzdGNiLCB1aW50MTZfdCBlcnJvciwgaW50IGhvbGRzX2xvY2ssCiAJCS8qIGFscmVhZHkgYmVp
bmcgZnJlZWQgKi8KIAkJcmV0dXJuOwogCX0KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBk
ZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlpZiAoc29fbG9j
a2VkKSB7CiAJCXNjdHBfbG9ja19hc3NlcnQoU0NUUF9JTlBfU08oc3RjYi0+c2N0cF9lcCkpOwog
CX0gZWxzZSB7CkBAIC00MDExLDkgKzQ0NzIsNiBAQCBzY3RwX3JlcG9ydF9hbGxfb3V0Ym91bmQo
c3RydWN0IHNjdHBfdGNiICpzdGNiLCB1aW50MTZfdCBlcnJvciwgaW50IGhvbGRzX2xvY2ssCiAJ
CXJldHVybjsKIAl9CiAJLyogbm93IHRocm91Z2ggYWxsIHRoZSBndW5rIGZyZWVpbmcgY2h1bmtz
ICovCi0JaWYgKGhvbGRzX2xvY2sgPT0gMCkgewotCQlTQ1RQX1RDQl9TRU5EX0xPQ0soc3RjYik7
Ci0JfQogCS8qIHNlbnQgcXVldWUgU0hPVUxEIGJlIGVtcHR5ICovCiAJVEFJTFFfRk9SRUFDSF9T
QUZFKGNoaywgJmFzb2MtPnNlbnRfcXVldWUsIHNjdHBfbmV4dCwgbmNoaykgewogCQlUQUlMUV9S
RU1PVkUoJmFzb2MtPnNlbnRfcXVldWUsIGNoaywgc2N0cF9uZXh0KTsKQEAgLTQwNjksNyArNDUy
Nyw3IEBAIHNjdHBfcmVwb3J0X2FsbF9vdXRib3VuZChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVp
bnQxNl90IGVycm9yLCBpbnQgaG9sZHNfbG9jaywKIAkJVEFJTFFfRk9SRUFDSF9TQUZFKHNwLCAm
b3V0cy0+b3V0cXVldWUsIG5leHQsIG5zcCkgewogCQkJYXRvbWljX3N1YnRyYWN0X2ludCgmYXNv
Yy0+c3RyZWFtX3F1ZXVlX2NudCwgMSk7CiAJCQlUQUlMUV9SRU1PVkUoJm91dHMtPm91dHF1ZXVl
LCBzcCwgbmV4dCk7Ci0JCQlzdGNiLT5hc29jLnNzX2Z1bmN0aW9ucy5zY3RwX3NzX3JlbW92ZV9m
cm9tX3N0cmVhbShzdGNiLCBhc29jLCBvdXRzLCBzcCwgaG9sZHNfbG9jayk7CisJCQlzdGNiLT5h
c29jLnNzX2Z1bmN0aW9ucy5zY3RwX3NzX3JlbW92ZV9mcm9tX3N0cmVhbShzdGNiLCBhc29jLCBv
dXRzLCBzcCwgMSk7CiAJCQlzY3RwX2ZyZWVfc3BidWZzcGFjZShzdGNiLCBhc29jLCBzcCk7CiAJ
CQlpZiAoc3AtPmRhdGEpIHsKIAkJCQlzY3RwX3VscF9ub3RpZnkoU0NUUF9OT1RJRllfU1BFQ0lB
TF9TUF9GQUlMLCBzdGNiLApAQCAtNDA5MCwyNCArNDU0OCwxNiBAQCBzY3RwX3JlcG9ydF9hbGxf
b3V0Ym91bmQoc3RydWN0IHNjdHBfdGNiICpzdGNiLCB1aW50MTZfdCBlcnJvciwgaW50IGhvbGRz
X2xvY2ssCiAJCQkvKnNhX2lnbm9yZSBGUkVFRF9NRU1PUlkqLwogCQl9CiAJfQotCi0JaWYgKGhv
bGRzX2xvY2sgPT0gMCkgewotCQlTQ1RQX1RDQl9TRU5EX1VOTE9DSyhzdGNiKTsKLQl9CiB9CiAK
IHZvaWQKIHNjdHBfYWJvcnRfbm90aWZpY2F0aW9uKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgdWlu
dDhfdCBmcm9tX3BlZXIsIHVpbnQxNl90IGVycm9yLAotCQkJc3RydWN0IHNjdHBfYWJvcnRfY2h1
bmsgKmFib3J0LCBpbnQgc29fbG9ja2VkCi0jaWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVm
aW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKLSAgICBTQ1RQX1VOVVNFRAotI2VuZGlmCi0gICAg
KQorCQkJc3RydWN0IHNjdHBfYWJvcnRfY2h1bmsgKmFib3J0LCBpbnQgc29fbG9ja2VkKQogewog
CWlmIChzdGNiID09IE5VTEwpIHsKIAkJcmV0dXJuOwogCX0KLSNpZiBkZWZpbmVkKF9fQVBQTEVf
XykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlp
ZiAoc29fbG9ja2VkKSB7CiAJCXNjdHBfbG9ja19hc3NlcnQoU0NUUF9JTlBfU08oc3RjYi0+c2N0
cF9lcCkpOwogCX0gZWxzZSB7CkBAIC00MTI0LDggKzQ1NzQsMTEgQEAgc2N0cF9hYm9ydF9ub3Rp
ZmljYXRpb24oc3RydWN0IHNjdHBfdGNiICpzdGNiLCB1aW50OF90IGZyb21fcGVlciwgdWludDE2
X3QgZXJyb3IKIAkgICAgKHN0Y2ItPmFzb2Muc3RhdGUgJiBTQ1RQX1NUQVRFX0NMT1NFRF9TT0NL
RVQpKSB7CiAJCXJldHVybjsKIAl9CisJU0NUUF9UQ0JfU0VORF9MT0NLKHN0Y2IpOworCVNDVFBf
QUREX1NVQlNUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfV0FTX0FCT1JURUQpOwogCS8qIFRlbGwgdGhl
bSB3ZSBsb3N0IHRoZSBhc29jICovCi0Jc2N0cF9yZXBvcnRfYWxsX291dGJvdW5kKHN0Y2IsIGVy
cm9yLCAxLCBzb19sb2NrZWQpOworCXNjdHBfcmVwb3J0X2FsbF9vdXRib3VuZChzdGNiLCBlcnJv
ciwgc29fbG9ja2VkKTsKKwlTQ1RQX1RDQl9TRU5EX1VOTE9DSyhzdGNiKTsKIAlpZiAoZnJvbV9w
ZWVyKSB7CiAJCXNjdHBfdWxwX25vdGlmeShTQ1RQX05PVElGWV9BU1NPQ19SRU1fQUJPUlRFRCwg
c3RjYiwgZXJyb3IsIGFib3J0LCBzb19sb2NrZWQpOwogCX0gZWxzZSB7CkBAIC00MTM4LDEzICs0
NTkxLDEzIEBAIHNjdHBfYWJvcnRfYXNzb2NpYXRpb24oc3RydWN0IHNjdHBfaW5wY2IgKmlucCwg
c3RydWN0IHNjdHBfdGNiICpzdGNiLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbWJ1
ZiAqbSwgaW50IGlwaGxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNvY2thZGRy
ICpzcmMsIHN0cnVjdCBzb2NrYWRkciAqZHN0LAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3Qgc2N0cGhkciAqc2gsIHN0cnVjdCBtYnVmICpvcF9lcnIsCi0jaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IG1mbG93dHlwZSwgdWludDMyX3QgbWZs
b3dpZCwKICNlbmRpZgogICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB2cmZfaWQsIHVp
bnQxNl90IHBvcnQpCiB7CiAJdWludDMyX3QgdnRhZzsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykg
fHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzdHJ1Y3Qgc29ja2V0ICpzbzsKICNlbmRpZgog
CkBAIC00MTU0LDE2ICs0NjA3LDE1IEBAIHNjdHBfYWJvcnRfYXNzb2NpYXRpb24oc3RydWN0IHNj
dHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQl2cmZfaWQgPSBzdGNiLT5h
c29jLnZyZl9pZDsKIAl9CiAJc2N0cF9zZW5kX2Fib3J0KG0sIGlwaGxlbiwgc3JjLCBkc3QsIHNo
LCB2dGFnLCBvcF9lcnIsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCSAgICAgICAgICAgICAgICBt
Zmxvd3R5cGUsIG1mbG93aWQsIGlucC0+ZmlibnVtLAogI2VuZGlmCiAJICAgICAgICAgICAgICAg
IHZyZl9pZCwgcG9ydCk7CiAJaWYgKHN0Y2IgIT0gTlVMTCkgewogCQkvKiBXZSBoYXZlIGEgVENC
IHRvIGFib3J0LCBzZW5kIG5vdGlmaWNhdGlvbiB0b28gKi8KIAkJc2N0cF9hYm9ydF9ub3RpZmlj
YXRpb24oc3RjYiwgMCwgMCwgTlVMTCwgU0NUUF9TT19OT1RfTE9DS0VEKTsKLQkJc3RjYi0+YXNv
Yy5zdGF0ZSB8PSBTQ1RQX1NUQVRFX1dBU19BQk9SVEVEOwogCQkvKiBPaywgbm93IGxldHMgZnJl
ZSBpdCAqLwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19U
RVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCQlzbyA9IFNDVFBfSU5QX1NPKGlucCk7CiAJCWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29j
LnJlZmNudCwgMSk7CiAJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKQEAgLTQxNzIsMTMgKzQ2MjQs
MTMgQEAgc2N0cF9hYm9ydF9hc3NvY2lhdGlvbihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1
Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCWF0b21pY19zdWJ0cmFjdF9pbnQoJnN0Y2ItPmFzb2MucmVm
Y250LCAxKTsKICNlbmRpZgogCQlTQ1RQX1NUQVRfSU5DUl9DT1VOVEVSMzIoc2N0cHNfYWJvcnRl
ZCk7Ci0JCWlmICgoU0NUUF9HRVRfU1RBVEUoJnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVfT1BF
TikgfHwKLQkJICAgIChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9T
SFVURE9XTl9SRUNFSVZFRCkpIHsKKwkJaWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQ
X1NUQVRFX09QRU4pIHx8CisJCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFU
RV9TSFVURE9XTl9SRUNFSVZFRCkpIHsKIAkJCVNDVFBfU1RBVF9ERUNSX0dBVUdFMzIoc2N0cHNf
Y3VycmVzdGFiKTsKIAkJfQogCQkodm9pZClzY3RwX2ZyZWVfYXNzb2MoaW5wLCBzdGNiLCBTQ1RQ
X05PUk1BTF9QUk9DLAogCQkgICAgICAgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBVVElM
ICsgU0NUUF9MT0NfNCk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9T
T19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAJCVNDVFBfU09DS0VUX1VOTE9DSyhzbywgMSk7CiAjZW5kaWYKIAl9CkBAIC00
MjQ4LDIwICs0NzAwLDE2IEBAIHNjdHBfcHJpbnRfb3V0X3RyYWNrX2xvZyhzdHJ1Y3Qgc2N0cF90
Y2IgKnN0Y2IpCiB2b2lkCiBzY3RwX2Fib3J0X2FuX2Fzc29jaWF0aW9uKHN0cnVjdCBzY3RwX2lu
cGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RydWN0IG1idWYgKm9wX2VyciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNv
X2xvY2tlZAotI2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoU0NUUF9TT19MT0NL
X1RFU1RJTkcpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFNDVFBfVU5VU0VECi0jZW5kaWYK
LSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNvX2xvY2tlZCkKIHsKLSNpZiBkZWZp
bmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZp
bmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzdHJ1Y3Qgc29ja2V0
ICpzbzsKICNlbmRpZgogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9T
T19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAJc28gPSBTQ1RQX0lOUF9TTyhpbnApOwogI2VuZGlmCi0jaWYgZGVmaW5lZChf
X0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAJaWYgKHNvX2xvY2tlZCkgewogCQlzY3RwX2xvY2tfYXNzZXJ0KFNDVFBfSU5QX1NPKGlu
cCkpOwogCX0gZWxzZSB7CkBAIC00MjcyLDE0ICs0NzIwLDE0IEBAIHNjdHBfYWJvcnRfYW5fYXNz
b2NpYXRpb24oc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAog
CQkvKiBHb3QgdG8gaGF2ZSBhIFRDQiAqLwogCQlpZiAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9Q
Q0JfRkxBR1NfU09DS0VUX0dPTkUpIHsKIAkJCWlmIChMSVNUX0VNUFRZKCZpbnAtPnNjdHBfYXNv
Y19saXN0KSkgewotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCWlmICghc29fbG9ja2VkKSB7CiAJCQkJ
CVNDVFBfU09DS0VUX0xPQ0soc28sIDEpOwogCQkJCX0KICNlbmRpZgogCQkJCXNjdHBfaW5wY2Jf
ZnJlZShpbnAsIFNDVFBfRlJFRV9TSE9VTERfVVNFX0FCT1JULAogCQkJCQkJU0NUUF9DQUxMRURf
RElSRUNUTFlfTk9DTVBTRVQpOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQo
X19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCWlmICghc29fbG9ja2Vk
KSB7CiAJCQkJCVNDVFBfU09DS0VUX1VOTE9DSyhzbywgMSk7CiAJCQkJfQpAQCAtNDI4NywxNCAr
NDczNSwxMiBAQCBzY3RwX2Fib3J0X2FuX2Fzc29jaWF0aW9uKHN0cnVjdCBzY3RwX2lucGNiICpp
bnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJCX0KIAkJfQogCQlyZXR1cm47Ci0JfSBlbHNl
IHsKLQkJc3RjYi0+YXNvYy5zdGF0ZSB8PSBTQ1RQX1NUQVRFX1dBU19BQk9SVEVEOwogCX0KIAkv
KiBub3RpZnkgdGhlIHBlZXIgKi8KIAlzY3RwX3NlbmRfYWJvcnRfdGNiKHN0Y2IsIG9wX2Vyciwg
c29fbG9ja2VkKTsKIAlTQ1RQX1NUQVRfSU5DUl9DT1VOVEVSMzIoc2N0cHNfYWJvcnRlZCk7Ci0J
aWYgKChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9PUEVOKSB8fAot
CSAgICAoU0NUUF9HRVRfU1RBVEUoJnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05f
UkVDRUlWRUQpKSB7CisJaWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX09Q
RU4pIHx8CisJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dO
X1JFQ0VJVkVEKSkgewogCQlTQ1RQX1NUQVRfREVDUl9HQVVHRTMyKHNjdHBzX2N1cnJlc3RhYik7
CiAJfQogCS8qIG5vdGlmeSB0aGUgdWxwICovCkBAIC00MzA1LDcgKzQ3NTEsNyBAQCBzY3RwX2Fi
b3J0X2FuX2Fzc29jaWF0aW9uKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3Rj
YiAqc3RjYiwKICNpZmRlZiBTQ1RQX0FTT0NMT0dfT0ZfVFNOUwogCXNjdHBfcHJpbnRfb3V0X3Ry
YWNrX2xvZyhzdGNiKTsKICNlbmRpZgotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVk
KFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogCWlmICghc29fbG9ja2VkKSB7CiAJCWF0b21pY19hZGRfaW50KCZz
dGNiLT5hc29jLnJlZmNudCwgMSk7CiAJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKQEAgLTQzMTYs
NyArNDc2Miw3IEBAIHNjdHBfYWJvcnRfYW5fYXNzb2NpYXRpb24oc3RydWN0IHNjdHBfaW5wY2Ig
KmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogI2VuZGlmCiAJKHZvaWQpc2N0cF9mcmVlX2Fz
c29jKGlucCwgc3RjYiwgU0NUUF9OT1JNQUxfUFJPQywKIAkgICAgICAgICAgICAgICAgICAgICAg
U0NUUF9GUk9NX1NDVFBVVElMICsgU0NUUF9MT0NfNSk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18p
IHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJaWYgKCFzb19sb2NrZWQpIHsKIAkJU0NUUF9T
T0NLRVRfVU5MT0NLKHNvLCAxKTsKIAl9CkBAIC00MzI4LDcgKzQ3NzQsNyBAQCBzY3RwX2hhbmRs
ZV9vb3RiKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogICAgICAgICAg
ICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIgKnNyYywgc3RydWN0IHNvY2thZGRyICpkc3QsCiAgICAg
ICAgICAgICAgICAgIHN0cnVjdCBzY3RwaGRyICpzaCwgc3RydWN0IHNjdHBfaW5wY2IgKmlucCwK
ICAgICAgICAgICAgICAgICAgc3RydWN0IG1idWYgKmNhdXNlLAotI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKICAgICAgICAgICAgICAgICAgdWludDhfdCBtZmxvd3R5cGUsIHVpbnQzMl90IG1mbG93aWQs
IHVpbnQxNl90IGZpYm51bSwKICNlbmRpZgogICAgICAgICAgICAgICAgICB1aW50MzJfdCB2cmZf
aWQsIHVpbnQxNl90IHBvcnQpCkBAIC00MzQxLDEyICs0Nzg3LDEyIEBAIHNjdHBfaGFuZGxlX29v
dGIoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJLyogR2VuZXJhdGUg
YSBUTyBhZGRyZXNzIGZvciBmdXR1cmUgcmVmZXJlbmNlICovCiAJaWYgKGlucCAmJiAoaW5wLT5z
Y3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfU09DS0VUX0dPTkUpKSB7CiAJCWlmIChMSVNUX0VN
UFRZKCZpbnAtPnNjdHBfYXNvY19saXN0KSkgewotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lm
IGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJU0NUUF9T
T0NLRVRfTE9DSyhTQ1RQX0lOUF9TTyhpbnApLCAxKTsKICNlbmRpZgogCQkJc2N0cF9pbnBjYl9m
cmVlKGlucCwgU0NUUF9GUkVFX1NIT1VMRF9VU0VfQUJPUlQsCiAJCQkJCVNDVFBfQ0FMTEVEX0RJ
UkVDVExZX05PQ01QU0VUKTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9f
QVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCVNDVFBfU09DS0VUX1VOTE9D
SyhTQ1RQX0lOUF9TTyhpbnApLCAxKTsKICNlbmRpZgogCQl9CkBAIC00Mzc4LDcgKzQ4MjQsNyBA
QCBzY3RwX2hhbmRsZV9vb3RiKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0
LAogCQkJcmV0dXJuOwogCQljYXNlIFNDVFBfU0hVVERPV05fQUNLOgogCQkJc2N0cF9zZW5kX3No
dXRkb3duX2NvbXBsZXRlMihzcmMsIGRzdCwgc2gsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykK
KyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJ
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQsIGZpYm51bSwK
ICNlbmRpZgogCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2cmZfaWQsIHBvcnQpOwpA
QCAtNDM5NCw3ICs0ODQwLDcgQEAgc2N0cF9oYW5kbGVfb290YihzdHJ1Y3QgbWJ1ZiAqbSwgaW50
IGlwaGxlbiwgaW50IG9mZnNldCwKIAkgICAgKChTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfYmxhY2to
b2xlKSA9PSAxKSAmJgogCSAgICAgKGNvbnRhaW5zX2luaXRfY2h1bmsgPT0gMCkpKSB7CiAJCXNj
dHBfc2VuZF9hYm9ydChtLCBpcGhsZW4sIHNyYywgZHN0LCBzaCwgMCwgY2F1c2UsCi0jaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogCQkgICAgICAgICAgICAgICAgbWZsb3d0eXBlLCBtZmxvd2lkLCBmaWJu
dW0sCiAjZW5kaWYKIAkJICAgICAgICAgICAgICAgIHZyZl9pZCwgcG9ydCk7CkBAIC00NTgxLDcg
KzUwMjcsNyBAQCB2b2lkCiBzY3RwX3ByaW50X2FkZHJlc3Moc3RydWN0IHNvY2thZGRyICpzYSkK
IHsKICNpZmRlZiBJTkVUNgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92
ZXJzaW9uID49IDcwMDAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAJY2hhciBpcDZidWZbSU5FVDZfQUREUlNUUkxFTl07CiAjZW5kaWYKICNl
bmRpZgpAQCAtNDYwNiw3ICs1MDUyLDcgQEAgc2N0cF9wcmludF9hZGRyZXNzKHN0cnVjdCBzb2Nr
YWRkciAqc2EpCiAJCQkgICAgbnRvaHMoc2luNi0+c2luNl9wb3J0KSwKIAkJCSAgICBzaW42LT5z
aW42X3Njb3BlX2lkKTsKICNlbHNlCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVl
QlNEX3ZlcnNpb24gPj0gNzAwMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKIAkJU0NUUF9QUklOVEYoIklQdjYgYWRkcmVzczogJXM6cG9ydDol
ZCBzY29wZToldVxuIiwKIAkJCSAgICBpcDZfc3ByaW50ZihpcDZidWYsICZzaW42LT5zaW42X2Fk
ZHIpLAogCQkJICAgIG50b2hzKHNpbjYtPnNpbjZfcG9ydCksCkBAIC00NjY0LDIxICs1MTEwLDE1
IEBAIHNjdHBfcHVsbF9vZmZfY29udHJvbF90b19uZXdfaW5wKHN0cnVjdCBzY3RwX2lucGNiICpv
bGRfaW5wLAogCXN0cnVjdCBzY3RwX3F1ZXVlZF90b19yZWFkICpjb250cm9sLCAqbmN0bDsKIAlz
dHJ1Y3Qgc2N0cF9yZWFkaGVhZCB0bXBfcXVldWU7CiAJc3RydWN0IG1idWYgKm07Ci0jaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pCisjaWYgKGRlZmluZWQoX19G
cmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSkgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKIAlpbnQgZXJyb3IgPSAwOwogI2VuZGlmCiAKIAlvbGRfc28gPSBvbGRfaW5wLT5zY3RwX3Nv
Y2tldDsKIAluZXdfc28gPSBuZXdfaW5wLT5zY3RwX3NvY2tldDsKIAlUQUlMUV9JTklUKCZ0bXBf
cXVldWUpOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKQot
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uIDwgNzAwMDAwCi0J
U09DS0JVRl9MT0NLKCYob2xkX3NvLT5zb19yY3YpKTsKLSNlbmRpZgorI2lmIChkZWZpbmVkKF9f
RnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAJZXJyb3IgPSBzYmxvY2soJm9sZF9zby0+c29fcmN2LCB3YWl0ZmxhZ3MpOwotI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uIDwgNzAwMDAwCi0JU09DS0JV
Rl9VTkxPQ0soJihvbGRfc28tPnNvX3JjdikpOwotI2VuZGlmCiAJaWYgKGVycm9yKSB7CiAJCS8q
IEdhaywgY2FuJ3QgZ2V0IHNibG9jaywgd2UgaGF2ZSBhIHByb2JsZW0uCiAJCSAqIGRhdGEgd2ls
bCBiZSBsZWZ0IHN0cmFuZGVkLi4gYW5kIHdlCkBAIC00NzE2LDE4ICs1MTU2LDEyIEBAIHNjdHBf
cHVsbF9vZmZfY29udHJvbF90b19uZXdfaW5wKHN0cnVjdCBzY3RwX2lucGNiICpvbGRfaW5wLAog
CX0KIAlTQ1RQX0lOUF9SRUFEX1VOTE9DSyhvbGRfaW5wKTsKIAkvKiBSZW1vdmUgdGhlIHNiLWxv
Y2sgb24gdGhlIG9sZCBzb2NrZXQgKi8KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0Zy
ZWVCU0RfdmVyc2lvbiA8IDcwMDAwMAotCVNPQ0tCVUZfTE9DSygmKG9sZF9zby0+c29fcmN2KSk7
Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzYnVubG9jaygmb2xkX3NvLT5zb19yY3YsIDEp
OwogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJc2J1bmxvY2soJm9sZF9zby0+c29f
cmN2KTsKLSNlbmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJz
aW9uIDwgNzAwMDAwCi0JU09DS0JVRl9VTkxPQ0soJihvbGRfc28tPnNvX3JjdikpOwogI2VuZGlm
CiAJLyogTm93IHdlIG1vdmUgdGhlbSBvdmVyIHRvIHRoZSBuZXcgc29ja2V0IGJ1ZmZlciAqLwog
CVNDVFBfSU5QX1JFQURfTE9DSyhuZXdfaW5wKTsKQEAgLTQ3NTIsMTMgKzUxODYsMTMgQEAgdm9p
ZAogc2N0cF93YWtldXBfdGhlX3JlYWRfc29ja2V0KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAg
ICAgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogICAgIGludCBzb19sb2NrZWQKLSNpZiAhZGVmaW5l
ZChfX0FQUExFX18pICYmICFkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmICEoZGVm
aW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pKQogICAgIFNDVFBfVU5V
U0VECiAjZW5kaWYKICkKIHsKIAlpZiAoKGlucCAhPSBOVUxMKSAmJiAoaW5wLT5zY3RwX3NvY2tl
dCAhPSBOVUxMKSkgewotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09f
TE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCQlzdHJ1Y3Qgc29ja2V0ICpzbzsKIAogCQlzbyA9IFNDVFBfSU5QX1NPKGlucCk7
CkBAIC00Nzc5LDcgKzUyMTMsNyBAQCBzY3RwX3dha2V1cF90aGVfcmVhZF9zb2NrZXQoc3RydWN0
IHNjdHBfaW5wY2IgKmlucCwKIAkJfQogI2VuZGlmCiAJCXNjdHBfc29yd2FrZXVwKGlucCwgaW5w
LT5zY3RwX3NvY2tldCk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9T
T19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAJCWlmICghc29fbG9ja2VkKSB7CiAJCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28s
IDEpOwogCQl9CkBAIC00ODkzLDExICs1MzI3LDcgQEAgc2N0cF9hZGRfdG9fcmVhZHEoc3RydWN0
IHNjdHBfaW5wY2IgKmlucCwKICAgICBzdHJ1Y3Qgc29ja2J1ZiAqc2IsCiAgICAgaW50IGVuZCwK
ICAgICBpbnQgaW5wX3JlYWRfbG9ja19oZWxkLAotICAgIGludCBzb19sb2NrZWQKLSNpZiAhZGVm
aW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQotICAgIFND
VFBfVU5VU0VECi0jZW5kaWYKLSAgICApCisgICAgaW50IHNvX2xvY2tlZCkKIHsKIAkvKgogCSAq
IEhlcmUgd2UgbXVzdCBwbGFjZSB0aGUgY29udHJvbCBvbiB0aGUgZW5kIG9mIHRoZSBzb2NrZXQg
cmVhZApAQCAtNDkxMyw3ICs1MzQzLDcgQEAgc2N0cF9hZGRfdG9fcmVhZHEoc3RydWN0IHNjdHBf
aW5wY2IgKmlucCwKICNlbmRpZgogCQlyZXR1cm47CiAJfQotI2lmIGRlZmluZWQoX19BUFBMRV9f
KQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWlm
IChzb19sb2NrZWQpIHsKIAkJc2N0cF9sb2NrX2Fzc2VydChTQ1RQX0lOUF9TTyhpbnApKTsKIAl9
IGVsc2UgewpAQCAtNDkyMywxMiArNTM1MywxNCBAQCBzY3RwX2FkZF90b19yZWFkcShzdHJ1Y3Qg
c2N0cF9pbnBjYiAqaW5wLAogCWlmIChpbnBfcmVhZF9sb2NrX2hlbGQgPT0gMCkKIAkJU0NUUF9J
TlBfUkVBRF9MT0NLKGlucCk7CiAJaWYgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdT
X1NPQ0tFVF9DQU5UX1JFQUQpIHsKLQkJc2N0cF9mcmVlX3JlbW90ZV9hZGRyKGNvbnRyb2wtPndo
b0Zyb20pOwotCQlpZiAoY29udHJvbC0+ZGF0YSkgewotCQkJc2N0cF9tX2ZyZWVtKGNvbnRyb2wt
PmRhdGEpOwotCQkJY29udHJvbC0+ZGF0YSA9IE5VTEw7CisJCWlmICghY29udHJvbC0+b25fc3Ry
bV9xKSB7CisJCQlzY3RwX2ZyZWVfcmVtb3RlX2FkZHIoY29udHJvbC0+d2hvRnJvbSk7CisJCQlp
ZiAoY29udHJvbC0+ZGF0YSkgeworCQkJCXNjdHBfbV9mcmVlbShjb250cm9sLT5kYXRhKTsKKwkJ
CQljb250cm9sLT5kYXRhID0gTlVMTDsKKwkJCX0KKwkJCXNjdHBfZnJlZV9hX3JlYWRxKHN0Y2Is
IGNvbnRyb2wpOwogCQl9Ci0JCXNjdHBfZnJlZV9hX3JlYWRxKHN0Y2IsIGNvbnRyb2wpOwogCQlp
ZiAoaW5wX3JlYWRfbG9ja19oZWxkID09IDApCiAJCQlTQ1RQX0lOUF9SRUFEX1VOTE9DSyhpbnAp
OwogCQlyZXR1cm47CkBAIC00OTczLDggKzU0MDUsMTAgQEAgc2N0cF9hZGRfdG9fcmVhZHEoc3Ry
dWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJY29udHJvbC0+dGFpbF9tYnVmID0gcHJldjsKIAl9IGVs
c2UgewogCQkvKiBFdmVyeXRoaW5nIGdvdCBjb2xsYXBzZWQgb3V0Pz8gKi8KLQkJc2N0cF9mcmVl
X3JlbW90ZV9hZGRyKGNvbnRyb2wtPndob0Zyb20pOwotCQlzY3RwX2ZyZWVfYV9yZWFkcShzdGNi
LCBjb250cm9sKTsKKwkJaWYgKCFjb250cm9sLT5vbl9zdHJtX3EpIHsKKwkJCXNjdHBfZnJlZV9y
ZW1vdGVfYWRkcihjb250cm9sLT53aG9Gcm9tKTsKKwkJCXNjdHBfZnJlZV9hX3JlYWRxKHN0Y2Is
IGNvbnRyb2wpOworCQl9CiAJCWlmIChpbnBfcmVhZF9sb2NrX2hlbGQgPT0gMCkKIAkJCVNDVFBf
SU5QX1JFQURfVU5MT0NLKGlucCk7CiAJCXJldHVybjsKQEAgLTUwODUsMTEgKzU1MTksNyBAQCBz
Y3RwX2ZyZWVfYnVmc3BhY2Uoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9hc3Nv
Y2lhdGlvbiAqYXNvYywKIAogaW50CiBzY3RwX3JlbGVhc2VfcHJfc2N0cF9jaHVuayhzdHJ1Y3Qg
c2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX3RtaXRfY2h1bmsgKnRwMSwKLQkJCSAgIHVpbnQ4
X3Qgc2VudCwgaW50IHNvX2xvY2tlZAotI2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmlu
ZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCi0JCQkgICBTQ1RQX1VOVVNFRAotI2VuZGlmCi0JKQor
CQkJICAgdWludDhfdCBzZW50LCBpbnQgc29fbG9ja2VkKQogewogCXN0cnVjdCBzY3RwX3N0cmVh
bV9vdXQgKnN0cnE7CiAJc3RydWN0IHNjdHBfdG1pdF9jaHVuayAqY2hrID0gTlVMTCwgKnRwMjsK
QEAgLTUxMDEsNyArNTUzMSw3IEBAIHNjdHBfcmVsZWFzZV9wcl9zY3RwX2NodW5rKHN0cnVjdCBz
Y3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfdG1pdF9jaHVuayAqdHAxLAogCWludCBub3Rkb25l
OwogCWludCBkb193YWtldXBfcm91dGluZSA9IDA7CiAKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykK
KyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlpZiAo
c29fbG9ja2VkKSB7CiAJCXNjdHBfbG9ja19hc3NlcnQoU0NUUF9JTlBfU08oc3RjYi0+c2N0cF9l
cCkpOwogCX0gZWxzZSB7CkBAIC01MjU4LDcgKzU2ODgsNyBAQCBzY3RwX3JlbGVhc2VfcHJfc2N0
cF9jaHVuayhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX3RtaXRfY2h1bmsgKnRw
MSwKIAkJCQljaGstPnJlYy5kYXRhLmNvbnRleHQgPSBzcC0+Y29udGV4dDsKIAkJCQljaGstPmZs
YWdzID0gc3AtPmFjdF9mbGFnczsKIAkJCQljaGstPndob1RvID0gTlVMTDsKLSNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fUGFuZGFfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCWNoay0+cmVjLmRhdGEudHNuID0g
YXRvbWljX2ZldGNoYWRkX2ludCgmc3RjYi0+YXNvYy5zZW5kaW5nX3NlcSwgMSk7CiAjZWxzZQog
CQkJCWNoay0+cmVjLmRhdGEudHNuID0gc3RjYi0+YXNvYy5zZW5kaW5nX3NlcSsrOwpAQCAtNTMw
Miw3ICs1NzMyLDcgQEAgc2N0cF9yZWxlYXNlX3ByX3NjdHBfY2h1bmsoc3RydWN0IHNjdHBfdGNi
ICpzdGNiLCBzdHJ1Y3Qgc2N0cF90bWl0X2NodW5rICp0cDEsCiAJCVNDVFBfVENCX1NFTkRfVU5M
T0NLKHN0Y2IpOwogCX0KIAlpZiAoZG9fd2FrZXVwX3JvdXRpbmUpIHsKLSNpZiBkZWZpbmVkKF9f
QVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9f
QVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJc3RydWN0IHNvY2tldCAqc287
CiAKIAkJc28gPSBTQ1RQX0lOUF9TTyhzdGNiLT5zY3RwX2VwKTsKQEAgLTUzMjAsNyArNTc1MCw3
IEBAIHNjdHBfcmVsZWFzZV9wcl9zY3RwX2NodW5rKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3Ry
dWN0IHNjdHBfdG1pdF9jaHVuayAqdHAxLAogCQl9CiAjZW5kaWYKIAkJc2N0cF9zb3d3YWtldXAo
c3RjYi0+c2N0cF9lcCwgc3RjYi0+c2N0cF9zb2NrZXQpOwotI2lmIGRlZmluZWQoX19BUFBMRV9f
KSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlpZiAoIXNvX2xvY2tlZCkgewogCQkJU0NU
UF9TT0NLRVRfVU5MT0NLKHNvLCAxKTsKIAkJfQpAQCAtNTM1NSwxMCArNTc4NSw2IEBAIHNjdHBf
ZmluZF9pZmFfaW5fZXAoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNvY2thZGRyICph
ZGRyLAogCQkJaWYgKCgoc3RydWN0IHNvY2thZGRyX2luICopYWRkciktPnNpbl9hZGRyLnNfYWRk
ciA9PQogCQkJICAgIGxhZGRyLT5pZmEtPmFkZHJlc3Muc2luLnNpbl9hZGRyLnNfYWRkcikgewog
CQkJCS8qIGZvdW5kIGhpbS4gKi8KLQkJCQlpZiAoaG9sZHNfbG9jayA9PSAwKSB7Ci0JCQkJCVND
VFBfSU5QX1JVTkxPQ0soaW5wKTsKLQkJCQl9Ci0JCQkJcmV0dXJuIChsYWRkci0+aWZhKTsKIAkJ
CQlicmVhazsKIAkJCX0KIAkJfQpAQCAtNTM2OCwxMCArNTc5NCw2IEBAIHNjdHBfZmluZF9pZmFf
aW5fZXAoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNvY2thZGRyICphZGRyLAogCQkJ
aWYgKFNDVFA2X0FSRV9BRERSX0VRVUFMKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopYWRkciwKIAkJ
CQkJCSAmbGFkZHItPmlmYS0+YWRkcmVzcy5zaW42KSkgewogCQkJCS8qIGZvdW5kIGhpbS4gKi8K
LQkJCQlpZiAoaG9sZHNfbG9jayA9PSAwKSB7Ci0JCQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsK
LQkJCQl9Ci0JCQkJcmV0dXJuIChsYWRkci0+aWZhKTsKIAkJCQlicmVhazsKIAkJCX0KIAkJfQpA
QCAtNTM4MCwxMCArNTgwMiw2IEBAIHNjdHBfZmluZF9pZmFfaW5fZXAoc3RydWN0IHNjdHBfaW5w
Y2IgKmlucCwgc3RydWN0IHNvY2thZGRyICphZGRyLAogCQlpZiAoYWRkci0+c2FfZmFtaWx5ID09
IEFGX0NPTk4pIHsKIAkJCWlmICgoKHN0cnVjdCBzb2NrYWRkcl9jb25uICopYWRkciktPnNjb25u
X2FkZHIgPT0gbGFkZHItPmlmYS0+YWRkcmVzcy5zY29ubi5zY29ubl9hZGRyKSB7CiAJCQkJLyog
Zm91bmQgaGltLiAqLwotCQkJCWlmIChob2xkc19sb2NrID09IDApIHsKLQkJCQkJU0NUUF9JTlBf
UlVOTE9DSyhpbnApOwotCQkJCX0KLQkJCQlyZXR1cm4gKGxhZGRyLT5pZmEpOwogCQkJCWJyZWFr
OwogCQkJfQogCQl9CkBAIC01MzkyLDcgKzU4MTAsMTEgQEAgc2N0cF9maW5kX2lmYV9pbl9lcChz
dHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsCiAJaWYgKGhvbGRz
X2xvY2sgPT0gMCkgewogCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CiAJfQotCXJldHVybiAoTlVM
TCk7CisJaWYgKGxhZGRyICE9IE5VTEwpIHsKKwkJcmV0dXJuIChsYWRkci0+aWZhKTsKKwl9IGVs
c2UgeworCQlyZXR1cm4gKE5VTEwpOworCX0KIH0KIAogdWludDMyX3QKQEAgLTU0MTUsNyArNTgz
Nyw3IEBAIHNjdHBfZ2V0X2lmYV9oYXNoX3ZhbChzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIpCiAJCXVp
bnQzMl90IGhhc2hfb2ZfYWRkcjsKIAogCQlzaW42ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilh
ZGRyOwotI2lmICFkZWZpbmVkKF9fV2luZG93c19fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9v
c19GcmVlQlNEKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19EYXJ3aW4pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgIWRlZmluZWQoX1dJTjMyKSAmJiAhKGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykpICYmICFkZWZpbmVkKF9f
QVBQTEVfXykKIAkJaGFzaF9vZl9hZGRyID0gKHNpbjYtPnNpbjZfYWRkci5zNl9hZGRyMzJbMF0g
KwogCQkJCXNpbjYtPnNpbjZfYWRkci5zNl9hZGRyMzJbMV0gKwogCQkJCXNpbjYtPnNpbjZfYWRk
ci5zNl9hZGRyMzJbMl0gKwpAQCAtNTQ1NSw4ICs1ODc3LDExIEBAIHNjdHBfZmluZF9pZmFfYnlf
YWRkcihzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIHVpbnQzMl90IHZyZl9pZCwgaW50IGhvbGRzX2xv
Y2spCiAJc3RydWN0IHNjdHBfaWZhbGlzdCAqaGFzaF9oZWFkOwogCXVpbnQzMl90IGhhc2hfb2Zf
YWRkcjsKIAotCWlmIChob2xkc19sb2NrID09IDApCisJaWYgKGhvbGRzX2xvY2sgPT0gMCkgewog
CQlTQ1RQX0lQSV9BRERSX1JMT0NLKCk7CisJfSBlbHNlIHsKKwkJU0NUUF9JUElfQUREUl9MT0NL
X0FTU0VSVCgpOworCX0KIAogCXZyZiA9IHNjdHBfZmluZF92cmYodnJmX2lkKTsKIAlpZiAodnJm
ID09IE5VTEwpIHsKQEAgLTU0ODcsOSArNTkxMiw2IEBAIHNjdHBfZmluZF9pZmFfYnlfYWRkcihz
dHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIHVpbnQzMl90IHZyZl9pZCwgaW50IGhvbGRzX2xvY2spCiAJ
CQlpZiAoKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilhZGRyKS0+c2luX2FkZHIuc19hZGRyID09CiAJ
CQkgICAgc2N0cF9pZmFwLT5hZGRyZXNzLnNpbi5zaW5fYWRkci5zX2FkZHIpIHsKIAkJCQkvKiBm
b3VuZCBoaW0uICovCi0JCQkJaWYgKGhvbGRzX2xvY2sgPT0gMCkKLQkJCQkJU0NUUF9JUElfQURE
Ul9SVU5MT0NLKCk7Ci0JCQkJcmV0dXJuIChzY3RwX2lmYXApOwogCQkJCWJyZWFrOwogCQkJfQog
CQl9CkBAIC01NDk5LDkgKzU5MjEsNiBAQCBzY3RwX2ZpbmRfaWZhX2J5X2FkZHIoc3RydWN0IHNv
Y2thZGRyICphZGRyLCB1aW50MzJfdCB2cmZfaWQsIGludCBob2xkc19sb2NrKQogCQkJaWYgKFND
VFA2X0FSRV9BRERSX0VRVUFMKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopYWRkciwKIAkJCQkJCSAm
c2N0cF9pZmFwLT5hZGRyZXNzLnNpbjYpKSB7CiAJCQkJLyogZm91bmQgaGltLiAqLwotCQkJCWlm
IChob2xkc19sb2NrID09IDApCi0JCQkJCVNDVFBfSVBJX0FERFJfUlVOTE9DSygpOwotCQkJCXJl
dHVybiAoc2N0cF9pZmFwKTsKIAkJCQlicmVhazsKIAkJCX0KIAkJfQpAQCAtNTUxMCw5ICs1OTI5
LDYgQEAgc2N0cF9maW5kX2lmYV9ieV9hZGRyKHN0cnVjdCBzb2NrYWRkciAqYWRkciwgdWludDMy
X3QgdnJmX2lkLCBpbnQgaG9sZHNfbG9jaykKIAkJaWYgKGFkZHItPnNhX2ZhbWlseSA9PSBBRl9D
T05OKSB7CiAJCQlpZiAoKChzdHJ1Y3Qgc29ja2FkZHJfY29ubiAqKWFkZHIpLT5zY29ubl9hZGRy
ID09IHNjdHBfaWZhcC0+YWRkcmVzcy5zY29ubi5zY29ubl9hZGRyKSB7CiAJCQkJLyogZm91bmQg
aGltLiAqLwotCQkJCWlmIChob2xkc19sb2NrID09IDApCi0JCQkJCVNDVFBfSVBJX0FERFJfUlVO
TE9DSygpOwotCQkJCXJldHVybiAoc2N0cF9pZmFwKTsKIAkJCQlicmVhazsKIAkJCX0KIAkJfQpA
QCAtNTUyMCw3ICs1OTM2LDcgQEAgc2N0cF9maW5kX2lmYV9ieV9hZGRyKHN0cnVjdCBzb2NrYWRk
ciAqYWRkciwgdWludDMyX3QgdnJmX2lkLCBpbnQgaG9sZHNfbG9jaykKIAl9CiAJaWYgKGhvbGRz
X2xvY2sgPT0gMCkKIAkJU0NUUF9JUElfQUREUl9SVU5MT0NLKCk7Ci0JcmV0dXJuIChOVUxMKTsK
KwlyZXR1cm4gKHNjdHBfaWZhcCk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC01NTI4LDYgKzU5NDQs
OSBAQCBzY3RwX3VzZXJfcmN2ZChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQzMl90ICpmcmVl
ZF9zb19mYXIsIGludCBob2xkX3Jsb2NrLAogCSAgICAgICB1aW50MzJfdCByd25kX3JlcSkKIHsK
IAkvKiBVc2VyIHB1bGxlZCBzb21lIGRhdGEsIGRvIHdlIG5lZWQgYSByd25kIHVwZGF0ZT8gKi8K
KyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCXN0
cnVjdCBlcG9jaF90cmFja2VyIGV0OworI2VuZGlmCiAJaW50IHJfdW5sb2NrZWQgPSAwOwogCXVp
bnQzMl90IGRpZiwgcnduZDsKIAlzdHJ1Y3Qgc29ja2V0ICpzbyA9IE5VTEw7CkBAIC01NTM3LDkg
KzU5NTYsOCBAQCBzY3RwX3VzZXJfcmN2ZChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQzMl90
ICpmcmVlZF9zb19mYXIsIGludCBob2xkX3Jsb2NrLAogCiAJYXRvbWljX2FkZF9pbnQoJnN0Y2It
PmFzb2MucmVmY250LCAxKTsKIAotCWlmIChzdGNiLT5hc29jLnN0YXRlICYgKFNDVFBfU1RBVEVf
QUJPVVRfVE9fQkVfRlJFRUQgfAotCQkJCVNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQgfAot
CQkJCVNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQpKSB7CisJaWYgKChTQ1RQX0dFVF9TVEFU
RShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX0FDS19TRU5UKSB8fAorCSAgICAoc3RjYi0+
YXNvYy5zdGF0ZSAmIChTQ1RQX1NUQVRFX0FCT1VUX1RPX0JFX0ZSRUVEIHwgU0NUUF9TVEFURV9T
SFVURE9XTl9SRUNFSVZFRCkpKSB7CiAJCS8qIFByZS1jaGVjayBJZiB3ZSBhcmUgZnJlZWluZyBu
byB1cGRhdGUgKi8KIAkJZ290byBub19sb2NrOwogCX0KQEAgLTU1ODQsMTEgKzYwMDIsMTcgQEAg
c2N0cF91c2VyX3JjdmQoc3RydWN0IHNjdHBfdGNiICpzdGNiLCB1aW50MzJfdCAqZnJlZWRfc29f
ZmFyLCBpbnQgaG9sZF9ybG9jaywKIAkJCWdvdG8gb3V0OwogCQl9CiAJCVNDVFBfU1RBVF9JTkNS
KHNjdHBzX3d1X3NhY2tzX3NlbnQpOworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCisJCU5FVF9FUE9DSF9FTlRFUihldCk7CisjZW5kaWYKIAkJc2N0
cF9zZW5kX3NhY2soc3RjYiwgU0NUUF9TT19MT0NLRUQpOwogCiAJCXNjdHBfY2h1bmtfb3V0cHV0
KHN0Y2ItPnNjdHBfZXAsIHN0Y2IsCiAJCQkJICBTQ1RQX09VVFBVVF9GUk9NX1VTUl9SQ1ZELCBT
Q1RQX1NPX0xPQ0tFRCk7CiAJCS8qIG1ha2Ugc3VyZSBubyB0aW1lciBpcyBydW5uaW5nICovCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJTkVU
X0VQT0NIX0VYSVQoZXQpOworI2VuZGlmCiAJCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZ
UEVfUkVDViwgc3RjYi0+c2N0cF9lcCwgc3RjYiwgTlVMTCwKIAkJICAgICAgICAgICAgICAgIFND
VFBfRlJPTV9TQ1RQVVRJTCArIFNDVFBfTE9DXzYpOwogCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7
CkBAIC01NjI2LDggKzYwNTAsOSBAQCBzY3RwX3NvcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzbywK
IAkgKgogCSAqLwogCXN0cnVjdCBzY3RwX2lucGNiICppbnAgPSBOVUxMOwotCWludCBteV9sZW4g
PSAwOwotCWludCBjcF9sZW4gPSAwLCBlcnJvciA9IDA7CisJc3NpemVfdCBteV9sZW4gPSAwOwor
CXNzaXplX3QgY3BfbGVuID0gMDsKKwlpbnQgZXJyb3IgPSAwOwogCXN0cnVjdCBzY3RwX3F1ZXVl
ZF90b19yZWFkICpjb250cm9sID0gTlVMTCwgKmN0bCA9IE5VTEwsICpueHQgPSBOVUxMOwogCXN0
cnVjdCBtYnVmICptID0gTlVMTDsKIAlzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IgPSBOVUxMOwpAQCAt
NTYzNiw3ICs2MDYxLDcgQEAgc2N0cF9zb3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc28sCiAJaW50
IG91dF9mbGFncyA9IDAsIGluX2ZsYWdzID0gMDsKIAlpbnQgYmxvY2tfYWxsb3dlZCA9IDE7CiAJ
dWludDMyX3QgZnJlZWRfc29fZmFyID0gMDsKLQl1aW50MzJfdCBjb3BpZWRfc29fZmFyID0gMDsK
Kwlzc2l6ZV90IGNvcGllZF9zb19mYXIgPSAwOwogCWludCBpbl9lZW9yX21vZGUgPSAwOwogCWlu
dCBub19yY3ZfbmVlZGVkID0gMDsKIAl1aW50MzJfdCByd25kX3JlcSA9IDA7CkBAIC01NjQ0LDcg
KzYwNjksNyBAQCBzY3RwX3NvcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzbywKIAlpbnQgaG9sZF9y
bG9jayA9IDA7CiAJc3NpemVfdCBzbGVuID0gMDsKIAl1aW50MzJfdCBoZWxkX2xlbmd0aCA9IDA7
Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNzAwMDAw
CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlp
bnQgc29ja2J1Zl9sb2NrID0gMDsKICNlbmRpZgogCkBAIC01NjYwLDcgKzYwODUsNyBAQCBzY3Rw
X3NvcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzbywKIAl9IGVsc2UgewogCQlpbl9mbGFncyA9IDA7
CiAJfQotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmIGRlZmluZWQoQVBQTEVfTEVPUEFSRCkKIAlzbGVu
ID0gdWlvLT51aW9fcmVzaWQ7CiAjZWxzZQpAQCAtNTY4MCw3ICs2MTA1LDcgQEAgc2N0cF9zb3Jl
Y3Ztc2coc3RydWN0IHNvY2tldCAqc28sCiAJCXJldHVybiAoRUlOVkFMKTsKIAl9CiAJaWYgKChp
bl9mbGFncyAmIChNU0dfRE9OVFdBSVQKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0Zy
ZWVCU0RfdmVyc2lvbiA+IDUwMDAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAJCQkgfCBNU0dfTkJJTwogI2VuZGlmCiAJCSAgICAgKSkgfHwK
QEAgLTU2OTksNyArNjEyNCw3IEBAIHNjdHBfc29yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvLAog
CQlyd25kX3JlcSA9IFNDVFBfTUlOX1JXTkQ7CiAJaW5fZWVvcl9tb2RlID0gc2N0cF9pc19mZWF0
dXJlX29uKGlucCwgU0NUUF9QQ0JfRkxBR1NfRVhQTElDSVRfRU9SKTsKIAlpZiAoU0NUUF9CQVNF
X1NZU0NUTChzY3RwX2xvZ2dpbmdfbGV2ZWwpICYgU0NUUF9SRUNWX1JXTkRfTE9HR0lOR19FTkFC
TEUpIHsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZiBkZWZpbmVkKEFQUExFX0xFT1BBUkQpCiAJCXNj
dHBfbWlzY19pbnRzKFNDVFBfU09SRUNWX0VOVEVSLAogCQkJICAgICAgIHJ3bmRfcmVxLCBpbl9l
ZW9yX21vZGUsIHNvLT5zb19yY3Yuc2JfY2MsIHVpby0+dWlvX3Jlc2lkKTsKQEAgLTU3MTIsMTIg
KzYxMzcsMTIgQEAgc2N0cF9zb3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc28sCiAJCQkgICAgICAg
cnduZF9yZXEsIGluX2Vlb3JfbW9kZSwgc28tPnNvX3Jjdi5zYl9jYywgKHVpbnQzMl90KXVpby0+
dWlvX3Jlc2lkKTsKICNlbmRpZgogCX0KLSNpZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19G
cmVlQlNEX3ZlcnNpb24gPCA3MDAwMDApIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiBk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJU09DS0JVRl9MT0NLKCZzby0+c29fcmN2KTsKIAlob2xk
X3NibG9jayA9IDE7CiAjZW5kaWYKIAlpZiAoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2xvZ2dpbmdf
bGV2ZWwpICZTQ1RQX1JFQ1ZfUldORF9MT0dHSU5HX0VOQUJMRSkgewotI2lmIGRlZmluZWQoX19B
UFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogI2lmIGRlZmluZWQoQVBQTEVfTEVPUEFSRCkKIAkJc2N0cF9taXNjX2ludHMoU0NUUF9TT1JF
Q1ZfRU5URVJQTCwKIAkJCSAgICAgICByd25kX3JlcSwgYmxvY2tfYWxsb3dlZCwgc28tPnNvX3Jj
di5zYl9jYywgdWlvLT51aW9fcmVzaWQpOwpAQCAtNTczMSwzNCArNjE1NiwzMCBAQCBzY3RwX3Nv
cmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzbywKICNlbmRpZgogCX0KIAotI2lmIGRlZmluZWQoX19B
UFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCWVycm9yID0gc2Jsb2NrKCZzby0+c29fcmN2LCBTQkxPQ0tXQUlUKGluX2ZsYWdzKSk7CiAj
ZW5kaWYKIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAllcnJvciA9IHNibG9jaygmc28tPnNvX3Jj
diwgKGJsb2NrX2FsbG93ZWQgPyBTQkxfV0FJVCA6IDApKTsKICNlbmRpZgogCWlmIChlcnJvcikg
ewogCQlnb3RvIHJlbGVhc2VfdW5sb2NrZWQ7CiAJfQotI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
ICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDcwMDAwMAotICAgICAgICBzb2NrYnVmX2xvY2sgPSAx
OworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJ
c29ja2J1Zl9sb2NrID0gMTsKICNlbmRpZgogIHJlc3RhcnQ6Ci0jaWYgKGRlZmluZWQoX19GcmVl
QlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uIDwgNzAwMDAwKSB8fCBkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCisjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWlmIChob2xkX3NibG9jayA9PSAw
KSB7CiAJCVNPQ0tCVUZfTE9DSygmc28tPnNvX3Jjdik7CiAJCWhvbGRfc2Jsb2NrID0gMTsKIAl9
CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzYnVubG9jaygmc28tPnNvX3JjdiwgMSk7CiAj
ZW5kaWYKIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uIDwg
NzAwMDAwCi0Jc2J1bmxvY2soJnNvLT5zb19yY3YpOwotI2VuZGlmCi0KICByZXN0YXJ0X25vc2Js
b2NrczoKIAlpZiAoaG9sZF9zYmxvY2sgPT0gMCkgewogCQlTT0NLQlVGX0xPQ0soJnNvLT5zb19y
Y3YpOwpAQCAtNTc2OCw3ICs2MTg5LDcgQEAgc2N0cF9zb3JlY3Ztc2coc3RydWN0IHNvY2tldCAq
c28sCiAJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19TT0NLRVRfQUxMR09O
RSkpIHsKIAkJZ290byBvdXQ7CiAJfQotI2lmIChkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0Zy
ZWVCU0RfdmVyc2lvbiA+IDUwMDAwMCkgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAoZGVm
aW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfV0lOMzIpKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCWlmICgoc28tPnNvX3Jjdi5zYl9zdGF0ZSAmIFNCU19DQU5UUkNWTU9SRSkgJiYg
KHNvLT5zb19yY3Yuc2JfY2MgPT0gMCkpIHsKICNlbHNlCiAJaWYgKChzby0+c29fc3RhdGUgJiBT
U19DQU5UUkNWTU9SRSkgJiYgKHNvLT5zb19yY3Yuc2JfY2MgPT0gMCkpIHsKQEAgLTU4MzYsMTEg
KzYyNTcsOCBAQCBzY3RwX3NvcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJU09DS0JVRl9V
TkxPQ0soJnNvLT5zb19yY3YpOwogCQlob2xkX3NibG9jayA9IDA7CiAJfQotI2lmIGRlZmluZWQo
X19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogCWVycm9yID0gc2Jsb2NrKCZzby0+c29fcmN2LCBTQkxPQ0tXQUlUKGluX2ZsYWdzKSk7
Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA8
IDcwMDAwMAotCWVycm9yID0gc2Jsb2NrKCZzby0+c29fcmN2LCAoYmxvY2tfYWxsb3dlZCA/IE1f
V0FJVE9LIDogMCkpOwogI2VuZGlmCiAJLyogd2UgcG9zc2libHkgaGF2ZSBkYXRhIHdlIGNhbiBy
ZWFkICovCiAJLypzYV9pZ25vcmUgRlJFRURfTUVNT1JZKi8KQEAgLTYwMzMsNyArNjQ1MSw3IEBA
IHNjdHBfc29yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvLAogCQkJICogd2UgdGhlbiB3aWxsIGdv
IHRvIHRoZSBzY3RwX3VzZXJfcmN2ZCgpIHRoYXQgd2lsbAogCQkJICogbm90IGxvY2sgdW50aWwg
aXQgS05PV3MgaXQgTVVTVCBzZW5kIGEgV1VQLVNBQ0suCiAJCQkgKi8KLQkJCWZyZWVkX3NvX2Zh
ciA9IHN0Y2ItPmZyZWVkX2J5X3NvcmN2X3NpbmNlbGFzdDsKKwkJCWZyZWVkX3NvX2ZhciA9ICh1
aW50MzJfdClzdGNiLT5mcmVlZF9ieV9zb3Jjdl9zaW5jZWxhc3Q7CiAJCQlzdGNiLT5mcmVlZF9i
eV9zb3Jjdl9zaW5jZWxhc3QgPSAwOwogCQl9CiAJfQpAQCAtNjE5MywxNiArNjYxMSwxNiBAQCBz
Y3RwX3NvcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJbSA9IGNvbnRyb2wtPmRhdGE7CiAJ
CXdoaWxlIChtKSB7CiAJCQkvKiBNb3ZlIG91dCBhbGwgd2UgY2FuICovCi0jaWYgZGVmaW5lZChf
X0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAjaWYgZGVmaW5lZChBUFBMRV9MRU9QQVJEKQotCQkJY3BfbGVuID0gKGludCl1aW8tPnVp
b19yZXNpZDsKKwkJCWNwX2xlbiA9IHVpby0+dWlvX3Jlc2lkOwogI2Vsc2UKLQkJCWNwX2xlbiA9
IChpbnQpdWlvX3Jlc2lkKHVpbyk7CisJCQljcF9sZW4gPSB1aW9fcmVzaWQodWlvKTsKICNlbmRp
ZgogI2Vsc2UKLQkJCWNwX2xlbiA9IChpbnQpdWlvLT51aW9fcmVzaWQ7CisJCQljcF9sZW4gPSB1
aW8tPnVpb19yZXNpZDsKICNlbmRpZgotCQkJbXlfbGVuID0gKGludClTQ1RQX0JVRl9MRU4obSk7
CisJCQlteV9sZW4gPSBTQ1RQX0JVRl9MRU4obSk7CiAJCQlpZiAoY3BfbGVuID4gbXlfbGVuKSB7
CiAJCQkJLyogbm90IGVub3VnaCBpbiB0aGlzIGJ1ZiAqLwogCQkJCWNwX2xlbiA9IG15X2xlbjsK
QEAgLTYyMTEsMTIgKzY2MjksMTIgQEAgc2N0cF9zb3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc28s
CiAJCQkJU0NUUF9JTlBfUkVBRF9VTkxPQ0soaW5wKTsKIAkJCQlob2xkX3Jsb2NrID0gMDsKIAkJ
CX0KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCVNDVFBfU09DS0VUX1VOTE9DSyhzbywgMCk7CiAjZW5k
aWYKIAkJCWlmIChjcF9sZW4gPiAwKQotCQkJCWVycm9yID0gdWlvbW92ZShtdG9kKG0sIGNoYXIg
KiksIGNwX2xlbiwgdWlvKTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKwkJCQllcnJvciA9IHVp
b21vdmUobXRvZChtLCBjaGFyICopLCAoaW50KWNwX2xlbiwgdWlvKTsKKyNpZiBkZWZpbmVkKF9f
QVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCVNDVFBfU09DS0VUX0xPQ0so
c28sIDApOwogI2VuZGlmCiAJCQkvKiByZS1yZWFkICovCkBAIC02MjYzLDcgKzY2ODEsNyBAQCBz
Y3RwX3NvcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJCQkJCSAgIGNvbnRyb2wtPmRvX25v
dF9yZWZfc3RjYj9OVUxMOnN0Y2IsIFNDVFBfTE9HX1NCUkVTVUxULCAwKTsKIAkJCQkJfQogCQkJ
CQljb3BpZWRfc29fZmFyICs9IGNwX2xlbjsKLQkJCQkJZnJlZWRfc29fZmFyICs9IGNwX2xlbjsK
KwkJCQkJZnJlZWRfc29fZmFyICs9ICh1aW50MzJfdCljcF9sZW47CiAJCQkJCWZyZWVkX3NvX2Zh
ciArPSBNU0laRTsKIAkJCQkJYXRvbWljX3N1YnRyYWN0X2ludCgmY29udHJvbC0+bGVuZ3RoLCBj
cF9sZW4pOwogCQkJCQljb250cm9sLT5kYXRhID0gc2N0cF9tX2ZyZWUobSk7CkBAIC02MjcxLDcg
KzY2ODksNyBAQCBzY3RwX3NvcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJCQkJLyogYmVl
biB0aHJvdWdoIGl0IGFsbCwgbXVzdCBob2xkIHNiIGxvY2sgb2sgdG8gbnVsbCB0YWlsICovCiAJ
CQkJCWlmIChjb250cm9sLT5kYXRhID09IE5VTEwpIHsKICNpZmRlZiBJTlZBUklBTlRTCi0jaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogCQkJCQkJaWYgKChjb250cm9sLT5lbmRfYWRkZWQgPT0gMCkgfHwK
IAkJCQkJCSAgICAoVEFJTFFfTkVYVChjb250cm9sLCBuZXh0KSA9PSBOVUxMKSkgewogCQkJCQkJ
CS8qIElmIHRoZSBlbmQgaXMgbm90IGFkZGVkLCBPUiB0aGUKQEAgLTYyOTgsOSArNjcxNiw5IEBA
IHNjdHBfc29yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvLAogCQkJCX0KIAkJCQlpZiAoKGluX2Zs
YWdzICYgTVNHX1BFRUspID09IDApIHsKIAkJCQkJU0NUUF9CVUZfUkVTVl9VRihtLCBjcF9sZW4p
OwotCQkJCQlTQ1RQX0JVRl9MRU4obSkgLT0gY3BfbGVuOworCQkJCQlTQ1RQX0JVRl9MRU4obSkg
LT0gKGludCljcF9sZW47CiAJCQkJCWlmIChTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbG9nZ2luZ19s
ZXZlbCkgJiBTQ1RQX1NCX0xPR0dJTkdfRU5BQkxFKSB7Ci0JCQkJCQlzY3RwX3NibG9nKCZzby0+
c29fcmN2LCBjb250cm9sLT5kb19ub3RfcmVmX3N0Y2I/TlVMTDpzdGNiLCBTQ1RQX0xPR19TQkZS
RUUsIGNwX2xlbik7CisJCQkJCQlzY3RwX3NibG9nKCZzby0+c29fcmN2LCBjb250cm9sLT5kb19u
b3RfcmVmX3N0Y2I/TlVMTDpzdGNiLCBTQ1RQX0xPR19TQkZSRUUsIChpbnQpY3BfbGVuKTsKIAkJ
CQkJfQogCQkJCQlhdG9taWNfc3VidHJhY3RfaW50KCZzby0+c29fcmN2LnNiX2NjLCBjcF9sZW4p
OwogCQkJCQlpZiAoKGNvbnRyb2wtPmRvX25vdF9yZWZfc3RjYiA9PSAwKSAmJgpAQCAtNjMwOCw3
ICs2NzI2LDcgQEAgc2N0cF9zb3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc28sCiAJCQkJCQlhdG9t
aWNfc3VidHJhY3RfaW50KCZzdGNiLT5hc29jLnNiX2NjLCBjcF9sZW4pOwogCQkJCQl9CiAJCQkJ
CWNvcGllZF9zb19mYXIgKz0gY3BfbGVuOwotCQkJCQlmcmVlZF9zb19mYXIgKz0gY3BfbGVuOwor
CQkJCQlmcmVlZF9zb19mYXIgKz0gKHVpbnQzMl90KWNwX2xlbjsKIAkJCQkJZnJlZWRfc29fZmFy
ICs9IE1TSVpFOwogCQkJCQlpZiAoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2xvZ2dpbmdfbGV2ZWwp
ICYgU0NUUF9TQl9MT0dHSU5HX0VOQUJMRSkgewogCQkJCQkJc2N0cF9zYmxvZygmc28tPnNvX3Jj
diwgY29udHJvbC0+ZG9fbm90X3JlZl9zdGNiP05VTEw6c3RjYiwKQEAgLTYzMTksNyArNjczNyw3
IEBAIHNjdHBfc29yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvLAogCQkJCQljb3BpZWRfc29fZmFy
ICs9IGNwX2xlbjsKIAkJCQl9CiAJCQl9Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVm
aW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaWYgZGVmaW5lZChB
UFBMRV9MRU9QQVJEKQogCQkJaWYgKChvdXRfZmxhZ3MgJiBNU0dfRU9SKSB8fCAodWlvLT51aW9f
cmVzaWQgPT0gMCkpIHsKICNlbHNlCkBAIC02NDA1LDcgKzY4MjMsNyBAQCBzY3RwX3NvcmVjdm1z
ZyhzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJaWYgKG91dF9mbGFncyAmIE1TR19FT1IpIHsKIAkJCWdv
dG8gcmVsZWFzZTsKIAkJfQotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19B
UFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmIGRlZmluZWQoQVBQTEVfTEVP
UEFSRCkKIAkJaWYgKCh1aW8tPnVpb19yZXNpZCA9PSAwKSB8fAogI2Vsc2UKQEAgLTY0MTUsNyAr
NjgzMyw3IEBAIHNjdHBfc29yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvLAogCQlpZiAoKHVpby0+
dWlvX3Jlc2lkID09IDApIHx8CiAjZW5kaWYKIAkJICAgICgoaW5fZWVvcl9tb2RlKSAmJgotCQkg
ICAgIChjb3BpZWRfc29fZmFyID49ICh1aW50MzJfdCltYXgoc28tPnNvX3Jjdi5zYl9sb3dhdCwg
MSkpKSkgeworCQkgICAgIChjb3BpZWRfc29fZmFyID49IG1heChzby0+c29fcmN2LnNiX2xvd2F0
LCAxKSkpKSB7CiAJCQlnb3RvIHJlbGVhc2U7CiAJCX0KIAkJLyoKQEAgLTY0NDMsNyArNjg2MSw3
IEBAIHNjdHBfc29yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvLAogCQkJc2N0cF91c2VyX3JjdmQo
c3RjYiwgJmZyZWVkX3NvX2ZhciwgaG9sZF9ybG9jaywgcnduZF9yZXEpOwogCQl9CiAJd2FpdF9z
b21lX21vcmU6Ci0jaWYgKGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9u
ID4gNTAwMDAwKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmIChkZWZpbmVkKF9fRnJlZUJT
RF9fKSB8fCBkZWZpbmVkKF9XSU4zMikpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCWlm
IChzby0+c29fcmN2LnNiX3N0YXRlICYgU0JTX0NBTlRSQ1ZNT1JFKSB7CiAJCQlnb3RvIHJlbGVh
c2U7CiAJCX0KQEAgLTY0NjgsMTMgKzY4ODYsMTMgQEAgc2N0cF9zb3JlY3Ztc2coc3RydWN0IHNv
Y2tldCAqc28sCiAJCSAgICAoc2N0cF9pc19mZWF0dXJlX29uKGlucCwgU0NUUF9QQ0JfRkxBR1Nf
RlJBR19JTlRFUkxFQVZFKSkpIHsKIAkJCWdvdG8gcmVsZWFzZTsKIAkJfQotI2lmIGRlZmluZWQo
X19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogCQlzYnVubG9jaygmc28tPnNvX3JjdiwgMSk7CiAjZW5kaWYKIAkJaWYgKHNvLT5zb19y
Y3Yuc2JfY2MgPD0gY29udHJvbC0+aGVsZF9sZW5ndGgpIHsKIAkJCWVycm9yID0gc2J3YWl0KCZz
by0+c29fcmN2KTsKIAkJCWlmIChlcnJvcikgewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQln
b3RvIHJlbGVhc2U7CiAjZWxzZQogCQkJCWdvdG8gcmVsZWFzZV91bmxvY2tlZDsKQEAgLTY0ODIs
NyArNjkwMCw3IEBAIHNjdHBfc29yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvLAogCQkJfQogCQkJ
Y29udHJvbC0+aGVsZF9sZW5ndGggPSAwOwogCQl9Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pCisj
aWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCWVycm9y
ID0gc2Jsb2NrKCZzby0+c29fcmN2LCBTQkxPQ0tXQUlUKGluX2ZsYWdzKSk7CiAjZW5kaWYKIAkJ
aWYgKGhvbGRfc2Jsb2NrKSB7CkBAIC02NTU0LDcgKzY5NzIsNyBAQCBzY3RwX3NvcmVjdm1zZyhz
dHJ1Y3Qgc29ja2V0ICpzbywKIAkJaWYgKGNvbnRyb2wtPnNwZWNfZmxhZ3MgJiBNX05PVElGSUNB
VElPTikgewogCQkJb3V0X2ZsYWdzIHw9IE1TR19OT1RJRklDQVRJT047CiAJCX0KLSNpZiBkZWZp
bmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKICNpZiBkZWZpbmVkKEFQUExFX0xFT1BBUkQpCiAJCXVpby0+dWlvX3Jlc2lkID0g
Y29udHJvbC0+bGVuZ3RoOwogI2Vsc2UKQEAgLTY1NzEsNyArNjk4OSw3IEBAIHNjdHBfc29yZWN2
bXNnKHN0cnVjdCBzb2NrZXQgKnNvLAogCQkJCSAgIGNvbnRyb2wtPmRvX25vdF9yZWZfc3RjYj9O
VUxMOnN0Y2IsIFNDVFBfTE9HX1NCRlJFRSwgU0NUUF9CVUZfTEVOKG0pKTsKIAkJCX0KIAkJCXNj
dHBfc2JmcmVlKGNvbnRyb2wsIHN0Y2IsICZzby0+c29fcmN2LCBtKTsKLQkJCWZyZWVkX3NvX2Zh
ciArPSBTQ1RQX0JVRl9MRU4obSk7CisJCQlmcmVlZF9zb19mYXIgKz0gKHVpbnQzMl90KVNDVFBf
QlVGX0xFTihtKTsKIAkJCWZyZWVkX3NvX2ZhciArPSBNU0laRTsKIAkJCWlmIChTQ1RQX0JBU0Vf
U1lTQ1RMKHNjdHBfbG9nZ2luZ19sZXZlbCkgJiBTQ1RQX1NCX0xPR0dJTkdfRU5BQkxFKSB7CiAJ
CQkJc2N0cF9zYmxvZygmc28tPnNvX3JjdiwKQEAgLTY1OTEsNyArNzAwOSw3IEBAIHNjdHBfc29y
ZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvLAogCQlTQ1RQX0lOUF9SRUFEX1VOTE9DSyhpbnApOwog
CQlob2xkX3Jsb2NrID0gMDsKIAl9Ci0jaWYgKGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJl
ZUJTRF92ZXJzaW9uIDwgNzAwMDAwKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaWYgZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCWlmIChob2xkX3NibG9jayA9PSAwKSB7CiAJCVNPQ0tCVUZf
TE9DSygmc28tPnNvX3Jjdik7CiAJCWhvbGRfc2Jsb2NrID0gMTsKQEAgLTY2MDIsMTUgKzcwMjAs
MTMgQEAgc2N0cF9zb3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc28sCiAJCWhvbGRfc2Jsb2NrID0g
MDsKIAl9CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzYnVubG9jaygmc28tPnNvX3Jjdiwg
MSk7CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzYnVubG9jaygmc28tPnNvX3Jj
dik7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNzAw
MDAwCiAJc29ja2J1Zl9sb2NrID0gMDsKLSNlbmRpZgogI2VuZGlmCiAKICByZWxlYXNlX3VubG9j
a2VkOgpAQCAtNjY0Myw3ICs3MDU5LDcgQEAgc2N0cF9zb3JlY3Ztc2coc3RydWN0IHNvY2tldCAq
c28sCiAJaWYgKGhvbGRfc2Jsb2NrKSB7CiAJCVNPQ0tCVUZfVU5MT0NLKCZzby0+c29fcmN2KTsK
IAl9Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNzAw
MDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
IAlpZiAoc29ja2J1Zl9sb2NrKSB7CiAJCXNidW5sb2NrKCZzby0+c29fcmN2KTsKIAl9CkBAIC02
NjcyLDcgKzcwODgsNyBAQCBzY3RwX3NvcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJaWYg
KHN0Y2IpIHsKIAkJCXNjdHBfbWlzY19pbnRzKFNDVFBfU09SRUNWX0RPTkUsCiAJCQkJICAgICAg
IGZyZWVkX3NvX2ZhciwKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZiBkZWZpbmVkKEFQUExFX0xFT1BB
UkQpCiAJCQkJICAgICAgICgodWlvKSA/IChzbGVuIC0gdWlvLT51aW9fcmVzaWQpIDogc2xlbiks
CiAjZWxzZQpAQCAtNjY4Niw3ICs3MTAyLDcgQEAgc2N0cF9zb3JlY3Ztc2coc3RydWN0IHNvY2tl
dCAqc28sCiAJCX0gZWxzZSB7CiAJCQlzY3RwX21pc2NfaW50cyhTQ1RQX1NPUkVDVl9ET05FLAog
CQkJCSAgICAgICBmcmVlZF9zb19mYXIsCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVm
aW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaWYgZGVmaW5lZChB
UFBMRV9MRU9QQVJEKQogCQkJCSAgICAgICAoKHVpbykgPyAoc2xlbiAtIHVpby0+dWlvX3Jlc2lk
KSA6IHNsZW4pLAogI2Vsc2UKQEAgLTY3MzUsNyArNzE1MSw3IEBAIHNjdHBfZHluYW1pY19zZXRf
cHJpbWFyeShzdHJ1Y3Qgc29ja2FkZHIgKnNhLCB1aW50MzJfdCB2cmZfaWQpCiAJc3RydWN0IHNj
dHBfaWZhICppZmE7CiAJc3RydWN0IHNjdHBfbGFkZHIgKndpOwogCi0JaWZhID0gc2N0cF9maW5k
X2lmYV9ieV9hZGRyKHNhLCB2cmZfaWQsIDApOworCWlmYSA9IHNjdHBfZmluZF9pZmFfYnlfYWRk
cihzYSwgdnJmX2lkLCBTQ1RQX0FERFJfTk9UX0xPQ0tFRCk7CiAJaWYgKGlmYSA9PSBOVUxMKSB7
CiAJCVNDVFBfTFRSQUNFX0VSUl9SRVQoTlVMTCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBV
VElMLCBFQUREUk5PVEFWQUlMKTsKIAkJcmV0dXJuIChFQUREUk5PVEFWQUlMKTsKQEAgLTY4MTYs
NyArNzIzMiw3IEBAIHNjdHBfc29yZWNlaXZlKAlzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJZnJvbWxl
biA9IDA7CiAJfQogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExF
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJU0NUUF9TT0NLRVRfTE9DSyhzbywgMSk7
CiAjZW5kaWYKIAlpZiAoZmlsbGluZ19zaW5mbykgewpAQCAtNjg0OCw3ICs3MjY0LDcgQEAgc2N0
cF9zb3JlY2VpdmUoCXN0cnVjdCBzb2NrZXQgKnNvLAogI2Vsc2UKIAkJaWYgKGZyb20pIHsKICNl
bmRpZgotI2lmIChkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDUw
MDAwMCkgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykg
fHwgZGVmaW5lZChfV0lOMzIpKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJKnBzYSA9
IHNvZHVwc29ja2FkZHIoZnJvbSwgTV9OT1dBSVQpOwogI2Vsc2UKIAkJCSpwc2EgPSBkdXBfc29j
a2FkZHIoZnJvbSwgbXAwID09IDApOwpAQCAtNjg1NywxNCArNzI3MywxNCBAQCBzY3RwX3NvcmVj
ZWl2ZSgJc3RydWN0IHNvY2tldCAqc28sCiAJCQkqcHNhID0gTlVMTDsKIAkJfQogCX0KLSNpZiBk
ZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKIAlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDEpOwogI2VuZGlmCiAJcmV0dXJu
IChlcnJvcik7CiB9CiAKIAotI2lmIChkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0Rf
dmVyc2lvbiA8IDYwMzAwMCkgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiBkZWZpbmVkKF9X
SU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIC8qCiAgKiBHZW5lcmFsIHJvdXRpbmUg
dG8gYWxsb2NhdGUgYSBoYXNoIHRhYmxlIHdpdGggY29udHJvbCBvZiBtZW1vcnkgZmxhZ3MuCiAg
KiBpcyBpbiA3LjAgYW5kIGJleW9uZCBmb3Igc3VyZSA6LSkKQEAgLTcxMDMsMzEgKzc1MTksMzQg
QEAgc2N0cF9jb25uZWN0eF9oZWxwZXJfYWRkKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0
IHNvY2thZGRyICphZGRyLAogCXJldHVybiAoYWRkZWQpOwogfQogCi1zdHJ1Y3Qgc2N0cF90Y2Ig
KgoraW50CiBzY3RwX2Nvbm5lY3R4X2hlbHBlcl9maW5kKHN0cnVjdCBzY3RwX2lucGNiICppbnAs
IHN0cnVjdCBzb2NrYWRkciAqYWRkciwKLQkJCSAgdW5zaWduZWQgaW50ICp0b3RhZGRyLAotCQkJ
ICB1bnNpZ25lZCBpbnQgKm51bV92NCwgdW5zaWduZWQgaW50ICpudW1fdjYsIGludCAqZXJyb3Is
Ci0JCQkgIHVuc2lnbmVkIGludCBsaW1pdCwgaW50ICpiYWRfYWRkcikKKwkJCSAgdW5zaWduZWQg
aW50IHRvdGFkZHIsCisJCQkgIHVuc2lnbmVkIGludCAqbnVtX3Y0LCB1bnNpZ25lZCBpbnQgKm51
bV92NiwKKwkJCSAgdW5zaWduZWQgaW50IGxpbWl0KQogewogCXN0cnVjdCBzb2NrYWRkciAqc2E7
Ci0Jc3RydWN0IHNjdHBfdGNiICpzdGNiID0gTlVMTDsKKwlzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2I7
CiAJdW5zaWduZWQgaW50IGluY3IsIGF0LCBpOwogCiAJYXQgPSAwOwogCXNhID0gYWRkcjsKLQkq
ZXJyb3IgPSAqbnVtX3Y2ID0gKm51bV92NCA9IDA7CisJKm51bV92NiA9ICpudW1fdjQgPSAwOwog
CS8qIGFjY291bnQgYW5kIHZhbGlkYXRlIGFkZHJlc3NlcyAqLwotCWZvciAoaSA9IDA7IGkgPCAq
dG90YWRkcjsgaSsrKSB7CisJaWYgKHRvdGFkZHIgPT0gMCkgeworCQlyZXR1cm4gKEVJTlZBTCk7
CisJfQorCWZvciAoaSA9IDA7IGkgPCB0b3RhZGRyOyBpKyspIHsKKwkJaWYgKGF0ICsgc2l6ZW9m
KHN0cnVjdCBzb2NrYWRkcikgPiBsaW1pdCkgeworCQkJcmV0dXJuIChFSU5WQUwpOworCQl9CiAJ
CXN3aXRjaCAoc2EtPnNhX2ZhbWlseSkgewogI2lmZGVmIElORVQKIAkJY2FzZSBBRl9JTkVUOgog
CQkJaW5jciA9ICh1bnNpZ25lZCBpbnQpc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7CiAjaWZk
ZWYgSEFWRV9TQV9MRU4KIAkJCWlmIChzYS0+c2FfbGVuICE9IGluY3IpIHsKLQkJCQlTQ1RQX0xU
UkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBVVElMLCBFSU5WQUwp
OwotCQkJCSplcnJvciA9IEVJTlZBTDsKLQkJCQkqYmFkX2FkZHIgPSAxOwotCQkJCXJldHVybiAo
TlVMTCk7CisJCQkJcmV0dXJuIChFSU5WQUwpOwogCQkJfQogI2VuZGlmCiAJCQkoKm51bV92NCkg
Kz0gMTsKQEAgLTcxNDEsMTggKzc1NjAsMTIgQEAgc2N0cF9jb25uZWN0eF9oZWxwZXJfZmluZChz
dHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsCiAJCQlzaW42ID0g
KHN0cnVjdCBzb2NrYWRkcl9pbjYgKilzYTsKIAkJCWlmIChJTjZfSVNfQUREUl9WNE1BUFBFRCgm
c2luNi0+c2luNl9hZGRyKSkgewogCQkJCS8qIE11c3QgYmUgbm9uLW1hcHBlZCBmb3IgY29ubmVj
dHggKi8KLQkJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9N
X1NDVFBVVElMLCBFSU5WQUwpOwotCQkJCSplcnJvciA9IEVJTlZBTDsKLQkJCQkqYmFkX2FkZHIg
PSAxOwotCQkJCXJldHVybiAoTlVMTCk7CisJCQkJcmV0dXJuIChFSU5WQUwpOwogCQkJfQogCQkJ
aW5jciA9ICh1bnNpZ25lZCBpbnQpc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpOwogI2lmZGVm
IEhBVkVfU0FfTEVOCiAJCQlpZiAoc2EtPnNhX2xlbiAhPSBpbmNyKSB7Ci0JCQkJU0NUUF9MVFJB
Q0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQVVRJTCwgRUlOVkFMKTsK
LQkJCQkqZXJyb3IgPSBFSU5WQUw7Ci0JCQkJKmJhZF9hZGRyID0gMTsKLQkJCQlyZXR1cm4gKE5V
TEwpOworCQkJCXJldHVybiAoRUlOVkFMKTsKIAkJCX0KICNlbmRpZgogCQkJKCpudW1fdjYpICs9
IDE7CkBAIC03MTYwLDI5ICs3NTczLDIzIEBAIHNjdHBfY29ubmVjdHhfaGVscGVyX2ZpbmQoc3Ry
dWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNvY2thZGRyICphZGRyLAogCQl9CiAjZW5kaWYK
IAkJZGVmYXVsdDoKLQkJCSp0b3RhZGRyID0gaTsKLQkJCWluY3IgPSAwOwotCQkJLyogd2UgYXJl
IGRvbmUgKi8KLQkJCWJyZWFrOworCQkJcmV0dXJuIChFSU5WQUwpOwogCQl9Ci0JCWlmIChpID09
ICp0b3RhZGRyKSB7Ci0JCQlicmVhazsKKwkJaWYgKChhdCArIGluY3IpID4gbGltaXQpIHsKKwkJ
CXJldHVybiAoRUlOVkFMKTsKIAkJfQogCQlTQ1RQX0lOUF9JTkNSX1JFRihpbnApOwogCQlzdGNi
ID0gc2N0cF9maW5kYXNzb2NpYXRpb25fZXBfYWRkcigmaW5wLCBzYSwgTlVMTCwgTlVMTCwgTlVM
TCk7CiAJCWlmIChzdGNiICE9IE5VTEwpIHsKLQkJCS8qIEFscmVhZHkgaGF2ZSBvciBhbSBicmlu
ZyB1cCBhbiBhc3NvY2lhdGlvbiAqLwotCQkJcmV0dXJuIChzdGNiKTsKKwkJCVNDVFBfVENCX1VO
TE9DSyhzdGNiKTsKKwkJCXJldHVybiAoRUFMUkVBRFkpOwogCQl9IGVsc2UgewogCQkJU0NUUF9J
TlBfREVDUl9SRUYoaW5wKTsKIAkJfQotCQlpZiAoKGF0ICsgaW5jcikgPiBsaW1pdCkgewotCQkJ
KnRvdGFkZHIgPSBpOwotCQkJYnJlYWs7Ci0JCX0KKwkJYXQgKz0gaW5jcjsKIAkJc2EgPSAoc3Ry
dWN0IHNvY2thZGRyICopKChjYWRkcl90KXNhICsgaW5jcik7CiAJfQotCXJldHVybiAoKHN0cnVj
dCBzY3RwX3RjYiAqKU5VTEwpOworCXJldHVybiAoMCk7CiB9CiAKIC8qCkBAIC03MTkxLDE2ICs3
NTk4LDI0IEBAIHNjdHBfY29ubmVjdHhfaGVscGVyX2ZpbmQoc3RydWN0IHNjdHBfaW5wY2IgKmlu
cCwgc3RydWN0IHNvY2thZGRyICphZGRyLAogICovCiB2b2lkCiBzY3RwX2JpbmR4X2FkZF9hZGRy
ZXNzKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAotCQkgICAgICAg
c3RydWN0IHNvY2thZGRyICpzYSwgc2N0cF9hc3NvY190IGFzc29jX2lkLAotCQkgICAgICAgdWlu
dDMyX3QgdnJmX2lkLCBpbnQgKmVycm9yLCB2b2lkICpwKQorICAgICAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3Qgc29ja2FkZHIgKnNhLCB1aW50MzJfdCB2cmZfaWQsIGludCAqZXJyb3IsCisgICAg
ICAgICAgICAgICAgICAgICAgIHZvaWQgKnApCiB7Ci0Jc3RydWN0IHNvY2thZGRyICphZGRyX3Rv
dXNlOwogI2lmIGRlZmluZWQoSU5FVCkgJiYgZGVmaW5lZChJTkVUNikKIAlzdHJ1Y3Qgc29ja2Fk
ZHJfaW4gc2luOwogI2VuZGlmCisjaWZkZWYgSU5FVDYKKwlzdHJ1Y3Qgc29ja2FkZHJfaW42ICpz
aW42OworI2VuZGlmCisjaWZkZWYgSU5FVAorCXN0cnVjdCBzb2NrYWRkcl9pbiAqc2lucDsKKyNl
bmRpZgorCXN0cnVjdCBzb2NrYWRkciAqYWRkcl90b191c2U7CisJc3RydWN0IHNjdHBfaW5wY2Ig
KmxlcDsKICNpZmRlZiBTQ1RQX01WUkYKLQlpbnQgaSwgZm5kID0gMDsKKwlpbnQgaTsKICNlbmRp
ZgorCXVpbnQxNl90IHBvcnQ7CiAKIAkvKiBzZWUgaWYgd2UncmUgYm91bmQgYWxsIGFscmVhZHkh
ICovCiAJaWYgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0JPVU5EQUxMKSB7CkBA
IC03MjEyLDIzICs3NjI3LDE4IEBAIHNjdHBfYmluZHhfYWRkX2FkZHJlc3Moc3RydWN0IHNvY2tl
dCAqc28sIHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJLyogSXMgdGhlIFZSRiBvbmUgd2UgaGF2
ZSAqLwogCWZvciAoaSA9IDA7IGkgPCBpbnAtPm51bV92cmZzOyBpKyspIHsKIAkJaWYgKHZyZl9p
ZCA9PSBpbnAtPm1fdnJmX2lkc1tpXSkgewotCQkJZm5kID0gMTsKIAkJCWJyZWFrOwogCQl9CiAJ
fQotCWlmICghZm5kKSB7CisJaWYgKGkgPT0gaW5wLT5udW1fdnJmcykgewogCQlTQ1RQX0xUUkFD
RV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBVVElMLCBFSU5WQUwpOwog
CQkqZXJyb3IgPSBFSU5WQUw7CiAJCXJldHVybjsKIAl9CiAjZW5kaWYKLQlhZGRyX3RvdXNlID0g
c2E7CisJc3dpdGNoIChzYS0+c2FfZmFtaWx5KSB7CiAjaWZkZWYgSU5FVDYKLQlpZiAoc2EtPnNh
X2ZhbWlseSA9PSBBRl9JTkVUNikgewotI2lmZGVmIElORVQKLQkJc3RydWN0IHNvY2thZGRyX2lu
NiAqc2luNjsKLQotI2VuZGlmCisJY2FzZSBBRl9JTkVUNjoKICNpZmRlZiBIQVZFX1NBX0xFTgog
CQlpZiAoc2EtPnNhX2xlbiAhPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNikpIHsKIAkJCVND
VFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUFVUSUwsIEVJ
TlZBTCk7CkBAIC03MjQyLDggKzc2NTIsOSBAQCBzY3RwX2JpbmR4X2FkZF9hZGRyZXNzKHN0cnVj
dCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogCQkJKmVycm9yID0gRUlOVkFM
OwogCQkJcmV0dXJuOwogCQl9CisJCXNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKXNhOwor
CQlwb3J0ID0gc2luNi0+c2luNl9wb3J0OwogI2lmZGVmIElORVQKLQkJc2luNiA9IChzdHJ1Y3Qg
c29ja2FkZHJfaW42ICopYWRkcl90b3VzZTsKIAkJaWYgKElONl9JU19BRERSX1Y0TUFQUEVEKCZz
aW42LT5zaW42X2FkZHIpKSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZM
QUdTX0JPVU5EX1Y2KSAmJgogCQkJICAgIFNDVFBfSVBWNl9WNk9OTFkoaW5wKSkgewpAQCAtNzI1
MywxMyArNzY2NCwxNyBAQCBzY3RwX2JpbmR4X2FkZF9hZGRyZXNzKHN0cnVjdCBzb2NrZXQgKnNv
LCBzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogCQkJCXJldHVybjsKIAkJCX0KIAkJCWluNl9zaW42
XzJfc2luKCZzaW4sIHNpbjYpOwotCQkJYWRkcl90b3VzZSA9IChzdHJ1Y3Qgc29ja2FkZHIgKikm
c2luOworCQkJYWRkcl90b191c2UgPSAoc3RydWN0IHNvY2thZGRyICopJnNpbjsKKwkJfSBlbHNl
IHsKKwkJCWFkZHJfdG9fdXNlID0gc2E7CiAJCX0KKyNlbHNlCisJCWFkZHJfdG9fdXNlID0gc2E7
CiAjZW5kaWYKLQl9CisJCWJyZWFrOwogI2VuZGlmCiAjaWZkZWYgSU5FVAotCWlmIChzYS0+c2Ff
ZmFtaWx5ID09IEFGX0lORVQpIHsKKwljYXNlIEFGX0lORVQ6CiAjaWZkZWYgSEFWRV9TQV9MRU4K
IAkJaWYgKHNhLT5zYV9sZW4gIT0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpIHsKIAkJCVND
VFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUFVUSUwsIEVJ
TlZBTCk7CkBAIC03Mjc0LDEwICs3Njg5LDE4IEBAIHNjdHBfYmluZHhfYWRkX2FkZHJlc3Moc3Ry
dWN0IHNvY2tldCAqc28sIHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCQkqZXJyb3IgPSBFSU5W
QUw7CiAJCQlyZXR1cm47CiAJCX0KLQl9CisJCXNpbnAgPSAoc3RydWN0IHNvY2thZGRyX2luICop
c2E7CisJCXBvcnQgPSBzaW5wLT5zaW5fcG9ydDsKKwkJYWRkcl90b191c2UgPSBzYTsKKwkJYnJl
YWs7CiAjZW5kaWYKKwlkZWZhdWx0OgorCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwg
TlVMTCwgU0NUUF9GUk9NX1NDVFBVVElMLCBFSU5WQUwpOworCQkqZXJyb3IgPSBFSU5WQUw7CisJ
CXJldHVybjsKKwl9CiAJaWYgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VOQk9V
TkQpIHsKLSNpZiAhKGRlZmluZWQoX19QYW5kYV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKSB8
fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pKQorI2lmICEoZGVmaW5lZChfV0lOMzIpIHx8IGRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykpCiAJCWlmIChwID09IE5VTEwpIHsKIAkJCS8qIENhbid0IGdldCBw
cm9jIGZvciBOZXQvT3BlbiBCU0QgKi8KIAkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxM
LCBOVUxMLCBTQ1RQX0ZST01fU0NUUFVUSUwsIEVJTlZBTCk7CkBAIC03Mjg1LDU4ICs3NzA4LDI1
IEBAIHNjdHBfYmluZHhfYWRkX2FkZHJlc3Moc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzY3Rw
X2lucGNiICppbnAsCiAJCQlyZXR1cm47CiAJCX0KICNlbmRpZgotCQkqZXJyb3IgPSBzY3RwX2lu
cGNiX2JpbmQoc28sIGFkZHJfdG91c2UsIE5VTEwsIHApOworCQkqZXJyb3IgPSBzY3RwX2lucGNi
X2JpbmQoc28sIGFkZHJfdG9fdXNlLCBOVUxMLCBwKTsKIAkJcmV0dXJuOwogCX0KLQkvKgotCSAq
IE5vIGxvY2tzIHJlcXVpcmVkIGhlcmUgc2luY2UgYmluZCBhbmQgbWdtdF9lcF9zYQotCSAqIGFs
bCBkbyB0aGVpciBvd24gbG9ja2luZy4gSWYgd2UgZG8gc29tZXRoaW5nIGZvcgotCSAqIHRoZSBG
SVg6IGJlbG93IHdlIG1heSBuZWVkIHRvIGxvY2sgaW4gdGhhdCBjYXNlLgotCSAqLwotCWlmIChh
c3NvY19pZCA9PSAwKSB7CisJLyogVmFsaWRhdGUgdGhlIGluY29taW5nIHBvcnQuICovCisJaWYg
KChwb3J0ICE9IDApICYmIChwb3J0ICE9IGlucC0+c2N0cF9scG9ydCkpIHsKKwkJU0NUUF9MVFJB
Q0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQVVRJTCwgRUlOVkFMKTsK
KwkJKmVycm9yID0gRUlOVkFMOworCQlyZXR1cm47CisJfQorCWxlcCA9IHNjdHBfcGNiX2ZpbmRl
cChhZGRyX3RvX3VzZSwgMSwgMCwgdnJmX2lkKTsKKwlpZiAobGVwID09IE5VTEwpIHsKIAkJLyog
YWRkIHRoZSBhZGRyZXNzICovCi0JCXN0cnVjdCBzY3RwX2lucGNiICpsZXA7Ci0JCXN0cnVjdCBz
b2NrYWRkcl9pbiAqbHNpbiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilhZGRyX3RvdXNlOwotCi0J
CS8qIHZhbGlkYXRlIHRoZSBpbmNvbWluZyBwb3J0ICovCi0JCWlmICgobHNpbi0+c2luX3BvcnQg
IT0gMCkgJiYKLQkJICAgIChsc2luLT5zaW5fcG9ydCAhPSBpbnAtPnNjdHBfbHBvcnQpKSB7Ci0J
CQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBVVElM
LCBFSU5WQUwpOwotCQkJKmVycm9yID0gRUlOVkFMOwotCQkJcmV0dXJuOwotCQl9IGVsc2Ugewot
CQkJLyogdXNlciBzcGVjaWZpZWQgMCBwb3J0LCBzZXQgaXQgdG8gZXhpc3RpbmcgcG9ydCAqLwot
CQkJbHNpbi0+c2luX3BvcnQgPSBpbnAtPnNjdHBfbHBvcnQ7Ci0JCX0KLQotCQlsZXAgPSBzY3Rw
X3BjYl9maW5kZXAoYWRkcl90b3VzZSwgMSwgMCwgdnJmX2lkKTsKLQkJaWYgKGxlcCAhPSBOVUxM
KSB7Ci0JCQkvKgotCQkJICogV2UgbXVzdCBkZWNyZW1lbnQgdGhlIHJlZmNvdW50Ci0JCQkgKiBz
aW5jZSB3ZSBoYXZlIHRoZSBlcCBhbHJlYWR5IGFuZAotCQkJICogYXJlIGJpbmRpbmcuIE5vIHJl
bW92ZSBnb2luZyBvbgotCQkJICogaGVyZS4KLQkJCSAqLwotCQkJU0NUUF9JTlBfREVDUl9SRUYo
bGVwKTsKLQkJfQotCQlpZiAobGVwID09IGlucCkgewotCQkJLyogYWxyZWFkeSBib3VuZCB0byBp
dC4uIG9rICovCi0JCQlyZXR1cm47Ci0JCX0gZWxzZSBpZiAobGVwID09IE5VTEwpIHsKLQkJCSgo
c3RydWN0IHNvY2thZGRyX2luICopYWRkcl90b3VzZSktPnNpbl9wb3J0ID0gMDsKLQkJCSplcnJv
ciA9IHNjdHBfYWRkcl9tZ210X2VwX3NhKGlucCwgYWRkcl90b3VzZSwKLQkJCQkJCSAgICAgIFND
VFBfQUREX0lQX0FERFJFU1MsCi0JCQkJCQkgICAgICB2cmZfaWQsIE5VTEwpOwotCQl9IGVsc2Ug
eworCQkqZXJyb3IgPSBzY3RwX2FkZHJfbWdtdF9lcF9zYShpbnAsIGFkZHJfdG9fdXNlLAorCQkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTQ1RQX0FERF9JUF9BRERSRVNTLCB2cmZfaWQp
OworCX0gZWxzZSB7CisJCWlmIChsZXAgIT0gaW5wKSB7CiAJCQkqZXJyb3IgPSBFQUREUklOVVNF
OwogCQl9Ci0JCWlmICgqZXJyb3IpCi0JCQlyZXR1cm47Ci0JfSBlbHNlIHsKLQkJLyoKLQkJICog
RklYOiBkZWNpZGUgd2hldGhlciB3ZSBhbGxvdyBhc3NvYyBiYXNlZAotCQkgKiBiaW5keAotCQkg
Ki8KKwkJU0NUUF9JTlBfREVDUl9SRUYobGVwKTsKIAl9CiB9CiAKQEAgLTczNDYsMTUgKzc3MzYs
MTUgQEAgc2N0cF9iaW5keF9hZGRfYWRkcmVzcyhzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNj
dHBfaW5wY2IgKmlucCwKICAqLwogdm9pZAogc2N0cF9iaW5keF9kZWxldGVfYWRkcmVzcyhzdHJ1
Y3Qgc2N0cF9pbnBjYiAqaW5wLAotCQkJICBzdHJ1Y3Qgc29ja2FkZHIgKnNhLCBzY3RwX2Fzc29j
X3QgYXNzb2NfaWQsCi0JCQkgIHVpbnQzMl90IHZyZl9pZCwgaW50ICplcnJvcikKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyICpzYSwgdWludDMyX3QgdnJmX2lkLCBp
bnQgKmVycm9yKQogewotCXN0cnVjdCBzb2NrYWRkciAqYWRkcl90b3VzZTsKKwlzdHJ1Y3Qgc29j
a2FkZHIgKmFkZHJfdG9fdXNlOwogI2lmIGRlZmluZWQoSU5FVCkgJiYgZGVmaW5lZChJTkVUNikK
KwlzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW42OwogCXN0cnVjdCBzb2NrYWRkcl9pbiBzaW47CiAj
ZW5kaWYKICNpZmRlZiBTQ1RQX01WUkYKLQlpbnQgaSwgZm5kID0gMDsKKwlpbnQgaTsKICNlbmRp
ZgogCiAJLyogc2VlIGlmIHdlJ3JlIGJvdW5kIGFsbCBhbHJlYWR5ISAqLwpAQCAtNzM2NywyMyAr
Nzc1NywxOCBAQCBzY3RwX2JpbmR4X2RlbGV0ZV9hZGRyZXNzKHN0cnVjdCBzY3RwX2lucGNiICpp
bnAsCiAJLyogSXMgdGhlIFZSRiBvbmUgd2UgaGF2ZSAqLwogCWZvciAoaSA9IDA7IGkgPCBpbnAt
Pm51bV92cmZzOyBpKyspIHsKIAkJaWYgKHZyZl9pZCA9PSBpbnAtPm1fdnJmX2lkc1tpXSkgewot
CQkJZm5kID0gMTsKIAkJCWJyZWFrOwogCQl9CiAJfQotCWlmICghZm5kKSB7CisJaWYgKGkgPT0g
aW5wLT5udW1fdnJmcykgewogCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwg
U0NUUF9GUk9NX1NDVFBVVElMLCBFSU5WQUwpOwogCQkqZXJyb3IgPSBFSU5WQUw7CiAJCXJldHVy
bjsKIAl9CiAjZW5kaWYKLQlhZGRyX3RvdXNlID0gc2E7CisJc3dpdGNoIChzYS0+c2FfZmFtaWx5
KSB7CiAjaWZkZWYgSU5FVDYKLQlpZiAoc2EtPnNhX2ZhbWlseSA9PSBBRl9JTkVUNikgewotI2lm
ZGVmIElORVQKLQkJc3RydWN0IHNvY2thZGRyX2luNiAqc2luNjsKLSNlbmRpZgotCisJY2FzZSBB
Rl9JTkVUNjoKICNpZmRlZiBIQVZFX1NBX0xFTgogCQlpZiAoc2EtPnNhX2xlbiAhPSBzaXplb2Yo
c3RydWN0IHNvY2thZGRyX2luNikpIHsKIAkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxM
LCBOVUxMLCBTQ1RQX0ZST01fU0NUUFVUSUwsIEVJTlZBTCk7CkBAIC03Mzk4LDcgKzc3ODMsNyBA
QCBzY3RwX2JpbmR4X2RlbGV0ZV9hZGRyZXNzKHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCQly
ZXR1cm47CiAJCX0KICNpZmRlZiBJTkVUCi0JCXNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAq
KWFkZHJfdG91c2U7CisJCXNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKXNhOwogCQlpZiAo
SU42X0lTX0FERFJfVjRNQVBQRUQoJnNpbjYtPnNpbjZfYWRkcikpIHsKIAkJCWlmICgoaW5wLT5z
Y3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfQk9VTkRfVjYpICYmCiAJCQkgICAgU0NUUF9JUFY2
X1Y2T05MWShpbnApKSB7CkBAIC03NDA4LDEzICs3NzkzLDE3IEBAIHNjdHBfYmluZHhfZGVsZXRl
X2FkZHJlc3Moc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJCQlyZXR1cm47CiAJCQl9CiAJCQlp
bjZfc2luNl8yX3Npbigmc2luLCBzaW42KTsKLQkJCWFkZHJfdG91c2UgPSAoc3RydWN0IHNvY2th
ZGRyICopJnNpbjsKKwkJCWFkZHJfdG9fdXNlID0gKHN0cnVjdCBzb2NrYWRkciAqKSZzaW47CisJ
CX0gZWxzZSB7CisJCQlhZGRyX3RvX3VzZSA9IHNhOwogCQl9CisjZWxzZQorCQlhZGRyX3RvX3Vz
ZSA9IHNhOwogI2VuZGlmCi0JfQorCQlicmVhazsKICNlbmRpZgogI2lmZGVmIElORVQKLQlpZiAo
c2EtPnNhX2ZhbWlseSA9PSBBRl9JTkVUKSB7CisJY2FzZSBBRl9JTkVUOgogI2lmZGVmIEhBVkVf
U0FfTEVOCiAJCWlmIChzYS0+c2FfbGVuICE9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKSB7
CiAJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBV
VElMLCBFSU5WQUwpOwpAQCAtNzQyOSwyNCArNzgxOCwxNyBAQCBzY3RwX2JpbmR4X2RlbGV0ZV9h
ZGRyZXNzKHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCQkqZXJyb3IgPSBFSU5WQUw7CiAJCQly
ZXR1cm47CiAJCX0KLQl9CisJCWFkZHJfdG9fdXNlID0gc2E7CisJCWJyZWFrOwogI2VuZGlmCi0J
LyoKLQkgKiBObyBsb2NrIHJlcXVpcmVkIG1nbXRfZXBfc2EgZG9lcyBpdHMgb3duIGxvY2tpbmcu
Ci0JICogSWYgdGhlIEZJWDogYmVsb3cgaXMgZXZlciBjaGFuZ2VkIHdlIG1heSBuZWVkIHRvCi0J
ICogbG9jayBiZWZvcmUgY2FsbGluZyBhc3NvY2lhdGlvbiBsZXZlbCBiaW5kaW5nLgotCSAqLwot
CWlmIChhc3NvY19pZCA9PSAwKSB7Ci0JCS8qIGRlbGV0ZSB0aGUgYWRkcmVzcyAqLwotCQkqZXJy
b3IgPSBzY3RwX2FkZHJfbWdtdF9lcF9zYShpbnAsIGFkZHJfdG91c2UsCi0JCQkJCSAgICAgIFND
VFBfREVMX0lQX0FERFJFU1MsCi0JCQkJCSAgICAgIHZyZl9pZCwgTlVMTCk7Ci0JfSBlbHNlIHsK
LQkJLyoKLQkJICogRklYOiBkZWNpZGUgd2hldGhlciB3ZSBhbGxvdyBhc3NvYyBiYXNlZAotCQkg
KiBiaW5keAotCQkgKi8KKwlkZWZhdWx0OgorCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVM
TCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBVVElMLCBFSU5WQUwpOworCQkqZXJyb3IgPSBFSU5WQUw7
CisJCXJldHVybjsKIAl9CisJLyogTm8gbG9jayByZXF1aXJlZCBtZ210X2VwX3NhIGRvZXMgaXRz
IG93biBsb2NraW5nLiAqLworCSplcnJvciA9IHNjdHBfYWRkcl9tZ210X2VwX3NhKGlucCwgYWRk
cl90b191c2UsIFNDVFBfREVMX0lQX0FERFJFU1MsCisJICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdnJmX2lkKTsKIH0KIAogLyoKQEAgLTc0NjAsNyArNzg0Miw3IEBAIHNjdHBfbG9jYWxf
YWRkcl9jb3VudChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IpCiAjaWYgZGVmaW5lZChJTkVUKQogCWlu
dCBpcHY0X2xvY2FsX3Njb3BlLCBpcHY0X2FkZHJfbGVnYWw7CiAjZW5kaWYKLSNpZiBkZWZpbmVk
IChJTkVUNikKKyNpZiBkZWZpbmVkKElORVQ2KQogCWludCBsb2NhbF9zY29wZSwgc2l0ZV9zY29w
ZSwgaXB2Nl9hZGRyX2xlZ2FsOwogI2VuZGlmCiAjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQpA
QCAtNzUxNiw3ICs3ODk4LDcgQEAgc2N0cF9sb2NhbF9hZGRyX2NvdW50KHN0cnVjdCBzY3RwX3Rj
YiAqc3RjYikKIAkJCQkJCQkvKiBza2lwIHVuc3BlY2lmaWVkIGFkZHJzICovCiAJCQkJCQkJY29u
dGludWU7CiAJCQkJCQl9Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCQkJaWYgKHByaXNvbl9j
aGVja19pcDQoc3RjYi0+c2N0cF9lcC0+aXBfaW5wLmlucC5pbnBfY3JlZCwKIAkJCQkJCSAgICAg
ICAgICAgICAgICAgICAgICZzaW4tPnNpbl9hZGRyKSAhPSAwKSB7CiAJCQkJCQkJY29udGludWU7
CkBAIC03NTQ1LDcgKzc5MjcsNyBAQCBzY3RwX2xvY2FsX2FkZHJfY291bnQoc3RydWN0IHNjdHBf
dGNiICpzdGNiKQogCQkJCQkJaWYgKElONl9JU19BRERSX1VOU1BFQ0lGSUVEKCZzaW42LT5zaW42
X2FkZHIpKSB7CiAJCQkJCQkJY29udGludWU7CiAJCQkJCQl9Ci0jaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCQkJCQkJaWYgKHByaXNvbl9jaGVja19pcDYoc3RjYi0+c2N0cF9lcC0+aXBfaW5wLmlucC5p
bnBfY3JlZCwKIAkJCQkJCSAgICAgICAgICAgICAgICAgICAgICZzaW42LT5zaW42X2FkZHIpICE9
IDApIHsKIAkJCQkJCQljb250aW51ZTsKQEAgLTc2MjcsNyArODAwOSw3IEBAIHNjdHBfbG9nX3Ry
YWNlKHVpbnQzMl90IHN1YnN5cywgY29uc3QgY2hhciAqc3RyIFNDVFBfVU5VU0VELCB1aW50MzJf
dCBhLCB1aW50MzJfCiB7CiAJdWludDMyX3Qgc2F2ZWluZGV4LCBuZXdpbmRleDsKIAotI2lmIGRl
ZmluZWQoX19XaW5kb3dzX18pCisjaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAJaWYgKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9sb2cpID09IE5VTEwpIHsKIAkJ
cmV0dXJuOwogCX0KQEAgLTc2NzQsOCArODA1Niw3IEBAIHNjdHBfbG9nX3RyYWNlKHVpbnQzMl90
IHN1YnN5cywgY29uc3QgY2hhciAqc3RyIFNDVFBfVU5VU0VELCB1aW50MzJfdCBhLCB1aW50MzJf
CiB9CiAKICNlbmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCi0jaWYgX19GcmVlQlNEX3Zl
cnNpb24gPj0gODAwMDQ0CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKIHN0YXRpYyB2b2lkCiBzY3RwX3JlY3ZfdWRwX3R1bm5lbGVkX3BhY2tldChz
dHJ1Y3QgbWJ1ZiAqbSwgaW50IG9mZiwgc3RydWN0IGlucGNiICppbnAsCiAgICAgY29uc3Qgc3Ry
dWN0IHNvY2thZGRyICpzYSBTQ1RQX1VOVVNFRCwgdm9pZCAqY3R4IFNDVFBfVU5VU0VEKQpAQCAt
NzcyOSwyOSArODExMCwxNyBAQCBzY3RwX3JlY3ZfdWRwX3R1bm5lbGVkX3BhY2tldChzdHJ1Y3Qg
bWJ1ZiAqbSwgaW50IG9mZiwgc3RydWN0IGlucGNiICppbnAsCiAJICogU2luY2UgQ1NVTV9EQVRB
X1ZBTElEID09IENTVU1fU0NUUF9WQUxJRCB0aGlzIHdvdWxkIGltcGx5IHRoYXQKIAkgKiB0aGUg
SFcgYWxzbyB2ZXJpZmllZCB0aGUgU0NUUCBjaGVja3N1bS4gVGhlcmVmb3JlLCBjbGVhciB0aGUg
Yml0LgogCSAqLwotI2lmIF9fRnJlZUJTRF92ZXJzaW9uID4gMTAwMDA0OQogCVNDVFBEQkcoU0NU
UF9ERUJVR19DUkNPRkZMT0FELAogCSAgICAgICAgInNjdHBfcmVjdl91ZHBfdHVubmVsZWRfcGFj
a2V0KCk6IFBhY2tldCBvZiBsZW5ndGggJWQgcmVjZWl2ZWQgb24gJXMgd2l0aCBjc3VtX2ZsYWdz
IDB4JWIuXG4iLAogCSAgICAgICAgbS0+bV9wa3RoZHIubGVuLAogCSAgICAgICAgaWZfbmFtZSht
LT5tX3BrdGhkci5yY3ZpZiksCiAJICAgICAgICAoaW50KW0tPm1fcGt0aGRyLmNzdW1fZmxhZ3Ms
IENTVU1fQklUUyk7Ci0jZWxzZQotCVNDVFBEQkcoU0NUUF9ERUJVR19DUkNPRkZMT0FELAotCSAg
ICAgICAgInNjdHBfcmVjdl91ZHBfdHVubmVsZWRfcGFja2V0KCk6IFBhY2tldCBvZiBsZW5ndGgg
JWQgcmVjZWl2ZWQgb24gJXMgd2l0aCBjc3VtX2ZsYWdzIDB4JXguXG4iLAotCSAgICAgICAgbS0+
bV9wa3RoZHIubGVuLAotCSAgICAgICAgaWZfbmFtZShtLT5tX3BrdGhkci5yY3ZpZiksCi0JICAg
ICAgICBtLT5tX3BrdGhkci5jc3VtX2ZsYWdzKTsKLSNlbmRpZgogCW0tPm1fcGt0aGRyLmNzdW1f
ZmxhZ3MgJj0gfkNTVU1fREFUQV9WQUxJRDsKIAlpcGggPSBtdG9kKG0sIHN0cnVjdCBpcCAqKTsK
IAlzd2l0Y2ggKGlwaC0+aXBfdikgewogI2lmZGVmIElORVQKIAljYXNlIElQVkVSU0lPTjoKLSNp
ZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSAxMDAwMDAwCiAJCWlwaC0+aXBfbGVuID0gaHRvbnMobnRv
aHMoaXBoLT5pcF9sZW4pIC0gc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpKTsKLSNlbHNlCi0JCWlwaC0+
aXBfbGVuIC09IHNpemVvZihzdHJ1Y3QgdWRwaGRyKTsKLSNlbmRpZgogCQlzY3RwX2lucHV0X3dp
dGhfcG9ydChtLCBvZmYsIHBvcnQpOwogCQlicmVhazsKICNlbmRpZgpAQCAtNzc3MCw5ICs4MTM5
LDcgQEAgc2N0cF9yZWN2X3VkcF90dW5uZWxlZF9wYWNrZXQoc3RydWN0IG1idWYgKm0sIGludCBv
ZmYsIHN0cnVjdCBpbnBjYiAqaW5wLAogIG91dDoKIAltX2ZyZWVtKG0pOwogfQotI2VuZGlmCiAK
LSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSAxMTAwMDAwCiAjaWZkZWYgSU5FVAogc3RhdGljIHZv
aWQKIHNjdHBfcmVjdl9pY21wX3R1bm5lbGVkX3BhY2tldChpbnQgY21kLCBzdHJ1Y3Qgc29ja2Fk
ZHIgKnNhLCB2b2lkICp2aXAsIHZvaWQgKmN0eCBTQ1RQX1VOVVNFRCkKQEAgLTc4NzMsMTcgKzgy
NDAsMjUgQEAgc2N0cF9yZWN2X2ljbXBfdHVubmVsZWRfcGFja2V0KGludCBjbWQsIHN0cnVjdCBz
b2NrYWRkciAqc2EsIHZvaWQgKnZpcCwgdm9pZCAqY3QKIAkJc2N0cF9ub3RpZnkoaW5wLCBzdGNi
LCBuZXQsIHR5cGUsIGNvZGUsCiAJCSAgICAgICAgICAgIG50b2hzKGlubmVyX2lwLT5pcF9sZW4p
LAogCQkgICAgICAgICAgICAodWludDMyX3QpbnRvaHMoaWNtcC0+aWNtcF9uZXh0bXR1KSk7Ci0J
fSBlbHNlIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA8
IDUwMDAwMAotCQkvKgotCQkgKiBYWFggbXVzdCBiZSBmaXhlZCBmb3IgNS54IGFuZCBoaWdoZXIs
IGxlYXZlIGZvcgotCQkgKiA0LngKLQkJICovCi0JCWlmIChQUkNfSVNfUkVESVJFQ1QoY21kKSAm
JiAoaW5wICE9IE5VTEwpKSB7Ci0JCQlpbl9ydGNoYW5nZSgoc3RydWN0IGlucGNiICopaW5wLAot
CQkJICAgIGluZXRjdGxlcnJtYXBbY21kXSk7CisjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQor
CQlpZiAoIShzdGNiLT5zY3RwX2VwLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfU09DS0VU
X0dPTkUpICYmCisJCSAgICAoc3RjYi0+c2N0cF9zb2NrZXQgIT0gTlVMTCkpIHsKKwkJCXN0cnVj
dCBzb2NrZXQgKnVwY2FsbF9zb2NrZXQ7CisKKwkJCXVwY2FsbF9zb2NrZXQgPSBzdGNiLT5zY3Rw
X3NvY2tldDsKKwkJCVNPQ0tfTE9DSyh1cGNhbGxfc29ja2V0KTsKKwkJCXNvcmVmKHVwY2FsbF9z
b2NrZXQpOworCQkJU09DS19VTkxPQ0sodXBjYWxsX3NvY2tldCk7CisJCQlpZiAoKHVwY2FsbF9z
b2NrZXQtPnNvX3VwY2FsbCAhPSBOVUxMKSAmJgorCQkJICAgICh1cGNhbGxfc29ja2V0LT5zb19l
cnJvciAhPSAwKSkgeworCQkJCSgqdXBjYWxsX3NvY2tldC0+c29fdXBjYWxsKSh1cGNhbGxfc29j
a2V0LCB1cGNhbGxfc29ja2V0LT5zb191cGNhbGxhcmcsIE1fTk9XQUlUKTsKKwkJCX0KKwkJCUFD
Q0VQVF9MT0NLKCk7CisJCQlTT0NLX0xPQ0sodXBjYWxsX3NvY2tldCk7CisJCQlzb3JlbGUodXBj
YWxsX3NvY2tldCk7CiAJCX0KICNlbmRpZgorCX0gZWxzZSB7CiAJCWlmICgoc3RjYiA9PSBOVUxM
KSAmJiAoaW5wICE9IE5VTEwpKSB7CiAJCQkvKiByZWR1Y2UgcmVmLWNvdW50ICovCiAJCQlTQ1RQ
X0lOUF9XTE9DSyhpbnApOwpAQCAtNzk0NSw3ICs4MzIwLDcgQEAgc2N0cF9yZWN2X2ljbXA2X3R1
bm5lbGVkX3BhY2tldChpbnQgY21kLCBzdHJ1Y3Qgc29ja2FkZHIgKnNhLCB2b2lkICpkLCB2b2lk
ICpjdHgKICNlbmRpZgogCXNyYy5zaW42X3BvcnQgPSBzaC5zcmNfcG9ydDsKIAlzcmMuc2luNl9h
ZGRyID0gaXA2Y3AtPmlwNmNfaXA2LT5pcDZfc3JjOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlp
ZiAoaW42X3NldHNjb3BlKCZzcmMuc2luNl9hZGRyLCBpcDZjcC0+aXA2Y19tLT5tX3BrdGhkci5y
Y3ZpZiwgTlVMTCkgIT0gMCkgewogCQlyZXR1cm47CiAJfQpAQCAtNzk1Nyw3ICs4MzMyLDcgQEAg
c2N0cF9yZWN2X2ljbXA2X3R1bm5lbGVkX3BhY2tldChpbnQgY21kLCBzdHJ1Y3Qgc29ja2FkZHIg
KnNhLCB2b2lkICpkLCB2b2lkICpjdHgKICNlbmRpZgogCWRzdC5zaW42X3BvcnQgPSBzaC5kZXN0
X3BvcnQ7CiAJZHN0LnNpbjZfYWRkciA9IGlwNmNwLT5pcDZjX2lwNi0+aXA2X2RzdDsKLSNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiAJaWYgKGluNl9zZXRzY29wZSgmZHN0LnNpbjZfYWRkciwgaXA2Y3At
PmlwNmNfbS0+bV9wa3RoZHIucmN2aWYsIE5VTEwpICE9IDApIHsKIAkJcmV0dXJuOwogCX0KQEAg
LTc5ODgsNyArODM2Myw3IEBAIHNjdHBfcmVjdl9pY21wNl90dW5uZWxlZF9wYWNrZXQoaW50IGNt
ZCwgc3RydWN0IHNvY2thZGRyICpzYSwgdm9pZCAqZCwgdm9pZCAqY3R4CiAJCQkJcmV0dXJuOwog
CQkJfQogCQl9IGVsc2UgewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCWlmIChpcDZjcC0+aXA2
Y19tLT5tX3BrdGhkci5sZW4gPj0KIAkJCSAgICBpcDZjcC0+aXA2Y19vZmYgKyBzaXplb2Yoc3Ry
dWN0IHVkcGhkcikgKwogCQkJICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3Qgc2N0
cGhkcikgKwpAQCAtODAzOCwxMyArODQxMywyNSBAQCBzY3RwX3JlY3ZfaWNtcDZfdHVubmVsZWRf
cGFja2V0KGludCBjbWQsIHN0cnVjdCBzb2NrYWRkciAqc2EsIHZvaWQgKmQsIHZvaWQgKmN0eAog
CQl9CiAJCXNjdHA2X25vdGlmeShpbnAsIHN0Y2IsIG5ldCwgdHlwZSwgY29kZSwKIAkJCSAgICAg
bnRvaGwoaXA2Y3AtPmlwNmNfaWNtcDYtPmljbXA2X210dSkpOwotCX0gZWxzZSB7Ci0jaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPCA1MDAwMDAKLQkJaWYgKFBS
Q19JU19SRURJUkVDVChjbWQpICYmIChpbnAgIT0gTlVMTCkpIHsKLQkJCWluNl9ydGNoYW5nZSgo
c3RydWN0IGluNnBjYiAqKWlucCwKLQkJCSAgICBpbmV0NmN0bGVycm1hcFtjbWRdKTsKKyNpZiBk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCWlmICghKHN0Y2ItPnNjdHBfZXAtPnNjdHBfZmxhZ3Mg
JiBTQ1RQX1BDQl9GTEFHU19TT0NLRVRfR09ORSkgJiYKKwkJICAgIChzdGNiLT5zY3RwX3NvY2tl
dCAhPSBOVUxMKSkgeworCQkJc3RydWN0IHNvY2tldCAqdXBjYWxsX3NvY2tldDsKKworCQkJdXBj
YWxsX3NvY2tldCA9IHN0Y2ItPnNjdHBfc29ja2V0OworCQkJU09DS19MT0NLKHVwY2FsbF9zb2Nr
ZXQpOworCQkJc29yZWYodXBjYWxsX3NvY2tldCk7CisJCQlTT0NLX1VOTE9DSyh1cGNhbGxfc29j
a2V0KTsKKwkJCWlmICgodXBjYWxsX3NvY2tldC0+c29fdXBjYWxsICE9IE5VTEwpICYmCisJCQkg
ICAgKHVwY2FsbF9zb2NrZXQtPnNvX2Vycm9yICE9IDApKSB7CisJCQkJKCp1cGNhbGxfc29ja2V0
LT5zb191cGNhbGwpKHVwY2FsbF9zb2NrZXQsIHVwY2FsbF9zb2NrZXQtPnNvX3VwY2FsbGFyZywg
TV9OT1dBSVQpOworCQkJfQorCQkJQUNDRVBUX0xPQ0soKTsKKwkJCVNPQ0tfTE9DSyh1cGNhbGxf
c29ja2V0KTsKKwkJCXNvcmVsZSh1cGNhbGxfc29ja2V0KTsKIAkJfQogI2VuZGlmCisJfSBlbHNl
IHsKIAkJaWYgKChzdGNiID09IE5VTEwpICYmIChpbnAgIT0gTlVMTCkpIHsKIAkJCS8qIHJlZHVj
ZSBpbnAncyByZWYtY291bnQgKi8KIAkJCVNDVFBfSU5QX1dMT0NLKGlucCk7CkBAIC04MDU3LDcg
Kzg0NDQsNiBAQCBzY3RwX3JlY3ZfaWNtcDZfdHVubmVsZWRfcGFja2V0KGludCBjbWQsIHN0cnVj
dCBzb2NrYWRkciAqc2EsIHZvaWQgKmQsIHZvaWQgKmN0eAogCX0KIH0KICNlbmRpZgotI2VuZGlm
CiAKIHZvaWQKIHNjdHBfb3Zlcl91ZHBfc3RvcCh2b2lkKQpAQCAtODA4Miw3ICs4NDY4LDYgQEAg
c2N0cF9vdmVyX3VkcF9zdG9wKHZvaWQpCiBpbnQKIHNjdHBfb3Zlcl91ZHBfc3RhcnQodm9pZCkK
IHsKLSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDAwNDQKIAl1aW50MTZfdCBwb3J0OwogCWlu
dCByZXQ7CiAjaWZkZWYgSU5FVApAQCAtODEyMSw5ICs4NTA2LDcgQEAgc2N0cF9vdmVyX3VkcF9z
dGFydCh2b2lkKQogCS8qIENhbGwgdGhlIHNwZWNpYWwgVURQIGhvb2suICovCiAJaWYgKChyZXQg
PSB1ZHBfc2V0X2tlcm5lbF90dW5uZWxpbmcoU0NUUF9CQVNFX0lORk8odWRwNF90dW5fc29ja2V0
KSwKIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3RwX3JlY3ZfdWRwX3R1
bm5lbGVkX3BhY2tldCwKLSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSAxMTAwMDAwCiAJICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2N0cF9yZWN2X2ljbXBfdHVubmVsZWRfcGFj
a2V0LAotI2VuZGlmCiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCkp
KSB7CiAJCXNjdHBfb3Zlcl91ZHBfc3RvcCgpOwogCQlyZXR1cm4gKHJldCk7CkBAIC04MTQ5LDkg
Kzg1MzIsNyBAQCBzY3RwX292ZXJfdWRwX3N0YXJ0KHZvaWQpCiAJLyogQ2FsbCB0aGUgc3BlY2lh
bCBVRFAgaG9vay4gKi8KIAlpZiAoKHJldCA9IHVkcF9zZXRfa2VybmVsX3R1bm5lbGluZyhTQ1RQ
X0JBU0VfSU5GTyh1ZHA2X3R1bl9zb2NrZXQpLAogCSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNjdHBfcmVjdl91ZHBfdHVubmVsZWRfcGFja2V0LAotI2lmIF9fRnJlZUJTRF92
ZXJzaW9uID49IDExMDAwMDAKIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
Y3RwX3JlY3ZfaWNtcDZfdHVubmVsZWRfcGFja2V0LAotI2VuZGlmCiAJICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTlVMTCkpKSB7CiAJCXNjdHBfb3Zlcl91ZHBfc3RvcCgpOwog
CQlyZXR1cm4gKHJldCk7CkBAIC04MTY4LDkgKzg1NDksNiBAQCBzY3RwX292ZXJfdWRwX3N0YXJ0
KHZvaWQpCiAJfQogI2VuZGlmCiAJcmV0dXJuICgwKTsKLSNlbHNlCi0JcmV0dXJuIChFTk9UU1VQ
KTsKLSNlbmRpZgogfQogI2VuZGlmCiAKQEAgLTgyMDgsNyArODU4Niw3IEBAIHNjdHBfbWluX210
dSh1aW50MzJfdCBtdHUxLCB1aW50MzJfdCBtdHUyLCB1aW50MzJfdCBtdHUzKQogCX0KIH0KIAot
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKIHZvaWQKIHNjdHBfaGNfc2V0X210dSh1bmlvbiBzY3RwX3Nv
Y2tzdG9yZSAqYWRkciwgdWludDE2X3QgZmlibnVtLCB1aW50MzJfdCBtdHUpCiB7CkBAIC04MjU5
LDMgKzg2MzcsNTAgQEAgc2N0cF9oY19nZXRfbXR1KHVuaW9uIHNjdHBfc29ja3N0b3JlICphZGRy
LCB1aW50MTZfdCBmaWJudW0pCiAJcmV0dXJuICgodWludDMyX3QpdGNwX2hjX2dldG10dSgmaW5j
KSk7CiB9CiAjZW5kaWYKKwordm9pZAorc2N0cF9zZXRfc3RhdGUoc3RydWN0IHNjdHBfdGNiICpz
dGNiLCBpbnQgbmV3X3N0YXRlKQoreworI2lmIGRlZmluZWQoS0RUUkFDRV9IT09LUykKKwlpbnQg
b2xkX3N0YXRlID0gc3RjYi0+YXNvYy5zdGF0ZTsKKyNlbmRpZgorCisJS0FTU0VSVCgobmV3X3N0
YXRlICYgflNDVFBfU1RBVEVfTUFTSykgPT0gMCwKKwkgICAgICAgICgic2N0cF9zZXRfc3RhdGU6
IENhbid0IHNldCBzdWJzdGF0ZSAobmV3X3N0YXRlID0gJXgpIiwKKwkgICAgICAgIG5ld19zdGF0
ZSkpOworCXN0Y2ItPmFzb2Muc3RhdGUgPSAoc3RjYi0+YXNvYy5zdGF0ZSAmIH5TQ1RQX1NUQVRF
X01BU0spIHwgbmV3X3N0YXRlOworCWlmICgobmV3X3N0YXRlID09IFNDVFBfU1RBVEVfU0hVVERP
V05fUkVDRUlWRUQpIHx8CisJICAgIChuZXdfc3RhdGUgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9T
RU5UKSB8fAorCSAgICAobmV3X3N0YXRlID09IFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQp
KSB7CisJCVNDVFBfQ0xFQVJfU1VCU1RBVEUoc3RjYiwgU0NUUF9TVEFURV9TSFVURE9XTl9QRU5E
SU5HKTsKKwl9CisjaWYgZGVmaW5lZChLRFRSQUNFX0hPT0tTKQorCWlmICgoKG9sZF9zdGF0ZSAm
IFNDVFBfU1RBVEVfTUFTSykgIT0gbmV3X3N0YXRlKSAmJgorCSAgICAhKCgob2xkX3N0YXRlICYg
U0NUUF9TVEFURV9NQVNLKSA9PSBTQ1RQX1NUQVRFX0VNUFRZKSAmJgorCSAgICAgIChuZXdfc3Rh
dGUgPT0gU0NUUF9TVEFURV9JTlVTRSkpKSB7CisJCVNDVFBfUFJPQkU2KHN0YXRlX19jaGFuZ2Us
IE5VTEwsIHN0Y2IsIE5VTEwsIHN0Y2IsIE5VTEwsIG9sZF9zdGF0ZSk7CisJfQorI2VuZGlmCit9
CisKK3ZvaWQKK3NjdHBfYWRkX3N1YnN0YXRlKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgaW50IHN1
YnN0YXRlKQoreworI2lmIGRlZmluZWQoS0RUUkFDRV9IT09LUykKKwlpbnQgb2xkX3N0YXRlID0g
c3RjYi0+YXNvYy5zdGF0ZTsKKyNlbmRpZgorCisJS0FTU0VSVCgoc3Vic3RhdGUgJiBTQ1RQX1NU
QVRFX01BU0spID09IDAsCisJICAgICAgICAoInNjdHBfYWRkX3N1YnN0YXRlOiBDYW4ndCBzZXQg
c3RhdGUgKHN1YnN0YXRlID0gJXgpIiwKKwkgICAgICAgIHN1YnN0YXRlKSk7CisJc3RjYi0+YXNv
Yy5zdGF0ZSB8PSBzdWJzdGF0ZTsKKyNpZiBkZWZpbmVkKEtEVFJBQ0VfSE9PS1MpCisJaWYgKCgo
c3Vic3RhdGUgJiBTQ1RQX1NUQVRFX0FCT1VUX1RPX0JFX0ZSRUVEKSAmJgorCSAgICAgKChvbGRf
c3RhdGUgJiBTQ1RQX1NUQVRFX0FCT1VUX1RPX0JFX0ZSRUVEKSA9PSAwKSkgfHwKKwkgICAgKChz
dWJzdGF0ZSAmIFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORykgJiYKKwkgICAgICgob2xkX3N0
YXRlICYgU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HKSA9PSAwKSkpIHsKKwkJU0NUUF9QUk9C
RTYoc3RhdGVfX2NoYW5nZSwgTlVMTCwgc3RjYiwgTlVMTCwgc3RjYiwgTlVMTCwgb2xkX3N0YXRl
KTsKKwl9CisjZW5kaWYKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRp
bmV0L3NjdHB1dGlsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cHV0aWwuaApv
bGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDY5ZmU0ODQ5ODFjMWM0ZmUwZWVm
NDI5NTA4MDUyYTM3Y2NhYWYyZDQuLjc2NDYxNjk1MDU1ZTUyZjQ5YjQxNjhmMzJlMTI2N2IyMTEx
NjU2MGEKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHB1dGlsLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3Vz
cnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHB1dGlsLmgKQEAgLTMyLDkgKzMyLDkgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZkZWYgX19GcmVl
QlNEX18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9u
ZXRpbmV0L3NjdHB1dGlsLmggMzI0NjE1IDIwMTctMTAtMTQgMTA6MDI6NTlaIHR1ZXhlbiAkIik7
CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cHV0aWwuaCAzNjQyNjgg
MjAyMC0wOC0xNiAxMTo1MDozN1ogdHVleGVuICQiKTsKICNlbmRpZgogCiAjaWZuZGVmIF9ORVRJ
TkVUX1NDVFBfVVRJTF9IXwpAQCAtNTcsNyArNTcsNyBAQCB2b2lkIHNjdHBfbV9mcmVlbShzdHJ1
Y3QgbWJ1ZiAqbSk7CiAjZGVmaW5lIHNjdHBfbV9mcmVlbSBtX2ZyZWVtCiAjZW5kaWYKIAotI2lm
IGRlZmluZWQoU0NUUF9MT0NBTF9UUkFDRV9CVUYpIHx8IGRlZmluZWQoX19BUFBMRV9fKQorI2lm
IGRlZmluZWQoU0NUUF9MT0NBTF9UUkFDRV9CVUYpCiB2b2lkCiBzY3RwX2xvZ190cmFjZSh1aW50
MzJfdCBmciwgY29uc3QgY2hhciAqc3RyIFNDVFBfVU5VU0VELCB1aW50MzJfdCBhLCB1aW50MzJf
dCBiLCB1aW50MzJfdCBjLCB1aW50MzJfdCBkLCB1aW50MzJfdCBlLCB1aW50MzJfdCBmKTsKICNl
bmRpZgpAQCAtOTQsNiArOTQsMTQgQEAgc2N0cF9ub3RpZnlfc3RyZWFtX3Jlc2V0X2FkZChzdHJ1
Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQxNl90IG51bWJlcmluLAogdm9pZAogc2N0cF9ub3RpZnlf
c3RyZWFtX3Jlc2V0X3RzbihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQzMl90IHNlbmRpbmdf
dHNuLCB1aW50MzJfdCByZWN2X3RzbiwgaW50IGZsYWcpOwogCisvKgorICogTk9URTogc2N0cF90
aW1lcl9zdGFydCgpIHdpbGwgaW5jcmVtZW50IHRoZSByZWZlcmVuY2UgY291bnQgb2YgYW55IHJl
bGV2YW50CisgKiBzdHJ1Y3R1cmUgdGhlIHRpbWVyIGlzIHJlZmVyZW5jaW5nLCBpbiBvcmRlciB0
byBwcmV2ZW50IGEgcmFjZSBjb25kaXRpb24KKyAqIGJldHdlZW4gdGhlIHRpbWVyIGV4ZWN1dGlu
ZyBhbmQgdGhlIHN0cnVjdHVyZSBiZWluZyBmcmVlZC4KKyAqCisgKiBXaGVuIHRoZSB0aW1lciBm
aXJlcyBvciBzY3RwX3RpbWVyX3N0b3AoKSBpcyBjYWxsZWQsIHRoZXNlIHJlZmVyZW5jZXMgYXJl
CisgKiByZW1vdmVkLgorICovCiB2b2lkCiBzY3RwX3RpbWVyX3N0YXJ0KGludCwgc3RydWN0IHNj
dHBfaW5wY2IgKiwgc3RydWN0IHNjdHBfdGNiICosCiAgICAgc3RydWN0IHNjdHBfbmV0cyAqKTsK
QEAgLTExMSw3ICsxMTksNyBAQCBzY3RwX210dV9zaXplX3Jlc2V0KHN0cnVjdCBzY3RwX2lucGNi
ICosIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICosIHVpbnQzMl90KTsKIHZvaWQKIHNjdHBfd2Fr
ZXVwX3RoZV9yZWFkX3NvY2tldChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90
Y2IgKnN0Y2IsCiAgICAgaW50IHNvX2xvY2tlZAotI2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYg
IWRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgIShkZWZpbmVkKF9fQVBQTEVfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAgICAgU0NUUF9VTlVTRUQKICNlbmRpZgogKTsK
QEAgLTEzMCwxMSArMTM4LDcgQEAgc2N0cF9hZGRfdG9fcmVhZHEoc3RydWN0IHNjdHBfaW5wY2Ig
KmlucCwKICAgICBzdHJ1Y3Qgc29ja2J1ZiAqc2IsCiAgICAgaW50IGVuZCwKICAgICBpbnQgaW5w
cmVhZF9sb2NrZWQsCi0gICAgaW50IHNvX2xvY2tlZAotI2lmICFkZWZpbmVkKF9fQVBQTEVfXykg
JiYgIWRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCi0gICAgU0NUUF9VTlVTRUQKLSNlbmRp
ZgotICAgICk7CisgICAgaW50IHNvX2xvY2tlZCk7CiAKIHZvaWQgc2N0cF9pdGVyYXRvcl93b3Jr
ZXIodm9pZCk7CiAKQEAgLTE0NCw3ICsxNDgsNyBAQCB1aW50MzJfdCBzY3RwX2dldF9uZXh0X210
dSh1aW50MzJfdCk7CiB2b2lkCiBzY3RwX3RpbWVvdXRfaGFuZGxlcih2b2lkICopOwogCi11aW50
MzJfdAoraW50CiBzY3RwX2NhbGN1bGF0ZV9ydG8oc3RydWN0IHNjdHBfdGNiICosIHN0cnVjdCBz
Y3RwX2Fzc29jaWF0aW9uICosCiAgICAgc3RydWN0IHNjdHBfbmV0cyAqLCBzdHJ1Y3QgdGltZXZh
bCAqLCBpbnQpOwogCkBAIC0xNjIsMTEgKzE2Niw3IEBAIHNjdHBfYWRkX3BhZF90b21idWYoc3Ry
dWN0IG1idWYgKiwgaW50KTsKIHN0cnVjdCBtYnVmICoKIHNjdHBfcGFkX2xhc3RtYnVmKHN0cnVj
dCBtYnVmICosIGludCwgc3RydWN0IG1idWYgKik7CiAKLXZvaWQgc2N0cF91bHBfbm90aWZ5KHVp
bnQzMl90LCBzdHJ1Y3Qgc2N0cF90Y2IgKiwgdWludDMyX3QsIHZvaWQgKiwgaW50Ci0jaWYgIWRl
ZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKLSAgICBT
Q1RQX1VOVVNFRAotI2VuZGlmCi0gICAgKTsKK3ZvaWQgc2N0cF91bHBfbm90aWZ5KHVpbnQzMl90
LCBzdHJ1Y3Qgc2N0cF90Y2IgKiwgdWludDMyX3QsIHZvaWQgKiwgaW50KTsKIAogdm9pZAogc2N0
cF9wdWxsX29mZl9jb250cm9sX3RvX25ld19pbnAoc3RydWN0IHNjdHBfaW5wY2IgKm9sZF9pbnAs
CkBAIC0xNzYsMjcgKzE3NiwyMiBAQCBzY3RwX3B1bGxfb2ZmX2NvbnRyb2xfdG9fbmV3X2lucChz
dHJ1Y3Qgc2N0cF9pbnBjYiAqb2xkX2lucCwKIAogdm9pZCBzY3RwX3N0b3BfdGltZXJzX2Zvcl9z
aHV0ZG93bihzdHJ1Y3Qgc2N0cF90Y2IgKik7CiAKLXZvaWQgc2N0cF9yZXBvcnRfYWxsX291dGJv
dW5kKHN0cnVjdCBzY3RwX3RjYiAqLCB1aW50MTZfdCwgaW50LCBpbnQKLSNpZiAhZGVmaW5lZChf
X0FQUExFX18pICYmICFkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQotICAgIFNDVFBfVU5V
U0VECi0jZW5kaWYKLSAgICApOworLyogU3RvcCBhbGwgdGltZXJzIGZvciBhc3NvY2lhdGlvbiBh
bmQgcmVtb3RlIGFkZHJlc3Nlcy4gKi8KK3ZvaWQgc2N0cF9zdG9wX2Fzc29jaWF0aW9uX3RpbWVy
cyhzdHJ1Y3Qgc2N0cF90Y2IgKiwgYm9vbCk7CisKK3ZvaWQgc2N0cF9yZXBvcnRfYWxsX291dGJv
dW5kKHN0cnVjdCBzY3RwX3RjYiAqLCB1aW50MTZfdCwgaW50KTsKIAogaW50IHNjdHBfZXhwYW5k
X21hcHBpbmdfYXJyYXkoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKiwgdWludDMyX3QpOwogCiB2
b2lkIHNjdHBfYWJvcnRfbm90aWZpY2F0aW9uKHN0cnVjdCBzY3RwX3RjYiAqLCB1aW50OF90LCB1
aW50MTZfdCwKLQkJCSAgICAgc3RydWN0IHNjdHBfYWJvcnRfY2h1bmsgKiwgaW50Ci0jaWYgIWRl
ZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKLSAgICBT
Q1RQX1VOVVNFRAotI2VuZGlmCi0gICAgKTsKKwkJCSAgICAgc3RydWN0IHNjdHBfYWJvcnRfY2h1
bmsgKiwgaW50KTsKIAogLyogV2UgYWJvcnQgcmVzcG9uZGluZyB0byBhbiBJUCBwYWNrZXQgZm9y
IHNvbWUgcmVhc29uICovCiB2b2lkCiBzY3RwX2Fib3J0X2Fzc29jaWF0aW9uKHN0cnVjdCBzY3Rw
X2lucGNiICosIHN0cnVjdCBzY3RwX3RjYiAqLCBzdHJ1Y3QgbWJ1ZiAqLAogICAgICAgICAgICAg
ICAgICAgICAgICBpbnQsIHN0cnVjdCBzb2NrYWRkciAqLCBzdHJ1Y3Qgc29ja2FkZHIgKiwKICAg
ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNjdHBoZHIgKiwgc3RydWN0IG1idWYgKiwKLSNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QsIHVpbnQz
Ml90LAogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90LCB1aW50MTZfdCk7
CkBAIC0yMDUsMTcgKzIwMCwxMyBAQCBzY3RwX2Fib3J0X2Fzc29jaWF0aW9uKHN0cnVjdCBzY3Rw
X2lucGNiICosIHN0cnVjdCBzY3RwX3RjYiAqLCBzdHJ1Y3QgbWJ1ZiAqLAogLyogV2UgY2hvb3Nl
IHRvIGFib3J0IHZpYSB1c2VyIGlucHV0ICovCiB2b2lkCiBzY3RwX2Fib3J0X2FuX2Fzc29jaWF0
aW9uKHN0cnVjdCBzY3RwX2lucGNiICosIHN0cnVjdCBzY3RwX3RjYiAqLAotICAgIHN0cnVjdCBt
YnVmICosIGludAotI2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoU0NUUF9TT19M
T0NLX1RFU1RJTkcpCi0gICAgU0NUUF9VTlVTRUQKLSNlbmRpZgotKTsKKyAgICBzdHJ1Y3QgbWJ1
ZiAqLCBpbnQpOwogCiB2b2lkIHNjdHBfaGFuZGxlX29vdGIoc3RydWN0IG1idWYgKiwgaW50LCBp
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyICosIHN0cnVjdCBzb2Nr
YWRkciAqLAogICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY3RwaGRyICosIHN0cnVjdCBz
Y3RwX2lucGNiICosCiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG1idWYgKiwKLSNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCwgdWludDMyX3Qs
IHVpbnQxNl90LAogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QsIHVpbnQx
Nl90KTsKQEAgLTIyMywxMCArMjE0LDkgQEAgdm9pZCBzY3RwX2hhbmRsZV9vb3RiKHN0cnVjdCBt
YnVmICosIGludCwgaW50LAogaW50IHNjdHBfY29ubmVjdHhfaGVscGVyX2FkZChzdHJ1Y3Qgc2N0
cF90Y2IgKnN0Y2IsIHN0cnVjdCBzb2NrYWRkciAqYWRkciwKICAgICBpbnQgdG90YWRkciwgaW50
ICplcnJvcik7CiAKLXN0cnVjdCBzY3RwX3RjYiAqCi1zY3RwX2Nvbm5lY3R4X2hlbHBlcl9maW5k
KHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzb2NrYWRkciAqYWRkciwKLSAgICB1bnNp
Z25lZCBpbnQgKnRvdGFkZHIsIHVuc2lnbmVkIGludCAqbnVtX3Y0LCB1bnNpZ25lZCBpbnQgKm51
bV92NiwKLSAgICBpbnQgKmVycm9yLCB1bnNpZ25lZCBpbnQgbGltaXQsIGludCAqYmFkX2FkZHIp
OworaW50CitzY3RwX2Nvbm5lY3R4X2hlbHBlcl9maW5kKHN0cnVjdCBzY3RwX2lucGNiICosIHN0
cnVjdCBzb2NrYWRkciAqLAorICAgIHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50ICosIHVuc2ln
bmVkIGludCAqLCB1bnNpZ25lZCBpbnQpOwogCiBpbnQgc2N0cF9pc190aGVyZV9hbl9hYm9ydF9o
ZXJlKHN0cnVjdCBtYnVmICosIGludCwgdWludDMyX3QgKik7CiAjaWZkZWYgSU5FVDYKQEAgLTI3
NywyMSArMjY3LDE2IEBAIHZvaWQgc2N0cF9wcmludF9hZGRyZXNzKHN0cnVjdCBzb2NrYWRkciAq
KTsKIAogaW50CiBzY3RwX3JlbGVhc2VfcHJfc2N0cF9jaHVuayhzdHJ1Y3Qgc2N0cF90Y2IgKiwg
c3RydWN0IHNjdHBfdG1pdF9jaHVuayAqLAotICAgIHVpbnQ4X3QsIGludAotI2lmICFkZWZpbmVk
KF9fQVBQTEVfXykgJiYgIWRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCi0gICAgU0NUUF9V
TlVTRUQKLSNlbmRpZgotKTsKKyAgICB1aW50OF90LCBpbnQpOwogCiBzdHJ1Y3QgbWJ1ZiAqc2N0
cF9nZW5lcmF0ZV9jYXVzZSh1aW50MTZfdCwgY2hhciAqKTsKIHN0cnVjdCBtYnVmICpzY3RwX2dl
bmVyYXRlX25vX3VzZXJfZGF0YV9jYXVzZSh1aW50MzJfdCk7CiAKIHZvaWQgc2N0cF9iaW5keF9h
ZGRfYWRkcmVzcyhzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKLQkJ
CSAgICBzdHJ1Y3Qgc29ja2FkZHIgKnNhLCBzY3RwX2Fzc29jX3QgYXNzb2NfaWQsCi0JCQkgICAg
dWludDMyX3QgdnJmX2lkLCBpbnQgKmVycm9yLCB2b2lkICpwKTsKLXZvaWQgc2N0cF9iaW5keF9k
ZWxldGVfYWRkcmVzcyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAotCQkJICAgICAgIHN0cnVjdCBz
b2NrYWRkciAqc2EsIHNjdHBfYXNzb2NfdCBhc3NvY19pZCwKLQkJCSAgICAgICB1aW50MzJfdCB2
cmZfaWQsIGludCAqZXJyb3IpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBz
b2NrYWRkciAqc2EsIHVpbnQzMl90IHZyZl9pZCwgaW50ICplcnJvciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2b2lkICpwKTsKK3ZvaWQgc2N0cF9iaW5keF9kZWxldGVfYWRkcmVzcyhz
dHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc29ja2FkZHIgKnNhLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHZyZl9pZCwgaW50ICplcnJvcik7CiAKIGludCBz
Y3RwX2xvY2FsX2FkZHJfY291bnQoc3RydWN0IHNjdHBfdGNiICpzdGNiKTsKIApAQCAtMzUzLDEx
ICszMzgsMTEgQEAgZG8geyBcCiB9IHdoaWxlICgwKQogCiAvKiBmdW5jdGlvbnMgdG8gc3RhcnQv
c3RvcCB1ZHAgdHVubmVsaW5nICovCi0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQo
X19GcmVlQlNEX18pCisjaWYgKGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fRnJlZUJT
RF9fKSkgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIHZvaWQgc2N0cF9vdmVyX3VkcF9zdG9w
KHZvaWQpOwogaW50IHNjdHBfb3Zlcl91ZHBfc3RhcnQodm9pZCk7CiAjZW5kaWYKLSNpZiBkZWZp
bmVkKF9fV2luZG93c19fKQorI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogdm9pZCBzY3RwX292ZXJfdWRwX3Jlc3RhcnQodm9pZCk7CiAjZW5kaWYKIApAQCAt
NDAzLDcgKzM4OCw3IEBAIHZvaWQgc2N0cF9sb2dfY2xvc2luZyhzdHJ1Y3Qgc2N0cF9pbnBjYiAq
aW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIGludDE2X3QgbG9jCiAKIHZvaWQgc2N0cF9sb2df
bG9jayhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQ4
X3QgZnJvbSk7CiB2b2lkIHNjdHBfbG9nX21heGJ1cnN0KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwg
c3RydWN0IHNjdHBfbmV0cyAqLCBpbnQsIGludCwgdWludDhfdCk7Ci12b2lkIHNjdHBfbG9nX2Js
b2NrKHVpbnQ4X3QsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICosIHNpemVfdCk7Cit2b2lkIHNj
dHBfbG9nX2Jsb2NrKHVpbnQ4X3QsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICosIHNzaXplX3Qp
Owogdm9pZCBzY3RwX2xvZ19yd25kKHVpbnQ4X3QsIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDMy
X3QpOwogdm9pZCBzY3RwX2xvZ19yd25kX3NldCh1aW50OF90LCB1aW50MzJfdCwgdWludDMyX3Qs
IHVpbnQzMl90LCB1aW50MzJfdCk7CiBpbnQgc2N0cF9maWxsX3N0YXRfbG9nKHZvaWQgKiwgc2l6
ZV90ICopOwpAQCAtNDIyLDkgKzQwNywxNiBAQCB2b2lkIHNjdHBfYXVkaXRfbG9nKHVpbnQ4X3Qs
IHVpbnQ4X3QpOwogCiAjZW5kaWYKIHVpbnQzMl90IHNjdHBfbWluX210dSh1aW50MzJfdCwgdWlu
dDMyX3QsIHVpbnQzMl90KTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiB2b2lkIHNjdHBfaGNfc2V0
X210dSh1bmlvbiBzY3RwX3NvY2tzdG9yZSAqLCB1aW50MTZfdCwgdWludDMyX3QpOwogdWludDMy
X3Qgc2N0cF9oY19nZXRfbXR1KHVuaW9uIHNjdHBfc29ja3N0b3JlICosIHVpbnQxNl90KTsKICNl
bmRpZgordm9pZCBzY3RwX3NldF9zdGF0ZShzdHJ1Y3Qgc2N0cF90Y2IgKiwgaW50KTsKK3ZvaWQg
c2N0cF9hZGRfc3Vic3RhdGUoc3RydWN0IHNjdHBfdGNiICosIGludCk7Cit1aW50MzJfdCBzY3Rw
X3RpY2tzX3RvX21zZWNzKHVpbnQzMl90KTsKK3VpbnQzMl90IHNjdHBfbXNlY3NfdG9fdGlja3Mo
dWludDMyX3QpOwordWludDMyX3Qgc2N0cF90aWNrc190b19zZWNzKHVpbnQzMl90KTsKK3VpbnQz
Ml90IHNjdHBfc2Vjc190b190aWNrcyh1aW50MzJfdCk7CisKICNlbmRpZgkJCQkvKiBfS0VSTkVM
ICovCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldDYvbWVz
b24uYnVpbGQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQ2L21lc29uLmJ1aWxkCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA0MzA3ZGY1OWUwNDYzMDVlZDhhYzFjZTgzZTMwMzgxNGQ3MzdiODAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQ2L21lc29uLmJ1aWxkCkBAIC0w
LDAgKzEgQEAKK3NvdXJjZXMgKz0gZmlsZXMoJ3NjdHA2X3VzcnJlcS5jJykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldDYvc2N0cDZfdXNycmVxLmMgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91
c3JzY3RwbGliL25ldGluZXQ2L3NjdHA2X3VzcnJlcS5jCmluZGV4IDVhNTdmZDZlN2IzNTM5MzBm
YWI4MDBiZGI1YTdlZTk3ZDExYmJkNjEuLjFmYzgxZGFhODdkZmRlODJmMjcwOGJkMzgzZDMyMjYx
NDU2NzFmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldDYvc2N0cDZf
dXNycmVxLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0Ni9zY3RwNl91c3JyZXEu
YwpAQCAtMzIsMTQgKzMyLDE0IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2lmZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLV9fRkJTRElE
KCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldDYvc2N0cDZfdXNycmVxLmMgMzMyMjczIDIwMTgt
MDQtMDggMTI6MDg6MjBaIHR1ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lz
L25ldGluZXQ2L3NjdHA2X3VzcnJlcS5jIDM2MTg5NSAyMDIwLTA2LTA3IDE0OjM5OjIwWiB0dWV4
ZW4gJCIpOwogI2VuZGlmCiAKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfb3MuaD4KICNpZmRlZiBJ
TkVUNgotI2lmZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxzeXMvcHJvYy5oPgogI2VuZGlmCiAjaW5j
bHVkZSA8bmV0aW5ldC9zY3RwX3BjYi5oPgpAQCAtNTgsMTggKzU4LDExIEBAIF9fRkJTRElEKCIk
RnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldDYvc2N0cDZfdXNycmVxLmMgMzMyMjczIDIwMTgtMDQt
MDggMTI6MDg6MjBaCiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX291dHB1dC5oPgogI2luY2x1ZGUg
PG5ldGluZXQvc2N0cF9ic2RfYWRkci5oPgogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9jcmMzMi5o
PgotI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgIWRlZmluZWQoX1dJ
TjMyKQogI2luY2x1ZGUgPG5ldGluZXQvaWNtcDYuaD4KICNpbmNsdWRlIDxuZXRpbmV0L3VkcC5o
PgogI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKLSNkZWZpbmUgQVBQTEVfRklMRV9O
TyA5Ci0jZW5kaWYKLSNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQotZXh0ZXJuIHN0cnVjdCBw
cm90b3N3IGluZXRzd1tdOwotI2VuZGlmCi0jaWYgZGVmaW5lZChfX1BhbmRhX18pIHx8IGRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBpbnQgaXA2X3Y2
b25seT0wOwogI2VuZGlmCiAjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQpAQCAtNzcsNyArNzAs
NyBAQCBpbnQgaXA2X3Y2b25seT0wOwogdm9pZAogaW42X3NpbjZfMl9zaW4oc3RydWN0IHNvY2th
ZGRyX2luICpzaW4sIHN0cnVjdCBzb2NrYWRkcl9pbjYgKnNpbjYpCiB7Ci0jaWYgZGVmaW5lZChf
X1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogCXVpbnQzMl90IHRl
bXA7CiAjZW5kaWYKIAltZW1zZXQoc2luLCAwLCBzaXplb2YoKnNpbikpOwpAQCAtODYsNyArNzks
NyBAQCBpbjZfc2luNl8yX3NpbihzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbiwgc3RydWN0IHNvY2th
ZGRyX2luNiAqc2luNikKICNlbmRpZgogCXNpbi0+c2luX2ZhbWlseSA9IEFGX0lORVQ7CiAJc2lu
LT5zaW5fcG9ydCA9IHNpbjYtPnNpbjZfcG9ydDsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29z
X1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJdGVtcCA9IHNpbjYtPnNpbjZfYWRkci5z
Nl9hZGRyMTZbN107CiAJdGVtcCA9IHRlbXAgPDwgMTY7CiAJdGVtcCA9IHRlbXAgfCBzaW42LT5z
aW42X2FkZHIuczZfYWRkcjE2WzZdOwpAQCAtMTA5LDcgKzEwMiw3IEBAIGluNl9zaW42XzJfc2lu
X2luX3NvY2soc3RydWN0IHNvY2thZGRyICpuYW0pCiB9CiAKIHZvaWQKLWluNl9zaW5fMl92NG1h
cHNpbjYoc3RydWN0IHNvY2thZGRyX2luICpzaW4sIHN0cnVjdCBzb2NrYWRkcl9pbjYgKnNpbjYp
CitpbjZfc2luXzJfdjRtYXBzaW42KGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbiAqc2luLCBzdHJ1
Y3Qgc29ja2FkZHJfaW42ICpzaW42KQogewogCW1lbXNldChzaW42LCAwLCBzaXplb2Yoc3RydWN0
IHNvY2thZGRyX2luNikpOwogIAlzaW42LT5zaW42X2ZhbWlseSA9IEFGX0lORVQ2OwpAQCAtMTE3
LDcgKzExMCw3IEBAIGluNl9zaW5fMl92NG1hcHNpbjYoc3RydWN0IHNvY2thZGRyX2luICpzaW4s
IHN0cnVjdCBzb2NrYWRkcl9pbjYgKnNpbjYpCiAJc2luNi0+c2luNl9sZW4gPSBzaXplb2Yoc3Ry
dWN0IHNvY2thZGRyX2luNik7CiAjZW5kaWYKIAlzaW42LT5zaW42X3BvcnQgPSBzaW4tPnNpbl9w
b3J0OwotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9X
SU4zMikKIAkoKHVpbnQzMl90ICopJnNpbjYtPnNpbjZfYWRkcilbMF0gPSAwOwogCSgodWludDMy
X3QgKikmc2luNi0+c2luNl9hZGRyKVsxXSA9IDA7CiAJKCh1aW50MzJfdCAqKSZzaW42LT5zaW42
X2FkZHIpWzJdID0gaHRvbmwoMHhmZmZmKTsKQEAgLTEzNiw4ICsxMjksNiBAQCBpbjZfc2luXzJf
djRtYXBzaW42KHN0cnVjdCBzb2NrYWRkcl9pbiAqc2luLCBzdHJ1Y3Qgc29ja2FkZHJfaW42ICpz
aW42KQogaW50CiAjaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19GcmVlQlNEX18p
CiBzY3RwNl9pbnB1dF93aXRoX3BvcnQoc3RydWN0IG1idWYgKippX3BhaywgaW50ICpvZmZwLCB1
aW50MTZfdCBwb3J0KQotI2VsaWYgZGVmaW5lZCggX19QYW5kYV9fKQotc2N0cDZfaW5wdXQocGFr
aGFuZGxlX3R5cGUgKmlfcGFrKQogI2Vsc2UKIHNjdHA2X2lucHV0KHN0cnVjdCBtYnVmICoqaV9w
YWssIGludCAqb2ZmcCwgaW50IHByb3RvKQogI2VuZGlmCkBAIC0xNTcsMjUgKzE0OCwxNiBAQCBz
Y3RwNl9pbnB1dChzdHJ1Y3QgbWJ1ZiAqKmlfcGFrLCBpbnQgKm9mZnAsIGludCBwcm90bykKIAl1
aW50OF90IG1mbG93dHlwZTsKIAl1aW50MTZfdCBmaWJudW07CiAjZW5kaWYKLSNpZiAhKGRlZmlu
ZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkIChfX0ZyZWVCU0RfXykpCisjaWYgIShkZWZpbmVkKF9f
QVBQTEVfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykpCiAJdWludDE2X3QgcG9ydCA9IDA7CiAj
ZW5kaWYKIAotI2lmIGRlZmluZWQoX19QYW5kYV9fKQotCS8qIFRoaXMgaXMgRXZpbCwgYnV0IGl0
cyB0aGUgb25seSB3YXkgdG8gbWFrZSBwYW5kYSB3b3JrIHJpZ2h0LiAqLwotCWlwaGxlbiA9IHNp
emVvZihzdHJ1Y3QgaXA2X2hkcik7Ci0jZWxzZQogCWlwaGxlbiA9ICpvZmZwOwotI2VuZGlmCiAJ
aWYgKFNDVFBfR0VUX1BLVF9WUkZJRCgqaV9wYWssIHZyZl9pZCkpIHsKIAkJU0NUUF9SRUxFQVNF
X1BLVCgqaV9wYWspOwogCQlyZXR1cm4gKElQUFJPVE9fRE9ORSk7CiAJfQogCW0gPSBTQ1RQX0hF
QURFUl9UT19DSEFJTigqaV9wYWspOwotI2lmZGVmIF9fUGFuZGFfXwotCVNDVFBfREVUQUNIX0hF
QURFUl9GUk9NX0NIQUlOKCppX3Bhayk7Ci0JKHZvaWQpU0NUUF9SRUxFQVNFX0hFQURFUigqaV9w
YWspOwotI2VuZGlmCiAjaWZkZWYgU0NUUF9NQlVGX0xPR0dJTkcKIAkvKiBMb2cgaW4gYW55IGlu
cHV0IG1idWZzICovCiAJaWYgKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9sb2dnaW5nX2xldmVsKSAm
IFNDVFBfTUJVRl9MT0dHSU5HX0VOQUJMRSkgewpAQCAtMTg4LDI1ICsxNzAsMTEgQEAgc2N0cDZf
aW5wdXQoc3RydWN0IG1idWYgKippX3BhaywgaW50ICpvZmZwLCBpbnQgcHJvdG8pCiAJfQogI2Vu
ZGlmCiAjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKLSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDEw
MDAwNDkKIAlTQ1RQREJHKFNDVFBfREVCVUdfQ1JDT0ZGTE9BRCwKIAkgICAgICAgICJzY3RwNl9p
bnB1dCgpOiBQYWNrZXQgb2YgbGVuZ3RoICVkIHJlY2VpdmVkIG9uICVzIHdpdGggY3N1bV9mbGFn
cyAweCViLlxuIiwKIAkgICAgICAgIG0tPm1fcGt0aGRyLmxlbiwKIAkgICAgICAgIGlmX25hbWUo
bS0+bV9wa3RoZHIucmN2aWYpLAogCSAgICAgICAgKGludCltLT5tX3BrdGhkci5jc3VtX2ZsYWdz
LCBDU1VNX0JJVFMpOwotI2VsaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAwMDAwCi0JU0NUUERC
RyhTQ1RQX0RFQlVHX0NSQ09GRkxPQUQsCi0JICAgICAgICAic2N0cDZfaW5wdXQoKTogUGFja2V0
IG9mIGxlbmd0aCAlZCByZWNlaXZlZCBvbiAlcyB3aXRoIGNzdW1fZmxhZ3MgMHgleC5cbiIsCi0J
ICAgICAgICBtLT5tX3BrdGhkci5sZW4sCi0JICAgICAgICBpZl9uYW1lKG0tPm1fcGt0aGRyLnJj
dmlmKSwKLQkgICAgICAgIG0tPm1fcGt0aGRyLmNzdW1fZmxhZ3MpOwotI2Vsc2UKLQlTQ1RQREJH
KFNDVFBfREVCVUdfQ1JDT0ZGTE9BRCwKLQkgICAgICAgICJzY3RwNl9pbnB1dCgpOiBQYWNrZXQg
b2YgbGVuZ3RoICVkIHJlY2VpdmVkIG9uICVzIHdpdGggY3N1bV9mbGFncyAweCV4LlxuIiwKLQkg
ICAgICAgIG0tPm1fcGt0aGRyLmxlbiwKLQkgICAgICAgIG0tPm1fcGt0aGRyLnJjdmlmLT5pZl94
bmFtZSwKLQkgICAgICAgIG0tPm1fcGt0aGRyLmNzdW1fZmxhZ3MpOwotI2VuZGlmCiAjZW5kaWYK
ICNpZiBkZWZpbmVkKF9fQVBQTEVfXykKIAlTQ1RQREJHKFNDVFBfREVCVUdfQ1JDT0ZGTE9BRCwK
QEAgLTIxNiw3ICsxODQsNyBAQCBzY3RwNl9pbnB1dChzdHJ1Y3QgbWJ1ZiAqKmlfcGFrLCBpbnQg
Km9mZnAsIGludCBwcm90bykKIAkgICAgICAgIG0tPm1fcGt0aGRyLnJjdmlmLT5pZl91bml0LAog
CSAgICAgICAgbS0+bV9wa3RoZHIuY3N1bV9mbGFncyk7CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9f
V2luZG93c19fKQorI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCVNDVFBEQkcoU0NUUF9ERUJVR19DUkNPRkZMT0FELAogCSAgICAgICAgInNjdHA2X2lucHV0
KCk6IFBhY2tldCBvZiBsZW5ndGggJWQgcmVjZWl2ZWQgb24gJXMgd2l0aCBjc3VtX2ZsYWdzIDB4
JXguXG4iLAogCSAgICAgICAgbS0+bV9wa3RoZHIubGVuLApAQCAtMjMyLDEzICsyMDAsMTUgQEAg
c2N0cDZfaW5wdXQoc3RydWN0IG1idWYgKippX3BhaywgaW50ICpvZmZwLCBpbnQgcHJvdG8pCiAJ
U0NUUF9TVEFUX0lOQ1JfQ09VTlRFUjY0KHNjdHBzX2lucGFja2V0cyk7CiAJLyogR2V0IElQLCBT
Q1RQLCBhbmQgZmlyc3QgY2h1bmsgaGVhZGVyIHRvZ2V0aGVyIGluIHRoZSBmaXJzdCBtYnVmLiAq
LwogCW9mZnNldCA9IGlwaGxlbiArIHNpemVvZihzdHJ1Y3Qgc2N0cGhkcikgKyBzaXplb2Yoc3Ry
dWN0IHNjdHBfY2h1bmtoZHIpOwotCWlwNiA9IG10b2QobSwgc3RydWN0IGlwNl9oZHIgKik7Ci0J
SVA2X0VYVEhEUl9HRVQoc2gsIHN0cnVjdCBzY3RwaGRyICosIG0sIGlwaGxlbiwKLQkJICAgICAg
IChpbnQpKHNpemVvZihzdHJ1Y3Qgc2N0cGhkcikgKyBzaXplb2Yoc3RydWN0IHNjdHBfY2h1bmto
ZHIpKSk7Ci0JaWYgKHNoID09IE5VTEwpIHsKLQkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfaGRyb3Bz
KTsKLQkJcmV0dXJuIChJUFBST1RPX0RPTkUpOworCWlmIChtLT5tX2xlbiA8IG9mZnNldCkgewor
CQltID0gbV9wdWxsdXAobSwgb2Zmc2V0KTsKKwkJaWYgKG0gPT0gTlVMTCkgeworCQkJU0NUUF9T
VEFUX0lOQ1Ioc2N0cHNfaGRyb3BzKTsKKwkJCXJldHVybiAoSVBQUk9UT19ET05FKTsKKwkJfQog
CX0KKwlpcDYgPSBtdG9kKG0sIHN0cnVjdCBpcDZfaGRyICopOworCXNoID0gKHN0cnVjdCBzY3Rw
aGRyICopKG10b2QobSwgY2FkZHJfdCkgKyBpcGhsZW4pOwogCWNoID0gKHN0cnVjdCBzY3RwX2No
dW5raGRyICopKChjYWRkcl90KXNoICsgc2l6ZW9mKHN0cnVjdCBzY3RwaGRyKSk7CiAJb2Zmc2V0
IC09IHNpemVvZihzdHJ1Y3Qgc2N0cF9jaHVua2hkcik7CiAJbWVtc2V0KCZzcmMsIDAsIHNpemVv
ZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSk7CkBAIC0yOTAsNyArMjYwLDcgQEAgc2N0cDZfaW5wdXQo
c3RydWN0IG1idWYgKippX3BhaywgaW50ICpvZmZwLCBpbnQgcHJvdG8pCiAJCWdvdG8gb3V0Owog
CX0KIAllY25fYml0cyA9ICgobnRvaGwoaXA2LT5pcDZfZmxvdykgPj4gMjApICYgMHgwMDAwMDBm
Zik7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAw
MDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKIAlpZiAobS0+bV9wa3RoZHIuY3N1bV9mbGFn
cyAmIENTVU1fU0NUUF9WQUxJRCkgewogCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19yZWN2aHdjcmMp
OwogCQljb21wdXRlX2NyYyA9IDA7CkBAIC0zNDYsNyArMzE2LDcgQEAgc2N0cDZfbm90aWZ5KHN0
cnVjdCBzY3RwX2lucGNiICppbnAsCiAgICAgICAgICAgICAgdWludDhfdCBpY21wNl9jb2RlLAog
ICAgICAgICAgICAgIHVpbnQzMl90IG5leHRfbXR1KQogewotI2lmIGRlZmluZWQoX19BUFBMRV9f
KSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9f
KQogCXN0cnVjdCBzb2NrZXQgKnNvOwogI2VuZGlmCiAJaW50IHRpbWVyX3N0b3BwZWQ7CkBAIC0z
NzIsNyArMzQyLDcgQEAgc2N0cDZfbm90aWZ5KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCS8q
IFRyZWF0IGl0IGxpa2UgYW4gQUJPUlQuICovCiAJCWlmIChpY21wNl9jb2RlID09IElDTVA2X1BB
UkFNUFJPQl9ORVhUSEVBREVSKSB7CiAJCQlzY3RwX2Fib3J0X25vdGlmaWNhdGlvbihzdGNiLCAx
LCAwLCBOVUxMLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8
fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKQog
CQkJc28gPSBTQ1RQX0lOUF9TTyhpbnApOwogCQkJYXRvbWljX2FkZF9pbnQoJnN0Y2ItPmFzb2Mu
cmVmY250LCAxKTsKIAkJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKQEAgLTM4Miw3ICszNTIsNyBA
QCBzY3RwNl9ub3RpZnkoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKICNlbmRpZgogCQkJKHZvaWQp
c2N0cF9mcmVlX2Fzc29jKGlucCwgc3RjYiwgU0NUUF9OT1JNQUxfUFJPQywKIAkJCQkJICAgICAg
U0NUUF9GUk9NX1NDVFBfVVNSUkVRICsgU0NUUF9MT0NfMik7Ci0jaWYgZGVmaW5lZChfX0FQUExF
X18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExF
X18pCiAJCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDEpOwogI2VuZGlmCiAJCX0gZWxzZSB7CkBA
IC00MDcsNiArMzc3LDEzIEBAIHNjdHA2X25vdGlmeShzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAog
CQl9CiAJCWlmIChuZXQtPm10dSA+IG5leHRfbXR1KSB7CiAJCQluZXQtPm10dSA9IG5leHRfbXR1
OworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisJCQlpZiAobmV0LT5wb3J0KSB7CisJCQkJc2N0
cF9oY19zZXRfbXR1KCZuZXQtPnJvLl9sX2FkZHIsIGlucC0+ZmlibnVtLCBuZXh0X210dSArIHNp
emVvZihzdHJ1Y3QgdWRwaGRyKSk7CisJCQl9IGVsc2UgeworCQkJCXNjdHBfaGNfc2V0X210dSgm
bmV0LT5yby5fbF9hZGRyLCBpbnAtPmZpYm51bSwgbmV4dF9tdHUpOworCQkJfQorI2VuZGlmCiAJ
CX0KIAkJLyogVXBkYXRlIHRoZSBhc3NvY2lhdGlvbiBNVFUgKi8KIAkJaWYgKHN0Y2ItPmFzb2Mu
c21hbGxlc3RfbXR1ID4gbmV4dF9tdHUpIHsKQEAgLTU3MSwxMyArNTQ4LDI1IEBAIHNjdHA2X2N0
bGlucHV0KGludCBjbWQsIHN0cnVjdCBzb2NrYWRkciAqcGt0ZHN0LCB2b2lkICpkKQogCQkJICAg
ICAgICAgICAgIGlwNmNwLT5pcDZjX2ljbXA2LT5pY21wNl90eXBlLAogCQkJICAgICAgICAgICAg
IGlwNmNwLT5pcDZjX2ljbXA2LT5pY21wNl9jb2RlLAogCQkJICAgICAgICAgICAgIG50b2hsKGlw
NmNwLT5pcDZjX2ljbXA2LT5pY21wNl9tdHUpKTsKLQkJfSBlbHNlIHsKLSNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA8IDUwMDAwMAotCQkJaWYgKFBSQ19JU19S
RURJUkVDVChjbWQpICYmIChpbnAgIT0gTlVMTCkpIHsKLQkJCQlpbjZfcnRjaGFuZ2UoKHN0cnVj
dCBpbjZwY2IgKilpbnAsCi0JCQkJICAgIGluZXQ2Y3RsZXJybWFwW2NtZF0pOworI2lmIGRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKKwkJCWlmICghKHN0Y2ItPnNjdHBfZXAtPnNjdHBfZmxhZ3MgJiBT
Q1RQX1BDQl9GTEFHU19TT0NLRVRfR09ORSkgJiYKKwkJCSAgICAoc3RjYi0+c2N0cF9zb2NrZXQg
IT0gTlVMTCkgeworCQkJCXN0cnVjdCBzb2NrZXQgKnVwY2FsbF9zb2NrZXQ7CisKKwkJCQl1cGNh
bGxfc29ja2V0ID0gc3RjYi0+c2N0cF9zb2NrZXQ7CisJCQkJU09DS19MT0NLKHVwY2FsbF9zb2Nr
ZXQpOworCQkJCXNvcmVmKHVwY2FsbF9zb2NrZXQpOworCQkJCVNPQ0tfVU5MT0NLKHVwY2FsbF9z
b2NrZXQpOworCQkJCWlmICgodXBjYWxsX3NvY2tldC0+c29fdXBjYWxsICE9IE5VTEwpICYmCisJ
CQkJICAgICh1cGNhbGxfc29ja2V0LT5zb19lcnJvciAhPSAwKSkgeworCQkJCQkoKnVwY2FsbF9z
b2NrZXQtPnNvX3VwY2FsbCkodXBjYWxsX3NvY2tldCwgdXBjYWxsX3NvY2tldC0+c29fdXBjYWxs
YXJnLCBNX05PV0FJVCk7CisJCQkJfQorCQkJCUFDQ0VQVF9MT0NLKCk7CisJCQkJU09DS19MT0NL
KHVwY2FsbF9zb2NrZXQpOworCQkJCXNvcmVsZSh1cGNhbGxfc29ja2V0KTsKIAkJCX0KICNlbmRp
ZgorCQl9IGVsc2UgewogCQkJaWYgKChzdGNiID09IE5VTEwpICYmIChpbnAgIT0gTlVMTCkpIHsK
IAkJCQkvKiByZWR1Y2UgaW5wJ3MgcmVmLWNvdW50ICovCiAJCQkJU0NUUF9JTlBfV0xPQ0soaW5w
KTsKQEAgLTU5Niw3ICs1ODUsNyBAQCBzY3RwNl9jdGxpbnB1dChpbnQgY21kLCBzdHJ1Y3Qgc29j
a2FkZHIgKnBrdGRzdCwgdm9pZCAqZCkKICAqIHRoaXMgcm91dGluZSBjYW4gcHJvYmFibHkgYmUg
Y29sbGFzcGVkIGludG8gdGhlIG9uZSBpbiBzY3RwX3VzZXJyZXEuYwogICogc2luY2UgdGhleSBk
byB0aGUgc2FtZSB0aGluZyBhbmQgbm93IHdlIGxvb2t1cCB3aXRoIGEgc29ja2FkZHIKICAqLwot
I2lmZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKIHN0YXRpYyBpbnQKIHNjdHA2X2dldGNyZWQoU1lTQ1RMX0hBTkRMRVJf
QVJHUykKIHsKQEAgLTYwOCwxNiArNTk3LDEwIEBAIHNjdHA2X2dldGNyZWQoU1lTQ1RMX0hBTkRM
RVJfQVJHUykKIAlpbnQgZXJyb3I7CiAJdWludDMyX3QgdnJmX2lkOwogCi0jaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pCiAJdnJmX2lkID0gU0NUUF9ERUZBVUxU
X1ZSRklEOwotI2Vsc2UKLQl2cmZfaWQgPSBwYW5kYV9nZXRfdnJmX2Zyb21fY2FsbCgpOyAvKiBm
cm9tIGNvbm5lY3R4IGNhbGw/ICovCi0jZW5kaWYKIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
ICYmIF9fRnJlZUJTRF92ZXJzaW9uID4gNjAyMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAllcnJvciA9IHByaXZfY2hlY2socmVxLT50ZCwg
UFJJVl9ORVRJTkVUX0dFVENSRUQpOwotI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19G
cmVlQlNEX3ZlcnNpb24gPj0gNTAwMDAwCi0JZXJyb3IgPSBzdXNlcihyZXEtPnRkKTsKICNlbHNl
CiAJZXJyb3IgPSBzdXNlcihyZXEtPnApOwogI2VuZGlmCkBAIC02NzksMjcgKzY2MiwzMyBAQCBT
WVNDVExfUFJPQyhfbmV0X2luZXQ2X3NjdHA2LCBPSURfQVVUTywgZ2V0Y3JlZCwgQ1RMVFlQRV9P
UEFRVUUgfCBDVExGTEFHX1JXLAogI2VuZGlmCiAKIC8qIFRoaXMgaXMgdGhlIHNhbWUgYXMgdGhl
IHNjdHBfYWJvcnQoKSBjb3VsZCBiZSBtYWRlIGNvbW1vbiAqLwotI2lmIChkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDY5MDAwMCkgfHwgZGVmaW5lZChfX1dpbmRv
d3NfXykKLXN0YXRpYyB2b2lkCi0jZWxpZiBkZWZpbmVkKF9fUGFuZGFfXykgfHwgZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQorI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIGludAorI2VsaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfV0lOMzIpCitzdGF0aWMgdm9pZAogI2Vsc2UK
IHN0YXRpYyBpbnQKICNlbmRpZgogc2N0cDZfYWJvcnQoc3RydWN0IHNvY2tldCAqc28pCiB7Cisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwlzdHJ1
Y3QgZXBvY2hfdHJhY2tlciBldDsKKyNlbmRpZgogCXN0cnVjdCBzY3RwX2lucGNiICppbnA7CiAJ
dWludDMyX3QgZmxhZ3M7CiAKIAlpbnAgPSAoc3RydWN0IHNjdHBfaW5wY2IgKilzby0+c29fcGNi
OwogCWlmIChpbnAgPT0gTlVMTCkgewogCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwg
TlVMTCwgU0NUUF9GUk9NX1NDVFA2X1VTUlJFUSwgRUlOVkFMKTsKLSNpZiAoZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPiA2OTAwMDApIHx8IGRlZmluZWQoX19XaW5k
b3dzX18pCisjaWYgKGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX1dJTjMyKSkgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJcmV0dXJuOwogI2Vsc2UKIAkJcmV0dXJuIChFSU5W
QUwpOwogI2VuZGlmCiAJfQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCisJTkVUX0VQT0NIX0VOVEVSKGV0KTsKKyNlbmRpZgogIHNjdHBfbXVzdF90
cnlfYWdhaW46CiAJZmxhZ3MgPSBpbnAtPnNjdHBfZmxhZ3M7CiAjaWZkZWYgU0NUUF9MT0dfQ0xP
U0lORwpAQCAtNzE4LDcgKzcwNyw3IEBAIHNjdHA2X2Fib3J0KHN0cnVjdCBzb2NrZXQgKnNvKQog
CQkgKiBoZXJlIGZvciB0aGUgYWNjb3VudGluZy9zZWxlY3QuCiAJCSAqLwogCQlTQ1RQX1NCX0NM
RUFSKHNvLT5zb19yY3YpOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19B
UFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlzby0+c29fdXNlY291bnQtLTsK
ICNlbHNlCiAJCS8qIE5vdyBudWxsIG91dCB0aGUgcmVmZXJlbmNlLCB3ZSBhcmUgY29tcGxldGVs
eSBkZXRhY2hlZC4gKi8KQEAgLTczMSwyMCArNzIwLDIxIEBAIHNjdHA2X2Fib3J0KHN0cnVjdCBz
b2NrZXQgKnNvKQogCQkJZ290byBzY3RwX211c3RfdHJ5X2FnYWluOwogCQl9CiAJfQotI2lmIChk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDY5MDAwMCkgfHwgZGVm
aW5lZChfX1dpbmRvd3NfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQorCU5FVF9FUE9DSF9FWElUKGV0KTsKIAlyZXR1cm47CiAjZWxzZQogCXJl
dHVybiAoMCk7CiAjZW5kaWYKIH0KIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJl
ZUJTRF92ZXJzaW9uID49IDUwMDAwMAotc3RhdGljIGludAotc2N0cDZfYXR0YWNoKHN0cnVjdCBz
b2NrZXQgKnNvLCBpbnQgcHJvdG8gU0NUUF9VTlVTRUQsIHN0cnVjdCB0aHJlYWQgKnAgU0NUUF9V
TlVTRUQpCi0jZWxpZiBkZWZpbmVkKF9fUGFuZGFfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQorI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIGludAogc2N0cDZfYXR0YWNoKHN0cnVjdCBz
b2NrZXQgKnNvLCBpbnQgcHJvdG8gU0NUUF9VTlVTRUQsIHVpbnQzMl90IHZyZl9pZCkKLSNlbGlm
IGRlZmluZWQoX19XaW5kb3dzX18pCisjZWxpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorc3RhdGlj
IGludAorc2N0cDZfYXR0YWNoKHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgcHJvdG8gU0NUUF9VTlVT
RUQsIHN0cnVjdCB0aHJlYWQgKnAgU0NUUF9VTlVTRUQpCisjZWxpZiBkZWZpbmVkKF9XSU4zMikK
IHN0YXRpYyBpbnQKIHNjdHA2X2F0dGFjaChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IHByb3RvIFND
VFBfVU5VU0VELCBQS1RIUkVBRCBwIFNDVFBfVU5VU0VEKQogI2Vsc2UKQEAgLTc1MiwxMCArNzQy
LDkgQEAgc3RhdGljIGludAogc2N0cDZfYXR0YWNoKHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgcHJv
dG8gU0NUUF9VTlVTRUQsIHN0cnVjdCBwcm9jICpwIFNDVFBfVU5VU0VEKQogI2VuZGlmCiB7Ci0J
c3RydWN0IGluNnBjYiAqaW5wNjsKIAlpbnQgZXJyb3I7CiAJc3RydWN0IHNjdHBfaW5wY2IgKmlu
cDsKLSNpZiAhZGVmaW5lZChfX1BhbmRhX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisj
aWYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAl1aW50MzJfdCB2cmZfaWQgPSBTQ1RQX0RFRkFV
TFRfVlJGSUQ7CiAjZW5kaWYKIApAQCAtNzc2LDQyICs3NjUsMzUgQEAgc2N0cDZfYXR0YWNoKHN0
cnVjdCBzb2NrZXQgKnNvLCBpbnQgcHJvdG8gU0NUUF9VTlVTRUQsIHN0cnVjdCBwcm9jICpwIFND
VFBfVU5VU0UKIAlpbnAgPSAoc3RydWN0IHNjdHBfaW5wY2IgKilzby0+c29fcGNiOwogCVNDVFBf
SU5QX1dMT0NLKGlucCk7CiAJaW5wLT5zY3RwX2ZsYWdzIHw9IFNDVFBfUENCX0ZMQUdTX0JPVU5E
X1Y2OwkvKiBJJ20gdjYhICovCi0JaW5wNiA9IChzdHJ1Y3QgaW42cGNiICopaW5wOwogCi0jaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19X
aW5kb3dzX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKLQlpbnA2LT5pbnBfdmZsYWcgfD0g
SU5QX0lQVjY7Ci0jZWxzZQotCWlucC0+aW5wX3ZmbGFnIHw9IElOUF9JUFY2OwotI2VuZGlmCi0j
aWYgIWRlZmluZWQoX19QYW5kYV9fKQotCWlucDYtPmluNnBfaG9wcyA9IC0xOwkvKiB1c2Uga2Vy
bmVsIGRlZmF1bHQgKi8KLQlpbnA2LT5pbjZwX2Nrc3VtID0gLTE7CS8qIGp1c3QgdG8gYmUgc3Vy
ZSAqLwotI2VuZGlmCisJaW5wLT5pcF9pbnAuaW5wLmlucF92ZmxhZyB8PSBJTlBfSVBWNjsKKwlp
bnAtPmlwX2lucC5pbnAuaW42cF9ob3BzID0gLTE7CS8qIHVzZSBrZXJuZWwgZGVmYXVsdCAqLwor
CWlucC0+aXBfaW5wLmlucC5pbjZwX2Nrc3VtID0gLTE7CS8qIGp1c3QgdG8gYmUgc3VyZSAqLwog
I2lmZGVmIElORVQKIAkvKgogCSAqIFhYWDogdWdseSEhIElQdjQgVFRMIGluaXRpYWxpemF0aW9u
IGlzIG5lY2Vzc2FyeSBmb3IgYW4gSVB2NgogCSAqIHNvY2tldCBhcyB3ZWxsLCBiZWNhdXNlIHRo
ZSBzb2NrZXQgbWF5IGJlIGJvdW5kIHRvIGFuIElQdjYKIAkgKiB3aWxkY2FyZCBhZGRyZXNzLCB3
aGljaCBtYXkgbWF0Y2ggYW4gSVB2NC1tYXBwZWQgSVB2NiBhZGRyZXNzLgogCSAqLwotCWlucDYt
PmlucF9pcF90dGwgPSBNT0RVTEVfR0xPQkFMKGlwX2RlZnR0bCk7CisJaW5wLT5pcF9pbnAuaW5w
LmlucF9pcF90dGwgPSBNT0RVTEVfR0xPQkFMKGlwX2RlZnR0bCk7CiAjZW5kaWYKIAlTQ1RQX0lO
UF9XVU5MT0NLKGlucCk7CiAJcmV0dXJuICgwKTsKIH0KIAotI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAwMAorI2lmIGRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKK2ludAorc2N0cDZfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRy
ICphZGRyLCB2b2lkICogcCkKK3sKKyNlbGlmIGRlZmluZWQoX19GcmVlQlNEX18pCiBzdGF0aWMg
aW50CiBzY3RwNl9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIs
IHN0cnVjdCB0aHJlYWQgKnApCiB7Ci0jZWxpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZp
bmVkKF9fQVBQTEVfXykKKyNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQogc3RhdGljIGludAogc2N0
cDZfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRyLCBzdHJ1Y3Qg
cHJvYyAqcCkKIHsKLSNlbGlmIGRlZmluZWQoX19QYW5kYV9fKSB8fCBkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCi1pbnQKLXNjdHA2X2JpbmQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRk
ciAqYWRkciwgdm9pZCAqIHApCi17Ci0jZWxpZiBkZWZpbmVkKF9fV2luZG93c19fKQorI2VsaWYg
ZGVmaW5lZChfV0lOMzIpCiBzdGF0aWMgaW50CiBzY3RwNl9iaW5kKHN0cnVjdCBzb2NrZXQgKnNv
LCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIFBLVEhSRUFEIHApCiB7CkBAIC04MjMsOCArODA1LDgg
QEAgc2N0cDZfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYgKm5hbSwgc3RydWN0
IHByb2MgKnApCiAKICNlbmRpZgogCXN0cnVjdCBzY3RwX2lucGNiICppbnA7Ci0Jc3RydWN0IGlu
NnBjYiAqaW5wNjsKIAlpbnQgZXJyb3I7CisJdV9jaGFyIHZmbGFnc2F2OwogCiAJaW5wID0gKHN0
cnVjdCBzY3RwX2lucGNiICopc28tPnNvX3BjYjsKIAlpZiAoaW5wID09IE5VTEwpIHsKQEAgLTgz
Miw3ICs4MTQsNyBAQCBzY3RwNl9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAq
bmFtLCBzdHJ1Y3QgcHJvYyAqcCkKIAkJcmV0dXJuIChFSU5WQUwpOwogCX0KIAotI2lmICFkZWZp
bmVkKF9fV2luZG93c19fKQorI2lmICEoZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pKQogCWlmIChhZGRyKSB7CiAJCXN3aXRjaCAoYWRkci0+c2FfZmFtaWx5KSB7CiAj
aWZkZWYgSU5FVApAQCAtODYxLDI2ICs4NDMsMTYgQEAgc2N0cDZfYmluZChzdHJ1Y3Qgc29ja2V0
ICpzbywgc3RydWN0IG1idWYgKm5hbSwgc3RydWN0IHByb2MgKnApCiAJCX0KIAl9CiAjZW5kaWYK
LQlpbnA2ID0gKHN0cnVjdCBpbjZwY2IgKilpbnA7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
fHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pIHx8IGRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKLQlpbnA2LT5pbnBfdmZsYWcgJj0gfklOUF9JUFY0OwotCWlucDYtPmlu
cF92ZmxhZyB8PSBJTlBfSVBWNjsKLSNlbHNlCi0JaW5wLT5pbnBfdmZsYWcgJj0gfklOUF9JUFY0
OwotCWlucC0+aW5wX3ZmbGFnIHw9IElOUF9JUFY2OwotI2VuZGlmCi0JaWYgKChhZGRyICE9IE5V
TEwpICYmIChTQ1RQX0lQVjZfVjZPTkxZKGlucDYpID09IDApKSB7CisJdmZsYWdzYXYgPSBpbnAt
PmlwX2lucC5pbnAuaW5wX3ZmbGFnOworCWlucC0+aXBfaW5wLmlucC5pbnBfdmZsYWcgJj0gfklO
UF9JUFY0OworCWlucC0+aXBfaW5wLmlucC5pbnBfdmZsYWcgfD0gSU5QX0lQVjY7CisJaWYgKChh
ZGRyICE9IE5VTEwpICYmIChTQ1RQX0lQVjZfVjZPTkxZKGlucCkgPT0gMCkpIHsKIAkJc3dpdGNo
IChhZGRyLT5zYV9mYW1pbHkpIHsKICNpZmRlZiBJTkVUCiAJCWNhc2UgQUZfSU5FVDoKIAkJCS8q
IGJpbmRpbmcgdjQgYWRkciB0byB2NiBzb2NrZXQsIHNvIHJlc2V0IGZsYWdzICovCi0jaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19XaW5k
b3dzX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKLQkJCWlucDYtPmlucF92ZmxhZyB8PSBJ
TlBfSVBWNDsKLQkJCWlucDYtPmlucF92ZmxhZyAmPSB+SU5QX0lQVjY7Ci0jZWxzZQotCQkJaW5w
LT5pbnBfdmZsYWcgfD0gSU5QX0lQVjQ7Ci0JCQlpbnAtPmlucF92ZmxhZyAmPSB+SU5QX0lQVjY7
Ci0jZW5kaWYKKwkJCWlucC0+aXBfaW5wLmlucC5pbnBfdmZsYWcgfD0gSU5QX0lQVjQ7CisJCQlp
bnAtPmlwX2lucC5pbnAuaW5wX3ZmbGFnICY9IH5JTlBfSVBWNjsKIAkJCWJyZWFrOwogI2VuZGlm
CiAjaWZkZWYgSU5FVDYKQEAgLTg5MSwyNiArODYzLDE3IEBAIHNjdHA2X2JpbmQoc3RydWN0IHNv
Y2tldCAqc28sIHN0cnVjdCBtYnVmICpuYW0sIHN0cnVjdCBwcm9jICpwKQogCQkJc2luNl9wID0g
KHN0cnVjdCBzb2NrYWRkcl9pbjYgKilhZGRyOwogCiAJCQlpZiAoSU42X0lTX0FERFJfVU5TUEVD
SUZJRUQoJnNpbjZfcC0+c2luNl9hZGRyKSkgewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8
IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKSB8fCBkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCi0JCQkJaW5wNi0+aW5wX3ZmbGFnIHw9IElOUF9JUFY0OwotI2Vsc2UKLQkJ
CQlpbnAtPmlucF92ZmxhZyB8PSBJTlBfSVBWNDsKLSNlbmRpZgorCQkJCWlucC0+aXBfaW5wLmlu
cC5pbnBfdmZsYWcgfD0gSU5QX0lQVjQ7CiAJCQl9CiAjaWZkZWYgSU5FVAogCQkJaWYgKElONl9J
U19BRERSX1Y0TUFQUEVEKCZzaW42X3AtPnNpbjZfYWRkcikpIHsKIAkJCQlzdHJ1Y3Qgc29ja2Fk
ZHJfaW4gc2luOwogCiAJCQkJaW42X3NpbjZfMl9zaW4oJnNpbiwgc2luNl9wKTsKLSNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRv
d3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQotCQkJCWlucDYtPmlucF92ZmxhZyB8PSBJ
TlBfSVBWNDsKLQkJCQlpbnA2LT5pbnBfdmZsYWcgJj0gfklOUF9JUFY2OwotI2Vsc2UKLQkJCQlp
bnAtPmlucF92ZmxhZyB8PSBJTlBfSVBWNDsKLQkJCQlpbnAtPmlucF92ZmxhZyAmPSB+SU5QX0lQ
VjY7Ci0jZW5kaWYKKwkJCQlpbnAtPmlwX2lucC5pbnAuaW5wX3ZmbGFnIHw9IElOUF9JUFY0Owor
CQkJCWlucC0+aXBfaW5wLmlucC5pbnBfdmZsYWcgJj0gfklOUF9JUFY2OwogCQkJCWVycm9yID0g
c2N0cF9pbnBjYl9iaW5kKHNvLCAoc3RydWN0IHNvY2thZGRyICopJnNpbiwgTlVMTCwgcCk7Ci0J
CQkJcmV0dXJuIChlcnJvcik7CisJCQkJZ290byBvdXQ7CiAJCQl9CiAjZW5kaWYKIAkJCWJyZWFr
OwpAQCAtOTI3LDcgKzg5MCw4IEBAIHNjdHA2X2JpbmQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVj
dCBtYnVmICpuYW0sIHN0cnVjdCBwcm9jICpwKQogCQlpZiAoYWRkci0+c2FfZmFtaWx5ID09IEFG
X0lORVQpIHsKIAkJCS8qIGNhbid0IGJpbmQgdjQgYWRkciB0byB2NiBvbmx5IHNvY2tldCEgKi8K
IAkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUDZf
VVNSUkVRLCBFSU5WQUwpOwotCQkJcmV0dXJuIChFSU5WQUwpOworCQkJZXJyb3IgPSBFSU5WQUw7
CisJCQlnb3RvIG91dDsKIAkJfQogI2VuZGlmCiAJCXNpbjZfcCA9IChzdHJ1Y3Qgc29ja2FkZHJf
aW42ICopYWRkcjsKQEAgLTkzNiwxNSArOTAwLDE5IEBAIHNjdHA2X2JpbmQoc3RydWN0IHNvY2tl
dCAqc28sIHN0cnVjdCBtYnVmICpuYW0sIHN0cnVjdCBwcm9jICpwKQogCQkJLyogY2FuJ3QgYmlu
ZCB2NC1tYXBwZWQgYWRkcnMgZWl0aGVyISAqLwogCQkJLyogTk9URTogd2UgZG9uJ3Qgc3VwcG9y
dCBTSUlUICovCiAJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9G
Uk9NX1NDVFA2X1VTUlJFUSwgRUlOVkFMKTsKLQkJCXJldHVybiAoRUlOVkFMKTsKKwkJCWVycm9y
ID0gRUlOVkFMOworCQkJZ290byBvdXQ7CiAJCX0KIAl9CiAJZXJyb3IgPSBzY3RwX2lucGNiX2Jp
bmQoc28sIGFkZHIsIE5VTEwsIHApOworb3V0OgorCWlmIChlcnJvciAhPSAwKQorCQlpbnAtPmlw
X2lucC5pbnAuaW5wX3ZmbGFnID0gdmZsYWdzYXY7CiAJcmV0dXJuIChlcnJvcik7CiB9CiAKIAot
I2lmIChkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDY5MDAwMCkg
fHwgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAjaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIHN0YXRpYyB2b2lkCiAjZWxzZQpA
QCAtOTU4LDkgKzkyNiw3IEBAIHNjdHA2X2Nsb3NlKHN0cnVjdCBzb2NrZXQgKnNvKQogLyogVGhp
cyBjb3VsZCBiZSBtYWRlIGNvbW1vbiB3aXRoIHNjdHBfZGV0YWNoKCkgc2luY2UgdGhleSBhcmUg
aWRlbnRpY2FsICovCiAjZWxzZQogCi0jaWYgIWRlZmluZWQoX19QYW5kYV9fKQogc3RhdGljCi0j
ZW5kaWYKIGludAogc2N0cDZfZGV0YWNoKHN0cnVjdCBzb2NrZXQgKnNvKQogewpAQCAtOTc0LDcg
Kzk0MCw3IEBAIHNjdHA2X2RldGFjaChzdHJ1Y3Qgc29ja2V0ICpzbykKIAogI2VuZGlmCiAKLSNp
ZiAhZGVmaW5lZChfX1BhbmRhX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaWYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKIHN0YXRpYwogI2VuZGlmCiBpbnQKQEAgLTk4NSw3ICs5NTEs
NyBAQCBzY3RwNl9kaXNjb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvKQogCiAKIGludAotI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAwMAorI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBzY3RwX3NlbmRt
KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgZmxhZ3MsIHN0cnVjdCBtYnVmICptLCBzdHJ1Y3Qgc29j
a2FkZHIgKmFkZHIsCiAgICAgc3RydWN0IG1idWYgKmNvbnRyb2wsIHN0cnVjdCB0aHJlYWQgKnAp
OwogCkBAIC05OTUsMTMgKzk2MSwxMyBAQCBzY3RwX3NlbmRtKHN0cnVjdCBzb2NrZXQgKnNvLCBp
bnQgZmxhZ3MsIHN0cnVjdCBtYnVmICptLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsCiAKICNlbmRp
ZgogCi0jaWYgIWRlZmluZWQoX19QYW5kYV9fKSAmJiAhZGVmaW5lZChfX1dpbmRvd3NfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0Zy
ZWVCU0RfdmVyc2lvbiA+PSA1MDAwMDAKKyNpZiAhZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKIHN0YXRpYyBpbnQKIHNj
dHA2X3NlbmQoc3RydWN0IHNvY2tldCAqc28sIGludCBmbGFncywgc3RydWN0IG1idWYgKm0sIHN0
cnVjdCBzb2NrYWRkciAqYWRkciwKICAgICBzdHJ1Y3QgbWJ1ZiAqY29udHJvbCwgc3RydWN0IHRo
cmVhZCAqcCkKIHsKLSNlbGlmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBM
RV9fKQorI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCiBzdGF0aWMgaW50CiBzY3RwNl9zZW5kKHN0
cnVjdCBzb2NrZXQgKnNvLCBpbnQgZmxhZ3MsIHN0cnVjdCBtYnVmICptLCBzdHJ1Y3Qgc29ja2Fk
ZHIgKmFkZHIsCiAgICAgc3RydWN0IG1idWYgKmNvbnRyb2wsIHN0cnVjdCBwcm9jICpwKQpAQCAt
MTAxNCw3ICs5ODAsNiBAQCBzY3RwNl9zZW5kKHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgZmxhZ3Ms
IHN0cnVjdCBtYnVmICptLCBzdHJ1Y3QgbWJ1ZiAqbmFtLAogCXN0cnVjdCBzb2NrYWRkciAqYWRk
ciA9IG5hbSA/IG10b2QobmFtLCBzdHJ1Y3Qgc29ja2FkZHIgKik6IE5VTEw7CiAjZW5kaWYKIAlz
dHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wOwotCXN0cnVjdCBpbjZwY2IgKmlucDY7CiAKICNpZmRlZiBJ
TkVUCiAJc3RydWN0IHNvY2thZGRyX2luNiAqc2luNjsKQEAgLTEwMzEsNyArOTk2LDYgQEAgc2N0
cDZfc2VuZChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IGZsYWdzLCBzdHJ1Y3QgbWJ1ZiAqbSwgc3Ry
dWN0IG1idWYgKm5hbSwKIAkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFND
VFBfRlJPTV9TQ1RQNl9VU1JSRVEsIEVJTlZBTCk7CiAJCXJldHVybiAoRUlOVkFMKTsKIAl9Ci0J
aW5wNiA9IChzdHJ1Y3QgaW42cGNiICopaW5wOwogCS8qCiAJICogRm9yIHRoZSBUQ1AgbW9kZWwg
d2UgbWF5IGdldCBhIE5VTEwgYWRkciwgaWYgd2UgYXJlIGEgY29ubmVjdGVkCiAJICogc29ja2V0
IHRoYXRzIG9rLgpAQCAtMTA1MSw3ICsxMDE1LDcgQEAgc2N0cDZfc2VuZChzdHJ1Y3Qgc29ja2V0
ICpzbywgaW50IGZsYWdzLCBzdHJ1Y3QgbWJ1ZiAqbSwgc3RydWN0IG1idWYgKm5hbSwKIAl9CiAj
aWZkZWYgSU5FVAogCXNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKWFkZHI7Ci0JaWYgKFND
VFBfSVBWNl9WNk9OTFkoaW5wNikpIHsKKwlpZiAoU0NUUF9JUFY2X1Y2T05MWShpbnApKSB7CiAJ
CS8qCiAJCSAqIGlmIElQVjZfVjZPTkxZIGZsYWcsIHdlIGRpc2NhcmQgZGF0YWdyYW1zIGRlc3Rp
bmVkIHRvIGEKIAkJICogdjQgYWRkciBvciB2NC1tYXBwZWQgYWRkcgpAQCAtMTA5MSw3ICsxMDU1
LDcgQEAgY29ubmVjdGVkX3R5cGU6CiAJCWlucC0+cGt0X2xhc3QgPSBpbnAtPnBrdCA9IG07CiAJ
fQogCWlmICgKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykK
KyNpZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCS8qIEZyZWVCU0QgYW5kIE1hY09TWCB1c2VzIGEgZmxhZyBw
YXNzZWQgKi8KIAkgICAgKChmbGFncyAmIFBSVVNfTU9SRVRPQ09NRSkgPT0gMCkKICNlbHNlCkBA
IC0xMTA2LDkgKzEwNzAsMTggQEAgY29ubmVjdGVkX3R5cGU6CiAJCSAqIG9wdGlvbmFseSBzd2l0
Y2ggYmFjayB0byB0aGlzIGNvZGUgKGJ5IGNoYW5naW5nIGJhY2sgdGhlCiAJCSAqIGRlZmluaW5p
dGlvbnMgYnV0IHRoaXMgaXMgbm90IGFkdmlzYWJsZS4KIAkJICovCisjaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJc3RydWN0IGVwb2NoX3RyYWNr
ZXIgZXQ7CisjZW5kaWYKIAkJaW50IHJldDsKIAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJTkVUX0VQT0NIX0VOVEVSKGV0KTsKKyNlbmRpZgog
CQlyZXQgPSBzY3RwX291dHB1dChpbnAsIGlucC0+cGt0LCBhZGRyLCBpbnAtPmNvbnRyb2wsIHAs
IGZsYWdzKTsKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQorCU5FVF9FUE9DSF9FWElUKGV0KTsKKyNlbmRpZgogCQlpbnAtPnBrdCA9IE5VTEw7CiAJ
CWlucC0+Y29udHJvbCA9IE5VTEw7CiAJCXJldHVybiAocmV0KTsKQEAgLTExMTgsNDYgKzEwOTEs
NDEgQEAgY29ubmVjdGVkX3R5cGU6CiB9CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAwMAorI2lmIGRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKK2ludAorc2N0cDZfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2th
ZGRyICphZGRyKQoreworCXZvaWQgKnAgPSBOVUxMOworI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykKIHN0YXRpYyBpbnQKIHNjdHA2X2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBz
b2NrYWRkciAqYWRkciwgc3RydWN0IHRocmVhZCAqcCkKIHsKLSNlbGlmIGRlZmluZWQoX19GcmVl
QlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKQorI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCiBz
dGF0aWMgaW50CiBzY3RwNl9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2Fk
ZHIgKmFkZHIsIHN0cnVjdCBwcm9jICpwKQogewotI2VsaWYgZGVmaW5lZChfX1BhbmRhX18pCi1p
bnQKLXNjdHA2X2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqYWRk
ciwgdm9pZCAqcCkKLXsKLSNlbGlmIGRlZmluZWQoX19XaW5kb3dzX18pCisjZWxpZiBkZWZpbmVk
KF9XSU4zMikKIHN0YXRpYyBpbnQKIHNjdHA2X2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0
cnVjdCBzb2NrYWRkciAqYWRkciwgUEtUSFJFQUQgcCkKIHsKLSNlbGlmIGRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKLWludAotc2N0cDZfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNv
Y2thZGRyICphZGRyKQotewotCXZvaWQgKnAgPSBOVUxMOwogI2Vsc2UKIHN0YXRpYyBpbnQKIHNj
dHA2X2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICpuYW0sIHN0cnVjdCBw
cm9jICpwKQogewogCXN0cnVjdCBzb2NrYWRkciAqYWRkciA9IG10b2QobmFtLCBzdHJ1Y3Qgc29j
a2FkZHIgKik7CisjZW5kaWYKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQorCXN0cnVjdCBlcG9jaF90cmFja2VyIGV0OwogI2VuZGlmCiAJdWludDMy
X3QgdnJmX2lkOwogCWludCBlcnJvciA9IDA7CiAJc3RydWN0IHNjdHBfaW5wY2IgKmlucDsKIAlz
dHJ1Y3Qgc2N0cF90Y2IgKnN0Y2I7CiAjaWZkZWYgSU5FVAotCXN0cnVjdCBpbjZwY2IgKmlucDY7
CiAJc3RydWN0IHNvY2thZGRyX2luNiAqc2luNjsKIAl1bmlvbiBzY3RwX3NvY2tzdG9yZSBzdG9y
ZTsKICNlbmRpZgogCi0jaWZkZWYgSU5FVAotCWlucDYgPSAoc3RydWN0IGluNnBjYiAqKXNvLT5z
b19wY2I7Ci0jZW5kaWYKIAlpbnAgPSAoc3RydWN0IHNjdHBfaW5wY2IgKilzby0+c29fcGNiOwog
CWlmIChpbnAgPT0gTlVMTCkgewogCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVM
TCwgU0NUUF9GUk9NX1NDVFA2X1VTUlJFUSwgRUNPTk5SRVNFVCk7CkBAIC0xMTY4LDcgKzExMzYs
NyBAQCBzY3RwNl9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtLCBz
dHJ1Y3QgcHJvYyAqcCkKIAkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFND
VFBfRlJPTV9TQ1RQNl9VU1JSRVEsIEVJTlZBTCk7CiAJCXJldHVybiAoRUlOVkFMKTsKIAl9Ci0j
aWYgIWRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgIShkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykpCiAJc3dpdGNoIChhZGRyLT5zYV9mYW1pbHkpIHsKICNpZmRlZiBJ
TkVUCiAJY2FzZSBBRl9JTkVUOgpAQCAtMTIyMSw3ICsxMTg5LDcgQEAgc2N0cDZfY29ubmVjdChz
dHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYgKm5hbSwgc3RydWN0IHByb2MgKnApCiAJfQog
I2lmZGVmIElORVQKIAlzaW42ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilhZGRyOwotCWlmIChT
Q1RQX0lQVjZfVjZPTkxZKGlucDYpKSB7CisJaWYgKFNDVFBfSVBWNl9WNk9OTFkoaW5wKSkgewog
CQkvKgogCQkgKiBpZiBJUFY2X1Y2T05MWSBmbGFnLCBpZ25vcmUgY29ubmVjdGlvbnMgZGVzdGlu
ZWQgdG8gYSB2NAogCQkgKiBhZGRyIG9yIHY0LW1hcHBlZCBhZGRyCkBAIC0xMjc1LDcgKzEyNDMs
OCBAQCBzY3RwNl9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtLCBz
dHJ1Y3QgcHJvYyAqcCkKIAkvKiBXZSBhcmUgR09PRCB0byBnbyAqLwogCXN0Y2IgPSBzY3RwX2Fs
b2NfYXNzb2MoaW5wLCBhZGRyLCAmZXJyb3IsIDAsIHZyZl9pZCwKIAkgICAgICAgICAgICAgICAg
ICAgICAgIGlucC0+c2N0cF9lcC5wcmVfb3Blbl9zdHJlYW1fY291bnQsCi0JICAgICAgICAgICAg
ICAgICAgICAgICBpbnAtPnNjdHBfZXAucG9ydCwgcCk7CisJICAgICAgICAgICAgICAgICAgICAg
ICBpbnAtPnNjdHBfZXAucG9ydCwgcCwKKwkgICAgICAgICAgICAgICAgICAgICAgIFNDVFBfSU5J
VElBTElaRV9BVVRIX1BBUkFNUyk7CiAJU0NUUF9BU09DX0NSRUFURV9VTkxPQ0soaW5wKTsKIAlp
ZiAoc3RjYiA9PSBOVUxMKSB7CiAJCS8qIEdhayEgbm8gbWVtb3J5ICovCkBAIC0xMjg2LDI2ICsx
MjU1LDI0IEBAIHNjdHA2X2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICpu
YW0sIHN0cnVjdCBwcm9jICpwKQogCQkvKiBTZXQgdGhlIGNvbm5lY3RlZCBmbGFnIHNvIHdlIGNh
biBxdWV1ZSBkYXRhICovCiAJCXNvaXNjb25uZWN0aW5nKHNvKTsKIAl9Ci0Jc3RjYi0+YXNvYy5z
dGF0ZSA9IFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQ7CisJU0NUUF9TRVRfU1RBVEUoc3RjYiwgU0NU
UF9TVEFURV9DT09LSUVfV0FJVCk7CiAJKHZvaWQpU0NUUF9HRVRUSU1FX1RJTUVWQUwoJnN0Y2It
PmFzb2MudGltZV9lbnRlcmVkKTsKLQotCS8qIGluaXRpYWxpemUgYXV0aGVudGljYXRpb24gcGFy
YW1ldGVycyBmb3IgdGhlIGFzc29jICovCi0Jc2N0cF9pbml0aWFsaXplX2F1dGhfcGFyYW1zKGlu
cCwgc3RjYik7Ci0KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQorCU5FVF9FUE9DSF9FTlRFUihldCk7CisjZW5kaWYKIAlzY3RwX3NlbmRfaW5pdGlh
dGUoaW5wLCBzdGNiLCBTQ1RQX1NPX0xPQ0tFRCk7CiAJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwor
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJTkVU
X0VQT0NIX0VYSVQoZXQpOworI2VuZGlmCiAJcmV0dXJuIChlcnJvcik7CiB9CiAKIHN0YXRpYyBp
bnQKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVm
aW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogc2N0cDZfZ2V0
YWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICoqYWRkcikKIHsKIAlzdHJ1
Y3Qgc29ja2FkZHJfaW42ICpzaW42OwotI2VsaWYgZGVmaW5lZChfX1BhbmRhX18pCi1zY3RwNl9n
ZXRhZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIpCi17Ci0Jc3Ry
dWN0IHNvY2thZGRyX2luNiAqc2luNiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopYWRkcjsKICNl
bHNlCiBzY3RwNl9nZXRhZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtKQog
ewpAQCAtMTMxNSwxOSArMTI4MiwxNyBAQCBzY3RwNl9nZXRhZGRyKHN0cnVjdCBzb2NrZXQgKnNv
LCBzdHJ1Y3QgbWJ1ZiAqbmFtKQogCXVpbnQzMl90IHZyZl9pZDsKIAlzdHJ1Y3Qgc2N0cF9pZmEg
KnNjdHBfaWZhOwogCi0jaWZkZWYgU0NUUF9LQU1FCisjaWYgZGVmaW5lZChTQ1RQX0tBTUUpICYm
IGRlZmluZWQoU0NUUF9FTUJFRERFRF9WNl9TQ09QRSkKIAlpbnQgZXJyb3I7Ci0jZW5kaWYgLyog
U0NUUF9LQU1FICovCisjZW5kaWYKIAogCS8qCiAJICogRG8gdGhlIG1hbGxvYyBmaXJzdCBpbiBj
YXNlIGl0IGJsb2Nrcy4KIAkgKi8KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVk
KF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCVNDVFBfTUFMTE9DX1NPTkFNRShzaW42LCBzdHJ1Y3Qgc29ja2FkZHJfaW42ICos
IHNpemVvZigqc2luNikpOwogCWlmIChzaW42ID09IE5VTEwpCiAJCXJldHVybiAoRU5PTUVNKTsK
LSNlbGlmIGRlZmluZWQoX19QYW5kYV9fKQotCW1lbXNldChzaW42LCAwLCBzaXplb2YoKnNpbjYp
KTsKICNlbHNlCiAJU0NUUF9CVUZfTEVOKG5hbSkgPSBzaXplb2YoKnNpbjYpOwogCW1lbXNldChz
aW42LCAwLCBzaXplb2YoKnNpbjYpKTsKQEAgLTEzMzksNyArMTMwNCw3IEBAIHNjdHA2X2dldGFk
ZHIoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICpuYW0pCiAKIAlpbnAgPSAoc3RydWN0
IHNjdHBfaW5wY2IgKilzby0+c29fcGNiOwogCWlmIChpbnAgPT0gTlVMTCkgewotI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93
c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCVNDVFBfRlJFRV9TT05BTUUoc2lu
Nik7CiAjZW5kaWYKIAkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBf
RlJPTV9TQ1RQNl9VU1JSRVEsIEVDT05OUkVTRVQpOwpAQCAtMTM1Nyw3ICsxMzIyLDcgQEAgc2N0
cDZfZ2V0YWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYgKm5hbSkKIAkJCXN0Y2Ig
PSBMSVNUX0ZJUlNUKCZpbnAtPnNjdHBfYXNvY19saXN0KTsKIAkJCWlmIChzdGNiID09IE5VTEwp
IHsKIAkJCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
fHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQlTQ1RQX0ZSRUVfU09OQU1FKHNpbjYpOwogI2VuZGlmCiAJ
CQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQNl9V
U1JSRVEsIEVOT0VOVCk7CkBAIC0xMzc5LDcgKzEzNDQsNyBAQCBzY3RwNl9nZXRhZGRyKHN0cnVj
dCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtKQogCQkJaWYgKCghZm5kKSB8fCAoc2luX2E2
ID09IE5VTEwpKSB7CiAJCQkJLyogcHVudCAqLwogCQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsK
LSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5l
ZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCVNDVFBfRlJF
RV9TT05BTUUoc2luNik7CiAjZW5kaWYKIAkJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVM
TCwgTlVMTCwgU0NUUF9GUk9NX1NDVFA2X1VTUlJFUSwgRU5PRU5UKTsKQEAgLTE0MTAsNyArMTM3
NSw3IEBAIHNjdHA2X2dldGFkZHIoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICpuYW0p
CiAJCQl9CiAJCX0KIAkJaWYgKCFmbmQpIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBk
ZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogCQkJU0NUUF9GUkVFX1NPTkFNRShzaW42KTsKICNlbmRpZgogCQkJU0NU
UF9JTlBfUlVOTE9DSyhpbnApOwpAQCAtMTQzNCwyMSArMTM5OSwxNyBAQCBzY3RwNl9nZXRhZGRy
KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtKQogCQlzaW42LT5zaW42X3Njb3Bl
X2lkID0gMDsJLyogWFhYICovCiAjZW5kaWYgLyogU0NUUF9LQU1FICovCiAjZW5kaWYgLyogU0NU
UF9FTUJFRERFRF9WNl9TQ09QRSAqLwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmlu
ZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAJKCphZGRyKSA9IChzdHJ1Y3Qgc29ja2FkZHIgKilzaW42OwogI2VuZGlmCiAJ
cmV0dXJuICgwKTsKIH0KIAogc3RhdGljIGludAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8
IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiBzY3RwNl9wZWVyYWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0
IHNvY2thZGRyICoqYWRkcikKIHsKIAlzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW42OwotI2VsaWYg
ZGVmaW5lZChfX1BhbmRhX18pCi1zY3RwNl9wZWVyYWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3Ry
dWN0IHNvY2thZGRyICphZGRyKQotewotCXN0cnVjdCBzb2NrYWRkcl9pbjYgKnNpbjYgPSAoc3Ry
dWN0IHNvY2thZGRyX2luNiAqKWFkZHI7CiAjZWxzZQogc2N0cDZfcGVlcmFkZHIoc3RydWN0IHNv
Y2tldCAqc28sIHN0cnVjdCBtYnVmICpuYW0pCiB7CkBAIC0xNDY0LDEyICsxNDI1LDEwIEBAIHNj
dHA2X3BlZXJhZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtKQogI2VuZGlm
CiAKIAkvKiBEbyB0aGUgbWFsbG9jIGZpcnN0IGluIGNhc2UgaXQgYmxvY2tzLiAqLwotI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2lu
ZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJU0NUUF9NQUxMT0NfU09OQU1F
KHNpbjYsIHN0cnVjdCBzb2NrYWRkcl9pbjYgKiwgc2l6ZW9mICpzaW42KTsKIAlpZiAoc2luNiA9
PSBOVUxMKQogCQlyZXR1cm4gKEVOT01FTSk7Ci0jZWxpZiBkZWZpbmVkKF9fUGFuZGFfXykKLQlt
ZW1zZXQoc2luNiwgMCwgc2l6ZW9mKCpzaW42KSk7CiAjZWxzZQogCVNDVFBfQlVGX0xFTihuYW0p
ID0gc2l6ZW9mKCpzaW42KTsKIAltZW1zZXQoc2luNiwgMCwgc2l6ZW9mKCpzaW42KSk7CkBAIC0x
NDgzLDcgKzE0NDIsNyBAQCBzY3RwNl9wZWVyYWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0
IG1idWYgKm5hbSkKIAlpZiAoKGlucCA9PSBOVUxMKSB8fAogCSAgICAoKGlucC0+c2N0cF9mbGFn
cyAmIFNDVFBfUENCX0ZMQUdTX0NPTk5FQ1RFRCkgPT0gMCkpIHsKIAkJLyogVURQIHR5cGUgYW5k
IGxpc3RlbmVycyB3aWxsIGRyb3Agb3V0IGhlcmUgKi8KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCQlTQ1RQX0ZSRUVfU09OQU1FKHNpbjYpOwogI2VuZGlmCiAJ
CVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUDZfVVNS
UkVRLCBFTk9UQ09OTik7CkBAIC0xNDk2LDcgKzE0NTUsNyBAQCBzY3RwNl9wZWVyYWRkcihzdHJ1
Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYgKm5hbSkKIAl9CiAJU0NUUF9JTlBfUlVOTE9DSyhp
bnApOwogCWlmIChzdGNiID09IE5VTEwpIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBk
ZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogCQlTQ1RQX0ZSRUVfU09OQU1FKHNpbjYpOwogI2VuZGlmCiAJCVNDVFBf
TFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUDZfVVNSUkVRLCBF
Q09OTlJFU0VUKTsKQEAgLTE1MTUsNyArMTQ3NCw3IEBAIHNjdHA2X3BlZXJhZGRyKHN0cnVjdCBz
b2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtKQogCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKIAlp
ZiAoIWZuZCkgewogCQkvKiBObyBJUHY0IGFkZHJlc3MgKi8KLSNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlTQ1RQX0ZSRUVfU09OQU1FKHNpbjYpOwogI2VuZGlm
CiAJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUDZf
VVNSUkVRLCBFTk9FTlQpOwpAQCAtMTUyNCw3ICsxNDgzLDcgQEAgc2N0cDZfcGVlcmFkZHIoc3Ry
dWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICpuYW0pCiAjaWZkZWYgU0NUUF9FTUJFRERFRF9W
Nl9TQ09QRQogI2lmZGVmIFNDVFBfS0FNRQogCWlmICgoZXJyb3IgPSBzYTZfcmVjb3ZlcnNjb3Bl
KHNpbjYpKSAhPSAwKSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQ
UExFX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKIAkJU0NUUF9GUkVFX1NPTkFNRShzaW42KTsKICNlbmRpZgogCQlTQ1RQX0xUUkFDRV9FUlJf
UkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFA2X1VTUlJFUSwgZXJyb3IpOwpAQCAt
MTUzNCwyMSArMTQ5MywxNiBAQCBzY3RwNl9wZWVyYWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3Ry
dWN0IG1idWYgKm5hbSkKIAlpbjZfcmVjb3ZlcnNjb3BlKHNpbjYsICZzaW42LT5zaW42X2FkZHIs
IE5VTEwpOwogI2VuZGlmIC8qIFNDVFBfS0FNRSAqLwogI2VuZGlmIC8qIFNDVFBfRU1CRURERURf
VjZfU0NPUEUgKi8KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVf
XykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
CSphZGRyID0gKHN0cnVjdCBzb2NrYWRkciAqKXNpbjY7CiAjZW5kaWYKIAlyZXR1cm4gKDApOwog
fQogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRl
ZmluZWQoX19XaW5kb3dzX18pCisjaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIHN0YXRpYyBp
bnQKIHNjdHA2X2luNmdldGFkZHIoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAq
Km5hbSkKIHsKLSNlbGlmIGRlZmluZWQoX19QYW5kYV9fKQotaW50Ci1zY3RwNl9pbjZnZXRhZGRy
KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKm5hbSwgdWludDMyX3QgKm5hbWVs
ZW4pCi17Ci0Jc3RydWN0IHNvY2thZGRyICphZGRyID0gbmFtOwogI2VsaWYgZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogaW50CiBzY3RwNl9pbjZnZXRhZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1
Y3QgbWJ1ZiAqbmFtKQpAQCAtMTU2NCwxMCArMTUxOCwxMCBAQCBzY3RwNl9pbjZnZXRhZGRyKHN0
cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtKQogCXN0cnVjdCBzb2NrYWRkciAqYWRk
ciA9IG10b2QobmFtLCBzdHJ1Y3Qgc29ja2FkZHIgKik7CiAjZW5kaWYKICNlbmRpZgotCXN0cnVj
dCBpbjZwY2IgKmlucDYgPSBzb3RvaW42cGNiKHNvKTsKKwlzdHJ1Y3QgaW5wY2IgKmlucCA9IHNv
dG9pbnBjYihzbyk7CiAJaW50IGVycm9yOwogCi0JaWYgKGlucDYgPT0gTlVMTCkgeworCWlmIChp
bnAgPT0gTlVMTCkgewogCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKE5VTEwsIE5VTEwsIE5VTEwsIFND
VFBfRlJPTV9TQ1RQNl9VU1JSRVEsIEVJTlZBTCk7CiAJCXJldHVybiAoRUlOVkFMKTsKIAl9CkBA
IC0xNTc2LDcgKzE1MzAsNyBAQCBzY3RwNl9pbjZnZXRhZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBz
dHJ1Y3QgbWJ1ZiAqbmFtKQogCWVycm9yID0gc2N0cDZfZ2V0YWRkcihzbywgbmFtKTsKICNpZmRl
ZiBJTkVUCiAJaWYgKGVycm9yKSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5l
ZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKIAkJc3RydWN0IHNvY2thZGRyX2luNiAqc2luNjsKICNlbHNlCiAJCXN0cnVjdCBz
b2NrYWRkcl9pbjYgc2luNjsKQEAgLTE1ODcsNyArMTU0MSw3IEBAIHNjdHA2X2luNmdldGFkZHIo
c3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICpuYW0pCiAJCWlmIChlcnJvcikgewogCQkJ
cmV0dXJuIChlcnJvcik7CiAJCX0KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVk
KF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCQlTQ1RQX01BTExPQ19TT05BTUUoc2luNiwgc3RydWN0IHNvY2thZGRyX2luNiAq
LCBzaXplb2YgKnNpbjYpOwogCQlpZiAoc2luNiA9PSBOVUxMKSB7CiAJCQlTQ1RQX0ZSRUVfU09O
QU1FKCpuYW0pOwpAQCAtMTYwMiwyMyArMTU1NiwxNSBAQCBzY3RwNl9pbjZnZXRhZGRyKHN0cnVj
dCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtKQogCQltZW1jcHkoYWRkciwgJnNpbjYsIHNp
emVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSk7CiAjZW5kaWYKIAl9Ci0jZW5kaWYKLSNpZiBkZWZp
bmVkKF9fUGFuZGFfXykKLQkqbmFtZWxlbiA9IG5hbS0+c2FfbGVuOwogI2VuZGlmCiAJcmV0dXJu
IChlcnJvcik7CiB9CiAKIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19B
UFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiBzdGF0aWMgaW50CiBzY3RwNl9nZXRwZWVyYWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3Ry
dWN0IHNvY2thZGRyICoqbmFtKQogewotI2VsaWYgZGVmaW5lZChfX1BhbmRhX18pCi1pbnQKLXNj
dHA2X2dldHBlZXJhZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKm5hbSwg
dWludDMyX3QgKm5hbWVsZW4pCi17Ci0Jc3RydWN0IHNvY2thZGRyICphZGRyID0gKHN0cnVjdCBz
b2NrYWRkciAqKW5hbTsKICNlbGlmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIGludAogc2N0cDZf
Z2V0cGVlcmFkZHIoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICpuYW0pCkBAIC0xNjM2
LDEwICsxNTgyLDEwIEBAIHNjdHA2X2dldHBlZXJhZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1
Y3QgbWJ1ZiAqbmFtKQogI2VuZGlmCiAKICNlbmRpZgotCXN0cnVjdCBpbjZwY2IgKmlucDYgPSBz
b3RvaW42cGNiKHNvKTsKKwlzdHJ1Y3QgaW5wY2IgKmlucCA9IHNvdG9pbnBjYihzbyk7CiAJaW50
IGVycm9yOwogCi0JaWYgKGlucDYgPT0gTlVMTCkgeworCWlmIChpbnAgPT0gTlVMTCkgewogCQlT
Q1RQX0xUUkFDRV9FUlJfUkVUKE5VTEwsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQNl9VU1JS
RVEsIEVJTlZBTCk7CiAJCXJldHVybiAoRUlOVkFMKTsKIAl9CkBAIC0xNjQ4LDcgKzE1OTQsNyBA
QCBzY3RwNl9nZXRwZWVyYWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYgKm5hbSkK
IAllcnJvciA9IHNjdHA2X3BlZXJhZGRyKHNvLCBuYW0pOwogI2lmZGVmIElORVQKIAlpZiAoZXJy
b3IpIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwg
ZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlzdHJ1
Y3Qgc29ja2FkZHJfaW42ICpzaW42OwogI2Vsc2UKIAkJc3RydWN0IHNvY2thZGRyX2luNiBzaW42
OwpAQCAtMTY1OSw3ICsxNjA1LDcgQEAgc2N0cDZfZ2V0cGVlcmFkZHIoc3RydWN0IHNvY2tldCAq
c28sIHN0cnVjdCBtYnVmICpuYW0pCiAJCWlmIChlcnJvcikgewogCQkJcmV0dXJuIChlcnJvcik7
CiAJCX0KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwg
ZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlTQ1RQ
X01BTExPQ19TT05BTUUoc2luNiwgc3RydWN0IHNvY2thZGRyX2luNiAqLCBzaXplb2YgKnNpbjYp
OwogCQlpZiAoc2luNiA9PSBOVUxMKSB7CiAJCQlTQ1RQX0ZSRUVfU09OQU1FKCpuYW0pOwpAQCAt
MTY3NCwxNCArMTYyMCwxMSBAQCBzY3RwNl9nZXRwZWVyYWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywg
c3RydWN0IG1idWYgKm5hbSkKIAkJbWVtY3B5KGFkZHIsICZzaW42LCBzaXplb2Yoc3RydWN0IHNv
Y2thZGRyX2luNikpOwogI2VuZGlmCiAJfQotI2VuZGlmCi0jaWYgZGVmaW5lZChfX1BhbmRhX18p
Ci0JKm5hbWVsZW4gPSBuYW0tPnNhX2xlbjsKICNlbmRpZgogCXJldHVybiAoZXJyb3IpOwogfQog
Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmlu
ZWQoX19XaW5kb3dzX18pCisjaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIHN0cnVjdCBwcl91
c3JyZXFzIHNjdHA2X3VzcnJlcXMgPSB7CiAjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKIAkucHJ1
X2Fib3J0ID0gc2N0cDZfYWJvcnQsCkBAIC0xNjkwLDE1ICsxNjMzLDEwIEBAIHN0cnVjdCBwcl91
c3JyZXFzIHNjdHA2X3VzcnJlcXMgPSB7CiAJLnBydV9iaW5kID0gc2N0cDZfYmluZCwKIAkucHJ1
X2Nvbm5lY3QgPSBzY3RwNl9jb25uZWN0LAogCS5wcnVfY29udHJvbCA9IGluNl9jb250cm9sLAot
I2lmIF9fRnJlZUJTRF92ZXJzaW9uID49IDY5MDAwMAogCS5wcnVfY2xvc2UgPSBzY3RwNl9jbG9z
ZSwKIAkucHJ1X2RldGFjaCA9IHNjdHA2X2Nsb3NlLAogCS5wcnVfc29wb2xsID0gc29wb2xsX2dl
bmVyaWMsCiAJLnBydV9mbHVzaCA9IHNjdHBfZmx1c2gsCi0jZWxzZQotCS5wcnVfZGV0YWNoID0g
c2N0cDZfZGV0YWNoLAotCS5wcnVfc29wb2xsID0gc29wb2xsLAotI2VuZGlmCiAJLnBydV9kaXNj
b25uZWN0ID0gc2N0cDZfZGlzY29ubmVjdCwKIAkucHJ1X2xpc3RlbiA9IHNjdHBfbGlzdGVuLAog
CS5wcnVfcGVlcmFkZHIgPSBzY3RwNl9nZXRwZWVyYWRkciwKQEAgLTE3MDcsNyArMTY0NSw3IEBA
IHN0cnVjdCBwcl91c3JyZXFzIHNjdHA2X3VzcnJlcXMgPSB7CiAJLnBydV9zb2NrYWRkciA9IHNj
dHA2X2luNmdldGFkZHIsCiAJLnBydV9zb3NlbmQgPSBzY3RwX3Nvc2VuZCwKIAkucHJ1X3NvcmVj
ZWl2ZSA9IHNjdHBfc29yZWNlaXZlCi0jZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNlbGlmIGRl
ZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCS5wcnVfYWJvcnQg
PSBzY3RwNl9hYm9ydCwKIAkucHJ1X2FjY2VwdCA9IHNjdHBfYWNjZXB0LAogCS5wcnVfYXR0YWNo
ID0gc2N0cDZfYXR0YWNoLApAQCAtMTcyOCw3ICsxNjY2LDcgQEAgc3RydWN0IHByX3VzcnJlcXMg
c2N0cDZfdXNycmVxcyA9IHsKIAkucHJ1X3Nvc2VuZCA9IHNjdHBfc29zZW5kLAogCS5wcnVfc29y
ZWNlaXZlID0gc2N0cF9zb3JlY2VpdmUsCiAJLnBydV9zb3BvbGwgPSBzb3BvbGwKLSNlbGlmIGRl
ZmluZWQoX19XaW5kb3dzX18pCisjZWxpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKIAlzY3RwNl9hYm9ydCwKIAlzY3RwX2FjY2VwdCwKIAlzY3RwNl9hdHRhY2gs
CkBAIC0xNzU1LDcgKzE2OTMsNyBAQCBzdHJ1Y3QgcHJfdXNycmVxcyBzY3RwNl91c3JyZXFzID0g
ewogI2VuZGlmCiB9OwogCi0jZWxpZiAhZGVmaW5lZChfX1BhbmRhX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCisjZWxpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogaW50CiBzY3RwNl91
c3JyZXEoc28sIHJlcSwgbSwgbmFtLCBjb250cm9sLCBwKQogCXN0cnVjdCBzb2NrZXQgKnNvOwpA
QCAtMTc2MywyMiArMTcwMSwyMiBAQCBzY3RwNl91c3JyZXEoc28sIHJlcSwgbSwgbmFtLCBjb250
cm9sLCBwKQogCXN0cnVjdCBtYnVmICptLCAqbmFtLCAqY29udHJvbDsKIAlzdHJ1Y3QgcHJvYyAq
cDsKIHsKLQlpbnQgczsKLQlpbnQgZXJyb3IgPSAwOworCWludCBlcnJvcjsKIAlpbnQgZmFtaWx5
OwotCXVpbnQzMl90IHZyZl9pZDsKKwogCWZhbWlseSA9IHNvLT5zb19wcm90by0+cHJfZG9tYWlu
LT5kb21fZmFtaWx5OwogCiAJaWYgKHJlcSA9PSBQUlVfQ09OVFJPTCkgewogCQlzd2l0Y2ggKGZh
bWlseSkgewogCQljYXNlIFBGX0lORVQ6CiAJCQllcnJvciA9IGluX2NvbnRyb2woc28sIChsb25n
KW0sIChjYWRkcl90KW5hbSwKLQkJCSAgICAoc3RydWN0IGlmbmV0ICopY29udHJvbAotCQkJICAg
ICk7CisJCQkgICAgKHN0cnVjdCBpZm5ldCAqKWNvbnRyb2wgKTsKKwkJCWJyZWFrOwogI2lmZGVm
IElORVQ2CiAJCWNhc2UgUEZfSU5FVDY6CiAJCQllcnJvciA9IGluNl9jb250cm9sKHNvLCAobG9u
ZyltLCAoY2FkZHJfdCluYW0sCiAJCQkgICAgKHN0cnVjdCBpZm5ldCAqKWNvbnRyb2wsIHApOwor
CQkJYnJlYWs7CiAjZW5kaWYKIAkJZGVmYXVsdDoKIAkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoTlVM
TCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFA2X1VTUlJFUSwgRUFGTk9TVVBQT1JUKTsKQEAg
LTE4NjIsNiArMTgwMCw3IEBAIHNjdHA2X3VzcnJlcShzbywgcmVxLCBtLCBuYW0sIGNvbnRyb2ws
IHApCiAJCWVycm9yID0gMDsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKKwkJZXJyb3IgPSAwOwogCQli
cmVhazsKIAl9CiAJcmV0dXJuIChlcnJvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3Rw
bGliL25ldGluZXQ2L3NjdHA2X3Zhci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0Ni9z
Y3RwNl92YXIuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDNjNDI4NWQy
OWNiNzhiZTEzZmIwYTZiZTY4NjdjY2Y2Nzk4MDY5ZTguLjU2YTZjM2FmM2Q5YzE2OWEwNjIzY2Rl
OTE2MGQyNmNkNjkyM2RhMTYKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0Ni9zY3Rw
Nl92YXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQ2L3NjdHA2X3Zhci5oCkBA
IC0zMiw3ICszMiw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KIF9fRkJTRElEKCIkRnJl
ZUJTRDogaGVhZC9zeXMvbmV0aW5ldDYvc2N0cDZfdmFyLmggMzE3NDU3IDIwMTctMDQtMjYgMTk6
MjY6NDBaIHR1ZXhlbiAkIik7CiAjZW5kaWYKQEAgLTQ0LDQ1ICs0NCwzMyBAQCBfX0ZCU0RJRCgi
JEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQ2L3NjdHA2X3Zhci5oIDMxNzQ1NyAyMDE3LTA0LTI2
IDE5OjI2OjQwWiB0dQogI2lmZGVmIElORVQKIGV4dGVybiB2b2lkIGluNl9zaW42XzJfc2luKHN0
cnVjdCBzb2NrYWRkcl9pbiAqLCBzdHJ1Y3Qgc29ja2FkZHJfaW42ICopOwogZXh0ZXJuIHZvaWQg
aW42X3NpbjZfMl9zaW5faW5fc29jayhzdHJ1Y3Qgc29ja2FkZHIgKik7Ci1leHRlcm4gdm9pZCBp
bjZfc2luXzJfdjRtYXBzaW42KHN0cnVjdCBzb2NrYWRkcl9pbiAqLCBzdHJ1Y3Qgc29ja2FkZHJf
aW42ICopOworZXh0ZXJuIHZvaWQgaW42X3Npbl8yX3Y0bWFwc2luNihjb25zdCBzdHJ1Y3Qgc29j
a2FkZHJfaW4gKiwgc3RydWN0IHNvY2thZGRyX2luNiAqKTsKICNlbmRpZgogI2VuZGlmCiAjaWYg
ZGVmaW5lZChfS0VSTkVMKQogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgKF9fQVBQTEVf
XykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
U1lTQ1RMX0RFQ0woX25ldF9pbmV0Nl9zY3RwNik7CiBleHRlcm4gc3RydWN0IHByX3VzcnJlcXMg
c2N0cDZfdXNycmVxczsKICNlbHNlCiBpbnQgc2N0cDZfdXNycmVxKHN0cnVjdCBzb2NrZXQgKiwg
aW50LCBzdHJ1Y3QgbWJ1ZiAqLCBzdHJ1Y3QgbWJ1ZiAqLCBzdHJ1Y3QgbWJ1ZiAqKTsKICNlbmRp
ZgogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBpbnQgc2N0cDZfaW5wdXQoc3RydWN0IG1idWYgKiosIGlu
dCAqKTsKIGludCBzY3RwNl9pbnB1dF93aXRoX3BvcnQoc3RydWN0IG1idWYgKiosIGludCAqLCB1
aW50MTZfdCk7Ci0jZWxpZiBkZWZpbmVkKF9fUGFuZGFfXykKLWludCBzY3RwNl9pbnB1dCAocGFr
aGFuZGxlX3R5cGUgKik7Ci0jZWxpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0Rf
dmVyc2lvbiA8IDkwMjAwMAotaW50IHNjdHA2X2lucHV0IF9fUCgoc3RydWN0IG1idWYgKiosIGlu
dCAqLCBpbnQpKTsKLWludCBzY3RwNl9pbnB1dF93aXRoX3BvcnQgX19QKChzdHJ1Y3QgbWJ1ZiAq
KiwgaW50ICosIHVpbnQxNl90KSk7CiAjZWxzZQogaW50IHNjdHA2X2lucHV0KHN0cnVjdCBtYnVm
ICoqLCBpbnQgKiwgaW50KTsKIGludCBzY3RwNl9pbnB1dF93aXRoX3BvcnQoc3RydWN0IG1idWYg
KiosIGludCAqLCB1aW50MTZfdCk7CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiBfX0ZyZWVCU0RfdmVyc2lvbiA8IDkwMjAwMAotaW50IHNjdHA2X291dHB1dAotX19QKChzdHJ1
Y3Qgc2N0cF9pbnBjYiAqLCBzdHJ1Y3QgbWJ1ZiAqLCBzdHJ1Y3Qgc29ja2FkZHIgKiwKLSAgICAg
c3RydWN0IG1idWYgKiwgc3RydWN0IHByb2MgKikpOwotdm9pZCBzY3RwNl9jdGxpbnB1dCBfX1Ao
KGludCwgc3RydWN0IHNvY2thZGRyICosIHZvaWQgKikpOwotI2Vsc2UKIGludCBzY3RwNl9vdXRw
dXQoc3RydWN0IHNjdHBfaW5wY2IgKiwgc3RydWN0IG1idWYgKiwgc3RydWN0IHNvY2thZGRyICos
CiAgICAgICAgICAgICAgICAgIHN0cnVjdCBtYnVmICosIHN0cnVjdCBwcm9jICopOwotI2lmIGRl
ZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChBUFBMRV9MRU9QQVJEKSAmJiAhZGVmaW5lZChB
UFBMRV9TTk9XTEVPUEFSRCkgJiYgIWRlZmluZWQoQVBQTEVfTElPTikgJiYgIWRlZmluZWQoQVBQ
TEVfTU9VTlRBSU5MSU9OKSAmJiAhZGVmaW5lZChBUFBMRV9FTENBUElUQU4pCisjaWYgZGVmaW5l
ZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pICYmICFkZWZpbmVkKEFQUExF
X0xFT1BBUkQpICYmICFkZWZpbmVkKEFQUExFX1NOT1dMRU9QQVJEKSAmJiAhZGVmaW5lZChBUFBM
RV9MSU9OKSAmJiAhZGVmaW5lZChBUFBMRV9NT1VOVEFJTkxJT04pICYmICFkZWZpbmVkKEFQUExF
X0VMQ0FQSVRBTikKIHZvaWQgc2N0cDZfY3RsaW5wdXQoaW50LCBzdHJ1Y3Qgc29ja2FkZHIgKiwg
dm9pZCAqLCBzdHJ1Y3QgaWZuZXQgKiBTQ1RQX1VOVVNFRCk7CiAjZWxzZQogdm9pZCBzY3RwNl9j
dGxpbnB1dChpbnQsIHN0cnVjdCBzb2NrYWRkciAqLCB2b2lkICopOwogI2VuZGlmCi0jZW5kaWYK
LSNpZiAhKGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSkKKyNpZiAh
KChkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykpICAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKSkKIGV4dGVybiB2b2lkIGluNl9zaW5fMl92NG1hcHNpbjYoc3RydWN0
IHNvY2thZGRyX2luICosIHN0cnVjdCBzb2NrYWRkcl9pbjYgKik7CiBleHRlcm4gdm9pZCBpbjZf
c2luNl8yX3NpbihzdHJ1Y3Qgc29ja2FkZHJfaW4gKiwgc3RydWN0IHNvY2thZGRyX2luNiAqKTsK
IGV4dGVybiB2b2lkIGluNl9zaW42XzJfc2luX2luX3NvY2soc3RydWN0IHNvY2thZGRyICopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX2F0b21pYy5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIv
dXNyc2N0cGxpYi91c2VyX2F0b21pYy5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUK
aW5kZXggODk3MzljNGU5MDgyYzc2Yzk2NTVhOTQ0MmQ3YjhiZGYxMGNiMDAwNi4uNmE1OTU4N2Vm
YzUwMGEzMzFiYjJiYzdhZjA5NzYzMzcwZDQyOTFkNwotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGli
L3VzZXJfYXRvbWljLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX2F0b21pYy5oCkBA
IC00Miw4ICs0Miw4IEBACiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMu
aD4KIAotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRGFyd2luKSB8fCBkZWZpbmVkIChfX1Vz
ZXJzcGFjZV9vc19XaW5kb3dzKQotI2lmIGRlZmluZWQgKF9fVXNlcnNwYWNlX29zX1dpbmRvd3Mp
CisjaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX1dJTjMyKQorI2lmIGRlZmluZWQo
X1dJTjMyKQogI2RlZmluZSBhdG9taWNfYWRkX2ludChhZGRyLCB2YWwpIEludGVybG9ja2VkRXhj
aGFuZ2VBZGQoKExQTE9ORylhZGRyLCAoTE9ORyl2YWwpCiAjZGVmaW5lIGF0b21pY19mZXRjaGFk
ZF9pbnQoYWRkciwgdmFsKSBJbnRlcmxvY2tlZEV4Y2hhbmdlQWRkKChMUExPTkcpYWRkciwgKExP
TkcpdmFsKQogI2RlZmluZSBhdG9taWNfc3VidHJhY3RfaW50KGFkZHIsIHZhbCkgICBJbnRlcmxv
Y2tlZEV4Y2hhbmdlQWRkKChMUExPTkcpYWRkciwtKChMT05HKXZhbCkpCkBAIC03NywxMSArNzcs
MTAgQEAKIAl9IFwKIH0KICNlbmRpZgotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93
cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIHN0YXRpYyB2b2lkIGF0b21pY19pbml0KHZvaWQpIHt9
IC8qIGVtcHR5IHdoZW4gd2UgYXJlIG5vdCB1c2luZyBhdG9taWNfbXR4ICovCiAjZWxzZQotLy8g
V2ViS2l0IGNoYW5nZSwgdGhpcyBjb25mbGljdHMgd2l0aCBhdG9taWNfaW5pdAotLy8gc3RhdGlj
IGlubGluZSB2b2lkIGF0b21pY19pbml0KHZvaWQpIHt9IC8qIGVtcHR5IHdoZW4gd2UgYXJlIG5v
dCB1c2luZyBhdG9taWNfbXR4ICovCitzdGF0aWMgaW5saW5lIHZvaWQgYXRvbWljX2luaXQodm9p
ZCkge30gLyogZW1wdHkgd2hlbiB3ZSBhcmUgbm90IHVzaW5nIGF0b21pY19tdHggKi8KICNlbmRp
ZgogCiAjZWxzZQpAQCAtMTc0LDcgKzE3Myw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhdG9taWNf
aW5pdCgpIHt9IC8qIGVtcHR5IHdoZW4gd2UgYXJlIG5vdCB1c2luZyBhdG9taWNfbXR4ICovCiAK
IGV4dGVybiB1c2VybGFuZF9tdXRleF90IGF0b21pY19tdHg7CiAKLSNpZiBkZWZpbmVkIChfX1Vz
ZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogc3RhdGljIGlubGluZSB2
b2lkIGF0b21pY19pbml0KCkgewogCUluaXRpYWxpemVDcml0aWNhbFNlY3Rpb24oJmF0b21pY19t
dHgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX2Vudmlyb25tZW50
LmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfZW52aXJvbm1lbnQuYwpvbGQgbW9kZSAxMDA2
NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDc2N2M0YmE0ZDQzZmZiYTc1YTIzMDc0MTA1OWU0ZTkz
YTA4NjhlNjMuLmRjOWQ5OGEzOTIwMTA1OGZlZTE5M2U3MjBmMjkyMWM5MzFmYjEwZjcKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3Vz
cnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX2Vudmlyb25tZW50LmMKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNy
c2N0cGxpYi91c2VyX2Vudmlyb25tZW50LmMKQEAgLTMxLDcgKzMxLDcgQEAKIC8qIF9fVXNlcnNw
YWNlX18gKi8KIAogI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2lmICFkZWZpbmVkIChfX1VzZXJzcGFj
ZV9vc19XaW5kb3dzKQorI2lmICFkZWZpbmVkKF9XSU4zMikKICNpbmNsdWRlIDxzdGRpbnQuaD4K
ICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfb3NfdXNlcnNwYWNlLmg+CiAjZW5kaWYKQEAgLTY0LDkg
KzY0LDI4IEBAIHVzZXJsYW5kX211dGV4X3QgYXRvbWljX210eDsKICAqIHByb3ZpZGUgX3NvbWVf
IGtpbmQgb2YgcmFuZG9tbmVzcy4gVGhpcyBzaG91bGQgb25seSBiZSB1c2VkCiAgKiBpbnNpZGUg
b3RoZXIgUk5HJ3MsIGxpa2UgYXJjNHJhbmRvbSg5KS4KICAqLwotI2lmIGRlZmluZWQoX19Vc2Vy
c3BhY2Vfb3NfRnJlZUJTRCkgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19EYXJ3aW4pCi1zdGF0
aWMgaW50Ci1yZWFkX3JhbmRvbV9waG9ueSh2b2lkICpidWYsIGludCBjb3VudCkKKyNpZmRlZiBG
VVpaSU5HX0JVSUxEX01PREVfVU5TQUZFX0ZPUl9QUk9EVUNUSU9OCit2b2lkCitpbml0X3JhbmRv
bSh2b2lkKQoreworCXJldHVybjsKK30KKworaW50CityZWFkX3JhbmRvbSh2b2lkICpidWYsIGlu
dCBjb3VudCkKK3sKKwltZW1zZXQoYnVmLCAnQScsIGNvdW50KTsKKwlyZXR1cm4gKGNvdW50KTsK
K30KKyNlbGlmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykg
fHwgZGVmaW5lZChfX09wZW5CU0RfXykgfHwgZGVmaW5lZChfX09wZW5CU0RfXykgfHwgZGVmaW5l
ZChfX0FQUExFX18pCit2b2lkCitpbml0X3JhbmRvbSh2b2lkKQoreworCXJldHVybjsKK30KKwor
aW50CityZWFkX3JhbmRvbSh2b2lkICpidWYsIGludCBjb3VudCkKIHsKIAlpZiAoY291bnQgPj0g
MCkgewogCQlhcmM0cmFuZG9tX2J1ZihidWYsIGNvdW50KTsKQEAgLTc0LDE0ICs5MywzMyBAQCBy
ZWFkX3JhbmRvbV9waG9ueSh2b2lkICpidWYsIGludCBjb3VudCkKIAlyZXR1cm4gKGNvdW50KTsK
IH0KICNlbHNlCi1zdGF0aWMgaW50Ci1yZWFkX3JhbmRvbV9waG9ueSh2b2lkICpidWYsIGludCBj
b3VudCkKK3ZvaWQKK2luaXRfcmFuZG9tKHZvaWQpCit7CisJc3RydWN0IHRpbWV2YWwgbm93Owor
CXVuc2lnbmVkIGludCBzZWVkOworCisJKHZvaWQpU0NUUF9HRVRUSU1FX1RJTUVWQUwoJm5vdyk7
CisJc2VlZCA9IDA7CisJc2VlZCB8PSAodW5zaWduZWQgaW50KW5vdy50dl9zZWM7CisJc2VlZCB8
PSAodW5zaWduZWQgaW50KW5vdy50dl91c2VjOworI2lmICFkZWZpbmVkKF9XSU4zMikgJiYhIGRl
ZmluZWQoX19uYXRpdmVfY2xpZW50X18pCisJc2VlZCB8PSBnZXRwaWQoKTsKKyNlbmRpZgorI2lm
IGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9fKQorCXNyYW5kKHNl
ZWQpOworI2Vsc2UKKwlzcmFuZG9tKHNlZWQpOworI2VuZGlmCisJcmV0dXJuOworfQorCitpbnQK
K3JlYWRfcmFuZG9tKHZvaWQgKmJ1ZiwgaW50IGNvdW50KQogewogCXVpbnQzMl90IHJhbmR2YWw7
CiAJaW50IHNpemUsIGk7CiAKLQkvKiBzcmFuZG9tKCkgaXMgY2FsbGVkIGluIGtlcm4vaW5pdF9t
YWluLmM6cHJvYzBfcG9zdCgpICovCi0KIAkvKiBGaWxsIGJ1ZltdIHdpdGggcmFuZG9tKDkpIG91
dHB1dCAqLwogCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSs9IChpbnQpc2l6ZW9mKHVpbnQzMl90
KSkgewogCQlyYW5kdmFsID0gcmFuZG9tKCk7CkBAIC05MiwxMyArMTMwLDMgQEAgcmVhZF9yYW5k
b21fcGhvbnkodm9pZCAqYnVmLCBpbnQgY291bnQpCiAJcmV0dXJuIChjb3VudCk7CiB9CiAjZW5k
aWYKLQotc3RhdGljIGludCAoKnJlYWRfZnVuYykodm9pZCAqLCBpbnQpID0gcmVhZF9yYW5kb21f
cGhvbnk7Ci0KLS8qIFVzZXJsYW5kLXZpc2libGUgdmVyc2lvbiBvZiByZWFkX3JhbmRvbSAqLwot
aW50Ci1yZWFkX3JhbmRvbSh2b2lkICpidWYsIGludCBjb3VudCkKLXsKLQlyZXR1cm4gKCgqcmVh
ZF9mdW5jKShidWYsIGNvdW50KSk7Ci19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBs
aWIvdXNlcl9lbnZpcm9ubWVudC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX2Vudmlyb25t
ZW50LmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCBjMTFhZDJjNDFmZmQ1
YjEwMzI0YjAwZjE5NjA0ZDJmMWQ5ZjQwM2Y0Li4wYzJlYzlkYjIzNWY0MDI2MDUzYmNmNmEyZjVj
NjNkMDIyOTViYWU5Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9lbnZpcm9ubWVudC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNy
c2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9lbnZpcm9ubWVudC5oCkBAIC0zMywxMiAr
MzMsMTIgQEAKIC8qIF9fVXNlcnNwYWNlX18gKi8KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KIAot
I2lmZGVmIF9fVXNlcnNwYWNlX29zX0ZyZWVCU0QKKyNpZmRlZiBfX0ZyZWVCU0RfXwogI2lmbmRl
ZiBfU1lTX01VVEVYX0hfCiAjaW5jbHVkZSA8c3lzL211dGV4Lmg+CiAjZW5kaWYKICNlbmRpZgot
I2lmIGRlZmluZWQgKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIp
CiAjaW5jbHVkZSAibmV0aW5ldC9zY3RwX29zX3VzZXJzcGFjZS5oIgogI2VuZGlmCiAKQEAgLTYy
LDEyICs2MiwxMyBAQCBleHRlcm4gaW50IGlwcG9ydF9maXJzdGF1dG8sIGlwcG9ydF9sYXN0YXV0
bzsKICAqLwogZXh0ZXJuIGludCBubWJjbHVzdGVyczsKIAotI2lmICFkZWZpbmVkIChfX1VzZXJz
cGFjZV9vc19XaW5kb3dzKQotI2RlZmluZSBtaW4oYSxiKSAoKGEpPihiKT8oYik6KGEpKQotI2Rl
ZmluZSBtYXgoYSxiKSAoKGEpPihiKT8oYSk6KGIpKQorI2lmICFkZWZpbmVkKF9NU0NfVkVSKSAm
JiAhZGVmaW5lZChfX01JTkdXMzJfXykKKyNkZWZpbmUgbWluKGEsYikgKCgoYSk+KGIpKT8oYik6
KGEpKQorI2RlZmluZSBtYXgoYSxiKSAoKChhKT4oYikpPyhhKTooYikpCiAjZW5kaWYKIAotZXh0
ZXJuIGludCByZWFkX3JhbmRvbSh2b2lkICpidWYsIGludCBjb3VudCk7Cit2b2lkIGluaXRfcmFu
ZG9tKHZvaWQpOworaW50IHJlYWRfcmFuZG9tKHZvaWQgKiwgaW50KTsKIAogLyogZXJybm8ncyBt
YXkgZGlmZmVyIHBlciBPUy4gIGVycm5vLmggbm93IGluY2x1ZGVkIGluIHNjdHBfb3NfdXNlcnNw
YWNlLmggKi8KIC8qIFNvdXJjZTogL3Vzci9zcmMvc3lzL3N5cy9lcnJuby5oICovCkBAIC04Miw3
ICs4Myw3IEBAIGV4dGVybiBpbnQgcmVhZF9yYW5kb20odm9pZCAqYnVmLCBpbnQgY291bnQpOwog
LyogU291cmNlIGlwX291dHB1dC5jLiBleHRlcm4nZCBpbiBpcF92YXIuaCAqLwogZXh0ZXJuIHVf
c2hvcnQgaXBfaWQ7CiAKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0xpbnV4KQorI2lmIGRl
ZmluZWQoX19saW51eF9fKQogI2RlZmluZSBJUFY2X1ZFUlNJT04gICAgICAgICAgICAweDYwCiAj
ZW5kaWYKIApAQCAtOTYsNyArOTcsNyBAQCB0ZXJtaW5hdGVfbm9uX2dyYWNlZnVsKHZvaWQpIHsK
IAogI2RlZmluZSBwYW5pYyguLi4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
IAlkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLQkJU0NUUF9Q
UklOVEYoIiVzKCk6ICIsIF9fRlVOQ1RJT05fXyk7XAorCQlTQ1RQX1BSSU5URigiJXMoKTogIiwg
X19mdW5jX18pOyAgICBcCiAJCVNDVFBfUFJJTlRGKF9fVkFfQVJHU19fKTsgICAgICAgICAgIFwK
IAkJU0NUUF9QUklOVEYoIlxuIik7ICAgICAgICAgICAgICAgICAgXAogCQl0ZXJtaW5hdGVfbm9u
X2dyYWNlZnVsKCk7ICAgICAgICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGli
L3VzZXJfaW5wY2IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9pbnBjYi5oCm9sZCBtb2Rl
IDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggODFiNWQyMTJkNzA5ZjRkZDI0NDg5YjhkZjIx
MTRhYzU1Njk5OGRlMy4uMzVkNTljODU4ZjIxZGM3ZDEyMmVmY2U2Zjk1MDJkMTFlOTRmZjI0YQot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfaW5wY2IuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3Jz
Y3RwbGliL3VzZXJfaW5wY2IuaApAQCAtMzUsOCArMzUsNiBAQAogCiAjaW5jbHVkZSA8dXNlcl9y
b3V0ZS5oPiAvKiB3YXMgPG5ldC9yb3V0ZS5oPiAqLwogCi0jZGVmaW5lCWluNnBjYgkJaW5wY2IJ
LyogZm9yIEtBTUUgc3JjIHN5bmMgb3ZlciBCU0QqJ3MgKi8KLSNkZWZpbmUJaW42cF9zcAkJaW5w
X3NwCS8qIGZvciBLQU1FIHNyYyBzeW5jIG92ZXIgQlNEKidzICovCiBzdHJ1Y3QgaW5wY2Jwb2xp
Y3k7CiAKIC8qCkBAIC01Niw3ICs1NCw3IEBAIExJU1RfSEVBRChpbnBjYnBvcnRoZWFkLCBpbnBj
YnBvcnQpOwogICogdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmUuCiAgKi8KIHN0cnVjdCBpbl9hZGRy
XzRpbjYgewotCXVfaW50MzJfdAlpYTQ2X3BhZDMyWzNdOworCXVpbnQzMl90CWlhNDZfcGFkMzJb
M107CiAJc3RydWN0CWluX2FkZHIJaWE0Nl9hZGRyNDsKIH07CiAKQEAgLTY1LDggKzYzLDggQEAg
c3RydWN0IGluX2FkZHJfNGluNiB7CiAgKiBzb21lIGV4dHJhIHBhZGRpbmcgdG8gYWNjb21wbGlz
aCB0aGlzLgogICovCiBzdHJ1Y3QgaW5fZW5kcG9pbnRzIHsKLQl1X2ludDE2X3QJaWVfZnBvcnQ7
CQkvKiBmb3JlaWduIHBvcnQgKi8KLQl1X2ludDE2X3QJaWVfbHBvcnQ7CQkvKiBsb2NhbCBwb3J0
ICovCisJdWludDE2X3QJaWVfZnBvcnQ7CQkvKiBmb3JlaWduIHBvcnQgKi8KKwl1aW50MTZfdAlp
ZV9scG9ydDsJCS8qIGxvY2FsIHBvcnQgKi8KIAkvKiBwcm90b2NvbCBkZXBlbmRlbnQgcGFydCwg
bG9jYWwgYW5kIGZvcmVpZ24gYWRkciAqLwogCXVuaW9uIHsKIAkJLyogZm9yZWlnbiBob3N0IHRh
YmxlIGVudHJ5ICovCkBAIC04OSw5ICs4Nyw5IEBAIHN0cnVjdCBpbl9lbmRwb2ludHMgewogICog
cmVmZXJlbmNlcy4KICAqLwogc3RydWN0IGluX2Nvbm5pbmZvIHsKLQl1X2ludDhfdAlpbmNfZmxh
Z3M7Ci0JdV9pbnQ4X3QJaW5jX2xlbjsKLQl1X2ludDE2X3QJaW5jX3BhZDsJLyogWFhYIGFsaWdu
bWVudCBmb3IgaW5fZW5kcG9pbnRzICovCisJdWludDhfdAlpbmNfZmxhZ3M7CisJdWludDhfdAlp
bmNfbGVuOworCXVpbnQxNl90CWluY19wYWQ7CS8qIFhYWCBhbGlnbm1lbnQgZm9yIGluX2VuZHBv
aW50cyAqLwogCS8qIHByb3RvY29sIGRlcGVuZGVudCBwYXJ0ICovCiAJc3RydWN0CWluX2VuZHBv
aW50cyBpbmNfaWU7CiB9OwpAQCAtMTEyLDcgKzExMCw3IEBAIHN0cnVjdCBpbnBjYiB7CiAJc3Ry
dWN0CWlucGNiaW5mbyAqaW5wX3BjYmluZm87CS8qIFBDQiBsaXN0IGluZm8gKi8KIAlzdHJ1Y3QJ
c29ja2V0ICppbnBfc29ja2V0OwkvKiBiYWNrIHBvaW50ZXIgdG8gc29ja2V0ICovCiAKLQl1X2lu
dDMyX3QJaW5wX2Zsb3c7CisJdWludDMyX3QJaW5wX2Zsb3c7CiAJaW50CWlucF9mbGFnczsJCS8q
IGdlbmVyaWMgSVAvZGF0YWdyYW0gZmxhZ3MgKi8KIAogCXVfY2hhcglpbnBfdmZsYWc7CQkvKiBJ
UCB2ZXJzaW9uIGZsYWcgKHY0L3Y2KSAqLwpAQCAtMzI2LDEzICszMjQsMTEgQEAgc3RydWN0IGlu
cGNiaW5mbyB7CiAKICNkZWZpbmUJSU5QTE9PS1VQX1dJTERDQVJECTEKICNkZWZpbmUJc290b2lu
cGNiKHNvKQkoKHN0cnVjdCBpbnBjYiAqKShzbyktPnNvX3BjYikKLSNkZWZpbmUJc290b2luNnBj
YihzbykJc290b2lucGNiKHNvKSAvKiBmb3IgS0FNRSBzcmMgc3luYyBvdmVyIEJTRConcyAqLwog
CiAjZGVmaW5lCUlOUF9TT0NLQUYoc28pIHNvLT5zb19wcm90by0+cHJfZG9tYWluLT5kb21fZmFt
aWx5CiAKICNkZWZpbmUJSU5QX0NIRUNLX1NPQ0tBRihzbywgYWYpCShJTlBfU09DS0FGKHNvKSA9
PSBhZikKIAotLyogI2lmZGVmIF9LRVJORUwgKi8KIGV4dGVybiBpbnQJaXBwb3J0X3Jlc2VydmVk
aGlnaDsKIGV4dGVybiBpbnQJaXBwb3J0X3Jlc2VydmVkbG93OwogZXh0ZXJuIGludAlpcHBvcnRf
bG93Zmlyc3RhdXRvOwpAQCAtMzczLDYgKzM2OSw1IEBAIHZvaWQJaXBwb3J0X3RpY2sodm9pZCAq
eHRwKTsKICAqLwogdm9pZAlkYl9wcmludF9pbnBjYihzdHJ1Y3QgaW5wY2IgKmlucCwgY29uc3Qg
Y2hhciAqbmFtZSwgaW50IGluZGVudCk7CiAKLS8qICNlbmRpZiAgX0tFUk5FTCAqLwogCiAjZW5k
aWYgLyogIV9ORVRJTkVUX0lOX1BDQl9IXyAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0
cGxpYi91c2VyX2lwNl92YXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9pcDZfdmFyLmgK
b2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCBmNWU0YTYwZTRmMjdjNTZlNjZh
YjEzOTNlYzBhNjgxY2ViNzkxZWEyLi5lMWM4ZjI0MTU2NGUxNjVlZWM0ZjBjMzE2NzllODA3OWUy
MzFjMTIwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9pcDZfdmFyLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNj
dHBsaWIvdXNyc2N0cGxpYi91c2VyX2lwNl92YXIuaApAQCAtNjAsMTYgKzYwLDE2IEBACiAjaWZu
ZGVmIF9VU0VSX0lQNl9WQVJfSF8KICNkZWZpbmUgX1VTRVJfSVA2X1ZBUl9IXwogCi0jaWYgZGVm
aW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogc3RydWN0
IGlwNl9oZHIgewogCXVuaW9uIHsKIAkJc3RydWN0IGlwNl9oZHJjdGwgewotCQkJdV9pbnQzMl90
IGlwNl91bjFfZmxvdzsJLyogMjAgYml0cyBvZiBmbG93LUlEICovCi0JCQl1X2ludDE2X3QgaXA2
X3VuMV9wbGVuOwkvKiBwYXlsb2FkIGxlbmd0aCAqLwotCQkJdV9pbnQ4X3QgIGlwNl91bjFfbnh0
OwkvKiBuZXh0IGhlYWRlciAqLwotCQkJdV9pbnQ4X3QgIGlwNl91bjFfaGxpbTsJLyogaG9wIGxp
bWl0ICovCisJCQl1aW50MzJfdCBpcDZfdW4xX2Zsb3c7CS8qIDIwIGJpdHMgb2YgZmxvdy1JRCAq
LworCQkJdWludDE2X3QgaXA2X3VuMV9wbGVuOwkvKiBwYXlsb2FkIGxlbmd0aCAqLworCQkJdWlu
dDhfdCAgaXA2X3VuMV9ueHQ7CS8qIG5leHQgaGVhZGVyICovCisJCQl1aW50OF90ICBpcDZfdW4x
X2hsaW07CS8qIGhvcCBsaW1pdCAqLwogCQl9IGlwNl91bjE7Ci0JCXVfaW50OF90IGlwNl91bjJf
dmZjOwkvKiA0IGJpdHMgdmVyc2lvbiwgdG9wIDQgYml0cyBjbGFzcyAqLworCQl1aW50OF90IGlw
Nl91bjJfdmZjOwkvKiA0IGJpdHMgdmVyc2lvbiwgdG9wIDQgYml0cyBjbGFzcyAqLwogCX0gaXA2
X2N0bHVuOwogCXN0cnVjdCBpbjZfYWRkciBpcDZfc3JjOwkvKiBzb3VyY2UgYWRkcmVzcyAqLwog
CXN0cnVjdCBpbjZfYWRkciBpcDZfZHN0OwkvKiBkZXN0aW5hdGlvbiBhZGRyZXNzICovCkBAIC04
NCwxOCArODQsMTggQEAgc3RydWN0IGlwNl9oZHIgewogI2RlZmluZSBJUFY2X1ZFUlNJT04JCTB4
NjAKICNlbmRpZgogCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRl
ZmluZWQoX1dJTjMyKQogI2RlZmluZSBzNl9hZGRyMTYgdS5Xb3JkCiAjZW5kaWYKLSNpZiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQotI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29z
X0xpbnV4KQorI2lmICFkZWZpbmVkKF9XSU4zMikKKyNpZiAhZGVmaW5lZChfX2xpbnV4X18pCiAj
ZGVmaW5lIHM2X2FkZHI4ICBfX3U2X2FkZHIuX191Nl9hZGRyOAogI2RlZmluZSBzNl9hZGRyMTYg
X191Nl9hZGRyLl9fdTZfYWRkcjE2CiAjZGVmaW5lIHM2X2FkZHIzMiBfX3U2X2FkZHIuX191Nl9h
ZGRyMzIKICNlbmRpZgogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19GcmVl
QlNEKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19PcGVuQlNEKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9vc19EcmFnb25GbHkpCisjaWYgIWRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fT3BlbkJTRF9fKSAmJiAhZGVmaW5lZChfX0RyYWdvbkZseV9fKQogc3RydWN0IHJvdXRl
X2luNiB7CiAJc3RydWN0CXJ0ZW50cnkgKnJvX3J0OwogCXN0cnVjdAlsbGVudHJ5ICpyb19sbGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfaXBfaWNtcC5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBs
aWIvdXNyc2N0cGxpYi91c2VyX2lwX2ljbXAuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAw
NzU1CmluZGV4IGY2ZmQ1NDg3ZTJiY2UzYzBhZWI4MThhNmFlNGNiZTEyM2ZhODU0NGQuLjA0OTMx
NGUyMDUwMjUwMWRkNTc3YTk2NWQ4YmJjZDk4NDNkZWFiNDIKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0
cGxpYi91c2VyX2lwX2ljbXAuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfaXBfaWNt
cC5oCkBAIC00MCw4ICs0MCw4IEBACiAgKiBJbnRlcm5hbCBvZiBhbiBJQ01QIFJvdXRlciBBZHZl
cnRpc2VtZW50CiAgKi8KIHN0cnVjdCBpY21wX3JhX2FkZHIgewotCXVfaW50MzJfdCBpcmFfYWRk
cjsKLQl1X2ludDMyX3QgaXJhX3ByZWZlcmVuY2U7CisJdWludDMyX3QgaXJhX2FkZHI7CisJdWlu
dDMyX3QgaXJhX3ByZWZlcmVuY2U7CiB9OwogCiAvKgpAQCAtNTMsMTYgKzUzLDE2IEBAIHN0cnVj
dCBpY21waGRyIHsKIAl1X3Nob3J0CWljbXBfY2tzdW07CQkvKiBvbmVzIGNvbXBsZW1lbnQgY2tz
dW0gb2Ygc3RydWN0ICovCiB9OwogCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dz
KQorI2lmIGRlZmluZWQoX1dJTjMyKQogI3ByYWdtYSBwYWNrIChwdXNoLCAxKQogc3RydWN0IGlj
bXA2X2hkciB7Ci0JdV9pbnQ4X3QgaWNtcDZfdHlwZTsKLQl1X2ludDhfdCBpY21wNl9jb2RlOwot
CXVfaW50MTZfdCBpY21wNl9ja3N1bTsKKwl1aW50OF90IGljbXA2X3R5cGU7CisJdWludDhfdCBp
Y21wNl9jb2RlOworCXVpbnQxNl90IGljbXA2X2Nrc3VtOwogCXVuaW9uIHsKLQkJdV9pbnQzMl90
IGljbXA2X3VuX2RhdGEzMlsxXTsKLQkJdV9pbnQxNl90IGljbXA2X3VuX2RhdGExNlsyXTsKLQkJ
dV9pbnQ4X3QgaWNtcDZfdW5fZGF0YThbNF07CisJCXVpbnQzMl90IGljbXA2X3VuX2RhdGEzMlsx
XTsKKwkJdWludDE2X3QgaWNtcDZfdW5fZGF0YTE2WzJdOworCQl1aW50OF90IGljbXA2X3VuX2Rh
dGE4WzRdOwogCX0gaWNtcDZfZGF0YXVuOwogfTsKICNwcmFnbWEgcGFjayhwb3ApCkBAIC05OCw3
ICs5OCw3IEBAIHN0cnVjdCBpY21wIHsKIAkJc3RydWN0IGloX3J0cmFkdiB7CiAJCQl1X2NoYXIg
aXJ0X251bV9hZGRyczsKIAkJCXVfY2hhciBpcnRfd3BhOwotCQkJdV9pbnQxNl90IGlydF9saWZl
dGltZTsKKwkJCXVpbnQxNl90IGlydF9saWZldGltZTsKIAkJfSBpaF9ydHJhZHY7CiAJfSBpY21w
X2h1bjsKICNkZWZpbmUJaWNtcF9wcHRyCWljbXBfaHVuLmloX3BwdHIKQEAgLTEyNiw3ICsxMjYs
NyBAQCBzdHJ1Y3QgaWNtcCB7CiAJCQkvKiBvcHRpb25zIGFuZCB0aGVuIDY0IGJpdHMgb2YgZGF0
YSAqLwogCQl9IGlkX2lwOwogCQlzdHJ1Y3QgaWNtcF9yYV9hZGRyIGlkX3JhZHY7Ci0JCXVfaW50
MzJfdCBpZF9tYXNrOworCQl1aW50MzJfdCBpZF9tYXNrOwogCQljaGFyCWlkX2RhdGFbMV07CiAJ
fSBpY21wX2R1bjsKICNkZWZpbmUJaWNtcF9vdGltZQlpY21wX2R1bi5pZF90cy5pdHNfb3RpbWUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9tYWxsb2MuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L3VzcnNjdHBsaWIvdXNlcl9tYWxsb2MuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1
CmluZGV4IDczOTA0Y2E1YjQ3YmJiNThiOGZiNmI5ZjZiYmM0NDRmZDZkMjIxMTkuLjE2MTI0NTIx
Njg0NzI5YTNiZDM3MjYwZGFjMDczNDE5NDA3NzE5ZDcKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxp
Yi91c2VyX21hbGxvYy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9tYWxsb2MuaApA
QCAtMzcsMTEgKzM3LDExIEBACiAvKl9fVXNlcnNwYWNlX18qLwogI2luY2x1ZGUgPHN0ZGxpYi5o
PgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmICFkZWZpbmVkIChfX1VzZXJzcGFjZV9vc19X
aW5kb3dzKQorI2lmICFkZWZpbmVkKF9XSU4zMikKICNpbmNsdWRlIDxzdHJpbmdzLmg+CiAjaW5j
bHVkZSA8c3RkaW50Lmg+CiAjZWxzZQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVS
ID49IDE2MDAKKyNpZiAoZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPj0gMTYwMCkgfHwg
KGRlZmluZWQoX19NU1ZDUlRfVkVSU0lPTl9fKSAmJiBfX01TVkNSVF9WRVJTSU9OX18gPj0gMTQw
MCkKICNpbmNsdWRlIDxzdGRpbnQuaD4KICNlbGlmIGRlZmluZWQoU0NUUF9TVERJTlRfSU5DTFVE
RSkKICNpbmNsdWRlIFNDVFBfU1RESU5UX0lOQ0xVREUKQEAgLTIwMCw2NyArMjAwLDQgQEAgU3Rh
cnQgY29weTogQ29waWVkIGNvZGUgZm9yIF9fVXNlcnNwYWNlX18gKi8KIAl9CQkJCQkJCQlcCiAg
ICAgfSB3aGlsZSAoMCk7CiAKLQotLyogRW5kIGNvcHk6IENvcGllZCBjb2RlIGZvciBfX1VzZXJz
cGFjZV9fICovCi0KLSNpZiAwCi0jaWZkZWYgX0tFUk5FTAotI2RlZmluZQlNQUxMT0NfREVGSU5F
KHR5cGUsIHNob3J0ZGVzYywgbG9uZ2Rlc2MpCQkJXAotCXN0cnVjdCBtYWxsb2NfdHlwZSB0eXBl
WzFdID0gewkJCQkJXAotCQl7IE5VTEwsIDAsIDAsIDAsIDAsIDAsIE1fTUFHSUMsIHNob3J0ZGVz
YywgTlVMTCwgTlVMTCwJXAotCQkgICAgTlVMTCwgMCwgTlVMTCwgTlVMTCwgMCwgMCB9CQkJCVwK
LQl9OwkJCQkJCQkJXAotCVNZU0lOSVQodHlwZSMjX2luaXQsIFNJX1NVQl9LTUVNLCBTSV9PUkRF
Ul9TRUNPTkQsIG1hbGxvY19pbml0LAlcCi0JICAgIHR5cGUpOwkJCQkJCQlcCi0JU1lTVU5JTklU
KHR5cGUjI191bmluaXQsIFNJX1NVQl9LTUVNLCBTSV9PUkRFUl9BTlksCQlcCi0JICAgIG1hbGxv
Y191bmluaXQsIHR5cGUpCi0KLQotI2RlZmluZQlNQUxMT0NfREVDTEFSRSh0eXBlKSBcCi0JZXh0
ZXJuIHN0cnVjdCBtYWxsb2NfdHlwZSB0eXBlWzFdCi0KLU1BTExPQ19ERUNMQVJFKE1fQ0FDSEUp
OwotTUFMTE9DX0RFQ0xBUkUoTV9ERVZCVUYpOwotTUFMTE9DX0RFQ0xBUkUoTV9URU1QKTsKLQot
TUFMTE9DX0RFQ0xBUkUoTV9JUDZPUFQpOyAvKiBmb3IgSU5FVDYgKi8KLU1BTExPQ19ERUNMQVJF
KE1fSVA2TkRQKTsgLyogZm9yIElORVQ2ICovCi0KLS8qCi0gKiBEZXByZWNhdGVkIG1hY3JvIHZl
cnNpb25zIG9mIG5vdC1xdWl0ZS1tYWxsb2MoKSBhbmQgZnJlZSgpLgotICovCi0jZGVmaW5lCU1B
TExPQyhzcGFjZSwgY2FzdCwgc2l6ZSwgdHlwZSwgZmxhZ3MpIFwKLQkoKHNwYWNlKSA9IChjYXN0
KW1hbGxvYygodV9sb25nKShzaXplKSwgKHR5cGUpLCAoZmxhZ3MpKSkKLSNkZWZpbmUJRlJFRShh
ZGRyLCB0eXBlKSBmcmVlKChhZGRyKSwgKHR5cGUpKQotCi0vKgotICogWFhYIHRoaXMgc2hvdWxk
IGJlIGRlY2xhcmVkIGluIDxzeXMvdWlvLmg+LCBidXQgdGhhdCB0ZW5kcyB0byBmYWlsCi0gKiBi
ZWNhdXNlIDxzeXMvdWlvLmg+IGlzIGluY2x1ZGVkIGluIGEgaGVhZGVyIGJlZm9yZSB0aGUgc291
cmNlIGZpbGUKLSAqIGhhcyBhIGNoYW5jZSB0byBpbmNsdWRlIDxzeXMvbWFsbG9jLmg+IHRvIGdl
dCBNQUxMT0NfREVDTEFSRSgpIGRlZmluZWQuCi0gKi8KLU1BTExPQ19ERUNMQVJFKE1fSU9WKTsK
LQotZXh0ZXJuIHN0cnVjdCBtdHggbWFsbG9jX210eDsKLQotLyogWFhYIHN0cnVjdCBtYWxsb2Nf
dHlwZSBpcyB1bnVzZWQgZm9yIGNvbnRpZyooKS4gKi8KLXZvaWQJY29udGlnZnJlZSh2b2lkICph
ZGRyLCB1bnNpZ25lZCBsb25nIHNpemUsIHN0cnVjdCBtYWxsb2NfdHlwZSAqdHlwZSk7Ci12b2lk
CSpjb250aWdtYWxsb2ModW5zaWduZWQgbG9uZyBzaXplLCBzdHJ1Y3QgbWFsbG9jX3R5cGUgKnR5
cGUsIGludCBmbGFncywKLQkgICAgdm1fcGFkZHJfdCBsb3csIHZtX3BhZGRyX3QgaGlnaCwgdW5z
aWduZWQgbG9uZyBhbGlnbm1lbnQsCi0JICAgIHVuc2lnbmVkIGxvbmcgYm91bmRhcnkpOwotdm9p
ZAlmcmVlKHZvaWQgKmFkZHIsIHN0cnVjdCBtYWxsb2NfdHlwZSAqdHlwZSk7Ci12b2lkCSptYWxs
b2ModW5zaWduZWQgbG9uZyBzaXplLCBzdHJ1Y3QgbWFsbG9jX3R5cGUgKnR5cGUsIGludCBmbGFn
cyk7Ci12b2lkCW1hbGxvY19pbml0KHZvaWQgKik7Ci1pbnQJbWFsbG9jX2xhc3RfZmFpbCh2b2lk
KTsKLXZvaWQJbWFsbG9jX3R5cGVfYWxsb2NhdGVkKHN0cnVjdCBtYWxsb2NfdHlwZSAqdHlwZSwg
dW5zaWduZWQgbG9uZyBzaXplKTsKLXZvaWQJbWFsbG9jX3R5cGVfZnJlZWQoc3RydWN0IG1hbGxv
Y190eXBlICp0eXBlLCB1bnNpZ25lZCBsb25nIHNpemUpOwotdm9pZAltYWxsb2NfdW5pbml0KHZv
aWQgKik7Ci12b2lkCSpyZWFsbG9jKHZvaWQgKmFkZHIsIHVuc2lnbmVkIGxvbmcgc2l6ZSwgc3Ry
dWN0IG1hbGxvY190eXBlICp0eXBlLAotCSAgICBpbnQgZmxhZ3MpOwotdm9pZAkqcmVhbGxvY2Yo
dm9pZCAqYWRkciwgdW5zaWduZWQgbG9uZyBzaXplLCBzdHJ1Y3QgbWFsbG9jX3R5cGUgKnR5cGUs
Ci0JICAgIGludCBmbGFncyk7Ci0KLQotI2VuZGlmIC8qIF9LRVJORUwgKi8KLSNlbmRpZgotCiAj
ZW5kaWYgLyogIV9TWVNfTUFMTE9DX0hfICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3Rw
bGliL3VzZXJfbWJ1Zi5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX21idWYuYwpvbGQgbW9k
ZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGE2M2E4ODliNzUxM2ViYzU5YzlmODZmNmI1
ZTQzMzFmOWZhNWEyNjUuLjllNTY2ZTMwMjU5MDkwMmJiZjk5MDM3MGY3ZDliOTFkZmQ2NjNiOWMK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3Jz
Y3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX21idWYuYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3Jz
Y3RwbGliL3VzZXJfbWJ1Zi5jCkBAIC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSAidXNlcl9hdG9t
aWMuaCIKICNpbmNsdWRlICJuZXRpbmV0L3NjdHBfcGNiLmgiCiAKLXN0cnVjdCBtYnN0YXQgbWJz
dGF0OwogI2RlZmluZSBLSVBDX01BWF9MSU5LSERSICAgICAgICA0ICAgICAgIC8qIGludDogbWF4
IGxlbmd0aCBvZiBsaW5rIGhlYWRlciAoc2VlIHN5cy9zeXNjbHQuaCkgKi8KICNkZWZpbmUgS0lQ
Q19NQVhfUFJPVE9IRFIJNQkvKiBpbnQ6IG1heCBsZW5ndGggb2YgbmV0d29yayBoZWFkZXIgKHNl
ZSBzeXMvc3lzY2x0LmgpKi8KIGludCBtYXhfbGlua2hkciA9IEtJUENfTUFYX0xJTktIRFI7CkBA
IC0yNzIsOSArMjcxLDkgQEAgbV9jbGdldChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGhvdykKIAkJbWNs
dXN0X3JldCA9IFNDVFBfWk9ORV9HRVQoem9uZV9jbHVzdCwgY2hhcik7CiAjZW5kaWYKIAkJLypt
Y2x1c3RfcmV0ID0gdW1lbV9jYWNoZV9hbGxvYyh6b25lX2NsdXN0LCBVTUVNX0RFRkFVTFQpOyov
Ci0JCWlmIChOVUxMID09IG1jbHVzdF9yZXQpIHsKLQkJCVNDVFBEQkcoU0NUUF9ERUJVR19VU1Is
ICJNZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlIGluICVzXG4iLCBfX2Z1bmNfXyk7Ci0JCX0KKwkJ
LyogaWYgKE5VTEwgPT0gbWNsdXN0X3JldCkgeyAqLworCQlTQ1RQREJHKFNDVFBfREVCVUdfVVNS
LCAiTWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZSBpbiAlc1xuIiwgX19mdW5jX18pOworCQkvKiB9
ICovCiAJfQogCiAjaWYgVVNJTkdfTUJVRl9DT05TVFJVQ1RPUgpAQCAtMjkwLDcgKzI4OSw3IEBA
IHN0cnVjdCBtYnVmICoKIG1fZ2V0bTIoc3RydWN0IG1idWYgKm0sIGludCBsZW4sIGludCBob3cs
IHNob3J0IHR5cGUsIGludCBmbGFncywgaW50IGFsbG9uZWJ1ZikKIHsKIAlzdHJ1Y3QgbWJ1ZiAq
bWIsICpubSA9IE5VTEwsICptdGFpbCA9IE5VTEw7Ci0JaW50IHNpemUgPSAwLCBtYnVmX3RocmVz
aG9sZCwgc3BhY2VfbmVlZGVkID0gbGVuOworCWludCBzaXplLCBtYnVmX3RocmVzaG9sZCwgc3Bh
Y2VfbmVlZGVkID0gbGVuOwogCiAJS0FTU0VSVChsZW4gPj0gMCwgKCIlczogbGVuIGlzIDwgMCIs
IF9fZnVuY19fKSk7CiAKQEAgLTMxMyw3ICszMTIsNyBAQCBtX2dldG0yKHN0cnVjdCBtYnVmICpt
LCBpbnQgbGVuLCBpbnQgaG93LCBzaG9ydCB0eXBlLCBpbnQgZmxhZ3MsIGludCBhbGxvbmVidWYp
CiAJCQltYiA9IG1fZ2V0aGRyKGhvdywgdHlwZSk7CiAJCQlNQ0xHRVQobWIsIGhvdyk7CiAJCQlz
aXplID0gTUNMQllURVM7Ci0JCQkvL1NDVFBfQlVGX0xFTihtYikgPSBNQ0xCWVRFUzsKKwkJCS8q
IFNDVFBfQlVGX0xFTihtYikgPSBNQ0xCWVRFUzsgKi8KIAkJfSBlbHNlIGlmIChmbGFncyAmIE1f
UEtUSERSKSB7CiAJCQltYiA9IG1fZ2V0aGRyKGhvdywgdHlwZSk7CiAJCQlpZiAobGVuIDwgTUhM
RU4pIHsKQEAgLTMzOCw3ICszMzcsNyBAQCBtX2dldG0yKHN0cnVjdCBtYnVmICptLCBpbnQgbGVu
LCBpbnQgaG93LCBzaG9ydCB0eXBlLCBpbnQgZmxhZ3MsIGludCBhbGxvbmVidWYpCiAJCX0KIAog
CQlpZiAoYWxsb25lYnVmICE9IDAgJiYgc2l6ZSA8IHNwYWNlX25lZWRlZCkgewotCQkJbV9mcmVl
bShtKTsKKwkJCW1fZnJlZW0obWIpOwogCQkJcmV0dXJuIChOVUxMKTsKIAkJfQogCkBAIC00NzMs
NyArNDcyLDcgQEAgbV90YWdfZnJlZShzdHJ1Y3QgbV90YWcgKnQpCiAgKiBYWFggcHJvYmFibHkg
c2hvdWxkIGJlIGNhbGxlZCBtX3RhZ19pbml0LCBidXQgdGhhdCB3YXMgYWxyZWFkeSB0YWtlbi4K
ICAqLwogc3RhdGljIF9faW5saW5lIHZvaWQKLW1fdGFnX3NldHVwKHN0cnVjdCBtX3RhZyAqdCwg
dV9pbnQzMl90IGNvb2tpZSwgaW50IHR5cGUsIGludCBsZW4pCittX3RhZ19zZXR1cChzdHJ1Y3Qg
bV90YWcgKnQsIHVpbnQzMl90IGNvb2tpZSwgaW50IHR5cGUsIGludCBsZW4pCiB7CiAKIAl0LT5t
X3RhZ19pZCA9IHR5cGU7CkBAIC01MzYsMjYgKzUzNSw2IEBAIG1idWZfaW5pdGlhbGl6ZSh2b2lk
ICpkdW1teSkKIAkgKgogCSAqLwogCi0KLQkvKgotCSAqIFtSZV1zZXQgY291bnRlcnMgYW5kIGxv
Y2FsIHN0YXRpc3RpY3Mga25vYnMuCi0JICoKLQkgKi8KLQotCW1ic3RhdC5tX21idWZzID0gMDsK
LQltYnN0YXQubV9tY2x1c3RzID0gMDsKLQltYnN0YXQubV9kcmFpbiA9IDA7Ci0JbWJzdGF0Lm1f
bXNpemUgPSBNU0laRTsKLQltYnN0YXQubV9tY2xieXRlcyA9IE1DTEJZVEVTOwotCW1ic3RhdC5t
X21pbmNsc2l6ZSA9IE1JTkNMU0laRTsKLQltYnN0YXQubV9tbGVuID0gTUxFTjsKLQltYnN0YXQu
bV9taGxlbiA9IE1ITEVOOwotCW1ic3RhdC5tX251bXR5cGVzID0gTVRfTlRZUEVTOwotCi0JbWJz
dGF0Lm1fbWNmYWlsID0gbWJzdGF0Lm1fbXBmYWlsID0gMDsKLQltYnN0YXQuc2ZfaW9jbnQgPSAw
OwotCW1ic3RhdC5zZl9hbGxvY3dhaXQgPSBtYnN0YXQuc2ZfYWxsb2NmYWlsID0gMDsKLQogfQog
CiAKQEAgLTkwOSw3ICs4ODgsNiBAQCBtX3B1bGx1cChzdHJ1Y3QgbWJ1ZiAqbiwgaW50IGxlbikK
IAlyZXR1cm4gKG0pOwogYmFkOgogCW1fZnJlZW0obik7Ci0JbWJzdGF0Lm1fbXBmYWlsKys7CS8q
IFhYWDogTm8gY29uc2lzdGVuY3kuICovCiAJcmV0dXJuIChOVUxMKTsKIH0KIApAQCAtMTA0NSwx
NiArMTAyMywxNCBAQCBtX3B1bGxkb3duKHN0cnVjdCBtYnVmICptLCBpbnQgb2ZmLCBpbnQgbGVu
LCBpbnQgKm9mZnApCiAJICogZWFzeSBjYXNlcyBmaXJzdC4KIAkgKiB3ZSBuZWVkIHRvIHVzZSBt
X2NvcHlkYXRhKCkgdG8gZ2V0IGRhdGEgZnJvbSA8bi0+bV9uZXh0LCAwPi4KIAkgKi8KLQlpZiAo
KG9mZiA9PSAwIHx8IG9mZnApICYmIE1fVFJBSUxJTkdTUEFDRShuKSA+PSB0bGVuCi0JICAgICYm
IHdyaXRhYmxlKSB7CisJaWYgKChvZmYgPT0gMCB8fCBvZmZwKSAmJiAoTV9UUkFJTElOR1NQQUNF
KG4pID49IHRsZW4pICYmIHdyaXRhYmxlKSB7CiAJCW1fY29weWRhdGEobi0+bV9uZXh0LCAwLCB0
bGVuLCBtdG9kKG4sIGNhZGRyX3QpICsgbi0+bV9sZW4pOwogCQluLT5tX2xlbiArPSB0bGVuOwog
CQltX2FkaihuLT5tX25leHQsIHRsZW4pOwogCQlnb3RvIG9rOwogCX0KIAotCWlmICgob2ZmID09
IDAgfHwgb2ZmcCkgJiYgTV9MRUFESU5HU1BBQ0Uobi0+bV9uZXh0KSA+PSBobGVuCi0JICAgICYm
IHdyaXRhYmxlKSB7CisJaWYgKChvZmYgPT0gMCB8fCBvZmZwKSAmJiAoTV9MRUFESU5HU1BBQ0Uo
bi0+bV9uZXh0KSA+PSBobGVuKSAmJiB3cml0YWJsZSkgewogCQluLT5tX25leHQtPm1fZGF0YSAt
PSBobGVuOwogCQluLT5tX25leHQtPm1fbGVuICs9IGhsZW47CiAJCW1lbWNweSggbXRvZChuLT5t
X25leHQsIGNhZGRyX3QpLCBtdG9kKG4sIGNhZGRyX3QpICsgb2ZmLGhsZW4pOwpAQCAtMTE5OCwx
MyArMTE3NCwxMCBAQCBtX2NvcHltKHN0cnVjdCBtYnVmICptLCBpbnQgb2ZmMCwgaW50IGxlbiwg
aW50IHdhaXQpCiAJCW0gPSBtLT5tX25leHQ7CiAJCW5wID0gJm4tPm1fbmV4dDsKIAl9Ci0JaWYg
KHRvcCA9PSBOVUxMKQotCQltYnN0YXQubV9tY2ZhaWwrKzsJLyogWFhYOiBObyBjb25zaXN0ZW5j
eS4gKi8KIAogCXJldHVybiAodG9wKTsKIG5vc3BhY2U6CiAJbV9mcmVlbSh0b3ApOwotCW1ic3Rh
dC5tX21jZmFpbCsrOwkvKiBYWFg6IE5vIGNvbnNpc3RlbmN5LiAqLwogCXJldHVybiAoTlVMTCk7
CiB9CiAKQEAgLTEyNjYsNyArMTIzOSw3IEBAIG1fdGFnX2NvcHkoc3RydWN0IG1fdGFnICp0LCBp
bnQgaG93KQogCiAvKiBHZXQgYSBwYWNrZXQgdGFnIHN0cnVjdHVyZSBhbG9uZyB3aXRoIHNwZWNp
ZmllZCBkYXRhIGZvbGxvd2luZy4gKi8KIHN0cnVjdCBtX3RhZyAqCi1tX3RhZ19hbGxvYyh1X2lu
dDMyX3QgY29va2llLCBpbnQgdHlwZSwgaW50IGxlbiwgaW50IHdhaXQpCittX3RhZ19hbGxvYyh1
aW50MzJfdCBjb29raWUsIGludCB0eXBlLCBpbnQgbGVuLCBpbnQgd2FpdCkKIHsKIAlzdHJ1Y3Qg
bV90YWcgKnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9tYnVmLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAv
dXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfbWJ1Zi5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9k
ZSAxMDA3NTUKaW5kZXggOWM1ZDBkN2VmNDVhMmQ5Y2ZjZDc5ZDlmNWM4NzlhMTlkZmQxNjY2Zi4u
YzExYjM4YzljYjEyZTZlYzRhODg5MTdhZDlkZDgwZDJhMThjMWYyYgotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91
c3JzY3RwbGliL3VzZXJfbWJ1Zi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9tYnVm
LmgKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkICAgICAgICAgICAgIG1fY2F0KHN0cnVjdCBtYnVm
ICptLCBzdHJ1Y3QgbWJ1ZiAqbik7CiB2b2lkCQkgbV9hZGooc3RydWN0IG1idWYgKiwgaW50KTsK
IHZvaWQgIG1iX2ZyZWVfZXh0KHN0cnVjdCBtYnVmICopOwogdm9pZCAgbV9mcmVlbShzdHJ1Y3Qg
bWJ1ZiAqKTsKLXN0cnVjdCBtX3RhZwkqbV90YWdfYWxsb2ModV9pbnQzMl90LCBpbnQsIGludCwg
aW50KTsKK3N0cnVjdCBtX3RhZwkqbV90YWdfYWxsb2ModWludDMyX3QsIGludCwgaW50LCBpbnQp
Owogc3RydWN0IG1idWYJKm1fY29weW0oc3RydWN0IG1idWYgKiwgaW50LCBpbnQsIGludCk7CiB2
b2lkCQkgbV9jb3B5YmFjayhzdHJ1Y3QgbWJ1ZiAqLCBpbnQsIGludCwgY2FkZHJfdCk7CiBzdHJ1
Y3QgbWJ1ZgkqbV9wdWxsdXAoc3RydWN0IG1idWYgKiwgaW50KTsKQEAgLTEyOCwzNSArMTI4LDYg
QEAgdm9pZAkJIG1fY29weWRhdGEoY29uc3Qgc3RydWN0IG1idWYgKiwgaW50LCBpbnQsIGNhZGRy
X3QpOwogI2RlZmluZQlNVF9OT0lOSVQJMjU1CS8qIE5vdCBhIHR5cGUgYnV0IGEgZmxhZyB0byBh
bGxvY2F0ZQogCQkJCSAgIGEgbm9uLWluaXRpYWxpemVkIG1idWYgKi8KIAotLyoKLSAqIEdlbmVy
YWwgbWJ1ZiBhbGxvY2F0b3Igc3RhdGlzdGljcyBzdHJ1Y3R1cmUuCi0gKiBfX1VzZXJzcGFjZV9f
IG1ic3RhdCBtYXkgYmUgdXNlZnVsIGZvciBnYXRoZXJpbmcgc3RhdGlzdGljcy4KLSAqIEluIHRo
ZSBrZXJuZWwgbWFueSBvZiB0aGVzZSBzdGF0aXN0aWNzIGFyZSBubyBsb25nZXIgdXNlZCBhcwot
ICogdGhleSB0cmFjayBhbGxvY2F0b3Igc3RhdGlzdGljcyB0aHJvdWdoIGtlcm5lbCBVTUEncyBi
dWlsdCBpbiBzdGF0aXN0aWNzIG1lY2hhbmlzbS4KLSAqLwotc3RydWN0IG1ic3RhdCB7Ci0JdV9s
b25nCW1fbWJ1ZnM7CS8qIFhYWCAqLwotCXVfbG9uZwltX21jbHVzdHM7CS8qIFhYWCAqLwotCi0J
dV9sb25nCW1fZHJhaW47CS8qIHRpbWVzIGRyYWluZWQgcHJvdG9jb2xzIGZvciBzcGFjZSAqLwot
CXVfbG9uZwltX21jZmFpbDsJLyogWFhYOiB0aW1lcyBtX2NvcHltIGZhaWxlZCAqLwotCXVfbG9u
ZwltX21wZmFpbDsJLyogWFhYOiB0aW1lcyBtX3B1bGx1cCBmYWlsZWQgKi8KLQl1X2xvbmcJbV9t
c2l6ZTsJLyogbGVuZ3RoIG9mIGFuIG1idWYgKi8KLQl1X2xvbmcJbV9tY2xieXRlczsJLyogbGVu
Z3RoIG9mIGFuIG1idWYgY2x1c3RlciAqLwotCXVfbG9uZwltX21pbmNsc2l6ZTsJLyogbWluIGxl
bmd0aCBvZiBkYXRhIHRvIGFsbG9jYXRlIGEgY2x1c3RlciAqLwotCXVfbG9uZwltX21sZW47CQkv
KiBsZW5ndGggb2YgZGF0YSBpbiBhbiBtYnVmICovCi0JdV9sb25nCW1fbWhsZW47CS8qIGxlbmd0
aCBvZiBkYXRhIGluIGEgaGVhZGVyIG1idWYgKi8KLQotCS8qIE51bWJlciBvZiBtYnR5cGVzIChn
aXZlcyAjIGVsZW1zIGluIG1idHlwZXNbXSBhcnJheTogKi8KLQlzaG9ydAltX251bXR5cGVzOwot
Ci0JLyogWFhYOiBTZW5kZmlsZSBzdGF0cyBzaG91bGQgZXZlbnR1YWxseSBtb3ZlIHRvIHRoZWly
IG93biBzdHJ1Y3QgKi8KLQl1X2xvbmcJc2ZfaW9jbnQ7CS8qIHRpbWVzIHNlbmRmaWxlIGhhZCB0
byBkbyBkaXNrIEkvTyAqLwotCXVfbG9uZwlzZl9hbGxvY2ZhaWw7CS8qIHRpbWVzIHNmYnVmIGFs
bG9jYXRpb24gZmFpbGVkICovCi0JdV9sb25nCXNmX2FsbG9jd2FpdDsJLyogdGltZXMgc2ZidWYg
YWxsb2NhdGlvbiBoYWQgdG8gd2FpdCAqLwotfTsKLQotCiAvKgogICogTWJ1ZnMgYXJlIG9mIGEg
c2luZ2xlIHNpemUsIE1TSVpFIChzeXMvcGFyYW0uaCksIHdoaWNoIGluY2x1ZGVzIG92ZXJoZWFk
LgogICogQW4gbWJ1ZiBtYXkgYWRkIGEgc2luZ2xlICJtYnVmIGNsdXN0ZXIiIG9mIHNpemUgTUNM
QllURVMgKGFsc28gaW4KQEAgLTE5MCw5ICsxNjEsOSBAQCBzdHJ1Y3QgbV9oZHIgewogICovCiBz
dHJ1Y3QgbV90YWcgewogCVNMSVNUX0VOVFJZKG1fdGFnKQltX3RhZ19saW5rOwkvKiBMaXN0IG9m
IHBhY2tldCB0YWdzICovCi0JdV9pbnQxNl90CQltX3RhZ19pZDsJLyogVGFnIElEICovCi0JdV9p
bnQxNl90CQltX3RhZ19sZW47CS8qIExlbmd0aCBvZiBkYXRhICovCi0JdV9pbnQzMl90CQltX3Rh
Z19jb29raWU7CS8qIEFCSS9Nb2R1bGUgSUQgKi8KKwl1aW50MTZfdAkJbV90YWdfaWQ7CS8qIFRh
ZyBJRCAqLworCXVpbnQxNl90CQltX3RhZ19sZW47CS8qIExlbmd0aCBvZiBkYXRhICovCisJdWlu
dDMyX3QJCW1fdGFnX2Nvb2tpZTsJLyogQUJJL01vZHVsZSBJRCAqLwogCXZvaWQJCQkoKm1fdGFn
X2ZyZWUpKHN0cnVjdCBtX3RhZyAqKTsKIH07CiAKQEAgLTIwNyw4ICsxNzgsOCBAQCBzdHJ1Y3Qg
cGt0aGRyIHsKIAkvKiB2YXJpYWJsZXMgZm9yIGhhcmR3YXJlIGNoZWNrc3VtICovCiAJaW50CQkg
Y3N1bV9mbGFnczsJLyogZmxhZ3MgcmVnYXJkaW5nIGNoZWNrc3VtICovCiAJaW50CQkgY3N1bV9k
YXRhOwkvKiBkYXRhIGZpZWxkIHVzZWQgYnkgY3N1bSByb3V0aW5lcyAqLwotCXVfaW50MTZfdAkg
dHNvX3NlZ3N6OwkvKiBUU08gc2VnbWVudCBzaXplICovCi0JdV9pbnQxNl90CSBldGhlcl92dGFn
OwkvKiBFdGhlcm5ldCA4MDIuMXArcSB2bGFuIHRhZyAqLworCXVpbnQxNl90CSB0c29fc2Vnc3o7
CS8qIFRTTyBzZWdtZW50IHNpemUgKi8KKwl1aW50MTZfdAkgZXRoZXJfdnRhZzsJLyogRXRoZXJu
ZXQgODAyLjFwK3EgdmxhbiB0YWcgKi8KIAlTTElTVF9IRUFEKHBhY2tldF90YWdzLCBtX3RhZykg
dGFnczsgLyogbGlzdCBvZiBwYWNrZXQgdGFncyAqLwogfTsKIApAQCAtMzUyLDkgKzMyMyw2IEBA
IHZvaWQJCSBtX3RhZ19mcmVlX2RlZmF1bHQoc3RydWN0IG1fdGFnICopOwogZXh0ZXJuIGludCBt
YXhfbGlua2hkcjsgICAgLyogTGFyZ2VzdCBsaW5rLWxldmVsIGhlYWRlciAqLwogZXh0ZXJuIGlu
dCBtYXhfcHJvdG9oZHI7IC8qIFNpemUgb2YgbGFyZ2VzdCBwcm90b2NvbCBsYXllciBoZWFkZXIu
IFNlZSB1c2VyX21idWYuYyAqLwogCi1leHRlcm4gc3RydWN0IG1ic3RhdAltYnN0YXQ7CQkvKiBH
ZW5lcmFsIG1idWYgc3RhdHMvaW5mb3MgKi8KLQotCiAvKgogICogRXZhbHVhdGUgVFJVRSBpZiBp
dCdzIHNhZmUgdG8gd3JpdGUgdG8gdGhlIG1idWYgbSdzIGRhdGEgcmVnaW9uICh0aGlzIGNhbgog
ICogYmUgYm90aCB0aGUgbG9jYWwgZGF0YSBwYXlsb2FkLCBvciBhbiBleHRlcm5hbCBidWZmZXIg
YXJlYSwgZGVwZW5kaW5nIG9uCkBAIC0zNzMsOSArMzQxLDkgQEAgZXh0ZXJuIHN0cnVjdCBtYnN0
YXQJbWJzdGF0OwkJLyogR2VuZXJhbCBtYnVmIHN0YXRzL2luZm9zICovCiAgKiBvZiBjaGVja2lu
ZyB3cml0YWJpbGl0eSBvZiB0aGUgbWJ1ZiBkYXRhIGFyZWEgcmVzdHMgc29sZWx5IHdpdGggdGhl
IGNhbGxlci4KICAqLwogI2RlZmluZQlNX0xFQURJTkdTUEFDRShtKQkJCQkJCVwKLQkoKG0pLT5t
X2ZsYWdzICYgTV9FWFQgPwkJCQkJCVwKKwkoKChtKS0+bV9mbGFncyAmIE1fRVhUKSA/CQkJCQlc
CiAJICAgIChNX1dSSVRBQkxFKG0pID8gKG0pLT5tX2RhdGEgLSAobSktPm1fZXh0LmV4dF9idWYg
OiAwKToJXAotCSAgICAobSktPm1fZmxhZ3MgJiBNX1BLVEhEUiA/IChtKS0+bV9kYXRhIC0gKG0p
LT5tX3BrdGRhdCA6CVwKKwkgICAgKChtKS0+bV9mbGFncyAmIE1fUEtUSERSKT8gKG0pLT5tX2Rh
dGEgLSAobSktPm1fcGt0ZGF0IDoJXAogCSAgICAobSktPm1fZGF0YSAtIChtKS0+bV9kYXQpCiAK
IC8qCkBAIC0zODUsNyArMzUzLDcgQEAgZXh0ZXJuIHN0cnVjdCBtYnN0YXQJbWJzdGF0OwkJLyog
R2VuZXJhbCBtYnVmIHN0YXRzL2luZm9zICovCiAgKiBvZiBjaGVja2luZyB3cml0YWJpbGl0eSBv
ZiB0aGUgbWJ1ZiBkYXRhIGFyZWEgcmVzdHMgc29sZWx5IHdpdGggdGhlIGNhbGxlci4KICAqLwog
I2RlZmluZQlNX1RSQUlMSU5HU1BBQ0UobSkJCQkJCQlcCi0JKChtKS0+bV9mbGFncyAmIE1fRVhU
ID8JCQkJCQlcCisJKCgobSktPm1fZmxhZ3MgJiBNX0VYVCkgPwkJCQkJXAogCSAgICAoTV9XUklU
QUJMRShtKSA/IChtKS0+bV9leHQuZXh0X2J1ZiArIChtKS0+bV9leHQuZXh0X3NpemUJXAogCQkt
ICgobSktPm1fZGF0YSArIChtKS0+bV9sZW4pIDogMCkgOgkJCVwKIAkgICAgJihtKS0+bV9kYXRb
TUxFTl0gLSAoKG0pLT5tX2RhdGEgKyAobSktPm1fbGVuKSkKQEAgLTQzNyw0ICs0MDUsOSBAQCBl
eHRlcm4gc3RydWN0IG1ic3RhdAltYnN0YXQ7CQkvKiBHZW5lcmFsIG1idWYgc3RhdHMvaW5mb3Mg
Ki8KIAkobSktPm1fZGF0YSArPSAoTUhMRU4gLSAobGVuKSkgJiB+KHNpemVvZihsb25nKSAtIDEp
OwkJXAogfSB3aGlsZSAoMCkKIAorI2RlZmluZSBNX1NJWkUobSkJCQkJCQlcCisJCSgoKG0pLT5t
X2ZsYWdzICYgTV9FWFQpID8gKG0pLT5tX2V4dC5leHRfc2l6ZSA6CVwKKwkJKChtKS0+bV9mbGFn
cyAmIE1fUEtUSERSKSA/IE1ITEVOIDoJCVwKKwkJTUxFTikKKwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAv
dXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfcXVldWUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIv
dXNlcl9xdWV1ZS5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggNDRmODk5
NDkwMjY2MTkwYjhjNzg2MWFiMDJiMjdmZjczMmIyMTdkZC4uY2RlMWNjZWNmMTUwMjQ0NWRjM2U2
MjMyOGYwNDk2MWM2NTE5YzBlOQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfcXVldWUu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3Vz
cnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfcXVldWUuaApAQCAtMTQ0LDggKzE0NCw4
IEBAIHN0cnVjdCBuYW1lIHsJCQkJCQkJCVwKICNkZWZpbmUJU0xJU1RfSEVBRF9JTklUSUFMSVpF
UihoZWFkKQkJCQkJXAogCXsgTlVMTCB9CiAKLSNpZiBkZWZpbmVkIChfX1VzZXJzcGFjZV9vc19X
aW5kb3dzKQotI2lmIGRlZmluZWQgKFNMSVNUX0VOVFJZKQorI2lmIGRlZmluZWQoX1dJTjMyKQor
I2lmIGRlZmluZWQoU0xJU1RfRU5UUlkpCiAjdW5kZWYgU0xJU1RfRU5UUlkKICNlbmRpZgogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfcmVjdl90aHJlYWQuYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9yZWN2X3RocmVhZC5jCm9sZCBtb2RlIDEwMDY0NApu
ZXcgbW9kZSAxMDA3NTUKaW5kZXggZWEwYzEwZWZkZjk2ZGU4YmViYjQwMmJlNmM0MjlhZGQwODNh
NzNlZC4uM2MxNjU3YjRhNjZlNzJiOGYyOGNiMjY0NGU0YzBhYjIwYjA0NjJjNQotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0
cGxpYi91c3JzY3RwbGliL3VzZXJfcmVjdl90aHJlYWQuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3Rw
bGliL3VzZXJfcmVjdl90aHJlYWQuYwpAQCAtMzAsMTIgKzMwLDEyIEBACiAKICNpZiBkZWZpbmVk
KElORVQpIHx8IGRlZmluZWQoSU5FVDYpCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiAhZGVmaW5lZChfV0lOMzIpCiAjaW5j
bHVkZSA8c3lzL3NvY2tldC5oPgogI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KICNpbmNsdWRlIDx1
bmlzdGQuaD4KICNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
b3NfRHJhZ29uRmx5KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19GcmVlQlNEKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9vc19OZXRCU0QpCisjaWYgIWRlZmluZWQoX19EcmFnb25GbHlfXykg
JiYgIWRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fTmV0QlNEX18pCiAjaW5jbHVk
ZSA8c3lzL3Vpby5oPgogI2Vsc2UKICNpbmNsdWRlIDx1c2VyX2lwNl92YXIuaD4KQEAgLTQ2LDcg
KzQ2LDcgQEAKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfcGNiLmg+CiAjaW5jbHVkZSA8bmV0aW5l
dC9zY3RwX2lucHV0Lmg+CiAjaWYgMAotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfTGludXgp
CisjaWYgZGVmaW5lZChfX2xpbnV4X18pCiAjaW5jbHVkZSA8bGludXgvbmV0bGluay5oPgogI2lm
ZGVmIEhBVkVfTElOVVhfSUZfQUREUl9ICiAjaW5jbHVkZSA8bGludXgvaWZfYWRkci5oPgpAQCAt
NTYsMjMgKzU2LDI2IEBACiAjZW5kaWYKICNlbmRpZgogI2VuZGlmCi0jaWYgZGVmaW5lZChfX1Vz
ZXJzcGFjZV9vc19EYXJ3aW4pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRHJhZ29uRmx5KSB8
fCBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0ZyZWVCU0QpCisjaWYgZGVmaW5lZChfX0FQUExFX18p
IHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykKICNpbmNs
dWRlIDxuZXQvcm91dGUuaD4KICNlbmRpZgogLyogbG9jYWwgbWFjcm9zIGFuZCBkYXRhdHlwZXMg
dXNlZCB0byBnZXQgSVAgYWRkcmVzc2VzIHN5c3RlbSBpbmRlcGVuZGVudGx5ICovCi0jaWYgIWRl
ZmluZWQoSVBfUEtUSU5GTyApICYmICEgZGVmaW5lZChJUF9SRUNWRFNUQUREUikKKyNpZiAhZGVm
aW5lZChJUF9QS1RJTkZPICkgJiYgIWRlZmluZWQoSVBfUkVDVkRTVEFERFIpCiAjIGVycm9yICJD
YW4ndCBkZXRlcm1pbmUgc29ja2V0IG9wdGlvbiB0byB1c2UgdG8gZ2V0IFVEUCBJUCIKICNlbmRp
ZgogCiB2b2lkIHJlY3ZfdGhyZWFkX2Rlc3Ryb3kodm9pZCk7Ci0jZGVmaW5lIE1BWExFTl9NQlVG
X0NIQUlOIDMyIC8qIFdoYXQgc2hvdWxkIHRoaXMgdmFsdWUgYmU/ICovCisKKyNkZWZpbmUgTUFY
TEVOX01CVUZfQ0hBSU4gMTI4CisKICNkZWZpbmUgUk9VTkRVUChhLCBzaXplKSAoKChhKSAmICgo
c2l6ZSktMSkpID8gKDEgKyAoKGEpIHwgKChzaXplKS0xKSkpIDogKGEpKQotI2lmIGRlZmluZWQo
X19Vc2Vyc3BhY2Vfb3NfRGFyd2luKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0RyYWdvbkZs
eSkgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19GcmVlQlNEKQorCisjaWYgZGVmaW5lZChfX0FQ
UExFX18pIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykK
ICNkZWZpbmUgTkVYVF9TQShhcCkgYXAgPSAoc3RydWN0IHNvY2thZGRyICopIFwKIAkoKGNhZGRy
X3QpIGFwICsgKGFwLT5zYV9sZW4gPyBST1VORFVQKGFwLT5zYV9sZW4sIHNpemVvZiAodWludDMy
X3QpKSA6IHNpemVvZih1aW50MzJfdCkpKQogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKF9fVXNlcnNw
YWNlX29zX0RhcndpbikgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19EcmFnb25GbHkpIHx8IGRl
ZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRnJlZUJTRCkKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwg
ZGVmaW5lZChfX0RyYWdvbkZseV9fKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKQogc3RhdGljIHZv
aWQKIHNjdHBfZ2V0X3J0YWRkcnMoaW50IGFkZHJzLCBzdHJ1Y3Qgc29ja2FkZHIgKnNhLCBzdHJ1
Y3Qgc29ja2FkZHIgKipydGlfaW5mbykKIHsKQEAgLTE2NCw3ICsxNjcsNyBAQCByZWN2X2Z1bmN0
aW9uX3JvdXRlKHZvaWQgKmFyZykKIAkJCX0KIAkJfQogCQlpZiAocmV0IDwgMCkgewotCQkJaWYg
KGVycm5vID09IEVBR0FJTikgeworCQkJaWYgKGVycm5vID09IEVBR0FJTiB8fCBlcnJubyA9PSBF
SU5UUikgewogCQkJCWNvbnRpbnVlOwogCQkJfSBlbHNlIHsKIAkJCQlicmVhazsKQEAgLTIxMSw3
ICsyMTQsNyBAQCByZWN2X2Z1bmN0aW9uX3JvdXRlKHZvaWQgKmFyZykKIAkJbGVuID0gcmVjdm1z
ZyhTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yb3V0ZSksICZtc2csIDApOwogCiAJCWlmIChsZW4g
PCAwKSB7Ci0JCQlpZiAoZXJybm8gPT0gRUFHQUlOKSB7CisJCQlpZiAoZXJybm8gPT0gRUFHQUlO
IHx8IGVycm5vID09IEVJTlRSKSB7CiAJCQkJY29udGludWU7CiAJCQl9IGVsc2UgewogCQkJCWJy
ZWFrOwpAQCAtMjcwLDcgKzI3Myw3IEBAIHJlY3ZfZnVuY3Rpb25fcmF3KHZvaWQgKmFyZykKIAlp
bnQgY29tcHV0ZV9jcmMgPSAxOwogCXN0cnVjdCBzY3RwX2NodW5raGRyICpjaDsKIAlzdHJ1Y3Qg
c29ja2FkZHJfaW4gc3JjLCBkc3Q7Ci0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93
cykKKyNpZiAhZGVmaW5lZChfV0lOMzIpCiAJdW5zaWduZWQgaW50IG5jb3VudGVyOwogCXN0cnVj
dCBtc2doZHIgbXNnOwogCXN0cnVjdCBpb3ZlYyByZWN2X2lvdmVjW01BWExFTl9NQlVGX0NIQUlO
XTsKQEAgLTMwNSw3ICszMDgsNyBAQCByZWN2X2Z1bmN0aW9uX3Jhdyh2b2lkICphcmcpCiAJCQkg
ICBIYXZlIHRyaWVkIGJvdGggc2VuZGluZyBhbmQgcmVjZWl2aW5nCiAJCQkgKi8KIAkJCXJlY3Zt
YnVmW2ldID0gc2N0cF9nZXRfbWJ1Zl9mb3JfbXNnKGlvdmxlbiwgd2FudF9oZWFkZXIsIE1fTk9X
QUlULCB3YW50X2V4dCwgTVRfREFUQSk7Ci0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2lu
ZG93cykKKyNpZiAhZGVmaW5lZChfV0lOMzIpCiAJCQlyZWN2X2lvdmVjW2ldLmlvdl9iYXNlID0g
KGNhZGRyX3QpcmVjdm1idWZbaV0tPm1fZGF0YTsKIAkJCXJlY3ZfaW92ZWNbaV0uaW92X2xlbiA9
IGlvdmxlbjsKICNlbHNlCkBAIC0zMTQsNyArMzE3LDcgQEAgcmVjdl9mdW5jdGlvbl9yYXcodm9p
ZCAqYXJnKQogI2VuZGlmCiAJCX0KIAkJdG9fZmlsbCA9IDA7Ci0jaWYgZGVmaW5lZChfX1VzZXJz
cGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogCQlmbGFncyA9IDA7CiAJCW5j
b3VudGVyID0gMDsKIAkJZnJvbWxlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pOwpAQCAt
MzIzLDEyICszMjYsMTAgQEAgcmVjdl9mdW5jdGlvbl9yYXcodm9pZCAqYXJnKQogCQluUmVzdWx0
ID0gV1NBUmVjdkZyb20oU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfcmF3c2N0cCksIHJlY3ZfaW92
ZWMsIE1BWExFTl9NQlVGX0NIQUlOLCAmbmNvdW50ZXIsICZmbGFncywgKHN0cnVjdCBzb2NrYWRk
ciAqKSZmcm9tLCAmZnJvbWxlbiwgTlVMTCwgTlVMTCk7CiAJCWlmIChuUmVzdWx0ICE9IDApIHsK
IAkJCW1fRXJyb3JDb2RlID0gV1NBR2V0TGFzdEVycm9yKCk7Ci0JCQlpZiAobV9FcnJvckNvZGUg
PT0gV1NBRVRJTUVET1VUKSB7Ci0JCQkJY29udGludWU7Ci0JCQl9CiAJCQlpZiAoKG1fRXJyb3JD
b2RlID09IFdTQUVOT1RTT0NLKSB8fCAobV9FcnJvckNvZGUgPT0gV1NBRUlOVFIpKSB7CiAJCQkJ
YnJlYWs7CiAJCQl9CisJCQljb250aW51ZTsKIAkJfQogCQluID0gbmNvdW50ZXI7CiAjZWxzZQpA
QCAtMzQxLDcgKzM0Miw3IEBAIHJlY3ZfZnVuY3Rpb25fcmF3KHZvaWQgKmFyZykKIAkJbXNnLm1z
Z19jb250cm9sbGVuID0gMDsKIAkJbmNvdW50ZXIgPSBuID0gcmVjdm1zZyhTQ1RQX0JBU0VfVkFS
KHVzZXJzcGFjZV9yYXdzY3RwKSwgJm1zZywgMCk7CiAJCWlmIChuIDwgMCkgewotCQkJaWYgKGVy
cm5vID09IEVBR0FJTikgeworCQkJaWYgKGVycm5vID09IEVBR0FJTiB8fCBlcnJubyA9PSBFSU5U
UikgewogCQkJCWNvbnRpbnVlOwogCQkJfSBlbHNlIHsKIAkJCQlicmVhazsKQEAgLTQzMiw2ICs0
MzMsNyBAQCByZWN2X2Z1bmN0aW9uX3Jhdyh2b2lkICphcmcpCiAJfQogCS8qIGZyZWUgdGhlIGFy
cmF5IGl0c2VsZiAqLwogCWZyZWUocmVjdm1idWYpOworCVNDVFBEQkcoU0NUUF9ERUJVR19VU1Is
ICIlczogRXhpdGluZyBTQ1RQL0lQNCByY3ZcbiIsIF9fZnVuY19fKTsKIAlyZXR1cm4gKE5VTEwp
OwogfQogI2VuZGlmCkBAIC00NDEsNyArNDQzLDcgQEAgc3RhdGljIHZvaWQgKgogcmVjdl9mdW5j
dGlvbl9yYXc2KHZvaWQgKmFyZykKIHsKIAlzdHJ1Y3QgbWJ1ZiAqKnJlY3ZtYnVmNjsKLSNpZiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmICFkZWZpbmVkKF9XSU4zMikKIAl1
bnNpZ25lZCBpbnQgbmNvdW50ZXIgPSAwOwogCXN0cnVjdCBpb3ZlYyByZWN2X2lvdmVjW01BWExF
Tl9NQlVGX0NIQUlOXTsKIAlzdHJ1Y3QgbXNnaGRyIG1zZzsKQEAgLTQ1MCwxMCArNDUyLDggQEAg
cmVjdl9mdW5jdGlvbl9yYXc2KHZvaWQgKmFyZykKICNlbHNlCiAJV1NBQlVGIHJlY3ZfaW92ZWNb
TUFYTEVOX01CVUZfQ0hBSU5dOwogCWludCBuUmVzdWx0LCBtX0Vycm9yQ29kZTsKLQlEV09SRCBm
bGFnczsKIAlEV09SRCBuY291bnRlciA9IDA7CiAJc3RydWN0IHNvY2thZGRyX2luNiBmcm9tOwot
CWludCBmcm9tbGVuOwogCUdVSUQgV1NBUmVjdk1zZ19HVUlEID0gV1NBSURfV1NBUkVDVk1TRzsK
IAlMUEZOX1dTQVJFQ1ZNU0cgV1NBUmVjdk1zZzsKIAlXU0FDTVNHSERSICpjbXNncHRyOwpAQCAt
NDg1LDcgKzQ4NSw3IEBAIHJlY3ZfZnVuY3Rpb25fcmF3Nih2b2lkICphcmcpCiAJCQkgICBIYXZl
IHRyaWVkIGJvdGggc2VuZGluZyBhbmQgcmVjZWl2aW5nCiAJCQkgKi8KIAkJCXJlY3ZtYnVmNltp
XSA9IHNjdHBfZ2V0X21idWZfZm9yX21zZyhpb3ZsZW4sIHdhbnRfaGVhZGVyLCBNX05PV0FJVCwg
d2FudF9leHQsIE1UX0RBVEEpOwotI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3Mp
CisjaWYgIWRlZmluZWQoX1dJTjMyKQogCQkJcmVjdl9pb3ZlY1tpXS5pb3ZfYmFzZSA9IChjYWRk
cl90KXJlY3ZtYnVmNltpXS0+bV9kYXRhOwogCQkJcmVjdl9pb3ZlY1tpXS5pb3ZfbGVuID0gaW92
bGVuOwogI2Vsc2UKQEAgLTQ5NCwxMCArNDk0LDggQEAgcmVjdl9mdW5jdGlvbl9yYXc2KHZvaWQg
KmFyZykKICNlbmRpZgogCQl9CiAJCXRvX2ZpbGwgPSAwOwotI2lmIGRlZmluZWQoX19Vc2Vyc3Bh
Y2Vfb3NfV2luZG93cykKLQkJZmxhZ3MgPSAwOworI2lmIGRlZmluZWQoX1dJTjMyKQogCQluY291
bnRlciA9IDA7Ci0JCWZyb21sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNik7CiAJCW1l
bXNldCgmZnJvbSwgMCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKTsKIAkJblJlc3VsdCA9
IFdTQUlvY3RsKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jhd3NjdHA2KSwgU0lPX0dFVF9FWFRF
TlNJT05fRlVOQ1RJT05fUE9JTlRFUiwKIAkJICAgICAgICAgICAgICAgICAgICZXU0FSZWN2TXNn
X0dVSUQsIHNpemVvZiBXU0FSZWN2TXNnX0dVSUQsCkBAIC01MTUsMTAgKzUxMywxMCBAQCByZWN2
X2Z1bmN0aW9uX3JhdzYodm9pZCAqYXJnKQogCQl9CiAJCWlmIChuUmVzdWx0ICE9IDApIHsKIAkJ
CW1fRXJyb3JDb2RlID0gV1NBR2V0TGFzdEVycm9yKCk7Ci0JCQlpZiAobV9FcnJvckNvZGUgPT0g
V1NBRVRJTUVET1VUKQotCQkJCWNvbnRpbnVlOwotCQkJaWYgKG1fRXJyb3JDb2RlID09IFdTQUVO
T1RTT0NLIHx8IG1fRXJyb3JDb2RlID09IFdTQUVJTlRSKQorCQkJaWYgKChtX0Vycm9yQ29kZSA9
PSBXU0FFTk9UU09DSykgfHwgKG1fRXJyb3JDb2RlID09IFdTQUVJTlRSKSkgewogCQkJCWJyZWFr
OworCQkJfQorCQkJY29udGludWU7CiAJCX0KIAkJbiA9IG5jb3VudGVyOwogI2Vsc2UKQEAgLTUz
MSwxMiArNTI5LDEyIEBAIHJlY3ZfZnVuY3Rpb25fcmF3Nih2b2lkICphcmcpCiAJCW1zZy5tc2df
aW92ID0gcmVjdl9pb3ZlYzsKIAkJbXNnLm1zZ19pb3ZsZW4gPSBNQVhMRU5fTUJVRl9DSEFJTjsK
IAkJbXNnLm1zZ19jb250cm9sID0gKHZvaWQgKiljbXNnYnVmOwotCQltc2cubXNnX2NvbnRyb2xs
ZW4gPSAoc29ja2xlbl90KUNNU0dfTEVOKHNpemVvZiAoc3RydWN0IGluNl9wa3RpbmZvKSk7CisJ
CW1zZy5tc2dfY29udHJvbGxlbiA9IChzb2NrbGVuX3QpQ01TR19TUEFDRShzaXplb2YgKHN0cnVj
dCBpbjZfcGt0aW5mbykpOwogCQltc2cubXNnX2ZsYWdzID0gMDsKIAogCQluY291bnRlciA9IG4g
PSByZWN2bXNnKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jhd3NjdHA2KSwgJm1zZywgMCk7CiAJ
CWlmIChuIDwgMCkgewotCQkJaWYgKGVycm5vID09IEVBR0FJTikgeworCQkJaWYgKGVycm5vID09
IEVBR0FJTiB8fCBlcnJubyA9PSBFSU5UUikgewogCQkJCWNvbnRpbnVlOwogCQkJfSBlbHNlIHsK
IAkJCQlicmVhazsKQEAgLTU5Niw3ICs1OTQsOCBAQCByZWN2X2Z1bmN0aW9uX3JhdzYodm9pZCAq
YXJnKQogCQlzcmMuc2luNl9sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNik7CiAjZW5k
aWYKIAkJc3JjLnNpbjZfcG9ydCA9IHNoLT5zcmNfcG9ydDsKLQkJaWYgKG1lbWNtcCgmc3JjLnNp
bjZfYWRkciwgJmRzdC5zaW42X2FkZHIsIHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKSA9PSAwKSB7
CisJCWlmIChTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbm9fY3N1bV9vbl9sb29wYmFjaykgJiYKKwkJ
ICAgIChtZW1jbXAoJnNyYy5zaW42X2FkZHIsICZkc3Quc2luNl9hZGRyLCBzaXplb2Yoc3RydWN0
IGluNl9hZGRyKSkgPT0gMCkpIHsKIAkJCWNvbXB1dGVfY3JjID0gMDsKIAkJCVNDVFBfU1RBVF9J
TkNSKHNjdHBzX3JlY3Zod2NyYyk7CiAJCX0gZWxzZSB7CkBAIC02MjAsNiArNjE5LDcgQEAgcmVj
dl9mdW5jdGlvbl9yYXc2KHZvaWQgKmFyZykKIAl9CiAJLyogZnJlZSB0aGUgYXJyYXkgaXRzZWxm
ICovCiAJZnJlZShyZWN2bWJ1ZjYpOworCVNDVFBEQkcoU0NUUF9ERUJVR19VU1IsICIlczogRXhp
dGluZyBTQ1RQL0lQNiByY3ZcbiIsIF9fZnVuY19fKTsKIAlyZXR1cm4gKE5VTEwpOwogfQogI2Vu
ZGlmCkBAIC02NDcsNyArNjQ3LDcgQEAgcmVjdl9mdW5jdGlvbl91ZHAodm9pZCAqYXJnKQogCWNo
YXIgY21zZ2J1ZltDTVNHX1NQQUNFKHNpemVvZihzdHJ1Y3QgaW5fYWRkcikpXTsKICNlbmRpZgog
CWludCBjb21wdXRlX2NyYyA9IDE7Ci0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93
cykKKyNpZiAhZGVmaW5lZChfV0lOMzIpCiAJdW5zaWduZWQgaW50IG5jb3VudGVyOwogCXN0cnVj
dCBpb3ZlYyBpb3ZbTUFYTEVOX01CVUZfQ0hBSU5dOwogCXN0cnVjdCBtc2doZHIgbXNnOwpAQCAt
Njc0LDcgKzY3NCw3IEBAIHJlY3ZfZnVuY3Rpb25fdWRwKHZvaWQgKmFyZykKIAkJCSAgIEhhdmUg
dHJpZWQgYm90aCBzZW5kaW5nIGFuZCByZWNlaXZpbmcKIAkJCSAqLwogCQkJdWRwcmVjdm1idWZb
aV0gPSBzY3RwX2dldF9tYnVmX2Zvcl9tc2coaW92bGVuLCB3YW50X2hlYWRlciwgTV9OT1dBSVQs
IHdhbnRfZXh0LCBNVF9EQVRBKTsKLSNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dz
KQorI2lmICFkZWZpbmVkKF9XSU4zMikKIAkJCWlvdltpXS5pb3ZfYmFzZSA9IChjYWRkcl90KXVk
cHJlY3ZtYnVmW2ldLT5tX2RhdGE7CiAJCQlpb3ZbaV0uaW92X2xlbiA9IGlvdmxlbjsKICNlbHNl
CkBAIC02ODMsNyArNjgzLDcgQEAgcmVjdl9mdW5jdGlvbl91ZHAodm9pZCAqYXJnKQogI2VuZGlm
CiAJCX0KIAkJdG9fZmlsbCA9IDA7Ci0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93
cykKKyNpZiAhZGVmaW5lZChfV0lOMzIpCiAJCW1lbXNldCgmbXNnLCAwLCBzaXplb2Yoc3RydWN0
IG1zZ2hkcikpOwogI2Vsc2UKIAkJbWVtc2V0KCZtc2csIDAsIHNpemVvZihXU0FNU0cpKTsKQEAg
LTY5Miw3ICs2OTIsNyBAQCByZWN2X2Z1bmN0aW9uX3VkcCh2b2lkICphcmcpCiAJCW1lbXNldCgm
ZHN0LCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7CiAJCW1lbXNldChjbXNnYnVmLCAw
LCBzaXplb2YoY21zZ2J1ZikpOwogCi0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93
cykKKyNpZiAhZGVmaW5lZChfV0lOMzIpCiAJCW1zZy5tc2dfbmFtZSA9ICh2b2lkICopJnNyYzsK
IAkJbXNnLm1zZ19uYW1lbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7CiAJCW1zZy5t
c2dfaW92ID0gaW92OwpAQCAtNzAzLDcgKzcwMyw3IEBAIHJlY3ZfZnVuY3Rpb25fdWRwKHZvaWQg
KmFyZykKIAogCQluY291bnRlciA9IG4gPSByZWN2bXNnKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNl
X3VkcHNjdHApLCAmbXNnLCAwKTsKIAkJaWYgKG4gPCAwKSB7Ci0JCQlpZiAoZXJybm8gPT0gRUFH
QUlOKSB7CisJCQlpZiAoZXJybm8gPT0gRUFHQUlOIHx8IGVycm5vID09IEVJTlRSKSB7CiAJCQkJ
Y29udGludWU7CiAJCQl9IGVsc2UgewogCQkJCWJyZWFrOwpAQCAtNzI2LDEyICs3MjYsMTAgQEAg
cmVjdl9mdW5jdGlvbl91ZHAodm9pZCAqYXJnKQogCQl9CiAJCWlmIChuUmVzdWx0ICE9IDApIHsK
IAkJCW1fRXJyb3JDb2RlID0gV1NBR2V0TGFzdEVycm9yKCk7Ci0JCQlpZiAobV9FcnJvckNvZGUg
PT0gV1NBRVRJTUVET1VUKSB7Ci0JCQkJY29udGludWU7Ci0JCQl9CiAJCQlpZiAoKG1fRXJyb3JD
b2RlID09IFdTQUVOT1RTT0NLKSB8fCAobV9FcnJvckNvZGUgPT0gV1NBRUlOVFIpKSB7CiAJCQkJ
YnJlYWs7CiAJCQl9CisJCQljb250aW51ZTsKIAkJfQogCQluID0gbmNvdW50ZXI7CiAjZW5kaWYK
QEAgLTgwMiw3ICs4MDAsOCBAQCByZWN2X2Z1bmN0aW9uX3VkcCh2b2lkICphcmcpCiAJCXBvcnQg
PSBzcmMuc2luX3BvcnQ7CiAJCXNyYy5zaW5fcG9ydCA9IHNoLT5zcmNfcG9ydDsKIAkJZHN0LnNp
bl9wb3J0ID0gc2gtPmRlc3RfcG9ydDsKLQkJaWYgKHNyYy5zaW5fYWRkci5zX2FkZHIgPT0gZHN0
LnNpbl9hZGRyLnNfYWRkcikgeworCQlpZiAoU0NUUF9CQVNFX1NZU0NUTChzY3RwX25vX2NzdW1f
b25fbG9vcGJhY2spICYmCisJCSAgICAoc3JjLnNpbl9hZGRyLnNfYWRkciA9PSBkc3Quc2luX2Fk
ZHIuc19hZGRyKSkgewogCQkJY29tcHV0ZV9jcmMgPSAwOwogCQkJU0NUUF9TVEFUX0lOQ1Ioc2N0
cHNfcmVjdmh3Y3JjKTsKIAkJfSBlbHNlIHsKQEAgLTgyNiw2ICs4MjUsNyBAQCByZWN2X2Z1bmN0
aW9uX3VkcCh2b2lkICphcmcpCiAJfQogCS8qIGZyZWUgdGhlIGFycmF5IGl0c2VsZiAqLwogCWZy
ZWUodWRwcmVjdm1idWYpOworCVNDVFBEQkcoU0NUUF9ERUJVR19VU1IsICIlczogRXhpdGluZyBT
Q1RQL1VEUC9JUDQgcmN2XG4iLCBfX2Z1bmNfXyk7CiAJcmV0dXJuIChOVUxMKTsKIH0KICNlbmRp
ZgpAQCAtODQ5LDExICs4NDksMTEgQEAgcmVjdl9mdW5jdGlvbl91ZHA2KHZvaWQgKmFyZykKIAlz
dHJ1Y3Qgc2N0cF9jaHVua2hkciAqY2g7CiAJY2hhciBjbXNnYnVmW0NNU0dfU1BBQ0Uoc2l6ZW9m
IChzdHJ1Y3QgaW42X3BrdGluZm8pKV07CiAJaW50IGNvbXB1dGVfY3JjID0gMTsKLSNpZiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQotCXVuc2lnbmVkIGludCBuY291bnRlcjsKKyNp
ZiAhZGVmaW5lZChfV0lOMzIpCiAJc3RydWN0IGlvdmVjIGlvdltNQVhMRU5fTUJVRl9DSEFJTl07
CiAJc3RydWN0IG1zZ2hkciBtc2c7CiAJc3RydWN0IGNtc2doZHIgKmNtc2dwdHI7CisJdW5zaWdu
ZWQgaW50IG5jb3VudGVyOwogI2Vsc2UKIAlHVUlEIFdTQVJlY3ZNc2dfR1VJRCA9IFdTQUlEX1dT
QVJFQ1ZNU0c7CiAJTFBGTl9XU0FSRUNWTVNHIFdTQVJlY3ZNc2c7CkBAIC04NjEsOCArODYxLDgg
QEAgcmVjdl9mdW5jdGlvbl91ZHA2KHZvaWQgKmFyZykKIAlXU0FCVUYgaW92W01BWExFTl9NQlVG
X0NIQUlOXTsKIAlXU0FNU0cgbXNnOwogCWludCBuUmVzdWx0LCBtX0Vycm9yQ29kZTsKLQlEV09S
RCBuY291bnRlcjsKIAlXU0FDTVNHSERSICpjbXNncHRyOworCURXT1JEIG5jb3VudGVyOwogI2Vu
ZGlmCiAKIAlzY3RwX3VzZXJzcGFjZV9zZXRfdGhyZWFkbmFtZSgiU0NUUC9VRFAvSVA2IHJjdiIp
OwpAQCAtODc1LDcgKzg3NSw3IEBAIHJlY3ZfZnVuY3Rpb25fdWRwNih2b2lkICphcmcpCiAJCQkg
ICBIYXZlIHRyaWVkIGJvdGggc2VuZGluZyBhbmQgcmVjZWl2aW5nCiAJCQkgKi8KIAkJCXVkcHJl
Y3ZtYnVmNltpXSA9IHNjdHBfZ2V0X21idWZfZm9yX21zZyhpb3ZsZW4sIHdhbnRfaGVhZGVyLCBN
X05PV0FJVCwgd2FudF9leHQsIE1UX0RBVEEpOwotI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29z
X1dpbmRvd3MpCisjaWYgIWRlZmluZWQoX1dJTjMyKQogCQkJaW92W2ldLmlvdl9iYXNlID0gKGNh
ZGRyX3QpdWRwcmVjdm1idWY2W2ldLT5tX2RhdGE7CiAJCQlpb3ZbaV0uaW92X2xlbiA9IGlvdmxl
bjsKICNlbHNlCkBAIC04ODUsNyArODg1LDcgQEAgcmVjdl9mdW5jdGlvbl91ZHA2KHZvaWQgKmFy
ZykKIAkJfQogCQl0b19maWxsID0gMDsKIAotI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dp
bmRvd3MpCisjaWYgIWRlZmluZWQoX1dJTjMyKQogCQltZW1zZXQoJm1zZywgMCwgc2l6ZW9mKHN0
cnVjdCBtc2doZHIpKTsKICNlbHNlCiAJCW1lbXNldCgmbXNnLCAwLCBzaXplb2YoV1NBTVNHKSk7
CkBAIC04OTQsMTggKzg5NCwxOCBAQCByZWN2X2Z1bmN0aW9uX3VkcDYodm9pZCAqYXJnKQogCQlt
ZW1zZXQoJmRzdCwgMCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKTsKIAkJbWVtc2V0KGNt
c2didWYsIDAsIENNU0dfU1BBQ0Uoc2l6ZW9mIChzdHJ1Y3QgaW42X3BrdGluZm8pKSk7CiAKLSNp
ZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmICFkZWZpbmVkKF9XSU4zMikK
IAkJbXNnLm1zZ19uYW1lID0gKHZvaWQgKikmc3JjOwogCQltc2cubXNnX25hbWVsZW4gPSBzaXpl
b2Yoc3RydWN0IHNvY2thZGRyX2luNik7CiAJCW1zZy5tc2dfaW92ID0gaW92OwogCQltc2cubXNn
X2lvdmxlbiA9IE1BWExFTl9NQlVGX0NIQUlOOwogCQltc2cubXNnX2NvbnRyb2wgPSAodm9pZCAq
KWNtc2didWY7Ci0JCW1zZy5tc2dfY29udHJvbGxlbiA9IChzb2NrbGVuX3QpQ01TR19MRU4oc2l6
ZW9mIChzdHJ1Y3QgaW42X3BrdGluZm8pKTsKKwkJbXNnLm1zZ19jb250cm9sbGVuID0gKHNvY2ts
ZW5fdClDTVNHX1NQQUNFKHNpemVvZiAoc3RydWN0IGluNl9wa3RpbmZvKSk7CiAJCW1zZy5tc2df
ZmxhZ3MgPSAwOwogCiAJCW5jb3VudGVyID0gbiA9IHJlY3Ztc2coU0NUUF9CQVNFX1ZBUih1c2Vy
c3BhY2VfdWRwc2N0cDYpLCAmbXNnLCAwKTsKIAkJaWYgKG4gPCAwKSB7Ci0JCQlpZiAoZXJybm8g
PT0gRUFHQUlOKSB7CisJCQlpZiAoZXJybm8gPT0gRUFHQUlOIHx8IGVycm5vID09IEVJTlRSKSB7
CiAJCQkJY29udGludWU7CiAJCQl9IGVsc2UgewogCQkJCWJyZWFrOwpAQCAtOTMyLDEyICs5MzIs
MTAgQEAgcmVjdl9mdW5jdGlvbl91ZHA2KHZvaWQgKmFyZykKIAkJfQogCQlpZiAoblJlc3VsdCAh
PSAwKSB7CiAJCQltX0Vycm9yQ29kZSA9IFdTQUdldExhc3RFcnJvcigpOwotCQkJaWYgKG1fRXJy
b3JDb2RlID09IFdTQUVUSU1FRE9VVCkgewotCQkJCWNvbnRpbnVlOwotCQkJfQogCQkJaWYgKCht
X0Vycm9yQ29kZSA9PSBXU0FFTk9UU09DSykgfHwgKG1fRXJyb3JDb2RlID09IFdTQUVJTlRSKSkg
ewogCQkJCWJyZWFrOwogCQkJfQorCQkJY29udGludWU7CiAJCX0KIAkJbiA9IG5jb3VudGVyOwog
I2VuZGlmCkBAIC05OTAsNyArOTg4LDggQEAgcmVjdl9mdW5jdGlvbl91ZHA2KHZvaWQgKmFyZykK
IAkJcG9ydCA9IHNyYy5zaW42X3BvcnQ7CiAJCXNyYy5zaW42X3BvcnQgPSBzaC0+c3JjX3BvcnQ7
CiAJCWRzdC5zaW42X3BvcnQgPSBzaC0+ZGVzdF9wb3J0OwotCQlpZiAoKG1lbWNtcCgmc3JjLnNp
bjZfYWRkciwgJmRzdC5zaW42X2FkZHIsIHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKSA9PSAwKSkg
eworCQlpZiAoU0NUUF9CQVNFX1NZU0NUTChzY3RwX25vX2NzdW1fb25fbG9vcGJhY2spICYmCisJ
CSAgICAobWVtY21wKCZzcmMuc2luNl9hZGRyLCAmZHN0LnNpbjZfYWRkciwgc2l6ZW9mKHN0cnVj
dCBpbjZfYWRkcikpID09IDApKSB7CiAJCQljb21wdXRlX2NyYyA9IDA7CiAJCQlTQ1RQX1NUQVRf
SU5DUihzY3Rwc19yZWN2aHdjcmMpOwogCQl9IGVsc2UgewpAQCAtMTAxNCwxMSArMTAxMywxMiBA
QCByZWN2X2Z1bmN0aW9uX3VkcDYodm9pZCAqYXJnKQogCX0KIAkvKiBmcmVlIHRoZSBhcnJheSBp
dHNlbGYgKi8KIAlmcmVlKHVkcHJlY3ZtYnVmNik7CisJU0NUUERCRyhTQ1RQX0RFQlVHX1VTUiwg
IiVzOiBFeGl0aW5nIFNDVFAvVURQL0lQNiByY3ZcbiIsIF9fZnVuY19fKTsKIAlyZXR1cm4gKE5V
TEwpOwogfQogI2VuZGlmCiAKLSNpZiBkZWZpbmVkIChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQor
I2lmIGRlZmluZWQoX1dJTjMyKQogc3RhdGljIHZvaWQKIHNldFJlY2VpdmVCdWZmZXJTaXplKFNP
Q0tFVCBzZmQsIGludCBuZXdfc2l6ZSkKICNlbHNlCkBAIC0xMDI5LDcgKzEwMjksNyBAQCBzZXRS
ZWNlaXZlQnVmZmVyU2l6ZShpbnQgc2ZkLCBpbnQgbmV3X3NpemUpCiAJaW50IGNoID0gbmV3X3Np
emU7CiAKIAlpZiAoc2V0c29ja29wdCAoc2ZkLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsICh2b2lk
KikmY2gsIHNpemVvZihjaCkpIDwgMCkgewotI2lmIGRlZmluZWQgKF9fVXNlcnNwYWNlX29zX1dp
bmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJCVNDVFBEQkcoU0NUUF9ERUJVR19VU1IsICJD
YW4ndCBzZXQgcmVjdi1idWZmZXJzIHNpemUgKGVycm5vID0gJWQpLlxuIiwgV1NBR2V0TGFzdEVy
cm9yKCkpOwogI2Vsc2UKIAkJU0NUUERCRyhTQ1RQX0RFQlVHX1VTUiwgIkNhbid0IHNldCByZWN2
LWJ1ZmZlcnMgc2l6ZSAoZXJybm8gPSAlZCkuXG4iLCBlcnJubyk7CkBAIC0xMDM4LDcgKzEwMzgs
NyBAQCBzZXRSZWNlaXZlQnVmZmVyU2l6ZShpbnQgc2ZkLCBpbnQgbmV3X3NpemUpCiAJcmV0dXJu
OwogfQogCi0jaWYgZGVmaW5lZCAoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVk
KF9XSU4zMikKIHN0YXRpYyB2b2lkCiBzZXRTZW5kQnVmZmVyU2l6ZShTT0NLRVQgc2ZkLCBpbnQg
bmV3X3NpemUpCiAjZWxzZQpAQCAtMTA0OSw3ICsxMDQ5LDcgQEAgc2V0U2VuZEJ1ZmZlclNpemUo
aW50IHNmZCwgaW50IG5ld19zaXplKQogCWludCBjaCA9IG5ld19zaXplOwogCiAJaWYgKHNldHNv
Y2tvcHQgKHNmZCwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCAodm9pZCopJmNoLCBzaXplb2YoY2gp
KSA8IDApIHsKLSNpZiBkZWZpbmVkIChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmlu
ZWQoX1dJTjMyKQogCQlTQ1RQREJHKFNDVFBfREVCVUdfVVNSLCAiQ2FuJ3Qgc2V0IHNlbmQtYnVm
ZmVycyBzaXplIChlcnJubyA9ICVkKS5cbiIsIFdTQUdldExhc3RFcnJvcigpKTsKICNlbHNlCiAJ
CVNDVFBEQkcoU0NUUF9ERUJVR19VU1IsICJDYW4ndCBzZXQgc2VuZC1idWZmZXJzIHNpemUgKGVy
cm5vID0gJWQpLlxuIiwgZXJybm8pOwpAQCAtMTA3Miw3ICsxMDcyLDcgQEAgcmVjdl90aHJlYWRf
aW5pdCh2b2lkKQogI2lmIGRlZmluZWQoSU5FVCkgfHwgZGVmaW5lZChJTkVUNikKIAljb25zdCBp
bnQgb24gPSAxOwogI2VuZGlmCi0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykK
KyNpZiAhZGVmaW5lZChfV0lOMzIpCiAJc3RydWN0IHRpbWV2YWwgdGltZW91dDsKIAogCW1lbXNl
dCgmdGltZW91dCwgMCwgc2l6ZW9mKHN0cnVjdCB0aW1ldmFsKSk7CkBAIC0xMDgxLDcgKzEwODEs
NyBAQCByZWN2X3RocmVhZF9pbml0KHZvaWQpCiAjZWxzZQogCXVuc2lnbmVkIGludCB0aW1lb3V0
ID0gU09DS0VUX1RJTUVPVVQ7IC8qIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzICovCiAjZW5kaWYK
LSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0RhcndpbikgfHwgZGVmaW5lZChfX1VzZXJzcGFj
ZV9vc19EcmFnb25GbHkpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRnJlZUJTRCkKKyNpZiBk
ZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKSB8fCBkZWZpbmVkKF9f
RnJlZUJTRF9fKQogCWlmIChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yb3V0ZSkgPT0gLTEpIHsK
IAkJaWYgKChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yb3V0ZSkgPSBzb2NrZXQoQUZfUk9VVEUs
IFNPQ0tfUkFXLCAwKSkgPT0gLTEpIHsKIAkJCVNDVFBEQkcoU0NUUF9ERUJVR19VU1IsICJDYW4n
dCBjcmVhdGUgcm91dGluZyBzb2NrZXQgKGVycm5vID0gJWQpLlxuIiwgZXJybm8pOwpAQCAtMTEx
MCw3ICsxMTEwLDcgQEAgcmVjdl90aHJlYWRfaW5pdCh2b2lkKQogCQlpZiAoU0NUUF9CQVNFX1ZB
Uih1c2Vyc3BhY2Vfcm91dGUpICE9IC0xKSB7CiAJCQlpZiAoc2V0c29ja29wdChTQ1RQX0JBU0Vf
VkFSKHVzZXJzcGFjZV9yb3V0ZSksIFNPTF9TT0NLRVQsIFNPX1JDVlRJTUVPLChjb25zdCB2b2lk
KikmdGltZW91dCwgc2l6ZW9mKHN0cnVjdCB0aW1ldmFsKSkgPCAwKSB7CiAJCQkJU0NUUERCRyhT
Q1RQX0RFQlVHX1VTUiwgIkNhbid0IHNldCB0aW1lb3V0IG9uIHJvdXRpbmcgc29ja2V0IChlcnJu
byA9ICVkKS5cbiIsIGVycm5vKTsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3Mp
CisjaWYgZGVmaW5lZChfV0lOMzIpCiAJCQkJY2xvc2Vzb2NrZXQoU0NUUF9CQVNFX1ZBUih1c2Vy
c3BhY2Vfcm91dGUpKTsKICNlbHNlCiAJCQkJY2xvc2UoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2Vf
cm91dGUpKTsKQEAgLTExMjMsNyArMTEyMyw3IEBAIHJlY3ZfdGhyZWFkX2luaXQodm9pZCkKICNp
ZiBkZWZpbmVkKElORVQpCiAJaWYgKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jhd3NjdHApID09
IC0xKSB7CiAJCWlmICgoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfcmF3c2N0cCkgPSBzb2NrZXQo
QUZfSU5FVCwgU09DS19SQVcsIElQUFJPVE9fU0NUUCkpID09IC0xKSB7Ci0jaWYgZGVmaW5lZChf
X1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogCQkJU0NUUERCRyhT
Q1RQX0RFQlVHX1VTUiwgIkNhbid0IGNyZWF0ZSByYXcgc29ja2V0IGZvciBJUHY0IChlcnJubyA9
ICVkKS5cbiIsIFdTQUdldExhc3RFcnJvcigpKTsKICNlbHNlCiAJCQlTQ1RQREJHKFNDVFBfREVC
VUdfVVNSLCAiQ2FuJ3QgY3JlYXRlIHJhdyBzb2NrZXQgZm9yIElQdjQgKGVycm5vID0gJWQpLlxu
IiwgZXJybm8pOwpAQCAtMTEzMSw3ICsxMTMxLDcgQEAgcmVjdl90aHJlYWRfaW5pdCh2b2lkKQog
CQl9IGVsc2UgewogCQkJLyogY29tcGxldGUgc2V0dGluZyB1cCB0aGUgcmF3IFNDVFAgc29ja2V0
ICovCiAJCQlpZiAoc2V0c29ja29wdChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3RwKSwg
SVBQUk9UT19JUCwgSVBfSERSSU5DTCwoY29uc3Qgdm9pZCopJmhkcmluY2wsIHNpemVvZihpbnQp
KSA8IDApIHsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5l
ZChfV0lOMzIpCiAJCQkJU0NUUERCRyhTQ1RQX0RFQlVHX1VTUiwgIkNhbid0IHNldCBJUF9IRFJJ
TkNMIChlcnJubyA9ICVkKS5cbiIsIFdTQUdldExhc3RFcnJvcigpKTsKIAkJCQljbG9zZXNvY2tl
dChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3RwKSk7CiAjZWxzZQpAQCAtMTE0MCw3ICsx
MTQwLDcgQEAgcmVjdl90aHJlYWRfaW5pdCh2b2lkKQogI2VuZGlmCiAJCQkJU0NUUF9CQVNFX1ZB
Uih1c2Vyc3BhY2VfcmF3c2N0cCkgPSAtMTsKIAkJCX0gZWxzZSBpZiAoc2V0c29ja29wdChTQ1RQ
X0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3RwKSwgU09MX1NPQ0tFVCwgU09fUkNWVElNRU8sIChj
b25zdCB2b2lkICopJnRpbWVvdXQsIHNpemVvZih0aW1lb3V0KSkgPCAwKSB7Ci0jaWYgZGVmaW5l
ZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogCQkJCVNDVFBE
QkcoU0NUUF9ERUJVR19VU1IsICJDYW4ndCBzZXQgdGltZW91dCBvbiBzb2NrZXQgZm9yIFNDVFAv
SVB2NCAoZXJybm8gPSAlZCkuXG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7CiAJCQkJY2xvc2Vzb2Nr
ZXQoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfcmF3c2N0cCkpOwogI2Vsc2UKQEAgLTExNTcsNyAr
MTE1Nyw3IEBAIHJlY3ZfdGhyZWFkX2luaXQodm9pZCkKIAkJCQlhZGRyX2lwdjQuc2luX3BvcnQg
ICAgICAgID0gaHRvbnMoMCk7CiAJCQkJYWRkcl9pcHY0LnNpbl9hZGRyLnNfYWRkciA9IGh0b25s
KElOQUREUl9BTlkpOwogCQkJCWlmIChiaW5kKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jhd3Nj
dHApLCAoY29uc3Qgc3RydWN0IHNvY2thZGRyICopJmFkZHJfaXB2NCwgc2l6ZW9mKHN0cnVjdCBz
b2NrYWRkcl9pbikpIDwgMCkgewotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykK
KyNpZiBkZWZpbmVkKF9XSU4zMikKIAkJCQkJU0NUUERCRyhTQ1RQX0RFQlVHX1VTUiwgIkNhbid0
IGJpbmQgc29ja2V0IGZvciBTQ1RQL0lQdjQgKGVycm5vID0gJWQpLlxuIiwgV1NBR2V0TGFzdEVy
cm9yKCkpOwogCQkJCQljbG9zZXNvY2tldChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3Rw
KSk7CiAjZWxzZQpAQCAtMTE3NCw3ICsxMTc0LDcgQEAgcmVjdl90aHJlYWRfaW5pdCh2b2lkKQog
CX0KIAlpZiAoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfdWRwc2N0cCkgPT0gLTEpIHsKIAkJaWYg
KChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV91ZHBzY3RwKSA9IHNvY2tldChBRl9JTkVULCBTT0NL
X0RHUkFNLCBJUFBST1RPX1VEUCkpID09IC0xKSB7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9v
c19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogCQkJU0NUUERCRyhTQ1RQX0RFQlVHX1VT
UiwgIkNhbid0IGNyZWF0ZSBzb2NrZXQgZm9yIFNDVFAvVURQL0lQdjQgKGVycm5vID0gJWQpLlxu
IiwgV1NBR2V0TGFzdEVycm9yKCkpOwogI2Vsc2UKIAkJCVNDVFBEQkcoU0NUUF9ERUJVR19VU1Is
ICJDYW4ndCBjcmVhdGUgc29ja2V0IGZvciBTQ1RQL1VEUC9JUHY0IChlcnJubyA9ICVkKS5cbiIs
IGVycm5vKTsKQEAgLTExODUsNyArMTE4NSw3IEBAIHJlY3ZfdGhyZWFkX2luaXQodm9pZCkKICNl
bHNlCiAJCQlpZiAoc2V0c29ja29wdChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV91ZHBzY3RwKSwg
SVBQUk9UT19JUCwgSVBfUkVDVkRTVEFERFIsIChjb25zdCB2b2lkICopJm9uLCAoaW50KXNpemVv
ZihpbnQpKSA8IDApIHsKICNlbmRpZgotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93
cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKICNpZiBkZWZpbmVkKElQX1BLVElORk8pCiAJCQkJU0NU
UERCRyhTQ1RQX0RFQlVHX1VTUiwgIkNhbid0IHNldCBJUF9QS1RJTkZPIG9uIHNvY2tldCBmb3Ig
U0NUUC9VRFAvSVB2NCAoZXJybm8gPSAlZCkuXG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7CiAjZWxz
ZQpAQCAtMTIwMiw3ICsxMjAyLDcgQEAgcmVjdl90aHJlYWRfaW5pdCh2b2lkKQogI2VuZGlmCiAJ
CQkJU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfdWRwc2N0cCkgPSAtMTsKIAkJCX0gZWxzZSBpZiAo
c2V0c29ja29wdChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV91ZHBzY3RwKSwgU09MX1NPQ0tFVCwg
U09fUkNWVElNRU8sIChjb25zdCB2b2lkICopJnRpbWVvdXQsIHNpemVvZih0aW1lb3V0KSkgPCAw
KSB7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJ
TjMyKQogCQkJCVNDVFBEQkcoU0NUUF9ERUJVR19VU1IsICJDYW4ndCBzZXQgdGltZW91dCBvbiBz
b2NrZXQgZm9yIFNDVFAvVURQL0lQdjQgKGVycm5vID0gJWQpLlxuIiwgV1NBR2V0TGFzdEVycm9y
KCkpOwogCQkJCWNsb3Nlc29ja2V0KFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNjdHApKTsK
ICNlbHNlCkBAIC0xMjE5LDcgKzEyMTksNyBAQCByZWN2X3RocmVhZF9pbml0KHZvaWQpCiAJCQkJ
YWRkcl9pcHY0LnNpbl9wb3J0ICAgICAgICA9IGh0b25zKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF91
ZHBfdHVubmVsaW5nX3BvcnQpKTsKIAkJCQlhZGRyX2lwdjQuc2luX2FkZHIuc19hZGRyID0gaHRv
bmwoSU5BRERSX0FOWSk7CiAJCQkJaWYgKGJpbmQoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfdWRw
c2N0cCksIChjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKikmYWRkcl9pcHY0LCBzaXplb2Yoc3RydWN0
IHNvY2thZGRyX2luKSkgPCAwKSB7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dz
KQorI2lmIGRlZmluZWQoX1dJTjMyKQogCQkJCQlTQ1RQREJHKFNDVFBfREVCVUdfVVNSLCAiQ2Fu
J3QgYmluZCBzb2NrZXQgZm9yIFNDVFAvVURQL0lQdjQgKGVycm5vID0gJWQpLlxuIiwgV1NBR2V0
TGFzdEVycm9yKCkpOwogCQkJCQljbG9zZXNvY2tldChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV91
ZHBzY3RwKSk7CiAjZWxzZQpAQCAtMTIzOCw3ICsxMjM4LDcgQEAgcmVjdl90aHJlYWRfaW5pdCh2
b2lkKQogI2lmIGRlZmluZWQoSU5FVDYpCiAJaWYgKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jh
d3NjdHA2KSA9PSAtMSkgewogCQlpZiAoKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jhd3NjdHA2
KSA9IHNvY2tldChBRl9JTkVUNiwgU09DS19SQVcsIElQUFJPVE9fU0NUUCkpID09IC0xKSB7Ci0j
aWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQog
CQkJU0NUUERCRyhTQ1RQX0RFQlVHX1VTUiwgIkNhbid0IGNyZWF0ZSBzb2NrZXQgZm9yIFNDVFAv
SVB2NiAoZXJybm8gPSAlZCkuXG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7CiAjZWxzZQogCQkJU0NU
UERCRyhTQ1RQX0RFQlVHX1VTUiwgIkNhbid0IGNyZWF0ZSBzb2NrZXQgZm9yIFNDVFAvSVB2NiAo
ZXJybm8gPSAlZCkuXG4iLCBlcnJubyk7CkBAIC0xMjQ3LDcgKzEyNDcsNyBAQCByZWN2X3RocmVh
ZF9pbml0KHZvaWQpCiAJCQkvKiBjb21wbGV0ZSBzZXR0aW5nIHVwIHRoZSByYXcgU0NUUCBzb2Nr
ZXQgKi8KICNpZiBkZWZpbmVkKElQVjZfUkVDVlBLVElORk8pCiAJCQlpZiAoc2V0c29ja29wdChT
Q1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3RwNiksIElQUFJPVE9fSVBWNiwgSVBWNl9SRUNW
UEtUSU5GTywgKGNvbnN0IHZvaWQgKikmb24sIHNpemVvZihvbikpIDwgMCkgewotI2lmIGRlZmlu
ZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIAkJCQlTQ1RQ
REJHKFNDVFBfREVCVUdfVVNSLCAiQ2FuJ3Qgc2V0IElQVjZfUkVDVlBLVElORk8gb24gc29ja2V0
IGZvciBTQ1RQL0lQdjYgKGVycm5vID0gJWQpLlxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOwogCQkJ
CWNsb3Nlc29ja2V0KFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jhd3NjdHA2KSk7CiAjZWxzZQpA
QCAtMTI1OCw3ICsxMjU4LDcgQEAgcmVjdl90aHJlYWRfaW5pdCh2b2lkKQogCQkJfSBlbHNlIHsK
ICNlbHNlCiAJCQlpZiAoc2V0c29ja29wdChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3Rw
NiksIElQUFJPVE9fSVBWNiwgSVBWNl9QS1RJTkZPLChjb25zdCB2b2lkKikmb24sIHNpemVvZihv
bikpIDwgMCkgewotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZp
bmVkKF9XSU4zMikKIAkJCQlTQ1RQREJHKFNDVFBfREVCVUdfVVNSLCAiQ2FuJ3Qgc2V0IElQVjZf
UEtUSU5GTyBvbiBzb2NrZXQgZm9yIFNDVFAvSVB2NiAoZXJybm8gPSAlZCkuXG4iLCBXU0FHZXRM
YXN0RXJyb3IoKSk7CiAJCQkJY2xvc2Vzb2NrZXQoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfcmF3
c2N0cDYpKTsKICNlbHNlCkBAIC0xMjY5LDE0ICsxMjY5LDE0IEBAIHJlY3ZfdGhyZWFkX2luaXQo
dm9pZCkKIAkJCX0gZWxzZSB7CiAjZW5kaWYKIAkJCQlpZiAoc2V0c29ja29wdChTQ1RQX0JBU0Vf
VkFSKHVzZXJzcGFjZV9yYXdzY3RwNiksIElQUFJPVE9fSVBWNiwgSVBWNl9WNk9OTFksIChjb25z
dCB2b2lkKikmb24sIChzb2NrbGVuX3Qpc2l6ZW9mKG9uKSkgPCAwKSB7Ci0jaWYgZGVmaW5lZChf
X1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogCQkJCQlTQ1RQREJH
KFNDVFBfREVCVUdfVVNSLCAiQ2FuJ3Qgc2V0IElQVjZfVjZPTkxZIG9uIHNvY2tldCBmb3IgU0NU
UC9JUHY2IChlcnJubyA9ICVkKS5cbiIsIFdTQUdldExhc3RFcnJvcigpKTsKICNlbHNlCiAJCQkJ
CVNDVFBEQkcoU0NUUF9ERUJVR19VU1IsICJDYW4ndCBzZXQgSVBWNl9WNk9OTFkgb24gc29ja2V0
IGZvciBTQ1RQL0lQdjYgKGVycm5vID0gJWQpLlxuIiwgZXJybm8pOwogI2VuZGlmCiAJCQkJfQog
CQkJCWlmIChzZXRzb2Nrb3B0KFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jhd3NjdHA2KSwgU09M
X1NPQ0tFVCwgU09fUkNWVElNRU8sIChjb25zdCB2b2lkICopJnRpbWVvdXQsIHNpemVvZih0aW1l
b3V0KSkgPCAwKSB7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRl
ZmluZWQoX1dJTjMyKQogCQkJCQlTQ1RQREJHKFNDVFBfREVCVUdfVVNSLCAiQ2FuJ3Qgc2V0IHRp
bWVvdXQgb24gc29ja2V0IGZvciBTQ1RQL0lQdjYgKGVycm5vID0gJWQpLlxuIiwgV1NBR2V0TGFz
dEVycm9yKCkpOwogCQkJCQljbG9zZXNvY2tldChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdz
Y3RwNikpOwogI2Vsc2UKQEAgLTEyOTMsNyArMTI5Myw3IEBAIHJlY3ZfdGhyZWFkX2luaXQodm9p
ZCkKIAkJCQkJYWRkcl9pcHY2LnNpbjZfcG9ydCAgICAgICAgPSBodG9ucygwKTsKIAkJCQkJYWRk
cl9pcHY2LnNpbjZfYWRkciAgICAgICAgPSBpbjZhZGRyX2FueTsKIAkJCQkJaWYgKGJpbmQoU0NU
UF9CQVNFX1ZBUih1c2Vyc3BhY2VfcmF3c2N0cDYpLCAoY29uc3Qgc3RydWN0IHNvY2thZGRyICop
JmFkZHJfaXB2Niwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKSA8IDApIHsKLSNpZiBkZWZp
bmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJCQkJCQlT
Q1RQREJHKFNDVFBfREVCVUdfVVNSLCAiQ2FuJ3QgYmluZCBzb2NrZXQgZm9yIFNDVFAvSVB2NiAo
ZXJybm8gPSAlZCkuXG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7CiAJCQkJCQljbG9zZXNvY2tldChT
Q1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3RwNikpOwogI2Vsc2UKQEAgLTEzMTEsNyArMTMx
MSw3IEBAIHJlY3ZfdGhyZWFkX2luaXQodm9pZCkKIAl9CiAJaWYgKFNDVFBfQkFTRV9WQVIodXNl
cnNwYWNlX3VkcHNjdHA2KSA9PSAtMSkgewogCQlpZiAoKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNl
X3VkcHNjdHA2KSA9IHNvY2tldChBRl9JTkVUNiwgU09DS19ER1JBTSwgSVBQUk9UT19VRFApKSA9
PSAtMSkgewotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVk
KF9XSU4zMikKIAkJCVNDVFBEQkcoU0NUUF9ERUJVR19VU1IsICJDYW4ndCBjcmVhdGUgc29ja2V0
IGZvciBTQ1RQL1VEUC9JUHY2IChlcnJubyA9ICVkKS5cbiIsIFdTQUdldExhc3RFcnJvcigpKTsK
ICNlbHNlCiAJCQlTQ1RQREJHKFNDVFBfREVCVUdfVVNSLCAiQ2FuJ3QgY3JlYXRlIHNvY2tldCBm
b3IgU0NUUC9VRFAvSVB2NiAoZXJybm8gPSAlZCkuXG4iLCBlcnJubyk7CkBAIC0xMzE5LDcgKzEz
MTksNyBAQCByZWN2X3RocmVhZF9pbml0KHZvaWQpCiAJCX0KICNpZiBkZWZpbmVkKElQVjZfUkVD
VlBLVElORk8pCiAJCWlmIChzZXRzb2Nrb3B0KFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNj
dHA2KSwgSVBQUk9UT19JUFY2LCBJUFY2X1JFQ1ZQS1RJTkZPLCAoY29uc3Qgdm9pZCAqKSZvbiwg
KGludClzaXplb2YoaW50KSkgPCAwKSB7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5k
b3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogCQkJU0NUUERCRyhTQ1RQX0RFQlVHX1VTUiwgIkNh
bid0IHNldCBJUFY2X1JFQ1ZQS1RJTkZPIG9uIHNvY2tldCBmb3IgU0NUUC9VRFAvSVB2NiAoZXJy
bm8gPSAlZCkuXG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7CiAJCQljbG9zZXNvY2tldChTQ1RQX0JB
U0VfVkFSKHVzZXJzcGFjZV91ZHBzY3RwNikpOwogI2Vsc2UKQEAgLTEzMzAsNyArMTMzMCw3IEBA
IHJlY3ZfdGhyZWFkX2luaXQodm9pZCkKIAkJfSBlbHNlIHsKICNlbHNlCiAJCWlmIChzZXRzb2Nr
b3B0KFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNjdHA2KSwgSVBQUk9UT19JUFY2LCBJUFY2
X1BLVElORk8sIChjb25zdCB2b2lkICopJm9uLCAoaW50KXNpemVvZihpbnQpKSA8IDApIHsKLSNp
ZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJ
CQlTQ1RQREJHKFNDVFBfREVCVUdfVVNSLCAiQ2FuJ3Qgc2V0IElQVjZfUEtUSU5GTyBvbiBzb2Nr
ZXQgZm9yIFNDVFAvVURQL0lQdjYgKGVycm5vID0gJWQpLlxuIiwgV1NBR2V0TGFzdEVycm9yKCkp
OwogCQkJY2xvc2Vzb2NrZXQoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfdWRwc2N0cDYpKTsKICNl
bHNlCkBAIC0xMzQxLDE0ICsxMzQxLDE0IEBAIHJlY3ZfdGhyZWFkX2luaXQodm9pZCkKIAkJfSBl
bHNlIHsKICNlbmRpZgogCQkJaWYgKHNldHNvY2tvcHQoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2Vf
dWRwc2N0cDYpLCBJUFBST1RPX0lQVjYsIElQVjZfVjZPTkxZLCAoY29uc3Qgdm9pZCAqKSZvbiwg
KHNvY2tsZW5fdClzaXplb2Yob24pKSA8IDApIHsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29z
X1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJCQkJU0NUUERCRyhTQ1RQX0RFQlVHX1VT
UiwgIkNhbid0IHNldCBJUFY2X1Y2T05MWSBvbiBzb2NrZXQgZm9yIFNDVFAvVURQL0lQdjYgKGVy
cm5vID0gJWQpLlxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOwogI2Vsc2UKIAkJCQlTQ1RQREJHKFND
VFBfREVCVUdfVVNSLCAiQ2FuJ3Qgc2V0IElQVjZfVjZPTkxZIG9uIHNvY2tldCBmb3IgU0NUUC9V
RFAvSVB2NiAoZXJybm8gPSAlZCkuXG4iLCBlcnJubyk7CiAjZW5kaWYKIAkJCX0KIAkJCWlmIChz
ZXRzb2Nrb3B0KFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNjdHA2KSwgU09MX1NPQ0tFVCwg
U09fUkNWVElNRU8sIChjb25zdCB2b2lkICopJnRpbWVvdXQsIHNpemVvZih0aW1lb3V0KSkgPCAw
KSB7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJ
TjMyKQogCQkJCVNDVFBEQkcoU0NUUF9ERUJVR19VU1IsICJDYW4ndCBzZXQgdGltZW91dCBvbiBz
b2NrZXQgZm9yIFNDVFAvVURQL0lQdjYgKGVycm5vID0gJWQpLlxuIiwgV1NBR2V0TGFzdEVycm9y
KCkpOwogCQkJCWNsb3Nlc29ja2V0KFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNjdHA2KSk7
CiAjZWxzZQpAQCAtMTM2NSw3ICsxMzY1LDcgQEAgcmVjdl90aHJlYWRfaW5pdCh2b2lkKQogCQkJ
CWFkZHJfaXB2Ni5zaW42X3BvcnQgICAgICAgID0gaHRvbnMoU0NUUF9CQVNFX1NZU0NUTChzY3Rw
X3VkcF90dW5uZWxpbmdfcG9ydCkpOwogCQkJCWFkZHJfaXB2Ni5zaW42X2FkZHIgICAgICAgID0g
aW42YWRkcl9hbnk7CiAJCQkJaWYgKGJpbmQoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfdWRwc2N0
cDYpLCAoY29uc3Qgc3RydWN0IHNvY2thZGRyICopJmFkZHJfaXB2Niwgc2l6ZW9mKHN0cnVjdCBz
b2NrYWRkcl9pbjYpKSA8IDApIHsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3Mp
CisjaWYgZGVmaW5lZChfV0lOMzIpCiAJCQkJCVNDVFBEQkcoU0NUUF9ERUJVR19VU1IsICJDYW4n
dCBiaW5kIHNvY2tldCBmb3IgU0NUUC9VRFAvSVB2NiAoZXJybm8gPSAlZCkuXG4iLCBXU0FHZXRM
YXN0RXJyb3IoKSk7CiAJCQkJCWNsb3Nlc29ja2V0KFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Vk
cHNjdHA2KSk7CiAjZWxzZQpAQCAtMTM4MSw3ICsxMzgxLDcgQEAgcmVjdl90aHJlYWRfaW5pdCh2
b2lkKQogCQl9CiAJfQogI2VuZGlmCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19EYXJ3aW4p
IHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRHJhZ29uRmx5KSB8fCBkZWZpbmVkKF9fVXNlcnNw
YWNlX29zX0ZyZWVCU0QpCisjaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19EcmFn
b25GbHlfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykKICNpZiBkZWZpbmVkKElORVQpIHx8IGRl
ZmluZWQoSU5FVDYpCiAJaWYgKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3JvdXRlKSAhPSAtMSkg
ewogCQlpbnQgcmM7CkBAIC0xNDAwLDcgKzE0MDAsNyBAQCByZWN2X3RocmVhZF9pbml0KHZvaWQp
CiAKIAkJaWYgKChyYyA9IHNjdHBfdXNlcnNwYWNlX3RocmVhZF9jcmVhdGUoJlNDVFBfQkFTRV9W
QVIocmVjdnRocmVhZHJhdyksICZyZWN2X2Z1bmN0aW9uX3JhdykpKSB7CiAJCQlTQ1RQREJHKFND
VFBfREVCVUdfVVNSLCAiQ2FuJ3Qgc3RhcnQgU0NUUC9JUHY0IHJlY3YgdGhyZWFkICglZCkuXG4i
LCByYyk7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQo
X1dJTjMyKQogCQkJY2xvc2Vzb2NrZXQoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfcmF3c2N0cCkp
OwogI2Vsc2UKIAkJCWNsb3NlKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jhd3NjdHApKTsKQEAg
LTE0MTMsNyArMTQxMyw3IEBAIHJlY3ZfdGhyZWFkX2luaXQodm9pZCkKIAogCQlpZiAoKHJjID0g
c2N0cF91c2Vyc3BhY2VfdGhyZWFkX2NyZWF0ZSgmU0NUUF9CQVNFX1ZBUihyZWN2dGhyZWFkdWRw
KSwgJnJlY3ZfZnVuY3Rpb25fdWRwKSkpIHsKIAkJCVNDVFBEQkcoU0NUUF9ERUJVR19VU1IsICJD
YW4ndCBzdGFydCBTQ1RQL1VEUC9JUHY0IHJlY3YgdGhyZWFkICglZCkuXG4iLCByYyk7Ci0jaWYg
ZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogCQkJ
Y2xvc2Vzb2NrZXQoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfdWRwc2N0cCkpOwogI2Vsc2UKIAkJ
CWNsb3NlKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNjdHApKTsKQEAgLTE0MjgsNyArMTQy
OCw3IEBAIHJlY3ZfdGhyZWFkX2luaXQodm9pZCkKIAogCQlpZiAoKHJjID0gc2N0cF91c2Vyc3Bh
Y2VfdGhyZWFkX2NyZWF0ZSgmU0NUUF9CQVNFX1ZBUihyZWN2dGhyZWFkcmF3NiksICZyZWN2X2Z1
bmN0aW9uX3JhdzYpKSkgewogCQkJU0NUUERCRyhTQ1RQX0RFQlVHX1VTUiwgIkNhbid0IHN0YXJ0
IFNDVFAvSVB2NiByZWN2IHRocmVhZCAoJWQpLlxuIiwgcmMpOwotI2lmIGRlZmluZWQoX19Vc2Vy
c3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIAkJCWNsb3Nlc29ja2V0KFND
VFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jhd3NjdHA2KSk7CiAjZWxzZQogCQkJY2xvc2UoU0NUUF9C
QVNFX1ZBUih1c2Vyc3BhY2VfcmF3c2N0cDYpKTsKQEAgLTE0NDEsNyArMTQ0MSw3IEBAIHJlY3Zf
dGhyZWFkX2luaXQodm9pZCkKIAogCQlpZiAoKHJjID0gc2N0cF91c2Vyc3BhY2VfdGhyZWFkX2Ny
ZWF0ZSgmU0NUUF9CQVNFX1ZBUihyZWN2dGhyZWFkdWRwNiksICZyZWN2X2Z1bmN0aW9uX3VkcDYp
KSkgewogCQkJU0NUUERCRyhTQ1RQX0RFQlVHX1VTUiwgIkNhbid0IHN0YXJ0IFNDVFAvVURQL0lQ
djYgcmVjdiB0aHJlYWQgKCVkKS5cbiIsIHJjKTsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29z
X1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJCQljbG9zZXNvY2tldChTQ1RQX0JBU0Vf
VkFSKHVzZXJzcGFjZV91ZHBzY3RwNikpOwogI2Vsc2UKIAkJCWNsb3NlKFNDVFBfQkFTRV9WQVIo
dXNlcnNwYWNlX3VkcHNjdHA2KSk7CkBAIC0xNDU1LDQyICsxNDU1LDYzIEBAIHJlY3ZfdGhyZWFk
X2luaXQodm9pZCkKIHZvaWQKIHJlY3ZfdGhyZWFkX2Rlc3Ryb3kodm9pZCkKIHsKLSNpZiBkZWZp
bmVkKF9fVXNlcnNwYWNlX29zX0RhcndpbikgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19EcmFn
b25GbHkpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRnJlZUJTRCkKKyNpZiBkZWZpbmVkKF9f
QVBQTEVfXykgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9f
KQogI2lmIGRlZmluZWQoSU5FVCkgfHwgZGVmaW5lZChJTkVUNikKIAlpZiAoU0NUUF9CQVNFX1ZB
Uih1c2Vyc3BhY2Vfcm91dGUpICE9IC0xKSB7CiAJCWNsb3NlKFNDVFBfQkFTRV9WQVIodXNlcnNw
YWNlX3JvdXRlKSk7CisJCXB0aHJlYWRfam9pbihTQ1RQX0JBU0VfVkFSKHJlY3Z0aHJlYWRyb3V0
ZSksIE5VTEwpOwogCX0KICNlbmRpZgogI2VuZGlmCiAjaWYgZGVmaW5lZChJTkVUKQogCWlmIChT
Q1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3RwKSAhPSAtMSkgewotI2lmIGRlZmluZWQoX19V
c2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIAkJY2xvc2Vzb2NrZXQo
U0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfcmF3c2N0cCkpOworCQlTQ1RQX0JBU0VfVkFSKHVzZXJz
cGFjZV9yYXdzY3RwKSA9IC0xOworCQlXYWl0Rm9yU2luZ2xlT2JqZWN0KFNDVFBfQkFTRV9WQVIo
cmVjdnRocmVhZHJhdyksIElORklOSVRFKTsKKwkJQ2xvc2VIYW5kbGUoU0NUUF9CQVNFX1ZBUihy
ZWN2dGhyZWFkcmF3KSk7CiAjZWxzZQogCQljbG9zZShTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9y
YXdzY3RwKSk7CisJCVNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jhd3NjdHApID0gLTE7CisJCXB0
aHJlYWRfam9pbihTQ1RQX0JBU0VfVkFSKHJlY3Z0aHJlYWRyYXcpLCBOVUxMKTsKICNlbmRpZgog
CX0KIAlpZiAoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfdWRwc2N0cCkgIT0gLTEpIHsKLSNpZiBk
ZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJCWNs
b3Nlc29ja2V0KFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNjdHApKTsKKwkJU0NUUF9CQVNF
X1ZBUih1c2Vyc3BhY2VfdWRwc2N0cCkgPSAtMTsKKwkJV2FpdEZvclNpbmdsZU9iamVjdChTQ1RQ
X0JBU0VfVkFSKHJlY3Z0aHJlYWR1ZHApLCBJTkZJTklURSk7CisJCUNsb3NlSGFuZGxlKFNDVFBf
QkFTRV9WQVIocmVjdnRocmVhZHVkcCkpOwogI2Vsc2UKIAkJY2xvc2UoU0NUUF9CQVNFX1ZBUih1
c2Vyc3BhY2VfdWRwc2N0cCkpOworCQlTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV91ZHBzY3RwKSA9
IC0xOworCQlwdGhyZWFkX2pvaW4oU0NUUF9CQVNFX1ZBUihyZWN2dGhyZWFkdWRwKSwgTlVMTCk7
CiAjZW5kaWYKIAl9CiAjZW5kaWYKICNpZiBkZWZpbmVkKElORVQ2KQogCWlmIChTQ1RQX0JBU0Vf
VkFSKHVzZXJzcGFjZV9yYXdzY3RwNikgIT0gLTEpIHsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNl
X29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJCWNsb3Nlc29ja2V0KFNDVFBfQkFT
RV9WQVIodXNlcnNwYWNlX3Jhd3NjdHA2KSk7CisJCVNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jh
d3NjdHA2KSA9IC0xOworCQlXYWl0Rm9yU2luZ2xlT2JqZWN0KFNDVFBfQkFTRV9WQVIocmVjdnRo
cmVhZHJhdzYpLCBJTkZJTklURSk7CisJCUNsb3NlSGFuZGxlKFNDVFBfQkFTRV9WQVIocmVjdnRo
cmVhZHJhdzYpKTsKICNlbHNlCiAJCWNsb3NlKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jhd3Nj
dHA2KSk7CisJCVNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jhd3NjdHA2KSA9IC0xOworCQlwdGhy
ZWFkX2pvaW4oU0NUUF9CQVNFX1ZBUihyZWN2dGhyZWFkcmF3NiksIE5VTEwpOwogI2VuZGlmCiAJ
fQogCWlmIChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV91ZHBzY3RwNikgIT0gLTEpIHsKLSNpZiBk
ZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCisJCVND
VFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNjdHA2KSA9IC0xOwogCQljbG9zZXNvY2tldChTQ1RQ
X0JBU0VfVkFSKHVzZXJzcGFjZV91ZHBzY3RwNikpOworCQlXYWl0Rm9yU2luZ2xlT2JqZWN0KFND
VFBfQkFTRV9WQVIocmVjdnRocmVhZHVkcDYpLCBJTkZJTklURSk7CisJCUNsb3NlSGFuZGxlKFND
VFBfQkFTRV9WQVIocmVjdnRocmVhZHVkcDYpKTsKICNlbHNlCiAJCWNsb3NlKFNDVFBfQkFTRV9W
QVIodXNlcnNwYWNlX3VkcHNjdHA2KSk7CisJCVNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNj
dHA2KSA9IC0xOworCQlwdGhyZWFkX2pvaW4oU0NUUF9CQVNFX1ZBUihyZWN2dGhyZWFkdWRwNiks
IE5VTEwpOwogI2VuZGlmCiAJfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3Rw
bGliL3VzZXJfcmVjdl90aHJlYWQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9yZWN2X3Ro
cmVhZC5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3Rw
bGliL3VzcnNjdHBsaWIvdXNlcl9yb3V0ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX3Jv
dXRlLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBs
aWIvdXNyc2N0cGxpYi91c2VyX3NvY2tldC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX3Nv
Y2tldC5jCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggOWZlNjk3NmEwYzc4
N2ZiNmQwZTU5ZjJhZWExMDMxMmU1NzU2YzZiNC4uN2ViMjQ3MDViMTc0YmU5MmJiY2VkOTk5YzUz
YzkxN2UwZmRkYWUxMgotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfc29ja2V0LmMKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX3NvY2tldC5jCkBAIC0zOSwxNyArMzksMTggQEAK
ICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfc3lzY3RsLmg+CiAjaW5jbHVkZSA8bmV0aW5ldC9zY3Rw
X2lucHV0Lmg+CiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX3BlZWxvZmYuaD4KKyNpbmNsdWRlIDxu
ZXRpbmV0L3NjdHBfY2FsbG91dC5oPgogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9jcmMzMi5oPgog
I2lmZGVmIElORVQ2CiAjaW5jbHVkZSA8bmV0aW5ldDYvc2N0cDZfdmFyLmg+CiAjZW5kaWYKLSNp
ZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0ZyZWVCU0QpCisjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykKICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KICNlbmRpZgotI2lmIGRlZmluZWQoX19Vc2Vyc3Bh
Y2Vfb3NfTGludXgpCisjaWYgZGVmaW5lZChfX2xpbnV4X18pCiAjZGVmaW5lIF9fRkFWT1JfQlNE
ICAgIC8qIChvbiBVYnVudHUgYXQgbGVhc3QpIGVuYWJsZXMgVURQIGhlYWRlciBmaWVsZCBuYW1l
cyBsaWtlIEJTRCBpbiBSRkMgNzY4ICovCiAjZW5kaWYKLSNpZiAhZGVmaW5lZCAoX19Vc2Vyc3Bh
Y2Vfb3NfV2luZG93cykKKyNpZiAhZGVmaW5lZChfV0lOMzIpCiAjaWYgZGVmaW5lZCBJTkVUIHx8
IGRlZmluZWQgSU5FVDYKICNpbmNsdWRlIDxuZXRpbmV0L3VkcC5oPgogI2VuZGlmCkBAIC03Nywx
MiArNzgsOCBAQCBleHRlcm4gaW50IHNjdHBfc29zZW5kKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1
Y3Qgc29ja2FkZHIgKmFkZHIsIHN0cnVjdCB1aW8gKnVpbwogZXh0ZXJuIGludCBzY3RwX2F0dGFj
aChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IHByb3RvLCB1aW50MzJfdCB2cmZfaWQpOwogZXh0ZXJu
IGludCBzY3RwY29ubl9hdHRhY2goc3RydWN0IHNvY2tldCAqc28sIGludCBwcm90bywgdWludDMy
X3QgdnJmX2lkKTsKIAotdm9pZAotdXNyc2N0cF9pbml0KHVpbnQxNl90IHBvcnQsCi0gICAgICAg
ICAgICAgaW50ICgqY29ubl9vdXRwdXQpKHZvaWQgKmFkZHIsIHZvaWQgKmJ1ZmZlciwgc2l6ZV90
IGxlbmd0aCwgdWludDhfdCB0b3MsIHVpbnQ4X3Qgc2V0X2RmKSwKLSAgICAgICAgICAgICB2b2lk
ICgqZGVidWdfcHJpbnRmKShjb25zdCBjaGFyICpmb3JtYXQsIC4uLikpCi17Ci0jaWYgZGVmaW5l
ZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorc3RhdGljIHZvaWQgaW5pdF9zeW5jKHZvaWQpIHsK
KyNpZiBkZWZpbmVkKF9XSU4zMikKICNpZiBkZWZpbmVkKElORVQpIHx8IGRlZmluZWQoSU5FVDYp
CiAJV1NBREFUQSB3c2FEYXRhOwogCkBAIC0xMDQsNyArMTAxLDI1IEBAIHVzcnNjdHBfaW5pdCh1
aW50MTZfdCBwb3J0LAogCXB0aHJlYWRfbXV0ZXhhdHRyX2Rlc3Ryb3koJm11dGV4X2F0dHIpOwog
CXB0aHJlYWRfY29uZF9pbml0KCZhY2NlcHRfY29uZCwgTlVMTCk7CiAjZW5kaWYKLQlzY3RwX2lu
aXQocG9ydCwgY29ubl9vdXRwdXQsIGRlYnVnX3ByaW50Zik7Cit9CisKK3ZvaWQKK3VzcnNjdHBf
aW5pdCh1aW50MTZfdCBwb3J0LAorICAgICAgICAgICAgIGludCAoKmNvbm5fb3V0cHV0KSh2b2lk
ICphZGRyLCB2b2lkICpidWZmZXIsIHNpemVfdCBsZW5ndGgsIHVpbnQ4X3QgdG9zLCB1aW50OF90
IHNldF9kZiksCisgICAgICAgICAgICAgdm9pZCAoKmRlYnVnX3ByaW50ZikoY29uc3QgY2hhciAq
Zm9ybWF0LCAuLi4pKQoreworCWluaXRfc3luYygpOworCXNjdHBfaW5pdChwb3J0LCBjb25uX291
dHB1dCwgZGVidWdfcHJpbnRmLCAxKTsKK30KKworCit2b2lkCit1c3JzY3RwX2luaXRfbm90aHJl
YWRzKHVpbnQxNl90IHBvcnQsCisJCSAgICAgICBpbnQgKCpjb25uX291dHB1dCkodm9pZCAqYWRk
ciwgdm9pZCAqYnVmZmVyLCBzaXplX3QgbGVuZ3RoLCB1aW50OF90IHRvcywgdWludDhfdCBzZXRf
ZGYpLAorCQkgICAgICAgdm9pZCAoKmRlYnVnX3ByaW50ZikoY29uc3QgY2hhciAqZm9ybWF0LCAu
Li4pKQoreworCWluaXRfc3luYygpOworCXNjdHBfaW5pdChwb3J0LCBjb25uX291dHB1dCwgZGVi
dWdfcHJpbnRmLCAwKTsKIH0KIAogCkBAIC0xNTQsMjggKzE2OSwxNyBAQCBzb2NhbnRzZW5kbW9y
ZShzdHJ1Y3Qgc29ja2V0ICpzbykKIGludAogc2J3YWl0KHN0cnVjdCBzb2NrYnVmICpzYikKIHsK
LSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pIC8qIF9fVXNlcnNwYWNlX18gKi8KLQogCVNPQ0tC
VUZfTE9DS19BU1NFUlQoc2IpOwogCiAJc2ItPnNiX2ZsYWdzIHw9IFNCX1dBSVQ7Ci0jaWYgZGVm
aW5lZCAoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIAlpZiAo
U2xlZXBDb25kaXRpb25WYXJpYWJsZUNTKCYoc2ItPnNiX2NvbmQpLCAmKHNiLT5zYl9tdHgpLCBJ
TkZJTklURSkpCi0JCXJldHVybiAwOworCQlyZXR1cm4gKDApOwogCWVsc2UKLQkJcmV0dXJuIC0x
OworCQlyZXR1cm4gKC0xKTsKICNlbHNlCiAJcmV0dXJuIChwdGhyZWFkX2NvbmRfd2FpdCgmKHNi
LT5zYl9jb25kKSwgJihzYi0+c2JfbXR4KSkpOwogI2VuZGlmCi0KLSNlbHNlCi0JU09DS0JVRl9M
T0NLX0FTU0VSVChzYik7Ci0KLQlzYi0+c2JfZmxhZ3MgfD0gU0JfV0FJVDsKLQlyZXR1cm4gKG1z
bGVlcCgmc2ItPnNiX2NjLCAmc2ItPnNiX210eCwKLQkgICAgKHNiLT5zYl9mbGFncyAmIFNCX05P
SU5UUikgPyBQU09DSyA6IFBTT0NLIHwgUENBVENILCAic2J3YWl0IiwKLQkgICAgc2ItPnNiX3Rp
bWVvKSk7Ci0jZW5kaWYKIH0KIAogCkBAIC0zNDYsMjEgKzM1MCwyMSBAQCB2b2lkCiBzb2lzZGlz
Y29ubmVjdGluZyhzdHJ1Y3Qgc29ja2V0ICpzbykKIHsKIAotICAgICAgICAvKgotICAgICAgICAg
KiBOb3RlOiBUaGlzIGNvZGUgYXNzdW1lcyB0aGF0IFNPQ0tfTE9DSyhzbykgYW5kCi0gICAgICAg
ICAqIFNPQ0tCVUZfTE9DSygmc28tPnNvX3JjdikgYXJlIHRoZSBzYW1lLgotICAgICAgICAgKi8K
LSAgICAgICAgU09DS0JVRl9MT0NLKCZzby0+c29fcmN2KTsKLSAgICAgICAgc28tPnNvX3N0YXRl
ICY9IH5TU19JU0NPTk5FQ1RJTkc7Ci0gICAgICAgIHNvLT5zb19zdGF0ZSB8PSBTU19JU0RJU0NP
Tk5FQ1RJTkc7Ci0gICAgICAgIHNvLT5zb19yY3Yuc2Jfc3RhdGUgfD0gU0JTX0NBTlRSQ1ZNT1JF
OwotICAgICAgICBzb3J3YWtldXBfbG9ja2VkKHNvKTsKLSAgICAgICAgU09DS0JVRl9MT0NLKCZz
by0+c29fc25kKTsKLSAgICAgICAgc28tPnNvX3NuZC5zYl9zdGF0ZSB8PSBTQlNfQ0FOVFNFTkRN
T1JFOwotICAgICAgICBzb3d3YWtldXBfbG9ja2VkKHNvKTsKLSAgICAgICAgd2FrZXVwKCJkdW1t
eSIsc28pOwotICAgICAgICAvKiByZXF1aXJlcyAyIGFyZ3MgYnV0IHRoaXMgd2FzIGluIG9yaWcg
Ki8KLSAgICAgICAgLyogd2FrZXVwKCZzby0+c29fdGltZW8pOyAqLworCS8qCisJICogTm90ZTog
VGhpcyBjb2RlIGFzc3VtZXMgdGhhdCBTT0NLX0xPQ0soc28pIGFuZAorCSAqIFNPQ0tCVUZfTE9D
Sygmc28tPnNvX3JjdikgYXJlIHRoZSBzYW1lLgorCSAqLworCVNPQ0tCVUZfTE9DSygmc28tPnNv
X3Jjdik7CisJc28tPnNvX3N0YXRlICY9IH5TU19JU0NPTk5FQ1RJTkc7CisJc28tPnNvX3N0YXRl
IHw9IFNTX0lTRElTQ09OTkVDVElORzsKKwlzby0+c29fcmN2LnNiX3N0YXRlIHw9IFNCU19DQU5U
UkNWTU9SRTsKKwlzb3J3YWtldXBfbG9ja2VkKHNvKTsKKwlTT0NLQlVGX0xPQ0soJnNvLT5zb19z
bmQpOworCXNvLT5zb19zbmQuc2Jfc3RhdGUgfD0gU0JTX0NBTlRTRU5ETU9SRTsKKwlzb3d3YWtl
dXBfbG9ja2VkKHNvKTsKKwl3YWtldXAoImR1bW15Iixzbyk7CisJLyogcmVxdWlyZXMgMiBhcmdz
IGJ1dCB0aGlzIHdhcyBpbiBvcmlnICovCisJLyogd2FrZXVwKCZzby0+c29fdGltZW8pOyAqLwog
fQogCiAKQEAgLTM3OSw3ICszODMsNyBAQCB2b2lkCiB3YWtldXAodm9pZCAqaWRlbnQsIHN0cnVj
dCBzb2NrZXQgKnNvKQogewogCVNPQ0tfTE9DSyhzbyk7Ci0jaWYgZGVmaW5lZCAoX19Vc2Vyc3Bh
Y2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIAlXYWtlQWxsQ29uZGl0aW9uVmFy
aWFibGUoJihzbyktPnRpbWVvX2NvbmQpOwogI2Vsc2UKIAlwdGhyZWFkX2NvbmRfYnJvYWRjYXN0
KCYoc28pLT50aW1lb19jb25kKTsKQEAgLTQwNSw3ICs0MDksNyBAQCB3YWtldXBfb25lKHZvaWQg
KmlkZW50KQogCSAgc3Vic2lkaWFyeSBzb2NrZXRzLgogCSAqLwogCUFDQ0VQVF9MT0NLKCk7Ci0j
aWYgZGVmaW5lZCAoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikK
IAlXYWtlQWxsQ29uZGl0aW9uVmFyaWFibGUoJmFjY2VwdF9jb25kKTsKICNlbHNlCiAJcHRocmVh
ZF9jb25kX2Jyb2FkY2FzdCgmYWNjZXB0X2NvbmQpOwpAQCAtNTUzLDI4ICs1NTcsNiBAQCBzb25l
d2Nvbm4oc3RydWN0IHNvY2tldCAqaGVhZCwgaW50IGNvbm5zdGF0dXMpCiAKIH0KIAotLyogRnJv
bSAvc3JjL3N5cy9zeXMvc3lzcHJvdG8uaCAqLwotc3RydWN0IHNjdHBfZ2VuZXJpY19zZW5kbXNn
X2FyZ3MgewotCWludCBzZDsKLQljYWRkcl90IG1zZzsKLQlpbnQgbWxlbjsKLQljYWRkcl90IHRv
OwotCXNvY2tsZW5fdCB0b2xlbjsgIC8qIHdhcyBfX3NvY2tsZW5fdCAqLwotCXN0cnVjdCBzY3Rw
X3NuZHJjdmluZm8gKiBzaW5mbzsKLQlpbnQgZmxhZ3M7Ci19OwotCi1zdHJ1Y3Qgc2N0cF9nZW5l
cmljX3JlY3Ztc2dfYXJncyB7Ci0gICAgICAgIGludCBzZDsKLSAgICAgICAgc3RydWN0IGlvdmVj
ICppb3Y7Ci0gICAgICAgIGludCBpb3ZsZW47Ci0gICAgICAgIHN0cnVjdCBzb2NrYWRkciAqZnJv
bTsKLSAgICAgICAgc29ja2xlbl90ICpmcm9tbGVuYWRkcjsgLyogd2FzIF9fc29ja2xlbl90ICov
Ci0gICAgICAgIHN0cnVjdCBzY3RwX3NuZHJjdmluZm8gKnNpbmZvOwotICAgICAgICBpbnQgKm1z
Z19mbGFnczsKLX07Ci0KLQogIC8qCiAgICBTb3VyY2U6IC9zcmMvc3lzL2dudS9mcy94ZnMvRnJl
ZUJTRC94ZnNfaW9jdGwuYwogICovCkBAIC03NTksMTEgKzc0MSwxMSBAQCB1c2Vyc3BhY2Vfc2N0
cF9zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvLAogICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgbGVuLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIgKnRvLAogICAg
ICAgICAgICAgICAgICAgICAgICBzb2NrbGVuX3QgdG9sZW4sCi0gICAgICAgICAgICAgICAgICAg
ICAgIHVfaW50MzJfdCBwcGlkLAotICAgICAgICAgICAgICAgICAgICAgICB1X2ludDMyX3QgZmxh
Z3MsCi0gICAgICAgICAgICAgICAgICAgICAgIHVfaW50MTZfdCBzdHJlYW1fbm8sCi0gICAgICAg
ICAgICAgICAgICAgICAgIHVfaW50MzJfdCB0aW1ldG9saXZlLAotICAgICAgICAgICAgICAgICAg
ICAgICB1X2ludDMyX3QgY29udGV4dCkKKyAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg
cHBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MsCisgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQxNl90IHN0cmVhbV9ubywKKyAgICAgICAgICAgICAgICAgICAgICAg
dWludDMyX3QgdGltZXRvbGl2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgY29u
dGV4dCkKIHsKIAlzdHJ1Y3Qgc2N0cF9zbmRyY3ZpbmZvIHNuZHJjdmluZm8sICpzaW5mbyA9ICZz
bmRyY3ZpbmZvOwogCXN0cnVjdCB1aW8gYXVpbzsKQEAgLTk0Myw1OSArOTI1LDU4IEBAIHVzZXJz
cGFjZV9zY3RwX3NlbmRtYnVmKHN0cnVjdCBzb2NrZXQgKnNvLAogICAgIHNpemVfdCBsZW4sCiAg
ICAgc3RydWN0IHNvY2thZGRyICp0bywKICAgICBzb2NrbGVuX3QgdG9sZW4sCi0gICAgdV9pbnQz
Ml90IHBwaWQsCi0gICAgdV9pbnQzMl90IGZsYWdzLAotICAgIHVfaW50MTZfdCBzdHJlYW1fbm8s
Ci0gICAgdV9pbnQzMl90IHRpbWV0b2xpdmUsCi0gICAgdV9pbnQzMl90IGNvbnRleHQpCi17Ci0K
LSAgICBzdHJ1Y3Qgc2N0cF9zbmRyY3ZpbmZvIHNuZHJjdmluZm8sICpzaW5mbyA9ICZzbmRyY3Zp
bmZvOwotICAgIC8qICAgIHN0cnVjdCB1aW8gYXVpbzsKLSAgICAgICAgICBzdHJ1Y3QgaW92ZWMg
aW92WzFdOyAqLwotICAgIGludCBlcnJvciA9IDA7Ci0gICAgaW50IHVmbGFncyA9IDA7Ci0gICAg
c3NpemVfdCByZXR2YWw7Ci0KLSAgICBzaW5mby0+c2luZm9fcHBpZCA9IHBwaWQ7Ci0gICAgc2lu
Zm8tPnNpbmZvX2ZsYWdzID0gZmxhZ3M7Ci0gICAgc2luZm8tPnNpbmZvX3N0cmVhbSA9IHN0cmVh
bV9ubzsKLSAgICBzaW5mby0+c2luZm9fdGltZXRvbGl2ZSA9IHRpbWV0b2xpdmU7Ci0gICAgc2lu
Zm8tPnNpbmZvX2NvbnRleHQgPSBjb250ZXh0OwotICAgIHNpbmZvLT5zaW5mb19hc3NvY19pZCA9
IDA7Ci0KLSAgICAvKiBQZXJmb3JtIGVycm9yIGNoZWNrcyBvbiBkZXN0aW5hdGlvbiAodG8pICov
Ci0gICAgaWYgKHRvbGVuID4gU09DS19NQVhBRERSTEVOKXsKLSAgICAgICAgZXJyb3IgPSAoRU5B
TUVUT09MT05HKTsKLSAgICAgICAgZ290byBzZW5kbXNnX3JldHVybjsKLSAgICB9Ci0gICAgaWYg
KHRvbGVuIDwgKHNvY2tsZW5fdClvZmZzZXRvZihzdHJ1Y3Qgc29ja2FkZHIsIHNhX2RhdGEpKXsK
LSAgICAgICAgZXJyb3IgPSAoRUlOVkFMKTsKLSAgICAgICAgZ290byBzZW5kbXNnX3JldHVybjsK
LSAgICB9Ci0gICAgLyogQWRkaW5nIHRoZSBmb2xsb3dpbmcgYXMgcGFydCBvZiBkZWZlbnNpdmUg
cHJvZ3JhbW1pbmcsIGluIGNhc2UgdGhlIGFwcGxpY2F0aW9uCi0gICAgICAgZG9lcyBub3QgZG8g
aXQgd2hlbiBwcmVwYXJpbmcgdGhlIGRlc3RpbmF0aW9uIGFkZHJlc3MuKi8KKyAgICB1aW50MzJf
dCBwcGlkLAorICAgIHVpbnQzMl90IGZsYWdzLAorICAgIHVpbnQxNl90IHN0cmVhbV9ubywKKyAg
ICB1aW50MzJfdCB0aW1ldG9saXZlLAorICAgIHVpbnQzMl90IGNvbnRleHQpCit7CisKKwlzdHJ1
Y3Qgc2N0cF9zbmRyY3ZpbmZvIHNuZHJjdmluZm8sICpzaW5mbyA9ICZzbmRyY3ZpbmZvOworCS8q
ICAgIHN0cnVjdCB1aW8gYXVpbzsKKwkgICAgICBzdHJ1Y3QgaW92ZWMgaW92WzFdOyAqLworCWlu
dCBlcnJvciA9IDA7CisJaW50IHVmbGFncyA9IDA7CisJc3NpemVfdCByZXR2YWw7CisKKwlzaW5m
by0+c2luZm9fcHBpZCA9IHBwaWQ7CisJc2luZm8tPnNpbmZvX2ZsYWdzID0gZmxhZ3M7CisJc2lu
Zm8tPnNpbmZvX3N0cmVhbSA9IHN0cmVhbV9ubzsKKwlzaW5mby0+c2luZm9fdGltZXRvbGl2ZSA9
IHRpbWV0b2xpdmU7CisJc2luZm8tPnNpbmZvX2NvbnRleHQgPSBjb250ZXh0OworCXNpbmZvLT5z
aW5mb19hc3NvY19pZCA9IDA7CisKKwkvKiBQZXJmb3JtIGVycm9yIGNoZWNrcyBvbiBkZXN0aW5h
dGlvbiAodG8pICovCisJaWYgKHRvbGVuID4gU09DS19NQVhBRERSTEVOKXsKKwkJZXJyb3IgPSAo
RU5BTUVUT09MT05HKTsKKwkJZ290byBzZW5kbXNnX3JldHVybjsKKwl9CisJaWYgKHRvbGVuIDwg
KHNvY2tsZW5fdClvZmZzZXRvZihzdHJ1Y3Qgc29ja2FkZHIsIHNhX2RhdGEpKXsKKwkJZXJyb3Ig
PSAoRUlOVkFMKTsKKwkJZ290byBzZW5kbXNnX3JldHVybjsKKwl9CisJLyogQWRkaW5nIHRoZSBm
b2xsb3dpbmcgYXMgcGFydCBvZiBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcsIGluIGNhc2UgdGhlIGFw
cGxpY2F0aW9uCisJICAgZG9lcyBub3QgZG8gaXQgd2hlbiBwcmVwYXJpbmcgdGhlIGRlc3RpbmF0
aW9uIGFkZHJlc3MuKi8KICNpZmRlZiBIQVZFX1NBX0xFTgotICAgIHRvLT5zYV9sZW4gPSB0b2xl
bjsKKwl0by0+c2FfbGVuID0gdG9sZW47CiAjZW5kaWYKIAotICAgIGVycm9yID0gc2N0cF9sb3dl
cl9zb3NlbmQoc28sIHRvLCBOVUxMLyp1aW8qLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChzdHJ1Y3QgbWJ1ZiAqKW1idWZkYXRhLCAoc3RydWN0IG1idWYgKilOVUxMLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdWZsYWdzLCBzaW5mbyk7CisJZXJyb3IgPSBzY3RwX2xv
d2VyX3Nvc2VuZChzbywgdG8sIE5VTEwvKnVpbyovLAorCSAgICAgICAgICAgICAgICAgICAgICAg
ICAoc3RydWN0IG1idWYgKiltYnVmZGF0YSwgKHN0cnVjdCBtYnVmICopTlVMTCwKKwkgICAgICAg
ICAgICAgICAgICAgICAgICAgdWZsYWdzLCBzaW5mbyk7CiBzZW5kbXNnX3JldHVybjoKLSAgICAv
KiBUT0RPOiBOZWVkcyBhIGNvbmRpdGlvbiBmb3Igbm9uLWJsb2NraW5nIHdoZW4gZXJyb3IgaXMg
RVdPVUxEQkxPQ0sgKi8KLSAgICBpZiAoMCA9PSBlcnJvcikKLSAgICAgICAgcmV0dmFsID0gbGVu
OwotICAgIGVsc2UgaWYgKGVycm9yID09IEVXT1VMREJMT0NLKSB7Ci0gICAgICAgIGVycm5vID0g
RVdPVUxEQkxPQ0s7Ci0gICAgICAgIHJldHZhbCA9IC0xOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IFNDVFBfUFJJTlRGKCIlczogZXJyb3IgPSAlZFxuIiwgX19mdW5jX18sIGVycm9yKTsKLSAgICAg
ICAgZXJybm8gPSBlcnJvcjsKLSAgICAgICAgcmV0dmFsID0gLTE7Ci0gICAgfQotICAgIHJldHVy
biAocmV0dmFsKTsKLQorCS8qIFRPRE86IE5lZWRzIGEgY29uZGl0aW9uIGZvciBub24tYmxvY2tp
bmcgd2hlbiBlcnJvciBpcyBFV09VTERCTE9DSyAqLworCWlmICgwID09IGVycm9yKQorCQlyZXR2
YWwgPSBsZW47CisJZWxzZSBpZiAoZXJyb3IgPT0gRVdPVUxEQkxPQ0spIHsKKwkJZXJybm8gPSBF
V09VTERCTE9DSzsKKwkJcmV0dmFsID0gLTE7CisJfSBlbHNlIHsKKwkJU0NUUF9QUklOVEYoIiVz
OiBlcnJvciA9ICVkXG4iLCBfX2Z1bmNfXywgZXJyb3IpOworCQllcnJubyA9IGVycm9yOworCQly
ZXR2YWwgPSAtMTsKKwl9CisJcmV0dXJuIChyZXR2YWwpOwogfQogCiAKQEAgLTEwNTQsNyArMTAz
NSw3IEBAIHVzZXJzcGFjZV9zY3RwX3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc28sCiAJaWYgKGVy
cm9yKSB7CiAJCWlmICgoYXVpby51aW9fcmVzaWQgIT0gdWxlbikgJiYKIAkJICAgIChlcnJvciA9
PSBFSU5UUiB8fAotI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX05ldEJTRCkKKyNpZiAhZGVm
aW5lZChfX05ldEJTRF9fKQogCQkgICAgIGVycm9yID09IEVSRVNUQVJUIHx8CiAjZW5kaWYKIAkJ
ICAgICBlcnJvciA9PSBFV09VTERCTE9DSykpIHsKQEAgLTExNDcsMTMgKzExMjgsMTYgQEAgdXNy
c2N0cF9yZWN2dihzdHJ1Y3Qgc29ja2V0ICpzbywKIAlpZiAoZXJybm8pIHsKIAkJaWYgKChhdWlv
LnVpb19yZXNpZCAhPSB1bGVuKSAmJgogCQkgICAgKGVycm5vID09IEVJTlRSIHx8Ci0jaWYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2Vfb3NfTmV0QlNEKQorI2lmICFkZWZpbmVkKF9fTmV0QlNEX18pCiAJ
CSAgICAgZXJybm8gPT0gRVJFU1RBUlQgfHwKICNlbmRpZgogCQkgICAgIGVycm5vID09IEVXT1VM
REJMT0NLKSkgewogCQkJZXJybm8gPSAwOwogCQl9CiAJfQorCWlmIChlcnJubyAhPSAwKSB7CisJ
CWdvdG8gb3V0OworCX0KIAlpZiAoKCptc2dfZmxhZ3MgJiBNU0dfTk9USUZJQ0FUSU9OKSA9PSAw
KSB7CiAJCXN0cnVjdCBzY3RwX2lucGNiICppbnA7CiAKQEAgLTEyMDUsNyArMTE4OSwxMCBAQCB1
c3JzY3RwX3JlY3Z2KHN0cnVjdCBzb2NrZXQgKnNvLAogCQkJKmluZm9sZW4gPSAwOwogCQl9CiAJ
fQotCWlmICgoZnJvbWxlbnAgIT0gTlVMTCkgJiYgKGZyb21sZW4gPiAwKSAmJiAoZnJvbSAhPSBO
VUxMKSkgeworCWlmICgoZnJvbWxlbnAgIT0gTlVMTCkgJiYKKwkgICAgKGZyb21sZW4gPiAwKSAm
JgorCSAgICAoZnJvbSAhPSBOVUxMKSAmJgorCSAgICAodWxlbiA+IGF1aW8udWlvX3Jlc2lkKSkg
ewogCQlzd2l0Y2ggKGZyb20tPnNhX2ZhbWlseSkgewogI2lmIGRlZmluZWQoSU5FVCkKIAkJY2Fz
ZSBBRl9JTkVUOgpAQCAtMTIyOCw2ICsxMjE1LDcgQEAgdXNyc2N0cF9yZWN2dihzdHJ1Y3Qgc29j
a2V0ICpzbywKIAkJCSpmcm9tbGVucCA9IGZyb21sZW47CiAJCX0KIAl9CitvdXQ6CiAJaWYgKGVy
cm5vID09IDApIHsKIAkJLyogcmVhZHkgcmV0dXJuIHZhbHVlICovCiAJCXJldHVybiAodWxlbiAt
IGF1aW8udWlvX3Jlc2lkKTsKQEAgLTEyMzksNyArMTIyNyw2IEBAIHVzcnNjdHBfcmVjdnYoc3Ry
dWN0IHNvY2tldCAqc28sCiAKIAogCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogLyogVGFr
ZW4gZnJvbSAgL3NyYy9zeXMva2Vybi91aXBjX3NvY2tldC5jCiAgKiBhbmQgbW9kaWZpZWQgZm9y
IF9fVXNlcnNwYWNlX18KICAqIHNvY3JlYXRlIHJldHVybnMgYSBzb2NrZXQuICBUaGUgc29ja2V0
IHNob3VsZCBiZQpAQCAtMTMxMCw3NCArMTI5Nyw2IEBAIHNvY3JlYXRlKGludCBkb20sIHN0cnVj
dCBzb2NrZXQgKiphc28sIGludCB0eXBlLCBpbnQgcHJvdG8pCiAJKmFzbyA9IHNvOwogCXJldHVy
biAoMCk7CiB9Ci0jZWxzZQotLyogVGhlIGtlcm5lbCB2ZXJzaW9uIGZvciByZWZlcmVuY2UgaXMg
YmVsb3cuIFRoZSAjZWxzZQotICAgc2hvdWxkIGJlIHJlbW92ZWQgb25jZSB0aGUgX19Vc2Vyc3Bh
Y2VfXwotICAgdmVyc2lvbiBpcyB0ZXN0ZWQuCi0gKiBzb2NyZWF0ZSByZXR1cm5zIGEgc29ja2V0
IHdpdGggYSByZWYgY291bnQgb2YgMS4gIFRoZSBzb2NrZXQgc2hvdWxkIGJlCi0gKiBjbG9zZWQg
d2l0aCBzb2Nsb3NlKCkuCi0gKi8KLWludAotc29jcmVhdGUoaW50IGRvbSwgc3RydWN0IHNvY2tl
dCAqKmFzbywgaW50IHR5cGUsIGludCBwcm90bywKLSAgICBzdHJ1Y3QgdWNyZWQgKmNyZWQsIHN0
cnVjdCB0aHJlYWQgKnRkKQotewotCXN0cnVjdCBwcm90b3N3ICpwcnA7Ci0Jc3RydWN0IHNvY2tl
dCAqc287Ci0JaW50IGVycm9yOwotCi0JaWYgKHByb3RvKQotCQlwcnAgPSBwZmZpbmRwcm90byhk
b20sIHByb3RvLCB0eXBlKTsKLQllbHNlCi0JCXBycCA9IHBmZmluZHR5cGUoZG9tLCB0eXBlKTsK
LQotCWlmIChwcnAgPT0gTlVMTCB8fCBwcnAtPnByX3VzcnJlcXMtPnBydV9hdHRhY2ggPT0gTlVM
TCB8fAotCSAgICBwcnAtPnByX3VzcnJlcXMtPnBydV9hdHRhY2ggPT0gcHJ1X2F0dGFjaF9ub3Rz
dXBwKQotCQlyZXR1cm4gKEVQUk9UT05PU1VQUE9SVCk7Ci0KLQlpZiAoamFpbGVkKGNyZWQpICYm
IGphaWxfc29ja2V0X3VuaXhpcHJvdXRlX29ubHkgJiYKLQkgICAgcHJwLT5wcl9kb21haW4tPmRv
bV9mYW1pbHkgIT0gUEZfTE9DQUwgJiYKLQkgICAgcHJwLT5wcl9kb21haW4tPmRvbV9mYW1pbHkg
IT0gUEZfSU5FVCAmJgotCSAgICBwcnAtPnByX2RvbWFpbi0+ZG9tX2ZhbWlseSAhPSBQRl9ST1VU
RSkgewotCQlyZXR1cm4gKEVQUk9UT05PU1VQUE9SVCk7Ci0JfQotCi0JaWYgKHBycC0+cHJfdHlw
ZSAhPSB0eXBlKQotCQlyZXR1cm4gKEVQUk9UT1RZUEUpOwotCXNvID0gc29hbGxvYygpOwotCWlm
IChzbyA9PSBOVUxMKQotCQlyZXR1cm4gKEVOT0JVRlMpOwotCi0JVEFJTFFfSU5JVCgmc28tPnNv
X2luY29tcCk7Ci0JVEFJTFFfSU5JVCgmc28tPnNvX2NvbXApOwotCXNvLT5zb190eXBlID0gdHlw
ZTsKLQlzby0+c29fY3JlZCA9IGNyaG9sZChjcmVkKTsKLQlzby0+c29fcHJvdG8gPSBwcnA7Ci0j
aWZkZWYgTUFDCi0JbWFjX2NyZWF0ZV9zb2NrZXQoY3JlZCwgc28pOwotI2VuZGlmCi0Ja25saXN0
X2luaXQoJnNvLT5zb19yY3Yuc2Jfc2VsLnNpX25vdGUsIFNPQ0tCVUZfTVRYKCZzby0+c29fcmN2
KSwKLQkgICAgTlVMTCwgTlVMTCwgTlVMTCk7Ci0Ja25saXN0X2luaXQoJnNvLT5zb19zbmQuc2Jf
c2VsLnNpX25vdGUsIFNPQ0tCVUZfTVRYKCZzby0+c29fc25kKSwKLQkgICAgTlVMTCwgTlVMTCwg
TlVMTCk7Ci0Jc28tPnNvX2NvdW50ID0gMTsKLQkvKgotCSAqIEF1dG8tc2l6aW5nIG9mIHNvY2tl
dCBidWZmZXJzIGlzIG1hbmFnZWQgYnkgdGhlIHByb3RvY29scyBhbmQKLQkgKiB0aGUgYXBwcm9w
cmlhdGUgZmxhZ3MgbXVzdCBiZSBzZXQgaW4gdGhlIHBydV9hdHRhY2ggZnVuY3Rpb24uCi0JICov
Ci0JZXJyb3IgPSAoKnBycC0+cHJfdXNycmVxcy0+cHJ1X2F0dGFjaCkoc28sIHByb3RvLCB0ZCk7
Ci0JaWYgKGVycm9yKSB7Ci0JCUtBU1NFUlQoc28tPnNvX2NvdW50ID09IDEsICgic29jcmVhdGU6
IHNvX2NvdW50ICVkIiwKLQkJICAgIHNvLT5zb19jb3VudCkpOwotCQlzby0+c29fY291bnQgPSAw
OwotCQlzb2RlYWxsb2Moc28pOwotCQlyZXR1cm4gKGVycm9yKTsKLQl9Ci0JKmFzbyA9IHNvOwot
CXJldHVybiAoMCk7Ci19Ci0jZW5kaWYKLQotCiAKIAogLyogVGFrZW4gZnJvbSAgL3NyYy9zeXMv
a2Vybi91aXBjX3N5c2NhbGxzLmMKQEAgLTE0MDUsNyArMTMyNCw3IEBAIHN0cnVjdCBzb2NrZXQg
KgogdXNyc2N0cF9zb2NrZXQoaW50IGRvbWFpbiwgaW50IHR5cGUsIGludCBwcm90b2NvbCwKIAkg
ICAgICAgaW50ICgqcmVjZWl2ZV9jYikoc3RydWN0IHNvY2tldCAqc29jaywgdW5pb24gc2N0cF9z
b2Nrc3RvcmUgYWRkciwgdm9pZCAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBkYXRhbGVuLCBzdHJ1Y3Qgc2N0cF9yY3ZpbmZvLCBpbnQgZmxhZ3MsIHZvaWQg
KnVscF9pbmZvKSwKLQkgICAgICAgaW50ICgqc2VuZF9jYikoc3RydWN0IHNvY2tldCAqc29jaywg
dWludDMyX3Qgc2JfZnJlZSksCisJICAgICAgIGludCAoKnNlbmRfY2IpKHN0cnVjdCBzb2NrZXQg
KnNvY2ssIHVpbnQzMl90IHNiX2ZyZWUsIHZvaWQgKnVscF9pbmZvKSwKIAkgICAgICAgdWludDMy
X3Qgc2JfdGhyZXNob2xkLAogCSAgICAgICB2b2lkICp1bHBfaW5mbykKIHsKQEAgLTE0NzIsNyAr
MTM5MSw2IEBAIHNicmVzZXJ2ZShzdHJ1Y3Qgc29ja2J1ZiAqc2IsIHVfbG9uZyBjYywgc3RydWN0
IHNvY2tldCAqc28pCiAJcmV0dXJuIChlcnJvcik7CiB9CiAKLSNpZiBkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiBpbnQKIHNvcmVzZXJ2ZShzdHJ1Y3Qgc29ja2V0ICpzbywgdV9sb25nIHNuZGNjLCB1
X2xvbmcgcmN2Y2MpCiB7CkBAIC0xNTAyLDQ1ICsxNDIwLDEyIEBAIHNvcmVzZXJ2ZShzdHJ1Y3Qg
c29ja2V0ICpzbywgdV9sb25nIHNuZGNjLCB1X2xvbmcgcmN2Y2MpCiAJU09DS0JVRl9VTkxPQ0so
JnNvLT5zb19zbmQpOwogCXJldHVybiAoRU5PQlVGUyk7CiB9Ci0jZWxzZSAvKiBrZXJuZWwgdmVy
c2lvbiBmb3IgcmVmZXJlbmNlICovCi1pbnQKLXNvcmVzZXJ2ZShzdHJ1Y3Qgc29ja2V0ICpzbywg
dV9sb25nIHNuZGNjLCB1X2xvbmcgcmN2Y2MpCi17Ci0Jc3RydWN0IHRocmVhZCAqdGQgPSBjdXJ0
aHJlYWQ7Ci0KLQlTT0NLQlVGX0xPQ0soJnNvLT5zb19zbmQpOwotCVNPQ0tCVUZfTE9DSygmc28t
PnNvX3Jjdik7Ci0JaWYgKHNicmVzZXJ2ZV9sb2NrZWQoJnNvLT5zb19zbmQsIHNuZGNjLCBzbywg
dGQpID09IDApCi0JCWdvdG8gYmFkOwotCWlmIChzYnJlc2VydmVfbG9ja2VkKCZzby0+c29fcmN2
LCByY3ZjYywgc28sIHRkKSA9PSAwKQotCQlnb3RvIGJhZDI7Ci0JaWYgKHNvLT5zb19yY3Yuc2Jf
bG93YXQgPT0gMCkKLQkJc28tPnNvX3Jjdi5zYl9sb3dhdCA9IDE7Ci0JaWYgKHNvLT5zb19zbmQu
c2JfbG93YXQgPT0gMCkKLQkJc28tPnNvX3NuZC5zYl9sb3dhdCA9IE1DTEJZVEVTOwotCWlmIChz
by0+c29fc25kLnNiX2xvd2F0ID4gc28tPnNvX3NuZC5zYl9oaXdhdCkKLQkJc28tPnNvX3NuZC5z
Yl9sb3dhdCA9IHNvLT5zb19zbmQuc2JfaGl3YXQ7Ci0JU09DS0JVRl9VTkxPQ0soJnNvLT5zb19y
Y3YpOwotCVNPQ0tCVUZfVU5MT0NLKCZzby0+c29fc25kKTsKLQlyZXR1cm4gKDApOwotYmFkMjoK
LQlzYnJlbGVhc2VfbG9ja2VkKCZzby0+c29fc25kLCBzbyk7Ci1iYWQ6Ci0JU09DS0JVRl9VTkxP
Q0soJnNvLT5zb19yY3YpOwotCVNPQ0tCVUZfVU5MT0NLKCZzby0+c29fc25kKTsKLQlyZXR1cm4g
KEVOT0JVRlMpOwotfQotI2VuZGlmCi0KLQotCiAKIAogLyogVGFrZW4gZnJvbSAgL3NyYy9zeXMv
a2Vybi91aXBjX3NvY2tidWYuYwogICogYW5kIG1vZGlmaWVkIGZvciBfX1VzZXJzcGFjZV9fCiAg
Ki8KIAotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIHZvaWQKIHNvd2FrZXVwKHN0cnVjdCBz
b2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2J1ZiAqc2IpCiB7CkBAIC0xNTUwLDUzICsxNDM1LDE0IEBA
IHNvd2FrZXVwKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2J1ZiAqc2IpCiAJc2ItPnNi
X2ZsYWdzICY9IH5TQl9TRUw7CiAJaWYgKHNiLT5zYl9mbGFncyAmIFNCX1dBSVQpIHsKIAkJc2It
PnNiX2ZsYWdzICY9IH5TQl9XQUlUOwotI2lmIGRlZmluZWQgKF9fVXNlcnNwYWNlX29zX1dpbmRv
d3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJCVdha2VBbGxDb25kaXRpb25WYXJpYWJsZSgmKHNi
KS0+c2JfY29uZCk7CiAjZWxzZQogCQlwdGhyZWFkX2NvbmRfYnJvYWRjYXN0KCYoc2IpLT5zYl9j
b25kKTsKICNlbmRpZgogCX0KIAlTT0NLQlVGX1VOTE9DSyhzYik7Ci0JLypfX1VzZXJzcGFjZV9f
IHdoYXQgdG9kbyBhYm91dCBzb191cGNhbGw/Ki8KLQotfQotI2Vsc2UgLyoga2VybmVsIHZlcnNp
b24gZm9yIHJlZmVyZW5jZSAqLwotLyoKLSAqIFdha2V1cCBwcm9jZXNzZXMgd2FpdGluZyBvbiBh
IHNvY2tldCBidWZmZXIuICBEbyBhc3luY2hyb25vdXMgbm90aWZpY2F0aW9uCi0gKiB2aWEgU0lH
SU8gaWYgdGhlIHNvY2tldCBoYXMgdGhlIFNTX0FTWU5DIGZsYWcgc2V0LgotICoKLSAqIENhbGxl
ZCB3aXRoIHRoZSBzb2NrZXQgYnVmZmVyIGxvY2sgaGVsZDsgd2lsbCByZWxlYXNlIHRoZSBsb2Nr
IGJ5IHRoZSBlbmQKLSAqIG9mIHRoZSBmdW5jdGlvbi4gIFRoaXMgYWxsb3dzIHRoZSBjYWxsZXIg
dG8gYWNxdWlyZSB0aGUgc29ja2V0IGJ1ZmZlciBsb2NrCi0gKiB3aGlsZSB0ZXN0aW5nIGZvciB0
aGUgbmVlZCBmb3IgdmFyaW91cyBzb3J0cyBvZiB3YWtldXAgYW5kIGhvbGQgaXQgdGhyb3VnaAot
ICogdG8gdGhlIHBvaW50IHdoZXJlIGl0J3Mgbm8gbG9uZ2VyIHJlcXVpcmVkLiAgV2UgY3VycmVu
dGx5IGhvbGQgdGhlIGxvY2sKLSAqIHRocm91Z2ggY2FsbHMgb3V0IHRvIG90aGVyIHN1YnN5c3Rl
bXMgKHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBrcXVldWUpLCBhbmQKLSAqIHRoZW4gcmVsZWFzZSBp
dCB0byBhdm9pZCBsb2NrIG9yZGVyIGlzc3Vlcy4gIEl0J3Mgbm90IGNsZWFyIHRoYXQncwotICog
Y29ycmVjdC4KLSAqLwotdm9pZAotc293YWtldXAoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBz
b2NrYnVmICpzYikKLXsKLQotCVNPQ0tCVUZfTE9DS19BU1NFUlQoc2IpOwotCi0Jc2Vsd2FrZXVw
cHJpKCZzYi0+c2Jfc2VsLCBQU09DSyk7Ci0Jc2ItPnNiX2ZsYWdzICY9IH5TQl9TRUw7Ci0JaWYg
KHNiLT5zYl9mbGFncyAmIFNCX1dBSVQpIHsKLQkJc2ItPnNiX2ZsYWdzICY9IH5TQl9XQUlUOwot
CQl3YWtldXAoJnNiLT5zYl9jYyk7Ci0JfQotCUtOT1RFX0xPQ0tFRCgmc2ItPnNiX3NlbC5zaV9u
b3RlLCAwKTsKLQlTT0NLQlVGX1VOTE9DSyhzYik7Ci0JaWYgKChzby0+c29fc3RhdGUgJiBTU19B
U1lOQykgJiYgc28tPnNvX3NpZ2lvICE9IE5VTEwpCi0JCXBnc2lnaW8oJnNvLT5zb19zaWdpbywg
U0lHSU8sIDApOwotCWlmIChzYi0+c2JfZmxhZ3MgJiBTQl9VUENBTEwpCi0JCSgqc28tPnNvX3Vw
Y2FsbCkoc28sIHNvLT5zb191cGNhbGxhcmcsIE1fTk9XQUlUKTsKLQlpZiAoc2ItPnNiX2ZsYWdz
ICYgU0JfQUlPKQotCQlhaW9fc3dha2Uoc28sIHNiKTsKLQltdHhfYXNzZXJ0KFNPQ0tCVUZfTVRY
KHNiKSwgTUFfTk9UT1dORUQpOwogfQotI2VuZGlmCi0KIAogCiAvKiBUYWtlbiBmcm9tICAvc3Jj
L3N5cy9rZXJuL3VpcGNfc29ja2V0LmMKQEAgLTE3NjgsNyArMTYxNCw3IEBAIHVzZXJfYWNjZXB0
KHN0cnVjdCBzb2NrZXQgKmhlYWQsICBzdHJ1Y3Qgc29ja2FkZHIgKipuYW1lLCBzb2NrbGVuX3Qg
Km5hbWVsZW4sIHN0CiAJCQloZWFkLT5zb19lcnJvciA9IEVDT05OQUJPUlRFRDsKIAkJCWJyZWFr
OwogCQl9Ci0jaWYgZGVmaW5lZCAoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVk
KF9XSU4zMikKIAkJaWYgKFNsZWVwQ29uZGl0aW9uVmFyaWFibGVDUygmYWNjZXB0X2NvbmQsICZh
Y2NlcHRfbXR4LCBJTkZJTklURSkpCiAJCQllcnJvciA9IDA7CiAJCWVsc2UKQEAgLTIwODksNyAr
MTkzNSw3IEBAIGludCB1c2VyX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2Nr
YWRkciAqc2EpCiAKIAlTT0NLX0xPQ0soc28pOwogCXdoaWxlICgoc28tPnNvX3N0YXRlICYgU1Nf
SVNDT05ORUNUSU5HKSAmJiBzby0+c29fZXJyb3IgPT0gMCkgewotI2lmIGRlZmluZWQgKF9fVXNl
cnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJCWlmIChTbGVlcENvbmRp
dGlvblZhcmlhYmxlQ1MoU09DS19DT05EKHNvKSwgU09DS19NVFgoc28pLCBJTkZJTklURSkpCiAJ
CQllcnJvciA9IDA7CiAJCWVsc2UKQEAgLTIwOTgsNyArMTk0NCw3IEBAIGludCB1c2VyX2Nvbm5l
Y3Qoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqc2EpCiAJCWVycm9yID0gcHRo
cmVhZF9jb25kX3dhaXQoU09DS19DT05EKHNvKSwgU09DS19NVFgoc28pKTsKICNlbmRpZgogCQlp
ZiAoZXJyb3IpIHsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX05ldEJTRCkKKyNpZiBkZWZp
bmVkKF9fTmV0QlNEX18pCiAJCQlpZiAoZXJyb3IgPT0gRUlOVFIpIHsKICNlbHNlCiAJCQlpZiAo
ZXJyb3IgPT0gRUlOVFIgfHwgZXJyb3IgPT0gRVJFU1RBUlQpIHsKQEAgLTIxMTgsNyArMTk2NCw3
IEBAIGJhZDoKIAlpZiAoIWludGVycnVwdGVkKSB7CiAJCXNvLT5zb19zdGF0ZSAmPSB+U1NfSVND
T05ORUNUSU5HOwogCX0KLSNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19OZXRCU0QpCisjaWYg
IWRlZmluZWQoX19OZXRCU0RfXykKIAlpZiAoZXJyb3IgPT0gRVJFU1RBUlQpIHsKIAkJZXJyb3Ig
PSBFSU5UUjsKIAl9CkBAIC0yMTI5LDcgKzE5NzUsNyBAQCBkb25lMToKIAogaW50IHVzcnNjdHBf
Y29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICpuYW1lLCBpbnQgbmFt
ZWxlbikKIHsKLQlzdHJ1Y3Qgc29ja2FkZHIgKnNhOworCXN0cnVjdCBzb2NrYWRkciAqc2EgPSBO
VUxMOwogCiAJZXJybm8gPSBnZXRzb2NrYWRkcigmc2EsIChjYWRkcl90KW5hbWUsIG5hbWVsZW4p
OwogCWlmIChlcnJubykKQEAgLTIyMjgsNyArMjA3NCw3IEBAIHVzcnNjdHBfZmluaXNoKHZvaWQp
CiAJCXJldHVybiAoLTEpOwogCX0KIAlzY3RwX2ZpbmlzaCgpOwotI2lmIGRlZmluZWQoX19Vc2Vy
c3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIAlEZWxldGVDb25kaXRpb25W
YXJpYWJsZSgmYWNjZXB0X2NvbmQpOwogCURlbGV0ZUNyaXRpY2FsU2VjdGlvbigmYWNjZXB0X210
eCk7CiAjaWYgZGVmaW5lZChJTkVUKSB8fCBkZWZpbmVkKElORVQ2KQpAQCAtMjM5OSw2ICsyMjQ1
LDIwIEBAIHVzcnNjdHBfZ2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IGxldmVsLCBp
bnQgb3B0aW9uX25hbWUsCiAJCQkJKm9wdGlvbl9sZW4gPSAoc29ja2xlbl90KXNpemVvZihzdHJ1
Y3QgbGluZ2VyKTsKIAkJCQlyZXR1cm4gKDApOwogCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgU09f
RVJST1I6CisJCQlpZiAoKm9wdGlvbl9sZW4gPCAoc29ja2xlbl90KXNpemVvZihpbnQpKSB7CisJ
CQkJZXJybm8gPSBFSU5WQUw7CisJCQkJcmV0dXJuICgtMSk7CisJCQl9IGVsc2UgeworCQkJCWlu
dCAqaW50dmFsOworCisJCQkJaW50dmFsID0gKGludCAqKW9wdGlvbl92YWx1ZTsKKwkJCQkqaW50
dmFsID0gc28tPnNvX2Vycm9yOworCQkJCSpvcHRpb25fbGVuID0gKHNvY2tsZW5fdClzaXplb2Yo
aW50KTsKKwkJCQlyZXR1cm4gKDApOworCQkJfQorCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQll
cnJubyA9IEVJTlZBTDsKIAkJCXJldHVybiAoLTEpOwpAQCAtMjU1MCwxMCArMjQxMCwxNiBAQCB1
c3JzY3RwX3NldF91bHBpbmZvKHN0cnVjdCBzb2NrZXQgKnNvLCB2b2lkICp1bHBfaW5mbykKIAly
ZXR1cm4gKHJlZ2lzdGVyX3VscF9pbmZvKHNvLCB1bHBfaW5mbykpOwogfQogCisKK2ludAordXNy
c2N0cF9nZXRfdWxwaW5mbyhzdHJ1Y3Qgc29ja2V0ICpzbywgdm9pZCAqKnB1bHBfaW5mbykKK3sK
KwlyZXR1cm4gKHJldHJpZXZlX3VscF9pbmZvKHNvLCBwdWxwX2luZm8pKTsKK30KKwogaW50CiB1
c3JzY3RwX2JpbmR4KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHJzLCBp
bnQgYWRkcmNudCwgaW50IGZsYWdzKQogewotCXN0cnVjdCBzY3RwX2dldGFkZHJlc3NlcyAqZ2Fk
ZHJzOwogCXN0cnVjdCBzb2NrYWRkciAqc2E7CiAjaWZkZWYgSU5FVAogCXN0cnVjdCBzb2NrYWRk
cl9pbiAqc2luOwpAQCAtMjU2Miw5ICsyNDI4LDkgQEAgdXNyc2N0cF9iaW5keChzdHJ1Y3Qgc29j
a2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRycywgaW50IGFkZHJjbnQsIGludCBmbGFncykK
IAlzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW42OwogI2VuZGlmCiAJaW50IGk7Ci0Jc2l6ZV90IGFy
Z3N6OwogI2lmIGRlZmluZWQoSU5FVCkgfHwgZGVmaW5lZChJTkVUNikKLQl1aW50MTZfdCBzcG9y
dCA9IDA7CisJdWludDE2X3Qgc3BvcnQ7CisJYm9vbCBmaXhfcG9ydDsKICNlbmRpZgogCiAJLyog
dmFsaWRhdGUgdGhlIGZsYWdzICovCkBAIC0yNTc4LDYgKzI0NDQsMTAgQEAgdXNyc2N0cF9iaW5k
eChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRycywgaW50IGFkZHJjbnQs
IGludCBmbGFncykKIAkJZXJybm8gPSBFSU5WQUw7CiAJCXJldHVybiAoLTEpOwogCX0KKyNpZiBk
ZWZpbmVkKElORVQpIHx8IGRlZmluZWQoSU5FVDYpCisJc3BvcnQgPSAwOworCWZpeF9wb3J0ID0g
ZmFsc2U7CisjZW5kaWYKIAkvKiBGaXJzdCBwcmUtc2NyZWVuIHRoZSBhZGRyZXNzZXMgKi8KIAlz
YSA9IGFkZHJzOwogCWZvciAoaSA9IDA7IGkgPCBhZGRyY250OyBpKyspIHsKQEAgLTI2MDIsNiAr
MjQ3Miw3IEBAIHVzcnNjdHBfYmluZHgoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRk
ciAqYWRkcnMsIGludCBhZGRyY250LCBpbnQgZmxhZ3MpCiAJCQkJfSBlbHNlIHsKIAkJCQkJLyog
c2F2ZSBvZmYgdGhlIHBvcnQgKi8KIAkJCQkJc3BvcnQgPSBzaW4tPnNpbl9wb3J0OworCQkJCQlm
aXhfcG9ydCA9IChpID4gMCk7CiAJCQkJfQogCQkJfQogI2lmbmRlZiBIQVZFX1NBX0xFTgpAQCAt
MjYyOSw2ICsyNTAwLDcgQEAgdXNyc2N0cF9iaW5keChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0
IHNvY2thZGRyICphZGRycywgaW50IGFkZHJjbnQsIGludCBmbGFncykKIAkJCQl9IGVsc2Ugewog
CQkJCQkvKiBzYXZlIG9mZiB0aGUgcG9ydCAqLwogCQkJCQlzcG9ydCA9IHNpbjYtPnNpbjZfcG9y
dDsKKwkJCQkJZml4X3BvcnQgPSAoaSA+IDApOwogCQkJCX0KIAkJCX0KICNpZm5kZWYgSEFWRV9T
QV9MRU4KQEAgLTI2NDUsNDEgKzI1MTcsMzAgQEAgdXNyc2N0cF9iaW5keChzdHJ1Y3Qgc29ja2V0
ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRycywgaW50IGFkZHJjbnQsIGludCBmbGFncykKIAkJ
c2EgPSAoc3RydWN0IHNvY2thZGRyICopKChjYWRkcl90KXNhICsgc2EtPnNhX2xlbik7CiAjZW5k
aWYKIAl9Ci0JYXJnc3ogPSBzaXplb2Yoc3RydWN0IHNjdHBfZ2V0YWRkcmVzc2VzKSArCi0JICAg
ICAgICBzaXplb2Yoc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UpOwotCWlmICgoZ2FkZHJzID0gKHN0
cnVjdCBzY3RwX2dldGFkZHJlc3NlcyAqKW1hbGxvYyhhcmdzeikpID09IE5VTEwpIHsKLQkJZXJy
bm8gPSBFTk9NRU07Ci0JCXJldHVybiAoLTEpOwotCX0KIAlzYSA9IGFkZHJzOwogCWZvciAoaSA9
IDA7IGkgPCBhZGRyY250OyBpKyspIHsKICNpZm5kZWYgSEFWRV9TQV9MRU4KIAkJc2l6ZV90IHNh
X2xlbjsKKwogI2VuZGlmCi0JCW1lbXNldChnYWRkcnMsIDAsIGFyZ3N6KTsKLQkJZ2FkZHJzLT5z
Z2V0X2Fzc29jX2lkID0gMDsKICNpZmRlZiBIQVZFX1NBX0xFTgotCQltZW1jcHkoZ2FkZHJzLT5h
ZGRyLCBzYSwgc2EtPnNhX2xlbik7CiAjaWYgZGVmaW5lZChJTkVUKSB8fCBkZWZpbmVkKElORVQ2
KQotCQlpZiAoKGkgPT0gMCkgJiYgKHNwb3J0ICE9IDApKSB7Ci0JCQlzd2l0Y2ggKGdhZGRycy0+
YWRkci0+c2FfZmFtaWx5KSB7CisJCWlmIChmaXhfcG9ydCkgeworCQkJc3dpdGNoIChzYS0+c2Ff
ZmFtaWx5KSB7CiAjaWZkZWYgSU5FVAogCQkJY2FzZSBBRl9JTkVUOgotCQkJCXNpbiA9IChzdHJ1
Y3Qgc29ja2FkZHJfaW4gKilnYWRkcnMtPmFkZHI7Ci0JCQkJc2luLT5zaW5fcG9ydCA9IHNwb3J0
OworCQkJCSgoc3RydWN0IHNvY2thZGRyX2luICopc2EpLT5zaW5fcG9ydCA9IHNwb3J0OwogCQkJ
CWJyZWFrOwogI2VuZGlmCiAjaWZkZWYgSU5FVDYKIAkJCWNhc2UgQUZfSU5FVDY6Ci0JCQkJc2lu
NiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopZ2FkZHJzLT5hZGRyOwotCQkJCXNpbjYtPnNpbjZf
cG9ydCA9IHNwb3J0OworCQkJCSgoc3RydWN0IHNvY2thZGRyX2luNiAqKXNhKS0+c2luNl9wb3J0
ID0gc3BvcnQ7CiAJCQkJYnJlYWs7CiAjZW5kaWYKIAkJCX0KIAkJfQogI2VuZGlmCi0JCWlmICh1
c3JzY3RwX3NldHNvY2tvcHQoc28sIElQUFJPVE9fU0NUUCwgZmxhZ3MsIGdhZGRycywgKHNvY2ts
ZW5fdClhcmdzeikgIT0gMCkgewotCQkJZnJlZShnYWRkcnMpOworCQlpZiAodXNyc2N0cF9zZXRz
b2Nrb3B0KHNvLCBJUFBST1RPX1NDVFAsIGZsYWdzLCBzYSwgc2EtPnNhX2xlbikgIT0gMCkgewog
CQkJcmV0dXJuICgtMSk7CiAJCX0KIAkJc2EgPSAoc3RydWN0IHNvY2thZGRyICopKChjYWRkcl90
KXNhICsgc2EtPnNhX2xlbik7CkBAIC0yNjk5LDM4ICsyNTYwLDMzIEBAIHVzcnNjdHBfYmluZHgo
c3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqYWRkcnMsIGludCBhZGRyY250LCBp
bnQgZmxhZ3MpCiAJCQlzYV9sZW4gPSAwOwogCQkJYnJlYWs7CiAJCX0KLQkJbWVtY3B5KGdhZGRy
cy0+YWRkciwgc2EsIHNhX2xlbik7CiAJCS8qCiAJCSAqIE5vdywgaWYgdGhlcmUgd2FzIGEgcG9y
dCBtZW50aW9uZWQsIGFzc3VyZSB0aGF0IHRoZQogCQkgKiBmaXJzdCBhZGRyZXNzIGhhcyB0aGF0
IHBvcnQgdG8gbWFrZSBzdXJlIGl0IGZhaWxzIG9yCiAJCSAqIHN1Y2NlZWRzIGNvcnJlY3RseS4K
IAkJICovCiAjaWYgZGVmaW5lZChJTkVUKSB8fCBkZWZpbmVkKElORVQ2KQotCQlpZiAoKGkgPT0g
MCkgJiYgKHNwb3J0ICE9IDApKSB7Ci0JCQlzd2l0Y2ggKGdhZGRycy0+YWRkci0+c2FfZmFtaWx5
KSB7CisJCWlmIChmaXhfcG9ydCkgeworCQkJc3dpdGNoIChzYS0+c2FfZmFtaWx5KSB7CiAjaWZk
ZWYgSU5FVAogCQkJY2FzZSBBRl9JTkVUOgotCQkJCXNpbiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4g
KilnYWRkcnMtPmFkZHI7Ci0JCQkJc2luLT5zaW5fcG9ydCA9IHNwb3J0OworCQkJCSgoc3RydWN0
IHNvY2thZGRyX2luICopc2EpLT5zaW5fcG9ydCA9IHNwb3J0OwogCQkJCWJyZWFrOwogI2VuZGlm
CiAjaWZkZWYgSU5FVDYKIAkJCWNhc2UgQUZfSU5FVDY6Ci0JCQkJc2luNiA9IChzdHJ1Y3Qgc29j
a2FkZHJfaW42ICopZ2FkZHJzLT5hZGRyOwotCQkJCXNpbjYtPnNpbjZfcG9ydCA9IHNwb3J0Owor
CQkJCSgoc3RydWN0IHNvY2thZGRyX2luNiAqKXNhKS0+c2luNl9wb3J0ID0gc3BvcnQ7CiAJCQkJ
YnJlYWs7CiAjZW5kaWYKIAkJCX0KIAkJfQogI2VuZGlmCi0JCWlmICh1c3JzY3RwX3NldHNvY2tv
cHQoc28sIElQUFJPVE9fU0NUUCwgZmxhZ3MsIGdhZGRycywgKHNvY2tsZW5fdClhcmdzeikgIT0g
MCkgewotCQkJZnJlZShnYWRkcnMpOworCQlpZiAodXNyc2N0cF9zZXRzb2Nrb3B0KHNvLCBJUFBS
T1RPX1NDVFAsIGZsYWdzLCBzYSwgKHNvY2tsZW5fdClzYV9sZW4pICE9IDApIHsKIAkJCXJldHVy
biAoLTEpOwogCQl9CiAJCXNhID0gKHN0cnVjdCBzb2NrYWRkciAqKSgoY2FkZHJfdClzYSArIHNh
X2xlbik7CiAjZW5kaWYKIAl9Ci0JZnJlZShnYWRkcnMpOwogCXJldHVybiAoMCk7CiB9CiAKQEAg
LTI4NjYsOSArMjcyMiw5IEBAIHVzcnNjdHBfZ2V0cGFkZHJzKHN0cnVjdCBzb2NrZXQgKnNvLCBz
Y3RwX2Fzc29jX3QgaWQsIHN0cnVjdCBzb2NrYWRkciAqKnJhZGRycykKIAkJZnJlZShhZGRycyk7
CiAJCXJldHVybiAoLTEpOwogCX0KLQkqcmFkZHJzID0gKHN0cnVjdCBzb2NrYWRkciAqKSZhZGRy
cy0+YWRkclswXTsKKwkqcmFkZHJzID0gJmFkZHJzLT5hZGRyWzBdLnNhOwogCWNudCA9IDA7Ci0J
c2EgPSAoc3RydWN0IHNvY2thZGRyICopJmFkZHJzLT5hZGRyWzBdOworCXNhID0gJmFkZHJzLT5h
ZGRyWzBdLnNhOwogCWxpbSA9IChjYWRkcl90KWFkZHJzICsgb3B0X2xlbjsKICNpZmRlZiBIQVZF
X1NBX0xFTgogCXdoaWxlICgoKGNhZGRyX3Qpc2EgPCBsaW0pICYmIChzYS0+c2FfbGVuID4gMCkp
IHsKQEAgLTI5MDUsNyArMjc2MSw3IEBAIHVzcnNjdHBfZnJlZXBhZGRycyhzdHJ1Y3Qgc29ja2Fk
ZHIgKmFkZHJzKQogCS8qIFRha2UgYXdheSB0aGUgaGlkZGVuIGFzc29jaWF0aW9uIGlkICovCiAJ
dm9pZCAqZnJfYWRkcjsKIAotCWZyX2FkZHIgPSAodm9pZCAqKSgoY2FkZHJfdClhZGRycyAtIHNp
emVvZihzY3RwX2Fzc29jX3QpKTsKKwlmcl9hZGRyID0gKHZvaWQgKikoKGNhZGRyX3QpYWRkcnMg
LSBvZmZzZXRvZihzdHJ1Y3Qgc2N0cF9nZXRhZGRyZXNzZXMsIGFkZHIpKTsKIAkvKiBOb3cgZnJl
ZSBpdCAqLwogCWZyZWUoZnJfYWRkcik7CiB9CkBAIC0yOTM0LDkgKzI3OTAsNyBAQCB1c3JzY3Rw
X2dldGxhZGRycyhzdHJ1Y3Qgc29ja2V0ICpzbywgc2N0cF9hc3NvY190IGlkLCBzdHJ1Y3Qgc29j
a2FkZHIgKipyYWRkcnMpCiAJCWVycm5vID0gRU5PVENPTk47CiAJCXJldHVybiAoLTEpOwogCX0K
LQlvcHRfbGVuID0gKHNvY2tsZW5fdCkoc2l6ZV9vZl9hZGRyZXNzZXMgKwotCSAgICAgICAgICAg
ICAgICAgICAgICBzaXplb2Yoc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UpICsKLQkgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBzY3RwX2dldGFkZHJlc3NlcykpOworCW9wdF9sZW4g
PSAoc29ja2xlbl90KShzaXplX29mX2FkZHJlc3NlcyArIHNpemVvZihzdHJ1Y3Qgc2N0cF9nZXRh
ZGRyZXNzZXMpKTsKIAlhZGRycyA9IGNhbGxvYygxLCAoc2l6ZV90KW9wdF9sZW4pOwogCWlmIChh
ZGRycyA9PSBOVUxMKSB7CiAJCWVycm5vID0gRU5PTUVNOwpAQCAtMjk0OSw5ICsyODAzLDkgQEAg
dXNyc2N0cF9nZXRsYWRkcnMoc3RydWN0IHNvY2tldCAqc28sIHNjdHBfYXNzb2NfdCBpZCwgc3Ry
dWN0IHNvY2thZGRyICoqcmFkZHJzKQogCQllcnJubyA9IEVOT01FTTsKIAkJcmV0dXJuICgtMSk7
CiAJfQotCSpyYWRkcnMgPSAoc3RydWN0IHNvY2thZGRyICopJmFkZHJzLT5hZGRyWzBdOworCSpy
YWRkcnMgPSAmYWRkcnMtPmFkZHJbMF0uc2E7CiAJY250ID0gMDsKLQlzYSA9IChzdHJ1Y3Qgc29j
a2FkZHIgKikmYWRkcnMtPmFkZHJbMF07CisJc2EgPSAmYWRkcnMtPmFkZHJbMF0uc2E7CiAJbGlt
ID0gKGNhZGRyX3QpYWRkcnMgKyBvcHRfbGVuOwogI2lmZGVmIEhBVkVfU0FfTEVOCiAJd2hpbGUg
KCgoY2FkZHJfdClzYSA8IGxpbSkgJiYgKHNhLT5zYV9sZW4gPiAwKSkgewpAQCAtMjk4OCw3ICsy
ODQyLDcgQEAgdXNyc2N0cF9mcmVlbGFkZHJzKHN0cnVjdCBzb2NrYWRkciAqYWRkcnMpCiAJLyog
VGFrZSBhd2F5IHRoZSBoaWRkZW4gYXNzb2NpYXRpb24gaWQgKi8KIAl2b2lkICpmcl9hZGRyOwog
Ci0JZnJfYWRkciA9ICh2b2lkICopKChjYWRkcl90KWFkZHJzIC0gc2l6ZW9mKHNjdHBfYXNzb2Nf
dCkpOworCWZyX2FkZHIgPSAodm9pZCAqKSgoY2FkZHJfdClhZGRycyAtIG9mZnNldG9mKHN0cnVj
dCBzY3RwX2dldGFkZHJlc3NlcywgYWRkcikpOwogCS8qIE5vdyBmcmVlIGl0ICovCiAJZnJlZShm
cl9hZGRyKTsKIH0KQEAgLTMwMDIsMTYgKzI4NTYsMTIgQEAgc2N0cF91c2Vyc3BhY2VfaXBfb3V0
cHV0KGludCAqcmVzdWx0LCBzdHJ1Y3QgbWJ1ZiAqb19wYWssCiAJc3RydWN0IG1idWYgKm07CiAJ
c3RydWN0IG1idWYgKm1fb3JpZzsKIAlpbnQgaW92Y250OwotCWludCBzZW5kX2xlbjsKIAlpbnQg
bGVuOwogCWludCBzZW5kX2NvdW50OwogCXN0cnVjdCBpcCAqaXA7CiAJc3RydWN0IHVkcGhkciAq
dWRwOwotI2lmICFkZWZpbmVkIChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQotCWludCByZXM7Ci0j
ZW5kaWYKIAlzdHJ1Y3Qgc29ja2FkZHJfaW4gZHN0OwotI2lmIGRlZmluZWQgKF9fVXNlcnNwYWNl
X29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJV1NBTVNHIHdpbl9tc2dfaGRyOwog
CURXT1JEIHdpbl9zZW50X2xlbjsKIAlXU0FCVUYgc2VuZF9pb3ZlY1tNQVhMRU5fTUJVRl9DSEFJ
Tl07CkBAIC0zMDU3LDcgKzI5MDcsNyBAQCBzY3RwX3VzZXJzcGFjZV9pcF9vdXRwdXQoaW50ICpy
ZXN1bHQsIHN0cnVjdCBtYnVmICpvX3BhaywKIAkJCVNDVFBfUFJJTlRGKCJXaHkgZGlkIHRoZSBT
Q1RQIGltcGxlbWVudGF0aW9uIGRpZCBub3QgY2hvb3NlIGEgc291cmNlIGFkZHJlc3M/XG4iKTsK
IAkJfQogCQkvKiBUT0RPIG5lZWQgdG8gd29ycnkgYWJvdXQgcm8tPnJvX2RzdCBhcyBpbiBpcF9v
dXRwdXQ/ICovCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19MaW51eCkgfHwgZGVmaW5lZCAo
X19Vc2Vyc3BhY2Vfb3NfV2luZG93cykgfHwgKGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRnJlZUJT
RCkgJiYgKF9fRnJlZUJTRF92ZXJzaW9uID49IDExMDAwMzApKQorI2lmIGRlZmluZWQoX19saW51
eF9fKSB8fCBkZWZpbmVkKF9XSU4zMikgfHwgKGRlZmluZWQoX19GcmVlQlNEX18pICYmIChfX0Zy
ZWVCU0RfdmVyc2lvbiA+PSAxMTAwMDMwKSkKIAkJLyogbmVlZCB0byBwdXQgY2VydGFpbiBmaWVs
ZHMgaW50byBuZXR3b3JrIG9yZGVyIGZvciBMaW51eCAqLwogCQlpcC0+aXBfbGVuID0gaHRvbnMo
aXAtPmlwX2xlbik7CiAjZW5kaWYKQEAgLTMwODAsMTAgKzI5MzAsOSBAQCBzY3RwX3VzZXJzcGFj
ZV9pcF9vdXRwdXQoaW50ICpyZXN1bHQsIHN0cnVjdCBtYnVmICpvX3BhaywKIAkJbV9hZGoobSwg
c2l6ZW9mKHN0cnVjdCBpcCkgKyBzaXplb2Yoc3RydWN0IHVkcGhkcikpOwogCX0KIAotCXNlbmRf
bGVuID0gU0NUUF9IRUFERVJfTEVOKG0pOyAvKiBsZW5ndGggb2YgZW50aXJlIHBhY2tldCAqLwog
CXNlbmRfY291bnQgPSAwOwogCWZvciAoaW92Y250ID0gMDsgbSAhPSBOVUxMICYmIGlvdmNudCA8
IE1BWExFTl9NQlVGX0NIQUlOOyBtID0gbS0+bV9uZXh0LCBpb3ZjbnQrKykgewotI2lmICFkZWZp
bmVkIChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmICFkZWZpbmVkKF9XSU4zMikKIAkJc2Vu
ZF9pb3ZlY1tpb3ZjbnRdLmlvdl9iYXNlID0gKGNhZGRyX3QpbS0+bV9kYXRhOwogCQlzZW5kX2lv
dmVjW2lvdmNudF0uaW92X2xlbiA9IFNDVFBfQlVGX0xFTihtKTsKIAkJc2VuZF9jb3VudCArPSBz
ZW5kX2lvdmVjW2lvdmNudF0uaW92X2xlbjsKQEAgLTMwOTksNyArMjk0OCw3IEBAIHNjdHBfdXNl
cnNwYWNlX2lwX291dHB1dChpbnQgKnJlc3VsdCwgc3RydWN0IG1idWYgKm9fcGFrLAogCQlnb3Rv
IGZyZWVfbWJ1ZjsKIAl9CiAKLSNpZiAhZGVmaW5lZCAoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykK
KyNpZiAhZGVmaW5lZChfV0lOMzIpCiAJbXNnX2hkci5tc2dfbmFtZSA9IChzdHJ1Y3Qgc29ja2Fk
ZHIgKikgJmRzdDsKIAltc2dfaGRyLm1zZ19uYW1lbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRk
cl9pbik7CiAJbXNnX2hkci5tc2dfaW92ID0gc2VuZF9pb3ZlYzsKQEAgLTMxMDksMTIgKzI5NTgs
MTIgQEAgc2N0cF91c2Vyc3BhY2VfaXBfb3V0cHV0KGludCAqcmVzdWx0LCBzdHJ1Y3QgbWJ1ZiAq
b19wYWssCiAJbXNnX2hkci5tc2dfZmxhZ3MgPSAwOwogCiAJaWYgKCghdXNlX3VkcF90dW5uZWxp
bmcpICYmIChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3RwKSAhPSAtMSkpIHsKLQkJaWYg
KChyZXMgPSBzZW5kbXNnKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jhd3NjdHApLCAmbXNnX2hk
ciwgTVNHX0RPTlRXQUlUKSkgIT0gc2VuZF9sZW4pIHsKKwkJaWYgKHNlbmRtc2coU0NUUF9CQVNF
X1ZBUih1c2Vyc3BhY2VfcmF3c2N0cCksICZtc2dfaGRyLCBNU0dfRE9OVFdBSVQpIDwgMCkgewog
CQkJKnJlc3VsdCA9IGVycm5vOwogCQl9CiAJfQogCWlmICgodXNlX3VkcF90dW5uZWxpbmcpICYm
IChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV91ZHBzY3RwKSAhPSAtMSkpIHsKLQkJaWYgKChyZXMg
PSBzZW5kbXNnKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNjdHApLCAmbXNnX2hkciwgTVNH
X0RPTlRXQUlUKSkgIT0gc2VuZF9sZW4pIHsKKwkJaWYgKHNlbmRtc2coU0NUUF9CQVNFX1ZBUih1
c2Vyc3BhY2VfdWRwc2N0cCksICZtc2dfaGRyLCBNU0dfRE9OVFdBSVQpIDwgMCkgewogCQkJKnJl
c3VsdCA9IGVycm5vOwogCQl9CiAJfQpAQCAtMzEzMSwxNSArMjk4MCwxMSBAQCBzY3RwX3VzZXJz
cGFjZV9pcF9vdXRwdXQoaW50ICpyZXN1bHQsIHN0cnVjdCBtYnVmICpvX3BhaywKIAlpZiAoKCF1
c2VfdWRwX3R1bm5lbGluZykgJiYgKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jhd3NjdHApICE9
IC0xKSkgewogCQlpZiAoV1NBU2VuZFRvKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jhd3NjdHAp
LCAoTFBXU0FCVUYpIHNlbmRfaW92ZWMsIGlvdmNudCwgJndpbl9zZW50X2xlbiwgd2luX21zZ19o
ZHIuZHdGbGFncywgd2luX21zZ19oZHIubmFtZSwgKGludCkgd2luX21zZ19oZHIubmFtZWxlbiwg
TlVMTCwgTlVMTCkgIT0gMCkgewogCQkJKnJlc3VsdCA9IFdTQUdldExhc3RFcnJvcigpOwotCQl9
IGVsc2UgaWYgKHdpbl9zZW50X2xlbiAhPSBzZW5kX2xlbikgewotCQkJKnJlc3VsdCA9IFdTQUdl
dExhc3RFcnJvcigpOwogCQl9CiAJfQogCWlmICgodXNlX3VkcF90dW5uZWxpbmcpICYmIChTQ1RQ
X0JBU0VfVkFSKHVzZXJzcGFjZV91ZHBzY3RwKSAhPSAtMSkpIHsKIAkJaWYgKFdTQVNlbmRUbyhT
Q1RQX0JBU0VfVkFSKHVzZXJzcGFjZV91ZHBzY3RwKSwgKExQV1NBQlVGKSBzZW5kX2lvdmVjLCBp
b3ZjbnQsICZ3aW5fc2VudF9sZW4sIHdpbl9tc2dfaGRyLmR3RmxhZ3MsIHdpbl9tc2dfaGRyLm5h
bWUsIChpbnQpIHdpbl9tc2dfaGRyLm5hbWVsZW4sIE5VTEwsIE5VTEwpICE9IDApIHsKIAkJCSpy
ZXN1bHQgPSBXU0FHZXRMYXN0RXJyb3IoKTsKLQkJfSBlbHNlIGlmICh3aW5fc2VudF9sZW4gIT0g
c2VuZF9sZW4pIHsKLQkJCSpyZXN1bHQgPSBXU0FHZXRMYXN0RXJyb3IoKTsKIAkJfQogCX0KICNl
bmRpZgpAQCAtMzE0OCw3ICsyOTkzLDcgQEAgZnJlZV9tYnVmOgogfQogI2VuZGlmCiAKLSNpZiBk
ZWZpbmVkIChJTkVUNikKKyNpZiBkZWZpbmVkKElORVQ2KQogdm9pZCBzY3RwX3VzZXJzcGFjZV9p
cDZfb3V0cHV0KGludCAqcmVzdWx0LCBzdHJ1Y3QgbWJ1ZiAqb19wYWssCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCByb3V0ZV9pbjYgKnJvLCB2b2lk
ICpzdGNiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
MzJfdCB2cmZfaWQpCkBAIC0zMTU2LDE2ICszMDAxLDEyIEBAIHZvaWQgc2N0cF91c2Vyc3BhY2Vf
aXA2X291dHB1dChpbnQgKnJlc3VsdCwgc3RydWN0IG1idWYgKm9fcGFrLAogCXN0cnVjdCBtYnVm
ICptOwogCXN0cnVjdCBtYnVmICptX29yaWc7CiAJaW50IGlvdmNudDsKLQlpbnQgc2VuZF9sZW47
CiAJaW50IGxlbjsKIAlpbnQgc2VuZF9jb3VudDsKIAlzdHJ1Y3QgaXA2X2hkciAqaXA2OwogCXN0
cnVjdCB1ZHBoZHIgKnVkcDsKLSNpZiAhZGVmaW5lZCAoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykK
LQlpbnQgcmVzOwotI2VuZGlmCiAJc3RydWN0IHNvY2thZGRyX2luNiBkc3Q7Ci0jaWYgZGVmaW5l
ZCAoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIAlXU0FNU0cg
d2luX21zZ19oZHI7CiAJRFdPUkQgd2luX3NlbnRfbGVuOwogCVdTQUJVRiBzZW5kX2lvdmVjW01B
WExFTl9NQlVGX0NIQUlOXTsKQEAgLTMyMzUsMTAgKzMwNzYsOSBAQCB2b2lkIHNjdHBfdXNlcnNw
YWNlX2lwNl9vdXRwdXQoaW50ICpyZXN1bHQsIHN0cnVjdCBtYnVmICpvX3BhaywKIAkgIG1fYWRq
KG0sIHNpemVvZihzdHJ1Y3QgaXA2X2hkcikpOwogCX0KIAotCXNlbmRfbGVuID0gU0NUUF9IRUFE
RVJfTEVOKG0pOyAvKiBsZW5ndGggb2YgZW50aXJlIHBhY2tldCAqLwogCXNlbmRfY291bnQgPSAw
OwogCWZvciAoaW92Y250ID0gMDsgbSAhPSBOVUxMICYmIGlvdmNudCA8IE1BWExFTl9NQlVGX0NI
QUlOOyBtID0gbS0+bV9uZXh0LCBpb3ZjbnQrKykgewotI2lmICFkZWZpbmVkIChfX1VzZXJzcGFj
ZV9vc19XaW5kb3dzKQorI2lmICFkZWZpbmVkKF9XSU4zMikKIAkJc2VuZF9pb3ZlY1tpb3ZjbnRd
Lmlvdl9iYXNlID0gKGNhZGRyX3QpbS0+bV9kYXRhOwogCQlzZW5kX2lvdmVjW2lvdmNudF0uaW92
X2xlbiA9IFNDVFBfQlVGX0xFTihtKTsKIAkJc2VuZF9jb3VudCArPSBzZW5kX2lvdmVjW2lvdmNu
dF0uaW92X2xlbjsKQEAgLTMyNTMsNyArMzA5Myw3IEBAIHZvaWQgc2N0cF91c2Vyc3BhY2VfaXA2
X291dHB1dChpbnQgKnJlc3VsdCwgc3RydWN0IG1idWYgKm9fcGFrLAogCQlnb3RvIGZyZWVfbWJ1
ZjsKIAl9CiAKLSNpZiAhZGVmaW5lZCAoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiAhZGVm
aW5lZChfV0lOMzIpCiAJbXNnX2hkci5tc2dfbmFtZSA9IChzdHJ1Y3Qgc29ja2FkZHIgKikgJmRz
dDsKIAltc2dfaGRyLm1zZ19uYW1lbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpOwog
CW1zZ19oZHIubXNnX2lvdiA9IHNlbmRfaW92ZWM7CkBAIC0zMjYzLDEyICszMTAzLDEyIEBAIHZv
aWQgc2N0cF91c2Vyc3BhY2VfaXA2X291dHB1dChpbnQgKnJlc3VsdCwgc3RydWN0IG1idWYgKm9f
cGFrLAogCW1zZ19oZHIubXNnX2ZsYWdzID0gMDsKIAogCWlmICgoIXVzZV91ZHBfdHVubmVsaW5n
KSAmJiAoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfcmF3c2N0cDYpICE9IC0xKSkgewotCQlpZiAo
KHJlcyA9IHNlbmRtc2coU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfcmF3c2N0cDYpLCAmbXNnX2hk
ciwgTVNHX0RPTlRXQUlUKSkgIT0gc2VuZF9sZW4pIHsKKwkJaWYgKHNlbmRtc2coU0NUUF9CQVNF
X1ZBUih1c2Vyc3BhY2VfcmF3c2N0cDYpLCAmbXNnX2hkciwgTVNHX0RPTlRXQUlUKTwgMCkgewog
CQkJKnJlc3VsdCA9IGVycm5vOwogCQl9CiAJfQogCWlmICgodXNlX3VkcF90dW5uZWxpbmcpICYm
IChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV91ZHBzY3RwNikgIT0gLTEpKSB7Ci0JCWlmICgocmVz
ID0gc2VuZG1zZyhTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV91ZHBzY3RwNiksICZtc2dfaGRyLCBN
U0dfRE9OVFdBSVQpKSAhPSBzZW5kX2xlbikgeworCQlpZiAoc2VuZG1zZyhTQ1RQX0JBU0VfVkFS
KHVzZXJzcGFjZV91ZHBzY3RwNiksICZtc2dfaGRyLCBNU0dfRE9OVFdBSVQpIDwgMCkgewogCQkJ
KnJlc3VsdCA9IGVycm5vOwogCQl9CiAJfQpAQCAtMzI4NSwxNSArMzEyNSwxMSBAQCB2b2lkIHNj
dHBfdXNlcnNwYWNlX2lwNl9vdXRwdXQoaW50ICpyZXN1bHQsIHN0cnVjdCBtYnVmICpvX3BhaywK
IAlpZiAoKCF1c2VfdWRwX3R1bm5lbGluZykgJiYgKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jh
d3NjdHA2KSAhPSAtMSkpIHsKIAkJaWYgKFdTQVNlbmRUbyhTQ1RQX0JBU0VfVkFSKHVzZXJzcGFj
ZV9yYXdzY3RwNiksIChMUFdTQUJVRikgc2VuZF9pb3ZlYywgaW92Y250LCAmd2luX3NlbnRfbGVu
LCB3aW5fbXNnX2hkci5kd0ZsYWdzLCB3aW5fbXNnX2hkci5uYW1lLCAoaW50KSB3aW5fbXNnX2hk
ci5uYW1lbGVuLCBOVUxMLCBOVUxMKSAhPSAwKSB7CiAJCQkqcmVzdWx0ID0gV1NBR2V0TGFzdEVy
cm9yKCk7Ci0JCX0gZWxzZSBpZiAod2luX3NlbnRfbGVuICE9IHNlbmRfbGVuKSB7Ci0JCQkqcmVz
dWx0ID0gV1NBR2V0TGFzdEVycm9yKCk7CiAJCX0KIAl9CiAJaWYgKCh1c2VfdWRwX3R1bm5lbGlu
ZykgJiYgKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNjdHA2KSAhPSAtMSkpIHsKIAkJaWYg
KFdTQVNlbmRUbyhTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV91ZHBzY3RwNiksIChMUFdTQUJVRikg
c2VuZF9pb3ZlYywgaW92Y250LCAmd2luX3NlbnRfbGVuLCB3aW5fbXNnX2hkci5kd0ZsYWdzLCB3
aW5fbXNnX2hkci5uYW1lLCAoaW50KSB3aW5fbXNnX2hkci5uYW1lbGVuLCBOVUxMLCBOVUxMKSAh
PSAwKSB7CiAJCQkqcmVzdWx0ID0gV1NBR2V0TGFzdEVycm9yKCk7Ci0JCX0gZWxzZSBpZiAod2lu
X3NlbnRfbGVuICE9IHNlbmRfbGVuKSB7Ci0JCQkqcmVzdWx0ID0gV1NBR2V0TGFzdEVycm9yKCk7
CiAJCX0KIAl9CiAjZW5kaWYKQEAgLTMzNzEsMTkgKzMyMDcsMzQgQEAgdXNyc2N0cF9kdW1wcGFj
a2V0KGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbiwgaW50IG91dGJvdW5kKQogI2lmZGVmIF9X
SU4zMgogCWZ0aW1lKCZ0Yik7CiAJbG9jYWx0aW1lX3MoJnQsICZ0Yi50aW1lKTsKLQlfc25wcmlu
dGZfcyhkdW1wX2J1ZiwgUFJFQU1CTEVfTEVOR1RIICsgMSwgUFJFQU1CTEVfTEVOR1RILCBQUkVB
TUJMRV9GT1JNQVQsCi0JICAgICAgICAgICAgb3V0Ym91bmQgPyAnTycgOiAnSScsCi0JICAgICAg
ICAgICAgdC50bV9ob3VyLCB0LnRtX21pbiwgdC50bV9zZWMsIChsb25nKSgxMDAwICogdGIubWls
bGl0bSkpOworI2lmIGRlZmluZWQoX19NSU5HVzMyX18pCisJaWYgKHNucHJpbnRmKGR1bXBfYnVm
LCBQUkVBTUJMRV9MRU5HVEggKyAxLCBQUkVBTUJMRV9GT1JNQVQsCisJICAgICAgICAgICAgIG91
dGJvdW5kID8gJ08nIDogJ0knLAorCSAgICAgICAgICAgICB0LnRtX2hvdXIsIHQudG1fbWluLCB0
LnRtX3NlYywgKGxvbmcpKDEwMDAgKiB0Yi5taWxsaXRtKSkgPCAwKSB7CisJCWZyZWUoZHVtcF9i
dWYpOworCQlyZXR1cm4gKE5VTEwpOworCX0KKyNlbHNlCisJaWYgKF9zbnByaW50Zl9zKGR1bXBf
YnVmLCBQUkVBTUJMRV9MRU5HVEggKyAxLCBQUkVBTUJMRV9MRU5HVEgsIFBSRUFNQkxFX0ZPUk1B
VCwKKwkgICAgICAgICAgICAgICAgb3V0Ym91bmQgPyAnTycgOiAnSScsCisJICAgICAgICAgICAg
ICAgIHQudG1faG91ciwgdC50bV9taW4sIHQudG1fc2VjLCAobG9uZykoMTAwMCAqIHRiLm1pbGxp
dG0pKSA8IDApIHsKKwkJZnJlZShkdW1wX2J1Zik7CisJCXJldHVybiAoTlVMTCk7CisJfQorI2Vu
ZGlmCiAjZWxzZQogCWdldHRpbWVvZmRheSgmdHYsIE5VTEwpOwogCXNlYyA9ICh0aW1lX3QpdHYu
dHZfc2VjOwogCWxvY2FsdGltZV9yKChjb25zdCB0aW1lX3QgKikmc2VjLCAmdCk7Ci0Jc25wcmlu
dGYoZHVtcF9idWYsIFBSRUFNQkxFX0xFTkdUSCArIDEsIFBSRUFNQkxFX0ZPUk1BVCwKLQkgICAg
ICAgICBvdXRib3VuZCA/ICdPJyA6ICdJJywKLQkgICAgICAgICB0LnRtX2hvdXIsIHQudG1fbWlu
LCB0LnRtX3NlYywgKGxvbmcpdHYudHZfdXNlYyk7CisJaWYgKHNucHJpbnRmKGR1bXBfYnVmLCBQ
UkVBTUJMRV9MRU5HVEggKyAxLCBQUkVBTUJMRV9GT1JNQVQsCisJICAgICAgICAgICAgIG91dGJv
dW5kID8gJ08nIDogJ0knLAorCSAgICAgICAgICAgICB0LnRtX2hvdXIsIHQudG1fbWluLCB0LnRt
X3NlYywgKGxvbmcpdHYudHZfdXNlYykgPCAwKSB7CisJCWZyZWUoZHVtcF9idWYpOworCQlyZXR1
cm4gKE5VTEwpOworCX0KICNlbmRpZgogCXBvcyArPSBQUkVBTUJMRV9MRU5HVEg7Ci0jaWZkZWYg
X1dJTjMyCisjaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fTUlOR1czMl9fKQogCXN0
cm5jcHlfcyhkdW1wX2J1ZiArIHBvcywgc3RybGVuKEhFQURFUikgKyAxLCBIRUFERVIsIHN0cmxl
bihIRUFERVIpKTsKICNlbHNlCiAJc3RyY3B5KGR1bXBfYnVmICsgcG9zLCBIRUFERVIpOwpAQCAt
MzQwMCw3ICszMjUxLDcgQEAgdXNyc2N0cF9kdW1wcGFja2V0KGNvbnN0IHZvaWQgKmJ1Ziwgc2l6
ZV90IGxlbiwgaW50IG91dGJvdW5kKQogCQlkdW1wX2J1Zltwb3MrK10gPSBsb3cgPCAxMCA/ICcw
JyArIGxvdyA6ICdhJyArIChsb3cgLSAxMCk7CiAJCWR1bXBfYnVmW3BvcysrXSA9ICcgJzsKIAl9
Ci0jaWZkZWYgX1dJTjMyCisjaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fTUlOR1cz
Ml9fKQogCXN0cm5jcHlfcyhkdW1wX2J1ZiArIHBvcywgc3RybGVuKFRSQUlMRVIpICsgMSwgVFJB
SUxFUiwgc3RybGVuKFRSQUlMRVIpKTsKICNlbHNlCiAJc3RyY3B5KGR1bXBfYnVmICsgcG9zLCBU
UkFJTEVSKTsKQEAgLTM0NDMsOSArMzI5NCwxMCBAQCB2b2lkCiB1c3JzY3RwX2Nvbm5pbnB1dCh2
b2lkICphZGRyLCBjb25zdCB2b2lkICpidWZmZXIsIHNpemVfdCBsZW5ndGgsIHVpbnQ4X3QgZWNu
X2JpdHMpCiB7CiAJc3RydWN0IHNvY2thZGRyX2Nvbm4gc3JjLCBkc3Q7Ci0Jc3RydWN0IG1idWYg
Km07CisJc3RydWN0IG1idWYgKm0sICptbTsKIAlzdHJ1Y3Qgc2N0cGhkciAqc2g7CiAJc3RydWN0
IHNjdHBfY2h1bmtoZHIgKmNoOworCWludCByZW1haW5pbmc7CiAKIAlTQ1RQX1NUQVRfSU5DUihz
Y3Rwc19yZWN2cGFja2V0cyk7CiAJU0NUUF9TVEFUX0lOQ1JfQ09VTlRFUjY0KHNjdHBzX2lucGFj
a2V0cyk7CkBAIC0zNDY0LDYgKzMzMTYsMTYgQEAgdXNyc2N0cF9jb25uaW5wdXQodm9pZCAqYWRk
ciwgY29uc3Qgdm9pZCAqYnVmZmVyLCBzaXplX3QgbGVuZ3RoLCB1aW50OF90IGVjbl9iaXQKIAlp
ZiAoKG0gPSBzY3RwX2dldF9tYnVmX2Zvcl9tc2coKHVuc2lnbmVkIGludClsZW5ndGgsIDEsIE1f
Tk9XQUlULCAwLCBNVF9EQVRBKSkgPT0gTlVMTCkgewogCQlyZXR1cm47CiAJfQorCS8qIFNldCB0
aGUgbGVuZ3RocyBmaWVsZHMgb2YgdGhlIG1idWYgY2hhaW4uCisJICogVGhpcyBpcyBleHBlY3Rl
ZCBieSBtX2NvcHliYWNrKCkuCisJICovCisJcmVtYWluaW5nID0gKGludClsZW5ndGg7CisJZm9y
IChtbSA9IG07IG1tICE9IE5VTEw7IG1tID0gbW0tPm1fbmV4dCkgeworCQltbS0+bV9sZW4gPSBt
aW4oKGludClNX1NJWkUobW0pLCByZW1haW5pbmcpOworCQltLT5tX3BrdGhkci5sZW4gKz0gbW0t
Pm1fbGVuOworCQlyZW1haW5pbmcgLT0gbW0tPm1fbGVuOworCX0KKwlLQVNTRVJUKHJlbWFpbmlu
ZyA9PSAwLCAoInVzcnNjdHBfY29ubmlucHV0OiAlenUgYnl0ZXMgbGVmdCIsIHJlbWFpbmluZykp
OwogCW1fY29weWJhY2sobSwgMCwgKGludClsZW5ndGgsIChjYWRkcl90KWJ1ZmZlcik7CiAJaWYg
KFNDVFBfQlVGX0xFTihtKSA8IChpbnQpKHNpemVvZihzdHJ1Y3Qgc2N0cGhkcikgKyBzaXplb2Yo
c3RydWN0IHNjdHBfY2h1bmtoZHIpKSkgewogCQlpZiAoKG0gPSBtX3B1bGx1cChtLCBzaXplb2Yo
c3RydWN0IHNjdHBoZHIpICsgc2l6ZW9mKHN0cnVjdCBzY3RwX2NodW5raGRyKSkpID09IE5VTEwp
IHsKQEAgLTM0ODgsNiArMzM1MCw1NCBAQCB1c3JzY3RwX2Nvbm5pbnB1dCh2b2lkICphZGRyLCBj
b25zdCB2b2lkICpidWZmZXIsIHNpemVfdCBsZW5ndGgsIHVpbnQ4X3QgZWNuX2JpdAogCXJldHVy
bjsKIH0KIAordm9pZCB1c3JzY3RwX2hhbmRsZV90aW1lcnModWludDMyX3QgZWxhcHNlZF9taWxs
aXNlY29uZHMpCit7CisJc2N0cF9oYW5kbGVfdGljayhzY3RwX21zZWNzX3RvX3RpY2tzKGVsYXBz
ZWRfbWlsbGlzZWNvbmRzKSk7Cit9CisKK2ludAordXNyc2N0cF9nZXRfZXZlbnRzKHN0cnVjdCBz
b2NrZXQgKnNvKQoreworCWludCBldmVudHMgPSAwOworCisJaWYgKHNvID09IE5VTEwpIHsKKwkJ
ZXJybm8gPSBFQkFERjsKKwkJcmV0dXJuIC0xOworCX0KKworCVNPQ0tfTE9DSyhzbyk7CisJaWYg
KHNvcmVhZGFibGUoc28pKSB7CisJCWV2ZW50cyB8PSBTQ1RQX0VWRU5UX1JFQUQ7CisJfQorCWlm
IChzb3dyaXRlYWJsZShzbykpIHsKKwkJZXZlbnRzIHw9IFNDVFBfRVZFTlRfV1JJVEU7CisJfQor
CWlmIChzby0+c29fZXJyb3IpIHsKKwkJZXZlbnRzIHw9IFNDVFBfRVZFTlRfRVJST1I7CisJfQor
CVNPQ0tfVU5MT0NLKHNvKTsKKworCXJldHVybiBldmVudHM7Cit9CisKK2ludAordXNyc2N0cF9z
ZXRfdXBjYWxsKHN0cnVjdCBzb2NrZXQgKnNvLCB2b2lkICgqdXBjYWxsKShzdHJ1Y3Qgc29ja2V0
ICosIHZvaWQgKiwgaW50KSwgdm9pZCAqYXJnKQoreworCWlmIChzbyA9PSBOVUxMKSB7CisJCWVy
cm5vID0gRUJBREY7CisJCXJldHVybiAoLTEpOworCX0KKworCVNPQ0tfTE9DSyhzbyk7CisJc28t
PnNvX3VwY2FsbCA9IHVwY2FsbDsKKwlzby0+c29fdXBjYWxsYXJnID0gYXJnOworCXNvLT5zb19z
bmQuc2JfZmxhZ3MgfD0gU0JfVVBDQUxMOworCXNvLT5zb19yY3Yuc2JfZmxhZ3MgfD0gU0JfVVBD
QUxMOworCVNPQ0tfVU5MT0NLKHNvKTsKKworCXJldHVybiAoMCk7Cit9CisKICNkZWZpbmUgVVNS
U0NUUF9UVU5BQkxFX1NFVF9ERUYoX19maWVsZCwgX19wcmVmaXgpICAgXAogaW50IHVzcnNjdHBf
dHVuYWJsZV9zZXRfICMjIF9fZmllbGQodWludDMyX3QgdmFsdWUpICBcCiB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTM1MTgsNyArMzQy
OCw3IEBAIGludCB1c3JzY3RwX3N5c2N0bF9zZXRfICMjIF9fZmllbGQodWludDMyX3QgdmFsdWUp
ICAgXAogCX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIH0K
IAotI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgX19HTlVDX18gPj0g
NSB8fCAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA+PSA2KSB8fCBkZWZpbmVkKF9f
Y2xhbmdfXykKICNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAogI3ByYWdtYSBHQ0MgZGlhZ25v
c3RpYyBpZ25vcmVkICItV3R5cGUtbGltaXRzIgogI2VuZGlmCkBAIC0zNTkxLDggKzM1MDEsOCBA
QCBVU1JTQ1RQX1NZU0NUTF9TRVRfREVGKHNjdHBfaW5pdGlhbF9jd25kLCBTQ1RQQ1RMX0lOSVRJ
QUxfQ1dORCkKICNpZmRlZiBTQ1RQX0RFQlVHCiBVU1JTQ1RQX1NZU0NUTF9TRVRfREVGKHNjdHBf
ZGVidWdfb24sIFNDVFBDVExfREVCVUcpCiAjZW5kaWYKLSNpZiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9vc19XaW5kb3dzKQotI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisjaWYgX19HTlVDX18g
Pj0gNSB8fCAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA+PSA2KSB8fCBkZWZpbmVk
KF9fY2xhbmdfXykKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCiAjZW5kaWYKIAogI2RlZmlu
ZSBVU1JTQ1RQX1NZU0NUTF9HRVRfREVGKF9fZmllbGQpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L3VzcnNjdHBsaWIvdXNlcl9zb2NrZXR2YXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9z
b2NrZXR2YXIuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGZmYzgyNzBl
ZmRhNDZmOGJjYzk5ZTliNTE4NDI2NWYwNjhmMjljOTQuLjZiNzliNTkwOGMwNjlmZjFmNjZkZDJm
Y2Y1YzYxYzQ0MDUwZDIxNGEKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX3NvY2tldHZh
ci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
dXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9zb2NrZXR2YXIuaApAQCAtMzMsNyAr
MzMsNyBAQAogI2lmbmRlZiBfVVNFUl9TT0NLRVRWQVJfSF8KICNkZWZpbmUgX1VTRVJfU09DS0VU
VkFSX0hfCiAKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0RhcndpbikKKyNpZiBkZWZpbmVk
KF9fQVBQTEVfXykKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4K
ICNlbmRpZgpAQCAtNDIsNyArNDIsNyBAQAogLyogI2luY2x1ZGUgPHN5cy9fbG9jay5oPiAgd2Fz
IDAgYnl0ZSBmaWxlICovCiAvKiAjaW5jbHVkZSA8c3lzL19tdXRleC5oPiB3YXMgMCBieXRlIGZp
bGUgKi8KIC8qICNpbmNsdWRlIDxzeXMvX3N4Lmg+ICovIC8qX19Vc2Vyc3BhY2VfXyBhbHRlcm5h
dGl2ZT8qLwotI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0RyYWdvbkZseSkgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2Vfb3NfRnJlZUJTRCkgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfTmV0
QlNEKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9vc19OYUNsKQorI2lmICFkZWZpbmVkKF9fRHJhZ29uRmx5X18pICYmICFkZWZpbmVk
KF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX05ldEJTRF9fKSAmJiAhZGVmaW5lZChfV0lOMzIp
ICYmICFkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9fKQogI2luY2x1ZGUgPHN5cy91aW8uaD4KICNl
bmRpZgogI2RlZmluZSBTT0NLX01BWEFERFJMRU4gMjU1CkBAIC01NCwxNiArNTQsMTYgQEAKICNk
ZWZpbmUgU1NfQ0FOVFJDVk1PUkUgMHgwMjAKICNkZWZpbmUgU1NfQ0FOVFNFTkRNT1JFIDB4MDEw
CiAKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0RhcndpbikgfHwgZGVmaW5lZChfX1VzZXJz
cGFjZV9vc19EcmFnb25GbHkpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRnJlZUJTRCkgfHwg
ZGVmaW5lZChfX1VzZXJzcGFjZV9vc19PcGVuQlNEKSB8fCBkZWZpbmVkIChfX1VzZXJzcGFjZV9v
c19XaW5kb3dzKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX05hQ2wpCisjaWYgZGVmaW5lZChf
X0FQUExFX18pIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgfHwgZGVmaW5lZChfX09wZW5CU0RfXykgfHwgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQo
X19uYXRpdmVfY2xpZW50X18pCiAjZGVmaW5lIFVJT19NQVhJT1YgMTAyNAogI2RlZmluZSBFUkVT
VEFSVCAoLTEpCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0Rhcndpbikg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfTmV0QlNEKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9vc19PcGVuQlNEKQorI2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19OZXRC
U0RfXykgJiYgIWRlZmluZWQoX19PcGVuQlNEX18pCiBlbnVtCXVpb19ydyB7IFVJT19SRUFELCBV
SU9fV1JJVEUgfTsKICNlbmRpZgogCi0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfTmV0QlNE
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19PcGVuQlNEKQorI2lmICFkZWZpbmVkKF9fTmV0
QlNEX18pICYmICFkZWZpbmVkKF9fT3BlbkJTRF9fKQogLyogU2VnbWVudCBmbGFnIHZhbHVlcy4g
Ki8KIGVudW0gdWlvX3NlZyB7CiAJVUlPX1VTRVJTUEFDRSwJCS8qIGZyb20gdXNlciBkYXRhIHNw
YWNlICovCkBAIC03Miw3ICs3Miw3IEBAIGVudW0gdWlvX3NlZyB7CiAjZW5kaWYKIAogc3RydWN0
IHByb2MgewotICAgIGludCBzdHViOyAvKiBzdHJ1Y3QgcHJvYyBpcyBhIGR1bW15IGZvciBfX1Vz
ZXJzcGFjZV9fICovCisJaW50IHN0dWI7IC8qIHN0cnVjdCBwcm9jIGlzIGEgZHVtbXkgZm9yIF9f
VXNlcnNwYWNlX18gKi8KIH07CiAKIE1BTExPQ19ERUNMQVJFKE1fQUNDRik7CkBAIC04MywxMiAr
ODMsMTIgQEAgTUFMTE9DX0RFQ0xBUkUoTV9TT05BTUUpOwogICogUmVtb3Zpbmcgc3RydWN0IHRo
cmVhZCAqdWlvX3RkOyAgICBvd25lciBmaWVsZAogKi8KIHN0cnVjdCB1aW8gewotICAgIHN0cnVj
dAlpb3ZlYyAqdWlvX2lvdjsJCS8qIHNjYXR0ZXIvZ2F0aGVyIGxpc3QgKi8KLSAgICBpbnQJCXVp
b19pb3ZjbnQ7CQkvKiBsZW5ndGggb2Ygc2NhdHRlci9nYXRoZXIgbGlzdCAqLwotICAgIG9mZl90
CXVpb19vZmZzZXQ7CQkvKiBvZmZzZXQgaW4gdGFyZ2V0IG9iamVjdCAqLwotICAgIHNzaXplX3Qg
CXVpb19yZXNpZDsJCS8qIHJlbWFpbmluZyBieXRlcyB0byBwcm9jZXNzICovCi0gICAgZW51bQl1
aW9fc2VnIHVpb19zZWdmbGc7CS8qIGFkZHJlc3Mgc3BhY2UgKi8KLSAgICBlbnVtCXVpb19ydyB1
aW9fcnc7CQkvKiBvcGVyYXRpb24gKi8KKwlzdHJ1Y3QJaW92ZWMgKnVpb19pb3Y7CQkvKiBzY2F0
dGVyL2dhdGhlciBsaXN0ICovCisJaW50CQl1aW9faW92Y250OwkJLyogbGVuZ3RoIG9mIHNjYXR0
ZXIvZ2F0aGVyIGxpc3QgKi8KKwlvZmZfdAl1aW9fb2Zmc2V0OwkJLyogb2Zmc2V0IGluIHRhcmdl
dCBvYmplY3QgKi8KKwlzc2l6ZV90IAl1aW9fcmVzaWQ7CQkvKiByZW1haW5pbmcgYnl0ZXMgdG8g
cHJvY2VzcyAqLworCWVudW0JdWlvX3NlZyB1aW9fc2VnZmxnOwkvKiBhZGRyZXNzIHNwYWNlICov
CisJZW51bQl1aW9fcncgdWlvX3J3OwkJLyogb3BlcmF0aW9uICovCiB9OwogCiAKQEAgLTEwMCw5
ICsxMDAsMTEgQEAgc3RydWN0IHVpbyB7CiAgKiBoYW5kbGUgb24gcHJvdG9jb2wgYW5kIHBvaW50
ZXIgdG8gcHJvdG9jb2wKICAqIHByaXZhdGUgZGF0YSBhbmQgZXJyb3IgaW5mb3JtYXRpb24uCiAg
Ki8KLSNpZiBkZWZpbmVkIChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJ
TjMyKQogI2RlZmluZSBBRl9ST1VURSAgMTcKKyNpZiAhZGVmaW5lZChfX01JTkdXMzJfXykKIHR5
cGVkZWYgX19pbnQzMiBwaWRfdDsKKyNlbmRpZgogdHlwZWRlZiB1bnNpZ25lZCBfX2ludDMyIHVp
ZF90OwogZW51bSBzaWdUeXBlIHsKIAlTSUdOQUwgPSAwLApAQCAtMjM1LDcgKzIzNyw3IEBAIHN0
cnVjdCBzb2NrZXQgewogICogYXZvaWQgZGVmaW5pbmcgYSBsb2NrIG9yZGVyIGJldHdlZW4gbGlz
dGVuIGFuZCBhY2NlcHQgc29ja2V0cwogICogdW50aWwgc3VjaCB0aW1lIGFzIGl0IHByb3ZlcyB0
byBiZSBhIGdvb2QgaWRlYS4KICAqLwotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93
cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIGV4dGVybiB1c2VybGFuZF9tdXRleF90IGFjY2VwdF9t
dHg7CiBleHRlcm4gdXNlcmxhbmRfY29uZF90IGFjY2VwdF9jb25kOwogI2RlZmluZSBBQ0NFUFRf
TE9DS19BU1NFUlQoKQpAQCAtMjcwLDcgKzI3Miw3IEBAIGV4dGVybiB1c2VybGFuZF9jb25kX3Qg
YWNjZXB0X2NvbmQ7CiAgKiBidWZmZXIuCiAgKi8KICNkZWZpbmUJU09DS0JVRl9NVFgoX3NiKSAo
Jihfc2IpLT5zYl9tdHgpCi0jaWYgZGVmaW5lZCAoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNp
ZiBkZWZpbmVkKF9XSU4zMikKICNkZWZpbmUgU09DS0JVRl9MT0NLX0lOSVQoX3NiLCBfbmFtZSkg
XAogCUluaXRpYWxpemVDcml0aWNhbFNlY3Rpb24oU09DS0JVRl9NVFgoX3NiKSkKICNkZWZpbmUg
U09DS0JVRl9MT0NLX0RFU1RST1koX3NiKSBEZWxldGVDcml0aWNhbFNlY3Rpb24oU09DS0JVRl9N
VFgoX3NiKSkKQEAgLTM2NSwzMzggKzM2NywxMSBAQCBleHRlcm4gdXNlcmxhbmRfY29uZF90IGFj
Y2VwdF9jb25kOwogI2RlZmluZQlTUV9DT01QCQkJMHgxMDAwCS8qIHVuYWNjZXB0ZWQsIGNvbXBs
ZXRlIGNvbm5lY3Rpb24gKi8KIAogLyoKLSAqIEV4dGVybmFsaXplZCBmb3JtIG9mIHN0cnVjdCBz
b2NrZXQgdXNlZCBieSB0aGUgc3lzY3RsKDMpIGludGVyZmFjZS4KLSAqLwotc3RydWN0IHhzb2Nr
ZXQgewotCXNpemVfdAl4c29fbGVuOwkvKiBsZW5ndGggb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KLQlz
dHJ1Y3QJc29ja2V0ICp4c29fc287CS8qIG1ha2VzIGEgY29udmVuaWVudCBoYW5kbGUgc29tZXRp
bWVzICovCi0Jc2hvcnQJc29fdHlwZTsKLQlzaG9ydAlzb19vcHRpb25zOwotCXNob3J0CXNvX2xp
bmdlcjsKLQlzaG9ydAlzb19zdGF0ZTsKLQljYWRkcl90CXNvX3BjYjsJCS8qIGFub3RoZXIgY29u
dmVuaWVudCBoYW5kbGUgKi8KLQlpbnQJeHNvX3Byb3RvY29sOwotCWludAl4c29fZmFtaWx5Owot
CXVfc2hvcnQJc29fcWxlbjsKLQl1X3Nob3J0CXNvX2luY3FsZW47Ci0JdV9zaG9ydAlzb19xbGlt
aXQ7Ci0Jc2hvcnQJc29fdGltZW87Ci0JdV9zaG9ydAlzb19lcnJvcjsKLQlwaWRfdAlzb19wZ2lk
OwotCXVfbG9uZwlzb19vb2JtYXJrOwotCXN0cnVjdCB4c29ja2J1ZiB7Ci0JCXVfaW50CXNiX2Nj
OwotCQl1X2ludAlzYl9oaXdhdDsKLQkJdV9pbnQJc2JfbWJjbnQ7Ci0JCXVfaW50CXNiX21ibWF4
OwotCQlpbnQJc2JfbG93YXQ7Ci0JCWludAlzYl90aW1lbzsKLQkJc2hvcnQJc2JfZmxhZ3M7Ci0J
fSBzb19yY3YsIHNvX3NuZDsKLQl1aWRfdAlzb191aWQ7CQkvKiBYWFggKi8KLX07Ci0KLSNpZiBk
ZWZpbmVkKF9LRVJORUwpCi0KLQotLyoKLSAqIE1hY3JvcyBmb3Igc29ja2V0cyBhbmQgc29ja2V0
IGJ1ZmZlcmluZy4KLSAqLwotCi0vKgotICogRG8gd2UgbmVlZCB0byBub3RpZnkgdGhlIG90aGVy
IHNpZGUgd2hlbiBJL08gaXMgcG9zc2libGU/Ci0gKi8KLSNkZWZpbmUJc2Jfbm90aWZ5KHNiKQko
KChzYiktPnNiX2ZsYWdzICYgKFNCX1dBSVQgfCBTQl9TRUwgfCBTQl9BU1lOQyB8IFwKLSAgICBT
Ql9VUENBTEwgfCBTQl9BSU8gfCBTQl9LTk9URSkpICE9IDApCi0KLS8qCi0gKiBIb3cgbXVjaCBz
cGFjZSBpcyB0aGVyZSBpbiBhIHNvY2tldCBidWZmZXIgKHNvLT5zb19zbmQgb3Igc28tPnNvX3Jj
dik/Ci0gKiBUaGlzIGlzIHByb2JsZW1hdGljYWwgaWYgdGhlIGZpZWxkcyBhcmUgdW5zaWduZWQs
IGFzIHRoZSBzcGFjZSBtaWdodAotICogc3RpbGwgYmUgbmVnYXRpdmUgKGNjID4gaGl3YXQgb3Ig
bWJjbnQgPiBtYm1heCkuICBTaG91bGQgZGV0ZWN0Ci0gKiBvdmVyZmxvdyBhbmQgcmV0dXJuIDAu
ICBTaG91bGQgdXNlICJsbWluIiBidXQgaXQgZG9lc24ndCBleGlzdCBub3cuCi0gKi8KLSNkZWZp
bmUJc2JzcGFjZShzYikgXAotICAgICgobG9uZykgaW1pbigoaW50KSgoc2IpLT5zYl9oaXdhdCAt
IChzYiktPnNiX2NjKSwgXAotCSAoaW50KSgoc2IpLT5zYl9tYm1heCAtIChzYiktPnNiX21iY250
KSkpCi0KLS8qIGRvIHdlIGhhdmUgdG8gc2VuZCBhbGwgYXQgb25jZSBvbiBhIHNvY2tldD8gKi8K
LSNkZWZpbmUJc29zZW5kYWxsYXRvbmNlKHNvKSBcCi0gICAgKChzbyktPnNvX3Byb3RvLT5wcl9m
bGFncyAmIFBSX0FUT01JQykKLQotLyogY2FuIHdlIHJlYWQgc29tZXRoaW5nIGZyb20gc28/ICov
Ci0jZGVmaW5lCXNvcmVhZGFibGUoc28pIFwKLSAgICAoKHNvKS0+c29fcmN2LnNiX2NjID49IChz
byktPnNvX3Jjdi5zYl9sb3dhdCB8fCBcCi0JKChzbyktPnNvX3Jjdi5zYl9zdGF0ZSAmIFNCU19D
QU5UUkNWTU9SRSkgfHwgXAotCSFUQUlMUV9FTVBUWSgmKHNvKS0+c29fY29tcCkgfHwgKHNvKS0+
c29fZXJyb3IpCi0KLS8qIGNhbiB3ZSB3cml0ZSBzb21ldGhpbmcgdG8gc28/ICovCi0jZGVmaW5l
CXNvd3JpdGVhYmxlKHNvKSBcCi0gICAgKChzYnNwYWNlKCYoc28pLT5zb19zbmQpID49IChzbykt
PnNvX3NuZC5zYl9sb3dhdCAmJiBcCi0JKCgoc28pLT5zb19zdGF0ZSZTU19JU0NPTk5FQ1RFRCkg
fHwgXAotCSAgKChzbyktPnNvX3Byb3RvLT5wcl9mbGFncyZQUl9DT05OUkVRVUlSRUQpPT0wKSkg
fHwgXAotICAgICAoKHNvKS0+c29fc25kLnNiX3N0YXRlICYgU0JTX0NBTlRTRU5ETU9SRSkgfHwg
XAotICAgICAoc28pLT5zb19lcnJvcikKLQotLyogYWRqdXN0IGNvdW50ZXJzIGluIHNiIHJlZmxl
Y3RpbmcgYWxsb2NhdGlvbiBvZiBtICovCi0jZGVmaW5lCXNiYWxsb2Moc2IsIG0pIHsgXAotCShz
YiktPnNiX2NjICs9IChtKS0+bV9sZW47IFwKLQlpZiAoKG0pLT5tX3R5cGUgIT0gTVRfREFUQSAm
JiAobSktPm1fdHlwZSAhPSBNVF9PT0JEQVRBKSBcCi0JCShzYiktPnNiX2N0bCArPSAobSktPm1f
bGVuOyBcCi0JKHNiKS0+c2JfbWJjbnQgKz0gTVNJWkU7IFwKLQlpZiAoKG0pLT5tX2ZsYWdzICYg
TV9FWFQpIFwKLQkJKHNiKS0+c2JfbWJjbnQgKz0gKG0pLT5tX2V4dC5leHRfc2l6ZTsgXAotfQot
Ci0vKiBhZGp1c3QgY291bnRlcnMgaW4gc2IgcmVmbGVjdGluZyBmcmVlaW5nIG9mIG0gKi8KLSNk
ZWZpbmUJc2JmcmVlKHNiLCBtKSB7IFwKLQkoc2IpLT5zYl9jYyAtPSAobSktPm1fbGVuOyBcCi0J
aWYgKChtKS0+bV90eXBlICE9IE1UX0RBVEEgJiYgKG0pLT5tX3R5cGUgIT0gTVRfT09CREFUQSkg
XAotCQkoc2IpLT5zYl9jdGwgLT0gKG0pLT5tX2xlbjsgXAotCShzYiktPnNiX21iY250IC09IE1T
SVpFOyBcCi0JaWYgKChtKS0+bV9mbGFncyAmIE1fRVhUKSBcCi0JCShzYiktPnNiX21iY250IC09
IChtKS0+bV9leHQuZXh0X3NpemU7IFwKLQlpZiAoKHNiKS0+c2Jfc25kcHRyID09IChtKSkgeyBc
Ci0JCShzYiktPnNiX3NuZHB0ciA9IE5VTEw7IFwKLQkJKHNiKS0+c2Jfc25kcHRyb2ZmID0gMDsg
XAotCX0gXAotCWlmICgoc2IpLT5zYl9zbmRwdHJvZmYgIT0gMCkgXAotCQkoc2IpLT5zYl9zbmRw
dHJvZmYgLT0gKG0pLT5tX2xlbjsgXAotfQotCi0vKgotICogc29yZWYoKS9zb3JlbGUoKSByZWYt
Y291bnQgdGhlIHNvY2tldCBzdHJ1Y3R1cmUuICBOb3RlIHRoYXQgeW91IG11c3QKLSAqIHN0aWxs
IGV4cGxpY2l0bHkgY2xvc2UgdGhlIHNvY2tldCwgYnV0IHRoZSBsYXN0IHJlZiBjb3VudCB3aWxs
IGZyZWUKLSAqIHRoZSBzdHJ1Y3R1cmUuCi0gKi8KLSNkZWZpbmUJc29yZWYoc28pIGRvIHsJCQkJ
CQkJXAotCVNPQ0tfTE9DS19BU1NFUlQoc28pOwkJCQkJCVwKLQkrKyhzbyktPnNvX2NvdW50OwkJ
CQkJCVwKLX0gd2hpbGUgKDApCi0KLSNkZWZpbmUJc29yZWxlKHNvKSBkbyB7CQkJCQkJCVwKLQlB
Q0NFUFRfTE9DS19BU1NFUlQoKTsJCQkJCQlcCi0JU09DS19MT0NLX0FTU0VSVChzbyk7CQkJCQkJ
XAotCUtBU1NFUlQoKHNvKS0+c29fY291bnQgPiAwLCAoInNvcmVsZSIpKTsJCQlcCi0JaWYgKC0t
KHNvKS0+c29fY291bnQgPT0gMCkJCQkJCVwKLQkJc29mcmVlKHNvKTsJCQkJCQlcCi0JZWxzZSB7
CQkJCQkJCQlcCi0JCVNPQ0tfVU5MT0NLKHNvKTsJCQkJCVwKLQkJQUNDRVBUX1VOTE9DSygpOwkJ
CQkJXAotCX0JCQkJCQkJCVwKLX0gd2hpbGUgKDApCi0KLSNkZWZpbmUJc290cnlmcmVlKHNvKSBk
byB7CQkJCQkJXAotCUFDQ0VQVF9MT0NLX0FTU0VSVCgpOwkJCQkJCVwKLQlTT0NLX0xPQ0tfQVNT
RVJUKHNvKTsJCQkJCQlcCi0JaWYgKChzbyktPnNvX2NvdW50ID09IDApCQkJCQlcCi0JCXNvZnJl
ZShzbyk7CQkJCQkJXAotCWVsc2UgewkJCQkJCQkJXAotCQlTT0NLX1VOTE9DSyhzbyk7CQkJCQlc
Ci0JCUFDQ0VQVF9VTkxPQ0soKTsJCQkJCVwKLQl9CQkJCQkJCQlcCi19IHdoaWxlKDApCi0KLS8q
Ci0gKiBJbiBzb3J3YWtldXAoKSBhbmQgc293d2FrZXVwKCksIGFjcXVpcmUgdGhlIHNvY2tldCBi
dWZmZXIgbG9jayB0bwotICogYXZvaWQgYSBub24tYXRvbWljIHRlc3QtYW5kLXdha2V1cC4gIEhv
d2V2ZXIsIHNvd2FrZXVwIGlzCi0gKiByZXNwb25zaWJsZSBmb3IgcmVsZWFzaW5nIHRoZSBsb2Nr
IGlmIGl0IGlzIGNhbGxlZC4gIFdlIHVubG9jayBvbmx5Ci0gKiBpZiB3ZSBkb24ndCBjYWxsIGlu
dG8gc293YWtldXAuICBJZiBhbnkgY29kZSBpcyBpbnRyb2R1Y2VkIHRoYXQKLSAqIGRpcmVjdGx5
IGludm9rZXMgdGhlIHVuZGVybHlpbmcgc293YWtldXAoKSBwcmltaXRpdmVzLCBpdCBtdXN0Ci0g
KiBtYWludGFpbiB0aGUgc2FtZSBzZW1hbnRpY3MuCi0gKi8KLSNkZWZpbmUJc29yd2FrZXVwX2xv
Y2tlZChzbykgZG8gewkJCQkJXAotCVNPQ0tCVUZfTE9DS19BU1NFUlQoJihzbyktPnNvX3Jjdik7
CQkJCVwKLQlpZiAoc2Jfbm90aWZ5KCYoc28pLT5zb19yY3YpKQkJCQkJXAotCQlzb3dha2V1cCgo
c28pLCAmKHNvKS0+c29fcmN2KTsJIAkJCVwKLQllbHNlCQkJCQkJCQlcCi0JCVNPQ0tCVUZfVU5M
T0NLKCYoc28pLT5zb19yY3YpOwkJCQlcCi19IHdoaWxlICgwKQotCi0jZGVmaW5lCXNvcndha2V1
cChzbykgZG8gewkJCQkJCVwKLQlTT0NLQlVGX0xPQ0soJihzbyktPnNvX3Jjdik7CQkJCQlcCi0J
c29yd2FrZXVwX2xvY2tlZChzbyk7CQkJCQkJXAotfSB3aGlsZSAoMCkKLQotI2RlZmluZQlzb3d3
YWtldXBfbG9ja2VkKHNvKSBkbyB7CQkJCQlcCi0JU09DS0JVRl9MT0NLX0FTU0VSVCgmKHNvKS0+
c29fc25kKTsJCQkJXAotCWlmIChzYl9ub3RpZnkoJihzbyktPnNvX3NuZCkpCQkJCQlcCi0JCXNv
d2FrZXVwKChzbyksICYoc28pLT5zb19zbmQpOyAJCQkJXAotCWVsc2UJCQkJCQkJCVwKLQkJU09D
S0JVRl9VTkxPQ0soJihzbyktPnNvX3NuZCk7CQkJCVwKLX0gd2hpbGUgKDApCi0KLSNkZWZpbmUJ
c293d2FrZXVwKHNvKSBkbyB7CQkJCQkJXAotCVNPQ0tCVUZfTE9DSygmKHNvKS0+c29fc25kKTsJ
CQkJCVwKLQlzb3d3YWtldXBfbG9ja2VkKHNvKTsJCQkJCQlcCi19IHdoaWxlICgwKQotCi0vKgot
ICogQXJndW1lbnQgc3RydWN0dXJlIGZvciBzb3NldG9wdCBldCBzZXEuICBUaGlzIGlzIGluIHRo
ZSBLRVJORUwKLSAqIHNlY3Rpb24gYmVjYXVzZSBpdCB3aWxsIG5ldmVyIGJlIHZpc2libGUgdG8g
dXNlciBjb2RlLgotICovCi1lbnVtIHNvcHRfZGlyIHsgU09QVF9HRVQsIFNPUFRfU0VUIH07Ci1z
dHJ1Y3Qgc29ja29wdCB7Ci0JZW51bQlzb3B0X2RpciBzb3B0X2RpcjsgLyogaXMgdGhpcyBhIGdl
dCBvciBhIHNldD8gKi8KLQlpbnQJc29wdF9sZXZlbDsJLyogc2Vjb25kIGFyZyBvZiBbZ3NdZXRz
b2Nrb3B0ICovCi0JaW50CXNvcHRfbmFtZTsJLyogdGhpcmQgYXJnIG9mIFtnc11ldHNvY2tvcHQg
Ki8KLQl2b2lkICAgKnNvcHRfdmFsOwkvKiBmb3VydGggYXJnIG9mIFtnc11ldHNvY2tvcHQgKi8K
LQlzaXplX3QJc29wdF92YWxzaXplOwkvKiAoYWxtb3N0KSBmaWZ0aCBhcmcgb2YgW2dzXWV0c29j
a29wdCAqLwotCXN0cnVjdAl0aHJlYWQgKnNvcHRfdGQ7IC8qIGNhbGxpbmcgdGhyZWFkIG9yIG51
bGwgaWYga2VybmVsICovCi19OwotCi1zdHJ1Y3QgYWNjZXB0X2ZpbHRlciB7Ci0JY2hhcglhY2Nm
X25hbWVbMTZdOwotCXZvaWQJKCphY2NmX2NhbGxiYWNrKQotCQkoc3RydWN0IHNvY2tldCAqc28s
IHZvaWQgKmFyZywgaW50IHdhaXRmbGFnKTsKLQl2b2lkICoJKCphY2NmX2NyZWF0ZSkKLQkJKHN0
cnVjdCBzb2NrZXQgKnNvLCBjaGFyICphcmcpOwotCXZvaWQJKCphY2NmX2Rlc3Ryb3kpCi0JCShz
dHJ1Y3Qgc29ja2V0ICpzbyk7Ci0JU0xJU1RfRU5UUlkoYWNjZXB0X2ZpbHRlcikgYWNjZl9uZXh0
OwotfTsKLQotZXh0ZXJuIGludAltYXhzb2NrZXRzOwotZXh0ZXJuIHVfbG9uZwlzYl9tYXg7Ci1l
eHRlcm4gc3RydWN0IHVtYV96b25lICpzb2NrZXRfem9uZTsKLWV4dGVybiBzb19nZW5fdCBzb19n
ZW5jbnQ7Ci0KLXN0cnVjdCBtYnVmOwotc3RydWN0IHNvY2thZGRyOwotc3RydWN0IHVjcmVkOwot
c3RydWN0IHVpbzsKLQotLyoKLSAqIEZyb20gdWlwY19zb2NrZXQgYW5kIGZyaWVuZHMKLSAqLwot
aW50CWRvX2dldG9wdF9hY2NlcHRfZmlsdGVyKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29j
a29wdCAqc29wdCk7Ci1pbnQJZG9fc2V0b3B0X2FjY2VwdF9maWx0ZXIoc3RydWN0IHNvY2tldCAq
c28sIHN0cnVjdCBzb2Nrb3B0ICpzb3B0KTsKLWludAlzb19zZXRzb2Nrb3B0KHN0cnVjdCBzb2Nr
ZXQgKnNvLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLAotCSAgICB2b2lkICpvcHR2YWwsIHNpemVf
dCBvcHRsZW4pOwotaW50CXNvY2thcmdzKHN0cnVjdCBtYnVmICoqbXAsIGNhZGRyX3QgYnVmLCBp
bnQgYnVmbGVuLCBpbnQgdHlwZSk7Ci1pbnQJZ2V0c29ja2FkZHIoc3RydWN0IHNvY2thZGRyICoq
bmFtcCwgY2FkZHJfdCB1YWRkciwgc2l6ZV90IGxlbik7Ci12b2lkCXNiYXBwZW5kKHN0cnVjdCBz
b2NrYnVmICpzYiwgc3RydWN0IG1idWYgKm0pOwotdm9pZAlzYmFwcGVuZF9sb2NrZWQoc3RydWN0
IHNvY2tidWYgKnNiLCBzdHJ1Y3QgbWJ1ZiAqbSk7Ci12b2lkCXNiYXBwZW5kc3RyZWFtKHN0cnVj
dCBzb2NrYnVmICpzYiwgc3RydWN0IG1idWYgKm0pOwotdm9pZAlzYmFwcGVuZHN0cmVhbV9sb2Nr
ZWQoc3RydWN0IHNvY2tidWYgKnNiLCBzdHJ1Y3QgbWJ1ZiAqbSk7Ci1pbnQJc2JhcHBlbmRhZGRy
KHN0cnVjdCBzb2NrYnVmICpzYiwgY29uc3Qgc3RydWN0IHNvY2thZGRyICphc2EsCi0JICAgIHN0
cnVjdCBtYnVmICptMCwgc3RydWN0IG1idWYgKmNvbnRyb2wpOwotaW50CXNiYXBwZW5kYWRkcl9s
b2NrZWQoc3RydWN0IHNvY2tidWYgKnNiLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKmFzYSwKLQkg
ICAgc3RydWN0IG1idWYgKm0wLCBzdHJ1Y3QgbWJ1ZiAqY29udHJvbCk7Ci1pbnQJc2JhcHBlbmRj
b250cm9sKHN0cnVjdCBzb2NrYnVmICpzYiwgc3RydWN0IG1idWYgKm0wLAotCSAgICBzdHJ1Y3Qg
bWJ1ZiAqY29udHJvbCk7Ci1pbnQJc2JhcHBlbmRjb250cm9sX2xvY2tlZChzdHJ1Y3Qgc29ja2J1
ZiAqc2IsIHN0cnVjdCBtYnVmICptMCwKLQkgICAgc3RydWN0IG1idWYgKmNvbnRyb2wpOwotdm9p
ZAlzYmFwcGVuZHJlY29yZChzdHJ1Y3Qgc29ja2J1ZiAqc2IsIHN0cnVjdCBtYnVmICptMCk7Ci12
b2lkCXNiYXBwZW5kcmVjb3JkX2xvY2tlZChzdHJ1Y3Qgc29ja2J1ZiAqc2IsIHN0cnVjdCBtYnVm
ICptMCk7Ci12b2lkCXNiY2hlY2soc3RydWN0IHNvY2tidWYgKnNiKTsKLXZvaWQJc2Jjb21wcmVz
cyhzdHJ1Y3Qgc29ja2J1ZiAqc2IsIHN0cnVjdCBtYnVmICptLCBzdHJ1Y3QgbWJ1ZiAqbik7Ci1z
dHJ1Y3QgbWJ1ZiAqCi0Jc2JjcmVhdGVjb250cm9sKGNhZGRyX3QgcCwgaW50IHNpemUsIGludCB0
eXBlLCBpbnQgbGV2ZWwpOwotdm9pZAlzYmRlc3Ryb3koc3RydWN0IHNvY2tidWYgKnNiLCBzdHJ1
Y3Qgc29ja2V0ICpzbyk7Ci12b2lkCXNiZHJvcChzdHJ1Y3Qgc29ja2J1ZiAqc2IsIGludCBsZW4p
Owotdm9pZAlzYmRyb3BfbG9ja2VkKHN0cnVjdCBzb2NrYnVmICpzYiwgaW50IGxlbik7Ci12b2lk
CXNiZHJvcHJlY29yZChzdHJ1Y3Qgc29ja2J1ZiAqc2IpOwotdm9pZAlzYmRyb3ByZWNvcmRfbG9j
a2VkKHN0cnVjdCBzb2NrYnVmICpzYik7Ci12b2lkCXNiZmx1c2goc3RydWN0IHNvY2tidWYgKnNi
KTsKLXZvaWQJc2JmbHVzaF9sb2NrZWQoc3RydWN0IHNvY2tidWYgKnNiKTsKLXZvaWQJc2JyZWxl
YXNlKHN0cnVjdCBzb2NrYnVmICpzYiwgc3RydWN0IHNvY2tldCAqc28pOwotdm9pZAlzYnJlbGVh
c2VfbG9ja2VkKHN0cnVjdCBzb2NrYnVmICpzYiwgc3RydWN0IHNvY2tldCAqc28pOwotaW50CXNi
cmVzZXJ2ZShzdHJ1Y3Qgc29ja2J1ZiAqc2IsIHVfbG9uZyBjYywgc3RydWN0IHNvY2tldCAqc28s
Ci0JICAgIHN0cnVjdCB0aHJlYWQgKnRkKTsKLWludAlzYnJlc2VydmVfbG9ja2VkKHN0cnVjdCBz
b2NrYnVmICpzYiwgdV9sb25nIGNjLCBzdHJ1Y3Qgc29ja2V0ICpzbywKLQkgICAgc3RydWN0IHRo
cmVhZCAqdGQpOwotc3RydWN0IG1idWYgKgotCXNic25kcHRyKHN0cnVjdCBzb2NrYnVmICpzYiwg
dV9pbnQgb2ZmLCB1X2ludCBsZW4sIHVfaW50ICptb2ZmKTsKLXZvaWQJc2J0b3hzb2NrYnVmKHN0
cnVjdCBzb2NrYnVmICpzYiwgc3RydWN0IHhzb2NrYnVmICp4c2IpOwotaW50CXNid2FpdChzdHJ1
Y3Qgc29ja2J1ZiAqc2IpOwotaW50CXNibG9jayhzdHJ1Y3Qgc29ja2J1ZiAqc2IsIGludCBmbGFn
cyk7Ci12b2lkCXNidW5sb2NrKHN0cnVjdCBzb2NrYnVmICpzYik7Ci12b2lkCXNvYWJvcnQoc3Ry
dWN0IHNvY2tldCAqc28pOwotaW50CXNvYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qg
c29ja2FkZHIgKipuYW0pOwotaW50CXNvY2hlY2t1aWQoc3RydWN0IHNvY2tldCAqc28sIHVpZF90
IHVpZCk7Ci1pbnQJc29iaW5kKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKm5h
bSwgc3RydWN0IHRocmVhZCAqdGQpOwotdm9pZAlzb2NhbnRyY3Ztb3JlKHN0cnVjdCBzb2NrZXQg
KnNvKTsKLXZvaWQJc29jYW50cmN2bW9yZV9sb2NrZWQoc3RydWN0IHNvY2tldCAqc28pOwotdm9p
ZAlzb2NhbnRzZW5kbW9yZShzdHJ1Y3Qgc29ja2V0ICpzbyk7Ci12b2lkCXNvY2FudHNlbmRtb3Jl
X2xvY2tlZChzdHJ1Y3Qgc29ja2V0ICpzbyk7Ci1pbnQJc29jbG9zZShzdHJ1Y3Qgc29ja2V0ICpz
byk7Ci1pbnQJc29jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKm5h
bSwgc3RydWN0IHRocmVhZCAqdGQpOwotaW50CXNvY29ubmVjdDIoc3RydWN0IHNvY2tldCAqc28x
LCBzdHJ1Y3Qgc29ja2V0ICpzbzIpOwotaW50CXNvY293X3NldHVwKHN0cnVjdCBtYnVmICptMCwg
c3RydWN0IHVpbyAqdWlvKTsKLWludAlzb2NyZWF0ZShpbnQgZG9tLCBzdHJ1Y3Qgc29ja2V0ICoq
YXNvLCBpbnQgdHlwZSwgaW50IHByb3RvLAotCSAgICBzdHJ1Y3QgdWNyZWQgKmNyZWQsIHN0cnVj
dCB0aHJlYWQgKnRkKTsKLWludAlzb2Rpc2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28pOwotc3Ry
dWN0CXNvY2thZGRyICpzb2R1cHNvY2thZGRyKGNvbnN0IHN0cnVjdCBzb2NrYWRkciAqc2EsIGlu
dCBtZmxhZ3MpOwotdm9pZAlzb2ZyZWUoc3RydWN0IHNvY2tldCAqc28pOwotaW50CXNvZ2V0b3B0
KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja29wdCAqc29wdCk7Ci12b2lkCXNvaGFzb3V0
b2ZiYW5kKHN0cnVjdCBzb2NrZXQgKnNvKTsKLXZvaWQJc29pc2Nvbm5lY3RlZChzdHJ1Y3Qgc29j
a2V0ICpzbyk7Ci12b2lkCXNvaXNjb25uZWN0aW5nKHN0cnVjdCBzb2NrZXQgKnNvKTsKLXZvaWQJ
c29pc2Rpc2Nvbm5lY3RlZChzdHJ1Y3Qgc29ja2V0ICpzbyk7Ci12b2lkCXNvaXNkaXNjb25uZWN0
aW5nKHN0cnVjdCBzb2NrZXQgKnNvKTsKLWludAlzb2xpc3RlbihzdHJ1Y3Qgc29ja2V0ICpzbywg
aW50IGJhY2tsb2csIHN0cnVjdCB0aHJlYWQgKnRkKTsKLXZvaWQJc29saXN0ZW5fcHJvdG8oc3Ry
dWN0IHNvY2tldCAqc28sIGludCBiYWNrbG9nKTsKLWludAlzb2xpc3Rlbl9wcm90b19jaGVjayhz
dHJ1Y3Qgc29ja2V0ICpzbyk7Ci1zdHJ1Y3Qgc29ja2V0ICoKLQlzb25ld2Nvbm4oc3RydWN0IHNv
Y2tldCAqaGVhZCwgaW50IGNvbm5zdGF0dXMpOwotaW50CXNvb3B0Y29weWluKHN0cnVjdCBzb2Nr
b3B0ICpzb3B0LCB2b2lkICpidWYsIHNpemVfdCBsZW4sIHNpemVfdCBtaW5sZW4pOwotaW50CXNv
b3B0Y29weW91dChzdHJ1Y3Qgc29ja29wdCAqc29wdCwgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3Qg
bGVuKTsKLQotLyogWFhYOyBwcmVwYXJlIG1idWYgZm9yIChfX0ZyZWVCU0RfXyA8IDMpIHJvdXRp
bmVzLiAqLwotaW50CXNvb3B0X2dldG0oc3RydWN0IHNvY2tvcHQgKnNvcHQsIHN0cnVjdCBtYnVm
ICoqbXApOwotaW50CXNvb3B0X21jb3B5aW4oc3RydWN0IHNvY2tvcHQgKnNvcHQsIHN0cnVjdCBt
YnVmICptKTsKLWludAlzb29wdF9tY29weW91dChzdHJ1Y3Qgc29ja29wdCAqc29wdCwgc3RydWN0
IG1idWYgKm0pOwotCi1pbnQJc29wb2xsKHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgZXZlbnRzLCBz
dHJ1Y3QgdWNyZWQgKmFjdGl2ZV9jcmVkLAotCSAgICBzdHJ1Y3QgdGhyZWFkICp0ZCk7Ci1pbnQJ
c29wb2xsX2dlbmVyaWMoc3RydWN0IHNvY2tldCAqc28sIGludCBldmVudHMsCi0JICAgIHN0cnVj
dCB1Y3JlZCAqYWN0aXZlX2NyZWQsIHN0cnVjdCB0aHJlYWQgKnRkKTsKLWludAlzb3JlY2VpdmUo
c3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqKnBhZGRyLCBzdHJ1Y3QgdWlvICp1
aW8sCi0JICAgIHN0cnVjdCBtYnVmICoqbXAwLCBzdHJ1Y3QgbWJ1ZiAqKmNvbnRyb2xwLCBpbnQg
KmZsYWdzcCk7Ci1pbnQJc29yZWNlaXZlX2dlbmVyaWMoc3RydWN0IHNvY2tldCAqc28sIHN0cnVj
dCBzb2NrYWRkciAqKnBhZGRyLAotCSAgICBzdHJ1Y3QgdWlvICp1aW8sIHN0cnVjdCBtYnVmICoq
bXAwLCBzdHJ1Y3QgbWJ1ZiAqKmNvbnRyb2xwLAotCSAgICBpbnQgKmZsYWdzcCk7Ci1pbnQJc29y
ZXNlcnZlKHN0cnVjdCBzb2NrZXQgKnNvLCB1X2xvbmcgc25kY2MsIHVfbG9uZyByY3ZjYyk7Ci12
b2lkCXNvcmZsdXNoKHN0cnVjdCBzb2NrZXQgKnNvKTsKLWludAlzb3NlbmQoc3RydWN0IHNvY2tl
dCAqc28sIHN0cnVjdCBzb2NrYWRkciAqYWRkciwgc3RydWN0IHVpbyAqdWlvLAotCSAgICBzdHJ1
Y3QgbWJ1ZiAqdG9wLCBzdHJ1Y3QgbWJ1ZiAqY29udHJvbCwgaW50IGZsYWdzLAotCSAgICBzdHJ1
Y3QgdGhyZWFkICp0ZCk7Ci1pbnQJc29zZW5kX2RncmFtKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1
Y3Qgc29ja2FkZHIgKmFkZHIsCi0JICAgIHN0cnVjdCB1aW8gKnVpbywgc3RydWN0IG1idWYgKnRv
cCwgc3RydWN0IG1idWYgKmNvbnRyb2wsCi0JICAgIGludCBmbGFncywgc3RydWN0IHRocmVhZCAq
dGQpOwotaW50CXNvc2VuZF9nZW5lcmljKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2Fk
ZHIgKmFkZHIsCi0JICAgIHN0cnVjdCB1aW8gKnVpbywgc3RydWN0IG1idWYgKnRvcCwgc3RydWN0
IG1idWYgKmNvbnRyb2wsCi0JICAgIGludCBmbGFncywgc3RydWN0IHRocmVhZCAqdGQpOwotaW50
CXNvc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja29wdCAqc29wdCk7Ci1pbnQJ
c29zaHV0ZG93bihzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IGhvdyk7Ci12b2lkCXNvdG94c29ja2V0
KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgeHNvY2tldCAqeHNvKTsKLXZvaWQJc293YWtldXAo
c3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYnVmICpzYik7Ci0KLSNpZmRlZiBTT0NLQlVG
X0RFQlVHCi12b2lkCXNibGFzdHJlY29yZGNoayhzdHJ1Y3Qgc29ja2J1ZiAqLCBjb25zdCBjaGFy
ICosIGludCk7Ci0jZGVmaW5lCVNCTEFTVFJFQ09SRENISyhzYikJc2JsYXN0cmVjb3JkY2hrKChz
YiksIF9fRklMRV9fLCBfX0xJTkVfXykKLQotdm9pZAlzYmxhc3RtYnVmY2hrKHN0cnVjdCBzb2Nr
YnVmICosIGNvbnN0IGNoYXIgKiwgaW50KTsKLSNkZWZpbmUJU0JMQVNUTUJVRkNISyhzYikJc2Js
YXN0bWJ1ZmNoaygoc2IpLCBfX0ZJTEVfXywgX19MSU5FX18pCi0jZWxzZQotI2RlZmluZQlTQkxB
U1RSRUNPUkRDSEsoc2IpICAgICAgLyogbm90aGluZyAqLwotI2RlZmluZQlTQkxBU1RNQlVGQ0hL
KHNiKSAgICAgICAgLyogbm90aGluZyAqLwotI2VuZGlmIC8qIFNPQ0tCVUZfREVCVUcgKi8KLQot
LyoKLSAqIEFjY2VwdCBmaWx0ZXIgZnVuY3Rpb25zIChkdWgpLgorICogU29ja2V0IGV2ZW50IGZs
YWdzCiAgKi8KLWludAlhY2NlcHRfZmlsdF9hZGQoc3RydWN0IGFjY2VwdF9maWx0ZXIgKmZpbHQp
OwotaW50CWFjY2VwdF9maWx0X2RlbChjaGFyICpuYW1lKTsKLXN0cnVjdAlhY2NlcHRfZmlsdGVy
ICphY2NlcHRfZmlsdF9nZXQoY2hhciAqbmFtZSk7Ci0jaWZkZWYgQUNDRVBUX0ZJTFRFUl9NT0QK
LSNpZmRlZiBTWVNDVExfREVDTAotU1lTQ1RMX0RFQ0woX25ldF9pbmV0X2FjY2YpOwotI2VuZGlm
Ci1pbnQJYWNjZXB0X2ZpbHRfZ2VuZXJpY19tb2RfZXZlbnQobW9kdWxlX3QgbW9kLCBpbnQgZXZl
bnQsIHZvaWQgKmRhdGEpOwotI2VuZGlmCi0KLSNlbmRpZiAvKiBfS0VSTkVMICovCisjZGVmaW5l
IFNDVFBfRVZFTlRfUkVBRAkJMHgwMDAxCS8qIHNvY2tldCBpcyByZWFkYWJsZSAqLworI2RlZmlu
ZSBTQ1RQX0VWRU5UX1dSSVRFCTB4MDAwMgkvKiBzb2NrZXQgaXMgd3JpdGVhYmxlICovCisjZGVm
aW5lIFNDVFBfRVZFTlRfRVJST1IJMHgwMDA0CS8qIHNvY2tldCBoYXMgYW4gZXJyb3Igc3RhdGUg
Ki8KIAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0qLwpAQCAtNzA4LDcgKzM4Myw2IEBAIGludAlhY2NlcHRfZmlsdF9nZW5l
cmljX21vZF9ldmVudChtb2R1bGVfdCBtb2QsIGludCBldmVudCwgdm9pZCAqZGF0YSk7CiAgKiAg
YWJvdmUgaW50bywgYXZvaWRpbmcgaGF2aW5nIHRvIHBvcnQgdGhlIGVudGlyZSB0aGluZyBhdCBv
bmNlLi4uCiAgKiAgRm9yIGZ1bmN0aW9uIHByb3RvdHlwZXMsIHRoZSBmdWxsIGJvZGllcyBhcmUg
aW4gdXNlcl9zb2NrZXQuYyAuCiAgKi8KLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAKIC8q
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gKi8KIC8qIC0tLSBmdW5jdGlvbiBwcm90b3R5cGVzIChpbXBsZW1lbnRlZCBpbiB1c2VyX3Nv
Y2tldC5jKSAtLS0gKi8KQEAgLTcxOSw2ICszOTMsNyBAQCB2b2lkCXNvaXNjb25uZWN0ZWQoc3Ry
dWN0IHNvY2tldCAqc28pOwogc3RydWN0IHNvY2tldCAqIHNvbmV3Y29ubihzdHJ1Y3Qgc29ja2V0
ICpoZWFkLCBpbnQgY29ubnN0YXR1cyk7CiB2b2lkCXNvY2FudHJjdm1vcmUoc3RydWN0IHNvY2tl
dCAqc28pOwogdm9pZAlzb2NhbnRzZW5kbW9yZShzdHJ1Y3Qgc29ja2V0ICpzbyk7Cit2b2lkCXNv
ZnJlZShzdHJ1Y3Qgc29ja2V0ICpzbyk7CiAKIAogCkBAIC03ODIsOSArNDU3LDcgQEAgZXh0ZXJu
IGludCBzY3RwX2xpc3RlbihzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IGJhY2tsb2csIHN0cnVjdCBw
cm9jICpwKTsKIGV4dGVybiB2b2lkIHNvY2FudHJjdm1vcmVfbG9ja2VkKHN0cnVjdCBzb2NrZXQg
KnNvKTsKIGV4dGVybiBpbnQgc2N0cF9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29j
a2FkZHIgKmFkZHIpOwogZXh0ZXJuIGludCBzY3RwNl9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvLCBz
dHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIHZvaWQgKnByb2MpOwotI2lmIGRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKIGV4dGVybiBpbnQgc2N0cGNvbm5fYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0
IHNvY2thZGRyICphZGRyKTsKLSNlbmRpZgogZXh0ZXJuIGludCBzY3RwX2FjY2VwdChzdHJ1Y3Qg
c29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICoqYWRkcik7CiBleHRlcm4gaW50IHNjdHBfYXR0
YWNoKHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgcHJvdG8sIHVpbnQzMl90IHZyZl9pZCk7CiBleHRl
cm4gaW50IHNjdHA2X2F0dGFjaChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IHByb3RvLCB1aW50MzJf
dCB2cmZfaWQpOwpAQCAtODAzLDkgKzQ3Niw3IEBAIGV4dGVybiBpbnQgc29jb25uZWN0KHN0cnVj
dCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKm5hbSk7CiBleHRlcm4gaW50IHNjdHBfZGlz
Y29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbyk7CiBleHRlcm4gaW50IHNjdHBfY29ubmVjdChzdHJ1
Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRyKTsKIGV4dGVybiBpbnQgc2N0cDZf
Y29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRyKTsKLSNpZiBk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBleHRlcm4gaW50IHNjdHBjb25uX2Nvbm5lY3Qoc3RydWN0
IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqYWRkcik7Ci0jZW5kaWYKIGV4dGVybiB2b2lk
IHNjdHBfZmluaXNoKHZvaWQpOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTg1Myw4ICs1MjQsNCBAQCBleHRlcm4gdm9pZCBzY3Rw
X2ZpbmlzaCh2b2lkKTsKIAlzb3d3YWtldXBfbG9ja2VkKHNvKTsJCQkJCQlcCiB9IHdoaWxlICgw
KQogCi0KLQotI2VuZGlmIC8qIF9fVXNlcnNwYWNlX18gKi8KLQogI2VuZGlmIC8qICFfU1lTX1NP
Q0tFVFZBUl9IXyAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX3VtYS5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX3VtYS5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9k
ZSAxMDA3NTUKaW5kZXggMWJkZWZkYjgwOTY4YWU5YzQ5ZWY0ZWIwYTI1ZmExYTljZTlhNGI0Mi4u
NTlkNzFmZmY0MmMzZWZiMTMzNDQxYzE3ODU4OWZmOGE5Yjg2MTMwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91
c3JzY3RwbGliL3VzZXJfdW1hLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX3VtYS5o
CkBAIC00NiwxMSArNDYsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgdW1hX3pvbmUgKiB1bWFfem9uZV90
OwogdHlwZWRlZiBzdHJ1Y3QgdW1hX2tlZyAqIHVtYV9rZWdfdDsKIAogc3RydWN0IHVtYV9jYWNo
ZSB7Ci0gICAgaW50IHN0dWI7IC8qIFRPRE8gX19Vc2Vyc3BhY2VfXyAqLworCWludCBzdHViOyAv
KiBUT0RPIF9fVXNlcnNwYWNlX18gKi8KIH07CiAKIHN0cnVjdCB1bWFfa2VnIHsKLSAgICBpbnQg
c3R1YjsgLyogVE9ETyBfX1VzZXJzcGFjZV9fICovCisJaW50IHN0dWI7IC8qIFRPRE8gX19Vc2Vy
c3BhY2VfXyAqLwogfTsKIAogc3RydWN0IHVtYV96b25lIHsKQEAgLTgzLDE2ICs4MywxNCBAQCBz
dHJ1Y3QgdW1hX3pvbmUgewogLyogUHJvdG90eXBlICovCiB1bWFfem9uZV90CiB1bWFfemNyZWF0
ZShjaGFyICpuYW1lLCBzaXplX3Qgc2l6ZSwgdW1hX2N0b3IgY3RvciwgdW1hX2R0b3IgZHRvciwK
LQkgICAgdW1hX2luaXQgdW1pbml0LCB1bWFfZmluaSBmaW5pLCBpbnQgYWxpZ24sIHVfaW50MzJf
dCBmbGFncyk7CisJICAgIHVtYV9pbml0IHVtaW5pdCwgdW1hX2ZpbmkgZmluaSwgaW50IGFsaWdu
LCB1aW50MzJfdCBmbGFncyk7CiAKIAogI2RlZmluZSB1bWFfem9uZV9zZXRfbWF4KHpvbmUsIG51
bWJlcikgLyogc3R1YiBUT0RPIF9fVXNlcnNwYWNlX18gKi8KIAogdW1hX3pvbmVfdAogdW1hX3pj
cmVhdGUoY2hhciAqbmFtZSwgc2l6ZV90IHNpemUsIHVtYV9jdG9yIGN0b3IsIHVtYV9kdG9yIGR0
b3IsCi0JICAgIHVtYV9pbml0IHVtaW5pdCwgdW1hX2ZpbmkgZmluaSwgaW50IGFsaWduLCB1X2lu
dDMyX3QgZmxhZ3MpCi17Ci0gICAgcmV0dXJuIE5VTEw7IC8qIHN0dWIgVE9ETyBfX1VzZXJzcGFj
ZV9fLiBBbHNvIHBsYWNlIGltcGxlbWVudGF0aW9uIGluIGEgc2VwYXJhdGUgLmMgZmlsZSAqLwot
CisJICAgIHVtYV9pbml0IHVtaW5pdCwgdW1hX2ZpbmkgZmluaSwgaW50IGFsaWduLCB1aW50MzJf
dCBmbGFncykgeworCXJldHVybiBOVUxMOyAvKiBzdHViIFRPRE8gX19Vc2Vyc3BhY2VfXy4gQWxz
byBwbGFjZSBpbXBsZW1lbnRhdGlvbiBpbiBhIHNlcGFyYXRlIC5jIGZpbGUgKi8KIH0KICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c3JzY3RwLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91
c3JzY3RwbGliL3VzcnNjdHAuaAppbmRleCBlOTMzYzE0NWVmYjUwNzQzN2NiMGFiMWFiZjE3NTk1
ZjkzOTNhYmE5Li5iNzE5MjkwNGU0Njc1YjY2MjQwMGI3NDI2MzgzMzMzNTQzYWNmOWVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3Vz
cnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzcnNjdHAuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3Jz
Y3RwbGliL3VzcnNjdHAuaApAQCAtNzIsNyArNzIsMTYgQEAgZXh0ZXJuICJDIiB7CiAjZGVmaW5l
IGludDMyX3QgICBfX2ludDMyCiAjZW5kaWYKIAotI2RlZmluZSBzc2l6ZV90ICAgX19pbnQ2NAor
I2lmbmRlZiBzc2l6ZV90CisjaWZkZWYgX1dJTjY0CisjZGVmaW5lIHNzaXplX3QgX19pbnQ2NAor
I2VsaWYgZGVmaW5lZCBfV0lOMzIKKyNkZWZpbmUgc3NpemVfdCBpbnQKKyNlbHNlCisjZXJyb3Ig
IlVua25vd24gcGxhdGZvcm0hIgorI2VuZGlmCisjZW5kaWYKKwogI2RlZmluZSBNU0dfRU9SICAg
MHg4CiAjaWZuZGVmIEVXT1VMREJMT0NLCiAjZGVmaW5lIEVXT1VMREJMT0NLICBXU0FFV09VTERC
TE9DSwpAQCAtMTI3LDEyICsxMzYsOCBAQCBzdHJ1Y3Qgc29ja2FkZHJfY29ubiB7CiAjZW5kaWYK
IAogdW5pb24gc2N0cF9zb2Nrc3RvcmUgewotI2lmIGRlZmluZWQoSU5FVCkKIAlzdHJ1Y3Qgc29j
a2FkZHJfaW4gc2luOwotI2VuZGlmCi0jaWYgZGVmaW5lZChJTkVUNikKIAlzdHJ1Y3Qgc29ja2Fk
ZHJfaW42IHNpbjY7Ci0jZW5kaWYKIAlzdHJ1Y3Qgc29ja2FkZHJfY29ubiBzY29ubjsKIAlzdHJ1
Y3Qgc29ja2FkZHIgc2E7CiB9OwpAQCAtMTQxLDYgKzE0NiwxMCBAQCB1bmlvbiBzY3RwX3NvY2tz
dG9yZSB7CiAjZGVmaW5lIFNDVFBfQ1VSUkVOVF9BU1NPQyAxCiAjZGVmaW5lIFNDVFBfQUxMX0FT
U09DICAgICAyCiAKKyNkZWZpbmUgU0NUUF9FVkVOVF9SRUFEICAgIDB4MDAwMQorI2RlZmluZSBT
Q1RQX0VWRU5UX1dSSVRFICAgMHgwMDAyCisjZGVmaW5lIFNDVFBfRVZFTlRfRVJST1IgICAweDAw
MDQKKwogLyoqKiAgU3RydWN0dXJlcyBhbmQgZGVmaW5pdGlvbnMgdG8gdXNlIHRoZSBzb2NrZXQg
QVBJICAqKiovCiAKICNkZWZpbmUgU0NUUF9BTElHTl9SRVNWX1BBRCA5MgpAQCAtMjcyLDEyICsy
ODEsMTMgQEAgc3RydWN0IHNjdHBfYXNzb2NfY2hhbmdlIHsKICNkZWZpbmUgU0NUUF9DQU5UX1NU
Ul9BU1NPQyAweDAwMDUKIAogLyogc2FjX2luZm8gdmFsdWVzICovCi0jZGVmaW5lIFNDVFBfQVNT
T0NfU1VQUE9SVFNfUFIgICAgICAgIDB4MDEKLSNkZWZpbmUgU0NUUF9BU1NPQ19TVVBQT1JUU19B
VVRIICAgICAgMHgwMgotI2RlZmluZSBTQ1RQX0FTU09DX1NVUFBPUlRTX0FTQ09ORiAgICAweDAz
Ci0jZGVmaW5lIFNDVFBfQVNTT0NfU1VQUE9SVFNfTVVMVElCVUYgIDB4MDQKLSNkZWZpbmUgU0NU
UF9BU1NPQ19TVVBQT1JUU19SRV9DT05GSUcgMHgwNQotI2RlZmluZSBTQ1RQX0FTU09DX1NVUFBP
UlRTX01BWCAgICAgICAweDA1CisjZGVmaW5lIFNDVFBfQVNTT0NfU1VQUE9SVFNfUFIgICAgICAg
ICAgIDB4MDEKKyNkZWZpbmUgU0NUUF9BU1NPQ19TVVBQT1JUU19BVVRIICAgICAgICAgMHgwMgor
I2RlZmluZSBTQ1RQX0FTU09DX1NVUFBPUlRTX0FTQ09ORiAgICAgICAweDAzCisjZGVmaW5lIFND
VFBfQVNTT0NfU1VQUE9SVFNfTVVMVElCVUYgICAgIDB4MDQKKyNkZWZpbmUgU0NUUF9BU1NPQ19T
VVBQT1JUU19SRV9DT05GSUcgICAgMHgwNQorI2RlZmluZSBTQ1RQX0FTU09DX1NVUFBPUlRTX0lO
VEVSTEVBVklORyAweDA2CisjZGVmaW5lIFNDVFBfQVNTT0NfU1VQUE9SVFNfTUFYICAgICAgICAg
IDB4MDYKIAogLyogQWRkcmVzcyBldmVudCAqLwogc3RydWN0IHNjdHBfcGFkZHJfY2hhbmdlIHsK
QEAgLTMwNiw3ICszMTYsNyBAQCBzdHJ1Y3Qgc2N0cF9yZW1vdGVfZXJyb3IgewogCXVpbnQzMl90
IHNyZV9sZW5ndGg7CiAJdWludDE2X3Qgc3JlX2Vycm9yOwogCXNjdHBfYXNzb2NfdCBzcmVfYXNz
b2NfaWQ7Ci0JdWludDhfdCBzcmVfZGF0YVs0XTsKKwl1aW50OF90IHNyZV9kYXRhW107CiB9Owog
CiAvKiBzaHV0ZG93biBldmVudCAqLwpAQCAtNDcxLDYgKzQ4MSw4IEBAIHN0cnVjdCBzY3RwX2V2
ZW50X3N1YnNjcmliZSB7CiAKIAogLyogRmxhZ3MgdGhhdCBnbyBpbnRvIHRoZSBzaW5mby0+c2lu
Zm9fZmxhZ3MgZmllbGQgKi8KKyNkZWZpbmUgU0NUUF9EQVRBX0xBU1RfRlJBRyAgIDB4MDAwMSAv
KiB0YWlsIHBhcnQgb2YgdGhlIG1lc3NhZ2UgY291bGQgbm90IGJlIHNlbnQgKi8KKyNkZWZpbmUg
U0NUUF9EQVRBX05PVF9GUkFHICAgIDB4MDAwMyAvKiBjb21wbGV0ZSBtZXNzYWdlIGNvdWxkIG5v
dCBiZSBzZW50ICovCiAjZGVmaW5lIFNDVFBfTk9USUZJQ0FUSU9OICAgICAweDAwMTAgLyogbmV4
dCBtZXNzYWdlIGlzIGEgbm90aWZpY2F0aW9uICovCiAjZGVmaW5lIFNDVFBfQ09NUExFVEUgICAg
ICAgICAweDAwMjAgLyogbmV4dCBtZXNzYWdlIGlzIGNvbXBsZXRlICovCiAjZGVmaW5lIFNDVFBf
RU9GICAgICAgICAgICAgICAweDAxMDAgLyogU3RhcnQgc2h1dGRvd24gcHJvY2VkdXJlcyAqLwpA
QCAtNTQwLDYgKzU1MiwxNCBAQCBzdHJ1Y3Qgc2N0cF9ldmVudF9zdWJzY3JpYmUgewogI2RlZmlu
ZSBTQ1RQX0RFRkFVTFRfU05ESU5GTyAgICAgICAgICAgIDB4MDAwMDAwMjEKICNkZWZpbmUgU0NU
UF9ERUZBVUxUX1BSSU5GTyAgICAgICAgICAgICAweDAwMDAwMDIyCiAjZGVmaW5lIFNDVFBfUkVN
T1RFX1VEUF9FTkNBUFNfUE9SVCAgICAgMHgwMDAwMDAyNAorI2RlZmluZSBTQ1RQX0VDTl9TVVBQ
T1JURUQgICAgICAgICAgICAgIDB4MDAwMDAwMjUKKyNkZWZpbmUgU0NUUF9QUl9TVVBQT1JURUQg
ICAgICAgICAgICAgICAweDAwMDAwMDI2CisjZGVmaW5lIFNDVFBfQVVUSF9TVVBQT1JURUQgICAg
ICAgICAgICAgMHgwMDAwMDAyNworI2RlZmluZSBTQ1RQX0FTQ09ORl9TVVBQT1JURUQgICAgICAg
ICAgIDB4MDAwMDAwMjgKKyNkZWZpbmUgU0NUUF9SRUNPTkZJR19TVVBQT1JURUQgICAgICAgICAw
eDAwMDAwMDI5CisjZGVmaW5lIFNDVFBfTlJTQUNLX1NVUFBPUlRFRCAgICAgICAgICAgMHgwMDAw
MDAzMAorI2RlZmluZSBTQ1RQX1BLVERST1BfU1VQUE9SVEVEICAgICAgICAgIDB4MDAwMDAwMzEK
KyNkZWZpbmUgU0NUUF9NQVhfQ1dORCAgICAgICAgICAgICAgICAgICAweDAwMDAwMDMyCiAKICNk
ZWZpbmUgU0NUUF9FTkFCTEVfU1RSRUFNX1JFU0VUICAgICAgICAweDAwMDAwOTAwIC8qIHN0cnVj
dCBzY3RwX2Fzc29jX3ZhbHVlICovCiAKQEAgLTg3NSwxMSArODk1LDE2IEBAIHVzcnNjdHBfaW5p
dCh1aW50MTZfdCwKICAgICAgICAgICAgICBpbnQgKCopKHZvaWQgKmFkZHIsIHZvaWQgKmJ1ZmZl
ciwgc2l6ZV90IGxlbmd0aCwgdWludDhfdCB0b3MsIHVpbnQ4X3Qgc2V0X2RmKSwKICAgICAgICAg
ICAgICB2b2lkICgqKShjb25zdCBjaGFyICpmb3JtYXQsIC4uLikpOwogCit2b2lkCit1c3JzY3Rw
X2luaXRfbm90aHJlYWRzKHVpbnQxNl90LAorCQkgICAgICAgaW50ICgqKSh2b2lkICphZGRyLCB2
b2lkICpidWZmZXIsIHNpemVfdCBsZW5ndGgsIHVpbnQ4X3QgdG9zLCB1aW50OF90IHNldF9kZiks
CisJCSAgICAgICB2b2lkICgqKShjb25zdCBjaGFyICpmb3JtYXQsIC4uLikpOworCiBzdHJ1Y3Qg
c29ja2V0ICoKIHVzcnNjdHBfc29ja2V0KGludCBkb21haW4sIGludCB0eXBlLCBpbnQgcHJvdG9j
b2wsCiAgICAgICAgICAgICAgICBpbnQgKCpyZWNlaXZlX2NiKShzdHJ1Y3Qgc29ja2V0ICpzb2Nr
LCB1bmlvbiBzY3RwX3NvY2tzdG9yZSBhZGRyLCB2b2lkICpkYXRhLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGRhdGFsZW4sIHN0cnVjdCBzY3RwX3JjdmluZm8sIGlu
dCBmbGFncywgdm9pZCAqdWxwX2luZm8pLAotICAgICAgICAgICAgICAgaW50ICgqc2VuZF9jYiko
c3RydWN0IHNvY2tldCAqc29jaywgdWludDMyX3Qgc2JfZnJlZSksCisgICAgICAgICAgICAgICBp
bnQgKCpzZW5kX2NiKShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCB1aW50MzJfdCBzYl9mcmVlLCB2b2lk
ICp1bHBfaW5mbyksCiAgICAgICAgICAgICAgICB1aW50MzJfdCBzYl90aHJlc2hvbGQsCiAgICAg
ICAgICAgICAgICB2b2lkICp1bHBfaW5mbyk7CiAKQEAgLTEwMDgsNiArMTAzMywyMSBAQCB1c3Jz
Y3RwX2RlcmVnaXN0ZXJfYWRkcmVzcyh2b2lkICopOwogaW50CiB1c3JzY3RwX3NldF91bHBpbmZv
KHN0cnVjdCBzb2NrZXQgKiwgdm9pZCAqKTsKIAoraW50Cit1c3JzY3RwX2dldF91bHBpbmZvKHN0
cnVjdCBzb2NrZXQgKiwgdm9pZCAqKik7CisKK2ludAordXNyc2N0cF9zZXRfdXBjYWxsKHN0cnVj
dCBzb2NrZXQgKnNvLAorICAgICAgICAgICAgICAgICAgIHZvaWQgKCp1cGNhbGwpKHN0cnVjdCBz
b2NrZXQgKiwgdm9pZCAqLCBpbnQpLAorICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZyk7CisK
K2ludAordXNyc2N0cF9nZXRfZXZlbnRzKHN0cnVjdCBzb2NrZXQgKnNvKTsKKworCit2b2lkCit1
c3JzY3RwX2hhbmRsZV90aW1lcnModWludDMyX3QgZWxhcHNlZF9taWxsaXNlY29uZHMpOworCiAj
ZGVmaW5lIFNDVFBfRFVNUF9PVVRCT1VORCAxCiAjZGVmaW5lIFNDVFBfRFVNUF9JTkJPVU5EICAw
CiAKQEAgLTEwOTQsNiArMTEzNCw3IEBAIFVTUlNDVFBfU1lTQ1RMX0RFQ0woc2N0cF91ZHBfdHVu
bmVsaW5nX3BvcnQpCiBVU1JTQ1RQX1NZU0NUTF9ERUNMKHNjdHBfZW5hYmxlX3NhY2tfaW1tZWRp
YXRlbHkpCiBVU1JTQ1RQX1NZU0NUTF9ERUNMKHNjdHBfdnRhZ190aW1lX3dhaXQpCiBVU1JTQ1RQ
X1NZU0NUTF9ERUNMKHNjdHBfYmxhY2tob2xlKQorVVNSU0NUUF9TWVNDVExfREVDTChzY3RwX3Nl
bmRhbGxfbGltaXQpCiBVU1JTQ1RQX1NZU0NUTF9ERUNMKHNjdHBfZGlhZ19pbmZvX2NvZGUpCiBV
U1JTQ1RQX1NZU0NUTF9ERUNMKHNjdHBfZnJfbWF4X2J1cnN0X2RlZmF1bHQpCiBVU1JTQ1RQX1NZ
U0NUTF9ERUNMKHNjdHBfcGF0aF9wZl90aHJlc2hvbGQpCg==
</data>
<flag name="commit-queue"
          id="429411"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412899</attachid>
            <date>2020-11-02 03:47:29 -0800</date>
            <delta_ts>2020-11-03 05:41:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218433-20201102124708.patch</filename>
            <type>text/plain</type>
            <size>1338466</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4OTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBiNTBjMzIzNTA0YWYwNmYyNmE0YmZkZjZiMDU1OGFlZTYwYmM5N2EzLi5mMTQ2
YjIwMTE0NTI3YjcwMDljZDQ1NWNlN2QyMzg3Mzk1MDE5MTNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMC0xMS0wMiAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIFdlYlJUQyB1c3JzY3Rw
IHRvIE04NworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE4NDMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBTb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cDogUmVzeW5jZWQuCisKIDIwMjAtMTEtMDIgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBXZWJSVEMg
YWJzZWlsIHRvIE04NwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0Nv
bmZpZ3VyYXRpb25zL3VzcnNjdHAueGNjb25maWcgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvQ29uZmlndXJhdGlvbnMvdXNyc2N0cC54Y2NvbmZpZwppbmRleCBiMDkxOWFkZmVlNjliNWMy
OWFmODExNmNjZDEzOTQ2Y2NjODYwZjZlLi4zODkxMWFjNjkzNjFhZDZkNjgwODk5ZmM5MzdjNzIx
ZTgxNDQwNDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmln
dXJhdGlvbnMvdXNyc2N0cC54Y2NvbmZpZworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvQ29uZmlndXJhdGlvbnMvdXNyc2N0cC54Y2NvbmZpZwpAQCAtMTIsNCArMTIsNCBAQCBQVUJM
SUNfSEVBREVSU19GT0xERVJfUEFUSCA9IC91c3IvbG9jYWwvaW5jbHVkZS9saWJ3ZWJydGM7CiBV
U0VfSEVBREVSTUFQID0gTk87CiBXQVJOSU5HX0NGTEFHUyA9IC1Xbm8tZGVwcmVjYXRlZC1kZWNs
YXJhdGlvbnMgJChpbmhlcml0ZWQpOwogR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9IFND
VFBfUFJPQ0VTU19MRVZFTF9MT0NLUyBTQ1RQX1NJTVBMRV9BTExPQ0FUT1IgU0NUUF9VU0VfT1BF
TlNTTF9TSEExIF9fVXNlcnNwYWNlX18gSEFWRV9TQV9MRU4gSEFWRV9TQ09OTl9MRU4gX19BUFBM
RV9VU0VfUkZDXzIyOTIgX19Vc2Vyc3BhY2Vfb3NfRGFyd2luICQoaW5oZXJpdGVkKTsKLU9USEVS
X0NGTEFHUyA9IC1VSU5FVCAtVUlORVQ2IC1VX19BUFBMRV9fOworT1RIRVJfQ0ZMQUdTID0gLVVJ
TkVUIC1VSU5FVDY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvQlVJTEQuZ24KaW5kZXggOTRmMjY3ODZl
MWQ4MTQzOThiMTAwYzE1NDE0MGEyOGQ4YmQzNjI0ZS4uYjg2OTg1MjAwYjhmNDFmMWNmNDc3Y2Ez
MzRhYTljZmE3YTJmM2I5YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC9CVUlMRC5nbgpAQCAtOSw2
ICs5LDEyIEBAIGNvbmZpZygidXNyc2N0cF9jb25maWciKSB7CiAgICAgInVzcnNjdHBsaWIvdXNy
c2N0cGxpYiIsCiAgICAgInVzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0IiwKICAgXQorCisg
ICMgVGhpcyBpcyBwYXJ0IG9mIHRoZSBwdWJsaWMgY29uZmlnIGJlY2F1c2UgaXQncyB1c2VkIGJv
dGggYnkgdXNyc2N0cCBhbmQKKyAgIyB0aGUgY2xpZW50IChXZWJSVEMpLCB0byBkZXRlcm1pbmUg
aWYgdGhlIGxlbmd0aCBmaWVsZCBuZWVkcyBwb3B1bGF0aW5nLgorICBpZiAoaXNfbWFjIHx8IGlz
X2lvcyB8fCB0YXJnZXRfb3MgPT0gImZyZWVic2QiKSB7CisgICAgZGVmaW5lcyA9IFsgIkhBVkVf
U0NPTk5fTEVOIiBdCisgIH0KIH0KIAogY29uZmlnKCJ1c3JzY3RwX3dhcm5pbmdzIikgewpAQCAt
MjEsNiArMjcsMTEgQEAgY29uZmlnKCJ1c3JzY3RwX3dhcm5pbmdzIikgewogICAgICAgIyB3aGF0
IHRoZXkgZGlkIGluIGNvbmZpZ3VyZS5hYy4gV2UgY2FuIHJlbW92ZSB0aGlzIG9uY2UKICAgICAg
ICMgaHR0cHM6Ly9naXRodWIuY29tL3NjdHBsYWIvdXNyc2N0cC9pc3N1ZXMvMTc3IGlzIGZpeGVk
LgogICAgICAgIi1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiLAorCisgICAgICAjIHVzcnNj
dHAgdXNlcyB0aW1pbmdzYWZlX2JjbXAgd2hpY2ggaXMgbm90IGF2YWlsYWJsZSBpbiBhbGwKKyAg
ICAgICMgdmVyc2lvbnMgb2YgT1MgWCwgaG93ZXZlciB0aGlzIGlzbid0IGFjdHVhbGx5IGFuIGlz
c3VlIHNpbmNlCisgICAgICAjIHVzcnNjdHAgcHJvdmlkZXMgaXRzIG93biBpbXBsZW1lbnRhdGlv
bi4KKyAgICAgICItV25vLXVuZ3VhcmRlZC1hdmFpbGFiaWxpdHkiLAogICAgIF0KICAgfQogfQpA
QCAtMTE2LDE5ICsxMjcsMTcgQEAgc3RhdGljX2xpYnJhcnkoInVzcnNjdHAiKSB7CiAgICAgIi1V
SU5FVDYiLAogICBdCiAKLSAgaWYgKGlzX2xpbnV4IHx8IGlzX2FuZHJvaWQpIHsKKyAgaWYgKGlz
X2xpbnV4IHx8IGlzX2Nocm9tZW9zIHx8IGlzX2FuZHJvaWQpIHsKICAgICBkZWZpbmVzICs9IFsK
ICAgICAgICJfX1VzZXJzcGFjZV9vc19MaW51eCIsCiAgICAgICAiX0dOVV9TT1VSQ0UiLAogICAg
IF0KLSAgfSBlbHNlIGlmIChpc19tYWMgfHwgaXNfaW9zKSB7CisgIH0gZWxzZSBpZiAoaXNfYXBw
bGUpIHsKICAgICBkZWZpbmVzICs9IFsKICAgICAgICJIQVZFX1NBX0xFTiIsCi0gICAgICAiSEFW
RV9TQ09OTl9MRU4iLAogICAgICAgIl9fQVBQTEVfVVNFX1JGQ18yMjkyIiwKICAgICAgICJfX1Vz
ZXJzcGFjZV9vc19EYXJ3aW4iLAogICAgIF0KLSAgICBjZmxhZ3MgKz0gWyAiLVVfX0FQUExFX18i
IF0KICAgfQogCiAgIGlmIChpc193aW4pIHsKQEAgLTE0MCw3ICsxNDksNSBAQCBzdGF0aWNfbGli
cmFyeSgidXNyc2N0cCIpIHsKICAgaWYgKGlzX2Z1Y2hzaWEpIHsKICAgICBkZWZpbmVzICs9IFsg
Il9fVXNlcnNwYWNlX29zX0Z1Y2hzaWEiIF0KICAgfQotICBkZXBzID0gWwotICAgICIvL3RoaXJk
X3BhcnR5L2JvcmluZ3NzbCIsCi0gIF0KKyAgZGVwcyA9IFsgIi8vdGhpcmRfcGFydHkvYm9yaW5n
c3NsIiBdCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvT1dORVJTIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL09XTkVSUwppbmRleCBlODEzYjA3OTY4MGEwN2Jk
ZjJlNjU4NDE3NGVkMWE0ZmU5NGM3NGJlLi5hYWU1MzhiMGI4NmFjOGRkNzNiYjliZjYwOWZjYjM2
NjRlOWZmYmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvT1dORVJTCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC9PV05FUlMKQEAgLTEsMyArMSw0IEBACi1w
dGhhdGNoZXJAY2hyb21pdW0ub3JnCi1qaWF5bEBjaHJvbWl1bS5vcmcKLWxkaXhvbkBjaHJvbWl1
bS5vcmcKK2h0YUBjaHJvbWl1bS5vcmcKK29ycGhpc0BjaHJvbWl1bS5vcmcKKworIyBDT01QT05F
TlQ6IEJsaW5rPldlYlJUQz5OZXR3b3JrCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvUkVBRE1FLmNocm9taXVtIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL1JFQURN
RS5jaHJvbWl1bQppbmRleCAyNGIwYmRmNDVmN2FkMGZiYzQ2OGY4MTExNTZmN2ViMjcxNjY4ZjMy
Li5lNzQwNWFjOTU0OThmNDYyMDA0ZjRlNzJjNzgxMmYwYWE0YzUyNDJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvUkVB
RE1FLmNocm9taXVtCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvdXNyc2N0cC9SRUFETUUuY2hyb21pdW0KQEAgLTEsOCArMSw5IEBACiBOYW1lOiB1
c3JzY3RwCiBVUkw6IGh0dHA6Ly9naXRodWIuY29tL3NjdHBsYWIvdXNyc2N0cAogVmVyc2lvbjog
MAotRGF0ZTogSnVuIDIyLCAyMDE4Ci1SZXZpc2lvbjogN2E4YmM5YTkwY2E5NjYzNGFhNTZlZTcx
Mjg1NmQ5N2YyN2Q5MDNmOAorQ1BFUHJlZml4OiBjcGU6L2E6dXNyc2N0cF9wcm9qZWN0OnVzcnNj
dHA6MjAxOS0xMi0yMAorRGF0ZTogQXVnIDI4LCAyMDIwCitSZXZpc2lvbjogOTk1YzBiODQ0MTQ0
NjZkNzdkNTIwMTFlNWI1NzJjYmUyMTNiNzcwYQogTGljZW5zZTogTmV3IEJTRAogTGljZW5zZSBG
aWxlOiBMSUNFTlNFCiBTZWN1cml0eSBDcml0aWNhbDogeWVzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi8uZ2l0aHViL3dvcmtmbG93cy9idWlsZC13aXRoLWNtYWtlLnltbCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliLy5naXRo
dWIvd29ya2Zsb3dzL2J1aWxkLXdpdGgtY21ha2UueW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViYTlkNjljMzFm
ZDhmZTI4MmYwMWUwYTBhNmEwMDllMDBhZTVmNWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi8uZ2l0aHViL3dvcmtmbG93cy9idWlsZC13aXRoLWNtYWtlLnltbApAQCAtMCwwICsxLDU3IEBA
CituYW1lOiBCdWlsZCB3aXRoIENNYWtlCisKK29uOgorICBwdXNoOgorICAgIGJyYW5jaGVzOiBb
IG1hc3RlciwgZ2l0aHViLWFjdGlvbnMgXQorICBwdWxsX3JlcXVlc3Q6CisgICAgYnJhbmNoZXM6
IFsgbWFzdGVyIF0KKworam9iczoKKyAgYnVpbGQ6CisKKyAgICBzdHJhdGVneToKKyAgICAgIG1h
dHJpeDoKKyAgICAgICAgcGxhdGZvcm06IFt1YnVudHUtbGF0ZXN0LCBtYWNvcy1sYXRlc3QsIHdp
bmRvd3MtbGF0ZXN0XQorICAgICAgICBjbWFrZV9idWlsZF90eXBlOiBbRGVidWcsIFJlbFdpdGhE
ZWJJbmZvXQorICAgICAgICBzY3RwX2ludmFyaWFudHM6IFtPTiwgT0ZGXQorICAgICAgICBzY3Rw
X2luZXQ2OiBbT04sIE9GRl0KKyAgICAgICAgc2N0cF9pbmV0OiBbT04sIE9GRl0KKyAgICAgICAg
c2N0cF9kZWJ1ZzogW09OLCBPRkZdCisKKyAgICBydW5zLW9uOiAke3sgbWF0cml4LnBsYXRmb3Jt
IH19CisKKyAgICBzdGVwczoKKyAgICAtIHVzZXM6IGFjdGlvbnMvY2hlY2tvdXRAdjIKKyAgICAg
IHdpdGg6CisgICAgICAgIHBhdGg6ICd1c3JzY3RwX3NvdXJjZScKKworICAgIC0gbmFtZTogUHJl
cGFyZSBkaXJzCisgICAgICBzaGVsbDogYmFzaAorICAgICAgcnVuOiB8CisgICAgICAgIG1rZGly
IC1wIGNtYWtlX2J1aWxkCisgICAgICAgIG1rZGlyIC1wIGNtYWtlX2luc3RhbGwKKyAgICAgICAg
CisgICAgLSBuYW1lOiBHZW5lcmF0ZSBDTWFrZSBwcm9qZWN0CisgICAgICBzaGVsbDogYmFzaAor
ICAgICAgcnVuOiB8CisgICAgICAgIGNkIGNtYWtlX2J1aWxkCisgICAgICAgIGNtYWtlIC1EQ01B
S0VfQlVJTERfVFlQRT0ke3sgbWF0cml4LmNtYWtlX2J1aWxkX3R5cGUgfX0gXAorICAgICAgICAg
ICAgICAtRENNQUtFX1BPU0lUSU9OX0lOREVQRU5ERU5UX0NPREU9T04gXAorICAgICAgICAgICAg
ICAtRENNQUtFX1ZFUkJPU0VfTUFLRUZJTEU6Qk9PTD1PTiBcCisgICAgICAgICAgICAgIC1Ec2N0
cF9kZWJ1Zz0ke3sgbWF0cml4LnNjdHBfZGVidWcgfX0gXAorICAgICAgICAgICAgICAtRHNjdHBf
aW52YXJpYW50cz0ke3sgbWF0cml4LnNjdHBfaW52YXJpYW50cyB9fSBcCisgICAgICAgICAgICAg
IC1Ec2N0cF9pbmV0Nj0ke3sgbWF0cml4LnNjdHBfaW5ldDYgfX0gXAorICAgICAgICAgICAgICAt
RHNjdHBfaW5ldD0ke3sgbWF0cml4LnNjdHBfaW5ldCB9fSBcCisgICAgICAgICAgICAgIC1Ec2N0
cF9idWlsZF9wcm9ncmFtcz1PTiBcCisgICAgICAgICAgICAgIC1Ec2N0cF9idWlsZF9mdXp6ZXI9
T0ZGIFwKKyAgICAgICAgICAgICAgLURDTUFLRV9JTlNUQUxMX1BSRUZJWD0ke0dJVEhVQl9XT1JL
U1BBQ0V9L2NtYWtlX2luc3RhbGwgXAorICAgICAgICAgICAgICAke0dJVEhVQl9XT1JLU1BBQ0V9
L3VzcnNjdHBfc291cmNlCisgICAgICAgIAorICAgIC0gbmFtZTogQnVpbGQgYW5kIGluc3RhbGwg
cHJvamVjdAorICAgICAgc2hlbGw6IGJhc2gKKyAgICAgIHJ1bjogfAorICAgICAgICBjbWFrZSAt
LWJ1aWxkIGNtYWtlX2J1aWxkIFwKKyAgICAgICAgICAgICAgLS1wYXJhbGxlbCAyIFwKKyAgICAg
ICAgICAgICAgLS1jb25maWcgJHt7IG1hdHJpeC5jbWFrZV9idWlsZF90eXBlIH19IFwKKyAgICAg
ICAgICAgICAgLS10YXJnZXQgaW5zdGFsbCBcCisgICAgICAgICAgICAgIC0tY2xlYW4tZmlyc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvdXNyc2N0cC91c3JzY3RwbGliLy5naXRpZ25vcmUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi8uZ2l0aWdub3JlCmlu
ZGV4IDRhMzgwMTM4ZGY1OTlhNGFmZWRlNzA5NmVjODVkZmM0YTc0NTdlNDIuLjllMmQxYTJhMzcx
ZjNkZDAyZTU3MWE0YzE4ZTAzOGQyMDVkMzQ1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliLy5naXRp
Z25vcmUKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS91c3JzY3RwL3VzcnNjdHBsaWIvLmdpdGlnbm9yZQpAQCAtNTUsMTcgKzU1LDI0IEBAIE1ha2Vm
aWxlLmluCiAuZGlyc3RhbXAKIAogIyBiaW5hcmllcworcHJvZ3JhbXMvY2hhcmdlbl9zZXJ2ZXJf
dXBjYWxsCiBwcm9ncmFtcy9jbGllbnQKK3Byb2dyYW1zL2NsaWVudF91cGNhbGwKIHByb2dyYW1z
L2RheXRpbWVfc2VydmVyCitwcm9ncmFtcy9kYXl0aW1lX3NlcnZlcl91cGNhbGwKIHByb2dyYW1z
L2Rpc2NhcmRfc2VydmVyCitwcm9ncmFtcy9kaXNjYXJkX3NlcnZlcl91cGNhbGwKIHByb2dyYW1z
L2VjaG9fc2VydmVyCitwcm9ncmFtcy9lY2hvX3NlcnZlcl91cGNhbGwKIHByb2dyYW1zL2Vrcl9j
bGllbnQKIHByb2dyYW1zL2Vrcl9sb29wCi1wcm9ncmFtcy9la3JfbG9vcF9vZmZsb2FkCitwcm9n
cmFtcy9la3JfbG9vcF91cGNhbGwKIHByb2dyYW1zL2Vrcl9wZWVyCiBwcm9ncmFtcy9la3Jfc2Vy
dmVyCiBwcm9ncmFtcy9odHRwX2NsaWVudAorcHJvZ3JhbXMvaHR0cF9jbGllbnRfdXBjYWxsCiBw
cm9ncmFtcy9ydGN3ZWIKK3Byb2dyYW1zL3N0X2NsaWVudAogcHJvZ3JhbXMvdHNjdHAKIHByb2dy
YW1zL3Rlc3RfbGlibWdtdAogcHJvZ3JhbXMvdGVzdF90aW1lcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBs
aWIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9DTWFrZUxpc3RzLnR4dAppbmRleCBhY2Y1MDU1
YTRlMjgxOTFkMjliODBiNDliMTkyYmJjZDgzZmU3ZTAzLi4zNzI3MGQxZDM3OTViMmE1M2I1OTQ3
MzAwNGFmNmM1ZGRiOTQ1ZGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi9DTWFrZUxpc3RzLnR4dApAQCAtMSw2ICsxLDYgQEAKICMKICMgQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTUgT2xlZyBBbGV4ZWVua292Ci0jIENvcHlyaWdodCAoQykgMjAxNS0y
MDE3IEZlbGl4IFdlaW5yYW5rCisjIENvcHlyaWdodCAoQykgMjAxNS0yMDE5IEZlbGl4IFdlaW5y
YW5rCiAjCiAjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCkBAIC0yOSw3ICsyOSw3IEBACiAjIFNV
Q0ggREFNQUdFLgogIwogCi1wcm9qZWN0KHVzcnNjdHBsaWIpCitwcm9qZWN0KHVzcnNjdHBsaWIg
QykKIGNtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAzLjApCiAKICMgRGVidWcgYnVpbGQg
dHlwZSBhcyBkZWZhdWx0CkBAIC03Nyw2ICs3Nyw4IEBAIG9wdGlvbihzY3RwX3Nhbml0aXplcl9h
ZGRyZXNzICJDb21waWxlIHdpdGggYWRkcmVzcyBzYW5pdGl6ZXIiIDApCiAKIG9wdGlvbihzY3Rw
X3Nhbml0aXplcl9tZW1vcnkgIkNvbXBpbGUgd2l0aCBtZW1vcnkgc2FuaXRpemVyIiAwKQogCitv
cHRpb24oc2N0cF9idWlsZF9mdXp6ZXIgIkNvbXBpbGUgaW4gY2xhbmcgZnV6emluZyBtb2RlIiAw
KQorCiBpZiAoc2N0cF9zYW5pdGl6ZXJfYWRkcmVzcyBBTkQgc2N0cF9zYW5pdGl6ZXJfbWVtb3J5
KQogCW1lc3NhZ2UoRkFUQUxfRVJST1IgIkNhbiBub3QgY29tcGlsZSB3aXRoIGJvdGggc2FuaXRp
emVyIG9wdGlvbnMiKQogZW5kaWYgKCkKQEAgLTEyMiw3ICsxMjQsNyBAQCBlbmRpZiAoKQogIyBD
SEVDSyBTVFJVQ1QgTUVNQkVSUwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIwogCi1zZXQoQ01BS0VfUkVRVUlSRURfSU5DTFVERVMgIiR7Q01BS0VfU09V
UkNFX0RJUn0vdXNyc2N0cGxpYiIpCitzZXQoQ01BS0VfUkVRVUlSRURfSU5DTFVERVMgIiR7Q01B
S0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS91c3JzY3RwbGliIikKIAogY2hlY2tfaW5jbHVkZV9maWxl
KHVzcnNjdHAuaCBoYXZlX3VzcnNjdHBfaCkKIGlmIChOT1QgaGF2ZV91c3JzY3RwX2gpCkBAIC0x
NTgsOTQgKzE2MCwxMTMgQEAgZW5kaWYgKCkKICMgQ09NUElMRVIgU0VUVElOR1MKICMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAorIyBEZXRlcm1pbmUg
aWYgY29tcGlsZXIgaXMgVmlzdWFsIFN0dWRpbyBjb21waWxlciBvciBDbGFuZyBpbiBNU1ZDIGNv
bXBhdGlibGUgbW9kZQoraWYgKENNQUtFX0NfQ09NUElMRVJfSUQgTUFUQ0hFUyAiTVNWQyIgT1Ig
Q01BS0VfQ19TSU1VTEFURV9JRCBNQVRDSEVTICJNU1ZDIikKKyAgc2V0KENfQ09NUElMRVJfSVNf
TVNWQ19MSUtFIFRSVUUpCitlbmRpZigpCisKKyMgU0VUVElOR1MgRk9SIFZJU1VBTCBTVFVESU8g
Q09NUElMRVIKK2lmIChDX0NPTVBJTEVSX0lTX01TVkNfTElLRSkKKwlpZiAoQ01BS0VfQ19GTEFH
UyBNQVRDSEVTICIvV1swLTRdIikKKwkJc3RyaW5nKFJFR0VYIFJFUExBQ0UgIi9XWzAtNF0iICIv
VzQiIENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30iKQorCWVsc2UgKCkKKwkJc2V0KENN
QUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gL1c0IikKKwllbmRpZiAoKQorCisJc2V0KENN
QUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gL3dkNDEwMCIpICMgJ2lkZW50aWZpZXInIDog
dW5yZWZlcmVuY2VkIGZvcm1hbCBwYXJhbWV0ZXIKKwlzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFL
RV9DX0ZMQUdTfSAvd2Q0MTI3IikgIyBjb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0YW50
CisJc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gL3dkNDIwMCIpICMgbm9uc3Rh
bmRhcmQgZXh0ZW5zaW9uIHVzZWQgOiB6ZXJvLXNpemVkIGFycmF5IGluIHN0cnVjdC91bmlvbgor
CXNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC93ZDQyMTQiKSAjIGJpdCBmaWVs
ZCB0eXBlcyBvdGhlciB0aGFuIGludAorCXNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxB
R1N9IC93ZDQ3MDYiKSAjIGFzc2lnbm1lbnQgd2l0aGluIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24K
KwlzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAvd2Q0MjQ1IikgIyAnY29udmVy
c2lvbicgOiBjb252ZXJzaW9uIGZyb20gJ3R5cGUxJyB0byAndHlwZTInLCBzaWduZWQvdW5zaWdu
ZWQgbWlzbWF0Y2gKKwlzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAvd2Q0Mzg5
IikgIyAnb3BlcmF0b3InIDogc2lnbmVkL3Vuc2lnbmVkIG1pc21hdGNoCisJc2V0KENNQUtFX0Nf
RkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gL3dkNDcwMiIpICMgdW5yZWFjaGFibGUgY29kZQorCXNl
dChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC93ZDQ3MDEiKSAjIFBvdGVudGlhbGx5
IHVuaW5pdGlhbGl6ZWQgbG9jYWwgdmFyaWFibGUgJ25hbWUnIHVzZWQKKworCSMgVG9EbworCXNl
dChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC93ZDQyNDQiKSAjICdjb252ZXJzaW9u
JyBjb252ZXJzaW9uIGZyb20gJ3R5cGUxJyB0byAndHlwZTInLCBwb3NzaWJsZSBsb3NzIG9mIGRh
dGEKKworCWlmIChzY3RwX3dlcnJvcikKKwkJc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19G
TEFHU30gL1dYIikKKworCQlpZiAoQ01BS0VfQ19DT01QSUxFUl9JRCBNQVRDSEVTICJDbGFuZyIp
CisJCQkjIHRlbXBvcmFyeSBkaXNhYmxlIGV4dGEgY2xhbmcgd2FybmluZ3MgcHJldmVudGluZyBj
b21waWxhdGlvbgorCQkJc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gL2NsYW5n
Oi1Xbm8tdW51c2VkLWZ1bmN0aW9uIikKKwkJCXNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0Nf
RkxBR1N9IC9jbGFuZzotV25vLW1pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzIikKKwkJCXNldChD
TUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC9jbGFuZzotV25vLXNpZ24tY29tcGFyZSIp
CisJCQlzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAvY2xhbmc6LVduby1mb3Jt
YXQiKQorCQllbmRpZigpCisJZW5kaWYgKCkKICMgU0VUVElOR1MgRk9SIFVOSVggQ09NUElMRVIK
LWlmICgiJHtDTUFLRV9DX0NPTVBJTEVSX0lEfSIgTUFUQ0hFUyAiQ2xhbmciIE9SICIke0NNQUtF
X0NfQ09NUElMRVJfSUR9IiBNQVRDSEVTICJBcHBsZUNsYW5nIiBPUiAiJHtDTUFLRV9DX0NPTVBJ
TEVSX0lEfSIgTUFUQ0hFUyAiR05VIikKLQlzZXQoQ01BS0VfQ19GTEFHUyAgICIke0NNQUtFX0Nf
RkxBR1N9ICAgLXN0ZD1jOTkgLXBlZGFudGljIC1XYWxsIC1XZXh0cmEiKQotCXNldChDTUFLRV9D
WFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAtc3RkPWM5OSAtcGVkYW50aWMgLVdhbGwgLVdl
eHRyYSIpCitlbHNlaWYgKENNQUtFX0NfQ09NUElMRVJfSUQgTUFUQ0hFUyAiQ2xhbmciIE9SIENN
QUtFX0NfQ09NUElMRVJfSUQgTUFUQ0hFUyAiQXBwbGVDbGFuZyIgT1IgQ01BS0VfQ19DT01QSUxF
Ul9JRCBNQVRDSEVTICJHTlUiKQorCXNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9
IC1zdGQ9Yzk5IC1wZWRhbnRpYyAtV2FsbCAtV2V4dHJhIikKIAogCWNoZWNrX2NfY29tcGlsZXJf
ZmxhZygtV2Zsb2F0LWVxdWFsIGhhc193ZmxvYXRfZXF1YWwpCiAJaWYgKGhhc193ZmxvYXRfZXF1
YWwpCi0JCXNldChDTUFLRV9DX0ZMQUdTICAgIiR7Q01BS0VfQ19GTEFHU30gICAtV2Zsb2F0LWVx
dWFsIikKLQkJc2V0KENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9IC1XZmxvYXQt
ZXF1YWwiKQorCQlzZXQoQ01BS0VfQ19GTEFHUyAgIiR7Q01BS0VfQ19GTEFHU30gLVdmbG9hdC1l
cXVhbCIpCiAJZW5kaWYgKCkKIAogCWNoZWNrX2NfY29tcGlsZXJfZmxhZygtV3NoYWRvdyBoYXNf
d3NoYWRvdykKIAlpZiAoaGFzX3dzaGFkb3cpCi0JCXNldChDTUFLRV9DX0ZMQUdTICAgIiR7Q01B
S0VfQ19GTEFHU30gICAtV3NoYWRvdyIpCi0JCXNldChDTUFLRV9DWFhfRkxBR1MgIiR7Q01BS0Vf
Q1hYX0ZMQUdTfSAtV3NoYWRvdyIpCisJCXNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxB
R1N9IC1Xc2hhZG93IikKIAllbmRpZiAoKQogCiAJY2hlY2tfY19jb21waWxlcl9mbGFnKC1XcG9p
bnRlci1hcml0aCBoYXNfd3BvaW50ZXJfYXJpdGloKQogCWlmIChoYXNfd3BvaW50ZXJfYXJpdGlo
KQotCQlzZXQoQ01BS0VfQ19GTEFHUyAgICIke0NNQUtFX0NfRkxBR1N9ICAgLVdwb2ludGVyLWFy
aXRoIikKLQkJc2V0KENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9IC1XcG9pbnRl
ci1hcml0aCIpCisJCXNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC1XcG9pbnRl
ci1hcml0aCIpCiAJZW5kaWYgKCkKIAogCWNoZWNrX2NfY29tcGlsZXJfZmxhZygtV3VucmVhY2hh
YmxlLWNvZGUgaGFzX3d1bnJlYWNoYWJsZV9jb2RlKQogCWlmIChoYXNfd3VucmVhY2hhYmxlX2Nv
ZGUpCi0JCXNldChDTUFLRV9DX0ZMQUdTICAgIiR7Q01BS0VfQ19GTEFHU30gICAtV3VucmVhY2hh
YmxlLWNvZGUiKQotCQlzZXQoQ01BS0VfQ1hYX0ZMQUdTICIke0NNQUtFX0NYWF9GTEFHU30gLVd1
bnJlYWNoYWJsZS1jb2RlIikKKwkJc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30g
LVd1bnJlYWNoYWJsZS1jb2RlIikKIAllbmRpZiAoKQogCiAJY2hlY2tfY19jb21waWxlcl9mbGFn
KC1XaW5pdC1zZWxmIGhhc193aW5pdF9zZWxmKQogCWlmIChoYXNfd2luaXRfc2VsZikKLQkJc2V0
KENNQUtFX0NfRkxBR1MgICAiJHtDTUFLRV9DX0ZMQUdTfSAgIC1XaW5pdC1zZWxmIikKLQkJc2V0
KENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9IC1XaW5pdC1zZWxmIikKKwkJc2V0
KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gLVdpbml0LXNlbGYiKQogCWVuZGlmICgp
CiAKIAljaGVja19jX2NvbXBpbGVyX2ZsYWcoLVduby11bnVzZWQtZnVuY3Rpb24gaGFzX3dub191
bnVzZWRfZnVuY3Rpb24pCiAJaWYgKGhhc193bm9fdW51c2VkX2Z1bmN0aW9uKQotCQlzZXQoQ01B
S0VfQ19GTEFHUyAgICIke0NNQUtFX0NfRkxBR1N9ICAgLVduby11bnVzZWQtZnVuY3Rpb24iKQot
CQlzZXQoQ01BS0VfQ1hYX0ZMQUdTICIke0NNQUtFX0NYWF9GTEFHU30gLVduby11bnVzZWQtZnVu
Y3Rpb24iKQorCQlzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAtV25vLXVudXNl
ZC1mdW5jdGlvbiIpCiAJZW5kaWYgKCkKIAogCWNoZWNrX2NfY29tcGlsZXJfZmxhZygtV25vLXVu
dXNlZC1wYXJhbWV0ZXIgaGFzX3dub191bnVzZWRfcGFyYW1ldGVyKQogCWlmIChoYXNfd25vX3Vu
dXNlZF9wYXJhbWV0ZXIpCi0JCXNldChDTUFLRV9DX0ZMQUdTICAgIiR7Q01BS0VfQ19GTEFHU30g
ICAtV25vLXVudXNlZC1wYXJhbWV0ZXIiKQotCQlzZXQoQ01BS0VfQ1hYX0ZMQUdTICIke0NNQUtF
X0NYWF9GTEFHU30gLVduby11bnVzZWQtcGFyYW1ldGVyIikKKwkJc2V0KENNQUtFX0NfRkxBR1Mg
IiR7Q01BS0VfQ19GTEFHU30gLVduby11bnVzZWQtcGFyYW1ldGVyIikKIAllbmRpZiAoKQogCiAJ
Y2hlY2tfY19jb21waWxlcl9mbGFnKC1Xbm8tdW5yZWFjaGFibGUtY29kZSBoYXNfd25vX3VucmVh
Y2hhYmxlX2NvZGUpCiAJaWYgKGhhc193bm9fdW5yZWFjaGFibGVfY29kZSkKLQkJc2V0KENNQUtF
X0NfRkxBR1MgICAiJHtDTUFLRV9DX0ZMQUdTfSAgIC1Xbm8tdW5yZWFjaGFibGUtY29kZSIpCi0J
CXNldChDTUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAtV25vLXVucmVhY2hhYmxl
LWNvZGUiKQorCQlzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAtV25vLXVucmVh
Y2hhYmxlLWNvZGUiKQogCWVuZGlmICgpCiAKIAljaGVja19jX2NvbXBpbGVyX2ZsYWcoLVdzdHJp
Y3QtcHJvdG90eXBlcyBoYXNfd3N0cmljdF9wcm90b3R5cGVzKQogCWlmIChoYXNfd3N0cmljdF9w
cm90b3R5cGVzKQotCQlzZXQoQ01BS0VfQ19GTEFHUyAgICIke0NNQUtFX0NfRkxBR1N9ICAgLVdz
dHJpY3QtcHJvdG90eXBlcyIpCi0JCXNldChDTUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZM
QUdTfSAtV3N0cmljdC1wcm90b3R5cGVzIikKKwkJc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0Vf
Q19GTEFHU30gLVdzdHJpY3QtcHJvdG90eXBlcyIpCiAJZW5kaWYgKCkKIAogCWlmIChzY3RwX3dl
cnJvcikKLQkJc2V0KENNQUtFX0NfRkxBR1MgICAiJHtDTUFLRV9DX0ZMQUdTfSAgIC1XZXJyb3Ii
KQotCQlzZXQoQ01BS0VfQ1hYX0ZMQUdTICIke0NNQUtFX0NYWF9GTEFHU30gLVdlcnJvciIpCisJ
CXNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC1XZXJyb3IiKQogCWVuZGlmICgp
CiAKIAlpZiAoc2N0cF9zYW5pdGl6ZXJfYWRkcmVzcykKLQkJc2V0KENNQUtFX0NfRkxBR1MgICAi
JHtDTUFLRV9DX0ZMQUdTfSAgIC1mc2FuaXRpemU9YWRkcmVzcyAtZm5vLW9taXQtZnJhbWUtcG9p
bnRlciAtZyIpCi0JCXNldChDTUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAtZnNh
bml0aXplPWFkZHJlc3MgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIgLWciKQorCQlzZXQoQ01BS0Vf
Q19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAtZnNhbml0aXplPWFkZHJlc3MsdW5kZWZpbmVkLHNp
Z25lZC1pbnRlZ2VyLW92ZXJmbG93IC1mbm8tb21pdC1mcmFtZS1wb2ludGVyIC1mbm8tc2FuaXRp
emUtcmVjb3Zlcj1hbGwgLWZzYW5pdGl6ZS1hZGRyZXNzLXVzZS1hZnRlci1zY29wZSAiKQogCWVu
ZGlmICgpCiAKIAlpZiAoc2N0cF9zYW5pdGl6ZXJfbWVtb3J5KQotCQlzZXQoQ01BS0VfQ19GTEFH
UyAgICIke0NNQUtFX0NfRkxBR1N9ICAgLWZzYW5pdGl6ZT1tZW1vcnkgLWZuby1vbWl0LWZyYW1l
LXBvaW50ZXIgLWcgLWZzYW5pdGl6ZS1tZW1vcnktdHJhY2stb3JpZ2lucyIpCi0JCXNldChDTUFL
RV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAtZnNhbml0aXplPW1lbW9yeSAtZm5vLW9t
aXQtZnJhbWUtcG9pbnRlciAtZyAtZnNhbml0aXplLW1lbW9yeS10cmFjay1vcmlnaW5zIikKKwkJ
c2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gLWZzYW5pdGl6ZT1tZW1vcnkgLWZu
by1vbWl0LWZyYW1lLXBvaW50ZXIgLWZzYW5pdGl6ZS1tZW1vcnktdHJhY2stb3JpZ2lucyAtZlBJ
RSIpCiAJZW5kaWYgKCkKLWVuZGlmICgpCiAKLSMgU0VUVElOR1MgRk9SIFZJU1VBTCBTVFVESU8g
Q09NUElMRVIKLWlmICgieCR7Q01BS0VfQ19DT01QSUxFUl9JRH0iIFNUUkVRVUFMICJ4TVNWQyIp
Ci0JaWYgKENNQUtFX0NfRkxBR1MgTUFUQ0hFUyAiL1dbMC00XSIpCi0JCXN0cmluZyhSRUdFWCBS
RVBMQUNFICIvV1swLTRdIiAiL1czIiBDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IikK
LQllbHNlICgpCi0JCXNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC9XMyIpCi0J
ZW5kaWYgKCkKLQotCWlmIChXRVJST1IpCi0JCXNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0Nf
RkxBR1N9IC9XWCIpCisJaWYgKHNjdHBfYnVpbGRfZnV6emVyKQorCQlzZXQoQ01BS0VfQlVJTERf
VFlQRSAiREVCVUciKQorCQlhZGRfZGVmaW5pdGlvbnMoLURGVVpaSU5HX0JVSUxEX01PREVfVU5T
QUZFX0ZPUl9QUk9EVUNUSU9OKQorCQlzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdT
fSAtTzEgLWZzYW5pdGl6ZT1mdXp6ZXItbm8tbGluayIpCiAJZW5kaWYgKCkKIGVuZGlmICgpCiAK
K21lc3NhZ2UoU1RBVFVTICJDb21waWxlciBmbGFncyAoQ01BS0VfQ19GTEFHUyk6ICR7Q01BS0Vf
Q19GTEFHU30iKQorCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKICMgSU5DTFVERSBTVUJESVJTCkBAIC0yNTYsMyArMjc3LDcgQEAgYWRkX3N1YmRp
cmVjdG9yeSh1c3JzY3RwbGliKQogaWYgKHNjdHBfYnVpbGRfcHJvZ3JhbXMpCiAJYWRkX3N1YmRp
cmVjdG9yeShwcm9ncmFtcykKIGVuZGlmICgpCisKK2lmIChzY3RwX2J1aWxkX2Z1enplcikKKwlh
ZGRfc3ViZGlyZWN0b3J5KGZ1enplcikKK2VuZGlmICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9N
YWtlZmlsZS5hbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvdXNyc2N0cC91c3JzY3RwbGliL01ha2VmaWxlLmFtCmluZGV4IGU5ZTE3ZTIyYzRmNzhkZmJi
NTYyY2U1NjRkOWE1YWE1Zjc3ZTAyNmIuLjRiZDk5OGZiZTcwYWQ2MDg1YjQ5MjdjOTExZjg0ZmNj
OGNjODNjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL01ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L01ha2VmaWxlLmFtCkBAIC0yOCw3ICsyOCwxMSBAQAogIyBTVUNIIERBTUFHRS4KICMKIAotU1VC
RElSUyA9IHVzcnNjdHBsaWIgcHJvZ3JhbXMKK2lmIENPTkRfUFJPR1JBTVMKK01BWUJFUFJPR1JB
TVMgPSBwcm9ncmFtcworZW5kaWYKKworU1VCRElSUyA9IHVzcnNjdHBsaWIgJChNQVlCRVBST0dS
QU1TKQogRVhUUkFfRElTVCA9IGJvb3RzdHJhcCBNYWtlZmlsZS5ubWFrZQogQUNMT0NBTF9BTUZM
QUdTID0gLUkgbTQKICMgcGtnY29uZmlnX0RBVEEgPSB1c3JzY3RwLnBjCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNy
c2N0cGxpYi9NYW51YWwubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9NYW51YWwubWQKaW5kZXggNzA1NzM2ODg0NGRl
ZTMyNDBhMDNhNzI1YjA5OWRkODBhNmQyMWY1OS4uYjE3Yzc1NDE0MmRmMTYwZjk4MTRjNGM4OWFi
MTk2NjdkMmNlMzg3YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvTWFudWFsLm1kCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3Rw
bGliL01hbnVhbC5tZApAQCAtNCw3ICs0LDcgQEAgU0NUUCBpcyBhIG1lc3NhZ2Ugb3JpZW50ZWQs
IHJlbGlhYmxlIHRyYW5zcG9ydCBwcm90b2NvbCB3aXRoIGRpcmVjdCBzdXBwb3J0IGZvcgogCiBM
aWtlIFRDUCwgU0NUUCBwcm92aWRlcyByZWxpYWJsZSwgY29ubmVjdGlvbiBvcmllbnRlZCBkYXRh
IGRlbGl2ZXJ5IHdpdGggY29uZ2VzdGlvbiBjb250cm9sLiBVbmxpa2UgVENQLCBTQ1RQIGFsc28g
cHJvdmlkZXMgbWVzc2FnZSBib3VuZGFyeSBwcmVzZXJ2YXRpb24sIG9yZGVyZWQgYW5kIHVub3Jk
ZXJlZCBtZXNzYWdlIGRlbGl2ZXJ5LCBtdWx0aS1zdHJlYW1pbmcgYW5kIG11bHRpLWhvbWluZy4g
RGV0ZWN0aW9uIG9mIGRhdGEgY29ycnVwdGlvbiwgbG9zcyBvZiBkYXRhIGFuZCBkdXBsaWNhdGlv
biBvZiBkYXRhIGlzIGFjaGlldmVkIGJ5IHVzaW5nIGNoZWNrc3VtcyBhbmQgc2VxdWVuY2UgbnVt
YmVycy4gQSBzZWxlY3RpdmUgcmV0cmFuc21pc3Npb24gbWVjaGFuaXNtIGlzIGFwcGxpZWQgdG8g
Y29ycmVjdCBsb3NzIG9yIGNvcnJ1cHRpb24gb2YgZGF0YS4KIAotSW4gdGhpcyBtYW51YWwgdGhl
IHNvY2tldCBBUEkgZm9yIHRoZSBTQ1RQIFVzZXItbGFuZCBpbXBsZW1lbnRhdGlvbiB3aWxsIGJl
IGRlc2NyaWJlZC4gIEl0IGlzIGJhc2VkIG9uIFtSRkMgNjQ1OF0oaHR0cDovL3Rvb2xzLmlldGYu
b3JnL2h0bWwvcmZjNjQ1OCkuIFRoZSBtYWluIGZvY3VzIG9mIHRoaXMgZG9jdW1lbnQgaXMgb24g
cG9pbnRpbmcgb3V0IHRoZSBkaWZmZXJlbmNlcyB0byB0aGUgU0NUUCBTb2NrZXRzIEFQSS4gRm9y
IGFsbCBhc3BlY3RzIG9mIHRoZSBzb2NrZXRzIEFQSSB0aGF0IGFyZSBub3QgbWVudGlvbmVkIGlu
IHRoaXMgZG9jdW1lbnQsIHBsZWFzZSByZWZlciB0byBbUkZDIDY0NThdKGh0dHA6Ly90b29scy5p
ZXRmLm9yZy9odG1sL3JmYzY0NTgpLiBRdWVzdGlvbnMgYWJvdXQgU0NUUCBpdHNlbGYgY2FuIGhv
cGVmdWxseSBiZSBhbnN3ZXJlZCBieSBbUkZDIDQ5NjBdKGh0dHA6Ly90b29scy5pZXRmLm9yZy9o
dG1sL3JmYzQ5NjApLgorSW4gdGhpcyBtYW51YWwgdGhlIHNvY2tldCBBUEkgZm9yIHRoZSBTQ1RQ
IFVzZXItbGFuZCBpbXBsZW1lbnRhdGlvbiB3aWxsIGJlIGRlc2NyaWJlZC4gIEl0IGlzIGJhc2Vk
IG9uIFtSRkMgNjQ1OF0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTgpLiBUaGUg
bWFpbiBmb2N1cyBvZiB0aGlzIGRvY3VtZW50IGlzIG9uIHBvaW50aW5nIG91dCB0aGUgZGlmZmVy
ZW5jZXMgdG8gdGhlIFNDVFAgU29ja2V0cyBBUEkuIEZvciBhbGwgYXNwZWN0cyBvZiB0aGUgc29j
a2V0cyBBUEkgdGhhdCBhcmUgbm90IG1lbnRpb25lZCBpbiB0aGlzIGRvY3VtZW50LCBwbGVhc2Ug
cmVmZXIgdG8gW1JGQyA2NDU4XShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1OCku
IFF1ZXN0aW9ucyBhYm91dCBTQ1RQIGl0c2VsZiBjYW4gaG9wZWZ1bGx5IGJlIGFuc3dlcmVkIGJ5
IFtSRkMgNDk2MF0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzQ5NjApLgogCiAjIyBH
ZXR0aW5nIFN0YXJ0ZWQKIFRoZSB1c2VyLWxhbmQgc3RhY2sgaGFzIGJlZW4gdGVzdGVkIG9uIEZy
ZWVCU0QgMTAuMCwgVWJ1bnR1IDExLjEwLCBXaW5kb3dzIDcsIE1hYyBPUyBYIDEwLjYsIGFuZCBN
YWMgT1MgWCAxMC43LiBUaGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSB1c2VyLWxhbmQgc3RhY2sg
aXMgcHJvdmlkZWQgb24gW2dpdGh1Yl0oaHR0cHM6Ly9naXRodWIuY29tL3NjdHBsYWIvdXNyc2N0
cCkuIERvd25sb2FkIHRoZSB0YXJiYWxsIGFuZCB1bnRhciBpdCBpbiBhIGZvbGRlciBvZiB5b3Vy
IGNob2ljZS4gVGhlIHRhcmJhbGwgY29udGFpbnMgYWxsIHRoZSBzb3VyY2VzIHRvIGJ1aWxkIHRo
ZSBsaWJ1c3JzY3RwLCB3aGljaCBoYXMgdG8gYmUgbGlua2VkIHRvIHRoZSBvYmplY3QgZmlsZSBv
ZiBhbiBleGFtcGxlIHByb2dyYW0uIEluIGFkZGl0aW9uIHRoZXJlIGFyZSB0d28gYXBwbGljYXRp
b25zIGluIHRoZSBmb2xkZXIgYHByb2dyYW1zYCB0aGF0IGNhbiBiZSBidWlsdCBhbmQgcnVuLgpA
QCAtMTI4LDE3ICsxMjgsMTggQEAgdXNyc2N0cF9zb2NrZXQoaW50IGRvbWFpbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZvaWQgKnVscF9pbmZvKSwKICAgICAgICAgICAgICAgIGludCAoKnNlbmRf
Y2IpKHN0cnVjdCBzb2NrZXQgKnNvY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
aW50MzJfdCBzYl9mcmVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90
IHNiX2ZyZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1bHBfaW5mbyks
CiAgICAgICAgICAgICAgICB1aW50MzJfdCBzYl90aHJlc2hvbGQsCiAgICAgICAgICAgICAgICB2
b2lkICp1bHBfaW5mbykKIGBgYAogCi1UaGUgYXJndW1lbnRzIHRha2VuIGZyb20gW1JGQyA2NDU4
XShodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU4KSBhcmU6CitUaGUgYXJndW1lbnRz
IHRha2VuIGZyb20gW1JGQyA2NDU4XShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1
OCkgYXJlOgogCiAqIGRvbWFpbjogUEZfSU5FVCBvciBQRl9JTkVUNiBjYW4gYmUgdXNlZC4KICog
dHlwZTogSW4gY2FzZSBvZiBhIG9uZS10by1tYW55IHN0eWxlIHNvY2tldCBpdCBpcyBTT0NLX1NF
UVBBQ0tFVCwgaW4gY2FzZSBvZiBhIG9uZS10by1vbmUgc3R5bGUKIHNvY2tldCBpdCBpcyBTT0NL
X1NUUkVBTS4gRm9yIGFuIGV4cGxhbmF0aW9uIG9mIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRo
ZSBzb2NrZXQgdHlwZXMgcGxlYXNlCi1yZWZlciB0byBbUkZDIDY0NThdKGh0dHA6Ly90b29scy5p
ZXRmLm9yZy9odG1sL3JmYzY0NTgpLgorcmVmZXIgdG8gW1JGQyA2NDU4XShodHRwczovL3Rvb2xz
LmlldGYub3JnL2h0bWwvcmZjNjQ1OCkuCiAqIHByb3RvY29sOiBTZXQgSVBQUk9UT19TQ1RQLgog
CiBJbiB1c3JzY3RwLCBhIGNhbGxiYWNrIEFQSSBjYW4gYmUgdXNlZC4KQEAgLTE2MSw3ICsxNjIs
NyBAQCBUaHVzIHRoZSBvbmx5IGRpZmZlcmVuY2UgaXMgdGhlIGFic2VuY2Ugb2YgYSByZXR1cm4g
Y29kZS4KICMjIFNhbWUgRnVuY3Rpb25hbGl0eSBhcyBSRkMgNjQ1OAogCiBUaGUgZm9sbG93aW5n
IGZ1bmN0aW9ucyBoYXZlIHRoZSBzYW1lIGZ1bmN0aW9uYWxpdHkgYXMgdGhlaXIga2VybmVsIHBl
bmRhbnRzLiBUaGVyZSBwcm90b3R5cGVzCi1hcmUgZGVzY3JpYmVkIGluIHRoZSBmb2xsb3dpbmcg
c3Vic2VjdGlvbnMuIEZvciBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIHBsZWFzZSByZWZlciB0byBb
UkZDIDY0NThdKGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTgpLgorYXJlIGRlc2Ny
aWJlZCBpbiB0aGUgZm9sbG93aW5nIHN1YnNlY3Rpb25zLiBGb3IgYSBkZXRhaWxlZCBkZXNjcmlw
dGlvbiBwbGVhc2UgcmVmZXIgdG8gW1JGQyA2NDU4XShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0
bWwvcmZjNjQ1OCkuCiAKICMjIyB1c3JzY3RwX2JpbmQoKQogCkBAIC0yMzcsNyArMjM4LDcgQEAg
dXNyc2N0cF9zaHV0ZG93bihzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IGhvdykKIGB1c3JzY3RwX3No
dXRkb3duKClgIHJldHVybnMgMCBvbiBzdWNjZXNzIGFuZCAtMSBpbiBjYXNlIG9mIGFuIGVycm9y
LgogCiAjIyBTZW5kaW5nIGFuZCBSZWNlaXZpbmcgRGF0YQotU2luY2UgdGhlIHB1YmxpY2F0aW9u
IG9mIFtSRkMgNjQ1OF0oaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1OCkgdGhlcmUg
aXMgb25seSBvbmUgZnVuY3Rpb24gZm9yIHNlbmRpbmcgYW5kIG9uZSBmb3IgcmVjZWl2aW5nCitT
aW5jZSB0aGUgcHVibGljYXRpb24gb2YgW1JGQyA2NDU4XShodHRwczovL3Rvb2xzLmlldGYub3Jn
L2h0bWwvcmZjNjQ1OCkgdGhlcmUgaXMgb25seSBvbmUgZnVuY3Rpb24gZm9yIHNlbmRpbmcgYW5k
IG9uZSBmb3IgcmVjZWl2aW5nCiB0aGF0IGlzIG5vdCBkZXByZWNhdGVkLiBUaGVyZWZvcmUsIG9u
bHkgdGhlc2UgdHdvIGFyZSBkZXNjcmliZWQgaGVyZS4KIAogIyMjIHVzcnNjdHBfc2VuZHYoKQpA
QCAtMjYwLDE0ICsyNjEsMTQgQEAgdXNyc2N0cF9zZW5kdihzdHJ1Y3Qgc29ja2V0ICpzbywKICog
bGVuOiBMZW5ndGggb2YgdGhlIGRhdGEuCiAqIGFkZHJzOiBJbiB0aGlzIHZlcnNpb24gb2YgdXNy
c2N0cCBhdCBtb3N0IG9uZSBkZXN0aW5hdGlvbiBhZGRyZXNzIGlzIHN1cHBvcnRlZC4gSW4gdGhl
IGNhc2Ugb2YgYSBjb25uZWN0ZWQgc29ja2V0LCB0aGUgcGFyYW1ldGVyIGBhZGRyc2AgY2FuIGJl
IHNldCB0byBOVUxMLgogKiBhZGRyY250OiBOdW1iZXIgb2YgYWRkcmVzc2VzLiBBcyBhdCBtb3N0
IG9uZSBhZGRyZXNzIGlzIHN1cHBvcnRlZCwgYWRkcmNudCBpcyAwIGlmIGFkZHJzIGlzIE5VTEwg
YW5kIDEgb3RoZXJ3aXNlLgotKiBpbmZvOiBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGZvciBhIG1l
c3NhZ2UgaXMgc3RvcmVkIGluIGB2b2lkICppbmZvYC4gVGhlIGRhdGEgdHlwZXMgYHN0cnVjdCBz
Y3RwX3NuZGluZm9gLCBgc3RydWN0IHNjdHBfcHJpbmZvYCwgYW5kIGBzdHJ1Y3Qgc2N0cF9zZW5k
dl9zcGFgIGFyZSBzdXBwb3J0ZWQgYXMgZGVmaW5lZCBpbiBbUkZDIDY0NThdKGh0dHA6Ly90b29s
cy5pZXRmLm9yZy9odG1sL3JmYzY0NTgpLiBTdXBwb3J0IGZvciBgc3RydWN0IHNjdHBfYXV0aGlu
Zm9gIGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQsIHRoZXJlZm9yZSwgZXJybm8gaXMgc2V0IEVJTlZB
TCBhbmQgLTEgd2lsbCBiZSByZXR1cm5lZCwgaWYgaXQgaXMgdXNlZC4KKyogaW5mbzogQWRkaXRp
b25hbCBpbmZvcm1hdGlvbiBmb3IgYSBtZXNzYWdlIGlzIHN0b3JlZCBpbiBgdm9pZCAqaW5mb2Au
IFRoZSBkYXRhIHR5cGVzIGBzdHJ1Y3Qgc2N0cF9zbmRpbmZvYCwgYHN0cnVjdCBzY3RwX3ByaW5m
b2AsIGFuZCBgc3RydWN0IHNjdHBfc2VuZHZfc3BhYCBhcmUgc3VwcG9ydGVkIGFzIGRlZmluZWQg
aW4gW1JGQyA2NDU4XShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1OCkuIFN1cHBv
cnQgZm9yIGBzdHJ1Y3Qgc2N0cF9hdXRoaW5mb2AgaXMgbm90IGltcGxlbWVudGVkIHlldCwgdGhl
cmVmb3JlLCBlcnJubyBpcyBzZXQgRUlOVkFMIGFuZCAtMSB3aWxsIGJlIHJldHVybmVkLCBpZiBp
dCBpcyB1c2VkLgogKiBpbmZvbGVuOiBMZW5ndGggb2YgaW5mbyBpbiBieXRlcy4KICogaW5mb3R5
cGU6IElkZW50aWZpZXMgdGhlIHR5cGUgb2YgdGhlIGluZm9ybWF0aW9uIHByb3ZpZGVkIGluIGlu
Zm8uIFBvc3NpYmxlIHZhbHVlcyBhcmUKICAgKiBTQ1RQX1NFTkRWX05PSU5GTwogICAqIFNDVFBf
U0VORFZfU05ESU5GTwogICAqIFNDVFBfU0VORFZfUFJJTkZPCi0gICogU0NUUF9TRU5EVl9TUEEg
KEZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHBsZWFzZSByZWZlciB0byBbUkZDIDY0NThdKGh0
dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTgpLikKLSogZmxhZ3M6IEZsYWdzIGFzIGRl
c2NyaWJlZCBpbiBbUkZDIDY0NThdKGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTgp
LgorICAqIFNDVFBfU0VORFZfU1BBIChGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBwbGVhc2Ug
cmVmZXIgdG8gW1JGQyA2NDU4XShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1OCku
KQorKiBmbGFnczogRmxhZ3MgYXMgZGVzY3JpYmVkIGluIFtSRkMgNjQ1OF0oaHR0cHM6Ly90b29s
cy5pZXRmLm9yZy9odG1sL3JmYzY0NTgpLgogCiBgdXNyc2N0cF9zZW5kdigpYCByZXR1cm5zIHRo
ZSBudW1iZXIgb2YgYnl0ZXMgc2VudCwgb3IgLTEgaWYgYW4gZXJyb3Igb2NjdXJyZWQuICBUaGUg
dmFyaWFibGUgZXJybm8gaXMgdGhlbiBzZXQgYXBwcm9wcmlhdGVseS4KIApAQCAtMjkxLDIwICsy
OTIsMjAgQEAgdXNyc2N0cF9yZWN2dihzdHJ1Y3Qgc29ja2V0ICpzbywKICogbGVuOiBMZW5ndGgg
b2YgdGhlIGJ1ZmZlciBpbiBieXRlcy4KICogZnJvbTogQSBwb2ludGVyIHRvIGFuIGFkZHJlc3Mg
dG8gYmUgZmlsbGVkIHdpdGggdGhlIHNlbmRlciBvZiB0aGUgcmVjZWl2ZWQgbWVzc2FnZSdzIGFk
ZHJlc3MuCiAqIGZyb21sZW46IEFuIGluL291dCBwYXJhbWV0ZXIgZGVzY3JpYmluZyB0aGUgZnJv
bSBsZW5ndGguCi0qIGluZm86IEEgcG9pbnRlciB0byB0aGUgYnVmZmVyIHRvIGhvbGQgdGhlIGF0
dHJpYnV0ZXMgb2YgdGhlIHJlY2VpdmVkIG1lc3NhZ2UuICBUaGUgc3RydWN0dXJlIHR5cGUgb2Yg
aW5mbyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBpbmZvdHlwZSBwYXJhbWV0ZXIuIFRoZSBhdHRyaWJ1
dGVzIHJldHVybmVkIGluIGBpbmZvYCBoYXZlIHRvIGJlIGhhbmRsZWQgaW4gdGhlIHNhbWUgd2F5
IGFzIHNwZWNpZmllZCBpbiBbUkZDIDY0NThdKGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3Jm
YzY0NTgpLgorKiBpbmZvOiBBIHBvaW50ZXIgdG8gdGhlIGJ1ZmZlciB0byBob2xkIHRoZSBhdHRy
aWJ1dGVzIG9mIHRoZSByZWNlaXZlZCBtZXNzYWdlLiAgVGhlIHN0cnVjdHVyZSB0eXBlIG9mIGlu
Zm8gaXMgZGV0ZXJtaW5lZCBieSB0aGUgaW5mb3R5cGUgcGFyYW1ldGVyLiBUaGUgYXR0cmlidXRl
cyByZXR1cm5lZCBpbiBgaW5mb2AgaGF2ZSB0byBiZSBoYW5kbGVkIGluIHRoZSBzYW1lIHdheSBh
cyBzcGVjaWZpZWQgaW4gW1JGQyA2NDU4XShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZj
NjQ1OCkuCiAqIGluZm9sZW46ICBBbiBpbi9vdXQgcGFyYW1ldGVyIGRlc2NyaWJpbmcgdGhlIHNp
emUgb2YgdGhlIGluZm8gYnVmZmVyLgogKiBpbmZvdHlwZTogIE9uIHJldHVybiwgYCppbmZvdHlw
ZWAgaXMgc2V0IHRvIHRoZSB0eXBlIG9mIHRoZSBpbmZvIGJ1ZmZlci4gIFRoZSBjdXJyZW50IGRl
ZmluZWQgdmFsdWVzIGFyZQogICAqIFNDVFBfUkVDVlZfTk9JTkZPCiAgICogU0NUUF9SRUNWVl9S
Q1ZJTkZPCiAgICogU0NUUF9SRUNWVl9OWFRJTkZPCi0gICogU0NUUF9SRUNWVl9STiAoQSBkZXRh
aWxlZCBkZXNjcmlwdGlvbiBpcyBnaXZlbiBpbiBbUkZDIDY0NThdKGh0dHA6Ly90b29scy5pZXRm
Lm9yZy9odG1sL3JmYzY0NTgpKQorICAqIFNDVFBfUkVDVlZfUk4gKEEgZGV0YWlsZWQgZGVzY3Jp
cHRpb24gaXMgZ2l2ZW4gaW4gW1JGQyA2NDU4XShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwv
cmZjNjQ1OCkpCiAqIGZsYWdzOiBBIHBvaW50ZXIgdG8gYW4gaW50ZWdlciB0byBiZSBmaWxsZWQg
d2l0aCBhbnkgbWVzc2FnZSBmbGFncyAoZS5nLiwgYE1TR19OT1RJRklDQVRJT05gKS4gIE5vdGUg
dGhhdCB0aGlzIGZpZWxkIGlzIGFuIGluL291dCBwYXJhbWV0ZXIuICBPcHRpb25zIGZvciB0aGUg
cmVjZWl2ZSBtYXkgYWxzbyBiZSBwYXNzZWQgaW50byB0aGUgdmFsdWUgKGUuZy4sIGBNU0dfRU9S
YCkuICBSZXR1cm5pbmcgZnJvbSB0aGUgY2FsbCwgdGhlIGZsYWdzJyB2YWx1ZSB3aWxsIGRpZmZl
ciBmcm9tIGl0cyBvcmlnaW5hbCB2YWx1ZS4KIAotYHVzcnNjdHBfcmVjdnYoKWAgcmV0dXJucyB0
aGUgbnVtYmVyIG9mIGJ5dGVzIHNlbnQsIG9yIC0xIGlmIGFuIGVycm9yIG9jY3VycmVkLiAgVGhl
IHZhcmlhYmxlIGVycm5vIGlzIHRoZW4gc2V0IGFwcHJvcHJpYXRlbHkuCitgdXNyc2N0cF9yZWN2
digpYCByZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVjZWl2ZWQsIG9yIC0xIGlmIGFuIGVy
cm9yIG9jY3VycmVkLiAgVGhlIHZhcmlhYmxlIGVycm5vIGlzIHRoZW4gc2V0IGFwcHJvcHJpYXRl
bHkuCiAKICMjIFNvY2tldCBPcHRpb25zCiBTb2NrZXQgb3B0aW9ucyBhcmUgdXNlZCB0byBjaGFu
Z2UgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2Ygc29ja2V0IGNhbGxzLgotVGhlaXIgYmVoYXZpb3Ig
aXMgc3BlY2lmaWVkIGluIFtSRkMgNjQ1OF0oaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZj
NjQ1OCkuIFRoZSBmdW5jdGlvbnMgdG8gZ2V0IG9yIHNldCB0aGVtIGFyZQorVGhlaXIgYmVoYXZp
b3IgaXMgc3BlY2lmaWVkIGluIFtSRkMgNjQ1OF0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1s
L3JmYzY0NTgpLiBUaGUgZnVuY3Rpb25zIHRvIGdldCBvciBzZXQgdGhlbSBhcmUKIAogYGBgYwog
aW50CkBAIC0zNzUsNyArMzc2LDcgQEAgU0NUUF9SRVNFVF9TVFJFQU1TIHwgc3RydWN0IHNjdHBf
cmVzZXRfc3RyZWFtcyB8IHcKIFNDVFBfUkVTRVRfQVNTT0MgfCBzdHJ1Y3Qgc2N0cF9hc3NvY190
IHwgdwogU0NUUF9BRERfU1RSRUFNUyB8IHN0cnVjdCBzY3RwX2FkZF9zdHJlYW1zIHwgdwogCi1G
dXJ0aGVyIHVzYWdlIGRldGFpbHMgYXJlIGRlc2NyaWJlZCBpbiBbUkZDIDY0NThdKHRvb2xzLmll
dGYub3JnL2h0bWwvcmZjNjQ1OCksIFtSRkMgNjUyNV0odG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2
NTI1KSwgYW5kIFtkcmFmdC1pZXRmLXRzdndnLXNjdHAtdWRwLWVuY2Fwcy0wM10oaHR0cHM6Ly90
b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtdHN2d2ctc2N0cC11ZHAtZW5jYXBzLTAzKSAo
d29yayBpbiBwcm9ncmVzcykuCitGdXJ0aGVyIHVzYWdlIGRldGFpbHMgYXJlIGRlc2NyaWJlZCBp
biBbUkZDIDY0NThdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU4KSwgW1JGQyA2
NTI1XShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjUyNSksIGFuZCBbZHJhZnQtaWV0
Zi10c3Z3Zy1zY3RwLXVkcC1lbmNhcHMtMDNdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9k
cmFmdC1pZXRmLXRzdndnLXNjdHAtdWRwLWVuY2Fwcy0wMykgKHdvcmsgaW4gcHJvZ3Jlc3MpLgog
CiAjIyBTeXNjdGwgdmFyaWFibGVzCiAKQEAgLTU2Myw3ICs1NjQsNyBAQCBUaGUgY29uZ2VzdGlv
biBjb250cm9sIHNob3VsZCBwcm90ZWN0IHRoZSBuZXR3b3JrIGFnYWluc3QgZmFzdCBzZW5kZXJz
LgogRXhwbGljaXQgY29uZ2VzdGlvbiBub3RpZmljYXRpb25zIGFyZSB0dXJuZWQgb24gYnkgZGVm
YXVsdC4KIAogIyMjIyB1c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9kZWZhdWx0X2NjX21vZHVsZSgp
Ci1UaGlzIHBhcmFtZXRlciBzZXRzIHRoZSBkZWZhdWx0IGFsZ29yaXRobSBmb3IgdGhlIGNvbmdl
c3Rpb24gY29udHJvbC4gRGVmYXVsdCBpcyAwLCBpLmUuIHRoZSBvbmUgc3BlY2lmaWVkIGluIFtS
RkMgNDk2MF0oaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNDk2MCkuCitUaGlzIHBhcmFt
ZXRlciBzZXRzIHRoZSBkZWZhdWx0IGFsZ29yaXRobSBmb3IgdGhlIGNvbmdlc3Rpb24gY29udHJv
bC4gRGVmYXVsdCBpcyAwLCBpLmUuIHRoZSBvbmUgc3BlY2lmaWVkIGluIFtSRkMgNDk2MF0oaHR0
cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzQ5NjApLgogCiAjIyMjIHVzcnNjdHBfc3lzY3Rs
X3NldF9zY3RwX2luaXRpYWxfY3duZCgpCiBTZXQgdGhlIGluaXRpYWwgY29uZ2VzdGlvbiB3aW5k
b3cgaW4gTVRVcy4gVGhlIGRlZmF1bHQgaXMgMy4KQEAgLTU3OCw3ICs1NzksNyBAQCBIb3cgbWFu
eSB0aGUgc2FtZXMgaXQgdGFrZXMgdG8gdHJ5IHN0ZXAgZG93biBvZiBjd25kLiBEZWZhdWx0OiAy
MAogCiAKICMjIENvbmZpZ3VyZSBBVVRIIGFuZCBBREQtSVAKLUFuIGltcG9ydGFudCBleHRlbnNp
b24gb2YgU0NUUCBpcyB0aGUgZHluYW1pYyBhZGRyZXNzIHJlY29uZmlndXJhdGlvbiAoc2VlIFtS
RkMgNTA2MV0oaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNTA2MSkpLCBhbHNvIGtub3du
IGFzIEFERC1JUCwgd2hpY2ggYWxsb3dzIHRoZSBjaGFuZ2luZyBvZiBhZGRyZXNzZXMgZHVyaW5n
IHRoZSBsaWZldGltZSBvZiBhbiBhc3NvY2lhdGlvbi4gRm9yIHRoaXMgZmVhdHVyZSB0aGUgQVVU
SCBleHRlbnNpb24gKHNlZSBbUkZDIDQ4OTVdKGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3Jm
YzQ4OTUpKSBpcyBuZWNlc3NhcnkuCitBbiBpbXBvcnRhbnQgZXh0ZW5zaW9uIG9mIFNDVFAgaXMg
dGhlIGR5bmFtaWMgYWRkcmVzcyByZWNvbmZpZ3VyYXRpb24gKHNlZSBbUkZDIDUwNjFdKGh0dHBz
Oi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM1MDYxKSksIGFsc28ga25vd24gYXMgQURELUlQLCB3
aGljaCBhbGxvd3MgdGhlIGNoYW5naW5nIG9mIGFkZHJlc3NlcyBkdXJpbmcgdGhlIGxpZmV0aW1l
IG9mIGFuIGFzc29jaWF0aW9uLiBGb3IgdGhpcyBmZWF0dXJlIHRoZSBBVVRIIGV4dGVuc2lvbiAo
c2VlIFtSRkMgNDg5NV0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzQ4OTUpKSBpcyBu
ZWNlc3NhcnkuCiAKICMjIyMgdXNyc2N0cF9zeXNjdGxfc2V0X3NjdHBfYXV0b19hc2NvbmYoKQog
SWYgU0NUUCBBdXRvLUFTQ09ORiBpcyBlbmFibGVkLCB0aGUgcGVlciBpcyBpbmZvcm1lZCBhdXRv
bWF0aWNhbGx5IHdoZW4gYSBuZXcgYWRkcmVzcwpAQCAtNTg3LDggKzU4OCw4IEBAIGlzIGFkZGVk
IG9yIHJlbW92ZWQuIFRoaXMgZmVhdHVyZSBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuCiAjIyMjIHVz
cnNjdHBfc3lzY3RsX3NldF9zY3RwX211bHRpcGxlX2FzY29uZnMoKQogQnkgZGVmYXVsdCB0aGUg
c2VuZGluZyBvZiBtdWx0aXBsZSBBU0NPTkZzIGlzIGRpc2FibGVkLgogCi0jIyMjIHVzcnNjdHBf
c3lzY3RsX3NldF9zY3RwX2F1dGhfZGlzYWJsZSgpCi1UaGUgdXNlIG9mIEFVVEgsIHdoaWNoIGlz
IG5vcm1hbGx5IHR1cm5lZCBvbiwgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhpcyBwYXJh
bWV0ZXIgdG8gMS4KKyMjIyMgdXNyc2N0cF9zeXNjdGxfc2V0X3NjdHBfYXV0aF9lbmFibGUoKQor
VGhlIHVzZSBvZiBBVVRILCB3aGljaCBpcyBub3JtYWxseSB0dXJuZWQgb24sIGNhbiBiZSBkaXNh
YmxlZCBieSBzZXR0aW5nIHRoaXMgcGFyYW1ldGVyIHRvIDAuCiAKICMjIyMgdXNyc2N0cF9zeXNj
dGxfc2V0X3NjdHBfYXNjb25mX2F1dGhfbm9jaGsoKQogSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBk
aXNhYmxlIHRoZSByZXF1aXJlbWVudCB0byB1c2UgQVVUSCBpbiBjb25qdW5jdGlvbiB3aXRoIEFE
RC1JUCBieSBzZXR0aW5nIHRoaXMgcGFyYW1ldGVyCkBAIC03NTIsMjcgKzc1MywyNyBAQCBTZWUg
aHR0cHM6Ly9naXRodWIuY29tL3NjdHBsYWIvdXNyc2N0cC90cmVlL21hc3Rlci9wcm9ncmFtcwog
IyMjIyBTQ1RQCiBSLiBTdGV3YXJ0OjwvYnI+CiBgU3RyZWFtIENvbnRyb2wgVHJhbnNtaXNzaW9u
IFByb3RvY29sYC48L2JyPgotW1JGQyA0OTYwXShodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9y
ZmM0OTYwKSwgU2VwdGVtYmVyIDIwMDcuCitbUkZDIDQ5NjBdKGh0dHBzOi8vdG9vbHMuaWV0Zi5v
cmcvaHRtbC9yZmM0OTYwKSwgU2VwdGVtYmVyIDIwMDcuCiAKICMjIyMgYXV0aAogTS4gVMO8eGVu
LCBSLiBTdGV3YXJ0LCBQLiBMZWksIGFuZCBFLiBSZXNjb3JsYTo8L2JyPgogYEF1dGhlbnRpY2F0
ZWQgQ2h1bmtzIGZvciB0aGUgU3RyZWFtIENvbnRyb2wgVHJhbnNtaXNzaW9uIFByb3RvY29sIChT
Q1RQKWAuPC9icj4KLVtSRkMgNDg5NV0oaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNDg5
NSksIEF1Z3VzdCAyMDA3LgorW1JGQyA0ODk1XShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwv
cmZjNDg5NSksIEF1Z3VzdCAyMDA3LgogCiAjIyMjIGFkZGlwCiBSLiBTdGV3YXJ0LCBRLiBYaWUs
IE0uIFTDvHhlbiwgUy4gTWFydXlhbWEsIGFuZCBNLiBLb3p1a2E6PC9icj4KIGBTdHJlYW0gQ29u
dHJvbCBUcmFuc21pc3Npb24gUHJvdG9jb2wgKFNDVFApIER5bmFtaWMgQWRkcmVzcyBSZWNvbmZp
Z3VyYXRpb25gLjwvYnI+Ci1bUkZDIDUwNjFdKGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3Jm
YzUwNjEpLCBTZXB0ZW1iZXIgMjAwNy4KK1tSRkMgNTA2MV0oaHR0cHM6Ly90b29scy5pZXRmLm9y
Zy9odG1sL3JmYzUwNjEpLCBTZXB0ZW1iZXIgMjAwNy4KIAogIyMjIyBzb2NrZXRBUEkKIFIuIFN0
ZXdhcnQsIE0uIFTDvHhlbiwgSy4gUG9vbiwgYW5kIFYuIFlhc2V2aWNoOjwvYnI+CiBgU29ja2V0
cyBBUEkgRXh0ZW5zaW9ucyBmb3IgdGhlIFN0cmVhbSBDb250cm9sIFRyYW5zbWlzc2lvbiBQcm90
b2NvbCAoU0NUUClgLjwvYnI+Ci1bUkZDIDY0NThdKGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1s
L3JmYzY0NTgpLCBEZXplbWJlciAyMDExLgorW1JGQyA2NDU4XShodHRwczovL3Rvb2xzLmlldGYu
b3JnL2h0bWwvcmZjNjQ1OCksIERlemVtYmVyIDIwMTEuCiAKICMjIyMgc3RyZWFtUmVzZXQKIFIu
IFN0ZXdhcnQsIE0uIFTDvHhlbiwgYW5kIFAuIExlaTo8L2JyPgogYFN0cmVhbSBDb250cm9sIFRy
YW5zbWlzc2lvbiBQcm90b2NvbCAoU0NUUCkgU3RyZWFtIFJlY29uZmlndXJhdGlvbmAuPC9icj4K
LVtSRkMgNjUyNV0oaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjUyNSksIEZlYnJ1YXJ5
IDIwMTIuCitbUkZDIDY1MjVdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NTI1KSwg
RmVicnVhcnkgMjAxMi4KIAogIyMjIyB1ZHBlbmNhcHMKIE0uIFTDvHhlbiBhbmQgUi4gU3Rld2Fy
dDwvYnI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9NYW51YWwudGV4IGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvTWFudWFs
LnRleAppbmRleCA3ZWMxZTFmNTNiMzFlNGVkMWQ3ZGI5Njg1NzI3Y2NjOTFjNWQwZTNjLi4zMjcx
MWVlOTc0NWEwY2FiYTdhYmY4NDZiMmY2MWEyNmU5NjNkN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi9NYW51YWwudGV4CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL01hbnVhbC50ZXgKQEAgLTIwNSw3ICsyMDUsOCBA
QCB1c3JzY3RwX3NvY2tldChpbnQgZG9tYWluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAq
dWxwX2luZm8pLAogICAgICAgICAgICAgICAgaW50ICgqc2VuZF9jYikoc3RydWN0IHNvY2tldCAq
c29jaywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzYl9mcmVlKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNiX2ZyZWUsIAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdWxwX2luZm8pLCAKICAgICAgICAgICAgICAg
IHVpbnQzMl90IHNiX3RocmVzaG9sZCwKICAgICAgICAgICAgICAgIHZvaWQgKnVscF9pbmZvKS4K
IFxlbmR7dmVyYmF0aW19CkBAIC05NzAsNyArOTcxLDcgQEAgU0NUUFxfREVCVUcgaGFzIHRvIGJl
IHNldCBhcyBhIGNvbXBpbGUgZmxhZy4KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxz
dHJpbmcuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9vc19XaW5kb3dzKQorI2lmICFkZWZpbmVkKF9XSU4zMikKICNpbmNsdWRlIDx1bmlzdGQuaD4K
ICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CiAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgpAQCAtMTA5
OCw3ICsxMDk5LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgIH0KICAgICB3
aGlsZSAoMSkgewogICAgICAgICBpZiAodXNlX2NiKSB7Ci0jaWYgZGVmaW5lZCAoX19Vc2Vyc3Bh
Y2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKICAgICAgICAgICAgIFNsZWVwKDEq
MTAwMCk7CiAjZWxzZQogICAgICAgICAgICAgc2xlZXAoMSk7CkBAIC0xMTMzLDcgKzExMzQsNyBA
QCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgfQogICAgIHVzcnNjdHBfY2xvc2Uo
c29jayk7CiAgICAgd2hpbGUgKHVzcnNjdHBfZmluaXNoKCkgIT0gMCkgewotI2lmIGRlZmluZWQg
KF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAgICAgICAgIFNs
ZWVwKDEwMDApOwogI2Vsc2UKICAgICAgICAgc2xlZXAoMSk7CkBAIC0xMTgzLDExICsxMTg0LDEx
IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICNpbmNsdWRlIDxzdGRpby5oPgogI2lu
Y2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgotI2lmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX29zX1dpbmRvd3MpCisjaWYgIWRlZmluZWQoX1dJTjMyKQogI2luY2x1ZGUgPHVuaXN0
ZC5oPgogI2VuZGlmCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWYgIWRlZmluZWQoX19Vc2Vy
c3BhY2Vfb3NfV2luZG93cykKKyNpZiAhZGVmaW5lZChfV0lOMzIpCiAjaW5jbHVkZSA8c3lzL3Nv
Y2tldC5oPgogI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KICNpbmNsdWRlIDxhcnBhL2luZXQuaD4K
QEAgLTEyNDIsNyArMTI0Myw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICB9
CiAgICAgbWVtc2V0KCh2b2lkICopJmFkZHI0LCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2lu
KSk7CiAgICAgbWVtc2V0KCh2b2lkICopJmFkZHI2LCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRy
X2luNikpOwotI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0xpbnV4KSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmICFkZWZpbmVkKF9fbGludXhfXykgJiYgIWRlZmlu
ZWQoX1dJTjMyKQogICAgIGFkZHI0LnNpbl9sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2lu
KTsKICAgICBhZGRyNi5zaW42X2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KTsKICNl
bmRpZgpAQCAtMTI3MSwxNCArMTI3MiwxNCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10p
CiAgICAgICAgIHVzcnNjdHBfc2h1dGRvd24oc29jaywgU0hVVF9XUik7CiAgICAgfQogICAgIHdo
aWxlICghZG9uZSkgewotI2lmIGRlZmluZWQgKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYg
ZGVmaW5lZChfV0lOMzIpCiAgICAgICAgIFNsZWVwKDEqMTAwMCk7CiAjZWxzZQogICAgICAgICBz
bGVlcCgxKTsKICNlbmRpZgogICAgIH0KICAgICB3aGlsZSAodXNyc2N0cF9maW5pc2goKSAhPSAw
KSB7Ci0jaWYgZGVmaW5lZCAoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9X
SU4zMikKICAgICAgICAgU2xlZXAoMTAwMCk7CiAjZWxzZQogICAgICAgICBzbGVlcCgxKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
dXNyc2N0cC91c3JzY3RwbGliL1JFQURNRS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL1JFQURNRS5tZAppbmRleCAw
ZjBmOGIxNmM1MTljZTA5ZWRmNmM5YzRmZWYxNmIyY2M0NGI5NDY0Li42ZjJhZjFmNDVhZTE4Y2E5
Y2EyNjFmYjhlYmNlYjEyYWVkZmJhYTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9SRUFETUUubWQK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3Jz
Y3RwL3VzcnNjdHBsaWIvUkVBRE1FLm1kCkBAIC0xLDkgKzEsMTAgQEAKICMgdXNyc2N0cAogWyFb
Q292ZXJpdHkgU2NhbiBCdWlsZCBTdGF0dXNdKGh0dHBzOi8vc2Nhbi5jb3Zlcml0eS5jb20vcHJv
amVjdHMvMTM0MzAvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9zY2FuLmNvdmVyaXR5LmNvbS9wcm9qZWN0
cy91c3JzY3RwKQogCishW0dpdEh1YiBBY3Rpb25zIEJ1aWxkIFN0YXR1cyAoQ01ha2UtYmFzZWQg
YnVpbGQgb25seSldKGh0dHBzOi8vZ2l0aHViLmNvbS9zY3RwbGFiL3VzcnNjdHAvd29ya2Zsb3dz
L0J1aWxkJTIwd2l0aCUyMENNYWtlL2JhZGdlLnN2ZykKKwogVGhpcyBpcyBhIHVzZXJsYW5kIFND
VFAgc3RhY2sgc3VwcG9ydGluZyBGcmVlQlNELCBMaW51eCwgTWFjIE9TIFggYW5kIFdpbmRvd3Mu
CiAKIFNlZSBbbWFudWFsXShNYW51YWwubWQpIGZvciBtb3JlIGluZm9ybWF0aW9uLgogCi1UaGUg
c3RhdHVzIG9mIGNvbnRpbnVvdXMgaW50ZWdyYXRpb24gdGVzdGluZyBpcyBhdmFpbGFibGUgZnJv
bSBbZ3JpZF0oaHR0cDovLzIxMi4yMDEuMTIxLjExMDoxODAxMC9ncmlkKSBhbmQgW3dhdGVyZmFs
bF0oaHR0cDovLzIxMi4yMDEuMTIxLjExMDoxODAxMC93YXRlcmZhbGwpLgotSWYgeW91IGFyZSBv
bmx5IGludGVyZXN0ZWQgaW4gYSBzaW5nbGUgYnJhbmNoLCBqdXN0IGFwcGVuZCBgP2JyYW5jaD1C
UkFOQ0hOQU1FYCB0byB0aGUgVVJMLCBmb3IgZXhhbXBsZSBbd2F0ZXJmYWxsXShodHRwOi8vMjEy
LjIwMS4xMjEuMTEwOjE4MDEwL3dhdGVyZmFsbD9icmFuY2g9bWFzdGVyKS4KK1RoZSBzdGF0dXMg
b2YgY29udGludW91cyBpbnRlZ3JhdGlvbiB0ZXN0aW5nIGlzIGF2YWlsYWJsZSBmcm9tIG91ciBb
QnVpbGRib3RdKGh0dHA6Ly9idWlsZGJvdC5ucGxhYi5kZToxODAxMC8jL2NvbnNvbGUpLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91
c3JzY3RwL3VzcnNjdHBsaWIvYm9vdHN0cmFwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvYm9vdHN0cmFwCm9sZCBtb2Rl
IDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL2NvbmZpZ3VyZS5h
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0
cC91c3JzY3RwbGliL2NvbmZpZ3VyZS5hYwppbmRleCBhNmJmYmQ5M2Q3OTZkNzJiZmM3NmJhM2Y0
OWVkNGEwN2E3ZWNjNTE0Li4xNzZkNWZhN2UzOWM1Yzc2NDE1NzM2OWU2Nzk0MGJkMjFjMjU4MGVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9jb25maWd1cmUuYWMKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvY29uZmln
dXJlLmFjCkBAIC0yOSw3ICsyOSw3IEBAIGRubCBTVUNIIERBTUFHRS4KIGRubAogCiBBQ19JTklU
KFtsaWJ1c3JzY3RwXSwgWzAuOS4zLjBdKQotQU1fSU5JVF9BVVRPTUFLRQorQU1fSU5JVF9BVVRP
TUFLRShbZm9yZWlnbl0pCiAKIEFDX1BST0dfQ0MKIEFDX1BST0dfTElCVE9PTApAQCAtNDYsMTEg
KzQ2LDkgQEAgQVBQQ0ZMQUdTPSIiCiBjYXNlICRob3N0X29zIGluCiBkYXJ3aW4qKQogICBDRkxB
R1M9IiRDRkxBR1MgLXN0ZD1jOTkgLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyAtRF9fQVBQ
TEVfVVNFX1JGQ18yMjkyIgotICBMSUJDRkxBR1M9IiRMSUJDRkxBR1MgLVVfX0FQUExFX18gLURf
X1VzZXJzcGFjZV9vc19EYXJ3aW4iCiAgIDs7CiBkcmFnb25mbHkqKQogICBDRkxBR1M9IiRDRkxB
R1MgLXN0ZD1jOTkgLXB0aHJlYWQiCi0gIExJQkNGTEFHUz0iJExJQkNGTEFHUyAtVV9fRHJhZ29u
Rmx5X18gLURfX1VzZXJzcGFjZV9vc19EcmFnb25GbHkiCiAgIDs7CiBmcmVlYnNkKikKICAgQ0ZM
QUdTPSIkQ0ZMQUdTIC1zdGQ9Yzk5IC1wdGhyZWFkIgpAQCAtNTgsMTkgKzU2LDE1IEBAIGZyZWVi
c2QqKQogICAgIENGTEFHUz0iJENGTEFHUyAtV25vLXVua25vd24td2FybmluZy1vcHRpb24iCiAg
ICAgTERGTEFHUz0iJExERkxBR1MgLVF1bnVzZWQtYXJndW1lbnRzIgogICBmaQotICBMSUJDRkxB
R1M9IiRMSUJDRkxBR1MgLVVfX0ZyZWVCU0RfXyAtRF9fVXNlcnNwYWNlX29zX0ZyZWVCU0QiCiAg
IDs7CiBsaW51eCopCi0gIENGTEFHUz0iJENGTEFHUyAtc3RkPWM5OSAtcHRocmVhZCAtRF9HTlVf
U09VUkNFIgotICBMSUJDRkxBR1M9IiRMSUJDRkxBR1MgLURfX1VzZXJzcGFjZV9vc19MaW51eCIK
KyAgQ0ZMQUdTPSIkQ0ZMQUdTIC1zdGQ9Yzk5IC1wdGhyZWFkIC1EX0dOVV9TT1VSQ0UgLVduby1h
ZGRyZXNzLW9mLXBhY2tlZC1tZW1iZXIiCiAgIDs7CiBuZXRic2QqKQogICBDRkxBR1M9IiRDRkxB
R1MgLXN0ZD1jOTkgLXB0aHJlYWQiCi0gIExJQkNGTEFHUz0iJExJQkNGTEFHUyAtVV9fTmV0QlNE
X18gLURfX1VzZXJzcGFjZV9vc19OZXRCU0QiCiAgIDs7CiBvcGVuYnNkKikKICAgQ0ZMQUdTPSIk
Q0ZMQUdTIC1zdGQ9Yzk5IC1wdGhyZWFkIgotICBMSUJDRkxBR1M9IiRMSUJDRkxBR1MgLVVfX09w
ZW5CU0RfXyAtRF9fVXNlcnNwYWNlX29zX09wZW5CU0QiCiAgIDs7CiBzb2xhcmlzKikKICAgQ0ZM
QUdTPSIkQ0ZMQUdTIC1EX1hQRzRfMiIKQEAgLTEzNiw5ICsxMzAsNyBAQCBBQ19BUkdfRU5BQkxF
KHByb2dyYW1zLAogICBBQ19IRUxQX1NUUklORyggWy0tZW5hYmxlLXByb2dyYW1zXSwKICAgICAg
ICAgICAgICAgICAgIFtidWlsZCBleGFtcGxlIHByb2dyYW1zIEA8OkBkZWZhdWx0PXllc0A6PkBd
KSwKICAgICBlbmFibGVfcHJvZ3JhbXM9JGVuYWJsZXZhbCxlbmFibGVfcHJvZ3JhbXM9eWVzKQot
aWYgdGVzdCB4JGVuYWJsZV9wcm9ncmFtcyA9IHh5ZXM7IHRoZW4KLSAgICAgICAgQUNfQ09ORklH
X0ZJTEVTKHByb2dyYW1zL01ha2VmaWxlKQotZmkKK0FNX0NPTkRJVElPTkFMKFtDT05EX1BST0dS
QU1TXSwgW3Rlc3QgIiRlbmFibGVfcHJvZ3JhbXMiID0geWVzXSkKIAogQUNfQ0hFQ0tfVFlQRShz
aXplX3QpCiBBQ19DSEVDS19UWVBFKHNzaXplX3QpCkBAIC0xOTIsNCArMTg0LDUgQEAgQUNfQ19C
SUdFTkRJQU4KIEFDX1NVQlNUKFtMSUJDRkxBR1NdKQogQUNfU1VCU1QoW0FQUENGTEFHU10pCiBk
bmwgQUNfQ09ORklHX0ZJTEVTKFt1c3JzY3RwLnBjXSkKLUFDX09VVFBVVChNYWtlZmlsZSB1c3Jz
Y3RwbGliL01ha2VmaWxlKQorQUNfQ09ORklHX0ZJTEVTKHVzcnNjdHBsaWIvTWFrZWZpbGUgcHJv
Z3JhbXMvTWFrZWZpbGUgTWFrZWZpbGUpCitBQ19PVVRQVVQKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L2dlbi1kZWYucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9nZW4tZGVmLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1YzAyODU0NDI4
YmU5MDk3YzRlNzAwZmI2NjVlNmY2YWNmZTA0MTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi9nZW4tZGVmLnB5CkBAIC0wLDAgKzEsMjYgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyMK
KyMgZ2VuLWRlZi5weSB1c3JzY3RwLmxpYgoraW1wb3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQg
c3VicHJvY2VzcworZnJvbSBzaHV0aWwgaW1wb3J0IHdoaWNoCisKK3RyeToKKyAgICBsaWJfZmls
ZSA9IHN5cy5hcmd2WzFdCitleGNlcHQ6CisgICAgcHJpbnQoJ1VzYWdlOiBnZW4tZGVmLnB5IExJ
Qi1GSUxFJykKKyAgICBleGl0KC0xKQorCitwcmludCgnRVhQT1JUUycpCisKK2lmIHdoaWNoKCdk
dW1wYmluJyk6CisgICAgZHVtcGJpbl9jbWQgPSBzdWJwcm9jZXNzLnJ1bihbJ2R1bXBiaW4nLCAn
L2xpbmtlcm1lbWJlcjoxJywgbGliX2ZpbGVdLAorICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5Q
SVBFKQorCisgICAgcGF0dGVybiA9IHJlLmNvbXBpbGUoJ1xzKlswLTlhLWZBLUZdKyBfPyg/UDxm
dW5jdGlvbm5hbWU+dXNyc2N0cF9bXlxzXSopJykKKworICAgIGZvciBsaW5lIGluIGR1bXBiaW5f
Y21kLnN0ZG91dC5kZWNvZGUoJ3V0Zi04Jykuc3BsaXRsaW5lcygpOgorICAgICAgICBtYXRjaCA9
IHBhdHRlcm4ubWF0Y2gobGluZSkKKyAgICAgICAgaWYgbWF0Y2g6CisgICAgICAgICAgICBwcmlu
dChtYXRjaC5ncm91cCgnZnVuY3Rpb25uYW1lJykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9tZXNv
bi5idWlsZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
dXNyc2N0cC91c3JzY3RwbGliL21lc29uLmJ1aWxkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5ZjA2NDc3ZGFiYzI5
NTA5NGM4ODUxYWZhODQ3OWFiYzg5NWYzNTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9t
ZXNvbi5idWlsZApAQCAtMCwwICsxLDIxOSBAQAorIyBQcm9qZWN0IGRlZmluaXRpb24KK3Byb2pl
Y3QoJ3VzcnNjdHBsaWInLCAnYycsCisgICAgdmVyc2lvbjogJzEuMC4wJywKKyAgICBkZWZhdWx0
X29wdGlvbnM6IFsnY19zdGQ9Yzk5J10sCisgICAgbWVzb25fdmVyc2lvbjogJz49MC40OS4wJykK
KworIyBTZXQgY29tcGlsZXIgd2FybmluZyBmbGFncworY29tcGlsZXIgPSBtZXNvbi5nZXRfY29t
cGlsZXIoJ2MnKQoraWYgY29tcGlsZXIuZ2V0X2FyZ3VtZW50X3N5bnRheCgpID09ICdtc3ZjJwor
ICAgIGNvbXBpbGVyX2FyZ3MgPSBjb21waWxlci5nZXRfc3VwcG9ydGVkX2FyZ3VtZW50cyhbCisg
ICAgICAgICcvd2Q0MTAwJywgIyAnaWRlbnRpZmllcicgOiB1bnJlZmVyZW5jZWQgZm9ybWFsIHBh
cmFtZXRlcgorICAgICAgICAnL3dkNDEyNycsICMgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBpcyBj
b25zdGFudAorICAgICAgICAnL3dkNDIwMCcsICMgbm9uc3RhbmRhcmQgZXh0ZW5zaW9uIHVzZWQg
OiB6ZXJvLXNpemVkIGFycmF5IGluIHN0cnVjdC91bmlvbgorICAgICAgICAnL3dkNDIxNCcsICMg
Yml0IGZpZWxkIHR5cGVzIG90aGVyIHRoYW4gaW50CisgICAgICAgICcvd2Q0NzA2JywgIyBhc3Np
Z25tZW50IHdpdGhpbiBjb25kaXRpb25hbCBleHByZXNzaW9uCisgICAgICAgICcvd2Q0MjQ1Jywg
IyAnY29udmVyc2lvbicgOiBjb252ZXJzaW9uIGZyb20gJ3R5cGUxJyB0byAndHlwZTInLCBzaWdu
ZWQvdW5zaWduZWQgbWlzbWF0Y2gKKyAgICAgICAgJy93ZDQzODknLCAjICdvcGVyYXRvcicgOiBz
aWduZWQvdW5zaWduZWQgbWlzbWF0Y2gKKyAgICAgICAgJy93ZDQ3MDInLCAjIHVucmVhY2hhYmxl
IGNvZGUKKyAgICAgICAgJy93ZDQ3MDEnLCAjIFBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgbG9j
YWwgdmFyaWFibGUgJ25hbWUnIHVzZWQKKyAgICAgICAgJy93ZDQyNDQnLCAjICdjb252ZXJzaW9u
JyBjb252ZXJzaW9uIGZyb20gJ3R5cGUxJyB0byAndHlwZTInLCBwb3NzaWJsZSBsb3NzIG9mIGRh
dGEKKyAgICBdKQorZWxzZQorICAgIGNvbXBpbGVyX2FyZ3MgPSBjb21waWxlci5nZXRfc3VwcG9y
dGVkX2FyZ3VtZW50cyhbCisgICAgICAgICctcGVkYW50aWMnLAorICAgICAgICAnLVdhbGwnLAor
ICAgICAgICAnLVdleHRyYScsCisgICAgICAgICctV2Zsb2F0LWVxdWFsJywKKyAgICAgICAgJy1X
c2hhZG93JywKKyAgICAgICAgJy1XcG9pbnRlci1hcml0aCcsCisgICAgICAgICctV2luaXQtc2Vs
ZicsCisgICAgICAgICctV25vLXVudXNlZC1mdW5jdGlvbicsCisgICAgICAgICctV25vLXVudXNl
ZC1wYXJhbWV0ZXInLAorICAgICAgICAnLVduby11bnJlYWNoYWJsZS1jb2RlJywKKyAgICAgICAg
Jy1Xc3RyaWN0LXByb3RvdHlwZXMnLAorICAgIF0pCitlbmRpZgorYWRkX3Byb2plY3RfYXJndW1l
bnRzKGNvbXBpbGVyX2FyZ3MsIGxhbmd1YWdlOiAnYycpCisKKyMgQ29uZmlndXJhdGlvbgorY29t
cGlsZV9hcmdzID0gW10KKworIyBEZXBlbmRlbmN5OiBUaHJlYWRzCit0aHJlYWRfZGVwID0gZGVw
ZW5kZW5jeSgndGhyZWFkcycsIHJlcXVpcmVkOiB0cnVlKQorCisjIERlcGVuZGVuY2llcyBsaXN0
CitkZXBlbmRlbmNpZXMgPSBbCisgICAgdGhyZWFkX2RlcCwKK10KKworIyBHbG9iYWwgc2V0dGlu
Z3MKK2FkZF9wcm9qZWN0X2FyZ3VtZW50cyhbCisgICAgJy1EX19Vc2Vyc3BhY2VfXycsCisgICAg
Jy1EU0NUUF9TSU1QTEVfQUxMT0NBVE9SJywKKyAgICAnLURTQ1RQX1BST0NFU1NfTEVWRUxfTE9D
S1MnLAorXSwgbGFuZ3VhZ2U6ICdjJykKKworIyBPUy1zcGVjaWZpYyBzZXR0aW5ncworc3lzdGVt
ID0gaG9zdF9tYWNoaW5lLnN5c3RlbSgpCitpZiBzeXN0ZW0gaW4gWydsaW51eCcsICdhbmRyb2lk
J10KKyAgICBhZGRfcHJvamVjdF9hcmd1bWVudHMoWworICAgICAgICAnLURfR05VX1NPVVJDRScs
CisgICAgXSwgbGFuZ3VhZ2U6ICdjJykKK2VsaWYgc3lzdGVtID09ICdmcmVlYnNkJworICAgIGFk
ZF9wcm9qZWN0X2FyZ3VtZW50cyhjb21waWxlci5nZXRfc3VwcG9ydGVkX2FyZ3VtZW50cyhbCisg
ICAgICAgICAgICAnLVduby1hZGRyZXNzLW9mLXBhY2tlZC1tZW1iZXInLAorICAgICAgICBdKSwg
bGFuZ3VhZ2U6ICdjJykKK2VsaWYgc3lzdGVtIGluIFsnZGFyd2luJywgJ2lvcyddCisgICAgYWRk
X3Byb2plY3RfYXJndW1lbnRzKFsKKyAgICAgICAgICAgICctRF9fQVBQTEVfVVNFX1JGQ18yMjky
JywKKyAgICAgICAgXSArIGNvbXBpbGVyLmdldF9zdXBwb3J0ZWRfYXJndW1lbnRzKFsKKyAgICAg
ICAgICAgICctV25vLWFkZHJlc3Mtb2YtcGFja2VkLW1lbWJlcicsCisgICAgICAgICAgICAnLVdu
by1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucycsCisgICAgICAgIF0pLCBsYW5ndWFnZTogJ2MnKQor
ZWxpZiBzeXN0ZW0gPT0gJ3dpbmRvd3MnCisgICAgZGVwZW5kZW5jaWVzICs9IGNvbXBpbGVyLmZp
bmRfbGlicmFyeSgnd3MyXzMyJywgcmVxdWlyZWQ6IHRydWUpCisgICAgZGVwZW5kZW5jaWVzICs9
IGNvbXBpbGVyLmZpbmRfbGlicmFyeSgnaXBobHBhcGknLCByZXF1aXJlZDogdHJ1ZSkKKyAgICBp
ZiBjb21waWxlci5nZXRfaWQoKSA9PSAnZ2NjJworICAgICAgICBhZGRfcHJvamVjdF9hcmd1bWVu
dHMoY29tcGlsZXIuZ2V0X3N1cHBvcnRlZF9hcmd1bWVudHMoWworICAgICAgICAgICAgJy1Xbm8t
Zm9ybWF0JywKKyAgICAgICAgICAgICctRF9XSU4zMl9XSU5OVD0weDYwMScsICAjIEVuYWJsZXMg
aW5ldF9udG9wIGFuZCBmcmllbmRzCisgICAgICAgIF0pLCBsYW5ndWFnZTogJ2MnKQorICAgIGVu
ZGlmCitlbHNlCisgICAgZXJyb3IoJ1Vua25vd24gc3lzdGVtOiBAMEAnLmZvcm1hdChzeXN0ZW0p
KQorZW5kaWYKKworIyBGZWF0dXJlOiBzeXMvcXVldWUKK2lmIGNvbXBpbGVyLmhhc19oZWFkZXIo
J3N5cy9xdWV1ZS5oJykKKyAgICBhZGRfcHJvamVjdF9hcmd1bWVudHMoJy1ESEFWRV9TWVNfUVVF
VUVfSCcsIGxhbmd1YWdlOiAnYycpCitlbmRpZgorCisjIEZlYXR1cmU6IHN5cy9zb2NrZXQsIGxp
bnV4L2lmYWRkciwgbGludXgvcnRuZXRsaW5rCitpZiBjb21waWxlci5oYXNfaGVhZGVyKCdzeXMv
c29ja2V0LmgnKQorICAgIGlmIGNvbXBpbGVyLmhhc19oZWFkZXIoJ2xpbnV4L2lmX2FkZHIuaCcp
CisgICAgICAgIGFkZF9wcm9qZWN0X2FyZ3VtZW50cygnLURIQVZFX0xJTlVYX0lGX0FERFJfSCcs
IGxhbmd1YWdlOiAnYycpCisgICAgZW5kaWYKKworICAgIGlmIGNvbXBpbGVyLmhhc19oZWFkZXIo
J2xpbnV4L3J0bmV0bGluay5oJykKKyAgICAgICAgYWRkX3Byb2plY3RfYXJndW1lbnRzKCctREhB
VkVfTElOVVhfUlRORVRMSU5LX0gnLCBsYW5ndWFnZTogJ2MnKQorICAgIGVuZGlmCitlbmRpZgor
CisjIEZlYXR1cmU6IElDTVAKK2hhdmVfc3lzX3R5cGVzID0gY29tcGlsZXIuaGFzX2hlYWRlcign
c3lzL3R5cGVzLmgnKQoraGF2ZV9uZXRpbmV0X2luID0gY29tcGlsZXIuaGFzX2hlYWRlcignbmV0
aW5ldC9pbi5oJykKK2hhdmVfbmV0aW5ldF9pcCA9IGNvbXBpbGVyLmhhc19oZWFkZXIoJ25ldGlu
ZXQvaXAuaCcpCitoYXZlX25ldGluZXRfaXBfaWNtcCA9IGNvbXBpbGVyLmhhc19oZWFkZXIoJ25l
dGluZXQvaXBfaWNtcC5oJykKK2lmIGhhdmVfc3lzX3R5cGVzIGFuZCBoYXZlX25ldGluZXRfaW4g
YW5kIGhhdmVfbmV0aW5ldF9pcCBhbmQgaGF2ZV9uZXRpbmV0X2lwX2ljbXAKKyAgICBhZGRfcHJv
amVjdF9hcmd1bWVudHMoJy1ESEFWRV9ORVRJTkVUX0lQX0lDTVBfSCcsIGxhbmd1YWdlOiAnYycp
CitlbmRpZgorCisjIEZlYXR1cmU6IHN0ZGF0b21pYworaWYgY29tcGlsZXIuaGFzX2hlYWRlcign
c3RkYXRvbWljLmgnKQorICAgIGFkZF9wcm9qZWN0X2FyZ3VtZW50cygnLURIQVZFX1NUREFUT01J
Q19IJywgbGFuZ3VhZ2U6ICdjJykKK2VuZGlmCisKKyMgRmVhdHVyZTogc29ja2FkZHIuc2FfbGVu
CitwcmVmaXggPSAnJycKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc29j
a2V0Lmg+CisnJycKK2hhdmVfc2FfbGVuID0gY29tcGlsZXIuaGFzX21lbWJlcignc3RydWN0IHNv
Y2thZGRyJywgJ3NhX2xlbicsIHByZWZpeDogcHJlZml4KQoraWYgaGF2ZV9zYV9sZW4KKyAgICBh
ZGRfcHJvamVjdF9hcmd1bWVudHMoJy1ESEFWRV9TQV9MRU4nLCBsYW5ndWFnZTogJ2MnKQorZW5k
aWYKKworIyBGZWF0dXJlOiBzb2NrYWRkcl9pbi5zaW5fbGVuIC8gc29ja2FkZHJfaW42LnNpbjZf
bGVuIC8gc29ja2FkZHJfY29ubi5zY29ubl9sZW4KK3ByZWZpeCA9ICcnJworI2luY2x1ZGUgPHN5
cy90eXBlcy5oPgorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKycnJworaGF2ZV9zaW5fbGVuID0g
Y29tcGlsZXIuaGFzX21lbWJlcignc3RydWN0IHNvY2thZGRyX2luJywgJ3Npbl9sZW4nLCBwcmVm
aXg6IHByZWZpeCkKK2lmIGhhdmVfc2luX2xlbgorICAgIGFkZF9wcm9qZWN0X2FyZ3VtZW50cygn
LURIQVZFX1NJTl9MRU4nLCBsYW5ndWFnZTogJ2MnKQorZW5kaWYKK2hhdmVfc2luNl9sZW4gPSBj
b21waWxlci5oYXNfbWVtYmVyKCdzdHJ1Y3Qgc29ja2FkZHJfaW42JywgJ3NpbjZfbGVuJywgcHJl
Zml4OiBwcmVmaXgpCitpZiBoYXZlX3NpbjZfbGVuCisgICAgYWRkX3Byb2plY3RfYXJndW1lbnRz
KCctREhBVkVfU0lONl9MRU4nLCBsYW5ndWFnZTogJ2MnKQorZW5kaWYKK2hhdmVfc2Nvbm5fbGVu
ID0gY29tcGlsZXIuaGFzX21lbWJlcignc3RydWN0IHNvY2thZGRyX2Nvbm4nLCAnc2Nvbm5fbGVu
JywgcHJlZml4OiAnI2luY2x1ZGUgInVzcnNjdHAuaCInLCBpbmNsdWRlX2RpcmVjdG9yaWVzOiBp
bmNsdWRlX2RpcmVjdG9yaWVzKCd1c3JzY3RwbGliJykpCitpZiBoYXZlX3Njb25uX2xlbgorICAg
IGFkZF9wcm9qZWN0X2FyZ3VtZW50cygnLURIQVZFX1NDT05OX0xFTicsIGxhbmd1YWdlOiAnYycp
CitlbmRpZgorCisjIE9wdGlvbnMKK2lmIGdldF9vcHRpb24oJ3NjdHBfaW52YXJpYW50cycpCisg
ICAgYWRkX3Byb2plY3RfYXJndW1lbnRzKCctRElOVkFSSUFOVFMnLCBsYW5ndWFnZTogJ2MnKQor
ZW5kaWYKK2lmIGdldF9vcHRpb24oJ3NjdHBfZGVidWcnKQorICAgIGFkZF9wcm9qZWN0X2FyZ3Vt
ZW50cygnLURTQ1RQX0RFQlVHJywgbGFuZ3VhZ2U6ICdjJykKKyAgICBjb21waWxlX2FyZ3MgKz0g
Jy1EU0NUUF9ERUJVRycKK2VuZGlmCitpZiBnZXRfb3B0aW9uKCdzY3RwX2luZXQnKQorICAgIGFk
ZF9wcm9qZWN0X2FyZ3VtZW50cygnLURJTkVUJywgbGFuZ3VhZ2U6ICdjJykKK2VuZGlmCitpZiBn
ZXRfb3B0aW9uKCdzY3RwX2luZXQ2JykKKyAgICBhZGRfcHJvamVjdF9hcmd1bWVudHMoJy1ESU5F
VDYnLCBsYW5ndWFnZTogJ2MnKQorZW5kaWYKKworIyBMaWJyYXJ5CitzdWJkaXIoJ3VzcnNjdHBs
aWInKQorCisjIEJ1aWxkIGxpYnJhcnkKK2lmIGNvbXBpbGVyLmdldF9pZCgpID09ICdtc3ZjJyBh
bmQgZ2V0X29wdGlvbignZGVmYXVsdF9saWJyYXJ5JykgPT0gJ3NoYXJlZCcKKyAgICAjIE5lZWRl
ZCBieSB1c3JzY3RwX2RlZgorICAgIGZpbmRfcHJvZ3JhbSgnZHVtcGJpbicpCisKKyAgICB1c3Jz
Y3RwX3N0YXRpYyA9IHN0YXRpY19saWJyYXJ5KCd1c3JzY3RwLXN0YXRpYycsIHNvdXJjZXMsCisg
ICAgICAgIGRlcGVuZGVuY2llczogZGVwZW5kZW5jaWVzLAorICAgICAgICBpbmNsdWRlX2RpcmVj
dG9yaWVzOiBpbmNsdWRlX2RpcnMpCisKKyAgIHVzcnNjdHBfZGVmID0gY3VzdG9tX3RhcmdldCgn
dXNyc2N0cC5kZWYnLAorICAgICAgICBjb21tYW5kOiBbZmluZF9wcm9ncmFtKCdnZW4tZGVmLnB5
JyksICdASU5QVVRAJ10sCisgICAgICAgIGlucHV0OiB1c3JzY3RwX3N0YXRpYywKKyAgICAgICAg
b3V0cHV0OiAndXNyc2N0cC5kZWYnLAorICAgICAgICBjYXB0dXJlOiB0cnVlKQorCisgICAgdXNy
c2N0cCA9IHNoYXJlZF9saWJyYXJ5KCd1c3JzY3RwJywKKyAgICAgICAgbGlua193aG9sZTogdXNy
c2N0cF9zdGF0aWMsCisgICAgICAgIGRlcGVuZGVuY2llczogZGVwZW5kZW5jaWVzLAorICAgICAg
ICB2c19tb2R1bGVfZGVmczogdXNyc2N0cF9kZWYsCisgICAgICAgIGluc3RhbGw6IHRydWUsCisg
ICAgICAgIHZlcnNpb246IG1lc29uLnByb2plY3RfdmVyc2lvbigpKQorZWxzZQorICAgIHVzcnNj
dHAgPSBsaWJyYXJ5KCd1c3JzY3RwJywgc291cmNlcywKKyAgICAgICAgZGVwZW5kZW5jaWVzOiBk
ZXBlbmRlbmNpZXMsCisgICAgICAgIGluY2x1ZGVfZGlyZWN0b3JpZXM6IGluY2x1ZGVfZGlycywK
KyAgICAgICAgaW5zdGFsbDogdHJ1ZSwKKyAgICAgICAgdmVyc2lvbjogbWVzb24ucHJvamVjdF92
ZXJzaW9uKCkpCitlbmRpZgorCisjIERlY2xhcmUgZGVwZW5kZW5jeQordXNyc2N0cF9kZXAgPSBk
ZWNsYXJlX2RlcGVuZGVuY3koCisgICAgY29tcGlsZV9hcmdzOiBjb21waWxlX2FyZ3MsCisgICAg
aW5jbHVkZV9kaXJlY3RvcmllczogaW5jbHVkZV9kaXJzLAorICAgIGxpbmtfd2l0aDogdXNyc2N0
cCkKKworIyBHZW5lcmF0ZSBwa2ctY29uZmlnIGZpbGUKK3BrZyA9IGltcG9ydCgncGtnY29uZmln
JykKK3BrZy5nZW5lcmF0ZSh1c3JzY3RwLAorICAgIG5hbWU6ICd1c3JzY3RwJywKKyAgICBkZXNj
cmlwdGlvbjogJ0EgcG9ydGFibGUgU0NUUCB1c2VybGFuZCBzdGFjaycsCisgICAgdXJsOiAnaHR0
cHM6Ly9naXRodWIuY29tL3NjdHBsYWIvdXNyc2N0cCcsCisgICAgZXh0cmFfY2ZsYWdzOiBjb21w
aWxlX2FyZ3MpCisKKyMgUHJvZ3JhbXMgKG9wdGlvbmFsKQoraWYgZ2V0X29wdGlvbignc2N0cF9i
dWlsZF9wcm9ncmFtcycpCisgICAgc3ViZGlyKCdwcm9ncmFtcycpCisKKyAgICAjIEJ1aWxkIGV4
ZWN1dGFibGVzCisgICAgZm9yZWFjaCBuYW1lLCBzb3VyY2VzIDogcHJvZ3JhbXMKKyAgICAgICAg
ZXhlY3V0YWJsZSgKKyAgICAgICAgICAgIG5hbWUsCisgICAgICAgICAgICBwcm9ncmFtc19oZWxw
ZXJfc291cmNlcyArIHNvdXJjZXMsCisgICAgICAgICAgICBkZXBlbmRlbmNpZXM6IGRlcGVuZGVu
Y2llcywKKyAgICAgICAgICAgIGxpbmtfd2l0aDogdXNyc2N0cCwKKyAgICAgICAgICAgIGluY2x1
ZGVfZGlyZWN0b3JpZXM6IGluY2x1ZGVfZGlycykKKyAgICBlbmRmb3JlYWNoCitlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91
c3JzY3RwL3VzcnNjdHBsaWIvbWVzb25fb3B0aW9ucy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9tZXNvbl9vcHRp
b25zLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41NmQ5NTA2MTIxNTZmNDY3NDAxNjFhZjk5NTEyOTljM2EyNTEy
NDdiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvbWVzb25fb3B0aW9ucy50eHQKQEAgLTAs
MCArMSwxMCBAQAorb3B0aW9uKCdzY3RwX2ludmFyaWFudHMnLCB0eXBlOiAnYm9vbGVhbicsIHZh
bHVlOiBmYWxzZSwKKyAgICBkZXNjcmlwdGlvbjogJ0FkZCBydW50aW1lIGNoZWNrcycpCitvcHRp
b24oJ3NjdHBfZGVidWcnLCB0eXBlOiAnYm9vbGVhbicsIHZhbHVlOiBmYWxzZSwKKyAgICBkZXNj
cmlwdGlvbjogJ1Byb3ZpZGUgZGVidWcgaW5mb3JtYXRpb24nKQorb3B0aW9uKCdzY3RwX2luZXQn
LCB0eXBlOiAnYm9vbGVhbicsIHZhbHVlOiB0cnVlLAorICAgIGRlc2NyaXB0aW9uOiAnU3VwcG9y
dCBJUHY0JykKK29wdGlvbignc2N0cF9pbmV0NicsIHR5cGU6ICdib29sZWFuJywgdmFsdWU6IHRy
dWUsCisgICAgZGVzY3JpcHRpb246ICdTdXBwb3J0IElQdjYnKQorb3B0aW9uKCdzY3RwX2J1aWxk
X3Byb2dyYW1zJywgdHlwZTogJ2Jvb2xlYW4nLCB2YWx1ZTogdHJ1ZSwKKyAgICBkZXNjcmlwdGlv
bjogJ0J1aWxkIGV4YW1wbGUgcHJvZ3JhbXMnKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3Jh
bXMvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9DTWFrZUxpc3RzLnR4dAppbmRl
eCBhYjRjN2ZkYTM5YjcxM2RjOGNkNDFlZTAxZTVjOTdkM2VlZjFiMDUxLi42NzlmZTI4MzE0ZmM5
ZGUwZTM5OGZmMmU5NWViMDkxYjcxNmJmZmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFt
cy9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9DTWFrZUxpc3RzLnR4dApA
QCAtMSw2ICsxLDYgQEAKICMKICMgQ29weXJpZ2h0IChDKSAyMDE1LTIwMTUgT2xlZyBBbGV4ZWVu
a292Ci0jIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEZlbGl4IFdlaW5yYW5rCisjIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE5IEZlbGl4IFdlaW5yYW5rCiAjCiAjIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAjCkBAIC00OCwxNCArNDgsMjcgQEAgaW5jbHVkZV9kaXJlY3Rvcmllcygke0NNQUtFX1NPVVJD
RV9ESVJ9L3VzcnNjdHBsaWIpCiAjIE9TIERFUEVOREVOVAogIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi1pZiAoJHtDTUFLRV9TWVNURU1fTkFNRX0g
TUFUQ0hFUyAiTGludXgiKQoraWYgKENNQUtFX1NZU1RFTV9OQU1FIE1BVENIRVMgIkxpbnV4IikK
IAlhZGRfZGVmaW5pdGlvbnMoLURfR05VX1NPVVJDRSkKIGVuZGlmICgpCiAKLWlmICgke0NNQUtF
X1NZU1RFTV9OQU1FfSBNQVRDSEVTICJEYXJ3aW4iKQoraWYgKENNQUtFX1NZU1RFTV9OQU1FIE1B
VENIRVMgIkRhcndpbiIpCiAJYWRkX2RlZmluaXRpb25zKC1EX19BUFBMRV9VU0VfUkZDXzIyOTIp
CiBlbmRpZiAoKQogCitpZiAoTVNZUyBPUiBNSU5HVykKKwltZXNzYWdlKFNUQVRVUyAiTVNZUyAv
IE1JTkdXIikKKwlhZGRfZGVmaW5pdGlvbnMoLURfX1VTRV9NSU5HV19BTlNJX1NURElPKQorCSMg
MHgwNjAxID0gV2luZG93cyA3IEFQSQorCWFkZF9kZWZpbml0aW9ucygtRFdJTlZFUj0weDA2MDEp
CisJYWRkX2RlZmluaXRpb25zKC1EX1dJTjMyX1dJTk5UPTB4MDYwMSkKKworCWlmIChDTUFLRV9D
X0NPTVBJTEVSX0lEIE1BVENIRVMgIkdOVSIpCisJCW1lc3NhZ2UoU1RBVFVTICJNU1lTIC8gTUlO
R1cgKyBHQ0MiKQorCQlzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAtV25vLWZv
cm1hdCIpCisJZW5kaWYgKCkKK2VuZGlmICgpCisKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBNSVNDCkBAIC02OCwyMSArODEsMjkgQEAgZmlu
ZF9wYWNrYWdlKFRocmVhZHMpCiAjIFBST0dSQU1TCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLXNldChjaGVja19wcm9ncmFtcworbGlzdChBUFBF
TkQgY2hlY2tfcHJvZ3JhbXMKKwljaGFyZ2VuX3NlcnZlcl91cGNhbGwuYwogCWNsaWVudC5jCisJ
Y2xpZW50X3VwY2FsbC5jCiAJZGF5dGltZV9zZXJ2ZXIuYworCWRheXRpbWVfc2VydmVyX3VwY2Fs
bC5jCiAJZGlzY2FyZF9zZXJ2ZXIuYworCWRpc2NhcmRfc2VydmVyX3VwY2FsbC5jCiAJZWNob19z
ZXJ2ZXIuYworCWVjaG9fc2VydmVyX3VwY2FsbC5jCiAJZWtyX2NsaWVudC5jCi0JZWtyX2xvb3Bf
b2ZmbG9hZC5jCiAJZWtyX2xvb3AuYworCWVrcl9sb29wX3VwY2FsbC5jCiAJZWtyX3BlZXIuYwog
CWVrcl9zZXJ2ZXIuYwogCWh0dHBfY2xpZW50LmMKKwlodHRwX2NsaWVudF91cGNhbGwuYwogCXJ0
Y3dlYi5jCisJc3RfY2xpZW50LmMKIAl0ZXN0X2xpYm1nbXQuYwogCXRlc3RfdGltZXIuYwogCXRz
Y3RwLmMKKwl0c2N0cF91cGNhbGwuYwogKQogCiBmb3JlYWNoIChzb3VyY2VfZmlsZSAke2NoZWNr
X3Byb2dyYW1zfSkKQEAgLTkwLDkgKzExMSwxMSBAQCBmb3JlYWNoIChzb3VyY2VfZmlsZSAke2No
ZWNrX3Byb2dyYW1zfSkKIAlhZGRfZXhlY3V0YWJsZSgKIAkJJHtzb3VyY2VfZmlsZV93ZX0KIAkJ
JHtzb3VyY2VfZmlsZX0KKwkJcHJvZ3JhbXNfaGVscGVyLmMKIAkpCiAKLQl0YXJnZXRfbGlua19s
aWJyYXJpZXMoJHtzb3VyY2VfZmlsZV93ZX0KKwl0YXJnZXRfbGlua19saWJyYXJpZXMoCisJCSR7
c291cmNlX2ZpbGVfd2V9CiAJCSR7cHJvZ3JhbXNfbGlua19saWJyYXJ5fQogCQkke0NNQUtFX1RI
UkVBRF9MSUJTX0lOSVR9CiAJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvTWFrZWZp
bGUuYW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3Vz
cnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9NYWtlZmlsZS5hbQppbmRleCA0NWMyNDhmYmEzZTlj
ODY4YzM5NmIzN2YzNjJmMDExZjYyOTAzYmU1Li41MTUwMWI1ZmQ4OTk3MThmMWEzMDIzNzM4NzYz
MDYxOTIxMTM4N2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9NYWtlZmlsZS5hbQor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9NYWtlZmlsZS5hbQpAQCAtMjksMzQgKzI5LDk0IEBACiAj
CiAKIEFNX0NQUEZMQUdTID0gLUkkKHNyY2RpcikvLi4vdXNyc2N0cGxpYgotRVhUUkFfRElTVCA9
IE1ha2VmaWxlLm5tYWtlIHRzY3RwLmMgZGF5dGltZV9zZXJ2ZXIuYyBkaXNjYXJkX3NlcnZlci5j
IGVjaG9fc2VydmVyLmMgY2xpZW50LmMgcnRjd2ViLmMgZWtyX2NsaWVudC5jIGVrcl9zZXJ2ZXIu
YyBla3JfbG9vcC5jIGVrcl9sb29wX29mZmxvYWQuYyB0ZXN0X2xpYm1nbXQuYyBodHRwX2NsaWVu
dC5jCitFWFRSQV9ESVNUID0gXAorICAgIE1ha2VmaWxlLm5tYWtlIFwKKyAgICB0ZXN0X2xpYm1n
bXQuYyBcCisgICAgdGVzdF90aW1lci5jIFwKKyAgICB0c2N0cC5jIFwKKyAgICBjaGFyZ2VuX3Nl
cnZlcl91cGNhbGwuYyBcCisgICAgZGF5dGltZV9zZXJ2ZXIuYyBcCisgICAgZGF5dGltZV9zZXJ2
ZXJfdXBjYWxsLmMgXAorICAgIGRpc2NhcmRfc2VydmVyLmMgXAorICAgIGRpc2NhcmRfc2VydmVy
X3VwY2FsbC5jIFwKKyAgICBlY2hvX3NlcnZlci5jIFwKKyAgICBlY2hvX3NlcnZlcl91cGNhbGwu
YyBcCisgICAgY2xpZW50LmMgXAorICAgIGNsaWVudF91cGNhbGwuYyBcCisgICAgcnRjd2ViLmMg
XAorICAgIGVrcl9jbGllbnQuYyBcCisgICAgZWtyX3NlcnZlci5jIFwKKyAgICBla3JfbG9vcC5j
IFwKKyAgICBla3JfbG9vcF91cGNhbGwuYyBcCisgICAgZWtyX3BlZXIuYyBcCisgICAgdGVzdF9s
aWJtZ210LmMgXAorICAgIGh0dHBfY2xpZW50LmMgXAorICAgIGh0dHBfY2xpZW50X3VwY2FsbC5j
IFwKKyAgICBzdF9jbGllbnQuYwogCi1ub2luc3RfUFJPR1JBTVMgPSB0c2N0cCBkYXl0aW1lX3Nl
cnZlciBkaXNjYXJkX3NlcnZlciBlY2hvX3NlcnZlciBjbGllbnQgcnRjd2ViIGVrcl9jbGllbnQg
ZWtyX3NlcnZlciBla3JfcGVlciBla3JfbG9vcCBla3JfbG9vcF9vZmZsb2FkIHRlc3RfbGlibWdt
dCB0ZXN0X3RpbWVyIGh0dHBfY2xpZW50Ci10ZXN0X2xpYm1nbXRfU09VUkNFUyA9IHRlc3RfbGli
bWdtdC5jCitub2luc3RfUFJPR1JBTVMgPSBcCisgICAgdGVzdF9saWJtZ210IFwKKyAgICB0ZXN0
X3RpbWVyIFwKKyAgICB0c2N0cCBcCisgICAgY2hhcmdlbl9zZXJ2ZXJfdXBjYWxsIFwKKyAgICBk
YXl0aW1lX3NlcnZlciBcCisgICAgZGF5dGltZV9zZXJ2ZXJfdXBjYWxsIFwKKyAgICBkaXNjYXJk
X3NlcnZlciBcCisgICAgZGlzY2FyZF9zZXJ2ZXJfdXBjYWxsIFwKKyAgICBlY2hvX3NlcnZlciBc
CisgICAgZWNob19zZXJ2ZXJfdXBjYWxsIFwKKyAgICBjbGllbnQgXAorICAgIGNsaWVudF91cGNh
bGwgXAorICAgIHJ0Y3dlYiBcCisgICAgZWtyX2NsaWVudCBcCisgICAgZWtyX3NlcnZlciBcCisg
ICAgZWtyX2xvb3AgXAorICAgIGVrcl9sb29wX3VwY2FsbCBcCisgICAgZWtyX3BlZXIgXAorICAg
IHRlc3RfbGlibWdtdCBcCisgICAgaHR0cF9jbGllbnQgXAorICAgIGh0dHBfY2xpZW50X3VwY2Fs
bCBcCisgICAgc3RfY2xpZW50CisKK3Rlc3RfbGlibWdtdF9TT1VSQ0VTID0gcHJvZ3JhbXNfaGVs
cGVyLmMgdGVzdF9saWJtZ210LmMKIHRlc3RfbGlibWdtdF9MREFERCA9IC4uL3VzcnNjdHBsaWIv
bGlidXNyc2N0cC5sYQotdGVzdF90aW1lcl9TT1VSQ0VTID0gdGVzdF90aW1lci5jCit0ZXN0X3Rp
bWVyX1NPVVJDRVMgPSBwcm9ncmFtc19oZWxwZXIuYyB0ZXN0X3RpbWVyLmMKIHRlc3RfdGltZXJf
TERBREQgPSAuLi91c3JzY3RwbGliL2xpYnVzcnNjdHAubGEKLXRzY3RwX1NPVVJDRVMgPSB0c2N0
cC5jCit0c2N0cF9TT1VSQ0VTID0gcHJvZ3JhbXNfaGVscGVyLmMgdHNjdHAuYwogdHNjdHBfTERB
REQgPSAuLi91c3JzY3RwbGliL2xpYnVzcnNjdHAubGEKLWRheXRpbWVfc2VydmVyX1NPVVJDRVMg
PSBkYXl0aW1lX3NlcnZlci5jCitjaGFyZ2VuX3NlcnZlcl91cGNhbGxfU09VUkNFUyA9IHByb2dy
YW1zX2hlbHBlci5jIGNoYXJnZW5fc2VydmVyX3VwY2FsbC5jCitjaGFyZ2VuX3NlcnZlcl91cGNh
bGxfTERBREQgPSAuLi91c3JzY3RwbGliL2xpYnVzcnNjdHAubGEKK2RheXRpbWVfc2VydmVyX1NP
VVJDRVMgPSBwcm9ncmFtc19oZWxwZXIuYyBkYXl0aW1lX3NlcnZlci5jCiBkYXl0aW1lX3NlcnZl
cl9MREFERCA9IC4uL3VzcnNjdHBsaWIvbGlidXNyc2N0cC5sYQotZGlzY2FyZF9zZXJ2ZXJfU09V
UkNFUyA9IGRpc2NhcmRfc2VydmVyLmMKK2RheXRpbWVfc2VydmVyX3VwY2FsbF9TT1VSQ0VTID0g
cHJvZ3JhbXNfaGVscGVyLmMgZGF5dGltZV9zZXJ2ZXJfdXBjYWxsLmMKK2RheXRpbWVfc2VydmVy
X3VwY2FsbF9MREFERCA9IC4uL3VzcnNjdHBsaWIvbGlidXNyc2N0cC5sYQorZGlzY2FyZF9zZXJ2
ZXJfU09VUkNFUyA9IHByb2dyYW1zX2hlbHBlci5jIGRpc2NhcmRfc2VydmVyLmMKIGRpc2NhcmRf
c2VydmVyX0xEQUREID0gLi4vdXNyc2N0cGxpYi9saWJ1c3JzY3RwLmxhCi1lY2hvX3NlcnZlcl9T
T1VSQ0VTID0gZWNob19zZXJ2ZXIuYworZGlzY2FyZF9zZXJ2ZXJfdXBjYWxsX1NPVVJDRVMgPSBw
cm9ncmFtc19oZWxwZXIuYyBkaXNjYXJkX3NlcnZlcl91cGNhbGwuYworZGlzY2FyZF9zZXJ2ZXJf
dXBjYWxsX0xEQUREID0gLi4vdXNyc2N0cGxpYi9saWJ1c3JzY3RwLmxhCitlY2hvX3NlcnZlcl9T
T1VSQ0VTID0gcHJvZ3JhbXNfaGVscGVyLmMgZWNob19zZXJ2ZXIuYwogZWNob19zZXJ2ZXJfTERB
REQgPSAuLi91c3JzY3RwbGliL2xpYnVzcnNjdHAubGEKLWNsaWVudF9TT1VSQ0VTID0gY2xpZW50
LmMKK2VjaG9fc2VydmVyX3VwY2FsbF9TT1VSQ0VTID0gcHJvZ3JhbXNfaGVscGVyLmMgZWNob19z
ZXJ2ZXJfdXBjYWxsLmMKK2VjaG9fc2VydmVyX3VwY2FsbF9MREFERCA9IC4uL3VzcnNjdHBsaWIv
bGlidXNyc2N0cC5sYQorY2xpZW50X1NPVVJDRVMgPSBwcm9ncmFtc19oZWxwZXIuYyBjbGllbnQu
YwogY2xpZW50X0xEQUREID0gLi4vdXNyc2N0cGxpYi9saWJ1c3JzY3RwLmxhCi1ydGN3ZWJfU09V
UkNFUyA9IHJ0Y3dlYi5jCitjbGllbnRfdXBjYWxsX1NPVVJDRVMgPSBwcm9ncmFtc19oZWxwZXIu
YyBjbGllbnRfdXBjYWxsLmMKK2NsaWVudF91cGNhbGxfTERBREQgPSAuLi91c3JzY3RwbGliL2xp
YnVzcnNjdHAubGEKK3J0Y3dlYl9TT1VSQ0VTID0gcHJvZ3JhbXNfaGVscGVyLmMgcnRjd2ViLmMK
IHJ0Y3dlYl9MREFERCA9IC4uL3VzcnNjdHBsaWIvbGlidXNyc2N0cC5sYQotZWtyX3NlcnZlcl9T
T1VSQ0VTID0gZWtyX3NlcnZlci5jCitla3Jfc2VydmVyX1NPVVJDRVMgPSBwcm9ncmFtc19oZWxw
ZXIuYyBla3Jfc2VydmVyLmMKIGVrcl9zZXJ2ZXJfTERBREQgPSAuLi91c3JzY3RwbGliL2xpYnVz
cnNjdHAubGEKLWVrcl9jbGllbnRfU09VUkNFUyA9IGVrcl9jbGllbnQuYworZWtyX2NsaWVudF9T
T1VSQ0VTID0gcHJvZ3JhbXNfaGVscGVyLmMgZWtyX2NsaWVudC5jCiBla3JfY2xpZW50X0xEQURE
ID0gLi4vdXNyc2N0cGxpYi9saWJ1c3JzY3RwLmxhCi1la3JfcGVlcl9TT1VSQ0VTID0gZWtyX3Bl
ZXIuYworZWtyX3BlZXJfU09VUkNFUyA9IHByb2dyYW1zX2hlbHBlci5jIGVrcl9wZWVyLmMKIGVr
cl9wZWVyX0xEQUREID0gLi4vdXNyc2N0cGxpYi9saWJ1c3JzY3RwLmxhCi1la3JfbG9vcF9TT1VS
Q0VTID0gZWtyX2xvb3AuYworZWtyX2xvb3BfU09VUkNFUyA9IHByb2dyYW1zX2hlbHBlci5jIGVr
cl9sb29wLmMKIGVrcl9sb29wX0xEQUREID0gLi4vdXNyc2N0cGxpYi9saWJ1c3JzY3RwLmxhCi1l
a3JfbG9vcF9vZmZsb2FkX1NPVVJDRVMgPSBla3JfbG9vcF9vZmZsb2FkLmMKLWVrcl9sb29wX29m
ZmxvYWRfTERBREQgPSAuLi91c3JzY3RwbGliL2xpYnVzcnNjdHAubGEKLWh0dHBfY2xpZW50X1NP
VVJDRVMgPSBodHRwX2NsaWVudC5jCitla3JfbG9vcF91cGNhbGxfU09VUkNFUyA9IHByb2dyYW1z
X2hlbHBlci5jIGVrcl9sb29wX3VwY2FsbC5jCitla3JfbG9vcF91cGNhbGxfTERBREQgPSAuLi91
c3JzY3RwbGliL2xpYnVzcnNjdHAubGEKK2h0dHBfY2xpZW50X1NPVVJDRVMgPSBwcm9ncmFtc19o
ZWxwZXIuYyBodHRwX2NsaWVudC5jCiBodHRwX2NsaWVudF9MREFERCA9IC4uL3VzcnNjdHBsaWIv
bGlidXNyc2N0cC5sYQoraHR0cF9jbGllbnRfdXBjYWxsX1NPVVJDRVMgPSBwcm9ncmFtc19oZWxw
ZXIuYyBodHRwX2NsaWVudF91cGNhbGwuYworaHR0cF9jbGllbnRfdXBjYWxsX0xEQUREID0gLi4v
dXNyc2N0cGxpYi9saWJ1c3JzY3RwLmxhCitzdF9jbGllbnRfU09VUkNFUyA9IHByb2dyYW1zX2hl
bHBlci5jIHN0X2NsaWVudC5jCitzdF9jbGllbnRfTERBREQgPSAuLi91c3JzY3RwbGliL2xpYnVz
cnNjdHAubGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL01ha2VmaWxlLm5tYWtlIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3Vz
cnNjdHBsaWIvcHJvZ3JhbXMvTWFrZWZpbGUubm1ha2UKaW5kZXggMDFjNDExY2VmNjg5ZWI4OGI5
OGI0ZmY2OGZlYjQwZjliNGY4MzY0ZC4uYWFjZmM3NGU1ZmM5MzBjZWQ0ZGI2NzQ5ZDViYWFiY2Ri
MmIyMWRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvTWFrZWZpbGUubm1ha2UKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvcHJvZ3JhbXMvTWFrZWZpbGUubm1ha2UKQEAgLTM4LDc2ICszOCwxMjMgQEAg
TElOS0ZMQUdTPS9MSUJQQVRIOi4uXHVzcnNjdHBsaWIgdXNyc2N0cC5saWIKIAkkKENDKSAkKENW
QVJTRExMKSAkKENGTEFHUykgLUZkLlwgLWMgJDwNCiANCiBhbGw6IFwNCisJcHJvZ3JhbXNfaGVs
cGVyLm9iaiBcDQogCWNsaWVudCBcDQorCWNsaWVudF91cGNhbGwgXA0KIAlkYXl0aW1lX3NlcnZl
ciBcDQorCWRheXRpbWVfc2VydmVyX3VwY2FsbCBcDQogCWRpc2NhcmRfc2VydmVyIFwNCisJZGlz
Y2FyZF9zZXJ2ZXJfdXBjYWxsIFwNCiAJZWNob19zZXJ2ZXIgXA0KKwllY2hvX3NlcnZlcl91cGNh
bGwgXA0KIAl0c2N0cCBcDQogCXJ0Y3dlYiBcDQogCWVrcl9jbGllbnQgXA0KIAlla3Jfc2VydmVy
IFwNCiAJZWtyX3BlZXIgXA0KIAlla3JfbG9vcCBcDQorCWVrcl9sb29wX3VwY2FsbCBcDQogCXRl
c3RfbGlibWdtdCBcDQotCWh0dHBfY2xpZW50DQorCWh0dHBfY2xpZW50IFwNCisJaHR0cF9jbGll
bnRfdXBjYWxsIFwNCisJc3RfY2xpZW50DQorCQ0KK3Byb2dyYW1zX2hlbHBlci5vYmogOiBwcm9n
cmFtc19oZWxwZXIuYyBwcm9ncmFtc19oZWxwZXIuaA0KKwljbCAkKENWQVJTRExMKSAkKENGTEFH
UykgLWMgcHJvZ3JhbXNfaGVscGVyLmMNCiANCiBjbGllbnQ6DQogCSQoQ0MpICQoQ0ZMQUdTKSAk
KENWQVJTRExMKSAtYyBjbGllbnQuYw0KLQlsaW5rIC1vdXQ6Y2xpZW50LmV4ZSBjbGllbnQub2Jq
ICQoTElOS0ZMQUdTKQ0KKwlsaW5rIC1vdXQ6Y2xpZW50LmV4ZSBjbGllbnQub2JqIHByb2dyYW1z
X2hlbHBlci5vYmogJChMSU5LRkxBR1MpDQorDQorY2xpZW50X3VwY2FsbDoNCisJJChDQykgJChD
RkxBR1MpICQoQ1ZBUlNETEwpIC1jIGNsaWVudF91cGNhbGwuYw0KKwlsaW5rIC1vdXQ6Y2xpZW50
X3VwY2FsbC5leGUgY2xpZW50X3VwY2FsbC5vYmogcHJvZ3JhbXNfaGVscGVyLm9iaiAkKExJTktG
TEFHUykNCiANCiBkYXl0aW1lX3NlcnZlcjoNCiAJJChDQykgJChDRkxBR1MpICQoQ1ZBUlNETEwp
IC1jIGRheXRpbWVfc2VydmVyLmMNCi0JbGluayAtb3V0OmRheXRpbWVfc2VydmVyLmV4ZSBkYXl0
aW1lX3NlcnZlci5vYmogJChMSU5LRkxBR1MpDQorCWxpbmsgLW91dDpkYXl0aW1lX3NlcnZlci5l
eGUgZGF5dGltZV9zZXJ2ZXIub2JqIHByb2dyYW1zX2hlbHBlci5vYmogJChMSU5LRkxBR1MpDQor
DQorZGF5dGltZV9zZXJ2ZXJfdXBjYWxsOg0KKwkkKENDKSAkKENGTEFHUykgJChDVkFSU0RMTCkg
LWMgZGF5dGltZV9zZXJ2ZXJfdXBjYWxsLmMNCisJbGluayAtb3V0OmRheXRpbWVfc2VydmVyX3Vw
Y2FsbC5leGUgZGF5dGltZV9zZXJ2ZXJfdXBjYWxsLm9iaiBwcm9ncmFtc19oZWxwZXIub2JqICQo
TElOS0ZMQUdTKQ0KIA0KIGRpc2NhcmRfc2VydmVyOg0KIAkkKENDKSAkKENGTEFHUykgJChDVkFS
U0RMTCkgLWMgZGlzY2FyZF9zZXJ2ZXIuYw0KLQlsaW5rIC1vdXQ6ZGlzY2FyZF9zZXJ2ZXIuZXhl
IGRpc2NhcmRfc2VydmVyLm9iaiAkKExJTktGTEFHUykNCisJbGluayAtb3V0OmRpc2NhcmRfc2Vy
dmVyLmV4ZSBkaXNjYXJkX3NlcnZlci5vYmogcHJvZ3JhbXNfaGVscGVyLm9iaiAkKExJTktGTEFH
UykNCisNCitkaXNjYXJkX3NlcnZlcl91cGNhbGw6DQorCSQoQ0MpICQoQ0ZMQUdTKSAkKENWQVJT
RExMKSAtYyBkaXNjYXJkX3NlcnZlcl91cGNhbGwuYw0KKwlsaW5rIC1vdXQ6ZGlzY2FyZF9zZXJ2
ZXJfdXBjYWxsLmV4ZSBkaXNjYXJkX3NlcnZlcl91cGNhbGwub2JqIHByb2dyYW1zX2hlbHBlci5v
YmogJChMSU5LRkxBR1MpDQogDQogZWNob19zZXJ2ZXI6DQogCSQoQ0MpICQoQ0ZMQUdTKSAkKENW
QVJTRExMKSAtYyBlY2hvX3NlcnZlci5jDQotCWxpbmsgLW91dDplY2hvX3NlcnZlci5leGUgZWNo
b19zZXJ2ZXIub2JqICQoTElOS0ZMQUdTKQ0KKwlsaW5rIC1vdXQ6ZWNob19zZXJ2ZXIuZXhlIGVj
aG9fc2VydmVyLm9iaiBwcm9ncmFtc19oZWxwZXIub2JqICQoTElOS0ZMQUdTKQ0KKw0KK2VjaG9f
c2VydmVyX3VwY2FsbDoNCisJJChDQykgJChDRkxBR1MpICQoQ1ZBUlNETEwpIC1jIGVjaG9fc2Vy
dmVyX3VwY2FsbC5jDQorCWxpbmsgLW91dDplY2hvX3NlcnZlcl91cGNhbGwuZXhlIGVjaG9fc2Vy
dmVyX3VwY2FsbC5vYmogcHJvZ3JhbXNfaGVscGVyLm9iaiAkKExJTktGTEFHUykNCiANCiB0c2N0
cDoNCiAJJChDQykgJChDRkxBR1MpICQoQ1ZBUlNETEwpIC1jIHRzY3RwLmMNCi0JbGluayAtb3V0
OnRzY3RwLmV4ZSB0c2N0cC5vYmogJChMSU5LRkxBR1MpDQorCWxpbmsgLW91dDp0c2N0cC5leGUg
dHNjdHAub2JqIHByb2dyYW1zX2hlbHBlci5vYmogJChMSU5LRkxBR1MpDQogDQogcnRjd2ViOg0K
IAkkKENDKSAkKENGTEFHUykgJChDVkFSU0RMTCkgLWMgcnRjd2ViLmMNCi0JbGluayAtb3V0OnJ0
Y3dlYi5leGUgcnRjd2ViLm9iaiAkKExJTktGTEFHUykNCisJbGluayAtb3V0OnJ0Y3dlYi5leGUg
cnRjd2ViLm9iaiBwcm9ncmFtc19oZWxwZXIub2JqICQoTElOS0ZMQUdTKQ0KIA0KIGVrcl9jbGll
bnQ6DQogCSQoQ0MpICQoQ0ZMQUdTKSAkKENWQVJTRExMKSAtYyBla3JfY2xpZW50LmMNCi0JbGlu
ayAtb3V0OmVrcl9jbGllbnQuZXhlIGVrcl9jbGllbnQub2JqICQoTElOS0ZMQUdTKQ0KKwlsaW5r
IC1vdXQ6ZWtyX2NsaWVudC5leGUgZWtyX2NsaWVudC5vYmogcHJvZ3JhbXNfaGVscGVyLm9iaiAk
KExJTktGTEFHUykNCiANCiBla3Jfc2VydmVyOg0KIAkkKENDKSAkKENGTEFHUykgJChDVkFSU0RM
TCkgLWMgZWtyX3NlcnZlci5jDQotCWxpbmsgLW91dDpla3Jfc2VydmVyLmV4ZSBla3Jfc2VydmVy
Lm9iaiAkKExJTktGTEFHUykNCisJbGluayAtb3V0OmVrcl9zZXJ2ZXIuZXhlIGVrcl9zZXJ2ZXIu
b2JqIHByb2dyYW1zX2hlbHBlci5vYmogJChMSU5LRkxBR1MpDQogDQogZWtyX3BlZXI6DQogCSQo
Q0MpICQoQ0ZMQUdTKSAkKENWQVJTRExMKSAtYyBla3JfcGVlci5jDQotCWxpbmsgLW91dDpla3Jf
cGVlci5leGUgZWtyX3BlZXIub2JqICQoTElOS0ZMQUdTKQ0KKwlsaW5rIC1vdXQ6ZWtyX3BlZXIu
ZXhlIGVrcl9wZWVyLm9iaiBwcm9ncmFtc19oZWxwZXIub2JqICQoTElOS0ZMQUdTKQ0KIA0KIGVr
cl9sb29wOg0KIAkkKENDKSAkKENGTEFHUykgJChDVkFSU0RMTCkgLWMgZWtyX2xvb3AuYw0KLQls
aW5rIC1vdXQ6ZWtyX2xvb3AuZXhlIGVrcl9sb29wLm9iaiAkKExJTktGTEFHUykNCisJbGluayAt
b3V0OmVrcl9sb29wLmV4ZSBla3JfbG9vcC5vYmogcHJvZ3JhbXNfaGVscGVyLm9iaiAkKExJTktG
TEFHUykNCisNCitla3JfbG9vcF91cGNhbGw6DQorCSQoQ0MpICQoQ0ZMQUdTKSAkKENWQVJTRExM
KSAtYyBla3JfbG9vcF91cGNhbGwuYw0KKwlsaW5rIC1vdXQ6ZWtyX2xvb3BfdXBjYWxsLmV4ZSBl
a3JfbG9vcF91cGNhbGwub2JqIHByb2dyYW1zX2hlbHBlci5vYmogJChMSU5LRkxBR1MpDQogDQog
dGVzdF9saWJtZ210Og0KIAkkKENDKSAkKENGTEFHUykgJChDVkFSU0RMTCkgLWMgdGVzdF9saWJt
Z210LmMNCi0JbGluayAtb3V0OnRlc3RfbGlibWdtdC5leGUgdGVzdF9saWJtZ210Lm9iaiAkKExJ
TktGTEFHUykNCisJbGluayAtb3V0OnRlc3RfbGlibWdtdC5leGUgdGVzdF9saWJtZ210Lm9iaiBw
cm9ncmFtc19oZWxwZXIub2JqICQoTElOS0ZMQUdTKQ0KIA0KIGh0dHBfY2xpZW50Og0KIAkkKEND
KSAkKENGTEFHUykgJChDVkFSU0RMTCkgLWMgaHR0cF9jbGllbnQuYw0KLQlsaW5rIC1vdXQ6aHR0
cF9jbGllbnQuZXhlIGh0dHBfY2xpZW50Lm9iaiAkKExJTktGTEFHUykNCisJbGluayAtb3V0Omh0
dHBfY2xpZW50LmV4ZSBodHRwX2NsaWVudC5vYmogcHJvZ3JhbXNfaGVscGVyLm9iaiAkKExJTktG
TEFHUykNCisNCitodHRwX2NsaWVudF91cGNhbGw6DQorCSQoQ0MpICQoQ0ZMQUdTKSAkKENWQVJT
RExMKSAtYyBodHRwX2NsaWVudF91cGNhbGwuYw0KKwlsaW5rIC1vdXQ6aHR0cF9jbGllbnRfdXBj
YWxsLmV4ZSBodHRwX2NsaWVudF91cGNhbGwub2JqIHByb2dyYW1zX2hlbHBlci5vYmogJChMSU5L
RkxBR1MpDQorDQorc3RfY2xpZW50Og0KKwkkKENDKSAkKENGTEFHUykgJChDVkFSU0RMTCkgLWMg
c3RfY2xpZW50LmMNCisJbGluayAtb3V0OnN0X2NsaWVudC5leGUgc3RfY2xpZW50Lm9iaiBwcm9n
cmFtc19oZWxwZXIub2JqICQoTElOS0ZMQUdTKQ0KIA0KIGNsZWFuOg0KIAlkZWwgL0YgY2xpZW50
LmV4ZQ0KIAlkZWwgL0YgY2xpZW50Lm9iag0KKwlkZWwgL0YgY2xpZW50X3VwY2FsbC5leGUNCisJ
ZGVsIC9GIGNsaWVudF91cGNhbGwub2JqDQogCWRlbCAvRiBkYXl0aW1lX3NlcnZlci5leGUNCiAJ
ZGVsIC9GIGRheXRpbWVfc2VydmVyLm9iag0KKwlkZWwgL0YgZGF5dGltZV9zZXJ2ZXJfdXBjYWxs
LmV4ZQ0KKwlkZWwgL0YgZGF5dGltZV9zZXJ2ZXJfdXBjYWxsLm9iag0KIAlkZWwgL0YgZGlzY2Fy
ZF9zZXJ2ZXIuZXhlDQogCWRlbCAvRiBkaXNjYXJkX3NlcnZlci5vYmoNCisJZGVsIC9GIGRpc2Nh
cmRfc2VydmVyX3VwY2FsbC5leGUNCisJZGVsIC9GIGRpc2NhcmRfc2VydmVyX3VwY2FsbC5vYmoN
CiAJZGVsIC9GIGVjaG9fc2VydmVyLmV4ZQ0KIAlkZWwgL0YgZWNob19zZXJ2ZXIub2JqDQorCWRl
bCAvRiBlY2hvX3NlcnZlcl91cGNhbGwuZXhlDQorCWRlbCAvRiBlY2hvX3NlcnZlcl91cGNhbGwu
b2JqDQogCWRlbCAvRiB0c2N0cC5leGUNCiAJZGVsIC9GIHRzY3RwLm9iag0KIAlkZWwgL0YgcnRj
d2ViLmV4ZQ0KQEAgLTEyMCw3ICsxNjcsMTMgQEAgY2xlYW46CiAJZGVsIC9GIGVrcl9wZWVyLm9i
ag0KIAlkZWwgL0YgZWtyX2xvb3AuZXhlDQogCWRlbCAvRiBla3JfbG9vcC5vYmoNCisJZGVsIC9G
IGVrcl9sb29wX3VwY2FsbC5leGUNCisJZGVsIC9GIGVrcl9sb29wX3VwY2FsbC5vYmoNCiAJZGVs
IC9GIHRlc3RfbGlibWdtdC5leGUNCiAJZGVsIC9GIHRlc3RfbGlibWdtdC5vYmoNCiAJZGVsIC9G
IGh0dHBfY2xpZW50LmV4ZQ0KIAlkZWwgL0YgaHR0cF9jbGllbnQub2JqDQorCWRlbCAvRiBodHRw
X2NsaWVudF91cGNhbGwuZXhlDQorCWRlbCAvRiBodHRwX2NsaWVudF91cGNhbGwub2JqDQorCWRl
bCAvRiBzdF9jbGllbnQuZXhlDQorCWRlbCAvRiBzdF9jbGllbnQub2JqDQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3Vz
cnNjdHBsaWIvcHJvZ3JhbXMvY2hhcmdlbl9zZXJ2ZXJfdXBjYWxsLmMgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9n
cmFtcy9jaGFyZ2VuX3NlcnZlcl91cGNhbGwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZGFmMzIxYjNmOWYwZTNj
ZGUzYzdlYTg1Mzg1YjkyZWU3YThjMThhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJv
Z3JhbXMvY2hhcmdlbl9zZXJ2ZXJfdXBjYWxsLmMKQEAgLTAsMCArMSwyMzEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTItMjAxMyBNaWNoYWVsIFR1ZXhlbgorICoKKyAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBwcm9qZWN0
IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisg
KiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBQUk9KRUNUIEFORCBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICog
QVJFIERJU0NMQUlNRUQuCUlOIE5PIEVWRU5UIFNIQUxMIFRIRSBQUk9KRUNUIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwor
ICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworLyoKKyAqIFVzYWdl
OiBjaGFyZ2VuX3NlcnZlcl91cGNhbGwgW2xvY2FsX2VuY2Fwc19wb3J0XSBbcmVtb3RlX2VuY2Fw
c19wb3J0XQorICovCisKKyNpZmRlZiBfV0lOMzIKKyNkZWZpbmUgX0NSVF9TRUNVUkVfTk9fV0FS
TklOR1MKKyNlbmRpZgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+Cisj
aW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8c3lzL3R5
cGVzLmg+CisjaWZuZGVmIF9XSU4zMgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRl
IDx1bmlzdGQuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNs
dWRlIDxuZXRpbmV0L2luLmg+CisjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisjZW5kaWYKKyNpbmNs
dWRlIDx1c3JzY3RwLmg+CisjaW5jbHVkZSAicHJvZ3JhbXNfaGVscGVyLmgiCisKKyNkZWZpbmUg
QlVGRkVSU0laRSAxMDI0MAorI2RlZmluZSBQT1JUIDE5CisKK2NoYXIgYnVmZmVyWzk1XTsKK2lu
dCBkb25lID0gMDsKK2ludCBzZW5kX2RvbmUgPSAwOworCitzdGF0aWMgdm9pZAoraW5pdEJ1ZmZl
cih2b2lkKSB7CisJaW50IGksIGo7CisJZm9yIChpID0gMzIsIGogPSAwOyBpIDwgMTI2OyBpKyss
IGorKykgeworCQlidWZmZXJbal0gPSBpOworCX0KK30KKwordW5zaWduZWQgaW50IHNpZ25Db3Vu
dGVyID0gMDsKK3N0YXRpYyB2b2lkCitoYW5kbGVfdXBjYWxsKHN0cnVjdCBzb2NrZXQgKnVwY2Fs
bF9zb2NrZXQsIHZvaWQgKnVwY2FsbF9kYXRhLCBpbnQgdXBjYWxsX2ZsYWdzKTsKKworc3RhdGlj
IHZvaWQKK2hhbmRsZV9hY2NlcHQoc3RydWN0IHNvY2tldCAqdXBjYWxsX3NvY2tldCwgdm9pZCAq
dXBjYWxsX2RhdGEsIGludCB1cGNhbGxfZmxhZ3MpCit7CisJc3RydWN0IHNvY2tldCAqY29ubl9z
b2NrOworCisJaWYgKCgoY29ubl9zb2NrID0gdXNyc2N0cF9hY2NlcHQodXBjYWxsX3NvY2tldCwg
TlVMTCwgTlVMTCkpID09IE5VTEwpCisJICAgICYmIChlcnJubyAhPSBFSU5QUk9HUkVTUykpIHsK
KwkJcGVycm9yKCJ1c3JzY3RwX2FjY2VwdCIpOworCQlyZXR1cm47CisJfQorCWRvbmUgPSAwOwor
CXByaW50ZigiY29ubmVjdGlvbiBhY2NlcHRlZCBmcm9tIHNvY2tldCAlcFxuIiwgKHZvaWQgKilj
b25uX3NvY2spOworCXVzcnNjdHBfc2V0X3VwY2FsbChjb25uX3NvY2ssIGhhbmRsZV91cGNhbGws
IE5VTEwpOworfQorCitzdGF0aWMgdm9pZAoraGFuZGxlX3VwY2FsbChzdHJ1Y3Qgc29ja2V0ICp1
cGNhbGxfc29ja2V0LCB2b2lkICp1cGNhbGxfZGF0YSwgaW50IHVwY2FsbF9mbGFncykKK3sKKwlp
bnQgZXZlbnRzID0gdXNyc2N0cF9nZXRfZXZlbnRzKHVwY2FsbF9zb2NrZXQpOworCisJaWYgKGV2
ZW50cyAmIFNDVFBfRVZFTlRfUkVBRCAmJiAhc2VuZF9kb25lKSB7CisJCWNoYXIgKmJ1ZjsKKwkJ
c3RydWN0IHNjdHBfcmVjdnZfcm4gcm47CisJCXNzaXplX3QgbjsKKwkJc3RydWN0IHNvY2thZGRy
X3N0b3JhZ2UgYWRkcjsKKwkJYnVmID0gbWFsbG9jKEJVRkZFUlNJWkUpOworCQlpbnQgcmVjdl9m
bGFncyA9IDA7CisJCXNvY2tsZW5fdCBsZW4gPSAoc29ja2xlbl90KXNpemVvZihzdHJ1Y3Qgc29j
a2FkZHJfc3RvcmFnZSk7CisJCXVuc2lnbmVkIGludCBpbmZvdHlwZSA9IDA7CisJCXNvY2tsZW5f
dCBpbmZvbGVuID0gc2l6ZW9mKHN0cnVjdCBzY3RwX3JlY3Z2X3JuKTsKKwkJbWVtc2V0KCZybiwg
MCwgc2l6ZW9mKHN0cnVjdCBzY3RwX3JlY3Z2X3JuKSk7CisKKwkJbiA9IHVzcnNjdHBfcmVjdnYo
dXBjYWxsX3NvY2tldCwgYnVmLCBCVUZGRVJTSVpFLCAoc3RydWN0IHNvY2thZGRyICopICZhZGRy
LCAmbGVuLCAodm9pZCAqKSZybiwKKwkJCQkgJmluZm9sZW4sICZpbmZvdHlwZSwgJnJlY3ZfZmxh
Z3MpOworCQlpZiAobiA8IDApIHsKKwkJCXBlcnJvcigidXNyc2N0cF9yZWN2diIpOworCQkJZG9u
ZSA9IDE7CisJCQl1c3JzY3RwX2Nsb3NlKHVwY2FsbF9zb2NrZXQpOworCQkJcHJpbnRmKCJjbGll
bnQgc29ja2V0ICVwIGNsb3NlZFxuIiwgKHZvaWQgKil1cGNhbGxfc29ja2V0KTsKKwkJCXVwY2Fs
bF9zb2NrZXQgPSBOVUxMOworCQkJcmV0dXJuOworCQl9CisJCWlmIChuID09IDApIHsKKwkJCWRv
bmUgPSAxOworCQkJdXNyc2N0cF9jbG9zZSh1cGNhbGxfc29ja2V0KTsKKwkJCXByaW50ZigiY2xp
ZW50IHNvY2tldCAlcCBjbG9zZWRcbiIsICh2b2lkICopdXBjYWxsX3NvY2tldCk7CisJCQl1cGNh
bGxfc29ja2V0ID0gTlVMTDsKKwkJCXJldHVybjsKKwkJfQorCQlpZiAobiA+IDApIHsKKwkJCWlm
IChyZWN2X2ZsYWdzICYgTVNHX05PVElGSUNBVElPTikgeworCQkJCXByaW50ZigiTm90aWZpY2F0
aW9uIG9mIGxlbmd0aCAlZCByZWNlaXZlZC5cbiIsIChpbnQpbik7CisJCQl9IGVsc2UgeworCQkJ
CXByaW50ZigiZGF0YSBvZiBzaXplICVkIHJlY2VpdmVkXG4iLCAoaW50KW4pOworCQkJfQorCQl9
CisJCWZyZWUoYnVmKTsKKwl9CisKKwlpZiAoKGV2ZW50cyAmIFNDVFBfRVZFTlRfV1JJVEUpICYm
ICFkb25lKSB7CisJCXN0cnVjdCBzY3RwX3NuZGluZm8gc25kX2luZm87CisJCXNuZF9pbmZvLnNu
ZF9zaWQgPSAwOworCQlzbmRfaW5mby5zbmRfZmxhZ3MgPSAwOworCQlzbmRfaW5mby5zbmRfcHBp
ZCA9IDA7CisJCXNuZF9pbmZvLnNuZF9jb250ZXh0ID0gMDsKKwkJc25kX2luZm8uc25kX2Fzc29j
X2lkID0gMDsKKwkJaWYgKHVzcnNjdHBfc2VuZHYodXBjYWxsX3NvY2tldCwgYnVmZmVyLCBzdHJs
ZW4oYnVmZmVyKSwgTlVMTCwgMCwgJnNuZF9pbmZvLCAoc29ja2xlbl90KXNpemVvZihzdHJ1Y3Qg
c2N0cF9zbmRpbmZvKSwgU0NUUF9TRU5EVl9TTkRJTkZPLCAwKSA8IDApIHsKKwkJCWlmIChlcnJu
byAhPSBFQUdBSU4gJiYgZXJybm8gIT0gRVdPVUxEQkxPQ0spIHsKKwkJCQlzZW5kX2RvbmUgPSAx
OworCQkJCXVzcnNjdHBfY2xvc2UodXBjYWxsX3NvY2tldCk7CisJCQkJcHJpbnRmKCJjbGllbnQg
c29ja2V0ICVwIGNsb3NlZFxuIiwgKHZvaWQgKil1cGNhbGxfc29ja2V0KTsKKwkJCQlyZXR1cm47
CisJCQl9CisJCX0KKwl9CisKKwlyZXR1cm47Cit9CisKK2ludAorbWFpbihpbnQgYXJnYywgY2hh
ciAqYXJndltdKQoreworCXN0cnVjdCBzb2NrZXQgKmxpc3RlbmluZ19zb2NrZXQ7CisJc3RydWN0
IHNvY2thZGRyX2luNiBhZGRyOworCXN0cnVjdCBzY3RwX3VkcGVuY2FwcyBlbmNhcHM7CisJc3Ry
dWN0IHNjdHBfYXNzb2NfdmFsdWUgYXY7CisJY29uc3QgaW50IG9uID0gMTsKKworCWlmIChhcmdj
ID4gMSkgeworCQl1c3JzY3RwX2luaXQoYXRvaShhcmd2WzFdKSwgTlVMTCwgZGVidWdfcHJpbnRm
X3N0YWNrKTsKKwl9IGVsc2UgeworCQl1c3JzY3RwX2luaXQoOTg5OSwgTlVMTCwgZGVidWdfcHJp
bnRmX3N0YWNrKTsKKwl9CisjaWZkZWYgU0NUUF9ERUJVRworCXVzcnNjdHBfc3lzY3RsX3NldF9z
Y3RwX2RlYnVnX29uKFNDVFBfREVCVUdfTk9ORSk7CisjZW5kaWYKKwl1c3JzY3RwX3N5c2N0bF9z
ZXRfc2N0cF9ibGFja2hvbGUoMik7CisJdXNyc2N0cF9zeXNjdGxfc2V0X3NjdHBfbm9fY3N1bV9v
bl9sb29wYmFjaygwKTsKKworCWlmICgobGlzdGVuaW5nX3NvY2tldCA9IHVzcnNjdHBfc29ja2V0
KEFGX0lORVQ2LCBTT0NLX1NUUkVBTSwgSVBQUk9UT19TQ1RQLCBOVUxMLCBOVUxMLCAwLCBOVUxM
KSkgPT0gTlVMTCkgeworCQlwZXJyb3IoInVzcnNjdHBfc29ja2V0Iik7CisJfQorCXVzcnNjdHBf
c2V0X25vbl9ibG9ja2luZyhsaXN0ZW5pbmdfc29ja2V0LCAxKTsKKwlpZiAodXNyc2N0cF9zZXRz
b2Nrb3B0KGxpc3RlbmluZ19zb2NrZXQsIElQUFJPVE9fU0NUUCwgU0NUUF9JX1dBTlRfTUFQUEVE
X1Y0X0FERFIsIChjb25zdCB2b2lkKikmb24sIChzb2NrbGVuX3Qpc2l6ZW9mKGludCkpIDwgMCkg
eworCQlwZXJyb3IoInVzcnNjdHBfc2V0c29ja29wdCBTQ1RQX0lfV0FOVF9NQVBQRURfVjRfQURE
UiIpOworCX0KKwltZW1zZXQoJmF2LCAwLCBzaXplb2Yoc3RydWN0IHNjdHBfYXNzb2NfdmFsdWUp
KTsKKwlhdi5hc3NvY19pZCA9IFNDVFBfQUxMX0FTU09DOworCWF2LmFzc29jX3ZhbHVlID0gNDc7
CisKKwlpZiAodXNyc2N0cF9zZXRzb2Nrb3B0KGxpc3RlbmluZ19zb2NrZXQsIElQUFJPVE9fU0NU
UCwgU0NUUF9DT05URVhULCAoY29uc3Qgdm9pZCopJmF2LCAoc29ja2xlbl90KXNpemVvZihzdHJ1
Y3Qgc2N0cF9hc3NvY192YWx1ZSkpIDwgMCkgeworCQlwZXJyb3IoInVzcnNjdHBfc2V0c29ja29w
dCBTQ1RQX0NPTlRFWFQiKTsKKwl9CisJaWYgKHVzcnNjdHBfc2V0c29ja29wdChsaXN0ZW5pbmdf
c29ja2V0LCBJUFBST1RPX1NDVFAsIFNDVFBfUkVDVlJDVklORk8sICZvbiwgc2l6ZW9mKGludCkp
IDwgMCkgeworCQlwZXJyb3IoInVzcnNjdHBfc2V0c29ja29wdCBTQ1RQX1JFQ1ZSQ1ZJTkZPIik7
CisJfQorCWlmIChhcmdjID4gMikgeworCQltZW1zZXQoJmVuY2FwcywgMCwgc2l6ZW9mKHN0cnVj
dCBzY3RwX3VkcGVuY2FwcykpOworCQllbmNhcHMuc3VlX2FkZHJlc3Muc3NfZmFtaWx5ID0gQUZf
SU5FVDY7CisJCWVuY2Fwcy5zdWVfcG9ydCA9IGh0b25zKGF0b2koYXJndlsyXSkpOworCQlpZiAo
dXNyc2N0cF9zZXRzb2Nrb3B0KGxpc3RlbmluZ19zb2NrZXQsIElQUFJPVE9fU0NUUCwgU0NUUF9S
RU1PVEVfVURQX0VOQ0FQU19QT1JULCAoY29uc3Qgdm9pZCopJmVuY2FwcywgKHNvY2tsZW5fdClz
aXplb2Yoc3RydWN0IHNjdHBfdWRwZW5jYXBzKSkgPCAwKSB7CisJCQlwZXJyb3IoInVzcnNjdHBf
c2V0c29ja29wdCBTQ1RQX1JFTU9URV9VRFBfRU5DQVBTX1BPUlQiKTsKKwkJfQorCX0KKworCWlu
aXRCdWZmZXIoKTsKKworCW1lbXNldCgodm9pZCAqKSZhZGRyLCAwLCBzaXplb2Yoc3RydWN0IHNv
Y2thZGRyX2luNikpOworI2lmZGVmIEhBVkVfU0lONl9MRU4KKwlhZGRyLnNpbjZfbGVuID0gc2l6
ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpOworI2VuZGlmCisJYWRkci5zaW42X2ZhbWlseSA9IEFG
X0lORVQ2OworCWFkZHIuc2luNl9wb3J0ID0gaHRvbnMoUE9SVCk7CisJYWRkci5zaW42X2FkZHIg
PSBpbjZhZGRyX2FueTsKKwlpZiAodXNyc2N0cF9iaW5kKGxpc3RlbmluZ19zb2NrZXQsIChzdHJ1
Y3Qgc29ja2FkZHIgKikmYWRkciwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKSA8IDApIHsK
KwkJcGVycm9yKCJ1c3JzY3RwX2JpbmQiKTsKKwl9CisJaWYgKHVzcnNjdHBfbGlzdGVuKGxpc3Rl
bmluZ19zb2NrZXQsIDEpIDwgMCkgeworCQlwZXJyb3IoInVzcnNjdHBfbGlzdGVuIik7CisJfQor
CXVzcnNjdHBfc2V0X3VwY2FsbChsaXN0ZW5pbmdfc29ja2V0LCBoYW5kbGVfYWNjZXB0LCBOVUxM
KTsKKworCXdoaWxlICgxKSB7CisjaWZkZWYgX1dJTjMyCisJCVNsZWVwKDEqMTAwMCk7CisjZWxz
ZQorCQlzbGVlcCgxKTsKKyNlbmRpZgorCX0KKwl1c3JzY3RwX2Nsb3NlKGxpc3RlbmluZ19zb2Nr
ZXQpOworCXdoaWxlICh1c3JzY3RwX2ZpbmlzaCgpICE9IDApIHsKKyNpZmRlZiBfV0lOMzIKKwkJ
U2xlZXAoMTAwMCk7CisjZWxzZQorCQlzbGVlcCgxKTsKKyNlbmRpZgorCX0KKwlyZXR1cm4gKDAp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvY2xpZW50LmMgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9w
cm9ncmFtcy9jbGllbnQuYwppbmRleCAxZmU3NTc5MWRlMmZmYzdkYmUyZmNkNTIyYTZjNTBiOGM3
YThmYWFmLi44YTE1YTdiZTgyZDNmNDE4NzU1ZWM1N2E0NTU0N2IwMzQ2YjUyZTFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9jbGllbnQuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9j
bGllbnQuYwpAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgPGlvLmg+CiAjZW5kaWYKICNpbmNs
dWRlIDx1c3JzY3RwLmg+CisjaW5jbHVkZSAicHJvZ3JhbXNfaGVscGVyLmgiCiAKIGludCBkb25l
ID0gMDsKIApAQCAtNTgsMjA1ICs1OSw3IEBAIGludCBkb25lID0gMDsKIHR5cGVkZWYgY2hhciog
Y2FkZHJfdDsKICNlbmRpZgogCi1zdGF0aWMgdm9pZAotaGFuZGxlX2Fzc29jaWF0aW9uX2NoYW5n
ZV9ldmVudChzdHJ1Y3Qgc2N0cF9hc3NvY19jaGFuZ2UgKnNhYykKLXsKLQl1bnNpZ25lZCBpbnQg
aSwgbjsKIAotCXByaW50ZigiQXNzb2NpYXRpb24gY2hhbmdlICIpOwotCXN3aXRjaCAoc2FjLT5z
YWNfc3RhdGUpIHsKLQljYXNlIFNDVFBfQ09NTV9VUDoKLQkJcHJpbnRmKCJTQ1RQX0NPTU1fVVAi
KTsKLQkJYnJlYWs7Ci0JY2FzZSBTQ1RQX0NPTU1fTE9TVDoKLQkJcHJpbnRmKCJTQ1RQX0NPTU1f
TE9TVCIpOwotCQlicmVhazsKLQljYXNlIFNDVFBfUkVTVEFSVDoKLQkJcHJpbnRmKCJTQ1RQX1JF
U1RBUlQiKTsKLQkJYnJlYWs7Ci0JY2FzZSBTQ1RQX1NIVVRET1dOX0NPTVA6Ci0JCXByaW50Zigi
U0NUUF9TSFVURE9XTl9DT01QIik7Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9DQU5UX1NUUl9BU1NP
QzoKLQkJcHJpbnRmKCJTQ1RQX0NBTlRfU1RSX0FTU09DIik7Ci0JCWJyZWFrOwotCWRlZmF1bHQ6
Ci0JCXByaW50ZigiVU5LTk9XTiIpOwotCQlicmVhazsKLQl9Ci0JcHJpbnRmKCIsIHN0cmVhbXMg
KGluL291dCkgPSAoJXUvJXUpIiwKLQkgICAgICAgc2FjLT5zYWNfaW5ib3VuZF9zdHJlYW1zLCBz
YWMtPnNhY19vdXRib3VuZF9zdHJlYW1zKTsKLQluID0gc2FjLT5zYWNfbGVuZ3RoIC0gc2l6ZW9m
KHN0cnVjdCBzY3RwX2Fzc29jX2NoYW5nZSk7Ci0JaWYgKCgoc2FjLT5zYWNfc3RhdGUgPT0gU0NU
UF9DT01NX1VQKSB8fAotCSAgICAgKHNhYy0+c2FjX3N0YXRlID09IFNDVFBfUkVTVEFSVCkpICYm
IChuID4gMCkpIHsKLQkJcHJpbnRmKCIsIHN1cHBvcnRzIik7Ci0JCWZvciAoaSA9IDA7IGkgPCBu
OyBpKyspIHsKLQkJCXN3aXRjaCAoc2FjLT5zYWNfaW5mb1tpXSkgewotCQkJY2FzZSBTQ1RQX0FT
U09DX1NVUFBPUlRTX1BSOgotCQkJCXByaW50ZigiIFBSIik7Ci0JCQkJYnJlYWs7Ci0JCQljYXNl
IFNDVFBfQVNTT0NfU1VQUE9SVFNfQVVUSDoKLQkJCQlwcmludGYoIiBBVVRIIik7Ci0JCQkJYnJl
YWs7Ci0JCQljYXNlIFNDVFBfQVNTT0NfU1VQUE9SVFNfQVNDT05GOgotCQkJCXByaW50ZigiIEFT
Q09ORiIpOwotCQkJCWJyZWFrOwotCQkJY2FzZSBTQ1RQX0FTU09DX1NVUFBPUlRTX01VTFRJQlVG
OgotCQkJCXByaW50ZigiIE1VTFRJQlVGIik7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlIFNDVFBfQVNT
T0NfU1VQUE9SVFNfUkVfQ09ORklHOgotCQkJCXByaW50ZigiIFJFLUNPTkZJRyIpOwotCQkJCWJy
ZWFrOwotCQkJZGVmYXVsdDoKLQkJCQlwcmludGYoIiBVTktOT1dOKDB4JTAyeCkiLCBzYWMtPnNh
Y19pbmZvW2ldKTsKLQkJCQlicmVhazsKLQkJCX0KLQkJfQotCX0gZWxzZSBpZiAoKChzYWMtPnNh
Y19zdGF0ZSA9PSBTQ1RQX0NPTU1fTE9TVCkgfHwKLQkgICAgICAgICAgICAoc2FjLT5zYWNfc3Rh
dGUgPT0gU0NUUF9DQU5UX1NUUl9BU1NPQykpICYmIChuID4gMCkpIHsKLQkJcHJpbnRmKCIsIEFC
T1JUID0iKTsKLQkJZm9yIChpID0gMDsgaSA8IG47IGkrKykgewotCQkJcHJpbnRmKCIgMHglMDJ4
Iiwgc2FjLT5zYWNfaW5mb1tpXSk7Ci0JCX0KLQl9Ci0JcHJpbnRmKCIuXG4iKTsKLQlpZiAoKHNh
Yy0+c2FjX3N0YXRlID09IFNDVFBfQ0FOVF9TVFJfQVNTT0MpIHx8Ci0JICAgIChzYWMtPnNhY19z
dGF0ZSA9PSBTQ1RQX1NIVVRET1dOX0NPTVApIHx8Ci0JICAgIChzYWMtPnNhY19zdGF0ZSA9PSBT
Q1RQX0NPTU1fTE9TVCkpIHsKLQkJZXhpdCgwKTsKLQl9Ci0JcmV0dXJuOwotfQotCi1zdGF0aWMg
dm9pZAotaGFuZGxlX3BlZXJfYWRkcmVzc19jaGFuZ2VfZXZlbnQoc3RydWN0IHNjdHBfcGFkZHJf
Y2hhbmdlICpzcGMpCi17Ci0JY2hhciBhZGRyX2J1ZltJTkVUNl9BRERSU1RSTEVOXTsKLQljb25z
dCBjaGFyICphZGRyOwotCXN0cnVjdCBzb2NrYWRkcl9pbiAqc2luOwotCXN0cnVjdCBzb2NrYWRk
cl9pbjYgKnNpbjY7Ci0Jc3RydWN0IHNvY2thZGRyX2Nvbm4gKnNjb25uOwotCi0Jc3dpdGNoIChz
cGMtPnNwY19hYWRkci5zc19mYW1pbHkpIHsKLQljYXNlIEFGX0lORVQ6Ci0JCXNpbiA9IChzdHJ1
Y3Qgc29ja2FkZHJfaW4gKikmc3BjLT5zcGNfYWFkZHI7Ci0JCWFkZHIgPSBpbmV0X250b3AoQUZf
SU5FVCwgJnNpbi0+c2luX2FkZHIsIGFkZHJfYnVmLCBJTkVUX0FERFJTVFJMRU4pOwotCQlicmVh
azsKLQljYXNlIEFGX0lORVQ2OgotCQlzaW42ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKikmc3Bj
LT5zcGNfYWFkZHI7Ci0JCWFkZHIgPSBpbmV0X250b3AoQUZfSU5FVDYsICZzaW42LT5zaW42X2Fk
ZHIsIGFkZHJfYnVmLCBJTkVUNl9BRERSU1RSTEVOKTsKLQkJYnJlYWs7Ci0JY2FzZSBBRl9DT05O
OgotCQlzY29ubiA9IChzdHJ1Y3Qgc29ja2FkZHJfY29ubiAqKSZzcGMtPnNwY19hYWRkcjsKLSNp
ZmRlZiBfV0lOMzIKLQkJX3NucHJpbnRmKGFkZHJfYnVmLCBJTkVUNl9BRERSU1RSTEVOLCAiJXAi
LCBzY29ubi0+c2Nvbm5fYWRkcik7Ci0jZWxzZQotCQlzbnByaW50ZihhZGRyX2J1ZiwgSU5FVDZf
QUREUlNUUkxFTiwgIiVwIiwgc2Nvbm4tPnNjb25uX2FkZHIpOwotI2VuZGlmCi0JCWFkZHIgPSBh
ZGRyX2J1ZjsKLQkJYnJlYWs7Ci0JZGVmYXVsdDoKLSNpZmRlZiBfV0lOMzIKLQkJX3NucHJpbnRm
KGFkZHJfYnVmLCBJTkVUNl9BRERSU1RSTEVOLCAiVW5rbm93biBmYW1pbHkgJWQiLCBzcGMtPnNw
Y19hYWRkci5zc19mYW1pbHkpOwotI2Vsc2UKLQkJc25wcmludGYoYWRkcl9idWYsIElORVQ2X0FE
RFJTVFJMRU4sICJVbmtub3duIGZhbWlseSAlZCIsIHNwYy0+c3BjX2FhZGRyLnNzX2ZhbWlseSk7
Ci0jZW5kaWYKLQkJYWRkciA9IGFkZHJfYnVmOwotCQlicmVhazsKLQl9Ci0JcHJpbnRmKCJQZWVy
IGFkZHJlc3MgJXMgaXMgbm93ICIsIGFkZHIpOwotCXN3aXRjaCAoc3BjLT5zcGNfc3RhdGUpIHsK
LQljYXNlIFNDVFBfQUREUl9BVkFJTEFCTEU6Ci0JCXByaW50ZigiU0NUUF9BRERSX0FWQUlMQUJM
RSIpOwotCQlicmVhazsKLQljYXNlIFNDVFBfQUREUl9VTlJFQUNIQUJMRToKLQkJcHJpbnRmKCJT
Q1RQX0FERFJfVU5SRUFDSEFCTEUiKTsKLQkJYnJlYWs7Ci0JY2FzZSBTQ1RQX0FERFJfUkVNT1ZF
RDoKLQkJcHJpbnRmKCJTQ1RQX0FERFJfUkVNT1ZFRCIpOwotCQlicmVhazsKLQljYXNlIFNDVFBf
QUREUl9BRERFRDoKLQkJcHJpbnRmKCJTQ1RQX0FERFJfQURERUQiKTsKLQkJYnJlYWs7Ci0JY2Fz
ZSBTQ1RQX0FERFJfTUFERV9QUklNOgotCQlwcmludGYoIlNDVFBfQUREUl9NQURFX1BSSU0iKTsK
LQkJYnJlYWs7Ci0JY2FzZSBTQ1RQX0FERFJfQ09ORklSTUVEOgotCQlwcmludGYoIlNDVFBfQURE
Ul9DT05GSVJNRUQiKTsKLQkJYnJlYWs7Ci0JZGVmYXVsdDoKLQkJcHJpbnRmKCJVTktOT1dOIik7
Ci0JCWJyZWFrOwotCX0KLQlwcmludGYoIiAoZXJyb3IgPSAweCUwOHgpLlxuIiwgc3BjLT5zcGNf
ZXJyb3IpOwotCXJldHVybjsKLX0KLQotc3RhdGljIHZvaWQKLWhhbmRsZV9zZW5kX2ZhaWxlZF9l
dmVudChzdHJ1Y3Qgc2N0cF9zZW5kX2ZhaWxlZF9ldmVudCAqc3NmZSkKLXsKLQlzaXplX3QgaSwg
bjsKLQotCWlmIChzc2ZlLT5zc2ZlX2ZsYWdzICYgU0NUUF9EQVRBX1VOU0VOVCkgewotCQlwcmlu
dGYoIlVuc2VudCAiKTsKLQl9Ci0JaWYgKHNzZmUtPnNzZmVfZmxhZ3MgJiBTQ1RQX0RBVEFfU0VO
VCkgewotCQlwcmludGYoIlNlbnQgIik7Ci0JfQotCWlmIChzc2ZlLT5zc2ZlX2ZsYWdzICYgfihT
Q1RQX0RBVEFfU0VOVCB8IFNDVFBfREFUQV9VTlNFTlQpKSB7Ci0JCXByaW50ZigiKGZsYWdzID0g
JXgpICIsIHNzZmUtPnNzZmVfZmxhZ3MpOwotCX0KLQlwcmludGYoIm1lc3NhZ2Ugd2l0aCBQUElE
ID0gJXUsIFNJRCA9ICV1LCBmbGFnczogMHglMDR4IGR1ZSB0byBlcnJvciA9IDB4JTA4eCIsCi0J
ICAgICAgIG50b2hsKHNzZmUtPnNzZmVfaW5mby5zbmRfcHBpZCksIHNzZmUtPnNzZmVfaW5mby5z
bmRfc2lkLAotCSAgICAgICBzc2ZlLT5zc2ZlX2luZm8uc25kX2ZsYWdzLCBzc2ZlLT5zc2ZlX2Vy
cm9yKTsKLQluID0gc3NmZS0+c3NmZV9sZW5ndGggLSBzaXplb2Yoc3RydWN0IHNjdHBfc2VuZF9m
YWlsZWRfZXZlbnQpOwotCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLQkJcHJpbnRmKCIgMHgl
MDJ4Iiwgc3NmZS0+c3NmZV9kYXRhW2ldKTsKLQl9Ci0JcHJpbnRmKCIuXG4iKTsKLQlyZXR1cm47
Ci19Ci0KLXN0YXRpYyB2b2lkCi1oYW5kbGVfbm90aWZpY2F0aW9uKHVuaW9uIHNjdHBfbm90aWZp
Y2F0aW9uICpub3RpZiwgc2l6ZV90IG4pCi17Ci0JaWYgKG5vdGlmLT5zbl9oZWFkZXIuc25fbGVu
Z3RoICE9ICh1aW50MzJfdCluKSB7Ci0JCXJldHVybjsKLQl9Ci0Jc3dpdGNoIChub3RpZi0+c25f
aGVhZGVyLnNuX3R5cGUpIHsKLQljYXNlIFNDVFBfQVNTT0NfQ0hBTkdFOgotCQloYW5kbGVfYXNz
b2NpYXRpb25fY2hhbmdlX2V2ZW50KCYobm90aWYtPnNuX2Fzc29jX2NoYW5nZSkpOwotCQlicmVh
azsKLQljYXNlIFNDVFBfUEVFUl9BRERSX0NIQU5HRToKLQkJaGFuZGxlX3BlZXJfYWRkcmVzc19j
aGFuZ2VfZXZlbnQoJihub3RpZi0+c25fcGFkZHJfY2hhbmdlKSk7Ci0JCWJyZWFrOwotCWNhc2Ug
U0NUUF9SRU1PVEVfRVJST1I6Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9TSFVURE9XTl9FVkVOVDoK
LQkJYnJlYWs7Ci0JY2FzZSBTQ1RQX0FEQVBUQVRJT05fSU5ESUNBVElPTjoKLQkJYnJlYWs7Ci0J
Y2FzZSBTQ1RQX1BBUlRJQUxfREVMSVZFUllfRVZFTlQ6Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9B
VVRIRU5USUNBVElPTl9FVkVOVDoKLQkJYnJlYWs7Ci0JY2FzZSBTQ1RQX1NFTkRFUl9EUllfRVZF
TlQ6Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9OT1RJRklDQVRJT05TX1NUT1BQRURfRVZFTlQ6Ci0J
CWJyZWFrOwotCWNhc2UgU0NUUF9TRU5EX0ZBSUxFRF9FVkVOVDoKLQkJaGFuZGxlX3NlbmRfZmFp
bGVkX2V2ZW50KCYobm90aWYtPnNuX3NlbmRfZmFpbGVkX2V2ZW50KSk7Ci0JCWJyZWFrOwotCWNh
c2UgU0NUUF9TVFJFQU1fUkVTRVRfRVZFTlQ6Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9BU1NPQ19S
RVNFVF9FVkVOVDoKLQkJYnJlYWs7Ci0JY2FzZSBTQ1RQX1NUUkVBTV9DSEFOR0VfRVZFTlQ6Ci0J
CWJyZWFrOwotCWRlZmF1bHQ6Ci0JCWJyZWFrOwotCX0KLX0KIAogc3RhdGljIGludAogcmVjZWl2
ZV9jYihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCB1bmlvbiBzY3RwX3NvY2tzdG9yZSBhZGRyLCB2b2lk
ICpkYXRhLApAQCAtMjgyLDE2ICs4NSw2IEBAIHJlY2VpdmVfY2Ioc3RydWN0IHNvY2tldCAqc29j
aywgdW5pb24gc2N0cF9zb2Nrc3RvcmUgYWRkciwgdm9pZCAqZGF0YSwKIAlyZXR1cm4gKDEpOwog
fQogCi12b2lkCi1kZWJ1Z19wcmludGYoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCi17Ci0JdmFf
bGlzdCBhcDsKLQotCXZhX3N0YXJ0KGFwLCBmb3JtYXQpOwotCXZwcmludGYoZm9ybWF0LCBhcCk7
Ci0JdmFfZW5kKGFwKTsKLX0KLQogaW50CiBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiB7
CkBAIC0zMTQsMTQgKzEwNywxNiBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCXJl
dHVybiAoLTEpOwogCX0KIAlpZiAoYXJnYyA+IDQpIHsKLQkJdXNyc2N0cF9pbml0KGF0b2koYXJn
dls0XSksIE5VTEwsIGRlYnVnX3ByaW50Zik7CisJCXVzcnNjdHBfaW5pdChhdG9pKGFyZ3ZbNF0p
LCBOVUxMLCBkZWJ1Z19wcmludGZfc3RhY2spOwogCX0gZWxzZSB7Ci0JCXVzcnNjdHBfaW5pdCg5
ODk5LCBOVUxMLCBkZWJ1Z19wcmludGYpOworCQl1c3JzY3RwX2luaXQoOTg5OSwgTlVMTCwgZGVi
dWdfcHJpbnRmX3N0YWNrKTsKIAl9CiAjaWZkZWYgU0NUUF9ERUJVRwogCXVzcnNjdHBfc3lzY3Rs
X3NldF9zY3RwX2RlYnVnX29uKFNDVFBfREVCVUdfTk9ORSk7CiAjZW5kaWYKIAl1c3JzY3RwX3N5
c2N0bF9zZXRfc2N0cF9ibGFja2hvbGUoMik7CisJdXNyc2N0cF9zeXNjdGxfc2V0X3NjdHBfbm9f
Y3N1bV9vbl9sb29wYmFjaygwKTsKKwogCWlmICgoc29jayA9IHVzcnNjdHBfc29ja2V0KEFGX0lO
RVQ2LCBTT0NLX1NUUkVBTSwgSVBQUk9UT19TQ1RQLCByZWNlaXZlX2NiLCBOVUxMLCAwLCBOVUxM
KSkgPT0gTlVMTCkgewogCQlwZXJyb3IoInVzcnNjdHBfc29ja2V0Iik7CiAJfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvcHJvZ3JhbXMvY2xpZW50X3VwY2FsbC5jIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMv
Y2xpZW50X3VwY2FsbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkNTVhMzg1YTZjN2U3NmNkY2JmNzM5N2NjYmYw
YzA3ZjE0MDA1MjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9jbGllbnRf
dXBjYWxsLmMKQEAgLTAsMCArMSwzNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAx
MyBNaWNoYWVsIFR1ZXhlbgorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBwcm9qZWN0IG5vciB0aGUgbmFtZXMgb2YgaXRz
IGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBQUk9KRUNUIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuCUlOIE5P
IEVWRU5UIFNIQUxMIFRIRSBQUk9KRUNUIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgor
ICogU1VDSCBEQU1BR0UuCisgKi8KKworLyoKKyAqIFVzYWdlOiBjbGllbnRfdXBjYWxsIHJlbW90
ZV9hZGRyIHJlbW90ZV9wb3J0IFtsb2NhbF9wb3J0XSBbbG9jYWxfZW5jYXBzX3BvcnRdIFtyZW1v
dGVfZW5jYXBzX3BvcnRdCisgKi8KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3Rk
bGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkYXJnLmg+CisKKyNpZiAh
ZGVmaW5lZChfV0lOMzIpCisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3lzL3RpbWUu
aD4KKyNlbmRpZiAvKiAhZGVmaW5lZChfV0lOMzIpICovCisKKyNpbmNsdWRlIDxzeXMvdHlwZXMu
aD4KKworI2lmICFkZWZpbmVkKF9XSU4zMikKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5j
bHVkZSA8bmV0aW5ldC9pbi5oPgorI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorI2Vsc2UgLyogIWRl
ZmluZWQoX1dJTjMyKSAqLworI2luY2x1ZGUgPGlvLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPHVz
cnNjdHAuaD4KKyNpbmNsdWRlICJwcm9ncmFtc19oZWxwZXIuaCIKKyNpbmNsdWRlIDxmY250bC5o
PgorCisjZGVmaW5lIEJVRkZFUlNJWkUgICAgICAgICAgICAgICAgICgxPDwxNikKKworaW50IGRv
bmUgPSAwLCBpbnB1dF9kb25lID0gMCwgY29ubmVjdGVkID0gMDsKKworI2lmZGVmIF9XSU4zMgor
dHlwZWRlZiBjaGFyKiBjYWRkcl90OworI2VuZGlmCisKK2ludCBpbnB1dEF2YWlsYWJsZSh2b2lk
KQoreworCXN0cnVjdCB0aW1ldmFsIHR2OworCWZkX3NldCBmZHM7CisJdHYudHZfc2VjID0gMDsK
Kwl0di50dl91c2VjID0gMDsKKwlGRF9aRVJPKCZmZHMpOworI2lmIGRlZmluZWQoX1dJTjMyKSAm
JiAhZGVmaW5lZChfX01JTkdXMzJfXykKKwlGRF9TRVQoX2ZpbGVubyhzdGRpbiksICZmZHMpOwor
ICAJc2VsZWN0KF9maWxlbm8oc3RkaW4pICsgMSwgJmZkcywgTlVMTCwgTlVMTCwgJnR2KTsKKyNl
bHNlCisJRkRfU0VUKFNURElOX0ZJTEVOTywgJmZkcyk7CisJc2VsZWN0KFNURElOX0ZJTEVOTysx
LCAmZmRzLCBOVUxMLCBOVUxMLCAmdHYpOworI2VuZGlmCisgIHJldHVybiAoRkRfSVNTRVQoMCwg
JmZkcykpOworfQorCitzdGF0aWMgdm9pZAoraGFuZGxlX3VwY2FsbChzdHJ1Y3Qgc29ja2V0ICpz
b2NrLCB2b2lkICphcmcsIGludCBmbGdzKQoreworCWludCBldmVudHMgPSB1c3JzY3RwX2dldF9l
dmVudHMoc29jayk7CisKKwlpZiAoZXZlbnRzICYgU0NUUF9FVkVOVF9XUklURSAmJiAhZG9uZSAm
JiAhY29ubmVjdGVkKSB7CisJCWNvbm5lY3RlZCA9IDE7CisJCXByaW50Zigic29ja2V0IGNvbm5l
Y3RlZFxuIik7CisJCXJldHVybjsKKwl9CisKKwl3aGlsZSAoZXZlbnRzICYgU0NUUF9FVkVOVF9S
RUFEICYmICFkb25lICYmIGNvbm5lY3RlZCkgeworCQlzdHJ1Y3Qgc2N0cF9yZWN2dl9ybiBybjsK
KwkJc3NpemVfdCBuOworCQlzdHJ1Y3Qgc29ja2FkZHJfaW4gYWRkcjsKKwkJY2hhciAqYnVmID0g
Y2FsbG9jKDEsIEJVRkZFUlNJWkUpOworCQlpbnQgZmxhZ3MgPSAwOworCQlzb2NrbGVuX3QgbGVu
ID0gKHNvY2tsZW5fdClzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKTsKKwkJdW5zaWduZWQgaW50
IGluZm90eXBlID0gMDsKKwkJc29ja2xlbl90IGluZm9sZW4gPSBzaXplb2Yoc3RydWN0IHNjdHBf
cmVjdnZfcm4pOworCQltZW1zZXQoJnJuLCAwLCBzaXplb2Yoc3RydWN0IHNjdHBfcmVjdnZfcm4p
KTsKKwkJbiA9IHVzcnNjdHBfcmVjdnYoc29jaywgYnVmLCBCVUZGRVJTSVpFLCAoc3RydWN0IHNv
Y2thZGRyICopICZhZGRyLCAmbGVuLCAodm9pZCAqKSZybiwKKwkJCQkJICZpbmZvbGVuLCAmaW5m
b3R5cGUsICZmbGFncyk7CisKKwkJaWYgKG4gPiAwKSB7CisjaWZkZWYgX1dJTjMyCisJCQlfd3Jp
dGUoX2ZpbGVubyhzdGRvdXQpLCBidWYsICh1bnNpZ25lZCBpbnQpbik7CisjZWxzZQorCQkJaWYg
KHdyaXRlKGZpbGVubyhzdGRvdXQpLCBidWYsIG4pIDwgMCkgeworCQkJCXBlcnJvcigid3JpdGUi
KTsKKwkJCX0KKyNlbmRpZgorCQl9IGVsc2UgaWYgKG4gPT0gMCkgeworCQkJZG9uZSA9IDE7CisJ
CQlpbnB1dF9kb25lID0gMTsKKwkJCWZyZWUoYnVmKTsKKwkJCWJyZWFrOworCQl9IGVsc2Ugewor
CQkJcGVycm9yKCJcbnVzcnNjdHBfcmVjdnYiKTsKKwkJCWZyZWUgKGJ1Zik7CisJCQlicmVhazsK
KwkJfQorCQlmcmVlKGJ1Zik7CisJCWV2ZW50cyA9IHVzcnNjdHBfZ2V0X2V2ZW50cyhzb2NrKTsK
Kwl9CisJcmV0dXJuOworfQorCitpbnQKK21haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sK
KwlzdHJ1Y3Qgc29ja2V0ICpzb2NrOworCXN0cnVjdCBzb2NrYWRkciAqYWRkciwgKmFkZHJzOwor
CXN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyNDsKKwlzdHJ1Y3Qgc29ja2FkZHJfaW42IGFkZHI2Owor
CXN0cnVjdCBzY3RwX3VkcGVuY2FwcyBlbmNhcHM7CisJc3RydWN0IHNjdHBzdGF0IHN0YXQ7CisJ
Y2hhciBidWZmZXJbMjAwXTsKKwlpbnQgaSwgbjsKKworCWlmIChhcmdjID4gNCkgeworCQl1c3Jz
Y3RwX2luaXQoYXRvaShhcmd2WzRdKSwgTlVMTCwgZGVidWdfcHJpbnRmX3N0YWNrKTsKKwl9IGVs
c2UgeworCQl1c3JzY3RwX2luaXQoOTg5OSwgTlVMTCwgZGVidWdfcHJpbnRmX3N0YWNrKTsKKwl9
CisjaWZkZWYgU0NUUF9ERUJVRworCXVzcnNjdHBfc3lzY3RsX3NldF9zY3RwX2RlYnVnX29uKFND
VFBfREVCVUdfTk9ORSk7CisjZW5kaWYKKwl1c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9ibGFja2hv
bGUoMik7CisJdXNyc2N0cF9zeXNjdGxfc2V0X3NjdHBfbm9fY3N1bV9vbl9sb29wYmFjaygwKTsK
KworCWlmICgoc29jayA9IHVzcnNjdHBfc29ja2V0KEFGX0lORVQ2LCBTT0NLX1NUUkVBTSwgSVBQ
Uk9UT19TQ1RQLCBOVUxMLCBOVUxMLCAwLCBOVUxMKSkgPT0gTlVMTCkgeworCQlwZXJyb3IoInVz
cnNjdHBfc29ja2V0Iik7CisJCWV4aXQoMSk7CisJfQorCisJdXNyc2N0cF9zZXRfbm9uX2Jsb2Nr
aW5nKHNvY2ssIDEpOworCisJaWYgKGFyZ2MgPiAzKSB7CisJCW1lbXNldCgodm9pZCAqKSZhZGRy
NiwgMCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKTsKKyNpZmRlZiBIQVZFX1NJTjZfTEVO
CisJCWFkZHI2LnNpbjZfbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpOworI2VuZGlm
CisJCWFkZHI2LnNpbjZfZmFtaWx5ID0gQUZfSU5FVDY7CisJCWFkZHI2LnNpbjZfcG9ydCA9IGh0
b25zKGF0b2koYXJndlszXSkpOworCQlhZGRyNi5zaW42X2FkZHIgPSBpbjZhZGRyX2FueTsKKwkJ
aWYgKHVzcnNjdHBfYmluZChzb2NrLCAoc3RydWN0IHNvY2thZGRyICopJmFkZHI2LCBzaXplb2Yo
c3RydWN0IHNvY2thZGRyX2luNikpIDwgMCkgeworCQkJcGVycm9yKCJiaW5kIik7CisJCQl1c3Jz
Y3RwX2Nsb3NlKHNvY2spOworCQkJZXhpdCgxKTsKKwkJfQorCX0KKwlpZiAoYXJnYyA+IDUpIHsK
KwkJbWVtc2V0KCZlbmNhcHMsIDAsIHNpemVvZihzdHJ1Y3Qgc2N0cF91ZHBlbmNhcHMpKTsKKwkJ
ZW5jYXBzLnN1ZV9hZGRyZXNzLnNzX2ZhbWlseSA9IEFGX0lORVQ2OworCQllbmNhcHMuc3VlX3Bv
cnQgPSBodG9ucyhhdG9pKGFyZ3ZbNV0pKTsKKwkJaWYgKHVzcnNjdHBfc2V0c29ja29wdChzb2Nr
LCBJUFBST1RPX1NDVFAsIFNDVFBfUkVNT1RFX1VEUF9FTkNBUFNfUE9SVCwgKGNvbnN0IHZvaWQq
KSZlbmNhcHMsIChzb2NrbGVuX3Qpc2l6ZW9mKHN0cnVjdCBzY3RwX3VkcGVuY2FwcykpIDwgMCkg
eworCQkJcGVycm9yKCJzZXRzb2Nrb3B0Iik7CisJCQl1c3JzY3RwX2Nsb3NlKHNvY2spOworCQkJ
ZXhpdCgxKTsKKwkJfQorCX0KKworCW1lbXNldCgodm9pZCAqKSZhZGRyNCwgMCwgc2l6ZW9mKHN0
cnVjdCBzb2NrYWRkcl9pbikpOworCW1lbXNldCgodm9pZCAqKSZhZGRyNiwgMCwgc2l6ZW9mKHN0
cnVjdCBzb2NrYWRkcl9pbjYpKTsKKyNpZmRlZiBIQVZFX1NJTl9MRU4KKwlhZGRyNC5zaW5fbGVu
ID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NJTjZf
TEVOCisJYWRkcjYuc2luNl9sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNik7CisjZW5k
aWYKKwlhZGRyNC5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKKwlhZGRyNi5zaW42X2ZhbWlseSA9IEFG
X0lORVQ2OworCWFkZHI0LnNpbl9wb3J0ID0gaHRvbnMoYXRvaShhcmd2WzJdKSk7CisJYWRkcjYu
c2luNl9wb3J0ID0gaHRvbnMoYXRvaShhcmd2WzJdKSk7CisJaWYgKGluZXRfcHRvbihBRl9JTkVU
NiwgYXJndlsxXSwgJmFkZHI2LnNpbjZfYWRkcikgPT0gMSkgeworCQlpZiAodXNyc2N0cF9jb25u
ZWN0KHNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikmYWRkcjYsIHNpemVvZihzdHJ1Y3Qgc29ja2Fk
ZHJfaW42KSkgPCAwKSB7CisJCQlwZXJyb3IoInVzcnNjdHBfY29ubmVjdCIpOworCQl9CisJfSBl
bHNlIGlmIChpbmV0X3B0b24oQUZfSU5FVCwgYXJndlsxXSwgJmFkZHI0LnNpbl9hZGRyKSA9PSAx
KSB7CisJCWlmICh1c3JzY3RwX2Nvbm5lY3Qoc29jaywgKHN0cnVjdCBzb2NrYWRkciAqKSZhZGRy
NCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpIDwgMCkgeworCQkJcGVycm9yKCJ1c3JzY3Rw
X2Nvbm5lY3QiKTsKKwkJfQorCX0gZWxzZSB7CisJCXByaW50ZigiSWxsZWdhbCBkZXN0aW5hdGlv
biBhZGRyZXNzLlxuIik7CisJfQorCisJdXNyc2N0cF9zZXRfdXBjYWxsKHNvY2ssIGhhbmRsZV91
cGNhbGwsIE5VTEwpOworCWlmICgobiA9IHVzcnNjdHBfZ2V0bGFkZHJzKHNvY2ssIDAsICZhZGRy
cykpIDwgMCkgeworCQlwZXJyb3IoInVzcnNjdHBfZ2V0bGFkZHJzIik7CisJfSBlbHNlIHsKKwkJ
YWRkciA9IGFkZHJzOworCQlwcmludGYoIkxvY2FsIGFkZHJlc3NlczogIik7CisJCWZvciAoaSA9
IDA7IGkgPCBuOyBpKyspIHsKKwkJCWlmIChpID4gMCkgeworCQkJCXByaW50ZigiJXMiLCAiLCAi
KTsKKwkJCX0KKwkJCXN3aXRjaCAoYWRkci0+c2FfZmFtaWx5KSB7CisJCQljYXNlIEFGX0lORVQ6
CisJCQl7CisJCQkJc3RydWN0IHNvY2thZGRyX2luICpzaW47CisJCQkJY2hhciBidWZbSU5FVF9B
RERSU1RSTEVOXTsKKwkJCQljb25zdCBjaGFyICpuYW1lOworCisJCQkJc2luID0gKHN0cnVjdCBz
b2NrYWRkcl9pbiAqKWFkZHI7CisJCQkJbmFtZSA9IGluZXRfbnRvcChBRl9JTkVULCAmc2luLT5z
aW5fYWRkciwgYnVmLCBJTkVUX0FERFJTVFJMRU4pOworCQkJCXByaW50ZigiJXMiLCBuYW1lKTsK
KyNpZm5kZWYgSEFWRV9TQV9MRU4KKwkJCQlhZGRyID0gKHN0cnVjdCBzb2NrYWRkciAqKSgoY2Fk
ZHJfdClhZGRyICsgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOworI2VuZGlmCisJCQkJYnJl
YWs7CisJCQl9CisJCQljYXNlIEFGX0lORVQ2OgorCQkJeworCQkJCXN0cnVjdCBzb2NrYWRkcl9p
bjYgKnNpbjY7CisJCQkJY2hhciBidWZbSU5FVDZfQUREUlNUUkxFTl07CisJCQkJY29uc3QgY2hh
ciAqbmFtZTsKKworCQkJCXNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKWFkZHI7CisJCQkJ
bmFtZSA9IGluZXRfbnRvcChBRl9JTkVUNiwgJnNpbjYtPnNpbjZfYWRkciwgYnVmLCBJTkVUNl9B
RERSU1RSTEVOKTsKKwkJCQlwcmludGYoIiVzIiwgbmFtZSk7CisjaWZuZGVmIEhBVkVfU0FfTEVO
CisJCQkJYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHIgKikoKGNhZGRyX3QpYWRkciArIHNpemVvZihz
dHJ1Y3Qgc29ja2FkZHJfaW42KSk7CisjZW5kaWYKKwkJCQlicmVhazsKKwkJCX0KKwkJCWRlZmF1
bHQ6CisJCQkJYnJlYWs7CisJCQl9CisjaWZkZWYgSEFWRV9TQV9MRU4KKwkJCWFkZHIgPSAoc3Ry
dWN0IHNvY2thZGRyICopKChjYWRkcl90KWFkZHIgKyBhZGRyLT5zYV9sZW4pOworI2VuZGlmCisJ
CX0KKwkJcHJpbnRmKCIuXG4iKTsKKwkJdXNyc2N0cF9mcmVlbGFkZHJzKGFkZHJzKTsKKwl9CisJ
aWYgKChuID0gdXNyc2N0cF9nZXRwYWRkcnMoc29jaywgMCwgJmFkZHJzKSkgPCAwKSB7CisJCXBl
cnJvcigidXNyc2N0cF9nZXRwYWRkcnMiKTsKKwl9IGVsc2UgeworCQlhZGRyID0gYWRkcnM7CisJ
CXByaW50ZigiUGVlciBhZGRyZXNzZXM6ICIpOworCQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7
CisJCQlpZiAoaSA+IDApIHsKKwkJCQlwcmludGYoIiVzIiwgIiwgIik7CisJCQl9CisJCQlzd2l0
Y2ggKGFkZHItPnNhX2ZhbWlseSkgeworCQkJY2FzZSBBRl9JTkVUOgorCQkJeworCQkJCXN0cnVj
dCBzb2NrYWRkcl9pbiAqc2luOworCQkJCWNoYXIgYnVmW0lORVRfQUREUlNUUkxFTl07CisJCQkJ
Y29uc3QgY2hhciAqbmFtZTsKKworCQkJCXNpbiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilhZGRy
OworCQkJCW5hbWUgPSBpbmV0X250b3AoQUZfSU5FVCwgJnNpbi0+c2luX2FkZHIsIGJ1ZiwgSU5F
VF9BRERSU1RSTEVOKTsKKwkJCQlwcmludGYoIiVzIiwgbmFtZSk7CisjaWZuZGVmIEhBVkVfU0Ff
TEVOCisJCQkJYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHIgKikoKGNhZGRyX3QpYWRkciArIHNpemVv
ZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKKyNlbmRpZgorCQkJCWJyZWFrOworCQkJfQorCQkJY2Fz
ZSBBRl9JTkVUNjoKKwkJCXsKKwkJCQlzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW42OworCQkJCWNo
YXIgYnVmW0lORVQ2X0FERFJTVFJMRU5dOworCQkJCWNvbnN0IGNoYXIgKm5hbWU7CisKKwkJCQlz
aW42ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilhZGRyOworCQkJCW5hbWUgPSBpbmV0X250b3Ao
QUZfSU5FVDYsICZzaW42LT5zaW42X2FkZHIsIGJ1ZiwgSU5FVDZfQUREUlNUUkxFTik7CisJCQkJ
cHJpbnRmKCIlcyIsIG5hbWUpOworI2lmbmRlZiBIQVZFX1NBX0xFTgorCQkJCWFkZHIgPSAoc3Ry
dWN0IHNvY2thZGRyICopKChjYWRkcl90KWFkZHIgKyBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2lu
NikpOworI2VuZGlmCisJCQkJYnJlYWs7CisJCQl9CisJCQlkZWZhdWx0OgorCQkJCWJyZWFrOwor
CQkJfQorI2lmZGVmIEhBVkVfU0FfTEVOCisJCQlhZGRyID0gKHN0cnVjdCBzb2NrYWRkciAqKSgo
Y2FkZHJfdClhZGRyICsgYWRkci0+c2FfbGVuKTsKKyNlbmRpZgorCQl9CisJCXByaW50ZigiLlxu
Iik7CisJCXVzcnNjdHBfZnJlZXBhZGRycyhhZGRycyk7CisJfQorCXdoaWxlICghZG9uZSAmJiAh
aW5wdXRfZG9uZSkgeworCQlpZiAoaW5wdXRBdmFpbGFibGUoKSkgeworCQkJaWYgKGZnZXRzKGJ1
ZmZlciwgc2l6ZW9mKGJ1ZmZlciksIHN0ZGluKSAhPSBOVUxMKSB7CisJCQkJYnVmZmVyW3N0cmxl
bihidWZmZXIpXSA9ICdcMCc7CisJCQkJdXNyc2N0cF9zZW5kdihzb2NrLCBidWZmZXIsIHN0cmxl
bihidWZmZXIpLCBOVUxMLCAwLCBOVUxMLCAwLCBTQ1RQX1NFTkRWX05PSU5GTywgMCk7CisJCQl9
IGVsc2UgeworCQkJCWlmICh1c3JzY3RwX3NodXRkb3duKHNvY2ssIFNIVVRfV1IpIDwgMCkgewor
CQkJCQlwZXJyb3IoInVzcnNjdHBfc2h1dGRvd24iKTsKKwkJCQl9CisJCQkJYnJlYWs7CisJCQl9
CisJCX0KKwl9CisjaWZkZWYgX1dJTjMyCisJU2xlZXAoMTAwMCk7CisjZWxzZQorCXNsZWVwKDEp
OworI2VuZGlmCisJdXNyc2N0cF9jbG9zZShzb2NrKTsKKworCXVzcnNjdHBfZ2V0X3N0YXQoJnN0
YXQpOworCXByaW50ZigiTnVtYmVyIG9mIHBhY2tldHMgKHNlbnQvcmVjZWl2ZWQpOiAoJXUvJXUp
LlxuIiwKKwkgICAgICAgc3RhdC5zY3Rwc19vdXRwYWNrZXRzLCBzdGF0LnNjdHBzX2lucGFja2V0
cyk7CisJd2hpbGUgKHVzcnNjdHBfZmluaXNoKCkgIT0gMCkgeworI2lmZGVmIF9XSU4zMgorCQlT
bGVlcCgxMDAwKTsKKyNlbHNlCisJCXNsZWVwKDEpOworI2VuZGlmCisJfQorCXByaW50ZigiQ2xp
ZW50IGZpbmlzaGVkXG4iKTsKKwlyZXR1cm4oMCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9w
cm9ncmFtcy9kYXl0aW1lX3NlcnZlci5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvZGF5dGltZV9zZXJ2
ZXIuYwppbmRleCAzNWNhZGY1M2QxMTkwM2UxZDk0YWY4Mjk1Y2ExZjIwMjc1NmI3MmQzLi5jYWIy
NzU1NDAxODRmZGQ2N2EwMjUzODc4ODI5MGU5NTAxMmFiOTdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi9wcm9ncmFtcy9kYXl0aW1lX3NlcnZlci5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2RheXRp
bWVfc2VydmVyLmMKQEAgLTUyLDIxICs1MiwxMiBAQAogI2luY2x1ZGUgPGFycGEvaW5ldC5oPgog
I2VuZGlmCiAjaW5jbHVkZSA8dXNyc2N0cC5oPgorI2luY2x1ZGUgInByb2dyYW1zX2hlbHBlci5o
IgogCiAjZGVmaW5lIFBPUlQgMTMKICNkZWZpbmUgREFZVElNRV9QUElEIDQwCiAjZGVmaW5lIFNM
RUVQIDEKIAotdm9pZAotZGVidWdfcHJpbnRmKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQotewot
CXZhX2xpc3QgYXA7Ci0KLQl2YV9zdGFydChhcCwgZm9ybWF0KTsKLQl2cHJpbnRmKGZvcm1hdCwg
YXApOwotCXZhX2VuZChhcCk7Ci19Ci0KIGludAogbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltd
KQogewpAQCAtNzksMTQgKzcwLDE1IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAlz
dHJ1Y3Qgc2N0cF9zbmRpbmZvIHNuZGluZm87CiAKIAlpZiAoYXJnYyA+IDEpIHsKLQkJdXNyc2N0
cF9pbml0KGF0b2koYXJndlsxXSksIE5VTEwsIGRlYnVnX3ByaW50Zik7CisJCXVzcnNjdHBfaW5p
dChhdG9pKGFyZ3ZbMV0pLCBOVUxMLCBkZWJ1Z19wcmludGZfc3RhY2spOwogCX0gZWxzZSB7Ci0J
CXVzcnNjdHBfaW5pdCg5ODk5LCBOVUxMLCBkZWJ1Z19wcmludGYpOworCQl1c3JzY3RwX2luaXQo
OTg5OSwgTlVMTCwgZGVidWdfcHJpbnRmX3N0YWNrKTsKIAl9CiAjaWZkZWYgU0NUUF9ERUJVRwog
CXVzcnNjdHBfc3lzY3RsX3NldF9zY3RwX2RlYnVnX29uKFNDVFBfREVCVUdfTk9ORSk7CiAjZW5k
aWYKIAl1c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9ibGFja2hvbGUoMik7CisJdXNyc2N0cF9zeXNj
dGxfc2V0X3NjdHBfbm9fY3N1bV9vbl9sb29wYmFjaygwKTsKIAogCWlmICgoc29jayA9IHVzcnNj
dHBfc29ja2V0KEFGX0lORVQsIFNPQ0tfU1RSRUFNLCBJUFBST1RPX1NDVFAsIE5VTEwsIE5VTEws
IDAsIE5VTEwpKSA9PSBOVUxMKSB7CiAJCXBlcnJvcigidXNyc2N0cF9zb2NrZXQiKTsKQEAgLTEx
OSwxMCArMTExLDEyIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJfQogCQl0aW1l
KCZub3cpOwogI2lmZGVmIF9XSU4zMgotCQlfc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVy
KSwgIiVzIiwgY3RpbWUoJm5vdykpOworCQlpZiAoX3NucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1
ZmZlciksICIlcyIsIGN0aW1lKCZub3cpKSA8IDApIHsKICNlbHNlCi0JCXNucHJpbnRmKGJ1ZmZl
ciwgc2l6ZW9mKGJ1ZmZlciksICIlcyIsIGN0aW1lKCZub3cpKTsKKwkJaWYgKHNucHJpbnRmKGJ1
ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICIlcyIsIGN0aW1lKCZub3cpKSA8IDApIHsKICNlbmRpZgor
CQkJYnVmZmVyWzBdID0gJ1wwJzsKKwkJfQogCQlzbmRpbmZvLnNuZF9zaWQgPSAwOwogCQlzbmRp
bmZvLnNuZF9mbGFncyA9IDA7CiAJCXNuZGluZm8uc25kX3BwaWQgPSBodG9ubChEQVlUSU1FX1BQ
SUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvZGF5dGltZV9zZXJ2ZXJfdXBjYWxs
LmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9kYXl0aW1lX3NlcnZlcl91cGNhbGwuYwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44NzAxN2NmMmZlNDgzMDE1NmFlNzM0OTA1YTg2OTM3NGVhM2Q1ZWNiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3Jz
Y3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvZGF5dGltZV9zZXJ2ZXJfdXBjYWxsLmMKQEAgLTAsMCAr
MSwxNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxMyBNaWNoYWVsIFR1ZXhlbgor
ICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBu
YW1lIG9mIHRoZSBwcm9qZWN0IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICog
ICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBQUk9KRUNU
IEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuCUlOIE5PIEVWRU5UIFNIQUxMIFRIRSBQ
Uk9KRUNUIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisg
KiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAor
ICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisg
Ki8KKworLyoKKyAqIFVzYWdlOiBkYXl0aW1lX3NlcnZlcl91cGNhbGwgW2xvY2FsX2VuY2Fwc19w
b3J0XSBbcmVtb3RlX2VuY2Fwc19wb3J0XQorICovCisKKyNpZmRlZiBfV0lOMzIKKyNkZWZpbmUg
X0NSVF9TRUNVUkVfTk9fV0FSTklOR1MKKyNlbmRpZgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5j
bHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkYXJnLmg+
CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2lmbmRlZiBfV0lO
MzIKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVk
ZSA8bmV0aW5ldC9pbi5oPgorI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorI2VuZGlmCisjaW5jbHVk
ZSA8dXNyc2N0cC5oPgorI2luY2x1ZGUgInByb2dyYW1zX2hlbHBlci5oIgorCisjZGVmaW5lIERB
WVRJTUVfUFBJRCA0MAorI2RlZmluZSBQT1JUIDEzCisKK3N0YXRpYyB2b2lkCitoYW5kbGVfYWNj
ZXB0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHZvaWQgKmRhdGEsIGludCBmbGFncykKK3sKKwlzdHJ1
Y3Qgc29ja2V0ICpjb25uX3NvY2s7CisJY2hhciBidWZmZXJbODBdOworCXRpbWVfdCBub3c7CisJ
c29ja2xlbl90IGFkZHJfbGVuID0gMDsKKwlzdHJ1Y3Qgc2N0cF9zbmRpbmZvIHNuZGluZm87CisK
KwlpZiAoKChjb25uX3NvY2sgPSB1c3JzY3RwX2FjY2VwdChzb2NrLCBOVUxMLCAmYWRkcl9sZW4p
KSA9PSBOVUxMKQorCSAgICAmJiAoZXJybm8gIT0gRUlOUFJPR1JFU1MpKSB7CisJCXBlcnJvcigi
dXNyc2N0cF9hY2NlcHQiKTsKKwkJcmV0dXJuOworCX0KKwl0aW1lKCZub3cpOworI2lmZGVmIF9X
SU4zMgorCQlpZiAoX3NucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICIlcyIsIGN0aW1l
KCZub3cpKSA8IDApIHsKKyNlbHNlCisJCWlmIChzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZm
ZXIpLCAiJXMiLCBjdGltZSgmbm93KSkgPCAwKSB7CisjZW5kaWYKKwkJCWJ1ZmZlclswXSA9ICdc
MCc7CisJCX0KKwkJc25kaW5mby5zbmRfc2lkID0gMDsKKwkJc25kaW5mby5zbmRfZmxhZ3MgPSAw
OworCQlzbmRpbmZvLnNuZF9wcGlkID0gaHRvbmwoREFZVElNRV9QUElEKTsKKwkJc25kaW5mby5z
bmRfY29udGV4dCA9IDA7CisJCXNuZGluZm8uc25kX2Fzc29jX2lkID0gMDsKKwkJdXNyc2N0cF9z
ZW5kdihjb25uX3NvY2ssIGJ1ZmZlciwgc3RybGVuKGJ1ZmZlciksIE5VTEwsIDAsICh2b2lkICop
JnNuZGluZm8sCisJCSAgICAgICAgICAgICAgKHNvY2tsZW5fdClzaXplb2Yoc3RydWN0IHNjdHBf
c25kaW5mbyksIFNDVFBfU0VORFZfU05ESU5GTywgMCk7CisJCXVzcnNjdHBfY2xvc2UoY29ubl9z
b2NrKTsKK30KKworaW50CittYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJc3RydWN0
IHNvY2tldCAqc29jazsKKwlzdHJ1Y3Qgc29ja2FkZHJfaW4gYWRkcjsKKwlzdHJ1Y3Qgc2N0cF91
ZHBlbmNhcHMgZW5jYXBzOworCisJaWYgKGFyZ2MgPiAxKSB7CisJCXVzcnNjdHBfaW5pdChhdG9p
KGFyZ3ZbMV0pLCBOVUxMLCBkZWJ1Z19wcmludGZfc3RhY2spOworCX0gZWxzZSB7CisJCXVzcnNj
dHBfaW5pdCg5ODk5LCBOVUxMLCBkZWJ1Z19wcmludGZfc3RhY2spOworCX0KKyNpZmRlZiBTQ1RQ
X0RFQlVHCisJdXNyc2N0cF9zeXNjdGxfc2V0X3NjdHBfZGVidWdfb24oU0NUUF9ERUJVR19OT05F
KTsKKyNlbmRpZgorCXVzcnNjdHBfc3lzY3RsX3NldF9zY3RwX2JsYWNraG9sZSgyKTsKKwl1c3Jz
Y3RwX3N5c2N0bF9zZXRfc2N0cF9ub19jc3VtX29uX2xvb3BiYWNrKDApOworCisJaWYgKChzb2Nr
ID0gdXNyc2N0cF9zb2NrZXQoQUZfSU5FVCwgU09DS19TVFJFQU0sIElQUFJPVE9fU0NUUCwgTlVM
TCwgTlVMTCwgMCwgTlVMTCkpID09IE5VTEwpIHsKKwkJcGVycm9yKCJ1c3JzY3RwX3NvY2tldCIp
OworCX0KKwl1c3JzY3RwX3NldF9ub25fYmxvY2tpbmcoc29jaywgMSk7CisJaWYgKGFyZ2MgPiAy
KSB7CisJCW1lbXNldCgmZW5jYXBzLCAwLCBzaXplb2Yoc3RydWN0IHNjdHBfdWRwZW5jYXBzKSk7
CisJCWVuY2Fwcy5zdWVfYWRkcmVzcy5zc19mYW1pbHkgPSBBRl9JTkVUOworCQllbmNhcHMuc3Vl
X3BvcnQgPSBodG9ucyhhdG9pKGFyZ3ZbMl0pKTsKKwkJaWYgKHVzcnNjdHBfc2V0c29ja29wdChz
b2NrLCBJUFBST1RPX1NDVFAsIFNDVFBfUkVNT1RFX1VEUF9FTkNBUFNfUE9SVCwgKGNvbnN0IHZv
aWQqKSZlbmNhcHMsIChzb2NrbGVuX3Qpc2l6ZW9mKHN0cnVjdCBzY3RwX3VkcGVuY2FwcykpIDwg
MCkgeworCQkJcGVycm9yKCJzZXRzb2Nrb3B0Iik7CisJCX0KKwl9CisJbWVtc2V0KCh2b2lkICop
JmFkZHIsIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKKyNpZmRlZiBIQVZFX1NJTl9M
RU4KKwlhZGRyLnNpbl9sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKTsKKyNlbmRpZgor
CWFkZHIuc2luX2ZhbWlseSA9IEFGX0lORVQ7CisJYWRkci5zaW5fcG9ydCA9IGh0b25zKFBPUlQp
OworCWFkZHIuc2luX2FkZHIuc19hZGRyID0gaHRvbmwoSU5BRERSX0FOWSk7CisJaWYgKHVzcnNj
dHBfYmluZChzb2NrLCAoc3RydWN0IHNvY2thZGRyICopJmFkZHIsIHNpemVvZihzdHJ1Y3Qgc29j
a2FkZHJfaW4pKSA8IDApIHsKKwkJcGVycm9yKCJ1c3JzY3RwX2JpbmQiKTsKKwl9CisJaWYgKHVz
cnNjdHBfbGlzdGVuKHNvY2ssIDEpIDwgMCkgeworCQlwZXJyb3IoInVzcnNjdHBfbGlzdGVuIik7
CisJfQorCisJdXNyc2N0cF9zZXRfdXBjYWxsKHNvY2ssIGhhbmRsZV9hY2NlcHQsIE5VTEwpOwor
CisJd2hpbGUgKDEpIHsKKyNpZmRlZiBfV0lOMzIKKwkJU2xlZXAoMSoxMDAwKTsKKyNlbHNlCisJ
CXNsZWVwKDEpOworI2VuZGlmCisJfQorCXVzcnNjdHBfY2xvc2Uoc29jayk7CisJd2hpbGUgKHVz
cnNjdHBfZmluaXNoKCkgIT0gMCkgeworI2lmZGVmIF9XSU4zMgorCQlTbGVlcCgxMDAwKTsKKyNl
bHNlCisJCXNsZWVwKDEpOworI2VuZGlmCisJfQorCXJldHVybiAoMCk7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAv
dXNyc2N0cGxpYi9wcm9ncmFtcy9kaXNjYXJkX3NlcnZlci5jIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMv
ZGlzY2FyZF9zZXJ2ZXIuYwppbmRleCAzOTg0NmRkZWQwNGI5OTA5YTE4YzM0MDNiNjhlYjZhYjY3
ZGJkMDUzLi40ODcwODlkNTNlN2Q2OGVjMjBhMzY4OGMyMzAwY2Y1NGI4ZjM0NjE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9kaXNjYXJkX3NlcnZlci5jCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3By
b2dyYW1zL2Rpc2NhcmRfc2VydmVyLmMKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlIDxhcnBh
L2luZXQuaD4KICNlbmRpZgogI2luY2x1ZGUgPHVzcnNjdHAuaD4KKyNpbmNsdWRlICJwcm9ncmFt
c19oZWxwZXIuaCIKIAogI2RlZmluZSBQT1JUIDkKICNkZWZpbmUgQlVGRkVSX1NJWkUgMTAyNDAK
QEAgLTg1LDE1ICs4NiwxNyBAQCByZWNlaXZlX2NiKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHVuaW9u
IHNjdHBfc29ja3N0b3JlIGFkZHIsIHZvaWQgKmRhdGEsCiAjZW5kaWYKIAkJCWNhc2UgQUZfQ09O
TjoKICNpZmRlZiBfV0lOMzIKLQkJCQlfc25wcmludGYobmFtZWJ1ZiwgSU5FVDZfQUREUlNUUkxF
TiwgIiVwIiwgYWRkci5zY29ubi5zY29ubl9hZGRyKTsKKwkJCQlpZiAoX3NucHJpbnRmKG5hbWVi
dWYsIElORVQ2X0FERFJTVFJMRU4sICIlcCIsIGFkZHIuc2Nvbm4uc2Nvbm5fYWRkcikgPCAwKSB7
CiAjZWxzZQotCQkJCXNucHJpbnRmKG5hbWVidWYsIElORVQ2X0FERFJTVFJMRU4sICIlcCIsIGFk
ZHIuc2Nvbm4uc2Nvbm5fYWRkcik7CisJCQkJaWYgKHNucHJpbnRmKG5hbWVidWYsIElORVQ2X0FE
RFJTVFJMRU4sICIlcCIsIGFkZHIuc2Nvbm4uc2Nvbm5fYWRkcikgPCAwKSB7CiAjZW5kaWYKKwkJ
CQkJbmFtZWJ1ZlswXSA9ICdcMCc7CisJCQkJfQogCQkJCW5hbWUgPSBuYW1lYnVmOwogCQkJCXBv
cnQgPSBudG9ocyhhZGRyLnNjb25uLnNjb25uX3BvcnQpOwogCQkJCWJyZWFrOwogCQkJZGVmYXVs
dDoKLQkJCQluYW1lID0gTlVMTDsKKwkJCQluYW1lID0gIj8/PyI7CiAJCQkJcG9ydCA9IDA7CiAJ
CQkJYnJlYWs7CiAJCQl9CkBAIC0xMTIsMTYgKzExNSw2IEBAIHJlY2VpdmVfY2Ioc3RydWN0IHNv
Y2tldCAqc29jaywgdW5pb24gc2N0cF9zb2Nrc3RvcmUgYWRkciwgdm9pZCAqZGF0YSwKIAlyZXR1
cm4gKDEpOwogfQogCi12b2lkCi1kZWJ1Z19wcmludGYoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4p
Ci17Ci0JdmFfbGlzdCBhcDsKLQotCXZhX3N0YXJ0KGFwLCBmb3JtYXQpOwotCXZwcmludGYoZm9y
bWF0LCBhcCk7Ci0JdmFfZW5kKGFwKTsKLX0KLQogaW50CiBtYWluKGludCBhcmdjLCBjaGFyICph
cmd2W10pCiB7CkBAIC0xNDgsMTQgKzE0MSwxNSBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2
W10pCiAJdW5zaWduZWQgaW50IGluZm90eXBlOwogCiAJaWYgKGFyZ2MgPiAxKSB7Ci0JCXVzcnNj
dHBfaW5pdChhdG9pKGFyZ3ZbMV0pLCBOVUxMLCBkZWJ1Z19wcmludGYpOworCQl1c3JzY3RwX2lu
aXQoYXRvaShhcmd2WzFdKSwgTlVMTCwgZGVidWdfcHJpbnRmX3N0YWNrKTsKIAl9IGVsc2Ugewot
CQl1c3JzY3RwX2luaXQoOTg5OSwgTlVMTCwgZGVidWdfcHJpbnRmKTsKKwkJdXNyc2N0cF9pbml0
KDk4OTksIE5VTEwsIGRlYnVnX3ByaW50Zl9zdGFjayk7CiAJfQogI2lmZGVmIFNDVFBfREVCVUcK
IAl1c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9kZWJ1Z19vbihTQ1RQX0RFQlVHX0FMTCk7CiAjZW5k
aWYKIAl1c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9ibGFja2hvbGUoMik7CisJdXNyc2N0cF9zeXNj
dGxfc2V0X3NjdHBfbm9fY3N1bV9vbl9sb29wYmFjaygwKTsKIAogCWlmICgoc29jayA9IHVzcnNj
dHBfc29ja2V0KEFGX0lORVQ2LCBTT0NLX1NFUVBBQ0tFVCwgSVBQUk9UT19TQ1RQLCB1c2VfY2I/
cmVjZWl2ZV9jYjpOVUxMLCBOVUxMLCAwLCBOVUxMKSkgPT0gTlVMTCkgewogCQlwZXJyb3IoInVz
cnNjdHBfc29ja2V0Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9kaXNjYXJkX3Nl
cnZlcl91cGNhbGwuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2Rpc2NhcmRfc2VydmVyX3VwY2FsbC5j
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg4MWJmMGQ5NGVlMDAzODE2NWZmMTBhYzVhOGNiZmZkZTY4OTY4YzYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9kaXNjYXJkX3NlcnZlcl91cGNhbGwu
YwpAQCAtMCwwICsxLDIzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDEzIE1pY2hh
ZWwgVHVleGVuCisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5l
aXRoZXIgdGhlIG5hbWUgb2YgdGhlIHByb2plY3Qgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJp
YnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIFBST0pFQ1QgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4JSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIFBST0pFQ1QgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNI
IERBTUFHRS4KKyAqLworCisvKgorICogVXNhZ2U6IGRpc2NhcmRfc2VydmVyX3VwY2FsbCBbbG9j
YWxfZW5jYXBzX3BvcnRdIFtyZW1vdGVfZW5jYXBzX3BvcnRdCisgKi8KKworI2lmZGVmIF9XSU4z
MgorI2RlZmluZSBfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUworI2VuZGlmCisjaW5jbHVkZSA8c3Rk
aW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRl
IDxzdGRhcmcuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpZm5kZWYgX1dJTjMyCisjaW5j
bHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2luY2x1ZGUgPG5ldGlu
ZXQvaW4uaD4KKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHVzcnNj
dHAuaD4KKyNpbmNsdWRlICJwcm9ncmFtc19oZWxwZXIuaCIKKworI2RlZmluZSBCVUZGRVJTSVpF
IDEwMjQwCisjZGVmaW5lIFBPUlQgOQorCisKK3N0YXRpYyB2b2lkCitoYW5kbGVfdXBjYWxsKHN0
cnVjdCBzb2NrZXQgKnNvY2ssIHZvaWQgKmRhdGEsIGludCBmbGdzKQoreworCWNoYXIgbmFtZWJ1
ZltJTkVUNl9BRERSU1RSTEVOXTsKKwljb25zdCBjaGFyICpuYW1lOworCXVpbnQxNl90IHBvcnQ7
CisJY2hhciAqYnVmOworCWludCBldmVudHM7CisKKwl3aGlsZSAoKGV2ZW50cyA9IHVzcnNjdHBf
Z2V0X2V2ZW50cyhzb2NrKSkgJiYgKGV2ZW50cyAmIFNDVFBfRVZFTlRfUkVBRCkpIHsKKwkJc3Ry
dWN0IHNjdHBfcmVjdnZfcm4gcm47CisJCXNzaXplX3QgbjsKKwkJc3RydWN0IHNvY2thZGRyX3N0
b3JhZ2UgYWRkcjsKKwkJYnVmID0gbWFsbG9jKEJVRkZFUlNJWkUpOworCQlpbnQgZmxhZ3MgPSAw
OworCQlzb2NrbGVuX3QgbGVuID0gKHNvY2tsZW5fdClzaXplb2Yoc3RydWN0IHNvY2thZGRyX3N0
b3JhZ2UpOworCQl1bnNpZ25lZCBpbnQgaW5mb3R5cGUgPSAwOworCQlzb2NrbGVuX3QgaW5mb2xl
biA9IHNpemVvZihzdHJ1Y3Qgc2N0cF9yZWN2dl9ybik7CisJCW1lbXNldCgmcm4sIDAsIHNpemVv
ZihzdHJ1Y3Qgc2N0cF9yZWN2dl9ybikpOworCQluID0gdXNyc2N0cF9yZWN2dihzb2NrLCBidWYs
IEJVRkZFUlNJWkUsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJmFkZHIsICZsZW4sICh2b2lkICopJnJu
LAorCQkgICAgICAgICAgICAgJmluZm9sZW4sICZpbmZvdHlwZSwgJmZsYWdzKTsKKwkJaWYgKG4g
PCAwKSB7CisJCQlwZXJyb3IoInVzcnNjdHBfcmVjdnYiKTsKKwkJfQorCQlpZiAobiA+IDApIHsK
KwkJCWlmIChmbGFncyAmIE1TR19OT1RJRklDQVRJT04pIHsKKwkJCQlwcmludGYoIk5vdGlmaWNh
dGlvbiBvZiBsZW5ndGggJWQgcmVjZWl2ZWQuXG4iLCAoaW50KW4pOworCQkJfSBlbHNlIHsKKy8q
CisjaWZkZWYgX1dJTjMyCisJCQkJX3dyaXRlKF9maWxlbm8oc3Rkb3V0KSwgYnVmLCAodW5zaWdu
ZWQgaW50KW4pOworI2Vsc2UKKwkJCQlpZiAod3JpdGUoZmlsZW5vKHN0ZG91dCksIGJ1Ziwgbikg
PCAwKSB7CisJCQkJCXBlcnJvcigid3JpdGUiKTsKKwkJCQl9CisjZW5kaWYKKyovCisJCQkJc3dp
dGNoIChhZGRyLnNzX2ZhbWlseSkgeworI2lmZGVmIElORVQKKwkJCQljYXNlIEFGX0lORVQ6IHsK
KwkJCQkJc3RydWN0IHNvY2thZGRyX2luIGFkZHI0OworCQkJCQltZW1jcHkoJmFkZHI0LCAoc3Ry
dWN0IHNvY2thZGRyX2luICopJmFkZHIsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKKwkJ
CQkJbmFtZSA9IGluZXRfbnRvcChBRl9JTkVULCAmYWRkcjQuc2luX2FkZHIsIG5hbWVidWYsIElO
RVRfQUREUlNUUkxFTik7CisJCQkJCXBvcnQgPSBudG9ocyhhZGRyNC5zaW5fcG9ydCk7CisJCQkJ
CWJyZWFrOworCQkJCQl9CisjZW5kaWYKKyNpZmRlZiBJTkVUNgorCQkJCWNhc2UgQUZfSU5FVDY6
IHsKKwkJCQkJc3RydWN0IHNvY2thZGRyX2luNiBhZGRyNjsKKwkJCQkJbWVtY3B5KCZhZGRyNiwg
KHN0cnVjdCBzb2NrYWRkcl9pbjYgKikmYWRkciwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYp
KTsKKwkJCQkJbmFtZSA9IGluZXRfbnRvcChBRl9JTkVUNiwgJmFkZHI2LnNpbjZfYWRkciwgbmFt
ZWJ1ZiwgSU5FVDZfQUREUlNUUkxFTiksCisJCQkJCXBvcnQgPSBudG9ocyhhZGRyNi5zaW42X3Bv
cnQpOworCQkJCQlicmVhazsKKwkJCQkJfQorI2VuZGlmCisJCQkJZGVmYXVsdDoKKwkJCQkJbmFt
ZSA9IE5VTEw7CisJCQkJCXBvcnQgPSAwOworCQkJCQlicmVhazsKKwkJCQl9CisKKwkJCQlpZiAo
bmFtZSA9PSBOVUxMKSB7CisJCQkJCXByaW50ZigiaW5ldF9udG9wIGZhaWxlZFxuIik7CisJCQkJ
CWZyZWUoYnVmKTsKKwkJCQkJcmV0dXJuOworCQkJCX0KKworCQkJCXByaW50ZigiTXNnIG9mIGxl
bmd0aCAlZCByZWNlaXZlZCBmcm9tICVzOiV1IG9uIHN0cmVhbSAlZCB3aXRoIFNTTiAldSBhbmQg
VFNOICV1LCBQUElEICV1LCBjb250ZXh0ICV1LlxuIiwKKwkJCQkgICAgICAgKGludCluLAorCQkJ
CSAgICAgICBuYW1lYnVmLAorCQkJCSAgICAgICBwb3J0LAorCQkJCSAgICAgICBybi5yZWN2dl9y
Y3ZpbmZvLnJjdl9zaWQsCisJCQkJICAgICAgIHJuLnJlY3Z2X3JjdmluZm8ucmN2X3NzbiwKKwkJ
CQkgICAgICAgcm4ucmVjdnZfcmN2aW5mby5yY3ZfdHNuLAorCQkJCSAgICAgICBudG9obChybi5y
ZWN2dl9yY3ZpbmZvLnJjdl9wcGlkKSwKKwkJCQkgICAgICAgcm4ucmVjdnZfcmN2aW5mby5yY3Zf
Y29udGV4dCk7CisJCQl9CisJCX0KKwkJZnJlZShidWYpOworCX0KKwlyZXR1cm47Cit9CisKK2lu
dAorbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCXN0cnVjdCBzb2NrZXQgKnNvY2s7
CisJc3RydWN0IHNvY2thZGRyX2luNiBhZGRyOworCXN0cnVjdCBzY3RwX3VkcGVuY2FwcyBlbmNh
cHM7CisJc3RydWN0IHNjdHBfZXZlbnQgZXZlbnQ7CisJdWludDE2X3QgZXZlbnRfdHlwZXNbXSA9
IHtTQ1RQX0FTU09DX0NIQU5HRSwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgIFNDVFBfUEVF
Ul9BRERSX0NIQU5HRSwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgIFNDVFBfUkVNT1RFX0VS
Uk9SLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgU0NUUF9TSFVURE9XTl9FVkVOVCwKKwkg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNDVFBfQURBUFRBVElPTl9JTkRJQ0FUSU9OLAorCSAg
ICAgICAgICAgICAgICAgICAgICAgICAgU0NUUF9QQVJUSUFMX0RFTElWRVJZX0VWRU5UfTsKKwl1
bnNpZ25lZCBpbnQgaTsKKwlzdHJ1Y3Qgc2N0cF9hc3NvY192YWx1ZSBhdjsKKwljb25zdCBpbnQg
b24gPSAxOworCisJaWYgKGFyZ2MgPiAxKSB7CisJCXVzcnNjdHBfaW5pdChhdG9pKGFyZ3ZbMV0p
LCBOVUxMLCBkZWJ1Z19wcmludGZfc3RhY2spOworCX0gZWxzZSB7CisJCXVzcnNjdHBfaW5pdCg5
ODk5LCBOVUxMLCBkZWJ1Z19wcmludGZfc3RhY2spOworCX0KKyNpZmRlZiBTQ1RQX0RFQlVHCisJ
dXNyc2N0cF9zeXNjdGxfc2V0X3NjdHBfZGVidWdfb24oU0NUUF9ERUJVR19OT05FKTsKKyNlbmRp
ZgorCXVzcnNjdHBfc3lzY3RsX3NldF9zY3RwX2JsYWNraG9sZSgyKTsKKwl1c3JzY3RwX3N5c2N0
bF9zZXRfc2N0cF9ub19jc3VtX29uX2xvb3BiYWNrKDApOworCisJaWYgKChzb2NrID0gdXNyc2N0
cF9zb2NrZXQoQUZfSU5FVDYsIFNPQ0tfU0VRUEFDS0VULCBJUFBST1RPX1NDVFAsIE5VTEwsIE5V
TEwsIDAsIE5VTEwpKSA9PSBOVUxMKSB7CisJCXBlcnJvcigidXNyc2N0cF9zb2NrZXQiKTsKKwl9
CisJdXNyc2N0cF9zZXRfbm9uX2Jsb2NraW5nKHNvY2ssIDEpOworCWlmICh1c3JzY3RwX3NldHNv
Y2tvcHQoc29jaywgSVBQUk9UT19TQ1RQLCBTQ1RQX0lfV0FOVF9NQVBQRURfVjRfQUREUiwgKGNv
bnN0IHZvaWQqKSZvbiwgKHNvY2tsZW5fdClzaXplb2YoaW50KSkgPCAwKSB7CisJCXBlcnJvcigi
dXNyc2N0cF9zZXRzb2Nrb3B0IFNDVFBfSV9XQU5UX01BUFBFRF9WNF9BRERSIik7CisJfQorCW1l
bXNldCgmYXYsIDAsIHNpemVvZihzdHJ1Y3Qgc2N0cF9hc3NvY192YWx1ZSkpOworCWF2LmFzc29j
X2lkID0gU0NUUF9BTExfQVNTT0M7CisJYXYuYXNzb2NfdmFsdWUgPSA0NzsKKworCWlmICh1c3Jz
Y3RwX3NldHNvY2tvcHQoc29jaywgSVBQUk9UT19TQ1RQLCBTQ1RQX0NPTlRFWFQsIChjb25zdCB2
b2lkKikmYXYsIChzb2NrbGVuX3Qpc2l6ZW9mKHN0cnVjdCBzY3RwX2Fzc29jX3ZhbHVlKSkgPCAw
KSB7CisJCXBlcnJvcigidXNyc2N0cF9zZXRzb2Nrb3B0IFNDVFBfQ09OVEVYVCIpOworCX0KKwlp
ZiAodXNyc2N0cF9zZXRzb2Nrb3B0KHNvY2ssIElQUFJPVE9fU0NUUCwgU0NUUF9SRUNWUkNWSU5G
TywgJm9uLCBzaXplb2YoaW50KSkgPCAwKSB7CisJCXBlcnJvcigidXNyc2N0cF9zZXRzb2Nrb3B0
IFNDVFBfUkVDVlJDVklORk8iKTsKKwl9CisJaWYgKGFyZ2MgPiAyKSB7CisJCW1lbXNldCgmZW5j
YXBzLCAwLCBzaXplb2Yoc3RydWN0IHNjdHBfdWRwZW5jYXBzKSk7CisJCWVuY2Fwcy5zdWVfYWRk
cmVzcy5zc19mYW1pbHkgPSBBRl9JTkVUNjsKKwkJZW5jYXBzLnN1ZV9wb3J0ID0gaHRvbnMoYXRv
aShhcmd2WzJdKSk7CisJCWlmICh1c3JzY3RwX3NldHNvY2tvcHQoc29jaywgSVBQUk9UT19TQ1RQ
LCBTQ1RQX1JFTU9URV9VRFBfRU5DQVBTX1BPUlQsIChjb25zdCB2b2lkKikmZW5jYXBzLCAoc29j
a2xlbl90KXNpemVvZihzdHJ1Y3Qgc2N0cF91ZHBlbmNhcHMpKSA8IDApIHsKKwkJCXBlcnJvcigi
dXNyc2N0cF9zZXRzb2Nrb3B0IFNDVFBfUkVNT1RFX1VEUF9FTkNBUFNfUE9SVCIpOworCQl9CisJ
fQorCW1lbXNldCgmZXZlbnQsIDAsIHNpemVvZihldmVudCkpOworCWV2ZW50LnNlX2Fzc29jX2lk
ID0gU0NUUF9GVVRVUkVfQVNTT0M7CisJZXZlbnQuc2Vfb24gPSAxOworCWZvciAoaSA9IDA7IGkg
PCAodW5zaWduZWQgaW50KShzaXplb2YoZXZlbnRfdHlwZXMpL3NpemVvZih1aW50MTZfdCkpOyBp
KyspIHsKKwkJZXZlbnQuc2VfdHlwZSA9IGV2ZW50X3R5cGVzW2ldOworCQlpZiAodXNyc2N0cF9z
ZXRzb2Nrb3B0KHNvY2ssIElQUFJPVE9fU0NUUCwgU0NUUF9FVkVOVCwgJmV2ZW50LCBzaXplb2Yo
c3RydWN0IHNjdHBfZXZlbnQpKSA8IDApIHsKKwkJCXBlcnJvcigidXNyc2N0cF9zZXRzb2Nrb3B0
IFNDVFBfRVZFTlQiKTsKKwkJfQorCX0KKworCXVzcnNjdHBfc2V0X3VwY2FsbChzb2NrLCBoYW5k
bGVfdXBjYWxsLCBOVUxMKTsKKworCW1lbXNldCgodm9pZCAqKSZhZGRyLCAwLCBzaXplb2Yoc3Ry
dWN0IHNvY2thZGRyX2luNikpOworI2lmZGVmIEhBVkVfU0lONl9MRU4KKwlhZGRyLnNpbjZfbGVu
ID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpOworI2VuZGlmCisJYWRkci5zaW42X2ZhbWls
eSA9IEFGX0lORVQ2OworCWFkZHIuc2luNl9wb3J0ID0gaHRvbnMoUE9SVCk7CisJYWRkci5zaW42
X2FkZHIgPSBpbjZhZGRyX2FueTsKKwlpZiAodXNyc2N0cF9iaW5kKHNvY2ssIChzdHJ1Y3Qgc29j
a2FkZHIgKikmYWRkciwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKSA8IDApIHsKKwkJcGVy
cm9yKCJ1c3JzY3RwX2JpbmQiKTsKKwl9CisJaWYgKHVzcnNjdHBfbGlzdGVuKHNvY2ssIDEpIDwg
MCkgeworCQlwZXJyb3IoInVzcnNjdHBfbGlzdGVuIik7CisJfQorCXdoaWxlICgxKSB7CisjaWZk
ZWYgX1dJTjMyCisJCQlTbGVlcCgxKjEwMDApOworI2Vsc2UKKwkJCXNsZWVwKDEpOworI2VuZGlm
CisJfQorCXVzcnNjdHBfY2xvc2Uoc29jayk7CisJd2hpbGUgKHVzcnNjdHBfZmluaXNoKCkgIT0g
MCkgeworI2lmZGVmIF9XSU4zMgorCQlTbGVlcCgxMDAwKTsKKyNlbHNlCisJCXNsZWVwKDEpOwor
I2VuZGlmCisJfQorCXJldHVybiAoMCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFt
cy9lY2hvX3NlcnZlci5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvZWNob19zZXJ2ZXIuYwppbmRleCA2
NGYxMmM1NmQ5OTEyYTQ4N2JkMGI2Zjc5ZTA4OGMzNzM5MTRhY2E4Li5kYTY5NzY1ZGRlNjYzNGYx
OTk0NzEzOGVhOTZjZDM4YjVlY2VmZWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9l
Y2hvX3NlcnZlci5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2VjaG9fc2VydmVyLmMKQEAgLTMw
LDcgKzMwLDcgQEAKIAogLyoKICAqIFVzYWdlOiBlY2hvX3NlcnZlciBbbG9jYWxfZW5jYXBzX3Bv
cnRdIFtyZW1vdGVfZW5jYXBzX3BvcnRdCi0gKiAKKyAqCiAgKiBFeGFtcGxlCiAgKiBTZXJ2ZXI6
ICQgLi9lY2hvX3NlcnZlciAxMTExMSAyMjIyMgogICogQ2xpZW50OiAkIC4vY2xpZW50IDEyNy4w
LjAuMSA3IDAgMjIyMjIgMTExMTEKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlIDxhcnBhL2lu
ZXQuaD4KICNlbmRpZgogI2luY2x1ZGUgPHVzcnNjdHAuaD4KKyNpbmNsdWRlICJwcm9ncmFtc19o
ZWxwZXIuaCIKIAogI2RlZmluZSBQT1JUIDcKICNkZWZpbmUgQlVGRkVSX1NJWkUgMTAyNDAKQEAg
LTg1LDE1ICs4NiwxNyBAQCByZWNlaXZlX2NiKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHVuaW9uIHNj
dHBfc29ja3N0b3JlIGFkZHIsIHZvaWQgKmRhdGEsCiAjZW5kaWYKIAkJCWNhc2UgQUZfQ09OTjoK
ICNpZmRlZiBfV0lOMzIKLQkJCQlfc25wcmludGYobmFtZWJ1ZiwgSU5FVDZfQUREUlNUUkxFTiwg
IiVwIiwgYWRkci5zY29ubi5zY29ubl9hZGRyKTsKKwkJCQlpZiAoX3NucHJpbnRmKG5hbWVidWYs
IElORVQ2X0FERFJTVFJMRU4sICIlcCIsIGFkZHIuc2Nvbm4uc2Nvbm5fYWRkcikgPCAwKSB7CiAj
ZWxzZQotCQkJCXNucHJpbnRmKG5hbWVidWYsIElORVQ2X0FERFJTVFJMRU4sICIlcCIsIGFkZHIu
c2Nvbm4uc2Nvbm5fYWRkcik7CisJCQkJaWYgKHNucHJpbnRmKG5hbWVidWYsIElORVQ2X0FERFJT
VFJMRU4sICIlcCIsIGFkZHIuc2Nvbm4uc2Nvbm5fYWRkcikgPCAwKSB7CiAjZW5kaWYKKwkJCQkJ
bmFtZWJ1ZlswXSA9ICdcMCc7CisJCQkJfQogCQkJCW5hbWUgPSBuYW1lYnVmOwogCQkJCXBvcnQg
PSBudG9ocyhhZGRyLnNjb25uLnNjb25uX3BvcnQpOwogCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoK
LQkJCQluYW1lID0gTlVMTDsKKwkJCQluYW1lID0gIj8/PyI7CiAJCQkJcG9ydCA9IDA7CiAJCQkJ
YnJlYWs7CiAJCQl9CkBAIC0xMjcsMTYgKzEzMCw2IEBAIHJlY2VpdmVfY2Ioc3RydWN0IHNvY2tl
dCAqc29jaywgdW5pb24gc2N0cF9zb2Nrc3RvcmUgYWRkciwgdm9pZCAqZGF0YSwKIAlyZXR1cm4g
KDEpOwogfQogCi12b2lkCi1kZWJ1Z19wcmludGYoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCi17
Ci0JdmFfbGlzdCBhcDsKLQotCXZhX3N0YXJ0KGFwLCBmb3JtYXQpOwotCXZwcmludGYoZm9ybWF0
LCBhcCk7Ci0JdmFfZW5kKGFwKTsKLX0KLQogaW50CiBtYWluKGludCBhcmdjLCBjaGFyICphcmd2
W10pCiB7CkBAIC0xNjMsMTQgKzE1NiwxNSBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10p
CiAJdW5zaWduZWQgaW50IGluZm90eXBlOwogCiAJaWYgKGFyZ2MgPiAxKSB7Ci0JCXVzcnNjdHBf
aW5pdChhdG9pKGFyZ3ZbMV0pLCBOVUxMLCBkZWJ1Z19wcmludGYpOworCQl1c3JzY3RwX2luaXQo
YXRvaShhcmd2WzFdKSwgTlVMTCwgZGVidWdfcHJpbnRmX3N0YWNrKTsKIAl9IGVsc2UgewotCQl1
c3JzY3RwX2luaXQoOTg5OSwgTlVMTCwgZGVidWdfcHJpbnRmKTsKKwkJdXNyc2N0cF9pbml0KDk4
OTksIE5VTEwsIGRlYnVnX3ByaW50Zl9zdGFjayk7CiAJfQogI2lmZGVmIFNDVFBfREVCVUcKIAl1
c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9kZWJ1Z19vbihTQ1RQX0RFQlVHX05PTkUpOwogI2VuZGlm
CiAJdXNyc2N0cF9zeXNjdGxfc2V0X3NjdHBfYmxhY2tob2xlKDIpOworCXVzcnNjdHBfc3lzY3Rs
X3NldF9zY3RwX25vX2NzdW1fb25fbG9vcGJhY2soMCk7CiAKIAlpZiAoKHNvY2sgPSB1c3JzY3Rw
X3NvY2tldChBRl9JTkVUNiwgU09DS19TRVFQQUNLRVQsIElQUFJPVE9fU0NUUCwgdXNlX2NiP3Jl
Y2VpdmVfY2I6TlVMTCwgTlVMTCwgMCwgTlVMTCkpID09IE5VTEwpIHsKIAkJcGVycm9yKCJ1c3Jz
Y3RwX3NvY2tldCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvZWNob19zZXJ2ZXJf
dXBjYWxsLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9lY2hvX3NlcnZlcl91cGNhbGwuYwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44ZWNkZmU0YzkzNzJjOTgyNDNkOTkyNzQ2NTgwNGQ2ODViZTRmMzFkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91
c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvZWNob19zZXJ2ZXJfdXBjYWxsLmMKQEAgLTAsMCAr
MSwyNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMyBNaWNoYWVsIFR1ZXhlbgor
ICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBu
YW1lIG9mIHRoZSBwcm9qZWN0IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICog
ICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBQUk9KRUNU
IEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuCUlOIE5PIEVWRU5UIFNIQUxMIFRIRSBQ
Uk9KRUNUIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisg
KiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAor
ICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisg
Ki8KKworLyoKKyAqIFVzYWdlOiBkaXNjYXJkX3NlcnZlcl91cGNhbGwgW2xvY2FsX2VuY2Fwc19w
b3J0XSBbcmVtb3RlX2VuY2Fwc19wb3J0XQorICovCisKKyNpZmRlZiBfV0lOMzIKKyNkZWZpbmUg
X0NSVF9TRUNVUkVfTk9fV0FSTklOR1MKKyNpbmNsdWRlIDxpby5oPgorI2VuZGlmCisjaW5jbHVk
ZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNp
bmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpZm5kZWYgX1dJTjMy
CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2luY2x1ZGUg
PG5ldGluZXQvaW4uaD4KKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyNlbmRpZgorI2luY2x1ZGUg
PHVzcnNjdHAuaD4KKyNpbmNsdWRlICJwcm9ncmFtc19oZWxwZXIuaCIKKworI2RlZmluZSBCVUZG
RVJTSVpFIDEwMjQwCisjZGVmaW5lIFBPUlQgNworCitzdGF0aWMgdm9pZAoraGFuZGxlX3VwY2Fs
bChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCB2b2lkICpkYXRhLCBpbnQgZmxncykKK3sKKwljaGFyIG5h
bWVidWZbSU5FVDZfQUREUlNUUkxFTl07CisJY29uc3QgY2hhciAqbmFtZTsKKwl1aW50MTZfdCBw
b3J0OworCWNoYXIgKmJ1ZjsKKwlpbnQgZXZlbnRzOworCisJd2hpbGUgKChldmVudHMgPSB1c3Jz
Y3RwX2dldF9ldmVudHMoc29jaykpICYmIChldmVudHMgJiBTQ1RQX0VWRU5UX1JFQUQpKSB7CisJ
CXN0cnVjdCBzY3RwX3JlY3Z2X3JuIHJuOworCQlzc2l6ZV90IG47CisJCXN0cnVjdCBzb2NrYWRk
cl9zdG9yYWdlIGFkZHI7CisJCWJ1ZiA9IG1hbGxvYyhCVUZGRVJTSVpFKTsKKwkJaW50IGZsYWdz
ID0gMDsKKwkJc29ja2xlbl90IGxlbiA9IChzb2NrbGVuX3Qpc2l6ZW9mKHN0cnVjdCBzb2NrYWRk
cl9zdG9yYWdlKTsKKwkJdW5zaWduZWQgaW50IGluZm90eXBlID0gMDsKKwkJc29ja2xlbl90IGlu
Zm9sZW4gPSBzaXplb2Yoc3RydWN0IHNjdHBfcmVjdnZfcm4pOworCQltZW1zZXQoJnJuLCAwLCBz
aXplb2Yoc3RydWN0IHNjdHBfcmVjdnZfcm4pKTsKKwkJbiA9IHVzcnNjdHBfcmVjdnYoc29jaywg
YnVmLCBCVUZGRVJTSVpFLCAoc3RydWN0IHNvY2thZGRyICopICZhZGRyLCAmbGVuLCAodm9pZCAq
KSZybiwKKwkJICAgICAgICAgICAgICZpbmZvbGVuLCAmaW5mb3R5cGUsICZmbGFncyk7CisJCWlm
IChuIDwgMCkgeworCQkJcGVycm9yKCJ1c3JzY3RwX3JlY3Z2Iik7CisJCX0KKwkJaWYgKG4gPT0g
MCkgeworCQkJdXNyc2N0cF9jbG9zZShzb2NrKTsKKwkJCXJldHVybjsKKwkJfQorCQlpZiAobiA+
IDApIHsKKwkJCWlmIChmbGFncyAmIE1TR19OT1RJRklDQVRJT04pIHsKKwkJCQlwcmludGYoIk5v
dGlmaWNhdGlvbiBvZiBsZW5ndGggJWQgcmVjZWl2ZWQuXG4iLCAoaW50KW4pOworCQkJfSBlbHNl
IHsKKyNpZmRlZiBfV0lOMzIKKwkJCQlfd3JpdGUoX2ZpbGVubyhzdGRvdXQpLCBidWYsICh1bnNp
Z25lZCBpbnQpbik7CisjZWxzZQorCQkJCWlmICh3cml0ZShmaWxlbm8oc3Rkb3V0KSwgYnVmLCBu
KSA8IDApIHsKKwkJCQkJcGVycm9yKCJ3cml0ZSIpOworCQkJCX0KKyNlbmRpZgorCQkJCXN3aXRj
aCAoYWRkci5zc19mYW1pbHkpIHsKKyNpZmRlZiBJTkVUCisJCQkJCWNhc2UgQUZfSU5FVDogewor
CQkJCQkJc3RydWN0IHNvY2thZGRyX2luIGFkZHI0OworCQkJCQkJbWVtY3B5KCZhZGRyNCwgKHN0
cnVjdCBzb2NrYWRkcl9pbiAqKSZhZGRyLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7CisJ
CQkJCQluYW1lID0gaW5ldF9udG9wKEFGX0lORVQsICZhZGRyNC5zaW5fYWRkciwgbmFtZWJ1Ziwg
SU5FVF9BRERSU1RSTEVOKTsKKwkJCQkJCXBvcnQgPSBudG9ocyhhZGRyNC5zaW5fcG9ydCk7CisJ
CQkJCQlicmVhazsKKwkJCQkJCX0KKyNlbmRpZgorI2lmZGVmIElORVQ2CisJCQkJCWNhc2UgQUZf
SU5FVDY6IHsKKwkJCQkJCXN0cnVjdCBzb2NrYWRkcl9pbjYgYWRkcjY7CisJCQkJCQltZW1jcHko
JmFkZHI2LCAoc3RydWN0IHNvY2thZGRyX2luNiAqKSZhZGRyLCBzaXplb2Yoc3RydWN0IHNvY2th
ZGRyX2luNikpOworCQkJCQkJbmFtZSA9IGluZXRfbnRvcChBRl9JTkVUNiwgJmFkZHI2LnNpbjZf
YWRkciwgbmFtZWJ1ZiwgSU5FVDZfQUREUlNUUkxFTiksCisJCQkJCQlwb3J0ID0gbnRvaHMoYWRk
cjYuc2luNl9wb3J0KTsKKwkJCQkJCWJyZWFrOworCQkJCQkJfQorI2VuZGlmCisJCQkJCWRlZmF1
bHQ6CisJCQkJCQluYW1lID0gTlVMTDsKKwkJCQkJCXBvcnQgPSAwOworCQkJCQkJYnJlYWs7CisJ
CQkJCX0KKworCQkJCQlpZiAobmFtZSA9PSBOVUxMKSB7CisJCQkJCQlwcmludGYoImluZXRfbnRv
cCBmYWlsZWRcbiIpOworCQkJCQkJZnJlZShidWYpOworCQkJCQkJcmV0dXJuOworCQkJCQl9CisK
KwkJCQlwcmludGYoIk1zZyBvZiBsZW5ndGggJWQgcmVjZWl2ZWQgZnJvbSAlczoldSBvbiBzdHJl
YW0gJWQgd2l0aCBTU04gJXUgYW5kIFRTTiAldSwgUFBJRCAldSwgY29udGV4dCAldS5cbiIsCisJ
CQkJICAgICAgIChpbnQpbiwKKwkJCQkgICAgICAgbmFtZWJ1ZiwKKwkJCQkgICAgICAgcG9ydCwK
KwkJCQkgICAgICAgcm4ucmVjdnZfcmN2aW5mby5yY3Zfc2lkLAorCQkJCSAgICAgICBybi5yZWN2
dl9yY3ZpbmZvLnJjdl9zc24sCisJCQkJICAgICAgIHJuLnJlY3Z2X3JjdmluZm8ucmN2X3RzbiwK
KwkJCQkgICAgICAgbnRvaGwocm4ucmVjdnZfcmN2aW5mby5yY3ZfcHBpZCksCisJCQkJICAgICAg
IHJuLnJlY3Z2X3JjdmluZm8ucmN2X2NvbnRleHQpOworCQkJCWlmIChmbGFncyAmIE1TR19FT1Ip
IHsKKwkJCQkJc3RydWN0IHNjdHBfc25kaW5mbyBzbmRfaW5mbzsKKworCQkJCQlzbmRfaW5mby5z
bmRfc2lkID0gcm4ucmVjdnZfcmN2aW5mby5yY3Zfc2lkOworCQkJCQlzbmRfaW5mby5zbmRfZmxh
Z3MgPSAwOworCQkJCQlpZiAocm4ucmVjdnZfcmN2aW5mby5yY3ZfZmxhZ3MgJiBTQ1RQX1VOT1JE
RVJFRCkgeworCQkJCQkJc25kX2luZm8uc25kX2ZsYWdzIHw9IFNDVFBfVU5PUkRFUkVEOworCQkJ
CQl9CisJCQkJCXNuZF9pbmZvLnNuZF9wcGlkID0gcm4ucmVjdnZfcmN2aW5mby5yY3ZfcHBpZDsK
KwkJCQkJc25kX2luZm8uc25kX2NvbnRleHQgPSAwOworCQkJCQlzbmRfaW5mby5zbmRfYXNzb2Nf
aWQgPSBybi5yZWN2dl9yY3ZpbmZvLnJjdl9hc3NvY19pZDsKKwkJCQkJaWYgKHVzcnNjdHBfc2Vu
ZHYoc29jaywgYnVmLCAoc2l6ZV90KSBuLCBOVUxMLCAwLCAmc25kX2luZm8sIHNpemVvZihzdHJ1
Y3Qgc2N0cF9zbmRpbmZvKSwgU0NUUF9TRU5EVl9TTkRJTkZPLCAwKSA8IDApIHsKKwkJCQkJCXBl
cnJvcigic2N0cF9zZW5kdiIpOworCQkJCQl9CisJCQkJfQorCQkJfQorCQl9CisJCWZyZWUoYnVm
KTsKKwl9CisJcmV0dXJuOworfQorCitpbnQKK21haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK
K3sKKwlzdHJ1Y3Qgc29ja2V0ICpzb2NrOworCXN0cnVjdCBzb2NrYWRkcl9pbjYgYWRkcjsKKwlz
dHJ1Y3Qgc2N0cF91ZHBlbmNhcHMgZW5jYXBzOworCXN0cnVjdCBzY3RwX2V2ZW50IGV2ZW50Owor
CXVpbnQxNl90IGV2ZW50X3R5cGVzW10gPSB7U0NUUF9BU1NPQ19DSEFOR0UsCisJICAgICAgICAg
ICAgICAgICAgICAgICAgICBTQ1RQX1BFRVJfQUREUl9DSEFOR0UsCisJICAgICAgICAgICAgICAg
ICAgICAgICAgICBTQ1RQX1JFTU9URV9FUlJPUiwKKwkgICAgICAgICAgICAgICAgICAgICAgICAg
IFNDVFBfU0hVVERPV05fRVZFTlQsCisJICAgICAgICAgICAgICAgICAgICAgICAgICBTQ1RQX0FE
QVBUQVRJT05fSU5ESUNBVElPTiwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgIFNDVFBfUEFS
VElBTF9ERUxJVkVSWV9FVkVOVH07CisJdW5zaWduZWQgaW50IGk7CisJc3RydWN0IHNjdHBfYXNz
b2NfdmFsdWUgYXY7CisJY29uc3QgaW50IG9uID0gMTsKKworCWlmIChhcmdjID4gMSkgeworCQl1
c3JzY3RwX2luaXQoYXRvaShhcmd2WzFdKSwgTlVMTCwgZGVidWdfcHJpbnRmX3N0YWNrKTsKKwl9
IGVsc2UgeworCQl1c3JzY3RwX2luaXQoOTg5OSwgTlVMTCwgZGVidWdfcHJpbnRmX3N0YWNrKTsK
Kwl9CisjaWZkZWYgU0NUUF9ERUJVRworCXVzcnNjdHBfc3lzY3RsX3NldF9zY3RwX2RlYnVnX29u
KFNDVFBfREVCVUdfTk9ORSk7CisjZW5kaWYKKwl1c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9ibGFj
a2hvbGUoMik7CisJdXNyc2N0cF9zeXNjdGxfc2V0X3NjdHBfbm9fY3N1bV9vbl9sb29wYmFjaygw
KTsKKworCWlmICgoc29jayA9IHVzcnNjdHBfc29ja2V0KEFGX0lORVQ2LCBTT0NLX1NFUVBBQ0tF
VCwgSVBQUk9UT19TQ1RQLCBOVUxMLCBOVUxMLCAwLCBOVUxMKSkgPT0gTlVMTCkgeworCQlwZXJy
b3IoInVzcnNjdHBfc29ja2V0Iik7CisJfQorCXVzcnNjdHBfc2V0X25vbl9ibG9ja2luZyhzb2Nr
LCAxKTsKKwlpZiAodXNyc2N0cF9zZXRzb2Nrb3B0KHNvY2ssIElQUFJPVE9fU0NUUCwgU0NUUF9J
X1dBTlRfTUFQUEVEX1Y0X0FERFIsIChjb25zdCB2b2lkKikmb24sIChzb2NrbGVuX3Qpc2l6ZW9m
KGludCkpIDwgMCkgeworCQlwZXJyb3IoInVzcnNjdHBfc2V0c29ja29wdCBTQ1RQX0lfV0FOVF9N
QVBQRURfVjRfQUREUiIpOworCX0KKwltZW1zZXQoJmF2LCAwLCBzaXplb2Yoc3RydWN0IHNjdHBf
YXNzb2NfdmFsdWUpKTsKKwlhdi5hc3NvY19pZCA9IFNDVFBfQUxMX0FTU09DOworCWF2LmFzc29j
X3ZhbHVlID0gNDc7CisKKwlpZiAodXNyc2N0cF9zZXRzb2Nrb3B0KHNvY2ssIElQUFJPVE9fU0NU
UCwgU0NUUF9DT05URVhULCAoY29uc3Qgdm9pZCopJmF2LCAoc29ja2xlbl90KXNpemVvZihzdHJ1
Y3Qgc2N0cF9hc3NvY192YWx1ZSkpIDwgMCkgeworCQlwZXJyb3IoInVzcnNjdHBfc2V0c29ja29w
dCBTQ1RQX0NPTlRFWFQiKTsKKwl9CisJaWYgKHVzcnNjdHBfc2V0c29ja29wdChzb2NrLCBJUFBS
T1RPX1NDVFAsIFNDVFBfUkVDVlJDVklORk8sICZvbiwgc2l6ZW9mKGludCkpIDwgMCkgeworCQlw
ZXJyb3IoInVzcnNjdHBfc2V0c29ja29wdCBTQ1RQX1JFQ1ZSQ1ZJTkZPIik7CisJfQorCWlmIChh
cmdjID4gMikgeworCQltZW1zZXQoJmVuY2FwcywgMCwgc2l6ZW9mKHN0cnVjdCBzY3RwX3VkcGVu
Y2FwcykpOworCQllbmNhcHMuc3VlX2FkZHJlc3Muc3NfZmFtaWx5ID0gQUZfSU5FVDY7CisJCWVu
Y2Fwcy5zdWVfcG9ydCA9IGh0b25zKGF0b2koYXJndlsyXSkpOworCQlpZiAodXNyc2N0cF9zZXRz
b2Nrb3B0KHNvY2ssIElQUFJPVE9fU0NUUCwgU0NUUF9SRU1PVEVfVURQX0VOQ0FQU19QT1JULCAo
Y29uc3Qgdm9pZCopJmVuY2FwcywgKHNvY2tsZW5fdClzaXplb2Yoc3RydWN0IHNjdHBfdWRwZW5j
YXBzKSkgPCAwKSB7CisJCQlwZXJyb3IoInVzcnNjdHBfc2V0c29ja29wdCBTQ1RQX1JFTU9URV9V
RFBfRU5DQVBTX1BPUlQiKTsKKwkJfQorCX0KKwltZW1zZXQoJmV2ZW50LCAwLCBzaXplb2YoZXZl
bnQpKTsKKwlldmVudC5zZV9hc3NvY19pZCA9IFNDVFBfRlVUVVJFX0FTU09DOworCWV2ZW50LnNl
X29uID0gMTsKKwlmb3IgKGkgPSAwOyBpIDwgKHVuc2lnbmVkIGludCkoc2l6ZW9mKGV2ZW50X3R5
cGVzKS9zaXplb2YodWludDE2X3QpKTsgaSsrKSB7CisJCWV2ZW50LnNlX3R5cGUgPSBldmVudF90
eXBlc1tpXTsKKwkJaWYgKHVzcnNjdHBfc2V0c29ja29wdChzb2NrLCBJUFBST1RPX1NDVFAsIFND
VFBfRVZFTlQsICZldmVudCwgc2l6ZW9mKHN0cnVjdCBzY3RwX2V2ZW50KSkgPCAwKSB7CisJCQlw
ZXJyb3IoInVzcnNjdHBfc2V0c29ja29wdCBTQ1RQX0VWRU5UIik7CisJCX0KKwl9CisKKwl1c3Jz
Y3RwX3NldF91cGNhbGwoc29jaywgaGFuZGxlX3VwY2FsbCwgTlVMTCk7CisKKwltZW1zZXQoKHZv
aWQgKikmYWRkciwgMCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKTsKKyNpZmRlZiBIQVZF
X1NJTjZfTEVOCisJYWRkci5zaW42X2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KTsK
KyNlbmRpZgorCWFkZHIuc2luNl9mYW1pbHkgPSBBRl9JTkVUNjsKKwlhZGRyLnNpbjZfcG9ydCA9
IGh0b25zKFBPUlQpOworCWFkZHIuc2luNl9hZGRyID0gaW42YWRkcl9hbnk7CisJaWYgKHVzcnNj
dHBfYmluZChzb2NrLCAoc3RydWN0IHNvY2thZGRyICopJmFkZHIsIHNpemVvZihzdHJ1Y3Qgc29j
a2FkZHJfaW42KSkgPCAwKSB7CisJCXBlcnJvcigidXNyc2N0cF9iaW5kIik7CisJfQorCWlmICh1
c3JzY3RwX2xpc3Rlbihzb2NrLCAxKSA8IDApIHsKKwkJcGVycm9yKCJ1c3JzY3RwX2xpc3RlbiIp
OworCX0KKwl3aGlsZSAoMSkgeworI2lmZGVmIF9XSU4zMgorCQlTbGVlcCgxKjEwMDApOworI2Vs
c2UKKwkJc2xlZXAoMSk7CisjZW5kaWYKKwl9CisJdXNyc2N0cF9jbG9zZShzb2NrKTsKKwl3aGls
ZSAodXNyc2N0cF9maW5pc2goKSAhPSAwKSB7CisjaWZkZWYgX1dJTjMyCisJCVNsZWVwKDEwMDAp
OworI2Vsc2UKKwkJc2xlZXAoMSk7CisjZW5kaWYKKwl9CisJcmV0dXJuICgwKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNy
c2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2Vrcl9jbGllbnQuYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1z
L2Vrcl9jbGllbnQuYwppbmRleCAxZTVlN2UzMmVkNmM1ZTc1OTRiMmIxOGI1YWRiNjcyYWRlOGMx
NGI4Li45MzY0MTZmNTNhMzhlYzY5OWE3NjZlNTI3OWQ3MDA3ZWM4NGQ2NmU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAv
dXNyc2N0cGxpYi9wcm9ncmFtcy9la3JfY2xpZW50LmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMv
ZWtyX2NsaWVudC5jCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSA8d3MydGNwaXAuaD4KICNl
bmRpZgogI2luY2x1ZGUgPHVzcnNjdHAuaD4KKyNpbmNsdWRlICJwcm9ncmFtc19oZWxwZXIuaCIK
IAogI2RlZmluZSBNQVhfUEFDS0VUX1NJWkUgKDE8PDE2KQogI2RlZmluZSBCVUZGRVJfU0laRSA4
MApAQCAtMTUyLDE2ICsxNTMsNiBAQCByZWNlaXZlX2NiKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHVu
aW9uIHNjdHBfc29ja3N0b3JlIGFkZHIsIHZvaWQgKmRhdGEsCiAJcmV0dXJuICgxKTsKIH0KIAot
dm9pZAotZGVidWdfcHJpbnRmKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQotewotCXZhX2xpc3Qg
YXA7Ci0KLQl2YV9zdGFydChhcCwgZm9ybWF0KTsKLQl2cHJpbnRmKGZvcm1hdCwgYXApOwotCXZh
X2VuZChhcCk7Ci19Ci0KIGludAogbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogewpAQCAt
MTcwLDcgKzE2MSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICNpZmRlZiBfV0lO
MzIKIAlTT0NLRVQgZmQ7CiAjZWxzZQotCWludCBmZDsKKwlpbnQgZmQsIHJjOwogI2VuZGlmCiAJ
c3RydWN0IHNvY2tldCAqczsKICNpZmRlZiBfV0lOMzIKQEAgLTE4NSwyMSArMTc2LDIxIEBAIG1h
aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICNlbmRpZgogCiAJaWYgKGFyZ2MgPCA0KSB7Ci0J
CXByaW50ZigiZXJyb3I6IHRoaXMgcHJvZ3JhbSByZXF1aXJlcyA0IGFyZ3VtZW50cyFcbiIpOwor
CQlmcHJpbnRmKHN0ZGVyciwgImVycm9yOiB0aGlzIHByb2dyYW0gcmVxdWlyZXMgNCBhcmd1bWVu
dHMhXG4iKTsKIAkJZXhpdChFWElUX0ZBSUxVUkUpOwogCX0KIAogI2lmZGVmIF9XSU4zMgogCWlm
IChXU0FTdGFydHVwKE1BS0VXT1JEKDIsMiksICZ3c2FEYXRhKSAhPSAwKSB7Ci0JCXByaW50Zigi
V1NBU3RhcnR1cCBmYWlsZWRcbiIpOworCQlmcHJpbnRmKHN0ZGVyciwgIldTQVN0YXJ0dXAgZmFp
bGVkXG4iKTsKIAkJZXhpdCAoRVhJVF9GQUlMVVJFKTsKIAl9CiAjZW5kaWYKLQl1c3JzY3RwX2lu
aXQoMCwgY29ubl9vdXRwdXQsIGRlYnVnX3ByaW50Zik7CisJdXNyc2N0cF9pbml0KDAsIGNvbm5f
b3V0cHV0LCBkZWJ1Z19wcmludGZfc3RhY2spOwogCS8qIHNldCB1cCBhIGNvbm5lY3RlZCBVRFAg
c29ja2V0ICovCiAjaWZkZWYgX1dJTjMyCiAJaWYgKChmZCA9IHNvY2tldChBRl9JTkVULCBTT0NL
X0RHUkFNLCBJUFBST1RPX1VEUCkpID09IElOVkFMSURfU09DS0VUKSB7Ci0JCXByaW50Zigic29j
a2V0KCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7CisJCWZw
cmludGYoc3RkZXJyLCAic29ja2V0KCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBXU0FHZXRM
YXN0RXJyb3IoKSk7CiAJCWV4aXQoRVhJVF9GQUlMVVJFKTsKIAl9CiAjZWxzZQpAQCAtMjE1LDEy
ICsyMDYsMTIgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogI2VuZGlmCiAJc2luLnNp
bl9wb3J0ID0gaHRvbnMoYXRvaShhcmd2WzJdKSk7CiAJaWYgKCFpbmV0X3B0b24oQUZfSU5FVCwg
YXJndlsxXSwgJnNpbi5zaW5fYWRkci5zX2FkZHIpKXsKLQkJcHJpbnRmKCJlcnJvcjogaW52YWxp
ZCBhZGRyZXNzXG4iKTsKKwkJZnByaW50ZihzdGRlcnIsICJlcnJvcjogaW52YWxpZCBhZGRyZXNz
XG4iKTsKIAkJZXhpdChFWElUX0ZBSUxVUkUpOwogCX0KICNpZmRlZiBfV0lOMzIKIAlpZiAoYmlu
ZChmZCwgKHN0cnVjdCBzb2NrYWRkciAqKSZzaW4sIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4p
KSA9PSBTT0NLRVRfRVJST1IpIHsKLQkJcHJpbnRmKCJiaW5kKCkgZmFpbGVkIHdpdGggZXJyb3I6
ICVkXG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7CisJCWZwcmludGYoc3RkZXJyLCAiYmluZCgpIGZh
aWxlZCB3aXRoIGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOwogCQlleGl0KEVYSVRf
RkFJTFVSRSk7CiAJfQogI2Vsc2UKQEAgLTI0MSw3ICsyMzIsNyBAQCBtYWluKGludCBhcmdjLCBj
aGFyICphcmd2W10pCiAJfQogI2lmZGVmIF9XSU4zMgogCWlmIChjb25uZWN0KGZkLCAoc3RydWN0
IHNvY2thZGRyICopJnNpbiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpID09IFNPQ0tFVF9F
UlJPUikgewotCQlwcmludGYoImNvbm5lY3QoKSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIFdT
QUdldExhc3RFcnJvcigpKTsKKwkJZnByaW50ZihzdGRlcnIsICJjb25uZWN0KCkgZmFpbGVkIHdp
dGggZXJyb3I6ICVkXG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7CiAJCWV4aXQoRVhJVF9GQUlMVVJF
KTsKIAl9CiAjZWxzZQpAQCAtMjU2LDkgKzI0NywxNSBAQCBtYWluKGludCBhcmdjLCBjaGFyICph
cmd2W10pCiAJdXNyc2N0cF9zeXNjdGxfc2V0X3NjdHBfZWNuX2VuYWJsZSgwKTsKIAl1c3JzY3Rw
X3JlZ2lzdGVyX2FkZHJlc3MoKHZvaWQgKikmZmQpOwogI2lmZGVmIF9XSU4zMgotCXRpZCA9IENy
ZWF0ZVRocmVhZChOVUxMLCAwLCAmaGFuZGxlX3BhY2tldHMsICh2b2lkICopJmZkLCAwLCBOVUxM
KTsKKwlpZiAoKHRpZCA9IENyZWF0ZVRocmVhZChOVUxMLCAwLCAmaGFuZGxlX3BhY2tldHMsICh2
b2lkICopJmZkLCAwLCBOVUxMKSkgPT0gTlVMTCkgeworCQlmcHJpbnRmKHN0ZGVyciwgIkNyZWF0
ZVRocmVhZCgpIGZhaWxlZCB3aXRoIGVycm9yOiAlZFxuIiwgR2V0TGFzdEVycm9yKCkpOworCQll
eGl0KEVYSVRfRkFJTFVSRSk7CisJfQogI2Vsc2UKLQlwdGhyZWFkX2NyZWF0ZSgmdGlkLCBOVUxM
LCAmaGFuZGxlX3BhY2tldHMsICh2b2lkICopJmZkKTsKKwlpZiAoKHJjID0gcHRocmVhZF9jcmVh
dGUoJnRpZCwgTlVMTCwgJmhhbmRsZV9wYWNrZXRzLCAodm9pZCAqKSZmZCkpICE9IDApIHsKKwkJ
ZnByaW50ZihzdGRlcnIsICJwdGhyZWFkX2NyZWF0ZTogJXNcbiIsIHN0cmVycm9yKHJjKSk7CisJ
CWV4aXQoRVhJVF9GQUlMVVJFKTsKKwl9CiAjZW5kaWYKIAlpZiAoKHMgPSB1c3JzY3RwX3NvY2tl
dChBRl9DT05OLCBTT0NLX1NUUkVBTSwgSVBQUk9UT19TQ1RQLCByZWNlaXZlX2NiLCBOVUxMLCAw
LCAmZmQpKSA9PSBOVUxMKSB7CiAJCXBlcnJvcigidXNyc2N0cF9zb2NrZXQiKTsKQEAgLTMwOCw3
ICszMDUsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJVGVybWluYXRlVGhyZWFk
KHRpZCwgMCk7CiAJV2FpdEZvclNpbmdsZU9iamVjdCh0aWQsIElORklOSVRFKTsKIAlpZiAoY2xv
c2Vzb2NrZXQoZmQpID09IFNPQ0tFVF9FUlJPUikgewotCQlwcmludGYoImNsb3Nlc29ja2V0KCkg
ZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7CisJCWZwcmludGYo
c3RkZXJyLCAiY2xvc2Vzb2NrZXQoKSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIFdTQUdldExh
c3RFcnJvcigpKTsKIAl9CiAJV1NBQ2xlYW51cCgpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3Rw
bGliL3Byb2dyYW1zL2Vrcl9sb29wLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9la3JfbG9vcC5jCmlu
ZGV4IDc3ZTcyYzViODRmNjQxZGJlOTcxNmU0OWRhZTdmNGZjOTc3ZDE1NDkuLjY1ZmRiNGE3MDNk
M2Y3NzM2NjU5ZWExZThkNDNiOWM4NmZhNmMxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dy
YW1zL2Vrcl9sb29wLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvZWtyX2xvb3AuYwpAQCAtMjgs
NiArMjgsMTAgQEAKICAqIFNVQ0ggREFNQUdFLgogICovCiAKKy8qCisgKiBVc2FnZTogZWtyX2xv
b3AgW2NsaWVudF9wb3J0XSBbc2VydmVyX3BvcnRdIFtjcmMzMmMgb2ZmbG9hZGluZyA8MC8xPl0K
KyAqLworCiAjaWZkZWYgX1dJTjMyCiAjZGVmaW5lIF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTCiAj
ZW5kaWYKQEAgLTQ4LDEwICs1MiwxNCBAQAogI2luY2x1ZGUgPHdzMnRjcGlwLmg+CiAjZW5kaWYK
ICNpbmNsdWRlIDx1c3JzY3RwLmg+CisjaW5jbHVkZSAicHJvZ3JhbXNfaGVscGVyLmgiCiAKICNk
ZWZpbmUgTUFYX1BBQ0tFVF9TSVpFICgxPDwxNikKICNkZWZpbmUgTElORV9MRU5HVEggKDE8PDIw
KQogI2RlZmluZSBESVNDQVJEX1BQSUQgMzkKKyNkZWZpbmUgTlVNQkVSX09GX1NURVBTIDEwCisK
K3N0YXRpYyB1aW50OF90IGNyYzMyY19vZmZsb2FkaW5nID0gMDsKIAogI2lmZGVmIF9XSU4zMgog
c3RhdGljIERXT1JEIFdJTkFQSQpAQCAtNjYsOCArNzQsMTAgQEAgaGFuZGxlX3BhY2tldHModm9p
ZCAqYXJnKQogCWludCAqZmRwOwogI2VuZGlmCiAJY2hhciAqZHVtcF9idWY7CisJc3RydWN0IHNj
dHBfY29tbW9uX2hlYWRlciAqaGRyOwogCXNzaXplX3QgbGVuZ3RoOwogCWNoYXIgYnVmW01BWF9Q
QUNLRVRfU0laRV07CisJdWludDMyX3QgcmVjZWl2ZWRfY3JjMzJjLCBjb21wdXRlZF9jcmMzMmM7
CiAKICNpZmRlZiBfV0lOMzIKIAlmZHAgPSAoU09DS0VUICopYXJnOwpAQCAtODEsMTAgKzkxLDI5
IEBAIGhhbmRsZV9wYWNrZXRzKHZvaWQgKmFyZykKIAkJbGVuZ3RoID0gcmVjdigqZmRwLCBidWYs
IE1BWF9QQUNLRVRfU0laRSwgMCk7CiAJCWlmIChsZW5ndGggPiAwKSB7CiAJCQlpZiAoKGR1bXBf
YnVmID0gdXNyc2N0cF9kdW1wcGFja2V0KGJ1ZiwgKHNpemVfdClsZW5ndGgsIFNDVFBfRFVNUF9J
TkJPVU5EKSkgIT0gTlVMTCkgewotCQkJCS8vZnByaW50ZihzdGRlcnIsICIlcyIsIGR1bXBfYnVm
KTsKKwkJCQkvKiBkZWJ1Z19wcmludGZfY2xlYW4oIiVzIiwgZHVtcF9idWYpOyAqLwogCQkJCXVz
cnNjdHBfZnJlZWR1bXBidWZmZXIoZHVtcF9idWYpOwogCQkJfQotCQkJdXNyc2N0cF9jb25uaW5w
dXQoZmRwLCBidWYsIChzaXplX3QpbGVuZ3RoLCAwKTsKKworCQkJaWYgKGNyYzMyY19vZmZsb2Fk
aW5nKSB7CisJCQkJaWYgKChzaXplX3QpbGVuZ3RoID49IHNpemVvZihzdHJ1Y3Qgc2N0cF9jb21t
b25faGVhZGVyKSkgeworCQkJCQloZHIgPSAoc3RydWN0IHNjdHBfY29tbW9uX2hlYWRlciAqKWJ1
ZjsKKwkJCQkJcmVjZWl2ZWRfY3JjMzJjID0gaGRyLT5jcmMzMmM7CisJCQkJCWhkci0+Y3JjMzJj
ID0gaHRvbmwoMCk7CisJCQkJCWNvbXB1dGVkX2NyYzMyYyA9IHVzcnNjdHBfY3JjMzJjKGJ1Ziwg
KHNpemVfdClsZW5ndGgpOworCQkJCQloZHItPmNyYzMyYyA9IHJlY2VpdmVkX2NyYzMyYzsKKwkJ
CQkJaWYgKHJlY2VpdmVkX2NyYzMyYyA9PSBjb21wdXRlZF9jcmMzMmMpIHsKKwkJCQkJCXVzcnNj
dHBfY29ubmlucHV0KGZkcCwgYnVmLCAoc2l6ZV90KWxlbmd0aCwgMCk7CisJCQkJCX0gZWxzZSB7
CisJCQkJCQlkZWJ1Z19wcmludGYoIldyb25nIENSQzMyYzogZXhwZWN0ZWQgJTA4eCByZWNlaXZl
ZCAlMDh4XG4iLAorCQkJCQkJICAgICAgICAgICAgIG50b2hsKGNvbXB1dGVkX2NyYzMyYyksIG50
b2hsKHJlY2VpdmVkX2NyYzMyYykpOworCQkJCQl9CisJCQkJfSBlbHNlIHsKKwkJCQkJZGVidWdf
cHJpbnRmKCJQYWNrZXQgdG9vIHNob3J0OiBsZW5ndGggJXpkIiwgbGVuZ3RoKTsKKwkJCQl9CisJ
CQl9IGVsc2UgeworCQkJCXVzcnNjdHBfY29ubmlucHV0KGZkcCwgYnVmLCAoc2l6ZV90KWxlbmd0
aCwgMCk7CisJCQl9CiAJCX0KIAl9CiAjaWZkZWYgX1dJTjMyCkBAIC05OCw2ICsxMjcsNyBAQCBz
dGF0aWMgaW50CiBjb25uX291dHB1dCh2b2lkICphZGRyLCB2b2lkICpidWYsIHNpemVfdCBsZW5n
dGgsIHVpbnQ4X3QgdG9zLCB1aW50OF90IHNldF9kZikKIHsKIAljaGFyICpkdW1wX2J1ZjsKKwlz
dHJ1Y3Qgc2N0cF9jb21tb25faGVhZGVyICpoZHI7CiAjaWZkZWYgX1dJTjMyCiAJU09DS0VUICpm
ZHA7CiAjZWxzZQpAQCAtMTA5LDggKzEzOSwxMyBAQCBjb25uX291dHB1dCh2b2lkICphZGRyLCB2
b2lkICpidWYsIHNpemVfdCBsZW5ndGgsIHVpbnQ4X3QgdG9zLCB1aW50OF90IHNldF9kZikKICNl
bHNlCiAJZmRwID0gKGludCAqKWFkZHI7CiAjZW5kaWYKKwlpZiAoY3JjMzJjX29mZmxvYWRpbmcg
JiYgbGVuZ3RoID49IHNpemVvZihzdHJ1Y3Qgc2N0cF9jb21tb25faGVhZGVyKSkgeworCQloZHIg
PSAoc3RydWN0IHNjdHBfY29tbW9uX2hlYWRlciAqKWJ1ZjsKKwkJaGRyLT5jcmMzMmMgPSB1c3Jz
Y3RwX2NyYzMyYyhidWYsIChzaXplX3QpbGVuZ3RoKTsKKwl9CisKIAlpZiAoKGR1bXBfYnVmID0g
dXNyc2N0cF9kdW1wcGFja2V0KGJ1ZiwgbGVuZ3RoLCBTQ1RQX0RVTVBfT1VUQk9VTkQpKSAhPSBO
VUxMKSB7Ci0JCS8vZnByaW50ZihzdGRlcnIsICIlcyIsIGR1bXBfYnVmKTsKKwkJLyogZGVidWdf
cHJpbnRmX2NsZWFuKCIlcyIsIGR1bXBfYnVmKTsgKi8KIAkJdXNyc2N0cF9mcmVlZHVtcGJ1ZmZl
cihkdW1wX2J1Zik7CiAJfQogI2lmZGVmIF9XSU4zMgpAQCAtMTI5LDEwICsxNjQsMTAgQEAgc3Rh
dGljIGludAogcmVjZWl2ZV9jYihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCB1bmlvbiBzY3RwX3NvY2tz
dG9yZSBhZGRyLCB2b2lkICpkYXRhLAogICAgICAgICAgICBzaXplX3QgZGF0YWxlbiwgc3RydWN0
IHNjdHBfcmN2aW5mbyByY3YsIGludCBmbGFncywgdm9pZCAqdWxwX2luZm8pCiB7Ci0JcHJpbnRm
KCJNZXNzYWdlICVwIHJlY2VpdmVkIG9uIHNvY2sgPSAlcC5cbiIsIGRhdGEsICh2b2lkICopc29j
ayk7CisJZGVidWdfcHJpbnRmKCJNU0cgUkNWOiAlcCByZWNlaXZlZCBvbiBzb2NrID0gJXAuXG4i
LCBkYXRhLCAodm9pZCAqKXNvY2spOwogCWlmIChkYXRhKSB7CiAJCWlmICgoZmxhZ3MgJiBNU0df
Tk9USUZJQ0FUSU9OKSA9PSAwKSB7Ci0JCQlwcmludGYoIk1lc3NzYWdlIG9mIGxlbmd0aCAlZCBy
ZWNlaXZlZCB2aWEgJXA6JXUgb24gc3RyZWFtICV1IHdpdGggU1NOICV1IGFuZCBUU04gJXUsIFBQ
SUQgJXUsIGNvbnRleHQgJXUsIGZsYWdzICV4LlxuIiwKKwkJCWRlYnVnX3ByaW50ZigiTVNHIFJD
VjogbGVuZ3RoICVkLCBhZGRyICVwOiV1LCBzdHJlYW0gJXUsIFNTTiAldSwgVFNOICV1LCBQUElE
ICV1LCBjb250ZXh0ICV1LCAlcyVzLlxuIiwKIAkJCSAgICAgICAoaW50KWRhdGFsZW4sCiAJCQkg
ICAgICAgYWRkci5zY29ubi5zY29ubl9hZGRyLAogCQkJICAgICAgIG50b2hzKGFkZHIuc2Nvbm4u
c2Nvbm5fcG9ydCksCkBAIC0xNDEsNyArMTc2LDggQEAgcmVjZWl2ZV9jYihzdHJ1Y3Qgc29ja2V0
ICpzb2NrLCB1bmlvbiBzY3RwX3NvY2tzdG9yZSBhZGRyLCB2b2lkICpkYXRhLAogCQkJICAgICAg
IHJjdi5yY3ZfdHNuLAogCQkJICAgICAgIG50b2hsKHJjdi5yY3ZfcHBpZCksCiAJCQkgICAgICAg
cmN2LnJjdl9jb250ZXh0LAotCQkJICAgICAgIGZsYWdzKTsKKwkJCSAgICAgICAocmN2LnJjdl9m
bGFncyAmIFNDVFBfVU5PUkRFUkVEKSA/ICJ1bm9yZGVyZWQiIDogIm9yZGVyZWQiLAorCQkJCSAg
IChmbGFncyAmIE1TR19FT1IpID8gIiwgRU9SIiA6ICIiKTsKIAkJfQogCQlmcmVlKGRhdGEpOwog
CX0gZWxzZSB7CkBAIC0xNTEsMTMgKzE4NywxNiBAQCByZWNlaXZlX2NiKHN0cnVjdCBzb2NrZXQg
KnNvY2ssIHVuaW9uIHNjdHBfc29ja3N0b3JlIGFkZHIsIHZvaWQgKmRhdGEsCiAJcmV0dXJuICgx
KTsKIH0KIAotI2lmIDAKIHN0YXRpYyB2b2lkCiBwcmludF9hZGRyZXNzZXMoc3RydWN0IHNvY2tl
dCAqc29jaykKIHsKIAlpbnQgaSwgbjsKIAlzdHJ1Y3Qgc29ja2FkZHIgKmFkZHJzLCAqYWRkcjsK
KyNpZiAhZGVmaW5lZChIQVZFX1NBX0xFTikKKwlpbnQgc2FfbGVuOworI2VuZGlmCiAKKwlkZWJ1
Z19wcmludGYoIkFkZHJlc3NlczogIik7CiAJbiA9IHVzcnNjdHBfZ2V0bGFkZHJzKHNvY2ssIDAs
ICZhZGRycyk7CiAJYWRkciA9IGFkZHJzOwogCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKQEAg
LTE3MCw3ICsyMDksMTAgQEAgcHJpbnRfYWRkcmVzc2VzKHN0cnVjdCBzb2NrZXQgKnNvY2spCiAK
IAkJCXNpbiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilhZGRyOwogCQkJbmFtZSA9IGluZXRfbnRv
cChBRl9JTkVULCAmc2luLT5zaW5fYWRkciwgYnVmLCBJTkVUX0FERFJTVFJMRU4pOwotCQkJcHJp
bnRmKCIlczolZCIsIG5hbWUsIG50b2hzKHNpbi0+c2luX3BvcnQpKTsKKwkJCWRlYnVnX3ByaW50
Zl9jbGVhbigiJXM6JWQiLCBuYW1lLCBudG9ocyhzaW4tPnNpbl9wb3J0KSk7CisjaWYgIWRlZmlu
ZWQoSEFWRV9TQV9MRU4pCisJCQlzYV9sZW4gPSAoaW50KXNpemVvZihzdHJ1Y3Qgc29ja2FkZHJf
aW4pOworI2VuZGlmCiAJCQlicmVhazsKIAkJfQogCQljYXNlIEFGX0lORVQ2OgpAQCAtMTgxLDcg
KzIyMywxMCBAQCBwcmludF9hZGRyZXNzZXMoc3RydWN0IHNvY2tldCAqc29jaykKIAogCQkJc2lu
NiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopYWRkcjsKIAkJCW5hbWUgPSBpbmV0X250b3AoQUZf
SU5FVDYsICZzaW42LT5zaW42X2FkZHIsIGJ1ZiwgSU5FVDZfQUREUlNUUkxFTik7Ci0JCQlwcmlu
dGYoIiVzOiVkIiwgbmFtZSwgbnRvaHMoc2luNi0+c2luNl9wb3J0KSk7CisJCQlkZWJ1Z19wcmlu
dGZfY2xlYW4oIiVzOiVkIiwgbmFtZSwgbnRvaHMoc2luNi0+c2luNl9wb3J0KSk7CisjaWYgIWRl
ZmluZWQoSEFWRV9TQV9MRU4pCisJCQlzYV9sZW4gPSAoaW50KXNpemVvZihzdHJ1Y3Qgc29ja2Fk
ZHJfaW42KTsKKyNlbmRpZgogCQkJYnJlYWs7CiAJCX0KIAkJY2FzZSBBRl9DT05OOgpAQCAtMTg5
LDIyICsyMzQsMzIgQEAgcHJpbnRfYWRkcmVzc2VzKHN0cnVjdCBzb2NrZXQgKnNvY2spCiAJCQlz
dHJ1Y3Qgc29ja2FkZHJfY29ubiAqc2Nvbm47CiAKIAkJCXNjb25uID0gKHN0cnVjdCBzb2NrYWRk
cl9jb25uICopYWRkcjsKLQkJCXByaW50ZigiJXA6JWQiLCBzY29ubi0+c2Nvbm5fYWRkciwgbnRv
aHMoc2Nvbm4tPnNjb25uX3BvcnQpKTsKKwkJCWRlYnVnX3ByaW50Zl9jbGVhbigiJXA6JWQiLCBz
Y29ubi0+c2Nvbm5fYWRkciwgbnRvaHMoc2Nvbm4tPnNjb25uX3BvcnQpKTsKKyNpZiAhZGVmaW5l
ZChIQVZFX1NBX0xFTikKKwkJCXNhX2xlbiA9IChpbnQpc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9j
b25uKTsKKyNlbmRpZgogCQkJYnJlYWs7CiAJCX0KIAkJZGVmYXVsdDoKLQkJCXByaW50ZigiVW5r
bm93biBmYW1pbHk6ICVkIiwgYWRkci0+c2FfZmFtaWx5KTsKKwkJCWRlYnVnX3ByaW50Zl9jbGVh
bigiVW5rbm93biBmYW1pbHk6ICVkIiwgYWRkci0+c2FfZmFtaWx5KTsKKyNpZiAhZGVmaW5lZChI
QVZFX1NBX0xFTikKKwkJCXNhX2xlbiA9IChpbnQpc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcik7Cisj
ZW5kaWYKIAkJCWJyZWFrOwogCQl9CisjaWYgIWRlZmluZWQoSEFWRV9TQV9MRU4pCisJCWFkZHIg
PSAoc3RydWN0IHNvY2thZGRyICopKChjaGFyICopYWRkciArIHNhX2xlbik7CisjZWxzZQogCQlh
ZGRyID0gKHN0cnVjdCBzb2NrYWRkciAqKSgoY2FkZHJfdClhZGRyICsgYWRkci0+c2FfbGVuKTsK
KyNlbmRpZgogCQlpZiAoaSAhPSBuIC0gMSkgewotCQkJcHJpbnRmKCIsIik7CisJCQlkZWJ1Z19w
cmludGZfY2xlYW4oIiwiKTsKIAkJfQogCX0KIAlpZiAobiA+IDApIHsKIAkJdXNyc2N0cF9mcmVl
bGFkZHJzKGFkZHJzKTsKIAl9Ci0JcHJpbnRmKCI8LT4iKTsKKwlkZWJ1Z19wcmludGZfY2xlYW4o
IjwtPiIpOwogCW4gPSB1c3JzY3RwX2dldHBhZGRycyhzb2NrLCAwLCAmYWRkcnMpOwogCWFkZHIg
PSBhZGRyczsKIAlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CkBAIC0yMTcsNyArMjcyLDEwIEBA
IHByaW50X2FkZHJlc3NlcyhzdHJ1Y3Qgc29ja2V0ICpzb2NrKQogCiAJCQlzaW4gPSAoc3RydWN0
IHNvY2thZGRyX2luICopYWRkcjsKIAkJCW5hbWUgPSBpbmV0X250b3AoQUZfSU5FVCwgJnNpbi0+
c2luX2FkZHIsIGJ1ZiwgSU5FVF9BRERSU1RSTEVOKTsKLQkJCXByaW50ZigiJXM6JWQiLCBuYW1l
LCBudG9ocyhzaW4tPnNpbl9wb3J0KSk7CisJCQlkZWJ1Z19wcmludGZfY2xlYW4oIiVzOiVkIiwg
bmFtZSwgbnRvaHMoc2luLT5zaW5fcG9ydCkpOworI2lmICFkZWZpbmVkKEhBVkVfU0FfTEVOKQor
CQkJc2FfbGVuID0gKGludClzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKTsKKyNlbmRpZgogCQkJ
YnJlYWs7CiAJCX0KIAkJY2FzZSBBRl9JTkVUNjoKQEAgLTIyOCw3ICsyODYsMTAgQEAgcHJpbnRf
YWRkcmVzc2VzKHN0cnVjdCBzb2NrZXQgKnNvY2spCiAKIAkJCXNpbjYgPSAoc3RydWN0IHNvY2th
ZGRyX2luNiAqKWFkZHI7CiAJCQluYW1lID0gaW5ldF9udG9wKEFGX0lORVQ2LCAmc2luNi0+c2lu
Nl9hZGRyLCBidWYsIElORVQ2X0FERFJTVFJMRU4pOwotCQkJcHJpbnRmKCIlczolZCIsIG5hbWUs
IG50b2hzKHNpbjYtPnNpbjZfcG9ydCkpOworCQkJZGVidWdfcHJpbnRmX2NsZWFuKCIlczolZCIs
IG5hbWUsIG50b2hzKHNpbjYtPnNpbjZfcG9ydCkpOworI2lmICFkZWZpbmVkKEhBVkVfU0FfTEVO
KQorCQkJc2FfbGVuID0gKGludClzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNik7CisjZW5kaWYK
IAkJCWJyZWFrOwogCQl9CiAJCWNhc2UgQUZfQ09OTjoKQEAgLTIzNiw0NCArMjk3LDQ0IEBAIHBy
aW50X2FkZHJlc3NlcyhzdHJ1Y3Qgc29ja2V0ICpzb2NrKQogCQkJc3RydWN0IHNvY2thZGRyX2Nv
bm4gKnNjb25uOwogCiAJCQlzY29ubiA9IChzdHJ1Y3Qgc29ja2FkZHJfY29ubiAqKWFkZHI7Ci0J
CQlwcmludGYoIiVwOiVkIiwgc2Nvbm4tPnNjb25uX2FkZHIsIG50b2hzKHNjb25uLT5zY29ubl9w
b3J0KSk7CisJCQlkZWJ1Z19wcmludGZfY2xlYW4oIiVwOiVkIiwgc2Nvbm4tPnNjb25uX2FkZHIs
IG50b2hzKHNjb25uLT5zY29ubl9wb3J0KSk7CisjaWYgIWRlZmluZWQoSEFWRV9TQV9MRU4pCisJ
CQlzYV9sZW4gPSAoaW50KXNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfY29ubik7CisjZW5kaWYKIAkJ
CWJyZWFrOwogCQl9CiAJCWRlZmF1bHQ6Ci0JCQlwcmludGYoIlVua25vd24gZmFtaWx5OiAlZCIs
IGFkZHItPnNhX2ZhbWlseSk7CisJCQlkZWJ1Z19wcmludGZfY2xlYW4oIlVua25vd24gZmFtaWx5
OiAlZCIsIGFkZHItPnNhX2ZhbWlseSk7CisjaWYgIWRlZmluZWQoSEFWRV9TQV9MRU4pCisJCQlz
YV9sZW4gPSAoaW50KXNpemVvZihzdHJ1Y3Qgc29ja2FkZHIpOworI2VuZGlmCiAJCQlicmVhazsK
IAkJfQorI2lmICFkZWZpbmVkKEhBVkVfU0FfTEVOKQorCQlhZGRyID0gKHN0cnVjdCBzb2NrYWRk
ciAqKSgoY2hhciAqKWFkZHIgKyBzYV9sZW4pOworI2Vsc2UKIAkJYWRkciA9IChzdHJ1Y3Qgc29j
a2FkZHIgKikoKGNhZGRyX3QpYWRkciArIGFkZHItPnNhX2xlbik7CisjZW5kaWYKIAkJaWYgKGkg
IT0gbiAtIDEpIHsKLQkJCXByaW50ZigiLCIpOworCQkJZGVidWdfcHJpbnRmX2NsZWFuKCIsIik7
CiAJCX0KIAl9CiAJaWYgKG4gPiAwKSB7CiAJCXVzcnNjdHBfZnJlZXBhZGRycyhhZGRycyk7CiAJ
fQotCXByaW50ZigiXG4iKTsKLX0KLSNlbmRpZgotCi12b2lkCi1kZWJ1Z19wcmludGYoY29uc3Qg
Y2hhciAqZm9ybWF0LCAuLi4pCi17Ci0JdmFfbGlzdCBhcDsKLQotCXZhX3N0YXJ0KGFwLCBmb3Jt
YXQpOwotCXZwcmludGYoZm9ybWF0LCBhcCk7Ci0JdmFfZW5kKGFwKTsKKwlkZWJ1Z19wcmludGZf
Y2xlYW4oIlxuIik7CiB9CiAKIGludAotbWFpbih2b2lkKQorbWFpbihpbnQgYXJnYywgY2hhciAq
YXJndltdKQogewogCXN0cnVjdCBzb2NrYWRkcl9pbiBzaW5fcywgc2luX2M7CiAJc3RydWN0IHNv
Y2thZGRyX2Nvbm4gc2Nvbm47CisJc3RydWN0IHNjdHBfcGFkZHJwYXJhbXMgcGFkZHJwYXJhbXM7
CiAjaWZkZWYgX1dJTjMyCiAJU09DS0VUIGZkX2MsIGZkX3M7CiAjZWxzZQotCWludCBmZF9jLCBm
ZF9zOworCWludCBmZF9jLCBmZF9zLCByYzsKICNlbmRpZgogCXN0cnVjdCBzb2NrZXQgKnNfYywg
KnNfcywgKnNfbDsKICNpZmRlZiBfV0lOMzIKQEAgLTI4MSwyOSArMzQyLDU1IEBAIG1haW4odm9p
ZCkKICNlbHNlCiAJcHRocmVhZF90IHRpZF9jLCB0aWRfczsKICNlbmRpZgotCWludCBjdXJfYnVm
X3NpemUsIHNuZF9idWZfc2l6ZSwgcmN2X2J1Zl9zaXplOworCWludCBpLCBqLCBjdXJfYnVmX3Np
emUsIHNuZF9idWZfc2l6ZSwgcmN2X2J1Zl9zaXplLCBzZW5kdl9yZXRyaWVzX2xlZnQ7CiAJc29j
a2xlbl90IG9wdF9sZW47CiAJc3RydWN0IHNjdHBfc25kaW5mbyBzbmRpbmZvOwogCWNoYXIgKmxp
bmU7CiAjaWZkZWYgX1dJTjMyCiAJV1NBREFUQSB3c2FEYXRhOwogI2VuZGlmCisJdWludDE2X3Qg
Y2xpZW50X3BvcnQgPSA5OTAwOworCXVpbnQxNl90IHNlcnZlcl9wb3J0ID0gOTkwMTsKKworCWlm
IChhcmdjID4gMSkgeworCQljbGllbnRfcG9ydCA9IGF0b2koYXJndlsxXSk7CisJfQorCisJaWYg
KGFyZ2MgPiAyKSB7CisJCXNlcnZlcl9wb3J0ID0gYXRvaShhcmd2WzJdKTsKKwl9CisKKwlpZiAo
YXJnYyA+IDMpIHsKKwkJY3JjMzJjX29mZmxvYWRpbmcgPSBhdG9pKGFyZ3ZbM10pOworCX0KKwor
CWRlYnVnX3ByaW50ZigiU3RhcnRpbmcgcHJvZ3JhbVxuIik7CisJZGVidWdfcHJpbnRmKCJDb25m
aWc6XG5cdENsaWVudCBQb3J0Olx0JWRcblx0U2VydmVyIFBvcnQ6XHQlZFxuXHRDUkMzMkMgQ2Fs
YzpcdCVzXG4iLCBjbGllbnRfcG9ydCwgc2VydmVyX3BvcnQsIGNyYzMyY19vZmZsb2FkaW5nID8g
Im9mZmxvYWRlZCIgOiAiTk9UIG9mZmxvYWRlZCIpOwogCiAjaWZkZWYgX1dJTjMyCiAJaWYgKFdT
QVN0YXJ0dXAoTUFLRVdPUkQoMiwyKSwgJndzYURhdGEpICE9IDApIHsKLQkJcHJpbnRmKCJXU0FT
dGFydHVwIGZhaWxlZFxuIik7CisJCWRlYnVnX3ByaW50ZigiV1NBU3RhcnR1cCBmYWlsZWRcbiIp
OwogCQlleGl0IChFWElUX0ZBSUxVUkUpOwogCX0KICNlbmRpZgotCXVzcnNjdHBfaW5pdCgwLCBj
b25uX291dHB1dCwgZGVidWdfcHJpbnRmKTsKKwl1c3JzY3RwX2luaXQoMCwgY29ubl9vdXRwdXQs
IGRlYnVnX3ByaW50Zl9zdGFjayk7CisKKyNpZmRlZiBTQ1RQX0RFQlVHCisJdXNyc2N0cF9zeXNj
dGxfc2V0X3NjdHBfZGVidWdfb24oU0NUUF9ERUJVR19OT05FKTsKKyNlbmRpZgorCisJaWYgKGNy
YzMyY19vZmZsb2FkaW5nKSB7CisJCXVzcnNjdHBfZW5hYmxlX2NyYzMyY19vZmZsb2FkKCk7CisJ
fQorCiAJLyogc2V0IHVwIGEgY29ubmVjdGVkIFVEUCBzb2NrZXQgKi8KICNpZmRlZiBfV0lOMzIK
IAlpZiAoKGZkX2MgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgSVBQUk9UT19VRFApKSA9
PSBJTlZBTElEX1NPQ0tFVCkgewotCQlwcmludGYoInNvY2tldCgpIGZhaWxlZCB3aXRoIGVycm9y
OiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOworCQlkZWJ1Z19wcmludGYoInNvY2tldCgpIGZh
aWxlZCB3aXRoIGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOwogCQlleGl0KEVYSVRf
RkFJTFVSRSk7CiAJfQogCWlmICgoZmRfcyA9IHNvY2tldChBRl9JTkVULCBTT0NLX0RHUkFNLCBJ
UFBST1RPX1VEUCkpID09IElOVkFMSURfU09DS0VUKSB7Ci0JCXByaW50Zigic29ja2V0KCkgZmFp
bGVkIHdpdGggZXJyb3I6ICVkXG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7CisJCWRlYnVnX3ByaW50
Zigic29ja2V0KCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7
CiAJCWV4aXQoRVhJVF9GQUlMVVJFKTsKIAl9CiAjZWxzZQpAQCAtMzIxLDIyICs0MDgsMjIgQEAg
bWFpbih2b2lkKQogI2lmZGVmIEhBVkVfU0lOX0xFTgogCXNpbl9jLnNpbl9sZW4gPSBzaXplb2Yo
c3RydWN0IHNvY2thZGRyX2luKTsKICNlbmRpZgotCXNpbl9jLnNpbl9wb3J0ID0gaHRvbnMoOTkw
MCk7CisJc2luX2Muc2luX3BvcnQgPSBodG9ucyhjbGllbnRfcG9ydCk7CiAJc2luX2Muc2luX2Fk
ZHIuc19hZGRyID0gaHRvbmwoSU5BRERSX0xPT1BCQUNLKTsKIAltZW1zZXQoJnNpbl9zLCAwLCBz
aXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7CiAJc2luX3Muc2luX2ZhbWlseSA9IEFGX0lORVQ7
CiAjaWZkZWYgSEFWRV9TSU5fTEVOCiAJc2luX3Muc2luX2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29j
a2FkZHJfaW4pOwogI2VuZGlmCi0Jc2luX3Muc2luX3BvcnQgPSBodG9ucyg5OTAxKTsKKwlzaW5f
cy5zaW5fcG9ydCA9IGh0b25zKHNlcnZlcl9wb3J0KTsKIAlzaW5fcy5zaW5fYWRkci5zX2FkZHIg
PSBodG9ubChJTkFERFJfTE9PUEJBQ0spOwogI2lmZGVmIF9XSU4zMgogCWlmIChiaW5kKGZkX2Ms
IChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luX2MsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKSA9
PSBTT0NLRVRfRVJST1IpIHsKLQkJcHJpbnRmKCJiaW5kKCkgZmFpbGVkIHdpdGggZXJyb3I6ICVk
XG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7CisJCWRlYnVnX3ByaW50ZigiYmluZCgpIGZhaWxlZCB3
aXRoIGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOwogCQlleGl0KEVYSVRfRkFJTFVS
RSk7CiAJfQogCWlmIChiaW5kKGZkX3MsIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luX3MsIHNpemVv
ZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKSA9PSBTT0NLRVRfRVJST1IpIHsKLQkJcHJpbnRmKCJiaW5k
KCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7CisJCWRlYnVn
X3ByaW50ZigiYmluZCgpIGZhaWxlZCB3aXRoIGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9y
KCkpOwogCQlleGl0KEVYSVRfRkFJTFVSRSk7CiAJfQogI2Vsc2UKQEAgLTM1MSwxMSArNDM4LDEx
IEBAIG1haW4odm9pZCkKICNlbmRpZgogI2lmZGVmIF9XSU4zMgogCWlmIChjb25uZWN0KGZkX2Ms
IChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luX3MsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKSA9
PSBTT0NLRVRfRVJST1IpIHsKLQkJcHJpbnRmKCJjb25uZWN0KCkgZmFpbGVkIHdpdGggZXJyb3I6
ICVkXG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7CisJCWRlYnVnX3ByaW50ZigiY29ubmVjdCgpIGZh
aWxlZCB3aXRoIGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOwogCQlleGl0KEVYSVRf
RkFJTFVSRSk7CiAJfQogCWlmIChjb25uZWN0KGZkX3MsIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2lu
X2MsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKSA9PSBTT0NLRVRfRVJST1IpIHsKLQkJcHJp
bnRmKCJjb25uZWN0KCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBXU0FHZXRMYXN0RXJyb3Io
KSk7CisJCWRlYnVnX3ByaW50ZigiY29ubmVjdCgpIGZhaWxlZCB3aXRoIGVycm9yOiAlZFxuIiwg
V1NBR2V0TGFzdEVycm9yKCkpOwogCQlleGl0KEVYSVRfRkFJTFVSRSk7CiAJfQogI2Vsc2UKQEAg
LTM2OSwyMiArNDU2LDI2IEBAIG1haW4odm9pZCkKIAl9CiAjZW5kaWYKICNpZmRlZiBfV0lOMzIK
LQl0aWRfYyA9IENyZWF0ZVRocmVhZChOVUxMLCAwLCAmaGFuZGxlX3BhY2tldHMsICh2b2lkICop
JmZkX2MsIDAsIE5VTEwpOwotCXRpZF9zID0gQ3JlYXRlVGhyZWFkKE5VTEwsIDAsICZoYW5kbGVf
cGFja2V0cywgKHZvaWQgKikmZmRfcywgMCwgTlVMTCk7CisJaWYgKCh0aWRfYyA9IENyZWF0ZVRo
cmVhZChOVUxMLCAwLCAmaGFuZGxlX3BhY2tldHMsICh2b2lkICopJmZkX2MsIDAsIE5VTEwpKSA9
PSBOVUxMKSB7CisJCWRlYnVnX3ByaW50ZigiQ3JlYXRlVGhyZWFkKCkgZmFpbGVkIHdpdGggZXJy
b3I6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwl9CisJ
aWYgKCh0aWRfcyA9IENyZWF0ZVRocmVhZChOVUxMLCAwLCAmaGFuZGxlX3BhY2tldHMsICh2b2lk
ICopJmZkX3MsIDAsIE5VTEwpKSA9PSBOVUxMKSB7CisJCWRlYnVnX3ByaW50ZigiQ3JlYXRlVGhy
ZWFkKCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7CisJCWV4aXQo
RVhJVF9GQUlMVVJFKTsKKwl9CiAjZWxzZQotCWlmIChwdGhyZWFkX2NyZWF0ZSgmdGlkX2MsIE5V
TEwsICZoYW5kbGVfcGFja2V0cywgKHZvaWQgKikmZmRfYykpIHsKLQkJcGVycm9yKCJwdGhyZWFk
X2NyZWF0ZSB0aWRfYyIpOworCWlmICgocmMgPSBwdGhyZWFkX2NyZWF0ZSgmdGlkX2MsIE5VTEws
ICZoYW5kbGVfcGFja2V0cywgKHZvaWQgKikmZmRfYykpICE9IDApIHsKKwkJZGVidWdfcHJpbnRm
X2NsZWFuKCJwdGhyZWFkX2NyZWF0ZSB0aWRfYzogJXNcbiIsIHN0cmVycm9yKHJjKSk7CiAJCWV4
aXQoRVhJVF9GQUlMVVJFKTsKIAl9CiAKLQlpZiAocHRocmVhZF9jcmVhdGUoJnRpZF9zLCBOVUxM
LCAmaGFuZGxlX3BhY2tldHMsICh2b2lkICopJmZkX3MpKSB7Ci0JCXBlcnJvcigicHRocmVhZF9j
cmVhdGUgdGlkX3MiKTsKKwlpZiAoKHJjID0gcHRocmVhZF9jcmVhdGUoJnRpZF9zLCBOVUxMLCAm
aGFuZGxlX3BhY2tldHMsICh2b2lkICopJmZkX3MpKSAhPSAwKSB7CisJCWRlYnVnX3ByaW50Zl9j
bGVhbigicHRocmVhZF9jcmVhdGUgdGlkX3M6ICVzXG4iLCBzdHJlcnJvcihyYykpOwogCQlleGl0
KEVYSVRfRkFJTFVSRSk7CiAJfTsKICNlbmRpZgotI2lmZGVmIFNDVFBfREVCVUcKLQl1c3JzY3Rw
X3N5c2N0bF9zZXRfc2N0cF9kZWJ1Z19vbihTQ1RQX0RFQlVHX05PTkUpOwotI2VuZGlmCisKIAl1
c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9lY25fZW5hYmxlKDApOwogCXVzcnNjdHBfcmVnaXN0ZXJf
YWRkcmVzcygodm9pZCAqKSZmZF9jKTsKIAl1c3JzY3RwX3JlZ2lzdGVyX2FkZHJlc3MoKHZvaWQg
KikmZmRfcyk7CkBAIC0zOTgsNyArNDg5LDcgQEAgbWFpbih2b2lkKQogCQlwZXJyb3IoInVzcnNj
dHBfZ2V0c29ja29wdCIpOwogCQlleGl0KEVYSVRfRkFJTFVSRSk7CiAJfQotCXByaW50ZigiQ2hh
bmdlIHNlbmQgc29ja2V0IGJ1ZmZlciBzaXplIGZyb20gJWQgIiwgY3VyX2J1Zl9zaXplKTsKKwlk
ZWJ1Z19wcmludGYoIkNoYW5nZSBzZW5kIHNvY2tldCBidWZmZXIgc2l6ZSBmcm9tICVkICIsIGN1
cl9idWZfc2l6ZSk7CiAJc25kX2J1Zl9zaXplID0gMTw8MjI7IC8qIDQgTUIgKi8KIAlpZiAodXNy
c2N0cF9zZXRzb2Nrb3B0KHNfYywgU09MX1NPQ0tFVCwgU09fU05EQlVGLCAmc25kX2J1Zl9zaXpl
LCBzaXplb2YoaW50KSkgPCAwKSB7CiAJCXBlcnJvcigidXNyc2N0cF9zZXRzb2Nrb3B0Iik7CkBA
IC00MTAsNyArNTAxLDE4IEBAIG1haW4odm9pZCkKIAkJcGVycm9yKCJ1c3JzY3RwX2dldHNvY2tv
cHQiKTsKIAkJZXhpdChFWElUX0ZBSUxVUkUpOwogCX0KLQlwcmludGYoInRvICVkLlxuIiwgY3Vy
X2J1Zl9zaXplKTsKKwlkZWJ1Z19wcmludGZfY2xlYW4oInRvICVkLlxuIiwgY3VyX2J1Zl9zaXpl
KTsKKwltZW1zZXQoJnBhZGRycGFyYW1zLCAwLCBzaXplb2Yoc3RydWN0IHNjdHBfcGFkZHJwYXJh
bXMpKTsKKwlwYWRkcnBhcmFtcy5zcHBfYWRkcmVzcy5zc19mYW1pbHkgPSBBRl9DT05OOworI2lm
ZGVmIEhBVkVfU0NPTk5fTEVOCisJcGFkZHJwYXJhbXMuc3BwX2FkZHJlc3Muc3NfbGVuID0gc2l6
ZW9mKHN0cnVjdCBzb2NrYWRkcl9jb25uKTsKKyNlbmRpZgorCXBhZGRycGFyYW1zLnNwcF9mbGFn
cyA9IFNQUF9QTVRVRF9ESVNBQkxFOworCXBhZGRycGFyYW1zLnNwcF9wYXRobXR1ID0gOTAwMDsK
KwlpZiAodXNyc2N0cF9zZXRzb2Nrb3B0KHNfYywgSVBQUk9UT19TQ1RQLCBTQ1RQX1BFRVJfQURE
Ul9QQVJBTVMsICZwYWRkcnBhcmFtcywgc2l6ZW9mKHN0cnVjdCBzY3RwX3BhZGRycGFyYW1zKSkg
PCAwKSB7CisJCXBlcnJvcigidXNyc2N0cF9zZXRzb2Nrb3B0Iik7CisJCWV4aXQoRVhJVF9GQUlM
VVJFKTsKKwl9CiAJaWYgKChzX2wgPSB1c3JzY3RwX3NvY2tldChBRl9DT05OLCBTT0NLX1NUUkVB
TSwgSVBQUk9UT19TQ1RQLCByZWNlaXZlX2NiLCBOVUxMLCAwLCAmZmRfcykpID09IE5VTEwpIHsK
IAkJcGVycm9yKCJ1c3JzY3RwX3NvY2tldCIpOwogCQlleGl0KEVYSVRfRkFJTFVSRSk7CkBAIC00
MjEsNyArNTIzLDcgQEAgbWFpbih2b2lkKQogCQlwZXJyb3IoInVzcnNjdHBfZ2V0c29ja29wdCIp
OwogCQlleGl0KEVYSVRfRkFJTFVSRSk7CiAJfQotCXByaW50ZigiQ2hhbmdlIHJlY2VpdmUgc29j
a2V0IGJ1ZmZlciBzaXplIGZyb20gJWQgIiwgY3VyX2J1Zl9zaXplKTsKKwlkZWJ1Z19wcmludGYo
IkNoYW5nZSByZWNlaXZlIHNvY2tldCBidWZmZXIgc2l6ZSBmcm9tICVkICIsIGN1cl9idWZfc2l6
ZSk7CiAJcmN2X2J1Zl9zaXplID0gMTw8MTY7IC8qIDY0IEtCICovCiAJaWYgKHVzcnNjdHBfc2V0
c29ja29wdChzX2wsIFNPTF9TT0NLRVQsIFNPX1JDVkJVRiwgJnJjdl9idWZfc2l6ZSwgc2l6ZW9m
KGludCkpIDwgMCkgewogCQlwZXJyb3IoInVzcnNjdHBfc2V0c29ja29wdCIpOwpAQCAtNDMzLDcg
KzUzNSw3IEBAIG1haW4odm9pZCkKIAkJcGVycm9yKCJ1c3JzY3RwX2dldHNvY2tvcHQiKTsKIAkJ
ZXhpdChFWElUX0ZBSUxVUkUpOwogCX0KLQlwcmludGYoInRvICVkLlxuIiwgY3VyX2J1Zl9zaXpl
KTsKKwlkZWJ1Z19wcmludGZfY2xlYW4oInRvICVkLlxuIiwgY3VyX2J1Zl9zaXplKTsKIAkvKiBC
aW5kIHRoZSBjbGllbnQgc2lkZS4gKi8KIAltZW1zZXQoJnNjb25uLCAwLCBzaXplb2Yoc3RydWN0
IHNvY2thZGRyX2Nvbm4pKTsKIAlzY29ubi5zY29ubl9mYW1pbHkgPSBBRl9DT05OOwpAQCAtNDgw
LDMxICs1ODIsNTMgQEAgbWFpbih2b2lkKQogCQlleGl0KEVYSVRfRkFJTFVSRSk7CiAJfQogCXVz
cnNjdHBfY2xvc2Uoc19sKTsKKwlwcmludF9hZGRyZXNzZXMoc19zKTsKKwogCWlmICgobGluZSA9
IG1hbGxvYyhMSU5FX0xFTkdUSCkpID09IE5VTEwpIHsKIAkJZXhpdChFWElUX0ZBSUxVUkUpOwog
CX0KIAltZW1zZXQobGluZSwgJ0EnLCBMSU5FX0xFTkdUSCk7CiAJc25kaW5mby5zbmRfc2lkID0g
MTsKLQlzbmRpbmZvLnNuZF9mbGFncyA9IDA7CiAJc25kaW5mby5zbmRfcHBpZCA9IGh0b25sKERJ
U0NBUkRfUFBJRCk7CiAJc25kaW5mby5zbmRfY29udGV4dCA9IDA7CiAJc25kaW5mby5zbmRfYXNz
b2NfaWQgPSAwOwotCS8qIFNlbmQgYSAxIE1CIG9yZGVyZWQgbWVzc2FnZSAqLwotCWlmICh1c3Jz
Y3RwX3NlbmR2KHNfYywgbGluZSwgTElORV9MRU5HVEgsIE5VTEwsIDAsICh2b2lkICopJnNuZGlu
Zm8sCi0JICAgICAgICAgICAgICAgICAoc29ja2xlbl90KXNpemVvZihzdHJ1Y3Qgc2N0cF9zbmRp
bmZvKSwgU0NUUF9TRU5EVl9TTkRJTkZPLCAwKSA8IDApIHsKLQkJcGVycm9yKCJ1c3JzY3RwX3Nl
bmR2Iik7Ci0JCWV4aXQoRVhJVF9GQUlMVVJFKTsKLQl9Ci0JLyogU2VuZCBhIDEgTUIgb3JkZXJl
ZCBtZXNzYWdlICovCi0JaWYgKHVzcnNjdHBfc2VuZHYoc19jLCBsaW5lLCBMSU5FX0xFTkdUSCwg
TlVMTCwgMCwgKHZvaWQgKikmc25kaW5mbywKLQkgICAgICAgICAgICAgICAgIChzb2NrbGVuX3Qp
c2l6ZW9mKHN0cnVjdCBzY3RwX3NuZGluZm8pLCBTQ1RQX1NFTkRWX1NORElORk8sIDApIDwgMCkg
ewotCQlwZXJyb3IoInVzcnNjdHBfc2VuZHYiKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOworCisJ
Zm9yIChpID0gMDsgaSA8IE5VTUJFUl9PRl9TVEVQUzsgaSsrKSB7CisJCWlmIChpICUgMikgewor
CQkJc25kaW5mby5zbmRfZmxhZ3MgPSBTQ1RQX1VOT1JERVJFRDsKKwkJfSBlbHNlIHsKKwkJCXNu
ZGluZm8uc25kX2ZsYWdzID0gMDsKKwkJfQorCQlmb3IgKGogPSAwOyBqIDwgMjsgaisrKSB7CisJ
CQkvKiBTZW5kIGEgMSBNQiBtZXNzYWdlICovCisJCQlzZW5kdl9yZXRyaWVzX2xlZnQgPSAxMjA7
CisJCQlkZWJ1Z19wcmludGYoInVzcnNjcF9zZW5kdiAtIHN0ZXAgJWQgLSBjYWxsICVkIGZsYWdz
ICV4XG4iLCBpLCBqICsgMSwgc25kaW5mby5zbmRfZmxhZ3MpOworCQkJd2hpbGUgKHVzcnNjdHBf
c2VuZHYoc19jLCBsaW5lLCBMSU5FX0xFTkdUSCwgTlVMTCwgMCwgKHZvaWQgKikmc25kaW5mbywK
KwkJCQkJIChzb2NrbGVuX3Qpc2l6ZW9mKHN0cnVjdCBzY3RwX3NuZGluZm8pLCBTQ1RQX1NFTkRW
X1NORElORk8sIDApIDwgMCkgeworCQkJCWRlYnVnX3ByaW50ZigidXNyc2N0cF9zZW5kdiAtIGVy
cm5vOiAlZCAtICVzXG4iLCBlcnJubywgc3RyZXJyb3IoZXJybm8pKTsKKwkJCQlpZiAoZXJybm8g
IT0gRVdPVUxEQkxPQ0sgfHwgIXNlbmR2X3JldHJpZXNfbGVmdCkgeworCQkJCQlleGl0KEVYSVRf
RkFJTFVSRSk7CisJCQkJfQorCQkJCXNlbmR2X3JldHJpZXNfbGVmdC0tOworI2lmZGVmIF9XSU4z
MgorCQkJCVNsZWVwKDEwMDApOworI2Vsc2UKKwkJCQlzbGVlcCgxKTsKKyNlbmRpZgorCQkJfQor
CQl9CisJCWRlYnVnX3ByaW50ZigiU2VuZGluZyBkb25lLCBzbGVlcGluZ1xuIik7CisjaWZkZWYg
X1dJTjMyCisJCVNsZWVwKDEwMDApOworI2Vsc2UKKwkJc2xlZXAoMSk7CisjZW5kaWYKIAl9CiAJ
ZnJlZShsaW5lKTsKIAl1c3JzY3RwX3NodXRkb3duKHNfYywgU0hVVF9XUik7CiAKIAl3aGlsZSAo
dXNyc2N0cF9maW5pc2goKSAhPSAwKSB7CisJCWRlYnVnX3ByaW50ZigiV2FpdGluZyBmb3IgdXNy
c2N0cF9maW5pc2goKVxuIik7CiAjaWZkZWYgX1dJTjMyCiAJCVNsZWVwKDEwMDApOwogI2Vsc2UK
QEAgLTUxNywxMSArNjQxLDExIEBAIG1haW4odm9pZCkKIAlUZXJtaW5hdGVUaHJlYWQodGlkX3Ms
IDApOwogCVdhaXRGb3JTaW5nbGVPYmplY3QodGlkX3MsIElORklOSVRFKTsKIAlpZiAoY2xvc2Vz
b2NrZXQoZmRfYykgPT0gU09DS0VUX0VSUk9SKSB7Ci0JCXByaW50ZigiY2xvc2Vzb2NrZXQoKSBm
YWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIFdTQUdldExhc3RFcnJvcigpKTsKKwkJZGVidWdfcHJp
bnRmKCJjbG9zZXNvY2tldCgpIGZhaWxlZCB3aXRoIGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVy
cm9yKCkpOwogCQlleGl0KEVYSVRfRkFJTFVSRSk7CiAJfQogCWlmIChjbG9zZXNvY2tldChmZF9z
KSA9PSBTT0NLRVRfRVJST1IpIHsKLQkJcHJpbnRmKCJjbG9zZXNvY2tldCgpIGZhaWxlZCB3aXRo
IGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOworCQlkZWJ1Z19wcmludGYoImNsb3Nl
c29ja2V0KCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7CiAJ
CWV4aXQoRVhJVF9GQUlMVVJFKTsKIAl9CiAJV1NBQ2xlYW51cCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNj
dHBsaWIvcHJvZ3JhbXMvZWtyX2xvb3Bfb2ZmbG9hZC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvZWty
X2xvb3Bfb2ZmbG9hZC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NWY3ZDdmYzY5
NDViNzVhMDYwNWQ3ODVlYTU5NWQ3OGQ2NjE2YzZhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2Vrcl9sb29wX29mZmxvYWQu
YworKysgL2Rldi9udWxsCkBAIC0xLDU1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDExLTIwMTMgTWljaGFlbCBUdWV4ZW4KLSAqCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgcHJvamVjdCBub3IgdGhlIG5hbWVz
IG9mIGl0cyBjb250cmlidXRvcnMKLSAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotICogICAgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgUFJPSkVDVCBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQK
LSAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSAqIEFSRSBESVNDTEFJTUVE
LglJTiBOTyBFVkVOVCBTSEFMTCBUSEUgUFJPSkVDVCBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
Ci0gKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSAqIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KQotICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QKLSAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSAqIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YKLSAqIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZmRlZiBfV0lOMzIKLSNkZWZpbmUgX0NS
VF9TRUNVUkVfTk9fV0FSTklOR1MKLSNlbmRpZgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVk
ZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8c3RkYXJnLmg+Ci0j
aW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWZuZGVmIF9XSU4zMgotI2luY2x1ZGUgPHN5cy9zb2Nr
ZXQuaD4KLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jaW5jbHVkZSA8YXJwYS9pbmV0Lmg+Ci0j
aW5jbHVkZSA8ZXJybm8uaD4KLSNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0jaW5jbHVkZSA8dW5pc3Rk
Lmg+Ci0jZWxzZQotI2luY2x1ZGUgPHdpbnNvY2syLmg+Ci0jaW5jbHVkZSA8d3MydGNwaXAuaD4K
LSNlbmRpZgotI2luY2x1ZGUgPHVzcnNjdHAuaD4KLQotI2RlZmluZSBNQVhfUEFDS0VUX1NJWkUg
KDE8PDE2KQotI2RlZmluZSBMSU5FX0xFTkdUSCAoMTw8MjApCi0jZGVmaW5lIERJU0NBUkRfUFBJ
RCAzOQotCi0jaWZkZWYgX1dJTjMyCi1zdGF0aWMgRFdPUkQgV0lOQVBJCi0jZWxzZQotc3RhdGlj
IHZvaWQgKgotI2VuZGlmCi1oYW5kbGVfcGFja2V0cyh2b2lkICphcmcpCi17Ci0jaWZkZWYgX1dJ
TjMyCi0JU09DS0VUICpmZHA7Ci0jZWxzZQotCWludCAqZmRwOwotI2VuZGlmCi0JY2hhciAqZHVt
cF9idWZmZXI7Ci0Jc3RydWN0IHNjdHBfY29tbW9uX2hlYWRlciAqaGRyOwotCXNzaXplX3QgbGVu
Z3RoOwotCWNoYXIgYnVmZmVyW01BWF9QQUNLRVRfU0laRV07Ci0JdWludDMyX3QgcmVjZWl2ZWRf
Y3JjMzJjLCBjb21wdXRlZF9jcmMzMmM7Ci0KLSNpZmRlZiBfV0lOMzIKLQlmZHAgPSAoU09DS0VU
ICopYXJnOwotI2Vsc2UKLQlmZHAgPSAoaW50ICopYXJnOwotI2VuZGlmCi0JZm9yICg7Oykgewot
I2lmIGRlZmluZWQoX19OZXRCU0RfXykKLQkJcHRocmVhZF90ZXN0Y2FuY2VsKCk7Ci0jZW5kaWYK
LQkJbGVuZ3RoID0gcmVjdigqZmRwLCBidWZmZXIsIE1BWF9QQUNLRVRfU0laRSwgMCk7Ci0JCWlm
IChsZW5ndGggPiAwKSB7Ci0JCQlpZiAoKGR1bXBfYnVmZmVyID0gdXNyc2N0cF9kdW1wcGFja2V0
KGJ1ZmZlciwgKHNpemVfdClsZW5ndGgsIFNDVFBfRFVNUF9JTkJPVU5EKSkgIT0gTlVMTCkgewot
CQkJCS8vZnByaW50ZihzdGRlcnIsICIlcyIsIGR1bXBfYnVmZmVyKTsKLQkJCQl1c3JzY3RwX2Zy
ZWVkdW1wYnVmZmVyKGR1bXBfYnVmZmVyKTsKLQkJCX0KLQkJCWlmICgoc2l6ZV90KWxlbmd0aCA+
PSBzaXplb2Yoc3RydWN0IHNjdHBfY29tbW9uX2hlYWRlcikpIHsKLQkJCQloZHIgPSAoc3RydWN0
IHNjdHBfY29tbW9uX2hlYWRlciAqKWJ1ZmZlcjsKLQkJCQlyZWNlaXZlZF9jcmMzMmMgPSBoZHIt
PmNyYzMyYzsKLQkJCQloZHItPmNyYzMyYyA9IGh0b25sKDApOwotCQkJCWNvbXB1dGVkX2NyYzMy
YyA9IHVzcnNjdHBfY3JjMzJjKGJ1ZmZlciwgKHNpemVfdClsZW5ndGgpOwotCQkJCWhkci0+Y3Jj
MzJjID0gcmVjZWl2ZWRfY3JjMzJjOwotCQkJCWlmIChyZWNlaXZlZF9jcmMzMmMgPT0gY29tcHV0
ZWRfY3JjMzJjKSB7Ci0JCQkJCXVzcnNjdHBfY29ubmlucHV0KGZkcCwgYnVmZmVyLCAoc2l6ZV90
KWxlbmd0aCwgMCk7Ci0JCQkJfSBlbHNlIHsKLQkJCQkJZnByaW50ZihzdGRlcnIsICJXcm9uZyBD
UkMzMmM6IGV4cGVjdGVkICUwOHggcmVjZWl2ZWQgJTA4eFxuIiwKLQkJCQkJICAgICAgICBudG9o
bChjb21wdXRlZF9jcmMzMmMpLCBudG9obChyZWNlaXZlZF9jcmMzMmMpKTsKLQkJCQl9Ci0JCQl9
IGVsc2UgewotCQkJCWZwcmludGYoc3RkZXJyLCAiUGFja2V0IHRvbyBzaG9ydDogbGVuZ3RoICV6
dSIsIChzaXplX3QpbGVuZ3RoKTsKLQkJCX0KLQkJfQotCX0KLSNpZmRlZiBfV0lOMzIKLQlyZXR1
cm4gMDsKLSNlbHNlCi0JcmV0dXJuIChOVUxMKTsKLSNlbmRpZgotfQotCi1zdGF0aWMgaW50Ci1j
b25uX291dHB1dCh2b2lkICphZGRyLCB2b2lkICpidWZmZXIsIHNpemVfdCBsZW5ndGgsIHVpbnQ4
X3QgdG9zLCB1aW50OF90IHNldF9kZikKLXsKLQljaGFyICpkdW1wX2J1ZmZlcjsKLQlzdHJ1Y3Qg
c2N0cF9jb21tb25faGVhZGVyICpoZHI7Ci0jaWZkZWYgX1dJTjMyCi0JU09DS0VUICpmZHA7Ci0j
ZWxzZQotCWludCAqZmRwOwotI2VuZGlmCi0KLSNpZmRlZiBfV0lOMzIKLQlmZHAgPSAoU09DS0VU
ICopYWRkcjsKLSNlbHNlCi0JZmRwID0gKGludCAqKWFkZHI7Ci0jZW5kaWYKLQlpZiAobGVuZ3Ro
ID49IHNpemVvZihzdHJ1Y3Qgc2N0cF9jb21tb25faGVhZGVyKSkgewotCQloZHIgPSAoc3RydWN0
IHNjdHBfY29tbW9uX2hlYWRlciAqKWJ1ZmZlcjsKLQkJaGRyLT5jcmMzMmMgPSB1c3JzY3RwX2Ny
YzMyYyhidWZmZXIsIChzaXplX3QpbGVuZ3RoKTsKLQl9Ci0JaWYgKChkdW1wX2J1ZmZlciA9IHVz
cnNjdHBfZHVtcHBhY2tldChidWZmZXIsIGxlbmd0aCwgU0NUUF9EVU1QX09VVEJPVU5EKSkgIT0g
TlVMTCkgewotCQkvL2ZwcmludGYoc3RkZXJyLCAiJXMiLCBkdW1wX2J1ZmZlcik7Ci0JCXVzcnNj
dHBfZnJlZWR1bXBidWZmZXIoZHVtcF9idWZmZXIpOwotCX0KLSNpZmRlZiBfV0lOMzIKLQlpZiAo
c2VuZCgqZmRwLCBidWZmZXIsIChpbnQpbGVuZ3RoLCAwKSA9PSBTT0NLRVRfRVJST1IpIHsKLQkJ
cmV0dXJuIChXU0FHZXRMYXN0RXJyb3IoKSk7Ci0jZWxzZQotCWlmIChzZW5kKCpmZHAsIGJ1ZmZl
ciwgbGVuZ3RoLCAwKSA8IDApIHsKLQkJcmV0dXJuIChlcnJubyk7Ci0jZW5kaWYKLQl9IGVsc2Ug
ewotCQlyZXR1cm4gKDApOwotCX0KLX0KLQotc3RhdGljIGludAotcmVjZWl2ZV9jYihzdHJ1Y3Qg
c29ja2V0ICpzb2NrLCB1bmlvbiBzY3RwX3NvY2tzdG9yZSBhZGRyLCB2b2lkICpkYXRhLAotICAg
ICAgICAgICBzaXplX3QgZGF0YWxlbiwgc3RydWN0IHNjdHBfcmN2aW5mbyByY3YsIGludCBmbGFn
cywgdm9pZCAqdWxwX2luZm8pCi17Ci0JcHJpbnRmKCJNZXNzYWdlICVwIHJlY2VpdmVkIG9uIHNv
Y2sgPSAlcC5cbiIsIGRhdGEsICh2b2lkICopc29jayk7Ci0JaWYgKGRhdGEpIHsKLQkJaWYgKChm
bGFncyAmIE1TR19OT1RJRklDQVRJT04pID09IDApIHsKLQkJCXByaW50ZigiTWVzc3NhZ2Ugb2Yg
bGVuZ3RoICVkIHJlY2VpdmVkIHZpYSAlcDoldSBvbiBzdHJlYW0gJXUgd2l0aCBTU04gJXUgYW5k
IFRTTiAldSwgUFBJRCAldSwgY29udGV4dCAldSwgZmxhZ3MgJXguXG4iLAotCQkJICAgICAgIChp
bnQpZGF0YWxlbiwKLQkJCSAgICAgICBhZGRyLnNjb25uLnNjb25uX2FkZHIsCi0JCQkgICAgICAg
bnRvaHMoYWRkci5zY29ubi5zY29ubl9wb3J0KSwKLQkJCSAgICAgICByY3YucmN2X3NpZCwKLQkJ
CSAgICAgICByY3YucmN2X3NzbiwKLQkJCSAgICAgICByY3YucmN2X3RzbiwKLQkJCSAgICAgICBu
dG9obChyY3YucmN2X3BwaWQpLAotCQkJICAgICAgIHJjdi5yY3ZfY29udGV4dCwKLQkJCSAgICAg
ICBmbGFncyk7Ci0JCX0KLQkJZnJlZShkYXRhKTsKLQl9IGVsc2UgewotCQl1c3JzY3RwX2RlcmVn
aXN0ZXJfYWRkcmVzcyh1bHBfaW5mbyk7Ci0JCXVzcnNjdHBfY2xvc2Uoc29jayk7Ci0JfQotCXJl
dHVybiAoMSk7Ci19Ci0KLSNpZiAwCi1zdGF0aWMgdm9pZAotcHJpbnRfYWRkcmVzc2VzKHN0cnVj
dCBzb2NrZXQgKnNvY2spCi17Ci0JaW50IGksIG47Ci0Jc3RydWN0IHNvY2thZGRyICphZGRycywg
KmFkZHI7Ci0KLQluID0gdXNyc2N0cF9nZXRsYWRkcnMoc29jaywgMCwgJmFkZHJzKTsKLQlhZGRy
ID0gYWRkcnM7Ci0JZm9yIChpID0gMDsgaSA8IG47IGkrKykgewotCQlzd2l0Y2ggKGFkZHItPnNh
X2ZhbWlseSkgewotCQljYXNlIEFGX0lORVQ6Ci0JCXsKLQkJCXN0cnVjdCBzb2NrYWRkcl9pbiAq
c2luOwotCQkJY2hhciBidWZbSU5FVF9BRERSU1RSTEVOXTsKLQkJCWNvbnN0IGNoYXIgKm5hbWU7
Ci0KLQkJCXNpbiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilhZGRyOwotCQkJbmFtZSA9IGluZXRf
bnRvcChBRl9JTkVULCAmc2luLT5zaW5fYWRkciwgYnVmLCBJTkVUX0FERFJTVFJMRU4pOwotCQkJ
cHJpbnRmKCIlczolZCIsIG5hbWUsIG50b2hzKHNpbi0+c2luX3BvcnQpKTsKLQkJCWJyZWFrOwot
CQl9Ci0JCWNhc2UgQUZfSU5FVDY6Ci0JCXsKLQkJCXN0cnVjdCBzb2NrYWRkcl9pbjYgKnNpbjY7
Ci0JCQljaGFyIGJ1ZltJTkVUNl9BRERSU1RSTEVOXTsKLQkJCWNvbnN0IGNoYXIgKm5hbWU7Ci0K
LQkJCXNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKWFkZHI7Ci0JCQluYW1lID0gaW5ldF9u
dG9wKEFGX0lORVQ2LCAmc2luNi0+c2luNl9hZGRyLCBidWYsIElORVQ2X0FERFJTVFJMRU4pOwot
CQkJcHJpbnRmKCIlczolZCIsIG5hbWUsIG50b2hzKHNpbjYtPnNpbjZfcG9ydCkpOwotCQkJYnJl
YWs7Ci0JCX0KLQkJY2FzZSBBRl9DT05OOgotCQl7Ci0JCQlzdHJ1Y3Qgc29ja2FkZHJfY29ubiAq
c2Nvbm47Ci0KLQkJCXNjb25uID0gKHN0cnVjdCBzb2NrYWRkcl9jb25uICopYWRkcjsKLQkJCXBy
aW50ZigiJXA6JWQiLCBzY29ubi0+c2Nvbm5fYWRkciwgbnRvaHMoc2Nvbm4tPnNjb25uX3BvcnQp
KTsKLQkJCWJyZWFrOwotCQl9Ci0JCWRlZmF1bHQ6Ci0JCQlwcmludGYoIlVua25vd24gZmFtaWx5
OiAlZCIsIGFkZHItPnNhX2ZhbWlseSk7Ci0JCQlicmVhazsKLQkJfQotCQlhZGRyID0gKHN0cnVj
dCBzb2NrYWRkciAqKSgoY2FkZHJfdClhZGRyICsgYWRkci0+c2FfbGVuKTsKLQkJaWYgKGkgIT0g
biAtIDEpIHsKLQkJCXByaW50ZigiLCIpOwotCQl9Ci0JfQotCWlmIChuID4gMCkgewotCQl1c3Jz
Y3RwX2ZyZWVsYWRkcnMoYWRkcnMpOwotCX0KLQlwcmludGYoIjwtPiIpOwotCW4gPSB1c3JzY3Rw
X2dldHBhZGRycyhzb2NrLCAwLCAmYWRkcnMpOwotCWFkZHIgPSBhZGRyczsKLQlmb3IgKGkgPSAw
OyBpIDwgbjsgaSsrKSB7Ci0JCXN3aXRjaCAoYWRkci0+c2FfZmFtaWx5KSB7Ci0JCWNhc2UgQUZf
SU5FVDoKLQkJewotCQkJc3RydWN0IHNvY2thZGRyX2luICpzaW47Ci0JCQljaGFyIGJ1ZltJTkVU
X0FERFJTVFJMRU5dOwotCQkJY29uc3QgY2hhciAqbmFtZTsKLQotCQkJc2luID0gKHN0cnVjdCBz
b2NrYWRkcl9pbiAqKWFkZHI7Ci0JCQluYW1lID0gaW5ldF9udG9wKEFGX0lORVQsICZzaW4tPnNp
bl9hZGRyLCBidWYsIElORVRfQUREUlNUUkxFTik7Ci0JCQlwcmludGYoIiVzOiVkIiwgbmFtZSwg
bnRvaHMoc2luLT5zaW5fcG9ydCkpOwotCQkJYnJlYWs7Ci0JCX0KLQkJY2FzZSBBRl9JTkVUNjoK
LQkJewotCQkJc3RydWN0IHNvY2thZGRyX2luNiAqc2luNjsKLQkJCWNoYXIgYnVmW0lORVQ2X0FE
RFJTVFJMRU5dOwotCQkJY29uc3QgY2hhciAqbmFtZTsKLQotCQkJc2luNiA9IChzdHJ1Y3Qgc29j
a2FkZHJfaW42ICopYWRkcjsKLQkJCW5hbWUgPSBpbmV0X250b3AoQUZfSU5FVDYsICZzaW42LT5z
aW42X2FkZHIsIGJ1ZiwgSU5FVDZfQUREUlNUUkxFTik7Ci0JCQlwcmludGYoIiVzOiVkIiwgbmFt
ZSwgbnRvaHMoc2luNi0+c2luNl9wb3J0KSk7Ci0JCQlicmVhazsKLQkJfQotCQljYXNlIEFGX0NP
Tk46Ci0JCXsKLQkJCXN0cnVjdCBzb2NrYWRkcl9jb25uICpzY29ubjsKLQotCQkJc2Nvbm4gPSAo
c3RydWN0IHNvY2thZGRyX2Nvbm4gKilhZGRyOwotCQkJcHJpbnRmKCIlcDolZCIsIHNjb25uLT5z
Y29ubl9hZGRyLCBudG9ocyhzY29ubi0+c2Nvbm5fcG9ydCkpOwotCQkJYnJlYWs7Ci0JCX0KLQkJ
ZGVmYXVsdDoKLQkJCXByaW50ZigiVW5rbm93biBmYW1pbHk6ICVkIiwgYWRkci0+c2FfZmFtaWx5
KTsKLQkJCWJyZWFrOwotCQl9Ci0JCWFkZHIgPSAoc3RydWN0IHNvY2thZGRyICopKChjYWRkcl90
KWFkZHIgKyBhZGRyLT5zYV9sZW4pOwotCQlpZiAoaSAhPSBuIC0gMSkgewotCQkJcHJpbnRmKCIs
Iik7Ci0JCX0KLQl9Ci0JaWYgKG4gPiAwKSB7Ci0JCXVzcnNjdHBfZnJlZXBhZGRycyhhZGRycyk7
Ci0JfQotCXByaW50ZigiXG4iKTsKLX0KLSNlbmRpZgotCi12b2lkCi1kZWJ1Z19wcmludGYoY29u
c3QgY2hhciAqZm9ybWF0LCAuLi4pCi17Ci0JdmFfbGlzdCBhcDsKLQotCXZhX3N0YXJ0KGFwLCBm
b3JtYXQpOwotCXZwcmludGYoZm9ybWF0LCBhcCk7Ci0JdmFfZW5kKGFwKTsKLX0KLQotaW50Ci1t
YWluKHZvaWQpCi17Ci0Jc3RydWN0IHNvY2thZGRyX2luIHNpbl9zLCBzaW5fYzsKLQlzdHJ1Y3Qg
c29ja2FkZHJfY29ubiBzY29ubjsKLSNpZmRlZiBfV0lOMzIKLQlTT0NLRVQgZmRfYywgZmRfczsK
LSNlbHNlCi0JaW50IGZkX2MsIGZkX3M7Ci0jZW5kaWYKLQlzdHJ1Y3Qgc29ja2V0ICpzX2MsICpz
X3MsICpzX2w7Ci0jaWZkZWYgX1dJTjMyCi0JSEFORExFIHRpZF9jLCB0aWRfczsKLSNlbHNlCi0J
cHRocmVhZF90IHRpZF9jLCB0aWRfczsKLSNlbmRpZgotCWludCBjdXJfYnVmX3NpemUsIHNuZF9i
dWZfc2l6ZSwgcmN2X2J1Zl9zaXplOwotCXNvY2tsZW5fdCBvcHRfbGVuOwotCXN0cnVjdCBzY3Rw
X3NuZGluZm8gc25kaW5mbzsKLQljaGFyICpsaW5lOwotI2lmZGVmIF9XSU4zMgotCVdTQURBVEEg
d3NhRGF0YTsKLSNlbmRpZgotCi0jaWZkZWYgX1dJTjMyCi0JaWYgKFdTQVN0YXJ0dXAoTUFLRVdP
UkQoMiwyKSwgJndzYURhdGEpICE9IDApIHsKLQkJcHJpbnRmKCJXU0FTdGFydHVwIGZhaWxlZFxu
Iik7Ci0JCWV4aXQgKEVYSVRfRkFJTFVSRSk7Ci0JfQotI2VuZGlmCi0JdXNyc2N0cF9pbml0KDAs
IGNvbm5fb3V0cHV0LCBkZWJ1Z19wcmludGYpOwotCXVzcnNjdHBfZW5hYmxlX2NyYzMyY19vZmZs
b2FkKCk7Ci0JLyogc2V0IHVwIGEgY29ubmVjdGVkIFVEUCBzb2NrZXQgKi8KLSNpZmRlZiBfV0lO
MzIKLQlpZiAoKGZkX2MgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgSVBQUk9UT19VRFAp
KSA9PSBJTlZBTElEX1NPQ0tFVCkgewotCQlwcmludGYoInNvY2tldCgpIGZhaWxlZCB3aXRoIGVy
cm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0J
fQotCWlmICgoZmRfcyA9IHNvY2tldChBRl9JTkVULCBTT0NLX0RHUkFNLCBJUFBST1RPX1VEUCkp
ID09IElOVkFMSURfU09DS0VUKSB7Ci0JCXByaW50Zigic29ja2V0KCkgZmFpbGVkIHdpdGggZXJy
b3I6ICVkXG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7Ci0JCWV4aXQoRVhJVF9GQUlMVVJFKTsKLQl9
Ci0jZWxzZQotCWlmICgoZmRfYyA9IHNvY2tldChBRl9JTkVULCBTT0NLX0RHUkFNLCBJUFBST1RP
X1VEUCkpIDwgMCkgewotCQlwZXJyb3IoInNvY2tldCIpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7
Ci0JfQotCWlmICgoZmRfcyA9IHNvY2tldChBRl9JTkVULCBTT0NLX0RHUkFNLCBJUFBST1RPX1VE
UCkpIDwgMCkgewotCQlwZXJyb3IoInNvY2tldCIpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0J
fQotI2VuZGlmCi0JbWVtc2V0KCZzaW5fYywgMCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikp
OwotCXNpbl9jLnNpbl9mYW1pbHkgPSBBRl9JTkVUOwotI2lmZGVmIEhBVkVfU0lOX0xFTgotCXNp
bl9jLnNpbl9sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKTsKLSNlbmRpZgotCXNpbl9j
LnNpbl9wb3J0ID0gaHRvbnMoOTg5OSk7Ci0Jc2luX2Muc2luX2FkZHIuc19hZGRyID0gaHRvbmwo
SU5BRERSX0xPT1BCQUNLKTsKLQltZW1zZXQoJnNpbl9zLCAwLCBzaXplb2Yoc3RydWN0IHNvY2th
ZGRyX2luKSk7Ci0Jc2luX3Muc2luX2ZhbWlseSA9IEFGX0lORVQ7Ci0jaWZkZWYgSEFWRV9TSU5f
TEVOCi0Jc2luX3Muc2luX2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pOwotI2VuZGlm
Ci0Jc2luX3Muc2luX3BvcnQgPSBodG9ucyg5OTAxKTsKLQlzaW5fcy5zaW5fYWRkci5zX2FkZHIg
PSBodG9ubChJTkFERFJfTE9PUEJBQ0spOwotI2lmZGVmIF9XSU4zMgotCWlmIChiaW5kKGZkX2Ms
IChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luX2MsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKSA9
PSBTT0NLRVRfRVJST1IpIHsKLQkJcHJpbnRmKCJiaW5kKCkgZmFpbGVkIHdpdGggZXJyb3I6ICVk
XG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7Ci0JCWV4aXQoRVhJVF9GQUlMVVJFKTsKLQl9Ci0JaWYg
KGJpbmQoZmRfcywgKHN0cnVjdCBzb2NrYWRkciAqKSZzaW5fcywgc2l6ZW9mKHN0cnVjdCBzb2Nr
YWRkcl9pbikpID09IFNPQ0tFVF9FUlJPUikgewotCQlwcmludGYoImJpbmQoKSBmYWlsZWQgd2l0
aCBlcnJvcjogJWRcbiIsIFdTQUdldExhc3RFcnJvcigpKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUp
OwotCX0KLSNlbHNlCi0JaWYgKGJpbmQoZmRfYywgKHN0cnVjdCBzb2NrYWRkciAqKSZzaW5fYywg
c2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpIDwgMCkgewotCQlwZXJyb3IoImJpbmQiKTsKLQkJ
ZXhpdChFWElUX0ZBSUxVUkUpOwotCX0KLQlpZiAoYmluZChmZF9zLCAoc3RydWN0IHNvY2thZGRy
ICopJnNpbl9zLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSkgPCAwKSB7Ci0JCXBlcnJvcigi
YmluZCIpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0JfQotI2VuZGlmCi0jaWZkZWYgX1dJTjMy
Ci0JaWYgKGNvbm5lY3QoZmRfYywgKHN0cnVjdCBzb2NrYWRkciAqKSZzaW5fcywgc2l6ZW9mKHN0
cnVjdCBzb2NrYWRkcl9pbikpID09IFNPQ0tFVF9FUlJPUikgewotCQlwcmludGYoImNvbm5lY3Qo
KSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIFdTQUdldExhc3RFcnJvcigpKTsKLQkJZXhpdChF
WElUX0ZBSUxVUkUpOwotCX0KLQlpZiAoY29ubmVjdChmZF9zLCAoc3RydWN0IHNvY2thZGRyICop
JnNpbl9jLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSkgPT0gU09DS0VUX0VSUk9SKSB7Ci0J
CXByaW50ZigiY29ubmVjdCgpIGZhaWxlZCB3aXRoIGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVy
cm9yKCkpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0JfQotI2Vsc2UKLQlpZiAoY29ubmVjdChm
ZF9jLCAoc3RydWN0IHNvY2thZGRyICopJnNpbl9zLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2lu
KSkgPCAwKSB7Ci0JCXBlcnJvcigiY29ubmVjdCIpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0J
fQotCWlmIChjb25uZWN0KGZkX3MsIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luX2MsIHNpemVvZihz
dHJ1Y3Qgc29ja2FkZHJfaW4pKSA8IDApIHsKLQkJcGVycm9yKCJjb25uZWN0Iik7Ci0JCWV4aXQo
RVhJVF9GQUlMVVJFKTsKLQl9Ci0jZW5kaWYKLSNpZmRlZiBfV0lOMzIKLQl0aWRfYyA9IENyZWF0
ZVRocmVhZChOVUxMLCAwLCAmaGFuZGxlX3BhY2tldHMsICh2b2lkICopJmZkX2MsIDAsIE5VTEwp
OwotCXRpZF9zID0gQ3JlYXRlVGhyZWFkKE5VTEwsIDAsICZoYW5kbGVfcGFja2V0cywgKHZvaWQg
KikmZmRfcywgMCwgTlVMTCk7Ci0jZWxzZQotCWlmIChwdGhyZWFkX2NyZWF0ZSgmdGlkX2MsIE5V
TEwsICZoYW5kbGVfcGFja2V0cywgKHZvaWQgKikmZmRfYykpIHsKLQkJcGVycm9yKCJwdGhyZWFk
X2NyZWF0ZSB0aWRfYyIpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0JfQotCi0JaWYgKHB0aHJl
YWRfY3JlYXRlKCZ0aWRfcywgTlVMTCwgJmhhbmRsZV9wYWNrZXRzLCAodm9pZCAqKSZmZF9zKSkg
ewotCQlwZXJyb3IoInB0aHJlYWRfY3JlYXRlIHRpZF9zIik7Ci0JCWV4aXQoRVhJVF9GQUlMVVJF
KTsKLQl9OwotI2VuZGlmCi0jaWZkZWYgU0NUUF9ERUJVRwotCXVzcnNjdHBfc3lzY3RsX3NldF9z
Y3RwX2RlYnVnX29uKFNDVFBfREVCVUdfQUxMKTsKLSNlbmRpZgotCXVzcnNjdHBfc3lzY3RsX3Nl
dF9zY3RwX2Vjbl9lbmFibGUoMCk7Ci0JdXNyc2N0cF9yZWdpc3Rlcl9hZGRyZXNzKCh2b2lkICop
JmZkX2MpOwotCXVzcnNjdHBfcmVnaXN0ZXJfYWRkcmVzcygodm9pZCAqKSZmZF9zKTsKLQlpZiAo
KHNfYyA9IHVzcnNjdHBfc29ja2V0KEFGX0NPTk4sIFNPQ0tfU1RSRUFNLCBJUFBST1RPX1NDVFAs
IHJlY2VpdmVfY2IsIE5VTEwsIDAsICZmZF9jKSkgPT0gTlVMTCkgewotCQlwZXJyb3IoInVzcnNj
dHBfc29ja2V0Iik7Ci0JCWV4aXQoRVhJVF9GQUlMVVJFKTsKLQl9Ci0Jb3B0X2xlbiA9IChzb2Nr
bGVuX3Qpc2l6ZW9mKGludCk7Ci0JY3VyX2J1Zl9zaXplID0gMDsKLQlpZiAodXNyc2N0cF9nZXRz
b2Nrb3B0KHNfYywgU09MX1NPQ0tFVCwgU09fU05EQlVGLCAmY3VyX2J1Zl9zaXplLCAmb3B0X2xl
bikgPCAwKSB7Ci0JCXBlcnJvcigidXNyc2N0cF9nZXRzb2Nrb3B0Iik7Ci0JCWV4aXQoRVhJVF9G
QUlMVVJFKTsKLQl9Ci0JcHJpbnRmKCJDaGFuZ2Ugc2VuZCBzb2NrZXQgYnVmZmVyIHNpemUgZnJv
bSAlZCAiLCBjdXJfYnVmX3NpemUpOwotCXNuZF9idWZfc2l6ZSA9IDE8PDIwOyAvKiAxIE1CICov
Ci0JaWYgKHVzcnNjdHBfc2V0c29ja29wdChzX2MsIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgJnNu
ZF9idWZfc2l6ZSwgc2l6ZW9mKGludCkpIDwgMCkgewotCQlwZXJyb3IoInVzcnNjdHBfc2V0c29j
a29wdCIpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0JfQotCW9wdF9sZW4gPSAoc29ja2xlbl90
KXNpemVvZihpbnQpOwotCWN1cl9idWZfc2l6ZSA9IDA7Ci0JaWYgKHVzcnNjdHBfZ2V0c29ja29w
dChzX2MsIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgJmN1cl9idWZfc2l6ZSwgJm9wdF9sZW4pIDwg
MCkgewotCQlwZXJyb3IoInVzcnNjdHBfZ2V0c29ja29wdCIpOwotCQlleGl0KEVYSVRfRkFJTFVS
RSk7Ci0JfQotCXByaW50ZigidG8gJWQuXG4iLCBjdXJfYnVmX3NpemUpOwotCWlmICgoc19sID0g
dXNyc2N0cF9zb2NrZXQoQUZfQ09OTiwgU09DS19TVFJFQU0sIElQUFJPVE9fU0NUUCwgcmVjZWl2
ZV9jYiwgTlVMTCwgMCwgJmZkX3MpKSA9PSBOVUxMKSB7Ci0JCXBlcnJvcigidXNyc2N0cF9zb2Nr
ZXQiKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwotCX0KLQlvcHRfbGVuID0gKHNvY2tsZW5fdClz
aXplb2YoaW50KTsKLQljdXJfYnVmX3NpemUgPSAwOwotCWlmICh1c3JzY3RwX2dldHNvY2tvcHQo
c19sLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsICZjdXJfYnVmX3NpemUsICZvcHRfbGVuKSA8IDAp
IHsKLQkJcGVycm9yKCJ1c3JzY3RwX2dldHNvY2tvcHQiKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUp
OwotCX0KLQlwcmludGYoIkNoYW5nZSByZWNlaXZlIHNvY2tldCBidWZmZXIgc2l6ZSBmcm9tICVk
ICIsIGN1cl9idWZfc2l6ZSk7Ci0JcmN2X2J1Zl9zaXplID0gMTw8MTY7IC8qIDY0IEtCICovCi0J
aWYgKHVzcnNjdHBfc2V0c29ja29wdChzX2wsIFNPTF9TT0NLRVQsIFNPX1JDVkJVRiwgJnJjdl9i
dWZfc2l6ZSwgc2l6ZW9mKGludCkpIDwgMCkgewotCQlwZXJyb3IoInVzcnNjdHBfc2V0c29ja29w
dCIpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0JfQotCW9wdF9sZW4gPSAoc29ja2xlbl90KXNp
emVvZihpbnQpOwotCWN1cl9idWZfc2l6ZSA9IDA7Ci0JaWYgKHVzcnNjdHBfZ2V0c29ja29wdChz
X2wsIFNPTF9TT0NLRVQsIFNPX1JDVkJVRiwgJmN1cl9idWZfc2l6ZSwgJm9wdF9sZW4pIDwgMCkg
ewotCQlwZXJyb3IoInVzcnNjdHBfZ2V0c29ja29wdCIpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7
Ci0JfQotCXByaW50ZigidG8gJWQuXG4iLCBjdXJfYnVmX3NpemUpOwotCS8qIEJpbmQgdGhlIGNs
aWVudCBzaWRlLiAqLwotCW1lbXNldCgmc2Nvbm4sIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJf
Y29ubikpOwotCXNjb25uLnNjb25uX2ZhbWlseSA9IEFGX0NPTk47Ci0jaWZkZWYgSEFWRV9TQ09O
Tl9MRU4KLQlzY29ubi5zY29ubl9sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2Nvbm4pOwot
I2VuZGlmCi0Jc2Nvbm4uc2Nvbm5fcG9ydCA9IGh0b25zKDUwMDEpOwotCXNjb25uLnNjb25uX2Fk
ZHIgPSAmZmRfYzsKLQlpZiAodXNyc2N0cF9iaW5kKHNfYywgKHN0cnVjdCBzb2NrYWRkciAqKSZz
Y29ubiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9jb25uKSkgPCAwKSB7Ci0JCXBlcnJvcigidXNy
c2N0cF9iaW5kIik7Ci0JCWV4aXQoRVhJVF9GQUlMVVJFKTsKLQl9Ci0JLyogQmluZCB0aGUgc2Vy
dmVyIHNpZGUuICovCi0JbWVtc2V0KCZzY29ubiwgMCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9j
b25uKSk7Ci0Jc2Nvbm4uc2Nvbm5fZmFtaWx5ID0gQUZfQ09OTjsKLSNpZmRlZiBIQVZFX1NDT05O
X0xFTgotCXNjb25uLnNjb25uX2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfY29ubik7Ci0j
ZW5kaWYKLQlzY29ubi5zY29ubl9wb3J0ID0gaHRvbnMoNTAwMSk7Ci0Jc2Nvbm4uc2Nvbm5fYWRk
ciA9ICZmZF9zOwotCWlmICh1c3JzY3RwX2JpbmQoc19sLCAoc3RydWN0IHNvY2thZGRyICopJnNj
b25uLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2Nvbm4pKSA8IDApIHsKLQkJcGVycm9yKCJ1c3Jz
Y3RwX2JpbmQiKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwotCX0KLQkvKiBNYWtlIHNlcnZlciBz
aWRlIHBhc3NpdmUuLi4gKi8KLQlpZiAodXNyc2N0cF9saXN0ZW4oc19sLCAxKSA8IDApIHsKLQkJ
cGVycm9yKCJ1c3JzY3RwX2xpc3RlbiIpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0JfQotCS8q
IEluaXRpYXRlIHRoZSBoYW5kc2hha2UgKi8KLQltZW1zZXQoJnNjb25uLCAwLCBzaXplb2Yoc3Ry
dWN0IHNvY2thZGRyX2Nvbm4pKTsKLQlzY29ubi5zY29ubl9mYW1pbHkgPSBBRl9DT05OOwotI2lm
ZGVmIEhBVkVfU0NPTk5fTEVOCi0Jc2Nvbm4uc2Nvbm5fbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2Nr
YWRkcl9jb25uKTsKLSNlbmRpZgotCXNjb25uLnNjb25uX3BvcnQgPSBodG9ucyg1MDAxKTsKLQlz
Y29ubi5zY29ubl9hZGRyID0gJmZkX2M7Ci0JaWYgKHVzcnNjdHBfY29ubmVjdChzX2MsIChzdHJ1
Y3Qgc29ja2FkZHIgKikmc2Nvbm4sIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfY29ubikpIDwgMCkg
ewotCQlwZXJyb3IoInVzcnNjdHBfY29ubmVjdCIpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0J
fQotCWlmICgoc19zID0gdXNyc2N0cF9hY2NlcHQoc19sLCBOVUxMLCBOVUxMKSkgPT0gTlVMTCkg
ewotCQlwZXJyb3IoInVzcnNjdHBfYWNjZXB0Iik7Ci0JCWV4aXQoRVhJVF9GQUlMVVJFKTsKLQl9
Ci0JdXNyc2N0cF9jbG9zZShzX2wpOwotCWlmICgobGluZSA9IG1hbGxvYyhMSU5FX0xFTkdUSCkp
ID09IE5VTEwpIHsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwotCX0KLQltZW1zZXQobGluZSwgJ0En
LCBMSU5FX0xFTkdUSCk7Ci0Jc25kaW5mby5zbmRfc2lkID0gMTsKLQlzbmRpbmZvLnNuZF9mbGFn
cyA9IDA7Ci0Jc25kaW5mby5zbmRfcHBpZCA9IGh0b25sKERJU0NBUkRfUFBJRCk7Ci0Jc25kaW5m
by5zbmRfY29udGV4dCA9IDA7Ci0Jc25kaW5mby5zbmRfYXNzb2NfaWQgPSAwOwotCS8qIFNlbmQg
YSAxIE1CIG1lc3NhZ2UgKi8KLQlpZiAodXNyc2N0cF9zZW5kdihzX2MsIGxpbmUsIExJTkVfTEVO
R1RILCBOVUxMLCAwLCAodm9pZCAqKSZzbmRpbmZvLAotCSAgICAgICAgICAgICAgICAgKHNvY2ts
ZW5fdClzaXplb2Yoc3RydWN0IHNjdHBfc25kaW5mbyksIFNDVFBfU0VORFZfU05ESU5GTywgMCkg
PCAwKSB7Ci0JCXBlcnJvcigidXNyc2N0cF9zZW5kdiIpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7
Ci0JfQotCWZyZWUobGluZSk7Ci0JdXNyc2N0cF9zaHV0ZG93bihzX2MsIFNIVVRfV1IpOwotCi0J
d2hpbGUgKHVzcnNjdHBfZmluaXNoKCkgIT0gMCkgewotI2lmZGVmIF9XSU4zMgotCQlTbGVlcCgx
MDAwKTsKLSNlbHNlCi0JCXNsZWVwKDEpOwotI2VuZGlmCi0JfQotI2lmZGVmIF9XSU4zMgotCVRl
cm1pbmF0ZVRocmVhZCh0aWRfYywgMCk7Ci0JV2FpdEZvclNpbmdsZU9iamVjdCh0aWRfYywgSU5G
SU5JVEUpOwotCVRlcm1pbmF0ZVRocmVhZCh0aWRfcywgMCk7Ci0JV2FpdEZvclNpbmdsZU9iamVj
dCh0aWRfcywgSU5GSU5JVEUpOwotCWlmIChjbG9zZXNvY2tldChmZF9jKSA9PSBTT0NLRVRfRVJS
T1IpIHsKLQkJcHJpbnRmKCJjbG9zZXNvY2tldCgpIGZhaWxlZCB3aXRoIGVycm9yOiAlZFxuIiwg
V1NBR2V0TGFzdEVycm9yKCkpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0JfQotCWlmIChjbG9z
ZXNvY2tldChmZF9zKSA9PSBTT0NLRVRfRVJST1IpIHsKLQkJcHJpbnRmKCJjbG9zZXNvY2tldCgp
IGZhaWxlZCB3aXRoIGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOwotCQlleGl0KEVY
SVRfRkFJTFVSRSk7Ci0JfQotCVdTQUNsZWFudXAoKTsKLSNlbHNlCi0JcHRocmVhZF9jYW5jZWwo
dGlkX2MpOwotCXB0aHJlYWRfam9pbih0aWRfYywgTlVMTCk7Ci0JcHRocmVhZF9jYW5jZWwodGlk
X3MpOwotCXB0aHJlYWRfam9pbih0aWRfcywgTlVMTCk7Ci0JaWYgKGNsb3NlKGZkX2MpIDwgMCkg
ewotCQlwZXJyb3IoImNsb3NlIik7Ci0JCWV4aXQoRVhJVF9GQUlMVVJFKTsKLQl9Ci0JaWYgKGNs
b3NlKGZkX3MpIDwgMCkgewotCQlwZXJyb3IoImNsb3NlIik7Ci0JCWV4aXQoRVhJVF9GQUlMVVJF
KTsKLQl9Ci0jZW5kaWYKLQlyZXR1cm4gKDApOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJv
Z3JhbXMvZWtyX2xvb3BfdXBjYWxsLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9la3JfbG9vcF91cGNh
bGwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zZGI0ODBhNzI5YzM0YmYyZTFkOGM4MzFmNDkxMzQ4ZTkxZmM5NDQw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvZWtyX2xvb3BfdXBjYWxsLmMK
QEAgLTAsMCArMSw3MjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMyBNaWNoYWVs
IFR1ZXhlbgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjAgRmVsaXggV2VpbnJhbmsKKyAqCisg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBv
ZiB0aGUgcHJvamVjdCBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhp
cyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUFJPSkVDVCBBTkQg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELglJTiBOTyBFVkVOVCBTSEFMTCBUSEUgUFJPSkVD
VCBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisK
Ky8qCisgKiBVc2FnZTogZWtyX2xvb3AgW2NsaWVudF9wb3J0XSBbc2VydmVyX3BvcnRdIFtjcmMz
MmMgb2ZmbG9hZGluZyA8MC8xPl0KKyAqLworCisjaWZkZWYgX1dJTjMyCisjZGVmaW5lIF9DUlRf
U0VDVVJFX05PX1dBUk5JTkdTCisjZW5kaWYKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUg
PHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2lu
Y2x1ZGUgPHN5cy90eXBlcy5oPgorI2lmbmRlZiBfV0lOMzIKKyNpbmNsdWRlIDxzeXMvc29ja2V0
Lmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorI2lu
Y2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5o
PgorI2Vsc2UKKyNpbmNsdWRlIDx3aW5zb2NrMi5oPgorI2luY2x1ZGUgPHdzMnRjcGlwLmg+Cisj
ZW5kaWYKKyNpbmNsdWRlIDx1c3JzY3RwLmg+CisjaW5jbHVkZSAicHJvZ3JhbXNfaGVscGVyLmgi
CisKKyNkZWZpbmUgTUFYX1BBQ0tFVF9TSVpFICgxPDwxNikKKyNkZWZpbmUgTElORV9MRU5HVEgg
KDE8PDIwKQorI2RlZmluZSBESVNDQVJEX1BQSUQgMzkKKyNkZWZpbmUgTlVNQkVSX09GX1NURVBT
IDEwCisKK3N0YXRpYyB1aW50OF90IGNyYzMyY19vZmZsb2FkaW5nID0gMDsKKworc3RydWN0IHVw
Y2FsbF9tZXRhIHsKKwl1aW50OF90IHNlbmRlcjsKKwl2b2lkKiBhZGRyOworfTsKKworI2lmZGVm
IF9XSU4zMgorc3RhdGljIERXT1JEIFdJTkFQSQorI2Vsc2UKK3N0YXRpYyB2b2lkICoKKyNlbmRp
ZgoraGFuZGxlX3BhY2tldHModm9pZCAqYXJnKQoreworI2lmZGVmIF9XSU4zMgorCVNPQ0tFVCAq
ZmRwOworI2Vsc2UKKwlpbnQgKmZkcDsKKyNlbmRpZgorCWNoYXIgKmR1bXBfYnVmOworCXN0cnVj
dCBzY3RwX2NvbW1vbl9oZWFkZXIgKmhkcjsKKwlzc2l6ZV90IGxlbmd0aDsKKwljaGFyIGJ1ZltN
QVhfUEFDS0VUX1NJWkVdOworCXVpbnQzMl90IHJlY2VpdmVkX2NyYzMyYywgY29tcHV0ZWRfY3Jj
MzJjOworCisjaWZkZWYgX1dJTjMyCisJZmRwID0gKFNPQ0tFVCAqKWFyZzsKKyNlbHNlCisJZmRw
ID0gKGludCAqKWFyZzsKKyNlbmRpZgorCWZvciAoOzspIHsKKyNpZiBkZWZpbmVkKF9fTmV0QlNE
X18pCisJCXB0aHJlYWRfdGVzdGNhbmNlbCgpOworI2VuZGlmCisJCWxlbmd0aCA9IHJlY3YoKmZk
cCwgYnVmLCBNQVhfUEFDS0VUX1NJWkUsIDApOworCQlpZiAobGVuZ3RoID4gMCkgeworCQkJaWYg
KChkdW1wX2J1ZiA9IHVzcnNjdHBfZHVtcHBhY2tldChidWYsIChzaXplX3QpbGVuZ3RoLCBTQ1RQ
X0RVTVBfSU5CT1VORCkpICE9IE5VTEwpIHsKKwkJCQkvL2RlYnVnX3ByaW50Zl9jbGVhbigiJXNc
biIsIGR1bXBfYnVmKTsKKwkJCQl1c3JzY3RwX2ZyZWVkdW1wYnVmZmVyKGR1bXBfYnVmKTsKKwkJ
CX0KKworCQkJaWYgKGNyYzMyY19vZmZsb2FkaW5nKSB7CisJCQkJaWYgKChzaXplX3QpbGVuZ3Ro
ID49IHNpemVvZihzdHJ1Y3Qgc2N0cF9jb21tb25faGVhZGVyKSkgeworCQkJCQloZHIgPSAoc3Ry
dWN0IHNjdHBfY29tbW9uX2hlYWRlciAqKWJ1ZjsKKwkJCQkJcmVjZWl2ZWRfY3JjMzJjID0gaGRy
LT5jcmMzMmM7CisJCQkJCWhkci0+Y3JjMzJjID0gaHRvbmwoMCk7CisJCQkJCWNvbXB1dGVkX2Ny
YzMyYyA9IHVzcnNjdHBfY3JjMzJjKGJ1ZiwgKHNpemVfdClsZW5ndGgpOworCQkJCQloZHItPmNy
YzMyYyA9IHJlY2VpdmVkX2NyYzMyYzsKKwkJCQkJaWYgKHJlY2VpdmVkX2NyYzMyYyA9PSBjb21w
dXRlZF9jcmMzMmMpIHsKKwkJCQkJCXVzcnNjdHBfY29ubmlucHV0KGZkcCwgYnVmLCAoc2l6ZV90
KWxlbmd0aCwgMCk7CisJCQkJCX0gZWxzZSB7CisJCQkJCQlkZWJ1Z19wcmludGYoIldyb25nIENS
QzMyYzogZXhwZWN0ZWQgJTA4eCByZWNlaXZlZCAlMDh4XG4iLAorCQkJCQkJICAgICAgICAgICAg
IG50b2hsKGNvbXB1dGVkX2NyYzMyYyksIG50b2hsKHJlY2VpdmVkX2NyYzMyYykpOworCQkJCQl9
CisJCQkJfSBlbHNlIHsKKwkJCQkJZGVidWdfcHJpbnRmKCJQYWNrZXQgdG9vIHNob3J0OiBsZW5n
dGggJXpkIiwgbGVuZ3RoKTsKKwkJCQl9CisJCQl9IGVsc2UgeworCQkJCXVzcnNjdHBfY29ubmlu
cHV0KGZkcCwgYnVmLCAoc2l6ZV90KWxlbmd0aCwgMCk7CisJCQl9CisJCX0KKwl9CisjaWZkZWYg
X1dJTjMyCisJcmV0dXJuIDA7CisjZWxzZQorCXJldHVybiAoTlVMTCk7CisjZW5kaWYKK30KKwor
c3RhdGljIGludAorY29ubl9vdXRwdXQodm9pZCAqYWRkciwgdm9pZCAqYnVmLCBzaXplX3QgbGVu
Z3RoLCB1aW50OF90IHRvcywgdWludDhfdCBzZXRfZGYpCit7CisJY2hhciAqZHVtcF9idWY7CisJ
c3RydWN0IHNjdHBfY29tbW9uX2hlYWRlciAqaGRyOworI2lmZGVmIF9XSU4zMgorCVNPQ0tFVCAq
ZmRwOworI2Vsc2UKKwlpbnQgKmZkcDsKKyNlbmRpZgorCisjaWZkZWYgX1dJTjMyCisJZmRwID0g
KFNPQ0tFVCAqKWFkZHI7CisjZWxzZQorCWZkcCA9IChpbnQgKilhZGRyOworI2VuZGlmCisJaWYg
KGNyYzMyY19vZmZsb2FkaW5nICYmIGxlbmd0aCA+PSBzaXplb2Yoc3RydWN0IHNjdHBfY29tbW9u
X2hlYWRlcikpIHsKKwkJaGRyID0gKHN0cnVjdCBzY3RwX2NvbW1vbl9oZWFkZXIgKilidWY7CisJ
CWhkci0+Y3JjMzJjID0gdXNyc2N0cF9jcmMzMmMoYnVmLCAoc2l6ZV90KWxlbmd0aCk7CisJfQor
CisJaWYgKChkdW1wX2J1ZiA9IHVzcnNjdHBfZHVtcHBhY2tldChidWYsIGxlbmd0aCwgU0NUUF9E
VU1QX09VVEJPVU5EKSkgIT0gTlVMTCkgeworCQkvL2RlYnVnX3ByaW50Zl9jbGVhbigiJXNcbiIs
IGR1bXBfYnVmKTsKKwkJdXNyc2N0cF9mcmVlZHVtcGJ1ZmZlcihkdW1wX2J1Zik7CisJfQorI2lm
ZGVmIF9XSU4zMgorCWlmIChzZW5kKCpmZHAsIGJ1ZiwgKGludClsZW5ndGgsIDApID09IFNPQ0tF
VF9FUlJPUikgeworCQlyZXR1cm4gKFdTQUdldExhc3RFcnJvcigpKTsKKyNlbHNlCisJaWYgKHNl
bmQoKmZkcCwgYnVmLCBsZW5ndGgsIDApIDwgMCkgeworCQlyZXR1cm4gKGVycm5vKTsKKyNlbmRp
ZgorCX0gZWxzZSB7CisJCXJldHVybiAoMCk7CisJfQorfQorCitzdGF0aWMgdm9pZAoraGFuZGxl
X3VwY2FsbChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCB2b2lkICpkYXRhLCBpbnQgZmxncykKK3sKKwlj
aGFyICpidWY7CisJaW50IGV2ZW50czsKKwlzdHJ1Y3QgdXBjYWxsX21ldGEgKm1ldGE7CisKKwlt
ZXRhID0gZGF0YTsKKwlidWYgPSBtYWxsb2MoTUFYX1BBQ0tFVF9TSVpFKTsKKworCXdoaWxlICgo
ZXZlbnRzID0gdXNyc2N0cF9nZXRfZXZlbnRzKHNvY2spKSAmJiAoZXZlbnRzICYgU0NUUF9FVkVO
VF9SRUFEKSkgeworCQlzdHJ1Y3Qgc2N0cF9yZWN2dl9ybiBybjsKKwkJc3NpemVfdCBuOworCQl1
bmlvbiBzY3RwX3NvY2tzdG9yZSBhZGRyOworCQlpbnQgZmxhZ3MgPSAwOworCQlzb2NrbGVuX3Qg
bGVuID0gKHNvY2tsZW5fdClzaXplb2YoYWRkcik7CisJCXVuc2lnbmVkIGludCBpbmZvdHlwZSA9
IDA7CisJCXNvY2tsZW5fdCBpbmZvbGVuID0gc2l6ZW9mKHN0cnVjdCBzY3RwX3JlY3Z2X3JuKTsK
KwkJbWVtc2V0KCZybiwgMCwgc2l6ZW9mKHN0cnVjdCBzY3RwX3JlY3Z2X3JuKSk7CisJCW4gPSB1
c3JzY3RwX3JlY3Z2KHNvY2ssIGJ1ZiwgTUFYX1BBQ0tFVF9TSVpFLCAoc3RydWN0IHNvY2thZGRy
ICopICZhZGRyLCAmbGVuLCAodm9pZCAqKSZybiwgJmluZm9sZW4sICZpbmZvdHlwZSwgJmZsYWdz
KTsKKwkJaWYgKG4gPCAwKSB7CisJCQlwZXJyb3IoInVzcnNjdHBfcmVjdnYiKTsKKwkJCWJyZWFr
OworCQl9IGVsc2UgaWYgKG4gPiAwKSB7CisJCQlpZiAoZmxhZ3MgJiBNU0dfTk9USUZJQ0FUSU9O
KSB7CisJCQkJZGVidWdfcHJpbnRmKCJNU0cgUkNWOiBOb3RpZmljYXRpb24gb2YgbGVuZ3RoICVk
IHJlY2VpdmVkLlxuIiwgKGludCluKTsKKwkJCX0gZWxzZSB7CisJCQkJZGVidWdfcHJpbnRmKCJN
U0cgUkNWOiBEYXRhIGxlbmd0aCAlZCwgYWRkciAlcDoldSwgc3RyZWFtICV1LCBTU04gJXUsIFRT
TiAldSwgUFBJRCAldSwgY29udGV4dCAldSwgJXMlcy5cbiIsCisJCQkJICAgICAgIChpbnQpbiwK
KwkJCQkgICAgICAgYWRkci5zY29ubi5zY29ubl9hZGRyLAorCQkJCSAgICAgICBudG9ocyhhZGRy
LnNjb25uLnNjb25uX3BvcnQpLAorCQkJCSAgICAgICBybi5yZWN2dl9yY3ZpbmZvLnJjdl9zaWQs
CisJCQkJICAgICAgIHJuLnJlY3Z2X3JjdmluZm8ucmN2X3NzbiwKKwkJCQkgICAgICAgcm4ucmVj
dnZfcmN2aW5mby5yY3ZfdHNuLAorCQkJCSAgICAgICBudG9obChybi5yZWN2dl9yY3ZpbmZvLnJj
dl9wcGlkKSwKKwkJCQkgICAgICAgcm4ucmVjdnZfcmN2aW5mby5yY3ZfY29udGV4dCwKKwkJCQkg
ICAgICAgKHJuLnJlY3Z2X3JjdmluZm8ucmN2X2ZsYWdzICYgU0NUUF9VTk9SREVSRUQpID8gInVu
b3JkZXJlZCIgOiAib3JkZXJlZCIsCisJCQkJICAgICAgIChmbGFncyAmIE1TR19FT1IpID8gIiwg
RU9SIiA6ICIiKTsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCWRlYnVnX3ByaW50ZigiQ29ubmVjdGlv
biBjbG9zZWQhXG4iKTsKKwkJCXVzcnNjdHBfZGVyZWdpc3Rlcl9hZGRyZXNzKG1ldGEtPmFkZHIp
OworCQkJdXNyc2N0cF9jbG9zZShzb2NrKTsKKwkJCWJyZWFrOworCQl9CisJfQorCWZyZWUoYnVm
KTsKKworCXJldHVybjsKK30KKworc3RhdGljIHZvaWQKK3ByaW50X2FkZHJlc3NlcyhzdHJ1Y3Qg
c29ja2V0ICpzb2NrKQoreworCWludCBpLCBuOworCXN0cnVjdCBzb2NrYWRkciAqYWRkcnMsICph
ZGRyOworI2lmICFkZWZpbmVkKEhBVkVfU0FfTEVOKQorCWludCBzYV9sZW47CisjZW5kaWYKKwor
CWRlYnVnX3ByaW50ZigiQWRkcmVzc2VzOiAiKTsKKwluID0gdXNyc2N0cF9nZXRsYWRkcnMoc29j
aywgMCwgJmFkZHJzKTsKKwlhZGRyID0gYWRkcnM7CisJZm9yIChpID0gMDsgaSA8IG47IGkrKykg
eworCQlzd2l0Y2ggKGFkZHItPnNhX2ZhbWlseSkgeworCQljYXNlIEFGX0lORVQ6CisJCXsKKwkJ
CXN0cnVjdCBzb2NrYWRkcl9pbiAqc2luOworCQkJY2hhciBidWZbSU5FVF9BRERSU1RSTEVOXTsK
KwkJCWNvbnN0IGNoYXIgKm5hbWU7CisKKwkJCXNpbiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilh
ZGRyOworCQkJbmFtZSA9IGluZXRfbnRvcChBRl9JTkVULCAmc2luLT5zaW5fYWRkciwgYnVmLCBJ
TkVUX0FERFJTVFJMRU4pOworCQkJZGVidWdfcHJpbnRmX2NsZWFuKCIlczolZCIsIG5hbWUsIG50
b2hzKHNpbi0+c2luX3BvcnQpKTsKKyNpZiAhZGVmaW5lZChIQVZFX1NBX0xFTikKKwkJCXNhX2xl
biA9IChpbnQpc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7CisjZW5kaWYKKwkJCWJyZWFrOwor
CQl9CisJCWNhc2UgQUZfSU5FVDY6CisJCXsKKwkJCXN0cnVjdCBzb2NrYWRkcl9pbjYgKnNpbjY7
CisJCQljaGFyIGJ1ZltJTkVUNl9BRERSU1RSTEVOXTsKKwkJCWNvbnN0IGNoYXIgKm5hbWU7CisK
KwkJCXNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKWFkZHI7CisJCQluYW1lID0gaW5ldF9u
dG9wKEFGX0lORVQ2LCAmc2luNi0+c2luNl9hZGRyLCBidWYsIElORVQ2X0FERFJTVFJMRU4pOwor
CQkJZGVidWdfcHJpbnRmX2NsZWFuKCIlczolZCIsIG5hbWUsIG50b2hzKHNpbjYtPnNpbjZfcG9y
dCkpOworI2lmICFkZWZpbmVkKEhBVkVfU0FfTEVOKQorCQkJc2FfbGVuID0gKGludClzaXplb2Yo
c3RydWN0IHNvY2thZGRyX2luNik7CisjZW5kaWYKKwkJCWJyZWFrOworCQl9CisJCWNhc2UgQUZf
Q09OTjoKKwkJeworCQkJc3RydWN0IHNvY2thZGRyX2Nvbm4gKnNjb25uOworCisJCQlzY29ubiA9
IChzdHJ1Y3Qgc29ja2FkZHJfY29ubiAqKWFkZHI7CisJCQlkZWJ1Z19wcmludGZfY2xlYW4oIiVw
OiVkIiwgc2Nvbm4tPnNjb25uX2FkZHIsIG50b2hzKHNjb25uLT5zY29ubl9wb3J0KSk7CisjaWYg
IWRlZmluZWQoSEFWRV9TQV9MRU4pCisJCQlzYV9sZW4gPSAoaW50KXNpemVvZihzdHJ1Y3Qgc29j
a2FkZHJfY29ubik7CisjZW5kaWYKKwkJCWJyZWFrOworCQl9CisJCWRlZmF1bHQ6CisJCQlkZWJ1
Z19wcmludGZfY2xlYW4oIlVua25vd24gZmFtaWx5OiAlZCIsIGFkZHItPnNhX2ZhbWlseSk7Cisj
aWYgIWRlZmluZWQoSEFWRV9TQV9MRU4pCisJCQlzYV9sZW4gPSAoaW50KXNpemVvZihzdHJ1Y3Qg
c29ja2FkZHIpOworI2VuZGlmCisJCQlicmVhazsKKwkJfQorI2lmICFkZWZpbmVkKEhBVkVfU0Ff
TEVOKQorCQlhZGRyID0gKHN0cnVjdCBzb2NrYWRkciAqKSgoY2hhciAqKWFkZHIgKyBzYV9sZW4p
OworI2Vsc2UKKwkJYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHIgKikoKGNhZGRyX3QpYWRkciArIGFk
ZHItPnNhX2xlbik7CisjZW5kaWYKKwkJaWYgKGkgIT0gbiAtIDEpIHsKKwkJCWRlYnVnX3ByaW50
Zl9jbGVhbigiLCIpOworCQl9CisJfQorCWlmIChuID4gMCkgeworCQl1c3JzY3RwX2ZyZWVsYWRk
cnMoYWRkcnMpOworCX0KKwlkZWJ1Z19wcmludGZfY2xlYW4oIjwtPiIpOworCW4gPSB1c3JzY3Rw
X2dldHBhZGRycyhzb2NrLCAwLCAmYWRkcnMpOworCWFkZHIgPSBhZGRyczsKKwlmb3IgKGkgPSAw
OyBpIDwgbjsgaSsrKSB7CisJCXN3aXRjaCAoYWRkci0+c2FfZmFtaWx5KSB7CisJCWNhc2UgQUZf
SU5FVDoKKwkJeworCQkJc3RydWN0IHNvY2thZGRyX2luICpzaW47CisJCQljaGFyIGJ1ZltJTkVU
X0FERFJTVFJMRU5dOworCQkJY29uc3QgY2hhciAqbmFtZTsKKworCQkJc2luID0gKHN0cnVjdCBz
b2NrYWRkcl9pbiAqKWFkZHI7CisJCQluYW1lID0gaW5ldF9udG9wKEFGX0lORVQsICZzaW4tPnNp
bl9hZGRyLCBidWYsIElORVRfQUREUlNUUkxFTik7CisJCQlkZWJ1Z19wcmludGZfY2xlYW4oIiVz
OiVkIiwgbmFtZSwgbnRvaHMoc2luLT5zaW5fcG9ydCkpOworI2lmICFkZWZpbmVkKEhBVkVfU0Ff
TEVOKQorCQkJc2FfbGVuID0gKGludClzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKTsKKyNlbmRp
ZgorCQkJYnJlYWs7CisJCX0KKwkJY2FzZSBBRl9JTkVUNjoKKwkJeworCQkJc3RydWN0IHNvY2th
ZGRyX2luNiAqc2luNjsKKwkJCWNoYXIgYnVmW0lORVQ2X0FERFJTVFJMRU5dOworCQkJY29uc3Qg
Y2hhciAqbmFtZTsKKworCQkJc2luNiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopYWRkcjsKKwkJ
CW5hbWUgPSBpbmV0X250b3AoQUZfSU5FVDYsICZzaW42LT5zaW42X2FkZHIsIGJ1ZiwgSU5FVDZf
QUREUlNUUkxFTik7CisJCQlkZWJ1Z19wcmludGZfY2xlYW4oIiVzOiVkIiwgbmFtZSwgbnRvaHMo
c2luNi0+c2luNl9wb3J0KSk7CisjaWYgIWRlZmluZWQoSEFWRV9TQV9MRU4pCisJCQlzYV9sZW4g
PSAoaW50KXNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KTsKKyNlbmRpZgorCQkJYnJlYWs7CisJ
CX0KKwkJY2FzZSBBRl9DT05OOgorCQl7CisJCQlzdHJ1Y3Qgc29ja2FkZHJfY29ubiAqc2Nvbm47
CisKKwkJCXNjb25uID0gKHN0cnVjdCBzb2NrYWRkcl9jb25uICopYWRkcjsKKwkJCWRlYnVnX3By
aW50Zl9jbGVhbigiJXA6JWQiLCBzY29ubi0+c2Nvbm5fYWRkciwgbnRvaHMoc2Nvbm4tPnNjb25u
X3BvcnQpKTsKKyNpZiAhZGVmaW5lZChIQVZFX1NBX0xFTikKKwkJCXNhX2xlbiA9IChpbnQpc2l6
ZW9mKHN0cnVjdCBzb2NrYWRkcl9jb25uKTsKKyNlbmRpZgorCQkJYnJlYWs7CisJCX0KKwkJZGVm
YXVsdDoKKwkJCWRlYnVnX3ByaW50Zl9jbGVhbigiVW5rbm93biBmYW1pbHk6ICVkIiwgYWRkci0+
c2FfZmFtaWx5KTsKKyNpZiAhZGVmaW5lZChIQVZFX1NBX0xFTikKKwkJCXNhX2xlbiA9IChpbnQp
c2l6ZW9mKHN0cnVjdCBzb2NrYWRkcik7CisjZW5kaWYKKwkJCWJyZWFrOworCQl9CisjaWYgIWRl
ZmluZWQoSEFWRV9TQV9MRU4pCisJCWFkZHIgPSAoc3RydWN0IHNvY2thZGRyICopKChjaGFyICop
YWRkciArIHNhX2xlbik7CisjZWxzZQorCQlhZGRyID0gKHN0cnVjdCBzb2NrYWRkciAqKSgoY2Fk
ZHJfdClhZGRyICsgYWRkci0+c2FfbGVuKTsKKyNlbmRpZgorCQlpZiAoaSAhPSBuIC0gMSkgewor
CQkJZGVidWdfcHJpbnRmX2NsZWFuKCIsIik7CisJCX0KKwl9CisJaWYgKG4gPiAwKSB7CisJCXVz
cnNjdHBfZnJlZXBhZGRycyhhZGRycyk7CisJfQorCWRlYnVnX3ByaW50Zl9jbGVhbigiXG4iKTsK
K30KKworaW50CittYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJc3RydWN0IHNvY2th
ZGRyX2luIHNpbl9zLCBzaW5fYzsKKwlzdHJ1Y3Qgc29ja2FkZHJfY29ubiBzY29ubjsKKwlzdHJ1
Y3Qgc2N0cF9wYWRkcnBhcmFtcyBwYWRkcnBhcmFtczsKKyNpZmRlZiBfV0lOMzIKKwlTT0NLRVQg
ZmRfYywgZmRfczsKKyNlbHNlCisJaW50IGZkX2MsIGZkX3MsIHJjOworI2VuZGlmCisJc3RydWN0
IHNvY2tldCAqc19jLCAqc19zLCAqc19sOworI2lmZGVmIF9XSU4zMgorCUhBTkRMRSB0aWRfYywg
dGlkX3M7CisjZWxzZQorCXB0aHJlYWRfdCB0aWRfYywgdGlkX3M7CisjZW5kaWYKKwlpbnQgaSwg
aiwgY3VyX2J1Zl9zaXplLCBzbmRfYnVmX3NpemUsIHJjdl9idWZfc2l6ZSwgc2VuZHZfcmV0cmll
c19sZWZ0LCBvbjsKKwlzb2NrbGVuX3Qgb3B0X2xlbjsKKwlzdHJ1Y3Qgc2N0cF9zbmRpbmZvIHNu
ZGluZm87CisJY2hhciAqbGluZTsKKyNpZmRlZiBfV0lOMzIKKwlXU0FEQVRBIHdzYURhdGE7Cisj
ZW5kaWYKKwl1aW50MTZfdCBjbGllbnRfcG9ydCA9IDk5MDA7CisJdWludDE2X3Qgc2VydmVyX3Bv
cnQgPSA5OTAxOworCisKKwlzdHJ1Y3QgdXBjYWxsX21ldGEgdXBjYWxsX21ldGFfY2xpZW50Owor
CXN0cnVjdCB1cGNhbGxfbWV0YSB1cGNhbGxfbWV0YV9zZXJ2ZXI7CisKKyNpZmRlZiBPVVRQVVRf
VE9fTE9HRklMRQorCUZJTEUgKmxvZ2ZpbGU7CisJbG9nZmlsZSA9IGZvcGVuKCJla3JfbG9vcF91
cGNhbGwubG9nIiwgImErIik7CisJaWYgKGxvZ2ZpbGUgPT0gTlVMTCkgeworCQlkZWJ1Z19wcmlu
dGYoIkZhaWxlZCBjcmVhdGluZyBsb2dmaWxlXG4iKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOwor
CX0KKwlkZWJ1Z19zZXRfdGFyZ2V0KGxvZ2ZpbGUpOworI2VuZGlmCisKKwlpZiAoYXJnYyA+IDEp
IHsKKwkJY2xpZW50X3BvcnQgPSBhdG9pKGFyZ3ZbMV0pOworCX0KKworCWlmIChhcmdjID4gMikg
eworCQlzZXJ2ZXJfcG9ydCA9IGF0b2koYXJndlsyXSk7CisJfQorCisJaWYgKGFyZ2MgPiAzKSB7
CisJCWNyYzMyY19vZmZsb2FkaW5nID0gYXRvaShhcmd2WzNdKTsKKwl9CisKKwlkZWJ1Z19wcmlu
dGYoIlN0YXJ0aW5nIHByb2dyYW1cbiIpOworCWRlYnVnX3ByaW50ZigiQ29uZmlnOlxuXHRDbGll
bnQgUG9ydDpcdCVkXG5cdFNlcnZlciBQb3J0Olx0JWRcblx0Q1JDMzJDIENhbGM6XHQlc1xuIiwg
Y2xpZW50X3BvcnQsIHNlcnZlcl9wb3J0LCBjcmMzMmNfb2ZmbG9hZGluZyA/ICJvZmZsb2FkZWQi
IDogIk5PVCBvZmZsb2FkZWQiKTsKKworI2lmZGVmIF9XSU4zMgorCWlmIChXU0FTdGFydHVwKE1B
S0VXT1JEKDIsMiksICZ3c2FEYXRhKSAhPSAwKSB7CisJCWRlYnVnX3ByaW50ZigiV1NBU3RhcnR1
cCBmYWlsZWRcbiIpOworCQlleGl0IChFWElUX0ZBSUxVUkUpOworCX0KKyNlbmRpZgorCXVzcnNj
dHBfaW5pdCgwLCBjb25uX291dHB1dCwgZGVidWdfcHJpbnRmX3N0YWNrKTsKKworI2lmZGVmIFND
VFBfREVCVUcKKwl1c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9kZWJ1Z19vbihTQ1RQX0RFQlVHX05P
TkUpOworI2VuZGlmIC8vIFNDVFBfREVCVUcKKworCWlmIChjcmMzMmNfb2ZmbG9hZGluZykgewor
CQl1c3JzY3RwX2VuYWJsZV9jcmMzMmNfb2ZmbG9hZCgpOworCX0KKworCS8qIHNldCB1cCBhIGNv
bm5lY3RlZCBVRFAgc29ja2V0ICovCisjaWZkZWYgX1dJTjMyCisJaWYgKChmZF9jID0gc29ja2V0
KEFGX0lORVQsIFNPQ0tfREdSQU0sIElQUFJPVE9fVURQKSkgPT0gSU5WQUxJRF9TT0NLRVQpIHsK
KwkJZGVidWdfcHJpbnRmKCJzb2NrZXQoKSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIFdTQUdl
dExhc3RFcnJvcigpKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKwlpZiAoKGZkX3MgPSBz
b2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgSVBQUk9UT19VRFApKSA9PSBJTlZBTElEX1NPQ0tF
VCkgeworCQlkZWJ1Z19wcmludGYoInNvY2tldCgpIGZhaWxlZCB3aXRoIGVycm9yOiAlZFxuIiwg
V1NBR2V0TGFzdEVycm9yKCkpOworCQlleGl0KEVYSVRfRkFJTFVSRSk7CisJfQorI2Vsc2UKKwlp
ZiAoKGZkX2MgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgSVBQUk9UT19VRFApKSA8IDAp
IHsKKwkJcGVycm9yKCJzb2NrZXQiKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKwlpZiAo
KGZkX3MgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgSVBQUk9UT19VRFApKSA8IDApIHsK
KwkJcGVycm9yKCJzb2NrZXQiKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKyNlbmRpZgor
CW1lbXNldCgmc2luX2MsIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKKwlzaW5fYy5z
aW5fZmFtaWx5ID0gQUZfSU5FVDsKKyNpZmRlZiBIQVZFX1NJTl9MRU4KKwlzaW5fYy5zaW5fbGVu
ID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7CisjZW5kaWYKKwlzaW5fYy5zaW5fcG9ydCA9
IGh0b25zKGNsaWVudF9wb3J0KTsKKwlzaW5fYy5zaW5fYWRkci5zX2FkZHIgPSBodG9ubChJTkFE
RFJfTE9PUEJBQ0spOworCW1lbXNldCgmc2luX3MsIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJf
aW4pKTsKKwlzaW5fcy5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKKyNpZmRlZiBIQVZFX1NJTl9MRU4K
KwlzaW5fcy5zaW5fbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7CisjZW5kaWYKKwlz
aW5fcy5zaW5fcG9ydCA9IGh0b25zKHNlcnZlcl9wb3J0KTsKKwlzaW5fcy5zaW5fYWRkci5zX2Fk
ZHIgPSBodG9ubChJTkFERFJfTE9PUEJBQ0spOworI2lmZGVmIF9XSU4zMgorCWlmIChiaW5kKGZk
X2MsIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luX2MsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4p
KSA9PSBTT0NLRVRfRVJST1IpIHsKKwkJZGVidWdfcHJpbnRmKCJiaW5kKCkgZmFpbGVkIHdpdGgg
ZXJyb3I6ICVkXG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsK
Kwl9CisJaWYgKGJpbmQoZmRfcywgKHN0cnVjdCBzb2NrYWRkciAqKSZzaW5fcywgc2l6ZW9mKHN0
cnVjdCBzb2NrYWRkcl9pbikpID09IFNPQ0tFVF9FUlJPUikgeworCQlkZWJ1Z19wcmludGYoImJp
bmQoKSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIFdTQUdldExhc3RFcnJvcigpKTsKKwkJZXhp
dChFWElUX0ZBSUxVUkUpOworCX0KKyNlbHNlCisJaWYgKGJpbmQoZmRfYywgKHN0cnVjdCBzb2Nr
YWRkciAqKSZzaW5fYywgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpIDwgMCkgeworCQlwZXJy
b3IoImJpbmQiKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKwlpZiAoYmluZChmZF9zLCAo
c3RydWN0IHNvY2thZGRyICopJnNpbl9zLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSkgPCAw
KSB7CisJCXBlcnJvcigiYmluZCIpOworCQlleGl0KEVYSVRfRkFJTFVSRSk7CisJfQorI2VuZGlm
CisjaWZkZWYgX1dJTjMyCisJaWYgKGNvbm5lY3QoZmRfYywgKHN0cnVjdCBzb2NrYWRkciAqKSZz
aW5fcywgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpID09IFNPQ0tFVF9FUlJPUikgeworCQlk
ZWJ1Z19wcmludGYoImNvbm5lY3QoKSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIFdTQUdldExh
c3RFcnJvcigpKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKwlpZiAoY29ubmVjdChmZF9z
LCAoc3RydWN0IHNvY2thZGRyICopJnNpbl9jLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSkg
PT0gU09DS0VUX0VSUk9SKSB7CisJCWRlYnVnX3ByaW50ZigiY29ubmVjdCgpIGZhaWxlZCB3aXRo
IGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOworCQlleGl0KEVYSVRfRkFJTFVSRSk7
CisJfQorI2Vsc2UKKwlpZiAoY29ubmVjdChmZF9jLCAoc3RydWN0IHNvY2thZGRyICopJnNpbl9z
LCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSkgPCAwKSB7CisJCXBlcnJvcigiY29ubmVjdCIp
OworCQlleGl0KEVYSVRfRkFJTFVSRSk7CisJfQorCWlmIChjb25uZWN0KGZkX3MsIChzdHJ1Y3Qg
c29ja2FkZHIgKikmc2luX2MsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKSA8IDApIHsKKwkJ
cGVycm9yKCJjb25uZWN0Iik7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwl9CisjZW5kaWYKKyNp
ZmRlZiBfV0lOMzIKKwlpZiAoKHRpZF9jID0gQ3JlYXRlVGhyZWFkKE5VTEwsIDAsICZoYW5kbGVf
cGFja2V0cywgKHZvaWQgKikmZmRfYywgMCwgTlVMTCkpID09IE5VTEwpIHsKKwkJZGVidWdfcHJp
bnRmKCJDcmVhdGVUaHJlYWQoKSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIEdldExhc3RFcnJv
cigpKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKwlpZiAoKHRpZF9zID0gQ3JlYXRlVGhy
ZWFkKE5VTEwsIDAsICZoYW5kbGVfcGFja2V0cywgKHZvaWQgKikmZmRfcywgMCwgTlVMTCkpID09
IE5VTEwpIHsKKwkJZGVidWdfcHJpbnRmKCJDcmVhdGVUaHJlYWQoKSBmYWlsZWQgd2l0aCBlcnJv
cjogJWRcbiIsIEdldExhc3RFcnJvcigpKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKyNl
bHNlCisJaWYgKChyYyA9IHB0aHJlYWRfY3JlYXRlKCZ0aWRfYywgTlVMTCwgJmhhbmRsZV9wYWNr
ZXRzLCAodm9pZCAqKSZmZF9jKSkgIT0gMCkgeworCQlkZWJ1Z19wcmludGYoInB0aHJlYWRfY3Jl
YXRlIHRpZF9jOiAlc1xuIiwgc3RyZXJyb3IocmMpKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOwor
CX0KKworCWlmICgocmMgPSBwdGhyZWFkX2NyZWF0ZSgmdGlkX3MsIE5VTEwsICZoYW5kbGVfcGFj
a2V0cywgKHZvaWQgKikmZmRfcykpICE9IDApIHsKKwkJZGVidWdfcHJpbnRmKCJwdGhyZWFkX2Ny
ZWF0ZSB0aWRfczogJXNcbiIsIHN0cmVycm9yKHJjKSk7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsK
Kwl9OworI2VuZGlmCisKKwl1c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9lY25fZW5hYmxlKDApOwor
CXVzcnNjdHBfcmVnaXN0ZXJfYWRkcmVzcygodm9pZCAqKSZmZF9jKTsKKwl1c3JzY3RwX3JlZ2lz
dGVyX2FkZHJlc3MoKHZvaWQgKikmZmRfcyk7CisJaWYgKChzX2MgPSB1c3JzY3RwX3NvY2tldChB
Rl9DT05OLCBTT0NLX1NUUkVBTSwgSVBQUk9UT19TQ1RQLCBOVUxMLCBOVUxMLCAwLCBOVUxMKSkg
PT0gTlVMTCkgeworCQlwZXJyb3IoInVzcnNjdHBfc29ja2V0Iik7CisJCWV4aXQoRVhJVF9GQUlM
VVJFKTsKKwl9CisKKwl1cGNhbGxfbWV0YV9jbGllbnQuYWRkciA9ICZmZF9jOworCXVwY2FsbF9t
ZXRhX2NsaWVudC5zZW5kZXIgPSAxOworCXVzcnNjdHBfc2V0X3VwY2FsbChzX2MsIGhhbmRsZV91
cGNhbGwsICZ1cGNhbGxfbWV0YV9jbGllbnQpOworCisJb3B0X2xlbiA9IChzb2NrbGVuX3Qpc2l6
ZW9mKGludCk7CisJY3VyX2J1Zl9zaXplID0gMDsKKwlpZiAodXNyc2N0cF9nZXRzb2Nrb3B0KHNf
YywgU09MX1NPQ0tFVCwgU09fU05EQlVGLCAmY3VyX2J1Zl9zaXplLCAmb3B0X2xlbikgPCAwKSB7
CisJCXBlcnJvcigidXNyc2N0cF9nZXRzb2Nrb3B0Iik7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsK
Kwl9CisJZGVidWdfcHJpbnRmKCJDaGFuZ2Ugc2VuZCBzb2NrZXQgYnVmZmVyIHNpemUgZnJvbSAl
ZCAiLCBjdXJfYnVmX3NpemUpOworCXNuZF9idWZfc2l6ZSA9IDE8PDIyOyAvKiA0IE1CICovCisJ
aWYgKHVzcnNjdHBfc2V0c29ja29wdChzX2MsIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgJnNuZF9i
dWZfc2l6ZSwgc2l6ZW9mKGludCkpIDwgMCkgeworCQlwZXJyb3IoInVzcnNjdHBfc2V0c29ja29w
dCIpOworCQlleGl0KEVYSVRfRkFJTFVSRSk7CisJfQorCW9wdF9sZW4gPSAoc29ja2xlbl90KXNp
emVvZihpbnQpOworCWN1cl9idWZfc2l6ZSA9IDA7CisJaWYgKHVzcnNjdHBfZ2V0c29ja29wdChz
X2MsIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgJmN1cl9idWZfc2l6ZSwgJm9wdF9sZW4pIDwgMCkg
eworCQlwZXJyb3IoInVzcnNjdHBfZ2V0c29ja29wdCIpOworCQlleGl0KEVYSVRfRkFJTFVSRSk7
CisJfQorCWRlYnVnX3ByaW50Zl9jbGVhbigidG8gJWQuXG4iLCBjdXJfYnVmX3NpemUpOworCW1l
bXNldCgmcGFkZHJwYXJhbXMsIDAsIHNpemVvZihzdHJ1Y3Qgc2N0cF9wYWRkcnBhcmFtcykpOwor
CXBhZGRycGFyYW1zLnNwcF9hZGRyZXNzLnNzX2ZhbWlseSA9IEFGX0NPTk47CisjaWZkZWYgSEFW
RV9TQ09OTl9MRU4KKwlwYWRkcnBhcmFtcy5zcHBfYWRkcmVzcy5zc19sZW4gPSBzaXplb2Yoc3Ry
dWN0IHNvY2thZGRyX2Nvbm4pOworI2VuZGlmCisJcGFkZHJwYXJhbXMuc3BwX2ZsYWdzID0gU1BQ
X1BNVFVEX0RJU0FCTEU7CisJcGFkZHJwYXJhbXMuc3BwX3BhdGhtdHUgPSA5MDAwOworCWlmICh1
c3JzY3RwX3NldHNvY2tvcHQoc19jLCBJUFBST1RPX1NDVFAsIFNDVFBfUEVFUl9BRERSX1BBUkFN
UywgJnBhZGRycGFyYW1zLCBzaXplb2Yoc3RydWN0IHNjdHBfcGFkZHJwYXJhbXMpKSA8IDApIHsK
KwkJcGVycm9yKCJ1c3JzY3RwX3NldHNvY2tvcHQiKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOwor
CX0KKwlpZiAoKHNfbCA9IHVzcnNjdHBfc29ja2V0KEFGX0NPTk4sIFNPQ0tfU1RSRUFNLCBJUFBS
T1RPX1NDVFAsIE5VTEwsIE5VTEwsIDAsIE5VTEwpKSA9PSBOVUxMKSB7CisJCXBlcnJvcigidXNy
c2N0cF9zb2NrZXQiKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKwlvcHRfbGVuID0gKHNv
Y2tsZW5fdClzaXplb2YoaW50KTsKKwljdXJfYnVmX3NpemUgPSAwOworCWlmICh1c3JzY3RwX2dl
dHNvY2tvcHQoc19sLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsICZjdXJfYnVmX3NpemUsICZvcHRf
bGVuKSA8IDApIHsKKwkJcGVycm9yKCJ1c3JzY3RwX2dldHNvY2tvcHQiKTsKKwkJZXhpdChFWElU
X0ZBSUxVUkUpOworCX0KKwlkZWJ1Z19wcmludGYoIkNoYW5nZSByZWNlaXZlIHNvY2tldCBidWZm
ZXIgc2l6ZSBmcm9tICVkICIsIGN1cl9idWZfc2l6ZSk7CisJcmN2X2J1Zl9zaXplID0gMTw8MTY7
IC8qIDY0IEtCICovCisJaWYgKHVzcnNjdHBfc2V0c29ja29wdChzX2wsIFNPTF9TT0NLRVQsIFNP
X1JDVkJVRiwgJnJjdl9idWZfc2l6ZSwgc2l6ZW9mKGludCkpIDwgMCkgeworCQlwZXJyb3IoInVz
cnNjdHBfc2V0c29ja29wdCIpOworCQlleGl0KEVYSVRfRkFJTFVSRSk7CisJfQorCW9wdF9sZW4g
PSAoc29ja2xlbl90KXNpemVvZihpbnQpOworCWN1cl9idWZfc2l6ZSA9IDA7CisJaWYgKHVzcnNj
dHBfZ2V0c29ja29wdChzX2wsIFNPTF9TT0NLRVQsIFNPX1JDVkJVRiwgJmN1cl9idWZfc2l6ZSwg
Jm9wdF9sZW4pIDwgMCkgeworCQlwZXJyb3IoInVzcnNjdHBfZ2V0c29ja29wdCIpOworCQlleGl0
KEVYSVRfRkFJTFVSRSk7CisJfQorCWRlYnVnX3ByaW50Zl9jbGVhbigidG8gJWQuXG4iLCBjdXJf
YnVmX3NpemUpOworCisJb24gPSAxOworCWlmICh1c3JzY3RwX3NldHNvY2tvcHQoc19sLCBJUFBS
T1RPX1NDVFAsIFNDVFBfUkVDVlJDVklORk8sICZvbiwgc2l6ZW9mKGludCkpIDwgMCkgeworCQlw
ZXJyb3IoInVzcnNjdHBfc2V0c29ja29wdCIpOworCQlleGl0KEVYSVRfRkFJTFVSRSk7CisJfQor
CisJLyogQmluZCB0aGUgY2xpZW50IHNpZGUuICovCisJbWVtc2V0KCZzY29ubiwgMCwgc2l6ZW9m
KHN0cnVjdCBzb2NrYWRkcl9jb25uKSk7CisJc2Nvbm4uc2Nvbm5fZmFtaWx5ID0gQUZfQ09OTjsK
KyNpZmRlZiBIQVZFX1NDT05OX0xFTgorCXNjb25uLnNjb25uX2xlbiA9IHNpemVvZihzdHJ1Y3Qg
c29ja2FkZHJfY29ubik7CisjZW5kaWYKKwlzY29ubi5zY29ubl9wb3J0ID0gaHRvbnMoNTAwMSk7
CisJc2Nvbm4uc2Nvbm5fYWRkciA9ICZmZF9jOworCWlmICh1c3JzY3RwX2JpbmQoc19jLCAoc3Ry
dWN0IHNvY2thZGRyICopJnNjb25uLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2Nvbm4pKSA8IDAp
IHsKKwkJcGVycm9yKCJ1c3JzY3RwX2JpbmQiKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0K
KwkvKiBCaW5kIHRoZSBzZXJ2ZXIgc2lkZS4gKi8KKwltZW1zZXQoJnNjb25uLCAwLCBzaXplb2Yo
c3RydWN0IHNvY2thZGRyX2Nvbm4pKTsKKwlzY29ubi5zY29ubl9mYW1pbHkgPSBBRl9DT05OOwor
I2lmZGVmIEhBVkVfU0NPTk5fTEVOCisJc2Nvbm4uc2Nvbm5fbGVuID0gc2l6ZW9mKHN0cnVjdCBz
b2NrYWRkcl9jb25uKTsKKyNlbmRpZgorCXNjb25uLnNjb25uX3BvcnQgPSBodG9ucyg1MDAxKTsK
KwlzY29ubi5zY29ubl9hZGRyID0gJmZkX3M7CisJaWYgKHVzcnNjdHBfYmluZChzX2wsIChzdHJ1
Y3Qgc29ja2FkZHIgKikmc2Nvbm4sIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfY29ubikpIDwgMCkg
eworCQlwZXJyb3IoInVzcnNjdHBfYmluZCIpOworCQlleGl0KEVYSVRfRkFJTFVSRSk7CisJfQor
CS8qIE1ha2Ugc2VydmVyIHNpZGUgcGFzc2l2ZS4uLiAqLworCWlmICh1c3JzY3RwX2xpc3Rlbihz
X2wsIDEpIDwgMCkgeworCQlwZXJyb3IoInVzcnNjdHBfbGlzdGVuIik7CisJCWV4aXQoRVhJVF9G
QUlMVVJFKTsKKwl9CisJLyogSW5pdGlhdGUgdGhlIGhhbmRzaGFrZSAqLworCW1lbXNldCgmc2Nv
bm4sIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfY29ubikpOworCXNjb25uLnNjb25uX2ZhbWls
eSA9IEFGX0NPTk47CisjaWZkZWYgSEFWRV9TQ09OTl9MRU4KKwlzY29ubi5zY29ubl9sZW4gPSBz
aXplb2Yoc3RydWN0IHNvY2thZGRyX2Nvbm4pOworI2VuZGlmCisJc2Nvbm4uc2Nvbm5fcG9ydCA9
IGh0b25zKDUwMDEpOworCXNjb25uLnNjb25uX2FkZHIgPSAmZmRfYzsKKwlpZiAodXNyc2N0cF9j
b25uZWN0KHNfYywgKHN0cnVjdCBzb2NrYWRkciAqKSZzY29ubiwgc2l6ZW9mKHN0cnVjdCBzb2Nr
YWRkcl9jb25uKSkgPCAwKSB7CisJCXBlcnJvcigidXNyc2N0cF9jb25uZWN0Iik7CisJCWV4aXQo
RVhJVF9GQUlMVVJFKTsKKwl9CisJaWYgKChzX3MgPSB1c3JzY3RwX2FjY2VwdChzX2wsIE5VTEws
IE5VTEwpKSA9PSBOVUxMKSB7CisJCXBlcnJvcigidXNyc2N0cF9hY2NlcHQiKTsKKwkJZXhpdChF
WElUX0ZBSUxVUkUpOworCX0KKworCXVwY2FsbF9tZXRhX3NlcnZlci5hZGRyIAk9ICZmZF9zOwor
CXVwY2FsbF9tZXRhX3NlcnZlci5zZW5kZXIgCT0gMDsKKwl1c3JzY3RwX3NldF91cGNhbGwoc19z
LCBoYW5kbGVfdXBjYWxsLCAmdXBjYWxsX21ldGFfc2VydmVyKTsKKworCXVzcnNjdHBfY2xvc2Uo
c19sKTsKKwlwcmludF9hZGRyZXNzZXMoc19zKTsKKworCWlmICgobGluZSA9IG1hbGxvYyhMSU5F
X0xFTkdUSCkpID09IE5VTEwpIHsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKwltZW1zZXQo
bGluZSwgJ0EnLCBMSU5FX0xFTkdUSCk7CisJc25kaW5mby5zbmRfc2lkID0gMTsKKwlzbmRpbmZv
LnNuZF9wcGlkID0gaHRvbmwoRElTQ0FSRF9QUElEKTsKKwlzbmRpbmZvLnNuZF9jb250ZXh0ID0g
MDsKKwlzbmRpbmZvLnNuZF9hc3NvY19pZCA9IDA7CisKKwlmb3IgKGkgPSAwOyBpIDwgTlVNQkVS
X09GX1NURVBTOyBpKyspIHsKKwkJaWYgKGkgJSAyKSB7CisJCQlzbmRpbmZvLnNuZF9mbGFncyA9
IFNDVFBfVU5PUkRFUkVEOworCQl9IGVsc2UgeworCQkJc25kaW5mby5zbmRfZmxhZ3MgPSAwOwor
CQl9CisJCWZvciAoaiA9IDA7IGogPCAyOyBqKyspIHsKKwkJCS8qIFNlbmQgYSAxIE1CIG1lc3Nh
Z2UgKi8KKwkJCXNlbmR2X3JldHJpZXNfbGVmdCA9IDEyMDsKKwkJCWRlYnVnX3ByaW50ZigidXNy
c2NwX3NlbmR2IC0gc3RlcCAlZCAtIGNhbGwgJWQgZmxhZ3MgJXhcbiIsIGksIGogKyAxLCBzbmRp
bmZvLnNuZF9mbGFncyk7CisJCQl3aGlsZSAodXNyc2N0cF9zZW5kdihzX2MsIGxpbmUsIExJTkVf
TEVOR1RILCBOVUxMLCAwLCAodm9pZCAqKSZzbmRpbmZvLAorCQkJCQkgKHNvY2tsZW5fdClzaXpl
b2Yoc3RydWN0IHNjdHBfc25kaW5mbyksIFNDVFBfU0VORFZfU05ESU5GTywgMCkgPCAwKSB7CisJ
CQkJZGVidWdfcHJpbnRmKCJ1c3JzY3RwX3NlbmR2IC0gZXJybm86ICVkIC0gJXNcbiIsIGVycm5v
LCBzdHJlcnJvcihlcnJubykpOworCQkJCWlmIChlcnJubyAhPSBFV09VTERCTE9DSyB8fCAhc2Vu
ZHZfcmV0cmllc19sZWZ0KSB7CisJCQkJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwkJCQl9CisJCQkJ
c2VuZHZfcmV0cmllc19sZWZ0LS07CisjaWZkZWYgX1dJTjMyCisJCQkJU2xlZXAoMTAwMCk7Cisj
ZWxzZQorCQkJCXNsZWVwKDEpOworI2VuZGlmCisJCQl9CisJCX0KKwkJZGVidWdfcHJpbnRmKCJT
ZW5kaW5nIGRvbmUsIHNsZWVwaW5nXG4iKTsKKyNpZmRlZiBfV0lOMzIKKwkJU2xlZXAoMTAwMCk7
CisjZWxzZQorCQlzbGVlcCgxKTsKKyNlbmRpZgorCX0KKwlmcmVlKGxpbmUpOworCXVzcnNjdHBf
c2h1dGRvd24oc19jLCBTSFVUX1dSKTsKKworCXdoaWxlICh1c3JzY3RwX2ZpbmlzaCgpICE9IDAp
IHsKKwkJZGVidWdfcHJpbnRmKCJXYWl0aW5nIGZvciB1c3JzY3RwX2ZpbmlzaCgpXG4iKTsKKyNp
ZmRlZiBfV0lOMzIKKwkJU2xlZXAoMTAwMCk7CisjZWxzZQorCQlzbGVlcCgxKTsKKyNlbmRpZgor
CX0KKyNpZmRlZiBfV0lOMzIKKwlUZXJtaW5hdGVUaHJlYWQodGlkX2MsIDApOworCVdhaXRGb3JT
aW5nbGVPYmplY3QodGlkX2MsIElORklOSVRFKTsKKwlUZXJtaW5hdGVUaHJlYWQodGlkX3MsIDAp
OworCVdhaXRGb3JTaW5nbGVPYmplY3QodGlkX3MsIElORklOSVRFKTsKKwlpZiAoY2xvc2Vzb2Nr
ZXQoZmRfYykgPT0gU09DS0VUX0VSUk9SKSB7CisJCWRlYnVnX3ByaW50ZigiY2xvc2Vzb2NrZXQo
KSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIFdTQUdldExhc3RFcnJvcigpKTsKKwkJZXhpdChF
WElUX0ZBSUxVUkUpOworCX0KKwlpZiAoY2xvc2Vzb2NrZXQoZmRfcykgPT0gU09DS0VUX0VSUk9S
KSB7CisJCWRlYnVnX3ByaW50ZigiY2xvc2Vzb2NrZXQoKSBmYWlsZWQgd2l0aCBlcnJvcjogJWRc
biIsIFdTQUdldExhc3RFcnJvcigpKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKwlXU0FD
bGVhbnVwKCk7CisjZWxzZQorCXB0aHJlYWRfY2FuY2VsKHRpZF9jKTsKKwlwdGhyZWFkX2pvaW4o
dGlkX2MsIE5VTEwpOworCXB0aHJlYWRfY2FuY2VsKHRpZF9zKTsKKwlwdGhyZWFkX2pvaW4odGlk
X3MsIE5VTEwpOworCWlmIChjbG9zZShmZF9jKSA8IDApIHsKKwkJcGVycm9yKCJjbG9zZSIpOwor
CQlleGl0KEVYSVRfRkFJTFVSRSk7CisJfQorCWlmIChjbG9zZShmZF9zKSA8IDApIHsKKwkJcGVy
cm9yKCJjbG9zZSIpOworCQlleGl0KEVYSVRfRkFJTFVSRSk7CisJfQorI2VuZGlmCisJcmV0dXJu
ICgwKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2Vrcl9wZWVyLmMgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0
cGxpYi9wcm9ncmFtcy9la3JfcGVlci5jCmluZGV4IGNhMGM2NGQ2ZGFkMTVlNTY2YTJhYWY5YTRj
ZTg4MGZkMmNjOGZjNDIuLmE5NGY1ZjFhZTI3YzZkMDY0ZWVmMGE5MjNhZDE4NTAyZWFiZDA1ZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2Vrcl9wZWVyLmMKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIv
cHJvZ3JhbXMvZWtyX3BlZXIuYwpAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgPHdzMnRjcGlw
Lmg+CiAjZW5kaWYKICNpbmNsdWRlIDx1c3JzY3RwLmg+CisjaW5jbHVkZSAicHJvZ3JhbXNfaGVs
cGVyLmgiCiAKICNkZWZpbmUgTUFYX1BBQ0tFVF9TSVpFICgxPDwxNikKICNkZWZpbmUgTElORV9M
RU5HVEggODAKQEAgLTExNiwyMDYgKzExNyw2IEBAIGNvbm5fb3V0cHV0KHZvaWQgKmFkZHIsIHZv
aWQgKmJ1ZmZlciwgc2l6ZV90IGxlbmd0aCwgdWludDhfdCB0b3MsIHVpbnQ4X3Qgc2V0X2RmCiAJ
fQogfQogCi1zdGF0aWMgdm9pZAotaGFuZGxlX2Fzc29jaWF0aW9uX2NoYW5nZV9ldmVudChzdHJ1
Y3Qgc2N0cF9hc3NvY19jaGFuZ2UgKnNhYykKLXsKLQl1bnNpZ25lZCBpbnQgaSwgbjsKLQotCXBy
aW50ZigiQXNzb2NpYXRpb24gY2hhbmdlICIpOwotCXN3aXRjaCAoc2FjLT5zYWNfc3RhdGUpIHsK
LQljYXNlIFNDVFBfQ09NTV9VUDoKLQkJcHJpbnRmKCJTQ1RQX0NPTU1fVVAiKTsKLQkJYnJlYWs7
Ci0JY2FzZSBTQ1RQX0NPTU1fTE9TVDoKLQkJcHJpbnRmKCJTQ1RQX0NPTU1fTE9TVCIpOwotCQli
cmVhazsKLQljYXNlIFNDVFBfUkVTVEFSVDoKLQkJcHJpbnRmKCJTQ1RQX1JFU1RBUlQiKTsKLQkJ
YnJlYWs7Ci0JY2FzZSBTQ1RQX1NIVVRET1dOX0NPTVA6Ci0JCXByaW50ZigiU0NUUF9TSFVURE9X
Tl9DT01QIik7Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9DQU5UX1NUUl9BU1NPQzoKLQkJcHJpbnRm
KCJTQ1RQX0NBTlRfU1RSX0FTU09DIik7Ci0JCWJyZWFrOwotCWRlZmF1bHQ6Ci0JCXByaW50Zigi
VU5LTk9XTiIpOwotCQlicmVhazsKLQl9Ci0JcHJpbnRmKCIsIHN0cmVhbXMgKGluL291dCkgPSAo
JXUvJXUpIiwKLQkgICAgICAgc2FjLT5zYWNfaW5ib3VuZF9zdHJlYW1zLCBzYWMtPnNhY19vdXRi
b3VuZF9zdHJlYW1zKTsKLQluID0gc2FjLT5zYWNfbGVuZ3RoIC0gc2l6ZW9mKHN0cnVjdCBzY3Rw
X2Fzc29jX2NoYW5nZSk7Ci0JaWYgKCgoc2FjLT5zYWNfc3RhdGUgPT0gU0NUUF9DT01NX1VQKSB8
fAotCSAgICAgKHNhYy0+c2FjX3N0YXRlID09IFNDVFBfUkVTVEFSVCkpICYmIChuID4gMCkpIHsK
LQkJcHJpbnRmKCIsIHN1cHBvcnRzIik7Ci0JCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLQkJ
CXN3aXRjaCAoc2FjLT5zYWNfaW5mb1tpXSkgewotCQkJY2FzZSBTQ1RQX0FTU09DX1NVUFBPUlRT
X1BSOgotCQkJCXByaW50ZigiIFBSIik7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlIFNDVFBfQVNTT0Nf
U1VQUE9SVFNfQVVUSDoKLQkJCQlwcmludGYoIiBBVVRIIik7Ci0JCQkJYnJlYWs7Ci0JCQljYXNl
IFNDVFBfQVNTT0NfU1VQUE9SVFNfQVNDT05GOgotCQkJCXByaW50ZigiIEFTQ09ORiIpOwotCQkJ
CWJyZWFrOwotCQkJY2FzZSBTQ1RQX0FTU09DX1NVUFBPUlRTX01VTFRJQlVGOgotCQkJCXByaW50
ZigiIE1VTFRJQlVGIik7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlIFNDVFBfQVNTT0NfU1VQUE9SVFNf
UkVfQ09ORklHOgotCQkJCXByaW50ZigiIFJFLUNPTkZJRyIpOwotCQkJCWJyZWFrOwotCQkJZGVm
YXVsdDoKLQkJCQlwcmludGYoIiBVTktOT1dOKDB4JTAyeCkiLCBzYWMtPnNhY19pbmZvW2ldKTsK
LQkJCQlicmVhazsKLQkJCX0KLQkJfQotCX0gZWxzZSBpZiAoKChzYWMtPnNhY19zdGF0ZSA9PSBT
Q1RQX0NPTU1fTE9TVCkgfHwKLQkgICAgICAgICAgICAoc2FjLT5zYWNfc3RhdGUgPT0gU0NUUF9D
QU5UX1NUUl9BU1NPQykpICYmIChuID4gMCkpIHsKLQkJcHJpbnRmKCIsIEFCT1JUID0iKTsKLQkJ
Zm9yIChpID0gMDsgaSA8IG47IGkrKykgewotCQkJcHJpbnRmKCIgMHglMDJ4Iiwgc2FjLT5zYWNf
aW5mb1tpXSk7Ci0JCX0KLQl9Ci0JcHJpbnRmKCIuXG4iKTsKLQlpZiAoKHNhYy0+c2FjX3N0YXRl
ID09IFNDVFBfQ0FOVF9TVFJfQVNTT0MpIHx8Ci0JICAgIChzYWMtPnNhY19zdGF0ZSA9PSBTQ1RQ
X1NIVVRET1dOX0NPTVApIHx8Ci0JICAgIChzYWMtPnNhY19zdGF0ZSA9PSBTQ1RQX0NPTU1fTE9T
VCkpIHsKLQkJZXhpdCgwKTsKLQl9Ci0JcmV0dXJuOwotfQotCi1zdGF0aWMgdm9pZAotaGFuZGxl
X3BlZXJfYWRkcmVzc19jaGFuZ2VfZXZlbnQoc3RydWN0IHNjdHBfcGFkZHJfY2hhbmdlICpzcGMp
Ci17Ci0JY2hhciBhZGRyX2J1ZltJTkVUNl9BRERSU1RSTEVOXTsKLQljb25zdCBjaGFyICphZGRy
OwotCXN0cnVjdCBzb2NrYWRkcl9pbiAqc2luOwotCXN0cnVjdCBzb2NrYWRkcl9pbjYgKnNpbjY7
Ci0Jc3RydWN0IHNvY2thZGRyX2Nvbm4gKnNjb25uOwotCi0Jc3dpdGNoIChzcGMtPnNwY19hYWRk
ci5zc19mYW1pbHkpIHsKLQljYXNlIEFGX0lORVQ6Ci0JCXNpbiA9IChzdHJ1Y3Qgc29ja2FkZHJf
aW4gKikmc3BjLT5zcGNfYWFkZHI7Ci0JCWFkZHIgPSBpbmV0X250b3AoQUZfSU5FVCwgJnNpbi0+
c2luX2FkZHIsIGFkZHJfYnVmLCBJTkVUX0FERFJTVFJMRU4pOwotCQlicmVhazsKLQljYXNlIEFG
X0lORVQ2OgotCQlzaW42ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKikmc3BjLT5zcGNfYWFkZHI7
Ci0JCWFkZHIgPSBpbmV0X250b3AoQUZfSU5FVDYsICZzaW42LT5zaW42X2FkZHIsIGFkZHJfYnVm
LCBJTkVUNl9BRERSU1RSTEVOKTsKLQkJYnJlYWs7Ci0JY2FzZSBBRl9DT05OOgotCQlzY29ubiA9
IChzdHJ1Y3Qgc29ja2FkZHJfY29ubiAqKSZzcGMtPnNwY19hYWRkcjsKLSNpZmRlZiBfV0lOMzIK
LQkJX3NucHJpbnRmKGFkZHJfYnVmLCBJTkVUNl9BRERSU1RSTEVOLCAiJXAiLCBzY29ubi0+c2Nv
bm5fYWRkcik7Ci0jZWxzZQotCQlzbnByaW50ZihhZGRyX2J1ZiwgSU5FVDZfQUREUlNUUkxFTiwg
IiVwIiwgc2Nvbm4tPnNjb25uX2FkZHIpOwotI2VuZGlmCi0JCWFkZHIgPSBhZGRyX2J1ZjsKLQkJ
YnJlYWs7Ci0JZGVmYXVsdDoKLSNpZmRlZiBfV0lOMzIKLQkJX3NucHJpbnRmKGFkZHJfYnVmLCBJ
TkVUNl9BRERSU1RSTEVOLCAiVW5rbm93biBmYW1pbHkgJWQiLCBzcGMtPnNwY19hYWRkci5zc19m
YW1pbHkpOwotI2Vsc2UKLQkJc25wcmludGYoYWRkcl9idWYsIElORVQ2X0FERFJTVFJMRU4sICJV
bmtub3duIGZhbWlseSAlZCIsIHNwYy0+c3BjX2FhZGRyLnNzX2ZhbWlseSk7Ci0jZW5kaWYKLQkJ
YWRkciA9IGFkZHJfYnVmOwotCQlicmVhazsKLQl9Ci0JcHJpbnRmKCJQZWVyIGFkZHJlc3MgJXMg
aXMgbm93ICIsIGFkZHIpOwotCXN3aXRjaCAoc3BjLT5zcGNfc3RhdGUpIHsKLQljYXNlIFNDVFBf
QUREUl9BVkFJTEFCTEU6Ci0JCXByaW50ZigiU0NUUF9BRERSX0FWQUlMQUJMRSIpOwotCQlicmVh
azsKLQljYXNlIFNDVFBfQUREUl9VTlJFQUNIQUJMRToKLQkJcHJpbnRmKCJTQ1RQX0FERFJfVU5S
RUFDSEFCTEUiKTsKLQkJYnJlYWs7Ci0JY2FzZSBTQ1RQX0FERFJfUkVNT1ZFRDoKLQkJcHJpbnRm
KCJTQ1RQX0FERFJfUkVNT1ZFRCIpOwotCQlicmVhazsKLQljYXNlIFNDVFBfQUREUl9BRERFRDoK
LQkJcHJpbnRmKCJTQ1RQX0FERFJfQURERUQiKTsKLQkJYnJlYWs7Ci0JY2FzZSBTQ1RQX0FERFJf
TUFERV9QUklNOgotCQlwcmludGYoIlNDVFBfQUREUl9NQURFX1BSSU0iKTsKLQkJYnJlYWs7Ci0J
Y2FzZSBTQ1RQX0FERFJfQ09ORklSTUVEOgotCQlwcmludGYoIlNDVFBfQUREUl9DT05GSVJNRUQi
KTsKLQkJYnJlYWs7Ci0JZGVmYXVsdDoKLQkJcHJpbnRmKCJVTktOT1dOIik7Ci0JCWJyZWFrOwot
CX0KLQlwcmludGYoIiAoZXJyb3IgPSAweCUwOHgpLlxuIiwgc3BjLT5zcGNfZXJyb3IpOwotCXJl
dHVybjsKLX0KLQotc3RhdGljIHZvaWQKLWhhbmRsZV9zZW5kX2ZhaWxlZF9ldmVudChzdHJ1Y3Qg
c2N0cF9zZW5kX2ZhaWxlZF9ldmVudCAqc3NmZSkKLXsKLQlzaXplX3QgaSwgbjsKLQotCWlmIChz
c2ZlLT5zc2ZlX2ZsYWdzICYgU0NUUF9EQVRBX1VOU0VOVCkgewotCQlwcmludGYoIlVuc2VudCAi
KTsKLQl9Ci0JaWYgKHNzZmUtPnNzZmVfZmxhZ3MgJiBTQ1RQX0RBVEFfU0VOVCkgewotCQlwcmlu
dGYoIlNlbnQgIik7Ci0JfQotCWlmIChzc2ZlLT5zc2ZlX2ZsYWdzICYgfihTQ1RQX0RBVEFfU0VO
VCB8IFNDVFBfREFUQV9VTlNFTlQpKSB7Ci0JCXByaW50ZigiKGZsYWdzID0gJXgpICIsIHNzZmUt
PnNzZmVfZmxhZ3MpOwotCX0KLQlwcmludGYoIm1lc3NhZ2Ugd2l0aCBQUElEID0gJXUsIFNJRCA9
ICV1LCBmbGFnczogMHglMDR4IGR1ZSB0byBlcnJvciA9IDB4JTA4eCIsCi0JICAgICAgIG50b2hs
KHNzZmUtPnNzZmVfaW5mby5zbmRfcHBpZCksIHNzZmUtPnNzZmVfaW5mby5zbmRfc2lkLAotCSAg
ICAgICBzc2ZlLT5zc2ZlX2luZm8uc25kX2ZsYWdzLCBzc2ZlLT5zc2ZlX2Vycm9yKTsKLQluID0g
c3NmZS0+c3NmZV9sZW5ndGggLSBzaXplb2Yoc3RydWN0IHNjdHBfc2VuZF9mYWlsZWRfZXZlbnQp
OwotCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLQkJcHJpbnRmKCIgMHglMDJ4Iiwgc3NmZS0+
c3NmZV9kYXRhW2ldKTsKLQl9Ci0JcHJpbnRmKCIuXG4iKTsKLQlyZXR1cm47Ci19Ci0KLXN0YXRp
YyB2b2lkCi1oYW5kbGVfbm90aWZpY2F0aW9uKHVuaW9uIHNjdHBfbm90aWZpY2F0aW9uICpub3Rp
Ziwgc2l6ZV90IG4pCi17Ci0JaWYgKG5vdGlmLT5zbl9oZWFkZXIuc25fbGVuZ3RoICE9ICh1aW50
MzJfdCluKSB7Ci0JCXJldHVybjsKLQl9Ci0Jc3dpdGNoIChub3RpZi0+c25faGVhZGVyLnNuX3R5
cGUpIHsKLQljYXNlIFNDVFBfQVNTT0NfQ0hBTkdFOgotCQloYW5kbGVfYXNzb2NpYXRpb25fY2hh
bmdlX2V2ZW50KCYobm90aWYtPnNuX2Fzc29jX2NoYW5nZSkpOwotCQlicmVhazsKLQljYXNlIFND
VFBfUEVFUl9BRERSX0NIQU5HRToKLQkJaGFuZGxlX3BlZXJfYWRkcmVzc19jaGFuZ2VfZXZlbnQo
Jihub3RpZi0+c25fcGFkZHJfY2hhbmdlKSk7Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9SRU1PVEVf
RVJST1I6Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9TSFVURE9XTl9FVkVOVDoKLQkJYnJlYWs7Ci0J
Y2FzZSBTQ1RQX0FEQVBUQVRJT05fSU5ESUNBVElPTjoKLQkJYnJlYWs7Ci0JY2FzZSBTQ1RQX1BB
UlRJQUxfREVMSVZFUllfRVZFTlQ6Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9BVVRIRU5USUNBVElP
Tl9FVkVOVDoKLQkJYnJlYWs7Ci0JY2FzZSBTQ1RQX1NFTkRFUl9EUllfRVZFTlQ6Ci0JCWJyZWFr
OwotCWNhc2UgU0NUUF9OT1RJRklDQVRJT05TX1NUT1BQRURfRVZFTlQ6Ci0JCWJyZWFrOwotCWNh
c2UgU0NUUF9TRU5EX0ZBSUxFRF9FVkVOVDoKLQkJaGFuZGxlX3NlbmRfZmFpbGVkX2V2ZW50KCYo
bm90aWYtPnNuX3NlbmRfZmFpbGVkX2V2ZW50KSk7Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9TVFJF
QU1fUkVTRVRfRVZFTlQ6Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9BU1NPQ19SRVNFVF9FVkVOVDoK
LQkJYnJlYWs7Ci0JY2FzZSBTQ1RQX1NUUkVBTV9DSEFOR0VfRVZFTlQ6Ci0JCWJyZWFrOwotCWRl
ZmF1bHQ6Ci0JCWJyZWFrOwotCX0KLX0KLQogc3RhdGljIGludAogcmVjZWl2ZV9jYihzdHJ1Y3Qg
c29ja2V0ICpzb2NrLCB1bmlvbiBzY3RwX3NvY2tzdG9yZSBhZGRyLCB2b2lkICpkYXRhLAogICAg
ICAgICAgICBzaXplX3QgZGF0YWxlbiwgc3RydWN0IHNjdHBfcmN2aW5mbyByY3YsIGludCBmbGFn
cywgdm9pZCAqdWxwX2luZm8pCkBAIC0zNDIsMTYgKzE0Myw2IEBAIHJlY2VpdmVfY2Ioc3RydWN0
IHNvY2tldCAqc29jaywgdW5pb24gc2N0cF9zb2Nrc3RvcmUgYWRkciwgdm9pZCAqZGF0YSwKIAly
ZXR1cm4gKDEpOwogfQogCi12b2lkCi1kZWJ1Z19wcmludGYoY29uc3QgY2hhciAqZm9ybWF0LCAu
Li4pCi17Ci0JdmFfbGlzdCBhcDsKLQotCXZhX3N0YXJ0KGFwLCBmb3JtYXQpOwotCXZwcmludGYo
Zm9ybWF0LCBhcCk7Ci0JdmFfZW5kKGFwKTsKLX0KLQogaW50CiBtYWluKGludCBhcmdjLCBjaGFy
ICphcmd2W10pCiB7CkBAIC0zNjUsNyArMTU2LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJn
dltdKQogI2lmZGVmIF9XSU4zMgogCVNPQ0tFVCBmZDsKICNlbHNlCi0JaW50IGZkOworCWludCBm
ZCwgcmM7CiAjZW5kaWYKIAlzdHJ1Y3Qgc29ja2V0ICpzOwogI2lmZGVmIF9XSU4zMgpAQCAtMzg2
LDE1ICsxNzcsMTUgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCiAjaWZkZWYgX1dJ
TjMyCiAJaWYgKFdTQVN0YXJ0dXAoTUFLRVdPUkQoMiwyKSwgJndzYURhdGEpICE9IDApIHsKLQkJ
cHJpbnRmKCJXU0FTdGFydHVwIGZhaWxlZFxuIik7CisJCWZwcmludGYoc3RkZXJyLCAiV1NBU3Rh
cnR1cCBmYWlsZWRcbiIpOwogCQlleGl0KEVYSVRfRkFJTFVSRSk7CiAJfQogI2VuZGlmCi0JdXNy
c2N0cF9pbml0KDAsIGNvbm5fb3V0cHV0LCBkZWJ1Z19wcmludGYpOworCXVzcnNjdHBfaW5pdCgw
LCBjb25uX291dHB1dCwgZGVidWdfcHJpbnRmX3N0YWNrKTsKIAkvKiBzZXQgdXAgYSBjb25uZWN0
ZWQgVURQIHNvY2tldCAqLwogI2lmZGVmIF9XSU4zMgogCWlmICgoZmQgPSBzb2NrZXQoQUZfSU5F
VCwgU09DS19ER1JBTSwgSVBQUk9UT19VRFApKSA9PSBJTlZBTElEX1NPQ0tFVCkgewotCQlwcmlu
dGYoInNvY2tldCgpIGZhaWxlZCB3aXRoIGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkp
OworCQlmcHJpbnRmKHN0ZGVyciwgInNvY2tldCgpIGZhaWxlZCB3aXRoIGVycm9yOiAlZFxuIiwg
V1NBR2V0TGFzdEVycm9yKCkpOwogCQlleGl0KEVYSVRfRkFJTFVSRSk7CiAJfQogI2Vsc2UKQEAg
LTQxNSw3ICsyMDYsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJfQogI2lmZGVm
IF9XSU4zMgogCWlmIChiaW5kKGZkLCAoc3RydWN0IHNvY2thZGRyICopJnNpbiwgc2l6ZW9mKHN0
cnVjdCBzb2NrYWRkcl9pbikpID09IFNPQ0tFVF9FUlJPUikgewotCQlwcmludGYoImJpbmQoKSBm
YWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIFdTQUdldExhc3RFcnJvcigpKTsKKwkJZnByaW50Zihz
dGRlcnIsICJiaW5kKCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBXU0FHZXRMYXN0RXJyb3Io
KSk7CiAJCWV4aXQoRVhJVF9GQUlMVVJFKTsKIAl9CiAjZWxzZQpAQCAtNDM2LDcgKzIyNyw3IEBA
IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAl9CiAjaWZkZWYgX1dJTjMyCiAJaWYgKGNv
bm5lY3QoZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luLCBzaXplb2Yoc3RydWN0IHNvY2thZGRy
X2luKSkgPT0gU09DS0VUX0VSUk9SKSB7Ci0JCXByaW50ZigiY29ubmVjdCgpIGZhaWxlZCB3aXRo
IGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOworCQlmcHJpbnRmKHN0ZGVyciwgImNv
bm5lY3QoKSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIFdTQUdldExhc3RFcnJvcigpKTsKIAkJ
ZXhpdChFWElUX0ZBSUxVUkUpOwogCX0KICNlbHNlCkBAIC00NDYsOSArMjM3LDE1IEBAIG1haW4o
aW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAl9CiAjZW5kaWYKICNpZmRlZiBfV0lOMzIKLQl0aWQg
PSBDcmVhdGVUaHJlYWQoTlVMTCwgMCwgJmhhbmRsZV9wYWNrZXRzLCAodm9pZCAqKSZmZCwgMCwg
TlVMTCk7CisJaWYgKCh0aWQgPSBDcmVhdGVUaHJlYWQoTlVMTCwgMCwgJmhhbmRsZV9wYWNrZXRz
LCAodm9pZCAqKSZmZCwgMCwgTlVMTCkpID09IE5VTEwpIHsKKwkJZnByaW50ZihzdGRlcnIsICJD
cmVhdGVUaHJlYWQoKSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIEdldExhc3RFcnJvcigpKTsK
KwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KICNlbHNlCi0JcHRocmVhZF9jcmVhdGUoJnRpZCwg
TlVMTCwgJmhhbmRsZV9wYWNrZXRzLCAodm9pZCAqKSZmZCk7CisJaWYgKChyYyA9IHB0aHJlYWRf
Y3JlYXRlKCZ0aWQsIE5VTEwsICZoYW5kbGVfcGFja2V0cywgKHZvaWQgKikmZmQpKSAhPSAwKSB7
CisJCWZwcmludGYoc3RkZXJyLCAicHRocmVhZF9jcmVhdGU6ICVzXG4iLCBzdHJlcnJvcihyYykp
OworCQlleGl0KEVYSVRfRkFJTFVSRSk7CisJfQogI2VuZGlmCiAjaWZkZWYgU0NUUF9ERUJVRwog
CXVzcnNjdHBfc3lzY3RsX3NldF9zY3RwX2RlYnVnX29uKFNDVFBfREVCVUdfTk9ORSk7CkBAIC00
OTIsNyArMjg5LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQlwZXJyb3IoInVz
cnNjdHBfY29ubmVjdCIpOwogCX0KIAlmb3IgKDs7KSB7Ci0jaWZkZWYgX1dJTjMyCisjaWYgZGVm
aW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fTUlOR1czMl9fKQogCQlpZiAoZ2V0c19zKGxpbmUs
IExJTkVfTEVOR1RIKSA9PSBOVUxMKSB7CiAjZWxzZQogCQlpZiAoZmdldHMobGluZSwgTElORV9M
RU5HVEgsIHN0ZGluKSA9PSBOVUxMKSB7CkBAIC01MTUsNyArMzEyLDcgQEAgbWFpbihpbnQgYXJn
YywgY2hhciAqYXJndltdKQogCQlzbmRpbmZvLnNuZF9jb250ZXh0ID0gMDsKIAkJc25kaW5mby5z
bmRfYXNzb2NfaWQgPSAwOwogCQlpZiAodXNyc2N0cF9zZW5kdihzLCBsaW5lLCBzdHJsZW4obGlu
ZSksIE5VTEwsIDAsICh2b2lkICopJnNuZGluZm8sCi0JICAgICAgICAgICAgICAgICAgICAgICAg
ICAoc29ja2xlbl90KXNpemVvZihzdHJ1Y3Qgc2N0cF9zbmRpbmZvKSwgU0NUUF9TRU5EVl9TTkRJ
TkZPLCAwKSA8IDApIHsKKwkJICAgICAgICAgICAgICAgICAgKHNvY2tsZW5fdClzaXplb2Yoc3Ry
dWN0IHNjdHBfc25kaW5mbyksIFNDVFBfU0VORFZfU05ESU5GTywgMCkgPCAwKSB7CiAJCQlwZXJy
b3IoInVzcnNjdHBfc2VuZHYiKTsKIAkJfQogCX0KQEAgLTUzMCw3ICszMjcsNyBAQCBtYWluKGlu
dCBhcmdjLCBjaGFyICphcmd2W10pCiAJVGVybWluYXRlVGhyZWFkKHRpZCwgMCk7CiAJV2FpdEZv
clNpbmdsZU9iamVjdCh0aWQsIElORklOSVRFKTsKIAlpZiAoY2xvc2Vzb2NrZXQoZmQpID09IFNP
Q0tFVF9FUlJPUikgewotCQlwcmludGYoImNsb3Nlc29ja2V0KCkgZmFpbGVkIHdpdGggZXJyb3I6
ICVkXG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7CisJCWZwcmludGYoc3RkZXJyLCAiY2xvc2Vzb2Nr
ZXQoKSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIFdTQUdldExhc3RFcnJvcigpKTsKIAl9CiAJ
V1NBQ2xlYW51cCgpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2Vrcl9z
ZXJ2ZXIuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
dXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2Vrcl9zZXJ2ZXIuYwppbmRleCA1NTQ1YWJiMzI2
NWRkMTIwOGI0NjY5MmJjMzdmNWU5YzYzOGM2MjNmLi5kOGQ5ZDFjZThiMDk0MWNjOTYzOGQ0NzA0
NDZiMjIwZmU4ZDU4MzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9la3Jfc2VydmVy
LmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91
c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvZWtyX3NlcnZlci5jCkBAIC00OSw2ICs0OSw3IEBA
CiAjaW5jbHVkZSA8d3MydGNwaXAuaD4KICNlbmRpZgogI2luY2x1ZGUgPHVzcnNjdHAuaD4KKyNp
bmNsdWRlICJwcm9ncmFtc19oZWxwZXIuaCIKIAogI2RlZmluZSBQT1JUIDUwMDEKICNkZWZpbmUg
TUFYX1BBQ0tFVF9TSVpFICgxPDwxNikKQEAgLTE1MiwxNiArMTUzLDYgQEAgcmVjZWl2ZV9jYihz
dHJ1Y3Qgc29ja2V0ICpzLCB1bmlvbiBzY3RwX3NvY2tzdG9yZSBhZGRyLCB2b2lkICpkYXRhLAog
CXJldHVybiAoMSk7CiB9CiAKLXZvaWQKLWRlYnVnX3ByaW50Zihjb25zdCBjaGFyICpmb3JtYXQs
IC4uLikKLXsKLQl2YV9saXN0IGFwOwotCi0JdmFfc3RhcnQoYXAsIGZvcm1hdCk7Ci0JdnByaW50
Zihmb3JtYXQsIGFwKTsKLQl2YV9lbmQoYXApOwotfQotCiBpbnQKIG1haW4oaW50IGFyZ2MsIGNo
YXIgKmFyZ3ZbXSkKIHsKQEAgLTE3MCw3ICsxNjEsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICph
cmd2W10pCiAjaWZkZWYgX1dJTjMyCiAJU09DS0VUIGZkOwogI2Vsc2UKLQlpbnQgZmQ7CisJaW50
IGZkLCByYzsKICNlbmRpZgogCXN0cnVjdCBzb2NrZXQgKnM7CiAjaWZkZWYgX1dJTjMyCkBAIC0x
ODMsMjEgKzE3NCwyMSBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAjZW5kaWYKIAog
CWlmIChhcmdjIDwgNCkgewotCQlwcmludGYoImVycm9yOiB0aGlzIHByb2dyYW0gcmVxdWlyZXMg
NCBhcmd1bWVudHMhXG4iKTsKKwkJZnByaW50ZihzdGRlcnIsICJlcnJvcjogdGhpcyBwcm9ncmFt
IHJlcXVpcmVzIDQgYXJndW1lbnRzIVxuIik7CiAJCWV4aXQoRVhJVF9GQUlMVVJFKTsKIAl9CiAK
ICNpZmRlZiBfV0lOMzIKIAlpZiAoV1NBU3RhcnR1cChNQUtFV09SRCgyLDIpLCAmd3NhRGF0YSkg
IT0gMCkgewotCQlwcmludGYoIldTQVN0YXJ0dXAgZmFpbGVkXG4iKTsKKwkJZnByaW50ZihzdGRl
cnIsICJXU0FTdGFydHVwIGZhaWxlZFxuIik7CiAJCWV4aXQgKEVYSVRfRkFJTFVSRSk7CiAJfQog
I2VuZGlmCi0JdXNyc2N0cF9pbml0KDAsIGNvbm5fb3V0cHV0LCBkZWJ1Z19wcmludGYpOworCXVz
cnNjdHBfaW5pdCgwLCBjb25uX291dHB1dCwgZGVidWdfcHJpbnRmX3N0YWNrKTsKIAkvKiBzZXQg
dXAgYSBjb25uZWN0ZWQgVURQIHNvY2tldCAqLwogI2lmZGVmIF9XSU4zMgogCWlmICgoZmQgPSBz
b2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgSVBQUk9UT19VRFApKSA9PSBJTlZBTElEX1NPQ0tF
VCkgewotCQlwcmludGYoInNvY2tldCgpIGZhaWxlZCB3aXRoIGVycm9yOiAlZFxuIiwgV1NBR2V0
TGFzdEVycm9yKCkpOworCQlmcHJpbnRmKHN0ZGVyciwgInNvY2tldCgpIGZhaWxlZCB3aXRoIGVy
cm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOwogCQlleGl0KEVYSVRfRkFJTFVSRSk7CiAJ
fQogI2Vsc2UKQEAgLTIxMywxMiArMjA0LDEyIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb
XSkKICNlbmRpZgogCXNpbi5zaW5fcG9ydCA9IGh0b25zKGF0b2koYXJndlsyXSkpOwogCWlmICgh
aW5ldF9wdG9uKEFGX0lORVQsIGFyZ3ZbMV0sICZzaW4uc2luX2FkZHIuc19hZGRyKSl7Ci0JCXBy
aW50ZigiZXJyb3I6IGludmFsaWQgYWRkcmVzc1xuIik7CisJCWZwcmludGYoc3RkZXJyLCAiZXJy
b3I6IGludmFsaWQgYWRkcmVzc1xuIik7CiAJCWV4aXQoRVhJVF9GQUlMVVJFKTsKIAl9CiAjaWZk
ZWYgX1dJTjMyCiAJaWYgKGJpbmQoZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luLCBzaXplb2Yo
c3RydWN0IHNvY2thZGRyX2luKSkgPT0gU09DS0VUX0VSUk9SKSB7Ci0JCXByaW50ZigiYmluZCgp
IGZhaWxlZCB3aXRoIGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOworCQlmcHJpbnRm
KHN0ZGVyciwgImJpbmQoKSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIFdTQUdldExhc3RFcnJv
cigpKTsKIAkJZXhpdChFWElUX0ZBSUxVUkUpOwogCX0KICNlbHNlCkBAIC0yMzksNyArMjMwLDcg
QEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCX0KICNpZmRlZiBfV0lOMzIKIAlpZiAo
Y29ubmVjdChmZCwgKHN0cnVjdCBzb2NrYWRkciAqKSZzaW4sIHNpemVvZihzdHJ1Y3Qgc29ja2Fk
ZHJfaW4pKSA9PSBTT0NLRVRfRVJST1IpIHsKLQkJcHJpbnRmKCJjb25uZWN0KCkgZmFpbGVkIHdp
dGggZXJyb3I6ICVkXG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7CisJCWZwcmludGYoc3RkZXJyLCAi
Y29ubmVjdCgpIGZhaWxlZCB3aXRoIGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOwog
CQlleGl0KEVYSVRfRkFJTFVSRSk7CiAJfQogI2Vsc2UKQEAgLTI1NCw5ICsyNDUsMTUgQEAgbWFp
bihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCXVzcnNjdHBfc3lzY3RsX3NldF9zY3RwX2Vjbl9l
bmFibGUoMCk7CiAJdXNyc2N0cF9yZWdpc3Rlcl9hZGRyZXNzKCh2b2lkICopJmZkKTsKICNpZmRl
ZiBfV0lOMzIKLQl0aWQgPSBDcmVhdGVUaHJlYWQoTlVMTCwgMCwgJmhhbmRsZV9wYWNrZXRzLCAo
dm9pZCAqKSZmZCwgMCwgTlVMTCk7CisJaWYgKCh0aWQgPSBDcmVhdGVUaHJlYWQoTlVMTCwgMCwg
JmhhbmRsZV9wYWNrZXRzLCAodm9pZCAqKSZmZCwgMCwgTlVMTCkpID09IE5VTEwpIHsKKwkJZnBy
aW50ZihzdGRlcnIsICJDcmVhdGVUaHJlYWQoKSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIEdl
dExhc3RFcnJvcigpKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KICNlbHNlCi0JcHRocmVh
ZF9jcmVhdGUoJnRpZCwgTlVMTCwgJmhhbmRsZV9wYWNrZXRzLCAodm9pZCAqKSZmZCk7CisJaWYg
KChyYyA9IHB0aHJlYWRfY3JlYXRlKCZ0aWQsIE5VTEwsICZoYW5kbGVfcGFja2V0cywgKHZvaWQg
KikmZmQpKSAhPSAwKSB7CisJCWZwcmludGYoc3RkZXJyLCAicHRocmVhZF9jcmVhdGU6ICVzXG4i
LCBzdHJlcnJvcihyYykpOworCQlleGl0KEVYSVRfRkFJTFVSRSk7CisJfQogI2VuZGlmCiAJaWYg
KChzID0gdXNyc2N0cF9zb2NrZXQoQUZfQ09OTiwgU09DS19TVFJFQU0sIElQUFJPVE9fU0NUUCwg
cmVjZWl2ZV9jYiwgTlVMTCwgMCwgTlVMTCkpID09IE5VTEwpIHsKIAkJcGVycm9yKCJ1c3JzY3Rw
X3NvY2tldCIpOwpAQCAtMjkyLDcgKzI4OSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb
XSkKIAlUZXJtaW5hdGVUaHJlYWQodGlkLCAwKTsKIAlXYWl0Rm9yU2luZ2xlT2JqZWN0KHRpZCwg
SU5GSU5JVEUpOwogCWlmIChjbG9zZXNvY2tldChmZCkgPT0gU09DS0VUX0VSUk9SKSB7Ci0JCXBy
aW50ZigiY2xvc2Vzb2NrZXQoKSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIFdTQUdldExhc3RF
cnJvcigpKTsKKwkJZnByaW50ZihzdGRlcnIsICJjbG9zZXNvY2tldCgpIGZhaWxlZCB3aXRoIGVy
cm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOwogCX0KIAlXU0FDbGVhbnVwKCk7CiAjZWxz
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvaHR0cF9jbGllbnQuYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L3Byb2dyYW1zL2h0dHBfY2xpZW50LmMKaW5kZXggNGRjMTk3ZjAxMzdiZDJiYWRiOWZjZmFhNzZl
MmM5NmJmMmExOTgwZS4uMDNjOTI4NjBhNzZhZWEwZGVkMDA2N2E2N2Q5YzU2NTYzNGVlMWQ2MCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvaHR0cF9jbGllbnQuYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi9wcm9ncmFtcy9odHRwX2NsaWVudC5jCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNiBGZWxpeCBXZWlucmFuaworICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgRmVs
aXggV2VpbnJhbmsKICAqCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTMwLDcgKzMw
LDcgQEAKIAogLyoKICAqIFVzYWdlOiBodHRwX2NsaWVudCByZW1vdGVfYWRkciByZW1vdGVfcG9y
dCBbbG9jYWxfcG9ydF0gW2xvY2FsX2VuY2Fwc19wb3J0XSBbcmVtb3RlX2VuY2Fwc19wb3J0XSBb
dXJpXQotICogCisgKgogICogRXhhbXBsZQogICogQ2xpZW50OiAkIC4vaHR0cF9jbGllbnQgMjEy
LjIwMS4xMjEuMTAwIDgwIDAgOTg5OSA5ODk5IC9jZ2ktYmluL2hlCiAgKiAgICAgICAgICAgLi9o
dHRwX2NsaWVudCAyYTAyOmM2YTA6NDAxNToxMDo6MTAwIDgwIDAgOTg5OSA5ODk5IC9jZ2ktYmlu
L2hlCkBAIC01MSwxMCArNTEsMTggQEAKICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CiAjaW5jbHVk
ZSA8bmV0aW5ldC9pbi5oPgogI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorI2luY2x1ZGUgPHN5cy90
aW1lLmg+CiAjZWxzZQogI2luY2x1ZGUgPGlvLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Cisj
aW5jbHVkZSA8c3lzL3RpbWViLmg+CiAjZW5kaWYKICNpbmNsdWRlIDx1c3JzY3RwLmg+CisjaW5j
bHVkZSAicHJvZ3JhbXNfaGVscGVyLmgiCisKKyNkZWZpbmUgUkVUVkFMX0NBVENIQUxMICAgICA1
MAorI2RlZmluZSBSRVRWQUxfVElNRU9VVCAgICAgIDYwCisjZGVmaW5lIFJFVFZBTF9FQ09OTlJF
RlVTRUQgNjEKIAogaW50IGRvbmUgPSAwOwogc3RhdGljIGNvbnN0IGNoYXIgKnJlcXVlc3RfcHJl
Zml4ID0gIkdFVCI7CkBAIC03Myw2ICs4MSw5IEBAIHJlY2VpdmVfY2Ioc3RydWN0IHNvY2tldCAq
c29jaywgdW5pb24gc2N0cF9zb2Nrc3RvcmUgYWRkciwgdm9pZCAqZGF0YSwKIAkJZG9uZSA9IDE7
CiAJCXVzcnNjdHBfY2xvc2Uoc29jayk7CiAJfSBlbHNlIHsKKwkJaWYgKGZsYWdzICYgTVNHX05P
VElGSUNBVElPTikgeworCQkJaGFuZGxlX25vdGlmaWNhdGlvbigodW5pb24gc2N0cF9ub3RpZmlj
YXRpb24gKilkYXRhLCBkYXRhbGVuKTsKKwkJfSBlbHNlIHsKICNpZmRlZiBfV0lOMzIKIAkJX3dy
aXRlKF9maWxlbm8oc3Rkb3V0KSwgZGF0YSwgKHVuc2lnbmVkIGludClkYXRhbGVuKTsKICNlbHNl
CkBAIC04MCw0MSArOTEsNzcgQEAgcmVjZWl2ZV9jYihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCB1bmlv
biBzY3RwX3NvY2tzdG9yZSBhZGRyLCB2b2lkICpkYXRhLAogCQkJcGVycm9yKCJ3cml0ZSIpOwog
CQl9CiAjZW5kaWYKKwkJfQogCQlmcmVlKGRhdGEpOwogCX0KIAlyZXR1cm4gKDEpOwogfQogCi12
b2lkCi1kZWJ1Z19wcmludGYoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCi17Ci0JdmFfbGlzdCBh
cDsKLQotCXZhX3N0YXJ0KGFwLCBmb3JtYXQpOwotCXZwcmludGYoZm9ybWF0LCBhcCk7Ci0JdmFf
ZW5kKGFwKTsKLX0KLQogaW50CiBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiB7CiAJc3Ry
dWN0IHNvY2tldCAqc29jazsKKwlzdHJ1Y3Qgc29ja2FkZHIgKmFkZHI7CisJc29ja2xlbl90IGFk
ZHJfbGVuOwogCXN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyNDsKIAlzdHJ1Y3Qgc29ja2FkZHJfaW42
IGFkZHI2OworCXN0cnVjdCBzb2NrYWRkcl9pbiBiaW5kNDsKKwlzdHJ1Y3Qgc29ja2FkZHJfaW42
IGJpbmQ2OwogCXN0cnVjdCBzY3RwX3VkcGVuY2FwcyBlbmNhcHM7CiAJc3RydWN0IHNjdHBfc25k
aW5mbyBzbmRpbmZvOwotCWludCByZXN1bHQ7CisJc3RydWN0IHNjdHBfcnRvaW5mbyBydG9pbmZv
OworCXN0cnVjdCBzY3RwX2luaXRtc2cgaW5pdG1zZzsKKwlzdHJ1Y3Qgc2N0cF9ldmVudCBldmVu
dDsKKwlpbnQgcmVzdWx0ID0gMDsKKwl1bnNpZ25lZCBpbnQgaTsKKwl1aW50OF90IGFkZHJlc3Nf
ZmFtaWx5ID0gMDsKKwl1aW50MTZfdCBldmVudF90eXBlc1tdID0ge1NDVFBfQVNTT0NfQ0hBTkdF
LAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgU0NUUF9QRUVSX0FERFJfQ0hBTkdFLAorCSAg
ICAgICAgICAgICAgICAgICAgICAgICAgU0NUUF9TRU5EX0ZBSUxFRF9FVkVOVCwKKyAJICAgICAg
ICAgICAgICAgICAgICAgICAgICBTQ1RQX1JFTU9URV9FUlJPUiwKKwkgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNDVFBfU0hVVERPV05fRVZFTlQsCisJICAgICAgICAgICAgICAgICAgICAgICAg
ICBTQ1RQX0FEQVBUQVRJT05fSU5ESUNBVElPTiwKKwkgICAgICAgICAgICAgICAgICAgICAgICAg
IFNDVFBfUEFSVElBTF9ERUxJVkVSWV9FVkVOVAorCSAgICAgICAgICAgICAgICAgICAgICAgIH07
CiAKLSAgICBpZiAoYXJnYyA8IDMpIHsKLSAgICAgICAgcHJpbnRmKCJVc2FnZTogaHR0cF9jbGll
bnQgcmVtb3RlX2FkZHIgcmVtb3RlX3BvcnQgW2xvY2FsX3BvcnRdIFtsb2NhbF9lbmNhcHNfcG9y
dF0gW3JlbW90ZV9lbmNhcHNfcG9ydF0gW3VyaV1cbiIpOwotICAgICAgICByZXR1cm4oRVhJVF9G
QUlMVVJFKTsKLSAgICB9CisJaWYgKGFyZ2MgPCAzKSB7CisJCXByaW50ZigiVXNhZ2U6IGh0dHBf
Y2xpZW50IHJlbW90ZV9hZGRyIHJlbW90ZV9wb3J0IFtsb2NhbF9wb3J0XSBbbG9jYWxfZW5jYXBz
X3BvcnRdIFtyZW1vdGVfZW5jYXBzX3BvcnRdIFt1cmldXG4iKTsKKwkJcmV0dXJuKEVYSVRfRkFJ
TFVSRSk7CisJfQorCisJbWVtc2V0KCh2b2lkICopJmFkZHI0LCAwLCBzaXplb2Yoc3RydWN0IHNv
Y2thZGRyX2luKSk7CisJbWVtc2V0KCh2b2lkICopJmFkZHI2LCAwLCBzaXplb2Yoc3RydWN0IHNv
Y2thZGRyX2luNikpOworCisJaWYgKGluZXRfcHRvbihBRl9JTkVULCBhcmd2WzFdLCAmYWRkcjQu
c2luX2FkZHIpID09IDEpIHsKKwkJYWRkcmVzc19mYW1pbHkgPSBBRl9JTkVUOworCisJCWFkZHIg
PSAoc3RydWN0IHNvY2thZGRyICopJmFkZHI0OworCQlhZGRyX2xlbiA9IHNpemVvZihhZGRyNCk7
CisjaWZkZWYgSEFWRV9TSU5fTEVOCisJCWFkZHI0LnNpbl9sZW4gPSBzaXplb2Yoc3RydWN0IHNv
Y2thZGRyX2luKTsKKyNlbmRpZgorCQlhZGRyNC5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKKwkJYWRk
cjQuc2luX3BvcnQgPSBodG9ucyhhdG9pKGFyZ3ZbMl0pKTsKKwl9IGVsc2UgaWYgKGluZXRfcHRv
bihBRl9JTkVUNiwgYXJndlsxXSwgJmFkZHI2LnNpbjZfYWRkcikgPT0gMSkgeworCQlhZGRyZXNz
X2ZhbWlseSA9IEFGX0lORVQ2OworCisJCWFkZHIgPSAoc3RydWN0IHNvY2thZGRyICopJmFkZHI2
OworCQlhZGRyX2xlbiA9IHNpemVvZihhZGRyNik7CisjaWZkZWYgSEFWRV9TSU42X0xFTgorCQlh
ZGRyNi5zaW42X2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KTsKKyNlbmRpZgorCQlh
ZGRyNi5zaW42X2ZhbWlseSA9IEFGX0lORVQ2OworCQlhZGRyNi5zaW42X3BvcnQgPSBodG9ucyhh
dG9pKGFyZ3ZbMl0pKTsKKwl9IGVsc2UgeworCQlwcmludGYoIlVuc3VwcG9ydGVkIGRlc3RpbmF0
aW9uIGFkZHJlc3MgLSB1c2UgSVB2NCBvciBJUHY2IGFkZHJlc3NcbiIpOworCQlyZXN1bHQgPSBS
RVRWQUxfQ0FUQ0hBTEw7CisJCWdvdG8gb3V0OworCX0KIAotCXJlc3VsdCA9IDA7CiAJaWYgKGFy
Z2MgPiA0KSB7Ci0JCXVzcnNjdHBfaW5pdChhdG9pKGFyZ3ZbNF0pLCBOVUxMLCBkZWJ1Z19wcmlu
dGYpOworCQl1c3JzY3RwX2luaXQoYXRvaShhcmd2WzRdKSwgTlVMTCwgZGVidWdfcHJpbnRmX3N0
YWNrKTsKIAl9IGVsc2UgewotCQl1c3JzY3RwX2luaXQoOTg5OSwgTlVMTCwgZGVidWdfcHJpbnRm
KTsKKwkJdXNyc2N0cF9pbml0KDk4OTksIE5VTEwsIGRlYnVnX3ByaW50Zl9zdGFjayk7CiAJfQog
CiAjaWZkZWYgU0NUUF9ERUJVRwpAQCAtMTIyLDg4ICsxNjksMTIzIEBAIG1haW4oaW50IGFyZ2Ms
IGNoYXIgKmFyZ3ZbXSkKICNlbmRpZgogCiAJdXNyc2N0cF9zeXNjdGxfc2V0X3NjdHBfYmxhY2to
b2xlKDIpOworCXVzcnNjdHBfc3lzY3RsX3NldF9zY3RwX25vX2NzdW1fb25fbG9vcGJhY2soMCk7
CiAKLQlpZiAoKHNvY2sgPSB1c3JzY3RwX3NvY2tldChBRl9JTkVUNiwgU09DS19TVFJFQU0sIElQ
UFJPVE9fU0NUUCwgcmVjZWl2ZV9jYiwgTlVMTCwgMCwgTlVMTCkpID09IE5VTEwpIHsKKwlpZiAo
KHNvY2sgPSB1c3JzY3RwX3NvY2tldChhZGRyZXNzX2ZhbWlseSwgU09DS19TVFJFQU0sIElQUFJP
VE9fU0NUUCwgcmVjZWl2ZV9jYiwgTlVMTCwgMCwgTlVMTCkpID09IE5VTEwpIHsKIAkJcGVycm9y
KCJ1c3JzY3RwX3NvY2tldCIpOwotCQlyZXN1bHQgPSAxOworCQlyZXN1bHQgPSBSRVRWQUxfQ0FU
Q0hBTEw7CisJCWdvdG8gb3V0OworCX0KKworCW1lbXNldCgmZXZlbnQsIDAsIHNpemVvZihldmVu
dCkpOworCWV2ZW50LnNlX2Fzc29jX2lkID0gU0NUUF9BTExfQVNTT0M7CisJZXZlbnQuc2Vfb24g
PSAxOworCWZvciAoaSA9IDA7IGkgPCBzaXplb2YoZXZlbnRfdHlwZXMpIC8gc2l6ZW9mKHVpbnQx
Nl90KTsgaSsrKSB7CisJCWV2ZW50LnNlX3R5cGUgPSBldmVudF90eXBlc1tpXTsKKwkJaWYgKHVz
cnNjdHBfc2V0c29ja29wdChzb2NrLCBJUFBST1RPX1NDVFAsIFNDVFBfRVZFTlQsICZldmVudCwg
c2l6ZW9mKGV2ZW50KSkgPCAwKSB7CisJCQlwZXJyb3IoInNldHNvY2tvcHQgU0NUUF9FVkVOVCIp
OworCQl9CisJfQorCisJcnRvaW5mby5zcnRvX2Fzc29jX2lkID0gMDsKKwlydG9pbmZvLnNydG9f
aW5pdGlhbCA9IDEwMDA7CisJcnRvaW5mby5zcnRvX21pbiA9IDEwMDA7CisJcnRvaW5mby5zcnRv
X21heCA9IDgwMDA7CisJaWYgKHVzcnNjdHBfc2V0c29ja29wdChzb2NrLCBJUFBST1RPX1NDVFAs
IFNDVFBfUlRPSU5GTywgKGNvbnN0IHZvaWQgKikmcnRvaW5mbywgKHNvY2tsZW5fdClzaXplb2Yo
c3RydWN0IHNjdHBfcnRvaW5mbykpIDwgMCkgeworCQlwZXJyb3IoInNldHNvY2tvcHQiKTsKKwkJ
dXNyc2N0cF9jbG9zZShzb2NrKTsKKwkJcmVzdWx0ID0gUkVUVkFMX0NBVENIQUxMOworCQlnb3Rv
IG91dDsKKwl9CisJaW5pdG1zZy5zaW5pdF9udW1fb3N0cmVhbXMgPSAxOworCWluaXRtc2cuc2lu
aXRfbWF4X2luc3RyZWFtcyA9IDE7CisJaW5pdG1zZy5zaW5pdF9tYXhfYXR0ZW1wdHMgPSA1Owor
CWluaXRtc2cuc2luaXRfbWF4X2luaXRfdGltZW8gPSA0MDAwOworCWlmICh1c3JzY3RwX3NldHNv
Y2tvcHQoc29jaywgSVBQUk9UT19TQ1RQLCBTQ1RQX0lOSVRNU0csIChjb25zdCB2b2lkICopJmlu
aXRtc2csIChzb2NrbGVuX3Qpc2l6ZW9mKHN0cnVjdCBzY3RwX2luaXRtc2cpKSA8IDApIHsKKwkJ
cGVycm9yKCJzZXRzb2Nrb3B0Iik7CisJCXVzcnNjdHBfY2xvc2Uoc29jayk7CisJCXJlc3VsdCA9
IFJFVFZBTF9DQVRDSEFMTDsKIAkJZ290byBvdXQ7CiAJfQogCiAJaWYgKGFyZ2MgPiAzKSB7Ci0J
CW1lbXNldCgodm9pZCAqKSZhZGRyNiwgMCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKTsK
KworCQlpZiAoYWRkcmVzc19mYW1pbHkgPT0gQUZfSU5FVCkgeworCQkJbWVtc2V0KCh2b2lkICop
JmJpbmQ0LCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7CisjaWZkZWYgSEFWRV9TSU5f
TEVOCisJCQliaW5kNC5zaW5fbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpOworI2Vu
ZGlmCisJCQliaW5kNC5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKKwkJCWJpbmQ0LnNpbl9wb3J0ID0g
aHRvbnMoYXRvaShhcmd2WzNdKSk7CisJCQliaW5kNC5zaW5fYWRkci5zX2FkZHIgPSBodG9ubChJ
TkFERFJfQU5ZKTsKKworCQkJaWYgKHVzcnNjdHBfYmluZChzb2NrLCAoc3RydWN0IHNvY2thZGRy
ICopJmJpbmQ0LCBzaXplb2YoYmluZDQpKSA8IDApIHsKKwkJCQlwZXJyb3IoImJpbmQiKTsKKwkJ
CQl1c3JzY3RwX2Nsb3NlKHNvY2spOworCQkJCXJlc3VsdCA9IFJFVFZBTF9DQVRDSEFMTDsKKwkJ
CQlnb3RvIG91dDsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCW1lbXNldCgodm9pZCAqKSZiaW5kNiwg
MCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKTsKICNpZmRlZiBIQVZFX1NJTjZfTEVOCi0J
CWFkZHI2LnNpbjZfbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpOworCQkJYmluZDYu
c2luNl9sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNik7CiAjZW5kaWYKLQkJYWRkcjYu
c2luNl9mYW1pbHkgPSBBRl9JTkVUNjsKLQkJYWRkcjYuc2luNl9wb3J0ID0gaHRvbnMoYXRvaShh
cmd2WzNdKSk7Ci0JCWFkZHI2LnNpbjZfYWRkciA9IGluNmFkZHJfYW55OwotCQlpZiAodXNyc2N0
cF9iaW5kKHNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikmYWRkcjYsIHNpemVvZihzdHJ1Y3Qgc29j
a2FkZHJfaW42KSkgPCAwKSB7Ci0JCQlwZXJyb3IoImJpbmQiKTsKLQkJCXVzcnNjdHBfY2xvc2Uo
c29jayk7Ci0JCQlyZXN1bHQgPSAyOwotCQkJZ290byBvdXQ7CisJCQliaW5kNi5zaW42X2ZhbWls
eSA9IEFGX0lORVQ2OworCQkJYmluZDYuc2luNl9wb3J0ID0gaHRvbnMoYXRvaShhcmd2WzNdKSk7
CisJCQliaW5kNi5zaW42X2FkZHIgPSBpbjZhZGRyX2FueTsKKwkJCWlmICh1c3JzY3RwX2JpbmQo
c29jaywgKHN0cnVjdCBzb2NrYWRkciAqKSZiaW5kNiwgc2l6ZW9mKGJpbmQ2KSkgPCAwKSB7CisJ
CQkJcGVycm9yKCJiaW5kIik7CisJCQkJdXNyc2N0cF9jbG9zZShzb2NrKTsKKwkJCQlyZXN1bHQg
PSBSRVRWQUxfQ0FUQ0hBTEw7CisJCQkJZ290byBvdXQ7CisJCQl9CiAJCX0KIAl9CiAKIAlpZiAo
YXJnYyA+IDUpIHsKIAkJbWVtc2V0KCZlbmNhcHMsIDAsIHNpemVvZihzdHJ1Y3Qgc2N0cF91ZHBl
bmNhcHMpKTsKLQkJZW5jYXBzLnN1ZV9hZGRyZXNzLnNzX2ZhbWlseSA9IEFGX0lORVQ2OworCQll
bmNhcHMuc3VlX2FkZHJlc3Muc3NfZmFtaWx5ID0gYWRkcmVzc19mYW1pbHk7CiAJCWVuY2Fwcy5z
dWVfcG9ydCA9IGh0b25zKGF0b2koYXJndls1XSkpOwogCQlpZiAodXNyc2N0cF9zZXRzb2Nrb3B0
KHNvY2ssIElQUFJPVE9fU0NUUCwgU0NUUF9SRU1PVEVfVURQX0VOQ0FQU19QT1JULCAoY29uc3Qg
dm9pZCAqKSZlbmNhcHMsIChzb2NrbGVuX3Qpc2l6ZW9mKHN0cnVjdCBzY3RwX3VkcGVuY2Fwcykp
IDwgMCkgewogCQkJcGVycm9yKCJzZXRzb2Nrb3B0Iik7CiAJCQl1c3JzY3RwX2Nsb3NlKHNvY2sp
OwotCQkJcmVzdWx0ID0gMzsKKwkJCXJlc3VsdCA9IFJFVFZBTF9DQVRDSEFMTDsKIAkJCWdvdG8g
b3V0OwogCQl9CiAJfQogCiAJaWYgKGFyZ2MgPiA2KSB7CiAjaWZkZWYgX1dJTjMyCi0JCV9zbnBy
aW50ZihyZXF1ZXN0LCBzaXplb2YocmVxdWVzdCksICIlcyAlcyAlcyIsIHJlcXVlc3RfcHJlZml4
LCBhcmd2WzZdLCByZXF1ZXN0X3Bvc3RmaXgpOworCQlpZiAoX3NucHJpbnRmKHJlcXVlc3QsIHNp
emVvZihyZXF1ZXN0KSwgIiVzICVzICVzIiwgcmVxdWVzdF9wcmVmaXgsIGFyZ3ZbNl0sIHJlcXVl
c3RfcG9zdGZpeCkgPCAwKSB7CiAjZWxzZQotCQlzbnByaW50ZihyZXF1ZXN0LCBzaXplb2YocmVx
dWVzdCksICIlcyAlcyAlcyIsIHJlcXVlc3RfcHJlZml4LCBhcmd2WzZdLCByZXF1ZXN0X3Bvc3Rm
aXgpOworCQlpZiAoc25wcmludGYocmVxdWVzdCwgc2l6ZW9mKHJlcXVlc3QpLCAiJXMgJXMgJXMi
LCByZXF1ZXN0X3ByZWZpeCwgYXJndls2XSwgcmVxdWVzdF9wb3N0Zml4KSA8IDApIHsKICNlbmRp
ZgorCQkJcmVxdWVzdFswXSA9ICdcMCc7CisJCX0KIAl9IGVsc2UgewogI2lmZGVmIF9XSU4zMgot
CQlfc25wcmludGYocmVxdWVzdCwgc2l6ZW9mKHJlcXVlc3QpLCAiJXMgJXMgJXMiLCByZXF1ZXN0
X3ByZWZpeCwgIi8iLCByZXF1ZXN0X3Bvc3RmaXgpOworCQlpZiAoX3NucHJpbnRmKHJlcXVlc3Qs
IHNpemVvZihyZXF1ZXN0KSwgIiVzICVzICVzIiwgcmVxdWVzdF9wcmVmaXgsICIvIiwgcmVxdWVz
dF9wb3N0Zml4KSA8IDApIHsKICNlbHNlCi0JCXNucHJpbnRmKHJlcXVlc3QsIHNpemVvZihyZXF1
ZXN0KSwgIiVzICVzICVzIiwgcmVxdWVzdF9wcmVmaXgsICIvIiwgcmVxdWVzdF9wb3N0Zml4KTsK
KwkJaWYgKHNucHJpbnRmKHJlcXVlc3QsIHNpemVvZihyZXF1ZXN0KSwgIiVzICVzICVzIiwgcmVx
dWVzdF9wcmVmaXgsICIvIiwgcmVxdWVzdF9wb3N0Zml4KSA8IDApIHsKICNlbmRpZgorCQkJcmVx
dWVzdFswXSA9ICdcMCc7CisJCX0KIAl9CiAKIAlwcmludGYoIlxuSFRUUCByZXF1ZXN0OlxuJXNc
biIsIHJlcXVlc3QpOwogCXByaW50ZigiXG5IVFRQIHJlc3BvbnNlOlxuIik7CiAKLQltZW1zZXQo
KHZvaWQgKikmYWRkcjQsIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKLQltZW1zZXQo
KHZvaWQgKikmYWRkcjYsIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSk7Ci0jaWZkZWYg
SEFWRV9TSU5fTEVOCi0JYWRkcjQuc2luX2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4p
OwotI2VuZGlmCi0jaWZkZWYgSEFWRV9TSU42X0xFTgotCWFkZHI2LnNpbjZfbGVuID0gc2l6ZW9m
KHN0cnVjdCBzb2NrYWRkcl9pbjYpOwotI2VuZGlmCi0JYWRkcjQuc2luX2ZhbWlseSA9IEFGX0lO
RVQ7Ci0JYWRkcjYuc2luNl9mYW1pbHkgPSBBRl9JTkVUNjsKLQlhZGRyNC5zaW5fcG9ydCA9IGh0
b25zKGF0b2koYXJndlsyXSkpOwotCWFkZHI2LnNpbjZfcG9ydCA9IGh0b25zKGF0b2koYXJndlsy
XSkpOwotCWlmIChpbmV0X3B0b24oQUZfSU5FVDYsIGFyZ3ZbMV0sICZhZGRyNi5zaW42X2FkZHIp
ID09IDEpIHsKLQkJaWYgKHVzcnNjdHBfY29ubmVjdChzb2NrLCAoc3RydWN0IHNvY2thZGRyICop
JmFkZHI2LCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNikpIDwgMCkgewotCQkJcGVycm9yKCJ1
c3JzY3RwX2Nvbm5lY3QiKTsKLQkJCXVzcnNjdHBfY2xvc2Uoc29jayk7Ci0JCQlyZXN1bHQgPSA0
OwotCQkJZ290byBvdXQ7CisJaWYgKHVzcnNjdHBfY29ubmVjdChzb2NrLCBhZGRyLCBhZGRyX2xl
bikgPCAwKSB7CisJCWlmIChlcnJubyA9PSBFQ09OTlJFRlVTRUQpIHsKKwkJCXJlc3VsdCA9IFJF
VFZBTF9FQ09OTlJFRlVTRUQ7CisJCX0gZWxzZSBpZiAoZXJybm8gPT0gRVRJTUVET1VUKSB7CisJ
CQlyZXN1bHQgPSBSRVRWQUxfVElNRU9VVDsKKwkJfSBlbHNlIHsKKwkJCXJlc3VsdCA9IFJFVFZB
TF9DQVRDSEFMTDsKIAkJfQotCX0gZWxzZSBpZiAoaW5ldF9wdG9uKEFGX0lORVQsIGFyZ3ZbMV0s
ICZhZGRyNC5zaW5fYWRkcikgPT0gMSkgewotCQlpZiAodXNyc2N0cF9jb25uZWN0KHNvY2ssIChz
dHJ1Y3Qgc29ja2FkZHIgKikmYWRkcjQsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKSA8IDAp
IHsKLQkJCXBlcnJvcigidXNyc2N0cF9jb25uZWN0Iik7Ci0JCQl1c3JzY3RwX2Nsb3NlKHNvY2sp
OwotCQkJcmVzdWx0ID0gNTsKLQkJCWdvdG8gb3V0OwotCQl9Ci0JfSBlbHNlIHsKLQkJcHJpbnRm
KCJJbGxlZ2FsIGRlc3RpbmF0aW9uIGFkZHJlc3NcbiIpOworCQlwZXJyb3IoInVzcnNjdHBfY29u
bmVjdCIpOwogCQl1c3JzY3RwX2Nsb3NlKHNvY2spOwotCQlyZXN1bHQgPSA2OworCiAJCWdvdG8g
b3V0OwogCX0KIApAQCAtMjEzLDcgKzI5NSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb
XSkKIAlpZiAodXNyc2N0cF9zZW5kdihzb2NrLCByZXF1ZXN0LCBzdHJsZW4ocmVxdWVzdCksIE5V
TEwsIDAsICZzbmRpbmZvLCBzaXplb2Yoc3RydWN0IHNjdHBfc25kaW5mbyksIFNDVFBfU0VORFZf
U05ESU5GTywgMCkgPCAwKSB7CiAJCXBlcnJvcigidXNyc2N0cF9zZW5kdiIpOwogCQl1c3JzY3Rw
X2Nsb3NlKHNvY2spOwotCQlyZXN1bHQgPSA2OworCQlyZXN1bHQgPSBSRVRWQUxfQ0FUQ0hBTEw7
CiAJCWdvdG8gb3V0OwogCX0KIApAQCAtMjMyLDUgKzMxNCw2IEBAIG91dDoKIAkJc2xlZXAoMSk7
CiAjZW5kaWYKIAl9CisJcHJpbnRmKCJGaW5pc2hlZCwgcmV0dXJuaW5nIHdpdGggJWRcbiIsIHJl
c3VsdCk7CiAJcmV0dXJuIChyZXN1bHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3Jh
bXMvaHR0cF9jbGllbnRfdXBjYWxsLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9odHRwX2NsaWVudF91
cGNhbGwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wNDIyMWMyNTkzODEyMzY2ZDg1M2UwNTU1YjM3OWFiODdjZTA3
NzQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvaHR0cF9jbGllbnRfdXBj
YWxsLmMKQEAgLTAsMCArMSwzMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBG
ZWxpeCBXZWlucmFuaworICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAz
LiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBwcm9qZWN0IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNv
bnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBQUk9KRUNUIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuCUlOIE5PIEVW
RU5UIFNIQUxMIFRIRSBQUk9KRUNUIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICog
U1VDSCBEQU1BR0UuCisgKi8KKworLyoKKyAqIFVzYWdlOiBodHRwX2NsaWVudF91cGNhbGwgcmVt
b3RlX2FkZHIgcmVtb3RlX3BvcnQgW2xvY2FsX3BvcnRdIFtsb2NhbF9lbmNhcHNfcG9ydF0gW3Jl
bW90ZV9lbmNhcHNfcG9ydF0gW3VyaV0KKyAqLworCisjaWZkZWYgX1dJTjMyCisjZGVmaW5lIF9D
UlRfU0VDVVJFX05PX1dBUk5JTkdTCisjZW5kaWYKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1
ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgor
I2lmbmRlZiBfV0lOMzIKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN5
cy90eXBlcy5oPgorI2lmbmRlZiBfV0lOMzIKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5j
bHVkZSA8bmV0aW5ldC9pbi5oPgorI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorI2luY2x1ZGUgPHN5
cy90aW1lLmg+CisjZWxzZQorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy90
aW1lYi5oPgorI2luY2x1ZGUgPGlvLmg+CisjZW5kaWYKKyNpbmNsdWRlIDx1c3JzY3RwLmg+Cisj
aW5jbHVkZSAicHJvZ3JhbXNfaGVscGVyLmgiCisKKworI2RlZmluZSBSRVRWQUxfQ0FUQ0hBTEwg
ICAgIDUwCisjZGVmaW5lIFJFVFZBTF9USU1FT1VUICAgICAgNjAKKyNkZWZpbmUgUkVUVkFMX0VD
T05OUkVGVVNFRCA2MQorCitpbnQgZG9uZSA9IDA7CitpbnQgd3JpdGVQZW5kaW5nID0gMTsKK2lu
dCByZXN1bHQgPSAwOworCitzdGF0aWMgY29uc3QgY2hhciAqcmVxdWVzdF9wcmVmaXggPSAiR0VU
IjsKK3N0YXRpYyBjb25zdCBjaGFyICpyZXF1ZXN0X3Bvc3RmaXggPSAiSFRUUC8xLjBcclxuVXNl
ci1hZ2VudDogbGlidXNyc2N0cFxyXG5Db25uZWN0aW9uOiBjbG9zZVxyXG5cclxuIjsKK2NoYXIg
cmVxdWVzdFs1MTJdOworCisjaWZkZWYgX1dJTjMyCit0eXBlZGVmIGNoYXIqIGNhZGRyX3Q7Cisj
ZW5kaWYKKworI2RlZmluZSBCVUZGRVJTSVpFICgxPDwxNikKKworc3RhdGljIHZvaWQgaGFuZGxl
X3VwY2FsbChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCB2b2lkICphcmcsIGludCBmbGdzKQoreworCWlu
dCBldmVudHMgPSB1c3JzY3RwX2dldF9ldmVudHMoc29jayk7CisJc3NpemVfdCBieXRlc1NlbnQ7
CisJY2hhciAqYnVmOworCisJaWYgKChldmVudHMgJiBTQ1RQX0VWRU5UX1JFQUQpICYmICFkb25l
KSB7CisJCXN0cnVjdCBzY3RwX3JlY3Z2X3JuIHJuOworCQlzc2l6ZV90IG47CisJCXN0cnVjdCBz
b2NrYWRkcl9pbiBhZGRyOworCQlidWYgPSBtYWxsb2MoQlVGRkVSU0laRSk7CisJCWludCBmbGFn
cyA9IDA7CisJCXNvY2tsZW5fdCBsZW4gPSAoc29ja2xlbl90KXNpemVvZihzdHJ1Y3Qgc29ja2Fk
ZHJfaW4pOworCQl1bnNpZ25lZCBpbnQgaW5mb3R5cGUgPSAwOworCQlzb2NrbGVuX3QgaW5mb2xl
biA9IHNpemVvZihzdHJ1Y3Qgc2N0cF9yZWN2dl9ybik7CisKKwkJbWVtc2V0KCZybiwgMCwgc2l6
ZW9mKHN0cnVjdCBzY3RwX3JlY3Z2X3JuKSk7CisJCW4gPSB1c3JzY3RwX3JlY3Z2KHNvY2ssIGJ1
ZiwgQlVGRkVSU0laRSwgKHN0cnVjdCBzb2NrYWRkciAqKSAmYWRkciwgJmxlbiwgKHZvaWQgKikm
cm4sCisJCSAgICAgICAgICAgICAgICAgICZpbmZvbGVuLCAmaW5mb3R5cGUsICZmbGFncyk7CisK
KwkJaWYgKG4gPCAwKSB7CisJCQlpZiAoZXJybm8gPT0gRUNPTk5SRUZVU0VEKSB7CisJCQkJcmVz
dWx0ID0gUkVUVkFMX0VDT05OUkVGVVNFRDsKKwkJCX0gZWxzZSBpZiAoZXJybm8gPT0gRVRJTUVE
T1VUKSB7CisJCQkJcmVzdWx0ID0gUkVUVkFMX1RJTUVPVVQ7CisJCQl9IGVsc2UgeworCQkJCXJl
c3VsdCA9IFJFVFZBTF9DQVRDSEFMTDsKKwkJCX0KKwkJCXBlcnJvcigidXNyc2N0cF9yZWN2diIp
OworCQl9CisKKwkJaWYgKG4gPD0gMCkgeworCQkJZG9uZSA9IDE7CisJCQl1c3JzY3RwX2Nsb3Nl
KHNvY2spOworCQl9IGVsc2UgeworI2lmZGVmIF9XSU4zMgorCQkJX3dyaXRlKF9maWxlbm8oc3Rk
b3V0KSwgYnVmLCAodW5zaWduZWQgaW50KW4pOworI2Vsc2UKKwkJCWlmICh3cml0ZShmaWxlbm8o
c3Rkb3V0KSwgYnVmLCBuKSA8IDApIHsKKwkJCQlwZXJyb3IoIndyaXRlIik7CisJCQl9CisjZW5k
aWYKKwkJfQorCQlmcmVlKGJ1Zik7CisJfQorCisJaWYgKChldmVudHMgJiBTQ1RQX0VWRU5UX1dS
SVRFKSAmJiB3cml0ZVBlbmRpbmcgJiYgIWRvbmUpIHsKKwkJd3JpdGVQZW5kaW5nID0gMDsKKwkJ
cHJpbnRmKCJcbkhUVFAgcmVxdWVzdDpcbiVzXG4iLCByZXF1ZXN0KTsKKwkJcHJpbnRmKCJcbkhU
VFAgcmVzcG9uc2U6XG4iKTsKKworCQkvKiBzZW5kIEdFVCByZXF1ZXN0ICovCisJCWJ5dGVzU2Vu
dCA9IHVzcnNjdHBfc2VuZHYoc29jaywgcmVxdWVzdCwgc3RybGVuKHJlcXVlc3QpLCBOVUxMLCAw
LCBOVUxMLCAwLCBTQ1RQX1NFTkRWX05PSU5GTywgMCk7CisJCWlmIChieXRlc1NlbnQgPCAwKSB7
CisJCQlwZXJyb3IoInVzcnNjdHBfc2VuZHYiKTsKKwkJCXVzcnNjdHBfY2xvc2Uoc29jayk7CisJ
CX0gZWxzZSB7CisJCQlwcmludGYoIiV6ZCBieXRlcyBzZW50XG4iLCBieXRlc1NlbnQpOworCQl9
CisJfQorfQorCitpbnQKK21haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwlzdHJ1Y3Qg
c29ja2V0ICpzb2NrOworCXN0cnVjdCBzb2NrYWRkciAqYWRkcjsKKwlzb2NrbGVuX3QgYWRkcl9s
ZW47CisJc3RydWN0IHNvY2thZGRyX2luIGFkZHI0OworCXN0cnVjdCBzb2NrYWRkcl9pbjYgYWRk
cjY7CisJc3RydWN0IHNvY2thZGRyX2luIGJpbmQ0OworCXN0cnVjdCBzb2NrYWRkcl9pbjYgYmlu
ZDY7CisJc3RydWN0IHNjdHBfdWRwZW5jYXBzIGVuY2FwczsKKwlzdHJ1Y3Qgc2N0cF9ydG9pbmZv
IHJ0b2luZm87CisJc3RydWN0IHNjdHBfaW5pdG1zZyBpbml0bXNnOworCXVpbnQ4X3QgYWRkcmVz
c19mYW1pbHkgPSAwOworCisJaWYgKGFyZ2MgPCAzKSB7CisJCXByaW50ZigiVXNhZ2U6IGh0dHBf
Y2xpZW50X3VwY2FsbCByZW1vdGVfYWRkciByZW1vdGVfcG9ydCBbbG9jYWxfcG9ydF0gW2xvY2Fs
X2VuY2Fwc19wb3J0XSBbcmVtb3RlX2VuY2Fwc19wb3J0XSBbdXJpXVxuIik7CisJCXJldHVybihF
WElUX0ZBSUxVUkUpOworCX0KKworCW1lbXNldCgodm9pZCAqKSZhZGRyNCwgMCwgc2l6ZW9mKHN0
cnVjdCBzb2NrYWRkcl9pbikpOworCW1lbXNldCgodm9pZCAqKSZhZGRyNiwgMCwgc2l6ZW9mKHN0
cnVjdCBzb2NrYWRkcl9pbjYpKTsKKworCWlmIChpbmV0X3B0b24oQUZfSU5FVCwgYXJndlsxXSwg
JmFkZHI0LnNpbl9hZGRyKSA9PSAxKSB7CisJCWFkZHJlc3NfZmFtaWx5ID0gQUZfSU5FVDsKKwor
CQlhZGRyID0gKHN0cnVjdCBzb2NrYWRkciAqKSZhZGRyNDsKKwkJYWRkcl9sZW4gPSBzaXplb2Yo
YWRkcjQpOworI2lmZGVmIEhBVkVfU0lOX0xFTgorCQlhZGRyNC5zaW5fbGVuID0gc2l6ZW9mKHN0
cnVjdCBzb2NrYWRkcl9pbik7CisjZW5kaWYKKwkJYWRkcjQuc2luX2ZhbWlseSA9IEFGX0lORVQ7
CisJCWFkZHI0LnNpbl9wb3J0ID0gaHRvbnMoYXRvaShhcmd2WzJdKSk7CisJfSBlbHNlIGlmIChp
bmV0X3B0b24oQUZfSU5FVDYsIGFyZ3ZbMV0sICZhZGRyNi5zaW42X2FkZHIpID09IDEpIHsKKwkJ
YWRkcmVzc19mYW1pbHkgPSBBRl9JTkVUNjsKKworCQlhZGRyID0gKHN0cnVjdCBzb2NrYWRkciAq
KSZhZGRyNjsKKwkJYWRkcl9sZW4gPSBzaXplb2YoYWRkcjYpOworI2lmZGVmIEhBVkVfU0lONl9M
RU4KKwkJYWRkcjYuc2luNl9sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNik7CisjZW5k
aWYKKwkJYWRkcjYuc2luNl9mYW1pbHkgPSBBRl9JTkVUNjsKKwkJYWRkcjYuc2luNl9wb3J0ID0g
aHRvbnMoYXRvaShhcmd2WzJdKSk7CisJfSBlbHNlIHsKKwkJcHJpbnRmKCJVbnN1cHBvcnRlZCBk
ZXN0aW5hdGlvbiBhZGRyZXNzIC0gdXNlIElQdjQgb3IgSVB2NiBhZGRyZXNzXG4iKTsKKwkJcmVz
dWx0ID0gUkVUVkFMX0NBVENIQUxMOworCQlnb3RvIG91dDsKKwl9CisKKwlpZiAoYXJnYyA+IDQp
IHsKKwkJdXNyc2N0cF9pbml0KGF0b2koYXJndls0XSksIE5VTEwsIGRlYnVnX3ByaW50Zl9zdGFj
ayk7CisJfSBlbHNlIHsKKwkJdXNyc2N0cF9pbml0KDk4OTksIE5VTEwsIGRlYnVnX3ByaW50Zl9z
dGFjayk7CisJfQorCisjaWZkZWYgU0NUUF9ERUJVRworCXVzcnNjdHBfc3lzY3RsX3NldF9zY3Rw
X2RlYnVnX29uKFNDVFBfREVCVUdfQUxMKTsKKyNlbmRpZgorCisJdXNyc2N0cF9zeXNjdGxfc2V0
X3NjdHBfYmxhY2tob2xlKDIpOworCXVzcnNjdHBfc3lzY3RsX3NldF9zY3RwX25vX2NzdW1fb25f
bG9vcGJhY2soMCk7CisKKwlpZiAoKHNvY2sgPSB1c3JzY3RwX3NvY2tldChhZGRyZXNzX2ZhbWls
eSwgU09DS19TVFJFQU0sIElQUFJPVE9fU0NUUCwgTlVMTCwgTlVMTCwgMCwgTlVMTCkpID09IE5V
TEwpIHsKKwkJcGVycm9yKCJ1c3JzY3RwX3NvY2tldCIpOworCQlyZXN1bHQgPSBSRVRWQUxfQ0FU
Q0hBTEw7CisJCWdvdG8gb3V0OworCX0KKworCS8qIHVzcnNjdHBfc2V0X25vbl9ibG9ja2luZyhz
b2NrLCAxKTsgKi8KKworCXJ0b2luZm8uc3J0b19hc3NvY19pZCA9IDA7CisJcnRvaW5mby5zcnRv
X2luaXRpYWwgPSAxMDAwOworCXJ0b2luZm8uc3J0b19taW4gPSAxMDAwOworCXJ0b2luZm8uc3J0
b19tYXggPSA4MDAwOworCWlmICh1c3JzY3RwX3NldHNvY2tvcHQoc29jaywgSVBQUk9UT19TQ1RQ
LCBTQ1RQX1JUT0lORk8sIChjb25zdCB2b2lkICopJnJ0b2luZm8sIChzb2NrbGVuX3Qpc2l6ZW9m
KHN0cnVjdCBzY3RwX3J0b2luZm8pKSA8IDApIHsKKwkJcGVycm9yKCJzZXRzb2Nrb3B0Iik7CisJ
CXVzcnNjdHBfY2xvc2Uoc29jayk7CisJCXJlc3VsdCA9IFJFVFZBTF9DQVRDSEFMTDsKKwkJZ290
byBvdXQ7CisJfQorCWluaXRtc2cuc2luaXRfbnVtX29zdHJlYW1zID0gMTsKKwlpbml0bXNnLnNp
bml0X21heF9pbnN0cmVhbXMgPSAxOworCWluaXRtc2cuc2luaXRfbWF4X2F0dGVtcHRzID0gNTsK
Kwlpbml0bXNnLnNpbml0X21heF9pbml0X3RpbWVvID0gNDAwMDsKKwlpZiAodXNyc2N0cF9zZXRz
b2Nrb3B0KHNvY2ssIElQUFJPVE9fU0NUUCwgU0NUUF9JTklUTVNHLCAoY29uc3Qgdm9pZCAqKSZp
bml0bXNnLCAoc29ja2xlbl90KXNpemVvZihzdHJ1Y3Qgc2N0cF9pbml0bXNnKSkgPCAwKSB7CisJ
CXBlcnJvcigic2V0c29ja29wdCIpOworCQl1c3JzY3RwX2Nsb3NlKHNvY2spOworCQlyZXN1bHQg
PSBSRVRWQUxfQ0FUQ0hBTEw7CisJCWdvdG8gb3V0OworCX0KKworCWlmIChhcmdjID4gMykgewor
CisJCWlmIChhZGRyZXNzX2ZhbWlseSA9PSBBRl9JTkVUKSB7CisJCQltZW1zZXQoKHZvaWQgKikm
YmluZDQsIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKKyNpZmRlZiBIQVZFX1NJTl9M
RU4KKwkJCWJpbmQ0LnNpbl9sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNik7CisjZW5k
aWYKKwkJCWJpbmQ0LnNpbl9mYW1pbHkgPSBBRl9JTkVUOworCQkJYmluZDQuc2luX3BvcnQgPSBo
dG9ucyhhdG9pKGFyZ3ZbM10pKTsKKwkJCWJpbmQ0LnNpbl9hZGRyLnNfYWRkciA9IGh0b25sKElO
QUREUl9BTlkpOworCisJCQlpZiAodXNyc2N0cF9iaW5kKHNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIg
KikmYmluZDQsIHNpemVvZihiaW5kNCkpIDwgMCkgeworCQkJCXBlcnJvcigiYmluZCIpOworCQkJ
CXVzcnNjdHBfY2xvc2Uoc29jayk7CisJCQkJcmVzdWx0ID0gUkVUVkFMX0NBVENIQUxMOworCQkJ
CWdvdG8gb3V0OworCQkJfQorCQl9IGVsc2UgeworCQkJbWVtc2V0KCh2b2lkICopJmJpbmQ2LCAw
LCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNikpOworI2lmZGVmIEhBVkVfU0lONl9MRU4KKwkJ
CWJpbmQ2LnNpbjZfbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpOworI2VuZGlmCisJ
CQliaW5kNi5zaW42X2ZhbWlseSA9IEFGX0lORVQ2OworCQkJYmluZDYuc2luNl9wb3J0ID0gaHRv
bnMoYXRvaShhcmd2WzNdKSk7CisJCQliaW5kNi5zaW42X2FkZHIgPSBpbjZhZGRyX2FueTsKKwkJ
CWlmICh1c3JzY3RwX2JpbmQoc29jaywgKHN0cnVjdCBzb2NrYWRkciAqKSZiaW5kNiwgc2l6ZW9m
KGJpbmQ2KSkgPCAwKSB7CisJCQkJcGVycm9yKCJiaW5kIik7CisJCQkJdXNyc2N0cF9jbG9zZShz
b2NrKTsKKwkJCQlyZXN1bHQgPSBSRVRWQUxfQ0FUQ0hBTEw7CisJCQkJZ290byBvdXQ7CisJCQl9
CisJCX0KKwl9CisKKwlpZiAoYXJnYyA+IDUpIHsKKwkJbWVtc2V0KCZlbmNhcHMsIDAsIHNpemVv
ZihzdHJ1Y3Qgc2N0cF91ZHBlbmNhcHMpKTsKKwkJZW5jYXBzLnN1ZV9hZGRyZXNzLnNzX2ZhbWls
eSA9IGFkZHJlc3NfZmFtaWx5OworCQllbmNhcHMuc3VlX3BvcnQgPSBodG9ucyhhdG9pKGFyZ3Zb
NV0pKTsKKwkJaWYgKHVzcnNjdHBfc2V0c29ja29wdChzb2NrLCBJUFBST1RPX1NDVFAsIFNDVFBf
UkVNT1RFX1VEUF9FTkNBUFNfUE9SVCwgKGNvbnN0IHZvaWQgKikmZW5jYXBzLCAoc29ja2xlbl90
KXNpemVvZihzdHJ1Y3Qgc2N0cF91ZHBlbmNhcHMpKSA8IDApIHsKKwkJCXBlcnJvcigic2V0c29j
a29wdCIpOworCQkJdXNyc2N0cF9jbG9zZShzb2NrKTsKKwkJCXJlc3VsdCA9IFJFVFZBTF9DQVRD
SEFMTDsKKwkJCWdvdG8gb3V0OworCQl9CisJfQorCisJaWYgKGFyZ2MgPiA2KSB7CisjaWZkZWYg
X1dJTjMyCisJCWlmIChfc25wcmludGYocmVxdWVzdCwgc2l6ZW9mKHJlcXVlc3QpLCAiJXMgJXMg
JXMiLCByZXF1ZXN0X3ByZWZpeCwgYXJndls2XSwgcmVxdWVzdF9wb3N0Zml4KSA8IDApIHsKKyNl
bHNlCisJCWlmIChzbnByaW50ZihyZXF1ZXN0LCBzaXplb2YocmVxdWVzdCksICIlcyAlcyAlcyIs
IHJlcXVlc3RfcHJlZml4LCBhcmd2WzZdLCByZXF1ZXN0X3Bvc3RmaXgpIDwgMCkgeworI2VuZGlm
CisJCQlyZXF1ZXN0WzBdID0gJ1wwJzsKKwkJfQorCX0gZWxzZSB7CisjaWZkZWYgX1dJTjMyCisJ
CWlmIChfc25wcmludGYocmVxdWVzdCwgc2l6ZW9mKHJlcXVlc3QpLCAiJXMgJXMgJXMiLCByZXF1
ZXN0X3ByZWZpeCwgIi8iLCByZXF1ZXN0X3Bvc3RmaXgpIDwgMCkgeworI2Vsc2UKKwkJaWYgKHNu
cHJpbnRmKHJlcXVlc3QsIHNpemVvZihyZXF1ZXN0KSwgIiVzICVzICVzIiwgcmVxdWVzdF9wcmVm
aXgsICIvIiwgcmVxdWVzdF9wb3N0Zml4KSA8IDApIHsKKyNlbmRpZgorCQkJcmVxdWVzdFswXSA9
ICdcMCc7CisJCX0KKwl9CisKKwlwcmludGYoIlxuSFRUUCByZXF1ZXN0OlxuJXNcbiIsIHJlcXVl
c3QpOworCXByaW50ZigiXG5IVFRQIHJlc3BvbnNlOlxuIik7CisKKworCXVzcnNjdHBfc2V0X3Vw
Y2FsbChzb2NrLCBoYW5kbGVfdXBjYWxsLCBOVUxMKTsKKwl1c3JzY3RwX3NldF9ub25fYmxvY2tp
bmcoc29jaywgMSk7CisKKwlpZiAodXNyc2N0cF9jb25uZWN0KHNvY2ssIGFkZHIsIGFkZHJfbGVu
KSA8IDApIHsKKwkJaWYgKGVycm5vICE9IEVJTlBST0dSRVNTKSB7CisJCQlpZiAoZXJybm8gPT0g
RUNPTk5SRUZVU0VEKSB7CisJCQkJcmVzdWx0ID0gUkVUVkFMX0VDT05OUkVGVVNFRDsKKwkJCX0g
ZWxzZSBpZiAoZXJybm8gPT0gRVRJTUVET1VUKSB7CisJCQkJcmVzdWx0ID0gUkVUVkFMX1RJTUVP
VVQ7CisJCQl9IGVsc2UgeworCQkJCXJlc3VsdCA9IFJFVFZBTF9DQVRDSEFMTDsKKwkJCX0KKwkJ
CXBlcnJvcigidXNyc2N0cF9jb25uZWN0Iik7CisJCX0KKwl9CisKKwl3aGlsZSAoIWRvbmUpIHsK
KyNpZmRlZiBfV0lOMzIKKwkJU2xlZXAoMSoxMDAwKTsKKyNlbHNlCisJCXNsZWVwKDEpOworI2Vu
ZGlmCisJfQorb3V0OgorCXdoaWxlICh1c3JzY3RwX2ZpbmlzaCgpICE9IDApIHsKKyNpZmRlZiBf
V0lOMzIKKwkJU2xlZXAoMTAwMCk7CisjZWxzZQorCQlzbGVlcCgxKTsKKyNlbmRpZgorCX0KKwor
CXByaW50ZigiRmluaXNoZWQsIHJldHVybmluZyB3aXRoICVkXG4iLCByZXN1bHQpOworCXJldHVy
biAocmVzdWx0KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL21lc29uLmJ1aWxk
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvcHJvZ3JhbXMvbWVzb24uYnVpbGQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjYyOWE0NGJjZDI1
YzU2YTFkNWEzYjliM2RiZjQ2MGY0Y2Q0YmIxYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L3Byb2dyYW1zL21lc29uLmJ1aWxkCkBAIC0wLDAgKzEsMjggQEAKKyMgSGVscGVyIHNvdXJjZXMg
Zm9yIGFsbCBwcm9ncmFtcworcHJvZ3JhbXNfaGVscGVyX3NvdXJjZXMgPSBmaWxlcygncHJvZ3Jh
bXNfaGVscGVyLmMnKQorCisjIFByb2dyYW1zIGFuZCB0aGVpciBzb3VyY2VzCitwcm9ncmFtcyA9
IHsKKyAgICAnY2hhcmdlbl9zZXJ2ZXJfdXBjYWxsJzogZmlsZXMoJ2NoYXJnZW5fc2VydmVyX3Vw
Y2FsbC5jJyksCisgICAgJ2NsaWVudCc6IGZpbGVzKCdjbGllbnQuYycpLAorICAgICdzdF9jbGll
bnQnOiBmaWxlcygnc3RfY2xpZW50LmMnKSwKKyAgICAnY2xpZW50X3VwY2FsbCc6IGZpbGVzKCdj
bGllbnRfdXBjYWxsLmMnKSwKKyAgICAnZGF5dGltZV9zZXJ2ZXInOiBmaWxlcygnZGF5dGltZV9z
ZXJ2ZXIuYycpLAorICAgICdkYXl0aW1lX3NlcnZlcl91cGNhbGwnOiBmaWxlcygnZGF5dGltZV9z
ZXJ2ZXJfdXBjYWxsLmMnKSwKKyAgICAnZGlzY2FyZF9zZXJ2ZXInOiBmaWxlcygnZGlzY2FyZF9z
ZXJ2ZXIuYycpLAorICAgICdkaXNjYXJkX3NlcnZlcl91cGNhbGwnOiBmaWxlcygnZGlzY2FyZF9z
ZXJ2ZXJfdXBjYWxsLmMnKSwKKyAgICAnZWNob19zZXJ2ZXInOiBmaWxlcygnZWNob19zZXJ2ZXIu
YycpLAorICAgICdlY2hvX3NlcnZlcl91cGNhbGwnOiBmaWxlcygnZWNob19zZXJ2ZXJfdXBjYWxs
LmMnKSwKKyAgICAnZWtyX2NsaWVudCc6IGZpbGVzKCdla3JfY2xpZW50LmMnKSwKKyAgICAnZWty
X2xvb3AnOiBmaWxlcygnZWtyX2xvb3AuYycpLAorICAgICdla3JfbG9vcF91cGNhbGwnOiBmaWxl
cygnZWtyX2xvb3BfdXBjYWxsLmMnKSwKKyAgICAnZWtyX3BlZXInOiBmaWxlcygnZWtyX3BlZXIu
YycpLAorICAgICdla3Jfc2VydmVyJzogZmlsZXMoJ2Vrcl9zZXJ2ZXIuYycpLAorICAgICdodHRw
X2NsaWVudCc6IGZpbGVzKCdodHRwX2NsaWVudC5jJyksCisgICAgJ2h0dHBfY2xpZW50X3VwY2Fs
bCc6IGZpbGVzKCdodHRwX2NsaWVudF91cGNhbGwuYycpLAorICAgICdydGN3ZWInOiBmaWxlcygn
cnRjd2ViLmMnKSwKKyAgICAndGVzdF9saWJtZ210JzogZmlsZXMoJ3Rlc3RfbGlibWdtdC5jJyks
CisgICAgJ3Rlc3RfdGltZXInOiBmaWxlcygndGVzdF90aW1lci5jJyksCisgICAgJ3RzY3RwJzog
ZmlsZXMoJ3RzY3RwLmMnKSwKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvcHJv
Z3JhbXNfaGVscGVyLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9wcm9ncmFtc19oZWxwZXIuYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41NTBmNzUzODAyYThlOTUwMmE2NjdmNTQ2OWQ1ODlmNmUxODZmNDNiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvcHJvZ3JhbXNfaGVscGVyLmMKQEAgLTAsMCAr
MSw0NjAgQEAKKworI2lmZGVmIF9XSU4zMgorI2RlZmluZSBfQ1JUX1NFQ1VSRV9OT19XQVJOSU5H
UworI2VuZGlmCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2lu
Y2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHVzcnNjdHAuaD4KKworI2lmbmRlZiBfV0lOMzIK
KyNpbmNsdWRlIDxzeXMvdGltZS5oPgorI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorI2Vsc2UKKyNp
bmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvdGltZWIuaD4KKyNpbmNsdWRlIDxp
by5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJwcm9ncmFtc19oZWxwZXIuaCIKKworI2RlZmluZSBE
RUZBVUxUX1RBUkdFVCBzdGRvdXQ7CisKK3N0YXRpYyBGSUxFICpkZWJ1Z190YXJnZXQgPSBOVUxM
OworCisjaWZkZWYgX1dJTjMyCitzdGF0aWMgdm9pZAorZ2V0dGltZW9mZGF5KHN0cnVjdCB0aW1l
dmFsICp0diwgdm9pZCAqaWdub3JlKQoreworCUZJTEVUSU1FIGZpbGV0aW1lOworCVVMQVJHRV9J
TlRFR0VSIHVsYXJnZTsKKworCUdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lKCZmaWxldGltZSk7CisJ
dWxhcmdlLkxvd1BhcnQgPSBmaWxldGltZS5kd0xvd0RhdGVUaW1lOworCXVsYXJnZS5IaWdoUGFy
dCA9IGZpbGV0aW1lLmR3SGlnaERhdGVUaW1lOworCS8qIENoYW5nZSBiYXNlIGZyb20gSmFuIDEg
MTYwMSAwMDowMDowMCB0byBKYW4gMSAxOTcwIDAwOjAwOjAwICovCisjaWYgZGVmaW5lZChfX01J
TkdXMzJfXykKKwl1bGFyZ2UuUXVhZFBhcnQgLT0gMTE2NDQ0NzM2MDAwMDAwMDAwVUxMOworI2Vs
c2UKKwl1bGFyZ2UuUXVhZFBhcnQgLT0gMTE2NDQ0NzM2MDAwMDAwMDAwVUk2NDsKKyNlbmRpZgor
CS8qCisJICogdWxhcmdlLlF1YWRQYXJ0IGlzIG5vdyB0aGUgbnVtYmVyIG9mIDEwMC1uYW5vc2Vj
b25kIGludGVydmFscworCSAqIHNpbmNlIEphbiAxIDE5NzAgMDA6MDA6MDAuCisJICovCisjaWYg
ZGVmaW5lZChfX01JTkdXMzJfXykKKwl0di0+dHZfc2VjID0gKGxvbmcpKHVsYXJnZS5RdWFkUGFy
dCAvIDEwMDAwMDAwVUxMKTsKKwl0di0+dHZfdXNlYyA9IChsb25nKSgodWxhcmdlLlF1YWRQYXJ0
ICUgMTAwMDAwMDBVTEwpIC8gMTBVTEwpOworI2Vsc2UKKwl0di0+dHZfc2VjID0gKGxvbmcpKHVs
YXJnZS5RdWFkUGFydCAvIDEwMDAwMDAwVUk2NCk7CisJdHYtPnR2X3VzZWMgPSAobG9uZykoKHVs
YXJnZS5RdWFkUGFydCAlIDEwMDAwMDAwVUk2NCkgLyAxMFVJNjQpOworI2VuZGlmCit9CisjZW5k
aWYKKwordm9pZAorZGVidWdfc2V0X3RhcmdldChGSUxFICpmcCkgeworCWRlYnVnX3RhcmdldCA9
IGZwOworfQorCit2b2lkCitkZWJ1Z19wcmludGZfY2xlYW4oY29uc3QgY2hhciAqZm9ybWF0LCAu
Li4pIHsKKwljaGFyIGNoYXJidWZbMTAyNF07CisJdmFfbGlzdCBhcDsKKworCWlmIChkZWJ1Z190
YXJnZXQgPT0gTlVMTCkgeworCQlkZWJ1Z190YXJnZXQgPSBERUZBVUxUX1RBUkdFVDsKKwl9CisK
Kwl2YV9zdGFydChhcCwgZm9ybWF0KTsKKwlpZiAodnNucHJpbnRmKGNoYXJidWYsIDEwMjQsIGZv
cm1hdCwgYXApIDwgMCkgeworCQljaGFyYnVmWzBdID0gJ1wwJzsKKwl9CisJdmFfZW5kKGFwKTsK
KworCWZwcmludGYoZGVidWdfdGFyZ2V0LCAiJXMiLCBjaGFyYnVmKTsKKwlmZmx1c2goZGVidWdf
dGFyZ2V0KTsKK30KKwordm9pZAorZGVidWdfcHJpbnRmKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4u
KSB7CisJdmFfbGlzdCBhcDsKKwljaGFyIGNoYXJidWZbMTAyNF07CisJc3RhdGljIHN0cnVjdCB0
aW1ldmFsIHRpbWVfbWFpbjsKKwlzdHJ1Y3QgdGltZXZhbCB0aW1lX25vdzsKKwlzdHJ1Y3QgdGlt
ZXZhbCB0aW1lX2RlbHRhOworCisJaWYgKGRlYnVnX3RhcmdldCA9PSBOVUxMKSB7CisJCWRlYnVn
X3RhcmdldCA9IERFRkFVTFRfVEFSR0VUOworCX0KKworCWlmICh0aW1lX21haW4udHZfc2VjID09
IDAgICYmIHRpbWVfbWFpbi50dl91c2VjID09IDApIHsKKwkJZ2V0dGltZW9mZGF5KCZ0aW1lX21h
aW4sIE5VTEwpOworCX0KKworCWdldHRpbWVvZmRheSgmdGltZV9ub3csIE5VTEwpOworCXRpbWVy
c3ViKCZ0aW1lX25vdywgJnRpbWVfbWFpbiwgJnRpbWVfZGVsdGEpOworCisJdmFfc3RhcnQoYXAs
IGZvcm1hdCk7CisJaWYgKHZzbnByaW50ZihjaGFyYnVmLCAxMDI0LCBmb3JtYXQsIGFwKSA8IDAp
IHsKKwkJY2hhcmJ1ZlswXSA9ICdcMCc7CisJfQorCXZhX2VuZChhcCk7CisKKwlmcHJpbnRmKGRl
YnVnX3RhcmdldCwgIltQXVsldS4lMDN1XSAlcyIsICh1bnNpZ25lZCBpbnQpIHRpbWVfZGVsdGEu
dHZfc2VjLCAodW5zaWduZWQgaW50KSB0aW1lX2RlbHRhLnR2X3VzZWMgLyAxMDAwLCBjaGFyYnVm
KTsKKwlmZmx1c2goZGVidWdfdGFyZ2V0KTsKK30KKwordm9pZAorZGVidWdfcHJpbnRmX3N0YWNr
KGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQoreworCXZhX2xpc3QgYXA7CisJY2hhciBjaGFyYnVm
WzEwMjRdOworCXN0YXRpYyBzdHJ1Y3QgdGltZXZhbCB0aW1lX21haW47CisJc3RydWN0IHRpbWV2
YWwgdGltZV9ub3c7CisJc3RydWN0IHRpbWV2YWwgdGltZV9kZWx0YTsKKworCWlmIChkZWJ1Z190
YXJnZXQgPT0gTlVMTCkgeworCQlkZWJ1Z190YXJnZXQgPSBERUZBVUxUX1RBUkdFVDsKKwl9CisK
KwlpZiAodGltZV9tYWluLnR2X3NlYyA9PSAwICAmJiB0aW1lX21haW4udHZfdXNlYyA9PSAwKSB7
CisJCWdldHRpbWVvZmRheSgmdGltZV9tYWluLCBOVUxMKTsKKwl9CisKKwlnZXR0aW1lb2ZkYXko
JnRpbWVfbm93LCBOVUxMKTsKKwl0aW1lcnN1YigmdGltZV9ub3csICZ0aW1lX21haW4sICZ0aW1l
X2RlbHRhKTsKKworCXZhX3N0YXJ0KGFwLCBmb3JtYXQpOworCWlmICh2c25wcmludGYoY2hhcmJ1
ZiwgMTAyNCwgZm9ybWF0LCBhcCkgPCAwKSB7CisJCWNoYXJidWZbMF0gPSAnXDAnOworCX0KKwl2
YV9lbmQoYXApOworCisJZnByaW50ZihkZWJ1Z190YXJnZXQsICJbU11bJXUuJTAzdV0gJXMiLCAo
dW5zaWduZWQgaW50KSB0aW1lX2RlbHRhLnR2X3NlYywgKHVuc2lnbmVkIGludCkgdGltZV9kZWx0
YS50dl91c2VjIC8gMTAwMCwgY2hhcmJ1Zik7CisJZmZsdXNoKGRlYnVnX3RhcmdldCk7Cit9CisK
K3N0YXRpYyB2b2lkCitoYW5kbGVfYXNzb2NpYXRpb25fY2hhbmdlX2V2ZW50KHN0cnVjdCBzY3Rw
X2Fzc29jX2NoYW5nZSAqc2FjKQoreworCXVuc2lnbmVkIGludCBpLCBuOworCisJaWYgKGRlYnVn
X3RhcmdldCA9PSBOVUxMKSB7CisJCWRlYnVnX3RhcmdldCA9IERFRkFVTFRfVEFSR0VUOworCX0K
KworCWZwcmludGYoZGVidWdfdGFyZ2V0LCAiQXNzb2NpYXRpb24gY2hhbmdlICIpOworCXN3aXRj
aCAoc2FjLT5zYWNfc3RhdGUpIHsKKwljYXNlIFNDVFBfQ09NTV9VUDoKKwkJZnByaW50ZihkZWJ1
Z190YXJnZXQsICJTQ1RQX0NPTU1fVVAiKTsKKwkJYnJlYWs7CisJY2FzZSBTQ1RQX0NPTU1fTE9T
VDoKKwkJZnByaW50ZihkZWJ1Z190YXJnZXQsICJTQ1RQX0NPTU1fTE9TVCIpOworCQlicmVhazsK
KwljYXNlIFNDVFBfUkVTVEFSVDoKKwkJZnByaW50ZihkZWJ1Z190YXJnZXQsICJTQ1RQX1JFU1RB
UlQiKTsKKwkJYnJlYWs7CisJY2FzZSBTQ1RQX1NIVVRET1dOX0NPTVA6CisJCWZwcmludGYoZGVi
dWdfdGFyZ2V0LCAiU0NUUF9TSFVURE9XTl9DT01QIik7CisJCWJyZWFrOworCWNhc2UgU0NUUF9D
QU5UX1NUUl9BU1NPQzoKKwkJZnByaW50ZihkZWJ1Z190YXJnZXQsICJTQ1RQX0NBTlRfU1RSX0FT
U09DIik7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWZwcmludGYoZGVidWdfdGFyZ2V0LCAiVU5L
Tk9XTiIpOworCQlicmVhazsKKwl9CisJZnByaW50ZihkZWJ1Z190YXJnZXQsICIsIHN0cmVhbXMg
KGluL291dCkgPSAoJXUvJXUpIiwKKwkgICAgICAgc2FjLT5zYWNfaW5ib3VuZF9zdHJlYW1zLCBz
YWMtPnNhY19vdXRib3VuZF9zdHJlYW1zKTsKKwluID0gc2FjLT5zYWNfbGVuZ3RoIC0gc2l6ZW9m
KHN0cnVjdCBzY3RwX2Fzc29jX2NoYW5nZSk7CisJaWYgKCgoc2FjLT5zYWNfc3RhdGUgPT0gU0NU
UF9DT01NX1VQKSB8fAorCSAgICAgKHNhYy0+c2FjX3N0YXRlID09IFNDVFBfUkVTVEFSVCkpICYm
IChuID4gMCkpIHsKKwkJZnByaW50ZihkZWJ1Z190YXJnZXQsICIsIHN1cHBvcnRzIik7CisJCWZv
ciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKwkJCXN3aXRjaCAoc2FjLT5zYWNfaW5mb1tpXSkgewor
CQkJY2FzZSBTQ1RQX0FTU09DX1NVUFBPUlRTX1BSOgorCQkJCWZwcmludGYoZGVidWdfdGFyZ2V0
LCAiIFBSIik7CisJCQkJYnJlYWs7CisJCQljYXNlIFNDVFBfQVNTT0NfU1VQUE9SVFNfQVVUSDoK
KwkJCQlmcHJpbnRmKGRlYnVnX3RhcmdldCwgIiBBVVRIIik7CisJCQkJYnJlYWs7CisJCQljYXNl
IFNDVFBfQVNTT0NfU1VQUE9SVFNfQVNDT05GOgorCQkJCWZwcmludGYoZGVidWdfdGFyZ2V0LCAi
IEFTQ09ORiIpOworCQkJCWJyZWFrOworCQkJY2FzZSBTQ1RQX0FTU09DX1NVUFBPUlRTX01VTFRJ
QlVGOgorCQkJCWZwcmludGYoZGVidWdfdGFyZ2V0LCAiIE1VTFRJQlVGIik7CisJCQkJYnJlYWs7
CisJCQljYXNlIFNDVFBfQVNTT0NfU1VQUE9SVFNfUkVfQ09ORklHOgorCQkJCWZwcmludGYoZGVi
dWdfdGFyZ2V0LCAiIFJFLUNPTkZJRyIpOworCQkJCWJyZWFrOworCQkJY2FzZSBTQ1RQX0FTU09D
X1NVUFBPUlRTX0lOVEVSTEVBVklORzoKKwkJCQlmcHJpbnRmKGRlYnVnX3RhcmdldCwgIiBJTlRF
UkxFQVZJTkciKTsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZnByaW50ZihkZWJ1Z190
YXJnZXQsICIgVU5LTk9XTigweCUwMngpIiwgc2FjLT5zYWNfaW5mb1tpXSk7CisJCQkJYnJlYWs7
CisJCQl9CisJCX0KKwl9IGVsc2UgaWYgKCgoc2FjLT5zYWNfc3RhdGUgPT0gU0NUUF9DT01NX0xP
U1QpIHx8CisJICAgICAgICAgICAgKHNhYy0+c2FjX3N0YXRlID09IFNDVFBfQ0FOVF9TVFJfQVNT
T0MpKSAmJiAobiA+IDApKSB7CisJCWZwcmludGYoZGVidWdfdGFyZ2V0LCAiLCBBQk9SVCA9Iik7
CisJCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKwkJCWZwcmludGYoZGVidWdfdGFyZ2V0LCAi
IDB4JTAyeCIsIHNhYy0+c2FjX2luZm9baV0pOworCQl9CisJfQorCWZwcmludGYoZGVidWdfdGFy
Z2V0LCAiLlxuIik7CisJcmV0dXJuOworfQorCitzdGF0aWMgdm9pZAoraGFuZGxlX3BlZXJfYWRk
cmVzc19jaGFuZ2VfZXZlbnQoc3RydWN0IHNjdHBfcGFkZHJfY2hhbmdlICpzcGMpCit7CisJY2hh
ciBhZGRyX2J1ZltJTkVUNl9BRERSU1RSTEVOXTsKKwljb25zdCBjaGFyICphZGRyOworCXN0cnVj
dCBzb2NrYWRkcl9pbiAqc2luOworCXN0cnVjdCBzb2NrYWRkcl9pbjYgKnNpbjY7CisJc3RydWN0
IHNvY2thZGRyX2Nvbm4gKnNjb25uOworCisJaWYgKGRlYnVnX3RhcmdldCA9PSBOVUxMKSB7CisJ
CWRlYnVnX3RhcmdldCA9IERFRkFVTFRfVEFSR0VUOworCX0KKworCXN3aXRjaCAoc3BjLT5zcGNf
YWFkZHIuc3NfZmFtaWx5KSB7CisJY2FzZSBBRl9JTkVUOgorCQlzaW4gPSAoc3RydWN0IHNvY2th
ZGRyX2luICopJnNwYy0+c3BjX2FhZGRyOworCQlhZGRyID0gaW5ldF9udG9wKEFGX0lORVQsICZz
aW4tPnNpbl9hZGRyLCBhZGRyX2J1ZiwgSU5FVF9BRERSU1RSTEVOKTsKKwkJYnJlYWs7CisJY2Fz
ZSBBRl9JTkVUNjoKKwkJc2luNiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopJnNwYy0+c3BjX2Fh
ZGRyOworCQlhZGRyID0gaW5ldF9udG9wKEFGX0lORVQ2LCAmc2luNi0+c2luNl9hZGRyLCBhZGRy
X2J1ZiwgSU5FVDZfQUREUlNUUkxFTik7CisJCWJyZWFrOworCWNhc2UgQUZfQ09OTjoKKwkJc2Nv
bm4gPSAoc3RydWN0IHNvY2thZGRyX2Nvbm4gKikmc3BjLT5zcGNfYWFkZHI7CisjaWZkZWYgX1dJ
TjMyCisJCWlmIChfc25wcmludGYoYWRkcl9idWYsIElORVQ2X0FERFJTVFJMRU4sICIlcCIsIHNj
b25uLT5zY29ubl9hZGRyKSA8IDApIHsKKyNlbHNlCisJCWlmIChzbnByaW50ZihhZGRyX2J1Ziwg
SU5FVDZfQUREUlNUUkxFTiwgIiVwIiwgc2Nvbm4tPnNjb25uX2FkZHIpIDwgMCkgeworI2VuZGlm
CisJCQlhZGRyX2J1ZlswXSA9ICdcMCc7CisJCX0KKwkJYWRkciA9IGFkZHJfYnVmOworCQlicmVh
azsKKwlkZWZhdWx0OgorI2lmZGVmIF9XSU4zMgorCQlpZiAoX3NucHJpbnRmKGFkZHJfYnVmLCBJ
TkVUNl9BRERSU1RSTEVOLCAiVW5rbm93biBmYW1pbHkgJWQiLCBzcGMtPnNwY19hYWRkci5zc19m
YW1pbHkpIDwgMCkgeworI2Vsc2UKKwkJaWYgKHNucHJpbnRmKGFkZHJfYnVmLCBJTkVUNl9BRERS
U1RSTEVOLCAiVW5rbm93biBmYW1pbHkgJWQiLCBzcGMtPnNwY19hYWRkci5zc19mYW1pbHkpIDwg
MCkgeworI2VuZGlmCisJCQlhZGRyX2J1ZlswXSA9ICdcMCc7CisJCX0KKwkJYWRkciA9IGFkZHJf
YnVmOworCQlicmVhazsKKwl9CisJZnByaW50ZihkZWJ1Z190YXJnZXQsICJQZWVyIGFkZHJlc3Mg
JXMgaXMgbm93ICIsIGFkZHIpOworCXN3aXRjaCAoc3BjLT5zcGNfc3RhdGUpIHsKKwljYXNlIFND
VFBfQUREUl9BVkFJTEFCTEU6CisJCWZwcmludGYoZGVidWdfdGFyZ2V0LCAiU0NUUF9BRERSX0FW
QUlMQUJMRSIpOworCQlicmVhazsKKwljYXNlIFNDVFBfQUREUl9VTlJFQUNIQUJMRToKKwkJZnBy
aW50ZihkZWJ1Z190YXJnZXQsICJTQ1RQX0FERFJfVU5SRUFDSEFCTEUiKTsKKwkJYnJlYWs7CisJ
Y2FzZSBTQ1RQX0FERFJfUkVNT1ZFRDoKKwkJZnByaW50ZihkZWJ1Z190YXJnZXQsICJTQ1RQX0FE
RFJfUkVNT1ZFRCIpOworCQlicmVhazsKKwljYXNlIFNDVFBfQUREUl9BRERFRDoKKwkJZnByaW50
ZihkZWJ1Z190YXJnZXQsICJTQ1RQX0FERFJfQURERUQiKTsKKwkJYnJlYWs7CisJY2FzZSBTQ1RQ
X0FERFJfTUFERV9QUklNOgorCQlmcHJpbnRmKGRlYnVnX3RhcmdldCwgIlNDVFBfQUREUl9NQURF
X1BSSU0iKTsKKwkJYnJlYWs7CisJY2FzZSBTQ1RQX0FERFJfQ09ORklSTUVEOgorCQlmcHJpbnRm
KGRlYnVnX3RhcmdldCwgIlNDVFBfQUREUl9DT05GSVJNRUQiKTsKKwkJYnJlYWs7CisJZGVmYXVs
dDoKKwkJZnByaW50ZihkZWJ1Z190YXJnZXQsICJVTktOT1dOIik7CisJCWJyZWFrOworCX0KKwlm
cHJpbnRmKGRlYnVnX3RhcmdldCwgIiAoZXJyb3IgPSAweCUwOHgpLlxuIiwgc3BjLT5zcGNfZXJy
b3IpOworCXJldHVybjsKK30KKworc3RhdGljIHZvaWQKK2hhbmRsZV9zZW5kX2ZhaWxlZF9ldmVu
dChzdHJ1Y3Qgc2N0cF9zZW5kX2ZhaWxlZF9ldmVudCAqc3NmZSkKK3sKKwlzaXplX3QgaSwgbjsK
KworCWlmIChkZWJ1Z190YXJnZXQgPT0gTlVMTCkgeworCQlkZWJ1Z190YXJnZXQgPSBERUZBVUxU
X1RBUkdFVDsKKwl9CisKKwlpZiAoc3NmZS0+c3NmZV9mbGFncyAmIFNDVFBfREFUQV9VTlNFTlQp
IHsKKwkJZnByaW50ZihkZWJ1Z190YXJnZXQsICJVbnNlbnQgIik7CisJfQorCWlmIChzc2ZlLT5z
c2ZlX2ZsYWdzICYgU0NUUF9EQVRBX1NFTlQpIHsKKwkJZnByaW50ZihkZWJ1Z190YXJnZXQsICJT
ZW50ICIpOworCX0KKwlpZiAoc3NmZS0+c3NmZV9mbGFncyAmIH4oU0NUUF9EQVRBX1NFTlQgfCBT
Q1RQX0RBVEFfVU5TRU5UKSkgeworCQlmcHJpbnRmKGRlYnVnX3RhcmdldCwgIihmbGFncyA9ICV4
KSAiLCBzc2ZlLT5zc2ZlX2ZsYWdzKTsKKwl9CisJZnByaW50ZihkZWJ1Z190YXJnZXQsICJtZXNz
YWdlIHdpdGggUFBJRCA9ICV1LCBTSUQgPSAldSwgZmxhZ3M6IDB4JTA0eCBkdWUgdG8gZXJyb3Ig
PSAweCUwOHgiLAorCSAgICAgICBudG9obChzc2ZlLT5zc2ZlX2luZm8uc25kX3BwaWQpLCBzc2Zl
LT5zc2ZlX2luZm8uc25kX3NpZCwKKwkgICAgICAgc3NmZS0+c3NmZV9pbmZvLnNuZF9mbGFncywg
c3NmZS0+c3NmZV9lcnJvcik7CisJbiA9IHNzZmUtPnNzZmVfbGVuZ3RoIC0gc2l6ZW9mKHN0cnVj
dCBzY3RwX3NlbmRfZmFpbGVkX2V2ZW50KTsKKwlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisJ
CWZwcmludGYoZGVidWdfdGFyZ2V0LCAiIDB4JTAyeCIsIHNzZmUtPnNzZmVfZGF0YVtpXSk7CisJ
fQorCWZwcmludGYoZGVidWdfdGFyZ2V0LCAiLlxuIik7CisJcmV0dXJuOworfQorCitzdGF0aWMg
dm9pZAoraGFuZGxlX2FkYXB0YXRpb25faW5kaWNhdGlvbihzdHJ1Y3Qgc2N0cF9hZGFwdGF0aW9u
X2V2ZW50ICpzYWkpCit7CisJaWYgKGRlYnVnX3RhcmdldCA9PSBOVUxMKSB7CisJCWRlYnVnX3Rh
cmdldCA9IERFRkFVTFRfVEFSR0VUOworCX0KKworCWZwcmludGYoZGVidWdfdGFyZ2V0LCAiQWRh
cHRhdGlvbiBpbmRpY2F0aW9uOiAleC5cbiIsIHNhaS0+IHNhaV9hZGFwdGF0aW9uX2luZCk7CisJ
cmV0dXJuOworfQorCitzdGF0aWMgdm9pZAoraGFuZGxlX3NodXRkb3duX2V2ZW50KHN0cnVjdCBz
Y3RwX3NodXRkb3duX2V2ZW50ICpzc2UpCit7CisJaWYgKGRlYnVnX3RhcmdldCA9PSBOVUxMKSB7
CisJCWRlYnVnX3RhcmdldCA9IERFRkFVTFRfVEFSR0VUOworCX0KKworCWZwcmludGYoZGVidWdf
dGFyZ2V0LCAiU2h1dGRvd24gZXZlbnQuXG4iKTsKKwkvKiBYWFg6IG5vdGlmeSBhbGwgY2hhbm5l
bHMuICovCisJcmV0dXJuOworfQorCitzdGF0aWMgdm9pZAoraGFuZGxlX3N0cmVhbV9yZXNldF9l
dmVudChzdHJ1Y3Qgc2N0cF9zdHJlYW1fcmVzZXRfZXZlbnQgKnN0cnJzdCkKK3sKKwl1aW50MzJf
dCBuLCBpOworCisJaWYgKGRlYnVnX3RhcmdldCA9PSBOVUxMKSB7CisJCWRlYnVnX3RhcmdldCA9
IERFRkFVTFRfVEFSR0VUOworCX0KKworCW4gPSAoc3RycnN0LT5zdHJyZXNldF9sZW5ndGggLSBz
aXplb2Yoc3RydWN0IHNjdHBfc3RyZWFtX3Jlc2V0X2V2ZW50KSkgLyBzaXplb2YodWludDE2X3Qp
OworCWZwcmludGYoZGVidWdfdGFyZ2V0LCAiU3RyZWFtIHJlc2V0IGV2ZW50OiBmbGFncyA9ICV4
LCAiLCBzdHJyc3QtPnN0cnJlc2V0X2ZsYWdzKTsKKwlpZiAoc3RycnN0LT5zdHJyZXNldF9mbGFn
cyAmIFNDVFBfU1RSRUFNX1JFU0VUX0lOQ09NSU5HX1NTTikgeworCQlpZiAoc3RycnN0LT5zdHJy
ZXNldF9mbGFncyAmIFNDVFBfU1RSRUFNX1JFU0VUX09VVEdPSU5HX1NTTikgeworCQkJZnByaW50
ZihkZWJ1Z190YXJnZXQsICJpbmNvbWluZy8iKTsKKwkJfQorCQlmcHJpbnRmKGRlYnVnX3Rhcmdl
dCwgImluY29taW5nICIpOworCX0KKwlpZiAoc3RycnN0LT5zdHJyZXNldF9mbGFncyAmIFNDVFBf
U1RSRUFNX1JFU0VUX09VVEdPSU5HX1NTTikgeworCQlmcHJpbnRmKGRlYnVnX3RhcmdldCwgIm91
dGdvaW5nICIpOworCX0KKwlmcHJpbnRmKGRlYnVnX3RhcmdldCwgInN0cmVhbSBpZHMgPSAiKTsK
Kwlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisJCWlmIChpID4gMCkgeworCQkJZnByaW50Zihk
ZWJ1Z190YXJnZXQsICIsICIpOworCQl9CisJCWZwcmludGYoZGVidWdfdGFyZ2V0LCAiJWQiLCBz
dHJyc3QtPnN0cnJlc2V0X3N0cmVhbV9saXN0W2ldKTsKKwl9CisJZnByaW50ZihkZWJ1Z190YXJn
ZXQsICIuXG4iKTsKKwlyZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkCitoYW5kbGVfc3RyZWFtX2No
YW5nZV9ldmVudChzdHJ1Y3Qgc2N0cF9zdHJlYW1fY2hhbmdlX2V2ZW50ICpzdHJjaGcpCit7CisJ
aWYgKGRlYnVnX3RhcmdldCA9PSBOVUxMKSB7CisJCWRlYnVnX3RhcmdldCA9IERFRkFVTFRfVEFS
R0VUOworCX0KKworCWZwcmludGYoZGVidWdfdGFyZ2V0LCAiU3RyZWFtIGNoYW5nZSBldmVudDog
c3RyZWFtcyAoaW4vb3V0KSA9ICgldS8ldSksIGZsYWdzID0gJXguXG4iLAorCSAgICAgICBzdHJj
aGctPnN0cmNoYW5nZV9pbnN0cm1zLCBzdHJjaGctPnN0cmNoYW5nZV9vdXRzdHJtcywgc3RyY2hn
LT5zdHJjaGFuZ2VfZmxhZ3MpOworCXJldHVybjsKK30KKworc3RhdGljIHZvaWQKK2hhbmRsZV9y
ZW1vdGVfZXJyb3JfZXZlbnQoc3RydWN0IHNjdHBfcmVtb3RlX2Vycm9yICpzcmUpCit7CisJc2l6
ZV90IGksIG47CisKKwlpZiAoZGVidWdfdGFyZ2V0ID09IE5VTEwpIHsKKwkJZGVidWdfdGFyZ2V0
ID0gREVGQVVMVF9UQVJHRVQ7CisJfQorCisJbiA9IHNyZS0+c3JlX2xlbmd0aCAtIHNpemVvZihz
dHJ1Y3Qgc2N0cF9yZW1vdGVfZXJyb3IpOworCWZwcmludGYoZGVidWdfdGFyZ2V0LCAiUmVtb3Rl
IEVycm9yIChlcnJvciA9IDB4JTA0eCk6ICIsIHNyZS0+c3JlX2Vycm9yKTsKKwlmb3IgKGkgPSAw
OyBpIDwgbjsgaSsrKSB7CisJCWZwcmludGYoZGVidWdfdGFyZ2V0LCAiIDB4JTAyeCIsIHNyZS0+
IHNyZV9kYXRhW2ldKTsKKwl9CisJZnByaW50ZihkZWJ1Z190YXJnZXQsICIuXG4iKTsKKwlyZXR1
cm47Cit9CisKK3ZvaWQKK2hhbmRsZV9ub3RpZmljYXRpb24odW5pb24gc2N0cF9ub3RpZmljYXRp
b24gKm5vdGlmLCBzaXplX3QgbikKK3sKKwlpZiAobm90aWYtPnNuX2hlYWRlci5zbl9sZW5ndGgg
IT0gKHVpbnQzMl90KW4pIHsKKwkJcmV0dXJuOworCX0KKworCWlmIChkZWJ1Z190YXJnZXQgPT0g
TlVMTCkgeworCQlkZWJ1Z190YXJnZXQgPSBERUZBVUxUX1RBUkdFVDsKKwl9CisKKwlmcHJpbnRm
KGRlYnVnX3RhcmdldCwgImhhbmRsZV9ub3RpZmljYXRpb24gOiAiKTsKKworCXN3aXRjaCAobm90
aWYtPnNuX2hlYWRlci5zbl90eXBlKSB7CisJY2FzZSBTQ1RQX0FTU09DX0NIQU5HRToKKwkJZnBy
aW50ZihkZWJ1Z190YXJnZXQsICJTQ1RQX0FTU09DX0NIQU5HRVxuIik7CisJCWhhbmRsZV9hc3Nv
Y2lhdGlvbl9jaGFuZ2VfZXZlbnQoJihub3RpZi0+c25fYXNzb2NfY2hhbmdlKSk7CisJCWJyZWFr
OworCWNhc2UgU0NUUF9QRUVSX0FERFJfQ0hBTkdFOgorCQlmcHJpbnRmKGRlYnVnX3RhcmdldCwg
IlNDVFBfUEVFUl9BRERSX0NIQU5HRVxuIik7CisJCWhhbmRsZV9wZWVyX2FkZHJlc3NfY2hhbmdl
X2V2ZW50KCYobm90aWYtPnNuX3BhZGRyX2NoYW5nZSkpOworCQlicmVhazsKKwljYXNlIFNDVFBf
UkVNT1RFX0VSUk9SOgorCQlmcHJpbnRmKGRlYnVnX3RhcmdldCwgIlNDVFBfUkVNT1RFX0VSUk9S
XG4iKTsKKwkJaGFuZGxlX3JlbW90ZV9lcnJvcl9ldmVudCgmKG5vdGlmLT5zbl9yZW1vdGVfZXJy
b3IpKTsKKwkJYnJlYWs7CisJY2FzZSBTQ1RQX1NIVVRET1dOX0VWRU5UOgorCQlmcHJpbnRmKGRl
YnVnX3RhcmdldCwgIlNDVFBfU0hVVERPV05fRVZFTlRcbiIpOworCQloYW5kbGVfc2h1dGRvd25f
ZXZlbnQoJihub3RpZi0+c25fc2h1dGRvd25fZXZlbnQpKTsKKwkJYnJlYWs7CisJY2FzZSBTQ1RQ
X0FEQVBUQVRJT05fSU5ESUNBVElPTjoKKwkJZnByaW50ZihkZWJ1Z190YXJnZXQsICJTQ1RQX0FE
QVBUQVRJT05fSU5ESUNBVElPTlxuIik7CisJCWhhbmRsZV9hZGFwdGF0aW9uX2luZGljYXRpb24o
Jihub3RpZi0+c25fYWRhcHRhdGlvbl9ldmVudCkpOworCQlicmVhazsKKwljYXNlIFNDVFBfUEFS
VElBTF9ERUxJVkVSWV9FVkVOVDoKKwkJZnByaW50ZihkZWJ1Z190YXJnZXQsICJTQ1RQX1BBUlRJ
QUxfREVMSVZFUllfRVZFTlRcbiIpOworCQlicmVhazsKKwljYXNlIFNDVFBfQVVUSEVOVElDQVRJ
T05fRVZFTlQ6CisJCWZwcmludGYoZGVidWdfdGFyZ2V0LCAiU0NUUF9BVVRIRU5USUNBVElPTl9F
VkVOVFxuIik7CisJCWJyZWFrOworCWNhc2UgU0NUUF9TRU5ERVJfRFJZX0VWRU5UOgorCQlmcHJp
bnRmKGRlYnVnX3RhcmdldCwgIlNDVFBfU0VOREVSX0RSWV9FVkVOVFxuIik7CisJCWJyZWFrOwor
CWNhc2UgU0NUUF9OT1RJRklDQVRJT05TX1NUT1BQRURfRVZFTlQ6CisJCWZwcmludGYoZGVidWdf
dGFyZ2V0LCAiU0NUUF9OT1RJRklDQVRJT05TX1NUT1BQRURfRVZFTlRcbiIpOworCQlicmVhazsK
KwljYXNlIFNDVFBfU0VORF9GQUlMRURfRVZFTlQ6CisJCWZwcmludGYoZGVidWdfdGFyZ2V0LCAi
U0NUUF9TRU5EX0ZBSUxFRF9FVkVOVFxuIik7CisJCWhhbmRsZV9zZW5kX2ZhaWxlZF9ldmVudCgm
KG5vdGlmLT5zbl9zZW5kX2ZhaWxlZF9ldmVudCkpOworCQlicmVhazsKKwljYXNlIFNDVFBfU1RS
RUFNX1JFU0VUX0VWRU5UOgorCQlmcHJpbnRmKGRlYnVnX3RhcmdldCwgIlNDVFBfU1RSRUFNX1JF
U0VUX0VWRU5UXG4iKTsKKwkJaGFuZGxlX3N0cmVhbV9yZXNldF9ldmVudCgmKG5vdGlmLT5zbl9z
dHJyZXNldF9ldmVudCkpOworCQlicmVhazsKKwljYXNlIFNDVFBfQVNTT0NfUkVTRVRfRVZFTlQ6
CisJCWZwcmludGYoZGVidWdfdGFyZ2V0LCAiU0NUUF9BU1NPQ19SRVNFVF9FVkVOVFxuIik7CisJ
CWJyZWFrOworCWNhc2UgU0NUUF9TVFJFQU1fQ0hBTkdFX0VWRU5UOgorCQlmcHJpbnRmKGRlYnVn
X3RhcmdldCwgIlNDVFBfU1RSRUFNX0NIQU5HRV9FVkVOVFxuIik7CisJCWhhbmRsZV9zdHJlYW1f
Y2hhbmdlX2V2ZW50KCYobm90aWYtPnNuX3N0cmNoYW5nZV9ldmVudCkpOworCQlicmVhazsKKwlk
ZWZhdWx0OgorCQlicmVhazsKKwl9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9w
cm9ncmFtc19oZWxwZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL3Byb2dyYW1zX2hlbHBlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlODBkNzVlNGIxOGZhOGI0MzI4YWRhZjRlOWM5YzcyOTM5NmZiNDQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9wcm9ncmFtc19oZWxwZXIuaApAQCAtMCww
ICsxLDg3IEBACisvKi0KKyAqIENvcHlyaWdodCAoYykgMjAxOSBGZWxpeCBXZWlucmFuaworICoK
KyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAor
ICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUK
KyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
CisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBfX1BST0dSQU1TX0hFTFBFUl9I
X18KKyNkZWZpbmUgX19QUk9HUkFNU19IRUxQRVJfSF9fCisKKyNpZm5kZWYgX1dJTjMyCisjZGVm
aW5lIFNDVFBfUEFDS0VEIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpCisjZWxzZQorI3ByYWdtYSBw
YWNrIChwdXNoLCAxKQorI2RlZmluZSBTQ1RQX1BBQ0tFRAorI2VuZGlmCisKK3N0cnVjdCBzY3Rw
X2NodW5rX2hlYWRlciB7CisJdWludDhfdCBjaHVua190eXBlOwkvKiBjaHVuayB0eXBlICovCisJ
dWludDhfdCBjaHVua19mbGFnczsJLyogY2h1bmsgZmxhZ3MgKi8KKwl1aW50MTZfdCBjaHVua19s
ZW5ndGg7CS8qIGNodW5rIGxlbmd0aCAqLworCS8qIG9wdGlvbmFsIHBhcmFtcyBmb2xsb3cgKi8K
K30gU0NUUF9QQUNLRUQ7CisKK3N0cnVjdCBzY3RwX2luaXRfY2h1bmsgeworCXN0cnVjdCBzY3Rw
X2NodW5rX2hlYWRlciBjaDsKKwl1aW50MzJfdCBpbml0aWF0ZV90YWc7CS8qIGluaXRpYXRlIHRh
ZyAqLworCXVpbnQzMl90IGFfcnduZDsJLyogYV9yd25kICovCisJdWludDE2X3QgbnVtX291dGJv
dW5kX3N0cmVhbXM7CS8qIE9TICovCisJdWludDE2X3QgbnVtX2luYm91bmRfc3RyZWFtczsJLyog
TUlTICovCisJdWludDMyX3QgaW5pdGlhbF90c247CS8qIEktVFNOICovCisJLyogb3B0aW9uYWwg
cGFyYW0ncyBmb2xsb3cgKi8KK30gU0NUUF9QQUNLRUQ7CisKKyNpZmRlZiBfV0lOMzIKKyNwcmFn
bWEgcGFjayhwb3ApCisjZW5kaWYKKworI3VuZGVmIFNDVFBfUEFDS0VECisKK3ZvaWQKK2hhbmRs
ZV9ub3RpZmljYXRpb24odW5pb24gc2N0cF9ub3RpZmljYXRpb24gKm5vdGlmLCBzaXplX3Qgbik7
CisjaWZuZGVmIHRpbWVyc3ViCisjZGVmaW5lIHRpbWVyc3ViKHR2cCwgdXZwLCB2dnApICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJZG8geyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwkJKHZ2cCktPnR2X3NlYyA9ICh0
dnApLT50dl9zZWMgLSAodXZwKS0+dHZfc2VjOyAgICBcCisJCSh2dnApLT50dl91c2VjID0gKHR2
cCktPnR2X3VzZWMgLSAodXZwKS0+dHZfdXNlYzsgXAorCQlpZiAoKHZ2cCktPnR2X3VzZWMgPCAw
KSB7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwkJCSh2dnApLT50dl9zZWMtLTsgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKwkJCSh2dnApLT50dl91c2VjICs9IDEwMDAwMDA7ICAgICAg
ICAgICAgICAgIFwKKwkJfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisJfSB3aGlsZSAoMCkKKyNlbmRpZgorCit2b2lkCitkZWJ1Z19wcmludGYoY29u
c3QgY2hhciAqZm9ybWF0LCAuLi4pOworCit2b2lkCitkZWJ1Z19wcmludGZfY2xlYW4oY29uc3Qg
Y2hhciAqZm9ybWF0LCAuLi4pOworCit2b2lkCitkZWJ1Z19wcmludGZfc3RhY2soY29uc3QgY2hh
ciAqZm9ybWF0LCAuLi4pOworCit2b2lkCitkZWJ1Z19zZXRfdGFyZ2V0KEZJTEUgKmZwKTsKKwor
I2VuZGlmIC8qIF9fUFJPR1JBTVNfSEVMUEVSX0hfXyAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIv
cHJvZ3JhbXMvcnRjd2ViLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9ydGN3ZWIuYwppbmRleCA1YzU5
MDhkODU1NjY5MDJhMGRkZDQ4N2Y4YWFmOTM3YmE1YzAyOTQwLi45MTViOWVlOGNkZDJlOWJlNzMy
ZjdkYjJlODY2ZTA5MDdiMWI1NzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9ydGN3
ZWIuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9ydGN3ZWIuYwpAQCAtNTYsNiArNTYsNyBAQAog
I2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8dXNyc2N0
cC5oPgorI2luY2x1ZGUgInByb2dyYW1zX2hlbHBlci5oIgogCiAjZGVmaW5lIExJTkVfTEVOR1RI
ICgxMDI0KQogI2RlZmluZSBCVUZGRVJfU0laRSAoMTw8MTYpCkBAIC0xMTksNiArMTIwLDEwIEBA
IHN0cnVjdCBwZWVyX2Nvbm5lY3Rpb24gewogI2RlZmluZSBTQ1RQX1BBQ0tFRAogI2VuZGlmCiAK
KyNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19NSU5HVzMyX18pCisjcHJhZ21hIHdh
cm5pbmcoIHB1c2ggKQorI3ByYWdtYSB3YXJuaW5nKCBkaXNhYmxlIDogNDIwMCApCisjZW5kaWYg
LyogZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fTUlOR1czMl9fKSAqLwogc3RydWN0IHJ0
Y3dlYl9kYXRhY2hhbm5lbF9vcGVuX3JlcXVlc3QgewogCXVpbnQ4X3QgbXNnX3R5cGU7IC8qIERB
VEFfQ0hBTk5FTF9PUEVOX1JFUVVFU1QgKi8KIAl1aW50OF90IGNoYW5uZWxfdHlwZTsKQEAgLTEy
Nyw2ICsxMzIsOSBAQCBzdHJ1Y3QgcnRjd2ViX2RhdGFjaGFubmVsX29wZW5fcmVxdWVzdCB7CiAJ
aW50MTZfdCBwcmlvcml0eTsKIAljaGFyIGxhYmVsW107CiB9IFNDVFBfUEFDS0VEOworI2lmIGRl
ZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX01JTkdXMzJfXykKKyNwcmFnbWEgd2FybmluZygg
cG9wICkKKyNlbmRpZiAvKiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19NSU5HVzMyX18p
ICovCiAKIHN0cnVjdCBydGN3ZWJfZGF0YWNoYW5uZWxfb3Blbl9yZXNwb25zZSB7CiAJdWludDhf
dCAgbXNnX3R5cGU7IC8qIERBVEFfQ0hBTk5FTF9PUEVOX1JFU1BPTlNFICovCkBAIC02MTEsNyAr
NjE5LDcgQEAgaGFuZGxlX29wZW5fcmVxdWVzdF9tZXNzYWdlKHN0cnVjdCBwZWVyX2Nvbm5lY3Rp
b24gKnBjLAogCXVpbnQ4X3QgdW5vcmRlcmVkOwogCiAJaWYgKChjaGFubmVsID0gZmluZF9jaGFu
bmVsX2J5X2lfc3RyZWFtKHBjLCBpX3N0cmVhbSkpKSB7Ci0JCXByaW50ZigiaGFuZGxlX29wZW5f
cmVxdWVzdF9tZXNzYWdlOiBjaGFubmVsICVkIGlzIGluIHN0YXRlICVkIGluc3RlYWQgb2YgQ0xP
U0VELlxuIiwKKwkJcHJpbnRmKCJoYW5kbGVfb3Blbl9yZXF1ZXN0X21lc3NhZ2U6IGNoYW5uZWwg
JXUgaXMgaW4gc3RhdGUgJXUgaW5zdGVhZCBvZiBDTE9TRUQuXG4iLAogCQkgICAgICAgY2hhbm5l
bC0+aWQsIGNoYW5uZWwtPnN0YXRlKTsKIAkJLyogWFhYOiBzb21lIGVycm9yIGhhbmRsaW5nICov
CiAJCXJldHVybjsKQEAgLTY5OSwxMiArNzA3LDEyIEBAIGhhbmRsZV9vcGVuX3Jlc3BvbnNlX21l
c3NhZ2Uoc3RydWN0IHBlZXJfY29ubmVjdGlvbiAqcGMsCiAJfQogCWlmIChjaGFubmVsLT5zdGF0
ZSAhPSBEQVRBX0NIQU5ORUxfQ09OTkVDVElORykgewogCQkvKiBYWFg6IGltcHJvdmUgZXJyb3Ig
aGFuZGxpbmcgKi8KLQkJcHJpbnRmKCJoYW5kbGVfb3Blbl9yZXNwb25zZV9tZXNzYWdlOiBDaGFu
bmVsIHdpdGggaWQgJWQgZm9yIG91dGdvaW5nIHN0ZWFtICVkIGlzIGluIHN0YXRlICVkLlxuIiwg
Y2hhbm5lbC0+aWQsIG9fc3RyZWFtLCBjaGFubmVsLT5zdGF0ZSk7CisJCXByaW50ZigiaGFuZGxl
X29wZW5fcmVzcG9uc2VfbWVzc2FnZTogQ2hhbm5lbCB3aXRoIGlkICV1IGZvciBvdXRnb2luZyBz
dGVhbSAldSBpcyBpbiBzdGF0ZSAldS5cbiIsIGNoYW5uZWwtPmlkLCBvX3N0cmVhbSwgY2hhbm5l
bC0+c3RhdGUpOwogCQlyZXR1cm47CiAJfQogCWlmIChmaW5kX2NoYW5uZWxfYnlfaV9zdHJlYW0o
cGMsIGlfc3RyZWFtKSkgewogCQkvKiBYWFg6IGltcHJvdmUgZXJyb3IgaGFuZGxpbmcgKi8KLQkJ
cHJpbnRmKCJoYW5kbGVfb3Blbl9yZXNwb25zZV9tZXNzYWdlOiBDaGFubmVsIGNvbGxpc2lvbiBm
b3IgY2hhbm5lbCB3aXRoIGlkICVkIGFuZCBzdHJlYW1zIChpbi9vdXQpID0gKCVkLyVkKS5cbiIs
IGNoYW5uZWwtPmlkLCBpX3N0cmVhbSwgb19zdHJlYW0pOworCQlwcmludGYoImhhbmRsZV9vcGVu
X3Jlc3BvbnNlX21lc3NhZ2U6IENoYW5uZWwgY29sbGlzaW9uIGZvciBjaGFubmVsIHdpdGggaWQg
JXUgYW5kIHN0cmVhbXMgKGluL291dCkgPSAoJXUvJXUpLlxuIiwgY2hhbm5lbC0+aWQsIGlfc3Ry
ZWFtLCBvX3N0cmVhbSk7CiAJCXJldHVybjsKIAl9CiAJY2hhbm5lbC0+aV9zdHJlYW0gPSBpX3N0
cmVhbTsKQEAgLTc3MCw3ICs3NzgsNyBAQCBoYW5kbGVfZGF0YV9tZXNzYWdlKHN0cnVjdCBwZWVy
X2Nvbm5lY3Rpb24gKnBjLAogCX0gZWxzZSB7CiAJCS8qIEFzc3VtaW5nIERBVEFfQ0hBTk5FTF9Q
UElEX0RPTVNUUklORyAqLwogCQkvKiBYWFg6IFByb3RlY3QgZm9yIG5vbiAwIHRlcm1pbmF0ZWQg
YnVmZmVyICovCi0JCXByaW50ZigiTWVzc2FnZSByZWNlaXZlZCBvZiBsZW5ndGggJXp1IG9uIGNo
YW5uZWwgd2l0aCBpZCAlZDogJS4qc1xuIiwKKwkJcHJpbnRmKCJNZXNzYWdlIHJlY2VpdmVkIG9m
IGxlbmd0aCAlenUgb24gY2hhbm5lbCB3aXRoIGlkICV1OiAlLipzXG4iLAogCQkgICAgICAgbGVu
Z3RoLCBjaGFubmVsLT5pZCwgKGludClsZW5ndGgsIGJ1ZmZlcik7CiAJfQogCXJldHVybjsKQEAg
LTg3OSw2ICs4ODcsOSBAQCBoYW5kbGVfYXNzb2NpYXRpb25fY2hhbmdlX2V2ZW50KHN0cnVjdCBz
Y3RwX2Fzc29jX2NoYW5nZSAqc2FjKQogCQkJY2FzZSBTQ1RQX0FTU09DX1NVUFBPUlRTX1JFX0NP
TkZJRzoKIAkJCQlwcmludGYoIiBSRS1DT05GSUciKTsKIAkJCQlicmVhazsKKwkJCWNhc2UgU0NU
UF9BU1NPQ19TVVBQT1JUU19JTlRFUkxFQVZJTkc6CisJCQkJcHJpbnRmKCIgSU5URVJMRUFWSU5H
Iik7CisJCQkJYnJlYWs7CiAJCQlkZWZhdWx0OgogCQkJCXByaW50ZigiIFVOS05PV04oMHglMDJ4
KSIsIHNhYy0+c2FjX2luZm9baV0pOwogCQkJCWJyZWFrOwpAQCAtOTE5LDEwICs5MzAsMTIgQEAg
aGFuZGxlX3BlZXJfYWRkcmVzc19jaGFuZ2VfZXZlbnQoc3RydWN0IHNjdHBfcGFkZHJfY2hhbmdl
ICpzcGMpCiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAjaWZkZWYgX1dJTjMyCi0JCV9zbnByaW50Zihh
ZGRyX2J1ZiwgSU5FVDZfQUREUlNUUkxFTiwgIlVua25vd24gZmFtaWx5ICVkIiwgc3BjLT5zcGNf
YWFkZHIuc3NfZmFtaWx5KTsKKwkJaWYgKF9zbnByaW50ZihhZGRyX2J1ZiwgSU5FVDZfQUREUlNU
UkxFTiwgIlVua25vd24gZmFtaWx5ICVkIiwgc3BjLT5zcGNfYWFkZHIuc3NfZmFtaWx5KSA8IDAp
IHsKICNlbHNlCi0JCXNucHJpbnRmKGFkZHJfYnVmLCBJTkVUNl9BRERSU1RSTEVOLCAiVW5rbm93
biBmYW1pbHkgJWQiLCBzcGMtPnNwY19hYWRkci5zc19mYW1pbHkpOworCQlpZiAoc25wcmludGYo
YWRkcl9idWYsIElORVQ2X0FERFJTVFJMRU4sICJVbmtub3duIGZhbWlseSAlZCIsIHNwYy0+c3Bj
X2FhZGRyLnNzX2ZhbWlseSkgPCAwKSB7CiAjZW5kaWYKKwkJCWFkZHJfYnVmWzBdID0gJ1wwJzsK
KwkJfQogCQlhZGRyID0gYWRkcl9idWY7CiAJCWJyZWFrOwogCX0KQEAgLTExMjMsNyArMTEzNiw3
IEBAIGhhbmRsZV9zZW5kX2ZhaWxlZF9ldmVudChzdHJ1Y3Qgc2N0cF9zZW5kX2ZhaWxlZF9ldmVu
dCAqc3NmZSkKIH0KIAogc3RhdGljIHZvaWQKLWhhbmRsZV9ub3RpZmljYXRpb24oc3RydWN0IHBl
ZXJfY29ubmVjdGlvbiAqcGMsIHVuaW9uIHNjdHBfbm90aWZpY2F0aW9uICpub3RpZiwgc2l6ZV90
IG4pCitoYW5kbGVfbm90aWZpY2F0aW9uX3J0Y3dlYihzdHJ1Y3QgcGVlcl9jb25uZWN0aW9uICpw
YywgdW5pb24gc2N0cF9ub3RpZmljYXRpb24gKm5vdGlmLCBzaXplX3QgbikKIHsKIAlpZiAobm90
aWYtPnNuX2hlYWRlci5zbl9sZW5ndGggIT0gKHVpbnQzMl90KW4pIHsKIAkJcmV0dXJuOwpAQCAt
MTI2OCw3ICsxMjgxLDcgQEAgcHJpbnRfc3RhdHVzKHN0cnVjdCBwZWVyX2Nvbm5lY3Rpb24gKnBj
KQogCQkJcHJpbnRmKCJ1bnJlbGlhYmxlIChtYXguICV1IHJ0eCkuXG4iLCBjaGFubmVsLT5wcl92
YWx1ZSk7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKLQkJCXByaW50ZigidW5rb3duIHBvbGljeSAl
dS5cbiIsIGNoYW5uZWwtPnByX3BvbGljeSk7CisJCQlwcmludGYoInVua25vd24gcG9saWN5ICV1
LlxuIiwgY2hhbm5lbC0+cHJfcG9saWN5KTsKIAkJCWJyZWFrOwogCQl9CiAJfQpAQCAtMTI4NSw3
ICsxMjk4LDcgQEAgcmVjZWl2ZV9jYihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCB1bmlvbiBzY3RwX3Nv
Y2tzdG9yZSBhZGRyLCB2b2lkICpkYXRhLAogCWlmIChkYXRhKSB7CiAJCWxvY2tfcGVlcl9jb25u
ZWN0aW9uKHBjKTsKIAkJaWYgKGZsYWdzICYgTVNHX05PVElGSUNBVElPTikgewotCQkJaGFuZGxl
X25vdGlmaWNhdGlvbihwYywgKHVuaW9uIHNjdHBfbm90aWZpY2F0aW9uICopZGF0YSwgZGF0YWxl
bik7CisJCQloYW5kbGVfbm90aWZpY2F0aW9uX3J0Y3dlYihwYywgKHVuaW9uIHNjdHBfbm90aWZp
Y2F0aW9uICopZGF0YSwgZGF0YWxlbik7CiAJCX0gZWxzZSB7CiAJCQloYW5kbGVfbWVzc2FnZShw
YywgZGF0YSwgZGF0YWxlbiwgbnRvaGwocmN2LnJjdl9wcGlkKSwgcmN2LnJjdl9zaWQpOwogCQl9
CkBAIC0xMjk0LDE2ICsxMzA3LDYgQEAgcmVjZWl2ZV9jYihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCB1
bmlvbiBzY3RwX3NvY2tzdG9yZSBhZGRyLCB2b2lkICpkYXRhLAogCXJldHVybiAoMSk7CiB9CiAK
LXZvaWQKLWRlYnVnX3ByaW50Zihjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKLXsKLQl2YV9saXN0
IGFwOwotCi0JdmFfc3RhcnQoYXAsIGZvcm1hdCk7Ci0JdnByaW50Zihmb3JtYXQsIGFwKTsKLQl2
YV9lbmQoYXApOwotfQotCiBpbnQKIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsKQEAg
LTEzMzAsMTQgKzEzMzMsMTUgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCWNoYXIg
YWRkcmJ1ZltJTkVUX0FERFJTVFJMRU5dOwogCiAJaWYgKGFyZ2MgPiAxKSB7Ci0JCXVzcnNjdHBf
aW5pdChhdG9pKGFyZ3ZbMV0pLCBOVUxMLCBkZWJ1Z19wcmludGYpOworCQl1c3JzY3RwX2luaXQo
YXRvaShhcmd2WzFdKSwgTlVMTCwgZGVidWdfcHJpbnRmX3N0YWNrKTsKIAl9IGVsc2UgewotCQl1
c3JzY3RwX2luaXQoOTg5OSwgTlVMTCwgZGVidWdfcHJpbnRmKTsKKwkJdXNyc2N0cF9pbml0KDk4
OTksIE5VTEwsIGRlYnVnX3ByaW50Zl9zdGFjayk7CiAJfQogI2lmZGVmIFNDVFBfREVCVUcKIAl1
c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9kZWJ1Z19vbihTQ1RQX0RFQlVHX05PTkUpOwogI2VuZGlm
CiAJdXNyc2N0cF9zeXNjdGxfc2V0X3NjdHBfYmxhY2tob2xlKDIpOworCXVzcnNjdHBfc3lzY3Rs
X3NldF9zY3RwX25vX2NzdW1fb25fbG9vcGJhY2soMCk7CiAKIAlpZiAoKHNvY2sgPSB1c3JzY3Rw
X3NvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgSVBQUk9UT19TQ1RQLCByZWNlaXZlX2NiLCBO
VUxMLCAwLCAmcGVlcl9jb25uZWN0aW9uKSkgPT0gTlVMTCkgewogCQlwZXJyb3IoInNvY2tldCIp
OwpAQCAtMTQzNCw3ICsxNDM4LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCXVu
bG9ja19wZWVyX2Nvbm5lY3Rpb24oJnBlZXJfY29ubmVjdGlvbik7CiAKIAlmb3IgKDs7KSB7Ci0j
aWZkZWYgX1dJTjMyCisjaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fTUlOR1czMl9f
KQogCQlpZiAoZ2V0c19zKGxpbmUsIExJTkVfTEVOR1RIKSA9PSBOVUxMKSB7CiAjZWxzZQogCQlp
ZiAoZmdldHMobGluZSwgTElORV9MRU5HVEgsIHN0ZGluKSA9PSBOVUxMKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAv
dXNyc2N0cGxpYi9wcm9ncmFtcy9zdF9jbGllbnQuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL3N0X2Ns
aWVudC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVlMmY4N2M4ZDY5NzM0MjQ5ZTc0ZTgxNjcxMjUyNmNjOTA2YjM1
NzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9zdF9jbGllbnQuYwpAQCAt
MCwwICsxLDM4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDEzIE1pY2hhZWwgVHVl
eGVuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNSBDb2xpbiBDYXVnaGllCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEtMjAxOSBGZWxpeCBXZWlucmFuaworICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBwcm9qZWN0IG5vciB0
aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBQUk9KRUNUIEFORCBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJ
U0NMQUlNRUQuCUlOIE5PIEVWRU5UIFNIQUxMIFRIRSBQUk9KRUNUIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICog
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworLyoKKyAqIFVzYWdlOiBzdF9j
bGllbnQgbG9jYWxfYWRkciBsb2NhbF9wb3J0IHJlbW90ZV9hZGRyIHJlbW90ZV9wb3J0IHJlbW90
ZV9zY3RwX3BvcnQKKyAqLworCisjaWZkZWYgX1dJTjMyCisjZGVmaW5lIF9DUlRfU0VDVVJFX05P
X1dBUk5JTkdTCisjZW5kaWYKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5o
PgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHN5
cy90eXBlcy5oPgorI2lmbmRlZiBfV0lOMzIKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5j
bHVkZSA8c3lzL3RpbWUuaD4KKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisjaW5jbHVkZSA8YXJw
YS9pbmV0Lmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxwdGhyZWFkLmg+CisjaW5j
bHVkZSA8dW5pc3RkLmg+CisjZWxzZQorI2luY2x1ZGUgPHdpbnNvY2syLmg+CisjaW5jbHVkZSA8
d3MydGNwaXAuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHVzcnNjdHAuaD4KKyNpbmNsdWRlICJwcm9n
cmFtc19oZWxwZXIuaCIKKworI2RlZmluZSBNQVhfUEFDS0VUX1NJWkUgKDE8PDE2KQorI2RlZmlu
ZSBCVUZGRVJfU0laRSA4MAorI2RlZmluZSBESVNDQVJEX1BQSUQgMzkKKyNkZWZpbmUgSFRUUF9Q
UElEIDYzCisKKyNkZWZpbmUgVElNRVJfSU5URVJWQUxfTVNFQ1MgMTAKKworc3RhdGljIGludCBj
b25uZWN0aW5nID0gMDsKK3N0YXRpYyBpbnQgZmluaXNoID0gMDsKKworc3RhdGljIHVuc2lnbmVk
IGludAorZ2V0X21pbGxpc2Vjb25kc19jb3VudCh2b2lkKQoreworI2lmZGVmIF9XSU4zMgorCS8v
IG9idGFpbiBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHNpbmNlIHN5c3RlbSBzdGFydGVkCisJcmV0
dXJuIEdldFRpY2tDb3VudCgpOworI2Vsc2UKKwlzdHJ1Y3QgdGltZXZhbCB0djsKKwl1bnNpZ25l
ZCBpbnQgbWlsbGlzZWNvbmRzOworCisJZ2V0dGltZW9mZGF5KCZ0diwgTlVMTCk7IC8qIGdldCBj
dXJyZW50IHRpbWUgKi8KKwltaWxsaXNlY29uZHMgPSB0di50dl9zZWMqMTAwMExMICsgdHYudHZf
dXNlYy8xMDAwOyAvKiBjYWxjdWxhdGUgbWlsbGlzZWNvbmRzICovCisJcmV0dXJuIChtaWxsaXNl
Y29uZHMpOworI2VuZGlmCit9CisKK3N0YXRpYyB2b2lkCitoYW5kbGVfZXZlbnRzKGludCBzb2Nr
LCBzdHJ1Y3Qgc29ja2V0KiBzLCB2b2lkKiBzY29ubl9hZGRyKQoreworCWNoYXIgKmR1bXBfYnVm
OworCXNzaXplX3QgbGVuZ3RoOworCWNoYXIgYnVmW01BWF9QQUNLRVRfU0laRV07CisKKwlmZF9z
ZXQgcmZkczsKKwlzdHJ1Y3QgdGltZXZhbCB0djsKKworCXVuc2lnbmVkIG5leHRfZmlyZV90aW1l
ID0gZ2V0X21pbGxpc2Vjb25kc19jb3VudCgpOworCXVuc2lnbmVkIGxhc3RfZmlyZV90aW1lID0g
bmV4dF9maXJlX3RpbWU7CisJdW5zaWduZWQgbm93ID0gZ2V0X21pbGxpc2Vjb25kc19jb3VudCgp
OworCWludCB3YWl0X3RpbWU7CisKKwl3aGlsZSAoIWZpbmlzaCkgeworCQlpZiAoKGludCkgKG5v
dyAtIG5leHRfZmlyZV90aW1lKSA+IDApIHsKKwkJCXVzcnNjdHBfaGFuZGxlX3RpbWVycyhub3cg
LSBsYXN0X2ZpcmVfdGltZSk7CisJCQlsYXN0X2ZpcmVfdGltZSA9IG5vdzsKKwkJCW5leHRfZmly
ZV90aW1lID0gbm93ICsgVElNRVJfSU5URVJWQUxfTVNFQ1M7CisJCX0KKworCQl3YWl0X3RpbWUg
PSBuZXh0X2ZpcmVfdGltZSAtIG5vdzsKKwkJdHYudHZfc2VjID0gd2FpdF90aW1lIC8gMTAwMDsK
KwkJdHYudHZfdXNlYyA9ICh3YWl0X3RpbWUgJSAxMDAwKSAqIDEwMDA7CisKKwkJRkRfWkVSTygm
cmZkcyk7CisJCUZEX1NFVChzb2NrLCAmcmZkcyk7CisKKwkJc2VsZWN0KHNvY2sgKyAxLCAmcmZk
cywgTlVMTCwgTlVMTCwgJnR2KTsKKworCQlpZiAoRkRfSVNTRVQoc29jaywgJnJmZHMpKSB7CisJ
CQlsZW5ndGggPSByZWN2KHNvY2ssIGJ1ZiwgTUFYX1BBQ0tFVF9TSVpFLCAwKTsKKworCQkJaWYg
KGxlbmd0aCA+IDApIHsKKwkJCQlpZiAoKGR1bXBfYnVmID0gdXNyc2N0cF9kdW1wcGFja2V0KGJ1
ZiwgKHNpemVfdClsZW5ndGgsIFNDVFBfRFVNUF9JTkJPVU5EKSkgIT0gTlVMTCkgeworCQkJCQlm
cHJpbnRmKHN0ZGVyciwgIiVzIiwgZHVtcF9idWYpOworCQkJCQl1c3JzY3RwX2ZyZWVkdW1wYnVm
ZmVyKGR1bXBfYnVmKTsKKwkJCQl9CisJCQkJdXNyc2N0cF9jb25uaW5wdXQoc2Nvbm5fYWRkciwg
YnVmLCAoc2l6ZV90KWxlbmd0aCwgMCk7CisJCQl9CisJCX0KKwl9Cit9CisKK3N0YXRpYyB2b2lk
Citvbl9jb25uZWN0KHN0cnVjdCBzb2NrZXQqIHMpCit7CisJc3RydWN0IHNjdHBfc25kaW5mbyBz
bmRpbmZvOworCWNoYXIgYnVmZmVyW0JVRkZFUl9TSVpFXTsKKwlpbnQgYnVmZmVybGVuOworCisJ
LyogbWVtc2V0KGJ1ZmZlciwgJ0EnLCBCVUZGRVJfU0laRSk7ICovCisJLyogYnVmZmVybGVuID0g
QlVGRkVSX1NJWkU7ICovCisJYnVmZmVybGVuID0gc25wcmludGYoYnVmZmVyLCBCVUZGRVJfU0la
RSwgIkdFVCAvIEhUVFAvMS4wXHJcblVzZXItYWdlbnQ6IGxpYnVzcnNjdHBcclxuQ29ubmVjdGlv
bjogY2xvc2VcclxuXHJcbiIpOworCWlmIChidWZmZXJsZW4gPCAwKSB7CisJCXJldHVybjsKKwl9
CisJc25kaW5mby5zbmRfc2lkID0gMDsKKwlzbmRpbmZvLnNuZF9mbGFncyA9IDA7CisJc25kaW5m
by5zbmRfcHBpZCA9IGh0b25sKERJU0NBUkRfUFBJRCk7CisJc25kaW5mby5zbmRfY29udGV4dCA9
IDA7CisJc25kaW5mby5zbmRfYXNzb2NfaWQgPSAwOworCWlmICh1c3JzY3RwX3NlbmR2KHMsIGJ1
ZmZlciwgYnVmZmVybGVuLCBOVUxMLCAwLCAodm9pZCAqKSZzbmRpbmZvLAorCSAgICAgICAgICAg
ICAgICAgIChzb2NrbGVuX3Qpc2l6ZW9mKHN0cnVjdCBzY3RwX3NuZGluZm8pLCBTQ1RQX1NFTkRW
X1NORElORk8sIDApIDwgMCkgeworCQlwZXJyb3IoInVzcnNjdHBfc2VuZHYiKTsKKwl9Cit9CisK
K3N0YXRpYyB2b2lkCitvbl9zb2NrZXRfcmVhZGFibGUoc3RydWN0IHNvY2tldCogcykgeworCWNo
YXIgYnVmZmVyW0JVRkZFUl9TSVpFXTsKKwl1bmlvbiBzY3RwX3NvY2tzdG9yZSBhZGRyOworCXNv
Y2tsZW5fdCBmcm9tbGVuID0gc2l6ZW9mKGFkZHIpOworCXN0cnVjdCBzY3RwX3JjdmluZm8gcmN2
X2luZm87CisJc29ja2xlbl90IGluZm9sZW4gPSBzaXplb2YocmN2X2luZm8pOworCXVuc2lnbmVk
IGludCBpbmZvdHlwZSA9IDA7CisJaW50IGZsYWdzID0gMDsKKwlzc2l6ZV90IHJldHZhbDsKKwor
CS8qIEtlZXAgcmVhZGluZyB1bnRpbCB0aGVyZSBpcyBubyBtb3JlIGRhdGEgKi8KKwlmb3IgKDs7
KSB7CisJCXJldHZhbCA9IHVzcnNjdHBfcmVjdnYocywgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwg
KHN0cnVjdCBzb2NrYWRkciopICZhZGRyLAorCQkgICAgICAgICAgICAgICAgICAgICAgICZmcm9t
bGVuLCAmcmN2X2luZm8sICZpbmZvbGVuLCAmaW5mb3R5cGUsICZmbGFncyk7CisKKwkJaWYgKHJl
dHZhbCA8IDApIHsKKwkJCWlmIChlcnJubyAhPSBFV09VTERCTE9DSykgeworCQkJCXBlcnJvcigi
dXNyc2N0cF9yZWN2diIpOworCQkJCWZpbmlzaCA9IDE7CisJCQl9CisJCQlyZXR1cm47CisJCX0g
ZWxzZSBpZiAocmV0dmFsID09IDApIHsKKwkJCXByaW50Zigic29ja2V0IHdhcyBkaXNjb25uZWN0
ZWRcbiIpOworCQkJZmluaXNoID0gMTsKKwkJCXJldHVybjsKKwkJfQorCisJCWlmIChmbGFncyAm
IE1TR19OT1RJRklDQVRJT04pIHsKKwkJCXByaW50ZigiTm90aWZpY2F0aW9uIG9mIGxlbmd0aCAl
ZCByZWNlaXZlZC5cbiIsIChpbnQpcmV0dmFsKTsKKwkJfSBlbHNlIHsKKwkJCXByaW50ZigiTXNn
IG9mIGxlbmd0aCAlZCByZWNlaXZlZCB2aWEgJXA6JXUgb24gc3RyZWFtICVkIHdpdGggU1NOICV1
IGFuZCBUU04gJXUsIFBQSUQgJXUsIGNvbnRleHQgJXUuXG4iLAorCQkJICAgICAgIChpbnQpcmV0
dmFsLAorCQkJICAgICAgIGFkZHIuc2Nvbm4uc2Nvbm5fYWRkciwKKwkJCSAgICAgICBudG9ocyhh
ZGRyLnNjb25uLnNjb25uX3BvcnQpLAorCQkJICAgICAgIHJjdl9pbmZvLnJjdl9zaWQsCisJCQkg
ICAgICAgcmN2X2luZm8ucmN2X3NzbiwKKwkJCSAgICAgICByY3ZfaW5mby5yY3ZfdHNuLAorCQkJ
ICAgICAgIG50b2hsKHJjdl9pbmZvLnJjdl9wcGlkKSwKKwkJCSAgICAgICByY3ZfaW5mby5yY3Zf
Y29udGV4dCk7CisJCX0KKwl9Cit9CisKK3N0YXRpYyB2b2lkCitoYW5kbGVfdXBjYWxsKHN0cnVj
dCBzb2NrZXQgKnMsIHZvaWQgKmFyZywgaW50IGZsYWdzKQoreworCWludCBldmVudHMgPSB1c3Jz
Y3RwX2dldF9ldmVudHMocyk7CisKKwlpZiAoY29ubmVjdGluZykgeworCQlpZiAoZXZlbnRzICYg
U0NUUF9FVkVOVF9FUlJPUikgeworCQkJY29ubmVjdGluZyA9IDA7CisJCQlmaW5pc2ggPSAxOwor
CQl9IGVsc2UgaWYgKGV2ZW50cyAmIFNDVFBfRVZFTlRfV1JJVEUpIHsKKwkJCWNvbm5lY3Rpbmcg
PSAwOworCQkJb25fY29ubmVjdChzKTsKKwkJfQorCisJCXJldHVybjsKKwl9CisKKwlpZiAoZXZl
bnRzICYgU0NUUF9FVkVOVF9SRUFEKSB7CisJCW9uX3NvY2tldF9yZWFkYWJsZShzKTsKKwl9Cit9
CisKK3N0YXRpYyBpbnQKK2Nvbm5fb3V0cHV0KHZvaWQgKmFkZHIsIHZvaWQgKmJ1Ziwgc2l6ZV90
IGxlbmd0aCwgdWludDhfdCB0b3MsIHVpbnQ4X3Qgc2V0X2RmKQoreworCWNoYXIgKmR1bXBfYnVm
OworI2lmZGVmIF9XSU4zMgorCVNPQ0tFVCAqZmRwOworI2Vsc2UKKwlpbnQgKmZkcDsKKyNlbmRp
ZgorCisjaWZkZWYgX1dJTjMyCisJZmRwID0gKFNPQ0tFVCAqKWFkZHI7CisjZWxzZQorCWZkcCA9
IChpbnQgKilhZGRyOworI2VuZGlmCisJaWYgKChkdW1wX2J1ZiA9IHVzcnNjdHBfZHVtcHBhY2tl
dChidWYsIGxlbmd0aCwgU0NUUF9EVU1QX09VVEJPVU5EKSkgIT0gTlVMTCkgeworCQlmcHJpbnRm
KHN0ZGVyciwgIiVzIiwgZHVtcF9idWYpOworCQl1c3JzY3RwX2ZyZWVkdW1wYnVmZmVyKGR1bXBf
YnVmKTsKKwl9CisjaWZkZWYgX1dJTjMyCisJaWYgKHNlbmQoKmZkcCwgYnVmLCAoaW50KWxlbmd0
aCwgMCkgPT0gU09DS0VUX0VSUk9SKSB7CisJCXJldHVybiAoV1NBR2V0TGFzdEVycm9yKCkpOwor
I2Vsc2UKKwlpZiAoc2VuZCgqZmRwLCBidWYsIGxlbmd0aCwgMCkgPCAwKSB7CisJCXJldHVybiAo
ZXJybm8pOworI2VuZGlmCisJfSBlbHNlIHsKKwkJcmV0dXJuICgwKTsKKwl9Cit9CisKKy8qIFVz
YWdlOiBzdF9jbGllbnQgbG9jYWxfYWRkciBsb2NhbF9wb3J0IHJlbW90ZV9hZGRyIHJlbW90ZV9w
b3J0IHJlbW90ZV9zY3RwX3BvcnQgKi8KK2ludAorbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltd
KQoreworCXN0cnVjdCBzb2NrYWRkcl9pbiBzaW47CisJc3RydWN0IHNvY2thZGRyX2Nvbm4gc2Nv
bm47CisjaWZkZWYgX1dJTjMyCisJU09DS0VUIGZkOworI2Vsc2UKKwlpbnQgZmQ7CisjZW5kaWYK
KwlzdHJ1Y3Qgc29ja2V0ICpzOworCWludCByZXR2YWw7CisjaWZkZWYgX1dJTjMyCisJV1NBREFU
QSB3c2FEYXRhOworI2VuZGlmCisJY29uc3QgaW50IG9uID0gMTsKKworCWlmIChhcmdjIDwgNikg
eworCQlwcmludGYoIlVzYWdlOiBzdF9jbGllbnQgbG9jYWxfYWRkciBsb2NhbF9wb3J0IHJlbW90
ZV9hZGRyIHJlbW90ZV9wb3J0IHJlbW90ZV9zY3RwX3BvcnRcbiIpOworCQlyZXR1cm4gKC0xKTsK
Kwl9CisKKyNpZmRlZiBfV0lOMzIKKwlpZiAoV1NBU3RhcnR1cChNQUtFV09SRCgyLDIpLCAmd3Nh
RGF0YSkgIT0gMCkgeworCQlwcmludGYoIldTQVN0YXJ0dXAgZmFpbGVkXG4iKTsKKwkJZXhpdChF
WElUX0ZBSUxVUkUpOworCX0KKyNlbmRpZgorCXVzcnNjdHBfaW5pdF9ub3RocmVhZHMoMCwgY29u
bl9vdXRwdXQsIGRlYnVnX3ByaW50Zl9zdGFjayk7CisJLyogc2V0IHVwIGEgY29ubmVjdGVkIFVE
UCBzb2NrZXQgKi8KKyNpZmRlZiBfV0lOMzIKKwlpZiAoKGZkID0gc29ja2V0KEFGX0lORVQsIFNP
Q0tfREdSQU0sIElQUFJPVE9fVURQKSkgPT0gSU5WQUxJRF9TT0NLRVQpIHsKKwkJcHJpbnRmKCJz
b2NrZXQoKSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIFdTQUdldExhc3RFcnJvcigpKTsKKwkJ
ZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKyNlbHNlCisJaWYgKChmZCA9IHNvY2tldChBRl9JTkVU
LCBTT0NLX0RHUkFNLCBJUFBST1RPX1VEUCkpIDwgMCkgeworCQlwZXJyb3IoInNvY2tldCIpOwor
CQlleGl0KEVYSVRfRkFJTFVSRSk7CisJfQorI2VuZGlmCisJbWVtc2V0KCZzaW4sIDAsIHNpemVv
ZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKKwlzaW4uc2luX2ZhbWlseSA9IEFGX0lORVQ7CisjaWZk
ZWYgSEFWRV9TSU5fTEVOCisJc2luLnNpbl9sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2lu
KTsKKyNlbmRpZgorCXNpbi5zaW5fcG9ydCA9IGh0b25zKGF0b2koYXJndlsyXSkpOworCWlmICgh
aW5ldF9wdG9uKEFGX0lORVQsIGFyZ3ZbMV0sICZzaW4uc2luX2FkZHIuc19hZGRyKSl7CisJCXBy
aW50ZigiZXJyb3I6IGludmFsaWQgYWRkcmVzc1xuIik7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsK
Kwl9CisjaWZkZWYgX1dJTjMyCisJaWYgKGJpbmQoZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2lu
LCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSkgPT0gU09DS0VUX0VSUk9SKSB7CisJCXByaW50
ZigiYmluZCgpIGZhaWxlZCB3aXRoIGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOwor
CQlleGl0KEVYSVRfRkFJTFVSRSk7CisJfQorI2Vsc2UKKwlpZiAoYmluZChmZCwgKHN0cnVjdCBz
b2NrYWRkciAqKSZzaW4sIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKSA8IDApIHsKKwkJcGVy
cm9yKCJiaW5kIik7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwl9CisjZW5kaWYKKwltZW1zZXQo
JnNpbiwgMCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOworCXNpbi5zaW5fZmFtaWx5ID0g
QUZfSU5FVDsKKyNpZmRlZiBIQVZFX1NJTl9MRU4KKwlzaW4uc2luX2xlbiA9IHNpemVvZihzdHJ1
Y3Qgc29ja2FkZHJfaW4pOworI2VuZGlmCisJc2luLnNpbl9wb3J0ID0gaHRvbnMoYXRvaShhcmd2
WzRdKSk7CisJaWYgKCFpbmV0X3B0b24oQUZfSU5FVCwgYXJndlszXSwgJnNpbi5zaW5fYWRkci5z
X2FkZHIpKXsKKwkJcHJpbnRmKCJlcnJvcjogaW52YWxpZCBhZGRyZXNzXG4iKTsKKwkJZXhpdChF
WElUX0ZBSUxVUkUpOworCX0KKyNpZmRlZiBfV0lOMzIKKwlpZiAoY29ubmVjdChmZCwgKHN0cnVj
dCBzb2NrYWRkciAqKSZzaW4sIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKSA9PSBTT0NLRVRf
RVJST1IpIHsKKwkJcHJpbnRmKCJjb25uZWN0KCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBX
U0FHZXRMYXN0RXJyb3IoKSk7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwl9CisjZWxzZQorCWlm
IChjb25uZWN0KGZkLCAoc3RydWN0IHNvY2thZGRyICopJnNpbiwgc2l6ZW9mKHN0cnVjdCBzb2Nr
YWRkcl9pbikpIDwgMCkgeworCQlwZXJyb3IoImNvbm5lY3QiKTsKKwkJZXhpdChFWElUX0ZBSUxV
UkUpOworCX0KKyNlbmRpZgorI2lmZGVmIFNDVFBfREVCVUcKKwl1c3JzY3RwX3N5c2N0bF9zZXRf
c2N0cF9kZWJ1Z19vbihTQ1RQX0RFQlVHX05PTkUpOworI2VuZGlmCisJdXNyc2N0cF9zeXNjdGxf
c2V0X3NjdHBfZWNuX2VuYWJsZSgwKTsKKwl1c3JzY3RwX3JlZ2lzdGVyX2FkZHJlc3MoKHZvaWQg
KikmZmQpOworCisJaWYgKChzID0gdXNyc2N0cF9zb2NrZXQoQUZfQ09OTiwgU09DS19TVFJFQU0s
IElQUFJPVE9fU0NUUCwgTlVMTCwgTlVMTCwgMCwgTlVMTCkpID09IE5VTEwpIHsKKwkJcGVycm9y
KCJ1c3JzY3RwX3NvY2tldCIpOworCQlleGl0KEVYSVRfRkFJTFVSRSk7CisJfQorCisJdXNyc2N0
cF9zZXRzb2Nrb3B0KHMsIElQUFJPVE9fU0NUUCwgU0NUUF9SRUNWUkNWSU5GTywgJm9uLCBzaXpl
b2YoaW50KSk7CisJdXNyc2N0cF9zZXRfbm9uX2Jsb2NraW5nKHMsIDEpOworCXVzcnNjdHBfc2V0
X3VwY2FsbChzLCBoYW5kbGVfdXBjYWxsLCBOVUxMKTsKKworCW1lbXNldCgmc2Nvbm4sIDAsIHNp
emVvZihzdHJ1Y3Qgc29ja2FkZHJfY29ubikpOworCXNjb25uLnNjb25uX2ZhbWlseSA9IEFGX0NP
Tk47CisjaWZkZWYgSEFWRV9TQ09OTl9MRU4KKwlzY29ubi5zY29ubl9sZW4gPSBzaXplb2Yoc3Ry
dWN0IHNvY2thZGRyX2Nvbm4pOworI2VuZGlmCisJc2Nvbm4uc2Nvbm5fcG9ydCA9IGh0b25zKDAp
OworCXNjb25uLnNjb25uX2FkZHIgPSBOVUxMOworCWlmICh1c3JzY3RwX2JpbmQocywgKHN0cnVj
dCBzb2NrYWRkciAqKSZzY29ubiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9jb25uKSkgPCAwKSB7
CisJCXBlcnJvcigidXNyc2N0cF9iaW5kIik7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwl9CisK
KwltZW1zZXQoJnNjb25uLCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2Nvbm4pKTsKKwlzY29u
bi5zY29ubl9mYW1pbHkgPSBBRl9DT05OOworI2lmZGVmIEhBVkVfU0NPTk5fTEVOCisJc2Nvbm4u
c2Nvbm5fbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9jb25uKTsKKyNlbmRpZgorCXNjb25u
LnNjb25uX3BvcnQgPSBodG9ucyhhdG9pKGFyZ3ZbNV0pKTsKKwlzY29ubi5zY29ubl9hZGRyID0g
JmZkOworCisJcmV0dmFsID0gdXNyc2N0cF9jb25uZWN0KHMsIChzdHJ1Y3Qgc29ja2FkZHIgKikm
c2Nvbm4sIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfY29ubikpOworCisJaWYgKHJldHZhbCA8IDAg
JiYgZXJybm8gIT0gRVdPVUxEQkxPQ0sgJiYgZXJybm8gIT0gRUlOUFJPR1JFU1MpIHsKKwkJcGVy
cm9yKCJ1c3JzY3RwX2Nvbm5lY3QiKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKworCWNv
bm5lY3RpbmcgPSAxOworCisJaGFuZGxlX2V2ZW50cyhmZCwgcywgc2Nvbm4uc2Nvbm5fYWRkcik7
CisKKwlyZXR1cm4gKDApOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvdHNjdHAu
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0
cC91c3JzY3RwbGliL3Byb2dyYW1zL3RzY3RwLmMKaW5kZXggYzg1ZGEyMmIxODhlZjNhOGUwNGQz
NTE3YmZjODhmZGExMzA5MWNlMi4uMzgxYTQyOWY4ODBjMWFlZmRmYjIxZTQwNjhkZmQzNTQyNTVh
N2YxMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvdHNjdHAuYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi9wcm9ncmFtcy90c2N0cC5jCkBAIC01MCwxMCArNTAsMTIgQEAKICNpbmNsdWRlIDxzdHJpbmcu
aD4KICNpbmNsdWRlIDxzaWduYWwuaD4KICNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHRp
bWUuaD4KICNpZmRlZiBMSU5VWAogI2luY2x1ZGUgPGdldG9wdC5oPgogI2VuZGlmCiAjaW5jbHVk
ZSA8dXNyc2N0cC5oPgorI2luY2x1ZGUgInByb2dyYW1zX2hlbHBlci5oIgogCiAvKiBnbG9iYWwg
Zm9yIHRoZSBzZW5kIGNhbGxiYWNrLCBidXQgdXNlZCBpbiBrZXJuZWwgdmVyc2lvbiBhcyB3ZWxs
ICovCiBzdGF0aWMgdW5zaWduZWQgbG9uZyBudW1iZXJfb2ZfbWVzc2FnZXM7CkBAIC02NiwyMSAr
NjgsNDEgQEAgc3RydWN0IHNvY2tldCAqcHNvY2sgPSBOVUxMOwogCiBzdGF0aWMgc3RydWN0IHRp
bWV2YWwgc3RhcnRfdGltZTsKIHVuc2lnbmVkIGludCBydW50aW1lID0gMDsKLXN0YXRpYyB1bnNp
Z25lZCBsb25nIG1lc3NhZ2VzID0gMDsKLXN0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcgZmlyc3Rf
bGVuZ3RoID0gMDsKLXN0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcgc3VtID0gMDsKK3N0YXRpYyBp
bnQgcG9saWN5ID0gMDsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgdGltZXRvbGl2ZSA9IDA7CitzdGF0
aWMgdW5zaWduZWQgbG9uZyBjYl9tZXNzYWdlcyA9IDA7CitzdGF0aWMgdW5zaWduZWQgbG9uZyBs
b25nIGNiX2ZpcnN0X2xlbmd0aCA9IDA7CitzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIGNiX3N1
bSA9IDA7CiBzdGF0aWMgdW5zaWduZWQgaW50IHVzZV9jYiA9IDA7CiAKLSNpZm5kZWYgdGltZXJz
dWIKLSNkZWZpbmUgdGltZXJzdWIodHZwLCB1dnAsIHZ2cCkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLQlkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAotCQkodnZwKS0+dHZfc2VjID0gKHR2cCktPnR2X3NlYyAtICh1
dnApLT50dl9zZWM7ICAgIFwKLQkJKHZ2cCktPnR2X3VzZWMgPSAodHZwKS0+dHZfdXNlYyAtICh1
dnApLT50dl91c2VjOyBcCi0JCWlmICgodnZwKS0+dHZfdXNlYyA8IDApIHsgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotCQkJKHZ2cCktPnR2X3NlYy0tOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotCQkJKHZ2cCktPnR2X3VzZWMgKz0gMTAwMDAwMDsgICAgICAgICAgICAgICAgXAotCQl9
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLQl9IHdo
aWxlICgwKQorI2lmZGVmIF9XSU4zMgorc3RhdGljIHZvaWQKK2dldHRpbWVvZmRheShzdHJ1Y3Qg
dGltZXZhbCAqdHYsIHZvaWQgKmlnbm9yZSkKK3sKKwlGSUxFVElNRSBmaWxldGltZTsKKwlVTEFS
R0VfSU5URUdFUiB1bGFyZ2U7CisKKwlHZXRTeXN0ZW1UaW1lQXNGaWxlVGltZSgmZmlsZXRpbWUp
OworCXVsYXJnZS5Mb3dQYXJ0ID0gZmlsZXRpbWUuZHdMb3dEYXRlVGltZTsKKwl1bGFyZ2UuSGln
aFBhcnQgPSBmaWxldGltZS5kd0hpZ2hEYXRlVGltZTsKKwkvKiBDaGFuZ2UgYmFzZSBmcm9tIEph
biAxIDE2MDEgMDA6MDA6MDAgdG8gSmFuIDEgMTk3MCAwMDowMDowMCAqLworI2lmIGRlZmluZWQo
X19NSU5HVzMyX18pCisJdWxhcmdlLlF1YWRQYXJ0IC09IDExNjQ0NDczNjAwMDAwMDAwMFVMTDsK
KyNlbHNlCisJdWxhcmdlLlF1YWRQYXJ0IC09IDExNjQ0NDczNjAwMDAwMDAwMFVJNjQ7CisjZW5k
aWYKKwkvKgorCSAqIHVsYXJnZS5RdWFkUGFydCBpcyBub3cgdGhlIG51bWJlciBvZiAxMDAtbmFu
b3NlY29uZCBpbnRlcnZhbHMKKwkgKiBzaW5jZSBKYW4gMSAxOTcwIDAwOjAwOjAwLgorCSAqLwor
I2lmIGRlZmluZWQoX19NSU5HVzMyX18pCisJdHYtPnR2X3NlYyA9IChsb25nKSh1bGFyZ2UuUXVh
ZFBhcnQgLyAxMDAwMDAwMFVMTCk7CisJdHYtPnR2X3VzZWMgPSAobG9uZykoKHVsYXJnZS5RdWFk
UGFydCAlIDEwMDAwMDAwVUxMKSAvIDEwVUxMKTsKKyNlbHNlCisJdHYtPnR2X3NlYyA9IChsb25n
KSh1bGFyZ2UuUXVhZFBhcnQgLyAxMDAwMDAwMFVJNjQpOworCXR2LT50dl91c2VjID0gKGxvbmcp
KCh1bGFyZ2UuUXVhZFBhcnQgJSAxMDAwMDAwMFVJNjQpIC8gMTBVSTY0KTsKKyNlbmRpZgorfQog
I2VuZGlmCiAKIApAQCAtODksMTQgKzExMSwxOCBAQCBjaGFyIFVzYWdlW10gPQogIk9wdGlvbnM6
XG4iCiAiICAgICAgICAtYSAgICAgICAgICAgICBzZXQgYWRhcHRhdGlvbiBsYXllciBpbmRpY2F0
aW9uXG4iCiAiICAgICAgICAtYyAgICAgICAgICAgICB1c2UgY2FsbGJhY2sgQVBJXG4iCisiICAg
ICAgICAtZCAgICAgICAgICAgICB0aW1lIGluIHNlY29uZHMgYWZ0ZXIgd2hpY2ggYSBzdGF0dXMg
dXBkYXRlIGlzIHByaW50ZWRcbiIKKyIgICAgICAgIC1EICAgICAgICAgICAgIHR1cm5zIE5hZ2xl
IG9mZlxuIgogIiAgICAgICAgLUUgICAgICAgICAgICAgbG9jYWwgVURQIGVuY2Fwc3VsYXRpb24g
cG9ydCAoZGVmYXVsdCA5ODk5KVxuIgogIiAgICAgICAgLWYgICAgICAgICAgICAgZnJhZ21lbnRh
dGlvbiBwb2ludFxuIgotIiAgICAgICAgLWwgICAgICAgICAgICAgc2l6ZSBvZiBzZW5kL3JlY2Vp
dmUgYnVmZmVyXG4iCisiICAgICAgICAtbCAgICAgICAgICAgICBtZXNzYWdlIGxlbmd0aFxuIgog
IiAgICAgICAgLUwgICAgICAgICAgICAgYmluZCB0byBsb2NhbCBJUCAoZGVmYXVsdCBJTkFERFJf
QU5ZKVxuIgogIiAgICAgICAgLW4gICAgICAgICAgICAgbnVtYmVyIG9mIG1lc3NhZ2VzIHNlbnQg
KDAgbWVhbnMgaW5maW5pdGUpL3JlY2VpdmVkXG4iCi0iICAgICAgICAtRCAgICAgICAgICAgICB0
dXJucyBOYWdsZSBvZmZcbiIKKyIgICAgICAgIC1wICAgICAgICAgICAgIHBvcnQgbnVtYmVyXG4i
CisiICAgICAgICAtUCAgICAgICAgICAgICBwYXJ0aWFsIHJlbGlhYmlsaXR5IHBvbGljeSB0byB1
c2UgKDA9bm9uZSAoZGVmYXVsdCksIDE9dHRsLCAyPXJ0eCwgMz1idWYpXG4iCiAiICAgICAgICAt
UiAgICAgICAgICAgICBzb2NrZXQgcmVjdiBidWZmZXJcbiIKICIgICAgICAgIC1TICAgICAgICAg
ICAgIHNvY2tldCBzZW5kIGJ1ZmZlclxuIgorIiAgICAgICAgLXQgICAgICAgICAgICAgYmFzZWQg
b24gLVAgdGhlIHRpbWUgdG8gbGl2ZSwgbnVtYmVyIG9mIHJldHJhbnNtaXNzaW9ucywgb3IgcHJp
b3JpdHkgZm9yIG1lc3NhZ2VzXG4iCiAiICAgICAgICAtVCAgICAgICAgICAgICB0aW1lIHRvIHNl
bmQgbWVzc2FnZXNcbiIKICIgICAgICAgIC11ICAgICAgICAgICAgIHVzZSB1bm9yZGVyZWQgdXNl
ciBtZXNzYWdlc1xuIgogIiAgICAgICAgLVUgICAgICAgICAgICAgcmVtb3RlIFVEUCBlbmNhcHN1
bGF0aW9uIHBvcnRcbiIKQEAgLTExMSwyMyArMTM3LDIxIEBAIGNoYXIgVXNhZ2VbXSA9CiAKIHN0
YXRpYyBpbnQgdmVyYm9zZSwgdmVyeV92ZXJib3NlOwogc3RhdGljIHVuc2lnbmVkIGludCBkb25l
Oworc3RhdGljIHVuc2lnbmVkIGludCByb3VuZF9kdXJhdGlvbjsKIAogdm9pZCBzdG9wX3NlbmRl
cihpbnQgc2lnKQogewogCWRvbmUgPSAxOwogfQogCi0jaWZkZWYgX1dJTjMyCi1zdGF0aWMgdm9p
ZAotZ2V0dGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICp0diwgdm9pZCAqaWdub3JlKQorc3RhdGlj
IHRpbWVfdCBjYWxjX3JvdW5kX3RpbWVvdXQoc3RydWN0IHRpbWV2YWwgcm91bmRfc3RhcnQpCiB7
Ci0Jc3RydWN0IHRpbWViIHRiOwotCi0JZnRpbWUoJnRiKTsKLQl0di0+dHZfc2VjID0gKGxvbmcp
dGIudGltZTsKLSAJdHYtPnR2X3VzZWMgPSB0Yi5taWxsaXRtICogMTAwMDsKKwl0aW1lX3Qgcm91
bmRfdGltZW91dCA9IHJvdW5kX3N0YXJ0LnR2X3NlYyArIHJvdW5kX2R1cmF0aW9uOworCWlmIChy
b3VuZF9zdGFydC50dl91c2VjID49IDUwMDAwMCkgeworCQlyb3VuZF90aW1lb3V0Kys7CisJfQor
CXJldHVybiByb3VuZF90aW1lb3V0OwogfQotI2VuZGlmCiAKICNpZmRlZiBfV0lOMzIKIHN0YXRp
YyBEV09SRCBXSU5BUEkKQEAgLTEzOCw5ICsxNjIsOCBAQCBoYW5kbGVfY29ubmVjdGlvbih2b2lk
ICphcmcpCiB7CiAJc3NpemVfdCBuOwogCWNoYXIgKmJ1ZjsKLSNpZmRlZiBfV0lOMzIKLQlIQU5E
TEUgdGlkOwotI2Vsc2UKKworI2lmICFkZWZpbmVkKF9XSU4zMikKIAlwdGhyZWFkX3QgdGlkOwog
I2VuZGlmCiAJc3RydWN0IHNvY2tldCAqY29ubl9zb2NrOwpAQCAtMTU3LDExICsxODAsMTYgQEAg
aGFuZGxlX2Nvbm5lY3Rpb24odm9pZCAqYXJnKQogCXVuc2lnbmVkIGludCBpbmZvdHlwZTsKIAlz
dHJ1Y3Qgc2N0cF9yZWN2dl9ybiBybjsKIAlzb2NrbGVuX3QgaW5mb2xlbiA9IHNpemVvZihzdHJ1
Y3Qgc2N0cF9yZWN2dl9ybik7CisJdW5zaWduZWQgbG9uZyBtZXNzYWdlcyA9IDA7CisJdW5zaWdu
ZWQgbG9uZyBsb25nIGZpcnN0X2xlbmd0aCA9IDA7CisJdW5zaWduZWQgbG9uZyBsb25nIHN1bSA9
IDA7CisJdW5zaWduZWQgbG9uZyBsb25nIHJvdW5kX2J5dGVzOworCXN0cnVjdCB0aW1ldmFsIHJv
dW5kX3N0YXJ0OworCXRpbWVfdCByb3VuZF90aW1lb3V0ID0gMDsKIAogCWNvbm5fc29jayA9ICoo
c3RydWN0IHNvY2tldCAqKilhcmc7Ci0jaWZkZWYgX1dJTjMyCi0JdGlkID0gR2V0Q3VycmVudFRo
cmVhZCgpOwotI2Vsc2UKKworI2lmICFkZWZpbmVkKF9XSU4zMikKIAl0aWQgPSBwdGhyZWFkX3Nl
bGYoKTsKIAlwdGhyZWFkX2RldGFjaCh0aWQpOwogI2VuZGlmCkBAIC0xNzUsNiArMjAzLDExIEBA
IGhhbmRsZV9jb25uZWN0aW9uKHZvaWQgKmFyZykKIAkgICAgICAgICAgICAgICAgICZpbmZvbGVu
LCAmaW5mb3R5cGUsICZmbGFncyk7CiAKIAlnZXR0aW1lb2ZkYXkoJnRpbWVfc3RhcnQsIE5VTEwp
OworCWlmIChyb3VuZF9kdXJhdGlvbiA+IDApIHsKKwkJcm91bmRfYnl0ZXMgPSAwOworCQlnZXR0
aW1lb2ZkYXkoJnJvdW5kX3N0YXJ0LCBOVUxMKTsKKwkJcm91bmRfdGltZW91dCA9IGNhbGNfcm91
bmRfdGltZW91dChyb3VuZF9zdGFydCk7CisJfQogCXdoaWxlIChuID4gMCkgewogCQlyZWN2X2Nh
bGxzKys7CiAJCWlmIChmbGFncyAmIE1TR19OT1RJRklDQVRJT04pIHsKQEAgLTE4MiwxMCArMjE1
LDkgQEAgaGFuZGxlX2Nvbm5lY3Rpb24odm9pZCAqYXJnKQogCQkJZ2V0dGltZW9mZGF5KCZub3Rl
X3RpbWUsIE5VTEwpOwogCQkJcHJpbnRmKCJub3RpZmljYXRpb24gYXJyaXZlZCBhdCAlZlxuIiwg
bm90ZV90aW1lLnR2X3NlYysoZG91YmxlKW5vdGVfdGltZS50dl91c2VjLzEwMDAwMDAuMCk7CiAJ
CQlzbnAgPSAodW5pb24gc2N0cF9ub3RpZmljYXRpb24gKilidWY7Ci0JCQlpZiAoc25wLT5zbl9o
ZWFkZXIuc25fdHlwZT09U0NUUF9QRUVSX0FERFJfQ0hBTkdFKQotCQkJeworCQkJaWYgKHNucC0+
c25faGVhZGVyLnNuX3R5cGUgPT0gU0NUUF9QRUVSX0FERFJfQ0hBTkdFKSB7CiAJCQkJc3BjID0g
JnNucC0+c25fcGFkZHJfY2hhbmdlOwotCQkJCXByaW50ZigiU0NUUF9QRUVSX0FERFJfQ0hBTkdF
OiBzdGF0ZT0lZCwgZXJyb3I9JWRcbiIsc3BjLT5zcGNfc3RhdGUsIHNwYy0+c3BjX2Vycm9yKTsK
KwkJCQlwcmludGYoIlNDVFBfUEVFUl9BRERSX0NIQU5HRTogc3RhdGU9JXUsIGVycm9yPSV1XG4i
LHNwYy0+c3BjX3N0YXRlLCBzcGMtPnNwY19lcnJvcik7CiAJCQl9CiAJCX0gZWxzZSB7CiAJCQlp
ZiAodmVyeV92ZXJib3NlKSB7CkBAIC0xOTQsMTAgKzIyNiwyNCBAQCBoYW5kbGVfY29ubmVjdGlv
bih2b2lkICphcmcpCiAJCQlzdW0gKz0gbjsKIAkJCWlmIChmbGFncyAmIE1TR19FT1IpIHsKIAkJ
CQltZXNzYWdlcysrOwotCQkJCWlmIChmaXJzdF9sZW5ndGggPT0gMCkKKwkJCQlpZiAoZmlyc3Rf
bGVuZ3RoID09IDApIHsKIAkJCQkJZmlyc3RfbGVuZ3RoID0gc3VtOworCQkJCX0KKwkJCQlpZiAo
cm91bmRfZHVyYXRpb24gPiAwKSB7CisJCQkJCXJvdW5kX2J5dGVzICs9IGZpcnN0X2xlbmd0aDsK
KwkJCQl9CiAJCQl9CiAJCX0KKwkJaWYgKHJvdW5kX2R1cmF0aW9uID4gMCAmJiByb3VuZF90aW1l
b3V0IDw9IHRpbWUoTlVMTCkpIHsKKwkJCWdldHRpbWVvZmRheSgmdGltZV9ub3csIE5VTEwpOwor
CQkJdGltZXJzdWIoJnRpbWVfbm93LCAmcm91bmRfc3RhcnQsICZ0aW1lX2RpZmYpOworCQkJc2Vj
b25kcyA9IHRpbWVfZGlmZi50dl9zZWMgKyAoZG91YmxlKXRpbWVfZGlmZi50dl91c2VjLzEwMDAw
MDAuMDsKKwkJCWZwcmludGYoc3Rkb3V0LCAidGhyb3VnaHB1dCBmb3IgdGhlIGxhc3QgJWYgc2Vj
b25kczogJWYgQi9zXG4iLCBzZWNvbmRzLCAoZG91YmxlKXJvdW5kX2J5dGVzIC8gc2Vjb25kcyk7
CisKKwkJCXJvdW5kX2J5dGVzID0gMDsKKwkJCWdldHRpbWVvZmRheSgmcm91bmRfc3RhcnQsIE5V
TEwpOworCQkJcm91bmRfdGltZW91dCA9IGNhbGNfcm91bmRfdGltZW91dChyb3VuZF9zdGFydCk7
CisJCX0KIAkJZmxhZ3MgPSAwOwogCQlsZW4gPSAoc29ja2xlbl90KXNpemVvZihzdHJ1Y3Qgc29j
a2FkZHJfaW4pOwogCQlpbmZvbGVuID0gc2l6ZW9mKHN0cnVjdCBzY3RwX3JlY3Z2X3JuKTsKQEAg
LTIwNiwxMyArMjUyLDE0IEBAIGhhbmRsZV9jb25uZWN0aW9uKHZvaWQgKmFyZykKIAkJbiA9IHVz
cnNjdHBfcmVjdnYoY29ubl9zb2NrLCAodm9pZCAqKSBidWYsIEJVRkZFUlNJWkUsIChzdHJ1Y3Qg
c29ja2FkZHIgKikgJmFkZHIsICZsZW4sICh2b2lkICopJnJuLAogCQkgICAgICAgICAgICAgICAg
ICAmaW5mb2xlbiwgJmluZm90eXBlLCAmZmxhZ3MpOwogCX0KLQlpZiAobiA8IDApCisJaWYgKG4g
PCAwKSB7CiAJCXBlcnJvcigic2N0cF9yZWN2diIpOworCX0KIAlnZXR0aW1lb2ZkYXkoJnRpbWVf
bm93LCBOVUxMKTsKIAl0aW1lcnN1YigmdGltZV9ub3csICZ0aW1lX3N0YXJ0LCAmdGltZV9kaWZm
KTsKIAlzZWNvbmRzID0gdGltZV9kaWZmLnR2X3NlYyArIChkb3VibGUpdGltZV9kaWZmLnR2X3Vz
ZWMvMTAwMDAwMC4wOwotCXByaW50ZigiJWxsdSwgJWx1LCAlbHUsICVsdSwgJWxsdSwgJWYsICVm
XG4iLAotCSAgICAgICAgZmlyc3RfbGVuZ3RoLCBtZXNzYWdlcywgcmVjdl9jYWxscywgbm90aWZp
Y2F0aW9ucywgc3VtLCBzZWNvbmRzLCAoZG91YmxlKWZpcnN0X2xlbmd0aCAqIChkb3VibGUpbWVz
c2FnZXMgLyBzZWNvbmRzKTsKKwlwcmludGYoIiVsbHUsICVsdSwgJWx1LCAlbGx1LCAlZiwgJWYs
ICVsdVxuIiwKKwkgICAgICAgIGZpcnN0X2xlbmd0aCwgbWVzc2FnZXMsIHJlY3ZfY2FsbHMsIHN1
bSwgc2Vjb25kcywgKGRvdWJsZSlmaXJzdF9sZW5ndGggKiAoZG91YmxlKW1lc3NhZ2VzIC8gc2Vj
b25kcywgbm90aWZpY2F0aW9ucyk7CiAJZmZsdXNoKHN0ZG91dCk7CiAJdXNyc2N0cF9jbG9zZShj
b25uX3NvY2spOwogCWZyZWUoYnVmKTsKQEAgLTIyNCwxMCArMjcxLDEwIEBAIGhhbmRsZV9jb25u
ZWN0aW9uKHZvaWQgKmFyZykKIH0KIAogc3RhdGljIGludAotc2VuZF9jYihzdHJ1Y3Qgc29ja2V0
ICpzb2NrLCB1aW50MzJfdCBzYl9mcmVlKSB7Ci0Jc3RydWN0IHNjdHBfc25kaW5mbyBzbmRpbmZv
Oworc2VuZF9jYihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCB1aW50MzJfdCBzYl9mcmVlLCB2b2lkICp1
bHBfaW5mbykgeworCXN0cnVjdCBzY3RwX3NlbmR2X3NwYSBzZW5kdl9zcGE7CiAKLQlpZiAoKG1l
c3NhZ2VzID09IDApICYgdmVyYm9zZSkgeworCWlmICgoY2JfbWVzc2FnZXMgPT0gMCkgJiYgdmVy
Ym9zZSkgewogCQlwcmludGYoIlN0YXJ0IHNlbmRpbmcgIik7CiAJCWlmIChudW1iZXJfb2ZfbWVz
c2FnZXMgPiAwKSB7CiAJCQlwcmludGYoIiVsZCBtZXNzYWdlcyAiLCAobG9uZyludW1iZXJfb2Zf
bWVzc2FnZXMpOwpAQCAtMjM5LDU3ICsyODYsODggQEAgc2VuZF9jYihzdHJ1Y3Qgc29ja2V0ICpz
b2NrLCB1aW50MzJfdCBzYl9mcmVlKSB7CiAJCWZmbHVzaChzdGRvdXQpOwogCX0KIAotCXNuZGlu
Zm8uc25kX3NpZCA9IDA7Ci0Jc25kaW5mby5zbmRfZmxhZ3MgPSAwOworCXNlbmR2X3NwYS5zZW5k
dl9mbGFncyA9IFNDVFBfU0VORF9TTkRJTkZPX1ZBTElEIHwgU0NUUF9TRU5EX1BSSU5GT19WQUxJ
RDsKKworCXNlbmR2X3NwYS5zZW5kdl9zbmRpbmZvLnNuZF9zaWQgPSAwOworCXNlbmR2X3NwYS5z
ZW5kdl9zbmRpbmZvLnNuZF9mbGFncyA9IDA7CiAJaWYgKHVub3JkZXJlZCAhPSAwKSB7Ci0JCXNu
ZGluZm8uc25kX2ZsYWdzIHw9IFNDVFBfVU5PUkRFUkVEOworCQlzZW5kdl9zcGEuc2VuZHZfc25k
aW5mby5zbmRfZmxhZ3MgfD0gU0NUUF9VTk9SREVSRUQ7CiAJfQotCXNuZGluZm8uc25kX3BwaWQg
PSAwOwotCXNuZGluZm8uc25kX2NvbnRleHQgPSAwOwotCXNuZGluZm8uc25kX2Fzc29jX2lkID0g
MDsKKwlzZW5kdl9zcGEuc2VuZHZfc25kaW5mby5zbmRfcHBpZCA9IDA7CisJc2VuZHZfc3BhLnNl
bmR2X3NuZGluZm8uc25kX2NvbnRleHQgPSAwOworCXNlbmR2X3NwYS5zZW5kdl9zbmRpbmZvLnNu
ZF9hc3NvY19pZCA9IDA7CisKKwlzZW5kdl9zcGEuc2VuZHZfcHJpbmZvLnByX3BvbGljeSA9IDA7
CisJc3dpdGNoIChwb2xpY3kpIHsKKyNpZmRlZiBTQ1RQX1BSX1NDVFBfTk9ORQorCWNhc2UgMDoK
KwkJc2VuZHZfc3BhLnNlbmR2X3ByaW5mby5wcl9wb2xpY3kgPSBTQ1RQX1BSX1NDVFBfTk9ORTsK
KwkJYnJlYWs7CisjZW5kaWYKKyNpZmRlZiBTQ1RQX1BSX1NDVFBfVFRMCisJY2FzZSAxOgorCQlz
ZW5kdl9zcGEuc2VuZHZfcHJpbmZvLnByX3BvbGljeSA9IFNDVFBfUFJfU0NUUF9UVEw7CisJCWJy
ZWFrOworI2VuZGlmCisjaWZkZWYgU0NUUF9QUl9TQ1RQX1JUWAorCWNhc2UgMjoKKwkJc2VuZHZf
c3BhLnNlbmR2X3ByaW5mby5wcl9wb2xpY3kgPSBTQ1RQX1BSX1NDVFBfUlRYOworCQlicmVhazsK
KyNlbmRpZgorI2lmZGVmIFNDVFBfUFJfU0NUUF9CVUYKKwljYXNlIDM6CisJCXNlbmR2X3NwYS5z
ZW5kdl9wcmluZm8ucHJfcG9saWN5ID0gU0NUUF9QUl9TQ1RQX0JVRjsKKwkJYnJlYWs7CisjZW5k
aWYKKwlkZWZhdWx0OgorCQlwcmludGYoIlVua25vd24gUFItU0NUUCBwb2xpY3kuXG4iKTsKKwkJ
YnJlYWs7CisJfQorCXNlbmR2X3NwYS5zZW5kdl9wcmluZm8ucHJfdmFsdWUgPSB0aW1ldG9saXZl
OwogCi0Jd2hpbGUgKCFkb25lICYmICgobnVtYmVyX29mX21lc3NhZ2VzID09IDApIHx8IChtZXNz
YWdlcyA8IChudW1iZXJfb2ZfbWVzc2FnZXMgLSAxKSkpKSB7CisJd2hpbGUgKCFkb25lICYmICgo
bnVtYmVyX29mX21lc3NhZ2VzID09IDApIHx8IChjYl9tZXNzYWdlcyA8IChudW1iZXJfb2ZfbWVz
c2FnZXMgLSAxKSkpKSB7CiAJCWlmICh2ZXJ5X3ZlcmJvc2UpIHsKLQkJCXByaW50ZigiU2VuZGlu
ZyBtZXNzYWdlIG51bWJlciAlbHUuXG4iLCBtZXNzYWdlcyArIDEpOworCQkJcHJpbnRmKCJTZW5k
aW5nIG1lc3NhZ2UgbnVtYmVyICVsdS5cbiIsIGNiX21lc3NhZ2VzICsgMSk7CiAJCX0KIAogCQlp
ZiAodXNyc2N0cF9zZW5kdihwc29jaywgYnVmZmVyLCBsZW5ndGgsCiAJCSAgICAgICAgICAgICAg
ICAgIChzdHJ1Y3Qgc29ja2FkZHIgKikgJnJlbW90ZV9hZGRyLCAxLAotCQkgICAgICAgICAgICAg
ICAgICAodm9pZCAqKSZzbmRpbmZvLCAoc29ja2xlbl90KXNpemVvZihzdHJ1Y3Qgc2N0cF9zbmRp
bmZvKSwgU0NUUF9TRU5EVl9TTkRJTkZPLAorCQkgICAgICAgICAgICAgICAgICAodm9pZCAqKSZz
ZW5kdl9zcGEsIChzb2NrbGVuX3Qpc2l6ZW9mKHN0cnVjdCBzY3RwX3NlbmR2X3NwYSksIFNDVFBf
U0VORFZfU1BBLAogCQkgICAgICAgICAgICAgICAgICAwKSA8IDApIHsKIAkJCWlmIChlcnJubyAh
PSBFV09VTERCTE9DSyAmJiBlcnJubyAhPSBFQUdBSU4pIHsKIAkJCQlwZXJyb3IoInVzcnNjdHBf
c2VuZHYgKGNiKSIpOwogCQkJCWV4aXQoMSk7CiAJCQl9IGVsc2UgewogCQkJCWlmICh2ZXJ5X3Zl
cmJvc2UpewotCQkJCQlwcmludGYoIkVXT1VMREJMT0NLIG9yIEVBR0FJTiBmb3IgbWVzc2FnZSBu
dW1iZXIgJWx1IC0gd2lsbCByZXRyeVxuIiwgbWVzc2FnZXMgKyAxKTsKKwkJCQkJcHJpbnRmKCJF
V09VTERCTE9DSyBvciBFQUdBSU4gZm9yIG1lc3NhZ2UgbnVtYmVyICVsdSAtIHdpbGwgcmV0cnlc
biIsIGNiX21lc3NhZ2VzICsgMSk7CiAJCQkJfQogCQkJCS8qIHNlbmQgdW50aWwgRVdPVUxEQkxP
Q0sgdGhlbiBleGl0IGNhbGxiYWNrLiAqLwogCQkJCXJldHVybiAoMSk7CiAJCQl9CiAJCX0KLQkJ
bWVzc2FnZXMrKzsKKwkJY2JfbWVzc2FnZXMrKzsKIAl9Ci0JaWYgKChkb25lID09IDEpIHx8ICht
ZXNzYWdlcyA9PSAobnVtYmVyX29mX21lc3NhZ2VzIC0gMSkpKSB7Ci0JCWlmICh2ZXJ5X3ZlcmJv
c2UpCi0JCQlwcmludGYoIlNlbmRpbmcgZmluYWwgbWVzc2FnZSBudW1iZXIgJWx1LlxuIiwgbWVz
c2FnZXMgKyAxKTsKKwlpZiAoKGRvbmUgPT0gMSkgfHwgKGNiX21lc3NhZ2VzID09IChudW1iZXJf
b2ZfbWVzc2FnZXMgLSAxKSkpIHsKKwkJaWYgKHZlcnlfdmVyYm9zZSkgeworCQkJcHJpbnRmKCJT
ZW5kaW5nIGZpbmFsIG1lc3NhZ2UgbnVtYmVyICVsdS5cbiIsIGNiX21lc3NhZ2VzICsgMSk7CisJ
CX0KIAotCQlzbmRpbmZvLnNuZF9mbGFncyB8PSBTQ1RQX0VPRjsKKwkJc2VuZHZfc3BhLnNlbmR2
X3NuZGluZm8uc25kX2ZsYWdzIHw9IFNDVFBfRU9GOwogCQlpZiAodXNyc2N0cF9zZW5kdihwc29j
aywgYnVmZmVyLCBsZW5ndGgsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJnJlbW90ZV9hZGRyLCAxLAot
CQkgICAgICAgICAgICAgICAgICAodm9pZCAqKSZzbmRpbmZvLCAoc29ja2xlbl90KXNpemVvZihz
dHJ1Y3Qgc2N0cF9zbmRpbmZvKSwgU0NUUF9TRU5EVl9TTkRJTkZPLAorCQkgICAgICAgICAgICAg
ICAgICAodm9pZCAqKSZzZW5kdl9zcGEsIChzb2NrbGVuX3Qpc2l6ZW9mKHN0cnVjdCBzY3RwX3Nl
bmR2X3NwYSksIFNDVFBfU0VORFZfU1BBLAogCQkgICAgICAgICAgICAgICAgICAwKSA8IDApIHsK
IAkJCWlmIChlcnJubyAhPSBFV09VTERCTE9DSyAmJiBlcnJubyAhPSBFQUdBSU4pIHsKIAkJCQlw
ZXJyb3IoInVzcnNjdHBfc2VuZHYgKGNiKSIpOwogCQkJCWV4aXQoMSk7CiAJCQl9IGVsc2Ugewog
CQkJCWlmICh2ZXJ5X3ZlcmJvc2UpewotCQkJCQlwcmludGYoIkVXT1VMREJMT0NLIG9yIEVBR0FJ
TiBmb3IgZmluYWwgbWVzc2FnZSBudW1iZXIgJWx1IC0gd2lsbCByZXRyeVxuIiwgbWVzc2FnZXMg
KyAxKTsKKwkJCQkJcHJpbnRmKCJFV09VTERCTE9DSyBvciBFQUdBSU4gZm9yIGZpbmFsIG1lc3Nh
Z2UgbnVtYmVyICVsdSAtIHdpbGwgcmV0cnlcbiIsIGNiX21lc3NhZ2VzICsgMSk7CiAJCQkJfQog
CQkJCS8qIHNlbmQgdW50aWwgRVdPVUxEQkxPQ0sgdGhlbiBleGl0IGNhbGxiYWNrLiAqLwogCQkJ
CXJldHVybiAoMSk7CiAJCQl9CiAJCX0KLQkJbWVzc2FnZXMrKzsKKwkJY2JfbWVzc2FnZXMrKzsK
IAkJZG9uZSA9IDI7CiAJfQogCkBAIC0zMDYsMjEgKzM4NCwyMSBAQCBzZXJ2ZXJfcmVjZWl2ZV9j
YihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCB1bmlvbiBzY3RwX3NvY2tzdG9yZSBhZGRyLCB2b2lkICpk
YXRhLAogCWlmIChkYXRhID09IE5VTEwpIHsKIAkJZ2V0dGltZW9mZGF5KCZub3csIE5VTEwpOwog
CQl0aW1lcnN1Yigmbm93LCAmc3RhcnRfdGltZSwgJmRpZmZfdGltZSk7Ci0JCXNlY29uZHMgPSBk
aWZmX3RpbWUudHZfc2VjICsgKGRvdWJsZSlkaWZmX3RpbWUudHZfdXNlYy8xMDAwMDAwLjA7CisJ
CXNlY29uZHMgPSBkaWZmX3RpbWUudHZfc2VjICsgKGRvdWJsZSlkaWZmX3RpbWUudHZfdXNlYyAv
IDEwMDAwMDAuMDsKIAkJcHJpbnRmKCIlbGx1LCAlbHUsICVsbHUsICVmLCAlZlxuIiwKLQkJCWZp
cnN0X2xlbmd0aCwgbWVzc2FnZXMsIHN1bSwgc2Vjb25kcywgKGRvdWJsZSlmaXJzdF9sZW5ndGgg
KiAoZG91YmxlKW1lc3NhZ2VzIC8gc2Vjb25kcyk7CisJCQljYl9maXJzdF9sZW5ndGgsIGNiX21l
c3NhZ2VzLCBjYl9zdW0sIHNlY29uZHMsIChkb3VibGUpY2JfZmlyc3RfbGVuZ3RoICogKGRvdWJs
ZSljYl9tZXNzYWdlcyAvIHNlY29uZHMpOwogCQl1c3JzY3RwX2Nsb3NlKHNvY2spOwotCQlmaXJz
dF9sZW5ndGggPSAwOwotCQlzdW0gPSAwOwotCQltZXNzYWdlcyA9IDA7CisJCWNiX2ZpcnN0X2xl
bmd0aCA9IDA7CisJCWNiX3N1bSA9IDA7CisJCWNiX21lc3NhZ2VzID0gMDsKIAkJcmV0dXJuICgx
KTsKIAl9Ci0JaWYgKGZpcnN0X2xlbmd0aCA9PSAwKSB7Ci0JCWZpcnN0X2xlbmd0aCA9ICh1bnNp
Z25lZCBpbnQpZGF0YWxlbjsKKwlpZiAoY2JfZmlyc3RfbGVuZ3RoID09IDApIHsKKwkJY2JfZmly
c3RfbGVuZ3RoID0gKHVuc2lnbmVkIGludClkYXRhbGVuOwogCQlnZXR0aW1lb2ZkYXkoJnN0YXJ0
X3RpbWUsIE5VTEwpOwogCX0KLQlzdW0gKz0gZGF0YWxlbjsKLQltZXNzYWdlcysrOworCWNiX3N1
bSArPSBkYXRhbGVuOworCWNiX21lc3NhZ2VzKys7CiAKIAlmcmVlKGRhdGEpOwogCXJldHVybiAo
MSk7CkBAIC0zMzQsMjAgKzQxMiwxMCBAQCBjbGllbnRfcmVjZWl2ZV9jYihzdHJ1Y3Qgc29ja2V0
ICpzb2NrLCB1bmlvbiBzY3RwX3NvY2tzdG9yZSBhZGRyLCB2b2lkICpkYXRhLAogCXJldHVybiAo
MSk7CiB9CiAKLXZvaWQKLWRlYnVnX3ByaW50Zihjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKLXsK
LQl2YV9saXN0IGFwOwotCi0JdmFfc3RhcnQoYXAsIGZvcm1hdCk7Ci0JdnByaW50Zihmb3JtYXQs
IGFwKTsKLQl2YV9lbmQoYXApOwotfQotCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp
CiB7CiAjaWZuZGVmIF9XSU4zMgotCWludCBjOworCWludCBjLCByYzsKICNlbmRpZgogCXNvY2ts
ZW5fdCBhZGRyX2xlbjsKIAlzdHJ1Y3Qgc29ja2FkZHJfaW4gbG9jYWxfYWRkcjsKQEAgLTM2MSw3
ICs0MjksOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJaW50IG5vZGVsYXkg
PSAwOwogCXN0cnVjdCBzY3RwX2Fzc29jX3ZhbHVlIGF2OwogCXN0cnVjdCBzY3RwX3VkcGVuY2Fw
cyBlbmNhcHM7Ci0Jc3RydWN0IHNjdHBfc25kaW5mbyBzbmRpbmZvOworCXN0cnVjdCBzY3RwX3Nl
bmR2X3NwYSBzZW5kdl9zcGE7CisJdW5zaWduZWQgbG9uZyBtZXNzYWdlcyA9IDA7CiAjaWZkZWYg
X1dJTjMyCiAJdW5zaWduZWQgbG9uZyBzcmNBZGRyOwogCUhBTkRMRSB0aWQ7CkBAIC0zODUsMTIg
KzQ1NCwxMyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJdmVyYm9zZSA9IDA7
CiAJdmVyeV92ZXJib3NlID0gMDsKIAlzcmNBZGRyID0gaHRvbmwoSU5BRERSX0FOWSk7CisJcm91
bmRfZHVyYXRpb24gPSAwOwogCiAJbWVtc2V0KCh2b2lkICopICZyZW1vdGVfYWRkciwgMCwgc2l6
ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOwogCW1lbXNldCgodm9pZCAqKSAmbG9jYWxfYWRkciwg
MCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOwogCiAjaWZuZGVmIF9XSU4zMgotCXdoaWxl
ICgoYyA9IGdldG9wdChhcmdjLCBhcmd2LCAiYTpjcDpsOkU6ZjpMOm46UjpTOlQ6dVU6dlZEIikp
ICE9IC0xKQorCXdoaWxlICgoYyA9IGdldG9wdChhcmdjLCBhcmd2LCAiYTpjZDpERTpmOmw6TDpu
OnA6UDpSOlM6dDpUOnVVOnZWIikpICE9IC0xKQogCQlzd2l0Y2goYykgewogCQkJY2FzZSAnYSc6
CiAJCQkJaW5kLnNzYl9hZGFwdGF0aW9uX2luZCA9IGF0b2kob3B0YXJnKTsKQEAgLTM5OCw2ICs0
NjgsMTIgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJY2FzZSAnYyc6CiAJ
CQkJdXNlX2NiID0gMTsKIAkJCQlicmVhazsKKwkJCWNhc2UgJ2QnOgorCQkJCXJvdW5kX2R1cmF0
aW9uID0gYXRvaShvcHRhcmcpOworCQkJCWJyZWFrOworCQkJY2FzZSAnRCc6CisJCQkJbm9kZWxh
eSA9IDE7CisJCQkJYnJlYWs7CiAJCQljYXNlICdsJzoKIAkJCQlsZW5ndGggPSBhdG9pKG9wdGFy
Zyk7CiAJCQkJYnJlYWs7CkBAIC00MDcsNiArNDgzLDkgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNo
YXIgKiphcmd2KQogCQkJY2FzZSAncCc6CiAJCQkJcG9ydCA9IGF0b2kob3B0YXJnKTsKIAkJCQli
cmVhazsKKwkJCWNhc2UgJ1AnOgorCQkJCXBvbGljeSA9IGF0b2kob3B0YXJnKTsKKwkJCQlicmVh
azsKIAkJCWNhc2UgJ0UnOgogCQkJCWxvY2FsX3VkcF9wb3J0ID0gYXRvaShvcHRhcmcpOwogCQkJ
CWJyZWFrOwpAQCAtNDI0LDYgKzUwMyw5IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJn
dikKIAkJCWNhc2UgJ1MnOgogCQkJCXNuZGJ1ZnNpemUgPSBhdG9pKG9wdGFyZyk7CiAJCQkJYnJl
YWs7CisJCQljYXNlICd0JzoKKwkJCQl0aW1ldG9saXZlID0gYXRvaShvcHRhcmcpOworCQkJCWJy
ZWFrOwogCQkJY2FzZSAnVCc6CiAJCQkJcnVudGltZSA9IGF0b2kob3B0YXJnKTsKIAkJCQludW1i
ZXJfb2ZfbWVzc2FnZXMgPSAwOwpAQCAtNDQxLDkgKzUyMyw2IEBAIGludCBtYWluKGludCBhcmdj
LCBjaGFyICoqYXJndikKIAkJCQl2ZXJib3NlID0gMTsKIAkJCQl2ZXJ5X3ZlcmJvc2UgPSAxOwog
CQkJCWJyZWFrOwotCQkJY2FzZSAnRCc6Ci0JCQkJbm9kZWxheSA9IDE7Ci0JCQkJYnJlYWs7CiAJ
CQlkZWZhdWx0OgogCQkJCWZwcmludGYoc3RkZXJyLCAiJXMiLCBVc2FnZSk7CiAJCQkJZXhpdCgx
KTsKQEAgLTQ3OSw2ICs1NTgsMTQgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQog
CQkJCQlvcHQgPSBhcmd2W29wdGluZF07CiAJCQkJCXBvcnQgPSBhdG9pKG9wdCk7CiAJCQkJCWJy
ZWFrOworCQkJCWNhc2UgJ1AnOgorCQkJCQlpZiAoKytvcHRpbmQgPj0gYXJnYykgeworCQkJCQkJ
cHJpbnRmKCIlcyIsIFVzYWdlKTsKKwkJCQkJCWV4aXQoMSk7CisJCQkJCX0KKwkJCQkJb3B0ID0g
YXJndltvcHRpbmRdOworCQkJCQlwb2xpY3kgPSBhdG9pKG9wdCk7CisJCQkJCWJyZWFrOwogCQkJ
CWNhc2UgJ24nOgogCQkJCQlpZiAoKytvcHRpbmQgPj0gYXJnYykgewogCQkJCQkJcHJpbnRmKCIl
cyIsIFVzYWdlKTsKQEAgLTUzNSw2ICs2MjIsMTQgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIg
Kiphcmd2KQogCQkJCQlvcHQgPSBhcmd2W29wdGluZF07CiAJCQkJCXNuZGJ1ZnNpemUgPSBhdG9p
KG9wdCk7CiAJCQkJCWJyZWFrOworCQkJCWNhc2UgJ3QnOgorCQkJCQlpZiAoKytvcHRpbmQgPj0g
YXJnYykgeworCQkJCQkJcHJpbnRmKCIlcyIsIFVzYWdlKTsKKwkJCQkJCWV4aXQoMSk7CisJCQkJ
CX0KKwkJCQkJb3B0ID0gYXJndltvcHRpbmRdOworCQkJCQl0aW1ldG9saXZlID0gYXRvaShvcHQp
OworCQkJCQlicmVhazsKIAkJCQljYXNlICdUJzoKIAkJCQkJaWYgKCsrb3B0aW5kID49IGFyZ2Mp
IHsKIAkJCQkJCXByaW50ZigiJXMiLCBVc2FnZSk7CkBAIC01ODIsMTEgKzY3NywxMiBAQCBpbnQg
bWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJbG9jYWxfYWRkci5zaW5fcG9ydCA9IGh0b25z
KGxvY2FsX3BvcnQpOwogCWxvY2FsX2FkZHIuc2luX2FkZHIuc19hZGRyID0gc3JjQWRkcjsKIAot
CXVzcnNjdHBfaW5pdChsb2NhbF91ZHBfcG9ydCwgTlVMTCwgZGVidWdfcHJpbnRmKTsKKwl1c3Jz
Y3RwX2luaXQobG9jYWxfdWRwX3BvcnQsIE5VTEwsIGRlYnVnX3ByaW50Zl9zdGFjayk7CiAjaWZk
ZWYgU0NUUF9ERUJVRwogCXVzcnNjdHBfc3lzY3RsX3NldF9zY3RwX2RlYnVnX29uKFNDVFBfREVC
VUdfQUxMKTsKICNlbmRpZgogCXVzcnNjdHBfc3lzY3RsX3NldF9zY3RwX2JsYWNraG9sZSgyKTsK
Kwl1c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9ub19jc3VtX29uX2xvb3BiYWNrKDApOwogCXVzcnNj
dHBfc3lzY3RsX3NldF9zY3RwX2VuYWJsZV9zYWNrX2ltbWVkaWF0ZWx5KDEpOwogCiAJaWYgKGNs
aWVudCkgewpAQCAtNjUwLDMyICs3NDYsMzcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiph
cmd2KQogCQkJaWYgKHVzZV9jYikgewogCQkJCXN0cnVjdCBzb2NrZXQgKmNvbm5fc29jazsKIAot
CQkJCWlmICgoY29ubl9zb2NrID0gdXNyc2N0cF9hY2NlcHQocHNvY2ssIChzdHJ1Y3Qgc29ja2Fk
ZHIgKikgJnJlbW90ZV9hZGRyLCAmYWRkcl9sZW4pKT09IE5VTEwpIHsKKwkJCQlpZiAoKGNvbm5f
c29jayA9IHVzcnNjdHBfYWNjZXB0KHBzb2NrLCAoc3RydWN0IHNvY2thZGRyICopICZyZW1vdGVf
YWRkciwgJmFkZHJfbGVuKSkgPT0gTlVMTCkgewogCQkJCQlwZXJyb3IoInVzcnNjdHBfYWNjZXB0
Iik7CiAJCQkJCWNvbnRpbnVlOwogCQkJCX0KIAkJCX0gZWxzZSB7CiAJCQkJc3RydWN0IHNvY2tl
dCAqKmNvbm5fc29jazsKIAotCQkJCWNvbm5fc29jayA9IChzdHJ1Y3Qgc29ja2V0ICoqKW1hbGxv
YyhzaXplb2Yoc3RydWN0IHNvY2tldCAqKSk7Ci0JCQkJaWYgKCgqY29ubl9zb2NrID0gdXNyc2N0
cF9hY2NlcHQocHNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikgJnJlbW90ZV9hZGRyLCAmYWRkcl9s
ZW4pKT09IE5VTEwpIHsKKwkJCQljb25uX3NvY2sgPSAoc3RydWN0IHNvY2tldCAqKikgbWFsbG9j
KHNpemVvZihzdHJ1Y3Qgc29ja2V0ICopKTsKKwkJCQlpZiAoKCpjb25uX3NvY2sgPSB1c3JzY3Rw
X2FjY2VwdChwc29jaywgKHN0cnVjdCBzb2NrYWRkciAqKSAmcmVtb3RlX2FkZHIsICZhZGRyX2xl
bikpID09IE5VTEwpIHsKIAkJCQkJcGVycm9yKCJ1c3JzY3RwX2FjY2VwdCIpOwogCQkJCQljb250
aW51ZTsKIAkJCQl9CiAjaWZkZWYgX1dJTjMyCi0JCQkJdGlkID0gQ3JlYXRlVGhyZWFkKE5VTEws
IDAsICZoYW5kbGVfY29ubmVjdGlvbiwgKHZvaWQgKiljb25uX3NvY2ssIDAsIE5VTEwpOworCQkJ
CWlmICgodGlkID0gQ3JlYXRlVGhyZWFkKE5VTEwsIDAsICZoYW5kbGVfY29ubmVjdGlvbiwgKHZv
aWQgKiljb25uX3NvY2ssIDAsIE5VTEwpKSA9PSBOVUxMKSB7CisJCQkJCWZwcmludGYoc3RkZXJy
LCAiQ3JlYXRlVGhyZWFkKCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBHZXRMYXN0RXJyb3Io
KSk7CiAjZWxzZQotCQkJCXB0aHJlYWRfY3JlYXRlKCZ0aWQsIE5VTEwsICZoYW5kbGVfY29ubmVj
dGlvbiwgKHZvaWQgKiljb25uX3NvY2spOworCQkJCWlmICgocmMgPSBwdGhyZWFkX2NyZWF0ZSgm
dGlkLCBOVUxMLCAmaGFuZGxlX2Nvbm5lY3Rpb24sICh2b2lkICopY29ubl9zb2NrKSkgIT0gMCkg
eworCQkJCQlmcHJpbnRmKHN0ZGVyciwgInB0aHJlYWRfY3JlYXRlOiAlc1xuIiwgc3RyZXJyb3Io
cmMpKTsKICNlbmRpZgorCQkJCQl1c3JzY3RwX2Nsb3NlKCpjb25uX3NvY2spOworCQkJCQljb250
aW51ZTsKKwkJCQl9CiAJCQl9CiAJCQlpZiAodmVyYm9zZSkgewotCQkJCS8vIGNvbnN0IGNoYXIg
KmluZXRfbnRvcChpbnQgYWYsIGNvbnN0IHZvaWQgKnNyYywgY2hhciAqZHN0LCBzb2NrbGVuX3Qg
c2l6ZSkKLQkJCQkvL2luZXRfbnRvYShyZW1vdGVfYWRkci5zaW5fYWRkcikKKwkJCQkvKiBjb25z
dCBjaGFyICppbmV0X250b3AoaW50IGFmLCBjb25zdCB2b2lkICpzcmMsIGNoYXIgKmRzdCwgc29j
a2xlbl90IHNpemUpCisJCQkJaW5ldF9udG9hKHJlbW90ZV9hZGRyLnNpbl9hZGRyKSAqLwogCQkJ
CWNoYXIgYWRkcmJ1ZltJTkVUX0FERFJTVFJMRU5dOwogCQkJCXByaW50ZigiQ29ubmVjdGlvbiBh
Y2NlcHRlZCBmcm9tICVzOiVkXG4iLCBpbmV0X250b3AoQUZfSU5FVCwgJihyZW1vdGVfYWRkci5z
aW5fYWRkciksIGFkZHJidWYsIElORVRfQUREUlNUUkxFTiksIG50b2hzKHJlbW90ZV9hZGRyLnNp
bl9wb3J0KSk7CiAJCQl9CiAJCX0KLQkJLy91c3JzY3RwX2Nsb3NlKHBzb2NrKTsgLy8gdW5yZWFj
aGFibGUKKwkJLyogdXNyc2N0cF9jbG9zZShwc29jayk7ICB1bnJlYWNoYWJsZSAqLwogCX0gZWxz
ZSB7CiAJCW1lbXNldCgmZW5jYXBzLCAwLCBzaXplb2Yoc3RydWN0IHNjdHBfdWRwZW5jYXBzKSk7
CiAJCWVuY2Fwcy5zdWVfYWRkcmVzcy5zc19mYW1pbHkgPSBBRl9JTkVUOwpAQCAtNzQxLDEzICs4
NDIsMTMgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJc2lnbmFsKFNJR0FM
Uk0sIHN0b3Bfc2VuZGVyKTsKIAkJCWFsYXJtKHJ1bnRpbWUpOwogI2Vsc2UKLQkJCXByaW50Zigi
WW91IGNhbm5vdCBzZXQgdGhlIHJ1bnRpbWUgaW4gV2luZG93cyB5ZXRcbiIpOworCQkJZnByaW50
ZihzdGRlcnIsICJZb3UgY2Fubm90IHNldCB0aGUgcnVudGltZSBpbiBXaW5kb3dzIHlldFxuIik7
CiAJCQlleGl0KC0xKTsKICNlbmRpZgogCQl9CiAKIAkJaWYgKHVzZV9jYikgewotCQkJd2hpbGUg
KGRvbmUgPCAyICYmIChtZXNzYWdlcyA8IChudW1iZXJfb2ZfbWVzc2FnZXMgLSAxKSkpIHsKKwkJ
CXdoaWxlIChkb25lIDwgMiAmJiAoY2JfbWVzc2FnZXMgPCAobnVtYmVyX29mX21lc3NhZ2VzIC0g
MSkpKSB7CiAjaWZkZWYgX1dJTjMyCiAJCQkJU2xlZXAoMTAwMCk7CiAjZWxzZQpAQCAtNzU1LDE0
ICs4NTYsNDUgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogI2VuZGlmCiAJCQl9
CiAJCX0gZWxzZSB7Ci0JCQlzbmRpbmZvLnNuZF9zaWQgPSAwOwotCQkJc25kaW5mby5zbmRfZmxh
Z3MgPSAwOworCQkJc2VuZHZfc3BhLnNlbmR2X2ZsYWdzID0gU0NUUF9TRU5EX1NORElORk9fVkFM
SUQgfCBTQ1RQX1NFTkRfUFJJTkZPX1ZBTElEOworCisJCQlzZW5kdl9zcGEuc2VuZHZfc25kaW5m
by5zbmRfc2lkID0gMDsKKwkJCXNlbmR2X3NwYS5zZW5kdl9zbmRpbmZvLnNuZF9mbGFncyA9IDA7
CiAJCQlpZiAodW5vcmRlcmVkICE9IDApIHsKLQkJCQlzbmRpbmZvLnNuZF9mbGFncyB8PSBTQ1RQ
X1VOT1JERVJFRDsKKwkJCQlzZW5kdl9zcGEuc2VuZHZfc25kaW5mby5zbmRfZmxhZ3MgfD0gU0NU
UF9VTk9SREVSRUQ7CiAJCQl9Ci0JCQlzbmRpbmZvLnNuZF9wcGlkID0gMDsKLQkJCXNuZGluZm8u
c25kX2NvbnRleHQgPSAwOwotCQkJc25kaW5mby5zbmRfYXNzb2NfaWQgPSAwOworCQkJc2VuZHZf
c3BhLnNlbmR2X3NuZGluZm8uc25kX3BwaWQgPSAwOworCQkJc2VuZHZfc3BhLnNlbmR2X3NuZGlu
Zm8uc25kX2NvbnRleHQgPSAwOworCQkJc2VuZHZfc3BhLnNlbmR2X3NuZGluZm8uc25kX2Fzc29j
X2lkID0gMDsKKworCQkJc2VuZHZfc3BhLnNlbmR2X3ByaW5mby5wcl9wb2xpY3kgPSAwOworCQkJ
c3dpdGNoIChwb2xpY3kpIHsKKyNpZmRlZiBTQ1RQX1BSX1NDVFBfTk9ORQorCQkJY2FzZSAwOgor
CQkJCXNlbmR2X3NwYS5zZW5kdl9wcmluZm8ucHJfcG9saWN5ID0gU0NUUF9QUl9TQ1RQX05PTkU7
CisJCQkJYnJlYWs7CisjZW5kaWYKKyNpZmRlZiBTQ1RQX1BSX1NDVFBfVFRMCisJCQljYXNlIDE6
CisJCQkJc2VuZHZfc3BhLnNlbmR2X3ByaW5mby5wcl9wb2xpY3kgPSBTQ1RQX1BSX1NDVFBfVFRM
OworCQkJCWJyZWFrOworI2VuZGlmCisjaWZkZWYgU0NUUF9QUl9TQ1RQX1JUWAorCQkJY2FzZSAy
OgorCQkJCXNlbmR2X3NwYS5zZW5kdl9wcmluZm8ucHJfcG9saWN5ID0gU0NUUF9QUl9TQ1RQX1JU
WDsKKwkJCQlicmVhazsKKyNlbmRpZgorI2lmZGVmIFNDVFBfUFJfU0NUUF9CVUYKKwkJCWNhc2Ug
MzoKKwkJCQlzZW5kdl9zcGEuc2VuZHZfcHJpbmZvLnByX3BvbGljeSA9IFNDVFBfUFJfU0NUUF9C
VUY7CisJCQkJYnJlYWs7CisjZW5kaWYKKwkJCWRlZmF1bHQ6CisJCQkJcHJpbnRmKCJVbmtub3du
IFBSLVNDVFAgcG9saWN5LlxuIik7CisJCQkJYnJlYWs7CisJCQl9CisJCQlzZW5kdl9zcGEuc2Vu
ZHZfcHJpbmZvLnByX3ZhbHVlID0gdGltZXRvbGl2ZTsKKwogCQkJaWYgKHZlcmJvc2UpIHsKIAkJ
CQlwcmludGYoIlN0YXJ0IHNlbmRpbmcgIik7CiAJCQkJaWYgKG51bWJlcl9vZl9tZXNzYWdlcyA+
IDApIHsKQEAgLTc4MCw3ICs5MTIsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp
CiAJCQkJfQogCiAJCQkJaWYgKHVzcnNjdHBfc2VuZHYocHNvY2ssIGJ1ZmZlciwgbGVuZ3RoLCAo
c3RydWN0IHNvY2thZGRyICopICZyZW1vdGVfYWRkciwgMSwKLQkJCQkgICAgICAgICAgICAgICAg
ICAodm9pZCAqKSZzbmRpbmZvLCAoc29ja2xlbl90KXNpemVvZihzdHJ1Y3Qgc2N0cF9zbmRpbmZv
KSwgU0NUUF9TRU5EVl9TTkRJTkZPLAorCQkJCSAgICAgICAgICAgICAgICAgICh2b2lkICopJnNl
bmR2X3NwYSwgKHNvY2tsZW5fdClzaXplb2Yoc3RydWN0IHNjdHBfc2VuZHZfc3BhKSwgU0NUUF9T
RU5EVl9TUEEsCiAJCQkJICAgICAgICAgICAgICAgICAgMCkgPCAwKSB7CiAJCQkJCXBlcnJvcigi
dXNyc2N0cF9zZW5kdiIpOwogCQkJCQlleGl0KDEpOwpAQCAtNzkxLDkgKzkyMyw5IEBAIGludCBt
YWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCQlwcmludGYoIlNlbmRpbmcgbWVzc2FnZSBu
dW1iZXIgJWx1LlxuIiwgbWVzc2FnZXMgKyAxKTsKIAkJCX0KIAotCQkJc25kaW5mby5zbmRfZmxh
Z3MgfD0gU0NUUF9FT0Y7CisJCQlzZW5kdl9zcGEuc2VuZHZfc25kaW5mby5zbmRfZmxhZ3MgfD0g
U0NUUF9FT0Y7CiAJCQlpZiAodXNyc2N0cF9zZW5kdihwc29jaywgYnVmZmVyLCBsZW5ndGgsIChz
dHJ1Y3Qgc29ja2FkZHIgKikgJnJlbW90ZV9hZGRyLCAxLAotCQkJICAgICAgICAgICAgICAgICAg
KHZvaWQgKikmc25kaW5mbywgKHNvY2tsZW5fdClzaXplb2Yoc3RydWN0IHNjdHBfc25kaW5mbyks
IFNDVFBfU0VORFZfU05ESU5GTywKKwkJCSAgICAgICAgICAgICAgICAgICh2b2lkICopJnNlbmR2
X3NwYSwgKHNvY2tsZW5fdClzaXplb2Yoc3RydWN0IHNjdHBfc2VuZHZfc3BhKSwgU0NUUF9TRU5E
Vl9TUEEsCiAJCQkgICAgICAgICAgICAgICAgICAwKSA8IDApIHsKIAkJCQlwZXJyb3IoInVzcnNj
dHBfc2VuZHYiKTsKIAkJCQlleGl0KDEpOwpAQCAtODEwLDcgKzk0Miw3IEBAIGludCBtYWluKGlu
dCBhcmdjLCBjaGFyICoqYXJndikKIAkJZ2V0dGltZW9mZGF5KCZ0aW1lX25vdywgTlVMTCk7CiAJ
CXRpbWVyc3ViKCZ0aW1lX25vdywgJnRpbWVfc3RhcnQsICZ0aW1lX2RpZmYpOwogCQlzZWNvbmRz
ID0gdGltZV9kaWZmLnR2X3NlYyArIChkb3VibGUpdGltZV9kaWZmLnR2X3VzZWMvMTAwMDAwMDsK
LQkJcHJpbnRmKCIlcyBvZiAlbGQgbWVzc2FnZXMgb2YgbGVuZ3RoICV1IHRvb2sgJWYgc2Vjb25k
cy5cbiIsCisJCXByaW50ZigiJXMgb2YgJWx1IG1lc3NhZ2VzIG9mIGxlbmd0aCAlZCB0b29rICVm
IHNlY29uZHMuXG4iLAogCQkgICAgICAgIlNlbmRpbmciLCBtZXNzYWdlcywgbGVuZ3RoLCBzZWNv
bmRzKTsKIAkJdGhyb3VnaHB1dCA9IChkb3VibGUpbWVzc2FnZXMgKiAoZG91YmxlKWxlbmd0aCAv
IHNlY29uZHM7CiAJCXByaW50ZigiVGhyb3VnaHB1dCB3YXMgJWYgQnl0ZS9zZWMuXG4iLCB0aHJv
dWdocHV0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL3RzY3RwX3VwY2FsbC5jIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3Vz
cnNjdHBsaWIvcHJvZ3JhbXMvdHNjdHBfdXBjYWxsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDBjYzQ4MzcyMDgy
YTA5Y2FkYWE2NWU0MjlmMDE0NjFhM2U4MTY1NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L3Byb2dyYW1zL3RzY3RwX3VwY2FsbC5jCkBAIC0wLDAgKzEsNzgwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA1LTIwMTMgTWljaGFlbCBUdWV4ZW4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDEzIElyZW5lIFJ1ZW5nZWxlcgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTkgRmVsaXggV2Vp
bnJhbmsKKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhl
ciB0aGUgbmFtZSBvZiB0aGUgcHJvamVjdCBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRv
cnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
UFJPSkVDVCBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELglJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgUFJPSkVDVCBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpZmRlZiBfV0lOMzIKKyNpbmNs
dWRlIDx3aW5zb2NrMi5oPgorI2luY2x1ZGUgPHdzMnRjcGlwLmg+CisjaW5jbHVkZSA8c3RkbGli
Lmg+CisjaW5jbHVkZSA8Y3J0ZGJnLmg+CisjaW5jbHVkZSA8c3lzL3RpbWViLmg+CisjZWxzZQor
I2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisjaW5jbHVk
ZSA8YXJwYS9pbmV0Lmg+CisjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyNpbmNsdWRlIDx1bmlzdGQu
aD4KKyNpbmNsdWRlIDxwdGhyZWFkLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxzdGRhcmcuaD4KKyNp
bmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5o
PgorI2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8aW50
dHlwZXMuaD4KKyNpZmRlZiBMSU5VWAorI2luY2x1ZGUgPGdldG9wdC5oPgorI2VuZGlmCisjaW5j
bHVkZSA8dXNyc2N0cC5oPgorI2luY2x1ZGUgInByb2dyYW1zX2hlbHBlci5oIgorCisjZGVmaW5l
IFRTQ1RQX0NMSUVOVCAxCisjZGVmaW5lIFRTQ1RQX1NFUlZFUiAyCisKKyNkZWZpbmUgREVGQVVM
VF9MRU5HVEggICAgICAgICAgICAgMTAyNAorI2RlZmluZSBERUZBVUxUX05VTUJFUl9PRl9NRVNT
QUdFUyAxMDI0CisjZGVmaW5lIERFRkFVTFRfUE9SVCAgICAgICAgICAgICAgIDUwMDEKKyNkZWZp
bmUgQlVGRkVSU0laRSAgICAgICAgICAgICAgICAgKDE8PDE2KQorCitzdGF0aWMgaW50IHBhcl92
ZXJib3NlID0gMDsKK3N0YXRpYyBpbnQgcGFyX3ZlcnlfdmVyYm9zZSA9IDA7CitzdGF0aWMgdW5z
aWduZWQgaW50IGRvbmUgPSAwOworCitzdHJ1Y3QgdHNjdHBfbWV0YSB7CisJdWludDhfdCBwYXJf
cm9sZTsKKwl1aW50OF90IHBhcl9zdGF0c19odW1hbjsKKwl1aW50OF90IHBhcl9vcmRlcmVkOwor
CXVpbnQ2NF90IHBhcl9tZXNzYWdlczsKKwl1aW50NjRfdCBwYXJfbWVzc2FnZV9sZW5ndGg7CisJ
dWludDY0X3QgcGFyX3J1bnRpbWU7CisKKwl1aW50NjRfdCBzdGF0X21lc3NhZ2VzOworCXVpbnQ2
NF90IHN0YXRfbWVzc2FnZV9sZW5ndGg7CisJdWludDY0X3Qgc3RhdF9ub3RpZmljYXRpb25zOwor
CXVpbnQ2NF90IHN0YXRfcmVjdl9jYWxsczsKKwlzdHJ1Y3QgdGltZXZhbCBzdGF0X3N0YXJ0Owor
CisJdWludDY0X3Qgc3RhdF9mcmFnbWVudF9zdW07CisKKwljaGFyICpidWZmZXI7Cit9OworCisj
aWZuZGVmIHRpbWVyc3ViCisjZGVmaW5lIHRpbWVyc3ViKHR2cCwgdXZwLCB2dnApICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJZG8geyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwkJKHZ2cCktPnR2X3NlYyA9ICh0dnAp
LT50dl9zZWMgLSAodXZwKS0+dHZfc2VjOyAgICBcCisJCSh2dnApLT50dl91c2VjID0gKHR2cCkt
PnR2X3VzZWMgLSAodXZwKS0+dHZfdXNlYzsgXAorCQlpZiAoKHZ2cCktPnR2X3VzZWMgPCAwKSB7
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwkJCSh2dnApLT50dl9zZWMtLTsgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKwkJCSh2dnApLT50dl91c2VjICs9IDEwMDAwMDA7ICAgICAgICAg
ICAgICAgIFwKKwkJfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisJfSB3aGlsZSAoMCkKKyNlbmRpZgorCisjaWZkZWYgX1dJTjMyCitzdGF0aWMgdm9p
ZAorZ2V0dGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICp0diwgdm9pZCAqaWdub3JlKQoreworCUZJ
TEVUSU1FIGZpbGV0aW1lOworCVVMQVJHRV9JTlRFR0VSIHVsYXJnZTsKKworCUdldFN5c3RlbVRp
bWVBc0ZpbGVUaW1lKCZmaWxldGltZSk7CisJdWxhcmdlLkxvd1BhcnQgPSBmaWxldGltZS5kd0xv
d0RhdGVUaW1lOworCXVsYXJnZS5IaWdoUGFydCA9IGZpbGV0aW1lLmR3SGlnaERhdGVUaW1lOwor
CS8qIENoYW5nZSBiYXNlIGZyb20gSmFuIDEgMTYwMSAwMDowMDowMCB0byBKYW4gMSAxOTcwIDAw
OjAwOjAwICovCisjaWYgZGVmaW5lZChfX01JTkdXMzJfXykKKwl1bGFyZ2UuUXVhZFBhcnQgLT0g
MTE2NDQ0NzM2MDAwMDAwMDAwVUxMOworI2Vsc2UKKwl1bGFyZ2UuUXVhZFBhcnQgLT0gMTE2NDQ0
NzM2MDAwMDAwMDAwVUk2NDsKKyNlbmRpZgorCS8qCisJICogdWxhcmdlLlF1YWRQYXJ0IGlzIG5v
dyB0aGUgbnVtYmVyIG9mIDEwMC1uYW5vc2Vjb25kIGludGVydmFscworCSAqIHNpbmNlIEphbiAx
IDE5NzAgMDA6MDA6MDAuCisJICovCisjaWYgZGVmaW5lZChfX01JTkdXMzJfXykKKwl0di0+dHZf
c2VjID0gKGxvbmcpKHVsYXJnZS5RdWFkUGFydCAvIDEwMDAwMDAwVUxMKTsKKwl0di0+dHZfdXNl
YyA9IChsb25nKSgodWxhcmdlLlF1YWRQYXJ0ICUgMTAwMDAwMDBVTEwpIC8gMTBVTEwpOworI2Vs
c2UKKwl0di0+dHZfc2VjID0gKGxvbmcpKHVsYXJnZS5RdWFkUGFydCAvIDEwMDAwMDAwVUk2NCk7
CisJdHYtPnR2X3VzZWMgPSAobG9uZykoKHVsYXJnZS5RdWFkUGFydCAlIDEwMDAwMDAwVUk2NCkg
LyAxMFVJNjQpOworI2VuZGlmCit9CisjZW5kaWYKKworCitjaGFyIFVzYWdlW10gPQorIlVzYWdl
OiB0c2N0cCBbb3B0aW9uc10gW2FkZHJlc3NdXG4iCisiT3B0aW9uczpcbiIKKyIgICAgICAgIC1h
ICAgICAgICAgICAgIHNldCBhZGFwdGF0aW9uIGxheWVyIGluZGljYXRpb25cbiIKKyIgICAgICAg
IC1FICAgICAgICAgICAgIGxvY2FsIFVEUCBlbmNhcHN1bGF0aW9uIHBvcnQgKGRlZmF1bHQgOTg5
OSlcbiIKKyIgICAgICAgIC1mICAgICAgICAgICAgIGZyYWdtZW50YXRpb24gcG9pbnRcbiIKKyIg
ICAgICAgIC1IICAgICAgICAgICAgIGh1bWFuIHJlYWRhYmxlIHN0YXRpc3RpY3MiCisiICAgICAg
ICAtbCAgICAgICAgICAgICBtZXNzYWdlIGxlbmd0aFxuIgorIiAgICAgICAgLUwgICAgICAgICAg
ICAgYmluZCB0byBsb2NhbCBJUCAoZGVmYXVsdCBJTkFERFJfQU5ZKVxuIgorIiAgICAgICAgLW4g
ICAgICAgICAgICAgbnVtYmVyIG9mIG1lc3NhZ2VzIHNlbnQgKDAgbWVhbnMgaW5maW5pdGUpL3Jl
Y2VpdmVkXG4iCisiICAgICAgICAtRCAgICAgICAgICAgICB0dXJucyBOYWdsZSBvZmZcbiIKKyIg
ICAgICAgIC1SICAgICAgICAgICAgIHNvY2tldCByZWN2IGJ1ZmZlclxuIgorIiAgICAgICAgLVMg
ICAgICAgICAgICAgc29ja2V0IHNlbmQgYnVmZmVyXG4iCisiICAgICAgICAtVCAgICAgICAgICAg
ICB0aW1lIHRvIHNlbmQgbWVzc2FnZXNcbiIKKyIgICAgICAgIC11ICAgICAgICAgICAgIHVzZSB1
bm9yZGVyZWQgdXNlciBtZXNzYWdlc1xuIgorIiAgICAgICAgLVUgICAgICAgICAgICAgcmVtb3Rl
IFVEUCBlbmNhcHN1bGF0aW9uIHBvcnRcbiIKKyIgICAgICAgIC12ICAgICAgICAgICAgIHZlcmJv
c2VcbiIKKyIgICAgICAgIC1WICAgICAgICAgICAgIHZlcnkgdmVyYm9zZVxuIgorOworCitzdGF0
aWMgdm9pZCBoYW5kbGVfdXBjYWxsKHN0cnVjdCBzb2NrZXQgKnVwY2FsbF9zb2NrZXQsIHZvaWQg
KnVwY2FsbF9kYXRhLCBpbnQgdXBjYWxsX2ZsYWdzKTsKKworc3RhdGljIGNvbnN0IGNoYXIgKmJ5
dGVzMmh1bWFuKHVpbnQ2NF90IGJ5dGVzKQoreworCWNoYXIgKnN1ZmZpeFtdID0geyIiLCAiSyIs
ICJNIiwgIkciLCAiVCJ9OworCWNoYXIgc3VmZml4X2xlbmd0aCA9IHNpemVvZihzdWZmaXgpIC8g
c2l6ZW9mKHN1ZmZpeFswXSk7CisJaW50IGkgPSAwOworCWRvdWJsZSBodW1hbl9zaXplID0gYnl0
ZXM7CisJc3RhdGljIGNoYXIgb3V0cHV0WzIwMF07CisKKwlpZiAoYnl0ZXMgPiAxMDI0KSB7CisJ
CWZvciAoaSA9IDA7IChieXRlcyAvIDEwMjQpID4gMCAmJiBpIDwgc3VmZml4X2xlbmd0aCAtIDE7
IGkrKykgeworCQkJaHVtYW5fc2l6ZSA9IGJ5dGVzIC8gMTAyNC4wOworCQkJYnl0ZXMgLz0gMTAy
NDsKKwkJfQorCX0KKworCWlmIChzbnByaW50ZihvdXRwdXQsIHNpemVvZihvdXRwdXQpLCAiJS4w
MmxmICVzIiwgaHVtYW5fc2l6ZSwgc3VmZml4W2ldKSA8IDApIHsKKwkJb3V0cHV0WzBdID0gJ1ww
JzsKKwl9CisJcmV0dXJuIG91dHB1dDsKK30KKworCitzdGF0aWMgdm9pZAoraGFuZGxlX2FjY2Vw
dChzdHJ1Y3Qgc29ja2V0ICp1cGNhbGxfc29ja2V0LCB2b2lkICp1cGNhbGxfZGF0YSwgaW50IHVw
Y2FsbF9mbGFncykKK3sKKwlzdHJ1Y3Qgc29ja2V0ICpjb25uX3NvY2s7CisJc3RydWN0IHNvY2th
ZGRyX2luIHJlbW90ZV9hZGRyOworCXNvY2tsZW5fdCBhZGRyX2xlbiA9IHNpemVvZihzdHJ1Y3Qg
c29ja2FkZHJfaW4pOworCXN0cnVjdCB0c2N0cF9tZXRhICptZXRhX2xpc3RlbmluZywgKm1ldGFf
YWNjZXB0ZWQ7CisJY2hhciBhZGRyYnVmW0lORVRfQUREUlNUUkxFTl07CisKKwltZXRhX2xpc3Rl
bmluZyA9IChzdHJ1Y3QgdHNjdHBfbWV0YSAqKSB1cGNhbGxfZGF0YTsKKworCW1lbXNldCgmcmVt
b3RlX2FkZHIsIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKKwlpZiAoKChjb25uX3Nv
Y2sgPSB1c3JzY3RwX2FjY2VwdCh1cGNhbGxfc29ja2V0LCAoc3RydWN0IHNvY2thZGRyICopICZy
ZW1vdGVfYWRkciwgJmFkZHJfbGVuKSkgPT0gTlVMTCkgJiYgKGVycm5vICE9IEVJTlBST0dSRVNT
KSkgeworCQlwZXJyb3IoInVzcnNjdHBfYWNjZXB0Iik7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsK
Kwl9CisKKwlpZiAocGFyX3ZlcmJvc2UpIHsKKwkJcHJpbnRmKCJDb25uZWN0aW9uIGFjY2VwdGVk
IGZyb20gJXM6JWRcbiIsIGluZXRfbnRvcChBRl9JTkVULCAmKHJlbW90ZV9hZGRyLnNpbl9hZGRy
KSwgYWRkcmJ1ZiwgSU5FVF9BRERSU1RSTEVOKSwgbnRvaHMocmVtb3RlX2FkZHIuc2luX3BvcnQp
KTsKKwl9CisKKwltZXRhX2FjY2VwdGVkID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgdHNjdHBfbWV0
YSkpOworCWlmICghbWV0YV9hY2NlcHRlZCkgeworCQlwcmludGYoIm1hbGxvYygpIGZhaWxlZCFc
biIpOworCQlleGl0KEVYSVRfRkFJTFVSRSk7CisJfQorCisJbWVtc2V0KG1ldGFfYWNjZXB0ZWQs
IDAsIHNpemVvZihzdHJ1Y3QgdHNjdHBfbWV0YSkpOworCisJbWV0YV9hY2NlcHRlZC0+cGFyX3Jv
bGUgPSBtZXRhX2xpc3RlbmluZy0+cGFyX3JvbGU7CisJbWV0YV9hY2NlcHRlZC0+cGFyX3N0YXRz
X2h1bWFuID0gbWV0YV9saXN0ZW5pbmctPnBhcl9zdGF0c19odW1hbjsKKwltZXRhX2FjY2VwdGVk
LT5idWZmZXIgPSBtYWxsb2MoQlVGRkVSU0laRSk7CisKKwlpZiAoIW1ldGFfYWNjZXB0ZWQtPmJ1
ZmZlcikgeworCQlwcmludGYoIm1hbGxvYygpIGZhaWxlZCFcbiIpOworCQlleGl0KEVYSVRfRkFJ
TFVSRSk7CisJfQorCisJdXNyc2N0cF9zZXRfdXBjYWxsKGNvbm5fc29jaywgaGFuZGxlX3VwY2Fs
bCwgbWV0YV9hY2NlcHRlZCk7Cit9CisKK3N0YXRpYyB2b2lkCitoYW5kbGVfdXBjYWxsKHN0cnVj
dCBzb2NrZXQgKnVwY2FsbF9zb2NrZXQsIHZvaWQgKnVwY2FsbF9kYXRhLCBpbnQgdXBjYWxsX2Zs
YWdzKQoreworCWludCBldmVudHMgPSB1c3JzY3RwX2dldF9ldmVudHModXBjYWxsX3NvY2tldCk7
CisJc3RydWN0IHRzY3RwX21ldGEqIHRzY3RwX21ldGEgPSAoc3RydWN0IHRzY3RwX21ldGEqKSB1
cGNhbGxfZGF0YTsKKworCXN0cnVjdCBzY3RwX3JlY3Z2X3JuIHJuOworCXNzaXplX3QgbjsKKwlz
dHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBhZGRyOworCWludCByZWN2X2ZsYWdzID0gMDsKKwlzb2Nr
bGVuX3QgbGVuID0gKHNvY2tsZW5fdClzaXplb2Yoc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UpOwor
CXVuc2lnbmVkIGludCBpbmZvdHlwZSA9IDA7CisJc29ja2xlbl90IGluZm9sZW4gPSBzaXplb2Yo
c3RydWN0IHNjdHBfcmVjdnZfcm4pOworCXN0cnVjdCBzY3RwX3JjdmluZm8gKnJjdmluZm8gPSAo
c3RydWN0IHNjdHBfcmN2aW5mbyAqKSAmcm47CisJbWVtc2V0KCZybiwgMCwgc2l6ZW9mKHN0cnVj
dCBzY3RwX3JlY3Z2X3JuKSk7CisJc3RydWN0IHRpbWV2YWwgbm90ZV90aW1lOworCXVuaW9uIHNj
dHBfbm90aWZpY2F0aW9uICpzbnA7CisJc3RydWN0IHNjdHBfcGFkZHJfY2hhbmdlICpzcGM7CisJ
c3RydWN0IHRpbWV2YWwgdGltZV9ub3c7CisJc3RydWN0IHRpbWV2YWwgdGltZV9kaWZmOworCWZs
b2F0IHNlY29uZHM7CisJc3RydWN0IHNjdHBfc25kaW5mbyBzbmRfaW5mbzsKKworCWlmIChldmVu
dHMgJiBTQ1RQX0VWRU5UX1JFQUQpIHsKKwkJd2hpbGUgKChuID0gdXNyc2N0cF9yZWN2dih1cGNh
bGxfc29ja2V0LCB0c2N0cF9tZXRhLT5idWZmZXIsIEJVRkZFUlNJWkUsIChzdHJ1Y3Qgc29ja2Fk
ZHIgKikgJmFkZHIsICZsZW4sICh2b2lkICopJnJuLCAmaW5mb2xlbiwgJmluZm90eXBlLCAmcmVj
dl9mbGFncykpID4gMCkgeworCisJCQlpZiAoIXRzY3RwX21ldGEtPnN0YXRfcmVjdl9jYWxscykg
eworCQkJCWdldHRpbWVvZmRheSgmdHNjdHBfbWV0YS0+c3RhdF9zdGFydCwgTlVMTCk7CisJCQl9
CisJCQl0c2N0cF9tZXRhLT5zdGF0X3JlY3ZfY2FsbHMrKzsKKworCQkJaWYgKHJlY3ZfZmxhZ3Mg
JiBNU0dfTk9USUZJQ0FUSU9OKSB7CisJCQkJdHNjdHBfbWV0YS0+c3RhdF9ub3RpZmljYXRpb25z
Kys7CisJCQkJZ2V0dGltZW9mZGF5KCZub3RlX3RpbWUsIE5VTEwpOworCQkJCWlmIChwYXJfdmVy
Ym9zZSkgeworCQkJCQlwcmludGYoIm5vdGlmaWNhdGlvbiBhcnJpdmVkIGF0ICVmXG4iLCBub3Rl
X3RpbWUudHZfc2VjICsgKGRvdWJsZSlub3RlX3RpbWUudHZfdXNlYyAvIDEwMDAwMDAuMCk7CisK
KwkJCQkJc25wID0gKHVuaW9uIHNjdHBfbm90aWZpY2F0aW9uICopdHNjdHBfbWV0YS0+YnVmZmVy
OworCQkJCQlpZiAoc25wLT5zbl9oZWFkZXIuc25fdHlwZSA9PSBTQ1RQX1BFRVJfQUREUl9DSEFO
R0UpIHsKKwkJCQkJCXNwYyA9ICZzbnAtPnNuX3BhZGRyX2NoYW5nZTsKKwkJCQkJCXByaW50Zigi
U0NUUF9QRUVSX0FERFJfQ0hBTkdFOiBzdGF0ZT0ldSwgZXJyb3I9JXVcbiIsc3BjLT5zcGNfc3Rh
dGUsIHNwYy0+c3BjX2Vycm9yKTsKKwkJCQkJfQorCQkJCX0KKwkJCX0gZWxzZSB7CisJCQkJaWYg
KHBhcl92ZXJ5X3ZlcmJvc2UpIHsKKwkJCQkJaWYgKGluZm90eXBlID09IFNDVFBfUkVDVlZfUkNW
SU5GTykgeworCQkJCQkJcHJpbnRmKCJNZXNzYWdlIHJlY2VpdmVkIC0gJXpkIGJ5dGVzIC0gJXMg
LSBzaWQgJXUgLSB0c24gJXUgJXNcbiIsCisJCQkJCQkJbiwKKwkJCQkJCQkocmN2aW5mby0+cmN2
X2ZsYWdzICYgU0NUUF9VTk9SREVSRUQpID8gInVub3JkZXJlZCIgOiAib3JkZXJlZCIsCisJCQkJ
CQkJcmN2aW5mby0+cmN2X3NpZCwKKwkJCQkJCQlyY3ZpbmZvLT5yY3ZfdHNuLAorCQkJCQkJCShy
ZWN2X2ZsYWdzICYgTVNHX0VPUikgPyAiLSBFT1IiIDogIiIKKwkJCQkJCSk7CisKKwkJCQkJfSBl
bHNlIHsKKwkJCQkJCXByaW50ZigiTWVzc2FnZSByZWNlaXZlZCAtICV6ZCBieXRlcyAlc1xuIiwg
biwgKHJlY3ZfZmxhZ3MgJiBNU0dfRU9SKSA/ICItIEVPUiIgOiAiIik7CisJCQkJCX0KKwkJCQl9
CisJCQkJdHNjdHBfbWV0YS0+c3RhdF9mcmFnbWVudF9zdW0gKz0gbjsKKwkJCQlpZiAocmVjdl9m
bGFncyAmIE1TR19FT1IpIHsKKwkJCQkJdHNjdHBfbWV0YS0+c3RhdF9tZXNzYWdlcysrOworCQkJ
CQlpZiAodHNjdHBfbWV0YS0+c3RhdF9tZXNzYWdlX2xlbmd0aCA9PSAwKSB7CisJCQkJCQl0c2N0
cF9tZXRhLT5zdGF0X21lc3NhZ2VfbGVuZ3RoID0gdHNjdHBfbWV0YS0+c3RhdF9mcmFnbWVudF9z
dW07CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCX0KKworCQlpZiAobiA8IDAgJiYgZXJybm8gIT0g
RUFHQUlOICYmIGVycm5vICE9IEVXT1VMREJMT0NLKSB7CisJCQlwZXJyb3IoInVzcnNjdHBfcmVj
dnYiKTsKKwkJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwkJfQorCisJCWlmIChuID09IDApIHsKKwkJ
CWRvbmUgPSAxOworCisJCQlnZXR0aW1lb2ZkYXkoJnRpbWVfbm93LCBOVUxMKTsKKwkJCXRpbWVy
c3ViKCZ0aW1lX25vdywgJnRzY3RwX21ldGEtPnN0YXRfc3RhcnQsICZ0aW1lX2RpZmYpOworCQkJ
c2Vjb25kcyA9IHRpbWVfZGlmZi50dl9zZWMgKyAoZG91YmxlKXRpbWVfZGlmZi50dl91c2VjIC8g
MTAwMDAwMC4wOworCisJCQlpZiAodHNjdHBfbWV0YS0+cGFyX3N0YXRzX2h1bWFuKSB7CisJCQkJ
cHJpbnRmKCJDb25uZWN0aW9uIGNsb3NlZCAtIHN0YXRpc3RpY3NcbiIpOworCisJCQkJcHJpbnRm
KCJcdG1lc3NhZ2Ugc2l6ZSAgOiAlIiBQUkl1NjQgIlxuIiwgdHNjdHBfbWV0YS0+c3RhdF9tZXNz
YWdlX2xlbmd0aCk7CisJCQkJcHJpbnRmKCJcdG1lc3NhZ2VzICAgICAgOiAlIiBQUkl1NjQgIlxu
IiwgdHNjdHBfbWV0YS0+c3RhdF9tZXNzYWdlcyk7CisJCQkJcHJpbnRmKCJcdHJlY3YoKSBjYWxs
cyAgOiAlIiBQUkl1NjQgIlxuIiwgdHNjdHBfbWV0YS0+c3RhdF9yZWN2X2NhbGxzKTsKKwkJCQlw
cmludGYoIlx0bm90aWZpY2F0aW9ucyA6ICUiIFBSSXU2NCAiXG4iLCB0c2N0cF9tZXRhLT5zdGF0
X25vdGlmaWNhdGlvbnMpOworCQkJCXByaW50ZigiXHR0cmFuc2ZlcnJlZCAgIDogJXNCeXRlXG4i
LCBieXRlczJodW1hbih0c2N0cF9tZXRhLT5zdGF0X21lc3NhZ2VfbGVuZ3RoICogdHNjdHBfbWV0
YS0+c3RhdF9tZXNzYWdlcykpOworCQkJCXByaW50ZigiXHRydW50aW1lICAgICAgIDogJS4yZiBz
XG4iLCBzZWNvbmRzKTsKKwkJCQlwcmludGYoIlx0Z29vZHB1dCAgICAgICA6ICVzQml0L3NcbiIs
IGJ5dGVzMmh1bWFuKChkb3VibGUpIHRzY3RwX21ldGEtPnN0YXRfbWVzc2FnZV9sZW5ndGggKiAo
ZG91YmxlKSB0c2N0cF9tZXRhLT5zdGF0X21lc3NhZ2VzIC8gc2Vjb25kcyAqIDgpKTsKKworCQkJ
fSBlbHNlIHsKKwkJCQlwcmludGYoIiUiIFBSSXU2NCAiLCAlIiBQUkl1NjQgIiwgJSIgUFJJdTY0
ICIsICUiIFBSSXU2NCAiLCAlZiwgJWYsICUiIFBSSXU2NCAiXG4iLAorCQkJCQkJdHNjdHBfbWV0
YS0+c3RhdF9tZXNzYWdlX2xlbmd0aCwKKwkJCQkJCXRzY3RwX21ldGEtPnN0YXRfbWVzc2FnZXMs
CisJCQkJCQl0c2N0cF9tZXRhLT5zdGF0X3JlY3ZfY2FsbHMsCisJCQkJCQl0c2N0cF9tZXRhLT5z
dGF0X21lc3NhZ2VfbGVuZ3RoICogdHNjdHBfbWV0YS0+c3RhdF9tZXNzYWdlcywKKwkJCQkJCXNl
Y29uZHMsCisJCQkJCQkoZG91YmxlKSB0c2N0cF9tZXRhLT5zdGF0X21lc3NhZ2VfbGVuZ3RoICog
KGRvdWJsZSkgdHNjdHBfbWV0YS0+c3RhdF9tZXNzYWdlcyAvIHNlY29uZHMsCisJCQkJCQl0c2N0
cF9tZXRhLT5zdGF0X25vdGlmaWNhdGlvbnMpOworCQkJfQorCQkJZmZsdXNoKHN0ZG91dCk7CisJ
CQl1c3JzY3RwX2Nsb3NlKHVwY2FsbF9zb2NrZXQpOworCisJCQlmcmVlKHRzY3RwX21ldGEtPmJ1
ZmZlcik7CisJCQlmcmVlKHRzY3RwX21ldGEpOworCQkJcmV0dXJuOworCQl9CisJfQorCisJaWYg
KChldmVudHMgJiBTQ1RQX0VWRU5UX1dSSVRFKSAmJiB0c2N0cF9tZXRhLT5wYXJfcm9sZSA9PSBU
U0NUUF9DTElFTlQgJiYgIWRvbmUpIHsKKworCQltZW1zZXQoJnNuZF9pbmZvLCAwLCBzaXplb2Yo
c3RydWN0IHNjdHBfc25kaW5mbykpOworCQlpZiAodHNjdHBfbWV0YS0+cGFyX29yZGVyZWQgPT0g
MCkgeworCQkJc25kX2luZm8uc25kX2ZsYWdzIHw9IFNDVFBfVU5PUkRFUkVEOworCQl9CisKKwkJ
d2hpbGUgKChuID0gdXNyc2N0cF9zZW5kdih1cGNhbGxfc29ja2V0LCB0c2N0cF9tZXRhLT5idWZm
ZXIsIHRzY3RwX21ldGEtPnBhcl9tZXNzYWdlX2xlbmd0aCwgTlVMTCwgMCwgJnNuZF9pbmZvLCAo
c29ja2xlbl90KXNpemVvZihzdHJ1Y3Qgc2N0cF9zbmRpbmZvKSwgU0NUUF9TRU5EVl9TTkRJTkZP
LCAwKSkgPiAwKSB7CisJCQlpZiAodHNjdHBfbWV0YS0+c3RhdF9tZXNzYWdlcyA9PSAwKSB7CisJ
CQkJZ2V0dGltZW9mZGF5KCZ0c2N0cF9tZXRhLT5zdGF0X3N0YXJ0LCBOVUxMKTsKKwkJCX0KKwkJ
CXRzY3RwX21ldGEtPnN0YXRfbWVzc2FnZXMrKzsKKworCQkJaWYgKHBhcl92ZXJ5X3ZlcmJvc2Up
IHsKKwkJCQlwcmludGYoIk1lc3NhZ2UgIyUiIFBSSXU2NCAiIHNlbnRcbiIsIHRzY3RwX21ldGEt
PnN0YXRfbWVzc2FnZXMpOworCQkJfQorCisJCQlpZiAodHNjdHBfbWV0YS0+cGFyX21lc3NhZ2Vz
ICYmIHRzY3RwX21ldGEtPnBhcl9tZXNzYWdlcyA9PSB0c2N0cF9tZXRhLT5zdGF0X21lc3NhZ2Vz
KSB7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKworCQlpZiAoZXJybm8gIT0gRUFHQUlOICYmIGVy
cm5vICE9IEVXT1VMREJMT0NLKSB7CisJCQlkb25lID0gMTsKKwkJCXVzcnNjdHBfY2xvc2UodXBj
YWxsX3NvY2tldCk7CisJCQlwcmludGYoImNsaWVudCBzb2NrZXQgJXAgY2xvc2VkXG4iLCAodm9p
ZCAqKXVwY2FsbF9zb2NrZXQpOworCQkJZnJlZSh0c2N0cF9tZXRhLT5idWZmZXIpOworCQkJZnJl
ZSh0c2N0cF9tZXRhKTsKKwkJCXJldHVybjsKKwkJfQorCisJCWdldHRpbWVvZmRheSgmdGltZV9u
b3csIE5VTEwpOworCQl0aW1lcnN1YigmdGltZV9ub3csICZ0c2N0cF9tZXRhLT5zdGF0X3N0YXJ0
LCAmdGltZV9kaWZmKTsKKwkJc2Vjb25kcyA9IHRpbWVfZGlmZi50dl9zZWMgKyAoZG91YmxlKXRp
bWVfZGlmZi50dl91c2VjIC8gMTAwMDAwMC4wOworCisJCWlmICgodHNjdHBfbWV0YS0+cGFyX21l
c3NhZ2VzICYmIHRzY3RwX21ldGEtPnBhcl9tZXNzYWdlcyA9PSB0c2N0cF9tZXRhLT5zdGF0X21l
c3NhZ2VzKSB8fAorCQkJKHRzY3RwX21ldGEtPnBhcl9ydW50aW1lICYmIHRzY3RwX21ldGEtPnBh
cl9ydW50aW1lIDw9IHNlY29uZHMpKSB7CisKKwkJCWlmIChwYXJfdmVyYm9zZSkgeworCQkJCXBy
aW50ZigiUnVudGltZSBvciBtYXggbWVzc2FnZXMgcmVhY2hlZCAtIGZpbmlzaGluZy4uLlxuIik7
CisJCQl9CisKKwkJCWRvbmUgPSAxOworCQkJdXNyc2N0cF9jbG9zZSh1cGNhbGxfc29ja2V0KTsK
KwkJCWZyZWUodHNjdHBfbWV0YS0+YnVmZmVyKTsKKwkJCWZyZWUodHNjdHBfbWV0YSk7CisJCQly
ZXR1cm47CisJCX0KKwl9CisKKwlyZXR1cm47Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFy
ICoqYXJndikKK3sKKyNpZm5kZWYgX1dJTjMyCisJaW50IGM7CisjZW5kaWYKKwlzdHJ1Y3Qgc29j
a2V0ICpwc29jayA9IE5VTEw7CisJc3RydWN0IHNvY2thZGRyX2luIGxvY2FsX2FkZHI7CisJc3Ry
dWN0IHNvY2thZGRyX2luIHJlbW90ZV9hZGRyOworCWludCBvcHR2YWw7CisJdWludDE2X3QgbG9j
YWxfcG9ydDsKKwl1aW50MTZfdCByZW1vdGVfcG9ydDsKKwl1aW50MTZfdCBsb2NhbF91ZHBfcG9y
dDsKKwl1aW50MTZfdCByZW1vdGVfdWRwX3BvcnQ7CisJaW50IHJjdmJ1ZnNpemUgPSAwOworCWlu
dCBzbmRidWZzaXplID0gMDsKKwlzb2NrbGVuX3QgaW50bGVuOworCWludCBub2RlbGF5ID0gMDsK
KwlzdHJ1Y3Qgc2N0cF9hc3NvY192YWx1ZSBhdjsKKwlzdHJ1Y3Qgc2N0cF91ZHBlbmNhcHMgZW5j
YXBzOworCXN0cnVjdCB0c2N0cF9tZXRhICptZXRhOworCisJdWludDE2X3QgcGFyX3BvcnQgPSBE
RUZBVUxUX1BPUlQ7CisJdWludDhfdCBwYXJfc3RhdHNfaHVtYW4gPSAwOworCWludCBwYXJfb3Jk
ZXJlZCA9IDE7CisJaW50IHBhcl9tZXNzYWdlX2xlbmd0aCA9IERFRkFVTFRfTEVOR1RIOworCWlu
dCBwYXJfbWVzc2FnZXMgPSBERUZBVUxUX05VTUJFUl9PRl9NRVNTQUdFUzsKKwlpbnQgcGFyX3J1
bnRpbWUgPSAwOworCisjaWZkZWYgX1dJTjMyCisJdW5zaWduZWQgbG9uZyBzcmNfYWRkcjsKKyNl
bHNlCisJaW5fYWRkcl90IHNyY19hZGRyOworI2VuZGlmCisJaW50IGZyYWdwb2ludCA9IDA7CisJ
c3RydWN0IHNjdHBfc2V0YWRhcHRhdGlvbiBpbmQgPSB7MH07CisjaWZkZWYgX1dJTjMyCisJY2hh
ciAqb3B0OworCWludCBvcHRpbmQ7CisjZW5kaWYKKworCXJlbW90ZV91ZHBfcG9ydCA9IDA7CisJ
bG9jYWxfdWRwX3BvcnQgPSA5ODk5OworCXNyY19hZGRyID0gaHRvbmwoSU5BRERSX0FOWSk7CisK
KwltZW1zZXQoKHZvaWQgKikgJnJlbW90ZV9hZGRyLCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRy
X2luKSk7CisJbWVtc2V0KCh2b2lkICopICZsb2NhbF9hZGRyLCAwLCBzaXplb2Yoc3RydWN0IHNv
Y2thZGRyX2luKSk7CisKKyNpZm5kZWYgX1dJTjMyCisJd2hpbGUgKChjID0gZ2V0b3B0KGFyZ2Ms
IGFyZ3YsICJhOkRFOmY6SGw6TDpuOnA6UjpTOlQ6dVU6dlYiKSkgIT0gLTEpCisJCXN3aXRjaChj
KSB7CisJCQljYXNlICdhJzoKKwkJCQlpbmQuc3NiX2FkYXB0YXRpb25faW5kID0gYXRvaShvcHRh
cmcpOworCQkJCWJyZWFrOworCQkJY2FzZSAnRCc6CisJCQkJbm9kZWxheSA9IDE7CisJCQkJYnJl
YWs7CisJCQljYXNlICdFJzoKKwkJCQlsb2NhbF91ZHBfcG9ydCA9IGF0b2kob3B0YXJnKTsKKwkJ
CQlicmVhazsKKwkJCWNhc2UgJ2YnOgorCQkJCWZyYWdwb2ludCA9IGF0b2kob3B0YXJnKTsKKwkJ
CQlicmVhazsKKwkJCWNhc2UgJ0gnOgorCQkJCXBhcl9zdGF0c19odW1hbiA9IDE7CisJCQkJYnJl
YWs7CisJCQljYXNlICdsJzoKKwkJCQlwYXJfbWVzc2FnZV9sZW5ndGggPSBhdG9pKG9wdGFyZyk7
CisJCQkJYnJlYWs7CisJCQljYXNlICdMJzoKKwkJCQlpZiAoaW5ldF9wdG9uKEFGX0lORVQsIG9w
dGFyZywgJnNyY19hZGRyKSAhPSAxKSB7CisJCQkJCXByaW50ZigiQ2FuJ3QgcGFyc2UgJXNcbiIs
IG9wdGFyZyk7CisJCQkJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwkJCQl9CisJCQkJYnJlYWs7CisJ
CQljYXNlICduJzoKKwkJCQlwYXJfbWVzc2FnZXMgPSBhdG9pKG9wdGFyZyk7CisJCQkJYnJlYWs7
CisJCQljYXNlICdwJzoKKwkJCQlwYXJfcG9ydCA9IGF0b2kob3B0YXJnKTsKKwkJCQlicmVhazsK
KwkJCWNhc2UgJ1InOgorCQkJCXJjdmJ1ZnNpemUgPSBhdG9pKG9wdGFyZyk7CisJCQkJYnJlYWs7
CisJCQljYXNlICdTJzoKKwkJCQlzbmRidWZzaXplID0gYXRvaShvcHRhcmcpOworCQkJCWJyZWFr
OworCQkJY2FzZSAnVCc6CisJCQkJcGFyX3J1bnRpbWUgPSBhdG9pKG9wdGFyZyk7CisJCQkJcGFy
X21lc3NhZ2VzID0gMDsKKwkJCQlicmVhazsKKwkJCWNhc2UgJ3UnOgorCQkJCXBhcl9vcmRlcmVk
ID0gMDsKKwkJCQlicmVhazsKKwkJCWNhc2UgJ1UnOgorCQkJCXJlbW90ZV91ZHBfcG9ydCA9IGF0
b2kob3B0YXJnKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgJ3YnOgorCQkJCXBhcl92ZXJib3NlID0g
MTsKKwkJCQlicmVhazsKKwkJCWNhc2UgJ1YnOgorCQkJCXBhcl92ZXJib3NlID0gMTsKKwkJCQlw
YXJfdmVyeV92ZXJib3NlID0gMTsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZnByaW50
ZihzdGRlcnIsICIlcyIsIFVzYWdlKTsKKwkJCQlleGl0KDEpOworCQl9CisjZWxzZQorCWZvciAo
b3B0aW5kID0gMTsgb3B0aW5kIDwgYXJnYzsgb3B0aW5kKyspIHsKKwkJaWYgKGFyZ3Zbb3B0aW5k
XVswXSA9PSAnLScpIHsKKwkJCXN3aXRjaCAoYXJndltvcHRpbmRdWzFdKSB7CisJCQkJY2FzZSAn
YSc6CisJCQkJCWlmICgrK29wdGluZCA+PSBhcmdjKSB7CisJCQkJCQlwcmludGYoIiVzIiwgVXNh
Z2UpOworCQkJCQkJZXhpdCgxKTsKKwkJCQkJfQorCQkJCQlvcHQgPSBhcmd2W29wdGluZF07CisJ
CQkJCWluZC5zc2JfYWRhcHRhdGlvbl9pbmQgPSBhdG9pKG9wdCk7CisJCQkJCWJyZWFrOworCQkJ
CWNhc2UgJ0QnOgorCQkJCQlub2RlbGF5ID0gMTsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSAnRSc6
CisJCQkJCWlmICgrK29wdGluZCA+PSBhcmdjKSB7CisJCQkJCQlwcmludGYoIiVzIiwgVXNhZ2Up
OworCQkJCQkJZXhpdCgxKTsKKwkJCQkJfQorCQkJCQlvcHQgPSBhcmd2W29wdGluZF07CisJCQkJ
CWxvY2FsX3VkcF9wb3J0ID0gYXRvaShvcHQpOworCQkJCQlicmVhazsKKwkJCQljYXNlICdmJzoK
KwkJCQkJaWYgKCsrb3B0aW5kID49IGFyZ2MpIHsKKwkJCQkJCXByaW50ZigiJXMiLCBVc2FnZSk7
CisJCQkJCQlleGl0KDEpOworCQkJCQl9CisJCQkJCW9wdCA9IGFyZ3Zbb3B0aW5kXTsKKwkJCQkJ
ZnJhZ3BvaW50ID0gYXRvaShvcHQpOworCQkJCQlicmVhazsKKwkJCQljYXNlICdIJzoKKwkJCQkJ
cGFyX3N0YXRzX2h1bWFuID0gMTsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSAnbCc6CisJCQkJCWlm
ICgrK29wdGluZCA+PSBhcmdjKSB7CisJCQkJCQlwcmludGYoIiVzIiwgVXNhZ2UpOworCQkJCQkJ
ZXhpdCgxKTsKKwkJCQkJfQorCQkJCQlvcHQgPSBhcmd2W29wdGluZF07CisJCQkJCXBhcl9tZXNz
YWdlX2xlbmd0aCA9IGF0b2kob3B0KTsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSAnTCc6CisJCQkJ
CWlmICgrK29wdGluZCA+PSBhcmdjKSB7CisJCQkJCQlwcmludGYoIiVzIiwgVXNhZ2UpOworCQkJ
CQkJZXhpdCgxKTsKKwkJCQkJfQorCQkJCQlvcHQgPSBhcmd2W29wdGluZF07CisJCQkJCWluZXRf
cHRvbihBRl9JTkVULCBvcHQsICZzcmNfYWRkcik7CisJCQkJCWJyZWFrOworCQkJCWNhc2UgJ24n
OgorCQkJCQlpZiAoKytvcHRpbmQgPj0gYXJnYykgeworCQkJCQkJcHJpbnRmKCIlcyIsIFVzYWdl
KTsKKwkJCQkJCWV4aXQoMSk7CisJCQkJCX0KKwkJCQkJb3B0ID0gYXJndltvcHRpbmRdOworCQkJ
CQlwYXJfbWVzc2FnZXMgPSBhdG9pKG9wdCk7CisJCQkJCWJyZWFrOworCQkJCWNhc2UgJ3AnOgor
CQkJCQlpZiAoKytvcHRpbmQgPj0gYXJnYykgeworCQkJCQkJcHJpbnRmKCIlcyIsIFVzYWdlKTsK
KwkJCQkJCWV4aXQoMSk7CisJCQkJCX0KKwkJCQkJb3B0ID0gYXJndltvcHRpbmRdOworCQkJCQlw
YXJfcG9ydCA9IGF0b2kob3B0KTsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSAnUic6CisJCQkJCWlm
ICgrK29wdGluZCA+PSBhcmdjKSB7CisJCQkJCQlwcmludGYoIiVzIiwgVXNhZ2UpOworCQkJCQkJ
ZXhpdCgxKTsKKwkJCQkJfQorCQkJCQlvcHQgPSBhcmd2W29wdGluZF07CisJCQkJCXJjdmJ1ZnNp
emUgPSBhdG9pKG9wdCk7CisJCQkJCWJyZWFrOworCQkJCWNhc2UgJ1MnOgorCQkJCQlpZiAoKytv
cHRpbmQgPj0gYXJnYykgeworCQkJCQkJcHJpbnRmKCIlcyIsIFVzYWdlKTsKKwkJCQkJCWV4aXQo
MSk7CisJCQkJCX0KKwkJCQkJb3B0ID0gYXJndltvcHRpbmRdOworCQkJCQlzbmRidWZzaXplID0g
YXRvaShvcHQpOworCQkJCQlicmVhazsKKwkJCQljYXNlICdUJzoKKwkJCQkJaWYgKCsrb3B0aW5k
ID49IGFyZ2MpIHsKKwkJCQkJCXByaW50ZigiJXMiLCBVc2FnZSk7CisJCQkJCQlleGl0KDEpOwor
CQkJCQl9CisJCQkJCW9wdCA9IGFyZ3Zbb3B0aW5kXTsKKwkJCQkJcGFyX3J1bnRpbWUgPSBhdG9p
KG9wdCk7CisJCQkJCXBhcl9tZXNzYWdlcyA9IDA7CisJCQkJCWJyZWFrOworCQkJCWNhc2UgJ3Un
OgorCQkJCQlwYXJfb3JkZXJlZCA9IDA7CisJCQkJCWJyZWFrOworCQkJCWNhc2UgJ1UnOgorCQkJ
CQlpZiAoKytvcHRpbmQgPj0gYXJnYykgeworCQkJCQkJcHJpbnRmKCIlcyIsIFVzYWdlKTsKKwkJ
CQkJCWV4aXQoMSk7CisJCQkJCX0KKwkJCQkJb3B0ID0gYXJndltvcHRpbmRdOworCQkJCQlyZW1v
dGVfdWRwX3BvcnQgPSBhdG9pKG9wdCk7CisJCQkJCWJyZWFrOworCQkJCWNhc2UgJ3YnOgorCQkJ
CQlwYXJfdmVyYm9zZSA9IDE7CisJCQkJCWJyZWFrOworCQkJCWNhc2UgJ1YnOgorCQkJCQlwYXJf
dmVyYm9zZSA9IDE7CisJCQkJCXBhcl92ZXJ5X3ZlcmJvc2UgPSAxOworCQkJCQlicmVhazsKKwkJ
CQlkZWZhdWx0OgorCQkJCQlwcmludGYoIiVzIiwgVXNhZ2UpOworCQkJCQlleGl0KDEpOworCQkJ
fQorCQl9IGVsc2UgeworCQkJYnJlYWs7CisJCX0KKwl9CisjZW5kaWYKKworCW1ldGEgPSBtYWxs
b2Moc2l6ZW9mKHN0cnVjdCB0c2N0cF9tZXRhKSk7CisJaWYgKCFtZXRhKSB7CisJCXByaW50Zigi
bWFsbG9jKCkgZmFpbGVkIVxuIik7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwl9CisKKwltZW1z
ZXQobWV0YSwgMCwgc2l6ZW9mKHN0cnVjdCB0c2N0cF9tZXRhKSk7CisKKwltZXRhLT5idWZmZXIg
PSBtYWxsb2MoQlVGRkVSU0laRSk7CisJaWYgKCFtZXRhLT5idWZmZXIpIHsKKwkJcHJpbnRmKCJt
YWxsb2MoKSBmYWlsZWQhXG4iKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKworCW1ldGEt
PnBhcl9zdGF0c19odW1hbiA9IHBhcl9zdGF0c19odW1hbjsKKwltZXRhLT5wYXJfbWVzc2FnZV9s
ZW5ndGggPSBwYXJfbWVzc2FnZV9sZW5ndGg7CisJbWV0YS0+cGFyX21lc3NhZ2VzID0gcGFyX21l
c3NhZ2VzOworCW1ldGEtPnBhcl9vcmRlcmVkID0gcGFyX29yZGVyZWQ7CisJbWV0YS0+cGFyX3J1
bnRpbWUgPSBwYXJfcnVudGltZTsKKworCWlmIChvcHRpbmQgPT0gYXJnYykgeworCQltZXRhLT5w
YXJfcm9sZSA9IFRTQ1RQX1NFUlZFUjsKKwkJbG9jYWxfcG9ydCA9IHBhcl9wb3J0OworCQlyZW1v
dGVfcG9ydCA9IDA7CisJfSBlbHNlIHsKKwkJbWV0YS0+cGFyX3JvbGUgPSBUU0NUUF9DTElFTlQ7
CisJCWxvY2FsX3BvcnQgPSAwOworCQlyZW1vdGVfcG9ydCA9IHBhcl9wb3J0OworCX0KKwlsb2Nh
bF9hZGRyLnNpbl9mYW1pbHkgPSBBRl9JTkVUOworI2lmZGVmIEhBVkVfU0lOX0xFTgorCWxvY2Fs
X2FkZHIuc2luX2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pOworI2VuZGlmCisJbG9j
YWxfYWRkci5zaW5fcG9ydCA9IGh0b25zKGxvY2FsX3BvcnQpOworCWxvY2FsX2FkZHIuc2luX2Fk
ZHIuc19hZGRyID0gc3JjX2FkZHI7CisKKwl1c3JzY3RwX2luaXQobG9jYWxfdWRwX3BvcnQsIE5V
TEwsIGRlYnVnX3ByaW50Zl9zdGFjayk7CisjaWZkZWYgU0NUUF9ERUJVRworCXVzcnNjdHBfc3lz
Y3RsX3NldF9zY3RwX2RlYnVnX29uKFNDVFBfREVCVUdfQUxMKTsKKyNlbmRpZgorCXVzcnNjdHBf
c3lzY3RsX3NldF9zY3RwX2JsYWNraG9sZSgyKTsKKwl1c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9u
b19jc3VtX29uX2xvb3BiYWNrKDApOworCXVzcnNjdHBfc3lzY3RsX3NldF9zY3RwX2VuYWJsZV9z
YWNrX2ltbWVkaWF0ZWx5KDEpOworCisJaWYgKCEocHNvY2sgPSB1c3JzY3RwX3NvY2tldChBRl9J
TkVULCBTT0NLX1NUUkVBTSwgSVBQUk9UT19TQ1RQLCBOVUxMLCBOVUxMLCAwLCBOVUxMKSkpIHsK
KwkJcGVycm9yKCJ1c2VyX3NvY2tldCIpOworCQlleGl0KEVYSVRfRkFJTFVSRSk7CisJfQorCisJ
b3B0dmFsID0gMTsKKwlpZiAodXNyc2N0cF9zZXRzb2Nrb3B0KHBzb2NrLCBJUFBST1RPX1NDVFAs
IFNDVFBfUkVDVlJDVklORk8sICZvcHR2YWwsIHNpemVvZihvcHR2YWwpKSA8IDApIHsKKwkJcGVy
cm9yKCJ1c3JzY3RwX3NldHNvY2tvcHQgU0NUUF9SRUNWUkNWSU5GTyIpOworCX0KKworCXVzcnNj
dHBfc2V0X25vbl9ibG9ja2luZyhwc29jaywgMSk7CisKKwlpZiAodXNyc2N0cF9iaW5kKHBzb2Nr
LCAoc3RydWN0IHNvY2thZGRyICopICZsb2NhbF9hZGRyLCBzaXplb2Yoc3RydWN0IHNvY2thZGRy
X2luKSkgPT0gLTEpIHsKKwkJcGVycm9yKCJ1c3JzY3RwX2JpbmQiKTsKKwkJZXhpdCgxKTsKKwl9
CisKKwlpZiAodXNyc2N0cF9zZXRzb2Nrb3B0KHBzb2NrLCBJUFBST1RPX1NDVFAsIFNDVFBfQURB
UFRBVElPTl9MQVlFUiwgKGNvbnN0IHZvaWQqKSZpbmQsIChzb2NrbGVuX3Qpc2l6ZW9mKHN0cnVj
dCBzY3RwX3NldGFkYXB0YXRpb24pKSA8IDApIHsKKwkJcGVycm9yKCJzZXRzb2Nrb3B0Iik7CisJ
fQorCisJaWYgKG1ldGEtPnBhcl9yb2xlID09IFRTQ1RQX1NFUlZFUikgeworCQlpZiAocmN2YnVm
c2l6ZSkgeworCQkJaWYgKHVzcnNjdHBfc2V0c29ja29wdChwc29jaywgU09MX1NPQ0tFVCwgU09f
UkNWQlVGLCAmcmN2YnVmc2l6ZSwgc2l6ZW9mKGludCkpIDwgMCkgeworCQkJCXBlcnJvcigic2V0
c29ja29wdDogcmN2YnVmIik7CisJCQl9CisJCX0KKwkJaWYgKHBhcl92ZXJib3NlKSB7CisJCQlp
bnRsZW4gPSBzaXplb2YoaW50KTsKKwkJCWlmICh1c3JzY3RwX2dldHNvY2tvcHQocHNvY2ssIFNP
TF9TT0NLRVQsIFNPX1JDVkJVRiwgJnJjdmJ1ZnNpemUsIChzb2NrbGVuX3QgKikmaW50bGVuKSA8
IDApIHsKKwkJCQlwZXJyb3IoImdldHNvY2tvcHQ6IHJjdmJ1ZiIpOworCQkJfSBlbHNlIHsKKwkJ
CQlmcHJpbnRmKHN0ZG91dCwgIlJlY2VpdmUgYnVmZmVyIHNpemU6ICVkLlxuIiwgcmN2YnVmc2l6
ZSk7CisJCQl9CisJCX0KKworCQlpZiAodXNyc2N0cF9saXN0ZW4ocHNvY2ssIDEpIDwgMCkgewor
CQkJcGVycm9yKCJ1c3JzY3RwX2xpc3RlbiIpOworCQkJZXhpdChFWElUX0ZBSUxVUkUpOworCQl9
CisKKwkJdXNyc2N0cF9zZXRfdXBjYWxsKHBzb2NrLCBoYW5kbGVfYWNjZXB0LCBtZXRhKTsKKwor
CQl3aGlsZSAoMSkgeworI2lmZGVmIF9XSU4zMgorCQkJU2xlZXAoMTAwMCk7CisjZWxzZQorCQkJ
c2xlZXAoMSk7CisjZW5kaWYKKwkJfQorCisJfSBlbHNlIHsKKwkJbWVtc2V0KCZlbmNhcHMsIDAs
IHNpemVvZihzdHJ1Y3Qgc2N0cF91ZHBlbmNhcHMpKTsKKwkJZW5jYXBzLnN1ZV9hZGRyZXNzLnNz
X2ZhbWlseSA9IEFGX0lORVQ7CisJCWVuY2Fwcy5zdWVfcG9ydCA9IGh0b25zKHJlbW90ZV91ZHBf
cG9ydCk7CisJCWlmICh1c3JzY3RwX3NldHNvY2tvcHQocHNvY2ssIElQUFJPVE9fU0NUUCwgU0NU
UF9SRU1PVEVfVURQX0VOQ0FQU19QT1JULCAoY29uc3Qgdm9pZCopJmVuY2FwcywgKHNvY2tsZW5f
dClzaXplb2Yoc3RydWN0IHNjdHBfdWRwZW5jYXBzKSkgPCAwKSB7CisJCQlwZXJyb3IoInNldHNv
Y2tvcHQiKTsKKwkJfQorCisJCXJlbW90ZV9hZGRyLnNpbl9mYW1pbHkgPSBBRl9JTkVUOworI2lm
ZGVmIEhBVkVfU0lOX0xFTgorCQlyZW1vdGVfYWRkci5zaW5fbGVuID0gc2l6ZW9mKHN0cnVjdCBz
b2NrYWRkcl9pbik7CisjZW5kaWYKKwkJaWYgKCFpbmV0X3B0b24oQUZfSU5FVCwgYXJndltvcHRp
bmRdLCAmcmVtb3RlX2FkZHIuc2luX2FkZHIuc19hZGRyKSl7CisJCQlwcmludGYoImVycm9yOiBp
bnZhbGlkIGRlc3RpbmF0aW9uIGFkZHJlc3NcbiIpOworCQkJZXhpdChFWElUX0ZBSUxVUkUpOwor
CQl9CisJCXJlbW90ZV9hZGRyLnNpbl9wb3J0ID0gaHRvbnMocmVtb3RlX3BvcnQpOworCisJCW1l
bXNldChtZXRhLT5idWZmZXIsICdYJywgQlVGRkVSU0laRSk7CisKKwkJdXNyc2N0cF9zZXRfdXBj
YWxsKHBzb2NrLCBoYW5kbGVfdXBjYWxsLCBtZXRhKTsKKworCQl1c3JzY3RwX3NldHNvY2tvcHQo
cHNvY2ssIElQUFJPVE9fU0NUUCwgU0NUUF9OT0RFTEFZLCAmbm9kZWxheSwgc2l6ZW9mKG5vZGVs
YXkpKTsKKworCQlpZiAoZnJhZ3BvaW50KSB7CisJCQlhdi5hc3NvY19pZCA9IDA7CisJCQlhdi5h
c3NvY192YWx1ZSA9IGZyYWdwb2ludDsKKwkJCWlmICh1c3JzY3RwX3NldHNvY2tvcHQocHNvY2ss
IElQUFJPVE9fU0NUUCwgU0NUUF9NQVhTRUcsICZhdiwgc2l6ZW9mKHN0cnVjdCBzY3RwX2Fzc29j
X3ZhbHVlKSkgPCAwKSB7CisJCQkJcGVycm9yKCJzZXRzb2Nrb3B0OiBTQ1RQX01BWFNFRyIpOwor
CQkJfQorCQl9CisKKwkJaWYgKHNuZGJ1ZnNpemUpIHsKKwkJCWlmICh1c3JzY3RwX3NldHNvY2tv
cHQocHNvY2ssIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgJnNuZGJ1ZnNpemUsIHNpemVvZihpbnQp
KSA8IDApIHsKKwkJCQlwZXJyb3IoInNldHNvY2tvcHQ6IHNuZGJ1ZiIpOworCQkJfQorCQl9CisK
KwkJaWYgKHBhcl92ZXJib3NlKSB7CisJCQlpbnRsZW4gPSBzaXplb2YoaW50KTsKKwkJCWlmICh1
c3JzY3RwX2dldHNvY2tvcHQocHNvY2ssIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgJnNuZGJ1ZnNp
emUsIChzb2NrbGVuX3QgKikmaW50bGVuKSA8IDApIHsKKwkJCQlwZXJyb3IoInNldHNvY2tvcHQ6
IFNPX1NOREJVRiIpOworCQkJfSBlbHNlIHsKKwkJCQlmcHJpbnRmKHN0ZG91dCwiU2VuZCBidWZm
ZXIgc2l6ZTogJWQuXG4iLCBzbmRidWZzaXplKTsKKwkJCX0KKwkJfQorCisJCWlmICh1c3JzY3Rw
X2Nvbm5lY3QocHNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikgJnJlbW90ZV9hZGRyLCBzaXplb2Yo
c3RydWN0IHNvY2thZGRyX2luKSkgPT0gLTEgKSB7CisJCQlpZiAoZXJybm8gIT0gRUlOUFJPR1JF
U1MpIHsKKwkJCQlwZXJyb3IoInVzcnNjdHBfY29ubmVjdCIpOworCQkJCWV4aXQoRVhJVF9GQUlM
VVJFKTsKKwkJCX0KKwkJfQorCisJCXdoaWxlICghZG9uZSkgeworI2lmZGVmIF9XSU4zMgorCQkJ
U2xlZXAoMTAwMCk7CisjZWxzZQorCQkJc2xlZXAoMSk7CisjZW5kaWYKKwkJfQorCisJCWlmIChw
YXJfdmVyYm9zZSkgeworCQkJcHJpbnRmKCJGaW5pc2hlZC4uLiBcbiIpOworCQl9CisJfQorCisJ
d2hpbGUgKHVzcnNjdHBfZmluaXNoKCkgIT0gMCkgeworI2lmZGVmIF9XSU4zMgorCQlTbGVlcCgx
MDAwKTsKKyNlbHNlCisJCXNsZWVwKDEpOworI2VuZGlmCisJfQorCisJcmV0dXJuIDA7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIv
dXNyc2N0cGxpYi9DTWFrZUxpc3RzLnR4dAppbmRleCBjNWI3MjI5NmI2NTEzMzY1NjA0ZjQzNWUz
ZTcxOTQwZWNlZDRjODg1Li44OTljYThlMGRlNGJmNzQxMmFkYmJkM2E2Mjg0NzFhMzZlMDM0NDRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3Jz
Y3RwbGliL3VzcnNjdHBsaWIvQ01ha2VMaXN0cy50eHQKQEAgLTEsNiArMSw2IEBACiAjCiAjIENv
cHlyaWdodCAoQykgMjAxNS0yMDE1IE9sZWcgQWxleGVlbmtvdgotIyBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxNyBGZWxpeCBXZWlucmFuaworIyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBGZWxpeCBX
ZWlucmFuawogIwogIyBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwpAQCAtNDMsOCArNDMsOSBAQCBz
ZXQoaW5jbHVkZWRpciAJCQkJJHtwcmVmaXh9L2luY2x1ZGUvdXNyc2N0cCkKIHNldChDTUFLRV9S
RVFVSVJFRF9JTkNMVURFUyAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0pCiBzZXQoQ01BS0Vf
TUFDT1NYX1JQQVRIIAkJMSkKIAoraW5jbHVkZShDaGVja0NDb21waWxlckZsYWcpCisKIGFkZF9k
ZWZpbml0aW9ucygtRF9fVXNlcnNwYWNlX18pCi1hZGRfZGVmaW5pdGlvbnMoLURfX1VzZXJzcGFj
ZV9vc18ke0NNQUtFX1NZU1RFTV9OQU1FfSkKIGFkZF9kZWZpbml0aW9ucygtRFNDVFBfU0lNUExF
X0FMTE9DQVRPUikKIGFkZF9kZWZpbml0aW9ucygtRFNDVFBfUFJPQ0VTU19MRVZFTF9MT0NLUykK
IApAQCAtNTMsMzQgKzU0LDI4IEBAIGFkZF9kZWZpbml0aW9ucygtRFNDVFBfUFJPQ0VTU19MRVZF
TF9MT0NLUykKICMgT1MgREVQRU5ERU5UCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCiAKLWlmICgke0NNQUtFX1NZU1RFTV9OQU1FfSBNQVRDSEVTICJM
aW51eCIpCi0JYWRkX2RlZmluaXRpb25zKC1EX0dOVV9TT1VSQ0UpCitjaGVja19jX2NvbXBpbGVy
X2ZsYWcoLVduby1hZGRyZXNzLW9mLXBhY2tlZC1tZW1iZXIgaGFzX3dub19hZGRyZXNzX29mX3Bh
Y2tlZF9tZW1iZXIpCitpZiAoaGFzX3dub19hZGRyZXNzX29mX3BhY2tlZF9tZW1iZXIpCisJc2V0
KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gLVduby1hZGRyZXNzLW9mLXBhY2tlZC1t
ZW1iZXIiKQogZW5kaWYgKCkKIAotaWYgKCR7Q01BS0VfU1lTVEVNX05BTUV9IE1BVENIRVMgIkZy
ZWVCU0QiKQotCWFkZF9kZWZpbml0aW9ucygtVV9fRnJlZUJTRF9fKQotCXNldChDTUFLRV9DX0ZM
QUdTICIke0NNQUtFX0NfRkxBR1N9ICAgICAtV25vLWFkZHJlc3Mtb2YtcGFja2VkLW1lbWJlciIp
Ci0Jc2V0KENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9IC1Xbm8tYWRkcmVzcy1v
Zi1wYWNrZWQtbWVtYmVyIikKK2NoZWNrX2NfY29tcGlsZXJfZmxhZygtV25vLWRlcHJlY2F0ZWQt
ZGVjbGFyYXRpb25zIGhhc193bm9fZGVwcmVjYXRlZF9kZWNsYXJhdGlvbnMpCitpZiAoaGFzX3du
b19kZXByZWNhdGVkX2RlY2xhcmF0aW9ucykKKwlzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9D
X0ZMQUdTfSAtV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIikKIGVuZGlmICgpCiAKLWlmICgk
e0NNQUtFX1NZU1RFTV9OQU1FfSBNQVRDSEVTICJEYXJ3aW4iKQotCWFkZF9kZWZpbml0aW9ucygt
VV9fQVBQTEVfXykKLQlhZGRfZGVmaW5pdGlvbnMoLURfX0FQUExFX1VTRV9SRkNfMjI5MikKLQlz
ZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAgICAgLVduby1hZGRyZXNzLW9mLXBh
Y2tlZC1tZW1iZXIgLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIpCi0Jc2V0KENNQUtFX0NY
WF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9IC1Xbm8tYWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVy
IC1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiKQoraWYgKENNQUtFX1NZU1RFTV9OQU1FIE1B
VENIRVMgIkxpbnV4IikKKwlhZGRfZGVmaW5pdGlvbnMoLURfR05VX1NPVVJDRSkKIGVuZGlmICgp
CiAKLWlmICgke0NNQUtFX1NZU1RFTV9OQU1FfSBNQVRDSEVTICJEcmFnb25GbHkiKQotCWFkZF9k
ZWZpbml0aW9ucygtVV9fRHJhZ29uRmx5X18pCitpZiAoQ01BS0VfU1lTVEVNX05BTUUgTUFUQ0hF
UyAiRGFyd2luIikKKwlhZGRfZGVmaW5pdGlvbnMoLURfX0FQUExFX1VTRV9SRkNfMjI5MikKIGVu
ZGlmICgpCiAKLWlmICgke0NNQUtFX1NZU1RFTV9OQU1FfSBNQVRDSEVTICJOZXRCU0QiKQotCWFk
ZF9kZWZpbml0aW9ucygtVV9fTmV0QlNEX18pCi1lbmRpZiAoKQorIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBNSVNDCisjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLWlmICgke0NNQUtFX1NZU1RFTV9O
QU1FfSBNQVRDSEVTICJPcGVuQlNEIikKLQlhZGRfZGVmaW5pdGlvbnMoLVVfX09wZW5CU0RfXykK
LWVuZGlmICgpCiAKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIwpAQCAtMTcxLDEwICsxNjYsMTMgQEAgbGlzdChBUFBFTkQgdXNyc2N0cF9zb3VyY2Vz
CiBhZGRfbGlicmFyeSh1c3JzY3RwIFNIQVJFRCAke3VzcnNjdHBfc291cmNlc30gJHt1c3JzY3Rw
X2hlYWRlcnN9KQogYWRkX2xpYnJhcnkodXNyc2N0cC1zdGF0aWMgU1RBVElDICR7dXNyc2N0cF9z
b3VyY2VzfSAke3VzcnNjdHBfaGVhZGVyc30pCiAKK3RhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVz
KHVzcnNjdHAgUFVCTElDICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfSkKK3RhcmdldF9pbmNs
dWRlX2RpcmVjdG9yaWVzKHVzcnNjdHAtc3RhdGljIFBVQkxJQyAke0NNQUtFX0NVUlJFTlRfU09V
UkNFX0RJUn0pCisKIGlmIChXSU4zMikKIAltZXNzYWdlKFNUQVRVUyAibGluayBsaWJyYXJ5OiB3
czJfMzIiKQotCXRhcmdldF9saW5rX2xpYnJhcmllcyh1c3JzY3RwIHdzMl8zMikKLQl0YXJnZXRf
bGlua19saWJyYXJpZXModXNyc2N0cC1zdGF0aWMgd3MyXzMyKQorCXRhcmdldF9saW5rX2xpYnJh
cmllcyh1c3JzY3RwIHdzMl8zMiBpcGhscGFwaS5saWIpCisJdGFyZ2V0X2xpbmtfbGlicmFyaWVz
KHVzcnNjdHAtc3RhdGljIHdzMl8zMiBpcGhscGFwaS5saWIpCiBlbmRpZiAoKQogCiBzZXRfdGFy
Z2V0X3Byb3BlcnRpZXModXNyc2N0cC1zdGF0aWMgUFJPUEVSVElFUyBPVVRQVVRfTkFNRSAidXNy
c2N0cCIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL01ha2VmaWxlLm5tYWtlIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3Vz
cnNjdHBsaWIvdXNyc2N0cGxpYi9NYWtlZmlsZS5ubWFrZQppbmRleCA0OGQyYmQxMTBjN2U1YmNm
OGI5ZDRjOWI4ZTMwNzlhZTViY2ZmZDUwLi5hZmNkYTZkOTE1ZGI4YzQ1NjgxZDNhNDk3NjQ4YTc3
NDU2ZDFmZDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL01ha2VmaWxlLm5tYWtl
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNy
c2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvTWFrZWZpbGUubm1ha2UKQEAgLTMxLDcgKzMxLDcg
QEAKIENGTEFHUz0vSS4gL1czIC9XWA0KIA0KIENWQVJTRExMPS1EU0NUUF9ERUJVRyAtRFNDVFBf
U0lNUExFX0FMTE9DQVRPUiAtRFNDVFBfUFJPQ0VTU19MRVZFTF9MT0NLUw0KLUNWQVJTRExMPSQo
Q1ZBUlNETEwpIC1EX19Vc2Vyc3BhY2VfXyAtRF9fVXNlcnNwYWNlX29zX1dpbmRvd3MNCitDVkFS
U0RMTD0kKENWQVJTRExMKSAtRF9fVXNlcnNwYWNlX18NCiBDVkFSU0RMTD0kKENWQVJTRExMKSAt
RElORVQgLURJTkVUNg0KIENWQVJTRExMPSQoQ1ZBUlNETEwpIC1EX0xJQg0KIA0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0
cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbWVzb24uYnVpbGQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGli
L21lc29uLmJ1aWxkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxYTY2NTZmMWRhOWIzNWI4OTgxYzQ0MDFhZGM4Yjgw
ZDhhMTljMDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL21lc29uLmJ1
aWxkCkBAIC0wLDAgKzEsMjAgQEAKKyMgSW5jbHVkZXMKK2luY2x1ZGVfZGlycyA9IGluY2x1ZGVf
ZGlyZWN0b3JpZXMoCisgICAgJy4nLAorICAgICduZXRpbmV0JywKKyAgICAnbmV0aW5ldDYnLAor
KQorCisjIFNvdXJjZXMKK3NvdXJjZXMgPSBmaWxlcyhbCisgICAgJ3VzZXJfZW52aXJvbm1lbnQu
YycsCisgICAgJ3VzZXJfbWJ1Zi5jJywKKyAgICAndXNlcl9yZWN2X3RocmVhZC5jJywKKyAgICAn
dXNlcl9zb2NrZXQuYycsCitdKQorCitzdWJkaXIoJ25ldGluZXQnKQorc3ViZGlyKCduZXRpbmV0
NicpCisKKyMgSW5zdGFsbCB1c3JzY3RwLmgKK2luc3RhbGxfaGVhZGVycygndXNyc2N0cC5oJykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9tZXNvbi5idWlsZCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3Jz
Y3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9tZXNvbi5idWlsZApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YTg2NjE1
YmNkNGQyMDg1ZDFiMDBlMDcxMTRhMzAxZjQyZjA4MTdhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNj
dHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L21lc29uLmJ1aWxkCkBAIC0wLDAgKzEsMjAgQEAKK3Nv
dXJjZXMgKz0gZmlsZXMoWworICAgICdzY3RwX2FzY29uZi5jJywKKyAgICAnc2N0cF9hdXRoLmMn
LAorICAgICdzY3RwX2JzZF9hZGRyLmMnLAorICAgICdzY3RwX2NhbGxvdXQuYycsCisgICAgJ3Nj
dHBfY2NfZnVuY3Rpb25zLmMnLAorICAgICdzY3RwX2NyYzMyLmMnLAorICAgICdzY3RwX2luZGF0
YS5jJywKKyAgICAnc2N0cF9pbnB1dC5jJywKKyAgICAnc2N0cF9vdXRwdXQuYycsCisgICAgJ3Nj
dHBfcGNiLmMnLAorICAgICdzY3RwX3BlZWxvZmYuYycsCisgICAgJ3NjdHBfc2hhMS5jJywKKyAg
ICAnc2N0cF9zc19mdW5jdGlvbnMuYycsCisgICAgJ3NjdHBfc3lzY3RsLmMnLAorICAgICdzY3Rw
X3RpbWVyLmMnLAorICAgICdzY3RwX3VzZXJzcGFjZS5jJywKKyAgICAnc2N0cF91c3JyZXEuYycs
CisgICAgJ3NjdHB1dGlsLmMnLAorXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIv
bmV0aW5ldC9zY3RwLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cC5oCm9sZCBt
b2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggZjViMWQ4Mjg5MDIzOGJlYjg0OGQ1ZmEx
OWYzZGJjZjAyOWQ3MDcwNC4uOGQ4YmYzMWZlODAwNmE4MDgzODgzZmIxNzUyMzJjYjZlMWM4MGI1
YwotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3Vz
cnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cC5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwLmgKQEAgLTMyLDIyICszMiwyMiBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZmRlZiBfX0ZyZWVCU0RfXworI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVk
ZSA8c3lzL2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0
cC5oIDMyMzY1NyAyMDE3LTA5LTE2IDIxOjI2OjA2WiB0dWV4ZW4gJCIpOworX19GQlNESUQoIiRG
cmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHAuaCAzNTYzNTcgMjAyMC0wMS0wNCAyMDozMzox
MlogdHVleGVuICQiKTsKICNlbmRpZgogCiAjaWZuZGVmIF9ORVRJTkVUX1NDVFBfSF8KICNkZWZp
bmUgX05FVElORVRfU0NUUF9IXwogCi0jaWYgKGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVk
KF9fVXNlcnNwYWNlX29zX0xpbnV4KSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0Rhcndpbikp
CisjaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19saW51eF9fKQogI2luY2x1ZGUg
PHN0ZGludC5oPgogI2VuZGlmCiAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KIAogCi0jaWYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiAhZGVmaW5lZChfV0lOMzIpCiAjZGVm
aW5lIFNDVFBfUEFDS0VEIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpCiAjZWxzZQogI3ByYWdtYSBw
YWNrIChwdXNoLCAxKQpAQCAtMjg2LDExICsyODYsMTEgQEAgc3RydWN0IHNjdHBfcGFyYW1oZHIg
ewogI2RlZmluZSBTQ1RQX1BFRUxPRkYgICAgICAgICAgICAgICAgICAgIDB4MDAwMDgwMGEKIC8q
IHRoZSByZWFsIHdvcmtlciBmb3Igc2N0cF9nZXRhZGRybGVuKCkgKi8KICNkZWZpbmUgU0NUUF9H
RVRfQUREUl9MRU4gICAgICAgICAgICAgICAweDAwMDA4MDBiCi0jaWYgZGVmaW5lZChfX0FQUExF
X18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAv
KiB0ZW1wb3Jhcnkgd29ya2Fyb3VuZCBmb3IgQXBwbGUgbGlzdGVuKCkgaXNzdWUsIG5vIGFyZ3Mg
dXNlZCAqLwogI2RlZmluZSBTQ1RQX0xJU1RFTl9GSVgJCQkweDAwMDA4MDBjCiAjZW5kaWYKLSNp
ZiBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogLyogd29ya2Fyb3VuZCBmb3IgQ3lnd2luIG9uIFdpbmRvd3M6IHJldHVy
bnMgdGhlIFNPQ0tFVCBoYW5kbGUgKi8KICNkZWZpbmUgU0NUUF9HRVRfSEFORExFCQkJMHgwMDAw
ODAwZAogI2VuZGlmCkBAIC01MzAsNiArNTMwLDcgQEAgc3RydWN0IHNjdHBfZXJyb3JfYXV0aF9p
bnZhbGlkX2htYWMgewogI2RlZmluZSBTQ1RQX1BDQl9GTEFHU19CT1VOREFMTAkJMHgwMDAwMDAw
NAogI2RlZmluZSBTQ1RQX1BDQl9GTEFHU19BQ0NFUFRJTkcJMHgwMDAwMDAwOAogI2RlZmluZSBT
Q1RQX1BDQl9GTEFHU19VTkJPVU5ECQkweDAwMDAwMDEwCisjZGVmaW5lIFNDVFBfUENCX0ZMQUdT
X1NORF9JVEVSQVRPUl9VUCAgMHgwMDAwMDAyMAogI2RlZmluZSBTQ1RQX1BDQl9GTEFHU19DTE9T
RV9JUCAgICAgICAgIDB4MDAwNDAwMDAKICNkZWZpbmUgU0NUUF9QQ0JfRkxBR1NfV0FTX0NPTk5F
Q1RFRCAgICAweDAwMDgwMDAwCiAjZGVmaW5lIFNDVFBfUENCX0ZMQUdTX1dBU19BQk9SVEVEICAg
ICAgMHgwMDEwMDAwMApAQCAtNjA3LDkgKzYwOCwxMiBAQCBzdHJ1Y3Qgc2N0cF9lcnJvcl9hdXRo
X2ludmFsaWRfaG1hYyB7CiAjZGVmaW5lIFNDVFBfTU9CSUxJVFlfUFJJTV9ERUxFVEVEICAgICAg
IDB4MDAwMDAwMDQKIAogCi0jZGVmaW5lIFNDVFBfU01BTExFU1RfUE1UVSA1MTIJIC8qIHNtYWxs
ZXN0IHBtdHUgYWxsb3dlZCB3aGVuIGRpc2FibGluZyBQTVRVIGRpc2NvdmVyeSAqLworLyogU21h
bGxlc3QgUE1UVSBhbGxvd2VkIHdoZW4gZGlzYWJsaW5nIFBNVFUgZGlzY292ZXJ5ICovCisjZGVm
aW5lIFNDVFBfU01BTExFU1RfUE1UVSA1MTIKKy8qIExhcmdlc3QgUE1UVSBhbGxvd2VkIHdoZW4g
ZGlzYWJsaW5nIFBNVFUgZGlzY292ZXJ5ICovCisjZGVmaW5lIFNDVFBfTEFSR0VTVF9QTVRVICA2
NTUzNgogCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQo
X1dJTjMyKQogI3ByYWdtYSBwYWNrKHBvcCkKICNlbmRpZgogI3VuZGVmIFNDVFBfUEFDS0VECmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9hc2NvbmYuYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3Jz
Y3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2FzY29uZi5jCm9sZCBtb2RlIDEwMDY0NApu
ZXcgbW9kZSAxMDA3NTUKaW5kZXggZjY1NWY2M2MyNzI0ODI4MjcyMmEyMmJjMTI4NjJlMDEzYjQy
OWQ4MS4uODFlMmFjZmQ1MGExZmIyNTIzOWRkZWI2OWQzZjg2NGQ1NGJiOTBmMwotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0
cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9hc2NvbmYuYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3Jz
Y3RwbGliL25ldGluZXQvc2N0cF9hc2NvbmYuYwpAQCAtMzIsOSArMzIsOSBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZmRlZiBfX0ZyZWVCU0RfXworI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVk
ZSA8c3lzL2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0
cF9hc2NvbmYuYyAzMjQwNTYgMjAxNy0wOS0yNyAxMzowNToyM1ogdHVleGVuICQiKTsKK19fRkJT
RElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX2FzY29uZi5jIDM2MzE5NCAyMDIw
LTA3LTE0IDIwOjMyOjUwWiB0dWV4ZW4gJCIpOwogI2VuZGlmCiAKICNpbmNsdWRlIDxuZXRpbmV0
L3NjdHBfb3MuaD4KQEAgLTUzLDEwICs1Myw2IEBAIF9fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9z
eXMvbmV0aW5ldC9zY3RwX2FzY29uZi5jIDMyNDA1NiAyMDE3LTA5LTI3IDEzOjA1OjIzWiB0CiAg
KiBTQ1RQX0RFQlVHX0FTQ09ORjI6IGRldGFpbGVkIGluZm8KICAqLwogCi0jaWYgZGVmaW5lZChf
X0FQUExFX18pCi0jZGVmaW5lIEFQUExFX0ZJTEVfTk8gMQotI2VuZGlmCi0KIC8qCiAgKiBSRkMg
NTA2MQogICoKQEAgLTEwNSw0NyArMTAxLDUyIEBAIHNjdHBfYXNjb25mX3N1Y2Nlc3NfcmVzcG9u
c2UodWludDMyX3QgaWQpCiAKIHN0YXRpYyBzdHJ1Y3QgbWJ1ZiAqCiBzY3RwX2FzY29uZl9lcnJv
cl9yZXNwb25zZSh1aW50MzJfdCBpZCwgdWludDE2X3QgY2F1c2UsIHVpbnQ4X3QgKmVycm9yX3Rs
diwKLQkJCSAgIHVpbnQxNl90IHRsdl9sZW5ndGgpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50MTZfdCB0bHZfbGVuZ3RoKQogewogCXN0cnVjdCBtYnVmICptX3JlcGx5ID0gTlVMTDsK
IAlzdHJ1Y3Qgc2N0cF9hc2NvbmZfcGFyYW1oZHIgKmFwaDsKIAlzdHJ1Y3Qgc2N0cF9lcnJvcl9j
YXVzZSAqZXJyb3I7CisJdWludDMyX3QgYnVmX2xlbjsKKwl1aW50MTZfdCBpLCBwYXJhbV9sZW5n
dGgsIGNhdXNlX2xlbmd0aCwgcGFkZGluZ19sZW5ndGg7CiAJdWludDhfdCAqdGx2OwogCi0JbV9y
ZXBseSA9IHNjdHBfZ2V0X21idWZfZm9yX21zZygoc2l6ZW9mKHN0cnVjdCBzY3RwX2FzY29uZl9w
YXJhbWhkcikgKwotCQkJCQkgdGx2X2xlbmd0aCArCi0JCQkJCSBzaXplb2Yoc3RydWN0IHNjdHBf
ZXJyb3JfY2F1c2UpKSwKLQkJCQkJMCwgTV9OT1dBSVQsIDEsIE1UX0RBVEEpOworCWlmIChlcnJv
cl90bHYgPT0gTlVMTCkgeworCQl0bHZfbGVuZ3RoID0gMDsKKwl9CisJY2F1c2VfbGVuZ3RoID0g
c2l6ZW9mKHN0cnVjdCBzY3RwX2Vycm9yX2NhdXNlKSArIHRsdl9sZW5ndGg7CisJcGFyYW1fbGVu
Z3RoID0gc2l6ZW9mKHN0cnVjdCBzY3RwX2FzY29uZl9wYXJhbWhkcikgKyBjYXVzZV9sZW5ndGg7
CisJcGFkZGluZ19sZW5ndGggPSB0bHZfbGVuZ3RoICUgNDsKKwlpZiAocGFkZGluZ19sZW5ndGgg
IT0gMCkgeworCQlwYWRkaW5nX2xlbmd0aCA9IDQgLSBwYWRkaW5nX2xlbmd0aDsKKwl9CisJYnVm
X2xlbiA9IHBhcmFtX2xlbmd0aCArIHBhZGRpbmdfbGVuZ3RoOworCWlmIChidWZfbGVuID4gTUxF
TikgeworCQlTQ1RQREJHKFNDVFBfREVCVUdfQVNDT05GMSwKKwkJCSJhc2NvbmZfZXJyb3JfcmVz
cG9uc2U6IHRsdl9sZW5ndGggKCV4aCkgdG9vIGJpZ1xuIiwKKwkJCXRsdl9sZW5ndGgpOworCQly
ZXR1cm4gKE5VTEwpOworCX0KKwltX3JlcGx5ID0gc2N0cF9nZXRfbWJ1Zl9mb3JfbXNnKGJ1Zl9s
ZW4sIDAsIE1fTk9XQUlULCAxLCBNVF9EQVRBKTsKIAlpZiAobV9yZXBseSA9PSBOVUxMKSB7CiAJ
CVNDVFBEQkcoU0NUUF9ERUJVR19BU0NPTkYxLAogCQkJImFzY29uZl9lcnJvcl9yZXNwb25zZTog
Y291bGRuJ3QgZ2V0IG1idWYhXG4iKTsKIAkJcmV0dXJuIChOVUxMKTsKIAl9CiAJYXBoID0gbXRv
ZChtX3JlcGx5LCBzdHJ1Y3Qgc2N0cF9hc2NvbmZfcGFyYW1oZHIgKik7Ci0JZXJyb3IgPSAoc3Ry
dWN0IHNjdHBfZXJyb3JfY2F1c2UgKikoYXBoICsgMSk7Ci0KLQlhcGgtPmNvcnJlbGF0aW9uX2lk
ID0gaWQ7CiAJYXBoLT5waC5wYXJhbV90eXBlID0gaHRvbnMoU0NUUF9FUlJPUl9DQVVTRV9JTkQp
OworCWFwaC0+cGgucGFyYW1fbGVuZ3RoID0gaHRvbnMocGFyYW1fbGVuZ3RoKTsKKwlhcGgtPmNv
cnJlbGF0aW9uX2lkID0gaWQ7CisJZXJyb3IgPSAoc3RydWN0IHNjdHBfZXJyb3JfY2F1c2UgKiko
YXBoICsgMSk7CiAJZXJyb3ItPmNvZGUgPSBodG9ucyhjYXVzZSk7Ci0JZXJyb3ItPmxlbmd0aCA9
IHRsdl9sZW5ndGggKyBzaXplb2Yoc3RydWN0IHNjdHBfZXJyb3JfY2F1c2UpOwotCWFwaC0+cGgu
cGFyYW1fbGVuZ3RoID0gZXJyb3ItPmxlbmd0aCArCi0JICAgIHNpemVvZihzdHJ1Y3Qgc2N0cF9h
c2NvbmZfcGFyYW1oZHIpOwotCi0JaWYgKGFwaC0+cGgucGFyYW1fbGVuZ3RoID4gTUxFTikgewot
CQlTQ1RQREJHKFNDVFBfREVCVUdfQVNDT05GMSwKLQkJCSJhc2NvbmZfZXJyb3JfcmVzcG9uc2U6
IHRsdl9sZW5ndGggKCV4aCkgdG9vIGJpZ1xuIiwKLQkJCXRsdl9sZW5ndGgpOwotCQlzY3RwX21f
ZnJlZW0obV9yZXBseSk7CS8qIGRpc2NhcmQgKi8KLQkJcmV0dXJuIChOVUxMKTsKLQl9CisJZXJy
b3ItPmxlbmd0aCA9IGh0b25zKGNhdXNlX2xlbmd0aCk7CiAJaWYgKGVycm9yX3RsdiAhPSBOVUxM
KSB7CiAJCXRsdiA9ICh1aW50OF90ICopIChlcnJvciArIDEpOwogCQltZW1jcHkodGx2LCBlcnJv
cl90bHYsIHRsdl9sZW5ndGgpOworCQlmb3IgKGkgPSAwOyBpIDwgcGFkZGluZ19sZW5ndGg7IGkr
KykgeworCQkJdGx2W3Rsdl9sZW5ndGggKyBpXSA9IDA7CisJCX0KIAl9Ci0JU0NUUF9CVUZfTEVO
KG1fcmVwbHkpID0gYXBoLT5waC5wYXJhbV9sZW5ndGg7Ci0JZXJyb3ItPmxlbmd0aCA9IGh0b25z
KGVycm9yLT5sZW5ndGgpOwotCWFwaC0+cGgucGFyYW1fbGVuZ3RoID0gaHRvbnMoYXBoLT5waC5w
YXJhbV9sZW5ndGgpOwotCisJU0NUUF9CVUZfTEVOKG1fcmVwbHkpID0gYnVmX2xlbjsKIAlyZXR1
cm4gKG1fcmVwbHkpOwogfQogCkBAIC0xNzQsMTAgKzE3NSwxNiBAQCBzY3RwX3Byb2Nlc3NfYXNj
b25mX2FkZF9pcChzdHJ1Y3Qgc29ja2FkZHIgKnNyYywgc3RydWN0IHNjdHBfYXNjb25mX3BhcmFt
aGRyICphcAogI2VuZGlmCiAKIAlhcGFyYW1fbGVuZ3RoID0gbnRvaHMoYXBoLT5waC5wYXJhbV9s
ZW5ndGgpOworCWlmIChhcGFyYW1fbGVuZ3RoIDwgc2l6ZW9mKHN0cnVjdCBzY3RwX2FzY29uZl9w
YXJhbWhkcikgKyBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpKSB7CisJCXJldHVybiAoTlVM
TCk7CisJfQogCXBoID0gKHN0cnVjdCBzY3RwX3BhcmFtaGRyICopKGFwaCArIDEpOwogCXBhcmFt
X3R5cGUgPSBudG9ocyhwaC0+cGFyYW1fdHlwZSk7CiAjaWYgZGVmaW5lZChJTkVUKSB8fCBkZWZp
bmVkKElORVQ2KQogCXBhcmFtX2xlbmd0aCA9IG50b2hzKHBoLT5wYXJhbV9sZW5ndGgpOworCWlm
IChwYXJhbV9sZW5ndGggKyBzaXplb2Yoc3RydWN0IHNjdHBfYXNjb25mX3BhcmFtaGRyKSAhPSBh
cGFyYW1fbGVuZ3RoKSB7CisJCXJldHVybiAoTlVMTCk7CisJfQogI2VuZGlmCiAJc2EgPSAmc3Rv
cmUuc2E7CiAJc3dpdGNoIChwYXJhbV90eXBlKSB7CkBAIC0yNDUsNiArMjUyLDcgQEAgc2N0cF9w
cm9jZXNzX2FzY29uZl9hZGRfaXAoc3RydWN0IHNvY2thZGRyICpzcmMsIHN0cnVjdCBzY3RwX2Fz
Y29uZl9wYXJhbWhkciAqYXAKIAkJICAgICAgICAicHJvY2Vzc19hc2NvbmZfYWRkX2lwOiB1c2lu
ZyBzb3VyY2UgYWRkciAiKTsKIAkJU0NUUERCR19BRERSKFNDVFBfREVCVUdfQVNDT05GMSwgc3Jj
KTsKIAl9CisJbmV0ID0gTlVMTDsKIAkvKiBhZGQgdGhlIGFkZHJlc3MgKi8KIAlpZiAoYmFkX2Fk
ZHJlc3MpIHsKIAkJbV9yZXBseSA9IHNjdHBfYXNjb25mX2Vycm9yX3Jlc3BvbnNlKGFwaC0+Y29y
cmVsYXRpb25faWQsCkBAIC0yNTksMTcgKzI2NywxOSBAQCBzY3RwX3Byb2Nlc3NfYXNjb25mX2Fk
ZF9pcChzdHJ1Y3Qgc29ja2FkZHIgKnNyYywgc3RydWN0IHNjdHBfYXNjb25mX3BhcmFtaGRyICph
cAogCQkgICAgU0NUUF9DQVVTRV9SRVNPVVJDRV9TSE9SVEFHRSwgKHVpbnQ4X3QgKikgYXBoLAog
CQkgICAgYXBhcmFtX2xlbmd0aCk7CiAJfSBlbHNlIHsKLQkJLyogbm90aWZ5IHVwcGVyIGxheWVy
ICovCi0JCXNjdHBfdWxwX25vdGlmeShTQ1RQX05PVElGWV9BU0NPTkZfQUREX0lQLCBzdGNiLCAw
LCBzYSwgU0NUUF9TT19OT1RfTE9DS0VEKTsKIAkJaWYgKHJlc3BvbnNlX3JlcXVpcmVkKSB7CiAJ
CQltX3JlcGx5ID0KIAkJCSAgICBzY3RwX2FzY29uZl9zdWNjZXNzX3Jlc3BvbnNlKGFwaC0+Y29y
cmVsYXRpb25faWQpOwogCQl9Ci0JCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1BB
VEhNVFVSQUlTRSwgc3RjYi0+c2N0cF9lcCwgc3RjYiwgbmV0KTsKLQkJc2N0cF90aW1lcl9zdGFy
dChTQ1RQX1RJTUVSX1RZUEVfSEVBUlRCRUFULCBzdGNiLT5zY3RwX2VwLAotCQkgICAgICAgICAg
ICAgICAgIHN0Y2IsIG5ldCk7Ci0JCWlmIChzZW5kX2hiKSB7Ci0JCQlzY3RwX3NlbmRfaGIoc3Rj
YiwgbmV0LCBTQ1RQX1NPX05PVF9MT0NLRUQpOworCQlpZiAobmV0ICE9IE5VTEwpIHsKKwkJCS8q
IG5vdGlmeSB1cHBlciBsYXllciAqLworCQkJc2N0cF91bHBfbm90aWZ5KFNDVFBfTk9USUZZX0FT
Q09ORl9BRERfSVAsIHN0Y2IsIDAsIHNhLCBTQ1RQX1NPX05PVF9MT0NLRUQpOworCQkJc2N0cF90
aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfUEFUSE1UVVJBSVNFLCBzdGNiLT5zY3RwX2VwLCBz
dGNiLCBuZXQpOworCQkJc2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfSEVBUlRCRUFU
LCBzdGNiLT5zY3RwX2VwLAorCQkJCQkgc3RjYiwgbmV0KTsKKwkJCWlmIChzZW5kX2hiKSB7CisJ
CQkJc2N0cF9zZW5kX2hiKHN0Y2IsIG5ldCwgU0NUUF9TT19OT1RfTE9DS0VEKTsKKwkJCX0KIAkJ
fQogCX0KIAlyZXR1cm4gKG1fcmVwbHkpOwpAQCAtMjc4LDcgKzI4OCw3IEBAIHNjdHBfcHJvY2Vz
c19hc2NvbmZfYWRkX2lwKHN0cnVjdCBzb2NrYWRkciAqc3JjLCBzdHJ1Y3Qgc2N0cF9hc2NvbmZf
cGFyYW1oZHIgKmFwCiBzdGF0aWMgaW50CiBzY3RwX2FzY29uZl9kZWxfcmVtb3RlX2FkZHJzX2V4
Y2VwdChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzb2NrYWRkciAqc3JjKQogewotCXN0
cnVjdCBzY3RwX25ldHMgKnNyY19uZXQsICpuZXQ7CisJc3RydWN0IHNjdHBfbmV0cyAqc3JjX25l
dCwgKm5ldCwgKm5uZXQ7CiAKIAkvKiBtYWtlIHN1cmUgdGhlIHNvdXJjZSBhZGRyZXNzIGV4aXN0
cyBhcyBhIGRlc3RpbmF0aW9uIG5ldCAqLwogCXNyY19uZXQgPSBzY3RwX2ZpbmRuZXQoc3RjYiwg
c3JjKTsKQEAgLTI4OCwxMCArMjk4LDkgQEAgc2N0cF9hc2NvbmZfZGVsX3JlbW90ZV9hZGRyc19l
eGNlcHQoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc29ja2FkZHIgKnNyYykKIAl9CiAK
IAkvKiBkZWxldGUgYWxsIGRlc3RpbmF0aW9uIGFkZHJlc3NlcyBleGNlcHQgdGhlIHNvdXJjZSAq
LwotCVRBSUxRX0ZPUkVBQ0gobmV0LCAmc3RjYi0+YXNvYy5uZXRzLCBzY3RwX25leHQpIHsKKwlU
QUlMUV9GT1JFQUNIX1NBRkUobmV0LCAmc3RjYi0+YXNvYy5uZXRzLCBzY3RwX25leHQsIG5uZXQp
IHsKIAkJaWYgKG5ldCAhPSBzcmNfbmV0KSB7CiAJCQkvKiBkZWxldGUgdGhpcyBhZGRyZXNzICov
Ci0JCQlzY3RwX3JlbW92ZV9uZXQoc3RjYiwgbmV0KTsKIAkJCVNDVFBEQkcoU0NUUF9ERUJVR19B
U0NPTkYxLAogCQkJCSJhc2NvbmZfZGVsX3JlbW90ZV9hZGRyc19leGNlcHQ6IGRlbGV0aW5nICIp
OwogCQkJU0NUUERCR19BRERSKFNDVFBfREVCVUdfQVNDT05GMSwKQEAgLTI5OSw2ICszMDgsNyBA
QCBzY3RwX2FzY29uZl9kZWxfcmVtb3RlX2FkZHJzX2V4Y2VwdChzdHJ1Y3Qgc2N0cF90Y2IgKnN0
Y2IsIHN0cnVjdCBzb2NrYWRkciAqc3JjKQogCQkJLyogbm90aWZ5IHVwcGVyIGxheWVyICovCiAJ
CQlzY3RwX3VscF9ub3RpZnkoU0NUUF9OT1RJRllfQVNDT05GX0RFTEVURV9JUCwgc3RjYiwgMCwK
IAkJCSAgICAoc3RydWN0IHNvY2thZGRyICopJm5ldC0+cm8uX2xfYWRkciwgU0NUUF9TT19OT1Rf
TE9DS0VEKTsKKwkJCXNjdHBfcmVtb3ZlX25ldChzdGNiLCBuZXQpOwogCQl9CiAJfQogCXJldHVy
biAoMCk7CkBAIC0zMjksMTAgKzMzOSwxNiBAQCBzY3RwX3Byb2Nlc3NfYXNjb25mX2RlbGV0ZV9p
cChzdHJ1Y3Qgc29ja2FkZHIgKnNyYywKICNlbmRpZgogCiAJYXBhcmFtX2xlbmd0aCA9IG50b2hz
KGFwaC0+cGgucGFyYW1fbGVuZ3RoKTsKKwlpZiAoYXBhcmFtX2xlbmd0aCA8IHNpemVvZihzdHJ1
Y3Qgc2N0cF9hc2NvbmZfcGFyYW1oZHIpICsgc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKSkg
eworCQlyZXR1cm4gKE5VTEwpOworCX0KIAlwaCA9IChzdHJ1Y3Qgc2N0cF9wYXJhbWhkciAqKShh
cGggKyAxKTsKIAlwYXJhbV90eXBlID0gbnRvaHMocGgtPnBhcmFtX3R5cGUpOwogI2lmIGRlZmlu
ZWQoSU5FVCkgfHwgZGVmaW5lZChJTkVUNikKIAlwYXJhbV9sZW5ndGggPSBudG9ocyhwaC0+cGFy
YW1fbGVuZ3RoKTsKKwlpZiAocGFyYW1fbGVuZ3RoICsgc2l6ZW9mKHN0cnVjdCBzY3RwX2FzY29u
Zl9wYXJhbWhkcikgIT0gYXBhcmFtX2xlbmd0aCkgeworCQlyZXR1cm4gKE5VTEwpOworCX0KICNl
bmRpZgogCXNhID0gJnN0b3JlLnNhOwogCXN3aXRjaCAocGFyYW1fdHlwZSkgewpAQCAtNDY0LDEw
ICs0ODAsMTYgQEAgc2N0cF9wcm9jZXNzX2FzY29uZl9zZXRfcHJpbWFyeShzdHJ1Y3Qgc29ja2Fk
ZHIgKnNyYywKICNlbmRpZgogCiAJYXBhcmFtX2xlbmd0aCA9IG50b2hzKGFwaC0+cGgucGFyYW1f
bGVuZ3RoKTsKKwlpZiAoYXBhcmFtX2xlbmd0aCA8IHNpemVvZihzdHJ1Y3Qgc2N0cF9hc2NvbmZf
cGFyYW1oZHIpICsgc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKSkgeworCQlyZXR1cm4gKE5V
TEwpOworCX0KIAlwaCA9IChzdHJ1Y3Qgc2N0cF9wYXJhbWhkciAqKShhcGggKyAxKTsKIAlwYXJh
bV90eXBlID0gbnRvaHMocGgtPnBhcmFtX3R5cGUpOwogI2lmIGRlZmluZWQoSU5FVCkgfHwgZGVm
aW5lZChJTkVUNikKIAlwYXJhbV9sZW5ndGggPSBudG9ocyhwaC0+cGFyYW1fbGVuZ3RoKTsKKwlp
ZiAocGFyYW1fbGVuZ3RoICsgc2l6ZW9mKHN0cnVjdCBzY3RwX2FzY29uZl9wYXJhbWhkcikgIT0g
YXBhcmFtX2xlbmd0aCkgeworCQlyZXR1cm4gKE5VTEwpOworCX0KICNlbmRpZgogCXNhID0gJnN0
b3JlLnNhOwogCXN3aXRjaCAocGFyYW1fdHlwZSkgewpAQCAtNTc2LDggKzU5OCw3IEBAIHNjdHBf
cHJvY2Vzc19hc2NvbmZfc2V0X3ByaW1hcnkoc3RydWN0IHNvY2thZGRyICpzcmMsCiAJCQkJc2N0
cF9tb3ZlX2NodW5rc19mcm9tX25ldChzdGNiLAogCQkJCQkJc3RjYi0+YXNvYy5kZWxldGVkX3By
aW1hcnkpOwogCQkJfQotCQkJc2N0cF9kZWxldGVfcHJpbV90aW1lcihzdGNiLT5zY3RwX2VwLCBz
dGNiLAotCQkJCQkJc3RjYi0+YXNvYy5kZWxldGVkX3ByaW1hcnkpOworCQkJc2N0cF9kZWxldGVf
cHJpbV90aW1lcihzdGNiLT5zY3RwX2VwLCBzdGNiKTsKIAkJfQogCX0gZWxzZSB7CiAJCS8qIGNv
dWxkbid0IHNldCB0aGUgcmVxdWVzdGVkIHByaW1hcnkgYWRkcmVzcyEgKi8KQEAgLTY4NywxMCAr
NzA4LDExIEBAIHNjdHBfaGFuZGxlX2FzY29uZihzdHJ1Y3QgbWJ1ZiAqbSwgdW5zaWduZWQgaW50
IG9mZnNldCwKIAkJU0NUUERCRyhTQ1RQX0RFQlVHX0FTQ09ORjEsCiAJCQkiaGFuZGxlX2FzY29u
ZjogY291bGRuJ3QgZ2V0IGxvb2t1cCBhZGRyIVxuIik7CiAJCS8qIHJlc3BvbmQgd2l0aCBhIG1p
c3NpbmcvaW52YWxpZCBtYW5kYXRvcnkgcGFyYW1ldGVyIGVycm9yICovCisJCXNjdHBfbV9mcmVl
bShtX2Fjayk7CiAJCXJldHVybjsKIAl9Ci0JLyogcGFyYW1fbGVuZ3RoIGlzIGFscmVhZHkgdmFs
aWRhdGVkIGluIHByb2Nlc3NfY29udHJvbC4uLiAqLwotCW9mZnNldCArPSBudG9ocyhwX2FkZHIt
PnBoLnBhcmFtX2xlbmd0aCk7CS8qIHNraXAgbG9va3VwIGFkZHIgKi8KKwkvKiBza2lwIGxvb2t1
cCBhZGRyICovCisJb2Zmc2V0ICs9IFNDVFBfU0laRTMyKG50b2hzKHBfYWRkci0+cGgucGFyYW1f
bGVuZ3RoKSk7CiAJLyogZ2V0IHBvaW50ZXIgdG8gZmlyc3QgYXNjb25mIHBhcmFtIGluIEFTQ09O
RiAqLwogCWFwaCA9IChzdHJ1Y3Qgc2N0cF9hc2NvbmZfcGFyYW1oZHIgKilzY3RwX21fZ2V0cHRy
KG0sIG9mZnNldCwgc2l6ZW9mKHN0cnVjdCBzY3RwX2FzY29uZl9wYXJhbWhkciksICh1aW50OF90
ICopJmFwYXJhbV9idWYpOwogCWlmIChhcGggPT0gTlVMTCkgewpAQCAtNzc1LDggKzc5Nyw2IEBA
IHNjdHBfaGFuZGxlX2FzY29uZihzdHJ1Y3QgbWJ1ZiAqbSwgdW5zaWduZWQgaW50IG9mZnNldCwK
IAkJaWYgKG1fcmVzdWx0ICE9IE5VTEwpIHsKIAkJCVNDVFBfQlVGX05FWFQobV90YWlsKSA9IG1f
cmVzdWx0OwogCQkJbV90YWlsID0gbV9yZXN1bHQ7Ci0JCQkvKiB1cGRhdGUgbGVuZ3RocywgbWFr
ZSBzdXJlIGl0J3MgYWxpZ25lZCB0b28gKi8KLQkJCVNDVFBfQlVGX0xFTihtX3Jlc3VsdCkgPSBT
Q1RQX1NJWkUzMihTQ1RQX0JVRl9MRU4obV9yZXN1bHQpKTsKIAkJCWFja19jcC0+Y2guY2h1bmtf
bGVuZ3RoICs9IFNDVFBfQlVGX0xFTihtX3Jlc3VsdCk7CiAJCQkvKiBzZXQgZmxhZyB0byBmb3Jj
ZSBzdWNjZXNzIHJlcG9ydHMgKi8KIAkJCWVycm9yID0gMTsKQEAgLTkzMCwxMiArOTUwLDEyIEBA
IHNjdHBfYWRkcl9tYXRjaChzdHJ1Y3Qgc2N0cF9wYXJhbWhkciAqcGgsIHN0cnVjdCBzb2NrYWRk
ciAqc2EpCiAgKiBDbGVhbnVwIGZvciBub24tcmVzcG9uZGVkL09QIEVSUidkIEFTQ09ORgogICov
CiB2b2lkCi1zY3RwX2FzY29uZl9jbGVhbnVwKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0
IHNjdHBfbmV0cyAqbmV0KQorc2N0cF9hc2NvbmZfY2xlYW51cChzdHJ1Y3Qgc2N0cF90Y2IgKnN0
Y2IpCiB7CiAJLyoKIAkgKiBjbGVhciBvdXQgYW55IGV4aXN0aW5nIGFzY29uZnMgZ29pbmcgb3V0
CiAJICovCi0Jc2N0cF90aW1lcl9zdG9wKFNDVFBfVElNRVJfVFlQRV9BU0NPTkYsIHN0Y2ItPnNj
dHBfZXAsIHN0Y2IsIG5ldCwKKwlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX0FTQ09O
Riwgc3RjYi0+c2N0cF9lcCwgc3RjYiwgTlVMTCwKIAkJCVNDVFBfRlJPTV9TQ1RQX0FTQ09ORiAr
IFNDVFBfTE9DXzIpOwogCXN0Y2ItPmFzb2MuYXNjb25mX3NlcV9vdXRfYWNrZWQgPSBzdGNiLT5h
c29jLmFzY29uZl9zZXFfb3V0OwogCS8qIHJlbW92ZSB0aGUgb2xkIEFTQ09ORiBvbiBvdXIgb3V0
Ym91bmQgcXVldWUgKi8KQEAgLTk3Miw4ICs5OTIsMTIgQEAgc2N0cF9hc2NvbmZfbmV0c19jbGVh
bnVwKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfaWZuICppZm4pCiAJCSAgICAo
KGlmbiA9PSBOVUxMKSB8fAogCQkgICAgIChTQ1RQX0dFVF9JRl9JTkRFWF9GUk9NX1JPVVRFKCZu
ZXQtPnJvKSAhPSBpZm4tPmlmbl9pbmRleCkpKSB7CiAJCQkvKiBjbGVhciBhbnkgY2FjaGVkIHJv
dXRlICovCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKKwkJCVJPX05IRlJFRSgmbmV0LT5ybyk7CisjZWxzZQogCQkJUlRGUkVFKG5ldC0+cm8ucm9f
cnQpOwogCQkJbmV0LT5yby5yb19ydCA9IE5VTEw7CisjZW5kaWYKIAkJfQogCQkvKiBjbGVhciBh
bnkgY2FjaGVkIHNvdXJjZSBhZGRyZXNzICovCiAJCWlmIChuZXQtPnNyY19hZGRyX3NlbGVjdGVk
KSB7CkBAIC0xMDI1LDkgKzEwNDksMTQgQEAgc2N0cF9hc3NvY19pbW1lZGlhdGVfcmV0cmFucyhz
dHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX25ldHMgKmRzdG5ldCkKIAkJICAgIChz
dGNiLT5hc29jLnNlbnRfcXVldWVfY250ID4gMCkpIHsKIAkJCXN0cnVjdCBzY3RwX3RtaXRfY2h1
bmsgKmNoazsKIAotCQkJY2hrID0gVEFJTFFfRklSU1QoJnN0Y2ItPmFzb2Muc2VudF9xdWV1ZSk7
Ci0JCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9TRU5ELCBzdGNiLT5zY3RwX2Vw
LAotCQkJCQkgc3RjYiwgY2hrLT53aG9Ubyk7CisJCQlUQUlMUV9GT1JFQUNIKGNoaywgJnN0Y2It
PmFzb2Muc2VudF9xdWV1ZSwgc2N0cF9uZXh0KSB7CisJCQkJaWYgKGNoay0+d2hvVG8gIT0gTlVM
TCkgeworCQkJCQlicmVhazsKKwkJCQl9CisJCQl9CisJCQlpZiAoY2hrICE9IE5VTEwpIHsKKwkJ
CQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9TRU5ELCBzdGNiLT5zY3RwX2VwLCBz
dGNiLCBjaGstPndob1RvKTsKKwkJCX0KIAkJfQogCX0KIAlyZXR1cm47CkBAIC0xMDgyLDEwICsx
MTExLDE0IEBAIHNjdHBfcGF0aF9jaGVja19hbmRfcmVhY3Qoc3RydWN0IHNjdHBfdGNiICpzdGNi
LCBzdHJ1Y3Qgc2N0cF9pZmEgKm5ld2lmYSkKIAlpZiAoYWRkcm51bSA9PSAxKSB7CiAJCVRBSUxR
X0ZPUkVBQ0gobmV0LCAmc3RjYi0+YXNvYy5uZXRzLCBzY3RwX25leHQpIHsKIAkJCS8qIGNsZWFy
IGFueSBjYWNoZWQgcm91dGUgYW5kIHNvdXJjZSBhZGRyZXNzICovCisjaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJCVJPX05IRlJFRSgmbmV0LT5y
byk7CisjZWxzZQogCQkJaWYgKG5ldC0+cm8ucm9fcnQpIHsKIAkJCQlSVEZSRUUobmV0LT5yby5y
b19ydCk7CiAJCQkJbmV0LT5yby5yb19ydCA9IE5VTEw7CiAJCQl9CisjZW5kaWYKIAkJCWlmIChu
ZXQtPnNyY19hZGRyX3NlbGVjdGVkKSB7CiAJCQkJc2N0cF9mcmVlX2lmYShuZXQtPnJvLl9zX2Fk
ZHIpOwogCQkJCW5ldC0+cm8uX3NfYWRkciA9IE5VTEw7CkBAIC0xMTA0LDEwICsxMTM3LDE0IEBA
IHNjdHBfcGF0aF9jaGVja19hbmRfcmVhY3Qoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qg
c2N0cF9pZmEgKm5ld2lmYSkKIAkvKiBNdWx0aXBsZSBsb2NhbCBhZGRyZXNzZXMgZXhzaXN0IGlu
IHRoZSBhc3NvY2lhdGlvbi4gICovCiAJVEFJTFFfRk9SRUFDSChuZXQsICZzdGNiLT5hc29jLm5l
dHMsIHNjdHBfbmV4dCkgewogCQkvKiBjbGVhciBhbnkgY2FjaGVkIHJvdXRlIGFuZCBzb3VyY2Ug
YWRkcmVzcyAqLworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCisJCVJPX05IRlJFRSgmbmV0LT5ybyk7CisjZWxzZQogCQlpZiAobmV0LT5yby5yb19y
dCkgewogCQkJUlRGUkVFKG5ldC0+cm8ucm9fcnQpOwogCQkJbmV0LT5yby5yb19ydCA9IE5VTEw7
CiAJCX0KKyNlbmRpZgogCQlpZiAobmV0LT5zcmNfYWRkcl9zZWxlY3RlZCkgewogCQkJc2N0cF9m
cmVlX2lmYShuZXQtPnJvLl9zX2FkZHIpOwogCQkJbmV0LT5yby5fc19hZGRyID0gTlVMTDsKQEAg
LTExMjIsNyArMTE1OSwxMSBAQCBzY3RwX3BhdGhfY2hlY2tfYW5kX3JlYWN0KHN0cnVjdCBzY3Rw
X3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfaWZhICpuZXdpZmEpCiAJCVNDVFBfUlRBTExPQygoc2N0
cF9yb3V0ZV90ICopJm5ldC0+cm8sCiAJCQkgICAgIHN0Y2ItPnNjdHBfZXAtPmRlZl92cmZfaWQs
CiAJCQkgICAgIHN0Y2ItPnNjdHBfZXAtPmZpYm51bSk7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJaWYgKG5ldC0+cm8ucm9fbmggPT0gTlVM
TCkKKyNlbHNlCiAJCWlmIChuZXQtPnJvLnJvX3J0ID09IE5VTEwpCisjZW5kaWYKIAkJCWNvbnRp
bnVlOwogCiAJCWNoYW5nZWQgPSAwOwpAQCAtMTE2Miw3ICsxMjAzLDcgQEAgc2N0cF9wYXRoX2No
ZWNrX2FuZF9yZWFjdChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2lmYSAqbmV3
aWZhKQogCQl9CiAJfQogfQotI2VuZGlmIC8qIF9fRnJlZUJTRF9fICBfX0FQUExFX18gIF9fVXNl
cnNwYWNlX18gKi8KKyNlbmRpZgogCiAvKgogICogcHJvY2VzcyBhbiBBREQvREVMRVRFIElQIGFj
ayBmcm9tIHBlZXIuCkBAIC0xMTk0LDcgKzEyMzUsNyBAQCBzY3RwX2FzY29uZl9hZGRyX21nbXRf
YWNrKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfaWZhICphZGRyLCB1aW50MzJf
dAogCQkJc2N0cF9wYXRoX2NoZWNrX2FuZF9yZWFjdChzdGNiLCBhZGRyKTsKIAkJCXJldHVybjsK
IAkJfQotI2VuZGlmIC8qIF9fRnJlZUJTRF9fIF9fQVBQTEVfXyBfX1VzZXJzcGFjZV9fICovCisj
ZW5kaWYKIAkJLyogY2xlYXIgYW55IGNhY2hlZC90b3BvbG9naWNhbGx5IGluY29ycmVjdCBzb3Vy
Y2UgYWRkcmVzc2VzICovCiAJCXNjdHBfYXNjb25mX25ldHNfY2xlYW51cChzdGNiLCBhZGRyLT5p
Zm5fcCk7CiAJfQpAQCAtMTM4MSw3ICsxNDIyLDcgQEAgc2N0cF9hc2NvbmZfcXVldWVfYWRkKHN0
cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfaWZhICppZmEsCiAJCWlmIChzY3RwX2Fz
Y29uZl9xdWV1ZV9tZ210KHN0Y2IsCiAJCQkJCSAgIHN0Y2ItPmFzb2MuYXNjb25mX2FkZHJfZGVs
X3BlbmRpbmcsCiAJCQkJCSAgIFNDVFBfREVMX0lQX0FERFJFU1MpID09IDApIHsKLQkJCVNDVFBE
QkcoU0NUUF9ERUJVR19BU0NPTkYyLCAiYXNjb25mX3F1ZXVlX2FkZDogcXVlaW5nIHBlbmRpbmcg
ZGVsZXRlXG4iKTsKKwkJCVNDVFBEQkcoU0NUUF9ERUJVR19BU0NPTkYyLCAiYXNjb25mX3F1ZXVl
X2FkZDogcXVldWluZyBwZW5kaW5nIGRlbGV0ZVxuIik7CiAJCQlwZW5kaW5nX2RlbGV0ZV9xdWV1
ZWQgPSAxOwogCQkJLyogY2xlYXIgb3V0IHRoZSBwZW5kaW5nIGRlbGV0ZSBpbmZvICovCiAJCQlz
dGNiLT5hc29jLmFzY29uZl9kZWxfcGVuZGluZyA9IDA7CkBAIC0xNjk4LDggKzE3MzksNyBAQCBz
Y3RwX2hhbmRsZV9hc2NvbmZfYWNrKHN0cnVjdCBtYnVmICptLCBpbnQgb2Zmc2V0LAogCQljaGFy
IG1zZ1tTQ1RQX0RJQUdfSU5GT19MRU5dOwogCiAJCVNDVFBEQkcoU0NUUF9ERUJVR19BU0NPTkYx
LCAiaGFuZGxlX2FzY29uZl9hY2s6IGdvdCB1bmV4cGVjdGVkIG5leHQgc2VyaWFsIG51bWJlciEg
QWJvcnRpbmcgYXNvYyFcbiIpOwotCQlzbnByaW50Zihtc2csIHNpemVvZihtc2cpLCAiTmV2ZXIg
c2VudCBzZXJpYWwgbnVtYmVyICU4Ljh4IiwKLQkJCSBzZXJpYWxfbnVtKTsKKwkJU0NUUF9TTlBS
SU5URihtc2csIHNpemVvZihtc2cpLCAiTmV2ZXIgc2VudCBzZXJpYWwgbnVtYmVyICU4Ljh4Iiwg
c2VyaWFsX251bSk7CiAJCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9DQVVTRV9Q
Uk9UT0NPTF9WSU9MQVRJT04sIG1zZyk7CiAJCXNjdHBfYWJvcnRfYW5fYXNzb2NpYXRpb24oc3Rj
Yi0+c2N0cF9lcCwgc3RjYiwgb3BfZXJyLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwogCQkqYWJvcnRf
bm9fdW5sb2NrID0gMTsKQEAgLTE3MTQsNyArMTc1NCw3IEBAIHNjdHBfaGFuZGxlX2FzY29uZl9h
Y2soc3RydWN0IG1idWYgKm0sIGludCBvZmZzZXQsCiAKIAlpZiAoc2VyaWFsX251bSA9PSBhc29j
LT5hc2NvbmZfc2VxX291dCAtIDEpIHsKIAkJLyogc3RvcCBvdXIgdGltZXIgKi8KLQkJc2N0cF90
aW1lcl9zdG9wKFNDVFBfVElNRVJfVFlQRV9BU0NPTkYsIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIG5l
dCwKKwkJc2N0cF90aW1lcl9zdG9wKFNDVFBfVElNRVJfVFlQRV9BU0NPTkYsIHN0Y2ItPnNjdHBf
ZXAsIHN0Y2IsIE5VTEwsCiAJCQkJU0NUUF9GUk9NX1NDVFBfQVNDT05GICsgU0NUUF9MT0NfNSk7
CiAJfQogCkBAIC0xNzg4LDkgKzE4MjgsOSBAQCBzY3RwX2hhbmRsZV9hc2NvbmZfYWNrKHN0cnVj
dCBtYnVmICptLCBpbnQgb2Zmc2V0LAogCQl9CQkvKiBzd2l0Y2ggKi8KIAogCQkvKiB1cGRhdGUg
cmVtYWluaW5nIEFTQ09ORi1BQ0sgbWVzc2FnZSBsZW5ndGggdG8gcHJvY2VzcyAqLwotCQlhY2tf
bGVuZ3RoIC09IFNDVFBfU0laRTMyKHBhcmFtX2xlbmd0aCk7Ci0JCWlmIChhY2tfbGVuZ3RoIDw9
IDApIHsKLQkJCS8qIG5vIG1vcmUgZGF0YSBpbiB0aGUgbWJ1ZiBjaGFpbiAqLworCQlpZiAoYWNr
X2xlbmd0aCA+IFNDVFBfU0laRTMyKHBhcmFtX2xlbmd0aCkpIHsKKwkJCWFja19sZW5ndGggLT0g
U0NUUF9TSVpFMzIocGFyYW1fbGVuZ3RoKTsKKwkJfSBlbHNlIHsKIAkJCWJyZWFrOwogCQl9CiAJ
CW9mZnNldCArPSBTQ1RQX1NJWkUzMihwYXJhbV9sZW5ndGgpOwpAQCAtMTkwMSw3ICsxOTQxLDcg
QEAgc2N0cF9hZGRyX21nbXRfYXNzb2Moc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNj
dHBfdGNiICpzdGNiLAogCXN3aXRjaCAoaWZhLT5hZGRyZXNzLnNhLnNhX2ZhbWlseSkgewogI2lm
ZGVmIElORVQ2CiAJY2FzZSBBRl9JTkVUNjoKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCWlmIChw
cmlzb25fY2hlY2tfaXA2KGlucC0+aXBfaW5wLmlucC5pbnBfY3JlZCwKIAkJICAgICAgICAgICAg
ICAgICAgICAgJmlmYS0+YWRkcmVzcy5zaW42LnNpbjZfYWRkcikgIT0gMCkgewogCQkJcmV0dXJu
OwpAQCAtMTkxMSw3ICsxOTUxLDcgQEAgc2N0cF9hZGRyX21nbXRfYXNzb2Moc3RydWN0IHNjdHBf
aW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogI2VuZGlmCiAjaWZkZWYgSU5FVAog
CWNhc2UgQUZfSU5FVDoKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCWlmIChwcmlzb25fY2hlY2tf
aXA0KGlucC0+aXBfaW5wLmlucC5pbnBfY3JlZCwKIAkJICAgICAgICAgICAgICAgICAgICAgJmlm
YS0+YWRkcmVzcy5zaW4uc2luX2FkZHIpICE9IDApIHsKIAkJCXJldHVybjsKQEAgLTE5NzIsMTIg
KzIwMTIsMTAgQEAgc2N0cF9hZGRyX21nbXRfYXNzb2Moc3RydWN0IHNjdHBfaW5wY2IgKmlucCwg
c3RydWN0IHNjdHBfdGNiICpzdGNiLAogCWNhc2UgQUZfSU5FVDoKIAl7CiAJCXN0cnVjdCBzb2Nr
YWRkcl9pbiAqc2luOwotCQlzdHJ1Y3QgaW42cGNiICppbnA2OwogCi0JCWlucDYgPSAoc3RydWN0
IGluNnBjYiAqKSZpbnAtPmlwX2lucC5pbnA7CiAJCS8qIGludmFsaWQgaWYgd2UgYXJlIGEgdjYg
b25seSBlbmRwb2ludCAqLwogCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdT
X0JPVU5EX1Y2KSAmJgotCQkgICAgU0NUUF9JUFY2X1Y2T05MWShpbnA2KSkKKwkJICAgIFNDVFBf
SVBWNl9WNk9OTFkoaW5wKSkKIAkJCXJldHVybjsKIAogCQlzaW4gPSAmaWZhLT5hZGRyZXNzLnNp
bjsKQEAgLTIwMTAsOCArMjA0OCw4IEBAIHNjdHBfYWRkcl9tZ210X2Fzc29jKHN0cnVjdCBzY3Rw
X2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJCSAqIHNlbnQgd2hlbiB0aGUg
c3RhdGUgZ29lcyBvcGVuLgogCQkJICovCiAJCQlpZiAoc3RhdHVzID09IDAgJiYKLQkJCSAgICAo
KFNDVFBfR0VUX1NUQVRFKCZzdGNiLT5hc29jKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHx8Ci0JCQkg
ICAgIChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9S
RUNFSVZFRCkpKSB7CisJCQkgICAgKChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRF
X09QRU4pIHx8CisJCQkgICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NI
VVRET1dOX1JFQ0VJVkVEKSkpIHsKICNpZmRlZiBTQ1RQX1RJTUVSX0JBU0VEX0FTQ09ORgogCQkJ
CXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX0FTQ09ORiwgaW5wLAogCQkJCSAgICBz
dGNiLCBzdGNiLT5hc29jLnByaW1hcnlfZGVzdGluYXRpb24pOwpAQCAtMjA1MCwxMCArMjA4OCw4
IEBAIHNjdHBfYXNjb25mX2l0ZXJhdG9yX2VwKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHZvaWQg
KnB0ciwgdWludDMyX3QgdmFsIFNDVFBfVU5VCiAJCWNhc2UgQUZfSU5FVDoKIAkJewogCQkJLyog
aW52YWxpZCBpZiB3ZSBhcmUgYSB2NiBvbmx5IGVuZHBvaW50ICovCi0JCQlzdHJ1Y3QgaW42cGNi
ICppbnA2OwotCQkJaW5wNiA9IChzdHJ1Y3QgaW42cGNiICopJmlucC0+aXBfaW5wLmlucDsKIAkJ
CWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfQk9VTkRfVjYpICYmCi0JCQkg
ICAgU0NUUF9JUFY2X1Y2T05MWShpbnA2KSkgeworCQkJICAgIFNDVFBfSVBWNl9WNk9OTFkoaW5w
KSkgewogCQkJCWNudF9pbnZhbGlkKys7CiAJCQkJaWYgKGFzYy0+Y250ID09IGNudF9pbnZhbGlk
KQogCQkJCQlyZXR1cm4gKDEpOwpAQCAtMjE0NCw3ICsyMTgwLDcgQEAgc2N0cF9hc2NvbmZfaXRl
cmF0b3Jfc3RjYihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2Is
CiAJCQkJLyogd2Ugc2tpcCB1bnNwZWNpZmVkIGFkZHJlc3NlcyAqLwogCQkJCWNvbnRpbnVlOwog
CQkJfQotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCWlmIChwcmlzb25fY2hlY2tfaXA2KGlucC0+
aXBfaW5wLmlucC5pbnBfY3JlZCwKIAkJCSAgICAgICAgICAgICAgICAgICAgICZzaW42LT5zaW42
X2FkZHIpICE9IDApIHsKIAkJCQljb250aW51ZTsKQEAgLTIxNjYsMTMgKzIyMDIsMTEgQEAgc2N0
cF9hc2NvbmZfaXRlcmF0b3Jfc3RjYihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0
cF90Y2IgKnN0Y2IsCiAJCWNhc2UgQUZfSU5FVDoKIAkJewogCQkJLyogaW52YWxpZCBpZiB3ZSBh
cmUgYSB2NiBvbmx5IGVuZHBvaW50ICovCi0JCQlzdHJ1Y3QgaW42cGNiICppbnA2OwogCQkJc3Ry
dWN0IHNvY2thZGRyX2luICpzaW47CiAKLQkJCWlucDYgPSAoc3RydWN0IGluNnBjYiAqKSZpbnAt
PmlwX2lucC5pbnA7CiAJCQkvKiBpbnZhbGlkIGlmIHdlIGFyZSBhIHY2IG9ubHkgZW5kcG9pbnQg
Ki8KIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfQk9VTkRfVjYpICYm
Ci0JCQkgICAgU0NUUF9JUFY2X1Y2T05MWShpbnA2KSkKKwkJCSAgICBTQ1RQX0lQVjZfVjZPTkxZ
KGlucCkpCiAJCQkJY29udGludWU7CiAKIAkJCXNpbiA9ICZpZmEtPmFkZHJlc3Muc2luOwpAQCAt
MjE4MCw3ICsyMjE0LDcgQEAgc2N0cF9hc2NvbmZfaXRlcmF0b3Jfc3RjYihzdHJ1Y3Qgc2N0cF9p
bnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCQkJLyogd2Ugc2tpcCB1bnNwZWNp
ZmVkIGFkZHJlc3NlcyAqLwogCQkJCWNvbnRpbnVlOwogCQkJfQotI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKIAkJCWlmIChwcmlzb25fY2hlY2tfaXA0KGlucC0+aXBfaW5wLmlucC5pbnBfY3JlZCwKIAkJ
CSAgICAgICAgICAgICAgICAgICAgICZzaW4tPnNpbl9hZGRyKSAhPSAwKSB7CiAJCQkJY29udGlu
dWU7CkBAIC0yMTkxLDcgKzIyMjUsNyBAQCBzY3RwX2FzY29uZl9pdGVyYXRvcl9zdGNiKHN0cnVj
dCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJCQljb250aW51ZTsK
IAkJCX0KIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfQk9VTkRfVjYp
ICYmCi0JCQkgICAgU0NUUF9JUFY2X1Y2T05MWShpbnA2KSkgeworCQkJICAgIFNDVFBfSVBWNl9W
Nk9OTFkoaW5wKSkgewogCQkJCWNudF9pbnZhbGlkKys7CiAJCQkJaWYgKGFzYy0+Y250ID09IGNu
dF9pbnZhbGlkKQogCQkJCQlyZXR1cm47CkBAIC0yMjE3LDE4ICsyMjUxLDE5IEBAIHNjdHBfYXNj
b25mX2l0ZXJhdG9yX3N0Y2Ioc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNi
ICpzdGNiLAogCQl9IGVsc2UgaWYgKHR5cGUgPT0gU0NUUF9ERUxfSVBfQUREUkVTUykgewogCQkJ
c3RydWN0IHNjdHBfbmV0cyAqbmV0OwogCQkJVEFJTFFfRk9SRUFDSChuZXQsICZzdGNiLT5hc29j
Lm5ldHMsIHNjdHBfbmV4dCkgewotCQkJCXNjdHBfcnRlbnRyeV90ICpydDsKLQogCQkJCS8qIGRl
bGV0ZSB0aGlzIGFkZHJlc3MgaWYgY2FjaGVkICovCiAJCQkJaWYgKG5ldC0+cm8uX3NfYWRkciA9
PSBpZmEpIHsKIAkJCQkJc2N0cF9mcmVlX2lmYShuZXQtPnJvLl9zX2FkZHIpOwogCQkJCQluZXQt
PnJvLl9zX2FkZHIgPSBOVUxMOwogCQkJCQluZXQtPnNyY19hZGRyX3NlbGVjdGVkID0gMDsKLQkJ
CQkJcnQgPSBuZXQtPnJvLnJvX3J0OwotCQkJCQlpZiAocnQpIHsKLQkJCQkJCVJURlJFRShydCk7
CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJ
CQkJUk9fTkhGUkVFKCZuZXQtPnJvKTsKKyNlbHNlCisJCQkJCWlmIChuZXQtPnJvLnJvX3J0KSB7
CisJCQkJCQlSVEZSRUUobmV0LT5yby5yb19ydCk7CiAJCQkJCQluZXQtPnJvLnJvX3J0ID0gTlVM
TDsKIAkJCQkJfQorI2VuZGlmCiAJCQkJCS8qCiAJCQkJCSAqIE5vdyB3ZSBkZWxldGVkIG91ciBz
cmMgYWRkcmVzcywKIAkJCQkJICogc2hvdWxkIHdlIG5vdCBhbHNvIG5vdyByZXNldCB0aGUKQEAg
LTIyNjMsOCArMjI5OCw4IEBAIHNjdHBfYXNjb25mX2l0ZXJhdG9yX3N0Y2Ioc3RydWN0IHNjdHBf
aW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkJICogY291bnQgb2YgcXVldWVk
IHBhcmFtcy4gIElmIGluIHRoZSBub24tb3BlbiBzdGF0ZSwKIAkJCSAqIHRoZXNlIGdldCBzZW50
IHdoZW4gdGhlIGFzc29jIGdvZXMgb3Blbi4KIAkJCSAqLwotCQkJaWYgKChTQ1RQX0dFVF9TVEFU
RSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9PUEVOKSB8fAotCQkJICAgIChTQ1RQX0dFVF9T
VEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkpIHsKKwkJ
CWlmICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9PUEVOKSB8fAorCQkJICAg
IChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkg
ewogCQkJCWlmIChzdGF0dXMgPj0gMCkgewogCQkJCQludW1fcXVldWVkKys7CiAJCQkJfQpAQCAt
MjMyNSw4ICsyMzYwLDggQEAgc2N0cF9zZXRfcHJpbWFyeV9pcF9hZGRyZXNzX3NhKHN0cnVjdCBz
Y3RwX3RjYiAqc3RjYiwgc3RydWN0IHNvY2thZGRyICpzYSkKIAkJCSJzZXRfcHJpbWFyeV9pcF9h
ZGRyZXNzX3NhOiBxdWV1ZWQgb24gdGNiPSVwLCAiLAogCQkJKHZvaWQgKilzdGNiKTsKIAkJU0NU
UERCR19BRERSKFNDVFBfREVCVUdfQVNDT05GMSwgc2EpOwotCQlpZiAoKFNDVFBfR0VUX1NUQVRF
KCZzdGNiLT5hc29jKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHx8Ci0JCSAgICAoU0NUUF9HRVRfU1RB
VEUoJnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpKSB7CisJCWlm
ICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9PUEVOKSB8fAorCQkgICAgKFND
VFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpKSB7CiAj
aWZkZWYgU0NUUF9USU1FUl9CQVNFRF9BU0NPTkYKIAkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9U
SU1FUl9UWVBFX0FTQ09ORiwKIAkJCQkJIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsCkBAIC0yNDY5LDcg
KzI1MDQsNyBAQCBzY3RwX2ZpbmRfdmFsaWRfbG9jYWxhZGRyKHN0cnVjdCBzY3RwX3RjYiAqc3Rj
YiwgaW50IGFkZHJfbG9ja2VkKQogCQkJCQkJLyogc2tpcCB1bnNwZWNpZmVkIGFkZHJlc3NlcyAq
LwogCQkJCQkJY29udGludWU7CiAJCQkJCX0KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJCWlm
IChwcmlzb25fY2hlY2tfaXA0KHN0Y2ItPnNjdHBfZXAtPmlwX2lucC5pbnAuaW5wX2NyZWQsCiAJ
CQkJCSAgICAgICAgICAgICAgICAgICAgICZzaW4tPnNpbl9hZGRyKSAhPSAwKSB7CiAJCQkJCQlj
b250aW51ZTsKQEAgLTI1MDMsNyArMjUzOCw3IEBAIHNjdHBfZmluZF92YWxpZF9sb2NhbGFkZHIo
c3RydWN0IHNjdHBfdGNiICpzdGNiLCBpbnQgYWRkcl9sb2NrZWQpCiAJCQkJCQkvKiB3ZSBza2lw
IHVuc3BlY2lmZWQgYWRkcmVzc2VzICovCiAJCQkJCQljb250aW51ZTsKIAkJCQkJfQotI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKIAkJCQkJaWYgKHByaXNvbl9jaGVja19pcDYoc3RjYi0+c2N0cF9lcC0+
aXBfaW5wLmlucC5pbnBfY3JlZCwKIAkJCQkJICAgICAgICAgICAgICAgICAgICAgJnNpbjYtPnNp
bjZfYWRkcikgIT0gMCkgewogCQkJCQkJY29udGludWU7CkBAIC0yNTkyLDE0ICsyNjI3LDE0IEBA
IHNjdHBfY29tcG9zZV9hc2NvbmYoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBpbnQgKnJldGxlbiwg
aW50IGFkZHJfbG9ja2VkKQogCWlmIChtX2FzY29uZl9jaGsgPT0gTlVMTCkgewogCQkvKiBubyBt
YnVmJ3MgKi8KIAkJU0NUUERCRyhTQ1RQX0RFQlVHX0FTQ09ORjEsCi0JCQkiY29tcG9zZV9hc2Nv
bmY6IGNvdWxkbid0IGdldCBjaHVuayBtYnVmIVxuIik7CisJCQkic2N0cF9jb21wb3NlX2FzY29u
ZjogY291bGRuJ3QgZ2V0IGNodW5rIG1idWYhXG4iKTsKIAkJcmV0dXJuIChOVUxMKTsKIAl9CiAJ
bV9hc2NvbmYgPSBzY3RwX2dldF9tYnVmX2Zvcl9tc2coTUNMQllURVMsIDAsIE1fTk9XQUlULCAx
LCBNVF9EQVRBKTsKIAlpZiAobV9hc2NvbmYgPT0gTlVMTCkgewogCQkvKiBubyBtYnVmJ3MgKi8K
IAkJU0NUUERCRyhTQ1RQX0RFQlVHX0FTQ09ORjEsCi0JCQkiY29tcG9zZV9hc2NvbmY6IGNvdWxk
bid0IGdldCBtYnVmIVxuIik7CisJCQkic2N0cF9jb21wb3NlX2FzY29uZjogY291bGRuJ3QgZ2V0
IG1idWYhXG4iKTsKIAkJc2N0cF9tX2ZyZWVtKG1fYXNjb25mX2Noayk7CiAJCXJldHVybiAoTlVM
TCk7CiAJfQpAQCAtMjcyNCwxMCArMjc1OSwxMiBAQCBzY3RwX2NvbXBvc2VfYXNjb25mKHN0cnVj
dCBzY3RwX3RjYiAqc3RjYiwgaW50ICpyZXRsZW4sIGludCBhZGRyX2xvY2tlZCkKIAkJCQlicmVh
azsKICNlbmRpZgogCQkJZGVmYXVsdDoKLQkJCQlwX3NpemUgPSAwOwotCQkJCWFkZHJfc2l6ZSA9
IDA7Ci0JCQkJYWRkcl9wdHIgPSBOVUxMOwotCQkJCWJyZWFrOworCQkJCVNDVFBEQkcoU0NUUF9E
RUJVR19BU0NPTkYxLAorCQkJCQkic2N0cF9jb21wb3NlX2FzY29uZjogbm8gdXNhYmxlIGxvb2t1
cCBhZGRyIChmYW1pbHkgPSAlZCkhXG4iLAorCQkJCQlmb3VuZF9hZGRyLT5zYV9mYW1pbHkpOwor
CQkJCXNjdHBfbV9mcmVlbShtX2FzY29uZl9jaGspOworCQkJCXNjdHBfbV9mcmVlbShtX2FzY29u
Zik7CisJCQkJcmV0dXJuIChOVUxMKTsKIAkJCX0KIAkJCWxvb2t1cC0+cGgucGFyYW1fbGVuZ3Ro
ID0gaHRvbnMoU0NUUF9TSVpFMzIocF9zaXplKSk7CiAJCQltZW1jcHkobG9va3VwLT5hZGRyLCBh
ZGRyX3B0ciwgYWRkcl9zaXplKTsKQEAgLTI3MzUsMTIgKzI3NzIsMTAgQEAgc2N0cF9jb21wb3Nl
X2FzY29uZihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIGludCAqcmV0bGVuLCBpbnQgYWRkcl9sb2Nr
ZWQpCiAJCX0gZWxzZSB7CiAJCQkvKiB1aCBvaC4uLiBkb24ndCBoYXZlIGFueSBhZGRyZXNzPz8g
Ki8KIAkJCVNDVFBEQkcoU0NUUF9ERUJVR19BU0NPTkYxLAotCQkJCSJjb21wb3NlX2FzY29uZjog
bm8gbG9va3VwIGFkZHIhXG4iKTsKLQkJCS8qIFhYWCBmb3Igbm93LCB3ZSBzZW5kIGEgSVB2NCBh
ZGRyZXNzIG9mIDAuMC4wLjAgKi8KLQkJCWxvb2t1cC0+cGgucGFyYW1fdHlwZSA9IGh0b25zKFND
VFBfSVBWNF9BRERSRVNTKTsKLQkJCWxvb2t1cC0+cGgucGFyYW1fbGVuZ3RoID0gaHRvbnMoU0NU
UF9TSVpFMzIoc2l6ZW9mKHN0cnVjdCBzY3RwX2lwdjRhZGRyX3BhcmFtKSkpOwotCQkJbWVtc2V0
KGxvb2t1cC0+YWRkciwgMCwgc2l6ZW9mKHN0cnVjdCBpbl9hZGRyKSk7Ci0JCQlTQ1RQX0JVRl9M
RU4obV9hc2NvbmZfY2hrKSArPSBTQ1RQX1NJWkUzMihzaXplb2Yoc3RydWN0IHNjdHBfaXB2NGFk
ZHJfcGFyYW0pKTsKKwkJCQkic2N0cF9jb21wb3NlX2FzY29uZjogbm8gbG9va3VwIGFkZHIhXG4i
KTsKKwkJCXNjdHBfbV9mcmVlbShtX2FzY29uZl9jaGspOworCQkJc2N0cF9tX2ZyZWVtKG1fYXNj
b25mKTsKKwkJCXJldHVybiAoTlVMTCk7CiAJCX0KIAl9CiAJLyogY2hhaW4gaXQgYWxsIHRvZ2V0
aGVyICovCkBAIC0yODYxLDggKzI4OTYsNyBAQCBzY3RwX3Byb2Nlc3NfaW5pdGFja19hZGRyZXNz
ZXMoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3QgbWJ1ZiAqbSwKIAkJCQkgKiBvdXQgdGhl
IEFTQ09ORi4KIAkJCQkgKi8KIAkJCQlpZiAoc3RhdHVzID09IDAgJiYKLQkJCQkgICAgU0NUUF9H
RVRfU1RBVEUoJnN0Y2ItPmFzb2MpID09Ci0JCQkJICAgIFNDVFBfU1RBVEVfT1BFTikgeworCQkJ
CSAgICBTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHsKICNpZmRlZiBT
Q1RQX1RJTUVSX0JBU0VEX0FTQ09ORgogCQkJCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJf
VFlQRV9BU0NPTkYsCiAJCQkJCQkJIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsCkBAIC0zMDM3LDEwICsz
MDcxLDYgQEAgc2N0cF9jaGVja19hZGRyZXNzX2xpc3RfZXAoc3RydWN0IHNjdHBfdGNiICpzdGNi
LCBzdHJ1Y3QgbWJ1ZiAqbSwgaW50IG9mZnNldCwKIAkJCQkiY2hlY2tfYWRkcl9saXN0X2VwOiBs
YWRkci0+aWZhIGlzIE5VTEwiKTsKIAkJCWNvbnRpbnVlOwogCQl9Ci0JCWlmIChsYWRkci0+aWZh
ID09IE5VTEwpIHsKLQkJCVNDVFBEQkcoU0NUUF9ERUJVR19BU0NPTkYxLCAiY2hlY2tfYWRkcl9s
aXN0X2VwOiBsYWRkci0+aWZhLT5pZmFfYWRkciBpcyBOVUxMIik7Ci0JCQljb250aW51ZTsKLQkJ
fQogCQkvKiBkbyBpIGhhdmUgaXQgaW1wbGljaXRseT8gKi8KIAkJaWYgKHNjdHBfY21wYWRkcigm
bGFkZHItPmlmYS0+YWRkcmVzcy5zYSwgaW5pdF9hZGRyKSkgewogCQkJY29udGludWU7CkBAIC0z
MTAyLDcgKzMxMzIsNyBAQCBzY3RwX2NoZWNrX2FkZHJlc3NfbGlzdF9hbGwoc3RydWN0IHNjdHBf
dGNiICpzdGNiLCBzdHJ1Y3QgbWJ1ZiAqbSwgaW50IG9mZnNldCwKICNpZmRlZiBJTkVUCiAJCQlj
YXNlIEFGX0lORVQ6CiAJCQkJc2luID0gJnNjdHBfaWZhLT5hZGRyZXNzLnNpbjsKLSNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAJCQkJaWYgKHByaXNvbl9jaGVja19pcDQoc3RjYi0+c2N0cF9lcC0+aXBf
aW5wLmlucC5pbnBfY3JlZCwKIAkJCQkgICAgICAgICAgICAgICAgICAgICAmc2luLT5zaW5fYWRk
cikgIT0gMCkgewogCQkJCQljb250aW51ZTsKQEAgLTMxMTgsNyArMzE0OCw3IEBAIHNjdHBfY2hl
Y2tfYWRkcmVzc19saXN0X2FsbChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBtYnVmICpt
LCBpbnQgb2Zmc2V0LAogI2lmZGVmIElORVQ2CiAJCQljYXNlIEFGX0lORVQ2OgogCQkJCXNpbjYg
PSAmc2N0cF9pZmEtPmFkZHJlc3Muc2luNjsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJaWYg
KHByaXNvbl9jaGVja19pcDYoc3RjYi0+c2N0cF9lcC0+aXBfaW5wLmlucC5pbnBfY3JlZCwKIAkJ
CQkgICAgICAgICAgICAgICAgICAgICAmc2luNi0+c2luNl9hZGRyKSAhPSAwKSB7CiAJCQkJCWNv
bnRpbnVlOwpAQCAtMzE4Nyw3ICszMjE3LDcgQEAgc2N0cF9jaGVja19hZGRyZXNzX2xpc3Qoc3Ry
dWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3QgbWJ1ZiAqbSwgaW50IG9mZnNldCwKICAqLwogdWlu
dDMyX3QKIHNjdHBfYWRkcl9tZ210X2VwX3NhKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVj
dCBzb2NrYWRkciAqc2EsCi0gICAgdWludDMyX3QgdHlwZSwgdWludDMyX3QgdnJmX2lkLCBzdHJ1
Y3Qgc2N0cF9pZmEgKnNjdHBfaWZhcCkKKyAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHR5
cGUsIHVpbnQzMl90IHZyZl9pZCkKIHsKIAlzdHJ1Y3Qgc2N0cF9pZmEgKmlmYTsKIAlzdHJ1Y3Qg
c2N0cF9sYWRkciAqbGFkZHIsICpubGFkZHI7CkBAIC0zMTk4LDkgKzMyMjgsNyBAQCBzY3RwX2Fk
ZHJfbWdtdF9lcF9zYShzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc29ja2FkZHIgKnNh
LAogCQlyZXR1cm4gKEVJTlZBTCk7CiAJfQogI2VuZGlmCi0JaWYgKHNjdHBfaWZhcCkgewotCQlp
ZmEgPSBzY3RwX2lmYXA7Ci0JfSBlbHNlIGlmICh0eXBlID09IFNDVFBfQUREX0lQX0FERFJFU1Mp
IHsKKwlpZiAodHlwZSA9PSBTQ1RQX0FERF9JUF9BRERSRVNTKSB7CiAJCS8qIEZvciBhbiBhZGQg
dGhlIGFkZHJlc3MgTVVTVCBiZSBvbiB0aGUgc3lzdGVtICovCiAJCWlmYSA9IHNjdHBfZmluZF9p
ZmFfYnlfYWRkcihzYSwgdnJmX2lkLCBTQ1RQX0FERFJfTk9UX0xPQ0tFRCk7CiAJfSBlbHNlIGlm
ICh0eXBlID09IFNDVFBfREVMX0lQX0FERFJFU1MpIHsKQEAgLTMyODcsMTAgKzMzMTUsOSBAQCBz
Y3RwX2FkZHJfbWdtdF9lcF9zYShzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc29ja2Fk
ZHIgKnNhLAogfQogCiB2b2lkCi1zY3RwX2FzY29uZl9zZW5kX25hdF9zdGF0ZV91cGRhdGUoc3Ry
dWN0IHNjdHBfdGNiICpzdGNiLAotCQkJCSAgc3RydWN0IHNjdHBfbmV0cyAqbmV0KQorc2N0cF9h
c2NvbmZfc2VuZF9uYXRfc3RhdGVfdXBkYXRlKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0
IHNjdHBfbmV0cyAqbmV0KQogewotCXN0cnVjdCBzY3RwX2FzY29uZl9hZGRyICphYTsKKwlzdHJ1
Y3Qgc2N0cF9hc2NvbmZfYWRkciAqYWFfdnRhZywgKmFhX2FkZCwgKmFhX2RlbDsKIAlzdHJ1Y3Qg
c2N0cF9pZmEgKnNjdHBfaWZhcDsKIAlzdHJ1Y3Qgc2N0cF9hc2NvbmZfdGFnX3BhcmFtICp2dGFn
OwogI2lmZGVmIElORVQKQEAgLTMyOTksNiArMzMyNiw3IEBAIHNjdHBfYXNjb25mX3NlbmRfbmF0
X3N0YXRlX3VwZGF0ZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAjaWZkZWYgSU5FVDYKIAlzdHJ1
Y3Qgc29ja2FkZHJfaW42ICp0bzY7CiAjZW5kaWYKKwogCWlmIChuZXQgPT0gTlVMTCkgewogCQlT
Q1RQREJHKFNDVFBfREVCVUdfQVNDT05GMSwgInNjdHBfYXNjb25mX3NlbmRfbmF0X3N0YXRlX3Vw
ZGF0ZTogTWlzc2luZyBuZXRcbiIpOwogCQlyZXR1cm47CkBAIC0zMzA3LDEwOCArMzMzNSw4NCBA
QCBzY3RwX2FzY29uZl9zZW5kX25hdF9zdGF0ZV91cGRhdGUoc3RydWN0IHNjdHBfdGNiICpzdGNi
LAogCQlTQ1RQREJHKFNDVFBfREVCVUdfQVNDT05GMSwgInNjdHBfYXNjb25mX3NlbmRfbmF0X3N0
YXRlX3VwZGF0ZTogTWlzc2luZyBzdGNiXG4iKTsKIAkJcmV0dXJuOwogCX0KLSAgLyogTmVlZCB0
byBoYXZlIGluIHRoZSBhc2NvbmY6Ci0gICAqIC0gdnRhZ3BhcmFtKG15X3Z0YWcvcGVlcl92dGFn
KQotICAgKiAtIGFkZCgwLjAuMC4wKQotICAgKiAtIGRlbCgwLjAuMC4wKQotICAgKiAtIEFueSBn
bG9iYWwgYWRkcmVzc2VzIGFkZChhZGRyKQotICAgKi8KLQlTQ1RQX01BTExPQyhhYSwgc3RydWN0
IHNjdHBfYXNjb25mX2FkZHIgKiwgc2l6ZW9mKCphYSksCi0JICAgICAgICAgICAgU0NUUF9NX0FT
Q19BRERSKTsKLQlpZiAoYWEgPT0gTlVMTCkgewotCQkvKiBkaWRuJ3QgZ2V0IG1lbW9yeSAqLwot
CQlTQ1RQREJHKFNDVFBfREVCVUdfQVNDT05GMSwKLQkJICAgICAgICAic2N0cF9hc2NvbmZfc2Vu
ZF9uYXRfc3RhdGVfdXBkYXRlOiBmYWlsZWQgdG8gZ2V0IG1lbW9yeSFcbiIpOworCS8qIE5lZWQg
dG8gaGF2ZSBpbiB0aGUgQVNDT05GOgorCSAqIC0gVlRBRyhteV92dGFnL3BlZXJfdnRhZykKKwkg
KiAtIEFERCh3aWxkY2FyZCkKKwkgKiAtIERFTCh3aWxkY2FyZCkKKwkgKiAtIEFERChBbnkgZ2xv
YmFsIGFkZHJlc3NlcykKKwkgKi8KKwlTQ1RQX01BTExPQyhhYV92dGFnLCBzdHJ1Y3Qgc2N0cF9h
c2NvbmZfYWRkciAqLCBzaXplb2Yoc3RydWN0IHNjdHBfYXNjb25mX2FkZHIpLCBTQ1RQX01fQVND
X0FERFIpOworCVNDVFBfTUFMTE9DKGFhX2FkZCwgc3RydWN0IHNjdHBfYXNjb25mX2FkZHIgKiwg
c2l6ZW9mKHN0cnVjdCBzY3RwX2FzY29uZl9hZGRyKSwgU0NUUF9NX0FTQ19BRERSKTsKKwlTQ1RQ
X01BTExPQyhhYV9kZWwsIHN0cnVjdCBzY3RwX2FzY29uZl9hZGRyICosIHNpemVvZihzdHJ1Y3Qg
c2N0cF9hc2NvbmZfYWRkciksIFNDVFBfTV9BU0NfQUREUik7CisKKwlpZiAoKGFhX3Z0YWcgPT0g
TlVMTCkgfHwgKGFhX2FkZCA9PSBOVUxMKSB8fCAoYWFfZGVsID09IE5VTEwpKSB7CisJCS8qIERp
ZG4ndCBnZXQgbWVtb3J5ICovCisJCVNDVFBEQkcoU0NUUF9ERUJVR19BU0NPTkYxLCAic2N0cF9h
c2NvbmZfc2VuZF9uYXRfc3RhdGVfdXBkYXRlOiBmYWlsZWQgdG8gZ2V0IG1lbW9yeSFcbiIpOwor
b3V0OgorCQlpZiAoYWFfdnRhZyAhPSBOVUxMKSB7CisJCQlTQ1RQX0ZSRUUoYWFfdnRhZywgU0NU
UF9NX0FTQ19BRERSKTsKKwkJfQorCQlpZiAoYWFfYWRkICE9IE5VTEwpIHsKKwkJCVNDVFBfRlJF
RShhYV9hZGQsIFNDVFBfTV9BU0NfQUREUik7CisJCX0KKwkJaWYgKGFhX2RlbCAhPSBOVUxMKSB7
CisJCQlTQ1RQX0ZSRUUoYWFfZGVsLCBTQ1RQX01fQVNDX0FERFIpOworCQl9CiAJCXJldHVybjsK
IAl9Ci0JYWEtPnNwZWNpYWxfZGVsID0gMDsKLQkvKiBmaWxsIGluIGFzY29uZiBhZGRyZXNzIHBh
cmFtZXRlciBmaWVsZHMgKi8KLQkvKiB0b3AgbGV2ZWwgZWxlbWVudHMgYXJlICJuZXR3b3JrZWQi
IGR1cmluZyBzZW5kICovCi0JYWEtPmlmYSA9IE5VTEw7Ci0JYWEtPnNlbnQgPSAwOwkJLyogY2xl
YXIgc2VudCBmbGFnICovCi0JdnRhZyA9IChzdHJ1Y3Qgc2N0cF9hc2NvbmZfdGFnX3BhcmFtICop
JmFhLT5hcC5hcGg7CisJbWVtc2V0KGFhX3Z0YWcsIDAsIHNpemVvZihzdHJ1Y3Qgc2N0cF9hc2Nv
bmZfYWRkcikpOworCWFhX3Z0YWctPnNwZWNpYWxfZGVsID0gMDsKKwkvKiBGaWxsIGluIEFTQ09O
RiBhZGRyZXNzIHBhcmFtZXRlciBmaWVsZHMuICovCisJLyogVG9wIGxldmVsIGVsZW1lbnRzIGFy
ZSAibmV0d29ya2VkIiBkdXJpbmcgc2VuZC4gKi8KKwlhYV92dGFnLT5pZmEgPSBOVUxMOworCWFh
X3Z0YWctPnNlbnQgPSAwOwkJLyogY2xlYXIgc2VudCBmbGFnICovCisJdnRhZyA9IChzdHJ1Y3Qg
c2N0cF9hc2NvbmZfdGFnX3BhcmFtICopJmFhX3Z0YWctPmFwLmFwaDsKIAl2dGFnLT5hcGgucGgu
cGFyYW1fdHlwZSA9IFNDVFBfTkFUX1ZUQUdTOwogCXZ0YWctPmFwaC5waC5wYXJhbV9sZW5ndGgg
PSBzaXplb2Yoc3RydWN0IHNjdHBfYXNjb25mX3RhZ19wYXJhbSk7CiAJdnRhZy0+bG9jYWxfdnRh
ZyA9IGh0b25sKHN0Y2ItPmFzb2MubXlfdnRhZyk7CiAJdnRhZy0+cmVtb3RlX3Z0YWcgPSBodG9u
bChzdGNiLT5hc29jLnBlZXJfdnRhZyk7Ci0JVEFJTFFfSU5TRVJUX1RBSUwoJnN0Y2ItPmFzb2Mu
YXNjb25mX3F1ZXVlLCBhYSwgbmV4dCk7CiAKLQlTQ1RQX01BTExPQyhhYSwgc3RydWN0IHNjdHBf
YXNjb25mX2FkZHIgKiwgc2l6ZW9mKCphYSksCi0JICAgICAgICAgICAgU0NUUF9NX0FTQ19BRERS
KTsKLQlpZiAoYWEgPT0gTlVMTCkgewotCQkvKiBkaWRuJ3QgZ2V0IG1lbW9yeSAqLwotCQlTQ1RQ
REJHKFNDVFBfREVCVUdfQVNDT05GMSwKLQkJICAgICAgICAic2N0cF9hc2NvbmZfc2VuZF9uYXRf
c3RhdGVfdXBkYXRlOiBmYWlsZWQgdG8gZ2V0IG1lbW9yeSFcbiIpOwotCQlyZXR1cm47Ci0JfQot
CW1lbXNldChhYSwgMCwgc2l6ZW9mKHN0cnVjdCBzY3RwX2FzY29uZl9hZGRyKSk7Ci0JLyogZmls
bCBpbiBhc2NvbmYgYWRkcmVzcyBwYXJhbWV0ZXIgZmllbGRzICovCi0JLyogQUREKDAuMC4wLjAp
ICovCi0Jc3dpdGNoIChuZXQtPnJvLl9sX2FkZHIuc2Euc2FfZmFtaWx5KSB7Ci0jaWZkZWYgSU5F
VAotCWNhc2UgQUZfSU5FVDoKLQkJYWEtPmFwLmFwaC5waC5wYXJhbV90eXBlID0gU0NUUF9BRERf
SVBfQUREUkVTUzsKLQkJYWEtPmFwLmFwaC5waC5wYXJhbV9sZW5ndGggPSBzaXplb2Yoc3RydWN0
IHNjdHBfYXNjb25mX2FkZHJ2NF9wYXJhbSk7Ci0JCWFhLT5hcC5hZGRycC5waC5wYXJhbV90eXBl
ID0gU0NUUF9JUFY0X0FERFJFU1M7Ci0JCWFhLT5hcC5hZGRycC5waC5wYXJhbV9sZW5ndGggPSBz
aXplb2YgKHN0cnVjdCBzY3RwX2lwdjRhZGRyX3BhcmFtKTsKLQkJLyogTm8gbmVlZCB0byBhZGQg
YW4gYWRkcmVzcywgd2UgYXJlIHVzaW5nIDAuMC4wLjAgKi8KLQkJVEFJTFFfSU5TRVJUX1RBSUwo
JnN0Y2ItPmFzb2MuYXNjb25mX3F1ZXVlLCBhYSwgbmV4dCk7Ci0JCWJyZWFrOwotI2VuZGlmCi0j
aWZkZWYgSU5FVDYKLQljYXNlIEFGX0lORVQ2OgotCQlhYS0+YXAuYXBoLnBoLnBhcmFtX3R5cGUg
PSBTQ1RQX0FERF9JUF9BRERSRVNTOwotCQlhYS0+YXAuYXBoLnBoLnBhcmFtX2xlbmd0aCA9IHNp
emVvZihzdHJ1Y3Qgc2N0cF9hc2NvbmZfYWRkcl9wYXJhbSk7Ci0JCWFhLT5hcC5hZGRycC5waC5w
YXJhbV90eXBlID0gU0NUUF9JUFY2X0FERFJFU1M7Ci0JCWFhLT5hcC5hZGRycC5waC5wYXJhbV9s
ZW5ndGggPSBzaXplb2YgKHN0cnVjdCBzY3RwX2lwdjZhZGRyX3BhcmFtKTsKLQkJLyogTm8gbmVl
ZCB0byBhZGQgYW4gYWRkcmVzcywgd2UgYXJlIHVzaW5nIDAuMC4wLjAgKi8KLQkJVEFJTFFfSU5T
RVJUX1RBSUwoJnN0Y2ItPmFzb2MuYXNjb25mX3F1ZXVlLCBhYSwgbmV4dCk7Ci0JCWJyZWFrOwot
I2VuZGlmCi0JZGVmYXVsdDoKLQkJU0NUUERCRyhTQ1RQX0RFQlVHX0FTQ09ORjEsCi0JCSAgICAg
ICAgInNjdHBfYXNjb25mX3NlbmRfbmF0X3N0YXRlX3VwZGF0ZTogdW5rbm93biBhZGRyZXNzIGZh
bWlseVxuIik7Ci0JCVNDVFBfRlJFRShhYSwgU0NUUF9NX0FTQ19BRERSKTsKLQkJcmV0dXJuOwot
CX0KLQlTQ1RQX01BTExPQyhhYSwgc3RydWN0IHNjdHBfYXNjb25mX2FkZHIgKiwgc2l6ZW9mKCph
YSksCi0JICAgICAgICAgICAgU0NUUF9NX0FTQ19BRERSKTsKLQlpZiAoYWEgPT0gTlVMTCkgewot
CQkvKiBkaWRuJ3QgZ2V0IG1lbW9yeSAqLwotCQlTQ1RQREJHKFNDVFBfREVCVUdfQVNDT05GMSwK
LQkJICAgICAgICAic2N0cF9hc2NvbmZfc2VuZF9uYXRfc3RhdGVfdXBkYXRlOiBmYWlsZWQgdG8g
Z2V0IG1lbW9yeSFcbiIpOwotCQlyZXR1cm47Ci0JfQotCW1lbXNldChhYSwgMCwgc2l6ZW9mKHN0
cnVjdCBzY3RwX2FzY29uZl9hZGRyKSk7Ci0JLyogZmlsbCBpbiBhc2NvbmYgYWRkcmVzcyBwYXJh
bWV0ZXIgZmllbGRzICovCi0JLyogQUREKDAuMC4wLjApICovCisJbWVtc2V0KGFhX2FkZCwgMCwg
c2l6ZW9mKHN0cnVjdCBzY3RwX2FzY29uZl9hZGRyKSk7CisJbWVtc2V0KGFhX2RlbCwgMCwgc2l6
ZW9mKHN0cnVjdCBzY3RwX2FzY29uZl9hZGRyKSk7CiAJc3dpdGNoIChuZXQtPnJvLl9sX2FkZHIu
c2Euc2FfZmFtaWx5KSB7CiAjaWZkZWYgSU5FVAogCWNhc2UgQUZfSU5FVDoKLQkJYWEtPmFwLmFw
aC5waC5wYXJhbV90eXBlID0gU0NUUF9BRERfSVBfQUREUkVTUzsKLQkJYWEtPmFwLmFwaC5waC5w
YXJhbV9sZW5ndGggPSBzaXplb2Yoc3RydWN0IHNjdHBfYXNjb25mX2FkZHJ2NF9wYXJhbSk7Ci0J
CWFhLT5hcC5hZGRycC5waC5wYXJhbV90eXBlID0gU0NUUF9JUFY0X0FERFJFU1M7Ci0JCWFhLT5h
cC5hZGRycC5waC5wYXJhbV9sZW5ndGggPSBzaXplb2YgKHN0cnVjdCBzY3RwX2lwdjRhZGRyX3Bh
cmFtKTsKLQkJLyogTm8gbmVlZCB0byBhZGQgYW4gYWRkcmVzcywgd2UgYXJlIHVzaW5nIDAuMC4w
LjAgKi8KLQkJVEFJTFFfSU5TRVJUX1RBSUwoJnN0Y2ItPmFzb2MuYXNjb25mX3F1ZXVlLCBhYSwg
bmV4dCk7CisJCWFhX2FkZC0+YXAuYXBoLnBoLnBhcmFtX3R5cGUgPSBTQ1RQX0FERF9JUF9BRERS
RVNTOworCQlhYV9hZGQtPmFwLmFwaC5waC5wYXJhbV9sZW5ndGggPSBzaXplb2Yoc3RydWN0IHNj
dHBfYXNjb25mX2FkZHJ2NF9wYXJhbSk7CisJCWFhX2FkZC0+YXAuYWRkcnAucGgucGFyYW1fdHlw
ZSA9IFNDVFBfSVBWNF9BRERSRVNTOworCQlhYV9hZGQtPmFwLmFkZHJwLnBoLnBhcmFtX2xlbmd0
aCA9IHNpemVvZiAoc3RydWN0IHNjdHBfaXB2NGFkZHJfcGFyYW0pOworCQkvKiBObyBuZWVkIHRv
IGZpbGwgdGhlIGFkZHJlc3MsIHdlIGFyZSB1c2luZyAwLjAuMC4wICovCisJCWFhX2RlbC0+YXAu
YXBoLnBoLnBhcmFtX3R5cGUgPSBTQ1RQX0FERF9JUF9BRERSRVNTOworCQlhYV9kZWwtPmFwLmFw
aC5waC5wYXJhbV9sZW5ndGggPSBzaXplb2Yoc3RydWN0IHNjdHBfYXNjb25mX2FkZHJ2NF9wYXJh
bSk7CisJCWFhX2RlbC0+YXAuYWRkcnAucGgucGFyYW1fdHlwZSA9IFNDVFBfSVBWNF9BRERSRVNT
OworCQlhYV9kZWwtPmFwLmFkZHJwLnBoLnBhcmFtX2xlbmd0aCA9IHNpemVvZiAoc3RydWN0IHNj
dHBfaXB2NGFkZHJfcGFyYW0pOworCQkvKiBObyBuZWVkIHRvIGZpbGwgdGhlIGFkZHJlc3MsIHdl
IGFyZSB1c2luZyAwLjAuMC4wICovCiAJCWJyZWFrOwogI2VuZGlmCiAjaWZkZWYgSU5FVDYKIAlj
YXNlIEFGX0lORVQ2OgotCQlhYS0+YXAuYXBoLnBoLnBhcmFtX3R5cGUgPSBTQ1RQX0RFTF9JUF9B
RERSRVNTOwotCQlhYS0+YXAuYXBoLnBoLnBhcmFtX2xlbmd0aCA9IHNpemVvZihzdHJ1Y3Qgc2N0
cF9hc2NvbmZfYWRkcl9wYXJhbSk7Ci0JCWFhLT5hcC5hZGRycC5waC5wYXJhbV90eXBlID0gU0NU
UF9JUFY2X0FERFJFU1M7Ci0JCWFhLT5hcC5hZGRycC5waC5wYXJhbV9sZW5ndGggPSBzaXplb2Yg
KHN0cnVjdCBzY3RwX2lwdjZhZGRyX3BhcmFtKTsKLQkJLyogTm8gbmVlZCB0byBhZGQgYW4gYWRk
cmVzcywgd2UgYXJlIHVzaW5nIDAuMC4wLjAgKi8KLQkJVEFJTFFfSU5TRVJUX1RBSUwoJnN0Y2It
PmFzb2MuYXNjb25mX3F1ZXVlLCBhYSwgbmV4dCk7CisJCWFhX2FkZC0+YXAuYXBoLnBoLnBhcmFt
X3R5cGUgPSBTQ1RQX0FERF9JUF9BRERSRVNTOworCQlhYV9hZGQtPmFwLmFwaC5waC5wYXJhbV9s
ZW5ndGggPSBzaXplb2Yoc3RydWN0IHNjdHBfYXNjb25mX2FkZHJfcGFyYW0pOworCQlhYV9hZGQt
PmFwLmFkZHJwLnBoLnBhcmFtX3R5cGUgPSBTQ1RQX0lQVjZfQUREUkVTUzsKKwkJYWFfYWRkLT5h
cC5hZGRycC5waC5wYXJhbV9sZW5ndGggPSBzaXplb2YgKHN0cnVjdCBzY3RwX2lwdjZhZGRyX3Bh
cmFtKTsKKwkJLyogTm8gbmVlZCB0byBmaWxsIHRoZSBhZGRyZXNzLCB3ZSBhcmUgdXNpbmcgOjow
ICovCisJCWFhX2RlbC0+YXAuYXBoLnBoLnBhcmFtX3R5cGUgPSBTQ1RQX0RFTF9JUF9BRERSRVNT
OworCQlhYV9kZWwtPmFwLmFwaC5waC5wYXJhbV9sZW5ndGggPSBzaXplb2Yoc3RydWN0IHNjdHBf
YXNjb25mX2FkZHJfcGFyYW0pOworCQlhYV9kZWwtPmFwLmFkZHJwLnBoLnBhcmFtX3R5cGUgPSBT
Q1RQX0lQVjZfQUREUkVTUzsKKwkJYWFfZGVsLT5hcC5hZGRycC5waC5wYXJhbV9sZW5ndGggPSBz
aXplb2YgKHN0cnVjdCBzY3RwX2lwdjZhZGRyX3BhcmFtKTsKKwkJLyogTm8gbmVlZCB0byBmaWxs
IHRoZSBhZGRyZXNzLCB3ZSBhcmUgdXNpbmcgOjowICovCiAJCWJyZWFrOwogI2VuZGlmCiAJZGVm
YXVsdDoKIAkJU0NUUERCRyhTQ1RQX0RFQlVHX0FTQ09ORjEsCi0JCSAgICAgICAgInNjdHBfYXNj
b25mX3NlbmRfbmF0X3N0YXRlX3VwZGF0ZTogdW5rbm93biBhZGRyZXNzIGZhbWlseVxuIik7Ci0J
CVNDVFBfRlJFRShhYSwgU0NUUF9NX0FTQ19BRERSKTsKLQkJcmV0dXJuOworCQkgICAgICAgICJz
Y3RwX2FzY29uZl9zZW5kX25hdF9zdGF0ZV91cGRhdGU6IHVua25vd24gYWRkcmVzcyBmYW1pbHkg
JWRcbiIsCisJCSAgICAgICAgbmV0LT5yby5fbF9hZGRyLnNhLnNhX2ZhbWlseSk7CisJCWdvdG8g
b3V0OwogCX0KKwlUQUlMUV9JTlNFUlRfVEFJTCgmc3RjYi0+YXNvYy5hc2NvbmZfcXVldWUsIGFh
X3Z0YWcsIG5leHQpOworCVRBSUxRX0lOU0VSVF9UQUlMKCZzdGNiLT5hc29jLmFzY29uZl9xdWV1
ZSwgYWFfYWRkLCBuZXh0KTsKKwlUQUlMUV9JTlNFUlRfVEFJTCgmc3RjYi0+YXNvYy5hc2NvbmZf
cXVldWUsIGFhX2RlbCwgbmV4dCk7CisKIAkvKiBOb3cgd2UgbXVzdCBodW50IHRoZSBhZGRyZXNz
ZXMgYW5kIGFkZCBhbGwgZ2xvYmFsIGFkZHJlc3NlcyAqLwogCWlmIChzdGNiLT5zY3RwX2VwLT5z
Y3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfQk9VTkRBTEwpIHsKIAkJc3RydWN0IHNjdHBfdnJm
ICp2cmYgPSBOVUxMOwpAQCAtMzQyOCw3ICszNDMyLDcgQEAgc2N0cF9hc2NvbmZfc2VuZF9uYXRf
c3RhdGVfdXBkYXRlKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKICNpZmRlZiBJTkVUCiAJCQkJY2Fz
ZSBBRl9JTkVUOgogCQkJCQl0byA9ICZzY3RwX2lmYXAtPmFkZHJlc3Muc2luOwotI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKIAkJCQkJaWYgKHByaXNvbl9jaGVja19pcDQoc3RjYi0+c2N0cF9lcC0+aXBf
aW5wLmlucC5pbnBfY3JlZCwKIAkJCQkJICAgICAgICAgICAgICAgICAgICAgJnRvLT5zaW5fYWRk
cikgIT0gMCkgewogCQkJCQkJY29udGludWU7CkBAIC0zNDQ1LDcgKzM0NDksNyBAQCBzY3RwX2Fz
Y29uZl9zZW5kX25hdF9zdGF0ZV91cGRhdGUoc3RydWN0IHNjdHBfdGNiICpzdGNiLAogI2lmZGVm
IElORVQ2CiAJCQkJY2FzZSBBRl9JTkVUNjoKIAkJCQkJdG82ID0gJnNjdHBfaWZhcC0+YWRkcmVz
cy5zaW42OwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQkJaWYgKHByaXNvbl9jaGVja19pcDYo
c3RjYi0+c2N0cF9lcC0+aXBfaW5wLmlucC5pbnBfY3JlZCwKIAkJCQkJICAgICAgICAgICAgICAg
ICAgICAgJnRvNi0+c2luNl9hZGRyKSAhPSAwKSB7CiAJCQkJCQljb250aW51ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0
cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2FzY29uZi5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIv
dXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfYXNjb25mLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2Rl
IDEwMDc1NQppbmRleCAyODEzMGYzYjJmNjAwZDg2OTg5NDU5ODNkZjcwNGVjMzI4YWVmNjY5Li5l
MTcxYTBiNTYxNzYzMmYwYjA1YjAxMzcyNTZiZmQ2MzBmNmI2NjM4Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Vz
cnNjdHBsaWIvbmV0aW5ldC9zY3RwX2FzY29uZi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIv
bmV0aW5ldC9zY3RwX2FzY29uZi5oCkBAIC0zMiw5ICszMiw5IEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxzeXMv
Y2RlZnMuaD4KLV9fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX2FzY29u
Zi5oIDMyNDA1NiAyMDE3LTA5LTI3IDEzOjA1OjIzWiB0dWV4ZW4gJCIpOworX19GQlNESUQoIiRG
cmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfYXNjb25mLmggMzYyMzc3IDIwMjAtMDYtMTkg
MTI6MzU6MjlaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAogI2lmbmRlZiBfTkVUSU5FVF9TQ1RQX0FT
Q09ORl9IXwpAQCAtNDUsNyArNDUsNyBAQCBfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25l
dGluZXQvc2N0cF9hc2NvbmYuaCAzMjQwNTYgMjAxNy0wOS0yNyAxMzowNToyM1ogdAogLyoKICAq
IGZ1bmN0aW9uIHByb3RvdHlwZXMKICAqLwotZXh0ZXJuIHZvaWQgc2N0cF9hc2NvbmZfY2xlYW51
cChzdHJ1Y3Qgc2N0cF90Y2IgKiwgc3RydWN0IHNjdHBfbmV0cyAqKTsKK2V4dGVybiB2b2lkIHNj
dHBfYXNjb25mX2NsZWFudXAoc3RydWN0IHNjdHBfdGNiICopOwogCiBleHRlcm4gc3RydWN0IG1i
dWYgKnNjdHBfY29tcG9zZV9hc2NvbmYoc3RydWN0IHNjdHBfdGNiICosIGludCAqLCBpbnQpOwog
CkBAIC01OCw4ICs1OCw4IEBAIHNjdHBfaGFuZGxlX2FzY29uZl9hY2soc3RydWN0IG1idWYgKiwg
aW50LCBzdHJ1Y3Qgc2N0cF9hc2NvbmZfYWNrX2NodW5rICosCiAgICAgIHN0cnVjdCBzY3RwX3Rj
YiAqLCBzdHJ1Y3Qgc2N0cF9uZXRzICosIGludCAqKTsKIAogZXh0ZXJuIHVpbnQzMl90Ci1zY3Rw
X2FkZHJfbWdtdF9lcF9zYShzdHJ1Y3Qgc2N0cF9pbnBjYiAqLCBzdHJ1Y3Qgc29ja2FkZHIgKiwK
LQkJICAgICB1aW50MzJfdCwgdWludDMyX3QsIHN0cnVjdCBzY3RwX2lmYSAqKTsKK3NjdHBfYWRk
cl9tZ210X2VwX3NhKHN0cnVjdCBzY3RwX2lucGNiICosIHN0cnVjdCBzb2NrYWRkciAqLCB1aW50
MzJfdCwKKyAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90KTsKIAogCiBleHRlcm4gaW50IHNj
dHBfYXNjb25mX2l0ZXJhdG9yX2VwKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHZvaWQgKnB0ciwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2F1dGguYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3Jz
Y3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2F1dGguYwpvbGQgbW9kZSAxMDA2NDQKbmV3
IG1vZGUgMTAwNzU1CmluZGV4IGJjNjQ1YjM2ZDkwMWE1NzhmMWVkYTgyZTliZGQyZjI3MWYzNmZh
MWYuLjNhOGZhYzA3MzExY2JiYWJkYjliNWU3MWNiOTI4MDA1ZGMwYzY1MWMKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBs
aWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfYXV0aC5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBs
aWIvbmV0aW5ldC9zY3RwX2F1dGguYwpAQCAtMzIsOSArMzIsOSBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZmRlZiBfX0ZyZWVCU0RfXworI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8c3lz
L2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9hdXRo
LmMgMzU1OTMxIDIwMTktMTItMjAgMTU6MjU6MDhaIHR1ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZy
ZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9hdXRoLmMgMzYyMDU0IDIwMjAtMDYtMTEgMTM6
MzQ6MDlaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9vcy5o
PgpAQCAtNTI1LDcgKzUyNSw3IEBAIHNjdHBfaW5zZXJ0X3NoYXJlZGtleShzdHJ1Y3Qgc2N0cF9r
ZXloZWFkICpzaGFyZWRfa2V5cywKIAkJfSBlbHNlIGlmIChuZXdfc2tleS0+a2V5aWQgPT0gc2tl
eS0+a2V5aWQpIHsKIAkJCS8qIHJlcGxhY2UgdGhlIGV4aXN0aW5nIGtleSAqLwogCQkJLyogdmVy
aWZ5IHRoaXMga2V5ICpjYW4qIGJlIHJlcGxhY2VkICovCi0JCQlpZiAoKHNrZXktPmRlYWN0aXZh
dGVkKSAmJiAoc2tleS0+cmVmY291bnQgPiAxKSkgeworCQkJaWYgKChza2V5LT5kZWFjdGl2YXRl
ZCkgfHwgKHNrZXktPnJlZmNvdW50ID4gMSkpIHsKIAkJCQlTQ1RQREJHKFNDVFBfREVCVUdfQVVU
SDEsCiAJCQkJCSJjYW4ndCByZXBsYWNlIHNoYXJlZCBrZXkgaWQgJXVcbiIsCiAJCQkJCW5ld19z
a2V5LT5rZXlpZCk7CkBAIC01NjcsMTEgKzU2Nyw3IEBAIHNjdHBfYXV0aF9rZXlfYWNxdWlyZShz
dHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQxNl90IGtleV9pZCkKIH0KIAogdm9pZAotc2N0cF9h
dXRoX2tleV9yZWxlYXNlKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgdWludDE2X3Qga2V5X2lkLCBp
bnQgc29fbG9ja2VkCi0jaWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChTQ1RQX1NP
X0xPQ0tfVEVTVElORykKLQlTQ1RQX1VOVVNFRAotI2VuZGlmCi0pCitzY3RwX2F1dGhfa2V5X3Jl
bGVhc2Uoc3RydWN0IHNjdHBfdGNiICpzdGNiLCB1aW50MTZfdCBrZXlfaWQsIGludCBzb19sb2Nr
ZWQpCiB7CiAJc2N0cF9zaGFyZWRrZXlfdCAqc2tleTsKIApAQCAtNjYwLDcgKzY1Niw2IEBAIHNj
dHBfZnJlZV9obWFjbGlzdChzY3RwX2htYWNsaXN0X3QgKmxpc3QpCiB7CiAJaWYgKGxpc3QgIT0g
TlVMTCkgewogCQlTQ1RQX0ZSRUUobGlzdCxTQ1RQX01fQVVUSF9ITCk7Ci0JCWxpc3QgPSBOVUxM
OwogCX0KIH0KIApAQCAtMTA4NCw0MCArMTA3OSw2IEBAIHNjdHBfaG1hY19tKHVpbnQxNl90IGht
YWNfYWxnbywgdWludDhfdCAqa2V5LCB1aW50MzJfdCBrZXlsZW4sCiAJcmV0dXJuIChkaWdlc3Rs
ZW4pOwogfQogCi0vKi0KLSAqIHZlcmlmeSB0aGUgSE1BQyBkaWdlc3QgdXNpbmcgdGhlIGRlc2ly
ZWQgaGFzaCBrZXksIHRleHQsIGFuZCBITUFDCi0gKiBhbGdvcml0aG0uCi0gKiBSZXR1cm5zIC0x
IG9uIGVycm9yLCAwIG9uIHN1Y2Nlc3MuCi0gKi8KLWludAotc2N0cF92ZXJpZnlfaG1hYyh1aW50
MTZfdCBobWFjX2FsZ28sIHVpbnQ4X3QgKmtleSwgdWludDMyX3Qga2V5bGVuLAotICAgIHVpbnQ4
X3QgKnRleHQsIHVpbnQzMl90IHRleHRsZW4sCi0gICAgdWludDhfdCAqZGlnZXN0LCB1aW50MzJf
dCBkaWdlc3RsZW4pCi17Ci0JdWludDMyX3QgbGVuOwotCXVpbnQ4X3QgdGVtcFtTQ1RQX0FVVEhf
RElHRVNUX0xFTl9NQVhdOwotCi0JLyogc2FuaXR5IGNoZWNrIHRoZSBtYXRlcmlhbCBhbmQgbGVu
Z3RoICovCi0JaWYgKChrZXkgPT0gTlVMTCkgfHwgKGtleWxlbiA9PSAwKSB8fAotCSAgICAodGV4
dCA9PSBOVUxMKSB8fCAodGV4dGxlbiA9PSAwKSB8fCAoZGlnZXN0ID09IE5VTEwpKSB7Ci0JCS8q
IGNhbid0IGRvIEhNQUMgd2l0aCBlbXB0eSBrZXkgb3IgdGV4dCBvciBkaWdlc3QgKi8KLQkJcmV0
dXJuICgtMSk7Ci0JfQotCWxlbiA9IHNjdHBfZ2V0X2htYWNfZGlnZXN0X2xlbihobWFjX2FsZ28p
OwotCWlmICgobGVuID09IDApIHx8IChkaWdlc3RsZW4gIT0gbGVuKSkKLQkJcmV0dXJuICgtMSk7
Ci0KLQkvKiBjb21wdXRlIHRoZSBleHBlY3RlZCBoYXNoICovCi0JaWYgKHNjdHBfaG1hYyhobWFj
X2FsZ28sIGtleSwga2V5bGVuLCB0ZXh0LCB0ZXh0bGVuLCB0ZW1wKSAhPSBsZW4pCi0JCXJldHVy
biAoLTEpOwotCi0JaWYgKG1lbWNtcChkaWdlc3QsIHRlbXAsIGRpZ2VzdGxlbikgIT0gMCkKLQkJ
cmV0dXJuICgtMSk7Ci0JZWxzZQotCQlyZXR1cm4gKDApOwotfQotCi0KIC8qCiAgKiBjb21wdXRl
cyB0aGUgcmVxdWVzdGVkIEhNQUMgdXNpbmcgYSBrZXkgc3RydWN0ICh3aGljaCBtYXkgYmUgbW9k
aWZpZWQgaWYKICAqIHRoZSBrZXlsZW4gZXhjZWVkcyB0aGUgSE1BQyBibG9jayBsZW4pLgpAQCAt
MTY4NCw2ICsxNjQ1LDExIEBAIHNjdHBfaGFuZGxlX2F1dGgoc3RydWN0IHNjdHBfdGNiICpzdGNi
LCBzdHJ1Y3Qgc2N0cF9hdXRoX2NodW5rICphdXRoLAogCQkiU0NUUCBBVVRIIENodW5rOiBzaGFy
ZWQga2V5ICV1LCBITUFDIGlkICV1XG4iLAogCQlzaGFyZWRfa2V5X2lkLCBobWFjX2lkKTsKIAor
I2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpZmRlZiBGVVpaSU5HX0JVSUxEX01PREVfVU5T
QUZFX0ZPUl9QUk9EVUNUSU9OCisJcmV0dXJuICgwKTsKKyNlbmRpZgorI2VuZGlmCiAJLyogaXMg
dGhlIGluZGljYXRlZCBITUFDIHN1cHBvcnRlZD8gKi8KIAlpZiAoIXNjdHBfYXV0aF9pc19zdXBw
b3J0ZWRfaG1hYyhzdGNiLT5hc29jLmxvY2FsX2htYWNzLCBobWFjX2lkKSkgewogCQlzdHJ1Y3Qg
bWJ1ZiAqb3BfZXJyOwpAQCAtMTc2NSw3ICsxNzMxLDcgQEAgc2N0cF9oYW5kbGVfYXV0aChzdHJ1
Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2F1dGhfY2h1bmsgKmF1dGgsCiAJICAgIG0s
IG9mZnNldCwgY29tcHV0ZWRfZGlnZXN0KTsKIAogCS8qIGNvbXBhcmUgdGhlIGNvbXB1dGVkIGRp
Z2VzdCB3aXRoIHRoZSBvbmUgaW4gdGhlIEFVVEggY2h1bmsgKi8KLQlpZiAobWVtY21wKGRpZ2Vz
dCwgY29tcHV0ZWRfZGlnZXN0LCBkaWdlc3RsZW4pICE9IDApIHsKKwlpZiAodGltaW5nc2FmZV9i
Y21wKGRpZ2VzdCwgY29tcHV0ZWRfZGlnZXN0LCBkaWdlc3RsZW4pICE9IDApIHsKIAkJU0NUUF9T
VEFUX0lOQ1Ioc2N0cHNfcmVjdmF1dGhmYWlsZWQpOwogCQlTQ1RQREJHKFNDVFBfREVCVUdfQVVU
SDEsCiAJCQkiU0NUUCBBdXRoOiBITUFDIGRpZ2VzdCBjaGVjayBmYWlsZWRcbiIpOwpAQCAtMTc3
OSwxMSArMTc0NSw3IEBAIHNjdHBfaGFuZGxlX2F1dGgoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBz
dHJ1Y3Qgc2N0cF9hdXRoX2NodW5rICphdXRoLAogICovCiB2b2lkCiBzY3RwX25vdGlmeV9hdXRo
ZW50aWNhdGlvbihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQzMl90IGluZGljYXRpb24sCi0J
CQkgICB1aW50MTZfdCBrZXlpZCwgdWludDE2X3QgYWx0X2tleWlkLCBpbnQgc29fbG9ja2VkCi0j
aWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykK
LQlTQ1RQX1VOVVNFRAotI2VuZGlmCi0pCisJCQkgICB1aW50MTZfdCBrZXlpZCwgdWludDE2X3Qg
YWx0X2tleWlkLCBpbnQgc29fbG9ja2VkKQogewogCXN0cnVjdCBtYnVmICptX25vdGlmeTsKIAlz
dHJ1Y3Qgc2N0cF9hdXRoa2V5X2V2ZW50ICphdXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNy
c2N0cGxpYi9uZXRpbmV0L3NjdHBfYXV0aC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0
L3NjdHBfYXV0aC5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggYzFmODJk
ODgyNWE0ZDgwMjNmZTRhZGIzMDFkZjQ5NzY0NmFjODA4Yy4uM2RjNWE1OWUyOGNjMWYzNzMzNDhh
ZmJjMDdmOWE3NTcyZDJmNzI0ZgotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0
cF9hdXRoLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfYXV0aC5oCkBA
IC0zMiw5ICszMiw5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLV9fRkJTRElEKCIkRnJl
ZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX2F1dGguaCAzMTA1OTAgMjAxNi0xMi0yNiAxMTow
Njo0MVogdHVleGVuICQiKTsKK19fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9z
Y3RwX2F1dGguaCAzMzg3NDkgMjAxOC0wOS0xOCAxMDo1MzowN1ogdHVleGVuICQiKTsKICNlbmRp
ZgogCiAjaWZuZGVmIF9ORVRJTkVUX1NDVFBfQVVUSF9IXwpAQCAtMTcwLDggKzE3MCw2IEBAIGV4
dGVybiB1aW50MzJfdCBzY3RwX2dldF9hdXRoX2NodW5rX2xlbih1aW50MTZfdCBobWFjX2FsZ28p
OwogZXh0ZXJuIHVpbnQzMl90IHNjdHBfZ2V0X2htYWNfZGlnZXN0X2xlbih1aW50MTZfdCBobWFj
X2FsZ28pOwogZXh0ZXJuIHVpbnQzMl90IHNjdHBfaG1hYyh1aW50MTZfdCBobWFjX2FsZ28sIHVp
bnQ4X3QgKmtleSwgdWludDMyX3Qga2V5bGVuLAogICAgIHVpbnQ4X3QgKnRleHQsIHVpbnQzMl90
IHRleHRsZW4sIHVpbnQ4X3QgKmRpZ2VzdCk7Ci1leHRlcm4gaW50IHNjdHBfdmVyaWZ5X2htYWMo
dWludDE2X3QgaG1hY19hbGdvLCB1aW50OF90ICprZXksIHVpbnQzMl90IGtleWxlbiwKLSAgICB1
aW50OF90ICp0ZXh0LCB1aW50MzJfdCB0ZXh0bGVuLCB1aW50OF90ICpkaWdlc3QsIHVpbnQzMl90
IGRpZ2VzdGxlbik7CiBleHRlcm4gdWludDMyX3Qgc2N0cF9jb21wdXRlX2htYWModWludDE2X3Qg
aG1hY19hbGdvLCBzY3RwX2tleV90ICprZXksCiAgICAgdWludDhfdCAqdGV4dCwgdWludDMyX3Qg
dGV4dGxlbiwgdWludDhfdCAqZGlnZXN0KTsKIGV4dGVybiBpbnQgc2N0cF9hdXRoX2lzX3N1cHBv
cnRlZF9obWFjKHNjdHBfaG1hY2xpc3RfdCAqbGlzdCwgdWludDE2X3QgaWQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfYnNkX2FkZHIuYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2JzZF9hZGRyLmMKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBt
b2RlIDEwMDc1NQppbmRleCBlM2I2ZTFiNmRlN2VkYzBmMWJhZjJlNWU1ZjQzNjhiZWQzYTgwOTRi
Li40MGUzMDhmOGYyZWI0NmRkN2FlMWI3YmE2Y2QwMmY2OTUzY2EzODI5Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2JzZF9hZGRyLmMKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0
cGxpYi9uZXRpbmV0L3NjdHBfYnNkX2FkZHIuYwpAQCAtMzIsOSArMzIsOSBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZmRlZiBfX0ZyZWVCU0RfXworI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVk
ZSA8c3lzL2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0
cF9ic2RfYWRkci5jIDMzMzgxMyAyMDE4LTA1LTE4IDIwOjEzOjM0WiBtbWFjeSAkIik7CitfX0ZC
U0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9ic2RfYWRkci5jIDM1ODA4MCAy
MDIwLTAyLTE4IDE5OjQxOjU1WiB0dWV4ZW4gJCIpOwogI2VuZGlmCiAKICNpbmNsdWRlIDxuZXRp
bmV0L3NjdHBfb3MuaD4KQEAgLTUwLDEyICs1MCwxMSBAQCBfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhl
YWQvc3lzL25ldGluZXQvc2N0cF9ic2RfYWRkci5jIDMzMzgxMyAyMDE4LTA1LTE4IDIwOjEzOjM0
WgogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9hc2NvbmYuaD4KICNpbmNsdWRlIDxuZXRpbmV0L3Nj
dHBfc3lzY3RsLmg+CiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX2luZGF0YS5oPgotI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKICNpbmNsdWRlIDxzeXMvdW5pc3RkLmg+CiAjZW5kaWYKIAogLyogRGVjbGFy
ZSBhbGwgb2Ygb3VyIG1hbGxvYyBuYW1lZCB0eXBlcyAqLwotI2lmbmRlZiBfX1BhbmRhX18KIE1B
TExPQ19ERUZJTkUoU0NUUF9NX01BUCwgInNjdHBfbWFwIiwgInNjdHAgYXNvYyBtYXAgZGVzY3Jp
cHRvciIpOwogTUFMTE9DX0RFRklORShTQ1RQX01fU1RSTUksICJzY3RwX3N0cmkiLCAic2N0cCBz
dHJlYW0gaW4gYXJyYXkiKTsKIE1BTExPQ19ERUZJTkUoU0NUUF9NX1NUUk1PLCAic2N0cF9zdHJv
IiwgInNjdHAgc3RyZWFtIG91dCBhcnJheSIpOwpAQCAtNzYsMTIgKzc1LDExIEBAIE1BTExPQ19E
RUZJTkUoU0NUUF9NX01WUkYsICJzY3RwX212cmYiLCAic2N0cCBtdnJmIHBjYiBsaXN0Iik7CiBN
QUxMT0NfREVGSU5FKFNDVFBfTV9JVEVSLCAic2N0cF9pdGVyIiwgInNjdHAgaXRlcmF0b3IgY29u
dHJvbCIpOwogTUFMTE9DX0RFRklORShTQ1RQX01fU09DS09QVCwgInNjdHBfc29ja28iLCAic2N0
cCBzb2NrZXQgb3B0aW9uIik7CiBNQUxMT0NfREVGSU5FKFNDVFBfTV9NQ09SRSwgInNjdHBfbWNv
cmUiLCAic2N0cCBtY29yZSBxdWV1ZSIpOwotI2VuZGlmCiAKIC8qIEdsb2JhbCBOT04tVk5FVCBz
dHJ1Y3R1cmUgdGhhdCBjb250cm9scyB0aGUgaXRlcmF0b3IgKi8KIHN0cnVjdCBpdGVyYXRvcl9j
b250cm9sIHNjdHBfaXRfY3RsOwogCi0jaWYgIWRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgIShk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkKIHN0YXRpYyB2
b2lkCiBzY3RwX2NsZWFudXBfaXRxdWV1ZSh2b2lkKQogewpAQCAtMTA5LDcgKzEwNyw3IEBAIHZv
aWQKIHNjdHBfd2FrZXVwX2l0ZXJhdG9yKHZvaWQpCiB7CiAjaWYgZGVmaW5lZChTQ1RQX1BST0NF
U1NfTEVWRUxfTE9DS1MpCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lm
IGRlZmluZWQoX1dJTjMyKQogCVdha2VBbGxDb25kaXRpb25WYXJpYWJsZSgmc2N0cF9pdF9jdGwu
aXRlcmF0b3Jfd2FrZXVwKTsKICNlbHNlCiAJcHRocmVhZF9jb25kX2Jyb2FkY2FzdCgmc2N0cF9p
dF9jdGwuaXRlcmF0b3Jfd2FrZXVwKTsKQEAgLTEzMSw3ICsxMjksNyBAQCBzY3RwX2l0ZXJhdG9y
X3RocmVhZCh2b2lkICp2IFNDVFBfVU5VU0VEKQogI2VuZGlmCiAJU0NUUF9JUElfSVRFUkFUT1Jf
V1FfTE9DSygpOwogCS8qIEluIEZyZWVCU0QgdGhpcyB0aHJlYWQgbmV2ZXIgdGVybWluYXRlcy4g
Ki8KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJZm9yICg7OykgewogI2Vsc2UKIAl3aGlsZSAoKHNj
dHBfaXRfY3RsLml0ZXJhdG9yX2ZsYWdzICYgU0NUUF9JVEVSQVRPUl9NVVNUX0VYSVQpID09IDAp
IHsKQEAgLTE0MCwyNSArMTM4LDI1IEBAIHNjdHBfaXRlcmF0b3JfdGhyZWFkKHZvaWQgKnYgU0NU
UF9VTlVTRUQpCiAJCW1zbGVlcCgmc2N0cF9pdF9jdGwuaXRlcmF0b3JfcnVubmluZywKICNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKQogCQkgICAgICAgJnNjdHBfaXRfY3RsLmlwaV9pdGVyYXRvcl93
cV9tdHgsCi0jZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9v
c19EYXJ3aW4pCisjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKIAkJICAgICAgIHNjdHBfaXRfY3Rs
LmlwaV9pdGVyYXRvcl93cV9tdHgsCiAjZW5kaWYKIAkJICAgICAgIDAsICJ3YWl0aW5nX2Zvcl93
b3JrIiwgMCk7CiAjZWxzZQotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNp
ZiBkZWZpbmVkKF9XSU4zMikKIAkJU2xlZXBDb25kaXRpb25WYXJpYWJsZUNTKCZzY3RwX2l0X2N0
bC5pdGVyYXRvcl93YWtldXAsICZzY3RwX2l0X2N0bC5pcGlfaXRlcmF0b3Jfd3FfbXR4LCBJTkZJ
TklURSk7CiAjZWxzZQogCQlwdGhyZWFkX2NvbmRfd2FpdCgmc2N0cF9pdF9jdGwuaXRlcmF0b3Jf
d2FrZXVwLCAmc2N0cF9pdF9jdGwuaXBpX2l0ZXJhdG9yX3dxX210eCk7CiAjZW5kaWYKICNlbmRp
ZgotI2lmICFkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmICEoZGVmaW5lZChfX0ZyZWVCU0RfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAJCWlmIChzY3RwX2l0X2N0bC5pdGVyYXRvcl9m
bGFncyAmIFNDVFBfSVRFUkFUT1JfTVVTVF9FWElUKSB7CiAJCQlicmVhazsKIAkJfQogI2VuZGlm
CiAJCXNjdHBfaXRlcmF0b3Jfd29ya2VyKCk7CiAJfQotI2lmICFkZWZpbmVkKF9fRnJlZUJTRF9f
KQorI2lmICEoZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykp
CiAJLyogTm93IHRoaXMgdGhyZWFkIG5lZWRzIHRvIGJlIHRlcm1pbmF0ZWQgKi8KIAlzY3RwX2Ns
ZWFudXBfaXRxdWV1ZSgpOwogCXNjdHBfaXRfY3RsLml0ZXJhdG9yX2ZsYWdzIHw9IFNDVFBfSVRF
UkFUT1JfRVhJVEVEOwpAQCAtMTg3LDEyICsxODUsMTQgQEAgc2N0cF9zdGFydHVwX2l0ZXJhdG9y
KHZvaWQpCiAJU0NUUF9JVEVSQVRPUl9MT0NLX0lOSVQoKTsKIAlTQ1RQX0lQSV9JVEVSQVRPUl9X
UV9JTklUKCk7CiAJVEFJTFFfSU5JVCgmc2N0cF9pdF9jdGwuaXRlcmF0b3JoZWFkKTsKLSNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKQotI2lmIF9fRnJlZUJTRF92ZXJzaW9uIDw9IDcwMTAwMAotCWt0
aHJlYWRfY3JlYXRlKHNjdHBfaXRlcmF0b3JfdGhyZWFkLAotI2Vsc2UKKyNpZiBkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCisJaWYgKHNjdHBfdXNlcnNwYWNlX3RocmVhZF9jcmVhdGUoJnNjdHBfaXRf
Y3RsLnRocmVhZF9wcm9jLCAmc2N0cF9pdGVyYXRvcl90aHJlYWQpKSB7CisJCVNDVFBfUFJJTlRG
KCJFUlJPUjogQ3JlYXRpbmcgc2N0cF9pdGVyYXRvcl90aHJlYWQgZmFpbGVkLlxuIik7CisJfSBl
bHNlIHsKKwkJU0NUUF9CQVNFX1ZBUihpdGVyYXRvcl90aHJlYWRfc3RhcnRlZCkgPSAxOworCX0K
KyNlbGlmIGRlZmluZWQoX19GcmVlQlNEX18pCiAJa3Byb2NfY3JlYXRlKHNjdHBfaXRlcmF0b3Jf
dGhyZWFkLAotI2VuZGlmCiAJICAgICAgICAgICAgICh2b2lkICopTlVMTCwKIAkgICAgICAgICAg
ICAgJnNjdHBfaXRfY3RsLnRocmVhZF9wcm9jLAogCSAgICAgICAgICAgICBSRlBST0MsCkBAIC0y
MDAsMTAgKzIwMCw2IEBAIHNjdHBfc3RhcnR1cF9pdGVyYXRvcih2b2lkKQogCSAgICAgICAgICAg
ICBTQ1RQX0tUUkhFQURfTkFNRSk7CiAjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKIAlrZXJuZWxf
dGhyZWFkX3N0YXJ0KCh0aHJlYWRfY29udGludWVfdClzY3RwX2l0ZXJhdG9yX3RocmVhZCwgTlVM
TCwgJnNjdHBfaXRfY3RsLnRocmVhZF9wcm9jKTsKLSNlbGlmIGRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKLQlpZiAoc2N0cF91c2Vyc3BhY2VfdGhyZWFkX2NyZWF0ZSgmc2N0cF9pdF9jdGwudGhyZWFk
X3Byb2MsICZzY3RwX2l0ZXJhdG9yX3RocmVhZCkpIHsKLQkJU0NUUF9QUklOVEYoIkVSUk9SOiBD
cmVhdGluZyBzY3RwX2l0ZXJhdG9yX3RocmVhZCBmYWlsZWQuXG4iKTsKLQl9CiAjZW5kaWYKIH0K
IApAQCAtMjU2LDcgKzI1Miw3IEBAIHNjdHBfaXNfZGVzaXJlZF9pbnRlcmZhY2VfdHlwZShzdHJ1
Y3QgaWZuZXQgKmlmbikKIAlpbnQgcmVzdWx0OwogCiAJLyogY2hlY2sgdGhlIGludGVyZmFjZSB0
eXBlIHRvIHNlZSBpZiBpdCdzIG9uZSB3ZSBjYXJlIGFib3V0ICovCi0jaWYgZGVmaW5lZChfX0FQ
UExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAJc3dpdGNoKGlmbmV0X3R5cGUoaWZuKSkgewogI2Vsc2UKIAlzd2l0Y2ggKGlmbi0+aWZfdHlw
ZSkgewpAQCAtMjgyLDcgKzI3OCw3IEBAIHNjdHBfaXNfZGVzaXJlZF9pbnRlcmZhY2VfdHlwZShz
dHJ1Y3QgaWZuZXQgKmlmbikKIAljYXNlIElGVF9HSUY6CiAJY2FzZSBJRlRfTDJWTEFOOgogCWNh
c2UgSUZUX1NURjoKLSNpZiAhZGVmaW5lZChfX0FQUExFX18pCisjaWYgIShkZWZpbmVkKF9fQVBQ
TEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAJY2FzZSBJRlRfSVA6CiAJY2FzZSBJ
RlRfSVBPVkVSQ0RMQzoKIAljYXNlIElGVF9JUE9WRVJDTEFXOgpAQCAtMjk5LDcgKzI5NSw3IEBA
IHNjdHBfaXNfZGVzaXJlZF9pbnRlcmZhY2VfdHlwZShzdHJ1Y3QgaWZuZXQgKmlmbikKIH0KICNl
bmRpZgogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBpbnQKIHNjdHBfaXNfdm13YXJlX2ludGVyZmFjZShz
dHJ1Y3QgaWZuZXQgKmlmbikKIHsKQEAgLTMwNyw3ICszMDMsNyBAQCBzY3RwX2lzX3Ztd2FyZV9p
bnRlcmZhY2Uoc3RydWN0IGlmbmV0ICppZm4pCiB9CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoX19V
c2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikgJiYgZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogI2lmZGVmIE1BTExPQwogI3VuZGVmIE1BTExPQwogI2RlZmluZSBNQUxMT0Mo
eCkgSGVhcEFsbG9jKEdldFByb2Nlc3NIZWFwKCksIDAsICh4KSkKQEAgLTQ4MSw3ICs0NzcsNyBA
QCBzY3RwX2luaXRfaWZuc19mb3JfdnJmKGludCB2cmZpZCkKIH0KICNlbmRpZgogCi0jaWYgZGVm
aW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiBzdGF0aWMgdm9pZAogc2N0cF9pbml0X2lmbnNfZm9yX3ZyZihpbnQgdnJmaWQp
CiB7CkBAIC01NDAsNyArNTM2LDcgQEAgc2N0cF9pbml0X2lmbnNfZm9yX3ZyZihpbnQgdnJmaWQp
CiAJCQl9IGVsc2UgewogCQkJCWlmYV9mbGFncyA9IDA7CiAJCQl9Ci0JCQlzbnByaW50ZihuYW1l
LCBTQ1RQX0lGTkFNU0laLCAiJXMlZCIsIGlmbmV0X25hbWUoaWZuKSwgaWZuZXRfdW5pdChpZm4p
KTsKKwkJCVNDVFBfU05QUklOVEYobmFtZSwgU0NUUF9JRk5BTVNJWiwgIiVzJWQiLCBpZm5ldF9u
YW1lKGlmbiksIGlmbmV0X3VuaXQoaWZuKSk7CiAJCQlzY3RwX2lmYSA9IHNjdHBfYWRkX2FkZHJf
dG9fdnJmKHZyZmlkLAogCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAq
KWlmbiwgLyogWFhYICovCiAJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmbmV0
X2luZGV4KGlmbiksCkBAIC01NjAsNyArNTU2LDcgQEAgc2N0cF9pbml0X2lmbnNfZm9yX3ZyZihp
bnQgdnJmaWQpCiB9CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIHN0YXRpYyB2b2lk
CiBzY3RwX2luaXRfaWZuc19mb3JfdnJmKGludCB2cmZpZCkKIHsKQEAgLTU2OSw2ICs1NjUsNyBA
QCBzY3RwX2luaXRfaWZuc19mb3JfdnJmKGludCB2cmZpZCkKIAkgKiBhbnkgSUZBIHRoYXQgZXhp
c3RzIGFzIHdlIGZsb2F0IHRocm91Z2ggdGhlCiAJICogbGlzdCBvZiBJRkEncwogCSAqLworCXN0
cnVjdCBlcG9jaF90cmFja2VyIGV0OwogCXN0cnVjdCBpZm5ldCAqaWZuOwogCXN0cnVjdCBpZmFk
ZHIgKmlmYTsKIAlzdHJ1Y3Qgc2N0cF9pZmEgKnNjdHBfaWZhOwpAQCAtNTc4LDEyICs1NzUsMTIg
QEAgc2N0cF9pbml0X2lmbnNfZm9yX3ZyZihpbnQgdnJmaWQpCiAjZW5kaWYKIAogCUlGTkVUX1JM
T0NLKCk7Ci0JVEFJTFFfRk9SRUFDSChpZm4sICZNT0RVTEVfR0xPQkFMKGlmbmV0KSwgaWZfbGlu
aykgeworCU5FVF9FUE9DSF9FTlRFUihldCk7CisJQ0tfU1RBSUxRX0ZPUkVBQ0goaWZuLCAmTU9E
VUxFX0dMT0JBTChpZm5ldCksIGlmX2xpbmspIHsKIAkJaWYgKHNjdHBfaXNfZGVzaXJlZF9pbnRl
cmZhY2VfdHlwZShpZm4pID09IDApIHsKIAkJCS8qIG5vbiBkZXNpcmVkIHR5cGUgKi8KIAkJCWNv
bnRpbnVlOwogCQl9Ci0JCUlGX0FERFJfUkxPQ0soaWZuKTsKIAkJQ0tfU1RBSUxRX0ZPUkVBQ0go
aWZhLCAmaWZuLT5pZl9hZGRyaGVhZCwgaWZhX2xpbmspIHsKIAkJCWlmIChpZmEtPmlmYV9hZGRy
ID09IE5VTEwpIHsKIAkJCQljb250aW51ZTsKQEAgLTYzNiw4ICs2MzMsOCBAQCBzY3RwX2luaXRf
aWZuc19mb3JfdnJmKGludCB2cmZpZCkKIAkJCQlzY3RwX2lmYS0+bG9jYWxpZmFfZmxhZ3MgJj0g
flNDVFBfQUREUl9ERUZFUl9VU0U7CiAJCQl9CiAJCX0KLQkJSUZfQUREUl9SVU5MT0NLKGlmbik7
CiAJfQorCU5FVF9FUE9DSF9FWElUKGV0KTsKIAlJRk5FVF9SVU5MT0NLKCk7CiB9CiAjZW5kaWYK
QEAgLTcxNSw3ICs3MTIsNyBAQCBzY3RwX2FkZHJfY2hhbmdlKHN0cnVjdCBpZmFkZHIgKmlmYSwg
aW50IGNtZCkKIAl9CiAJaWYgKGNtZCA9PSBSVE1fQUREKSB7CiAJCSh2b2lkKXNjdHBfYWRkX2Fk
ZHJfdG9fdnJmKFNDVFBfREVGQVVMVF9WUkZJRCwgKHZvaWQgKilpZmEtPmlmYV9pZnAsCi0jaWYg
ZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmbmV0X2luZGV4KGlm
YS0+aWZhX2lmcCksIGlmbmV0X3R5cGUoaWZhLT5pZmFfaWZwKSwgaWZuZXRfbmFtZShpZmEtPmlm
YV9pZnApLAogI2Vsc2UKIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZhLT5pZmFfaWZw
LT5pZl9pbmRleCwgaWZhLT5pZmFfaWZwLT5pZl90eXBlLCBpZmEtPmlmYV9pZnAtPmlmX3huYW1l
LApAQCAtNzI0LDcgKzcyMSw3IEBAIHNjdHBfYWRkcl9jaGFuZ2Uoc3RydWN0IGlmYWRkciAqaWZh
LCBpbnQgY21kKQogCX0gZWxzZSB7CiAKIAkJc2N0cF9kZWxfYWRkcl9mcm9tX3ZyZihTQ1RQX0RF
RkFVTFRfVlJGSUQsIGlmYS0+aWZhX2FkZHIsCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYg
ZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCSAgICAgICAg
ICAgICAgICAgICAgICAgaWZuZXRfaW5kZXgoaWZhLT5pZmFfaWZwKSwKIAkJICAgICAgICAgICAg
ICAgICAgICAgICBpZm5ldF9uYW1lKGlmYS0+aWZhX2lmcCkpOwogI2Vsc2UKQEAgLTczOSwyNiAr
NzM2LDEzIEBAIHNjdHBfYWRkcl9jaGFuZ2Uoc3RydWN0IGlmYWRkciAqaWZhLCBpbnQgY21kKQog
I2VuZGlmCiB9CiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiB2b2lkCi1zY3RwX2FkZF9vcl9kZWxf
aW50ZXJmYWNlcyhpbnQgKCpwcmVkKShzdHJ1Y3QgaWZuZXQgKiksIGludCBhZGQpCi17Ci0Jc3Ry
dWN0IGlmbmV0ICppZm47Ci0Jc3RydWN0IGlmYWRkciAqaWZhOwotCi0JSUZORVRfUkxPQ0soKTsK
LQlUQUlMUV9GT1JFQUNIKGlmbiwgJk1PRFVMRV9HTE9CQUwoaWZuZXQpLCBpZl9saW5rKSB7Ci0J
CWlmICghKCpwcmVkKShpZm4pKSB7Ci0JCQljb250aW51ZTsKLQkJfQotCQlDS19TVEFJTFFfRk9S
RUFDSChpZmEsICZpZm4tPmlmX2FkZHJoZWFkLCBpZmFfbGluaykgewotCQkJc2N0cF9hZGRyX2No
YW5nZShpZmEsIGFkZCA/IFJUTV9BREQgOiBSVE1fREVMRVRFKTsKLQkJfQotCX0KLQlJRk5FVF9S
VU5MT0NLKCk7CitzY3RwX2FkZHJfY2hhbmdlX2V2ZW50X2hhbmRsZXIodm9pZCAqYXJnIF9fdW51
c2VkLCBzdHJ1Y3QgaWZhZGRyICppZmEsIGludCBjbWQpIHsKKwlzY3RwX2FkZHJfY2hhbmdlKGlm
YSwgY21kKTsKIH0KICNlbmRpZgotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQo
X19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogdm9pZAogc2N0cF9hZGRfb3Jf
ZGVsX2ludGVyZmFjZXMoaW50ICgqcHJlZCkoc3RydWN0IGlmbmV0ICopLCBpbnQgYWRkKQogewpA
QCAtNzkxLDcgKzc3NSw3IEBAIHNjdHBfZ2V0X21idWZfZm9yX21zZyh1bnNpZ25lZCBpbnQgc3Bh
Y2VfbmVlZGVkLCBpbnQgd2FudF9oZWFkZXIsCiAJCSAgICAgIGludCBob3csIGludCBhbGxvbmVi
dWYsIGludCB0eXBlKQogewogCXN0cnVjdCBtYnVmICptID0gTlVMTDsKLSNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDExMDAwNTIgfHwgZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKICNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJbSA9ICBtX2dldG0yKE5VTEwsIHNw
YWNlX25lZWRlZCwgaG93LCB0eXBlLCB3YW50X2hlYWRlciA/IE1fUEtUSERSIDogMCwgYWxsb25l
YnVmKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0
cF9ic2RfYWRkci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfYnNkX2FkZHIu
aApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGE4M2MwZWM0Yzc2OTdkNTAy
NjVhYTczOGFhMjVlNmU4ZWE5OTU0NDkuLjA1ZDFiM2ZlZWZhMjQxMDE4MWEyZjkwZDk0ZjY4MmM4
NzdkYWQ1YjcKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfYnNkX2FkZHIu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3Vz
cnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9ic2RfYWRkci5oCkBAIC0z
Miw5ICszMiw5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
I2lmZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLV9fRkJTRElEKCIkRnJlZUJT
RDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX2JzZF9hZGRyLmggMzEwNTkwIDIwMTYtMTItMjYgMTE6
MDY6NDFaIHR1ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQv
c2N0cF9ic2RfYWRkci5oIDM1MzQ4MCAyMDE5LTEwLTEzIDE4OjE3OjA4WiB0dWV4ZW4gJCIpOwog
I2VuZGlmCiAKICNpZm5kZWYgX05FVElORVRfU0NUUF9CU0RfQUREUl9IXwpAQCAtNjEsOCArNjEs
MTAgQEAgaW50IHNjdHBfY29weV9vdXRfcGFja2V0X2xvZyh1aW50OF90ICp0YXJnZXQsIGludCBs
ZW5ndGgpOwogCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKF9fUGFuZGFfXykKIHZvaWQgc2N0cF9h
ZGRyX2NoYW5nZShzdHJ1Y3QgaWZhZGRyICppZmEsIGludCBjbWQpOworI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisKK3ZvaWQgc2N0cF9hZGRyX2No
YW5nZV9ldmVudF9oYW5kbGVyKHZvaWQgKiwgc3RydWN0IGlmYWRkciAqLCBpbnQpOwogI2VuZGlm
CiAKIHZvaWQgc2N0cF9hZGRfb3JfZGVsX2ludGVyZmFjZXMoaW50ICgqcHJlZCkoc3RydWN0IGlm
bmV0ICopLCBpbnQgYWRkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5l
dC9zY3RwX2NhbGxvdXQuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2NhbGxv
dXQuYwpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDhmYzU3YzdhZmYwYmZm
OGFkZGUwZDVkNzkyY2Q5NzY1MmE2ZGQ1ZTYuLjRjOWJlNzU2OGJmYmM2YTlhZDczMmI5ZmYzNTBj
YmJmNzFhMjU1YWMKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfY2FsbG91
dC5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
dXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2NhbGxvdXQuYwpAQCAt
MzQsMTIgKzM0LDEyIEBACiAKICNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8
c3lzL3R5cGVzLmg+Ci0jaWYgIWRlZmluZWQgKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYg
IWRlZmluZWQoX1dJTjMyKQogI2luY2x1ZGUgPHN5cy93YWl0Lmg+CiAjaW5jbHVkZSA8dW5pc3Rk
Lmg+CiAjaW5jbHVkZSA8cHRocmVhZC5oPgogI2VuZGlmCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFj
ZV9vc19OYUNsKQorI2lmIGRlZmluZWQoX19uYXRpdmVfY2xpZW50X18pCiAjaW5jbHVkZSA8c3lz
L3NlbGVjdC5oPgogI2VuZGlmCiAjaW5jbHVkZSA8c3RkbGliLmg+CkBAIC01NCwxOCArNTQsMTkg
QEAKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfY2FsbG91dC5oPgogI2luY2x1ZGUgPG5ldGluZXQv
c2N0cF9wY2IuaD4KICNlbmRpZgorI2luY2x1ZGUgPG5ldGluZXQvc2N0cHV0aWwuaD4KIAogLyoK
ICAqIENhbGxvdXQvVGltZXIgcm91dGluZXMgZm9yIE9TIHRoYXQgZG9lc24ndCBoYXZlIHRoZW0K
ICAqLwogI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi1z
dGF0aWMgaW50IHRpY2tzID0gMDsKK3N0YXRpYyB1aW50MzJfdCB0aWNrcyA9IDA7CiAjZWxzZQog
ZXh0ZXJuIGludCB0aWNrczsKICNlbmRpZgogCi1pbnQgc2N0cF9nZXRfdGlja19jb3VudCh2b2lk
KSB7Ci0JaW50IHJldDsKK3VpbnQzMl90IHNjdHBfZ2V0X3RpY2tfY291bnQodm9pZCkgeworCXVp
bnQzMl90IHJldDsKIAogCVNDVFBfVElNRVJRX0xPQ0soKTsKIAlyZXQgPSB0aWNrczsKQEAgLTg2
LDE3ICs4NywyMCBAQCBzY3RwX29zX3RpbWVyX2luaXQoc2N0cF9vc190aW1lcl90ICpjKQogCW1l
bXNldChjLCAwLCBzaXplb2YoKmMpKTsKIH0KIAotdm9pZAotc2N0cF9vc190aW1lcl9zdGFydChz
Y3RwX29zX3RpbWVyX3QgKmMsIGludCB0b190aWNrcywgdm9pZCAoKmZ0bikgKHZvaWQgKiksCitp
bnQKK3NjdHBfb3NfdGltZXJfc3RhcnQoc2N0cF9vc190aW1lcl90ICpjLCB1aW50MzJfdCB0b190
aWNrcywgdm9pZCAoKmZ0bikgKHZvaWQgKiksCiAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFy
ZykKIHsKKwlpbnQgcmV0ID0gMDsKKwogCS8qIHBhcmFub2lhICovCiAJaWYgKChjID09IE5VTEwp
IHx8IChmdG4gPT0gTlVMTCkpCi0JICAgIHJldHVybjsKKwkJcmV0dXJuIChyZXQpOwogCiAJU0NU
UF9USU1FUlFfTE9DSygpOwogCS8qIGNoZWNrIHRvIHNlZSBpZiB3ZSdyZSByZXNjaGVkdWxpbmcg
YSB0aW1lciAqLwogCWlmIChjLT5jX2ZsYWdzICYgU0NUUF9DQUxMT1VUX1BFTkRJTkcpIHsKKwkJ
cmV0ID0gMTsKIAkJaWYgKGMgPT0gc2N0cF9vc190aW1lcl9uZXh0KSB7CiAJCQlzY3RwX29zX3Rp
bWVyX25leHQgPSBUQUlMUV9ORVhUKGMsIHRxZSk7CiAJCX0KQEAgLTExMyw3ICsxMTcsNyBAQCBz
Y3RwX29zX3RpbWVyX3N0YXJ0KHNjdHBfb3NfdGltZXJfdCAqYywgaW50IHRvX3RpY2tzLCB2b2lk
ICgqZnRuKSAodm9pZCAqKSwKIAkgKiBXZSBjb3VsZCB1bmxvY2svc3BseCBoZXJlIGFuZCBsb2Nr
L3NwbCBhdCB0aGUgVEFJTFFfSU5TRVJUX1RBSUwsCiAJICogYnV0IHRoZXJlJ3Mgbm8gcG9pbnQg
c2luY2UgZG9pbmcgdGhpcyBzZXR1cCBkb2Vzbid0IHRha2UgbXVjaCB0aW1lLgogCSAqLwotCWlm
ICh0b190aWNrcyA8PSAwKQorCWlmICh0b190aWNrcyA9PSAwKQogCQl0b190aWNrcyA9IDE7CiAK
IAljLT5jX2FyZyA9IGFyZzsKQEAgLTEyMiw2ICsxMjYsNyBAQCBzY3RwX29zX3RpbWVyX3N0YXJ0
KHNjdHBfb3NfdGltZXJfdCAqYywgaW50IHRvX3RpY2tzLCB2b2lkICgqZnRuKSAodm9pZCAqKSwK
IAljLT5jX3RpbWUgPSB0aWNrcyArIHRvX3RpY2tzOwogCVRBSUxRX0lOU0VSVF9UQUlMKCZTQ1RQ
X0JBU0VfSU5GTyhjYWxscXVldWUpLCBjLCB0cWUpOwogCVNDVFBfVElNRVJRX1VOTE9DSygpOwor
CXJldHVybiAocmV0KTsKIH0KIAogaW50CkBAIC0xNDUsOCArMTUwLDggQEAgc2N0cF9vc190aW1l
cl9zdG9wKHNjdHBfb3NfdGltZXJfdCAqYykKIAlyZXR1cm4gKDEpOwogfQogCi1zdGF0aWMgdm9p
ZAotc2N0cF9oYW5kbGVfdGljayhpbnQgZGVsdGEpCit2b2lkCitzY3RwX2hhbmRsZV90aWNrKHVp
bnQzMl90IGVsYXBzZWRfdGlja3MpCiB7CiAJc2N0cF9vc190aW1lcl90ICpjOwogCXZvaWQgKCpj
X2Z1bmMpKHZvaWQgKik7CkBAIC0xNTQsMTAgKzE1OSwxMCBAQCBzY3RwX2hhbmRsZV90aWNrKGlu
dCBkZWx0YSkKIAogCVNDVFBfVElNRVJRX0xPQ0soKTsKIAkvKiB1cGRhdGUgb3VyIHRpY2sgY291
bnQgKi8KLQl0aWNrcyArPSBkZWx0YTsKKwl0aWNrcyArPSBlbGFwc2VkX3RpY2tzOwogCWMgPSBU
QUlMUV9GSVJTVCgmU0NUUF9CQVNFX0lORk8oY2FsbHF1ZXVlKSk7CiAJd2hpbGUgKGMpIHsKLQkJ
aWYgKGMtPmNfdGltZSA8PSB0aWNrcykgeworCQlpZiAoU0NUUF9VSU5UMzJfR0UodGlja3MsIGMt
PmNfdGltZSkpIHsKIAkJCXNjdHBfb3NfdGltZXJfbmV4dCA9IFRBSUxRX05FWFQoYywgdHFlKTsK
IAkJCVRBSUxRX1JFTU9WRSgmU0NUUF9CQVNFX0lORk8oY2FsbHF1ZXVlKSwgYywgdHFlKTsKIAkJ
CWNfZnVuYyA9IGMtPmNfZnVuYzsKQEAgLTE3NSw3ICsxODAsNyBAQCBzY3RwX2hhbmRsZV90aWNr
KGludCBkZWx0YSkKIAlTQ1RQX1RJTUVSUV9VTkxPQ0soKTsKIH0KIAotI2lmIGRlZmluZWQoX19B
UFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogdm9pZAogc2N0cF90aW1lb3V0KHZvaWQgKmFyZyBTQ1RQX1VOVVNFRCkKIHsKQEAgLTE5Miwy
NSArMTk3LDI3IEBAIHVzZXJfc2N0cF90aW1lcl9pdGVyYXRlKHZvaWQgKmFyZykKIHsKIAlzY3Rw
X3VzZXJzcGFjZV9zZXRfdGhyZWFkbmFtZSgiU0NUUCB0aW1lciIpOwogCWZvciAoOzspIHsKLSNp
ZiBkZWZpbmVkIChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQog
CQlTbGVlcChUSU1FT1VUX0lOVEVSVkFMKTsKICNlbHNlCi0JCXN0cnVjdCB0aW1ldmFsIHRpbWVv
dXQ7CisJCXN0cnVjdCB0aW1lc3BlYyBhbW91bnQsIHJlbWFpbmluZzsKIAotCQl0aW1lb3V0LnR2
X3NlYyAgPSAwOwotCQl0aW1lb3V0LnR2X3VzZWMgPSAxMDAwICogVElNRU9VVF9JTlRFUlZBTDsK
LQkJc2VsZWN0KDAsIE5VTEwsIE5VTEwsIE5VTEwsICZ0aW1lb3V0KTsKKwkJcmVtYWluaW5nLnR2
X3NlYyA9IDA7CisJCXJlbWFpbmluZy50dl9uc2VjID0gVElNRU9VVF9JTlRFUlZBTCAqIDEwMDAg
KiAxMDAwOworCQlkbyB7CisJCQlhbW91bnQgPSByZW1haW5pbmc7CisJCX0gd2hpbGUgKG5hbm9z
bGVlcCgmYW1vdW50LCAmcmVtYWluaW5nKSA9PSAtMSk7CiAjZW5kaWYKIAkJaWYgKGF0b21pY19j
bXBzZXRfaW50KCZTQ1RQX0JBU0VfVkFSKHRpbWVyX3RocmVhZF9zaG91bGRfZXhpdCksIDEsIDEp
KSB7CiAJCQlicmVhazsKIAkJfQotCQlzY3RwX2hhbmRsZV90aWNrKE1TRUNfVE9fVElDS1MoVElN
RU9VVF9JTlRFUlZBTCkpOworCQlzY3RwX2hhbmRsZV90aWNrKHNjdHBfbXNlY3NfdG9fdGlja3Mo
VElNRU9VVF9JTlRFUlZBTCkpOwogCX0KIAlyZXR1cm4gKE5VTEwpOwogfQogCiB2b2lkCi1zY3Rw
X3N0YXJ0X3RpbWVyKHZvaWQpCitzY3RwX3N0YXJ0X3RpbWVyX3RocmVhZCh2b2lkKQogewogCS8q
CiAJICogTm8gbmVlZCB0byBkbyBTQ1RQX1RJTUVSUV9MT0NLX0lOSVQoKTsKQEAgLTIyMSw3ICsy
MjgsMjIgQEAgc2N0cF9zdGFydF90aW1lcih2b2lkKQogCXJjID0gc2N0cF91c2Vyc3BhY2VfdGhy
ZWFkX2NyZWF0ZSgmU0NUUF9CQVNFX1ZBUih0aW1lcl90aHJlYWQpLCB1c2VyX3NjdHBfdGltZXJf
aXRlcmF0ZSk7CiAJaWYgKHJjKSB7CiAJCVNDVFBfUFJJTlRGKCJFUlJPUjsgcmV0dXJuIGNvZGUg
ZnJvbSBzY3RwX3RocmVhZF9jcmVhdGUoKSBpcyAlZFxuIiwgcmMpOworCX0gZWxzZSB7CisJCVND
VFBfQkFTRV9WQVIodGltZXJfdGhyZWFkX3N0YXJ0ZWQpID0gMTsKIAl9CiB9CiAKK3ZvaWQKK3Nj
dHBfc3RvcF90aW1lcl90aHJlYWQodm9pZCkKK3sKKwlhdG9taWNfY21wc2V0X2ludCgmU0NUUF9C
QVNFX1ZBUih0aW1lcl90aHJlYWRfc2hvdWxkX2V4aXQpLCAwLCAxKTsKKwlpZiAoU0NUUF9CQVNF
X1ZBUih0aW1lcl90aHJlYWRfc3RhcnRlZCkpIHsKKyNpZiBkZWZpbmVkKF9XSU4zMikKKwkJV2Fp
dEZvclNpbmdsZU9iamVjdChTQ1RQX0JBU0VfVkFSKHRpbWVyX3RocmVhZCksIElORklOSVRFKTsK
KwkJQ2xvc2VIYW5kbGUoU0NUUF9CQVNFX1ZBUih0aW1lcl90aHJlYWQpKTsKKyNlbHNlCisJCXB0
aHJlYWRfam9pbihTQ1RQX0JBU0VfVkFSKHRpbWVyX3RocmVhZCksIE5VTEwpOworI2VuZGlmCisJ
fQorfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0
cF9jYWxsb3V0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9jYWxsb3V0LmgK
b2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA3NjVmOTY2YmQxYzMyMWE4MDAw
M2U3NTYyZWI1NTMzNTQ5MDYyYjY3Li44MWZkODUzMGQxZjZmZWFlNDNhNDJiMWNmNjMzYzFkMWRh
M2NkY2QxCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2NhbGxvdXQuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9jYWxsb3V0LmgKQEAgLTMwLDcg
KzMwLDcgQEAKICAqIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZmRlZiBfX0ZyZWVCU0RfXworI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVk
ZSA8c3lzL2NkZWZzLmg+CiBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAjZW5kaWYKQEAgLTUzLDcg
KzUzLDcgQEAgX19GQlNESUQoIiRGcmVlQlNEJCIpOwogI2RlZmluZSBTQ1RQX1RJQ0tTX1BFUl9G
QVNUVElNTyAyMAkvKiBjYWxsZWQgYWJvdXQgZXZlcnkgMjBtcyAqLwogCiAjaWYgZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBk
ZWZpbmVkKF9XSU4zMikKICNkZWZpbmUgU0NUUF9USU1FUlFfTE9DSygpICAgICAgICAgIEVudGVy
Q3JpdGljYWxTZWN0aW9uKCZTQ1RQX0JBU0VfVkFSKHRpbWVyX210eCkpCiAjZGVmaW5lIFNDVFBf
VElNRVJRX1VOTE9DSygpICAgICAgICBMZWF2ZUNyaXRpY2FsU2VjdGlvbigmU0NUUF9CQVNFX1ZB
Uih0aW1lcl9tdHgpKQogI2RlZmluZSBTQ1RQX1RJTUVSUV9MT0NLX0lOSVQoKSAgICAgSW5pdGlh
bGl6ZUNyaXRpY2FsU2VjdGlvbigmU0NUUF9CQVNFX1ZBUih0aW1lcl9tdHgpKQpAQCAtNzEsMTMg
KzcxLDEzIEBAIF9fRkJTRElEKCIkRnJlZUJTRCQiKTsKICNlbmRpZgogI2VuZGlmCiAKLWludCBz
Y3RwX2dldF90aWNrX2NvdW50KHZvaWQpOwordWludDMyX3Qgc2N0cF9nZXRfdGlja19jb3VudCh2
b2lkKTsKIAogVEFJTFFfSEVBRChjYWxsb3V0bGlzdCwgc2N0cF9jYWxsb3V0KTsKIAogc3RydWN0
IHNjdHBfY2FsbG91dCB7CiAJVEFJTFFfRU5UUlkoc2N0cF9jYWxsb3V0KSB0cWU7Ci0JaW50IGNf
dGltZTsJCS8qIHRpY2tzIHRvIHRoZSBldmVudCAqLworCXVpbnQzMl90IGNfdGltZTsJCS8qIHRp
Y2tzIHRvIHRoZSBldmVudCAqLwogCXZvaWQgKmNfYXJnOwkJLyogZnVuY3Rpb24gYXJndW1lbnQg
Ki8KIAl2b2lkICgqY19mdW5jKSh2b2lkICopOwkvKiBmdW5jdGlvbiB0byBjYWxsICovCiAJaW50
IGNfZmxhZ3M7CQkvKiBzdGF0ZSBvZiB0aGlzIGVudHJ5ICovCkBAIC04OCwxMCArODgsMTggQEAg
dHlwZWRlZiBzdHJ1Y3Qgc2N0cF9jYWxsb3V0IHNjdHBfb3NfdGltZXJfdDsKICNkZWZpbmUJU0NU
UF9DQUxMT1VUX1BFTkRJTkcJMHgwMDA0CS8qIGNhbGxvdXQgaXMgd2FpdGluZyBmb3IgdGltZW91
dCAqLwogCiB2b2lkIHNjdHBfb3NfdGltZXJfaW5pdChzY3RwX29zX3RpbWVyX3QgKnRtcik7Ci12
b2lkIHNjdHBfb3NfdGltZXJfc3RhcnQoc2N0cF9vc190aW1lcl90ICosIGludCwgdm9pZCAoKiko
dm9pZCAqKSwgdm9pZCAqKTsKKy8qIFJldHVybnMgMSBpZiBwZW5kaW5nIHRpbWVyIHdhcyByZXNj
aGVkdWxlZCwgMCBvdGhlcndpc2UuICovCitpbnQgc2N0cF9vc190aW1lcl9zdGFydChzY3RwX29z
X3RpbWVyX3QgKiwgdWludDMyX3QsIHZvaWQgKCopKHZvaWQgKiksIHZvaWQgKik7CisvKiBSZXR1
cm5zIDEgaWYgcGVuZGluZyB0aW1lciB3YXMgc3RvcHBlZCwgMCBvdGhlcndpc2UuICovCiBpbnQg
c2N0cF9vc190aW1lcl9zdG9wKHNjdHBfb3NfdGltZXJfdCAqKTsKK3ZvaWQgc2N0cF9oYW5kbGVf
dGljayh1aW50MzJfdCk7CiAKICNkZWZpbmUgU0NUUF9PU19USU1FUl9JTklUCXNjdHBfb3NfdGlt
ZXJfaW5pdAorLyoKKyAqIE5PVEU6IFRoZSBuZXh0IHR3byBzaG91bGRuJ3QgYmUgY2FsbGVkIGRp
cmVjdGx5IG91dHNpZGUgb2Ygc2N0cF90aW1lcl9zdGFydCgpCisgKiBhbmQgc2N0cF90aW1lcl9z
dG9wKCksIHNpbmNlIHRoZXkgZG9uJ3QgaGFuZGxlIGluY3JlbWVudGluZy9kZWNyZW1lbnRpbmcK
KyAqIHJlbGV2YW50IHJlZmVyZW5jZSBjb3VudHMuCisgKi8KICNkZWZpbmUgU0NUUF9PU19USU1F
Ul9TVEFSVAlzY3RwX29zX3RpbWVyX3N0YXJ0CiAjZGVmaW5lIFNDVFBfT1NfVElNRVJfU1RPUAlz
Y3RwX29zX3RpbWVyX3N0b3AKIC8qIE1UIEZJWE1FOiBJcyB0aGUgZm9sbG93aW5nIGNvcnJlY3Q/
ICovCkBAIC0xMDEsOSArMTA5LDEwIEBAIGludCBzY3RwX29zX3RpbWVyX3N0b3Aoc2N0cF9vc190
aW1lcl90ICopOwogI2RlZmluZQlTQ1RQX09TX1RJTUVSX0RFQUNUSVZBVEUodG1yKSAoKHRtcikt
PmNfZmxhZ3MgJj0gflNDVFBfQ0FMTE9VVF9BQ1RJVkUpCiAKICNpZiBkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCi12b2lkIHNjdHBfc3RhcnRfdGltZXIodm9pZCk7Cit2b2lkIHNjdHBfc3RhcnRfdGlt
ZXJfdGhyZWFkKHZvaWQpOwordm9pZCBzY3RwX3N0b3BfdGltZXJfdGhyZWFkKHZvaWQpOwogI2Vu
ZGlmCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiB2b2lkIHNjdHBfdGltZW91dCh2b2lkICopOwogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2NjX2Z1bmN0
aW9ucy5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91
c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfY2NfZnVuY3Rpb25zLmMK
b2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCBlNTNlNGQ3NDdmMzIxODkwNGFh
ZWU1M2FmOGEyYWFjZjI3NTdjOWUyLi5kY2Y2Mjk4NTc5YTAxNzYxZmZiYzhjNzNjMzgxZmNhY2Y2
NDA5NDI1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2NjX2Z1bmN0aW9u
cy5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
dXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2NjX2Z1bmN0aW9ucy5j
CkBAIC0zMiw5ICszMiw5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotI2lmZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLV9fRkJTRElEKCIk
RnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX2NjX2Z1bmN0aW9ucy5jIDMxMDU5MCAyMDE2
LTEyLTI2IDExOjA2OjQxWiB0dWV4ZW4gJCIpOworX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5
cy9uZXRpbmV0L3NjdHBfY2NfZnVuY3Rpb25zLmMgMzU5NDA1IDIwMjAtMDMtMjggMjA6MjU6NDVa
IHR1ZXhlbiAkIik7CiAjZW5kaWYKIAogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9vcy5oPgpAQCAt
NTAsOCArNTAsOCBAQCBfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9j
Y19mdW5jdGlvbnMuYyAzMTA1OTAgMjAxNi0xMi0yNiAxMTowNgogI2luY2x1ZGUgPG5ldGluZXQv
c2N0cF90aW1lci5oPgogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9hdXRoLmg+CiAjaW5jbHVkZSA8
bmV0aW5ldC9zY3RwX2FzY29uZi5oPgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJl
ZUJTRF92ZXJzaW9uID49IDgwMzAwMAotI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9kdHJhY2VfZGVj
bGFyZS5oPgorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCisjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX2tkdHJhY2UuaD4KICNlbmRpZgogCiAjZGVmaW5l
IFNISUZUX01QVENQX01VTFRJX04gNDAKQEAgLTEwMSw3ICsxMDEsNyBAQCBzY3RwX3NldF9pbml0
aWFsX2NjX3BhcmFtKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfbmV0cyAqbmV0
KQogCX0KIAlzY3RwX2VuZm9yY2VfY3duZF9saW1pdChhc3NvYywgbmV0KTsKIAluZXQtPnNzdGhy
ZXNoID0gYXNzb2MtPnBlZXJzX3J3bmQ7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19G
cmVlQlNEX3ZlcnNpb24gPj0gODAzMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlTRFRfUFJPQkU1KHNjdHAsIGN3bmQsIG5ldCwgaW5pdCwK
IAkgICAgICAgICAgc3RjYi0+YXNvYy5teV92dGFnLCAoKHN0Y2ItPnNjdHBfZXAtPnNjdHBfbHBv
cnQgPDwgMTYpIHwgKHN0Y2ItPnJwb3J0KSksIG5ldCwKIAkgICAgICAgICAgMCwgbmV0LT5jd25k
KTsKQEAgLTE5Niw3ICsxOTYsNyBAQCBzY3RwX2N3bmRfdXBkYXRlX2FmdGVyX2ZyKHN0cnVjdCBz
Y3RwX3RjYiAqc3RjYiwKIAkJCQl9CiAJCQkJbmV0LT5jd25kID0gbmV0LT5zc3RocmVzaDsKIAkJ
CQlzY3RwX2VuZm9yY2VfY3duZF9saW1pdChhc29jLCBuZXQpOwotI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMzAwMAorI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJU0RUX1BST0JFNShzY3RwLCBj
d25kLCBuZXQsIGZyLAogCQkJCQkgIHN0Y2ItPmFzb2MubXlfdnRhZywgKChzdGNiLT5zY3RwX2Vw
LT5zY3RwX2xwb3J0IDw8IDE2KSB8IChzdGNiLT5ycG9ydCkpLCBuZXQsCiAJCQkJCSAgb2xkX2N3
bmQsIG5ldC0+Y3duZCk7CkBAIC0yNTIsNyArMjUyLDcgQEAgc2N0cF9jd25kX3VwZGF0ZV9hZnRl
cl9mcihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAjZGVmaW5lIFNDVFBfSU5TVF9HQUlOSU5HIDMg
LyogR2FpbmluZywgc3RlcCBkb3duIHBvc3NpYmxlICovCiAKIAotI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMzAwMAorI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBzdGF0aWMgaW50CiBjY19id19zYW1l
KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfbmV0cyAqbmV0LCB1aW50NjRfdCBu
YncsCiAJICAgdWludDY0X3QgcnR0X29mZnNldCwgdWludDY0X3QgdnRhZywgdWludDhfdCBpbnN0
X2luZCkKQEAgLTI2MiwxMSArMjYyLDExIEBAIGNjX2J3X3NhbWUoc3RydWN0IHNjdHBfdGNiICpz
dGNiIFNDVFBfVU5VU0VELCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsIHVpbnQ2NF90IG5iCiAJICAg
dWludDY0X3QgcnR0X29mZnNldCwgdWludDhfdCBpbnN0X2luZCkKICNlbmRpZgogewotI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMzAwMAorI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJdWludDY0X3Qg
b3RoLCBwcm9iZXBvaW50OwogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBf
X0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCXByb2JlcG9pbnQgPSAoKCh1aW50NjRfdCluZXQtPmN3
bmQpIDw8IDMyKTsKICNlbmRpZgogCWlmIChuZXQtPnJ0dCA+IG5ldC0+Y2NfbW9kLnJ0Y2MubGJ3
X3J0dCArIHJ0dF9vZmZzZXQpIHsKQEAgLTI3NSw3ICsyNzUsNyBAQCBjY19id19zYW1lKHN0cnVj
dCBzY3RwX3RjYiAqc3RjYiBTQ1RQX1VOVVNFRCwgc3RydWN0IHNjdHBfbmV0cyAqbmV0LCB1aW50
NjRfdCBuYgogCQkgKiB3ZSBkb24ndCB1cGRhdGUgYncuLiBzbyB3ZSBkb24ndAogCQkgKiB1cGRh
dGUgdGhlIHJ0dCBlaXRoZXIuCiAJCSAqLwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9f
RnJlZUJTRF92ZXJzaW9uID49IDgwMzAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCS8qIFByb2JlIHBvaW50IDUgKi8KIAkJcHJvYmVwb2lu
dCB8PSAgKCg1IDw8IDE2KSB8IDEpOwogCQlTRFRfUFJPQkU1KHNjdHAsIGN3bmQsIG5ldCwgcnR0
dmFyLApAQCAtMjk1LDcgKzI5NSw3IEBAIGNjX2J3X3NhbWUoc3RydWN0IHNjdHBfdGNiICpzdGNi
IFNDVFBfVU5VU0VELCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsIHVpbnQ2NF90IG5iCiAJCQkgICAg
KChuZXQtPmNjX21vZC5ydGNjLnN0ZXBfY250ID4gbmV0LT5jY19tb2QucnRjYy5zdGVhZHlfc3Rl
cCkgJiYKIAkJCSAgICAgKChuZXQtPmNjX21vZC5ydGNjLnN0ZXBfY250ICUgbmV0LT5jY19tb2Qu
cnRjYy5zdGVhZHlfc3RlcCkgPT0gMCkpKSB7CiAJCQkJLyogVHJ5IGEgc3RlcCBkb3duICovCi0j
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAzMDAwCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQlv
dGggPSBuZXQtPmNjX21vZC5ydGNjLnZvbF9yZWR1Y2U7CiAJCQkJb3RoIDw8PSAxNjsKIAkJCQlv
dGggfD0gbmV0LT5jY19tb2QucnRjYy5zdGVwX2NudDsKQEAgLTMyNCw3ICszMjQsNyBAQCBjY19i
d19zYW1lKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiBTQ1RQX1VOVVNFRCwgc3RydWN0IHNjdHBfbmV0
cyAqbmV0LCB1aW50NjRfdCBuYgogCQkgKiB3ZSB1cGRhdGUgYm90aCB0aGUgYncgYW5kIHRoZSBy
dHQgaGVyZSB0bwogCQkgKiBsb2NrIHRoaXMgaW4gYXMgYSBnb29kIHN0ZXAgZG93bi4KIAkJICov
Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAzMDAw
CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJ
LyogUHJvYmUgcG9pbnQgNiAqLwogCQlwcm9iZXBvaW50IHw9ICAoKDYgPDwgMTYpIHwgMCk7CiAJ
CVNEVF9QUk9CRTUoc2N0cCwgY3duZCwgbmV0LCBydHR2YXIsCkBAIC0zMzUsNyArMzM1LDcgQEAg
Y2NfYndfc2FtZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IgU0NUUF9VTlVTRUQsIHN0cnVjdCBzY3Rw
X25ldHMgKm5ldCwgdWludDY0X3QgbmIKIAkJCSAgcHJvYmVwb2ludCk7CiAjZW5kaWYKIAkJaWYg
KG5ldC0+Y2NfbW9kLnJ0Y2Muc3RlYWR5X3N0ZXApIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJb3RoID0gbmV0LT5jY19tb2QucnRjYy52
b2xfcmVkdWNlOwogCQkJb3RoIDw8PSAxNjsKIAkJCW90aCB8PSBuZXQtPmNjX21vZC5ydGNjLnN0
ZXBfY250OwpAQCAtMzcwLDcgKzM3MCw3IEBAIGNjX2J3X3NhbWUoc3RydWN0IHNjdHBfdGNiICpz
dGNiIFNDVFBfVU5VU0VELCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsIHVpbnQ2NF90IG5iCiAJfQog
CS8qIE9rIGJ3IGFuZCBydHQgcmVtYWluZWQgdGhlIHNhbWUgLi4gbm8gdXBkYXRlIHRvIGFueQog
CSAqLwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgw
MzAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAJLyogUHJvYmUgcG9pbnQgNyAqLwogCXByb2JlcG9pbnQgfD0gICgoNyA8PCAxNikgfCBuZXQt
PmNjX21vZC5ydGNjLnJldF9mcm9tX2VxKTsKIAlTRFRfUFJPQkU1KHNjdHAsIGN3bmQsIG5ldCwg
cnR0dmFyLApAQCAtNDA3LDcgKzQwNyw3IEBAIGNjX2J3X3NhbWUoc3RydWN0IHNjdHBfdGNiICpz
dGNiIFNDVFBfVU5VU0VELCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsIHVpbnQ2NF90IG5iCiAJCXJl
dHVybiAoKGludCluZXQtPmNjX21vZC5ydGNjLnJldF9mcm9tX2VxKTsKIH0KIAotI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMzAwMAorI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBzdGF0aWMgaW50CiBj
Y19id19kZWNyZWFzZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX25ldHMgKm5l
dCwgdWludDY0X3QgbmJ3LCB1aW50NjRfdCBydHRfb2Zmc2V0LAogCSAgICAgICB1aW50NjRfdCB2
dGFnLCB1aW50OF90IGluc3RfaW5kKQpAQCAtNDE3LDEyICs0MTcsMTIgQEAgY2NfYndfZGVjcmVh
c2Uoc3RydWN0IHNjdHBfdGNiICpzdGNiIFNDVFBfVU5VU0VELCBzdHJ1Y3Qgc2N0cF9uZXRzICpu
ZXQsIHVpbnQ2NF8KIAkgICAgICAgdWludDhfdCBpbnN0X2luZCkKICNlbmRpZgogewotI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMzAwMAorI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJdWludDY0X3Qg
b3RoLCBwcm9iZXBvaW50OwogI2VuZGlmCiAKIAkvKiBCYW5kd2lkdGggZGVjcmVhc2VkLiovCi0j
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAzMDAwCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlwcm9i
ZXBvaW50ID0gKCgodWludDY0X3QpbmV0LT5jd25kKSA8PCAzMik7CiAjZW5kaWYKIAlpZiAobmV0
LT5ydHQgID4gbmV0LT5jY19tb2QucnRjYy5sYndfcnR0K3J0dF9vZmZzZXQpIHsKQEAgLTQzMSw3
ICs0MzEsNyBAQCBjY19id19kZWNyZWFzZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IgU0NUUF9VTlVT
RUQsIHN0cnVjdCBzY3RwX25ldHMgKm5ldCwgdWludDY0XwogCQlpZiAoKG5ldC0+Y3duZCA+IG5l
dC0+Y2NfbW9kLnJ0Y2MuY3duZF9hdF9id19zZXQpICYmCiAJCSAgICAoaW5zdF9pbmQgIT0gU0NU
UF9JTlNUX0xPT1NJTkcpKSB7CiAJCQkvKiBXZSBjYXVzZWQgaXQgbWF5YmUuLiBiYWNrIG9mZj8g
Ki8KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDMw
MDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
CQkJLyogUFJPQkUgUE9JTlQgMSAqLwogCQkJcHJvYmVwb2ludCB8PSAgKCgxIDw8IDE2KSB8IDEp
OwogCQkJU0RUX1BST0JFNShzY3RwLCBjd25kLCBuZXQsIHJ0dHZhciwKQEAgLTQ0OCw3ICs0NDgs
NyBAQCBjY19id19kZWNyZWFzZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IgU0NUUF9VTlVTRUQsIHN0
cnVjdCBzY3RwX25ldHMgKm5ldCwgdWludDY0XwogCQkJfQogCQkJcmV0dXJuICgxKTsKIAkJfQot
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMzAwMAor
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCS8q
IFByb2JlIHBvaW50IDIgKi8KIAkJcHJvYmVwb2ludCB8PSAgKCgyIDw8IDE2KSB8IDApOwogCQlT
RFRfUFJPQkU1KHNjdHAsIGN3bmQsIG5ldCwgcnR0dmFyLApAQCAtNDYwLDcgKzQ2MCw3IEBAIGNj
X2J3X2RlY3JlYXNlKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiBTQ1RQX1VOVVNFRCwgc3RydWN0IHNj
dHBfbmV0cyAqbmV0LCB1aW50NjRfCiAjZW5kaWYKIAkJLyogU29tZW9uZSBlbHNlIC0gZmlnaHQg
Zm9yIG1vcmU/ICovCiAJCWlmIChuZXQtPmNjX21vZC5ydGNjLnN0ZWFkeV9zdGVwKSB7Ci0jaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAzMDAwCisjaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCW90aCA9
IG5ldC0+Y2NfbW9kLnJ0Y2Mudm9sX3JlZHVjZTsKIAkJCW90aCA8PD0gMTY7CiAJCQlvdGggfD0g
bmV0LT5jY19tb2QucnRjYy5zdGVwX2NudDsKQEAgLTQ4OCw3ICs0ODgsNyBAQCBjY19id19kZWNy
ZWFzZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IgU0NUUF9VTlVTRUQsIHN0cnVjdCBzY3RwX25ldHMg
Km5ldCwgdWludDY0XwogCQlnb3RvIG91dF9kZWNpc2lvbjsKIAl9IGVsc2UgIGlmIChuZXQtPnJ0
dCAgPCBuZXQtPmNjX21vZC5ydGNjLmxid19ydHQtcnR0X29mZnNldCkgewogCQkvKiBidyAmIHJ0
dCBkZWNyZWFzZWQgKi8KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVy
c2lvbiA+PSA4MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogCQkvKiBQcm9iZSBwb2ludCAzICovCiAJCXByb2JlcG9pbnQgfD0gICgoMyA8
PCAxNikgfCAwKTsKIAkJU0RUX1BST0JFNShzY3RwLCBjd25kLCBuZXQsIHJ0dHZhciwKQEAgLTQ5
OSw3ICs0OTksNyBAQCBjY19id19kZWNyZWFzZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IgU0NUUF9V
TlVTRUQsIHN0cnVjdCBzY3RwX25ldHMgKm5ldCwgdWludDY0XwogCQkJICBwcm9iZXBvaW50KTsK
ICNlbmRpZgogCQlpZiAobmV0LT5jY19tb2QucnRjYy5zdGVhZHlfc3RlcCkgewotI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMzAwMAorI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQlvdGggPSBuZXQt
PmNjX21vZC5ydGNjLnZvbF9yZWR1Y2U7CiAJCQlvdGggPDw9IDE2OwogCQkJb3RoIHw9IG5ldC0+
Y2NfbW9kLnJ0Y2Muc3RlcF9jbnQ7CkBAIC01MjQsNyArNTI0LDcgQEAgY2NfYndfZGVjcmVhc2Uo
c3RydWN0IHNjdHBfdGNiICpzdGNiIFNDVFBfVU5VU0VELCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQs
IHVpbnQ2NF8KIAkJZ290byBvdXRfZGVjaXNpb247CiAJfQogCS8qIFRoZSBidyBkZWNyZWFzZWQg
YnV0IHJ0dCBzdGF5ZWQgdGhlIHNhbWUgKi8KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBf
X0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCS8qIFByb2JlIHBvaW50IDQgKi8KIAlwcm9iZXBvaW50
IHw9ICAoKDQgPDwgMTYpIHwgMCk7CiAJU0RUX1BST0JFNShzY3RwLCBjd25kLCBuZXQsIHJ0dHZh
ciwKQEAgLTUzNSw3ICs1MzUsNyBAQCBjY19id19kZWNyZWFzZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0
Y2IgU0NUUF9VTlVTRUQsIHN0cnVjdCBzY3RwX25ldHMgKm5ldCwgdWludDY0XwogCQkgIHByb2Jl
cG9pbnQpOwogI2VuZGlmCiAJaWYgKG5ldC0+Y2NfbW9kLnJ0Y2Muc3RlYWR5X3N0ZXApIHsKLSNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDMwMDAKKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlvdGgg
PSBuZXQtPmNjX21vZC5ydGNjLnZvbF9yZWR1Y2U7CiAJCW90aCA8PD0gMTY7CiAJCW90aCB8PSBu
ZXQtPmNjX21vZC5ydGNjLnN0ZXBfY250OwpAQCAtNTY4LDcgKzU2OCw3IEBAIG91dF9kZWNpc2lv
bjoKIAl9CiB9CiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lv
biA+PSA4MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogc3RhdGljIGludAogY2NfYndfaW5jcmVhc2Uoc3RydWN0IHNjdHBfdGNiICpzdGNi
LCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsIHVpbnQ2NF90IG5idywgdWludDY0X3QgdnRhZykKICNl
bHNlCkBAIC01NzYsNyArNTc2LDcgQEAgc3RhdGljIGludAogY2NfYndfaW5jcmVhc2Uoc3RydWN0
IHNjdHBfdGNiICpzdGNiIFNDVFBfVU5VU0VELCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsIHVpbnQ2
NF90IG5idykKICNlbmRpZgogewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJT
RF92ZXJzaW9uID49IDgwMzAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiAJdWludDY0X3Qgb3RoLCBwcm9iZXBvaW50OwogCiAjZW5kaWYKQEAg
LTU4Niw3ICs1ODYsNyBAQCBjY19id19pbmNyZWFzZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IgU0NU
UF9VTlVTRUQsIHN0cnVjdCBzY3RwX25ldHMgKm5ldCwgdWludDY0XwogCSAqIHVwZGF0ZS4gTm90
ZSB0aGF0IHdlIHBheSBubyBhdHRlbnRpb24gdG8KIAkgKiB0aGUgaW5zdF9pbmQgc2luY2Ugb3Vy
IG92ZXJhbGwgc3VtIGlzIGluY3JlYXNpbmcuCiAJICovCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAzMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkvKiBQUk9CRSBQT0lOVCAwICovCiAJcHJv
YmVwb2ludCA9ICgoKHVpbnQ2NF90KW5ldC0+Y3duZCkgPDwgMzIpOwogCVNEVF9QUk9CRTUoc2N0
cCwgY3duZCwgbmV0LCBydHR2YXIsCkBAIC01OTcsNyArNTk3LDcgQEAgY2NfYndfaW5jcmVhc2Uo
c3RydWN0IHNjdHBfdGNiICpzdGNiIFNDVFBfVU5VU0VELCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQs
IHVpbnQ2NF8KIAkJICBwcm9iZXBvaW50KTsKICNlbmRpZgogCWlmIChuZXQtPmNjX21vZC5ydGNj
LnN0ZWFkeV9zdGVwKSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3Zl
cnNpb24gPj0gODAzMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKIAkJb3RoID0gbmV0LT5jY19tb2QucnRjYy52b2xfcmVkdWNlOwogCQlvdGgg
PDw9IDE2OwogCQlvdGggfD0gbmV0LT5jY19tb2QucnRjYy5zdGVwX2NudDsKQEAgLTYyNyw3ICs2
MjcsNyBAQCBzdGF0aWMgaW50CiBjY19id19saW1pdChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0
cnVjdCBzY3RwX25ldHMgKm5ldCwgdWludDY0X3QgbmJ3KQogewogCXVpbnQ2NF90IGJ3X29mZnNl
dCwgcnR0X29mZnNldDsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVy
c2lvbiA+PSA4MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogCXVpbnQ2NF90IHByb2JlcG9pbnQsIHJ0dCwgdnRhZzsKICNlbmRpZgogCXVp
bnQ2NF90IGJ5dGVzX2Zvcl90aGlzX3J0dCwgaW5zdF9idzsKQEAgLTY3Myw3ICs2NzMsNyBAQCBj
Y19id19saW1pdChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX25ldHMgKm5ldCwg
dWludDY0X3QgbmJ3KQogCSAqIGNoYW5nZSB3aXRoaW4gMS8zMm5kCiAJICovCiAJYndfc2hpZnQg
PSBTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfcnR0dmFyX2J3KTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCXJ0dCA9IHN0Y2ItPmFzb2MubXlfdnRh
ZzsKIAl2dGFnID0gKHJ0dCA8PCAzMikgfCAoKCh1aW50MzJfdCkoc3RjYi0+c2N0cF9lcC0+c2N0
cF9scG9ydCkpIDw8IDE2KSB8IChzdGNiLT5ycG9ydCk7CiAJcHJvYmVwb2ludCA9ICgoKHVpbnQ2
NF90KW5ldC0+Y3duZCkgPDwgMzIpOwpAQCAtNjk0LDEyICs2OTQsMTIgQEAgY2NfYndfbGltaXQo
c3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsIHVpbnQ2NF90IG5i
dykKIAkJCQkJaW5zdF9pbmQgPSBTQ1RQX0lOU1RfTE9PU0lORzsKIAkJCQllbHNlCiAJCQkJCWlu
c3RfaW5kID0gU0NUUF9JTlNUX05FVVRSQUw7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
X19GcmVlQlNEX3ZlcnNpb24gPj0gODAzMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQlwcm9iZXBvaW50IHw9ICAoKDB4YiA8PCAxNikg
fCBpbnN0X2luZCk7CiAjZW5kaWYKIAkJCX0gZWxzZSB7CiAJCQkJaW5zdF9pbmQgPSBuZXQtPmNj
X21vZC5ydGNjLmxhc3RfaW5zdF9pbmQ7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19G
cmVlQlNEX3ZlcnNpb24gPj0gODAzMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQlpbnN0X2J3ID0gYnl0ZXNfZm9yX3RoaXNfcnR0IC8g
KHVpbnQ2NF90KShuZXQtPnJ0dCk7CiAJCQkJLyogQ2FuJ3QgZGV0ZXJtaW5lIGRvIG5vdCBjaGFu
Z2UgKi8KIAkJCQlwcm9iZXBvaW50IHw9ICAoKDB4YyA8PCAxNikgfCBpbnN0X2luZCk7CkBAIC03
MDcsMTMgKzcwNywxMyBAQCBjY19id19saW1pdChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVj
dCBzY3RwX25ldHMgKm5ldCwgdWludDY0X3QgbmJ3KQogCQkJfQogCQl9IGVsc2UgewogCQkJaW5z
dF9pbmQgPSBuZXQtPmNjX21vZC5ydGNjLmxhc3RfaW5zdF9pbmQ7Ci0jaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAzMDAwCisjaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCWluc3RfYncgPSBieXRlc19m
b3JfdGhpc19ydHQ7CiAJCQkvKiBDYW4ndCBkZXRlcm1pbmUgZG8gbm90IGNoYW5nZSAqLwogCQkJ
cHJvYmVwb2ludCB8PSAgKCgweGQgPDwgMTYpIHwgaW5zdF9pbmQpOwogI2VuZGlmCiAJCX0KLSNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDMwMDAKKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlTRFRf
UFJPQkU1KHNjdHAsIGN3bmQsIG5ldCwgcnR0dmFyLAogCQkJICB2dGFnLAogCQkJICAoKG5idyA8
PCAzMikgfCBpbnN0X2J3KSwKQEAgLTcyNyw3ICs3MjcsNyBAQCBjY19id19saW1pdChzdHJ1Y3Qg
c2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX25ldHMgKm5ldCwgdWludDY0X3QgbmJ3KQogCX0K
IAlid19vZmZzZXQgPSBuZXQtPmNjX21vZC5ydGNjLmxidyA+PiBid19zaGlmdDsKIAlpZiAobmJ3
ID4gbmV0LT5jY19tb2QucnRjYy5sYncgKyBid19vZmZzZXQpIHsKLSNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlyZXQgPSBjY19id19pbmNyZWFz
ZShzdGNiLCBuZXQsIG5idywgdnRhZyk7CiAjZWxzZQogCQlyZXQgPSBjY19id19pbmNyZWFzZShz
dGNiLCBuZXQsIG5idyk7CkBAIC03MzYsNyArNzM2LDcgQEAgY2NfYndfbGltaXQoc3RydWN0IHNj
dHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsIHVpbnQ2NF90IG5idykKIAl9CiAJ
cnR0X29mZnNldCA9IG5ldC0+Y2NfbW9kLnJ0Y2MubGJ3X3J0dCA+PiBTQ1RQX0JBU0VfU1lTQ1RM
KHNjdHBfcnR0dmFyX3J0dCk7CiAJaWYgKG5idyA8IG5ldC0+Y2NfbW9kLnJ0Y2MubGJ3IC0gYndf
b2Zmc2V0KSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24g
Pj0gODAzMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKIAkJcmV0ID0gY2NfYndfZGVjcmVhc2Uoc3RjYiwgbmV0LCBuYncsIHJ0dF9vZmZzZXQs
IHZ0YWcsIGluc3RfaW5kKTsKICNlbHNlCiAJCXJldCA9IGNjX2J3X2RlY3JlYXNlKHN0Y2IsIG5l
dCwgbmJ3LCBydHRfb2Zmc2V0LCBpbnN0X2luZCk7CkBAIC03NDcsNyArNzQ3LDcgQEAgY2NfYndf
bGltaXQoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsIHVpbnQ2
NF90IG5idykKIAkgKiB3ZSBhcmUgaW4gYSBzaXR1YXRpb24gd2hlcmUKIAkgKiB0aGUgYncgc3Rh
eWVkIHRoZSBzYW1lLgogCSAqLwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJT
RF92ZXJzaW9uID49IDgwMzAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiAJcmV0ID0gY2NfYndfc2FtZShzdGNiLCBuZXQsIG5idywgcnR0X29m
ZnNldCwgdnRhZywgaW5zdF9pbmQpOwogI2Vsc2UKIAlyZXQgPSBjY19id19zYW1lKHN0Y2IsIG5l
dCwgbmJ3LCBydHRfb2Zmc2V0LCBpbnN0X2luZCk7CkBAIC03NjMsNyArNzYzLDcgQEAgc2N0cF9j
d25kX3VwZGF0ZV9hZnRlcl9zYWNrX2NvbW1vbihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCQkJ
ICAgaW50IGFjY3VtX21vdmVkLCBpbnQgcmVuZWdlZF9hbGwgU0NUUF9VTlVTRUQsIGludCB3aWxs
X2V4aXQsIGludCB1c2VfcnRjYykKIHsKIAlzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQ7Ci0jaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAzMDAwCisjaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlpbnQgb2xkX2N3
bmQ7CiAjZW5kaWYKIAl1aW50MzJfdCB0X3NzdGhyZXNoLCB0X2N3bmQsIGluY3I7CkBAIC04Nzks
NyArODc5LDcgQEAgc2N0cF9jd25kX3VwZGF0ZV9hZnRlcl9zYWNrX2NvbW1vbihzdHJ1Y3Qgc2N0
cF90Y2IgKnN0Y2IsCiAJCQkJCWNvbnRpbnVlOwogCQkJCX0KIAkJCX0gZWxzZSB7Ci0jaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAzMDAwCisjaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQl1aW50NjRf
dCB2dGFnLCBwcm9iZXBvaW50OwogCiAJCQkJcHJvYmVwb2ludCA9ICgoKHVpbnQ2NF90KW5ldC0+
Y3duZCkgPDwgMzIpOwpAQCAtOTE1LDcgKzkxNSw3IEBAIHNjdHBfY3duZF91cGRhdGVfYWZ0ZXJf
c2Fja19jb21tb24oc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkJCWlmIChuZXQtPmZsaWdodF9z
aXplICsgbmV0LT5uZXRfYWNrID49IG5ldC0+Y3duZCkgewogCQkJCQl1aW50MzJfdCBsaW1pdDsK
IAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMzAw
MAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJ
CQkJCW9sZF9jd25kID0gbmV0LT5jd25kOwogI2VuZGlmCiAJCQkJCXN3aXRjaCAoYXNvYy0+c2N0
cF9jbXRfb25fb2ZmKSB7CkBAIC05ODcsNyArOTg3LDcgQEAgc2N0cF9jd25kX3VwZGF0ZV9hZnRl
cl9zYWNrX2NvbW1vbihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCQkJCQlzY3RwX2xvZ19jd25k
KHN0Y2IsIG5ldCwgaW5jciwKIAkJCQkJCSAgICAgICAgICAgICAgU0NUUF9DV05EX0xPR19GUk9N
X1NTKTsKIAkJCQkJfQotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJz
aW9uID49IDgwMzAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAJCQkJCVNEVF9QUk9CRTUoc2N0cCwgY3duZCwgbmV0LCBhY2ssCiAJCQkJCSAg
ICAgICAgICBzdGNiLT5hc29jLm15X3Z0YWcsCiAJCQkJCSAgICAgICAgICAoKHN0Y2ItPnNjdHBf
ZXAtPnNjdHBfbHBvcnQgPDwgMTYpIHwgKHN0Y2ItPnJwb3J0KSksCkBAIC0xMDEwLDcgKzEwMTAs
NyBAQCBzY3RwX2N3bmRfdXBkYXRlX2FmdGVyX3NhY2tfY29tbW9uKHN0cnVjdCBzY3RwX3RjYiAq
c3RjYiwKIAkJCQlpZiAoKG5ldC0+ZmxpZ2h0X3NpemUgKyBuZXQtPm5ldF9hY2sgPj0gbmV0LT5j
d25kKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5ldC0+cGFydGlh
bF9ieXRlc19hY2tlZCA+PSBuZXQtPmN3bmQpKSB7CiAJCQkJCW5ldC0+cGFydGlhbF9ieXRlc19h
Y2tlZCAtPSBuZXQtPmN3bmQ7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNE
X3ZlcnNpb24gPj0gODAzMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKIAkJCQkJb2xkX2N3bmQgPSBuZXQtPmN3bmQ7CiAjZW5kaWYKIAkJCQkJ
c3dpdGNoIChhc29jLT5zY3RwX2NtdF9vbl9vZmYpIHsKQEAgLTEwNTEsNyArMTA1MSw3IEBAIHNj
dHBfY3duZF91cGRhdGVfYWZ0ZXJfc2Fja19jb21tb24oc3RydWN0IHNjdHBfdGNiICpzdGNiLAog
CQkJCQl9CiAJCQkJCW5ldC0+Y3duZCArPSBpbmNyOwogCQkJCQlzY3RwX2VuZm9yY2VfY3duZF9s
aW1pdChhc29jLCBuZXQpOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92
ZXJzaW9uID49IDgwMzAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAJCQkJCVNEVF9QUk9CRTUoc2N0cCwgY3duZCwgbmV0LCBhY2ssCiAJCQkJ
CQkgIHN0Y2ItPmFzb2MubXlfdnRhZywKIAkJCQkJCSAgKChzdGNiLT5zY3RwX2VwLT5zY3RwX2xw
b3J0IDw8IDE2KSB8IChzdGNiLT5ycG9ydCkpLApAQCAtMTA3OCw3ICsxMDc4LDcgQEAgc2N0cF9j
d25kX3VwZGF0ZV9hZnRlcl9zYWNrX2NvbW1vbihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJfQog
fQogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAz
MDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
IHN0YXRpYyB2b2lkCiBzY3RwX2N3bmRfdXBkYXRlX2V4aXRfcGZfY29tbW9uKHN0cnVjdCBzY3Rw
X3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfbmV0cyAqbmV0KQogI2Vsc2UKQEAgLTEwODYsMTMgKzEw
ODYsMTMgQEAgc3RhdGljIHZvaWQKIHNjdHBfY3duZF91cGRhdGVfZXhpdF9wZl9jb21tb24oc3Ry
dWN0IHNjdHBfdGNiICpzdGNiIFNDVFBfVU5VU0VELCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQpCiAj
ZW5kaWYKIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+
PSA4MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogCWludCBvbGRfY3duZDsKIAogCW9sZF9jd25kID0gbmV0LT5jd25kOwogI2VuZGlmCiAJ
bmV0LT5jd25kID0gbmV0LT5tdHU7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVl
QlNEX3ZlcnNpb24gPj0gODAzMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKIAlTRFRfUFJPQkU1KHNjdHAsIGN3bmQsIG5ldCwgYWNrLAogCSAg
ICAgICAgICBzdGNiLT5hc29jLm15X3Z0YWcsICgoc3RjYi0+c2N0cF9lcC0+c2N0cF9scG9ydCA8
PCAxNikgfCAoc3RjYi0+cnBvcnQpKSwgbmV0LAogCSAgICAgICAgICBvbGRfY3duZCwgbmV0LT5j
d25kKTsKQEAgLTExNjUsNyArMTE2NSw3IEBAIHNjdHBfY3duZF91cGRhdGVfYWZ0ZXJfdGltZW91
dChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX25ldHMgKm5ldCkKIAl9CiAJbmV0
LT5jd25kID0gbmV0LT5tdHU7CiAJbmV0LT5wYXJ0aWFsX2J5dGVzX2Fja2VkID0gMDsKLSNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDMwMDAKKyNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCVNEVF9QUk9C
RTUoc2N0cCwgY3duZCwgbmV0LCB0bywKIAkJICBzdGNiLT5hc29jLm15X3Z0YWcsCiAJCSAgKChz
dGNiLT5zY3RwX2VwLT5zY3RwX2xwb3J0IDw8IDE2KSB8IChzdGNiLT5ycG9ydCkpLApAQCAtMTIy
MCw3ICsxMjIwLDcgQEAgc2N0cF9jd25kX3VwZGF0ZV9hZnRlcl9lY25fZWNob19jb21tb24oc3Ry
dWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9uZXRzICoKIAkJCQluZXQtPlJUTyA8PD0g
MTsKIAkJCX0KIAkJCW5ldC0+Y3duZCA9IG5ldC0+c3N0aHJlc2g7Ci0jaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAzMDAwCisjaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCVNEVF9QUk9CRTUoc2N0cCwg
Y3duZCwgbmV0LCBlY24sCiAJCQkJICBzdGNiLT5hc29jLm15X3Z0YWcsCiAJCQkJICAoKHN0Y2It
PnNjdHBfZXAtPnNjdHBfbHBvcnQgPDwgMTYpIHwgKHN0Y2ItPnJwb3J0KSksCkBAIC0xMzQxLDcg
KzEzNDEsNyBAQCBzY3RwX2N3bmRfdXBkYXRlX2FmdGVyX3BhY2tldF9kcm9wcGVkKHN0cnVjdCBz
Y3RwX3RjYiAqc3RjYiwKIAlzY3RwX2VuZm9yY2VfY3duZF9saW1pdCgmc3RjYi0+YXNvYywgbmV0
KTsKIAlpZiAobmV0LT5jd25kIC0gb2xkX2N3bmQgIT0gMCkgewogCQkvKiBsb2cgb25seSBjaGFu
Z2VzICovCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0g
ODAzMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKIAkJU0RUX1BST0JFNShzY3RwLCBjd25kLCBuZXQsIHBkLAogCQkJICBzdGNiLT5hc29jLm15
X3Z0YWcsCiAJCQkgICgoc3RjYi0+c2N0cF9lcC0+c2N0cF9scG9ydCA8PCAxNikgfCAoc3RjYi0+
cnBvcnQpKSwKQEAgLTEzNjYsNyArMTM2Niw3IEBAIHNjdHBfY3duZF91cGRhdGVfYWZ0ZXJfb3V0
cHV0KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAlpZiAoYnVyc3RfbGltaXQpIHsKIAkJbmV0LT5j
d25kID0gKG5ldC0+ZmxpZ2h0X3NpemUgKyAoYnVyc3RfbGltaXQgKiBuZXQtPm10dSkpOwogCQlz
Y3RwX2VuZm9yY2VfY3duZF9saW1pdCgmc3RjYi0+YXNvYywgbmV0KTsKLSNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDMwMDAKKyNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlTRFRfUFJPQkU1KHNjdHAs
IGN3bmQsIG5ldCwgYmwsCiAJCQkgIHN0Y2ItPmFzb2MubXlfdnRhZywKIAkJCSAgKChzdGNiLT5z
Y3RwX2VwLT5zY3RwX2xwb3J0IDw8IDE2KSB8IChzdGNiLT5ycG9ydCkpLApAQCAtMTQzMywxMiAr
MTQzMywxMiBAQCBzdGF0aWMgdm9pZAogc2N0cF9jd25kX25ld19ydGNjX3RyYW5zbWlzc2lvbl9i
ZWdpbnMoc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkJCSAgICAgICBzdHJ1Y3Qgc2N0cF9uZXRz
ICpuZXQpCiB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24g
Pj0gODAzMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKIAl1aW50NjRfdCB2dGFnLCBwcm9iZXBvaW50OwogCiAjZW5kaWYKIAlpZiAobmV0LT5j
Y19tb2QucnRjYy5sYncpIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0Rf
dmVyc2lvbiA+PSA4MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogCQkvKiBDbGVhciB0aGUgb2xkIGJ3Li4gd2Ugd2VudCB0byAwIGluLWZs
aWdodCAqLwogCQl2dGFnID0gKG5ldC0+cnR0IDw8IDMyKSB8ICgoKHVpbnQzMl90KShzdGNiLT5z
Y3RwX2VwLT5zY3RwX2xwb3J0KSkgPDwgMTYpIHwKIAkJCShzdGNiLT5ycG9ydCk7CkBAIC0xNDk0
LDEzICsxNDk0LDEzIEBAIHN0YXRpYyB2b2lkCiBzY3RwX3NldF9ydGNjX2luaXRpYWxfY2NfcGFy
YW0oc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkJICAgICAgIHN0cnVjdCBzY3RwX25ldHMgKm5l
dCkKIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4
MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCXVpbnQ2NF90IHZ0YWcsIHByb2JlcG9pbnQ7CiAKICNlbmRpZgogCXNjdHBfc2V0X2luaXRp
YWxfY2NfcGFyYW0oc3RjYiwgbmV0KTsKIAlzdGNiLT5hc29jLnVzZV9wcmVjaXNlX3RpbWUgPSAx
OwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMzAw
MAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJ
cHJvYmVwb2ludCA9ICgoKHVpbnQ2NF90KW5ldC0+Y3duZCkgPDwgMzIpOwogCXByb2JlcG9pbnQg
fD0gICgoOSA8PCAxNikgfCAwKTsKIAl2dGFnID0gKG5ldC0+cnR0IDw8IDMyKSB8CkBAIC0xOTYy
LDcgKzE5NjIsNyBAQCBodGNwX2NvbmdfdGltZShzdHJ1Y3QgaHRjcCAqY2EpCiBzdGF0aWMgaW5s
aW5lIHVpbnQzMl90CiBodGNwX2Njb3VudChzdHJ1Y3QgaHRjcCAqY2EpCiB7Ci0JcmV0dXJuICho
dGNwX2NvbmdfdGltZShjYSkvY2EtPm1pblJUVCk7CisJcmV0dXJuIChjYS0+bWluUlRUID09IDAg
PyBodGNwX2NvbmdfdGltZShjYSkgOiBodGNwX2NvbmdfdGltZShjYSkvY2EtPm1pblJUVCk7CiB9
CiAKIHN0YXRpYyBpbmxpbmUgdm9pZApAQCAtMjAwMCw3ICsyMDAwLDcgQEAgbWVhc3VyZV9ydHQo
c3RydWN0IHNjdHBfbmV0cyAqbmV0KQogCWlmIChuZXQtPmZhc3RfcmV0cmFuX2lwID09IDAgJiYg
bmV0LT5zc3RocmVzaCA8IDB4RkZGRiAmJiBodGNwX2Njb3VudCgmbmV0LT5jY19tb2QuaHRjcF9j
YSkgPiAzKSB7CiAJCWlmIChuZXQtPmNjX21vZC5odGNwX2NhLm1heFJUVCA8IG5ldC0+Y2NfbW9k
Lmh0Y3BfY2EubWluUlRUKQogCQkJbmV0LT5jY19tb2QuaHRjcF9jYS5tYXhSVFQgPSBuZXQtPmNj
X21vZC5odGNwX2NhLm1pblJUVDsKLQkJaWYgKG5ldC0+Y2NfbW9kLmh0Y3BfY2EubWF4UlRUIDwg
c3J0dCAmJiBzcnR0IDw9IG5ldC0+Y2NfbW9kLmh0Y3BfY2EubWF4UlRUK01TRUNfVE9fVElDS1Mo
MjApKQorCQlpZiAobmV0LT5jY19tb2QuaHRjcF9jYS5tYXhSVFQgPCBzcnR0ICYmIHNydHQgPD0g
bmV0LT5jY19tb2QuaHRjcF9jYS5tYXhSVFQrc2N0cF9tc2Vjc190b190aWNrcygyMCkpCiAJCQlu
ZXQtPmNjX21vZC5odGNwX2NhLm1heFJUVCA9IHNydHQ7CiAJfQogfQpAQCAtMjA2MCw3ICsyMDYw
LDcgQEAgaHRjcF9iZXRhX3VwZGF0ZShzdHJ1Y3QgaHRjcCAqY2EsIHVpbnQzMl90IG1pblJUVCwg
dWludDMyX3QgbWF4UlRUKQogCQl9CiAJfQogCi0JaWYgKGNhLT5tb2Rlc3dpdGNoICYmIG1pblJU
VCA+ICh1aW50MzJfdClNU0VDX1RPX1RJQ0tTKDEwKSAmJiBtYXhSVFQpIHsKKwlpZiAoY2EtPm1v
ZGVzd2l0Y2ggJiYgbWluUlRUID4gc2N0cF9tc2Vjc190b190aWNrcygxMCkgJiYgbWF4UlRUKSB7
CiAJCWNhLT5iZXRhID0gKG1pblJUVDw8NykvbWF4UlRUOwogCQlpZiAoY2EtPmJldGEgPCBCRVRB
X01JTikKIAkJCWNhLT5iZXRhID0gQkVUQV9NSU47CkBAIC0yNDEwLDcgKzI0MTAsNyBAQCBzY3Rw
X2h0Y3BfY3duZF91cGRhdGVfYWZ0ZXJfZWNuX2VjaG8oc3RydWN0IHNjdHBfdGNiICpzdGNiLAog
CiBjb25zdCBzdHJ1Y3Qgc2N0cF9jY19mdW5jdGlvbnMgc2N0cF9jY19mdW5jdGlvbnNbXSA9IHsK
IHsKLSNpZiBkZWZpbmVkKF9fV2luZG93c19fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dp
bmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fTUlOR1czMl9fKQogCXNj
dHBfc2V0X2luaXRpYWxfY2NfcGFyYW0sCiAJc2N0cF9jd25kX3VwZGF0ZV9hZnRlcl9zYWNrLAog
CXNjdHBfY3duZF91cGRhdGVfZXhpdF9wZl9jb21tb24sCkBAIC0yNDMxLDcgKzI0MzEsNyBAQCBj
b25zdCBzdHJ1Y3Qgc2N0cF9jY19mdW5jdGlvbnMgc2N0cF9jY19mdW5jdGlvbnNbXSA9IHsKICNl
bmRpZgogfSwKIHsKLSNpZiBkZWZpbmVkKF9fV2luZG93c19fKSB8fCBkZWZpbmVkKF9fVXNlcnNw
YWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fTUlOR1cz
Ml9fKQogCXNjdHBfc2V0X2luaXRpYWxfY2NfcGFyYW0sCiAJc2N0cF9oc19jd25kX3VwZGF0ZV9h
ZnRlcl9zYWNrLAogCXNjdHBfY3duZF91cGRhdGVfZXhpdF9wZl9jb21tb24sCkBAIC0yNDUyLDcg
KzI0NTIsNyBAQCBjb25zdCBzdHJ1Y3Qgc2N0cF9jY19mdW5jdGlvbnMgc2N0cF9jY19mdW5jdGlv
bnNbXSA9IHsKICNlbmRpZgogfSwKIHsKLSNpZiBkZWZpbmVkKF9fV2luZG93c19fKSB8fCBkZWZp
bmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZp
bmVkKF9fTUlOR1czMl9fKQogCXNjdHBfaHRjcF9zZXRfaW5pdGlhbF9jY19wYXJhbSwKIAlzY3Rw
X2h0Y3BfY3duZF91cGRhdGVfYWZ0ZXJfc2FjaywKIAlzY3RwX2N3bmRfdXBkYXRlX2V4aXRfcGZf
Y29tbW9uLApAQCAtMjQ3Myw3ICsyNDczLDcgQEAgY29uc3Qgc3RydWN0IHNjdHBfY2NfZnVuY3Rp
b25zIHNjdHBfY2NfZnVuY3Rpb25zW10gPSB7CiAjZW5kaWYKIH0sCiB7Ci0jaWYgZGVmaW5lZChf
X1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmlu
ZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX01JTkdXMzJfXykKIAlzY3RwX3NldF9ydGNjX2luaXRp
YWxfY2NfcGFyYW0sCiAJc2N0cF9jd25kX3VwZGF0ZV9ydGNjX2FmdGVyX3NhY2ssCiAJc2N0cF9j
d25kX3VwZGF0ZV9leGl0X3BmX2NvbW1vbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBs
aWIvbmV0aW5ldC9zY3RwX2NvbnN0YW50cy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0
L3NjdHBfY29uc3RhbnRzLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCBm
OWE4N2E0N2IyYTE4YzFhOGIwNzI1ZDVjZmFhMDMzNzU3OWZjNzhkLi5iOTMyZDdmMTkxNDllMTE2
YzZjNDMxNzVjZjIxNWJhZTEyYzVlNzk3Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5l
dC9zY3RwX2NvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3Rw
X2NvbnN0YW50cy5oCkBAIC0zMiwxNSArMzIsMTUgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0jaWZkZWYgX19GcmVlQlNEX18KKyNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPHN5cy9jZGVmcy5o
PgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfY29uc3RhbnRzLmgg
MzI4NDc4IDIwMTgtMDEtMjcgMTM6NDY6NTVaIHR1ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVC
U0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9jb25zdGFudHMuaCAzNjM0NDAgMjAyMC0wNy0yMyAw
MTozNToyNFogdHVleGVuICQiKTsKICNlbmRpZgogCiAjaWZuZGVmIF9ORVRJTkVUX1NDVFBfQ09O
U1RBTlRTX0hfCiAjZGVmaW5lIF9ORVRJTkVUX1NDVFBfQ09OU1RBTlRTX0hfCiAKLSNpZiBkZWZp
bmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpICYmIGRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKIGV4dGVybiB2b2lkIGdldHdpbnRpbWVvZmRheShzdHJ1Y3QgdGlt
ZXZhbCAqdHYpOwogI2VuZGlmCiAKQEAgLTQ3OCwxMCArNDc4LDE0IEBAIGV4dGVybiB2b2lkIGdl
dHdpbnRpbWVvZmRheShzdHJ1Y3QgdGltZXZhbCAqdHYpOwogI2RlZmluZSBTQ1RQX1NUQVRFX0lO
X0FDQ0VQVF9RVUVVRSAgICAgIDB4MTAwMAogI2RlZmluZSBTQ1RQX1NUQVRFX01BU0sJCQkweDAw
N2YKIAotI2RlZmluZSBTQ1RQX0dFVF9TVEFURShhc29jKQkoKGFzb2MpLT5zdGF0ZSAmIFNDVFBf
U1RBVEVfTUFTSykKLSNkZWZpbmUgU0NUUF9TRVRfU1RBVEUoYXNvYywgbmV3c3RhdGUpICAoKGFz
b2MpLT5zdGF0ZSA9ICgoYXNvYyktPnN0YXRlICYgflNDVFBfU1RBVEVfTUFTSykgfCAgbmV3c3Rh
dGUpCi0jZGVmaW5lIFNDVFBfQ0xFQVJfU1VCU1RBVEUoYXNvYywgc3Vic3RhdGUpICgoYXNvYykt
PnN0YXRlICY9IH5zdWJzdGF0ZSkKLSNkZWZpbmUgU0NUUF9BRERfU1VCU1RBVEUoYXNvYywgc3Vi
c3RhdGUpICgoYXNvYyktPnN0YXRlIHw9IHN1YnN0YXRlKQorI2RlZmluZSBTQ1RQX0dFVF9TVEFU
RShfc3RjYikgXAorCSgoX3N0Y2IpLT5hc29jLnN0YXRlICYgU0NUUF9TVEFURV9NQVNLKQorI2Rl
ZmluZSBTQ1RQX1NFVF9TVEFURShfc3RjYiwgX3N0YXRlKSBcCisJc2N0cF9zZXRfc3RhdGUoX3N0
Y2IsIF9zdGF0ZSkKKyNkZWZpbmUgU0NUUF9DTEVBUl9TVUJTVEFURShfc3RjYiwgX3N1YnN0YXRl
KSBcCisJKF9zdGNiKS0+YXNvYy5zdGF0ZSAmPSB+KF9zdWJzdGF0ZSkKKyNkZWZpbmUgU0NUUF9B
RERfU1VCU1RBVEUoX3N0Y2IsIF9zdWJzdGF0ZSkgXAorCXNjdHBfYWRkX3N1YnN0YXRlKF9zdGNi
LCBfc3Vic3RhdGUpCiAKIC8qIFNDVFAgcmVhY2hhYmlsaXR5IHN0YXRlIGZvciBlYWNoIGFkZHJl
c3MgKi8KICNkZWZpbmUgU0NUUF9BRERSX1JFQUNIQUJMRQkJMHgwMDEKQEAgLTU0NywyMCArNTUx
LDE5IEBAIGV4dGVybiB2b2lkIGdldHdpbnRpbWVvZmRheShzdHJ1Y3QgdGltZXZhbCAqdHYpOwog
I2RlZmluZSBTQ1RQX1RJTUVSX1RZUEVfQVNDT05GCQkxMAogI2RlZmluZSBTQ1RQX1RJTUVSX1RZ
UEVfU0hVVERPV05HVUFSRAkxMQogI2RlZmluZSBTQ1RQX1RJTUVSX1RZUEVfQVVUT0NMT1NFCTEy
Ci0jZGVmaW5lIFNDVFBfVElNRVJfVFlQRV9FVkVOVFdBS0UJMTMKLSNkZWZpbmUgU0NUUF9USU1F
Ul9UWVBFX1NUUlJFU0VUICAgICAgICAxNAotI2RlZmluZSBTQ1RQX1RJTUVSX1RZUEVfSU5QS0lM
TCAgICAgICAgIDE1Ci0jZGVmaW5lIFNDVFBfVElNRVJfVFlQRV9BU09DS0lMTCAgICAgICAgMTYK
LSNkZWZpbmUgU0NUUF9USU1FUl9UWVBFX0FERFJfV1EgICAgICAgICAxNwotI2RlZmluZSBTQ1RQ
X1RJTUVSX1RZUEVfUFJJTV9ERUxFVEVEICAgIDE4CisjZGVmaW5lIFNDVFBfVElNRVJfVFlQRV9T
VFJSRVNFVAkxMworI2RlZmluZSBTQ1RQX1RJTUVSX1RZUEVfSU5QS0lMTAkJMTQKKyNkZWZpbmUg
U0NUUF9USU1FUl9UWVBFX0FTT0NLSUxMCTE1CisjZGVmaW5lIFNDVFBfVElNRVJfVFlQRV9BRERS
X1dRCQkxNgorI2RlZmluZSBTQ1RQX1RJTUVSX1RZUEVfUFJJTV9ERUxFVEVECTE3CiAvKiBhZGQg
bmV3IHRpbWVycyBoZXJlIC0gYW5kIGluY3JlbWVudCBMQVNUICovCi0jZGVmaW5lIFNDVFBfVElN
RVJfVFlQRV9MQVNUICAgICAgICAgICAgMTkKKyNkZWZpbmUgU0NUUF9USU1FUl9UWVBFX0xBU1QJ
CTE4CiAKICNkZWZpbmUgU0NUUF9JU19USU1FUl9UWVBFX1ZBTElEKHQpCSgoKHQpID4gU0NUUF9U
SU1FUl9UWVBFX05PTkUpICYmIFwKIAkJCQkJICgodCkgPCBTQ1RQX1RJTUVSX1RZUEVfTEFTVCkp
CiAKIAotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogLyogTnVtYmVyIG9mIHRpY2tzIHRvIHJ1biB0aGUgbWFp
biB0aW1lciBhdCBpbiBtc2VjICovCiAjZGVmaW5lIFNDVFBfTUFJTl9USU1FUl9ERUZBVUxUCQkx
MAogI2VuZGlmCkBAIC01ODMsMjIgKzU4Niw3IEBAIGV4dGVybiB2b2lkIGdldHdpbnRpbWVvZmRh
eShzdHJ1Y3QgdGltZXZhbCAqdHYpOwogICogbnVtYmVyIG9mIGNsdXN0ZXJzIGFzIGEgYmFzZS4g
VGhpcyB3YXkgaGlnaCBiYW5kd2lkdGggZW52aXJvbm1lbnRzIHdpbGwKICAqIG5vdCBnZXQgaW1w
YWN0ZWQgYnkgdGhlIGxvd2VyIGJhbmR3aWR0aCBzZW5kaW5nIGEgYnVuY2ggb2YgMSBieXRlIGNo
dW5rcwogICovCi0jaWZkZWYgX19QYW5kYV9fCi0jZGVmaW5lIFNDVFBfQVNPQ19NQVhfQ0hVTktT
X09OX1FVRVVFIDEwMjQwCi0jZWxzZQogI2RlZmluZSBTQ1RQX0FTT0NfTUFYX0NIVU5LU19PTl9R
VUVVRSA1MTIKLSNlbmRpZgotCi0KLS8qIFRoZSBjb252ZXJzaW9uIGZyb20gdGltZSB0byB0aWNr
cyBhbmQgdmljZSB2ZXJzYSBpcyBkb25lIGJ5IHJvdW5kaW5nCi0gKiB1cHdhcmRzLiBUaGlzIHdh
eSB3ZSBjYW4gdGVzdCBpbiB0aGUgY29kZSB0aGUgdGltZSB0byBiZSBwb3NpdGl2ZSBhbmQKLSAq
IGtub3cgdGhhdCB0aGlzIGNvcnJlc3BvbmRzIHRvIGEgcG9zaXRpdmUgbnVtYmVyIG9mIHRpY2tz
LgotICovCi0jZGVmaW5lIE1TRUNfVE9fVElDS1MoeCkgKChoeiA9PSAxMDAwKSA/IHggOiAoKCgo
eCkgKiBoeikgKyA5OTkpIC8gMTAwMCkpCi0jZGVmaW5lIFRJQ0tTX1RPX01TRUMoeCkgKChoeiA9
PSAxMDAwKSA/IHggOiAoKCgoeCkgKiAxMDAwKSArIChoeiAtIDEpKSAvIGh6KSkKLQotI2RlZmlu
ZSBTRUNfVE9fVElDS1MoeCkgKCh4KSAqIGh6KQotI2RlZmluZSBUSUNLU19UT19TRUMoeCkgKCgo
eCkgKyAoaHogLSAxKSkgLyBoeikKIAogLyoKICAqIEJhc2ljYWxseSB0aGUgbWluaW11bSBhbW91
bnQgb2YgdGltZSBiZWZvcmUgSSBkbyBhIGVhcmx5IEZSLiBNYWtpbmcgdGhpcwpAQCAtNzY1LDcg
Kzc1MywxMSBAQCBleHRlcm4gdm9pZCBnZXR3aW50aW1lb2ZkYXkoc3RydWN0IHRpbWV2YWwgKnR2
KTsKICNkZWZpbmUgU0NUUF9ERUZBVUxUX1NQTElUX1BPSU5UX01JTiAyOTA0CiAKIC8qIE1heGlt
dW0gbGVuZ3RoIG9mIGRpYWdub3N0aWMgaW5mb3JtYXRpb24gaW4gZXJyb3IgY2F1c2VzICovCisj
aWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2RlZmluZSBTQ1RQX0RJQUdfSU5GT19MRU4gMjU2
CisjZWxzZQogI2RlZmluZSBTQ1RQX0RJQUdfSU5GT19MRU4gMTI4CisjZW5kaWYKIAogLyogQUJP
UlQgQ09ERVMgYW5kIG90aGVyIHRlbGwtdGFsZSBsb2NhdGlvbgogICogY29kZXMgYXJlIGdlbmVy
YXRlZCBieSBhZGRpbmcgdGhlIGJlbG93CkBAIC03ODMsOSArNzc1LDggQEAgZXh0ZXJuIHZvaWQg
Z2V0d2ludGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICp0dik7CiAjZGVmaW5lIFNDVFBfRlJPTV9T
Q1RQX0FTQ09ORiAgICAgICAweDgwMDAwMDAwCiAjZGVmaW5lIFNDVFBfRlJPTV9TQ1RQX09VVFBV
VCAgICAgICAweDkwMDAwMDAwCiAjZGVmaW5lIFNDVFBfRlJPTV9TQ1RQX1BFRUxPRkYgICAgICAw
eGEwMDAwMDAwCi0jZGVmaW5lIFNDVFBfRlJPTV9TQ1RQX1BBTkRBICAgICAgICAweGIwMDAwMDAw
Ci0jZGVmaW5lIFNDVFBfRlJPTV9TQ1RQX1NZU0NUTCAgICAgICAweGMwMDAwMDAwCi0jZGVmaW5l
IFNDVFBfRlJPTV9TQ1RQX0NDX0ZVTkNUSU9OUyAweGQwMDAwMDAwCisjZGVmaW5lIFNDVFBfRlJP
TV9TQ1RQX1NZU0NUTCAgICAgICAweGIwMDAwMDAwCisjZGVmaW5lIFNDVFBfRlJPTV9TQ1RQX0ND
X0ZVTkNUSU9OUyAweGMwMDAwMDAwCiAKIC8qIExvY2F0aW9uIElEJ3MgKi8KICNkZWZpbmUgU0NU
UF9MT0NfMSAgMHgwMDAwMDAwMQpAQCAtODIzLDcgKzgxNCw4IEBAIGV4dGVybiB2b2lkIGdldHdp
bnRpbWVvZmRheShzdHJ1Y3QgdGltZXZhbCAqdHYpOwogI2RlZmluZSBTQ1RQX0xPQ18zMyAweDAw
MDAwMDIxCiAjZGVmaW5lIFNDVFBfTE9DXzM0IDB4MDAwMDAwMjIKICNkZWZpbmUgU0NUUF9MT0Nf
MzUgMHgwMDAwMDAyMwotCisjZGVmaW5lIFNDVFBfTE9DXzM2IDB4MDAwMDAwMjQKKyNkZWZpbmUg
U0NUUF9MT0NfMzcgMHgwMDAwMDAyNQogCiAvKiBGcmVlIGFzc29jIGNvZGVzICovCiAjZGVmaW5l
IFNDVFBfTk9STUFMX1BST0MgICAgICAwCkBAIC04NzAsNyArODYyLDcgQEAgZXh0ZXJuIHZvaWQg
Z2V0d2ludGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICp0dik7CiAjZGVmaW5lIFNDVFBfQ0hVTktR
VUVVRV9TQ0FMRSAxMAogI2VuZGlmCiAKLSNpZmRlZiBfX0ZyZWVCU0RfXworI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAvKiBjbG9jayB2YXJpYW5j
ZSBpcyAxIG1zICovCiAjZGVmaW5lIFNDVFBfQ0xPQ0tfR1JBTlVMQVJJVFkJMQogI2Vsc2UKQEAg
LTk3Nyw3ICs5NjksNyBAQCBleHRlcm4gdm9pZCBnZXR3aW50aW1lb2ZkYXkoc3RydWN0IHRpbWV2
YWwgKnR2KTsKIAogLyotCiAgKiBkZWZpbmVzIGZvciBzb2NrZXQgbG9jayBzdGF0ZXMuCi0gKiBV
c2VkIGJ5IF9fQVBQTEVfXyBhbmQgU0NUUF9TT19MT0NLX1RFU1RJTkcKKyAqIFVzZWQgYnkgX19B
UFBMRV9fCiAgKi8KICNkZWZpbmUgU0NUUF9TT19MT0NLRUQJCTEKICNkZWZpbmUgU0NUUF9TT19O
T1RfTE9DS0VECTAKQEAgLTEwMDQsOCArOTk2LDExIEBAIGV4dGVybiB2b2lkIGdldHdpbnRpbWVv
ZmRheShzdHJ1Y3QgdGltZXZhbCAqdHYpOwogICAgICgoKCh1aW50OF90ICopJihhKS0+c19hZGRy
KVswXSA9PSAxNjkpICYmIFwKICAgICAgKCgodWludDhfdCAqKSYoYSktPnNfYWRkcilbMV0gPT0g
MjU0KSkKIAorLyogTWF4aW11bSBzaXplIG9mIG9wdHZhbCBmb3IgSVBQUk9UT19TQ1RQIGxldmVs
IHNvY2tldCBvcHRpb25zLiAqLworI2RlZmluZSBTQ1RQX1NPQ0tFVF9PUFRJT05fTElNSVQgKDY0
ICogMTAyNCkKKwogI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKLSNpZiBkZWZpbmVkKF9fVXNl
cnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAjZGVmaW5lIFNDVFBfR0VU
VElNRV9USU1FVkFMKHgpCWdldHdpbnRpbWVvZmRheSh4KQogI2RlZmluZSBTQ1RQX0dFVFBUSU1F
X1RJTUVWQUwoeCkgZ2V0d2ludGltZW9mZGF5KHgpIC8qIHRoaXMgZG9lc24ndCBzZWVtIHRvIGV2
ZXIgYmUgdXNlZC4uICovCiAjZWxzZQpAQCAtMTAyOSwxMSArMTAyNCwxMSBAQCBkbyB7IFwKIAl9
IFwKIH0gd2hpbGUgKDApCiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9f
V2luZG93c19fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykgfHwgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNkZWZp
bmUgc2N0cF9zb3d3YWtldXBfbG9ja2VkKGlucCwgc28pIFwKIGRvIHsgXAogCWlmIChpbnAtPnNj
dHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19ET05UX1dBS0UpIHsgXAotICAgICAgICAgICAgICAg
IFNPQ0tCVUZfVU5MT0NLKCYoKHNvKS0+c29fc25kKSk7IFwKKwkJU09DS0JVRl9VTkxPQ0soJigo
c28pLT5zb19zbmQpKTsgXAogCQlpbnAtPnNjdHBfZmxhZ3MgfD0gU0NUUF9QQ0JfRkxBR1NfV0FL
RU9VVFBVVDsgXAogCX0gZWxzZSB7IFwKIAkJc293d2FrZXVwX2xvY2tlZChzbyk7IFwKQEAgLTEw
NDMsNyArMTAzOCw3IEBAIGRvIHsgXAogI2RlZmluZSBzY3RwX3Nvd3dha2V1cF9sb2NrZWQoaW5w
LCBzbykgXAogZG8geyBcCiAJaWYgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0RP
TlRfV0FLRSkgeyBcCi0gICAgICAgICAgICAgICAgU09DS0JVRl9VTkxPQ0soJigoc28pLT5zb19z
bmQpKTsgXAorCQlTT0NLQlVGX1VOTE9DSygmKChzbyktPnNvX3NuZCkpOyBcCiAJCWlucC0+c2N0
cF9mbGFncyB8PSBTQ1RQX1BDQl9GTEFHU19XQUtFT1VUUFVUOyBcCiAJfSBlbHNlIHsgXAogCQlz
b3d3YWtldXAoc28pOyBcCkBAIC0xMDYwLDEyICsxMDU1LDEyIEBAIGRvIHsgXAogCX0gXAogfSB3
aGlsZSAoMCkKIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19XaW5kb3dz
X18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8
fCBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2RlZmluZSBzY3Rw
X3Nvcndha2V1cF9sb2NrZWQoaW5wLCBzbykgXAogZG8geyBcCiAJaWYgKGlucC0+c2N0cF9mbGFn
cyAmIFNDVFBfUENCX0ZMQUdTX0RPTlRfV0FLRSkgeyBcCiAJCWlucC0+c2N0cF9mbGFncyB8PSBT
Q1RQX1BDQl9GTEFHU19XQUtFSU5QVVQ7IFwKLSAgICAgICAgICAgICAgICBTT0NLQlVGX1VOTE9D
SygmKChzbyktPnNvX3JjdikpOyBcCisJCVNPQ0tCVUZfVU5MT0NLKCYoKHNvKS0+c29fcmN2KSk7
IFwKIAl9IGVsc2UgeyBcCiAJCXNvcndha2V1cF9sb2NrZWQoc28pOyBcCiAJfSBcCkBAIC0xMDc2
LDcgKzEwNzEsNyBAQCBkbyB7IFwKIGRvIHsgXAogCWlmIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQ
X1BDQl9GTEFHU19ET05UX1dBS0UpIHsgXAogCQlpbnAtPnNjdHBfZmxhZ3MgfD0gU0NUUF9QQ0Jf
RkxBR1NfV0FLRUlOUFVUOyBcCi0gICAgICAgICAgICAgICAgU09DS0JVRl9VTkxPQ0soJigoc28p
LT5zb19yY3YpKTsgXAorCQlTT0NLQlVGX1VOTE9DSygmKChzbyktPnNvX3JjdikpOyBcCiAJfSBl
bHNlIHsgXAogCQlzb3J3YWtldXAoc28pOyBcCiAJfSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91
c3JzY3RwbGliL25ldGluZXQvc2N0cF9jcmMzMi5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRp
bmV0L3NjdHBfY3JjMzIuYwpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDBi
ZTA3OTVjZjJhNmE4NWEwNDdhNGY4NGUzOGRmMzc2MTlmMGM2NWIuLjBiNWEwNmUwNjc2MGY0NmRm
ZDBhNDEzYTJiMDA3NDAzMTk3ODUwMDMKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0
L3NjdHBfY3JjMzIuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9jcmMz
Mi5jCkBAIC0zMiwyMyArMzIsMjIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi0jaWZkZWYgX19GcmVlQlNEX18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNE
SUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfY3JjMzIuYyAzMjcyMDAgMjAxNy0x
Mi0yNiAxMjozNTowMlogdHVleGVuICQiKTsKK19fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMv
bmV0aW5ldC9zY3RwX2NyYzMyLmMgMzYyNDk4IDIwMjAtMDYtMjIgMTQ6MzY6MTRaIHR1ZXhlbiAk
Iik7CiAKICNpbmNsdWRlICJvcHRfc2N0cC5oIgogCi0jaWZkZWYgU0NUUAotI2luY2x1ZGUgPG5l
dGluZXQvc2N0cF9vcy5oPgotI2luY2x1ZGUgPG5ldGluZXQvc2N0cC5oPgotI2luY2x1ZGUgPG5l
dGluZXQvc2N0cF9jcmMzMi5oPgotI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9wY2IuaD4KLSNlbHNl
CiAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CiAjaW5jbHVkZSA8c3lzL3N5c3RtLmg+CisjaW5jbHVk
ZSA8c3lzL2dzYl9jcmMzMi5oPgogI2luY2x1ZGUgPHN5cy9tYnVmLmg+CiAKKyNpbmNsdWRlIDxu
ZXRpbmV0L3NjdHAuaD4KICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfY3JjMzIuaD4KKyNpZiBkZWZp
bmVkKFNDVFApIHx8IGRlZmluZWQoU0NUUF9TVVBQT1JUKQorI2luY2x1ZGUgPG5ldGluZXQvc2N0
cF9vcy5oPgorI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9wY2IuaD4KICNlbmRpZgogI2Vsc2UKICNp
bmNsdWRlIDxuZXRpbmV0L3NjdHBfb3MuaD4KQEAgLTU3LDcgKzU2LDcgQEAgX19GQlNESUQoIiRG
cmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfY3JjMzIuYyAzMjcyMDAgMjAxNy0xMi0yNiAx
MjozNTowMlogdHUKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfcGNiLmg+CiAjZW5kaWYKIAotI2lm
ICFkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmICEoZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAvKioKICAqCiAgKiBSb3V0aW5lIERlc2NyaXB0aW9uOgpA
QCAtNzk2LDggKzc5NSwxMSBAQCBzY3RwX2NhbGN1bGF0ZV9ja3N1bShzdHJ1Y3QgbWJ1ZiAqbSwg
dWludDMyX3Qgb2Zmc2V0KQogCXJldHVybiAoYmFzZSk7CiB9CiAKLSNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKQotI2lmZGVmIFNDVFAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQorI2lmIGRlZmluZWQoU0NUUCkgfHwgZGVmaW5lZChTQ1RQX1NVUFBP
UlQpCisKK1ZORVRfREVGSU5FKHN0cnVjdCBzY3RwX2Jhc2VfaW5mbywgc3lzdGVtX2Jhc2VfaW5m
byk7CisKIC8qCiAgKiBDb21wdXRlIGFuZCBpbnNlcnQgdGhlIFNDVFAgY2hlY2tzdW0gaW4gbmV0
d29yayBieXRlIG9yZGVyIGZvciBhIGdpdmVuCiAgKiBtYnVmIGNoYWluIG0gd2hpY2ggY29udGFp
bnMgYW4gU0NUUCBwYWNrZXQgc3RhcnRpbmcgYXQgb2Zmc2V0LgpAQCAtODEyLDE3ICs4MTQsMTcg
QEAgc2N0cF9kZWxheWVkX2Nrc3VtKHN0cnVjdCBtYnVmICptLCB1aW50MzJfdCBvZmZzZXQpCiAJ
U0NUUF9TVEFUX0lOQ1Ioc2N0cHNfc2VuZHN3Y3JjKTsKIAlvZmZzZXQgKz0gb2Zmc2V0b2Yoc3Ry
dWN0IHNjdHBoZHIsIGNoZWNrc3VtKTsKIAotCWlmIChvZmZzZXQgKyBzaXplb2YodWludDMyX3Qp
ID4gKHVpbnQzMl90KShtLT5tX2xlbikpIHsKKwlpZiAob2Zmc2V0ICsgc2l6ZW9mKHVpbnQzMl90
KSA+ICh1aW50MzJfdCkobS0+bV9wa3RoZHIubGVuKSkgewogI2lmZGVmIElOVkFSSUFOVFMKLQkJ
cGFuaWMoInNjdHBfZGVsYXllZF9ja3N1bSgpOiBtLT5tX2xlbjogJWQsIG9mZnNldDogJXUuIiwK
LQkJICAgICAgbS0+bV9sZW4sIG9mZnNldCk7CisJCXBhbmljKCJzY3RwX2RlbGF5ZWRfY2tzdW0o
KTogbS0+bV9wa3RoZHIubGVuOiAlZCwgb2Zmc2V0OiAldS4iLAorCQkgICAgICBtLT5tX3BrdGhk
ci5sZW4sIG9mZnNldCk7CiAjZWxzZQotCQlTQ1RQX1BSSU5URigic2N0cF9kZWxheWVkX2Nrc3Vt
KCk6IG0tPm1fbGVuOiAlZCwgb2Zmc2V0OiAldS5cbiIsCi0JCSAgICAgICAgICAgIG0tPm1fbGVu
LCBvZmZzZXQpOworCQlTQ1RQX1BSSU5URigic2N0cF9kZWxheWVkX2Nrc3VtKCk6IG0tPm1fcGt0
aGRyLmxlbjogJWQsIG9mZnNldDogJXUuXG4iLAorCQkgICAgICAgICAgICBtLT5tX3BrdGhkci5s
ZW4sIG9mZnNldCk7CiAjZW5kaWYKIAkJcmV0dXJuOwogCX0KLQkqKHVpbnQzMl90ICopKG0tPm1f
ZGF0YSArIG9mZnNldCkgPSBjaGVja3N1bTsKKwltX2NvcHliYWNrKG0sIChpbnQpb2Zmc2V0LCAo
aW50KXNpemVvZih1aW50MzJfdCksIChjYWRkcl90KSZjaGVja3N1bSk7CiB9CiAjZW5kaWYKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfY3JjMzIu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0
cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2NyYzMyLmgKb2xkIG1vZGUgMTAw
NjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCBhYzIwYzEwMzQxZmExOTE2NzE1MDNhYjMzYTJiMzkz
ZDZiZTM0Y2U3Li41ZTc2ZmYyMWJmOTVmYmFiYjQyZWI0NTU3ZWZiOGQxNzYzNWZmYWM3Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2NyYzMyLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIv
dXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfY3JjMzIuaApAQCAtMzIsOSArMzIsOSBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZmRlZiBfX0ZyZWVCU0RfXwor
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5j
bHVkZSA8c3lzL2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQv
c2N0cF9jcmMzMi5oIDMyNzIwMCAyMDE3LTEyLTI2IDEyOjM1OjAyWiB0dWV4ZW4gJCIpOworX19G
QlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfY3JjMzIuaCAzNjIzMzggMjAy
MC0wNi0xOCAxOTozMjozNFogbWFya2ogJCIpOwogI2VuZGlmCiAKICNpZm5kZWYgX05FVElORVRf
U0NUUF9DUkMzMl9IXwpAQCAtNDIsOCArNDIsOCBAQCBfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQv
c3lzL25ldGluZXQvc2N0cF9jcmMzMi5oIDMyNzIwMCAyMDE3LTEyLTI2IDEyOjM1OjAyWiB0dQog
CiAjaWYgZGVmaW5lZChfS0VSTkVMKQogdWludDMyX3Qgc2N0cF9jYWxjdWxhdGVfY2tzdW0oc3Ry
dWN0IG1idWYgKiwgdWludDMyX3QpOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCi0jaWZkZWYg
U0NUUAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CisjaWYgZGVmaW5lZChTQ1RQKSB8fCBkZWZpbmVkKFNDVFBfU1VQUE9SVCkKIHZvaWQgc2N0cF9k
ZWxheWVkX2Nrc3VtKHN0cnVjdCBtYnVmICosIHVpbnQzMl90IG9mZnNldCk7CiAjZW5kaWYKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfaGVhZGVy
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9oZWFkZXIuaApvbGQgbW9kZSAx
MDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDYwMzVkOWNiZGJiZGZiOTFmMjViOTY3NDIyZDhh
NGEwN2Y5YjY0YTMuLjYwMjkyMWQwZTJiZDBmNWM0MTkzZGRmOTM4ZDhkNmExMzhkZjE1OTcKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfaGVhZGVyLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBs
aWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfaGVhZGVyLmgKQEAgLTMyLDcgKzMyLDcgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZkZWYgX19GcmVlQlNE
X18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
I2luY2x1ZGUgPHN5cy9jZGVmcy5oPgogX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRp
bmV0L3NjdHBfaGVhZGVyLmggMzA5NjgyIDIwMTYtMTItMDcgMTk6MzA6NTlaIHR1ZXhlbiAkIik7
CiAjZW5kaWYKQEAgLTQwLDE2ICs0MCwxNiBAQCBfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lz
L25ldGluZXQvc2N0cF9oZWFkZXIuaCAzMDk2ODIgMjAxNi0xMi0wNyAxOTozMDo1OVogdAogI2lm
bmRlZiBfTkVUSU5FVF9TQ1RQX0hFQURFUl9IXwogI2RlZmluZSBfTkVUSU5FVF9TQ1RQX0hFQURF
Ul9IXwogCi0jaWYgZGVmaW5lZChfX1dpbmRvd3NfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
b3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKICNpbmNsdWRlIDxwYWNrb24uaD4KICNlbmRpZgotI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X29zX1dpbmRvd3MpCisjaWYgIWRlZmluZWQoX1dJTjMyKQogI2luY2x1ZGUgPHN5cy90aW1lLmg+
CiAjZW5kaWYKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHAuaD4KICNpbmNsdWRlIDxuZXRpbmV0L3Nj
dHBfY29uc3RhbnRzLmg+CiAKLSNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQor
I2lmICFkZWZpbmVkKF9XSU4zMikKICNkZWZpbmUgU0NUUF9QQUNLRUQgX19hdHRyaWJ1dGVfXygo
cGFja2VkKSkKICNlbHNlCiAjcHJhZ21hIHBhY2sgKHB1c2gsIDEpCkBAIC02MDEsMTAgKzYwMSwx
MCBAQCBzdHJ1Y3Qgc2N0cF9hdXRoX2NodW5rIHsKICNkZWZpbmUgU0NUUF9NSU5fVjRfT1ZFUkhF
QUQgKHNpemVvZihzdHJ1Y3QgaXApICsgXAogCQkJICAgICAgc2l6ZW9mKHN0cnVjdCBzY3RwaGRy
KSkKIAotI2lmIGRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgZGVmaW5lZChfV0lOMzIpICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8cGFja29mZi5oPgogI2VuZGlmCi0jaWYg
ZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKSAmJiBk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjcHJhZ21hIHBhY2socG9wKQogI2VuZGlmCiAjdW5kZWYg
U0NUUF9QQUNLRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3Rw
X2luZGF0YS5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfaW5kYXRhLmMKb2xk
IG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCAyZmJhYzJmZjBiZjdjOTI5MjBkZGQw
YzVlZTA2MWZiZmUwZmMzZmI0Li44MDZmNjMwOTI3YWE4ODQ3NjZjNjExNTQ3NTBjMDdhYjZmNTdh
YTNkCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
dXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2luZGF0YS5jCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2luZGF0YS5jCkBAIC0zMiwxMyArMzIs
MTMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZkZWYg
X19GcmVlQlNEX18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFk
L3N5cy9uZXRpbmV0L3NjdHBfaW5kYXRhLmMgMzMzOTc5IDIwMTgtMDUtMjEgMTQ6NTE6MjBaIHR1
ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9pbmRh
dGEuYyAzNjM0NDAgMjAyMC0wNy0yMyAwMTozNToyNFogdHVleGVuICQiKTsKICNlbmRpZgogCiAj
aW5jbHVkZSA8bmV0aW5ldC9zY3RwX29zLmg+Ci0jaWZkZWYgX19GcmVlQlNEX18KKyNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPHN5
cy9wcm9jLmg+CiAjZW5kaWYKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfdmFyLmg+CkBAIC01NSw3
ICs1NSw3IEBAIF9fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX2luZGF0
YS5jIDMzMzk3OSAyMDE4LTA1LTIxIDE0OjUxOjIwWiB0CiAjaW5jbHVkZSA8bmV0aW5ldC9zY3Rw
X2JzZF9hZGRyLmg+CiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX2lucHV0Lmg+CiAjaW5jbHVkZSA8
bmV0aW5ldC9zY3RwX2NyYzMyLmg+Ci0jaWZkZWYgX19GcmVlQlNEX18KKyNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPG5ldGluZXQv
c2N0cF9sb2NrX2JzZC5oPgogI2VuZGlmCiAvKgpAQCAtNzIsNyArNzIsNyBAQCBzY3RwX2FkZF9j
aGtfdG9fY29udHJvbChzdHJ1Y3Qgc2N0cF9xdWV1ZWRfdG9fcmVhZCAqY29udHJvbCwKIAkJCXN0
cnVjdCBzY3RwX3N0cmVhbV9pbiAqc3RybSwKIAkJCXN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJ
CXN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAotCQkJc3RydWN0IHNjdHBfdG1pdF9jaHVu
ayAqY2hrLCBpbnQgbG9ja19oZWxkKTsKKwkJCXN0cnVjdCBzY3RwX3RtaXRfY2h1bmsgKmNoaywg
aW50IGhvbGRfcmxvY2spOwogCiAKIHZvaWQKQEAgLTE2OSw2ICsxNjksOSBAQCBzY3RwX2J1aWxk
X3JlYWRxX2VudHJ5KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAlyZWFkX3F1ZXVlX2UtPmRhdGEg
PSBkbTsKIAlyZWFkX3F1ZXVlX2UtPnN0Y2IgPSBzdGNiOwogCXJlYWRfcXVldWVfZS0+cG9ydF9m
cm9tID0gc3RjYi0+cnBvcnQ7CisJaWYgKHN0Y2ItPmFzb2Muc3RhdGUgJiBTQ1RQX1NUQVRFX0FC
T1VUX1RPX0JFX0ZSRUVEKSB7CisJCXJlYWRfcXVldWVfZS0+ZG9fbm90X3JlZl9zdGNiID0gMTsK
Kwl9CiBmYWlsZWRfYnVpbGQ6CiAJcmV0dXJuIChyZWFkX3F1ZXVlX2UpOwogfQpAQCAtMTgwLDcg
KzE4Myw3IEBAIHNjdHBfYnVpbGRfY3RsX25jaHVuayhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBz
dHJ1Y3Qgc2N0cF9zbmRyY3ZpbmZvICpzaW5mbykKIAlzdHJ1Y3Qgc2N0cF9zbmRyY3ZpbmZvICpv
dXRpbmZvOwogCXN0cnVjdCBzY3RwX3JjdmluZm8gKnJjdmluZm87CiAJc3RydWN0IHNjdHBfbnh0
aW5mbyAqbnh0aW5mbzsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYg
ZGVmaW5lZChfV0lOMzIpCiAJV1NBQ01TR0hEUiAqY21oOwogI2Vsc2UKIAlzdHJ1Y3QgY21zZ2hk
ciAqY21oOwpAQCAtMjI5LDcgKzIzMiw3IEBAIHNjdHBfYnVpbGRfY3RsX25jaHVuayhzdHJ1Y3Qg
c2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF9zbmRyY3ZpbmZvICpzaW5mbykKIAlTQ1RQX0JV
Rl9MRU4ocmV0KSA9IDA7CiAKIAkvKiBXZSBuZWVkIGEgQ01TRyBoZWFkZXIgZm9sbG93ZWQgYnkg
dGhlIHN0cnVjdCAqLwotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBk
ZWZpbmVkKF9XSU4zMikKIAljbWggPSBtdG9kKHJldCwgV1NBQ01TR0hEUiAqKTsKICNlbHNlCiAJ
Y21oID0gbXRvZChyZXQsIHN0cnVjdCBjbXNnaGRyICopOwpAQCAtMjUyLDcgKzI1NSw3IEBAIHNj
dHBfYnVpbGRfY3RsX25jaHVuayhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF9z
bmRyY3ZpbmZvICpzaW5mbykKIAkJcmN2aW5mby0+cmN2X2N1bXRzbiA9IHNpbmZvLT5zaW5mb19j
dW10c247CiAJCXJjdmluZm8tPnJjdl9jb250ZXh0ID0gc2luZm8tPnNpbmZvX2NvbnRleHQ7CiAJ
CXJjdmluZm8tPnJjdl9hc3NvY19pZCA9IHNpbmZvLT5zaW5mb19hc3NvY19pZDsKLSNpZiBkZWZp
bmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJCWNtaCA9
IChXU0FDTVNHSERSICopKChjYWRkcl90KWNtaCArIENNU0dfU1BBQ0Uoc2l6ZW9mKHN0cnVjdCBz
Y3RwX3JjdmluZm8pKSk7CiAjZWxzZQogCQljbWggPSAoc3RydWN0IGNtc2doZHIgKikoKGNhZGRy
X3QpY21oICsgQ01TR19TUEFDRShzaXplb2Yoc3RydWN0IHNjdHBfcmN2aW5mbykpKTsKQEAgLTI3
OCw3ICsyODEsNyBAQCBzY3RwX2J1aWxkX2N0bF9uY2h1bmsoc3RydWN0IHNjdHBfaW5wY2IgKmlu
cCwgc3RydWN0IHNjdHBfc25kcmN2aW5mbyAqc2luZm8pCiAJCW54dGluZm8tPm54dF9wcGlkID0g
c2VpbmZvLT5zZXJpbmZvX25leHRfcHBpZDsKIAkJbnh0aW5mby0+bnh0X2xlbmd0aCA9IHNlaW5m
by0+c2VyaW5mb19uZXh0X2xlbmd0aDsKIAkJbnh0aW5mby0+bnh0X2Fzc29jX2lkID0gc2VpbmZv
LT5zZXJpbmZvX25leHRfYWlkOwotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykK
KyNpZiBkZWZpbmVkKF9XSU4zMikKIAkJY21oID0gKFdTQUNNU0dIRFIgKikoKGNhZGRyX3QpY21o
ICsgQ01TR19TUEFDRShzaXplb2Yoc3RydWN0IHNjdHBfbnh0aW5mbykpKTsKICNlbHNlCiAJCWNt
aCA9IChzdHJ1Y3QgY21zZ2hkciAqKSgoY2FkZHJfdCljbWggKyBDTVNHX1NQQUNFKHNpemVvZihz
dHJ1Y3Qgc2N0cF9ueHRpbmZvKSkpOwpAQCAtNDQ3LDIyICs0NTAsMjIgQEAgc2N0cF9hYm9ydF9p
bl9yZWFzbShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJc3RydWN0IG1idWYgKm9wZXI7CiAKIAlp
ZiAoc3RjYi0+YXNvYy5pZGF0YV9zdXBwb3J0ZWQpIHsKLQkJc25wcmludGYobXNnLCBzaXplb2Yo
bXNnKSwKLQkJCSAiUmVhc3MgJXgsQ0Y6JXgsVFNOPSU4Ljh4LFNJRD0lNC40eCxGU049JTguOHgs
TUlEOiU4Ljh4IiwKLQkJCSBvcHNwb3QsCi0JCQkgY29udHJvbC0+ZnNuX2luY2x1ZGVkLAotCQkJ
IGNoay0+cmVjLmRhdGEudHNuLAotCQkJIGNoay0+cmVjLmRhdGEuc2lkLAotCQkJIGNoay0+cmVj
LmRhdGEuZnNuLCBjaGstPnJlYy5kYXRhLm1pZCk7CisJCVNDVFBfU05QUklOVEYobXNnLCBzaXpl
b2YobXNnKSwKKwkJICAgICAgICAgICAgICAiUmVhc3MgJXgsQ0Y6JXgsVFNOPSU4Ljh4LFNJRD0l
NC40eCxGU049JTguOHgsTUlEOiU4Ljh4IiwKKwkJICAgICAgICAgICAgICBvcHNwb3QsCisJCSAg
ICAgICAgICAgICAgY29udHJvbC0+ZnNuX2luY2x1ZGVkLAorCQkgICAgICAgICAgICAgIGNoay0+
cmVjLmRhdGEudHNuLAorCQkgICAgICAgICAgICAgIGNoay0+cmVjLmRhdGEuc2lkLAorCQkgICAg
ICAgICAgICAgIGNoay0+cmVjLmRhdGEuZnNuLCBjaGstPnJlYy5kYXRhLm1pZCk7CiAJfSBlbHNl
IHsKLQkJc25wcmludGYobXNnLCBzaXplb2YobXNnKSwKLQkJCSAiUmVhc3MgJXgsQ0k6JXgsVFNO
PSU4Ljh4LFNJRD0lNC40eCxGU049JTQuNHgsU1NOOiU0LjR4IiwKLQkJCSBvcHNwb3QsCi0JCQkg
Y29udHJvbC0+ZnNuX2luY2x1ZGVkLAotCQkJIGNoay0+cmVjLmRhdGEudHNuLAotCQkJIGNoay0+
cmVjLmRhdGEuc2lkLAotCQkJIGNoay0+cmVjLmRhdGEuZnNuLAotCQkJICh1aW50MTZfdCljaGst
PnJlYy5kYXRhLm1pZCk7CisJCVNDVFBfU05QUklOVEYobXNnLCBzaXplb2YobXNnKSwKKwkJICAg
ICAgICAgICAgICAiUmVhc3MgJXgsQ0k6JXgsVFNOPSU4Ljh4LFNJRD0lNC40eCxGU049JTQuNHgs
U1NOOiU0LjR4IiwKKwkJICAgICAgICAgICAgICBvcHNwb3QsCisJCSAgICAgICAgICAgICAgY29u
dHJvbC0+ZnNuX2luY2x1ZGVkLAorCQkgICAgICAgICAgICAgIGNoay0+cmVjLmRhdGEudHNuLAor
CQkgICAgICAgICAgICAgIGNoay0+cmVjLmRhdGEuc2lkLAorCQkgICAgICAgICAgICAgIGNoay0+
cmVjLmRhdGEuZnNuLAorCQkgICAgICAgICAgICAgICh1aW50MTZfdCljaGstPnJlYy5kYXRhLm1p
ZCk7CiAJfQogCW9wZXIgPSBzY3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBfQ0FVU0VfUFJPVE9DT0xf
VklPTEFUSU9OLCBtc2cpOwogCXNjdHBfbV9mcmVlbShjaGstPmRhdGEpOwpAQCAtNDc2LDcgKzQ3
OSw3IEBAIHNjdHBfYWJvcnRfaW5fcmVhc20oc3RydWN0IHNjdHBfdGNiICpzdGNiLAogc3RhdGlj
IHZvaWQKIHNjdHBfY2xlYW5fdXBfY29udHJvbChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVj
dCBzY3RwX3F1ZXVlZF90b19yZWFkICpjb250cm9sKQogewotCS8qIAorCS8qCiAJICogVGhlIGNv
bnRyb2wgY291bGQgbm90IGJlIHBsYWNlZCBhbmQgbXVzdCBiZSBjbGVhbmVkLgogCSAqLwogCXN0
cnVjdCBzY3RwX3RtaXRfY2h1bmsgKmNoaywgKm5jaGs7CkBAIC00ODcsNyArNDkwLDEyIEBAIHNj
dHBfY2xlYW5fdXBfY29udHJvbChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX3F1
ZXVlZF90b19yZWFkICpjb250cm9sCiAJCWNoay0+ZGF0YSA9IE5VTEw7CiAJCXNjdHBfZnJlZV9h
X2NodW5rKHN0Y2IsIGNoaywgU0NUUF9TT19OT1RfTE9DS0VEKTsKIAl9Ci0Jc2N0cF9mcmVlX2Ff
cmVhZHEoc3RjYiwgY29udHJvbCk7CQorCXNjdHBfZnJlZV9yZW1vdGVfYWRkcihjb250cm9sLT53
aG9Gcm9tKTsKKwlpZiAoY29udHJvbC0+ZGF0YSkgeworCQlzY3RwX21fZnJlZW0oY29udHJvbC0+
ZGF0YSk7CisJCWNvbnRyb2wtPmRhdGEgPSBOVUxMOworCX0KKwlzY3RwX2ZyZWVfYV9yZWFkcShz
dGNiLCBjb250cm9sKTsKIH0KIAogLyoKQEAgLTU0MCwxNSArNTQ4LDE1IEBAIHNjdHBfcXVldWVf
ZGF0YV90b19zdHJlYW0oc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkgKi8KIAkJVEFJTFFfSU5T
RVJUX0hFQUQoJnN0cm0tPmlucXVldWUsIGNvbnRyb2wsIG5leHRfaW5zdHJtKTsKIAkJaWYgKGFz
b2MtPmlkYXRhX3N1cHBvcnRlZCkgewotCQkJc25wcmludGYobXNnLCBzaXplb2YobXNnKSwgIkRl
bGl2ZXJlZCBNSUQ9JTguOHgsIGdvdCBUU049JTguOHgsIFNJRD0lNC40eCwgTUlEPSU4Ljh4IiwK
LQkJCSAgICAgICAgIHN0cm0tPmxhc3RfbWlkX2RlbGl2ZXJlZCwgY29udHJvbC0+c2luZm9fdHNu
LAotCQkJICAgICAgICAgY29udHJvbC0+c2luZm9fc3RyZWFtLCBjb250cm9sLT5taWQpOworCQkJ
U0NUUF9TTlBSSU5URihtc2csIHNpemVvZihtc2cpLCAiRGVsaXZlcmVkIE1JRD0lOC44eCwgZ290
IFRTTj0lOC44eCwgU0lEPSU0LjR4LCBNSUQ9JTguOHgiLAorCQkJICAgICAgICAgICAgICBzdHJt
LT5sYXN0X21pZF9kZWxpdmVyZWQsIGNvbnRyb2wtPnNpbmZvX3RzbiwKKwkJCSAgICAgICAgICAg
ICAgY29udHJvbC0+c2luZm9fc3RyZWFtLCBjb250cm9sLT5taWQpOwogCQl9IGVsc2UgewotCQkJ
c25wcmludGYobXNnLCBzaXplb2YobXNnKSwgIkRlbGl2ZXJlZCBTU049JTQuNHgsIGdvdCBUU049
JTguOHgsIFNJRD0lNC40eCwgU1NOPSU0LjR4IiwKLQkJCSAgICAgICAgICh1aW50MTZfdClzdHJt
LT5sYXN0X21pZF9kZWxpdmVyZWQsCi0JCQkgICAgICAgICBjb250cm9sLT5zaW5mb190c24sCi0J
CQkgICAgICAgICBjb250cm9sLT5zaW5mb19zdHJlYW0sCi0JCQkgICAgICAgICAodWludDE2X3Qp
Y29udHJvbC0+bWlkKTsKKwkJCVNDVFBfU05QUklOVEYobXNnLCBzaXplb2YobXNnKSwgIkRlbGl2
ZXJlZCBTU049JTQuNHgsIGdvdCBUU049JTguOHgsIFNJRD0lNC40eCwgU1NOPSU0LjR4IiwKKwkJ
CSAgICAgICAgICAgICAgKHVpbnQxNl90KXN0cm0tPmxhc3RfbWlkX2RlbGl2ZXJlZCwKKwkJCSAg
ICAgICAgICAgICAgY29udHJvbC0+c2luZm9fdHNuLAorCQkJICAgICAgICAgICAgICBjb250cm9s
LT5zaW5mb19zdHJlYW0sCisJCQkgICAgICAgICAgICAgICh1aW50MTZfdCljb250cm9sLT5taWQp
OwogCQl9CiAJCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9DQVVTRV9QUk9UT0NP
TF9WSU9MQVRJT04sIG1zZyk7CiAJCXN0Y2ItPnNjdHBfZXAtPmxhc3RfYWJvcnRfY29kZSA9IFND
VFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzI7CkBAIC01NjIsNyArNTcwLDcgQEAgc2N0
cF9xdWV1ZV9kYXRhX3RvX3N0cmVhbShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJc2N0cF91Y291
bnRfaW5jcihhc29jLT5jbnRfb25fYWxsX3N0cmVhbXMpOwogCW54dF90b2RlbCA9IHN0cm0tPmxh
c3RfbWlkX2RlbGl2ZXJlZCArIDE7CiAJaWYgKFNDVFBfTUlEX0VRKGFzb2MtPmlkYXRhX3N1cHBv
cnRlZCwgbnh0X3RvZGVsLCBjb250cm9sLT5taWQpKSB7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18p
IHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCXN0cnVjdCBzb2NrZXQgKnNvOwogCiAJCXNv
ID0gU0NUUF9JTlBfU08oc3RjYi0+c2N0cF9lcCk7CkBAIC02NDUsNyArNjUzLDcgQEAgc2N0cF9x
dWV1ZV9kYXRhX3RvX3N0cmVhbShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCQl9CiAJCQlicmVh
azsKIAkJfQotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19U
RVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDEpOwogI2VuZGlmCiAJfQpAQCAtNjU1LDkgKzY2
Myw4IEBAIHNjdHBfcXVldWVfZGF0YV90b19zdHJlYW0oc3RydWN0IHNjdHBfdGNiICpzdGNiLAog
CQkgKiB0byBwdXQgaXQgb24gdGhlIHF1ZXVlLgogCQkgKi8KIAkJaWYgKHNjdHBfcGxhY2VfY29u
dHJvbF9pbl9zdHJlYW0oc3RybSwgYXNvYywgY29udHJvbCkpIHsKLQkJCXNucHJpbnRmKG1zZywg
c2l6ZW9mKG1zZyksCi0JCQkJICJRdWV1ZSB0byBzdHIgTUlEOiAldSBkdXBsaWNhdGUiLAotCQkJ
CSBjb250cm9sLT5taWQpOworCQkJU0NUUF9TTlBSSU5URihtc2csIHNpemVvZihtc2cpLAorCQkJ
ICAgICAgICAgICAgICAiUXVldWUgdG8gc3RyIE1JRDogJXUgZHVwbGljYXRlIiwgY29udHJvbC0+
bWlkKTsKIAkJCXNjdHBfY2xlYW5fdXBfY29udHJvbChzdGNiLCBjb250cm9sKTsKIAkJCW9wX2Vy
ciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9DQVVTRV9QUk9UT0NPTF9WSU9MQVRJT04sIG1z
Zyk7CiAJCQlzdGNiLT5zY3RwX2VwLT5sYXN0X2Fib3J0X2NvZGUgPSBTQ1RQX0ZST01fU0NUUF9J
TkRBVEEgKyBTQ1RQX0xPQ18zOwpAQCAtNzI2LDYgKzczMyw3IEBAIHNjdHBfYWRkX3RvX3RhaWxf
cG9pbnRlcihzdHJ1Y3Qgc2N0cF9xdWV1ZWRfdG9fcmVhZCAqY29udHJvbCwgc3RydWN0IG1idWYg
Km0sIHVpCiAJfQogCWlmIChjb250cm9sLT50YWlsX21idWYgPT0gTlVMTCkgewogCQkvKiBUU05I
ICovCisJCXNjdHBfbV9mcmVlbShjb250cm9sLT5kYXRhKTsKIAkJY29udHJvbC0+ZGF0YSA9IG07
CiAJCXNjdHBfc2V0dXBfdGFpbF9wb2ludGVyKGNvbnRyb2wpOwogCQlyZXR1cm47CkBAIC03NjQs
NyArNzcyLDcgQEAgc2N0cF9hZGRfdG9fdGFpbF9wb2ludGVyKHN0cnVjdCBzY3RwX3F1ZXVlZF90
b19yZWFkICpjb250cm9sLCBzdHJ1Y3QgbWJ1ZiAqbSwgdWkKIAl9CiB9CiAKLXN0YXRpYyB2b2lk
IAorc3RhdGljIHZvaWQKIHNjdHBfYnVpbGRfcmVhZHFfZW50cnlfZnJvbV9jdGwoc3RydWN0IHNj
dHBfcXVldWVkX3RvX3JlYWQgKm5jLCBzdHJ1Y3Qgc2N0cF9xdWV1ZWRfdG9fcmVhZCAqY29udHJv
bCkKIHsKIAltZW1zZXQobmMsIDAsIHNpemVvZihzdHJ1Y3Qgc2N0cF9xdWV1ZWRfdG9fcmVhZCkp
OwpAQCAtNzg0LDE1ICs3OTIsMTYgQEAgc2N0cF9idWlsZF9yZWFkcV9lbnRyeV9mcm9tX2N0bChz
dHJ1Y3Qgc2N0cF9xdWV1ZWRfdG9fcmVhZCAqbmMsIHN0cnVjdCBzY3RwX3F1ZXUKIAlhdG9taWNf
YWRkX2ludCgmbmMtPndob0Zyb20tPnJlZl9jb3VudCwgMSk7CiAJbmMtPnN0Y2IgPSBjb250cm9s
LT5zdGNiOwogCW5jLT5wb3J0X2Zyb20gPSBjb250cm9sLT5wb3J0X2Zyb207CisJbmMtPmRvX25v
dF9yZWZfc3RjYiA9IGNvbnRyb2wtPmRvX25vdF9yZWZfc3RjYjsKIH0KIAotc3RhdGljIHZvaWQg
CitzdGF0aWMgdm9pZAogc2N0cF9yZXNldF9hX2NvbnRyb2woc3RydWN0IHNjdHBfcXVldWVkX3Rv
X3JlYWQgKmNvbnRyb2wsCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2N0cF9pbnBjYiAq
aW5wLCB1aW50MzJfdCB0c24pCiB7CiAJY29udHJvbC0+ZnNuX2luY2x1ZGVkID0gdHNuOwogCWlm
IChjb250cm9sLT5vbl9yZWFkX3EpIHsKLQkJLyogCisJCS8qCiAJCSAqIFdlIGhhdmUgdG8gcHVy
Z2UgaXQgZnJvbSB0aGVyZSwKIAkJICogaG9wZWZ1bGx5IHRoaXMgd2lsbCB3b3JrIDotKQogCQkg
Ki8KQEAgLTg0OCw3ICs4NTcsNyBAQCByZXN0YXJ0OgogCQkJaWYgKGNvbnRyb2wtPmVuZF9hZGRl
ZCkgewogCQkJCS8qIFdlIGFyZSBkb25lICovCiAJCQkJaWYgKCFUQUlMUV9FTVBUWSgmY29udHJv
bC0+cmVhc20pKSB7Ci0JCQkJCS8qIAorCQkJCQkvKgogCQkJCQkgKiBPayB3ZSBoYXZlIHRvIG1v
dmUgYW55dGhpbmcgbGVmdCBvbgogCQkJCQkgKiB0aGUgY29udHJvbCBxdWV1ZSB0byBhIG5ldyBj
b250cm9sLgogCQkJCQkgKi8KQEAgLTkyOCw2ICs5MzcsMTIgQEAgcmVzdGFydDoKIAkJCWJyZWFr
OwogCQl9CiAJfQorCWlmIChjbnRfYWRkZWQgJiYgc3RybS0+cGRfYXBpX3N0YXJ0ZWQpIHsKKyNp
ZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCXNjdHBfaW52b2tlX3JlY3ZfY2FsbGJhY2soc3Rj
Yi0+c2N0cF9lcCwgc3RjYiwgY29udHJvbCwgU0NUUF9SRUFEX0xPQ0tfTk9UX0hFTEQpOworI2Vu
ZGlmCisJCXNjdHBfd2FrZXVwX3RoZV9yZWFkX3NvY2tldChzdGNiLT5zY3RwX2VwLCBzdGNiLCBT
Q1RQX1NPX05PVF9MT0NLRUQpOworCX0KIAlpZiAoKGNvbnRyb2wtPmxlbmd0aCA+IHBkX3BvaW50
KSAmJiAoc3RybS0+cGRfYXBpX3N0YXJ0ZWQgPT0gMCkpIHsKIAkJc3RybS0+cGRfYXBpX3N0YXJ0
ZWQgPSAxOwogCQljb250cm9sLT5wZGFwaV9zdGFydGVkID0gMTsKQEAgLTk1OSw2ICs5NzQsMTYg
QEAgc2N0cF9pbmplY3Rfb2xkX3Vub3JkZXJlZF9kYXRhKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwK
IAkJU0NUUERCRyhTQ1RQX0RFQlVHX1hYWCwKIAkJCSJjaHVuayBpcyBhIGZpcnN0IGZzbjogJXUg
YmVjb21lcyBmc25faW5jbHVkZWRcbiIsCiAJCQljaGstPnJlYy5kYXRhLmZzbik7CisJCWF0ID0g
VEFJTFFfRklSU1QoJmNvbnRyb2wtPnJlYXNtKTsKKwkJaWYgKGF0ICYmIFNDVFBfVFNOX0dUKGNo
ay0+cmVjLmRhdGEuZnNuLCBhdC0+cmVjLmRhdGEuZnNuKSkgeworCQkJLyoKKwkJCSAqIFRoZSBm
aXJzdCBjaHVuayBpbiB0aGUgcmVhc3NlbWJseSBpcworCQkJICogYSBzbWFsbGVyIFRTTiB0aGFu
IHRoaXMgb25lLCBldmVuIHRob3VnaAorCQkJICogdGhpcyBoYXMgYSBmaXJzdCwgaXQgbXVzdCBi
ZSBmcm9tIGEgc3Vic2VxdWVudAorCQkJICogbXNnLgorCQkJICovCisJCQlnb3RvIHBsYWNlX2No
dW5rOworCQl9CiAJCWlmIChjb250cm9sLT5maXJzdF9mcmFnX3NlZW4pIHsKIAkJCS8qCiAJCQkg
KiBJbiBvbGQgdW4tb3JkZXJlZCB3ZSBjYW4gcmVhc3NlbWJseSBvbgpAQCAtOTc1LDcgKzEwMDAs
NyBAQCBzY3RwX2luamVjdF9vbGRfdW5vcmRlcmVkX2RhdGEoc3RydWN0IHNjdHBfdGNiICpzdGNi
LAogCQkJfQogCQkJaWYgKChjaGstPnJlYy5kYXRhLmZzbiA9PSBjb250cm9sLT5mc25faW5jbHVk
ZWQpIHx8CiAJCQkgICAgKGNvbnRyb2wtPnBkYXBpX3N0YXJ0ZWQpKSB7Ci0JCQkJLyogCisJCQkJ
LyoKIAkJCQkgKiBPayB0aGlzIHNob3VsZCBub3QgaGFwcGVuLCBpZiBpdCBkb2VzCiAJCQkJICog
d2Ugc3RhcnRlZCB0aGUgcGQtYXBpIG9uIHRoZSBoaWdoZXIgVFNOIChzaW5jZQogCQkJCSAqIHRo
ZSBlcXVhbHMgcGFydCBpcyBhIFRTTiBmYWlsdXJlIGl0IG11c3QgYmUgdGhhdCkuCkBAIC0xMDQ0
LDcgKzEwNjksNyBAQCBwbGFjZV9jaHVuazoKIAkJCVRBSUxRX0lOU0VSVF9CRUZPUkUoYXQsIGNo
aywgc2N0cF9uZXh0KTsKIAkJCWJyZWFrOwogCQl9IGVsc2UgaWYgKGF0LT5yZWMuZGF0YS5mc24g
PT0gY2hrLT5yZWMuZGF0YS5mc24pIHsKLQkJCS8qIAorCQkJLyoKIAkJCSAqIFRoZXkgc2VudCBh
IGR1cGxpY2F0ZSBmc24gbnVtYmVyLiBUaGlzCiAJCQkgKiByZWFsbHkgc2hvdWxkIG5vdCBoYXBw
ZW4gc2luY2UgdGhlIEZTTiBpcwogCQkJICogYSBUU04gYW5kIGl0IHNob3VsZCBoYXZlIGJlZW4g
ZHJvcHBlZCBlYXJsaWVyLgpAQCAtMTExNiw2ICsxMTQxLDE2IEBAIHNjdHBfZGVsaXZlcl9yZWFz
bV9jaGVjayhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICph
c29jLAogI2VuZGlmCiAJCQkJU0NUUF9TVEFUX0lOQ1JfQ09VTlRFUjY0KHNjdHBzX3JlYXNtdXNy
bXNncyk7CiAJCQkJVEFJTFFfUkVNT1ZFKCZzdHJtLT51bm9faW5xdWV1ZSwgY29udHJvbCwgbmV4
dF9pbnN0cm0pOworCQkJCWlmIChhc29jLT5zaXplX29uX2FsbF9zdHJlYW1zID49IGNvbnRyb2wt
Pmxlbmd0aCkgeworCQkJCQlhc29jLT5zaXplX29uX2FsbF9zdHJlYW1zIC09IGNvbnRyb2wtPmxl
bmd0aDsKKwkJCQl9IGVsc2UgeworI2lmZGVmIElOVkFSSUFOVFMKKwkJCQkJcGFuaWMoInNpemVf
b25fYWxsX3N0cmVhbXMgPSAldSBzbWFsbGVyIHRoYW4gY29udHJvbCBsZW5ndGggJXUiLCBhc29j
LT5zaXplX29uX2FsbF9zdHJlYW1zLCBjb250cm9sLT5sZW5ndGgpOworI2Vsc2UKKwkJCQkJYXNv
Yy0+c2l6ZV9vbl9hbGxfc3RyZWFtcyA9IDA7CisjZW5kaWYKKwkJCQl9CisJCQkJc2N0cF91Y291
bnRfZGVjcihhc29jLT5jbnRfb25fYWxsX3N0cmVhbXMpOwogCQkJCWNvbnRyb2wtPm9uX3N0cm1f
cSA9IDA7CiAJCQl9CiAJCQlpZiAoY29udHJvbC0+b25fcmVhZF9xID09IDApIHsKQEAgLTEzODQs
NyArMTQxOSw3IEBAIHNjdHBfcXVldWVfZGF0YV9mb3JfcmVhc20oc3RydWN0IHNjdHBfdGNiICpz
dGNiLCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKIAl9CiAJLyogTXVzdCBiZSBhZGRl
ZCB0byB0aGUgc3RyZWFtLWluIHF1ZXVlICovCiAJaWYgKGNyZWF0ZWRfY29udHJvbCkgewotCQlp
ZiAodW5vcmRlcmVkID09IDApIHsKKwkJaWYgKCh1bm9yZGVyZWQgPT0gMCkgfHwgKGFzb2MtPmlk
YXRhX3N1cHBvcnRlZCkpIHsKIAkJCXNjdHBfdWNvdW50X2luY3IoYXNvYy0+Y250X29uX2FsbF9z
dHJlYW1zKTsKIAkJfQogCQlpZiAoc2N0cF9wbGFjZV9jb250cm9sX2luX3N0cmVhbShzdHJtLCBh
c29jLCBjb250cm9sKSkgewpAQCAtMTQ2Myw5ICsxNDk4LDE5IEBAIHNjdHBfcXVldWVfZGF0YV9m
b3JfcmVhc20oc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAq
YXNvYywKIAkJCQkJIlRoZSBsYXN0IGZzbiBpcyBub3cgaW4gcGxhY2UgZnNuOiAldVxuIiwKIAkJ
CQkJY2hrLT5yZWMuZGF0YS5mc24pOwogCQkJCWNvbnRyb2wtPmxhc3RfZnJhZ19zZWVuID0gMTsK
KwkJCQlpZiAoU0NUUF9UU05fR1QoY29udHJvbC0+dG9wX2ZzbiwgY2hrLT5yZWMuZGF0YS5mc24p
KSB7CisJCQkJCVNDVFBEQkcoU0NUUF9ERUJVR19YWFgsCisJCQkJCQkiTmV3IGZzbjogJXUgaXMg
bm90IGF0IHRvcF9mc246ICV1IC0tIGFib3J0XG4iLAorCQkJCQkJY2hrLT5yZWMuZGF0YS5mc24s
CisJCQkJCQljb250cm9sLT50b3BfZnNuKTsKKwkJCQkJc2N0cF9hYm9ydF9pbl9yZWFzbShzdGNi
LCBjb250cm9sLCBjaGssCisJCQkJCQkJICAgIGFib3J0X2ZsYWcsCisJCQkJCQkJICAgIFNDVFBf
RlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzkpOworCQkJCQlyZXR1cm47CisJCQkJfQogCQkJ
fQogCQkJaWYgKGFzb2MtPmlkYXRhX3N1cHBvcnRlZCB8fCBjb250cm9sLT5maXJzdF9mcmFnX3Nl
ZW4pIHsKLQkJCQkvKiAKKwkJCQkvKgogCQkJCSAqIEZvciBJREFUQSB3ZSBhbHdheXMgY2hlY2sg
c2luY2Ugd2Uga25vdyB0aGF0CiAJCQkJICogdGhlIGZpcnN0IGZyYWdtZW50IGlzIDAuIEZvciBv
bGQgREFUQSB3ZSBoYXZlCiAJCQkJICogdG8gcmVjZWl2ZSB0aGUgZmlyc3QgYmVmb3JlIHdlIGtu
b3cgdGhlIGZpcnN0IEZTTgpAQCAtMTQ3NSw3ICsxNTIwLDcgQEAgc2N0cF9xdWV1ZV9kYXRhX2Zv
cl9yZWFzbShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICph
c29jLAogCQkJCQkvKiBXZSBoYXZlIGFscmVhZHkgZGVsaXZlcmVkIHVwIHRvIHRoaXMgc28gaXRz
IGEgZHVwICovCiAJCQkJCXNjdHBfYWJvcnRfaW5fcmVhc20oc3RjYiwgY29udHJvbCwgY2hrLAog
CQkJCQkJCSAgICBhYm9ydF9mbGFnLAotCQkJCQkJCSAgICBTQ1RQX0ZST01fU0NUUF9JTkRBVEEg
KyBTQ1RQX0xPQ185KTsKKwkJCQkJCQkgICAgU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9M
T0NfMTApOwogCQkJCQlyZXR1cm47CiAJCQkJfQogCQkJfQpAQCAtMTQ4NywxMSArMTUzMiwxMSBA
QCBzY3RwX3F1ZXVlX2RhdGFfZm9yX3JlYXNtKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0
IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiAJCQkJCWNoay0+cmVjLmRhdGEuZnNuLCBjb250cm9s
LT50b3BfZnNuKTsKIAkJCQlzY3RwX2Fib3J0X2luX3JlYXNtKHN0Y2IsIGNvbnRyb2wsCiAJCQkJ
CQkgICAgY2hrLCBhYm9ydF9mbGFnLAotCQkJCQkJICAgIFNDVFBfRlJPTV9TQ1RQX0lOREFUQSAr
IFNDVFBfTE9DXzEwKTsKKwkJCQkJCSAgICBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xP
Q18xMSk7CiAJCQkJcmV0dXJuOwogCQkJfQogCQkJaWYgKGFzb2MtPmlkYXRhX3N1cHBvcnRlZCB8
fCBjb250cm9sLT5maXJzdF9mcmFnX3NlZW4pIHsKLQkJCQkvKiAKKwkJCQkvKgogCQkJCSAqIEZv
ciBJREFUQSB3ZSBhbHdheXMgY2hlY2sgc2luY2Ugd2Uga25vdyB0aGF0CiAJCQkJICogdGhlIGZp
cnN0IGZyYWdtZW50IGlzIDAuIEZvciBvbGQgREFUQSB3ZSBoYXZlCiAJCQkJICogdG8gcmVjZWl2
ZSB0aGUgZmlyc3QgYmVmb3JlIHdlIGtub3cgdGhlIGZpcnN0IEZTTgpAQCAtMTUwNSw3ICsxNTUw
LDcgQEAgc2N0cF9xdWV1ZV9kYXRhX2Zvcl9yZWFzbShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0
cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAogCQkJCQkJY2hrLT5yZWMuZGF0YS5mc24sIGNv
bnRyb2wtPmZzbl9pbmNsdWRlZCk7CiAJCQkJCXNjdHBfYWJvcnRfaW5fcmVhc20oc3RjYiwgY29u
dHJvbCwgY2hrLAogCQkJCQkJCSAgICBhYm9ydF9mbGFnLAotCQkJCQkJCSAgICBTQ1RQX0ZST01f
U0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18xMSk7CisJCQkJCQkJICAgIFNDVFBfRlJPTV9TQ1RQX0lO
REFUQSArIFNDVFBfTE9DXzEyKTsKIAkJCQkJcmV0dXJuOwogCQkJCX0KIAkJCX0KQEAgLTE1MTcs
MTMgKzE1NjIsMTMgQEAgc2N0cF9xdWV1ZV9kYXRhX2Zvcl9yZWFzbShzdHJ1Y3Qgc2N0cF90Y2Ig
KnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAogCQkJCQljb250cm9sLT50b3Bf
ZnNuKTsKIAkJCQlzY3RwX2Fib3J0X2luX3JlYXNtKHN0Y2IsIGNvbnRyb2wsIGNoaywKIAkJCQkJ
CSAgICBhYm9ydF9mbGFnLAotCQkJCQkJICAgIFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBf
TE9DXzEyKTsKKwkJCQkJCSAgICBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18xMyk7
CiAJCQkJcmV0dXJuOwogCQkJfQogCQl9CiAJCS8qCiAJCSAqIElmIHdlIHJlYWNoIGhlcmUsIHdl
IG5lZWQgdG8gcGxhY2UgdGhlCi0JCSAqIG5ldyBjaHVuayBpbiB0aGUgcmVhc3NlbWJseSBmb3Ig
dGhpcyAKKwkJICogbmV3IGNodW5rIGluIHRoZSByZWFzc2VtYmx5IGZvciB0aGlzCiAJCSAqIGNv
bnRyb2wuCiAJCSAqLwogCQlTQ1RQREJHKFNDVFBfREVCVUdfWFhYLApAQCAtMTUzMSw2ICsxNTc2
LDE1IEBAIHNjdHBfcXVldWVfZGF0YV9mb3JfcmVhc20oc3RydWN0IHNjdHBfdGNiICpzdGNiLCBz
dHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKIAkJCWNoay0+cmVjLmRhdGEuZnNuKTsKIAkJ
VEFJTFFfRk9SRUFDSChhdCwgJmNvbnRyb2wtPnJlYXNtLCBzY3RwX25leHQpIHsKIAkJCWlmIChT
Q1RQX1RTTl9HVChhdC0+cmVjLmRhdGEuZnNuLCBjaGstPnJlYy5kYXRhLmZzbikpIHsKKwkJCQlp
ZiAoY2hrLT5yZWMuZGF0YS5yY3ZfZmxhZ3MgJiBTQ1RQX0RBVEFfTEFTVF9GUkFHKSB7CisJCQkJ
CS8qIExhc3Qgbm90IGF0IHRoZSBlbmQ/IGh1aD8gKi8KKwkJCQkJU0NUUERCRyhTQ1RQX0RFQlVH
X1hYWCwKKwkJCQkJICAgICAgICAiTGFzdCBmcmFnbWVudCBub3QgbGFzdCBpbiBsaXN0OiAtLSBh
Ym9ydFxuIik7CisJCQkJCXNjdHBfYWJvcnRfaW5fcmVhc20oc3RjYiwgY29udHJvbCwKKwkJCQkJ
ICAgICAgICAgICAgICAgICAgICBjaGssIGFib3J0X2ZsYWcsCisJCQkJCSAgICAgICAgICAgICAg
ICAgICAgU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMTQpOworCQkJCQlyZXR1cm47
CisJCQkJfQogCQkJCS8qCiAJCQkJICogVGhpcyBvbmUgaW4gcXVldWUgaXMgYmlnZ2VyIHRoYW4g
dGhlIG5ldyBvbmUsIGluc2VydAogCQkJCSAqIHRoZSBuZXcgb25lIGJlZm9yZSBhdC4KQEAgLTE1
NTcsNyArMTYxMSw3IEBAIHNjdHBfcXVldWVfZGF0YV9mb3JfcmVhc20oc3RydWN0IHNjdHBfdGNi
ICpzdGNiLCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKIAkJCQkJYXQtPnJlYy5kYXRh
LmZzbik7CiAJCQkJc2N0cF9hYm9ydF9pbl9yZWFzbShzdGNiLCBjb250cm9sLAogCQkJCQkJICAg
IGNoaywgYWJvcnRfZmxhZywKLQkJCQkJCSAgICBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQ
X0xPQ18xMyk7CisJCQkJCQkgICAgU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMTUp
OwogCQkJCXJldHVybjsKIAkJCX0KIAkJfQpAQCAtMTY2Miw2ICsxNzE2LDcgQEAgc2N0cF9wcm9j
ZXNzX2FfZGF0YV9jaHVuayhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29j
aWF0aW9uICphc29jLAogCQkJICBpbnQgKmJyZWFrX2ZsYWcsIGludCBsYXN0X2NodW5rLCB1aW50
OF90IGNoa190eXBlKQogewogCXN0cnVjdCBzY3RwX3RtaXRfY2h1bmsgKmNoayA9IE5VTEw7IC8q
IG1ha2UgZ2NjIGhhcHB5ICovCisJc3RydWN0IHNjdHBfc3RyZWFtX2luICpzdHJtOwogCXVpbnQz
Ml90IHRzbiwgZnNuLCBnYXAsIG1pZDsKIAlzdHJ1Y3QgbWJ1ZiAqZG1idWY7CiAJaW50IHRoZV9s
ZW47CkBAIC0xNzEzLDcgKzE3NjgsNyBAQCBzY3RwX3Byb2Nlc3NfYV9kYXRhX2NodW5rKHN0cnVj
dCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiAJCSAqIGVt
cHR5IGRhdGEgY2h1bmsuCiAJCSAqLwogCQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRlX25vX3VzZXJf
ZGF0YV9jYXVzZSh0c24pOwotCQlzdGNiLT5zY3RwX2VwLT5sYXN0X2Fib3J0X2NvZGUgPSBTQ1RQ
X0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18xNDsKKwkJc3RjYi0+c2N0cF9lcC0+bGFzdF9h
Ym9ydF9jb2RlID0gU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMTY7CiAJCXNjdHBf
YWJvcnRfYW5fYXNzb2NpYXRpb24oc3RjYi0+c2N0cF9lcCwgc3RjYiwgb3BfZXJyLCBTQ1RQX1NP
X05PVF9MT0NLRUQpOwogCQkqYWJvcnRfZmxhZyA9IDE7CiAJCXJldHVybiAoMCk7CkBAIC0xODMx
LDE0ICsxODg2LDEzIEBAIHNjdHBfcHJvY2Vzc19hX2RhdGFfY2h1bmsoc3RydWN0IHNjdHBfdGNi
ICpzdGNiLCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKIAlpZiAoKGNoa190eXBlID09
IFNDVFBfSURBVEEpICYmCiAJICAgICgoY2hrX2ZsYWdzICYgU0NUUF9EQVRBX0ZJUlNUX0ZSQUcp
ID09IDApICYmCiAJICAgIChmc24gPT0gMCkpIHsKLQkJLyogCi0JCSAqICBUaGUgZmlyc3QgKm11
c3QqIGJlIGZzbiAwLCBhbmQgb3RoZXIgCisJCS8qCisJCSAqICBUaGUgZmlyc3QgKm11c3QqIGJl
IGZzbiAwLCBhbmQgb3RoZXIKIAkJICogIChtaWRkbGUvZW5kKSBwaWVjZXMgY2FuICpub3QqIGJl
IGZzbiAwLgogCQkgKiBYWFg6IFRoaXMgY2FuIGhhcHBlbiBpbiBjYXNlIG9mIGEgd3JhcCBhcm91
bmQuCiAJCSAqICAgICAgSWdub3JlIGlzIGZvciBub3cuCiAJCSAqLwotCQlzbnByaW50Zihtc2cs
IHNpemVvZihtc2cpLCAiRlNOIHplcm8gZm9yIE1JRD0lOC44eCwgYnV0IGZsYWdzPSUyLjJ4IiwK
LQkJICAgICAgICAgbWlkLCBjaGtfZmxhZ3MpOworCQlTQ1RQX1NOUFJJTlRGKG1zZywgc2l6ZW9m
KG1zZyksICJGU04gemVybyBmb3IgTUlEPSU4Ljh4LCBidXQgZmxhZ3M9JTIuMngiLCBtaWQsIGNo
a19mbGFncyk7CiAJCWdvdG8gZXJyX291dDsKIAl9CiAJY29udHJvbCA9IHNjdHBfZmluZF9yZWFz
bV9lbnRyeSgmYXNvYy0+c3RybWluW3NpZF0sIG1pZCwgb3JkZXJlZCwgYXNvYy0+aWRhdGFfc3Vw
cG9ydGVkKTsKQEAgLTE4NDksMjQgKzE5MDMsMjYgQEAgc2N0cF9wcm9jZXNzX2FfZGF0YV9jaHVu
ayhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAog
CQlpZiAoY29udHJvbCAhPSBOVUxMKSB7CiAJCQkvKiBXZSBmb3VuZCBzb21ldGhpbmcsIGRvZXMg
aXQgYmVsb25nPyAqLwogCQkJaWYgKG9yZGVyZWQgJiYgKG1pZCAhPSBjb250cm9sLT5taWQpKSB7
Ci0JCQkJc25wcmludGYobXNnLCBzaXplb2YobXNnKSwgIlJlYXNzZW1ibHkgcHJvYmxlbSAoTUlE
PSU4Ljh4KSIsIG1pZCk7CisJCQkJU0NUUF9TTlBSSU5URihtc2csIHNpemVvZihtc2cpLCAiUmVh
c3NlbWJseSBwcm9ibGVtIChNSUQ9JTguOHgpIiwgbWlkKTsKIAkJCWVycl9vdXQ6CiAJCQkJb3Bf
ZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQX0NBVVNFX1BST1RPQ09MX1ZJT0xBVElPTiwg
bXNnKTsKLQkJCQlzdGNiLT5zY3RwX2VwLT5sYXN0X2Fib3J0X2NvZGUgPSBTQ1RQX0ZST01fU0NU
UF9JTkRBVEEgKyBTQ1RQX0xPQ18xNTsKKwkJCQlzdGNiLT5zY3RwX2VwLT5sYXN0X2Fib3J0X2Nv
ZGUgPSBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18xNzsKIAkJCQlzY3RwX2Fib3J0
X2FuX2Fzc29jaWF0aW9uKHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIG9wX2VyciwgU0NUUF9TT19OT1Rf
TE9DS0VEKTsKIAkJCQkqYWJvcnRfZmxhZyA9IDE7CiAJCQkJcmV0dXJuICgwKTsKIAkJCX0KIAkJ
CWlmIChvcmRlcmVkICYmICgoY29udHJvbC0+c2luZm9fZmxhZ3MgPj4gOCkgJiBTQ1RQX0RBVEFf
VU5PUkRFUkVEKSkgewogCQkJCS8qIFdlIGNhbid0IGhhdmUgYSBzd2l0Y2hlZCBvcmRlciB3aXRo
IGFuIHVub3JkZXJlZCBjaHVuayAqLwotCQkJCXNucHJpbnRmKG1zZywgc2l6ZW9mKG1zZyksICJB
bGwgZnJhZ21lbnRzIG9mIGEgdXNlciBtZXNzYWdlIG11c3QgYmUgb3JkZXJlZCBvciB1bm9yZGVy
ZWQgKFRTTj0lOC44eCkiLAotCQkJCQkgdHNuKTsKKwkJCQlTQ1RQX1NOUFJJTlRGKG1zZywgc2l6
ZW9mKG1zZyksCisJCQkJICAgICAgICAgICAgICAiQWxsIGZyYWdtZW50cyBvZiBhIHVzZXIgbWVz
c2FnZSBtdXN0IGJlIG9yZGVyZWQgb3IgdW5vcmRlcmVkIChUU049JTguOHgpIiwKKwkJCQkgICAg
ICAgICAgICAgIHRzbik7CiAJCQkJZ290byBlcnJfb3V0OwogCQkJfQogCQkJaWYgKCFvcmRlcmVk
ICYmICgoKGNvbnRyb2wtPnNpbmZvX2ZsYWdzID4+IDgpICYgU0NUUF9EQVRBX1VOT1JERVJFRCkg
PT0gMCkpIHsKIAkJCQkvKiBXZSBjYW4ndCBoYXZlIGEgc3dpdGNoZWQgdW5vcmRlcmVkIHdpdGgg
YSBvcmRlcmVkIGNodW5rICovCi0JCQkJc25wcmludGYobXNnLCBzaXplb2YobXNnKSwgIkFsbCBm
cmFnbWVudHMgb2YgYSB1c2VyIG1lc3NhZ2UgbXVzdCBiZSBvcmRlcmVkIG9yIHVub3JkZXJlZCAo
VFNOPSU4Ljh4KSIsCi0JCQkJCSB0c24pOworCQkJCVNDVFBfU05QUklOVEYobXNnLCBzaXplb2Yo
bXNnKSwKKwkJCQkgICAgICAgICAgICAgIkFsbCBmcmFnbWVudHMgb2YgYSB1c2VyIG1lc3NhZ2Ug
bXVzdCBiZSBvcmRlcmVkIG9yIHVub3JkZXJlZCAoVFNOPSU4Ljh4KSIsCisJCQkJICAgICAgICAg
ICAgIHRzbik7CiAJCQkJZ290byBlcnJfb3V0OwogCQkJfQogCQl9CkBAIC0xODgwLDEyICsxOTM2
LDE0IEBAIHNjdHBfcHJvY2Vzc19hX2RhdGFfY2h1bmsoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBz
dHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKIAkJCWlmIChvcmRlcmVkIHx8IGFzb2MtPmlk
YXRhX3N1cHBvcnRlZCkgewogCQkJCVNDVFBEQkcoU0NUUF9ERUJVR19YWFgsICJjaHVua19mbGFn
czogMHgleCBkdXAgZGV0ZWN0ZWQgb24gTUlEOiAldVxuIiwKIAkJCQkJY2hrX2ZsYWdzLCBtaWQp
OwotCQkJCXNucHJpbnRmKG1zZywgc2l6ZW9mKG1zZyksICJEdXBsaWNhdGUgTUlEPSU4Ljh4IGRl
dGVjdGVkLiIsIG1pZCk7CisJCQkJU0NUUF9TTlBSSU5URihtc2csIHNpemVvZihtc2cpLCAiRHVw
bGljYXRlIE1JRD0lOC44eCBkZXRlY3RlZC4iLCBtaWQpOwogCQkJCWdvdG8gZXJyX291dDsKIAkJ
CX0gZWxzZSB7CiAJCQkJaWYgKCh0c24gPT0gY29udHJvbC0+ZnNuX2luY2x1ZGVkICsgMSkgJiYK
IAkJCQkgICAgKGNvbnRyb2wtPmVuZF9hZGRlZCA9PSAwKSkgewotCQkJCQlzbnByaW50Zihtc2cs
IHNpemVvZihtc2cpLCAiSWxsZWdhbCBtZXNzYWdlIHNlcXVlbmNlLCBtaXNzaW5nIGVuZCBmb3Ig
TUlEOiAlOC44eCIsIGNvbnRyb2wtPmZzbl9pbmNsdWRlZCk7CisJCQkJCVNDVFBfU05QUklOVEYo
bXNnLCBzaXplb2YobXNnKSwKKwkJCQkJICAgICAgICAgICAgICAiSWxsZWdhbCBtZXNzYWdlIHNl
cXVlbmNlLCBtaXNzaW5nIGVuZCBmb3IgTUlEOiAlOC44eCIsCisJCQkJCSAgICAgICAgICAgICAg
Y29udHJvbC0+ZnNuX2luY2x1ZGVkKTsKIAkJCQkJZ290byBlcnJfb3V0OwogCQkJCX0gZWxzZSB7
CiAJCQkJCWNvbnRyb2wgPSBOVUxMOwpAQCAtMTkwNCw3ICsxOTYyLDcgQEAgc2N0cF9wcm9jZXNz
X2FfZGF0YV9jaHVuayhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0
aW9uICphc29jLAogCQkgKi8KIAkJaWYgKHN0Y2ItPnNjdHBfc29ja2V0LT5zb19yY3Yuc2JfY2Mp
IHsKIAkJCS8qIHNvbWUgdG8gcmVhZCwgd2FrZS11cCAqLwotI2lmIGRlZmluZWQoX19BUFBMRV9f
KSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJc3RydWN0IHNvY2tldCAqc287CiAKIAkJ
CXNvID0gU0NUUF9JTlBfU08oc3RjYi0+c2N0cF9lcCk7CkBAIC0xOTIwLDcgKzE5NzgsNyBAQCBz
Y3RwX3Byb2Nlc3NfYV9kYXRhX2NodW5rKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNj
dHBfYXNzb2NpYXRpb24gKmFzb2MsCiAJCQl9CiAjZW5kaWYKIAkJCXNjdHBfc29yd2FrZXVwKHN0
Y2ItPnNjdHBfZXAsIHN0Y2ItPnNjdHBfc29ja2V0KTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykg
fHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCVNDVFBfU09DS0VUX1VOTE9DSyhzbywgMSk7
CiAjZW5kaWYKIAkJfQpAQCAtMTk4MiwyMCArMjA0MCwyMCBAQCBzY3RwX3Byb2Nlc3NfYV9kYXRh
X2NodW5rKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFz
b2MsCiAJCQltaWQsIGFzb2MtPnN0cm1pbltzaWRdLmxhc3RfbWlkX2RlbGl2ZXJlZCk7CiAKIAkJ
aWYgKGFzb2MtPmlkYXRhX3N1cHBvcnRlZCkgewotCQkJc25wcmludGYobXNnLCBzaXplb2YobXNn
KSwgIkRlbGl2ZXJlZCBNSUQ9JTguOHgsIGdvdCBUU049JTguOHgsIFNJRD0lNC40eCwgTUlEPSU4
Ljh4IiwKLQkJCSAgICAgICAgIGFzb2MtPnN0cm1pbltzaWRdLmxhc3RfbWlkX2RlbGl2ZXJlZCwK
LQkJCSAgICAgICAgIHRzbiwKLQkJCSAgICAgICAgIHNpZCwKLQkJCSAgICAgICAgIG1pZCk7CisJ
CQlTQ1RQX1NOUFJJTlRGKG1zZywgc2l6ZW9mKG1zZyksICJEZWxpdmVyZWQgTUlEPSU4Ljh4LCBn
b3QgVFNOPSU4Ljh4LCBTSUQ9JTQuNHgsIE1JRD0lOC44eCIsCisJCQkgICAgICAgICAgICAgIGFz
b2MtPnN0cm1pbltzaWRdLmxhc3RfbWlkX2RlbGl2ZXJlZCwKKwkJCSAgICAgICAgICAgICAgdHNu
LAorCQkJICAgICAgICAgICAgICBzaWQsCisJCQkgICAgICAgICAgICAgIG1pZCk7CiAJCX0gZWxz
ZSB7Ci0JCQlzbnByaW50Zihtc2csIHNpemVvZihtc2cpLCAiRGVsaXZlcmVkIFNTTj0lNC40eCwg
Z290IFRTTj0lOC44eCwgU0lEPSU0LjR4LCBTU049JTQuNHgiLAotCQkJICAgICAgICAgKHVpbnQx
Nl90KWFzb2MtPnN0cm1pbltzaWRdLmxhc3RfbWlkX2RlbGl2ZXJlZCwKLQkJCSAgICAgICAgIHRz
biwKLQkJCSAgICAgICAgIHNpZCwKLQkJCSAgICAgICAgICh1aW50MTZfdCltaWQpOworCQkJU0NU
UF9TTlBSSU5URihtc2csIHNpemVvZihtc2cpLCAiRGVsaXZlcmVkIFNTTj0lNC40eCwgZ290IFRT
Tj0lOC44eCwgU0lEPSU0LjR4LCBTU049JTQuNHgiLAorCQkJICAgICAgICAgICAgICAodWludDE2
X3QpYXNvYy0+c3RybWluW3NpZF0ubGFzdF9taWRfZGVsaXZlcmVkLAorCQkJICAgICAgICAgICAg
ICB0c24sCisJCQkgICAgICAgICAgICAgIHNpZCwKKwkJCSAgICAgICAgICAgICAgKHVpbnQxNl90
KW1pZCk7CiAJCX0KIAkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQX0NBVVNFX1BS
T1RPQ09MX1ZJT0xBVElPTiwgbXNnKTsKLQkJc3RjYi0+c2N0cF9lcC0+bGFzdF9hYm9ydF9jb2Rl
ID0gU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMTY7CisJCXN0Y2ItPnNjdHBfZXAt
Pmxhc3RfYWJvcnRfY29kZSA9IFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzE4Owog
CQlzY3RwX2Fib3J0X2FuX2Fzc29jaWF0aW9uKHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIG9wX2Vyciwg
U0NUUF9TT19OT1RfTE9DS0VEKTsKIAkJKmFib3J0X2ZsYWcgPSAxOwogCQlyZXR1cm4gKDApOwpA
QCAtMjA3MiwxMCArMjEzMCwxMyBAQCBzY3RwX3Byb2Nlc3NfYV9kYXRhX2NodW5rKHN0cnVjdCBz
Y3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiAJCQlzdHJ1Y3Qg
bWJ1ZiAqbW07CiAKIAkJCWNvbnRyb2wtPmRhdGEgPSBkbWJ1ZjsKKwkJCWNvbnRyb2wtPnRhaWxf
bWJ1ZiA9IE5VTEw7CiAJCQlmb3IgKG1tID0gY29udHJvbC0+ZGF0YTsgbW07IG1tID0gbW0tPm1f
bmV4dCkgewogCQkJCWNvbnRyb2wtPmxlbmd0aCArPSBTQ1RQX0JVRl9MRU4obW0pOworCQkJCWlm
IChTQ1RQX0JVRl9ORVhUKG1tKSA9PSBOVUxMKSB7CisJCQkJCWNvbnRyb2wtPnRhaWxfbWJ1ZiA9
IG1tOworCQkJCX0KIAkJCX0KLQkJCWNvbnRyb2wtPnRhaWxfbWJ1ZiA9IE5VTEw7CiAJCQljb250
cm9sLT5lbmRfYWRkZWQgPSAxOwogCQkJY29udHJvbC0+bGFzdF9mcmFnX3NlZW4gPSAxOwogCQkJ
Y29udHJvbC0+Zmlyc3RfZnJhZ19zZWVuID0gMTsKQEAgLTIyOTQsMTIgKzIzNTUsMTMgQEAgZmlu
aXNoX2V4cHJlc3NfZGVsOgogCQkJLyogQWxsIGNhbiBiZSByZW1vdmVkICovCiAJCQlUQUlMUV9G
T1JFQUNIX1NBRkUoY29udHJvbCwgJmFzb2MtPnBlbmRpbmdfcmVwbHlfcXVldWUsIG5leHQsIG5j
b250cm9sKSB7CiAJCQkJVEFJTFFfUkVNT1ZFKCZhc29jLT5wZW5kaW5nX3JlcGx5X3F1ZXVlLCBj
b250cm9sLCBuZXh0KTsKKwkJCQlzdHJtID0gJmFzb2MtPnN0cm1pbltjb250cm9sLT5zaW5mb19z
dHJlYW1dOwogCQkJCXNjdHBfcXVldWVfZGF0YV90b19zdHJlYW0oc3RjYiwgYXNvYywgY29udHJv
bCwgYWJvcnRfZmxhZywgJm5lZWRfcmVhc21fY2hlY2spOwogCQkJCWlmICgqYWJvcnRfZmxhZykg
ewogCQkJCQlyZXR1cm4gKDApOwogCQkJCX0KIAkJCQlpZiAobmVlZF9yZWFzbV9jaGVjaykgewot
CQkJCQkodm9pZClzY3RwX2RlbGl2ZXJfcmVhc21fY2hlY2soc3RjYiwgYXNvYywgJmFzb2MtPnN0
cm1pbltjb250cm9sLT5zaW5mb19zdHJlYW1dLCBTQ1RQX1JFQURfTE9DS19OT1RfSEVMRCk7CisJ
CQkJCSh2b2lkKXNjdHBfZGVsaXZlcl9yZWFzbV9jaGVjayhzdGNiLCBhc29jLCBzdHJtLCBTQ1RQ
X1JFQURfTE9DS19OT1RfSEVMRCk7CiAJCQkJCW5lZWRfcmVhc21fY2hlY2sgPSAwOwogCQkJCX0K
IAkJCX0KQEAgLTIzMTQsMTIgKzIzNzYsMTMgQEAgZmluaXNoX2V4cHJlc3NfZGVsOgogCQkJCSAq
IGNvbnRyb2wtPnNpbmZvX3RzbiA+IGxpc3RlLT50c24KIAkJCQkgKi8KIAkJCQlUQUlMUV9SRU1P
VkUoJmFzb2MtPnBlbmRpbmdfcmVwbHlfcXVldWUsIGNvbnRyb2wsIG5leHQpOworCQkJCXN0cm0g
PSAmYXNvYy0+c3RybWluW2NvbnRyb2wtPnNpbmZvX3N0cmVhbV07CiAJCQkJc2N0cF9xdWV1ZV9k
YXRhX3RvX3N0cmVhbShzdGNiLCBhc29jLCBjb250cm9sLCBhYm9ydF9mbGFnLCAmbmVlZF9yZWFz
bV9jaGVjayk7CiAJCQkJaWYgKCphYm9ydF9mbGFnKSB7CiAJCQkJCXJldHVybiAoMCk7CiAJCQkJ
fQogCQkJCWlmIChuZWVkX3JlYXNtX2NoZWNrKSB7Ci0JCQkJCSh2b2lkKXNjdHBfZGVsaXZlcl9y
ZWFzbV9jaGVjayhzdGNiLCBhc29jLCAmYXNvYy0+c3RybWluW2NvbnRyb2wtPnNpbmZvX3N0cmVh
bV0sIFNDVFBfUkVBRF9MT0NLX05PVF9IRUxEKTsKKwkJCQkJKHZvaWQpc2N0cF9kZWxpdmVyX3Jl
YXNtX2NoZWNrKHN0Y2IsIGFzb2MsIHN0cm0sIFNDVFBfUkVBRF9MT0NLX05PVF9IRUxEKTsKIAkJ
CQkJbmVlZF9yZWFzbV9jaGVjayA9IDA7CiAJCQkJfQogCQkJfQpAQCAtMjU1NCw3ICsyNjE3LDcg
QEAgc2N0cF9zYWNrX2NoZWNrKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgaW50IHdhc19hX2dhcCkK
IAkgKiBOb3cgd2UgbmVlZCB0byBzZWUgaWYgd2UgbmVlZCB0byBxdWV1ZSBhIHNhY2sgb3IganVz
dCBzdGFydCB0aGUKIAkgKiB0aW1lciAoaWYgYWxsb3dlZCkuCiAJICovCi0JaWYgKFNDVFBfR0VU
X1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCkgeworCWlmIChTQ1RQX0dF
VF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpIHsKIAkJLyoKIAkJICog
T2sgc3BlY2lhbCBjYXNlLCBpbiBTSFVURE9XTi1TRU5UIGNhc2UuIGhlcmUgd2UKIAkJICogbWFr
ZXIgc3VyZSBTQUNLIHRpbWVyIGlzIG9mZiBhbmQgaW5zdGVhZCBzZW5kIGEKQEAgLTI1NjMsNyAr
MjYyNiw3IEBAIHNjdHBfc2Fja19jaGVjayhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIGludCB3YXNf
YV9nYXApCiAJCWlmIChTQ1RQX09TX1RJTUVSX1BFTkRJTkcoJnN0Y2ItPmFzb2MuZGFja190aW1l
ci50aW1lcikpIHsKIAkJCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfUkVDViwKIAkJ
CSAgICAgICAgICAgICAgICBzdGNiLT5zY3RwX2VwLCBzdGNiLCBOVUxMLAotCQkJICAgICAgICAg
ICAgICAgIFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzE3KTsKKwkJCSAgICAgICAg
ICAgICAgICBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18xOSk7CiAJCX0KIAkJc2N0
cF9zZW5kX3NodXRkb3duKHN0Y2IsCiAJCSAgICAgICAgICAgICAgICAgICAoKHN0Y2ItPmFzb2Mu
YWx0ZXJuYXRlKSA/IHN0Y2ItPmFzb2MuYWx0ZXJuYXRlIDogc3RjYi0+YXNvYy5wcmltYXJ5X2Rl
c3RpbmF0aW9uKSk7CkBAIC0yNjE0LDcgKzI2NzcsOCBAQCBzY3RwX3NhY2tfY2hlY2soc3RydWN0
IHNjdHBfdGNiICpzdGNiLCBpbnQgd2FzX2FfZ2FwKQogCQkJCSAqIGZpcnN0IHBhY2tldCBPUiB0
aGVyZSBhcmUgZ2FwcyBvcgogCQkJCSAqIGR1cGxpY2F0ZXMuCiAJCQkJICovCi0JCQkJKHZvaWQp
U0NUUF9PU19USU1FUl9TVE9QKCZzdGNiLT5hc29jLmRhY2tfdGltZXIudGltZXIpOworCQkJCXNj
dHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfUkVDViwgc3RjYi0+c2N0cF9lcCwgc3RjYiwg
TlVMTCwKKwkJCQkgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9M
T0NfMjApOwogCQkJCXNjdHBfc2VuZF9zYWNrKHN0Y2IsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CiAJ
CQl9CiAJCX0gZWxzZSB7CkBAIC0yNjYwLDE0ICsyNzI0LDEyIEBAIHNjdHBfcHJvY2Vzc19kYXRh
KHN0cnVjdCBtYnVmICoqbW0sIGludCBpcGhsZW4sIGludCAqb2Zmc2V0LCBpbnQgbGVuZ3RoLAog
CSAqLwogCWFzb2MtPmxhc3RfZGF0YV9jaHVua19mcm9tID0gbmV0OwogCi0jaWZuZGVmIF9fUGFu
ZGFfXwogCS8qLQogCSAqIE5vdyBiZWZvcmUgd2UgcHJvY2VlZCB3ZSBtdXN0IGZpZ3VyZSBvdXQg
aWYgdGhpcyBpcyBhIHdhc3RlZAogCSAqIGNsdXN0ZXIuLi4gaS5lLiBpdCBpcyBhIHNtYWxsIHBh
Y2tldCBzZW50IGluIGFuZCB5ZXQgdGhlIGRyaXZlcgogCSAqIHVuZGVybmVhdGggYWxsb2NhdGVk
IGEgZnVsbCBjbHVzdGVyIGZvciBpdC4gSWYgc28gd2UgbXVzdCBjb3B5IGl0CiAJICogdG8gYSBz
bWFsbGVyIG1idWYgYW5kIGZyZWUgdXAgdGhlIGNsdXN0ZXIgbWJ1Zi4gVGhpcyB3aWxsIGhlbHAK
LQkgKiB3aXRoIGNsdXN0ZXIgc3RhcnZhdGlvbi4gTm90ZSBmb3IgX19QYW5kYV9fIHdlIGRvbid0
IGRvIHRoaXMKLQkgKiBzaW5jZSBpdCBoYXMgY2x1c3RlcnMgYWxsIHRoZSB3YXkgZG93biB0byA2
NCBieXRlcy4KKwkgKiB3aXRoIGNsdXN0ZXIgc3RhcnZhdGlvbi4KIAkgKi8KIAlpZiAoU0NUUF9C
VUZfTEVOKG0pIDwgKGxvbmcpTUxFTiAmJiBTQ1RQX0JVRl9ORVhUKG0pID09IE5VTEwpIHsKIAkJ
Lyogd2Ugb25seSBoYW5kbGUgbWJ1ZnMgdGhhdCBhcmUgc2luZ2xldG9ucy4uIG5vdCBjaGFpbnMg
Ki8KQEAgLTI2ODksNyArMjc1MSw2IEBAIHNjdHBfcHJvY2Vzc19kYXRhKHN0cnVjdCBtYnVmICoq
bW0sIGludCBpcGhsZW4sIGludCAqb2Zmc2V0LCBpbnQgbGVuZ3RoLAogCQkJbSA9ICptbTsKIAkJ
fQogCX0KLSNlbmRpZgogCS8qIGdldCBwb2ludGVyIHRvIHRoZSBmaXJzdCBjaHVuayBoZWFkZXIg
Ki8KIAljaCA9IChzdHJ1Y3Qgc2N0cF9jaHVua2hkciAqKXNjdHBfbV9nZXRwdHIobSwgKm9mZnNl
dCwKIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0
cnVjdCBzY3RwX2NodW5raGRyKSwKQEAgLTI3MTYsOSArMjc3Nyw5IEBAIHNjdHBfcHJvY2Vzc19k
YXRhKHN0cnVjdCBtYnVmICoqbW0sIGludCBpcGhsZW4sIGludCAqb2Zmc2V0LCBpbnQgbGVuZ3Ro
LAogCQkJc3RydWN0IG1idWYgKm9wX2VycjsKIAkJCWNoYXIgbXNnW1NDVFBfRElBR19JTkZPX0xF
Tl07CiAKLQkJCXNucHJpbnRmKG1zZywgc2l6ZW9mKG1zZyksICIlcyIsICJJLURBVEEgY2h1bmsg
cmVjZWl2ZWQgd2hlbiBEQVRBIHdhcyBuZWdvdGlhdGVkIik7CisJCQlTQ1RQX1NOUFJJTlRGKG1z
Zywgc2l6ZW9mKG1zZyksICIlcyIsICJEQVRBIGNodW5rIHJlY2VpdmVkIHdoZW4gSS1EQVRBIHdh
cyBuZWdvdGlhdGVkIik7CiAJCQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBfQ0FV
U0VfUFJPVE9DT0xfVklPTEFUSU9OLCBtc2cpOwotCQkJc3RjYi0+c2N0cF9lcC0+bGFzdF9hYm9y
dF9jb2RlID0gU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMTg7CisJCQlzdGNiLT5z
Y3RwX2VwLT5sYXN0X2Fib3J0X2NvZGUgPSBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xP
Q18yMTsKIAkJCXNjdHBfYWJvcnRfYW5fYXNzb2NpYXRpb24oaW5wLCBzdGNiLCBvcF9lcnIsIFND
VFBfU09fTk9UX0xPQ0tFRCk7CiAJCQlyZXR1cm4gKDIpOwogCQl9CkBAIC0yNzI3LDkgKzI3ODgs
OSBAQCBzY3RwX3Byb2Nlc3NfZGF0YShzdHJ1Y3QgbWJ1ZiAqKm1tLCBpbnQgaXBobGVuLCBpbnQg
Km9mZnNldCwgaW50IGxlbmd0aCwKIAkJCXN0cnVjdCBtYnVmICpvcF9lcnI7CiAJCQljaGFyIG1z
Z1tTQ1RQX0RJQUdfSU5GT19MRU5dOwogCi0JCQlzbnByaW50Zihtc2csIHNpemVvZihtc2cpLCAi
JXMiLCAiREFUQSBjaHVuayByZWNlaXZlZCB3aGVuIEktREFUQSB3YXMgbmVnb3RpYXRlZCIpOwor
CQkJU0NUUF9TTlBSSU5URihtc2csIHNpemVvZihtc2cpLCAiJXMiLCAiSS1EQVRBIGNodW5rIHJl
Y2VpdmVkIHdoZW4gREFUQSB3YXMgbmVnb3RpYXRlZCIpOwogCQkJb3BfZXJyID0gc2N0cF9nZW5l
cmF0ZV9jYXVzZShTQ1RQX0NBVVNFX1BST1RPQ09MX1ZJT0xBVElPTiwgbXNnKTsKLQkJCXN0Y2It
PnNjdHBfZXAtPmxhc3RfYWJvcnRfY29kZSA9IFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBf
TE9DXzE5OworCQkJc3RjYi0+c2N0cF9lcC0+bGFzdF9hYm9ydF9jb2RlID0gU0NUUF9GUk9NX1ND
VFBfSU5EQVRBICsgU0NUUF9MT0NfMjI7CiAJCQlzY3RwX2Fib3J0X2FuX2Fzc29jaWF0aW9uKGlu
cCwgc3RjYiwgb3BfZXJyLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwogCQkJcmV0dXJuICgyKTsKIAkJ
fQpAQCAtMjc1MCwxMSArMjgxMSwxMSBAQCBzY3RwX3Byb2Nlc3NfZGF0YShzdHJ1Y3QgbWJ1ZiAq
Km1tLCBpbnQgaXBobGVuLCBpbnQgKm9mZnNldCwgaW50IGxlbmd0aCwKIAkJCQlzdHJ1Y3QgbWJ1
ZiAqb3BfZXJyOwogCQkJCWNoYXIgbXNnW1NDVFBfRElBR19JTkZPX0xFTl07CiAKLQkJCQlzbnBy
aW50Zihtc2csIHNpemVvZihtc2cpLCAiJXMgY2h1bmsgb2YgbGVuZ3RoICV1IiwKLQkJCQkgICAg
ICAgICBjaC0+Y2h1bmtfdHlwZSA9PSBTQ1RQX0RBVEEgPyAiREFUQSIgOiAiSS1EQVRBIiwKLQkJ
CQkgICAgICAgICBjaGtfbGVuZ3RoKTsKKwkJCQlTQ1RQX1NOUFJJTlRGKG1zZywgc2l6ZW9mKG1z
ZyksICIlcyBjaHVuayBvZiBsZW5ndGggJXUiLAorCQkJCSAgICAgICAgICAgICAgY2gtPmNodW5r
X3R5cGUgPT0gU0NUUF9EQVRBID8gIkRBVEEiIDogIkktREFUQSIsCisJCQkJICAgICAgICAgICAg
ICBjaGtfbGVuZ3RoKTsKIAkJCQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBfQ0FV
U0VfUFJPVE9DT0xfVklPTEFUSU9OLCBtc2cpOwotCQkJCXN0Y2ItPnNjdHBfZXAtPmxhc3RfYWJv
cnRfY29kZSA9IFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzIwOworCQkJCXN0Y2It
PnNjdHBfZXAtPmxhc3RfYWJvcnRfY29kZSA9IFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBf
TE9DXzIzOwogCQkJCXNjdHBfYWJvcnRfYW5fYXNzb2NpYXRpb24oaW5wLCBzdGNiLCBvcF9lcnIs
IFNDVFBfU09fTk9UX0xPQ0tFRCk7CiAJCQkJcmV0dXJuICgyKTsKIAkJCX0KQEAgLTI3NjYsNyAr
MjgyNyw3IEBAIHNjdHBfcHJvY2Vzc19kYXRhKHN0cnVjdCBtYnVmICoqbW0sIGludCBpcGhsZW4s
IGludCAqb2Zmc2V0LCBpbnQgbGVuZ3RoLAogCQkJfSBlbHNlIHsKIAkJCQlsYXN0X2NodW5rID0g
MDsKIAkJCX0KLQkJCWlmIChzY3RwX3Byb2Nlc3NfYV9kYXRhX2NodW5rKHN0Y2IsIGFzb2MsIG1t
LCAqb2Zmc2V0LCAKKwkJCWlmIChzY3RwX3Byb2Nlc3NfYV9kYXRhX2NodW5rKHN0Y2IsIGFzb2Ms
IG1tLCAqb2Zmc2V0LAogCQkJCQkJICAgICAgY2hrX2xlbmd0aCwgbmV0LCBoaWdoX3RzbiwgJmFi
b3J0X2ZsYWcsICZicmVha19mbGFnLAogCQkJCQkJICAgICAgbGFzdF9jaHVuaywgY2gtPmNodW5r
X3R5cGUpKSB7CiAJCQkJbnVtX2NodW5rcysrOwpAQCAtMjgxOSw4ICsyODgwLDggQEAgc2N0cF9w
cm9jZXNzX2RhdGEoc3RydWN0IG1idWYgKiptbSwgaW50IGlwaGxlbiwgaW50ICpvZmZzZXQsIGlu
dCBsZW5ndGgsCiAJCQkJc3RydWN0IG1idWYgKm9wX2VycjsKIAkJCQljaGFyIG1zZ1tTQ1RQX0RJ
QUdfSU5GT19MRU5dOwogCi0JCQkJc25wcmludGYobXNnLCBzaXplb2YobXNnKSwgIkRBVEEgY2h1
bmsgZm9sbG93ZWQgYnkgY2h1bmsgb2YgdHlwZSAlMi4yeCIsCi0JCQkJICAgICAgICAgY2gtPmNo
dW5rX3R5cGUpOworCQkJCVNDVFBfU05QUklOVEYobXNnLCBzaXplb2YobXNnKSwgIkRBVEEgY2h1
bmsgZm9sbG93ZWQgYnkgY2h1bmsgb2YgdHlwZSAlMi4yeCIsCisJCQkJICAgICAgICAgICAgICBj
aC0+Y2h1bmtfdHlwZSk7CiAJCQkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQX0NB
VVNFX1BST1RPQ09MX1ZJT0xBVElPTiwgbXNnKTsKIAkJCQlzY3RwX2Fib3J0X2FuX2Fzc29jaWF0
aW9uKGlucCwgc3RjYiwgb3BfZXJyLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwogCQkJCXJldHVybiAo
Mik7CkBAIC0yODM4LDEwICsyODk5LDkgQEAgc2N0cF9wcm9jZXNzX2RhdGEoc3RydWN0IG1idWYg
KiptbSwgaW50IGlwaGxlbiwgaW50ICpvZmZzZXQsIGludCBsZW5ndGgsCiAJCQkJCXN0cnVjdCBt
YnVmICpvcF9lcnI7CiAJCQkJCWNoYXIgbXNnW1NDVFBfRElBR19JTkZPX0xFTl07CiAKLQkJCQkJ
c25wcmludGYobXNnLCBzaXplb2YobXNnKSwgIkNodW5rIG9mIGxlbmd0aCAldSIsCi0JCQkJCQkg
Y2hrX2xlbmd0aCk7CisJCQkJCVNDVFBfU05QUklOVEYobXNnLCBzaXplb2YobXNnKSwgIkNodW5r
IG9mIGxlbmd0aCAldSIsIGNoa19sZW5ndGgpOwogCQkJCQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRl
X2NhdXNlKFNDVFBfQ0FVU0VfUFJPVE9DT0xfVklPTEFUSU9OLCBtc2cpOwotCQkJCQlzdGNiLT5z
Y3RwX2VwLT5sYXN0X2Fib3J0X2NvZGUgPSBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xP
Q18yMDsKKwkJCQkJc3RjYi0+c2N0cF9lcC0+bGFzdF9hYm9ydF9jb2RlID0gU0NUUF9GUk9NX1ND
VFBfSU5EQVRBICsgU0NUUF9MT0NfMjQ7CiAJCQkJCXNjdHBfYWJvcnRfYW5fYXNzb2NpYXRpb24o
aW5wLCBzdGNiLCBvcF9lcnIsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CiAJCQkJCXJldHVybiAoMik7
CiAJCQkJfQpAQCAtMjkxMSw3ICsyOTcxLDcgQEAgc2N0cF9wcm9jZXNzX2RhdGEoc3RydWN0IG1i
dWYgKiptbSwgaW50IGlwaGxlbiwgaW50ICpvZmZzZXQsIGludCBsZW5ndGgsCiAJCSh2b2lkKVND
VFBfR0VUVElNRV9USU1FVkFMKCZzdGNiLT5hc29jLnRpbWVfbGFzdF9yY3ZkKTsKIAl9CiAJLyog
bm93IHNlcnZpY2UgYWxsIG9mIHRoZSByZWFzc20gcXVldWUgaWYgbmVlZGVkICovCi0JaWYgKFND
VFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCkgeworCWlmIChT
Q1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpIHsKIAkJLyog
QXNzdXJlIHRoYXQgd2UgYWNrIHJpZ2h0IGF3YXkgKi8KIAkJc3RjYi0+YXNvYy5zZW5kX3NhY2sg
PSAxOwogCX0KQEAgLTMwNTksNyArMzExOSw3IEBAIHNjdHBfcHJvY2Vzc19zZWdtZW50X3Jhbmdl
KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfdG1pdF9jaHVuayAqKnBfdHAxCiAJ
CQkJCQl0cDEtPndob1RvLT5uZXRfYWNrICs9IHRwMS0+c2VuZF9zaXplOwogCQkJCQkJaWYgKHRw
MS0+c25kX2NvdW50IDwgMikgewogCQkJCQkJCS8qLQotCQkJCQkJCSAqIFRydWUgbm9uLXJldHJh
bnNtaXRlZCBjaHVuaworCQkJCQkJCSAqIFRydWUgbm9uLXJldHJhbnNtaXR0ZWQgY2h1bmsKIAkJ
CQkJCQkgKi8KIAkJCQkJCQl0cDEtPndob1RvLT5uZXRfYWNrMiArPSB0cDEtPnNlbmRfc2l6ZTsK
IApAQCAtMzA2NywxMyArMzEyNywxMiBAQCBzY3RwX3Byb2Nlc3Nfc2VnbWVudF9yYW5nZShzdHJ1
Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX3RtaXRfY2h1bmsgKipwX3RwMQogCQkJCQkJ
CSAqIHVwZGF0ZSBSVE8gdG9vID8KIAkJCQkJCQkgKi8KIAkJCQkJCQlpZiAodHAxLT5kb19ydHQp
IHsKLQkJCQkJCQkJaWYgKCpydG9fb2spIHsKLQkJCQkJCQkJCXRwMS0+d2hvVG8tPlJUTyA9Ci0J
CQkJCQkJCQkJc2N0cF9jYWxjdWxhdGVfcnRvKHN0Y2IsCi0JCQkJCQkJCQkJCQkgICAmc3RjYi0+
YXNvYywKLQkJCQkJCQkJCQkJCSAgIHRwMS0+d2hvVG8sCi0JCQkJCQkJCQkJCQkgICAmdHAxLT5z
ZW50X3Jjdl90aW1lLAotCQkJCQkJCQkJCQkJICAgU0NUUF9SVFRfRlJPTV9EQVRBKTsKKwkJCQkJ
CQkJaWYgKCpydG9fb2sgJiYKKwkJCQkJCQkJICAgIHNjdHBfY2FsY3VsYXRlX3J0byhzdGNiLAor
CQkJCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICZzdGNiLT5hc29jLAorCQkJCQkJCQkgICAg
ICAgICAgICAgICAgICAgICAgIHRwMS0+d2hvVG8sCisJCQkJCQkJCSAgICAgICAgICAgICAgICAg
ICAgICAgJnRwMS0+c2VudF9yY3ZfdGltZSwKKwkJCQkJCQkJICAgICAgICAgICAgICAgICAgICAg
ICBTQ1RQX1JUVF9GUk9NX0RBVEEpKSB7CiAJCQkJCQkJCQkqcnRvX29rID0gMDsKIAkJCQkJCQkJ
fQogCQkJCQkJCQlpZiAodHAxLT53aG9Uby0+cnRvX25lZWRlZCA9PSAwKSB7CkBAIC0zMzM0LDcg
KzMzOTMsNyBAQCBzY3RwX3N0cmlrZV9nYXBfYWNrX2NodW5rcyhzdHJ1Y3Qgc2N0cF90Y2IgKnN0
Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAogCQlpZiAoc3RjYi0+YXNvYy5wcnNj
dHBfc3VwcG9ydGVkKSB7CiAJCQlpZiAoKFBSX1NDVFBfVFRMX0VOQUJMRUQodHAxLT5mbGFncykp
ICYmIHRwMS0+c2VudCA8IFNDVFBfREFUQUdSQU1fQUNLRUQpIHsKIAkJCQkvKiBJcyBpdCBleHBp
cmVkPyAqLwotI2lmbmRlZiBfX0ZyZWVCU0RfXworI2lmICEoZGVmaW5lZChfX0ZyZWVCU0RfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAJCQkJaWYgKHRpbWVyY21wKCZub3csICZ0cDEt
PnJlYy5kYXRhLnRpbWV0b2Ryb3AsID4pKSB7CiAjZWxzZQogCQkJCWlmICh0aW1ldmFsY21wKCZu
b3csICZ0cDEtPnJlYy5kYXRhLnRpbWV0b2Ryb3AsID4pKSB7CkBAIC0zNzYyLDcgKzM4MjEsNyBA
QCBzY3RwX3RyeV9hZHZhbmNlX3BlZXJfYWNrX3BvaW50KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwK
IAkJCSAqIE5vdyBpcyB0aGlzIG9uZSBtYXJrZWQgZm9yIHJlc2VuZCBhbmQgaXRzIHRpbWUgaXMK
IAkJCSAqIG5vdyB1cD8KIAkJCSAqLwotI2lmbmRlZiBfX0ZyZWVCU0RfXworI2lmICEoZGVmaW5l
ZChfX0ZyZWVCU0RfXykgICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pKQogCQkJaWYgKHRpbWVy
Y21wKCZub3csICZ0cDEtPnJlYy5kYXRhLnRpbWV0b2Ryb3AsID4pKSB7CiAjZWxzZQogCQkJaWYg
KHRpbWV2YWxjbXAoJm5vdywgJnRwMS0+cmVjLmRhdGEudGltZXRvZHJvcCwgPikpIHsKQEAgLTM5
NzEsMTAgKzQwMzAsMTEgQEAgc2N0cF9leHByZXNzX2hhbmRsZV9zYWNrKHN0cnVjdCBzY3RwX3Rj
YiAqc3RjYiwgdWludDMyX3QgY3VtYWNrLAogCiAJCSphYm9ydF9ub3cgPSAxOwogCQkvKiBYWFgg
Ki8KLQkJc25wcmludGYobXNnLCBzaXplb2YobXNnKSwgIkN1bSBhY2sgJTguOHggZ3JlYXRlciBv
ciBlcXVhbCB0aGFuIFRTTiAlOC44eCIsCi0JCQkgY3VtYWNrLCBzZW5kX3MpOworCQlTQ1RQX1NO
UFJJTlRGKG1zZywgc2l6ZW9mKG1zZyksCisJCSAgICAgICAgICAgICAgIkN1bSBhY2sgJTguOHgg
Z3JlYXRlciBvciBlcXVhbCB0aGFuIFRTTiAlOC44eCIsCisJCSAgICAgICAgICAgICAgY3VtYWNr
LCBzZW5kX3MpOwogCQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBfQ0FVU0VfUFJP
VE9DT0xfVklPTEFUSU9OLCBtc2cpOwotCQlzdGNiLT5zY3RwX2VwLT5sYXN0X2Fib3J0X2NvZGUg
PSBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18yMTsKKwkJc3RjYi0+c2N0cF9lcC0+
bGFzdF9hYm9ydF9jb2RlID0gU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMjU7CiAJ
CXNjdHBfYWJvcnRfYW5fYXNzb2NpYXRpb24oc3RjYi0+c2N0cF9lcCwgc3RjYiwgb3BfZXJyLCBT
Q1RQX1NPX05PVF9MT0NLRUQpOwogCQlyZXR1cm47CiAJfQpAQCAtNDAxOSw3ICs0MDc5LDcgQEAg
c2N0cF9leHByZXNzX2hhbmRsZV9zYWNrKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgdWludDMyX3Qg
Y3VtYWNrLAogCQkJCQl0cDEtPndob1RvLT5uZXRfYWNrICs9IHRwMS0+c2VuZF9zaXplOwogCQkJ
CQlpZiAodHAxLT5zbmRfY291bnQgPCAyKSB7CiAJCQkJCQkvKgotCQkJCQkJICogVHJ1ZSBub24t
cmV0cmFuc21pdGVkCisJCQkJCQkgKiBUcnVlIG5vbi1yZXRyYW5zbWl0dGVkCiAJCQkJCQkgKiBj
aHVuawogCQkJCQkJICovCiAJCQkJCQl0cDEtPndob1RvLT5uZXRfYWNrMiArPQpAQCAtNDAyNywx
NiArNDA4NywxMiBAQCBzY3RwX2V4cHJlc3NfaGFuZGxlX3NhY2soc3RydWN0IHNjdHBfdGNiICpz
dGNiLCB1aW50MzJfdCBjdW1hY2ssCiAKIAkJCQkJCS8qIHVwZGF0ZSBSVE8gdG9vPyAqLwogCQkJ
CQkJaWYgKHRwMS0+ZG9fcnR0KSB7Ci0JCQkJCQkJaWYgKHJ0b19vaykgewotCQkJCQkJCQl0cDEt
Pndob1RvLT5SVE8gPQotCQkJCQkJCQkJLyoKLQkJCQkJCQkJCSAqIHNhX2lnbm9yZQotCQkJCQkJ
CQkJICogTk9fTlVMTF9DSEsKLQkJCQkJCQkJCSAqLwotCQkJCQkJCQkJc2N0cF9jYWxjdWxhdGVf
cnRvKHN0Y2IsCi0JCQkJCQkJCQkJCSAgIGFzb2MsIHRwMS0+d2hvVG8sCi0JCQkJCQkJCQkJCSAg
ICZ0cDEtPnNlbnRfcmN2X3RpbWUsCi0JCQkJCQkJCQkJCSAgIFNDVFBfUlRUX0ZST01fREFUQSk7
CisJCQkJCQkJaWYgKHJ0b19vayAmJgorCQkJCQkJCSAgICBzY3RwX2NhbGN1bGF0ZV9ydG8oc3Rj
YiwKKwkJCQkJCQkJCSAgICAgICAmc3RjYi0+YXNvYywKKwkJCQkJCQkJCSAgICAgICB0cDEtPndo
b1RvLAorCQkJCQkJCQkJICAgICAgICZ0cDEtPnNlbnRfcmN2X3RpbWUsCisJCQkJCQkJCQkgICAg
ICAgU0NUUF9SVFRfRlJPTV9EQVRBKSkgewogCQkJCQkJCQlydG9fb2sgPSAwOwogCQkJCQkJCX0K
IAkJCQkJCQlpZiAodHAxLT53aG9Uby0+cnRvX25lZWRlZCA9PSAwKSB7CkBAIC00MTI5LDcgKzQx
ODUsNyBAQCBzY3RwX2V4cHJlc3NfaGFuZGxlX3NhY2soc3RydWN0IHNjdHBfdGNiICpzdGNiLCB1
aW50MzJfdCBjdW1hY2ssCiAJCQkgICAgIChpbnAtPnNlbmRfc2JfdGhyZXNob2xkID09IDApKSkg
ewogCQkJCWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29jLnJlZmNudCwgMSk7CiAJCQkJU0NUUF9U
Q0JfVU5MT0NLKHN0Y2IpOwotCQkJCWlucC0+c2VuZF9jYWxsYmFjayhzdGNiLT5zY3RwX3NvY2tl
dCwgc2JfZnJlZV9ub3cpOworCQkJCWlucC0+c2VuZF9jYWxsYmFjayhzdGNiLT5zY3RwX3NvY2tl
dCwgc2JfZnJlZV9ub3csIGlucC0+dWxwX2luZm8pOwogCQkJCVNDVFBfVENCX0xPQ0soc3RjYik7
CiAJCQkJYXRvbWljX3N1YnRyYWN0X2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIDEpOwogCQkJfQpA
QCAtNDEzOSw3ICs0MTk1LDcgQEAgc2N0cF9leHByZXNzX2hhbmRsZV9zYWNrKHN0cnVjdCBzY3Rw
X3RjYiAqc3RjYiwgdWludDMyX3QgY3VtYWNrLAogCS8qIHNhX2lnbm9yZSBOT19OVUxMX0NISyAq
LwogCWlmIChzdGNiLT5zY3RwX3NvY2tldCkgewogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0FQUExF
X18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExF
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCXN0cnVjdCBzb2NrZXQgKnNvOwogCiAj
ZW5kaWYKQEAgLTQxNDgsNyArNDIwNCw3IEBAIHNjdHBfZXhwcmVzc19oYW5kbGVfc2FjayhzdHJ1
Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQzMl90IGN1bWFjaywKIAkJCS8qIHNhX2lnbm9yZSBOT19O
VUxMX0NISyAqLwogCQkJc2N0cF93YWtldXBfbG9nKHN0Y2IsIDEsIFNDVFBfV0FLRVNORF9GUk9N
X1NBQ0spOwogCQl9Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19M
T0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJCXNvID0gU0NUUF9JTlBfU08oc3RjYi0+c2N0cF9lcCk7CiAJCWF0b21pY19hZGRf
aW50KCZzdGNiLT5hc29jLnJlZmNudCwgMSk7CiAJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKQEAg
LTQxNjIsNyArNDIxOCw3IEBAIHNjdHBfZXhwcmVzc19oYW5kbGVfc2FjayhzdHJ1Y3Qgc2N0cF90
Y2IgKnN0Y2IsIHVpbnQzMl90IGN1bWFjaywKIAkJfQogI2VuZGlmCiAJCXNjdHBfc293d2FrZXVw
X2xvY2tlZChzdGNiLT5zY3RwX2VwLCBzdGNiLT5zY3RwX3NvY2tldCk7Ci0jaWYgZGVmaW5lZChf
X0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChf
X0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCVNDVFBfU09DS0VUX1VOTE9D
SyhzbywgMSk7CiAjZW5kaWYKIAl9IGVsc2UgewpAQCAtNDE5Nyw3ICs0MjUzLDcgQEAgc2N0cF9l
eHByZXNzX2hhbmRsZV9zYWNrKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgdWludDMyX3QgY3VtYWNr
LAogCQkJCQluZXQtPmRlc3Rfc3RhdGUgJj0gflNDVFBfQUREUl9QRjsKIAkJCQkJc2N0cF90aW1l
cl9zdG9wKFNDVFBfVElNRVJfVFlQRV9IRUFSVEJFQVQsCiAJCQkJCSAgICAgICAgICAgICAgICBz
dGNiLT5zY3RwX2VwLCBzdGNiLCBuZXQsCi0JCQkJCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01f
U0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18yMik7CisJCQkJCSAgICAgICAgICAgICAgICBTQ1RQX0ZS
T01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18yNik7CiAJCQkJCXNjdHBfdGltZXJfc3RhcnQoU0NU
UF9USU1FUl9UWVBFX0hFQVJUQkVBVCwgc3RjYi0+c2N0cF9lcCwgc3RjYiwgbmV0KTsKIAkJCQkJ
YXNvYy0+Y2NfZnVuY3Rpb25zLnNjdHBfY3duZF91cGRhdGVfZXhpdF9wZihzdGNiLCBuZXQpOwog
CQkJCQkvKiBEb25lIHdpdGggdGhpcyBuZXQgKi8KQEAgLTQyNzIsNyArNDMyOCw3IEBAIGFnYWlu
OgogCQkJfSBlbHNlIGlmIChTQ1RQX09TX1RJTUVSX1BFTkRJTkcoJm5ldC0+cnh0X3RpbWVyLnRp
bWVyKSkgewogCQkJCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfU0VORCwgc3RjYi0+
c2N0cF9lcCwKIAkJCQkgICAgICAgICAgICAgICAgc3RjYiwgbmV0LAotCQkJCSAgICAgICAgICAg
ICAgICBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18yMyk7CisJCQkJICAgICAgICAg
ICAgICAgIFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzI3KTsKIAkJCX0KIAkJfQog
CX0KQEAgLTQzMTEsMTIgKzQzNjcsMTIgQEAgYWdhaW46CiAJCS8qIGNsZWFuIHVwICovCiAJCWlm
ICgoYXNvYy0+c3RyZWFtX3F1ZXVlX2NudCA9PSAxKSAmJgogCQkgICAgKChhc29jLT5zdGF0ZSAm
IFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORykgfHwKLQkJICAgICAoYXNvYy0+c3RhdGUgJiBT
Q1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgJiYKKwkJICAgICAoU0NUUF9HRVRfU1RBVEUo
c3RjYikgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkpICYmCiAJCSAgICAoKCphc29j
LT5zc19mdW5jdGlvbnMuc2N0cF9zc19pc191c2VyX21zZ3NfaW5jb21wbGV0ZSkoc3RjYiwgYXNv
YykpKSB7Ci0JCQlhc29jLT5zdGF0ZSB8PSBTQ1RQX1NUQVRFX1BBUlRJQUxfTVNHX0xFRlQ7CisJ
CQlTQ1RQX0FERF9TVUJTVEFURShzdGNiLCBTQ1RQX1NUQVRFX1BBUlRJQUxfTVNHX0xFRlQpOwog
CQl9CiAJCWlmICgoKGFzb2MtPnN0YXRlICYgU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HKSB8
fAotCQkgICAgICAoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9S
RUNFSVZFRCkpICYmCisJCSAgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVf
U0hVVERPV05fUkVDRUlWRUQpKSAmJgogCQkgICAgKGFzb2MtPnN0cmVhbV9xdWV1ZV9jbnQgPT0g
MSkgJiYKIAkJICAgIChhc29jLT5zdGF0ZSAmIFNDVFBfU1RBVEVfUEFSVElBTF9NU0dfTEVGVCkp
IHsKIAkJCXN0cnVjdCBtYnVmICpvcF9lcnI7CkBAIC00MzI0LDcgKzQzODAsNyBAQCBhZ2FpbjoK
IAkJCSphYm9ydF9ub3cgPSAxOwogCQkJLyogWFhYICovCiAJCQlvcF9lcnIgPSBzY3RwX2dlbmVy
YXRlX2NhdXNlKFNDVFBfQ0FVU0VfVVNFUl9JTklUSUFURURfQUJULCAiIik7Ci0JCQlzdGNiLT5z
Y3RwX2VwLT5sYXN0X2Fib3J0X2NvZGUgPSBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xP
Q18yNDsKKwkJCXN0Y2ItPnNjdHBfZXAtPmxhc3RfYWJvcnRfY29kZSA9IFNDVFBfRlJPTV9TQ1RQ
X0lOREFUQSArIFNDVFBfTE9DXzI4OwogCQkJc2N0cF9hYm9ydF9hbl9hc3NvY2lhdGlvbihzdGNi
LT5zY3RwX2VwLCBzdGNiLCBvcF9lcnIsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CiAJCQlyZXR1cm47
CiAJCX0KQEAgLTQzMzIsMTIgKzQzODgsMTEgQEAgYWdhaW46CiAJCSAgICAoYXNvYy0+c3RyZWFt
X3F1ZXVlX2NudCA9PSAwKSkgewogCQkJc3RydWN0IHNjdHBfbmV0cyAqbmV0cDsKIAotCQkJaWYg
KChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHx8Ci0JCQkgICAgKFND
VFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpKSB7CisJ
CQlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfT1BFTikgfHwKKwkJCSAg
ICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkp
IHsKIAkJCQlTQ1RQX1NUQVRfREVDUl9HQVVHRTMyKHNjdHBzX2N1cnJlc3RhYik7CiAJCQl9Ci0J
CQlTQ1RQX1NFVF9TVEFURShhc29jLCBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpOwotCQkJU0NU
UF9DTEVBUl9TVUJTVEFURShhc29jLCBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJTkcpOworCQkJ
U0NUUF9TRVRfU1RBVEUoc3RjYiwgU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKTsKIAkJCXNjdHBf
c3RvcF90aW1lcnNfZm9yX3NodXRkb3duKHN0Y2IpOwogCQkJaWYgKGFzb2MtPmFsdGVybmF0ZSkg
ewogCQkJCW5ldHAgPSBhc29jLT5hbHRlcm5hdGU7CkBAIC00MzQ4LDE0ICs0NDAzLDEzIEBAIGFn
YWluOgogCQkJc2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfU0hVVERPV04sCiAJCQkJ
CSBzdGNiLT5zY3RwX2VwLCBzdGNiLCBuZXRwKTsKIAkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9U
SU1FUl9UWVBFX1NIVVRET1dOR1VBUkQsCi0JCQkJCSBzdGNiLT5zY3RwX2VwLCBzdGNiLCBuZXRw
KTsKLQkJfSBlbHNlIGlmICgoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9TSFVU
RE9XTl9SRUNFSVZFRCkgJiYKKwkJCQkJIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIE5VTEwpOworCQl9
IGVsc2UgaWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JF
Q0VJVkVEKSAmJgogCQkJICAgKGFzb2MtPnN0cmVhbV9xdWV1ZV9jbnQgPT0gMCkpIHsKIAkJCXN0
cnVjdCBzY3RwX25ldHMgKm5ldHA7CiAKIAkJCVNDVFBfU1RBVF9ERUNSX0dBVUdFMzIoc2N0cHNf
Y3VycmVzdGFiKTsKLQkJCVNDVFBfU0VUX1NUQVRFKGFzb2MsIFNDVFBfU1RBVEVfU0hVVERPV05f
QUNLX1NFTlQpOwotCQkJU0NUUF9DTEVBUl9TVUJTVEFURShhc29jLCBTQ1RQX1NUQVRFX1NIVVRE
T1dOX1BFTkRJTkcpOworCQkJU0NUUF9TRVRfU1RBVEUoc3RjYiwgU0NUUF9TVEFURV9TSFVURE9X
Tl9BQ0tfU0VOVCk7CiAJCQlzY3RwX3N0b3BfdGltZXJzX2Zvcl9zaHV0ZG93bihzdGNiKTsKIAkJ
CWlmIChhc29jLT5hbHRlcm5hdGUpIHsKIAkJCQluZXRwID0gYXNvYy0+YWx0ZXJuYXRlOwpAQCAt
NDM5NiwxMCArNDQ1MCwxNSBAQCBhZ2FpbjoKIAkJCQl9CiAJCQl9CiAJCX0KLQkJaWYgKGxjaGsp
IHsKKwkJZm9yICg7IGxjaGsgIT0gTlVMTDsgbGNoayA9IFRBSUxRX05FWFQobGNoaywgc2N0cF9u
ZXh0KSkgeworCQkJaWYgKGxjaGstPndob1RvICE9IE5VTEwpIHsKKwkJCQlicmVhazsKKwkJCX0K
KwkJfQorCQlpZiAobGNoayAhPSBOVUxMKSB7CiAJCQkvKiBBc3N1cmUgYSB0aW1lciBpcyB1cCAq
LwogCQkJc2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfU0VORCwKLQkJCQkJIHN0Y2It
PnNjdHBfZXAsIHN0Y2IsIGxjaGstPndob1RvKTsKKwkJCSAgICAgICAgICAgICAgICAgc3RjYi0+
c2N0cF9lcCwgc3RjYiwgbGNoay0+d2hvVG8pOwogCQl9CiAJfQogCWlmIChTQ1RQX0JBU0VfU1lT
Q1RMKHNjdHBfbG9nZ2luZ19sZXZlbCkgJiBTQ1RQX1NBQ0tfUldORF9MT0dHSU5HX0VOQUJMRSkg
ewpAQCAtNDUzMiwxMCArNDU5MSwxMSBAQCBzY3RwX2hhbmRsZV9zYWNrKHN0cnVjdCBtYnVmICpt
LCBpbnQgb2Zmc2V0X3NlZywgaW50IG9mZnNldF9kdXAsCiAJaG9wZWxlc3NfcGVlcjoKIAkJKmFi
b3J0X25vdyA9IDE7CiAJCS8qIFhYWCAqLwotCQlzbnByaW50Zihtc2csIHNpemVvZihtc2cpLCAi
Q3VtIGFjayAlOC44eCBncmVhdGVyIG9yIGVxdWFsIHRoYW4gVFNOICU4Ljh4IiwKLQkJCSBjdW1f
YWNrLCBzZW5kX3MpOworCQlTQ1RQX1NOUFJJTlRGKG1zZywgc2l6ZW9mKG1zZyksCisJCSAgICAg
ICAgICAgICAgIkN1bSBhY2sgJTguOHggZ3JlYXRlciBvciBlcXVhbCB0aGFuIFRTTiAlOC44eCIs
CisJCSAgICAgICAgICAgICAgY3VtX2Fjaywgc2VuZF9zKTsKIAkJb3BfZXJyID0gc2N0cF9nZW5l
cmF0ZV9jYXVzZShTQ1RQX0NBVVNFX1BST1RPQ09MX1ZJT0xBVElPTiwgbXNnKTsKLQkJc3RjYi0+
c2N0cF9lcC0+bGFzdF9hYm9ydF9jb2RlID0gU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9M
T0NfMjU7CisJCXN0Y2ItPnNjdHBfZXAtPmxhc3RfYWJvcnRfY29kZSA9IFNDVFBfRlJPTV9TQ1RQ
X0lOREFUQSArIFNDVFBfTE9DXzI5OwogCQlzY3RwX2Fib3J0X2FuX2Fzc29jaWF0aW9uKHN0Y2It
PnNjdHBfZXAsIHN0Y2IsIG9wX2VyciwgU0NUUF9TT19OT1RfTE9DS0VEKTsKIAkJcmV0dXJuOwog
CX0KQEAgLTQ1NjcsNyArNDYyNyw3IEBAIHNjdHBfaGFuZGxlX3NhY2soc3RydWN0IG1idWYgKm0s
IGludCBvZmZzZXRfc2VnLCBpbnQgb2Zmc2V0X2R1cCwKIAkJLyogc3RvcCBhbnkgdGltZXJzICov
CiAJCVRBSUxRX0ZPUkVBQ0gobmV0LCAmYXNvYy0+bmV0cywgc2N0cF9uZXh0KSB7CiAJCQlzY3Rw
X3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX1NFTkQsIHN0Y2ItPnNjdHBfZXAsCi0JCQkgICAg
ICAgICAgICAgICAgc3RjYiwgbmV0LCBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18y
Nik7CisJCQkgICAgICAgICAgICAgICAgc3RjYiwgbmV0LCBTQ1RQX0ZST01fU0NUUF9JTkRBVEEg
KyBTQ1RQX0xPQ18zMCk7CiAJCQluZXQtPnBhcnRpYWxfYnl0ZXNfYWNrZWQgPSAwOwogCQkJbmV0
LT5mbGlnaHRfc2l6ZSA9IDA7CiAJCX0KQEAgLTQ2NTcsNyArNDcxNyw3IEBAIHNjdHBfaGFuZGxl
X3NhY2soc3RydWN0IG1idWYgKm0sIGludCBvZmZzZXRfc2VnLCBpbnQgb2Zmc2V0X2R1cCwKIAog
CQkJCQlpZiAodHAxLT5zbmRfY291bnQgPCAyKSB7CiAJCQkJCQkvKgotCQkJCQkJICogVHJ1ZSBu
b24tcmV0cmFuc21pdGVkCisJCQkJCQkgKiBUcnVlIG5vbi1yZXRyYW5zbWl0dGVkCiAJCQkJCQkg
KiBjaHVuawogCQkJCQkJICovCiAJCQkJCQl0cDEtPndob1RvLT5uZXRfYWNrMiArPQpAQCAtNDY2
NSwxMiArNDcyNSwxMiBAQCBzY3RwX2hhbmRsZV9zYWNrKHN0cnVjdCBtYnVmICptLCBpbnQgb2Zm
c2V0X3NlZywgaW50IG9mZnNldF9kdXAsCiAKIAkJCQkJCS8qIHVwZGF0ZSBSVE8gdG9vPyAqLwog
CQkJCQkJaWYgKHRwMS0+ZG9fcnR0KSB7Ci0JCQkJCQkJaWYgKHJ0b19vaykgewotCQkJCQkJCQl0
cDEtPndob1RvLT5SVE8gPQotCQkJCQkJCQkJc2N0cF9jYWxjdWxhdGVfcnRvKHN0Y2IsCi0JCQkJ
CQkJCQkJCSAgIGFzb2MsIHRwMS0+d2hvVG8sCi0JCQkJCQkJCQkJCSAgICZ0cDEtPnNlbnRfcmN2
X3RpbWUsCi0JCQkJCQkJCQkJCSAgIFNDVFBfUlRUX0ZST01fREFUQSk7CisJCQkJCQkJaWYgKHJ0
b19vayAmJgorCQkJCQkJCSAgICBzY3RwX2NhbGN1bGF0ZV9ydG8oc3RjYiwKKwkJCQkJCQkJCSAg
ICAgICAmc3RjYi0+YXNvYywKKwkJCQkJCQkJCSAgICAgICB0cDEtPndob1RvLAorCQkJCQkJCQkJ
ICAgICAgICZ0cDEtPnNlbnRfcmN2X3RpbWUsCisJCQkJCQkJCQkgICAgICAgU0NUUF9SVFRfRlJP
TV9EQVRBKSkgewogCQkJCQkJCQlydG9fb2sgPSAwOwogCQkJCQkJCX0KIAkJCQkJCQlpZiAodHAx
LT53aG9Uby0+cnRvX25lZWRlZCA9PSAwKSB7CkBAIC00NzY3LDE0ICs0ODI3LDE0IEBAIHNjdHBf
aGFuZGxlX3NhY2soc3RydWN0IG1idWYgKm0sIGludCBvZmZzZXRfc2VnLCBpbnQgb2Zmc2V0X2R1
cCwKIAkJCWlmIChuZXQtPm5ld19wc2V1ZG9fY3VtYWNrKQogCQkJCXNjdHBfdGltZXJfc3RvcChT
Q1RQX1RJTUVSX1RZUEVfU0VORCwgc3RjYi0+c2N0cF9lcCwKIAkJCQkgICAgICAgICAgICAgICAg
c3RjYiwgbmV0LAotCQkJCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBT
Q1RQX0xPQ18yNyk7CisJCQkJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX0lOREFUQSAr
IFNDVFBfTE9DXzMxKTsKIAogCQl9CiAJfSBlbHNlIHsKIAkJaWYgKGFjY3VtX21vdmVkKSB7CiAJ
CQlUQUlMUV9GT1JFQUNIKG5ldCwgJmFzb2MtPm5ldHMsIHNjdHBfbmV4dCkgewogCQkJCXNjdHBf
dGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfU0VORCwgc3RjYi0+c2N0cF9lcCwKLQkJCQkgICAg
ICAgICAgICAgICAgc3RjYiwgbmV0LCBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18y
OCk7CisJCQkJICAgICAgICAgICAgICAgIHN0Y2IsIG5ldCwgU0NUUF9GUk9NX1NDVFBfSU5EQVRB
ICsgU0NUUF9MT0NfMzIpOwogCQkJfQogCQl9CiAJfQpAQCAtNDg1Myw3ICs0OTEzLDcgQEAgc2N0
cF9oYW5kbGVfc2FjayhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IG9mZnNldF9zZWcsIGludCBvZmZzZXRf
ZHVwLAogCQkJICAgIChpbnAtPnNlbmRfc2JfdGhyZXNob2xkID09IDApKSkgewogCQkJCWF0b21p
Y19hZGRfaW50KCZzdGNiLT5hc29jLnJlZmNudCwgMSk7CiAJCQkJU0NUUF9UQ0JfVU5MT0NLKHN0
Y2IpOwotCQkJCWlucC0+c2VuZF9jYWxsYmFjayhzdGNiLT5zY3RwX3NvY2tldCwgc2JfZnJlZV9u
b3cpOworCQkJCWlucC0+c2VuZF9jYWxsYmFjayhzdGNiLT5zY3RwX3NvY2tldCwgc2JfZnJlZV9u
b3csIGlucC0+dWxwX2luZm8pOwogCQkJCVNDVFBfVENCX0xPQ0soc3RjYik7CiAJCQkJYXRvbWlj
X3N1YnRyYWN0X2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIDEpOwogCQkJfQpAQCAtNDg2Myw3ICs0
OTIzLDcgQEAgc2N0cF9oYW5kbGVfc2FjayhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IG9mZnNldF9zZWcs
IGludCBvZmZzZXRfZHVwLAogCS8qIHNhX2lnbm9yZSBOT19OVUxMX0NISyAqLwogCWlmICgod2Fr
ZV9oaW0pICYmIChzdGNiLT5zY3RwX3NvY2tldCkpIHsKICNlbmRpZgotI2lmIGRlZmluZWQoX19B
UFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19B
UFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlzdHJ1Y3Qgc29ja2V0ICpzbzsK
IAogI2VuZGlmCkBAIC00ODcxLDcgKzQ5MzEsNyBAQCBzY3RwX2hhbmRsZV9zYWNrKHN0cnVjdCBt
YnVmICptLCBpbnQgb2Zmc2V0X3NlZywgaW50IG9mZnNldF9kdXAsCiAJCWlmIChTQ1RQX0JBU0Vf
U1lTQ1RMKHNjdHBfbG9nZ2luZ19sZXZlbCkgJiBTQ1RQX1dBS0VfTE9HR0lOR19FTkFCTEUpIHsK
IAkJCXNjdHBfd2FrZXVwX2xvZyhzdGNiLCB3YWtlX2hpbSwgU0NUUF9XQUtFU05EX0ZST01fU0FD
Syk7CiAJCX0KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tf
VEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKIAkJc28gPSBTQ1RQX0lOUF9TTyhzdGNiLT5zY3RwX2VwKTsKIAkJYXRvbWljX2FkZF9pbnQo
JnN0Y2ItPmFzb2MucmVmY250LCAxKTsKIAkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwpAQCAtNDg4
NSw3ICs0OTQ1LDcgQEAgc2N0cF9oYW5kbGVfc2FjayhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IG9mZnNl
dF9zZWcsIGludCBvZmZzZXRfZHVwLAogCQl9CiAjZW5kaWYKIAkJc2N0cF9zb3d3YWtldXBfbG9j
a2VkKHN0Y2ItPnNjdHBfZXAsIHN0Y2ItPnNjdHBfc29ja2V0KTsKLSNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJU0NUUF9TT0NLRVRfVU5MT0NLKHNv
LCAxKTsKICNlbmRpZgogCX0gZWxzZSB7CkBAIC00OTc5LDcgKzUwMzksNyBAQCBzY3RwX2hhbmRs
ZV9zYWNrKHN0cnVjdCBtYnVmICptLCBpbnQgb2Zmc2V0X3NlZywgaW50IG9mZnNldF9kdXAsCiAJ
CQkJCW5ldC0+ZGVzdF9zdGF0ZSAmPSB+U0NUUF9BRERSX1BGOwogCQkJCQlzY3RwX3RpbWVyX3N0
b3AoU0NUUF9USU1FUl9UWVBFX0hFQVJUQkVBVCwKIAkJCQkJICAgICAgICAgICAgICAgIHN0Y2It
PnNjdHBfZXAsIHN0Y2IsIG5ldCwKLQkJCQkJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQ
X0lOREFUQSArIFNDVFBfTE9DXzI5KTsKKwkJCQkJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9T
Q1RQX0lOREFUQSArIFNDVFBfTE9DXzMzKTsKIAkJCQkJc2N0cF90aW1lcl9zdGFydChTQ1RQX1RJ
TUVSX1RZUEVfSEVBUlRCRUFULCBzdGNiLT5zY3RwX2VwLCBzdGNiLCBuZXQpOwogCQkJCQlhc29j
LT5jY19mdW5jdGlvbnMuc2N0cF9jd25kX3VwZGF0ZV9leGl0X3BmKHN0Y2IsIG5ldCk7CiAJCQkJ
CS8qIERvbmUgd2l0aCB0aGlzIG5ldCAqLwpAQCAtNTAwNCw3ICs1MDY0LDcgQEAgc2N0cF9oYW5k
bGVfc2FjayhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IG9mZnNldF9zZWcsIGludCBvZmZzZXRfZHVwLAog
CQkJLyogc3RvcCBhbGwgdGltZXJzICovCiAJCQlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9U
WVBFX1NFTkQsIHN0Y2ItPnNjdHBfZXAsCiAJCQkgICAgICAgICAgICAgICAgc3RjYiwgbmV0LAot
CQkJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzMwKTsK
KwkJCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18zNCk7
CiAJCQluZXQtPmZsaWdodF9zaXplID0gMDsKIAkJCW5ldC0+cGFydGlhbF9ieXRlc19hY2tlZCA9
IDA7CiAJCX0KQEAgLTUwMjksMTIgKzUwODksMTIgQEAgc2N0cF9oYW5kbGVfc2FjayhzdHJ1Y3Qg
bWJ1ZiAqbSwgaW50IG9mZnNldF9zZWcsIGludCBvZmZzZXRfZHVwLAogCQkvKiBjbGVhbiB1cCAq
LwogCQlpZiAoKGFzb2MtPnN0cmVhbV9xdWV1ZV9jbnQgPT0gMSkgJiYKIAkJICAgICgoYXNvYy0+
c3RhdGUgJiBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJTkcpIHx8Ci0JCSAgICAgKGFzb2MtPnN0
YXRlICYgU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkpICYmCisJCSAgICAgKFNDVFBfR0VU
X1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpKSAmJgogCQkgICAg
KCgqYXNvYy0+c3NfZnVuY3Rpb25zLnNjdHBfc3NfaXNfdXNlcl9tc2dzX2luY29tcGxldGUpKHN0
Y2IsIGFzb2MpKSkgewotCQkJYXNvYy0+c3RhdGUgfD0gU0NUUF9TVEFURV9QQVJUSUFMX01TR19M
RUZUOworCQkJU0NUUF9BRERfU1VCU1RBVEUoc3RjYiwgU0NUUF9TVEFURV9QQVJUSUFMX01TR19M
RUZUKTsKIAkJfQogCQlpZiAoKChhc29jLT5zdGF0ZSAmIFNDVFBfU1RBVEVfU0hVVERPV05fUEVO
RElORykgfHwKLQkJICAgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfU0hV
VERPV05fUkVDRUlWRUQpKSAmJgorCQkgICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQ
X1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgJiYKIAkJICAgIChhc29jLT5zdHJlYW1fcXVldWVf
Y250ID09IDEpICYmCiAJCSAgICAoYXNvYy0+c3RhdGUgJiBTQ1RQX1NUQVRFX1BBUlRJQUxfTVNH
X0xFRlQpKSB7CiAJCQlzdHJ1Y3QgbWJ1ZiAqb3BfZXJyOwpAQCAtNTA0Miw3ICs1MTAyLDcgQEAg
c2N0cF9oYW5kbGVfc2FjayhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IG9mZnNldF9zZWcsIGludCBvZmZz
ZXRfZHVwLAogCQkJKmFib3J0X25vdyA9IDE7CiAJCQkvKiBYWFggKi8KIAkJCW9wX2VyciA9IHNj
dHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9DQVVTRV9VU0VSX0lOSVRJQVRFRF9BQlQsICIiKTsKLQkJ
CXN0Y2ItPnNjdHBfZXAtPmxhc3RfYWJvcnRfY29kZSA9IFNDVFBfRlJPTV9TQ1RQX0lOREFUQSAr
IFNDVFBfTE9DXzI0OworCQkJc3RjYi0+c2N0cF9lcC0+bGFzdF9hYm9ydF9jb2RlID0gU0NUUF9G
Uk9NX1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMzU7CiAJCQlzY3RwX2Fib3J0X2FuX2Fzc29jaWF0
aW9uKHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIG9wX2VyciwgU0NUUF9TT19OT1RfTE9DS0VEKTsKIAkJ
CXJldHVybjsKIAkJfQpAQCAtNTA1MCwxMiArNTExMCwxMSBAQCBzY3RwX2hhbmRsZV9zYWNrKHN0
cnVjdCBtYnVmICptLCBpbnQgb2Zmc2V0X3NlZywgaW50IG9mZnNldF9kdXAsCiAJCSAgICAoYXNv
Yy0+c3RyZWFtX3F1ZXVlX2NudCA9PSAwKSkgewogCQkJc3RydWN0IHNjdHBfbmV0cyAqbmV0cDsK
IAotCQkJaWYgKChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHx8Ci0J
CQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlW
RUQpKSB7CisJCQlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfT1BFTikg
fHwKKwkJCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9S
RUNFSVZFRCkpIHsKIAkJCQlTQ1RQX1NUQVRfREVDUl9HQVVHRTMyKHNjdHBzX2N1cnJlc3RhYik7
CiAJCQl9Ci0JCQlTQ1RQX1NFVF9TVEFURShhc29jLCBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQp
OwotCQkJU0NUUF9DTEVBUl9TVUJTVEFURShhc29jLCBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJ
TkcpOworCQkJU0NUUF9TRVRfU1RBVEUoc3RjYiwgU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKTsK
IAkJCXNjdHBfc3RvcF90aW1lcnNfZm9yX3NodXRkb3duKHN0Y2IpOwogCQkJaWYgKGFzb2MtPmFs
dGVybmF0ZSkgewogCQkJCW5ldHAgPSBhc29jLT5hbHRlcm5hdGU7CkBAIC01MDY2LDE1ICs1MTI1
LDE0IEBAIHNjdHBfaGFuZGxlX3NhY2soc3RydWN0IG1idWYgKm0sIGludCBvZmZzZXRfc2VnLCBp
bnQgb2Zmc2V0X2R1cCwKIAkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NIVVRE
T1dOLAogCQkJCQkgc3RjYi0+c2N0cF9lcCwgc3RjYiwgbmV0cCk7CiAJCQlzY3RwX3RpbWVyX3N0
YXJ0KFNDVFBfVElNRVJfVFlQRV9TSFVURE9XTkdVQVJELAotCQkJCQkgc3RjYi0+c2N0cF9lcCwg
c3RjYiwgbmV0cCk7CisJCQkJCSBzdGNiLT5zY3RwX2VwLCBzdGNiLCBOVUxMKTsKIAkJCXJldHVy
bjsKLQkJfSBlbHNlIGlmICgoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9TSFVU
RE9XTl9SRUNFSVZFRCkgJiYKKwkJfSBlbHNlIGlmICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0g
U0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkgJiYKIAkJCSAgIChhc29jLT5zdHJlYW1fcXVl
dWVfY250ID09IDApKSB7CiAJCQlzdHJ1Y3Qgc2N0cF9uZXRzICpuZXRwOwogCiAJCQlTQ1RQX1NU
QVRfREVDUl9HQVVHRTMyKHNjdHBzX2N1cnJlc3RhYik7Ci0JCQlTQ1RQX1NFVF9TVEFURShhc29j
LCBTQ1RQX1NUQVRFX1NIVVRET1dOX0FDS19TRU5UKTsKLQkJCVNDVFBfQ0xFQVJfU1VCU1RBVEUo
YXNvYywgU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HKTsKKwkJCVNDVFBfU0VUX1NUQVRFKHN0
Y2IsIFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQpOwogCQkJc2N0cF9zdG9wX3RpbWVyc19m
b3Jfc2h1dGRvd24oc3RjYik7CiAJCQlpZiAoYXNvYy0+YWx0ZXJuYXRlKSB7CiAJCQkJbmV0cCA9
IGFzb2MtPmFsdGVybmF0ZTsKQEAgLTUxOTAsNyArNTI0OCw3IEBAIGFnYWluOgogCQkJfSBlbHNl
IGlmIChTQ1RQX09TX1RJTUVSX1BFTkRJTkcoJm5ldC0+cnh0X3RpbWVyLnRpbWVyKSkgewogCQkJ
CXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfU0VORCwgc3RjYi0+c2N0cF9lcCwKIAkJ
CQkgICAgICAgICAgICAgICAgc3RjYiwgbmV0LAotCQkJCSAgICAgICAgICAgICAgICBTQ1RQX0ZS
T01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18zMik7CisJCQkJICAgICAgICAgICAgICAgIFNDVFBf
RlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzM2KTsKIAkJCX0KIAkJfQogCX0KQEAgLTUyNTUs
NyArNTMxMywxMiBAQCBhZ2FpbjoKIAkJCQl9CiAJCQl9CiAJCX0KLQkJaWYgKGxjaGspIHsKKwkJ
Zm9yICg7IGxjaGsgIT0gTlVMTDsgbGNoayA9IFRBSUxRX05FWFQobGNoaywgc2N0cF9uZXh0KSkg
eworCQkJaWYgKGxjaGstPndob1RvICE9IE5VTEwpIHsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQor
CQlpZiAobGNoayAhPSBOVUxMKSB7CiAJCQkvKiBBc3N1cmUgYSB0aW1lciBpcyB1cCAqLwogCQkJ
c2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfU0VORCwKIAkJCSAgICAgICAgICAgICAg
ICAgc3RjYi0+c2N0cF9lcCwgc3RjYiwgbGNoay0+d2hvVG8pOwpAQCAtNTQyOSwxMyArNTQ5Miwx
MSBAQCBzY3RwX2tpY2tfcHJzY3RwX3Jlb3JkZXJfcXVldWUoc3RydWN0IHNjdHBfdGNiICpzdGNi
LAogCiBzdGF0aWMgdm9pZAogc2N0cF9mbHVzaF9yZWFzc21fZm9yX3N0cl9zZXEoc3RydWN0IHNj
dHBfdGNiICpzdGNiLAotCXN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAotCXVpbnQxNl90
IHN0cmVhbSwgdWludDMyX3QgbWlkLCBpbnQgb3JkZXJlZCwgdWludDMyX3QgY3VtdHNuKQorCXN0
cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLCBzdHJ1Y3Qgc2N0cF9zdHJlYW1faW4gKnN0cm0s
CisJc3RydWN0IHNjdHBfcXVldWVkX3RvX3JlYWQgKmNvbnRyb2wsIGludCBvcmRlcmVkLCB1aW50
MzJfdCBjdW10c24pCiB7Ci0Jc3RydWN0IHNjdHBfcXVldWVkX3RvX3JlYWQgKmNvbnRyb2w7Ci0J
c3RydWN0IHNjdHBfc3RyZWFtX2luICpzdHJtOwogCXN0cnVjdCBzY3RwX3RtaXRfY2h1bmsgKmNo
aywgKm5jaGs7Ci0JaW50IGNudF9yZW1vdmVkPTA7CisJaW50IGNudF9yZW1vdmVkID0gMDsKIAog
CS8qCiAJICogRm9yIG5vdyBsYXJnZSBtZXNzYWdlcyBoZWxkIG9uIHRoZSBzdHJlYW0gcmVhc20g
dGhhdCBhcmUKQEAgLTU0NDUsMTIgKzU1MDYsNiBAQCBzY3RwX2ZsdXNoX3JlYXNzbV9mb3Jfc3Ry
X3NlcShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJICogZGVsaXZlcnkgZnVuY3Rpb24uLi4gdG8g
c2VlIGlmIGl0IGNhbiBiZSBkZWxpdmVyZWQuLi4gQnV0CiAJICogZm9yIG5vdyB3ZSBqdXN0IGR1
bXAgZXZlcnl0aGluZyBvbiB0aGUgcXVldWUuCiAJICovCi0Jc3RybSA9ICZhc29jLT5zdHJtaW5b
c3RyZWFtXTsKLQljb250cm9sID0gc2N0cF9maW5kX3JlYXNtX2VudHJ5KHN0cm0sIG1pZCwgb3Jk
ZXJlZCwgYXNvYy0+aWRhdGFfc3VwcG9ydGVkKTsKLQlpZiAoY29udHJvbCA9PSBOVUxMKSB7Ci0J
CS8qIE5vdCBmb3VuZCAqLwotCQlyZXR1cm47Ci0JfQogCWlmICghYXNvYy0+aWRhdGFfc3VwcG9y
dGVkICYmICFvcmRlcmVkICYmIFNDVFBfVFNOX0dUKGNvbnRyb2wtPmZzbl9pbmNsdWRlZCwgY3Vt
dHNuKSkgewogCQlyZXR1cm47CiAJfQpAQCAtNTU0MCwxMCArNTU5NSwxMCBAQCBzY3RwX2hhbmRs
ZV9mb3J3YXJkX3RzbihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJICoKIAkgKiBBc3N1bWUgd2Ug
Z2V0IEZ3ZFRTTih4KToKIAkgKgotCSAqIDEpIHVwZGF0ZSBsb2NhbCBjdW1UU04gdG8geCAKLQkg
KiAyKSB0cnkgdG8gZnVydGhlciBhZHZhbmNlIGN1bVRTTiB0byB4ICsgb3RoZXJzIHdlIGhhdmUg
Ci0JICogMykgZXhhbWluZSBhbmQgdXBkYXRlIHJlLW9yZGVyaW5nIHF1ZXVlIG9uIHByLWluLXN0
cmVhbXMgCi0JICogNCkgY2xlYW4gdXAgcmUtYXNzZW1ibHkgcXVldWUgCisJICogMSkgdXBkYXRl
IGxvY2FsIGN1bVRTTiB0byB4CisJICogMikgdHJ5IHRvIGZ1cnRoZXIgYWR2YW5jZSBjdW1UU04g
dG8geCArIG90aGVycyB3ZSBoYXZlCisJICogMykgZXhhbWluZSBhbmQgdXBkYXRlIHJlLW9yZGVy
aW5nIHF1ZXVlIG9uIHByLWluLXN0cmVhbXMKKwkgKiA0KSBjbGVhbiB1cCByZS1hc3NlbWJseSBx
dWV1ZQogCSAqIDUpIFNlbmQgYSBzYWNrIHRvIHJlcG9ydCB3aGVyZSB3ZSBhcmUuCiAJICovCiAJ
c3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2M7CkBAIC01NTg1LDExICs1NjQwLDExIEBAIHNj
dHBfaGFuZGxlX2ZvcndhcmRfdHNuKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJCSAqIGdpdmUg
b3V0KS4gVGhpcyBtdXN0IGJlIGFuIGF0dGFja2VyLgogCQkJICovCiAJCQkqYWJvcnRfZmxhZyA9
IDE7Ci0JCQlzbnByaW50Zihtc2csIHNpemVvZihtc2cpLAotCQkJICAgICAgICAgIk5ldyBjdW0g
YWNrICU4Ljh4IHRvbyBoaWdoLCBoaWdoZXN0IFRTTiAlOC44eCIsCi0JCQkgICAgICAgICBuZXdf
Y3VtX3RzbiwgYXNvYy0+aGlnaGVzdF90c25faW5zaWRlX21hcCk7CisJCQlTQ1RQX1NOUFJJTlRG
KG1zZywgc2l6ZW9mKG1zZyksCisJCQkgICAgICAgICAgICAgICJOZXcgY3VtIGFjayAlOC44eCB0
b28gaGlnaCwgaGlnaGVzdCBUU04gJTguOHgiLAorCQkJICAgICAgICAgICAgICBuZXdfY3VtX3Rz
biwgYXNvYy0+aGlnaGVzdF90c25faW5zaWRlX21hcCk7CiAJCQlvcF9lcnIgPSBzY3RwX2dlbmVy
YXRlX2NhdXNlKFNDVFBfQ0FVU0VfUFJPVE9DT0xfVklPTEFUSU9OLCBtc2cpOwotCQkJc3RjYi0+
c2N0cF9lcC0+bGFzdF9hYm9ydF9jb2RlID0gU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9M
T0NfMzM7CisJCQlzdGNiLT5zY3RwX2VwLT5sYXN0X2Fib3J0X2NvZGUgPSBTQ1RQX0ZST01fU0NU
UF9JTkRBVEEgKyBTQ1RQX0xPQ18zNzsKIAkJCXNjdHBfYWJvcnRfYW5fYXNzb2NpYXRpb24oc3Rj
Yi0+c2N0cF9lcCwgc3RjYiwgb3BfZXJyLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwogCQkJcmV0dXJu
OwogCQl9CkBAIC01NjI0LDEwICs1Njc5LDE0IEBAIHNjdHBfaGFuZGxlX2ZvcndhcmRfdHNuKHN0
cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkvKiBUaGlzIGlzIG5vdyBkb25lIGFzIHBhcnQgb2YgY2xl
YXJpbmcgdXAgdGhlIHN0cmVhbS9zZXEgKi8KIAlpZiAoYXNvYy0+aWRhdGFfc3VwcG9ydGVkID09
IDApIHsKIAkJdWludDE2X3Qgc2lkOworCiAJCS8qIEZsdXNoIGFsbCB0aGUgdW4tb3JkZXJlZCBk
YXRhIGJhc2VkIG9uIGN1bS10c24gKi8KIAkJU0NUUF9JTlBfUkVBRF9MT0NLKHN0Y2ItPnNjdHBf
ZXApOwogCQlmb3IgKHNpZCA9IDAgOyBzaWQgPCBhc29jLT5zdHJlYW1pbmNudDsgc2lkKyspIHsK
LQkJCXNjdHBfZmx1c2hfcmVhc3NtX2Zvcl9zdHJfc2VxKHN0Y2IsIGFzb2MsIHNpZCwgMCwgMCwg
bmV3X2N1bV90c24pOworCQkJc3RybSA9ICZhc29jLT5zdHJtaW5bc2lkXTsKKwkJCWlmICghVEFJ
TFFfRU1QVFkoJnN0cm0tPnVub19pbnF1ZXVlKSkgeworCQkJCXNjdHBfZmx1c2hfcmVhc3NtX2Zv
cl9zdHJfc2VxKHN0Y2IsIGFzb2MsIHN0cm0sIFRBSUxRX0ZJUlNUKCZzdHJtLT51bm9faW5xdWV1
ZSksIDAsIG5ld19jdW1fdHNuKTsKKwkJCX0KIAkJfQogCQlTQ1RQX0lOUF9SRUFEX1VOTE9DSyhz
dGNiLT5zY3RwX2VwKTsKIAl9CkBAIC01NjM5LDcgKzU2OTgsNyBAQCBzY3RwX2hhbmRsZV9mb3J3
YXJkX3RzbihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJaWYgKG0gJiYgZndkX3N6KSB7CiAJCS8q
IE5ldyBtZXRob2QuICovCiAJCXVuc2lnbmVkIGludCBudW1fc3RyOwotCQl1aW50MzJfdCBtaWQs
IGN1cl9taWQ7CisJCXVpbnQzMl90IG1pZDsKIAkJdWludDE2X3Qgc2lkOwogCQl1aW50MTZfdCBv
cmRlcmVkLCBmbGFnczsKIAkJc3RydWN0IHNjdHBfc3Ryc2VxICpzdHNlcSwgc3Ryc2VxYnVmOwpA
QCAtNTcwMyw4ICs1NzYyLDI0IEBAIHNjdHBfaGFuZGxlX2ZvcndhcmRfdHNuKHN0cnVjdCBzY3Rw
X3RjYiAqc3RjYiwKIAkJCQlhc29jLT5mcmFnbWVudGVkX2RlbGl2ZXJ5X2lucHJvZ3Jlc3MgPSAw
OwogCQkJfQogCQkJc3RybSA9ICZhc29jLT5zdHJtaW5bc2lkXTsKLQkJCWZvciAoY3VyX21pZCA9
IHN0cm0tPmxhc3RfbWlkX2RlbGl2ZXJlZDsgU0NUUF9NSURfR0UoYXNvYy0+aWRhdGFfc3VwcG9y
dGVkLCBtaWQsIGN1cl9taWQpOyBjdXJfbWlkKyspIHsKLQkJCQlzY3RwX2ZsdXNoX3JlYXNzbV9m
b3Jfc3RyX3NlcShzdGNiLCBhc29jLCBzaWQsIGN1cl9taWQsIG9yZGVyZWQsIG5ld19jdW1fdHNu
KTsKKwkJCWlmIChvcmRlcmVkKSB7CisJCQkJVEFJTFFfRk9SRUFDSChjb250cm9sLCAmc3RybS0+
aW5xdWV1ZSwgbmV4dF9pbnN0cm0pIHsKKwkJCQkJaWYgKFNDVFBfTUlEX0dFKGFzb2MtPmlkYXRh
X3N1cHBvcnRlZCwgbWlkLCBjb250cm9sLT5taWQpKSB7CisJCQkJCQlzY3RwX2ZsdXNoX3JlYXNz
bV9mb3Jfc3RyX3NlcShzdGNiLCBhc29jLCBzdHJtLCBjb250cm9sLCBvcmRlcmVkLCBuZXdfY3Vt
X3Rzbik7CisJCQkJCX0KKwkJCQl9CisJCQl9IGVsc2UgeworCQkJCWlmIChhc29jLT5pZGF0YV9z
dXBwb3J0ZWQpIHsKKwkJCQkJVEFJTFFfRk9SRUFDSChjb250cm9sLCAmc3RybS0+dW5vX2lucXVl
dWUsIG5leHRfaW5zdHJtKSB7CisJCQkJCQlpZiAoU0NUUF9NSURfR0UoYXNvYy0+aWRhdGFfc3Vw
cG9ydGVkLCBtaWQsIGNvbnRyb2wtPm1pZCkpIHsKKwkJCQkJCQlzY3RwX2ZsdXNoX3JlYXNzbV9m
b3Jfc3RyX3NlcShzdGNiLCBhc29jLCBzdHJtLCBjb250cm9sLCBvcmRlcmVkLCBuZXdfY3VtX3Rz
bik7CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9IGVsc2UgeworCQkJCQlpZiAoIVRBSUxRX0VNUFRZ
KCZzdHJtLT51bm9faW5xdWV1ZSkpIHsKKwkJCQkJCXNjdHBfZmx1c2hfcmVhc3NtX2Zvcl9zdHJf
c2VxKHN0Y2IsIGFzb2MsIHN0cm0sIFRBSUxRX0ZJUlNUKCZzdHJtLT51bm9faW5xdWV1ZSksIG9y
ZGVyZWQsIG5ld19jdW1fdHNuKTsKKwkJCQkJfQorCQkJCX0KIAkJCX0KIAkJCVRBSUxRX0ZPUkVB
Q0goY29udHJvbCwgJnN0Y2ItPnNjdHBfZXAtPnJlYWRfcXVldWUsIG5leHQpIHsKIAkJCQlpZiAo
KGNvbnRyb2wtPnNpbmZvX3N0cmVhbSA9PSBzaWQpICYmCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91
c3JzY3RwbGliL25ldGluZXQvc2N0cF9pbmRhdGEuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0
aW5ldC9zY3RwX2luZGF0YS5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXgg
YmRiYTExNDhiNjg1NTE0N2Q0ZDQ0YTAyN2NlZmE0Mzg2MTdkNWQzZC4uODI5YTAxNGYyZDY0OWM3
NzkzMjg0ZjRiZmJmYTI5ZTg2NTNhYThlZAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGlu
ZXQvc2N0cF9pbmRhdGEuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9p
bmRhdGEuaApAQCAtMzIsOSArMzIsOSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLSNpZmRlZiBfX0ZyZWVCU0RfXworI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci1fX0ZC
U0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9pbmRhdGEuaCAzMTA1OTAgMjAx
Ni0xMi0yNiAxMTowNjo0MVogdHVleGVuICQiKTsKK19fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9z
eXMvbmV0aW5ldC9zY3RwX2luZGF0YS5oIDM2MTExNiAyMDIwLTA1LTE2IDE5OjI2OjM5WiB0dWV4
ZW4gJCIpOwogI2VuZGlmCiAKICNpZm5kZWYgX05FVElORVRfU0NUUF9JTkRBVEFfSF8KQEAgLTYz
LDcgKzYzLDYgQEAgc2N0cF9idWlsZF9yZWFkcV9lbnRyeShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2Is
CiAJCShfY3RsKS0+c2luZm9fcHBpZCA9IHBwaWQ7IFwKIAkJKF9jdGwpLT5zaW5mb19jb250ZXh0
ID0gY29udGV4dDsgXAogCQkoX2N0bCktPmZzbl9pbmNsdWRlZCA9IDB4ZmZmZmZmZmY7IFwKLQkJ
KF9jdGwpLT50b3BfZnNuID0gMHhmZmZmZmZmZjsgXAogCQkoX2N0bCktPnNpbmZvX3RzbiA9IHRz
bjsgXAogCQkoX2N0bCktPnNpbmZvX2N1bXRzbiA9IHRzbjsgXAogCQkoX2N0bCktPnNpbmZvX2Fz
c29jX2lkID0gc2N0cF9nZXRfYXNzb2NpZCgoaW5faXQpKTsgXApAQCAtNzEsNiArNzAsOSBAQCBz
Y3RwX2J1aWxkX3JlYWRxX2VudHJ5KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJKF9jdGwpLT5k
YXRhID0gZG07IFwKIAkJKF9jdGwpLT5zdGNiID0gKGluX2l0KTsgXAogCQkoX2N0bCktPnBvcnRf
ZnJvbSA9IChpbl9pdCktPnJwb3J0OyBcCisJCWlmICgoaW5faXQpLT5hc29jLnN0YXRlICYgU0NU
UF9TVEFURV9BQk9VVF9UT19CRV9GUkVFRCkgeyBcCisJCQkoX2N0bCktPmRvX25vdF9yZWZfc3Rj
YiA9IDE7IFwKKwkJfVwKIAl9IFwKIH0gd2hpbGUgKDApCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2lucHV0LmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25l
dGluZXQvc2N0cF9pbnB1dC5jCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXgg
YzYyYmI4NTA2ZGMwZmI4NjExMmYzNWUwYjY2ZDA4YzE5OGU4ZjliZC4uMjU1NWVhY2Q2OGE5YmY4
YzVhMjllZTE5MGVlNmZjMDNmNWM3Njk5YwotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGlu
ZXQvc2N0cF9pbnB1dC5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2lu
cHV0LmMKQEAgLTMyLDkgKzMyLDkgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi0jaWZkZWYgX19GcmVlQlNEX18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNE
SUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfaW5wdXQuYyAzMzQ3MjUgMjAxOC0w
Ni0wNiAxOToyNzowNlogdHVleGVuICQiKTsKK19fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMv
bmV0aW5ldC9zY3RwX2lucHV0LmMgMzY0MjY4IDIwMjAtMDgtMTYgMTE6NTA6MzdaIHR1ZXhlbiAk
Iik7CiAjZW5kaWYKIAogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9vcy5oPgpAQCAtNTEsMjAgKzUx
LDE4IEBAIF9fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX2lucHV0LmMg
MzM0NzI1IDIwMTgtMDYtMDYgMTk6Mjc6MDZaIHR1CiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX2Jz
ZF9hZGRyLmg+CiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX3RpbWVyLmg+CiAjaW5jbHVkZSA8bmV0
aW5ldC9zY3RwX2NyYzMyLmg+CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKKyNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfa2R0cmFjZS5oPgorI2VuZGlm
CiAjaWYgZGVmaW5lZChJTkVUKSB8fCBkZWZpbmVkKElORVQ2KQotI2lmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX29zX1dpbmRvd3MpCisjaWYgIWRlZmluZWQoX1dJTjMyKQogI2luY2x1ZGUgPG5ldGlu
ZXQvdWRwLmg+CiAjZW5kaWYKICNlbmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRl
IDxzeXMvc21wLmg+CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoX19BUFBMRV9fKQotI2RlZmluZSBB
UFBMRV9GSUxFX05PIDIKLSNlbmRpZgotCi0KIHN0YXRpYyB2b2lkCiBzY3RwX3N0b3BfYWxsX2Nv
b2tpZV90aW1lcnMoc3RydWN0IHNjdHBfdGNiICpzdGNiKQogewpAQCAtOTcsNyArOTUsNyBAQCBz
Y3RwX2hhbmRsZV9pbml0KHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAog
ICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIgKnNyYywgc3RydWN0IHNvY2thZGRyICpk
c3QsIHN0cnVjdCBzY3RwaGRyICpzaCwKICAgICAgICAgICAgICAgICAgc3RydWN0IHNjdHBfaW5p
dF9jaHVuayAqY3AsIHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAgICAgICAgICAgICAgICAgIHN0
cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfbmV0cyAqbmV0LCBpbnQgKmFib3J0X25v
X3VubG9jaywKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qg
bWZsb3d0eXBlLCB1aW50MzJfdCBtZmxvd2lkLAogI2VuZGlmCiAgICAgICAgICAgICAgICAgIHVp
bnQzMl90IHZyZl9pZCwgdWludDE2X3QgcG9ydCkKQEAgLTExNCw3ICsxMTIsNyBAQCBzY3RwX2hh
bmRsZV9pbml0KHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCWlmIChu
dG9ocyhjcC0+Y2guY2h1bmtfbGVuZ3RoKSA8IHNpemVvZihzdHJ1Y3Qgc2N0cF9pbml0X2NodW5r
KSkgewogCQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBfQ0FVU0VfSU5WQUxJRF9Q
QVJBTSwgIiIpOwogCQlzY3RwX2Fib3J0X2Fzc29jaWF0aW9uKGlucCwgc3RjYiwgbSwgaXBobGVu
LCBzcmMsIGRzdCwgc2gsIG9wX2VyciwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCSAgICAgICAg
ICAgICAgICAgICAgICAgbWZsb3d0eXBlLCBtZmxvd2lkLAogI2VuZGlmCiAJCQkJICAgICAgIHZy
Zl9pZCwgcG9ydCk7CkBAIC0xMjgsNyArMTI2LDcgQEAgc2N0cF9oYW5kbGVfaW5pdChzdHJ1Y3Qg
bWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJLyogcHJvdG9jb2wgZXJyb3IuLi4g
c2VuZCBhYm9ydCAqLwogCQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBfQ0FVU0Vf
SU5WQUxJRF9QQVJBTSwgIiIpOwogCQlzY3RwX2Fib3J0X2Fzc29jaWF0aW9uKGlucCwgc3RjYiwg
bSwgaXBobGVuLCBzcmMsIGRzdCwgc2gsIG9wX2VyciwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJ
CSAgICAgICAgICAgICAgICAgICAgICAgbWZsb3d0eXBlLCBtZmxvd2lkLAogI2VuZGlmCiAJCQkJ
ICAgICAgIHZyZl9pZCwgcG9ydCk7CkBAIC0xNDAsNyArMTM4LDcgQEAgc2N0cF9oYW5kbGVfaW5p
dChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJLyogaW52YWxpZCBw
YXJhbWV0ZXIuLi4gc2VuZCBhYm9ydCAqLwogCQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRlX2NhdXNl
KFNDVFBfQ0FVU0VfSU5WQUxJRF9QQVJBTSwgIiIpOwogCQlzY3RwX2Fib3J0X2Fzc29jaWF0aW9u
KGlucCwgc3RjYiwgbSwgaXBobGVuLCBzcmMsIGRzdCwgc2gsIG9wX2VyciwKLSNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAJCSAgICAgICAgICAgICAgICAgICAgICAgbWZsb3d0eXBlLCBtZmxvd2lkLAog
I2VuZGlmCiAJCQkJICAgICAgIHZyZl9pZCwgcG9ydCk7CkBAIC0xNTIsNyArMTUwLDcgQEAgc2N0
cF9oYW5kbGVfaW5pdChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJ
LyogcHJvdG9jb2wgZXJyb3IuLi4gc2VuZCBhYm9ydCAqLwogCQlvcF9lcnIgPSBzY3RwX2dlbmVy
YXRlX2NhdXNlKFNDVFBfQ0FVU0VfSU5WQUxJRF9QQVJBTSwgIiIpOwogCQlzY3RwX2Fib3J0X2Fz
c29jaWF0aW9uKGlucCwgc3RjYiwgbSwgaXBobGVuLCBzcmMsIGRzdCwgc2gsIG9wX2VyciwKLSNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAJCSAgICAgICAgICAgICAgICAgICAgICAgbWZsb3d0eXBlLCBt
Zmxvd2lkLAogI2VuZGlmCiAJCQkJICAgICAgIHZyZl9pZCwgcG9ydCk7CkBAIC0xNjQsNyArMTYy
LDcgQEAgc2N0cF9oYW5kbGVfaW5pdChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9m
ZnNldCwKIAkJLyogcHJvdG9jb2wgZXJyb3IuLi4gc2VuZCBhYm9ydCAqLwogCQlvcF9lcnIgPSBz
Y3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBfQ0FVU0VfSU5WQUxJRF9QQVJBTSwgIiIpOwogCQlzY3Rw
X2Fib3J0X2Fzc29jaWF0aW9uKGlucCwgc3RjYiwgbSwgaXBobGVuLCBzcmMsIGRzdCwgc2gsIG9w
X2VyciwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCSAgICAgICAgICAgICAgICAgICAgICAgbWZs
b3d0eXBlLCBtZmxvd2lkLAogI2VuZGlmCiAJCQkJICAgICAgIHZyZl9pZCwgcG9ydCk7CkBAIC0x
NzgsNyArMTc2LDcgQEAgc2N0cF9oYW5kbGVfaW5pdChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxl
biwgaW50IG9mZnNldCwKIAkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQX0JBU0Vf
U1lTQ1RMKHNjdHBfZGlhZ19pbmZvX2NvZGUpLAogCQkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJQcm9ibGVtIHdpdGggQVVUSCBwYXJhbWV0ZXJzIik7CiAJCXNjdHBfYWJvcnRfYXNzb2Np
YXRpb24oaW5wLCBzdGNiLCBtLCBpcGhsZW4sIHNyYywgZHN0LCBzaCwgb3BfZXJyLAotI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKIAkJICAgICAgICAgICAgICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93
aWQsCiAjZW5kaWYKIAkJICAgICAgICAgICAgICAgICAgICAgICB2cmZfaWQsIHBvcnQpOwpAQCAt
MjA3LDcgKzIwNSw3IEBAIHNjdHBfaGFuZGxlX2luaXQoc3RydWN0IG1idWYgKm0sIGludCBpcGhs
ZW4sIGludCBvZmZzZXQsCiAJCQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBfQkFT
RV9TWVNDVEwoc2N0cF9kaWFnX2luZm9fY29kZSksCiAJCQkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJObyBsaXN0ZW5lciIpOwogCQkJc2N0cF9zZW5kX2Fib3J0KG0sIGlwaGxlbiwgc3Jj
LCBkc3QsIHNoLCAwLCBvcF9lcnIsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJICAgICAgICAg
ICAgICAgIG1mbG93dHlwZSwgbWZsb3dpZCwgaW5wLT5maWJudW0sCiAjZW5kaWYKIAkJCSAgICAg
ICAgICAgICAgICB2cmZfaWQsIHBvcnQpOwpAQCAtMjE1LDcgKzIxMyw3IEBAIHNjdHBfaGFuZGxl
X2luaXQoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJCWdvdG8gb3V0
bm93OwogCX0KIAlpZiAoKHN0Y2IgIT0gTlVMTCkgJiYKLQkgICAgKFNDVFBfR0VUX1NUQVRFKCZz
dGNiLT5hc29jKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX0FDS19TRU5UKSkgeworCSAgICAoU0NU
UF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tfU0VOVCkpIHsKIAkJ
U0NUUERCRyhTQ1RQX0RFQlVHX0lOUFVUMywgInNjdHBfaGFuZGxlX2luaXQ6IHNlbmRpbmcgU0hV
VERPV04tQUNLXG4iKTsKIAkJc2N0cF9zZW5kX3NodXRkb3duX2FjayhzdGNiLCBOVUxMKTsKIAkJ
c2N0cF9jaHVua19vdXRwdXQoaW5wLCBzdGNiLCBTQ1RQX09VVFBVVF9GUk9NX0NPTlRST0xfUFJP
QywgU0NUUF9TT19OT1RfTE9DS0VEKTsKQEAgLTIyMyw3ICsyMjEsNyBAQCBzY3RwX2hhbmRsZV9p
bml0KHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCQlTQ1RQREJHKFND
VFBfREVCVUdfSU5QVVQzLCAic2N0cF9oYW5kbGVfaW5pdDogc2VuZGluZyBJTklULUFDS1xuIik7
CiAJCXNjdHBfc2VuZF9pbml0aWF0ZV9hY2soaW5wLCBzdGNiLCBuZXQsIG0sIGlwaGxlbiwgb2Zm
c2V0LAogCQkgICAgICAgICAgICAgICAgICAgICAgIHNyYywgZHN0LCBzaCwgY3AsCi0jaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogCQkgICAgICAgICAgICAgICAgICAgICAgIG1mbG93dHlwZSwgbWZsb3dp
ZCwKICNlbmRpZgogCQkgICAgICAgICAgICAgICAgICAgICAgIHZyZl9pZCwgcG9ydCk7CkBAIC0y
MzksMTEgKzIzNyw3IEBAIHNjdHBfaGFuZGxlX2luaXQoc3RydWN0IG1idWYgKm0sIGludCBpcGhs
ZW4sIGludCBvZmZzZXQsCiAgKi8KIAogaW50Ci1zY3RwX2lzX3RoZXJlX3Vuc2VudF9kYXRhKHN0
cnVjdCBzY3RwX3RjYiAqc3RjYiwgaW50IHNvX2xvY2tlZAotI2lmICFkZWZpbmVkKF9fQVBQTEVf
XykgJiYgIWRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCi0JU0NUUF9VTlVTRUQKLSNlbmRp
ZgotKQorc2N0cF9pc190aGVyZV91bnNlbnRfZGF0YShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIGlu
dCBzb19sb2NrZWQpCiB7CiAJaW50IHVuc2VudF9kYXRhOwogCXVuc2lnbmVkIGludCBpOwpAQCAt
NDYzLDM0ICs0NTcsNjkgQEAgc2N0cF9wcm9jZXNzX2luaXRfYWNrKHN0cnVjdCBtYnVmICptLCBp
bnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzb2Nr
YWRkciAqc3JjLCBzdHJ1Y3Qgc29ja2FkZHIgKmRzdCwgc3RydWN0IHNjdHBoZHIgKnNoLAogICAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY3RwX2luaXRfYWNrX2NodW5rICpjcCwgc3RydWN0
IHNjdHBfdGNiICpzdGNiLAogICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY3RwX25ldHMg
Km5ldCwgaW50ICphYm9ydF9ub191bmxvY2ssCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkgICAg
ICB1aW50OF90IG1mbG93dHlwZSwgdWludDMyX3QgbWZsb3dpZCwKICNlbmRpZgogICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQzMl90IHZyZl9pZCkKIHsKIAlzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlv
biAqYXNvYzsKIAlzdHJ1Y3QgbWJ1ZiAqb3BfZXJyOwotCWludCByZXR2YWwsIGFib3J0X2ZsYWc7
Ci0JdWludDMyX3QgaW5pdGFja19saW1pdDsKKwlpbnQgcmV0dmFsLCBhYm9ydF9mbGFnLCBjb29r
aWVfZm91bmQ7CisJaW50IGluaXRhY2tfbGltaXQ7CiAJaW50IG5hdF9mcmllbmRseSA9IDA7CiAK
IAkvKiBGaXJzdCB2ZXJpZnkgdGhhdCB3ZSBoYXZlIG5vIGlsbGVnYWwgcGFyYW0ncyAqLwogCWFi
b3J0X2ZsYWcgPSAwOworCWNvb2tpZV9mb3VuZCA9IDA7CiAKIAlvcF9lcnIgPSBzY3RwX2FyZXRo
ZXJlX3VucmVjb2duaXplZF9wYXJhbWV0ZXJzKG0sCiAJCQkJCQkgICAgICAgKG9mZnNldCArIHNp
emVvZihzdHJ1Y3Qgc2N0cF9pbml0X2NodW5rKSksCi0JCQkJCQkgICAgICAgJmFib3J0X2ZsYWcs
IChzdHJ1Y3Qgc2N0cF9jaHVua2hkciAqKWNwLCAmbmF0X2ZyaWVuZGx5KTsKKwkJCQkJCSAgICAg
ICAmYWJvcnRfZmxhZywgKHN0cnVjdCBzY3RwX2NodW5raGRyICopY3AsCisJCQkJCQkgICAgICAg
Jm5hdF9mcmllbmRseSwgJmNvb2tpZV9mb3VuZCk7CiAJaWYgKGFib3J0X2ZsYWcpIHsKIAkJLyog
U2VuZCBhbiBhYm9ydCBhbmQgbm90aWZ5IHBlZXIgKi8KIAkJc2N0cF9hYm9ydF9hbl9hc3NvY2lh
dGlvbihzdGNiLT5zY3RwX2VwLCBzdGNiLCBvcF9lcnIsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CiAJ
CSphYm9ydF9ub191bmxvY2sgPSAxOwogCQlyZXR1cm4gKC0xKTsKIAl9CisJaWYgKCFjb29raWVf
Zm91bmQpIHsKKwkJdWludDE2X3QgbGVuOworCisJCS8qIE9ubHkgcmVwb3J0IHRoZSBtaXNzaW5n
IGNvb2tpZSBwYXJhbWV0ZXIgKi8KKwkJaWYgKG9wX2VyciAhPSBOVUxMKSB7CisJCQlzY3RwX21f
ZnJlZW0ob3BfZXJyKTsKKwkJfQorCQlsZW4gPSAodWludDE2X3QpKHNpemVvZihzdHJ1Y3Qgc2N0
cF9lcnJvcl9taXNzaW5nX3BhcmFtKSArIHNpemVvZih1aW50MTZfdCkpOworCQkvKiBXZSBhYm9y
dCB3aXRoIGFuIGVycm9yIG9mIG1pc3NpbmcgbWFuZGF0b3J5IHBhcmFtICovCisJCW9wX2VyciA9
IHNjdHBfZ2V0X21idWZfZm9yX21zZyhsZW4sIDAsIE1fTk9XQUlULCAxLCBNVF9EQVRBKTsKKwkJ
aWYgKG9wX2VyciAhPSBOVUxMKSB7CisJCQlzdHJ1Y3Qgc2N0cF9lcnJvcl9taXNzaW5nX3BhcmFt
ICpjYXVzZTsKKworCQkJU0NUUF9CVUZfTEVOKG9wX2VycikgPSBsZW47CisJCQljYXVzZSA9IG10
b2Qob3BfZXJyLCBzdHJ1Y3Qgc2N0cF9lcnJvcl9taXNzaW5nX3BhcmFtICopOworCQkJLyogU3Vi
dHJhY3QgdGhlIHJlc2VydmVkIHBhcmFtICovCisJCQljYXVzZS0+Y2F1c2UuY29kZSA9IGh0b25z
KFNDVFBfQ0FVU0VfTUlTU0lOR19QQVJBTSk7CisJCQljYXVzZS0+Y2F1c2UubGVuZ3RoID0gaHRv
bnMobGVuKTsKKwkJCWNhdXNlLT5udW1fbWlzc2luZ19wYXJhbXMgPSBodG9ubCgxKTsKKwkJCWNh
dXNlLT50eXBlWzBdID0gaHRvbnMoU0NUUF9TVEFURV9DT09LSUUpOworCQl9CisJCXNjdHBfYWJv
cnRfYXNzb2NpYXRpb24oc3RjYi0+c2N0cF9lcCwgc3RjYiwgbSwgaXBobGVuLAorCQkJCSAgICAg
ICBzcmMsIGRzdCwgc2gsIG9wX2VyciwKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQorCQkJCSAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQsCisjZW5k
aWYKKwkJCQkgICAgICAgdnJmX2lkLCBuZXQtPnBvcnQpOworCQkqYWJvcnRfbm9fdW5sb2NrID0g
MTsKKwkJcmV0dXJuICgtMyk7CisJfQogCWFzb2MgPSAmc3RjYi0+YXNvYzsKIAlhc29jLT5wZWVy
X3N1cHBvcnRzX25hdCA9ICh1aW50OF90KW5hdF9mcmllbmRseTsKIAkvKiBwcm9jZXNzIHRoZSBw
ZWVyJ3MgcGFyYW1ldGVycyBpbiB0aGUgSU5JVC1BQ0sgKi8KIAlyZXR2YWwgPSBzY3RwX3Byb2Nl
c3NfaW5pdCgoc3RydWN0IHNjdHBfaW5pdF9jaHVuayAqKWNwLCBzdGNiKTsKIAlpZiAocmV0dmFs
IDwgMCkgeworCQlpZiAob3BfZXJyICE9IE5VTEwpIHsKKwkJCXNjdHBfbV9mcmVlbShvcF9lcnIp
OworCQl9CiAJCXJldHVybiAocmV0dmFsKTsKIAl9CiAJaW5pdGFja19saW1pdCA9IG9mZnNldCAr
IG50b2hzKGNwLT5jaC5jaHVua19sZW5ndGgpOwpAQCAtNDk4LDYgKzUyNyw5IEBAIHNjdHBfcHJv
Y2Vzc19pbml0X2FjayhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAlp
ZiAoKHJldHZhbCA9IHNjdHBfbG9hZF9hZGRyZXNzZXNfZnJvbV9pbml0KHN0Y2IsIG0sCiAJICAg
IChvZmZzZXQgKyBzaXplb2Yoc3RydWN0IHNjdHBfaW5pdF9jaHVuaykpLCBpbml0YWNrX2xpbWl0
LAogCSAgICBzcmMsIGRzdCwgTlVMTCwgc3RjYi0+YXNvYy5wb3J0KSkpIHsKKwkJaWYgKG9wX2Vy
ciAhPSBOVUxMKSB7CisJCQlzY3RwX21fZnJlZW0ob3BfZXJyKTsKKwkJfQogCQlvcF9lcnIgPSBz
Y3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9kaWFnX2luZm9fY29kZSks
CiAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlByb2JsZW0gd2l0aCBhZGRyZXNzIHBh
cmFtZXRlcnMiKTsKIAkJU0NUUERCRyhTQ1RQX0RFQlVHX0lOUFVUMSwKQEAgLTUwNSw3ICs1Mzcs
NyBAQCBzY3RwX3Byb2Nlc3NfaW5pdF9hY2soc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGlu
dCBvZmZzZXQsCiAJCQlyZXR2YWwpOwogCQlzY3RwX2Fib3J0X2Fzc29jaWF0aW9uKHN0Y2ItPnNj
dHBfZXAsIHN0Y2IsIG0sIGlwaGxlbiwKIAkJICAgICAgICAgICAgICAgICAgICAgICBzcmMsIGRz
dCwgc2gsIG9wX2VyciwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCSAgICAgICAgICAgICAgICAg
ICAgICAgbWZsb3d0eXBlLCBtZmxvd2lkLAogI2VuZGlmCiAJCSAgICAgICAgICAgICAgICAgICAg
ICAgdnJmX2lkLCBuZXQtPnBvcnQpOwpAQCAtNTUwLDggKzU4Miw4IEBAIHNjdHBfcHJvY2Vzc19p
bml0X2FjayhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAkgICAgYXNv
Yy0+cHJpbWFyeV9kZXN0aW5hdGlvbiwgU0NUUF9GUk9NX1NDVFBfSU5QVVQgKyBTQ1RQX0xPQ18z
KTsKIAogCS8qIGNhbGN1bGF0ZSB0aGUgUlRPICovCi0JbmV0LT5SVE8gPSBzY3RwX2NhbGN1bGF0
ZV9ydG8oc3RjYiwgYXNvYywgbmV0LCAmYXNvYy0+dGltZV9lbnRlcmVkLAotCSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNDVFBfUlRUX0ZST01fTk9OX0RBVEEpOworCXNjdHBfY2FsY3Vs
YXRlX3J0byhzdGNiLCBhc29jLCBuZXQsICZhc29jLT50aW1lX2VudGVyZWQsCisJICAgICAgICAg
ICAgICAgICAgIFNDVFBfUlRUX0ZST01fTk9OX0RBVEEpOwogI2lmIGRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKIAlpZiAoc3RjYi0+c2N0cF9lcC0+cmVjdl9jYWxsYmFjaykgewogCQlpZiAoc3RjYi0+
c2N0cF9zb2NrZXQpIHsKQEAgLTU3MCw0OSArNjAyLDE1IEBAIHNjdHBfcHJvY2Vzc19pbml0X2Fj
ayhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJCSAgICAgKGlucC0+
c2VuZF9zYl90aHJlc2hvbGQgPT0gMCkpKSB7CiAJCQkJYXRvbWljX2FkZF9pbnQoJnN0Y2ItPmFz
b2MucmVmY250LCAxKTsKIAkJCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7Ci0JCQkJaW5wLT5zZW5k
X2NhbGxiYWNrKHN0Y2ItPnNjdHBfc29ja2V0LCBzYl9mcmVlX25vdyk7CisJCQkJaW5wLT5zZW5k
X2NhbGxiYWNrKHN0Y2ItPnNjdHBfc29ja2V0LCBzYl9mcmVlX25vdywgaW5wLT51bHBfaW5mbyk7
CiAJCQkJU0NUUF9UQ0JfTE9DSyhzdGNiKTsKIAkJCQlhdG9taWNfc3VidHJhY3RfaW50KCZzdGNi
LT5hc29jLnJlZmNudCwgMSk7CiAJCQl9CiAJCX0KIAl9CiAjZW5kaWYKLQlyZXR2YWwgPSBzY3Rw
X3NlbmRfY29va2llX2VjaG8obSwgb2Zmc2V0LCBzdGNiLCBuZXQpOwotCWlmIChyZXR2YWwgPCAw
KSB7Ci0JCS8qCi0JCSAqIE5vIGNvb2tpZSwgd2UgcHJvYmFibHkgc2hvdWxkIHNlbmQgYSBvcCBl
cnJvci4gQnV0IGluIGFueQotCQkgKiBjYXNlIGlmIHRoZXJlIGlzIG5vIGNvb2tpZSBpbiB0aGUg
SU5JVC1BQ0ssIHdlIGNhbgotCQkgKiBhYmFuZG9uIHRoZSBwZWVyLCBpdHMgYnJva2UuCi0JCSAq
LwotCQlpZiAocmV0dmFsID09IC0zKSB7Ci0JCQl1aW50MTZfdCBsZW47Ci0KLQkJCWxlbiA9ICh1
aW50MTZfdCkoc2l6ZW9mKHN0cnVjdCBzY3RwX2Vycm9yX21pc3NpbmdfcGFyYW0pICsgc2l6ZW9m
KHVpbnQxNl90KSk7Ci0JCQkvKiBXZSBhYm9ydCB3aXRoIGFuIGVycm9yIG9mIG1pc3NpbmcgbWFu
ZGF0b3J5IHBhcmFtICovCi0JCQlvcF9lcnIgPSBzY3RwX2dldF9tYnVmX2Zvcl9tc2cobGVuLCAw
LCBNX05PV0FJVCwgMSwgTVRfREFUQSk7Ci0JCQlpZiAob3BfZXJyICE9IE5VTEwpIHsKLQkJCQlz
dHJ1Y3Qgc2N0cF9lcnJvcl9taXNzaW5nX3BhcmFtICpjYXVzZTsKLQotCQkJCVNDVFBfQlVGX0xF
TihvcF9lcnIpID0gbGVuOwotCQkJCWNhdXNlID0gbXRvZChvcF9lcnIsIHN0cnVjdCBzY3RwX2Vy
cm9yX21pc3NpbmdfcGFyYW0gKik7Ci0JCQkJLyogU3VidHJhY3QgdGhlIHJlc2VydmVkIHBhcmFt
ICovCi0JCQkJY2F1c2UtPmNhdXNlLmNvZGUgPSBodG9ucyhTQ1RQX0NBVVNFX01JU1NJTkdfUEFS
QU0pOwotCQkJCWNhdXNlLT5jYXVzZS5sZW5ndGggPSBodG9ucyhsZW4pOwotCQkJCWNhdXNlLT5u
dW1fbWlzc2luZ19wYXJhbXMgPSBodG9ubCgxKTsKLQkJCQljYXVzZS0+dHlwZVswXSA9IGh0b25z
KFNDVFBfU1RBVEVfQ09PS0lFKTsKLQkJCX0KLQkJCXNjdHBfYWJvcnRfYXNzb2NpYXRpb24oc3Rj
Yi0+c2N0cF9lcCwgc3RjYiwgbSwgaXBobGVuLAotCQkJICAgICAgICAgICAgICAgICAgICAgICBz
cmMsIGRzdCwgc2gsIG9wX2VyciwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQotCQkJICAgICAg
ICAgICAgICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQsCi0jZW5kaWYKLQkJCSAgICAgICAg
ICAgICAgICAgICAgICAgdnJmX2lkLCBuZXQtPnBvcnQpOwotCQkJKmFib3J0X25vX3VubG9jayA9
IDE7Ci0JCX0KLQkJcmV0dXJuIChyZXR2YWwpOwotCX0KLQotCXJldHVybiAoMCk7CisJcmV0dmFs
ID0gc2N0cF9zZW5kX2Nvb2tpZV9lY2hvKG0sIG9mZnNldCwgaW5pdGFja19saW1pdCwgc3RjYiwg
bmV0KTsKKwlyZXR1cm4gKHJldHZhbCk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC03MjYsOCArNzI0
LDggQEAgc2N0cF9oYW5kbGVfaGVhcnRiZWF0X2FjayhzdHJ1Y3Qgc2N0cF9oZWFydGJlYXRfY2h1
bmsgKmNwLAogCXR2LnR2X3NlYyA9IGNwLT5oZWFydGJlYXQuaGJfaW5mby50aW1lX3ZhbHVlXzE7
CiAJdHYudHZfdXNlYyA9IGNwLT5oZWFydGJlYXQuaGJfaW5mby50aW1lX3ZhbHVlXzI7CiAJLyog
Tm93IGxldHMgZG8gYSBSVE8gd2l0aCB0aGlzICovCi0Jcl9uZXQtPlJUTyA9IHNjdHBfY2FsY3Vs
YXRlX3J0byhzdGNiLCAmc3RjYi0+YXNvYywgcl9uZXQsICZ0diwKLQkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNDVFBfUlRUX0ZST01fTk9OX0RBVEEpOworCXNjdHBfY2FsY3VsYXRl
X3J0byhzdGNiLCAmc3RjYi0+YXNvYywgcl9uZXQsICZ0diwKKwkgICAgICAgICAgICAgICAgICAg
U0NUUF9SVFRfRlJPTV9OT05fREFUQSk7CiAJaWYgKCEocl9uZXQtPmRlc3Rfc3RhdGUgJiBTQ1RQ
X0FERFJfUkVBQ0hBQkxFKSkgewogCQlyX25ldC0+ZGVzdF9zdGF0ZSB8PSBTQ1RQX0FERFJfUkVB
Q0hBQkxFOwogCQlzY3RwX3VscF9ub3RpZnkoU0NUUF9OT1RJRllfSU5URVJGQUNFX1VQLCBzdGNi
LApAQCAtNzcxLDggKzc2OSw3IEBAIHNjdHBfaGFuZGxlX2hlYXJ0YmVhdF9hY2soc3RydWN0IHNj
dHBfaGVhcnRiZWF0X2NodW5rICpjcCwKIAkJCQlzY3RwX21vdmVfY2h1bmtzX2Zyb21fbmV0KHN0
Y2IsCiAJCQkJCXN0Y2ItPmFzb2MuZGVsZXRlZF9wcmltYXJ5KTsKIAkJCX0KLQkJCXNjdHBfZGVs
ZXRlX3ByaW1fdGltZXIoc3RjYi0+c2N0cF9lcCwgc3RjYiwKLQkJCQkJc3RjYi0+YXNvYy5kZWxl
dGVkX3ByaW1hcnkpOworCQkJc2N0cF9kZWxldGVfcHJpbV90aW1lcihzdGNiLT5zY3RwX2VwLCBz
dGNiKTsKIAkJfQogCX0KIH0KQEAgLTc4MCwzMSArNzc3LDM1IEBAIHNjdHBfaGFuZGxlX2hlYXJ0
YmVhdF9hY2soc3RydWN0IHNjdHBfaGVhcnRiZWF0X2NodW5rICpjcCwKIHN0YXRpYyBpbnQKIHNj
dHBfaGFuZGxlX25hdF9jb2xsaWRpbmdfc3RhdGUoc3RydWN0IHNjdHBfdGNiICpzdGNiKQogewot
CS8qIHJldHVybiAwIG1lYW5zIHdlIHdhbnQgeW91IHRvIHByb2NlZWQgd2l0aCB0aGUgYWJvcnQK
LQkgKiBub24temVybyBtZWFucyBubyBhYm9ydCBwcm9jZXNzaW5nCi0JKi8KKwkvKgorCSAqIFJl
dHVybiAwIG1lYW5zIHdlIHdhbnQgeW91IHRvIHByb2NlZWQgd2l0aCB0aGUgYWJvcnQKKwkgKiBu
b24temVybyBtZWFucyBubyBhYm9ydCBwcm9jZXNzaW5nLgorCSAqLworCXVpbnQzMl90IG5ld192
dGFnOwogCXN0cnVjdCBzY3RwYXNvY2hlYWQgKmhlYWQ7CiAKLQlpZiAoKFNDVFBfR0VUX1NUQVRF
KCZzdGNiLT5hc29jKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB8fAotCSAgICAoU0NUUF9H
RVRfU1RBVEUoJnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCkpIHsKKwlp
ZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQpIHx8CisJ
ICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9FQ0hPRUQpKSB7
CisJCW5ld192dGFnID0gc2N0cF9zZWxlY3RfYV90YWcoc3RjYi0+c2N0cF9lcCwgc3RjYi0+c2N0
cF9lcC0+c2N0cF9scG9ydCwgc3RjYi0+cnBvcnQsIDEpOwogCQlhdG9taWNfYWRkX2ludCgmc3Rj
Yi0+YXNvYy5yZWZjbnQsIDEpOwogCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CiAJCVNDVFBfSU5Q
X0lORk9fV0xPQ0soKTsKIAkJU0NUUF9UQ0JfTE9DSyhzdGNiKTsKIAkJYXRvbWljX3N1YnRyYWN0
X2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIDEpOworCX0gZWxzZSB7CisJCXJldHVybiAoMCk7CiAJ
fQotCWlmIChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9DT09LSUVf
V0FJVCkgeworCWlmIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9X
QUlUKSB7CiAJCS8qIGdlbmVyYXRlIGEgbmV3IHZ0YWcgYW5kIHNlbmQgaW5pdCAqLwogCQlMSVNU
X1JFTU9WRShzdGNiLCBzY3RwX2Fzb2NzKTsKLQkJc3RjYi0+YXNvYy5teV92dGFnID0gc2N0cF9z
ZWxlY3RfYV90YWcoc3RjYi0+c2N0cF9lcCwgc3RjYi0+c2N0cF9lcC0+c2N0cF9scG9ydCwgc3Rj
Yi0+cnBvcnQsIDEpOworCQlzdGNiLT5hc29jLm15X3Z0YWcgPSBuZXdfdnRhZzsKIAkJaGVhZCA9
ICZTQ1RQX0JBU0VfSU5GTyhzY3RwX2Fzb2NoYXNoKVtTQ1RQX1BDQkhBU0hfQVNPQyhzdGNiLT5h
c29jLm15X3Z0YWcsIFNDVFBfQkFTRV9JTkZPKGhhc2hhc29jbWFyaykpXTsKIAkJLyogcHV0IGl0
IGluIHRoZSBidWNrZXQgaW4gdGhlIHZ0YWcgaGFzaCBvZiBhc3NvYydzIGZvciB0aGUgc3lzdGVt
ICovCiAJCUxJU1RfSU5TRVJUX0hFQUQoaGVhZCwgc3RjYiwgc2N0cF9hc29jcyk7Ci0JCXNjdHBf
c2VuZF9pbml0aWF0ZShzdGNiLT5zY3RwX2VwLCBzdGNiLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwog
CQlTQ1RQX0lOUF9JTkZPX1dVTkxPQ0soKTsKKwkJc2N0cF9zZW5kX2luaXRpYXRlKHN0Y2ItPnNj
dHBfZXAsIHN0Y2IsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CiAJCXJldHVybiAoMSk7Ci0JfQotCWlm
IChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9DT09LSUVfRUNIT0VE
KSB7CisJfSBlbHNlIHsKIAkJLyogdHJlYXQgbGlrZSBhIGNhc2Ugd2hlcmUgdGhlIGNvb2tpZSBl
eHBpcmVkIGkuZS46CiAJCSogLSBkdW1wIGN1cnJlbnQgY29va2llLgogCQkqIC0gZ2VuZXJhdGUg
YSBuZXcgdnRhZy4KQEAgLTgxMiwxNiArODEzLDE1IEBAIHNjdHBfaGFuZGxlX25hdF9jb2xsaWRp
bmdfc3RhdGUoc3RydWN0IHNjdHBfdGNiICpzdGNiKQogCQkqLwogCQkvKiBnZW5lcmF0ZSBhIG5l
dyB2dGFnIGFuZCBzZW5kIGluaXQgKi8KIAkJTElTVF9SRU1PVkUoc3RjYiwgc2N0cF9hc29jcyk7
Ci0JCXN0Y2ItPmFzb2Muc3RhdGUgJj0gflNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRDsKLQkJc3Rj
Yi0+YXNvYy5zdGF0ZSB8PSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUOworCQlTQ1RQX1NFVF9TVEFU
RShzdGNiLCBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKTsKIAkJc2N0cF9zdG9wX2FsbF9jb29raWVf
dGltZXJzKHN0Y2IpOwogCQlzY3RwX3Rvc3Nfb2xkX2Nvb2tpZXMoc3RjYiwgJnN0Y2ItPmFzb2Mp
OwotCQlzdGNiLT5hc29jLm15X3Z0YWcgPSBzY3RwX3NlbGVjdF9hX3RhZyhzdGNiLT5zY3RwX2Vw
LCBzdGNiLT5zY3RwX2VwLT5zY3RwX2xwb3J0LCBzdGNiLT5ycG9ydCwgIDEpOworCQlzdGNiLT5h
c29jLm15X3Z0YWcgPSBuZXdfdnRhZzsKIAkJaGVhZCA9ICZTQ1RQX0JBU0VfSU5GTyhzY3RwX2Fz
b2NoYXNoKVtTQ1RQX1BDQkhBU0hfQVNPQyhzdGNiLT5hc29jLm15X3Z0YWcsIFNDVFBfQkFTRV9J
TkZPKGhhc2hhc29jbWFyaykpXTsKIAkJLyogcHV0IGl0IGluIHRoZSBidWNrZXQgaW4gdGhlIHZ0
YWcgaGFzaCBvZiBhc3NvYydzIGZvciB0aGUgc3lzdGVtICovCiAJCUxJU1RfSU5TRVJUX0hFQUQo
aGVhZCwgc3RjYiwgc2N0cF9hc29jcyk7Ci0JCXNjdHBfc2VuZF9pbml0aWF0ZShzdGNiLT5zY3Rw
X2VwLCBzdGNiLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwogCQlTQ1RQX0lOUF9JTkZPX1dVTkxPQ0so
KTsKKwkJc2N0cF9zZW5kX2luaXRpYXRlKHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIFNDVFBfU09fTk9U
X0xPQ0tFRCk7CiAJCXJldHVybiAoMSk7CiAJfQogCXJldHVybiAoMCk7CkBAIC04NDgsNyArODQ4
LDcgQEAgc3RhdGljIGludAogc2N0cF9oYW5kbGVfYWJvcnQoc3RydWN0IHNjdHBfYWJvcnRfY2h1
bmsgKmFib3J0LAogICAgIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfbmV0cyAq
bmV0KQogewotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19U
RVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCXN0cnVjdCBzb2NrZXQgKnNvOwogI2VuZGlmCiAJdWludDE2X3QgbGVuOwpAQCAtODY5LDEz
ICs4NjksMTMgQEAgc2N0cF9oYW5kbGVfYWJvcnQoc3RydWN0IHNjdHBfYWJvcnRfY2h1bmsgKmFi
b3J0LAogCQljYXVzZSA9IChzdHJ1Y3Qgc2N0cF9lcnJvcl9jYXVzZSAqKShhYm9ydCArIDEpOwog
CQllcnJvciA9IG50b2hzKGNhdXNlLT5jb2RlKTsKIAkJaWYgKGVycm9yID09IFNDVFBfQ0FVU0Vf
TkFUX0NPTExJRElOR19TVEFURSkgewotCQkJU0NUUERCRyhTQ1RQX0RFQlVHX0lOUFVUMiwgIlJl
Y2VpdmVkIENvbGxpZGluZyBzdGF0ZSBhYm9ydCBmbGFnczoleFxuIiwKKwkJCVNDVFBEQkcoU0NU
UF9ERUJVR19JTlBVVDIsICJSZWNlaXZlZCBDb2xsaWRpbmcgc3RhdGUsIEFCT1JUIGZsYWdzOiV4
XG4iLAogCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJvcnQtPmNoLmNodW5rX2ZsYWdz
KTsKIAkJCWlmIChzY3RwX2hhbmRsZV9uYXRfY29sbGlkaW5nX3N0YXRlKHN0Y2IpKSB7CiAJCQkJ
cmV0dXJuICgwKTsKIAkJCX0KIAkJfSBlbHNlIGlmIChlcnJvciA9PSBTQ1RQX0NBVVNFX05BVF9N
SVNTSU5HX1NUQVRFKSB7Ci0JCQlTQ1RQREJHKFNDVFBfREVCVUdfSU5QVVQyLCAiUmVjZWl2ZWQg
bWlzc2luZyBzdGF0ZSBhYm9ydCBmbGFnczoleFxuIiwKKwkJCVNDVFBEQkcoU0NUUF9ERUJVR19J
TlBVVDIsICJSZWNlaXZlZCBtaXNzaW5nIHN0YXRlLCBBQk9SVCBmbGFnczoleFxuIiwKIAkJCSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFib3J0LT5jaC5jaHVua19mbGFncyk7CiAJCQlpZiAo
c2N0cF9oYW5kbGVfbmF0X21pc3Npbmdfc3RhdGUoc3RjYiwgbmV0KSkgewogCQkJCXJldHVybiAo
MCk7CkBAIC04ODUsMjAgKzg4NSwyMCBAQCBzY3RwX2hhbmRsZV9hYm9ydChzdHJ1Y3Qgc2N0cF9h
Ym9ydF9jaHVuayAqYWJvcnQsCiAJCWVycm9yID0gMDsKIAl9CiAJLyogc3RvcCBhbnkgcmVjZWl2
ZSB0aW1lcnMgKi8KLQlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX1JFQ1YsIHN0Y2It
PnNjdHBfZXAsIHN0Y2IsIG5ldCwKKwlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX1JF
Q1YsIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIE5VTEwsCiAJICAgICAgICAgICAgICAgIFNDVFBfRlJP
TV9TQ1RQX0lOUFVUICsgU0NUUF9MT0NfNyk7CiAJLyogbm90aWZ5IHVzZXIgb2YgdGhlIGFib3J0
IGFuZCBjbGVhbiB1cC4uLiAqLwogCXNjdHBfYWJvcnRfbm90aWZpY2F0aW9uKHN0Y2IsIDEsIGVy
cm9yLCBhYm9ydCwgU0NUUF9TT19OT1RfTE9DS0VEKTsKIAkvKiBmcmVlIHRoZSB0Y2IgKi8KIAlT
Q1RQX1NUQVRfSU5DUl9DT1VOVEVSMzIoc2N0cHNfYWJvcnRlZCk7Ci0JaWYgKChTQ1RQX0dFVF9T
VEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9PUEVOKSB8fAotCSAgICAoU0NUUF9HRVRf
U1RBVEUoJnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpKSB7CisJ
aWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHx8CisJICAgIChT
Q1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgewog
CQlTQ1RQX1NUQVRfREVDUl9HQVVHRTMyKHNjdHBzX2N1cnJlc3RhYik7CiAJfQogI2lmZGVmIFND
VFBfQVNPQ0xPR19PRl9UU05TCiAJc2N0cF9wcmludF9vdXRfdHJhY2tfbG9nKHN0Y2IpOwogI2Vu
ZGlmCi0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJ
TkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJ
c28gPSBTQ1RQX0lOUF9TTyhzdGNiLT5zY3RwX2VwKTsKIAlhdG9taWNfYWRkX2ludCgmc3RjYi0+
YXNvYy5yZWZjbnQsIDEpOwogCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKQEAgLTkwNiwxMCArOTA2
LDkgQEAgc2N0cF9oYW5kbGVfYWJvcnQoc3RydWN0IHNjdHBfYWJvcnRfY2h1bmsgKmFib3J0LAog
CVNDVFBfVENCX0xPQ0soc3RjYik7CiAJYXRvbWljX3N1YnRyYWN0X2ludCgmc3RjYi0+YXNvYy5y
ZWZjbnQsIDEpOwogI2VuZGlmCi0Jc3RjYi0+YXNvYy5zdGF0ZSB8PSBTQ1RQX1NUQVRFX1dBU19B
Qk9SVEVEOwogCSh2b2lkKXNjdHBfZnJlZV9hc3NvYyhzdGNiLT5zY3RwX2VwLCBzdGNiLCBTQ1RQ
X05PUk1BTF9QUk9DLAogCQkJICAgICAgU0NUUF9GUk9NX1NDVFBfSU5QVVQgKyBTQ1RQX0xPQ184
KTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElO
RykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlT
Q1RQX1NPQ0tFVF9VTkxPQ0soc28sIDEpOwogI2VuZGlmCiAJU0NUUERCRyhTQ1RQX0RFQlVHX0lO
UFVUMiwgInNjdHBfaGFuZGxlX2Fib3J0OiBmaW5pc2hlZFxuIik7CkBAIC05NTQsNyArOTUzLDcg
QEAgc2N0cF9oYW5kbGVfc2h1dGRvd24oc3RydWN0IHNjdHBfc2h1dGRvd25fY2h1bmsgKmNwLAog
CXN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jOwogCWludCBzb21lX29uX3N0cmVhbXdoZWVs
OwogCWludCBvbGRfc3RhdGU7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NU
UF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAJc3RydWN0IHNvY2tldCAqc287CiAjZW5kaWYKIApAQCAtOTYzLDE1ICs5
NjIsMTUgQEAgc2N0cF9oYW5kbGVfc2h1dGRvd24oc3RydWN0IHNjdHBfc2h1dGRvd25fY2h1bmsg
KmNwLAogCWlmIChzdGNiID09IE5VTEwpCiAJCXJldHVybjsKIAlhc29jID0gJnN0Y2ItPmFzb2M7
Ci0JaWYgKChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB8
fAotCSAgICAoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9DT09LSUVfRUNIT0VE
KSkgeworCWlmICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9DT09LSUVfV0FJ
VCkgfHwKKwkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfQ09PS0lFX0VD
SE9FRCkpIHsKIAkJcmV0dXJuOwogCX0KIAlpZiAobnRvaHMoY3AtPmNoLmNodW5rX2xlbmd0aCkg
IT0gc2l6ZW9mKHN0cnVjdCBzY3RwX3NodXRkb3duX2NodW5rKSkgewogCQkvKiBTaHV0ZG93biBO
T1QgdGhlIGV4cGVjdGVkIHNpemUgKi8KIAkJcmV0dXJuOwogCX0KLQlvbGRfc3RhdGUgPSBTQ1RQ
X0dFVF9TVEFURShhc29jKTsKKwlvbGRfc3RhdGUgPSBTQ1RQX0dFVF9TVEFURShzdGNiKTsKIAlz
Y3RwX3VwZGF0ZV9hY2tlZChzdGNiLCBjcCwgYWJvcnRfZmxhZyk7CiAJaWYgKCphYm9ydF9mbGFn
KSB7CiAJCXJldHVybjsKQEAgLTEwMDUsNyArMTAwNCw3IEBAIHNjdHBfaGFuZGxlX3NodXRkb3du
KHN0cnVjdCBzY3RwX3NodXRkb3duX2NodW5rICpjcCwKIAkJYXNvYy0+Y29udHJvbF9wZGFwaS0+
cGRhcGlfYWJvcnRlZCA9IDE7CiAJCWFzb2MtPmNvbnRyb2xfcGRhcGkgPSBOVUxMOwogCQlTQ1RQ
X0lOUF9SRUFEX1VOTE9DSyhzdGNiLT5zY3RwX2VwKTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykg
fHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJc28gPSBTQ1RQX0lOUF9TTyhzdGNiLT5zY3Rw
X2VwKTsKIAkJYXRvbWljX2FkZF9pbnQoJnN0Y2ItPmFzb2MucmVmY250LCAxKTsKIAkJU0NUUF9U
Q0JfVU5MT0NLKHN0Y2IpOwpAQCAtMTAyMSwxNyArMTAyMCwxNiBAQCBzY3RwX2hhbmRsZV9zaHV0
ZG93bihzdHJ1Y3Qgc2N0cF9zaHV0ZG93bl9jaHVuayAqY3AsCiAJCWlmIChzdGNiLT5zY3RwX3Nv
Y2tldCkgewogCQkJc2N0cF9zb3J3YWtldXAoc3RjYi0+c2N0cF9lcCwgc3RjYi0+c2N0cF9zb2Nr
ZXQpOwogCQl9Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NL
X1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAJCVNDVFBfU09DS0VUX1VOTE9DSyhzbywgMSk7CiAjZW5kaWYKIAl9CiAJLyogZ290byBT
SFVURE9XTl9SRUNFSVZFRCBzdGF0ZSB0byBibG9jayBuZXcgcmVxdWVzdHMgKi8KIAlpZiAoc3Rj
Yi0+c2N0cF9zb2NrZXQpIHsKLQkJaWYgKChTQ1RQX0dFVF9TVEFURShhc29jKSAhPSBTQ1RQX1NU
QVRFX1NIVVRET1dOX1JFQ0VJVkVEKSAmJgotCQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpICE9
IFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQpICYmCi0JCSAgICAoU0NUUF9HRVRfU1RBVEUo
YXNvYykgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKSkgewotCQkJU0NUUF9TRVRfU1RBVEUo
YXNvYywgU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCk7Ci0JCQlTQ1RQX0NMRUFSX1NVQlNU
QVRFKGFzb2MsIFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORyk7CisJCWlmICgoU0NUUF9HRVRf
U1RBVEUoc3RjYikgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkgJiYKKwkJICAgIChT
Q1RQX0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX0FDS19TRU5UKSAmJgor
CQkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCkp
IHsKKwkJCVNDVFBfU0VUX1NUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQp
OwogCQkJLyogbm90aWZ5IHVwcGVyIGxheWVyIHRoYXQgcGVlciBoYXMgaW5pdGlhdGVkIGEgc2h1
dGRvd24gKi8KIAkJCXNjdHBfdWxwX25vdGlmeShTQ1RQX05PVElGWV9QRUVSX1NIVVRET1dOLCBz
dGNiLCAwLCBOVUxMLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwogCkBAIC0xMDM5LDcgKzEwMzcsNyBA
QCBzY3RwX2hhbmRsZV9zaHV0ZG93bihzdHJ1Y3Qgc2N0cF9zaHV0ZG93bl9jaHVuayAqY3AsCiAJ
CQkodm9pZClTQ1RQX0dFVFRJTUVfVElNRVZBTCgmYXNvYy0+dGltZV9lbnRlcmVkKTsKIAkJfQog
CX0KLQlpZiAoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9TRU5U
KSB7CisJaWYgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfU0hVVERPV05fU0VO
VCkgewogCQkvKgogCQkgKiBzdG9wIHRoZSBzaHV0ZG93biB0aW1lciwgc2luY2Ugd2UgV0lMTCBt
b3ZlIHRvCiAJCSAqIFNIVVRET1dOLUFDSy1TRU5ULgpAQCAtMTA1OSwxMyArMTA1NywxMiBAQCBz
Y3RwX2hhbmRsZV9zaHV0ZG93bihzdHJ1Y3Qgc2N0cF9zaHV0ZG93bl9jaHVuayAqY3AsCiAJCS8q
IG5vIG91dHN0YW5kaW5nIGRhdGEgdG8gc2VuZCwgc28gbW92ZSBvbi4uLiAqLwogCQkvKiBzZW5k
IFNIVVRET1dOLUFDSyAqLwogCQkvKiBtb3ZlIHRvIFNIVVRET1dOLUFDSy1TRU5UIHN0YXRlICov
Ci0JCWlmICgoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9PUEVOKSB8fAotCQkg
ICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQp
KSB7CisJCWlmICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9PUEVOKSB8fAor
CQkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlW
RUQpKSB7CiAJCQlTQ1RQX1NUQVRfREVDUl9HQVVHRTMyKHNjdHBzX2N1cnJlc3RhYik7CiAJCX0K
LQkJU0NUUF9DTEVBUl9TVUJTVEFURShhc29jLCBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJTkcp
OwotCQlpZiAoU0NUUF9HRVRfU1RBVEUoYXNvYykgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tf
U0VOVCkgewotCQkJU0NUUF9TRVRfU1RBVEUoYXNvYywgU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tf
U0VOVCk7CisJCWlmIChTQ1RQX0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dO
X0FDS19TRU5UKSB7CisJCQlTQ1RQX1NFVF9TVEFURShzdGNiLCBTQ1RQX1NUQVRFX1NIVVRET1dO
X0FDS19TRU5UKTsKIAkJCXNjdHBfc3RvcF90aW1lcnNfZm9yX3NodXRkb3duKHN0Y2IpOwogCQkJ
c2N0cF9zZW5kX3NodXRkb3duX2FjayhzdGNiLCBuZXQpOwogCQkJc2N0cF90aW1lcl9zdGFydChT
Q1RQX1RJTUVSX1RZUEVfU0hVVERPV05BQ0ssCkBAIC0xMDgyLDcgKzEwNzksNyBAQCBzY3RwX2hh
bmRsZV9zaHV0ZG93bl9hY2soc3RydWN0IHNjdHBfc2h1dGRvd25fYWNrX2NodW5rICpjcCBTQ1RQ
X1VOVVNFRCwKICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQp
CiB7CiAJc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2M7Ci0jaWYgZGVmaW5lZChfX0FQUExF
X18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExF
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJc3RydWN0IHNvY2tldCAqc287CiAKIAlz
byA9IFNDVFBfSU5QX1NPKHN0Y2ItPnNjdHBfZXApOwpAQCAtMTA5NCwxNSArMTA5MSwxNSBAQCBz
Y3RwX2hhbmRsZV9zaHV0ZG93bl9hY2soc3RydWN0IHNjdHBfc2h1dGRvd25fYWNrX2NodW5rICpj
cCBTQ1RQX1VOVVNFRCwKIAogCWFzb2MgPSAmc3RjYi0+YXNvYzsKIAkvKiBwcm9jZXNzIGFjY29y
ZGluZyB0byBhc3NvY2lhdGlvbiBzdGF0ZSAqLwotCWlmICgoU0NUUF9HRVRfU1RBVEUoYXNvYykg
PT0gU0NUUF9TVEFURV9DT09LSUVfV0FJVCkgfHwKLQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2Mp
ID09IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCkpIHsKKwlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0
Y2IpID09IFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQpIHx8CisJICAgIChTQ1RQX0dFVF9TVEFURShz
dGNiKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9FQ0hPRUQpKSB7CiAJCS8qIHVuZXhwZWN0ZWQgU0hV
VERPV04tQUNLLi4uIGRvIE9PVEIgaGFuZGxpbmcuLi4gKi8KIAkJc2N0cF9zZW5kX3NodXRkb3du
X2NvbXBsZXRlKHN0Y2IsIG5ldCwgMSk7CiAJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKIAkJcmV0
dXJuOwogCX0KLQlpZiAoKFNDVFBfR0VUX1NUQVRFKGFzb2MpICE9IFNDVFBfU1RBVEVfU0hVVERP
V05fU0VOVCkgJiYKLQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpICE9IFNDVFBfU1RBVEVfU0hV
VERPV05fQUNLX1NFTlQpKSB7CisJaWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQX1NU
QVRFX1NIVVRET1dOX1NFTlQpICYmCisJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQ
X1NUQVRFX1NIVVRET1dOX0FDS19TRU5UKSkgewogCQkvKiB1bmV4cGVjdGVkIFNIVVRET1dOLUFD
Sy4uLiBzbyBpZ25vcmUuLi4gKi8KIAkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwogCQlyZXR1cm47
CkBAIC0xMTE2LDcgKzExMTMsNyBAQCBzY3RwX2hhbmRsZV9zaHV0ZG93bl9hY2soc3RydWN0IHNj
dHBfc2h1dGRvd25fYWNrX2NodW5rICpjcCBTQ1RQX1VOVVNFRCwKIAkJYXNvYy0+Y29udHJvbF9w
ZGFwaS0+cGRhcGlfYWJvcnRlZCA9IDE7CiAJCWFzb2MtPmNvbnRyb2xfcGRhcGkgPSBOVUxMOwog
CQlTQ1RQX0lOUF9SRUFEX1VOTE9DSyhzdGNiLT5zY3RwX2VwKTsKLSNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJYXRvbWljX2FkZF9pbnQoJnN0Y2It
PmFzb2MucmVmY250LCAxKTsKIAkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwogCQlTQ1RQX1NPQ0tF
VF9MT0NLKHNvLCAxKTsKQEAgLTExMjksNyArMTEyNiw3IEBAIHNjdHBfaGFuZGxlX3NodXRkb3du
X2FjayhzdHJ1Y3Qgc2N0cF9zaHV0ZG93bl9hY2tfY2h1bmsgKmNwIFNDVFBfVU5VU0VELAogCQl9
CiAjZW5kaWYKIAkJc2N0cF9zb3J3YWtldXAoc3RjYi0+c2N0cF9lcCwgc3RjYi0+c2N0cF9zb2Nr
ZXQpOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNU
SU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
CQlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDEpOwogI2VuZGlmCiAJfQpAQCAtMTE1NSw3ICsxMTUy
LDcgQEAgc2N0cF9oYW5kbGVfc2h1dGRvd25fYWNrKHN0cnVjdCBzY3RwX3NodXRkb3duX2Fja19j
aHVuayAqY3AgU0NUUF9VTlVTRUQsCiAJfQogCVNDVFBfU1RBVF9JTkNSX0NPVU5URVIzMihzY3Rw
c19zaHV0ZG93bik7CiAJLyogZnJlZSB0aGUgVENCIGJ1dCBmaXJzdCBzYXZlIG9mZiB0aGUgZXAg
Ki8KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElO
RykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlh
dG9taWNfYWRkX2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIDEpOwogCVNDVFBfVENCX1VOTE9DSyhz
dGNiKTsKIAlTQ1RQX1NPQ0tFVF9MT0NLKHNvLCAxKTsKQEAgLTExNjQsMTkgKzExNjEsMTggQEAg
c2N0cF9oYW5kbGVfc2h1dGRvd25fYWNrKHN0cnVjdCBzY3RwX3NodXRkb3duX2Fja19jaHVuayAq
Y3AgU0NUUF9VTlVTRUQsCiAjZW5kaWYKIAkodm9pZClzY3RwX2ZyZWVfYXNzb2Moc3RjYi0+c2N0
cF9lcCwgc3RjYiwgU0NUUF9OT1JNQUxfUFJPQywKIAkJCSAgICAgIFNDVFBfRlJPTV9TQ1RQX0lO
UFVUICsgU0NUUF9MT0NfMTEpOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFND
VFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogCVNDVFBfU09DS0VUX1VOTE9DSyhzbywgMSk7CiAjZW5kaWYKIH0KIAog
c3RhdGljIHZvaWQKLXNjdHBfcHJvY2Vzc191bnJlY29nX2NodW5rKHN0cnVjdCBzY3RwX3RjYiAq
c3RjYiwgdWludDhfdCBjaHVua190eXBlLAotICAgIHN0cnVjdCBzY3RwX25ldHMgKm5ldCkKK3Nj
dHBfcHJvY2Vzc191bnJlY29nX2NodW5rKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgdWludDhfdCBj
aHVua190eXBlKQogewogCXN3aXRjaCAoY2h1bmtfdHlwZSkgewogCWNhc2UgU0NUUF9BU0NPTkZf
QUNLOgogCWNhc2UgU0NUUF9BU0NPTkY6Ci0JCXNjdHBfYXNjb25mX2NsZWFudXAoc3RjYiwgbmV0
KTsKKwkJc2N0cF9hc2NvbmZfY2xlYW51cChzdGNiKTsKIAkJYnJlYWs7CiAJY2FzZSBTQ1RQX0lG
T1JXQVJEX0NVTV9UU046CiAJY2FzZSBTQ1RQX0ZPUldBUkRfQ1VNX1RTTjoKQEAgLTEyMzgsNyAr
MTIzNCw3IEBAIHNjdHBfaGFuZGxlX2Vycm9yKHN0cnVjdCBzY3RwX2NodW5raGRyICpjaCwKIAlz
dHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYzsKIAl1aW50MzJfdCByZW1haW5pbmdfbGVuZ3Ro
LCBhZGp1c3Q7CiAJdWludDE2X3QgY29kZSwgY2F1c2VfY29kZSwgY2F1c2VfbGVuZ3RoOwotI2lm
IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lm
IGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCXN0cnVjdCBz
b2NrZXQgKnNvOwogI2VuZGlmCiAKQEAgLTEyNzksMTQgKzEyNzUsMTQgQEAgc2N0cF9oYW5kbGVf
ZXJyb3Ioc3RydWN0IHNjdHBfY2h1bmtoZHIgKmNoLAogCQkJCWNhdXNlX2NvZGUpOwogCQkJYnJl
YWs7CiAJCWNhc2UgU0NUUF9DQVVTRV9OQVRfQ09MTElESU5HX1NUQVRFOgotCQkgICAgICAgIFND
VFBEQkcoU0NUUF9ERUJVR19JTlBVVDIsICJSZWNlaXZlZCBDb2xsaWRpbmcgc3RhdGUgYWJvcnQg
ZmxhZ3M6ICV4XG4iLAorCQkJU0NUUERCRyhTQ1RQX0RFQlVHX0lOUFVUMiwgIlJlY2VpdmVkIENv
bGxpZGluZyBzdGF0ZSwgRVJST1IgZmxhZ3M6ICV4XG4iLAogCQkJCWNoLT5jaHVua19mbGFncyk7
CiAJCQlpZiAoc2N0cF9oYW5kbGVfbmF0X2NvbGxpZGluZ19zdGF0ZShzdGNiKSkgewogCQkJCXJl
dHVybiAoMCk7CiAJCQl9CiAJCQlicmVhazsKIAkJY2FzZSBTQ1RQX0NBVVNFX05BVF9NSVNTSU5H
X1NUQVRFOgotCQkJU0NUUERCRyhTQ1RQX0RFQlVHX0lOUFVUMiwgIlJlY2VpdmVkIG1pc3Npbmcg
c3RhdGUgYWJvcnQgZmxhZ3M6ICV4XG4iLAorCQkJU0NUUERCRyhTQ1RQX0RFQlVHX0lOUFVUMiwg
IlJlY2VpdmVkIG1pc3Npbmcgc3RhdGUsIEVSUk9SIGZsYWdzOiAleFxuIiwKIAkJCSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoLT5jaHVua19mbGFncyk7CiAJCQlpZiAoc2N0cF9oYW5kbGVf
bmF0X21pc3Npbmdfc3RhdGUoc3RjYiwgbmV0KSkgewogCQkJCXJldHVybiAoMCk7CkBAIC0xMjk4
LDcgKzEyOTQsNyBAQCBzY3RwX2hhbmRsZV9lcnJvcihzdHJ1Y3Qgc2N0cF9jaHVua2hkciAqY2gs
CiAJCQkgKiB3YWl0aW5nLgogCQkJICovCiAJCQlpZiAoKGNhdXNlX2xlbmd0aCA+PSBzaXplb2Yo
c3RydWN0IHNjdHBfZXJyb3Jfc3RhbGVfY29va2llKSkgJiYKLQkJCSAgICAoU0NUUF9HRVRfU1RB
VEUoYXNvYykgPT0gU0NUUF9TVEFURV9DT09LSUVfRUNIT0VEKSkgeworCQkJICAgIChTQ1RQX0dF
VF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9FQ0hPRUQpKSB7CiAJCQkJc3RydWN0
IHNjdHBfZXJyb3Jfc3RhbGVfY29va2llICpzdGFsZV9jb29raWU7CiAKIAkJCQlzdGFsZV9jb29r
aWUgPSAoc3RydWN0IHNjdHBfZXJyb3Jfc3RhbGVfY29va2llICopY2F1c2U7CkBAIC0xMzE0LDcg
KzEzMTAsNyBAQCBzY3RwX2hhbmRsZV9lcnJvcihzdHJ1Y3Qgc2N0cF9jaHVua2hkciAqY2gsCiAJ
CQkJICAgIGFzb2MtPm1heF9pbml0X3RpbWVzKSB7CiAJCQkJCXNjdHBfYWJvcnRfbm90aWZpY2F0
aW9uKHN0Y2IsIDAsIDAsIE5VTEwsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CiAJCQkJCS8qIG5vdyBm
cmVlIHRoZSBhc29jICovCi0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9T
T19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAJCQkJCXNvID0gU0NUUF9JTlBfU08oc3RjYi0+c2N0cF9lcCk7CiAJCQkJCWF0
b21pY19hZGRfaW50KCZzdGNiLT5hc29jLnJlZmNudCwgMSk7CiAJCQkJCVNDVFBfVENCX1VOTE9D
SyhzdGNiKTsKQEAgLTEzMjQsMTUgKzEzMjAsMTQgQEAgc2N0cF9oYW5kbGVfZXJyb3Ioc3RydWN0
IHNjdHBfY2h1bmtoZHIgKmNoLAogI2VuZGlmCiAJCQkJCSh2b2lkKXNjdHBfZnJlZV9hc3NvYyhz
dGNiLT5zY3RwX2VwLCBzdGNiLCBTQ1RQX05PUk1BTF9QUk9DLAogCQkJCQkJCSAgICAgIFNDVFBf
RlJPTV9TQ1RQX0lOUFVUICsgU0NUUF9MT0NfMTIpOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8
fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDEp
OwogI2VuZGlmCiAJCQkJCXJldHVybiAoLTEpOwogCQkJCX0KIAkJCQkvKiBibGFzdCBiYWNrIHRv
IElOSVQgc3RhdGUgKi8KIAkJCQlzY3RwX3Rvc3Nfb2xkX2Nvb2tpZXMoc3RjYiwgJnN0Y2ItPmFz
b2MpOwotCQkJCWFzb2MtPnN0YXRlICY9IH5TQ1RQX1NUQVRFX0NPT0tJRV9FQ0hPRUQ7Ci0JCQkJ
YXNvYy0+c3RhdGUgfD0gU0NUUF9TVEFURV9DT09LSUVfV0FJVDsKKwkJCQlTQ1RQX1NFVF9TVEFU
RShzdGNiLCBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKTsKIAkJCQlzY3RwX3N0b3BfYWxsX2Nvb2tp
ZV90aW1lcnMoc3RjYik7CiAJCQkJc2N0cF9zZW5kX2luaXRpYXRlKHN0Y2ItPnNjdHBfZXAsIHN0
Y2IsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CiAJCQl9CkBAIC0xMzU1LDcgKzEzNTAsNyBAQCBzY3Rw
X2hhbmRsZV9lcnJvcihzdHJ1Y3Qgc2N0cF9jaHVua2hkciAqY2gsCiAJCQkJc3RydWN0IHNjdHBf
ZXJyb3JfdW5yZWNvZ25pemVkX2NodW5rICp1bnJlY19jaHVuazsKIAogCQkJCXVucmVjX2NodW5r
ID0gKHN0cnVjdCBzY3RwX2Vycm9yX3VucmVjb2duaXplZF9jaHVuayAqKWNhdXNlOwotCQkJCXNj
dHBfcHJvY2Vzc191bnJlY29nX2NodW5rKHN0Y2IsIHVucmVjX2NodW5rLT5jaC5jaHVua190eXBl
LCBuZXQpOworCQkJCXNjdHBfcHJvY2Vzc191bnJlY29nX2NodW5rKHN0Y2IsIHVucmVjX2NodW5r
LT5jaC5jaHVua190eXBlKTsKIAkJCX0KIAkJCWJyZWFrOwogCQljYXNlIFNDVFBfQ0FVU0VfVU5S
RUNPR19QQVJBTToKQEAgLTE0MTYsNyArMTQxMSw3IEBAIHNjdHBfaGFuZGxlX2luaXRfYWNrKHN0
cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogICAgICAgICAgICAgICAgICAg
ICAgc3RydWN0IHNvY2thZGRyICpzcmMsIHN0cnVjdCBzb2NrYWRkciAqZHN0LCBzdHJ1Y3Qgc2N0
cGhkciAqc2gsCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2N0cF9pbml0X2Fja19jaHVu
ayAqY3AsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVj
dCBzY3RwX25ldHMgKm5ldCwgaW50ICphYm9ydF9ub191bmxvY2ssCi0jaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBtZmxvd3R5cGUsIHVpbnQzMl90IG1m
bG93aWQsCiAjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHZyZl9pZCkKQEAg
LTE0MzcsNyArMTQzMiw3IEBAIHNjdHBfaGFuZGxlX2luaXRfYWNrKHN0cnVjdCBtYnVmICptLCBp
bnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRlX2NhdXNlKFND
VFBfQ0FVU0VfSU5WQUxJRF9QQVJBTSwgIiIpOwogCQlzY3RwX2Fib3J0X2Fzc29jaWF0aW9uKHN0
Y2ItPnNjdHBfZXAsIHN0Y2IsIG0sIGlwaGxlbiwKIAkJICAgICAgICAgICAgICAgICAgICAgICBz
cmMsIGRzdCwgc2gsIG9wX2VyciwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCSAgICAgICAgICAg
ICAgICAgICAgICAgbWZsb3d0eXBlLCBtZmxvd2lkLAogI2VuZGlmCiAJCSAgICAgICAgICAgICAg
ICAgICAgICAgdnJmX2lkLCBuZXQtPnBvcnQpOwpAQCAtMTQ1MSw3ICsxNDQ2LDcgQEAgc2N0cF9o
YW5kbGVfaW5pdF9hY2soc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJ
CW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9DQVVTRV9JTlZBTElEX1BBUkFNLCAi
Iik7CiAJCXNjdHBfYWJvcnRfYXNzb2NpYXRpb24oc3RjYi0+c2N0cF9lcCwgc3RjYiwgbSwgaXBo
bGVuLAogCQkgICAgICAgICAgICAgICAgICAgICAgIHNyYywgZHN0LCBzaCwgb3BfZXJyLAotI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKIAkJICAgICAgICAgICAgICAgICAgICAgICBtZmxvd3R5cGUsIG1m
bG93aWQsCiAjZW5kaWYKIAkJICAgICAgICAgICAgICAgICAgICAgICB2cmZfaWQsIG5ldC0+cG9y
dCk7CkBAIC0xNDYzLDcgKzE0NTgsNyBAQCBzY3RwX2hhbmRsZV9pbml0X2FjayhzdHJ1Y3QgbWJ1
ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9j
YXVzZShTQ1RQX0NBVVNFX0lOVkFMSURfUEFSQU0sICIiKTsKIAkJc2N0cF9hYm9ydF9hc3NvY2lh
dGlvbihzdGNiLT5zY3RwX2VwLCBzdGNiLCBtLCBpcGhsZW4sCiAJCSAgICAgICAgICAgICAgICAg
ICAgICAgc3JjLCBkc3QsIHNoLCBvcF9lcnIsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkgICAg
ICAgICAgICAgICAgICAgICAgIG1mbG93dHlwZSwgbWZsb3dpZCwKICNlbmRpZgogCQkgICAgICAg
ICAgICAgICAgICAgICAgIHZyZl9pZCwgbmV0LT5wb3J0KTsKQEAgLTE0NzUsNyArMTQ3MCw3IEBA
IHNjdHBfaGFuZGxlX2luaXRfYWNrKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zm
c2V0LAogCQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBfQ0FVU0VfSU5WQUxJRF9Q
QVJBTSwgIiIpOwogCQlzY3RwX2Fib3J0X2Fzc29jaWF0aW9uKHN0Y2ItPnNjdHBfZXAsIHN0Y2Is
IG0sIGlwaGxlbiwKIAkJICAgICAgICAgICAgICAgICAgICAgICBzcmMsIGRzdCwgc2gsIG9wX2Vy
ciwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCSAgICAgICAgICAgICAgICAgICAgICAgbWZsb3d0
eXBlLCBtZmxvd2lkLAogI2VuZGlmCiAJCSAgICAgICAgICAgICAgICAgICAgICAgdnJmX2lkLCBu
ZXQtPnBvcnQpOwpAQCAtMTQ4Nyw3ICsxNDgyLDcgQEAgc2N0cF9oYW5kbGVfaW5pdF9hY2soc3Ry
dWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJCW9wX2VyciA9IHNjdHBfZ2Vu
ZXJhdGVfY2F1c2UoU0NUUF9DQVVTRV9JTlZBTElEX1BBUkFNLCAiIik7CiAJCXNjdHBfYWJvcnRf
YXNzb2NpYXRpb24oc3RjYi0+c2N0cF9lcCwgc3RjYiwgbSwgaXBobGVuLAogCQkgICAgICAgICAg
ICAgICAgICAgICAgIHNyYywgZHN0LCBzaCwgb3BfZXJyLAotI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
IAkJICAgICAgICAgICAgICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQsCiAjZW5kaWYKIAkJ
ICAgICAgICAgICAgICAgICAgICAgICB2cmZfaWQsIG5ldC0+cG9ydCk7CkBAIC0xNDk1LDcgKzE0
OTAsNyBAQCBzY3RwX2hhbmRsZV9pbml0X2FjayhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwg
aW50IG9mZnNldCwKIAkJcmV0dXJuICgtMSk7CiAJfQogCS8qIHByb2Nlc3MgYWNjb3JkaW5nIHRv
IGFzc29jaWF0aW9uIHN0YXRlLi4uICovCi0Jc3dpdGNoIChzdGNiLT5hc29jLnN0YXRlICYgU0NU
UF9TVEFURV9NQVNLKSB7CisJc3dpdGNoIChTQ1RQX0dFVF9TVEFURShzdGNiKSkgewogCWNhc2Ug
U0NUUF9TVEFURV9DT09LSUVfV0FJVDoKIAkJLyogdGhpcyBpcyB0aGUgZXhwZWN0ZWQgc3RhdGUg
Zm9yIHRoaXMgY2h1bmsgKi8KIAkJLyogcHJvY2VzcyB0aGUgSU5JVC1BQ0sgcGFyYW1ldGVycyAq
LwpAQCAtMTUxNCw3ICsxNTA5LDcgQEAgc2N0cF9oYW5kbGVfaW5pdF9hY2soc3RydWN0IG1idWYg
Km0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJCX0KIAkJaWYgKHNjdHBfcHJvY2Vzc19pbml0
X2FjayhtLCBpcGhsZW4sIG9mZnNldCwgc3JjLCBkc3QsIHNoLCBjcCwgc3RjYiwKIAkJICAgICAg
ICAgICAgICAgICAgICAgICAgICBuZXQsIGFib3J0X25vX3VubG9jaywKLSNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgbWZsb3d0eXBlLCBtZmxvd2lkLAog
I2VuZGlmCiAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgdnJmX2lkKSA8IDApIHsKQEAgLTE1
MjMsNyArMTUxOCw3IEBAIHNjdHBfaGFuZGxlX2luaXRfYWNrKHN0cnVjdCBtYnVmICptLCBpbnQg
aXBobGVuLCBpbnQgb2Zmc2V0LAogCQl9CiAJCS8qIHVwZGF0ZSBvdXIgc3RhdGUgKi8KIAkJU0NU
UERCRyhTQ1RQX0RFQlVHX0lOUFVUMiwgIm1vdmluZyB0byBDT09LSUUtRUNIT0VEIHN0YXRlXG4i
KTsKLQkJU0NUUF9TRVRfU1RBVEUoJnN0Y2ItPmFzb2MsIFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9F
RCk7CisJCVNDVFBfU0VUX1NUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCk7CiAK
IAkJLyogcmVzZXQgdGhlIFJUTyBjYWxjICovCiAJCWlmIChTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBf
bG9nZ2luZ19sZXZlbCkgJiBTQ1RQX1RIUkVTSE9MRF9MT0dHSU5HKSB7CkBAIC0xNTczLDcgKzE1
NjgsNyBAQCBzY3RwX3Byb2Nlc3NfY29va2llX25ldyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxl
biwgaW50IG9mZnNldCwKICAgICBzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF9u
ZXRzICoqbmV0cCwKICAgICBzdHJ1Y3Qgc29ja2FkZHIgKmluaXRfc3JjLCBpbnQgKm5vdGlmaWNh
dGlvbiwKICAgICBpbnQgYXV0aF9za2lwcGVkLCB1aW50MzJfdCBhdXRoX29mZnNldCwgdWludDMy
X3QgYXV0aF9sZW4sCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogICAgIHVpbnQ4X3QgbWZsb3d0eXBl
LCB1aW50MzJfdCBtZmxvd2lkLAogI2VuZGlmCiAgICAgdWludDMyX3QgdnJmX2lkLCB1aW50MTZf
dCBwb3J0KTsKQEAgLTE1OTIsNyArMTU4Nyw3IEBAIHNjdHBfcHJvY2Vzc19jb29raWVfZXhpc3Rp
bmcoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAgICAgc3RydWN0IHNj
dHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9uZXRzICoq
bmV0cCwKICAgICBzdHJ1Y3Qgc29ja2FkZHIgKmluaXRfc3JjLCBpbnQgKm5vdGlmaWNhdGlvbiwK
ICAgICBpbnQgYXV0aF9za2lwcGVkLCB1aW50MzJfdCBhdXRoX29mZnNldCwgdWludDMyX3QgYXV0
aF9sZW4sCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogICAgIHVpbnQ4X3QgbWZsb3d0eXBlLCB1aW50
MzJfdCBtZmxvd2lkLAogI2VuZGlmCiAgICAgdWludDMyX3QgdnJmX2lkLCB1aW50MTZfdCBwb3J0
KQpAQCAtMTYyMSwxMiArMTYxNiwxMiBAQCBzY3RwX3Byb2Nlc3NfY29va2llX2V4aXN0aW5nKHN0
cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCWlmIChob3dfaW5keCA8IHNp
emVvZihhc29jLT5jb29raWVfaG93KSkgewogCQlhc29jLT5jb29raWVfaG93W2hvd19pbmR4XSA9
IDE7CiAJfQotCWlmIChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dO
X0FDS19TRU5UKSB7CisJaWYgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfU0hV
VERPV05fQUNLX1NFTlQpIHsKIAkJLyogU0hVVERPV04gY2FtZSBpbiBhZnRlciBzZW5kaW5nIElO
SVQtQUNLICovCiAJCXNjdHBfc2VuZF9zaHV0ZG93bl9hY2soc3RjYiwgc3RjYi0+YXNvYy5wcmlt
YXJ5X2Rlc3RpbmF0aW9uKTsKIAkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQX0NB
VVNFX0NPT0tJRV9JTl9TSFVURE9XTiwgIiIpOwogCQlzY3RwX3NlbmRfb3BlcnJfdG8oc3JjLCBk
c3QsIHNoLCBjb29raWUtPnBlZXJzX3Z0YWcsIG9wX2VyciwKLSNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAJCSAgICAgICAgICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQsIGlucC0+ZmlibnVtLAog
I2VuZGlmCiAJCSAgICAgICAgICAgICAgICAgICB2cmZfaWQsIG5ldC0+cG9ydCk7CkBAIC0xNjky
LDcgKzE2ODcsNyBAQCBzY3RwX3Byb2Nlc3NfY29va2llX2V4aXN0aW5nKHN0cnVjdCBtYnVmICpt
LCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCQkJcmV0dXJuIChOVUxMKTsKIAogCQl9Ci0JCXN3
aXRjaCAoU0NUUF9HRVRfU1RBVEUoYXNvYykpIHsKKwkJc3dpdGNoIChTQ1RQX0dFVF9TVEFURShz
dGNiKSkgewogCQkJY2FzZSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUOgogCQkJY2FzZSBTQ1RQX1NU
QVRFX0NPT0tJRV9FQ0hPRUQ6CiAJCQkJLyoKQEAgLTE3MTYsMjIgKzE3MTEsMjIgQEAgc2N0cF9w
cm9jZXNzX2Nvb2tpZV9leGlzdGluZyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9m
ZnNldCwKIAkJCQkgICAgICAgICAgICAgICAgc3RjYiwgbmV0LAogCQkJCSAgICAgICAgICAgICAg
ICBTQ1RQX0ZST01fU0NUUF9JTlBVVCArIFNDVFBfTE9DXzE0KTsKIAkJCQkvKiB1cGRhdGUgY3Vy
cmVudCBzdGF0ZSAqLwotCQkJCWlmIChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRF
X0NPT0tJRV9FQ0hPRUQpCisJCQkJaWYgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RB
VEVfQ09PS0lFX0VDSE9FRCkKIAkJCQkJU0NUUF9TVEFUX0lOQ1JfQ09VTlRFUjMyKHNjdHBzX2Fj
dGl2ZWVzdGFiKTsKIAkJCQllbHNlCiAJCQkJCVNDVFBfU1RBVF9JTkNSX0NPVU5URVIzMihzY3Rw
c19jb2xsaXNpb25lc3RhYik7CiAKLQkJCQlTQ1RQX1NFVF9TVEFURShhc29jLCBTQ1RQX1NUQVRF
X09QRU4pOworCQkJCVNDVFBfU0VUX1NUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfT1BFTik7CiAJCQkJ
aWYgKGFzb2MtPnN0YXRlICYgU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HKSB7CiAJCQkJCXNj
dHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NIVVRET1dOR1VBUkQsCi0JCQkJCQkJIHN0
Y2ItPnNjdHBfZXAsIHN0Y2IsIGFzb2MtPnByaW1hcnlfZGVzdGluYXRpb24pOworCQkJCQkgICAg
ICAgICAgICAgICAgIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIE5VTEwpOwogCQkJCX0KIAkJCQlTQ1RQ
X1NUQVRfSU5DUl9HQVVHRTMyKHNjdHBzX2N1cnJlc3RhYik7CiAJCQkJc2N0cF9zdG9wX2FsbF9j
b29raWVfdGltZXJzKHN0Y2IpOwogCQkJCWlmICgoKHN0Y2ItPnNjdHBfZXAtPnNjdHBfZmxhZ3Mg
JiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJCSAgICAgKHN0Y2ItPnNjdHBfZXAtPnNj
dHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSkgJiYKIAkJCQkgICAgKCFTQ1RQ
X0lTX0xJU1RFTklORyhpbnApKSkgewotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVk
KFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogCQkJCQlzdHJ1Y3Qgc29ja2V0ICpzbzsKICNlbmRpZgogCQkJCQkv
KgpAQCAtMTc0Miw3ICsxNzM3LDcgQEAgc2N0cF9wcm9jZXNzX2Nvb2tpZV9leGlzdGluZyhzdHJ1
Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJCQkJICovCiAJCQkJCXN0Y2It
PnNjdHBfZXAtPnNjdHBfZmxhZ3MgfD0KIAkJCQkJCVNDVFBfUENCX0ZMQUdTX0NPTk5FQ1RFRDsK
LSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykK
KyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQkJ
c28gPSBTQ1RQX0lOUF9TTyhzdGNiLT5zY3RwX2VwKTsKIAkJCQkJYXRvbWljX2FkZF9pbnQoJnN0
Y2ItPmFzb2MucmVmY250LCAxKTsKIAkJCQkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwpAQCAtMTc1
NSw3ICsxNzUwLDcgQEAgc2N0cF9wcm9jZXNzX2Nvb2tpZV9leGlzdGluZyhzdHJ1Y3QgbWJ1ZiAq
bSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJCQkJfQogI2VuZGlmCiAJCQkJCXNvaXNjb25u
ZWN0ZWQoc3RjYi0+c2N0cF9zb2NrZXQpOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZp
bmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDEpOwogI2Vu
ZGlmCiAJCQkJfQpAQCAtMTc2OCw5ICsxNzYzLDggQEAgc2N0cF9wcm9jZXNzX2Nvb2tpZV9leGlz
dGluZyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJCQlvbGQudHZf
c2VjID0gY29va2llLT50aW1lX2VudGVyZWQudHZfc2VjOwogCQkJCW9sZC50dl91c2VjID0gY29v
a2llLT50aW1lX2VudGVyZWQudHZfdXNlYzsKIAkJCQluZXQtPmhiX3Jlc3BvbmRlZCA9IDE7Ci0J
CQkJbmV0LT5SVE8gPSBzY3RwX2NhbGN1bGF0ZV9ydG8oc3RjYiwgYXNvYywgbmV0LAotCQkJCSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvbGQsCi0JCQkJICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU0NUUF9SVFRfRlJPTV9OT05fREFUQSk7CisJCQkJc2N0cF9jYWxjdWxhdGVf
cnRvKHN0Y2IsIGFzb2MsIG5ldCwgJm9sZCwKKwkJCQkgICAgICAgICAgICAgICAgICAgU0NUUF9S
VFRfRlJPTV9OT05fREFUQSk7CiAKIAkJCQlpZiAoc3RjYi0+YXNvYy5zY3RwX2F1dG9jbG9zZV90
aWNrcyAmJgogCQkJCSAgICAoc2N0cF9pc19mZWF0dXJlX29uKGlucCwgU0NUUF9QQ0JfRkxBR1Nf
QVVUT0NMT1NFKSkpIHsKQEAgLTE4MjAsNyArMTgxNCw3IEBAIHNjdHBfcHJvY2Vzc19jb29raWVf
ZXhpc3Rpbmcoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJLyogSWYg
bmF0IHN1cHBvcnQsIGFuZCB0aGUgYmVsb3cgYW5kIHN0Y2IgaXMgZXN0YWJsaXNoZWQsCiAJICog
c2VuZCBiYWNrIGEgQUJPUlQoY29sbGlkaW5nIHN0YXRlKSBpZiB3ZSBhcmUgZXN0YWJsaXNoZWQu
CiAJICovCi0JaWYgKChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX09QRU4pICAm
JgorCWlmICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9PUEVOKSAgJiYKIAkg
ICAgKGFzb2MtPnBlZXJfc3VwcG9ydHNfbmF0KSAmJgogCSAgICAoKG50b2hsKGluaXRhY2tfY3At
PmluaXQuaW5pdGlhdGVfdGFnKSA9PSBhc29jLT5teV92dGFnKSAmJgogCSAgICAoKG50b2hsKGlu
aXRfY3AtPmluaXQuaW5pdGlhdGVfdGFnKSAhPSBhc29jLT5wZWVyX3Z0YWcpIHx8CkBAIC0xODM2
LDcgKzE4MzAsNyBAQCBzY3RwX3Byb2Nlc3NfY29va2llX2V4aXN0aW5nKHN0cnVjdCBtYnVmICpt
LCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCQkgKi8KIAkJb3BfZXJyID0gc2N0cF9nZW5lcmF0
ZV9jYXVzZShTQ1RQX0NBVVNFX05BVF9DT0xMSURJTkdfU1RBVEUsICIiKTsKIAkJc2N0cF9zZW5k
X2Fib3J0KG0sIGlwaGxlbiwgIHNyYywgZHN0LCBzaCwgMCwgb3BfZXJyLAotI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKIAkJICAgICAgICAgICAgICAgIG1mbG93dHlwZSwgbWZsb3dpZCwgaW5wLT5maWJu
dW0sCiAjZW5kaWYKIAkJICAgICAgICAgICAgICAgIHZyZl9pZCwgcG9ydCk7CkBAIC0xOTIzLDE5
ICsxOTE3LDE5IEBAIHNjdHBfcHJvY2Vzc19jb29raWVfZXhpc3Rpbmcoc3RydWN0IG1idWYgKm0s
IGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJCQkJYXNvYy0+Y29va2llX2hvd1tob3dfaW5keF0g
PSAxMDsKIAkJCXJldHVybiAoTlVMTCk7CiAJCX0KLQkJaWYgKChhc29jLT5zdGF0ZSAmIFNDVFBf
U1RBVEVfQ09PS0lFX1dBSVQpIHx8Ci0JCSAgICAoYXNvYy0+c3RhdGUgJiBTQ1RQX1NUQVRFX0NP
T0tJRV9FQ0hPRUQpKSB7CisJCWlmICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFU
RV9DT09LSUVfV0FJVCkgfHwKKwkJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NU
QVRFX0NPT0tJRV9FQ0hPRUQpKSB7CiAJCQkqbm90aWZpY2F0aW9uID0gU0NUUF9OT1RJRllfQVNT
T0NfVVA7CiAKIAkJCWlmICgoKHN0Y2ItPnNjdHBfZXAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9G
TEFHU19UQ1BUWVBFKSB8fAogCQkJICAgICAoc3RjYi0+c2N0cF9lcC0+c2N0cF9mbGFncyAmIFND
VFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpKSAmJgogCQkJICAgICghU0NUUF9JU19MSVNURU5JTkco
aW5wKSkpIHsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tf
VEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKIAkJCQlzdHJ1Y3Qgc29ja2V0ICpzbzsKICNlbmRpZgogCQkJCXN0Y2ItPnNjdHBfZXAtPnNj
dHBfZmxhZ3MgfD0KIAkJCQkJU0NUUF9QQ0JfRkxBR1NfQ09OTkVDVEVEOwotI2lmIGRlZmluZWQo
X19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQo
X19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCXNvID0gU0NUUF9JTlBf
U08oc3RjYi0+c2N0cF9lcCk7CiAJCQkJYXRvbWljX2FkZF9pbnQoJnN0Y2ItPmFzb2MucmVmY250
LCAxKTsKIAkJCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CkBAIC0xOTQ4LDI0ICsxOTQyLDI0IEBA
IHNjdHBfcHJvY2Vzc19jb29raWVfZXhpc3Rpbmcoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4s
IGludCBvZmZzZXQsCiAJCQkJfQogI2VuZGlmCiAJCQkJc29pc2Nvbm5lY3RlZChzdGNiLT5zY3Rw
X3NvY2tldCk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NL
X1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAJCQkJU0NUUF9TT0NLRVRfVU5MT0NLKHNvLCAxKTsKICNlbmRpZgogCQkJfQotCQkJaWYg
KFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCkKKwkJCWlm
IChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9FQ0hPRUQpCiAJCQkJ
U0NUUF9TVEFUX0lOQ1JfQ09VTlRFUjMyKHNjdHBzX2FjdGl2ZWVzdGFiKTsKIAkJCWVsc2UKIAkJ
CQlTQ1RQX1NUQVRfSU5DUl9DT1VOVEVSMzIoc2N0cHNfY29sbGlzaW9uZXN0YWIpOwogCQkJU0NU
UF9TVEFUX0lOQ1JfR0FVR0UzMihzY3Rwc19jdXJyZXN0YWIpOwotCQl9IGVsc2UgaWYgKFNDVFBf
R0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfT1BFTikgeworCQl9IGVsc2UgaWYgKFNDVFBf
R0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfT1BFTikgewogCQkJU0NUUF9TVEFUX0lOQ1Jf
Q09VTlRFUjMyKHNjdHBzX3Jlc3RhcnRlc3RhYik7CiAJCX0gZWxzZSB7CiAJCQlTQ1RQX1NUQVRf
SU5DUl9DT1VOVEVSMzIoc2N0cHNfY29sbGlzaW9uZXN0YWIpOwogCQl9Ci0JCVNDVFBfU0VUX1NU
QVRFKGFzb2MsIFNDVFBfU1RBVEVfT1BFTik7CisJCVNDVFBfU0VUX1NUQVRFKHN0Y2IsIFNDVFBf
U1RBVEVfT1BFTik7CiAJCWlmIChhc29jLT5zdGF0ZSAmIFNDVFBfU1RBVEVfU0hVVERPV05fUEVO
RElORykgewogCQkJc2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfU0hVVERPV05HVUFS
RCwKLQkJCQkJIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIGFzb2MtPnByaW1hcnlfZGVzdGluYXRpb24p
OworCQkJICAgICAgICAgICAgICAgICBzdGNiLT5zY3RwX2VwLCBzdGNiLCBOVUxMKTsKIAkJfQog
CQlzY3RwX3N0b3BfYWxsX2Nvb2tpZV90aW1lcnMoc3RjYik7CiAJCXNjdHBfdG9zc19vbGRfY29v
a2llcyhzdGNiLCBhc29jKTsKQEAgLTE5OTAsNyArMTk4NCw3IEBAIHNjdHBfcHJvY2Vzc19jb29r
aWVfZXhpc3Rpbmcoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJICAg
IGNvb2tpZS0+dGllX3RhZ19wZWVyX3Z0YWcgPT0gYXNvYy0+cGVlcl92dGFnX25vbmNlICYmCiAJ
ICAgIGNvb2tpZS0+dGllX3RhZ19wZWVyX3Z0YWcgIT0gMCkgewogCQlzdHJ1Y3Qgc2N0cGFzb2No
ZWFkICpoZWFkOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9D
S19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogCQlzdHJ1Y3Qgc29ja2V0ICpzbzsKICNlbmRpZgogCkBAIC0yMDA0LDcgKzE5OTgsNyBA
QCBzY3RwX3Byb2Nlc3NfY29va2llX2V4aXN0aW5nKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVu
LCBpbnQgb2Zmc2V0LAogCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaCwgY29v
a2llLCBjb29raWVfbGVuLAogCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnAs
IG5ldHAsIGluaXRfc3JjLG5vdGlmaWNhdGlvbiwKIAkJCSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXV0aF9za2lwcGVkLCBhdXRoX29mZnNldCwgYXV0aF9sZW4sCi0jaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZmxvd3R5cGUs
IG1mbG93aWQsCiAjZW5kaWYKIAkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnJm
X2lkLCBwb3J0KSk7CkBAIC0yMDIzLDI0ICsyMDE3LDI0IEBAIHNjdHBfcHJvY2Vzc19jb29raWVf
ZXhpc3Rpbmcoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJCS8qIG5v
dGlmeSB1cHBlciBsYXllciAqLwogCQkqbm90aWZpY2F0aW9uID0gU0NUUF9OT1RJRllfQVNTT0Nf
UkVTVEFSVDsKIAkJYXRvbWljX2FkZF9pbnQoJnN0Y2ItPmFzb2MucmVmY250LCAxKTsKLQkJaWYg
KChTQ1RQX0dFVF9TVEFURShhc29jKSAhPSBTQ1RQX1NUQVRFX09QRU4pICYmCi0JCSAgICAoU0NU
UF9HRVRfU1RBVEUoYXNvYykgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkgJiYKLQkJ
ICAgIChTQ1RQX0dFVF9TVEFURShhc29jKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpKSB7
CisJCWlmICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9TVEFURV9PUEVOKSAmJgorCQkg
ICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQp
ICYmCisJCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9T
RU5UKSkgewogCQkJU0NUUF9TVEFUX0lOQ1JfR0FVR0UzMihzY3Rwc19jdXJyZXN0YWIpOwogCQl9
Ci0JCWlmIChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHsKKwkJaWYg
KFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfT1BFTikgewogCQkJU0NUUF9TVEFU
X0lOQ1JfR0FVR0UzMihzY3Rwc19yZXN0YXJ0ZXN0YWIpOwotCQl9IGVsc2UgaWYgKFNDVFBfR0VU
X1NUQVRFKGFzb2MpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCkgeworCQl9IGVsc2UgaWYg
KFNDVFBfR0VUX1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCkgewogCQkJ
U0NUUF9TVEFUX0lOQ1JfR0FVR0UzMihzY3Rwc19jb2xsaXNpb25lc3RhYik7CiAJCX0KIAkJaWYg
KGFzb2MtPnN0YXRlICYgU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HKSB7Ci0JCQlTQ1RQX1NF
VF9TVEFURShhc29jLCBTQ1RQX1NUQVRFX09QRU4pOworCQkJU0NUUF9TRVRfU1RBVEUoc3RjYiwg
U0NUUF9TVEFURV9PUEVOKTsKIAkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NI
VVRET1dOR1VBUkQsCi0JCQkJCSBzdGNiLT5zY3RwX2VwLCBzdGNiLCBhc29jLT5wcmltYXJ5X2Rl
c3RpbmF0aW9uKTsKKwkJCSAgICAgICAgICAgICAgICAgc3RjYi0+c2N0cF9lcCwgc3RjYiwgTlVM
TCk7CiAKLQkJfSBlbHNlIGlmICghKGFzb2MtPnN0YXRlICYgU0NUUF9TVEFURV9TSFVURE9XTl9T
RU5UKSkgeworCQl9IGVsc2UgaWYgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVf
U0hVVERPV05fU0VOVCkgewogCQkJLyogbW92ZSB0byBPUEVOIHN0YXRlLCBpZiBub3QgaW4gU0hV
VERPV05fU0VOVCAqLwotCQkJU0NUUF9TRVRfU1RBVEUoYXNvYywgU0NUUF9TVEFURV9PUEVOKTsK
KwkJCVNDVFBfU0VUX1NUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfT1BFTik7CiAJCX0KIAkJYXNvYy0+
cHJlX29wZW5fc3RyZWFtcyA9CiAJCQludG9ocyhpbml0YWNrX2NwLT5pbml0Lm51bV9vdXRib3Vu
ZF9zdHJlYW1zKTsKQEAgLTIwNjIsNyArMjA1Niw3IEBAIHNjdHBfcHJvY2Vzc19jb29raWVfZXhp
c3Rpbmcoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJCQkgICAgYXNv
Yy0+bWFwcGluZ19hcnJheV9zaXplKTsKIAkJfQogCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7Ci0j
aWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisj
aWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCXNvID0g
U0NUUF9JTlBfU08oc3RjYi0+c2N0cF9lcCk7CiAJCVNDVFBfU09DS0VUX0xPQ0soc28sIDEpOwog
I2VuZGlmCkBAIC0yMDczLDcgKzIwNjcsNyBAQCBzY3RwX3Byb2Nlc3NfY29va2llX2V4aXN0aW5n
KHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCQkvKiBzZW5kIHVwIGFs
bCB0aGUgZGF0YSAqLwogCQlTQ1RQX1RDQl9TRU5EX0xPQ0soc3RjYik7CiAKLQkJc2N0cF9yZXBv
cnRfYWxsX291dGJvdW5kKHN0Y2IsIDAsIDEsIFNDVFBfU09fTE9DS0VEKTsKKwkJc2N0cF9yZXBv
cnRfYWxsX291dGJvdW5kKHN0Y2IsIDAsIFNDVFBfU09fTE9DS0VEKTsKIAkJZm9yIChpID0gMDsg
aSA8IHN0Y2ItPmFzb2Muc3RyZWFtb3V0Y250OyBpKyspIHsKIAkJCXN0Y2ItPmFzb2Muc3RybW91
dFtpXS5jaHVua3Nfb25fcXVldWVzID0gMDsKICNpZiBkZWZpbmVkKFNDVFBfREVUQUlMRURfU1RS
X1NUQVRTKQpAQCAtMjEwOCw3ICsyMTAyLDcgQEAgc2N0cF9wcm9jZXNzX2Nvb2tpZV9leGlzdGlu
ZyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJU0NUUF9UQ0JfU0VO
RF9VTkxPQ0soc3RjYik7CiAJCVNDVFBfSU5QX1dVTkxPQ0soc3RjYi0+c2N0cF9lcCk7CiAJCVND
VFBfSU5QX0lORk9fV1VOTE9DSygpOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVk
KFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDEpOwogI2VuZGlmCiAJ
CWFzb2MtPnRvdGFsX2ZsaWdodCA9IDA7CkBAIC0yMTY1LDcgKzIxNTksNyBAQCBzY3RwX3Byb2Nl
c3NfY29va2llX25ldyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKICAg
ICBzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF9uZXRzICoqbmV0cCwKICAgICBz
dHJ1Y3Qgc29ja2FkZHIgKmluaXRfc3JjLCBpbnQgKm5vdGlmaWNhdGlvbiwKICAgICBpbnQgYXV0
aF9za2lwcGVkLCB1aW50MzJfdCBhdXRoX29mZnNldCwgdWludDMyX3QgYXV0aF9sZW4sCi0jaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogICAgIHVpbnQ4X3QgbWZsb3d0eXBlLCB1aW50MzJfdCBtZmxvd2lk
LAogI2VuZGlmCiAgICAgdWludDMyX3QgdnJmX2lkLCB1aW50MTZfdCBwb3J0KQpAQCAtMjE3OCw4
ICsyMTcyLDggQEAgc2N0cF9wcm9jZXNzX2Nvb2tpZV9uZXcoc3RydWN0IG1idWYgKm0sIGludCBp
cGhsZW4sIGludCBvZmZzZXQsCiAJaW50IGluaXRfb2Zmc2V0LCBpbml0YWNrX29mZnNldCwgaW5p
dGFja19saW1pdDsKIAlpbnQgcmV0dmFsOwogCWludCBlcnJvciA9IDA7Ci0JdWludDhfdCBhdXRo
X2NodW5rX2J1ZltTQ1RQX1BBUkFNX0JVRkZFUl9TSVpFXTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVf
XykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKwl1aW50OF90IGF1dGhfY2h1bmtf
YnVmW1NDVFBfQ0hVTktfQlVGRkVSX1NJWkVdOworI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCXN0cnVjdCBzb2NrZXQgKnNvOwogCiAJc28gPSBTQ1RQ
X0lOUF9TTyhpbnApOwpAQCAtMjI0MywxNCArMjIzNywxNCBAQCBzY3RwX3Byb2Nlc3NfY29va2ll
X25ldyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAkgICAgICAgICAg
ICAgICAgICAgICAgIG50b2hsKGluaXRhY2tfY3AtPmluaXQuaW5pdGlhdGVfdGFnKSwgdnJmX2lk
LAogCSAgICAgICAgICAgICAgICAgICAgICAgbnRvaHMoaW5pdGFja19jcC0+aW5pdC5udW1fb3V0
Ym91bmRfc3RyZWFtcyksCiAJICAgICAgICAgICAgICAgICAgICAgICBwb3J0LAotI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAwMAotCSAgICAgICAg
ICAgICAgICAgICAgICAgKHN0cnVjdCB0aHJlYWQgKilOVUxMCi0jZWxpZiBkZWZpbmVkKF9fV2lu
ZG93c19fKQotCSAgICAgICAgICAgICAgICAgICAgICAgKFBLVEhSRUFEKU5VTEwKKyNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCSAgICAgICAgICAg
ICAgICAgICAgICAgKHN0cnVjdCB0aHJlYWQgKilOVUxMLAorI2VsaWYgZGVmaW5lZChfV0lOMzIp
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJICAgICAgICAgICAgICAgICAgICAgICAoUEtU
SFJFQUQpTlVMTCwKICNlbHNlCi0JICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHByb2Mg
KilOVUxMCisJICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHByb2MgKilOVUxMLAogI2Vu
ZGlmCi0JICAgICAgICAgICAgICAgICAgICAgICApOworCSAgICAgICAgICAgICAgICAgICAgICAg
U0NUUF9ET05UX0lOSVRJQUxJWkVfQVVUSF9QQVJBTVMpOwogCWlmIChzdGNiID09IE5VTEwpIHsK
IAkJc3RydWN0IG1idWYgKm9wX2VycjsKIApAQCAtMjI2MCw3ICsyMjU0LDcgQEAgc2N0cF9wcm9j
ZXNzX2Nvb2tpZV9uZXcoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJ
CW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9DQVVTRV9PVVRfT0ZfUkVTQywgIiIp
OwogCQlzY3RwX2Fib3J0X2Fzc29jaWF0aW9uKGlucCwgKHN0cnVjdCBzY3RwX3RjYiAqKU5VTEws
IG0sIGlwaGxlbiwKIAkJICAgICAgICAgICAgICAgICAgICAgICBzcmMsIGRzdCwgc2gsIG9wX2Vy
ciwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCSAgICAgICAgICAgICAgICAgICAgICAgbWZsb3d0
eXBlLCBtZmxvd2lkLAogI2VuZGlmCiAJCSAgICAgICAgICAgICAgICAgICAgICAgdnJmX2lkLCBw
b3J0KTsKQEAgLTIyOTUsMTEgKzIyODksMTEgQEAgc2N0cF9wcm9jZXNzX2Nvb2tpZV9uZXcoc3Ry
dWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJCW9wX2VyciA9IHNjdHBfZ2Vu
ZXJhdGVfY2F1c2UoU0NUUF9DQVVTRV9PVVRfT0ZfUkVTQywgIiIpOwogCQlzY3RwX2Fib3J0X2Fz
c29jaWF0aW9uKGlucCwgKHN0cnVjdCBzY3RwX3RjYiAqKU5VTEwsIG0sIGlwaGxlbiwKIAkJCQkg
ICAgICAgc3JjLCBkc3QsIHNoLCBvcF9lcnIsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkgICAg
ICAgICAgICAgICAgICAgICAgIG1mbG93dHlwZSwgbWZsb3dpZCwKICNlbmRpZgogCQkgICAgICAg
ICAgICAgICAgICAgICAgIHZyZl9pZCwgcG9ydCk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8
IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29jLnJl
ZmNudCwgMSk7CiAJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKIAkJU0NUUF9TT0NLRVRfTE9DSyhz
bywgMSk7CkBAIC0yMzA4LDcgKzIzMDIsNyBAQCBzY3RwX3Byb2Nlc3NfY29va2llX25ldyhzdHJ1
Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKICNlbmRpZgogCQkodm9pZClzY3Rw
X2ZyZWVfYXNzb2MoaW5wLCBzdGNiLCBTQ1RQX05PUk1BTF9QUk9DLAogCQkJCSAgICAgIFNDVFBf
RlJPTV9TQ1RQX0lOUFVUICsgU0NUUF9MT0NfMTgpOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8
fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDEpOwog
I2VuZGlmCiAJCXJldHVybiAoTlVMTCk7CkBAIC0yMzMxLDcgKzIzMjUsNyBAQCBzY3RwX3Byb2Nl
c3NfY29va2llX25ldyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAll
bHNlCiAJCXJldHZhbCA9IDA7CiAJaWYgKHJldHZhbCA8IDApIHsKLSNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJYXRvbWljX2FkZF9pbnQoJnN0Y2It
PmFzb2MucmVmY250LCAxKTsKIAkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwogCQlTQ1RQX1NPQ0tF
VF9MT0NLKHNvLCAxKTsKQEAgLTIzNDAsNyArMjMzNCw3IEBAIHNjdHBfcHJvY2Vzc19jb29raWVf
bmV3KHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogI2VuZGlmCiAJCSh2
b2lkKXNjdHBfZnJlZV9hc3NvYyhpbnAsIHN0Y2IsIFNDVFBfTk9STUFMX1BST0MsCiAJCSAgICAg
ICAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUF9JTlBVVCArIFNDVFBfTE9DXzE5KTsKLSNp
ZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNp
ZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJU0NUUF9T
T0NLRVRfVU5MT0NLKHNvLCAxKTsKICNlbmRpZgogCQlyZXR1cm4gKE5VTEwpOwpAQCAtMjM0OSw3
ICsyMzQzLDcgQEAgc2N0cF9wcm9jZXNzX2Nvb2tpZV9uZXcoc3RydWN0IG1idWYgKm0sIGludCBp
cGhsZW4sIGludCBvZmZzZXQsCiAJaWYgKHNjdHBfbG9hZF9hZGRyZXNzZXNfZnJvbV9pbml0KHN0
Y2IsIG0sCiAJICAgIGluaXRfb2Zmc2V0ICsgc2l6ZW9mKHN0cnVjdCBzY3RwX2luaXRfY2h1bmsp
LCBpbml0YWNrX29mZnNldCwKIAkgICAgc3JjLCBkc3QsIGluaXRfc3JjLCBwb3J0KSkgewotI2lm
IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lm
IGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlhdG9taWNf
YWRkX2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIDEpOwogCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7
CiAJCVNDVFBfU09DS0VUX0xPQ0soc28sIDEpOwpAQCAtMjM1OCw3ICsyMzUyLDcgQEAgc2N0cF9w
cm9jZXNzX2Nvb2tpZV9uZXcoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQs
CiAjZW5kaWYKIAkJKHZvaWQpc2N0cF9mcmVlX2Fzc29jKGlucCwgc3RjYiwgU0NUUF9OT1JNQUxf
UFJPQywKIAkJICAgICAgICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX0lOUFVUICsgU0NU
UF9MT0NfMjApOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9D
S19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDEpOwogI2VuZGlmCiAJCXJldHVybiAoTlVM
TCk7CkBAIC0yMzczLDEzICsyMzY3LDE2IEBAIHNjdHBfcHJvY2Vzc19jb29raWVfbmV3KHN0cnVj
dCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCWlmIChhdXRoX3NraXBwZWQpIHsK
IAkJc3RydWN0IHNjdHBfYXV0aF9jaHVuayAqYXV0aDsKIAotCQlhdXRoID0gKHN0cnVjdCBzY3Rw
X2F1dGhfY2h1bmsgKikKLQkJICAgIHNjdHBfbV9nZXRwdHIobSwgYXV0aF9vZmZzZXQsIGF1dGhf
bGVuLCBhdXRoX2NodW5rX2J1Zik7CisJCWlmIChhdXRoX2xlbiA8PSBTQ1RQX0NIVU5LX0JVRkZF
Ul9TSVpFKSB7CisJCQlhdXRoID0gKHN0cnVjdCBzY3RwX2F1dGhfY2h1bmsgKilzY3RwX21fZ2V0
cHRyKG0sIGF1dGhfb2Zmc2V0LCBhdXRoX2xlbiwgYXV0aF9jaHVua19idWYpOworCQl9IGVsc2Ug
eworCQkJYXV0aCA9IE5VTEw7CisJCX0KIAkJaWYgKChhdXRoID09IE5VTEwpIHx8IHNjdHBfaGFu
ZGxlX2F1dGgoc3RjYiwgYXV0aCwgbSwgYXV0aF9vZmZzZXQpKSB7CiAJCQkvKiBhdXRoIEhNQUMg
ZmFpbGVkLCBkdW1wIHRoZSBhc3NvYyBhbmQgcGFja2V0ICovCiAJCQlTQ1RQREJHKFNDVFBfREVC
VUdfQVVUSDEsCiAJCQkJIkNPT0tJRS1FQ0hPOiBBVVRIIGZhaWxlZFxuIik7Ci0jaWYgZGVmaW5l
ZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5l
ZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQlhdG9taWNfYWRkX2lu
dCgmc3RjYi0+YXNvYy5yZWZjbnQsIDEpOwogCQkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwogCQkJ
U0NUUF9TT0NLRVRfTE9DSyhzbywgMSk7CkBAIC0yMzg4LDcgKzIzODUsNyBAQCBzY3RwX3Byb2Nl
c3NfY29va2llX25ldyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKICNl
bmRpZgogCQkJKHZvaWQpc2N0cF9mcmVlX2Fzc29jKGlucCwgc3RjYiwgU0NUUF9OT1JNQUxfUFJP
QywKIAkJCSAgICAgICAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUF9JTlBVVCArIFNDVFBf
TE9DXzIxKTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tf
VEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKIAkJCVNDVFBfU09DS0VUX1VOTE9DSyhzbywgMSk7CiAjZW5kaWYKIAkJCXJldHVybiAoTlVM
TCk7CkBAIC0yNDQ1LDcgKzI0NDIsNyBAQCBzY3RwX3Byb2Nlc3NfY29va2llX25ldyhzdHJ1Y3Qg
bWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJYnJlYWs7CiAjZW5kaWYKIAlkZWZh
dWx0OgotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNU
SU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
CQlhdG9taWNfYWRkX2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIDEpOwogCQlTQ1RQX1RDQl9VTkxP
Q0soc3RjYik7CiAJCVNDVFBfU09DS0VUX0xPQ0soc28sIDEpOwpAQCAtMjQ1NCw3ICsyNDUxLDcg
QEAgc2N0cF9wcm9jZXNzX2Nvb2tpZV9uZXcoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGlu
dCBvZmZzZXQsCiAjZW5kaWYKIAkJKHZvaWQpc2N0cF9mcmVlX2Fzc29jKGlucCwgc3RjYiwgU0NU
UF9OT1JNQUxfUFJPQywKIAkJICAgICAgICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX0lO
UFVUICsgU0NUUF9MT0NfMjIpOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFND
VFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDEpOwogI2VuZGlmCiAJCXJl
dHVybiAoTlVMTCk7CkBAIC0yNDYyLDEwICsyNDU5LDEwIEBAIHNjdHBfcHJvY2Vzc19jb29raWVf
bmV3KHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCiAJLyogdXBkYXRl
IGN1cnJlbnQgc3RhdGUgKi8KIAlTQ1RQREJHKFNDVFBfREVCVUdfSU5QVVQyLCAibW92aW5nIHRv
IE9QRU4gc3RhdGVcbiIpOwotCVNDVFBfU0VUX1NUQVRFKGFzb2MsIFNDVFBfU1RBVEVfT1BFTik7
CisJU0NUUF9TRVRfU1RBVEUoc3RjYiwgU0NUUF9TVEFURV9PUEVOKTsKIAlpZiAoYXNvYy0+c3Rh
dGUgJiBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJTkcpIHsKIAkJc2N0cF90aW1lcl9zdGFydChT
Q1RQX1RJTUVSX1RZUEVfU0hVVERPV05HVUFSRCwKLQkJCQkgc3RjYi0+c2N0cF9lcCwgc3RjYiwg
YXNvYy0+cHJpbWFyeV9kZXN0aW5hdGlvbik7CisJCSAgICAgICAgICAgICAgICAgc3RjYi0+c2N0
cF9lcCwgc3RjYiwgTlVMTCk7CiAJfQogCXNjdHBfc3RvcF9hbGxfY29va2llX3RpbWVycyhzdGNi
KTsKIAlTQ1RQX1NUQVRfSU5DUl9DT1VOVEVSMzIoc2N0cHNfcGFzc2l2ZWVzdGFiKTsKQEAgLTI0
ODUsNyArMjQ4Miw3IEBAIHNjdHBfcHJvY2Vzc19jb29raWVfbmV3KHN0cnVjdCBtYnVmICptLCBp
bnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCQkgKiBhIGJpdCBvZiBwcm90ZWN0aW9uIGlzIHdvcnRo
IGhhdmluZy4uCiAJCSAqLwogCQlzdGNiLT5zY3RwX2VwLT5zY3RwX2ZsYWdzIHw9IFNDVFBfUENC
X0ZMQUdTX0NPTk5FQ1RFRDsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQ
X1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKIAkJYXRvbWljX2FkZF9pbnQoJnN0Y2ItPmFzb2MucmVmY250LCAxKTsKIAkJ
U0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwogCQlTQ1RQX1NPQ0tFVF9MT0NLKHNvLCAxKTsKQEAgLTI0
OTcsNyArMjQ5NCw3IEBAIHNjdHBfcHJvY2Vzc19jb29raWVfbmV3KHN0cnVjdCBtYnVmICptLCBp
bnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCQl9CiAjZW5kaWYKIAkJc29pc2Nvbm5lY3RlZChzdGNi
LT5zY3RwX3NvY2tldCk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9T
T19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAJCVNDVFBfU09DS0VUX1VOTE9DSyhzbywgMSk7CiAjZW5kaWYKIAl9IGVsc2Ug
aWYgKChzdGNiLT5zY3RwX2VwLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkg
JiYKQEAgLTI1MjQsOCArMjUyMSw3IEBAIHNjdHBfcHJvY2Vzc19jb29raWVfbmV3KHN0cnVjdCBt
YnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCQkvKiBjYWxjdWxhdGUgdGhlIFJUVCBh
bmQgc2V0IHRoZSBlbmNhcHMgcG9ydCAqLwogCQlvbGQudHZfc2VjID0gY29va2llLT50aW1lX2Vu
dGVyZWQudHZfc2VjOwogCQlvbGQudHZfdXNlYyA9IGNvb2tpZS0+dGltZV9lbnRlcmVkLnR2X3Vz
ZWM7Ci0JCSgqbmV0cCktPlJUTyA9IHNjdHBfY2FsY3VsYXRlX3J0byhzdGNiLCBhc29jLCAqbmV0
cCwKLQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvbGQsIFNDVFBfUlRUX0ZS
T01fTk9OX0RBVEEpOworCQlzY3RwX2NhbGN1bGF0ZV9ydG8oc3RjYiwgYXNvYywgKm5ldHAsICZv
bGQsIFNDVFBfUlRUX0ZST01fTk9OX0RBVEEpOwogCX0KIAkvKiByZXNwb25kIHdpdGggYSBDT09L
SUUtQUNLICovCiAJc2N0cF9zZW5kX2Nvb2tpZV9hY2soc3RjYik7CkBAIC0yNTY4LDcgKzI1NjQs
NyBAQCBzY3RwX2hhbmRsZV9jb29raWVfZWNobyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwg
aW50IG9mZnNldCwKICAgICBzdHJ1Y3Qgc2N0cF9pbnBjYiAqKmlucF9wLCBzdHJ1Y3Qgc2N0cF90
Y2IgKipzdGNiLCBzdHJ1Y3Qgc2N0cF9uZXRzICoqbmV0cCwKICAgICBpbnQgYXV0aF9za2lwcGVk
LCB1aW50MzJfdCBhdXRoX29mZnNldCwgdWludDMyX3QgYXV0aF9sZW4sCiAgICAgc3RydWN0IHNj
dHBfdGNiICoqbG9ja2VkX3RjYiwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAgICAgdWludDhfdCBt
Zmxvd3R5cGUsIHVpbnQzMl90IG1mbG93aWQsCiAjZW5kaWYKICAgICB1aW50MzJfdCB2cmZfaWQs
IHVpbnQxNl90IHBvcnQpCkBAIC0yNjI4LDYgKzI2MjQsMjcgQEAgc2N0cF9oYW5kbGVfY29va2ll
X2VjaG8oc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJCSAqLwogCQly
ZXR1cm4gKE5VTEwpOwogCX0KKyNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJLyoKKwkgKiBS
ZWNvdmVyIHRoZSBBRl9DT05OIGFkZHJlc3NlcyB3aXRoaW4gdGhlIGNvb2tpZS4KKwkgKiBUaGlz
IG5lZWRzIHRvIGJlIGRvbmUgaW4gdGhlIGJ1ZmZlciBwcm92aWRlZCBmb3IgbGF0ZXIgcHJvY2Vz
c2luZworCSAqIG9mIHRoZSBjb29raWUgYW5kIGluIHRoZSBtYnVmIGNoYWluIGZvciBITUFDIHZh
bGlkYXRpb24uCisJICovCisJaWYgKChjb29raWUtPmFkZHJfdHlwZSA9PSBTQ1RQX0NPTk5fQURE
UkVTUykgJiYgKHNyYy0+c2FfZmFtaWx5ID09IEFGX0NPTk4pKSB7CisJCXN0cnVjdCBzb2NrYWRk
cl9jb25uICpzY29ubnAgPSAoc3RydWN0IHNvY2thZGRyX2Nvbm4gKilzcmM7CisKKwkJbWVtY3B5
KGNvb2tpZS0+YWRkcmVzcywgJnNjb25ucC0+c2Nvbm5fYWRkciAsIHNpemVvZih2b2lkICopKTsK
KwkJbV9jb3B5YmFjayhtLCBjb29raWVfb2Zmc2V0ICsgb2Zmc2V0b2Yoc3RydWN0IHNjdHBfc3Rh
dGVfY29va2llLCBhZGRyZXNzKSwKKwkJICAgICAgICAgICAoaW50KXNpemVvZih2b2lkICopLCAo
Y2FkZHJfdCkmc2Nvbm5wLT5zY29ubl9hZGRyKTsKKwl9CisJaWYgKChjb29raWUtPmxhZGRyX3R5
cGUgPT0gU0NUUF9DT05OX0FERFJFU1MpICYmIChkc3QtPnNhX2ZhbWlseSA9PSBBRl9DT05OKSkg
eworCQlzdHJ1Y3Qgc29ja2FkZHJfY29ubiAqc2Nvbm5wID0gKHN0cnVjdCBzb2NrYWRkcl9jb25u
ICopZHN0OworCisJCW1lbWNweShjb29raWUtPmxhZGRyZXNzLCAmc2Nvbm5wLT5zY29ubl9hZGRy
ICwgc2l6ZW9mKHZvaWQgKikpOworCQltX2NvcHliYWNrKG0sIGNvb2tpZV9vZmZzZXQgKyBvZmZz
ZXRvZihzdHJ1Y3Qgc2N0cF9zdGF0ZV9jb29raWUsIGxhZGRyZXNzKSwKKwkJICAgICAgICAgICAo
aW50KXNpemVvZih2b2lkICopLCAoY2FkZHJfdCkmc2Nvbm5wLT5zY29ubl9hZGRyKTsKKwl9Cisj
ZW5kaWYKIAkvKgogCSAqIHNwbGl0IG9mZiB0aGUgc2lnbmF0dXJlIGludG8gaXRzIG93biBtYnVm
IChzaW5jZSBpdCBzaG91bGQgbm90IGJlCiAJICogY2FsY3VsYXRlZCBpbiB0aGUgc2N0cF9obWFj
X20oKSBjYWxsKS4KQEAgLTI2NzgsNyArMjY5NSw3IEBAIHNjdHBfaGFuZGxlX2Nvb2tpZV9lY2hv
KHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCQlyZXR1cm4gKE5VTEwp
OwogCX0KIAkvKiBjb21wYXJlIHRoZSByZWNlaXZlZCBkaWdlc3Qgd2l0aCB0aGUgY29tcHV0ZWQg
ZGlnZXN0ICovCi0JaWYgKG1lbWNtcChjYWxjX3NpZywgc2lnLCBTQ1RQX1NJR05BVFVSRV9TSVpF
KSAhPSAwKSB7CisJaWYgKHRpbWluZ3NhZmVfYmNtcChjYWxjX3NpZywgc2lnLCBTQ1RQX1NJR05B
VFVSRV9TSVpFKSAhPSAwKSB7CiAJCS8qIHRyeSB0aGUgb2xkIGNvb2tpZT8gKi8KIAkJaWYgKChj
b29raWUtPnRpbWVfZW50ZXJlZC50dl9zZWMgPT0gKGxvbmcpZXAtPnRpbWVfb2Zfc2VjcmV0X2No
YW5nZSkgJiYKIAkJICAgIChlcC0+Y3VycmVudF9zZWNyZXRfbnVtYmVyICE9IGVwLT5sYXN0X3Nl
Y3JldF9udW1iZXIpKSB7CkBAIC0yNjg3LDcgKzI3MDQsNyBAQCBzY3RwX2hhbmRsZV9jb29raWVf
ZWNobyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJCSAgICAodWlu
dDhfdCAqKWVwLT5zZWNyZXRfa2V5WyhpbnQpZXAtPmxhc3Rfc2VjcmV0X251bWJlcl0sCiAJCQkg
ICAgU0NUUF9TRUNSRVRfU0laRSwgbSwgY29va2llX29mZnNldCwgY2FsY19zaWcsIDApOwogCQkJ
LyogY29tcGFyZSAqLwotCQkJaWYgKG1lbWNtcChjYWxjX3NpZywgc2lnLCBTQ1RQX1NJR05BVFVS
RV9TSVpFKSA9PSAwKQorCQkJaWYgKHRpbWluZ3NhZmVfYmNtcChjYWxjX3NpZywgc2lnLCBTQ1RQ
X1NJR05BVFVSRV9TSVpFKSA9PSAwKQogCQkJCWNvb2tpZV9vayA9IDE7CiAJCX0KIAl9IGVsc2Ug
ewpAQCAtMjcyMSw5ICsyNzM4LDkgQEAgc2N0cF9oYW5kbGVfY29va2llX2VjaG8oc3RydWN0IG1i
dWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJICovCiAJKHZvaWQpU0NUUF9HRVRUSU1F
X1RJTUVWQUwoJm5vdyk7CiAJLyogRXhwaXJlIHRpbWUgaXMgaW4gVGlja3MsIHNvIHdlIGNvbnZl
cnQgdG8gc2Vjb25kcyAqLwotCXRpbWVfZXhwaXJlcy50dl9zZWMgPSBjb29raWUtPnRpbWVfZW50
ZXJlZC50dl9zZWMgKyBUSUNLU19UT19TRUMoY29va2llLT5jb29raWVfbGlmZSk7CisJdGltZV9l
eHBpcmVzLnR2X3NlYyA9IGNvb2tpZS0+dGltZV9lbnRlcmVkLnR2X3NlYyArIHNjdHBfdGlja3Nf
dG9fc2Vjcyhjb29raWUtPmNvb2tpZV9saWZlKTsKIAl0aW1lX2V4cGlyZXMudHZfdXNlYyA9IGNv
b2tpZS0+dGltZV9lbnRlcmVkLnR2X3VzZWM7Ci0jaWZuZGVmIF9fRnJlZUJTRF9fCisjaWYgIShk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkKIAlpZiAodGlt
ZXJjbXAoJm5vdywgJnRpbWVfZXhwaXJlcywgPikpCiAjZWxzZQogCWlmICh0aW1ldmFsY21wKCZu
b3csICZ0aW1lX2V4cGlyZXMsID4pKQpAQCAtMjc0Nyw3ICsyNzY0LDcgQEAgc2N0cF9oYW5kbGVf
Y29va2llX2VjaG8oc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJCWNh
dXNlLT5jYXVzZS5jb2RlID0gaHRvbnMoU0NUUF9DQVVTRV9TVEFMRV9DT09LSUUpOwogCQljYXVz
ZS0+Y2F1c2UubGVuZ3RoID0gaHRvbnMoKHNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcikgKwog
CQkgICAgKHNpemVvZih1aW50MzJfdCkpKSk7Ci0jaWZuZGVmIF9fRnJlZUJTRF9fCisjaWYgIShk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkKIAkJdGltZXJz
dWIoJm5vdywgJnRpbWVfZXhwaXJlcywgJmRpZmYpOwogI2Vsc2UKIAkJZGlmZiA9IG5vdzsKQEAg
LTI3NjUsNyArMjc4Miw3IEBAIHNjdHBfaGFuZGxlX2Nvb2tpZV9lY2hvKHN0cnVjdCBtYnVmICpt
LCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCQl9CiAJCWNhdXNlLT5zdGFsZV90aW1lID0gaHRv
bmwoc3RhbGVuZXNzKTsKIAkJc2N0cF9zZW5kX29wZXJyX3RvKHNyYywgZHN0LCBzaCwgY29va2ll
LT5wZWVyc192dGFnLCBvcF9lcnIsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkgICAgICAgICAg
ICAgICAgICAgbWZsb3d0eXBlLCBtZmxvd2lkLCBsX2lucC0+ZmlibnVtLAogI2VuZGlmCiAJCSAg
ICAgICAgICAgICAgICAgICB2cmZfaWQsIHBvcnQpOwpAQCAtMjg2OCw3ICsyODg1LDcgQEAgc2N0
cF9oYW5kbGVfY29va2llX2VjaG8oc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZz
ZXQsCiAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29va2llLCBjb29raWVfbGVu
LCAqaW5wX3AsCiAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0cCwgdG8sICZu
b3RpZmljYXRpb24sCiAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aF9za2lw
cGVkLCBhdXRoX29mZnNldCwgYXV0aF9sZW4sCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1mbG93dHlwZSwgbWZsb3dpZCwKICNlbmRpZgog
CQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZyZl9pZCwgcG9ydCk7CkBAIC0yODc5
LDcgKzI4OTYsNyBAQCBzY3RwX2hhbmRsZV9jb29raWVfZWNobyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50
IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNyYywgZHN0LCBzaCwKIAkJCQkJCSAgICAgY29va2llLCBjb29raWVfbGVuLCAqaW5wX3As
ICpzdGNiLCBuZXRwLCB0bywKIAkJCQkJCSAgICAgJm5vdGlmaWNhdGlvbiwgYXV0aF9za2lwcGVk
LCBhdXRoX29mZnNldCwgYXV0aF9sZW4sCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWZsb3d0eXBlLCBtZmxvd2lkLAogI2VuZGlm
CiAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2cmZfaWQsIHBvcnQpOwpA
QCAtMjg4OSw3ICsyOTA2LDcgQEAgc2N0cF9oYW5kbGVfY29va2llX2VjaG8oc3RydWN0IG1idWYg
Km0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJCS8qIHN0aWxsIG5vIFRDQi4uLiBtdXN0IGJl
IGJhZCBjb29raWUtZWNobyAqLwogCQlyZXR1cm4gKE5VTEwpOwogCX0KLSNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJaWYgKCpuZXRwICE9IE5VTEwpIHsKIAkJKCpuZXRwKS0+Zmxvd3R5cGUgPSBtZmxv
d3R5cGU7CiAJCSgqbmV0cCktPmZsb3dpZCA9IG1mbG93aWQ7CkBAIC0yOTQ0LDM2ICsyOTYxLDIz
IEBAIHNjdHBfaGFuZGxlX2Nvb2tpZV9lY2hvKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBp
bnQgb2Zmc2V0LAogCQkJCXJldHVybiAobSk7CiAJCQl9CiAJCQlvc28gPSAoKmlucF9wKS0+c2N0
cF9zb2NrZXQ7Ci0jaWYgKGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9u
IDwgNzAwMDAwKQotCQkJLyoKLQkJCSAqIFdlIGRvIHRoaXMgdG8ga2VlcCB0aGUgc29ja2V0cyBz
aWRlIGhhcHB5IGR1cmluZwotCQkJICogdGhlIHNvbmV3Y29uIE9OTFkuCi0JCQkgKi8KLQkJCU5F
VF9MT0NLX0dJQU5UKCk7Ci0jZW5kaWYKIAkJCWF0b21pY19hZGRfaW50KCYoKnN0Y2IpLT5hc29j
LnJlZmNudCwgMSk7CiAJCQlTQ1RQX1RDQl9VTkxPQ0soKCpzdGNiKSk7Ci0jaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAxMDAwCisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCUNVUlZORVRfU0VUKG9z
by0+c29fdm5ldCk7CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVk
KF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCVNDVFBfU09DS0VUX0xP
Q0sob3NvLCAxKTsKICNlbmRpZgogCQkJc28gPSBzb25ld2Nvbm4ob3NvLCAwCi0jaWYgZGVmaW5l
ZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJCQkgICAgLE5VTEwKLSNlbmRpZgotI2lmZGVmIF9fUGFuZGFfXwotCQkJICAgICAs
TlVMTCAsICgqaW5wX3ApLT5kZWZfdnJmX2lkCiAjZW5kaWYKIAkJCSAgICApOwotI2lmIChkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA8IDcwMDAwMCkKLQkJCU5FVF9V
TkxPQ0tfR0lBTlQoKTsKLSNlbmRpZgotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmlu
ZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJU0NUUF9TT0NLRVRf
VU5MT0NLKG9zbywgMSk7CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0Zy
ZWVCU0RfdmVyc2lvbiA+PSA4MDEwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCQkJQ1VSVk5FVF9SRVNUT1JFKCk7CiAjZW5kaWYKIAkJCVND
VFBfVENCX0xPQ0soKCpzdGNiKSk7CkBAIC0yOTgxLDcgKzI5ODUsNyBAQCBzY3RwX2hhbmRsZV9j
b29raWVfZWNobyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAogCQkJ
aWYgKHNvID09IE5VTEwpIHsKIAkJCQlzdHJ1Y3QgbWJ1ZiAqb3BfZXJyOwotI2lmIGRlZmluZWQo
X19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQo
X19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCXN0cnVjdCBzb2NrZXQg
KnBjYl9zbzsKICNlbmRpZgogCQkJCS8qIFRvbyBtYW55IHNvY2tldHMgKi8KQEAgLTI5ODksMTEg
KzI5OTMsMTEgQEAgc2N0cF9oYW5kbGVfY29va2llX2VjaG8oc3RydWN0IG1idWYgKm0sIGludCBp
cGhsZW4sIGludCBvZmZzZXQsCiAJCQkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQ
X0NBVVNFX09VVF9PRl9SRVNDLCAiIik7CiAJCQkJc2N0cF9hYm9ydF9hc3NvY2lhdGlvbigqaW5w
X3AsIE5VTEwsIG0sIGlwaGxlbiwKIAkJCQkJCSAgICAgICBzcmMsIGRzdCwgc2gsIG9wX2VyciwK
LSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJICAgICAgICAgICAgICAgICAgICAgICBtZmxvd3R5
cGUsIG1mbG93aWQsCiAjZW5kaWYKIAkJCQkgICAgICAgICAgICAgICAgICAgICAgIHZyZl9pZCwg
cG9ydCk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RF
U1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAJCQkJcGNiX3NvID0gU0NUUF9JTlBfU08oKmlucF9wKTsKIAkJCQlhdG9taWNfYWRkX2ludCgm
KCpzdGNiKS0+YXNvYy5yZWZjbnQsIDEpOwogCQkJCVNDVFBfVENCX1VOTE9DSygoKnN0Y2IpKTsK
QEAgLTMwMDMsNyArMzAwNyw3IEBAIHNjdHBfaGFuZGxlX2Nvb2tpZV9lY2hvKHN0cnVjdCBtYnVm
ICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogI2VuZGlmCiAJCQkJKHZvaWQpc2N0cF9mcmVl
X2Fzc29jKCppbnBfcCwgKnN0Y2IsIFNDVFBfTk9STUFMX1BST0MsCiAJCQkJICAgICAgICAgICAg
ICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX0lOUFVUICsgU0NUUF9MT0NfMjMpOwotI2lmIGRlZmlu
ZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmlu
ZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCVNDVFBfU09DS0VU
X1VOTE9DSyhwY2Jfc28sIDEpOwogI2VuZGlmCiAJCQkJcmV0dXJuIChOVUxMKTsKQEAgLTMwNjcs
MTQgKzMwNzEsMTQgQEAgc2N0cF9oYW5kbGVfY29va2llX2VjaG8oc3RydWN0IG1idWYgKm0sIGlu
dCBpcGhsZW4sIGludCBvZmZzZXQsCiAJCQkgKiB0aGUgYWNjZXB0IHN0YXRlIHdhaXRpbmcgZm9y
IHRoZSBhY2NlcHQhCiAJCQkgKi8KIAkJCWlmICgqc3RjYikgewotCQkJCSgqc3RjYiktPmFzb2Mu
c3RhdGUgfD0gU0NUUF9TVEFURV9JTl9BQ0NFUFRfUVVFVUU7CisJCQkJU0NUUF9BRERfU1VCU1RB
VEUoKnN0Y2IsIFNDVFBfU1RBVEVfSU5fQUNDRVBUX1FVRVVFKTsKIAkJCX0KIAkJCXNjdHBfbW92
ZV9wY2JfYW5kX2Fzc29jKCppbnBfcCwgaW5wLCAqc3RjYik7CiAKIAkJCWF0b21pY19hZGRfaW50
KCYoKnN0Y2IpLT5hc29jLnJlZmNudCwgMSk7CiAJCQlTQ1RQX1RDQl9VTkxPQ0soKCpzdGNiKSk7
CiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQlzY3RwX3B1bGxfb2ZmX2NvbnRyb2xfdG9fbmV3
X2lucCgoKmlucF9wKSwgaW5wLCAqc3RjYiwKIAkJCSAgICAwKTsKICNlbHNlCkBAIC0zMTA2LDEz
ICszMTEwLDEzIEBAIHNjdHBfaGFuZGxlX2Nvb2tpZV9lY2hvKHN0cnVjdCBtYnVmICptLCBpbnQg
aXBobGVuLCBpbnQgb2Zmc2V0LAogCQkJfQogCiAJCQkvKiBQdWxsIGl0IGZyb20gdGhlIGluY29t
cGxldGUgcXVldWUgYW5kIHdha2UgdGhlIGd1eSAqLwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8
fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJYXRvbWljX2FkZF9pbnQoJigqc3RjYiktPmFz
b2MucmVmY250LCAxKTsKIAkJCVNDVFBfVENCX1VOTE9DSygoKnN0Y2IpKTsKIAkJCVNDVFBfU09D
S0VUX0xPQ0soc28sIDEpOwogI2VuZGlmCiAJCQlzb2lzY29ubmVjdGVkKHNvKTsKLSNpZiBkZWZp
bmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZp
bmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCVNDVFBfVENCX0xP
Q0soKCpzdGNiKSk7CiAJCQlhdG9taWNfc3VidHJhY3RfaW50KCYoKnN0Y2IpLT5hc29jLnJlZmNu
dCwgMSk7CiAJCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDEpOwpAQCAtMzEzNiw2ICszMTQwLDcg
QEAgc2N0cF9oYW5kbGVfY29va2llX2FjayhzdHJ1Y3Qgc2N0cF9jb29raWVfYWNrX2NodW5rICpj
cCBTQ1RQX1VOVVNFRCwKIHsKIAkvKiBjcCBtdXN0IG5vdCBiZSB1c2VkLCBvdGhlcnMgY2FsbCB0
aGlzIHdpdGhvdXQgYSBjLWFjayA6LSkgKi8KIAlzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNv
YzsKKwlzdHJ1Y3Qgc2N0cF90bWl0X2NodW5rICpjaGs7CiAKIAlTQ1RQREJHKFNDVFBfREVCVUdf
SU5QVVQyLAogCQkic2N0cF9oYW5kbGVfY29va2llX2FjazogaGFuZGxpbmcgQ09PS0lFLUFDS1xu
Iik7CkBAIC0zMTU0LDM0ICszMTU5LDMzIEBAIHNjdHBfaGFuZGxlX2Nvb2tpZV9hY2soc3RydWN0
IHNjdHBfY29va2llX2Fja19jaHVuayAqY3AgU0NUUF9VTlVTRUQsCiAJYXNvYy0+b3ZlcmFsbF9l
cnJvcl9jb3VudCA9IDA7CiAJc2N0cF9zdG9wX2FsbF9jb29raWVfdGltZXJzKHN0Y2IpOwogCS8q
IHByb2Nlc3MgYWNjb3JkaW5nIHRvIGFzc29jaWF0aW9uIHN0YXRlICovCi0JaWYgKFNDVFBfR0VU
X1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCkgeworCWlmIChTQ1RQX0dF
VF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9FQ0hPRUQpIHsKIAkJLyogc3RhdGUg
Y2hhbmdlIG9ubHkgbmVlZGVkIHdoZW4gSSBhbSBpbiByaWdodCBzdGF0ZSAqLwogCQlTQ1RQREJH
KFNDVFBfREVCVUdfSU5QVVQyLCAibW92aW5nIHRvIE9QRU4gc3RhdGVcbiIpOwotCQlTQ1RQX1NF
VF9TVEFURShhc29jLCBTQ1RQX1NUQVRFX09QRU4pOworCQlTQ1RQX1NFVF9TVEFURShzdGNiLCBT
Q1RQX1NUQVRFX09QRU4pOwogCQlzY3RwX3N0YXJ0X25ldF90aW1lcnMoc3RjYik7CiAJCWlmIChh
c29jLT5zdGF0ZSAmIFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORykgewogCQkJc2N0cF90aW1l
cl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfU0hVVERPV05HVUFSRCwKLQkJCQkJIHN0Y2ItPnNjdHBf
ZXAsIHN0Y2IsIGFzb2MtPnByaW1hcnlfZGVzdGluYXRpb24pOworCQkJICAgICAgICAgICAgICAg
ICBzdGNiLT5zY3RwX2VwLCBzdGNiLCBOVUxMKTsKIAogCQl9CiAJCS8qIHVwZGF0ZSBSVE8gKi8K
IAkJU0NUUF9TVEFUX0lOQ1JfQ09VTlRFUjMyKHNjdHBzX2FjdGl2ZWVzdGFiKTsKIAkJU0NUUF9T
VEFUX0lOQ1JfR0FVR0UzMihzY3Rwc19jdXJyZXN0YWIpOwogCQlpZiAoYXNvYy0+b3ZlcmFsbF9l
cnJvcl9jb3VudCA9PSAwKSB7Ci0JCQluZXQtPlJUTyA9IHNjdHBfY2FsY3VsYXRlX3J0byhzdGNi
LCBhc29jLCBuZXQsCi0JCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYXNvYy0+dGlt
ZV9lbnRlcmVkLAotCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0NUUF9SVFRfRlJP
TV9OT05fREFUQSk7CisJCQlzY3RwX2NhbGN1bGF0ZV9ydG8oc3RjYiwgYXNvYywgbmV0LCAmYXNv
Yy0+dGltZV9lbnRlcmVkLAorCQkJICAgICAgICAgICAgICAgICAgIFNDVFBfUlRUX0ZST01fTk9O
X0RBVEEpOwogCQl9CiAJCSh2b2lkKVNDVFBfR0VUVElNRV9USU1FVkFMKCZhc29jLT50aW1lX2Vu
dGVyZWQpOwogCQlzY3RwX3VscF9ub3RpZnkoU0NUUF9OT1RJRllfQVNTT0NfVVAsIHN0Y2IsIDAs
IE5VTEwsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CiAJCWlmICgoc3RjYi0+c2N0cF9lcC0+c2N0cF9m
bGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCSAgICAoc3RjYi0+c2N0cF9lcC0+
c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpKSB7Ci0jaWYgZGVmaW5lZChf
X0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChf
X0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQlzdHJ1Y3Qgc29ja2V0ICpz
bzsKIAogI2VuZGlmCiAJCQlzdGNiLT5zY3RwX2VwLT5zY3RwX2ZsYWdzIHw9IFNDVFBfUENCX0ZM
QUdTX0NPTk5FQ1RFRDsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NP
X0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKIAkJCXNvID0gU0NUUF9JTlBfU08oc3RjYi0+c2N0cF9lcCk7CiAJCQlhdG9taWNf
YWRkX2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIDEpOwogCQkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2Ip
OwpAQCAtMzE5Miw3ICszMTk2LDcgQEAgc2N0cF9oYW5kbGVfY29va2llX2FjayhzdHJ1Y3Qgc2N0
cF9jb29raWVfYWNrX2NodW5rICpjcCBTQ1RQX1VOVVNFRCwKIAkJCWlmICgoc3RjYi0+YXNvYy5z
dGF0ZSAmIFNDVFBfU1RBVEVfQ0xPU0VEX1NPQ0tFVCkgPT0gMCkgewogCQkJCXNvaXNjb25uZWN0
ZWQoc3RjYi0+c2N0cF9zb2NrZXQpOwogCQkJfQotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBk
ZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJU0NUUF9TT0NLRVRfVU5MT0NLKHNvLCAxKTsKICNl
bmRpZgogCQl9CkBAIC0zMjM5LDExICszMjQzLDEzIEBAIHNjdHBfaGFuZGxlX2Nvb2tpZV9hY2so
c3RydWN0IHNjdHBfY29va2llX2Fja19jaHVuayAqY3AgU0NUUF9VTlVTRUQsCiBjbG9zZWRfc29j
a2V0OgogCS8qIFRvc3MgdGhlIGNvb2tpZSBpZiBJIGNhbiAqLwogCXNjdHBfdG9zc19vbGRfY29v
a2llcyhzdGNiLCBhc29jKTsKLQlpZiAoIVRBSUxRX0VNUFRZKCZhc29jLT5zZW50X3F1ZXVlKSkg
ewotCQkvKiBSZXN0YXJ0IHRoZSB0aW1lciBpZiB3ZSBoYXZlIHBlbmRpbmcgZGF0YSAqLwotCQlz
dHJ1Y3Qgc2N0cF90bWl0X2NodW5rICpjaGs7Ci0KLQkJY2hrID0gVEFJTFFfRklSU1QoJmFzb2Mt
PnNlbnRfcXVldWUpOworCS8qIFJlc3RhcnQgdGhlIHRpbWVyIGlmIHdlIGhhdmUgcGVuZGluZyBk
YXRhICovCisJVEFJTFFfRk9SRUFDSChjaGssICZhc29jLT5zZW50X3F1ZXVlLCBzY3RwX25leHQp
IHsKKwkJaWYgKGNoay0+d2hvVG8gIT0gTlVMTCkgeworCQkJYnJlYWs7CisJCX0KKwl9CisJaWYg
KGNoayAhPSBOVUxMKSB7CiAJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NFTkQs
IHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIGNoay0+d2hvVG8pOwogCX0KIH0KQEAgLTM0MTEsOCArMzQx
Nyw3IEBAIHN0YXRpYyB2b2lkCiBzY3RwX2hhbmRsZV9zaHV0ZG93bl9jb21wbGV0ZShzdHJ1Y3Qg
c2N0cF9zaHV0ZG93bl9jb21wbGV0ZV9jaHVuayAqY3AgU0NUUF9VTlVTRUQsCiAgICAgc3RydWN0
IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQpCiB7Ci0Jc3RydWN0IHNjdHBf
YXNzb2NpYXRpb24gKmFzb2M7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NU
UF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAJc3RydWN0IHNvY2tldCAqc287CiAjZW5kaWYKIApAQCAtMzQyMSw5ICsz
NDI2LDggQEAgc2N0cF9oYW5kbGVfc2h1dGRvd25fY29tcGxldGUoc3RydWN0IHNjdHBfc2h1dGRv
d25fY29tcGxldGVfY2h1bmsgKmNwIFNDVFBfVU5VU0UKIAlpZiAoc3RjYiA9PSBOVUxMKQogCQly
ZXR1cm47CiAKLQlhc29jID0gJnN0Y2ItPmFzb2M7CiAJLyogcHJvY2VzcyBhY2NvcmRpbmcgdG8g
YXNzb2NpYXRpb24gc3RhdGUgKi8KLQlpZiAoU0NUUF9HRVRfU1RBVEUoYXNvYykgIT0gU0NUUF9T
VEFURV9TSFVURE9XTl9BQ0tfU0VOVCkgeworCWlmIChTQ1RQX0dFVF9TVEFURShzdGNiKSAhPSBT
Q1RQX1NUQVRFX1NIVVRET1dOX0FDS19TRU5UKSB7CiAJCS8qIHVuZXhwZWN0ZWQgU0hVVERPV04t
Q09NUExFVEUuLi4gc28gaWdub3JlLi4uICovCiAJCVNDVFBEQkcoU0NUUF9ERUJVR19JTlBVVDIs
CiAJCQkic2N0cF9oYW5kbGVfc2h1dGRvd25fY29tcGxldGU6IG5vdCBpbiBTQ1RQX1NUQVRFX1NI
VVRET1dOX0FDS19TRU5UIC0tLSBpZ25vcmVcbiIpOwpAQCAtMzQzNSw4ICszNDM5LDggQEAgc2N0
cF9oYW5kbGVfc2h1dGRvd25fY29tcGxldGUoc3RydWN0IHNjdHBfc2h1dGRvd25fY29tcGxldGVf
Y2h1bmsgKmNwIFNDVFBfVU5VU0UKIAkJc2N0cF91bHBfbm90aWZ5KFNDVFBfTk9USUZZX0FTU09D
X0RPV04sIHN0Y2IsIDAsIE5VTEwsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CiAJfQogI2lmZGVmIElO
VkFSSUFOVFMKLQlpZiAoIVRBSUxRX0VNUFRZKCZhc29jLT5zZW5kX3F1ZXVlKSB8fAotCSAgICAh
VEFJTFFfRU1QVFkoJmFzb2MtPnNlbnRfcXVldWUpIHx8CisJaWYgKCFUQUlMUV9FTVBUWSgmc3Rj
Yi0+YXNvYy5zZW5kX3F1ZXVlKSB8fAorCSAgICAhVEFJTFFfRU1QVFkoJnN0Y2ItPmFzb2Muc2Vu
dF9xdWV1ZSkgfHwKIAkgICAgc2N0cF9pc190aGVyZV91bnNlbnRfZGF0YShzdGNiLCBTQ1RQX1NP
X05PVF9MT0NLRUQpKSB7CiAJCXBhbmljKCJRdWV1ZXMgYXJlIG5vdCBlbXB0eSB3aGVuIGhhbmRs
aW5nIFNIVVRET1dOLUNPTVBMRVRFIik7CiAJfQpAQCAtMzQ0OCw3ICszNDUyLDcgQEAgc2N0cF9o
YW5kbGVfc2h1dGRvd25fY29tcGxldGUoc3RydWN0IHNjdHBfc2h1dGRvd25fY29tcGxldGVfY2h1
bmsgKmNwIFNDVFBfVU5VU0UKIAkvKiBmcmVlIHRoZSBUQ0IgKi8KIAlTQ1RQREJHKFNDVFBfREVC
VUdfSU5QVVQyLAogCQkic2N0cF9oYW5kbGVfc2h1dGRvd25fY29tcGxldGU6IGNhbGxzIGZyZWUt
YXNvY1xuIik7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NL
X1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAJc28gPSBTQ1RQX0lOUF9TTyhzdGNiLT5zY3RwX2VwKTsKIAlhdG9taWNfYWRkX2ludCgm
c3RjYi0+YXNvYy5yZWZjbnQsIDEpOwogCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKQEAgLTM0NTgs
NyArMzQ2Miw3IEBAIHNjdHBfaGFuZGxlX3NodXRkb3duX2NvbXBsZXRlKHN0cnVjdCBzY3RwX3No
dXRkb3duX2NvbXBsZXRlX2NodW5rICpjcCBTQ1RQX1VOVVNFCiAjZW5kaWYKIAkodm9pZClzY3Rw
X2ZyZWVfYXNzb2Moc3RjYi0+c2N0cF9lcCwgc3RjYiwgU0NUUF9OT1JNQUxfUFJPQywKIAkgICAg
ICAgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBfSU5QVVQgKyBTQ1RQX0xPQ18yNSk7Ci0j
aWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisj
aWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJU0NUUF9T
T0NLRVRfVU5MT0NLKHNvLCAxKTsKICNlbmRpZgogCXJldHVybjsKQEAgLTM0NzAsNyArMzQ3NCw4
IEBAIHByb2Nlc3NfY2h1bmtfZHJvcChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3Rw
X2NodW5rX2Rlc2MgKmRlc2MsCiB7CiAJc3dpdGNoIChkZXNjLT5jaHVua190eXBlKSB7CiAJY2Fz
ZSBTQ1RQX0RBVEE6Ci0JCS8qIGZpbmQgdGhlIHRzbiB0byByZXNlbmQgKHBvc3NpYmx5ICovCisJ
Y2FzZSBTQ1RQX0lEQVRBOgorCQkvKiBmaW5kIHRoZSB0c24gdG8gcmVzZW5kIChwb3NzaWJseSkg
Ki8KIAl7CiAJCXVpbnQzMl90IHRzbjsKIAkJc3RydWN0IHNjdHBfdG1pdF9jaHVuayAqdHAxOwpA
QCAtMzUwNCw4ICszNTA5LDYgQEAgcHJvY2Vzc19jaHVua19kcm9wKHN0cnVjdCBzY3RwX3RjYiAq
c3RjYiwgc3RydWN0IHNjdHBfY2h1bmtfZGVzYyAqZGVzYywKIAkJCVNDVFBfU1RBVF9JTkNSKHNj
dHBzX3BkcnB0c25uZik7CiAJCX0KIAkJaWYgKCh0cDEpICYmICh0cDEtPnNlbnQgPCBTQ1RQX0RB
VEFHUkFNX0FDS0VEKSkgewotCQkJdWludDhfdCAqZGRwOwotCiAJCQlpZiAoKChmbGcgJiBTQ1RQ
X0JBRENSQykgPT0gMCkgJiYKIAkJCSAgICAoKGZsZyAmIFNDVFBfRlJPTV9NSURETEVfQk9YKSA9
PSAwKSkgewogCQkJCXJldHVybiAoMCk7CkBAIC0zNTIwLDIwICszNTIzLDE4IEBAIHByb2Nlc3Nf
Y2h1bmtfZHJvcChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2NodW5rX2Rlc2Mg
KmRlc2MsCiAJCQkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfcGRycGRpenJ3KTsKIAkJCQlyZXR1cm4g
KDApOwogCQkJfQotCQkJZGRwID0gKHVpbnQ4X3QgKikgKG10b2QodHAxLT5kYXRhLCBjYWRkcl90
KSArCi0JCQkJCSAgIHNpemVvZihzdHJ1Y3Qgc2N0cF9kYXRhX2NodW5rKSk7Ci0JCQl7Ci0JCQkJ
dW5zaWduZWQgaW50IGlpaTsKLQotCQkJCWZvciAoaWlpID0gMDsgaWlpIDwgc2l6ZW9mKGRlc2Mt
PmRhdGFfYnl0ZXMpOwotCQkJCSAgICAgaWlpKyspIHsKLQkJCQkJaWYgKGRkcFtpaWldICE9IGRl
c2MtPmRhdGFfYnl0ZXNbaWlpXSkgewotCQkJCQkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfcGRycGJh
ZGQpOwotCQkJCQkJcmV0dXJuICgtMSk7Ci0JCQkJCX0KLQkJCQl9CisJCQlpZiAoKHVpbnQzMl90
KVNDVFBfQlVGX0xFTih0cDEtPmRhdGEpIDwKKwkJCSAgICBTQ1RQX0RBVEFfQ0hVTktfT1ZFUkhF
QUQoc3RjYikgKyBTQ1RQX05VTV9EQl9UT19WRVJJRlkpIHsKKwkJCQkvKiBQYXlsb2FkIG5vdCBt
YXRjaGluZy4gKi8KKwkJCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19wZHJwYmFkZCk7CisJCQkJcmV0
dXJuICgtMSk7CisJCQl9CisJCQlpZiAobWVtY21wKG10b2QodHAxLT5kYXRhLCBjYWRkcl90KSAr
IFNDVFBfREFUQV9DSFVOS19PVkVSSEVBRChzdGNiKSwKKwkJCSAgICAgICAgICAgZGVzYy0+ZGF0
YV9ieXRlcywgU0NUUF9OVU1fREJfVE9fVkVSSUZZKSAhPSAwKSB7CisJCQkJLyogUGF5bG9hZCBu
b3QgbWF0Y2hpbmcuICovCisJCQkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfcGRycGJhZGQpOworCQkJ
CXJldHVybiAoLTEpOwogCQkJfQotCiAJCQlpZiAodHAxLT5kb19ydHQpIHsKIAkJCQkvKgogCQkJ
CSAqIHRoaXMgZ3V5IGhhZCBhIFJUTyBjYWxjdWxhdGlvbgpAQCAtMzgzNiw3ICszODM3LDcgQEAg
c2N0cF9jbGVhbl91cF9zdHJlYW1fcmVzZXQoc3RydWN0IHNjdHBfdGNiICpzdGNiKQogCX0KIAlh
c29jLT5zdHJfcmVzZXQgPSBOVUxMOwogCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVf
U1RSUkVTRVQsIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsCi0JICAgICAgICAgICAgICAgIGNoay0+d2hv
VG8sIFNDVFBfRlJPTV9TQ1RQX0lOUFVUICsgU0NUUF9MT0NfMjgpOworCSAgICAgICAgICAgICAg
ICBOVUxMLCBTQ1RQX0ZST01fU0NUUF9JTlBVVCArIFNDVFBfTE9DXzI4KTsKIAlUQUlMUV9SRU1P
VkUoJmFzb2MtPmNvbnRyb2xfc2VuZF9xdWV1ZSwgY2hrLCBzY3RwX25leHQpOwogCWFzb2MtPmN0
cmxfcXVldWVfY250LS07CiAJaWYgKGNoay0+ZGF0YSkgewpAQCAtNDM2OCwxMSArNDM2OSw5IEBA
IHNjdHBfaGFuZGxlX3N0cl9yZXNldF9hZGRfb3V0X3N0cm0oc3RydWN0IHNjdHBfdGNiICpzdGNi
LCBzdHJ1Y3Qgc2N0cF90bWl0X2NodW5rCiAJfQogfQogCi0jaWYgIWRlZmluZWQoX19QYW5kYV9f
KQogI2lmZGVmIF9fR05VQ19fCiBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKQogI2VuZGlmCi0j
ZW5kaWYKIHN0YXRpYyBpbnQKIHNjdHBfaGFuZGxlX3N0cmVhbV9yZXNldChzdHJ1Y3Qgc2N0cF90
Y2IgKnN0Y2IsIHN0cnVjdCBtYnVmICptLCBpbnQgb2Zmc2V0LAogCQkJIHN0cnVjdCBzY3RwX2No
dW5raGRyICpjaF9yZXEpCkBAIC00NTU0LDEwNCArNDU1MywxMjAgQEAgc3RhdGljIHZvaWQKIHNj
dHBfaGFuZGxlX3BhY2tldF9kcm9wcGVkKHN0cnVjdCBzY3RwX3BrdGRyb3BfY2h1bmsgKmNwLAog
ICAgIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfbmV0cyAqbmV0LCB1aW50MzJf
dCBsaW1pdCkKIHsKKwlzdHJ1Y3Qgc2N0cF9jaHVua19kZXNjIGRlc2M7CisJc3RydWN0IHNjdHBf
Y2h1bmtoZHIgKmNoa19oZHI7CisJc3RydWN0IHNjdHBfZGF0YV9jaHVuayAqZGF0YV9jaHVuazsK
KwlzdHJ1Y3Qgc2N0cF9pZGF0YV9jaHVuayAqaWRhdGFfY2h1bms7CiAJdWludDMyX3QgYm90dGxl
X2J3LCBvbl9xdWV1ZTsKKwl1aW50MzJfdCBvZmZzZXQsIGNoa19sZW47CiAJdWludDE2X3QgdHJ1
bmNfbGVuOwotCXVuc2lnbmVkIGludCBjaGxlbjsKLQl1bnNpZ25lZCBpbnQgYXQ7Ci0Jc3RydWN0
IHNjdHBfY2h1bmtfZGVzYyBkZXNjOwotCXN0cnVjdCBzY3RwX2NodW5raGRyICpjaDsKLQotCWNo
bGVuID0gbnRvaHMoY3AtPmNoLmNodW5rX2xlbmd0aCk7Ci0JY2hsZW4gLT0gc2l6ZW9mKHN0cnVj
dCBzY3RwX3BrdGRyb3BfY2h1bmspOwotCS8qIFhYWCBwb3NzaWJsZSBjaGxlbiB1bmRlcmZsb3cg
Ki8KLQlpZiAoY2hsZW4gPT0gMCkgewotCQljaCA9IE5VTEw7Ci0JCWlmIChjcC0+Y2guY2h1bmtf
ZmxhZ3MgJiBTQ1RQX0ZST01fTUlERExFX0JPWCkKLQkJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3Bk
cnBid3JwdCk7CisJdWludDE2X3QgcGt0ZHJwX2xlbjsKKwl1aW50OF90IHBrdGRycF9mbGFnczsK
KworCUtBU1NFUlQoc2l6ZW9mKHN0cnVjdCBzY3RwX3BrdGRyb3BfY2h1bmspIDw9IGxpbWl0LAor
CSAgICAgICAgKCJQS1REUk9QIGNodW5rIHRvbyBzbWFsbCIpKTsKKwlwa3RkcnBfZmxhZ3MgPSBj
cC0+Y2guY2h1bmtfZmxhZ3M7CisJcGt0ZHJwX2xlbiA9IG50b2hzKGNwLT5jaC5jaHVua19sZW5n
dGgpOworCUtBU1NFUlQobGltaXQgPD0gcGt0ZHJwX2xlbiwgKCJJbmNvbnNpc3RlbnQgbGltaXQi
KSk7CisJaWYgKHBrdGRycF9mbGFncyAmIFNDVFBfUEFDS0VUX1RSVU5DQVRFRCkgeworCQl0cnVu
Y19sZW4gPSBudG9ocyhjcC0+dHJ1bmNfbGVuKTsKKwkJaWYgKHRydW5jX2xlbiA8PSBwa3RkcnBf
bGVuIC0gc2l6ZW9mKHN0cnVjdCBzY3RwX3BrdGRyb3BfY2h1bmspKSB7CisJCQkvKiBUaGUgcGVl
ciBwbGF5cyBnYW1lcyB3aXRoIHVzLiAqLworCQkJcmV0dXJuOworCQl9CiAJfSBlbHNlIHsKLQkJ
Y2ggPSAoc3RydWN0IHNjdHBfY2h1bmtoZHIgKikoY3AtPmRhdGEgKyBzaXplb2Yoc3RydWN0IHNj
dHBoZHIpKTsKLQkJY2hsZW4gLT0gc2l6ZW9mKHN0cnVjdCBzY3RwaGRyKTsKLQkJLyogWFhYIHBv
c3NpYmxlIGNobGVuIHVuZGVyZmxvdyAqLwotCQltZW1zZXQoJmRlc2MsIDAsIHNpemVvZihkZXNj
KSk7CisJCXRydW5jX2xlbiA9IDA7CiAJfQotCXRydW5jX2xlbiA9ICh1aW50MTZfdCkgbnRvaHMo
Y3AtPnRydW5jX2xlbik7Ci0JaWYgKHRydW5jX2xlbiA+IGxpbWl0KSB7Ci0JCXRydW5jX2xlbiA9
IGxpbWl0OworCWxpbWl0IC09IHNpemVvZihzdHJ1Y3Qgc2N0cF9wa3Rkcm9wX2NodW5rKTsKKwlv
ZmZzZXQgPSAwOworCWlmIChvZmZzZXQgPT0gbGltaXQpIHsKKwkJaWYgKHBrdGRycF9mbGFncyAm
IFNDVFBfRlJPTV9NSURETEVfQk9YKSB7CisJCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19wZHJwYndy
cHQpOworCQl9CisJfSBlbHNlIGlmIChvZmZzZXQgKyBzaXplb2Yoc3RydWN0IHNjdHBoZHIpID4g
bGltaXQpIHsKKwkJLyogT25seSBhIHBhcnRpYWwgU0NUUCBjb21tb24gaGVhZGVyLiAqLworCQlT
Q1RQX1NUQVRfSU5DUihzY3Rwc19wZHJwY3J1cHQpOworCQlvZmZzZXQgPSBsaW1pdDsKKwl9IGVs
c2UgeworCQkvKiBYWFg6IENoZWNrIGVtYmVkZGVkIFNDVFAgY29tbW9uIGhlYWRlci4gKi8KKwkJ
b2Zmc2V0ICs9IHNpemVvZihzdHJ1Y3Qgc2N0cGhkcik7CiAJfQotCi0JLyogbm93IHRoZSBjaHVu
a3MgdGhlbXNlbHZlcyAqLwotCXdoaWxlICgoY2ggIT0gTlVMTCkgJiYgKGNobGVuID49IHNpemVv
ZihzdHJ1Y3Qgc2N0cF9jaHVua2hkcikpKSB7Ci0JCWRlc2MuY2h1bmtfdHlwZSA9IGNoLT5jaHVu
a190eXBlOwotCQkvKiBnZXQgYW1vdW50IHdlIG5lZWQgdG8gbW92ZSAqLwotCQlhdCA9IG50b2hz
KGNoLT5jaHVua19sZW5ndGgpOwotCQlpZiAoYXQgPCBzaXplb2Yoc3RydWN0IHNjdHBfY2h1bmto
ZHIpKSB7Ci0JCQkvKiBjb3JydXB0IGNodW5rLCBtYXliZSBhdCB0aGUgZW5kPyAqLworCS8qIE5v
dyBwYXJzZSB0aHJvdWdoIHRoZSBjaHVua3MgdGhlbXNlbHZlcy4gKi8KKwl3aGlsZSAob2Zmc2V0
IDwgbGltaXQpIHsKKwkJaWYgKG9mZnNldCArIHNpemVvZihzdHJ1Y3Qgc2N0cF9jaHVua2hkcikg
PiBsaW1pdCkgewogCQkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfcGRycGNydXB0KTsKIAkJCWJyZWFr
OwogCQl9Ci0JCWlmICh0cnVuY19sZW4gPT0gMCkgewotCQkJLyogd2UgYXJlIHN1cHBvc2VkIHRv
IGhhdmUgYWxsIG9mIGl0ICovCi0JCQlpZiAoYXQgPiBjaGxlbikgewotCQkJCS8qIGNvcnJ1cHQg
c2tpcCBpdCAqLwotCQkJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3BkcnBjcnVwdCk7CisJCWNoa19o
ZHIgPSAoc3RydWN0IHNjdHBfY2h1bmtoZHIgKikoY3AtPmRhdGEgKyBvZmZzZXQpOworCQlkZXNj
LmNodW5rX3R5cGUgPSBjaGtfaGRyLT5jaHVua190eXBlOworCQkvKiBnZXQgYW1vdW50IHdlIG5l
ZWQgdG8gbW92ZSAqLworCQljaGtfbGVuID0gKHVpbnQzMl90KW50b2hzKGNoa19oZHItPmNodW5r
X2xlbmd0aCk7CisJCWlmIChjaGtfbGVuIDwgc2l6ZW9mKHN0cnVjdCBzY3RwX2NodW5raGRyKSkg
eworCQkJLyogU29tZW9uZSBpcyBseWluZy4uLiAqLworCQkJYnJlYWs7CisJCX0KKwkJaWYgKGRl
c2MuY2h1bmtfdHlwZSA9PSBTQ1RQX0RBVEEpIHsKKwkJCWlmIChzdGNiLT5hc29jLmlkYXRhX3N1
cHBvcnRlZCkgeworCQkJCS8qIFNvbWUgaXMgcGxheWluZyBnYW1lcyB3aXRoIHVzLiAqLwogCQkJ
CWJyZWFrOwogCQkJfQotCQl9IGVsc2UgewotCQkJLyogaXMgdGhlcmUgZW5vdWdoIG9mIGl0IGxl
ZnQgPyAqLwotCQkJaWYgKGRlc2MuY2h1bmtfdHlwZSA9PSBTQ1RQX0RBVEEpIHsKLQkJCQlpZiAo
Y2hsZW4gPCAoc2l6ZW9mKHN0cnVjdCBzY3RwX2RhdGFfY2h1bmspICsKLQkJCQkgICAgc2l6ZW9m
KGRlc2MuZGF0YV9ieXRlcykpKSB7Ci0JCQkJCWJyZWFrOwotCQkJCX0KLQkJCX0gZWxzZSB7Ci0J
CQkJaWYgKGNobGVuIDwgc2l6ZW9mKHN0cnVjdCBzY3RwX2NodW5raGRyKSkgewotCQkJCQlicmVh
azsKLQkJCQl9CisJCQlpZiAoY2hrX2xlbiA8PSBzaXplb2Yoc3RydWN0IHNjdHBfZGF0YV9jaHVu
aykpIHsKKwkJCQkvKiBTb21lIGlzIHBsYXlpbmcgZ2FtZXMgd2l0aCB1cy4gKi8KKwkJCQlicmVh
azsKIAkJCX0KLQkJfQotCQlpZiAoZGVzYy5jaHVua190eXBlID09IFNDVFBfREFUQSkgewotCQkJ
LyogY2FuIHdlIGdldCBvdXQgdGhlIHRzbj8gKi8KLQkJCWlmICgoY3AtPmNoLmNodW5rX2ZsYWdz
ICYgU0NUUF9GUk9NX01JRERMRV9CT1gpKQorCQkJaWYgKGNoa19sZW4gPCBzaXplb2Yoc3RydWN0
IHNjdHBfZGF0YV9jaHVuaykgKyBTQ1RQX05VTV9EQl9UT19WRVJJRlkpIHsKKwkJCQkvKiBOb3Qg
ZW5vdWdoIGRhdGEgYnl0ZXMgYXZhaWxhYmxlIGluIHRoZSBjaHVuay4gKi8KKwkJCQlTQ1RQX1NU
QVRfSU5DUihzY3Rwc19wZHJwbmVkYXQpOworCQkJCWdvdG8gbmV4dF9jaHVuazsKKwkJCX0KKwkJ
CWlmIChvZmZzZXQgKyBzaXplb2Yoc3RydWN0IHNjdHBfZGF0YV9jaHVuaykgKyBTQ1RQX05VTV9E
Ql9UT19WRVJJRlkgPiBsaW1pdCkgeworCQkJCS8qIE5vdCBlbm91Z2ggZGF0YSBpbiBidWZmZXIu
ICovCisJCQkJYnJlYWs7CisJCQl9CisJCQlkYXRhX2NodW5rID0gKHN0cnVjdCBzY3RwX2RhdGFf
Y2h1bmsgKikoY3AtPmRhdGEgKyBvZmZzZXQpOworCQkJbWVtY3B5KGRlc2MuZGF0YV9ieXRlcywg
ZGF0YV9jaHVuayArIDEsIFNDVFBfTlVNX0RCX1RPX1ZFUklGWSk7CisJCQlkZXNjLnRzbl9pZmFu
eSA9IGRhdGFfY2h1bmstPmRwLnRzbjsKKwkJCWlmIChwa3RkcnBfZmxhZ3MgJiBTQ1RQX0ZST01f
TUlERExFX0JPWCkgewogCQkJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3BkcnBtYmRhKTsKLQotCQkJ
aWYgKGNobGVuID49IChzaXplb2Yoc3RydWN0IHNjdHBfZGF0YV9jaHVuaykgKyBzaXplb2YodWlu
dDMyX3QpKSkgewotCQkJCS8qIHllcCAqLwotCQkJCXN0cnVjdCBzY3RwX2RhdGFfY2h1bmsgKmRj
cDsKLQkJCQl1aW50OF90ICpkZHA7Ci0JCQkJdW5zaWduZWQgaW50IGlpaTsKLQotCQkJCWRjcCA9
IChzdHJ1Y3Qgc2N0cF9kYXRhX2NodW5rICopY2g7Ci0JCQkJZGRwID0gKHVpbnQ4X3QgKikgKGRj
cCArIDEpOwotCQkJCWZvciAoaWlpID0gMDsgaWlpIDwgc2l6ZW9mKGRlc2MuZGF0YV9ieXRlcyk7
IGlpaSsrKSB7Ci0JCQkJCWRlc2MuZGF0YV9ieXRlc1tpaWldID0gZGRwW2lpaV07Ci0JCQkJfQot
CQkJCWRlc2MudHNuX2lmYW55ID0gZGNwLT5kcC50c247Ci0JCQl9IGVsc2UgewotCQkJCS8qIG5v
cGUgd2UgYXJlIGRvbmUuICovCisJCQl9CisJCX0gZWxzZSBpZiAoZGVzYy5jaHVua190eXBlID09
IFNDVFBfSURBVEEpIHsKKwkJCWlmICghc3RjYi0+YXNvYy5pZGF0YV9zdXBwb3J0ZWQpIHsKKwkJ
CQkvKiBTb21lIGlzIHBsYXlpbmcgZ2FtZXMgd2l0aCB1cy4gKi8KKwkJCQlicmVhazsKKwkJCX0K
KwkJCWlmIChjaGtfbGVuIDw9IHNpemVvZihzdHJ1Y3Qgc2N0cF9pZGF0YV9jaHVuaykpIHsKKwkJ
CQkvKiBTb21lIGlzIHBsYXlpbmcgZ2FtZXMgd2l0aCB1cy4gKi8KKwkJCQlicmVhazsKKwkJCX0K
KwkJCWlmIChjaGtfbGVuIDwgc2l6ZW9mKHN0cnVjdCBzY3RwX2lkYXRhX2NodW5rKSArIFNDVFBf
TlVNX0RCX1RPX1ZFUklGWSkgeworCQkJCS8qIE5vdCBlbm91Z2ggZGF0YSBieXRlcyBhdmFpbGFi
bGUgaW4gdGhlIGNodW5rLiAqLwogCQkJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3BkcnBuZWRhdCk7
CisJCQkJZ290byBuZXh0X2NodW5rOworCQkJfQorCQkJaWYgKG9mZnNldCArIHNpemVvZihzdHJ1
Y3Qgc2N0cF9pZGF0YV9jaHVuaykgKyBTQ1RQX05VTV9EQl9UT19WRVJJRlkgPiBsaW1pdCkgewor
CQkJCS8qIE5vdCBlbm91Z2ggZGF0YSBpbiBidWZmZXIuICovCiAJCQkJYnJlYWs7CiAJCQl9CisJ
CQlpZGF0YV9jaHVuayA9IChzdHJ1Y3Qgc2N0cF9pZGF0YV9jaHVuayAqKShjcC0+ZGF0YSArIG9m
ZnNldCk7CisJCQltZW1jcHkoZGVzYy5kYXRhX2J5dGVzLCBpZGF0YV9jaHVuayArIDEsIFNDVFBf
TlVNX0RCX1RPX1ZFUklGWSk7CisJCQlkZXNjLnRzbl9pZmFueSA9IGlkYXRhX2NodW5rLT5kcC50
c247CisJCQlpZiAocGt0ZHJwX2ZsYWdzICYgU0NUUF9GUk9NX01JRERMRV9CT1gpIHsKKwkJCQlT
Q1RQX1NUQVRfSU5DUihzY3Rwc19wZHJwbWJkYSk7CisJCQl9CiAJCX0gZWxzZSB7Ci0JCQlpZiAo
KGNwLT5jaC5jaHVua19mbGFncyAmIFNDVFBfRlJPTV9NSURETEVfQk9YKSkKKwkJCWlmIChwa3Rk
cnBfZmxhZ3MgJiBTQ1RQX0ZST01fTUlERExFX0JPWCkgewogCQkJCVNDVFBfU1RBVF9JTkNSKHNj
dHBzX3BkcnBtYmN0KTsKKwkJCX0KIAkJfQotCi0JCWlmIChwcm9jZXNzX2NodW5rX2Ryb3Aoc3Rj
YiwgJmRlc2MsIG5ldCwgY3AtPmNoLmNodW5rX2ZsYWdzKSkgeworCQlpZiAocHJvY2Vzc19jaHVu
a19kcm9wKHN0Y2IsICZkZXNjLCBuZXQsIHBrdGRycF9mbGFncykpIHsKIAkJCVNDVFBfU1RBVF9J
TkNSKHNjdHBzX3BkcnBwZGJyayk7CiAJCQlicmVhazsKIAkJfQotCQlpZiAoU0NUUF9TSVpFMzIo
YXQpID4gY2hsZW4pIHsKLQkJCWJyZWFrOwotCQl9Ci0JCWNobGVuIC09IFNDVFBfU0laRTMyKGF0
KTsKLQkJaWYgKGNobGVuIDwgc2l6ZW9mKHN0cnVjdCBzY3RwX2NodW5raGRyKSkgewotCQkJLyog
ZG9uZSwgbm9uZSBsZWZ0ICovCi0JCQlicmVhazsKLQkJfQotCQljaCA9IChzdHJ1Y3Qgc2N0cF9j
aHVua2hkciAqKSgoY2FkZHJfdCljaCArIFNDVFBfU0laRTMyKGF0KSk7CituZXh0X2NodW5rOgor
CQlvZmZzZXQgKz0gU0NUUF9TSVpFMzIoY2hrX2xlbik7CiAJfQogCS8qIE5vdyB1cGRhdGUgYW55
IHJ3bmQgLS0tIHBvc3NpYmx5ICovCi0JaWYgKChjcC0+Y2guY2h1bmtfZmxhZ3MgJiBTQ1RQX0ZS
T01fTUlERExFX0JPWCkgPT0gMCkgeworCWlmICgocGt0ZHJwX2ZsYWdzICYgU0NUUF9GUk9NX01J
RERMRV9CT1gpID09IDApIHsKIAkJLyogRnJvbSBhIHBlZXIsIHdlIGdldCBhIHJ3bmQgcmVwb3J0
ICovCiAJCXVpbnQzMl90IGFfcnduZDsKIApAQCAtNDY4Nyw3ICs0NzAyLDcgQEAgc2N0cF9oYW5k
bGVfcGFja2V0X2Ryb3BwZWQoc3RydWN0IHNjdHBfcGt0ZHJvcF9jaHVuayAqY3AsCiAJfQogCiAJ
Lyogbm93IG1pZGRsZSBib3hlcyBpbiBzYXQgbmV0d29ya3MgZ2V0IGEgY3duZCBidW1wICovCi0J
aWYgKChjcC0+Y2guY2h1bmtfZmxhZ3MgJiBTQ1RQX0ZST01fTUlERExFX0JPWCkgJiYKKwlpZiAo
KHBrdGRycF9mbGFncyAmIFNDVFBfRlJPTV9NSURETEVfQk9YKSAmJgogCSAgICAoc3RjYi0+YXNv
Yy5zYXRfdDNfbG9zc19yZWNvdmVyeSA9PSAwKSAmJgogCSAgICAoc3RjYi0+YXNvYy5zYXRfbmV0
d29yaykpIHsKIAkJLyoKQEAgLTQ3MDksMTcgKzQ3MjQsMTUgQEAgc2N0cF9oYW5kbGVfcGFja2V0
X2Ryb3BwZWQoc3RydWN0IHNjdHBfcGt0ZHJvcF9jaHVuayAqY3AsCiAgKiBjb29raWUtZWNobyBw
cm9jZXNzaW5nIC0gcmV0dXJuIE5VTEwgdG8gZGlzY2FyZCB0aGUgcGFja2V0IChpZS4gbm8gYXNv
YywKICAqIGJhZCBwYWNrZXQsLi4uKSBvdGhlcndpc2UgcmV0dXJuIHRoZSB0Y2IgZm9yIHRoaXMg
cGFja2V0CiAgKi8KLSNpZiAhZGVmaW5lZChfX1BhbmRhX18pCiAjaWZkZWYgX19HTlVDX18KIF9f
YXR0cmlidXRlX18gKChub2lubGluZSkpCiAjZW5kaWYKLSNlbmRpZgogc3RhdGljIHN0cnVjdCBz
Y3RwX3RjYiAqCiBzY3RwX3Byb2Nlc3NfY29udHJvbChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxl
biwgaW50ICpvZmZzZXQsIGludCBsZW5ndGgsCiAgICAgc3RydWN0IHNvY2thZGRyICpzcmMsIHN0
cnVjdCBzb2NrYWRkciAqZHN0LAogICAgIHN0cnVjdCBzY3RwaGRyICpzaCwgc3RydWN0IHNjdHBf
Y2h1bmtoZHIgKmNoLCBzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogICAgIHN0cnVjdCBzY3RwX3Rj
YiAqc3RjYiwgc3RydWN0IHNjdHBfbmV0cyAqKm5ldHAsIGludCAqZndkX3Rzbl9zZWVuLAotI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKICAgICB1aW50OF90IG1mbG93dHlwZSwgdWludDMyX3QgbWZsb3dp
ZCwgdWludDE2X3QgZmlibnVtLAogI2VuZGlmCiAgICAgdWludDMyX3QgdnJmX2lkLCB1aW50MTZf
dCBwb3J0KQpAQCAtNDc0Myw3ICs0NzU2LDcgQEAgc2N0cF9wcm9jZXNzX2NvbnRyb2woc3RydWN0
IG1idWYgKm0sIGludCBpcGhsZW4sIGludCAqb2Zmc2V0LCBpbnQgbGVuZ3RoLAogCXVpbnQzMl90
IGF1dGhfb2Zmc2V0ID0gMCwgYXV0aF9sZW4gPSAwOwogCWludCBhdXRoX3NraXBwZWQgPSAwOwog
CWludCBhc2NvbmZfY250ID0gMDsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChT
Q1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKIAlzdHJ1Y3Qgc29ja2V0ICpzbzsKICNlbmRpZgogCkBAIC00ODQ2LDEx
ICs0ODU5LDEzIEBAIHNjdHBfcHJvY2Vzc19jb250cm9sKHN0cnVjdCBtYnVmICptLCBpbnQgaXBo
bGVuLCBpbnQgKm9mZnNldCwgaW50IGxlbmd0aCwKIAkJCWlmIChhdXRoX3NraXBwZWQgJiYgKHN0
Y2IgIT0gTlVMTCkpIHsKIAkJCQlzdHJ1Y3Qgc2N0cF9hdXRoX2NodW5rICphdXRoOwogCi0JCQkJ
YXV0aCA9IChzdHJ1Y3Qgc2N0cF9hdXRoX2NodW5rICopCi0JCQkJCXNjdHBfbV9nZXRwdHIobSwg
YXV0aF9vZmZzZXQsCi0JCQkJCQkgICAgICBhdXRoX2xlbiwgY2h1bmtfYnVmKTsKLQkJCQlnb3Rf
YXV0aCA9IDE7Ci0JCQkJYXV0aF9za2lwcGVkID0gMDsKKwkJCQlpZiAoYXV0aF9sZW4gPD0gU0NU
UF9DSFVOS19CVUZGRVJfU0laRSkgeworCQkJCQlhdXRoID0gKHN0cnVjdCBzY3RwX2F1dGhfY2h1
bmsgKilzY3RwX21fZ2V0cHRyKG0sIGF1dGhfb2Zmc2V0LCBhdXRoX2xlbiwgY2h1bmtfYnVmKTsK
KwkJCQkJZ290X2F1dGggPSAxOworCQkJCQlhdXRoX3NraXBwZWQgPSAwOworCQkJCX0gZWxzZSB7
CisJCQkJCWF1dGggPSBOVUxMOworCQkJCX0KIAkJCQlpZiAoKGF1dGggPT0gTlVMTCkgfHwgc2N0
cF9oYW5kbGVfYXV0aChzdGNiLCBhdXRoLCBtLAogCQkJCQkJCQkgICAgICAgYXV0aF9vZmZzZXQp
KSB7CiAJCQkJCS8qIGF1dGggSE1BQyBmYWlsZWQgc28gZHVtcCBpdCAqLwpAQCAtNDg2MywxMiAr
NDg3OCwxMiBAQCBzY3RwX3Byb2Nlc3NfY29udHJvbChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxl
biwgaW50ICpvZmZzZXQsIGludCBsZW5ndGgsCiAJCQl9CiAJCX0KIAkJaWYgKHN0Y2IgPT0gTlVM
TCkgewotCQkJc25wcmludGYobXNnLCBzaXplb2YobXNnKSwgIk9PVEIsICVzOiVkIGF0ICVzIiwg
X19GSUxFX18sIF9fTElORV9fLCBfX2Z1bmNfXyk7CisJCQlTQ1RQX1NOUFJJTlRGKG1zZywgc2l6
ZW9mKG1zZyksICJPT1RCLCAlczolZCBhdCAlcyIsIF9fRklMRV9fLCBfX0xJTkVfXywgX19mdW5j
X18pOwogCQkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQX0JBU0VfU1lTQ1RMKHNj
dHBfZGlhZ19pbmZvX2NvZGUpLAogCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cp
OwogCQkJLyogbm8gYXNzb2NpYXRpb24sIHNvIGl0J3Mgb3V0IG9mIHRoZSBibHVlLi4uICovCiAJ
CQlzY3RwX2hhbmRsZV9vb3RiKG0sIGlwaGxlbiwgKm9mZnNldCwgc3JjLCBkc3QsIHNoLCBpbnAs
IG9wX2VyciwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkgICAgICAgICAgICAgICAgIG1mbG93
dHlwZSwgbWZsb3dpZCwgaW5wLT5maWJudW0sCiAjZW5kaWYKIAkJCQkJIHZyZl9pZCwgcG9ydCk7
CkBAIC00OTA3LDEyICs0OTIyLDEyIEBAIHNjdHBfcHJvY2Vzc19jb250cm9sKHN0cnVjdCBtYnVm
ICptLCBpbnQgaXBobGVuLCBpbnQgKm9mZnNldCwgaW50IGxlbmd0aCwKIAkJCQlpZiAoc3RjYiAh
PSBOVUxMKSB7CiAJCQkJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKIAkJCQl9Ci0JCQkJc25wcmlu
dGYobXNnLCBzaXplb2YobXNnKSwgIk9PVEIsICVzOiVkIGF0ICVzIiwgX19GSUxFX18sIF9fTElO
RV9fLCBfX2Z1bmNfXyk7CisJCQkJU0NUUF9TTlBSSU5URihtc2csIHNpemVvZihtc2cpLCAiT09U
QiwgJXM6JWQgYXQgJXMiLCBfX0ZJTEVfXywgX19MSU5FX18sIF9fZnVuY19fKTsKIAkJCQlvcF9l
cnIgPSBzY3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9kaWFnX2luZm9f
Y29kZSksCiAJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cpOwogCQkJCXNjdHBf
aGFuZGxlX29vdGIobSwgaXBobGVuLCAqb2Zmc2V0LCBzcmMsIGRzdCwKIAkJCQkgICAgICAgICAg
ICAgICAgIHNoLCBpbnAsIG9wX2VyciwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJICAgICAg
ICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQsIGZpYm51bSwKICNlbmRpZgogCQkJCSAgICAg
ICAgICAgICAgICAgdnJmX2lkLCBwb3J0KTsKQEAgLTQ5NDAsNyArNDk1NSw3IEBAIHNjdHBfcHJv
Y2Vzc19jb250cm9sKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgKm9mZnNldCwgaW50
IGxlbmd0aCwKIAlpZiAoKChjaC0+Y2h1bmtfdHlwZSA9PSBTQ1RQX1NFTEVDVElWRV9BQ0spIHx8
CiAJICAgICAoY2gtPmNodW5rX3R5cGUgPT0gU0NUUF9OUl9TRUxFQ1RJVkVfQUNLKSB8fAogCSAg
ICAgKGNoLT5jaHVua190eXBlID09IFNDVFBfSEVBUlRCRUFUX1JFUVVFU1QpKSAmJgotCSAgICAo
U0NUUF9HRVRfU1RBVEUoJnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCkp
IHsKKwkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9F
RCkpIHsKIAkJLyogaW1wbGllZCBjb29raWUtYWNrLi4gd2UgbXVzdCBoYXZlIGxvc3QgdGhlIGFj
ayAqLwogCQlzY3RwX2hhbmRsZV9jb29raWVfYWNrKChzdHJ1Y3Qgc2N0cF9jb29raWVfYWNrX2No
dW5rICopY2gsIHN0Y2IsCiAJCQkJICAgICAgICpuZXRwKTsKQEAgLTUwMjksNyArNTA0NCw3IEBA
IHNjdHBfcHJvY2Vzc19jb250cm9sKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgKm9m
ZnNldCwgaW50IGxlbmd0aCwKIAkJCQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBf
Q0FVU0VfT1VUX09GX1JFU0MsICIiKTsKIAkJCQlzY3RwX2Fib3J0X2Fzc29jaWF0aW9uKGlucCwg
c3RjYiwgbSwgaXBobGVuLAogCQkJCQkJICAgICAgIHNyYywgZHN0LCBzaCwgb3BfZXJyLAotI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQkgICAgICAgICAgICAgICAgICAgICAgIG1mbG93dHlwZSwg
bWZsb3dpZCwKICNlbmRpZgogCQkJCSAgICAgICAgICAgICAgICAgICAgICAgdnJmX2lkLCBwb3J0
KTsKQEAgLTUwMzksNyArNTA1NCw3IEBAIHNjdHBfcHJvY2Vzc19jb250cm9sKHN0cnVjdCBtYnVm
ICptLCBpbnQgaXBobGVuLCBpbnQgKm9mZnNldCwgaW50IGxlbmd0aCwKIAkJCXNjdHBfaGFuZGxl
X2luaXQobSwgaXBobGVuLCAqb2Zmc2V0LCBzcmMsIGRzdCwgc2gsCiAJCQkgICAgICAgICAgICAg
ICAgIChzdHJ1Y3Qgc2N0cF9pbml0X2NodW5rICopY2gsIGlucCwKIAkJCSAgICAgICAgICAgICAg
ICAgc3RjYiwgKm5ldHAsICZhYm9ydF9ub191bmxvY2ssCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
CQkJICAgICAgICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQsCiAjZW5kaWYKIAkJCSAgICAg
ICAgICAgICAgICAgdnJmX2lkLCBwb3J0KTsKQEAgLTUwNjAsNyArNTA3NSw3IEBAIHNjdHBfcHJv
Y2Vzc19jb250cm9sKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgKm9mZnNldCwgaW50
IGxlbmd0aCwKIAkJCQl9IGVsc2UgewogCQkJCQkqb2Zmc2V0ID0gbGVuZ3RoOwogCQkJCQlpZiAo
c3RjYiAhPSBOVUxMKSB7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9T
T19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAJCQkJCQlzbyA9IFNDVFBfSU5QX1NPKGlucCk7CiAJCQkJCQlhdG9taWNfYWRk
X2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIDEpOwogCQkJCQkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2Ip
OwpAQCAtNTA3MCw3ICs1MDg1LDcgQEAgc2N0cF9wcm9jZXNzX2NvbnRyb2woc3RydWN0IG1idWYg
Km0sIGludCBpcGhsZW4sIGludCAqb2Zmc2V0LCBpbnQgbGVuZ3RoLAogI2VuZGlmCiAJCQkJCQko
dm9pZClzY3RwX2ZyZWVfYXNzb2MoaW5wLCBzdGNiLCBTQ1RQX05PUk1BTF9QUk9DLAogCQkJCQkJ
ICAgICAgICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX0lOUFVUICsgU0NUUF9MT0NfMjkp
OwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5H
KQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJ
CQkJU0NUUF9TT0NLRVRfVU5MT0NLKHNvLCAxKTsKICNlbmRpZgogCQkJCQl9CkBAIC01MDg5LDcg
KzUxMDQsNyBAQCBzY3RwX3Byb2Nlc3NfY29udHJvbChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxl
biwgaW50ICpvZmZzZXQsIGludCBsZW5ndGgsCiAJCQkJICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHN0cnVjdCBzY3RwX2luaXRfYWNrX2NodW5rICopY2gsCiAJCQkJICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RjYiwgKm5ldHAsCiAJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAg
JmFib3J0X25vX3VubG9jaywKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWZsb3d0eXBlLCBtZmxvd2lkLAogI2VuZGlmCiAJCQkJICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdnJmX2lkKTsKQEAgLTUxNDAsNyArNTE1NSw3IEBAIHNjdHBfcHJv
Y2Vzc19jb250cm9sKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgKm9mZnNldCwgaW50
IGxlbmd0aCwKIAkJCQkJYnJlYWs7CiAJCQkJfQogCQkJfQotCQkJaWYgKFNDVFBfR0VUX1NUQVRF
KCZzdGNiLT5hc29jKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX0FDS19TRU5UKSB7CisJCQlpZiAo
U0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tfU0VOVCkgewog
CQkJCS8qLQogCQkJCSAqIElmIHdlIGhhdmUgc2VudCBhIHNodXRkb3duLWFjaywgd2Ugd2lsbCBw
YXkgbm8KIAkJCQkgKiBhdHRlbnRpb24gdG8gYSBzYWNrIHNlbnQgaW4gdG8gdXMgc2luY2UKQEAg
LTUzMjksNyArNTM0NCw3IEBAIHNjdHBfcHJvY2Vzc19jb250cm9sKHN0cnVjdCBtYnVmICptLCBp
bnQgaXBobGVuLCBpbnQgKm9mZnNldCwgaW50IGxlbmd0aCwKIAkJCWlmICgoc3RjYiA9PSBOVUxM
KSAmJgogCQkJICAgICghU0NUUF9JU19MSVNURU5JTkcoaW5wKSB8fAogCQkJICAgICAoIShpbnAt
PnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgotI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDEyMDAwMzQKKyNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJICAgICAgaW5wLT5zY3Rw
X3NvY2tldC0+c29sX3FsZW4gPj0gaW5wLT5zY3RwX3NvY2tldC0+c29sX3FsaW1pdCkpKSB7CiAj
ZWxzZQogCQkJICAgICAgaW5wLT5zY3RwX3NvY2tldC0+c29fcWxlbiA+PSBpbnAtPnNjdHBfc29j
a2V0LT5zb19xbGltaXQpKSkgewpAQCAtNTMzOSw3ICs1MzU0LDcgQEAgc2N0cF9wcm9jZXNzX2Nv
bnRyb2woc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCAqb2Zmc2V0LCBpbnQgbGVuZ3Ro
LAogCQkJCQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBfQ0FVU0VfT1VUX09GX1JF
U0MsICIiKTsKIAkJCQkJc2N0cF9hYm9ydF9hc3NvY2lhdGlvbihpbnAsIHN0Y2IsIG0sIGlwaGxl
biwKIAkJCQkJICAgICAgICAgICAgICAgICAgICAgICBzcmMsIGRzdCwgc2gsIG9wX2VyciwKLSNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgbWZsb3d0eXBl
LCBtZmxvd2lkLAogI2VuZGlmCiAJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgdnJmX2lkLCBw
b3J0KTsKQEAgLTUzNDksNiArNTM2NCw4IEBAIHNjdHBfcHJvY2Vzc19jb250cm9sKHN0cnVjdCBt
YnVmICptLCBpbnQgaXBobGVuLCBpbnQgKm9mZnNldCwgaW50IGxlbmd0aCwKIAkJCX0gZWxzZSB7
CiAJCQkJc3RydWN0IG1idWYgKnJldF9idWY7CiAJCQkJc3RydWN0IHNjdHBfaW5wY2IgKmxpbnA7
CisJCQkJc3RydWN0IHNjdHBfdG1pdF9jaHVuayAqY2hrOworCiAJCQkJaWYgKHN0Y2IpIHsKIAkJ
CQkJbGlucCA9IE5VTEw7CiAJCQkJfSBlbHNlIHsKQEAgLTUzNzksNyArNTM5Niw3IEBAIHNjdHBf
cHJvY2Vzc19jb250cm9sKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgKm9mZnNldCwg
aW50IGxlbmd0aCwKIAkJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhfb2Zmc2V0LAog
CQkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgYXV0aF9sZW4sCiAJCQkJCQkgICAgICAgICAg
ICAgICAgICAgICAgICAmbG9ja2VkX3N0Y2IsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCQkJ
ICAgICAgICAgICAgICAgICAgICAgICAgbWZsb3d0eXBlLAogCQkJCQkJICAgICAgICAgICAgICAg
ICAgICAgICAgbWZsb3dpZCwKICNlbmRpZgpAQCAtNTQxMSwxNCArNTQyOCwxMyBAQCBzY3RwX3By
b2Nlc3NfY29udHJvbChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50ICpvZmZzZXQsIGlu
dCBsZW5ndGgsCiAJCQkJCWdvdF9hdXRoID0gMTsKIAkJCQkJYXV0aF9za2lwcGVkID0gMDsKIAkJ
CQl9Ci0JCQkJaWYgKCFUQUlMUV9FTVBUWSgmc3RjYi0+YXNvYy5zZW50X3F1ZXVlKSkgewotCQkJ
CQkvKgotCQkJCQkgKiBSZXN0YXJ0IHRoZSB0aW1lciBpZiB3ZSBoYXZlCi0JCQkJCSAqIHBlbmRp
bmcgZGF0YQotCQkJCQkgKi8KLQkJCQkJc3RydWN0IHNjdHBfdG1pdF9jaHVuayAqY2hrOwotCi0J
CQkJCWNoayA9IFRBSUxRX0ZJUlNUKCZzdGNiLT5hc29jLnNlbnRfcXVldWUpOworCQkJCS8qIFJl
c3RhcnQgdGhlIHRpbWVyIGlmIHdlIGhhdmUgcGVuZGluZyBkYXRhICovCisJCQkJVEFJTFFfRk9S
RUFDSChjaGssICZzdGNiLT5hc29jLnNlbnRfcXVldWUsIHNjdHBfbmV4dCkgeworCQkJCQlpZiAo
Y2hrLT53aG9UbyAhPSBOVUxMKSB7CisJCQkJCQlicmVhazsKKwkJCQkJfQorCQkJCX0KKwkJCQlp
ZiAoY2hrICE9IE5VTEwpIHsKIAkJCQkJc2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVf
U0VORCwgc3RjYi0+c2N0cF9lcCwgc3RjYiwgY2hrLT53aG9Ubyk7CiAJCQkJfQogCQkJfQpAQCAt
NTQzMyw3ICs1NDQ5LDcgQEAgc2N0cF9wcm9jZXNzX2NvbnRyb2woc3RydWN0IG1idWYgKm0sIGlu
dCBpcGhsZW4sIGludCAqb2Zmc2V0LCBpbnQgbGVuZ3RoLAogCQkJCWlmICgoc3RjYikgJiYgKHN0
Y2ItPmFzb2MudG90YWxfb3V0cHV0X3F1ZXVlX3NpemUpKSB7CiAJCQkJCTsKIAkJCQl9IGVsc2Ug
aWYgKHN0Y2IpIHsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xP
Q0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKIAkJCQkJc28gPSBTQ1RQX0lOUF9TTyhpbnApOwogCQkJCQlhdG9taWNfYWRkX2ludCgm
c3RjYi0+YXNvYy5yZWZjbnQsIDEpOwogCQkJCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CkBAIC01
NDQzLDcgKzU0NTksNyBAQCBzY3RwX3Byb2Nlc3NfY29udHJvbChzdHJ1Y3QgbWJ1ZiAqbSwgaW50
IGlwaGxlbiwgaW50ICpvZmZzZXQsIGludCBsZW5ndGgsCiAjZW5kaWYKIAkJCQkJKHZvaWQpc2N0
cF9mcmVlX2Fzc29jKGlucCwgc3RjYiwgU0NUUF9OT1JNQUxfUFJPQywKIAkJCQkJICAgICAgICAg
ICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX0lOUFVUICsgU0NUUF9MT0NfMzApOwotI2lmIGRl
ZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRl
ZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCQlTQ1RQX1NP
Q0tFVF9VTkxPQ0soc28sIDEpOwogI2VuZGlmCiAJCQkJCSpvZmZzZXQgPSBsZW5ndGg7CkBAIC01
NTMyLDcgKzU1NDgsOCBAQCBzY3RwX3Byb2Nlc3NfY29udHJvbChzdHJ1Y3QgbWJ1ZiAqbSwgaW50
IGlwaGxlbiwgaW50ICpvZmZzZXQsIGludCBsZW5ndGgsCiAJCQlicmVhazsKIAkJY2FzZSBTQ1RQ
X0ZPUldBUkRfQ1VNX1RTTjoKIAkJY2FzZSBTQ1RQX0lGT1JXQVJEX0NVTV9UU046Ci0JCQlTQ1RQ
REJHKFNDVFBfREVCVUdfSU5QVVQzLCAiU0NUUF9GV0RfVFNOXG4iKTsKKwkJCVNDVFBEQkcoU0NU
UF9ERUJVR19JTlBVVDMsICIlc1xuIiwKKwkJCQljaC0+Y2h1bmtfdHlwZSA9PSBTQ1RQX0ZPUldB
UkRfQ1VNX1RTTiA/ICJGT1JXQVJEX1RTTiIgOiAiSV9GT1JXQVJEX1RTTiIpOwogCQkJaWYgKGNo
a19sZW5ndGggPCBzaXplb2Yoc3RydWN0IHNjdHBfZm9yd2FyZF90c25fY2h1bmspKSB7CiAJCQkJ
LyogSXRzIG5vdCBvdXJzICovCiAJCQkJKm9mZnNldCA9IGxlbmd0aDsKQEAgLTU1NDUsMTAgKzU1
NjIsMjIgQEAgc2N0cF9wcm9jZXNzX2NvbnRyb2woc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4s
IGludCAqb2Zmc2V0LCBpbnQgbGVuZ3RoLAogCQkJCWlmIChzdGNiLT5hc29jLnByc2N0cF9zdXBw
b3J0ZWQgPT0gMCkgewogCQkJCQlnb3RvIHVua25vd25fY2h1bms7CiAJCQkJfQorCQkJCWlmICgo
KHN0Y2ItPmFzb2MuaWRhdGFfc3VwcG9ydGVkID09IDEpICYmIChjaC0+Y2h1bmtfdHlwZSA9PSBT
Q1RQX0ZPUldBUkRfQ1VNX1RTTikpIHx8CisJCQkJICAgICgoc3RjYi0+YXNvYy5pZGF0YV9zdXBw
b3J0ZWQgPT0gMCkgJiYgKGNoLT5jaHVua190eXBlID09IFNDVFBfSUZPUldBUkRfQ1VNX1RTTikp
KSB7CisJCQkJCWlmIChjaC0+Y2h1bmtfdHlwZSA9PSBTQ1RQX0ZPUldBUkRfQ1VNX1RTTikgewor
CQkJCQkJU0NUUF9TTlBSSU5URihtc2csIHNpemVvZihtc2cpLCAiJXMiLCAiRk9SV0FSRC1UU04g
Y2h1bmsgcmVjZWl2ZWQgd2hlbiBJLUZPUldBUkQtVFNOIHdhcyBuZWdvdGlhdGVkIik7CisJCQkJ
CX0gZWxzZSB7CisJCQkJCQlTQ1RQX1NOUFJJTlRGKG1zZywgc2l6ZW9mKG1zZyksICIlcyIsICJJ
LUZPUldBUkQtVFNOIGNodW5rIHJlY2VpdmVkIHdoZW4gRk9SV0FSRC1UU04gd2FzIG5lZ290aWF0
ZWQiKTsKKwkJCQkJfQorCQkJCQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBfQ0FV
U0VfUFJPVE9DT0xfVklPTEFUSU9OLCBtc2cpOworCQkJCQlzY3RwX2Fib3J0X2FuX2Fzc29jaWF0
aW9uKGlucCwgc3RjYiwgb3BfZXJyLCBTQ1RQX1NPX05PVF9MT0NLRUQpOworCQkJCQkqb2Zmc2V0
ID0gbGVuZ3RoOworCQkJCQlyZXR1cm4gKE5VTEwpOworCQkJCX0KIAkJCQkqZndkX3Rzbl9zZWVu
ID0gMTsKIAkJCQlpZiAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfU09DS0VUX0dP
TkUpIHsKIAkJCQkJLyogV2UgYXJlIG5vdCBpbnRlcmVzdGVkIGFueW1vcmUgKi8KLSNpZiBkZWZp
bmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZp
bmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQkJc28gPSBTQ1RQ
X0lOUF9TTyhpbnApOwogCQkJCQlhdG9taWNfYWRkX2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIDEp
OwogCQkJCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CkBAIC01NTU4LDcgKzU1ODcsNyBAQCBzY3Rw
X3Byb2Nlc3NfY29udHJvbChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50ICpvZmZzZXQs
IGludCBsZW5ndGgsCiAjZW5kaWYKIAkJCQkJKHZvaWQpc2N0cF9mcmVlX2Fzc29jKGlucCwgc3Rj
YiwgU0NUUF9OT1JNQUxfUFJPQywKIAkJCQkJICAgICAgICAgICAgICAgICAgICAgIFNDVFBfRlJP
TV9TQ1RQX0lOUFVUICsgU0NUUF9MT0NfMzEpOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBk
ZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDEpOwog
I2VuZGlmCiAJCQkJCSpvZmZzZXQgPSBsZW5ndGg7CkBAIC01NTc5LDcgKzU2MDgsNyBAQCBzY3Rw
X3Byb2Nlc3NfY29udHJvbChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50ICpvZmZzZXQs
IGludCBsZW5ndGgsCiAJCQlicmVhazsKIAkJY2FzZSBTQ1RQX1NUUkVBTV9SRVNFVDoKIAkJCVND
VFBEQkcoU0NUUF9ERUJVR19JTlBVVDMsICJTQ1RQX1NUUkVBTV9SRVNFVFxuIik7Ci0JCQlpZiAo
KChzdGNiID09IE5VTEwpIHx8IChjaCA9PSBOVUxMKSB8fCAoY2hrX2xlbmd0aCA8IHNpemVvZihz
dHJ1Y3Qgc2N0cF9zdHJlYW1fcmVzZXRfdHNuX3JlcSkpKSkgeworCQkJaWYgKChzdGNiID09IE5V
TEwpIHx8IChjaGtfbGVuZ3RoIDwgc2l6ZW9mKHN0cnVjdCBzY3RwX3N0cmVhbV9yZXNldF90c25f
cmVxKSkpIHsKIAkJCQkvKiBJdHMgbm90IG91cnMgKi8KIAkJCQkqb2Zmc2V0ID0gbGVuZ3RoOwog
CQkJCXJldHVybiAoc3RjYik7CkBAIC01NjAyLDcgKzU2MzEsNyBAQCBzY3RwX3Byb2Nlc3NfY29u
dHJvbChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50ICpvZmZzZXQsIGludCBsZW5ndGgs
CiAJCQkJcmV0dXJuIChzdGNiKTsKIAkJCX0KIAotCQkJaWYgKChjaCAhPSBOVUxMKSAmJiAoc3Rj
YiAhPSBOVUxMKSAmJiAobmV0cCAhPSBOVUxMKSAmJiAoKm5ldHAgIT0gTlVMTCkpIHsKKwkJCWlm
ICgoc3RjYiAhPSBOVUxMKSAmJiAobmV0cCAhPSBOVUxMKSAmJiAoKm5ldHAgIT0gTlVMTCkpIHsK
IAkJCQlpZiAoc3RjYi0+YXNvYy5wa3Rkcm9wX3N1cHBvcnRlZCA9PSAwKSB7CiAJCQkJCWdvdG8g
dW5rbm93bl9jaHVuazsKIAkJCQl9CkBAIC01NjM4LDggKzU2NjcsNyBAQCBzY3RwX3Byb2Nlc3Nf
Y29udHJvbChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50ICpvZmZzZXQsIGludCBsZW5n
dGgsCiAJCQkJZ290byBuZXh0X2NodW5rOwogCQkJfQogCQkJZ290X2F1dGggPSAxOwotCQkJaWYg
KChjaCA9PSBOVUxMKSB8fCBzY3RwX2hhbmRsZV9hdXRoKHN0Y2IsIChzdHJ1Y3Qgc2N0cF9hdXRo
X2NodW5rICopY2gsCi0JCQkJCQkJICAgICBtLCAqb2Zmc2V0KSkgeworCQkJaWYgKHNjdHBfaGFu
ZGxlX2F1dGgoc3RjYiwgKHN0cnVjdCBzY3RwX2F1dGhfY2h1bmsgKiljaCwgbSwgKm9mZnNldCkp
IHsKIAkJCQkvKiBhdXRoIEhNQUMgZmFpbGVkIHNvIGR1bXAgdGhlIHBhY2tldCAqLwogCQkJCSpv
ZmZzZXQgPSBsZW5ndGg7CiAJCQkJcmV0dXJuIChzdGNiKTsKQEAgLTU2NTIsNyArNTY4MCwxMSBA
QCBzY3RwX3Byb2Nlc3NfY29udHJvbChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50ICpv
ZmZzZXQsIGludCBsZW5ndGgsCiAJCWRlZmF1bHQ6CiAJCXVua25vd25fY2h1bms6CiAJCQkvKiBp
dCdzIGFuIHVua25vd24gY2h1bmshICovCi0JCQlpZiAoKGNoLT5jaHVua190eXBlICYgMHg0MCkg
JiYgKHN0Y2IgIT0gTlVMTCkpIHsKKwkJCWlmICgoY2gtPmNodW5rX3R5cGUgJiAweDQwKSAmJgor
CQkJICAgIChzdGNiICE9IE5VTEwpICYmCisJCQkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpICE9
IFNDVFBfU1RBVEVfRU1QVFkpICYmCisJCQkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpICE9IFND
VFBfU1RBVEVfSU5VU0UpICYmCisJCQkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpICE9IFNDVFBf
U1RBVEVfQ09PS0lFX1dBSVQpKSB7CiAJCQkJc3RydWN0IHNjdHBfZ2VuX2Vycm9yX2NhdXNlICpj
YXVzZTsKIAkJCQlpbnQgbGVuOwogCkBAIC01NzE3LDcgKzU3NDksNyBAQCBzY3RwX2NvbW1vbl9p
bnB1dF9wcm9jZXNzaW5nKHN0cnVjdCBtYnVmICoqbW0sIGludCBpcGhsZW4sIGludCBvZmZzZXQs
IGludCBsZW5ndAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2N0cGhkciAq
c2gsIHN0cnVjdCBzY3RwX2NodW5raGRyICpjaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDhfdCBjb21wdXRlX2NyYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDhfdCBlY25fYml0cywKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQ4X3QgbWZsb3d0eXBlLCB1aW50MzJfdCBtZmxvd2lkLCB1aW50MTZfdCBm
aWJudW0sCiAjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdnJm
X2lkLCB1aW50MTZfdCBwb3J0KQpAQCAtNTczMSw2ICs1NzYzLDkgQEAgc2N0cF9jb21tb25faW5w
dXRfcHJvY2Vzc2luZyhzdHJ1Y3QgbWJ1ZiAqKm1tLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LCBp
bnQgbGVuZ3QKIAlzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wID0gTlVMTCwgKmlucF9kZWNyID0gTlVM
TDsKIAlzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IgPSBOVUxMOwogCXN0cnVjdCBzY3RwX25ldHMgKm5l
dCA9IE5VTEw7CisjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCXN0cnVjdCBzb2NrZXQgKnVw
Y2FsbF9zb2NrZXQgPSBOVUxMOworI2VuZGlmCiAKIAlTQ1RQX1NUQVRfSU5DUihzY3Rwc19yZWN2
ZGF0YWdyYW1zKTsKICNpZmRlZiBTQ1RQX0FVRElUSU5HX0VOQUJMRUQKQEAgLTU3NjYsMTEgKzU4
MDEsMTIgQEAgc2N0cF9jb21tb25faW5wdXRfcHJvY2Vzc2luZyhzdHJ1Y3QgbWJ1ZiAqKm1tLCBp
bnQgaXBobGVuLCBpbnQgb2Zmc2V0LCBpbnQgbGVuZ3QKIAkJCQluZXQtPnBvcnQgPSBwb3J0Owog
CQkJfQogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJaWYgKG5ldCAhPSBOVUxMKSB7
CiAJCQkJbmV0LT5mbG93dHlwZSA9IG1mbG93dHlwZTsKIAkJCQluZXQtPmZsb3dpZCA9IG1mbG93
aWQ7CiAJCQl9CisJCQlTQ1RQX1BST0JFNShyZWNlaXZlLCBOVUxMLCBzdGNiLCBtLCBzdGNiLCBz
aCk7CiAjZW5kaWYKIAkJCWlmICgoaW5wICE9IE5VTEwpICYmIChzdGNiICE9IE5VTEwpKSB7CiAJ
CQkJc2N0cF9zZW5kX3BhY2tldF9kcm9wcGVkKHN0Y2IsIG5ldCwgbSwgbGVuZ3RoLCBpcGhsZW4s
IDEpOwpAQCAtNTgwNywyMiArNTg0MywyNSBAQCBzY3RwX2NvbW1vbl9pbnB1dF9wcm9jZXNzaW5n
KHN0cnVjdCBtYnVmICoqbW0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsIGludCBsZW5ndAogCQlu
ZXQtPnBvcnQgPSBwb3J0OwogCX0KICNlbmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlpZiAo
bmV0ICE9IE5VTEwpIHsKIAkJbmV0LT5mbG93dHlwZSA9IG1mbG93dHlwZTsKIAkJbmV0LT5mbG93
aWQgPSBtZmxvd2lkOwogCX0KICNlbmRpZgogCWlmIChpbnAgPT0gTlVMTCkgeworI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCVNDVFBfUFJPQkU1
KHJlY2VpdmUsIE5VTEwsIHN0Y2IsIG0sIHN0Y2IsIHNoKTsKKyNlbmRpZgogCQlTQ1RQX1NUQVRf
SU5DUihzY3Rwc19ub3BvcnQpOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICgoKF9fRnJl
ZUJTRF92ZXJzaW9uIDwgOTAwMDAwKSAmJiAoX19GcmVlQlNEX3ZlcnNpb24gPj0gODA0MDAwKSkg
fHwgKF9fRnJlZUJTRF92ZXJzaW9uID4gOTAwMDAwKSkKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlpZiAoYmFkcG9ydF9iYW5kbGltKEJBTkRM
SU1fU0NUUF9PT1RCKSA8IDApIHsKIAkJCWdvdG8gb3V0OwogCQl9CiAjZW5kaWYKIAkJaWYgKGNo
LT5jaHVua190eXBlID09IFNDVFBfU0hVVERPV05fQUNLKSB7CiAJCQlzY3RwX3NlbmRfc2h1dGRv
d25fY29tcGxldGUyKHNyYywgZHN0LCBzaCwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1mbG93dHlwZSwgbWZsb3dpZCwgZmlibnVtLAogI2Vu
ZGlmCiAJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZyZl9pZCwgcG9ydCk7CkBAIC01
ODM5LDcgKzU4NzgsNyBAQCBzY3RwX2NvbW1vbl9pbnB1dF9wcm9jZXNzaW5nKHN0cnVjdCBtYnVm
ICoqbW0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsIGludCBsZW5ndAogCQkJCSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIk91dCBvZiB0aGUgYmx1ZSIpOwogCQkJCXNjdHBfc2VuZF9hYm9y
dChtLCBpcGhsZW4sIHNyYywgZHN0LAogCQkJCSAgICAgICAgICAgICAgICBzaCwgMCwgb3BfZXJy
LAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQkgICAgICAgICAgICAgICAgbWZsb3d0eXBlLCBt
Zmxvd2lkLCBmaWJudW0sCiAjZW5kaWYKIAkJCQkgICAgICAgICAgICAgICAgdnJmX2lkLCBwb3J0
KTsKQEAgLTU4NjgsMjUgKzU5MDcsNDEgQEAgc2N0cF9jb21tb25faW5wdXRfcHJvY2Vzc2luZyhz
dHJ1Y3QgbWJ1ZiAqKm1tLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LCBpbnQgbGVuZ3QKIAkJCSAq
LwogCQkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwogCQkJc3RjYiA9IE5VTEw7Ci0JCQlzbnByaW50
Zihtc2csIHNpemVvZihtc2cpLCAiT09UQiwgJXM6JWQgYXQgJXMiLCBfX0ZJTEVfXywgX19MSU5F
X18sIF9fZnVuY19fKTsKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQorCQkJU0NUUF9QUk9CRTUocmVjZWl2ZSwgTlVMTCwgc3RjYiwgbSwgc3RjYiwg
c2gpOworI2VuZGlmCisJCQlTQ1RQX1NOUFJJTlRGKG1zZywgc2l6ZW9mKG1zZyksICJPT1RCLCAl
czolZCBhdCAlcyIsIF9fRklMRV9fLCBfX0xJTkVfXywgX19mdW5jX18pOwogCQkJb3BfZXJyID0g
c2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfZGlhZ19pbmZvX2NvZGUp
LAogCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cpOwogCQkJc2N0cF9oYW5kbGVf
b290YihtLCBpcGhsZW4sIG9mZnNldCwgc3JjLCBkc3QsIHNoLCBpbnAsIG9wX2VyciwKLSNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiAJCQkgICAgICAgICAgICAgICAgIG1mbG93dHlwZSwgbWZsb3dpZCwg
aW5wLT5maWJudW0sCiAjZW5kaWYKIAkJCSAgICAgICAgICAgICAgICAgdnJmX2lkLCBwb3J0KTsK
IAkJCWdvdG8gb3V0OwogCQl9Ci0KIAl9CisjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCWlm
ICgoc3RjYiAhPSBOVUxMKSAmJgorCSAgICAhKHN0Y2ItPnNjdHBfZXAtPnNjdHBfZmxhZ3MgJiBT
Q1RQX1BDQl9GTEFHU19TT0NLRVRfR09ORSkgJiYKKwkgICAgKHN0Y2ItPnNjdHBfc29ja2V0ICE9
IE5VTEwpKSB7CisJCWlmIChzdGNiLT5zY3RwX3NvY2tldC0+c29faGVhZCAhPSBOVUxMKSB7CisJ
CQl1cGNhbGxfc29ja2V0ID0gc3RjYi0+c2N0cF9zb2NrZXQtPnNvX2hlYWQ7CisJCX0gZWxzZSB7
CisJCQl1cGNhbGxfc29ja2V0ID0gc3RjYi0+c2N0cF9zb2NrZXQ7CisJCX0KKwkJU09DS19MT0NL
KHVwY2FsbF9zb2NrZXQpOworCQlzb3JlZih1cGNhbGxfc29ja2V0KTsKKwkJU09DS19VTkxPQ0so
dXBjYWxsX3NvY2tldCk7CisJfQorI2VuZGlmCiAJaWYgKElTX1NDVFBfQ09OVFJPTChjaCkpIHsK
IAkJLyogcHJvY2VzcyB0aGUgY29udHJvbCBwb3J0aW9uIG9mIHRoZSBTQ1RQIHBhY2tldCAqLwog
CQkvKiBzYV9pZ25vcmUgTk9fTlVMTF9DSEsgKi8KIAkJc3RjYiA9IHNjdHBfcHJvY2Vzc19jb250
cm9sKG0sIGlwaGxlbiwgJm9mZnNldCwgbGVuZ3RoLAogCQkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3JjLCBkc3QsIHNoLCBjaCwKIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
cCwgc3RjYiwgJm5ldCwgJmZ3ZF90c25fc2VlbiwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQor
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQsIGZpYm51bSwKICNl
bmRpZgogCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnJmX2lkLCBwb3J0KTsKQEAgLTU5
MjcsMTYgKzU5ODIsMjIgQEAgc2N0cF9jb21tb25faW5wdXRfcHJvY2Vzc2luZyhzdHJ1Y3QgbWJ1
ZiAqKm1tLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LCBpbnQgbGVuZ3QKIAkJaWYgKChzdGNiICE9
IE5VTEwpICYmCiAJCSAgICBzY3RwX2F1dGhfaXNfcmVxdWlyZWRfY2h1bmsoU0NUUF9EQVRBLCBz
dGNiLT5hc29jLmxvY2FsX2F1dGhfY2h1bmtzKSkgewogCQkJLyogInNpbGVudGx5IiBpZ25vcmUg
Ki8KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQor
CQkJU0NUUF9QUk9CRTUocmVjZWl2ZSwgTlVMTCwgc3RjYiwgbSwgc3RjYiwgc2gpOworI2VuZGlm
CiAJCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19yZWN2YXV0aG1pc3NpbmcpOwogCQkJZ290byBvdXQ7
CiAJCX0KIAkJaWYgKHN0Y2IgPT0gTlVMTCkgewogCQkJLyogb3V0IG9mIHRoZSBibHVlIERBVEEg
Y2h1bmsgKi8KLQkJCXNucHJpbnRmKG1zZywgc2l6ZW9mKG1zZyksICJPT1RCLCAlczolZCBhdCAl
cyIsIF9fRklMRV9fLCBfX0xJTkVfXywgX19mdW5jX18pOworI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQlTQ1RQX1BST0JFNShyZWNlaXZlLCBO
VUxMLCBOVUxMLCBtLCBOVUxMLCBzaCk7CisjZW5kaWYKKwkJCVNDVFBfU05QUklOVEYobXNnLCBz
aXplb2YobXNnKSwgIk9PVEIsICVzOiVkIGF0ICVzIiwgX19GSUxFX18sIF9fTElORV9fLCBfX2Z1
bmNfXyk7CiAJCQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBfQkFTRV9TWVNDVEwo
c2N0cF9kaWFnX2luZm9fY29kZSksCiAJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1z
Zyk7CiAJCQlzY3RwX2hhbmRsZV9vb3RiKG0sIGlwaGxlbiwgb2Zmc2V0LCBzcmMsIGRzdCwgc2gs
IGlucCwgb3BfZXJyLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCSAgICAgICAgICAgICAgICAg
bWZsb3d0eXBlLCBtZmxvd2lkLCBmaWJudW0sCiAjZW5kaWYKIAkJCQkJIHZyZl9pZCwgcG9ydCk7
CkBAIC01OTQ0LDExICs2MDA1LDE3IEBAIHNjdHBfY29tbW9uX2lucHV0X3Byb2Nlc3Npbmcoc3Ry
dWN0IG1idWYgKiptbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwgaW50IGxlbmd0CiAJCX0KIAkJ
aWYgKHN0Y2ItPmFzb2MubXlfdnRhZyAhPSBudG9obChzaC0+dl90YWcpKSB7CiAJCQkvKiB2X3Rh
ZyBtaXNtYXRjaCEgKi8KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQorCQkJU0NUUF9QUk9CRTUocmVjZWl2ZSwgTlVMTCwgc3RjYiwgbSwgc3RjYiwg
c2gpOworI2VuZGlmCiAJCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19iYWR2dGFnKTsKIAkJCWdvdG8g
b3V0OwogCQl9CiAJfQogCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKKwlTQ1RQX1BST0JFNShyZWNlaXZlLCBOVUxMLCBzdGNiLCBtLCBzdGNiLCBz
aCk7CisjZW5kaWYKIAlpZiAoc3RjYiA9PSBOVUxMKSB7CiAJCS8qCiAJCSAqIG5vIHZhbGlkIFRD
QiBmb3IgdGhpcyBwYWNrZXQsIG9yIHdlIGZvdW5kIGl0J3MgYSBiYWQKQEAgLTU5NTcsNiArNjAy
NCwyMCBAQCBzY3RwX2NvbW1vbl9pbnB1dF9wcm9jZXNzaW5nKHN0cnVjdCBtYnVmICoqbW0sIGlu
dCBpcGhsZW4sIGludCBvZmZzZXQsIGludCBsZW5ndAogCQkgKi8KIAkJZ290byBvdXQ7CiAJfQor
I2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwlpZiAoKHVwY2FsbF9zb2NrZXQgPT0gTlVMTCkg
JiYKKwkgICAgIShzdGNiLT5zY3RwX2VwLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfU09D
S0VUX0dPTkUpICYmCisJICAgIChzdGNiLT5zY3RwX3NvY2tldCAhPSBOVUxMKSkgeworCQlpZiAo
c3RjYi0+c2N0cF9zb2NrZXQtPnNvX2hlYWQgIT0gTlVMTCkgeworCQkJdXBjYWxsX3NvY2tldCA9
IHN0Y2ItPnNjdHBfc29ja2V0LT5zb19oZWFkOworCQl9IGVsc2UgeworCQkJdXBjYWxsX3NvY2tl
dCA9IHN0Y2ItPnNjdHBfc29ja2V0OworCQl9CisJCVNPQ0tfTE9DSyh1cGNhbGxfc29ja2V0KTsK
KwkJc29yZWYodXBjYWxsX3NvY2tldCk7CisJCVNPQ0tfVU5MT0NLKHVwY2FsbF9zb2NrZXQpOwor
CX0KKyNlbmRpZgogCiAJLyoKIAkgKiBEQVRBIGNodW5rIHByb2Nlc3NpbmcKQEAgLTU5ODUsNyAr
NjA2Niw3IEBAIHNjdHBfY29tbW9uX2lucHV0X3Byb2Nlc3Npbmcoc3RydWN0IG1idWYgKiptbSwg
aW50IGlwaGxlbiwgaW50IG9mZnNldCwgaW50IGxlbmd0CiAJCSAqIG5vdCBnZXQgaGVyZSB1bmxl
c3Mgd2UgcmVhbGx5IGRpZCBoYXZlIGEgdGFnLCBzbyB3ZSBkb24ndAogCQkgKiBhYm9ydCBpZiB0
aGlzIGhhcHBlbnMsIGp1c3QgZHVtcCB0aGUgY2h1bmsgc2lsZW50bHkuCiAJCSAqLwotCQlzd2l0
Y2ggKFNDVFBfR0VUX1NUQVRFKCZzdGNiLT5hc29jKSkgeworCQlzd2l0Y2ggKFNDVFBfR0VUX1NU
QVRFKHN0Y2IpKSB7CiAJCWNhc2UgU0NUUF9TVEFURV9DT09LSUVfRUNIT0VEOgogCQkJLyoKIAkJ
CSAqIHdlIGNvbnNpZGVyIGRhdGEgd2l0aCB2YWxpZCB0YWdzIGluIHRoaXMgc3RhdGUKQEAgLTU5
OTgsMTEgKzYwNzksMTEgQEAgc2N0cF9jb21tb25faW5wdXRfcHJvY2Vzc2luZyhzdHJ1Y3QgbWJ1
ZiAqKm1tLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LCBpbnQgbGVuZ3QKIAkJCS8qCiAJCQkgKiBX
ZSBjb25zaWRlciBPT1RCIGFueSBkYXRhIHNlbnQgZHVyaW5nIGFzb2Mgc2V0dXAuCiAJCQkgKi8K
LQkJCXNucHJpbnRmKG1zZywgc2l6ZW9mKG1zZyksICJPT1RCLCAlczolZCBhdCAlcyIsIF9fRklM
RV9fLCBfX0xJTkVfXywgX19mdW5jX18pOworCQkJU0NUUF9TTlBSSU5URihtc2csIHNpemVvZiht
c2cpLCAiT09UQiwgJXM6JWQgYXQgJXMiLCBfX0ZJTEVfXywgX19MSU5FX18sIF9fZnVuY19fKTsK
IAkJCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2Rp
YWdfaW5mb19jb2RlKSwKIAkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnKTsKIAkJ
CXNjdHBfaGFuZGxlX29vdGIobSwgaXBobGVuLCBvZmZzZXQsIHNyYywgZHN0LCBzaCwgaW5wLCBv
cF9lcnIsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJICAgICAgICAgICAgICAgICBtZmxvd3R5
cGUsIG1mbG93aWQsIGlucC0+ZmlibnVtLAogI2VuZGlmCiAJCQkJCSB2cmZfaWQsIHBvcnQpOwpA
QCAtNjA4MCw5ICs2MTYxLDggQEAgdHJpZ2dlcl9zZW5kOgogCWlmICghVEFJTFFfRU1QVFkoJnN0
Y2ItPmFzb2MuYXNjb25mX3NlbmRfcXVldWUpIHx8CiAJICAgIGNudF9jdHJsX3JlYWR5IHx8CiAJ
ICAgIHN0Y2ItPmFzb2MudHJpZ2dlcl9yZXNldCB8fAotCSAgICAoKHVuX3NlbnQpICYmCi0JICAg
ICAoc3RjYi0+YXNvYy5wZWVyc19yd25kID4gMCB8fAotCSAgICAgIChzdGNiLT5hc29jLnBlZXJz
X3J3bmQgPD0gMCAmJiBzdGNiLT5hc29jLnRvdGFsX2ZsaWdodCA9PSAwKSkpKSB7CisJICAgICgo
dW5fc2VudCA+IDApICYmCisJICAgICAoc3RjYi0+YXNvYy5wZWVyc19yd25kID4gMCB8fCBzdGNi
LT5hc29jLnRvdGFsX2ZsaWdodCA9PSAwKSkpIHsKIAkJU0NUUERCRyhTQ1RQX0RFQlVHX0lOUFVU
MywgIkNhbGxpbmcgY2h1bmsgT1VUUFVUXG4iKTsKIAkJc2N0cF9jaHVua19vdXRwdXQoaW5wLCBz
dGNiLCBTQ1RQX09VVFBVVF9GUk9NX0NPTlRST0xfUFJPQywgU0NUUF9TT19OT1RfTE9DS0VEKTsK
IAkJU0NUUERCRyhTQ1RQX0RFQlVHX0lOUFVUMywgImNodW5rIE9VVFBVVCByZXR1cm5zXG4iKTsK
QEAgLTYwOTUsNiArNjE3NSwyMCBAQCB0cmlnZ2VyX3NlbmQ6CiAJaWYgKHN0Y2IgIT0gTlVMTCkg
ewogCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CiAJfQorI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKKwlpZiAodXBjYWxsX3NvY2tldCAhPSBOVUxMKSB7CisJCWlmICh1cGNhbGxfc29ja2V0LT5z
b191cGNhbGwgIT0gTlVMTCkgeworCQkJaWYgKHNvcmVhZGFibGUodXBjYWxsX3NvY2tldCkgfHwK
KwkJCSAgICBzb3dyaXRlYWJsZSh1cGNhbGxfc29ja2V0KSB8fAorCQkJICAgIHVwY2FsbF9zb2Nr
ZXQtPnNvX2Vycm9yKSB7CisJCQkJKCp1cGNhbGxfc29ja2V0LT5zb191cGNhbGwpKHVwY2FsbF9z
b2NrZXQsIHVwY2FsbF9zb2NrZXQtPnNvX3VwY2FsbGFyZywgTV9OT1dBSVQpOworCQkJfQorCQl9
CisJCUFDQ0VQVF9MT0NLKCk7CisJCVNPQ0tfTE9DSyh1cGNhbGxfc29ja2V0KTsKKwkJc29yZWxl
KHVwY2FsbF9zb2NrZXQpOworCX0KKyNlbmRpZgogCWlmIChpbnBfZGVjciAhPSBOVUxMKSB7CiAJ
CS8qIHJlZHVjZSByZWYtY291bnQgKi8KIAkJU0NUUF9JTlBfV0xPQ0soaW5wX2RlY3IpOwpAQCAt
NjEwNiwyMSArNjIwMCw4IEBAIHRyaWdnZXJfc2VuZDoKIAogI2lmZGVmIElORVQKICNpZiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQo
X19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQogdm9pZAogc2N0cF9pbnB1dF93aXRo
X3BvcnQoc3RydWN0IG1idWYgKmlfcGFrLCBpbnQgb2ZmLCB1aW50MTZfdCBwb3J0KQotI2VsaWYg
ZGVmaW5lZChfX1BhbmRhX18pCi12b2lkCi1zY3RwX2lucHV0KHBha2hhbmRsZV90eXBlIGlfcGFr
KQotI2Vsc2UKLXZvaWQKLSNpZiBfX1NURENfXwotc2N0cF9pbnB1dChzdHJ1Y3QgbWJ1ZiAqaV9w
YWssLi4uKQotI2Vsc2UKLXNjdHBfaW5wdXQoaV9wYWssIHZhX2FsaXN0KQotCXN0cnVjdCBtYnVm
ICppX3BhazsKLSNlbmRpZgotI2VuZGlmCiB7CiAJc3RydWN0IG1idWYgKm07CiAJaW50IGlwaGxl
bjsKQEAgLTYxMzIsMzAgKzYyMTMsMjEgQEAgc2N0cF9pbnB1dChpX3BhaywgdmFfYWxpc3QpCiAJ
c3RydWN0IHNjdHBfY2h1bmtoZHIgKmNoOwogCWludCBsZW5ndGgsIG9mZnNldDsKIAl1aW50OF90
IGNvbXB1dGVfY3JjOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAl1aW50MzJfdCBtZmxvd2lkOwog
CXVpbnQ4X3QgbWZsb3d0eXBlOwogCXVpbnQxNl90IGZpYm51bTsKICNlbmRpZgotI2lmICEoZGVm
aW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19XaW5k
b3dzX18pKQorI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAl1aW50MTZfdCBwb3J0ID0gMDsK
ICNlbmRpZgogCi0jaWYgZGVmaW5lZChfX1BhbmRhX18pCi0JLyogVGhpcyBpcyBFdmlsLCBidXQg
aXRzIHRoZSBvbmx5IHdheSB0byBtYWtlIHBhbmRhIHdvcmsgcmlnaHQuICovCi0JaXBobGVuID0g
c2l6ZW9mKHN0cnVjdCBpcCk7Ci0jZWxzZQogCWlwaGxlbiA9IG9mZjsKLSNlbmRpZgogCWlmIChT
Q1RQX0dFVF9QS1RfVlJGSUQoaV9wYWssIHZyZl9pZCkpIHsKIAkJU0NUUF9SRUxFQVNFX1BLVChp
X3Bhayk7CiAJCXJldHVybjsKIAl9CiAJbSA9IFNDVFBfSEVBREVSX1RPX0NIQUlOKGlfcGFrKTsK
LSNpZmRlZiBfX1BhbmRhX18KLQlTQ1RQX0RFVEFDSF9IRUFERVJfRlJPTV9DSEFJTihpX3Bhayk7
Ci0JKHZvaWQpU0NUUF9SRUxFQVNFX0hFQURFUihpX3Bhayk7Ci0jZW5kaWYKICNpZmRlZiBTQ1RQ
X01CVUZfTE9HR0lORwogCS8qIExvZyBpbiBhbnkgaW5wdXQgbWJ1ZnMgKi8KIAlpZiAoU0NUUF9C
QVNFX1NZU0NUTChzY3RwX2xvZ2dpbmdfbGV2ZWwpICYgU0NUUF9NQlVGX0xPR0dJTkdfRU5BQkxF
KSB7CkBAIC02MTY3LDI4ICs2MjM5LDE0IEBAIHNjdHBfaW5wdXQoaV9wYWssIHZhX2FsaXN0KQog
CQlzY3RwX3BhY2tldF9sb2cobSk7CiAJfQogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykKLSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDEwMDAwNDkKKyNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCVNDVFBEQkcoU0NUUF9ERUJVR19DUkNP
RkZMT0FELAogCSAgICAgICAgInNjdHBfaW5wdXQoKTogUGFja2V0IG9mIGxlbmd0aCAlZCByZWNl
aXZlZCBvbiAlcyB3aXRoIGNzdW1fZmxhZ3MgMHglYi5cbiIsCiAJICAgICAgICBtLT5tX3BrdGhk
ci5sZW4sCiAJICAgICAgICBpZl9uYW1lKG0tPm1fcGt0aGRyLnJjdmlmKSwKIAkgICAgICAgIChp
bnQpbS0+bV9wa3RoZHIuY3N1bV9mbGFncywgQ1NVTV9CSVRTKTsKLSNlbGlmIF9fRnJlZUJTRF92
ZXJzaW9uID49IDgwMDAwMAotCVNDVFBEQkcoU0NUUF9ERUJVR19DUkNPRkZMT0FELAotCSAgICAg
ICAgInNjdHBfaW5wdXQoKTogUGFja2V0IG9mIGxlbmd0aCAlZCByZWNlaXZlZCBvbiAlcyB3aXRo
IGNzdW1fZmxhZ3MgMHgleC5cbiIsCi0JICAgICAgICBtLT5tX3BrdGhkci5sZW4sCi0JICAgICAg
ICBpZl9uYW1lKG0tPm1fcGt0aGRyLnJjdmlmKSwKLQkgICAgICAgIG0tPm1fcGt0aGRyLmNzdW1f
ZmxhZ3MpOwotI2Vsc2UKLQlTQ1RQREJHKFNDVFBfREVCVUdfQ1JDT0ZGTE9BRCwKLQkgICAgICAg
ICJzY3RwX2lucHV0KCk6IFBhY2tldCBvZiBsZW5ndGggJWQgcmVjZWl2ZWQgb24gJXMgd2l0aCBj
c3VtX2ZsYWdzIDB4JXguXG4iLAotCSAgICAgICAgbS0+bV9wa3RoZHIubGVuLAotCSAgICAgICAg
bS0+bV9wa3RoZHIucmN2aWYtPmlmX3huYW1lLAotCSAgICAgICAgbS0+bV9wa3RoZHIuY3N1bV9m
bGFncyk7Ci0jZW5kaWYKICNlbmRpZgotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmlu
ZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCVNDVFBEQkcoU0NUUF9E
RUJVR19DUkNPRkZMT0FELAogCSAgICAgICAgInNjdHBfaW5wdXQoKTogUGFja2V0IG9mIGxlbmd0
aCAlZCByZWNlaXZlZCBvbiAlcyVkIHdpdGggY3N1bV9mbGFncyAweCV4LlxuIiwKIAkgICAgICAg
IG0tPm1fcGt0aGRyLmxlbiwKQEAgLTYxOTYsMTQgKzYyNTQsMTQgQEAgc2N0cF9pbnB1dChpX3Bh
aywgdmFfYWxpc3QpCiAJICAgICAgICBtLT5tX3BrdGhkci5yY3ZpZi0+aWZfdW5pdCwKIAkgICAg
ICAgIG0tPm1fcGt0aGRyLmNzdW1fZmxhZ3MpOwogI2VuZGlmCi0jaWYgZGVmaW5lZChfX1dpbmRv
d3NfXykKKyNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlT
Q1RQREJHKFNDVFBfREVCVUdfQ1JDT0ZGTE9BRCwKIAkgICAgICAgICJzY3RwX2lucHV0KCk6IFBh
Y2tldCBvZiBsZW5ndGggJWQgcmVjZWl2ZWQgb24gJXMgd2l0aCBjc3VtX2ZsYWdzIDB4JXguXG4i
LAogCSAgICAgICAgbS0+bV9wa3RoZHIubGVuLAogCSAgICAgICAgbS0+bV9wa3RoZHIucmN2aWYt
PmlmX3huYW1lLAogCSAgICAgICAgbS0+bV9wa3RoZHIuY3N1bV9mbGFncyk7CiAjZW5kaWYKLSNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAJbWZsb3dpZCA9IG0tPm1fcGt0aGRyLmZsb3dpZDsKIAltZmxv
d3R5cGUgPSBNX0hBU0hUWVBFX0dFVChtKTsKIAlmaWJudW0gPSBNX0dFVEZJQihtKTsKQEAgLTYy
MzYsMjYgKzYyOTQsMjIgQEAgc2N0cF9pbnB1dChpX3BhaywgdmFfYWxpc3QpCiAjZW5kaWYKIAlk
c3Quc2luX3BvcnQgPSBzaC0+ZGVzdF9wb3J0OwogCWRzdC5zaW5fYWRkciA9IGlwLT5pcF9kc3Q7
Ci0jaWYgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKIAlOVE9IUyhpcC0+aXBfbGVuKTsKICNlbmRpZgotI2lmIGRlZmlu
ZWQoX19Vc2Vyc3BhY2Vfb3NfTGludXgpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93
cykKKyNpZiBkZWZpbmVkKF9fbGludXhfXykgfHwgKGRlZmluZWQoX1dJTjMyKSAmJiBkZWZpbmVk
KF9fVXNlcnNwYWNlX18pKQogCWlwLT5pcF9sZW4gPSBudG9ocyhpcC0+aXBfbGVuKTsKICNlbmRp
ZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCi0jaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0gMTAw
MDAwMAotCWxlbmd0aCA9IG50b2hzKGlwLT5pcF9sZW4pOworI2lmIGRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKKyNpZiBkZWZpbmVkKF9fbGludXhfXykgfHwgZGVmaW5lZChfV0lOMzIpCisJbGVuZ3Ro
ID0gaXAtPmlwX2xlbjsKICNlbHNlCiAJbGVuZ3RoID0gaXAtPmlwX2xlbiArIGlwaGxlbjsKICNl
bmRpZgorI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKwlsZW5ndGggPSBudG9ocyhpcC0+aXBf
bGVuKTsKICNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQogCWxlbmd0aCA9IGlwLT5pcF9sZW4gKyBp
cGhsZW47Ci0jZWxpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi0jaWYgZGVmaW5lZChfX1VzZXJz
cGFjZV9vc19MaW51eCkgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQotCWxlbmd0
aCA9IGlwLT5pcF9sZW47Ci0jZWxzZQotCWxlbmd0aCA9IGlwLT5pcF9sZW4gKyBpcGhsZW47Ci0j
ZW5kaWYKICNlbHNlCiAJbGVuZ3RoID0gaXAtPmlwX2xlbjsKICNlbmRpZgpAQCAtNjI3NCw3ICs2
MzI4LDcgQEAgc2N0cF9pbnB1dChpX3BhaywgdmFfYWxpc3QpCiAJCWdvdG8gb3V0OwogCX0KIAll
Y25fYml0cyA9IGlwLT5pcF90b3M7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVl
QlNEX3ZlcnNpb24gPj0gODAwMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKIAlpZiAobS0+bV9wa3RoZHIuY3N1bV9mbGFncyAmIENTVU1fU0NU
UF9WQUxJRCkgewogCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19yZWN2aHdjcmMpOwogCQljb21wdXRl
X2NyYyA9IDA7CkBAIC02Mjk2LDcgKzYzNTAsNyBAQCBzY3RwX2lucHV0KGlfcGFrLCB2YV9hbGlz
dCkKIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoLCBjaCwKIAkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbXB1dGVfY3JjLAogCSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZWNuX2JpdHMsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWZsb3d0eXBlLCBtZmxvd2lkLCBmaWJudW0sCiAjZW5kaWYKIAkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZyZl9pZCwgcG9ydCk7CkBAIC02MzA3LDExICs2MzYxLDEzIEBA
IHNjdHBfaW5wdXQoaV9wYWssIHZhX2FsaXN0KQogCXJldHVybjsKIH0KIAotI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmIGRlZmluZWQoU0NUUF9NQ09SRV9JTlBVVCkgJiYgZGVmaW5lZChTTVAp
CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNp
ZiBkZWZpbmVkKFNDVFBfTUNPUkVfSU5QVVQpICYmIGRlZmluZWQoU01QKQogZXh0ZXJuIGludCAq
c2N0cF9jcHVhcnJ5OwogI2VuZGlmCisjZW5kaWYKIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
ICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDExMDAwMjAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogaW50CiBzY3RwX2lucHV0KHN0cnVjdCBtYnVm
ICoqbXAsIGludCAqb2ZmcCwgaW50IHByb3RvIFNDVFBfVU5VU0VEKQogewpAQCAtNjMyNSw3ICs2
MzgxLDggQEAgdm9pZAogc2N0cF9pbnB1dChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IG9mZikKIHsKICNl
bmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIGRlZmluZWQoU0NUUF9NQ09SRV9JTlBV
VCkgJiYgZGVmaW5lZChTTVApCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKKyNpZiBkZWZpbmVkKFNDVFBfTUNPUkVfSU5QVVQpICYmIGRlZmluZWQo
U01QKQogCWlmIChtcF9uY3B1cyA+IDEpIHsKIAkJc3RydWN0IGlwICppcDsKIAkJc3RydWN0IHNj
dHBoZHIgKnNoOwpAQCAtNjM0MywxMSArNjQwMCw3IEBAIHNjdHBfaW5wdXQoc3RydWN0IG1idWYg
Km0sIGludCBvZmYpCiAJCQlpZiAoU0NUUF9CVUZfTEVOKG0pIDwgb2Zmc2V0KSB7CiAJCQkJaWYg
KChtID0gbV9wdWxsdXAobSwgb2Zmc2V0KSkgPT0gTlVMTCkgewogCQkJCQlTQ1RQX1NUQVRfSU5D
UihzY3Rwc19oZHJvcHMpOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92
ZXJzaW9uID49IDExMDAwMjAKIAkJCQkJcmV0dXJuIChJUFBST1RPX0RPTkUpOwotI2Vsc2UKLQkJ
CQkJcmV0dXJuOwotI2VuZGlmCiAJCQkJfQogCQkJfQogCQkJaXAgPSBtdG9kKG0sIHN0cnVjdCBp
cCAqKTsKQEAgLTYzNTksMTUgKzY0MTIsMTIgQEAgc2N0cF9pbnB1dChzdHJ1Y3QgbWJ1ZiAqbSwg
aW50IG9mZikKIAkJfQogCQljcHVfdG9fdXNlID0gc2N0cF9jcHVhcnJ5W2Zsb3dpZCAlIG1wX25j
cHVzXTsKIAkJc2N0cF9xdWV1ZV90b19tY29yZShtLCBvZmYsIGNwdV90b191c2UpOwotI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDExMDAwMjAKIAkJcmV0
dXJuIChJUFBST1RPX0RPTkUpOwotI2Vsc2UKLQkJcmV0dXJuOwotI2VuZGlmCiAJfQorI2VuZGlm
CiAjZW5kaWYKIAlzY3RwX2lucHV0X3dpdGhfcG9ydChtLCBvZmYsIDApOwotI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDExMDAwMjAKKyNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCXJldHVybiAoSVBQUk9U
T19ET05FKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRp
bmV0L3NjdHBfaW5wdXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2lucHV0
LmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCAyZDAxYmViMDhkZWQ5MDhl
ZTgwYzAyZjRhZjU5ZmQyOGMwNTUwYThlLi41NWExNzRiYWVmYWZhOWRiNDJhNTg1YmVlNDNjN2Uw
NjBhYjA3YTk1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2lucHV0LmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3Jz
Y3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfaW5wdXQuaApAQCAtMzIsNyAr
MzIsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZmRl
ZiBfX0ZyZWVCU0RfXworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+CiBfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhl
YWQvc3lzL25ldGluZXQvc2N0cF9pbnB1dC5oIDMyNjY3MiAyMDE3LTEyLTA3IDIyOjE5OjA4WiB0
dWV4ZW4gJCIpOwogI2VuZGlmCkBAIC00Nyw3ICs0Nyw3IEBAIHNjdHBfY29tbW9uX2lucHV0X3By
b2Nlc3Npbmcoc3RydWN0IG1idWYgKiosIGludCwgaW50LCBpbnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdCBzY3RwaGRyICosIHN0cnVjdCBzY3RwX2NodW5raGRyICosCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQ4X3QsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1aW50OF90LCB1aW50MzJfdCwgdWludDE2X3QsCiAjZW5kaWYKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QsIHVpbnQxNl90KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2xvY2tfdXNlcnNwYWNlLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0
cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9sb2NrX3VzZXJzcGFjZS5oCm9sZCBtb2RlIDEw
MDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggN2I4YjBjYmRkZDIyZmViNmY1MzU2MTI1OWE4ZDJh
OTJjMDBiZDUwZC4uMGFlZDM0NzcwYWE4MmJlNDU2YTM2ODQ1OGMxZmIzNzBhZTMyMmRhOQotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAv
dXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9sb2NrX3VzZXJzcGFjZS5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2xvY2tfdXNlcnNwYWNlLmgKQEAgLTMz
LDcgKzMzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0j
aWZkZWYgX19GcmVlQlNEX18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgogX19GQlNESUQoIiRGcmVlQlNE
JCIpOwogI2VuZGlmCkBAIC02OCw3ICs2OCw3IEBAIF9fRkJTRElEKCIkRnJlZUJTRCQiKTsKICNk
ZWZpbmUgU0NUUF9XUV9BRERSX0RFU1RST1koKQogI2RlZmluZSBTQ1RQX1dRX0FERFJfTE9DSygp
CiAjZGVmaW5lIFNDVFBfV1FfQUREUl9VTkxPQ0soKQotCisjZGVmaW5lIFNDVFBfV1FfQUREUl9M
T0NLX0FTU0VSVCgpCiAKICNkZWZpbmUgU0NUUF9JUElfQUREUl9JTklUKCkKICNkZWZpbmUgU0NU
UF9JUElfQUREUl9ERVNUUk9ZKCkKQEAgLTc2LDIwICs3NiwxOSBAQCBfX0ZCU0RJRCgiJEZyZWVC
U0QkIik7CiAjZGVmaW5lIFNDVFBfSVBJX0FERFJfV0xPQ0soKQogI2RlZmluZSBTQ1RQX0lQSV9B
RERSX1JVTkxPQ0soKQogI2RlZmluZSBTQ1RQX0lQSV9BRERSX1dVTkxPQ0soKQorI2RlZmluZSBT
Q1RQX0lQSV9BRERSX0xPQ0tfQVNTRVJUKCkKKyNkZWZpbmUgU0NUUF9JUElfQUREUl9XTE9DS19B
U1NFUlQoKQogCiAjZGVmaW5lIFNDVFBfSVBJX0lURVJBVE9SX1dRX0lOSVQoKQogI2RlZmluZSBT
Q1RQX0lQSV9JVEVSQVRPUl9XUV9ERVNUUk9ZKCkKICNkZWZpbmUgU0NUUF9JUElfSVRFUkFUT1Jf
V1FfTE9DSygpCiAjZGVmaW5lIFNDVFBfSVBJX0lURVJBVE9SX1dRX1VOTE9DSygpCiAKLQogI2Rl
ZmluZSBTQ1RQX0lQX1BLVExPR19JTklUKCkKICNkZWZpbmUgU0NUUF9JUF9QS1RMT0dfTE9DSygp
CiAjZGVmaW5lIFNDVFBfSVBfUEtUTE9HX1VOTE9DSygpCiAjZGVmaW5lIFNDVFBfSVBfUEtUTE9H
X0RFU1RST1koKQogCi0KLQogI2RlZmluZSBTQ1RQX0lOUF9SRUFEX0lOSVQoX2lucCkKICNkZWZp
bmUgU0NUUF9JTlBfUkVBRF9ERVNUUk9ZKF9pbnApCiAjZGVmaW5lIFNDVFBfSU5QX1JFQURfTE9D
SyhfaW5wKQpAQCAtMTAwLDkgKzk5LDEwIEBAIF9fRkJTRElEKCIkRnJlZUJTRCQiKTsKICNkZWZp
bmUgU0NUUF9JTlBfTE9DS19ERVNUUk9ZKF9pbnApCiAjZGVmaW5lIFNDVFBfQVNPQ19DUkVBVEVf
TE9DS19ERVNUUk9ZKF9pbnApCiAKLQogI2RlZmluZSBTQ1RQX0lOUF9STE9DSyhfaW5wKQogI2Rl
ZmluZSBTQ1RQX0lOUF9XTE9DSyhfaW5wKQorI2RlZmluZSBTQ1RQX0lOUF9STE9DS19BU1NFUlQo
X2lucCkKKyNkZWZpbmUgU0NUUF9JTlBfV0xPQ0tfQVNTRVJUKF9pbnApCiAKICNkZWZpbmUgU0NU
UF9JTlBfTE9DS19DT05URU5ERUQoX2lucCkgKDApIC8qIERvbid0IGtub3cgaWYgdGhpcyBpcyBw
b3NzaWJsZSAqLwogCkBAIC0yMTQsMTQgKzIxNCw2IEBAIF9fRkJTRElEKCIkRnJlZUJTRCQiKTsK
IAkgICAgICAgIH0gd2hpbGUgKDApCiAKIAotLyogbm90IHN1cmUgaWYgX19Vc2Vyc3BhY2VfXyBu
ZWVkcyB0aGVzZSAoYnV0IGNvcGllZCBub25ldGhlbGVzcy4uLikgKi8KLSNpZiBkZWZpbmVkKFND
VFBfU09fTE9DS19URVNUSU5HKQotI2RlZmluZSBTQ1RQX0lOUF9TTyhzY3RwaW5wKQkoc2N0cGlu
cCktPmlwX2lucC5pbnAuaW5wX3NvY2tldAotI2RlZmluZSBTQ1RQX1NPQ0tFVF9MT0NLKHNvLCBy
ZWZjbnQpCi0jZGVmaW5lIFNDVFBfU09DS0VUX1VOTE9DSyhzbywgcmVmY250KQotI2VuZGlmCi0K
LQogLyogdGhlc2Ugd2VyZSBpbiBzY3RwX2xvY2tfZW1wdHkuaCBidXQgYXJlbid0IGluIHNjdHBf
bG9ja19ic2QuaCAuLi4gKi8KICNpZiAwCiAjZGVmaW5lIFNDVFBfSVBJX0FERFJfTE9DSygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9vcy5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBs
aWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfb3MuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUg
MTAwNzU1CmluZGV4IGIzNzQ2ZGQ5NDZmMDYwNTM2N2Y0NmE5MzE1OTE0Y2IxNDYxYmQ3N2IuLmUw
MWI5NTc3N2EzYzViOTVkYjU0MWI4NzYyZTQzZTVjNzk4ZDM4YTIKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNy
c2N0cGxpYi9uZXRpbmV0L3NjdHBfb3MuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGlu
ZXQvc2N0cF9vcy5oCkBAIC0zMiw5ICszMiw5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotI2lmZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4K
LV9fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX29zLmggMjM1ODI4IDIw
MTItMDUtMjMgMTE6MjY6MjhaIHR1ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQv
c3lzL25ldGluZXQvc2N0cF9vcy5oIDM2MTg3MiAyMDIwLTA2LTA2IDE4OjIwOjA5WiB0dWV4ZW4g
JCIpOwogI2VuZGlmCiAKICNpZm5kZWYgX05FVElORVRfU0NUUF9PU19IXwpAQCAtNjQsNyArNjQs
NyBAQCBfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9vcy5oIDIzNTgy
OCAyMDEyLTA1LTIzIDExOjI2OjI4WiB0dWV4ZQogICogU0NUUF9aT05FX0RFU1RST1koem9uZSkK
ICAqLwogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9vc19i
c2QuaD4KICNlbHNlCiAjZGVmaW5lIE1PRFVMRV9HTE9CQUwoX0IpIChfQikKQEAgLTc0LDE1ICs3
NCwxMSBAQCBfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9vcy5oIDIz
NTgyOCAyMDEyLTA1LTIzIDExOjI2OjI4WiB0dWV4ZQogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9v
c191c2Vyc3BhY2UuaD4KICNlbmRpZgogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVm
aW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8bmV0
aW5ldC9zY3RwX29zX21hY29zeC5oPgogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKF9fUGFuZGFfXykK
LSNpbmNsdWRlIDxpcC9zY3RwL3NjdHBfb3NfaW94Lmg+Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQo
X19XaW5kb3dzX18pCisjaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX29zX3dpbmRvd3MuaD4KICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3Vz
cnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9vc191c2Vyc3BhY2UuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX29zX3VzZXJzcGFjZS5oCm9sZCBtb2Rl
IDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggODYxMzMwMWFiMDhlYWY2ZTE5ZTM4MjgzMTVl
YzBkODJhMjRjZjdkOC4uM2E5NDA3YTgyMmJlMjkwZDc3NWJlMmRlMTI2NmI4MTAyZjRhZDUwMwot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9vc191c2Vyc3BhY2UuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAv
dXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9vc191c2Vyc3BhY2UuaApAQCAtNDMs
MTIgKzQzLDEyIEBACiAKICNpbmNsdWRlIDxlcnJuby5oPgogCi0jaWYgZGVmaW5lZChfX1VzZXJz
cGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogI2luY2x1ZGUgPHdpbnNvY2sy
Lmg+CiAjaW5jbHVkZSA8d3MydGNwaXAuaD4KICNpbmNsdWRlIDxpcGhscGFwaS5oPgotI2luY2x1
ZGUgPE1zd3NvY2suaD4KLSNpbmNsdWRlIDxXaW5kb3dzLmg+CisjaW5jbHVkZSA8bXN3c29jay5o
PgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlICJ1c2VyX2Vudmlyb25tZW50LmgiCiB0
eXBlZGVmIENSSVRJQ0FMX1NFQ1RJT04gdXNlcmxhbmRfbXV0ZXhfdDsKICNpZiBXSU5WRVIgPCAw
eDA2MDAKQEAgLTgwLDMzICs4MCwzMCBAQCB0eXBlZGVmIEhBTkRMRSB1c2VybGFuZF90aHJlYWRf
dDsKICNkZWZpbmUgSVBWRVJTSU9OICA0CiAjZGVmaW5lIE1BWFRUTCAgICAgMjU1CiAvKiBWUzIw
MTAgY29tZXMgd2l0aCBzdGRpbnQuaCAqLwotI2lmIF9NU0NfVkVSID49IDE2MDAKKyNpZiAhZGVm
aW5lZChfTVNDX1ZFUikgfHwgKF9NU0NfVkVSID49IDE2MDApCiAjaW5jbHVkZSA8c3RkaW50Lmg+
CiAjZWxzZQotI2RlZmluZSB1aW50NjRfdCAgIHVuc2lnbmVkIF9faW50NjQKLSNkZWZpbmUgdWlu
dDMyX3QgICB1bnNpZ25lZCBfX2ludDMyCi0jZGVmaW5lIGludDMyX3QgICAgX19pbnQzMgotI2Rl
ZmluZSB1aW50MTZfdCAgIHVuc2lnbmVkIF9faW50MTYKLSNkZWZpbmUgaW50MTZfdCAgICBfX2lu
dDE2Ci0jZGVmaW5lIHVpbnQ4X3QgICAgdW5zaWduZWQgX19pbnQ4Ci0jZGVmaW5lIGludDhfdCAg
ICAgX19pbnQ4Cit0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgdWludDY0X3Q7Cit0eXBlZGVmIHVu
c2lnbmVkIF9faW50MzIgdWludDMyX3Q7Cit0eXBlZGVmIF9faW50MzIgICAgICAgICAgaW50MzJf
dDsKK3R5cGVkZWYgdW5zaWduZWQgX19pbnQxNiB1aW50MTZfdDsKK3R5cGVkZWYgX19pbnQxNiAg
ICAgICAgICBpbnQxNl90OwordHlwZWRlZiB1bnNpZ25lZCBfX2ludDggIHVpbnQ4X3Q7Cit0eXBl
ZGVmIF9faW50OCAgICAgICAgICAgaW50OF90OwogI2VuZGlmCiAjaWZuZGVmIF9TSVpFX1RfREVG
SU5FRAotI2RlZmluZSBzaXplX3QgICAgIF9faW50MzIKLSNlbmRpZgotI2RlZmluZSB1X2xvbmcg
ICAgIHVuc2lnbmVkIF9faW50NjQKLSNkZWZpbmUgdV9pbnQgICAgICB1bnNpZ25lZCBfX2ludDMy
Ci0jZGVmaW5lIHVfaW50MzJfdCAgdW5zaWduZWQgX19pbnQzMgotI2RlZmluZSB1X2ludDE2X3Qg
IHVuc2lnbmVkIF9faW50MTYKLSNkZWZpbmUgdV9pbnQ4X3QgICB1bnNpZ25lZCBfX2ludDgKLSNk
ZWZpbmUgdV9jaGFyICAgICB1bnNpZ25lZCBjaGFyCi0jZGVmaW5lIG5fc2hvcnQgICAgdW5zaWdu
ZWQgX19pbnQxNgotI2RlZmluZSB1X3Nob3J0ICAgIHVuc2lnbmVkIF9faW50MTYKLSNkZWZpbmUg
bl90aW1lICAgICB1bnNpZ25lZCBfX2ludDMyCi0jZGVmaW5lIHNhX2ZhbWlseV90IHVuc2lnbmVk
IF9faW50OAotI2RlZmluZSBzc2l6ZV90ICAgIF9faW50NjQKKyN0eXBlZGVmIF9faW50MzIgICAg
ICAgICBzaXplX3Q7CisjZW5kaWYKK3R5cGVkZWYgdW5zaWduZWQgX19pbnQzMiB1X2ludDsKK3R5
cGVkZWYgdW5zaWduZWQgY2hhciAgICB1X2NoYXI7Cit0eXBlZGVmIHVuc2lnbmVkIF9faW50MTYg
dV9zaG9ydDsKK3R5cGVkZWYgdW5zaWduZWQgX19pbnQ4ICBzYV9mYW1pbHlfdDsKKyNpZm5kZWYg
X1NTSVpFX1RfREVGSU5FRAordHlwZWRlZiBfX2ludDY0ICAgICAgICAgIHNzaXplX3Q7CisjZW5k
aWYKKyNpZiAhZGVmaW5lZChfX01JTkdXMzJfXykKICNkZWZpbmUgX19mdW5jX18JX19GVU5DVElP
Tl9fCi0KKyNlbmRpZgogI2lmbmRlZiBFV09VTERCTE9DSwogI2RlZmluZSBFV09VTERCTE9DSyAg
ICAgICAgICAgICBXU0FFV09VTERCTE9DSwogI2VuZGlmCkBAIC0yMjAsOSArMjE3LDE5IEBAIHR5
cGVkZWYgY2hhciogY2FkZHJfdDsKIAogI2RlZmluZSBiemVybyhidWYsIGxlbikgbWVtc2V0KGJ1
ZiwgMCwgbGVuKQogI2RlZmluZSBiY29weShzcmNLZXksIGRzdEtleSwgbGVuKSBtZW1jcHkoZHN0
S2V5LCBzcmNLZXksIGxlbikKLSNpZiBfTVNDX1ZFUiA8IDE5MDAKLSNkZWZpbmUgc25wcmludGYo
ZGF0YSwgc2l6ZSwgZm9ybWF0LCAuLi4pIF9zbnByaW50Zl9zKGRhdGEsIHNpemUsIF9UUlVOQ0FU
RSwgZm9ybWF0LCBfX1ZBX0FSR1NfXykKKworI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVND
X1ZFUiA8IDE5MDApICYmICFkZWZpbmVkKF9fTUlOR1czMl9fKQorI2RlZmluZSBTQ1RQX1NOUFJJ
TlRGKGRhdGEsIHNpemUsIGZvcm1hdCwgLi4uKSAJCQkJCVwKKwlpZiAoX3NucHJpbnRmX3MoZGF0
YSwgc2l6ZSwgX1RSVU5DQVRFLCBmb3JtYXQsIF9fVkFfQVJHU19fKSA8IDApIHsJXAorCQlkYXRh
WzBdID0gJ1wwJzsJCQkJCQkJXAorCX0KKyNlbHNlCisjZGVmaW5lIFNDVFBfU05QUklOVEYoZGF0
YSwgLi4uKQkJCQkJCVwKKwlpZiAoc25wcmludGYoZGF0YSwgX19WQV9BUkdTX18pIDwgMCApIHsJ
CQkJCVwKKwkJZGF0YVswXSA9ICdcMCc7CQkJCQkJCVwKKwl9CiAjZW5kaWYKKwogI2RlZmluZSBp
bmxpbmUgX19pbmxpbmUKICNkZWZpbmUgX19pbmxpbmVfXyBfX2lubGluZQogI2RlZmluZQlNU0df
RU9SCQkweDgJCS8qIGRhdGEgY29tcGxldGVzIHJlY29yZCAqLwpAQCAtMjc2LDcgKzI4Myw3IEBA
IHR5cGVkZWYgY2hhciogY2FkZHJfdDsKIAogI2Vsc2UgLyogIWRlZmluZWQoVXNlcnNwYWNlX29z
X1dpbmRvd3MpICovCiAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotI2lmIGRlZmluZWQoX19Vc2Vy
c3BhY2Vfb3NfRHJhZ29uRmx5KSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0ZyZWVCU0QpIHx8
IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfTGludXgpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3Nf
TmV0QlNEKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX09wZW5CU0QpIHx8IGRlZmluZWQoX19V
c2Vyc3BhY2Vfb3NfTmFDbCkgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19GdWNoc2lhKQorI2lm
IGRlZmluZWQoX19EcmFnb25GbHlfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5l
ZChfX2xpbnV4X18pIHx8IGRlZmluZWQoX19OZXRCU0RfXykgfHwgZGVmaW5lZChfX09wZW5CU0Rf
XykgfHwgZGVmaW5lZChfX25hdGl2ZV9jbGllbnRfXykgfHwgZGVmaW5lZChfX0Z1Y2hzaWFfXykK
ICNpbmNsdWRlIDxwdGhyZWFkLmg+CiAjZW5kaWYKIHR5cGVkZWYgcHRocmVhZF9tdXRleF90IHVz
ZXJsYW5kX211dGV4X3Q7CkBAIC0yODQsNyArMjkxLDcgQEAgdHlwZWRlZiBwdGhyZWFkX2NvbmRf
dCB1c2VybGFuZF9jb25kX3Q7CiB0eXBlZGVmIHB0aHJlYWRfdCB1c2VybGFuZF90aHJlYWRfdDsK
ICNlbmRpZgogCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKSB8fCBkZWZpbmVk
KF9fVXNlcnNwYWNlX29zX05hQ2wpCisjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19u
YXRpdmVfY2xpZW50X18pCiAKICNkZWZpbmUgSUZOQU1TSVogNjQKIApAQCAtMzc4LDQzICszODUs
OSBAQCBzdHJ1Y3QgaWZrcGkgewogCQlpbnQgaWZrX3ZhbHVlOwogCX0gaWZrX2RhdGE7CiB9Owot
Ci1zdHJ1Y3QgaWZyZXEgewotCWNoYXIgICAgaWZyX25hbWVbMTZdOwotCXVuaW9uIHsKLQkJc3Ry
dWN0IHNvY2thZGRyIGlmcnVfYWRkcjsKLQkJc3RydWN0IHNvY2thZGRyIGlmcnVfZHN0YWRkcjsK
LQkJc3RydWN0IHNvY2thZGRyIGlmcnVfYnJvYWRhZGRyOwotCQlzaG9ydCAgaWZydV9mbGFnczsK
LQkJaW50IGlmcnVfbWV0cmljOwotCQlpbnQgaWZydV9tdHU7Ci0JCWludCBpZnJ1X3BoeXM7Ci0J
CWludCBpZnJ1X21lZGlhOwotCQlpbnQgICAgaWZydV9pbnR2YWw7Ci0JCWNoYXIqICBpZnJ1X2Rh
dGE7Ci0JCXN0cnVjdCBpZmRldm10dSBpZnJ1X2Rldm10dTsKLQkJc3RydWN0IGlma3BpICBpZnJ1
X2twaTsKLQkJdWludDMyX3QgaWZydV93YWtlX2ZsYWdzOwotCX0gaWZyX2lmcnU7Ci0jZGVmaW5l
IGlmcl9hZGRyICAgICAgICBpZnJfaWZydS5pZnJ1X2FkZHIKLSNkZWZpbmUgaWZyX2RzdGFkZHIg
ICAgIGlmcl9pZnJ1LmlmcnVfZHN0YWRkcgotI2RlZmluZSBpZnJfYnJvYWRhZGRyICAgaWZyX2lm
cnUuaWZydV9icm9hZGFkZHIKLSNkZWZpbmUgaWZyX2ZsYWdzICAgICAgIGlmcl9pZnJ1LmlmcnVf
ZmxhZ3NbMF0KLSNkZWZpbmUgaWZyX3ByZXZmbGFncyAgIGlmcl9pZnJ1LmlmcnVfZmxhZ3NbMV0K
LSNkZWZpbmUgaWZyX21ldHJpYyAgICAgIGlmcl9pZnJ1LmlmcnVfbWV0cmljCi0jZGVmaW5lIGlm
cl9tdHUgICAgICAgICBpZnJfaWZydS5pZnJ1X210dQotI2RlZmluZSBpZnJfcGh5cyAgICAgICAg
aWZyX2lmcnUuaWZydV9waHlzCi0jZGVmaW5lIGlmcl9tZWRpYSAgICAgICBpZnJfaWZydS5pZnJ1
X21lZGlhCi0jZGVmaW5lIGlmcl9kYXRhICAgICAgICBpZnJfaWZydS5pZnJ1X2RhdGEKLSNkZWZp
bmUgaWZyX2Rldm10dSAgICAgIGlmcl9pZnJ1LmlmcnVfZGV2bXR1Ci0jZGVmaW5lIGlmcl9pbnR2
YWwgICAgICBpZnJfaWZydS5pZnJ1X2ludHZhbAotI2RlZmluZSBpZnJfa3BpICAgICAgICAgaWZy
X2lmcnUuaWZydV9rcGkKLSNkZWZpbmUgaWZyX3dha2VfZmxhZ3MgIGlmcl9pZnJ1LmlmcnVfd2Fr
ZV9mbGFncwotfTsKLQogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRv
d3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiBpbnQgV2luX2dldGlmYWRkcnMoc3RydWN0IGlmYWRk
cnMqKik7CiAjZGVmaW5lIGdldGlmYWRkcnMoaW50ZXJmYWNlcykgIChpbnQpV2luX2dldGlmYWRk
cnMoaW50ZXJmYWNlcykKIGludCB3aW5faWZfbmFtZXRvaW5kZXgoY29uc3QgY2hhciAqKTsKQEAg
LTQyNSw5ICszOTgsOSBAQCBpbnQgd2luX2lmX25hbWV0b2luZGV4KGNvbnN0IGNoYXIgKik7CiAj
ZGVmaW5lIG10eF91bmxvY2soYXJnMSkKICNkZWZpbmUgbXR4X2Fzc2VydChhcmcxLGFyZzIpCiAj
ZGVmaW5lIE1BX09XTkVEIDcgLyogc3lzL211dGV4LmggdHlwaWNhbGx5IG9uIEZyZWVCU0QgKi8K
LSNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19GcmVlQlNEKQorI2lmICFkZWZpbmVkKF9fRnJl
ZUJTRF9fKQogc3RydWN0IG10eCB7aW50IGR1bW15O307Ci0jaWYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2Vfb3NfTmV0QlNEKQorI2lmICFkZWZpbmVkKF9fTmV0QlNEX18pCiBzdHJ1Y3Qgc2VsaW5mbyB7
aW50IGR1bW15O307CiAjZW5kaWYKIHN0cnVjdCBzeCB7aW50IGR1bW15O307CkBAIC00MzUsNiAr
NDA4LDcgQEAgc3RydWN0IHN4IHtpbnQgZHVtbXk7fTsKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAj
aW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkYm9vbC5oPgogLyogI2luY2x1ZGUgPHN5
cy9wYXJhbS5oPiAgaW4gRnJlZUJTRCBkZWZpbmVzIE1TSVpFICovCiAvKiAjaW5jbHVkZSA8c3lz
L2t0ci5oPiAqLwogLyogI2luY2x1ZGUgPHN5cy9zeXN0bS5oPiAqLwpAQCAtNDU3LDIyICs0MzEs
MjIgQEAgc3RydWN0IHN4IHtpbnQgZHVtbXk7fTsKICNpbmNsdWRlIDx1c2VyX21idWYuaD4KIC8q
ICNpbmNsdWRlIDxzeXMvdWlvLmg+ICovCiAvKiAjaW5jbHVkZSA8c3lzL2xvY2suaD4gKi8KLSNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDYwMjAwMAorI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVk
ZSA8c3lzL3J3bG9jay5oPgogI2VuZGlmCiAvKiAjaW5jbHVkZSA8c3lzL2t0aHJlYWQuaD4gKi8K
LSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDYwMjAwMAor
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5j
bHVkZSA8c3lzL3ByaXYuaD4KICNlbmRpZgogLyogI2luY2x1ZGUgPHN5cy9yYW5kb20uaD4gKi8K
ICNpbmNsdWRlIDxsaW1pdHMuaD4KIC8qICNpbmNsdWRlIDxtYWNoaW5lL2NwdS5oPiAqLwogCi0j
aWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19EYXJ3aW4pCisjaWYgZGVmaW5lZChfX0FQUExFX18p
CiAvKiB3YXMgYSAwIGJ5dGUgZmlsZS4gIG5lZWRlZCBmb3Igc3RydWN0cyBpZl9kYXRhKDY0KSBh
bmQgbmV0X2V2ZW50X2RhdGEgKi8KICNpbmNsdWRlIDxuZXQvaWZfdmFyLmg+CiAjZW5kaWYKLSNp
ZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0ZyZWVCU0QpCisjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykKICNpbmNsdWRlIDxuZXQvaWZfdHlwZXMuaD4KIC8qICNpbmNsdWRlIDxuZXQvaWZfdmFyLmg+
IHdhcyBhIDAgYnl0ZSBmaWxlLiAgY2F1c2VzIHN0cnVjdCBtdHggcmVkZWZpbml0aW9uICovCiAj
ZW5kaWYKQEAgLTQ4MCw3ICs0NTQsNyBAQCBzdHJ1Y3Qgc3gge2ludCBkdW1teTt9OwogICogIHVz
ZXJzcGFjZSBhcyB3ZWxsPyAqLwogLyogb24gRnJlZUJTRCwgdGhpcyByZXN1bHRzIGluIGEgcmVk
ZWZpbnRpb24gb2Ygc3RydWN0IHJvdXRlICovCiAvKiAjaW5jbHVkZSA8bmV0L3JvdXRlLmg+ICov
Ci0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykgJiYgIWRlZmluZWQoX19Vc2Vy
c3BhY2Vfb3NfTmFDbCkKKyNpZiAhZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fbmF0aXZl
X2NsaWVudF9fKQogI2luY2x1ZGUgPG5ldC9pZi5oPgogI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4K
ICNpbmNsdWRlIDxuZXRpbmV0L2luX3N5c3RtLmg+CkBAIC00OTYsNyArNDcwLDcgQEAgc3RydWN0
IHN4IHtpbnQgZHVtbXk7fTsKIAogLyogZm9yIGdldGlmYWRkcnMgKi8KICNpbmNsdWRlIDxzeXMv
dHlwZXMuaD4KLSNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmICFkZWZp
bmVkKF9XSU4zMikKICNpZiBkZWZpbmVkKElORVQpIHx8IGRlZmluZWQoSU5FVDYpCiAjaW5jbHVk
ZSA8aWZhZGRycy5oPgogI2VuZGlmCkBAIC01MDYsNiArNDgwLDggQEAgc3RydWN0IHN4IHtpbnQg
ZHVtbXk7fTsKIAogLyogZm9yIGNsb3NlLCBldGMuICovCiAjaW5jbHVkZSA8dW5pc3RkLmg+Cisv
KiBmb3IgZ2V0dGltZW9mZGF5ICovCisjaW5jbHVkZSA8c3lzL3RpbWUuaD4KICNlbmRpZgogCiAv
KiBsb3RzIG9mIGVycm5vJ3MgdXNlZCBhbmQgbmVlZGVkIGluIHVzZXJzcGFjZSAqLwpAQCAtNTEz
LDcgKzQ4OSw3IEBAIHN0cnVjdCBzeCB7aW50IGR1bW15O307CiAvKiBmb3Igb2Zmc2V0b2YgKi8K
ICNpbmNsdWRlIDxzdGRkZWYuaD4KIAotI2lmIGRlZmluZWQoU0NUUF9QUk9DRVNTX0xFVkVMX0xP
Q0tTKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoU0NU
UF9QUk9DRVNTX0xFVkVMX0xPQ0tTKSAmJiAhZGVmaW5lZChfV0lOMzIpCiAvKiBmb3IgcHRocmVh
ZF9tdXRleF9sb2NrLCBwdGhyZWFkX211dGV4X3VubG9jaywgZXRjLiAqLwogI2luY2x1ZGUgPHB0
aHJlYWQuaD4KICNlbmRpZgpAQCAtNTI0LDIxICs1MDAsMjEgQEAgc3RydWN0IHN4IHtpbnQgZHVt
bXk7fTsKICNlbmRpZgkJCQkvKiBJUFNFQyAqLwogCiAjaWZkZWYgSU5FVDYKLSNpZiBkZWZpbmVk
KF9fVXNlcnNwYWNlX29zX0ZyZWVCU0QpCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKICNpbmNs
dWRlIDxzeXMvZG9tYWluLmg+CiAjZW5kaWYKICNpZmRlZiBJUFNFQwogI2luY2x1ZGUgPG5ldGlw
c2VjL2lwc2VjNi5oPgogI2VuZGlmCi0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93
cykKKyNpZiAhZGVmaW5lZChfV0lOMzIpCiAjaW5jbHVkZSA8bmV0aW5ldC9pcDYuaD4KICNlbmRp
ZgotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRGFyd2luKSB8fCBkZWZpbmVkKF9fVXNlcnNw
YWNlX29zX0ZyZWVCU0QpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfTGludXgpIHx8IGRlZmlu
ZWQoX19Vc2Vyc3BhY2Vfb3NfTmV0QlNEKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX09wZW5C
U0QpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX2xpbnV4X18pIHx8IGRl
ZmluZWQoX19OZXRCU0RfXykgfHwgZGVmaW5lZChfX09wZW5CU0RfXykgfHwgZGVmaW5lZChfV0lO
MzIpCiAjaW5jbHVkZSAidXNlcl9pcDZfdmFyLmgiCiAjZWxzZQogI2luY2x1ZGUgPG5ldGluZXQ2
L2lwNl92YXIuaD4KICNlbmRpZgotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRnJlZUJTRCkK
KyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQogI2luY2x1ZGUgPG5ldGluZXQ2L2luNl9wY2IuaD4K
ICNpbmNsdWRlIDxuZXRpbmV0Ni9pcDZwcm90b3N3Lmg+CiAvKiAjaW5jbHVkZSA8bmV0aW5ldDYv
bmQ2Lmg+IHdhcyBhIDAgYnl0ZSBmaWxlICovCkBAIC01NTMsNyArNTI5LDcgQEAgc3RydWN0IHN4
IHtpbnQgZHVtbXk7fTsKIAogI2luY2x1ZGUgIm5ldGluZXQvc2N0cF9zaGExLmgiCiAKLSNpZiBf
X0ZyZWVCU0RfdmVyc2lvbiA+PSA3MDAwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPG5ldGluZXQvaXBfb3B0aW9ucy5oPgog
I2VuZGlmCiAKQEAgLTU2MiwxMSArNTM4LDYgQEAgc3RydWN0IHN4IHtpbnQgZHVtbXk7fTsKIAkJ
U0NUUF9CQVNFX1ZBUihkZWJ1Z19wcmludGYpKF9fVkFfQVJHU19fKTsgXAogCX0KIAotI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pCi0jaWZuZGVmIGluNnBjYgotI2RlZmluZSBpbjZwY2IJCWlucGNi
Ci0jZW5kaWYKLSNlbmRpZgogLyogRGVjbGFyZSBhbGwgdGhlIG1hbGxvYyBuYW1lcyBmb3IgYWxs
IHRoZSB2YXJpb3VzIG1hbGxvY3MgKi8KIE1BTExPQ19ERUNMQVJFKFNDVFBfTV9NQVApOwogTUFM
TE9DX0RFQ0xBUkUoU0NUUF9NX1NUUk1JKTsKQEAgLTYxMSwxMiArNTgyLDEyIEBAIE1BTExPQ19E
RUNMQVJFKFNDVFBfTV9TT0NLT1BUKTsKIC8qCiAgKgogICovCi0jaWYgIWRlZmluZWQoX19Vc2Vy
c3BhY2Vfb3NfRGFyd2luKQorI2lmICFkZWZpbmVkKF9fQVBQTEVfXykKICNkZWZpbmUgVVNFUl9B
RERSX05VTEwJKE5VTEwpCQkvKiBGSVggTUU6IHRlbXAgKi8KICNlbmRpZgogCi0jaWYgZGVmaW5l
ZChTQ1RQX0RFQlVHKQogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9jb25zdGFudHMuaD4KKyNpZiBk
ZWZpbmVkKFNDVFBfREVCVUcpCiAjZGVmaW5lIFNDVFBEQkcobGV2ZWwsIC4uLikJCQkJCVwKIHsJ
CQkJCQkJCVwKIAlkbyB7CQkJCQkJCVwKQEAgLTY3MCw3ICs2NDEsNyBAQCBNQUxMT0NfREVDTEFS
RShTQ1RQX01fU09DS09QVCk7CiAjZGVmaW5lIFNDVFBfVlJGX0lGTl9IQVNIX1NJWkUJMwogI2Rl
ZmluZQlTQ1RQX0lOSVRfVlJGX1RBQkxFSUQodnJmKQogCi0jaWYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2Vfb3NfV2luZG93cykKKyNpZiAhZGVmaW5lZChfV0lOMzIpCiAjZGVmaW5lIFNDVFBfSUZOX0lT
X0lGVF9MT09QKGlmbikgKHN0cm5jbXAoKGlmbiktPmlmbl9uYW1lLCAibG8iLCAyKSA9PSAwKQog
LyogQlNEIGRlZmluaXRpb24gKi8KIC8qICNkZWZpbmUgU0NUUF9ST1VURV9JU19SRUFMX0xPT1Ao
cm8pICgocm8pLT5yb19ydCAmJiAocm8pLT5yb19ydC0+cnRfaWZhICYmIChybyktPnJvX3J0LT5y
dF9pZmEtPmlmYV9pZnAgJiYgKHJvKS0+cm9fcnQtPnJ0X2lmYS0+aWZhX2lmcC0+aWZfdHlwZSA9
PSBJRlRfTE9PUCkgKi8KQEAgLTgwNCw3ICs3NzUsNyBAQCBzY3RwX2hhc2hmcmVlZGVzdHJveSh2
b2lkICp2aGFzaHRibCwgc3RydWN0IG1hbGxvY190eXBlICp0eXBlLCB1X2xvbmcgaGFzaG1hc2sp
OwogI2RlZmluZSBLVFJfU1VCU1lTIDEKIAogLyogVGhlIHBhY2tlZCBkZWZpbmUgZm9yIDY0IGJp
dCBwbGF0Zm9ybXMgKi8KLSNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lm
ICFkZWZpbmVkKF9XSU4zMikKICNkZWZpbmUgU0NUUF9QQUNLRUQgX19hdHRyaWJ1dGVfXygocGFj
a2VkKSkKICNkZWZpbmUgU0NUUF9VTlVTRUQgX19hdHRyaWJ1dGVfXygodW51c2VkKSkKICNlbHNl
CkBAIC04MzMsNiArODA0LDEzIEBAIHNjdHBfaGFzaGZyZWVkZXN0cm95KHZvaWQgKnZoYXNodGJs
LCBzdHJ1Y3QgbWFsbG9jX3R5cGUgKnR5cGUsIHVfbG9uZyBoYXNobWFzayk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTV9BTElHTihtLCBsZW4pOyBcCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQogCisjaWYgIWRlZmluZWQoX1dJTjMyKQorI2RlZmlu
ZSBTQ1RQX1NOUFJJTlRGKGRhdGEsIC4uLikJCQkJCQlcCisJaWYgKHNucHJpbnRmKGRhdGEsIF9f
VkFfQVJHU19fKSA8IDApIHsJCQkJCVwKKwkJZGF0YVswXSA9ICdcMCc7CQkJCQkJCVwKKwl9Cisj
ZW5kaWYKKwogLyogV2UgbWFrZSBpdCBzbyBpZiB5b3UgaGF2ZSB1cCB0byA0IHRocmVhZHMKICAq
IHdyaXR0aW5nIGJhc2VkIG9uIHRoZSBkZWZhdWx0IHNpemUgb2YKICAqIHRoZSBwYWNrZXQgbG9n
IDY1IGssIHRoYXQgd291bGQgYmUKQEAgLTg5MSw3ICs4NjksNiBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgc2N0cF91c2Vyc3BhY2VfcnRmcmVlKHNjdHBfcnRlbnRyeV90ICpydCkKIAkJcmV0dXJuOwog
CX0KIAlmcmVlKHJ0KTsKLQlydCA9IE5VTEw7CiB9CiAjZGVmaW5lIHJ0ZnJlZShhcmcxKSBzY3Rw
X3VzZXJzcGFjZV9ydGZyZWUoYXJnMSkKIApAQCAtOTEyLDEwICs4ODksNiBAQCBpbnQgc2N0cF91
c2Vyc3BhY2VfZ2V0X210dV9mcm9tX2lmbih1aW50MzJfdCBpZl9pbmRleCwgaW50IGFmKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydC0+cnRfcm14
LnJteF9tdHUgPSBtdHU7IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9IHdoaWxlKDApCiAKLS8qIChkZS0pcmVnaXN0ZXIgaW50ZXJmYWNlIGV2ZW50IG5vdGlm
aWNhdGlvbnMgKi8KLSNkZWZpbmUgU0NUUF9SRUdJU1RFUl9JTlRFUkZBQ0UoaWZoYW5kbGUsIGFm
KQotI2RlZmluZSBTQ1RQX0RFUkVHSVNURVJfSU5URVJGQUNFKGlmaGFuZGxlLCBhZikKLQogCiAv
KioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qIFRoZXNlIGFyZSBmb3IgbG9nZ2luZyAqLwpA
QCAtOTY1LDExICs5MzgsMTEgQEAgaW50IHNjdHBfdXNlcnNwYWNlX2dldF9tdHVfZnJvbV9pZm4o
dWludDMyX3QgaWZfaW5kZXgsIGludCBhZik7CiAgKi8KIAogLyogZ2V0IHRoZSB2NiBob3AgbGlt
aXQgKi8KLSNkZWZpbmUgU0NUUF9HRVRfSExJTShpbnAsIHJvKSAxMjggLyogQXMgZG9uZSBmb3Ig
X19XaW5kb3dzX18gKi8KKyNkZWZpbmUgU0NUUF9HRVRfSExJTShpbnAsIHJvKSAxMjgKICNkZWZp
bmUgSVB2Nl9IT1BfTElNSVQgMTI4CiAKIC8qIGlzIHRoZSBlbmRwb2ludCB2Nm9ubHk/ICovCi0j
ZGVmaW5lIFNDVFBfSVBWNl9WNk9OTFkoaW5wKQkoKChzdHJ1Y3QgaW5wY2IgKilpbnApLT5pbnBf
ZmxhZ3MgJiBJTjZQX0lQVjZfVjZPTkxZKQorI2RlZmluZSBTQ1RQX0lQVjZfVjZPTkxZKHNjdHBf
aW5wY2IpCSgoc2N0cF9pbnBjYiktPmlwX2lucC5pbnAuaW5wX2ZsYWdzICYgSU42UF9JUFY2X1Y2
T05MWSkKIC8qIGlzIHRoZSBzb2NrZXQgbm9uLWJsb2NraW5nPyAqLwogI2RlZmluZSBTQ1RQX1NP
X0lTX05CSU8oc28pCSgoc28pLT5zb19zdGF0ZSAmIFNTX05CSU8pCiAjZGVmaW5lIFNDVFBfU0VU
X1NPX05CSU8oc28pCSgoc28pLT5zb19zdGF0ZSB8PSBTU19OQklPKQpAQCAtMTAwNCw3ICs5Nzcs
NyBAQCBpbnQgc2N0cF91c2Vyc3BhY2VfZ2V0X210dV9mcm9tX2lmbih1aW50MzJfdCBpZl9pbmRl
eCwgaW50IGFmKTsKIAogLyogc2N0cF9wY2IuaCAqLwogCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFj
ZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogI2RlZmluZSBTSFVUX1JEIDEKICNk
ZWZpbmUgU0hVVF9XUiAyCiAjZGVmaW5lIFNIVVRfUkRXUiAzCkBAIC0xMDc3LDcgKzEwNTAsNyBA
QCBleHRlcm4gdm9pZCBzY3RwX3VzZXJzcGFjZV9pcDZfb3V0cHV0KGludCAqcmVzdWx0LCBzdHJ1
Y3QgbWJ1ZiAqb19wYWssCiB7IFwKIAlpZiAoc3RjYiAmJiBzdGNiLT5zY3RwX2VwKSBcCiAJCXJl
c3VsdCA9IGlwNl9vdXRwdXQob19wYWssIFwKLQkJCQkgICAgKChzdHJ1Y3QgaW42cGNiICopKHN0
Y2ItPnNjdHBfZXApKS0+aW42cF9vdXRwdXRvcHRzLCBcCisJCQkJICAgICgoc3RydWN0IGlucGNi
ICopKHN0Y2ItPnNjdHBfZXApKS0+aW42cF9vdXRwdXRvcHRzLCBcCiAJCQkJICAgIChybyksIDAs
IDAsIGlmcCwgTlVMTCk7IFwKIAllbHNlIFwKIAkJcmVzdWx0ID0gaXA2X291dHB1dChvX3Bhaywg
TlVMTCwgKHJvKSwgMCwgMCwgaWZwLCBOVUxMKTsgXApAQCAtMTA5MSwxMiArMTA2NCwxMiBAQCBz
Y3RwX2dldF9tYnVmX2Zvcl9tc2codW5zaWduZWQgaW50IHNwYWNlX25lZWRlZCwgaW50IHdhbnRf
aGVhZGVyLCBpbnQgaG93LCBpbnQgYQogLyogd2l0aCB0aGUgY3VycmVudCBpbmNsdWRlZCBmaWxl
cywgdGhpcyBpcyBkZWZpbmVkIGluIExpbnV4IGJ1dAogICogIGluIEZyZWVCU0QsIGl0IGlzIGJl
aGluZCBhIF9LRVJORUwgaW4gc3lzL3NvY2tldC5oIC4uLgogICovCi0jaWYgZGVmaW5lZChfX1Vz
ZXJzcGFjZV9vc19EcmFnb25GbHkpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRnJlZUJTRCkg
fHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19PcGVuQlNEKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNl
X29zX05hQ2wpCisjaWYgZGVmaW5lZChfX0RyYWdvbkZseV9fKSB8fCBkZWZpbmVkKF9fRnJlZUJT
RF9fKSB8fCBkZWZpbmVkKF9fT3BlbkJTRF9fKSB8fCBkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9f
KQogLyogc3RvbGVuIGZyb20gL3Vzci9pbmNsdWRlL3N5cy9zb2NrZXQuaCAqLwogI2RlZmluZSBD
TVNHX0FMSUdOKG4pICAgX0FMSUdOKG4pCi0jZWxpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX05l
dEJTRCkKKyNlbGlmIGRlZmluZWQoX19OZXRCU0RfXykKICNkZWZpbmUgQ01TR19BTElHTihuKSAg
ICgoKG4pICsgX19BTElHTkJZVEVTKSAmIH5fX0FMSUdOQllURVMpCi0jZWxpZiBkZWZpbmVkKF9f
VXNlcnNwYWNlX29zX0RhcndpbikKKyNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQogI2lmICFkZWZp
bmVkKF9fREFSV0lOX0FMSUdOQllURVMpCiAjZGVmaW5lCV9fREFSV0lOX0FMSUdOQllURVMJKHNp
emVvZihfX2Rhcndpbl9zaXplX3QpIC0gMSkKICNlbmRpZgpAQCAtMTEzMSw3ICsxMTA0LDcgQEAg
c2N0cF9nZXRfbWJ1Zl9mb3JfbXNnKHVuc2lnbmVkIGludCBzcGFjZV9uZWVkZWQsIGludCB3YW50
X2hlYWRlciwgaW50IGhvdywgaW50IGEKIAl9IHdoaWxlICgwKQogI2VuZGlmCiAKLSNpZiBkZWZp
bmVkKF9fVXNlcnNwYWNlX29zX0xpbnV4KQorI2lmIGRlZmluZWQoX19saW51eF9fKQogI2lmICFk
ZWZpbmVkKFRBSUxRX0ZPUkVBQ0hfU0FGRSkKICNkZWZpbmUgVEFJTFFfRk9SRUFDSF9TQUZFKHZh
ciwgaGVhZCwgZmllbGQsIHR2YXIpICAgICAgICAgICAgIFwKICAgICAgICAgIGZvciAoKHZhcikg
PSAoKGhlYWQpLT50cWhfZmlyc3QpOyAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTExNDUsMTIg
KzExMTgsMTIgQEAgc2N0cF9nZXRfbWJ1Zl9mb3JfbXNnKHVuc2lnbmVkIGludCBzcGFjZV9uZWVk
ZWQsIGludCB3YW50X2hlYWRlciwgaW50IGhvdywgaW50IGEKICAgICAgICAgICAgICAgKHZhcikg
PSAodHZhcikpCiAjZW5kaWYKICNlbmRpZgotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRHJh
Z29uRmx5KQorI2lmIGRlZmluZWQoX19EcmFnb25GbHlfXykKICNkZWZpbmUgVEFJTFFfRk9SRUFD
SF9TQUZFIFRBSUxRX0ZPUkVBQ0hfTVVUQUJMRQogI2RlZmluZSBMSVNUX0ZPUkVBQ0hfU0FGRSBM
SVNUX0ZPUkVBQ0hfTVVUQUJMRQogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29z
X05hQ2wpCisjaWYgZGVmaW5lZChfX25hdGl2ZV9jbGllbnRfXykKICNkZWZpbmUJdGltZXJjbXAo
dHZwLCB1dnAsIGNtcCkJCQkJCQlcCiAJKCgodHZwKS0+dHZfc2VjID09ICh1dnApLT50dl9zZWMp
ID8JCQkJXAogCSAgICAoKHR2cCktPnR2X3VzZWMgY21wICh1dnApLT50dl91c2VjKSA6CQkJXApA
QCAtMTE1OSw0ICsxMTMyLDkgQEAgc2N0cF9nZXRfbWJ1Zl9mb3JfbXNnKHVuc2lnbmVkIGludCBz
cGFjZV9uZWVkZWQsIGludCB3YW50X2hlYWRlciwgaW50IGhvdywgaW50IGEKIAogI2RlZmluZSBT
Q1RQX0lTX0xJU1RFTklORyhpbnApICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1Nf
QUNDRVBUSU5HKSAhPSAwKQogCisjaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19E
cmFnb25GbHlfXykgfHwgZGVmaW5lZChfX2xpbnV4X18pIHx8IGRlZmluZWQoX19uYXRpdmVfY2xp
ZW50X18pIHx8IGRlZmluZWQoX19OZXRCU0RfXykgfHwgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmlu
ZWQoX19GdWNoc2lhX18pCitpbnQKK3RpbWluZ3NhZmVfYmNtcChjb25zdCB2b2lkICosIGNvbnN0
IHZvaWQgKiwgc2l6ZV90KTsKKyNlbmRpZgorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX291dHB1dC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9u
ZXRpbmV0L3NjdHBfb3V0cHV0LmMKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRl
eCBlMjlhNzI3ZmFkZDlhNGViMmYxZTlmNDZjNjE1NTc2NDAwMGFiZTU1Li4yMTQyNGI2OTQ1OWJm
NDQ1OGUwOTkxNTJlNjA5MzQ5NDZhOThlYTQ4Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0
aW5ldC9zY3RwX291dHB1dC5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3Rw
X291dHB1dC5jCkBAIC0zMiwxMyArMzIsMTMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaWZkZWYgX19GcmVlQlNEX18KKyNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgot
X19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfb3V0cHV0LmMgMzM1MTc5
IDIwMTgtMDYtMTQgMjE6MzA6NTJaIHR1ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhl
YWQvc3lzL25ldGluZXQvc2N0cF9vdXRwdXQuYyAzNjQ5MzcgMjAyMC0wOC0yOCAyMDowNToxOFog
dHVleGVuICQiKTsKICNlbmRpZgogCiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX29zLmg+Ci0jaWZk
ZWYgX19GcmVlQlNEX18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogI2luY2x1ZGUgPHN5cy9wcm9jLmg+CiAjZW5kaWYKICNpbmNsdWRlIDxuZXRp
bmV0L3NjdHBfdmFyLmg+CkBAIC01NiwzMiArNTYsMzEgQEAgX19GQlNESUQoIiRGcmVlQlNEOiBo
ZWFkL3N5cy9uZXRpbmV0L3NjdHBfb3V0cHV0LmMgMzM1MTc5IDIwMTgtMDYtMTQgMjE6MzA6NTJa
IHQKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfYnNkX2FkZHIuaD4KICNpbmNsdWRlIDxuZXRpbmV0
L3NjdHBfaW5wdXQuaD4KICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfY3JjMzIuaD4KLSNpZiBkZWZp
bmVkKF9fVXNlcnNwYWNlX29zX0xpbnV4KQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX2tkdHJhY2UuaD4K
KyNlbmRpZgorI2lmIGRlZmluZWQoX19saW51eF9fKQogI2RlZmluZSBfX0ZBVk9SX0JTRCAgICAv
KiAob24gVWJ1bnR1IGF0IGxlYXN0KSBlbmFibGVzIFVEUCBoZWFkZXIgZmllbGQgbmFtZXMgbGlr
ZSBCU0QgaW4gUkZDIDc2OCAqLwogI2VuZGlmCiAjaWYgZGVmaW5lZChJTkVUKSB8fCBkZWZpbmVk
KElORVQ2KQotI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgIWRlZmlu
ZWQoX1dJTjMyKQogI2luY2x1ZGUgPG5ldGluZXQvdWRwLmg+CiAjZW5kaWYKICNlbmRpZgorI2lm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaWYgZGVmaW5lZChfX0FQUExFX18pCiAjaW5jbHVk
ZSA8bmV0aW5ldC9pbi5oPgogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKLSNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDAwMDAKKyNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUg
PG5ldGluZXQvdWRwX3Zhci5oPgotI2VuZGlmCiAjaW5jbHVkZSA8bWFjaGluZS9pbl9ja3N1bS5o
PgogI2VuZGlmCisjZW5kaWYKICNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pICYmIGRlZmluZWQo
SU5FVDYpCiAjaW5jbHVkZSA8bmV0aW5ldDYvc2N0cDZfdmFyLmg+CiAjZW5kaWYKIAotI2lmIGRl
ZmluZWQoX19BUFBMRV9fKQotI2RlZmluZSBBUFBMRV9GSUxFX05PIDMKLSNlbmRpZgotCi0jaWYg
ZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAjaWYgIShkZWZpbmVkKEFQUExFX0xFT1BBUkQpIHx8IGRlZmluZWQoQVBQ
TEVfU05PV0xFT1BBUkQpKQogI2RlZmluZSBTQ1RQX01BWF9MSU5LSERSIDE2CiAjZW5kaWYKQEAg
LTE5MzAsMTQgKzE5MjksMTIgQEAgc2N0cF9pc19hZGRyZXNzX2luX3Njb3BlKHN0cnVjdCBzY3Rw
X2lmYSAqaWZhLAogCQlpZiAoc2NvcGUtPmlwdjZfYWRkcl9sZWdhbCkgewogCQkJc3RydWN0IHNv
Y2thZGRyX2luNiAqc2luNjsKIAotI2lmICFkZWZpbmVkKF9fUGFuZGFfXykKIAkJCS8qIE11c3Qg
dXBkYXRlIHRoZSBmbGFncywgIGJ1bW1lciwgd2hpY2gKIAkJCSAqIG1lYW5zIGFueSBJRkEgbG9j
a3MgbXVzdCBub3cgYmUgYXBwbGllZCBIRVJFIDwtPgogCQkJICovCiAJCQlpZiAoZG9fdXBkYXRl
KSB7CiAJCQkJc2N0cF9nYXRoZXJfaW50ZXJuYWxfaWZhX2ZsYWdzKGlmYSk7CiAJCQl9Ci0jZW5k
aWYKIAkJCWlmIChpZmEtPmxvY2FsaWZhX2ZsYWdzICYgU0NUUF9BRERSX0lGQV9VTlVTRUFCTEUp
IHsKIAkJCQlyZXR1cm4gKDApOwogCQkJfQpAQCAtMjEwMCw3ICsyMDk3LDcgQEAgc2N0cF9hZGRf
YWRkcmVzc2VzX3RvX2lfaWEoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNi
ICpzdGNiLAogCQkJCWNvbnRpbnVlOwogCQkJfQogCQkJTElTVF9GT1JFQUNIKHNjdHBfaWZhcCwg
JnNjdHBfaWZucC0+aWZhbGlzdCwgbmV4dF9pZmEpIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAj
aWZkZWYgSU5FVAogCQkJCWlmICgoc2N0cF9pZmFwLT5hZGRyZXNzLnNhLnNhX2ZhbWlseSA9PSBB
Rl9JTkVUKSAmJgogCQkJCSAgICAocHJpc29uX2NoZWNrX2lwNChpbnAtPmlwX2lucC5pbnAuaW5w
X2NyZWQsCkBAIC0yMTUwLDcgKzIxNDcsNyBAQCBzY3RwX2FkZF9hZGRyZXNzZXNfdG9faV9pYShz
dHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCQkJCWNvbnRp
bnVlOwogCQkJCX0KIAkJCQlMSVNUX0ZPUkVBQ0goc2N0cF9pZmFwLCAmc2N0cF9pZm5wLT5pZmFs
aXN0LCBuZXh0X2lmYSkgewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZmRlZiBJTkVUCiAJCQkJ
CWlmICgoc2N0cF9pZmFwLT5hZGRyZXNzLnNhLnNhX2ZhbWlseSA9PSBBRl9JTkVUKSAmJgogCQkJ
CQkgICAgKHByaXNvbl9jaGVja19pcDQoaW5wLT5pcF9pbnAuaW5wLmlucF9jcmVkLApAQCAtMjUz
OCw3ICsyNTM1LDcgQEAgc2N0cF9jaG9vc2VfYm91bmRzcGVjaWZpY19pbnAoc3RydWN0IHNjdHBf
aW5wY2IgKmlucCwKIAlpZiAoc2N0cF9pZm4pIHsKIAkJLyogaXMgYSBwcmVmZXJyZWQgb25lIG9u
IHRoZSBpbnRlcmZhY2Ugd2Ugcm91dGUgb3V0PyAqLwogCQlMSVNUX0ZPUkVBQ0goc2N0cF9pZmEs
ICZzY3RwX2lmbi0+aWZhbGlzdCwgbmV4dF9pZmEpIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAj
aWZkZWYgSU5FVAogCQkJaWYgKChzY3RwX2lmYS0+YWRkcmVzcy5zYS5zYV9mYW1pbHkgPT0gQUZf
SU5FVCkgJiYKIAkJCSAgICAocHJpc29uX2NoZWNrX2lwNChpbnAtPmlwX2lucC5pbnAuaW5wX2Ny
ZWQsCkBAIC0yNjgwLDcgKzI2NzcsNyBAQCBzY3RwX2Nob29zZV9ib3VuZHNwZWNpZmljX3N0Y2Io
c3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAlpZiAoc2N0cF9pZm4pIHsKIAkJLyogZmlyc3QgdHJ5
IGZvciBhIHByZWZlcnJlZCBhZGRyZXNzIG9uIHRoZSBlcCAqLwogCQlMSVNUX0ZPUkVBQ0goc2N0
cF9pZmEsICZzY3RwX2lmbi0+aWZhbGlzdCwgbmV4dF9pZmEpIHsKLSNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAjaWZkZWYgSU5FVAogCQkJaWYgKChzY3RwX2lmYS0+YWRkcmVzcy5zYS5zYV9mYW1pbHkg
PT0gQUZfSU5FVCkgJiYKIAkJCSAgICAocHJpc29uX2NoZWNrX2lwNChpbnAtPmlwX2lucC5pbnAu
aW5wX2NyZWQsCkBAIC0yNzE2LDcgKzI3MTMsNyBAQCBzY3RwX2Nob29zZV9ib3VuZHNwZWNpZmlj
X3N0Y2Ioc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJfQogCQkvKiBuZXh0IHRyeSBmb3IgYW4g
YWNjZXB0YWJsZSBhZGRyZXNzIG9uIHRoZSBlcCAqLwogCQlMSVNUX0ZPUkVBQ0goc2N0cF9pZmEs
ICZzY3RwX2lmbi0+aWZhbGlzdCwgbmV4dF9pZmEpIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAj
aWZkZWYgSU5FVAogCQkJaWYgKChzY3RwX2lmYS0+YWRkcmVzcy5zYS5zYV9mYW1pbHkgPT0gQUZf
SU5FVCkgJiYKIAkJCSAgICAocHJpc29uX2NoZWNrX2lwNChpbnAtPmlwX2lucC5pbnAuaW5wX2Ny
ZWQsCkBAIC0yODM3LDcgKzI4MzQsNyBAQCBzY3RwX2Nob29zZV9ib3VuZHNwZWNpZmljX3N0Y2Io
c3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAogc3RhdGljIHN0cnVjdCBzY3RwX2lmYSAqCiBzY3Rw
X3NlbGVjdF9udGhfcHJlZmVycmVkX2FkZHJfZnJvbV9pZm5fYm91bmRhbGwoc3RydWN0IHNjdHBf
aWZuICppZm4sCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAjZWxzZQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBz
Y3RwX2lucGNiICppbnAgU0NUUF9VTlVTRUQsCkBAIC0yODY4LDcgKzI4NjUsNyBAQCBzY3RwX3Nl
bGVjdF9udGhfcHJlZmVycmVkX2FkZHJfZnJvbV9pZm5fYm91bmRhbGwoc3RydWN0IHNjdHBfaWZu
ICppZm4sCiAjZW5kaWYgIC8qIFNDVFBfRU1CRURERURfVjZfU0NPUEUgKi8KICNlbmRpZgkvKiBJ
TkVUNiAqLwogCUxJU1RfRk9SRUFDSChpZmEsICZpZm4tPmlmYWxpc3QsIG5leHRfaWZhKSB7Ci0j
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogI2lmZGVmIElORVQKIAkJaWYgKChpZmEtPmFkZHJlc3Muc2Eu
c2FfZmFtaWx5ID09IEFGX0lORVQpICYmCiAJCSAgICAocHJpc29uX2NoZWNrX2lwNChpbnAtPmlw
X2lucC5pbnAuaW5wX2NyZWQsCkBAIC0yOTcxLDcgKzI5NjgsNyBAQCBzY3RwX3NlbGVjdF9udGhf
cHJlZmVycmVkX2FkZHJfZnJvbV9pZm5fYm91bmRhbGwoc3RydWN0IHNjdHBfaWZuICppZm4sCiAK
IHN0YXRpYyBpbnQKIHNjdHBfY291bnRfbnVtX3ByZWZlcnJlZF9ib3VuZGFsbChzdHJ1Y3Qgc2N0
cF9pZm4gKmlmbiwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKICNlbHNlCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNjdHBfaW5wY2IgKmlucCBTQ1RQX1VOVVNFRCwK
QEAgLTI5ODYsNyArMjk4Myw3IEBAIHNjdHBfY291bnRfbnVtX3ByZWZlcnJlZF9ib3VuZGFsbChz
dHJ1Y3Qgc2N0cF9pZm4gKmlmbiwKIAlpbnQgbnVtX2VsaWdpYmxlX2FkZHIgPSAwOwogCiAJTElT
VF9GT1JFQUNIKGlmYSwgJmlmbi0+aWZhbGlzdCwgbmV4dF9pZmEpIHsKLSNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAjaWZkZWYgSU5FVAogCQlpZiAoKGlmYS0+YWRkcmVzcy5zYS5zYV9mYW1pbHkgPT0g
QUZfSU5FVCkgJiYKIAkJICAgIChwcmlzb25fY2hlY2tfaXA0KGlucC0+aXBfaW5wLmlucC5pbnBf
Y3JlZCwKQEAgLTMxOTYsNyArMzE5Myw3IEBAIGFnYWluX3dpdGhfcHJpdmF0ZV9hZGRyZXNzZXNf
YWxsb3dlZDoKIAl9CiAJTElTVF9GT1JFQUNIKHNjdHBfaWZhLCAmZW1pdF9pZm4tPmlmYWxpc3Qs
IG5leHRfaWZhKSB7CiAJCVNDVFBEQkcoU0NUUF9ERUJVR19PVVRQVVQyLCAiaWZhOiVwXG4iLCAo
dm9pZCAqKXNjdHBfaWZhKTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaWZkZWYgSU5FVAogCQlp
ZiAoKHNjdHBfaWZhLT5hZGRyZXNzLnNhLnNhX2ZhbWlseSA9PSBBRl9JTkVUKSAmJgogCQkgICAg
KHByaXNvbl9jaGVja19pcDQoaW5wLT5pcF9pbnAuaW5wLmlucF9jcmVkLApAQCAtMzI2Miw3ICsz
MjU5LDcgQEAgYWdhaW5fd2l0aF9wcml2YXRlX2FkZHJlc3Nlc19hbGxvd2VkOgogCQkJY29udGlu
dWU7CiAJCX0KIAkJTElTVF9GT1JFQUNIKHNjdHBfaWZhLCAmc2N0cF9pZm4tPmlmYWxpc3QsIG5l
eHRfaWZhKSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmZGVmIElORVQKIAkJCWlmICgoc2N0
cF9pZmEtPmFkZHJlc3Muc2Euc2FfZmFtaWx5ID09IEFGX0lORVQpICYmCiAJCQkgICAgKHByaXNv
bl9jaGVja19pcDQoaW5wLT5pcF9pbnAuaW5wLmlucF9jcmVkLApAQCAtMzMzMCw3ICszMzI3LDcg
QEAgb3V0OgogCQkJCUxJU1RfRk9SRUFDSChzY3RwX2lmYSwgJnNjdHBfaWZuLT5pZmFsaXN0LCBu
ZXh0X2lmYSkgewogCQkJCQlzdHJ1Y3Qgc2N0cF9pZmEgKnRtcF9zaWZhOwogCi0jaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogI2lmZGVmIElORVQKIAkJCQkJaWYgKChzY3RwX2lmYS0+YWRkcmVzcy5zYS5z
YV9mYW1pbHkgPT0gQUZfSU5FVCkgJiYKIAkJCQkJICAgIChwcmlzb25fY2hlY2tfaXA0KGlucC0+
aXBfaW5wLmlucC5pbnBfY3JlZCwKQEAgLTM0NzEsMTYgKzM0NjgsMjQgQEAgc2N0cF9zb3VyY2Vf
YWRkcmVzc19zZWxlY3Rpb24oc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkgKiAgIGFkZHJlc3Nl
cy4gSWYgdGhlIGJvdW5kIHNldCBpcyBOT1QgYXNzaWduZWQgdG8gdGhlIGludGVyZmFjZSB0aGVu
CiAJICogICB3ZSBtdXN0IHVzZSByb3RhdGlvbiBhbW9uZ3N0IHRoZSBib3VuZCBhZGRyZXNzZXMu
LgogCSAqLworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCisJaWYgKHJvLT5yb19uaCA9PSBOVUxMKSB7CisjZWxzZQogCWlmIChyby0+cm9fcnQgPT0g
TlVMTCkgeworI2VuZGlmCiAJCS8qCiAJCSAqIE5lZWQgYSByb3V0ZSB0byBjYWNoZS4KIAkJICov
CiAJCVNDVFBfUlRBTExPQyhybywgdnJmX2lkLCBpbnAtPmZpYm51bSk7CiAJfQorI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJaWYgKHJvLT5yb19u
aCA9PSBOVUxMKSB7CisjZWxzZQogCWlmIChyby0+cm9fcnQgPT0gTlVMTCkgeworI2VuZGlmCiAJ
CXJldHVybiAoTlVMTCk7CiAJfQotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykK
KyNpZiBkZWZpbmVkKF9XSU4zMikKIAkvKiBPbiBXaW5kb3dzIHRoZSBzYV9mYW1pbHkgaXMgVV9T
SE9SVCBvciBBRERSRVNTX0ZBTUlMWSAqLwogCWZhbSA9IChzYV9mYW1pbHlfdClyby0+cm9fZHN0
LnNhX2ZhbWlseTsKICNlbHNlCkBAIC0zNTA2LDcgKzM1MTEsNyBAQCBzY3RwX3NvdXJjZV9hZGRy
ZXNzX3NlbGVjdGlvbihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogI2lmZGVmIElORVQ2CiAJY2Fz
ZSBBRl9JTkVUNjoKIAkJLyogU2NvcGUgYmFzZWQgb24gb3V0Ym91bmQgYWRkcmVzcyAqLwotI2lm
IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIAkJ
aWYgKElONl9JU19BRERSX0xPT1BCQUNLKCZ0bzYtPnNpbjZfYWRkcikpIHsKICNlbHNlCiAJCWlm
IChJTjZfSVNfQUREUl9MT09QQkFDSygmdG82LT5zaW42X2FkZHIpIHx8CkBAIC0zNTYzLDcgKzM1
NjgsNyBAQCBzY3RwX3NvdXJjZV9hZGRyZXNzX3NlbGVjdGlvbihzdHJ1Y3Qgc2N0cF9pbnBjYiAq
aW5wLAogc3RhdGljIGludAogc2N0cF9maW5kX2Ntc2coaW50IGNfdHlwZSwgdm9pZCAqZGF0YSwg
c3RydWN0IG1idWYgKmNvbnRyb2wsIHNpemVfdCBjcHNpemUpCiB7Ci0jaWYgZGVmaW5lZChfX1Vz
ZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogCVdTQUNNU0dIRFIgY21o
OwogI2Vsc2UKIAlzdHJ1Y3QgY21zZ2hkciBjbWg7CkBAIC0zNjY4LDEyICszNjczLDExIEBAIHNj
dHBfZmluZF9jbXNnKGludCBjX3R5cGUsIHZvaWQgKmRhdGEsIHN0cnVjdCBtYnVmICpjb250cm9s
LCBzaXplX3QgY3BzaXplKQogc3RhdGljIGludAogc2N0cF9wcm9jZXNzX2Ntc2dzX2Zvcl9pbml0
KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IG1idWYgKmNvbnRyb2wsIGludCAqZXJyb3Ip
CiB7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJ
TjMyKQogCVdTQUNNU0dIRFIgY21oOwogI2Vsc2UKIAlzdHJ1Y3QgY21zZ2hkciBjbWg7CiAjZW5k
aWYKLQlpbnQgdGxlbiwgYXQ7CiAJc3RydWN0IHNjdHBfaW5pdG1zZyBpbml0bXNnOwogI2lmZGVm
IElORVQKIAlzdHJ1Y3Qgc29ja2FkZHJfaW4gc2luOwpAQCAtMzY4MSwzNCArMzY4NSwzNyBAQCBz
Y3RwX3Byb2Nlc3NfY21zZ3NfZm9yX2luaXQoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qg
bWJ1ZiAqY29udHJvbCwgaW50ICplcgogI2lmZGVmIElORVQ2CiAJc3RydWN0IHNvY2thZGRyX2lu
NiBzaW42OwogI2VuZGlmCisJaW50IHRvdF9sZW4sIHJlbV9sZW4sIGNtc2dfZGF0YV9sZW4sIGNt
c2dfZGF0YV9vZmYsIG9mZjsKIAotCXRsZW4gPSBTQ1RQX0JVRl9MRU4oY29udHJvbCk7Ci0JYXQg
PSAwOwotCXdoaWxlIChhdCA8IHRsZW4pIHsKLQkJaWYgKCh0bGVuIC0gYXQpIDwgKGludClDTVNH
X0FMSUdOKHNpemVvZihjbWgpKSkgeworCXRvdF9sZW4gPSBTQ1RQX0JVRl9MRU4oY29udHJvbCk7
CisJZm9yIChvZmYgPSAwOyBvZmYgPCB0b3RfbGVuOyBvZmYgKz0gQ01TR19BTElHTihjbWguY21z
Z19sZW4pKSB7CisJCXJlbV9sZW4gPSB0b3RfbGVuIC0gb2ZmOworCQlpZiAocmVtX2xlbiA8IChp
bnQpQ01TR19BTElHTihzaXplb2YoY21oKSkpIHsKIAkJCS8qIFRoZXJlIGlzIG5vdCBlbm91Z2gg
cm9vbSBmb3Igb25lIG1vcmUuICovCiAJCQkqZXJyb3IgPSBFSU5WQUw7CiAJCQlyZXR1cm4gKDEp
OwogCQl9Ci0JCW1fY29weWRhdGEoY29udHJvbCwgYXQsIHNpemVvZihjbWgpLCAoY2FkZHJfdCkm
Y21oKTsKKwkJbV9jb3B5ZGF0YShjb250cm9sLCBvZmYsIHNpemVvZihjbWgpLCAoY2FkZHJfdCkm
Y21oKTsKIAkJaWYgKGNtaC5jbXNnX2xlbiA8IENNU0dfQUxJR04oc2l6ZW9mKGNtaCkpKSB7CiAJ
CQkvKiBXZSBkb250J3QgaGF2ZSBhIGNvbXBsZXRlIENNU0cgaGVhZGVyLiAqLwogCQkJKmVycm9y
ID0gRUlOVkFMOwogCQkJcmV0dXJuICgxKTsKIAkJfQotCQlpZiAoKChpbnQpY21oLmNtc2dfbGVu
ICsgYXQpID4gdGxlbikgeworCQlpZiAoKGNtaC5jbXNnX2xlbiA+IElOVF9NQVgpIHx8ICgoaW50
KWNtaC5jbXNnX2xlbiA+IHJlbV9sZW4pKSB7CiAJCQkvKiBXZSBkb24ndCBoYXZlIHRoZSBjb21w
bGV0ZSBDTVNHLiAqLwogCQkJKmVycm9yID0gRUlOVkFMOwogCQkJcmV0dXJuICgxKTsKIAkJfQor
CQljbXNnX2RhdGFfbGVuID0gKGludCljbWguY21zZ19sZW4gLSBDTVNHX0FMSUdOKHNpemVvZihj
bWgpKTsKKwkJY21zZ19kYXRhX29mZiA9IG9mZiArIENNU0dfQUxJR04oc2l6ZW9mKGNtaCkpOwog
CQlpZiAoY21oLmNtc2dfbGV2ZWwgPT0gSVBQUk9UT19TQ1RQKSB7CiAJCQlzd2l0Y2ggKGNtaC5j
bXNnX3R5cGUpIHsKIAkJCWNhc2UgU0NUUF9JTklUOgotCQkJCWlmICgoc2l6ZV90KShjbWguY21z
Z19sZW4gLSBDTVNHX0FMSUdOKHNpemVvZihjbWgpKSkgPCBzaXplb2Yoc3RydWN0IHNjdHBfaW5p
dG1zZykpIHsKKwkJCQlpZiAoY21zZ19kYXRhX2xlbiA8IChpbnQpc2l6ZW9mKHN0cnVjdCBzY3Rw
X2luaXRtc2cpKSB7CiAJCQkJCSplcnJvciA9IEVJTlZBTDsKIAkJCQkJcmV0dXJuICgxKTsKIAkJ
CQl9Ci0JCQkJbV9jb3B5ZGF0YShjb250cm9sLCBhdCArIENNU0dfQUxJR04oc2l6ZW9mKGNtaCkp
LCBzaXplb2Yoc3RydWN0IHNjdHBfaW5pdG1zZyksIChjYWRkcl90KSZpbml0bXNnKTsKKwkJCQlt
X2NvcHlkYXRhKGNvbnRyb2wsIGNtc2dfZGF0YV9vZmYsIHNpemVvZihzdHJ1Y3Qgc2N0cF9pbml0
bXNnKSwgKGNhZGRyX3QpJmluaXRtc2cpOwogCQkJCWlmIChpbml0bXNnLnNpbml0X21heF9hdHRl
bXB0cykKIAkJCQkJc3RjYi0+YXNvYy5tYXhfaW5pdF90aW1lcyA9IGluaXRtc2cuc2luaXRfbWF4
X2F0dGVtcHRzOwogCQkJCWlmIChpbml0bXNnLnNpbml0X251bV9vc3RyZWFtcykKQEAgLTM3NjMs
NyArMzc3MCw3IEBAIHNjdHBfcHJvY2Vzc19jbXNnc19mb3JfaW5pdChzdHJ1Y3Qgc2N0cF90Y2Ig
KnN0Y2IsIHN0cnVjdCBtYnVmICpjb250cm9sLCBpbnQgKmVyCiAJCQkJYnJlYWs7CiAjaWZkZWYg
SU5FVAogCQkJY2FzZSBTQ1RQX0RTVEFERFJWNDoKLQkJCQlpZiAoKHNpemVfdCkoY21oLmNtc2df
bGVuIC0gQ01TR19BTElHTihzaXplb2YoY21oKSkpIDwgc2l6ZW9mKHN0cnVjdCBpbl9hZGRyKSkg
eworCQkJCWlmIChjbXNnX2RhdGFfbGVuIDwgKGludClzaXplb2Yoc3RydWN0IGluX2FkZHIpKSB7
CiAJCQkJCSplcnJvciA9IEVJTlZBTDsKIAkJCQkJcmV0dXJuICgxKTsKIAkJCQl9CkBAIC0zNzcz
LDcgKzM3ODAsNyBAQCBzY3RwX3Byb2Nlc3NfY21zZ3NfZm9yX2luaXQoc3RydWN0IHNjdHBfdGNi
ICpzdGNiLCBzdHJ1Y3QgbWJ1ZiAqY29udHJvbCwgaW50ICplcgogCQkJCXNpbi5zaW5fbGVuID0g
c2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7CiAjZW5kaWYKIAkJCQlzaW4uc2luX3BvcnQgPSBz
dGNiLT5ycG9ydDsKLQkJCQltX2NvcHlkYXRhKGNvbnRyb2wsIGF0ICsgQ01TR19BTElHTihzaXpl
b2YoY21oKSksIHNpemVvZihzdHJ1Y3QgaW5fYWRkciksIChjYWRkcl90KSZzaW4uc2luX2FkZHIp
OworCQkJCW1fY29weWRhdGEoY29udHJvbCwgY21zZ19kYXRhX29mZiwgc2l6ZW9mKHN0cnVjdCBp
bl9hZGRyKSwgKGNhZGRyX3QpJnNpbi5zaW5fYWRkcik7CiAJCQkJaWYgKChzaW4uc2luX2FkZHIu
c19hZGRyID09IElOQUREUl9BTlkpIHx8CiAJCQkJICAgIChzaW4uc2luX2FkZHIuc19hZGRyID09
IElOQUREUl9CUk9BRENBU1QpIHx8CiAJCQkJICAgIElOX01VTFRJQ0FTVChudG9obChzaW4uc2lu
X2FkZHIuc19hZGRyKSkpIHsKQEAgLTM3ODksNyArMzc5Niw3IEBAIHNjdHBfcHJvY2Vzc19jbXNn
c19mb3JfaW5pdChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBtYnVmICpjb250cm9sLCBp
bnQgKmVyCiAjZW5kaWYKICNpZmRlZiBJTkVUNgogCQkJY2FzZSBTQ1RQX0RTVEFERFJWNjoKLQkJ
CQlpZiAoKHNpemVfdCkoY21oLmNtc2dfbGVuIC0gQ01TR19BTElHTihzaXplb2YoY21oKSkpIDwg
c2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpIHsKKwkJCQlpZiAoY21zZ19kYXRhX2xlbiA8IChpbnQp
c2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpIHsKIAkJCQkJKmVycm9yID0gRUlOVkFMOwogCQkJCQly
ZXR1cm4gKDEpOwogCQkJCX0KQEAgLTM3OTksNyArMzgwNiw3IEBAIHNjdHBfcHJvY2Vzc19jbXNn
c19mb3JfaW5pdChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBtYnVmICpjb250cm9sLCBp
bnQgKmVyCiAJCQkJc2luNi5zaW42X2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KTsK
ICNlbmRpZgogCQkJCXNpbjYuc2luNl9wb3J0ID0gc3RjYi0+cnBvcnQ7Ci0JCQkJbV9jb3B5ZGF0
YShjb250cm9sLCBhdCArIENNU0dfQUxJR04oc2l6ZW9mKGNtaCkpLCBzaXplb2Yoc3RydWN0IGlu
Nl9hZGRyKSwgKGNhZGRyX3QpJnNpbjYuc2luNl9hZGRyKTsKKwkJCQltX2NvcHlkYXRhKGNvbnRy
b2wsIGNtc2dfZGF0YV9vZmYsIHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpLCAoY2FkZHJfdCkmc2lu
Ni5zaW42X2FkZHIpOwogCQkJCWlmIChJTjZfSVNfQUREUl9VTlNQRUNJRklFRCgmc2luNi5zaW42
X2FkZHIpIHx8CiAJCQkJICAgIElONl9JU19BRERSX01VTFRJQ0FTVCgmc2luNi5zaW42X2FkZHIp
KSB7CiAJCQkJCSplcnJvciA9IEVJTlZBTDsKQEAgLTM4MzIsMTEgKzM4MzksMTEgQEAgc2N0cF9w
cm9jZXNzX2Ntc2dzX2Zvcl9pbml0KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IG1idWYg
KmNvbnRyb2wsIGludCAqZXIKIAkJCQlicmVhazsKIAkJCX0KIAkJfQotCQlhdCArPSBDTVNHX0FM
SUdOKGNtaC5jbXNnX2xlbik7CiAJfQogCXJldHVybiAoMCk7CiB9CiAKKyNpZiBkZWZpbmVkKElO
RVQpIHx8IGRlZmluZWQoSU5FVDYpCiBzdGF0aWMgc3RydWN0IHNjdHBfdGNiICoKIHNjdHBfZmlu
ZGFzc29jaWF0aW9uX2Ntc2dzKHN0cnVjdCBzY3RwX2lucGNiICoqaW5wX3AsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50MTZfdCBwb3J0LApAQCAtMzg0NCwxMiArMzg1MSwxMSBAQCBz
Y3RwX2ZpbmRhc3NvY2lhdGlvbl9jbXNncyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqKmlucF9wLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNjdHBfbmV0cyAqKm5ldF9wLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50ICplcnJvcikKIHsKLSNpZiBkZWZpbmVkKF9fVXNlcnNw
YWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJV1NBQ01TR0hEUiBjbWg7CiAj
ZWxzZQogCXN0cnVjdCBjbXNnaGRyIGNtaDsKICNlbmRpZgotCWludCB0bGVuLCBhdDsKIAlzdHJ1
Y3Qgc2N0cF90Y2IgKnN0Y2I7CiAJc3RydWN0IHNvY2thZGRyICphZGRyOwogI2lmZGVmIElORVQK
QEAgLTM4NTgsMzEgKzM4NjQsMzQgQEAgc2N0cF9maW5kYXNzb2NpYXRpb25fY21zZ3Moc3RydWN0
IHNjdHBfaW5wY2IgKippbnBfcCwKICNpZmRlZiBJTkVUNgogCXN0cnVjdCBzb2NrYWRkcl9pbjYg
c2luNjsKICNlbmRpZgorCWludCB0b3RfbGVuLCByZW1fbGVuLCBjbXNnX2RhdGFfbGVuLCBjbXNn
X2RhdGFfb2ZmLCBvZmY7CiAKLQl0bGVuID0gU0NUUF9CVUZfTEVOKGNvbnRyb2wpOwotCWF0ID0g
MDsKLQl3aGlsZSAoYXQgPCB0bGVuKSB7Ci0JCWlmICgodGxlbiAtIGF0KSA8IChpbnQpQ01TR19B
TElHTihzaXplb2YoY21oKSkpIHsKKwl0b3RfbGVuID0gU0NUUF9CVUZfTEVOKGNvbnRyb2wpOwor
CWZvciAob2ZmID0gMDsgb2ZmIDwgdG90X2xlbjsgb2ZmICs9IENNU0dfQUxJR04oY21oLmNtc2df
bGVuKSkgeworCQlyZW1fbGVuID0gdG90X2xlbiAtIG9mZjsKKwkJaWYgKHJlbV9sZW4gPCAoaW50
KUNNU0dfQUxJR04oc2l6ZW9mKGNtaCkpKSB7CiAJCQkvKiBUaGVyZSBpcyBub3QgZW5vdWdoIHJv
b20gZm9yIG9uZSBtb3JlLiAqLwogCQkJKmVycm9yID0gRUlOVkFMOwogCQkJcmV0dXJuIChOVUxM
KTsKIAkJfQotCQltX2NvcHlkYXRhKGNvbnRyb2wsIGF0LCBzaXplb2YoY21oKSwgKGNhZGRyX3Qp
JmNtaCk7CisJCW1fY29weWRhdGEoY29udHJvbCwgb2ZmLCBzaXplb2YoY21oKSwgKGNhZGRyX3Qp
JmNtaCk7CiAJCWlmIChjbWguY21zZ19sZW4gPCBDTVNHX0FMSUdOKHNpemVvZihjbWgpKSkgewog
CQkJLyogV2UgZG9udCd0IGhhdmUgYSBjb21wbGV0ZSBDTVNHIGhlYWRlci4gKi8KIAkJCSplcnJv
ciA9IEVJTlZBTDsKIAkJCXJldHVybiAoTlVMTCk7CiAJCX0KLQkJaWYgKCgoaW50KWNtaC5jbXNn
X2xlbiArIGF0KSA+IHRsZW4pIHsKKwkJaWYgKChjbWguY21zZ19sZW4gPiBJTlRfTUFYKSB8fCAo
KGludCljbWguY21zZ19sZW4gPiByZW1fbGVuKSkgewogCQkJLyogV2UgZG9uJ3QgaGF2ZSB0aGUg
Y29tcGxldGUgQ01TRy4gKi8KIAkJCSplcnJvciA9IEVJTlZBTDsKIAkJCXJldHVybiAoTlVMTCk7
CiAJCX0KKwkJY21zZ19kYXRhX2xlbiA9IChpbnQpY21oLmNtc2dfbGVuIC0gQ01TR19BTElHTihz
aXplb2YoY21oKSk7CisJCWNtc2dfZGF0YV9vZmYgPSBvZmYgKyBDTVNHX0FMSUdOKHNpemVvZihj
bWgpKTsKIAkJaWYgKGNtaC5jbXNnX2xldmVsID09IElQUFJPVE9fU0NUUCkgewogCQkJc3dpdGNo
IChjbWguY21zZ190eXBlKSB7CiAjaWZkZWYgSU5FVAogCQkJY2FzZSBTQ1RQX0RTVEFERFJWNDoK
LQkJCQlpZiAoKHNpemVfdCkoY21oLmNtc2dfbGVuIC0gQ01TR19BTElHTihzaXplb2YoY21oKSkp
IDwgc2l6ZW9mKHN0cnVjdCBpbl9hZGRyKSkgeworCQkJCWlmIChjbXNnX2RhdGFfbGVuIDwgKGlu
dClzaXplb2Yoc3RydWN0IGluX2FkZHIpKSB7CiAJCQkJCSplcnJvciA9IEVJTlZBTDsKIAkJCQkJ
cmV0dXJuIChOVUxMKTsKIAkJCQl9CkBAIC0zODkyLDEzICszOTAxLDEzIEBAIHNjdHBfZmluZGFz
c29jaWF0aW9uX2Ntc2dzKHN0cnVjdCBzY3RwX2lucGNiICoqaW5wX3AsCiAJCQkJc2luLnNpbl9s
ZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKTsKICNlbmRpZgogCQkJCXNpbi5zaW5fcG9y
dCA9IHBvcnQ7Ci0JCQkJbV9jb3B5ZGF0YShjb250cm9sLCBhdCArIENNU0dfQUxJR04oc2l6ZW9m
KGNtaCkpLCBzaXplb2Yoc3RydWN0IGluX2FkZHIpLCAoY2FkZHJfdCkmc2luLnNpbl9hZGRyKTsK
KwkJCQltX2NvcHlkYXRhKGNvbnRyb2wsIGNtc2dfZGF0YV9vZmYsIHNpemVvZihzdHJ1Y3QgaW5f
YWRkciksIChjYWRkcl90KSZzaW4uc2luX2FkZHIpOwogCQkJCWFkZHIgPSAoc3RydWN0IHNvY2th
ZGRyICopJnNpbjsKIAkJCQlicmVhazsKICNlbmRpZgogI2lmZGVmIElORVQ2CiAJCQljYXNlIFND
VFBfRFNUQUREUlY2OgotCQkJCWlmICgoc2l6ZV90KShjbWguY21zZ19sZW4gLSBDTVNHX0FMSUdO
KHNpemVvZihjbWgpKSkgPCBzaXplb2Yoc3RydWN0IGluNl9hZGRyKSkgeworCQkJCWlmIChjbXNn
X2RhdGFfbGVuIDwgKGludClzaXplb2Yoc3RydWN0IGluNl9hZGRyKSkgewogCQkJCQkqZXJyb3Ig
PSBFSU5WQUw7CiAJCQkJCXJldHVybiAoTlVMTCk7CiAJCQkJfQpAQCAtMzkwOCw3ICszOTE3LDcg
QEAgc2N0cF9maW5kYXNzb2NpYXRpb25fY21zZ3Moc3RydWN0IHNjdHBfaW5wY2IgKippbnBfcCwK
IAkJCQlzaW42LnNpbjZfbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpOwogI2VuZGlm
CiAJCQkJc2luNi5zaW42X3BvcnQgPSBwb3J0OwotCQkJCW1fY29weWRhdGEoY29udHJvbCwgYXQg
KyBDTVNHX0FMSUdOKHNpemVvZihjbWgpKSwgc2l6ZW9mKHN0cnVjdCBpbjZfYWRkciksIChjYWRk
cl90KSZzaW42LnNpbjZfYWRkcik7CisJCQkJbV9jb3B5ZGF0YShjb250cm9sLCBjbXNnX2RhdGFf
b2ZmLCBzaXplb2Yoc3RydWN0IGluNl9hZGRyKSwgKGNhZGRyX3QpJnNpbjYuc2luNl9hZGRyKTsK
ICNpZmRlZiBJTkVUCiAJCQkJaWYgKElONl9JU19BRERSX1Y0TUFQUEVEKCZzaW42LnNpbjZfYWRk
cikpIHsKIAkJCQkJaW42X3NpbjZfMl9zaW4oJnNpbiwgJnNpbjYpOwpAQCAtMzkyOSwxMCArMzkz
OCwxMCBAQCBzY3RwX2ZpbmRhc3NvY2lhdGlvbl9jbXNncyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqKmlu
cF9wLAogCQkJCX0KIAkJCX0KIAkJfQotCQlhdCArPSBDTVNHX0FMSUdOKGNtaC5jbXNnX2xlbik7
CiAJfQogCXJldHVybiAoTlVMTCk7CiB9CisjZW5kaWYKIAogc3RhdGljIHN0cnVjdCBtYnVmICoK
IHNjdHBfYWRkX2Nvb2tpZShzdHJ1Y3QgbWJ1ZiAqaW5pdCwgaW50IGluaXRfb2Zmc2V0LApAQCAt
Mzk0MSw4ICszOTUwLDYgQEAgc2N0cF9hZGRfY29va2llKHN0cnVjdCBtYnVmICppbml0LCBpbnQg
aW5pdF9vZmZzZXQsCiAJc3RydWN0IG1idWYgKmNvcHlfaW5pdCwgKmNvcHlfaW5pdGFjaywgKm1f
YXQsICpzaWcsICptcmV0OwogCXN0cnVjdCBzY3RwX3N0YXRlX2Nvb2tpZSAqc3RjOwogCXN0cnVj
dCBzY3RwX3BhcmFtaGRyICpwaDsKLQl1aW50OF90ICpmb287Ci0JaW50IHNpZ19vZmZzZXQ7CiAJ
dWludDE2X3QgY29va2llX3N6OwogCiAJbXJldCA9IHNjdHBfZ2V0X21idWZfZm9yX21zZygoc2l6
ZW9mKHN0cnVjdCBzY3RwX3N0YXRlX2Nvb2tpZSkgKwpAQCAtNDAwNiwyNSArNDAxMywyMSBAQCBz
Y3RwX2FkZF9jb29raWUoc3RydWN0IG1idWYgKmluaXQsIGludCBpbml0X29mZnNldCwKIAkJCWJy
ZWFrOwogCQl9CiAJfQotCXNpZyA9IHNjdHBfZ2V0X21idWZfZm9yX21zZyhTQ1RQX1NFQ1JFVF9T
SVpFLCAwLCBNX05PV0FJVCwgMSwgTVRfREFUQSk7CisJc2lnID0gc2N0cF9nZXRfbWJ1Zl9mb3Jf
bXNnKFNDVFBfU0lHTkFUVVJFX1NJWkUsIDAsIE1fTk9XQUlULCAxLCBNVF9EQVRBKTsKIAlpZiAo
c2lnID09IE5VTEwpIHsKIAkJLyogbm8gc3BhY2UsIHNvIGZyZWUgdGhlIGVudGlyZSBjaGFpbiAq
LwogCQlzY3RwX21fZnJlZW0obXJldCk7CiAJCXJldHVybiAoTlVMTCk7CiAJfQotCVNDVFBfQlVG
X0xFTihzaWcpID0gMDsKIAlTQ1RQX0JVRl9ORVhUKG1fYXQpID0gc2lnOwotCXNpZ19vZmZzZXQg
PSAwOwotCWZvbyA9ICh1aW50OF90ICopIChtdG9kKHNpZywgY2FkZHJfdCkgKyBzaWdfb2Zmc2V0
KTsKLQltZW1zZXQoZm9vLCAwLCBTQ1RQX1NJR05BVFVSRV9TSVpFKTsKLQkqc2lnbmF0dXJlID0g
Zm9vOwotCVNDVFBfQlVGX0xFTihzaWcpICs9IFNDVFBfU0lHTkFUVVJFX1NJWkU7CisJU0NUUF9C
VUZfTEVOKHNpZykgPSBTQ1RQX1NJR05BVFVSRV9TSVpFOwogCWNvb2tpZV9zeiArPSBTQ1RQX1NJ
R05BVFVSRV9TSVpFOwogCXBoLT5wYXJhbV9sZW5ndGggPSBodG9ucyhjb29raWVfc3opOworCSpz
aWduYXR1cmUgPSAodWludDhfdCAqKW10b2Qoc2lnLCBjYWRkcl90KTsKKwltZW1zZXQoKnNpZ25h
dHVyZSwgMCwgU0NUUF9TSUdOQVRVUkVfU0laRSk7CiAJcmV0dXJuIChtcmV0KTsKIH0KIAotCiBz
dGF0aWMgdWludDhfdAogc2N0cF9nZXRfZWN0KHN0cnVjdCBzY3RwX3RjYiAqc3RjYikKIHsKQEAg
LTQwOTgsMTUgKzQxMDEsMTAgQEAgc2N0cF9sb3dsZXZlbF9jaHVua19vdXRwdXQoc3RydWN0IHNj
dHBfaW5wY2IgKmlucCwKICAgICB1aW50MzJfdCB2X3RhZywKICAgICB1aW50MTZfdCBwb3J0LAog
ICAgIHVuaW9uIHNjdHBfc29ja3N0b3JlICpvdmVyX2FkZHIsCi0jaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogICAgIHVpbnQ4X3QgbWZsb3d0eXBlLCB1aW50MzJfdCBtZmxvd2lkLAogI2VuZGlmCi0jaWYg
IWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKLSAg
ICBpbnQgc29fbG9ja2VkIFNDVFBfVU5VU0VECi0jZWxzZQotICAgIGludCBzb19sb2NrZWQKLSNl
bmRpZgotICAgICkKK2ludCBzb19sb2NrZWQpCiAvKiBub2ZyYWdtZW50X2ZsYWcgdG8gdGVsbCBp
ZiBJUF9ERiBzaG91bGQgYmUgc2V0IChJUHY0IG9ubHkpICovCiB7CiAJLyoqCkBAIC00MTIyLDkg
KzQxMjAsNiBAQCBzY3RwX2xvd2xldmVsX2NodW5rX291dHB1dChzdHJ1Y3Qgc2N0cF9pbnBjYiAq
aW5wLAogCSAqICAgaW50ZXJmYWNlIGFuZCBzbWFsbGVzdF9tdHUgc2l6ZSBhcyB3ZWxsLgogCSAq
LwogCS8qIFdpbGwgbmVlZCBpZmRlZnMgYXJvdW5kIHRoaXMgKi8KLSNpZmRlZiBfX1BhbmRhX18K
LQlwYWtoYW5kbGVfdHlwZSBvX3BhazsKLSNlbmRpZgogCXN0cnVjdCBtYnVmICpuZXdtOwogCXN0
cnVjdCBzY3RwaGRyICpzY3RwaGRyOwogCWludCBwYWNrZXRfbGVuZ3RoOwpAQCAtNDEzMywxOCAr
NDEyOCwxNiBAQCBzY3RwX2xvd2xldmVsX2NodW5rX291dHB1dChzdHJ1Y3Qgc2N0cF9pbnBjYiAq
aW5wLAogCXVpbnQzMl90IHZyZl9pZDsKICNlbmRpZgogI2lmIGRlZmluZWQoSU5FVCkgfHwgZGVm
aW5lZChJTkVUNikKLSNpZiAhZGVmaW5lZChfX1BhbmRhX18pCiAJc3RydWN0IG1idWYgKm9fcGFr
OwotI2VuZGlmCiAJc2N0cF9yb3V0ZV90ICpybyA9IE5VTEw7CiAJc3RydWN0IHVkcGhkciAqdWRw
ID0gTlVMTDsKICNlbmRpZgogCXVpbnQ4X3QgdG9zX3ZhbHVlOwotI2lmIGRlZmluZWQoX19BUFBM
RV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBM
RV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCXN0cnVjdCBzb2NrZXQgKnNvID0gTlVM
TDsKICNlbmRpZgogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExF
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJaWYgKHNvX2xvY2tlZCkgewogCQlzY3Rw
X2xvY2tfYXNzZXJ0KFNDVFBfSU5QX1NPKGlucCkpOwogCQlTQ1RQX1RDQl9MT0NLX0FTU0VSVChz
dGNiKTsKQEAgLTQxOTksNyArNDE5Miw3IEBAIHNjdHBfbG93bGV2ZWxfY2h1bmtfb3V0cHV0KHN0
cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCVNDVFBfQlVGX0xFTihuZXdtKSA9IGxlbjsKIAkJU0NU
UF9CVUZfTkVYVChuZXdtKSA9IG07CiAJCW0gPSBuZXdtOwotI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
IAkJaWYgKG5ldCAhPSBOVUxMKSB7CiAJCQltLT5tX3BrdGhkci5mbG93aWQgPSBuZXQtPmZsb3dp
ZDsKIAkJCU1fSEFTSFRZUEVfU0VUKG0sIG5ldC0+Zmxvd3R5cGUpOwpAQCAtNDIxNywzNiArNDIx
MCwzMCBAQCBzY3RwX2xvd2xldmVsX2NodW5rX291dHB1dChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5w
LAogCQkJICogVGhpcyBtZWFucyBlc3BlY2lhbGx5LCB0aGF0IGl0IGlzIG5vdCBzZXQgYXQgdGhl
CiAJCQkgKiBTQ1RQIGxheWVyLiBTbyB1c2UgdGhlIHZhbHVlIGZyb20gdGhlIElQIGxheWVyLgog
CQkJICovCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8
IGRlZmluZWQoX19QYW5kYV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKSB8fCBkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAJCQl0b3NfdmFsdWUgPSBpbnAtPmlwX2lucC5pbnAuaW5wX2lwX3RvczsK
LSNlbHNlCi0JCQl0b3NfdmFsdWUgPSBpbnAtPmlucF9pcF90b3M7Ci0jZW5kaWYKIAkJfQogCQl0
b3NfdmFsdWUgJj0gMHhmYzsKIAkJaWYgKGVjbl9vaykgewogCQkJdG9zX3ZhbHVlIHw9IHNjdHBf
Z2V0X2VjdChzdGNiKTsKIAkJfQogCQlpZiAoKG5vZnJhZ21lbnRfZmxhZykgJiYgKHBvcnQgPT0g
MCkpIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQotI2lmIF9fRnJlZUJTRF92ZXJzaW9uID49
IDEwMDAwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogCQkJaXAtPmlwX29mZiA9IGh0b25zKElQX0RGKTsKLSNlbHNlCi0JCQlpcC0+aXBfb2Zm
ID0gSVBfREY7Ci0jZW5kaWYKLSNlbGlmIGRlZmluZWQoV0lUSF9DT05WRVJUX0lQX09GRikgfHwg
ZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRGFyd2luKQorI2Vs
aWYgZGVmaW5lZChXSVRIX0NPTlZFUlRfSVBfT0ZGKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykKIAkJ
CWlwLT5pcF9vZmYgPSBJUF9ERjsKICNlbHNlCiAJCQlpcC0+aXBfb2ZmID0gaHRvbnMoSVBfREYp
OwogI2VuZGlmCiAJCX0gZWxzZSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVl
QlNEX3ZlcnNpb24gPj0gMTAwMDAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAJCQlpcC0+aXBfb2ZmID0gaHRvbnMoMCk7CiAjZWxzZQogCQkJ
aXAtPmlwX29mZiA9IDA7CiAjZW5kaWYKIAkJfQotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisj
aWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQlpcC0+aXBfaWQgPSBodG9ucyhTQ1RQX0lQX0lE
KGlucCkrKyk7CisjZWxpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQogCQkvKiBGcmVlQlNEIGhhcyBh
IGZ1bmN0aW9uIGZvciBpcF9pZCdzICovCiAJCWlwX2ZpbGxpZChpcCk7CiAjZWxpZiBkZWZpbmVk
KF9fQVBQTEVfXykKQEAgLTQyNTUsMTggKzQyNDIsMTIgQEAgc2N0cF9sb3dsZXZlbF9jaHVua19v
dXRwdXQoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKICNlbHNlCiAJCWlwLT5pcF9pZCA9IGh0b25z
KGlwX2lkKyspOwogI2VuZGlmCi0jZWxpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi0JCWlwLT5p
cF9pZCA9IGh0b25zKFNDVFBfSVBfSUQoaW5wKSsrKTsKICNlbHNlCiAJCWlwLT5pcF9pZCA9IFND
VFBfSVBfSUQoaW5wKSsrOwogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBk
ZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1BhbmRhX18pIHx8IGRlZmluZWQoX19XaW5k
b3dzX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJaXAtPmlwX3R0bCA9IGlucC0+aXBf
aW5wLmlucC5pbnBfaXBfdHRsOwotI2Vsc2UKLQkJaXAtPmlwX3R0bCA9IGlucC0+aW5wX2lwX3R0
bDsKLSNlbmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9u
ID49IDEwMDAwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCQlpcC0+aXBfbGVuID0gaHRvbnMocGFja2V0X2xlbmd0aCk7CiAjZWxzZQogCQlp
cC0+aXBfbGVuID0gcGFja2V0X2xlbmd0aDsKQEAgLTQyOTgsMTAgKzQyNzksMTQgQEAgc2N0cF9s
b3dsZXZlbF9jaHVua19vdXRwdXQoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJCQlzY3RwX2Zy
ZWVfaWZhKG5ldC0+cm8uX3NfYWRkcik7CiAJCQkJbmV0LT5yby5fc19hZGRyID0gTlVMTDsKIAkJ
CQluZXQtPnNyY19hZGRyX3NlbGVjdGVkID0gMDsKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQkJCVJPX05IRlJFRShybyk7CisjZWxzZQogCQkJ
CWlmIChyby0+cm9fcnQpIHsKIAkJCQkJUlRGUkVFKHJvLT5yb19ydCk7CiAJCQkJCXJvLT5yb19y
dCA9IE5VTEw7CiAJCQkJfQorI2VuZGlmCiAJCQl9CiAJCQlpZiAobmV0LT5zcmNfYWRkcl9zZWxl
Y3RlZCA9PSAwKSB7CiAJCQkJLyogQ2FjaGUgdGhlIHNvdXJjZSBhZGRyZXNzICovCkBAIC00MzUx
LDggKzQzMzYsOCBAQCBzY3RwX2xvd2xldmVsX2NodW5rX291dHB1dChzdHJ1Y3Qgc2N0cF9pbnBj
YiAqaW5wLAogCQkJdWRwLT51aF9zcG9ydCA9IGh0b25zKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF91
ZHBfdHVubmVsaW5nX3BvcnQpKTsKIAkJCXVkcC0+dWhfZHBvcnQgPSBwb3J0OwogCQkJdWRwLT51
aF91bGVuID0gaHRvbnMoKHVpbnQxNl90KShwYWNrZXRfbGVuZ3RoIC0gc2l6ZW9mKHN0cnVjdCBp
cCkpKTsKLSNpZiAhZGVmaW5lZChfX1dpbmRvd3NfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAoKF9fRnJlZUJTRF92ZXJzaW9uID4gODAz
MDAwICYmIF9fRnJlZUJTRF92ZXJzaW9uIDwgOTAwMDAwKSB8fCBfX0ZyZWVCU0RfdmVyc2lvbiA+
IDkwMDAwMCkKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pCiAJCQlpZiAoVl91ZHBfY2tzdW0pIHsKIAkJCQl1ZHAtPnVoX3N1bSA9IGluX3BzZXVk
byhpcC0+aXBfc3JjLnNfYWRkciwgaXAtPmlwX2RzdC5zX2FkZHIsIHVkcC0+dWhfdWxlbiArIGh0
b25zKElQUFJPVE9fVURQKSk7CiAJCQl9IGVsc2UgewpAQCAtNDM4MSw3ICs0MzY2LDExIEBAIHNj
dHBfbG93bGV2ZWxfY2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCSAqIHRo
YXQgc29tZXdoZXJlIGFuZCBhYm9ydCB0aGUgYXNzb2NpYXRpb24gcmlnaHQgYXdheQogCQkgKiAo
YXNzdW1pbmcgdGhpcyBpcyBhbiBJTklUIGJlaW5nIHNlbnQpLgogCQkgKi8KKyNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQlpZiAocm8tPnJvX25o
ID09IE5VTEwpIHsKKyNlbHNlCiAJCWlmIChyby0+cm9fcnQgPT0gTlVMTCkgeworI2VuZGlmCiAJ
CQkvKgogCQkJICogc3JjIGFkZHIgc2VsZWN0aW9uIGZhaWxlZCB0byBmaW5kIGEgcm91dGUgKG9y
CiAJCQkgKiB2YWxpZCBzb3VyY2UgYWRkciksIHNvIHdlIGNhbid0IGdldCB0aGVyZSBmcm9tCkBA
IC00Mzk5LDggKzQzODgsMTMgQEAgc2N0cF9sb3dsZXZlbF9jaHVua19vdXRwdXQoc3RydWN0IHNj
dHBfaW5wY2IgKmlucCwKIAkJCSh1aW50MzJfdCkgKG50b2hsKGlwLT5pcF9zcmMuc19hZGRyKSkp
OwogCQlTQ1RQREJHKFNDVFBfREVCVUdfT1VUUFVUMywgIkRlc3RpbmF0aW9uIGlzICV4XG4iLAog
CQkJKHVpbnQzMl90KShudG9obChpcC0+aXBfZHN0LnNfYWRkcikpKTsKKyNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQlTQ1RQREJHKFNDVFBfREVC
VUdfT1VUUFVUMywgIlJUUCByb3V0ZSBpcyAlcCB0aHJvdWdoXG4iLAorCQkJKHZvaWQgKilyby0+
cm9fbmgpOworI2Vsc2UKIAkJU0NUUERCRyhTQ1RQX0RFQlVHX09VVFBVVDMsICJSVFAgcm91dGUg
aXMgJXAgdGhyb3VnaFxuIiwKIAkJCSh2b2lkICopcm8tPnJvX3J0KTsKKyNlbmRpZgogCiAJCWlm
IChTQ1RQX0dFVF9IRUFERVJfRk9SX09VVFBVVChvX3BhaykpIHsKIAkJCS8qIGZhaWxlZCB0byBw
cmVwZW5kIGRhdGEsIGdpdmUgdXAgKi8KQEAgLTQ0MTIsOCArNDQwNiw4IEBAIHNjdHBfbG93bGV2
ZWxfY2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCWlmIChwb3J0KSB7CiAJ
CQlzY3RwaGRyLT5jaGVja3N1bSA9IHNjdHBfY2FsY3VsYXRlX2Nrc3VtKG0sIHNpemVvZihzdHJ1
Y3QgaXApICsgc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpKTsKIAkJCVNDVFBfU1RBVF9JTkNSKHNjdHBz
X3NlbmRzd2NyYyk7Ci0jaWYgIWRlZmluZWQoX19XaW5kb3dzX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgKChfX0ZyZWVCU0RfdmVyc2lv
biA+IDgwMzAwMCAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA8IDkwMDAwMCkgfHwgX19GcmVlQlNEX3Zl
cnNpb24gPiA5MDAwMDApCisjaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKQogCQkJaWYgKFZfdWRwX2Nrc3VtKSB7CiAJCQkJU0NUUF9FTkFCTEVfVURQ
X0NTVU0ob19wYWspOwogCQkJfQpAQCAtNDQyMiw3ICs0NDE2LDcgQEAgc2N0cF9sb3dsZXZlbF9j
aHVua19vdXRwdXQoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKICNlbmRpZgogI2VuZGlmCiAJCX0g
ZWxzZSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0g
ODAwMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKIAkJCW0tPm1fcGt0aGRyLmNzdW1fZmxhZ3MgPSBDU1VNX1NDVFA7CiAJCQltLT5tX3BrdGhk
ci5jc3VtX2RhdGEgPSBvZmZzZXRvZihzdHJ1Y3Qgc2N0cGhkciwgY2hlY2tzdW0pOwogCQkJU0NU
UF9TVEFUX0lOQ1Ioc2N0cHNfc2VuZGh3Y3JjKTsKQEAgLTQ0NDEsMTQgKzQ0MzUsMTcgQEAgc2N0
cF9sb3dsZXZlbF9jaHVua19vdXRwdXQoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJCXNjdHBf
cGFja2V0X2xvZyhvX3Bhayk7CiAjZW5kaWYKIAkJLyogc2VuZCBpdCBvdXQuICB0YWJsZSBpZCBp
cyB0YWtlbiBmcm9tIHN0Y2IgKi8KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChT
Q1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKIAkJaWYgKChTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfb3V0cHV0X3VubG9j
a2VkKSkgJiYgKHNvX2xvY2tlZCkpIHsKIAkJCXNvID0gU0NUUF9JTlBfU08oaW5wKTsKIAkJCVND
VFBfU09DS0VUX1VOTE9DSyhzbywgMCk7CiAJCX0KKyNlbmRpZgorI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCVNDVFBfUFJPQkU1KHNlbmQsIE5V
TEwsIHN0Y2IsIGlwLCBzdGNiLCBzY3RwaGRyKTsKICNlbmRpZgogCQlTQ1RQX0lQX09VVFBVVChy
ZXQsIG9fcGFrLCBybywgc3RjYiwgdnJmX2lkKTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwg
ZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJaWYgKChTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfb3V0
cHV0X3VubG9ja2VkKSkgJiYgKHNvX2xvY2tlZCkpIHsKIAkJCWF0b21pY19hZGRfaW50KCZzdGNi
LT5hc29jLnJlZmNudCwgMSk7CiAJCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CkBAIC00NDU2LDYg
KzQ0NTMsMTEgQEAgc2N0cF9sb3dsZXZlbF9jaHVua19vdXRwdXQoc3RydWN0IHNjdHBfaW5wY2Ig
KmlucCwKIAkJCVNDVFBfVENCX0xPQ0soc3RjYik7CiAJCQlhdG9taWNfc3VidHJhY3RfaW50KCZz
dGNiLT5hc29jLnJlZmNudCwgMSk7CiAJCX0KKyNlbmRpZgorI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCWlmIChwb3J0KSB7CisJCQlVRFBTVEFU
X0lOQyh1ZHBzX29wYWNrZXRzKTsKKwkJfQogI2VuZGlmCiAJCVNDVFBfU1RBVF9JTkNSKHNjdHBz
X3NlbmRwYWNrZXRzKTsKIAkJU0NUUF9TVEFUX0lOQ1JfQ09VTlRFUjY0KHNjdHBzX291dHBhY2tl
dHMpOwpAQCAtNDQ2NSw4ICs0NDY3LDggQEAgc2N0cF9sb3dsZXZlbF9jaHVua19vdXRwdXQoc3Ry
dWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJU0NUUERCRyhTQ1RQX0RFQlVHX09VVFBVVDMsICJJUCBv
dXRwdXQgcmV0dXJucyAlZFxuIiwgcmV0KTsKIAkJaWYgKG5ldCA9PSBOVUxMKSB7CiAJCQkvKiBm
cmVlIHRlbXB5IHJvdXRlcyAqLwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJT
RF92ZXJzaW9uID4gOTAxMDAwCi0JCQlST19SVEZSRUUocm8pOworI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQlST19OSEZSRUUocm8pOwogI2Vs
c2UKIAkJCWlmIChyby0+cm9fcnQpIHsKIAkJCQlSVEZSRUUocm8tPnJvX3J0KTsKQEAgLTQ0NzQs
MjEgKzQ0NzYsMzUgQEAgc2N0cF9sb3dsZXZlbF9jaHVua19vdXRwdXQoc3RydWN0IHNjdHBfaW5w
Y2IgKmlucCwKIAkJCX0KICNlbmRpZgogCQl9IGVsc2UgeworI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQlpZiAoKHJvLT5yb19uaCAhPSBOVUxM
KSAmJiAobmV0LT5yby5fc19hZGRyKSAmJgorI2Vsc2UKIAkJCWlmICgocm8tPnJvX3J0ICE9IE5V
TEwpICYmIChuZXQtPnJvLl9zX2FkZHIpICYmCisjZW5kaWYKIAkJCSAgICAoKG5ldC0+ZGVzdF9z
dGF0ZSAmIFNDVFBfQUREUl9OT19QTVRVRCkgPT0gMCkpIHsKIAkJCQl1aW50MzJfdCBtdHU7CiAK
KyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQkJ
CW10dSA9IFNDVFBfR0FUSEVSX01UVV9GUk9NX1JPVVRFKG5ldC0+cm8uX3NfYWRkciwgJm5ldC0+
cm8uX2xfYWRkci5zYSwgcm8tPnJvX25oKTsKKyNlbHNlCiAJCQkJbXR1ID0gU0NUUF9HQVRIRVJf
TVRVX0ZST01fUk9VVEUobmV0LT5yby5fc19hZGRyLCAmbmV0LT5yby5fbF9hZGRyLnNhLCByby0+
cm9fcnQpOworI2VuZGlmCiAJCQkJaWYgKG10dSA+IDApIHsKIAkJCQkJaWYgKG5ldC0+cG9ydCkg
ewogCQkJCQkJbXR1IC09IHNpemVvZihzdHJ1Y3QgdWRwaGRyKTsKIAkJCQkJfQotCQkJCQlpZiAo
KHN0Y2IgIT0gTlVMTCkgJiYgKHN0Y2ItPmFzb2Muc21hbGxlc3RfbXR1ID4gbXR1KSkgewotCQkJ
CQkJc2N0cF9tdHVfc2l6ZV9yZXNldChpbnAsICZzdGNiLT5hc29jLCBtdHUpOworCQkJCQlpZiAo
bXR1IDwgbmV0LT5tdHUpIHsKKwkJCQkJCWlmICgoc3RjYiAhPSBOVUxMKSAmJiAoc3RjYi0+YXNv
Yy5zbWFsbGVzdF9tdHUgPiBtdHUpKSB7CisJCQkJCQkJc2N0cF9tdHVfc2l6ZV9yZXNldChpbnAs
ICZzdGNiLT5hc29jLCBtdHUpOworCQkJCQkJfQorCQkJCQkJbmV0LT5tdHUgPSBtdHU7CiAJCQkJ
CX0KLQkJCQkJbmV0LT5tdHUgPSBtdHU7CiAJCQkJfQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQl9IGVsc2UgaWYgKHJvLT5yb19uaCA9PSBO
VUxMKSB7CisjZWxzZQogCQkJfSBlbHNlIGlmIChyby0+cm9fcnQgPT0gTlVMTCkgeworI2VuZGlm
CiAJCQkJLyogcm91dGUgd2FzIGZyZWVkICovCiAJCQkJaWYgKG5ldC0+cm8uX3NfYWRkciAmJgog
CQkJCSAgICBuZXQtPnNyY19hZGRyX3NlbGVjdGVkKSB7CkBAIC00NTA3LDcgKzQ1MjMsNyBAQCBz
Y3RwX2xvd2xldmVsX2NodW5rX291dHB1dChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogCQl1aW50
MzJfdCBmbG93bGFiZWwsIGZsb3dpbmZvOwogCQlzdHJ1Y3QgaXA2X2hkciAqaXA2aDsKIAkJc3Ry
dWN0IHJvdXRlX2luNiBpcDZyb3V0ZTsKLSNpZiAhKGRlZmluZWQoX19QYW5kYV9fKSB8fCBkZWZp
bmVkKF9fVXNlcnNwYWNlX18pKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCXN0cnVj
dCBpZm5ldCAqaWZwOwogI2VuZGlmCiAJCXN0cnVjdCBzb2NrYWRkcl9pbjYgKnNpbjYsIHRtcCwg
KmxzYTYsIGxzYTZfdG1wOwpAQCAtNDUzMSwxMCArNDU0NywxMCBAQCBzY3RwX2xvd2xldmVsX2No
dW5rX291dHB1dChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogCQkJICogVGhpcyBtZWFucyBlc3Bl
Y2lhbGx5LCB0aGF0IGl0IGlzIG5vdCBzZXQgYXQgdGhlCiAJCQkgKiBTQ1RQIGxheWVyLiBTbyB1
c2UgdGhlIHZhbHVlIGZyb20gdGhlIElQIGxheWVyLgogCQkJICovCi0jaWYgZGVmaW5lZChfX0FQ
UExFX18pICYmICghZGVmaW5lZChBUFBMRV9MRU9QQVJEKSAmJiAhZGVmaW5lZChBUFBMRV9TTk9X
TEVPUEFSRCkgJiYgIWRlZmluZWQoQVBQTEVfTElPTikgJiYgIWRlZmluZWQoQVBQTEVfTU9VTlRB
SU5MSU9OKSkKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pICYmICghZGVmaW5lZChBUFBMRV9MRU9QQVJEKSAmJiAhZGVmaW5lZChBUFBMRV9TTk9XTEVP
UEFSRCkgJiYgIWRlZmluZWQoQVBQTEVfTElPTikgJiYgIWRlZmluZWQoQVBQTEVfTU9VTlRBSU5M
SU9OKSkKIAkJCWZsb3dsYWJlbCA9IG50b2hsKGlucC0+aXBfaW5wLmlucC5pbnBfZmxvdyk7CiAj
ZWxzZQotCQkJZmxvd2xhYmVsID0gbnRvaGwoKChzdHJ1Y3QgaW42cGNiICopaW5wKS0+aW42cF9m
bG93aW5mbyk7CisJCQlmbG93bGFiZWwgPSBudG9obCgoKHN0cnVjdCBpbnBjYiAqKWlucCktPmlu
cF9mbG93KTsKICNlbmRpZgogCQl9CiAJCWZsb3dsYWJlbCAmPSAweDAwMGZmZmZmOwpAQCAtNDU1
Miw3ICs0NTY4LDcgQEAgc2N0cF9sb3dsZXZlbF9jaHVua19vdXRwdXQoc3RydWN0IHNjdHBfaW5w
Y2IgKmlucCwKIAkJU0NUUF9CVUZfTEVOKG5ld20pID0gbGVuOwogCQlTQ1RQX0JVRl9ORVhUKG5l
d20pID0gbTsKIAkJbSA9IG5ld207Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlpZiAobmV0ICE9
IE5VTEwpIHsKIAkJCW0tPm1fcGt0aGRyLmZsb3dpZCA9IG5ldC0+Zmxvd2lkOwogCQkJTV9IQVNI
VFlQRV9TRVQobSwgbmV0LT5mbG93dHlwZSk7CkBAIC00NTcxLDcgKzQ1ODcsNyBAQCBzY3RwX2xv
d2xldmVsX2NodW5rX291dHB1dChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogCiAjaWZkZWYgU0NU
UF9FTUJFRERFRF9WNl9TQ09QRQogCQkvKiBLQU1FIGhhY2s6IGVtYmVkIHNjb3BlaWQgKi8KLSNp
ZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKICNpZiBkZWZpbmVkKEFQUExFX0xFT1BBUkQpIHx8IGRlZmluZWQoQVBQ
TEVfU05PV0xFT1BBUkQpCiAJCWlmIChpbjZfZW1iZWRzY29wZSgmc2luNi0+c2luNl9hZGRyLCBz
aW42LCBOVUxMLCBOVUxMKSAhPSAwKQogI2Vsc2UKQEAgLTQ1ODQsNiArNDYwMCw3IEBAIHNjdHBf
bG93bGV2ZWxfY2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAjZW5kaWYKIAkJ
ewogCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVF9QS1QobSwgaW5wLCBzdGNiLCBuZXQsIFNDVFBfRlJP
TV9TQ1RQX09VVFBVVCwgRUlOVkFMKTsKKwkJCXNjdHBfbV9mcmVlbShtKTsKIAkJCXJldHVybiAo
RUlOVkFMKTsKIAkJfQogI2VuZGlmIC8qIFNDVFBfRU1CRURERURfVjZfU0NPUEUgKi8KQEAgLTQ2
MDcsMTIgKzQ2MjQsMTAgQEAgc2N0cF9sb3dsZXZlbF9jaHVua19vdXRwdXQoc3RydWN0IHNjdHBf
aW5wY2IgKmlucCwKIAkJCSAqIFRoaXMgbWVhbnMgZXNwZWNpYWxseSwgdGhhdCBpdCBpcyBub3Qg
c2V0IGF0IHRoZQogCQkJICogU0NUUCBsYXllci4gU28gdXNlIHRoZSB2YWx1ZSBmcm9tIHRoZSBJ
UCBsYXllci4KIAkJCSAqLwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19B
UFBMRV9fKSB8fCBkZWZpbmVkKF9fUGFuZGFfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwg
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQotI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAoIWRlZmlu
ZWQoQVBQTEVfTEVPUEFSRCkgJiYgIWRlZmluZWQoQVBQTEVfU05PV0xFT1BBUkQpICYmICFkZWZp
bmVkKEFQUExFX0xJT04pICYmICFkZWZpbmVkKEFQUExFX01PVU5UQUlOTElPTikpCisjaWYgZGVm
aW5lZChfX0FQUExFX18pICAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKSAmJiAoIWRlZmluZWQo
QVBQTEVfTEVPUEFSRCkgJiYgIWRlZmluZWQoQVBQTEVfU05PV0xFT1BBUkQpICYmICFkZWZpbmVk
KEFQUExFX0xJT04pICYmICFkZWZpbmVkKEFQUExFX01PVU5UQUlOTElPTikpCiAJCQl0b3NfdmFs
dWUgPSAobnRvaGwoaW5wLT5pcF9pbnAuaW5wLmlucF9mbG93KSA+PiAyMCkgJiAweGZmOwogI2Vs
c2UKLQkJCXRvc192YWx1ZSA9IChudG9obCgoKHN0cnVjdCBpbjZwY2IgKilpbnApLT5pbjZwX2Zs
b3dpbmZvKSA+PiAyMCkgJiAweGZmOwotI2VuZGlmCisJCQl0b3NfdmFsdWUgPSAobnRvaGwoKChz
dHJ1Y3QgaW5wY2IgKilpbnApLT5pbnBfZmxvdykgPj4gMjApICYgMHhmZjsKICNlbmRpZgogCQl9
CiAJCXRvc192YWx1ZSAmPSAweGZjOwpAQCAtNDYzMCw3ICs0NjQ1LDcgQEAgc2N0cF9sb3dsZXZl
bF9jaHVua19vdXRwdXQoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJfSBlbHNlIHsKIAkJCWlw
NmgtPmlwNl9ueHQgPSBJUFBST1RPX1NDVFA7CiAJCX0KLQkJaXA2aC0+aXA2X3BsZW4gPSBodG9u
cyhwYWNrZXRfbGVuZ3RoIC0gc2l6ZW9mKHN0cnVjdCBpcDZfaGRyKSk7CisJCWlwNmgtPmlwNl9w
bGVuID0gaHRvbnMoKHVpbnQxNl90KShwYWNrZXRfbGVuZ3RoIC0gc2l6ZW9mKHN0cnVjdCBpcDZf
aGRyKSkpOwogCQlpcDZoLT5pcDZfZHN0ID0gc2luNi0+c2luNl9hZGRyOwogCiAJCS8qCkBAIC00
NjQ5LDE2ICs0NjY0LDIwIEBAIHNjdHBfbG93bGV2ZWxfY2h1bmtfb3V0cHV0KHN0cnVjdCBzY3Rw
X2lucGNiICppbnAsCiAJCQkJc2N0cF9mcmVlX2lmYShuZXQtPnJvLl9zX2FkZHIpOwogCQkJCW5l
dC0+cm8uX3NfYWRkciA9IE5VTEw7CiAJCQkJbmV0LT5zcmNfYWRkcl9zZWxlY3RlZCA9IDA7Cisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJCQlS
T19OSEZSRUUocm8pOworI2Vsc2UKIAkJCQlpZiAocm8tPnJvX3J0KSB7CiAJCQkJCVJURlJFRShy
by0+cm9fcnQpOwogCQkJCQlyby0+cm9fcnQgPSBOVUxMOwogCQkJCX0KKyNlbmRpZgogCQkJfQog
CQkJaWYgKG5ldC0+c3JjX2FkZHJfc2VsZWN0ZWQgPT0gMCkgewogI2lmZGVmIFNDVFBfRU1CRURE
RURfVjZfU0NPUEUKIAkJCQlzaW42ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKikmbmV0LT5yby5f
bF9hZGRyOwogCQkJCS8qIEtBTUUgaGFjazogZW1iZWQgc2NvcGVpZCAqLwotI2lmIGRlZmluZWQo
X19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogI2lmIGRlZmluZWQoQVBQTEVfTEVPUEFSRCkgfHwgZGVmaW5lZChBUFBMRV9TTk9XTEVP
UEFSRCkKIAkJCQlpZiAoaW42X2VtYmVkc2NvcGUoJnNpbjYtPnNpbjZfYWRkciwgc2luNiwgTlVM
TCwgTlVMTCkgIT0gMCkKICNlbHNlCkBAIC00NjcxLDYgKzQ2OTAsNyBAQCBzY3RwX2xvd2xldmVs
X2NodW5rX291dHB1dChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogI2VuZGlmCiAJCQkJewogCQkJ
CQlTQ1RQX0xUUkFDRV9FUlJfUkVUX1BLVChtLCBpbnAsIHN0Y2IsIG5ldCwgU0NUUF9GUk9NX1ND
VFBfT1VUUFVULCBFSU5WQUwpOworCQkJCQlzY3RwX21fZnJlZW0obSk7CiAJCQkJCXJldHVybiAo
RUlOVkFMKTsKIAkJCQl9CiAjZW5kaWYgLyogU0NUUF9FTUJFRERFRF9WNl9TQ09QRSAqLwpAQCAt
NDcwMyw3ICs0NzIzLDcgQEAgc2N0cF9sb3dsZXZlbF9jaHVua19vdXRwdXQoc3RydWN0IHNjdHBf
aW5wY2IgKmlucCwKICNpZmRlZiBTQ1RQX0VNQkVEREVEX1Y2X1NDT1BFCiAJCQlzaW42ID0gKHN0
cnVjdCBzb2NrYWRkcl9pbjYgKikmcm8tPnJvX2RzdDsKIAkJCS8qIEtBTUUgaGFjazogZW1iZWQg
c2NvcGVpZCAqLwotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmIGRlZmluZWQoQVBQTEVfTEVPUEFSRCkg
fHwgZGVmaW5lZChBUFBMRV9TTk9XTEVPUEFSRCkKIAkJCWlmIChpbjZfZW1iZWRzY29wZSgmc2lu
Ni0+c2luNl9hZGRyLCBzaW42LCBOVUxMLCBOVUxMKSAhPSAwKQogI2Vsc2UKQEAgLTQ3MTYsNiAr
NDczNiw3IEBAIHNjdHBfbG93bGV2ZWxfY2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiICpp
bnAsCiAjZW5kaWYKIAkJCSAgewogCQkJCVNDVFBfTFRSQUNFX0VSUl9SRVRfUEtUKG0sIGlucCwg
c3RjYiwgbmV0LCBTQ1RQX0ZST01fU0NUUF9PVVRQVVQsIEVJTlZBTCk7CisJCQkJc2N0cF9tX2Zy
ZWVtKG0pOwogCQkJCXJldHVybiAoRUlOVkFMKTsKIAkJCSAgfQogI2VuZGlmIC8qIFNDVFBfRU1C
RURERURfVjZfU0NPUEUgKi8KQEAgLTQ3NDgsNyArNDc2OSwxMSBAQCBzY3RwX2xvd2xldmVsX2No
dW5rX291dHB1dChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogCQl9CiAJCWxzYTYtPnNpbjZfcG9y
dCA9IGlucC0+c2N0cF9scG9ydDsKIAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCisJCWlmIChyby0+cm9fbmggPT0gTlVMTCkgeworI2Vsc2UKIAkJ
aWYgKHJvLT5yb19ydCA9PSBOVUxMKSB7CisjZW5kaWYKIAkJCS8qCiAJCQkgKiBzcmMgYWRkciBz
ZWxlY3Rpb24gZmFpbGVkIHRvIGZpbmQgYSByb3V0ZSAob3IKIAkJCSAqIHZhbGlkIHNvdXJjZSBh
ZGRyKSwgc28gd2UgY2FuJ3QgZ2V0IHRoZXJlIGZyb20KQEAgLTQ4MTYsNyArNDg0MSw3IEBAIHNj
dHBfbG93bGV2ZWxfY2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCSAqIHRo
YXQgb3VyIHJvIHBvaW50ZXIgaXMgbm93IGZpbGxlZAogCQkgKi8KIAkJaXA2aC0+aXA2X2hsaW0g
PSBTQ1RQX0dFVF9ITElNKGlucCwgcm8pOwotI2lmICEoZGVmaW5lZChfX1BhbmRhX18pIHx8IGRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykpCisjaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJaWZw
ID0gU0NUUF9HRVRfSUZOX1ZPSURfRlJPTV9ST1VURShybyk7CiAjZW5kaWYKIApAQCAtNDg0OCwy
NyArNDg3MywyMCBAQCBzY3RwX2xvd2xldmVsX2NodW5rX291dHB1dChzdHJ1Y3Qgc2N0cF9pbnBj
YiAqaW5wLAogCQlpZiAocG9ydCkgewogCQkJc2N0cGhkci0+Y2hlY2tzdW0gPSBzY3RwX2NhbGN1
bGF0ZV9ja3N1bShtLCBzaXplb2Yoc3RydWN0IGlwNl9oZHIpICsgc2l6ZW9mKHN0cnVjdCB1ZHBo
ZHIpKTsKIAkJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3NlbmRzd2NyYyk7Ci0jaWYgZGVmaW5lZChf
X1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmIGRlZmluZWQoX1dJ
TjMyKQogCQkJdWRwLT51aF9zdW0gPSAwOwotI2VsaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
KyNlbHNlCiAJCQlpZiAoKHVkcC0+dWhfc3VtID0gaW42X2Nrc3VtKG9fcGFrLCBJUFBST1RPX1VE
UCwgc2l6ZW9mKHN0cnVjdCBpcDZfaGRyKSwgcGFja2V0X2xlbmd0aCAtIHNpemVvZihzdHJ1Y3Qg
aXA2X2hkcikpKSA9PSAwKSB7CiAJCQkJdWRwLT51aF9zdW0gPSAweGZmZmY7CiAJCQl9CisjZW5k
aWYKICNlbmRpZgogCQl9IGVsc2UgewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJl
ZUJTRF92ZXJzaW9uID49IDgwMDAwMAotI2lmIF9fRnJlZUJTRF92ZXJzaW9uIDwgOTAwMDAwCi0J
CQlzY3RwaGRyLT5jaGVja3N1bSA9IHNjdHBfY2FsY3VsYXRlX2Nrc3VtKG0sIHNpemVvZihzdHJ1
Y3QgaXA2X2hkcikpOwotCQkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfc2VuZHN3Y3JjKTsKLSNlbHNl
Ci0jaWYgX19GcmVlQlNEX3ZlcnNpb24gPiA5MDEwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJbS0+bV9wa3RoZHIuY3N1bV9mbGFncyA9
IENTVU1fU0NUUF9JUFY2OwotI2Vsc2UKLQkJCW0tPm1fcGt0aGRyLmNzdW1fZmxhZ3MgPSBDU1VN
X1NDVFA7Ci0jZW5kaWYKIAkJCW0tPm1fcGt0aGRyLmNzdW1fZGF0YSA9IG9mZnNldG9mKHN0cnVj
dCBzY3RwaGRyLCBjaGVja3N1bSk7CiAJCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19zZW5kaHdjcmMp
OwotI2VuZGlmCiAjZWxzZQogCQkJaWYgKCEoU0NUUF9CQVNFX1NZU0NUTChzY3RwX25vX2NzdW1f
b25fbG9vcGJhY2spICYmCiAJCQkgICAgICAoc3RjYikgJiYgKHN0Y2ItPmFzb2Muc2NvcGUubG9v
cGJhY2tfc2NvcGUpKSkgewpAQCAtNDg4MCw3ICs0ODk4LDcgQEAgc2N0cF9sb3dsZXZlbF9jaHVu
a19vdXRwdXQoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKICNlbmRpZgogCQl9CiAJCS8qIHNlbmQg
aXQgb3V0LiB0YWJsZSBpZCBpcyB0YWtlbiBmcm9tIHN0Y2IgKi8KLSNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJaWYgKChTQ1RQX0JBU0VfU1lTQ1RM
KHNjdHBfb3V0cHV0X3VubG9ja2VkKSkgJiYgKHNvX2xvY2tlZCkpIHsKIAkJCXNvID0gU0NUUF9J
TlBfU08oaW5wKTsKIAkJCVNDVFBfU09DS0VUX1VOTE9DSyhzbywgMCk7CkBAIC00ODkwLDEyICs0
OTA4LDE1IEBAIHNjdHBfbG93bGV2ZWxfY2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiICpp
bnAsCiAJCWlmIChTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbG9nZ2luZ19sZXZlbCkgJiBTQ1RQX0xB
U1RfUEFDS0VUX1RSQUNJTkcpCiAJCQlzY3RwX3BhY2tldF9sb2cob19wYWspOwogI2VuZGlmCi0j
aWYgIShkZWZpbmVkKF9fUGFuZGFfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkKKyNpZiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisJCVNDVFBf
UFJPQkU1KHNlbmQsIE5VTEwsIHN0Y2IsIGlwNmgsIHN0Y2IsIHNjdHBoZHIpOworI2VuZGlmCiAJ
CVNDVFBfSVA2X09VVFBVVChyZXQsIG9fcGFrLCAoc3RydWN0IHJvdXRlX2luNiAqKXJvLCAmaWZw
LCBzdGNiLCB2cmZfaWQpOwogI2Vsc2UKIAkJU0NUUF9JUDZfT1VUUFVUKHJldCwgb19wYWssIChz
dHJ1Y3Qgcm91dGVfaW42ICopcm8sIE5VTEwsIHN0Y2IsIHZyZl9pZCk7CiAjZW5kaWYKLSNpZiBk
ZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBk
ZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJaWYgKChTQ1RQ
X0JBU0VfU1lTQ1RMKHNjdHBfb3V0cHV0X3VubG9ja2VkKSkgJiYgKHNvX2xvY2tlZCkpIHsKIAkJ
CWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29jLnJlZmNudCwgMSk7CiAJCQlTQ1RQX1RDQl9VTkxP
Q0soc3RjYik7CkBAIC00OTEwLDYgKzQ5MzEsMTEgQEAgc2N0cF9sb3dsZXZlbF9jaHVua19vdXRw
dXQoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJCXNpbjYtPnNpbjZfcG9ydCA9IHByZXZfcG9y
dDsKIAkJfQogCQlTQ1RQREJHKFNDVFBfREVCVUdfT1VUUFVUMywgInJldHVybiBmcm9tIHNlbmQg
aXMgJWRcbiIsIHJldCk7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKKwkJaWYgKHBvcnQpIHsKKwkJCVVEUFNUQVRfSU5DKHVkcHNfb3BhY2tldHMp
OworCQl9CisjZW5kaWYKIAkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfc2VuZHBhY2tldHMpOwogCQlT
Q1RQX1NUQVRfSU5DUl9DT1VOVEVSNjQoc2N0cHNfb3V0cGFja2V0cyk7CiAJCWlmIChyZXQpIHsK
QEAgLTQ5MTcsOCArNDk0Myw4IEBAIHNjdHBfbG93bGV2ZWxfY2h1bmtfb3V0cHV0KHN0cnVjdCBz
Y3RwX2lucGNiICppbnAsCiAJCX0KIAkJaWYgKG5ldCA9PSBOVUxMKSB7CiAJCQkvKiBOb3cgaWYg
d2UgaGFkIGEgdGVtcCByb3V0ZSBmcmVlIGl0ICovCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
JiYgX19GcmVlQlNEX3ZlcnNpb24gPiA5MDEwMDAKLQkJCVJPX1JURlJFRShybyk7CisjaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJCVJPX05IRlJF
RShybyk7CiAjZWxzZQogCQkJaWYgKHJvLT5yb19ydCkgewogCQkJCVJURlJFRShyby0+cm9fcnQp
OwpAQCAtNDkyNyw3ICs0OTUzLDExIEBAIHNjdHBfbG93bGV2ZWxfY2h1bmtfb3V0cHV0KHN0cnVj
dCBzY3RwX2lucGNiICppbnAsCiAjZW5kaWYKIAkJfSBlbHNlIHsKIAkJCS8qIFBNVFUgY2hlY2sg
dmVyc3VzIHNtYWxsZXN0IGFzb2MgTVRVIGdvZXMgaGVyZSAqLworI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQlpZiAocm8tPnJvX25oID09IE5V
TEwpIHsKKyNlbHNlCiAJCQlpZiAocm8tPnJvX3J0ID09IE5VTEwpIHsKKyNlbmRpZgogCQkJCS8q
IFJvdXRlIHdhcyBmcmVlZCAqLwogCQkJCWlmIChuZXQtPnJvLl9zX2FkZHIgJiYKIAkJCQkgICAg
bmV0LT5zcmNfYWRkcl9zZWxlY3RlZCkgewpAQCAtNDkzNiwyNCArNDk2NiwzNCBAQCBzY3RwX2xv
d2xldmVsX2NodW5rX291dHB1dChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogCQkJCX0KIAkJCQlu
ZXQtPnNyY19hZGRyX3NlbGVjdGVkID0gMDsKIAkJCX0KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQkJaWYgKChyby0+cm9fbmggIT0gTlVMTCkg
JiYgKG5ldC0+cm8uX3NfYWRkcikgJiYKKyNlbHNlCiAJCQlpZiAoKHJvLT5yb19ydCAhPSBOVUxM
KSAmJiAobmV0LT5yby5fc19hZGRyKSAmJgorI2VuZGlmCiAJCQkgICAgKChuZXQtPmRlc3Rfc3Rh
dGUgJiBTQ1RQX0FERFJfTk9fUE1UVUQpID09IDApKSB7CiAJCQkJdWludDMyX3QgbXR1OwogCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJCQlt
dHUgPSBTQ1RQX0dBVEhFUl9NVFVfRlJPTV9ST1VURShuZXQtPnJvLl9zX2FkZHIsICZuZXQtPnJv
Ll9sX2FkZHIuc2EsIHJvLT5yb19uaCk7CisjZWxzZQogCQkJCW10dSA9IFNDVFBfR0FUSEVSX01U
VV9GUk9NX1JPVVRFKG5ldC0+cm8uX3NfYWRkciwgJm5ldC0+cm8uX2xfYWRkci5zYSwgcm8tPnJv
X3J0KTsKKyNlbmRpZgogCQkJCWlmIChtdHUgPiAwKSB7CiAJCQkJCWlmIChuZXQtPnBvcnQpIHsK
IAkJCQkJCW10dSAtPSBzaXplb2Yoc3RydWN0IHVkcGhkcik7CiAJCQkJCX0KLQkJCQkJaWYgKChz
dGNiICE9IE5VTEwpICYmIChzdGNiLT5hc29jLnNtYWxsZXN0X210dSA+IG10dSkpIHsKLQkJCQkJ
CXNjdHBfbXR1X3NpemVfcmVzZXQoaW5wLCAmc3RjYi0+YXNvYywgbXR1KTsKKwkJCQkJaWYgKG10
dSA8IG5ldC0+bXR1KSB7CisJCQkJCQlpZiAoKHN0Y2IgIT0gTlVMTCkgJiYgKHN0Y2ItPmFzb2Mu
c21hbGxlc3RfbXR1ID4gbXR1KSkgeworCQkJCQkJCXNjdHBfbXR1X3NpemVfcmVzZXQoaW5wLCAm
c3RjYi0+YXNvYywgbXR1KTsKKwkJCQkJCX0KKwkJCQkJCW5ldC0+bXR1ID0gbXR1OwogCQkJCQl9
Ci0JCQkJCW5ldC0+bXR1ID0gbXR1OwogCQkJCX0KIAkJCX0KLSNpZiAhZGVmaW5lZChfX1BhbmRh
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKIAkJCWVsc2UgaWYgKGlmcCkgewotI2lmIGRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgZGVm
aW5lZChfV0lOMzIpCiAjZGVmaW5lIE5EX0lGSU5GTyhpZnApCShpZnApCiAjZGVmaW5lIGxpbmtt
dHUJCWlmX210dQogI2VuZGlmCkBAIC01MDMwLDExICs1MDcwLDcgQEAgc2N0cF9sb3dsZXZlbF9j
aHVua19vdXRwdXQoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAogCiB2b2lkCi1zY3RwX3NlbmRf
aW5pdGlhdGUoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLCBp
bnQgc29fbG9ja2VkCi0jaWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChTQ1RQX1NP
X0xPQ0tfVEVTVElORykKLSAgICBTQ1RQX1VOVVNFRAotI2VuZGlmCi0gICAgKQorc2N0cF9zZW5k
X2luaXRpYXRlKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwg
aW50IHNvX2xvY2tlZCkKIHsKIAlzdHJ1Y3QgbWJ1ZiAqbSwgKm1fbGFzdDsKIAlzdHJ1Y3Qgc2N0
cF9uZXRzICpuZXQ7CkBAIC01MDQ3LDcgKzUwODMsNyBAQCBzY3RwX3NlbmRfaW5pdGlhdGUoc3Ry
dWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLCBpbnQgc29fbG9ja2Vk
CiAJaW50IGVycm9yOwogCXVpbnQxNl90IG51bV9leHQsIGNodW5rX2xlbiwgcGFkZGluZ19sZW4s
IHBhcmFtZXRlcl9sZW47CiAKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9f
QVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlpZiAoc29fbG9ja2VkKSB7CiAJ
CXNjdHBfbG9ja19hc3NlcnQoU0NUUF9JTlBfU08oaW5wKSk7CiAJfSBlbHNlIHsKQEAgLTUzMTIs
NyArNTM0OCw3IEBAIHNjdHBfc2VuZF9pbml0aWF0ZShzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBz
dHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIGludCBzb19sb2NrZWQKIAkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbSwgMCwgTlVMTCwgMCwgMCwgMCwgMCwKIAkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wLT5zY3RwX2xwb3J0LCBzdGNiLT5ycG9y
dCwgaHRvbmwoMCksCiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5l
dC0+cG9ydCwgTlVMTCwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAsIDAsCiAjZW5kaWYKIAkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc29fbG9ja2VkKSkpIHsKQEAgLTUzMzAsNyArNTM2NiwxMCBA
QCBzY3RwX3NlbmRfaW5pdGlhdGUoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBf
dGNiICpzdGNiLCBpbnQgc29fbG9ja2VkCiAKIHN0cnVjdCBtYnVmICoKIHNjdHBfYXJldGhlcmVf
dW5yZWNvZ25pemVkX3BhcmFtZXRlcnMoc3RydWN0IG1idWYgKmluX2luaXRwa3QsCi0JaW50IHBh
cmFtX29mZnNldCwgaW50ICphYm9ydF9wcm9jZXNzaW5nLCBzdHJ1Y3Qgc2N0cF9jaHVua2hkciAq
Y3AsIGludCAqbmF0X2ZyaWVuZGx5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgcGFyYW1fb2Zmc2V0LCBpbnQgKmFib3J0X3Byb2Nlc3NpbmcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY3RwX2NodW5raGRyICpjcCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpuYXRfZnJpZW5kbHksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqY29va2llX2ZvdW5kKQog
ewogCS8qCiAJICogR2l2ZW4gYSBtYnVmIGNvbnRhaW5pbmcgYW4gSU5JVCBvciBJTklULUFDSyB3
aXRoIHRoZSBwYXJhbV9vZmZzZXQKQEAgLTUzNDgsMTggKzUzODcsMjAgQEAgc2N0cF9hcmV0aGVy
ZV91bnJlY29nbml6ZWRfcGFyYW1ldGVycyhzdHJ1Y3QgbWJ1ZiAqaW5faW5pdHBrdCwKIAkgKi8K
IAlzdHJ1Y3Qgc2N0cF9wYXJhbWhkciAqcGhkciwgcGFyYW1zOwogCi0Jc3RydWN0IG1idWYgKm1h
dCwgKm9wX2VycjsKLQljaGFyIHRlbXBidWZbU0NUUF9QQVJBTV9CVUZGRVJfU0laRV07CisJc3Ry
dWN0IG1idWYgKm1hdCwgKm1fdG1wLCAqb3BfZXJyLCAqb3BfZXJyX2xhc3Q7CiAJaW50IGF0LCBs
aW1pdCwgcGFkX25lZWRlZDsKIAl1aW50MTZfdCBwdHlwZSwgcGxlbiwgcGFkZGVkX3NpemU7Ci0J
aW50IGVycl9hdDsKIAogCSphYm9ydF9wcm9jZXNzaW5nID0gMDsKKwlpZiAoY29va2llX2ZvdW5k
ICE9IE5VTEwpIHsKKwkJKmNvb2tpZV9mb3VuZCA9IDA7CisJfQogCW1hdCA9IGluX2luaXRwa3Q7
Ci0JZXJyX2F0ID0gMDsKIAlsaW1pdCA9IG50b2hzKGNwLT5jaHVua19sZW5ndGgpIC0gc2l6ZW9m
KHN0cnVjdCBzY3RwX2luaXRfY2h1bmspOwogCWF0ID0gcGFyYW1fb2Zmc2V0OwogCW9wX2VyciA9
IE5VTEw7CisJb3BfZXJyX2xhc3QgPSBOVUxMOworCXBhZF9uZWVkZWQgPSAwOwogCVNDVFBEQkco
U0NUUF9ERUJVR19PVVRQVVQxLCAiQ2hlY2sgZm9yIHVucmVjb2duaXplZCBwYXJhbSdzXG4iKTsK
IAlwaGRyID0gc2N0cF9nZXRfbmV4dF9wYXJhbShtYXQsIGF0LCAmcGFyYW1zLCBzaXplb2YocGFy
YW1zKSk7CiAJd2hpbGUgKChwaGRyICE9IE5VTEwpICYmICgoc2l6ZV90KWxpbWl0ID49IHNpemVv
ZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcikpKSB7CkBAIC01MzgyLDEyICs1NDIzLDE3IEBAIHNjdHBf
YXJldGhlcmVfdW5yZWNvZ25pemVkX3BhcmFtZXRlcnMoc3RydWN0IG1idWYgKmluX2luaXRwa3Qs
CiAJCXN3aXRjaCAocHR5cGUpIHsKIAkJCS8qIFBhcmFtJ3Mgd2l0aCB2YXJpYWJsZSBzaXplICov
CiAJCWNhc2UgU0NUUF9IRUFSVEJFQVRfSU5GTzoKLQkJY2FzZSBTQ1RQX1NUQVRFX0NPT0tJRToK
IAkJY2FzZSBTQ1RQX1VOUkVDT0dfUEFSQU06CiAJCWNhc2UgU0NUUF9FUlJPUl9DQVVTRV9JTkQ6
CiAJCQkvKiBvayBza2lwIGZ3ZCAqLwogCQkJYXQgKz0gcGFkZGVkX3NpemU7CiAJCQlicmVhazsK
KwkJY2FzZSBTQ1RQX1NUQVRFX0NPT0tJRToKKwkJCWlmIChjb29raWVfZm91bmQgIT0gTlVMTCkg
eworCQkJCSpjb29raWVfZm91bmQgPSAxOworCQkJfQorCQkJYXQgKz0gcGFkZGVkX3NpemU7CisJ
CQlicmVhazsKIAkJCS8qIFBhcmFtJ3Mgd2l0aCB2YXJpYWJsZSBzaXplIHdpdGhpbiBhIHJhbmdl
ICovCiAJCWNhc2UgU0NUUF9DSFVOS19MSVNUOgogCQljYXNlIFNDVFBfU1VQUE9SVEVEX0NIVU5L
X0VYVDoKQEAgLTU0NzYsNzAgKzU1MjIsNDcgQEAgc2N0cF9hcmV0aGVyZV91bnJlY29nbml6ZWRf
cGFyYW1ldGVycyhzdHJ1Y3QgbWJ1ZiAqaW5faW5pdHBrdCwKIAkJCWJyZWFrOwogCQljYXNlIFND
VFBfSE9TVE5BTUVfQUREUkVTUzoKIAkJewotCQkJLyogV2UgY2FuIE5PVCBoYW5kbGUgSE9TVCBO
QU1FIGFkZHJlc3NlcyEhICovCisJCQkvKiBIb3N0bmFtZSBwYXJhbWV0ZXJzIGFyZSBkZXByZWNh
dGVkLiAqLworCQkJc3RydWN0IHNjdHBfZ2VuX2Vycm9yX2NhdXNlICpjYXVzZTsKIAkJCWludCBs
X2xlbjsKIAogCQkJU0NUUERCRyhTQ1RQX0RFQlVHX09VVFBVVDEsICJDYW4ndCBoYW5kbGUgaG9z
dG5hbWUgYWRkcmVzc2VzLi4gYWJvcnQgcHJvY2Vzc2luZ1xuIik7CiAJCQkqYWJvcnRfcHJvY2Vz
c2luZyA9IDE7Ci0JCQlpZiAob3BfZXJyID09IE5VTEwpIHsKLQkJCQkvKiBPayBuZWVkIHRvIHRy
eSB0byBnZXQgYSBtYnVmICovCisJCQlzY3RwX21fZnJlZW0ob3BfZXJyKTsKKwkJCW9wX2VyciA9
IE5VTEw7CisJCQlvcF9lcnJfbGFzdCA9IE5VTEw7CiAjaWZkZWYgSU5FVDYKLQkJCQlsX2xlbiA9
IFNDVFBfTUlOX09WRVJIRUFEOworCQkJbF9sZW4gPSBTQ1RQX01JTl9PVkVSSEVBRDsKICNlbHNl
Ci0JCQkJbF9sZW4gPSBTQ1RQX01JTl9WNF9PVkVSSEVBRDsKKwkJCWxfbGVuID0gU0NUUF9NSU5f
VjRfT1ZFUkhFQUQ7CiAjZW5kaWYKLQkJCQlsX2xlbiArPSBzaXplb2Yoc3RydWN0IHNjdHBfY2h1
bmtoZHIpOwotCQkJCWxfbGVuICs9IHBsZW47Ci0JCQkJbF9sZW4gKz0gc2l6ZW9mKHN0cnVjdCBz
Y3RwX3BhcmFtaGRyKTsKLQkJCQlvcF9lcnIgPSBzY3RwX2dldF9tYnVmX2Zvcl9tc2cobF9sZW4s
IDAsIE1fTk9XQUlULCAxLCBNVF9EQVRBKTsKLQkJCQlpZiAob3BfZXJyKSB7Ci0JCQkJCVNDVFBf
QlVGX0xFTihvcF9lcnIpID0gMDsKLQkJCQkJLyoKLQkJCQkJICogcHJlLXJlc2VydmUgc3BhY2Ug
Zm9yIGlwIGFuZCBzY3RwCi0JCQkJCSAqIGhlYWRlciAgYW5kIGNodW5rIGhkcgotCQkJCQkgKi8K
KwkJCWxfbGVuICs9IHNpemVvZihzdHJ1Y3Qgc2N0cF9jaHVua2hkcik7CisJCQlsX2xlbiArPSBz
aXplb2Yoc3RydWN0IHNjdHBfZ2VuX2Vycm9yX2NhdXNlKTsKKwkJCW9wX2VyciA9IHNjdHBfZ2V0
X21idWZfZm9yX21zZyhsX2xlbiwgMCwgTV9OT1dBSVQsIDEsIE1UX0RBVEEpOworCQkJaWYgKG9w
X2VyciAhPSBOVUxMKSB7CisJCQkJLyoKKwkJCQkgKiBQcmUtcmVzZXJ2ZSBzcGFjZSBmb3IgSVAs
IFNDVFAsIGFuZAorCQkJCSAqIGNodW5rIGhlYWRlci4KKwkJCQkgKi8KICNpZmRlZiBJTkVUNgot
CQkJCQlTQ1RQX0JVRl9SRVNWX1VGKG9wX2Vyciwgc2l6ZW9mKHN0cnVjdCBpcDZfaGRyKSk7CisJ
CQkJU0NUUF9CVUZfUkVTVl9VRihvcF9lcnIsIHNpemVvZihzdHJ1Y3QgaXA2X2hkcikpOwogI2Vs
c2UKLQkJCQkJU0NUUF9CVUZfUkVTVl9VRihvcF9lcnIsIHNpemVvZihzdHJ1Y3QgaXApKTsKLSNl
bmRpZgotCQkJCQlTQ1RQX0JVRl9SRVNWX1VGKG9wX2Vyciwgc2l6ZW9mKHN0cnVjdCBzY3RwaGRy
KSk7Ci0JCQkJCVNDVFBfQlVGX1JFU1ZfVUYob3BfZXJyLCBzaXplb2Yoc3RydWN0IHNjdHBfY2h1
bmtoZHIpKTsKLQkJCQl9Ci0JCQl9Ci0JCQlpZiAob3BfZXJyKSB7Ci0JCQkJLyogSWYgd2UgaGF2
ZSBzcGFjZSAqLwotCQkJCXN0cnVjdCBzY3RwX3BhcmFtaGRyIHM7Ci0KLQkJCQlpZiAoZXJyX2F0
ICUgNCkgewotCQkJCQl1aW50MzJfdCBjcHRoaXMgPSAwOwotCi0JCQkJCXBhZF9uZWVkZWQgPSA0
IC0gKGVycl9hdCAlIDQpOwotCQkJCQltX2NvcHliYWNrKG9wX2VyciwgZXJyX2F0LCBwYWRfbmVl
ZGVkLCAoY2FkZHJfdCkmY3B0aGlzKTsKLQkJCQkJZXJyX2F0ICs9IHBhZF9uZWVkZWQ7Ci0JCQkJ
fQotCQkJCXMucGFyYW1fdHlwZSA9IGh0b25zKFNDVFBfQ0FVU0VfVU5SRVNPTFZBQkxFX0FERFIp
OwotCQkJCXMucGFyYW1fbGVuZ3RoID0gaHRvbnMoc2l6ZW9mKHMpICsgcGxlbik7Ci0JCQkJbV9j
b3B5YmFjayhvcF9lcnIsIGVycl9hdCwgc2l6ZW9mKHMpLCAoY2FkZHJfdCkmcyk7Ci0JCQkJZXJy
X2F0ICs9IHNpemVvZihzKTsKLQkJCQlpZiAocGxlbiA+IHNpemVvZih0ZW1wYnVmKSkgewotCQkJ
CQlwbGVuID0gc2l6ZW9mKHRlbXBidWYpOwotCQkJCX0KLQkJCQlwaGRyID0gc2N0cF9nZXRfbmV4
dF9wYXJhbShtYXQsIGF0LCAoc3RydWN0IHNjdHBfcGFyYW1oZHIgKil0ZW1wYnVmLCBwbGVuKTsK
LQkJCQlpZiAocGhkciA9PSBOVUxMKSB7CisJCQkJU0NUUF9CVUZfUkVTVl9VRihvcF9lcnIsIHNp
emVvZihzdHJ1Y3QgaXApKTsKKyNlbmRpZgorCQkJCVNDVFBfQlVGX1JFU1ZfVUYob3BfZXJyLCBz
aXplb2Yoc3RydWN0IHNjdHBoZHIpKTsKKwkJCQlTQ1RQX0JVRl9SRVNWX1VGKG9wX2Vyciwgc2l6
ZW9mKHN0cnVjdCBzY3RwX2NodW5raGRyKSk7CisJCQkJU0NUUF9CVUZfTEVOKG9wX2VycikgPSBz
aXplb2Yoc3RydWN0IHNjdHBfZ2VuX2Vycm9yX2NhdXNlKTsKKwkJCQljYXVzZSA9IG10b2Qob3Bf
ZXJyLCBzdHJ1Y3Qgc2N0cF9nZW5fZXJyb3JfY2F1c2UgKik7CisJCQkJY2F1c2UtPmNvZGUgPSBo
dG9ucyhTQ1RQX0NBVVNFX1VOUkVTT0xWQUJMRV9BRERSKTsKKwkJCQljYXVzZS0+bGVuZ3RoID0g
aHRvbnMoKHVpbnQxNl90KShzaXplb2Yoc3RydWN0IHNjdHBfZ2VuX2Vycm9yX2NhdXNlKSArIHBs
ZW4pKTsKKwkJCQlTQ1RQX0JVRl9ORVhUKG9wX2VycikgPSBTQ1RQX01fQ09QWU0obWF0LCBhdCwg
cGxlbiwgTV9OT1dBSVQpOworCQkJCWlmIChTQ1RQX0JVRl9ORVhUKG9wX2VycikgPT0gTlVMTCkg
ewogCQkJCQlzY3RwX21fZnJlZW0ob3BfZXJyKTsKLQkJCQkJLyoKLQkJCQkJICogd2UgYXJlIG91
dCBvZiBtZW1vcnkgYnV0IHdlIHN0aWxsCi0JCQkJCSAqIG5lZWQgdG8gaGF2ZSBhIGxvb2sgYXQg
d2hhdCB0byBkbwotCQkJCQkgKiAodGhlIHN5c3RlbSBpcyBpbiB0cm91YmxlCi0JCQkJCSAqIHRo
b3VnaCkuCi0JCQkJCSAqLwotCQkJCQlyZXR1cm4gKE5VTEwpOworCQkJCQlvcF9lcnIgPSBOVUxM
OworCQkJCQlvcF9lcnJfbGFzdCA9IE5VTEw7CiAJCQkJfQotCQkJCW1fY29weWJhY2sob3BfZXJy
LCBlcnJfYXQsIHBsZW4sIChjYWRkcl90KXBoZHIpOwogCQkJfQogCQkJcmV0dXJuIChvcF9lcnIp
OwotCQkJYnJlYWs7CiAJCX0KIAkJZGVmYXVsdDoKIAkJCS8qCkBAIC01NTU5LDcgKzU1ODIsNiBA
QCBzY3RwX2FyZXRoZXJlX3VucmVjb2duaXplZF9wYXJhbWV0ZXJzKHN0cnVjdCBtYnVmICppbl9p
bml0cGt0LAogCQkJCQlsX2xlbiA9IFNDVFBfTUlOX1Y0X09WRVJIRUFEOwogI2VuZGlmCiAJCQkJ
CWxfbGVuICs9IHNpemVvZihzdHJ1Y3Qgc2N0cF9jaHVua2hkcik7Ci0JCQkJCWxfbGVuICs9IHBs
ZW47CiAJCQkJCWxfbGVuICs9IHNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcik7CiAJCQkJCW9w
X2VyciA9IHNjdHBfZ2V0X21idWZfZm9yX21zZyhsX2xlbiwgMCwgTV9OT1dBSVQsIDEsIE1UX0RB
VEEpOwogCQkJCQlpZiAob3BfZXJyKSB7CkBAIC01NTcxLDQxICs1NTkzLDU1IEBAIHNjdHBfYXJl
dGhlcmVfdW5yZWNvZ25pemVkX3BhcmFtZXRlcnMoc3RydWN0IG1idWYgKmluX2luaXRwa3QsCiAj
ZW5kaWYKIAkJCQkJCVNDVFBfQlVGX1JFU1ZfVUYob3BfZXJyLCBzaXplb2Yoc3RydWN0IHNjdHBo
ZHIpKTsKIAkJCQkJCVNDVFBfQlVGX1JFU1ZfVUYob3BfZXJyLCBzaXplb2Yoc3RydWN0IHNjdHBf
Y2h1bmtoZHIpKTsKKwkJCQkJCW9wX2Vycl9sYXN0ID0gb3BfZXJyOwogCQkJCQl9CiAJCQkJfQot
CQkJCWlmIChvcF9lcnIpIHsKKwkJCQlpZiAob3BfZXJyICE9IE5VTEwpIHsKIAkJCQkJLyogSWYg
d2UgaGF2ZSBzcGFjZSAqLwotCQkJCQlzdHJ1Y3Qgc2N0cF9wYXJhbWhkciBzOworCQkJCQlzdHJ1
Y3Qgc2N0cF9wYXJhbWhkciAqcGFyYW07CiAKLQkJCQkJaWYgKGVycl9hdCAlIDQpIHsKLQkJCQkJ
CXVpbnQzMl90IGNwdGhpcyA9IDA7Ci0KLQkJCQkJCXBhZF9uZWVkZWQgPSA0IC0gKGVycl9hdCAl
IDQpOwotCQkJCQkJbV9jb3B5YmFjayhvcF9lcnIsIGVycl9hdCwgcGFkX25lZWRlZCwgKGNhZGRy
X3QpJmNwdGhpcyk7Ci0JCQkJCQllcnJfYXQgKz0gcGFkX25lZWRlZDsKKwkJCQkJaWYgKHBhZF9u
ZWVkZWQgPiAwKSB7CisJCQkJCQlvcF9lcnJfbGFzdCA9IHNjdHBfYWRkX3BhZF90b21idWYob3Bf
ZXJyX2xhc3QsIHBhZF9uZWVkZWQpOworCQkJCQl9CisJCQkJCWlmIChvcF9lcnJfbGFzdCA9PSBO
VUxMKSB7CisJCQkJCQlzY3RwX21fZnJlZW0ob3BfZXJyKTsKKwkJCQkJCW9wX2VyciA9IE5VTEw7
CisJCQkJCQlvcF9lcnJfbGFzdCA9IE5VTEw7CisJCQkJCQlnb3RvIG1vcmVfcHJvY2Vzc2luZzsK
IAkJCQkJfQotCQkJCQlzLnBhcmFtX3R5cGUgPSBodG9ucyhTQ1RQX1VOUkVDT0dfUEFSQU0pOwot
CQkJCQlzLnBhcmFtX2xlbmd0aCA9IGh0b25zKHNpemVvZihzKSArIHBsZW4pOwotCQkJCQltX2Nv
cHliYWNrKG9wX2VyciwgZXJyX2F0LCBzaXplb2YocyksIChjYWRkcl90KSZzKTsKLQkJCQkJZXJy
X2F0ICs9IHNpemVvZihzKTsKLQkJCQkJaWYgKHBsZW4gPiBzaXplb2YodGVtcGJ1ZikpIHsKLQkJ
CQkJCXBsZW4gPSBzaXplb2YodGVtcGJ1Zik7CisJCQkJCWlmIChNX1RSQUlMSU5HU1BBQ0Uob3Bf
ZXJyX2xhc3QpIDwgKGludClzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpKSB7CisJCQkJCQlt
X3RtcCA9IHNjdHBfZ2V0X21idWZfZm9yX21zZyhzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIp
LCAwLCBNX05PV0FJVCwgMSwgTVRfREFUQSk7CisJCQkJCQlpZiAobV90bXAgPT0gTlVMTCkgewor
CQkJCQkJCXNjdHBfbV9mcmVlbShvcF9lcnIpOworCQkJCQkJCW9wX2VyciA9IE5VTEw7CisJCQkJ
CQkJb3BfZXJyX2xhc3QgPSBOVUxMOworCQkJCQkJCWdvdG8gbW9yZV9wcm9jZXNzaW5nOworCQkJ
CQkJfQorCQkJCQkJU0NUUF9CVUZfTEVOKG1fdG1wKSA9IDA7CisJCQkJCQlTQ1RQX0JVRl9ORVhU
KG1fdG1wKSA9IE5VTEw7CisJCQkJCQlTQ1RQX0JVRl9ORVhUKG9wX2Vycl9sYXN0KSA9IG1fdG1w
OworCQkJCQkJb3BfZXJyX2xhc3QgPSBtX3RtcDsKIAkJCQkJfQotCQkJCQlwaGRyID0gc2N0cF9n
ZXRfbmV4dF9wYXJhbShtYXQsIGF0LCAoc3RydWN0IHNjdHBfcGFyYW1oZHIgKil0ZW1wYnVmLCBw
bGVuKTsKLQkJCQkJaWYgKHBoZHIgPT0gTlVMTCkgeworCQkJCQlwYXJhbSA9IChzdHJ1Y3Qgc2N0
cF9wYXJhbWhkciAqKShtdG9kKG9wX2Vycl9sYXN0LCBjYWRkcl90KSArIFNDVFBfQlVGX0xFTihv
cF9lcnJfbGFzdCkpOworCQkJCQlwYXJhbS0+cGFyYW1fdHlwZSA9IGh0b25zKFNDVFBfVU5SRUNP
R19QQVJBTSk7CisJCQkJCXBhcmFtLT5wYXJhbV9sZW5ndGggPSBodG9ucygodWludDE2X3Qpc2l6
ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKSArIHBsZW4pOworCQkJCQlTQ1RQX0JVRl9MRU4ob3Bf
ZXJyX2xhc3QpICs9IHNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcik7CisJCQkJCVNDVFBfQlVG
X05FWFQob3BfZXJyX2xhc3QpID0gU0NUUF9NX0NPUFlNKG1hdCwgYXQsIHBsZW4sIE1fTk9XQUlU
KTsKKwkJCQkJaWYgKFNDVFBfQlVGX05FWFQob3BfZXJyX2xhc3QpID09IE5VTEwpIHsKIAkJCQkJ
CXNjdHBfbV9mcmVlbShvcF9lcnIpOwotCQkJCQkJLyoKLQkJCQkJCSAqIHdlIGFyZSBvdXQgb2Yg
bWVtb3J5IGJ1dAotCQkJCQkJICogd2Ugc3RpbGwgbmVlZCB0byBoYXZlIGEKLQkJCQkJCSAqIGxv
b2sgYXQgd2hhdCB0byBkbyAodGhlCi0JCQkJCQkgKiBzeXN0ZW0gaXMgaW4gdHJvdWJsZQotCQkJ
CQkJICogdGhvdWdoKS4KLQkJCQkJCSAqLwogCQkJCQkJb3BfZXJyID0gTlVMTDsKKwkJCQkJCW9w
X2Vycl9sYXN0ID0gTlVMTDsKIAkJCQkJCWdvdG8gbW9yZV9wcm9jZXNzaW5nOworCQkJCQl9IGVs
c2UgeworCQkJCQkJd2hpbGUgKFNDVFBfQlVGX05FWFQob3BfZXJyX2xhc3QpICE9IE5VTEwpIHsK
KwkJCQkJCQlvcF9lcnJfbGFzdCA9IFNDVFBfQlVGX05FWFQob3BfZXJyX2xhc3QpOworCQkJCQkJ
fQorCQkJCQl9CisJCQkJCWlmIChwbGVuICUgNCAhPSAwKSB7CisJCQkJCQlwYWRfbmVlZGVkID0g
NCAtIChwbGVuICUgNCk7CisJCQkJCX0gZWxzZSB7CisJCQkJCQlwYWRfbmVlZGVkID0gMDsKIAkJ
CQkJfQotCQkJCQltX2NvcHliYWNrKG9wX2VyciwgZXJyX2F0LCBwbGVuLCAoY2FkZHJfdClwaGRy
KTsKLQkJCQkJZXJyX2F0ICs9IHBsZW47CiAJCQkJfQogCQkJfQogCQltb3JlX3Byb2Nlc3Npbmc6
CkBAIC01NjI2LDcgKzU2NjIsMTEgQEAgc2N0cF9hcmV0aGVyZV91bnJlY29nbml6ZWRfcGFyYW1l
dGVycyhzdHJ1Y3QgbWJ1ZiAqaW5faW5pdHBrdCwKICBpbnZhbGlkX3NpemU6CiAJU0NUUERCRyhT
Q1RQX0RFQlVHX09VVFBVVDEsICJhYm9ydCBmbGFnIHNldFxuIik7CiAJKmFib3J0X3Byb2Nlc3Np
bmcgPSAxOwotCWlmICgob3BfZXJyID09IE5VTEwpICYmIHBoZHIpIHsKKwlzY3RwX21fZnJlZW0o
b3BfZXJyKTsKKwlvcF9lcnIgPSBOVUxMOworCW9wX2Vycl9sYXN0ID0gTlVMTDsKKwlpZiAocGhk
ciAhPSBOVUxMKSB7CisJCXN0cnVjdCBzY3RwX3BhcmFtaGRyICpwYXJhbTsKIAkJaW50IGxfbGVu
OwogI2lmZGVmIElORVQ2CiAJCWxfbGVuID0gU0NUUF9NSU5fT1ZFUkhFQUQ7CkBAIC01NjQ1LDI1
ICs1Njg1LDE1IEBAIHNjdHBfYXJldGhlcmVfdW5yZWNvZ25pemVkX3BhcmFtZXRlcnMoc3RydWN0
IG1idWYgKmluX2luaXRwa3QsCiAjZW5kaWYKIAkJCVNDVFBfQlVGX1JFU1ZfVUYob3BfZXJyLCBz
aXplb2Yoc3RydWN0IHNjdHBoZHIpKTsKIAkJCVNDVFBfQlVGX1JFU1ZfVUYob3BfZXJyLCBzaXpl
b2Yoc3RydWN0IHNjdHBfY2h1bmtoZHIpKTsKKwkJCVNDVFBfQlVGX0xFTihvcF9lcnIpID0gMiAq
IHNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcik7CisJCQlwYXJhbSA9IG10b2Qob3BfZXJyLCBz
dHJ1Y3Qgc2N0cF9wYXJhbWhkciAqKTsKKwkJCXBhcmFtLT5wYXJhbV90eXBlID0gaHRvbnMoU0NU
UF9DQVVTRV9QUk9UT0NPTF9WSU9MQVRJT04pOworCQkJcGFyYW0tPnBhcmFtX2xlbmd0aCA9IGh0
b25zKDIgKiBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpKTsKKwkJCXBhcmFtKys7CisJCQlw
YXJhbS0+cGFyYW1fdHlwZSA9IGh0b25zKHB0eXBlKTsKKwkJCXBhcmFtLT5wYXJhbV9sZW5ndGgg
PSBodG9ucyhwbGVuKTsKIAkJfQogCX0KLQlpZiAoKG9wX2VycikgJiYgcGhkcikgewotCQlzdHJ1
Y3Qgc2N0cF9wYXJhbWhkciBzOwotCi0JCWlmIChlcnJfYXQgJSA0KSB7Ci0JCQl1aW50MzJfdCBj
cHRoaXMgPSAwOwotCi0JCQlwYWRfbmVlZGVkID0gNCAtIChlcnJfYXQgJSA0KTsKLQkJCW1fY29w
eWJhY2sob3BfZXJyLCBlcnJfYXQsIHBhZF9uZWVkZWQsIChjYWRkcl90KSZjcHRoaXMpOwotCQkJ
ZXJyX2F0ICs9IHBhZF9uZWVkZWQ7Ci0JCX0KLQkJcy5wYXJhbV90eXBlID0gaHRvbnMoU0NUUF9D
QVVTRV9QUk9UT0NPTF9WSU9MQVRJT04pOwotCQlzLnBhcmFtX2xlbmd0aCA9IGh0b25zKHNpemVv
ZihzKSArIHNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcikpOwotCQltX2NvcHliYWNrKG9wX2Vy
ciwgZXJyX2F0LCBzaXplb2YocyksIChjYWRkcl90KSZzKTsKLQkJZXJyX2F0ICs9IHNpemVvZihz
KTsKLQkJLyogT25seSBjb3B5IGJhY2sgdGhlIHAtaGRyIHRoYXQgY2F1c2VkIHRoZSBpc3N1ZSAq
LwotCQltX2NvcHliYWNrKG9wX2VyciwgZXJyX2F0LCBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1o
ZHIpLCAoY2FkZHJfdClwaGRyKTsKLQl9CiAJcmV0dXJuIChvcF9lcnIpOwogfQogCkBAIC01ODky
LDcgKzU5MjIsNyBAQCBzY3RwX3NlbmRfaW5pdGlhdGVfYWNrKHN0cnVjdCBzY3RwX2lucGNiICpp
bnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlw
aGxlbiwgaW50IG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNvY2thZGRy
ICpzcmMsIHN0cnVjdCBzb2NrYWRkciAqZHN0LAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3Qgc2N0cGhkciAqc2gsIHN0cnVjdCBzY3RwX2luaXRfY2h1bmsgKmluaXRfY2hrLAotI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKIAkJICAgICAgIHVpbnQ4X3QgbWZsb3d0eXBlLCB1aW50MzJfdCBtZmxv
d2lkLAogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHZyZl9pZCwgdWlu
dDE2X3QgcG9ydCkKQEAgLTU5MzksNyArNTk2OSw3IEBAIHNjdHBfc2VuZF9pbml0aWF0ZV9hY2so
c3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQlhc29jID0g
TlVMTDsKIAl9CiAJaWYgKChhc29jICE9IE5VTEwpICYmCi0JICAgIChTQ1RQX0dFVF9TVEFURShh
c29jKSAhPSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSkgeworCSAgICAoU0NUUF9HRVRfU1RBVEUo
c3RjYikgIT0gU0NUUF9TVEFURV9DT09LSUVfV0FJVCkpIHsKIAkJaWYgKHNjdHBfYXJlX3RoZXJl
X25ld19hZGRyZXNzZXMoYXNvYywgaW5pdF9wa3QsIG9mZnNldCwgc3JjKSkgewogCQkJLyoKIAkJ
CSAqIG5ldyBhZGRyZXNzZXMsIG91dCBvZiBoZXJlIGluIG5vbi1jb29raWUtd2FpdCBzdGF0ZXMK
QEAgLTU5NTEsNyArNTk4MSw3IEBAIHNjdHBfc2VuZF9pbml0aWF0ZV9hY2soc3RydWN0IHNjdHBf
aW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkJb3BfZXJyID0gc2N0cF9nZW5l
cmF0ZV9jYXVzZShTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfZGlhZ19pbmZvX2NvZGUpLAogCQkJICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiQWRkcmVzcyBhZGRlZCIpOwogCQkJc2N0cF9zZW5k
X2Fib3J0KGluaXRfcGt0LCBpcGhsZW4sIHNyYywgZHN0LCBzaCwgMCwgb3BfZXJyLAotI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKIAkJCSAgICAgICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQsIGlu
cC0+ZmlibnVtLAogI2VuZGlmCiAJCQkgICAgICAgICAgICAgICAgdnJmX2lkLCBwb3J0KTsKQEAg
LTU5NjksNyArNTk5OSw3IEBAIHNjdHBfc2VuZF9pbml0aWF0ZV9hY2soc3RydWN0IHNjdHBfaW5w
Y2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkJb3BfZXJyID0gc2N0cF9nZW5lcmF0
ZV9jYXVzZShTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfZGlhZ19pbmZvX2NvZGUpLAogCQkJICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiUmVtb3RlIGVuY2Fwc3VsYXRpb24gcG9ydCBjaGFuZ2Vk
Iik7CiAJCQlzY3RwX3NlbmRfYWJvcnQoaW5pdF9wa3QsIGlwaGxlbiwgc3JjLCBkc3QsIHNoLCAw
LCBvcF9lcnIsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJICAgICAgICAgICAgICAgIG1mbG93
dHlwZSwgbWZsb3dpZCwgaW5wLT5maWJudW0sCiAjZW5kaWYKIAkJCSAgICAgICAgICAgICAgICB2
cmZfaWQsIHBvcnQpOwpAQCAtNTk3OCwyMCArNjAwOCwyMiBAQCBzY3RwX3NlbmRfaW5pdGlhdGVf
YWNrKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAl9CiAJ
YWJvcnRfZmxhZyA9IDA7CiAJb3BfZXJyID0gc2N0cF9hcmV0aGVyZV91bnJlY29nbml6ZWRfcGFy
YW1ldGVycyhpbml0X3BrdCwKLQkJCQkJCSAgICAgICAob2Zmc2V0ICsgc2l6ZW9mKHN0cnVjdCBz
Y3RwX2luaXRfY2h1bmspKSwKLQkJCQkJCSAgICAgICAmYWJvcnRfZmxhZywgKHN0cnVjdCBzY3Rw
X2NodW5raGRyICopaW5pdF9jaGssICZuYXRfZnJpZW5kbHkpOworCSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9mZnNldCArIHNpemVvZihzdHJ1Y3Qgc2N0
cF9pbml0X2NodW5rKSksCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmYWJvcnRfZmxhZywKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChzdHJ1Y3Qgc2N0cF9jaHVua2hkciAqKWluaXRfY2hrLAorCSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hdF9mcmllbmRseSwgTlVM
TCk7CiAJaWYgKGFib3J0X2ZsYWcpIHsKIAlkb19hX2Fib3J0OgogCQlpZiAob3BfZXJyID09IE5V
TEwpIHsKIAkJCWNoYXIgbXNnW1NDVFBfRElBR19JTkZPX0xFTl07CiAKLQkJCXNucHJpbnRmKG1z
Zywgc2l6ZW9mKG1zZyksICIlczolZCBhdCAlcyIsIF9fRklMRV9fLCBfX0xJTkVfXywgX19mdW5j
X18pOworCQkJU0NUUF9TTlBSSU5URihtc2csIHNpemVvZihtc2cpLCAiJXM6JWQgYXQgJXMiLCBf
X0ZJTEVfXywgX19MSU5FX18sIF9fZnVuY19fKTsKIAkJCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVf
Y2F1c2UoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2RpYWdfaW5mb19jb2RlKSwKIAkJCSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbXNnKTsKIAkJfQogCQlzY3RwX3NlbmRfYWJvcnQoaW5pdF9w
a3QsIGlwaGxlbiwgc3JjLCBkc3QsIHNoLAogCQkJCWluaXRfY2hrLT5pbml0LmluaXRpYXRlX3Rh
Zywgb3BfZXJyLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJICAgICAgICAgICAgICAgIG1mbG93
dHlwZSwgbWZsb3dpZCwgaW5wLT5maWJudW0sCiAjZW5kaWYKIAkJICAgICAgICAgICAgICAgIHZy
Zl9pZCwgcG9ydCk7CkBAIC02MDAwLDggKzYwMzIsNyBAQCBzY3RwX3NlbmRfaW5pdGlhdGVfYWNr
KHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAltID0gc2N0
cF9nZXRfbWJ1Zl9mb3JfbXNnKE1DTEJZVEVTLCAwLCBNX05PV0FJVCwgMSwgTVRfREFUQSk7CiAJ
aWYgKG0gPT0gTlVMTCkgewogCQkvKiBObyBtZW1vcnksIElOSVQgdGltZXIgd2lsbCByZS1hdHRl
bXB0LiAqLwotCQlpZiAob3BfZXJyKQotCQkJc2N0cF9tX2ZyZWVtKG9wX2Vycik7CisJCXNjdHBf
bV9mcmVlbShvcF9lcnIpOwogCQlyZXR1cm47CiAJfQogCWNodW5rX2xlbiA9ICh1aW50MTZfdClz
aXplb2Yoc3RydWN0IHNjdHBfaW5pdF9hY2tfY2h1bmspOwpAQCAtNjEwNyw3ICs2MTM4LDcgQEAg
c2N0cF9zZW5kX2luaXRpYXRlX2FjayhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0
cF90Y2IgKnN0Y2IsCiAJCXsKIAkJCXN0Yy5hZGRyX3R5cGUgPSBTQ1RQX0lQVjZfQUREUkVTUzsK
IAkJCW1lbWNweSgmc3RjLmFkZHJlc3MsICZzcmM2LT5zaW42X2FkZHIsIHNpemVvZihzdHJ1Y3Qg
aW42X2FkZHIpKTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAoKChfX0ZyZWVCU0RfdmVy
c2lvbiA8IDkwMDAwMCkgJiYgKF9fRnJlZUJTRF92ZXJzaW9uID49IDgwNDAwMCkpIHx8IChfX0Zy
ZWVCU0RfdmVyc2lvbiA+IDkwMDAwMCkpCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCXN0Yy5zY29wZV9pZCA9IG50b2hzKGluNl9nZXRzY29w
ZSgmc3JjNi0+c2luNl9hZGRyKSk7CiAjZWxzZQogCQkJc3RjLnNjb3BlX2lkID0gMDsKQEAgLTYx
MjgsNyArNjE1OSw3IEBAIHNjdHBfc2VuZF9pbml0aWF0ZV9hY2soc3RydWN0IHNjdHBfaW5wY2Ig
KmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkJCSAqIGJlY2F1c2Ugd2Ugc2hhcmUgb25l
IGxpbmsgdGhhdCBhbGwgbGlua3MgYXJlCiAJCQkJICogY29tbW9uLgogCQkJCSAqLwotI2lmIGRl
ZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogCQkJCS8qIE1hYyBPUyBYIGN1cnJlbnRseSBkb2Vzbid0IGhhdmUgaW42X2dl
dHNjb3BlKCkgKi8KIAkJCQlzdGMuc2NvcGVfaWQgPSBzcmM2LT5zaW42X2FkZHIuczZfYWRkcjE2
WzFdOwogI2VuZGlmCkBAIC02MjI4LDggKzYyNTksMTEgQEAgc2N0cF9zZW5kX2luaXRpYXRlX2Fj
ayhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCQkJbmV0
LT5yby5fc19hZGRyID0gc2N0cF9zb3VyY2VfYWRkcmVzc19zZWxlY3Rpb24oaW5wLAogCQkJCQkJ
CQkJCXN0Y2IsIChzY3RwX3JvdXRlX3QgKikmbmV0LT5ybywKIAkJCQkJCQkJCQluZXQsIDAsIHZy
Zl9pZCk7Ci0JCQkJaWYgKG5ldC0+cm8uX3NfYWRkciA9PSBOVUxMKQorCQkJCWlmIChuZXQtPnJv
Ll9zX2FkZHIgPT0gTlVMTCkgeworCQkJCQlzY3RwX21fZnJlZW0ob3BfZXJyKTsKKwkJCQkJc2N0
cF9tX2ZyZWVtKG0pOwogCQkJCQlyZXR1cm47CisJCQkJfQogCiAJCQkJbmV0LT5zcmNfYWRkcl9z
ZWxlY3RlZCA9IDE7CiAKQEAgLTYyNTgsOCArNjI5MiwxMSBAQCBzY3RwX3NlbmRfaW5pdGlhdGVf
YWNrKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJCQlu
ZXQtPnJvLl9zX2FkZHIgPSBzY3RwX3NvdXJjZV9hZGRyZXNzX3NlbGVjdGlvbihpbnAsCiAJCQkJ
CQkJCQkJc3RjYiwgKHNjdHBfcm91dGVfdCAqKSZuZXQtPnJvLAogCQkJCQkJCQkJCW5ldCwgMCwg
dnJmX2lkKTsKLQkJCQlpZiAobmV0LT5yby5fc19hZGRyID09IE5VTEwpCisJCQkJaWYgKG5ldC0+
cm8uX3NfYWRkciA9PSBOVUxMKSB7CisJCQkJCXNjdHBfbV9mcmVlbShvcF9lcnIpOworCQkJCQlz
Y3RwX21fZnJlZW0obSk7CiAJCQkJCXJldHVybjsKKwkJCQl9CiAKIAkJCQluZXQtPnNyY19hZGRy
X3NlbGVjdGVkID0gMTsKIAkJCX0KQEAgLTYzMDMsOSArNjM0MCw5IEBAIHNjdHBfc2VuZF9pbml0
aWF0ZV9hY2soc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAog
CWluaXRhY2stPmNoLmNodW5rX2xlbmd0aCA9IDA7CiAJLyogcGxhY2UgaW4gbXkgdGFnICovCiAJ
aWYgKChhc29jICE9IE5VTEwpICYmCi0JICAgICgoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NU
UF9TVEFURV9DT09LSUVfV0FJVCkgfHwKLQkgICAgIChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBT
Q1RQX1NUQVRFX0lOVVNFKSB8fAotCSAgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBf
U1RBVEVfQ09PS0lFX0VDSE9FRCkpKSB7CisJICAgICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0g
U0NUUF9TVEFURV9DT09LSUVfV0FJVCkgfHwKKwkgICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9
PSBTQ1RQX1NUQVRFX0lOVVNFKSB8fAorCSAgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFND
VFBfU1RBVEVfQ09PS0lFX0VDSE9FRCkpKSB7CiAJCS8qIHJlLXVzZSB0aGUgdi10YWdzIGFuZCBp
bml0LXNlcSBoZXJlICovCiAJCWluaXRhY2stPmluaXQuaW5pdGlhdGVfdGFnID0gaHRvbmwoYXNv
Yy0+bXlfdnRhZyk7CiAJCWluaXRhY2stPmluaXQuaW5pdGlhbF90c24gPSBodG9ubChhc29jLT5p
bml0X3NlcV9udW1iZXIpOwpAQCAtNjM0Nyw2ICs2Mzg0LDcgQEAgc2N0cF9zZW5kX2luaXRpYXRl
X2FjayhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJc28g
PSBpbnAtPnNjdHBfc29ja2V0OwogCWlmIChzbyA9PSBOVUxMKSB7CiAJCS8qIG1lbW9yeSBwcm9i
bGVtICovCisJCXNjdHBfbV9mcmVlbShvcF9lcnIpOwogCQlzY3RwX21fZnJlZW0obSk7CiAJCXJl
dHVybjsKIAl9IGVsc2UgewpAQCAtNjU5Myw2ICs2NjMxLDI3IEBAIHNjdHBfc2VuZF9pbml0aWF0
ZV9hY2soc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkJ
ICAodWludDhfdCAqKWlucC0+c2N0cF9lcC5zZWNyZXRfa2V5WyhpbnQpKGlucC0+c2N0cF9lcC5j
dXJyZW50X3NlY3JldF9udW1iZXIpXSwKIAkJCSAgU0NUUF9TRUNSRVRfU0laRSwgbV9jb29raWUs
IHNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkciksCiAJCQkgICh1aW50OF90ICopc2lnbmF0dXJl
LCBTQ1RQX1NJR05BVFVSRV9TSVpFKTsKKyNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJLyoK
KwkgKiBEb24ndCBwdXQgQUZfQ09OTiBhZGRyZXNzZXMgb24gdGhlIHdpcmUsIGluIGNhc2UgdGhp
cyBpcyBjcml0aWNhbAorCSAqIGZvciB0aGUgYXBwbGljYXRpb24uIEhvd2V2ZXIsIHRoZXkgYXJl
IHByb3RlY3RlZCBieSB0aGUgSE1BQyBhbmQKKwkgKiBuZWVkIHRvIGJlIHJlY29uc3RydWN0ZWQg
YmVmb3JlIGNoZWNraW5nIHRoZSBITUFDLgorCSAqIENsZWFyaW5nIGlzIG9ubHkgZG9uZSBpbiB0
aGUgbWJ1ZiBjaGFpbiwgc2luY2UgdGhlIGxvY2FsIHN0YyBpcworCSAqIG5vdCB1c2VkIGFueW1v
cmUuCisJICovCisJaWYgKHN0Yy5hZGRyX3R5cGUgPT0gU0NUUF9DT05OX0FERFJFU1MpIHsKKwkJ
Y29uc3Qgdm9pZCAqcCA9IE5VTEw7CisKKwkJbV9jb3B5YmFjayhtX2Nvb2tpZSwgc2l6ZW9mKHN0
cnVjdCBzY3RwX3BhcmFtaGRyKSArIG9mZnNldG9mKHN0cnVjdCBzY3RwX3N0YXRlX2Nvb2tpZSwg
YWRkcmVzcyksCisJCSAgICAgICAgICAgKGludClzaXplb2Yodm9pZCAqKSwgKGNhZGRyX3QpJnAp
OworCX0KKwlpZiAoc3RjLmxhZGRyX3R5cGUgPT0gU0NUUF9DT05OX0FERFJFU1MpIHsKKwkJY29u
c3Qgdm9pZCAqcCA9IE5VTEw7CisKKwkJbV9jb3B5YmFjayhtX2Nvb2tpZSwgc2l6ZW9mKHN0cnVj
dCBzY3RwX3BhcmFtaGRyKSArIG9mZnNldG9mKHN0cnVjdCBzY3RwX3N0YXRlX2Nvb2tpZSwgbGFk
ZHJlc3MpLAorCQkgICAgICAgICAgIChpbnQpc2l6ZW9mKHZvaWQgKiksIChjYWRkcl90KSZwKTsK
Kwl9CisjZW5kaWYKIAkvKgogCSAqIFdlIHNpZmEgMCBoZXJlIHRvIE5PVCBzZXQgSVBfREYgaWYg
aXRzIElQdjQsIHdlIGlnbm9yZSB0aGUgcmV0dXJuCiAJICogaGVyZSBzaW5jZSB0aGUgdGltZXIg
d2lsbCBkcml2ZSBhIHJldHJhbm1pc3Npb24uCkBAIC02NjEzLDcgKzY2NzIsNyBAQCBzY3RwX3Nl
bmRfaW5pdGlhdGVfYWNrKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAq
c3RjYiwKIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwKIAkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wLT5zY3RwX2xwb3J0LCBz
aC0+c3JjX3BvcnQsIGluaXRfY2hrLT5pbml0LmluaXRpYXRlX3RhZywKIAkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydCwgb3Zlcl9hZGRyLAotI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWZsb3d0
eXBlLCBtZmxvd2lkLAogI2VuZGlmCiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNDVFBfU09fTk9UX0xPQ0tFRCkpKSB7CkBAIC02NjU3LDEzICs2NzE2LDEzIEBAIHNj
dHBfcHJ1bmVfcHJzY3RwKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJCQkgKiBUaGlzIG9uZSBp
cyBQUi1TQ1RQIEFORCBidWZmZXIgc3BhY2UKIAkJCQkgKiBsaW1pdGVkIHR5cGUKIAkJCQkgKi8K
LQkJCQlpZiAoY2hrLT5yZWMuZGF0YS50aW1ldG9kcm9wLnR2X3NlYyA+PSAobG9uZylzcmN2LT5z
aW5mb190aW1ldG9saXZlKSB7CisJCQkJaWYgKGNoay0+cmVjLmRhdGEudGltZXRvZHJvcC50dl9z
ZWMgPiAobG9uZylzcmN2LT5zaW5mb190aW1ldG9saXZlKSB7CiAJCQkJCS8qCiAJCQkJCSAqIExv
d2VyIG51bWJlcnMgZXF1YXRlcyB0byBoaWdoZXIKLQkJCQkJICogcHJpb3JpdHkgc28gaWYgdGhl
IG9uZSB3ZSBhcmUKLQkJCQkJICogbG9va2luZyBhdCBoYXMgYSBsYXJnZXIgb3IgZXF1YWwKLQkJ
CQkJICogcHJpb3JpdHkgd2Ugd2FudCB0byBkcm9wIHRoZSBkYXRhCi0JCQkJCSAqIGFuZCBOT1Qg
cmV0cmFuc21pdCBpdC4KKwkJCQkJICogcHJpb3JpdHkuIFNvIGlmIHRoZSBvbmUgd2UgYXJlCisJ
CQkJCSAqIGxvb2tpbmcgYXQgaGFzIGEgbGFyZ2VyIHByaW9yaXR5LAorCQkJCQkgKiB3ZSB3YW50
IHRvIGRyb3AgdGhlIGRhdGEgYW5kIE5PVAorCQkJCQkgKiByZXRyYW5zbWl0IGl0LgogCQkJCQkg
Ki8KIAkJCQkJaWYgKGNoay0+ZGF0YSkgewogCQkJCQkJLyoKQEAgLTY2OTIsNyArNjc1MSw3IEBA
IHNjdHBfcHJ1bmVfcHJzY3RwKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJVEFJTFFfRk9SRUFD
SF9TQUZFKGNoaywgJmFzb2MtPnNlbmRfcXVldWUsIHNjdHBfbmV4dCwgbmNoaykgewogCQkJLyog
SGVyZSB3ZSBtdXN0IG1vdmUgdG8gdGhlIHNlbnQgcXVldWUgYW5kIG1hcmsgKi8KIAkJCWlmIChQ
Ul9TQ1RQX0JVRl9FTkFCTEVEKGNoay0+ZmxhZ3MpKSB7Ci0JCQkJaWYgKGNoay0+cmVjLmRhdGEu
dGltZXRvZHJvcC50dl9zZWMgPj0gKGxvbmcpc3Jjdi0+c2luZm9fdGltZXRvbGl2ZSkgeworCQkJ
CWlmIChjaGstPnJlYy5kYXRhLnRpbWV0b2Ryb3AudHZfc2VjID4gKGxvbmcpc3Jjdi0+c2luZm9f
dGltZXRvbGl2ZSkgewogCQkJCQlpZiAoY2hrLT5kYXRhKSB7CiAJCQkJCQkvKgogCQkJCQkJICog
V2UgcmVsZWFzZSB0aGUgYm9va19zaXplCkBAIC02Nzk1LDcgKzY4NTQsNyBAQCBzY3RwX3NldF9w
cnNjdHBfcG9saWN5KHN0cnVjdCBzY3RwX3N0cmVhbV9xdWV1ZV9wZW5kaW5nICpzcCkKIAkJLyog
VE9ETyBzY3RwX2NvbnN0YW50cy5oIG5lZWRzIGFsdGVybmF0aXZlIHRpbWUgbWFjcm9zIHdoZW4K
IAkJICogIF9LRVJORUwgaXMgdW5kZWZpbmVkLgogCQkgKi8KLSNpZm5kZWYgX19GcmVlQlNEX18K
KyNpZiAhKGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pKQog
CQl0aW1lcmFkZCgmc3AtPnRzLCAmdHYsICZzcC0+dHMpOwogI2Vsc2UKIAkJdGltZXZhbGFkZCgm
c3AtPnRzLCAmdHYpOwpAQCAtNjg0Nyw5ICs2OTA2LDkgQEAgc2N0cF9tc2dfYXBwZW5kKHN0cnVj
dCBzY3RwX3RjYiAqc3RjYiwKIAl9CiAJc3RybSA9ICZzdGNiLT5hc29jLnN0cm1vdXRbc3Jjdi0+
c2luZm9fc3RyZWFtXTsKIAkvKiBOb3cgY2FuIHdlIHNlbmQgdGhpcz8gKi8KLQlpZiAoKFNDVFBf
R0VUX1NUQVRFKCZzdGNiLT5hc29jKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpIHx8Ci0J
ICAgIChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9B
Q0tfU0VOVCkgfHwKLQkgICAgKFNDVFBfR0VUX1NUQVRFKCZzdGNiLT5hc29jKSA9PSBTQ1RQX1NU
QVRFX1NIVVRET1dOX1JFQ0VJVkVEKSB8fAorCWlmICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0g
U0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKSB8fAorCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikg
PT0gU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tfU0VOVCkgfHwKKwkgICAgKFNDVFBfR0VUX1NUQVRF
KHN0Y2IpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpIHx8CiAJICAgIChzdGNiLT5h
c29jLnN0YXRlICYgU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HKSkgewogCQkvKiBnb3QgZGF0
YSB3aGlsZSBzaHV0dGluZyBkb3duICovCiAJCVNDVFBfTFRSQUNFX0VSUl9SRVQoTlVMTCwgc3Rj
YiwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfT1VUUFVULCBFQ09OTlJFU0VUKTsKQEAgLTY5NDMsMTIg
KzcwMDIsNyBAQCBzY3RwX2NvcHlfbWJ1ZmNoYWluKHN0cnVjdCBtYnVmICpjbG9uZWNoYWluLAog
CQlhcHBlbmRjaGFpbiA9IGNsb25lY2hhaW47CiAJfSBlbHNlIHsKIAkJaWYgKCFjb3B5X2J5X3Jl
ZiAmJgotI2lmIGRlZmluZWQoX19QYW5kYV9fKQotCQkgICAgMAotI2Vsc2UKLQkJICAgIChzaXpl
b2ZjcHkgPD0gKGludCkoKCgoU0NUUF9CQVNFX1NZU0NUTChzY3RwX21idWZfdGhyZXNob2xkX2Nv
dW50KSAtIDEpICogTUxFTikgKyBNSExFTikpKQotI2VuZGlmCi0JCSAgICApIHsKKwkJICAgIChz
aXplb2ZjcHkgPD0gKGludCkoKCgoU0NUUF9CQVNFX1NZU0NUTChzY3RwX21idWZfdGhyZXNob2xk
X2NvdW50KSAtIDEpICogTUxFTikgKyBNSExFTikpKSkgewogCQkJLyogSXRzIG5vdCBpbiBhIGNs
dXN0ZXIgKi8KIAkJCWlmICgqZW5kb2ZjaGFpbiA9PSBOVUxMKSB7CiAJCQkJLyogbGV0cyBnZXQg
YSBtYnVmIGNsdXN0ZXIgKi8KQEAgLTcwNzksMTEgKzcxMzMsNyBAQCBzY3RwX21lZF9jaHVua19v
dXRwdXQoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJICAgICAgaW50ICpudW1fb3V0LAogCQkg
ICAgICBpbnQgKnJlYXNvbl9jb2RlLAogCQkgICAgICBpbnQgY29udHJvbF9vbmx5LCBpbnQgZnJv
bV93aGVyZSwKLQkJICAgICAgc3RydWN0IHRpbWV2YWwgKm5vdywgaW50ICpub3dfZmlsbGVkLCBp
bnQgZnJhZ19wb2ludCwgaW50IHNvX2xvY2tlZAotI2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYg
IWRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCi0JCSAgICAgIFNDVFBfVU5VU0VECi0jZW5k
aWYKLSAgICAgICAgICAgICAgICAgICAgICApOworCQkgICAgICBzdHJ1Y3QgdGltZXZhbCAqbm93
LCBpbnQgKm5vd19maWxsZWQsIGludCBmcmFnX3BvaW50LCBpbnQgc29fbG9ja2VkKTsKIAogc3Rh
dGljIHZvaWQKIHNjdHBfc2VuZGFsbF9pdGVyYXRvcihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBz
dHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHZvaWQgKnB0ciwKQEAgLTcxNzYsMjEgKzcyMjYsMjAgQEAg
c2N0cF9zZW5kYWxsX2l0ZXJhdG9yKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3Rw
X3RjYiAqc3RjYiwgdm9pZCAqcHRyLAogCQkJCQlnb3RvIGFib3J0X2FueXdheTsKIAkJCQl9CiAJ
CQkJLyogdGhlcmUgaXMgbm90aGluZyBxdWV1ZWQgdG8gc2VuZCwgc28gSSdtIGRvbmUuLi4gKi8K
LQkJCQlpZiAoKFNDVFBfR0VUX1NUQVRFKGFzb2MpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fU0VO
VCkgJiYKLQkJCQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpICE9IFNDVFBfU1RBVEVfU0hVVERP
V05fUkVDRUlWRUQpICYmCi0JCQkJICAgIChTQ1RQX0dFVF9TVEFURShhc29jKSAhPSBTQ1RQX1NU
QVRFX1NIVVRET1dOX0FDS19TRU5UKSkgeworCQkJCWlmICgoU0NUUF9HRVRfU1RBVEUoc3RjYikg
IT0gU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKSAmJgorCQkJCSAgICAoU0NUUF9HRVRfU1RBVEUo
c3RjYikgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkgJiYKKwkJCQkgICAgKFNDVFBf
R0VUX1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQpKSB7CiAJCQkJ
CS8qIG9ubHkgc2VuZCBTSFVURE9XTiB0aGUgZmlyc3QgdGltZSB0aHJvdWdoICovCi0JCQkJCWlm
IChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHsKKwkJCQkJaWYgKFND
VFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfT1BFTikgewogCQkJCQkJU0NUUF9TVEFU
X0RFQ1JfR0FVR0UzMihzY3Rwc19jdXJyZXN0YWIpOwogCQkJCQl9Ci0JCQkJCVNDVFBfU0VUX1NU
QVRFKGFzb2MsIFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCk7Ci0JCQkJCVNDVFBfQ0xFQVJfU1VC
U1RBVEUoYXNvYywgU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HKTsKKwkJCQkJU0NUUF9TRVRf
U1RBVEUoc3RjYiwgU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKTsKIAkJCQkJc2N0cF9zdG9wX3Rp
bWVyc19mb3Jfc2h1dGRvd24oc3RjYik7CiAJCQkJCXNjdHBfc2VuZF9zaHV0ZG93bihzdGNiLCBu
ZXQpOwogCQkJCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9TSFVURE9XTiwgc3Rj
Yi0+c2N0cF9lcCwgc3RjYiwKIAkJCQkJCQkgbmV0KTsKIAkJCQkJc2N0cF90aW1lcl9zdGFydChT
Q1RQX1RJTUVSX1RZUEVfU0hVVERPV05HVUFSRCwgc3RjYi0+c2N0cF9lcCwgc3RjYiwKLQkJCQkJ
CQkgYXNvYy0+cHJpbWFyeV9kZXN0aW5hdGlvbik7CisJCQkJCSAgICAgICAgICAgICAgICAgTlVM
TCk7CiAJCQkJCWFkZGVkX2NvbnRyb2wgPSAxOwogCQkJCQlkb19jaHVua19vdXRwdXQgPSAwOwog
CQkJCX0KQEAgLTcyMDUsMTMgKzcyNTQsMTMgQEAgc2N0cF9zZW5kYWxsX2l0ZXJhdG9yKHN0cnVj
dCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgdm9pZCAqcHRyLAogCQkJ
CSAqIGRhdGEgdG8gYmUgc2VudCBmaXJzdCBhbmQgbW92ZSB0bwogCQkJCSAqIFNIVVRET1dOLVBF
TkRJTkcKIAkJCQkgKi8KLQkJCQlpZiAoKFNDVFBfR0VUX1NUQVRFKGFzb2MpICE9IFNDVFBfU1RB
VEVfU0hVVERPV05fU0VOVCkgJiYKLQkJCQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpICE9IFND
VFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpICYmCi0JCQkJICAgIChTQ1RQX0dFVF9TVEFURShh
c29jKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX0FDS19TRU5UKSkgeworCQkJCWlmICgoU0NUUF9H
RVRfU1RBVEUoc3RjYikgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKSAmJgorCQkJCSAgICAo
U0NUUF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkgJiYK
KwkJCQkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fQUNL
X1NFTlQpKSB7CiAJCQkJCWlmICgoKmFzb2MtPnNzX2Z1bmN0aW9ucy5zY3RwX3NzX2lzX3VzZXJf
bXNnc19pbmNvbXBsZXRlKShzdGNiLCBhc29jKSkgewotCQkJCQkJYXNvYy0+c3RhdGUgfD0gU0NU
UF9TVEFURV9QQVJUSUFMX01TR19MRUZUOworCQkJCQkJU0NUUF9BRERfU1VCU1RBVEUoc3RjYiwg
U0NUUF9TVEFURV9QQVJUSUFMX01TR19MRUZUKTsKIAkJCQkJfQotCQkJCQlhc29jLT5zdGF0ZSB8
PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJTkc7CisJCQkJCVNDVFBfQUREX1NVQlNUQVRFKHN0
Y2IsIFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORyk7CiAJCQkJCWlmIChUQUlMUV9FTVBUWSgm
YXNvYy0+c2VuZF9xdWV1ZSkgJiYKIAkJCQkJICAgIFRBSUxRX0VNUFRZKCZhc29jLT5zZW50X3F1
ZXVlKSAmJgogCQkJCQkgICAgKGFzb2MtPnN0YXRlICYgU0NUUF9TVEFURV9QQVJUSUFMX01TR19M
RUZUKSkgewpAQCAtNzIxOSw4ICs3MjY4LDggQEAgc2N0cF9zZW5kYWxsX2l0ZXJhdG9yKHN0cnVj
dCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgdm9pZCAqcHRyLAogCQkJ
CQkJY2hhciBtc2dbU0NUUF9ESUFHX0lORk9fTEVOXTsKIAogCQkJCQlhYm9ydF9hbnl3YXk6Ci0J
CQkJCQlzbnByaW50Zihtc2csIHNpemVvZihtc2cpLAotCQkJCQkJICAgICAgICAgIiVzOiVkIGF0
ICVzIiwgX19GSUxFX18sIF9fTElORV9fLCBfX2Z1bmNfXyk7CisJCQkJCQlTQ1RQX1NOUFJJTlRG
KG1zZywgc2l6ZW9mKG1zZyksCisJCQkJCQkgICAgICAgICAgICAgICIlczolZCBhdCAlcyIsIF9f
RklMRV9fLCBfX0xJTkVfXywgX19mdW5jX18pOwogCQkJCQkJb3BfZXJyID0gc2N0cF9nZW5lcmF0
ZV9jYXVzZShTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfZGlhZ19pbmZvX2NvZGUpLAogCQkJCQkJICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cpOwogCQkJCQkJYXRvbWljX2FkZF9pbnQoJnN0
Y2ItPmFzb2MucmVmY250LCAxKTsKQEAgLTcyMzAsNyArNzI3OSw3IEBAIHNjdHBfc2VuZGFsbF9p
dGVyYXRvcihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHZv
aWQgKnB0ciwKIAkJCQkJCWdvdG8gbm9fY2h1bmtfb3V0cHV0OwogCQkJCQl9CiAJCQkJCXNjdHBf
dGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NIVVRET1dOR1VBUkQsIHN0Y2ItPnNjdHBfZXAs
IHN0Y2IsCi0JCQkJCQkJIGFzb2MtPnByaW1hcnlfZGVzdGluYXRpb24pOworCQkJCQkgICAgICAg
ICAgICAgICAgIE5VTEwpOwogCQkJCX0KIAkJCX0KIApAQCAtNzI3OSwxNSArNzMyOCwxOSBAQCBz
Y3RwX3NlbmRhbGxfY29tcGxldGVzKHZvaWQgKnB0ciwgdWludDMyX3QgdmFsIFNDVFBfVU5VU0VE
KQogCSAqLwogCiAJLyogbm93IGZyZWUgZXZlcnl0aGluZyAqLworCWlmIChjYS0+aW5wKSB7CisJ
CS8qIExldHMgY2xlYXIgdGhlIGZsYWcgdG8gYWxsb3cgb3RoZXJzIHRvIHJ1bi4gKi8KKwkJY2Et
PmlucC0+c2N0cF9mbGFncyAmPSB+U0NUUF9QQ0JfRkxBR1NfU05EX0lURVJBVE9SX1VQOworCX0K
IAlzY3RwX21fZnJlZW0oY2EtPm0pOwogCVNDVFBfRlJFRShjYSwgU0NUUF9NX0NPUFlBTCk7CiB9
CiAKIHN0YXRpYyBzdHJ1Y3QgbWJ1ZiAqCi1zY3RwX2NvcHlfb3V0X2FsbChzdHJ1Y3QgdWlvICp1
aW8sIGludCBsZW4pCitzY3RwX2NvcHlfb3V0X2FsbChzdHJ1Y3QgdWlvICp1aW8sIHNzaXplX3Qg
bGVuKQogewogCXN0cnVjdCBtYnVmICpyZXQsICphdDsKLQlpbnQgbGVmdCwgd2lsbGNweSwgY2Fu
Y3B5LCBlcnJvcjsKKwlzc2l6ZV90IGxlZnQsIHdpbGxjcHksIGNhbmNweSwgZXJyb3I7CiAKIAly
ZXQgPSBzY3RwX2dldF9tYnVmX2Zvcl9tc2coTUNMQllURVMsIDAsIE1fV0FJVE9LLCAxLCBNVF9E
QVRBKTsKIAlpZiAocmV0ID09IE5VTEwpIHsKQEAgLTczMDIsMTcgKzczNTUsMTcgQEAgc2N0cF9j
b3B5X291dF9hbGwoc3RydWN0IHVpbyAqdWlvLCBpbnQgbGVuKQogCWF0ID0gcmV0OwogCXdoaWxl
IChsZWZ0ID4gMCkgewogCQkvKiBBbGlnbiBkYXRhIHRvIHRoZSBlbmQgKi8KLQkJZXJyb3IgPSB1
aW9tb3ZlKG10b2QoYXQsIGNhZGRyX3QpLCB3aWxsY3B5LCB1aW8pOworCQllcnJvciA9IHVpb21v
dmUobXRvZChhdCwgY2FkZHJfdCksIChpbnQpd2lsbGNweSwgdWlvKTsKIAkJaWYgKGVycm9yKSB7
CiAJZXJyX291dF9ub3c6CiAJCQlzY3RwX21fZnJlZW0oYXQpOwogCQkJcmV0dXJuIChOVUxMKTsK
IAkJfQotCQlTQ1RQX0JVRl9MRU4oYXQpID0gd2lsbGNweTsKKwkJU0NUUF9CVUZfTEVOKGF0KSA9
IChpbnQpd2lsbGNweTsKIAkJU0NUUF9CVUZfTkVYVF9QS1QoYXQpID0gU0NUUF9CVUZfTkVYVChh
dCkgPSAwOwogCQlsZWZ0IC09IHdpbGxjcHk7CiAJCWlmIChsZWZ0ID4gMCkgewotCQkJU0NUUF9C
VUZfTkVYVChhdCkgPSBzY3RwX2dldF9tYnVmX2Zvcl9tc2cobGVmdCwgMCwgTV9XQUlUT0ssIDEs
IE1UX0RBVEEpOworCQkJU0NUUF9CVUZfTkVYVChhdCkgPSBzY3RwX2dldF9tYnVmX2Zvcl9tc2co
KHVuc2lnbmVkIGludClsZWZ0LCAwLCBNX1dBSVRPSywgMSwgTVRfREFUQSk7CiAJCQlpZiAoU0NU
UF9CVUZfTkVYVChhdCkgPT0gTlVMTCkgewogCQkJCWdvdG8gZXJyX291dF9ub3c7CiAJCQl9CkBA
IC03MzMyLDYgKzczODUsMjIgQEAgc2N0cF9zZW5kYWxsKHN0cnVjdCBzY3RwX2lucGNiICppbnAs
IHN0cnVjdCB1aW8gKnVpbywgc3RydWN0IG1idWYgKm0sCiAJaW50IHJldDsKIAlzdHJ1Y3Qgc2N0
cF9jb3B5X2FsbCAqY2E7CiAKKwlpZiAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1Nf
U05EX0lURVJBVE9SX1VQKSB7CisJCS8qIFRoZXJlIGlzIGFub3RoZXIuICovCisJCXJldHVybiAo
RUJVU1kpOworCX0KKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKKyNpZiBkZWZpbmVkKEFQUExFX0xFT1BBUkQpCisJaWYgKHVpby0+dWlvX3Jlc2lkID4g
U0NUUF9CQVNFX1NZU0NUTChzY3RwX3NlbmRhbGxfbGltaXQpKSB7CisjZWxzZQorCWlmICh1aW9f
cmVzaWQodWlvKSA+IFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9zZW5kYWxsX2xpbWl0KSkgeworI2Vu
ZGlmCisjZWxzZQorCWlmICh1aW8tPnVpb19yZXNpZCA+IChzc2l6ZV90KVNDVFBfQkFTRV9TWVND
VEwoc2N0cF9zZW5kYWxsX2xpbWl0KSkgeworI2VuZGlmCisJCS8qIFlvdSBtdXN0IG5vdCBiZSBs
YXJnZXIgdGhhbiB0aGUgbGltaXQhICovCisJCXJldHVybiAoRU1TR1NJWkUpOworCX0KIAlTQ1RQ
X01BTExPQyhjYSwgc3RydWN0IHNjdHBfY29weV9hbGwgKiwgc2l6ZW9mKHN0cnVjdCBzY3RwX2Nv
cHlfYWxsKSwKIAkJICAgIFNDVFBfTV9DT1BZQUwpOwogCWlmIChjYSA9PSBOVUxMKSB7CkBAIC03
MzUyLDIwICs3NDIxLDIwIEBAIHNjdHBfc2VuZGFsbChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBz
dHJ1Y3QgdWlvICp1aW8sIHN0cnVjdCBtYnVmICptLAogCWNhLT5zbmRyY3Yuc2luZm9fZmxhZ3Mg
Jj0gflNDVFBfU0VOREFMTDsKIAkvKiBnZXQgbGVuZ3RoIGFuZCBtYnVmIGNoYWluICovCiAJaWYg
KHVpbykgewotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmIGRlZmluZWQoQVBQTEVfTEVPUEFSRCkKIAkJ
Y2EtPnNuZGxlbiA9IHVpby0+dWlvX3Jlc2lkOwogI2Vsc2UKIAkJY2EtPnNuZGxlbiA9IHVpb19y
ZXNpZCh1aW8pOwogI2VuZGlmCiAjZWxzZQotCQljYS0+c25kbGVuID0gKGludCl1aW8tPnVpb19y
ZXNpZDsKKwkJY2EtPnNuZGxlbiA9IHVpby0+dWlvX3Jlc2lkOwogI2VuZGlmCi0jaWYgZGVmaW5l
ZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJCVNDVFBfU09DS0VUX1VOTE9DSyhTQ1RQX0lOUF9TTyhpbnApLCAwKTsKICNlbmRp
ZgogCQljYS0+bSA9IHNjdHBfY29weV9vdXRfYWxsKHVpbywgY2EtPnNuZGxlbik7Ci0jaWYgZGVm
aW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAJCVNDVFBfU09DS0VUX0xPQ0soU0NUUF9JTlBfU08oaW5wKSwgMCk7CiAjZW5k
aWYKIAkJaWYgKGNhLT5tID09IE5VTEwpIHsKQEAgLTczODIsMTMgKzc0NTEsMTQgQEAgc2N0cF9z
ZW5kYWxsKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCB1aW8gKnVpbywgc3RydWN0IG1i
dWYgKm0sCiAJCQljYS0+c25kbGVuICs9IFNDVFBfQlVGX0xFTihtYXQpOwogCQl9CiAJfQorCWlu
cC0+c2N0cF9mbGFncyB8PSBTQ1RQX1BDQl9GTEFHU19TTkRfSVRFUkFUT1JfVVA7CiAJcmV0ID0g
c2N0cF9pbml0aWF0ZV9pdGVyYXRvcihOVUxMLCBzY3RwX3NlbmRhbGxfaXRlcmF0b3IsIE5VTEws
CiAJCQkJICAgICBTQ1RQX1BDQl9BTllfRkxBR1MsIFNDVFBfUENCX0FOWV9GRUFUVVJFUywKIAkJ
CQkgICAgIFNDVFBfQVNPQ19BTllfU1RBVEUsCiAJCQkJICAgICAodm9pZCAqKWNhLCAwLAogCQkJ
CSAgICAgc2N0cF9zZW5kYWxsX2NvbXBsZXRlcywgaW5wLCAxKTsKIAlpZiAocmV0KSB7Ci0JCVND
VFBfUFJJTlRGKCJGYWlsZWQgdG8gaW5pdGlhdGUgaXRlcmF0b3IgZm9yIHNlbmRhbGxcbiIpOwor
CQlpbnAtPnNjdHBfZmxhZ3MgJj0gflNDVFBfUENCX0ZMQUdTX1NORF9JVEVSQVRPUl9VUDsKIAkJ
U0NUUF9GUkVFKGNhLCBTQ1RQX01fQ09QWUFMKTsKIAkJU0NUUF9MVFJBQ0VfRVJSX1JFVF9QS1Qo
bSwgaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9PVVRQVVQsIEVGQVVMVCk7CiAJCXJl
dHVybiAoRUZBVUxUKTsKQEAgLTc1MzgsMTEgKzc2MDgsNyBAQCBzY3RwX2NsZWFuX3VwX2RhdGFs
aXN0KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIH0KIAogc3RhdGljIHZvaWQKLXNjdHBfY2xlYW5f
dXBfY3RsKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFz
b2MsIGludCBzb19sb2NrZWQKLSNpZiAhZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKFND
VFBfU09fTE9DS19URVNUSU5HKQotCVNDVFBfVU5VU0VECi0jZW5kaWYKLSkKK3NjdHBfY2xlYW5f
dXBfY3RsKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFz
b2MsIGludCBzb19sb2NrZWQpCiB7CiAJc3RydWN0IHNjdHBfdG1pdF9jaHVuayAqY2hrLCAqbmNo
azsKIApAQCAtNzY0NSwxMSArNzcxMSw3IEBAIHNjdHBfbW92ZV90b19vdXRxdWV1ZShzdHJ1Y3Qg
c2N0cF90Y2IgKnN0Y2IsCiAgICAgICAgICAgICAgICAgICAgICAgaW50ICpnaXZldXAsCiAgICAg
ICAgICAgICAgICAgICAgICAgaW50IGVlb3JfbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICBp
bnQgKmJhaWwsCi0gICAgICAgICAgICAgICAgICAgICAgaW50IHNvX2xvY2tlZAotI2lmICFkZWZp
bmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCi0gICAgICAg
ICAgICAgICAgICAgICAgU0NUUF9VTlVTRUQKLSNlbmRpZgotCSkKKyAgICAgICAgICAgICAgICAg
ICAgICBpbnQgc29fbG9ja2VkKQogewogCS8qIE1vdmUgZnJvbSB0aGUgc3RyZWFtIHRvIHRoZSBz
ZW5kX3F1ZXVlIGtlZXBpbmcgdHJhY2sgb2YgdGhlIHRvdGFsICovCiAJc3RydWN0IHNjdHBfYXNz
b2NpYXRpb24gKmFzb2M7CkBAIC03Njk0LDcgKzc3NTYsNyBAQCBvbmVfbW9yZV90aW1lOgogCX0K
IAlpZiAoKHNwLT5tc2dfaXNfY29tcGxldGUpICYmIChzcC0+bGVuZ3RoID09IDApKSB7CiAJCWlm
IChzcC0+c2VuZGVyX2FsbF9kb25lKSB7Ci0JCQkvKiBXZSBhcmUgZG9pbmcgZGlmZmVyZWQgY2xl
YW51cC4gTGFzdAorCQkJLyogV2UgYXJlIGRvaW5nIGRlZmVycmVkIGNsZWFudXAuIExhc3QKIAkJ
CSAqIHRpbWUgdGhyb3VnaCB3aGVuIHdlIHRvb2sgYWxsIHRoZSBkYXRhCiAJCQkgKiB0aGUgc2Vu
ZGVyX2FsbF9kb25lIHdhcyBub3Qgc2V0LgogCQkJICovCkBAIC04MDQ4LDcgKzgxMTAsNyBAQCBy
ZV9sb29rOgogCQlzY3RwX2F1dGhfa2V5X2FjcXVpcmUoc3RjYiwgY2hrLT5hdXRoX2tleWlkKTsK
IAkJY2hrLT5ob2xkc19rZXlfcmVmID0gMTsKIAl9Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
fHwgZGVmaW5lZChfX1BhbmRhX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKIAljaGstPnJlYy5kYXRhLnRzbiA9IGF0b21pY19mZXRjaGFkZF9p
bnQoJmFzb2MtPnNlbmRpbmdfc2VxLCAxKTsKICNlbHNlCiAJY2hrLT5yZWMuZGF0YS50c24gPSBh
c29jLT5zZW5kaW5nX3NlcSsrOwpAQCAtODE3MSwxMSArODIzMyw3IEBAIG91dF9vZjoKIAogc3Rh
dGljIHZvaWQKIHNjdHBfZmlsbF9vdXRxdWV1ZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCi0gICAg
c3RydWN0IHNjdHBfbmV0cyAqbmV0LCBpbnQgZnJhZ19wb2ludCwgaW50IGVlb3JfbW9kZSwgaW50
ICpxdWl0X25vdywgaW50IHNvX2xvY2tlZAotI2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRl
ZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCi0JU0NUUF9VTlVTRUQKLSNlbmRpZgotKQorICAg
IHN0cnVjdCBzY3RwX25ldHMgKm5ldCwgaW50IGZyYWdfcG9pbnQsIGludCBlZW9yX21vZGUsIGlu
dCAqcXVpdF9ub3csIGludCBzb19sb2NrZWQpCiB7CiAJc3RydWN0IHNjdHBfYXNzb2NpYXRpb24g
KmFzb2M7CiAJc3RydWN0IHNjdHBfc3RyZWFtX291dCAqc3RycTsKQEAgLTgyMjMsNyArODI4MSwx
MSBAQCBzY3RwX2ZpbGxfb3V0cXVldWUoc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQl9CiAJCXN0
cnEgPSBzdGNiLT5hc29jLnNzX2Z1bmN0aW9ucy5zY3RwX3NzX3NlbGVjdF9zdHJlYW0oc3RjYiwg
bmV0LCBhc29jKTsKIAkJdG90YWxfbW92ZWQgKz0gbW92ZWQ7Ci0JCXNwYWNlX2xlZnQgLT0gbW92
ZWQ7CisJCWlmIChzcGFjZV9sZWZ0ID49IG1vdmVkKSB7CisJCQlzcGFjZV9sZWZ0IC09IG1vdmVk
OworCQl9IGVsc2UgeworCQkJc3BhY2VfbGVmdCA9IDA7CisJCX0KIAkJaWYgKHNwYWNlX2xlZnQg
Pj0gU0NUUF9EQVRBX0NIVU5LX09WRVJIRUFEKHN0Y2IpKSB7CiAJCQlzcGFjZV9sZWZ0IC09IFND
VFBfREFUQV9DSFVOS19PVkVSSEVBRChzdGNiKTsKIAkJfSBlbHNlIHsKQEAgLTgyOTUsMTEgKzgz
NTcsNyBAQCBzY3RwX21lZF9jaHVua19vdXRwdXQoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJ
ICAgICAgaW50ICpudW1fb3V0LAogCQkgICAgICBpbnQgKnJlYXNvbl9jb2RlLAogCQkgICAgICBp
bnQgY29udHJvbF9vbmx5LCBpbnQgZnJvbV93aGVyZSwKLQkJICAgICAgc3RydWN0IHRpbWV2YWwg
Km5vdywgaW50ICpub3dfZmlsbGVkLCBpbnQgZnJhZ19wb2ludCwgaW50IHNvX2xvY2tlZAotI2lm
ICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCi0J
CSAgICAgIFNDVFBfVU5VU0VECi0jZW5kaWYKLQkpCisJCSAgICAgIHN0cnVjdCB0aW1ldmFsICpu
b3csIGludCAqbm93X2ZpbGxlZCwgaW50IGZyYWdfcG9pbnQsIGludCBzb19sb2NrZWQpCiB7CiAJ
LyoqCiAJICogT2sgdGhpcyBpcyB0aGUgZ2VuZXJpYyBjaHVuayBzZXJ2aWNlIHF1ZXVlLiB3ZSBt
dXN0IGRvIHRoZQpAQCAtODMyNiw4ICs4Mzg0LDggQEAgc2N0cF9tZWRfY2h1bmtfb3V0cHV0KHN0
cnVjdCBzY3RwX2lucGNiICppbnAsCiAJaW50IGJ1bmRsZV9hdCwgY3RsX2NudCwgbm9fZGF0YV9j
aHVua3MsIGVlb3JfbW9kZTsKIAl1bnNpZ25lZCBpbnQgbXR1LCByX210dSwgb210dSwgbXhfbXR1
LCB0b19vdXQ7CiAJaW50IHRzbnNfc2VudCA9IDA7Ci0JdWludDMyX3QgYXV0aF9vZmZzZXQgPSAw
OwotCXN0cnVjdCBzY3RwX2F1dGhfY2h1bmsgKmF1dGggPSBOVUxMOworCXVpbnQzMl90IGF1dGhf
b2Zmc2V0OworCXN0cnVjdCBzY3RwX2F1dGhfY2h1bmsgKmF1dGg7CiAJdWludDE2X3QgYXV0aF9r
ZXlpZDsKIAlpbnQgb3ZlcnJpZGVfb2sgPSAxOwogCWludCBza2lwX2ZpbGxfdXAgPSAwOwpAQCAt
ODMzNiw3ICs4Mzk0LDcgQEAgc2N0cF9tZWRfY2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNi
ICppbnAsCiAJICAgdGhlIGRlc3RpbmF0aW9uLiAqLwogCWludCBxdWl0X25vdyA9IDA7CiAKLSNp
ZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKIAlpZiAoc29fbG9ja2VkKSB7CiAJCXNjdHBfbG9ja19hc3NlcnQoU0NU
UF9JTlBfU08oaW5wKSk7CiAJfSBlbHNlIHsKQEAgLTgzNDcsNyArODQwNSw3IEBAIHNjdHBfbWVk
X2NodW5rX291dHB1dChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogCSpyZWFzb25fY29kZSA9IDA7
CiAJYXV0aF9rZXlpZCA9IHN0Y2ItPmFzb2MuYXV0aGluZm8uYWN0aXZlX2tleWlkOwogCWlmICgo
YXNvYy0+c3RhdGUgJiBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJTkcpIHx8Ci0JICAgIChhc29j
LT5zdGF0ZSAmIFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpIHx8CisJICAgIChTQ1RQX0dF
VF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSB8fAogCSAgICAo
c2N0cF9pc19mZWF0dXJlX29uKGlucCwgU0NUUF9QQ0JfRkxBR1NfRVhQTElDSVRfRU9SKSkpIHsK
IAkJZWVvcl9tb2RlID0gMTsKIAl9IGVsc2UgewpAQCAtODUyNSw2ICs4NTgzLDggQEAgYWdhaW5f
b25lX21vcmVfdGltZToKIAkJfQogCQlidW5kbGVfYXQgPSAwOwogCQllbmRvdXRjaGFpbiA9IG91
dGNoYWluID0gTlVMTDsKKwkJYXV0aCA9IE5VTEw7CisJCWF1dGhfb2Zmc2V0ID0gMDsKIAkJbm9f
ZnJhZ21lbnRmbGcgPSAxOwogCQlvbmVfY2h1bmsgPSAwOwogCQlpZiAobmV0LT5kZXN0X3N0YXRl
ICYgU0NUUF9BRERSX1VOQ09ORklSTUVEKSB7CkBAIC04NzA3LDcgKzg3NjcsNyBAQCBhZ2Fpbl9v
bmVfbW9yZV90aW1lOgogCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW5wLT5zY3RwX2xwb3J0LCBzdGNiLT5ycG9ydCwKIAkJCQkJICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGh0b25sKHN0Y2ItPmFzb2MucGVlcl92dGFnKSwKIAkJCQkJ
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldC0+cG9ydCwgTlVMTCwK
LSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLCAwLAogI2VuZGlmCiAJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzb19sb2NrZWQpKSkgewpAQCAtODkwNiw3ICs4OTY2LDcgQEAgYWdhaW5f
b25lX21vcmVfdGltZToKIAkJCQkJCS8qIHR1cm4gb2ZmIHRoZSB0aW1lciAqLwogCQkJCQkJaWYg
KFNDVFBfT1NfVElNRVJfUEVORElORygmc3RjYi0+YXNvYy5kYWNrX3RpbWVyLnRpbWVyKSkgewog
CQkJCQkJCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfUkVDViwKLQkJCQkJCQkJCWlu
cCwgc3RjYiwgbmV0LAorCQkJCQkJCSAgICAgICAgICAgICAgICBpbnAsIHN0Y2IsIE5VTEwsCiAJ
CQkJCQkJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX09VVFBVVCArIFNDVFBfTE9DXzEp
OwogCQkJCQkJfQogCQkJCQl9CkBAIC04OTc4LDcgKzkwMzgsNyBAQCBhZ2Fpbl9vbmVfbW9yZV90
aW1lOgogCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wLT5z
Y3RwX2xwb3J0LCBzdGNiLT5ycG9ydCwKIAkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGh0b25sKHN0Y2ItPmFzb2MucGVlcl92dGFnKSwKIAkJCQkJICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldC0+cG9ydCwgTlVMTCwKLSNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLCAwLAogI2VuZGlmCiAJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzb19sb2NrZWQpKSkgewpAQCAtOTExNyw4ICs5MTc3LDggQEAgYWdhaW5fb25lX21vcmVf
dGltZToKIAkJCW9tdHUgPSAwOwogCQkJYnJlYWs7CiAJCX0KLQkJaWYgKCgoKFNDVFBfR0VUX1NU
QVRFKGFzb2MpID09IFNDVFBfU1RBVEVfT1BFTikgfHwKLQkJICAgICAgKFNDVFBfR0VUX1NUQVRF
KGFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpKSAmJgorCQlpZiAoKCgoU0NU
UF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9PUEVOKSB8fAorCQkgICAgICAoU0NUUF9H
RVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkpICYmCiAJCSAg
ICAgKHNraXBfZGF0YV9mb3JfdGhpc19uZXQgPT0gMCkpIHx8CiAJCSAgICAoY29va2llKSkgewog
CQkJVEFJTFFfRk9SRUFDSF9TQUZFKGNoaywgJmFzb2MtPnNlbmRfcXVldWUsIHNjdHBfbmV4dCwg
bmNoaykgewpAQCAtOTE2Nyw3ICs5MjI3LDcgQEAgYWdhaW5fb25lX21vcmVfdGltZToKIAkJCQkJ
Y2hrLT5mbGFncyB8PSBDSFVOS19GTEFHU19GUkFHTUVOVF9PSzsKIAkJCQl9CiAJCQkJaWYgKFND
VFBfQkFTRV9TWVNDVEwoc2N0cF9lbmFibGVfc2Fja19pbW1lZGlhdGVseSkgJiYKLQkJCQkgICAg
KChhc29jLT5zdGF0ZSAmIFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORykgPT0gU0NUUF9TVEFU
RV9TSFVURE9XTl9QRU5ESU5HKSkgeworCQkJCSAgICAoYXNvYy0+c3RhdGUgJiBTQ1RQX1NUQVRF
X1NIVVRET1dOX1BFTkRJTkcpKSB7CiAJCQkJCXN0cnVjdCBzY3RwX2RhdGFfY2h1bmsgKmRjaGto
OwogCiAJCQkJCWRjaGtoID0gbXRvZChjaGstPmRhdGEsIHN0cnVjdCBzY3RwX2RhdGFfY2h1bmsg
Kik7CkBAIC05MzIwLDcgKzkzODAsNyBAQCBhZ2Fpbl9vbmVfbW9yZV90aW1lOgogCQkJICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucC0+c2N0cF9scG9ydCwgc3RjYi0+
cnBvcnQsCiAJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRvbmwo
c3RjYi0+YXNvYy5wZWVyX3Z0YWcpLAogCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5ldC0+cG9ydCwgTlVMTCwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwKICNlbmRpZgogCQkJICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvX2xvY2tlZCkpKSB7CkBAIC05
NDU0LDE0ICs5NTE0LDE1IEBAIHNjdHBfcXVldWVfb3BfZXJyKHN0cnVjdCBzY3RwX3RjYiAqc3Rj
Yiwgc3RydWN0IG1idWYgKm9wX2VycikKIAkJcmV0dXJuOwogCX0KIAljaGstPmNvcHlfYnlfcmVm
ID0gMDsKKwljaGstPnJlYy5jaHVua19pZC5pZCA9IFNDVFBfT1BFUkFUSU9OX0VSUk9SOworCWNo
ay0+cmVjLmNodW5rX2lkLmNhbl90YWtlX2RhdGEgPSAwOworCWNoay0+ZmxhZ3MgPSAwOwogCWNo
ay0+c2VuZF9zaXplID0gKHVpbnQxNl90KWNodW5rX2xlbmd0aDsKIAljaGstPnNlbnQgPSBTQ1RQ
X0RBVEFHUkFNX1VOU0VOVDsKIAljaGstPnNuZF9jb3VudCA9IDA7CiAJY2hrLT5hc29jID0gJnN0
Y2ItPmFzb2M7CiAJY2hrLT5kYXRhID0gb3BfZXJyOwogCWNoay0+d2hvVG8gPSBOVUxMOwotCWNo
ay0+cmVjLmNodW5rX2lkLmlkID0gU0NUUF9PUEVSQVRJT05fRVJST1I7Ci0JY2hrLT5yZWMuY2h1
bmtfaWQuY2FuX3Rha2VfZGF0YSA9IDA7CiAJaGRyID0gbXRvZChvcF9lcnIsIHN0cnVjdCBzY3Rw
X2NodW5raGRyICopOwogCWhkci0+Y2h1bmtfdHlwZSA9IFNDVFBfT1BFUkFUSU9OX0VSUk9SOwog
CWhkci0+Y2h1bmtfZmxhZ3MgPSAwOwpAQCAtOTQ3Miw3ICs5NTMzLDcgQEAgc2N0cF9xdWV1ZV9v
cF9lcnIoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3QgbWJ1ZiAqb3BfZXJyKQogCiBpbnQK
IHNjdHBfc2VuZF9jb29raWVfZWNobyhzdHJ1Y3QgbWJ1ZiAqbSwKLSAgICBpbnQgb2Zmc2V0LAor
ICAgIGludCBvZmZzZXQsIGludCBsaW1pdCwKICAgICBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAg
ICAgc3RydWN0IHNjdHBfbmV0cyAqbmV0KQogewpAQCAtOTQ5OCwxOCArOTU1OSwyOSBAQCBzY3Rw
X3NlbmRfY29va2llX2VjaG8oc3RydWN0IG1idWYgKm0sCiAJCX0KIAkJcHR5cGUgPSBudG9ocyhw
aGRyLT5wYXJhbV90eXBlKTsKIAkJcGxlbiA9IG50b2hzKHBoZHItPnBhcmFtX2xlbmd0aCk7CisJ
CWlmIChwbGVuIDwgc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKSkgeworCQkJcmV0dXJuICgt
Nik7CisJCX0KIAkJaWYgKHB0eXBlID09IFNDVFBfU1RBVEVfQ09PS0lFKSB7CiAJCQlpbnQgcGFk
OwogCiAJCQkvKiBmb3VuZCB0aGUgY29va2llICovCi0JCQlpZiAoKHBhZCA9IChwbGVuICUgNCkp
KSB7Ci0JCQkJcGxlbiArPSA0IC0gcGFkOworCQkJaWYgKGF0ICsgcGxlbiA+IGxpbWl0KSB7CisJ
CQkJcmV0dXJuICgtNyk7CiAJCQl9CiAJCQljb29raWUgPSBTQ1RQX01fQ09QWU0obSwgYXQsIHBs
ZW4sIE1fTk9XQUlUKTsKIAkJCWlmIChjb29raWUgPT0gTlVMTCkgewogCQkJCS8qIE5vIG1lbW9y
eSAqLwogCQkJCXJldHVybiAoLTIpOwogCQkJfQorCQkJaWYgKChwYWQgPSAocGxlbiAlIDQpKSA+
IDApIHsKKwkJCQlwYWQgPSA0IC0gcGFkOworCQkJfQorCQkJaWYgKHBhZCA+IDApIHsKKwkJCQlp
ZiAoc2N0cF9wYWRfbGFzdG1idWYoY29va2llLCBwYWQsIE5VTEwpID09IE5VTEwpIHsKKwkJCQkJ
cmV0dXJuICgtOCk7CisJCQkJfQorCQkJfQogI2lmZGVmIFNDVFBfTUJVRl9MT0dHSU5HCiAJCQlp
ZiAoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2xvZ2dpbmdfbGV2ZWwpICYgU0NUUF9NQlVGX0xPR0dJ
TkdfRU5BQkxFKSB7CiAJCQkJc2N0cF9sb2dfbWJjKGNvb2tpZSwgU0NUUF9NQlVGX0lDT1BZKTsK
QEAgLTk1MzUsNyArOTYwNyw3IEBAIHNjdHBfc2VuZF9jb29raWVfZWNobyhzdHJ1Y3QgbWJ1ZiAq
bSwKIAljaGstPnJlYy5jaHVua19pZC5pZCA9IFNDVFBfQ09PS0lFX0VDSE87CiAJY2hrLT5yZWMu
Y2h1bmtfaWQuY2FuX3Rha2VfZGF0YSA9IDA7CiAJY2hrLT5mbGFncyA9IENIVU5LX0ZMQUdTX0ZS
QUdNRU5UX09LOwotCWNoay0+c2VuZF9zaXplID0gcGxlbjsKKwljaGstPnNlbmRfc2l6ZSA9IFND
VFBfU0laRTMyKHBsZW4pOwogCWNoay0+c2VudCA9IFNDVFBfREFUQUdSQU1fVU5TRU5UOwogCWNo
ay0+c25kX2NvdW50ID0gMDsKIAljaGstPmFzb2MgPSAmc3RjYi0+YXNvYzsKQEAgLTk1NjEsNyAr
OTYzMyw2IEBAIHNjdHBfc2VuZF9oZWFydGJlYXRfYWNrKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwK
IAlzdHJ1Y3Qgc2N0cF9jaHVua2hkciAqY2hkcjsKIAlzdHJ1Y3Qgc2N0cF90bWl0X2NodW5rICpj
aGs7CiAKLQogCWlmIChuZXQgPT0gTlVMTCkKIAkJLyogbXVzdCBoYXZlIGEgbmV0IHBvaW50ZXIg
Ki8KIAkJcmV0dXJuOwpAQCAtOTU3OSwxMyArOTY1MCw4IEBAIHNjdHBfc2VuZF9oZWFydGJlYXRf
YWNrKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAljaGRyID0gbXRvZChvdXRjaGFpbiwgc3RydWN0
IHNjdHBfY2h1bmtoZHIgKik7CiAJY2hkci0+Y2h1bmtfdHlwZSA9IFNDVFBfSEVBUlRCRUFUX0FD
SzsKIAljaGRyLT5jaHVua19mbGFncyA9IDA7Ci0JaWYgKGNoa19sZW5ndGggJSA0KSB7Ci0JCS8q
IG5lZWQgcGFkICovCi0JCXVpbnQzMl90IGNwdGhpcyA9IDA7Ci0JCWludCBwYWRsZW47Ci0KLQkJ
cGFkbGVuID0gNCAtIChjaGtfbGVuZ3RoICUgNCk7Ci0JCW1fY29weWJhY2sob3V0Y2hhaW4sIGNo
a19sZW5ndGgsIHBhZGxlbiwgKGNhZGRyX3QpJmNwdGhpcyk7CisJaWYgKGNoa19sZW5ndGggJSA0
ICE9IDApIHsKKwkJc2N0cF9wYWRfbGFzdG1idWYob3V0Y2hhaW4sIDQgLSAoY2hrX2xlbmd0aCAl
IDQpLCBOVUxMKTsKIAl9CiAJc2N0cF9hbGxvY19hX2NodW5rKHN0Y2IsIGNoayk7CiAJaWYgKGNo
ayA9PSBOVUxMKSB7CkBAIC05NjgzLDcgKzk3NDksNiBAQCBzY3RwX3NlbmRfc2h1dGRvd25fYWNr
KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfbmV0cyAqbmV0KQogCWNoay0+c2Vu
ZF9zaXplID0gc2l6ZW9mKHN0cnVjdCBzY3RwX2NodW5raGRyKTsKIAljaGstPnNlbnQgPSBTQ1RQ
X0RBVEFHUkFNX1VOU0VOVDsKIAljaGstPnNuZF9jb3VudCA9IDA7Ci0JY2hrLT5mbGFncyA9IDA7
CiAJY2hrLT5hc29jID0gJnN0Y2ItPmFzb2M7CiAJY2hrLT5kYXRhID0gbV9zaHV0ZG93bl9hY2s7
CiAJY2hrLT53aG9UbyA9IG5ldDsKQEAgLTk3MzgsNyArOTgwMyw2IEBAIHNjdHBfc2VuZF9zaHV0
ZG93bihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX25ldHMgKm5ldCkKIAkJY2hr
LT5zZW5kX3NpemUgPSBzaXplb2Yoc3RydWN0IHNjdHBfc2h1dGRvd25fY2h1bmspOwogCQljaGst
PnNlbnQgPSBTQ1RQX0RBVEFHUkFNX1VOU0VOVDsKIAkJY2hrLT5zbmRfY291bnQgPSAwOwotCQlj
aGstPmZsYWdzID0gMDsKIAkJY2hrLT5hc29jID0gJnN0Y2ItPmFzb2M7CiAJCWNoay0+ZGF0YSA9
IG1fc2h1dGRvd247CiAJCWNoay0+d2hvVG8gPSBuZXQ7CkBAIC05OTEzLDExICs5OTc3LDcgQEAg
c3RhdGljIGludAogc2N0cF9jaHVua19yZXRyYW5zbWlzc2lvbihzdHJ1Y3Qgc2N0cF9pbnBjYiAq
aW5wLAogICAgIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKICAgICBzdHJ1Y3Qgc2N0cF9hc3NvY2lh
dGlvbiAqYXNvYywKLSAgICBpbnQgKmNudF9vdXQsIHN0cnVjdCB0aW1ldmFsICpub3csIGludCAq
bm93X2ZpbGxlZCwgaW50ICpmcl9kb25lLCBpbnQgc29fbG9ja2VkCi0jaWYgIWRlZmluZWQoX19B
UFBMRV9fKSAmJiAhZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKLSAgICBTQ1RQX1VOVVNF
RAotI2VuZGlmCi0gICAgKQorICAgIGludCAqY250X291dCwgc3RydWN0IHRpbWV2YWwgKm5vdywg
aW50ICpub3dfZmlsbGVkLCBpbnQgKmZyX2RvbmUsIGludCBzb19sb2NrZWQpCiB7CiAJLyotCiAJ
ICogc2VuZCBvdXQgb25lIE1UVSBvZiByZXRyYW5zbWlzc2lvbi4gSWYgZmFzdF9yZXRyYW5zbWl0
IGlzCkBAIC05OTQ2LDcgKzEwMDA2LDcgQEAgc2N0cF9jaHVua19yZXRyYW5zbWlzc2lvbihzdHJ1
Y3Qgc2N0cF9pbnBjYiAqaW5wLAogCWludCBkYXRhX2F1dGhfcmVxZCA9IDA7CiAJdWludDMyX3Qg
ZG10dSA9IDA7CiAKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlpZiAoc29fbG9ja2VkKSB7CiAJCXNjdHBf
bG9ja19hc3NlcnQoU0NUUF9JTlBfU08oaW5wKSk7CiAJfSBlbHNlIHsKQEAgLTEwMDI3LDcgKzEw
MDg3LDcgQEAgc2N0cF9jaHVua19yZXRyYW5zbWlzc2lvbihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5w
LAogCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9fZnJhZ21lbnRm
bGcsIDAsIDAsCiAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnAt
PnNjdHBfbHBvcnQsIHN0Y2ItPnJwb3J0LCBodG9ubChzdGNiLT5hc29jLnBlZXJfdnRhZyksCiAJ
CSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGstPndob1RvLT5wb3J0
LCBOVUxMLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAsIDAsCiAjZW5kaWYKIAkJICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNvX2xvY2tlZCkpKSB7CkBAIC0xMDA2Niw4ICsxMDEyNiw4IEBAIHNj
dHBfY2h1bmtfcmV0cmFuc21pc3Npb24oc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAlpZiAoVEFJ
TFFfRU1QVFkoJmFzb2MtPnNlbnRfcXVldWUpKSB7CiAJCXJldHVybiAoU0NUUF9SRVRSQU5fRE9O
RSk7CiAJfQotCWlmICgoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9DT09LSUVf
RUNIT0VEKSB8fAotCSAgICAoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9DT09L
SUVfV0FJVCkpIHsKKwlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfQ09P
S0lFX0VDSE9FRCkgfHwKKwkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVf
Q09PS0lFX1dBSVQpKSB7CiAJCS8qIG5vdCB5ZXQgb3BlbiwgcmVzZW5kIHRoZSBjb29raWUgYW5k
IHRoYXQgaXMgaXQgKi8KIAkJcmV0dXJuICgxKTsKIAl9CkBAIC0xMDA5MCw4ICsxMDE1MCw4IEBA
IHNjdHBfY2h1bmtfcmV0cmFuc21pc3Npb24oc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJCXN0
cnVjdCBtYnVmICpvcF9lcnI7CiAJCQljaGFyIG1zZ1tTQ1RQX0RJQUdfSU5GT19MRU5dOwogCi0J
CQlzbnByaW50Zihtc2csIHNpemVvZihtc2cpLCAiVFNOICU4Ljh4IHJldHJhbnNtaXR0ZWQgJWQg
dGltZXMsIGdpdmluZyB1cCIsCi0JCQkJIGNoay0+cmVjLmRhdGEudHNuLCBjaGstPnNuZF9jb3Vu
dCk7CisJCQlTQ1RQX1NOUFJJTlRGKG1zZywgc2l6ZW9mKG1zZyksICJUU04gJTguOHggcmV0cmFu
c21pdHRlZCAlZCB0aW1lcywgZ2l2aW5nIHVwIiwKKwkJCSAgICAgICAgICAgICAgY2hrLT5yZWMu
ZGF0YS50c24sIGNoay0+c25kX2NvdW50KTsKIAkJCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1
c2UoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2RpYWdfaW5mb19jb2RlKSwKIAkJCSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbXNnKTsKIAkJCWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29jLnJl
ZmNudCwgMSk7CkBAIC0xMDMwOCw3ICsxMDM2OCw3IEBAIHNjdHBfY2h1bmtfcmV0cmFuc21pc3Np
b24oc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJCSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBub19mcmFnbWVudGZsZywgMCwgMCwKIAkJCSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnAtPnNjdHBfbHBvcnQsIHN0Y2ItPnJwb3J0LCBodG9u
bChzdGNiLT5hc29jLnBlZXJfdnRhZyksCiAJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbmV0LT5wb3J0LCBOVUxMLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLAogI2VuZGlmCiAJCQkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29fbG9ja2VkKSkpIHsKQEAg
LTEwNDE4LDcgKzEwNDc4LDcgQEAgc2N0cF9jaHVua19yZXRyYW5zbWlzc2lvbihzdHJ1Y3Qgc2N0
cF9pbnBjYiAqaW5wLAogCQkJCQkJICogdDMtZXhwaXJpbmcuCiAJCQkJCQkgKi8KIAkJCQkJCXNj
dHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfU0VORCwgaW5wLCBzdGNiLCBuZXQsCi0JCQkJ
CQkJCVNDVFBfRlJPTV9TQ1RQX09VVFBVVCArIFNDVFBfTE9DXzIpOworCQkJCQkJICAgICAgICAg
ICAgICAgIFNDVFBfRlJPTV9TQ1RQX09VVFBVVCArIFNDVFBfTE9DXzIpOwogCQkJCQkJc2N0cF90
aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfU0VORCwgaW5wLCBzdGNiLCBuZXQpOwogCQkJCQl9
CiAJCQkJfQpAQCAtMTA0NzcsMTEgKzEwNTM3LDcgQEAgdm9pZAogc2N0cF9jaHVua19vdXRwdXQo
c3RydWN0IHNjdHBfaW5wY2IgKmlucCwKICAgICBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAgICAg
aW50IGZyb21fd2hlcmUsCi0gICAgaW50IHNvX2xvY2tlZAotI2lmICFkZWZpbmVkKF9fQVBQTEVf
XykgJiYgIWRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCi0gICAgU0NUUF9VTlVTRUQKLSNl
bmRpZgotICAgICkKKyAgICBpbnQgc29fbG9ja2VkKQogewogCS8qLQogCSAqIE9rIHRoaXMgaXMg
dGhlIGdlbmVyaWMgY2h1bmsgc2VydmljZSBxdWV1ZS4gd2UgbXVzdCBkbyB0aGUKQEAgLTEwNTA4
LDcgKzEwNTY0LDcgQEAgc2N0cF9jaHVua19vdXRwdXQoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwK
IAlpbnQgZnJfZG9uZTsKIAl1bnNpZ25lZCBpbnQgdG90X2ZycyA9IDA7CiAKLSNpZiBkZWZpbmVk
KF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKIAlpZiAoc29fbG9ja2VkKSB7CiAJCXNjdHBfbG9ja19hc3NlcnQoU0NUUF9JTlBfU08o
aW5wKSk7CiAJfSBlbHNlIHsKQEAgLTEwNTQ0LDcgKzEwNjAwLDggQEAgZG9faXRfYWdhaW46CiAJ
ICovCiAJaWYgKFNDVFBfT1NfVElNRVJfUEVORElORygmc3RjYi0+YXNvYy5kYWNrX3RpbWVyLnRp
bWVyKSkgewogCQlzY3RwX3NlbmRfc2FjayhzdGNiLCBzb19sb2NrZWQpOwotCQkodm9pZClTQ1RQ
X09TX1RJTUVSX1NUT1AoJnN0Y2ItPmFzb2MuZGFja190aW1lci50aW1lcik7CisJCXNjdHBfdGlt
ZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfUkVDViwgc3RjYi0+c2N0cF9lcCwgc3RjYiwgTlVMTCwK
KwkJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX09VVFBVVCArIFNDVFBfTE9DXzMpOwog
CX0KIAl3aGlsZSAoYXNvYy0+c2VudF9xdWV1ZV9yZXRyYW5fY250KSB7CiAJCS8qLQpAQCAtMTA3
NTcsMjMgKzEwODE0LDE1IEBAIGRvX2l0X2FnYWluOgogaW50CiBzY3RwX291dHB1dCgKIAlzdHJ1
Y3Qgc2N0cF9pbnBjYiAqaW5wLAotI2lmIGRlZmluZWQoX19QYW5kYV9fKQotCXBha2hhbmRsZV90
eXBlIG0sCi0jZWxzZQogCXN0cnVjdCBtYnVmICptLAotI2VuZGlmCiAJc3RydWN0IHNvY2thZGRy
ICphZGRyLAotI2lmIGRlZmluZWQoX19QYW5kYV9fKQotCXBha2hhbmRsZV90eXBlIGNvbnRyb2ws
Ci0jZWxzZQogCXN0cnVjdCBtYnVmICpjb250cm9sLAotI2VuZGlmCi0jaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMDAwCisjaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzdHJ1Y3QgdGhyZWFkICpwLAot
I2VsaWYgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNlbGlmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCVBLVEhSRUFEIHAsCiAjZWxzZQotI2lmIGRlZmluZWQoX19B
UFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCXN0cnVjdCBwcm9jICpwIFNDVFBfVU5VU0VELAogI2Vsc2UKIAlzdHJ1Y3QgcHJvYyAqcCwK
QEAgLTEwNzk1LDcgKzEwODQ0LDcgQEAgc2N0cF9vdXRwdXQoCiAJCQkgICAgKHN0cnVjdCB1aW8g
KilOVUxMLAogCQkJICAgIG0sCiAJCQkgICAgY29udHJvbCwKLSNpZiBkZWZpbmVkKF9fQVBQTEVf
XykgfHwgZGVmaW5lZChfX1BhbmRhX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAJCQkgICAgZmxhZ3MKICNlbHNlCiAJCQkgICAgZmxhZ3MsIHAK
QEAgLTExMDIwLDExICsxMTA2OSw3IEBAIHNjdHBfZmlsbF9pbl9yZXN0OgogfQogCiB2b2lkCi1z
Y3RwX3NlbmRfc2FjayhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIGludCBzb19sb2NrZWQKLSNpZiAh
ZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQotCVND
VFBfVU5VU0VECi0jZW5kaWYKLSkKK3NjdHBfc2VuZF9zYWNrKHN0cnVjdCBzY3RwX3RjYiAqc3Rj
YiwgaW50IHNvX2xvY2tlZCkKIHsKIAkvKi0KIAkgKiBRdWV1ZSB1cCBhIFNBQ0sgb3IgTlItU0FD
SyBpbiB0aGUgY29udHJvbCBxdWV1ZS4KQEAgLTExMDkwLDcgKzExMTM1LDcgQEAgc2N0cF9zZW5k
X3NhY2soc3RydWN0IHNjdHBfdGNiICpzdGNiLCBpbnQgc29fbG9ja2VkCiAJCQlpZiAoc3RjYi0+
YXNvYy5kZWxheWVkX2FjaykgewogCQkJCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVf
UkVDViwKIAkJCQkgICAgICAgICAgICAgICAgc3RjYi0+c2N0cF9lcCwgc3RjYiwgTlVMTCwKLQkJ
CQkgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBfT1VUUFVUICsgU0NUUF9MT0NfMyk7CisJ
CQkJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX09VVFBVVCArIFNDVFBfTE9DXzQpOwog
CQkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1JFQ1YsCiAJCQkJICAgIHN0Y2It
PnNjdHBfZXAsIHN0Y2IsIE5VTEwpOwogCQkJfSBlbHNlIHsKQEAgLTExMTU5LDcgKzExMjA0LDcg
QEAgc2N0cF9zZW5kX3NhY2soc3RydWN0IHNjdHBfdGNiICpzdGNiLCBpbnQgc29fbG9ja2VkCiAJ
CWlmIChzdGNiLT5hc29jLmRlbGF5ZWRfYWNrKSB7CiAJCQlzY3RwX3RpbWVyX3N0b3AoU0NUUF9U
SU1FUl9UWVBFX1JFQ1YsCiAJCQkgICAgICAgICAgICAgICAgc3RjYi0+c2N0cF9lcCwgc3RjYiwg
TlVMTCwKLQkJCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUF9PVVRQVVQgKyBTQ1RQX0xP
Q180KTsKKwkJCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUF9PVVRQVVQgKyBTQ1RQX0xP
Q181KTsKIAkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1JFQ1YsCiAJCQkgICAg
c3RjYi0+c2N0cF9lcCwgc3RjYiwgTlVMTCk7CiAJCX0gZWxzZSB7CkBAIC0xMTIwNSw3ICsxMTI1
MCw3IEBAIHNjdHBfc2VuZF9zYWNrKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgaW50IHNvX2xvY2tl
ZAogCQlpZiAoaGlnaGVzdF90c24gPiBhc29jLT5tYXBwaW5nX2FycmF5X2Jhc2VfdHNuKSB7CiAJ
CQlzaXogPSAoKChoaWdoZXN0X3RzbiAtIGFzb2MtPm1hcHBpbmdfYXJyYXlfYmFzZV90c24pICsg
MSkgKyA3KSAvIDg7CiAJCX0gZWxzZSB7Ci0JCQlzaXogPSAoKChNQVhfVFNOIC0gaGlnaGVzdF90
c24pICsgMSkgKyBoaWdoZXN0X3RzbiArIDcpIC8gODsKKwkJCXNpeiA9ICgoKE1BWF9UU04gLSBh
c29jLT5tYXBwaW5nX2FycmF5X2Jhc2VfdHNuKSArIDEpICsgaGlnaGVzdF90c24gKyA3KSAvIDg7
CiAJCX0KIAl9IGVsc2UgewogCQlzYWNrID0gTlVMTDsKQEAgLTExNDE2LDExICsxMTQ2MSw3IEBA
IHNjdHBfc2VuZF9zYWNrKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgaW50IHNvX2xvY2tlZAogfQog
CiB2b2lkCi1zY3RwX3NlbmRfYWJvcnRfdGNiKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0
IG1idWYgKm9wZXJyLCBpbnQgc29fbG9ja2VkCi0jaWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAh
ZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKLSAgICBTQ1RQX1VOVVNFRAotI2VuZGlmCi0g
ICAgKQorc2N0cF9zZW5kX2Fib3J0X3RjYihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBt
YnVmICpvcGVyciwgaW50IHNvX2xvY2tlZCkKIHsKIAlzdHJ1Y3QgbWJ1ZiAqbV9hYm9ydCwgKm0s
ICptX2xhc3Q7CiAJc3RydWN0IG1idWYgKm1fb3V0LCAqbV9lbmQgPSBOVUxMOwpAQCAtMTE0MzIs
NyArMTE0NzMsNyBAQCBzY3RwX3NlbmRfYWJvcnRfdGNiKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwg
c3RydWN0IG1idWYgKm9wZXJyLCBpbnQgc29fbG9ja2VkCiAJaW50IGVycm9yOwogCXVpbnQxNl90
IGNhdXNlX2xlbiwgY2h1bmtfbGVuLCBwYWRkaW5nX2xlbjsKIAotI2lmIGRlZmluZWQoX19BUFBM
RV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
CWlmIChzb19sb2NrZWQpIHsKIAkJc2N0cF9sb2NrX2Fzc2VydChTQ1RQX0lOUF9TTyhzdGNiLT5z
Y3RwX2VwKSk7CiAJfSBlbHNlIHsKQEAgLTExNTEzLDcgKzExNTU0LDcgQEAgc2N0cF9zZW5kX2Fi
b3J0X3RjYihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBtYnVmICpvcGVyciwgaW50IHNv
X2xvY2tlZAogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dCwg
YXV0aF9vZmZzZXQsIGF1dGgsIHN0Y2ItPmFzb2MuYXV0aGluZm8uYWN0aXZlX2tleWlkLCAxLCAw
LCAwLAogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGNiLT5zY3Rw
X2VwLT5zY3RwX2xwb3J0LCBzdGNiLT5ycG9ydCwgaHRvbmwodnRhZyksCiAJICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0Y2ItPmFzb2MucHJpbWFyeV9kZXN0aW5hdGlv
bi0+cG9ydCwgTlVMTCwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAsIDAsCiAjZW5kaWYKIAkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc29fbG9ja2VkKSkpIHsKQEAgLTExNTYzLDcgKzExNjA0LDcg
QEAgc2N0cF9zZW5kX3NodXRkb3duX2NvbXBsZXRlKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RjYi0+c2N0cF9lcC0+c2N0
cF9scG9ydCwgc3RjYi0+cnBvcnQsCiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGh0b25sKHZ0YWcpLAogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuZXQtPnBvcnQsIE5VTEwsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLAogI2VuZGlmCiAJICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNDVFBfU09fTk9UX0xPQ0tFRCkpKSB7CkBAIC0x
MTU3OSw3ICsxMTYyMCw3IEBAIHNjdHBfc2VuZF9zaHV0ZG93bl9jb21wbGV0ZShzdHJ1Y3Qgc2N0
cF90Y2IgKnN0Y2IsCiAJcmV0dXJuOwogfQogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogc3RhdGlj
IHZvaWQKIHNjdHBfc2VuZF9yZXNwX21zZyhzdHJ1Y3Qgc29ja2FkZHIgKnNyYywgc3RydWN0IHNv
Y2thZGRyICpkc3QsCiAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNjdHBoZHIgKnNoLCB1aW50
MzJfdCB2dGFnLApAQCAtMTE1OTQsMTEgKzExNjM1LDcgQEAgc2N0cF9zZW5kX3Jlc3BfbXNnKHN0
cnVjdCBzb2NrYWRkciAqc3JjLCBzdHJ1Y3Qgc29ja2FkZHIgKmRzdCwKICAgICAgICAgICAgICAg
ICAgICB1aW50MzJfdCB2cmZfaWQgU0NUUF9VTlVTRUQsIHVpbnQxNl90IHBvcnQpCiAjZW5kaWYK
IHsKLSNpZmRlZiBfX1BhbmRhX18KLQlwYWtoYW5kbGVfdHlwZSBvX3BhazsKLSNlbHNlCiAJc3Ry
dWN0IG1idWYgKm9fcGFrOwotI2VuZGlmCiAJc3RydWN0IG1idWYgKm1vdXQ7CiAJc3RydWN0IHNj
dHBoZHIgKnNob3V0OwogCXN0cnVjdCBzY3RwX2NodW5raGRyICpjaDsKQEAgLTExNjA3LDcgKzEx
NjQ0LDcgQEAgc2N0cF9zZW5kX3Jlc3BfbXNnKHN0cnVjdCBzb2NrYWRkciAqc3JjLCBzdHJ1Y3Qg
c29ja2FkZHIgKmRzdCwKICNlbmRpZgogCWludCByZXQsIGxlbiwgY2F1c2VfbGVuLCBwYWRkaW5n
X2xlbjsKICNpZmRlZiBJTkVUCi0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19Q
YW5kYV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCXNjdHBfcm91dGVfdCBybzsKICNlbmRpZgogCXN0cnVjdCBzb2NrYWRkcl9pbiAqc3JjX3Np
biwgKmRzdF9zaW47CkBAIC0xMTY2Miw3ICsxMTY5OSw3IEBAIHNjdHBfc2VuZF9yZXNwX21zZyhz
dHJ1Y3Qgc29ja2FkZHIgKnNyYywgc3RydWN0IHNvY2thZGRyICpkc3QsCiAJCWxlbiArPSBzaXpl
b2Yoc3RydWN0IHVkcGhkcik7CiAJfQogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisj
aWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaWYgZGVm
aW5lZChBUFBMRV9MRU9QQVJEKSB8fCBkZWZpbmVkKEFQUExFX1NOT1dMRU9QQVJEKQogCW1vdXQg
PSBzY3RwX2dldF9tYnVmX2Zvcl9tc2cobGVuICsgbWF4X2xpbmtoZHIsIDEsIE1fTk9XQUlULCAx
LCBNVF9EQVRBKTsKICNlbHNlCkBAIC0xMTY3Nyw3ICsxMTcxNCw3IEBAIHNjdHBfc2VuZF9yZXNw
X21zZyhzdHJ1Y3Qgc29ja2FkZHIgKnNyYywgc3RydWN0IHNvY2thZGRyICpkc3QsCiAJCX0KIAkJ
cmV0dXJuOwogCX0KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZiBkZWZpbmVkKEFQUExFX0xFT1BBUkQp
IHx8IGRlZmluZWQoQVBQTEVfU05PV0xFT1BBUkQpCiAJU0NUUF9CVUZfUkVTVl9VRihtb3V0LCBt
YXhfbGlua2hkcik7CiAjZWxzZQpAQCAtMTE2ODgsNyArMTE3MjUsNyBAQCBzY3RwX3NlbmRfcmVz
cF9tc2coc3RydWN0IHNvY2thZGRyICpzcmMsIHN0cnVjdCBzb2NrYWRkciAqZHN0LAogI2VuZGlm
CiAJU0NUUF9CVUZfTEVOKG1vdXQpID0gbGVuOwogCVNDVFBfQlVGX05FWFQobW91dCkgPSBjYXVz
ZTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJTV9TRVRGSUIobW91dCwgZmlibnVtKTsKIAltb3V0
LT5tX3BrdGhkci5mbG93aWQgPSBtZmxvd2lkOwogCU1fSEFTSFRZUEVfU0VUKG1vdXQsIG1mbG93
dHlwZSk7CkBAIC0xMTcwOCwxOCArMTE3NDUsMTYgQEAgc2N0cF9zZW5kX3Jlc3BfbXNnKHN0cnVj
dCBzb2NrYWRkciAqc3JjLCBzdHJ1Y3Qgc29ja2FkZHIgKmRzdCwKIAkJaXAtPmlwX3YgPSBJUFZF
UlNJT047CiAJCWlwLT5pcF9obCA9IChzaXplb2Yoc3RydWN0IGlwKSA+PiAyKTsKIAkJaXAtPmlw
X3RvcyA9IDA7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKLSNpZiBfX0ZyZWVCU0RfdmVyc2lv
biA+PSAxMDAwMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKIAkJaXAtPmlwX29mZiA9IGh0b25zKElQX0RGKTsKLSNlbHNlCi0JCWlwLT5pcF9v
ZmYgPSBJUF9ERjsKLSNlbmRpZgotI2VsaWYgZGVmaW5lZChXSVRIX0NPTlZFUlRfSVBfT0ZGKSB8
fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19EYXJ3aW4pCisj
ZWxpZiBkZWZpbmVkKFdJVEhfQ09OVkVSVF9JUF9PRkYpIHx8IGRlZmluZWQoX19BUFBMRV9fKQog
CQlpcC0+aXBfb2ZmID0gSVBfREY7CiAjZWxzZQogCQlpcC0+aXBfb2ZmID0gaHRvbnMoSVBfREYp
OwogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCisJCWlwLT5pcF9pZCA9IGh0b25zKGlwX2lkKyspOworI2VsaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykKIAkJaXBfZmlsbGlkKGlwKTsKICNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQogI2lm
IFJBTkRPTV9JUF9JRApAQCAtMTE3MjcsOCArMTE3NjIsNiBAQCBzY3RwX3NlbmRfcmVzcF9tc2co
c3RydWN0IHNvY2thZGRyICpzcmMsIHN0cnVjdCBzb2NrYWRkciAqZHN0LAogI2Vsc2UKIAkJaXAt
PmlwX2lkID0gaHRvbnMoaXBfaWQrKyk7CiAjZW5kaWYKLSNlbGlmIGRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKLQkJaXAtPmlwX2lkID0gaHRvbnMoaXBfaWQrKyk7CiAjZWxzZQogCQlpcC0+aXBfaWQg
PSBpcF9pZCsrOwogI2VuZGlmCkBAIC0xMTc1MSw3ICsxMTc4NCw3IEBAIHNjdHBfc2VuZF9yZXNw
X21zZyhzdHJ1Y3Qgc29ja2FkZHIgKnNyYywgc3RydWN0IHNvY2thZGRyICpkc3QsCiAJCWRzdF9z
aW42ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilkc3Q7CiAJCWlwNiA9IG10b2QobW91dCwgc3Ry
dWN0IGlwNl9oZHIgKik7CiAJCWlwNi0+aXA2X2Zsb3cgPSBodG9ubCgweDYwMDAwMDAwKTsKLSNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAJCWlmIChWX2lwNl9hdXRvX2Zsb3dsYWJlbCkgewogCQkJaXA2
LT5pcDZfZmxvdyB8PSAoaHRvbmwoaXA2X3JhbmRvbWZsb3dsYWJlbCgpKSAmIElQVjZfRkxPV0xB
QkVMX01BU0spOwogCQl9CkBAIC0xMTgyNSwxNiArMTE4NTgsMTMgQEAgc2N0cF9zZW5kX3Jlc3Bf
bXNnKHN0cnVjdCBzb2NrYWRkciAqc3JjLCBzdHJ1Y3Qgc29ja2FkZHIgKmRzdCwKIAlzd2l0Y2gg
KGRzdC0+c2FfZmFtaWx5KSB7CiAjaWZkZWYgSU5FVAogCWNhc2UgQUZfSU5FVDoKLSNpZiBkZWZp
bmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1BhbmRhX18pCisjaWYgZGVmaW5lZChfX0FQUExF
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCS8qIHphcCB0aGUgc3RhY2sgcG9pbnRl
ciB0byB0aGUgcm91dGUgKi8KIAkJbWVtc2V0KCZybywgMCwgc2l6ZW9mKHNjdHBfcm91dGVfdCkp
OwotI2lmIGRlZmluZWQoX19QYW5kYV9fKQotCQlyby5fbF9hZGRyLnNhLnNhX2ZhbWlseSA9IEFG
X0lORVQ7Ci0jZW5kaWYKICNlbmRpZgogCQlpZiAocG9ydCkgewotI2lmICFkZWZpbmVkKF9fV2lu
ZG93c19fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQotI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pICYmICgoX19GcmVlQlNEX3ZlcnNpb24gPiA4MDMwMDAgJiYgX19GcmVlQlNEX3ZlcnNpb24g
PCA5MDAwMDApIHx8IF9fRnJlZUJTRF92ZXJzaW9uID4gOTAwMDAwKQorI2lmICFkZWZpbmVkKF9X
SU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KQogCQkJaWYgKFZfdWRwX2Nrc3VtKSB7CiAJCQkJdWRwLT51aF9zdW0gPSBpbl9wc2V1ZG8oaXAt
PmlwX3NyYy5zX2FkZHIsIGlwLT5pcF9kc3Quc19hZGRyLCB1ZHAtPnVoX3VsZW4gKyBodG9ucyhJ
UFBST1RPX1VEUCkpOwogCQkJfSBlbHNlIHsKQEAgLTExODQ3LDEyICsxMTg3Nyw4IEBAIHNjdHBf
c2VuZF9yZXNwX21zZyhzdHJ1Y3Qgc29ja2FkZHIgKnNyYywgc3RydWN0IHNvY2thZGRyICpkc3Qs
CiAJCQl1ZHAtPnVoX3N1bSA9IDA7CiAjZW5kaWYKIAkJfQotI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pCi0jaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0gMTAwMDAwMAorI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCWlwLT5pcF9sZW4gPSBodG9ucyhs
ZW4pOwotI2Vsc2UKLQkJaXAtPmlwX2xlbiA9IGxlbjsKLSNlbmRpZgogI2VsaWYgZGVmaW5lZChf
X0FQUExFX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJaXAtPmlwX2xlbiA9IGxlbjsK
ICNlbHNlCkBAIC0xMTg2MSw4ICsxMTg4Nyw4IEBAIHNjdHBfc2VuZF9yZXNwX21zZyhzdHJ1Y3Qg
c29ja2FkZHIgKnNyYywgc3RydWN0IHNvY2thZGRyICpkc3QsCiAJCWlmIChwb3J0KSB7CiAJCQlz
aG91dC0+Y2hlY2tzdW0gPSBzY3RwX2NhbGN1bGF0ZV9ja3N1bShtb3V0LCBzaXplb2Yoc3RydWN0
IGlwKSArIHNpemVvZihzdHJ1Y3QgdWRwaGRyKSk7CiAJCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19z
ZW5kc3djcmMpOwotI2lmICFkZWZpbmVkKF9fV2luZG93c19fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICgoX19GcmVlQlNEX3ZlcnNpb24g
PiA4MDMwMDAgJiYgX19GcmVlQlNEX3ZlcnNpb24gPCA5MDAwMDApIHx8IF9fRnJlZUJTRF92ZXJz
aW9uID4gOTAwMDAwKQorI2lmICFkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQogCQkJaWYgKFZfdWRwX2Nrc3VtKSB7CiAJ
CQkJU0NUUF9FTkFCTEVfVURQX0NTVU0ob19wYWspOwogCQkJfQpAQCAtMTE4NzEsNyArMTE4OTcs
NyBAQCBzY3RwX3NlbmRfcmVzcF9tc2coc3RydWN0IHNvY2thZGRyICpzcmMsIHN0cnVjdCBzb2Nr
YWRkciAqZHN0LAogI2VuZGlmCiAjZW5kaWYKIAkJfSBlbHNlIHsKLSNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDAwMDAKKyNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJbW91dC0+bV9wa3RoZHIuY3N1
bV9mbGFncyA9IENTVU1fU0NUUDsKIAkJCW1vdXQtPm1fcGt0aGRyLmNzdW1fZGF0YSA9IG9mZnNl
dG9mKHN0cnVjdCBzY3RwaGRyLCBjaGVja3N1bSk7CiAJCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19z
ZW5kaHdjcmMpOwpAQCAtMTE4ODUsNyArMTE5MTEsNyBAQCBzY3RwX3NlbmRfcmVzcF9tc2coc3Ry
dWN0IHNvY2thZGRyICpzcmMsIHN0cnVjdCBzb2NrYWRkciAqZHN0LAogCQkJc2N0cF9wYWNrZXRf
bG9nKG9fcGFrKTsKIAkJfQogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmlu
ZWQoX19QYW5kYV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCQlTQ1RQX0lQX09VVFBVVChyZXQsIG9fcGFrLCAmcm8sIE5VTEwsIHZyZl9pZCk7
CiAJCS8qIEZyZWUgdGhlIHJvdXRlIGlmIHdlIGdvdCBvbmUgYmFjayAqLwogCQlpZiAocm8ucm9f
cnQpIHsKQEAgLTExODkzLDMwICsxMTkxOSwzMSBAQCBzY3RwX3NlbmRfcmVzcF9tc2coc3RydWN0
IHNvY2thZGRyICpzcmMsIHN0cnVjdCBzb2NrYWRkciAqZHN0LAogCQkJcm8ucm9fcnQgPSBOVUxM
OwogCQl9CiAjZWxzZQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCisJCVNDVFBfUFJPQkU1KHNlbmQsIE5VTEwsIE5VTEwsIGlwLCBOVUxMLCBzaG91
dCk7CisjZW5kaWYKIAkJU0NUUF9JUF9PVVRQVVQocmV0LCBvX3BhaywgTlVMTCwgTlVMTCwgdnJm
X2lkKTsKICNlbmRpZgogCQlicmVhazsKICNlbmRpZgogI2lmZGVmIElORVQ2CiAJY2FzZSBBRl9J
TkVUNjoKLQkJaXA2LT5pcDZfcGxlbiA9IGh0b25zKGxlbiAtIHNpemVvZihzdHJ1Y3QgaXA2X2hk
cikpOworCQlpcDYtPmlwNl9wbGVuID0gaHRvbnMoKHVpbnQxNl90KShsZW4gLSBzaXplb2Yoc3Ry
dWN0IGlwNl9oZHIpKSk7CiAJCWlmIChwb3J0KSB7CiAJCQlzaG91dC0+Y2hlY2tzdW0gPSBzY3Rw
X2NhbGN1bGF0ZV9ja3N1bShtb3V0LCBzaXplb2Yoc3RydWN0IGlwNl9oZHIpICsgc2l6ZW9mKHN0
cnVjdCB1ZHBoZHIpKTsKIAkJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3NlbmRzd2NyYyk7Ci0jaWYg
ZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmIGRl
ZmluZWQoX1dJTjMyKQogCQkJdWRwLT51aF9zdW0gPSAwOwotI2VsaWYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKKyNlbHNlCiAJCQlpZiAoKHVkcC0+dWhfc3VtID0gaW42X2Nrc3VtKG9fcGFrLCBJ
UFBST1RPX1VEUCwgc2l6ZW9mKHN0cnVjdCBpcDZfaGRyKSwgbGVuIC0gc2l6ZW9mKHN0cnVjdCBp
cDZfaGRyKSkpID09IDApIHsKIAkJCQl1ZHAtPnVoX3N1bSA9IDB4ZmZmZjsKIAkJCX0KKyNlbmRp
ZgogI2VuZGlmCiAJCX0gZWxzZSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVl
QlNEX3ZlcnNpb24gPj0gOTAwMDAwCi0jaWYgX19GcmVlQlNEX3ZlcnNpb24gPiA5MDEwMDAKKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJbW91
dC0+bV9wa3RoZHIuY3N1bV9mbGFncyA9IENTVU1fU0NUUF9JUFY2OwotI2Vsc2UKLQkJCW1vdXQt
Pm1fcGt0aGRyLmNzdW1fZmxhZ3MgPSBDU1VNX1NDVFA7Ci0jZW5kaWYKIAkJCW1vdXQtPm1fcGt0
aGRyLmNzdW1fZGF0YSA9IG9mZnNldG9mKHN0cnVjdCBzY3RwaGRyLCBjaGVja3N1bSk7CiAJCQlT
Q1RQX1NUQVRfSU5DUihzY3Rwc19zZW5kaHdjcmMpOwogI2Vsc2UKQEAgLTExOTI4LDYgKzExOTU1
LDkgQEAgc2N0cF9zZW5kX3Jlc3BfbXNnKHN0cnVjdCBzb2NrYWRkciAqc3JjLCBzdHJ1Y3Qgc29j
a2FkZHIgKmRzdCwKIAkJaWYgKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9sb2dnaW5nX2xldmVsKSAm
IFNDVFBfTEFTVF9QQUNLRVRfVFJBQ0lORykgewogCQkJc2N0cF9wYWNrZXRfbG9nKG9fcGFrKTsK
IAkJfQorI2VuZGlmCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKKwkJU0NUUF9QUk9CRTUoc2VuZCwgTlVMTCwgTlVMTCwgaXA2LCBOVUxMLCBzaG91
dCk7CiAjZW5kaWYKIAkJU0NUUF9JUDZfT1VUUFVUKHJldCwgb19wYWssIE5VTEwsIE5VTEwsIE5V
TEwsIHZyZl9pZCk7CiAJCWJyZWFrOwpAQCAtMTE5NzAsNiArMTIwMDAsMTEgQEAgc2N0cF9zZW5k
X3Jlc3BfbXNnKHN0cnVjdCBzb2NrYWRkciAqc3JjLCBzdHJ1Y3Qgc29ja2FkZHIgKmRzdCwKIAkJ
cmV0dXJuOwogCX0KIAlTQ1RQREJHKFNDVFBfREVCVUdfT1VUUFVUMywgInJldHVybiBmcm9tIHNl
bmQgaXMgJWRcbiIsIHJldCk7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKKwlpZiAocG9ydCkgeworCQlVRFBTVEFUX0lOQyh1ZHBzX29wYWNrZXRz
KTsKKwl9CisjZW5kaWYKIAlTQ1RQX1NUQVRfSU5DUihzY3Rwc19zZW5kcGFja2V0cyk7CiAJU0NU
UF9TVEFUX0lOQ1JfQ09VTlRFUjY0KHNjdHBzX291dHBhY2tldHMpOwogCVNDVFBfU1RBVF9JTkNS
X0NPVU5URVI2NChzY3Rwc19vdXRjb250cm9sY2h1bmtzKTsKQEAgLTExOTgyLDI0ICsxMjAxNywy
MCBAQCBzY3RwX3NlbmRfcmVzcF9tc2coc3RydWN0IHNvY2thZGRyICpzcmMsIHN0cnVjdCBzb2Nr
YWRkciAqZHN0LAogdm9pZAogc2N0cF9zZW5kX3NodXRkb3duX2NvbXBsZXRlMihzdHJ1Y3Qgc29j
a2FkZHIgKnNyYywgc3RydWN0IHNvY2thZGRyICpkc3QsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCBzY3RwaGRyICpzaCwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgbWZsb3d0eXBlLCB1aW50MzJfdCBtZmxvd2lk
LCB1aW50MTZfdCBmaWJudW0sCiAjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWludDMyX3QgdnJmX2lkLCB1aW50MTZfdCBwb3J0KQogewogCXNjdHBfc2VuZF9yZXNwX21zZyhz
cmMsIGRzdCwgc2gsIDAsIFNDVFBfU0hVVERPV05fQ09NUExFVEUsIE5VTEwsCi0jaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogCSAgICAgICAgICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQsIGZpYm51
bSwKICNlbmRpZgogCSAgICAgICAgICAgICAgICAgICB2cmZfaWQsIHBvcnQpOwogfQogCiB2b2lk
Ci1zY3RwX3NlbmRfaGIoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9uZXRzICpu
ZXQsaW50IHNvX2xvY2tlZAotI2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoU0NU
UF9TT19MT0NLX1RFU1RJTkcpCi0JU0NUUF9VTlVTRUQKLSNlbmRpZgotKQorc2N0cF9zZW5kX2hi
KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfbmV0cyAqbmV0LGludCBzb19sb2Nr
ZWQpCiB7CiAJc3RydWN0IHNjdHBfdG1pdF9jaHVuayAqY2hrOwogCXN0cnVjdCBzY3RwX2hlYXJ0
YmVhdF9jaHVuayAqaGI7CkBAIC0xMjI0MCw3ICsxMjI3MSw3IEBAIHNjdHBfc2VuZF9wYWNrZXRf
ZHJvcHBlZChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX25ldHMgKm5ldCwKIAlj
aGstPmZsYWdzID0gMDsKIAlsZW4gLT0gaXBobGVuOwogCWNoay0+c2VuZF9zaXplID0gbGVuOwot
ICAgICAgICAvKiBWYWxpZGF0ZSB0aGF0IHdlIGRvIG5vdCBoYXZlIGFuIEFCT1JUIGluIGhlcmUu
ICovCisJLyogVmFsaWRhdGUgdGhhdCB3ZSBkbyBub3QgaGF2ZSBhbiBBQk9SVCBpbiBoZXJlLiAq
LwogCW9mZnNldCA9IGlwaGxlbiArIHNpemVvZihzdHJ1Y3Qgc2N0cGhkcik7CiAJY2ggPSAoc3Ry
dWN0IHNjdHBfY2h1bmtoZHIgKilzY3RwX21fZ2V0cHRyKG0sIG9mZnNldCwKIAkJCQkJCSAgIHNp
emVvZigqY2gpLCAodWludDhfdCAqKSAmIGNodW5rX2J1Zik7CkBAIC0xMjg2Niw3ICsxMjg5Nyw2
IEBAIHNjdHBfc2VuZF9zdHJfcmVzZXRfcmVxKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAljaGst
PmJvb2tfc2l6ZSA9IHNpemVvZihzdHJ1Y3Qgc2N0cF9jaHVua2hkcik7CiAJY2hrLT5zZW5kX3Np
emUgPSBTQ1RQX1NJWkUzMihjaGstPmJvb2tfc2l6ZSk7CiAJY2hrLT5ib29rX3NpemVfc2NhbGUg
PSAwOwotCiAJY2hrLT5kYXRhID0gc2N0cF9nZXRfbWJ1Zl9mb3JfbXNnKE1DTEJZVEVTLCAwLCBN
X05PV0FJVCwgMSwgTVRfREFUQSk7CiAJaWYgKGNoay0+ZGF0YSA9PSBOVUxMKSB7CiAJCXNjdHBf
ZnJlZV9hX2NodW5rKHN0Y2IsIGNoaywgU0NUUF9TT19MT0NLRUQpOwpAQCAtMTMwMDgsNyArMTMw
MzgsNyBAQCBza2lwX3N0dWZmOgogdm9pZAogc2N0cF9zZW5kX2Fib3J0KHN0cnVjdCBtYnVmICpt
LCBpbnQgaXBobGVuLCBzdHJ1Y3Qgc29ja2FkZHIgKnNyYywgc3RydWN0IHNvY2thZGRyICpkc3Qs
CiAgICAgICAgICAgICAgICAgc3RydWN0IHNjdHBoZHIgKnNoLCB1aW50MzJfdCB2dGFnLCBzdHJ1
Y3QgbWJ1ZiAqY2F1c2UsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogICAgICAgICAgICAgICAgIHVp
bnQ4X3QgbWZsb3d0eXBlLCB1aW50MzJfdCBtZmxvd2lkLCB1aW50MTZfdCBmaWJudW0sCiAjZW5k
aWYKICAgICAgICAgICAgICAgICB1aW50MzJfdCB2cmZfaWQsIHVpbnQxNl90IHBvcnQpCkBAIC0x
MzAyMCw3ICsxMzA1MCw3IEBAIHNjdHBfc2VuZF9hYm9ydChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlw
aGxlbiwgc3RydWN0IHNvY2thZGRyICpzcmMsIHN0cnVjdCBzb2NrYWRkCiAJCXJldHVybjsKIAl9
CiAJc2N0cF9zZW5kX3Jlc3BfbXNnKHNyYywgZHN0LCBzaCwgdnRhZywgU0NUUF9BQk9SVF9BU1NP
Q0lBVElPTiwgY2F1c2UsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCSAgICAgICAgICAgICAgICAg
ICBtZmxvd3R5cGUsIG1mbG93aWQsIGZpYm51bSwKICNlbmRpZgogCSAgICAgICAgICAgICAgICAg
ICB2cmZfaWQsIHBvcnQpOwpAQCAtMTMwMzAsMTMgKzEzMDYwLDEzIEBAIHNjdHBfc2VuZF9hYm9y
dChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgc3RydWN0IHNvY2thZGRyICpzcmMsIHN0cnVj
dCBzb2NrYWRkCiB2b2lkCiBzY3RwX3NlbmRfb3BlcnJfdG8oc3RydWN0IHNvY2thZGRyICpzcmMs
IHN0cnVjdCBzb2NrYWRkciAqZHN0LAogICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY3RwaGRy
ICpzaCwgdWludDMyX3QgdnRhZywgc3RydWN0IG1idWYgKmNhdXNlLAotI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKICAgICAgICAgICAgICAgICAgICB1aW50OF90IG1mbG93dHlwZSwgdWludDMyX3QgbWZs
b3dpZCwgdWludDE2X3QgZmlibnVtLAogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgdWludDMy
X3QgdnJmX2lkLCB1aW50MTZfdCBwb3J0KQogewogCXNjdHBfc2VuZF9yZXNwX21zZyhzcmMsIGRz
dCwgc2gsIHZ0YWcsIFNDVFBfT1BFUkFUSU9OX0VSUk9SLCBjYXVzZSwKLSNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJICAgICAgICAgICAgICAgICAgIG1mbG93dHlwZSwgbWZsb3dpZCwgZmlibnVtLAog
I2VuZGlmCiAJICAgICAgICAgICAgICAgICAgIHZyZl9pZCwgcG9ydCk7CkBAIC0xMzA0NiwyNyAr
MTMwNzYsMTQgQEAgc2N0cF9zZW5kX29wZXJyX3RvKHN0cnVjdCBzb2NrYWRkciAqc3JjLCBzdHJ1
Y3Qgc29ja2FkZHIgKmRzdCwKIHN0YXRpYyBzdHJ1Y3QgbWJ1ZiAqCiBzY3RwX2NvcHlfcmVzdW1l
KHN0cnVjdCB1aW8gKnVpbywKIAkJIGludCBtYXhfc2VuZF9sZW4sCi0jaWYgKGRlZmluZWQoX19G
cmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID4gNjAyMDAwKSB8fCBkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogCQkgaW50IHVzZXJfbWFya3NfZW9yLAogI2VuZGlmCiAJCSBpbnQgKmVycm9yLAogCQkg
dWludDMyX3QgKnNuZG91dCwKIAkJIHN0cnVjdCBtYnVmICoqbmV3X3RhaWwpCiB7Ci0jaWYgZGVm
aW5lZChfX1BhbmRhX18pCi0Jc3RydWN0IG1idWYgKm07Ci0KLQltID0gbV91aW90b21idWYodWlv
LCBNX1dBSVRPSywgbWF4X3NlbmRfbGVuLCAwLAotCQkJKHVzZXJfbWFya3NfZW9yID8gTV9FT1Ig
OiAwKSk7Ci0JaWYgKG0gPT0gTlVMTCkgewotCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKE5VTEwsIE5V
TEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX09VVFBVVCwgRU5PQlVGUyk7Ci0JCSplcnJvciA9IEVO
T0JVRlM7Ci0JfSBlbHNlIHsKLQkJKnNuZG91dCA9IG1fbGVuZ3RoKG0sIE5VTEwpOwotCQkqbmV3
X3RhaWwgPSBtX2xhc3QobSk7Ci0JfQotCXJldHVybiAobSk7Ci0jZWxpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDYwMjAwMCB8fCBkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCXN0cnVjdCBtYnVmICptOwogCiAJbSA9IG1fdWlvdG9tYnVmKHVpbywgTV9XQUlUT0ssIG1h
eF9zZW5kX2xlbiwgMCwKQEAgLTEzMDgzLDcgKzEzMTAwLDcgQEAgc2N0cF9jb3B5X3Jlc3VtZShz
dHJ1Y3QgdWlvICp1aW8sCiAJaW50IGxlZnQsIGNhbmNweSwgd2lsbGNweTsKIAlzdHJ1Y3QgbWJ1
ZiAqbSwgKmhlYWQ7CiAKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZiBkZWZpbmVkKEFQUExFX0xFT1BB
UkQpCiAJbGVmdCA9IChpbnQpbWluKHVpby0+dWlvX3Jlc2lkLCBtYXhfc2VuZF9sZW4pOwogI2Vs
c2UKQEAgLTEzMTQ5LDE3ICsxMzE2Niw3IEBAIHNjdHBfY29weV9vbmUoc3RydWN0IHNjdHBfc3Ry
ZWFtX3F1ZXVlX3BlbmRpbmcgKnNwLAogICAgICAgICAgICAgICBzdHJ1Y3QgdWlvICp1aW8sCiAg
ICAgICAgICAgICAgIGludCByZXN2X3VwZnJvbnQpCiB7Ci0jaWYgZGVmaW5lZChfX1BhbmRhX18p
Ci0Jc3AtPmRhdGEgPSBtX3Vpb3RvbWJ1Zih1aW8sIE1fV0FJVE9LLCBzcC0+bGVuZ3RoLAotCSAg
ICAgICAgICAgICAgICAgICAgICAgcmVzdl91cGZyb250LCAwKTsKLQlpZiAoc3AtPmRhdGEgPT0g
TlVMTCkgewotCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKE5VTEwsIE5VTEwsIE5VTEwsIFNDVFBfRlJP
TV9TQ1RQX09VVFBVVCwgRU5PQlVGUyk7Ci0JCXJldHVybiAoRU5PQlVGUyk7Ci0JfQotCi0Jc3At
PnRhaWxfbWJ1ZiA9IG1fbGFzdChzcC0+ZGF0YSk7Ci0JcmV0dXJuICgwKTsKLSNlbGlmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID4gNjAyMDAwIHx8IGRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAJc3AtPmRhdGEgPSBtX3Vpb3RvbWJ1Zih1aW8sIE1fV0FJVE9LLCBzcC0+bGVu
Z3RoLAogCSAgICAgICAgICAgICAgICAgICAgICAgcmVzdl91cGZyb250LCAwKTsKIAlpZiAoc3At
PmRhdGEgPT0gTlVMTCkgewpAQCAtMTMyMzIsNyArMTMyMzksNyBAQCBzY3RwX2NvcHlfaXRfaW4o
c3RydWN0IHNjdHBfdGNiICpzdGNiLAogICAgIHN0cnVjdCBzY3RwX3NuZHJjdmluZm8gKnNyY3Ys
CiAgICAgc3RydWN0IHVpbyAqdWlvLAogICAgIHN0cnVjdCBzY3RwX25ldHMgKm5ldCwKLSAgICBp
bnQgbWF4X3NlbmRfbGVuLAorICAgIHNzaXplX3QgbWF4X3NlbmRfbGVuLAogICAgIGludCB1c2Vy
X21hcmtzX2VvciwKICAgICBpbnQgKmVycm9yKQogCkBAIC0xMzI0OSw5ICsxMzI1Niw5IEBAIHNj
dHBfY29weV9pdF9pbihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAKIAkqZXJyb3IgPSAwOwogCS8q
IE5vdyBjYW4gd2Ugc2VuZCB0aGlzPyAqLwotCWlmICgoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0g
U0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKSB8fAotCSAgICAoU0NUUF9HRVRfU1RBVEUoYXNvYykg
PT0gU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tfU0VOVCkgfHwKLQkgICAgKFNDVFBfR0VUX1NUQVRF
KGFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpIHx8CisJaWYgKChTQ1RQX0dF
VF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpIHx8CisJICAgIChTQ1RQ
X0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX0FDS19TRU5UKSB8fAorCSAg
ICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkg
fHwKIAkgICAgKGFzb2MtPnN0YXRlICYgU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HKSkgewog
CQkvKiBnb3QgZGF0YSB3aGlsZSBzaHV0dGluZyBkb3duICovCiAJCVNDVFBfTFRSQUNFX0VSUl9S
RVQoTlVMTCwgc3RjYiwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfT1VUUFVULCBFQ09OTlJFU0VUKTsK
QEAgLTEzMjc0LDcgKzEzMjgxLDcgQEAgc2N0cF9jb3B5X2l0X2luKHN0cnVjdCBzY3RwX3RjYiAq
c3RjYiwKIAkodm9pZClTQ1RQX0dFVFRJTUVfVElNRVZBTCgmc3AtPnRzKTsKIAogCXNwLT5zaWQg
PSBzcmN2LT5zaW5mb19zdHJlYW07Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5l
ZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaWYgZGVmaW5lZChBUFBM
RV9MRU9QQVJEKQogCXNwLT5sZW5ndGggPSAodWludDMyX3QpbWluKHVpby0+dWlvX3Jlc2lkLCBt
YXhfc2VuZF9sZW4pOwogI2Vsc2UKQEAgLTEzMjgzLDcgKzEzMjkwLDcgQEAgc2N0cF9jb3B5X2l0
X2luKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKICNlbHNlCiAJc3AtPmxlbmd0aCA9ICh1aW50MzJf
dCltaW4odWlvLT51aW9fcmVzaWQsIG1heF9zZW5kX2xlbik7CiAjZW5kaWYKLSNpZiBkZWZpbmVk
KF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKICNpZiBkZWZpbmVkKEFQUExFX0xFT1BBUkQpCiAJaWYgKChzcC0+bGVuZ3RoID09ICh1
aW50MzJfdCl1aW8tPnVpb19yZXNpZCkgJiYKICNlbHNlCkBAIC0xMzMxNiwxMSArMTMzMjMsMTEg
QEAgc2N0cF9jb3B5X2l0X2luKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJc2N0cF9hdXRoX2tl
eV9hY3F1aXJlKHN0Y2IsIHNwLT5hdXRoX2tleWlkKTsKIAkJc3AtPmhvbGRzX2tleV9yZWYgPSAx
OwogCX0KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlTQ1RQX1NPQ0tFVF9VTkxPQ0soU0NUUF9JTlBfU08o
c3RjYi0+c2N0cF9lcCksIDApOwogI2VuZGlmCiAJKmVycm9yID0gc2N0cF9jb3B5X29uZShzcCwg
dWlvLCByZXN2X2luX2ZpcnN0KTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVk
KF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlTQ1RQX1NPQ0tFVF9MT0NL
KFNDVFBfSU5QX1NPKHN0Y2ItPnNjdHBfZXApLCAwKTsKICNlbmRpZgogIHNraXBfY29weToKQEAg
LTEzMzUxLDIwICsxMzM1OCwxNSBAQCBpbnQKIHNjdHBfc29zZW5kKHN0cnVjdCBzb2NrZXQgKnNv
LAogICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyICphZGRyLAogICAgICAgICAgICAgc3RydWN0
IHVpbyAqdWlvLAotI2lmZGVmIF9fUGFuZGFfXwotICAgICAgICAgICAgcGFraGFuZGxlX3R5cGUg
dG9wLAotICAgICAgICAgICAgcGFraGFuZGxlX3R5cGUgaWNvbnRyb2wsCi0jZWxzZQogICAgICAg
ICAgICAgc3RydWN0IG1idWYgKnRvcCwKICAgICAgICAgICAgIHN0cnVjdCBtYnVmICpjb250cm9s
LAotI2VuZGlmCi0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19QYW5kYV9fKQor
I2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogICAgICAg
ICAgICAgaW50IGZsYWdzCiAjZWxzZQogICAgICAgICAgICAgaW50IGZsYWdzLAotI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAwMAorI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAgICAgICAgICAgICBz
dHJ1Y3QgdGhyZWFkICpwCi0jZWxpZiBkZWZpbmVkKF9fV2luZG93c19fKQorI2VsaWYgZGVmaW5l
ZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAgICAgICAgICAgICBQS1RIUkVB
RCBwCiAjZWxzZQogI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKQEAgLTEzMzc4LDEwICsxMzM4
MCw3IEBAIHNjdHBfc29zZW5kKHN0cnVjdCBzb2NrZXQgKnNvLAogI2VuZGlmCiApCiB7Ci0jaWZk
ZWYgX19QYW5kYV9fCi0Jc3RydWN0IG1idWYgKmNvbnRyb2wgPSBOVUxMOwotI2VuZGlmCi0jaWYg
ZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAJc3RydWN0IHByb2MgKnAgPSBjdXJyZW50X3Byb2MoKTsKICNlbmRpZgog
CWludCBlcnJvciwgdXNlX3NuZGluZm8gPSAwOwpAQCAtMTMzOTEsMTEgKzEzMzkwLDggQEAgc2N0
cF9zb3NlbmQoc3RydWN0IHNvY2tldCAqc28sCiAJc3RydWN0IHNvY2thZGRyX2luIHNpbjsKICNl
bmRpZgogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJU0NUUF9TT0NLRVRfTE9DSyhzbywgMSk7Ci0jZW5k
aWYKLSNpZmRlZiBfX1BhbmRhX18KLQljb250cm9sID0gU0NUUF9IRUFERVJfVE9fQ0hBSU4oaWNv
bnRyb2wpOwogI2VuZGlmCiAJaWYgKGNvbnRyb2wpIHsKIAkJLyogcHJvY2VzcyBjbXNnIHNuZC9y
Y3YgaW5mbyAobWF5YmUgYSBhc3NvYy1pZCkgKi8KQEAgLTEzNDE4LDE4ICsxMzQxNCwxNCBAQCBz
Y3RwX3Nvc2VuZChzdHJ1Y3Qgc29ja2V0ICpzbywKIAl9CiAjZW5kaWYKIAllcnJvciA9IHNjdHBf
bG93ZXJfc29zZW5kKHNvLCBhZGRyX3RvX3VzZSwgdWlvLCB0b3AsCi0jaWZkZWYgX19QYW5kYV9f
Ci0JCQkJICBpY29udHJvbCwKLSNlbHNlCiAJCQkJICBjb250cm9sLAotI2VuZGlmCiAJCQkJICBm
bGFncywKIAkJCQkgIHVzZV9zbmRpbmZvID8gJnNuZHJjdm5pbmZvOiBOVUxMCi0jaWYgIShkZWZp
bmVkKF9fUGFuZGFfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkKKyNpZiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogCQkJCSAgLCBwCiAjZW5kaWYKIAkJKTsKLSNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
IAlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDEpOwogI2VuZGlmCiAJcmV0dXJuIChlcnJvcik7CkBA
IC0xMzQ0MCwyMCArMTM0MzIsMTUgQEAgaW50CiBzY3RwX2xvd2VyX3Nvc2VuZChzdHJ1Y3Qgc29j
a2V0ICpzbywKICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkciAqYWRkciwKICAgICAg
ICAgICAgICAgICAgIHN0cnVjdCB1aW8gKnVpbywKLSNpZmRlZiBfX1BhbmRhX18KLSAgICAgICAg
ICAgICAgICAgIHBha2hhbmRsZV90eXBlIGlfcGFrLAotICAgICAgICAgICAgICAgICAgcGFraGFu
ZGxlX3R5cGUgaV9jb250cm9sLAotI2Vsc2UKICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtYnVm
ICppX3BhaywKICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtYnVmICpjb250cm9sLAotI2VuZGlm
CiAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg
c2N0cF9zbmRyY3ZpbmZvICpzcmN2Ci0jaWYgIShkZWZpbmVkKCBfX1BhbmRhX18pIHx8IGRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykpCisjaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICAgICAgICAg
ICAgICAgICAgICwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lv
biA+PSA1MDAwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQogICAgICAgICAgICAgICAgICAg
c3RydWN0IHRocmVhZCAqcAotI2VsaWYgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNlbGlmIGRlZmlu
ZWQoX1dJTjMyKQogICAgICAgICAgICAgICAgICAgUEtUSFJFQUQgcAogI2Vsc2UKICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCBwcm9jICpwCkBAIC0xMzQ2MSwxMiArMTM0NDgsMTIgQEAgc2N0cF9s
b3dlcl9zb3NlbmQoc3RydWN0IHNvY2tldCAqc28sCiAjZW5kaWYKIAkpCiB7Ci0JdW5zaWduZWQg
aW50IHNuZGxlbiA9IDAsIG1heF9sZW47CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKKwlzdHJ1Y3QgZXBvY2hfdHJhY2tlciBldDsKKyNlbmRpZgor
CXNzaXplX3Qgc25kbGVuID0gMCwgbWF4X2xlbiwgbG9jYWxfYWRkX21vcmU7CiAJaW50IGVycm9y
LCBsZW47CiAJc3RydWN0IG1idWYgKnRvcCA9IE5VTEw7Ci0jaWZkZWYgX19QYW5kYV9fCi0Jc3Ry
dWN0IG1idWYgKmNvbnRyb2wgPSBOVUxMOwotI2VuZGlmCiAJaW50IHF1ZXVlX29ubHkgPSAwLCBx
dWV1ZV9vbmx5X2Zvcl9pbml0ID0gMDsKIAlpbnQgZnJlZV9jbnRfYXBwbGllZCA9IDA7CiAJaW50
IHVuX3NlbnQ7CkBAIC0xMzQ4Niw3ICsxMzQ3Myw3IEBAIHNjdHBfbG93ZXJfc29zZW5kKHN0cnVj
dCBzb2NrZXQgKnNvLAogCWludCBnb3RfYWxsX29mX3RoZV9zZW5kID0gMDsKIAlpbnQgaG9sZF90
Y2Jsb2NrID0gMDsKIAlpbnQgbm9uX2Jsb2NraW5nID0gMDsKLQl1aW50MzJfdCBsb2NhbF9hZGRf
bW9yZSwgbG9jYWxfc29yZXN2ID0gMDsKKwlzc2l6ZV90IGxvY2FsX3NvcmVzdiA9IDA7CiAJdWlu
dDE2X3QgcG9ydDsKIAl1aW50MTZfdCBzaW5mb19mbGFnczsKIAlzY3RwX2Fzc29jX3Qgc2luZm9f
YXNzb2NfaWQ7CkBAIC0xMzQ5Niw3ICsxMzQ4Myw3IEBAIHNjdHBfbG93ZXJfc29zZW5kKHN0cnVj
dCBzb2NrZXQgKnNvLAogCXN0Y2IgPSBOVUxMOwogCWFzb2MgPSBOVUxMOwogCi0jaWYgZGVmaW5l
ZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJc2N0cF9sb2NrX2Fzc2VydChzbyk7CiAjZW5kaWYKIAl0X2lucCA9IGlucCA9IChz
dHJ1Y3Qgc2N0cF9pbnBjYiAqKXNvLT5zb19wY2I7CkBAIC0xMzUxNSw3ICsxMzUwMiw3IEBAIHNj
dHBfbG93ZXJfc29zZW5kKHN0cnVjdCBzb2NrZXQgKnNvLAogCXVzZXJfbWFya3NfZW9yID0gc2N0
cF9pc19mZWF0dXJlX29uKGlucCwgU0NUUF9QQ0JfRkxBR1NfRVhQTElDSVRfRU9SKTsKIAlhdG9t
aWNfYWRkX2ludCgmaW5wLT50b3RhbF9zZW5kcywgMSk7CiAJaWYgKHVpbykgewotI2lmIGRlZmlu
ZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogI2lmIGRlZmluZWQoQVBQTEVfTEVPUEFSRCkKIAkJaWYgKHVpby0+dWlvX3Jlc2lk
IDwgMCkgewogI2Vsc2UKQEAgLTEzNTI3LDUwICsxMzUxNCwyMiBAQCBzY3RwX2xvd2VyX3Nvc2Vu
ZChzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBzdGNiLCBu
ZXQsIFNDVFBfRlJPTV9TQ1RQX09VVFBVVCwgRUlOVkFMKTsKIAkJCXJldHVybiAoRUlOVkFMKTsK
IAkJfQotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmIGRlZmluZWQoQVBQTEVfTEVPUEFSRCkKLQkJc25k
bGVuID0gKHVuc2lnbmVkIGludCl1aW8tPnVpb19yZXNpZDsKKwkJc25kbGVuID0gdWlvLT51aW9f
cmVzaWQ7CiAjZWxzZQotCQlzbmRsZW4gPSAodW5zaWduZWQgaW50KXVpb19yZXNpZCh1aW8pOwor
CQlzbmRsZW4gPSB1aW9fcmVzaWQodWlvKTsKICNlbmRpZgogI2Vsc2UKLQkJc25kbGVuID0gKHVu
c2lnbmVkIGludCl1aW8tPnVpb19yZXNpZDsKKwkJc25kbGVuID0gdWlvLT51aW9fcmVzaWQ7CiAj
ZW5kaWYKIAl9IGVsc2UgewogCQl0b3AgPSBTQ1RQX0hFQURFUl9UT19DSEFJTihpX3Bhayk7Ci0j
aWZkZWYgX19QYW5kYV9fCi0JCS8qLQotCQkgKiBhcHAgbGVuIGluZGljYXRlcyB0aGUgZGF0YWxl
biwgZGdzaXplIGZvciBjYXNlcwotCQkgKiBvZiBTQ1RQX0VPRi9BQk9SVCB3aWxsIG5vdCBoYXZl
IHRoZSByaWdodCBsZW4KLQkJICovCi0JCXNuZGxlbiA9IFNDVFBfQVBQX0RBVEFfTEVOKGlfcGFr
KTsKLQkJLyotCi0JCSAqIFNldCB0aGUgcGFydGljbGUgbGVuIGFsc28gdG8gemVybyB0byBtYXRj
aAotCQkgKiB1cCB3aXRoIGFwcCBsZW4uIFdlIG9ubHkgaGF2ZSBvbmUgcGFydGljbGUKLQkJICog
aWYgYXBwIGxlbiBpcyB6ZXJvIGZvciBQYW5kYS4gVGhpcyBpcyBlbnN1cmVkCi0JCSAqIGluIHRo
ZSBzb2NrZXQgbGliCi0JCSAqLwotCQlpZiAoc25kbGVuID09IDApIHsKLQkJCVNDVFBfQlVGX0xF
Tih0b3ApICA9IDA7Ci0JCX0KLQkJLyotCi0JCSAqIFdlIGRlbGluayB0aGUgY2hhaW4gZnJvbSBo
ZWFkZXIsIGJ1dCBrZWVwCi0JCSAqIHRoZSBoZWFkZXIgYXJvdW5kIGFzIHdlIHdpbGwgbmVlZCBp
dCBpbgotCQkgKiBFQUdBSU4gY2FzZQotCQkgKi8KLQkJU0NUUF9ERVRBQ0hfSEVBREVSX0ZST01f
Q0hBSU4oaV9wYWspOwotI2Vsc2UKIAkJc25kbGVuID0gU0NUUF9IRUFERVJfTEVOKGlfcGFrKTsK
LSNlbmRpZgogCX0KLQlTQ1RQREJHKFNDVFBfREVCVUdfT1VUUFVUMSwgIlNlbmQgY2FsbGVkIGFk
ZHI6JXAgc2VuZCBsZW5ndGggJWRcbiIsCi0JCSh2b2lkICopYWRkciwKKwlTQ1RQREJHKFNDVFBf
REVCVUdfT1VUUFVUMSwgIlNlbmQgY2FsbGVkIGFkZHI6JXAgc2VuZCBsZW5ndGggJXpkXG4iLAor
CSAgICAgICAgKHZvaWQgKilhZGRyLAogCSAgICAgICAgc25kbGVuKTsKLSNpZmRlZiBfX1BhbmRh
X18KLQlpZiAoaV9jb250cm9sKSB7Ci0JCWNvbnRyb2wgPSBTQ1RQX0hFQURFUl9UT19DSEFJTihp
X2NvbnRyb2wpOwotCX0KLSNlbmRpZgogCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0Jf
RkxBR1NfVENQVFlQRSkgJiYKIAkgICAgU0NUUF9JU19MSVNURU5JTkcoaW5wKSkgewogCQkvKiBU
aGUgbGlzdGVuZXIgY2FuIE5PVCBzZW5kICovCkBAIC0xMzY0NCw2ICsxMzYwMywxNCBAQCBzY3Rw
X2xvd2VyX3Nvc2VuZChzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJc2luZm9fZmxhZ3MgPSBpbnAtPmRl
Zl9zZW5kLnNpbmZvX2ZsYWdzOwogCQlzaW5mb19hc3NvY19pZCA9IGlucC0+ZGVmX3NlbmQuc2lu
Zm9fYXNzb2NfaWQ7CiAJfQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCisJaWYgKGZsYWdzICYgTVNHX0VPUikgeworCQlzaW5mb19mbGFncyB8PSBT
Q1RQX0VPUjsKKwl9CisJaWYgKGZsYWdzICYgTVNHX0VPRikgeworCQlzaW5mb19mbGFncyB8PSBT
Q1RQX0VPRjsKKwl9CisjZW5kaWYKIAlpZiAoc2luZm9fZmxhZ3MgJiBTQ1RQX1NFTkRBTEwpIHsK
IAkJLyogaXRzIGEgc2VuZGFsbCAqLwogCQllcnJvciA9IHNjdHBfc2VuZGFsbChpbnAsIHVpbywg
dG9wLCBzcmN2KTsKQEAgLTEzNzExLDkgKzEzNjc4LDExIEBAIHNjdHBfbG93ZXJfc29zZW5kKHN0
cnVjdCBzb2NrZXQgKnNvLAogCQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7CiAJCS8qIFdpdGggdGhl
IGxvY2sgYXBwbGllZCBsb29rIGFnYWluICovCiAJCXN0Y2IgPSBzY3RwX2ZpbmRhc3NvY2lhdGlv
bl9lcF9hZGRyKCZ0X2lucCwgYWRkciwgJm5ldCwgTlVMTCwgTlVMTCk7CisjaWYgZGVmaW5lZChJ
TkVUKSB8fCBkZWZpbmVkKElORVQ2KQogCQlpZiAoKHN0Y2IgPT0gTlVMTCkgJiYgKGNvbnRyb2wg
IT0gTlVMTCkgJiYgKHBvcnQgPiAwKSkgewogCQkJc3RjYiA9IHNjdHBfZmluZGFzc29jaWF0aW9u
X2Ntc2dzKCZ0X2lucCwgcG9ydCwgY29udHJvbCwgJm5ldCwgJmVycm9yKTsKIAkJfQorI2VuZGlm
CiAJCWlmIChzdGNiID09IE5VTEwpIHsKIAkJCVNDVFBfSU5QX1dMT0NLKGlucCk7CiAJCQlTQ1RQ
X0lOUF9ERUNSX1JFRihpbnApOwpAQCAtMTM3NTksMTEgKzEzNzI4LDEyIEBAIHNjdHBfbG93ZXJf
c29zZW5kKHN0cnVjdCBzb2NrZXQgKnNvLAogCQkJc3RjYiA9IHNjdHBfYWxvY19hc3NvYyhpbnAs
IGFkZHIsICZlcnJvciwgMCwgdnJmX2lkLAogCQkJICAgICAgICAgICAgICAgICAgICAgICBpbnAt
PnNjdHBfZXAucHJlX29wZW5fc3RyZWFtX2NvdW50LAogCQkJICAgICAgICAgICAgICAgICAgICAg
ICBpbnAtPnNjdHBfZXAucG9ydCwKLSNpZiAhKGRlZmluZWQoIF9fUGFuZGFfXykgfHwgZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKSkKLQkJCSAgICAgICAgICAgICAgICAgICAgICAgcCk7CisjaWYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJCSAgICAgICAgICAgICAgICAgICAgICAgcCwKICNlbHNl
Ci0JCQkgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgcHJvYyAqKU5VTEwpOworCQkJICAg
ICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHByb2MgKilOVUxMLAogI2VuZGlmCisJCQkgICAg
ICAgICAgICAgICAgICAgICAgIFNDVFBfSU5JVElBTElaRV9BVVRIX1BBUkFNUyk7CiAJCQlpZiAo
c3RjYiA9PSBOVUxMKSB7CiAJCQkJLyogRXJyb3IgaXMgc2V0dXAgZm9yIHVzIGluIHRoZSBjYWxs
ICovCiAJCQkJZ290byBvdXRfdW5sb2NrZWQ7CkBAIC0xMzc4MywxNiArMTM3NTMsMTMgQEAgc2N0
cF9sb3dlcl9zb3NlbmQoc3RydWN0IHNvY2tldCAqc28sCiAJCQkvKiBUdXJuIG9uIHF1ZXVlIG9u
bHkgZmxhZyB0byBwcmV2ZW50IGRhdGEgZnJvbSBiZWluZyBzZW50ICovCiAJCQlxdWV1ZV9vbmx5
ID0gMTsKIAkJCWFzb2MgPSAmc3RjYi0+YXNvYzsKLQkJCVNDVFBfU0VUX1NUQVRFKGFzb2MsIFND
VFBfU1RBVEVfQ09PS0lFX1dBSVQpOworCQkJU0NUUF9TRVRfU1RBVEUoc3RjYiwgU0NUUF9TVEFU
RV9DT09LSUVfV0FJVCk7CiAJCQkodm9pZClTQ1RQX0dFVFRJTUVfVElNRVZBTCgmYXNvYy0+dGlt
ZV9lbnRlcmVkKTsKIAotCQkJLyogaW5pdGlhbGl6ZSBhdXRoZW50aWNhdGlvbiBwYXJhbXMgZm9y
IHRoZSBhc3NvYyAqLwotCQkJc2N0cF9pbml0aWFsaXplX2F1dGhfcGFyYW1zKGlucCwgc3RjYik7
Ci0KIAkJCWlmIChjb250cm9sKSB7CiAJCQkJaWYgKHNjdHBfcHJvY2Vzc19jbXNnc19mb3JfaW5p
dChzdGNiLCBjb250cm9sLCAmZXJyb3IpKSB7CiAJCQkJCXNjdHBfZnJlZV9hc3NvYyhpbnAsIHN0
Y2IsIFNDVFBfUENCRlJFRV9GT1JDRSwKLQkJCQkJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9T
Q1RQX09VVFBVVCArIFNDVFBfTE9DXzUpOworCQkJCQkgICAgICAgICAgICAgICAgU0NUUF9GUk9N
X1NDVFBfT1VUUFVUICsgU0NUUF9MT0NfNik7CiAJCQkJCWhvbGRfdGNibG9jayA9IDA7CiAJCQkJ
CXN0Y2IgPSBOVUxMOwogCQkJCQlnb3RvIG91dF91bmxvY2tlZDsKQEAgLTEzODA5LDkgKzEzNzc2
LDE5IEBAIHNjdHBfbG93ZXJfc29zZW5kKHN0cnVjdCBzb2NrZXQgKnNvLAogCQl9CiAJfSBlbHNl
CiAJCWFzb2MgPSAmc3RjYi0+YXNvYzsKLQlpZiAoc3JjdiA9PSBOVUxMKQorCWlmIChzcmN2ID09
IE5VTEwpIHsKIAkJc3JjdiA9IChzdHJ1Y3Qgc2N0cF9zbmRyY3ZpbmZvICopJmFzb2MtPmRlZl9z
ZW5kOwotCWlmIChzcmN2LT5zaW5mb19mbGFncyAmIFNDVFBfQUREUl9PVkVSKSB7CisJCXNpbmZv
X2ZsYWdzID0gc3Jjdi0+c2luZm9fZmxhZ3M7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJaWYgKGZsYWdzICYgTVNHX0VPUikgeworCQkJc2lu
Zm9fZmxhZ3MgfD0gU0NUUF9FT1I7CisJCX0KKwkJaWYgKGZsYWdzICYgTVNHX0VPRikgeworCQkJ
c2luZm9fZmxhZ3MgfD0gU0NUUF9FT0Y7CisJCX0KKyNlbmRpZgorCX0KKwlpZiAoc2luZm9fZmxh
Z3MgJiBTQ1RQX0FERFJfT1ZFUikgewogCQlpZiAoYWRkcikKIAkJCW5ldCA9IHNjdHBfZmluZG5l
dChzdGNiLCBhZGRyKTsKIAkJZWxzZQpAQCAtMTM4MzUsNyArMTM4MTIsNyBAQCBzY3RwX2xvd2Vy
X3Nvc2VuZChzdHJ1Y3Qgc29ja2V0ICpzbywKIAlmcmVlX2NudF9hcHBsaWVkID0gMTsKIAogCWlm
IChzY3RwX2lzX2ZlYXR1cmVfb24oaW5wLCBTQ1RQX1BDQl9GTEFHU19OT19GUkFHTUVOVCkpIHsK
LQkJaWYgKHNuZGxlbiA+IGFzb2MtPnNtYWxsZXN0X210dSkgeworCQlpZiAoc25kbGVuID4gKHNz
aXplX3QpYXNvYy0+c21hbGxlc3RfbXR1KSB7CiAJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwg
c3RjYiwgbmV0LCBTQ1RQX0ZST01fU0NUUF9PVVRQVVQsIEVNU0dTSVpFKTsKIAkJCWVycm9yID0g
RU1TR1NJWkU7CiAJCQlnb3RvIG91dF91bmxvY2tlZDsKQEAgLTEzODQ3LDE1ICsxMzgyNCwxNSBA
QCBzY3RwX2xvd2VyX3Nvc2VuZChzdHJ1Y3Qgc29ja2V0ICpzbywKIAl9CiAjZW5kaWYKIAlpZiAo
U0NUUF9TT19JU19OQklPKHNvKQotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJT
RF92ZXJzaW9uID49IDUwMDAwMAotCSAgICAgfHwgKGZsYWdzICYgTVNHX05CSU8pCisjaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkgICAgIHx8IChm
bGFncyAmIChNU0dfTkJJTyB8IE1TR19ET05UV0FJVCkpICE9IDAKICNlbmRpZgogCSAgICApIHsK
IAkJbm9uX2Jsb2NraW5nID0gMTsKIAl9CiAJLyogd291bGQgd2UgYmxvY2s/ICovCiAJaWYgKG5v
bl9ibG9ja2luZykgewotCQl1aW50MzJfdCBhbW91bnQ7CisJCXNzaXplX3QgYW1vdW50OwogCiAJ
CWlmIChob2xkX3RjYmxvY2sgPT0gMCkgewogCQkJU0NUUF9UQ0JfTE9DSyhzdGNiKTsKQEAgLTEz
ODcwLDEzICsxMzg0NywxMyBAQCBzY3RwX2xvd2VyX3Nvc2VuZChzdHJ1Y3Qgc29ja2V0ICpzbywK
IAkJaWYgKChTQ1RQX1NCX0xJTUlUX1NORChzbykgPCAgKGFtb3VudCArIGlucXVldWVfYnl0ZXMg
KyBzdGNiLT5hc29jLnNiX3NlbmRfcmVzdikpIHx8CiAJCSAgICAoc3RjYi0+YXNvYy5jaHVua3Nf
b25fb3V0X3F1ZXVlID49IFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9tYXhfY2h1bmtzX29uX3F1ZXVl
KSkpIHsKIAkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBzdGNiLCBuZXQsIFNDVFBfRlJPTV9T
Q1RQX09VVFBVVCwgRVdPVUxEQkxPQ0spOwotCQkJaWYgKHNuZGxlbiA+IFNDVFBfU0JfTElNSVRf
U05EKHNvKSkKKwkJCWlmIChzbmRsZW4gPiAoc3NpemVfdClTQ1RQX1NCX0xJTUlUX1NORChzbykp
CiAJCQkJZXJyb3IgPSBFTVNHU0laRTsKIAkJCWVsc2UKIAkJCQllcnJvciA9IEVXT1VMREJMT0NL
OwogCQkJZ290byBvdXRfdW5sb2NrZWQ7CiAJCX0KLQkJc3RjYi0+YXNvYy5zYl9zZW5kX3Jlc3Yg
Kz0gc25kbGVuOworCQlzdGNiLT5hc29jLnNiX3NlbmRfcmVzdiArPSAodWludDMyX3Qpc25kbGVu
OwogCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CiAJCWhvbGRfdGNibG9jayA9IDA7CiAJfSBlbHNl
IHsKQEAgLTEzOTEyLDggKzEzODg5LDggQEAgc2N0cF9sb3dlcl9zb3NlbmQoc3RydWN0IHNvY2tl
dCAqc28sCiAJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBzdGNiLCBuZXQsIFNDVFBfRlJPTV9T
Q1RQX09VVFBVVCwgZXJyb3IpOwogCQlnb3RvIG91dF91bmxvY2tlZDsKIAl9Ci0JaWYgKChTQ1RQ
X0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB8fAotCSAgICAoU0NU
UF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9DT09LSUVfRUNIT0VEKSkgeworCWlmICgo
U0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9DT09LSUVfV0FJVCkgfHwKKwkgICAg
KFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCkpIHsKIAkJ
cXVldWVfb25seSA9IDE7CiAJfQogCS8qIHdlIGFyZSBub3cgZG9uZSB3aXRoIGFsbCBjb250cm9s
ICovCkBAIC0xMzkyMSwxMSArMTM4OTgsMTEgQEAgc2N0cF9sb3dlcl9zb3NlbmQoc3RydWN0IHNv
Y2tldCAqc28sCiAJCXNjdHBfbV9mcmVlbShjb250cm9sKTsKIAkJY29udHJvbCA9IE5VTEw7CiAJ
fQotCWlmICgoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9TRU5U
KSB8fAotCSAgICAoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9S
RUNFSVZFRCkgfHwKLQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfU0hV
VERPV05fQUNLX1NFTlQpIHx8CisJaWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NU
QVRFX1NIVVRET1dOX1NFTlQpIHx8CisJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQ
X1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSB8fAorCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikg
PT0gU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tfU0VOVCkgfHwKIAkgICAgKGFzb2MtPnN0YXRlICYg
U0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HKSkgewotCQlpZiAoc3Jjdi0+c2luZm9fZmxhZ3Mg
JiBTQ1RQX0FCT1JUKSB7CisJCWlmIChzaW5mb19mbGFncyAmIFNDVFBfQUJPUlQpIHsKIAkJCTsK
IAkJfSBlbHNlIHsKIAkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoTlVMTCwgc3RjYiwgTlVMTCwgU0NU
UF9GUk9NX1NDVFBfT1VUUFVULCBFQ09OTlJFU0VUKTsKQEAgLTEzOTM0LDI1ICsxMzkxMSwyMyBA
QCBzY3RwX2xvd2VyX3Nvc2VuZChzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJfQogCX0KIAkvKiBPaywg
d2Ugd2lsbCBhdHRlbXB0IGEgbXNnc25kIDo+ICovCi0jaWYgIShkZWZpbmVkKF9fUGFuZGFfXykg
fHwgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkKKyNpZiAh
KGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pKQogCWlmIChwKSB7Ci0j
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNjAzMDAwCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKIAkJcC0+dGRfcnUucnVfbXNnc25kKys7Ci0jZWxpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMDAKLQkJcC0+
dGRfcHJvYy0+cF9zdGF0cy0+cF9ydS5ydV9tc2dzbmQrKzsKICNlbHNlCiAJCXAtPnBfc3RhdHMt
PnBfcnUucnVfbXNnc25kKys7CiAjZW5kaWYKIAl9CiAjZW5kaWYKIAkvKiBBcmUgd2UgYWJvcnRp
bmc/ICovCi0JaWYgKHNyY3YtPnNpbmZvX2ZsYWdzICYgU0NUUF9BQk9SVCkgeworCWlmIChzaW5m
b19mbGFncyAmIFNDVFBfQUJPUlQpIHsKIAkJc3RydWN0IG1idWYgKm1tOwotCQlpbnQgdG90X2Rl
bWFuZCwgdG90X291dCA9IDAsIG1heF9vdXQ7CisJCXNzaXplX3QgdG90X2RlbWFuZCwgdG90X291
dCA9IDAsIG1heF9vdXQ7CiAKIAkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfc2VuZHNfd2l0aF9hYm9y
dCk7Ci0JCWlmICgoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9DT09LSUVfV0FJ
VCkgfHwKLQkJICAgIChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9F
Q0hPRUQpKSB7CisJCWlmICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9DT09L
SUVfV0FJVCkgfHwKKwkJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX0NP
T0tJRV9FQ0hPRUQpKSB7CiAJCQkvKiBJdCBoYXMgdG8gYmUgdXAgYmVmb3JlIHdlIGFib3J0ICov
CiAJCQkvKiBob3cgYmlnIGlzIHRoZSB1c2VyIGluaXRpYXRlZCBhYm9ydD8gKi8KIAkJCVNDVFBf
TFRSQUNFX0VSUl9SRVQoaW5wLCBzdGNiLCBuZXQsIFNDVFBfRlJPTV9TQ1RQX09VVFBVVCwgRUlO
VkFMKTsKQEAgLTEzOTgyLDcgKzEzOTU3LDcgQEAgc2N0cF9sb3dlcl9zb3NlbmQoc3RydWN0IHNv
Y2tldCAqc28sCiAJCQkJZXJyb3IgPSBFTVNHU0laRTsKIAkJCQlnb3RvIG91dDsKIAkJCX0KLQkJ
CW1tID0gc2N0cF9nZXRfbWJ1Zl9mb3JfbXNnKHRvdF9kZW1hbmQsIDAsIE1fV0FJVE9LLCAxLCBN
VF9EQVRBKTsKKwkJCW1tID0gc2N0cF9nZXRfbWJ1Zl9mb3JfbXNnKCh1bnNpZ25lZCBpbnQpdG90
X2RlbWFuZCwgMCwgTV9XQUlUT0ssIDEsIE1UX0RBVEEpOwogCQl9CiAJCWlmIChtbSA9PSBOVUxM
KSB7CiAJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKE5VTEwsIHN0Y2IsIG5ldCwgU0NUUF9GUk9NX1ND
VFBfT1VUUFVULCBFTk9NRU0pOwpAQCAtMTQwMDIsMTMgKzEzOTc3LDEzIEBAIHNjdHBfbG93ZXJf
c29zZW5kKHN0cnVjdCBzb2NrZXQgKnNvLAogCQkJcGgtPnBhcmFtX3R5cGUgPSBodG9ucyhTQ1RQ
X0NBVVNFX1VTRVJfSU5JVElBVEVEX0FCVCk7CiAJCQlwaC0+cGFyYW1fbGVuZ3RoID0gaHRvbnMo
KHVpbnQxNl90KShzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpICsgdG90X291dCkpOwogCQkJ
cGgrKzsKLQkJCVNDVFBfQlVGX0xFTihtbSkgPSB0b3Rfb3V0ICsgc2l6ZW9mKHN0cnVjdCBzY3Rw
X3BhcmFtaGRyKTsKKwkJCVNDVFBfQlVGX0xFTihtbSkgPSAoaW50KSh0b3Rfb3V0ICsgc2l6ZW9m
KHN0cnVjdCBzY3RwX3BhcmFtaGRyKSk7CiAJCQlpZiAodG9wID09IE5VTEwpIHsKLSNpZiBkZWZp
bmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKIAkJCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDApOwogI2VuZGlmCiAJCQkJZXJy
b3IgPSB1aW9tb3ZlKChjYWRkcl90KXBoLCAoaW50KXRvdF9vdXQsIHVpbyk7Ci0jaWYgZGVmaW5l
ZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJCQkJU0NUUF9TT0NLRVRfTE9DSyhzbywgMCk7CiAjZW5kaWYKIAkJCQlpZiAoZXJy
b3IpIHsKQEAgLTE0MDMyLDcgKzE0MDA3LDEzIEBAIHNjdHBfbG93ZXJfc29zZW5kKHN0cnVjdCBz
b2NrZXQgKnNvLAogCQlhdG9taWNfYWRkX2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIC0xKTsKIAkJ
ZnJlZV9jbnRfYXBwbGllZCA9IDA7CiAJCS8qIHJlbGVhc2UgdGhpcyBsb2NrLCBvdGhlcndpc2Ug
d2UgaGFuZyBvbiBvdXJzZWx2ZXMgKi8KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQorCQlORVRfRVBPQ0hfRU5URVIoZXQpOworI2VuZGlmCiAJCXNj
dHBfYWJvcnRfYW5fYXNzb2NpYXRpb24oc3RjYi0+c2N0cF9lcCwgc3RjYiwgbW0sIFNDVFBfU09f
TE9DS0VEKTsKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQorCQlORVRfRVBPQ0hfRVhJVChldCk7CisjZW5kaWYKIAkJLyogbm93IHJlbG9jayB0aGUg
c3RjYiBzbyBldmVyeXRoaW5nIGlzIHNhbmUgKi8KIAkJaG9sZF90Y2Jsb2NrID0gMDsKIAkJc3Rj
YiA9IE5VTEw7CkBAIC0xNDA0OSwxMiArMTQwMzAsNyBAQCBzY3RwX2xvd2VyX3Nvc2VuZChzdHJ1
Y3Qgc29ja2V0ICpzbywKIAkvKiBDYWxjdWxhdGUgdGhlIG1heGltdW0gd2UgY2FuIHNlbmQgKi8K
IAlpbnF1ZXVlX2J5dGVzID0gc3RjYi0+YXNvYy50b3RhbF9vdXRwdXRfcXVldWVfc2l6ZSAtIChz
dGNiLT5hc29jLmNodW5rc19vbl9vdXRfcXVldWUgKiBTQ1RQX0RBVEFfQ0hVTktfT1ZFUkhFQUQo
c3RjYikpOwogCWlmIChTQ1RQX1NCX0xJTUlUX1NORChzbykgPiBpbnF1ZXVlX2J5dGVzKSB7Ci0J
CWlmIChub25fYmxvY2tpbmcpIHsKLQkJCS8qIHdlIGFscmVhZHkgY2hlY2tlZCBmb3Igbm9uLWJs
b2NraW5nIGFib3ZlLiAqLwotCQkJbWF4X2xlbiA9IHNuZGxlbjsKLQkJfSBlbHNlIHsKLQkJCW1h
eF9sZW4gPSBTQ1RQX1NCX0xJTUlUX1NORChzbykgLSBpbnF1ZXVlX2J5dGVzOwotCQl9CisJCW1h
eF9sZW4gPSBTQ1RQX1NCX0xJTUlUX1NORChzbykgLSBpbnF1ZXVlX2J5dGVzOwogCX0gZWxzZSB7
CiAJCW1heF9sZW4gPSAwOwogCX0KQEAgLTE0MDcxLDcgKzE0MDQ3LDcgQEAgc2N0cF9sb3dlcl9z
b3NlbmQoc3RydWN0IHNvY2tldCAqc28sCiAKIAkvKiBVbmxlc3MgRV9FT1IgbW9kZSBpcyBvbiwg
d2UgbXVzdCBtYWtlIGEgc2VuZCBGSVQgaW4gb25lIGNhbGwuICovCiAJaWYgKCh1c2VyX21hcmtz
X2VvciA9PSAwKSAmJgotCSAgICAoc25kbGVuID4gU0NUUF9TQl9MSU1JVF9TTkQoc3RjYi0+c2N0
cF9zb2NrZXQpKSkgeworCSAgICAoc25kbGVuID4gKHNzaXplX3QpU0NUUF9TQl9MSU1JVF9TTkQo
c3RjYi0+c2N0cF9zb2NrZXQpKSkgewogCQkvKiBJdCB3aWxsIE5FVkVSIGZpdCAqLwogCQlTQ1RQ
X0xUUkFDRV9FUlJfUkVUKE5VTEwsIHN0Y2IsIG5ldCwgU0NUUF9GUk9NX1NDVFBfT1VUUFVULCBF
TVNHU0laRSk7CiAJCWVycm9yID0gRU1TR1NJWkU7CkBAIC0xNDA4OCw3ICsxNDA2NCw3IEBAIHNj
dHBfbG93ZXJfc29zZW5kKHN0cnVjdCBzb2NrZXQgKnNvLAogCX0KIAogCWlmICh1c2VyX21hcmtz
X2VvcikgewotCQlsb2NhbF9hZGRfbW9yZSA9IG1pbihTQ1RQX1NCX0xJTUlUX1NORChzbyksIFND
VFBfQkFTRV9TWVNDVEwoc2N0cF9hZGRfbW9yZV90aHJlc2hvbGQpKTsKKwkJbG9jYWxfYWRkX21v
cmUgPSAoc3NpemVfdCltaW4oU0NUUF9TQl9MSU1JVF9TTkQoc28pLCBTQ1RQX0JBU0VfU1lTQ1RM
KHNjdHBfYWRkX21vcmVfdGhyZXNob2xkKSk7CiAJfSBlbHNlIHsKIAkJLyotCiAJCSAqIEZvciBu
b24tZWVvciB0aGUgd2hvbGUgbWVzc2FnZSBtdXN0IGZpdCBpbgpAQCAtMTQxMDEsMTUgKzE0MDc3
LDE1IEBAIHNjdHBfbG93ZXJfc29zZW5kKHN0cnVjdCBzb2NrZXQgKnNvLAogCQlnb3RvIHNraXBf
cHJlYmxvY2s7CiAJfQogCWlmICgoKG1heF9sZW4gPD0gbG9jYWxfYWRkX21vcmUpICYmCi0JICAg
ICAoU0NUUF9TQl9MSU1JVF9TTkQoc28pID49IGxvY2FsX2FkZF9tb3JlKSkgfHwKKwkgICAgICgo
c3NpemVfdClTQ1RQX1NCX0xJTUlUX1NORChzbykgPj0gbG9jYWxfYWRkX21vcmUpKSB8fAogCSAg
ICAobWF4X2xlbiA9PSAwKSB8fAogCSAgICAoKHN0Y2ItPmFzb2MuY2h1bmtzX29uX291dF9xdWV1
ZStzdGNiLT5hc29jLnN0cmVhbV9xdWV1ZV9jbnQpID49IFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9t
YXhfY2h1bmtzX29uX3F1ZXVlKSkpIHsKIAkJLyogTm8gcm9vbSByaWdodCBub3cgISAqLwogCQlT
T0NLQlVGX0xPQ0soJnNvLT5zb19zbmQpOwogCQlpbnF1ZXVlX2J5dGVzID0gc3RjYi0+YXNvYy50
b3RhbF9vdXRwdXRfcXVldWVfc2l6ZSAtIChzdGNiLT5hc29jLmNodW5rc19vbl9vdXRfcXVldWUg
KiBTQ1RQX0RBVEFfQ0hVTktfT1ZFUkhFQUQoc3RjYikpOwogCQl3aGlsZSAoKFNDVFBfU0JfTElN
SVRfU05EKHNvKSA8IChpbnF1ZXVlX2J5dGVzICsgbG9jYWxfYWRkX21vcmUpKSB8fAotCQkgICAg
ICAgKChzdGNiLT5hc29jLnN0cmVhbV9xdWV1ZV9jbnQrc3RjYi0+YXNvYy5jaHVua3Nfb25fb3V0
X3F1ZXVlKSA+PSBTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbWF4X2NodW5rc19vbl9xdWV1ZSkpKSB7
Ci0JCQlTQ1RQREJHKFNDVFBfREVCVUdfT1VUUFVUMSwicHJlX2Jsb2NrIGxpbWl0OiV1IDwoaW5x
OiVkICsgJWQpIHx8ICglZCslZCA+ICVkKVxuIiwKKwkJICAgICAgICgoc3RjYi0+YXNvYy5zdHJl
YW1fcXVldWVfY250ICsgc3RjYi0+YXNvYy5jaHVua3Nfb25fb3V0X3F1ZXVlKSA+PSBTQ1RQX0JB
U0VfU1lTQ1RMKHNjdHBfbWF4X2NodW5rc19vbl9xdWV1ZSkpKSB7CisJCQlTQ1RQREJHKFNDVFBf
REVCVUdfT1VUUFVUMSwicHJlX2Jsb2NrIGxpbWl0OiV1IDwoaW5xOiVkICsgJXpkKSB8fCAoJWQr
JWQgPiAlZClcbiIsCiAJCQkgICAgICAgICh1bnNpZ25lZCBpbnQpU0NUUF9TQl9MSU1JVF9TTkQo
c28pLAogCQkJICAgICAgICBpbnF1ZXVlX2J5dGVzLAogCQkJICAgICAgICBsb2NhbF9hZGRfbW9y
ZSwKQEAgLTE0MTIwLDcgKzE0MDk2LDcgQEAgc2N0cF9sb3dlcl9zb3NlbmQoc3RydWN0IHNvY2tl
dCAqc28sCiAJCQkJc2N0cF9sb2dfYmxvY2soU0NUUF9CTE9DS19MT0dfSU5UT19CTEtBLCBhc29j
LCBzbmRsZW4pOwogCQkJfQogCQkJYmUuZXJyb3IgPSAwOwotI2lmICFkZWZpbmVkKF9fUGFuZGFf
XykgJiYgIWRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgIShkZWZpbmVkKF9XSU4zMikgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAJCQlzdGNiLT5ibG9ja19lbnRyeSA9ICZiZTsKICNlbmRp
ZgogCQkJZXJyb3IgPSBzYndhaXQoJnNvLT5zb19zbmQpOwpAQCAtMTQxNTgsNyArMTQxMzQsNyBA
QCBza2lwX3ByZWJsb2NrOgogCWlmIChzdGNiLT5hc29jLnN0YXRlICYgU0NUUF9TVEFURV9BQk9V
VF9UT19CRV9GUkVFRCkgewogCQlnb3RvIG91dF91bmxvY2tlZDsKIAl9Ci0jaWYgZGVmaW5lZChf
X0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAJZXJyb3IgPSBzYmxvY2soJnNvLT5zb19zbmQsIFNCTE9DS1dBSVQoZmxhZ3MpKTsKICNl
bmRpZgogCS8qIHNuZGxlbiBjb3ZlcnMgZm9yIG1idWYgY2FzZQpAQCAtMTQxNjYsNyArMTQxNDIs
NyBAQCBza2lwX3ByZWJsb2NrOgogCSAqIE5PVEU6IHVpbyB3aWxsIGJlIG51bGwgd2hlbiB0b3Av
bWJ1ZiBpcyBwYXNzZWQKIAkgKi8KIAlpZiAoc25kbGVuID09IDApIHsKLQkJaWYgKHNyY3YtPnNp
bmZvX2ZsYWdzICYgU0NUUF9FT0YpIHsKKwkJaWYgKHNpbmZvX2ZsYWdzICYgU0NUUF9FT0YpIHsK
IAkJCWdvdF9hbGxfb2ZfdGhlX3NlbmQgPSAxOwogCQkJZ290byBkYXRhbGVzc19lb2Y7CiAJCX0g
ZWxzZSB7CkBAIC0xNDE4OCwxMSArMTQxNjQsMTAgQEAgc2tpcF9wcmVibG9jazoKIAkJCWVycm9y
ID0gRUlOVkFMOwogCQkJZ290byBvdXQ7CiAJCX0KLQkJU0NUUF9UQ0JfU0VORF9VTkxPQ0soc3Rj
Yik7Ci0KIAkJc3RybSA9ICZzdGNiLT5hc29jLnN0cm1vdXRbc3Jjdi0+c2luZm9fc3RyZWFtXTsK
IAkJaWYgKHN0cm0tPmxhc3RfbXNnX2luY29tcGxldGUgPT0gMCkgewogCQlkb19hX2NvcHlfaW46
CisJCQlTQ1RQX1RDQl9TRU5EX1VOTE9DSyhzdGNiKTsKIAkJCXNwID0gc2N0cF9jb3B5X2l0X2lu
KHN0Y2IsIGFzb2MsIHNyY3YsIHVpbywgbmV0LCBtYXhfbGVuLCB1c2VyX21hcmtzX2VvciwgJmVy
cm9yKTsKIAkJCWlmIChlcnJvcikgewogCQkJCWdvdG8gb3V0OwpAQCAtMTQyMTQsMTYgKzE0MTg5
LDE0IEBAIHNraXBfcHJlYmxvY2s6CiAJCQl9CiAJCQlzY3RwX3NuZF9zYl9hbGxvYyhzdGNiLCBz
cC0+bGVuZ3RoKTsKIAkJCWF0b21pY19hZGRfaW50KCZhc29jLT5zdHJlYW1fcXVldWVfY250LCAx
KTsKLQkJCWlmIChzcmN2LT5zaW5mb19mbGFncyAmIFNDVFBfVU5PUkRFUkVEKSB7CisJCQlpZiAo
c2luZm9fZmxhZ3MgJiBTQ1RQX1VOT1JERVJFRCkgewogCQkJCVNDVFBfU1RBVF9JTkNSKHNjdHBz
X3NlbmRzX3dpdGhfdW5vcmQpOwogCQkJfQorCQkJc3AtPnByb2Nlc3NpbmcgPSAxOwogCQkJVEFJ
TFFfSU5TRVJUX1RBSUwoJnN0cm0tPm91dHF1ZXVlLCBzcCwgbmV4dCk7CiAJCQlzdGNiLT5hc29j
LnNzX2Z1bmN0aW9ucy5zY3RwX3NzX2FkZF90b19zdHJlYW0oc3RjYiwgYXNvYywgc3RybSwgc3As
IDEpOwotCQkJU0NUUF9UQ0JfU0VORF9VTkxPQ0soc3RjYik7CiAJCX0gZWxzZSB7Ci0JCQlTQ1RQ
X1RDQl9TRU5EX0xPQ0soc3RjYik7CiAJCQlzcCA9IFRBSUxRX0xBU1QoJnN0cm0tPm91dHF1ZXVl
LCBzY3RwX3N0cmVhbWhlYWQpOwotCQkJU0NUUF9UQ0JfU0VORF9VTkxPQ0soc3RjYik7CiAJCQlp
ZiAoc3AgPT0gTlVMTCkgewogCQkJCS8qID8/Pz8gSHVoID8/PyBsYXN0IG1zZyBpcyBnb25lICov
CiAjaWZkZWYgSU5WQVJJQU5UUwpAQCAtMTQyMzUsOCArMTQyMDgsMTcgQEAgc2tpcF9wcmVibG9j
azoKIAkJCQlnb3RvIGRvX2FfY29weV9pbjsKIAogCQkJfQorCQkJaWYgKHNwLT5wcm9jZXNzaW5n
KSB7CisJCQkJU0NUUF9UQ0JfU0VORF9VTkxPQ0soc3RjYik7CisJCQkJU0NUUF9MVFJBQ0VfRVJS
X1JFVChpbnAsIHN0Y2IsIG5ldCwgU0NUUF9GUk9NX1NDVFBfT1VUUFVULCBFSU5WQUwpOworCQkJ
CWVycm9yID0gRUlOVkFMOworCQkJCWdvdG8gb3V0OworCQkJfSBlbHNlIHsKKwkJCQlzcC0+cHJv
Y2Vzc2luZyA9IDE7CisJCQl9CiAJCX0KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKwkJU0NUUF9U
Q0JfU0VORF9VTkxPQ0soc3RjYik7CisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiAjaWYgZGVmaW5lZChBUFBMRV9MRU9QQVJEKQogCQl3aGlsZSAodWlv
LT51aW9fcmVzaWQgPiAwKSB7CiAjZWxzZQpAQCAtMTQyNTQsMTYgKzE0MjM2LDE2IEBAIHNraXBf
cHJlYmxvY2s6CiAJCQllbHNlCiAJCQkJbWF4X2xlbiA9IDA7CiAKLQkJCWlmICgobWF4X2xlbiA+
IFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9hZGRfbW9yZV90aHJlc2hvbGQpKSB8fAorCQkJaWYgKCht
YXhfbGVuID4gKHNzaXplX3QpU0NUUF9CQVNFX1NZU0NUTChzY3RwX2FkZF9tb3JlX3RocmVzaG9s
ZCkpIHx8CiAJCQkgICAgKG1heF9sZW4gJiYgKFNDVFBfU0JfTElNSVRfU05EKHNvKSA8IFNDVFBf
QkFTRV9TWVNDVEwoc2N0cF9hZGRfbW9yZV90aHJlc2hvbGQpKSkgfHwKLSNpZiBkZWZpbmVkKF9f
QVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKICNpZiBkZWZpbmVkKEFQUExFX0xFT1BBUkQpCi0JCQkgICAgKHVpby0+dWlvX3Jlc2lkICYm
ICh1aW8tPnVpb19yZXNpZCA8PSAoaW50KW1heF9sZW4pKSkgeworCQkJICAgICh1aW8tPnVpb19y
ZXNpZCAmJiAodWlvLT51aW9fcmVzaWQgPD0gbWF4X2xlbikpKSB7CiAjZWxzZQotCQkJICAgICh1
aW9fcmVzaWQodWlvKSAmJiAodWlvX3Jlc2lkKHVpbykgPD0gKGludCltYXhfbGVuKSkpIHsKKwkJ
CSAgICAodWlvX3Jlc2lkKHVpbykgJiYgKHVpb19yZXNpZCh1aW8pIDw9IG1heF9sZW4pKSkgewog
I2VuZGlmCiAjZWxzZQotCQkJICAgICh1aW8tPnVpb19yZXNpZCAmJiAodWlvLT51aW9fcmVzaWQg
PD0gKGludCltYXhfbGVuKSkpIHsKKwkJCSAgICAodWlvLT51aW9fcmVzaWQgJiYgKHVpby0+dWlv
X3Jlc2lkIDw9IG1heF9sZW4pKSkgewogI2VuZGlmCiAJCQkJc25kb3V0ID0gMDsKIAkJCQluZXdf
dGFpbCA9IE5VTEw7CkBAIC0xNDI3MSwzNCArMTQyNTMsNDMgQEAgc2tpcF9wcmVibG9jazoKIAkJ
CQkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwogCQkJCQlob2xkX3RjYmxvY2sgPSAwOwogCQkJCX0K
LSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDApOwogI2VuZGlm
Ci0jaWYgKGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID4gNjAyMDAw
KSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi0JCQkJICAgIG1tID0gc2N0cF9jb3B5X3Jlc3Vt
ZSh1aW8sIG1heF9sZW4sIHVzZXJfbWFya3NfZW9yLCAmZXJyb3IsICZzbmRvdXQsICZuZXdfdGFp
bCk7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQor
CQkJCW1tID0gc2N0cF9jb3B5X3Jlc3VtZSh1aW8sIChpbnQpbWF4X2xlbiwgdXNlcl9tYXJrc19l
b3IsICZlcnJvciwgJnNuZG91dCwgJm5ld190YWlsKTsKICNlbHNlCi0JCQkJICAgIG1tID0gc2N0
cF9jb3B5X3Jlc3VtZSh1aW8sIG1heF9sZW4sICZlcnJvciwgJnNuZG91dCwgJm5ld190YWlsKTsK
KwkJCQltbSA9IHNjdHBfY29weV9yZXN1bWUodWlvLCAoaW50KW1heF9sZW4sICZlcnJvciwgJnNu
ZG91dCwgJm5ld190YWlsKTsKICNlbmRpZgotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRl
ZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCVNDVFBfU09D
S0VUX0xPQ0soc28sIDApOwogI2VuZGlmCiAJCQkJaWYgKChtbSA9PSBOVUxMKSB8fCBlcnJvcikg
ewogCQkJCQlpZiAobW0pIHsKIAkJCQkJCXNjdHBfbV9mcmVlbShtbSk7CiAJCQkJCX0KKwkJCQkJ
U0NUUF9UQ0JfU0VORF9MT0NLKHN0Y2IpOworCQkJCQlpZiAoc3AgIT0gTlVMTCkgeworCQkJCQkJ
c3AtPnByb2Nlc3NpbmcgPSAwOworCQkJCQl9CisJCQkJCVNDVFBfVENCX1NFTkRfVU5MT0NLKHN0
Y2IpOwogCQkJCQlnb3RvIG91dDsKIAkJCQl9CiAJCQkJLyogVXBkYXRlIHRoZSBtYnVmIGFuZCBj
b3VudCAqLwogCQkJCVNDVFBfVENCX1NFTkRfTE9DSyhzdGNiKTsKLQkJCQlpZiAoc3RjYi0+YXNv
Yy5zdGF0ZSAmIFNDVFBfU1RBVEVfQUJPVVRfVE9fQkVfRlJFRUQpIHsKKwkJCQlpZiAoKHN0Y2It
PmFzb2Muc3RhdGUgJiBTQ1RQX1NUQVRFX0FCT1VUX1RPX0JFX0ZSRUVEKSB8fAorCQkJCSAgICAo
c3RjYi0+YXNvYy5zdGF0ZSAmIFNDVFBfU1RBVEVfV0FTX0FCT1JURUQpKSB7CiAJCQkJCS8qIHdl
IG5lZWQgdG8gZ2V0IG91dC4KIAkJCQkJICogUGVlciBwcm9iYWJseSBhYm9ydGVkLgogCQkJCQkg
Ki8KIAkJCQkJc2N0cF9tX2ZyZWVtKG1tKTsKLQkJCQkJaWYgKHN0Y2ItPmFzb2Muc3RhdGUgJiBT
Q1RQX1BDQl9GTEFHU19XQVNfQUJPUlRFRCkgeworCQkJCQlpZiAoc3RjYi0+YXNvYy5zdGF0ZSAm
IFNDVFBfU1RBVEVfV0FTX0FCT1JURUQpIHsKIAkJCQkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoTlVM
TCwgc3RjYiwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfT1VUUFVULCBFQ09OTlJFU0VUKTsKIAkJCQkJ
CWVycm9yID0gRUNPTk5SRVNFVDsKIAkJCQkJfQorCQkJCQlpZiAoc3AgIT0gTlVMTCkgeworCQkJ
CQkJc3AtPnByb2Nlc3NpbmcgPSAwOworCQkJCQl9CiAJCQkJCVNDVFBfVENCX1NFTkRfVU5MT0NL
KHN0Y2IpOwogCQkJCQlnb3RvIG91dDsKIAkJCQl9CkBAIC0xNDMxNCwxMiArMTQzMDUsMTIgQEAg
c2tpcF9wcmVibG9jazoKIAkJCQlzY3RwX3NuZF9zYl9hbGxvYyhzdGNiLCBzbmRvdXQpOwogCQkJ
CWF0b21pY19hZGRfaW50KCZzcC0+bGVuZ3RoLCBzbmRvdXQpOwogCQkJCWxlbiArPSBzbmRvdXQ7
Ci0JCQkJaWYgKHNyY3YtPnNpbmZvX2ZsYWdzICYgU0NUUF9TQUNLX0lNTUVESUFURUxZKSB7CisJ
CQkJaWYgKHNpbmZvX2ZsYWdzICYgU0NUUF9TQUNLX0lNTUVESUFURUxZKSB7CiAJCQkJCXNwLT5z
aW5mb19mbGFncyB8PSBTQ1RQX1NBQ0tfSU1NRURJQVRFTFk7CiAJCQkJfQogCiAJCQkJLyogRGlk
IHdlIHJlYWNoIEVPUj8gKi8KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9f
QVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZiBkZWZpbmVkKEFQUExFX0xF
T1BBUkQpCiAJCQkJaWYgKCh1aW8tPnVpb19yZXNpZCA9PSAwKSAmJgogI2Vsc2UKQEAgLTE0MzI5
LDE1ICsxNDMyMCwxNSBAQCBza2lwX3ByZWJsb2NrOgogCQkJCWlmICgodWlvLT51aW9fcmVzaWQg
PT0gMCkgJiYKICNlbmRpZgogCQkJCSAgICAoKHVzZXJfbWFya3NfZW9yID09IDApIHx8Ci0JCQkJ
ICAgICAoc3Jjdi0+c2luZm9fZmxhZ3MgJiBTQ1RQX0VPRikgfHwKLQkJCQkgICAgICh1c2VyX21h
cmtzX2VvciAmJiAoc3Jjdi0+c2luZm9fZmxhZ3MgJiBTQ1RQX0VPUikpKSkgeworCQkJCSAgICAg
KHNpbmZvX2ZsYWdzICYgU0NUUF9FT0YpIHx8CisJCQkJICAgICAodXNlcl9tYXJrc19lb3IgJiYg
KHNpbmZvX2ZsYWdzICYgU0NUUF9FT1IpKSkpIHsKIAkJCQkJc3AtPm1zZ19pc19jb21wbGV0ZSA9
IDE7CiAJCQkJfSBlbHNlIHsKIAkJCQkJc3AtPm1zZ19pc19jb21wbGV0ZSA9IDA7CiAJCQkJfQog
CQkJCVNDVFBfVENCX1NFTkRfVU5MT0NLKHN0Y2IpOwogCQkJfQotI2lmIGRlZmluZWQoX19BUFBM
RV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
I2lmIGRlZmluZWQoQVBQTEVfTEVPUEFSRCkKIAkJCWlmICh1aW8tPnVpb19yZXNpZCA9PSAwKSB7
CiAjZWxzZQpAQCAtMTQzNTYsNyArMTQzNDcsNyBAQCBza2lwX3ByZWJsb2NrOgogCQkJCQlTQ1RQ
X1RDQl9MT0NLKHN0Y2IpOwogCQkJCQlob2xkX3RjYmxvY2sgPSAxOwogCQkJCX0KLQkJCQlzY3Rw
X3BydW5lX3Byc2N0cChzdGNiLCBhc29jLCBzcmN2LCBzbmRsZW4pOworCQkJCXNjdHBfcHJ1bmVf
cHJzY3RwKHN0Y2IsIGFzb2MsIHNyY3YsIChpbnQpc25kbGVuKTsKIAkJCQlpbnF1ZXVlX2J5dGVz
ID0gc3RjYi0+YXNvYy50b3RhbF9vdXRwdXRfcXVldWVfc2l6ZSAtIChzdGNiLT5hc29jLmNodW5r
c19vbl9vdXRfcXVldWUgKiBTQ1RQX0RBVEFfQ0hVTktfT1ZFUkhFQUQoc3RjYikpOwogCQkJCWlm
IChTQ1RQX1NCX0xJTUlUX1NORChzbykgPiBpbnF1ZXVlX2J5dGVzKQogCQkJCQltYXhfbGVuID0g
U0NUUF9TQl9MSU1JVF9TTkQoc28pIC0gaW5xdWV1ZV9ieXRlczsKQEAgLTE0MzcxLDYgKzE0MzYy
LDExIEBAIHNraXBfcHJlYmxvY2s6CiAJCQkvKiB3YWl0IGZvciBzcGFjZSBub3cgKi8KIAkJCWlm
IChub25fYmxvY2tpbmcpIHsKIAkJCQkvKiBOb24tYmxvY2tpbmcgaW8gaW4gcGxhY2Ugb3V0ICov
CisJCQkJU0NUUF9UQ0JfU0VORF9MT0NLKHN0Y2IpOworCQkJCWlmIChzcCAhPSBOVUxMKSB7CisJ
CQkJCXNwLT5wcm9jZXNzaW5nID0gMDsKKwkJCQl9CisJCQkJU0NUUF9UQ0JfU0VORF9VTkxPQ0so
c3RjYik7CiAJCQkJZ290byBza2lwX291dF9lb2Y7CiAJCQl9CiAJCQkvKiBXaGF0IGFib3V0IHRo
ZSBJTklULCBzZW5kIGl0IG1heWJlICovCkBAIC0xNDM3OSwxMiArMTQzNzUsMTggQEAgc2tpcF9w
cmVibG9jazoKIAkJCQkJU0NUUF9UQ0JfTE9DSyhzdGNiKTsKIAkJCQkJaG9sZF90Y2Jsb2NrID0g
MTsKIAkJCQl9Ci0JCQkJaWYgKFNDVFBfR0VUX1NUQVRFKCZzdGNiLT5hc29jKSA9PSBTQ1RQX1NU
QVRFX09QRU4pIHsKKwkJCQlpZiAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9P
UEVOKSB7CiAJCQkJCS8qIGEgY29sbGlzaW9uIHRvb2sgdXMgZm9yd2FyZD8gKi8KIAkJCQkJcXVl
dWVfb25seSA9IDA7CiAJCQkJfSBlbHNlIHsKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQkJCQlORVRfRVBPQ0hfRU5URVIoZXQpOworI2VuZGlm
CiAJCQkJCXNjdHBfc2VuZF9pbml0aWF0ZShpbnAsIHN0Y2IsIFNDVFBfU09fTE9DS0VEKTsKLQkJ
CQkJU0NUUF9TRVRfU1RBVEUoYXNvYywgU0NUUF9TVEFURV9DT09LSUVfV0FJVCk7CisjaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJCQkJTkVUX0VQ
T0NIX0VYSVQoZXQpOworI2VuZGlmCisJCQkJCVNDVFBfU0VUX1NUQVRFKHN0Y2IsIFNDVFBfU1RB
VEVfQ09PS0lFX1dBSVQpOwogCQkJCQlxdWV1ZV9vbmx5ID0gMTsKIAkJCQl9CiAJCQl9CkBAIC0x
NDQ0MSw2ICsxNDQ0Myw5IEBAIHNraXBfcHJlYmxvY2s6CiAJCQkJICogdGhlIGlucHV0IHZpYSB0
aGUgbmV0IGlzIGhhcHBlbmluZwogCQkJCSAqIGFuZCBJIGRvbid0IG5lZWQgdG8gc3RhcnQgb3V0
cHV0IDotRAogCQkJCSAqLworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCisJCQkJTkVUX0VQT0NIX0VOVEVSKGV0KTsKKyNlbmRpZgogCQkJCWlmICho
b2xkX3RjYmxvY2sgPT0gMCkgewogCQkJCQlpZiAoU0NUUF9UQ0JfVFJZTE9DSyhzdGNiKSkgewog
CQkJCQkJaG9sZF90Y2Jsb2NrID0gMTsKQEAgLTE0NDUzLDEwICsxNDQ1OCwxMyBAQCBza2lwX3By
ZWJsb2NrOgogCQkJCQkJCSAgc3RjYiwKIAkJCQkJCQkgIFNDVFBfT1VUUFVUX0ZST01fVVNSX1NF
TkQsIFNDVFBfU09fTE9DS0VEKTsKIAkJCQl9Ci0JCQkJaWYgKGhvbGRfdGNibG9jayA9PSAxKSB7
Ci0JCQkJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKLQkJCQkJaG9sZF90Y2Jsb2NrID0gMDsKLQkJ
CQl9CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
KwkJCQlORVRfRVBPQ0hfRVhJVChldCk7CisjZW5kaWYKKwkJCX0KKwkJCWlmIChob2xkX3RjYmxv
Y2sgPT0gMSkgeworCQkJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKKwkJCQlob2xkX3RjYmxvY2sg
PSAwOwogCQkJfQogCQkJU09DS0JVRl9MT0NLKCZzby0+c29fc25kKTsKIAkJCS8qLQpAQCAtMTQ0
NzcsNyArMTQ0ODUsNyBAQCBza2lwX3ByZWJsb2NrOgogCQkJaWYgKFNDVFBfU0JfTElNSVRfU05E
KHNvKSA8PSAoaW5xdWV1ZV9ieXRlcyArCiAJCQkJCQkgICAgICBtaW4oU0NUUF9CQVNFX1NZU0NU
TChzY3RwX2FkZF9tb3JlX3RocmVzaG9sZCksIFNDVFBfU0JfTElNSVRfU05EKHNvKSkpKSB7CiAJ
CQkJaWYgKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9sb2dnaW5nX2xldmVsKSAmIFNDVFBfQkxLX0xP
R0dJTkdfRU5BQkxFKSB7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQ
UExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaWYgZGVmaW5lZChBUFBMRV9MRU9Q
QVJEKQogCQkJCQlzY3RwX2xvZ19ibG9jayhTQ1RQX0JMT0NLX0xPR19JTlRPX0JMSywKIAkJCQkJ
CSAgICAgICBhc29jLCB1aW8tPnVpb19yZXNpZCk7CkBAIC0xNDQ4NywxNCArMTQ0OTUsMTQgQEAg
c2tpcF9wcmVibG9jazoKICNlbmRpZgogI2Vsc2UKIAkJCQkJc2N0cF9sb2dfYmxvY2soU0NUUF9C
TE9DS19MT0dfSU5UT19CTEssCi0JCQkJCQkgICAgICAgYXNvYywgKHNpemVfdCl1aW8tPnVpb19y
ZXNpZCk7CisJCQkJCQkgICAgICAgYXNvYywgdWlvLT51aW9fcmVzaWQpOwogI2VuZGlmCiAJCQkJ
fQogCQkJCWJlLmVycm9yID0gMDsKLSNpZiAhZGVmaW5lZChfX1BhbmRhX18pICYmICFkZWZpbmVk
KF9fV2luZG93c19fKQorI2lmICEoZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pKQogCQkJCXN0Y2ItPmJsb2NrX2VudHJ5ID0gJmJlOwogI2VuZGlmCi0jaWYgZGVmaW5l
ZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJCQkJc2J1bmxvY2soJnNvLT5zb19zbmQsIDEpOwogI2VuZGlmCiAJCQkJZXJyb3Ig
PSBzYndhaXQoJnNvLT5zb19zbmQpOwpAQCAtMTQ1MDksMTAgKzE0NTE3LDE1IEBAIHNraXBfcHJl
YmxvY2s6CiAJCQkJCQl9CiAJCQkJCX0KIAkJCQkJU09DS0JVRl9VTkxPQ0soJnNvLT5zb19zbmQp
OworCQkJCQlTQ1RQX1RDQl9TRU5EX0xPQ0soc3RjYik7CisJCQkJCWlmIChzcCAhPSBOVUxMKSB7
CisJCQkJCQlzcC0+cHJvY2Vzc2luZyA9IDA7CisJCQkJCX0KKwkJCQkJU0NUUF9UQ0JfU0VORF9V
TkxPQ0soc3RjYik7CiAJCQkJCWdvdG8gb3V0X3VubG9ja2VkOwogCQkJCX0KIAotI2lmIGRlZmlu
ZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCQkJCWVycm9yID0gc2Jsb2NrKCZzby0+c29fc25kLCBTQkxPQ0tXQUlUKGZsYWdz
KSk7CiAjZW5kaWYKIAkJCQlpZiAoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2xvZ2dpbmdfbGV2ZWwp
ICYgU0NUUF9CTEtfTE9HR0lOR19FTkFCTEUpIHsKQEAgLTE0NTIxLDEyICsxNDUzNCwxOSBAQCBz
a2lwX3ByZWJsb2NrOgogCQkJCX0KIAkJCX0KIAkJCVNPQ0tCVUZfVU5MT0NLKCZzby0+c29fc25k
KTsKKwkJCVNDVFBfVENCX1NFTkRfTE9DSyhzdGNiKTsKIAkJCWlmIChzdGNiLT5hc29jLnN0YXRl
ICYgU0NUUF9TVEFURV9BQk9VVF9UT19CRV9GUkVFRCkgeworCQkJCWlmIChzcCAhPSBOVUxMKSB7
CisJCQkJCXNwLT5wcm9jZXNzaW5nID0gMDsKKwkJCQl9CisJCQkJU0NUUF9UQ0JfU0VORF9VTkxP
Q0soc3RjYik7CiAJCQkJZ290byBvdXRfdW5sb2NrZWQ7CiAJCQl9CisJCQlTQ1RQX1RDQl9TRU5E
X1VOTE9DSyhzdGNiKTsKIAkJfQogCQlTQ1RQX1RDQl9TRU5EX0xPQ0soc3RjYik7Ci0JCWlmIChz
dGNiLT5hc29jLnN0YXRlICYgU0NUUF9TVEFURV9BQk9VVF9UT19CRV9GUkVFRCkgeworCQlpZiAo
KHN0Y2ItPmFzb2Muc3RhdGUgJiBTQ1RQX1NUQVRFX0FCT1VUX1RPX0JFX0ZSRUVEKSB8fAorCQkg
ICAgKHN0Y2ItPmFzb2Muc3RhdGUgJiBTQ1RQX1NUQVRFX1dBU19BQk9SVEVEKSkgewogCQkJU0NU
UF9UQ0JfU0VORF9VTkxPQ0soc3RjYik7CiAJCQlnb3RvIG91dF91bmxvY2tlZDsKIAkJfQpAQCAt
MTQ1NDIsMTMgKzE0NTYyLDE0IEBAIHNraXBfcHJlYmxvY2s6CiAJCQkJc3RybS0+bGFzdF9tc2df
aW5jb21wbGV0ZSA9IDA7CiAJCQkJYXNvYy0+c3RyZWFtX2xvY2tlZCA9IDA7CiAJCQl9CisJCQlz
cC0+cHJvY2Vzc2luZyA9IDA7CiAJCX0gZWxzZSB7CiAJCQlTQ1RQX1BSSU5URigiSHVoIG5vIHNw
IFRTTkg/XG4iKTsKIAkJCXN0cm0tPmxhc3RfbXNnX2luY29tcGxldGUgPSAwOwogCQkJYXNvYy0+
c3RyZWFtX2xvY2tlZCA9IDA7CiAJCX0KIAkJU0NUUF9UQ0JfU0VORF9VTkxPQ0soc3RjYik7Ci0j
aWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiAjaWYgZGVmaW5lZChBUFBMRV9MRU9QQVJEKQogCQlpZiAodWlvLT51
aW9fcmVzaWQgPT0gMCkgewogI2Vsc2UKQEAgLTE0NTYzLDEzICsxNDU4NCw3IEBAIHNraXBfcHJl
YmxvY2s6CiAJCS8qIFdlIHNlbmQgaW4gYSAwLCBzaW5jZSB3ZSBkbyBOT1QgaGF2ZSBhbnkgbG9j
a3MgKi8KIAkJZXJyb3IgPSBzY3RwX21zZ19hcHBlbmQoc3RjYiwgbmV0LCB0b3AsIHNyY3YsIDAp
OwogCQl0b3AgPSBOVUxMOwotCQlpZiAoc3Jjdi0+c2luZm9fZmxhZ3MgJiBTQ1RQX0VPRikgewot
CQkJLyoKLQkJCSAqIFRoaXMgc2hvdWxkIG9ubHkgaGFwcGVuIGZvciBQYW5kYSBmb3IgdGhlIG1i
dWYKLQkJCSAqIHNlbmQgY2FzZSwgd2hpY2ggZG9lcyBOT1QgeWV0IHN1cHBvcnQgRUVPUiBtb2Rl
LgotCQkJICogVGh1cywgd2UgY2FuIGp1c3Qgc2V0IHRoaXMgZmxhZyB0byBkbyB0aGUgcHJvcGVy
Ci0JCQkgKiBFT0YgaGFuZGxpbmcuCi0JCQkgKi8KKwkJaWYgKHNpbmZvX2ZsYWdzICYgU0NUUF9F
T0YpIHsKIAkJCWdvdF9hbGxfb2ZfdGhlX3NlbmQgPSAxOwogCQl9CiAJfQpAQCAtMTQ1NzgsNyAr
MTQ1OTMsNyBAQCBza2lwX3ByZWJsb2NrOgogCX0KIGRhdGFsZXNzX2VvZjoKIAkvKiBFT0YgdGhp
bmcgPyAqLwotCWlmICgoc3Jjdi0+c2luZm9fZmxhZ3MgJiBTQ1RQX0VPRikgJiYKKwlpZiAoKHNp
bmZvX2ZsYWdzICYgU0NUUF9FT0YpICYmCiAJICAgIChnb3RfYWxsX29mX3RoZV9zZW5kID09IDEp
KSB7CiAJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3NlbmRzX3dpdGhfZW9mKTsKIAkJZXJyb3IgPSAw
OwpAQCAtMTQ1OTMsMTcgKzE0NjA4LDE2IEBAIGRhdGFsZXNzX2VvZjoKIAkJCQlnb3RvIGFib3J0
X2FueXdheTsKIAkJCX0KIAkJCS8qIHRoZXJlIGlzIG5vdGhpbmcgcXVldWVkIHRvIHNlbmQsIHNv
IEknbSBkb25lLi4uICovCi0JCQlpZiAoKFNDVFBfR0VUX1NUQVRFKGFzb2MpICE9IFNDVFBfU1RB
VEVfU0hVVERPV05fU0VOVCkgJiYKLQkJCSAgICAoU0NUUF9HRVRfU1RBVEUoYXNvYykgIT0gU0NU
UF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkgJiYKLQkJCSAgICAoU0NUUF9HRVRfU1RBVEUoYXNv
YykgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tfU0VOVCkpIHsKKwkJCWlmICgoU0NUUF9HRVRf
U1RBVEUoc3RjYikgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKSAmJgorCQkJICAgIChTQ1RQ
X0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSAmJgorCQkJ
ICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX0FDS19TRU5U
KSkgewogCQkJCXN0cnVjdCBzY3RwX25ldHMgKm5ldHA7CiAKIAkJCQkvKiBvbmx5IHNlbmQgU0hV
VERPV04gdGhlIGZpcnN0IHRpbWUgdGhyb3VnaCAqLwotCQkJCWlmIChTQ1RQX0dFVF9TVEFURShh
c29jKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHsKKwkJCQlpZiAoU0NUUF9HRVRfU1RBVEUoc3RjYikg
PT0gU0NUUF9TVEFURV9PUEVOKSB7CiAJCQkJCVNDVFBfU1RBVF9ERUNSX0dBVUdFMzIoc2N0cHNf
Y3VycmVzdGFiKTsKIAkJCQl9Ci0JCQkJU0NUUF9TRVRfU1RBVEUoYXNvYywgU0NUUF9TVEFURV9T
SFVURE9XTl9TRU5UKTsKLQkJCQlTQ1RQX0NMRUFSX1NVQlNUQVRFKGFzb2MsIFNDVFBfU1RBVEVf
U0hVVERPV05fUEVORElORyk7CisJCQkJU0NUUF9TRVRfU1RBVEUoc3RjYiwgU0NUUF9TVEFURV9T
SFVURE9XTl9TRU5UKTsKIAkJCQlzY3RwX3N0b3BfdGltZXJzX2Zvcl9zaHV0ZG93bihzdGNiKTsK
IAkJCQlpZiAoc3RjYi0+YXNvYy5hbHRlcm5hdGUpIHsKIAkJCQkJbmV0cCA9IHN0Y2ItPmFzb2Mu
YWx0ZXJuYXRlOwpAQCAtMTQ2MTQsNyArMTQ2MjgsNyBAQCBkYXRhbGVzc19lb2Y6CiAJCQkJc2N0
cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfU0hVVERPV04sIHN0Y2ItPnNjdHBfZXAsIHN0
Y2IsCiAJCQkJICAgICAgICAgICAgICAgICBuZXRwKTsKIAkJCQlzY3RwX3RpbWVyX3N0YXJ0KFND
VFBfVElNRVJfVFlQRV9TSFVURE9XTkdVQVJELCBzdGNiLT5zY3RwX2VwLCBzdGNiLAotCQkJCSAg
ICAgICAgICAgICAgICAgYXNvYy0+cHJpbWFyeV9kZXN0aW5hdGlvbik7CisJCQkJICAgICAgICAg
ICAgICAgICBOVUxMKTsKIAkJCX0KIAkJfSBlbHNlIHsKIAkJCS8qLQpAQCAtMTQ2MjcsMTcgKzE0
NjQxLDE3IEBAIGRhdGFsZXNzX2VvZjoKIAkJCSAqIGRhdGEgdG8gYmUgc2VudCBmaXJzdCBhbmQg
bW92ZSB0bwogCQkJICogU0hVVERPV04tUEVORElORwogCQkJICovCi0JCQlpZiAoKFNDVFBfR0VU
X1NUQVRFKGFzb2MpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCkgJiYKLQkJCSAgICAoU0NU
UF9HRVRfU1RBVEUoYXNvYykgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkgJiYKLQkJ
CSAgICAoU0NUUF9HRVRfU1RBVEUoYXNvYykgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tfU0VO
VCkpIHsKKwkJCWlmICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9TVEFURV9TSFVURE9X
Tl9TRU5UKSAmJgorCQkJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQX1NUQVRFX1NI
VVRET1dOX1JFQ0VJVkVEKSAmJgorCQkJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQ
X1NUQVRFX1NIVVRET1dOX0FDS19TRU5UKSkgewogCQkJCWlmIChob2xkX3RjYmxvY2sgPT0gMCkg
ewogCQkJCQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwogCQkJCQlob2xkX3RjYmxvY2sgPSAxOwogCQkJ
CX0KIAkJCQlpZiAoKCphc29jLT5zc19mdW5jdGlvbnMuc2N0cF9zc19pc191c2VyX21zZ3NfaW5j
b21wbGV0ZSkoc3RjYiwgYXNvYykpIHsKLQkJCQkJYXNvYy0+c3RhdGUgfD0gU0NUUF9TVEFURV9Q
QVJUSUFMX01TR19MRUZUOworCQkJCQlTQ1RQX0FERF9TVUJTVEFURShzdGNiLCBTQ1RQX1NUQVRF
X1BBUlRJQUxfTVNHX0xFRlQpOwogCQkJCX0KLQkJCQlhc29jLT5zdGF0ZSB8PSBTQ1RQX1NUQVRF
X1NIVVRET1dOX1BFTkRJTkc7CisJCQkJU0NUUF9BRERfU1VCU1RBVEUoc3RjYiwgU0NUUF9TVEFU
RV9TSFVURE9XTl9QRU5ESU5HKTsKIAkJCQlpZiAoVEFJTFFfRU1QVFkoJmFzb2MtPnNlbmRfcXVl
dWUpICYmCiAJCQkJICAgIFRBSUxRX0VNUFRZKCZhc29jLT5zZW50X3F1ZXVlKSAmJgogCQkJCSAg
ICAoYXNvYy0+c3RhdGUgJiBTQ1RQX1NUQVRFX1BBUlRJQUxfTVNHX0xFRlQpKSB7CkBAIC0xNDY0
OSwxOSArMTQ2NjMsMjUgQEAgZGF0YWxlc3NfZW9mOgogCQkJCQkJYXRvbWljX2FkZF9pbnQoJnN0
Y2ItPmFzb2MucmVmY250LCAtMSk7CiAJCQkJCQlmcmVlX2NudF9hcHBsaWVkID0gMDsKIAkJCQkJ
fQotCQkJCQlzbnByaW50Zihtc2csIHNpemVvZihtc2cpLAotCQkJCQkgICAgICAgICAiJXM6JWQg
YXQgJXMiLCBfX0ZJTEVfXywgX19MSU5FX18sIF9fZnVuY19fKTsKKwkJCQkJU0NUUF9TTlBSSU5U
Rihtc2csIHNpemVvZihtc2cpLAorCQkJCQkgICAgICAgICAgICAgICIlczolZCBhdCAlcyIsIF9f
RklMRV9fLCBfX0xJTkVfXywgX19mdW5jX18pOwogCQkJCQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRl
X2NhdXNlKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9kaWFnX2luZm9fY29kZSksCiAJCQkJCSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbXNnKTsKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQkJCQlORVRfRVBPQ0hfRU5URVIoZXQpOworI2Vu
ZGlmCiAJCQkJCXNjdHBfYWJvcnRfYW5fYXNzb2NpYXRpb24oc3RjYi0+c2N0cF9lcCwgc3RjYiwK
IAkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICBvcF9lcnIsIFNDVFBfU09fTE9DS0VEKTsK
KyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQkJ
CQlORVRfRVBPQ0hfRVhJVChldCk7CisjZW5kaWYKIAkJCQkJLyogbm93IHJlbG9jayB0aGUgc3Rj
YiBzbyBldmVyeXRoaW5nIGlzIHNhbmUgKi8KIAkJCQkJaG9sZF90Y2Jsb2NrID0gMDsKIAkJCQkJ
c3RjYiA9IE5VTEw7CiAJCQkJCWdvdG8gb3V0OwogCQkJCX0KIAkJCQlzY3RwX3RpbWVyX3N0YXJ0
KFNDVFBfVElNRVJfVFlQRV9TSFVURE9XTkdVQVJELCBzdGNiLT5zY3RwX2VwLCBzdGNiLAotCQkJ
CSAgICAgICAgICAgICAgICAgYXNvYy0+cHJpbWFyeV9kZXN0aW5hdGlvbik7CisJCQkJICAgICAg
ICAgICAgICAgICBOVUxMKTsKIAkJCQlzY3RwX2ZlYXR1cmVfb2ZmKGlucCwgU0NUUF9QQ0JfRkxB
R1NfTk9ERUxBWSk7CiAJCQl9CiAJCX0KQEAgLTE0Njc1LDEyICsxNDY5NSwxOCBAQCBza2lwX291
dF9lb2Y6CiAJCQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwogCQkJaG9sZF90Y2Jsb2NrID0gMTsKIAkJ
fQotCQlpZiAoU0NUUF9HRVRfU1RBVEUoJnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVfT1BFTikg
eworCQlpZiAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9PUEVOKSB7CiAJCQkv
KiBhIGNvbGxpc2lvbiB0b29rIHVzIGZvcndhcmQ/ICovCiAJCQlxdWV1ZV9vbmx5ID0gMDsKIAkJ
fSBlbHNlIHsKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQorCQkJTkVUX0VQT0NIX0VOVEVSKGV0KTsKKyNlbmRpZgogCQkJc2N0cF9zZW5kX2luaXRp
YXRlKGlucCwgc3RjYiwgU0NUUF9TT19MT0NLRUQpOwotCQkJU0NUUF9TRVRfU1RBVEUoJnN0Y2It
PmFzb2MsIFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQpOworI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQlORVRfRVBPQ0hfRVhJVChldCk7CisjZW5k
aWYKKwkJCVNDVFBfU0VUX1NUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQpOwogCQkJ
cXVldWVfb25seSA9IDE7CiAJCX0KIAl9CkBAIC0xNDcyNSw2ICsxNDc1MSw5IEBAIHNraXBfb3V0
X2VvZjoKIAkJICAgICAgICAgICAgICAgc3RjYi0+YXNvYy50b3RhbF9mbGlnaHQsCiAJCSAgICAg
ICAgICAgICAgIHN0Y2ItPmFzb2MuY2h1bmtzX29uX291dF9xdWV1ZSwgc3RjYi0+YXNvYy50b3Rh
bF9mbGlnaHRfY291bnQpOwogCX0KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQorCU5FVF9FUE9DSF9FTlRFUihldCk7CisjZW5kaWYKIAlpZiAoKHF1
ZXVlX29ubHkgPT0gMCkgJiYgKG5hZ2xlX2FwcGxpZXMgPT0gMCkgJiYgKHN0Y2ItPmFzb2MucGVl
cnNfcnduZCAmJiB1bl9zZW50KSkgewogCQkvKiB3ZSBjYW4gYXR0ZW1wdCB0byBzZW5kIHRvby4g
Ki8KIAkJaWYgKGhvbGRfdGNibG9jayA9PSAwKSB7CkBAIC0xNDc1NywxMyArMTQ3ODYsMTYgQEAg
c2tpcF9vdXRfZW9mOgogCQkodm9pZClzY3RwX21lZF9jaHVua19vdXRwdXQoaW5wLCBzdGNiLCAm
c3RjYi0+YXNvYywgJm51bV9vdXQsCiAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVh
c29uLCAxLCAxLCAmbm93LCAmbm93X2ZpbGxlZCwgZnJhZ19wb2ludCwgU0NUUF9TT19MT0NLRUQp
OwogCX0KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQorCU5FVF9FUE9DSF9FWElUKGV0KTsKKyNlbmRpZgogCVNDVFBEQkcoU0NUUF9ERUJVR19PVVRQ
VVQxLCAiVVNSIFNlbmQgY29tcGxldGUgcW86JWQgcHJ3OiVkIHVuc2VudDolZCB0ZjolZCBjb29x
OiVkIHRvcXM6JWQgZXJyOiVkXG4iLAogCSAgICAgICAgcXVldWVfb25seSwgc3RjYi0+YXNvYy5w
ZWVyc19yd25kLCB1bl9zZW50LAogCQlzdGNiLT5hc29jLnRvdGFsX2ZsaWdodCwgc3RjYi0+YXNv
Yy5jaHVua3Nfb25fb3V0X3F1ZXVlLAogCSAgICAgICAgc3RjYi0+YXNvYy50b3RhbF9vdXRwdXRf
cXVldWVfc2l6ZSwgZXJyb3IpOwogCiBvdXQ6Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYg
ZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJc2J1bmxvY2so
JnNvLT5zb19zbmQsIDEpOwogI2VuZGlmCiBvdXRfdW5sb2NrZWQ6CkBAIC0xNDc4MSw3ICsxNDgx
Myw3IEBAIG91dF91bmxvY2tlZDoKIAkJYXRvbWljX2FkZF9pbnQoJnN0Y2ItPmFzb2MucmVmY250
LCAtMSk7CiAJfQogI2lmZGVmIElOVkFSSUFOVFMKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQor
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJaWYg
KHN0Y2IpIHsKIAkJaWYgKG10eF9vd25lZCgmc3RjYi0+dGNiX210eCkpIHsKIAkJCXBhbmljKCJM
ZWF2aW5nIHdpdGggdGNiIG10eCBvd25lZD8iKTsKQEAgLTE0NzkxLDMzICsxNDgyMyw2IEBAIG91
dF91bmxvY2tlZDoKIAkJfQogCX0KICNlbmRpZgotI2VuZGlmCi0jaWZkZWYgX19QYW5kYV9fCi0J
LyoKLQkgKiBIYW5kbGUgdGhlIEVBR0FJTi9FTk9NRU0gY2FzZXMgdG8gcmVhdHRhY2ggdGhlIHBh
ayBoZWFkZXIKLQkgKiB0byBwYXJ0aWNsZSB3aGVuIHBhayBpcyBwYXNzZWQgaW4sIHNvIHRoYXQg
Y2FsbGVyCi0JICogY2FuIHRyeSBhZ2FpbiB3aXRoIHRoaXMgcGFrCi0JICoKLQkgKiBOT1RFOiBG
b3Igb3RoZXIgY2FzZXMsIGluY2x1ZGluZyBzdWNjZXNzIGNhc2UsCi0JICogd2Ugc2ltcGx5IHdh
bnQgdG8gcmV0dXJuIHRoZSBoZWFkZXIgYmFjayB0byBmcmVlCi0JICogcG9vbAotCSAqLwotCWlm
ICh0b3ApIHsKLQkJaWYgKChlcnJvciA9PSBFQUdBSU4pIHx8IChlcnJvciA9PSBFTk9NRU0pKSB7
Ci0JCQlTQ1RQX0FUVEFDSF9DSEFJTihpX3BhaywgdG9wLCBzbmRsZW4pOwotCQkJdG9wID0gTlVM
TDsKLQkJfSBlbHNlIHsKLQkJCSh2b2lkKVNDVFBfUkVMRUFTRV9IRUFERVIoaV9wYWspOwotCQl9
Ci0JfSBlbHNlIHsKLQkJLyogVGhpcyBpcyB0byBoYW5kbGUgY2FzZXMgd2hlbiB0b3AgaGFzCi0J
CSAqIGJlZW4gcmVzZXQgdG8gTlVMTCBidXQgcGFrIG1pZ2h0IG5vdAotCQkgKiBiZSBmcmVlZAot
CQkgKi8KLQkJaWYgKGlfcGFrKSB7Ci0JCQkodm9pZClTQ1RQX1JFTEVBU0VfSEVBREVSKGlfcGFr
KTsKLQkJfQotCX0KICNlbmRpZgogCWlmICh0b3ApIHsKIAkJc2N0cF9tX2ZyZWVtKHRvcCk7CkBA
IC0xNDg4Nyw3ICsxNDg5Miw3IEBAIHNjdHBfYWRkX2F1dGhfY2h1bmsoc3RydWN0IG1idWYgKm0s
IHN0cnVjdCBtYnVmICoqbV9lbmQsCiAJcmV0dXJuIChtKTsKIH0KIAotI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pICB8fCBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiAoZGVmaW5lZChfX0ZyZWVCU0Rf
XykgfHwgZGVmaW5lZChfX0FQUExFX18pKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lm
ZGVmIElORVQ2CiBpbnQKIHNjdHBfdjZzcmNfbWF0Y2hfbmV4dGhvcChzdHJ1Y3Qgc29ja2FkZHJf
aW42ICpzcmM2LCBzY3RwX3JvdXRlX3QgKnJvKQpAQCAtMTQ4OTYsNyArMTQ5MDEsMTEgQEAgc2N0
cF92NnNyY19tYXRjaF9uZXh0aG9wKHN0cnVjdCBzb2NrYWRkcl9pbjYgKnNyYzYsIHNjdHBfcm91
dGVfdCAqcm8pCiAJc3RydWN0IG5kX3BmeHJvdXRlciAqcGZ4cnRyID0gTlVMTDsKIAlzdHJ1Y3Qg
c29ja2FkZHJfaW42IGd3NjsKIAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisJaWYgKHJvID09
IE5VTEwgfHwgcm8tPnJvX25oID09IE5VTEwgfHwgc3JjNi0+c2luNl9mYW1pbHkgIT0gQUZfSU5F
VDYpCisjZWxzZQogCWlmIChybyA9PSBOVUxMIHx8IHJvLT5yb19ydCA9PSBOVUxMIHx8IHNyYzYt
PnNpbjZfZmFtaWx5ICE9IEFGX0lORVQ2KQorI2VuZGlmCiAJCXJldHVybiAoMCk7CiAKIAkvKiBn
ZXQgcHJlZml4IGVudHJ5IG9mIGFkZHJlc3MgKi8KQEAgLTE0OTM1LDEwICsxNDk0NCwxNiBAQCBz
Y3RwX3Y2c3JjX21hdGNoX25leHRob3Aoc3RydWN0IHNvY2thZGRyX2luNiAqc3JjNiwgc2N0cF9y
b3V0ZV90ICpybykKIAkJU0NUUERCRyhTQ1RQX0RFQlVHX09VVFBVVDIsICJwcmVmaXggcm91dGVy
IGlzICIpOwogCQlTQ1RQREJHX0FERFIoU0NUUF9ERUJVR19PVVRQVVQyLCAoc3RydWN0IHNvY2th
ZGRyICopJmd3Nik7CiAJCVNDVFBEQkcoU0NUUF9ERUJVR19PVVRQVVQyLCAiaW5zdGFsbGVkIHJv
dXRlciBpcyAiKTsKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorCQlTQ1RQREJHX0FERFIoU0NU
UF9ERUJVR19PVVRQVVQyLCAmcm8tPnJvX25oLT5nd19zYSk7CisjZWxzZQogCQlTQ1RQREJHX0FE
RFIoU0NUUF9ERUJVR19PVVRQVVQyLCByby0+cm9fcnQtPnJ0X2dhdGV3YXkpOwotCQlpZiAoc2N0
cF9jbXBhZGRyKChzdHJ1Y3Qgc29ja2FkZHIgKikmZ3c2LCByby0+cm9fcnQtPnJ0X2dhdGV3YXkp
KSB7CisjZW5kaWYKICNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorCQlpZiAoc2N0cF9jbXBhZGRy
KChzdHJ1Y3Qgc29ja2FkZHIgKikmZ3c2LCAmcm8tPnJvX25oLT5nd19zYSkpIHsKIAkJCU5ENl9S
VU5MT0NLKCk7CisjZWxzZQorCQlpZiAoc2N0cF9jbXBhZGRyKChzdHJ1Y3Qgc29ja2FkZHIgKikm
Z3c2LCByby0+cm9fcnQtPnJ0X2dhdGV3YXkpKSB7CiAjZW5kaWYKIAkJCVNDVFBEQkcoU0NUUF9E
RUJVR19PVVRQVVQyLCAicGZ4cm91dGVyIGlzIGluc3RhbGxlZFxuIik7CiAJCQlyZXR1cm4gKDEp
OwpAQCAtMTQ5NjAsNyArMTQ5NzUsMTEgQEAgc2N0cF92NHNyY19tYXRjaF9uZXh0aG9wKHN0cnVj
dCBzY3RwX2lmYSAqc2lmYSwgc2N0cF9yb3V0ZV90ICpybykKIAlzdHJ1Y3QgaWZhZGRyICppZmE7
CiAJc3RydWN0IGluX2FkZHIgc3JjbmV0YWRkciwgZ3duZXRhZGRyOwogCisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykKKwlpZiAocm8gPT0gTlVMTCB8fCByby0+cm9fbmggPT0gTlVMTCB8fAorI2Vs
c2UKIAlpZiAocm8gPT0gTlVMTCB8fCByby0+cm9fcnQgPT0gTlVMTCB8fAorI2VuZGlmCiAJICAg
IHNpZmEtPmFkZHJlc3Muc2Euc2FfZmFtaWx5ICE9IEFGX0lORVQpIHsKIAkJcmV0dXJuICgwKTsK
IAl9CkBAIC0xNDk3MiwxMCArMTQ5OTEsMTggQEAgc2N0cF92NHNyY19tYXRjaF9uZXh0aG9wKHN0
cnVjdCBzY3RwX2lmYSAqc2lmYSwgc2N0cF9yb3V0ZV90ICpybykKIAlTQ1RQREJHX0FERFIoU0NU
UF9ERUJVR19PVVRQVVQyLCAmc2lmYS0+YWRkcmVzcy5zYSk7CiAJU0NUUERCRyhTQ1RQX0RFQlVH
X09VVFBVVDEsICJuZXR3b3JrIGFkZHJlc3MgaXMgJXhcbiIsIHNyY25ldGFkZHIuc19hZGRyKTsK
IAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisJc2luID0gJnJvLT5yb19uaC0+Z3c0X3NhOwor
I2Vsc2UKIAlzaW4gPSAoc3RydWN0IHNvY2thZGRyX2luICopcm8tPnJvX3J0LT5ydF9nYXRld2F5
OworI2VuZGlmCiAJZ3duZXRhZGRyLnNfYWRkciA9IChzaW4tPnNpbl9hZGRyLnNfYWRkciAmIG1h
c2stPnNpbl9hZGRyLnNfYWRkcik7CiAJU0NUUERCRyhTQ1RQX0RFQlVHX09VVFBVVDEsICJtYXRj
aF9uZXh0aG9wNDogbmV4dGhvcCBpcyAiKTsKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorCVND
VFBEQkdfQUREUihTQ1RQX0RFQlVHX09VVFBVVDIsICZyby0+cm9fbmgtPmd3X3NhKTsKKyNlbHNl
CiAJU0NUUERCR19BRERSKFNDVFBfREVCVUdfT1VUUFVUMiwgcm8tPnJvX3J0LT5ydF9nYXRld2F5
KTsKKyNlbmRpZgogCVNDVFBEQkcoU0NUUF9ERUJVR19PVVRQVVQxLCAibmV0d29yayBhZGRyZXNz
IGlzICV4XG4iLCBnd25ldGFkZHIuc19hZGRyKTsKIAlpZiAoc3JjbmV0YWRkci5zX2FkZHIgPT0g
Z3duZXRhZGRyLnNfYWRkcikgewogCQlyZXR1cm4gKDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIv
dXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfb3V0cHV0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25l
dGluZXQvc2N0cF9vdXRwdXQuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4
IDU5N2RkYzNiZjNhNWNiNGU0Yjg5MDA5NjNlOGRhYTg4ZGRlODU5MDMuLjQ4NDljMmI0OTI1ZDNk
MTE1YjJlMDUzMGY5NjczMmVkNWIwOGJhYmYKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRp
bmV0L3NjdHBfb3V0cHV0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBf
b3V0cHV0LmgKQEAgLTMyLDkgKzMyLDkgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWZkZWYgX19GcmVlQlNEX18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19G
QlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfb3V0cHV0LmggMzIzODYxIDIw
MTctMDktMjEgMTE6NTY6MzFaIHR1ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQv
c3lzL25ldGluZXQvc2N0cF9vdXRwdXQuaCAzNjIwNTQgMjAyMC0wNi0xMSAxMzozNDowOVogdHVl
eGVuICQiKTsKICNlbmRpZgogCiAjaWZuZGVmIF9ORVRJTkVUX1NDVFBfT1VUUFVUX0hfCkBAIC03
OCwxMSArNzgsNyBAQCBpbnQKIHNjdHBfdjRzcmNfbWF0Y2hfbmV4dGhvcChzdHJ1Y3Qgc2N0cF9p
ZmEgKnNpZmEsIHNjdHBfcm91dGVfdCAqcm8pOwogI2VuZGlmCiAKLXZvaWQgc2N0cF9zZW5kX2lu
aXRpYXRlKHN0cnVjdCBzY3RwX2lucGNiICosIHN0cnVjdCBzY3RwX3RjYiAqLCBpbnQKLSNpZiAh
ZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQotICAg
IFNDVFBfVU5VU0VECi0jZW5kaWYKLSAgICApOwordm9pZCBzY3RwX3NlbmRfaW5pdGlhdGUoc3Ry
dWN0IHNjdHBfaW5wY2IgKiwgc3RydWN0IHNjdHBfdGNiICosIGludCk7CiAKIHZvaWQKIHNjdHBf
c2VuZF9pbml0aWF0ZV9hY2soc3RydWN0IHNjdHBfaW5wY2IgKiwgc3RydWN0IHNjdHBfdGNiICos
CkBAIC05MCwxOCArODYsMTggQEAgc2N0cF9zZW5kX2luaXRpYXRlX2FjayhzdHJ1Y3Qgc2N0cF9p
bnBjYiAqLCBzdHJ1Y3Qgc2N0cF90Y2IgKiwKICAgICAgICAgICAgICAgICAgICAgICAgaW50LCBp
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkciAqLCBzdHJ1Y3Qgc29j
a2FkZHIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNjdHBoZHIgKiwgc3RydWN0
IHNjdHBfaW5pdF9jaHVuayAqLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDhfdCwgdWludDMyX3QsCiAjZW5kaWYKICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDMyX3QsIHVpbnQxNl90KTsKIAogc3RydWN0IG1idWYgKgogc2N0cF9hcmV0aGVyZV91
bnJlY29nbml6ZWRfcGFyYW1ldGVycyhzdHJ1Y3QgbWJ1ZiAqLCBpbnQsIGludCAqLAotCQkJCSAg
ICAgIHN0cnVjdCBzY3RwX2NodW5raGRyICosIGludCAqKTsKKwkJCQkgICAgICBzdHJ1Y3Qgc2N0
cF9jaHVua2hkciAqLCBpbnQgKiwgaW50ICopOwogdm9pZCBzY3RwX3F1ZXVlX29wX2VycihzdHJ1
Y3Qgc2N0cF90Y2IgKiwgc3RydWN0IG1idWYgKik7CiAKIGludAotc2N0cF9zZW5kX2Nvb2tpZV9l
Y2hvKHN0cnVjdCBtYnVmICosIGludCwgc3RydWN0IHNjdHBfdGNiICosCitzY3RwX3NlbmRfY29v
a2llX2VjaG8oc3RydWN0IG1idWYgKiwgaW50LCBpbnQsIHN0cnVjdCBzY3RwX3RjYiAqLAogICAg
IHN0cnVjdCBzY3RwX25ldHMgKik7CiAKIHZvaWQgc2N0cF9zZW5kX2Nvb2tpZV9hY2soc3RydWN0
IHNjdHBfdGNiICopOwpAQCAtMTI0LDcgKzEyMCw3IEBAIHZvaWQgc2N0cF9zZW5kX3NodXRkb3du
X2NvbXBsZXRlKHN0cnVjdCBzY3RwX3RjYiAqLCBzdHJ1Y3Qgc2N0cF9uZXRzICosIGludCk7CiAK
IHZvaWQgc2N0cF9zZW5kX3NodXRkb3duX2NvbXBsZXRlMihzdHJ1Y3Qgc29ja2FkZHIgKiwgc3Ry
dWN0IHNvY2thZGRyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0
IHNjdHBoZHIgKiwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDhfdCwgdWludDMyX3QsIHVpbnQxNl90LAogI2VuZGlmCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QsIHVpbnQxNl90KTsKQEAgLTE0OCwx
MSArMTQ0LDExIEBAIHZvaWQgc2N0cF9tb3ZlX2NodW5rc19mcm9tX25ldChzdHJ1Y3Qgc2N0cF90
Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX25ldHMgKm5ldCk7CiAJCQkJCXNpemVvZihzdHJ1Y3Qgc2N0
cF9pZGF0YV9jaHVuaykgOiBcCiAJCQkJCXNpemVvZihzdHJ1Y3Qgc2N0cF9kYXRhX2NodW5rKSkK
IAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAw
MAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBp
bnQKIHNjdHBfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiICosIHN0cnVjdCBtYnVmICosIHN0cnVj
dCBzb2NrYWRkciAqLAogICAgIHN0cnVjdCBtYnVmICosIHN0cnVjdCB0aHJlYWQgKiwgaW50KTsK
LSNlbGlmIGRlZmluZWQoX19XaW5kb3dzX18pCisjZWxpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKIHNjdHBfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiICosIHN0
cnVjdCBtYnVmICosIHN0cnVjdCBzb2NrYWRkciAqLAogICAgIHN0cnVjdCBtYnVmICosIFBLVEhS
RUFELCBpbnQpOwogI2Vsc2UKQEAgLTE2MSwzMCArMTU3LDE1IEBAIHNjdHBfb3V0cHV0KHN0cnVj
dCBzY3RwX2lucGNiICosIHN0cnVjdCBtYnVmICosIHN0cnVjdCBzb2NrYWRkciAqLAogI2VuZGlm
CiBpbnQKIHNjdHBfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiICosCi0jaWYgZGVmaW5lZChfX1Bh
bmRhX18pCi0gICAgcGFraGFuZGxlX3R5cGUsCi0jZWxzZQogICAgIHN0cnVjdCBtYnVmICosCi0j
ZW5kaWYKICAgICBzdHJ1Y3Qgc29ja2FkZHIgKiwKLSNpZiBkZWZpbmVkKF9fUGFuZGFfXykKLSAg
ICBwYWtoYW5kbGVfdHlwZSwKLSNlbHNlCiAgICAgc3RydWN0IG1idWYgKiwKLSNlbmRpZgogICAg
IHN0cnVjdCBwcm9jICosIGludCk7CiAjZW5kaWYKIAotdm9pZCBzY3RwX2NodW5rX291dHB1dChz
dHJ1Y3Qgc2N0cF9pbnBjYiAqLCBzdHJ1Y3Qgc2N0cF90Y2IgKiwgaW50LCBpbnQKLSNpZiAhZGVm
aW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQotICAgIFND
VFBfVU5VU0VECi0jZW5kaWYKLSAgICApOwotdm9pZCBzY3RwX3NlbmRfYWJvcnRfdGNiKHN0cnVj
dCBzY3RwX3RjYiAqLCBzdHJ1Y3QgbWJ1ZiAqLCBpbnQKLSNpZiAhZGVmaW5lZChfX0FQUExFX18p
ICYmICFkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQotICAgIFNDVFBfVU5VU0VECi0jZW5k
aWYKLSAgICApOwordm9pZCBzY3RwX2NodW5rX291dHB1dChzdHJ1Y3Qgc2N0cF9pbnBjYiAqLCBz
dHJ1Y3Qgc2N0cF90Y2IgKiwgaW50LCBpbnQpOworCit2b2lkIHNjdHBfc2VuZF9hYm9ydF90Y2Io
c3RydWN0IHNjdHBfdGNiICosIHN0cnVjdCBtYnVmICosIGludCk7CiAKIHZvaWQgc2VuZF9mb3J3
YXJkX3RzbihzdHJ1Y3Qgc2N0cF90Y2IgKiwgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKik7CiAK
QEAgLTE5NCw3ICsxNzUsNiBAQCB2b2lkIHNjdHBfc2VuZF9oYihzdHJ1Y3Qgc2N0cF90Y2IgKiwg
c3RydWN0IHNjdHBfbmV0cyAqLCBpbnQpOwogCiB2b2lkIHNjdHBfc2VuZF9lY25fZWNobyhzdHJ1
Y3Qgc2N0cF90Y2IgKiwgc3RydWN0IHNjdHBfbmV0cyAqLCB1aW50MzJfdCk7CiAKLQogdm9pZAog
c2N0cF9zZW5kX3BhY2tldF9kcm9wcGVkKHN0cnVjdCBzY3RwX3RjYiAqLCBzdHJ1Y3Qgc2N0cF9u
ZXRzICosIHN0cnVjdCBtYnVmICosCiAgICAgaW50LCBpbnQsIGludCk7CkBAIC0yMjUsMTQgKzIw
NSwxNCBAQCBzY3RwX3NlbmRfc3RyX3Jlc2V0X3JlcShzdHJ1Y3Qgc2N0cF90Y2IgKiwgdWludDE2
X3QgLCB1aW50MTZfdCAqLAogdm9pZAogc2N0cF9zZW5kX2Fib3J0KHN0cnVjdCBtYnVmICosIGlu
dCwgc3RydWN0IHNvY2thZGRyICosIHN0cnVjdCBzb2NrYWRkciAqLAogICAgICAgICAgICAgICAg
IHN0cnVjdCBzY3RwaGRyICosIHVpbnQzMl90LCBzdHJ1Y3QgbWJ1ZiAqLAotI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKICAgICAgICAgICAgICAgICB1aW50OF90LCB1aW50MzJfdCwgdWludDE2X3QsCiAj
ZW5kaWYKICAgICAgICAgICAgICAgICB1aW50MzJfdCwgdWludDE2X3QpOwogCiB2b2lkIHNjdHBf
c2VuZF9vcGVycl90byhzdHJ1Y3Qgc29ja2FkZHIgKiwgc3RydWN0IHNvY2thZGRyICosCiAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2N0cGhkciAqLCB1aW50MzJfdCwgc3RydWN0IG1i
dWYgKiwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
OF90LCB1aW50MzJfdCwgdWludDE2X3QsCiAjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQzMl90LCB1aW50MTZfdCk7CkBAIC0yNDQsMjAgKzIyNCwxNSBAQCBpbnQKIHNjdHBfc29z
ZW5kKHN0cnVjdCBzb2NrZXQgKnNvLAogICAgIHN0cnVjdCBzb2NrYWRkciAqYWRkciwKICAgICBz
dHJ1Y3QgdWlvICp1aW8sCi0jaWZkZWYgX19QYW5kYV9fCi0gICAgcGFraGFuZGxlX3R5cGUgdG9w
LAotICAgIHBha2hhbmRsZV90eXBlIGNvbnRyb2wsCi0jZWxzZQogICAgIHN0cnVjdCBtYnVmICp0
b3AsCiAgICAgc3RydWN0IG1idWYgKmNvbnRyb2wsCi0jZW5kaWYKLSNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykgfHwgZGVmaW5lZChfX1BhbmRhX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAgICAgaW50IGZsYWdzCiAjZWxzZQogICAgIGludCBmbGFn
cywKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAw
MDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
ICAgIHN0cnVjdCB0aHJlYWQgKnAKLSNlbGlmIGRlZmluZWQoX19XaW5kb3dzX18pCisjZWxpZiBk
ZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICAgICBQS1RIUkVBRCBw
CiAjZWxzZQogI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3BjYi5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRp
bmV0L3NjdHBfcGNiLmMKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA3ZjM5
M2JjMGU3MDJkMjU2MTJiOTljMTcyY2ZiYzgwOTQ5ZmQ2OGEwLi5mMDI5NDg1ODcwMjY1OTIwODIz
MGJmOGQwODkyNzJmODJhZjhjNzFiCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9z
Y3RwX3BjYi5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3BjYi5jCkBA
IC0zMiwxMyArMzIsMTMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaWZkZWYgX19GcmVlQlNEX18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRG
cmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfcGNiLmMgMzU1OTMxIDIwMTktMTItMjAgMTU6
MjU6MDhaIHR1ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQv
c2N0cF9wY2IuYyAzNjQyNjggMjAyMC0wOC0xNiAxMTo1MDozN1ogdHVleGVuICQiKTsKICNlbmRp
ZgogCiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX29zLmg+Ci0jaWZkZWYgX19GcmVlQlNEX18KKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1
ZGUgPHN5cy9wcm9jLmg+CiAjZW5kaWYKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfdmFyLmg+CkBA
IC01MSwxMSArNTEsOCBAQCBfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0
cF9wY2IuYyAzNTU5MzEgMjAxOS0xMi0yMCAxNToyNTowOFogdHVleAogI2luY2x1ZGUgPG5ldGlu
ZXQvc2N0cF9vdXRwdXQuaD4KICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfdGltZXIuaD4KICNpbmNs
dWRlIDxuZXRpbmV0L3NjdHBfYnNkX2FkZHIuaD4KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSAxMDAwMDAwCi0jaW5jbHVkZSA8bmV0aW5ldC9zY3RwX2R0
cmFjZV9kZWZpbmUuaD4KLSNlbmRpZgogI2lmIGRlZmluZWQoSU5FVCkgfHwgZGVmaW5lZChJTkVU
NikKLSNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmICFkZWZpbmVkKF9X
SU4zMikKICNpbmNsdWRlIDxuZXRpbmV0L3VkcC5oPgogI2VuZGlmCiAjZW5kaWYKQEAgLTY2LDI4
ICs2MywyMyBAQCBfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9wY2Iu
YyAzNTU5MzEgMjAxOS0xMi0yMCAxNToyNTowOFogdHVleAogI2luY2x1ZGUgPG5ldGluZXQ2L2lw
Nl92YXIuaD4KICNlbmRpZgogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUg
PHN5cy9zY2hlZC5oPgogI2luY2x1ZGUgPHN5cy9zbXAuaD4KICNpbmNsdWRlIDxzeXMvdW5pc3Rk
Lmg+CiAjZW5kaWYKICNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8dXNlcl9z
b2NrZXR2YXIuaD4KLSNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2luY2x1
ZGUgPHVzZXJfYXRvbWljLmg+CisjaWYgIWRlZmluZWQoX1dJTjMyKQogI2luY2x1ZGUgPG5ldGRi
Lmg+CiAjZW5kaWYKICNlbmRpZgogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCi0jZGVmaW5lIEFQ
UExFX0ZJTEVfTk8gNAotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0Zy
ZWVCU0RfdmVyc2lvbiA+PSA4MDEwMDAKLVZORVRfREVGSU5FKHN0cnVjdCBzY3RwX2Jhc2VfaW5m
bywgc3lzdGVtX2Jhc2VfaW5mbyk7Ci0jZWxzZQorI2lmICFkZWZpbmVkKF9fRnJlZUJTRF9fKSB8
fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBzdHJ1Y3Qgc2N0cF9iYXNlX2luZm8gc3lzdGVtX2Jh
c2VfaW5mbzsKLSNlbmRpZgogCisjZW5kaWYKIC8qIEZJWDogd2UgZG9uJ3QgaGFuZGxlIG11bHRp
cGxlIGxpbmsgbG9jYWwgc2NvcGVzICovCiAvKiAic2NvcGVsZXNzIiByZXBsYWNlbWVudCBJTjZf
QVJFX0FERFJfRVFVQUwgKi8KICNpZmRlZiBJTkVUNgpAQCAtOTUsNyArODcsNyBAQCBpbnQKIFND
VFA2X0FSRV9BRERSX0VRVUFMKHN0cnVjdCBzb2NrYWRkcl9pbjYgKmEsIHN0cnVjdCBzb2NrYWRk
cl9pbjYgKmIpCiB7CiAjaWZkZWYgU0NUUF9FTUJFRERFRF9WNl9TQ09QRQotI2lmIGRlZmluZWQo
X19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogCXN0cnVjdCBpbjZfYWRkciB0bXBfYSwgdG1wX2I7CiAKIAl0bXBfYSA9IGEtPnNpbjZf
YWRkcjsKQEAgLTI2OCw2ICsyNjAsNyBAQCBzY3RwX2ZpbmRfaWZuKHZvaWQgKmlmbiwgdWludDMy
X3QgaWZuX2luZGV4KQogCS8qIFdlIGFzc3VtZSB0aGUgbG9jayBpcyBoZWxkIGZvciB0aGUgYWRk
cmVzc2VzCiAJICogaWYgdGhhdCdzIHdyb25nIHByb2JsZW1zIGNvdWxkIG9jY3VyIDotKQogCSAq
LworCVNDVFBfSVBJX0FERFJfTE9DS19BU1NFUlQoKTsKIAloYXNoX2lmbl9oZWFkID0gJlNDVFBf
QkFTRV9JTkZPKHZyZl9pZm5faGFzaClbKGlmbl9pbmRleCAmIFNDVFBfQkFTRV9JTkZPKHZyZl9p
Zm5faGFzaG1hcmspKV07CiAJTElTVF9GT1JFQUNIKHNjdHBfaWZucCwgaGFzaF9pZm5faGVhZCwg
bmV4dF9idWNrZXQpIHsKIAkJaWYgKHNjdHBfaWZucC0+aWZuX2luZGV4ID09IGlmbl9pbmRleCkg
ewpAQCAtMzYzLDE0ICszNTYsMTYgQEAgc2N0cF9kZWxldGVfaWZuKHN0cnVjdCBzY3RwX2lmbiAq
c2N0cF9pZm5wLCBpbnQgaG9sZF9hZGRyX2xvY2spCiAJCS8qIE5vdCBpbiB0aGUgbGlzdC4uIHNv
cnJ5ICovCiAJCXJldHVybjsKIAl9Ci0JaWYgKGhvbGRfYWRkcl9sb2NrID09IDApCisJaWYgKGhv
bGRfYWRkcl9sb2NrID09IDApIHsKIAkJU0NUUF9JUElfQUREUl9XTE9DSygpOworCX0gZWxzZSB7
CisJCVNDVFBfSVBJX0FERFJfV0xPQ0tfQVNTRVJUKCk7CisJfQogCUxJU1RfUkVNT1ZFKHNjdHBf
aWZucCwgbmV4dF9idWNrZXQpOwogCUxJU1RfUkVNT1ZFKHNjdHBfaWZucCwgbmV4dF9pZm4pOwot
CVNDVFBfREVSRUdJU1RFUl9JTlRFUkZBQ0Uoc2N0cF9pZm5wLT5pZm5faW5kZXgsCi0JCQkJICBz
Y3RwX2lmbnAtPnJlZ2lzdGVyZWRfYWYpOwotCWlmIChob2xkX2FkZHJfbG9jayA9PSAwKQorCWlm
IChob2xkX2FkZHJfbG9jayA9PSAwKSB7CiAJCVNDVFBfSVBJX0FERFJfV1VOTE9DSygpOworCX0K
IAkvKiBUYWtlIGF3YXkgdGhlIHJlZmVyZW5jZSwgYW5kIHBvc3NpYmx5IGZyZWUgaXQgKi8KIAlz
Y3RwX2ZyZWVfaWZuKHNjdHBfaWZucCk7CiB9CkBAIC00OTYsNyArNDkxLDYgQEAgc2N0cF9hZGRf
aWZhX3RvX2lmbihzdHJ1Y3Qgc2N0cF9pZm4gKnNjdHBfaWZucCwgc3RydWN0IHNjdHBfaWZhICpz
Y3RwX2lmYXApCiAJfQogCWlmIChzY3RwX2lmbnAtPmlmYV9jb3VudCA9PSAxKSB7CiAJCS8qIHJl
Z2lzdGVyIHRoZSBuZXcgaW50ZXJmYWNlICovCi0JCVNDVFBfUkVHSVNURVJfSU5URVJGQUNFKHNj
dHBfaWZucC0+aWZuX2luZGV4LCBpZmFfYWYpOwogCQlzY3RwX2lmbnAtPnJlZ2lzdGVyZWRfYWYg
PSBpZmFfYWY7CiAJfQogfQpAQCAtNTM3LDEzICs1MzEsOSBAQCBzY3RwX3JlbW92ZV9pZmFfZnJv
bV9pZm4oc3RydWN0IHNjdHBfaWZhICpzY3RwX2lmYXApCiAJCQkvKiByZS1yZWdpc3RlciBhZGRy
ZXNzIGZhbWlseSB0eXBlLCBpZiBuZWVkZWQgKi8KIAkJCWlmICgoc2N0cF9pZmFwLT5pZm5fcC0+
bnVtX3Y2ID09IDApICYmCiAJCQkgICAgKHNjdHBfaWZhcC0+aWZuX3AtPnJlZ2lzdGVyZWRfYWYg
PT0gQUZfSU5FVDYpKSB7Ci0JCQkJU0NUUF9ERVJFR0lTVEVSX0lOVEVSRkFDRShzY3RwX2lmYXAt
Pmlmbl9wLT5pZm5faW5kZXgsIEFGX0lORVQ2KTsKLQkJCQlTQ1RQX1JFR0lTVEVSX0lOVEVSRkFD
RShzY3RwX2lmYXAtPmlmbl9wLT5pZm5faW5kZXgsIEFGX0lORVQpOwogCQkJCXNjdHBfaWZhcC0+
aWZuX3AtPnJlZ2lzdGVyZWRfYWYgPSBBRl9JTkVUOwogCQkJfSBlbHNlIGlmICgoc2N0cF9pZmFw
LT5pZm5fcC0+bnVtX3Y0ID09IDApICYmCiAJCQkJICAgKHNjdHBfaWZhcC0+aWZuX3AtPnJlZ2lz
dGVyZWRfYWYgPT0gQUZfSU5FVCkpIHsKLQkJCQlTQ1RQX0RFUkVHSVNURVJfSU5URVJGQUNFKHNj
dHBfaWZhcC0+aWZuX3AtPmlmbl9pbmRleCwgQUZfSU5FVCk7Ci0JCQkJU0NUUF9SRUdJU1RFUl9J
TlRFUkZBQ0Uoc2N0cF9pZmFwLT5pZm5fcC0+aWZuX2luZGV4LCBBRl9JTkVUNik7CiAJCQkJc2N0
cF9pZmFwLT5pZm5fcC0+cmVnaXN0ZXJlZF9hZiA9IEFGX0lORVQ2OwogCQkJfQogCQkJLyogZnJl
ZSB0aGUgaWZuIHJlZmNvdW50ICovCkBAIC01NjEsOCArNTUxLDggQEAgc2N0cF9hZGRfYWRkcl90
b192cmYodWludDMyX3QgdnJmX2lkLCB2b2lkICppZm4sIHVpbnQzMl90IGlmbl9pbmRleCwKIAkJ
ICAgICBpbnQgZHluYW1pY19hZGQpCiB7CiAJc3RydWN0IHNjdHBfdnJmICp2cmY7Ci0Jc3RydWN0
IHNjdHBfaWZuICpzY3RwX2lmbnAgPSBOVUxMOwotCXN0cnVjdCBzY3RwX2lmYSAqc2N0cF9pZmFw
ID0gTlVMTDsKKwlzdHJ1Y3Qgc2N0cF9pZm4gKnNjdHBfaWZucCwgKm5ld19zY3RwX2lmbnA7CisJ
c3RydWN0IHNjdHBfaWZhICpzY3RwX2lmYXAsICpuZXdfc2N0cF9pZmFwOwogCXN0cnVjdCBzY3Rw
X2lmYWxpc3QgKmhhc2hfYWRkcl9oZWFkOwogCXN0cnVjdCBzY3RwX2lmbmxpc3QgKmhhc2hfaWZu
X2hlYWQ7CiAJdWludDMyX3QgaGFzaF9vZl9hZGRyOwpAQCAtNTcyLDYgKzU2MiwyMyBAQCBzY3Rw
X2FkZF9hZGRyX3RvX3ZyZih1aW50MzJfdCB2cmZfaWQsIHZvaWQgKmlmbiwgdWludDMyX3QgaWZu
X2luZGV4LAogCVNDVFBEQkcoU0NUUF9ERUJVR19QQ0I0LCAidnJmX2lkIDB4JXg6IGFkZGluZyBh
ZGRyZXNzOiAiLCB2cmZfaWQpOwogCVNDVFBEQkdfQUREUihTQ1RQX0RFQlVHX1BDQjQsIGFkZHIp
OwogI2VuZGlmCisJU0NUUF9NQUxMT0MobmV3X3NjdHBfaWZucCwgc3RydWN0IHNjdHBfaWZuICos
CisJICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBzY3RwX2lmbiksIFNDVFBfTV9JRk4pOworCWlm
IChuZXdfc2N0cF9pZm5wID09IE5VTEwpIHsKKyNpZmRlZiBJTlZBUklBTlRTCisJCXBhbmljKCJO
byBtZW1vcnkgZm9yIElGTiIpOworI2VuZGlmCisJCXJldHVybiAoTlVMTCk7CisJfQorCVNDVFBf
TUFMTE9DKG5ld19zY3RwX2lmYXAsIHN0cnVjdCBzY3RwX2lmYSAqLCBzaXplb2Yoc3RydWN0IHNj
dHBfaWZhKSwgU0NUUF9NX0lGQSk7CisJaWYgKG5ld19zY3RwX2lmYXAgPT0gTlVMTCkgeworI2lm
ZGVmIElOVkFSSUFOVFMKKwkJcGFuaWMoIk5vIG1lbW9yeSBmb3IgSUZBIik7CisjZW5kaWYKKwkJ
U0NUUF9GUkVFKG5ld19zY3RwX2lmbnAsIFNDVFBfTV9JRk4pOworCQlyZXR1cm4gKE5VTEwpOwor
CX0KKwogCVNDVFBfSVBJX0FERFJfV0xPQ0soKTsKIAlzY3RwX2lmbnAgPSBzY3RwX2ZpbmRfaWZu
KGlmbiwgaWZuX2luZGV4KTsKIAlpZiAoc2N0cF9pZm5wKSB7CkBAIC01ODIsNiArNTg5LDggQEAg
c2N0cF9hZGRfYWRkcl90b192cmYodWludDMyX3QgdnJmX2lkLCB2b2lkICppZm4sIHVpbnQzMl90
IGlmbl9pbmRleCwKIAkJCXZyZiA9IHNjdHBfYWxsb2NhdGVfdnJmKHZyZl9pZCk7CiAJCQlpZiAo
dnJmID09IE5VTEwpIHsKIAkJCQlTQ1RQX0lQSV9BRERSX1dVTkxPQ0soKTsKKwkJCQlTQ1RQX0ZS
RUUobmV3X3NjdHBfaWZucCwgU0NUUF9NX0lGTik7CisJCQkJU0NUUF9GUkVFKG5ld19zY3RwX2lm
YXAsIFNDVFBfTV9JRkEpOwogCQkJCXJldHVybiAoTlVMTCk7CiAJCQl9CiAJCX0KQEAgLTU5MCwx
NSArNTk5LDggQEAgc2N0cF9hZGRfYWRkcl90b192cmYodWludDMyX3QgdnJmX2lkLCB2b2lkICpp
Zm4sIHVpbnQzMl90IGlmbl9pbmRleCwKIAkJLyogYnVpbGQgb25lIGFuZCBhZGQgaXQsIGNhbid0
IGhvbGQgbG9jawogCQkgKiB1bnRpbCBhZnRlciBtYWxsb2MgZG9uZSB0aG91Z2guCiAJCSAqLwot
CQlTQ1RQX0lQSV9BRERSX1dVTkxPQ0soKTsKLQkJU0NUUF9NQUxMT0Moc2N0cF9pZm5wLCBzdHJ1
Y3Qgc2N0cF9pZm4gKiwKLQkJCSAgICBzaXplb2Yoc3RydWN0IHNjdHBfaWZuKSwgU0NUUF9NX0lG
Tik7Ci0JCWlmIChzY3RwX2lmbnAgPT0gTlVMTCkgewotI2lmZGVmIElOVkFSSUFOVFMKLQkJCXBh
bmljKCJObyBtZW1vcnkgZm9yIElGTiIpOwotI2VuZGlmCi0JCQlyZXR1cm4gKE5VTEwpOwotCQl9
CisJCXNjdHBfaWZucCA9IG5ld19zY3RwX2lmbnA7CisJCW5ld19zY3RwX2lmbnAgPSBOVUxMOwog
CQltZW1zZXQoc2N0cF9pZm5wLCAwLCBzaXplb2Yoc3RydWN0IHNjdHBfaWZuKSk7CiAJCXNjdHBf
aWZucC0+aWZuX2luZGV4ID0gaWZuX2luZGV4OwogCQlzY3RwX2lmbnAtPmlmbl9wID0gaWZuOwpA
QCAtNjA4LDEzICs2MTAsMTIgQEAgc2N0cF9hZGRfYWRkcl90b192cmYodWludDMyX3QgdnJmX2lk
LCB2b2lkICppZm4sIHVpbnQzMl90IGlmbl9pbmRleCwKIAkJYXRvbWljX2FkZF9pbnQoJnZyZi0+
cmVmY291bnQsIDEpOwogCQlzY3RwX2lmbnAtPmlmbl9tdHUgPSBTQ1RQX0dBVEhFUl9NVFVfRlJP
TV9JRk5fSU5GTyhpZm4sIGlmbl9pbmRleCwgYWRkci0+c2FfZmFtaWx5KTsKIAkJaWYgKGlmX25h
bWUgIT0gTlVMTCkgewotCQkJc25wcmludGYoc2N0cF9pZm5wLT5pZm5fbmFtZSwgU0NUUF9JRk5B
TVNJWiwgIiVzIiwgaWZfbmFtZSk7CisJCQlTQ1RQX1NOUFJJTlRGKHNjdHBfaWZucC0+aWZuX25h
bWUsIFNDVFBfSUZOQU1TSVosICIlcyIsIGlmX25hbWUpOwogCQl9IGVsc2UgewotCQkJc25wcmlu
dGYoc2N0cF9pZm5wLT5pZm5fbmFtZSwgU0NUUF9JRk5BTVNJWiwgIiVzIiwgInVua25vd24iKTsK
KwkJCVNDVFBfU05QUklOVEYoc2N0cF9pZm5wLT5pZm5fbmFtZSwgU0NUUF9JRk5BTVNJWiwgIiVz
IiwgInVua25vd24iKTsKIAkJfQogCQloYXNoX2lmbl9oZWFkID0gJlNDVFBfQkFTRV9JTkZPKHZy
Zl9pZm5faGFzaClbKGlmbl9pbmRleCAmIFNDVFBfQkFTRV9JTkZPKHZyZl9pZm5faGFzaG1hcmsp
KV07CiAJCUxJU1RfSU5JVCgmc2N0cF9pZm5wLT5pZmFsaXN0KTsKLQkJU0NUUF9JUElfQUREUl9X
TE9DSygpOwogCQlMSVNUX0lOU0VSVF9IRUFEKGhhc2hfaWZuX2hlYWQsIHNjdHBfaWZucCwgbmV4
dF9idWNrZXQpOwogCQlMSVNUX0lOU0VSVF9IRUFEKCZ2cmYtPmlmbmxpc3QsIHNjdHBfaWZucCwg
bmV4dF9pZm4pOwogCQlhdG9taWNfYWRkX2ludCgmU0NUUF9CQVNFX0lORk8oaXBpX2NvdW50X2lm
bnMpLCAxKTsKQEAgLTY0MSw2ICs2NDIsMTAgQEAgc2N0cF9hZGRfYWRkcl90b192cmYodWludDMy
X3QgdnJmX2lkLCB2b2lkICppZm4sIHVpbnQzMl90IGlmbl9pbmRleCwKIAkJCX0KIAkJZXhpdF9z
dGFnZV9sZWZ0OgogCQkJU0NUUF9JUElfQUREUl9XVU5MT0NLKCk7CisJCQlpZiAobmV3X3NjdHBf
aWZucCAhPSBOVUxMKSB7CisJCQkJU0NUUF9GUkVFKG5ld19zY3RwX2lmbnAsIFNDVFBfTV9JRk4p
OworCQkJfQorCQkJU0NUUF9GUkVFKG5ld19zY3RwX2lmYXAsIFNDVFBfTV9JRkEpOwogCQkJcmV0
dXJuIChzY3RwX2lmYXApOwogCQl9IGVsc2UgewogCQkJaWYgKHNjdHBfaWZhcC0+aWZuX3ApIHsK
QEAgLTY2NywxNCArNjcyLDcgQEAgc2N0cF9hZGRfYWRkcl90b192cmYodWludDMyX3QgdnJmX2lk
LCB2b2lkICppZm4sIHVpbnQzMl90IGlmbl9pbmRleCwKIAkJCWdvdG8gZXhpdF9zdGFnZV9sZWZ0
OwogCQl9CiAJfQotCVNDVFBfSVBJX0FERFJfV1VOTE9DSygpOwotCVNDVFBfTUFMTE9DKHNjdHBf
aWZhcCwgc3RydWN0IHNjdHBfaWZhICosIHNpemVvZihzdHJ1Y3Qgc2N0cF9pZmEpLCBTQ1RQX01f
SUZBKTsKLQlpZiAoc2N0cF9pZmFwID09IE5VTEwpIHsKLSNpZmRlZiBJTlZBUklBTlRTCi0JCXBh
bmljKCJObyBtZW1vcnkgZm9yIElGQSIpOwotI2VuZGlmCi0JCXJldHVybiAoTlVMTCk7Ci0JfQor
CXNjdHBfaWZhcCA9IG5ld19zY3RwX2lmYXA7CiAJbWVtc2V0KHNjdHBfaWZhcCwgMCwgc2l6ZW9m
KHN0cnVjdCBzY3RwX2lmYSkpOwogCXNjdHBfaWZhcC0+aWZuX3AgPSBzY3RwX2lmbnA7CiAJYXRv
bWljX2FkZF9pbnQoJnNjdHBfaWZucC0+cmVmY291bnQsIDEpOwpAQCAtNzYzLDcgKzc2MSw2IEBA
IHNjdHBfYWRkX2FkZHJfdG9fdnJmKHVpbnQzMl90IHZyZl9pZCwgdm9pZCAqaWZuLCB1aW50MzJf
dCBpZm5faW5kZXgsCiAJICAgIChzY3RwX2lmYXAtPnNyY19pc19sb29wID09IDApKSB7CiAJCXNj
dHBfaWZhcC0+c3JjX2lzX2dsb2IgPSAxOwogCX0KLQlTQ1RQX0lQSV9BRERSX1dMT0NLKCk7CiAJ
aGFzaF9hZGRyX2hlYWQgPSAmdnJmLT52cmZfYWRkcl9oYXNoWyhoYXNoX29mX2FkZHIgJiB2cmYt
PnZyZl9hZGRyX2hhc2htYXJrKV07CiAJTElTVF9JTlNFUlRfSEVBRChoYXNoX2FkZHJfaGVhZCwg
c2N0cF9pZmFwLCBuZXh0X2J1Y2tldCk7CiAJc2N0cF9pZmFwLT5yZWZjb3VudCA9IDE7CkBAIC03
NzIsMTAgKzc2OSwxMyBAQCBzY3RwX2FkZF9hZGRyX3RvX3ZyZih1aW50MzJfdCB2cmZfaWQsIHZv
aWQgKmlmbiwgdWludDMyX3QgaWZuX2luZGV4LAogCXZyZi0+dG90YWxfaWZhX2NvdW50Kys7CiAJ
YXRvbWljX2FkZF9pbnQoJlNDVFBfQkFTRV9JTkZPKGlwaV9jb3VudF9pZmFzKSwgMSk7CiAJaWYg
KG5ld19pZm5fYWYpIHsKLQkJU0NUUF9SRUdJU1RFUl9JTlRFUkZBQ0UoaWZuX2luZGV4LCBuZXdf
aWZuX2FmKTsKIAkJc2N0cF9pZm5wLT5yZWdpc3RlcmVkX2FmID0gbmV3X2lmbl9hZjsKIAl9CiAJ
U0NUUF9JUElfQUREUl9XVU5MT0NLKCk7CisJaWYgKG5ld19zY3RwX2lmbnAgIT0gTlVMTCkgewor
CQlTQ1RQX0ZSRUUobmV3X3NjdHBfaWZucCwgU0NUUF9NX0lGTik7CisJfQorCiAJaWYgKGR5bmFt
aWNfYWRkKSB7CiAJCS8qIEJ1bXAgdXAgdGhlIHJlZmNvdW50IHNvIHRoYXQgd2hlbiB0aGUgdGlt
ZXIKIAkJICogY29tcGxldGVzIGl0IHdpbGwgZHJvcCBiYWNrIGRvd24uCkBAIC04NDAsOCArODQw
LDcgQEAgc2N0cF9kZWxfYWRkcl9mcm9tX3ZyZih1aW50MzJfdCB2cmZfaWQsIHN0cnVjdCBzb2Nr
YWRkciAqYWRkciwKIAkJCWludCB2YWxpZCA9IDA7CiAJCQkvKi0KIAkJCSAqIFRoZSBuYW1lIGhh
cyBwcmlvcml0eSBvdmVyIHRoZSBpZm5faW5kZXgKLQkJCSAqIGlmIGl0cyBnaXZlbi4gV2UgZG8g
dGhpcyBlc3BlY2lhbGx5IGZvcgotCQkJICogcGFuZGEgd2hvIG1pZ2h0IHJlY3ljbGUgaW5kZXhl
cyBmYXN0LgorCQkJICogaWYgaXRzIGdpdmVuLgogCQkJICovCiAJCQlpZiAoaWZfbmFtZSkgewog
CQkJCWlmIChzdHJuY21wKGlmX25hbWUsIHNjdHBfaWZhcC0+aWZuX3AtPmlmbl9uYW1lLCBTQ1RQ
X0lGTkFNU0laKSA9PSAwKSB7CkBAIC04NjYsNyArODY1LDcgQEAgc2N0cF9kZWxfYWRkcl9mcm9t
X3ZyZih1aW50MzJfdCB2cmZfaWQsIHN0cnVjdCBzb2NrYWRkciAqYWRkciwKIAkJfQogCQlTQ1RQ
REJHKFNDVFBfREVCVUdfUENCNCwgIkRlbGV0aW5nIGlmYSAlcFxuIiwgKHZvaWQgKilzY3RwX2lm
YXApOwogCQlzY3RwX2lmYXAtPmxvY2FsaWZhX2ZsYWdzICY9IFNDVFBfQUREUl9WQUxJRDsKLSAg
ICAgICAgICAgICAgICAvKgorCQkvKgogCQkgKiBXZSBkb24ndCBzZXQgdGhlIGZsYWcuIFRoaXMg
bWVhbnMgdGhhdCB0aGUgc3RydWN0dXJlIHdpbGwKIAkJICogaGFuZyBhcm91bmQgaW4gRVAncyB0
aGF0IGhhdmUgYm91bmQgc3BlY2lmaWMgdG8gaXQgdW50aWwKIAkJICogdGhleSBjbG9zZS4gVGhp
cyBnaXZlcyB1cyBUQ1AgbGlrZSBiZWhhdmlvciBpZiBzb21lb25lCkBAIC05OTIsNyArOTkxLDcg
QEAgc2N0cF9kb2VzX3N0Y2Jfb3duX3RoaXNfYWRkcihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0
cnVjdCBzb2NrYWRkciAqdG8pCiAJCQkJCQkgICAgSU40X0lTUFJJVkFURV9BRERSRVNTKCZzaW4t
PnNpbl9hZGRyKSkgewogCQkJCQkJCWNvbnRpbnVlOwogCQkJCQkJfQotI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKIAkJCQkJCWlmIChwcmlzb25fY2hlY2tfaXA0KHN0Y2ItPnNjdHBfZXAtPmlwX2lucC5p
bnAuaW5wX2NyZWQsCiAJCQkJCQkgICAgICAgICAgICAgICAgICAgICAmc2luLT5zaW5fYWRkcikg
IT0gMCkgewogCQkJCQkJCWNvbnRpbnVlOwpAQCAtMTAxNCw3ICsxMDEzLDcgQEAgc2N0cF9kb2Vz
X3N0Y2Jfb3duX3RoaXNfYWRkcihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzb2NrYWRk
ciAqdG8pCiAjZW5kaWYKIAkJCQkJCXNpbjYgPSAmc2N0cF9pZmEtPmFkZHJlc3Muc2luNjsKIAkJ
CQkJCXJzaW42ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKil0bzsKLSNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAJCQkJCQlpZiAocHJpc29uX2NoZWNrX2lwNihzdGNiLT5zY3RwX2VwLT5pcF9pbnAuaW5w
LmlucF9jcmVkLAogCQkJCQkJICAgICAgICAgICAgICAgICAgICAgJnNpbjYtPnNpbjZfYWRkcikg
IT0gMCkgewogCQkJCQkJCWNvbnRpbnVlOwpAQCAtMTIxOSw3ICsxMjE4LDcgQEAgc2N0cF90Y2Jf
c3BlY2lhbF9sb2NhdGUoc3RydWN0IHNjdHBfaW5wY2IgKippbnBfcCwgc3RydWN0IHNvY2thZGRy
ICpmcm9tLAogCQkJU0NUUF9JTlBfUlVOTE9DSyhpbnApOwogCQkJY29udGludWU7CiAJCX0KLSNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAJCXN3aXRjaCAodG8tPnNhX2ZhbWlseSkgewogI2lmZGVmIElO
RVQKIAkJY2FzZSBBRl9JTkVUOgpAQCAtMTk2MCw3ICsxOTU5LDcgQEAgc2N0cF9lbmRwb2ludF9w
cm9iZShzdHJ1Y3Qgc29ja2FkZHIgKm5hbSwgc3RydWN0IHNjdHBwY2JoZWFkICpoZWFkLAogCQkJ
CQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CiAJCQkJCWNvbnRpbnVlOwogCQkJCX0KLSNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAJCQkJaWYgKHByaXNvbl9jaGVja19pcDQoaW5wLT5pcF9pbnAuaW5wLmlu
cF9jcmVkLAogCQkJCSAgICAgICAgICAgICAgICAgICAgICZzaW4tPnNpbl9hZGRyKSAhPSAwKSB7
CiAJCQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKQEAgLTE5NzYsNyArMTk3NSw3IEBAIHNjdHBf
ZW5kcG9pbnRfcHJvYmUoc3RydWN0IHNvY2thZGRyICpuYW0sIHN0cnVjdCBzY3RwcGNiaGVhZCAq
aGVhZCwKIAkJCQkJU0NUUF9JTlBfUlVOTE9DSyhpbnApOwogCQkJCQljb250aW51ZTsKIAkJCQl9
Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCWlmIChwcmlzb25fY2hlY2tfaXA2KGlucC0+aXBf
aW5wLmlucC5pbnBfY3JlZCwKIAkJCQkgICAgICAgICAgICAgICAgICAgICAmc2luNi0+c2luNl9h
ZGRyKSAhPSAwKSB7CiAJCQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKQEAgLTIwOTMsNyArMjA5
Miw3IEBAIHNjdHBfZW5kcG9pbnRfcHJvYmUoc3RydWN0IHNvY2thZGRyICpuYW0sIHN0cnVjdCBz
Y3RwcGNiaGVhZCAqaGVhZCwKIAkJCQlzd2l0Y2ggKG5hbS0+c2FfZmFtaWx5KSB7CiAjaWZkZWYg
SU5FVAogCQkJCWNhc2UgQUZfSU5FVDoKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZp
bmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQkJaWYgKHNpbiA9
PSBOVUxMKSB7CiAJCQkJCQkvKiBUU05IICovCiAJCQkJCQlicmVhazsKQEAgLTI3OTksMTcgKzI3
OTgsMTcgQEAgc2N0cF9pbnBjYl9hbGxvYyhzdHJ1Y3Qgc29ja2V0ICpzbywgdWludDMyX3QgdnJm
X2lkKQogCW1lbXNldChpbnAsIDAsIHNpemVvZigqaW5wKSk7CiAKIAkvKiBidW1wIGdlbmVyYXRp
b25zICovCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJaW5wLT5pcF9pbnAuaW5wLmlucF9zdGF0ZSA9IElO
UENCX1NUQVRFX0lOVVNFOwogI2VuZGlmCiAJLyogc2V0dXAgc29ja2V0IHBvaW50ZXJzICovCiAJ
aW5wLT5zY3RwX3NvY2tldCA9IHNvOwogCWlucC0+aXBfaW5wLmlucC5pbnBfc29ja2V0ID0gc287
Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWlucC0+aXBfaW5wLmlucC5pbnBfY3JlZCA9IGNyaG9s
ZChzby0+c29fY3JlZCk7CiAjZW5kaWYKICNpZmRlZiBJTkVUNgotI2lmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pICYmICFkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pICYmICFkZWZpbmVkKF9XSU4zMikKIAlpZiAoSU5QX1NPQ0tBRihzbykgPT0gQUZfSU5F
VDYpIHsKIAkJaWYgKE1PRFVMRV9HTE9CQUwoaXA2X2F1dG9fZmxvd2xhYmVsKSkgewogCQkJaW5w
LT5pcF9pbnAuaW5wLmlucF9mbGFncyB8PSBJTjZQX0FVVE9GTE9XTEFCRUw7CkBAIC0yODM0LDcg
KzI4MzMsNyBAQCBzY3RwX2lucGNiX2FsbG9jKHN0cnVjdCBzb2NrZXQgKnNvLCB1aW50MzJfdCB2
cmZfaWQpCiAJaW5wLT5wa3Rkcm9wX3N1cHBvcnRlZCA9ICh1aW50OF90KVNDVFBfQkFTRV9TWVND
VEwoc2N0cF9wa3Rkcm9wX2VuYWJsZSk7CiAJaW5wLT5pZGF0YV9zdXBwb3J0ZWQgPSAwOwogCi0j
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCWlucC0+ZmlibnVtID0gc28tPnNvX2ZpYm51bTsKICNlbHNl
CiAJaW5wLT5maWJudW0gPSAwOwpAQCAtMjg0OCw3ICsyODQ3LDcgQEAgc2N0cF9pbnBjYl9hbGxv
YyhzdHJ1Y3Qgc29ja2V0ICpzbywgdWludDMyX3QgdnJmX2lkKQogCS8qIGluaXQgdGhlIHNtYWxs
IGhhc2ggdGFibGUgd2UgdXNlIHRvIHRyYWNrIGFzb2NpZCA8LT4gdGNiICovCiAJaW5wLT5zY3Rw
X2Fzb2NpZGhhc2ggPSBTQ1RQX0hBU0hfSU5JVChTQ1RQX1NUQUNLX1ZUQUdfSEFTSF9TSVpFLCAm
aW5wLT5oYXNoYXNvY2lkbWFyayk7CiAJaWYgKGlucC0+c2N0cF9hc29jaWRoYXNoID09IE5VTEwp
IHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCWNyZnJlZShpbnAtPmlwX2lucC5pbnAuaW5wX2Ny
ZWQpOwogI2VuZGlmCiAJCVNDVFBfWk9ORV9GUkVFKFNDVFBfQkFTRV9JTkZPKGlwaV96b25lX2Vw
KSwgaW5wKTsKQEAgLTI4NjEsMTIgKzI4NjAsNyBAQCBzY3RwX2lucGNiX2FsbG9jKHN0cnVjdCBz
b2NrZXQgKnNvLCB1aW50MzJfdCB2cmZfaWQpCiAKIAlzby0+c29fcGNiID0gKGNhZGRyX3QpaW5w
OwogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPCA4MDMw
MDAKLQlpZiAoKFNDVFBfU09fVFlQRShzbykgPT0gU09DS19ER1JBTSkgfHwKLQkgICAgKFNDVFBf
U09fVFlQRShzbykgPT0gU09DS19TRVFQQUNLRVQpKSB7Ci0jZWxzZQogCWlmIChTQ1RQX1NPX1RZ
UEUoc28pID09IFNPQ0tfU0VRUEFDS0VUKSB7Ci0jZW5kaWYKIAkJLyogVURQIHN0eWxlIHNvY2tl
dCAqLwogCQlpbnAtPnNjdHBfZmxhZ3MgPSAoU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSB8CiAJCSAg
ICBTQ1RQX1BDQl9GTEFHU19VTkJPVU5EKTsKQEAgLTI4ODAsMTQgKzI4NzQsNiBAQCBzY3RwX2lu
cGNiX2FsbG9jKHN0cnVjdCBzb2NrZXQgKnNvLCB1aW50MzJfdCB2cmZfaWQpCiAJCVNPQ0tfTE9D
Syhzbyk7CiAJCVNDVFBfQ0xFQVJfU09fTkJJTyhzbyk7CiAJCVNPQ0tfVU5MT0NLKHNvKTsKLSNp
ZiBkZWZpbmVkKF9fUGFuZGFfXykKLQl9IGVsc2UgaWYgKFNDVFBfU09fVFlQRShzbykgPT0gU09D
S19GQVNUU0VRUEFDS0VUKSB7Ci0JCWlucC0+c2N0cF9mbGFncyA9IChTQ1RQX1BDQl9GTEFHU19V
RFBUWVBFIHwKLQkJICAgIFNDVFBfUENCX0ZMQUdTX1VOQk9VTkQpOwotCX0gZWxzZSBpZiAoU0NU
UF9TT19UWVBFKHNvKSA9PSBTT0NLX0ZBU1RTVFJFQU0pIHsKLQkJaW5wLT5zY3RwX2ZsYWdzID0g
KFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUgfAotCQkgICAgU0NUUF9QQ0JfRkxBR1NfVU5CT1VORCk7
Ci0jZW5kaWYKIAl9IGVsc2UgewogCQkvKgogCQkgKiB1bnN1cHBvcnRlZCBzb2NrZXQgdHlwZSAo
UkFXLCBldGMpLSBpbiBjYXNlIHdlIG1pc3NlZCBpdApAQCAtMjg5NSw3ICsyODgxLDcgQEAgc2N0
cF9pbnBjYl9hbGxvYyhzdHJ1Y3Qgc29ja2V0ICpzbywgdWludDMyX3QgdnJmX2lkKQogCQkgKi8K
IAkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1BD
QiwgRU9QTk9UU1VQUCk7CiAJCXNvLT5zb19wY2IgPSBOVUxMOwotI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKIAkJY3JmcmVlKGlucC0+aXBfaW5wLmlucC5pbnBfY3JlZCk7CiAjZW5kaWYKIAkJU0NUUF9a
T05FX0ZSRUUoU0NUUF9CQVNFX0lORk8oaXBpX3pvbmVfZXApLCBpbnApOwpAQCAtMjkxNyw3ICsy
OTAzLDcgQEAgc2N0cF9pbnBjYl9hbGxvYyhzdHJ1Y3Qgc29ja2V0ICpzbywgdWludDMyX3QgdnJm
X2lkKQogCQlTQ1RQX1BSSU5URigiT3V0IG9mIFNDVFAtSU5QQ0ItPmhhc2hpbml0IC0gbm8gcmVz
b3VyY2VzXG4iKTsKIAkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBf
RlJPTV9TQ1RQX1BDQiwgRU5PQlVGUyk7CiAJCXNvLT5zb19wY2IgPSBOVUxMOwotI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKIAkJY3JmcmVlKGlucC0+aXBfaW5wLmlucC5pbnBfY3JlZCk7CiAjZW5kaWYK
IAkJU0NUUF9aT05FX0ZSRUUoU0NUUF9CQVNFX0lORk8oaXBpX3pvbmVfZXApLCBpbnApOwpAQCAt
MjkzMSw3ICsyOTE3LDcgQEAgc2N0cF9pbnBjYl9hbGxvYyhzdHJ1Y3Qgc29ja2V0ICpzbywgdWlu
dDMyX3QgdnJmX2lkKQogCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NU
UF9GUk9NX1NDVFBfUENCLCBFTk9CVUZTKTsKIAkJc28tPnNvX3BjYiA9IE5VTEw7CiAJCVNDVFBf
SEFTSF9GUkVFKGlucC0+c2N0cF90Y2JoYXNoLCBpbnAtPnNjdHBfaGFzaG1hcmspOwotI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKIAkJY3JmcmVlKGlucC0+aXBfaW5wLmlucC5pbnBfY3JlZCk7CiAjZW5k
aWYKIAkJU0NUUF9aT05FX0ZSRUUoU0NUUF9CQVNFX0lORk8oaXBpX3pvbmVfZXApLCBpbnApOwpA
QCAtMjk0Miw3ICsyOTI4LDcgQEAgc2N0cF9pbnBjYl9hbGxvYyhzdHJ1Y3Qgc29ja2V0ICpzbywg
dWludDMyX3QgdnJmX2lkKQogI2VuZGlmCiAJaW5wLT5kZWZfdnJmX2lkID0gdnJmX2lkOwogCi0j
aWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiAjaWYgZGVmaW5lZChBUFBMRV9MRU9QQVJEKSB8fCBkZWZpbmVkKEFQ
UExFX1NOT1dMRU9QQVJEKQogCWlucC0+aXBfaW5wLmlucC5pbnBjYl9tdHggPSBsY2tfbXR4X2Fs
bG9jX2luaXQoU0NUUF9CQVNFX0lORk8oc2N0YmluZm8pLm10eF9ncnAsIFNDVFBfQkFTRV9JTkZP
KHNjdGJpbmZvKS5tdHhfYXR0cik7CiAJaWYgKGlucC0+aXBfaW5wLmlucC5pbnBjYl9tdHggPT0g
TlVMTCkgewpAQCAtMjk2NSw3ICsyOTUxLDcgQEAgc2N0cF9pbnBjYl9hbGxvYyhzdHJ1Y3Qgc29j
a2V0ICpzbywgdWludDMyX3QgdnJmX2lkKQogI2VuZGlmCiAJU0NUUF9JTlBfSU5GT19XTE9DSygp
OwogCVNDVFBfSU5QX0xPQ0tfSU5JVChpbnApOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlJTlBf
TE9DS19JTklUKCZpbnAtPmlwX2lucC5pbnAsICJpbnAiLCAic2N0cGlucCIpOwogI2VuZGlmCiAJ
U0NUUF9JTlBfUkVBRF9JTklUKGlucCk7CkBAIC0yOTc1LDcgKzI5NjEsNyBAQCBzY3RwX2lucGNi
X2FsbG9jKHN0cnVjdCBzb2NrZXQgKnNvLCB1aW50MzJfdCB2cmZfaWQpCiAKIAkvKiBhZGQgaXQg
dG8gdGhlIGluZm8gYXJlYSAqLwogCUxJU1RfSU5TRVJUX0hFQUQoJlNDVFBfQkFTRV9JTkZPKGxp
c3RoZWFkKSwgaW5wLCBzY3RwX2xpc3QpOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRl
ZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWlucC0+aXBfaW5w
LmlucC5pbnBfcGNiaW5mbyA9ICZTQ1RQX0JBU0VfSU5GTyhzY3RiaW5mbyk7CiAjaWYgZGVmaW5l
ZChBUFBMRV9MRU9QQVJEKSB8fCBkZWZpbmVkKEFQUExFX1NOT1dMRU9QQVJEKSB8fCBkZWZpbmVk
KEFQUExFX0xJT04pIHx8IGRlZmluZWQoQVBQTEVfTU9VTlRBSU5MSU9OKQogCUxJU1RfSU5TRVJU
X0hFQUQoU0NUUF9CQVNFX0lORk8oc2N0YmluZm8pLmxpc3RoZWFkLCAmaW5wLT5pcF9pbnAuaW5w
LCBpbnBfbGlzdCk7CkBAIC0zMDAyLDEzICsyOTg4LDEzIEBAIHNjdHBfaW5wY2JfYWxsb2Moc3Ry
dWN0IHNvY2tldCAqc28sIHVpbnQzMl90IHZyZl9pZCkKIAltID0gJmlucC0+c2N0cF9lcDsKIAog
CS8qIHNldHVwIHRoZSBiYXNlIHRpbWVvdXQgaW5mb3JtYXRpb24gKi8KLQltLT5zY3RwX3RpbWVv
dXR0aWNrc1tTQ1RQX1RJTUVSX1NFTkRdID0gU0VDX1RPX1RJQ0tTKFNDVFBfU0VORF9TRUMpOwkv
KiBuZWVkZWQgPyAqLwotCW0tPnNjdHBfdGltZW91dHRpY2tzW1NDVFBfVElNRVJfSU5JVF0gPSBT
RUNfVE9fVElDS1MoU0NUUF9JTklUX1NFQyk7CS8qIG5lZWRlZCA/ICovCi0JbS0+c2N0cF90aW1l
b3V0dGlja3NbU0NUUF9USU1FUl9SRUNWXSA9IE1TRUNfVE9fVElDS1MoU0NUUF9CQVNFX1NZU0NU
TChzY3RwX2RlbGF5ZWRfc2Fja190aW1lX2RlZmF1bHQpKTsKLQltLT5zY3RwX3RpbWVvdXR0aWNr
c1tTQ1RQX1RJTUVSX0hFQVJUQkVBVF0gPSBNU0VDX1RPX1RJQ0tTKFNDVFBfQkFTRV9TWVNDVEwo
c2N0cF9oZWFydGJlYXRfaW50ZXJ2YWxfZGVmYXVsdCkpOwotCW0tPnNjdHBfdGltZW91dHRpY2tz
W1NDVFBfVElNRVJfUE1UVV0gPSBTRUNfVE9fVElDS1MoU0NUUF9CQVNFX1NZU0NUTChzY3RwX3Bt
dHVfcmFpc2VfdGltZV9kZWZhdWx0KSk7Ci0JbS0+c2N0cF90aW1lb3V0dGlja3NbU0NUUF9USU1F
Ul9NQVhTSFVURE9XTl0gPSBTRUNfVE9fVElDS1MoU0NUUF9CQVNFX1NZU0NUTChzY3RwX3NodXRk
b3duX2d1YXJkX3RpbWVfZGVmYXVsdCkpOwotCW0tPnNjdHBfdGltZW91dHRpY2tzW1NDVFBfVElN
RVJfU0lHTkFUVVJFXSA9IFNFQ19UT19USUNLUyhTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfc2VjcmV0
X2xpZmV0aW1lX2RlZmF1bHQpKTsKKwltLT5zY3RwX3RpbWVvdXR0aWNrc1tTQ1RQX1RJTUVSX1NF
TkRdID0gc2N0cF9zZWNzX3RvX3RpY2tzKFNDVFBfU0VORF9TRUMpOwkvKiBuZWVkZWQgPyAqLwor
CW0tPnNjdHBfdGltZW91dHRpY2tzW1NDVFBfVElNRVJfSU5JVF0gPSBzY3RwX3NlY3NfdG9fdGlj
a3MoU0NUUF9JTklUX1NFQyk7CS8qIG5lZWRlZCA/ICovCisJbS0+c2N0cF90aW1lb3V0dGlja3Nb
U0NUUF9USU1FUl9SRUNWXSA9IHNjdHBfbXNlY3NfdG9fdGlja3MoU0NUUF9CQVNFX1NZU0NUTChz
Y3RwX2RlbGF5ZWRfc2Fja190aW1lX2RlZmF1bHQpKTsKKwltLT5zY3RwX3RpbWVvdXR0aWNrc1tT
Q1RQX1RJTUVSX0hFQVJUQkVBVF0gPSBzY3RwX21zZWNzX3RvX3RpY2tzKFNDVFBfQkFTRV9TWVND
VEwoc2N0cF9oZWFydGJlYXRfaW50ZXJ2YWxfZGVmYXVsdCkpOworCW0tPnNjdHBfdGltZW91dHRp
Y2tzW1NDVFBfVElNRVJfUE1UVV0gPSBzY3RwX3NlY3NfdG9fdGlja3MoU0NUUF9CQVNFX1NZU0NU
TChzY3RwX3BtdHVfcmFpc2VfdGltZV9kZWZhdWx0KSk7CisJbS0+c2N0cF90aW1lb3V0dGlja3Nb
U0NUUF9USU1FUl9NQVhTSFVURE9XTl0gPSBzY3RwX3NlY3NfdG9fdGlja3MoU0NUUF9CQVNFX1NZ
U0NUTChzY3RwX3NodXRkb3duX2d1YXJkX3RpbWVfZGVmYXVsdCkpOworCW0tPnNjdHBfdGltZW91
dHRpY2tzW1NDVFBfVElNRVJfU0lHTkFUVVJFXSA9IHNjdHBfc2Vjc190b190aWNrcyhTQ1RQX0JB
U0VfU1lTQ1RMKHNjdHBfc2VjcmV0X2xpZmV0aW1lX2RlZmF1bHQpKTsKIAkvKiBhbGwgbWF4L21p
biBtYXggYXJlIGluIG1zICovCiAJbS0+c2N0cF9tYXhydG8gPSBTQ1RQX0JBU0VfU1lTQ1RMKHNj
dHBfcnRvX21heF9kZWZhdWx0KTsKIAltLT5zY3RwX21pbnJ0byA9IFNDVFBfQkFTRV9TWVNDVEwo
c2N0cF9ydG9fbWluX2RlZmF1bHQpOwpAQCAtMzA1Niw3ICszMDQyLDcgQEAgc2N0cF9pbnBjYl9h
bGxvYyhzdHJ1Y3Qgc29ja2V0ICpzbywgdWludDMyX3QgdnJmX2lkKQogCXNjdHBfdGltZXJfc3Rh
cnQoU0NUUF9USU1FUl9UWVBFX05FV0NPT0tJRSwgaW5wLCBOVUxMLCBOVUxMKTsKIAogCS8qIEhv
dyBsb25nIGlzIGEgY29va2llIGdvb2QgZm9yID8gKi8KLQltLT5kZWZfY29va2llX2xpZmUgPSBN
U0VDX1RPX1RJQ0tTKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF92YWxpZF9jb29raWVfbGlmZV9kZWZh
dWx0KSk7CisJbS0+ZGVmX2Nvb2tpZV9saWZlID0gc2N0cF9tc2Vjc190b190aWNrcyhTQ1RQX0JB
U0VfU1lTQ1RMKHNjdHBfdmFsaWRfY29va2llX2xpZmVfZGVmYXVsdCkpOwogCS8qCiAJICogSW5p
dGlhbGl6ZSBhdXRoZW50aWNhdGlvbiBwYXJhbWV0ZXJzCiAJICovCkBAIC0zMTgwLDI0ICszMTY2
LDU0IEBAIHNjdHBfbW92ZV9wY2JfYW5kX2Fzc29jKHN0cnVjdCBzY3RwX2lucGNiICpvbGRfaW5w
LCBzdHJ1Y3Qgc2N0cF9pbnBjYiAqbmV3X2lucCwKIAkJCX0KIAkJfQogCX0KLQkvKiBOb3cgYW55
IHJ1bm5pbmcgdGltZXJzIG5lZWQgdG8gYmUgYWRqdXN0ZWQKLQkgKiBzaW5jZSB3ZSByZWFsbHkg
ZG9uJ3QgY2FyZSBpZiB0aGV5IGFyZSBydW5uaW5nCi0JICogb3Igbm90IGp1c3QgYmxhc3QgaW4g
dGhlIG5ld19pbnAgaW50byBhbGwgb2YKLQkgKiB0aGVtLgotCSAqLwotCi0Jc3RjYi0+YXNvYy5k
YWNrX3RpbWVyLmVwID0gKHZvaWQgKiluZXdfaW5wOwotCXN0Y2ItPmFzb2MuYXNjb25mX3RpbWVy
LmVwID0gKHZvaWQgKiluZXdfaW5wOwotCXN0Y2ItPmFzb2Muc3RycmVzZXRfdGltZXIuZXAgPSAo
dm9pZCAqKW5ld19pbnA7Ci0Jc3RjYi0+YXNvYy5zaHV0X2d1YXJkX3RpbWVyLmVwID0gKHZvaWQg
KiluZXdfaW5wOwotCXN0Y2ItPmFzb2MuYXV0b2Nsb3NlX3RpbWVyLmVwID0gKHZvaWQgKiluZXdf
aW5wOwotCXN0Y2ItPmFzb2MuZGVsYXllZF9ldmVudF90aW1lci5lcCA9ICh2b2lkICopbmV3X2lu
cDsKLQlzdGNiLT5hc29jLmRlbGV0ZV9wcmltX3RpbWVyLmVwID0gKHZvaWQgKiluZXdfaW5wOwor
CS8qIE5vdyBhbnkgcnVubmluZyB0aW1lcnMgbmVlZCB0byBiZSBhZGp1c3RlZC4gKi8KKwlpZiAo
c3RjYi0+YXNvYy5kYWNrX3RpbWVyLmVwID09IG9sZF9pbnApIHsKKwkJU0NUUF9JTlBfREVDUl9S
RUYob2xkX2lucCk7CisJCXN0Y2ItPmFzb2MuZGFja190aW1lci5lcCA9IG5ld19pbnA7CisJCVND
VFBfSU5QX0lOQ1JfUkVGKG5ld19pbnApOworCX0KKwlpZiAoc3RjYi0+YXNvYy5hc2NvbmZfdGlt
ZXIuZXAgPT0gb2xkX2lucCkgeworCQlTQ1RQX0lOUF9ERUNSX1JFRihvbGRfaW5wKTsKKwkJc3Rj
Yi0+YXNvYy5hc2NvbmZfdGltZXIuZXAgPSBuZXdfaW5wOworCQlTQ1RQX0lOUF9JTkNSX1JFRihu
ZXdfaW5wKTsKKwl9CisJaWYgKHN0Y2ItPmFzb2Muc3RycmVzZXRfdGltZXIuZXAgPT0gb2xkX2lu
cCkgeworCQlTQ1RQX0lOUF9ERUNSX1JFRihvbGRfaW5wKTsKKwkJc3RjYi0+YXNvYy5zdHJyZXNl
dF90aW1lci5lcCA9IG5ld19pbnA7CisJCVNDVFBfSU5QX0lOQ1JfUkVGKG5ld19pbnApOworCX0K
KwlpZiAoc3RjYi0+YXNvYy5zaHV0X2d1YXJkX3RpbWVyLmVwID09IG9sZF9pbnApIHsKKwkJU0NU
UF9JTlBfREVDUl9SRUYob2xkX2lucCk7CisJCXN0Y2ItPmFzb2Muc2h1dF9ndWFyZF90aW1lci5l
cCA9IG5ld19pbnA7CisJCVNDVFBfSU5QX0lOQ1JfUkVGKG5ld19pbnApOworCX0KKwlpZiAoc3Rj
Yi0+YXNvYy5hdXRvY2xvc2VfdGltZXIuZXAgPT0gb2xkX2lucCkgeworCQlTQ1RQX0lOUF9ERUNS
X1JFRihvbGRfaW5wKTsKKwkJc3RjYi0+YXNvYy5hdXRvY2xvc2VfdGltZXIuZXAgPSBuZXdfaW5w
OworCQlTQ1RQX0lOUF9JTkNSX1JFRihuZXdfaW5wKTsKKwl9CisJaWYgKHN0Y2ItPmFzb2MuZGVs
ZXRlX3ByaW1fdGltZXIuZXAgPT0gb2xkX2lucCkgeworCQlTQ1RQX0lOUF9ERUNSX1JFRihvbGRf
aW5wKTsKKwkJc3RjYi0+YXNvYy5kZWxldGVfcHJpbV90aW1lci5lcCA9IG5ld19pbnA7CisJCVND
VFBfSU5QX0lOQ1JfUkVGKG5ld19pbnApOworCX0KIAkvKiBub3cgd2hhdCBhYm91dCB0aGUgbmV0
cz8gKi8KIAlUQUlMUV9GT1JFQUNIKG5ldCwgJnN0Y2ItPmFzb2MubmV0cywgc2N0cF9uZXh0KSB7
Ci0JCW5ldC0+cG10dV90aW1lci5lcCA9ICh2b2lkICopbmV3X2lucDsKLQkJbmV0LT5oYl90aW1l
ci5lcCA9ICh2b2lkICopbmV3X2lucDsKLQkJbmV0LT5yeHRfdGltZXIuZXAgPSAodm9pZCAqKW5l
d19pbnA7CisJCWlmIChuZXQtPnBtdHVfdGltZXIuZXAgPT0gb2xkX2lucCkgeworCQkJU0NUUF9J
TlBfREVDUl9SRUYob2xkX2lucCk7CisJCQluZXQtPnBtdHVfdGltZXIuZXAgPSBuZXdfaW5wOwor
CQkJU0NUUF9JTlBfSU5DUl9SRUYobmV3X2lucCk7CisJCX0KKwkJaWYgKG5ldC0+aGJfdGltZXIu
ZXAgPT0gb2xkX2lucCkgeworCQkJU0NUUF9JTlBfREVDUl9SRUYob2xkX2lucCk7CisJCQluZXQt
PmhiX3RpbWVyLmVwID0gbmV3X2lucDsKKwkJCVNDVFBfSU5QX0lOQ1JfUkVGKG5ld19pbnApOwor
CQl9CisJCWlmIChuZXQtPnJ4dF90aW1lci5lcCA9PSBvbGRfaW5wKSB7CisJCQlTQ1RQX0lOUF9E
RUNSX1JFRihvbGRfaW5wKTsKKwkJCW5ldC0+cnh0X3RpbWVyLmVwID0gbmV3X2lucDsKKwkJCVND
VFBfSU5QX0lOQ1JfUkVGKG5ld19pbnApOworCQl9CiAJfQogCVNDVFBfSU5QX1dVTkxPQ0sobmV3
X2lucCk7CiAJU0NUUF9JTlBfV1VOTE9DSyhvbGRfaW5wKTsKQEAgLTMyNTQsMTAgKzMyNzAsMTAg
QEAgZXh0ZXJuIHZvaWQgaW42X3NpbjZfMl9zaW4oc3RydWN0IHNvY2thZGRyX2luICosIHN0cnVj
dCBzb2NrYWRkcl9pbjYgKnNpbjYpOwogCiAvKiBzY3RwX2lmYXAgaXMgdXNlZCB0byBieXBhc3Mg
bm9ybWFsIGxvY2FsIGFkZHJlc3MgdmFsaWRhdGlvbiBjaGVja3MgKi8KIGludAotI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAwMAorI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBzY3RwX2lucGNiX2Jp
bmQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqYWRkciwKICAgICAgICAgICAg
ICAgICBzdHJ1Y3Qgc2N0cF9pZmEgKnNjdHBfaWZhcCwgc3RydWN0IHRocmVhZCAqcCkKLSNlbGlm
IGRlZmluZWQoX19XaW5kb3dzX18pCisjZWxpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKIHNjdHBfaW5wY2JfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0
IHNvY2thZGRyICphZGRyLAogICAgICAgICAgICAgICAgIHN0cnVjdCBzY3RwX2lmYSAqc2N0cF9p
ZmFwLCBQS1RIUkVBRCBwKQogI2Vsc2UKQEAgLTMyNjgsNyArMzI4NCw3IEBAIHNjdHBfaW5wY2Jf
YmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRyLAogCS8qIGJpbmQg
YSBlcCB0byBhIHNvY2tldCBhZGRyZXNzICovCiAJc3RydWN0IHNjdHBwY2JoZWFkICpoZWFkOwog
CXN0cnVjdCBzY3RwX2lucGNiICppbnAsICppbnBfdG1wOwotI2lmIGRlZmluZWQoSU5FVCkgfHwg
KGRlZmluZWQoSU5FVDYpICYmIGRlZmluZWQoX19BUFBMRV9fKSkgfHwgZGVmaW5lZChfX0ZyZWVC
U0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pCisjaWYgKGRlZmluZWQoX19GcmVlQlNEX18pIHx8
IGRlZmluZWQoX19BUFBMRV9fKSkgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzdHJ1Y3Qg
aW5wY2IgKmlwX2lucDsKICNlbmRpZgogCWludCBwb3J0X3JldXNlX2FjdGl2ZSA9IDA7CkBAIC0z
MjgzLDcgKzMyOTksNyBAQCBzY3RwX2lucGNiX2JpbmQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVj
dCBzb2NrYWRkciAqYWRkciwKIAlscG9ydCA9IDA7CiAJYmluZGFsbCA9IDE7CiAJaW5wID0gKHN0
cnVjdCBzY3RwX2lucGNiICopc28tPnNvX3BjYjsKLSNpZiBkZWZpbmVkKElORVQpIHx8IChkZWZp
bmVkKElORVQ2KSAmJiBkZWZpbmVkKF9fQVBQTEVfXykpIHx8IGRlZmluZWQoX19GcmVlQlNEX18p
IHx8IGRlZmluZWQoX19BUFBMRV9fKQorI2lmIChkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZp
bmVkKF9fQVBQTEVfXykpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJaXBfaW5wID0gKHN0
cnVjdCBpbnBjYiAqKXNvLT5zb19wY2I7CiAjZW5kaWYKICNpZmRlZiBTQ1RQX0RFQlVHCkBAIC0z
Mjk5LDcgKzMzMTUsNyBAQCBzY3RwX2lucGNiX2JpbmQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVj
dCBzb2NrYWRkciAqYWRkciwKIAkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEws
IFNDVFBfRlJPTV9TQ1RQX1BDQiwgRUlOVkFMKTsKIAkJcmV0dXJuIChFSU5WQUwpOwogCX0KLSNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMDAKKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmZGVm
IElOVkFSSUFOVFMKIAlpZiAocCA9PSBOVUxMKQogCQlwYW5pYygibnVsbCBwcm9jL3RocmVhZCIp
OwpAQCAtMzMxMyw3ICszMzI5LDcgQEAgc2N0cF9pbnBjYl9iaW5kKHN0cnVjdCBzb2NrZXQgKnNv
LCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsCiAJCQlzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbjsKIAog
CQkJLyogSVBWNl9WNk9OTFkgc29ja2V0PyAqLwotCQkJaWYgKFNDVFBfSVBWNl9WNk9OTFkoaXBf
aW5wKSkgeworCQkJaWYgKFNDVFBfSVBWNl9WNk9OTFkoaW5wKSkgewogCQkJCVNDVFBfTFRSQUNF
X0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9QQ0IsIEVJTlZBTCk7CiAJ
CQkJcmV0dXJuIChFSU5WQUwpOwogCQkJfQpAQCAtMzMyNiw3ICszMzQyLDcgQEAgc2N0cF9pbnBj
Yl9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsCiAKIAkJCXNp
biA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilhZGRyOwogCQkJbHBvcnQgPSBzaW4tPnNpbl9wb3J0
OwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMDAw
MAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJ
CQkvKgogCQkJICogRm9yIExPT1BCQUNLIHRoZSBwcmlzb25fbG9jYWxfaXA0KCkgY2FsbCB3aWxs
IHRyYW5zbXV0ZSB0aGUgaXAgYWRkcmVzcwogCQkJICogdG8gdGhlIHByb3BlciB2YWx1ZS4KQEAg
LTMzNTcsNyArMzM3Myw3IEBAIHNjdHBfaW5wY2JfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3Ry
dWN0IHNvY2thZGRyICphZGRyLAogCQkJfQogI2VuZGlmCiAJCQlscG9ydCA9IHNpbjYtPnNpbjZf
cG9ydDsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4
MDAwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCQkJLyoKIAkJCSAqIEZvciBMT09QQkFDSyB0aGUgcHJpc29uX2xvY2FsX2lwNigpIGNhbGwg
d2lsbCB0cmFuc211dGUgdGhlIGlwdjYgYWRkcmVzcwogCQkJICogdG8gdGhlIHByb3BlciB2YWx1
ZS4KQEAgLTMzNzcsNyArMzM5Myw3IEBAIHNjdHBfaW5wY2JfYmluZChzdHJ1Y3Qgc29ja2V0ICpz
bywgc3RydWN0IHNvY2thZGRyICphZGRyLAogCQkJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwg
TlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfUENCLCBFSU5WQUwpOwogCQkJCQlyZXR1cm4gKEVJ
TlZBTCk7CiAJCQkJfQotI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCisjZWxpZiBkZWZpbmVkKF9f
QVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZiBkZWZpbmVkKEFQUExFX0xF
T1BBUkQpIHx8IGRlZmluZWQoQVBQTEVfU05PV0xFT1BBUkQpCiAJCQkJaWYgKGluNl9lbWJlZHNj
b3BlKCZzaW42LT5zaW42X2FkZHIsIHNpbjYsIGlwX2lucCwgTlVMTCkgIT0gMCkgewogI2Vsc2UK
QEAgLTMzODYsNyArMzQwMiw3IEBAIHNjdHBfaW5wY2JfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywg
c3RydWN0IHNvY2thZGRyICphZGRyLAogCQkJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVM
TCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfUENCLCBFSU5WQUwpOwogCQkJCQlyZXR1cm4gKEVJTlZB
TCk7CiAJCQkJfQotI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNlbGlmIGRlZmluZWQoX19G
cmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJZXJyb3IgPSBzY29wZTZf
Y2hlY2tfaWQoc2luNiwgTU9EVUxFX0dMT0JBTChpcDZfdXNlX2RlZnpvbmUpKTsKIAkJCQlpZiAo
ZXJyb3IgIT0gMCkgewogCQkJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwg
U0NUUF9GUk9NX1NDVFBfUENCLCBlcnJvcik7CkBAIC0zNDQ0LDE4ICszNDYwLDEyIEBAIHNjdHBf
aW5wY2JfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRyLAogCQkg
KiBhbHJlYWR5IGhhcyB0aGlzIG9uZSBib3VuZC4KIAkJICovCiAJCS8qIGdvdCB0byBiZSByb290
IHRvIGdldCBhdCBsb3cgcG9ydHMgKi8KLSNpZiAhZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAh
KGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkKIAkJaWYgKG50b2hz
KGxwb3J0KSA8IElQUE9SVF9SRVNFUlZFRCkgewogCQkJaWYgKChwICE9IE5VTEwpICYmICgoZXJy
b3IgPQotI2lmZGVmIF9fRnJlZUJTRF9fCi0jaWYgX19GcmVlQlNEX3ZlcnNpb24gPiA2MDIwMDAK
KyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJ
CSAgcHJpdl9jaGVjayhwLCBQUklWX05FVElORVRfUkVTRVJWRURQT1JUKQotI2VsaWYgX19GcmVl
QlNEX3ZlcnNpb24gPj0gNTAwMDAwCi0JCQkJICBzdXNlcl9jcmVkKHAtPnRkX3VjcmVkLCAwKQot
I2Vsc2UKLQkJCQkgIHN1c2VyKHApCi0jZW5kaWYKLSNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQor
I2VsaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJ
ICBzdXNlcihwLT5wX3VjcmVkLCAmcC0+cF9hY2ZsYWcpCiAjZWxpZiBkZWZpbmVkKF9fVXNlcnNw
YWNlX18pIC8qIG11c3QgYmUgdHJ1ZSB0byB1c2UgcmF3IHNvY2tldCAqLwogCQkJCSAgMQpAQCAt
MzQ2OCwxNyArMzQ3OCw4IEBAIHNjdHBfaW5wY2JfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3Ry
dWN0IHNvY2thZGRyICphZGRyLAogCQkJCVNDVFBfSU5QX0lORk9fV1VOTE9DSygpOwogCQkJCXJl
dHVybiAoZXJyb3IpOwogCQkJfQotI2lmIGRlZmluZWQoX19QYW5kYV9fKQotCQkJaWYgKCFTQ1RQ
X0lTX1BSSVZJTEVER0VEKHNvKSkgewotCQkJCVNDVFBfSU5QX0RFQ1JfUkVGKGlucCk7Ci0JCQkJ
U0NUUF9JTlBfV1VOTE9DSyhpbnApOwotCQkJCVNDVFBfSU5QX0lORk9fV1VOTE9DSygpOwotCQkJ
CVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9QQ0Is
IEVBQ0NFUyk7Ci0JCQkJcmV0dXJuIChFQUNDRVMpOwotCQkJfQotI2VuZGlmCiAJCX0KLSNlbmRp
ZiAvKiBfX1dpbmRvd3NfXyAqLworI2VuZGlmCiAJCVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsKIAkJ
aWYgKGJpbmRhbGwpIHsKICNpZmRlZiBTQ1RQX01WUkYKQEAgLTM1NjEsMjYgKzM1NjIsMjAgQEAg
c2N0cF9pbnBjYl9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIs
CiAJCXVpbnQxNl90IGNvdW50OwogCQlpbnQgZG9uZTsKIAotI2lmIGRlZmluZWQoX19XaW5kb3dz
X18pCisjaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCWZp
cnN0ID0gMTsKIAkJbGFzdCA9IDB4ZmZmZjsKICNlbHNlCiAjaWYgZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogCQkvKiBUT0RPIGVuc3VyZSB1aWQgaXMgMCwgZXRjLi4uICovCi0jZWxpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykKKyNlbGlmIChkZWZpbmVkKF9fRnJl
ZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAJCWlmIChpcF9pbnAtPmlucF9mbGFncyAmIElOUF9ISUdIUE9SVCkgewogCQkJZmlyc3QgPSBN
T0RVTEVfR0xPQkFMKGlwcG9ydF9oaWZpcnN0YXV0byk7CiAJCQlsYXN0ID0gTU9EVUxFX0dMT0JB
TChpcHBvcnRfaGlsYXN0YXV0byk7CiAJCX0gZWxzZSBpZiAoaXBfaW5wLT5pbnBfZmxhZ3MgJiBJ
TlBfTE9XUE9SVCkgewogCQkJaWYgKHAgJiYgKGVycm9yID0KLSNpZmRlZiBfX0ZyZWVCU0RfXwot
I2lmIF9fRnJlZUJTRF92ZXJzaW9uID4gNjAyMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykK
IAkJCQkgIHByaXZfY2hlY2socCwgUFJJVl9ORVRJTkVUX1JFU0VSVkVEUE9SVCkKLSNlbGlmIF9f
RnJlZUJTRF92ZXJzaW9uID49IDUwMDAwMAotCQkJCSAgc3VzZXJfY3JlZChwLT50ZF91Y3JlZCwg
MCkKLSNlbHNlCi0JCQkJICBzdXNlcihwKQotI2VuZGlmCiAjZWxpZiBkZWZpbmVkKF9fQVBQTEVf
XykKIAkJCQkgIHN1c2VyKHAtPnBfdWNyZWQsICZwLT5wX2FjZmxhZykKICNlbHNlCkBAIC0zNTk5
LDEwICszNTk0LDEwIEBAIHNjdHBfaW5wY2JfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0
IHNvY2thZGRyICphZGRyLAogI2VuZGlmCiAJCQlmaXJzdCA9IE1PRFVMRV9HTE9CQUwoaXBwb3J0
X2ZpcnN0YXV0byk7CiAJCQlsYXN0ID0gTU9EVUxFX0dMT0JBTChpcHBvcnRfbGFzdGF1dG8pOwot
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKQorI2lmIChkZWZp
bmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykpICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAJCX0KICNlbmRpZgotI2VuZGlmIC8qIF9fV2luZG93c19fICovCisjZW5kaWYK
IAkJaWYgKGZpcnN0ID4gbGFzdCkgewogCQkJdWludDE2X3QgdGVtcDsKIApAQCAtMzc0MSw3ICsz
NzM2LDcgQEAgc2N0cF9pbnBjYl9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2Fk
ZHIgKmFkZHIsCiAJCX0gZWxzZSB7CiAJCQkvKiBOb3RlIGZvciBCU0Qgd2UgaGl0IGhlcmUgYWx3
YXlzIG90aGVyCiAJCQkgKiBPL1MncyB3aWxsIHBhc3MgdGhpbmdzIGluIHZpYSB0aGUKLQkJCSAq
IHNjdHBfaWZhcCBhcmd1bWVudCAoUGFuZGEpLgorCQkJICogc2N0cF9pZmFwIGFyZ3VtZW50Lgog
CQkJICovCiAJCQlpZmEgPSBzY3RwX2ZpbmRfaWZhX2J5X2FkZHIoJnN0b3JlLnNhLAogCQkJCQkJ
ICAgIHZyZl9pZCwgU0NUUF9BRERSX05PVF9MT0NLRUQpOwpAQCAtMzgxNCw3ICszODA5LDcgQEAg
c2N0cF9pdGVyYXRvcl9pbnBfYmVpbmdfZnJlZWQoc3RydWN0IHNjdHBfaW5wY2IgKmlucCkKIAkg
KiBsb2NrIG9uIHRoZSBpbnBfaW5mbyBzdHVmZi4KIAkgKi8KIAlpdCA9IHNjdHBfaXRfY3RsLmN1
cl9pdDsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4
MDEwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCWlmIChpdCAmJiAoaXQtPnZuICE9IGN1cnZuZXQpKSB7CiAJCS8qIEl0cyBub3QgbG9va2lu
ZyBhdCBvdXIgVk5FVCAqLwogCQlyZXR1cm47CkBAIC0zODQ1LDcgKzM4NDAsNyBAQCBzY3RwX2l0
ZXJhdG9yX2lucF9iZWluZ19mcmVlZChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wKQogCSAqLwogCVND
VFBfSVBJX0lURVJBVE9SX1dRX0xPQ0soKTsKIAlUQUlMUV9GT1JFQUNIX1NBRkUoaXQsICZzY3Rw
X2l0X2N0bC5pdGVyYXRvcmhlYWQsIHNjdHBfbnh0X2l0ciwgbml0KSB7Ci0jaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAxMDAwCisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJaWYgKGl0LT52biAhPSBj
dXJ2bmV0KSB7CiAJCQljb250aW51ZTsKIAkJfQpAQCAtMzg5MSw4ICszODg2LDggQEAgc2N0cF9p
bnBjYl9mcmVlKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIGludCBpbW1lZGlhdGUsIGludCBmcm9t
KQogCXN0cnVjdCBzb2NrZXQgKnNvOwogCWludCBiZWluZ19yZWZlZCA9IDA7CiAJc3RydWN0IHNj
dHBfcXVldWVkX3RvX3JlYWQgKnNxLCAqbnNxOwotI2lmICFkZWZpbmVkKF9fUGFuZGFfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKLSNpZiAhZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgX19G
cmVlQlNEX3ZlcnNpb24gPCA1MDAwMDAKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lm
ICFkZWZpbmVkKF9fRnJlZUJTRF9fKQogCXNjdHBfcnRlbnRyeV90ICpydDsKICNlbmRpZgogI2Vu
ZGlmCkBAIC0zOTAwLDcgKzM4OTUsNyBAQCBzY3RwX2lucGNiX2ZyZWUoc3RydWN0IHNjdHBfaW5w
Y2IgKmlucCwgaW50IGltbWVkaWF0ZSwgaW50IGZyb20pCiAJc2N0cF9zaGFyZWRrZXlfdCAqc2hh
cmVkX2tleSwgKm5zaGFyZWRfa2V5OwogCiAKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBk
ZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzY3RwX2xvY2tf
YXNzZXJ0KFNDVFBfSU5QX1NPKGlucCkpOwogI2VuZGlmCiAjaWZkZWYgU0NUUF9MT0dfQ0xPU0lO
RwpAQCAtMzkzMyw3ICszOTI4LDcgQEAgc2N0cF9pbnBjYl9mcmVlKHN0cnVjdCBzY3RwX2lucGNi
ICppbnAsIGludCBpbW1lZGlhdGUsIGludCBmcm9tKQogCX0KIAkvKiBGaXJzdCB0aW1lIHRocm91
Z2ggd2UgaGF2ZSB0aGUgc29ja2V0IGxvY2ssIGFmdGVyIHRoYXQgbm8gbW9yZS4gKi8KIAlzY3Rw
X3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX05FV0NPT0tJRSwgaW5wLCBOVUxMLCBOVUxMLAot
CQkJU0NUUF9GUk9NX1NDVFBfUENCICsgU0NUUF9MT0NfMSk7CisJICAgICAgICAgICAgICAgIFND
VFBfRlJPTV9TQ1RQX1BDQiArIFNDVFBfTE9DXzEpOwogCiAJaWYgKGlucC0+Y29udHJvbCkgewog
CQlzY3RwX21fZnJlZW0oaW5wLT5jb250cm9sKTsKQEAgLTM5NjEsMTQgKzM5NTYsMTQgQEAgc2N0
cF9pbnBjYl9mcmVlKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIGludCBpbW1lZGlhdGUsIGludCBm
cm9tKQogCQkJCQkgKiB0aW1lciBvbiB0aGUgYXNvYyBkdWUgdG8gaXQgd2FzIG5vdAogCQkJCQkg
KiBjbG9zZWQuIFNvIGdvIGFoZWFkIGFuZCBzdGFydCBpdCBub3cuCiAJCQkJCSAqLwotCQkJCQlh
c29jLT5hc29jLnN0YXRlICY9IH5TQ1RQX1NUQVRFX0lOX0FDQ0VQVF9RVUVVRTsKKwkJCQkJU0NU
UF9DTEVBUl9TVUJTVEFURShhc29jLCBTQ1RQX1NUQVRFX0lOX0FDQ0VQVF9RVUVVRSk7CiAJCQkJ
CXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX0FTT0NLSUxMLCBpbnAsIGFzb2MsIE5V
TEwpOwogCQkJCX0KIAkJCQlTQ1RQX1RDQl9VTkxPQ0soYXNvYyk7CiAJCQkJY29udGludWU7CiAJ
CQl9Ci0JCQlpZiAoKChTQ1RQX0dFVF9TVEFURSgmYXNvYy0+YXNvYykgPT0gU0NUUF9TVEFURV9D
T09LSUVfV0FJVCkgfHwKLQkJCSAgICAoU0NUUF9HRVRfU1RBVEUoJmFzb2MtPmFzb2MpID09IFND
VFBfU1RBVEVfQ09PS0lFX0VDSE9FRCkpICYmCisJCQlpZiAoKChTQ1RQX0dFVF9TVEFURShhc29j
KSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB8fAorCQkJICAgICAoU0NUUF9HRVRfU1RBVEUo
YXNvYykgPT0gU0NUUF9TVEFURV9DT09LSUVfRUNIT0VEKSkgJiYKIAkJCSAgICAoYXNvYy0+YXNv
Yy50b3RhbF9vdXRwdXRfcXVldWVfc2l6ZSA9PSAwKSkgewogCQkJCS8qIElmIHdlIGhhdmUgZGF0
YSBpbiBxdWV1ZSwgd2UgZG9uJ3Qgd2FudCB0byBqdXN0CiAJCQkJICogZnJlZSBzaW5jZSB0aGUg
YXBwIG1heSBoYXZlIGRvbmUsIHNlbmQoKS9jbG9zZQpAQCAtMzk4NCw3ICszOTc5LDcgQEAgc2N0
cF9pbnBjYl9mcmVlKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIGludCBpbW1lZGlhdGUsIGludCBm
cm9tKQogCQkJfQogCQkJLyogRGlzY29ubmVjdCB0aGUgc29ja2V0IHBsZWFzZSAqLwogCQkJYXNv
Yy0+c2N0cF9zb2NrZXQgPSBOVUxMOwotCQkJYXNvYy0+YXNvYy5zdGF0ZSB8PSBTQ1RQX1NUQVRF
X0NMT1NFRF9TT0NLRVQ7CisJCQlTQ1RQX0FERF9TVUJTVEFURShhc29jLCBTQ1RQX1NUQVRFX0NM
T1NFRF9TT0NLRVQpOwogCQkJaWYgKChhc29jLT5hc29jLnNpemVfb25fcmVhc21fcXVldWUgPiAw
KSB8fAogCQkJICAgIChhc29jLT5hc29jLmNvbnRyb2xfcGRhcGkpIHx8CiAJCQkgICAgKGFzb2Mt
PmFzb2Muc2l6ZV9vbl9hbGxfc3RyZWFtcyA+IDApIHx8CkBAIC0zOTk2LDggKzM5OTEsOCBAQCBz
Y3RwX2lucGNiX2ZyZWUoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgaW50IGltbWVkaWF0ZSwgaW50
IGZyb20pCiAJCQkJYXNvYy0+c2N0cF9lcC0+bGFzdF9hYm9ydF9jb2RlID0gU0NUUF9GUk9NX1ND
VFBfUENCICsgU0NUUF9MT0NfMzsKIAkJCQlzY3RwX3NlbmRfYWJvcnRfdGNiKGFzb2MsIG9wX2Vy
ciwgU0NUUF9TT19MT0NLRUQpOwogCQkJCVNDVFBfU1RBVF9JTkNSX0NPVU5URVIzMihzY3Rwc19h
Ym9ydGVkKTsKLQkJCQlpZiAoKFNDVFBfR0VUX1NUQVRFKCZhc29jLT5hc29jKSA9PSBTQ1RQX1NU
QVRFX09QRU4pIHx8Ci0JCQkJICAgIChTQ1RQX0dFVF9TVEFURSgmYXNvYy0+YXNvYykgPT0gU0NU
UF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkpIHsKKwkJCQlpZiAoKFNDVFBfR0VUX1NUQVRFKGFz
b2MpID09IFNDVFBfU1RBVEVfT1BFTikgfHwKKwkJCQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2Mp
ID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpKSB7CiAJCQkJCVNDVFBfU1RBVF9ERUNS
X0dBVUdFMzIoc2N0cHNfY3VycmVzdGFiKTsKIAkJCQl9CiAJCQkJaWYgKHNjdHBfZnJlZV9hc3Nv
YyhpbnAsIGFzb2MsCkBAIC00MDExLDIwICs0MDA2LDE5IEBAIHNjdHBfaW5wY2JfZnJlZShzdHJ1
Y3Qgc2N0cF9pbnBjYiAqaW5wLCBpbnQgaW1tZWRpYXRlLCBpbnQgZnJvbSkKIAkJCQlpZiAoKCph
c29jLT5hc29jLnNzX2Z1bmN0aW9ucy5zY3RwX3NzX2lzX3VzZXJfbXNnc19pbmNvbXBsZXRlKShh
c29jLCAmYXNvYy0+YXNvYykpIHsKIAkJCQkJZ290byBhYm9ydF9hbnl3YXk7CiAJCQkJfQotCQkJ
CWlmICgoU0NUUF9HRVRfU1RBVEUoJmFzb2MtPmFzb2MpICE9IFNDVFBfU1RBVEVfU0hVVERPV05f
U0VOVCkgJiYKLQkJCQkgICAgKFNDVFBfR0VUX1NUQVRFKCZhc29jLT5hc29jKSAhPSBTQ1RQX1NU
QVRFX1NIVVRET1dOX0FDS19TRU5UKSkgeworCQkJCWlmICgoU0NUUF9HRVRfU1RBVEUoYXNvYykg
IT0gU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKSAmJgorCQkJCSAgICAoU0NUUF9HRVRfU1RBVEUo
YXNvYykgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tfU0VOVCkpIHsKIAkJCQkJc3RydWN0IHNj
dHBfbmV0cyAqbmV0cDsKIAogCQkJCQkvKgogCQkJCQkgKiB0aGVyZSBpcyBub3RoaW5nIHF1ZXVl
ZCB0byBzZW5kLAogCQkJCQkgKiBzbyBJIHNlbmQgc2h1dGRvd24KIAkJCQkJICovCi0JCQkJCWlm
ICgoU0NUUF9HRVRfU1RBVEUoJmFzb2MtPmFzb2MpID09IFNDVFBfU1RBVEVfT1BFTikgfHwKLQkJ
CQkJICAgIChTQ1RQX0dFVF9TVEFURSgmYXNvYy0+YXNvYykgPT0gU0NUUF9TVEFURV9TSFVURE9X
Tl9SRUNFSVZFRCkpIHsKKwkJCQkJaWYgKChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NU
QVRFX09QRU4pIHx8CisJCQkJCSAgICAoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFU
RV9TSFVURE9XTl9SRUNFSVZFRCkpIHsKIAkJCQkJCVNDVFBfU1RBVF9ERUNSX0dBVUdFMzIoc2N0
cHNfY3VycmVzdGFiKTsKIAkJCQkJfQotCQkJCQlTQ1RQX1NFVF9TVEFURSgmYXNvYy0+YXNvYywg
U0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKTsKLQkJCQkJU0NUUF9DTEVBUl9TVUJTVEFURSgmYXNv
Yy0+YXNvYywgU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HKTsKKwkJCQkJU0NUUF9TRVRfU1RB
VEUoYXNvYywgU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKTsKIAkJCQkJc2N0cF9zdG9wX3RpbWVy
c19mb3Jfc2h1dGRvd24oYXNvYyk7CiAJCQkJCWlmIChhc29jLT5hc29jLmFsdGVybmF0ZSkgewog
CQkJCQkJbmV0cCA9IGFzb2MtPmFzb2MuYWx0ZXJuYXRlOwpAQCAtNDAzNCwxNyArNDAyOCwxNSBA
QCBzY3RwX2lucGNiX2ZyZWUoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgaW50IGltbWVkaWF0ZSwg
aW50IGZyb20pCiAJCQkJCXNjdHBfc2VuZF9zaHV0ZG93bihhc29jLCBuZXRwKTsKIAkJCQkJc2N0
cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfU0hVVERPV04sIGFzb2MtPnNjdHBfZXAsIGFz
b2MsCiAJCQkJCSAgICBuZXRwKTsKLQkJCQkJc2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZ
UEVfU0hVVERPV05HVUFSRCwgYXNvYy0+c2N0cF9lcCwgYXNvYywKLQkJCQkJICAgIGFzb2MtPmFz
b2MucHJpbWFyeV9kZXN0aW5hdGlvbik7CisJCQkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1F
Ul9UWVBFX1NIVVRET1dOR1VBUkQsIGFzb2MtPnNjdHBfZXAsIGFzb2MsIE5VTEwpOwogCQkJCQlz
Y3RwX2NodW5rX291dHB1dChpbnAsIGFzb2MsIFNDVFBfT1VUUFVUX0ZST01fU0hVVF9UTVIsIFND
VFBfU09fTE9DS0VEKTsKIAkJCQl9CiAJCQl9IGVsc2UgewogCQkJCS8qIG1hcmsgaW50byBzaHV0
ZG93biBwZW5kaW5nICovCi0JCQkJYXNvYy0+YXNvYy5zdGF0ZSB8PSBTQ1RQX1NUQVRFX1NIVVRE
T1dOX1BFTkRJTkc7Ci0JCQkJc2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfU0hVVERP
V05HVUFSRCwgYXNvYy0+c2N0cF9lcCwgYXNvYywKLQkJCQkJCSBhc29jLT5hc29jLnByaW1hcnlf
ZGVzdGluYXRpb24pOworCQkJCVNDVFBfQUREX1NVQlNUQVRFKGFzb2MsIFNDVFBfU1RBVEVfU0hV
VERPV05fUEVORElORyk7CisJCQkJc2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfU0hV
VERPV05HVUFSRCwgYXNvYy0+c2N0cF9lcCwgYXNvYywgTlVMTCk7CiAJCQkJaWYgKCgqYXNvYy0+
YXNvYy5zc19mdW5jdGlvbnMuc2N0cF9zc19pc191c2VyX21zZ3NfaW5jb21wbGV0ZSkoYXNvYywg
JmFzb2MtPmFzb2MpKSB7Ci0JCQkJCWFzb2MtPmFzb2Muc3RhdGUgfD0gU0NUUF9TVEFURV9QQVJU
SUFMX01TR19MRUZUOworCQkJCQlTQ1RQX0FERF9TVUJTVEFURShhc29jLCBTQ1RQX1NUQVRFX1BB
UlRJQUxfTVNHX0xFRlQpOwogCQkJCX0KIAkJCQlpZiAoVEFJTFFfRU1QVFkoJmFzb2MtPmFzb2Mu
c2VuZF9xdWV1ZSkgJiYKIAkJCQkgICAgVEFJTFFfRU1QVFkoJmFzb2MtPmFzb2Muc2VudF9xdWV1
ZSkgJiYKQEAgLTQwNTUsOCArNDA0Nyw4IEBAIHNjdHBfaW5wY2JfZnJlZShzdHJ1Y3Qgc2N0cF9p
bnBjYiAqaW5wLCBpbnQgaW1tZWRpYXRlLCBpbnQgZnJvbSkKIAkJCQkJYXNvYy0+c2N0cF9lcC0+
bGFzdF9hYm9ydF9jb2RlID0gU0NUUF9GUk9NX1NDVFBfUENCICsgU0NUUF9MT0NfNTsKIAkJCQkJ
c2N0cF9zZW5kX2Fib3J0X3RjYihhc29jLCBvcF9lcnIsIFNDVFBfU09fTE9DS0VEKTsKIAkJCQkJ
U0NUUF9TVEFUX0lOQ1JfQ09VTlRFUjMyKHNjdHBzX2Fib3J0ZWQpOwotCQkJCQlpZiAoKFNDVFBf
R0VUX1NUQVRFKCZhc29jLT5hc29jKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHx8Ci0JCQkJCSAgICAo
U0NUUF9HRVRfU1RBVEUoJmFzb2MtPmFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlW
RUQpKSB7CisJCQkJCWlmICgoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9PUEVO
KSB8fAorCQkJCQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERP
V05fUkVDRUlWRUQpKSB7CiAJCQkJCQlTQ1RQX1NUQVRfREVDUl9HQVVHRTMyKHNjdHBzX2N1cnJl
c3RhYik7CiAJCQkJCX0KIAkJCQkJaWYgKHNjdHBfZnJlZV9hc3NvYyhpbnAsIGFzb2MsCkBAIC00
MTA0LDE3ICs0MDk2LDIyIEBAIHNjdHBfaW5wY2JfZnJlZShzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5w
LCBpbnQgaW1tZWRpYXRlLCBpbnQgZnJvbSkKIAljbnQgPSAwOwogCUxJU1RfRk9SRUFDSF9TQUZF
KGFzb2MsICZpbnAtPnNjdHBfYXNvY19saXN0LCBzY3RwX3RjYmxpc3QsIG5hc29jKSB7CiAJCVND
VFBfVENCX0xPQ0soYXNvYyk7CisJCWlmIChpbW1lZGlhdGUgIT0gU0NUUF9GUkVFX1NIT1VMRF9V
U0VfR1JBQ0VGVUxfQ0xPU0UpIHsKKwkJCS8qIERpc2Nvbm5lY3QgdGhlIHNvY2tldCBwbGVhc2Ug
Ki8KKwkJCWFzb2MtPnNjdHBfc29ja2V0ID0gTlVMTDsKKwkJCVNDVFBfQUREX1NVQlNUQVRFKGFz
b2MsIFNDVFBfU1RBVEVfQ0xPU0VEX1NPQ0tFVCk7CisJCX0KIAkJaWYgKGFzb2MtPmFzb2Muc3Rh
dGUgJiBTQ1RQX1NUQVRFX0FCT1VUX1RPX0JFX0ZSRUVEKSB7CiAJCQlpZiAoYXNvYy0+YXNvYy5z
dGF0ZSAmIFNDVFBfU1RBVEVfSU5fQUNDRVBUX1FVRVVFKSB7Ci0JCQkJYXNvYy0+YXNvYy5zdGF0
ZSAmPSB+U0NUUF9TVEFURV9JTl9BQ0NFUFRfUVVFVUU7CisJCQkJU0NUUF9DTEVBUl9TVUJTVEFU
RShhc29jLCBTQ1RQX1NUQVRFX0lOX0FDQ0VQVF9RVUVVRSk7CiAJCQkJc2N0cF90aW1lcl9zdGFy
dChTQ1RQX1RJTUVSX1RZUEVfQVNPQ0tJTEwsIGlucCwgYXNvYywgTlVMTCk7CiAJCQl9Ci0JCSAg
ICAgICAgY250Kys7CisJCQljbnQrKzsKIAkJCVNDVFBfVENCX1VOTE9DSyhhc29jKTsKIAkJCWNv
bnRpbnVlOwogCQl9CiAJCS8qIEZyZWUgYXNzb2NpYXRpb25zIHRoYXQgYXJlIE5PVCBraWxsaW5n
IHVzICovCi0JCWlmICgoU0NUUF9HRVRfU1RBVEUoJmFzb2MtPmFzb2MpICE9IFNDVFBfU1RBVEVf
Q09PS0lFX1dBSVQpICYmCisJCWlmICgoU0NUUF9HRVRfU1RBVEUoYXNvYykgIT0gU0NUUF9TVEFU
RV9DT09LSUVfV0FJVCkgJiYKIAkJICAgICgoYXNvYy0+YXNvYy5zdGF0ZSAmIFNDVFBfU1RBVEVf
QUJPVVRfVE9fQkVfRlJFRUQpID09IDApKSB7CiAJCQlzdHJ1Y3QgbWJ1ZiAqb3BfZXJyOwogCkBA
IC00MTI3LDggKzQxMjQsOCBAQCBzY3RwX2lucGNiX2ZyZWUoc3RydWN0IHNjdHBfaW5wY2IgKmlu
cCwgaW50IGltbWVkaWF0ZSwgaW50IGZyb20pCiAJCQlTQ1RQX1RDQl9VTkxPQ0soYXNvYyk7CiAJ
CQljb250aW51ZTsKIAkJfQotCQlpZiAoKFNDVFBfR0VUX1NUQVRFKCZhc29jLT5hc29jKSA9PSBT
Q1RQX1NUQVRFX09QRU4pIHx8Ci0JCSAgICAoU0NUUF9HRVRfU1RBVEUoJmFzb2MtPmFzb2MpID09
IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpKSB7CisJCWlmICgoU0NUUF9HRVRfU1RBVEUo
YXNvYykgPT0gU0NUUF9TVEFURV9PUEVOKSB8fAorCQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2Mp
ID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpKSB7CiAJCQlTQ1RQX1NUQVRfREVDUl9H
QVVHRTMyKHNjdHBzX2N1cnJlc3RhYik7CiAJCX0KIAkJaWYgKHNjdHBfZnJlZV9hc3NvYyhpbnAs
IGFzb2MsIFNDVFBfUENCRlJFRV9GT1JDRSwKQEAgLTQxMzgsNyArNDEzNSw2IEBAIHNjdHBfaW5w
Y2JfZnJlZShzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBpbnQgaW1tZWRpYXRlLCBpbnQgZnJvbSkK
IAl9CiAJaWYgKGNudCkgewogCQkvKiBPayB3ZSBoYXZlIHNvbWVvbmUgb3V0IHRoZXJlIHRoYXQg
d2lsbCBraWxsIHVzICovCi0JCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmaW5wLT5zY3RwX2Vw
LnNpZ25hdHVyZV9jaGFuZ2UudGltZXIpOwogI2lmZGVmIFNDVFBfTE9HX0NMT1NJTkcKIAkJc2N0
cF9sb2dfY2xvc2luZyhpbnAsIE5VTEwsIDMpOwogI2VuZGlmCkBAIC00MTUzLDExICs0MTQ5LDEw
IEBAIHNjdHBfaW5wY2JfZnJlZShzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBpbnQgaW1tZWRpYXRl
LCBpbnQgZnJvbSkKIAkJYmVpbmdfcmVmZWQrKzsKIAlpZiAoU0NUUF9BU09DX0NSRUFURV9MT0NL
X0NPTlRFTkRFRChpbnApKQogCQliZWluZ19yZWZlZCsrOwotCisJLyogTk9URTogMCByZWZjb3Vu
dCBhbHNvIG1lYW5zIG5vIHRpbWVycyBhcmUgcmVmZXJlbmNpbmcgdXMuICovCiAJaWYgKChpbnAt
PnJlZmNvdW50KSB8fAogCSAgICAoYmVpbmdfcmVmZWQpIHx8CiAJICAgIChpbnAtPnNjdHBfZmxh
Z3MgJiBTQ1RQX1BDQl9GTEFHU19DTE9TRV9JUCkpIHsKLQkJKHZvaWQpU0NUUF9PU19USU1FUl9T
VE9QKCZpbnAtPnNjdHBfZXAuc2lnbmF0dXJlX2NoYW5nZS50aW1lcik7CiAjaWZkZWYgU0NUUF9M
T0dfQ0xPU0lORwogCQlzY3RwX2xvZ19jbG9zaW5nKGlucCwgTlVMTCwgNCk7CiAjZW5kaWYKQEAg
LTQxNzYsMjYgKzQxNzEsMTMgQEAgc2N0cF9pbnBjYl9mcmVlKHN0cnVjdCBzY3RwX2lucGNiICpp
bnAsIGludCBpbW1lZGlhdGUsIGludCBmcm9tKQogCVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsKIAlT
Q1RQX0FTT0NfQ1JFQVRFX1VOTE9DSyhpbnApOwogCVNDVFBfSU5QX0lORk9fV1VOTE9DSygpOwot
CS8qIE5vdyB3ZSByZWxlYXNlIGFsbCBsb2Nrcy4gU2luY2UgdGhpcyBJTlAKLQkgKiBjYW5ub3Qg
YmUgZm91bmQgYW55bW9yZSBleGNlcHQgcG9zc2libHkgYnkgdGhlCi0JICoga2lsbCB0aW1lciB0
aGF0IG1pZ2h0IGJlIHJ1bm5pbmcuIFdlIGNhbGwKLQkgKiB0aGUgZHJhaW4gZnVuY3Rpb24gaGVy
ZS4gSXQgc2hvdWxkIGhpdCB0aGUgY2FzZQotCSAqIHdlcmUgaXQgc2VlcyB0aGUgQUNUSVZFIGZs
YWcgY2xlYXJlZCBhbmQgZXhpdAotCSAqIG91dCBmcmVlaW5nIHVzIHRvIHByb2NlZWQgYW5kIGRl
c3Ryb3kgZXZlcnl0aGluZy4KLQkgKi8KLQlpZiAoZnJvbSAhPSBTQ1RQX0NBTExFRF9GUk9NX0lO
UEtJTExfVElNRVIpIHsKLQkJKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QX0RSQUlOKCZpbnAtPnNj
dHBfZXAuc2lnbmF0dXJlX2NoYW5nZS50aW1lcik7Ci0JfSBlbHNlIHsKLQkJLyogUHJvYmFibHkg
dW4tbmVlZGVkICovCi0JCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmaW5wLT5zY3RwX2VwLnNp
Z25hdHVyZV9jaGFuZ2UudGltZXIpOwotCX0KIAogI2lmZGVmIFNDVFBfTE9HX0NMT1NJTkcKIAlz
Y3RwX2xvZ19jbG9zaW5nKGlucCwgTlVMTCwgNSk7CiAjZW5kaWYKIAotI2lmICEoZGVmaW5lZChf
X1BhbmRhX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykpCi0jaWYgIWRlZmluZWQoX19GcmVlQlNEX18pIHx8IF9fRnJlZUJTRF92ZXJzaW9uIDwgNTAw
MDAwCisjaWYgIShkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkKKyNp
ZiAhKGRlZmluZWQoX19GcmVlQlNEX18pICAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkKIAly
dCA9IGlwX3BjYi0+aW5wX3JvdXRlLnJvX3J0OwogI2VuZGlmCiAjZW5kaWYKQEAgLTQyMzAsNDkg
KzQyMTIsMzIgQEAgc2N0cF9pbnBjYl9mcmVlKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIGludCBp
bW1lZGlhdGUsIGludCBmcm9tKQogCSAqIG1hY3JvIGhlcmUgc2luY2UgbGVfbmV4dCB3aWxsIGdl
dCBmcmVlZCBhcyBwYXJ0IG9mIHRoZQogCSAqIHNjdHBfZnJlZV9hc3NvYygpIGNhbGwuCiAJICov
Ci0jaWZuZGVmIF9fUGFuZGFfXwogCWlmIChpcF9wY2ItPmlucF9vcHRpb25zKSB7CiAJCSh2b2lk
KXNjdHBfbV9mcmVlKGlwX3BjYi0+aW5wX29wdGlvbnMpOwogCQlpcF9wY2ItPmlucF9vcHRpb25z
ID0gMDsKIAl9Ci0jZW5kaWYKIAotI2lmICEoZGVmaW5lZChfX1BhbmRhX18pIHx8IGRlZmluZWQo
X19XaW5kb3dzX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCi0jaWYgIWRlZmluZWQoX19G
cmVlQlNEX18pIHx8IF9fRnJlZUJTRF92ZXJzaW9uIDwgNTAwMDAwCisjaWYgIShkZWZpbmVkKF9X
SU4zMikgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkKKyNpZiAhZGVmaW5lZChfX0ZyZWVCU0Rf
XykKIAlpZiAocnQpIHsKIAkJUlRGUkVFKHJ0KTsKIAkJaXBfcGNiLT5pbnBfcm91dGUucm9fcnQg
PSAwOwogCX0KICNlbmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92
ZXJzaW9uIDwgODAzMDAwCi0jaWZkZWYgSU5FVAotCWlmIChpcF9wY2ItPmlucF9tb3B0aW9ucykg
ewotCQlpbnBfZnJlZW1vcHRpb25zKGlwX3BjYi0+aW5wX21vcHRpb25zKTsKLQkJaXBfcGNiLT5p
bnBfbW9wdGlvbnMgPSAwOwotCX0KLSNlbmRpZgotI2VuZGlmCiAjZW5kaWYKIAogI2lmZGVmIElO
RVQ2Ci0jaWYgIShkZWZpbmVkKF9fUGFuZGFfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwg
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZp
bmVkKF9fQVBQTEVfXykKKyNpZiAhKGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fVXNlcnNw
YWNlX18pKQorI2lmIChkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAJaWYgKGlwX3BjYi0+aW5wX3ZmbGFnICYgSU5Q
X0lQVjYpIHsKICNlbHNlCiAJaWYgKGlucC0+aW5wX3ZmbGFnICYgSU5QX0lQVjYpIHsKICNlbmRp
ZgotCQlzdHJ1Y3QgaW42cGNiICppbjZwOwotCi0JCWluNnAgPSAoc3RydWN0IGluNnBjYiAqKWlu
cDsKLQkJaXA2X2ZyZWVwY2JvcHRzKGluNnAtPmluNnBfb3V0cHV0b3B0cyk7CisJCWlwNl9mcmVl
cGNib3B0cyhpcF9wY2ItPmluNnBfb3V0cHV0b3B0cyk7CiAJfQogI2VuZGlmCiAjZW5kaWYJCQkJ
LyogSU5FVDYgKi8KLSNpZiAhKGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBM
RV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pKQot
CWlucC0+aW5wX3ZmbGFnID0gMDsKLSNlbHNlCiAJaXBfcGNiLT5pbnBfdmZsYWcgPSAwOwotI2Vu
ZGlmCiAJLyogZnJlZSB1cCBhdXRoZW50aWNhdGlvbiBmaWVsZHMgKi8KIAlpZiAoaW5wLT5zY3Rw
X2VwLmxvY2FsX2F1dGhfY2h1bmtzICE9IE5VTEwpCiAJCXNjdHBfZnJlZV9jaHVua2xpc3QoaW5w
LT5zY3RwX2VwLmxvY2FsX2F1dGhfY2h1bmtzKTsKQEAgLTQyODUsNyArNDI1MCw3IEBAIHNjdHBf
aW5wY2JfZnJlZShzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBpbnQgaW1tZWRpYXRlLCBpbnQgZnJv
bSkKIAkJLypzYV9pZ25vcmUgRlJFRURfTUVNT1JZKi8KIAl9CiAKLSNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
IAlpbnAtPmlwX2lucC5pbnAuaW5wX3N0YXRlID0gSU5QQ0JfU1RBVEVfREVBRDsKIAlpZiAoaW5f
cGNiX2NoZWNrc3RhdGUoJmlucC0+aXBfaW5wLmlucCwgV05UX1NUT1BVU0lORywgMSkgIT0gV05U
X1NUT1BVU0lORykgewogI2lmZGVmIElOVkFSSUFOVFMKQEAgLTQzMjMsMTQgKzQyODgsMTQgQEAg
c2N0cF9pbnBjYl9mcmVlKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIGludCBpbW1lZGlhdGUsIGlu
dCBmcm9tKQogCQlpbnAtPnNjdHBfdGNiaGFzaCA9IE5VTEw7CiAJfQogCS8qIE5vdyB3ZSBtdXN0
IHB1dCB0aGUgZXAgbWVtb3J5IGJhY2sgaW50byB0aGUgem9uZSBwb29sICovCi0jaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogCWNyZnJlZShpbnAtPmlwX2lucC5pbnAuaW5wX2NyZWQpOwogCUlOUF9MT0NL
X0RFU1RST1koJmlucC0+aXBfaW5wLmlucCk7CiAjZW5kaWYKIAlTQ1RQX0lOUF9MT0NLX0RFU1RS
T1koaW5wKTsKIAlTQ1RQX0lOUF9SRUFEX0RFU1RST1koaW5wKTsKIAlTQ1RQX0FTT0NfQ1JFQVRF
X0xPQ0tfREVTVFJPWShpbnApOwotI2lmICFkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiAhKGRlZmlu
ZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkKIAlTQ1RQX1pPTkVfRlJF
RShTQ1RQX0JBU0VfSU5GTyhpcGlfem9uZV9lcCksIGlucCk7CiAJU0NUUF9ERUNSX0VQX0NPVU5U
KCk7CiAjZWxzZQpAQCAtNDM1NSw5ICs0MzIwLDYgQEAgc2N0cF9maW5kbmV0KHN0cnVjdCBzY3Rw
X3RjYiAqc3RjYiwgc3RydWN0IHNvY2thZGRyICphZGRyKQogaW50CiBzY3RwX2lzX2FkZHJlc3Nf
b25fbG9jYWxfaG9zdChzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIHVpbnQzMl90IHZyZl9pZCkKIHsK
LSNpZmRlZiBfX1BhbmRhX18KLQlyZXR1cm4gKDApOwotI2Vsc2UKIAlzdHJ1Y3Qgc2N0cF9pZmEg
KnNjdHBfaWZhOwogCXNjdHBfaWZhID0gc2N0cF9maW5kX2lmYV9ieV9hZGRyKGFkZHIsIHZyZl9p
ZCwgU0NUUF9BRERSX05PVF9MT0NLRUQpOwogCWlmIChzY3RwX2lmYSkgewpAQCAtNDM2NSw3ICs0
MzI3LDYgQEAgc2N0cF9pc19hZGRyZXNzX29uX2xvY2FsX2hvc3Qoc3RydWN0IHNvY2thZGRyICph
ZGRyLCB1aW50MzJfdCB2cmZfaWQpCiAJfSBlbHNlIHsKIAkJcmV0dXJuICgwKTsKIAl9Ci0jZW5k
aWYKIH0KIAogLyoKQEAgLTQ2MTQsNyArNDU3NSw3IEBAIHNjdHBfYWRkX3JlbW90ZV9hZGRyKHN0
cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNvY2thZGRyICpuZXdhZGRyLAogCQlzdHJ1Y3Qg
c29ja2FkZHJfaW42ICpzaW42OwogCiAJCXNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKSZu
ZXQtPnJvLl9sX2FkZHI7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQ
UExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaWYgZGVmaW5lZChBUFBMRV9MRU9Q
QVJEKSB8fCBkZWZpbmVkKEFQUExFX1NOT1dMRU9QQVJEKQogCQkodm9pZClpbjZfZW1iZWRzY29w
ZSgmc2luNi0+c2luNl9hZGRyLCBzaW42LCAmc3RjYi0+c2N0cF9lcC0+aXBfaW5wLmlucCwgTlVM
TCk7CiAjZWxzZQpAQCAtNDY4MSwxOCArNDY0MiwyMiBAQCBzY3RwX2FkZF9yZW1vdGVfYWRkcihz
dHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzb2NrYWRkciAqbmV3YWRkciwKIAkJCX0gZWxz
ZSB7CiAJCQkJaW10dSA9IDA7CiAJCQl9Ci0JCQlybXR1ID0gU0NUUF9HQVRIRVJfTVRVX0ZST01f
Uk9VVEUobmV0LT5yby5fc19hZGRyLCAmbmV0LT5yby5fbF9hZGRyLnNhLCBuZXQtPnJvLnJvX3J0
KTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQlybXR1ID0gU0NUUF9HQVRIRVJfTVRVX0ZST01f
Uk9VVEUobmV0LT5yby5fc19hZGRyLCAmbmV0LT5yby5fbF9hZGRyLnNhLCBuZXQtPnJvLnJvX25o
KTsKIAkJCWhjbXR1ID0gc2N0cF9oY19nZXRfbXR1KCZuZXQtPnJvLl9sX2FkZHIsIHN0Y2ItPnNj
dHBfZXAtPmZpYm51bSk7CiAjZWxzZQorCQkJcm10dSA9IFNDVFBfR0FUSEVSX01UVV9GUk9NX1JP
VVRFKG5ldC0+cm8uX3NfYWRkciwgJm5ldC0+cm8uX2xfYWRkci5zYSwgbmV0LT5yby5yb19ydCk7
CiAJCQloY210dSA9IDA7CiAjZW5kaWYKIAkJCW5ldC0+bXR1ID0gc2N0cF9taW5fbXR1KGhjbXR1
LCBybXR1LCBpbXR1KTsKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQorI2Vsc2UKIAkJCWlmIChybXR1ID09IDApIHsKIAkJCQkvKiBTdGFydCB0aGlu
Z3Mgb2ZmIHRvIG1hdGNoIG10dSBvZiBpbnRlcmZhY2UgcGxlYXNlLiAqLwogCQkJCVNDVFBfU0VU
X01UVV9PRl9ST1VURSgmbmV0LT5yby5fbF9hZGRyLnNhLAogCQkJCSAgICAgICAgICAgICAgICAg
ICAgICBuZXQtPnJvLnJvX3J0LCBuZXQtPm10dSk7CiAJCQl9CisjZW5kaWYKIAkJfQogCX0KICNl
bmRpZgpAQCAtNDc4MSw3ICs0NzQ2LDcgQEAgc2N0cF9hZGRfcmVtb3RlX2FkZHIoc3RydWN0IHNj
dHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc29ja2FkZHIgKm5ld2FkZHIsCiAJICovCiAJbmV0LT5maW5k
X3BzZXVkb19jdW1hY2sgPSAxOwogCW5ldC0+ZmluZF9ydHhfcHNldWRvX2N1bWFjayA9IDE7Ci0j
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCS8qIENob29zZSBhbiBpbml0aWFsIGZsb3dpZC4gKi8KIAlu
ZXQtPmZsb3dpZCA9IHN0Y2ItPmFzb2MubXlfdnRhZyBeCiAJICAgICAgICAgICAgICBudG9ocyhz
dGNiLT5ycG9ydCkgXgpAQCAtNDc5MiwyNiArNDc1NywzNiBAQCBzY3RwX2FkZF9yZW1vdGVfYWRk
cihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzb2NrYWRkciAqbmV3YWRkciwKIAkJKm5l
dHAgPSBuZXQ7CiAJfQogCW5ldGZpcnN0ID0gVEFJTFFfRklSU1QoJnN0Y2ItPmFzb2MubmV0cyk7
CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwlp
ZiAobmV0LT5yby5yb19uaCA9PSBOVUxMKSB7CisjZWxzZQogCWlmIChuZXQtPnJvLnJvX3J0ID09
IE5VTEwpIHsKKyNlbmRpZgogCQkvKiBTaW5jZSB3ZSBoYXZlIG5vIHJvdXRlIHB1dCBpdCBhdCB0
aGUgYmFjayAqLwogCQlUQUlMUV9JTlNFUlRfVEFJTCgmc3RjYi0+YXNvYy5uZXRzLCBuZXQsIHNj
dHBfbmV4dCk7CiAJfSBlbHNlIGlmIChuZXRmaXJzdCA9PSBOVUxMKSB7CiAJCS8qIFdlIGFyZSB0
aGUgZmlyc3Qgb25lIGluIHRoZSBwb29sLiAqLwogCQlUQUlMUV9JTlNFUlRfSEVBRCgmc3RjYi0+
YXNvYy5uZXRzLCBuZXQsIHNjdHBfbmV4dCk7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwl9IGVsc2UgaWYgKG5ldGZpcnN0LT5yby5yb19uaCA9
PSBOVUxMKSB7CisjZWxzZQogCX0gZWxzZSBpZiAobmV0Zmlyc3QtPnJvLnJvX3J0ID09IE5VTEwp
IHsKKyNlbmRpZgogCQkvKgogCQkgKiBGaXJzdCBvbmUgaGFzIE5PIHJvdXRlLiBQbGFjZSB0aGlz
IG9uZSBhaGVhZCBvZiB0aGUgZmlyc3QKIAkJICogb25lLgogCQkgKi8KIAkJVEFJTFFfSU5TRVJU
X0hFQUQoJnN0Y2ItPmFzb2MubmV0cywgbmV0LCBzY3RwX25leHQpOwotI2lmbmRlZiBfX1BhbmRh
X18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQor
CX0gZWxzZSBpZiAobmV0LT5yby5yb19uaC0+bmhfaWZwICE9IG5ldGZpcnN0LT5yby5yb19uaC0+
bmhfaWZwKSB7CisjZWxzZQogCX0gZWxzZSBpZiAobmV0LT5yby5yb19ydC0+cnRfaWZwICE9IG5l
dGZpcnN0LT5yby5yb19ydC0+cnRfaWZwKSB7CisjZW5kaWYKIAkJLyoKIAkJICogVGhpcyBvbmUg
aGFzIGEgZGlmZmVyZW50IGludGVyZmFjZSB0aGFuIHRoZSBvbmUgYXQgdGhlCiAJCSAqIHRvcCBv
ZiB0aGUgbGlzdC4gUGxhY2UgaXQgYWhlYWQuCiAJCSAqLwogCQlUQUlMUV9JTlNFUlRfSEVBRCgm
c3RjYi0+YXNvYy5uZXRzLCBuZXQsIHNjdHBfbmV4dCk7Ci0jZW5kaWYKIAl9IGVsc2UgewogCQkv
KgogCQkgKiBPayB3ZSBoYXZlIHRoZSBzYW1lIGludGVyZmFjZSBhcyB0aGUgZmlyc3Qgb25lLiBN
b3ZlCkBAIC00ODI3LDM0ICs0ODAyLDM5IEBAIHNjdHBfYWRkX3JlbW90ZV9hZGRyKHN0cnVjdCBz
Y3RwX3RjYiAqc3RjYiwgc3RydWN0IHNvY2thZGRyICpuZXdhZGRyLAogCQkJCS8qIEVuZCBvZiB0
aGUgbGlzdCAqLwogCQkJCVRBSUxRX0lOU0VSVF9UQUlMKCZzdGNiLT5hc29jLm5ldHMsIG5ldCwg
c2N0cF9uZXh0KTsKIAkJCQlicmVhazsKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQorCQkJfSBlbHNlIGlmIChuZXRsb29rLT5yby5yb19uaCA9PSBO
VUxMKSB7CisjZWxzZQogCQkJfSBlbHNlIGlmIChuZXRsb29rLT5yby5yb19ydCA9PSBOVUxMKSB7
CisjZW5kaWYKIAkJCQkvKiBuZXh0IG9uZSBoYXMgTk8gcm91dGUgKi8KIAkJCQlUQUlMUV9JTlNF
UlRfQkVGT1JFKG5ldGZpcnN0LCBuZXQsIHNjdHBfbmV4dCk7CiAJCQkJYnJlYWs7Ci0JCQl9Ci0j
aWZuZGVmIF9fUGFuZGFfXwotCQkJZWxzZSBpZiAobmV0bG9vay0+cm8ucm9fcnQtPnJ0X2lmcCAh
PSBuZXQtPnJvLnJvX3J0LT5ydF9pZnApCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJCX0gZWxzZSBpZiAobmV0bG9vay0+cm8ucm9fbmgtPm5o
X2lmcCAhPSBuZXQtPnJvLnJvX25oLT5uaF9pZnApIHsKICNlbHNlCi0JCQllbHNlCisJCQl9IGVs
c2UgaWYgKG5ldGxvb2stPnJvLnJvX3J0LT5ydF9pZnAgIT0gbmV0LT5yby5yb19ydC0+cnRfaWZw
KSB7CiAjZW5kaWYKLQkJCXsKIAkJCQlUQUlMUV9JTlNFUlRfQUZURVIoJnN0Y2ItPmFzb2MubmV0
cywgbmV0bG9vaywKLQkJCQkJCSAgIG5ldCwgc2N0cF9uZXh0KTsKKwkJCQkgICAgICAgICAgICAg
ICAgICAgbmV0LCBzY3RwX25leHQpOwogCQkJCWJyZWFrOwogCQkJfQotI2lmbmRlZiBfX1BhbmRh
X18KIAkJCS8qIFNoaWZ0IGZvcndhcmQgKi8KIAkJCW5ldGZpcnN0ID0gbmV0bG9vazsKLSNlbmRp
ZgogCQl9IHdoaWxlIChuZXRsb29rICE9IE5VTEwpOwogCX0KIAogCS8qIGdvdCB0byBoYXZlIGEg
cHJpbWFyeSBzZXQgKi8KIAlpZiAoc3RjYi0+YXNvYy5wcmltYXJ5X2Rlc3RpbmF0aW9uID09IDAp
IHsKIAkJc3RjYi0+YXNvYy5wcmltYXJ5X2Rlc3RpbmF0aW9uID0gbmV0OworI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJfSBlbHNlIGlmICgoc3Rj
Yi0+YXNvYy5wcmltYXJ5X2Rlc3RpbmF0aW9uLT5yby5yb19uaCA9PSBOVUxMKSAmJgorCSAgICAg
ICAgICAgKG5ldC0+cm8ucm9fbmgpICYmCisjZWxzZQogCX0gZWxzZSBpZiAoKHN0Y2ItPmFzb2Mu
cHJpbWFyeV9kZXN0aW5hdGlvbi0+cm8ucm9fcnQgPT0gTlVMTCkgJiYKLQkJICAgIChuZXQtPnJv
LnJvX3J0KSAmJgotCSAgICAoKG5ldC0+ZGVzdF9zdGF0ZSAmIFNDVFBfQUREUl9VTkNPTkZJUk1F
RCkgPT0gMCkpIHsKKwkgICAgICAgICAgIChuZXQtPnJvLnJvX3J0KSAmJgorI2VuZGlmCisJICAg
ICAgICAgICAoKG5ldC0+ZGVzdF9zdGF0ZSAmIFNDVFBfQUREUl9VTkNPTkZJUk1FRCkgPT0gMCkp
IHsKIAkJLyogTm8gcm91dGUgdG8gY3VycmVudCBwcmltYXJ5IGFkb3B0IG5ldyBwcmltYXJ5ICov
CiAJCXN0Y2ItPmFzb2MucHJpbWFyeV9kZXN0aW5hdGlvbiA9IG5ldDsKIAl9CkBAIC00ODgzLDEx
ICs0ODYzLDkgQEAgc2N0cF9hbG9jX2FfYXNzb2NfaWQoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwg
c3RydWN0IHNjdHBfdGNiICpzdGNiKQogCXN0cnVjdCBzY3RwYXNvY2hlYWQgKmhlYWQ7CiAJc3Ry
dWN0IHNjdHBfdGNiICpsc3RjYjsKIAotCVNDVFBfSU5QX1dMT0NLKGlucCk7CiAgdHJ5X2FnYWlu
OgogCWlmIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19TT0NLRVRfQUxMR09ORSkg
ewogCQkvKiBUU05IICovCi0JCVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsKIAkJcmV0dXJuICgwKTsK
IAl9CiAJLyoKQEAgLTQ5MDYsOCArNDg4NCw3IEBAIHNjdHBfYWxvY19hX2Fzc29jX2lkKHN0cnVj
dCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYikKIAloZWFkID0gJmlucC0+
c2N0cF9hc29jaWRoYXNoW1NDVFBfUENCSEFTSF9BU09DKGlkLCBpbnAtPmhhc2hhc29jaWRtYXJr
KV07CiAJTElTVF9JTlNFUlRfSEVBRChoZWFkLCBzdGNiLCBzY3RwX3RjYmFzb2NpZGhhc2gpOwog
CXN0Y2ItPmFzb2MuaW5fYXNvY2lkX2hhc2ggPSAxOwotCVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsK
LQlyZXR1cm4gaWQ7CisJcmV0dXJuIChpZCk7CiB9CiAKIC8qCkBAIC00OTE5LDE3ICs0ODk2LDE3
IEBAIHN0cnVjdCBzY3RwX3RjYiAqCiBzY3RwX2Fsb2NfYXNzb2Moc3RydWN0IHNjdHBfaW5wY2Ig
KmlucCwgc3RydWN0IHNvY2thZGRyICpmaXJzdGFkZHIsCiAgICAgICAgICAgICAgICAgaW50ICpl
cnJvciwgdWludDMyX3Qgb3ZlcnJpZGVfdGFnLCB1aW50MzJfdCB2cmZfaWQsCiAgICAgICAgICAg
ICAgICAgdWludDE2X3Qgb19zdHJlYW1zLCB1aW50MTZfdCBwb3J0LAotI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAwMAotCQlzdHJ1Y3QgdGhyZWFk
ICpwCi0jZWxpZiBkZWZpbmVkKF9fV2luZG93c19fKQotCQlQS1RIUkVBRCBwCisjaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyAgICAgICAgICAgICAg
ICBzdHJ1Y3QgdGhyZWFkICpwLAorI2VsaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCisgICAgICAgICAgICAgICAgUEtUSFJFQUQgcCwKICNlbHNlCiAjaWYgZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogICAgICAgICAgICAgICAgIC8qICBfX1VzZXJzcGFjZV9fIE5V
TEwgcHJvYyBpcyBnb2luZyB0byBiZSBwYXNzZWQgaGVyZS4gU2VlIHNjdHBfbG93ZXJfc29zZW5k
ICovCiAjZW5kaWYKLQkJc3RydWN0IHByb2MgKnAKKyAgICAgICAgICAgICAgICBzdHJ1Y3QgcHJv
YyAqcCwKICNlbmRpZgotKQorICAgICAgICAgICAgICAgIGludCBpbml0aWFsaXplX2F1dGhfcGFy
YW1zKQogewogCS8qIG5vdGUgdGhlIHAgYXJndW1lbnQgaXMgb25seSB2YWxpZCBpbiB1bmJvdW5k
IHNvY2tldHMgKi8KIApAQCAtNTA4MSwxNSArNTA1OCw3IEBAIHNjdHBfYWxvY19hc3NvYyhzdHJ1
Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc29ja2FkZHIgKmZpcnN0YWRkciwKIAkJICogSWYg
eW91IGhhdmUgbm90IHBlcmZvcm1lZCBhIGJpbmQsIHRoZW4gd2UgbmVlZCB0byBkbyB0aGUKIAkJ
ICogZXBoZW1lcmFsIGJpbmQgZm9yIHlvdS4KIAkJICovCi0JCWlmICgoZXJyID0gc2N0cF9pbnBj
Yl9iaW5kKGlucC0+c2N0cF9zb2NrZXQsCi0JCSAgICAoc3RydWN0IHNvY2thZGRyICopTlVMTCwK
LQkJICAgIChzdHJ1Y3Qgc2N0cF9pZmEgKilOVUxMLAotI2lmbmRlZiBfX1BhbmRhX18KLQkJCQkJ
ICAgcAotI2Vsc2UKLQkJCQkJICAgKHN0cnVjdCBwcm9jICopTlVMTAotI2VuZGlmCi0JCSAgICAp
KSkgeworCQlpZiAoKGVyciA9IHNjdHBfaW5wY2JfYmluZChpbnAtPnNjdHBfc29ja2V0LCBOVUxM
LCBOVUxMLCBwKSkpIHsKIAkJCS8qIGJpbmQgZXJyb3IsIHByb2JhYmx5IHBlcm0gKi8KIAkJCSpl
cnJvciA9IGVycjsKIAkJCXJldHVybiAoTlVMTCk7CkBAIC01MTA3LDcgKzUwNzYsNiBAQCBzY3Rw
X2Fsb2NfYXNzb2Moc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNvY2thZGRyICpmaXJz
dGFkZHIsCiAJbWVtc2V0KHN0Y2IsIDAsIHNpemVvZigqc3RjYikpOwogCWFzb2MgPSAmc3RjYi0+
YXNvYzsKIAotCWFzb2MtPmFzc29jX2lkID0gc2N0cF9hbG9jX2FfYXNzb2NfaWQoaW5wLCBzdGNi
KTsKIAlTQ1RQX1RDQl9MT0NLX0lOSVQoc3RjYik7CiAJU0NUUF9UQ0JfU0VORF9MT0NLX0lOSVQo
c3RjYik7CiAJc3RjYi0+cnBvcnQgPSBycG9ydDsKQEAgLTUxMTgsNyArNTA4Niw2IEBAIHNjdHBf
YWxvY19hc3NvYyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc29ja2FkZHIgKmZpcnN0
YWRkciwKIAkJLyogZmFpbGVkICovCiAJCVNDVFBfVENCX0xPQ0tfREVTVFJPWShzdGNiKTsKIAkJ
U0NUUF9UQ0JfU0VORF9MT0NLX0RFU1RST1koc3RjYik7Ci0JCUxJU1RfUkVNT1ZFKHN0Y2IsIHNj
dHBfdGNiYXNvY2lkaGFzaCk7CiAJCVNDVFBfWk9ORV9GUkVFKFNDVFBfQkFTRV9JTkZPKGlwaV96
b25lX2Fzb2MpLCBzdGNiKTsKIAkJU0NUUF9ERUNSX0FTT0NfQ09VTlQoKTsKIAkJKmVycm9yID0g
ZXJyOwpAQCAtNTEzMSw3ICs1MDk4LDYgQEAgc2N0cF9hbG9jX2Fzc29jKHN0cnVjdCBzY3RwX2lu
cGNiICppbnAsIHN0cnVjdCBzb2NrYWRkciAqZmlyc3RhZGRyLAogCQkvKiBpbnBjYiBmcmVlZCB3
aGlsZSBhbGxvYyBnb2luZyBvbiAqLwogCQlTQ1RQX1RDQl9MT0NLX0RFU1RST1koc3RjYik7CiAJ
CVNDVFBfVENCX1NFTkRfTE9DS19ERVNUUk9ZKHN0Y2IpOwotCQlMSVNUX1JFTU9WRShzdGNiLCBz
Y3RwX3RjYmFzb2NpZGhhc2gpOwogCQlTQ1RQX1pPTkVfRlJFRShTQ1RQX0JBU0VfSU5GTyhpcGlf
em9uZV9hc29jKSwgc3RjYik7CiAJCVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsKIAkJU0NUUF9JTlBf
SU5GT19XVU5MT0NLKCk7CkBAIC01MTQyLDYgKzUxMDgsNyBAQCBzY3RwX2Fsb2NfYXNzb2Moc3Ry
dWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNvY2thZGRyICpmaXJzdGFkZHIsCiAJfQogCVND
VFBfVENCX0xPQ0soc3RjYik7CiAKKwlhc29jLT5hc3NvY19pZCA9IHNjdHBfYWxvY19hX2Fzc29j
X2lkKGlucCwgc3RjYik7CiAJLyogbm93IHRoYXQgbXlfdnRhZyBpcyBzZXQsIGFkZCBpdCB0byB0
aGUgaGFzaCAqLwogCWhlYWQgPSAmU0NUUF9CQVNFX0lORk8oc2N0cF9hc29jaGFzaClbU0NUUF9Q
Q0JIQVNIX0FTT0Moc3RjYi0+YXNvYy5teV92dGFnLCBTQ1RQX0JBU0VfSU5GTyhoYXNoYXNvY21h
cmspKV07CiAJLyogcHV0IGl0IGluIHRoZSBidWNrZXQgaW4gdGhlIHZ0YWcgaGFzaCBvZiBhc3Nv
YydzIGZvciB0aGUgc3lzdGVtICovCkBAIC01MTc5LDcgKzUxNDYsNiBAQCBzY3RwX2Fsb2NfYXNz
b2Moc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNvY2thZGRyICpmaXJzdGFkZHIsCiAJ
U0NUUF9PU19USU1FUl9JTklUKCZhc29jLT5hc2NvbmZfdGltZXIudGltZXIpOwogCVNDVFBfT1Nf
VElNRVJfSU5JVCgmYXNvYy0+c2h1dF9ndWFyZF90aW1lci50aW1lcik7CiAJU0NUUF9PU19USU1F
Ul9JTklUKCZhc29jLT5hdXRvY2xvc2VfdGltZXIudGltZXIpOwotCVNDVFBfT1NfVElNRVJfSU5J
VCgmYXNvYy0+ZGVsYXllZF9ldmVudF90aW1lci50aW1lcik7CiAJU0NUUF9PU19USU1FUl9JTklU
KCZhc29jLT5kZWxldGVfcHJpbV90aW1lci50aW1lcik7CiAKIAlMSVNUX0lOU0VSVF9IRUFEKCZp
bnAtPnNjdHBfYXNvY19saXN0LCBzdGNiLCBzY3RwX3RjYmxpc3QpOwpAQCAtNTE4OSw2ICs1MTU1
LDkgQEAgc2N0cF9hbG9jX2Fzc29jKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzb2Nr
YWRkciAqZmlyc3RhZGRyLAogCQkgICAgaW5wLT5zY3RwX2hhc2htYXJrKV07CiAJCUxJU1RfSU5T
RVJUX0hFQUQoaGVhZCwgc3RjYiwgc2N0cF90Y2JoYXNoKTsKIAl9CisJaWYgKGluaXRpYWxpemVf
YXV0aF9wYXJhbXMgPT0gU0NUUF9JTklUSUFMSVpFX0FVVEhfUEFSQU1TKSB7CisJCXNjdHBfaW5p
dGlhbGl6ZV9hdXRoX3BhcmFtcyhpbnAsIHN0Y2IpOworCX0KIAlTQ1RQX0lOUF9XVU5MT0NLKGlu
cCk7CiAJU0NUUERCRyhTQ1RQX0RFQlVHX1BDQjEsICJBc3NvY2lhdGlvbiAlcCBub3cgYWxsb2Nh
dGVkXG4iLCAodm9pZCAqKXN0Y2IpOwogCXJldHVybiAoc3RjYik7CkBAIC01MTk4LDggKzUxNjcs
MTAgQEAgc2N0cF9hbG9jX2Fzc29jKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzb2Nr
YWRkciAqZmlyc3RhZGRyLAogdm9pZAogc2N0cF9yZW1vdmVfbmV0KHN0cnVjdCBzY3RwX3RjYiAq
c3RjYiwgc3RydWN0IHNjdHBfbmV0cyAqbmV0KQogeworCXN0cnVjdCBzY3RwX2lucGNiICppbnA7
CiAJc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2M7CiAKKwlpbnAgPSBzdGNiLT5zY3RwX2Vw
OwogCWFzb2MgPSAmc3RjYi0+YXNvYzsKIAlhc29jLT5udW1uZXRzLS07CiAJVEFJTFFfUkVNT1ZF
KCZhc29jLT5uZXRzLCBuZXQsIHNjdHBfbmV4dCk7CkBAIC01MjQ3LDYgKzUyMTgsMTEgQEAgb3V0
OgogCQlzY3RwX2ZyZWVfcmVtb3RlX2FkZHIoc3RjYi0+YXNvYy5hbHRlcm5hdGUpOwogCQlzdGNi
LT5hc29jLmFsdGVybmF0ZSA9IE5VTEw7CiAJfQorCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVS
X1RZUEVfUEFUSE1UVVJBSVNFLCBpbnAsIHN0Y2IsIG5ldCwKKwkgICAgICAgICAgICAgICAgU0NU
UF9GUk9NX1NDVFBfUENCICsgU0NUUF9MT0NfOSk7CisJc2N0cF90aW1lcl9zdG9wKFNDVFBfVElN
RVJfVFlQRV9IRUFSVEJFQVQsIGlucCwgc3RjYiwgbmV0LAorCSAgICAgICAgICAgICAgICBTQ1RQ
X0ZST01fU0NUUF9QQ0IgKyBTQ1RQX0xPQ18xMCk7CisJbmV0LT5kZXN0X3N0YXRlIHw9IFNDVFBf
QUREUl9CRUlOR19ERUxFVEVEOwogCXNjdHBfZnJlZV9yZW1vdGVfYWRkcihuZXQpOwogfQogCkBA
IC01NDAwLDkgKzUzNzYsNiBAQCBzY3RwX2FkZF92dGFnX3RvX3RpbWV3YWl0KHVpbnQzMl90IHRh
ZywgdWludDMyX3QgdGltZSwgdWludDE2X3QgbHBvcnQsIHVpbnQxNl90CiAJCVNDVFBfTUFMTE9D
KHR3YWl0X2Jsb2NrLCBzdHJ1Y3Qgc2N0cF90YWdibG9jayAqLAogCQkgICAgc2l6ZW9mKHN0cnVj
dCBzY3RwX3RhZ2Jsb2NrKSwgU0NUUF9NX1RJTVcpOwogCQlpZiAodHdhaXRfYmxvY2sgPT0gTlVM
TCkgewotI2lmZGVmIElOVkFSSUFOVFMKLQkJCXBhbmljKCJDYW4gbm90IGFsbG9jIHRhZ2Jsb2Nr
Iik7Ci0jZW5kaWYKIAkJCXJldHVybjsKIAkJfQogCQltZW1zZXQodHdhaXRfYmxvY2ssIDAsIHNp
emVvZihzdHJ1Y3Qgc2N0cF90YWdibG9jaykpOwpAQCAtNTQ1NSwxMCArNTQyOCw2IEBAIHNjdHBf
Y2xlYW5fdXBfc3RyZWFtKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfcmVhZGhl
YWQgKnJoKQogCX0KIH0KIAotI2lmZGVmIF9fUGFuZGFfXwotdm9pZCBwYW5kYV93YWtldXBfc29j
a2V0KHN0cnVjdCBzb2NrZXQgKnNvKTsKLSNlbmRpZgotCiAvKi0KICAqIEZyZWUgdGhlIGFzc29j
aWF0aW9uIGFmdGVyIHVuLWhhc2hpbmcgdGhlIHJlbW90ZSBwb3J0LiBUaGlzCiAgKiBmdW5jdGlv
biBBTFdBWVMgcmV0dXJucyBob2xkaW5nIE5PIExPQ0sgb24gdGhlIHN0Y2IuIEl0IERPRVMKQEAg
LTU0ODQsNyArNTQ1Myw3IEBAIHNjdHBfZnJlZV9hc3NvYyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5w
LCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIGludCBmcm9tX2lucGNiZnJlCiAJc3RydWN0IHNvY2tl
dCAqc287CiAKIAkvKiBmaXJzdCwgbGV0cyBwdXJnZSB0aGUgZW50cnkgZnJvbSB0aGUgaGFzaCB0
YWJsZS4gKi8KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzY3RwX2xvY2tfYXNzZXJ0KFNDVFBfSU5QX1NP
KGlucCkpOwogI2VuZGlmCiAKQEAgLTU0OTgsMTcgKzU0NjcsMTggQEAgc2N0cF9mcmVlX2Fzc29j
KHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgaW50IGZyb21f
aW5wY2JmcmUKIAkJLyogdGhlcmUgaXMgbm8gYXNvYywgcmVhbGx5IFRTTkggOi0wICovCiAJCXJl
dHVybiAoMSk7CiAJfQorCVNDVFBfVENCX1NFTkRfTE9DSyhzdGNiKTsKIAlpZiAoc3RjYi0+YXNv
Yy5hbHRlcm5hdGUpIHsKIAkJc2N0cF9mcmVlX3JlbW90ZV9hZGRyKHN0Y2ItPmFzb2MuYWx0ZXJu
YXRlKTsKIAkJc3RjYi0+YXNvYy5hbHRlcm5hdGUgPSBOVUxMOwogCX0KLSNpZiAhZGVmaW5lZChf
X0FQUExFX18pIC8qIFRFTVA6IG1vdmVkIHRvIGJlbG93ICovCi0gICAgICAgIC8qIFRFTVAgQ09E
RSAqLworI2lmICEoZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
KQorCS8qIFRFTVAgQ09ERSAqLwogCWlmIChzdGNiLT5mcmVlZF9mcm9tX3doZXJlID09IDApIHsK
IAkJLyogT25seSByZWNvcmQgdGhlIGZpcnN0IHBsYWNlIGZyZWUgaGFwcGVuZWQgZnJvbSAqLwog
CQlzdGNiLT5mcmVlZF9mcm9tX3doZXJlID0gZnJvbV9sb2NhdGlvbjsKIAl9Ci0gICAgICAgIC8q
IFRFTVAgQ09ERSAqLworCS8qIFRFTVAgQ09ERSAqLwogI2VuZGlmCiAKIAlhc29jID0gJnN0Y2It
PmFzb2M7CkBAIC01NTM0LDYgKzU1MDQsNyBAQCBzY3RwX2ZyZWVfYXNzb2Moc3RydWN0IHNjdHBf
aW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLCBpbnQgZnJvbV9pbnBjYmZyZQogCQkJ
Lyogbm9wZSwgcmVhZGVyIG9yIHdyaXRlciBpbiB0aGUgd2F5ICovCiAJCQlzY3RwX3RpbWVyX3N0
YXJ0KFNDVFBfVElNRVJfVFlQRV9BU09DS0lMTCwgaW5wLCBzdGNiLCBOVUxMKTsKIAkJCS8qIG5v
IGFzb2MgZGVzdHJveWVkICovCisJCQlTQ1RQX1RDQl9TRU5EX1VOTE9DSyhzdGNiKTsKIAkJCVND
VFBfVENCX1VOTE9DSyhzdGNiKTsKICNpZmRlZiBTQ1RQX0xPR19DTE9TSU5HCiAJCQlzY3RwX2xv
Z19jbG9zaW5nKGlucCwgc3RjYiwgOCk7CkBAIC01NTQxLDQwICs1NTEyLDExIEBAIHNjdHBfZnJl
ZV9hc3NvYyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIGlu
dCBmcm9tX2lucGNiZnJlCiAJCQlyZXR1cm4gKDApOwogCQl9CiAJfQotCS8qIG5vdyBjbGVhbiB1
cCBhbnkgb3RoZXIgdGltZXJzICovCi0JKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCZhc29jLT5k
YWNrX3RpbWVyLnRpbWVyKTsKLQlhc29jLT5kYWNrX3RpbWVyLnNlbGYgPSBOVUxMOwotCSh2b2lk
KVNDVFBfT1NfVElNRVJfU1RPUCgmYXNvYy0+c3RycmVzZXRfdGltZXIudGltZXIpOwotCS8qLQot
CSAqIEZvciBzdHJlYW0gcmVzZXQgd2UgZG9uJ3QgYmxhc3QgdGhpcyB1bmxlc3MKLQkgKiBpdCBp
cyBhIHN0ci1yZXNldCB0aW1lciwgaXQgbWlnaHQgYmUgdGhlCi0JICogZnJlZS1hc29jIHRpbWVy
IHdoaWNoIHdlIERPTidUIHdhbnQgdG8KLQkgKiBkaXN0dXJiLgotCSAqLwotCWlmIChhc29jLT5z
dHJyZXNldF90aW1lci50eXBlID09IFNDVFBfVElNRVJfVFlQRV9TVFJSRVNFVCkKLQkJYXNvYy0+
c3RycmVzZXRfdGltZXIuc2VsZiA9IE5VTEw7Ci0JKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCZh
c29jLT5hc2NvbmZfdGltZXIudGltZXIpOwotCWFzb2MtPmFzY29uZl90aW1lci5zZWxmID0gTlVM
TDsKLQkodm9pZClTQ1RQX09TX1RJTUVSX1NUT1AoJmFzb2MtPmF1dG9jbG9zZV90aW1lci50aW1l
cik7Ci0JYXNvYy0+YXV0b2Nsb3NlX3RpbWVyLnNlbGYgPSBOVUxMOwotCSh2b2lkKVNDVFBfT1Nf
VElNRVJfU1RPUCgmYXNvYy0+c2h1dF9ndWFyZF90aW1lci50aW1lcik7Ci0JYXNvYy0+c2h1dF9n
dWFyZF90aW1lci5zZWxmID0gTlVMTDsKLQkodm9pZClTQ1RQX09TX1RJTUVSX1NUT1AoJmFzb2Mt
PmRlbGF5ZWRfZXZlbnRfdGltZXIudGltZXIpOwotCWFzb2MtPmRlbGF5ZWRfZXZlbnRfdGltZXIu
c2VsZiA9IE5VTEw7Ci0JLyogTW9iaWxpdHkgYWRhcHRhdGlvbiAqLwotCSh2b2lkKVNDVFBfT1Nf
VElNRVJfU1RPUCgmYXNvYy0+ZGVsZXRlX3ByaW1fdGltZXIudGltZXIpOwotCWFzb2MtPmRlbGV0
ZV9wcmltX3RpbWVyLnNlbGYgPSBOVUxMOwotCVRBSUxRX0ZPUkVBQ0gobmV0LCAmYXNvYy0+bmV0
cywgc2N0cF9uZXh0KSB7Ci0JCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmbmV0LT5yeHRfdGlt
ZXIudGltZXIpOwotCQluZXQtPnJ4dF90aW1lci5zZWxmID0gTlVMTDsKLQkJKHZvaWQpU0NUUF9P
U19USU1FUl9TVE9QKCZuZXQtPnBtdHVfdGltZXIudGltZXIpOwotCQluZXQtPnBtdHVfdGltZXIu
c2VsZiA9IE5VTEw7Ci0JCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmbmV0LT5oYl90aW1lci50
aW1lcik7Ci0JCW5ldC0+aGJfdGltZXIuc2VsZiA9IE5VTEw7Ci0JfQorCS8qIE5vdyBjbGVhbiB1
cCBhbnkgb3RoZXIgdGltZXJzICovCisJc2N0cF9zdG9wX2Fzc29jaWF0aW9uX3RpbWVycyhzdGNi
LCBmYWxzZSk7CiAJLyogTm93IHRoZSByZWFkIHF1ZXVlIG5lZWRzIHRvIGJlIGNsZWFuZWQgdXAg
KG9ubHkgb25jZSkgKi8KIAlpZiAoKHN0Y2ItPmFzb2Muc3RhdGUgJiBTQ1RQX1NUQVRFX0FCT1VU
X1RPX0JFX0ZSRUVEKSA9PSAwKSB7Ci0JCXN0Y2ItPmFzb2Muc3RhdGUgfD0gU0NUUF9TVEFURV9B
Qk9VVF9UT19CRV9GUkVFRDsKKwkJU0NUUF9BRERfU1VCU1RBVEUoc3RjYiwgU0NUUF9TVEFURV9B
Qk9VVF9UT19CRV9GUkVFRCk7CiAJCVNDVFBfSU5QX1JFQURfTE9DSyhpbnApOwogCQlUQUlMUV9G
T1JFQUNIKHNxLCAmaW5wLT5yZWFkX3F1ZXVlLCBuZXh0KSB7CiAJCQlpZiAoc3EtPnN0Y2IgPT0g
c3RjYikgewpAQCAtNTYyMSw5ICs1NTYzLDEwIEBAIHNjdHBfZnJlZV9hc3NvYyhzdHJ1Y3Qgc2N0
cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIGludCBmcm9tX2lucGNiZnJlCiAJ
CWlmICgoc3RjYi0+YXNvYy5yZWZjbnQpICB8fAogCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFND
VFBfUENCX0ZMQUdTX1NPQ0tFVF9BTExHT05FKSB8fAogCQkgICAgKGlucC0+c2N0cF9mbGFncyAm
IFNDVFBfUENCX0ZMQUdTX1NPQ0tFVF9HT05FKSkgewotCQkJc3RjYi0+YXNvYy5zdGF0ZSAmPSB+
U0NUUF9TVEFURV9JTl9BQ0NFUFRfUVVFVUU7CisJCQlTQ1RQX0NMRUFSX1NVQlNUQVRFKHN0Y2Is
IFNDVFBfU1RBVEVfSU5fQUNDRVBUX1FVRVVFKTsKIAkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9U
SU1FUl9UWVBFX0FTT0NLSUxMLCBpbnAsIHN0Y2IsIE5VTEwpOwogCQl9CisJCVNDVFBfVENCX1NF
TkRfVU5MT0NLKHN0Y2IpOwogCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CiAJCWlmICgoaW5wLT5z
Y3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfU09DS0VUX0FMTEdPTkUpIHx8CiAJCSAgICAoaW5w
LT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfU09DS0VUX0dPTkUpKQpAQCAtNTY2MiwxMCAr
NTYwNSwxMiBAQCBzY3RwX2ZyZWVfYXNzb2Moc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0
IHNjdHBfdGNiICpzdGNiLCBpbnQgZnJvbV9pbnBjYmZyZQogCWlmIChmcm9tX2lucGNiZnJlZSA9
PSBTQ1RQX05PUk1BTF9QUk9DKSB7CiAJCWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29jLnJlZmNu
dCwgMSk7CiAKKwkJU0NUUF9UQ0JfU0VORF9VTkxPQ0soc3RjYik7CiAJCVNDVFBfVENCX1VOTE9D
SyhzdGNiKTsKIAkJU0NUUF9JTlBfSU5GT19XTE9DSygpOwogCQlTQ1RQX0lOUF9XTE9DSyhpbnAp
OwogCQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOworCQlTQ1RQX1RDQl9TRU5EX0xPQ0soc3RjYik7CiAJ
fQogCS8qIERvdWJsZSBjaGVjayB0aGUgR09ORSBmbGFnICovCiAJaWYgKChpbnAtPnNjdHBfZmxh
Z3MgJiBTQ1RQX1BDQl9GTEFHU19TT0NLRVRfQUxMR09ORSkgfHwKQEAgLTU2ODQsMTMgKzU2Mjks
MTIgQEAgc2N0cF9mcmVlX2Fzc29jKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3Rw
X3RjYiAqc3RjYiwgaW50IGZyb21faW5wY2JmcmUKIAkJCWlucC0+c2N0cF9mbGFncyB8PSBTQ1RQ
X1BDQl9GTEFHU19XQVNfQ09OTkVDVEVEOwogCQkJaWYgKHNvKSB7CiAJCQkJU09DS0JVRl9MT0NL
KCZzby0+c29fcmN2KTsKLQkJCQlpZiAoc28tPnNvX3Jjdi5zYl9jYyA9PSAwKSB7Ci0JCQkJCXNv
LT5zb19zdGF0ZSAmPSB+KFNTX0lTQ09OTkVDVElORyB8Ci0JCQkJCQkJICBTU19JU0RJU0NPTk5F
Q1RJTkcgfAotCQkJCQkJCSAgU1NfSVNDT05GSVJNSU5HIHwKLQkJCQkJCQkgIFNTX0lTQ09OTkVD
VEVEKTsKLQkJCQl9Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pCisJCQkJc28tPnNvX3N0YXRlICY9
IH4oU1NfSVNDT05ORUNUSU5HIHwKKwkJCQkgICAgU1NfSVNESVNDT05ORUNUSU5HIHwKKwkJCQkg
ICAgU1NfSVNDT05GSVJNSU5HIHwKKwkJCQkgICAgU1NfSVNDT05ORUNURUQpOworCQkJCXNvLT5z
b19zdGF0ZSB8PSBTU19JU0RJU0NPTk5FQ1RFRDsKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQlzb2NhbnRyY3Ztb3JlKHNvKTsKICNlbHNlCiAJ
CQkJc29jYW50cmN2bW9yZV9sb2NrZWQoc28pOwpAQCAtNTcxMSwxMiArNTY1NSwxMyBAQCBzY3Rw
X2ZyZWVfYXNzb2Moc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNi
LCBpbnQgZnJvbV9pbnBjYmZyZQogCQlhdG9taWNfYWRkX2ludCgmc3RjYi0+YXNvYy5yZWZjbnQs
IC0xKTsKIAl9CiAJaWYgKHN0Y2ItPmFzb2MucmVmY250KSB7Ci0JCXN0Y2ItPmFzb2Muc3RhdGUg
Jj0gflNDVFBfU1RBVEVfSU5fQUNDRVBUX1FVRVVFOworCQlTQ1RQX0NMRUFSX1NVQlNUQVRFKHN0
Y2IsIFNDVFBfU1RBVEVfSU5fQUNDRVBUX1FVRVVFKTsKIAkJc2N0cF90aW1lcl9zdGFydChTQ1RQ
X1RJTUVSX1RZUEVfQVNPQ0tJTEwsIGlucCwgc3RjYiwgTlVMTCk7CiAJCWlmIChmcm9tX2lucGNi
ZnJlZSA9PSBTQ1RQX05PUk1BTF9QUk9DKSB7CiAJCQlTQ1RQX0lOUF9JTkZPX1dVTkxPQ0soKTsK
IAkJCVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsKIAkJfQorCQlTQ1RQX1RDQl9TRU5EX1VOTE9DSyhz
dGNiKTsKIAkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwogCQlyZXR1cm4gKDApOwogCX0KQEAgLTU3
NDEsMjAgKzU2ODYsOCBAQCBzY3RwX2ZyZWVfYXNzb2Moc3RydWN0IHNjdHBfaW5wY2IgKmlucCwg
c3RydWN0IHNjdHBfdGNiICpzdGNiLCBpbnQgZnJvbV9pbnBjYmZyZQogCS8qIE5vdyByZXN0b3Ag
dGhlIHRpbWVycyB0byBiZSBzdXJlCiAJICogdGhpcyBpcyBwYXJhbm9pYSBhdCBpcyBmaW5lc3Qh
CiAJICovCi0JKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCZhc29jLT5zdHJyZXNldF90aW1lci50
aW1lcik7Ci0JKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCZhc29jLT5kYWNrX3RpbWVyLnRpbWVy
KTsKLQkodm9pZClTQ1RQX09TX1RJTUVSX1NUT1AoJmFzb2MtPnN0cnJlc2V0X3RpbWVyLnRpbWVy
KTsKLQkodm9pZClTQ1RQX09TX1RJTUVSX1NUT1AoJmFzb2MtPmFzY29uZl90aW1lci50aW1lcik7
Ci0JKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCZhc29jLT5zaHV0X2d1YXJkX3RpbWVyLnRpbWVy
KTsKLQkodm9pZClTQ1RQX09TX1RJTUVSX1NUT1AoJmFzb2MtPmF1dG9jbG9zZV90aW1lci50aW1l
cik7Ci0JKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCZhc29jLT5kZWxheWVkX2V2ZW50X3RpbWVy
LnRpbWVyKTsKLQlUQUlMUV9GT1JFQUNIKG5ldCwgJmFzb2MtPm5ldHMsIHNjdHBfbmV4dCkgewot
CQkodm9pZClTQ1RQX09TX1RJTUVSX1NUT1AoJm5ldC0+cnh0X3RpbWVyLnRpbWVyKTsKLQkJKHZv
aWQpU0NUUF9PU19USU1FUl9TVE9QKCZuZXQtPnBtdHVfdGltZXIudGltZXIpOwotCQkodm9pZClT
Q1RQX09TX1RJTUVSX1NUT1AoJm5ldC0+aGJfdGltZXIudGltZXIpOwotCX0KLQotCWFzb2MtPnN0
cnJlc2V0X3RpbWVyLnR5cGUgPSBTQ1RQX1RJTUVSX1RZUEVfTk9ORTsKKwlzY3RwX3N0b3BfYXNz
b2NpYXRpb25fdGltZXJzKHN0Y2IsIHRydWUpOworCiAJLyoKIAkgKiBUaGUgY2h1bmsgbGlzdHMg
YW5kIHN1Y2ggU0hPVUxEIGJlIGVtcHR5IGJ1dCB3ZSBjaGVjayB0aGVtIGp1c3QKIAkgKiBpbiBj
YXNlLgpAQCAtNTc2OCw3ICs1NzAxLDcgQEAgc2N0cF9mcmVlX2Fzc29jKHN0cnVjdCBzY3RwX2lu
cGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgaW50IGZyb21faW5wY2JmcmUKIAkJVEFJ
TFFfRk9SRUFDSF9TQUZFKHNwLCAmb3V0cy0+b3V0cXVldWUsIG5leHQsIG5zcCkgewogCQkJYXRv
bWljX3N1YnRyYWN0X2ludCgmYXNvYy0+c3RyZWFtX3F1ZXVlX2NudCwgMSk7CiAJCQlUQUlMUV9S
RU1PVkUoJm91dHMtPm91dHF1ZXVlLCBzcCwgbmV4dCk7Ci0JCQlzdGNiLT5hc29jLnNzX2Z1bmN0
aW9ucy5zY3RwX3NzX3JlbW92ZV9mcm9tX3N0cmVhbShzdGNiLCBhc29jLCBvdXRzLCBzcCwgMCk7
CisJCQlzdGNiLT5hc29jLnNzX2Z1bmN0aW9ucy5zY3RwX3NzX3JlbW92ZV9mcm9tX3N0cmVhbShz
dGNiLCBhc29jLCBvdXRzLCBzcCwgMSk7CiAJCQlzY3RwX2ZyZWVfc3BidWZzcGFjZShzdGNiLCBh
c29jLCBzcCk7CiAJCQlpZiAoc3AtPmRhdGEpIHsKIAkJCQlpZiAoc28pIHsKQEAgLTU5OTEsNiAr
NTkyNCw3IEBAIHNjdHBfZnJlZV9hc3NvYyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qg
c2N0cF90Y2IgKnN0Y2IsIGludCBmcm9tX2lucGNiZnJlCiAJLyogSW5zZXJ0IG5ldyBpdGVtcyBo
ZXJlIDo+ICovCiAKIAkvKiBHZXQgcmlkIG9mIExPQ0sgKi8KKwlTQ1RQX1RDQl9TRU5EX1VOTE9D
SyhzdGNiKTsKIAlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CiAJU0NUUF9UQ0JfTE9DS19ERVNUUk9Z
KHN0Y2IpOwogCVNDVFBfVENCX1NFTkRfTE9DS19ERVNUUk9ZKHN0Y2IpOwpAQCAtNTk5OCw3ICs1
OTMyLDggQEAgc2N0cF9mcmVlX2Fzc29jKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBz
Y3RwX3RjYiAqc3RjYiwgaW50IGZyb21faW5wY2JmcmUKIAkJU0NUUF9JTlBfSU5GT19XVU5MT0NL
KCk7CiAJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJfQotI2lmIGRlZmluZWQoX19BUFBMRV9fKSAv
KiBURU1QIENPREUgKi8KKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKKwkvKiBURU1QIENPREUgKi8KIAlzdGNiLT5mcmVlZF9mcm9tX3doZXJlID0gZnJv
bV9sb2NhdGlvbjsKICNlbmRpZgogI2lmZGVmIFNDVFBfVFJBQ0tfRlJFRURfQVNPQ1MKQEAgLTYw
MzEsMTYgKzU5NjYsMTIgQEAgc2N0cF9mcmVlX2Fzc29jKHN0cnVjdCBzY3RwX2lucGNiICppbnAs
IHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgaW50IGZyb21faW5wY2JmcmUKIAkJCQkJU0NUUF9GUkVF
X1NIT1VMRF9VU0VfR1JBQ0VGVUxfQ0xPU0UsCiAJCQkJCVNDVFBfQ0FMTEVEX0RJUkVDVExZX05P
Q01QU0VUKTsKIAkJCVNDVFBfSU5QX0RFQ1JfUkVGKGlucCk7Ci0JCQlnb3RvIG91dF9vZjsKIAkJ
fSBlbHNlIHsKIAkJCS8qIFRoZSBzb2NrZXQgaXMgc3RpbGwgb3Blbi4gKi8KIAkJCVNDVFBfSU5Q
X0RFQ1JfUkVGKGlucCk7CisJCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CiAJCX0KIAl9Ci0JaWYg
KGZyb21faW5wY2JmcmVlID09IFNDVFBfTk9STUFMX1BST0MpIHsKLQkJU0NUUF9JTlBfUlVOTE9D
SyhpbnApOwotCX0KLSBvdXRfb2Y6CiAJLyogZGVzdHJveWVkIHRoZSBhc29jICovCiAjaWZkZWYg
U0NUUF9MT0dfQ0xPU0lORwogCXNjdHBfbG9nX2Nsb3NpbmcoaW5wLCBOVUxMLCAxMSk7CkBAIC02
MDg5LDIwICs2MDIwLDEyIEBAIHNjdHBfZGVzdGluYXRpb25faXNfcmVhY2hhYmxlKHN0cnVjdCBz
Y3RwX3RjYiAqc3RjYiwgc3RydWN0IHNvY2thZGRyICpkZXN0YWRkcikKIAlzd2l0Y2ggKGRlc3Rh
ZGRyLT5zYV9mYW1pbHkpIHsKICNpZmRlZiBJTkVUNgogCWNhc2UgQUZfSU5FVDY6Ci0jaWYgIShk
ZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dp
bmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkKLQkJYW5zd2VyID0gaW5wLT5pbnBf
dmZsYWcgJiBJTlBfSVBWNjsKLSNlbHNlCiAJCWFuc3dlciA9IGlucC0+aXBfaW5wLmlucC5pbnBf
dmZsYWcgJiBJTlBfSVBWNjsKLSNlbmRpZgogCQlicmVhazsKICNlbmRpZgogI2lmZGVmIElORVQK
IAljYXNlIEFGX0lORVQ6Ci0jaWYgIShkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9f
QVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9f
KSkKLQkJYW5zd2VyID0gaW5wLT5pbnBfdmZsYWcgJiBJTlBfSVBWNDsKLSNlbHNlCiAJCWFuc3dl
ciA9IGlucC0+aXBfaW5wLmlucC5pbnBfdmZsYWcgJiBJTlBfSVBWNDsKLSNlbmRpZgogCQlicmVh
azsKICNlbmRpZgogI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKQEAgLTYxMjcsMTEgKzYwNTAs
NyBAQCBzY3RwX3VwZGF0ZV9lcF92ZmxhZyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wKQogCXN0cnVj
dCBzY3RwX2xhZGRyICpsYWRkcjsKIAogCS8qIGZpcnN0IGNsZWFyIHRoZSBmbGFnICovCi0jaWYg
IShkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChf
X1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkKLQlpbnAtPmlucF92ZmxhZyA9
IDA7Ci0jZWxzZQogCWlucC0+aXBfaW5wLmlucC5pbnBfdmZsYWcgPSAwOwotI2VuZGlmCiAJLyog
c2V0IHRoZSBmbGFnIGJhc2VkIG9uIGFkZHJlc3NlcyBvbiB0aGUgZXAgbGlzdCAqLwogCUxJU1Rf
Rk9SRUFDSChsYWRkciwgJmlucC0+c2N0cF9hZGRyX2xpc3QsIHNjdHBfbnh0X2FkZHIpIHsKIAkJ
aWYgKGxhZGRyLT5pZmEgPT0gTlVMTCkgewpAQCAtNjE0NiwyMCArNjA2NSwxMiBAQCBzY3RwX3Vw
ZGF0ZV9lcF92ZmxhZyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wKQogCQlzd2l0Y2ggKGxhZGRyLT5p
ZmEtPmFkZHJlc3Muc2Euc2FfZmFtaWx5KSB7CiAjaWZkZWYgSU5FVDYKIAkJY2FzZSBBRl9JTkVU
NjoKLSNpZiAhKGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBk
ZWZpbmVkKF9fV2luZG93c19fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pKQotCQkJaW5wLT5p
bnBfdmZsYWcgfD0gSU5QX0lQVjY7Ci0jZWxzZQogCQkJaW5wLT5pcF9pbnAuaW5wLmlucF92Zmxh
ZyB8PSBJTlBfSVBWNjsKLSNlbmRpZgogCQkJYnJlYWs7CiAjZW5kaWYKICNpZmRlZiBJTkVUCiAJ
CWNhc2UgQUZfSU5FVDoKLSNpZiAhKGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19B
UFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18p
KQotCQkJaW5wLT5pbnBfdmZsYWcgfD0gSU5QX0lQVjQ7Ci0jZWxzZQogCQkJaW5wLT5pcF9pbnAu
aW5wLmlucF92ZmxhZyB8PSBJTlBfSVBWNDsKLSNlbmRpZgogCQkJYnJlYWs7CiAjZW5kaWYKICNp
ZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCkBAIC02MjE2LDIwICs2MTI3LDEyIEBAIHNjdHBfYWRk
X2xvY2FsX2FkZHJfZXAoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfaWZhICpp
ZmEsIHVpbnQzMl90IGFjCiAJCXN3aXRjaCAoaWZhLT5hZGRyZXNzLnNhLnNhX2ZhbWlseSkgewog
I2lmZGVmIElORVQ2CiAJCWNhc2UgQUZfSU5FVDY6Ci0jaWYgIShkZWZpbmVkKF9fRnJlZUJTRF9f
KSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKSkKLQkJCWlucC0+aW5wX3ZmbGFnIHw9IElOUF9JUFY2OwotI2Vsc2UK
IAkJCWlucC0+aXBfaW5wLmlucC5pbnBfdmZsYWcgfD0gSU5QX0lQVjY7Ci0jZW5kaWYKIAkJCWJy
ZWFrOwogI2VuZGlmCiAjaWZkZWYgSU5FVAogCQljYXNlIEFGX0lORVQ6Ci0jaWYgIShkZWZpbmVk
KF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3Nf
XykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkKLQkJCWlucC0+aW5wX3ZmbGFnIHw9IElOUF9J
UFY0OwotI2Vsc2UKIAkJCWlucC0+aXBfaW5wLmlucC5pbnBfdmZsYWcgfD0gSU5QX0lQVjQ7Ci0j
ZW5kaWYKIAkJCWJyZWFrOwogI2VuZGlmCiAjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQpAQCAt
NjMyMyw2ICs2MjI2LDkgQEAgc2N0cF9kZWxfbG9jYWxfYWRkcl9lcChzdHJ1Y3Qgc2N0cF9pbnBj
YiAqaW5wLCBzdHJ1Y3Qgc2N0cF9pZmEgKmlmYSkKIAkJCVRBSUxRX0ZPUkVBQ0gobmV0LCAmc3Rj
Yi0+YXNvYy5uZXRzLCBzY3RwX25leHQpIHsKIAkJCQlpZiAobmV0LT5yby5fc19hZGRyID09IGxh
ZGRyLT5pZmEpIHsKIAkJCQkJLyogWWVwLCBwdXJnZSBzcmMgYWRkcmVzcyBzZWxlY3RlZCAqLwor
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQkJ
CVJPX05IRlJFRSgmbmV0LT5ybyk7CisjZWxzZQogCQkJCQlzY3RwX3J0ZW50cnlfdCAqcnQ7CiAK
IAkJCQkJLyogZGVsZXRlIHRoaXMgYWRkcmVzcyBpZiBjYWNoZWQgKi8KQEAgLTYzMzEsNiArNjIz
Nyw3IEBAIHNjdHBfZGVsX2xvY2FsX2FkZHJfZXAoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3Ry
dWN0IHNjdHBfaWZhICppZmEpCiAJCQkJCQlSVEZSRUUocnQpOwogCQkJCQkJbmV0LT5yby5yb19y
dCA9IE5VTEw7CiAJCQkJCX0KKyNlbmRpZgogCQkJCQlzY3RwX2ZyZWVfaWZhKG5ldC0+cm8uX3Nf
YWRkcik7CiAJCQkJCW5ldC0+cm8uX3NfYWRkciA9IE5VTEw7CiAJCQkJCW5ldC0+c3JjX2FkZHJf
c2VsZWN0ZWQgPSAwOwpAQCAtNjQyNiwyMCArNjMzMywxNyBAQCBzY3RwX2RlbF9sb2NhbF9hZGRy
X3Jlc3RyaWN0ZWQoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9pZmEgKmlmYSkK
IAlyZXR1cm47CiB9CiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQotLyoKLSAqIFRlbXBvcmFy
aWx5IHJlbW92ZSBmb3IgX19BUFBMRV9fIHVudGlsIHdlIHVzZSB0aGUgVGlnZXIgZXF1aXZhbGVu
dHMKLSAqLworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAvKiBzeXNjdGwgKi8KIHN0YXRpYyBpbnQgc2N0cF9tYXhfbnVtYmVyX29mX2Fzc29jID0g
U0NUUF9NQVhfTlVNX09GX0FTT0M7CiBzdGF0aWMgaW50IHNjdHBfc2NhbGVfdXBfZm9yX2FkZHJl
c3MgPSBTQ1RQX1NDQUxFX0ZPUl9BRERSOwotI2VuZGlmCQkJCS8qIEZyZWVCU0QgfHwgQVBQTEUg
Ki8KLQotCisjZW5kaWYKIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIGRlZmluZWQoU0NU
UF9NQ09SRV9JTlBVVCkgJiYgZGVmaW5lZChTTVApCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiBkZWZpbmVkKFNDVFBfTUNPUkVfSU5QVVQp
ICYmIGRlZmluZWQoU01QKQogc3RydWN0IHNjdHBfbWNvcmVfY3RybCAqc2N0cF9tY29yZV93b3Jr
ZXJzID0gTlVMTDsKIGludCAqc2N0cF9jcHVhcnJ5ID0gTlVMTDsKKwogdm9pZAogc2N0cF9xdWV1
ZV90b19tY29yZShzdHJ1Y3QgbWJ1ZiAqbSwgaW50IG9mZiwgaW50IGNwdV90b191c2UpCiB7CkBA
IC02NDQ3LDYgKzYzNTEsNyBAQCBzY3RwX3F1ZXVlX3RvX21jb3JlKHN0cnVjdCBtYnVmICptLCBp
bnQgb2ZmLCBpbnQgY3B1X3RvX3VzZSkKIAlzdHJ1Y3Qgc2N0cF9tY29yZV9xdWV1ZSAqcWVudDsK
IAlzdHJ1Y3Qgc2N0cF9tY29yZV9jdHJsICp3a3E7CiAJaW50IG5lZWRfd2FrZSA9IDA7CisKIAlp
ZiAoc2N0cF9tY29yZV93b3JrZXJzID09IE5VTEwpIHsKIAkJLyogU29tZXRoaW5nIHdlbnQgd2F5
IGJhZCBkdXJpbmcgc2V0dXAgKi8KIAkJc2N0cF9pbnB1dF93aXRoX3BvcnQobSwgb2ZmLCAwKTsK
QEAgLTY0NjAsOSArNjM2NSw3IEBAIHNjdHBfcXVldWVfdG9fbWNvcmUoc3RydWN0IG1idWYgKm0s
IGludCBvZmYsIGludCBjcHVfdG9fdXNlKQogCQlzY3RwX2lucHV0X3dpdGhfcG9ydChtLCBvZmYs
IDApOwogCQlyZXR1cm47CiAJfQotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJT
RF92ZXJzaW9uID49IDgwMTAwMAogCXFlbnQtPnZuID0gY3Vydm5ldDsKLSNlbmRpZgogCXFlbnQt
Pm0gPSBtOwogCXFlbnQtPm9mZiA9IG9mZjsKIAlxZW50LT52NiA9IDA7CkBAIC02NTE0LDkgKzY0
MTcsNyBAQCBzY3RwX21jb3JlX3RocmVhZCh2b2lkICphcmcpCiAJCWlmIChxZW50KSB7CiAJCQlU
QUlMUV9SRU1PVkUoJndrcS0+cXVlLCBxZW50LCBuZXh0KTsKIAkJCVNDVFBfTUNPUkVfUVVOTE9D
Syh3a3EpOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49
IDgwMTAwMAogCQkJQ1VSVk5FVF9TRVQocWVudC0+dm4pOwotI2VuZGlmCiAJCQltID0gcWVudC0+
bTsKIAkJCW9mZiA9IHFlbnQtPm9mZjsKIAkJCXY2ID0gcWVudC0+djY7CkBAIC02NTI3LDkgKzY0
MjgsNyBAQCBzY3RwX21jb3JlX3RocmVhZCh2b2lkICphcmcpCiAJCQkJU0NUUF9QUklOVEYoIlY2
IG5vdCB5ZXQgc3VwcG9ydGVkXG4iKTsKIAkJCQlzY3RwX21fZnJlZW0obSk7CiAJCQl9Ci0jaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAxMDAwCiAJCQlD
VVJWTkVUX1JFU1RPUkUoKTsKLSNlbmRpZgogCQkJU0NUUF9NQ09SRV9RTE9DSyh3a3EpOwogCQl9
CiAJCXdrcS0+cnVubmluZyA9IDA7CkBAIC02NTgzLDMwICs2NDgyLDIxIEBAIHNjdHBfc3RhcnR1
cF9tY29yZV90aHJlYWRzKHZvaWQpCiAJCQlpKys7CiAJCX0KIAl9Ci0KIAkvKiBOb3cgc3RhcnQg
dGhlbSBhbGwgKi8KIAlDUFVfRk9SRUFDSChjcHUpIHsKLSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA8
PSA3MDEwMDAKLQkJKHZvaWQpa3RocmVhZF9jcmVhdGUoc2N0cF9tY29yZV90aHJlYWQsCi0JCQkJ
ICAgICAodm9pZCAqKSZzY3RwX21jb3JlX3dvcmtlcnNbY3B1XSwKLQkJCQkgICAgICZzY3RwX21j
b3JlX3dvcmtlcnNbY3B1XS50aHJlYWRfcHJvYywKLQkJCQkgICAgIFJGUFJPQywKLQkJCQkgICAg
IFNDVFBfS1RIUkVBRF9QQUdFUywKLQkJCQkgICAgIFNDVFBfTUNPUkVfTkFNRSk7Ci0KLSNlbHNl
CiAJCSh2b2lkKWtwcm9jX2NyZWF0ZShzY3RwX21jb3JlX3RocmVhZCwKIAkJCQkgICAodm9pZCAq
KSZzY3RwX21jb3JlX3dvcmtlcnNbY3B1XSwKIAkJCQkgICAmc2N0cF9tY29yZV93b3JrZXJzW2Nw
dV0udGhyZWFkX3Byb2MsCiAJCQkJICAgUkZQUk9DLAogCQkJCSAgIFNDVFBfS1RIUkVBRF9QQUdF
UywKIAkJCQkgICBTQ1RQX01DT1JFX05BTUUpOwotI2VuZGlmCi0KIAl9CiB9CiAjZW5kaWYKLSNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfY2NfdmVyc2lvbiA+PSAxMzAwMDAw
CisjZW5kaWYKKworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCisjaWYgZGVmaW5lZChTQ1RQX05PVF9ZRVQpCiBzdGF0aWMgc3RydWN0IG1idWYgKgog
c2N0cF9uZXRpc3JfaGRscihzdHJ1Y3QgbWJ1ZiAqbSwgdWludHB0cl90IHNvdXJjZSkKIHsKQEAg
LTY2MzIsMTQgKzY1MjIsMTkgQEAgc2N0cF9uZXRpc3JfaGRscihzdHJ1Y3QgbWJ1ZiAqbSwgdWlu
dHB0cl90IHNvdXJjZSkKIAl0YWcgPSBodG9ubChzaC0+dl90YWcpOwogCWZsb3dpZCA9IHRhZyBe
IG50b2hzKHNoLT5kZXN0X3BvcnQpIF4gbnRvaHMoc2gtPnNyY19wb3J0KTsKIAltLT5tX3BrdGhk
ci5mbG93aWQgPSBmbG93aWQ7Ci0vKiBGSVggTUUgKi8KKwkvKiBGSVggTUUgKi8KIAltLT5tX2Zs
YWdzIHw9IE1fRkxPV0lEOwogCXJldHVybiAobSk7CiB9Ci0jZW5kaWYKIAorI2VuZGlmCisjZW5k
aWYKIHZvaWQKLXNjdHBfcGNiX2luaXQoKQorI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKK3Nj
dHBfcGNiX2luaXQoaW50IHN0YXJ0X3RocmVhZHMpCisjZWxzZQorc2N0cF9wY2JfaW5pdCh2b2lk
KQorI2VuZGlmCiB7CiAJLyoKIAkgKiBTQ1RQIGluaXRpYWxpemF0aW9uIGZvciB0aGUgUENCIHN0
cnVjdHVyZXMgc2hvdWxkIGJlIGNhbGxlZCBieQpAQCAtNjY1NSw3ICs2NTUwLDcgQEAgc2N0cF9w
Y2JfaW5pdCgpCiAJU0NUUF9CQVNFX1ZBUihzY3RwX3BjYl9pbml0aWFsaXplZCkgPSAxOwogCiAj
aWYgZGVmaW5lZChTQ1RQX1BST0NFU1NfTEVWRUxfTE9DS1MpCi0jaWYgIWRlZmluZWQoX19Vc2Vy
c3BhY2Vfb3NfV2luZG93cykKKyNpZiAhZGVmaW5lZChfV0lOMzIpCiAJcHRocmVhZF9tdXRleGF0
dHJfaW5pdCgmU0NUUF9CQVNFX1ZBUihtdHhfYXR0cikpOwogI2lmZGVmIElOVkFSSUFOVFMKIAlw
dGhyZWFkX211dGV4YXR0cl9zZXR0eXBlKCZTQ1RQX0JBU0VfVkFSKG10eF9hdHRyKSwgUFRIUkVB
RF9NVVRFWF9FUlJPUkNIRUNLKTsKQEAgLTY2NjMsNyArNjU1OCw3IEBAIHNjdHBfcGNiX2luaXQo
KQogI2VuZGlmCiAjZW5kaWYKICNpZiBkZWZpbmVkKFNDVFBfTE9DQUxfVFJBQ0VfQlVGKQotI2lm
IGRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAJaWYgKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9sb2cpICE9IE5VTEwpIHsK
IAkJbWVtc2V0KFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9sb2cpLCAwLCBzaXplb2Yoc3RydWN0IHNj
dHBfbG9nKSk7CiAJfQpAQCAtNjY3MSwxNiArNjU2NiwyNCBAQCBzY3RwX3BjYl9pbml0KCkKIAlt
ZW1zZXQoJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9sb2cpLCAwLCBzaXplb2Yoc3RydWN0IHNjdHBf
bG9nKSk7CiAjZW5kaWYKICNlbmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIGRlZmlu
ZWQoU01QKSAmJiBkZWZpbmVkKFNDVFBfVVNFX1BFUkNQVV9TVEFUKQorI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaWYgZGVmaW5lZChTTVApICYm
IGRlZmluZWQoU0NUUF9VU0VfUEVSQ1BVX1NUQVQpCiAJU0NUUF9NQUxMT0MoU0NUUF9CQVNFX1NU
QVRTLCBzdHJ1Y3Qgc2N0cHN0YXQgKiwKIAkJICAgICgobXBfbWF4aWQrMSkgKiBzaXplb2Yoc3Ry
dWN0IHNjdHBzdGF0KSksCiAJCSAgICBTQ1RQX01fTUNPUkUpOworI2VuZGlmCiAjZW5kaWYKIAko
dm9pZClTQ1RQX0dFVFRJTUVfVElNRVZBTCgmdHYpOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
ICYmIGRlZmluZWQoU01QKSAmJiBkZWZpbmVkKFNDVFBfVVNFX1BFUkNQVV9TVEFUKQorI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaWYgZGVmaW5l
ZChTTVApICYmIGRlZmluZWQoU0NUUF9VU0VfUEVSQ1BVX1NUQVQpCiAJbWVtc2V0KFNDVFBfQkFT
RV9TVEFUUywgMCwgc2l6ZW9mKHN0cnVjdCBzY3Rwc3RhdCkgKiAobXBfbWF4aWQrMSkpOwogCVND
VFBfQkFTRV9TVEFUU1tQQ1BVX0dFVChjcHVpZCldLnNjdHBzX2Rpc2NvbnRpbnVpdHl0aW1lLnR2
X3NlYyA9ICh1aW50MzJfdCl0di50dl9zZWM7CiAJU0NUUF9CQVNFX1NUQVRTW1BDUFVfR0VUKGNw
dWlkKV0uc2N0cHNfZGlzY29udGludWl0eXRpbWUudHZfdXNlYyA9ICh1aW50MzJfdCl0di50dl91
c2VjOworI2Vsc2UKKwltZW1zZXQoJlNDVFBfQkFTRV9TVEFUUywgMCwgc2l6ZW9mKHN0cnVjdCBz
Y3Rwc3RhdCkpOworCVNDVFBfQkFTRV9TVEFUKHNjdHBzX2Rpc2NvbnRpbnVpdHl0aW1lKS50dl9z
ZWMgPSAodWludDMyX3QpdHYudHZfc2VjOworCVNDVFBfQkFTRV9TVEFUKHNjdHBzX2Rpc2NvbnRp
bnVpdHl0aW1lKS50dl91c2VjID0gKHVpbnQzMl90KXR2LnR2X3VzZWM7CisjZW5kaWYKICNlbHNl
CiAJbWVtc2V0KCZTQ1RQX0JBU0VfU1RBVFMsIDAsIHNpemVvZihzdHJ1Y3Qgc2N0cHN0YXQpKTsK
IAlTQ1RQX0JBU0VfU1RBVChzY3Rwc19kaXNjb250aW51aXR5dGltZSkudHZfc2VjID0gKHVpbnQz
Ml90KXR2LnR2X3NlYzsKQEAgLTY2ODgsNyArNjU5MSw3IEBAIHNjdHBfcGNiX2luaXQoKQogI2Vu
ZGlmCiAJLyogaW5pdCB0aGUgZW1wdHkgbGlzdCBvZiAoQWxsKSBFbmRwb2ludHMgKi8KIAlMSVNU
X0lOSVQoJlNDVFBfQkFTRV9JTkZPKGxpc3RoZWFkKSk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18p
CisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJTElT
VF9JTklUKCZTQ1RQX0JBU0VfSU5GTyhpbnBsaXN0aGVhZCkpOwogI2lmIGRlZmluZWQoQVBQTEVf
TEVPUEFSRCkgfHwgZGVmaW5lZChBUFBMRV9TTk9XTEVPUEFSRCkgfHwgZGVmaW5lZChBUFBMRV9M
SU9OKSB8fCBkZWZpbmVkKEFQUExFX01PVU5UQUlOTElPTikKIAlTQ1RQX0JBU0VfSU5GTyhzY3Ri
aW5mbykubGlzdGhlYWQgPSAmU0NUUF9CQVNFX0lORk8oaW5wbGlzdGhlYWQpOwpAQCAtNjcxMywx
OSArNjYxNiwxMCBAQCBzY3RwX3BjYl9pbml0KCkKIAogCiAJLyogaW5pdCB0aGUgaGFzaCB0YWJs
ZSBvZiBlbmRwb2ludHMgKi8KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQotI2lmIGRlZmluZWQo
X19GcmVlQlNEX2NjX3ZlcnNpb24pICYmIF9fRnJlZUJTRF9jY192ZXJzaW9uID49IDQ0MDAwMAor
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJVFVO
QUJMRV9JTlRfRkVUQ0goIm5ldC5pbmV0LnNjdHAudGNiaGFzaHNpemUiLCAmU0NUUF9CQVNFX1NZ
U0NUTChzY3RwX2hhc2h0YmxzaXplKSk7CiAJVFVOQUJMRV9JTlRfRkVUQ0goIm5ldC5pbmV0LnNj
dHAucGNiaGFzaHNpemUiLCAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3BjYnRibHNpemUpKTsKIAlU
VU5BQkxFX0lOVF9GRVRDSCgibmV0LmluZXQuc2N0cC5jaHVua3NjYWxlIiwgJlNDVFBfQkFTRV9T
WVNDVEwoc2N0cF9jaHVua3NjYWxlKSk7Ci0jZWxzZQotCVRVTkFCTEVfSU5UX0ZFVENIKCJuZXQu
aW5ldC5zY3RwLnRjYmhhc2hzaXplIiwgU0NUUF9UQ0JIQVNIU0laRSwKLQkJCSAgU0NUUF9CQVNF
X1NZU0NUTChzY3RwX2hhc2h0YmxzaXplKSk7Ci0JVFVOQUJMRV9JTlRfRkVUQ0goIm5ldC5pbmV0
LnNjdHAucGNiaGFzaHNpemUiLCBTQ1RQX1BDQkhBU0hTSVpFLAotCQkJICBTQ1RQX0JBU0VfU1lT
Q1RMKHNjdHBfcGNidGJsc2l6ZSkpOwotCVRVTkFCTEVfSU5UX0ZFVENIKCJuZXQuaW5ldC5zY3Rw
LmNodW5rc2NhbGUiLCBTQ1RQX0NIVU5LUVVFVUVfU0NBTEUsCi0JCQkgIFNDVFBfQkFTRV9TWVND
VEwoc2N0cF9jaHVua3NjYWxlKSk7Ci0jZW5kaWYKICNlbmRpZgogCVNDVFBfQkFTRV9JTkZPKHNj
dHBfYXNvY2hhc2gpID0gU0NUUF9IQVNIX0lOSVQoKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9oYXNo
dGJsc2l6ZSkgKiAzMSksCiAJCQkJCQkgICAgICAgJlNDVFBfQkFTRV9JTkZPKGhhc2hhc29jbWFy
aykpOwpAQCAtNjgyMCw3ICs2NzE0LDcgQEAgc2N0cF9wY2JfaW5pdCgpCiAJCUxJU1RfSU5JVCgm
U0NUUF9CQVNFX0lORk8odnRhZ190aW1ld2FpdClbaV0pOwogCX0KICNpZiBkZWZpbmVkKFNDVFBf
UFJPQ0VTU19MRVZFTF9MT0NLUykKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3Mp
CisjaWYgZGVmaW5lZChfV0lOMzIpCiAJSW5pdGlhbGl6ZUNvbmRpdGlvblZhcmlhYmxlKCZzY3Rw
X2l0X2N0bC5pdGVyYXRvcl93YWtldXApOwogI2Vsc2UKIAkodm9pZClwdGhyZWFkX2NvbmRfaW5p
dCgmc2N0cF9pdF9jdGwuaXRlcmF0b3Jfd2FrZXVwLCBOVUxMKTsKQEAgLTY4MjgsMTkgKzY3MjIs
MTkgQEAgc2N0cF9wY2JfaW5pdCgpCiAjZW5kaWYKIAlzY3RwX3N0YXJ0dXBfaXRlcmF0b3IoKTsK
IAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIGRlZmluZWQoU0NUUF9NQ09SRV9JTlBVVCkg
JiYgZGVmaW5lZChTTVApCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKKyNpZiBkZWZpbmVkKFNDVFBfTUNPUkVfSU5QVVQpICYmIGRlZmluZWQoU01Q
KQogCXNjdHBfc3RhcnR1cF9tY29yZV90aHJlYWRzKCk7CisjZW5kaWYKICNlbmRpZgogCi0jaWZu
ZGVmIF9fUGFuZGFfXwogCS8qCiAJICogSU5JVCB0aGUgZGVmYXVsdCBWUkYgd2hpY2ggZm9yIEJT
RCBpcyB0aGUgb25seSBvbmUsIG90aGVyIE8vUydzCiAJICogbWF5IGhhdmUgbW9yZS4gQnV0IGlu
aXRpYWxseSB0aGV5IG11c3Qgc3RhcnQgd2l0aCBvbmUgYW5kIHRoZW4KIAkgKiBhZGQgdGhlIFZS
RidzIGFzIGFkZHJlc3NlcyBhcmUgYWRkZWQuCiAJICovCiAJc2N0cF9pbml0X3ZyZl9saXN0KFND
VFBfREVGQVVMVF9WUkYpOwotI2VuZGlmCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19G
cmVlQlNEX2NjX3ZlcnNpb24gPj0gMTMwMDAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pICYmIGRlZmluZWQoU0NUUF9OT1RfWUVUKQogCWlmIChp
cF9yZWdpc3Rlcl9mbG93X2hhbmRsZXIoc2N0cF9uZXRpc3JfaGRsciwgSVBQUk9UT19TQ1RQKSkg
ewogCQlTQ1RQX1BSSU5URigiKioqU0NUUC0gRXJyb3IgY2FuJ3QgcmVnaXN0ZXIgbmV0aXNyIGhh
bmRsZXIqKipcbiIpOwogCX0KQEAgLTY4NTIsOCArNjc0NiwxMSBAQCBzY3RwX3BjYl9pbml0KCkK
ICNlbmRpZgogI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAltYnVmX2luaXRpYWxpemUoTlVM
TCk7CisgICAgLy8gV2ViS2l0IGNoYW5nZSwgdGhpcyBjb25mbGljdHMgd2l0aCBhdG9taWNfaW5p
dAorCS8vIGF0b21pY19pbml0KCk7CiAjaWYgZGVmaW5lZChJTkVUKSB8fCBkZWZpbmVkKElORVQ2
KQotCXJlY3ZfdGhyZWFkX2luaXQoKTsKKwlpZiAoc3RhcnRfdGhyZWFkcykKKwkJcmVjdl90aHJl
YWRfaW5pdCgpOwogI2VuZGlmCiAjZW5kaWYKIH0KQEAgLTY4NzksMTQgKzY3NzYsMTQgQEAgc2N0
cF9wY2JfZmluaXNoKHZvaWQpCiAJCXJldHVybjsKIAl9CiAJU0NUUF9CQVNFX1ZBUihzY3RwX3Bj
Yl9pbml0aWFsaXplZCkgPSAwOwotI2lmICFkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmICEoZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAJLyogTm90aWZ5
IHRoZSBpdGVyYXRvciB0byBleGl0LiAqLwogCVNDVFBfSVBJX0lURVJBVE9SX1dRX0xPQ0soKTsK
IAlzY3RwX2l0X2N0bC5pdGVyYXRvcl9mbGFncyB8PSBTQ1RQX0lURVJBVE9SX01VU1RfRVhJVDsK
IAlzY3RwX3dha2V1cF9pdGVyYXRvcigpOwogCVNDVFBfSVBJX0lURVJBVE9SX1dRX1VOTE9DSygp
OwogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaWYgIWRlZmluZWQoQVBQTEVfTEVPUEFSRCkg
JiYgIWRlZmluZWQoQVBQTEVfU05PV0xFT1BBUkQpICYmICFkZWZpbmVkKEFQUExFX0xJT04pICYm
ICFkZWZpbmVkKEFQUExFX01PVU5UQUlOTElPTikKIAlpbl9wY2JpbmZvX2RldGFjaCgmU0NUUF9C
QVNFX0lORk8oc2N0YmluZm8pKTsKICNlbmRpZgpAQCAtNjg5OSw3ICs2Nzk2LDcgQEAgc2N0cF9w
Y2JfZmluaXNoKHZvaWQpCiAJdGhyZWFkX2RlYWxsb2NhdGUoc2N0cF9pdF9jdGwudGhyZWFkX3By
b2MpOwogCVNDVFBfSVBJX0lURVJBVE9SX1dRX1VOTE9DSygpOwogI2VuZGlmCi0jaWYgZGVmaW5l
ZChfX1dpbmRvd3NfXykKKyNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKIAlpZiAoc2N0cF9pdF9jdGwuaXRlcmF0b3JfdGhyZWFkX29iaiAhPSBOVUxMKSB7CiAJ
CU5UU1RBVFVTIHN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOwogCkBAIC02OTEzLDggKzY4MTAsOCBA
QCBzY3RwX3BjYl9maW5pc2godm9pZCkKIAl9CiAjZW5kaWYKICNpZiBkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCi0JaWYgKHNjdHBfaXRfY3RsLnRocmVhZF9wcm9jKSB7Ci0jaWYgZGVmaW5lZChfX1Vz
ZXJzcGFjZV9vc19XaW5kb3dzKQorCWlmIChTQ1RQX0JBU0VfVkFSKGl0ZXJhdG9yX3RocmVhZF9z
dGFydGVkKSkgeworI2lmIGRlZmluZWQoX1dJTjMyKQogCQlXYWl0Rm9yU2luZ2xlT2JqZWN0KHNj
dHBfaXRfY3RsLnRocmVhZF9wcm9jLCBJTkZJTklURSk7CiAJCUNsb3NlSGFuZGxlKHNjdHBfaXRf
Y3RsLnRocmVhZF9wcm9jKTsKIAkJc2N0cF9pdF9jdGwudGhyZWFkX3Byb2MgPSBOVUxMOwpAQCAt
NjkyNSw3ICs2ODIyLDcgQEAgc2N0cF9wY2JfZmluaXNoKHZvaWQpCiAJfQogI2VuZGlmCiAjaWYg
ZGVmaW5lZChTQ1RQX1BST0NFU1NfTEVWRUxfTE9DS1MpCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFj
ZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogCURlbGV0ZUNvbmRpdGlvblZhcmlh
YmxlKCZzY3RwX2l0X2N0bC5pdGVyYXRvcl93YWtldXApOwogI2Vsc2UKIAlwdGhyZWFkX2NvbmRf
ZGVzdHJveSgmc2N0cF9pdF9jdGwuaXRlcmF0b3Jfd2FrZXVwKTsKQEAgLTY5MzcsMTcgKzY4MzQs
MTcgQEAgc2N0cF9wY2JfZmluaXNoKHZvaWQpCiAJICogVGhlIG9ubHkgd2F5IEZyZWVCU0QgcmVh
Y2hlcyBoZXJlIGlzIGlmIHdlIGhhdmUgVlJGJ3MKIAkgKiBidXQgd2Ugc3RpbGwgYWRkIHRoZSBp
ZmRlZiB0byBtYWtlIGl0IGNvbXBpbGUgb24gb2xkIHZlcnNpb25zLgogCSAqLwotI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKIHJldHJ5OgogI2VuZGlmCiAJU0NUUF9JUElfSVRFUkFUT1JfV1FfTE9DSygp
OwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkvKgogCSAqIHNjdHBfaXRlcmF0b3Jfd29ya2VyKCkg
bWlnaHQgYmUgd29ya2luZyBvbiBhbiBpdCBlbnRyeSB3aXRob3V0CiAJICogaG9sZGluZyB0aGUg
bG9jay4gIFdlIHdvbid0IGZpbmQgaXQgb24gdGhlIGxpc3QgZWl0aGVyIGFuZAogCSAqIGNvbnRp
bnVlIGFuZCBmcmVlL2Rlc3Ryb3kgaXQuICBXaGlsZSBob2xkaW5nIHRoZSBsb2NrLCBzcGluLCB0
bwogCSAqIGF2b2lkIHRoZSByYWNlIGNvbmRpdGlvbiBhcyBzY3RwX2l0ZXJhdG9yX3dvcmtlcigp
IHdpbGwgaGF2ZSB0bwotCSAqIHdhaXQgdG8gcmUtYXF1aXJlIHRoZSBsb2NrLgorCSAqIHdhaXQg
dG8gcmUtYWNxdWlyZSB0aGUgbG9jay4KIAkgKi8KIAlpZiAoc2N0cF9pdF9jdGwuaXRlcmF0b3Jf
cnVubmluZyAhPSAwIHx8IHNjdHBfaXRfY3RsLmN1cl9pdCAhPSBOVUxMKSB7CiAJCVNDVFBfSVBJ
X0lURVJBVE9SX1dRX1VOTE9DSygpOwpAQCAtNjk1OCw3ICs2ODU1LDcgQEAgcmV0cnk6CiAJfQog
I2VuZGlmCiAJVEFJTFFfRk9SRUFDSF9TQUZFKGl0LCAmc2N0cF9pdF9jdGwuaXRlcmF0b3JoZWFk
LCBzY3RwX254dF9pdHIsIG5pdCkgewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJl
ZUJTRF92ZXJzaW9uID49IDgwMTAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAJCWlmIChpdC0+dm4gIT0gY3Vydm5ldCkgewogCQkJY29udGlu
dWU7CiAJCX0KQEAgLTY5NzAsNyArNjg2Nyw3IEBAIHJldHJ5OgogCQlTQ1RQX0ZSRUUoaXQsU0NU
UF9NX0lURVIpOwogCX0KIAlTQ1RQX0lQSV9JVEVSQVRPUl9XUV9VTkxPQ0soKTsKLSNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDEwMDAKKyNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCVNDVFBfSVRFUkFU
T1JfTE9DSygpOwogCWlmICgoc2N0cF9pdF9jdGwuY3VyX2l0KSAmJgogCSAgICAoc2N0cF9pdF9j
dGwuY3VyX2l0LT52biA9PSBjdXJ2bmV0KSkgewpAQCAtNjk3OCw3ICs2ODc1LDcgQEAgcmV0cnk6
CiAJfQogCVNDVFBfSVRFUkFUT1JfVU5MT0NLKCk7CiAjZW5kaWYKLSNpZiAhZGVmaW5lZChfX0Zy
ZWVCU0RfXykKKyNpZiAhKGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pKQogCVNDVFBfSVBJX0lURVJBVE9SX1dRX0RFU1RST1koKTsKIAlTQ1RQX0lURVJBVE9S
X0xPQ0tfREVTVFJPWSgpOwogI2VuZGlmCkBAIC02OTk4LDYgKzY4OTUsNyBAQCByZXRyeToKIAkg
KiBmcmVlIHRoZSB2cmYvaWZuL2lmYSBsaXN0cyBhbmQgaGFzaGVzIChiZSBzdXJlIGFkZHJlc3Mg
bW9uaXRvcgogCSAqIGlzIGRlc3Ryb3llZCBmaXJzdCkuCiAJICovCisJU0NUUF9JUElfQUREUl9X
TE9DSygpOwogCXZyZl9idWNrZXQgPSAmU0NUUF9CQVNFX0lORk8oc2N0cF92cmZoYXNoKVsoU0NU
UF9ERUZBVUxUX1ZSRklEICYgU0NUUF9CQVNFX0lORk8oaGFzaHZyZm1hcmspKV07CiAJTElTVF9G
T1JFQUNIX1NBRkUodnJmLCB2cmZfYnVja2V0LCBuZXh0X3ZyZiwgbnZyZikgewogCQlMSVNUX0ZP
UkVBQ0hfU0FGRShpZm4sICZ2cmYtPmlmbmxpc3QsIG5leHRfaWZuLCBuaWZuKSB7CkBAIC03MDE3
LDYgKzY5MTUsNyBAQCByZXRyeToKIAkJTElTVF9SRU1PVkUodnJmLCBuZXh0X3ZyZik7CiAJCVND
VFBfRlJFRSh2cmYsIFNDVFBfTV9WUkYpOwogCX0KKwlTQ1RQX0lQSV9BRERSX1dVTkxPQ0soKTsK
IAkvKiBmcmVlIHRoZSB2cmYgaGFzaGVzICovCiAJU0NUUF9IQVNIX0ZSRUUoU0NUUF9CQVNFX0lO
Rk8oc2N0cF92cmZoYXNoKSwgU0NUUF9CQVNFX0lORk8oaGFzaHZyZm1hcmspKTsKIAlTQ1RQX0hB
U0hfRlJFRShTQ1RQX0JBU0VfSU5GTyh2cmZfaWZuX2hhc2gpLCBTQ1RQX0JBU0VfSU5GTyh2cmZf
aWZuX2hhc2htYXJrKSk7CkBAIC03MDM5LDE0ICs2OTM4LDE0IEBAIHJldHJ5OgogCX0KIAogCS8q
IGZyZWUgdGhlIGxvY2tzIGFuZCBtdXRleGVzICovCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisj
aWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJU0NUUF9U
SU1FUlFfTE9DS19ERVNUUk9ZKCk7CiAjZW5kaWYKICNpZmRlZiBTQ1RQX1BBQ0tFVF9MT0dHSU5H
CiAJU0NUUF9JUF9QS1RMT0dfREVTVFJPWSgpOwogI2VuZGlmCiAJU0NUUF9JUElfQUREUl9ERVNU
Uk9ZKCk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJU0NUUF9JUElfQ09VTlRfREVTVFJPWSgpOwogI2Vu
ZGlmCiAJU0NUUF9TVEFUTE9HX0RFU1RST1koKTsKQEAgLTcwNTQsNyArNjk1Myw3IEBAIHJldHJ5
OgogCiAJU0NUUF9XUV9BRERSX0RFU1RST1koKTsKIAotI2lmIGRlZmluZWQoX19BUFBMRV9fKQor
I2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmIGRl
ZmluZWQoQVBQTEVfTEVPUEFSRCkgfHwgZGVmaW5lZChBUFBMRV9TTk9XTEVPUEFSRCkgfHwgZGVm
aW5lZChBUFBMRV9MSU9OKSB8fCBkZWZpbmVkKEFQUExFX01PVU5UQUlOTElPTikKIAlsY2tfZ3Jw
X2F0dHJfZnJlZShTQ1RQX0JBU0VfSU5GTyhzY3RiaW5mbykubXR4X2dycF9hdHRyKTsKIAlsY2tf
Z3JwX2ZyZWUoU0NUUF9CQVNFX0lORk8oc2N0YmluZm8pLm10eF9ncnApOwpAQCAtNzA3OSw3ICs2
OTc4LDcgQEAgcmV0cnk6CiAJaWYgKFNDVFBfQkFTRV9JTkZPKHNjdHBfdGNwZXBoYXNoKSAhPSBO
VUxMKQogCQlTQ1RQX0hBU0hfRlJFRShTQ1RQX0JBU0VfSU5GTyhzY3RwX3RjcGVwaGFzaCksIFND
VFBfQkFTRV9JTkZPKGhhc2h0Y3BtYXJrKSk7CiAKLSNpZiBkZWZpbmVkKF9fV2luZG93c19fKSB8
fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaWYgZGVm
aW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKIAlTQ1RQX1pPTkVfREVTVFJPWShTQ1RQX0JBU0VfSU5GTyhpcGlfem9uZV9lcCkpOwog
CVNDVFBfWk9ORV9ERVNUUk9ZKFNDVFBfQkFTRV9JTkZPKGlwaV96b25lX2Fzb2MpKTsKIAlTQ1RQ
X1pPTkVfREVTVFJPWShTQ1RQX0JBU0VfSU5GTyhpcGlfem9uZV9sYWRkcikpOwpAQCAtNzA5MCw5
ICs2OTg5LDExIEBAIHJldHJ5OgogCVNDVFBfWk9ORV9ERVNUUk9ZKFNDVFBfQkFTRV9JTkZPKGlw
aV96b25lX2FzY29uZikpOwogCVNDVFBfWk9ORV9ERVNUUk9ZKFNDVFBfQkFTRV9JTkZPKGlwaV96
b25lX2FzY29uZl9hY2spKTsKICNlbmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIGRl
ZmluZWQoU01QKSAmJiBkZWZpbmVkKFNDVFBfVVNFX1BFUkNQVV9TVEFUKQorI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaWYgZGVmaW5lZChTTVAp
ICYmIGRlZmluZWQoU0NUUF9VU0VfUEVSQ1BVX1NUQVQpCiAJU0NUUF9GUkVFKFNDVFBfQkFTRV9T
VEFUUywgU0NUUF9NX01DT1JFKTsKICNlbmRpZgorI2VuZGlmCiB9CiAKIApAQCAtNzMxNCwxMyAr
NzIxNSwxMyBAQCBzY3RwX2xvYWRfYWRkcmVzc2VzX2Zyb21faW5pdChzdHJ1Y3Qgc2N0cF90Y2Ig
KnN0Y2IsIHN0cnVjdCBtYnVmICptLAogCQkJCQkgKiBhc3NvYz8gc3RyYWlnaHRlbiBvdXQgbG9j
a3MuCiAJCQkJCSAqLwogCQkJCQlpZiAoc3RjYl90bXApIHsKLQkJCQkJCWlmIChTQ1RQX0dFVF9T
VEFURSgmc3RjYl90bXAtPmFzb2MpICYgU0NUUF9TVEFURV9DT09LSUVfV0FJVCkgeworCQkJCQkJ
aWYgKFNDVFBfR0VUX1NUQVRFKHN0Y2JfdG1wKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB7
CiAJCQkJCQkJc3RydWN0IG1idWYgKm9wX2VycjsKIAkJCQkJCQljaGFyIG1zZ1tTQ1RQX0RJQUdf
SU5GT19MRU5dOwogCiAJCQkJCQkJLyogaW4gc2V0dXAgc3RhdGUgd2UgYWJvcnQgdGhpcyBndXkg
Ki8KLQkJCQkJCQlzbnByaW50Zihtc2csIHNpemVvZihtc2cpLAotCQkJCQkJCSAgICAgICAgICIl
czolZCBhdCAlcyIsIF9fRklMRV9fLCBfX0xJTkVfXywgX19mdW5jX18pOworCQkJCQkJCVNDVFBf
U05QUklOVEYobXNnLCBzaXplb2YobXNnKSwKKwkJCQkJCQkgICAgICAgICAgICAgICIlczolZCBh
dCAlcyIsIF9fRklMRV9fLCBfX0xJTkVfXywgX19mdW5jX18pOwogCQkJCQkJCW9wX2VyciA9IHNj
dHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2RpYWdfaW5mb19jb2RlKSwK
IAkJCQkJCQkgICAgICAgICBtc2cpOwogCQkJCQkJCXNjdHBfYWJvcnRfYW5fYXNzb2NpYXRpb24o
c3RjYl90bXAtPnNjdHBfZXAsCkBAIC03NDA4LDEzICs3MzA5LDEzIEBAIHNjdHBfbG9hZF9hZGRy
ZXNzZXNfZnJvbV9pbml0KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IG1idWYgKm0sCiAJ
CQkJCSAqIGFzc29jPyBzdHJhaWdodGVuIG91dCBsb2Nrcy4KIAkJCQkJICovCiAJCQkJCWlmIChz
dGNiX3RtcCkgewotCQkJCQkJaWYgKFNDVFBfR0VUX1NUQVRFKCZzdGNiX3RtcC0+YXNvYykgJiBT
Q1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB7CisJCQkJCQlpZiAoU0NUUF9HRVRfU1RBVEUoc3RjYl90
bXApID09IFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQpIHsKIAkJCQkJCQlzdHJ1Y3QgbWJ1ZiAqb3Bf
ZXJyOwogCQkJCQkJCWNoYXIgbXNnW1NDVFBfRElBR19JTkZPX0xFTl07CiAKIAkJCQkJCQkvKiBp
biBzZXR1cCBzdGF0ZSB3ZSBhYm9ydCB0aGlzIGd1eSAqLwotCQkJCQkJCXNucHJpbnRmKG1zZywg
c2l6ZW9mKG1zZyksCi0JCQkJCQkJICAgICAgICAgIiVzOiVkIGF0ICVzIiwgX19GSUxFX18sIF9f
TElORV9fLCBfX2Z1bmNfXyk7CisJCQkJCQkJU0NUUF9TTlBSSU5URihtc2csIHNpemVvZihtc2cp
LAorCQkJCQkJCSAgICAgICAgICAgICAgIiVzOiVkIGF0ICVzIiwgX19GSUxFX18sIF9fTElORV9f
LCBfX2Z1bmNfXyk7CiAJCQkJCQkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQX0JB
U0VfU1lTQ1RMKHNjdHBfZGlhZ19pbmZvX2NvZGUpLAogCQkJCQkJCSAgICAgICAgIG1zZyk7CiAJ
CQkJCQkJc2N0cF9hYm9ydF9hbl9hc3NvY2lhdGlvbihzdGNiX3RtcC0+c2N0cF9lcCwKQEAgLTgw
NjksNyArNzk3MCw4IEBAIHNjdHBfZHJhaW5fbWJ1ZnMoc3RydWN0IHNjdHBfdGNiICpzdGNiKQog
CQkgKiBhc29jLT5oaWdoZXN0X3Rzbl9pbnNpZGVfbWFwPwogCQkgKi8KIAkJYXNvYy0+bGFzdF9y
ZXZva2VfY291bnQgPSBjbnQ7Ci0JCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmc3RjYi0+YXNv
Yy5kYWNrX3RpbWVyLnRpbWVyKTsKKwkJc2N0cF90aW1lcl9zdG9wKFNDVFBfVElNRVJfVFlQRV9S
RUNWLCBzdGNiLT5zY3RwX2VwLCBzdGNiLCBOVUxMLAorCQkgICAgICAgICAgICAgICAgU0NUUF9G
Uk9NX1NDVFBfUENCICsgU0NUUF9MT0NfMTEpOwogCQkvKnNhX2lnbm9yZSBOT19OVUxMX0NISyov
CiAJCXNjdHBfc2VuZF9zYWNrKHN0Y2IsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CiAJCXNjdHBfY2h1
bmtfb3V0cHV0KHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIFNDVFBfT1VUUFVUX0ZST01fRFJBSU4sIFND
VFBfU09fTk9UX0xPQ0tFRCk7CkBAIC04MDkzLDcgKzc5OTUsNyBAQCBzY3RwX2RyYWluKCkKIAkg
KiBpcyBMT1cgb24gTUJVRidzIGFuZCBuZWVkcyBoZWxwLiBUaGlzIGlzIHdoZXJlIHJlbmVnaW5n
IHdpbGwKIAkgKiBvY2N1ci4gV2UgcmVhbGx5IGhvcGUgdGhpcyBkb2VzIE5PVCBoYXBwZW4hCiAJ
ICovCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAx
MDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
IAlWTkVUX0lURVJBVE9SX0RFQ0wodm5ldF9pdGVyKTsKICNlbHNlCiAJc3RydWN0IHNjdHBfaW5w
Y2IgKmlucDsKQEAgLTgxMDQsNyArODAwNiw3IEBAIHNjdHBfZHJhaW4oKQogCQlyZXR1cm47CiAJ
fQogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24g
Pj0gODAxMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKIAlWTkVUX0xJU1RfUkxPQ0tfTk9TTEVFUCgpOwogCVZORVRfRk9SRUFDSCh2bmV0X2l0
ZXIpIHsKIAkJQ1VSVk5FVF9TRVQodm5ldF9pdGVyKTsKQEAgLTgxMTIsNyArODAxNCw3IEBAIHNj
dHBfZHJhaW4oKQogCQlzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2I7CiAjZW5kaWYKIAotI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMTAwMAorI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCVNDVFBfU1RBVF9J
TkNSKHNjdHBzX3Byb3RvY29sX2RyYWluX2NhbGxzKTsKIAkJaWYgKFNDVFBfQkFTRV9TWVNDVEwo
c2N0cF9kb19kcmFpbikgPT0gMCkgewogI2lmZGVmIFZJTUFHRQpAQCAtODEzNSw3ICs4MDM3LDcg
QEAgc2N0cF9kcmFpbigpCiAJCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CiAJCX0KIAkJU0NUUF9J
TlBfSU5GT19SVU5MT0NLKCk7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNE
X3ZlcnNpb24gPj0gODAxMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKIAkJQ1VSVk5FVF9SRVNUT1JFKCk7CiAJfQogCVZORVRfTElTVF9SVU5M
T0NLX05PU0xFRVAoKTsKQEAgLTgxNzgsNyArODA4MCw3IEBAIHNjdHBfaW5pdGlhdGVfaXRlcmF0
b3IoaW5wX2Z1bmMgaW5wZiwKIAkJICAgIFNDVFBfTV9JVEVSKTsKIAlpZiAoaXQgPT0gTlVMTCkg
ewogCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKE5VTEwsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQ
X1BDQiwgRU5PTUVNKTsKLQkJcmV0dXJuIChFTk9NRU0pOworCQlyZXR1cm4gKC0xKTsKIAl9CiAJ
bWVtc2V0KGl0LCAwLCBzaXplb2YoKml0KSk7CiAJaXQtPmZ1bmN0aW9uX2Fzc29jID0gYWY7CkBA
IC04MTk1LDcgKzgwOTcsNyBAQCBzY3RwX2luaXRpYXRlX2l0ZXJhdG9yKGlucF9mdW5jIGlucGYs
CiAJaXQtPmFzb2Nfc3RhdGUgPSBhc29jX3N0YXRlOwogCWl0LT5mdW5jdGlvbl9pbnBfZW5kID0g
aW5wZTsKIAlpdC0+bm9fY2h1bmtfb3V0cHV0ID0gY2h1bmtfb3V0cHV0X29mZjsKLSNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDEwMDAKKyNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWl0LT52biA9IGN1
cnZuZXQ7CiAjZW5kaWYKIAlpZiAoc19pbnApIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNj
dHBsaWIvbmV0aW5ldC9zY3RwX3BjYi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3Nj
dHBfcGNiLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCAzNDg4MTg2M2Zm
YWExN2IyMWE1MGU1Nzk0MzQxNDJhYzMyZjU4YmQ3Li43M2IzMjU0OWIwYWQ5N2Q5YjhkYTUyOGRl
NjhkY2FlMjI0ZGUzZTkyCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3Bj
Yi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
dXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3BjYi5oCkBAIC0zMiw5
ICszMiw5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lm
ZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLV9fRkJTRElEKCIkRnJlZUJTRDog
aGVhZC9zeXMvbmV0aW5ldC9zY3RwX3BjYi5oIDMyNTM3MCAyMDE3LTExLTAzIDIwOjQ2OjEyWiB0
dWV4ZW4gJCIpOworX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfcGNi
LmggMzYyMTA2IDIwMjAtMDYtMTIgMTY6MzE6MTNaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAogI2lm
bmRlZiBfTkVUSU5FVF9TQ1RQX1BDQl9IXwpAQCAtMTQ5LDcgKzE0OSw3IEBAIHN0cnVjdCBzY3Rw
X3RhZ2Jsb2NrIHsKIAogCiBzdHJ1Y3Qgc2N0cF9lcGluZm8gewotI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKICNpZmRlZiBJTkVUCiAJc3RydWN0IHNvY2tldCAqdWRwNF90dW5fc29ja2V0OwogI2VuZGlm
CkBAIC0xODksNyArMTg5LDcgQEAgc3RydWN0IHNjdHBfZXBpbmZvIHsKIAlzdHJ1Y3Qgc2N0cHBj
YmhlYWQgbGlzdGhlYWQ7CiAJc3RydWN0IHNjdHBsYWRkciBhZGRyX3dxOwogCi0jaWYgZGVmaW5l
ZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJc3RydWN0IGlucGNiaGVhZCBpbnBsaXN0aGVhZDsKIAlzdHJ1Y3QgaW5wY2JpbmZv
IHNjdGJpbmZvOwogI2VuZGlmCkBAIC0yMDQsMTggKzIwNCwxMCBAQCBzdHJ1Y3Qgc2N0cF9lcGlu
Zm8gewogCXNjdHBfem9uZV90IGlwaV96b25lX2FzY29uZjsKIAlzY3RwX3pvbmVfdCBpcGlfem9u
ZV9hc2NvbmZfYWNrOwogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3Zl
cnNpb24gPj0gNTAzMDAwCi0jaWYgX19GcmVlQlNEX3ZlcnNpb24gPD0gNjAyMDAwCi0Jc3RydWN0
IG10eCBpcGlfZXBfbXR4OwotI2Vsc2UKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCXN0cnVjdCByd2xvY2sgaXBpX2VwX210eDsKLSNlbmRpZgog
CXN0cnVjdCBtdHggaXBpX2l0ZXJhdG9yX3dxX210eDsKLSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA8
PSA2MDIwMDAKLQlzdHJ1Y3QgbXR4IGlwaV9hZGRyX210eDsKLSNlbHNlCiAJc3RydWN0IHJ3bG9j
ayBpcGlfYWRkcl9tdHg7Ci0jZW5kaWYKIAlzdHJ1Y3QgbXR4IGlwaV9wa3Rsb2dfbXR4OwogCXN0
cnVjdCBtdHggd3FfYWRkcl9tdHg7CiAjZWxpZiBkZWZpbmVkKFNDVFBfUFJPQ0VTU19MRVZFTF9M
T0NLUykKQEAgLTIyNCw3ICsyMTYsNyBAQCBzdHJ1Y3Qgc2N0cF9lcGluZm8gewogCXVzZXJsYW5k
X211dGV4X3QgaXBpX2NvdW50X210eDsKIAl1c2VybGFuZF9tdXRleF90IGlwaV9wa3Rsb2dfbXR4
OwogCXVzZXJsYW5kX211dGV4X3Qgd3FfYWRkcl9tdHg7Ci0jZWxpZiBkZWZpbmVkKF9fQVBQTEVf
XykKKyNlbGlmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
I2lmZGVmIF9LRVJOX0xPQ0tTX0hfCiAJbGNrX210eF90ICppcGlfYWRkcl9tdHg7CiAJbGNrX210
eF90ICppcGlfY291bnRfbXR4OwpAQCAtMjM1LDEzICsyMjcsMTIgQEAgc3RydWN0IHNjdHBfZXBp
bmZvIHsKIAl2b2lkICppcGlfY291bnRfbXR4OwogCXZvaWQgKmxvZ2dpbmdfbXR4OwogI2VuZGlm
IC8qIF9LRVJOX0xPQ0tTX0hfICovCi0jZWxpZiBkZWZpbmVkKF9fV2luZG93c19fKQorI2VsaWYg
ZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJc3RydWN0IHJ3bG9j
ayBpcGlfZXBfbG9jazsKIAlzdHJ1Y3Qgcndsb2NrIGlwaV9hZGRyX2xvY2s7CiAJc3RydWN0IHNw
aW5sb2NrIGlwaV9wa3Rsb2dfbXR4OwogCXN0cnVjdCByd2xvY2sgd3FfYWRkcl9tdHg7CiAjZWxp
ZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi0gICAgLyogVE9ETyBkZWNpZGUgb24gX19Vc2Vyc3Bh
Y2VfXyBsb2NrcyAqLwogI2VuZGlmCiAJdWludDMyX3QgaXBpX2NvdW50X2VwOwogCkBAIC0yOTIs
OCArMjgzLDEyIEBAIHN0cnVjdCBzY3RwX2Jhc2VfaW5mbyB7CiAJICogYW5jaG9yIHRoZSBzeXN0
ZW0gbXVzdCBiZSBoZXJlLgogCSAqLwogCXN0cnVjdCBzY3RwX2VwaW5mbyBzY3RwcGNiaW5mbzsK
LSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBkZWZpbmVkKFNNUCkgJiYgZGVmaW5lZChTQ1RQ
X1VTRV9QRVJDUFVfU1RBVCkKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQorI2lmIGRlZmluZWQoU01QKSAmJiBkZWZpbmVkKFNDVFBfVVNFX1BFUkNQ
VV9TVEFUKQogCXN0cnVjdCBzY3Rwc3RhdCAgICAqc2N0cHN0YXQ7CisjZWxzZQorCXN0cnVjdCBz
Y3Rwc3RhdCAgICBzY3Rwc3RhdDsKKyNlbmRpZgogI2Vsc2UKIAlzdHJ1Y3Qgc2N0cHN0YXQgICAg
c2N0cHN0YXQ7CiAjZW5kaWYKQEAgLTMwNSwxNCArMzAwLDE5IEBAIHN0cnVjdCBzY3RwX2Jhc2Vf
aW5mbyB7CiAJaW50IHBhY2tldF9sb2dfZW5kOwogCXVpbnQ4X3QgcGFja2V0X2xvZ19idWZmZXJb
U0NUUF9QQUNLRVRfTE9HX1NJWkVdOwogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwlldmVu
dGhhbmRsZXJfdGFnIGVoX3RhZzsKKyNlbmRpZgorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWludCBzY3RwX21haW5fdGltZXJfdGlja3M7CiAjZW5k
aWYKICNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJdXNlcmxhbmRfbXV0ZXhfdCB0aW1lcl9t
dHg7CiAJdXNlcmxhbmRfdGhyZWFkX3QgdGltZXJfdGhyZWFkOwogCWludCB0aW1lcl90aHJlYWRf
c2hvdWxkX2V4aXQ7Ci0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKwlpbnQg
aXRlcmF0b3JfdGhyZWFkX3N0YXJ0ZWQ7CisJaW50IHRpbWVyX3RocmVhZF9zdGFydGVkOworI2lm
ICFkZWZpbmVkKF9XSU4zMikKIAlwdGhyZWFkX211dGV4YXR0cl90IG10eF9hdHRyOwogI2lmIGRl
ZmluZWQoSU5FVCkgfHwgZGVmaW5lZChJTkVUNikKIAlpbnQgdXNlcnNwYWNlX3JvdXRlOwpAQCAt
MzIwLDcgKzMyMCw3IEBAIHN0cnVjdCBzY3RwX2Jhc2VfaW5mbyB7CiAjZW5kaWYKICNlbmRpZgog
I2lmZGVmIElORVQKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVm
aW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fTUlOR1czMl9fKQogCVNPQ0tFVCB1c2Vyc3BhY2Vf
cmF3c2N0cDsKIAlTT0NLRVQgdXNlcnNwYWNlX3VkcHNjdHA7CiAjZWxzZQpAQCAtMzMxLDcgKzMz
MSw3IEBAIHN0cnVjdCBzY3RwX2Jhc2VfaW5mbyB7CiAJdXNlcmxhbmRfdGhyZWFkX3QgcmVjdnRo
cmVhZHVkcDsKICNlbmRpZgogI2lmZGVmIElORVQ2Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9v
c19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX01JTkdXMzJfXykK
IAlTT0NLRVQgdXNlcnNwYWNlX3Jhd3NjdHA2OwogCVNPQ0tFVCB1c2Vyc3BhY2VfdWRwc2N0cDY7
CiAjZWxzZQpAQCAtMzU4LDExICszNTgsMTEgQEAgc3RydWN0IHNjdHBfcGNiIHsKIAl1aW50MzJf
dCBzZWNyZXRfa2V5W1NDVFBfSE9XX01BTllfU0VDUkVUU11bU0NUUF9OVU1CRVJfT0ZfU0VDUkVU
U107CiAJdW5zaWduZWQgaW50IHNpemVfb2ZfYV9jb29raWU7CiAKLQl1bnNpZ25lZCBpbnQgc2N0
cF90aW1lb3V0dGlja3NbU0NUUF9OVU1fVE1SU107Ci0JdW5zaWduZWQgaW50IHNjdHBfbWlucnRv
OwotCXVuc2lnbmVkIGludCBzY3RwX21heHJ0bzsKLQl1bnNpZ25lZCBpbnQgaW5pdGlhbF9ydG87
Ci0JaW50IGluaXRpYWxfaW5pdF9ydG9fbWF4OworCXVpbnQzMl90IHNjdHBfdGltZW91dHRpY2tz
W1NDVFBfTlVNX1RNUlNdOworCXVpbnQzMl90IHNjdHBfbWlucnRvOworCXVpbnQzMl90IHNjdHBf
bWF4cnRvOworCXVpbnQzMl90IGluaXRpYWxfcnRvOworCXVpbnQzMl90IGluaXRpYWxfaW5pdF9y
dG9fbWF4OwogCiAJdW5zaWduZWQgaW50IHNjdHBfc2Fja19mcmVxOwogCXVpbnQzMl90IHNjdHBf
c3dzX3NlbmRlcjsKQEAgLTQwNSw3ICs0MDUsNyBAQCBzdHJ1Y3Qgc2N0cF9wY2IgewogCiAJdWlu
dDMyX3QgZGVmX2Nvb2tpZV9saWZlOwogCS8qIGRlZmF1bHRzIHRvIDAgKi8KLQlpbnQgYXV0b19j
bG9zZV90aW1lOworCXVpbnQzMl90IGF1dG9fY2xvc2VfdGltZTsKIAl1aW50MzJfdCBpbml0aWFs
X3NlcXVlbmNlX2RlYnVnOwogCXVpbnQzMl90IGFkYXB0YXRpb25fbGF5ZXJfaW5kaWNhdG9yOwog
CXVpbnQ4X3QgYWRhcHRhdGlvbl9sYXllcl9pbmRpY2F0b3JfcHJvdmlkZWQ7CkBAIC00NDgsMTEg
KzQ0OCwxMSBAQCBzdHJ1Y3Qgc2N0cF9pbnBjYiB7CiAJICovCiAJdW5pb24gewogCQlzdHJ1Y3Qg
aW5wY2IgaW5wOwotCQljaGFyIGFsaWduWyhzaXplb2Yoc3RydWN0IGluNnBjYikgKyBTQ1RQX0FM
SUdOTTEpICYKKwkJY2hhciBhbGlnblsoc2l6ZW9mKHN0cnVjdCBpbnBjYikgKyBTQ1RQX0FMSUdO
TTEpICYKIAkJICAgICAgICB+U0NUUF9BTElHTk0xXTsKIAl9ICAgICBpcF9pbnA7CiAKLSNpZiBk
ZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKIAkvKiBsZWF2ZSBzb21lIHNwYWNlIGluIGNhc2UgaTM4NiBpbnBjYiBpcyBi
aWdnZXIgdGhhbiBwcGMgKi8KIAl1aW50OF90CQlwYWRkaW5nWzEyOF07CiAjZW5kaWYKQEAgLTUw
OSwyNiArNTA5LDkgQEAgc3RydWN0IHNjdHBfaW5wY2IgewogCSAqIHRoZXkgYXJlIGNhbmRpZGF0
ZXMgd2l0aCBzY3RwX3NlbmRtIGZvcgogCSAqIGRlLXN1cHBvcnRpbmcuCiAJICovCi0jaWZkZWYg
X19QYW5kYV9fCi0JcGFraGFuZGxlX3R5cGUgcGFrX3RvX3JlYWQ7Ci0JcGFraGFuZGxlX3R5cGUg
cGFrX3RvX3JlYWRfc2VuZHE7Ci0jZW5kaWYKIAlzdHJ1Y3QgbWJ1ZiAqcGt0LCAqcGt0X2xhc3Q7
CiAJc3RydWN0IG1idWYgKmNvbnRyb2w7Ci0jaWYgIShkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBk
ZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKSkKLSNpZm5kZWYgSU5QX0lQVjYKLSNkZWZpbmUgSU5QX0lQVjYJMHgxCi0jZW5k
aWYKLSNpZm5kZWYgSU5QX0lQVjQKLSNkZWZpbmUgSU5QX0lQVjQJMHgyCi0jZW5kaWYKLQl1aW50
OF90IGlucF92ZmxhZzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUT0RPIF9f
VXNlcnNwYWNlX18gd2hlcmUgaXMgb3VyIGlucF92bGFnIGdvaW5nIHRvIGJlPyAqLwotCXVpbnQ4
X3QgaW5wX2lwX3R0bDsKLSAgICAgICAgdWludDhfdCBpbnBfaXBfdG9zOyAgICAvKiBkZWZpbmVk
IGFzIG1hY3JvIGluIHVzZXJfaW5wY2IuaCAqLwotCXVpbnQ4X3QgaW5wX2lwX3Jlc3Y7Ci0jZW5k
aWYKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDMw
MDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
CXN0cnVjdCBtdHggaW5wX210eDsKIAlzdHJ1Y3QgbXR4IGlucF9jcmVhdGVfbXR4OwogCXN0cnVj
dCBtdHggaW5wX3JkYXRhX210eDsKQEAgLTUzOCw3ICs1MjEsNyBAQCBzdHJ1Y3Qgc2N0cF9pbnBj
YiB7CiAJdXNlcmxhbmRfbXV0ZXhfdCBpbnBfY3JlYXRlX210eDsKIAl1c2VybGFuZF9tdXRleF90
IGlucF9yZGF0YV9tdHg7CiAJaW50MzJfdCByZWZjb3VudDsKLSNlbGlmIGRlZmluZWQoX19BUFBM
RV9fKQorI2VsaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAjaWYgZGVmaW5lZChTQ1RQX0FQUExFX1JXTE9DSykKIAlsY2tfcndfdCAqaW5wX210eDsKICNl
bHNlCkBAIC01NDYsMTYgKzUyOSwxNSBAQCBzdHJ1Y3Qgc2N0cF9pbnBjYiB7CiAjZW5kaWYKIAls
Y2tfbXR4X3QgKmlucF9jcmVhdGVfbXR4OwogCWxja19tdHhfdCAqaW5wX3JkYXRhX210eDsKLSNl
bGlmIGRlZmluZWQoX19XaW5kb3dzX18pCisjZWxpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKIAlzdHJ1Y3Qgcndsb2NrIGlucF9sb2NrOwogCXN0cnVjdCBzcGlu
bG9jayBpbnBfY3JlYXRlX2xvY2s7CiAJc3RydWN0IHNwaW5sb2NrIGlucF9yZGF0YV9sb2NrOwog
CWludDMyX3QgcmVmY291bnQ7CiAjZWxpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi0gICAgLyog
VE9ETyBkZWNpZGUgb24gX19Vc2Vyc3BhY2VfXyBsb2NrcyAqLwogCWludDMyX3QgcmVmY291bnQ7
CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlpbnQzMl90IHJlZmNvdW50OwogCiAJdWludDMy
X3QgbG9ja19jYWxsZXIxOwpAQCAtNTk5LDcgKzU4MSw3IEBAIHN0cnVjdCBzY3RwX2lucGNiIHsK
IAlpbnQgKCpyZWN2X2NhbGxiYWNrKShzdHJ1Y3Qgc29ja2V0ICosIHVuaW9uIHNjdHBfc29ja3N0
b3JlLCB2b2lkICosIHNpemVfdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0
IHNjdHBfcmN2aW5mbywgaW50LCB2b2lkICopOwogCXVpbnQzMl90IHNlbmRfc2JfdGhyZXNob2xk
OwotCWludCAoKnNlbmRfY2FsbGJhY2spKHN0cnVjdCBzb2NrZXQgKiwgdWludDMyX3QpOworCWlu
dCAoKnNlbmRfY2FsbGJhY2spKHN0cnVjdCBzb2NrZXQgKiwgdWludDMyX3QsIHZvaWQgKik7CiAj
ZW5kaWYKIH07CiAKQEAgLTYwNyw4ICs1ODksOSBAQCBzdHJ1Y3Qgc2N0cF9pbnBjYiB7CiBpbnQg
cmVnaXN0ZXJfcmVjdl9jYiAoc3RydWN0IHNvY2tldCAqLAogICAgICAgICAgICAgICAgICAgICAg
IGludCAoKikoc3RydWN0IHNvY2tldCAqLCB1bmlvbiBzY3RwX3NvY2tzdG9yZSwgdm9pZCAqLCBz
aXplX3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2N0cF9yY3ZpbmZv
LCBpbnQsIHZvaWQgKikpOwotaW50IHJlZ2lzdGVyX3NlbmRfY2IgKHN0cnVjdCBzb2NrZXQgKiwg
dWludDMyX3QsIGludCAoKikoc3RydWN0IHNvY2tldCAqLCB1aW50MzJfdCkpOworaW50IHJlZ2lz
dGVyX3NlbmRfY2IgKHN0cnVjdCBzb2NrZXQgKiwgdWludDMyX3QsIGludCAoKikoc3RydWN0IHNv
Y2tldCAqLCB1aW50MzJfdCwgdm9pZCAqKSk7CiBpbnQgcmVnaXN0ZXJfdWxwX2luZm8gKHN0cnVj
dCBzb2NrZXQgKiwgdm9pZCAqKTsKK2ludCByZXRyaWV2ZV91bHBfaW5mbyAoc3RydWN0IHNvY2tl
dCAqLCB2b2lkICoqKTsKIAogI2VuZGlmCiBzdHJ1Y3Qgc2N0cF90Y2IgewpAQCAtNjM2LDIyICs2
MTksMjEgQEAgc3RydWN0IHNjdHBfdGNiIHsKIAlpbnQgZnJlZWRfZnJvbV93aGVyZTsKIAl1aW50
MTZfdCBycG9ydDsJCS8qIHJlbW90ZSBwb3J0IGluIG5ldHdvcmsgZm9ybWF0ICovCiAJdWludDE2
X3QgcmVzdjsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+
PSA1MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogCXN0cnVjdCBtdHggdGNiX210eDsKIAlzdHJ1Y3QgbXR4IHRjYl9zZW5kX210eDsKICNl
bGlmIGRlZmluZWQoU0NUUF9QUk9DRVNTX0xFVkVMX0xPQ0tTKQogCXVzZXJsYW5kX211dGV4X3Qg
dGNiX210eDsKIAl1c2VybGFuZF9tdXRleF90IHRjYl9zZW5kX210eDsKLSNlbGlmIGRlZmluZWQo
X19BUFBMRV9fKQorI2VsaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJbGNrX210eF90KiB0Y2JfbXR4OwogCWxja19tdHhfdCogdGNiX3NlbmRfbXR4Owot
I2VsaWYgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNlbGlmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCXN0cnVjdCBzcGlubG9jayB0Y2JfbG9jazsKIAlzdHJ1Y3Qg
c3BpbmxvY2sgdGNiX3NlbmRfbG9jazsKICNlbGlmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKLSAg
ICAvKiBUT0RPIGRlY2lkZSBvbiBfX1VzZXJzcGFjZV9fIGxvY2tzICovCiAjZW5kaWYKLSNpZiBk
ZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKIAl1aW50MzJfdCBjYWxsZXIxOwogCXVpbnQzMl90IGNhbGxlcjI7CiAJdWlu
dDMyX3QgY2FsbGVyMzsKQEAgLTY1OSwxMSArNjQxLDExIEBAIHN0cnVjdCBzY3RwX3RjYiB7CiB9
OwogCiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1
MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX2xvY2tfYnNkLmg+CiAKLSNlbGlmIGRlZmluZWQo
X19BUFBMRV9fKQorI2VsaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAvKgogICogQXBwbGUgTWFjT1MgWCAxMC40ICJUaWdlciIKICAqLwpAQCAtNjc0LDcg
KzY1Niw3IEBAIHN0cnVjdCBzY3RwX3RjYiB7CiAKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfcHJv
Y2Vzc19sb2NrLmg+CiAKLSNlbGlmIGRlZmluZWQoX19XaW5kb3dzX18pCisjZWxpZiBkZWZpbmVk
KF9XSU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAogI2luY2x1ZGUgPG5ldGluZXQv
c2N0cF9sb2NrX3dpbmRvd3MuaD4KIApAQCAtNjg5LDE0ICs2NzEsMTMgQEAgc3RydWN0IHNjdHBf
dGNiIHsKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfbG9ja19lbXB0eS5oPgogI2VuZGlmCiAKLS8q
IFRPRE8gd2hlcmUgdG8gcHV0IG5vbi1fS0VSTkVMIHRoaW5ncyBmb3IgX19Vc2Vyc3BhY2VfXz8g
Ki8KICNpZiBkZWZpbmVkKF9LRVJORUwpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAogLyog
QXR0ZW50aW9uIEp1bGlhbiwgdGhpcyBpcyB0aGUgZXh0ZXJuIHRoYXQKICAqIGdvZXMgd2l0aCB0
aGUgYmFzZSBpbmZvLiBzY3RwX3BjYi5jIGhhcwogICogdGhlIHJlYWwgZGVmaW5pdGlvbi4KICAq
LwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMTAw
MAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBW
TkVUX0RFQ0xBUkUoc3RydWN0IHNjdHBfYmFzZV9pbmZvLCBzeXN0ZW1fYmFzZV9pbmZvKSA7CiAj
ZWxzZQogZXh0ZXJuIHN0cnVjdCBzY3RwX2Jhc2VfaW5mbyBzeXN0ZW1fYmFzZV9pbmZvOwpAQCAt
NzQ5LDEwICs3MzAsMTAgQEAgc3RydWN0IHNjdHBfbmV0cyAqc2N0cF9maW5kbmV0KHN0cnVjdCBz
Y3RwX3RjYiAqLCBzdHJ1Y3Qgc29ja2FkZHIgKik7CiAKIHN0cnVjdCBzY3RwX2lucGNiICpzY3Rw
X3BjYl9maW5kZXAoc3RydWN0IHNvY2thZGRyICosIGludCwgaW50LCB1aW50MzJfdCk7CiAKLSNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMDAKKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogaW50IHNj
dHBfaW5wY2JfYmluZChzdHJ1Y3Qgc29ja2V0ICosIHN0cnVjdCBzb2NrYWRkciAqLAogCQkgICAg
c3RydWN0IHNjdHBfaWZhICosc3RydWN0IHRocmVhZCAqKTsKLSNlbGlmIGRlZmluZWQoX19XaW5k
b3dzX18pCisjZWxpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
IGludCBzY3RwX2lucGNiX2JpbmQoc3RydWN0IHNvY2tldCAqLCBzdHJ1Y3Qgc29ja2FkZHIgKiwK
IAkJICAgIHN0cnVjdCBzY3RwX2lmYSAqLFBLVEhSRUFEKTsKICNlbHNlCkBAIC04MDMsMTkgKzc4
NCwyNCBAQCBpbnQgc2N0cF9pc19hZGRyZXNzX29uX2xvY2FsX2hvc3Qoc3RydWN0IHNvY2thZGRy
ICphZGRyLCB1aW50MzJfdCB2cmZfaWQpOwogCiB2b2lkIHNjdHBfaW5wY2JfZnJlZShzdHJ1Y3Qg
c2N0cF9pbnBjYiAqLCBpbnQsIGludCk7CiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBf
X0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMDAKKyNkZWZpbmUgU0NUUF9ET05UX0lOSVRJQUxJWkVf
QVVUSF9QQVJBTVMJMAorI2RlZmluZSBTQ1RQX0lOSVRJQUxJWkVfQVVUSF9QQVJBTVMJCTEKKwor
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBzdHJ1
Y3Qgc2N0cF90Y2IgKgogc2N0cF9hbG9jX2Fzc29jKHN0cnVjdCBzY3RwX2lucGNiICosIHN0cnVj
dCBzb2NrYWRkciAqLAotICAgICAgICAgICAgICAgIGludCAqLCB1aW50MzJfdCwgdWludDMyX3Qs
IHVpbnQxNl90LCB1aW50MTZfdCwgc3RydWN0IHRocmVhZCAqKTsKLSNlbGlmIGRlZmluZWQoX19X
aW5kb3dzX18pCisgICAgICAgICAgICAgICAgaW50ICosIHVpbnQzMl90LCB1aW50MzJfdCwgdWlu
dDE2X3QsIHVpbnQxNl90LCBzdHJ1Y3QgdGhyZWFkICosCisgICAgICAgICAgICAgICAgaW50KTsK
KyNlbGlmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogc3RydWN0
IHNjdHBfdGNiICoKIHNjdHBfYWxvY19hc3NvYyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqLCBzdHJ1Y3Qg
c29ja2FkZHIgKiwKLSAgICAgICAgICAgICAgICBpbnQgKiwgdWludDMyX3QsIHVpbnQzMl90LCB1
aW50MTZfdCwgdWludDE2X3QsIFBLVEhSRUFEKTsKKyAgICAgICAgICAgICAgICBpbnQgKiwgdWlu
dDMyX3QsIHVpbnQzMl90LCB1aW50MTZfdCwgdWludDE2X3QsIFBLVEhSRUFELCBpbnQpOwogI2Vs
c2UKIC8qIHByb2Mgd2lsbCBiZSBOVUxMIGZvciBfX1VzZXJzcGFjZV9fICovCiBzdHJ1Y3Qgc2N0
cF90Y2IgKgogc2N0cF9hbG9jX2Fzc29jKHN0cnVjdCBzY3RwX2lucGNiICosIHN0cnVjdCBzb2Nr
YWRkciAqLAotICAgICAgICAgICAgICAgIGludCAqLCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQx
Nl90LCB1aW50MTZfdCwgc3RydWN0IHByb2MgKik7CisgICAgICAgICAgICAgICAgaW50ICosIHVp
bnQzMl90LCB1aW50MzJfdCwgdWludDE2X3QsIHVpbnQxNl90LCBzdHJ1Y3QgcHJvYyAqLAorICAg
ICAgICAgICAgICAgIGludCk7CiAjZW5kaWYKIAogaW50IHNjdHBfZnJlZV9hc3NvYyhzdHJ1Y3Qg
c2N0cF9pbnBjYiAqLCBzdHJ1Y3Qgc2N0cF90Y2IgKiwgaW50LCBpbnQpOwpAQCAtODM4LDcgKzgy
NCwxMSBAQCB2b2lkIHNjdHBfcmVtb3ZlX25ldChzdHJ1Y3Qgc2N0cF90Y2IgKiwgc3RydWN0IHNj
dHBfbmV0cyAqKTsKIAogaW50IHNjdHBfZGVsX3JlbW90ZV9hZGRyKHN0cnVjdCBzY3RwX3RjYiAq
LCBzdHJ1Y3Qgc29ja2FkZHIgKik7CiAKKyNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCit2b2lk
IHNjdHBfcGNiX2luaXQoaW50KTsKKyNlbHNlCiB2b2lkIHNjdHBfcGNiX2luaXQodm9pZCk7Cisj
ZW5kaWYKIAogdm9pZCBzY3RwX3BjYl9maW5pc2godm9pZCk7CiAKQEAgLTg3NywxMCArODY3LDEy
IEBAIHNjdHBfaW5pdGlhdGVfaXRlcmF0b3IoaW5wX2Z1bmMgaW5wZiwKIAkJICAgICAgIGVuZF9m
dW5jIGVmLAogCQkgICAgICAgc3RydWN0IHNjdHBfaW5wY2IgKiwKIAkJICAgICAgIHVpbnQ4X3Qg
Y29fb2ZmKTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBkZWZpbmVkKFNDVFBfTUNPUkVf
SU5QVVQpICYmIGRlZmluZWQoU01QKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCisjaWYgZGVmaW5lZChTQ1RQX01DT1JFX0lOUFVUKSAmJiBkZWZp
bmVkKFNNUCkKIHZvaWQKIHNjdHBfcXVldWVfdG9fbWNvcmUoc3RydWN0IG1idWYgKm0sIGludCBv
ZmYsIGludCBjcHVfdG9fdXNlKTsKIAorI2VuZGlmCiAjZW5kaWYKIAogI2VuZGlmCQkJCS8qIF9L
RVJORUwgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3Bl
ZWxvZmYuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
dXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3BlZWxvZmYuYwpvbGQg
bW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDM5MWI0ZjU0NDZiNjQ5ZWQzNTQyNDdk
MmZkOTRjNTM3YzEyYTJlMGYuLjg1ODFmNTE1ZjQxMzM5ZmNmM2NkMzI5OWYzZDg0OGU2ZmMwZmRm
NDEKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91
c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfcGVlbG9mZi5jCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3BlZWxvZmYuYwpAQCAtMzIsOSArMzIs
OSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZmRlZiBf
X0ZyZWVCU0RfXworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQv
c3lzL25ldGluZXQvc2N0cF9wZWVsb2ZmLmMgMjc5ODU5IDIwMTUtMDMtMTAgMTk6NDk6MjVaIHR1
ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9wZWVs
b2ZmLmMgMzYyMDU0IDIwMjAtMDYtMTEgMTM6MzQ6MDlaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAog
I2luY2x1ZGUgPG5ldGluZXQvc2N0cF9vcy5oPgpAQCAtNDksMTAgKzQ5LDYgQEAgX19GQlNESUQo
IiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfcGVlbG9mZi5jIDI3OTg1OSAyMDE1LTAz
LTEwIDE5OjQ5OjI1WgogI2luY2x1ZGUgPG5ldGluZXQvc2N0cHV0aWwuaD4KICNpbmNsdWRlIDxu
ZXRpbmV0L3NjdHBfYXV0aC5oPgogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCi0jZGVmaW5lIEFQ
UExFX0ZJTEVfTk8gNQotI2VuZGlmCi0KIGludAogc2N0cF9jYW5fcGVlbF9vZmYoc3RydWN0IHNv
Y2tldCAqaGVhZCwgc2N0cF9hc3NvY190IGFzc29jX2lkKQogewpAQCAtNzksNyArNzUsNyBAQCBz
Y3RwX2Nhbl9wZWVsX29mZihzdHJ1Y3Qgc29ja2V0ICpoZWFkLCBzY3RwX2Fzc29jX3QgYXNzb2Nf
aWQpCiAJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBzdGNiLCBOVUxMLCBTQ1RQX0ZST01fU0NU
UF9QRUVMT0ZGLCBFTk9FTlQpOwogCQlyZXR1cm4gKEVOT0VOVCk7CiAJfQotCXN0YXRlID0gU0NU
UF9HRVRfU1RBVEUoKCZzdGNiLT5hc29jKSk7CisJc3RhdGUgPSBTQ1RQX0dFVF9TVEFURShzdGNi
KTsKIAlpZiAoKHN0YXRlID09IFNDVFBfU1RBVEVfRU1QVFkpIHx8CiAJICAgIChzdGF0ZSA9PSBT
Q1RQX1NUQVRFX0lOVVNFKSkgewogCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CkBAIC0xMDksNyAr
MTA1LDcgQEAgc2N0cF9kb19wZWVsb2ZmKHN0cnVjdCBzb2NrZXQgKmhlYWQsIHN0cnVjdCBzb2Nr
ZXQgKnNvLCBzY3RwX2Fzc29jX3QgYXNzb2NfaWQpCiAJCXJldHVybiAoRU5PVENPTk4pOwogCX0K
IAotCXN0YXRlID0gU0NUUF9HRVRfU1RBVEUoKCZzdGNiLT5hc29jKSk7CisJc3RhdGUgPSBTQ1RQ
X0dFVF9TVEFURShzdGNiKTsKIAlpZiAoKHN0YXRlID09IFNDVFBfU1RBVEVfRU1QVFkpIHx8CiAJ
ICAgIChzdGF0ZSA9PSBTQ1RQX1NUQVRFX0lOVVNFKSkgewogCQlTQ1RQX1RDQl9VTkxPQ0soc3Rj
Yik7CkBAIC0xNjQsNyArMTYwLDcgQEAgc2N0cF9kb19wZWVsb2ZmKHN0cnVjdCBzb2NrZXQgKmhl
YWQsIHN0cnVjdCBzb2NrZXQgKnNvLCBzY3RwX2Fzc29jX3QgYXNzb2NfaWQpCiAJYXRvbWljX2Fk
ZF9pbnQoJnN0Y2ItPmFzb2MucmVmY250LCAxKTsKIAlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CiAK
LSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJc2N0cF9wdWxsX29mZl9jb250cm9sX3RvX25ld19pbnAo
aW5wLCBuX2lucCwgc3RjYiwgU0JMX1dBSVQpOwogI2Vsc2UKIAlzY3RwX3B1bGxfb2ZmX2NvbnRy
b2xfdG9fbmV3X2lucChpbnAsIG5faW5wLCBzdGNiLCBNX1dBSVRPSyk7CkBAIC0xNzgsMTQgKzE3
NCw2IEBAIHNjdHBfZG9fcGVlbG9mZihzdHJ1Y3Qgc29ja2V0ICpoZWFkLCBzdHJ1Y3Qgc29ja2V0
ICpzbywgc2N0cF9hc3NvY190IGFzc29jX2lkKQogc3RydWN0IHNvY2tldCAqCiBzY3RwX2dldF9w
ZWVsb2ZmKHN0cnVjdCBzb2NrZXQgKmhlYWQsIHNjdHBfYXNzb2NfdCBhc3NvY19pZCwgaW50ICpl
cnJvcikKIHsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi0gICAgLyogaWYgX19Vc2Vyc3Bh
Y2VfXyBjaG9vc2VzIHRvIG9yaWdpbmFsbHkgbm90IHN1cHBvcnQgcGVlbG9mZiwgcHV0IGl0IGhl
cmUuLi4gKi8KLSNlbmRpZgotI2lmIGRlZmluZWQoX19QYW5kYV9fKQotCVNDVFBfTFRSQUNFX0VS
Ul9SRVQoTlVMTCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfUEVFTE9GRiwgRUlOVkFMKTsK
LQkqZXJyb3IgPSBFSU5WQUw7Ci0JcmV0dXJuIChOVUxMKTsKLSNlbHNlCiAJc3RydWN0IHNvY2tl
dCAqbmV3c287CiAJc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgKm5faW5wOwogCXN0cnVjdCBzY3Rw
X3RjYiAqc3RjYjsKQEAgLTIwNSwxOCArMTkzLDE1IEBAIHNjdHBfZ2V0X3BlZWxvZmYoc3RydWN0
IHNvY2tldCAqaGVhZCwgc2N0cF9hc3NvY190IGFzc29jX2lkLCBpbnQgKmVycm9yKQogCX0KIAlh
dG9taWNfYWRkX2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIDEpOwogCVNDVFBfVENCX1VOTE9DSyhz
dGNiKTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4
MDEwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCUNVUlZORVRfU0VUKGhlYWQtPnNvX3ZuZXQpOwogI2VuZGlmCiAJbmV3c28gPSBzb25ld2Nv
bm4oaGVhZCwgU1NfSVNDT05ORUNURUQKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZp
bmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkgICAgLCBOVUxMCi0j
ZWxpZiBkZWZpbmVkKF9fUGFuZGFfXykKLQkgICAgLyogcGxhY2UgdGhpcyBzb2NrZXQgaW4gdGhl
IGFzc29jJ3MgdnJmIGlkICovCi0JICAgICwgTlVMTCwgc3RjYi0+YXNvYy52cmZfaWQKICNlbmRp
ZgogCQkpOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49
IDgwMTAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAJQ1VSVk5FVF9SRVNUT1JFKCk7CiAjZW5kaWYKIAlpZiAobmV3c28gPT0gTlVMTCkgewpA
QCAtMjI3LDcgKzIxMiw3IEBAIHNjdHBfZ2V0X3BlZWxvZmYoc3RydWN0IHNvY2tldCAqaGVhZCwg
c2N0cF9hc3NvY190IGFzc29jX2lkLCBpbnQgKmVycm9yKQogCQlyZXR1cm4gKE5VTEwpOwogCiAJ
fQotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCSAgZWxzZSB7CiAJCVNDVFBfU09DS0VUX0xPQ0sobmV3c28s
IDEpOwogCX0KQEAgLTI4OCw3ICsyNzMsNiBAQCBzY3RwX2dldF9wZWVsb2ZmKHN0cnVjdCBzb2Nr
ZXQgKmhlYWQsIHNjdHBfYXNzb2NfdCBhc3NvY19pZCwgaW50ICplcnJvcikKIAlTT0NLX1VOTE9D
SyhuZXdzbyk7CiAJLyogV2UgcmVtb3ZlIGl0IHJpZ2h0IGF3YXkgKi8KIAotI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19f
KSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaWZkZWYgU0NUUF9MT0NLX0xPR0dJTkcKIAlp
ZiAoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2xvZ2dpbmdfbGV2ZWwpICYgU0NUUF9MT0NLX0xPR0dJ
TkdfRU5BQkxFKSB7CiAJCXNjdHBfbG9nX2xvY2soaW5wLCAoc3RydWN0IHNjdHBfdGNiICopTlVM
TCwgU0NUUF9MT0dfTE9DS19TT0NLKTsKQEAgLTI5NywxNiArMjgxLDYgQEAgc2N0cF9nZXRfcGVl
bG9mZihzdHJ1Y3Qgc29ja2V0ICpoZWFkLCBzY3RwX2Fzc29jX3QgYXNzb2NfaWQsIGludCAqZXJy
b3IpCiAJVEFJTFFfUkVNT1ZFKCZoZWFkLT5zb19jb21wLCBuZXdzbywgc29fbGlzdCk7CiAJaGVh
ZC0+c29fcWxlbi0tOwogCVNPQ0tfVU5MT0NLKGhlYWQpOwotI2Vsc2UKLQluZXdzbyA9IFRBSUxR
X0ZJUlNUKCZoZWFkLT5zb19xKTsKLQlpZiAoc29xcmVtcXVlKG5ld3NvLCAxKSA9PSAwKSB7Ci0J
CVNDVFBfUFJJTlRGKCJzb3JlbXF1ZSBmYWlsZWQsIHBlZWxvZmYtZmFpbHMgKGludmFyaWVudHMg
d291bGQgcGFuaWMpXG4iKTsKLQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEws
IFNDVFBfRlJPTV9TQ1RQX1BFRUxPRkYsIEVOT1RDT05OKTsKLQkJKmVycm9yID0gRU5PVENPTk47
Ci0JCXJldHVybiAoTlVMTCk7Ci0KLQl9Ci0jZW5kaWYKIAkvKgogCSAqIE5vdyB3ZSBtdXN0IG1v
dmUgaXQgZnJvbSBvbmUgaGFzaCB0YWJsZSB0byBhbm90aGVyIGFuZCBnZXQgdGhlCiAJICogc3Rj
YiBpbiB0aGUgcmlnaHQgcGxhY2UuCkBAIC0zMTgsMTMgKzI5MiwxMiBAQCBzY3RwX2dldF9wZWVs
b2ZmKHN0cnVjdCBzb2NrZXQgKmhlYWQsIHNjdHBfYXNzb2NfdCBhc3NvY19pZCwgaW50ICplcnJv
cikKIAkgKiBBbmQgbm93IHRoZSBmaW5hbCBoYWNrLiBXZSBtb3ZlIGRhdGEgaW4gdGhlIHBlbmRp
bmcgc2lkZSBpLmUuCiAJICogaGVhZCB0byB0aGUgbmV3IHNvY2tldCBidWZmZXIuIExldCB0aGUg
R1JVQkJJTkcgYmVnaW4gOi0wCiAJICovCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCXNjdHBfcHVs
bF9vZmZfY29udHJvbF90b19uZXdfaW5wKGlucCwgbl9pbnAsIHN0Y2IsIFNCTF9XQUlUKTsKICNl
bHNlCiAJc2N0cF9wdWxsX29mZl9jb250cm9sX3RvX25ld19pbnAoaW5wLCBuX2lucCwgc3RjYiwg
TV9XQUlUT0spOwogI2VuZGlmCiAJYXRvbWljX3N1YnRyYWN0X2ludCgmc3RjYi0+YXNvYy5yZWZj
bnQsIDEpOwogCXJldHVybiAobmV3c28pOwotI2VuZGlmCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3BlZWxvZmYuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Vz
cnNjdHBsaWIvbmV0aW5ldC9zY3RwX3BlZWxvZmYuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUg
MTAwNzU1CmluZGV4IGFkZWZjZGVkMTMxMWQzMTBlZDhmMTkxMzc2Y2EyZmZmYjY5ODRiZGMuLjdl
MWM1ZWNlZWI4ZTgyMjEyNDdiMjRhNjIwMTdkNTRlOWE2ZDA1YWYKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNy
c2N0cGxpYi9uZXRpbmV0L3NjdHBfcGVlbG9mZi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIv
bmV0aW5ldC9zY3RwX3BlZWxvZmYuaApAQCAtMzIsNyArMzIsNyBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZmRlZiBfX0ZyZWVCU0RfXworI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8c3lz
L2NkZWZzLmg+CiBfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9wZWVs
b2ZmLmggMzA5NjA3IDIwMTYtMTItMDYgMTA6MjE6MjVaIHR1ZXhlbiAkIik7CiAjZW5kaWYKQEAg
LTQyLDEzICs0MiwxMyBAQCBfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0
cF9wZWVsb2ZmLmggMzA5NjA3IDIwMTYtMTItMDYgMTA6MjE6MjVaCiAjaWYgZGVmaW5lZChIQVZF
X1NDVFBfUEVFTE9GRl9TT0NLT1BUKQogLyogc29ja2V0IG9wdGlvbiBwZWVsb2ZmICovCiBzdHJ1
Y3Qgc2N0cF9wZWVsb2ZmX29wdCB7Ci0jaWYgIWRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgIShk
ZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAJaW50IHM7CiAjZWxz
ZQogCUhBTkRMRSBzOwogI2VuZGlmCiAJc2N0cF9hc3NvY190IGFzc29jX2lkOwotI2lmICFkZWZp
bmVkKF9fV2luZG93c19fKQorI2lmICEoZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pKQogCWludCBuZXdfc2Q7CiAjZWxzZQogCUhBTkRMRSBuZXdfc2Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9wcm9jZXNzX2xvY2suaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3Jz
Y3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3Byb2Nlc3NfbG9jay5oCm9sZCBtb2RlIDEw
MDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggY2E2NjkyMTIwMjEwODgzOTEyZWZlYjk5Y2ZmYTI2
MWNkZjUzMmU0YS4uZmYwZTA1MDQ4ZTYzZWQyYzYyNGJkZGEzM2MyNGJlNWY4NGYwNTJkNgotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAv
dXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9wcm9jZXNzX2xvY2suaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNy
c2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9wcm9jZXNzX2xvY2suaApAQCAtNTMsNyAr
NTMsNyBAQAogICogcGVyIHNvY2tldCBsZXZlbCBsb2NraW5nCiAgKi8KIAotI2lmIGRlZmluZWQo
X19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIC8qIExvY2sgZm9y
IElORk8gc3R1ZmYgKi8KICNkZWZpbmUgU0NUUF9JTlBfSU5GT19MT0NLX0lOSVQoKQogI2RlZmlu
ZSBTQ1RQX0lOUF9JTkZPX1JMT0NLKCkKQEAgLTg2LDcgKzg2LDkgQEAKICNkZWZpbmUgU0NUUF9J
TlBfUkxPQ0soX2lucCkKICNkZWZpbmUgU0NUUF9JTlBfUlVOTE9DSyhfaW5wKQogI2RlZmluZSBT
Q1RQX0lOUF9XTE9DSyhfaW5wKQotI2RlZmluZSBTQ1RQX0lOUF9XVU5MT0NLKF9pbmVwKQorI2Rl
ZmluZSBTQ1RQX0lOUF9XVU5MT0NLKF9pbnApCisjZGVmaW5lIFNDVFBfSU5QX1JMT0NLX0FTU0VS
VChfaW5wKQorI2RlZmluZSBTQ1RQX0lOUF9XTE9DS19BU1NFUlQoX2lucCkKICNkZWZpbmUgU0NU
UF9JTlBfSU5DUl9SRUYoX2lucCkKICNkZWZpbmUgU0NUUF9JTlBfREVDUl9SRUYoX2lucCkKIApA
QCAtMTE1LDcgKzExNyw3IEBACiAgKi8KICNkZWZpbmUgU0NUUF9JUElfQ09VTlRfSU5JVCgpCiAK
LSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIp
CiAjZGVmaW5lIFNDVFBfV1FfQUREUl9JTklUKCkgXAogCUluaXRpYWxpemVDcml0aWNhbFNlY3Rp
b24oJlNDVFBfQkFTRV9JTkZPKHdxX2FkZHJfbXR4KSkKICNkZWZpbmUgU0NUUF9XUV9BRERSX0RF
U1RST1koKSBcCkBAIC0xMjQsNyArMTI2LDcgQEAKIAlFbnRlckNyaXRpY2FsU2VjdGlvbigmU0NU
UF9CQVNFX0lORk8od3FfYWRkcl9tdHgpKQogI2RlZmluZSBTQ1RQX1dRX0FERFJfVU5MT0NLKCkg
XAogCUxlYXZlQ3JpdGljYWxTZWN0aW9uKCZTQ1RQX0JBU0VfSU5GTyh3cV9hZGRyX210eCkpCi0K
KyNkZWZpbmUgU0NUUF9XUV9BRERSX0xPQ0tfQVNTRVJUKCkKIAogI2RlZmluZSBTQ1RQX0lOUF9J
TkZPX0xPQ0tfSU5JVCgpIFwKIAlJbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uKCZTQ1RQX0JBU0Vf
SU5GTyhpcGlfZXBfbXR4KSkKQEAgLTE4NSw2ICsxODcsOCBAQAogI2RlZmluZSBTQ1RQX0lOUF9X
TE9DSyhfaW5wKSBcCiAJRW50ZXJDcml0aWNhbFNlY3Rpb24oJihfaW5wKS0+aW5wX210eCkKICNl
bmRpZgorI2RlZmluZSBTQ1RQX0lOUF9STE9DS19BU1NFUlQoX3RjYikKKyNkZWZpbmUgU0NUUF9J
TlBfV0xPQ0tfQVNTRVJUKF90Y2IpCiAKICNkZWZpbmUgU0NUUF9UQ0JfU0VORF9MT0NLX0lOSVQo
X3RjYikgXAogCUluaXRpYWxpemVDcml0aWNhbFNlY3Rpb24oJihfdGNiKS0+dGNiX3NlbmRfbXR4
KQpAQCAtMjYzLDYgKzI2Nyw4IEBACiAjZGVmaW5lIFNDVFBfV1FfQUREUl9VTkxPQ0soKSBcCiAJ
KHZvaWQpcHRocmVhZF9tdXRleF91bmxvY2soJlNDVFBfQkFTRV9JTkZPKHdxX2FkZHJfbXR4KSkK
ICNlbmRpZgorI2RlZmluZSBTQ1RQX1dRX0FERFJfTE9DS19BU1NFUlQoKSBcCisJS0FTU0VSVChw
dGhyZWFkX211dGV4X3RyeWxvY2soJlNDVFBfQkFTRV9JTkZPKHdxX2FkZHJfbXR4KSkgPT0gRUJV
U1ksICgiJXM6IHdxX2FkZHJfbXR4IG5vdCBsb2NrZWQiLCBfX2Z1bmNfXykpCiAKICNkZWZpbmUg
U0NUUF9JTlBfSU5GT19MT0NLX0lOSVQoKSBcCiAJKHZvaWQpcHRocmVhZF9tdXRleF9pbml0KCZT
Q1RQX0JBU0VfSU5GTyhpcGlfZXBfbXR4KSwgJlNDVFBfQkFTRV9WQVIobXR4X2F0dHIpKQpAQCAt
Mzc3LDYgKzM4MywxMCBAQAogI2RlZmluZSBTQ1RQX0lOUF9XVU5MT0NLKF9pbnApIFwKIAkodm9p
ZClwdGhyZWFkX211dGV4X3VubG9jaygmKF9pbnApLT5pbnBfbXR4KQogI2VuZGlmCisjZGVmaW5l
IFNDVFBfSU5QX1JMT0NLX0FTU0VSVChfaW5wKSBcCisJS0FTU0VSVChwdGhyZWFkX211dGV4X3Ry
eWxvY2soJihfaW5wKS0+aW5wX210eCkgPT0gRUJVU1ksICgiJXM6IGlucF9tdHggbm90IGxvY2tl
ZCIsIF9fZnVuY19fKSkKKyNkZWZpbmUgU0NUUF9JTlBfV0xPQ0tfQVNTRVJUKF9pbnApIFwKKwlL
QVNTRVJUKHB0aHJlYWRfbXV0ZXhfdHJ5bG9jaygmKF9pbnApLT5pbnBfbXR4KSA9PSBFQlVTWSwg
KCIlczogaW5wX210eCBub3QgbG9ja2VkIiwgX19mdW5jX18pKQogI2RlZmluZSBTQ1RQX0lOUF9J
TkNSX1JFRihfaW5wKSBhdG9taWNfYWRkX2ludCgmKChfaW5wKS0+cmVmY291bnQpLCAxKQogI2Rl
ZmluZSBTQ1RQX0lOUF9ERUNSX1JFRihfaW5wKSBhdG9taWNfYWRkX2ludCgmKChfaW5wKS0+cmVm
Y291bnQpLCAtMSkKIApAQCAtNDg0LDcgKzQ5NCw3IEBACiAKIC8qIHNvY2tldCBsb2NrcyAqLwog
Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMy
KQogI2RlZmluZSBTT0NLQlVGX0xPQ0tfQVNTRVJUKF9zb19idWYpCiAjZGVmaW5lIFNPQ0tCVUZf
TE9DSyhfc29fYnVmKSBcCiAJRW50ZXJDcml0aWNhbFNlY3Rpb24oJihfc29fYnVmKS0+c2JfbXR4
KQpAQCAtNTE5LDcgKzUyOSw3IEBACiAjZGVmaW5lIFNDVFBfU1RBVExPR19VTkxPQ0soKQogI2Rl
ZmluZSBTQ1RQX1NUQVRMT0dfREVTVFJPWSgpCiAKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29z
X1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAvKiBhZGRyZXNzIGxpc3QgbG9ja3MgKi8K
ICNkZWZpbmUgU0NUUF9JUElfQUREUl9JTklUKCkgXAogCUluaXRpYWxpemVDcml0aWNhbFNlY3Rp
b24oJlNDVFBfQkFTRV9JTkZPKGlwaV9hZGRyX210eCkpCkBAIC01MzMsNiArNTQzLDggQEAKIAlF
bnRlckNyaXRpY2FsU2VjdGlvbigmU0NUUF9CQVNFX0lORk8oaXBpX2FkZHJfbXR4KSkKICNkZWZp
bmUgU0NUUF9JUElfQUREUl9XVU5MT0NLKCkgXAogCUxlYXZlQ3JpdGljYWxTZWN0aW9uKCZTQ1RQ
X0JBU0VfSU5GTyhpcGlfYWRkcl9tdHgpKQorI2RlZmluZSBTQ1RQX0lQSV9BRERSX0xPQ0tfQVNT
RVJUKCkKKyNkZWZpbmUgU0NUUF9JUElfQUREUl9XTE9DS19BU1NFUlQoKQogCiAKIC8qIGl0ZXJh
dG9yIGxvY2tzICovCkBAIC01NTQsNyArNTY2LDcgQEAKICNkZWZpbmUgU0NUUF9JUElfSVRFUkFU
T1JfV1FfVU5MT0NLKCkgXAogCUxlYXZlQ3JpdGljYWxTZWN0aW9uKCZzY3RwX2l0X2N0bC5pcGlf
aXRlcmF0b3Jfd3FfbXR4KQogCi0jZWxzZSAvKiBlbmQgb2YgX19Vc2Vyc3BhY2Vfb3NfV2luZG93
cyAqLworI2Vsc2UKIC8qIGFkZHJlc3MgbGlzdCBsb2NrcyAqLwogI2RlZmluZSBTQ1RQX0lQSV9B
RERSX0lOSVQoKSBcCiAJKHZvaWQpcHRocmVhZF9tdXRleF9pbml0KCZTQ1RQX0JBU0VfSU5GTyhp
cGlfYWRkcl9tdHgpLCAmU0NUUF9CQVNFX1ZBUihtdHhfYXR0cikpCkBAIC01NjksNiArNTgxLDEw
IEBACiAJS0FTU0VSVChwdGhyZWFkX211dGV4X2xvY2soJlNDVFBfQkFTRV9JTkZPKGlwaV9hZGRy
X210eCkpID09IDAsICgiJXM6IGlwaV9hZGRyX210eCBhbHJlYWR5IGxvY2tlZCIsIF9fZnVuY19f
KSkKICNkZWZpbmUgU0NUUF9JUElfQUREUl9XVU5MT0NLKCkgXAogCUtBU1NFUlQocHRocmVhZF9t
dXRleF91bmxvY2soJlNDVFBfQkFTRV9JTkZPKGlwaV9hZGRyX210eCkpID09IDAsICgiJXM6IGlw
aV9hZGRyX210eCBub3QgbG9ja2VkIiwgX19mdW5jX18pKQorI2RlZmluZSBTQ1RQX0lQSV9BRERS
X0xPQ0tfQVNTRVJUKCkgXAorCUtBU1NFUlQocHRocmVhZF9tdXRleF90cnlsb2NrKCZTQ1RQX0JB
U0VfSU5GTyhpcGlfYWRkcl9tdHgpKSA9PSBFQlVTWSwgKCIlczogaXBpX2FkZHJfbXR4IG5vdCBs
b2NrZWQiLCBfX2Z1bmNfXykpCisjZGVmaW5lIFNDVFBfSVBJX0FERFJfV0xPQ0tfQVNTRVJUKCkg
XAorCUtBU1NFUlQocHRocmVhZF9tdXRleF90cnlsb2NrKCZTQ1RQX0JBU0VfSU5GTyhpcGlfYWRk
cl9tdHgpKSA9PSBFQlVTWSwgKCIlczogaXBpX2FkZHJfbXR4IG5vdCBsb2NrZWQiLCBfX2Z1bmNf
XykpCiAjZWxzZQogI2RlZmluZSBTQ1RQX0lQSV9BRERSX1JMT0NLKCkgXAogCSh2b2lkKXB0aHJl
YWRfbXV0ZXhfbG9jaygmU0NUUF9CQVNFX0lORk8oaXBpX2FkZHJfbXR4KSkKQEAgLTU3OCw2ICs1
OTQsOCBAQAogCSh2b2lkKXB0aHJlYWRfbXV0ZXhfbG9jaygmU0NUUF9CQVNFX0lORk8oaXBpX2Fk
ZHJfbXR4KSkKICNkZWZpbmUgU0NUUF9JUElfQUREUl9XVU5MT0NLKCkgXAogCSh2b2lkKXB0aHJl
YWRfbXV0ZXhfdW5sb2NrKCZTQ1RQX0JBU0VfSU5GTyhpcGlfYWRkcl9tdHgpKQorI2RlZmluZSBT
Q1RQX0lQSV9BRERSX0xPQ0tfQVNTRVJUKCkKKyNkZWZpbmUgU0NUUF9JUElfQUREUl9XTE9DS19B
U1NFUlQoKQogI2VuZGlmCiAKIC8qIGl0ZXJhdG9yIGxvY2tzICovCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0
cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9zaGExLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGli
L25ldGluZXQvc2N0cF9zaGExLmMKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRl
eCBhYmE2MTYwNjliNzIyYzkwMjMzN2UxNDE4MGNmM2M2YmMzOTgyZDczLi5kYjBlNzUzM2ZmNmFi
NzY0ZjA1MTc5MGMwMDZkMmFkMTVkNDlmYmQxCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0
aW5ldC9zY3RwX3NoYTEuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9z
aGExLmMKQEAgLTg0LDkgKzg0LDkgQEAgc2N0cF9zaGExX2ZpbmFsKHVuc2lnbmVkIGNoYXIgKmRp
Z2VzdCwgc3RydWN0IHNjdHBfc2hhMV9jb250ZXh0ICpjdHgpCiAjZWxzZQogCiAjaW5jbHVkZSA8
c3RyaW5nLmg+Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmlu
ZWQoX1dJTjMyKSAmJiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8d2luc29jazIu
aD4KLSNlbGlmICFkZWZpbmVkKF9fV2luZG93c19fKQorI2VsaWYgIShkZWZpbmVkKF9XSU4zMikg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfc2hhMS5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfc2hhMS5oCm9sZCBtb2RlIDEwMDY0
NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggNmQ2YTA1YzEwY2RkMmI1MGEyNDM4NDY0ZjRiODgwNTky
MDVmMWFlNi4uZDUzNWVlNDYzOTUxODgyNzExNzI2YjM0Zjg3M2FhZjJhZTI3MTI2OQotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNy
c2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9zaGExLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNy
c2N0cGxpYi9uZXRpbmV0L3NjdHBfc2hhMS5oCkBAIC0zMiw3ICszMiw3IEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmZGVmIF9fRnJlZUJTRF9fCisjaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRl
IDxzeXMvY2RlZnMuaD4KIF9fRkJTRElEKCIkRnJlZUJTRCQiKTsKICNlbmRpZgpAQCAtNDMsMTYg
KzQzLDcgQEAgX19GQlNESUQoIiRGcmVlQlNEJCIpOwogCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+
CiAjaWYgZGVmaW5lZChTQ1RQX1VTRV9OU1NfU0hBMSkKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNl
X29zX0RhcndpbikKLS8qIFRoZSBOU1Mgc291cmNlcyByZXF1aXJlIF9fQVBQTEVfXyB0byBiZSBk
ZWZpbmVkLgotICogWFhYOiBSZW1vdmUgdGhpcyB1Z2x5IGhhY2sgb25jZSB0aGUgcGxhdGZvcm0g
ZGVmaW5lcyBoYXZlIGJlZW4gY2xlYW5lZCB1cC4KLSAqLwotI2RlZmluZSBfX0FQUExFX18KLSNl
bmRpZgogI2luY2x1ZGUgPHBrMTFwdWIuaD4KLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0Rh
cndpbikKLSN1bmRlZiBfX0FQUExFX18KLSNlbmRpZgogI2VsaWYgZGVmaW5lZChTQ1RQX1VTRV9P
UEVOU1NMX1NIQTEpCiAjaW5jbHVkZSA8b3BlbnNzbC9zaGEuaD4KICNlbmRpZgpAQCAtODMsNyAr
NzQsNyBAQCBzdHJ1Y3Qgc2N0cF9zaGExX2NvbnRleHQgewogI2VuZGlmCiB9OwogCi0jaWYgKGRl
ZmluZWQoX19BUFBMRV9fKSAmJiBkZWZpbmVkKEtFUk5FTCkpCisjaWYgKGRlZmluZWQoX19BUFBM
RV9fKSAgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykgJiYgZGVmaW5lZChLRVJORUwpKQogI2lm
bmRlZiBfS0VSTkVMCiAjZGVmaW5lIF9LRVJORUwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBs
aWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfc3NfZnVuY3Rpb25zLmMgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3Jz
Y3RwbGliL25ldGluZXQvc2N0cF9zc19mdW5jdGlvbnMuYwpvbGQgbW9kZSAxMDA2NDQKbmV3IG1v
ZGUgMTAwNzU1CmluZGV4IGYxOTgyNTcyNDY4M2YxYjM0NjdmZTJiODdhOGVkMTMyMmZlNTdhZjgu
LmZhZDQyNDY3YzIwYzk3NTViNjkyN2VjMzY1Zjk1MjdhOTIxNzJjYjkKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIv
dXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfc3NfZnVuY3Rpb25zLmMKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNy
c2N0cGxpYi9uZXRpbmV0L3NjdHBfc3NfZnVuY3Rpb25zLmMKQEAgLTI4LDkgKzI4LDkgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZkZWYgX19GcmVlQlNE
X18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
I2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRp
bmV0L3NjdHBfc3NfZnVuY3Rpb25zLmMgMzI2MTgwIDIwMTctMTEtMjQgMTk6Mzg6NTlaIHR1ZXhl
biAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9zc19mdW5j
dGlvbnMuYyAzNjIxNzMgMjAyMC0wNi0xNCAwOTo1MDowMFogdHVleGVuICQiKTsKICNlbmRpZgog
CiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX3BjYi5oPgpAQCAtNTksNiArNTksOSBAQCBzY3RwX3Nz
X2RlZmF1bHRfaW5pdChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0
aW9uICphc29jLAogewogCXVpbnQxNl90IGk7CiAKKwlpZiAoaG9sZHNfbG9jayA9PSAwKSB7CisJ
CVNDVFBfVENCX1NFTkRfTE9DSyhzdGNiKTsKKwl9CiAJYXNvYy0+c3NfZGF0YS5sb2NrZWRfb25f
c2VuZGluZyA9IE5VTEw7CiAJYXNvYy0+c3NfZGF0YS5sYXN0X291dF9zdHJlYW0gPSBOVUxMOwog
CVRBSUxRX0lOSVQoJmFzb2MtPnNzX2RhdGEub3V0LndoZWVsKTsKQEAgLTcxLDcgKzc0LDEwIEBA
IHNjdHBfc3NfZGVmYXVsdF9pbml0KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBf
YXNzb2NpYXRpb24gKmFzb2MsCiAJZm9yIChpID0gMDsgaSA8IHN0Y2ItPmFzb2Muc3RyZWFtb3V0
Y250OyBpKyspIHsKIAkJc3RjYi0+YXNvYy5zc19mdW5jdGlvbnMuc2N0cF9zc19hZGRfdG9fc3Ry
ZWFtKHN0Y2IsICZzdGNiLT5hc29jLAogCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJnN0Y2ItPmFzb2Muc3RybW91dFtpXSwKLQkJICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIGhvbGRzX2xvY2spOworCQkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMSk7CisJfQor
CWlmIChob2xkc19sb2NrID09IDApIHsKKwkJU0NUUF9UQ0JfU0VORF9VTkxPQ0soc3RjYik7CiAJ
fQogCXJldHVybjsKIH0KQEAgLTg0LDggKzkwLDEwIEBAIHNjdHBfc3NfZGVmYXVsdF9jbGVhcihz
dHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAogCQlT
Q1RQX1RDQl9TRU5EX0xPQ0soc3RjYik7CiAJfQogCXdoaWxlICghVEFJTFFfRU1QVFkoJmFzb2Mt
PnNzX2RhdGEub3V0LndoZWVsKSkgewotCQlzdHJ1Y3Qgc2N0cF9zdHJlYW1fb3V0ICpzdHJxID0g
VEFJTFFfRklSU1QoJmFzb2MtPnNzX2RhdGEub3V0LndoZWVsKTsKLQkJVEFJTFFfUkVNT1ZFKCZh
c29jLT5zc19kYXRhLm91dC53aGVlbCwgVEFJTFFfRklSU1QoJmFzb2MtPnNzX2RhdGEub3V0Lndo
ZWVsKSwgc3NfcGFyYW1zLnJyLm5leHRfc3Bva2UpOworCQlzdHJ1Y3Qgc2N0cF9zdHJlYW1fb3V0
ICpzdHJxOworCisJCXN0cnEgPSBUQUlMUV9GSVJTVCgmYXNvYy0+c3NfZGF0YS5vdXQud2hlZWwp
OworCQlUQUlMUV9SRU1PVkUoJmFzb2MtPnNzX2RhdGEub3V0LndoZWVsLCBzdHJxLCBzc19wYXJh
bXMucnIubmV4dF9zcG9rZSk7CiAJCXN0cnEtPnNzX3BhcmFtcy5yci5uZXh0X3Nwb2tlLnRxZV9u
ZXh0ID0gTlVMTDsKIAkJc3RycS0+c3NfcGFyYW1zLnJyLm5leHRfc3Bva2UudHFlX3ByZXYgPSBO
VUxMOwogCX0KQEAgLTQwMSwxMSArNDA5LDEzIEBAIHNjdHBfc3NfcHJpb19jbGVhcihzdHJ1Y3Qg
c2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAogCQlTQ1RQX1RD
Ql9TRU5EX0xPQ0soc3RjYik7CiAJfQogCXdoaWxlICghVEFJTFFfRU1QVFkoJmFzb2MtPnNzX2Rh
dGEub3V0LndoZWVsKSkgewotCQlzdHJ1Y3Qgc2N0cF9zdHJlYW1fb3V0ICpzdHJxID0gVEFJTFFf
RklSU1QoJmFzb2MtPnNzX2RhdGEub3V0LndoZWVsKTsKKwkJc3RydWN0IHNjdHBfc3RyZWFtX291
dCAqc3RycTsKKworCQlzdHJxID0gVEFJTFFfRklSU1QoJmFzb2MtPnNzX2RhdGEub3V0LndoZWVs
KTsKIAkJaWYgKGNsZWFyX3ZhbHVlcykgewogCQkJc3RycS0+c3NfcGFyYW1zLnByaW8ucHJpb3Jp
dHkgPSAwOwogCQl9Ci0JCVRBSUxRX1JFTU9WRSgmYXNvYy0+c3NfZGF0YS5vdXQud2hlZWwsIFRB
SUxRX0ZJUlNUKCZhc29jLT5zc19kYXRhLm91dC53aGVlbCksIHNzX3BhcmFtcy5wcmlvLm5leHRf
c3Bva2UpOworCQlUQUlMUV9SRU1PVkUoJmFzb2MtPnNzX2RhdGEub3V0LndoZWVsLCBzdHJxLCBz
c19wYXJhbXMucHJpby5uZXh0X3Nwb2tlKTsKIAkJc3RycS0+c3NfcGFyYW1zLnByaW8ubmV4dF9z
cG9rZS50cWVfbmV4dCA9IE5VTEw7CiAJCXN0cnEtPnNzX3BhcmFtcy5wcmlvLm5leHRfc3Bva2Uu
dHFlX3ByZXYgPSBOVUxMOwogCkBAIC01MTEsNiArNTIxLDkgQEAgc2N0cF9zc19wcmlvX3NlbGVj
dChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IgU0NUUF9VTlVTRUQsIHN0cnVjdCBzY3RwX25ldHMgKm5l
dCwKIHsKIAlzdHJ1Y3Qgc2N0cF9zdHJlYW1fb3V0ICpzdHJxLCAqc3RycXQsICpzdHJxbjsKIAor
CWlmIChhc29jLT5zc19kYXRhLmxvY2tlZF9vbl9zZW5kaW5nKSB7CisJCXJldHVybiAoYXNvYy0+
c3NfZGF0YS5sb2NrZWRfb25fc2VuZGluZyk7CisJfQogCXN0cnF0ID0gYXNvYy0+c3NfZGF0YS5s
YXN0X291dF9zdHJlYW07CiBwcmlvX2FnYWluOgogCS8qIEZpbmQgdGhlIG5leHQgc3RyZWFtIHRv
IHVzZSAqLwpAQCAtNTg5LDExICs2MDIsMTMgQEAgc2N0cF9zc19mYl9jbGVhcihzdHJ1Y3Qgc2N0
cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAogCQlTQ1RQX1RDQl9T
RU5EX0xPQ0soc3RjYik7CiAJfQogCXdoaWxlICghVEFJTFFfRU1QVFkoJmFzb2MtPnNzX2RhdGEu
b3V0LndoZWVsKSkgewotCQlzdHJ1Y3Qgc2N0cF9zdHJlYW1fb3V0ICpzdHJxID0gVEFJTFFfRklS
U1QoJmFzb2MtPnNzX2RhdGEub3V0LndoZWVsKTsKKwkJc3RydWN0IHNjdHBfc3RyZWFtX291dCAq
c3RycTsKKworCQlzdHJxID0gVEFJTFFfRklSU1QoJmFzb2MtPnNzX2RhdGEub3V0LndoZWVsKTsK
IAkJaWYgKGNsZWFyX3ZhbHVlcykgewogCQkJc3RycS0+c3NfcGFyYW1zLmZiLnJvdW5kcyA9IC0x
OwogCQl9Ci0JCVRBSUxRX1JFTU9WRSgmYXNvYy0+c3NfZGF0YS5vdXQud2hlZWwsIFRBSUxRX0ZJ
UlNUKCZhc29jLT5zc19kYXRhLm91dC53aGVlbCksIHNzX3BhcmFtcy5mYi5uZXh0X3Nwb2tlKTsK
KwkJVEFJTFFfUkVNT1ZFKCZhc29jLT5zc19kYXRhLm91dC53aGVlbCwgc3RycSwgc3NfcGFyYW1z
LmZiLm5leHRfc3Bva2UpOwogCQlzdHJxLT5zc19wYXJhbXMuZmIubmV4dF9zcG9rZS50cWVfbmV4
dCA9IE5VTEw7CiAJCXN0cnEtPnNzX3BhcmFtcy5mYi5uZXh0X3Nwb2tlLnRxZV9wcmV2ID0gTlVM
TDsKIAl9CkBAIC02ODUsNiArNzAwLDkgQEAgc2N0cF9zc19mYl9zZWxlY3Qoc3RydWN0IHNjdHBf
dGNiICpzdGNiIFNDVFBfVU5VU0VELCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsCiB7CiAJc3RydWN0
IHNjdHBfc3RyZWFtX291dCAqc3RycSA9IE5VTEwsICpzdHJxdDsKIAorCWlmIChhc29jLT5zc19k
YXRhLmxvY2tlZF9vbl9zZW5kaW5nKSB7CisJCXJldHVybiAoYXNvYy0+c3NfZGF0YS5sb2NrZWRf
b25fc2VuZGluZyk7CisJfQogCWlmIChhc29jLT5zc19kYXRhLmxhc3Rfb3V0X3N0cmVhbSA9PSBO
VUxMIHx8CiAJICAgIFRBSUxRX0ZJUlNUKCZhc29jLT5zc19kYXRhLm91dC53aGVlbCkgPT0gVEFJ
TFFfTEFTVCgmYXNvYy0+c3NfZGF0YS5vdXQud2hlZWwsIHNjdHB3aGVlbF9saXN0aGVhZCkpIHsK
IAkJc3RycXQgPSBUQUlMUV9GSVJTVCgmYXNvYy0+c3NfZGF0YS5vdXQud2hlZWwpOwpAQCAtNzUy
LDggKzc3MCw4IEBAIHNjdHBfc3NfZmJfc2NoZWR1bGVkKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwg
c3RydWN0IHNjdHBfbmV0cyAqbmV0IFNDVFBfVU5VU0VELAogICovCiBzdGF0aWMgdm9pZAogc2N0
cF9zc19mY2ZzX2FkZChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0
aW9uICphc29jLAotICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2N0cF9zdHJlYW1fb3V0ICpzdHJx
LCBzdHJ1Y3Qgc2N0cF9zdHJlYW1fcXVldWVfcGVuZGluZyAqc3AsCi0gICAgICAgICAgICAgICAg
IGludCBob2xkc19sb2NrKTsKKyAgICAgICAgICAgICAgICAgc3RydWN0IHNjdHBfc3RyZWFtX291
dCAqc3RycSBTQ1RQX1VOVVNFRCwKKyAgICAgICAgICAgICAgICAgc3RydWN0IHNjdHBfc3RyZWFt
X3F1ZXVlX3BlbmRpbmcgKnNwLCBpbnQgaG9sZHNfbG9jayk7CiAKIHN0YXRpYyB2b2lkCiBzY3Rw
X3NzX2ZjZnNfaW5pdChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0
aW9uICphc29jLApAQCAtNzYzLDYgKzc4MSw5IEBAIHNjdHBfc3NfZmNmc19pbml0KHN0cnVjdCBz
Y3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiAJc3RydWN0IHNj
dHBfc3RyZWFtX3F1ZXVlX3BlbmRpbmcgKnNwOwogCXVpbnQxNl90IGk7CiAKKwlpZiAoaG9sZHNf
bG9jayA9PSAwKSB7CisJCVNDVFBfVENCX1NFTkRfTE9DSyhzdGNiKTsKKwl9CiAJVEFJTFFfSU5J
VCgmYXNvYy0+c3NfZGF0YS5vdXQubGlzdCk7CiAJLyoKIAkgKiBJZiB0aGVyZSBpcyBkYXRhIGlu
IHRoZSBzdHJlYW0gcXVldWVzIGFscmVhZHksCkBAIC03ODIsMTIgKzgwMywxNSBAQCBzY3RwX3Nz
X2ZjZnNfaW5pdChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9u
ICphc29jLAogCQkJCXgrKzsKIAkJCX0KIAkJCWlmIChzcCAhPSBOVUxMKSB7Ci0JCQkJc2N0cF9z
c19mY2ZzX2FkZChzdGNiLCAmc3RjYi0+YXNvYywgJnN0Y2ItPmFzb2Muc3RybW91dFtpXSwgc3As
IGhvbGRzX2xvY2spOworCQkJCXNjdHBfc3NfZmNmc19hZGQoc3RjYiwgJnN0Y2ItPmFzb2MsICZz
dGNiLT5hc29jLnN0cm1vdXRbaV0sIHNwLCAxKTsKIAkJCQlhZGRfbW9yZSA9IDE7CiAJCQl9CiAJ
CX0KIAkJbisrOwogCX0KKwlpZiAoaG9sZHNfbG9jayA9PSAwKSB7CisJCVNDVFBfVENCX1NFTkRf
VU5MT0NLKHN0Y2IpOworCX0KIAlyZXR1cm47CiB9CiAKQEAgLTc5NSwxMiArODE5LDE3IEBAIHN0
YXRpYyB2b2lkCiBzY3RwX3NzX2ZjZnNfY2xlYXIoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1
Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKICAgICAgICAgICAgICAgICAgICBpbnQgY2xlYXJf
dmFsdWVzLCBpbnQgaG9sZHNfbG9jaykKIHsKKwlzdHJ1Y3Qgc2N0cF9zdHJlYW1fcXVldWVfcGVu
ZGluZyAqc3A7CisKIAlpZiAoY2xlYXJfdmFsdWVzKSB7CiAJCWlmIChob2xkc19sb2NrID09IDAp
IHsKIAkJCVNDVFBfVENCX1NFTkRfTE9DSyhzdGNiKTsKIAkJfQogCQl3aGlsZSAoIVRBSUxRX0VN
UFRZKCZhc29jLT5zc19kYXRhLm91dC5saXN0KSkgewotCQkJVEFJTFFfUkVNT1ZFKCZhc29jLT5z
c19kYXRhLm91dC5saXN0LCBUQUlMUV9GSVJTVCgmYXNvYy0+c3NfZGF0YS5vdXQubGlzdCksIHNz
X25leHQpOworCQkJc3AgPSBUQUlMUV9GSVJTVCgmYXNvYy0+c3NfZGF0YS5vdXQubGlzdCk7CisJ
CQlUQUlMUV9SRU1PVkUoJmFzb2MtPnNzX2RhdGEub3V0Lmxpc3QsIHNwLCBzc19uZXh0KTsKKwkJ
CXNwLT5zc19uZXh0LnRxZV9uZXh0ID0gTlVMTDsKKwkJCXNwLT5zc19uZXh0LnRxZV9wcmV2ID0g
TlVMTDsKIAkJfQogCQlpZiAoaG9sZHNfbG9jayA9PSAwKSB7CiAJCQlTQ1RQX1RDQl9TRU5EX1VO
TE9DSyhzdGNiKTsKQEAgLTgyMCw2ICs4NDksOCBAQCBzY3RwX3NzX2ZjZnNfaW5pdF9zdHJlYW0o
c3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9zdHJlYW1fb3V0ICpzdHJxLCBzdAog
CQkJc3RjYi0+YXNvYy5zc19kYXRhLmxhc3Rfb3V0X3N0cmVhbSA9IHN0cnE7CiAJCX0KIAl9CisJ
c3RycS0+c3NfcGFyYW1zLmZiLm5leHRfc3Bva2UudHFlX25leHQgPSBOVUxMOworCXN0cnEtPnNz
X3BhcmFtcy5mYi5uZXh0X3Nwb2tlLnRxZV9wcmV2ID0gTlVMTDsKIAlyZXR1cm47CiB9CiAKQEAg
LTg2Myw2ICs4OTQsOCBAQCBzY3RwX3NzX2ZjZnNfcmVtb3ZlKHN0cnVjdCBzY3RwX3RjYiAqc3Rj
Yiwgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiAJICAgICgoc3AtPnNzX25leHQudHFl
X25leHQgIT0gTlVMTCkgfHwKIAkgICAgIChzcC0+c3NfbmV4dC50cWVfcHJldiAhPSBOVUxMKSkp
IHsKIAkJVEFJTFFfUkVNT1ZFKCZhc29jLT5zc19kYXRhLm91dC5saXN0LCBzcCwgc3NfbmV4dCk7
CisJCXNwLT5zc19uZXh0LnRxZV9uZXh0ID0gTlVMTDsKKwkJc3AtPnNzX25leHQudHFlX3ByZXYg
PSBOVUxMOwogCX0KIAlpZiAoaG9sZHNfbG9jayA9PSAwKSB7CiAJCVNDVFBfVENCX1NFTkRfVU5M
T0NLKHN0Y2IpOwpAQCAtODc4LDYgKzkxMSw5IEBAIHNjdHBfc3NfZmNmc19zZWxlY3Qoc3RydWN0
IHNjdHBfdGNiICpzdGNiIFNDVFBfVU5VU0VELCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsCiAJc3Ry
dWN0IHNjdHBfc3RyZWFtX291dCAqc3RycTsKIAlzdHJ1Y3Qgc2N0cF9zdHJlYW1fcXVldWVfcGVu
ZGluZyAqc3A7CiAKKwlpZiAoYXNvYy0+c3NfZGF0YS5sb2NrZWRfb25fc2VuZGluZykgeworCQly
ZXR1cm4gKGFzb2MtPnNzX2RhdGEubG9ja2VkX29uX3NlbmRpbmcpOworCX0KIAlzcCA9IFRBSUxR
X0ZJUlNUKCZhc29jLT5zc19kYXRhLm91dC5saXN0KTsKIGRlZmF1bHRfYWdhaW46CiAJaWYgKHNw
ICE9IE5VTEwpIHsKQEAgLTkxMyw3ICs5NDksNyBAQCBkZWZhdWx0X2FnYWluOgogY29uc3Qgc3Ry
dWN0IHNjdHBfc3NfZnVuY3Rpb25zIHNjdHBfc3NfZnVuY3Rpb25zW10gPSB7CiAvKiBTQ1RQX1NT
X0RFRkFVTFQgKi8KIHsKLSNpZiBkZWZpbmVkKF9fV2luZG93c19fKSB8fCBkZWZpbmVkKF9fVXNl
cnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJc2N0cF9zc19kZWZhdWx0
X2luaXQsCiAJc2N0cF9zc19kZWZhdWx0X2NsZWFyLAogCXNjdHBfc3NfZGVmYXVsdF9pbml0X3N0
cmVhbSwKQEAgLTk0Myw3ICs5NzksNyBAQCBjb25zdCBzdHJ1Y3Qgc2N0cF9zc19mdW5jdGlvbnMg
c2N0cF9zc19mdW5jdGlvbnNbXSA9IHsKIH0sCiAvKiBTQ1RQX1NTX1JPVU5EX1JPQklOICovCiB7
Ci0jaWYgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5k
b3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogCXNjdHBfc3NfZGVmYXVsdF9pbml0LAogCXNjdHBf
c3NfZGVmYXVsdF9jbGVhciwKIAlzY3RwX3NzX2RlZmF1bHRfaW5pdF9zdHJlYW0sCkBAIC05NzMs
NyArMTAwOSw3IEBAIGNvbnN0IHN0cnVjdCBzY3RwX3NzX2Z1bmN0aW9ucyBzY3RwX3NzX2Z1bmN0
aW9uc1tdID0gewogfSwKIC8qIFNDVFBfU1NfUk9VTkRfUk9CSU5fUEFDS0VUICovCiB7Ci0jaWYg
ZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQor
I2lmIGRlZmluZWQoX1dJTjMyKQogCXNjdHBfc3NfZGVmYXVsdF9pbml0LAogCXNjdHBfc3NfZGVm
YXVsdF9jbGVhciwKIAlzY3RwX3NzX2RlZmF1bHRfaW5pdF9zdHJlYW0sCkBAIC0xMDAzLDcgKzEw
MzksNyBAQCBjb25zdCBzdHJ1Y3Qgc2N0cF9zc19mdW5jdGlvbnMgc2N0cF9zc19mdW5jdGlvbnNb
XSA9IHsKIH0sCiAvKiBTQ1RQX1NTX1BSSU9SSVRZICovCiB7Ci0jaWYgZGVmaW5lZChfX1dpbmRv
d3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJ
TjMyKQogCXNjdHBfc3NfZGVmYXVsdF9pbml0LAogCXNjdHBfc3NfcHJpb19jbGVhciwKIAlzY3Rw
X3NzX3ByaW9faW5pdF9zdHJlYW0sCkBAIC0xMDMzLDcgKzEwNjksNyBAQCBjb25zdCBzdHJ1Y3Qg
c2N0cF9zc19mdW5jdGlvbnMgc2N0cF9zc19mdW5jdGlvbnNbXSA9IHsKIH0sCiAvKiBTQ1RQX1NT
X0ZBSVJfQkFORFdJVEggKi8KIHsKLSNpZiBkZWZpbmVkKF9fV2luZG93c19fKSB8fCBkZWZpbmVk
KF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJc2N0cF9zc19k
ZWZhdWx0X2luaXQsCiAJc2N0cF9zc19mYl9jbGVhciwKIAlzY3RwX3NzX2ZiX2luaXRfc3RyZWFt
LApAQCAtMTA2Myw3ICsxMDk5LDcgQEAgY29uc3Qgc3RydWN0IHNjdHBfc3NfZnVuY3Rpb25zIHNj
dHBfc3NfZnVuY3Rpb25zW10gPSB7CiB9LAogLyogU0NUUF9TU19GSVJTVF9DT01FICovCiB7Ci0j
aWYgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dz
KQorI2lmIGRlZmluZWQoX1dJTjMyKQogCXNjdHBfc3NfZmNmc19pbml0LAogCXNjdHBfc3NfZmNm
c19jbGVhciwKIAlzY3RwX3NzX2ZjZnNfaW5pdF9zdHJlYW0sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9zdHJ1Y3RzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGli
L25ldGluZXQvc2N0cF9zdHJ1Y3RzLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpp
bmRleCBmNDlmMmM4N2E3NzAyNzk3Zjc3MGQxYzgzZWU1MjIyNWZkZmE3NWVjLi4xZjVmMTUzZTk4
NzdkZGY0N2JkYjFlMzc0MzMxOWU1ZWE3NmU3NDg4Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIv
bmV0aW5ldC9zY3RwX3N0cnVjdHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQv
c2N0cF9zdHJ1Y3RzLmgKQEAgLTMyLDkgKzMyLDkgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0jaWZkZWYgX19GcmVlQlNEX18KKyNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPHN5cy9jZGVmcy5o
PgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfc3RydWN0cy5oIDMy
NTM3MCAyMDE3LTExLTAzIDIwOjQ2OjEyWiB0dWV4ZW4gJCIpOworX19GQlNESUQoIiRGcmVlQlNE
OiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfc3RydWN0cy5oIDM2NDI2OCAyMDIwLTA4LTE2IDExOjUw
OjM3WiB0dWV4ZW4gJCIpOwogI2VuZGlmCiAKICNpZm5kZWYgX05FVElORVRfU0NUUF9TVFJVQ1RT
X0hfCkBAIC01NSw3ICs1NSw3IEBAIHN0cnVjdCBzY3RwX3RpbWVyIHsKIAl2b2lkICplcDsKIAl2
b2lkICp0Y2I7CiAJdm9pZCAqbmV0OwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJl
ZUJTRF92ZXJzaW9uID49IDgwMDAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAJdm9pZCAqdm5ldDsKICNlbmRpZgogCkBAIC0xMTMsMTMgKzEx
MywxMiBAQCB0eXBlZGVmIHZvaWQgKCphc29jX2Z1bmMpIChzdHJ1Y3Qgc2N0cF9pbnBjYiAqLCBz
dHJ1Y3Qgc2N0cF90Y2IgKiwgdm9pZCAqcHRyLAogdHlwZWRlZiBpbnQgKCppbnBfZnVuYykgKHN0
cnVjdCBzY3RwX2lucGNiICosIHZvaWQgKnB0ciwgdWludDMyX3QgdmFsKTsKIHR5cGVkZWYgdm9p
ZCAoKmVuZF9mdW5jKSAodm9pZCAqcHRyLCB1aW50MzJfdCB2YWwpOwogCi0jaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgZGVmaW5lZChTQ1RQX01DT1JFX0lOUFVUKSAmJiBkZWZpbmVkKFNNUCkK
KyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lm
IGRlZmluZWQoU0NUUF9NQ09SRV9JTlBVVCkgJiYgZGVmaW5lZChTTVApCiAvKiB3aGF0cyBvbiB0
aGUgbWNvcmUgY29udHJvbCBzdHJ1Y3QgKi8KIHN0cnVjdCBzY3RwX21jb3JlX3F1ZXVlIHsKIAlU
QUlMUV9FTlRSWShzY3RwX21jb3JlX3F1ZXVlKSBuZXh0OwotI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMTAwMAogCXN0cnVjdCB2bmV0ICp2bjsKLSNl
bmRpZgogCXN0cnVjdCBtYnVmICptOwogCWludCBvZmY7CiAJaW50IHY2OwpAQCAtMTM1LDE0ICsx
MzQsMTIgQEAgc3RydWN0IHNjdHBfbWNvcmVfY3RybCB7CiAJaW50IHJ1bm5pbmc7CiAJaW50IGNw
dWlkOwogfTsKLQotCiAjZW5kaWYKLQorI2VuZGlmCiAKIHN0cnVjdCBzY3RwX2l0ZXJhdG9yIHsK
IAlUQUlMUV9FTlRSWShzY3RwX2l0ZXJhdG9yKSBzY3RwX254dF9pdHI7Ci0jaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAxMDAwCisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzdHJ1Y3Qgdm5ldCAqdm47
CiAjZW5kaWYKIAlzdHJ1Y3Qgc2N0cF90aW1lciB0bXI7CkBAIC0xNzMsNyArMTcwLDcgQEAgc3Ry
dWN0IHNjdHBfY29weV9hbGwgewogCXN0cnVjdCBzY3RwX2lucGNiICppbnA7CS8qIGVwICovCiAJ
c3RydWN0IG1idWYgKm07CiAJc3RydWN0IHNjdHBfc25kcmN2aW5mbyBzbmRyY3Y7Ci0JaW50IHNu
ZGxlbjsKKwlzc2l6ZV90IHNuZGxlbjsKIAlpbnQgY250X3NlbnQ7CiAJaW50IGNudF9mYWlsZWQ7
CiB9OwpAQCAtMTg0LDEwICsxODEsMTAgQEAgc3RydWN0IHNjdHBfYXNjb25mX2l0ZXJhdG9yIHsK
IH07CiAKIHN0cnVjdCBpdGVyYXRvcl9jb250cm9sIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJ
c3RydWN0IG10eCBpcGlfaXRlcmF0b3Jfd3FfbXR4OwogCXN0cnVjdCBtdHggaXRfbXR4OwotI2Vs
aWYgZGVmaW5lZChfX0FQUExFX18pCisjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKIAlsY2tfbXR4X3QgKmlwaV9pdGVyYXRvcl93cV9tdHg7CiAJbGNr
X210eF90ICppdF9tdHg7CiAjZWxpZiBkZWZpbmVkKFNDVFBfUFJPQ0VTU19MRVZFTF9MT0NLUykK
QEAgLTIwMCw3ICsxOTcsNyBAQCBzdHJ1Y3QgaXRlcmF0b3JfY29udHJvbCB7CiAJcHRocmVhZF9t
dXRleF90IGl0X210eDsKIAlwdGhyZWFkX2NvbmRfdCBpdGVyYXRvcl93YWtldXA7CiAjZW5kaWYK
LSNlbGlmIGRlZmluZWQoX19XaW5kb3dzX18pCisjZWxpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzdHJ1Y3Qgc3BpbmxvY2sgaXRfbG9jazsKIAlzdHJ1Y3Qg
c3BpbmxvY2sgaXBpX2l0ZXJhdG9yX3dxX2xvY2s7CiAJS0VWRU5UIGl0ZXJhdG9yX3dha2V1cFsy
XTsKQEAgLTIwOCw3ICsyMDUsNyBAQCBzdHJ1Y3QgaXRlcmF0b3JfY29udHJvbCB7CiAjZWxzZQog
CXZvaWQgKml0X210eDsKICNlbmRpZgotI2lmICFkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICEo
ZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pKQogI2lmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiAJU0NUUF9QUk9DRVNTX1NUUlVDVCB0aHJlYWRfcHJvYzsKICNlbHNl
CkBAIC0yMjAsNyArMjE3LDcgQEAgc3RydWN0IGl0ZXJhdG9yX2NvbnRyb2wgewogCXVpbnQzMl90
IGl0ZXJhdG9yX3J1bm5pbmc7CiAJdWludDMyX3QgaXRlcmF0b3JfZmxhZ3M7CiB9OwotI2lmICFk
ZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmICEoZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykpCiAjZGVmaW5lIFNDVFBfSVRFUkFUT1JfTVVTVF9FWElUCQkweDAw
MDAwMDAxCiAjZGVmaW5lIFNDVFBfSVRFUkFUT1JfRVhJVEVECQkweDAwMDAwMDAyCiAjZW5kaWYK
QEAgLTIyOCwyOCArMjI1LDE4IEBAIHN0cnVjdCBpdGVyYXRvcl9jb250cm9sIHsKICNkZWZpbmUg
U0NUUF9JVEVSQVRPUl9TVE9QX0NVUl9JTlAJMHgwMDAwMDAwOAogCiBzdHJ1Y3Qgc2N0cF9uZXRf
cm91dGUgewotCXNjdHBfcnRlbnRyeV90ICpyb19ydDsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KQotI2lmIF9fRnJlZUJTRF92ZXJzaW9uIDwgMTEwMDA5MwotI2lmIF9fRnJlZUJTRF92ZXJzaW9u
ID49IDgwMDAwMAotCXZvaWQgKnJvX2xsZTsKLSNlbmRpZgotI2lmIF9fRnJlZUJTRF92ZXJzaW9u
ID49IDkwMDAwMAotCXZvaWQgKnJvX2lhOwotCWludCByb19mbGFnczsKLSNlbmRpZgotI2Vsc2UK
LSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSAxMTAwMTE2CisjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwlzdHJ1Y3QgbmhvcF9vYmplY3QgKnJvX25o
OwogCXN0cnVjdCBsbGVudHJ5ICpyb19sbGU7Ci0jZW5kaWYKIAljaGFyCQkqcm9fcHJlcGVuZDsK
IAl1aW50MTZfdAlyb19wbGVuOwogCXVpbnQxNl90CXJvX2ZsYWdzOwogCXVpbnQxNl90CXJvX210
dTsKIAl1aW50MTZfdAlzcGFyZTsKKyNlbHNlCisJc2N0cF9ydGVudHJ5X3QgKnJvX3J0OwogI2Vu
ZGlmCi0jZW5kaWYKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZiAhZGVmaW5lZChBUFBMRV9MRU9QQVJE
KSAmJiAhZGVmaW5lZChBUFBMRV9TTk9XTEVPUEFSRCkgJiYgIWRlZmluZWQoQVBQTEVfTElPTikg
JiYgIWRlZmluZWQoQVBQTEVfTU9VTlRBSU5MSU9OKSAmJiAhZGVmaW5lZChBUFBMRV9FTENBUElU
QU4pCiAJc3RydWN0IGxsZW50cnkJKnJvX2xsZTsKICNlbmRpZgpAQCAtMzM0LDcgKzMyMSw3IEBA
IHN0cnVjdCBzY3RwX25ldHMgewogCWludCBsYXN0c2E7CiAJaW50IGxhc3RzdjsKIAl1aW50NjRf
dCBydHQ7IC8qIGxhc3QgbWVhc3VyZWQgcnR0IHZhbHVlIGluIHVzICovCi0JdW5zaWduZWQgaW50
IFJUTzsKKwl1aW50MzJfdCBSVE87CiAKIAkvKiBUaGlzIGlzIHVzZWQgZm9yIFNIVVRET1dOL1NI
VVRET1dOLUFDSy9TRU5EIG9yIElOSVQgdGltZXJzICovCiAJc3RydWN0IHNjdHBfdGltZXIgcnh0
X3RpbWVyOwpAQCAtNDQzLDcgKzQzMCw3IEBAIHN0cnVjdCBzY3RwX25ldHMgewogCXVpbnQ4X3Qg
bGFzdF9oc191c2VkOwkvKiBpbmRleCBpbnRvIHRoZSBsYXN0IEhTIHRhYmxlIGVudHJ5IHdlIHVz
ZWQgKi8KIAl1aW50OF90IGxhbl90eXBlOwogCXVpbnQ4X3QgcnRvX25lZWRlZDsKLSNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAJdWludDMyX3QgZmxvd2lkOwogCXVpbnQ4X3QgZmxvd3R5cGU7CiAjZW5k
aWYKQEAgLTU5Nyw2ICs1ODQsNyBAQCBzdHJ1Y3Qgc2N0cF9zdHJlYW1fcXVldWVfcGVuZGluZyB7
CiAJdWludDhfdCAgc2VuZGVyX2FsbF9kb25lOwogCXVpbnQ4X3QgIHB1dF9sYXN0X291dDsKIAl1
aW50OF90ICBkaXNjYXJkX3Jlc3Q7CisJdWludDhfdCAgcHJvY2Vzc2luZzsKIH07CiAKIC8qCkBA
IC04NjgsNyArODU2LDYgQEAgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gewogCXN0cnVjdCBzY3Rw
X3RpbWVyIHN0cnJlc2V0X3RpbWVyOwkvKiBzdHJlYW0gcmVzZXQgKi8KIAlzdHJ1Y3Qgc2N0cF90
aW1lciBzaHV0X2d1YXJkX3RpbWVyOwkvKiBzaHV0ZG93biBndWFyZCAqLwogCXN0cnVjdCBzY3Rw
X3RpbWVyIGF1dG9jbG9zZV90aW1lcjsJLyogYXV0b21hdGljIGNsb3NlIHRpbWVyICovCi0Jc3Ry
dWN0IHNjdHBfdGltZXIgZGVsYXllZF9ldmVudF90aW1lcjsJLyogdGltZXIgZm9yIGRlbGF5ZWQg
ZXZlbnRzICovCiAJc3RydWN0IHNjdHBfdGltZXIgZGVsZXRlX3ByaW1fdGltZXI7CS8qIGRlbGV0
aW5nIHByaW1hcnkgZHN0ICovCiAKIAkvKiBsaXN0IG9mIHJlc3RyaWN0ZWQgbG9jYWwgYWRkcmVz
c2VzICovCkBAIC0xMTIyLDcgKzExMDksNyBAQCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiB7CiAJ
dWludDMyX3QgaGVhcnRfYmVhdF9kZWxheTsKIAogCS8qIGF1dG9jbG9zZSAqLwotCXVuc2lnbmVk
IGludCBzY3RwX2F1dG9jbG9zZV90aWNrczsKKwl1aW50MzJfdCBzY3RwX2F1dG9jbG9zZV90aWNr
czsKIAogCS8qIGhvdyBtYW55IHByZW9wZW4gc3RyZWFtcyB3ZSBoYXZlICovCiAJdW5zaWduZWQg
aW50IHByZV9vcGVuX3N0cmVhbXM7CkBAIC0xMTMxLDcgKzExMTgsNyBAQCBzdHJ1Y3Qgc2N0cF9h
c3NvY2lhdGlvbiB7CiAJdW5zaWduZWQgaW50IG1heF9pbmJvdW5kX3N0cmVhbXM7CiAKIAkvKiB0
aGUgY29va2llIGxpZmUgSSBhd2FyZCBmb3IgYW55IGNvb2tpZSwgaW4gc2Vjb25kcyAqLwotCXVu
c2lnbmVkIGludCBjb29raWVfbGlmZTsKKwl1aW50MzJfdCBjb29raWVfbGlmZTsKIAkvKiB0aW1l
IHRvIGRlbGF5IGFja3MgZm9yICovCiAJdW5zaWduZWQgaW50IGRlbGF5ZWRfYWNrOwogCXVuc2ln
bmVkIGludCBvbGRfZGVsYXllZF9hY2s7CkBAIC0xMTQwLDEwICsxMTI3LDEwIEBAIHN0cnVjdCBz
Y3RwX2Fzc29jaWF0aW9uIHsKIAogCXVuc2lnbmVkIGludCBudW1kdXB0c25zOwogCWludCBkdXBf
dHNuc1tTQ1RQX01BWF9EVVBfVFNOU107Ci0JdW5zaWduZWQgaW50IGluaXRpYWxfaW5pdF9ydG9f
bWF4OwkvKiBpbml0aWFsIFJUTyBmb3IgSU5JVCdzICovCi0JdW5zaWduZWQgaW50IGluaXRpYWxf
cnRvOwkvKiBpbml0aWFsIHNlbmQgUlRPICovCi0JdW5zaWduZWQgaW50IG1pbnJ0bzsJLyogcGVy
IGFzc29jIFJUTy1NSU4gKi8KLQl1bnNpZ25lZCBpbnQgbWF4cnRvOwkvKiBwZXIgYXNzb2MgUlRP
LU1BWCAqLworCXVpbnQzMl90IGluaXRpYWxfaW5pdF9ydG9fbWF4OwkvKiBpbml0aWFsIFJUTyBm
b3IgSU5JVCdzICovCisJdWludDMyX3QgaW5pdGlhbF9ydG87CS8qIGluaXRpYWwgc2VuZCBSVE8g
Ki8KKwl1aW50MzJfdCBtaW5ydG87CS8qIHBlciBhc3NvYyBSVE8tTUlOICovCisJdWludDMyX3Qg
bWF4cnRvOwkvKiBwZXIgYXNzb2MgUlRPLU1BWCAqLwogCiAJLyogYXV0aGVudGljYXRpb24gZmll
bGRzICovCiAJc2N0cF9hdXRoX2Noa2xpc3RfdCAqbG9jYWxfYXV0aF9jaHVua3M7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9zeXNjdGwuYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3N5c2N0bC5jCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9k
ZSAxMDA3NTUKaW5kZXggODNkMmM5YTJiODNhMzQ0OTExMjc0ZWQ2MTYwMWY4MjcwMTI0MWFhZS4u
OTEwNjgxMThlMTc2ODlhNGE0NjBmNGM0YWU5NmY1Mzg3YjI2NTM1MwotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91
c3JzY3RwbGliL25ldGluZXQvc2N0cF9zeXNjdGwuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGli
L25ldGluZXQvc2N0cF9zeXNjdGwuYwpAQCAtMzIsOSArMzIsOSBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZmRlZiBfX0ZyZWVCU0RfXworI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8c3lz
L2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9zeXNj
dGwuYyAzMjY2NzIgMjAxNy0xMi0wNyAyMjoxOTowOFogdHVleGVuICQiKTsKK19fRkJTRElEKCIk
RnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX3N5c2N0bC5jIDM2MTkzNCAyMDIwLTA2LTA4
IDIwOjIzOjIwWiB0dWV4ZW4gJCIpOwogI2VuZGlmCiAKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBf
b3MuaD4KQEAgLTQ0LDE1ICs0NCwxNSBAQCBfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25l
dGluZXQvc2N0cF9zeXNjdGwuYyAzMjY2NzIgMjAxNy0xMi0wNyAyMjoxOTowOFogdAogI2luY2x1
ZGUgPG5ldGluZXQvc2N0cF9wY2IuaD4KICNpbmNsdWRlIDxuZXRpbmV0L3NjdHB1dGlsLmg+CiAj
aW5jbHVkZSA8bmV0aW5ldC9zY3RwX291dHB1dC5oPgotI2lmZGVmIF9fRnJlZUJTRF9fCisjaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRl
IDxzeXMvc21wLmg+CiAjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgogI2VuZGlmCi0jaWYgZGVmaW5l
ZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX2JzZF9hZGRyLmg+CiAjZW5kaWYKIAotI2lm
ZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKIEZFQVRVUkUoc2N0cCwgIlN0cmVhbSBDb250cm9sIFRyYW5zbWlzc2lvbiBQ
cm90b2NvbCIpOwogI2VuZGlmCiAKQEAgLTc0LDcgKzc0LDcgQEAgc2N0cF9pbml0X3N5c2N0bHMo
KQogCVNDVFBfQkFTRV9TWVNDVEwoc2N0cF9yZWNvbmZpZ19lbmFibGUpID0gU0NUUENUTF9SRUNP
TkZJR19FTkFCTEVfREVGQVVMVDsKIAlTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbnJzYWNrX2VuYWJs
ZSkgPSBTQ1RQQ1RMX05SU0FDS19FTkFCTEVfREVGQVVMVDsKIAlTQ1RQX0JBU0VfU1lTQ1RMKHNj
dHBfcGt0ZHJvcF9lbmFibGUpID0gU0NUUENUTF9QS1REUk9QX0VOQUJMRV9ERUZBVUxUOwotI2lm
ICEoZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAwMDAwKQor
I2lmICEoZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAJ
U0NUUF9CQVNFX1NZU0NUTChzY3RwX25vX2NzdW1fb25fbG9vcGJhY2spID0gU0NUUENUTF9MT09Q
QkFDS19OT0NTVU1fREVGQVVMVDsKICNlbmRpZgogCVNDVFBfQkFTRV9TWVNDVEwoc2N0cF9wZWVy
X2NodW5rX29oKSA9IFNDVFBDVExfUEVFUl9DSEtPSF9ERUZBVUxUOwpAQCAtMTQ5LDkgKzE0OSwx
MCBAQCBzY3RwX2luaXRfc3lzY3RscygpCiAJU0NUUF9CQVNFX1NZU0NUTChzY3RwX3N0ZWFkeV9z
dGVwKSA9IFNDVFBDVExfUlRUVkFSX1NURUFEWVNfREVGQVVMVDsKIAlTQ1RQX0JBU0VfU1lTQ1RM
KHNjdHBfdXNlX2RjY2NfZWNuKSA9IFNDVFBDVExfUlRUVkFSX0RDQ0NFQ05fREVGQVVMVDsKIAlT
Q1RQX0JBU0VfU1lTQ1RMKHNjdHBfYmxhY2tob2xlKSA9IFNDVFBDVExfQkxBQ0tIT0xFX0RFRkFV
TFQ7CisJU0NUUF9CQVNFX1NZU0NUTChzY3RwX3NlbmRhbGxfbGltaXQpID0gU0NUUENUTF9TRU5E
QUxMX0xJTUlUX0RFRkFVTFQ7CiAJU0NUUF9CQVNFX1NZU0NUTChzY3RwX2RpYWdfaW5mb19jb2Rl
KSA9IFNDVFBDVExfRElBR19JTkZPX0NPREVfREVGQVVMVDsKICNpZiBkZWZpbmVkKFNDVFBfTE9D
QUxfVFJBQ0VfQlVGKQotI2lmIGRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgZGVmaW5lZChfV0lO
MzIpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJLyogT24gV2luZG93cywgdGhlIHJlc291
cmNlIGZvciBnbG9iYWwgdmFyaWFibGVzIGlzIGxpbWl0ZWQuICovCiAJTUFMTE9DKFNDVFBfQkFT
RV9TWVNDVEwoc2N0cF9sb2cpLCBzdHJ1Y3Qgc2N0cF9sb2cgKiwgc2l6ZW9mKHN0cnVjdCBzY3Rw
X2xvZyksIE1fU1lTQ1RMLCBNX1pFUk8pOwogI2Vsc2UKQEAgLTE2NCwxOCArMTY1LDE4IEBAIHNj
dHBfaW5pdF9zeXNjdGxzKCkKICNpZiBkZWZpbmVkKFNDVFBfREVCVUcpCiAJU0NUUF9CQVNFX1NZ
U0NUTChzY3RwX2RlYnVnX29uKSA9IFNDVFBDVExfREVCVUdfREVGQVVMVDsKICNlbmRpZgotI2lm
IGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogCVNDVFBfQkFTRV9TWVNDVEwoc2N0cF9pZ25vcmVfdm13YXJlX2ludGVy
ZmFjZXMpID0gU0NUUENUTF9JR05PUkVfVk1XQVJFX0lOVEVSRkFDRVNfREVGQVVMVDsKIAlTQ1RQ
X0JBU0VfU1lTQ1RMKHNjdHBfbWFpbl90aW1lcikgPSBTQ1RQQ1RMX01BSU5fVElNRVJfREVGQVVM
VDsKIAlTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfYWRkcl93YXRjaGRvZ19saW1pdCkgPSBTQ1RQQ1RM
X0FERFJfV0FUQ0hET0dfTElNSVRfREVGQVVMVDsKIAlTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfdnRh
Z193YXRjaGRvZ19saW1pdCkgPSBTQ1RQQ1RMX1ZUQUdfV0FUQ0hET0dfTElNSVRfREVGQVVMVDsK
ICNlbmRpZgotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19U
RVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCVNDVFBfQkFTRV9TWVNDVEwoc2N0cF9vdXRwdXRfdW5sb2NrZWQpID0gU0NUUENUTF9PVVRQ
VVRfVU5MT0NLRURfREVGQVVMVDsKICNlbmRpZgogfQogCi0jaWYgZGVmaW5lZChfX1dpbmRvd3Nf
XykKKyNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIHZvaWQK
IHNjdHBfZmluaXNoX3N5c2N0bHMoKQogewpAQCAtMTg4LDcgKzE4OSw3IEBAIHNjdHBfZmluaXNo
X3N5c2N0bHMoKQogfQogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5l
ZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogLyogSXQgcmV0dXJucyBhbiB1cHBlciBsaW1pdC4gTm8gZmlsdGVyaW5nIGlz
IGRvbmUgaGVyZSAqLwogc3RhdGljIHVuc2lnbmVkIGludAogc2N0cF9zeXNjdGxfbnVtYmVyX29m
X2FkZHJlc3NlcyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wKQpAQCAtMzI4LDcgKzMyOSw3IEBAIHNj
dHBfc3lzY3RsX2NvcHlfb3V0X2xvY2FsX2FkZHJlc3NlcyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5w
LCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0CiAJCQkJCQlzaW4gPSAmc2N0cF9pZmEtPmFkZHJlc3Muc2lu
OwogCQkJCQkJaWYgKHNpbi0+c2luX2FkZHIuc19hZGRyID09IDApCiAJCQkJCQkJY29udGludWU7
Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCQkJaWYgKHByaXNvbl9jaGVja19pcDQoaW5wLT5p
cF9pbnAuaW5wLmlucF9jcmVkLAogCQkJCQkJICAgICAgICAgICAgICAgICAgICAgJnNpbi0+c2lu
X2FkZHIpICE9IDApIHsKIAkJCQkJCQljb250aW51ZTsKQEAgLTM0OSw3ICszNTAsNyBAQCBzY3Rw
X3N5c2N0bF9jb3B5X291dF9sb2NhbF9hZGRyZXNzZXMoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwg
c3RydWN0IHNjdHBfdGNiICpzdAogCQkJCQkJc2luNiA9ICZzY3RwX2lmYS0+YWRkcmVzcy5zaW42
OwogCQkJCQkJaWYgKElONl9JU19BRERSX1VOU1BFQ0lGSUVEKCZzaW42LT5zaW42X2FkZHIpKQog
CQkJCQkJCWNvbnRpbnVlOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQkJCWlmIChwcmlzb25f
Y2hlY2tfaXA2KGlucC0+aXBfaW5wLmlucC5pbnBfY3JlZCwKIAkJCQkJCSAgICAgICAgICAgICAg
ICAgICAgICZzaW42LT5zaW42X2FkZHIpICE9IDApIHsKIAkJCQkJCQljb250aW51ZTsKQEAgLTQy
Nyw3ICs0MjgsNyBAQCBzY3RwX3N5c2N0bF9jb3B5X291dF9sb2NhbF9hZGRyZXNzZXMoc3RydWN0
IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdAogLyoKICAqIHN5c2N0bCBmdW5j
dGlvbnMKICAqLwotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogc3RhdGljIGludAogc2N0cF9zeXNjdGxfaGFu
ZGxlX2Fzc29jbGlzdCBTWVNDVExfSEFORExFUl9BUkdTCiB7CkBAIC00NTcsNyArNDU4LDcgQEAg
c2N0cF9zeXNjdGxfaGFuZGxlX2Fzc29jbGlzdChTWVNDVExfSEFORExFUl9BUkdTKQogCW51bWJl
cl9vZl9yZW1vdGVfYWRkcmVzc2VzID0gMDsKIAogCVNDVFBfSU5QX0lORk9fUkxPQ0soKTsKLSNp
ZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKIAlpZiAocmVxLT5vbGRwdHIgPT0gVVNFUl9BRERSX05VTEwpIHsKICNl
bHNlCiAJaWYgKHJlcS0+b2xkcHRyID09IE5VTEwpIHsKQEAgLTQ4MiwxNCArNDgzLDE0IEBAIHNj
dHBfc3lzY3RsX2hhbmRsZV9hc3NvY2xpc3QoU1lTQ1RMX0hBTkRMRVJfQVJHUykKIAkJICAgIChu
dW1iZXJfb2ZfcmVtb3RlX2FkZHJlc3NlcyArIG51bWJlcl9vZl9hc3NvY2lhdGlvbnMpICogc2l6
ZW9mKHN0cnVjdCB4c2N0cF9yYWRkcik7CiAKIAkJLyogcmVxdWVzdCBzb21lIG1vcmUgbWVtb3J5
IHRoYW4gbmVlZGVkICovCi0jaWYgIWRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgIShkZWZpbmVk
KF9XSU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAJCXJlcS0+b2xkaWR4ID0gKG4g
KyBuIC8gOCk7CiAjZWxzZQogCQlyZXEtPmRhdGFpZHggPSAobiArIG4gLyA4KTsKICNlbmRpZgog
CQlyZXR1cm4gKDApOwogCX0KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9f
QVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlpZiAocmVxLT5uZXdwdHIgIT0g
VVNFUl9BRERSX05VTEwpIHsKICNlbHNlCiAJaWYgKHJlcS0+bmV3cHRyICE9IE5VTEwpIHsKQEAg
LTQ5OCw2ICs0OTksOSBAQCBzY3RwX3N5c2N0bF9oYW5kbGVfYXNzb2NsaXN0KFNZU0NUTF9IQU5E
TEVSX0FSR1MpCiAJCVNDVFBfTFRSQUNFX0VSUl9SRVQoTlVMTCwgTlVMTCwgTlVMTCwgU0NUUF9G
Uk9NX1NDVFBfU1lTQ1RMLCBFUEVSTSk7CiAJCXJldHVybiAoRVBFUk0pOwogCX0KKwltZW1zZXQo
JnhpbnBjYiwgMCwgc2l6ZW9mKHhpbnBjYikpOworCW1lbXNldCgmeHN0Y2IsIDAsIHNpemVvZih4
c3RjYikpOworCW1lbXNldCgmeHJhZGRyLCAwLCBzaXplb2YoeHJhZGRyKSk7CiAJTElTVF9GT1JF
QUNIKGlucCwgJlNDVFBfQkFTRV9JTkZPKGxpc3RoZWFkKSwgc2N0cF9saXN0KSB7CiAJCVNDVFBf
SU5QX1JMT0NLKGlucCk7CiAJCWlmIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19T
T0NLRVRfQUxMR09ORSkgewpAQCAtNTA3LDE2ICs1MTEsMTQgQEAgc2N0cF9zeXNjdGxfaGFuZGxl
X2Fzc29jbGlzdChTWVNDVExfSEFORExFUl9BUkdTKQogCQl4aW5wY2IubGFzdCA9IDA7CiAJCXhp
bnBjYi5sb2NhbF9wb3J0ID0gbnRvaHMoaW5wLT5zY3RwX2xwb3J0KTsKIAkJeGlucGNiLmZsYWdz
ID0gaW5wLT5zY3RwX2ZsYWdzOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJT
RF92ZXJzaW9uIDwgMTAwMDA0OAotCQl4aW5wY2IuZmVhdHVyZXMgPSAodWludDMyX3QpaW5wLT5z
Y3RwX2ZlYXR1cmVzOwotI2Vsc2UKIAkJeGlucGNiLmZlYXR1cmVzID0gaW5wLT5zY3RwX2ZlYXR1
cmVzOwotI2VuZGlmCiAJCXhpbnBjYi50b3RhbF9zZW5kcyA9IGlucC0+dG90YWxfc2VuZHM7CiAJ
CXhpbnBjYi50b3RhbF9yZWN2cyA9IGlucC0+dG90YWxfcmVjdnM7CiAJCXhpbnBjYi50b3RhbF9u
b3NwYWNlcyA9IGlucC0+dG90YWxfbm9zcGFjZXM7CiAJCXhpbnBjYi5mcmFnbWVudGF0aW9uX3Bv
aW50ID0gaW5wLT5zY3RwX2ZyYWdfcG9pbnQ7Ci0jaWYgIShkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAoX19GcmVlQlNEX3ZlcnNpb24gPCAxMDAxNTE3KSkKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQl4aW5wY2Iuc29ja2V0ID0gKHVpbnRwdHJf
dClpbnAtPnNjdHBfc29ja2V0OworI2Vsc2UKIAkJeGlucGNiLnNvY2tldCA9IGlucC0+c2N0cF9z
b2NrZXQ7CiAjZW5kaWYKIAkJc28gPSBpbnAtPnNjdHBfc29ja2V0OwpAQCAtNTI2LDMzICs1Mjgs
MTYgQEAgc2N0cF9zeXNjdGxfaGFuZGxlX2Fzc29jbGlzdChTWVNDVExfSEFORExFUl9BUkdTKQog
CQkJeGlucGNiLnFsZW4gPSAwOwogCQkJeGlucGNiLm1heHFsZW4gPSAwOwogCQl9IGVsc2Ugewot
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDEyMDAwMzQK
KyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJ
eGlucGNiLnFsZW4gPSBzby0+c29sX3FsZW47Ci0jZWxzZQotCQkJeGlucGNiLnFsZW4gPSBzby0+
c29fcWxlbjsKLSNlbmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92
ZXJzaW9uID4gMTEwMDA5NgotI2lmIF9fRnJlZUJTRF92ZXJzaW9uID49IDEyMDAwMzQKIAkJCXhp
bnBjYi5xbGVuX29sZCA9IHNvLT5zb2xfcWxlbiA+IFVTSFJUX01BWCA/CiAJCQkgICAgVVNIUlRf
TUFYIDogKHVpbnQxNl90KSBzby0+c29sX3FsZW47Ci0jZWxzZQotCQkJeGlucGNiLnFsZW5fb2xk
ID0gc28tPnNvX3FsZW4gPiBVU0hSVF9NQVggPwotCQkJICAgIFVTSFJUX01BWCA6ICh1aW50MTZf
dCkgc28tPnNvX3FsZW47Ci0jZW5kaWYKLSNlbmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
ICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDEyMDAwMzQKIAkJCXhpbnBjYi5tYXhxbGVuID0gc28t
PnNvbF9xbGltaXQ7Ci0jZWxzZQotCQkJeGlucGNiLm1heHFsZW4gPSBzby0+c29fcWxpbWl0Owot
I2VuZGlmCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPiAx
MTAwMDk2Ci0jaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0gMTIwMDAzNAogCQkJeGlucGNiLm1heHFs
ZW5fb2xkID0gc28tPnNvbF9xbGltaXQgPiBVU0hSVF9NQVggPwogCQkJICAgIFVTSFJUX01BWCA6
ICh1aW50MTZfdCkgc28tPnNvbF9xbGltaXQ7CiAjZWxzZQotCQkJeGlucGNiLm1heHFsZW5fb2xk
ID0gc28tPnNvX3FsaW1pdCA+IFVTSFJUX01BWCA/Ci0JCQkgICAgVVNIUlRfTUFYIDogKHVpbnQx
Nl90KSBzby0+c29fcWxpbWl0OwotI2VuZGlmCisJCQl4aW5wY2IucWxlbiA9IHNvLT5zb19xbGVu
OworCQkJeGlucGNiLm1heHFsZW4gPSBzby0+c29fcWxpbWl0OwogI2VuZGlmCiAJCX0KIAkJU0NU
UF9JTlBfSU5DUl9SRUYoaW5wKTsKQEAgLTU4MSwxNiArNTY2LDggQEAgc2N0cF9zeXNjdGxfaGFu
ZGxlX2Fzc29jbGlzdChTWVNDVExfSEFORExFUl9BUkdTKQogCQkJCXhzdGNiLnByaW1hcnlfYWRk
ciA9IHN0Y2ItPmFzb2MucHJpbWFyeV9kZXN0aW5hdGlvbi0+cm8uX2xfYWRkcjsKIAkJCXhzdGNi
LmhlYXJ0YmVhdF9pbnRlcnZhbCA9IHN0Y2ItPmFzb2MuaGVhcnRfYmVhdF9kZWxheTsKIAkJCXhz
dGNiLnN0YXRlID0gKHVpbnQzMl90KXNjdHBfbWFwX2Fzc29jX3N0YXRlKHN0Y2ItPmFzb2Muc3Rh
dGUpOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCi0jaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0g
ODAwMDAwCi0JCQkvKiA3LjAgZG9lcyBub3Qgc3VwcG9ydCB0aGVzZSAqLwogCQkJeHN0Y2IuYXNz
b2NfaWQgPSBzY3RwX2dldF9hc3NvY2lkKHN0Y2IpOwogCQkJeHN0Y2IucGVlcnNfcnduZCA9IHN0
Y2ItPmFzb2MucGVlcnNfcnduZDsKLSNlbmRpZgotI2Vsc2UKLQkJCXhzdGNiLmFzc29jX2lkID0g
c2N0cF9nZXRfYXNzb2NpZChzdGNiKTsKLQkJCXhzdGNiLnBlZXJzX3J3bmQgPSBzdGNiLT5hc29j
LnBlZXJzX3J3bmQ7Ci0jZW5kaWYKIAkJCXhzdGNiLmluX3N0cmVhbXMgPSBzdGNiLT5hc29jLnN0
cmVhbWluY250OwogCQkJeHN0Y2Iub3V0X3N0cmVhbXMgPSBzdGNiLT5hc29jLnN0cmVhbW91dGNu
dDsKIAkJCXhzdGNiLm1heF9ucl9yZXRyYW5zID0gc3RjYi0+YXNvYy5vdmVyYWxsX2Vycm9yX2Nv
dW50OwpAQCAtNjQyLDggKzYxOSw2IEBAIHNjdHBfc3lzY3RsX2hhbmRsZV9hc3NvY2xpc3QoU1lT
Q1RMX0hBTkRMRVJfQVJHUykKIAkJCQl4cmFkZHIuY3duZCA9IG5ldC0+Y3duZDsKIAkJCQl4cmFk
ZHIuZmxpZ2h0X3NpemUgPSBuZXQtPmZsaWdodF9zaXplOwogCQkJCXhyYWRkci5tdHUgPSBuZXQt
Pm10dTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQotI2lmIF9fRnJlZUJTRF92ZXJzaW9uID49
IDgwMDAwMAogCQkJCXhyYWRkci5ydHQgPSBuZXQtPnJ0dCAvIDEwMDA7CiAJCQkJeHJhZGRyLmhl
YXJ0YmVhdF9pbnRlcnZhbCA9IG5ldC0+aGVhcnRfYmVhdF9kZWxheTsKIAkJCQl4cmFkZHIuc3N0
aHJlc2ggPSBuZXQtPnNzdGhyZXNoOwpAQCAtNjU1LDIwICs2MzAsNiBAQCBzY3RwX3N5c2N0bF9o
YW5kbGVfYXNzb2NsaXN0KFNZU0NUTF9IQU5ETEVSX0FSR1MpCiAJCQkJfSBlbHNlIHsKIAkJCQkJ
eHJhZGRyLnN0YXRlID0gU0NUUF9JTkFDVElWRTsKIAkJCQl9Ci0jZW5kaWYKLSNlbHNlCi0JCQkJ
eHJhZGRyLnJ0dCA9IG5ldC0+cnR0IC8gMTAwMDsKLQkJCQl4cmFkZHIuaGVhcnRiZWF0X2ludGVy
dmFsID0gbmV0LT5oZWFydF9iZWF0X2RlbGF5OwotCQkJCXhyYWRkci5zc3RocmVzaCA9IG5ldC0+
c3N0aHJlc2g7Ci0JCQkJeHJhZGRyLmVuY2Fwc19wb3J0ID0gbmV0LT5wb3J0OwotCQkJCWlmIChu
ZXQtPmRlc3Rfc3RhdGUgJiBTQ1RQX0FERFJfVU5DT05GSVJNRUQpIHsKLQkJCQkJeHJhZGRyLnN0
YXRlID0gU0NUUF9VTkNPTkZJUk1FRDsKLQkJCQl9IGVsc2UgaWYgKG5ldC0+ZGVzdF9zdGF0ZSAm
IFNDVFBfQUREUl9SRUFDSEFCTEUpIHsKLQkJCQkJeHJhZGRyLnN0YXRlID0gU0NUUF9BQ1RJVkU7
Ci0JCQkJfSBlbHNlIHsKLQkJCQkJeHJhZGRyLnN0YXRlID0gU0NUUF9JTkFDVElWRTsKLQkJCQl9
Ci0jZW5kaWYKIAkJCQl4cmFkZHIuc3RhcnRfdGltZS50dl9zZWMgPSAodWludDMyX3QpbmV0LT5z
dGFydF90aW1lLnR2X3NlYzsKIAkJCQl4cmFkZHIuc3RhcnRfdGltZS50dl91c2VjID0gKHVpbnQz
Ml90KW5ldC0+c3RhcnRfdGltZS50dl91c2VjOwogCQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsK
QEAgLTcxNSw3ICs2NzYsNyBAQCBza2lwOgogCXJldHVybiAoZXJyb3IpOwogfQogCi0jaWYgZGVm
aW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiBzdGF0aWMgaW50CiBzY3RwX3N5c2N0bF9oYW5kbGVfdWRwX3R1bm5lbGluZyBT
WVNDVExfSEFORExFUl9BUkdTCiB7CkBAIC03MzIsMjIgKzY5MywxNCBAQCBzY3RwX3N5c2N0bF9o
YW5kbGVfdWRwX3R1bm5lbGluZyhTWVNDVExfSEFORExFUl9BUkdTKQogCW9sZCA9IFNDVFBfQkFT
RV9TWVNDVEwoc2N0cF91ZHBfdHVubmVsaW5nX3BvcnQpOwogCVNDVFBfSU5QX0lORk9fUlVOTE9D
SygpOwogCW5ldyA9IG9sZDsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0Rf
dmVyc2lvbiA+PSA4MDAwNTYgJiYgX19GcmVlQlNEX3ZlcnNpb24gPCAxMDAwMTAwCi0jaWZkZWYg
VklNQUdFCi0JZXJyb3IgPSB2bmV0X3N5c2N0bF9oYW5kbGVfaW50KG9pZHAsICZuZXcsIDAsIHJl
cSk7Ci0jZWxzZQogCWVycm9yID0gc3lzY3RsX2hhbmRsZV9pbnQob2lkcCwgJm5ldywgMCwgcmVx
KTsKLSNlbmRpZgotI2Vsc2UKLQllcnJvciA9IHN5c2N0bF9oYW5kbGVfaW50KG9pZHAsICZuZXcs
IDAsIHJlcSk7Ci0jZW5kaWYKIAlpZiAoKGVycm9yID09IDApICYmCi0jaWYgZGVmaW5lZCAoX19B
UFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCSAgICAocmVxLT5uZXdwdHIgIT0gVVNFUl9BRERSX05VTEwpKSB7CiAjZWxzZQogCSAgICAo
cmVxLT5uZXdwdHIgIT0gTlVMTCkpIHsKICNlbmRpZgotI2lmIGRlZmluZWQoX19XaW5kb3dzX18p
CisjaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCVNDVFBf
SU5QX0lORk9fV0xPQ0soKTsKIAkJc2N0cF9vdmVyX3VkcF9yZXN0YXJ0KCk7CiAJCVNDVFBfSU5Q
X0lORk9fV1VOTE9DSygpOwpAQCAtNzc1LDcgKzcyOCw3IEBAIHNjdHBfc3lzY3RsX2hhbmRsZV91
ZHBfdHVubmVsaW5nKFNZU0NUTF9IQU5ETEVSX0FSR1MpCiAJcmV0dXJuIChlcnJvcik7CiB9CiAK
LSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKIGludCBzY3RwX2lzX3Ztd2FyZV9pbnRlcmZhY2Uoc3RydWN0IGlm
bmV0ICopOwogCiBzdGF0aWMgaW50CkBAIC04MDgsNyArNzYxLDcgQEAgc2N0cF9zeXNjdGxfaGFu
ZGxlX3Ztd2FyZV9pbnRlcmZhY2VzIFNZU0NUTF9IQU5ETEVSX0FSR1MKIH0KICNlbmRpZgogCi0j
aWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiBzdGF0aWMgaW50CiBzY3RwX3N5c2N0bF9oYW5kbGVfYXV0aCBTWVND
VExfSEFORExFUl9BUkdTCiB7CkBAIC04MjIsMTcgKzc3NSw5IEBAIHNjdHBfc3lzY3RsX2hhbmRs
ZV9hdXRoKFNZU0NUTF9IQU5ETEVSX0FSR1MpCiAJdWludDMyX3QgbmV3OwogCiAJbmV3ID0gU0NU
UF9CQVNFX1NZU0NUTChzY3RwX2F1dGhfZW5hYmxlKTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDAwNTYgJiYgX19GcmVlQlNEX3ZlcnNpb24gPCAx
MDAwMTAwCi0jaWZkZWYgVklNQUdFCi0JZXJyb3IgPSB2bmV0X3N5c2N0bF9oYW5kbGVfaW50KG9p
ZHAsICZuZXcsIDAsIHJlcSk7Ci0jZWxzZQotCWVycm9yID0gc3lzY3RsX2hhbmRsZV9pbnQob2lk
cCwgJm5ldywgMCwgcmVxKTsKLSNlbmRpZgotI2Vsc2UKIAllcnJvciA9IHN5c2N0bF9oYW5kbGVf
aW50KG9pZHAsICZuZXcsIDAsIHJlcSk7Ci0jZW5kaWYKIAlpZiAoKGVycm9yID09IDApICYmCi0j
aWYgZGVmaW5lZCAoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogCSAgICAocmVxLT5uZXdwdHIgIT0gVVNFUl9BRERSX05VTEwpKSB7
CiAjZWxzZQogCSAgICAocmVxLT5uZXdwdHIgIT0gTlVMTCkpIHsKQEAgLTg1Myw3ICs3OTgsNyBA
QCBzY3RwX3N5c2N0bF9oYW5kbGVfYXV0aChTWVNDVExfSEFORExFUl9BUkdTKQogCXJldHVybiAo
ZXJyb3IpOwogfQogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExF
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBzdGF0aWMgaW50CiBzY3RwX3N5c2N0bF9o
YW5kbGVfYXNjb25mIFNZU0NUTF9IQU5ETEVSX0FSR1MKIHsKQEAgLTg2NywxNyArODEyLDkgQEAg
c2N0cF9zeXNjdGxfaGFuZGxlX2FzY29uZihTWVNDVExfSEFORExFUl9BUkdTKQogCXVpbnQzMl90
IG5ldzsKIAogCW5ldyA9IFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9hc2NvbmZfZW5hYmxlKTsKLSNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDAwNTYgJiYg
X19GcmVlQlNEX3ZlcnNpb24gPCAxMDAwMTAwCi0jaWZkZWYgVklNQUdFCi0JZXJyb3IgPSB2bmV0
X3N5c2N0bF9oYW5kbGVfaW50KG9pZHAsICZuZXcsIDAsIHJlcSk7Ci0jZWxzZQogCWVycm9yID0g
c3lzY3RsX2hhbmRsZV9pbnQob2lkcCwgJm5ldywgMCwgcmVxKTsKLSNlbmRpZgotI2Vsc2UKLQll
cnJvciA9IHN5c2N0bF9oYW5kbGVfaW50KG9pZHAsICZuZXcsIDAsIHJlcSk7Ci0jZW5kaWYKIAlp
ZiAoKGVycm9yID09IDApICYmCi0jaWYgZGVmaW5lZCAoX19BUFBMRV9fKQorI2lmIGRlZmluZWQo
X19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCSAgICAocmVxLT5uZXdwdHIg
IT0gVVNFUl9BRERSX05VTEwpKSB7CiAjZWxzZQogCSAgICAocmVxLT5uZXdwdHIgIT0gTlVMTCkp
IHsKQEAgLTg5OCw3ICs4MzUsNyBAQCBzY3RwX3N5c2N0bF9oYW5kbGVfYXNjb25mKFNZU0NUTF9I
QU5ETEVSX0FSR1MpCiAJcmV0dXJuIChlcnJvcik7CiB9CiAKLSNpZiBkZWZpbmVkKF9fQVBQTEVf
XykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIHN0
YXRpYyBpbnQKIHNjdHBfc3lzY3RsX2hhbmRsZV9zdGF0cyBTWVNDVExfSEFORExFUl9BUkdTCiB7
CkBAIC05MDksNyArODQ2LDcgQEAgc2N0cF9zeXNjdGxfaGFuZGxlX3N0YXRzKFNZU0NUTF9IQU5E
TEVSX0FSR1MpCiB7CiAjZW5kaWYKIAlpbnQgZXJyb3I7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
I2lmIGRlZmluZWQoU01QKSAmJiBkZWZpbmVkKFNDVFBfVVNFX1BFUkNQVV9TVEFUKQogCXN0cnVj
dCBzY3Rwc3RhdCAqc2Fycnk7CiAJc3RydWN0IHNjdHBzdGF0IHNiOwpAQCAtOTE4LDcgKzg1NSw3
IEBAIHNjdHBfc3lzY3RsX2hhbmRsZV9zdGF0cyhTWVNDVExfSEFORExFUl9BUkdTKQogCXN0cnVj
dCBzY3Rwc3RhdCBzYl90ZW1wOwogI2VuZGlmCiAKLSNpZiBkZWZpbmVkIChfX0FQUExFX18pCisj
aWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJaWYgKChy
ZXEtPm5ld3B0ciAhPSBVU0VSX0FERFJfTlVMTCkgJiYKICNlbHNlCiAJaWYgKChyZXEtPm5ld3B0
ciAhPSBOVUxMKSAmJgpAQCAtOTI2LDcgKzg2Myw3IEBAIHNjdHBfc3lzY3RsX2hhbmRsZV9zdGF0
cyhTWVNDVExfSEFORExFUl9BUkdTKQogCSAgICAocmVxLT5uZXdsZW4gIT0gc2l6ZW9mKHN0cnVj
dCBzY3Rwc3RhdCkpKSB7CiAJCXJldHVybiAoRUlOVkFMKTsKIAl9Ci0jaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogCW1lbXNldCgmc2JfdGVtcCwgMCwgc2l6ZW9mKHN0cnVjdCBzY3Rwc3RhdCkpOwogCiAJ
aWYgKHJlcS0+bmV3cHRyICE9IE5VTEwpIHsKQEAgLTEwODMsNyArMTAyMCw3IEBAIHNjdHBfc3lz
Y3RsX2hhbmRsZV9zdGF0cyhTWVNDVExfSEFORExFUl9BUkdTKQogfQogCiAjaWYgZGVmaW5lZChT
Q1RQX0xPQ0FMX1RSQUNFX0JVRikKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVk
KF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIHN0YXRpYyBpbnQKIHNjdHBf
c3lzY3RsX2hhbmRsZV90cmFjZV9sb2cgU1lTQ1RMX0hBTkRMRVJfQVJHUwogewpAQCAtMTA5NSw3
ICsxMDMyLDcgQEAgc2N0cF9zeXNjdGxfaGFuZGxlX3RyYWNlX2xvZyhTWVNDVExfSEFORExFUl9B
UkdTKQogI2VuZGlmCiAJaW50IGVycm9yOwogCi0jaWYgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNp
ZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAllcnJvciA9IFNZ
U0NUTF9PVVQocmVxLCBTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbG9nKSwgc2l6ZW9mKHN0cnVjdCBz
Y3RwX2xvZykpOwogI2Vsc2UKIAllcnJvciA9IFNZU0NUTF9PVVQocmVxLCAmU0NUUF9CQVNFX1NZ
U0NUTChzY3RwX2xvZyksIHNpemVvZihzdHJ1Y3Qgc2N0cF9sb2cpKTsKQEAgLTExMDMsNyArMTA0
MCw3IEBAIHNjdHBfc3lzY3RsX2hhbmRsZV90cmFjZV9sb2coU1lTQ1RMX0hBTkRMRVJfQVJHUykK
IAlyZXR1cm4gKGVycm9yKTsKIH0KIAotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmlu
ZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogc3RhdGljIGludAogc2N0
cF9zeXNjdGxfaGFuZGxlX3RyYWNlX2xvZ19jbGVhciBTWVNDVExfSEFORExFUl9BUkdTCiB7CkBA
IC0xMTE0LDcgKzEwNTEsNyBAQCBzY3RwX3N5c2N0bF9oYW5kbGVfdHJhY2VfbG9nX2NsZWFyKFNZ
U0NUTF9IQU5ETEVSX0FSR1MpCiB7CiAjZW5kaWYKIAlpbnQgZXJyb3IgPSAwOwotI2lmIGRlZmlu
ZWQoX19XaW5kb3dzX18pCisjaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJaW50IHZhbHVlID0gMDsKIAogCWlmIChyZXEtPm5ld19kYXRhID09IE5VTEwpIHsK
QEAgLTExMzIsNTcgKzEwNjksOCBAQCBzY3RwX3N5c2N0bF9oYW5kbGVfdHJhY2VfbG9nX2NsZWFy
KFNZU0NUTF9IQU5ETEVSX0FSR1MpCiB9CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoX19BUFBMRV9f
KSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIChkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVm
aW5lZChfX0ZyZWVCU0RfXykpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykKLSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDAwNTYgJiYgX19GcmVl
QlNEX3ZlcnNpb24gPCAxMDAwMTAwCi0jaWZkZWYgVklNQUdFCi0jZGVmaW5lIFNDVFBfVUlOVF9T
WVNDVEwobmFtZSwgdmFyX25hbWUsIHByZWZpeCkJCQlcCi0Jc3RhdGljIGludAkJCQkJCQlcCi0J
c2N0cF9zeXNjdGxfaGFuZGxlXyMjbWliX25hbWUoU1lTQ1RMX0hBTkRMRVJfQVJHUykJCVwKLQl7
CQkJCQkJCQlcCi0JCWludCBlcnJvcjsJCQkJCQlcCi0JCXVpbnQzMl90IG5ldzsJCQkJCQlcCi0J
CQkJCQkJCQlcCi0JCW5ldyA9IFNDVFBfQkFTRV9TWVNDVEwodmFyX25hbWUpOwkJCVwKLQkJZXJy
b3IgPSB2bmV0X3N5c2N0bF9oYW5kbGVfaW50KG9pZHAsICZuZXcsIDAsIHJlcSk7CVwKLQkJaWYg
KChlcnJvciA9PSAwKSAmJiAocmVxLT5uZXdwdHIgIT0gTlVMTCkpIHsJCVwKLQkJCWlmICgobmV3
IDwgcHJlZml4IyNfTUlOKSB8fAkJCVwKLQkJCSAgICAobmV3ID4gcHJlZml4IyNfTUFYKSkgewkJ
CVwKLQkJCQllcnJvciA9IEVJTlZBTDsJCQkJXAotCQkJfSBlbHNlIHsJCQkJCVwKLQkJCQlTQ1RQ
X0JBU0VfU1lTQ1RMKHZhcl9uYW1lKSA9IG5ldzsJXAotCQkJfQkJCQkJCVwKLQkJfQkJCQkJCQlc
Ci0JCXJldHVybiAoZXJyb3IpOwkJCQkJCVwKLQl9CQkJCQkJCQlcCi0JU1lTQ1RMX1BST0MoX25l
dF9pbmV0X3NjdHAsIE9JRF9BVVRPLCBtaWJfbmFtZSwJCQlcCi0JICAgICAgICAgICAgICAgICBD
VExUWVBFX1VJTlR8Q1RMRkxBR19SVywgTlVMTCwgMCwJCVwKLQkgICAgICAgICAgICAgICAgIHNj
dHBfc3lzY3RsX2hhbmRsZV8jI21pYl9uYW1lLCAiVUkiLCBwcmVmaXgjI19ERVNDKTsKLSNlbHNl
Ci0jZGVmaW5lIFNDVFBfVUlOVF9TWVNDVEwobWliX25hbWUsIHZhcl9uYW1lLCBwcmVmaXgpCQkJ
XAotCXN0YXRpYyBpbnQJCQkJCQkJXAotCXNjdHBfc3lzY3RsX2hhbmRsZV8jI21pYl9uYW1lKFNZ
U0NUTF9IQU5ETEVSX0FSR1MpCQlcCi0JewkJCQkJCQkJXAotCQlpbnQgZXJyb3I7CQkJCQkJXAot
CQl1aW50MzJfdCBuZXc7CQkJCQkJXAotCQkJCQkJCQkJXAotCQluZXcgPSBTQ1RQX0JBU0VfU1lT
Q1RMKHZhcl9uYW1lKTsJCQlcCi0JCWVycm9yID0gc3lzY3RsX2hhbmRsZV9pbnQob2lkcCwgJm5l
dywgMCwgcmVxKTsJCVwKLQkJaWYgKChlcnJvciA9PSAwKSAmJiAocmVxLT5uZXdwdHIgIT0gTlVM
TCkpIHsJCVwKLQkJCWlmICgobmV3IDwgcHJlZml4IyNfTUlOKSB8fAkJCVwKLQkJCSAgICAobmV3
ID4gcHJlZml4IyNfTUFYKSkgewkJCVwKLQkJCQllcnJvciA9IEVJTlZBTDsJCQkJXAotCQkJfSBl
bHNlIHsJCQkJCVwKLQkJCQlTQ1RQX0JBU0VfU1lTQ1RMKHZhcl9uYW1lKSA9IG5ldzsJXAotCQkJ
fQkJCQkJCVwKLQkJfQkJCQkJCQlcCi0JCXJldHVybiAoZXJyb3IpOwkJCQkJCVwKLQl9CQkJCQkJ
CQlcCi0JU1lTQ1RMX1BST0MoX25ldF9pbmV0X3NjdHAsIE9JRF9BVVRPLCBtaWJfbmFtZSwJCQlc
Ci0JICAgICAgICAgICAgICAgICBDVExGTEFHX1ZORVR8Q1RMVFlQRV9VSU5UfENUTEZMQUdfUlcs
IE5VTEwsIDAsCVwKLQkgICAgICAgICAgICAgICAgIHNjdHBfc3lzY3RsX2hhbmRsZV8jI21pYl9u
YW1lLCAiVUkiLCBwcmVmaXgjI19ERVNDKTsKLSNlbmRpZgotI2Vsc2UKICNkZWZpbmUgU0NUUF9V
SU5UX1NZU0NUTChtaWJfbmFtZSwgdmFyX25hbWUsIHByZWZpeCkJCQlcCiAJc3RhdGljIGludAkJ
CQkJCQlcCiAJc2N0cF9zeXNjdGxfaGFuZGxlXyMjbWliX25hbWUoU1lTQ1RMX0hBTkRMRVJfQVJH
UykJCVwKQEAgLTEyMDUsNyArMTA5Myw2IEBAIHNjdHBfc3lzY3RsX2hhbmRsZV90cmFjZV9sb2df
Y2xlYXIoU1lTQ1RMX0hBTkRMRVJfQVJHUykKIAlTWVNDVExfUFJPQyhfbmV0X2luZXRfc2N0cCwg
T0lEX0FVVE8sIG1pYl9uYW1lLAkJCVwKIAkgICAgICAgICAgICAgICAgIENUTEZMQUdfVk5FVHxD
VExUWVBFX1VJTlR8Q1RMRkxBR19SVywgTlVMTCwgMCwJXAogCSAgICAgICAgICAgICAgICAgc2N0
cF9zeXNjdGxfaGFuZGxlXyMjbWliX25hbWUsICJVSSIsIHByZWZpeCMjX0RFU0MpOwotI2VuZGlm
CiAjZWxzZQogI2RlZmluZSBTQ1RQX1VJTlRfU1lTQ1RMKG1pYl9uYW1lLCB2YXJfbmFtZSwgcHJl
Zml4KQkJCVwKIAlzdGF0aWMgaW50CQkJCQkJCVwKQEAgLTEyNTIsNyArMTEzOSw3IEBAIFNZU0NU
TF9QUk9DKF9uZXRfaW5ldF9zY3RwLCBPSURfQVVUTywgYXNjb25mX2VuYWJsZSwgQ1RMRkxBR19W
TkVUfENUTFRZUEVfVUlOVHxDCiBTQ1RQX1VJTlRfU1lTQ1RMKHJlY29uZmlnX2VuYWJsZSwgc2N0
cF9yZWNvbmZpZ19lbmFibGUsIFNDVFBDVExfUkVDT05GSUdfRU5BQkxFKQogU0NUUF9VSU5UX1NZ
U0NUTChucnNhY2tfZW5hYmxlLCBzY3RwX25yc2Fja19lbmFibGUsIFNDVFBDVExfTlJTQUNLX0VO
QUJMRSkKIFNDVFBfVUlOVF9TWVNDVEwocGt0ZHJvcF9lbmFibGUsIHNjdHBfcGt0ZHJvcF9lbmFi
bGUsIFNDVFBDVExfUEtURFJPUF9FTkFCTEUpCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYg
ZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBTQ1RQX1VJTlRf
U1lTQ1RMKGxvb3BiYWNrX25vY3N1bSwgc2N0cF9ub19jc3VtX29uX2xvb3BiYWNrLCBTQ1RQQ1RM
X0xPT1BCQUNLX05PQ1NVTSkKICNlbmRpZgogU0NUUF9VSU5UX1NZU0NUTChwZWVyX2Noa29oLCBz
Y3RwX3BlZXJfY2h1bmtfb2gsIFNDVFBDVExfUEVFUl9DSEtPSCkKQEAgLTEzMTksMTggKzEyMDYs
MTkgQEAgU0NUUF9VSU5UX1NZU0NUTChydHR2YXJfZXFyZXQsIHNjdHBfcnR0dmFyX2VxcmV0LCBT
Q1RQQ1RMX1JUVFZBUl9FUVJFVCkKIFNDVFBfVUlOVF9TWVNDVEwocnR0dmFyX3N0ZWFkeV9zdGVw
LCBzY3RwX3N0ZWFkeV9zdGVwLCBTQ1RQQ1RMX1JUVFZBUl9TVEVBRFlTKQogU0NUUF9VSU5UX1NZ
U0NUTCh1c2VfZGNjY2Vjbiwgc2N0cF91c2VfZGNjY19lY24sIFNDVFBDVExfUlRUVkFSX0RDQ0NF
Q04pCiBTQ1RQX1VJTlRfU1lTQ1RMKGJsYWNraG9sZSwgc2N0cF9ibGFja2hvbGUsIFNDVFBDVExf
QkxBQ0tIT0xFKQorU0NUUF9VSU5UX1NZU0NUTChzZW5kYWxsX2xpbWl0LCBzY3RwX3NlbmRhbGxf
bGltaXQsIFNDVFBDVExfU0VOREFMTF9MSU1JVCkKIFNDVFBfVUlOVF9TWVNDVEwoZGlhZ19pbmZv
X2NvZGUsIHNjdHBfZGlhZ19pbmZvX2NvZGUsIFNDVFBDVExfRElBR19JTkZPX0NPREUpCiAjaWZk
ZWYgU0NUUF9ERUJVRwogU0NUUF9VSU5UX1NZU0NUTChkZWJ1Zywgc2N0cF9kZWJ1Z19vbiwgU0NU
UENUTF9ERUJVRykKICNlbmRpZgotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQo
X19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogU0NUUF9VSU5UX1NZU0NUTCht
YWluX3RpbWVyLCBzY3RwX21haW5fdGltZXIsIFNDVFBDVExfTUFJTl9USU1FUikKIFNZU0NUTF9Q
Uk9DKF9uZXRfaW5ldF9zY3RwLCBPSURfQVVUTywgaWdub3JlX3Ztd2FyZV9pbnRlcmZhY2VzLCBD
VExUWVBFX1VJTlR8Q1RMRkxBR19SVywKICAgICAgICAgICAgIE5VTEwsIDAsIHNjdHBfc3lzY3Rs
X2hhbmRsZV92bXdhcmVfaW50ZXJmYWNlcywgIklVIiwgU0NUUENUTF9JR05PUkVfVk1XQVJFX0lO
VEVSRkFDRVNfREVTQyk7CiBTQ1RQX1VJTlRfU1lTQ1RMKGFkZHJfd2F0Y2hkb2dfbGltaXQsIHNj
dHBfYWRkcl93YXRjaGRvZ19saW1pdCwgU0NUUENUTF9BRERSX1dBVENIRE9HX0xJTUlUKQogU0NU
UF9VSU5UX1NZU0NUTCh2dGFnX3dhdGNoZG9nX2xpbWl0LCBzY3RwX3Z0YWdfd2F0Y2hkb2dfbGlt
aXQsIFNDVFBDVExfVlRBR19XQVRDSERPR19MSU1JVCkKICNlbmRpZgotI2lmIGRlZmluZWQoX19B
UFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19B
UFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogU0NUUF9VSU5UX1NZU0NUTChvdXRw
dXRfdW5sb2NrZWQsIHNjdHBfb3V0cHV0X3VubG9ja2VkLCBTQ1RQQ1RMX09VVFBVVF9VTkxPQ0tF
RCkKICNlbmRpZgogU1lTQ1RMX1BST0MoX25ldF9pbmV0X3NjdHAsIE9JRF9BVVRPLCBzdGF0cywg
Q1RMRkxBR19WTkVUfENUTFRZUEVfU1RSVUNUfENUTEZMQUdfUlcsCkBAIC0xMzM4LDcgKzEyMjYs
NyBAQCBTWVNDVExfUFJPQyhfbmV0X2luZXRfc2N0cCwgT0lEX0FVVE8sIHN0YXRzLCBDVExGTEFH
X1ZORVR8Q1RMVFlQRV9TVFJVQ1R8Q1RMRkxBRwogU1lTQ1RMX1BST0MoX25ldF9pbmV0X3NjdHAs
IE9JRF9BVVRPLCBhc3NvY2xpc3QsIENUTEZMQUdfVk5FVHxDVExUWVBFX09QQVFVRXxDVExGTEFH
X1JELAogICAgICAgICAgICAgTlVMTCwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2Fzc29jbGlzdCwg
IlMseGFzc29jIiwgIkxpc3Qgb2YgYWN0aXZlIFNDVFAgYXNzb2NpYXRpb25zIik7CiAKLSNlbGlm
IGRlZmluZWQoX19XaW5kb3dzX18pCisjZWxpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKIAogI2RlZmluZSBSQU5HRUNISyh2YXIsIG1pbiwgbWF4KSBcCiAJaWYg
KCh2YXIpIDwgKG1pbikpIHsgKHZhcikgPSAobWluKTsgfSBcCkBAIC0xNDE3LDYgKzEzMDUsNyBA
QCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50KFNZU0NUTF9IQU5ETEVSX0FSR1MpCiAJCVJBTkdFQ0hL
KFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9lbmFibGVfc2Fja19pbW1lZGlhdGVseSksIFNDVFBDVExf
U0FDS19JTU1FRElBVEVMWV9FTkFCTEVfTUlOLCBTQ1RQQ1RMX1NBQ0tfSU1NRURJQVRFTFlfRU5B
QkxFX01BWCk7CiAJCVJBTkdFQ0hLKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9pbml0c19pbmNsdWRl
X25hdF9mcmllbmRseSksIFNDVFBDVExfTkFUX0ZSSUVORExZX0lOSVRTX01JTiwgU0NUUENUTF9O
QVRfRlJJRU5ETFlfSU5JVFNfTUFYKTsKIAkJUkFOR0VDSEsoU0NUUF9CQVNFX1NZU0NUTChzY3Rw
X2JsYWNraG9sZSksIFNDVFBDVExfQkxBQ0tIT0xFX01JTiwgU0NUUENUTF9CTEFDS0hPTEVfTUFY
KTsKKwkJUkFOR0VDSEsoU0NUUF9CQVNFX1NZU0NUTChzY3RwX3NlbmRhbGxfbGltaXQpLCBTQ1RQ
Q1RMX1NFTkRBTExfTElNSVRfTUlOLCBTQ1RQQ1RMX1NFTkRBTExfTElNSVRfTUFYKTsKIAkJUkFO
R0VDSEsoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2RpYWdfaW5mb19jb2RlKSwgU0NUUENUTF9ESUFH
X0lORk9fQ09ERV9NSU4sIFNDVFBDVExfRElBR19JTkZPX0NPREVfTUFYKTsKICNpZmRlZiBTQ1RQ
X0RFQlVHCiAJCVJBTkdFQ0hLKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9kZWJ1Z19vbiksIFNDVFBD
VExfREVCVUdfTUlOLCBTQ1RQQ1RMX0RFQlVHX01BWCk7CkBAIC0xNDI5LDE0MyArMTMxOCwxNDMg
QEAgdm9pZAogc3lzY3RsX3NldHVwX3NjdHAodm9pZCkKIHsKIAlzeXNjdGxfYWRkX29pZCgmc3lz
Y3RsX29pZF90b3AsICJzZW5kc3BhY2UiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAg
ICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9zZW5kc3BhY2UpLCAwLCBzY3RwX3N5c2N0bF9o
YW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3NlbmRzcGFjZSksIDAsIHNj
dHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExfTUFYREdSQU1fREVTQyk7CiAKIAlz
eXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJyZWN2c3BhY2UiLCBDVExUWVBFX0lOVHxD
VExGTEFHX1JXLAotICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3JlY3ZzcGFjZSks
IDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBf
cmVjdnNwYWNlKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9SRUNW
U1BBQ0VfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJhdXRvX2Fz
Y29uZiIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZ
U0NUTChzY3RwX2F1dG9fYXNjb25mKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAg
JlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9hdXRvX2FzY29uZiksIDAsIHNjdHBfc3lzY3RsX2hhbmRs
ZV9pbnQsCiAJICAgIFNDVFBDVExfQVVUT0FTQ09ORl9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lk
KCZzeXNjdGxfb2lkX3RvcCwgImVjbl9lbmFibGUiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAot
ICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9lY25fZW5hYmxlKSwgMCwgc2N0cF9z
eXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9lY25fZW5hYmxl
KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9FQ05fRU5BQkxFX0RF
U0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAicHJfZW5hYmxlIiwgQ1RM
VFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBf
cHJfZW5hYmxlKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9T
WVNDVEwoc2N0cF9wcl9lbmFibGUpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBT
Q1RQQ1RMX1BSX0VOQUJMRV9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3Rv
cCwgImF1dGhfZW5hYmxlIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZT
Q1RQX0JBU0VfU1lTQ1RMKHNjdHBfYXV0aF9lbmFibGUpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVf
YXV0aCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9hdXRoX2VuYWJsZSksIDAsIHNjdHBf
c3lzY3RsX2hhbmRsZV9hdXRoLAogCSAgICBTQ1RQQ1RMX0FVVEhfRU5BQkxFX0RFU0MpOwogCiAJ
c3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAiYXNjb25mX2VuYWJsZSIsIENUTFRZUEVf
SU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2FzY29u
Zl9lbmFibGUpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfYXNjb25mLAorCSAgICAmU0NUUF9CQVNF
X1NZU0NUTChzY3RwX2FzY29uZl9lbmFibGUpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfYXNjb25m
LAogCSAgICBTQ1RQQ1RMX0FTQ09ORl9FTkFCTEVfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgm
c3lzY3RsX29pZF90b3AsICJyZWNvbmZpZ19lbmFibGUiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JX
LAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9yZWNvbmZpZ19lbmFibGUpLCAw
LCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3Jl
Y29uZmlnX2VuYWJsZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExf
UkVDT05GSUdfRU5BQkxFX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9w
LCAibnJzYWNrX2VuYWJsZSIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAm
U0NUUF9CQVNFX1NZU0NUTChzY3RwX25yc2Fja19lbmFibGUpLCAwLCBzY3RwX3N5c2N0bF9oYW5k
bGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX25yc2Fja19lbmFibGUpLCAwLCBz
Y3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX05SU0FDS19FTkFCTEVfREVTQyk7
CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJwa3Rkcm9wX2VuYWJsZSIsIENU
TFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3Rw
X3BrdGRyb3BfZW5hYmxlKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBf
QkFTRV9TWVNDVEwoc2N0cF9wa3Rkcm9wX2VuYWJsZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9p
bnQsCiAJICAgIFNDVFBDVExfUEtURFJPUF9FTkFCTEVfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29p
ZCgmc3lzY3RsX29pZF90b3AsICJsb29wYmFja19ub2NzdW0iLCBDVExUWVBFX0lOVHxDVExGTEFH
X1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9ub19jc3VtX29uX2xvb3Bi
YWNrKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwo
c2N0cF9ub19jc3VtX29uX2xvb3BiYWNrKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkg
ICAgU0NUUENUTF9MT09QQkFDS19OT0NTVU1fREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lz
Y3RsX29pZF90b3AsICJwZWVyX2Noa29oIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAg
ICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfcGVlcl9jaHVua19vaCksIDAsIHNjdHBfc3lz
Y3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfcGVlcl9jaHVua19v
aCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExfUEVFUl9DSEtPSF9E
RVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgIm1heGJ1cnN0IiwgQ1RM
VFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBf
bWF4X2J1cnN0X2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NU
UF9CQVNFX1NZU0NUTChzY3RwX21heF9idXJzdF9kZWZhdWx0KSwgMCwgc2N0cF9zeXNjdGxfaGFu
ZGxlX2ludCwKIAkgICAgU0NUUENUTF9NQVhCVVJTVF9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lk
KCZzeXNjdGxfb2lkX3RvcCwgImZyX21heGJ1cnN0IiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywK
LSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfZnJfbWF4X2J1cnN0X2RlZmF1bHQp
LCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3Rw
X2ZyX21heF9idXJzdF9kZWZhdWx0KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAg
U0NUUENUTF9GUk1BWEJVUlNUX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRf
dG9wLCAibWF4Y2h1bmtzIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZT
Q1RQX0JBU0VfU1lTQ1RMKHNjdHBfbWF4X2NodW5rc19vbl9xdWV1ZSksIDAsIHNjdHBfc3lzY3Rs
X2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbWF4X2NodW5rc19vbl9x
dWV1ZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExfTUFYQ0hVTktT
X0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAidGNiaGFzaHNpemUi
LCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwo
c2N0cF9oYXNodGJsc2l6ZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQ
X0JBU0VfU1lTQ1RMKHNjdHBfaGFzaHRibHNpemUpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50
LAogCSAgICBTQ1RQQ1RMX1RDQkhBU0hTSVpFX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5
c2N0bF9vaWRfdG9wLCAicGNiaGFzaHNpemUiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAg
ICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9wY2J0YmxzaXplKSwgMCwgc2N0cF9zeXNj
dGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9wY2J0YmxzaXplKSwg
MCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9QQ0JIQVNIU0laRV9ERVND
KTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgIm1pbl9zcGxpdF9wb2ludCIs
IENUTFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChz
Y3RwX21pbl9zcGxpdF9wb2ludCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZT
Q1RQX0JBU0VfU1lTQ1RMKHNjdHBfbWluX3NwbGl0X3BvaW50KSwgMCwgc2N0cF9zeXNjdGxfaGFu
ZGxlX2ludCwKIAkgICAgU0NUUENUTF9NSU5fU1BMSVRfUE9JTlRfREVTQyk7CiAKIAlzeXNjdGxf
YWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJjaHVua3NjYWxlIiwgQ1RMVFlQRV9JTlR8Q1RMRkxB
R19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfY2h1bmtzY2FsZSksIDAs
IHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfY2h1
bmtzY2FsZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExfQ0hVTktT
Q0FMRV9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgImRlbGF5ZWRf
c2Fja190aW1lIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JB
U0VfU1lTQ1RMKHNjdHBfZGVsYXllZF9zYWNrX3RpbWVfZGVmYXVsdCksIDAsIHNjdHBfc3lzY3Rs
X2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfZGVsYXllZF9zYWNrX3Rp
bWVfZGVmYXVsdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExfREVM
QVlFRF9TQUNLX1RJTUVfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3As
ICJzYWNrX2ZyZXEiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBf
QkFTRV9TWVNDVEwoc2N0cF9zYWNrX2ZyZXFfZGVmYXVsdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRs
ZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfc2Fja19mcmVxX2RlZmF1bHQpLCAw
LCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX1NBQ0tfRlJFUV9ERVNDKTsK
IAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgInN5c19yZXNvdXJjZSIsIENUTFRZ
UEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3N5
c3RlbV9mcmVlX3Jlc2NfbGltaXQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAm
U0NUUF9CQVNFX1NZU0NUTChzY3RwX3N5c3RlbV9mcmVlX3Jlc2NfbGltaXQpLCAwLCBzY3RwX3N5
c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX1NZU19SRVNPVVJDRV9ERVNDKTsKIAogCXN5
c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgImFzb2NfcmVzb3VyY2UiLCBDVExUWVBFX0lO
VHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9hc29jX2Zy
ZWVfcmVzY19saW1pdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JB
U0VfU1lTQ1RMKHNjdHBfYXNvY19mcmVlX3Jlc2NfbGltaXQpLCAwLCBzY3RwX3N5c2N0bF9oYW5k
bGVfaW50LAogCSAgICBTQ1RQQ1RMX0FTT0NfUkVTT1VSQ0VfREVTQyk7CiAKIAlzeXNjdGxfYWRk
X29pZCgmc3lzY3RsX29pZF90b3AsICJoZWFydGJlYXRfaW50ZXJ2YWwiLCBDVExUWVBFX0lOVHxD
VExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9oZWFydGJlYXRf
aW50ZXJ2YWxfZGVmYXVsdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQ
X0JBU0VfU1lTQ1RMKHNjdHBfaGVhcnRiZWF0X2ludGVydmFsX2RlZmF1bHQpLCAwLCBzY3RwX3N5
c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX0hFQVJUQkVBVF9JTlRFUlZBTF9ERVNDKTsK
IAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgInBtdHVfcmFpc2VfdGltZSIsIENU
TFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3Rw
X3BtdHVfcmFpc2VfdGltZV9kZWZhdWx0KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkg
ICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9wbXR1X3JhaXNlX3RpbWVfZGVmYXVsdCksIDAsIHNj
dHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExfUE1UVV9SQUlTRV9USU1FX0RFU0Mp
OwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAic2h1dGRvd25fZ3VhcmRfdGlt
ZSIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NU
TChzY3RwX3NodXRkb3duX2d1YXJkX3RpbWVfZGVmYXVsdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRs
ZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfc2h1dGRvd25fZ3VhcmRfdGltZV9k
ZWZhdWx0KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9TSFVURE9X
Tl9HVUFSRF9USU1FX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAi
c2VjcmV0X2xpZmV0aW1lIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZT
Q1RQX0JBU0VfU1lTQ1RMKHNjdHBfc2VjcmV0X2xpZmV0aW1lX2RlZmF1bHQpLCAwLCBzY3RwX3N5
c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3NlY3JldF9saWZl
dGltZV9kZWZhdWx0KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9T
RUNSRVRfTElGRVRJTUVfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3As
ICJydG9fbWF4IiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JB
U0VfU1lTQ1RMKHNjdHBfcnRvX21heF9kZWZhdWx0KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2lu
dCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9ydG9fbWF4X2RlZmF1bHQpLCAwLCBzY3Rw
X3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX1JUT19NQVhfREVTQyk7CiAKIAlzeXNj
dGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJydG9fbWluIiwgQ1RMVFlQRV9JTlR8Q1RMRkxB
R19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfcnRvX21pbl9kZWZhdWx0
KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0
cF9ydG9fbWluX2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQ
Q1RMX1JUT19NSU5fREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJy
dG9faW5pdGlhbCIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9C
QVNFX1NZU0NUTChzY3RwX3J0b19pbml0aWFsX2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5k
bGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3J0b19pbml0aWFsX2RlZmF1bHQp
LCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX1JUT19JTklUSUFMX0RF
U0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAiaW5pdF9ydG9fbWF4Iiwg
Q1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNj
dHBfaW5pdF9ydG9fbWF4X2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAg
ICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2luaXRfcnRvX21heF9kZWZhdWx0KSwgMCwgc2N0cF9z
eXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9JTklUX1JUT19NQVhfREVTQyk7CiAKIAlz
eXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJ2YWxpZF9jb29raWVfbGlmZSIsIENUTFRZ
UEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3Zh
bGlkX2Nvb2tpZV9saWZlX2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAg
ICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3ZhbGlkX2Nvb2tpZV9saWZlX2RlZmF1bHQpLCAwLCBz
Y3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX1ZBTElEX0NPT0tJRV9MSUZFX0RF
U0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAiaW5pdF9ydHhfbWF4Iiwg
Q1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNj
dHBfaW5pdF9ydHhfbWF4X2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAg
ICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2luaXRfcnR4X21heF9kZWZhdWx0KSwgMCwgc2N0cF9z
eXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9JTklUX1JUWF9NQVhfREVTQyk7CiAKIAlz
eXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJhc3NvY19ydHhfbWF4IiwgQ1RMVFlQRV9J
TlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfYXNzb2Nf
cnR4X21heF9kZWZhdWx0KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBf
QkFTRV9TWVNDVEwoc2N0cF9hc3NvY19ydHhfbWF4X2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9o
YW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX0FTU09DX1JUWF9NQVhfREVTQyk7CiAKIAlzeXNjdGxf
YWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJwYXRoX3J0eF9tYXgiLCBDVExUWVBFX0lOVHxDVExG
TEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9wYXRoX3J0eF9tYXhf
ZGVmYXVsdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lT
Q1RMKHNjdHBfcGF0aF9ydHhfbWF4X2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50
LAogCSAgICBTQ1RQQ1RMX1BBVEhfUlRYX01BWF9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZz
eXNjdGxfb2lkX3RvcCwgInBhdGhfcGZfdGhyZXNob2xkIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19S
VywKQEAgLTE1NzMsODMgKzE0NjIsODMgQEAgc3lzY3RsX3NldHVwX3NjdHAodm9pZCkKIAkgICAg
U0NUUENUTF9QQVRIX1BGX1RIUkVTSE9MRF9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNj
dGxfb2lkX3RvcCwgImFkZF9tb3JlX29uX291dHB1dCIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcs
Ci0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2FkZF9tb3JlX3RocmVzaG9sZCks
IDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBf
YWRkX21vcmVfdGhyZXNob2xkKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NU
UENUTF9BRERfTU9SRV9PTl9PVVRQVVRfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3Rs
X29pZF90b3AsICJpbmNvbWluZ19zdHJlYW1zIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAg
ICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbnJfaW5jb21pbmdfc3RyZWFtc19kZWZh
dWx0KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwo
c2N0cF9ucl9pbmNvbWluZ19zdHJlYW1zX2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVf
aW50LAogCSAgICBTQ1RQQ1RMX0lOQ09NSU5HX1NUUkVBTVNfREVTQyk7CiAKIAlzeXNjdGxfYWRk
X29pZCgmc3lzY3RsX29pZF90b3AsICJvdXRnb2luZ19zdHJlYW1zIiwgQ1RMVFlQRV9JTlR8Q1RM
RkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbnJfb3V0Z29pbmdf
c3RyZWFtc19kZWZhdWx0KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBf
QkFTRV9TWVNDVEwoc2N0cF9ucl9vdXRnb2luZ19zdHJlYW1zX2RlZmF1bHQpLCAwLCBzY3RwX3N5
c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX09VVEdPSU5HX1NUUkVBTVNfREVTQyk7CiAK
IAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJjbXRfb25fb2ZmIiwgQ1RMVFlQRV9J
TlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfY210X29u
X29mZiksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RM
KHNjdHBfY210X29uX29mZiksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBD
VExfQ01UX09OX09GRl9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwg
ImNtdF91c2VfZGFjIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQ
X0JBU0VfU1lTQ1RMKHNjdHBfY210X3VzZV9kYWMpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50
LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2NtdF91c2VfZGFjKSwgMCwgc2N0cF9zeXNj
dGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9DTVRfVVNFX0RBQ19ERVNDKTsKIAogCXN5c2N0
bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgImN3bmRfbWF4YnVyc3QiLCBDVExUWVBFX0lOVHxD
VExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF91c2VfY3duZF9i
YXNlZF9tYXhidXJzdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JB
U0VfU1lTQ1RMKHNjdHBfdXNlX2N3bmRfYmFzZWRfbWF4YnVyc3QpLCAwLCBzY3RwX3N5c2N0bF9o
YW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX0NXTkRfTUFYQlVSU1RfREVTQyk7CiAKIAlzeXNjdGxf
YWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJuYXRfZnJpZW5kbHkiLCBDVExUWVBFX0lOVHxDVExG
TEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9uYXRfZnJpZW5kbHkp
LCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3Rw
X25hdF9mcmllbmRseSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExf
TkFUX0ZSSUVORExZX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAi
YWJjX2xfdmFyIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JB
U0VfU1lTQ1RMKHNjdHBfTDJfYWJjX3ZhcmlhYmxlKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2lu
dCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9MMl9hYmNfdmFyaWFibGUpLCAwLCBzY3Rw
X3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX0FCQ19MX1ZBUl9ERVNDKTsKIAogCXN5
c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgIm1heF9jaGFpbmVkX21idWZzIiwgQ1RMVFlQ
RV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbWJ1
Zl90aHJlc2hvbGRfY291bnQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NU
UF9CQVNFX1NZU0NUTChzY3RwX21idWZfdGhyZXNob2xkX2NvdW50KSwgMCwgc2N0cF9zeXNjdGxf
aGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9NQVhfQ0hBSU5FRF9NQlVGU19ERVNDKTsKIAogCXN5
c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgImRvX3NjdHBfZHJhaW4iLCBDVExUWVBFX0lO
VHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9kb19kcmFp
biksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNj
dHBfZG9fZHJhaW4pLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX0RP
X1NDVFBfRFJBSU5fREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJo
Yl9tYXhfYnVyc3QiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBf
QkFTRV9TWVNDVEwoc2N0cF9oYl9tYXhidXJzdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQs
CisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfaGJfbWF4YnVyc3QpLCAwLCBzY3RwX3N5c2N0
bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX0hCX01BWF9CVVJTVF9ERVNDKTsKIAogCXN5c2N0
bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgImFib3J0X2F0X2xpbWl0IiwgQ1RMVFlQRV9JTlR8
Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfYWJvcnRfaWZf
b25lXzJfb25lX2hpdHNfbGltaXQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAm
U0NUUF9CQVNFX1NZU0NUTChzY3RwX2Fib3J0X2lmX29uZV8yX29uZV9oaXRzX2xpbWl0KSwgMCwg
c2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9BQk9SVF9BVF9MSU1JVF9ERVND
KTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgIm1pbl9yZXNpZHVhbCIsIENU
TFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3Rw
X21pbl9yZXNpZHVhbCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JB
U0VfU1lTQ1RMKHNjdHBfbWluX3Jlc2lkdWFsKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwK
IAkgICAgU0NUUENUTF9NSU5fUkVTSURVQUxfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lz
Y3RsX29pZF90b3AsICJtYXhfcmV0cmFuX2NodW5rIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywK
LSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbWF4X3JldHJhbl9jaHVuayksIDAs
IHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbWF4
X3JldHJhbl9jaHVuayksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExf
TUFYX1JFVFJBTl9DSFVOS19ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3Rv
cCwgImxvZ19sZXZlbCIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NU
UF9CQVNFX1NZU0NUTChzY3RwX2xvZ2dpbmdfbGV2ZWwpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVf
aW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2xvZ2dpbmdfbGV2ZWwpLCAwLCBzY3Rw
X3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX0xPR0dJTkdfTEVWRUxfREVTQyk7CiAK
IAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJkZWZhdWx0X2NjX21vZHVsZSIsIENU
TFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3Rw
X2RlZmF1bHRfY2NfbW9kdWxlKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlND
VFBfQkFTRV9TWVNDVEwoc2N0cF9kZWZhdWx0X2NjX21vZHVsZSksIDAsIHNjdHBfc3lzY3RsX2hh
bmRsZV9pbnQsCiAJICAgIFNDVFBDVExfREVGQVVMVF9DQ19NT0RVTEVfREVTQyk7CiAKIAlzeXNj
dGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJkZWZhdWx0X3NzX21vZHVsZSIsIENUTFRZUEVf
SU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2RlZmF1
bHRfc3NfbW9kdWxlKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFT
RV9TWVNDVEwoc2N0cF9kZWZhdWx0X3NzX21vZHVsZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9p
bnQsCiAJICAgIFNDVFBDVExfREVGQVVMVF9TU19NT0RVTEVfREVTQyk7CiAKIAlzeXNjdGxfYWRk
X29pZCgmc3lzY3RsX29pZF90b3AsICJkZWZhdWx0X2ZyYWdfaW50ZXJsZWF2ZSIsIENUTFRZUEVf
SU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2RlZmF1
bHRfZnJhZ19pbnRlcmxlYXZlKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlND
VFBfQkFTRV9TWVNDVEwoc2N0cF9kZWZhdWx0X2ZyYWdfaW50ZXJsZWF2ZSksIDAsIHNjdHBfc3lz
Y3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExfREVGQVVMVF9GUkFHX0lOVEVSTEVBVkVfREVT
Qyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJtb2JpbGl0eV9iYXNlIiwg
Q1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNj
dHBfbW9iaWxpdHlfYmFzZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQ
X0JBU0VfU1lTQ1RMKHNjdHBfbW9iaWxpdHlfYmFzZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9p
bnQsCiAJICAgIFNDVFBDVExfTU9CSUxJVFlfQkFTRV9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lk
KCZzeXNjdGxfb2lkX3RvcCwgIm1vYmlsaXR5X2Zhc3RoYW5kb2ZmIiwgQ1RMVFlQRV9JTlR8Q1RM
RkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbW9iaWxpdHlfZmFz
dGhhbmRvZmYpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZ
U0NUTChzY3RwX21vYmlsaXR5X2Zhc3RoYW5kb2ZmKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2lu
dCwKIAkgICAgU0NUUENUTF9NT0JJTElUWV9GQVNUSEFORE9GRl9ERVNDKTsKIAogI2lmIGRlZmlu
ZWQoU0NUUF9MT0NBTF9UUkFDRV9CVUYpCkBAIC0xNjY3LDUyICsxNTU2LDU2IEBAIHN5c2N0bF9z
ZXR1cF9zY3RwKHZvaWQpCiAJICAgIFNDVFBDVExfVURQX1RVTk5FTElOR19QT1JUX0RFU0MpOwog
CiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAiZW5hYmxlX3NhY2tfaW1tZWRpYXRl
bHkiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVND
VEwoc2N0cF9lbmFibGVfc2Fja19pbW1lZGlhdGVseSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9p
bnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfZW5hYmxlX3NhY2tfaW1tZWRpYXRlbHkp
LCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX1NBQ0tfSU1NRURJQVRF
TFlfRU5BQkxFX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAibmF0
X2ZyaWVuZGx5X2luaXQiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlND
VFBfQkFTRV9TWVNDVEwoc2N0cF9pbml0c19pbmNsdWRlX25hdF9mcmllbmRseSksIDAsIHNjdHBf
c3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfaW5pdHNfaW5j
bHVkZV9uYXRfZnJpZW5kbHkpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQ
Q1RMX05BVF9GUklFTkRMWV9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3Rv
cCwgInZ0YWdfdGltZV93YWl0IiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAg
ICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfdnRhZ190aW1lX3dhaXQpLCAwLCBzY3RwX3N5c2N0bF9o
YW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3Z0YWdfdGltZV93YWl0KSwg
MCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9USU1FX1dBSVRfREVTQyk7
CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJidWZmZXJfc3BsaXR0aW5nIiwg
Q1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNj
dHBfYnVmZmVyX3NwbGl0dGluZyksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZT
Q1RQX0JBU0VfU1lTQ1RMKHNjdHBfYnVmZmVyX3NwbGl0dGluZyksIDAsIHNjdHBfc3lzY3RsX2hh
bmRsZV9pbnQsCiAJICAgIFNDVFBDVExfQlVGRkVSX1NQTElUVElOR19ERVNDKTsKIAogCXN5c2N0
bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgImluaXRpYWxfY3duZCIsIENUTFRZUEVfSU5UfENU
TEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2luaXRpYWxfY3du
ZCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNj
dHBfaW5pdGlhbF9jd25kKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENU
TF9JTklUSUFMX0NXTkRfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3As
ICJydHR2YXJfYnciLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBf
QkFTRV9TWVNDVEwoc2N0cF9ydHR2YXJfYncpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAor
CSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3J0dHZhcl9idyksIDAsIHNjdHBfc3lzY3RsX2hh
bmRsZV9pbnQsCiAJICAgIFNDVFBDVExfUlRUVkFSX0JXX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9v
aWQoJnN5c2N0bF9vaWRfdG9wLCAicnR0dmFyX3J0dCIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcs
Ci0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3J0dHZhcl9ydHQpLCAwLCBzY3Rw
X3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3J0dHZhcl9y
dHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX1JUVFZBUl9SVFRf
REVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJydHR2YXJfZXFyZXQi
LCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwo
c2N0cF9ydHR2YXJfZXFyZXQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NU
UF9CQVNFX1NZU0NUTChzY3RwX3J0dHZhcl9lcXJldCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9p
bnQsCiAJICAgIFNDVFBDVExfUlRUVkFSX0VRUkVUX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQo
JnN5c2N0bF9vaWRfdG9wLCAicnR0dmFyX3N0ZWFkeV9zdGVwIiwgQ1RMVFlQRV9JTlR8Q1RMRkxB
R19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfc3RlYWR5X3N0ZXApLCAw
LCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3N0
ZWFkeV9zdGVwKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9SVFRW
QVJfU1RFQURZU19ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgInVz
ZV9kY2NjZWNuIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JB
U0VfU1lTQ1RMKHNjdHBfdXNlX2RjY2NfZWNuKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwK
KwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF91c2VfZGNjY19lY24pLCAwLCBzY3RwX3N5c2N0
bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX1JUVFZBUl9EQ0NDRUNOX0RFU0MpOwogCiAJc3lz
Y3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAiYmxhY2tob2xlIiwgQ1RMVFlQRV9JTlR8Q1RM
RkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfYmxhY2tob2xlKSwg
MCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKLSAgICAgICAgICAgIFNDVFBDVExfQkxBQ0tIT0xF
X0RFU0MpOworCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2JsYWNraG9sZSksIDAsIHNjdHBf
c3lzY3RsX2hhbmRsZV9pbnQsCisJICAgIFNDVFBDVExfQkxBQ0tIT0xFX0RFU0MpOworCisJc3lz
Y3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAic2VuZGFsbF9saW1pdCIsIENUTFRZUEVfSU5U
fENUTEZMQUdfUlcsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfc2VuZGFsbF9saW1pdCks
IDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgIFNDVFBDVExfU0VOREFMTF9MSU1JVF9E
RVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgImRpYWdfaW5mb19jb2Rl
IiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RM
KHNjdHBfZGlhZ19pbmZvX2NvZGUpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAotICAgICAg
ICAgICAgU0NUUENUTF9ESUFHX0lORk9fQ09ERV9ERVNDKTsKKwkgICAgJlNDVFBfQkFTRV9TWVND
VEwoc2N0cF9kaWFnX2luZm9fY29kZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAg
IFNDVFBDVExfRElBR19JTkZPX0NPREVfREVTQyk7CiAKICNpZmRlZiBTQ1RQX0RFQlVHCiAJc3lz
Y3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAiZGVidWciLCBDVExUWVBFX0lOVHxDVExGTEFH
X1JXLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfc3lzY3Rs
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9zeXNjdGwuaApvbGQgbW9kZSAx
MDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDRmMTBmZjY3NjkxNTVjZTU0ZTVmODdjNGFmMTI3
YmYyZTY4NDQ1N2UuLmViODg4MzM4Y2E4NjYyMDYxMTYwZDkwZmFiYmM5MTBhOTA3YTgxOWQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfc3lzY3RsLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBs
aWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfc3lzY3RsLmgKQEAgLTMyLDkgKzMyLDkgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZkZWYgX19GcmVlQlNE
X18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
I2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRp
bmV0L3NjdHBfc3lzY3RsLmggMjk5NTQzIDIwMTYtMDUtMTIgMTY6MzQ6NTlaIHR1ZXhlbiAkIik7
CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9zeXNjdGwuaCAzNjE4
OTUgMjAyMC0wNi0wNyAxNDozOToyMFogdHVleGVuICQiKTsKICNlbmRpZgogCiAjaWZuZGVmIF9O
RVRJTkVUX1NDVFBfU1lTQ1RMX0hfCkBAIC01Niw3ICs1Niw3IEBAIHN0cnVjdCBzY3RwX3N5c2N0
bCB7CiAJdWludDMyX3Qgc2N0cF9ucnNhY2tfZW5hYmxlOwogCXVpbnQzMl90IHNjdHBfcGt0ZHJv
cF9lbmFibGU7CiAJdWludDMyX3Qgc2N0cF9mcl9tYXhfYnVyc3RfZGVmYXVsdDsKLSNpZiAhKGRl
ZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMDAwMCkKKyNpZiAh
KGRlZmluZWQoX19GcmVlQlNEX18pICAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkKIAl1aW50
MzJfdCBzY3RwX25vX2NzdW1fb25fbG9vcGJhY2s7CiAjZW5kaWYKIAl1aW50MzJfdCBzY3RwX3Bl
ZXJfY2h1bmtfb2g7CkBAIC0xMTMsNyArMTEzLDcgQEAgc3RydWN0IHNjdHBfc3lzY3RsIHsKIAl1
aW50MzJfdCBzY3RwX3VzZV9kY2NjX2VjbjsKIAl1aW50MzJfdCBzY3RwX2RpYWdfaW5mb19jb2Rl
OwogI2lmIGRlZmluZWQoU0NUUF9MT0NBTF9UUkFDRV9CVUYpCi0jaWYgZGVmaW5lZChfX1dpbmRv
d3NfXykKKyNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlz
dHJ1Y3Qgc2N0cF9sb2cgKnNjdHBfbG9nOwogI2Vsc2UKIAlzdHJ1Y3Qgc2N0cF9sb2cgc2N0cF9s
b2c7CkBAIC0xMjUsMTYgKzEyNSwxNyBAQCBzdHJ1Y3Qgc2N0cF9zeXNjdGwgewogCXVpbnQzMl90
IHNjdHBfYnVmZmVyX3NwbGl0dGluZzsKIAl1aW50MzJfdCBzY3RwX2luaXRpYWxfY3duZDsKIAl1
aW50MzJfdCBzY3RwX2JsYWNraG9sZTsKKwl1aW50MzJfdCBzY3RwX3NlbmRhbGxfbGltaXQ7CiAj
aWYgZGVmaW5lZChTQ1RQX0RFQlVHKQogCXVpbnQzMl90IHNjdHBfZGVidWdfb247CiAjZW5kaWYK
LSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKIAl1aW50MzJfdCBzY3RwX2lnbm9yZV92bXdhcmVfaW50ZXJmYWNl
czsKIAl1aW50MzJfdCBzY3RwX21haW5fdGltZXI7CiAJdWludDMyX3Qgc2N0cF9hZGRyX3dhdGNo
ZG9nX2xpbWl0OwogCXVpbnQzMl90IHNjdHBfdnRhZ193YXRjaGRvZ19saW1pdDsKICNlbmRpZgot
I2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQor
I2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCXVpbnQz
Ml90IHNjdHBfb3V0cHV0X3VubG9ja2VkOwogI2VuZGlmCiB9OwpAQCAtMjM1LDcgKzIzNiw3IEBA
IHN0cnVjdCBzY3RwX3N5c2N0bCB7CiAjZGVmaW5lIFNDVFBDVExfTUFYQlVSU1RfREVGQVVMVAlT
Q1RQX0RFRl9NQVhfQlVSU1QKIAogLyogZnJfbWF4YnVyc3Q6IERlZmF1bHQgbWF4IGJ1cnN0IGZv
ciBzY3RwIGVuZHBvaW50cyB3aGVuIGZhc3QgcmV0cmFuc21pdHRpbmcgKi8KLSNkZWZpbmUgU0NU
UENUTF9GUk1BWEJVUlNUX0RFU0MJCSJEZWZhdWx0IGZyIG1heCBidXJzdCBmb3Igc2N0cCBlbmRw
b2ludHMiCisjZGVmaW5lIFNDVFBDVExfRlJNQVhCVVJTVF9ERVNDCQkiRGVmYXVsdCBtYXggYnVy
c3QgZm9yIFNDVFAgZW5kcG9pbnRzIHdoZW4gZmFzdCByZXRyYW5zbWl0dGluZyIKICNkZWZpbmUg
U0NUUENUTF9GUk1BWEJVUlNUX01JTgkJMAogI2RlZmluZSBTQ1RQQ1RMX0ZSTUFYQlVSU1RfTUFY
CQkweEZGRkZGRkZGCiAjZGVmaW5lIFNDVFBDVExfRlJNQVhCVVJTVF9ERUZBVUxUCVNDVFBfREVG
X0ZSTUFYX0JVUlNUCkBAIC0yNjYsNyArMjY3LDcgQEAgc3RydWN0IHNjdHBfc3lzY3RsIHsKICNk
ZWZpbmUgU0NUUENUTF9NSU5fU1BMSVRfUE9JTlRfREVGQVVMVAlTQ1RQX0RFRkFVTFRfU1BMSVRf
UE9JTlRfTUlOCiAKIC8qIGNodW5rc2NhbGU6IFR1bmFibGUgZm9yIFNjYWxpbmcgb2YgbnVtYmVy
IG9mIGNodW5rcyBhbmQgbWVzc2FnZXMgKi8KLSNkZWZpbmUgU0NUUENUTF9DSFVOS1NDQUxFX0RF
U0MJCSJUdW5hYmxlIGZvciBTY2FsaW5nIG9mIG51bWJlciBvZiBjaHVua3MgYW5kIG1lc3NhZ2Vz
IgorI2RlZmluZSBTQ1RQQ1RMX0NIVU5LU0NBTEVfREVTQwkJIlR1bmFibGUgZm9yIHNjYWxpbmcg
b2YgbnVtYmVyIG9mIGNodW5rcyBhbmQgbWVzc2FnZXMiCiAjZGVmaW5lIFNDVFBDVExfQ0hVTktT
Q0FMRV9NSU4JCTEKICNkZWZpbmUgU0NUUENUTF9DSFVOS1NDQUxFX01BWAkJMHhGRkZGRkZGRgog
I2RlZmluZSBTQ1RQQ1RMX0NIVU5LU0NBTEVfREVGQVVMVAlTQ1RQX0NIVU5LUVVFVUVfU0NBTEUK
QEAgLTM1MCw3ICszNTEsNyBAQCBzdHJ1Y3Qgc2N0cF9zeXNjdGwgewogI2RlZmluZSBTQ1RQQ1RM
X1ZBTElEX0NPT0tJRV9MSUZFX0RFRkFVTFQJU0NUUF9ERUZBVUxUX0NPT0tJRV9MSUZFCiAKIC8q
IGluaXRfcnR4X21heDogRGVmYXVsdCBtYXhpbXVtIG51bWJlciBvZiByZXRyYW5zbWlzc2lvbiBm
b3IgSU5JVCBjaHVua3MgKi8KLSNkZWZpbmUgU0NUUENUTF9JTklUX1JUWF9NQVhfREVTQwkiRGVm
YXVsdCBtYXhpbXVtIG51bWJlciBvZiByZXRyYW5zbWlzc2lvbiBmb3IgSU5JVCBjaHVua3MiCisj
ZGVmaW5lIFNDVFBDVExfSU5JVF9SVFhfTUFYX0RFU0MJIkRlZmF1bHQgbWF4aW11bSBudW1iZXIg
b2YgcmV0cmFuc21pc3Npb25zIGZvciBJTklUIGNodW5rcyIKICNkZWZpbmUgU0NUUENUTF9JTklU
X1JUWF9NQVhfTUlOCTAKICNkZWZpbmUgU0NUUENUTF9JTklUX1JUWF9NQVhfTUFYCTB4RkZGRkZG
RkYKICNkZWZpbmUgU0NUUENUTF9JTklUX1JUWF9NQVhfREVGQVVMVAlTQ1RQX0RFRl9NQVhfSU5J
VApAQCAtNDAzLDggKzQwNCw4IEBAIHN0cnVjdCBzY3RwX3N5c2N0bCB7CiAjZGVmaW5lIFNDVFBD
VExfQ01UX1VTRV9EQUNfTUFYCQkxCiAjZGVmaW5lIFNDVFBDVExfQ01UX1VTRV9EQUNfREVGQVVM
VCAgICAJMAogCi0vKiBjd25kX21heGJ1cnN0OiBVc2UgYSBDV05EIGFkanVzdGluZyBtYXhidXJz
dCAqLwotI2RlZmluZSBTQ1RQQ1RMX0NXTkRfTUFYQlVSU1RfREVTQwkiVXNlIGEgQ1dORCBhZGp1
c3RpbmcgbWF4YnVyc3QiCisvKiBjd25kX21heGJ1cnN0OiBVc2UgYSBDV05EIGFkanVzdGluZyB0
byBpbXBsZW1lbnQgbWF4YnVyc3QgKi8KKyNkZWZpbmUgU0NUUENUTF9DV05EX01BWEJVUlNUX0RF
U0MJIkFkanVzdCBjb25nZXN0aW9uIGNvbnRyb2wgd2luZG93IHRvIGxpbWl0IG1heGltdW0gYnVy
c3Qgd2hlbiBzZW5kaW5nIgogI2RlZmluZSBTQ1RQQ1RMX0NXTkRfTUFYQlVSU1RfTUlOCTAKICNk
ZWZpbmUgU0NUUENUTF9DV05EX01BWEJVUlNUX01BWAkxCiAjZGVmaW5lIFNDVFBDVExfQ1dORF9N
QVhCVVJTVF9ERUZBVUxUCTEKQEAgLTQ0MCw3ICs0NDEsNyBAQCBzdHJ1Y3Qgc2N0cF9zeXNjdGwg
ewogI2RlZmluZSBTQ1RQQ1RMX0hCX01BWF9CVVJTVF9ERUZBVUxUCVNDVFBfREVGX0hCTUFYX0JV
UlNUCiAKIC8qIGFib3J0X2F0X2xpbWl0OiBXaGVuIG9uZS0yLW9uZSBoaXRzIHFsaW1pdCBhYm9y
dCAqLwotI2RlZmluZSBTQ1RQQ1RMX0FCT1JUX0FUX0xJTUlUX0RFU0MJIldoZW4gb25lLTItb25l
IGhpdHMgcWxpbWl0IGFib3J0IgorI2RlZmluZSBTQ1RQQ1RMX0FCT1JUX0FUX0xJTUlUX0RFU0MJ
IkFib3J0IHdoZW4gb25lLXRvLW9uZSBoaXRzIHFsaW1pdCIKICNkZWZpbmUgU0NUUENUTF9BQk9S
VF9BVF9MSU1JVF9NSU4JMAogI2RlZmluZSBTQ1RQQ1RMX0FCT1JUX0FUX0xJTUlUX01BWAkxCiAj
ZGVmaW5lIFNDVFBDVExfQUJPUlRfQVRfTElNSVRfREVGQVVMVAkwCkBAIC00NTIsNyArNDUzLDcg
QEAgc3RydWN0IHNjdHBfc3lzY3RsIHsKICNkZWZpbmUgU0NUUENUTF9NSU5fUkVTSURVQUxfREVG
QVVMVAkxNDUyCiAKIC8qIG1heF9yZXRyYW5fY2h1bms6IG1heCBjaHVuayByZXRyYW5zbWlzc2lv
bnMgKi8KLSNkZWZpbmUgU0NUUENUTF9NQVhfUkVUUkFOX0NIVU5LX0RFU0MJIk1heGltdW0gdGlt
ZXMgYW4gdW5sdWNreSBjaHVuayBjYW4gYmUgcmV0cmFuJ2QgYmVmb3JlIGFzc29jIGFib3J0Igor
I2RlZmluZSBTQ1RQQ1RMX01BWF9SRVRSQU5fQ0hVTktfREVTQwkiTWF4aW11bSB0aW1lcyBhbiB1
bmx1Y2t5IGNodW5rIGNhbiBiZSByZXRyYW5zbWl0dGVkIGJlZm9yZSBhc3NvYyBhYm9ydCIKICNk
ZWZpbmUgU0NUUENUTF9NQVhfUkVUUkFOX0NIVU5LX01JTgkwCiAjZGVmaW5lIFNDVFBDVExfTUFY
X1JFVFJBTl9DSFVOS19NQVgJNjU1MzUKICNkZWZpbmUgU0NUUENUTF9NQVhfUkVUUkFOX0NIVU5L
X0RFRkFVTFQJMzAKQEAgLTQ5Nyw3NCArNDk4LDgwIEBAIHN0cnVjdCBzY3RwX3N5c2N0bCB7CiAj
ZGVmaW5lIFNDVFBDVExfVURQX1RVTk5FTElOR19QT1JUX0RFU0MJCSJTZXQgdGhlIFNDVFAvVURQ
IHR1bm5lbGluZyBwb3J0IgogI2RlZmluZSBTQ1RQQ1RMX1VEUF9UVU5ORUxJTkdfUE9SVF9NSU4J
CTAKICNkZWZpbmUgU0NUUENUTF9VRFBfVFVOTkVMSU5HX1BPUlRfTUFYCQk2NTUzNQotI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKICNkZWZpbmUgU0NUUENUTF9VRFBfVFVOTkVMSU5HX1BPUlRfREVGQVVM
VAkwCiAjZWxzZQogI2RlZmluZSBTQ1RQQ1RMX1VEUF9UVU5ORUxJTkdfUE9SVF9ERUZBVUxUCVND
VFBfT1ZFUl9VRFBfVFVOTkVMSU5HX1BPUlQKICNlbmRpZgogCiAvKiBFbmFibGUgc2VuZGluZyBv
ZiB0aGUgU0FDSy1JTU1FRElBVEVMWSBiaXQgKi8KLSNkZWZpbmUgU0NUUENUTF9TQUNLX0lNTUVE
SUFURUxZX0VOQUJMRV9ERVNDCSJFbmFibGUgc2VuZGluZyBvZiB0aGUgU0FDSy1JTU1FRElBVEVM
WS1iaXQuIgorI2RlZmluZSBTQ1RQQ1RMX1NBQ0tfSU1NRURJQVRFTFlfRU5BQkxFX0RFU0MJIkVu
YWJsZSBzZW5kaW5nIG9mIHRoZSBTQUNLLUlNTUVESUFURUxZLWJpdCIKICNkZWZpbmUgU0NUUENU
TF9TQUNLX0lNTUVESUFURUxZX0VOQUJMRV9NSU4JMAogI2RlZmluZSBTQ1RQQ1RMX1NBQ0tfSU1N
RURJQVRFTFlfRU5BQkxFX01BWAkxCiAjZGVmaW5lIFNDVFBDVExfU0FDS19JTU1FRElBVEVMWV9F
TkFCTEVfREVGQVVMVAlTQ1RQQ1RMX1NBQ0tfSU1NRURJQVRFTFlfRU5BQkxFX01BWAogCiAvKiBF
bmFibGUgc2VuZGluZyBvZiB0aGUgTkFULUZSSUVORExZIG1lc3NhZ2UgKi8KLSNkZWZpbmUgU0NU
UENUTF9OQVRfRlJJRU5ETFlfSU5JVFNfREVTQwkiRW5hYmxlIHNlbmRpbmcgb2YgdGhlIG5hdC1m
cmllbmRseSBTQ1RQIG9wdGlvbiBvbiBJTklUcy4iCisjZGVmaW5lIFNDVFBDVExfTkFUX0ZSSUVO
RExZX0lOSVRTX0RFU0MJIkVuYWJsZSBzZW5kaW5nIG9mIHRoZSBuYXQtZnJpZW5kbHkgU0NUUCBv
cHRpb24gb24gSU5JVHMiCiAjZGVmaW5lIFNDVFBDVExfTkFUX0ZSSUVORExZX0lOSVRTX01JTgkw
CiAjZGVmaW5lIFNDVFBDVExfTkFUX0ZSSUVORExZX0lOSVRTX01BWAkxCiAjZGVmaW5lIFNDVFBD
VExfTkFUX0ZSSUVORExZX0lOSVRTX0RFRkFVTFQJU0NUUENUTF9OQVRfRlJJRU5ETFlfSU5JVFNf
TUlOCiAKIC8qIFZ0YWcgdGltZSB3YWl0IGluIHNlY29uZHMgKi8KLSNkZWZpbmUgU0NUUENUTF9U
SU1FX1dBSVRfREVTQwkiVnRhZyB0aW1lIHdhaXQgdGltZSBpbiBzZWNvbmRzLCAwIGRpc2FibGVz
IGl0LiIKKyNkZWZpbmUgU0NUUENUTF9USU1FX1dBSVRfREVTQwkiVnRhZyB0aW1lIHdhaXQgdGlt
ZSBpbiBzZWNvbmRzLCAwIGRpc2FibGVzIGl0IgogI2RlZmluZSBTQ1RQQ1RMX1RJTUVfV0FJVF9N
SU4JMAogI2RlZmluZSBTQ1RQQ1RMX1RJTUVfV0FJVF9NQVgJMHhmZmZmZmZmZgogI2RlZmluZSBT
Q1RQQ1RMX1RJTUVfV0FJVF9ERUZBVUxUCVNDVFBfVElNRV9XQUlUCiAKIC8qIEVuYWJsZSBTZW5k
L1JlY2VpdmUgYnVmZmVyIHNwbGl0dGluZyAqLwotI2RlZmluZSBTQ1RQQ1RMX0JVRkZFUl9TUExJ
VFRJTkdfREVTQwkJIkVuYWJsZSBzZW5kL3JlY2VpdmUgYnVmZmVyIHNwbGl0dGluZy4iCisjZGVm
aW5lIFNDVFBDVExfQlVGRkVSX1NQTElUVElOR19ERVNDCQkiRW5hYmxlIHNlbmQvcmVjZWl2ZSBi
dWZmZXIgc3BsaXR0aW5nIgogI2RlZmluZSBTQ1RQQ1RMX0JVRkZFUl9TUExJVFRJTkdfTUlOCQkw
CiAjZGVmaW5lIFNDVFBDVExfQlVGRkVSX1NQTElUVElOR19NQVgJCTB4MwogI2RlZmluZSBTQ1RQ
Q1RMX0JVRkZFUl9TUExJVFRJTkdfREVGQVVMVAlTQ1RQQ1RMX0JVRkZFUl9TUExJVFRJTkdfTUlO
CiAKLS8qIEluaXRpYWwgY29uZ2VzdGlvbiB3aW5kb3cgaW4gTVRVICovCi0jZGVmaW5lIFNDVFBD
VExfSU5JVElBTF9DV05EX0RFU0MJIkluaXRpYWwgY29uZ2VzdGlvbiB3aW5kb3cgaW4gTVRVcyIK
Ky8qIEluaXRpYWwgY29uZ2VzdGlvbiB3aW5kb3cgaW4gTVRVcyAqLworI2RlZmluZSBTQ1RQQ1RM
X0lOSVRJQUxfQ1dORF9ERVNDCSJEZWZpbmVzIHRoZSBpbml0aWFsIGNvbmdlc3Rpb24gd2luZG93
IHNpemUgaW4gTVRVcyIKICNkZWZpbmUgU0NUUENUTF9JTklUSUFMX0NXTkRfTUlOCTAKICNkZWZp
bmUgU0NUUENUTF9JTklUSUFMX0NXTkRfTUFYCTB4ZmZmZmZmZmYKICNkZWZpbmUgU0NUUENUTF9J
TklUSUFMX0NXTkRfREVGQVVMVAkzCiAKIC8qIHJ0dHZhciBzbW9vdGggYXZnIGZvciBidyBjYWxj
ICAqLwotI2RlZmluZSBTQ1RQQ1RMX1JUVFZBUl9CV19ERVNDCSJTaGlmdCBhbW91bnQgZm9yIGJ3
IHNtb290aGluZyBvbiBydHQgY2FsYyIKKyNkZWZpbmUgU0NUUENUTF9SVFRWQVJfQldfREVTQwki
U2hpZnQgYW1vdW50IERDQ0MgdXNlcyBmb3IgYncgc21vb3RoaW5nIG9uIHJ0dCBjYWxjIgogI2Rl
ZmluZSBTQ1RQQ1RMX1JUVFZBUl9CV19NSU4JMAogI2RlZmluZSBTQ1RQQ1RMX1JUVFZBUl9CV19N
QVgJMzIKICNkZWZpbmUgU0NUUENUTF9SVFRWQVJfQldfREVGQVVMVAk0CiAKIC8qIHJ0dHZhciBz
bW9vdGggYXZnIGZvciBidyBjYWxjICAqLwotI2RlZmluZSBTQ1RQQ1RMX1JUVFZBUl9SVFRfREVT
QwkiU2hpZnQgYW1vdW50IGZvciBydHQgc21vb3RoaW5nIG9uIHJ0dCBjYWxjIgorI2RlZmluZSBT
Q1RQQ1RMX1JUVFZBUl9SVFRfREVTQwkiU2hpZnQgYW1vdW50IERDQ0MgdXNlcyBmb3IgcnR0IHNt
b290aGluZyBvbiBydHQgY2FsYyIKICNkZWZpbmUgU0NUUENUTF9SVFRWQVJfUlRUX01JTgkwCiAj
ZGVmaW5lIFNDVFBDVExfUlRUVkFSX1JUVF9NQVgJMzIKICNkZWZpbmUgU0NUUENUTF9SVFRWQVJf
UlRUX0RFRkFVTFQJNQogCi0jZGVmaW5lIFNDVFBDVExfUlRUVkFSX0VRUkVUX0RFU0MJIldoYXQg
dG8gcmV0dXJuIHdoZW4gcnR0IGFuZCBidyBhcmUgdW5jaGFuZ2VkIgorI2RlZmluZSBTQ1RQQ1RM
X1JUVFZBUl9FUVJFVF9ERVNDCSJXaGV0aGVyIERDQ0MgaW5jcmVhc2VzIGN3bmQgd2hlbiB0aGUg
cnR0IGFuZCBidyBhcmUgdW5jaGFuZ2VkIgogI2RlZmluZSBTQ1RQQ1RMX1JUVFZBUl9FUVJFVF9N
SU4JMAogI2RlZmluZSBTQ1RQQ1RMX1JUVFZBUl9FUVJFVF9NQVgJMQogI2RlZmluZSBTQ1RQQ1RM
X1JUVFZBUl9FUVJFVF9ERUZBVUxUCTAKIAotI2RlZmluZSBTQ1RQQ1RMX1JUVFZBUl9TVEVBRFlT
X0RFU0MJIkhvdyBtYW55IHRoZSBzYW1lcyBpdCB0YWtlcyB0byB0cnkgc3RlcCBkb3duIG9mIGN3
bmQiCisjZGVmaW5lIFNDVFBDVExfUlRUVkFSX1NURUFEWVNfREVTQwkiTnVtYmVyIG9mIGlkZW50
aWNhbCBidyBtZWFzdXJlbWVudHMgRENDQyB0YWtlcyB0byB0cnkgc3RlcCBkb3duIG9mIGN3bmQi
CiAjZGVmaW5lIFNDVFBDVExfUlRUVkFSX1NURUFEWVNfTUlOCTAKICNkZWZpbmUgU0NUUENUTF9S
VFRWQVJfU1RFQURZU19NQVgJMHhGRkZGCiAjZGVmaW5lIFNDVFBDVExfUlRUVkFSX1NURUFEWVNf
REVGQVVMVAkyMCAvKiAwIG1lYW5zIGRpc2FibGUgZmVhdHVyZSAqLwogCi0jZGVmaW5lIFNDVFBD
VExfUlRUVkFSX0RDQ0NFQ05fREVTQwkiRW5hYmxlIGZvciBSVENDIENDIGRhdGFjZW50ZXIgRUNO
IgorI2RlZmluZSBTQ1RQQ1RMX1JUVFZBUl9EQ0NDRUNOX0RFU0MJIkVuYWJsZSBFQ04gZm9yIERD
Q0MuIgogI2RlZmluZSBTQ1RQQ1RMX1JUVFZBUl9EQ0NDRUNOX01JTgkwCiAjZGVmaW5lIFNDVFBD
VExfUlRUVkFSX0RDQ0NFQ05fTUFYCTEKICNkZWZpbmUgU0NUUENUTF9SVFRWQVJfRENDQ0VDTl9E
RUZBVUxUCTEgLyogMCBtZWFucyBkaXNhYmxlIGZlYXR1cmUgKi8KIAotI2RlZmluZSBTQ1RQQ1RM
X0JMQUNLSE9MRV9ERVNDCQkiRW5hYmxlIFNDVFAgYmxhY2tob2xpbmcuIFNlZSBibGFja2hvbGUo
NCkgZm9yIG1vcmUgZGV0YWlscy4iCisjZGVmaW5lIFNDVFBDVExfQkxBQ0tIT0xFX0RFU0MJCSJF
bmFibGUgU0NUUCBibGFja2hvbGluZywgc2VlIGJsYWNraG9sZSg0KSBmb3IgbW9yZSBkZXRhaWxz
IgogI2RlZmluZSBTQ1RQQ1RMX0JMQUNLSE9MRV9NSU4JCTAKICNkZWZpbmUgU0NUUENUTF9CTEFD
S0hPTEVfTUFYCQkyCiAjZGVmaW5lIFNDVFBDVExfQkxBQ0tIT0xFX0RFRkFVTFQJU0NUUENUTF9C
TEFDS0hPTEVfTUlOCiAKKy8qIHNlbmRhbGxfbGltaXQ6IE1heGltdW0gbWVzc2FnZSB3aXRoIFND
VFBfU0VOREFMTCAqLworI2RlZmluZSBTQ1RQQ1RMX1NFTkRBTExfTElNSVRfREVTQwkiTWF4aW11
bSBzaXplIG9mIGEgbWVzc2FnZSBzZW5kIHdpdGggU0NUUF9TRU5EQUxMIgorI2RlZmluZSBTQ1RQ
Q1RMX1NFTkRBTExfTElNSVRfTUlOCTAKKyNkZWZpbmUgU0NUUENUTF9TRU5EQUxMX0xJTUlUX01B
WAkweEZGRkZGRkZGCisjZGVmaW5lIFNDVFBDVExfU0VOREFMTF9MSU1JVF9ERUZBVUxUCTE0MzIK
KwogI2RlZmluZSBTQ1RQQ1RMX0RJQUdfSU5GT19DT0RFX0RFU0MJIkRpYWdub3N0aWMgaW5mb3Jt
YXRpb24gZXJyb3IgY2F1c2UgY29kZSIKICNkZWZpbmUgU0NUUENUTF9ESUFHX0lORk9fQ09ERV9N
SU4JMAogI2RlZmluZSBTQ1RQQ1RMX0RJQUdfSU5GT19DT0RFX01BWAk2NTUzNQpAQCAtNTc4LDcg
KzU4NSw3IEBAIHN0cnVjdCBzY3RwX3N5c2N0bCB7CiAjZGVmaW5lIFNDVFBDVExfREVCVUdfREVG
QVVMVAkwCiAjZW5kaWYKIAotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19B
UFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2RlZmluZSBTQ1RQQ1RMX01BSU5f
VElNRVJfREVTQwkJIk1haW4gdGltZXIgaW50ZXJ2YWwgaW4gbXMiCiAjZGVmaW5lIFNDVFBDVExf
TUFJTl9USU1FUl9NSU4JCTEKICNkZWZpbmUgU0NUUENUTF9NQUlOX1RJTUVSX01BWAkJMHhGRkZG
RkZGRgpAQCAtNTkwLDE0ICs1OTcsMTQgQEAgc3RydWN0IHNjdHBfc3lzY3RsIHsKICNkZWZpbmUg
U0NUUENUTF9JR05PUkVfVk1XQVJFX0lOVEVSRkFDRVNfREVGQVVMVAlTQ1RQQ1RMX0lHTk9SRV9W
TVdBUkVfSU5URVJGQUNFU19NQVgKICNlbmRpZgogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8
IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCi0jZGVmaW5lIFNDVFBDVExfT1VUUFVUX1VO
TE9DS0VEX0RFU0MJIlVubG9jayBzb2NrZXQgd2hlbiBzZW5kaW5nIHBhY2tldHMgZG93biB0byBJ
UC4iCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisj
ZGVmaW5lIFNDVFBDVExfT1VUUFVUX1VOTE9DS0VEX0RFU0MJIlVubG9jayBzb2NrZXQgd2hlbiBz
ZW5kaW5nIHBhY2tldHMgZG93biB0byBJUCIKICNkZWZpbmUgU0NUUENUTF9PVVRQVVRfVU5MT0NL
RURfTUlOCTAKICNkZWZpbmUgU0NUUENUTF9PVVRQVVRfVU5MT0NLRURfTUFYCTEKICNkZWZpbmUg
U0NUUENUTF9PVVRQVVRfVU5MT0NLRURfREVGQVVMVAlTQ1RQQ1RMX09VVFBVVF9VTkxPQ0tFRF9N
SU4KICNlbmRpZgogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExF
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjZGVmaW5lCVNDVFBDVExfQUREUl9XQVRD
SERPR19MSU1JVF9ERVNDCSJBZGRyZXNzIHdhdGNoZG9nIGxpbWl0IgogI2RlZmluZQlTQ1RQQ1RM
X0FERFJfV0FUQ0hET0dfTElNSVRfTUlOCQkwCiAjZGVmaW5lCVNDVFBDVExfQUREUl9XQVRDSERP
R19MSU1JVF9NQVgJCTB4RkZGRkZGRkYKQEAgLTYxNyw3ICs2MjQsNyBAQCBTWVNDVExfREVDTChf
bmV0X2luZXRfc2N0cCk7CiAjZW5kaWYKIAogdm9pZCBzY3RwX2luaXRfc3lzY3Rscyh2b2lkKTsK
LSNpZiBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogdm9pZCBzY3RwX2ZpbmlzaF9zeXNjdGxzKHZvaWQpOwogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3RpbWVyLmMg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAv
dXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF90aW1lci5jCm9sZCBtb2RlIDEwMDY0
NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggNDI2YmE0NGFlZWUyMTVhYmZjNmQ5OTdhM2YwYTM1ZTI0
ZDYzMDhkOC4uYWQwNjJiMzVlZWEwMWM0NjEyMTM3MGQ2YmY0YzZiZDRiMTY5MzExYgotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNy
c2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF90aW1lci5jCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Vz
cnNjdHBsaWIvbmV0aW5ldC9zY3RwX3RpbWVyLmMKQEAgLTMyLDE2ICszMiwxNiBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZmRlZiBfX0ZyZWVCU0RfXwor
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5j
bHVkZSA8c3lzL2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQv
c2N0cF90aW1lci5jIDMxNzU5MiAyMDE3LTA0LTI5IDA5OjU3OjI3WiB0dWV4ZW4gJCIpOworX19G
QlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfdGltZXIuYyAzNjIwNTQgMjAy
MC0wNi0xMSAxMzozNDowOVogdHVleGVuICQiKTsKICNlbmRpZgogCiAjZGVmaW5lIF9JUF9WSEwK
ICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfb3MuaD4KICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfcGNi
Lmg+CiAjaWZkZWYgSU5FVDYKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0ZyZWVCU0QpCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1
ZGUgPG5ldGluZXQ2L3NjdHA2X3Zhci5oPgogI2VuZGlmCiAjZW5kaWYKQEAgLTU3LDE1ICs1Nywx
MSBAQCBfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF90aW1lci5jIDMx
NzU5MiAyMDE3LTA0LTI5IDA5OjU3OjI3WiB0dQogI2luY2x1ZGUgPG5ldGluZXQvc2N0cC5oPgog
I2luY2x1ZGUgPG5ldGluZXQvc2N0cF91aW8uaD4KICNpZiBkZWZpbmVkKElORVQpIHx8IGRlZmlu
ZWQoSU5FVDYpCi0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiAhKGRl
ZmluZWQoX1dJTjMyKSAmJiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pKQogI2luY2x1ZGUgPG5ldGlu
ZXQvdWRwLmg+CiAjZW5kaWYKICNlbmRpZgogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCi0jZGVm
aW5lIEFQUExFX0ZJTEVfTk8gNgotI2VuZGlmCi0KIHZvaWQKIHNjdHBfYXVkaXRfcmV0cmFubWlz
c2lvbl9xdWV1ZShzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYykKIHsKQEAgLTM0OCw3ICsz
NDQsMTEgQEAgc2N0cF9maW5kX2FsdGVybmF0ZV9uZXQoc3RydWN0IHNjdHBfdGNiICpzdGNiLAog
CQkJCXJldHVybiAoTlVMTCk7CiAJCQl9CiAJCX0KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQlpZiAoYWx0LT5yby5yb19uaCA9PSBOVUxMKSB7
CisjZWxzZQogCQlpZiAoYWx0LT5yby5yb19ydCA9PSBOVUxMKSB7CisjZW5kaWYKIAkJCWlmIChh
bHQtPnJvLl9zX2FkZHIpIHsKIAkJCQlzY3RwX2ZyZWVfaWZhKGFsdC0+cm8uX3NfYWRkcik7CiAJ
CQkJYWx0LT5yby5fc19hZGRyID0gTlVMTDsKQEAgLTM1Niw3ICszNTYsMTEgQEAgc2N0cF9maW5k
X2FsdGVybmF0ZV9uZXQoc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkJYWx0LT5zcmNfYWRkcl9z
ZWxlY3RlZCA9IDA7CiAJCX0KIAkJaWYgKCgoYWx0LT5kZXN0X3N0YXRlICYgU0NUUF9BRERSX1JF
QUNIQUJMRSkgPT0gU0NUUF9BRERSX1JFQUNIQUJMRSkgJiYKKyNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQkgICAgKGFsdC0+cm8ucm9fbmggIT0g
TlVMTCkgJiYKKyNlbHNlCiAJCSAgICAoYWx0LT5yby5yb19ydCAhPSBOVUxMKSAmJgorI2VuZGlm
CiAJCSAgICAoIShhbHQtPmRlc3Rfc3RhdGUgJiBTQ1RQX0FERFJfVU5DT05GSVJNRUQpKSkgewog
CQkJLyogRm91bmQgYSByZWFjaGFibGUgYWRkcmVzcyAqLwogCQkJYnJlYWs7CkBAIC01MTcsNyAr
NTIxLDcgQEAgc2N0cF9tYXJrX2FsbF9mb3JfcmVzZW5kKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwK
IAl9CiAJdHYudHZfc2VjID0gY3VyX3J0byAvIDEwMDAwMDA7CiAJdHYudHZfdXNlYyA9IGN1cl9y
dG8gJSAxMDAwMDAwOwotI2lmbmRlZiBfX0ZyZWVCU0RfXworI2lmICEoZGVmaW5lZChfX0ZyZWVC
U0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAJdGltZXJzdWIoJm5vdywgJnR2LCAm
bWluX3dhaXQpOwogI2Vsc2UKIAltaW5fd2FpdCA9IG5vdzsKQEAgLTYxNCw3ICs2MTgsNyBAQCBz
Y3RwX21hcmtfYWxsX2Zvcl9yZXNlbmQoc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkJfQogCQkJ
aWYgKHN0Y2ItPmFzb2MucHJzY3RwX3N1cHBvcnRlZCAmJiBQUl9TQ1RQX1RUTF9FTkFCTEVEKGNo
ay0+ZmxhZ3MpKSB7CiAJCQkJLyogSXMgaXQgZXhwaXJlZD8gKi8KLSNpZm5kZWYgX19GcmVlQlNE
X18KKyNpZiAhKGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
KQogCQkJCWlmICh0aW1lcmNtcCgmbm93LCAmY2hrLT5yZWMuZGF0YS50aW1ldG9kcm9wLCA+KSkg
ewogI2Vsc2UKIAkJCQlpZiAodGltZXZhbGNtcCgmbm93LCAmY2hrLT5yZWMuZGF0YS50aW1ldG9k
cm9wLCA+KSkgewpAQCAtOTQyLDEwICs5NDYsMTQgQEAgc2N0cF90M3J4dF90aW1lcihzdHJ1Y3Qg
c2N0cF9pbnBjYiAqaW5wLAogCQluZXQtPnNyY19hZGRyX3NlbGVjdGVkID0gMDsKIAogCQkvKiBG
b3JjZSBhIHJvdXRlIGFsbG9jYXRpb24gdG9vICovCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJUk9fTkhGUkVFKCZuZXQtPnJvKTsKKyNlbHNl
CiAJCWlmIChuZXQtPnJvLnJvX3J0KSB7CiAJCQlSVEZSRUUobmV0LT5yby5yb19ydCk7CiAJCQlu
ZXQtPnJvLnJvX3J0ID0gTlVMTDsKIAkJfQorI2VuZGlmCiAKIAkJLyogV2FzIGl0IG91ciBwcmlt
YXJ5PyAqLwogCQlpZiAoKHN0Y2ItPmFzb2MucHJpbWFyeV9kZXN0aW5hdGlvbiA9PSBuZXQpICYm
IChhbHQgIT0gbmV0KSkgewpAQCAtOTY3LDcgKzk3NSw3IEBAIHNjdHBfdDNyeHRfdGltZXIoc3Ry
dWN0IHNjdHBfaW5wY2IgKmlucCwKIAkgKiBTcGVjaWFsIGNhc2UgZm9yIGNvb2tpZS1lY2hvJ2Vk
IGNhc2UsIHdlIGRvbid0IGRvIG91dHB1dCBidXQgbXVzdAogCSAqIGF3YWl0IHRoZSBDT09LSUUt
QUNLIGJlZm9yZSByZXRyYW5zbWlzc2lvbgogCSAqLwotCWlmIChTQ1RQX0dFVF9TVEFURSgmc3Rj
Yi0+YXNvYykgPT0gU0NUUF9TVEFURV9DT09LSUVfRUNIT0VEKSB7CisJaWYgKFNDVFBfR0VUX1NU
QVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCkgewogCQkvKgogCQkgKiBIZXJl
IHdlIGp1c3QgcmVzZXQgdGhlIHRpbWVyIGFuZCBzdGFydCBhZ2FpbiBzaW5jZSB3ZQogCQkgKiBo
YXZlIG5vdCBlc3RhYmxpc2hlZCB0aGUgYXNvYwpAQCAtOTgyLDcgKzk5MCwxMiBAQCBzY3RwX3Qz
cnh0X3RpbWVyKHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCS8qIEMzLiBTZWUgaWYgd2UgbmVl
ZCB0byBzZW5kIGEgRndkLVRTTiAqLwogCQlpZiAoU0NUUF9UU05fR1Qoc3RjYi0+YXNvYy5hZHZh
bmNlZF9wZWVyX2Fja19wb2ludCwgc3RjYi0+YXNvYy5sYXN0X2Fja2VkX3NlcSkpIHsKIAkJCXNl
bmRfZm9yd2FyZF90c24oc3RjYiwgJnN0Y2ItPmFzb2MpOwotCQkJaWYgKGxjaGspIHsKKwkJCWZv
ciAoOyBsY2hrICE9IE5VTEw7IGxjaGsgPSBUQUlMUV9ORVhUKGxjaGssIHNjdHBfbmV4dCkpIHsK
KwkJCQlpZiAobGNoay0+d2hvVG8gIT0gTlVMTCkgeworCQkJCQlicmVhazsKKwkJCQl9CisJCQl9
CisJCQlpZiAobGNoayAhPSBOVUxMKSB7CiAJCQkJLyogQXNzdXJlIGEgdGltZXIgaXMgdXAgKi8K
IAkJCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9TRU5ELCBzdGNiLT5zY3RwX2Vw
LCBzdGNiLCBsY2hrLT53aG9Ubyk7CiAJCQl9CkBAIC0xMDA5LDcgKzEwMjIsNyBAQCBzY3RwX3Qx
aW5pdF90aW1lcihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogCQlzY3RwX3NlbmRfaW5pdGlhdGUo
aW5wLCBzdGNiLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwogCQlyZXR1cm4gKDApOwogCX0KLQlpZiAo
U0NUUF9HRVRfU1RBVEUoKCZzdGNiLT5hc29jKSkgIT0gU0NUUF9TVEFURV9DT09LSUVfV0FJVCkg
eworCWlmIChTQ1RQX0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB7
CiAJCXJldHVybiAoMCk7CiAJfQogCWlmIChzY3RwX3RocmVzaG9sZF9tYW5hZ2VtZW50KGlucCwg
c3RjYiwgbmV0LApAQCAtMTA1Nyw3ICsxMDcwLDcgQEAgc2N0cF9jb29raWVfdGltZXIoc3RydWN0
IHNjdHBfaW5wY2IgKmlucCwKIAkJfQogCX0KIAlpZiAoY29va2llID09IE5VTEwpIHsKLQkJaWYg
KFNDVFBfR0VUX1NUQVRFKCZzdGNiLT5hc29jKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9FQ0hPRUQp
IHsKKwkJaWYgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9F
RCkgewogCQkJLyogRk9PQkFSISAqLwogCQkJc3RydWN0IG1idWYgKm9wX2VycjsKIApAQCAtMTA2
OSw3ICsxMDgyLDcgQEAgc2N0cF9jb29raWVfdGltZXIoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwK
ICNpZmRlZiBJTlZBUklBTlRTCiAJCQlwYW5pYygiQ29va2llIHRpbWVyIGV4cGlyZXMgaW4gd3Jv
bmcgc3RhdGU/Iik7CiAjZWxzZQotCQkJU0NUUF9QUklOVEYoIlN0cmFuZ2UgaW4gc3RhdGUgJWQg
bm90IGNvb2tpZS1lY2hvZWQgeWV0IGMtZSB0aW1lciBleHBpcmVzP1xuIiwgU0NUUF9HRVRfU1RB
VEUoJnN0Y2ItPmFzb2MpKTsKKwkJCVNDVFBfUFJJTlRGKCJTdHJhbmdlIGluIHN0YXRlICVkIG5v
dCBjb29raWUtZWNob2VkIHlldCBjLWUgdGltZXIgZXhwaXJlcz9cbiIsIFNDVFBfR0VUX1NUQVRF
KHN0Y2IpKTsKIAkJCXJldHVybiAoMCk7CiAjZW5kaWYKIAkJfQpAQCAtMTEwOCwxMCArMTEyMSw5
IEBAIHNjdHBfY29va2llX3RpbWVyKHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiB9CiAKIGludAot
c2N0cF9zdHJyZXNldF90aW1lcihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90
Y2IgKnN0Y2IsCi0gICAgc3RydWN0IHNjdHBfbmV0cyAqbmV0KQorc2N0cF9zdHJyZXNldF90aW1l
cihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IpCiB7Ci0Jc3Ry
dWN0IHNjdHBfbmV0cyAqYWx0OworCXN0cnVjdCBzY3RwX25ldHMgKmFsdCwgKm5ldDsKIAlzdHJ1
Y3Qgc2N0cF90bWl0X2NodW5rICpzdHJyc3QgPSBOVUxMLCAqY2hrID0gTlVMTDsKIAogCWlmIChz
dGNiLT5hc29jLnN0cmVhbV9yZXNldF9vdXRzdGFuZGluZyA9PSAwKSB7CkBAIC0xMTIyLDkgKzEx
MzQsOSBAQCBzY3RwX3N0cnJlc2V0X3RpbWVyKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVj
dCBzY3RwX3RjYiAqc3RjYiwKIAlpZiAoc3RycnN0ID09IE5VTEwpIHsKIAkJcmV0dXJuICgwKTsK
IAl9CisJbmV0ID0gc3RycnN0LT53aG9UbzsKIAkvKiBkbyB0aHJlc2hvbGQgbWFuYWdlbWVudCAq
LwotCWlmIChzY3RwX3RocmVzaG9sZF9tYW5hZ2VtZW50KGlucCwgc3RjYiwgc3RycnN0LT53aG9U
bywKLQkgICAgc3RjYi0+YXNvYy5tYXhfc2VuZF90aW1lcykpIHsKKwlpZiAoc2N0cF90aHJlc2hv
bGRfbWFuYWdlbWVudChpbnAsIHN0Y2IsIG5ldCwgc3RjYi0+YXNvYy5tYXhfc2VuZF90aW1lcykp
IHsKIAkJLyogQXNzb2MgaXMgb3ZlciAqLwogCQlyZXR1cm4gKDEpOwogCX0KQEAgLTExMzIsOSAr
MTE0NCw4IEBAIHNjdHBfc3RycmVzZXRfdGltZXIoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3Ry
dWN0IHNjdHBfdGNiICpzdGNiLAogCSAqIENsZWFyZWQgdGhyZXNob2xkIG1hbmFnZW1lbnQsIG5v
dyBsZXRzIGJhY2tvZmYgdGhlIGFkZHJlc3MKIAkgKiBhbmQgc2VsZWN0IGFuIGFsdGVybmF0ZQog
CSAqLwotCXNjdHBfYmFja29mZl9vbl90aW1lb3V0KHN0Y2IsIHN0cnJzdC0+d2hvVG8sIDEsIDAs
IDApOwotCWFsdCA9IHNjdHBfZmluZF9hbHRlcm5hdGVfbmV0KHN0Y2IsIHN0cnJzdC0+d2hvVG8s
IDApOwotCXNjdHBfZnJlZV9yZW1vdGVfYWRkcihzdHJyc3QtPndob1RvKTsKKwlzY3RwX2JhY2tv
ZmZfb25fdGltZW91dChzdGNiLCBuZXQsIDEsIDAsIDApOworCWFsdCA9IHNjdHBfZmluZF9hbHRl
cm5hdGVfbmV0KHN0Y2IsIG5ldCwgMCk7CiAJc3RycnN0LT53aG9UbyA9IGFsdDsKIAlhdG9taWNf
YWRkX2ludCgmYWx0LT5yZWZfY291bnQsIDEpOwogCkBAIC0xMTU5LDYgKzExNzAsOCBAQCBzY3Rw
X3N0cnJlc2V0X3RpbWVyKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAq
c3RjYiwKIAkJICovCiAJCXNjdHBfbW92ZV9jaHVua3NfZnJvbV9uZXQoc3RjYiwgbmV0KTsKIAl9
CisJc2N0cF9mcmVlX3JlbW90ZV9hZGRyKG5ldCk7CisKIAkvKiBtYXJrIHRoZSByZXRyYW4gaW5m
byAqLwogCWlmIChzdHJyc3QtPnNlbnQgIT0gU0NUUF9EQVRBR1JBTV9SRVNFTkQpCiAJCXNjdHBf
dWNvdW50X2luY3Ioc3RjYi0+YXNvYy5zZW50X3F1ZXVlX3JldHJhbl9jbnQpOwpAQCAtMTE2Niw3
ICsxMTc5LDcgQEAgc2N0cF9zdHJyZXNldF90aW1lcihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBz
dHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJc3RycnN0LT5mbGFncyB8PSBDSFVOS19GTEFHU19GUkFH
TUVOVF9PSzsKIAogCS8qIHJlc3RhcnQgdGhlIHRpbWVyICovCi0Jc2N0cF90aW1lcl9zdGFydChT
Q1RQX1RJTUVSX1RZUEVfU1RSUkVTRVQsIGlucCwgc3RjYiwgc3RycnN0LT53aG9Ubyk7CisJc2N0
cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfU1RSUkVTRVQsIGlucCwgc3RjYiwgYWx0KTsK
IAlyZXR1cm4gKDApOwogfQogCkBAIC0xMTkxLDggKzEyMDQsOSBAQCBzY3RwX2FzY29uZl90aW1l
cihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCWlmIChh
c2NvbmYgPT0gTlVMTCkgewogCQkJcmV0dXJuICgwKTsKIAkJfQorCQluZXQgPSBhc2NvbmYtPndo
b1RvOwogCQkvKiBkbyB0aHJlc2hvbGQgbWFuYWdlbWVudCAqLwotCQlpZiAoc2N0cF90aHJlc2hv
bGRfbWFuYWdlbWVudChpbnAsIHN0Y2IsIGFzY29uZi0+d2hvVG8sCisJCWlmIChzY3RwX3RocmVz
aG9sZF9tYW5hZ2VtZW50KGlucCwgc3RjYiwgbmV0LAogCQkgICAgc3RjYi0+YXNvYy5tYXhfc2Vu
ZF90aW1lcykpIHsKIAkJCS8qIEFzc29jIGlzIG92ZXIgKi8KIAkJCXJldHVybiAoMSk7CkBAIC0x
MjA1LDE3ICsxMjE5LDE2IEBAIHNjdHBfYXNjb25mX3RpbWVyKHN0cnVjdCBzY3RwX2lucGNiICpp
bnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJCSAqIE1hcmsgdGhpcyBwZWVyIGFzIEFTQ09O
RiBpbmNhcGFibGUgYW5kIGNsZWFudXAuCiAJCQkgKi8KIAkJCVNDVFBEQkcoU0NUUF9ERUJVR19U
SU1FUjEsICJhc2NvbmZfdGltZXI6IFBlZXIgaGFzIG5vdCByZXNwb25kZWQgdG8gb3VyIHJlcGVh
dGVkIEFTQ09ORnNcbiIpOwotCQkJc2N0cF9hc2NvbmZfY2xlYW51cChzdGNiLCBuZXQpOworCQkJ
c2N0cF9hc2NvbmZfY2xlYW51cChzdGNiKTsKIAkJCXJldHVybiAoMCk7CiAJCX0KIAkJLyoKIAkJ
ICogY2xlYXJlZCB0aHJlc2hvbGQgbWFuYWdlbWVudCwgc28gbm93IGJhY2tvZmYgdGhlIG5ldCBh
bmQKIAkJICogc2VsZWN0IGFuIGFsdGVybmF0ZQogCQkgKi8KLQkJc2N0cF9iYWNrb2ZmX29uX3Rp
bWVvdXQoc3RjYiwgYXNjb25mLT53aG9UbywgMSwgMCwgMCk7Ci0JCWFsdCA9IHNjdHBfZmluZF9h
bHRlcm5hdGVfbmV0KHN0Y2IsIGFzY29uZi0+d2hvVG8sIDApOworCQlzY3RwX2JhY2tvZmZfb25f
dGltZW91dChzdGNiLCBuZXQsIDEsIDAsIDApOworCQlhbHQgPSBzY3RwX2ZpbmRfYWx0ZXJuYXRl
X25ldChzdGNiLCBuZXQsIDApOwogCQlpZiAoYXNjb25mLT53aG9UbyAhPSBhbHQpIHsKLQkJCXNj
dHBfZnJlZV9yZW1vdGVfYWRkcihhc2NvbmYtPndob1RvKTsKIAkJCWFzY29uZi0+d2hvVG8gPSBh
bHQ7CiAJCQlhdG9taWNfYWRkX2ludCgmYWx0LT5yZWZfY291bnQsIDEpOwogCQl9CkBAIC0xMjUy
LDYgKzEyNjUsOCBAQCBzY3RwX2FzY29uZl90aW1lcihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBz
dHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCQkgKi8KIAkJCXNjdHBfbW92ZV9jaHVua3NfZnJvbV9u
ZXQoc3RjYiwgbmV0KTsKIAkJfQorCQlzY3RwX2ZyZWVfcmVtb3RlX2FkZHIobmV0KTsKKwogCQkv
KiBtYXJrIHRoZSByZXRyYW4gaW5mbyAqLwogCQlpZiAoYXNjb25mLT5zZW50ICE9IFNDVFBfREFU
QUdSQU1fUkVTRU5EKQogCQkJc2N0cF91Y291bnRfaW5jcihzdGNiLT5hc29jLnNlbnRfcXVldWVf
cmV0cmFuX2NudCk7CkBAIC0xMjY2LDggKzEyODEsNyBAQCBzY3RwX2FzY29uZl90aW1lcihzdHJ1
Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAKIC8qIE1vYmlsaXR5
IGFkYXB0YXRpb24gKi8KIHZvaWQKLXNjdHBfZGVsZXRlX3ByaW1fdGltZXIoc3RydWN0IHNjdHBf
aW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAotICAgICAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQgU0NUUF9VTlVTRUQpCitzY3RwX2RlbGV0ZV9wcmltX3Rp
bWVyKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYikKIHsKIAlp
ZiAoc3RjYi0+YXNvYy5kZWxldGVkX3ByaW1hcnkgPT0gTlVMTCkgewogCQlTQ1RQREJHKFNDVFBf
REVCVUdfQVNDT05GMSwgImRlbGV0ZV9wcmltX3RpbWVyOiBkZWxldGVkX3ByaW1hcnkgaXMgbm90
IHN0b3JlZC4uLlxuIik7CkBAIC0xNDQxLDcgKzE0NTUsNyBAQCBzY3RwX2hlYXJ0YmVhdF90aW1l
cihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAKIAkJaWYg
KChuZXQtPmxhc3Rfc2VudF90aW1lLnR2X3NlYyA+IDApIHx8CiAJCSAgICAobmV0LT5sYXN0X3Nl
bnRfdGltZS50dl91c2VjID4gMCkpIHsKLSNpZmRlZiBfX0ZyZWVCU0RfXworI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQlzdHJ1Y3QgdGltZXZh
bCBkaWZmOwogCiAJCQlTQ1RQX0dFVFRJTUVfVElNRVZBTCgmZGlmZik7CkBAIC0xNDg3LDcgKzE1
MDEsNyBAQCBzY3RwX3BhdGhtdHVfdGltZXIoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJCQlp
ZiAobmV0LT5yby5fbF9hZGRyLnNhLnNhX2ZhbWlseSA9PSBBRl9JTkVUNikgewogCQkJCQlzdHJ1
Y3Qgc29ja2FkZHJfaW42ICpzaW42ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKikmbmV0LT5yby5f
bF9hZGRyOwogCQkJCQkvKiBLQU1FIGhhY2s6IGVtYmVkIHNjb3BlaWQgKi8KLSNpZiBkZWZpbmVk
KF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKICNpZiBkZWZpbmVkKEFQUExFX0xFT1BBUkQpIHx8IGRlZmluZWQoQVBQTEVfU05PV0xF
T1BBUkQpCiAJCQkJCSh2b2lkKWluNl9lbWJlZHNjb3BlKCZzaW42LT5zaW42X2FkZHIsIHNpbjYs
IE5VTEwsIE5VTEwpOwogI2Vsc2UKQEAgLTE1MjAsNyArMTUzNCwxMSBAQCBzY3RwX3BhdGhtdHVf
dGltZXIoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJCQluZXQtPnNyY19hZGRyX3NlbGVjdGVk
ID0gMTsKIAkJfQogCQlpZiAobmV0LT5yby5fc19hZGRyKSB7CisjaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJCW10dSA9IFNDVFBfR0FUSEVSX01U
VV9GUk9NX1JPVVRFKG5ldC0+cm8uX3NfYWRkciwgJm5ldC0+cm8uX3NfYWRkci5zYSwgbmV0LT5y
by5yb19uaCk7CisjZWxzZQogCQkJbXR1ID0gU0NUUF9HQVRIRVJfTVRVX0ZST01fUk9VVEUobmV0
LT5yby5fc19hZGRyLCAmbmV0LT5yby5fc19hZGRyLnNhLCBuZXQtPnJvLnJvX3J0KTsKKyNlbmRp
ZgogI2lmIGRlZmluZWQoSU5FVCkgfHwgZGVmaW5lZChJTkVUNikKIAkJCWlmIChuZXQtPnBvcnQp
IHsKIAkJCQltdHUgLT0gc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpOwpAQCAtMTUzOCwxNiArMTU1Niwx
NCBAQCBzY3RwX3BhdGhtdHVfdGltZXIoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIH0KIAogdm9p
ZAotc2N0cF9hdXRvY2xvc2VfdGltZXIoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKLSAgICBzdHJ1
Y3Qgc2N0cF90Y2IgKnN0Y2IsCi0gICAgc3RydWN0IHNjdHBfbmV0cyAqbmV0KQorc2N0cF9hdXRv
Y2xvc2VfdGltZXIoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNi
KQogewogCXN0cnVjdCB0aW1ldmFsIHRuLCAqdGltX3RvdXNlOwogCXN0cnVjdCBzY3RwX2Fzc29j
aWF0aW9uICphc29jOwotCWludCB0aWNrc19nb25lX2J5OworCXVpbnQzMl90IHRpY2tzX2dvbmVf
Ynk7CiAKIAkodm9pZClTQ1RQX0dFVFRJTUVfVElNRVZBTCgmdG4pOwotCWlmIChzdGNiLT5hc29j
LnNjdHBfYXV0b2Nsb3NlX3RpY2tzICYmCisJaWYgKHN0Y2ItPmFzb2Muc2N0cF9hdXRvY2xvc2Vf
dGlja3MgPiAwICYmCiAJICAgIHNjdHBfaXNfZmVhdHVyZV9vbihpbnAsIFNDVFBfUENCX0ZMQUdT
X0FVVE9DTE9TRSkpIHsKIAkJLyogQXV0byBjbG9zZSBpcyBvbiAqLwogCQlhc29jID0gJnN0Y2It
PmFzb2M7CkBAIC0xNTU5LDkgKzE1NzUsOCBAQCBzY3RwX2F1dG9jbG9zZV90aW1lcihzdHJ1Y3Qg
c2N0cF9pbnBjYiAqaW5wLAogCQkJdGltX3RvdXNlID0gJmFzb2MtPnRpbWVfbGFzdF9zZW50Owog
CQl9CiAJCS8qIE5vdyBoYXMgbG9uZyBlbm91Z2ggdHJhbnNwaXJlZCB0byBhdXRvY2xvc2U/ICov
Ci0JCXRpY2tzX2dvbmVfYnkgPSBTRUNfVE9fVElDS1ModG4udHZfc2VjIC0gdGltX3RvdXNlLT50
dl9zZWMpOwotCQlpZiAoKHRpY2tzX2dvbmVfYnkgPiAwKSAmJgotCQkgICAgKHRpY2tzX2dvbmVf
YnkgPj0gKGludClhc29jLT5zY3RwX2F1dG9jbG9zZV90aWNrcykpIHsKKwkJdGlja3NfZ29uZV9i
eSA9IHNjdHBfc2Vjc190b190aWNrcygodWludDMyX3QpKHRuLnR2X3NlYyAtIHRpbV90b3VzZS0+
dHZfc2VjKSk7CisJCWlmICh0aWNrc19nb25lX2J5ID49IGFzb2MtPnNjdHBfYXV0b2Nsb3NlX3Rp
Y2tzKSB7CiAJCQkvKgogCQkJICogYXV0b2Nsb3NlIHRpbWUgaGFzIGhpdCwgY2FsbCB0aGUgb3V0
cHV0IHJvdXRpbmUsCiAJCQkgKiB3aGljaCBzaG91bGQgZG8gbm90aGluZyBqdXN0IHRvIGJlIFNV
UkUgd2UgZG9uJ3QKQEAgLTE1NzcsMjkgKzE1OTIsMjYgQEAgc2N0cF9hdXRvY2xvc2VfdGltZXIo
c3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJCQkgKiB0aGVyZSBpcyBub3RoaW5nIHF1ZXVlZCB0
byBzZW5kLCBzbyBJJ20KIAkJCQkgKiBkb25lLi4uCiAJCQkJICovCi0JCQkJaWYgKFNDVFBfR0VU
X1NUQVRFKGFzb2MpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCkgeworCQkJCWlmIChTQ1RQ
X0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpIHsKIAkJCQkJLyog
b25seSBzZW5kIFNIVVRET1dOIDFzdCB0aW1lIHRocnUgKi8KLQkJCQkJc3RydWN0IHNjdHBfbmV0
cyAqbmV0cDsKKwkJCQkJc3RydWN0IHNjdHBfbmV0cyAqbmV0OwogCi0JCQkJCWlmICgoU0NUUF9H
RVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9PUEVOKSB8fAotCQkJCQkgICAgKFNDVFBfR0VU
X1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpKSB7CisJCQkJCWlm
ICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9PUEVOKSB8fAorCQkJCQkgICAg
KFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpKSB7
CiAJCQkJCQlTQ1RQX1NUQVRfREVDUl9HQVVHRTMyKHNjdHBzX2N1cnJlc3RhYik7CiAJCQkJCX0K
LQkJCQkJU0NUUF9TRVRfU1RBVEUoYXNvYywgU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKTsKLQkJ
CQkJU0NUUF9DTEVBUl9TVUJTVEFURShhc29jLCBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJTkcp
OworCQkJCQlTQ1RQX1NFVF9TVEFURShzdGNiLCBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpOwog
CQkJCQlzY3RwX3N0b3BfdGltZXJzX2Zvcl9zaHV0ZG93bihzdGNiKTsKIAkJCQkJaWYgKHN0Y2It
PmFzb2MuYWx0ZXJuYXRlKSB7Ci0JCQkJCQluZXRwID0gc3RjYi0+YXNvYy5hbHRlcm5hdGU7CisJ
CQkJCQluZXQgPSBzdGNiLT5hc29jLmFsdGVybmF0ZTsKIAkJCQkJfSBlbHNlIHsKLQkJCQkJCW5l
dHAgPSBzdGNiLT5hc29jLnByaW1hcnlfZGVzdGluYXRpb247CisJCQkJCQluZXQgPSBzdGNiLT5h
c29jLnByaW1hcnlfZGVzdGluYXRpb247CiAJCQkJCX0KLQkJCQkJc2N0cF9zZW5kX3NodXRkb3du
KHN0Y2IsIG5ldHApOworCQkJCQlzY3RwX3NlbmRfc2h1dGRvd24oc3RjYiwgbmV0KTsKIAkJCQkJ
c2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfU0hVVERPV04sCi0JCQkJCQkJIHN0Y2It
PnNjdHBfZXAsIHN0Y2IsCi0JCQkJCQkJIG5ldHApOworCQkJCQkJCSBzdGNiLT5zY3RwX2VwLCBz
dGNiLCBuZXQpOwogCQkJCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9TSFVURE9X
TkdVQVJELAotCQkJCQkJCSBzdGNiLT5zY3RwX2VwLCBzdGNiLAotCQkJCQkJCSBuZXRwKTsKKwkJ
CQkJCQkgc3RjYi0+c2N0cF9lcCwgc3RjYiwgTlVMTCk7CiAJCQkJfQogCQkJfQogCQl9IGVsc2Ug
ewpAQCAtMTYwNywxMyArMTYxOSwxMiBAQCBzY3RwX2F1dG9jbG9zZV90aW1lcihzdHJ1Y3Qgc2N0
cF9pbnBjYiAqaW5wLAogCQkJICogTm8gYXV0byBjbG9zZSBhdCB0aGlzIHRpbWUsIHJlc2V0IHQt
byB0byBjaGVjawogCQkJICogbGF0ZXIKIAkJCSAqLwotCQkJaW50IHRtcDsKKwkJCXVpbnQzMl90
IHRtcDsKIAogCQkJLyogZm9vbCB0aGUgdGltZXIgc3RhcnR1cCB0byB1c2UgdGhlIHRpbWUgbGVm
dCAqLwogCQkJdG1wID0gYXNvYy0+c2N0cF9hdXRvY2xvc2VfdGlja3M7CiAJCQlhc29jLT5zY3Rw
X2F1dG9jbG9zZV90aWNrcyAtPSB0aWNrc19nb25lX2J5OwotCQkJc2N0cF90aW1lcl9zdGFydChT
Q1RQX1RJTUVSX1RZUEVfQVVUT0NMT1NFLCBpbnAsIHN0Y2IsCi0JCQkgICAgbmV0KTsKKwkJCXNj
dHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX0FVVE9DTE9TRSwgaW5wLCBzdGNiLCBOVUxM
KTsKIAkJCS8qIHJlc3RvcmUgdGhlIHJlYWwgdGljayB2YWx1ZSAqLwogCQkJYXNvYy0+c2N0cF9h
dXRvY2xvc2VfdGlja3MgPSB0bXA7CiAJCX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBs
aWIvbmV0aW5ldC9zY3RwX3RpbWVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0
cF90aW1lci5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggODIyZDViNDAw
N2JhNmNiYzY2ZmQ3NTg1NjZlM2Q5YzY5N2E3NmM1Ni4uZWUxYzQ5MzA4MWVlNDY0OGY4ZDUzODdi
NDVlYWQwZjhlMjBmYTRkNwotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF90
aW1lci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3RpbWVyLmgKQEAg
LTMyLDkgKzMyLDkgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jaWZkZWYgX19GcmVlQlNEX18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVl
QlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfdGltZXIuaCAyOTU3MDkgMjAxNi0wMi0xNyAxODow
NDoyMlogdHVleGVuICQiKTsKK19fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9z
Y3RwX3RpbWVyLmggMzU5MTk1IDIwMjAtMDMtMjEgMTY6MTI6MTlaIHR1ZXhlbiAkIik7CiAjZW5k
aWYKIAogI2lmbmRlZiBfTkVUSU5FVF9TQ1RQX1RJTUVSX0hfCkBAIC00NiwxOCArNDYsMjAgQEAg
X19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfdGltZXIuaCAyOTU3MDkg
MjAxNi0wMi0xNyAxODowNDoyMlogdHUKICNkZWZpbmUgU0NUUF9SVFRfVkFSX1NISUZUIDIKIAog
c3RydWN0IHNjdHBfbmV0cyAqCi1zY3RwX2ZpbmRfYWx0ZXJuYXRlX25ldChzdHJ1Y3Qgc2N0cF90
Y2IgKiwKLSAgICBzdHJ1Y3Qgc2N0cF9uZXRzICosIGludCBtb2RlKTsKK3NjdHBfZmluZF9hbHRl
cm5hdGVfbmV0KHN0cnVjdCBzY3RwX3RjYiAqLCBzdHJ1Y3Qgc2N0cF9uZXRzICosIGludCk7CiAK
IGludAogc2N0cF90M3J4dF90aW1lcihzdHJ1Y3Qgc2N0cF9pbnBjYiAqLCBzdHJ1Y3Qgc2N0cF90
Y2IgKiwKICAgICBzdHJ1Y3Qgc2N0cF9uZXRzICopOworCiBpbnQKIHNjdHBfdDFpbml0X3RpbWVy
KHN0cnVjdCBzY3RwX2lucGNiICosIHN0cnVjdCBzY3RwX3RjYiAqLAogICAgIHN0cnVjdCBzY3Rw
X25ldHMgKik7CisKIGludAogc2N0cF9zaHV0ZG93bl90aW1lcihzdHJ1Y3Qgc2N0cF9pbnBjYiAq
LCBzdHJ1Y3Qgc2N0cF90Y2IgKiwKICAgICBzdHJ1Y3Qgc2N0cF9uZXRzICopOworCiBpbnQKIHNj
dHBfaGVhcnRiZWF0X3RpbWVyKHN0cnVjdCBzY3RwX2lucGNiICosIHN0cnVjdCBzY3RwX3RjYiAq
LAogICAgIHN0cnVjdCBzY3RwX25ldHMgKik7CkBAIC03NCwyNiArNzYsMjMgQEAgaW50CiBzY3Rw
X3NodXRkb3duYWNrX3RpbWVyKHN0cnVjdCBzY3RwX2lucGNiICosIHN0cnVjdCBzY3RwX3RjYiAq
LAogICAgIHN0cnVjdCBzY3RwX25ldHMgKik7CiBpbnQKLXNjdHBfc3RycmVzZXRfdGltZXIoc3Ry
dWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAotICAgIHN0cnVjdCBz
Y3RwX25ldHMgKm5ldCk7CitzY3RwX3N0cnJlc2V0X3RpbWVyKHN0cnVjdCBzY3RwX2lucGNiICos
IHN0cnVjdCBzY3RwX3RjYiAqKTsKIAogaW50CiBzY3RwX2FzY29uZl90aW1lcihzdHJ1Y3Qgc2N0
cF9pbnBjYiAqLCBzdHJ1Y3Qgc2N0cF90Y2IgKiwKICAgICBzdHJ1Y3Qgc2N0cF9uZXRzICopOwog
CiB2b2lkCi1zY3RwX2RlbGV0ZV9wcmltX3RpbWVyKHN0cnVjdCBzY3RwX2lucGNiICosIHN0cnVj
dCBzY3RwX3RjYiAqLAotICAgIHN0cnVjdCBzY3RwX25ldHMgKik7CitzY3RwX2RlbGV0ZV9wcmlt
X3RpbWVyKHN0cnVjdCBzY3RwX2lucGNiICosIHN0cnVjdCBzY3RwX3RjYiAqKTsKIAogdm9pZAot
c2N0cF9hdXRvY2xvc2VfdGltZXIoc3RydWN0IHNjdHBfaW5wY2IgKiwgc3RydWN0IHNjdHBfdGNi
ICosCi0gICAgc3RydWN0IHNjdHBfbmV0cyAqbmV0KTsKK3NjdHBfYXV0b2Nsb3NlX3RpbWVyKHN0
cnVjdCBzY3RwX2lucGNiICosIHN0cnVjdCBzY3RwX3RjYiAqKTsKIAogdm9pZCBzY3RwX2F1ZGl0
X3JldHJhbm1pc3Npb25fcXVldWUoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKik7CiAKIHZvaWQg
c2N0cF9pdGVyYXRvcl90aW1lcihzdHJ1Y3Qgc2N0cF9pdGVyYXRvciAqaXQpOwogCi0jaWYgZGVm
aW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAjaWYgZGVmaW5lZChBUFBMRV9MRU9QQVJEKSB8fCBkZWZpbmVkKEFQUExFX1NO
T1dMRU9QQVJEKSB8fCBkZWZpbmVkKEFQUExFX0xJT04pIHx8IGRlZmluZWQoQVBQTEVfTU9VTlRB
SU5MSU9OKQogdm9pZCBzY3RwX3Nsb3d0aW1vKHZvaWQpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3Jz
Y3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3Vpby5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxp
Yi9uZXRpbmV0L3NjdHBfdWlvLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRl
eCA5ZDMxYWExNTkwYTAzMGM4MWQwMmNhYmJmMGZjYmI1YjZlYjAxYTM2Li42Mjk4ZjkzMzRhNTBl
Y2I3ZDI0M2FjNGQ0ZWFiMDczMWU0MzljY2RjCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0
aW5ldC9zY3RwX3Vpby5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3Vp
by5oCkBAIC0zMiwyOSArMzIsMjkgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi0jaWZkZWYgX19GcmVlQlNEX18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNE
SUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfdWlvLmggMzI2NjcyIDIwMTctMTIt
MDcgMjI6MTk6MDhaIHR1ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25l
dGluZXQvc2N0cF91aW8uaCAzNjI0NzMgMjAyMC0wNi0yMSAyMzoxMjo1NlogdHVleGVuICQiKTsK
ICNlbmRpZgogCiAjaWZuZGVmIF9ORVRJTkVUX1NDVFBfVUlPX0hfCiAjZGVmaW5lIF9ORVRJTkVU
X1NDVFBfVUlPX0hfCiAKLSNpZiAoZGVmaW5lZChfX0FQUExFX18pICYmIGRlZmluZWQoS0VSTkVM
KSkKKyNpZiAoZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pICYm
IGRlZmluZWQoS0VSTkVMKSkKICNpZm5kZWYgX0tFUk5FTAogI2RlZmluZSBfS0VSTkVMCiAjZW5k
aWYKICNlbmRpZgogCi0jaWYgIShkZWZpbmVkKF9fV2luZG93c19fKSkgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2Vfb3NfV2luZG93cykKLSNpZiAhIGRlZmluZWQoX0tFUk5FTCkKKyNpZiAhZGVmaW5l
ZChfV0lOMzIpCisjaWYgIWRlZmluZWQoX0tFUk5FTCkKICNpbmNsdWRlIDxzdGRpbnQuaD4KICNl
bmRpZgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KICNp
bmNsdWRlIDxuZXRpbmV0L2luLmg+CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fV2luZG93c19fKQor
I2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI3ByYWdtYSB3
YXJuaW5nKHB1c2gpCiAjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDIwMCkKICNpZiBkZWZpbmVk
KF9LRVJORUwpCkBAIC0xMTAsMTQgKzExMCw4IEBAIHN0cnVjdCBzY3RwX2V2ZW50X3N1YnNjcmli
ZSB7CiAgKiBhbmNpbGxhcnkgZGF0YSBzdHJ1Y3R1cmVzCiAgKi8KIHN0cnVjdCBzY3RwX2luaXRt
c2cgewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uIDwgODAw
MDAwCi0JLyogVGhpcyBpcyBhIGJ1Zy4gTm90IGZpeGVkIGZvciBBQkkgY29tcGF0aWJpbGl0eSAq
LwotCXVpbnQzMl90IHNpbml0X251bV9vc3RyZWFtczsKLQl1aW50MzJfdCBzaW5pdF9tYXhfaW5z
dHJlYW1zOwotI2Vsc2UKIAl1aW50MTZfdCBzaW5pdF9udW1fb3N0cmVhbXM7CiAJdWludDE2X3Qg
c2luaXRfbWF4X2luc3RyZWFtczsKLSNlbmRpZgogCXVpbnQxNl90IHNpbml0X21heF9hdHRlbXB0
czsKIAl1aW50MTZfdCBzaW5pdF9tYXhfaW5pdF90aW1lbzsKIH07CkBAIC0xNDMsOSArMTM3LDYg
QEAgc3RydWN0IHNjdHBfc25kcmN2aW5mbyB7CiAJdWludDE2X3Qgc2luZm9fc3RyZWFtOwogCXVp
bnQxNl90IHNpbmZvX3NzbjsKIAl1aW50MTZfdCBzaW5mb19mbGFnczsKLSNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA8IDgwMDAwMAotCXVpbnQxNl90IHNpbmZv
X3ByX3BvbGljeTsKLSNlbmRpZgogCXVpbnQzMl90IHNpbmZvX3BwaWQ7CiAJdWludDMyX3Qgc2lu
Zm9fY29udGV4dDsKIAl1aW50MzJfdCBzaW5mb190aW1ldG9saXZlOwpAQCAtMTYxLDkgKzE1Miw2
IEBAIHN0cnVjdCBzY3RwX2V4dHJjdmluZm8gewogCXVpbnQxNl90IHNpbmZvX3N0cmVhbTsKIAl1
aW50MTZfdCBzaW5mb19zc247CiAJdWludDE2X3Qgc2luZm9fZmxhZ3M7Ci0jaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPCA4MDAwMDAKLQl1aW50MTZfdCBzaW5m
b19wcl9wb2xpY3k7Ci0jZW5kaWYKIAl1aW50MzJfdCBzaW5mb19wcGlkOwogCXVpbnQzMl90IHNp
bmZvX2NvbnRleHQ7CiAJdWludDMyX3Qgc2luZm9fdGltZXRvbGl2ZTsgLyogc2hvdWxkIGhhdmUg
YmVlbiBzaW5mb19wcl92YWx1ZSAqLwpAQCAtNjYyLDEwICs2NTAsMTggQEAgc3RydWN0IHNjdHBf
c2V0cGVlcnByaW0gewogCXVpbnQ4X3Qgc3NwcF9wYWRkaW5nWzRdOwogfTsKIAordW5pb24gc2N0
cF9zb2Nrc3RvcmUgeworCXN0cnVjdCBzb2NrYWRkcl9pbiBzaW47CisJc3RydWN0IHNvY2thZGRy
X2luNiBzaW42OworI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwlzdHJ1Y3Qgc29ja2FkZHJf
Y29ubiBzY29ubjsKKyNlbmRpZgorCXN0cnVjdCBzb2NrYWRkciBzYTsKK307CisKIHN0cnVjdCBz
Y3RwX2dldGFkZHJlc3NlcyB7CiAJc2N0cF9hc3NvY190IHNnZXRfYXNzb2NfaWQ7Ci0JLyogYWRk
ciBpcyBmaWxsZWQgaW4gZm9yIE4gKiBzb2NrYWRkcl9zdG9yYWdlICovCi0Jc3RydWN0IHNvY2th
ZGRyIGFkZHJbMV07CisJdW5pb24gc2N0cF9zb2Nrc3RvcmUgYWRkcltdOwogfTsKIAogc3RydWN0
IHNjdHBfc3RhdHVzIHsKQEAgLTExMjEsMTMgKzExMTcsMTggQEAgc3RydWN0IHNjdHBzdGF0IHsK
IAogI2RlZmluZSBTQ1RQX1NUQVRfSU5DUihfeCkgU0NUUF9TVEFUX0lOQ1JfQlkoX3gsMSkKICNk
ZWZpbmUgU0NUUF9TVEFUX0RFQ1IoX3gpIFNDVFBfU1RBVF9ERUNSX0JZKF94LDEpCi0jaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgZGVmaW5lZChTTVApICYmIGRlZmluZWQoU0NUUF9VU0VfUEVS
Q1BVX1NUQVQpCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKKyNpZiBkZWZpbmVkKFNNUCkgJiYgZGVmaW5lZChTQ1RQX1VTRV9QRVJDUFVfU1RBVCkK
ICNkZWZpbmUgU0NUUF9TVEFUX0lOQ1JfQlkoX3gsX2QpIChTQ1RQX0JBU0VfU1RBVFNbUENQVV9H
RVQoY3B1aWQpXS5feCArPSBfZCkKICNkZWZpbmUgU0NUUF9TVEFUX0RFQ1JfQlkoX3gsX2QpIChT
Q1RQX0JBU0VfU1RBVFNbUENQVV9HRVQoY3B1aWQpXS5feCAtPSBfZCkKICNlbHNlCiAjZGVmaW5l
IFNDVFBfU1RBVF9JTkNSX0JZKF94LF9kKSBhdG9taWNfYWRkX2ludCgmU0NUUF9CQVNFX1NUQVQo
X3gpLCBfZCkKICNkZWZpbmUgU0NUUF9TVEFUX0RFQ1JfQlkoX3gsX2QpIGF0b21pY19zdWJ0cmFj
dF9pbnQoJlNDVFBfQkFTRV9TVEFUKF94KSwgX2QpCiAjZW5kaWYKKyNlbHNlCisjZGVmaW5lIFND
VFBfU1RBVF9JTkNSX0JZKF94LF9kKSBhdG9taWNfYWRkX2ludCgmU0NUUF9CQVNFX1NUQVQoX3gp
LCBfZCkKKyNkZWZpbmUgU0NUUF9TVEFUX0RFQ1JfQlkoX3gsX2QpIGF0b21pY19zdWJ0cmFjdF9p
bnQoJlNDVFBfQkFTRV9TVEFUKF94KSwgX2QpCisjZW5kaWYKIC8qIFRoZSBmb2xsb3dpbmcgbWFj
cm9zIGFyZSBmb3IgaGFuZGxpbmcgTUlCIHZhbHVlcywgKi8KICNkZWZpbmUgU0NUUF9TVEFUX0lO
Q1JfQ09VTlRFUjMyKF94KSBTQ1RQX1NUQVRfSU5DUihfeCkKICNkZWZpbmUgU0NUUF9TVEFUX0lO
Q1JfQ09VTlRFUjY0KF94KSBTQ1RQX1NUQVRfSU5DUihfeCkKQEAgLTExMzYsMzQgKzExMzcsMTUg
QEAgc3RydWN0IHNjdHBzdGF0IHsKICNkZWZpbmUgU0NUUF9TVEFUX0RFQ1JfQ09VTlRFUjY0KF94
KSBTQ1RQX1NUQVRfREVDUihfeCkKICNkZWZpbmUgU0NUUF9TVEFUX0RFQ1JfR0FVR0UzMihfeCkg
U0NUUF9TVEFUX0RFQ1IoX3gpCiAKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi11bmlvbiBz
Y3RwX3NvY2tzdG9yZSB7Ci0jaWYgZGVmaW5lZChJTkVUKQotCXN0cnVjdCBzb2NrYWRkcl9pbiBz
aW47Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKElORVQ2KQotCXN0cnVjdCBzb2NrYWRkcl9pbjYgc2lu
NjsKLSNlbmRpZgotCXN0cnVjdCBzb2NrYWRkcl9jb25uIHNjb25uOwotCXN0cnVjdCBzb2NrYWRk
ciBzYTsKLX07Ci0jZWxzZQotdW5pb24gc2N0cF9zb2Nrc3RvcmUgewotCXN0cnVjdCBzb2NrYWRk
cl9pbiBzaW47Ci0Jc3RydWN0IHNvY2thZGRyX2luNiBzaW42OwotCXN0cnVjdCBzb2NrYWRkciBz
YTsKLX07Ci0jZW5kaWYKLQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov
CiAvKiBBbmQgc29tZXRoaW5nIGZvciB1cyBvbGQgdGltZXJzICovCiAvKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKiovCiAKLSNpZm5kZWYgX19BUFBMRV9fCi0jaWZuZGVmIF9fVXNl
cnNwYWNlX18KKyNpZiAhKGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKSkKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmbmRlZiBudG9obGwKLSNpZiBk
ZWZpbmVkKF9fVXNlcnNwYWNlX29zX0xpbnV4KQorI2lmIGRlZmluZWQoX19saW51eF9fKQogI2lm
bmRlZiBfQlNEX1NPVVJDRQogI2RlZmluZSBfQlNEX1NPVVJDRQogI2VuZGlmCkBAIC0xMTc1LDcg
KzExNTcsNyBAQCB1bmlvbiBzY3RwX3NvY2tzdG9yZSB7CiAjZW5kaWYKIAogI2lmbmRlZiBodG9u
bGwKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0xpbnV4KQorI2lmIGRlZmluZWQoX19saW51
eF9fKQogI2lmbmRlZiBfQlNEX1NPVVJDRQogI2RlZmluZSBfQlNEX1NPVVJDRQogI2VuZGlmCkBA
IC0xMTkzLDUyICsxMTc1LDMwIEBAIHVuaW9uIHNjdHBfc29ja3N0b3JlIHsKIHN0cnVjdCB4c2N0
cF9pbnBjYiB7CiAJdWludDMyX3QgbGFzdDsKIAl1aW50MzJfdCBmbGFnczsKLSNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA8IDEwMDAwNDgKLQl1aW50MzJfdCBm
ZWF0dXJlczsKLSNlbHNlCiAJdWludDY0X3QgZmVhdHVyZXM7Ci0jZW5kaWYKIAl1aW50MzJfdCB0
b3RhbF9zZW5kczsKIAl1aW50MzJfdCB0b3RhbF9yZWN2czsKIAl1aW50MzJfdCB0b3RhbF9ub3Nw
YWNlczsKIAl1aW50MzJfdCBmcmFnbWVudGF0aW9uX3BvaW50OwogCXVpbnQxNl90IGxvY2FsX3Bv
cnQ7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPiAxMTAw
MDk2CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
IAl1aW50MTZfdCBxbGVuX29sZDsKIAl1aW50MTZfdCBtYXhxbGVuX29sZDsKICNlbHNlCiAJdWlu
dDE2X3QgcWxlbjsKIAl1aW50MTZfdCBtYXhxbGVuOwogI2VuZGlmCi0jaWYgZGVmaW5lZChfX1dp
bmRvd3NfXykKLQl1aW50MTZfdCBwYWRkaW5nOwotI2VuZGlmCi0jaWYgIShkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiAoX19GcmVlQlNEX3ZlcnNpb24gPCAxMDAxNTE3KSkKKwl1aW50MTZfdCBfX3Nw
YXJlMTY7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKKwlrdmFkZHJfdCBzb2NrZXQ7CisjZWxzZQogCXZvaWQgKnNvY2tldDsKICNlbmRpZgotI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID4gMTEwMDA5NgorI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJdWludDMy
X3QgcWxlbjsKIAl1aW50MzJfdCBtYXhxbGVuOwogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPCAxMDAwMDQ4Ci0JdWludDMyX3QgZXh0cmFfcGFk
ZGluZ1szMl07IC8qIGZ1dHVyZSAqLwotI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgKF9f
RnJlZUJTRF92ZXJzaW9uIDwgMTAwMTUxNykKLQl1aW50MzJfdCBleHRyYV9wYWRkaW5nWzMxXTsg
LyogZnV0dXJlICovCi0jZWxzZQotI2lmIGRlZmluZWQoX19MUDY0X18pCi0jaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPiAxMTAwMDk2Ci0JdWludDMyX3QgZXh0
cmFfcGFkZGluZ1syN107IC8qIGZ1dHVyZSAqLwotI2Vsc2UKLQl1aW50MzJfdCBleHRyYV9wYWRk
aW5nWzI5XTsgLyogZnV0dXJlICovCi0jZW5kaWYKLSNlbHNlCi0jaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPiAxMTAwMDk2Ci0JdWludDMyX3QgZXh0cmFfcGFk
ZGluZ1syOF07IC8qIGZ1dHVyZSAqLwotI2Vsc2UKLQl1aW50MzJfdCBleHRyYV9wYWRkaW5nWzMw
XTsgLyogZnV0dXJlICovCi0jZW5kaWYKLSNlbmRpZgotI2VuZGlmCisJdWludDMyX3QgZXh0cmFf
cGFkZGluZ1syNl07IC8qIGZ1dHVyZSAqLwogfTsKIAogc3RydWN0IHhzY3RwX3RjYiB7CkBAIC0x
MjY3LDE4ICsxMjI3LDkgQEAgc3RydWN0IHhzY3RwX3RjYiB7CiAJdWludDE2X3QgcmVtb3RlX3Bv
cnQ7ICAgICAgICAgICAgICAgICAgIC8qIHNjdHBBc3NvY0VudHJ5IDQgICAqLwogCXN0cnVjdCBz
Y3RwX3RpbWV2YWwgc3RhcnRfdGltZTsgICAgICAgICAvKiBzY3RwQXNzb2NFbnRyeSAxNiAgKi8K
IAlzdHJ1Y3Qgc2N0cF90aW1ldmFsIGRpc2NvbnRpbnVpdHlfdGltZTsgLyogc2N0cEFzc29jRW50
cnkgMTcgICovCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKLSNpZiBfX0ZyZWVCU0RfdmVyc2lv
biA+PSA4MDAwMDAKLQl1aW50MzJfdCBwZWVyc19yd25kOwotCXNjdHBfYXNzb2NfdCBhc3NvY19p
ZDsgICAgICAgICAgICAgICAgICAvKiBzY3RwQXNzb2NFbnRyeSAxICAgKi8KLQl1aW50MzJfdCBl
eHRyYV9wYWRkaW5nWzMyXTsgICAgICAgICAgICAgIC8qIGZ1dHVyZSAqLwotI2Vsc2UKLSNlbmRp
ZgotI2Vsc2UKIAl1aW50MzJfdCBwZWVyc19yd25kOwogCXNjdHBfYXNzb2NfdCBhc3NvY19pZDsg
ICAgICAgICAgICAgICAgICAvKiBzY3RwQXNzb2NFbnRyeSAxICAgKi8KIAl1aW50MzJfdCBleHRy
YV9wYWRkaW5nWzMyXTsgICAgICAgICAgICAgIC8qIGZ1dHVyZSAqLwotI2VuZGlmCiB9OwogCiBz
dHJ1Y3QgeHNjdHBfbGFkZHIgewpAQCAtMTMwMywyMyArMTI1NCwxMiBAQCBzdHJ1Y3QgeHNjdHBf
cmFkZHIgewogCXVpbnQ4X3QgaGVhcnRiZWF0X2VuYWJsZWQ7ICAgICAgICAgLyogc2N0cEFzc29j
TG9jYWxSZW1FbnRyeSA0ICAgKi8KIAl1aW50OF90IHBvdGVudGlhbGx5X2ZhaWxlZDsKIAlzdHJ1
Y3Qgc2N0cF90aW1ldmFsIHN0YXJ0X3RpbWU7ICAgIC8qIHNjdHBBc3NvY0xvY2FsUmVtRW50cnkg
OCAgICovCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKLSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+
PSA4MDAwMDAKLQl1aW50MzJfdCBydHQ7Ci0JdWludDMyX3QgaGVhcnRiZWF0X2ludGVydmFsOwot
CXVpbnQzMl90IHNzdGhyZXNoOwotCXVpbnQxNl90IGVuY2Fwc19wb3J0OwotCXVpbnQxNl90IHN0
YXRlOwotCXVpbnQzMl90IGV4dHJhX3BhZGRpbmdbMjldOyAgICAgICAgICAgICAgLyogZnV0dXJl
ICovCi0jZW5kaWYKLSNlbHNlCiAJdWludDMyX3QgcnR0OwogCXVpbnQzMl90IGhlYXJ0YmVhdF9p
bnRlcnZhbDsKIAl1aW50MzJfdCBzc3RocmVzaDsKIAl1aW50MTZfdCBlbmNhcHNfcG9ydDsKIAl1
aW50MTZfdCBzdGF0ZTsKIAl1aW50MzJfdCBleHRyYV9wYWRkaW5nWzI5XTsgICAgICAgICAgICAg
IC8qIGZ1dHVyZSAqLwotI2VuZGlmCiB9OwogCiAjZGVmaW5lIFNDVFBfTUFYX0xPR0dJTkdfU0la
RSAzMDAwMApAQCAtMTM0NiwxOSArMTI4NiwxNCBAQCBpbnQKIHNjdHBfbG93ZXJfc29zZW5kKHN0
cnVjdCBzb2NrZXQgKnNvLAogICAgIHN0cnVjdCBzb2NrYWRkciAqYWRkciwKICAgICBzdHJ1Y3Qg
dWlvICp1aW8sCi0jaWYgZGVmaW5lZChfX1BhbmRhX18pCi0gICAgcGFraGFuZGxlX3R5cGUgaV9w
YWssCi0gICAgcGFraGFuZGxlX3R5cGUgaV9jb250cm9sLAotI2Vsc2UKICAgICBzdHJ1Y3QgbWJ1
ZiAqaV9wYWssCiAgICAgc3RydWN0IG1idWYgKmNvbnRyb2wsCi0jZW5kaWYKICAgICBpbnQgZmxh
Z3MsCiAgICAgc3RydWN0IHNjdHBfc25kcmN2aW5mbyAqc3JjdgotI2lmICEoZGVmaW5lZChfX1Bh
bmRhX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMDAwCisjaWYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQogICAgICxzdHJ1Y3QgdGhyZWFkICpwCi0j
ZWxpZiBkZWZpbmVkKF9fV2luZG93c19fKQorI2VsaWYgZGVmaW5lZChfV0lOMzIpCiAgICAgLCBQ
S1RIUkVBRCBwCiAjZWxzZQogICAgICxzdHJ1Y3QgcHJvYyAqcApAQCAtMTM2OSwxMSArMTMwNCw3
IEBAIHNjdHBfbG93ZXJfc29zZW5kKHN0cnVjdCBzb2NrZXQgKnNvLAogaW50CiBzY3RwX3NvcmVj
dm1zZyhzdHJ1Y3Qgc29ja2V0ICpzbywKICAgICBzdHJ1Y3QgdWlvICp1aW8sCi0jaWYgZGVmaW5l
ZChfX1BhbmRhX18pCi0gICAgcGFydGljbGV0eXBlICoqbXAsCi0jZWxzZQogICAgIHN0cnVjdCBt
YnVmICoqbXAsCi0jZW5kaWYKICAgICBzdHJ1Y3Qgc29ja2FkZHIgKmZyb20sCiAgICAgaW50IGZy
b21sZW4sCiAgICAgaW50ICptc2dfZmxhZ3MsCkBAIC0xMzg3LDQ1ICsxMzE4LDYgQEAgc2N0cF9z
b3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc28sCiAjaWYgIShkZWZpbmVkKF9LRVJORUwpKSAmJiAh
KGRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAKIF9fQkVHSU5fREVDTFMKLSNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA8IDkwMjAwMAotaW50CXNjdHBfcGVlbG9m
ZiBfX1AoKGludCwgc2N0cF9hc3NvY190KSk7Ci1pbnQJc2N0cF9iaW5keCBfX1AoKGludCwgc3Ry
dWN0IHNvY2thZGRyICosIGludCwgaW50KSk7Ci1pbnQJc2N0cF9jb25uZWN0eCBfX1AoKGludCwg
Y29uc3Qgc3RydWN0IHNvY2thZGRyICosIGludCwgc2N0cF9hc3NvY190ICopKTsKLWludAlzY3Rw
X2dldGFkZHJsZW4gX19QKChzYV9mYW1pbHlfdCkpOwotaW50CXNjdHBfZ2V0cGFkZHJzIF9fUCgo
aW50LCBzY3RwX2Fzc29jX3QsIHN0cnVjdCBzb2NrYWRkciAqKikpOwotdm9pZAlzY3RwX2ZyZWVw
YWRkcnMgX19QKChzdHJ1Y3Qgc29ja2FkZHIgKikpOwotaW50CXNjdHBfZ2V0bGFkZHJzIF9fUCgo
aW50LCBzY3RwX2Fzc29jX3QsIHN0cnVjdCBzb2NrYWRkciAqKikpOwotdm9pZAlzY3RwX2ZyZWVs
YWRkcnMgX19QKChzdHJ1Y3Qgc29ja2FkZHIgKikpOwotaW50CXNjdHBfb3B0X2luZm8gX19QKChp
bnQsIHNjdHBfYXNzb2NfdCwgaW50LCB2b2lkICosIHNvY2tsZW5fdCAqKSk7Ci0KLS8qIGRlcHJl
Y2F0ZWQgKi8KLXNzaXplX3QJc2N0cF9zZW5kbXNnIF9fUCgoaW50LCBjb25zdCB2b2lkICosIHNp
emVfdCwgY29uc3Qgc3RydWN0IHNvY2thZGRyICosCi0JICAgIHNvY2tsZW5fdCwgdWludDMyX3Qs
IHVpbnQzMl90LCB1aW50MTZfdCwgdWludDMyX3QsIHVpbnQzMl90KSk7Ci0KLS8qIGRlcHJlY2F0
ZWQgKi8KLXNzaXplX3QJc2N0cF9zZW5kIF9fUCgoaW50LCBjb25zdCB2b2lkICosIHNpemVfdCwK
LQkgICAgY29uc3Qgc3RydWN0IHNjdHBfc25kcmN2aW5mbyAqLCBpbnQpKTsKLQotLyogZGVwcmVj
YXRlZCAqLwotc3NpemVfdAlzY3RwX3NlbmR4IF9fUCgoaW50LCBjb25zdCB2b2lkICosIHNpemVf
dCwgc3RydWN0IHNvY2thZGRyICosCi0JICAgIGludCwgc3RydWN0IHNjdHBfc25kcmN2aW5mbyAq
LCBpbnQpKTsKLQotLyogZGVwcmVjYXRlZCAqLwotc3NpemVfdAlzY3RwX3NlbmRtc2d4IF9fUCgo
aW50IHNkLCBjb25zdCB2b2lkICosIHNpemVfdCwgc3RydWN0IHNvY2thZGRyICosCi0JICAgIGlu
dCwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MTZfdCwgdWludDMyX3QsIHVpbnQzMl90KSk7Ci0K
LXNjdHBfYXNzb2NfdAlzY3RwX2dldGFzc29jaWQgX19QKChpbnQsIHN0cnVjdCBzb2NrYWRkciAq
KSk7Ci0KLS8qIGRlcHJlY2F0ZWQgKi8KLXNzaXplX3QJc2N0cF9yZWN2bXNnIF9fUCgoaW50LCB2
b2lkICosIHNpemVfdCwgc3RydWN0IHNvY2thZGRyICosIHNvY2tsZW5fdCAqLAotCSAgICBzdHJ1
Y3Qgc2N0cF9zbmRyY3ZpbmZvICosIGludCAqKSk7Ci0KLXNzaXplX3QJc2N0cF9zZW5kdiBfX1Ao
KGludCwgY29uc3Qgc3RydWN0IGlvdmVjICosIGludCwgc3RydWN0IHNvY2thZGRyICosCi0JICAg
IGludCwgdm9pZCAqLCBzb2NrbGVuX3QsIHVuc2lnbmVkIGludCwgaW50KSk7Ci0KLXNzaXplX3QJ
c2N0cF9yZWN2diBfX1AoKGludCwgY29uc3Qgc3RydWN0IGlvdmVjICosIGludCwgc3RydWN0IHNv
Y2thZGRyICosCi0JICAgIHNvY2tsZW5fdCAqLCB2b2lkICosIHNvY2tsZW5fdCAqLCB1bnNpZ25l
ZCBpbnQgKiwgaW50ICopKTsKLSNlbHNlCiBpbnQJc2N0cF9wZWVsb2ZmKGludCwgc2N0cF9hc3Nv
Y190KTsKIGludAlzY3RwX2JpbmR4KGludCwgc3RydWN0IHNvY2thZGRyICosIGludCwgaW50KTsK
IGludAlzY3RwX2Nvbm5lY3R4KGludCwgY29uc3Qgc3RydWN0IHNvY2thZGRyICosIGludCwgc2N0
cF9hc3NvY190ICopOwpAQCAtMTQ2Myw3ICsxMzU1LDYgQEAgc3NpemVfdAlzY3RwX3NlbmR2KGlu
dCwgY29uc3Qgc3RydWN0IGlvdmVjICosIGludCwgc3RydWN0IHNvY2thZGRyICosCiAKIHNzaXpl
X3QJc2N0cF9yZWN2dihpbnQsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqLCBpbnQsIHN0cnVjdCBzb2Nr
YWRkciAqLAogCSAgICBzb2NrbGVuX3QgKiwgdm9pZCAqLCBzb2NrbGVuX3QgKiwgdW5zaWduZWQg
aW50ICosIGludCAqKTsKLSNlbmRpZgogX19FTkRfREVDTFMKIAogI2VuZGlmCQkJCS8qICFfS0VS
TkVMICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF91c2Vy
c3BhY2UuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
dXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3VzZXJzcGFjZS5jCm9s
ZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggNmZjYzA4ZDE2ZDMzN2Q5OWUxMmI0
NTc3YjJhMDhiMjc1MzRiYWI2MS4uOGUyZWJmNDYyM2JlYjA4MDg5NzBkODFmOGJjZDNlNjgzODU2
ZGQyZgotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF91c2Vyc3BhY2UuYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF91c2Vyc3BhY2UuYwpAQCAtMzEs
MjEgKzMxLDI3IEBACiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX3BjYi5oPgogI2luY2x1ZGUgPHN5
cy90aW1lYi5oPgogI2luY2x1ZGUgPGlwaGxwYXBpLmg+CisjaWYgIWRlZmluZWQoX19NSU5HVzMy
X18pCiAjcHJhZ21hIGNvbW1lbnQobGliLCAiSVBITFBBUEkubGliIikKICNlbmRpZgorI2VuZGlm
CiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX29zX3VzZXJzcGFjZS5oPgotI2lmIGRlZmluZWQoX19V
c2Vyc3BhY2Vfb3NfRnJlZUJTRCkKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQogI2luY2x1ZGUg
PHB0aHJlYWRfbnAuaD4KICNlbmRpZgogCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19MaW51
eCkKKyNpZiBkZWZpbmVkKF9fbGludXhfXykKICNpbmNsdWRlIDxzeXMvcHJjdGwuaD4KICNlbmRp
ZgogCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJ
TjMyKQogLyogQWRhcHRlciB0byB0cmFuc2xhdGUgVW5peCB0aHJlYWQgc3RhcnQgcm91dGluZXMg
dG8gV2luZG93cyB0aHJlYWQgc3RhcnQKICAqIHJvdXRpbmVzLgogICovCisjaWYgZGVmaW5lZChf
X01JTkdXMzJfXykKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBHQ0MgZGlh
Z25vc3RpYyBpZ25vcmVkICItV3BlZGFudGljIgorI2VuZGlmCiBzdGF0aWMgRFdPUkQgV0lOQVBJ
CiBzY3RwX2NyZWF0ZV90aHJlYWRfYWRhcHRlcih2b2lkICphcmcpIHsKIAlzdGFydF9yb3V0aW5l
X3Qgc3RhcnRfcm91dGluZSA9IChzdGFydF9yb3V0aW5lX3QpYXJnOwpAQCAtNjEsNiArNjcsMTEg
QEAgc2N0cF91c2Vyc3BhY2VfdGhyZWFkX2NyZWF0ZSh1c2VybGFuZF90aHJlYWRfdCAqdGhyZWFk
LCBzdGFydF9yb3V0aW5lX3Qgc3RhcnRfcm8KIAkJcmV0dXJuIEdldExhc3RFcnJvcigpOwogCXJl
dHVybiAwOwogfQorCisjaWYgZGVmaW5lZChfX01JTkdXMzJfXykKKyNwcmFnbWEgR0NDIGRpYWdu
b3N0aWMgcG9wCisjZW5kaWYKKwogI2Vsc2UKIGludAogc2N0cF91c2Vyc3BhY2VfdGhyZWFkX2Ny
ZWF0ZSh1c2VybGFuZF90aHJlYWRfdCAqdGhyZWFkLCBzdGFydF9yb3V0aW5lX3Qgc3RhcnRfcm91
dGluZSkKQEAgLTcyLDE4ICs4MywxOCBAQCBzY3RwX3VzZXJzcGFjZV90aHJlYWRfY3JlYXRlKHVz
ZXJsYW5kX3RocmVhZF90ICp0aHJlYWQsIHN0YXJ0X3JvdXRpbmVfdCBzdGFydF9ybwogdm9pZAog
c2N0cF91c2Vyc3BhY2Vfc2V0X3RocmVhZG5hbWUoY29uc3QgY2hhciAqbmFtZSkKIHsKLSNpZiBk
ZWZpbmVkKF9fVXNlcnNwYWNlX29zX0RhcndpbikKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykKIAlw
dGhyZWFkX3NldG5hbWVfbnAobmFtZSk7CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNl
X29zX0xpbnV4KQorI2lmIGRlZmluZWQoX19saW51eF9fKQogCXByY3RsKFBSX1NFVF9OQU1FLCBu
YW1lKTsKICNlbmRpZgotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRnJlZUJTRCkKKyNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKQogCXB0aHJlYWRfc2V0X25hbWVfbnAocHRocmVhZF9zZWxmKCks
IG5hbWUpOwogI2VuZGlmCiB9CiAKLSNpZiAhZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX29zX05hQ2wpCisjaWYgIWRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX25h
dGl2ZV9jbGllbnRfXykKIGludAogc2N0cF91c2Vyc3BhY2VfZ2V0X210dV9mcm9tX2lmbih1aW50
MzJfdCBpZl9pbmRleCwgaW50IGFmKQogewpAQCAtMTA3LDcgKzExOCw3IEBAIHNjdHBfdXNlcnNw
YWNlX2dldF9tdHVfZnJvbV9pZm4odWludDMyX3QgaWZfaW5kZXgsIGludCBhZikKIH0KICNlbmRp
ZgogCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19OYUNsKQorI2lmIGRlZmluZWQoX19uYXRp
dmVfY2xpZW50X18pCiBpbnQKIHNjdHBfdXNlcnNwYWNlX2dldF9tdHVfZnJvbV9pZm4odWludDMy
X3QgaWZfaW5kZXgsIGludCBhZikKIHsKQEAgLTExNSw2ICsxMjYsMTkgQEAgc2N0cF91c2Vyc3Bh
Y2VfZ2V0X210dV9mcm9tX2lmbih1aW50MzJfdCBpZl9pbmRleCwgaW50IGFmKQogfQogI2VuZGlm
CiAKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKSB8fCBk
ZWZpbmVkKF9fbGludXhfXykgfHwgZGVmaW5lZChfX25hdGl2ZV9jbGllbnRfXykgfHwgZGVmaW5l
ZChfX05ldEJTRF9fKSB8fCBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0Z1Y2hzaWFfXykK
K2ludAordGltaW5nc2FmZV9iY21wKGNvbnN0IHZvaWQgKmIxLCBjb25zdCB2b2lkICpiMiwgc2l6
ZV90IG4pCit7CisJY29uc3QgdW5zaWduZWQgY2hhciAqcDEgPSBiMSwgKnAyID0gYjI7CisJaW50
IHJldCA9IDA7CisKKwlmb3IgKDsgbiA+IDA7IG4tLSkKKwkJcmV0IHw9ICpwMSsrIF4gKnAyKys7
CisJcmV0dXJuIChyZXQgIT0gMCk7Cit9CisjZW5kaWYKKwogI2lmZGVmIF9XSU4zMgogaW50CiBz
Y3RwX3VzZXJzcGFjZV9nZXRfbXR1X2Zyb21faWZuKHVpbnQzMl90IGlmX2luZGV4LCBpbnQgYWYp
CkBAIC0xNTksMTEgKzE4MywyOSBAQCBjbGVhbnVwOgogdm9pZAogZ2V0d2ludGltZW9mZGF5KHN0
cnVjdCB0aW1ldmFsICp0dikKIHsKLQlzdHJ1Y3QgdGltZWIgdGI7CisJRklMRVRJTUUgZmlsZXRp
bWU7CisJVUxBUkdFX0lOVEVHRVIgdWxhcmdlOwogCi0JZnRpbWUoJnRiKTsKLQl0di0+dHZfc2Vj
ID0gKGxvbmcpdGIudGltZTsKLQl0di0+dHZfdXNlYyA9IChsb25nKSh0Yi5taWxsaXRtKSAqIDEw
MDBMOworCUdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lKCZmaWxldGltZSk7CisJdWxhcmdlLkxvd1Bh
cnQgPSBmaWxldGltZS5kd0xvd0RhdGVUaW1lOworCXVsYXJnZS5IaWdoUGFydCA9IGZpbGV0aW1l
LmR3SGlnaERhdGVUaW1lOworCS8qIENoYW5nZSBiYXNlIGZyb20gSmFuIDEgMTYwMSAwMDowMDow
MCB0byBKYW4gMSAxOTcwIDAwOjAwOjAwICovCisjaWYgZGVmaW5lZChfX01JTkdXMzJfXykKKwl1
bGFyZ2UuUXVhZFBhcnQgLT0gMTE2NDQ0NzM2MDAwMDAwMDAwVUxMOworI2Vsc2UKKwl1bGFyZ2Uu
UXVhZFBhcnQgLT0gMTE2NDQ0NzM2MDAwMDAwMDAwVUk2NDsKKyNlbmRpZgorCS8qCisJICogdWxh
cmdlLlF1YWRQYXJ0IGlzIG5vdyB0aGUgbnVtYmVyIG9mIDEwMC1uYW5vc2Vjb25kIGludGVydmFs
cworCSAqIHNpbmNlIEphbiAxIDE5NzAgMDA6MDA6MDAuCisJICovCisjaWYgZGVmaW5lZChfX01J
TkdXMzJfXykKKwl0di0+dHZfc2VjID0gKGxvbmcpKHVsYXJnZS5RdWFkUGFydCAvIDEwMDAwMDAw
VUxMKTsKKwl0di0+dHZfdXNlYyA9IChsb25nKSgodWxhcmdlLlF1YWRQYXJ0ICUgMTAwMDAwMDBV
TEwpIC8gMTBVTEwpOworI2Vsc2UKKwl0di0+dHZfc2VjID0gKGxvbmcpKHVsYXJnZS5RdWFkUGFy
dCAvIDEwMDAwMDAwVUk2NCk7CisJdHYtPnR2X3VzZWMgPSAobG9uZykoKHVsYXJnZS5RdWFkUGFy
dCAlIDEwMDAwMDAwVUk2NCkgLyAxMFVJNjQpOworI2VuZGlmCiB9CiAKIGludApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfdXNycmVxLmMgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91
c3JzY3RwbGliL25ldGluZXQvc2N0cF91c3JyZXEuYwpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUg
MTAwNzU1CmluZGV4IGJiNWVhOGUwYjAwOTE2NmIyZTQ1ZjIxYjc5ZDIzODM0OWNhYjY0OTQuLjc4
ZDc5NWNjMTM1NjlmZDY3ZDJiNWJjNWExNzY0OTkxYjQzNTk1YTEKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNy
c2N0cGxpYi9uZXRpbmV0L3NjdHBfdXNycmVxLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9u
ZXRpbmV0L3NjdHBfdXNycmVxLmMKQEAgLTMyLDEzICszMiwxMyBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZmRlZiBfX0ZyZWVCU0RfXworI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8c3lz
L2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF91c3Jy
ZXEuYyAzMzQ3MjUgMjAxOC0wNi0wNiAxOToyNzowNlogdHVleGVuICQiKTsKK19fRkJTRElEKCIk
RnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX3VzcnJlcS5jIDM2NDM1MyAyMDIwLTA4LTE4
IDE5OjI1OjAzWiB0dWV4ZW4gJCIpOwogI2VuZGlmCiAKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBf
b3MuaD4KLSNpZmRlZiBfX0ZyZWVCU0RfXworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8c3lzL3Byb2MuaD4KICNlbmRpZgogI2lu
Y2x1ZGUgPG5ldGluZXQvc2N0cF9wY2IuaD4KQEAgLTYxLDE1ICs2MSwxNCBAQCBfX0ZCU0RJRCgi
JEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF91c3JyZXEuYyAzMzQ3MjUgMjAxOC0wNi0w
NiAxOToyNzowNlogdAogI2Vsc2UKICNpbmNsdWRlIDxuZXRpbmV0L3VkcC5oPgogI2VuZGlmCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpbmNs
dWRlIDxzeXMvZXZlbnRoYW5kbGVyLmg+CisjZW5kaWYKIAogI2lmIGRlZmluZWQoSEFWRV9TQ1RQ
X1BFRUxPRkZfU09DS09QVCkKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfcGVlbG9mZi5oPgogI2Vu
ZGlmCQkJCS8qIEhBVkVfU0NUUF9QRUVMT0ZGX1NPQ0tPUFQgKi8KIAotI2lmIGRlZmluZWQoX19B
UFBMRV9fKQotI2RlZmluZSBBUFBMRV9GSUxFX05PIDcKLSNlbmRpZgotCiBleHRlcm4gY29uc3Qg
c3RydWN0IHNjdHBfY2NfZnVuY3Rpb25zIHNjdHBfY2NfZnVuY3Rpb25zW107CiBleHRlcm4gY29u
c3Qgc3RydWN0IHNjdHBfc3NfZnVuY3Rpb25zIHNjdHBfc3NfZnVuY3Rpb25zW107CiAKQEAgLTc3
LDQ5ICs3NiwzNSBAQCB2b2lkCiAjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogc2N0cF9pbml0
KHVpbnQxNl90IHBvcnQsCiAgICAgICAgICAgaW50ICgqY29ubl9vdXRwdXQpKHZvaWQgKmFkZHIs
IHZvaWQgKmJ1ZmZlciwgc2l6ZV90IGxlbmd0aCwgdWludDhfdCB0b3MsIHVpbnQ4X3Qgc2V0X2Rm
KSwKLSAgICAgICAgICB2b2lkICgqZGVidWdfcHJpbnRmKShjb25zdCBjaGFyICpmb3JtYXQsIC4u
LikpCisgICAgICAgICAgdm9pZCAoKmRlYnVnX3ByaW50ZikoY29uc3QgY2hhciAqZm9ybWF0LCAu
Li4pLCBpbnQgc3RhcnRfdGhyZWFkcykKICNlbGlmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAoIWRl
ZmluZWQoQVBQTEVfTEVPUEFSRCkgJiYgIWRlZmluZWQoQVBQTEVfU05PV0xFT1BBUkQpICYmIWRl
ZmluZWQoQVBQTEVfTElPTikgJiYgIWRlZmluZWQoQVBQTEVfTU9VTlRBSU5MSU9OKSkKIHNjdHBf
aW5pdChzdHJ1Y3QgcHJvdG9zdyAqcHAgU0NUUF9VTlVTRUQsIHN0cnVjdCBkb21haW4gKmRwIFND
VFBfVU5VU0VEKQogI2Vsc2UKIHNjdHBfaW5pdCh2b2lkKQogI2VuZGlmCiB7Ci0jaWYgIWRlZmlu
ZWQoX19QYW5kYV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAJdV9sb25nIHNiX21heF9hZGo7CiAKKyNlbHNlCisJaW5pdF9yYW5kb20o
KTsKICNlbmRpZgogCS8qIEluaXRpYWxpemUgYW5kIG1vZGlmeSB0aGUgc3lzY3RsZWQgdmFyaWFi
bGVzICovCiAJc2N0cF9pbml0X3N5c2N0bHMoKTsKICNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18p
Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKSB8fCBkZWZpbmVkKF9fVXNlcnNw
YWNlX29zX05hQ2wpCi0Jc3JhbmQoKHVuc2lnbmVkIGludCl0aW1lKE5VTEwpKTsKLSNlbHNlCi0J
c3JhbmRvbShnZXRwaWQoKSk7IC8qIHNvIGlucC0+c2N0cF9lcC5yYW5kb21fbnVtYmVycyBhcmUg
dHJ1bHkgcmFuZG9tLi4uICovCi0jZW5kaWYKLSNlbmRpZgotI2lmIGRlZmluZWQoX19QYW5kYV9f
KQotCXNjdHBfc2VuZHNwYWNlID0gU0JfTUFYOwotCXNjdHBfcmVjdnNwYWNlID0gU0JfTUFYOwot
Ci0jZWxpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJU0NUUF9CQVNFX1NZU0NUTChzY3RwX3Vk
cF90dW5uZWxpbmdfcG9ydCkgPSBwb3J0OwogI2Vsc2UKLSNpZiAhZGVmaW5lZChfX0FQUExFX18p
CisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJc2Jf
bWF4X2FkaiA9ICh1X2xvbmcpKCh1X3F1YWRfdCkgKHNiX21heCkgKiBNQ0xCWVRFUyAvIChNU0la
RSArIE1DTEJZVEVTKSk7CisJU0NUUF9CQVNFX1NZU0NUTChzY3RwX3NlbmRzcGFjZSkgPSBzYl9t
YXhfYWRqOworI2Vsc2UKIAlpZiAoKG5tYmNsdXN0ZXJzIC8gOCkgPiBTQ1RQX0FTT0NfTUFYX0NI
VU5LU19PTl9RVUVVRSkKIAkJU0NUUF9CQVNFX1NZU0NUTChzY3RwX21heF9jaHVua3Nfb25fcXVl
dWUpID0gKG5tYmNsdXN0ZXJzIC8gOCk7Ci0jZW5kaWYKIAkvKgogCSAqIEFsbG93IGEgdXNlciB0
byB0YWtlIG5vIG1vcmUgdGhhbiAxLzIgdGhlIG51bWJlciBvZiBjbHVzdGVycyBvcgotCSAqIHRo
ZSBTQl9NQVggd2hpY2hldmVyIGlzIHNtYWxsZXIgZm9yIHRoZSBzZW5kIHdpbmRvdy4KKwkgKiB0
aGUgU0JfTUFYLCB3aGljaGV2ZXIgaXMgc21hbGxlciwgZm9yIHRoZSBzZW5kIHdpbmRvdy4KIAkg
Ki8KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKLQlzYl9tYXhfYWRqID0gKHVfbG9uZykoKHVfcXVh
ZF90KSAoc2JfbWF4KSAqIE1DTEJZVEVTIC8gKE1TSVpFICsgTUNMQllURVMpKTsKLSNlbHNlCiAJ
c2JfbWF4X2FkaiA9ICh1X2xvbmcpKCh1X3F1YWRfdCkgKFNCX01BWCkgKiBNQ0xCWVRFUyAvIChN
U0laRSArIE1DTEJZVEVTKSk7Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKLQlTQ1RQ
X0JBU0VfU1lTQ1RMKHNjdHBfc2VuZHNwYWNlKSA9IHNiX21heF9hZGo7Ci0jZWxzZQogCVNDVFBf
QkFTRV9TWVNDVEwoc2N0cF9zZW5kc3BhY2UpID0gbWluKHNiX21heF9hZGosCiAJICAgICgoKHVp
bnQzMl90KW5tYmNsdXN0ZXJzIC8gMikgKiBTQ1RQX0RFRkFVTFRfTUFYU0VHTUVOVCkpOwogI2Vu
ZGlmCkBAIC0xMzMsNyArMTE4LDcgQEAgc2N0cF9pbml0KHZvaWQpCiAJU0NUUF9CQVNFX1ZBUihm
aXJzdF90aW1lKSA9IDA7CiAJU0NUUF9CQVNFX1ZBUihzY3RwX3BjYl9pbml0aWFsaXplZCkgPSAw
OwogI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKLSNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9v
c19XaW5kb3dzKQorI2lmICFkZWZpbmVkKF9XSU4zMikKICNpZiBkZWZpbmVkKElORVQpIHx8IGRl
ZmluZWQoSU5FVDYpCiAJU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2Vfcm91dGUpID0gLTE7CiAjZW5k
aWYKQEAgLTE1MCwyOCArMTM1LDM5IEBAIHNjdHBfaW5pdCh2b2lkKQogCVNDVFBfQkFTRV9WQVIo
Y29ubl9vdXRwdXQpID0gY29ubl9vdXRwdXQ7CiAJU0NUUF9CQVNFX1ZBUihkZWJ1Z19wcmludGYp
ID0gZGVidWdfcHJpbnRmOwogCVNDVFBfQkFTRV9WQVIoY3JjMzJjX29mZmxvYWRlZCkgPSAwOwor
CVNDVFBfQkFTRV9WQVIoaXRlcmF0b3JfdGhyZWFkX3N0YXJ0ZWQpID0gMDsKKwlTQ1RQX0JBU0Vf
VkFSKHRpbWVyX3RocmVhZF9zdGFydGVkKSA9IDA7CiAjZW5kaWYKLQlzY3RwX3BjYl9pbml0KCk7
CiAjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQotCXNjdHBfc3RhcnRfdGltZXIoKTsKKwlzY3Rw
X3BjYl9pbml0KHN0YXJ0X3RocmVhZHMpOworCWlmIChzdGFydF90aHJlYWRzKSB7CisJCXNjdHBf
c3RhcnRfdGltZXJfdGhyZWFkKCk7CisJfQorI2Vsc2UKKwlzY3RwX3BjYl9pbml0KCk7CiAjZW5k
aWYKICNpZiBkZWZpbmVkKFNDVFBfUEFDS0VUX0xPR0dJTkcpCiAJU0NUUF9CQVNFX1ZBUihwYWNr
ZXRfbG9nX3dyaXRlcnMpID0gMDsKIAlTQ1RQX0JBU0VfVkFSKHBhY2tldF9sb2dfZW5kKSA9IDA7
CiAJbWVtc2V0KCZTQ1RQX0JBU0VfVkFSKHBhY2tldF9sb2dfYnVmZmVyKSwgMCwgU0NUUF9QQUNL
RVRfTE9HX1NJWkUpOwogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5l
ZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJU0NUUF9CQVNFX1ZBUihz
Y3RwX21haW5fdGltZXJfdGlja3MpID0gMDsKIAlzY3RwX3N0YXJ0X21haW5fdGltZXIoKTsKIAl0
aW1lb3V0KHNjdHBfZGVsYXllZF9zdGFydHVwLCBOVUxMLCAxKTsKICNlbmRpZgorI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJU0NUUF9CQVNFX1ZB
UihlaF90YWcpID0gRVZFTlRIQU5ETEVSX1JFR0lTVEVSKHJ0X2FkZHJtc2csCisJICAgIHNjdHBf
YWRkcl9jaGFuZ2VfZXZlbnRfaGFuZGxlciwgTlVMTCwgRVZFTlRIQU5ETEVSX1BSSV9GSVJTVCk7
CisjZW5kaWYKIH0KIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZmRlZiBWSU1BR0UKIHN0YXRp
YyB2b2lkCiBzY3RwX2ZpbmlzaCh2b2lkICp1bnVzZWQgX191bnVzZWQpCiB7CisJRVZFTlRIQU5E
TEVSX0RFUkVHSVNURVIocnRfYWRkcm1zZywgU0NUUF9CQVNFX1ZBUihlaF90YWcpKTsKIAlzY3Rw
X3BjYl9maW5pc2goKTsKIH0KIFZORVRfU1lTVU5JTklUKHNjdHAsIFNJX1NVQl9QUk9UT19ET01B
SU4sIFNJX09SREVSX0ZPVVJUSCwgc2N0cF9maW5pc2gsIE5VTEwpOwpAQCAtMTgwLDcgKzE3Niw3
IEBAIFZORVRfU1lTVU5JTklUKHNjdHAsIFNJX1NVQl9QUk9UT19ET01BSU4sIFNJX09SREVSX0ZP
VVJUSCwgc2N0cF9maW5pc2gsIE5VTEwpOwogdm9pZAogc2N0cF9maW5pc2godm9pZCkKIHsKLSNp
ZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKIAl1bnRpbWVvdXQoc2N0cF9kZWxheWVkX3N0YXJ0dXAsIE5VTEwpOwog
CXNjdHBfb3Zlcl91ZHBfc3RvcCgpOwogCXNjdHBfYWRkcmVzc19tb25pdG9yX3N0b3AoKTsKQEAg
LTE5MCw1OSArMTg2LDEwIEBAIHNjdHBfZmluaXNoKHZvaWQpCiAjaWYgZGVmaW5lZChJTkVUKSB8
fCBkZWZpbmVkKElORVQ2KQogCXJlY3ZfdGhyZWFkX2Rlc3Ryb3koKTsKICNlbmRpZgotI2lmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCi0jaWYgZGVmaW5lZChJTkVUKSB8fCBkZWZp
bmVkKElORVQ2KQotCWlmIChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yb3V0ZSkgIT0gLTEpIHsK
LQkJcHRocmVhZF9qb2luKFNDVFBfQkFTRV9WQVIocmVjdnRocmVhZHJvdXRlKSwgTlVMTCk7Ci0J
fQotI2VuZGlmCi0jZW5kaWYKLSNpZmRlZiBJTkVUCi0JaWYgKFNDVFBfQkFTRV9WQVIodXNlcnNw
YWNlX3Jhd3NjdHApICE9IC0xKSB7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dz
KQotCQlXYWl0Rm9yU2luZ2xlT2JqZWN0KFNDVFBfQkFTRV9WQVIocmVjdnRocmVhZHJhdyksIElO
RklOSVRFKTsKLQkJQ2xvc2VIYW5kbGUoU0NUUF9CQVNFX1ZBUihyZWN2dGhyZWFkcmF3KSk7Ci0j
ZWxzZQotCQlwdGhyZWFkX2pvaW4oU0NUUF9CQVNFX1ZBUihyZWN2dGhyZWFkcmF3KSwgTlVMTCk7
Ci0jZW5kaWYKLQl9Ci0JaWYgKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNjdHApICE9IC0x
KSB7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQotCQlXYWl0Rm9yU2luZ2xl
T2JqZWN0KFNDVFBfQkFTRV9WQVIocmVjdnRocmVhZHVkcCksIElORklOSVRFKTsKLQkJQ2xvc2VI
YW5kbGUoU0NUUF9CQVNFX1ZBUihyZWN2dGhyZWFkdWRwKSk7Ci0jZWxzZQotCQlwdGhyZWFkX2pv
aW4oU0NUUF9CQVNFX1ZBUihyZWN2dGhyZWFkdWRwKSwgTlVMTCk7Ci0jZW5kaWYKLQl9Ci0jZW5k
aWYKLSNpZmRlZiBJTkVUNgotCWlmIChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3RwNikg
IT0gLTEpIHsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCi0JCVdhaXRGb3JT
aW5nbGVPYmplY3QoU0NUUF9CQVNFX1ZBUihyZWN2dGhyZWFkcmF3NiksIElORklOSVRFKTsKLQkJ
Q2xvc2VIYW5kbGUoU0NUUF9CQVNFX1ZBUihyZWN2dGhyZWFkcmF3NikpOwotI2Vsc2UKLQkJcHRo
cmVhZF9qb2luKFNDVFBfQkFTRV9WQVIocmVjdnRocmVhZHJhdzYpLCBOVUxMKTsKLSNlbmRpZgot
CX0KLQlpZiAoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfdWRwc2N0cDYpICE9IC0xKSB7Ci0jaWYg
ZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQotCQlXYWl0Rm9yU2luZ2xlT2JqZWN0KFND
VFBfQkFTRV9WQVIocmVjdnRocmVhZHVkcDYpLCBJTkZJTklURSk7Ci0JCUNsb3NlSGFuZGxlKFND
VFBfQkFTRV9WQVIocmVjdnRocmVhZHVkcDYpKTsKLSNlbHNlCi0JCXB0aHJlYWRfam9pbihTQ1RQ
X0JBU0VfVkFSKHJlY3Z0aHJlYWR1ZHA2KSwgTlVMTCk7Ci0jZW5kaWYKLQl9Ci0jZW5kaWYKLQlh
dG9taWNfY21wc2V0X2ludCgmU0NUUF9CQVNFX1ZBUih0aW1lcl90aHJlYWRfc2hvdWxkX2V4aXQp
LCAwLCAxKTsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCi0JV2FpdEZvclNp
bmdsZU9iamVjdChTQ1RQX0JBU0VfVkFSKHRpbWVyX3RocmVhZCksIElORklOSVRFKTsKLQlDbG9z
ZUhhbmRsZShTQ1RQX0JBU0VfVkFSKHRpbWVyX3RocmVhZCkpOwotI2Vsc2UKLQlwdGhyZWFkX2pv
aW4oU0NUUF9CQVNFX1ZBUih0aW1lcl90aHJlYWQpLCBOVUxMKTsKLSNlbmRpZgorCXNjdHBfc3Rv
cF90aW1lcl90aHJlYWQoKTsKICNlbmRpZgogCXNjdHBfcGNiX2ZpbmlzaCgpOwotI2lmIGRlZmlu
ZWQoX19XaW5kb3dzX18pCisjaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJc2N0cF9maW5pc2hfc3lzY3RscygpOwogI2VuZGlmCiB9CkBAIC0yODcsNyArMjM0
LDEwIEBAIHNjdHBfcGF0aG10dV9hZGp1c3RtZW50KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgdWlu
dDE2X3Qgbnh0c3opCiAJCQkJCQkgICAgICAgY2hrLT5yZWMuZGF0YS50c24pOwogCQkJCX0KIAkJ
CQkvKiBDbGVhciBhbnkgdGltZSBzbyBOTyBSVFQgaXMgYmVpbmcgZG9uZSAqLwotCQkJCWNoay0+
ZG9fcnR0ID0gMDsKKwkJCQlpZiAoY2hrLT5kb19ydHQgPT0gMSkgeworCQkJCQljaGstPmRvX3J0
dCA9IDA7CisJCQkJCWNoay0+d2hvVG8tPnJ0b19uZWVkZWQgPSAxOworCQkJCX0KIAkJCX0KIAkJ
fQogCX0KQEAgLTMwNCw3ICsyNTQsNyBAQCBzY3RwX25vdGlmeShzdHJ1Y3Qgc2N0cF9pbnBjYiAq
aW5wLAogICAgICAgICAgICAgdWludDE2X3QgaXBfbGVuLAogICAgICAgICAgICAgdWludDMyX3Qg
bmV4dF9tdHUpCiB7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19M
T0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJc3RydWN0IHNvY2tldCAqc287CiAjZW5kaWYKIAlpbnQgdGltZXJfc3RvcHBlZDsK
QEAgLTMyMSw5ICsyNzEsNyBAQCBzY3RwX25vdGlmeShzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAog
CSAgICAoaWNtcF9jb2RlID09IElDTVBfVU5SRUFDSF9JU09MQVRFRCkgfHwKIAkgICAgKGljbXBf
Y29kZSA9PSBJQ01QX1VOUkVBQ0hfTkVUX1BST0hJQikgfHwKIAkgICAgKGljbXBfY29kZSA9PSBJ
Q01QX1VOUkVBQ0hfSE9TVF9QUk9ISUIpIHx8Ci0jaWYgZGVmaW5lZChfX1BhbmRhX18pCi0JICAg
IChpY21wX2NvZGUgPT0gSUNNUF9VTlJFQUNIX0FETUlOKSkgewotI2VsaWYgZGVmaW5lZChfX1Vz
ZXJzcGFjZV9vc19OZXRCU0QpCisjaWYgZGVmaW5lZChfX05ldEJTRF9fKQogCSAgICAoaWNtcF9j
b2RlID09IElDTVBfVU5SRUFDSF9BRE1JTl9QUk9ISUJJVCkpIHsKICNlbHNlCiAJICAgIChpY21w
X2NvZGUgPT0gSUNNUF9VTlJFQUNIX0ZJTFRFUl9QUk9ISUIpKSB7CkBAIC0zNDIsNyArMjkwLDcg
QEAgc2N0cF9ub3RpZnkoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJICAgIChpY21wX2NvZGUg
PT0gSUNNUF9VTlJFQUNIX1BPUlQpKSB7CiAJCS8qIFRyZWF0IGl0IGxpa2UgYW4gQUJPUlQuICov
CiAJCXNjdHBfYWJvcnRfbm90aWZpY2F0aW9uKHN0Y2IsIDEsIDAsIE5VTEwsIFNDVFBfU09fTk9U
X0xPQ0tFRCk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NL
X1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAJCXNvID0gU0NUUF9JTlBfU08oaW5wKTsKIAkJYXRvbWljX2FkZF9pbnQoJnN0Y2ItPmFz
b2MucmVmY250LCAxKTsKIAkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwpAQCAtMzUyLDcgKzMwMCw3
IEBAIHNjdHBfbm90aWZ5KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAjZW5kaWYKIAkJKHZvaWQp
c2N0cF9mcmVlX2Fzc29jKGlucCwgc3RjYiwgU0NUUF9OT1JNQUxfUFJPQywKIAkJICAgICAgICAg
ICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX1VTUlJFUSArIFNDVFBfTE9DXzIpOwotI2lmIGRl
ZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRl
ZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlTQ1RQX1NPQ0tF
VF9VTkxPQ0soc28sIDEpOwogCQkvKiBTQ1RQX1RDQl9VTkxPQ0soc3RjYik7IE1UOiBJIHRoaW5r
IHRoaXMgaXMgbm90IG5lZWRlZC4qLwogI2VuZGlmCkBAIC0zODYsNyArMzM0LDcgQEAgc2N0cF9u
b3RpZnkoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJfQogCQlpZiAobmV0LT5tdHUgPiBuZXh0
X210dSkgewogCQkJbmV0LT5tdHUgPSBuZXh0X210dTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJ
CQlpZiAobmV0LT5wb3J0KSB7CiAJCQkJc2N0cF9oY19zZXRfbXR1KCZuZXQtPnJvLl9sX2FkZHIs
IGlucC0+ZmlibnVtLCBuZXh0X210dSArIHNpemVvZihzdHJ1Y3QgdWRwaGRyKSk7CiAJCQl9IGVs
c2UgewpAQCAtNDA5LDE5ICszNTcsMTUgQEAgc2N0cF9ub3RpZnkoc3RydWN0IHNjdHBfaW5wY2Ig
KmlucCwKIH0KICNlbmRpZgogCi0jaWYgIWRlZmluZWQoX19QYW5kYV9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBM
RV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiB2b2lkCi0jZWxzZQotdm9pZCAqCi0jZW5kaWYKICNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYg
IWRlZmluZWQoQVBQTEVfTEVPUEFSRCkgJiYgIWRlZmluZWQoQVBQTEVfU05PV0xFT1BBUkQpICYm
ICFkZWZpbmVkKEFQUExFX0xJT04pICYmICFkZWZpbmVkKEFQUExFX01PVU5UQUlOTElPTikgJiYg
IWRlZmluZWQoQVBQTEVfRUxDQVBJVEFOKQogc2N0cF9jdGxpbnB1dChpbnQgY21kLCBzdHJ1Y3Qg
c29ja2FkZHIgKnNhLCB2b2lkICp2aXAsIHN0cnVjdCBpZm5ldCAqaWZwIFNDVFBfVU5VU0VEKQog
I2Vsc2UKIHNjdHBfY3RsaW5wdXQoaW50IGNtZCwgc3RydWN0IHNvY2thZGRyICpzYSwgdm9pZCAq
dmlwKQogI2VuZGlmCiB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCXN0cnVjdCBpcCAqb3V0ZXJf
aXA7CiAjZW5kaWYKIAlzdHJ1Y3QgaXAgKmlubmVyX2lwOwpAQCAtNDMwLDMzICszNzQsMjUgQEAg
c2N0cF9jdGxpbnB1dChpbnQgY21kLCBzdHJ1Y3Qgc29ja2FkZHIgKnNhLCB2b2lkICp2aXApCiAJ
c3RydWN0IHNjdHBfaW5wY2IgKmlucDsKIAlzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2I7CiAJc3RydWN0
IHNjdHBfbmV0cyAqbmV0OwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzdHJ1Y3Qgc2N0cF9pbml0
X2NodW5rICpjaDsKICNlbmRpZgogCXN0cnVjdCBzb2NrYWRkcl9pbiBzcmMsIGRzdDsKIAogCWlm
IChzYS0+c2FfZmFtaWx5ICE9IEFGX0lORVQgfHwKIAkgICAgKChzdHJ1Y3Qgc29ja2FkZHJfaW4g
KilzYSktPnNpbl9hZGRyLnNfYWRkciA9PSBJTkFERFJfQU5ZKSB7Ci0jaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pCiAJ
CXJldHVybjsKLSNlbHNlCi0JCXJldHVybiAoTlVMTCk7Ci0jZW5kaWYKIAl9CiAJaWYgKFBSQ19J
U19SRURJUkVDVChjbWQpKSB7CiAJCXZpcCA9IE5VTEw7CiAJfSBlbHNlIGlmICgodW5zaWduZWQp
Y21kID49IFBSQ19OQ01EUyB8fCBpbmV0Y3RsZXJybWFwW2NtZF0gPT0gMCkgewotI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93
c19fKQogCQlyZXR1cm47Ci0jZWxzZQotCQlyZXR1cm4gKE5VTEwpOwotI2VuZGlmCiAJfQogCWlm
ICh2aXAgIT0gTlVMTCkgewogCQlpbm5lcl9pcCA9IChzdHJ1Y3QgaXAgKil2aXA7CiAJCWljbXAg
PSAoc3RydWN0IGljbXAgKikoKGNhZGRyX3QpaW5uZXJfaXAgLQogCQkgICAgKHNpemVvZihzdHJ1
Y3QgaWNtcCkgLSBzaXplb2Yoc3RydWN0IGlwKSkpOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJ
b3V0ZXJfaXAgPSAoc3RydWN0IGlwICopKChjYWRkcl90KWljbXAgLSBzaXplb2Yoc3RydWN0IGlw
KSk7CiAjZW5kaWYKIAkJc2ggPSAoc3RydWN0IHNjdHBoZHIgKikoKGNhZGRyX3QpaW5uZXJfaXAg
KyAoaW5uZXJfaXAtPmlwX2hsIDw8IDIpKTsKQEAgLTUwMCw3ICs0MzYsNyBAQCBzY3RwX2N0bGlu
cHV0KGludCBjbWQsIHN0cnVjdCBzb2NrYWRkciAqc2EsIHZvaWQgKnZpcCkKIAkJCQkJcmV0dXJu
OwogCQkJCX0KIAkJCX0gZWxzZSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCWlmIChudG9o
cyhvdXRlcl9pcC0+aXBfbGVuKSA+PQogCQkJCSAgICBzaXplb2Yoc3RydWN0IGlwKSArCiAJCQkJ
ICAgIDggKyAoaW5uZXJfaXAtPmlwX2hsIDw8IDIpICsgMjApIHsKQEAgLTUyNywyMyArNDYzLDMx
IEBAIHNjdHBfY3RsaW5wdXQoaW50IGNtZCwgc3RydWN0IHNvY2thZGRyICpzYSwgdm9pZCAqdmlw
KQogCQkJc2N0cF9ub3RpZnkoaW5wLCBzdGNiLCBuZXQsCiAJCQkgICAgICAgICAgICBpY21wLT5p
Y21wX3R5cGUsCiAJCQkgICAgICAgICAgICBpY21wLT5pY21wX2NvZGUsCi0jaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gMTAwMDAwMAorI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkgICAgICAgICAgICBu
dG9ocyhpbm5lcl9pcC0+aXBfbGVuKSwKICNlbHNlCiAJCQkgICAgICAgICAgICBpbm5lcl9pcC0+
aXBfbGVuLAogI2VuZGlmCiAJCQkgICAgICAgICAgICAodWludDMyX3QpbnRvaHMoaWNtcC0+aWNt
cF9uZXh0bXR1KSk7Ci0JCX0gZWxzZSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19G
cmVlQlNEX3ZlcnNpb24gPCA1MDAwMDAKLQkJCS8qCi0JCQkgKiBYWFggbXVzdCBiZSBmaXhlZCBm
b3IgNS54IGFuZCBoaWdoZXIsIGxlYXZlIGZvcgotCQkJICogNC54Ci0JCQkgKi8KLQkJCWlmIChQ
UkNfSVNfUkVESVJFQ1QoY21kKSAmJiAoaW5wICE9IE5VTEwpKSB7Ci0JCQkJaW5fcnRjaGFuZ2Uo
KHN0cnVjdCBpbnBjYiAqKWlucCwKLQkJCQkgICAgaW5ldGN0bGVycm1hcFtjbWRdKTsKKyNpZiBk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQlpZiAoIShzdGNiLT5zY3RwX2VwLT5zY3RwX2ZsYWdz
ICYgU0NUUF9QQ0JfRkxBR1NfU09DS0VUX0dPTkUpICYmCisJCQkgICAgKHN0Y2ItPnNjdHBfc29j
a2V0ICE9IE5VTEwpKSB7CisJCQkJc3RydWN0IHNvY2tldCAqdXBjYWxsX3NvY2tldDsKKworCQkJ
CXVwY2FsbF9zb2NrZXQgPSBzdGNiLT5zY3RwX3NvY2tldDsKKwkJCQlTT0NLX0xPQ0sodXBjYWxs
X3NvY2tldCk7CisJCQkJc29yZWYodXBjYWxsX3NvY2tldCk7CisJCQkJU09DS19VTkxPQ0sodXBj
YWxsX3NvY2tldCk7CisJCQkJaWYgKCh1cGNhbGxfc29ja2V0LT5zb191cGNhbGwgIT0gTlVMTCkg
JiYKKwkJCQkgICAgKHVwY2FsbF9zb2NrZXQtPnNvX2Vycm9yICE9IDApKSB7CisJCQkJCSgqdXBj
YWxsX3NvY2tldC0+c29fdXBjYWxsKSh1cGNhbGxfc29ja2V0LCB1cGNhbGxfc29ja2V0LT5zb191
cGNhbGxhcmcsIE1fTk9XQUlUKTsKKwkJCQl9CisJCQkJQUNDRVBUX0xPQ0soKTsKKwkJCQlTT0NL
X0xPQ0sodXBjYWxsX3NvY2tldCk7CisJCQkJc29yZWxlKHVwY2FsbF9zb2NrZXQpOwogCQkJfQog
I2VuZGlmCisJCX0gZWxzZSB7CiAJCQlpZiAoKHN0Y2IgPT0gTlVMTCkgJiYgKGlucCAhPSBOVUxM
KSkgewogCQkJCS8qIHJlZHVjZSByZWYtY291bnQgKi8KIAkJCQlTQ1RQX0lOUF9XTE9DSyhpbnAp
OwpAQCAtNTU1LDE2ICs0OTksMTIgQEAgc2N0cF9jdGxpbnB1dChpbnQgY21kLCBzdHJ1Y3Qgc29j
a2FkZHIgKnNhLCB2b2lkICp2aXApCiAJCQl9CiAJCX0KIAl9Ci0jaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pCiAJcmV0
dXJuOwotI2Vsc2UKLQlyZXR1cm4gKE5VTEwpOwotI2VuZGlmCiB9CiAjZW5kaWYKICNlbmRpZgog
Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogc3RhdGljIGludAogc2N0cF9nZXRjcmVkKFNZU0NUTF9I
QU5ETEVSX0FSR1MpCiB7CkBAIC01NzksMTQgKzUxOSw4IEBAIHNjdHBfZ2V0Y3JlZChTWVNDVExf
SEFORExFUl9BUkdTKQogCS8qIEZJWCwgZm9yIG5vbi1ic2QgaXMgdGhpcyByaWdodD8gKi8KIAl2
cmZfaWQgPSBTQ1RQX0RFRkFVTFRfVlJGSUQ7CiAKLSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDYw
MjAwMAogCWVycm9yID0gcHJpdl9jaGVjayhyZXEtPnRkLCBQUklWX05FVElORVRfR0VUQ1JFRCk7
CiAKLSNlbGlmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAwMAotCWVycm9yID0gc3VzZXIocmVx
LT50ZCk7Ci0jZWxzZQotCWVycm9yID0gc3VzZXIocmVxLT5wKTsKLSNlbmRpZgogCWlmIChlcnJv
cikKIAkJcmV0dXJuIChlcnJvcik7CiAKQEAgLTYzMSwyNyArNTY1LDMyIEBAIG91dDoKIAlyZXR1
cm4gKGVycm9yKTsKIH0KIAotU1lTQ1RMX1BST0MoX25ldF9pbmV0X3NjdHAsIE9JRF9BVVRPLCBn
ZXRjcmVkLCBDVExUWVBFX09QQVFVRSB8IENUTEZMQUdfUlcsCi0gICAgMCwgMCwgc2N0cF9nZXRj
cmVkLCAiUyx1Y3JlZCIsICJHZXQgdGhlIHVjcmVkIG9mIGEgU0NUUCBjb25uZWN0aW9uIik7Ci0j
ZW5kaWYJCQkJLyogI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICovCitTWVNDVExfUFJPQyhfbmV0
X2luZXRfc2N0cCwgT0lEX0FVVE8sIGdldGNyZWQsCisgICAgQ1RMVFlQRV9PUEFRVUUgfCBDVExG
TEFHX1JXIHwgQ1RMRkxBR19ORUVER0lBTlQsCisgICAgMCwgMCwgc2N0cF9nZXRjcmVkLCAiUyx1
Y3JlZCIsCisgICAgIkdldCB0aGUgdWNyZWQgb2YgYSBTQ1RQIGNvbm5lY3Rpb24iKTsKKyNlbmRp
ZgogCiAKICNpZmRlZiBJTkVUCi0jaWYgZGVmaW5lZChfX1BhbmRhX18pIHx8IGRlZmluZWQoX19X
aW5kb3dzX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiBkZWZpbmVkKF9XSU4zMikg
fHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogaW50Ci0jZWxpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDY5MDAwMAorI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykKIHN0YXRpYyB2b2lkCiAjZWxzZQogc3RhdGljIGludAogI2VuZGlmCiBzY3RwX2Fib3J0KHN0
cnVjdCBzb2NrZXQgKnNvKQogeworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCisJc3RydWN0IGVwb2NoX3RyYWNrZXIgZXQ7CisjZW5kaWYKIAlzdHJ1
Y3Qgc2N0cF9pbnBjYiAqaW5wOwogCXVpbnQzMl90IGZsYWdzOwogCiAJaW5wID0gKHN0cnVjdCBz
Y3RwX2lucGNiICopc28tPnNvX3BjYjsKIAlpZiAoaW5wID09IE5VTEwpIHsKLSNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDY5MDAwMAorI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCXJldHVybjsKICNlbHNl
CiAJCVNDVFBfTFRSQUNFX0VSUl9SRVQoTlVMTCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBf
VVNSUkVRLCBFSU5WQUwpOwpAQCAtNjU5LDYgKzU5OCw5IEBAIHNjdHBfYWJvcnQoc3RydWN0IHNv
Y2tldCAqc28pCiAjZW5kaWYKIAl9CiAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQorCU5FVF9FUE9DSF9FTlRFUihldCk7CisjZW5kaWYKICBzY3Rw
X211c3RfdHJ5X2FnYWluOgogCWZsYWdzID0gaW5wLT5zY3RwX2ZsYWdzOwogI2lmZGVmIFNDVFBf
TE9HX0NMT1NJTkcKQEAgLTY3OCw3ICs2MjAsNyBAQCBzY3RwX2Fib3J0KHN0cnVjdCBzb2NrZXQg
KnNvKQogCQkgKi8KIAkJU0NUUF9TQl9DTEVBUihzby0+c29fcmN2KTsKIAotI2lmIGRlZmluZWQo
X19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogCQlzby0+c29fdXNlY291bnQtLTsKICNlbHNlCiAJCS8qIE5vdyBudWxsIG91dCB0aGUg
cmVmZXJlbmNlLCB3ZSBhcmUgY29tcGxldGVseSBkZXRhY2hlZC4gKi8KQEAgLTY5MSwyMyArNjMz
LDI0IEBAIHNjdHBfYWJvcnQoc3RydWN0IHNvY2tldCAqc28pCiAJCQlnb3RvIHNjdHBfbXVzdF90
cnlfYWdhaW47CiAJCX0KIAl9Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNE
X3ZlcnNpb24gPiA2OTAwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQorCU5FVF9FUE9DSF9FWElUKGV0KTsKIAlyZXR1cm47CiAjZWxzZQogCXJl
dHVybiAoMCk7CiAjZW5kaWYKIH0KIAotI2lmIGRlZmluZWQoX19QYW5kYV9fKSB8fCBkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCisjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogaW50CiAjZWxzZQog
c3RhdGljIGludAogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNE
X3ZlcnNpb24gPj0gNTAwMDAwCi1zY3RwX2F0dGFjaChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IHBy
b3RvIFNDVFBfVU5VU0VELCBzdHJ1Y3QgdGhyZWFkICpwIFNDVFBfVU5VU0VEKQotI2VsaWYgZGVm
aW5lZChfX1BhbmRhX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiBkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiBzY3RwX2F0dGFjaChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IHByb3RvIFND
VFBfVU5VU0VELCB1aW50MzJfdCB2cmZfaWQpCi0jZWxpZiBkZWZpbmVkKF9fV2luZG93c19fKQor
I2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKK3NjdHBfYXR0YWNoKHN0cnVjdCBzb2NrZXQgKnNv
LCBpbnQgcHJvdG8gU0NUUF9VTlVTRUQsIHN0cnVjdCB0aHJlYWQgKnAgU0NUUF9VTlVTRUQpCisj
ZWxpZiBkZWZpbmVkKF9XSU4zMikKIHNjdHBfYXR0YWNoKHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQg
cHJvdG8gU0NUUF9VTlVTRUQsIFBLVEhSRUFEIHAgU0NUUF9VTlVTRUQpCiAjZWxzZQogc2N0cF9h
dHRhY2goc3RydWN0IHNvY2tldCAqc28sIGludCBwcm90byBTQ1RQX1VOVVNFRCwgc3RydWN0IHBy
b2MgKnAgU0NUUF9VTlVTRUQpCkBAIC03MTYsNyArNjU5LDcgQEAgc2N0cF9hdHRhY2goc3RydWN0
IHNvY2tldCAqc28sIGludCBwcm90byBTQ1RQX1VOVVNFRCwgc3RydWN0IHByb2MgKnAgU0NUUF9V
TlVTRUQKIAlzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wOwogCXN0cnVjdCBpbnBjYiAqaXBfaW5wOwog
CWludCBlcnJvcjsKLSNpZiAhZGVmaW5lZChfX1BhbmRhX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCisjaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAl1aW50MzJfdCB2cmZfaWQgPSBT
Q1RQX0RFRkFVTFRfVlJGSUQ7CiAjZW5kaWYKIApAQCAtNzQ1LDE4ICs2ODgsMTggQEAgc2N0cF9h
dHRhY2goc3RydWN0IHNvY2tldCAqc28sIGludCBwcm90byBTQ1RQX1VOVVNFRCwgc3RydWN0IHBy
b2MgKnAgU0NUUF9VTlVTRUQKIAlyZXR1cm4gKDApOwogfQogCi0jaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMDAwCisjaWYgZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQoraW50CitzY3RwX2JpbmQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRk
ciAqYWRkcikgeworCXZvaWQgKnAgPSBOVUxMOworI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykK
IHN0YXRpYyBpbnQKIHNjdHBfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRy
ICphZGRyLCBzdHJ1Y3QgdGhyZWFkICpwKQogewotI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
fHwgZGVmaW5lZChfX0FQUExFX18pCisjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKIHN0YXRpYyBp
bnQKIHNjdHBfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRyLCBz
dHJ1Y3QgcHJvYyAqcCkgewotI2VsaWYgZGVmaW5lZChfX1BhbmRhX18pIHx8IGRlZmluZWQoX19V
c2Vyc3BhY2VfXykKLWludAotc2N0cF9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29j
a2FkZHIgKmFkZHIpIHsKLQl2b2lkICpwID0gTlVMTDsKLSNlbGlmIGRlZmluZWQoX19XaW5kb3dz
X18pCisjZWxpZiBkZWZpbmVkKF9XSU4zMikKIHN0YXRpYyBpbnQKIHNjdHBfYmluZChzdHJ1Y3Qg
c29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRyLCBQS1RIUkVBRCBwKSB7CiAjZWxzZQpA
QCAtODQ4LDEwICs3OTEsMTMgQEAgc2N0cGNvbm5fYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3Ry
dWN0IHNvY2thZGRyICphZGRyKQogfQogCiAjZW5kaWYKLSNpZiAoZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPiA2OTAwMDApIHx8IGRlZmluZWQoX19XaW5kb3dzX18p
IHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBk
ZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogdm9pZAogc2N0cF9jbG9z
ZShzdHJ1Y3Qgc29ja2V0ICpzbykKIHsKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQorCXN0cnVjdCBlcG9jaF90cmFja2VyIGV0OworI2VuZGlmCiAJ
c3RydWN0IHNjdHBfaW5wY2IgKmlucDsKIAl1aW50MzJfdCBmbGFnczsKIApAQCAtODYyLDYgKzgw
OCw5IEBAIHNjdHBfY2xvc2Uoc3RydWN0IHNvY2tldCAqc28pCiAJLyogSW5mb3JtIGFsbCB0aGUg
bG93ZXIgbGF5ZXIgYXNzb2MgdGhhdCB3ZQogCSAqIGFyZSBkb25lLgogCSAqLworI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJTkVUX0VQT0NIX0VO
VEVSKGV0KTsKKyNlbmRpZgogIHNjdHBfbXVzdF90cnlfYWdhaW46CiAJZmxhZ3MgPSBpbnAtPnNj
dHBfZmxhZ3M7CiAjaWZkZWYgU0NUUF9MT0dfQ0xPU0lORwpAQCAtODk4LDcgKzg0Nyw3IEBAIHNj
dHBfY2xvc2Uoc3RydWN0IHNvY2tldCAqc28pCiAJCSAqLwogCQlTQ1RQX1NCX0NMRUFSKHNvLT5z
b19yY3YpOwogCi0jaWYgIWRlZmluZWQoX19BUFBMRV9fKQorI2lmICEoZGVmaW5lZChfX0FQUExF
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pKQogCQkvKiBOb3cgbnVsbCBvdXQgdGhlIHJl
ZmVyZW5jZSwgd2UgYXJlIGNvbXBsZXRlbHkgZGV0YWNoZWQuICovCiAJCXNvLT5zb19wY2IgPSBO
VUxMOwogI2VuZGlmCkBAIC05MDksNiArODU4LDkgQEAgc2N0cF9jbG9zZShzdHJ1Y3Qgc29ja2V0
ICpzbykKIAkJCWdvdG8gc2N0cF9tdXN0X3RyeV9hZ2FpbjsKIAkJfQogCX0KKyNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCU5FVF9FUE9DSF9FWElU
KGV0KTsKKyNlbmRpZgogCXJldHVybjsKIH0KIApAQCAtOTIzLDcgKzg3NSw3IEBAIHNjdHBfZGV0
YWNoKHN0cnVjdCBzb2NrZXQgKnNvKQogCiAJaW5wID0gKHN0cnVjdCBzY3RwX2lucGNiICopc28t
PnNvX3BjYjsKIAlpZiAoaW5wID09IE5VTEwpIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDY5MDAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCXJldHVybjsKICNlbHNlCiAJCVNDVFBfTFRSQUNF
X0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIEVJTlZBTCk7
CkBAIC05NjQsNyArOTE2LDcgQEAgc2N0cF9kZXRhY2goc3RydWN0IHNvY2tldCAqc28pCiAJCSAq
IGhlcmUgZm9yIHRoZSBhY2NvdW50aW5nL3NlbGVjdC4KIAkJICovCiAJCVNDVFBfU0JfQ0xFQVIo
c28tPnNvX3Jjdik7Ci0jaWYgIWRlZmluZWQoX19BUFBMRV9fKQorI2lmICEoZGVmaW5lZChfX0FQ
UExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pKQogCQkvKiBOb3cgZGlzY29ubmVjdCAq
LwogCQlzby0+c29fcGNiID0gTlVMTDsKICNlbmRpZgpAQCAtOTc0LDcgKzkyNiw3IEBAIHNjdHBf
ZGV0YWNoKHN0cnVjdCBzb2NrZXQgKnNvKQogCQkJZ290byBzY3RwX211c3RfdHJ5X2FnYWluOwog
CQl9CiAJfQotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID4g
NjkwMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKIAlyZXR1cm47CiAjZWxzZQogCXJldHVybiAoMCk7CkBAIC05ODUsOSArOTM3LDkgQEAgc2N0
cF9kZXRhY2goc3RydWN0IHNvY2tldCAqc28pCiAjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
LyogX19Vc2Vyc3BhY2VfXyBpcyBub3QgY2FsbGluZyBzY3RwX3NlbmRtICovCiAjZW5kaWYKLSNp
ZiAhKGRlZmluZWQoX19QYW5kYV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKSkKKyNpZiAhKGRl
ZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkKIGludAotI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAwMAorI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBzY3RwX3NlbmRtKHN0
cnVjdCBzb2NrZXQgKnNvLCBpbnQgZmxhZ3MsIHN0cnVjdCBtYnVmICptLCBzdHJ1Y3Qgc29ja2Fk
ZHIgKmFkZHIsCiAgICAgc3RydWN0IG1idWYgKmNvbnRyb2wsIHN0cnVjdCB0aHJlYWQgKnApOwog
CkBAIC05OTgsNyArOTUwLDcgQEAgc2N0cF9zZW5kbShzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IGZs
YWdzLCBzdHJ1Y3QgbWJ1ZiAqbSwgc3RydWN0IHNvY2thZGRyICphZGRyLAogI2VuZGlmCiAKIGlu
dAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAw
MAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBz
Y3RwX3NlbmRtKHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgZmxhZ3MsIHN0cnVjdCBtYnVmICptLCBz
dHJ1Y3Qgc29ja2FkZHIgKmFkZHIsCiAgICAgc3RydWN0IG1idWYgKmNvbnRyb2wsIHN0cnVjdCB0
aHJlYWQgKnApCiB7CkBAIC0xMDUyLDcgKzEwMDQsNiBAQCBjb25uZWN0ZWRfdHlwZToKIAkvKiBu
b3cgd2hhdCBhYm91dCBjb250cm9sICovCiAJaWYgKGNvbnRyb2wpIHsKIAkJaWYgKGlucC0+Y29u
dHJvbCkgewotCQkJU0NUUF9QUklOVEYoImh1aD8gY29udHJvbCBzZXQ/XG4iKTsKIAkJCXNjdHBf
bV9mcmVlbShpbnAtPmNvbnRyb2wpOwogCQkJaW5wLT5jb250cm9sID0gTlVMTDsKIAkJfQpAQCAt
MTA2Niw3ICsxMDE3LDcgQEAgY29ubmVjdGVkX3R5cGU6CiAJCWlucC0+cGt0X2xhc3QgPSBpbnAt
PnBrdCA9IG07CiAJfQogCWlmICgKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVk
KF9fQVBQTEVfXykKKyNpZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExF
X18pKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCS8qIEZyZWVCU0QgdXNlcyBhIGZsYWcg
cGFzc2VkICovCiAJICAgICgoZmxhZ3MgJiBQUlVTX01PUkVUT0NPTUUpID09IDApCiAjZWxzZQpA
QCAtMTA4Miw5ICsxMDMzLDE4IEBAIGNvbm5lY3RlZF90eXBlOgogCQkgKiBkZWZpbml0aW9ucykg
YnV0IHRoaXMgaXMgbm90IGFkdmlzYWJsZS4gVGhpcyBjb2RlIGlzIHVzZWQKIAkJICogYnkgRnJl
ZUJTRCB3aGVuIHNlbmRpbmcgYSBmaWxlIHdpdGggc2VuZGZpbGUoKSB0aG91Z2guCiAJCSAqLwor
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCXN0
cnVjdCBlcG9jaF90cmFja2VyIGV0OworI2VuZGlmCiAJCWludCByZXQ7CiAKKyNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCU5FVF9FUE9DSF9FTlRF
UihldCk7CisjZW5kaWYKIAkJcmV0ID0gc2N0cF9vdXRwdXQoaW5wLCBpbnAtPnBrdCwgYWRkciwg
aW5wLT5jb250cm9sLCBwLCBmbGFncyk7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKKwlORVRfRVBPQ0hfRVhJVChldCk7CisjZW5kaWYKIAkJaW5w
LT5wa3QgPSBOVUxMOwogCQlpbnAtPmNvbnRyb2wgPSBOVUxMOwogCQlyZXR1cm4gKHJldCk7CkBA
IC0xMTEyLDYgKzEwNzIsOSBAQCBzY3RwX2Rpc2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28pCiAJ
CQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CiAJCQlyZXR1cm4gKDApOwogCQl9IGVsc2UgeworI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQlzdHJ1
Y3QgZXBvY2hfdHJhY2tlciBldDsKKyNlbmRpZgogCQkJc3RydWN0IHNjdHBfYXNzb2NpYXRpb24g
KmFzb2M7CiAJCQlzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2I7CiAKQEAgLTExMjksNiArMTA5Miw5IEBA
IHNjdHBfZGlzY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbykKIAkJCQlTQ1RQX0lOUF9SVU5MT0NL
KGlucCk7CiAJCQkJcmV0dXJuICgwKTsKIAkJCX0KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQkJTkVUX0VQT0NIX0VOVEVSKGV0KTsKKyNlbmRp
ZgogI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCWlmICgoKHNvLT5zb19vcHRpb25zICYg
U0NUUF9TT19MSU5HRVIpICYmCiAJCQkgICAgIChzby0+c29fbGluZ2VyID09IDApKSB8fApAQCAt
MTEzOCw4ICsxMTA0LDcgQEAgc2N0cF9kaXNjb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvKQogCQkJ
ICAgICAoc28tPnNvX2xpbmdlciA9PSAwKSkgfHwKIAkJCSAgICAoc28tPnNvX3Jjdi5zYl9jYyA+
IDApKSB7CiAjZW5kaWYKLQkJCQlpZiAoU0NUUF9HRVRfU1RBVEUoYXNvYykgIT0KLQkJCQkgICAg
U0NUUF9TVEFURV9DT09LSUVfV0FJVCkgeworCQkJCWlmIChTQ1RQX0dFVF9TVEFURShzdGNiKSAh
PSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB7CiAJCQkJCS8qIExlZnQgd2l0aCBEYXRhIHVucmVh
ZCAqLwogCQkJCQlzdHJ1Y3QgbWJ1ZiAqb3BfZXJyOwogCkBAIC0xMTQ4LDEzICsxMTEzLDE2IEBA
IHNjdHBfZGlzY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbykKIAkJCQkJU0NUUF9TVEFUX0lOQ1Jf
Q09VTlRFUjMyKHNjdHBzX2Fib3J0ZWQpOwogCQkJCX0KIAkJCQlTQ1RQX0lOUF9SVU5MT0NLKGlu
cCk7Ci0JCQkJaWYgKChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9P
UEVOKSB8fAotCQkJCSAgICAoU0NUUF9HRVRfU1RBVEUoJnN0Y2ItPmFzb2MpID09IFNDVFBfU1RB
VEVfU0hVVERPV05fUkVDRUlWRUQpKSB7CisJCQkJaWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSA9
PSBTQ1RQX1NUQVRFX09QRU4pIHx8CisJCQkJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBT
Q1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgewogCQkJCQlTQ1RQX1NUQVRfREVDUl9HQVVH
RTMyKHNjdHBzX2N1cnJlc3RhYik7CiAJCQkJfQogCQkJCSh2b2lkKXNjdHBfZnJlZV9hc3NvYyhp
bnAsIHN0Y2IsIFNDVFBfTk9STUFMX1BST0MsCiAJCQkJICAgICAgICAgICAgICAgICAgICAgIFND
VFBfRlJPTV9TQ1RQX1VTUlJFUSArIFNDVFBfTE9DXzMpOwogCQkJCS8qIE5vIHVubG9jayB0Y2Ig
YXNzb2MgaXMgZ29uZSAqLworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCisJCQkJTkVUX0VQT0NIX0VYSVQoZXQpOworI2VuZGlmCiAJCQkJcmV0dXJu
ICgwKTsKIAkJCX0KIAkJCWlmIChUQUlMUV9FTVBUWSgmYXNvYy0+c2VuZF9xdWV1ZSkgJiYKQEAg
LTExNjQsMTcgKzExMzIsMTYgQEAgc2N0cF9kaXNjb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvKQog
CQkJCWlmICgoKmFzb2MtPnNzX2Z1bmN0aW9ucy5zY3RwX3NzX2lzX3VzZXJfbXNnc19pbmNvbXBs
ZXRlKShzdGNiLCBhc29jKSkgewogCQkJCQlnb3RvIGFib3J0X2FueXdheTsKIAkJCQl9Ci0JCQkJ
aWYgKChTQ1RQX0dFVF9TVEFURShhc29jKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpICYm
Ci0JCQkJICAgIChTQ1RQX0dFVF9TVEFURShhc29jKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX0FD
S19TRU5UKSkgeworCQkJCWlmICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9TVEFURV9T
SFVURE9XTl9TRU5UKSAmJgorCQkJCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9T
VEFURV9TSFVURE9XTl9BQ0tfU0VOVCkpIHsKIAkJCQkJLyogb25seSBzZW5kIFNIVVRET1dOIDFz
dCB0aW1lIHRocnUgKi8KIAkJCQkJc3RydWN0IHNjdHBfbmV0cyAqbmV0cDsKIAotCQkJCQlpZiAo
KFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfT1BFTikgfHwKLQkJCQkJICAgIChT
Q1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgewor
CQkJCQlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfT1BFTikgfHwKKwkJ
CQkJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJ
VkVEKSkgewogCQkJCQkJU0NUUF9TVEFUX0RFQ1JfR0FVR0UzMihzY3Rwc19jdXJyZXN0YWIpOwog
CQkJCQl9Ci0JCQkJCVNDVFBfU0VUX1NUQVRFKGFzb2MsIFNDVFBfU1RBVEVfU0hVVERPV05fU0VO
VCk7Ci0JCQkJCVNDVFBfQ0xFQVJfU1VCU1RBVEUoYXNvYywgU0NUUF9TVEFURV9TSFVURE9XTl9Q
RU5ESU5HKTsKKwkJCQkJU0NUUF9TRVRfU1RBVEUoc3RjYiwgU0NUUF9TVEFURV9TSFVURE9XTl9T
RU5UKTsKIAkJCQkJc2N0cF9zdG9wX3RpbWVyc19mb3Jfc2h1dGRvd24oc3RjYik7CiAJCQkJCWlm
IChzdGNiLT5hc29jLmFsdGVybmF0ZSkgewogCQkJCQkJbmV0cCA9IHN0Y2ItPmFzb2MuYWx0ZXJu
YXRlOwpAQCAtMTE4Myw5ICsxMTUwLDkgQEAgc2N0cF9kaXNjb25uZWN0KHN0cnVjdCBzb2NrZXQg
KnNvKQogCQkJCQl9CiAJCQkJCXNjdHBfc2VuZF9zaHV0ZG93bihzdGNiLG5ldHApOwogCQkJCQlz
Y3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9TSFVURE9XTiwKLQkJCQkJCQkgc3RjYi0+
c2N0cF9lcCwgc3RjYiwgbmV0cCk7CisJCQkJCSAgICAgICAgICAgICAgICAgc3RjYi0+c2N0cF9l
cCwgc3RjYiwgbmV0cCk7CiAJCQkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NI
VVRET1dOR1VBUkQsCi0JCQkJCQkJIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIG5ldHApOworCQkJCQkg
ICAgICAgICAgICAgICAgIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIE5VTEwpOwogCQkJCQlzY3RwX2No
dW5rX291dHB1dChzdGNiLT5zY3RwX2VwLCBzdGNiLCBTQ1RQX09VVFBVVF9GUk9NX1QzLCBTQ1RQ
X1NPX0xPQ0tFRCk7CiAJCQkJfQogCQkJfSBlbHNlIHsKQEAgLTExOTksMTggKzExNjYsMTAgQEAg
c2N0cF9kaXNjb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvKQogCQkJCSAqIHdlIHdpbGwgYWxsb3cg
dXNlciBkYXRhIHRvIGJlIHNlbnQgZmlyc3QKIAkJCQkgKiBhbmQgbW92ZSB0byBTSFVURE9XTi1Q
RU5ESU5HCiAJCQkJICovCi0JCQkJc3RydWN0IHNjdHBfbmV0cyAqbmV0cDsKLQkJCQlpZiAoc3Rj
Yi0+YXNvYy5hbHRlcm5hdGUpIHsKLQkJCQkJbmV0cCA9IHN0Y2ItPmFzb2MuYWx0ZXJuYXRlOwot
CQkJCX0gZWxzZSB7Ci0JCQkJCW5ldHAgPSBzdGNiLT5hc29jLnByaW1hcnlfZGVzdGluYXRpb247
Ci0JCQkJfQotCi0JCQkJYXNvYy0+c3RhdGUgfD0gU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5H
OwotCQkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NIVVRET1dOR1VBUkQsIHN0
Y2ItPnNjdHBfZXAsIHN0Y2IsCi0JCQkJCQkgbmV0cCk7CisJCQkJU0NUUF9BRERfU1VCU1RBVEUo
c3RjYiwgU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HKTsKKwkJCQlzY3RwX3RpbWVyX3N0YXJ0
KFNDVFBfVElNRVJfVFlQRV9TSFVURE9XTkdVQVJELCBzdGNiLT5zY3RwX2VwLCBzdGNiLCBOVUxM
KTsKIAkJCQlpZiAoKCphc29jLT5zc19mdW5jdGlvbnMuc2N0cF9zc19pc191c2VyX21zZ3NfaW5j
b21wbGV0ZSkoc3RjYiwgYXNvYykpIHsKLQkJCQkJYXNvYy0+c3RhdGUgfD0gU0NUUF9TVEFURV9Q
QVJUSUFMX01TR19MRUZUOworCQkJCQlTQ1RQX0FERF9TVUJTVEFURShzdGNiLCBTQ1RQX1NUQVRF
X1BBUlRJQUxfTVNHX0xFRlQpOwogCQkJCX0KIAkJCQlpZiAoVEFJTFFfRU1QVFkoJmFzb2MtPnNl
bmRfcXVldWUpICYmCiAJCQkJICAgIFRBSUxRX0VNUFRZKCZhc29jLT5zZW50X3F1ZXVlKSAmJgpA
QCAtMTIyMSwxOSArMTE4MCwyNSBAQCBzY3RwX2Rpc2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28p
CiAJCQkJCXN0Y2ItPnNjdHBfZXAtPmxhc3RfYWJvcnRfY29kZSA9IFNDVFBfRlJPTV9TQ1RQX1VT
UlJFUSArIFNDVFBfTE9DXzQ7CiAJCQkJCXNjdHBfc2VuZF9hYm9ydF90Y2Ioc3RjYiwgb3BfZXJy
LCBTQ1RQX1NPX0xPQ0tFRCk7CiAJCQkJCVNDVFBfU1RBVF9JTkNSX0NPVU5URVIzMihzY3Rwc19h
Ym9ydGVkKTsKLQkJCQkJaWYgKChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9T
VEFURV9PUEVOKSB8fAotCQkJCQkgICAgKFNDVFBfR0VUX1NUQVRFKCZzdGNiLT5hc29jKSA9PSBT
Q1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgeworCQkJCQlpZiAoKFNDVFBfR0VUX1NUQVRF
KHN0Y2IpID09IFNDVFBfU1RBVEVfT1BFTikgfHwKKwkJCQkJICAgIChTQ1RQX0dFVF9TVEFURShz
dGNiKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgewogCQkJCQkJU0NUUF9TVEFU
X0RFQ1JfR0FVR0UzMihzY3Rwc19jdXJyZXN0YWIpOwogCQkJCQl9CiAJCQkJCVNDVFBfSU5QX1JV
TkxPQ0soaW5wKTsKIAkJCQkJKHZvaWQpc2N0cF9mcmVlX2Fzc29jKGlucCwgc3RjYiwgU0NUUF9O
T1JNQUxfUFJPQywKIAkJCQkJICAgICAgICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX1VT
UlJFUSArIFNDVFBfTE9DXzUpOworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCisJCQkJCU5FVF9FUE9DSF9FWElUKGV0KTsKKyNlbmRpZgogCQkJCQly
ZXR1cm4gKDApOwogCQkJCX0gZWxzZSB7CiAJCQkJCXNjdHBfY2h1bmtfb3V0cHV0KGlucCwgc3Rj
YiwgU0NUUF9PVVRQVVRfRlJPTV9DTE9TSU5HLCBTQ1RQX1NPX0xPQ0tFRCk7CiAJCQkJfQogCQkJ
fQogCQkJc29pc2Rpc2Nvbm5lY3Rpbmcoc28pOworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQlORVRfRVBPQ0hfRVhJVChldCk7CisjZW5kaWYK
IAkJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKIAkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKIAkJ
CXJldHVybiAoMCk7CkBAIC0xMjQ3LDcgKzEyMTIsNyBAQCBzY3RwX2Rpc2Nvbm5lY3Qoc3RydWN0
IHNvY2tldCAqc28pCiAJfQogfQogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5l
ZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pIHx8IGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBp
bnQKIHNjdHBfZmx1c2goc3RydWN0IHNvY2tldCAqc28sIGludCBob3cpCiB7CkBAIC0xMzEzLDcg
KzEyNzgsNyBAQCBzY3RwX3NodXRkb3duKHN0cnVjdCBzb2NrZXQgKnNvKQogCWlmICghKChpbnAt
PnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCSAgICAgIChpbnAtPnNj
dHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSkpIHsKIAkJLyogUmVzdG9yZSB0
aGUgZmxhZ3MgdGhhdCB0aGUgc29zaHV0ZG93biB0b29rIGF3YXkuICovCi0jaWYgKGRlZmluZWQo
X19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMjExNSkgfHwgZGVmaW5lZChf
X1dpbmRvd3NfXykKKyNpZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfV0lOMzIp
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlTT0NLQlVGX0xPQ0soJnNvLT5zb19yY3Yp
OwogCQlzby0+c29fcmN2LnNiX3N0YXRlICY9IH5TQlNfQ0FOVFJDVk1PUkU7CiAJCVNPQ0tCVUZf
VU5MT0NLKCZzby0+c29fcmN2KTsKQEAgLTEzMzIsNiArMTI5Nyw5IEBAIHNjdHBfc2h1dGRvd24o
c3RydWN0IHNvY2tldCAqc28pCiAJCSAqIGEgU0hVVF9XUiBvciBTSFVUX1JEV1IuCiAJCSAqIFRo
aXMgbWVhbnMgd2UgcHV0IHRoZSBzaHV0ZG93biBmbGFnIGFnYWluc3QgaXQuCiAJCSAqLworI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCXN0cnVj
dCBlcG9jaF90cmFja2VyIGV0OworI2VuZGlmCiAJCXN0cnVjdCBzY3RwX3RjYiAqc3RjYjsKIAkJ
c3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2M7CiAJCXN0cnVjdCBzY3RwX25ldHMgKm5ldHA7
CkBAIC0xMzYwLDkgKzEzMjgsOSBAQCBzY3RwX3NodXRkb3duKHN0cnVjdCBzb2NrZXQgKnNvKQog
CQkJU0NUUF9JTlBfUlVOTE9DSyhpbnApOwogCQkJcmV0dXJuICgwKTsKIAkJfQotCQlpZiAoKFND
VFBfR0VUX1NUQVRFKGFzb2MpICE9IFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQpICYmCi0JCSAgICAo
U0NUUF9HRVRfU1RBVEUoYXNvYykgIT0gU0NUUF9TVEFURV9DT09LSUVfRUNIT0VEKSAmJgotCQkg
ICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpICE9IFNDVFBfU1RBVEVfT1BFTikpIHsKKwkJaWYgKChT
Q1RQX0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSAmJgorCQkgICAg
KFNDVFBfR0VUX1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCkgJiYKKwkJ
ICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQX1NUQVRFX09QRU4pKSB7CiAJCQkvKiBJ
ZiB3ZSBhcmUgbm90IGluIG9yIGJlZm9yZSBFU1RBQkxJU0hFRCwgdGhlcmUgaXMKIAkJCSAqIG5v
IHByb3RvY29sIGFjdGlvbiByZXF1aXJlZC4KIAkJCSAqLwpAQCAtMTM3MCwxMiArMTMzOCwxNSBA
QCBzY3RwX3NodXRkb3duKHN0cnVjdCBzb2NrZXQgKnNvKQogCQkJU0NUUF9JTlBfUlVOTE9DSyhp
bnApOwogCQkJcmV0dXJuICgwKTsKIAkJfQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCU5FVF9FUE9DSF9FTlRFUihldCk7CisjZW5kaWYKIAkJ
aWYgKHN0Y2ItPmFzb2MuYWx0ZXJuYXRlKSB7CiAJCQluZXRwID0gc3RjYi0+YXNvYy5hbHRlcm5h
dGU7CiAJCX0gZWxzZSB7CiAJCQluZXRwID0gc3RjYi0+YXNvYy5wcmltYXJ5X2Rlc3RpbmF0aW9u
OwogCQl9Ci0JCWlmICgoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9PUEVOKSAm
JgorCQlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfT1BFTikgJiYKIAkJ
ICAgIFRBSUxRX0VNUFRZKCZhc29jLT5zZW5kX3F1ZXVlKSAmJgogCQkgICAgVEFJTFFfRU1QVFko
JmFzb2MtPnNlbnRfcXVldWUpICYmCiAJCSAgICAoYXNvYy0+c3RyZWFtX3F1ZXVlX2NudCA9PSAw
KSkgewpAQCAtMTM4NCw4ICsxMzU1LDcgQEAgc2N0cF9zaHV0ZG93bihzdHJ1Y3Qgc29ja2V0ICpz
bykKIAkJCX0KIAkJCS8qIHRoZXJlIGlzIG5vdGhpbmcgcXVldWVkIHRvIHNlbmQsIHNvIEknbSBk
b25lLi4uICovCiAJCQlTQ1RQX1NUQVRfREVDUl9HQVVHRTMyKHNjdHBzX2N1cnJlc3RhYik7Ci0J
CQlTQ1RQX1NFVF9TVEFURShhc29jLCBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpOwotCQkJU0NU
UF9DTEVBUl9TVUJTVEFURShhc29jLCBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJTkcpOworCQkJ
U0NUUF9TRVRfU1RBVEUoc3RjYiwgU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKTsKIAkJCXNjdHBf
c3RvcF90aW1lcnNfZm9yX3NodXRkb3duKHN0Y2IpOwogCQkJc2N0cF9zZW5kX3NodXRkb3duKHN0
Y2IsIG5ldHApOwogCQkJc2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfU0hVVERPV04s
CkBAIC0xMzk1LDkgKzEzNjUsOSBAQCBzY3RwX3NodXRkb3duKHN0cnVjdCBzb2NrZXQgKnNvKQog
CQkJICogV2Ugc3RpbGwgZ290IChvciBqdXN0IGdvdCkgZGF0YSB0byBzZW5kLCBzbyBzZXQKIAkJ
CSAqIFNIVVRET1dOX1BFTkRJTkcuCiAJCQkgKi8KLQkJCVNDVFBfQUREX1NVQlNUQVRFKGFzb2Ms
IFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORyk7CisJCQlTQ1RQX0FERF9TVUJTVEFURShzdGNi
LCBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJTkcpOwogCQkJaWYgKCgqYXNvYy0+c3NfZnVuY3Rp
b25zLnNjdHBfc3NfaXNfdXNlcl9tc2dzX2luY29tcGxldGUpKHN0Y2IsIGFzb2MpKSB7Ci0JCQkJ
U0NUUF9BRERfU1VCU1RBVEUoYXNvYywgU0NUUF9TVEFURV9QQVJUSUFMX01TR19MRUZUKTsKKwkJ
CQlTQ1RQX0FERF9TVUJTVEFURShzdGNiLCBTQ1RQX1NUQVRFX1BBUlRJQUxfTVNHX0xFRlQpOwog
CQkJfQogCQkJaWYgKFRBSUxRX0VNUFRZKCZhc29jLT5zZW5kX3F1ZXVlKSAmJgogCQkJICAgIFRB
SUxRX0VNUFRZKCZhc29jLT5zZW50X3F1ZXVlKSAmJgpAQCAtMTQwNiwxNyArMTM3NiwyMyBAQCBz
Y3RwX3NodXRkb3duKHN0cnVjdCBzb2NrZXQgKnNvKQogCQkJYWJvcnRfYW55d2F5OgogCQkJCW9w
X2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9DQVVTRV9VU0VSX0lOSVRJQVRFRF9BQlQs
ICIiKTsKIAkJCQlzdGNiLT5zY3RwX2VwLT5sYXN0X2Fib3J0X2NvZGUgPSBTQ1RQX0ZST01fU0NU
UF9VU1JSRVEgKyBTQ1RQX0xPQ182OworCQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKIAkJCQlz
Y3RwX2Fib3J0X2FuX2Fzc29jaWF0aW9uKHN0Y2ItPnNjdHBfZXAsIHN0Y2IsCiAJCQkJCQkJICBv
cF9lcnIsIFNDVFBfU09fTE9DS0VEKTsKLQkJCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CisjaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJCQlORVRf
RVBPQ0hfRVhJVChldCk7CisjZW5kaWYKIAkJCQlyZXR1cm4gKDApOwogCQkJfQogCQl9Ci0JCXNj
dHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NIVVRET1dOR1VBUkQsIHN0Y2ItPnNjdHBf
ZXAsIHN0Y2IsIG5ldHApOworCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9TSFVU
RE9XTkdVQVJELCBzdGNiLT5zY3RwX2VwLCBzdGNiLCBOVUxMKTsKIAkJLyogWFhYOiBXaHkgZG8g
dGhpcyBpbiB0aGUgY2FzZSB3aGVyZSB3ZSBoYXZlIHN0aWxsIGRhdGEgcXVldWVkPyAqLwogCQlz
Y3RwX2NodW5rX291dHB1dChpbnAsIHN0Y2IsIFNDVFBfT1VUUFVUX0ZST01fQ0xPU0lORywgU0NU
UF9TT19MT0NLRUQpOwogCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CiAJCVNDVFBfSU5QX1JVTkxP
Q0soaW5wKTsKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQorCQlORVRfRVBPQ0hfRVhJVChldCk7CisjZW5kaWYKIAkJcmV0dXJuICgwKTsKIAl9CiB9
CkBAIC0xNDI2LDMzICsxNDAyLDMzIEBAIHNjdHBfc2h1dGRvd24oc3RydWN0IHNvY2tldCAqc28p
CiAgKiByZXR1cm5zIDAgb24gc3VjY2VzcywgMSBvbiBlcnJvcgogICovCiBzdGF0aWMgdWludDMy
X3QKLXNjdHBfZmlsbF91c2VyX2FkZHJlc3Moc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKnNzLCBz
dHJ1Y3Qgc29ja2FkZHIgKnNhKQorc2N0cF9maWxsX3VzZXJfYWRkcmVzcyhzdHJ1Y3Qgc29ja2Fk
ZHIgKmRzdCwgc3RydWN0IHNvY2thZGRyICpzcmMpCiB7CiAjaWZkZWYgSU5FVDYKICNpZiBkZWZp
bmVkKFNDVFBfRU1CRURERURfVjZfU0NPUEUpCiAJc3RydWN0IHNvY2thZGRyX2luNiBsc2E2Owog
Ci0Jc2EgPSAoc3RydWN0IHNvY2thZGRyICopc2N0cF9yZWNvdmVyX3Njb3BlKChzdHJ1Y3Qgc29j
a2FkZHJfaW42ICopc2EsCisJc3JjID0gKHN0cnVjdCBzb2NrYWRkciAqKXNjdHBfcmVjb3Zlcl9z
Y29wZSgoc3RydWN0IHNvY2thZGRyX2luNiAqKXNyYywKIAkgICAgJmxzYTYpOwogI2VuZGlmCiAj
ZW5kaWYKICNpZmRlZiBIQVZFX1NBX0xFTgotCW1lbWNweShzcywgc2EsIHNhLT5zYV9sZW4pOwor
CW1lbWNweShkc3QsIHNyYywgc3JjLT5zYV9sZW4pOwogI2Vsc2UKLQlzd2l0Y2ggKHNhLT5zYV9m
YW1pbHkpIHsKKwlzd2l0Y2ggKHNyYy0+c2FfZmFtaWx5KSB7CiAjaWZkZWYgSU5FVAogCWNhc2Ug
QUZfSU5FVDoKLQkJbWVtY3B5KHNzLCBzYSwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOwor
CQltZW1jcHkoZHN0LCBzcmMsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKIAkJYnJlYWs7
CiAjZW5kaWYKICNpZmRlZiBJTkVUNgogCWNhc2UgQUZfSU5FVDY6Ci0JCW1lbWNweShzcywgc2Es
IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSk7CisJCW1lbWNweShkc3QsIHNyYywgc2l6ZW9m
KHN0cnVjdCBzb2NrYWRkcl9pbjYpKTsKIAkJYnJlYWs7CiAjZW5kaWYKICNpZiBkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAJY2FzZSBBRl9DT05OOgotCQltZW1jcHkoc3MsIHNhLCBzaXplb2Yoc3Ry
dWN0IHNvY2thZGRyX2Nvbm4pKTsKKwkJbWVtY3B5KGRzdCwgc3JjLCBzaXplb2Yoc3RydWN0IHNv
Y2thZGRyX2Nvbm4pKTsKIAkJYnJlYWs7CiAjZW5kaWYKIAlkZWZhdWx0OgpAQCAtMTQ2NSwxNSAr
MTQ0MSwxMiBAQCBzY3RwX2ZpbGxfdXNlcl9hZGRyZXNzKHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdl
ICpzcywgc3RydWN0IHNvY2thZGRyICpzYSkKIAogCiAKLS8qCi0gKiBOT1RFOiBhc3N1bWVzIGFk
ZHIgbG9jayBpcyBoZWxkCi0gKi8KIHN0YXRpYyBzaXplX3QKIHNjdHBfZmlsbF91cF9hZGRyZXNz
ZXNfdnJmKHN0cnVjdCBzY3RwX2lucGNiICppbnAsCi0JCQkgICBzdHJ1Y3Qgc2N0cF90Y2IgKnN0
Y2IsCi0JCQkgICBzaXplX3QgbGltaXQsCi0JCQkgICBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAq
c2FzLAotCQkJICAgdWludDMyX3QgdnJmX2lkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RydWN0IHNjdHBfdGNiICpzdGNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyICphZGRy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdnJmX2lkKQogewogCXN0cnVj
dCBzY3RwX2lmbiAqc2N0cF9pZm47CiAJc3RydWN0IHNjdHBfaWZhICpzY3RwX2lmYTsKQEAgLTE0
OTAsOCArMTQ2Myw5IEBAIHNjdHBfZmlsbF91cF9hZGRyZXNzZXNfdnJmKHN0cnVjdCBzY3RwX2lu
cGNiICppbnAsCiAjZW5kaWYKIAlzdHJ1Y3Qgc2N0cF92cmYgKnZyZjsKIAorCVNDVFBfSVBJX0FE
RFJfTE9DS19BU1NFUlQoKTsKIAlhY3R1YWwgPSAwOwotCWlmIChsaW1pdCA8PSAwKQorCWlmIChs
aW1pdCA9PSAwKQogCQlyZXR1cm4gKGFjdHVhbCk7CiAKIAlpZiAoc3RjYikgewpAQCAtMTU3OCw3
ICsxNTUyLDcgQEAgc2N0cF9maWxsX3VwX2FkZHJlc3Nlc192cmYoc3RydWN0IHNjdHBfaW5wY2Ig
KmlucCwKIAkJCQkJICogaXMgb25lIG9mIHRob3NlIHdlIG11c3Qgc2tpcCBpdC4KIAkJCQkJICov
CiAJCQkJCWlmIChzY3RwX2lzX2FkZHJfcmVzdHJpY3RlZChzdGNiLAotCQkJCQkJCQkgICAgc2N0
cF9pZmEpKSB7CisJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3RwX2lmYSkpIHsK
IAkJCQkJCWNvbnRpbnVlOwogCQkJCQl9CiAJCQkJfQpAQCAtMTU5Niw3ICsxNTcwLDcgQEAgc2N0
cF9maWxsX3VwX2FkZHJlc3Nlc192cmYoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJCQkJCQkg
Ki8KIAkJCQkJCQljb250aW51ZTsKIAkJCQkJCX0KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQor
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJ
CQlpZiAocHJpc29uX2NoZWNrX2lwNChpbnAtPmlwX2lucC5pbnAuaW5wX2NyZWQsCiAJCQkJCQkg
ICAgICAgICAgICAgICAgICAgICAmc2luLT5zaW5fYWRkcikgIT0gMCkgewogCQkJCQkJCWNvbnRp
bnVlOwpAQCAtMTYwOCwyMiArMTU4MiwyNSBAQCBzY3RwX2ZpbGxfdXBfYWRkcmVzc2VzX3ZyZihz
dHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogCQkJCQkJfQogI2lmZGVmIElORVQ2CiAJCQkJCQlpZiAo
c2N0cF9pc19mZWF0dXJlX29uKGlucCwgU0NUUF9QQ0JfRkxBR1NfTkVFRFNfTUFQUEVEX1Y0KSkg
ewotCQkJCQkJCWluNl9zaW5fMl92NG1hcHNpbjYoc2luLCAoc3RydWN0IHNvY2thZGRyX2luNiAq
KXNhcyk7Ci0JCQkJCQkJKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopc2FzKS0+c2luNl9wb3J0ID0g
aW5wLT5zY3RwX2xwb3J0OwotCQkJCQkJCXNhcyA9IChzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAq
KSgoY2FkZHJfdClzYXMgKyBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNikpOworCQkJCQkJCWlm
IChhY3R1YWwgKyBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNikgPiBsaW1pdCkgeworCQkJCQkJ
CQlyZXR1cm4gKGFjdHVhbCk7CisJCQkJCQkJfQorCQkJCQkJCWluNl9zaW5fMl92NG1hcHNpbjYo
c2luLCAoc3RydWN0IHNvY2thZGRyX2luNiAqKWFkZHIpOworCQkJCQkJCSgoc3RydWN0IHNvY2th
ZGRyX2luNiAqKWFkZHIpLT5zaW42X3BvcnQgPSBpbnAtPnNjdHBfbHBvcnQ7CisJCQkJCQkJYWRk
ciA9IChzdHJ1Y3Qgc29ja2FkZHIgKikoKGNhZGRyX3QpYWRkciArIHNpemVvZihzdHJ1Y3Qgc29j
a2FkZHJfaW42KSk7CiAJCQkJCQkJYWN0dWFsICs9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42
KTsKIAkJCQkJCX0gZWxzZSB7CiAjZW5kaWYKLQkJCQkJCQltZW1jcHkoc2FzLCBzaW4sIHNpemVv
Zigqc2luKSk7Ci0JCQkJCQkJKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilzYXMpLT5zaW5fcG9ydCA9
IGlucC0+c2N0cF9scG9ydDsKLQkJCQkJCQlzYXMgPSAoc3RydWN0IHNvY2thZGRyX3N0b3JhZ2Ug
KikoKGNhZGRyX3Qpc2FzICsgc2l6ZW9mKCpzaW4pKTsKLQkJCQkJCQlhY3R1YWwgKz0gc2l6ZW9m
KCpzaW4pOworCQkJCQkJCWlmIChhY3R1YWwgKyBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSA+
IGxpbWl0KSB7CisJCQkJCQkJCXJldHVybiAoYWN0dWFsKTsKKwkJCQkJCQl9CisJCQkJCQkJbWVt
Y3B5KGFkZHIsIHNpbiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOworCQkJCQkJCSgoc3Ry
dWN0IHNvY2thZGRyX2luICopYWRkciktPnNpbl9wb3J0ID0gaW5wLT5zY3RwX2xwb3J0OworCQkJ
CQkJCWFkZHIgPSAoc3RydWN0IHNvY2thZGRyICopKChjYWRkcl90KWFkZHIgKyBzaXplb2Yoc3Ry
dWN0IHNvY2thZGRyX2luKSk7CisJCQkJCQkJYWN0dWFsICs9IHNpemVvZihzdHJ1Y3Qgc29ja2Fk
ZHJfaW4pOwogI2lmZGVmIElORVQ2CiAJCQkJCQl9CiAjZW5kaWYKLQkJCQkJCWlmIChhY3R1YWwg
Pj0gbGltaXQpIHsKLQkJCQkJCQlyZXR1cm4gKGFjdHVhbCk7Ci0JCQkJCQl9CiAJCQkJCX0gZWxz
ZSB7CiAJCQkJCQljb250aW51ZTsKIAkJCQkJfQpAQCAtMTY0NSw3ICsxNjIyLDcgQEAgc2N0cF9m
aWxsX3VwX2FkZHJlc3Nlc192cmYoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJCQkJCQkgKi8K
IAkJCQkJCQljb250aW51ZTsKIAkJCQkJCX0KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJCQlp
ZiAocHJpc29uX2NoZWNrX2lwNihpbnAtPmlwX2lucC5pbnAuaW5wX2NyZWQsCiAJCQkJCQkgICAg
ICAgICAgICAgICAgICAgICAmc2luNi0+c2luNl9hZGRyKSAhPSAwKSB7CiAJCQkJCQkJY29udGlu
dWU7CkBAIC0xNjg0LDEzICsxNjYxLDEzIEBAIHNjdHBfZmlsbF91cF9hZGRyZXNzZXNfdnJmKHN0
cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCQkJCQkgICAgKElONl9JU19BRERSX1NJVEVMT0NBTCgm
c2luNi0+c2luNl9hZGRyKSkpIHsKIAkJCQkJCQljb250aW51ZTsKIAkJCQkJCX0KLQkJCQkJCW1l
bWNweShzYXMsIHNpbjYsIHNpemVvZigqc2luNikpOwotCQkJCQkJKChzdHJ1Y3Qgc29ja2FkZHJf
aW42ICopc2FzKS0+c2luNl9wb3J0ID0gaW5wLT5zY3RwX2xwb3J0OwotCQkJCQkJc2FzID0gKHN0
cnVjdCBzb2NrYWRkcl9zdG9yYWdlICopKChjYWRkcl90KXNhcyArIHNpemVvZigqc2luNikpOwot
CQkJCQkJYWN0dWFsICs9IHNpemVvZigqc2luNik7Ci0JCQkJCQlpZiAoYWN0dWFsID49IGxpbWl0
KSB7CisJCQkJCQlpZiAoYWN0dWFsICsgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpID4gbGlt
aXQpIHsKIAkJCQkJCQlyZXR1cm4gKGFjdHVhbCk7CiAJCQkJCQl9CisJCQkJCQltZW1jcHkoYWRk
ciwgc2luNiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKTsKKwkJCQkJCSgoc3RydWN0IHNv
Y2thZGRyX2luNiAqKWFkZHIpLT5zaW42X3BvcnQgPSBpbnAtPnNjdHBfbHBvcnQ7CisJCQkJCQlh
ZGRyID0gKHN0cnVjdCBzb2NrYWRkciAqKSgoY2FkZHJfdClhZGRyICsgc2l6ZW9mKHN0cnVjdCBz
b2NrYWRkcl9pbjYpKTsKKwkJCQkJCWFjdHVhbCArPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2lu
Nik7CiAJCQkJCX0gZWxzZSB7CiAJCQkJCQljb250aW51ZTsKIAkJCQkJfQpAQCAtMTY5OSwxMyAr
MTY3NiwxMyBAQCBzY3RwX2ZpbGxfdXBfYWRkcmVzc2VzX3ZyZihzdHJ1Y3Qgc2N0cF9pbnBjYiAq
aW5wLAogI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQljYXNlIEFGX0NPTk46CiAJCQkJ
CWlmIChjb25uX2FkZHJfbGVnYWwpIHsKLQkJCQkJCW1lbWNweShzYXMsICZzY3RwX2lmYS0+YWRk
cmVzcy5zY29ubiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9jb25uKSk7Ci0JCQkJCQkoKHN0cnVj
dCBzb2NrYWRkcl9jb25uICopc2FzKS0+c2Nvbm5fcG9ydCA9IGlucC0+c2N0cF9scG9ydDsKLQkJ
CQkJCXNhcyA9IChzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqKSgoY2FkZHJfdClzYXMgKyBzaXpl
b2Yoc3RydWN0IHNvY2thZGRyX2Nvbm4pKTsKLQkJCQkJCWFjdHVhbCArPSBzaXplb2Yoc3RydWN0
IHNvY2thZGRyX2Nvbm4pOwotCQkJCQkJaWYgKGFjdHVhbCA+PSBsaW1pdCkgeworCQkJCQkJaWYg
KGFjdHVhbCArIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfY29ubikgPiBsaW1pdCkgewogCQkJCQkJ
CXJldHVybiAoYWN0dWFsKTsKIAkJCQkJCX0KKwkJCQkJCW1lbWNweShhZGRyLCAmc2N0cF9pZmEt
PmFkZHJlc3Muc2Nvbm4sIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfY29ubikpOworCQkJCQkJKChz
dHJ1Y3Qgc29ja2FkZHJfY29ubiAqKWFkZHIpLT5zY29ubl9wb3J0ID0gaW5wLT5zY3RwX2xwb3J0
OworCQkJCQkJYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHIgKikoKGNhZGRyX3QpYWRkciArIHNpemVv
ZihzdHJ1Y3Qgc29ja2FkZHJfY29ubikpOworCQkJCQkJYWN0dWFsICs9IHNpemVvZihzdHJ1Y3Qg
c29ja2FkZHJfY29ubik7CiAJCQkJCX0gZWxzZSB7CiAJCQkJCQljb250aW51ZTsKIAkJCQkJfQpA
QCAtMTcxOCw5ICsxNjk1LDcgQEAgc2N0cF9maWxsX3VwX2FkZHJlc3Nlc192cmYoc3RydWN0IHNj
dHBfaW5wY2IgKmlucCwKIAkJfQogCX0gZWxzZSB7CiAJCXN0cnVjdCBzY3RwX2xhZGRyICpsYWRk
cjsKLSNpZm5kZWYgSEFWRV9TQV9MRU4KLQkJdWludDMyX3Qgc2FfbGVuID0gMDsKLSNlbmRpZgor
CQlzaXplX3Qgc2FfbGVuOwogCiAJCUxJU1RfRk9SRUFDSChsYWRkciwgJmlucC0+c2N0cF9hZGRy
X2xpc3QsIHNjdHBfbnh0X2FkZHIpIHsKIAkJCWlmIChzdGNiKSB7CkBAIC0xNzI4LDU5ICsxNzAz
LDU4IEBAIHNjdHBfZmlsbF91cF9hZGRyZXNzZXNfdnJmKHN0cnVjdCBzY3RwX2lucGNiICppbnAs
CiAJCQkJCWNvbnRpbnVlOwogCQkJCX0KIAkJCX0KLQkJCWlmIChzY3RwX2ZpbGxfdXNlcl9hZGRy
ZXNzKHNhcywgJmxhZGRyLT5pZmEtPmFkZHJlc3Muc2EpKQotCQkJCWNvbnRpbnVlOworI2lmZGVm
IEhBVkVfU0FfTEVOCisJCQlzYV9sZW4gPSBsYWRkci0+aWZhLT5hZGRyZXNzLnNhLnNhX2xlbjsK
KyNlbHNlCiAJCQlzd2l0Y2ggKGxhZGRyLT5pZmEtPmFkZHJlc3Muc2Euc2FfZmFtaWx5KSB7CiAj
aWZkZWYgSU5FVAogCQkJY2FzZSBBRl9JTkVUOgotCQkJCSgoc3RydWN0IHNvY2thZGRyX2luICop
c2FzKS0+c2luX3BvcnQgPSBpbnAtPnNjdHBfbHBvcnQ7CisJCQkJc2FfbGVuID0gc2l6ZW9mKHN0
cnVjdCBzb2NrYWRkcl9pbik7CiAJCQkJYnJlYWs7CiAjZW5kaWYKICNpZmRlZiBJTkVUNgogCQkJ
Y2FzZSBBRl9JTkVUNjoKLQkJCQkoKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilzYXMpLT5zaW42X3Bv
cnQgPSBpbnAtPnNjdHBfbHBvcnQ7CisJCQkJc2FfbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRk
cl9pbjYpOwogCQkJCWJyZWFrOwogI2VuZGlmCiAjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
CQkJY2FzZSBBRl9DT05OOgotCQkJCSgoc3RydWN0IHNvY2thZGRyX2Nvbm4gKilzYXMpLT5zY29u
bl9wb3J0ID0gaW5wLT5zY3RwX2xwb3J0OworCQkJCXNhX2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29j
a2FkZHJfY29ubik7CiAJCQkJYnJlYWs7CiAjZW5kaWYKIAkJCWRlZmF1bHQ6CiAJCQkJLyogVFNO
SCAqLworCQkJCXNhX2xlbiA9IDA7CiAJCQkJYnJlYWs7CiAJCQl9Ci0jaWZkZWYgSEFWRV9TQV9M
RU4KLQkJCXNhcyA9IChzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqKSgoY2FkZHJfdClzYXMgKwot
CQkJCQkJCSAgbGFkZHItPmlmYS0+YWRkcmVzcy5zYS5zYV9sZW4pOwotCQkJYWN0dWFsICs9IGxh
ZGRyLT5pZmEtPmFkZHJlc3Muc2Euc2FfbGVuOwotI2Vsc2UKKyNlbmRpZgorCQkJaWYgKGFjdHVh
bCArIHNhX2xlbiA+IGxpbWl0KSB7CisJCQkJcmV0dXJuIChhY3R1YWwpOworCQkJfQorCQkJaWYg
KHNjdHBfZmlsbF91c2VyX2FkZHJlc3MoYWRkciwgJmxhZGRyLT5pZmEtPmFkZHJlc3Muc2EpKQor
CQkJCWNvbnRpbnVlOwogCQkJc3dpdGNoIChsYWRkci0+aWZhLT5hZGRyZXNzLnNhLnNhX2ZhbWls
eSkgewogI2lmZGVmIElORVQKIAkJCWNhc2UgQUZfSU5FVDoKLQkJCQlzYV9sZW4gPSBzaXplb2Yo
c3RydWN0IHNvY2thZGRyX2luKTsKKwkJCQkoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKWFkZHIpLT5z
aW5fcG9ydCA9IGlucC0+c2N0cF9scG9ydDsKIAkJCQlicmVhazsKICNlbmRpZgogI2lmZGVmIElO
RVQ2CiAJCQljYXNlIEFGX0lORVQ2OgotCQkJCXNhX2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2Fk
ZHJfaW42KTsKKwkJCQkoKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilhZGRyKS0+c2luNl9wb3J0ID0g
aW5wLT5zY3RwX2xwb3J0OwogCQkJCWJyZWFrOwogI2VuZGlmCiAjaWYgZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCQkJY2FzZSBBRl9DT05OOgotCQkJCXNhX2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29j
a2FkZHJfY29ubik7CisJCQkJKChzdHJ1Y3Qgc29ja2FkZHJfY29ubiAqKWFkZHIpLT5zY29ubl9w
b3J0ID0gaW5wLT5zY3RwX2xwb3J0OwogCQkJCWJyZWFrOwogI2VuZGlmCiAJCQlkZWZhdWx0Ogog
CQkJCS8qIFRTTkggKi8KIAkJCQlicmVhazsKIAkJCX0KLQkJCXNhcyA9IChzdHJ1Y3Qgc29ja2Fk
ZHJfc3RvcmFnZSAqKSgoY2FkZHJfdClzYXMgKyBzYV9sZW4pOworCQkJYWRkciA9IChzdHJ1Y3Qg
c29ja2FkZHIgKikoKGNhZGRyX3QpYWRkciArIHNhX2xlbik7CiAJCQlhY3R1YWwgKz0gc2FfbGVu
OwotI2VuZGlmCi0JCQlpZiAoYWN0dWFsID49IGxpbWl0KSB7Ci0JCQkJcmV0dXJuIChhY3R1YWwp
OwotCQkJfQogCQl9CiAJfQogCXJldHVybiAoYWN0dWFsKTsKQEAgLTE3OTAsNyArMTc2NCw3IEBA
IHN0YXRpYyBzaXplX3QKIHNjdHBfZmlsbF91cF9hZGRyZXNzZXMoc3RydWN0IHNjdHBfaW5wY2Ig
KmlucCwKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGltaXQsCi0gICAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlICpzYXMpCisgICAgICAgICAgICAgICAgICAgICAgIHN0
cnVjdCBzb2NrYWRkciAqYWRkcikKIHsKIAlzaXplX3Qgc2l6ZSA9IDA7CiAjaWZkZWYgU0NUUF9N
VlJGCkBAIC0xODA1LDIyICsxNzc5LDE5IEBAIHNjdHBfZmlsbF91cF9hZGRyZXNzZXMoc3RydWN0
IHNjdHBfaW5wY2IgKmlucCwKICAqLwogCS8qIGZpbGwgdXAgYWRkcmVzc2VzIGZvciBhbGwgVlJG
cyBvbiB0aGUgZW5kcG9pbnQgKi8KIAlmb3IgKGlkID0gMDsgKGlkIDwgaW5wLT5udW1fdnJmcykg
JiYgKHNpemUgPCBsaW1pdCk7IGlkKyspIHsKLQkJc2l6ZSArPSBzY3RwX2ZpbGxfdXBfYWRkcmVz
c2VzX3ZyZihpbnAsIHN0Y2IsIGxpbWl0LCBzYXMsCi0JCQkJCQkgICBpbnAtPm1fdnJmX2lkc1tp
ZF0pOwotCQlzYXMgPSAoc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKikoKGNhZGRyX3Qpc2FzICsg
c2l6ZSk7CisJCXNpemUgKz0gc2N0cF9maWxsX3VwX2FkZHJlc3Nlc192cmYoaW5wLCBzdGNiLCBs
aW1pdCwgYWRkciwKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnAtPm1f
dnJmX2lkc1tpZF0pOworCQlhZGRyID0gKHN0cnVjdCBzb2NrYWRkciAqKSgoY2FkZHJfdClhZGRy
ICsgc2l6ZSk7CiAJfQogI2Vsc2UKIAkvKiBmaWxsIHVwIGFkZHJlc3NlcyBmb3IgdGhlIGVuZHBv
aW50J3MgZGVmYXVsdCB2cmYgKi8KLQlzaXplID0gc2N0cF9maWxsX3VwX2FkZHJlc3Nlc192cmYo
aW5wLCBzdGNiLCBsaW1pdCwgc2FzLAotCQkJCQkgIGlucC0+ZGVmX3ZyZl9pZCk7CisJc2l6ZSA9
IHNjdHBfZmlsbF91cF9hZGRyZXNzZXNfdnJmKGlucCwgc3RjYiwgbGltaXQsIGFkZHIsCisJICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucC0+ZGVmX3ZyZl9pZCk7CiAjZW5kaWYK
IAlTQ1RQX0lQSV9BRERSX1JVTkxPQ0soKTsKIAlyZXR1cm4gKHNpemUpOwogfQogCi0vKgotICog
Tk9URTogYXNzdW1lcyBhZGRyIGxvY2sgaXMgaGVsZAotICovCiBzdGF0aWMgaW50CiBzY3RwX2Nv
dW50X21heF9hZGRyZXNzZXNfdnJmKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHVpbnQzMl90IHZy
Zl9pZCkKIHsKQEAgLTE4MzQsNiArMTgwNSw3IEBAIHNjdHBfY291bnRfbWF4X2FkZHJlc3Nlc192
cmYoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgdWludDMyX3QgdnJmX2lkKQogCSAqIGJvdW5kLWFs
bCBjYXNlIGEgVENCIG1heSBOT1QgaW5jbHVkZSB0aGUgbG9vcGJhY2sgb3Igb3RoZXIKIAkgKiBh
ZGRyZXNzZXMgYXMgd2VsbC4KIAkgKi8KKwlTQ1RQX0lQSV9BRERSX0xPQ0tfQVNTRVJUKCk7CiAJ
dnJmID0gc2N0cF9maW5kX3ZyZih2cmZfaWQpOwogCWlmICh2cmYgPT0gTlVMTCkgewogCQlyZXR1
cm4gKDApOwpAQCAtMTkzOCwxMyArMTkxMCwxMiBAQCBzdGF0aWMgaW50CiBzY3RwX2RvX2Nvbm5l
Y3RfeChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgdm9pZCAqb3B0
dmFsLAogCQkgIHNpemVfdCBvcHRzaXplLCB2b2lkICpwLCBpbnQgZGVsYXkpCiB7Ci0JaW50IGVy
cm9yID0gMDsKKwlpbnQgZXJyb3I7CiAJaW50IGNyZWF0X2xvY2tfb24gPSAwOwogCXN0cnVjdCBz
Y3RwX3RjYiAqc3RjYiA9IE5VTEw7CiAJc3RydWN0IHNvY2thZGRyICpzYTsKIAl1bnNpZ25lZCBp
bnQgbnVtX3Y2ID0gMCwgbnVtX3Y0ID0gMCwgKnRvdGFkZHJwLCB0b3RhZGRyOwogCXVpbnQzMl90
IHZyZl9pZDsKLQlpbnQgYmFkX2FkZHJlc3NlcyA9IDA7CiAJc2N0cF9hc3NvY190ICphX2lkOwog
CiAJU0NUUERCRyhTQ1RQX0RFQlVHX1BDQjEsICJDb25uZWN0eCBjYWxsZWRcbiIpOwpAQCAtMTk4
MywxNyArMTk1NCwxMiBAQCBzY3RwX2RvX2Nvbm5lY3RfeChzdHJ1Y3Qgc29ja2V0ICpzbywgc3Ry
dWN0IHNjdHBfaW5wY2IgKmlucCwgdm9pZCAqb3B0dmFsLAogCXRvdGFkZHJwID0gKHVuc2lnbmVk
IGludCAqKW9wdHZhbDsKIAl0b3RhZGRyID0gKnRvdGFkZHJwOwogCXNhID0gKHN0cnVjdCBzb2Nr
YWRkciAqKSh0b3RhZGRycCArIDEpOwotCXN0Y2IgPSBzY3RwX2Nvbm5lY3R4X2hlbHBlcl9maW5k
KGlucCwgc2EsICZ0b3RhZGRyLCAmbnVtX3Y0LCAmbnVtX3Y2LCAmZXJyb3IsICh1bnNpZ25lZCBp
bnQpKG9wdHNpemUgLSBzaXplb2YoaW50KSksICZiYWRfYWRkcmVzc2VzKTsKLQlpZiAoKHN0Y2Ig
IT0gTlVMTCkgfHwgYmFkX2FkZHJlc3NlcykgeworCWVycm9yID0gc2N0cF9jb25uZWN0eF9oZWxw
ZXJfZmluZChpbnAsIHNhLCB0b3RhZGRyLCAmbnVtX3Y0LCAmbnVtX3Y2LCAodW5zaWduZWQgaW50
KShvcHRzaXplIC0gc2l6ZW9mKGludCkpKTsKKwlpZiAoZXJyb3IgIT0gMCkgewogCQkvKiBBbHJl
YWR5IGhhdmUgb3IgYW0gYnJpbmcgdXAgYW4gYXNzb2NpYXRpb24gKi8KIAkJU0NUUF9BU09DX0NS
RUFURV9VTkxPQ0soaW5wKTsKIAkJY3JlYXRfbG9ja19vbiA9IDA7Ci0JCWlmIChzdGNiKQotCQkJ
U0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwotCQlpZiAoYmFkX2FkZHJlc3NlcyA9PSAwKSB7Ci0JCQlT
Q1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVR
LCBFQUxSRUFEWSk7Ci0JCQllcnJvciA9IEVBTFJFQURZOwotCQl9CisJCVNDVFBfTFRSQUNFX0VS
Ul9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIGVycm9yKTsKIAkJ
Z290byBvdXRfbm93OwogCX0KICNpZmRlZiBJTkVUNgpAQCAtMjAwNCwxMCArMTk3MCw3IEBAIHNj
dHBfZG9fY29ubmVjdF94KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5w
LCB2b2lkICpvcHR2YWwsCiAJfQogCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxB
R1NfQk9VTkRfVjYpICYmCiAJICAgIChudW1fdjQgPiAwKSkgewotCQlzdHJ1Y3QgaW42cGNiICpp
bnA2OwotCi0JCWlucDYgPSAoc3RydWN0IGluNnBjYiAqKWlucDsKLQkJaWYgKFNDVFBfSVBWNl9W
Nk9OTFkoaW5wNikpIHsKKwkJaWYgKFNDVFBfSVBWNl9WNk9OTFkoaW5wKSkgewogCQkJLyoKIAkJ
CSAqIGlmIElQVjZfVjZPTkxZIGZsYWcsIGlnbm9yZSBjb25uZWN0aW9ucyBkZXN0aW5lZAogCQkJ
ICogdG8gYSB2NCBhZGRyIG9yIHY0LW1hcHBlZCBhZGRyCkBAIC0yMDM1LDE0ICsxOTk4LDE0IEBA
IHNjdHBfZG9fY29ubmVjdF94KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc2N0cF9pbnBjYiAq
aW5wLCB2b2lkICpvcHR2YWwsCiAJc3RjYiA9IHNjdHBfYWxvY19hc3NvYyhpbnAsIHNhLCAmZXJy
b3IsIDAsIHZyZl9pZCwKIAkgICAgICAgICAgICAgICAgICAgICAgIGlucC0+c2N0cF9lcC5wcmVf
b3Blbl9zdHJlYW1fY291bnQsCiAJICAgICAgICAgICAgICAgICAgICAgICBpbnAtPnNjdHBfZXAu
cG9ydCwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1
MDAwMDAKLQkJCSAgICAgICAoc3RydWN0IHRocmVhZCAqKXAKLSNlbGlmIGRlZmluZWQoX19XaW5k
b3dzX18pCi0JCQkgICAgICAgKFBLVEhSRUFEKXAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCSAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVj
dCB0aHJlYWQgKilwLAorI2VsaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCisJICAgICAgICAgICAgICAgICAgICAgICAoUEtUSFJFQUQpcCwKICNlbHNlCi0JCQkg
ICAgICAgKHN0cnVjdCBwcm9jICopcAorCSAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBw
cm9jICopcCwKICNlbmRpZgotCQkpOworCSAgICAgICAgICAgICAgICAgICAgICAgU0NUUF9JTklU
SUFMSVpFX0FVVEhfUEFSQU1TKTsKIAlpZiAoc3RjYiA9PSBOVUxMKSB7CiAJCS8qIEdhayEgbm8g
bWVtb3J5ICovCiAJCWdvdG8gb3V0X25vdzsKQEAgLTIwNTIsNyArMjAxNSw3IEBAIHNjdHBfZG9f
Y29ubmVjdF94KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCB2b2lk
ICpvcHR2YWwsCiAJCS8qIFNldCB0aGUgY29ubmVjdGVkIGZsYWcgc28gd2UgY2FuIHF1ZXVlIGRh
dGEgKi8KIAkJc29pc2Nvbm5lY3Rpbmcoc28pOwogCX0KLQlTQ1RQX1NFVF9TVEFURSgmc3RjYi0+
YXNvYywgU0NUUF9TVEFURV9DT09LSUVfV0FJVCk7CisJU0NUUF9TRVRfU1RBVEUoc3RjYiwgU0NU
UF9TVEFURV9DT09LSUVfV0FJVCk7CiAJLyogbW92ZSB0byBzZWNvbmQgYWRkcmVzcyAqLwogCXN3
aXRjaCAoc2EtPnNhX2ZhbWlseSkgewogI2lmZGVmIElORVQKQEAgLTIwNzMsMTYgKzIwMzYsMTEg
QEAgc2N0cF9kb19jb25uZWN0X3goc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzY3RwX2lucGNi
ICppbnAsIHZvaWQgKm9wdHZhbCwKIAlzY3RwX2Nvbm5lY3R4X2hlbHBlcl9hZGQoc3RjYiwgc2Es
ICh0b3RhZGRyLTEpLCAmZXJyb3IpOwogCS8qIEZpbGwgaW4gdGhlIHJldHVybiBpZCAqLwogCWlm
IChlcnJvcikgewotCQkodm9pZClzY3RwX2ZyZWVfYXNzb2MoaW5wLCBzdGNiLCBTQ1RQX1BDQkZS
RUVfRk9SQ0UsCi0JCSAgICAgICAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUF9VU1JSRVEg
KyBTQ1RQX0xPQ183KTsKIAkJZ290byBvdXRfbm93OwogCX0KIAlhX2lkID0gKHNjdHBfYXNzb2Nf
dCAqKW9wdHZhbDsKIAkqYV9pZCA9IHNjdHBfZ2V0X2Fzc29jaWQoc3RjYik7CiAKLQkvKiBpbml0
aWFsaXplIGF1dGhlbnRpY2F0aW9uIHBhcmFtZXRlcnMgZm9yIHRoZSBhc3NvYyAqLwotCXNjdHBf
aW5pdGlhbGl6ZV9hdXRoX3BhcmFtcyhpbnAsIHN0Y2IpOwotCiAJaWYgKGRlbGF5KSB7CiAJCS8q
IGRvaW5nIGRlbGF5ZWQgY29ubmVjdGlvbiAqLwogCQlzdGNiLT5hc29jLmRlbGF5ZWRfY29ubmVj
dGlvbiA9IDE7CkBAIC0yMTMyLDcgKzIwOTAsNyBAQCBzY3RwX2RvX2Nvbm5lY3RfeChzdHJ1Y3Qg
c29ja2V0ICpzbywgc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgdm9pZCAqb3B0dmFsLAogCX0gXAog
fQogCi0jaWYgZGVmaW5lZChfX1BhbmRhX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNp
ZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBpbnQKICNlbHNlCiBzdGF0aWMgaW50CkBAIC0yMTky
LDcgKzIxNTAsNyBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUs
IHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRzaXplLAogCQkJYnJlYWs7CiAJCWNhc2UgU0NUUF9B
VVRPQ0xPU0U6CiAJCQlpZiAoc2N0cF9pc19mZWF0dXJlX29uKGlucCwgU0NUUF9QQ0JfRkxBR1Nf
QVVUT0NMT1NFKSkKLQkJCQl2YWwgPSBUSUNLU19UT19TRUMoaW5wLT5zY3RwX2VwLmF1dG9fY2xv
c2VfdGltZSk7CisJCQkJdmFsID0gc2N0cF90aWNrc190b19zZWNzKGlucC0+c2N0cF9lcC5hdXRv
X2Nsb3NlX3RpbWUpOwogCQkJZWxzZQogCQkJCXZhbCA9IDA7CiAJCQlicmVhazsKQEAgLTIyODEs
NyArMjIzOSw4IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwg
dm9pZCAqb3B0dmFsLCBzaXplX3QgKm9wdHNpemUsCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+
c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0
cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKGF2LT5hc3Nv
Y19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAm
IFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0gU0NU
UF9GVVRVUkVfQVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJaWYgKGlu
cC0+aWRhdGFfc3VwcG9ydGVkKSB7CiAJCQkJCWF2LT5hc3NvY192YWx1ZSA9IDE7CkBAIC0yMzEx
LDcgKzIyNzAsOCBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUs
IHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAt
PnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNj
dHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChhdi0+YXNz
b2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3Mg
JiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoYXYtPmFzc29jX2lkID09IFND
VFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9STE9DSyhpbnApOwogCQkJCWF2LT5h
c3NvY192YWx1ZSA9IGlucC0+c2N0cF9jbXRfb25fb2ZmOwogCQkJCVNDVFBfSU5QX1JVTkxPQ0so
aW5wKTsKQEAgLTIzMzcsNyArMjI5Nyw4IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNv
LCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3QgKm9wdHNpemUsCiAJCX0gZWxzZSB7
CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJ
CQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0J
CQkgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAoKGlu
cC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgIChhdi0+
YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlu
cCk7CiAJCQkJYXYtPmFzc29jX3ZhbHVlID0gaW5wLT5zY3RwX2VwLnNjdHBfZGVmYXVsdF9jY19t
b2R1bGU7CiAJCQkJU0NUUF9JTlBfUlVOTE9DSyhpbnApOwpAQCAtMjM4Miw3ICsyMzQzLDggQEAg
c2N0cF9nZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWws
IHNpemVfdCAqb3B0c2l6ZSwKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYg
U0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NU
UF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBf
RlVUVVJFX0FTU09DKSkgeworCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxB
R1NfVURQVFlQRSkgJiYKKwkJCSAgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NP
QykpKSB7CiAJCQkJU0NUUF9JTlBfUkxPQ0soaW5wKTsKIAkJCQlhdi0+YXNzb2NfdmFsdWUgPSBp
bnAtPnNjdHBfZXAuc2N0cF9kZWZhdWx0X3NzX21vZHVsZTsKIAkJCQlTQ1RQX0lOUF9SVU5MT0NL
KGlucCk7CkBAIC0yNTIzLDcgKzI0ODUsOCBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpz
bywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRzaXplLAogCQl9IGVsc2Ug
ewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAog
CQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAot
CQkJICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChp
bnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoYXYt
PmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9STE9DSyhp
bnApOwogCQkJCWF2LT5hc3NvY192YWx1ZSA9IGlucC0+c2N0cF9jb250ZXh0OwogCQkJCVNDVFBf
SU5QX1JVTkxPQ0soaW5wKTsKQEAgLTI2MTQsOSArMjU3NywxMCBAQCBzY3RwX2dldG9wdChzdHJ1
Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRzaXpl
LAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19U
Q1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9U
Q1BQT09MKSB8fAotCQkJICAgIChzYWNrLT5zYWNrX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FT
U09DKSkgeworCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQ
RSkgJiYKKwkJCSAgICAgKHNhY2stPnNhY2tfYXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0Mp
KSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7Ci0JCQkJc2Fjay0+c2Fja19kZWxheSA9IFRJ
Q0tTX1RPX01TRUMoaW5wLT5zY3RwX2VwLnNjdHBfdGltZW91dHRpY2tzW1NDVFBfVElNRVJfUkVD
Vl0pOworCQkJCXNhY2stPnNhY2tfZGVsYXkgPSBzY3RwX3RpY2tzX3RvX21zZWNzKGlucC0+c2N0
cF9lcC5zY3RwX3RpbWVvdXR0aWNrc1tTQ1RQX1RJTUVSX1JFQ1ZdKTsKIAkJCQlzYWNrLT5zYWNr
X2ZyZXEgPSBpbnAtPnNjdHBfZXAuc2N0cF9zYWNrX2ZyZXE7CiAJCQkJU0NUUF9JTlBfUlVOTE9D
SyhpbnApOwogCQkJfSBlbHNlIHsKQEAgLTI2NTAsMjAgKzI2MTQsNiBAQCBzY3RwX2dldG9wdChz
dHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRz
aXplLAogCX0KIAljYXNlIFNDVFBfTUFYX0JVUlNUOgogCXsKLSNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA8IDkwMDAwMAotCQl1aW50OF90ICp2YWx1ZTsKLQot
CQlTQ1RQX0NIRUNLX0FORF9DQVNUKHZhbHVlLCBvcHR2YWwsIHVpbnQ4X3QsICpvcHRzaXplKTsK
LQotCQlTQ1RQX0lOUF9STE9DSyhpbnApOwotCQlpZiAoaW5wLT5zY3RwX2VwLm1heF9idXJzdCA8
IDI1NikgewotCQkJKnZhbHVlID0gaW5wLT5zY3RwX2VwLm1heF9idXJzdDsKLQkJfSBlbHNlIHsK
LQkJCSp2YWx1ZSA9IDI1NTsKLQkJfQotCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7Ci0JCSpvcHRz
aXplID0gc2l6ZW9mKHVpbnQ4X3QpOwotI2Vsc2UKIAkJc3RydWN0IHNjdHBfYXNzb2NfdmFsdWUg
KmF2OwogCiAJCVNDVFBfQ0hFQ0tfQU5EX0NBU1QoYXYsIG9wdHZhbCwgc3RydWN0IHNjdHBfYXNz
b2NfdmFsdWUsICpvcHRzaXplKTsKQEAgLTI2NzUsNyArMjYyNSw4IEBAIHNjdHBfZ2V0b3B0KHN0
cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3QgKm9wdHNp
emUsCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdT
X1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lO
X1RDUFBPT0wpIHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykp
IHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYm
CisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkgewogCQkJCVND
VFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJYXYtPmFzc29jX3ZhbHVlID0gaW5wLT5zY3RwX2VwLm1h
eF9idXJzdDsKIAkJCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CkBAIC0yNjg3LDcgKzI2MzgsNiBA
QCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZh
bCwgc2l6ZV90ICpvcHRzaXplLAogCQlpZiAoZXJyb3IgPT0gMCkgewogCQkJKm9wdHNpemUgPSBz
aXplb2Yoc3RydWN0IHNjdHBfYXNzb2NfdmFsdWUpOwogCQl9Ci0jZW5kaWYKIAkJYnJlYWs7CiAJ
fQogCWNhc2UgU0NUUF9NQVhTRUc6CkBAIC0yNzA0LDcgKzI2NTQsOCBAQCBzY3RwX2dldG9wdChz
dHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRz
aXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFH
U19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19J
Tl9UQ1BQT09MKSB8fAotCQkJICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0Mp
KSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAm
JgorCQkJICAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlT
Q1RQX0lOUF9STE9DSyhpbnApOwogCQkJCWlmIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9G
TEFHU19CT1VORF9WNikgewogCQkJCQlvdmggPSBTQ1RQX01FRF9PVkVSSEVBRDsKQEAgLTI4NjQs
NyArMjgxNSw3IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwg
dm9pZCAqb3B0dmFsLCBzaXplX3QgKm9wdHNpemUsCiAJCSAqLwogCXsKIAkJc2l6ZV90IGNwc3os
IGxlZnQ7Ci0JCXN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlICpzYXM7CisJCXN0cnVjdCBzb2NrYWRk
ciAqYWRkcjsKIAkJc3RydWN0IHNjdHBfbmV0cyAqbmV0OwogCQlzdHJ1Y3Qgc2N0cF9nZXRhZGRy
ZXNzZXMgKnNhZGRyOwogCkBAIC0yODcyLDkgKzI4MjMsOSBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qg
c29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRzaXplLAog
CQlTQ1RQX0ZJTkRfU1RDQihpbnAsIHN0Y2IsIHNhZGRyLT5zZ2V0X2Fzc29jX2lkKTsKIAogCQlp
ZiAoc3RjYikgewotCQkJbGVmdCA9ICgqb3B0c2l6ZSkgLSBzaXplb2Yoc3RydWN0IHNjdHBfZ2V0
YWRkcmVzc2VzKTsKLQkJCSpvcHRzaXplID0gc2l6ZW9mKHN0cnVjdCBzY3RwX2dldGFkZHJlc3Nl
cyk7Ci0JCQlzYXMgPSAoc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKikmc2FkZHItPmFkZHJbMF07
CisJCQlsZWZ0ID0gKm9wdHNpemUgLSBvZmZzZXRvZihzdHJ1Y3Qgc2N0cF9nZXRhZGRyZXNzZXMs
IGFkZHIpOworCQkJKm9wdHNpemUgPSBvZmZzZXRvZihzdHJ1Y3Qgc2N0cF9nZXRhZGRyZXNzZXMs
IGFkZHIpOworCQkJYWRkciA9ICZzYWRkci0+YWRkclswXS5zYTsKIAogCQkJVEFJTFFfRk9SRUFD
SChuZXQsICZzdGNiLT5hc29jLm5ldHMsIHNjdHBfbmV4dCkgewogCQkJCXN3aXRjaCAobmV0LT5y
by5fbF9hZGRyLnNhLnNhX2ZhbWlseSkgewpAQCAtMjkxNywyMiArMjg2OCwyMiBAQCBzY3RwX2dl
dG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90
ICpvcHRzaXplLAogCQkJCSAgICAobmV0LT5yby5fbF9hZGRyLnNhLnNhX2ZhbWlseSA9PSBBRl9J
TkVUKSkgewogCQkJCQkvKiBNdXN0IG1hcCB0aGUgYWRkcmVzcyAqLwogCQkJCQlpbjZfc2luXzJf
djRtYXBzaW42KCZuZXQtPnJvLl9sX2FkZHIuc2luLAotCQkJCQkJCSAgICAoc3RydWN0IHNvY2th
ZGRyX2luNiAqKXNhcyk7CisJCQkJCSAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBzb2NrYWRk
cl9pbjYgKilhZGRyKTsKIAkJCQl9IGVsc2UgewotCQkJCQltZW1jcHkoc2FzLCAmbmV0LT5yby5f
bF9hZGRyLCBjcHN6KTsKKwkJCQkJbWVtY3B5KGFkZHIsICZuZXQtPnJvLl9sX2FkZHIsIGNwc3op
OwogCQkJCX0KICNlbHNlCi0JCQkJbWVtY3B5KHNhcywgJm5ldC0+cm8uX2xfYWRkciwgY3Bzeik7
CisJCQkJbWVtY3B5KGFkZHIsICZuZXQtPnJvLl9sX2FkZHIsIGNwc3opOwogI2VuZGlmCi0JCQkJ
KChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilzYXMpLT5zaW5fcG9ydCA9IHN0Y2ItPnJwb3J0OworCQkJ
CSgoc3RydWN0IHNvY2thZGRyX2luICopYWRkciktPnNpbl9wb3J0ID0gc3RjYi0+cnBvcnQ7CiAK
LQkJCQlzYXMgPSAoc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKikoKGNhZGRyX3Qpc2FzICsgY3Bz
eik7CisJCQkJYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHIgKikoKGNhZGRyX3QpYWRkciArIGNwc3op
OwogCQkJCWxlZnQgLT0gY3BzejsKIAkJCQkqb3B0c2l6ZSArPSBjcHN6OwogCQkJfQogCQkJU0NU
UF9UQ0JfVU5MT0NLKHN0Y2IpOwogCQl9IGVsc2UgewotCQkgICAgICAgIFNDVFBfTFRSQUNFX0VS
Ul9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIEVOT0VOVCk7CisJ
CQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNS
UkVRLCBFTk9FTlQpOwogCQkJZXJyb3IgPSBFTk9FTlQ7CiAJCX0KIAkJYnJlYWs7CkBAIC0yOTQw
LDE5ICsyODkxLDE3IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFt
ZSwgdm9pZCAqb3B0dmFsLCBzaXplX3QgKm9wdHNpemUsCiAJY2FzZSBTQ1RQX0dFVF9MT0NBTF9B
RERSRVNTRVM6CiAJewogCQlzaXplX3QgbGltaXQsIGFjdHVhbDsKLQkJc3RydWN0IHNvY2thZGRy
X3N0b3JhZ2UgKnNhczsKIAkJc3RydWN0IHNjdHBfZ2V0YWRkcmVzc2VzICpzYWRkcjsKIAogCQlT
Q1RQX0NIRUNLX0FORF9DQVNUKHNhZGRyLCBvcHR2YWwsIHN0cnVjdCBzY3RwX2dldGFkZHJlc3Nl
cywgKm9wdHNpemUpOwogCQlTQ1RQX0ZJTkRfU1RDQihpbnAsIHN0Y2IsIHNhZGRyLT5zZ2V0X2Fz
c29jX2lkKTsKIAotCQlzYXMgPSAoc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKikmc2FkZHItPmFk
ZHJbMF07Ci0JCWxpbWl0ID0gKm9wdHNpemUgLSBzaXplb2Yoc2N0cF9hc3NvY190KTsKLQkJYWN0
dWFsID0gc2N0cF9maWxsX3VwX2FkZHJlc3NlcyhpbnAsIHN0Y2IsIGxpbWl0LCBzYXMpOworCQls
aW1pdCA9ICpvcHRzaXplIC0gb2Zmc2V0b2Yoc3RydWN0IHNjdHBfZ2V0YWRkcmVzc2VzLCBhZGRy
KTsKKwkJYWN0dWFsID0gc2N0cF9maWxsX3VwX2FkZHJlc3NlcyhpbnAsIHN0Y2IsIGxpbWl0LCAm
c2FkZHItPmFkZHJbMF0uc2EpOwogCQlpZiAoc3RjYikgewogCQkJU0NUUF9UQ0JfVU5MT0NLKHN0
Y2IpOwogCQl9Ci0JCSpvcHRzaXplID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlKSAr
IGFjdHVhbDsKKwkJKm9wdHNpemUgPSBvZmZzZXRvZihzdHJ1Y3Qgc2N0cF9nZXRhZGRyZXNzZXMs
IGFkZHIpICsgYWN0dWFsOwogCQlicmVhazsKIAl9CiAJY2FzZSBTQ1RQX1BFRVJfQUREUl9QQVJB
TVM6CkBAIC0zMTMwLDExICszMDc5LDEyIEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNv
LCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3QgKm9wdHNpemUsCiAJCX0gZWxzZSB7
CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJ
CQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0J
CQkgICAgKHBhZGRycC0+c3BwX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkgeworCQkJ
ICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAg
ICAgKHBhZGRycC0+c3BwX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQkv
KiBVc2UgZW5kcG9pbnQgZGVmYXVsdHMgKi8KIAkJCQlTQ1RQX0lOUF9STE9DSyhpbnApOwogCQkJ
CXBhZGRycC0+c3BwX3BhdGhtYXhyeHQgPSBpbnAtPnNjdHBfZXAuZGVmX25ldF9mYWlsdXJlOwot
CQkJCXBhZGRycC0+c3BwX2hiaW50ZXJ2YWwgPSBUSUNLU19UT19NU0VDKGlucC0+c2N0cF9lcC5z
Y3RwX3RpbWVvdXR0aWNrc1tTQ1RQX1RJTUVSX0hFQVJUQkVBVF0pOworCQkJCXBhZGRycC0+c3Bw
X2hiaW50ZXJ2YWwgPSBzY3RwX3RpY2tzX3RvX21zZWNzKGlucC0+c2N0cF9lcC5zY3RwX3RpbWVv
dXR0aWNrc1tTQ1RQX1RJTUVSX0hFQVJUQkVBVF0pOwogCQkJCXBhZGRycC0+c3BwX2Fzc29jX2lk
ID0gU0NUUF9GVVRVUkVfQVNTT0M7CiAJCQkJLyogZ2V0IGlucCdzIGRlZmF1bHQgKi8KIAkJCQlp
ZiAoaW5wLT5zY3RwX2VwLmRlZmF1bHRfZHNjcCAmIDB4MDEpIHsKQEAgLTMyOTgsNTkgKzMyNDgs
NzkgQEAgc2N0cF9nZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpv
cHR2YWwsIHNpemVfdCAqb3B0c2l6ZSwKIAkJc3N0YXQtPnNzdGF0X2luc3RybXMgPSBzdGNiLT5h
c29jLnN0cmVhbWluY250OwogCQlzc3RhdC0+c3N0YXRfb3V0c3RybXMgPSBzdGNiLT5hc29jLnN0
cmVhbW91dGNudDsKIAkJc3N0YXQtPnNzdGF0X2ZyYWdtZW50YXRpb25fcG9pbnQgPSBzY3RwX2dl
dF9mcmFnX3BvaW50KHN0Y2IsICZzdGNiLT5hc29jKTsKKwkJbmV0ID0gc3RjYi0+YXNvYy5wcmlt
YXJ5X2Rlc3RpbmF0aW9uOworCQlpZiAobmV0ICE9IE5VTEwpIHsKICNpZmRlZiBIQVZFX1NBX0xF
TgotCQltZW1jcHkoJnNzdGF0LT5zc3RhdF9wcmltYXJ5LnNwaW5mb19hZGRyZXNzLAotCQkgICAg
ICAgJnN0Y2ItPmFzb2MucHJpbWFyeV9kZXN0aW5hdGlvbi0+cm8uX2xfYWRkciwKLQkJICAgICAg
ICgoc3RydWN0IHNvY2thZGRyICopKCZzdGNiLT5hc29jLnByaW1hcnlfZGVzdGluYXRpb24tPnJv
Ll9sX2FkZHIpKS0+c2FfbGVuKTsKLSNlbHNlCi0JCWlmIChzdGNiLT5hc29jLnByaW1hcnlfZGVz
dGluYXRpb24tPnJvLl9sX2FkZHIuc2Euc2FfZmFtaWx5ID09IEFGX0lORVQpIHsKIAkJCW1lbWNw
eSgmc3N0YXQtPnNzdGF0X3ByaW1hcnkuc3BpbmZvX2FkZHJlc3MsCi0JCQkgICAgICAgJnN0Y2It
PmFzb2MucHJpbWFyeV9kZXN0aW5hdGlvbi0+cm8uX2xfYWRkciwKLQkJCSAgICAgICBzaXplb2Yo
c3RydWN0IHNvY2thZGRyX2luKSk7Ci0JCX0gZWxzZSB7Ci0JCQltZW1jcHkoJnNzdGF0LT5zc3Rh
dF9wcmltYXJ5LnNwaW5mb19hZGRyZXNzLAotCQkJICAgICAgICZzdGNiLT5hc29jLnByaW1hcnlf
ZGVzdGluYXRpb24tPnJvLl9sX2FkZHIsCi0JCQkgICAgICAgc2l6ZW9mKHN0cnVjdCBzb2NrYWRk
cl9pbjYpKTsKLQkJfQorCQkJICAgICAgICZuZXQtPnJvLl9sX2FkZHIsCisJCQkgICAgICAgKChz
dHJ1Y3Qgc29ja2FkZHIgKikoJm5ldC0+cm8uX2xfYWRkcikpLT5zYV9sZW4pOworI2Vsc2UKKwkJ
CXN3aXRjaCAoc3RjYi0+YXNvYy5wcmltYXJ5X2Rlc3RpbmF0aW9uLT5yby5fbF9hZGRyLnNhLnNh
X2ZhbWlseSkgeworI2lmIGRlZmluZWQoSU5FVCkKKwkJCWNhc2UgQUZfSU5FVDoKKwkJCQltZW1j
cHkoJnNzdGF0LT5zc3RhdF9wcmltYXJ5LnNwaW5mb19hZGRyZXNzLAorCQkJCSAgICAgICAmbmV0
LT5yby5fbF9hZGRyLAorCQkJCSAgICAgICBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7CisJ
CQkJYnJlYWs7CiAjZW5kaWYKLQkJbmV0ID0gc3RjYi0+YXNvYy5wcmltYXJ5X2Rlc3RpbmF0aW9u
OwotCQkoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKSZzc3RhdC0+c3N0YXRfcHJpbWFyeS5zcGluZm9f
YWRkcmVzcyktPnNpbl9wb3J0ID0gc3RjYi0+cnBvcnQ7Ci0JCS8qCi0JCSAqIEFnYWluIHRoZSB1
c2VyIGNhbiBnZXQgaW5mbyBmcm9tIHNjdHBfY29uc3RhbnRzLmgKLQkJICogZm9yIHdoYXQgdGhl
IHN0YXRlIG9mIHRoZSBuZXR3b3JrIGlzLgotCQkgKi8KLQkJaWYgKG5ldC0+ZGVzdF9zdGF0ZSAm
IFNDVFBfQUREUl9VTkNPTkZJUk1FRCkgewotCQkJLyogSXQncyB1bmNvbmZpcm1lZCAqLwotCQkJ
c3N0YXQtPnNzdGF0X3ByaW1hcnkuc3BpbmZvX3N0YXRlID0gU0NUUF9VTkNPTkZJUk1FRDsKLQkJ
fSBlbHNlIGlmIChuZXQtPmRlc3Rfc3RhdGUgJiBTQ1RQX0FERFJfUkVBQ0hBQkxFKSB7Ci0JCQkv
KiBJdCdzIGFjdGl2ZSAqLwotCQkJc3N0YXQtPnNzdGF0X3ByaW1hcnkuc3BpbmZvX3N0YXRlID0g
U0NUUF9BQ1RJVkU7Ci0JCX0gZWxzZSB7Ci0JCQkvKiBJdCdzIGluYWN0aXZlICovCi0JCQlzc3Rh
dC0+c3N0YXRfcHJpbWFyeS5zcGluZm9fc3RhdGUgPSBTQ1RQX0lOQUNUSVZFOwotCQl9Ci0JCXNz
dGF0LT5zc3RhdF9wcmltYXJ5LnNwaW5mb19jd25kID0gbmV0LT5jd25kOwotCQlzc3RhdC0+c3N0
YXRfcHJpbWFyeS5zcGluZm9fc3J0dCA9IG5ldC0+bGFzdHNhID4+IFNDVFBfUlRUX1NISUZUOwot
CQlzc3RhdC0+c3N0YXRfcHJpbWFyeS5zcGluZm9fcnRvID0gbmV0LT5SVE87Ci0JCXNzdGF0LT5z
c3RhdF9wcmltYXJ5LnNwaW5mb19tdHUgPSBuZXQtPm10dTsKLQkJc3dpdGNoIChzdGNiLT5hc29j
LnByaW1hcnlfZGVzdGluYXRpb24tPnJvLl9sX2FkZHIuc2Euc2FfZmFtaWx5KSB7CisjaWYgZGVm
aW5lZChJTkVUNikKKwkJCWNhc2UgQUZfSU5FVDY6CisJCQkJbWVtY3B5KCZzc3RhdC0+c3N0YXRf
cHJpbWFyeS5zcGluZm9fYWRkcmVzcywKKwkJCQkgICAgICAgJm5ldC0+cm8uX2xfYWRkciwKKwkJ
CQkgICAgICAgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKTsKKwkJCQlicmVhazsKKyNlbmRp
ZgorI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJCWNhc2UgQUZfQ09OTjoKKwkJCQltZW1j
cHkoJnNzdGF0LT5zc3RhdF9wcmltYXJ5LnNwaW5mb19hZGRyZXNzLAorCQkJCSAgICAgICAmbmV0
LT5yby5fbF9hZGRyLAorCQkJCSAgICAgICBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2Nvbm4pKTsK
KwkJCQlicmVhazsKKyNlbmRpZgorCQkJZGVmYXVsdDoKKwkJCQlicmVhazsKKwkJCX0KKyNlbmRp
ZgorCQkJKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKikmc3N0YXQtPnNzdGF0X3ByaW1hcnkuc3BpbmZv
X2FkZHJlc3MpLT5zaW5fcG9ydCA9IHN0Y2ItPnJwb3J0OworCQkJLyoKKwkJCSAqIEFnYWluIHRo
ZSB1c2VyIGNhbiBnZXQgaW5mbyBmcm9tIHNjdHBfY29uc3RhbnRzLmgKKwkJCSAqIGZvciB3aGF0
IHRoZSBzdGF0ZSBvZiB0aGUgbmV0d29yayBpcy4KKwkJCSAqLworCQkJaWYgKG5ldC0+ZGVzdF9z
dGF0ZSAmIFNDVFBfQUREUl9VTkNPTkZJUk1FRCkgeworCQkJCS8qIEl0J3MgdW5jb25maXJtZWQg
Ki8KKwkJCQlzc3RhdC0+c3N0YXRfcHJpbWFyeS5zcGluZm9fc3RhdGUgPSBTQ1RQX1VOQ09ORklS
TUVEOworCQkJfSBlbHNlIGlmIChuZXQtPmRlc3Rfc3RhdGUgJiBTQ1RQX0FERFJfUkVBQ0hBQkxF
KSB7CisJCQkJLyogSXQncyBhY3RpdmUgKi8KKwkJCQlzc3RhdC0+c3N0YXRfcHJpbWFyeS5zcGlu
Zm9fc3RhdGUgPSBTQ1RQX0FDVElWRTsKKwkJCX0gZWxzZSB7CisJCQkJLyogSXQncyBpbmFjdGl2
ZSAqLworCQkJCXNzdGF0LT5zc3RhdF9wcmltYXJ5LnNwaW5mb19zdGF0ZSA9IFNDVFBfSU5BQ1RJ
VkU7CisJCQl9CisJCQlzc3RhdC0+c3N0YXRfcHJpbWFyeS5zcGluZm9fY3duZCA9IG5ldC0+Y3du
ZDsKKwkJCXNzdGF0LT5zc3RhdF9wcmltYXJ5LnNwaW5mb19zcnR0ID0gbmV0LT5sYXN0c2EgPj4g
U0NUUF9SVFRfU0hJRlQ7CisJCQlzc3RhdC0+c3N0YXRfcHJpbWFyeS5zcGluZm9fcnRvID0gbmV0
LT5SVE87CisJCQlzc3RhdC0+c3N0YXRfcHJpbWFyeS5zcGluZm9fbXR1ID0gbmV0LT5tdHU7CisJ
CQlzd2l0Y2ggKHN0Y2ItPmFzb2MucHJpbWFyeV9kZXN0aW5hdGlvbi0+cm8uX2xfYWRkci5zYS5z
YV9mYW1pbHkpIHsKICNpZiBkZWZpbmVkKElORVQpCi0JCWNhc2UgQUZfSU5FVDoKLQkJCXNzdGF0
LT5zc3RhdF9wcmltYXJ5LnNwaW5mb19tdHUgLT0gU0NUUF9NSU5fVjRfT1ZFUkhFQUQ7Ci0JCQli
cmVhazsKKwkJCWNhc2UgQUZfSU5FVDoKKwkJCQlzc3RhdC0+c3N0YXRfcHJpbWFyeS5zcGluZm9f
bXR1IC09IFNDVFBfTUlOX1Y0X09WRVJIRUFEOworCQkJCWJyZWFrOwogI2VuZGlmCiAjaWYgZGVm
aW5lZChJTkVUNikKLQkJY2FzZSBBRl9JTkVUNjoKLQkJCXNzdGF0LT5zc3RhdF9wcmltYXJ5LnNw
aW5mb19tdHUgLT0gU0NUUF9NSU5fT1ZFUkhFQUQ7Ci0JCQlicmVhazsKKwkJCWNhc2UgQUZfSU5F
VDY6CisJCQkJc3N0YXQtPnNzdGF0X3ByaW1hcnkuc3BpbmZvX210dSAtPSBTQ1RQX01JTl9PVkVS
SEVBRDsKKwkJCQlicmVhazsKICNlbmRpZgogI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKLQkJ
Y2FzZSBBRl9DT05OOgotCQkJc3N0YXQtPnNzdGF0X3ByaW1hcnkuc3BpbmZvX210dSAtPSBzaXpl
b2Yoc3RydWN0IHNjdHBoZHIpOwotCQkJYnJlYWs7CisJCQljYXNlIEFGX0NPTk46CisJCQkJc3N0
YXQtPnNzdGF0X3ByaW1hcnkuc3BpbmZvX210dSAtPSBzaXplb2Yoc3RydWN0IHNjdHBoZHIpOwor
CQkJCWJyZWFrOwogI2VuZGlmCi0JCWRlZmF1bHQ6Ci0JCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJ
CQkJYnJlYWs7CisJCQl9CisJCX0gZWxzZSB7CisJCQltZW1zZXQoJnNzdGF0LT5zc3RhdF9wcmlt
YXJ5LCAwLCBzaXplb2Yoc3RydWN0IHNjdHBfcGFkZHJpbmZvKSk7CiAJCX0KIAkJc3N0YXQtPnNz
dGF0X3ByaW1hcnkuc3BpbmZvX2Fzc29jX2lkID0gc2N0cF9nZXRfYXNzb2NpZChzdGNiKTsKIAkJ
U0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwpAQCAtMzM3Miw3ICszMzQyLDggQEAgc2N0cF9nZXRvcHQo
c3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCAqb3B0
c2l6ZSwKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxB
R1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1Nf
SU5fVENQUE9PTCkgfHwKLQkJCSAgICAoc3J0by0+c3J0b19hc3NvY19pZCA9PSBTQ1RQX0ZVVFVS
RV9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VE
UFRZUEUpICYmCisJCQkgICAgIChzcnRvLT5zcnRvX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FT
U09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9STE9DSyhpbnApOwogCQkJCXNydG8tPnNydG9faW5pdGlh
bCA9IGlucC0+c2N0cF9lcC5pbml0aWFsX3J0bzsKIAkJCQlzcnRvLT5zcnRvX21heCA9IGlucC0+
c2N0cF9lcC5zY3RwX21heHJ0bzsKQEAgLTM0MTksNyArMzM5MCw3IEBAIHNjdHBfZ2V0b3B0KHN0
cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3QgKm9wdHNp
emUsCiAJCVNDVFBfRklORF9TVENCKGlucCwgc3RjYiwgc2Fzb2MtPnNhc29jX2Fzc29jX2lkKTsK
IAogCQlpZiAoc3RjYikgewotCQkJc2Fzb2MtPnNhc29jX2Nvb2tpZV9saWZlID0gVElDS1NfVE9f
TVNFQyhzdGNiLT5hc29jLmNvb2tpZV9saWZlKTsKKwkJCXNhc29jLT5zYXNvY19jb29raWVfbGlm
ZSA9IHNjdHBfdGlja3NfdG9fbXNlY3Moc3RjYi0+YXNvYy5jb29raWVfbGlmZSk7CiAJCQlzYXNv
Yy0+c2Fzb2NfYXNvY21heHJ4dCA9IHN0Y2ItPmFzb2MubWF4X3NlbmRfdGltZXM7CiAJCQlzYXNv
Yy0+c2Fzb2NfbnVtYmVyX3BlZXJfZGVzdGluYXRpb25zID0gc3RjYi0+YXNvYy5udW1uZXRzOwog
CQkJc2Fzb2MtPnNhc29jX3BlZXJfcnduZCA9IHN0Y2ItPmFzb2MucGVlcnNfcnduZDsKQEAgLTM0
MjgsOSArMzM5OSwxMCBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5h
bWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChp
bnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAt
PnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChzYXNv
Yy0+c2Fzb2NfYXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAt
PnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoc2Fzb2Mt
PnNhc29jX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9S
TE9DSyhpbnApOwotCQkJCXNhc29jLT5zYXNvY19jb29raWVfbGlmZSA9IFRJQ0tTX1RPX01TRUMo
aW5wLT5zY3RwX2VwLmRlZl9jb29raWVfbGlmZSk7CisJCQkJc2Fzb2MtPnNhc29jX2Nvb2tpZV9s
aWZlID0gc2N0cF90aWNrc190b19tc2VjcyhpbnAtPnNjdHBfZXAuZGVmX2Nvb2tpZV9saWZlKTsK
IAkJCQlzYXNvYy0+c2Fzb2NfYXNvY21heHJ4dCA9IGlucC0+c2N0cF9lcC5tYXhfc2VuZF90aW1l
czsKIAkJCQlzYXNvYy0+c2Fzb2NfbnVtYmVyX3BlZXJfZGVzdGluYXRpb25zID0gMDsKIAkJCQlz
YXNvYy0+c2Fzb2NfcGVlcl9yd25kID0gMDsKQEAgLTM0NTksNyArMzQzMSw4IEBAIHNjdHBfZ2V0
b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qg
Km9wdHNpemUsCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENC
X0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZM
QUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKHNfaW5mby0+c2luZm9fYXNzb2NfaWQgPT0gU0NU
UF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9G
TEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoc19pbmZvLT5zaW5mb19hc3NvY19pZCA9PSBTQ1RQ
X0ZVVFVSRV9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfUkxPQ0soaW5wKTsKIAkJCQltZW1jcHko
c19pbmZvLCAmaW5wLT5kZWZfc2VuZCwgc2l6ZW9mKGlucC0+ZGVmX3NlbmQpKTsKIAkJCQlTQ1RQ
X0lOUF9SVU5MT0NLKGlucCk7CkBAIC0zNTg0LDcgKzM1NTcsOCBAQCBzY3RwX2dldG9wdChzdHJ1
Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRzaXpl
LAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19U
Q1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9U
Q1BQT09MKSB8fAotCQkJICAgIChzY2FjdC0+c2NhY3RfYXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVf
QVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBU
WVBFKSAmJgorCQkJICAgICAoc2NhY3QtPnNjYWN0X2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FT
U09DKSkpIHsKIAkJCQkvKiBnZXQgdGhlIGVuZHBvaW50IGFjdGl2ZSBrZXkgKi8KIAkJCQlTQ1RQ
X0lOUF9STE9DSyhpbnApOwogCQkJCXNjYWN0LT5zY2FjdF9rZXludW1iZXIgPSBpbnAtPnNjdHBf
ZXAuZGVmYXVsdF9rZXlpZDsKQEAgLTM2MjYsNyArMzYwMCw4IEBAIHNjdHBfZ2V0b3B0KHN0cnVj
dCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3QgKm9wdHNpemUs
CiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RD
UFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RD
UFBPT0wpIHx8Ci0JCQkgICAgKHNhYy0+Z2F1dGhfYXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNT
T0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBF
KSAmJgorCQkJICAgICAoc2FjLT5nYXV0aF9hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykp
KSB7CiAJCQkJLyogZ2V0IG9mZiB0aGUgZW5kcG9pbnQgKi8KIAkJCQlTQ1RQX0lOUF9STE9DSyhp
bnApOwogCQkJCWNoa2xpc3QgPSBpbnAtPnNjdHBfZXAubG9jYWxfYXV0aF9jaHVua3M7CkBAIC0z
NzU4LDcgKzM3MzMsOCBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5h
bWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRzaXplLAogCQkJfSBlbHNlIHsKIAkJCQlpZiAo
KGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkJICAgIChp
bnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJCSAgICAo
ZXZlbnQtPnNlX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkgeworCQkJCSAgICAoKGlu
cC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkJICAgICAoZXZl
bnQtPnNlX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQkJU0NUUF9JTlBf
UkxPQ0soaW5wKTsKIAkJCQkJZXZlbnQtPnNlX29uID0gc2N0cF9pc19mZWF0dXJlX29uKGlucCwg
ZXZlbnRfdHlwZSk7CiAJCQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKQEAgLTM4MzEsNyArMzgw
Nyw4IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAq
b3B0dmFsLCBzaXplX3QgKm9wdHNpemUsCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9m
bGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFn
cyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKGluZm8tPnNuZF9hc3Nv
Y19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAm
IFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgIChpbmZvLT5zbmRfYXNzb2NfaWQg
PT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJ
aW5mby0+c25kX3NpZCA9IGlucC0+ZGVmX3NlbmQuc2luZm9fc3RyZWFtOwogCQkJCWluZm8tPnNu
ZF9mbGFncyA9IGlucC0+ZGVmX3NlbmQuc2luZm9fZmxhZ3M7CkBAIC0zODYzLDcgKzM4NDAsOCBA
QCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZh
bCwgc2l6ZV90ICpvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3Mg
JiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBT
Q1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChpbmZvLT5wcl9hc3NvY19pZCA9
PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBf
UENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgIChpbmZvLT5wcl9hc3NvY19pZCA9PSBTQ1RQ
X0ZVVFVSRV9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfUkxPQ0soaW5wKTsKIAkJCQlpbmZvLT5w
cl9wb2xpY3kgPSBQUl9TQ1RQX1BPTElDWShpbnAtPmRlZl9zZW5kLnNpbmZvX2ZsYWdzKTsKIAkJ
CQlpbmZvLT5wcl92YWx1ZSA9IGlucC0+ZGVmX3NlbmQuc2luZm9fdGltZXRvbGl2ZTsKQEAgLTM5
ODQsNyArMzk2Miw4IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFt
ZSwgdm9pZCAqb3B0dmFsLCBzaXplX3QgKm9wdHNpemUsCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlu
cC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+
c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKHRobGRz
LT5zcHRfYXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNj
dHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAodGhsZHMtPnNw
dF9hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpKSB7CiAJCQkJLyogVXNlIGVuZHBvaW50
IGRlZmF1bHRzICovCiAJCQkJU0NUUF9JTlBfUkxPQ0soaW5wKTsKIAkJCQl0aGxkcy0+c3B0X3Bh
dGhtYXhyeHQgPSBpbnAtPnNjdHBfZXAuZGVmX25ldF9mYWlsdXJlOwpAQCAtNDEwMiw3ICs0MDgx
LDggQEAgc2N0cF9nZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpv
cHR2YWwsIHNpemVfdCAqb3B0c2l6ZSwKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2Zs
YWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdz
ICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAgICAoZW5jYXBzLT5zdWVfYXNz
b2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3Mg
JiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoZW5jYXBzLT5zdWVfYXNzb2Nf
aWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJ
CQkJZW5jYXBzLT5zdWVfcG9ydCA9IGlucC0+c2N0cF9lcC5wb3J0OwogCQkJCVNDVFBfSU5QX1JV
TkxPQ0soaW5wKTsKQEAgLTQxMjksNyArNDEwOSw4IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2Nr
ZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3QgKm9wdHNpemUsCiAJCX0g
ZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUp
IHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wp
IHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAg
ICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAg
IChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1JM
T0NLKGlucCk7CiAJCQkJYXYtPmFzc29jX3ZhbHVlID0gaW5wLT5lY25fc3VwcG9ydGVkOwogCQkJ
CVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKQEAgLTQxNTYsNyArNDEzNyw4IEBAIHNjdHBfZ2V0b3B0
KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3QgKm9w
dHNpemUsCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZM
QUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdT
X0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NP
QykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUp
ICYmCisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkgewogCQkJ
CVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJYXYtPmFzc29jX3ZhbHVlID0gaW5wLT5wcnNjdHBf
c3VwcG9ydGVkOwogCQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKQEAgLTQxODMsNyArNDE2NSw4
IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0
dmFsLCBzaXplX3QgKm9wdHNpemUsCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFn
cyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAm
IFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9PSBT
Q1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENC
X0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVf
QVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJYXYtPmFzc29jX3ZhbHVl
ID0gaW5wLT5hdXRoX3N1cHBvcnRlZDsKIAkJCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CkBAIC00
MjEwLDcgKzQxOTMsOCBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5h
bWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChp
bnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAt
PnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChhdi0+
YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxh
Z3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoYXYtPmFzc29jX2lkID09
IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9STE9DSyhpbnApOwogCQkJCWF2
LT5hc3NvY192YWx1ZSA9IGlucC0+YXNjb25mX3N1cHBvcnRlZDsKIAkJCQlTQ1RQX0lOUF9SVU5M
T0NLKGlucCk7CkBAIC00MjM3LDcgKzQyMjEsOCBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0
ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRzaXplLAogCQl9IGVs
c2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8
fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8
fAotCQkJICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAg
KChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAo
YXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9STE9D
SyhpbnApOwogCQkJCWF2LT5hc3NvY192YWx1ZSA9IGlucC0+cmVjb25maWdfc3VwcG9ydGVkOwog
CQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKQEAgLTQyNjQsNyArNDI0OSw4IEBAIHNjdHBfZ2V0
b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qg
Km9wdHNpemUsCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENC
X0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZM
QUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9B
U1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZ
UEUpICYmCisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkgewog
CQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJYXYtPmFzc29jX3ZhbHVlID0gaW5wLT5ucnNh
Y2tfc3VwcG9ydGVkOwogCQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKQEAgLTQyOTEsNyArNDI3
Nyw4IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAq
b3B0dmFsLCBzaXplX3QgKm9wdHNpemUsCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9m
bGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFn
cyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9
PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBf
UENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRV
UkVfQVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJYXYtPmFzc29jX3Zh
bHVlID0gaW5wLT5wa3Rkcm9wX3N1cHBvcnRlZDsKIAkJCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7
CkBAIC00MzE4LDcgKzQzMDUsOCBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50
IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRzaXplLAogCQl9IGVsc2UgewogCQkJ
aWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAg
IChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAg
IChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNj
dHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoYXYtPmFzc29j
X2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9STE9DSyhpbnApOwog
CQkJCWF2LT5hc3NvY192YWx1ZSA9ICh1aW50MzJfdClpbnAtPmxvY2FsX3N0cnJlc2V0X3N1cHBv
cnQ7CiAJCQkJU0NUUF9JTlBfUlVOTE9DSyhpbnApOwpAQCAtNDQyMCw3ICs0NDA4LDggQEAgc2N0
cF9nZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNp
emVfdCAqb3B0c2l6ZSwKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NU
UF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9Q
Q0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVU
VVJFX0FTU09DKSkgeworCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1Nf
VURQVFlQRSkgJiYKKwkJCSAgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykp
KSB7CiAJCQkJU0NUUF9JTlBfUkxPQ0soaW5wKTsKIAkJCQlhdi0+YXNzb2NfdmFsdWUgPSBpbnAt
Pm1heF9jd25kOwogCQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKQEAgLTQ0NDUsNyArNDQzNCw3
IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0
dmFsLCBzaXplX3QgKm9wdHNpemUsCiAJcmV0dXJuIChlcnJvcik7CiB9CiAKLSNpZiBkZWZpbmVk
KF9fUGFuZGFfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmIGRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKIGludAogI2Vsc2UKIHN0YXRpYyBpbnQKQEAgLTQ0NjAsMTMgKzQ0NDksMTEgQEAg
c2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWws
IHNpemVfdCBvcHRzaXplLAogCXVpbnQzMl90IHZyZl9pZDsKIAogCWlmIChvcHR2YWwgPT0gTlVM
TCkgewotCQlTQ1RQX1BSSU5URigib3B0dmFsIGlzIE5VTExcbiIpOwogCQlTQ1RQX0xUUkFDRV9F
UlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBFSU5WQUwpOwog
CQlyZXR1cm4gKEVJTlZBTCk7CiAJfQogCWlucCA9IChzdHJ1Y3Qgc2N0cF9pbnBjYiAqKXNvLT5z
b19wY2I7CiAJaWYgKGlucCA9PSBOVUxMKSB7Ci0JCVNDVFBfUFJJTlRGKCJpbnAgaXMgTlVMTD9c
biIpOwogCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1ND
VFBfVVNSUkVRLCBFSU5WQUwpOwogCQlyZXR1cm4gKEVJTlZBTCk7CiAJfQpAQCAtNDUzNiw3ICs0
NTIzLDcgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lk
ICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQkJICogVGhlIHZhbHVlIGlzIGluIHRpY2tzLiBO
b3RlIHRoaXMgZG9lcyBub3QgZWZmZWN0CiAJCQkgKiBvbGQgYXNzb2NpYXRpb25zLCBvbmx5IG5l
dyBvbmVzLgogCQkJICovCi0JCQlpbnAtPnNjdHBfZXAuYXV0b19jbG9zZV90aW1lID0gU0VDX1RP
X1RJQ0tTKCptb3B0KTsKKwkJCWlucC0+c2N0cF9lcC5hdXRvX2Nsb3NlX3RpbWUgPSBzY3RwX3Nl
Y3NfdG9fdGlja3MoKm1vcHQpOwogCQkJYnJlYWs7CiAJCX0KIAkJU0NUUF9JTlBfV0xPQ0soaW5w
KTsKQEAgLTQ2MTUsNyArNDYwMiw4IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBp
bnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJfSBlbHNlIHsKIAkJ
CWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAg
ICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAg
ICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkgeworCQkJICAgICgoaW5wLT5z
Y3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAgKGF2LT5hc3Nv
Y19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfV0xPQ0soaW5wKTsK
IAkJCQlpZiAoYXYtPmFzc29jX3ZhbHVlID09IDApIHsKIAkJCQkJaW5wLT5pZGF0YV9zdXBwb3J0
ZWQgPSAwOwpAQCAtNDY1NCwxNCArNDY0MiwxNiBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0
ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90IG9wdHNpemUsCiAJCQl9IGVs
c2UgewogCQkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkg
fHwKIAkJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wp
IHx8Ci0JCQkJICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpIHx8Ci0JCQkJ
ICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSB7CisJCQkJICAgICgoaW5wLT5z
Y3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCQkgICAgICgoYXYtPmFz
c29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSB8fAorCQkJCSAgICAgIChhdi0+YXNzb2NfaWQg
PT0gU0NUUF9BTExfQVNTT0MpKSkpIHsKIAkJCQkJU0NUUF9JTlBfV0xPQ0soaW5wKTsKIAkJCQkJ
aW5wLT5zY3RwX2NtdF9vbl9vZmYgPSBhdi0+YXNzb2NfdmFsdWU7CiAJCQkJCVNDVFBfSU5QX1dV
TkxPQ0soaW5wKTsKIAkJCQl9Ci0JCQkJaWYgKChhdi0+YXNzb2NfaWQgPT0gU0NUUF9DVVJSRU5U
X0FTU09DKSB8fAotCQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkgewor
CQkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJ
CQkgICAgKChhdi0+YXNzb2NfaWQgPT0gU0NUUF9DVVJSRU5UX0FTU09DKSB8fAorCQkJCSAgICAg
KGF2LT5hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpKSB7CiAJCQkJCVNDVFBfSU5QX1JMT0NL
KGlucCk7CiAJCQkJCUxJU1RfRk9SRUFDSChzdGNiLCAmaW5wLT5zY3RwX2Fzb2NfbGlzdCwgc2N0
cF90Y2JsaXN0KSB7CiAJCQkJCQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwpAQCAtNDcwMywxNCArNDY5
MywxNiBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQg
Km9wdHZhbCwgc2l6ZV90IG9wdHNpemUsCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9m
bGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFn
cyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9
PSBTQ1RQX0ZVVFVSRV9BU1NPQykgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfQUxM
X0FTU09DKSkgeworCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQ
VFlQRSkgJiYKKwkJCSAgICAgKChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpIHx8
CisJCQkgICAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkpKSB7CiAJCQkJU0NU
UF9JTlBfV0xPQ0soaW5wKTsKIAkJCQlpbnAtPnNjdHBfZXAuc2N0cF9kZWZhdWx0X2NjX21vZHVs
ZSA9IGF2LT5hc3NvY192YWx1ZTsKIAkJCQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7CiAJCQl9Ci0J
CQlpZiAoKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0NVUlJFTlRfQVNTT0MpIHx8Ci0JCQkgICAgKGF2
LT5hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpIHsKKwkJCWlmICgoaW5wLT5zY3RwX2ZsYWdz
ICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAoKGF2LT5hc3NvY19pZCA9PSBT
Q1RQX0NVUlJFTlRfQVNTT0MpIHx8CisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9BTExf
QVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJTElTVF9GT1JFQUNIKHN0
Y2IsICZpbnAtPnNjdHBfYXNvY19saXN0LCBzY3RwX3RjYmxpc3QpIHsKIAkJCQkJU0NUUF9UQ0Jf
TE9DSyhzdGNiKTsKQEAgLTQ3MzUsNyArNDcyNyw4IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2Nr
ZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJU0NU
UF9DSEVDS19BTkRfQ0FTVChjY19vcHQsIG9wdHZhbCwgc3RydWN0IHNjdHBfY2Nfb3B0aW9uLCBv
cHRzaXplKTsKIAkJU0NUUF9GSU5EX1NUQ0IoaW5wLCBzdGNiLCBjY19vcHQtPmFpZF92YWx1ZS5h
c3NvY19pZCk7CiAJCWlmIChzdGNiID09IE5VTEwpIHsKLQkJCWlmIChjY19vcHQtPmFpZF92YWx1
ZS5hc3NvY19pZCA9PSBTQ1RQX0NVUlJFTlRfQVNTT0MpIHsKKwkJCWlmICgoaW5wLT5zY3RwX2Zs
YWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAoY2Nfb3B0LT5haWRfdmFs
dWUuYXNzb2NfaWQgPT0gU0NUUF9DVVJSRU5UX0FTU09DKSkgewogCQkJCVNDVFBfSU5QX1JMT0NL
KGlucCk7CiAJCQkJTElTVF9GT1JFQUNIKHN0Y2IsICZpbnAtPnNjdHBfYXNvY19saXN0LCBzY3Rw
X3RjYmxpc3QpIHsKIAkJCQkJU0NUUF9UQ0JfTE9DSyhzdGNiKTsKQEAgLTQ3NzYsMjkgKzQ3Njks
MzUgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpv
cHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQl9CiAJCVNDVFBfRklORF9TVENCKGlucCwgc3RjYiwg
YXYtPmFzc29jX2lkKTsKIAkJaWYgKHN0Y2IpIHsKKwkJCVNDVFBfVENCX1NFTkRfTE9DSyhzdGNi
KTsKIAkJCXN0Y2ItPmFzb2Muc3NfZnVuY3Rpb25zLnNjdHBfc3NfY2xlYXIoc3RjYiwgJnN0Y2It
PmFzb2MsIDEsIDEpOwogCQkJc3RjYi0+YXNvYy5zc19mdW5jdGlvbnMgPSBzY3RwX3NzX2Z1bmN0
aW9uc1thdi0+YXNzb2NfdmFsdWVdOwogCQkJc3RjYi0+YXNvYy5zdHJlYW1fc2NoZWR1bGluZ19t
b2R1bGUgPSBhdi0+YXNzb2NfdmFsdWU7CiAJCQlzdGNiLT5hc29jLnNzX2Z1bmN0aW9ucy5zY3Rw
X3NzX2luaXQoc3RjYiwgJnN0Y2ItPmFzb2MsIDEpOworCQkJU0NUUF9UQ0JfU0VORF9VTkxPQ0so
c3RjYik7CiAJCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlu
cC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+
c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKGF2LT5h
c3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09
IFNDVFBfQUxMX0FTU09DKSkgeworCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0Jf
RkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAgKChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVf
QVNTT0MpIHx8CisJCQkgICAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkpKSB7
CiAJCQkJU0NUUF9JTlBfV0xPQ0soaW5wKTsKIAkJCQlpbnAtPnNjdHBfZXAuc2N0cF9kZWZhdWx0
X3NzX21vZHVsZSA9IGF2LT5hc3NvY192YWx1ZTsKIAkJCQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7
CiAJCQl9Ci0JCQlpZiAoKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0NVUlJFTlRfQVNTT0MpIHx8Ci0J
CQkgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpIHsKKwkJCWlmICgoaW5wLT5z
Y3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAoKGF2LT5hc3Nv
Y19pZCA9PSBTQ1RQX0NVUlJFTlRfQVNTT0MpIHx8CisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0g
U0NUUF9BTExfQVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJTElTVF9G
T1JFQUNIKHN0Y2IsICZpbnAtPnNjdHBfYXNvY19saXN0LCBzY3RwX3RjYmxpc3QpIHsKIAkJCQkJ
U0NUUF9UQ0JfTE9DSyhzdGNiKTsKKwkJCQkJU0NUUF9UQ0JfU0VORF9MT0NLKHN0Y2IpOwogCQkJ
CQlzdGNiLT5hc29jLnNzX2Z1bmN0aW9ucy5zY3RwX3NzX2NsZWFyKHN0Y2IsICZzdGNiLT5hc29j
LCAxLCAxKTsKIAkJCQkJc3RjYi0+YXNvYy5zc19mdW5jdGlvbnMgPSBzY3RwX3NzX2Z1bmN0aW9u
c1thdi0+YXNzb2NfdmFsdWVdOwogCQkJCQlzdGNiLT5hc29jLnN0cmVhbV9zY2hlZHVsaW5nX21v
ZHVsZSA9IGF2LT5hc3NvY192YWx1ZTsKIAkJCQkJc3RjYi0+YXNvYy5zc19mdW5jdGlvbnMuc2N0
cF9zc19pbml0KHN0Y2IsICZzdGNiLT5hc29jLCAxKTsKKwkJCQkJU0NUUF9UQ0JfU0VORF9VTkxP
Q0soc3RjYik7CiAJCQkJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKIAkJCQl9CiAJCQkJU0NUUF9J
TlBfUlVOTE9DSyhpbnApOwpAQCAtNDgyMSw3ICs0ODIwLDggQEAgc2N0cF9zZXRvcHQoc3RydWN0
IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAog
CQkJfQogCQkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwogCQl9IGVsc2UgewotCQkJaWYgKGF2LT5h
c3NvY19pZCA9PSBTQ1RQX0NVUlJFTlRfQVNTT0MpIHsKKwkJCWlmICgoaW5wLT5zY3RwX2ZsYWdz
ICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAoYXYtPmFzc29jX2lkID09IFND
VFBfQ1VSUkVOVF9BU1NPQykpIHsKIAkJCQlTQ1RQX0lOUF9STE9DSyhpbnApOwogCQkJCUxJU1Rf
Rk9SRUFDSChzdGNiLCAmaW5wLT5zY3RwX2Fzb2NfbGlzdCwgc2N0cF90Y2JsaXN0KSB7CiAJCQkJ
CVNDVFBfVENCX0xPQ0soc3RjYik7CkBAIC00ODU5LDE0ICs0ODU5LDE2IEBAIHNjdHBfc2V0b3B0
KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0
c2l6ZSwKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxB
R1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1Nf
SU5fVENQUE9PTCkgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09D
KSB8fAotCQkJICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSB7CisJCQkgICAg
KChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAo
KGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykgfHwKKwkJCSAgICAgIChhdi0+YXNz
b2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSkpIHsKIAkJCQlTQ1RQX0lOUF9XTE9DSyhpbnApOwog
CQkJCWlucC0+c2N0cF9jb250ZXh0ID0gYXYtPmFzc29jX3ZhbHVlOwogCQkJCVNDVFBfSU5QX1dV
TkxPQ0soaW5wKTsKIAkJCX0KLQkJCWlmICgoYXYtPmFzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9B
U1NPQykgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkgeworCQkJ
aWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAg
ICgoYXYtPmFzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKKwkJCSAgICAgKGF2LT5h
c3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfUkxPQ0soaW5wKTsK
IAkJCQlMSVNUX0ZPUkVBQ0goc3RjYiwgJmlucC0+c2N0cF9hc29jX2xpc3QsIHNjdHBfdGNibGlz
dCkgewogCQkJCQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwpAQCAtNTAyMywxMCArNTAyNSwxMiBAQCBz
Y3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwg
c2l6ZV90IG9wdHNpemUsCiAJCVNDVFBfQ0hFQ0tfQU5EX0NBU1Qoc2Fjaywgb3B0dmFsLCBzdHJ1
Y3Qgc2N0cF9zYWNrX2luZm8sIG9wdHNpemUpOwogCQlTQ1RQX0ZJTkRfU1RDQihpbnAsIHN0Y2Is
IHNhY2stPnNhY2tfYXNzb2NfaWQpOwogCQlpZiAoc2Fjay0+c2Fja19kZWxheSkgewotCQkJaWYg
KHNhY2stPnNhY2tfZGVsYXkgPiBTQ1RQX01BWF9TQUNLX0RFTEFZKQotCQkJCXNhY2stPnNhY2tf
ZGVsYXkgPSBTQ1RQX01BWF9TQUNLX0RFTEFZOwotCQkJaWYgKE1TRUNfVE9fVElDS1Moc2Fjay0+
c2Fja19kZWxheSkgPCAxKSB7Ci0JCQkJc2Fjay0+c2Fja19kZWxheSA9IFRJQ0tTX1RPX01TRUMo
MSk7CisJCQlpZiAoc2Fjay0+c2Fja19kZWxheSA+IFNDVFBfTUFYX1NBQ0tfREVMQVkpIHsKKwkJ
CQllcnJvciA9IEVJTlZBTDsKKwkJCQlpZiAoc3RjYiAhPSBOVUxMKSB7CisJCQkJCVNDVFBfVENC
X1VOTE9DSyhzdGNiKTsKKwkJCQl9CisJCQkJYnJlYWs7CiAJCQl9CiAJCX0KIAkJaWYgKHN0Y2Ip
IHsKQEAgLTUwNDAsMTkgKzUwNDQsMjEgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28s
IGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQl9IGVsc2Ugewog
CQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJ
ICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJ
ICAgIChzYWNrLT5zYWNrX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSB8fAotCQkJICAg
IChzYWNrLT5zYWNrX2Fzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkgeworCQkJICAgICgoaW5w
LT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAgKChzYWNr
LT5zYWNrX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSB8fAorCQkJICAgICAgKHNhY2st
PnNhY2tfYXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSkpIHsKIAkJCQlTQ1RQX0lOUF9XTE9D
SyhpbnApOwogCQkJCWlmIChzYWNrLT5zYWNrX2RlbGF5KSB7Ci0JCQkJCWlucC0+c2N0cF9lcC5z
Y3RwX3RpbWVvdXR0aWNrc1tTQ1RQX1RJTUVSX1JFQ1ZdID0gTVNFQ19UT19USUNLUyhzYWNrLT5z
YWNrX2RlbGF5KTsKKwkJCQkJaW5wLT5zY3RwX2VwLnNjdHBfdGltZW91dHRpY2tzW1NDVFBfVElN
RVJfUkVDVl0gPSBzY3RwX21zZWNzX3RvX3RpY2tzKHNhY2stPnNhY2tfZGVsYXkpOwogCQkJCX0K
IAkJCQlpZiAoc2Fjay0+c2Fja19mcmVxKSB7CiAJCQkJCWlucC0+c2N0cF9lcC5zY3RwX3NhY2tf
ZnJlcSA9IHNhY2stPnNhY2tfZnJlcTsKIAkJCQl9CiAJCQkJU0NUUF9JTlBfV1VOTE9DSyhpbnAp
OwogCQkJfQotCQkJaWYgKChzYWNrLT5zYWNrX2Fzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NP
QykgfHwKLQkJCSAgICAoc2Fjay0+c2Fja19hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpIHsK
KwkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJ
CSAgICAoKHNhY2stPnNhY2tfYXNzb2NfaWQgPT0gU0NUUF9DVVJSRU5UX0FTU09DKSB8fAorCQkJ
ICAgICAoc2Fjay0+c2Fja19hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpKSB7CiAJCQkJU0NU
UF9JTlBfUkxPQ0soaW5wKTsKIAkJCQlMSVNUX0ZPUkVBQ0goc3RjYiwgJmlucC0+c2N0cF9hc29j
X2xpc3QsIHNjdHBfdGNibGlzdCkgewogCQkJCQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwpAQCAtNTA5
Nyw3ICs1MTAzLDcgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1l
LCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQlpZiAoc2NhLT5zY2Ffa2V5bGVuZ3Ro
ID09IDApIHsKIAkJCXNpemUgPSBvcHRzaXplIC0gc2l6ZW9mKHN0cnVjdCBzY3RwX2F1dGhrZXkp
OwogCQl9IGVsc2UgewotCQkgICAgICAgIGlmIChzY2EtPnNjYV9rZXlsZW5ndGggKyBzaXplb2Yo
c3RydWN0IHNjdHBfYXV0aGtleSkgPD0gb3B0c2l6ZSkgeworCQkJaWYgKHNjYS0+c2NhX2tleWxl
bmd0aCArIHNpemVvZihzdHJ1Y3Qgc2N0cF9hdXRoa2V5KSA8PSBvcHRzaXplKSB7CiAJCQkJc2l6
ZSA9IHNjYS0+c2NhX2tleWxlbmd0aDsKIAkJCX0gZWxzZSB7CiAJCQkJU0NUUF9MVFJBQ0VfRVJS
X1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1VTUlJFUSwgRUlOVkFMKTsKQEAg
LTUxMzksOCArNTE0NSw5IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0
bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJfSBlbHNlIHsKIAkJCWlmICgo
aW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5w
LT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAgICAoc2Nh
LT5zY2FfYXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpIHx8Ci0JCQkgICAgKHNjYS0+c2Nh
X2Fzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkgeworCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdz
ICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAgKChzY2EtPnNjYV9hc3NvY19p
ZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykgfHwKKwkJCSAgICAgIChzY2EtPnNjYV9hc3NvY19pZCA9
PSBTQ1RQX0FMTF9BU1NPQykpKSkgewogCQkJCVNDVFBfSU5QX1dMT0NLKGlucCk7CiAJCQkJc2hh
cmVkX2tleXMgPSAmaW5wLT5zY3RwX2VwLnNoYXJlZF9rZXlzOwogCQkJCS8qCkBAIC01MTc0LDgg
KzUxODEsOSBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZv
aWQgKm9wdHZhbCwgc2l6ZV90IG9wdHNpemUsCiAJCQkJZXJyb3IgPSBzY3RwX2luc2VydF9zaGFy
ZWRrZXkoc2hhcmVkX2tleXMsIHNoYXJlZF9rZXkpOwogCQkJCVNDVFBfSU5QX1dVTkxPQ0soaW5w
KTsKIAkJCX0KLQkJCWlmICgoc2NhLT5zY2FfYXNzb2NfaWQgPT0gU0NUUF9DVVJSRU5UX0FTU09D
KSB8fAotCQkJICAgIChzY2EtPnNjYV9hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpIHsKKwkJ
CWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAg
ICAoKHNjYS0+c2NhX2Fzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKKwkJCSAgICAg
KHNjYS0+c2NhX2Fzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9S
TE9DSyhpbnApOwogCQkJCUxJU1RfRk9SRUFDSChzdGNiLCAmaW5wLT5zY3RwX2Fzb2NfbGlzdCwg
c2N0cF90Y2JsaXN0KSB7CiAJCQkJCVNDVFBfVENCX0xPQ0soc3RjYik7CkBAIC01MjgzLDggKzUy
OTEsOSBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQg
Km9wdHZhbCwgc2l6ZV90IG9wdHNpemUsCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9m
bGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFn
cyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKHNjYWN0LT5zY2FjdF9h
c3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykgfHwKLQkJCSAgICAoc2NhY3QtPnNjYWN0X2Fz
c29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkgeworCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYg
U0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAgKChzY2FjdC0+c2NhY3RfYXNzb2Nf
aWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpIHx8CisJCQkgICAgICAoc2NhY3QtPnNjYWN0X2Fzc29j
X2lkID09IFNDVFBfQUxMX0FTU09DKSkpKSB7CiAJCQkJU0NUUF9JTlBfV0xPQ0soaW5wKTsKIAkJ
CQlpZiAoc2N0cF9hdXRoX3NldGFjdGl2ZWtleV9lcChpbnAsIHNjYWN0LT5zY2FjdF9rZXludW1i
ZXIpKSB7CiAJCQkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZS
T01fU0NUUF9VU1JSRVEsIEVJTlZBTCk7CkBAIC01MjkyLDggKzUzMDEsOSBAQCBzY3RwX3NldG9w
dChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90IG9w
dHNpemUsCiAJCQkJfQogCQkJCVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsKIAkJCX0KLQkJCWlmICgo
c2NhY3QtPnNjYWN0X2Fzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKLQkJCSAgICAo
c2NhY3QtPnNjYWN0X2Fzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkgeworCQkJaWYgKChpbnAt
PnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICgoc2NhY3Qt
PnNjYWN0X2Fzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKKwkJCSAgICAgKHNjYWN0
LT5zY2FjdF9hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfUkxP
Q0soaW5wKTsKIAkJCQlMSVNUX0ZPUkVBQ0goc3RjYiwgJmlucC0+c2N0cF9hc29jX2xpc3QsIHNj
dHBfdGNibGlzdCkgewogCQkJCQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwpAQCAtNTMyMiw4ICs1MzMy
LDkgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpv
cHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxh
Z3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3Mg
JiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChzY2RlbC0+c2NhY3RfYXNz
b2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpIHx8Ci0JCQkgICAgKHNjZGVsLT5zY2FjdF9hc3Nv
Y19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFND
VFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgICgoc2NkZWwtPnNjYWN0X2Fzc29jX2lk
ID09IFNDVFBfRlVUVVJFX0FTU09DKSB8fAorCQkJICAgICAgKHNjZGVsLT5zY2FjdF9hc3NvY19p
ZCA9PSBTQ1RQX0FMTF9BU1NPQykpKSkgewogCQkJCVNDVFBfSU5QX1dMT0NLKGlucCk7CiAJCQkJ
aWYgKHNjdHBfZGVsZXRlX3NoYXJlZGtleV9lcChpbnAsIHNjZGVsLT5zY2FjdF9rZXludW1iZXIp
KSB7CiAJCQkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01f
U0NUUF9VU1JSRVEsIEVJTlZBTCk7CkBAIC01MzMxLDggKzUzNDIsOSBAQCBzY3RwX3NldG9wdChz
dHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90IG9wdHNp
emUsCiAJCQkJfQogCQkJCVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsKIAkJCX0KLQkJCWlmICgoc2Nk
ZWwtPnNjYWN0X2Fzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKLQkJCSAgICAoc2Nk
ZWwtPnNjYWN0X2Fzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkgeworCQkJaWYgKChpbnAtPnNj
dHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICgoc2NkZWwtPnNj
YWN0X2Fzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKKwkJCSAgICAgKHNjZGVsLT5z
Y2FjdF9hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfUkxPQ0so
aW5wKTsKIAkJCQlMSVNUX0ZPUkVBQ0goc3RjYiwgJmlucC0+c2N0cF9hc29jX2xpc3QsIHNjdHBf
dGNibGlzdCkgewogCQkJCQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwpAQCAtNTM2MSw4ICs1MzczLDkg
QEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2
YWwsIHNpemVfdCBvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3Mg
JiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBT
Q1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChrZXlpZC0+c2NhY3RfYXNzb2Nf
aWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpIHx8Ci0JCQkgICAgKGtleWlkLT5zY2FjdF9hc3NvY19p
ZCA9PSBTQ1RQX0FMTF9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBf
UENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgICgoa2V5aWQtPnNjYWN0X2Fzc29jX2lkID09
IFNDVFBfRlVUVVJFX0FTU09DKSB8fAorCQkJICAgICAgKGtleWlkLT5zY2FjdF9hc3NvY19pZCA9
PSBTQ1RQX0FMTF9BU1NPQykpKSkgewogCQkJCVNDVFBfSU5QX1dMT0NLKGlucCk7CiAJCQkJaWYg
KHNjdHBfZGVhY3Rfc2hhcmVka2V5X2VwKGlucCwga2V5aWQtPnNjYWN0X2tleW51bWJlcikpIHsK
IAkJCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQ
X1VTUlJFUSwgRUlOVkFMKTsKQEAgLTUzNzAsOCArNTM4Myw5IEBAIHNjdHBfc2V0b3B0KHN0cnVj
dCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwK
IAkJCQl9CiAJCQkJU0NUUF9JTlBfV1VOTE9DSyhpbnApOwogCQkJfQotCQkJaWYgKChrZXlpZC0+
c2NhY3RfYXNzb2NfaWQgPT0gU0NUUF9DVVJSRU5UX0FTU09DKSB8fAotCQkJICAgIChrZXlpZC0+
c2NhY3RfYXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSB7CisJCQlpZiAoKGlucC0+c2N0cF9m
bGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgKChrZXlpZC0+c2NhY3Rf
YXNzb2NfaWQgPT0gU0NUUF9DVVJSRU5UX0FTU09DKSB8fAorCQkJICAgICAoa2V5aWQtPnNjYWN0
X2Fzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9STE9DSyhpbnAp
OwogCQkJCUxJU1RfRk9SRUFDSChzdGNiLCAmaW5wLT5zY3RwX2Fzb2NfbGlzdCwgc2N0cF90Y2Js
aXN0KSB7CiAJCQkJCVNDVFBfVENCX0xPQ0soc3RjYik7CkBAIC01NDAwLDE0ICs1NDE0LDE2IEBA
IHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFs
LCBzaXplX3Qgb3B0c2l6ZSwKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYg
U0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NU
UF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBf
RlVUVVJFX0FTU09DKSB8fAotCQkJICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0Mp
KSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAm
JgorCQkJICAgICAoKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykgfHwKKwkJCSAg
ICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSkpIHsKIAkJCQlTQ1RQX0lOUF9X
TE9DSyhpbnApOwogCQkJCWlucC0+bG9jYWxfc3RycmVzZXRfc3VwcG9ydCA9ICh1aW50OF90KWF2
LT5hc3NvY192YWx1ZTsKIAkJCQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7CiAJCQl9Ci0JCQlpZiAo
KGF2LT5hc3NvY19pZCA9PSBTQ1RQX0NVUlJFTlRfQVNTT0MpIHx8Ci0JCQkgICAgKGF2LT5hc3Nv
Y19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpIHsKKwkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NU
UF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAoKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0NV
UlJFTlRfQVNTT0MpIHx8CisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0Mp
KSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJTElTVF9GT1JFQUNIKHN0Y2IsICZp
bnAtPnNjdHBfYXNvY19saXN0LCBzY3RwX3RjYmxpc3QpIHsKIAkJCQkJU0NUUF9UQ0JfTE9DSyhz
dGNiKTsKQEAgLTU0MjksNyArNTQ0NSw3IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNv
LCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJU0NUUF9DSEVD
S19BTkRfQ0FTVChzdHJyc3QsIG9wdHZhbCwgc3RydWN0IHNjdHBfcmVzZXRfc3RyZWFtcywgb3B0
c2l6ZSk7CiAJCVNDVFBfRklORF9TVENCKGlucCwgc3RjYiwgc3RycnN0LT5zcnNfYXNzb2NfaWQp
OwogCQlpZiAoc3RjYiA9PSBOVUxMKSB7Ci0JCSAgICAgICAgU0NUUF9MVFJBQ0VfRVJSX1JFVChp
bnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1VTUlJFUSwgRU5PRU5UKTsKKwkJCVNDVFBf
TFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIEVO
T0VOVCk7CiAJCQllcnJvciA9IEVOT0VOVDsKIAkJCWJyZWFrOwogCQl9CkBAIC01NDQyLDYgKzU0
NTgsMTIgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lk
ICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwogCQkJ
YnJlYWs7CiAJCX0KKwkJaWYgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVfT1BF
TikgeworCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9T
Q1RQX1VTUlJFUSwgRUlOVkFMKTsKKwkJCWVycm9yID0gRUlOVkFMOworCQkJU0NUUF9UQ0JfVU5M
T0NLKHN0Y2IpOworCQkJYnJlYWs7CisJCX0KIAkJaWYgKHNpemVvZihzdHJ1Y3Qgc2N0cF9yZXNl
dF9zdHJlYW1zKSArCiAJCSAgICBzdHJyc3QtPnNyc19udW1iZXJfc3RyZWFtcyAqIHNpemVvZih1
aW50MTZfdCkgPiBvcHRzaXplKSB7CiAJCQllcnJvciA9IEVJTlZBTDsKQEAgLTU0NzQsMTMgKzU0
OTYsMTMgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lk
ICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQl9CiAJCWZvciAoaSA9IDA7IGkgPCBzdHJyc3Qt
PnNyc19udW1iZXJfc3RyZWFtczsgaSsrKSB7CiAJCQlpZiAoKHNlbmRfaW4pICYmCi0JCQkgICAg
KHN0cnJzdC0+c3JzX3N0cmVhbV9saXN0W2ldID4gc3RjYi0+YXNvYy5zdHJlYW1pbmNudCkpIHsK
KwkJCSAgICAoc3RycnN0LT5zcnNfc3RyZWFtX2xpc3RbaV0gPj0gc3RjYi0+YXNvYy5zdHJlYW1p
bmNudCkpIHsKIAkJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9G
Uk9NX1NDVFBfVVNSUkVRLCBFSU5WQUwpOwogCQkJCWVycm9yID0gRUlOVkFMOwogCQkJCWJyZWFr
OwogCQkJfQogCQkJaWYgKChzZW5kX291dCkgJiYKLQkJCSAgICAoc3RycnN0LT5zcnNfc3RyZWFt
X2xpc3RbaV0gPiBzdGNiLT5hc29jLnN0cmVhbW91dGNudCkpIHsKKwkJCSAgICAoc3RycnN0LT5z
cnNfc3RyZWFtX2xpc3RbaV0gPj0gc3RjYi0+YXNvYy5zdHJlYW1vdXRjbnQpKSB7CiAJCQkJU0NU
UF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1VTUlJFUSwg
RUlOVkFMKTsKIAkJCQllcnJvciA9IEVJTlZBTDsKIAkJCQlicmVhazsKQEAgLTU1NDEsNyArNTU2
Myw3IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAq
b3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJU0NUUF9DSEVDS19BTkRfQ0FTVChzdHJhZGQsIG9w
dHZhbCwgc3RydWN0IHNjdHBfYWRkX3N0cmVhbXMsIG9wdHNpemUpOwogCQlTQ1RQX0ZJTkRfU1RD
QihpbnAsIHN0Y2IsIHN0cmFkZC0+c2FzX2Fzc29jX2lkKTsKIAkJaWYgKHN0Y2IgPT0gTlVMTCkg
ewotCQkgICAgICAgIFNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZS
T01fU0NUUF9VU1JSRVEsIEVOT0VOVCk7CisJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVM
TCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBFTk9FTlQpOwogCQkJZXJyb3IgPSBFTk9F
TlQ7CiAJCQlicmVhazsKIAkJfQpAQCAtNTU1NCw2ICs1NTc2LDEyIEBAIHNjdHBfc2V0b3B0KHN0
cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6
ZSwKIAkJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKIAkJCWJyZWFrOwogCQl9CisJCWlmIChTQ1RQ
X0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQX1NUQVRFX09QRU4pIHsKKwkJCVNDVFBfTFRSQUNFX0VS
Ul9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIEVJTlZBTCk7CisJ
CQllcnJvciA9IEVJTlZBTDsKKwkJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKKwkJCWJyZWFrOwor
CQl9CiAJCWlmIChzdGNiLT5hc29jLnN0cmVhbV9yZXNldF9vdXRzdGFuZGluZykgewogCQkJU0NU
UF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1VTUlJFUSwg
RUFMUkVBRFkpOwogCQkJZXJyb3IgPSBFQUxSRUFEWTsKQEAgLTU2MjEsNiArNTY0OSwxMiBAQCBz
Y3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwg
c2l6ZV90IG9wdHNpemUsCiAJCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CiAJCQlicmVhazsKIAkJ
fQorCQlpZiAoU0NUUF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9TVEFURV9PUEVOKSB7CisJCQlT
Q1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVR
LCBFSU5WQUwpOworCQkJZXJyb3IgPSBFSU5WQUw7CisJCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7
CisJCQlicmVhazsKKwkJfQogCQlpZiAoc3RjYi0+YXNvYy5zdHJlYW1fcmVzZXRfb3V0c3RhbmRp
bmcpIHsKIAkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01f
U0NUUF9VU1JSRVEsIEVBTFJFQURZKTsKIAkJCWVycm9yID0gRUFMUkVBRFk7CkBAIC01NzE1LDE1
ICs1NzQ5LDYgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2
b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCX0KIAljYXNlIFNDVFBfTUFYX0JVUlNUOgog
CXsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA8IDkwMDAw
MAotCQl1aW50OF90ICpidXJzdDsKLQotCQlTQ1RQX0NIRUNLX0FORF9DQVNUKGJ1cnN0LCBvcHR2
YWwsIHVpbnQ4X3QsIG9wdHNpemUpOwotCi0JCVNDVFBfSU5QX1dMT0NLKGlucCk7Ci0JCWlucC0+
c2N0cF9lcC5tYXhfYnVyc3QgPSAqYnVyc3Q7Ci0JCVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsKLSNl
bHNlCiAJCXN0cnVjdCBzY3RwX2Fzc29jX3ZhbHVlICphdjsKIAogCQlTQ1RQX0NIRUNLX0FORF9D
QVNUKGF2LCBvcHR2YWwsIHN0cnVjdCBzY3RwX2Fzc29jX3ZhbHVlLCBvcHRzaXplKTsKQEAgLTU3
MzUsMTQgKzU3NjAsMTYgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRu
YW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChp
bnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAt
PnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChhdi0+
YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpIHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9
PSBTQ1RQX0FMTF9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENC
X0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgICgoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJF
X0FTU09DKSB8fAorCQkJICAgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpKSkg
ewogCQkJCVNDVFBfSU5QX1dMT0NLKGlucCk7CiAJCQkJaW5wLT5zY3RwX2VwLm1heF9idXJzdCA9
IGF2LT5hc3NvY192YWx1ZTsKIAkJCQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7CiAJCQl9Ci0JCQlp
ZiAoKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0NVUlJFTlRfQVNTT0MpIHx8Ci0JCQkgICAgKGF2LT5h
c3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpIHsKKwkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYg
U0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAoKGF2LT5hc3NvY19pZCA9PSBTQ1RQ
X0NVUlJFTlRfQVNTT0MpIHx8CisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9BTExfQVNT
T0MpKSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJTElTVF9GT1JFQUNIKHN0Y2Is
ICZpbnAtPnNjdHBfYXNvY19saXN0LCBzY3RwX3RjYmxpc3QpIHsKIAkJCQkJU0NUUF9UQ0JfTE9D
SyhzdGNiKTsKQEAgLTU3NTIsNyArNTc3OSw2IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQg
KnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJCQlTQ1RQ
X0lOUF9SVU5MT0NLKGlucCk7CiAJCQl9CiAJCX0KLSNlbmRpZgogCQlicmVhazsKIAl9CiAJY2Fz
ZSBTQ1RQX01BWFNFRzoKQEAgLTU3NzgsNyArNTgwNCw4IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBz
b2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJ
fSBlbHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQ
RSkgfHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9P
TCkgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkgeworCQkJ
ICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAg
ICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBf
V0xPQ0soaW5wKTsKIAkJCQkvKiBGSVhNRSBNVDogSSB0aGluayB0aGlzIGlzIG5vdCBpbiB0dW5l
IHdpdGggdGhlIEFQSSBJRCAqLwogCQkJCWlmIChhdi0+YXNzb2NfdmFsdWUpIHsKQEAgLTU5ODMs
MTQgKzYwMTAsMTYgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1l
LCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAt
PnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNj
dHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChzX2luZm8t
PnNpbmZvX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSB8fAotCQkJICAgIChzX2luZm8t
PnNpbmZvX2Fzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkgeworCQkJICAgICgoaW5wLT5zY3Rw
X2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAgKChzX2luZm8tPnNp
bmZvX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSB8fAorCQkJICAgICAgKHNfaW5mby0+
c2luZm9fYXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSkpIHsKIAkJCQlTQ1RQX0lOUF9XTE9D
SyhpbnApOwogCQkJCW1lbWNweSgmaW5wLT5kZWZfc2VuZCwgc19pbmZvLCBtaW4ob3B0c2l6ZSwg
c2l6ZW9mKGlucC0+ZGVmX3NlbmQpKSk7CiAJCQkJU0NUUF9JTlBfV1VOTE9DSyhpbnApOwogCQkJ
fQotCQkJaWYgKChzX2luZm8tPnNpbmZvX2Fzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykg
fHwKLQkJCSAgICAoc19pbmZvLT5zaW5mb19hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpIHsK
KwkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJ
CSAgICAoKHNfaW5mby0+c2luZm9fYXNzb2NfaWQgPT0gU0NUUF9DVVJSRU5UX0FTU09DKSB8fAor
CQkJICAgICAoc19pbmZvLT5zaW5mb19hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpKSB7CiAJ
CQkJU0NUUF9JTlBfUkxPQ0soaW5wKTsKIAkJCQlMSVNUX0ZPUkVBQ0goc3RjYiwgJmlucC0+c2N0
cF9hc29jX2xpc3QsIHNjdHBfdGNibGlzdCkgewogCQkJCQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwpA
QCAtNjEwOSw2ICs2MTM4LDE0IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQg
b3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJCVNDVFBfTFRSQUNFX0VS
Ul9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIEVJTlZBTCk7CiAJ
CQlyZXR1cm4gKEVJTlZBTCk7CiAJCX0KKwkJaWYgKChwYWRkcnAtPnNwcF9mbGFncyAmIFNQUF9Q
TVRVRF9ESVNBQkxFKSAmJgorCQkgICAgKChwYWRkcnAtPnNwcF9wYXRobXR1IDwgU0NUUF9TTUFM
TEVTVF9QTVRVKSB8fAorCQkgICAgIChwYWRkcnAtPnNwcF9wYXRobXR1ID4gU0NUUF9MQVJHRVNU
X1BNVFUpKSkgeworCQkJaWYgKHN0Y2IpCisJCQkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOworCQkJ
U0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1VTUlJF
USwgRUlOVkFMKTsKKwkJCXJldHVybiAoRUlOVkFMKTsKKwkJfQogCiAJCWlmIChzdGNiICE9IE5V
TEwpIHsKIAkJCS8qKioqKioqKioqKioqKioqKioqKioqKipUQ0IgU1BFQ0lGSUMgU0VUICoqKioq
KioqKioqKioqKioqKi8KQEAgLTYxMzQsMTIgKzYxNzEsMTMgQEAgc2N0cF9zZXRvcHQoc3RydWN0
IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAog
CQkJCQluZXQtPmRlc3Rfc3RhdGUgJj0gflNDVFBfQUREUl9OT0hCOwogCQkJCX0KIAkJCQlpZiAo
cGFkZHJwLT5zcHBfZmxhZ3MgJiBTUFBfSEJfREVNQU5EKSB7Ci0JCQkJCS8qIG9uIGRlbWFuZCBI
QiAqLwotCQkJCQlzY3RwX3NlbmRfaGIoc3RjYiwgbmV0LCBTQ1RQX1NPX0xPQ0tFRCk7Ci0JCQkJ
CXNjdHBfY2h1bmtfb3V0cHV0KGlucCwgc3RjYiwgIFNDVFBfT1VUUFVUX0ZST01fU09DS09QVCwg
U0NUUF9TT19MT0NLRUQpOwotCQkJCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9I
RUFSVEJFQVQsIGlucCwgc3RjYiwgbmV0KTsKKwkJCQkJaWYgKFNDVFBfR0VUX1NUQVRFKHN0Y2Ip
ID09IFNDVFBfU1RBVEVfT1BFTikgeworCQkJCQkJc2N0cF9zZW5kX2hiKHN0Y2IsIG5ldCwgU0NU
UF9TT19MT0NLRUQpOworCQkJCQkJc2N0cF9jaHVua19vdXRwdXQoaW5wLCBzdGNiLCAgU0NUUF9P
VVRQVVRfRlJPTV9TT0NLT1BULCBTQ1RQX1NPX0xPQ0tFRCk7CisJCQkJCQlzY3RwX3RpbWVyX3N0
YXJ0KFNDVFBfVElNRVJfVFlQRV9IRUFSVEJFQVQsIGlucCwgc3RjYiwgbmV0KTsKKwkJCQkJfQog
CQkJCX0KLQkJCQlpZiAoKHBhZGRycC0+c3BwX2ZsYWdzICYgU1BQX1BNVFVEX0RJU0FCTEUpICYm
IChwYWRkcnAtPnNwcF9wYXRobXR1ID49IFNDVFBfU01BTExFU1RfUE1UVSkpIHsKKwkJCQlpZiAo
cGFkZHJwLT5zcHBfZmxhZ3MgJiBTUFBfUE1UVURfRElTQUJMRSkgewogCQkJCQlpZiAoU0NUUF9P
U19USU1FUl9QRU5ESU5HKCZuZXQtPnBtdHVfdGltZXIudGltZXIpKSB7CiAJCQkJCQlzY3RwX3Rp
bWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX1BBVEhNVFVSQUlTRSwgaW5wLCBzdGNiLCBuZXQsCiAJ
CQkJCQkJCVNDVFBfRlJPTV9TQ1RQX1VTUlJFUSArIFNDVFBfTE9DXzExKTsKQEAgLTYyODYsNyAr
NjMyNCw3IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9p
ZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJCQkJfQogCQkJCQlzY3RwX3N0Y2JfZmVhdHVy
ZV9vbihpbnAsIHN0Y2IsIFNDVFBfUENCX0ZMQUdTX0RPTk9UX0hFQVJUQkVBVCk7CiAJCQkJfQot
CQkJCWlmICgocGFkZHJwLT5zcHBfZmxhZ3MgJiBTUFBfUE1UVURfRElTQUJMRSkgJiYgKHBhZGRy
cC0+c3BwX3BhdGhtdHUgPj0gU0NUUF9TTUFMTEVTVF9QTVRVKSkgeworCQkJCWlmIChwYWRkcnAt
PnNwcF9mbGFncyAmIFNQUF9QTVRVRF9ESVNBQkxFKSB7CiAJCQkJCVRBSUxRX0ZPUkVBQ0gobmV0
LCAmc3RjYi0+YXNvYy5uZXRzLCBzY3RwX25leHQpIHsKIAkJCQkJCWlmIChTQ1RQX09TX1RJTUVS
X1BFTkRJTkcoJm5ldC0+cG10dV90aW1lci50aW1lcikpIHsKIAkJCQkJCQlzY3RwX3RpbWVyX3N0
b3AoU0NUUF9USU1FUl9UWVBFX1BBVEhNVFVSQUlTRSwgaW5wLCBzdGNiLCBuZXQsCkBAIC02MzU2
LDcgKzYzOTQsOCBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUs
IHZvaWQgKm9wdHZhbCwgc2l6ZV90IG9wdHNpemUsCiAJCQkvKioqKioqKioqKioqKioqKioqKioq
KioqTk8gVENCLCBTRVQgVE8gZGVmYXVsdCBzdHVmZiAqKioqKioqKioqKioqKioqKiovCiAJCQlp
ZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAg
KGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAg
KHBhZGRycC0+c3BwX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkgeworCQkJICAgICgo
aW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAgKHBh
ZGRycC0+c3BwX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lO
UF9XTE9DSyhpbnApOwogCQkJCS8qCiAJCQkJICogRm9yIHRoZSBUT1MvRkxPV0xBQkVMIHN0dWZm
IHlvdSBzZXQgaXQKQEAgLTYzNzEsMTQgKzY0MTAsMTQgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNv
Y2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQkJ
CWVsc2UgaWYgKHBhZGRycC0+c3BwX2hiaW50ZXJ2YWwgIT0gMCkgewogCQkJCQlpZiAocGFkZHJw
LT5zcHBfaGJpbnRlcnZhbCA+IFNDVFBfTUFYX0hCX0lOVEVSVkFMKQogCQkJCQkJcGFkZHJwLT5z
cHBfaGJpbnRlcnZhbD0gU0NUUF9NQVhfSEJfSU5URVJWQUw7Ci0JCQkJCWlucC0+c2N0cF9lcC5z
Y3RwX3RpbWVvdXR0aWNrc1tTQ1RQX1RJTUVSX0hFQVJUQkVBVF0gPSBNU0VDX1RPX1RJQ0tTKHBh
ZGRycC0+c3BwX2hiaW50ZXJ2YWwpOworCQkJCQlpbnAtPnNjdHBfZXAuc2N0cF90aW1lb3V0dGlj
a3NbU0NUUF9USU1FUl9IRUFSVEJFQVRdID0gc2N0cF9tc2Vjc190b190aWNrcyhwYWRkcnAtPnNw
cF9oYmludGVydmFsKTsKIAkJCQl9CiAKIAkJCQlpZiAocGFkZHJwLT5zcHBfZmxhZ3MgJiBTUFBf
SEJfRU5BQkxFKSB7CiAJCQkJCWlmIChwYWRkcnAtPnNwcF9mbGFncyAmIFNQUF9IQl9USU1FX0lT
X1pFUk8pIHsKIAkJCQkJCWlucC0+c2N0cF9lcC5zY3RwX3RpbWVvdXR0aWNrc1tTQ1RQX1RJTUVS
X0hFQVJUQkVBVF0gPSAwOwogCQkJCQl9IGVsc2UgaWYgKHBhZGRycC0+c3BwX2hiaW50ZXJ2YWwp
IHsKLQkJCQkJCWlucC0+c2N0cF9lcC5zY3RwX3RpbWVvdXR0aWNrc1tTQ1RQX1RJTUVSX0hFQVJU
QkVBVF0gPSBNU0VDX1RPX1RJQ0tTKHBhZGRycC0+c3BwX2hiaW50ZXJ2YWwpOworCQkJCQkJaW5w
LT5zY3RwX2VwLnNjdHBfdGltZW91dHRpY2tzW1NDVFBfVElNRVJfSEVBUlRCRUFUXSA9IHNjdHBf
bXNlY3NfdG9fdGlja3MocGFkZHJwLT5zcHBfaGJpbnRlcnZhbCk7CiAJCQkJCX0KIAkJCQkJc2N0
cF9mZWF0dXJlX29mZihpbnAsIFNDVFBfUENCX0ZMQUdTX0RPTk9UX0hFQVJUQkVBVCk7CiAJCQkJ
fSBlbHNlIGlmIChwYWRkcnAtPnNwcF9mbGFncyAmIFNQUF9IQl9ESVNBQkxFKSB7CkBAIC02Mzg4
LDkgKzY0MjcsNyBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUs
IHZvaWQgKm9wdHZhbCwgc2l6ZV90IG9wdHNpemUsCiAJCQkJCWlucC0+c2N0cF9lcC5kZWZhdWx0
X210dSA9IDA7CiAJCQkJCXNjdHBfZmVhdHVyZV9vZmYoaW5wLCBTQ1RQX1BDQl9GTEFHU19ET19O
T1RfUE1UVUQpOwogCQkJCX0gZWxzZSBpZiAocGFkZHJwLT5zcHBfZmxhZ3MgJiBTUFBfUE1UVURf
RElTQUJMRSkgewotCQkJCQlpZiAocGFkZHJwLT5zcHBfcGF0aG10dSA+PSBTQ1RQX1NNQUxMRVNU
X1BNVFUpIHsKLQkJCQkJCWlucC0+c2N0cF9lcC5kZWZhdWx0X210dSA9IHBhZGRycC0+c3BwX3Bh
dGhtdHU7Ci0JCQkJCX0KKwkJCQkJaW5wLT5zY3RwX2VwLmRlZmF1bHRfbXR1ID0gcGFkZHJwLT5z
cHBfcGF0aG10dTsKIAkJCQkJc2N0cF9mZWF0dXJlX29uKGlucCwgU0NUUF9QQ0JfRkxBR1NfRE9f
Tk9UX1BNVFVEKTsKIAkJCQl9CiAJCQkJaWYgKHBhZGRycC0+c3BwX2ZsYWdzICYgU1BQX0RTQ1Ap
IHsKQEAgLTY0NDYsNyArNjQ4Myw4IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBp
bnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJfSBlbHNlIHsKIAkJ
CWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAg
ICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAg
ICAoc3J0by0+c3J0b19hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAo
KGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgIChz
cnRvLT5zcnRvX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lO
UF9XTE9DSyhpbnApOwogCQkJCWlmIChzcnRvLT5zcnRvX2luaXRpYWwpCiAJCQkJCW5ld19pbml0
ID0gc3J0by0+c3J0b19pbml0aWFsOwpAQCAtNjQ5NCwxOCArNjUzMiwxOSBAQCBzY3RwX3NldG9w
dChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90IG9w
dHNpemUsCiAJCQlpZiAoc2Fzb2MtPnNhc29jX2Fzb2NtYXhyeHQpCiAJCQkJc3RjYi0+YXNvYy5t
YXhfc2VuZF90aW1lcyA9IHNhc29jLT5zYXNvY19hc29jbWF4cnh0OwogCQkJaWYgKHNhc29jLT5z
YXNvY19jb29raWVfbGlmZSkgewotCQkJCXN0Y2ItPmFzb2MuY29va2llX2xpZmUgPSBNU0VDX1RP
X1RJQ0tTKHNhc29jLT5zYXNvY19jb29raWVfbGlmZSk7CisJCQkJc3RjYi0+YXNvYy5jb29raWVf
bGlmZSA9IHNjdHBfbXNlY3NfdG9fdGlja3Moc2Fzb2MtPnNhc29jX2Nvb2tpZV9saWZlKTsKIAkJ
CX0KIAkJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5z
Y3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3Rw
X2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAgICAoc2Fzb2MtPnNh
c29jX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkgeworCQkJICAgICgoaW5wLT5zY3Rw
X2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAgKHNhc29jLT5zYXNv
Y19hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfV0xPQ0so
aW5wKTsKIAkJCQlpZiAoc2Fzb2MtPnNhc29jX2Fzb2NtYXhyeHQpCiAJCQkJCWlucC0+c2N0cF9l
cC5tYXhfc2VuZF90aW1lcyA9IHNhc29jLT5zYXNvY19hc29jbWF4cnh0OwogCQkJCWlmIChzYXNv
Yy0+c2Fzb2NfY29va2llX2xpZmUpIHsKLQkJCQkJaW5wLT5zY3RwX2VwLmRlZl9jb29raWVfbGlm
ZSA9IE1TRUNfVE9fVElDS1Moc2Fzb2MtPnNhc29jX2Nvb2tpZV9saWZlKTsKKwkJCQkJaW5wLT5z
Y3RwX2VwLmRlZl9jb29raWVfbGlmZSA9IHNjdHBfbXNlY3NfdG9fdGlja3Moc2Fzb2MtPnNhc29j
X2Nvb2tpZV9saWZlKTsKIAkJCQl9CiAJCQkJU0NUUF9JTlBfV1VOTE9DSyhpbnApOwogCQkJfSBl
bHNlIHsKQEAgLTY2MTUsMTkgKzY2NTQsMTMgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAq
c28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogI2lmZGVmIFND
VFBfTVZSRgogCQlpbnQgaSwgZm5kID0gMDsKICNlbmRpZgotI2lmICFkZWZpbmVkKF9fV2luZG93
c19fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmICFkZWZpbmVkKF9XSU4zMikgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZiBkZWZpbmVkKF9fQVBQTEVfXykKIAkJc3RydWN0
IHByb2MgKnByb2M7CiAjZW5kaWYKLSNpZmRlZiBfX0ZyZWVCU0RfXwotI2lmIF9fRnJlZUJTRF92
ZXJzaW9uID4gNjAyMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKIAkJZXJyb3IgPSBwcml2
X2NoZWNrKGN1cnRocmVhZCwKIAkJCQkgICBQUklWX05FVElORVRfUkVTRVJWRURQT1JUKTsKLSNl
bGlmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAwMAotCQllcnJvciA9IHN1c2VyKChzdHJ1Y3Qg
dGhyZWFkICopcCk7Ci0jZWxzZQotCQllcnJvciA9IHN1c2VyKHApOwotI2VuZGlmCiAjZWxpZiBk
ZWZpbmVkKF9fQVBQTEVfXykKIAkJcHJvYyA9IChzdHJ1Y3QgcHJvYyAqKXA7CiAJCWlmIChwKSB7
CkBAIC02NzIxLDcgKzY3NTQsNyBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50
IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90IG9wdHNpemUsCiAJCQkJCWVycm9yID0gRUlO
VkFMOwogCQkJCQlnb3RvIG91dF9vZl9pdDsKIAkJCQl9Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
CQkJfSBlbHNlIHsKIAkJCQlzd2l0Y2ggKGFkZHItPnNhX2ZhbWlseSkgewogI2lmZGVmIElORVQK
QEAgLTY3NzYsMjMgKzY4MDksMjMgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGlu
dCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCX0KIAljYXNlIFNDVFBf
QklORFhfQUREX0FERFI6CiAJewotCQlzdHJ1Y3Qgc2N0cF9nZXRhZGRyZXNzZXMgKmFkZHJzOwot
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAwMAor
CQlzdHJ1Y3Qgc29ja2FkZHIgKnNhOworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAJCXN0cnVjdCB0aHJlYWQgKnRkOwogCiAJCXRkID0gKHN0cnVj
dCB0aHJlYWQgKilwOwogI2VuZGlmCi0JCVNDVFBfQ0hFQ0tfQU5EX0NBU1QoYWRkcnMsIG9wdHZh
bCwgc3RydWN0IHNjdHBfZ2V0YWRkcmVzc2VzLAotCQkJCSAgICBvcHRzaXplKTsKKwkJU0NUUF9D
SEVDS19BTkRfQ0FTVChzYSwgb3B0dmFsLCBzdHJ1Y3Qgc29ja2FkZHIsIG9wdHNpemUpOwogI2lm
ZGVmIElORVQKLQkJaWYgKGFkZHJzLT5hZGRyLT5zYV9mYW1pbHkgPT0gQUZfSU5FVCkgewotCQkJ
aWYgKG9wdHNpemUgPCBzaXplb2Yoc3RydWN0IHNjdHBfZ2V0YWRkcmVzc2VzKSAtIHNpemVvZihz
dHJ1Y3Qgc29ja2FkZHIpICsgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpIHsKKwkJaWYgKHNh
LT5zYV9mYW1pbHkgPT0gQUZfSU5FVCkgeworCQkJaWYgKG9wdHNpemUgPCBzaXplb2Yoc3RydWN0
IHNvY2thZGRyX2luKSkgewogCQkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxM
LCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIEVJTlZBTCk7CiAJCQkJZXJyb3IgPSBFSU5WQUw7CiAJ
CQkJYnJlYWs7CiAJCQl9Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3Zl
cnNpb24gPj0gODAwMDAwCi0JCQlpZiAodGQgIT0gTlVMTCAmJiAoZXJyb3IgPSBwcmlzb25fbG9j
YWxfaXA0KHRkLT50ZF91Y3JlZCwgJigoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKShhZGRycy0+YWRk
cikpLT5zaW5fYWRkcikpKSkgeworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCisJCQlpZiAodGQgIT0gTlVMTCAmJgorCQkJICAgIChlcnJvciA9IHBy
aXNvbl9sb2NhbF9pcDQodGQtPnRkX3VjcmVkLCAmKCgoc3RydWN0IHNvY2thZGRyX2luICopc2Ep
LT5zaW5fYWRkcikpKSkgewogCQkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBzdGNiLCBOVUxM
LCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIGVycm9yKTsKIAkJCQlicmVhazsKIAkJCX0KQEAgLTY4
MDAsNDggKzY4MzMsNDkgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRu
YW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQl9IGVsc2UKICNlbmRpZgogI2lm
ZGVmIElORVQ2Ci0JCWlmIChhZGRycy0+YWRkci0+c2FfZmFtaWx5ID09IEFGX0lORVQ2KSB7Ci0J
CQlpZiAob3B0c2l6ZSA8IHNpemVvZihzdHJ1Y3Qgc2N0cF9nZXRhZGRyZXNzZXMpIC0gc2l6ZW9m
KHN0cnVjdCBzb2NrYWRkcikgKyBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNikpIHsKKwkJaWYg
KHNhLT5zYV9mYW1pbHkgPT0gQUZfSU5FVDYpIHsKKwkJCWlmIChvcHRzaXplIDwgc2l6ZW9mKHN0
cnVjdCBzb2NrYWRkcl9pbjYpKSB7CiAJCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEws
IE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1VTUlJFUSwgRUlOVkFMKTsKIAkJCQllcnJvciA9IEVJTlZB
TDsKIAkJCQlicmVhazsKIAkJCX0KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVC
U0RfdmVyc2lvbiA+PSA4MDAwMDAKLQkJCWlmICh0ZCAhPSBOVUxMICYmIChlcnJvciA9IHByaXNv
bl9sb2NhbF9pcDYodGQtPnRkX3VjcmVkLCAmKCgoc3RydWN0IHNvY2thZGRyX2luNiAqKShhZGRy
cy0+YWRkcikpLT5zaW42X2FkZHIpLAotCQkJCQkJCQkJCQkgICAoU0NUUF9JUFY2X1Y2T05MWShp
bnApICE9IDApKSkgIT0gMCkgewotCQkJICBTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgc3RjYiwg
TlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBlcnJvcik7Ci0JCQkgIGJyZWFrOworI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQlpZiAodGQg
IT0gTlVMTCAmJgorCQkJICAgIChlcnJvciA9IHByaXNvbl9sb2NhbF9pcDYodGQtPnRkX3VjcmVk
LAorCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJigoKHN0cnVjdCBzb2NrYWRkcl9p
bjYgKilzYSktPnNpbjZfYWRkciksCisJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
U0NUUF9JUFY2X1Y2T05MWShpbnApICE9IDApKSkgIT0gMCkgeworCQkJCVNDVFBfTFRSQUNFX0VS
Ul9SRVQoaW5wLCBzdGNiLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIGVycm9yKTsKKwkJ
CQlicmVhazsKIAkJCX0KICNlbmRpZgogCQl9IGVsc2UKICNlbmRpZgogCQl7Ci0JCSAgICAgICBl
cnJvciA9IEVBRk5PU1VQUE9SVDsKLQkJICAgICAgIGJyZWFrOworCQkJZXJyb3IgPSBFQUZOT1NV
UFBPUlQ7CisJCQlicmVhazsKIAkJfQotCQlzY3RwX2JpbmR4X2FkZF9hZGRyZXNzKHNvLCBpbnAs
IGFkZHJzLT5hZGRyLAotCQkJCSAgICAgICBhZGRycy0+c2dldF9hc3NvY19pZCwgdnJmX2lkLAot
CQkJCSAgICAgICAmZXJyb3IsIHApOworCQlzY3RwX2JpbmR4X2FkZF9hZGRyZXNzKHNvLCBpbnAs
IHNhLCB2cmZfaWQsICZlcnJvciwgcCk7CiAJCWJyZWFrOwogCX0KIAljYXNlIFNDVFBfQklORFhf
UkVNX0FERFI6CiAJewotCQlzdHJ1Y3Qgc2N0cF9nZXRhZGRyZXNzZXMgKmFkZHJzOwotI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAwMAorCQlzdHJ1
Y3Qgc29ja2FkZHIgKnNhOworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAJCXN0cnVjdCB0aHJlYWQgKnRkOwogCQl0ZCA9IChzdHJ1Y3QgdGhyZWFk
ICopcDsKIAogI2VuZGlmCi0JCVNDVFBfQ0hFQ0tfQU5EX0NBU1QoYWRkcnMsIG9wdHZhbCwgc3Ry
dWN0IHNjdHBfZ2V0YWRkcmVzc2VzLCBvcHRzaXplKTsKKwkJU0NUUF9DSEVDS19BTkRfQ0FTVChz
YSwgb3B0dmFsLCBzdHJ1Y3Qgc29ja2FkZHIsIG9wdHNpemUpOwogI2lmZGVmIElORVQKLQkJaWYg
KGFkZHJzLT5hZGRyLT5zYV9mYW1pbHkgPT0gQUZfSU5FVCkgewotCQkJaWYgKG9wdHNpemUgPCBz
aXplb2Yoc3RydWN0IHNjdHBfZ2V0YWRkcmVzc2VzKSAtIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHIp
ICsgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpIHsKKwkJaWYgKHNhLT5zYV9mYW1pbHkgPT0g
QUZfSU5FVCkgeworCQkJaWYgKG9wdHNpemUgPCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSkg
ewogCQkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NU
UF9VU1JSRVEsIEVJTlZBTCk7CiAJCQkJZXJyb3IgPSBFSU5WQUw7CiAJCQkJYnJlYWs7CiAJCQl9
Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAwMDAw
Ci0JCWlmICh0ZCAhPSBOVUxMICYmIChlcnJvciA9IHByaXNvbl9sb2NhbF9pcDQodGQtPnRkX3Vj
cmVkLCAmKCgoc3RydWN0IHNvY2thZGRyX2luICopKGFkZHJzLT5hZGRyKSktPnNpbl9hZGRyKSkp
KSB7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
KwkJCWlmICh0ZCAhPSBOVUxMICYmCisJCQkgICAgKGVycm9yID0gcHJpc29uX2xvY2FsX2lwNCh0
ZC0+dGRfdWNyZWQsICYoKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilzYSktPnNpbl9hZGRyKSkpKSB7
CiAJCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIHN0Y2IsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQ
X1VTUlJFUSwgZXJyb3IpOwogCQkJCWJyZWFrOwogCQkJfQpAQCAtNjg0OSwxNiArNjg4MywxNiBA
QCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZh
bCwgc2l6ZV90IG9wdHNpemUsCiAJCX0gZWxzZQogI2VuZGlmCiAjaWZkZWYgSU5FVDYKLQkJaWYg
KGFkZHJzLT5hZGRyLT5zYV9mYW1pbHkgPT0gQUZfSU5FVDYpIHsKLQkJCWlmIChvcHRzaXplIDwg
c2l6ZW9mKHN0cnVjdCBzY3RwX2dldGFkZHJlc3NlcykgLSBzaXplb2Yoc3RydWN0IHNvY2thZGRy
KSArIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSkgeworCQlpZiAoc2EtPnNhX2ZhbWlseSA9
PSBBRl9JTkVUNikgeworCQkJaWYgKG9wdHNpemUgPCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2lu
NikpIHsKIAkJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9N
X1NDVFBfVVNSUkVRLCBFSU5WQUwpOwogCQkJCWVycm9yID0gRUlOVkFMOwogCQkJCWJyZWFrOwog
CQkJfQotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgw
MDAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAJCQlpZiAodGQgIT0gTlVMTCAmJgogCQkJICAgIChlcnJvciA9IHByaXNvbl9sb2NhbF9pcDYo
dGQtPnRkX3VjcmVkLAotCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJigoKHN0cnVj
dCBzb2NrYWRkcl9pbjYgKikoYWRkcnMtPmFkZHIpKS0+c2luNl9hZGRyKSwKKwkJCSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICYoKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopc2EpLT5zaW42
X2FkZHIpLAogCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNDVFBfSVBWNl9WNk9O
TFkoaW5wKSAhPSAwKSkpICE9IDApIHsKIAkJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgc3Rj
YiwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBlcnJvcik7CiAJCQkJYnJlYWs7CkBAIC02
ODcwLDEyICs2OTA0LDEwIEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0
bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJCWVycm9yID0gRUFGTk9TVVBQ
T1JUOwogCQkJYnJlYWs7CiAJCX0KLQkJc2N0cF9iaW5keF9kZWxldGVfYWRkcmVzcyhpbnAsIGFk
ZHJzLT5hZGRyLAotCQkJCQkgIGFkZHJzLT5zZ2V0X2Fzc29jX2lkLCB2cmZfaWQsCi0JCQkJCSAg
JmVycm9yKTsKKwkJc2N0cF9iaW5keF9kZWxldGVfYWRkcmVzcyhpbnAsIHNhLCB2cmZfaWQsICZl
cnJvcik7CiAJCWJyZWFrOwogCX0KLSNpZmRlZiBfX0FQUExFX18KKyNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAljYXNlIFNDVFBfTElTVEVOX0ZJWDoK
IAkJLyogb25seSBhcHBsaWVzIHRvIG9uZS10by1tYW55IHNvY2tldHMgKi8KIAkJaWYgKGlucC0+
c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpIHsKQEAgLTY4ODcsNyArNjkxOSw3
IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0
dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJCWVycm9yID0gRUlOVkFMOwogCQl9CiAJCWJyZWFrOwot
I2VuZGlmCQkJCS8qIF9fQVBQTEVfXyAqLworI2VuZGlmCiAJY2FzZSBTQ1RQX0VWRU5UOgogCXsK
IAkJc3RydWN0IHNjdHBfZXZlbnQgKmV2ZW50OwpAQCAtNjk2Nyw4ICs2OTk5LDcgQEAgc2N0cF9z
ZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVf
dCBvcHRzaXplLAogCQkJCSAqIHNvIHJldHVybiBhbiBlcnJvciBmb3Igc2VuZGVyIGRyeSBldmVu
dHMKIAkJCQkgKi8KIAkJCQlpZiAoKGV2ZW50X3R5cGUgPT0gU0NUUF9QQ0JfRkxBR1NfRFJZRVZO
VCkgJiYKLQkJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBF
KSA9PSAwKSAmJgotCQkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lO
X1RDUFBPT0wpID09IDApICYmCisJCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9G
TEFHU19VRFBUWVBFKSAmJgogCQkJCSAgICAoKGV2ZW50LT5zZV9hc3NvY19pZCA9PSBTQ1RQX0FM
TF9BU1NPQykgfHwKIAkJCQkgICAgIChldmVudC0+c2VfYXNzb2NfaWQgPT0gU0NUUF9DVVJSRU5U
X0FTU09DKSkpIHsKIAkJCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFND
VFBfRlJPTV9TQ1RQX1VTUlJFUSwgRU5PVFNVUCk7CkBAIC02OTc3LDggKzcwMDgsOSBAQCBzY3Rw
X3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6
ZV90IG9wdHNpemUsCiAJCQkJfQogCQkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0Jf
RkxBR1NfVENQVFlQRSkgfHwKIAkJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZM
QUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkJICAgIChldmVudC0+c2VfYXNzb2NfaWQgPT0gU0NUUF9G
VVRVUkVfQVNTT0MpIHx8Ci0JCQkJICAgIChldmVudC0+c2VfYXNzb2NfaWQgPT0gU0NUUF9BTExf
QVNTT0MpKSB7CisJCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQ
VFlQRSkgJiYKKwkJCQkgICAgICgoZXZlbnQtPnNlX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FT
U09DKSB8fAorCQkJCSAgICAgIChldmVudC0+c2VfYXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0Mp
KSkpIHsKIAkJCQkJU0NUUF9JTlBfV0xPQ0soaW5wKTsKIAkJCQkJaWYgKGV2ZW50LT5zZV9vbikg
ewogCQkJCQkJc2N0cF9mZWF0dXJlX29uKGlucCwgZXZlbnRfdHlwZSk7CkBAIC02OTg3LDggKzcw
MTksOSBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQg
Km9wdHZhbCwgc2l6ZV90IG9wdHNpemUsCiAJCQkJCX0KIAkJCQkJU0NUUF9JTlBfV1VOTE9DSyhp
bnApOwogCQkJCX0KLQkJCQlpZiAoKGV2ZW50LT5zZV9hc3NvY19pZCA9PSBTQ1RQX0NVUlJFTlRf
QVNTT0MpIHx8Ci0JCQkJICAgIChldmVudC0+c2VfYXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0Mp
KSB7CisJCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAm
JgorCQkJCSAgICAoKGV2ZW50LT5zZV9hc3NvY19pZCA9PSBTQ1RQX0NVUlJFTlRfQVNTT0MpIHx8
CisJCQkJICAgICAoZXZlbnQtPnNlX2Fzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkpIHsKIAkJ
CQkJU0NUUF9JTlBfUkxPQ0soaW5wKTsKIAkJCQkJTElTVF9GT1JFQUNIKHN0Y2IsICZpbnAtPnNj
dHBfYXNvY19saXN0LCBzY3RwX3RjYmxpc3QpIHsKIAkJCQkJCVNDVFBfVENCX0xPQ0soc3RjYik7
CkBAIC03MDAyLDYgKzcwMzUsMTAgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGlu
dCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQkJCQlTQ1RQX0lOUF9S
VU5MT0NLKGlucCk7CiAJCQkJfQogCQkJfQorCQl9IGVsc2UgeworCQkJaWYgKHN0Y2IpIHsKKwkJ
CQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CisJCQl9CiAJCX0KIAkJYnJlYWs7CiAJfQpAQCAtNzA1
Nyw4ICs3MDk0LDkgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1l
LCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAt
PnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNj
dHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChpbmZvLT5z
bmRfYXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpIHx8Ci0JCQkgICAgKGluZm8tPnNuZF9h
c3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAm
IFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgICgoaW5mby0+c25kX2Fzc29jX2lk
ID09IFNDVFBfRlVUVVJFX0FTU09DKSB8fAorCQkJICAgICAgKGluZm8tPnNuZF9hc3NvY19pZCA9
PSBTQ1RQX0FMTF9BU1NPQykpKSkgewogCQkJCVNDVFBfSU5QX1dMT0NLKGlucCk7CiAJCQkJaW5w
LT5kZWZfc2VuZC5zaW5mb19zdHJlYW0gPSBpbmZvLT5zbmRfc2lkOwogCQkJCXBvbGljeSA9IFBS
X1NDVFBfUE9MSUNZKGlucC0+ZGVmX3NlbmQuc2luZm9fZmxhZ3MpOwpAQCAtNzA2OCw4ICs3MTA2
LDkgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpv
cHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQkJCWlucC0+ZGVmX3NlbmQuc2luZm9fY29udGV4dCA9
IGluZm8tPnNuZF9jb250ZXh0OwogCQkJCVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsKIAkJCX0KLQkJ
CWlmICgoaW5mby0+c25kX2Fzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKLQkJCSAg
ICAoaW5mby0+c25kX2Fzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkgeworCQkJaWYgKChpbnAt
PnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICgoaW5mby0+
c25kX2Fzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKKwkJCSAgICAgKGluZm8tPnNu
ZF9hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfUkxPQ0soaW5w
KTsKIAkJCQlMSVNUX0ZPUkVBQ0goc3RjYiwgJmlucC0+c2N0cF9hc29jX2xpc3QsIHNjdHBfdGNi
bGlzdCkgewogCQkJCQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwpAQCAtNzA5Niw2ICs3MTM1LDkgQEAg
c2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWws
IHNpemVfdCBvcHRzaXplLAogCQlTQ1RQX0ZJTkRfU1RDQihpbnAsIHN0Y2IsIGluZm8tPnByX2Fz
c29jX2lkKTsKIAogCQlpZiAoaW5mby0+cHJfcG9saWN5ID4gU0NUUF9QUl9TQ1RQX01BWCkgewor
CQkJaWYgKHN0Y2IpIHsKKwkJCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CisJCQl9CiAJCQlTQ1RQ
X0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBF
SU5WQUwpOwogCQkJZXJyb3IgPSBFSU5WQUw7CiAJCQlicmVhazsKQEAgLTcxMDgsMTYgKzcxNTAs
MTggQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpv
cHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxh
Z3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3Mg
JiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChpbmZvLT5wcl9hc3NvY19p
ZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykgfHwKLQkJCSAgICAoaW5mby0+cHJfYXNzb2NfaWQgPT0g
U0NUUF9BTExfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9G
TEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoKGluZm8tPnByX2Fzc29jX2lkID09IFNDVFBfRlVU
VVJFX0FTU09DKSB8fAorCQkJICAgICAgKGluZm8tPnByX2Fzc29jX2lkID09IFNDVFBfQUxMX0FT
U09DKSkpKSB7CiAJCQkJU0NUUF9JTlBfV0xPQ0soaW5wKTsKIAkJCQlpbnAtPmRlZl9zZW5kLnNp
bmZvX2ZsYWdzICY9IDB4ZmZmMDsKIAkJCQlpbnAtPmRlZl9zZW5kLnNpbmZvX2ZsYWdzIHw9IGlu
Zm8tPnByX3BvbGljeTsKIAkJCQlpbnAtPmRlZl9zZW5kLnNpbmZvX3RpbWV0b2xpdmUgPSBpbmZv
LT5wcl92YWx1ZTsKIAkJCQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7CiAJCQl9Ci0JCQlpZiAoKGlu
Zm8tPnByX2Fzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKLQkJCSAgICAoaW5mby0+
cHJfYXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSB7CisJCQlpZiAoKGlucC0+c2N0cF9mbGFn
cyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgKChpbmZvLT5wcl9hc3NvY19p
ZCA9PSBTQ1RQX0NVUlJFTlRfQVNTT0MpIHx8CisJCQkgICAgIChpbmZvLT5wcl9hc3NvY19pZCA9
PSBTQ1RQX0FMTF9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfUkxPQ0soaW5wKTsKIAkJCQlMSVNU
X0ZPUkVBQ0goc3RjYiwgJmlucC0+c2N0cF9hc29jX2xpc3QsIHNjdHBfdGNibGlzdCkgewogCQkJ
CQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwpAQCAtNzIyNCw2ICs3MjY4LDkgQEAgc2N0cF9zZXRvcHQo
c3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRz
aXplLAogCQkJfQogCQl9CiAJCWlmICh0aGxkcy0+c3B0X3BhdGhjcHRobGQgIT0gMHhmZmZmKSB7
CisJCQlpZiAoc3RjYiAhPSBOVUxMKSB7CisJCQkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOworCQkJ
fQogCQkJZXJyb3IgPSBFSU5WQUw7CiAJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwg
TlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBlcnJvcik7CiAJCQlicmVhazsKQEAgLTcyOTgs
NyArNzM0NSw4IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwg
dm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5z
Y3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3Rw
X2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAgICAodGhsZHMtPnNw
dF9hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9m
bGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgICh0aGxkcy0+c3B0X2Fz
c29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9XTE9DSyhpbnAp
OwogCQkJCWlucC0+c2N0cF9lcC5kZWZfbmV0X2ZhaWx1cmUgPSB0aGxkcy0+c3B0X3BhdGhtYXhy
eHQ7CiAJCQkJaW5wLT5zY3RwX2VwLmRlZl9uZXRfcGZfdGhyZXNob2xkID0gdGhsZHMtPnNwdF9w
YXRocGZ0aGxkOwpAQCAtNzQxMSw3ICs3NDU5LDggQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tl
dCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQl9IGVs
c2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8
fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8
fAotCQkJICAgIChlbmNhcHMtPnN1ZV9hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsK
KwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJ
CQkgICAgIChlbmNhcHMtPnN1ZV9hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpKSB7CiAJ
CQkJU0NUUF9JTlBfV0xPQ0soaW5wKTsKIAkJCQlpbnAtPnNjdHBfZXAucG9ydCA9IGVuY2Fwcy0+
c3VlX3BvcnQ7CiAJCQkJU0NUUF9JTlBfV1VOTE9DSyhpbnApOwpAQCAtNzQzNiw3ICs3NDg1LDgg
QEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2
YWwsIHNpemVfdCBvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3Mg
JiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBT
Q1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChhdi0+YXNzb2NfaWQgPT0gU0NU
UF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9G
TEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FT
U09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9XTE9DSyhpbnApOwogCQkJCWlmIChhdi0+YXNzb2NfdmFs
dWUgPT0gMCkgewogCQkJCQlpbnAtPmVjbl9zdXBwb3J0ZWQgPSAwOwpAQCAtNzQ2NSw3ICs3NTE1
LDggQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpv
cHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxh
Z3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3Mg
JiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChhdi0+YXNzb2NfaWQgPT0g
U0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BD
Ql9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJF
X0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9XTE9DSyhpbnApOwogCQkJCWlmIChhdi0+YXNzb2Nf
dmFsdWUgPT0gMCkgewogCQkJCQlpbnAtPnByc2N0cF9zdXBwb3J0ZWQgPSAwOwpAQCAtNzQ5NCw3
ICs3NTQ1LDggQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2
b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNj
dHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBf
ZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChhdi0+YXNzb2Nf
aWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBT
Q1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoYXYtPmFzc29jX2lkID09IFNDVFBf
RlVUVVJFX0FTU09DKSkpIHsKIAkJCQlpZiAoKGF2LT5hc3NvY192YWx1ZSA9PSAwKSAmJgogCQkJ
CSAgICAoaW5wLT5hc2NvbmZfc3VwcG9ydGVkID09IDEpKSB7CiAJCQkJICAgIAkvKiBBVVRIIGlz
IHJlcXVpcmVkIGZvciBBU0NPTkYgKi8KQEAgLTc1MzAsNyArNzU4Miw4IEBAIHNjdHBfc2V0b3B0
KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0
c2l6ZSwKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxB
R1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1Nf
SU5fVENQUE9PTCkgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09D
KSkgeworCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkg
JiYKKwkJCSAgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpKSB7CiAJCQkJ
aWYgKChhdi0+YXNzb2NfdmFsdWUgIT0gMCkgJiYKIAkJCQkgICAgKGlucC0+YXV0aF9zdXBwb3J0
ZWQgPT0gMCkpIHsKIAkJCQkgICAgCS8qIEFVVEggaXMgcmVxdWlyZWQgZm9yIEFTQ09ORiAqLwpA
QCAtNzU3NCw3ICs3NjI3LDggQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBv
cHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYg
KChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChp
bnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChh
di0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBf
ZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoYXYtPmFzc29jX2lk
ID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9XTE9DSyhpbnApOwogCQkJ
CWlmIChhdi0+YXNzb2NfdmFsdWUgPT0gMCkgewogCQkJCQlpbnAtPnJlY29uZmlnX3N1cHBvcnRl
ZCA9IDA7CkBAIC03NjAzLDcgKzc2NTcsOCBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpz
bywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90IG9wdHNpemUsCiAJCX0gZWxzZSB7
CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJ
CQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0J
CQkgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAoKGlu
cC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgIChhdi0+
YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1dMT0NLKGlu
cCk7CiAJCQkJaWYgKGF2LT5hc3NvY192YWx1ZSA9PSAwKSB7CiAJCQkJCWlucC0+bnJzYWNrX3N1
cHBvcnRlZCA9IDA7CkBAIC03NjMyLDcgKzc2ODcsOCBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29j
a2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90IG9wdHNpemUsCiAJCX0g
ZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUp
IHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wp
IHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAg
ICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAg
IChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1dM
T0NLKGlucCk7CiAJCQkJaWYgKGF2LT5hc3NvY192YWx1ZSA9PSAwKSB7CiAJCQkJCWlucC0+cGt0
ZHJvcF9zdXBwb3J0ZWQgPSAwOwpAQCAtNzY3Miw3ICs3NzI4LDggQEAgc2N0cF9zZXRvcHQoc3Ry
dWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXpl
LAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19U
Q1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9U
Q1BQT09MKSB8fAotCQkJICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7
CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgor
CQkJICAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQ
X0lOUF9XTE9DSyhpbnApOwogCQkJCWlucC0+bWF4X2N3bmQgPSBhdi0+YXNzb2NfdmFsdWU7CiAJ
CQkJU0NUUF9JTlBfV1VOTE9DSyhpbnApOwpAQCAtNzY5MSwxNyArNzc0OCwxOCBAQCBzY3RwX3Nl
dG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90
IG9wdHNpemUsCiAJcmV0dXJuIChlcnJvcik7CiB9CiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogaW50CiBzY3RwX2N0bG91dHB1dChzdHJ1Y3Qgc29ja2V0ICpz
bywgc3RydWN0IHNvY2tvcHQgKnNvcHQpCiB7Ci0Jdm9pZCAqb3B0dmFsID0gTlVMTDsKLQlzaXpl
X3Qgb3B0c2l6ZSA9IDA7Ci0Jdm9pZCAqcDsKLQlpbnQgZXJyb3IgPSAwOwogI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pCisJc3RydWN0IGVwb2NoX3RyYWNrZXIgZXQ7CiAJc3RydWN0IHNjdHBfaW5w
Y2IgKmlucDsKICNlbmRpZgorCXZvaWQgKm9wdHZhbCA9IE5VTEw7CisJdm9pZCAqcDsKKwlzaXpl
X3Qgb3B0c2l6ZSA9IDA7CisJaW50IGVycm9yID0gMDsKIAogI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pCiAJaWYgKChzb3B0LT5zb3B0X2xldmVsID09IFNPTF9TT0NLRVQpICYmCkBAIC03NzMyLDYg
Kzc3OTAsMTAgQEAgc2N0cF9jdGxvdXRwdXQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2Nr
b3B0ICpzb3B0KQogCQlyZXR1cm4gKGVycm9yKTsKIAl9CiAJb3B0c2l6ZSA9IHNvcHQtPnNvcHRf
dmFsc2l6ZTsKKwlpZiAob3B0c2l6ZSA+IFNDVFBfU09DS0VUX09QVElPTl9MSU1JVCkgeworCQlT
Q1RQX0xUUkFDRV9FUlJfUkVUKHNvLT5zb19wY2IsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQ
X1VTUlJFUSwgRU5PQlVGUyk7CisJCXJldHVybiAoRU5PQlVGUyk7CisJfQogCWlmIChvcHRzaXpl
KSB7CiAJCVNDVFBfTUFMTE9DKG9wdHZhbCwgdm9pZCAqLCBvcHRzaXplLCBTQ1RQX01fU09DS09Q
VCk7CiAJCWlmIChvcHR2YWwgPT0gTlVMTCkgewpAQCAtNzc0NCwxMyArNzgwNiwxOSBAQCBzY3Rw
X2N0bG91dHB1dChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2tvcHQgKnNvcHQpCiAJCQln
b3RvIG91dDsKIAkJfQogCX0KLSNpZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNE
X3ZlcnNpb24gPj0gNTAwMDAwKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pIHx8IGRlZmluZWQoX1dJTjMyKQogCXAgPSAodm9pZCAqKXNvcHQtPnNvcHRf
dGQ7CiAjZWxzZQogCXAgPSAodm9pZCAqKXNvcHQtPnNvcHRfcDsKICNlbmRpZgogCWlmIChzb3B0
LT5zb3B0X2RpciA9PSBTT1BUX1NFVCkgeworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisJCU5F
VF9FUE9DSF9FTlRFUihldCk7CisjZW5kaWYKIAkJZXJyb3IgPSBzY3RwX3NldG9wdChzbywgc29w
dC0+c29wdF9uYW1lLCBvcHR2YWwsIG9wdHNpemUsIHApOworI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pCisJCU5FVF9FUE9DSF9FWElUKGV0KTsKKyNlbmRpZgogCX0gZWxzZSBpZiAoc29wdC0+c29w
dF9kaXIgPT0gU09QVF9HRVQpIHsKIAkJZXJyb3IgPSBzY3RwX2dldG9wdChzbywgc29wdC0+c29w
dF9uYW1lLCBvcHR2YWwsICZvcHRzaXplLCBwKTsKIAl9IGVsc2UgewpAQCAtNzc2OSwyMSArNzgz
NywyMCBAQCBvdXQ6CiAjZW5kaWYKIAogI2lmZGVmIElORVQKLSNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMDAKKyNpZiBkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCitpbnQKK3NjdHBfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2th
ZGRyICphZGRyKQoreworCXZvaWQgKnAgPSBOVUxMOworI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykKIHN0YXRpYyBpbnQKIHNjdHBfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNv
Y2thZGRyICphZGRyLCBzdHJ1Y3QgdGhyZWFkICpwKQogewotI2Vsc2UKLSNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykKKyNlbGlmIGRlZmluZWQoX19BUFBMRV9f
KQogc3RhdGljIGludAogc2N0cF9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29j
a2FkZHIgKmFkZHIsIHN0cnVjdCBwcm9jICpwKQogewotI2VsaWYgZGVmaW5lZChfX1BhbmRhX18p
IHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKLWludAotc2N0cF9jb25uZWN0KHN0cnVjdCBzb2Nr
ZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIpCi17Ci0Jdm9pZCAqcCA9IE5VTEw7Ci0jZWxp
ZiBkZWZpbmVkKF9fV2luZG93c19fKQorI2VsaWYgZGVmaW5lZChfV0lOMzIpCiBzdGF0aWMgaW50
CiBzY3RwX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqYWRkciwg
UEtUSFJFQUQgcCkKIHsKQEAgLTc3OTQsNiArNzg2MSw4IEBAIHNjdHBfY29ubmVjdChzdHJ1Y3Qg
c29ja2V0ICpzbywgc3RydWN0IG1idWYgKm5hbSwgc3RydWN0IHByb2MgKnApCiAJc3RydWN0IHNv
Y2thZGRyICphZGRyID0gbXRvZChuYW0sIHN0cnVjdCBzb2NrYWRkciAqKTsKIAogI2VuZGlmCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwlzdHJ1
Y3QgZXBvY2hfdHJhY2tlciBldDsKICNlbmRpZgogI2lmZGVmIFNDVFBfTVZSRgogCWludCBpLCBm
bmQgPSAwOwpAQCAtNzgxNiwyNCArNzg4NSwyNCBAQCBzY3RwX2Nvbm5lY3Qoc3RydWN0IHNvY2tl
dCAqc28sIHN0cnVjdCBtYnVmICpuYW0sIHN0cnVjdCBwcm9jICpwKQogCX0KIAogI2lmIGRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKLSAgICAgICAgLyogVE9ETyBfX1VzZXJzcGFjZV9fIGZhbGxzIGlu
dG8gdGhpcyBjb2RlIGZvciBJUHY2IHN0dWZmIGF0IHRoZSBtb21lbnQuLi4gKi8KKwkvKiBUT0RP
IF9fVXNlcnNwYWNlX18gZmFsbHMgaW50byB0aGlzIGNvZGUgZm9yIElQdjYgc3R1ZmYgYXQgdGhl
IG1vbWVudC4uLiAqLwogI2VuZGlmCi0jaWYgIWRlZmluZWQoX19XaW5kb3dzX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX29zX0xpbnV4KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5k
b3dzKQorI2lmICFkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19saW51eF9fKQogCXN3aXRj
aCAoYWRkci0+c2FfZmFtaWx5KSB7CiAjaWZkZWYgSU5FVDYKIAljYXNlIEFGX0lORVQ2OgogCXsK
LSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDAwMDAK
LQkJc3RydWN0IHNvY2thZGRyX2luNiAqc2luNnA7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJc3RydWN0IHNvY2thZGRyX2luNiAqc2luNjsK
IAogI2VuZGlmCiAJCWlmIChhZGRyLT5zYV9sZW4gIT0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9p
bjYpKSB7CiAJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9N
X1NDVFBfVVNSUkVRLCBFSU5WQUwpOwogCQkJcmV0dXJuIChFSU5WQUwpOwogCQl9Ci0jaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAwMDAwCi0JCXNpbjZw
ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilhZGRyOwotCQlpZiAocCAhPSBOVUxMICYmIChlcnJv
ciA9IHByaXNvbl9yZW1vdGVfaXA2KHAtPnRkX3VjcmVkLCAmc2luNnAtPnNpbjZfYWRkcikpICE9
IDApIHsKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQorCQlzaW42ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilhZGRyOworCQlpZiAocCAhPSBOVUxM
ICYmIChlcnJvciA9IHByaXNvbl9yZW1vdGVfaXA2KHAtPnRkX3VjcmVkLCAmc2luNi0+c2luNl9h
ZGRyKSkgIT0gMCkgewogCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFND
VFBfRlJPTV9TQ1RQX1VTUlJFUSwgZXJyb3IpOwogCQkJcmV0dXJuIChlcnJvcik7CiAJCX0KQEAg
LTc4NDQsMTkgKzc5MTMsMTkgQEAgc2N0cF9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1
Y3QgbWJ1ZiAqbmFtLCBzdHJ1Y3QgcHJvYyAqcCkKICNpZmRlZiBJTkVUCiAJY2FzZSBBRl9JTkVU
OgogCXsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4
MDAwMDAKLQkJc3RydWN0IHNvY2thZGRyX2luICpzaW5wOworI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCXN0cnVjdCBzb2NrYWRkcl9pbiAqc2lu
OwogCiAjZW5kaWYKLSNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmICFk
ZWZpbmVkKF9XSU4zMikKIAkJaWYgKGFkZHItPnNhX2xlbiAhPSBzaXplb2Yoc3RydWN0IHNvY2th
ZGRyX2luKSkgewogCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBf
RlJPTV9TQ1RQX1VTUlJFUSwgRUlOVkFMKTsKIAkJCXJldHVybiAoRUlOVkFMKTsKIAkJfQogI2Vu
ZGlmCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAw
MDAwCi0JCXNpbnAgPSAoc3RydWN0IHNvY2thZGRyX2luICopYWRkcjsKLQkJaWYgKHAgIT0gTlVM
TCAmJiAoZXJyb3IgPSBwcmlzb25fcmVtb3RlX2lwNChwLT50ZF91Y3JlZCwgJnNpbnAtPnNpbl9h
ZGRyKSkgIT0gMCkgeworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCisJCXNpbiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilhZGRyOworCQlpZiAocCAh
PSBOVUxMICYmIChlcnJvciA9IHByaXNvbl9yZW1vdGVfaXA0KHAtPnRkX3VjcmVkLCAmc2luLT5z
aW5fYWRkcikpICE9IDApIHsKIAkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxM
LCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIGVycm9yKTsKIAkJCXJldHVybiAoZXJyb3IpOwogCQl9
CkBAIC03ODcyLDcgKzc5NDEsOSBAQCBzY3RwX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0
cnVjdCBtYnVmICpuYW0sIHN0cnVjdCBwcm9jICpwKQogCVNDVFBfSU5QX0lOQ1JfUkVGKGlucCk7
CiAJU0NUUF9BU09DX0NSRUFURV9MT0NLKGlucCk7CiAJY3JlYXRlX2xvY2tfb24gPSAxOwotCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwlORVRf
RVBPQ0hfRU5URVIoZXQpOworI2VuZGlmCiAKIAlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBf
UENCX0ZMQUdTX1NPQ0tFVF9BTExHT05FKSB8fAogCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NU
UF9QQ0JfRkxBR1NfU09DS0VUX0dPTkUpKSB7CkBAIC03OTYwLDcgKzgwMzEsOCBAQCBzY3RwX2Nv
bm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICpuYW0sIHN0cnVjdCBwcm9jICpw
KQogCS8qIFdlIGFyZSBHT09EIHRvIGdvICovCiAJc3RjYiA9IHNjdHBfYWxvY19hc3NvYyhpbnAs
IGFkZHIsICZlcnJvciwgMCwgdnJmX2lkLAogCSAgICAgICAgICAgICAgICAgICAgICAgaW5wLT5z
Y3RwX2VwLnByZV9vcGVuX3N0cmVhbV9jb3VudCwKLQkgICAgICAgICAgICAgICAgICAgICAgIGlu
cC0+c2N0cF9lcC5wb3J0LCBwKTsKKwkgICAgICAgICAgICAgICAgICAgICAgIGlucC0+c2N0cF9l
cC5wb3J0LCBwLAorCSAgICAgICAgICAgICAgICAgICAgICAgU0NUUF9JTklUSUFMSVpFX0FVVEhf
UEFSQU1TKTsKIAlpZiAoc3RjYiA9PSBOVUxMKSB7CiAJCS8qIEdhayEgbm8gbWVtb3J5ICovCiAJ
CWdvdG8gb3V0X25vdzsKQEAgLTc5NzAsMTkgKzgwNDIsMTggQEAgc2N0cF9jb25uZWN0KHN0cnVj
dCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtLCBzdHJ1Y3QgcHJvYyAqcCkKIAkJLyogU2V0
IHRoZSBjb25uZWN0ZWQgZmxhZyBzbyB3ZSBjYW4gcXVldWUgZGF0YSAqLwogCQlzb2lzY29ubmVj
dGluZyhzbyk7CiAJfQotCVNDVFBfU0VUX1NUQVRFKCZzdGNiLT5hc29jLCBTQ1RQX1NUQVRFX0NP
T0tJRV9XQUlUKTsKKwlTQ1RQX1NFVF9TVEFURShzdGNiLCBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlU
KTsKIAkodm9pZClTQ1RQX0dFVFRJTUVfVElNRVZBTCgmc3RjYi0+YXNvYy50aW1lX2VudGVyZWQp
OwogCi0JLyogaW5pdGlhbGl6ZSBhdXRoZW50aWNhdGlvbiBwYXJhbWV0ZXJzIGZvciB0aGUgYXNz
b2MgKi8KLQlzY3RwX2luaXRpYWxpemVfYXV0aF9wYXJhbXMoaW5wLCBzdGNiKTsKLQogCXNjdHBf
c2VuZF9pbml0aWF0ZShpbnAsIHN0Y2IsIFNDVFBfU09fTE9DS0VEKTsKIAlTQ1RQX1RDQl9VTkxP
Q0soc3RjYik7CiAgb3V0X25vdzoKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQorCU5FVF9FUE9DSF9FWElUKGV0KTsKKyNlbmRpZgogCWlmIChjcmVh
dGVfbG9ja19vbikgewogCQlTQ1RQX0FTT0NfQ1JFQVRFX1VOTE9DSyhpbnApOwogCX0KLQogCVND
VFBfSU5QX0RFQ1JfUkVGKGlucCk7CiAJcmV0dXJuIChlcnJvcik7CiB9CkBAIC04MTI3LDcgKzgx
OTgsOCBAQCBzY3RwY29ubl9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2Fk
ZHIgKmFkZHIpCiAJLyogV2UgYXJlIEdPT0QgdG8gZ28gKi8KIAlzdGNiID0gc2N0cF9hbG9jX2Fz
c29jKGlucCwgYWRkciwgJmVycm9yLCAwLCB2cmZfaWQsCiAJICAgICAgICAgICAgICAgICAgICAg
ICBpbnAtPnNjdHBfZXAucHJlX29wZW5fc3RyZWFtX2NvdW50LAotCSAgICAgICAgICAgICAgICAg
ICAgICAgaW5wLT5zY3RwX2VwLnBvcnQsIHApOworCSAgICAgICAgICAgICAgICAgICAgICAgaW5w
LT5zY3RwX2VwLnBvcnQsIHAsCisJICAgICAgICAgICAgICAgICAgICAgICBTQ1RQX0lOSVRJQUxJ
WkVfQVVUSF9QQVJBTVMpOwogCWlmIChzdGNiID09IE5VTEwpIHsKIAkJLyogR2FrISBubyBtZW1v
cnkgKi8KIAkJZ290byBvdXRfbm93OwpAQCAtODEzNywxMiArODIwOSw5IEBAIHNjdHBjb25uX2Nv
bm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqYWRkcikKIAkJLyogU2V0
IHRoZSBjb25uZWN0ZWQgZmxhZyBzbyB3ZSBjYW4gcXVldWUgZGF0YSAqLwogCQlzb2lzY29ubmVj
dGluZyhzbyk7CiAJfQotCVNDVFBfU0VUX1NUQVRFKCZzdGNiLT5hc29jLCBTQ1RQX1NUQVRFX0NP
T0tJRV9XQUlUKTsKKwlTQ1RQX1NFVF9TVEFURShzdGNiLCBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlU
KTsKIAkodm9pZClTQ1RQX0dFVFRJTUVfVElNRVZBTCgmc3RjYi0+YXNvYy50aW1lX2VudGVyZWQp
OwogCi0JLyogaW5pdGlhbGl6ZSBhdXRoZW50aWNhdGlvbiBwYXJhbWV0ZXJzIGZvciB0aGUgYXNz
b2MgKi8KLQlzY3RwX2luaXRpYWxpemVfYXV0aF9wYXJhbXMoaW5wLCBzdGNiKTsKLQogCXNjdHBf
c2VuZF9pbml0aWF0ZShpbnAsIHN0Y2IsIFNDVFBfU09fTE9DS0VEKTsKIAlTQ1RQX1RDQl9VTkxP
Q0soc3RjYik7CiAgb3V0X25vdzoKQEAgLTgxNTUsMTYgKzgyMjQsMTIgQEAgc2N0cGNvbm5fY29u
bmVjdChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRyKQogfQogI2VuZGlm
CiBpbnQKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1
MDAwMDAKLSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA3MDAwMDAKKyNpZiBkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCitzY3RwX2xpc3RlbihzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IGJhY2tsb2csIHN0
cnVjdCBwcm9jICpwKQorI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKIHNjdHBfbGlzdGVuKHN0
cnVjdCBzb2NrZXQgKnNvLCBpbnQgYmFja2xvZywgc3RydWN0IHRocmVhZCAqcCkKLSNlbHNlCi1z
Y3RwX2xpc3RlbihzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHRocmVhZCAqcCkKLSNlbmRpZgot
I2VsaWYgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNlbGlmIGRlZmluZWQoX1dJTjMyKQogc2N0cF9s
aXN0ZW4oc3RydWN0IHNvY2tldCAqc28sIGludCBiYWNrbG9nLCBQS1RIUkVBRCBwKQotI2VsaWYg
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQotc2N0cF9saXN0ZW4oc3RydWN0IHNvY2tldCAqc28sIGlu
dCBiYWNrbG9nLCBzdHJ1Y3QgcHJvYyAqcCkKICNlbHNlCiBzY3RwX2xpc3RlbihzdHJ1Y3Qgc29j
a2V0ICpzbywgc3RydWN0IHByb2MgKnApCiAjZW5kaWYKQEAgLTgyOTksNyArODM2NCw3IEBAIHNj
dHBfbGlzdGVuKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgcHJvYyAqcCkKIAkJc2N0cF9sb2df
bG9jayhpbnAsIChzdHJ1Y3Qgc2N0cF90Y2IgKilOVUxMLCBTQ1RQX0xPR19MT0NLX1NPQ0spOwog
CX0KICNlbmRpZgotI2lmIChkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lv
biA+IDUwMDAwMCkgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlTT0NLX0xPQ0soc28pOwogCWVycm9y
ID0gc29saXN0ZW5fcHJvdG9fY2hlY2soc28pOwogCVNPQ0tfVU5MT0NLKHNvKTsKQEAgLTgzMzks
MjUgKzg0MDQsMTcgQEAgc2N0cF9saXN0ZW4oc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBwcm9j
ICpwKQogCQl9CiAJfQogCVNDVFBfSU5QX1dMT0NLKGlucCk7Ci0jaWYgKGRlZmluZWQoX19GcmVl
QlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID4gNTAwMDAwKSB8fCBkZWZpbmVkKF9fV2luZG93
c19fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi0jaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0g
MTIwMDAzNAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSA9PSAw
KSB7CiAJCVNPQ0tfTE9DSyhzbyk7CiAJCXNvbGlzdGVuX3Byb3RvKHNvLCBiYWNrbG9nKTsKIAkJ
U09DS19VTkxPQ0soc28pOwogCX0KLSNlbGlmIF9fRnJlZUJTRF92ZXJzaW9uID49IDcwMDAwMCB8
fCBkZWZpbmVkKF9fV2luZG93c19fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi0JLyogSXQg
YXBwZWFycyBmb3IgNy4wIGFuZCBvbiwgd2UgbXVzdCBhbHdheXMgY2FsbCB0aGlzLiAqLworI2Vs
aWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlTT0NLX0xPQ0so
c28pOwogCXNvbGlzdGVuX3Byb3RvKHNvLCBiYWNrbG9nKTsKLSNlbHNlCi0JU09DS19MT0NLKHNv
KTsKLQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpID09IDAp
IHsKLQkJc29saXN0ZW5fcHJvdG8oc28pOwotCX0KLSNlbmRpZgogI2VuZGlmCi0jaWYgIWRlZmlu
ZWQoX19GcmVlQlNEX18pIHx8IF9fRnJlZUJTRF92ZXJzaW9uIDwgMTIwMDAzNAorI2lmICEoZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAJaWYgKGlucC0+
c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpIHsKIAkJLyogcmVtb3ZlIHRoZSBB
Q0NFUFRDT05OIGZsYWcgZm9yIG9uZS10by1tYW55IHNvY2tldHMgKi8KICNpZiBkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCkBAIC04MzY4LDcgKzg0MjUsNyBAQCBzY3RwX2xpc3RlbihzdHJ1Y3Qgc29j
a2V0ICpzbywgc3RydWN0IHByb2MgKnApCiAJfQogCVNPQ0tfVU5MT0NLKHNvKTsKICNlbmRpZgot
I2lmIChkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA3MDAwMDAp
IHx8IGRlZmluZWQoX19XaW5kb3dzX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCWlmIChiYWNrbG9nID4gMCkgewogCQlpbnAtPnNjdHBfZmxhZ3MgfD0gU0NUUF9Q
Q0JfRkxBR1NfQUNDRVBUSU5HOwogCX0gZWxzZSB7CkBAIC04Mzg0LDI1ICs4NDQxLDE1IEBAIHNj
dHBfbGlzdGVuKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgcHJvYyAqcCkKIHN0YXRpYyBpbnQg
c2N0cF9kZWZlcmVkX3dha2V1cF9jbnQgPSAwOwogCiBpbnQKLSNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogc2N0cF9hY2NlcHQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVj
dCBzb2NrYWRkciAqKmFkZHIpCiB7Ci0jZWxpZiBkZWZpbmVkKF9fUGFuZGFfXykKLXNjdHBfYWNj
ZXB0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIGludCAqbmFtZWxl
biwKLQkgICAgdm9pZCAqYWNjZXB0X2luZm8sIGludCAqYWNjZXB0X2luZm9fbGVuKQotewotI2Vs
c2UKLXNjdHBfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtKQotewot
CXN0cnVjdCBzb2NrYWRkciAqYWRkciA9IG10b2QobmFtLCBzdHJ1Y3Qgc29ja2FkZHIgKik7Ci0j
ZW5kaWYKIAlzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2I7CiAJc3RydWN0IHNjdHBfaW5wY2IgKmlucDsK
IAl1bmlvbiBzY3RwX3NvY2tzdG9yZSBzdG9yZTsKICNpZmRlZiBJTkVUNgotI2lmZGVmIFNDVFBf
S0FNRQorI2lmIGRlZmluZWQoU0NUUF9LQU1FKSAmJiBkZWZpbmVkKFNDVFBfRU1CRURERURfVjZf
U0NPUEUpCiAJaW50IGVycm9yOwotI2VuZGlmIC8qIFNDVFBfS0FNRSAqLworI2VuZGlmCiAjZW5k
aWYKIAlpbnAgPSAoc3RydWN0IHNjdHBfaW5wY2IgKilzby0+c29fcGNiOwogCkBAIC04NDEwLDUz
ICs4NDU3LDkyIEBAIHNjdHBfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAq
bmFtKQogCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1ND
VFBfVVNSUkVRLCBFSU5WQUwpOwogCQlyZXR1cm4gKEVDT05OUkVTRVQpOwogCX0KLQlTQ1RQX0lO
UF9STE9DSyhpbnApOworCVNDVFBfSU5QX1dMT0NLKGlucCk7CiAJaWYgKGlucC0+c2N0cF9mbGFn
cyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpIHsKLQkJU0NUUF9JTlBfUlVOTE9DSyhpbnApOwor
CQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7CiAJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxM
LCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIEVPUE5PVFNVUFApOwogCQlyZXR1cm4gKEVP
UE5PVFNVUFApOwogCX0KIAlpZiAoc28tPnNvX3N0YXRlICYgU1NfSVNESVNDT05ORUNURUQpIHsK
LQkJU0NUUF9JTlBfUlVOTE9DSyhpbnApOworCQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7CiAJCVND
VFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEs
IEVDT05OQUJPUlRFRCk7CiAJCXJldHVybiAoRUNPTk5BQk9SVEVEKTsKIAl9CiAJc3RjYiA9IExJ
U1RfRklSU1QoJmlucC0+c2N0cF9hc29jX2xpc3QpOwogCWlmIChzdGNiID09IE5VTEwpIHsKLQkJ
U0NUUF9JTlBfUlVOTE9DSyhpbnApOworCQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7CiAJCVNDVFBf
TFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIEVJ
TlZBTCk7CiAJCXJldHVybiAoRUNPTk5SRVNFVCk7CiAJfQogCVNDVFBfVENCX0xPQ0soc3RjYik7
Ci0JU0NUUF9JTlBfUlVOTE9DSyhpbnApOwogCXN0b3JlID0gc3RjYi0+YXNvYy5wcmltYXJ5X2Rl
c3RpbmF0aW9uLT5yby5fbF9hZGRyOwotCXN0Y2ItPmFzb2Muc3RhdGUgJj0gflNDVFBfU1RBVEVf
SU5fQUNDRVBUX1FVRVVFOwotCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKKwlTQ1RQX0NMRUFSX1NV
QlNUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfSU5fQUNDRVBUX1FVRVVFKTsKKwkvKiBXYWtlIGFueSBk
ZWxheWVkIHNsZWVwIGFjdGlvbiAqLworCWlmIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9G
TEFHU19ET05UX1dBS0UpIHsKKwkJaW5wLT5zY3RwX2ZsYWdzICY9IH5TQ1RQX1BDQl9GTEFHU19E
T05UX1dBS0U7CisJCWlmIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19XQUtFT1VU
UFVUKSB7CisJCQlpbnAtPnNjdHBfZmxhZ3MgJj0gflNDVFBfUENCX0ZMQUdTX1dBS0VPVVRQVVQ7
CisJCQlTT0NLQlVGX0xPQ0soJmlucC0+c2N0cF9zb2NrZXQtPnNvX3NuZCk7CisJCQlpZiAoc293
cml0ZWFibGUoaW5wLT5zY3RwX3NvY2tldCkpIHsKKyNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CisJCQkJLypfX1VzZXJzcGFjZV9fIGNhbGxpbmcgc293d2FrdXBfbG9ja2VkIGJlY2F1c2Ugb2Yg
U09DS0JVRl9MT0NLIGFib3ZlLiAqLworI2VuZGlmCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
fHwgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJCQlzb3d3YWtl
dXBfbG9ja2VkKGlucC0+c2N0cF9zb2NrZXQpOworI2Vsc2UKKyNpZiBkZWZpbmVkKF9fQVBQTEVf
XykKKwkJCQkvKiBzb2NrZXQgaXMgbG9ja2VkICovCisjZW5kaWYKKwkJCQlzb3d3YWtldXAoaW5w
LT5zY3RwX3NvY2tldCk7CisjZW5kaWYKKwkJCX0gZWxzZSB7CisJCQkJU09DS0JVRl9VTkxPQ0so
JmlucC0+c2N0cF9zb2NrZXQtPnNvX3NuZCk7CisJCQl9CisJCX0KKwkJaWYgKGlucC0+c2N0cF9m
bGFncyAmIFNDVFBfUENCX0ZMQUdTX1dBS0VJTlBVVCkgeworCQkJaW5wLT5zY3RwX2ZsYWdzICY9
IH5TQ1RQX1BDQl9GTEFHU19XQUtFSU5QVVQ7CisJCQlTT0NLQlVGX0xPQ0soJmlucC0+c2N0cF9z
b2NrZXQtPnNvX3Jjdik7CisJCQlpZiAoc29yZWFkYWJsZShpbnAtPnNjdHBfc29ja2V0KSkgewor
CQkJCXNjdHBfZGVmZXJlZF93YWtldXBfY250Kys7CisjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQorCQkJCS8qX19Vc2Vyc3BhY2VfXyBjYWxsaW5nIHNvcndha3VwX2xvY2tlZCBiZWNhdXNlIG9m
IFNPQ0tCVUZfTE9DSyBhYm92ZSAqLworI2VuZGlmCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
fHwgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJCQlzb3J3YWtl
dXBfbG9ja2VkKGlucC0+c2N0cF9zb2NrZXQpOworI2Vsc2UKKyNpZiBkZWZpbmVkKF9fQVBQTEVf
XykKKwkJCQkvKiBzb2NrZXQgaXMgbG9ja2VkICovCisjZW5kaWYKKwkJCQlzb3J3YWtldXAoaW5w
LT5zY3RwX3NvY2tldCk7CisjZW5kaWYKKwkJCX0gZWxzZSB7CisJCQkJU09DS0JVRl9VTkxPQ0so
JmlucC0+c2N0cF9zb2NrZXQtPnNvX3Jjdik7CisJCQl9CisJCX0KKwl9CisJU0NUUF9JTlBfV1VO
TE9DSyhpbnApOworCWlmIChzdGNiLT5hc29jLnN0YXRlICYgU0NUUF9TVEFURV9BQk9VVF9UT19C
RV9GUkVFRCkgeworCQlzY3RwX2ZyZWVfYXNzb2MoaW5wLCBzdGNiLCBTQ1RQX05PUk1BTF9QUk9D
LAorCQkgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBfVVNSUkVRICsgU0NUUF9MT0NfMTkp
OworCX0gZWxzZSB7CisJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKKwl9CiAJc3dpdGNoIChzdG9y
ZS5zYS5zYV9mYW1pbHkpIHsKICNpZmRlZiBJTkVUCiAJY2FzZSBBRl9JTkVUOgogCXsKIAkJc3Ry
dWN0IHNvY2thZGRyX2luICpzaW47CiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZp
bmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCQlTQ1RQX01BTExPQ19TT05BTUUoc2luLCBzdHJ1Y3Qgc29ja2FkZHJfaW4gKiwg
c2l6ZW9mICpzaW4pOwogCQlpZiAoc2luID09IE5VTEwpCiAJCQlyZXR1cm4gKEVOT01FTSk7Ci0j
ZWxzZQotCQlzaW4gPSAoc3RydWN0IHNvY2thZGRyX2luICopYWRkcjsKLQkJbWVtc2V0KHNpbiwg
MCwgc2l6ZW9mKCpzaW4pKTsKLSNlbmRpZgogCQlzaW4tPnNpbl9mYW1pbHkgPSBBRl9JTkVUOwog
I2lmZGVmIEhBVkVfU0lOX0xFTgogCQlzaW4tPnNpbl9sZW4gPSBzaXplb2YoKnNpbik7CiAjZW5k
aWYKIAkJc2luLT5zaW5fcG9ydCA9IHN0b3JlLnNpbi5zaW5fcG9ydDsKIAkJc2luLT5zaW5fYWRk
ciA9IHN0b3JlLnNpbi5zaW5fYWRkcjsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZp
bmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCQkqYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHIgKilzaW47Ci0jZWxpZiAhZGVmaW5l
ZChfX1BhbmRhX18pCi0JCVNDVFBfQlVGX0xFTihuYW0pID0gc2l6ZW9mKCpzaW4pOwotI2VuZGlm
CiAJCWJyZWFrOwogCX0KICNlbmRpZgpAQCAtODQ2NSwxNCArODU1MSw5IEBAIHNjdHBfYWNjZXB0
KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtKQogCXsKIAkJc3RydWN0IHNvY2th
ZGRyX2luNiAqc2luNjsKIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19B
UFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAJCVNDVFBfTUFMTE9DX1NPTkFNRShzaW42LCBzdHJ1Y3Qgc29ja2FkZHJfaW42ICosIHNpemVv
ZiAqc2luNik7CiAJCWlmIChzaW42ID09IE5VTEwpCiAJCQlyZXR1cm4gKEVOT01FTSk7Ci0jZWxz
ZQotCQlzaW42ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilhZGRyOwotCQltZW1zZXQoc2luNiwg
MCwgc2l6ZW9mKCpzaW42KSk7Ci0jZW5kaWYKIAkJc2luNi0+c2luNl9mYW1pbHkgPSBBRl9JTkVU
NjsKICNpZmRlZiBIQVZFX1NJTjZfTEVOCiAJCXNpbjYtPnNpbjZfbGVuID0gc2l6ZW9mKCpzaW42
KTsKQEAgLTg0OTYsMTEgKzg1NzcsNyBAQCBzY3RwX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzbywg
c3RydWN0IG1idWYgKm5hbSkKIAkJCXNpbjYtPnNpbjZfc2NvcGVfaWQgPSAwOwkvKiBYWFggKi8K
ICNlbmRpZiAvKiBTQ1RQX0tBTUUgKi8KICNlbmRpZiAvKiBTQ1RQX0VNQkVEREVEX1Y2X1NDT1BF
ICovCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRl
ZmluZWQoX19XaW5kb3dzX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJKmFkZHIgPSAo
c3RydWN0IHNvY2thZGRyICopc2luNjsKLSNlbGlmICFkZWZpbmVkKF9fUGFuZGFfXykKLQkJU0NU
UF9CVUZfTEVOKG5hbSkgPSBzaXplb2YoKnNpbjYpOwotI2VuZGlmCiAJCWJyZWFrOwogCX0KICNl
bmRpZgpAQCAtODUyNyw3MyArODYwNCwxNSBAQCBzY3RwX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpz
bywgc3RydWN0IG1idWYgKm5hbSkKIAkJLyogVFNOSCAqLwogCQlicmVhazsKIAl9Ci0JLyogV2Fr
ZSBhbnkgZGVsYXllZCBzbGVlcCBhY3Rpb24gKi8KLQlpZiAoaW5wLT5zY3RwX2ZsYWdzICYgU0NU
UF9QQ0JfRkxBR1NfRE9OVF9XQUtFKSB7Ci0JCVNDVFBfSU5QX1dMT0NLKGlucCk7Ci0JCWlucC0+
c2N0cF9mbGFncyAmPSB+U0NUUF9QQ0JfRkxBR1NfRE9OVF9XQUtFOwotCQlpZiAoaW5wLT5zY3Rw
X2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfV0FLRU9VVFBVVCkgewotCQkJaW5wLT5zY3RwX2ZsYWdz
ICY9IH5TQ1RQX1BDQl9GTEFHU19XQUtFT1VUUFVUOwotCQkJU0NUUF9JTlBfV1VOTE9DSyhpbnAp
OwotCQkJU09DS0JVRl9MT0NLKCZpbnAtPnNjdHBfc29ja2V0LT5zb19zbmQpOwotCQkJaWYgKHNv
d3JpdGVhYmxlKGlucC0+c2N0cF9zb2NrZXQpKSB7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qX19Vc2Vyc3BhY2VfXyBjYWxsaW5nIHNv
d3dha3VwX2xvY2tlZCBiZWNhdXNlIG9mIFNPQ0tCVUZfTE9DSyBhYm92ZS4gKi8KLSNlbmRpZgot
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pIHx8IGRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKLQkJCQlzb3d3YWtldXBfbG9ja2VkKGlucC0+c2N0cF9zb2NrZXQp
OwotI2Vsc2UKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKLQkJCQkvKiBzb2NrZXQgaXMgbG9ja2Vk
ICovCi0jZW5kaWYKLQkJCQlzb3d3YWtldXAoaW5wLT5zY3RwX3NvY2tldCk7Ci0jZW5kaWYKLQkJ
CX0gZWxzZSB7Ci0JCQkJU09DS0JVRl9VTkxPQ0soJmlucC0+c2N0cF9zb2NrZXQtPnNvX3NuZCk7
Ci0JCQl9Ci0JCQlTQ1RQX0lOUF9XTE9DSyhpbnApOwotCQl9Ci0JCWlmIChpbnAtPnNjdHBfZmxh
Z3MgJiBTQ1RQX1BDQl9GTEFHU19XQUtFSU5QVVQpIHsKLQkJCWlucC0+c2N0cF9mbGFncyAmPSB+
U0NUUF9QQ0JfRkxBR1NfV0FLRUlOUFVUOwotCQkJU0NUUF9JTlBfV1VOTE9DSyhpbnApOwotCQkJ
U09DS0JVRl9MT0NLKCZpbnAtPnNjdHBfc29ja2V0LT5zb19yY3YpOwotCQkJaWYgKHNvcmVhZGFi
bGUoaW5wLT5zY3RwX3NvY2tldCkpIHsKLQkJCQlzY3RwX2RlZmVyZWRfd2FrZXVwX2NudCsrOwot
I2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLypfX1VzZXJzcGFjZV9fIGNhbGxpbmcgc29yd2FrdXBfbG9ja2VkIGJlY2F1c2Ugb2YgU09D
S0JVRl9MT0NLIGFib3ZlICovCi0jZW5kaWYKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBk
ZWZpbmVkKF9fV2luZG93c19fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi0JCQkJc29yd2Fr
ZXVwX2xvY2tlZChpbnAtPnNjdHBfc29ja2V0KTsKLSNlbHNlCi0jaWYgZGVmaW5lZChfX0FQUExF
X18pCi0JCQkJLyogc29ja2V0IGlzIGxvY2tlZCAqLwotI2VuZGlmCi0JCQkJc29yd2FrZXVwKGlu
cC0+c2N0cF9zb2NrZXQpOwotI2VuZGlmCi0JCQl9IGVsc2UgewotCQkJCVNPQ0tCVUZfVU5MT0NL
KCZpbnAtPnNjdHBfc29ja2V0LT5zb19yY3YpOwotCQkJfQotCQkJU0NUUF9JTlBfV0xPQ0soaW5w
KTsKLQkJfQotCQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7Ci0JfQotCWlmIChzdGNiLT5hc29jLnN0
YXRlICYgU0NUUF9TVEFURV9BQk9VVF9UT19CRV9GUkVFRCkgewotCQlTQ1RQX1RDQl9MT0NLKHN0
Y2IpOwotCQlzY3RwX2ZyZWVfYXNzb2MoaW5wLCBzdGNiLCBTQ1RQX05PUk1BTF9QUk9DLAotCQkg
ICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBfVVNSUkVRICsgU0NUUF9MT0NfMTkpOwotCX0K
IAlyZXR1cm4gKDApOwogfQogCiAjaWZkZWYgSU5FVAogaW50Ci0jaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pCisjaWYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIHNjdHBfaW5nZXRhZGRyKHN0cnVjdCBzb2NrZXQgKnNv
LCBzdHJ1Y3Qgc29ja2FkZHIgKiphZGRyKQogewogCXN0cnVjdCBzb2NrYWRkcl9pbiAqc2luOwot
I2VsaWYgZGVmaW5lZChfX1BhbmRhX18pCi1zY3RwX2luZ2V0YWRkcihzdHJ1Y3Qgc29ja2V0ICpz
bywgc3RydWN0IHNvY2thZGRyICphZGRyKQotewotCXN0cnVjdCBzb2NrYWRkcl9pbiAqc2luID0g
KHN0cnVjdCBzb2NrYWRkcl9pbiAqKWFkZHI7CiAjZWxzZQogc2N0cF9pbmdldGFkZHIoc3RydWN0
IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICpuYW0pCiB7CkBAIC04NjA2LDEyICs4NjI1LDEwIEBA
IHNjdHBfaW5nZXRhZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtKQogCS8q
CiAJICogRG8gdGhlIG1hbGxvYyBmaXJzdCBpbiBjYXNlIGl0IGJsb2Nrcy4KIAkgKi8KLSNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dp
bmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCVNDVFBfTUFMTE9DX1NPTkFN
RShzaW4sIHN0cnVjdCBzb2NrYWRkcl9pbiAqLCBzaXplb2YgKnNpbik7CiAJaWYgKHNpbiA9PSBO
VUxMKQogCQlyZXR1cm4gKEVOT01FTSk7Ci0jZWxpZiBkZWZpbmVkKF9fUGFuZGFfXykKLQltZW1z
ZXQoc2luLCAwLCBzaXplb2YoKnNpbikpOwogI2Vsc2UKIAlTQ1RQX0JVRl9MRU4obmFtKSA9IHNp
emVvZigqc2luKTsKIAltZW1zZXQoc2luLCAwLCBzaXplb2YoKnNpbikpOwpAQCAtODYyMiw3ICs4
NjM5LDcgQEAgc2N0cF9pbmdldGFkZHIoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICpu
YW0pCiAjZW5kaWYKIAlpbnAgPSAoc3RydWN0IHNjdHBfaW5wY2IgKilzby0+c29fcGNiOwogCWlm
ICghaW5wKSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18p
IHx8IGRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJ
U0NUUF9GUkVFX1NPTkFNRShzaW4pOwogI2VuZGlmCiAJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5w
LCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIEVJTlZBTCk7CkBAIC04NjkzLDcg
Kzg3MTAsNyBAQCBzY3RwX2luZ2V0YWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYg
Km5hbSkKIAkJCX0KIAkJfQogCQlpZiAoIWZuZCkgewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
IHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAJCQlTQ1RQX0ZSRUVfU09OQU1FKHNpbik7CiAjZW5kaWYKIAkJ
CVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKQEAgLTg3MDIsMjEgKzg3MTksMTcgQEAgc2N0cF9pbmdl
dGFkZHIoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICpuYW0pCiAJCX0KIAl9CiAJU0NU
UF9JTlBfUlVOTE9DSyhpbnApOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQo
X19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJKCphZGRyKSA9IChzdHJ1Y3Qgc29ja2FkZHIgKilzaW47CiAjZW5kaWYKIAlyZXR1
cm4gKDApOwogfQogCiBpbnQKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9f
QVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogc2N0cF9wZWVyYWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICoq
YWRkcikKIHsKIAlzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbjsKLSNlbGlmIGRlZmluZWQoX19QYW5k
YV9fKQotc2N0cF9wZWVyYWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICph
ZGRyKQotewotCXN0cnVjdCBzb2NrYWRkcl9pbiAqc2luID0gKHN0cnVjdCBzb2NrYWRkcl9pbiAq
KWFkZHI7CiAjZWxzZQogc2N0cF9wZWVyYWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1i
dWYgKm5hbSkKIHsKQEAgLTg3MzAsMTIgKzg3NDMsMTAgQEAgc2N0cF9wZWVyYWRkcihzdHJ1Y3Qg
c29ja2V0ICpzbywgc3RydWN0IG1idWYgKm5hbSkKIAlzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQ7CiAK
IAkvKiBEbyB0aGUgbWFsbG9jIGZpcnN0IGluIGNhc2UgaXQgYmxvY2tzLiAqLwotI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93
c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJU0NUUF9NQUxMT0NfU09OQU1FKHNp
biwgc3RydWN0IHNvY2thZGRyX2luICosIHNpemVvZiAqc2luKTsKIAlpZiAoc2luID09IE5VTEwp
CiAJCXJldHVybiAoRU5PTUVNKTsKLSNlbGlmIGRlZmluZWQoX19QYW5kYV9fKQotCW1lbXNldChz
aW4sIDAsIHNpemVvZigqc2luKSk7CiAjZWxzZQogCVNDVFBfQlVGX0xFTihuYW0pID0gc2l6ZW9m
KCpzaW4pOwogCW1lbXNldChzaW4sIDAsIHNpemVvZigqc2luKSk7CkBAIC04NzQ5LDcgKzg3NjAs
NyBAQCBzY3RwX3BlZXJhZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtKQog
CWlmICgoaW5wID09IE5VTEwpIHx8CiAJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0Jf
RkxBR1NfQ09OTkVDVEVEKSA9PSAwKSkgewogCQkvKiBVRFAgdHlwZSBhbmQgbGlzdGVuZXJzIHdp
bGwgZHJvcCBvdXQgaGVyZSAqLwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQo
X19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJCVNDVFBfRlJFRV9TT05BTUUoc2luKTsKICNlbmRpZgogCQlTQ1RQX0xUUkFDRV9F
UlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBFTk9UQ09OTik7
CkBAIC04NzYyLDcgKzg3NzMsNyBAQCBzY3RwX3BlZXJhZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBz
dHJ1Y3QgbWJ1ZiAqbmFtKQogCX0KIAlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CiAJaWYgKHN0Y2Ig
PT0gTlVMTCkgewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9f
KSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJ
CVNDVFBfRlJFRV9TT05BTUUoc2luKTsKICNlbmRpZgogCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlu
cCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBFSU5WQUwpOwpAQCAtODc4MSwx
OSArODc5MiwxOSBAQCBzY3RwX3BlZXJhZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1
ZiAqbmFtKQogCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKIAlpZiAoIWZuZCkgewogCQkvKiBObyBJ
UHY0IGFkZHJlc3MgKi8KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQ
TEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCQlTQ1RQX0ZSRUVfU09OQU1FKHNpbik7CiAjZW5kaWYKIAkJU0NUUF9MVFJBQ0VfRVJSX1JF
VChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1VTUlJFUSwgRU5PRU5UKTsKIAkJcmV0
dXJuIChFTk9FTlQpOwogCX0KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9f
QVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogCSgqYWRkcikgPSAoc3RydWN0IHNvY2thZGRyICopc2luOwogI2VuZGlmCiAJcmV0dXJu
ICgwKTsKIH0KIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9f
KSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBz
dHJ1Y3QgcHJfdXNycmVxcyBzY3RwX3VzcnJlcXMgPSB7CiAjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykKIAkucHJ1X2Fib3J0ID0gc2N0cF9hYm9ydCwKQEAgLTg4MDIsMTUgKzg4MTMsMTAgQEAgc3Ry
dWN0IHByX3VzcnJlcXMgc2N0cF91c3JyZXFzID0gewogCS5wcnVfYmluZCA9IHNjdHBfYmluZCwK
IAkucHJ1X2Nvbm5lY3QgPSBzY3RwX2Nvbm5lY3QsCiAJLnBydV9jb250cm9sID0gaW5fY29udHJv
bCwKLSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA2OTAwMDAKIAkucHJ1X2Nsb3NlID0gc2N0cF9j
bG9zZSwKIAkucHJ1X2RldGFjaCA9IHNjdHBfY2xvc2UsCiAJLnBydV9zb3BvbGwgPSBzb3BvbGxf
Z2VuZXJpYywKIAkucHJ1X2ZsdXNoID0gc2N0cF9mbHVzaCwKLSNlbHNlCi0JLnBydV9kZXRhY2gg
PSBzY3RwX2RldGFjaCwKLQkucHJ1X3NvcG9sbCA9IHNvcG9sbCwKLSNlbmRpZgogCS5wcnVfZGlz
Y29ubmVjdCA9IHNjdHBfZGlzY29ubmVjdCwKIAkucHJ1X2xpc3RlbiA9IHNjdHBfbGlzdGVuLAog
CS5wcnVfcGVlcmFkZHIgPSBzY3RwX3BlZXJhZGRyLApAQCAtODg0MCw3ICs4ODQ2LDcgQEAgc3Ry
dWN0IHByX3VzcnJlcXMgc2N0cF91c3JyZXFzID0gewogCS5wcnVfc29zZW5kID0gc2N0cF9zb3Nl
bmQsCiAJLnBydV9zb3JlY2VpdmUgPSBzY3RwX3NvcmVjZWl2ZSwKIAkucHJ1X3NvcG9sbCA9IHNv
cG9sbAotI2VsaWYgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNlbGlmIGRlZmluZWQoX1dJTjMyKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCXNjdHBfYWJvcnQsCiAJc2N0cF9hY2NlcHQsCiAJ
c2N0cF9hdHRhY2gsCkBAIC04ODY2LDcgKzg4NzIsNyBAQCBzdHJ1Y3QgcHJfdXNycmVxcyBzY3Rw
X3VzcnJlcXMgPSB7CiAJc2N0cF9jbG9zZQogI2VuZGlmCiB9OwotI2VsaWYgIWRlZmluZWQoX19Q
YW5kYV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2VsaWYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKIGludAogc2N0cF91c3JyZXEoc28sIHJlcSwgbSwgbmFtLCBjb250cm9sKQogCXN0
cnVjdCBzb2NrZXQgKnNvOwpAQCAtODg3NCw4ICs4ODgwLDYgQEAgc2N0cF91c3JyZXEoc28sIHJl
cSwgbSwgbmFtLCBjb250cm9sKQogCXN0cnVjdCBtYnVmICptLCAqbmFtLCAqY29udHJvbDsKIHsK
IAlzdHJ1Y3QgcHJvYyAqcCA9IGN1cnByb2M7Ci0JdWludDMyX3QgdnJmX2lkOwotCXN0cnVjdCBz
Y3RwX3ZyZiAqdnJmOwogCWludCBlcnJvcjsKIAlpbnQgZmFtaWx5OwogCXN0cnVjdCBzY3RwX2lu
cGNiICppbnAgPSAoc3RydWN0IHNjdHBfaW5wY2IgKilzby0+c29fcGNiOwpAQCAtOTAxMSw3ICs5
MDE1LDcgQEAgcmVnaXN0ZXJfcmVjdl9jYihzdHJ1Y3Qgc29ja2V0ICpzbywKIH0KIAogaW50Ci1y
ZWdpc3Rlcl9zZW5kX2NiKHN0cnVjdCBzb2NrZXQgKnNvLCB1aW50MzJfdCBzYl90aHJlc2hvbGQs
IGludCAoKnNlbmRfY2IpKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHVpbnQzMl90IHNiX2ZyZWUpKQor
cmVnaXN0ZXJfc2VuZF9jYihzdHJ1Y3Qgc29ja2V0ICpzbywgdWludDMyX3Qgc2JfdGhyZXNob2xk
LCBpbnQgKCpzZW5kX2NiKShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCB1aW50MzJfdCBzYl9mcmVlLCB2
b2lkICp1bHBfaW5mbykpCiB7CiAJc3RydWN0IHNjdHBfaW5wY2IgKmlucDsKIApAQCAtOTA0NSw0
ICs5MDQ5LDIzIEBAIHJlZ2lzdGVyX3VscF9pbmZvIChzdHJ1Y3Qgc29ja2V0ICpzbywgdm9pZCAq
dWxwX2luZm8pCiAJU0NUUF9JTlBfV1VOTE9DSyhpbnApOwogCXJldHVybiAoMSk7CiB9CisKK2lu
dAorcmV0cmlldmVfdWxwX2luZm8gKHN0cnVjdCBzb2NrZXQgKnNvLCB2b2lkICoqcHVscF9pbmZv
KQoreworCXN0cnVjdCBzY3RwX2lucGNiICppbnA7CisKKwlpZiAocHVscF9pbmZvID09IE5VTEwp
IHsKKwkJcmV0dXJuICgwKTsKKwl9CisKKwlpbnAgPSAoc3RydWN0IHNjdHBfaW5wY2IgKikgc28t
PnNvX3BjYjsKKwlpZiAoaW5wID09IE5VTEwpIHsKKwkJcmV0dXJuICgwKTsKKwl9CisJU0NUUF9J
TlBfUkxPQ0soaW5wKTsKKwkqcHVscF9pbmZvID0gaW5wLT51bHBfaW5mbzsKKwlTQ1RQX0lOUF9S
VU5MT0NLKGlucCk7CisJcmV0dXJuICgxKTsKK30KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBs
aWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfdmFyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25l
dGluZXQvc2N0cF92YXIuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGJj
NGFmZTk1ZjFmMDlkY2Q3MmZlZmY1YjMyYTM5NTc5ZTY4OWI3NDAuLmQyNDMzZDYwNzIyODVhZTJh
ZWYzZmVlNDZjNzQwZTI5NGJmNjAwZjEKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0
L3NjdHBfdmFyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfdmFyLmgK
QEAgLTMyLDkgKzMyLDkgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaWZkZWYgX19GcmVlQlNEX18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRG
cmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfdmFyLmggMzE3NDU3IDIwMTctMDQtMjYgMTk6
MjY6NDBaIHR1ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQv
c2N0cF92YXIuaCAzNjMzMjMgMjAyMC0wNy0xOSAxMjozNDoxOVogdHVleGVuICQiKTsKICNlbmRp
ZgogCiAjaWZuZGVmIF9ORVRJTkVUX1NDVFBfVkFSX0hfCkBAIC00NCw3ICs0NCw3IEBAIF9fRkJT
RElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX3Zhci5oIDMxNzQ1NyAyMDE3LTA0
LTI2IDE5OjI2OjQwWiB0dWV4CiAKICNpZiBkZWZpbmVkKF9LRVJORUwpIHx8IGRlZmluZWQoX19V
c2Vyc3BhY2VfXykKIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBM
RV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiBleHRlcm4gc3RydWN0IHByX3VzcnJlcXMgc2N0cF91c3JyZXFzOwogI2VuZGlmCiAKQEAgLTE4
NiwxOCArMTg2LDEyIEBAIGV4dGVybiBzdHJ1Y3QgcHJfdXNycmVxcyBzY3RwX3VzcnJlcXM7CiAJ
fSBcCiB9CiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+
IDUwMDAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAKICNkZWZpbmUgc2N0cF9mcmVlX3JlbW90ZV9hZGRyKF9fbmV0KSB7IFwKIAlpZiAoKF9f
bmV0KSkgeyAgXAogCQlpZiAoU0NUUF9ERUNSRU1FTlRfQU5EX0NIRUNLX1JFRkNPVU5UKCYoX19u
ZXQpLT5yZWZfY291bnQpKSB7IFwKLQkJCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmKF9fbmV0
KS0+cnh0X3RpbWVyLnRpbWVyKTsgXAotCQkJKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCYoX19u
ZXQpLT5wbXR1X3RpbWVyLnRpbWVyKTsgXAotCQkJKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCYo
X19uZXQpLT5oYl90aW1lci50aW1lcik7IFwKLQkJCWlmICgoX19uZXQpLT5yby5yb19ydCkgeyBc
Ci0JCQkJUlRGUkVFKChfX25ldCktPnJvLnJvX3J0KTsgXAotCQkJCShfX25ldCktPnJvLnJvX3J0
ID0gTlVMTDsgXAotCQkJfSBcCisJCQlST19OSEZSRUUoJihfX25ldCktPnJvKTsgXAogCQkJaWYg
KChfX25ldCktPnNyY19hZGRyX3NlbGVjdGVkKSB7IFwKIAkJCQlzY3RwX2ZyZWVfaWZhKChfX25l
dCktPnJvLl9zX2FkZHIpOyBcCiAJCQkJKF9fbmV0KS0+cm8uX3NfYWRkciA9IE5VTEw7IFwKQEAg
LTIzOSw5ICsyMzMsNiBAQCBleHRlcm4gc3RydWN0IHByX3VzcnJlcXMgc2N0cF91c3JyZXFzOwog
I2RlZmluZSBzY3RwX2ZyZWVfcmVtb3RlX2FkZHIoX19uZXQpIHsgXAogCWlmICgoX19uZXQpKSB7
IFwKIAkJaWYgKFNDVFBfREVDUkVNRU5UX0FORF9DSEVDS19SRUZDT1VOVCgmKF9fbmV0KS0+cmVm
X2NvdW50KSkgeyBcCi0JCQkodm9pZClTQ1RQX09TX1RJTUVSX1NUT1AoJihfX25ldCktPnJ4dF90
aW1lci50aW1lcik7IFwKLQkJCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmKF9fbmV0KS0+cG10
dV90aW1lci50aW1lcik7IFwKLQkJCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmKF9fbmV0KS0+
aGJfdGltZXIudGltZXIpOyBcCiAJCQlpZiAoKF9fbmV0KS0+cm8ucm9fcnQpIHsgXAogCQkJCVJU
RlJFRSgoX19uZXQpLT5yby5yb19ydCk7IFwKIAkJCQkoX19uZXQpLT5yby5yb19ydCA9IE5VTEw7
IFwKQEAgLTI1OCwzMSArMjQ5LDYgQEAgZXh0ZXJuIHN0cnVjdCBwcl91c3JyZXFzIHNjdHBfdXNy
cmVxczsKIAl9IFwKIH0KIAotI2lmIGRlZmluZWQoX19QYW5kYV9fKQotI2RlZmluZSBzY3RwX3Ni
ZnJlZShjdGwsIHN0Y2IsIHNiLCBtKSB7IFwKLQlpZiAoKHNiKS0+c2JfY2MgPj0gKHVpbnQzMl90
KVNDVFBfQlVGX0xFTigobSkpKSB7IFwKLQkJYXRvbWljX3N1YnRyYWN0X2ludCgmKHNiKS0+c2Jf
Y2MsIFNDVFBfQlVGX0xFTigobSkpKTsgXAotCX0gZWxzZSB7IFwKLQkJKHNiKS0+c2JfY2MgPSAw
OyBcCi0JfSBcCi0JaWYgKCgoY3RsKS0+ZG9fbm90X3JlZl9zdGNiID09IDApICYmIHN0Y2IpIHsg
XAotCQlpZiAoKHN0Y2IpLT5hc29jLnNiX2NjID49ICh1aW50MzJfdClTQ1RQX0JVRl9MRU4oKG0p
KSkgeyBcCi0JCQlhdG9taWNfc3VidHJhY3RfaW50KCYoc3RjYiktPmFzb2Muc2JfY2MsIFNDVFBf
QlVGX0xFTigobSkpKTsgXAotCQl9IGVsc2UgeyBcCi0JCQkoc3RjYiktPmFzb2Muc2JfY2MgPSAw
OyBcCi0JCX0gXAotCX0gXAotfQotCi0jZGVmaW5lIHNjdHBfc2JhbGxvYyhzdGNiLCBzYiwgbSkg
eyBcCi0JYXRvbWljX2FkZF9pbnQoJihzYiktPnNiX2NjLCBTQ1RQX0JVRl9MRU4oKG0pKSk7IFwK
LQlpZiAoc3RjYikgeyBcCi0JCWF0b21pY19hZGRfaW50KCYoc3RjYiktPmFzb2Muc2JfY2MsIFND
VFBfQlVGX0xFTigobSkpKTsgXAotCX0gXAotfQotCi0jZWxzZQotCiAjZGVmaW5lIHNjdHBfc2Jm
cmVlKGN0bCwgc3RjYiwgc2IsIG0pIHsgXAogCVNDVFBfU0FWRV9BVE9NSUNfREVDUkVNRU5UKCYo
c2IpLT5zYl9jYywgU0NUUF9CVUZfTEVOKChtKSkpOyBcCiAJU0NUUF9TQVZFX0FUT01JQ19ERUNS
RU1FTlQoJihzYiktPnNiX21iY250LCBNU0laRSk7IFwKQEAgLTMwMSw3ICsyNjcsNiBAQCBleHRl
cm4gc3RydWN0IHByX3VzcnJlcXMgc2N0cF91c3JyZXFzOwogCX0gXAogfQogI2VuZGlmCi0jZW5k
aWYKIAogI2RlZmluZSBzY3RwX3Vjb3VudF9pbmNyKHZhbCkgeyBcCiAJdmFsKys7IFwKQEAgLTQw
MywyMiArMzY4LDEzIEBAIHN0cnVjdCBzY3RwX3RjYjsKIHN0cnVjdCBzY3RwaGRyOwogCiAKLSNp
ZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPiA2OTAwMDApIHx8
IGRlZmluZWQoX19XaW5kb3dzX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogdm9pZCBzY3RwX2Nsb3NlKHN0cnVjdCBzb2NrZXQgKnNvKTsKICNlbHNlCiBpbnQgc2N0
cF9kZXRhY2goc3RydWN0IHNvY2tldCAqc28pOwogI2VuZGlmCiBpbnQgc2N0cF9kaXNjb25uZWN0
KHN0cnVjdCBzb2NrZXQgKnNvKTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVk
KF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKLSNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA8IDkwMjAwMAotdm9pZCBzY3RwX2N0bGlucHV0IF9f
UCgoaW50LCBzdHJ1Y3Qgc29ja2FkZHIgKiwgdm9pZCAqKSk7Ci1pbnQgc2N0cF9jdGxvdXRwdXQg
X19QKChzdHJ1Y3Qgc29ja2V0ICosIHN0cnVjdCBzb2Nrb3B0ICopKTsKLSNpZmRlZiBJTkVUCi12
b2lkIHNjdHBfaW5wdXRfd2l0aF9wb3J0IF9fUCgoc3RydWN0IG1idWYgKiwgaW50LCB1aW50MTZf
dCkpOwotdm9pZCBzY3RwX2lucHV0IF9fUCgoc3RydWN0IG1idWYgKiwgaW50KSk7Ci0jZW5kaWYK
LXZvaWQgc2N0cF9wYXRobXR1X2FkanVzdG1lbnQgX19QKChzdHJ1Y3Qgc2N0cF90Y2IgKiwgdWlu
dDE2X3QpKTsKLSNlbHNlCisjaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZiBkZWZpbmVk
KF9fQVBQTEVfXykgJiYgIWRlZmluZWQoQVBQTEVfTEVPUEFSRCkgJiYgIWRlZmluZWQoQVBQTEVf
U05PV0xFT1BBUkQpICYmICFkZWZpbmVkKEFQUExFX0xJT04pICYmICFkZWZpbmVkKEFQUExFX01P
VU5UQUlOTElPTikgJiYgIWRlZmluZWQoQVBQTEVfRUxDQVBJVEFOKQogdm9pZCBzY3RwX2N0bGlu
cHV0KGludCwgc3RydWN0IHNvY2thZGRyICosIHZvaWQgKiwgc3RydWN0IGlmbmV0ICogU0NUUF9V
TlVTRUQpOwogI2Vsc2UKQEAgLTQyNywxOCArMzgzLDE1IEBAIHZvaWQgc2N0cF9jdGxpbnB1dChp
bnQsIHN0cnVjdCBzb2NrYWRkciAqLCB2b2lkICopOwogaW50IHNjdHBfY3Rsb3V0cHV0KHN0cnVj
dCBzb2NrZXQgKiwgc3RydWN0IHNvY2tvcHQgKik7CiAjaWZkZWYgSU5FVAogdm9pZCBzY3RwX2lu
cHV0X3dpdGhfcG9ydChzdHJ1Y3QgbWJ1ZiAqLCBpbnQsIHVpbnQxNl90KTsKLSNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSAxMTAwMDIwCisjaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIGludCBzY3RwX2lucHV0
KHN0cnVjdCBtYnVmICoqLCBpbnQgKiwgaW50KTsKICNlbHNlCiB2b2lkIHNjdHBfaW5wdXQoc3Ry
dWN0IG1idWYgKiwgaW50KTsKICNlbmRpZgogI2VuZGlmCiB2b2lkIHNjdHBfcGF0aG10dV9hZGp1
c3RtZW50KHN0cnVjdCBzY3RwX3RjYiAqLCB1aW50MTZfdCk7Ci0jZW5kaWYKICNlbHNlCi0jaWYg
ZGVmaW5lZChfX1BhbmRhX18pCi12b2lkIHNjdHBfaW5wdXQocGFraGFuZGxlX3R5cGUgaV9wYWsp
OwotI2VsaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKIHZvaWQgc2N0cF9wYXRobXR1X2FkanVzdG1lbnQoc3RydWN0IHNjdHBfdGNiICosIHVpbnQx
Nl90KTsKICNlbHNlCiB2b2lkIHNjdHBfaW5wdXQoc3RydWN0IG1idWYgKiwuLi4pOwpAQCAtNDQ2
LDE3ICszOTksMTEgQEAgdm9pZCBzY3RwX2lucHV0KHN0cnVjdCBtYnVmICosLi4uKTsKIHZvaWQg
KnNjdHBfY3RsaW5wdXQoaW50LCBzdHJ1Y3Qgc29ja2FkZHIgKiwgdm9pZCAqKTsKIGludCBzY3Rw
X2N0bG91dHB1dChpbnQsIHN0cnVjdCBzb2NrZXQgKiwgaW50LCBpbnQsIHN0cnVjdCBtYnVmICoq
KTsKICNlbmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9u
IDwgOTAyMDAwCi12b2lkIHNjdHBfZHJhaW4gX19QKCh2b2lkKSk7Ci0jZWxzZQogdm9pZCBzY3Rw
X2RyYWluKHZvaWQpOwotI2VuZGlmCiAjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogdm9pZCBz
Y3RwX2luaXQodWludDE2X3QsCiAgICAgICAgICAgICAgICBpbnQgKCopKHZvaWQgKmFkZHIsIHZv
aWQgKmJ1ZmZlciwgc2l6ZV90IGxlbmd0aCwgdWludDhfdCB0b3MsIHVpbnQ4X3Qgc2V0X2RmKSwK
LSAgICAgICAgICAgICAgIHZvaWQgKCopKGNvbnN0IGNoYXIgKiwgLi4uKSk7Ci0jZWxpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA8IDkwMjAwMAotdm9pZCBzY3Rw
X2luaXQgX19QKCh2b2lkKSk7CisgICAgICAgICAgICAgICB2b2lkICgqKShjb25zdCBjaGFyICos
IC4uLiksIGludCBzdGFydF90aHJlYWRzKTsKICNlbGlmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAo
IWRlZmluZWQoQVBQTEVfTEVPUEFSRCkgJiYgIWRlZmluZWQoQVBQTEVfU05PV0xFT1BBUkQpICYm
IWRlZmluZWQoQVBQTEVfTElPTikgJiYgIWRlZmluZWQoQVBQTEVfTU9VTlRBSU5MSU9OKSkKIHZv
aWQgc2N0cF9pbml0KHN0cnVjdCBwcm90b3N3ICpwcCwgc3RydWN0IGRvbWFpbiAqZHApOwogI2Vs
c2UKQEAgLTQ2NCw1NSArNDExLDM3IEBAIHZvaWQgc2N0cF9pbml0KHZvaWQpOwogdm9pZCBzY3Rw
X25vdGlmeShzdHJ1Y3Qgc2N0cF9pbnBjYiAqLCBzdHJ1Y3Qgc2N0cF90Y2IgKiwgc3RydWN0IHNj
dHBfbmV0cyAqLAogICAgIHVpbnQ4X3QsIHVpbnQ4X3QsIHVpbnQxNl90LCB1aW50MzJfdCk7CiAj
ZW5kaWYKLSNpZiAhZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiAhZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIHZvaWQgc2N0cF9maW5pc2godm9pZCk7CiAj
ZW5kaWYKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKSB8
fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVm
aW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIGludCBzY3RwX2ZsdXNoKHN0
cnVjdCBzb2NrZXQgKiwgaW50KTsKICNlbmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYm
IF9fRnJlZUJTRF92ZXJzaW9uIDwgOTAyMDAwCi1pbnQgc2N0cF9zaHV0ZG93biBfX1AoKHN0cnVj
dCBzb2NrZXQgKikpOwotI2Vsc2UKIGludCBzY3RwX3NodXRkb3duKHN0cnVjdCBzb2NrZXQgKik7
Ci0jZW5kaWYKIGludCBzY3RwX2JpbmR4KHN0cnVjdCBzb2NrZXQgKiwgaW50LCBzdHJ1Y3Qgc29j
a2FkZHJfc3RvcmFnZSAqLAogCWludCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsKIC8qIGNhbid0IHVz
ZSBzY3RwX2Fzc29jX3QgaGVyZSAqLwogaW50IHNjdHBfcGVlbG9mZihzdHJ1Y3Qgc29ja2V0ICos
IHN0cnVjdCBzb2NrZXQgKiwgaW50LCBjYWRkcl90LCBpbnQgKik7Ci0jaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pCisj
aWYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIGludCBzY3RwX2luZ2V0YWRkcihzdHJ1Y3Qgc29j
a2V0ICosIHN0cnVjdCBzb2NrYWRkciAqKik7Ci0jZWxpZiBkZWZpbmVkKF9fUGFuZGFfXykKLWlu
dCBzY3RwX2luZ2V0YWRkcihzdHJ1Y3Qgc29ja2V0ICosIHN0cnVjdCBzb2NrYWRkciAqKTsKICNl
bHNlCiBpbnQgc2N0cF9pbmdldGFkZHIoc3RydWN0IHNvY2tldCAqLCBzdHJ1Y3QgbWJ1ZiAqKTsK
ICNlbmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8
fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBpbnQg
c2N0cF9wZWVyYWRkcihzdHJ1Y3Qgc29ja2V0ICosIHN0cnVjdCBzb2NrYWRkciAqKik7Ci0jZWxp
ZiBkZWZpbmVkKF9fUGFuZGFfXykKLWludCBzY3RwX3BlZXJhZGRyKHN0cnVjdCBzb2NrZXQgKiwg
c3RydWN0IHNvY2thZGRyICopOwogI2Vsc2UKIGludCBzY3RwX3BlZXJhZGRyKHN0cnVjdCBzb2Nr
ZXQgKiwgc3RydWN0IG1idWYgKik7CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMDAKLSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA3
MDAwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogaW50IHNjdHBfbGlzdGVuKHN0cnVjdCBzb2NrZXQgKiwgaW50LCBzdHJ1Y3QgdGhyZWFkICop
OwotI2Vsc2UKLWludCBzY3RwX2xpc3RlbihzdHJ1Y3Qgc29ja2V0ICosIHN0cnVjdCB0aHJlYWQg
Kik7Ci0jZW5kaWYKLSNlbGlmIGRlZmluZWQoX19XaW5kb3dzX18pCisjZWxpZiBkZWZpbmVkKF9X
SU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIGludCBzY3RwX2xpc3RlbihzdHJ1Y3Qg
c29ja2V0ICosIGludCwgUEtUSFJFQUQpOwogI2VsaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
aW50IHNjdHBfbGlzdGVuKHN0cnVjdCBzb2NrZXQgKiwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsKICNl
bHNlCiBpbnQgc2N0cF9saXN0ZW4oc3RydWN0IHNvY2tldCAqLCBzdHJ1Y3QgcHJvYyAqKTsKICNl
bmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBk
ZWZpbmVkKF9fV2luZG93c19fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBpbnQgc2N0cF9h
Y2NlcHQoc3RydWN0IHNvY2tldCAqLCBzdHJ1Y3Qgc29ja2FkZHIgKiopOwotI2VsaWYgZGVmaW5l
ZChfX1BhbmRhX18pCi1pbnQgc2N0cF9hY2NlcHQoc3RydWN0IHNvY2tldCAqLCBzdHJ1Y3Qgc29j
a2FkZHIgKiwgaW50ICosIHZvaWQgKiwgaW50ICopOwotI2Vsc2UKLWludCBzY3RwX2FjY2VwdChz
dHJ1Y3Qgc29ja2V0ICosIHN0cnVjdCBtYnVmICopOwotI2VuZGlmCiAKICNlbmRpZiAvKiBfS0VS
TkVMICovCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwdXRp
bC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3Jz
Y3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHB1dGlsLmMKb2xkIG1vZGUgMTAw
NjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCAxMTM0YjUwNjU3OGJiNzg5NDgxYzJmMzEyOGI4N2Nl
MTFlYmJmZmM0Li5mMDUwNjEwYWI1ZDIzZWU1ODA5NWY4NGQwNmY5ODVjY2ExMDA5MDAzCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwdXRpbC5jCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Vz
cnNjdHBsaWIvbmV0aW5ldC9zY3RwdXRpbC5jCkBAIC0zMiw5ICszMiw5IEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmZGVmIF9fRnJlZUJTRF9fCisjaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRl
IDxzeXMvY2RlZnMuaD4KLV9fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3Rw
dXRpbC5jIDMzNDI4NiAyMDE4LTA1LTI4IDEzOjMxOjQ3WiB0dWV4ZW4gJCIpOworX19GQlNESUQo
IiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHB1dGlsLmMgMzY0MjY4IDIwMjAtMDgtMTYg
MTE6NTA6MzdaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9v
cy5oPgpAQCAtNTgsNyArNTgsOCBAQCBfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGlu
ZXQvc2N0cHV0aWwuYyAzMzQyODYgMjAxOC0wNS0yOCAxMzozMTo0N1ogdHVleAogI2lmIGRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfY29uc3RhbnRzLmg+CiAj
ZW5kaWYKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX2tkdHJh
Y2UuaD4KICNpZiBkZWZpbmVkKElORVQ2KSB8fCBkZWZpbmVkKElORVQpCiAjaW5jbHVkZSA8bmV0
aW5ldC90Y3BfdmFyLmg+CiAjZW5kaWYKQEAgLTcwLDExICs3MSw3IEBAIF9fRkJTRElEKCIkRnJl
ZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwdXRpbC5jIDMzNDI4NiAyMDE4LTA1LTI4IDEzOjMx
OjQ3WiB0dWV4CiAjZW5kaWYKICNlbmRpZgogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCi0jZGVm
aW5lIEFQUExFX0ZJTEVfTk8gOAotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fV2luZG93c19fKQor
I2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmICFkZWZp
bmVkKFNDVFBfTE9DQUxfVFJBQ0VfQlVGKQogI2luY2x1ZGUgImV2ZW50cmFjZV9uZXRpbmV0Lmgi
CiAjaW5jbHVkZSAic2N0cHV0aWwudG1oIiAvKiB0aGlzIGlzIHRoZSBmaWxlIHRoYXQgd2lsbCBi
ZSBhdXRvIGdlbmVyYXRlZCAqLwpAQCAtMjczLDcgKzI3MCw3IEBAIHNjdHBfbG9nX21iKHN0cnVj
dCBtYnVmICptLCBpbnQgZnJvbSkKIAlzY3RwX2Nsb2cueC5tYi5kYXRhID0gU0NUUF9CVUZfQVQo
bSwgMCk7CiAJaWYgKFNDVFBfQlVGX0lTX0VYVEVOREVEKG0pKSB7CiAJCXNjdHBfY2xvZy54Lm1i
LmV4dCA9IFNDVFBfQlVGX0VYVEVORF9CQVNFKG0pOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKQor
I2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkvKiBB
UFBMRSBkb2VzIG5vdCB1c2UgYSByZWZfY250LCBidXQgYSBmb3J3YXJkL2JhY2t3YXJkIHJlZiBx
dWV1ZSAqLwogI2Vsc2UKIAkJc2N0cF9jbG9nLngubWIucmVmY250ID0gKHVpbnQ4X3QpKFNDVFBf
QlVGX0VYVEVORF9SRUZDTlQobSkpOwpAQCAtMzcxLDcgKzM2OCw3IEBAIHNjdHBfbG9nX2N3bmQo
c3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsIGludCBhdWdtZW50
LCB1aW50OF90CiAjZW5kaWYKIH0KIAotI2lmbmRlZiBfX0FQUExFX18KKyNpZiAhZGVmaW5lZChf
X0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiB2b2lkCiBzY3RwX2xvZ19sb2Nr
KHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgdWludDhfdCBm
cm9tKQogewpAQCAtMzg2LDcgKzM4Myw3IEBAIHNjdHBfbG9nX2xvY2soc3RydWN0IHNjdHBfaW5w
Y2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLCB1aW50OF90IGZyb20pCiAJCXNjdHBfY2xv
Zy54LmxvY2suc29jayA9ICh2b2lkICopIE5VTEw7CiAJfQogCXNjdHBfY2xvZy54LmxvY2suaW5w
ID0gKHZvaWQgKikgaW5wOwotI2lmIChkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0Rf
dmVyc2lvbiA+PSA1MDMwMDApIHx8IChkZWZpbmVkKF9fQVBQTEVfXykpCisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykKIAlpZiAoc3RjYikgewogCQlzY3RwX2Nsb2cueC5sb2NrLnRjYl9sb2NrID0g
bXR4X293bmVkKCZzdGNiLT50Y2JfbXR4KTsKIAl9IGVsc2UgewpAQCAtMzk5LDExICszOTYsNyBA
QCBzY3RwX2xvZ19sb2NrKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAq
c3RjYiwgdWludDhfdCBmcm9tKQogCQlzY3RwX2Nsb2cueC5sb2NrLmlucF9sb2NrID0gU0NUUF9M
T0NLX1VOS05PV047CiAJCXNjdHBfY2xvZy54LmxvY2suY3JlYXRlX2xvY2sgPSBTQ1RQX0xPQ0tf
VU5LTk9XTjsKIAl9Ci0jaWYgKGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJz
aW9uIDw9IDYwMjAwMCkKLQlzY3RwX2Nsb2cueC5sb2NrLmluZm9fbG9jayA9IG10eF9vd25lZCgm
U0NUUF9CQVNFX0lORk8oaXBpX2VwX210eCkpOwotI2Vsc2UKIAlzY3RwX2Nsb2cueC5sb2NrLmlu
Zm9fbG9jayA9IHJ3X3dvd25lZCgmU0NUUF9CQVNFX0lORk8oaXBpX2VwX210eCkpOwotI2VuZGlm
CiAJaWYgKGlucCAmJiAoaW5wLT5zY3RwX3NvY2tldCkpIHsKIAkJc2N0cF9jbG9nLngubG9jay5z
b2NrX2xvY2sgPSBtdHhfb3duZWQoJihpbnAtPnNjdHBfc29ja2V0LT5zb19yY3Yuc2JfbXR4KSk7
CiAJCXNjdHBfY2xvZy54LmxvY2suc29ja3JjdmJ1Zl9sb2NrID0gbXR4X293bmVkKCYoaW5wLT5z
Y3RwX3NvY2tldC0+c29fcmN2LnNiX210eCkpOwpAQCAtNTc2LDcgKzU2OSw3IEBAIHNjdHBfd2Fr
ZXVwX2xvZyhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQzMl90IHdha2VfY250LCBpbnQgZnJv
bSkKIH0KIAogdm9pZAotc2N0cF9sb2dfYmxvY2sodWludDhfdCBmcm9tLCBzdHJ1Y3Qgc2N0cF9h
c3NvY2lhdGlvbiAqYXNvYywgc2l6ZV90IHNlbmRsZW4pCitzY3RwX2xvZ19ibG9jayh1aW50OF90
IGZyb20sIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLCBzc2l6ZV90IHNlbmRsZW4pCiB7
CiAjaWYgZGVmaW5lZChTQ1RQX0xPQ0FMX1RSQUNFX0JVRikKIAlzdHJ1Y3Qgc2N0cF9jd25kX2xv
ZyBzY3RwX2Nsb2c7CkBAIC04MDIsNiArNzk1LDgwIEBAIHNjdHBfYXVkaXRfbG9nKHVpbnQ4X3Qg
ZXYsIHVpbnQ4X3QgZmQpCiAKICNlbmRpZgogCisvKgorICogVGhlIGNvbnZlcnNpb24gZnJvbSB0
aW1lIHRvIHRpY2tzIGFuZCB2aWNlIHZlcnNhIGlzIGRvbmUgYnkgcm91bmRpbmcKKyAqIHVwd2Fy
ZHMuIFRoaXMgd2F5IHdlIGNhbiB0ZXN0IGluIHRoZSBjb2RlIHRoZSB0aW1lIHRvIGJlIHBvc2l0
aXZlIGFuZAorICoga25vdyB0aGF0IHRoaXMgY29ycmVzcG9uZHMgdG8gYSBwb3NpdGl2ZSBudW1i
ZXIgb2YgdGlja3MuCisgKi8KKwordWludDMyX3QKK3NjdHBfbXNlY3NfdG9fdGlja3ModWludDMy
X3QgbXNlY3MpCit7CisJdWludDY0X3QgdGVtcDsKKwl1aW50MzJfdCB0aWNrczsKKworCWlmICho
eiA9PSAxMDAwKSB7CisJCXRpY2tzID0gbXNlY3M7CisJfSBlbHNlIHsKKwkJdGVtcCA9ICgoKHVp
bnQ2NF90KW1zZWNzICogaHopICsgOTk5KSAvIDEwMDA7CisJCWlmICh0ZW1wID4gVUlOVDMyX01B
WCkgeworCQkJdGlja3MgPSBVSU5UMzJfTUFYOworCQl9IGVsc2UgeworCQkJdGlja3MgPSAodWlu
dDMyX3QpdGVtcDsKKwkJfQorCX0KKwlyZXR1cm4gKHRpY2tzKTsKK30KKwordWludDMyX3QKK3Nj
dHBfdGlja3NfdG9fbXNlY3ModWludDMyX3QgdGlja3MpCit7CisJdWludDY0X3QgdGVtcDsKKwl1
aW50MzJfdCBtc2VjczsKKworCWlmIChoeiA9PSAxMDAwKSB7CisJCW1zZWNzID0gdGlja3M7CisJ
fSBlbHNlIHsKKwkJdGVtcCA9ICgoKHVpbnQ2NF90KXRpY2tzICogMTAwMCkgKyAoaHogLSAxKSkg
LyBoejsKKwkJaWYgKHRlbXAgPiBVSU5UMzJfTUFYKSB7CisJCQltc2VjcyA9IFVJTlQzMl9NQVg7
CisJCX0gZWxzZSB7CisJCQltc2VjcyA9ICh1aW50MzJfdCl0ZW1wOworCQl9CisJfQorCXJldHVy
biAobXNlY3MpOworfQorCit1aW50MzJfdAorc2N0cF9zZWNzX3RvX3RpY2tzKHVpbnQzMl90IHNl
Y3MpCit7CisJdWludDY0X3QgdGVtcDsKKwl1aW50MzJfdCB0aWNrczsKKworCXRlbXAgPSAodWlu
dDY0X3Qpc2VjcyAqIGh6OworCWlmICh0ZW1wID4gVUlOVDMyX01BWCkgeworCQl0aWNrcyA9IFVJ
TlQzMl9NQVg7CisJfSBlbHNlIHsKKwkJdGlja3MgPSAodWludDMyX3QpdGVtcDsKKwl9CisJcmV0
dXJuICh0aWNrcyk7Cit9CisKK3VpbnQzMl90CitzY3RwX3RpY2tzX3RvX3NlY3ModWludDMyX3Qg
dGlja3MpCit7CisJdWludDY0X3QgdGVtcDsKKwl1aW50MzJfdCBzZWNzOworCisJdGVtcCA9ICgo
dWludDY0X3QpdGlja3MgKyAoaHogLSAxKSkgLyBoejsKKwlpZiAodGVtcCA+IFVJTlQzMl9NQVgp
IHsKKwkJc2VjcyA9IFVJTlQzMl9NQVg7CisJfSBlbHNlIHsKKwkJc2VjcyA9ICh1aW50MzJfdCl0
ZW1wOworCX0KKwlyZXR1cm4gKHNlY3MpOworfQorCiAvKgogICogc2N0cF9zdG9wX3RpbWVyc19m
b3Jfc2h1dGRvd24oKSBzaG91bGQgYmUgY2FsbGVkCiAgKiB3aGVuIGVudGVyaW5nIHRoZSBTSFVU
RE9XTl9TRU5UIG9yIFNIVVRET1dOX0FDS19TRU5UCkBAIC04MTAsMTkgKzg3Nyw2NiBAQCBzY3Rw
X2F1ZGl0X2xvZyh1aW50OF90IGV2LCB1aW50OF90IGZkKQogdm9pZAogc2N0cF9zdG9wX3RpbWVy
c19mb3Jfc2h1dGRvd24oc3RydWN0IHNjdHBfdGNiICpzdGNiKQogewotCXN0cnVjdCBzY3RwX2Fz
c29jaWF0aW9uICphc29jOworCXN0cnVjdCBzY3RwX2lucGNiICppbnA7CiAJc3RydWN0IHNjdHBf
bmV0cyAqbmV0OwogCi0JYXNvYyA9ICZzdGNiLT5hc29jOworCWlucCA9IHN0Y2ItPnNjdHBfZXA7
CisKKwlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX1JFQ1YsIGlucCwgc3RjYiwgTlVM
TCwKKwkgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBVVElMICsgU0NUUF9MT0NfMTIpOwor
CXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfU1RSUkVTRVQsIGlucCwgc3RjYiwgTlVM
TCwKKwkgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBVVElMICsgU0NUUF9MT0NfMTMpOwor
CXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfQVNDT05GLCBpbnAsIHN0Y2IsIE5VTEws
CisJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQVVRJTCArIFNDVFBfTE9DXzE0KTsKKwlz
Y3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX0FVVE9DTE9TRSwgaW5wLCBzdGNiLCBOVUxM
LAorCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUFVUSUwgKyBTQ1RQX0xPQ18xNSk7CisJ
VEFJTFFfRk9SRUFDSChuZXQsICZzdGNiLT5hc29jLm5ldHMsIHNjdHBfbmV4dCkgeworCQlzY3Rw
X3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX1BBVEhNVFVSQUlTRSwgaW5wLCBzdGNiLCBuZXQs
CisJCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUFVUSUwgKyBTQ1RQX0xPQ18xNik7CisJ
CXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfSEVBUlRCRUFULCBpbnAsIHN0Y2IsIG5l
dCwKKwkJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQVVRJTCArIFNDVFBfTE9DXzE3KTsK
Kwl9Cit9CiAKLQkodm9pZClTQ1RQX09TX1RJTUVSX1NUT1AoJmFzb2MtPmRhY2tfdGltZXIudGlt
ZXIpOwotCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmYXNvYy0+c3RycmVzZXRfdGltZXIudGlt
ZXIpOwotCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmYXNvYy0+YXNjb25mX3RpbWVyLnRpbWVy
KTsKLQkodm9pZClTQ1RQX09TX1RJTUVSX1NUT1AoJmFzb2MtPmF1dG9jbG9zZV90aW1lci50aW1l
cik7Ci0JKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCZhc29jLT5kZWxheWVkX2V2ZW50X3RpbWVy
LnRpbWVyKTsKLQlUQUlMUV9GT1JFQUNIKG5ldCwgJmFzb2MtPm5ldHMsIHNjdHBfbmV4dCkgewot
CQkodm9pZClTQ1RQX09TX1RJTUVSX1NUT1AoJm5ldC0+cG10dV90aW1lci50aW1lcik7Ci0JCSh2
b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmbmV0LT5oYl90aW1lci50aW1lcik7Cit2b2lkCitzY3Rw
X3N0b3BfYXNzb2NpYXRpb25fdGltZXJzKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgYm9vbCBzdG9w
X2Fzc29jX2tpbGxfdGltZXIpCit7CisJc3RydWN0IHNjdHBfaW5wY2IgKmlucDsKKwlzdHJ1Y3Qg
c2N0cF9uZXRzICpuZXQ7CisKKwlpbnAgPSBzdGNiLT5zY3RwX2VwOworCXNjdHBfdGltZXJfc3Rv
cChTQ1RQX1RJTUVSX1RZUEVfUkVDViwgaW5wLCBzdGNiLCBOVUxMLAorCSAgICAgICAgICAgICAg
ICBTQ1RQX0ZST01fU0NUUFVUSUwgKyBTQ1RQX0xPQ18xOCk7CisJc2N0cF90aW1lcl9zdG9wKFND
VFBfVElNRVJfVFlQRV9TVFJSRVNFVCwgaW5wLCBzdGNiLCBOVUxMLAorCSAgICAgICAgICAgICAg
ICBTQ1RQX0ZST01fU0NUUFVUSUwgKyBTQ1RQX0xPQ18xOSk7CisJaWYgKHN0b3BfYXNzb2Nfa2ls
bF90aW1lcikgeworCQlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX0FTT0NLSUxMLCBp
bnAsIHN0Y2IsIE5VTEwsCisJCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUFVUSUwgKyBT
Q1RQX0xPQ18yMCk7CisJfQorCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfQVNDT05G
LCBpbnAsIHN0Y2IsIE5VTEwsCisJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQVVRJTCAr
IFNDVFBfTE9DXzIxKTsKKwlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX0FVVE9DTE9T
RSwgaW5wLCBzdGNiLCBOVUxMLAorCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUFVUSUwg
KyBTQ1RQX0xPQ18yMik7CisJc2N0cF90aW1lcl9zdG9wKFNDVFBfVElNRVJfVFlQRV9TSFVURE9X
TkdVQVJELCBpbnAsIHN0Y2IsIE5VTEwsCisJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQ
VVRJTCArIFNDVFBfTE9DXzIzKTsKKwkvKiBNb2JpbGl0eSBhZGFwdGF0aW9uICovCisJc2N0cF90
aW1lcl9zdG9wKFNDVFBfVElNRVJfVFlQRV9QUklNX0RFTEVURUQsIGlucCwgc3RjYiwgTlVMTCwK
KwkgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBVVElMICsgU0NUUF9MT0NfMjQpOworCVRB
SUxRX0ZPUkVBQ0gobmV0LCAmc3RjYi0+YXNvYy5uZXRzLCBzY3RwX25leHQpIHsKKwkJc2N0cF90
aW1lcl9zdG9wKFNDVFBfVElNRVJfVFlQRV9TRU5ELCBpbnAsIHN0Y2IsIG5ldCwKKwkJICAgICAg
ICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQVVRJTCArIFNDVFBfTE9DXzI1KTsKKwkJc2N0cF90aW1l
cl9zdG9wKFNDVFBfVElNRVJfVFlQRV9JTklULCBpbnAsIHN0Y2IsIG5ldCwKKwkJICAgICAgICAg
ICAgICAgIFNDVFBfRlJPTV9TQ1RQVVRJTCArIFNDVFBfTE9DXzI2KTsKKwkJc2N0cF90aW1lcl9z
dG9wKFNDVFBfVElNRVJfVFlQRV9TSFVURE9XTiwgaW5wLCBzdGNiLCBuZXQsCisJCSAgICAgICAg
ICAgICAgICBTQ1RQX0ZST01fU0NUUFVUSUwgKyBTQ1RQX0xPQ18yNyk7CisJCXNjdHBfdGltZXJf
c3RvcChTQ1RQX1RJTUVSX1RZUEVfQ09PS0lFLCBpbnAsIHN0Y2IsIG5ldCwKKwkJICAgICAgICAg
ICAgICAgIFNDVFBfRlJPTV9TQ1RQVVRJTCArIFNDVFBfTE9DXzI4KTsKKwkJc2N0cF90aW1lcl9z
dG9wKFNDVFBfVElNRVJfVFlQRV9TSFVURE9XTkFDSywgaW5wLCBzdGNiLCBuZXQsCisJCSAgICAg
ICAgICAgICAgICBTQ1RQX0ZST01fU0NUUFVUSUwgKyBTQ1RQX0xPQ18yOSk7CisJCXNjdHBfdGlt
ZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfUEFUSE1UVVJBSVNFLCBpbnAsIHN0Y2IsIG5ldCwKKwkJ
ICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQVVRJTCArIFNDVFBfTE9DXzMwKTsKKwkJc2N0
cF90aW1lcl9zdG9wKFNDVFBfVElNRVJfVFlQRV9IRUFSVEJFQVQsIGlucCwgc3RjYiwgbmV0LAor
CQkgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBVVElMICsgU0NUUF9MT0NfMzEpOwogCX0K
IH0KIApAQCAtODQ1LDcgKzk1OSw3IEBAIHN0YXRpYyB1aW50MzJfdCBzY3RwX210dV9zaXplc1td
ID0gewogCTIwNDgsCiAJNDM1MiwKIAk0NDY0LAotCTgxNjYsCisJODE2OCwKIAkxNzkxMiwKIAkz
MjAwMCwKIAk2NTUzMgpAQCAtOTEyLDkgKzEwMjYsMTUgQEAgc2N0cF9maWxsX3JhbmRvbV9zdG9y
ZShzdHJ1Y3Qgc2N0cF9wY2IgKm0pCiAJICogbnVtYmVycywgYnV0IHRoYXRzIG9rIHRvbyBzaW5j
ZSB0aGF0IGlzIHJhbmRvbSBhcyB3ZWxsIDotPgogCSAqLwogCW0tPnN0b3JlX2F0ID0gMDsKKyNp
ZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pICYmIGRlZmluZWQoRlVaWklOR19CVUlMRF9NT0RFX1VO
U0FGRV9GT1JfUFJPRFVDVElPTikKKwlmb3IgKGludCBpID0gMDsgaSA8IChpbnQpIChzaXplb2Yo
bS0+cmFuZG9tX3N0b3JlKSAvIHNpemVvZihtLT5yYW5kb21fc3RvcmVbMF0pKTsgaSsrKSB7CisJ
CW0tPnJhbmRvbV9zdG9yZVtpXSA9ICh1aW50OF90KSByYW5kKCk7CisJfQorI2Vsc2UKIAkodm9p
ZClzY3RwX2htYWMoU0NUUF9ITUFDLCAodWludDhfdCAqKW0tPnJhbmRvbV9udW1iZXJzLAogCSAg
ICBzaXplb2YobS0+cmFuZG9tX251bWJlcnMpLCAodWludDhfdCAqKSZtLT5yYW5kb21fY291bnRl
ciwKIAkgICAgc2l6ZW9mKG0tPnJhbmRvbV9jb3VudGVyKSwgKHVpbnQ4X3QgKiltLT5yYW5kb21f
c3RvcmUpOworI2VuZGlmCiAJbS0+cmFuZG9tX2NvdW50ZXIrKzsKIH0KIApAQCAtMTA0NCwxNSAr
MTE2NCwxNCBAQCBzY3RwX2luaXRfYXNvYyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qg
c2N0cF90Y2IgKnN0Y2IsCiAKIAlhc29jID0gJnN0Y2ItPmFzb2M7CiAJLyogaW5pdCBhbGwgdmFy
aWFibGVzIHRvIGEga25vd24gdmFsdWUuICovCi0JU0NUUF9TRVRfU1RBVEUoJnN0Y2ItPmFzb2Ms
IFNDVFBfU1RBVEVfSU5VU0UpOworCVNDVFBfU0VUX1NUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfSU5V
U0UpOwogCWFzb2MtPm1heF9idXJzdCA9IGlucC0+c2N0cF9lcC5tYXhfYnVyc3Q7CiAJYXNvYy0+
ZnJfbWF4X2J1cnN0ID0gaW5wLT5zY3RwX2VwLmZyX21heF9idXJzdDsKLQlhc29jLT5oZWFydF9i
ZWF0X2RlbGF5ID0gVElDS1NfVE9fTVNFQyhpbnAtPnNjdHBfZXAuc2N0cF90aW1lb3V0dGlja3Nb
U0NUUF9USU1FUl9IRUFSVEJFQVRdKTsKKwlhc29jLT5oZWFydF9iZWF0X2RlbGF5ID0gc2N0cF90
aWNrc190b19tc2VjcyhpbnAtPnNjdHBfZXAuc2N0cF90aW1lb3V0dGlja3NbU0NUUF9USU1FUl9I
RUFSVEJFQVRdKTsKIAlhc29jLT5jb29raWVfbGlmZSA9IGlucC0+c2N0cF9lcC5kZWZfY29va2ll
X2xpZmU7CiAJYXNvYy0+c2N0cF9jbXRfb25fb2ZmID0gaW5wLT5zY3RwX2NtdF9vbl9vZmY7CiAJ
YXNvYy0+ZWNuX3N1cHBvcnRlZCA9IGlucC0+ZWNuX3N1cHBvcnRlZDsKIAlhc29jLT5wcnNjdHBf
c3VwcG9ydGVkID0gaW5wLT5wcnNjdHBfc3VwcG9ydGVkOwotCWFzb2MtPmlkYXRhX3N1cHBvcnRl
ZCA9IGlucC0+aWRhdGFfc3VwcG9ydGVkOwogCWFzb2MtPmF1dGhfc3VwcG9ydGVkID0gaW5wLT5h
dXRoX3N1cHBvcnRlZDsKIAlhc29jLT5hc2NvbmZfc3VwcG9ydGVkID0gaW5wLT5hc2NvbmZfc3Vw
cG9ydGVkOwogCWFzb2MtPnJlY29uZmlnX3N1cHBvcnRlZCA9IGlucC0+cmVjb25maWdfc3VwcG9y
dGVkOwpAQCAtMTEzMyw3ICsxMjUyLDcgQEAgc2N0cF9pbml0X2Fzb2Moc3RydWN0IHNjdHBfaW5w
Y2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCWFzb2MtPmNvbnRleHQgPSBpbnAtPnNj
dHBfY29udGV4dDsKIAlhc29jLT5sb2NhbF9zdHJyZXNldF9zdXBwb3J0ID0gaW5wLT5sb2NhbF9z
dHJyZXNldF9zdXBwb3J0OwogCWFzb2MtPmRlZl9zZW5kID0gaW5wLT5kZWZfc2VuZDsKLQlhc29j
LT5kZWxheWVkX2FjayA9IFRJQ0tTX1RPX01TRUMoaW5wLT5zY3RwX2VwLnNjdHBfdGltZW91dHRp
Y2tzW1NDVFBfVElNRVJfUkVDVl0pOworCWFzb2MtPmRlbGF5ZWRfYWNrID0gc2N0cF90aWNrc190
b19tc2VjcyhpbnAtPnNjdHBfZXAuc2N0cF90aW1lb3V0dGlja3NbU0NUUF9USU1FUl9SRUNWXSk7
CiAJYXNvYy0+c2Fja19mcmVxID0gaW5wLT5zY3RwX2VwLnNjdHBfc2Fja19mcmVxOwogCWFzb2Mt
PnByX3NjdHBfY250ID0gMDsKIAlhc29jLT50b3RhbF9vdXRwdXRfcXVldWVfc2l6ZSA9IDA7CkBA
IC0xMzY1LDExICsxNDg0LDE3IEBAIHNjdHBfZXhwYW5kX21hcHBpbmdfYXJyYXkoc3RydWN0IHNj
dHBfYXNzb2NpYXRpb24gKmFzb2MsIHVpbnQzMl90IG5lZWRlZCkKIHN0YXRpYyB2b2lkCiBzY3Rw
X2l0ZXJhdG9yX3dvcmsoc3RydWN0IHNjdHBfaXRlcmF0b3IgKml0KQogeworI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJc3RydWN0IGVwb2NoX3Ry
YWNrZXIgZXQ7CisjZW5kaWYKKwlzdHJ1Y3Qgc2N0cF9pbnBjYiAqdGlucDsKIAlpbnQgaXRlcmF0
aW9uX2NvdW50ID0gMDsKIAlpbnQgaW5wX3NraXAgPSAwOwogCWludCBmaXJzdF9pbiA9IDE7Ci0J
c3RydWN0IHNjdHBfaW5wY2IgKnRpbnA7CiAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCU5FVF9FUE9DSF9FTlRFUihldCk7CisjZW5kaWYKIAlT
Q1RQX0lOUF9JTkZPX1JMT0NLKCk7CiAJU0NUUF9JVEVSQVRPUl9MT0NLKCk7CiAJc2N0cF9pdF9j
dGwuY3VyX2l0ID0gaXQ7CkBAIC0xMzg3LDYgKzE1MTIsOSBAQCBkb25lX3dpdGhfaXRlcmF0b3I6
CiAJCQkoKml0LT5mdW5jdGlvbl9hdGVuZCkgKGl0LT5wb2ludGVyLCBpdC0+dmFsKTsKIAkJfQog
CQlTQ1RQX0ZSRUUoaXQsIFNDVFBfTV9JVEVSKTsKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQlORVRfRVBPQ0hfRVhJVChldCk7CisjZW5kaWYK
IAkJcmV0dXJuOwogCX0KIHNlbGVjdF9hX25ld19lcDoKQEAgLTE0MDYsNiArMTUzNCw3IEBAIHNl
bGVjdF9hX25ld19lcDoKIAkJfQogCQl0aW5wID0gaXQtPmlucDsKIAkJaXQtPmlucCA9IExJU1Rf
TkVYVChpdC0+aW5wLCBzY3RwX2xpc3QpOworCQlpdC0+c3RjYiA9IE5VTEw7CiAJCVNDVFBfSU5Q
X1JVTkxPQ0sodGlucCk7CiAJCWlmIChpdC0+aW5wID09IE5VTEwpIHsKIAkJCWdvdG8gZG9uZV93
aXRoX2l0ZXJhdG9yOwpAQCAtMTQ1NCw3ICsxNTgzLDcgQEAgc2VsZWN0X2FfbmV3X2VwOgogCQkJ
CS8qIFdlIHdvbid0IGJlIHN0YXlpbmcgaGVyZSAqLwogCQkJCVNDVFBfSU5QX0RFQ1JfUkVGKGl0
LT5pbnApOwogCQkJCWF0b21pY19hZGRfaW50KCZpdC0+c3RjYi0+YXNvYy5yZWZjbnQsIC0xKTsK
LSNpZiAhZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiAhKGRlZmluZWQoX19GcmVlQlNEX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pKQogCQkJCWlmIChzY3RwX2l0X2N0bC5pdGVyYXRvcl9m
bGFncyAmCiAJCQkJICAgU0NUUF9JVEVSQVRPUl9NVVNUX0VYSVQpIHsKIAkJCQkJZ290byBkb25l
X3dpdGhfaXRlcmF0b3I7CkBAIC0xNDgxLDYgKzE2MTAsOSBAQCBzZWxlY3RfYV9uZXdfZXA6CiAJ
CQlhdG9taWNfYWRkX2ludCgmaXQtPnN0Y2ItPmFzb2MucmVmY250LCAtMSk7CiAJCQlpdGVyYXRp
b25fY291bnQgPSAwOwogCQl9CisJCUtBU1NFUlQoaXQtPmlucCA9PSBpdC0+c3RjYi0+c2N0cF9l
cCwKKwkJICAgICAgICAoIiVzOiBzdGNiICVwIGRvZXMgbm90IGJlbG9uZyB0byBpbnAgJXAsIGJ1
dCBpbnAgJXAiLAorCQkgICAgICAgICBfX2Z1bmNfXywgaXQtPnN0Y2IsIGl0LT5pbnAsIGl0LT5z
dGNiLT5zY3RwX2VwKSk7CiAKIAkJLyogcnVuIGZ1bmN0aW9uIG9uIHRoaXMgb25lICovCiAJCSgq
aXQtPmZ1bmN0aW9uX2Fzc29jKShpdC0+aW5wLCBpdC0+c3RjYiwgaXQtPnBvaW50ZXIsIGl0LT52
YWwpOwpAQCAtMTUxMyw2ICsxNjQ1LDcgQEAgc2VsZWN0X2FfbmV3X2VwOgogCX0gZWxzZSB7CiAJ
CWl0LT5pbnAgPSBMSVNUX05FWFQoaXQtPmlucCwgc2N0cF9saXN0KTsKIAl9CisJaXQtPnN0Y2Ig
PSBOVUxMOwogCWlmIChpdC0+aW5wID09IE5VTEwpIHsKIAkJZ290byBkb25lX3dpdGhfaXRlcmF0
b3I7CiAJfQpAQCAtMTUyMiwyNCArMTY1NSwyMyBAQCBzZWxlY3RfYV9uZXdfZXA6CiB2b2lkCiBz
Y3RwX2l0ZXJhdG9yX3dvcmtlcih2b2lkKQogewotCXN0cnVjdCBzY3RwX2l0ZXJhdG9yICppdCwg
Km5pdDsKKwlzdHJ1Y3Qgc2N0cF9pdGVyYXRvciAqaXQ7CiAKIAkvKiBUaGlzIGZ1bmN0aW9uIGlz
IGNhbGxlZCB3aXRoIHRoZSBXUSBsb2NrIGluIHBsYWNlICovCi0KIAlzY3RwX2l0X2N0bC5pdGVy
YXRvcl9ydW5uaW5nID0gMTsKLQlUQUlMUV9GT1JFQUNIX1NBRkUoaXQsICZzY3RwX2l0X2N0bC5p
dGVyYXRvcmhlYWQsIHNjdHBfbnh0X2l0ciwgbml0KSB7CisJd2hpbGUgKChpdCA9IFRBSUxRX0ZJ
UlNUKCZzY3RwX2l0X2N0bC5pdGVyYXRvcmhlYWQpKSAhPSBOVUxMKSB7CiAJCS8qIG5vdyBsZXRz
IHdvcmsgb24gdGhpcyBvbmUgKi8KIAkJVEFJTFFfUkVNT1ZFKCZzY3RwX2l0X2N0bC5pdGVyYXRv
cmhlYWQsIGl0LCBzY3RwX254dF9pdHIpOwogCQlTQ1RQX0lQSV9JVEVSQVRPUl9XUV9VTkxPQ0so
KTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDEw
MDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
CQlDVVJWTkVUX1NFVChpdC0+dm4pOwogI2VuZGlmCiAJCXNjdHBfaXRlcmF0b3Jfd29yayhpdCk7
Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAxMDAw
CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJ
Q1VSVk5FVF9SRVNUT1JFKCk7CiAjZW5kaWYKIAkJU0NUUF9JUElfSVRFUkFUT1JfV1FfTE9DSygp
OwotI2lmICFkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmICFkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlpZiAoc2N0cF9pdF9jdGwuaXRlcmF0b3JfZmxh
Z3MgJiBTQ1RQX0lURVJBVE9SX01VU1RfRVhJVCkgewogCQkJYnJlYWs7CiAJCX0KQEAgLTE2MDUs
MjggKzE3MzcsNjggQEAgc2N0cF9oYW5kbGVfYWRkcl93cSh2b2lkKQogCX0KIH0KIAorLyotCisg
KiBUaGUgZm9sbG93aW5nIHRhYmxlIHNob3dzIHdoaWNoIHBvaW50ZXJzIGZvciB0aGUgaW5wLCBz
dGNiLCBvciBuZXQgYXJlCisgKiBzdG9yZWQgZm9yIGVhY2ggdGltZXIgYWZ0ZXIgaXQgd2FzIHN0
YXJ0ZWQuCisgKgorICp8TmFtZSAgICAgICAgICAgICAgICAgICAgICAgICB8VGltZXIgICAgICAg
ICAgICAgICAgICAgICAgICB8aW5wIHxzdGNifG5ldCB8CisgKnwtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tfC0tLS18LS0tLXwK
KyAqfFNDVFBfVElNRVJfVFlQRV9TRU5EICAgICAgICAgfG5ldC0+cnh0X3RpbWVyICAgICAgICAg
ICAgICAgfFllcyB8WWVzIHxZZXMgfAorICp8U0NUUF9USU1FUl9UWVBFX0lOSVQgICAgICAgICB8
bmV0LT5yeHRfdGltZXIgICAgICAgICAgICAgICB8WWVzIHxZZXMgfFllcyB8CisgKnxTQ1RQX1RJ
TUVSX1RZUEVfUkVDViAgICAgICAgIHxzdGNiLT5hc29jLmRhY2tfdGltZXIgICAgICAgIHxZZXMg
fFllcyB8Tm8gIHwKKyAqfFNDVFBfVElNRVJfVFlQRV9TSFVURE9XTiAgICAgfG5ldC0+cnh0X3Rp
bWVyICAgICAgICAgICAgICAgfFllcyB8WWVzIHxZZXMgfAorICp8U0NUUF9USU1FUl9UWVBFX0hF
QVJUQkVBVCAgICB8bmV0LT5oYl90aW1lciAgICAgICAgICAgICAgICB8WWVzIHxZZXMgfFllcyB8
CisgKnxTQ1RQX1RJTUVSX1RZUEVfQ09PS0lFICAgICAgIHxuZXQtPnJ4dF90aW1lciAgICAgICAg
ICAgICAgIHxZZXMgfFllcyB8WWVzIHwKKyAqfFNDVFBfVElNRVJfVFlQRV9ORVdDT09LSUUgICAg
fGlucC0+c2N0cF9lcC5zaWduYXR1cmVfY2hhbmdlfFllcyB8Tm8gIHxObyAgfAorICp8U0NUUF9U
SU1FUl9UWVBFX1BBVEhNVFVSQUlTRSB8bmV0LT5wbXR1X3RpbWVyICAgICAgICAgICAgICB8WWVz
IHxZZXMgfFllcyB8CisgKnxTQ1RQX1RJTUVSX1RZUEVfU0hVVERPV05BQ0sgIHxuZXQtPnJ4dF90
aW1lciAgICAgICAgICAgICAgIHxZZXMgfFllcyB8WWVzIHwKKyAqfFNDVFBfVElNRVJfVFlQRV9B
U0NPTkYgICAgICAgfHN0Y2ItPmFzb2MuYXNjb25mX3RpbWVyICAgICAgfFllcyB8WWVzIHxZZXMg
fAorICp8U0NUUF9USU1FUl9UWVBFX1NIVVRET1dOR1VBUkR8c3RjYi0+YXNvYy5zaHV0X2d1YXJk
X3RpbWVyICB8WWVzIHxZZXMgfE5vICB8CisgKnxTQ1RQX1RJTUVSX1RZUEVfQVVUT0NMT1NFICAg
IHxzdGNiLT5hc29jLmF1dG9jbG9zZV90aW1lciAgIHxZZXMgfFllcyB8Tm8gIHwKKyAqfFNDVFBf
VElNRVJfVFlQRV9TVFJSRVNFVCAgICAgfHN0Y2ItPmFzb2Muc3RycmVzZXRfdGltZXIgICAgfFll
cyB8WWVzIHxObyAgfAorICp8U0NUUF9USU1FUl9UWVBFX0lOUEtJTEwgICAgICB8aW5wLT5zY3Rw
X2VwLnNpZ25hdHVyZV9jaGFuZ2V8WWVzIHxObyAgfE5vICB8CisgKnxTQ1RQX1RJTUVSX1RZUEVf
QVNPQ0tJTEwgICAgIHxzdGNiLT5hc29jLnN0cnJlc2V0X3RpbWVyICAgIHxZZXMgfFllcyB8Tm8g
IHwKKyAqfFNDVFBfVElNRVJfVFlQRV9BRERSX1dRICAgICAgfFNDVFBfQkFTRV9JTkZPKGFkZHJf
d3FfdGltZXIpfE5vICB8Tm8gIHxObyAgfAorICp8U0NUUF9USU1FUl9UWVBFX1BSSU1fREVMRVRF
RCB8c3RjYi0+YXNvYy5kZWxldGVfcHJpbV90aW1lciB8WWVzIHxZZXMgfE5vICB8CisgKi8KKwog
dm9pZAogc2N0cF90aW1lb3V0X2hhbmRsZXIodm9pZCAqdCkKIHsKKyNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCXN0cnVjdCBlcG9jaF90cmFja2Vy
IGV0OworI2VuZGlmCisJc3RydWN0IHRpbWV2YWwgdHY7CiAJc3RydWN0IHNjdHBfaW5wY2IgKmlu
cDsKIAlzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2I7CiAJc3RydWN0IHNjdHBfbmV0cyAqbmV0OwogCXN0
cnVjdCBzY3RwX3RpbWVyICp0bXI7CiAJc3RydWN0IG1idWYgKm9wX2VycjsKLSNpZiBkZWZpbmVk
KF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVk
KF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzdHJ1Y3Qgc29ja2V0ICpz
bzsKICNlbmRpZgotCWludCBkaWRfb3V0cHV0OworI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
KwlzdHJ1Y3Qgc29ja2V0ICp1cGNhbGxfc29ja2V0ID0gTlVMTDsKKyNlbmRpZgogCWludCB0eXBl
OworCWludCBpLCBzZWNyZXQ7CisJYm9vbCBkaWRfb3V0cHV0LCByZWxlYXNlZF9hc29jX3JlZmVy
ZW5jZTsKIAorCS8qCisJICogSWYgaW5wLCBzdGNiIG9yIG5ldCBhcmUgbm90IE5VTEwsIHRoZW4g
cmVmZXJlbmNlcyB0byB0aGVzZSB3ZXJlCisJICogYWRkZWQgd2hlbiB0aGUgdGltZXIgd2FzIHN0
YXJ0ZWQsIGFuZCBtdXN0IGJlIHJlbGVhc2VkIGJlZm9yZSB0aGlzCisJICogZnVuY3Rpb24gcmV0
dXJucy4KKwkgKi8KIAl0bXIgPSAoc3RydWN0IHNjdHBfdGltZXIgKil0OwogCWlucCA9IChzdHJ1
Y3Qgc2N0cF9pbnBjYiAqKXRtci0+ZXA7CiAJc3RjYiA9IChzdHJ1Y3Qgc2N0cF90Y2IgKil0bXIt
PnRjYjsKIAluZXQgPSAoc3RydWN0IHNjdHBfbmV0cyAqKXRtci0+bmV0OwotI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMTAwMAorI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJQ1VSVk5FVF9TRVQoKHN0
cnVjdCB2bmV0ICopdG1yLT52bmV0KTsKKwlORVRfRVBPQ0hfRU5URVIoZXQpOwogI2VuZGlmCiAJ
ZGlkX291dHB1dCA9IDE7CisJcmVsZWFzZWRfYXNvY19yZWZlcmVuY2UgPSBmYWxzZTsKIAogI2lm
ZGVmIFNDVFBfQVVESVRJTkdfRU5BQkxFRAogCXNjdHBfYXVkaXRfbG9nKDB4RjAsICh1aW50OF90
KSB0bXItPnR5cGUpOwpAQCAtMTYzNCwxMzUgKzE4MDYsODcgQEAgc2N0cF90aW1lb3V0X2hhbmRs
ZXIodm9pZCAqdCkKICNlbmRpZgogCiAJLyogc2FuaXR5IGNoZWNrcy4uLiAqLwotCWlmICh0bXIt
PnNlbGYgIT0gKHZvaWQgKil0bXIpIHsKLQkJLyoKLQkJICogU0NUUF9QUklOVEYoIlN0YWxlIFND
VFAgdGltZXIgZmlyZWQgKCVwKSwgaWdub3JpbmcuLi5cbiIsCi0JCSAqICAgICAgICAgICAgICh2
b2lkICopdG1yKTsKLQkJICovCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNE
X3ZlcnNpb24gPj0gODAxMDAwCi0JCUNVUlZORVRfUkVTVE9SRSgpOwotI2VuZGlmCi0JCXJldHVy
bjsKLQl9CisJS0FTU0VSVCh0bXItPnNlbGYgPT0gTlVMTCB8fCB0bXItPnNlbGYgPT0gdG1yLAor
CSAgICAgICAgKCJzY3RwX3RpbWVvdXRfaGFuZGxlcjogdG1yLT5zZWxmIGNvcnJ1cHRlZCIpKTsK
KwlLQVNTRVJUKFNDVFBfSVNfVElNRVJfVFlQRV9WQUxJRCh0bXItPnR5cGUpLAorCSAgICAgICAg
KCJzY3RwX3RpbWVvdXRfaGFuZGxlcjogaW52YWxpZCB0aW1lciB0eXBlICVkIiwgdG1yLT50eXBl
KSk7CisJdHlwZSA9IHRtci0+dHlwZTsKKwlLQVNTRVJUKHN0Y2IgPT0gTlVMTCB8fCBzdGNiLT5z
Y3RwX2VwID09IGlucCwKKwkgICAgICAgICgic2N0cF90aW1lb3V0X2hhbmRsZXIgb2YgdHlwZSAl
ZDogaW5wID0gJXAsIHN0Y2ItPnNjdHBfZXAgJXAiLAorCSAgICAgICAgIHR5cGUsIHN0Y2IsIHN0
Y2ItPnNjdHBfZXApKTsKIAl0bXItPnN0b3BwZWRfZnJvbSA9IDB4YTAwMTsKLQlpZiAoIVNDVFBf
SVNfVElNRVJfVFlQRV9WQUxJRCh0bXItPnR5cGUpKSB7Ci0JCS8qCi0JCSAqIFNDVFBfUFJJTlRG
KCJTQ1RQIHRpbWVyIGZpcmVkIHdpdGggaW52YWxpZCB0eXBlOiAweCV4XG4iLAotCQkgKiB0bXIt
PnR5cGUpOwotCQkgKi8KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVy
c2lvbiA+PSA4MDEwMDAKLQkJQ1VSVk5FVF9SRVNUT1JFKCk7Ci0jZW5kaWYKLQkJcmV0dXJuOwor
CWlmICgoc3RjYiAhPSBOVUxMKSAmJiAoc3RjYi0+YXNvYy5zdGF0ZSA9PSBTQ1RQX1NUQVRFX0VN
UFRZKSkgeworCQlTQ1RQREJHKFNDVFBfREVCVUdfVElNRVIyLAorCQkgICAgICAgICJUaW1lciB0
eXBlICVkIGhhbmRsZXIgZXhpdGluZyBkdWUgdG8gQ0xPU0VEIGFzc29jaWF0aW9uLlxuIiwKKwkJ
ICAgICAgICB0eXBlKTsKKwkJZ290byBvdXRfZGVjcjsKIAl9CiAJdG1yLT5zdG9wcGVkX2Zyb20g
PSAweGEwMDI7Ci0JaWYgKCh0bXItPnR5cGUgIT0gU0NUUF9USU1FUl9UWVBFX0FERFJfV1EpICYm
IChpbnAgPT0gTlVMTCkpIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0Rf
dmVyc2lvbiA+PSA4MDEwMDAKLQkJQ1VSVk5FVF9SRVNUT1JFKCk7Ci0jZW5kaWYKLQkJcmV0dXJu
OwotCX0KLQkvKiBpZiB0aGlzIGlzIGFuIGl0ZXJhdG9yIHRpbWVvdXQsIGdldCB0aGUgc3RydWN0
IGFuZCBjbGVhciBpbnAgKi8KLQl0bXItPnN0b3BwZWRfZnJvbSA9IDB4YTAwMzsKLQlpZiAoaW5w
KSB7Ci0JCVNDVFBfSU5QX0lOQ1JfUkVGKGlucCk7Ci0JCWlmICgoaW5wLT5zY3RwX3NvY2tldCA9
PSBOVUxMKSAmJgotCQkgICAgKCh0bXItPnR5cGUgIT0gU0NUUF9USU1FUl9UWVBFX0lOUEtJTEwp
ICYmCi0JCSAgICAgKHRtci0+dHlwZSAhPSBTQ1RQX1RJTUVSX1RZUEVfSU5JVCkgJiYKLQkJICAg
ICAodG1yLT50eXBlICE9IFNDVFBfVElNRVJfVFlQRV9TRU5EKSAmJgotCQkgICAgICh0bXItPnR5
cGUgIT0gU0NUUF9USU1FUl9UWVBFX1JFQ1YpICYmCi0JCSAgICAgKHRtci0+dHlwZSAhPSBTQ1RQ
X1RJTUVSX1RZUEVfSEVBUlRCRUFUKSAmJgotCQkgICAgICh0bXItPnR5cGUgIT0gU0NUUF9USU1F
Ul9UWVBFX1NIVVRET1dOKSAmJgotCQkgICAgICh0bXItPnR5cGUgIT0gU0NUUF9USU1FUl9UWVBF
X1NIVVRET1dOQUNLKSAmJgotCQkgICAgICh0bXItPnR5cGUgIT0gU0NUUF9USU1FUl9UWVBFX1NI
VVRET1dOR1VBUkQpICYmCi0JCSAgICAgKHRtci0+dHlwZSAhPSBTQ1RQX1RJTUVSX1RZUEVfQVNP
Q0tJTEwpKSkgewotCQkJU0NUUF9JTlBfREVDUl9SRUYoaW5wKTsKLSNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDEwMDAKLQkJCUNVUlZORVRfUkVTVE9S
RSgpOwotI2VuZGlmCi0JCQlyZXR1cm47Ci0JCX0KLQl9Ci0JdG1yLT5zdG9wcGVkX2Zyb20gPSAw
eGEwMDQ7Ci0JaWYgKHN0Y2IpIHsKLQkJYXRvbWljX2FkZF9pbnQoJnN0Y2ItPmFzb2MucmVmY250
LCAxKTsKLQkJaWYgKHN0Y2ItPmFzb2Muc3RhdGUgPT0gMCkgewotCQkJYXRvbWljX2FkZF9pbnQo
JnN0Y2ItPmFzb2MucmVmY250LCAtMSk7Ci0JCQlpZiAoaW5wKSB7Ci0JCQkJU0NUUF9JTlBfREVD
Ul9SRUYoaW5wKTsKLQkJCX0KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0Rf
dmVyc2lvbiA+PSA4MDEwMDAKLQkJCUNVUlZORVRfUkVTVE9SRSgpOwotI2VuZGlmCi0JCQlyZXR1
cm47Ci0JCX0KLQl9Ci0JdHlwZSA9IHRtci0+dHlwZTsKLQl0bXItPnN0b3BwZWRfZnJvbSA9IDB4
YTAwNTsKLQlTQ1RQREJHKFNDVFBfREVCVUdfVElNRVIxLCAiVGltZXIgdHlwZSAlZCBnb2VzIG9m
ZlxuIiwgdHlwZSk7CisJU0NUUERCRyhTQ1RQX0RFQlVHX1RJTUVSMiwgIlRpbWVyIHR5cGUgJWQg
Z29lcyBvZmYuXG4iLCB0eXBlKTsKIAlpZiAoIVNDVFBfT1NfVElNRVJfQUNUSVZFKCZ0bXItPnRp
bWVyKSkgewotCQlpZiAoaW5wKSB7Ci0JCQlTQ1RQX0lOUF9ERUNSX1JFRihpbnApOwotCQl9Ci0J
CWlmIChzdGNiKSB7Ci0JCQlhdG9taWNfYWRkX2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIC0xKTsK
LQkJfQotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgw
MTAwMAotCQlDVVJWTkVUX1JFU1RPUkUoKTsKLSNlbmRpZgotCQlyZXR1cm47CisJCVNDVFBEQkco
U0NUUF9ERUJVR19USU1FUjIsCisJCQkiVGltZXIgdHlwZSAlZCBoYW5kbGVyIGV4aXRpbmcgZHVl
IHRvIG5vdCBiZWluZyBhY3RpdmUuXG4iLAorCQkJdHlwZSk7CisJCWdvdG8gb3V0X2RlY3I7CiAJ
fQotCXRtci0+c3RvcHBlZF9mcm9tID0gMHhhMDA2OwogCisJdG1yLT5zdG9wcGVkX2Zyb20gPSAw
eGEwMDM7CiAJaWYgKHN0Y2IpIHsKIAkJU0NUUF9UQ0JfTE9DSyhzdGNiKTsKKwkJLyoKKwkJICog
UmVsZWFzZSByZWZlcmVuY2Ugc28gdGhhdCBhc3NvY2lhdGlvbiBjYW4gYmUgZnJlZWQgaWYKKwkJ
ICogbmVjZXNzYXJ5IGJlbG93LgorCQkgKiBUaGlzIGlzIHNhZmUgbm93IHRoYXQgd2UgaGF2ZSBh
Y3F1aXJlZCB0aGUgbG9jay4KKwkJICovCiAJCWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29jLnJl
ZmNudCwgLTEpOworCQlyZWxlYXNlZF9hc29jX3JlZmVyZW5jZSA9IHRydWU7CiAJCWlmICgodHlw
ZSAhPSBTQ1RQX1RJTUVSX1RZUEVfQVNPQ0tJTEwpICYmCi0JCSAgICAoKHN0Y2ItPmFzb2Muc3Rh
dGUgPT0gMCkgfHwKKwkJICAgICgoc3RjYi0+YXNvYy5zdGF0ZSA9PSBTQ1RQX1NUQVRFX0VNUFRZ
KSB8fAogCQkgICAgIChzdGNiLT5hc29jLnN0YXRlICYgU0NUUF9TVEFURV9BQk9VVF9UT19CRV9G
UkVFRCkpKSB7Ci0JCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7Ci0JCQlpZiAoaW5wKSB7Ci0JCQkJ
U0NUUF9JTlBfREVDUl9SRUYoaW5wKTsKLQkJCX0KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDEwMDAKLQkJCUNVUlZORVRfUkVTVE9SRSgpOwotI2Vu
ZGlmCi0JCQlyZXR1cm47CisJCQlTQ1RQREJHKFNDVFBfREVCVUdfVElNRVIyLAorCQkJICAgICAg
ICAiVGltZXIgdHlwZSAlZCBoYW5kbGVyIGV4aXRpbmcgZHVlIHRvIENMT1NFRCBhc3NvY2lhdGlv
bi5cbiIsCisJCQkgICAgICAgIHR5cGUpOworCQkJZ290byBvdXQ7CiAJCX0KIAl9IGVsc2UgaWYg
KGlucCAhPSBOVUxMKSB7Ci0JCWlmICh0eXBlICE9IFNDVFBfVElNRVJfVFlQRV9JTlBLSUxMKSB7
Ci0JCQlTQ1RQX0lOUF9XTE9DSyhpbnApOwotCQl9CisJCVNDVFBfSU5QX1dMT0NLKGlucCk7CiAJ
fSBlbHNlIHsKIAkJU0NUUF9XUV9BRERSX0xPQ0soKTsKIAl9Ci0JLyogcmVjb3JkIGluIHN0b3Bw
ZWQgd2hhdCB0LW8gb2NjdXJyZWQgKi8KLQl0bXItPnN0b3BwZWRfZnJvbSA9IHR5cGU7CiAKKwkv
KiBSZWNvcmQgaW4gc3RvcHBlZF9mcm9tIHdoaWNoIHRpbWVvdXQgb2NjdXJyZWQuICovCisJdG1y
LT5zdG9wcGVkX2Zyb20gPSB0eXBlOwogCS8qIG1hcmsgYXMgYmVpbmcgc2VydmljZWQgbm93ICov
CiAJaWYgKFNDVFBfT1NfVElNRVJfUEVORElORygmdG1yLT50aW1lcikpIHsKIAkJLyoKIAkJICog
Q2FsbG91dCBoYXMgYmVlbiByZXNjaGVkdWxlZC4KIAkJICovCi0JCWdvdG8gZ2V0X291dDsKKwkJ
Z290byBvdXQ7CiAJfQogCWlmICghU0NUUF9PU19USU1FUl9BQ1RJVkUoJnRtci0+dGltZXIpKSB7
CiAJCS8qCiAJCSAqIE5vdCBhY3RpdmUsIHNvIG5vIGFjdGlvbi4KIAkJICovCi0JCWdvdG8gZ2V0
X291dDsKKwkJZ290byBvdXQ7CiAJfQogCVNDVFBfT1NfVElNRVJfREVBQ1RJVkFURSgmdG1yLT50
aW1lcik7CiAKKyNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJaWYgKChzdGNiICE9IE5VTEwp
ICYmCisJICAgICEoc3RjYi0+c2N0cF9lcC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1NP
Q0tFVF9HT05FKSAmJgorCSAgICAoc3RjYi0+c2N0cF9zb2NrZXQgIT0gTlVMTCkpIHsKKwkJdXBj
YWxsX3NvY2tldCA9IHN0Y2ItPnNjdHBfc29ja2V0OworCQlTT0NLX0xPQ0sodXBjYWxsX3NvY2tl
dCk7CisJCXNvcmVmKHVwY2FsbF9zb2NrZXQpOworCQlTT0NLX1VOTE9DSyh1cGNhbGxfc29ja2V0
KTsKKwl9CisjZW5kaWYKIAkvKiBjYWxsIHRoZSBoYW5kbGVyIGZvciB0aGUgYXBwcm9wcmlhdGUg
dGltZXIgdHlwZSAqLwogCXN3aXRjaCAodHlwZSkgewotCWNhc2UgU0NUUF9USU1FUl9UWVBFX0FE
RFJfV1E6Ci0JCXNjdHBfaGFuZGxlX2FkZHJfd3EoKTsKLQkJYnJlYWs7CiAJY2FzZSBTQ1RQX1RJ
TUVSX1RZUEVfU0VORDoKLQkJaWYgKChzdGNiID09IE5VTEwpIHx8IChpbnAgPT0gTlVMTCkpIHsK
LQkJCWJyZWFrOwotCQl9CisJCUtBU1NFUlQoaW5wICE9IE5VTEwgJiYgc3RjYiAhPSBOVUxMICYm
IG5ldCAhPSBOVUxMLAorCQkgICAgICAgICgidGltZW91dCBvZiB0eXBlICVkOiBpbnAgPSAlcCwg
c3RjYiA9ICVwLCBuZXQgPSAlcCIsCisJCSAgICAgICAgIHR5cGUsIGlucCwgc3RjYiwgbmV0KSk7
CiAJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3RpbW9kYXRhKTsKIAkJc3RjYi0+YXNvYy50aW1vZGF0
YSsrOwogCQlzdGNiLT5hc29jLm51bV9zZW5kX3RpbWVyc191cC0tOwpAQCAtMTc4MCw2NSArMTkw
NCw3MiBAQCBzY3RwX3RpbWVvdXRfaGFuZGxlcih2b2lkICp0KQogCQlzY3RwX2F1ZGl0aW5nKDQs
IGlucCwgc3RjYiwgbmV0KTsKICNlbmRpZgogCQlzY3RwX2NodW5rX291dHB1dChpbnAsIHN0Y2Is
IFNDVFBfT1VUUFVUX0ZST01fVDMsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CisJCWRpZF9vdXRwdXQg
PSB0cnVlOwogCQlpZiAoKHN0Y2ItPmFzb2MubnVtX3NlbmRfdGltZXJzX3VwID09IDApICYmCiAJ
CSAgICAoc3RjYi0+YXNvYy5zZW50X3F1ZXVlX2NudCA+IDApKSB7CiAJCQlzdHJ1Y3Qgc2N0cF90
bWl0X2NodW5rICpjaGs7CiAKIAkJCS8qCi0JCQkgKiBzYWZlZ3VhcmQuIElmIHRoZXJlIG9uIHNv
bWUgb24gdGhlIHNlbnQgcXVldWUKKwkJCSAqIFNhZmVndWFyZC4gSWYgdGhlcmUgb24gc29tZSBv
biB0aGUgc2VudCBxdWV1ZQogCQkJICogc29tZXdoZXJlIGJ1dCBubyB0aW1lcnMgcnVubmluZyBz
b21ldGhpbmcgaXMKIAkJCSAqIHdyb25nLi4uIHNvIHdlIHN0YXJ0IGEgdGltZXIgb24gdGhlIGZp
cnN0IGNodW5rCiAJCQkgKiBvbiB0aGUgc2VuZCBxdWV1ZSBvbiB3aGF0ZXZlciBuZXQgaXQgaXMg
c2VudCB0by4KIAkJCSAqLwotCQkJY2hrID0gVEFJTFFfRklSU1QoJnN0Y2ItPmFzb2Muc2VudF9x
dWV1ZSk7Ci0JCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9TRU5ELCBpbnAsIHN0
Y2IsCi0JCQkgICAgY2hrLT53aG9Ubyk7CisJCQlUQUlMUV9GT1JFQUNIKGNoaywgJnN0Y2ItPmFz
b2Muc2VudF9xdWV1ZSwgc2N0cF9uZXh0KSB7CisJCQkJaWYgKGNoay0+d2hvVG8gIT0gTlVMTCkg
eworCQkJCQlicmVhazsKKwkJCQl9CisJCQl9CisJCQlpZiAoY2hrICE9IE5VTEwpIHsKKwkJCQlz
Y3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9TRU5ELCBzdGNiLT5zY3RwX2VwLCBzdGNi
LCBjaGstPndob1RvKTsKKwkJCX0KIAkJfQogCQlicmVhazsKIAljYXNlIFNDVFBfVElNRVJfVFlQ
RV9JTklUOgotCQlpZiAoKHN0Y2IgPT0gTlVMTCkgfHwgKGlucCA9PSBOVUxMKSkgewotCQkJYnJl
YWs7Ci0JCX0KKwkJS0FTU0VSVChpbnAgIT0gTlVMTCAmJiBzdGNiICE9IE5VTEwgJiYgbmV0ICE9
IE5VTEwsCisJCSAgICAgICAgKCJ0aW1lb3V0IG9mIHR5cGUgJWQ6IGlucCA9ICVwLCBzdGNiID0g
JXAsIG5ldCA9ICVwIiwKKwkJICAgICAgICAgdHlwZSwgaW5wLCBzdGNiLCBuZXQpKTsKIAkJU0NU
UF9TVEFUX0lOQ1Ioc2N0cHNfdGltb2luaXQpOwogCQlzdGNiLT5hc29jLnRpbW9pbml0Kys7CiAJ
CWlmIChzY3RwX3QxaW5pdF90aW1lcihpbnAsIHN0Y2IsIG5ldCkpIHsKIAkJCS8qIG5vIG5lZWQg
dG8gdW5sb2NrIG9uIHRjYiBpdHMgZ29uZSAqLwogCQkJZ290byBvdXRfZGVjcjsKIAkJfQotCQkv
KiBXZSBkbyBvdXRwdXQgYnV0IG5vdCBoZXJlICovCi0JCWRpZF9vdXRwdXQgPSAwOworCQlkaWRf
b3V0cHV0ID0gZmFsc2U7CiAJCWJyZWFrOwogCWNhc2UgU0NUUF9USU1FUl9UWVBFX1JFQ1Y6Ci0J
CWlmICgoc3RjYiA9PSBOVUxMKSB8fCAoaW5wID09IE5VTEwpKSB7Ci0JCQlicmVhazsKLQkJfQor
CQlLQVNTRVJUKGlucCAhPSBOVUxMICYmIHN0Y2IgIT0gTlVMTCAmJiBuZXQgPT0gTlVMTCwKKwkJ
ICAgICAgICAoInRpbWVvdXQgb2YgdHlwZSAlZDogaW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0g
JXAiLAorCQkgICAgICAgICB0eXBlLCBpbnAsIHN0Y2IsIG5ldCkpOwogCQlTQ1RQX1NUQVRfSU5D
UihzY3Rwc190aW1vc2Fjayk7CiAJCXN0Y2ItPmFzb2MudGltb3NhY2srKzsKIAkJc2N0cF9zZW5k
X3NhY2soc3RjYiwgU0NUUF9TT19OT1RfTE9DS0VEKTsKICNpZmRlZiBTQ1RQX0FVRElUSU5HX0VO
QUJMRUQKLQkJc2N0cF9hdWRpdGluZyg0LCBpbnAsIHN0Y2IsIG5ldCk7CisJCXNjdHBfYXVkaXRp
bmcoNCwgaW5wLCBzdGNiLCBOVUxMKTsKICNlbmRpZgogCQlzY3RwX2NodW5rX291dHB1dChpbnAs
IHN0Y2IsIFNDVFBfT1VUUFVUX0ZST01fU0FDS19UTVIsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CisJ
CWRpZF9vdXRwdXQgPSB0cnVlOwogCQlicmVhazsKIAljYXNlIFNDVFBfVElNRVJfVFlQRV9TSFVU
RE9XTjoKLQkJaWYgKChzdGNiID09IE5VTEwpIHx8IChpbnAgPT0gTlVMTCkpIHsKLQkJCWJyZWFr
OwotCQl9CisJCUtBU1NFUlQoaW5wICE9IE5VTEwgJiYgc3RjYiAhPSBOVUxMICYmIG5ldCAhPSBO
VUxMLAorCQkgICAgICAgICgidGltZW91dCBvZiB0eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9ICVw
LCBuZXQgPSAlcCIsCisJCSAgICAgICAgIHR5cGUsIGlucCwgc3RjYiwgbmV0KSk7CisJCVNDVFBf
U1RBVF9JTkNSKHNjdHBzX3RpbW9zaHV0ZG93bik7CisJCXN0Y2ItPmFzb2MudGltb3NodXRkb3du
Kys7CiAJCWlmIChzY3RwX3NodXRkb3duX3RpbWVyKGlucCwgc3RjYiwgbmV0KSkgewogCQkJLyog
bm8gbmVlZCB0byB1bmxvY2sgb24gdGNiIGl0cyBnb25lICovCiAJCQlnb3RvIG91dF9kZWNyOwog
CQl9Ci0JCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3RpbW9zaHV0ZG93bik7Ci0JCXN0Y2ItPmFzb2Mu
dGltb3NodXRkb3duKys7CiAjaWZkZWYgU0NUUF9BVURJVElOR19FTkFCTEVECiAJCXNjdHBfYXVk
aXRpbmcoNCwgaW5wLCBzdGNiLCBuZXQpOwogI2VuZGlmCiAJCXNjdHBfY2h1bmtfb3V0cHV0KGlu
cCwgc3RjYiwgU0NUUF9PVVRQVVRfRlJPTV9TSFVUX1RNUiwgU0NUUF9TT19OT1RfTE9DS0VEKTsK
KwkJZGlkX291dHB1dCA9IHRydWU7CiAJCWJyZWFrOwogCWNhc2UgU0NUUF9USU1FUl9UWVBFX0hF
QVJUQkVBVDoKLQkJaWYgKChzdGNiID09IE5VTEwpIHx8IChpbnAgPT0gTlVMTCkgfHwgKG5ldCA9
PSBOVUxMKSkgewotCQkJYnJlYWs7Ci0JCX0KKwkJS0FTU0VSVChpbnAgIT0gTlVMTCAmJiBzdGNi
ICE9IE5VTEwgJiYgbmV0ICE9IE5VTEwsCisJCSAgICAgICAgKCJ0aW1lb3V0IG9mIHR5cGUgJWQ6
IGlucCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9ICVwIiwKKwkJICAgICAgICAgdHlwZSwgaW5wLCBz
dGNiLCBuZXQpKTsKIAkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfdGltb2hlYXJ0YmVhdCk7CiAJCXN0
Y2ItPmFzb2MudGltb2hlYXJ0YmVhdCsrOwogCQlpZiAoc2N0cF9oZWFydGJlYXRfdGltZXIoaW5w
LCBzdGNiLCBuZXQpKSB7CkBAIC0xODUxLDE5ICsxOTgyLDIxIEBAIHNjdHBfdGltZW91dF9oYW5k
bGVyKHZvaWQgKnQpCiAJCWlmICghKG5ldC0+ZGVzdF9zdGF0ZSAmIFNDVFBfQUREUl9OT0hCKSkg
ewogCQkJc2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfSEVBUlRCRUFULCBpbnAsIHN0
Y2IsIG5ldCk7CiAJCQlzY3RwX2NodW5rX291dHB1dChpbnAsIHN0Y2IsIFNDVFBfT1VUUFVUX0ZS
T01fSEJfVE1SLCBTQ1RQX1NPX05PVF9MT0NLRUQpOworCQkJZGlkX291dHB1dCA9IHRydWU7CisJ
CX0gZWxzZSB7CisJCQlkaWRfb3V0cHV0ID0gZmFsc2U7CiAJCX0KIAkJYnJlYWs7CiAJY2FzZSBT
Q1RQX1RJTUVSX1RZUEVfQ09PS0lFOgotCQlpZiAoKHN0Y2IgPT0gTlVMTCkgfHwgKGlucCA9PSBO
VUxMKSkgewotCQkJYnJlYWs7Ci0JCX0KLQorCQlLQVNTRVJUKGlucCAhPSBOVUxMICYmIHN0Y2Ig
IT0gTlVMTCAmJiBuZXQgIT0gTlVMTCwKKwkJICAgICAgICAoInRpbWVvdXQgb2YgdHlwZSAlZDog
aW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkgICAgICAgICB0eXBlLCBpbnAsIHN0
Y2IsIG5ldCkpOworCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc190aW1vY29va2llKTsKKwkJc3RjYi0+
YXNvYy50aW1vY29va2llKys7CiAJCWlmIChzY3RwX2Nvb2tpZV90aW1lcihpbnAsIHN0Y2IsIG5l
dCkpIHsKIAkJCS8qIG5vIG5lZWQgdG8gdW5sb2NrIG9uIHRjYiBpdHMgZ29uZSAqLwogCQkJZ290
byBvdXRfZGVjcjsKIAkJfQotCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc190aW1vY29va2llKTsKLQkJ
c3RjYi0+YXNvYy50aW1vY29va2llKys7CiAjaWZkZWYgU0NUUF9BVURJVElOR19FTkFCTEVECiAJ
CXNjdHBfYXVkaXRpbmcoNCwgaW5wLCBzdGNiLCBuZXQpOwogI2VuZGlmCkBAIC0xODcyLDQ1ICsy
MDA1LDQyIEBAIHNjdHBfdGltZW91dF9oYW5kbGVyKHZvaWQgKnQpCiAJCSAqIHJlc3BlY3QgdG8g
d2hlcmUgZnJvbSBpbiBjaHVua19vdXRwdXQuCiAJCSAqLwogCQlzY3RwX2NodW5rX291dHB1dChp
bnAsIHN0Y2IsIFNDVFBfT1VUUFVUX0ZST01fVDMsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CisJCWRp
ZF9vdXRwdXQgPSB0cnVlOwogCQlicmVhazsKIAljYXNlIFNDVFBfVElNRVJfVFlQRV9ORVdDT09L
SUU6Ci0JCXsKLQkJCXN0cnVjdCB0aW1ldmFsIHR2OwotCQkJaW50IGksIHNlY3JldDsKLQkJCWlm
IChpbnAgPT0gTlVMTCkgewotCQkJCWJyZWFrOwotCQkJfQotCQkJU0NUUF9TVEFUX0lOQ1Ioc2N0
cHNfdGltb3NlY3JldCk7Ci0JCQkodm9pZClTQ1RQX0dFVFRJTUVfVElNRVZBTCgmdHYpOwotCQkJ
aW5wLT5zY3RwX2VwLnRpbWVfb2Zfc2VjcmV0X2NoYW5nZSA9IHR2LnR2X3NlYzsKLQkJCWlucC0+
c2N0cF9lcC5sYXN0X3NlY3JldF9udW1iZXIgPQotCQkJICAgIGlucC0+c2N0cF9lcC5jdXJyZW50
X3NlY3JldF9udW1iZXI7Ci0JCQlpbnAtPnNjdHBfZXAuY3VycmVudF9zZWNyZXRfbnVtYmVyKys7
Ci0JCQlpZiAoaW5wLT5zY3RwX2VwLmN1cnJlbnRfc2VjcmV0X251bWJlciA+PQotCQkJICAgIFND
VFBfSE9XX01BTllfU0VDUkVUUykgewotCQkJCWlucC0+c2N0cF9lcC5jdXJyZW50X3NlY3JldF9u
dW1iZXIgPSAwOwotCQkJfQotCQkJc2VjcmV0ID0gKGludClpbnAtPnNjdHBfZXAuY3VycmVudF9z
ZWNyZXRfbnVtYmVyOwotCQkJZm9yIChpID0gMDsgaSA8IFNDVFBfTlVNQkVSX09GX1NFQ1JFVFM7
IGkrKykgewotCQkJCWlucC0+c2N0cF9lcC5zZWNyZXRfa2V5W3NlY3JldF1baV0gPQotCQkJCSAg
ICBzY3RwX3NlbGVjdF9pbml0aWFsX1RTTigmaW5wLT5zY3RwX2VwKTsKLQkJCX0KLQkJCXNjdHBf
dGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX05FV0NPT0tJRSwgaW5wLCBzdGNiLCBuZXQpOwot
CQl9Ci0JCWRpZF9vdXRwdXQgPSAwOworCQlLQVNTRVJUKGlucCAhPSBOVUxMICYmIHN0Y2IgPT0g
TlVMTCAmJiBuZXQgPT0gTlVMTCwKKwkJCSgidGltZW91dCBvZiB0eXBlICVkOiBpbnAgPSAlcCwg
c3RjYiA9ICVwLCBuZXQgPSAlcCIsCisJCQkgdHlwZSwgaW5wLCBzdGNiLCBuZXQpKTsKKwkJU0NU
UF9TVEFUX0lOQ1Ioc2N0cHNfdGltb3NlY3JldCk7CisJCSh2b2lkKVNDVFBfR0VUVElNRV9USU1F
VkFMKCZ0dik7CisJCWlucC0+c2N0cF9lcC50aW1lX29mX3NlY3JldF9jaGFuZ2UgPSB0di50dl9z
ZWM7CisJCWlucC0+c2N0cF9lcC5sYXN0X3NlY3JldF9udW1iZXIgPQorCQkgICAgaW5wLT5zY3Rw
X2VwLmN1cnJlbnRfc2VjcmV0X251bWJlcjsKKwkJaW5wLT5zY3RwX2VwLmN1cnJlbnRfc2VjcmV0
X251bWJlcisrOworCQlpZiAoaW5wLT5zY3RwX2VwLmN1cnJlbnRfc2VjcmV0X251bWJlciA+PQor
CQkgICAgU0NUUF9IT1dfTUFOWV9TRUNSRVRTKSB7CisJCQlpbnAtPnNjdHBfZXAuY3VycmVudF9z
ZWNyZXRfbnVtYmVyID0gMDsKKwkJfQorCQlzZWNyZXQgPSAoaW50KWlucC0+c2N0cF9lcC5jdXJy
ZW50X3NlY3JldF9udW1iZXI7CisJCWZvciAoaSA9IDA7IGkgPCBTQ1RQX05VTUJFUl9PRl9TRUNS
RVRTOyBpKyspIHsKKwkJCWlucC0+c2N0cF9lcC5zZWNyZXRfa2V5W3NlY3JldF1baV0gPQorCQkJ
ICAgIHNjdHBfc2VsZWN0X2luaXRpYWxfVFNOKCZpbnAtPnNjdHBfZXApOworCQl9CisJCXNjdHBf
dGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX05FV0NPT0tJRSwgaW5wLCBOVUxMLCBOVUxMKTsK
KwkJZGlkX291dHB1dCA9IGZhbHNlOwogCQlicmVhazsKIAljYXNlIFNDVFBfVElNRVJfVFlQRV9Q
QVRITVRVUkFJU0U6Ci0JCWlmICgoc3RjYiA9PSBOVUxMKSB8fCAoaW5wID09IE5VTEwpKSB7Ci0J
CQlicmVhazsKLQkJfQorCQlLQVNTRVJUKGlucCAhPSBOVUxMICYmIHN0Y2IgIT0gTlVMTCAmJiBu
ZXQgIT0gTlVMTCwKKwkJICAgICAgICAoInRpbWVvdXQgb2YgdHlwZSAlZDogaW5wID0gJXAsIHN0
Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkgICAgICAgICB0eXBlLCBpbnAsIHN0Y2IsIG5ldCkpOwog
CQlTQ1RQX1NUQVRfSU5DUihzY3Rwc190aW1vcGF0aG10dSk7CiAJCXNjdHBfcGF0aG10dV90aW1l
cihpbnAsIHN0Y2IsIG5ldCk7Ci0JCWRpZF9vdXRwdXQgPSAwOworCQlkaWRfb3V0cHV0ID0gZmFs
c2U7CiAJCWJyZWFrOwogCWNhc2UgU0NUUF9USU1FUl9UWVBFX1NIVVRET1dOQUNLOgotCQlpZiAo
KHN0Y2IgPT0gTlVMTCkgfHwgKGlucCA9PSBOVUxMKSkgewotCQkJYnJlYWs7Ci0JCX0KKwkJS0FT
U0VSVChpbnAgIT0gTlVMTCAmJiBzdGNiICE9IE5VTEwgJiYgbmV0ICE9IE5VTEwsCisJCSAgICAg
ICAgKCJ0aW1lb3V0IG9mIHR5cGUgJWQ6IGlucCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9ICVwIiwK
KwkJICAgICAgICAgdHlwZSwgaW5wLCBzdGNiLCBuZXQpKTsKIAkJaWYgKHNjdHBfc2h1dGRvd25h
Y2tfdGltZXIoaW5wLCBzdGNiLCBuZXQpKSB7CiAJCQkvKiBubyBuZWVkIHRvIHVubG9jayBvbiB0
Y2IgaXRzIGdvbmUgKi8KIAkJCWdvdG8gb3V0X2RlY3I7CkBAIC0xOTIxLDcwICsyMDUxLDg4IEBA
IHNjdHBfdGltZW91dF9oYW5kbGVyKHZvaWQgKnQpCiAJCXNjdHBfYXVkaXRpbmcoNCwgaW5wLCBz
dGNiLCBuZXQpOwogI2VuZGlmCiAJCXNjdHBfY2h1bmtfb3V0cHV0KGlucCwgc3RjYiwgU0NUUF9P
VVRQVVRfRlJPTV9TSFVUX0FDS19UTVIsIFNDVFBfU09fTk9UX0xPQ0tFRCk7Ci0JCWJyZWFrOwot
CWNhc2UgU0NUUF9USU1FUl9UWVBFX1NIVVRET1dOR1VBUkQ6Ci0JCWlmICgoc3RjYiA9PSBOVUxM
KSB8fCAoaW5wID09IE5VTEwpKSB7Ci0JCQlicmVhazsKLQkJfQotCQlTQ1RQX1NUQVRfSU5DUihz
Y3Rwc190aW1vc2h1dGRvd25ndWFyZCk7Ci0JCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2Uo
U0NUUF9CQVNFX1NZU0NUTChzY3RwX2RpYWdfaW5mb19jb2RlKSwKLQkJICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiU2h1dGRvd24gZ3VhcmQgdGltZXIgZXhwaXJlZCIpOwotCQlzY3RwX2Fi
b3J0X2FuX2Fzc29jaWF0aW9uKGlucCwgc3RjYiwgb3BfZXJyLCBTQ1RQX1NPX05PVF9MT0NLRUQp
OwotCQkvKiBubyBuZWVkIHRvIHVubG9jayBvbiB0Y2IgaXRzIGdvbmUgKi8KLQkJZ290byBvdXRf
ZGVjcjsKLQotCWNhc2UgU0NUUF9USU1FUl9UWVBFX1NUUlJFU0VUOgotCQlpZiAoKHN0Y2IgPT0g
TlVMTCkgfHwgKGlucCA9PSBOVUxMKSkgewotCQkJYnJlYWs7Ci0JCX0KLQkJaWYgKHNjdHBfc3Ry
cmVzZXRfdGltZXIoaW5wLCBzdGNiLCBuZXQpKSB7Ci0JCQkvKiBubyBuZWVkIHRvIHVubG9jayBv
biB0Y2IgaXRzIGdvbmUgKi8KLQkJCWdvdG8gb3V0X2RlY3I7Ci0JCX0KLQkJU0NUUF9TVEFUX0lO
Q1Ioc2N0cHNfdGltb3N0cm1yc3QpOwotCQlzY3RwX2NodW5rX291dHB1dChpbnAsIHN0Y2IsIFND
VFBfT1VUUFVUX0ZST01fU1RSUlNUX1RNUiwgU0NUUF9TT19OT1RfTE9DS0VEKTsKKwkJZGlkX291
dHB1dCA9IHRydWU7CiAJCWJyZWFrOwogCWNhc2UgU0NUUF9USU1FUl9UWVBFX0FTQ09ORjoKLQkJ
aWYgKChzdGNiID09IE5VTEwpIHx8IChpbnAgPT0gTlVMTCkpIHsKLQkJCWJyZWFrOwotCQl9CisJ
CUtBU1NFUlQoaW5wICE9IE5VTEwgJiYgc3RjYiAhPSBOVUxMICYmIG5ldCAhPSBOVUxMLAorCQkg
ICAgICAgICgidGltZW91dCBvZiB0eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9ICVwLCBuZXQgPSAl
cCIsCisJCSAgICAgICAgIHR5cGUsIGlucCwgc3RjYiwgbmV0KSk7CisJCVNDVFBfU1RBVF9JTkNS
KHNjdHBzX3RpbW9hc2NvbmYpOwogCQlpZiAoc2N0cF9hc2NvbmZfdGltZXIoaW5wLCBzdGNiLCBu
ZXQpKSB7CiAJCQkvKiBubyBuZWVkIHRvIHVubG9jayBvbiB0Y2IgaXRzIGdvbmUgKi8KIAkJCWdv
dG8gb3V0X2RlY3I7CiAJCX0KLQkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfdGltb2FzY29uZik7CiAj
aWZkZWYgU0NUUF9BVURJVElOR19FTkFCTEVECiAJCXNjdHBfYXVkaXRpbmcoNCwgaW5wLCBzdGNi
LCBuZXQpOwogI2VuZGlmCiAJCXNjdHBfY2h1bmtfb3V0cHV0KGlucCwgc3RjYiwgU0NUUF9PVVRQ
VVRfRlJPTV9BU0NPTkZfVE1SLCBTQ1RQX1NPX05PVF9MT0NLRUQpOworCQlkaWRfb3V0cHV0ID0g
dHJ1ZTsKIAkJYnJlYWs7Ci0JY2FzZSBTQ1RQX1RJTUVSX1RZUEVfUFJJTV9ERUxFVEVEOgotCQlp
ZiAoKHN0Y2IgPT0gTlVMTCkgfHwgKGlucCA9PSBOVUxMKSkgewotCQkJYnJlYWs7Ci0JCX0KLQkJ
c2N0cF9kZWxldGVfcHJpbV90aW1lcihpbnAsIHN0Y2IsIG5ldCk7Ci0JCVNDVFBfU1RBVF9JTkNS
KHNjdHBzX3RpbW9kZWxwcmltKTsKLQkJYnJlYWs7Ci0KKwljYXNlIFNDVFBfVElNRVJfVFlQRV9T
SFVURE9XTkdVQVJEOgorCQlLQVNTRVJUKGlucCAhPSBOVUxMICYmIHN0Y2IgIT0gTlVMTCAmJiBu
ZXQgPT0gTlVMTCwKKwkJICAgICAgICAoInRpbWVvdXQgb2YgdHlwZSAlZDogaW5wID0gJXAsIHN0
Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkgICAgICAgICB0eXBlLCBpbnAsIHN0Y2IsIG5ldCkpOwor
CQlTQ1RQX1NUQVRfSU5DUihzY3Rwc190aW1vc2h1dGRvd25ndWFyZCk7CisJCW9wX2VyciA9IHNj
dHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2RpYWdfaW5mb19jb2RlKSwK
KwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2h1dGRvd24gZ3VhcmQgdGltZXIgZXhw
aXJlZCIpOworCQlzY3RwX2Fib3J0X2FuX2Fzc29jaWF0aW9uKGlucCwgc3RjYiwgb3BfZXJyLCBT
Q1RQX1NPX05PVF9MT0NLRUQpOworCQlkaWRfb3V0cHV0ID0gdHJ1ZTsKKwkJLyogbm8gbmVlZCB0
byB1bmxvY2sgb24gdGNiIGl0cyBnb25lICovCisJCWdvdG8gb3V0X2RlY3I7CiAJY2FzZSBTQ1RQ
X1RJTUVSX1RZUEVfQVVUT0NMT1NFOgotCQlpZiAoKHN0Y2IgPT0gTlVMTCkgfHwgKGlucCA9PSBO
VUxMKSkgewotCQkJYnJlYWs7Ci0JCX0KKwkJS0FTU0VSVChpbnAgIT0gTlVMTCAmJiBzdGNiICE9
IE5VTEwgJiYgbmV0ID09IE5VTEwsCisJCSAgICAgICAgKCJ0aW1lb3V0IG9mIHR5cGUgJWQ6IGlu
cCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9ICVwIiwKKwkJICAgICAgICAgdHlwZSwgaW5wLCBzdGNi
LCBuZXQpKTsKIAkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfdGltb2F1dG9jbG9zZSk7Ci0JCXNjdHBf
YXV0b2Nsb3NlX3RpbWVyKGlucCwgc3RjYiwgbmV0KTsKKwkJc2N0cF9hdXRvY2xvc2VfdGltZXIo
aW5wLCBzdGNiKTsKIAkJc2N0cF9jaHVua19vdXRwdXQoaW5wLCBzdGNiLCBTQ1RQX09VVFBVVF9G
Uk9NX0FVVE9DTE9TRV9UTVIsIFNDVFBfU09fTk9UX0xPQ0tFRCk7Ci0JCWRpZF9vdXRwdXQgPSAw
OworCQlkaWRfb3V0cHV0ID0gdHJ1ZTsKIAkJYnJlYWs7Ci0JY2FzZSBTQ1RQX1RJTUVSX1RZUEVf
QVNPQ0tJTEw6Ci0JCWlmICgoc3RjYiA9PSBOVUxMKSB8fCAoaW5wID09IE5VTEwpKSB7Ci0JCQli
cmVhazsKKwljYXNlIFNDVFBfVElNRVJfVFlQRV9TVFJSRVNFVDoKKwkJS0FTU0VSVChpbnAgIT0g
TlVMTCAmJiBzdGNiICE9IE5VTEwgJiYgbmV0ID09IE5VTEwsCisJCSAgICAgICAgKCJ0aW1lb3V0
IG9mIHR5cGUgJWQ6IGlucCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9ICVwIiwKKwkJICAgICAgICAg
dHlwZSwgaW5wLCBzdGNiLCBuZXQpKTsKKwkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfdGltb3N0cm1y
c3QpOworCQlpZiAoc2N0cF9zdHJyZXNldF90aW1lcihpbnAsIHN0Y2IpKSB7CisJCQkvKiBubyBu
ZWVkIHRvIHVubG9jayBvbiB0Y2IgaXRzIGdvbmUgKi8KKwkJCWdvdG8gb3V0X2RlY3I7CiAJCX0K
KwkJc2N0cF9jaHVua19vdXRwdXQoaW5wLCBzdGNiLCBTQ1RQX09VVFBVVF9GUk9NX1NUUlJTVF9U
TVIsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CisJCWRpZF9vdXRwdXQgPSB0cnVlOworCQlicmVhazsK
KwljYXNlIFNDVFBfVElNRVJfVFlQRV9JTlBLSUxMOgorCQlLQVNTRVJUKGlucCAhPSBOVUxMICYm
IHN0Y2IgPT0gTlVMTCAmJiBuZXQgPT0gTlVMTCwKKwkJICAgICAgICAoInRpbWVvdXQgb2YgdHlw
ZSAlZDogaW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkgICAgICAgICB0eXBlLCBp
bnAsIHN0Y2IsIG5ldCkpOworCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc190aW1vaW5wa2lsbCk7CisJ
CS8qCisJCSAqIHNwZWNpYWwgY2FzZSwgdGFrZSBhd2F5IG91ciBpbmNyZW1lbnQgc2luY2UgV0Ug
YXJlIHRoZQorCQkgKiBraWxsZXIKKwkJICovCisJCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVS
X1RZUEVfSU5QS0lMTCwgaW5wLCBOVUxMLCBOVUxMLAorCQkgICAgICAgICAgICAgICAgU0NUUF9G
Uk9NX1NDVFBVVElMICsgU0NUUF9MT0NfMyk7CisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCVNDVFBfU09DS0VUX0xPQ0soU0NUUF9JTlBfU08oaW5w
KSwgMSk7CisjZW5kaWYKKwkJU0NUUF9JTlBfREVDUl9SRUYoaW5wKTsKKwkJU0NUUF9JTlBfV1VO
TE9DSyhpbnApOworCQlzY3RwX2lucGNiX2ZyZWUoaW5wLCBTQ1RQX0ZSRUVfU0hPVUxEX1VTRV9B
Qk9SVCwKKwkJICAgICAgICAgICAgICAgIFNDVFBfQ0FMTEVEX0ZST01fSU5QS0lMTF9USU1FUik7
CisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCVND
VFBfU09DS0VUX1VOTE9DSyhTQ1RQX0lOUF9TTyhpbnApLCAxKTsKKyNlbmRpZgorCQlpbnAgPSBO
VUxMOworCQlnb3RvIG91dF9ub19kZWNyOworCWNhc2UgU0NUUF9USU1FUl9UWVBFX0FTT0NLSUxM
OgorCQlLQVNTRVJUKGlucCAhPSBOVUxMICYmIHN0Y2IgIT0gTlVMTCAmJiBuZXQgPT0gTlVMTCwK
KwkJICAgICAgICAoInRpbWVvdXQgb2YgdHlwZSAlZDogaW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0
ID0gJXAiLAorCQkgICAgICAgICB0eXBlLCBpbnAsIHN0Y2IsIG5ldCkpOwogCQlTQ1RQX1NUQVRf
SU5DUihzY3Rwc190aW1vYXNzb2NraWxsKTsKIAkJLyogQ2FuIHdlIGZyZWUgaXQgeWV0PyAqLwog
CQlTQ1RQX0lOUF9ERUNSX1JFRihpbnApOwogCQlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9U
WVBFX0FTT0NLSUxMLCBpbnAsIHN0Y2IsIE5VTEwsCiAJCSAgICAgICAgICAgICAgICBTQ1RQX0ZS
T01fU0NUUFVUSUwgKyBTQ1RQX0xPQ18xKTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVm
aW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJc28gPSBTQ1RQX0lOUF9TTyhpbnApOwogCQlhdG9taWNf
YWRkX2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIDEpOwogCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7
CkBAIC0xOTk0LDcgKzIxNDIsNyBAQCBzY3RwX3RpbWVvdXRfaGFuZGxlcih2b2lkICp0KQogI2Vu
ZGlmCiAJCSh2b2lkKXNjdHBfZnJlZV9hc3NvYyhpbnAsIHN0Y2IsIFNDVFBfTk9STUFMX1BST0Ms
CiAJCSAgICAgICAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUFVUSUwgKyBTQ1RQX0xPQ18y
KTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElO
RykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJ
U0NUUF9TT0NLRVRfVU5MT0NLKHNvLCAxKTsKICNlbmRpZgogCQkvKgpAQCAtMjAwMywzOSArMjE1
MSwzNSBAQCBzY3RwX3RpbWVvdXRfaGFuZGxlcih2b2lkICp0KQogCQkgKi8KIAkJc3RjYiA9IE5V
TEw7CiAJCWdvdG8gb3V0X25vX2RlY3I7Ci0JY2FzZSBTQ1RQX1RJTUVSX1RZUEVfSU5QS0lMTDoK
LQkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfdGltb2lucGtpbGwpOwotCQlpZiAoaW5wID09IE5VTEwp
IHsKLQkJCWJyZWFrOwotCQl9Ci0JCS8qCi0JCSAqIHNwZWNpYWwgY2FzZSwgdGFrZSBhd2F5IG91
ciBpbmNyZW1lbnQgc2luY2UgV0UgYXJlIHRoZQotCQkgKiBraWxsZXIKLQkJICovCi0JCVNDVFBf
SU5QX0RFQ1JfUkVGKGlucCk7Ci0JCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfSU5Q
S0lMTCwgaW5wLCBOVUxMLCBOVUxMLAotCQkgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBV
VElMICsgU0NUUF9MT0NfMyk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pCi0JCVNDVFBfU09DS0VU
X0xPQ0soU0NUUF9JTlBfU08oaW5wKSwgMSk7Ci0jZW5kaWYKLQkJc2N0cF9pbnBjYl9mcmVlKGlu
cCwgU0NUUF9GUkVFX1NIT1VMRF9VU0VfQUJPUlQsCi0JCQkJU0NUUF9DQUxMRURfRlJPTV9JTlBL
SUxMX1RJTUVSKTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKLQkJU0NUUF9TT0NLRVRfVU5MT0NL
KFNDVFBfSU5QX1NPKGlucCksIDEpOwotI2VuZGlmCi0JCWlucCA9IE5VTEw7Ci0JCWdvdG8gb3V0
X25vX2RlY3I7Ci0JZGVmYXVsdDoKLQkJU0NUUERCRyhTQ1RQX0RFQlVHX1RJTUVSMSwgInNjdHBf
dGltZW91dF9oYW5kbGVyOnVua25vd24gdGltZXIgJWRcbiIsCi0JCQl0eXBlKTsKKwljYXNlIFND
VFBfVElNRVJfVFlQRV9BRERSX1dROgorCQlLQVNTRVJUKGlucCA9PSBOVUxMICYmIHN0Y2IgPT0g
TlVMTCAmJiBuZXQgPT0gTlVMTCwKKwkJICAgICAgICAoInRpbWVvdXQgb2YgdHlwZSAlZDogaW5w
ID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkgICAgICAgICB0eXBlLCBpbnAsIHN0Y2Is
IG5ldCkpOworCQlzY3RwX2hhbmRsZV9hZGRyX3dxKCk7CisJCWRpZF9vdXRwdXQgPSB0cnVlOwog
CQlicmVhazsKKwljYXNlIFNDVFBfVElNRVJfVFlQRV9QUklNX0RFTEVURUQ6CisJCUtBU1NFUlQo
aW5wICE9IE5VTEwgJiYgc3RjYiAhPSBOVUxMICYmIG5ldCA9PSBOVUxMLAorCQkgICAgICAgICgi
dGltZW91dCBvZiB0eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9ICVwLCBuZXQgPSAlcCIsCisJCSAg
ICAgICAgIHR5cGUsIGlucCwgc3RjYiwgbmV0KSk7CisJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3Rp
bW9kZWxwcmltKTsKKwkJc2N0cF9kZWxldGVfcHJpbV90aW1lcihpbnAsIHN0Y2IpOworCQlkaWRf
b3V0cHV0ID0gZmFsc2U7CisJCWJyZWFrOworCWRlZmF1bHQ6CisjaWZkZWYgSU5WQVJJQU5UUwor
CQlwYW5pYygiVW5rbm93biB0aW1lciB0eXBlICVkIiwgdHlwZSk7CisjZWxzZQorCQlkaWRfb3V0
cHV0ID0gZmFsc2U7CisJCWdvdG8gb3V0OworI2VuZGlmCiAJfQogI2lmZGVmIFNDVFBfQVVESVRJ
TkdfRU5BQkxFRAogCXNjdHBfYXVkaXRfbG9nKDB4RjEsICh1aW50OF90KSB0eXBlKTsKLQlpZiAo
aW5wKQorCWlmIChpbnAgIT0gTlVMTCkKIAkJc2N0cF9hdWRpdGluZyg1LCBpbnAsIHN0Y2IsIG5l
dCk7CiAjZW5kaWYKLQlpZiAoKGRpZF9vdXRwdXQpICYmIHN0Y2IpIHsKKwlpZiAoZGlkX291dHB1
dCAmJiAoc3RjYiAhPSBOVUxMKSApIHsKIAkJLyoKIAkJICogTm93IHdlIG5lZWQgdG8gY2xlYW4g
dXAgdGhlIGNvbnRyb2wgY2h1bmsgY2hhaW4gaWYgYW4KIAkJICogRUNORSBpcyBvbiBpdC4gSXQg
bXVzdCBiZSBtYXJrZWQgYXMgVU5TRU5UIGFnYWluIHNvIG5leHQKQEAgLTIwNDUsOCArMjE4OSw4
IEBAIHNjdHBfdGltZW91dF9oYW5kbGVyKHZvaWQgKnQpCiAJCSAqLwogCQlzY3RwX2ZpeF9lY25f
ZWNobygmc3RjYi0+YXNvYyk7CiAJfQotZ2V0X291dDoKLQlpZiAoc3RjYikgeworb3V0OgorCWlm
IChzdGNiICE9IE5VTEwpIHsKIAkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwogCX0gZWxzZSBpZiAo
aW5wICE9IE5VTEwpIHsKIAkJU0NUUF9JTlBfV1VOTE9DSyhpbnApOwpAQCAtMjA1NSwyODMgKzIx
OTksNDQwIEBAIGdldF9vdXQ6CiAJfQogCiBvdXRfZGVjcjoKLQlpZiAoaW5wKSB7CisjaWYgZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQorCWlmICh1cGNhbGxfc29ja2V0ICE9IE5VTEwpIHsKKwkJaWYg
KCh1cGNhbGxfc29ja2V0LT5zb191cGNhbGwgIT0gTlVMTCkgJiYKKwkJICAgICh1cGNhbGxfc29j
a2V0LT5zb19lcnJvciAhPSAwKSkgeworCQkJKCp1cGNhbGxfc29ja2V0LT5zb191cGNhbGwpKHVw
Y2FsbF9zb2NrZXQsIHVwY2FsbF9zb2NrZXQtPnNvX3VwY2FsbGFyZywgTV9OT1dBSVQpOworCQl9
CisJCUFDQ0VQVF9MT0NLKCk7CisJCVNPQ0tfTE9DSyh1cGNhbGxfc29ja2V0KTsKKwkJc29yZWxl
KHVwY2FsbF9zb2NrZXQpOworCX0KKyNlbmRpZgorCS8qIFRoZXNlIHJlZmVyZW5jZSBjb3VudHMg
d2VyZSBpbmNyZW1lbnRlZCBpbiBzY3RwX3RpbWVyX3N0YXJ0KCkuICovCisJaWYgKGlucCAhPSBO
VUxMKSB7CiAJCVNDVFBfSU5QX0RFQ1JfUkVGKGlucCk7CiAJfQotCisJaWYgKChzdGNiICE9IE5V
TEwpICYmICFyZWxlYXNlZF9hc29jX3JlZmVyZW5jZSkgeworCQlhdG9taWNfYWRkX2ludCgmc3Rj
Yi0+YXNvYy5yZWZjbnQsIC0xKTsKKwl9CisJaWYgKG5ldCAhPSBOVUxMKSB7CisJCXNjdHBfZnJl
ZV9yZW1vdGVfYWRkcihuZXQpOworCX0KIG91dF9ub19kZWNyOgotCVNDVFBEQkcoU0NUUF9ERUJV
R19USU1FUjEsICJUaW1lciBub3cgY29tcGxldGUgKHR5cGUgPSAlZClcbiIsIHR5cGUpOwotI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMTAwMAorCVND
VFBEQkcoU0NUUF9ERUJVR19USU1FUjIsICJUaW1lciB0eXBlICVkIGhhbmRsZXIgZmluaXNoZWQu
XG4iLCB0eXBlKTsKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCUNVUlZORVRfUkVTVE9SRSgpOworCU5FVF9FUE9DSF9FWElUKGV0KTsKICNlbmRp
ZgogfQogCisvKi0KKyAqIFRoZSBmb2xsb3dpbmcgdGFibGUgc2hvd3Mgd2hpY2ggcGFyYW1ldGVy
cyBtdXN0IGJlIHByb3ZpZGVkCisgKiB3aGVuIGNhbGxpbmcgc2N0cF90aW1lcl9zdGFydCgpLiBG
b3IgcGFyYW1ldGVycyBub3QgYmVpbmcKKyAqIHByb3ZpZGVkLCBOVUxMIG11c3QgYmUgdXNlZC4K
KyAqCisgKiB8TmFtZSAgICAgICAgICAgICAgICAgICAgICAgICB8aW5wIHxzdGNifG5ldCB8Cisg
KiB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLXwtLS0tfC0tLS18CisgKiB8U0NU
UF9USU1FUl9UWVBFX1NFTkQgICAgICAgICB8WWVzIHxZZXMgfFllcyB8CisgKiB8U0NUUF9USU1F
Ul9UWVBFX0lOSVQgICAgICAgICB8WWVzIHxZZXMgfFllcyB8CisgKiB8U0NUUF9USU1FUl9UWVBF
X1JFQ1YgICAgICAgICB8WWVzIHxZZXMgfE5vICB8CisgKiB8U0NUUF9USU1FUl9UWVBFX1NIVVRE
T1dOICAgICB8WWVzIHxZZXMgfFllcyB8CisgKiB8U0NUUF9USU1FUl9UWVBFX0hFQVJUQkVBVCAg
ICB8WWVzIHxZZXMgfFllcyB8CisgKiB8U0NUUF9USU1FUl9UWVBFX0NPT0tJRSAgICAgICB8WWVz
IHxZZXMgfFllcyB8CisgKiB8U0NUUF9USU1FUl9UWVBFX05FV0NPT0tJRSAgICB8WWVzIHxObyAg
fE5vICB8CisgKiB8U0NUUF9USU1FUl9UWVBFX1BBVEhNVFVSQUlTRSB8WWVzIHxZZXMgfFllcyB8
CisgKiB8U0NUUF9USU1FUl9UWVBFX1NIVVRET1dOQUNLICB8WWVzIHxZZXMgfFllcyB8CisgKiB8
U0NUUF9USU1FUl9UWVBFX0FTQ09ORiAgICAgICB8WWVzIHxZZXMgfFllcyB8CisgKiB8U0NUUF9U
SU1FUl9UWVBFX1NIVVRET1dOR1VBUkR8WWVzIHxZZXMgfE5vICB8CisgKiB8U0NUUF9USU1FUl9U
WVBFX0FVVE9DTE9TRSAgICB8WWVzIHxZZXMgfE5vICB8CisgKiB8U0NUUF9USU1FUl9UWVBFX1NU
UlJFU0VUICAgICB8WWVzIHxZZXMgfFllcyB8CisgKiB8U0NUUF9USU1FUl9UWVBFX0lOUEtJTEwg
ICAgICB8WWVzIHxObyAgfE5vICB8CisgKiB8U0NUUF9USU1FUl9UWVBFX0FTT0NLSUxMICAgICB8
WWVzIHxZZXMgfE5vICB8CisgKiB8U0NUUF9USU1FUl9UWVBFX0FERFJfV1EgICAgICB8Tm8gIHxO
byAgfE5vICB8CisgKiB8U0NUUF9USU1FUl9UWVBFX1BSSU1fREVMRVRFRCB8WWVzIHxZZXMgfE5v
ICB8CisgKgorICovCisKIHZvaWQKIHNjdHBfdGltZXJfc3RhcnQoaW50IHRfdHlwZSwgc3RydWN0
IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogICAgIHN0cnVjdCBzY3Rw
X25ldHMgKm5ldCkKIHsKLQl1aW50MzJfdCB0b190aWNrczsKIAlzdHJ1Y3Qgc2N0cF90aW1lciAq
dG1yOworCXVpbnQzMl90IHRvX3RpY2tzOworCXVpbnQzMl90IHJuZHZhbCwgaml0dGVyOwogCi0J
aWYgKCh0X3R5cGUgIT0gU0NUUF9USU1FUl9UWVBFX0FERFJfV1EpICYmIChpbnAgPT0gTlVMTCkp
Ci0JCXJldHVybjsKLQorCUtBU1NFUlQoc3RjYiA9PSBOVUxMIHx8IHN0Y2ItPnNjdHBfZXAgPT0g
aW5wLAorCSAgICAgICAgKCJzY3RwX3RpbWVyX3N0YXJ0IG9mIHR5cGUgJWQ6IGlucCA9ICVwLCBz
dGNiLT5zY3RwX2VwICVwIiwKKwkgICAgICAgICB0X3R5cGUsIHN0Y2IsIHN0Y2ItPnNjdHBfZXAp
KTsKIAl0bXIgPSBOVUxMOwotCWlmIChzdGNiKSB7CisJdG9fdGlja3MgPSAwOworCWlmIChzdGNi
ICE9IE5VTEwpIHsKIAkJU0NUUF9UQ0JfTE9DS19BU1NFUlQoc3RjYik7CisJfSBlbHNlIGlmIChp
bnAgIT0gTlVMTCkgeworCQlTQ1RQX0lOUF9XTE9DS19BU1NFUlQoaW5wKTsKKwl9IGVsc2Ugewor
CQlTQ1RQX1dRX0FERFJfTE9DS19BU1NFUlQoKTsKKwl9CisJaWYgKHN0Y2IgIT0gTlVMTCkgewor
CQkvKiBEb24ndCByZXN0YXJ0IHRpbWVyIG9uIGFzc29jaWF0aW9uIHRoYXQncyBhYm91dCB0byBi
ZSBraWxsZWQuICovCisJCWlmICgoc3RjYi0+YXNvYy5zdGF0ZSAmIFNDVFBfU1RBVEVfQUJPVVRf
VE9fQkVfRlJFRUQpICYmCisJCSAgICAodF90eXBlICE9IFNDVFBfVElNRVJfVFlQRV9BU09DS0lM
TCkpIHsKKwkJCVNDVFBEQkcoU0NUUF9ERUJVR19USU1FUjIsCisJCQkJIlRpbWVyIHR5cGUgJWQg
bm90IHN0YXJ0ZWQ6IGlucD0lcCwgc3RjYj0lcCwgbmV0PSVwIChzdGNiIGRlbGV0ZWQpLlxuIiwK
KwkJCQl0X3R5cGUsIGlucCwgc3RjYiwgbmV0KTsKKwkJCXJldHVybjsKKwkJfQorCQkvKiBEb24n
dCByZXN0YXJ0IHRpbWVyIG9uIG5ldCB0aGF0J3MgYmVlbiByZW1vdmVkLiAqLworCQlpZiAobmV0
ICE9IE5VTEwgJiYgKG5ldC0+ZGVzdF9zdGF0ZSAmIFNDVFBfQUREUl9CRUlOR19ERUxFVEVEKSkg
eworCQkJU0NUUERCRyhTQ1RQX0RFQlVHX1RJTUVSMiwKKwkJCQkiVGltZXIgdHlwZSAlZCBub3Qg
c3RhcnRlZDogaW5wPSVwLCBzdGNiPSVwLCBuZXQ9JXAgKG5ldCBkZWxldGVkKS5cbiIsCisJCQkJ
dF90eXBlLCBpbnAsIHN0Y2IsIG5ldCk7CisJCQlyZXR1cm47CisJCX0KIAl9CiAJc3dpdGNoICh0
X3R5cGUpIHsKLQljYXNlIFNDVFBfVElNRVJfVFlQRV9BRERSX1dROgotCQkvKiBPbmx5IDEgdGlj
ayBhd2F5IDotKSAqLwotCQl0bXIgPSAmU0NUUF9CQVNFX0lORk8oYWRkcl93cV90aW1lcik7Ci0J
CXRvX3RpY2tzID0gU0NUUF9BRERSRVNTX1RJQ0tfREVMQVk7Ci0JCWJyZWFrOwogCWNhc2UgU0NU
UF9USU1FUl9UWVBFX1NFTkQ6Ci0JCS8qIEhlcmUgd2UgdXNlIHRoZSBSVE8gdGltZXIgKi8KLQkJ
ewotCQkJaW50IHJ0b192YWw7Ci0KLQkJCWlmICgoc3RjYiA9PSBOVUxMKSB8fCAobmV0ID09IE5V
TEwpKSB7Ci0JCQkJcmV0dXJuOwotCQkJfQotCQkJdG1yID0gJm5ldC0+cnh0X3RpbWVyOwotCQkJ
aWYgKG5ldC0+UlRPID09IDApIHsKLQkJCQlydG9fdmFsID0gc3RjYi0+YXNvYy5pbml0aWFsX3J0
bzsKLQkJCX0gZWxzZSB7Ci0JCQkJcnRvX3ZhbCA9IG5ldC0+UlRPOwotCQkJfQotCQkJdG9fdGlj
a3MgPSBNU0VDX1RPX1RJQ0tTKHJ0b192YWwpOworCQkvKiBIZXJlIHdlIHVzZSB0aGUgUlRPIHRp
bWVyLiAqLworCQlpZiAoKGlucCA9PSBOVUxMKSB8fCAoc3RjYiA9PSBOVUxMKSB8fCAobmV0ID09
IE5VTEwpKSB7CisjaWZkZWYgSU5WQVJJQU5UUworCQkJcGFuaWMoInNjdHBfdGltZXJfc3RhcnQg
b2YgdHlwZSAlZDogaW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkJICAgICAgdF90
eXBlLCBpbnAsIHN0Y2IsIG5ldCk7CisjZWxzZQorCQkJcmV0dXJuOworI2VuZGlmCisJCX0KKwkJ
dG1yID0gJm5ldC0+cnh0X3RpbWVyOworCQlpZiAobmV0LT5SVE8gPT0gMCkgeworCQkJdG9fdGlj
a3MgPSBzY3RwX21zZWNzX3RvX3RpY2tzKHN0Y2ItPmFzb2MuaW5pdGlhbF9ydG8pOworCQl9IGVs
c2UgeworCQkJdG9fdGlja3MgPSBzY3RwX21zZWNzX3RvX3RpY2tzKG5ldC0+UlRPKTsKIAkJfQog
CQlicmVhazsKIAljYXNlIFNDVFBfVElNRVJfVFlQRV9JTklUOgogCQkvKgogCQkgKiBIZXJlIHdl
IHVzZSB0aGUgSU5JVCB0aW1lciBkZWZhdWx0IHVzdWFsbHkgYWJvdXQgMQotCQkgKiBtaW51dGUu
CisJCSAqIHNlY29uZC4KIAkJICovCi0JCWlmICgoc3RjYiA9PSBOVUxMKSB8fCAobmV0ID09IE5V
TEwpKSB7CisJCWlmICgoaW5wID09IE5VTEwpIHx8IChzdGNiID09IE5VTEwpIHx8IChuZXQgPT0g
TlVMTCkpIHsKKyNpZmRlZiBJTlZBUklBTlRTCisJCQlwYW5pYygic2N0cF90aW1lcl9zdGFydCBv
ZiB0eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9ICVwLCBuZXQgPSAlcCIsCisJCQkgICAgICB0X3R5
cGUsIGlucCwgc3RjYiwgbmV0KTsKKyNlbHNlCiAJCQlyZXR1cm47CisjZW5kaWYKIAkJfQogCQl0
bXIgPSAmbmV0LT5yeHRfdGltZXI7CiAJCWlmIChuZXQtPlJUTyA9PSAwKSB7Ci0JCQl0b190aWNr
cyA9IE1TRUNfVE9fVElDS1Moc3RjYi0+YXNvYy5pbml0aWFsX3J0byk7CisJCQl0b190aWNrcyA9
IHNjdHBfbXNlY3NfdG9fdGlja3Moc3RjYi0+YXNvYy5pbml0aWFsX3J0byk7CiAJCX0gZWxzZSB7
Ci0JCQl0b190aWNrcyA9IE1TRUNfVE9fVElDS1MobmV0LT5SVE8pOworCQkJdG9fdGlja3MgPSBz
Y3RwX21zZWNzX3RvX3RpY2tzKG5ldC0+UlRPKTsKIAkJfQogCQlicmVhazsKIAljYXNlIFNDVFBf
VElNRVJfVFlQRV9SRUNWOgogCQkvKgotCQkgKiBIZXJlIHdlIHVzZSB0aGUgRGVsYXllZC1BY2sg
dGltZXIgdmFsdWUgZnJvbSB0aGUgaW5wCisJCSAqIEhlcmUgd2UgdXNlIHRoZSBEZWxheWVkLUFj
ayB0aW1lciB2YWx1ZSBmcm9tIHRoZSBpbnAsCiAJCSAqIHVzdXN1YWxseSBhYm91dCAyMDBtcy4K
IAkJICovCi0JCWlmIChzdGNiID09IE5VTEwpIHsKKwkJaWYgKChpbnAgPT0gTlVMTCkgfHwgKHN0
Y2IgPT0gTlVMTCkgfHwgKG5ldCAhPSBOVUxMKSkgeworI2lmZGVmIElOVkFSSUFOVFMKKwkJCXBh
bmljKCJzY3RwX3RpbWVyX3N0YXJ0IG9mIHR5cGUgJWQ6IGlucCA9ICVwLCBzdGNiID0gJXAsIG5l
dCA9ICVwIiwKKwkJCSAgICAgIHRfdHlwZSwgaW5wLCBzdGNiLCBuZXQpOworI2Vsc2UKIAkJCXJl
dHVybjsKKyNlbmRpZgogCQl9CiAJCXRtciA9ICZzdGNiLT5hc29jLmRhY2tfdGltZXI7Ci0JCXRv
X3RpY2tzID0gTVNFQ19UT19USUNLUyhzdGNiLT5hc29jLmRlbGF5ZWRfYWNrKTsKKwkJdG9fdGlj
a3MgPSBzY3RwX21zZWNzX3RvX3RpY2tzKHN0Y2ItPmFzb2MuZGVsYXllZF9hY2spOwogCQlicmVh
azsKIAljYXNlIFNDVFBfVElNRVJfVFlQRV9TSFVURE9XTjoKIAkJLyogSGVyZSB3ZSB1c2UgdGhl
IFJUTyBvZiB0aGUgZGVzdGluYXRpb24uICovCi0JCWlmICgoc3RjYiA9PSBOVUxMKSB8fCAobmV0
ID09IE5VTEwpKSB7CisJCWlmICgoaW5wID09IE5VTEwpIHx8IChzdGNiID09IE5VTEwpIHx8IChu
ZXQgPT0gTlVMTCkpIHsKKyNpZmRlZiBJTlZBUklBTlRTCisJCQlwYW5pYygic2N0cF90aW1lcl9z
dGFydCBvZiB0eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9ICVwLCBuZXQgPSAlcCIsCisJCQkgICAg
ICB0X3R5cGUsIGlucCwgc3RjYiwgbmV0KTsKKyNlbHNlCiAJCQlyZXR1cm47CisjZW5kaWYKIAkJ
fQorCQl0bXIgPSAmbmV0LT5yeHRfdGltZXI7CiAJCWlmIChuZXQtPlJUTyA9PSAwKSB7Ci0JCQl0
b190aWNrcyA9IE1TRUNfVE9fVElDS1Moc3RjYi0+YXNvYy5pbml0aWFsX3J0byk7CisJCQl0b190
aWNrcyA9IHNjdHBfbXNlY3NfdG9fdGlja3Moc3RjYi0+YXNvYy5pbml0aWFsX3J0byk7CiAJCX0g
ZWxzZSB7Ci0JCQl0b190aWNrcyA9IE1TRUNfVE9fVElDS1MobmV0LT5SVE8pOworCQkJdG9fdGlj
a3MgPSBzY3RwX21zZWNzX3RvX3RpY2tzKG5ldC0+UlRPKTsKIAkJfQotCQl0bXIgPSAmbmV0LT5y
eHRfdGltZXI7CiAJCWJyZWFrOwogCWNhc2UgU0NUUF9USU1FUl9UWVBFX0hFQVJUQkVBVDoKIAkJ
LyoKLQkJICogdGhlIG5ldCBpcyB1c2VkIGhlcmUgc28gdGhhdCB3ZSBjYW4gYWRkIGluIHRoZSBS
VE8uIEV2ZW4KKwkJICogVGhlIG5ldCBpcyB1c2VkIGhlcmUgc28gdGhhdCB3ZSBjYW4gYWRkIGlu
IHRoZSBSVE8uIEV2ZW4KIAkJICogdGhvdWdoIHdlIHVzZSBhIGRpZmZlcmVudCB0aW1lci4gV2Ug
YWxzbyBhZGQgdGhlIEhCIHRpbWVyCiAJCSAqIFBMVVMgYSByYW5kb20gaml0dGVyLgogCQkgKi8K
LQkJaWYgKChzdGNiID09IE5VTEwpIHx8IChuZXQgPT0gTlVMTCkpIHsKKwkJaWYgKChpbnAgPT0g
TlVMTCkgfHwgKHN0Y2IgPT0gTlVMTCkgfHwgKG5ldCA9PSBOVUxMKSkgeworI2lmZGVmIElOVkFS
SUFOVFMKKwkJCXBhbmljKCJzY3RwX3RpbWVyX3N0YXJ0IG9mIHR5cGUgJWQ6IGlucCA9ICVwLCBz
dGNiID0gJXAsIG5ldCA9ICVwIiwKKwkJCSAgICAgIHRfdHlwZSwgaW5wLCBzdGNiLCBuZXQpOwor
I2Vsc2UKIAkJCXJldHVybjsKKyNlbmRpZgorCQl9CisJCWlmICgobmV0LT5kZXN0X3N0YXRlICYg
U0NUUF9BRERSX05PSEIpICYmCisJCSAgICAhKG5ldC0+ZGVzdF9zdGF0ZSAmIFNDVFBfQUREUl9V
TkNPTkZJUk1FRCkpIHsKKwkJCVNDVFBEQkcoU0NUUF9ERUJVR19USU1FUjIsCisJCQkgICAgICAg
ICJUaW1lciB0eXBlICVkIG5vdCBzdGFydGVkOiBpbnA9JXAsIHN0Y2I9JXAsIG5ldD0lcC5cbiIs
CisJCQkgICAgICAgIHRfdHlwZSwgaW5wLCBzdGNiLCBuZXQpOworCQkJcmV0dXJuOworCQl9CisJ
CXRtciA9ICZuZXQtPmhiX3RpbWVyOworCQlpZiAobmV0LT5SVE8gPT0gMCkgeworCQkJdG9fdGlj
a3MgPSBzdGNiLT5hc29jLmluaXRpYWxfcnRvOwogCQl9IGVsc2UgewotCQkJdWludDMyX3Qgcm5k
dmFsOwotCQkJdWludDMyX3Qgaml0dGVyOwotCi0JCQlpZiAoKG5ldC0+ZGVzdF9zdGF0ZSAmIFND
VFBfQUREUl9OT0hCKSAmJgotCQkJICAgICEobmV0LT5kZXN0X3N0YXRlICYgU0NUUF9BRERSX1VO
Q09ORklSTUVEKSkgewotCQkJCXJldHVybjsKLQkJCX0KLQkJCWlmIChuZXQtPlJUTyA9PSAwKSB7
Ci0JCQkJdG9fdGlja3MgPSBzdGNiLT5hc29jLmluaXRpYWxfcnRvOwotCQkJfSBlbHNlIHsKLQkJ
CQl0b190aWNrcyA9IG5ldC0+UlRPOwotCQkJfQotCQkJcm5kdmFsID0gc2N0cF9zZWxlY3RfaW5p
dGlhbF9UU04oJmlucC0+c2N0cF9lcCk7Ci0JCQlqaXR0ZXIgPSBybmR2YWwgJSB0b190aWNrczsK
LQkJCWlmIChqaXR0ZXIgPj0gKHRvX3RpY2tzID4+IDEpKSB7Ci0JCQkJdG9fdGlja3MgPSB0b190
aWNrcyArIChqaXR0ZXIgLSAodG9fdGlja3MgPj4gMSkpOwotCQkJfSBlbHNlIHsKLQkJCQl0b190
aWNrcyA9IHRvX3RpY2tzIC0gaml0dGVyOwotCQkJfQotCQkJaWYgKCEobmV0LT5kZXN0X3N0YXRl
ICYgU0NUUF9BRERSX1VOQ09ORklSTUVEKSAmJgotCQkJICAgICEobmV0LT5kZXN0X3N0YXRlICYg
U0NUUF9BRERSX1BGKSkgewotCQkJCXRvX3RpY2tzICs9IG5ldC0+aGVhcnRfYmVhdF9kZWxheTsK
LQkJCX0KLQkJCS8qCi0JCQkgKiBOb3cgd2UgbXVzdCBjb252ZXJ0IHRoZSB0b190aWNrcyB0aGF0
IGFyZSBub3cgaW4KLQkJCSAqIG1zIHRvIHRpY2tzLgotCQkJICovCi0JCQl0b190aWNrcyA9IE1T
RUNfVE9fVElDS1ModG9fdGlja3MpOwotCQkJdG1yID0gJm5ldC0+aGJfdGltZXI7CisJCQl0b190
aWNrcyA9IG5ldC0+UlRPOworCQl9CisJCXJuZHZhbCA9IHNjdHBfc2VsZWN0X2luaXRpYWxfVFNO
KCZpbnAtPnNjdHBfZXApOworCQlqaXR0ZXIgPSBybmR2YWwgJSB0b190aWNrczsKKwkJaWYgKGpp
dHRlciA+PSAodG9fdGlja3MgPj4gMSkpIHsKKwkJCXRvX3RpY2tzID0gdG9fdGlja3MgKyAoaml0
dGVyIC0gKHRvX3RpY2tzID4+IDEpKTsKKwkJfSBlbHNlIHsKKwkJCXRvX3RpY2tzID0gdG9fdGlj
a3MgLSBqaXR0ZXI7CiAJCX0KKwkJaWYgKCEobmV0LT5kZXN0X3N0YXRlICYgU0NUUF9BRERSX1VO
Q09ORklSTUVEKSAmJgorCQkgICAgIShuZXQtPmRlc3Rfc3RhdGUgJiBTQ1RQX0FERFJfUEYpKSB7
CisJCQl0b190aWNrcyArPSBuZXQtPmhlYXJ0X2JlYXRfZGVsYXk7CisJCX0KKwkJLyoKKwkJICog
Tm93IHdlIG11c3QgY29udmVydCB0aGUgdG9fdGlja3MgdGhhdCBhcmUgbm93IGluCisJCSAqIG1z
IHRvIHRpY2tzLgorCQkgKi8KKwkJdG9fdGlja3MgPSBzY3RwX21zZWNzX3RvX3RpY2tzKHRvX3Rp
Y2tzKTsKIAkJYnJlYWs7CiAJY2FzZSBTQ1RQX1RJTUVSX1RZUEVfQ09PS0lFOgogCQkvKgogCQkg
KiBIZXJlIHdlIGNhbiB1c2UgdGhlIFJUTyB0aW1lciBmcm9tIHRoZSBuZXR3b3JrIHNpbmNlIG9u
ZQotCQkgKiBSVFQgd2FzIGNvbXBlbGV0ZS4gSWYgYSByZXRyYW4gaGFwcGVuZWQgdGhlbiB3ZSB3
aWxsIGJlCi0JCSAqIHVzaW5nIHRoZSBSVE8gaW5pdGlhbCB2YWx1ZS4KKwkJICogUlRUIHdhcyBj
b21wbGV0ZS4gSWYgYSByZXRyYW5zbWlzc2lvbiBoYXBwZW5lZCB0aGVuIHdlIHdpbGwKKwkJICog
YmUgdXNpbmcgdGhlIFJUTyBpbml0aWFsIHZhbHVlLgogCQkgKi8KLQkJaWYgKChzdGNiID09IE5V
TEwpIHx8IChuZXQgPT0gTlVMTCkpIHsKKwkJaWYgKChpbnAgPT0gTlVMTCkgfHwgKHN0Y2IgPT0g
TlVMTCkgfHwgKG5ldCA9PSBOVUxMKSkgeworI2lmZGVmIElOVkFSSUFOVFMKKwkJCXBhbmljKCJz
Y3RwX3RpbWVyX3N0YXJ0IG9mIHR5cGUgJWQ6IGlucCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9ICVw
IiwKKwkJCSAgICAgIHRfdHlwZSwgaW5wLCBzdGNiLCBuZXQpOworI2Vsc2UKIAkJCXJldHVybjsK
KyNlbmRpZgogCQl9CisJCXRtciA9ICZuZXQtPnJ4dF90aW1lcjsKIAkJaWYgKG5ldC0+UlRPID09
IDApIHsKLQkJCXRvX3RpY2tzID0gTVNFQ19UT19USUNLUyhzdGNiLT5hc29jLmluaXRpYWxfcnRv
KTsKKwkJCXRvX3RpY2tzID0gc2N0cF9tc2Vjc190b190aWNrcyhzdGNiLT5hc29jLmluaXRpYWxf
cnRvKTsKIAkJfSBlbHNlIHsKLQkJCXRvX3RpY2tzID0gTVNFQ19UT19USUNLUyhuZXQtPlJUTyk7
CisJCQl0b190aWNrcyA9IHNjdHBfbXNlY3NfdG9fdGlja3MobmV0LT5SVE8pOwogCQl9Ci0JCXRt
ciA9ICZuZXQtPnJ4dF90aW1lcjsKIAkJYnJlYWs7CiAJY2FzZSBTQ1RQX1RJTUVSX1RZUEVfTkVX
Q09PS0lFOgogCQkvKgotCQkgKiBub3RoaW5nIG5lZWRlZCBidXQgdGhlIGVuZHBvaW50IGhlcmUg
dXN1c3VhbGx5IGFib3V0IDYwCisJCSAqIE5vdGhpbmcgbmVlZGVkIGJ1dCB0aGUgZW5kcG9pbnQg
aGVyZSB1c3VzdWFsbHkgYWJvdXQgNjAKIAkJICogbWludXRlcy4KIAkJICovCi0JCXRtciA9ICZp
bnAtPnNjdHBfZXAuc2lnbmF0dXJlX2NoYW5nZTsKLQkJdG9fdGlja3MgPSBpbnAtPnNjdHBfZXAu
c2N0cF90aW1lb3V0dGlja3NbU0NUUF9USU1FUl9TSUdOQVRVUkVdOwotCQlicmVhazsKLQljYXNl
IFNDVFBfVElNRVJfVFlQRV9BU09DS0lMTDoKLQkJaWYgKHN0Y2IgPT0gTlVMTCkgeworCQlpZiAo
KGlucCA9PSBOVUxMKSB8fCAoc3RjYiAhPSBOVUxMKSB8fCAobmV0ICE9IE5VTEwpKSB7CisjaWZk
ZWYgSU5WQVJJQU5UUworCQkJcGFuaWMoInNjdHBfdGltZXJfc3RhcnQgb2YgdHlwZSAlZDogaW5w
ID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkJICAgICAgdF90eXBlLCBpbnAsIHN0Y2Is
IG5ldCk7CisjZWxzZQogCQkJcmV0dXJuOworI2VuZGlmCiAJCX0KLQkJdG1yID0gJnN0Y2ItPmFz
b2Muc3RycmVzZXRfdGltZXI7Ci0JCXRvX3RpY2tzID0gTVNFQ19UT19USUNLUyhTQ1RQX0FTT0Nf
S0lMTF9USU1FT1VUKTsKLQkJYnJlYWs7Ci0JY2FzZSBTQ1RQX1RJTUVSX1RZUEVfSU5QS0lMTDoK
LQkJLyoKLQkJICogVGhlIGlucCBpcyBzZXR1cCB0byBkaWUuIFdlIHJlLXVzZSB0aGUgc2lnbmF0
dXJlX2NoYWdlCi0JCSAqIHRpbWVyIHNpbmNlIHRoYXQgaGFzIHN0b3BwZWQgYW5kIHdlIGFyZSBp
biB0aGUgR09ORQotCQkgKiBzdGF0ZS4KLQkJICovCiAJCXRtciA9ICZpbnAtPnNjdHBfZXAuc2ln
bmF0dXJlX2NoYW5nZTsKLQkJdG9fdGlja3MgPSBNU0VDX1RPX1RJQ0tTKFNDVFBfSU5QX0tJTExf
VElNRU9VVCk7CisJCXRvX3RpY2tzID0gaW5wLT5zY3RwX2VwLnNjdHBfdGltZW91dHRpY2tzW1ND
VFBfVElNRVJfU0lHTkFUVVJFXTsKIAkJYnJlYWs7CiAJY2FzZSBTQ1RQX1RJTUVSX1RZUEVfUEFU
SE1UVVJBSVNFOgogCQkvKgotCQkgKiBIZXJlIHdlIHVzZSB0aGUgdmFsdWUgZm91bmQgaW4gdGhl
IEVQIGZvciBQTVRVIHVzdXN1YWxseQorCQkgKiBIZXJlIHdlIHVzZSB0aGUgdmFsdWUgZm91bmQg
aW4gdGhlIEVQIGZvciBQTVRVRCwgdXN1c3VhbGx5CiAJCSAqIGFib3V0IDEwIG1pbnV0ZXMuCiAJ
CSAqLwotCQlpZiAoKHN0Y2IgPT0gTlVMTCkgfHwgKG5ldCA9PSBOVUxMKSkgeworCQlpZiAoKGlu
cCA9PSBOVUxMKSB8fCAoc3RjYiA9PSBOVUxMKSB8fCAobmV0ID09IE5VTEwpKSB7CisjaWZkZWYg
SU5WQVJJQU5UUworCQkJcGFuaWMoInNjdHBfdGltZXJfc3RhcnQgb2YgdHlwZSAlZDogaW5wID0g
JXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkJICAgICAgdF90eXBlLCBpbnAsIHN0Y2IsIG5l
dCk7CisjZWxzZQogCQkJcmV0dXJuOworI2VuZGlmCiAJCX0KIAkJaWYgKG5ldC0+ZGVzdF9zdGF0
ZSAmIFNDVFBfQUREUl9OT19QTVRVRCkgeworCQkJU0NUUERCRyhTQ1RQX0RFQlVHX1RJTUVSMiwK
KwkJCSAgICAgICAgIlRpbWVyIHR5cGUgJWQgbm90IHN0YXJ0ZWQ6IGlucD0lcCwgc3RjYj0lcCwg
bmV0PSVwLlxuIiwKKwkJCSAgICAgICAgdF90eXBlLCBpbnAsIHN0Y2IsIG5ldCk7CiAJCQlyZXR1
cm47CiAJCX0KLQkJdG9fdGlja3MgPSBpbnAtPnNjdHBfZXAuc2N0cF90aW1lb3V0dGlja3NbU0NU
UF9USU1FUl9QTVRVXTsKIAkJdG1yID0gJm5ldC0+cG10dV90aW1lcjsKKwkJdG9fdGlja3MgPSBp
bnAtPnNjdHBfZXAuc2N0cF90aW1lb3V0dGlja3NbU0NUUF9USU1FUl9QTVRVXTsKIAkJYnJlYWs7
CiAJY2FzZSBTQ1RQX1RJTUVSX1RZUEVfU0hVVERPV05BQ0s6Ci0JCS8qIEhlcmUgd2UgdXNlIHRo
ZSBSVE8gb2YgdGhlIGRlc3RpbmF0aW9uICovCi0JCWlmICgoc3RjYiA9PSBOVUxMKSB8fCAobmV0
ID09IE5VTEwpKSB7CisJCS8qIEhlcmUgd2UgdXNlIHRoZSBSVE8gb2YgdGhlIGRlc3RpbmF0aW9u
LiAqLworCQlpZiAoKGlucCA9PSBOVUxMKSB8fCAoc3RjYiA9PSBOVUxMKSB8fCAobmV0ID09IE5V
TEwpKSB7CisjaWZkZWYgSU5WQVJJQU5UUworCQkJcGFuaWMoInNjdHBfdGltZXJfc3RhcnQgb2Yg
dHlwZSAlZDogaW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkJICAgICAgdF90eXBl
LCBpbnAsIHN0Y2IsIG5ldCk7CisjZWxzZQogCQkJcmV0dXJuOworI2VuZGlmCiAJCX0KKwkJdG1y
ID0gJm5ldC0+cnh0X3RpbWVyOwogCQlpZiAobmV0LT5SVE8gPT0gMCkgewotCQkJdG9fdGlja3Mg
PSBNU0VDX1RPX1RJQ0tTKHN0Y2ItPmFzb2MuaW5pdGlhbF9ydG8pOworCQkJdG9fdGlja3MgPSBz
Y3RwX21zZWNzX3RvX3RpY2tzKHN0Y2ItPmFzb2MuaW5pdGlhbF9ydG8pOwogCQl9IGVsc2Ugewot
CQkJdG9fdGlja3MgPSBNU0VDX1RPX1RJQ0tTKG5ldC0+UlRPKTsKKwkJCXRvX3RpY2tzID0gc2N0
cF9tc2Vjc190b190aWNrcyhuZXQtPlJUTyk7CisJCX0KKwkJYnJlYWs7CisJY2FzZSBTQ1RQX1RJ
TUVSX1RZUEVfQVNDT05GOgorCQkvKgorCQkgKiBIZXJlIHRoZSB0aW1lciBjb21lcyBmcm9tIHRo
ZSBzdGNiIGJ1dCBpdHMgdmFsdWUgaXMgZnJvbQorCQkgKiB0aGUgbmV0J3MgUlRPLgorCQkgKi8K
KwkJaWYgKChpbnAgPT0gTlVMTCkgfHwgKHN0Y2IgPT0gTlVMTCkgfHwgKG5ldCA9PSBOVUxMKSkg
eworI2lmZGVmIElOVkFSSUFOVFMKKwkJCXBhbmljKCJzY3RwX3RpbWVyX3N0YXJ0IG9mIHR5cGUg
JWQ6IGlucCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9ICVwIiwKKwkJCSAgICAgIHRfdHlwZSwgaW5w
LCBzdGNiLCBuZXQpOworI2Vsc2UKKwkJCXJldHVybjsKKyNlbmRpZgorCQl9CisJCXRtciA9ICZz
dGNiLT5hc29jLmFzY29uZl90aW1lcjsKKwkJaWYgKG5ldC0+UlRPID09IDApIHsKKwkJCXRvX3Rp
Y2tzID0gc2N0cF9tc2Vjc190b190aWNrcyhzdGNiLT5hc29jLmluaXRpYWxfcnRvKTsKKwkJfSBl
bHNlIHsKKwkJCXRvX3RpY2tzID0gc2N0cF9tc2Vjc190b190aWNrcyhuZXQtPlJUTyk7CiAJCX0K
LQkJdG1yID0gJm5ldC0+cnh0X3RpbWVyOwogCQlicmVhazsKIAljYXNlIFNDVFBfVElNRVJfVFlQ
RV9TSFVURE9XTkdVQVJEOgogCQkvKgogCQkgKiBIZXJlIHdlIHVzZSB0aGUgZW5kcG9pbnRzIHNo
dXRkb3duIGd1YXJkIHRpbWVyIHVzdWFsbHkKIAkJICogYWJvdXQgMyBtaW51dGVzLgogCQkgKi8K
LQkJaWYgKHN0Y2IgPT0gTlVMTCkgeworCQlpZiAoKGlucCA9PSBOVUxMKSB8fCAoc3RjYiA9PSBO
VUxMKSB8fCAobmV0ICE9IE5VTEwpKSB7CisjaWZkZWYgSU5WQVJJQU5UUworCQkJcGFuaWMoInNj
dHBfdGltZXJfc3RhcnQgb2YgdHlwZSAlZDogaW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAi
LAorCQkJICAgICAgdF90eXBlLCBpbnAsIHN0Y2IsIG5ldCk7CisjZWxzZQogCQkJcmV0dXJuOwor
I2VuZGlmCiAJCX0KKwkJdG1yID0gJnN0Y2ItPmFzb2Muc2h1dF9ndWFyZF90aW1lcjsKIAkJaWYg
KGlucC0+c2N0cF9lcC5zY3RwX3RpbWVvdXR0aWNrc1tTQ1RQX1RJTUVSX01BWFNIVVRET1dOXSA9
PSAwKSB7Ci0JCQl0b190aWNrcyA9IDUgKiBNU0VDX1RPX1RJQ0tTKHN0Y2ItPmFzb2MubWF4cnRv
KTsKKwkJCWlmIChzdGNiLT5hc29jLm1heHJ0byA8IFVJTlQzMl9NQVggLyA1KSB7CisJCQkJdG9f
dGlja3MgPSBzY3RwX21zZWNzX3RvX3RpY2tzKDUgKiBzdGNiLT5hc29jLm1heHJ0byk7CisJCQl9
IGVsc2UgeworCQkJCXRvX3RpY2tzID0gc2N0cF9tc2Vjc190b190aWNrcyhVSU5UMzJfTUFYKTsK
KwkJCX0KIAkJfSBlbHNlIHsKIAkJCXRvX3RpY2tzID0gaW5wLT5zY3RwX2VwLnNjdHBfdGltZW91
dHRpY2tzW1NDVFBfVElNRVJfTUFYU0hVVERPV05dOwogCQl9Ci0JCXRtciA9ICZzdGNiLT5hc29j
LnNodXRfZ3VhcmRfdGltZXI7CisJCWJyZWFrOworCWNhc2UgU0NUUF9USU1FUl9UWVBFX0FVVE9D
TE9TRToKKwkJaWYgKChpbnAgPT0gTlVMTCkgfHwgKHN0Y2IgPT0gTlVMTCkgfHwgKG5ldCAhPSBO
VUxMKSkgeworI2lmZGVmIElOVkFSSUFOVFMKKwkJCXBhbmljKCJzY3RwX3RpbWVyX3N0YXJ0IG9m
IHR5cGUgJWQ6IGlucCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9ICVwIiwKKwkJCSAgICAgIHRfdHlw
ZSwgaW5wLCBzdGNiLCBuZXQpOworI2Vsc2UKKwkJCXJldHVybjsKKyNlbmRpZgorCQl9CisJCXRt
ciA9ICZzdGNiLT5hc29jLmF1dG9jbG9zZV90aW1lcjsKKwkJdG9fdGlja3MgPSBzdGNiLT5hc29j
LnNjdHBfYXV0b2Nsb3NlX3RpY2tzOwogCQlicmVhazsKIAljYXNlIFNDVFBfVElNRVJfVFlQRV9T
VFJSRVNFVDoKIAkJLyoKIAkJICogSGVyZSB0aGUgdGltZXIgY29tZXMgZnJvbSB0aGUgc3RjYiBi
dXQgaXRzIHZhbHVlIGlzIGZyb20KIAkJICogdGhlIG5ldCdzIFJUTy4KIAkJICovCi0JCWlmICgo
c3RjYiA9PSBOVUxMKSB8fCAobmV0ID09IE5VTEwpKSB7CisJCWlmICgoaW5wID09IE5VTEwpIHx8
IChzdGNiID09IE5VTEwpIHx8IChuZXQgPT0gTlVMTCkpIHsKKyNpZmRlZiBJTlZBUklBTlRTCisJ
CQlwYW5pYygic2N0cF90aW1lcl9zdGFydCBvZiB0eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9ICVw
LCBuZXQgPSAlcCIsCisJCQkgICAgICB0X3R5cGUsIGlucCwgc3RjYiwgbmV0KTsKKyNlbHNlCiAJ
CQlyZXR1cm47CisjZW5kaWYKIAkJfQorCQl0bXIgPSAmc3RjYi0+YXNvYy5zdHJyZXNldF90aW1l
cjsKIAkJaWYgKG5ldC0+UlRPID09IDApIHsKLQkJCXRvX3RpY2tzID0gTVNFQ19UT19USUNLUyhz
dGNiLT5hc29jLmluaXRpYWxfcnRvKTsKKwkJCXRvX3RpY2tzID0gc2N0cF9tc2Vjc190b190aWNr
cyhzdGNiLT5hc29jLmluaXRpYWxfcnRvKTsKIAkJfSBlbHNlIHsKLQkJCXRvX3RpY2tzID0gTVNF
Q19UT19USUNLUyhuZXQtPlJUTyk7CisJCQl0b190aWNrcyA9IHNjdHBfbXNlY3NfdG9fdGlja3Mo
bmV0LT5SVE8pOwogCQl9Ci0JCXRtciA9ICZzdGNiLT5hc29jLnN0cnJlc2V0X3RpbWVyOwogCQli
cmVhazsKLQljYXNlIFNDVFBfVElNRVJfVFlQRV9BU0NPTkY6CisJY2FzZSBTQ1RQX1RJTUVSX1RZ
UEVfSU5QS0lMTDoKIAkJLyoKLQkJICogSGVyZSB0aGUgdGltZXIgY29tZXMgZnJvbSB0aGUgc3Rj
YiBidXQgaXRzIHZhbHVlIGlzIGZyb20KLQkJICogdGhlIG5ldCdzIFJUTy4KKwkJICogVGhlIGlu
cCBpcyBzZXR1cCB0byBkaWUuIFdlIHJlLXVzZSB0aGUgc2lnbmF0dXJlX2NoYWdlCisJCSAqIHRp
bWVyIHNpbmNlIHRoYXQgaGFzIHN0b3BwZWQgYW5kIHdlIGFyZSBpbiB0aGUgR09ORQorCQkgKiBz
dGF0ZS4KIAkJICovCi0JCWlmICgoc3RjYiA9PSBOVUxMKSB8fCAobmV0ID09IE5VTEwpKSB7CisJ
CWlmICgoaW5wID09IE5VTEwpIHx8IChzdGNiICE9IE5VTEwpIHx8IChuZXQgIT0gTlVMTCkpIHsK
KyNpZmRlZiBJTlZBUklBTlRTCisJCQlwYW5pYygic2N0cF90aW1lcl9zdGFydCBvZiB0eXBlICVk
OiBpbnAgPSAlcCwgc3RjYiA9ICVwLCBuZXQgPSAlcCIsCisJCQkgICAgICB0X3R5cGUsIGlucCwg
c3RjYiwgbmV0KTsKKyNlbHNlCiAJCQlyZXR1cm47CisjZW5kaWYKIAkJfQotCQlpZiAobmV0LT5S
VE8gPT0gMCkgewotCQkJdG9fdGlja3MgPSBNU0VDX1RPX1RJQ0tTKHN0Y2ItPmFzb2MuaW5pdGlh
bF9ydG8pOwotCQl9IGVsc2UgewotCQkJdG9fdGlja3MgPSBNU0VDX1RPX1RJQ0tTKG5ldC0+UlRP
KTsKLQkJfQotCQl0bXIgPSAmc3RjYi0+YXNvYy5hc2NvbmZfdGltZXI7CisJCXRtciA9ICZpbnAt
PnNjdHBfZXAuc2lnbmF0dXJlX2NoYW5nZTsKKwkJdG9fdGlja3MgPSBzY3RwX21zZWNzX3RvX3Rp
Y2tzKFNDVFBfSU5QX0tJTExfVElNRU9VVCk7CiAJCWJyZWFrOwotCWNhc2UgU0NUUF9USU1FUl9U
WVBFX1BSSU1fREVMRVRFRDoKLQkJaWYgKChzdGNiID09IE5VTEwpIHx8IChuZXQgIT0gTlVMTCkp
IHsKKwljYXNlIFNDVFBfVElNRVJfVFlQRV9BU09DS0lMTDoKKwkJaWYgKChpbnAgPT0gTlVMTCkg
fHwgKHN0Y2IgPT0gTlVMTCkgfHwgKG5ldCAhPSBOVUxMKSkgeworI2lmZGVmIElOVkFSSUFOVFMK
KwkJCXBhbmljKCJzY3RwX3RpbWVyX3N0YXJ0IG9mIHR5cGUgJWQ6IGlucCA9ICVwLCBzdGNiID0g
JXAsIG5ldCA9ICVwIiwKKwkJCSAgICAgIHRfdHlwZSwgaW5wLCBzdGNiLCBuZXQpOworI2Vsc2UK
IAkJCXJldHVybjsKKyNlbmRpZgogCQl9Ci0JCXRvX3RpY2tzID0gTVNFQ19UT19USUNLUyhzdGNi
LT5hc29jLmluaXRpYWxfcnRvKTsKLQkJdG1yID0gJnN0Y2ItPmFzb2MuZGVsZXRlX3ByaW1fdGlt
ZXI7CisJCXRtciA9ICZzdGNiLT5hc29jLnN0cnJlc2V0X3RpbWVyOworCQl0b190aWNrcyA9IHNj
dHBfbXNlY3NfdG9fdGlja3MoU0NUUF9BU09DX0tJTExfVElNRU9VVCk7CiAJCWJyZWFrOwotCWNh
c2UgU0NUUF9USU1FUl9UWVBFX0FVVE9DTE9TRToKLQkJaWYgKHN0Y2IgPT0gTlVMTCkgeworCWNh
c2UgU0NUUF9USU1FUl9UWVBFX0FERFJfV1E6CisJCWlmICgoaW5wICE9IE5VTEwpIHx8IChzdGNi
ICE9IE5VTEwpIHx8IChuZXQgIT0gTlVMTCkpIHsKKyNpZmRlZiBJTlZBUklBTlRTCisJCQlwYW5p
Yygic2N0cF90aW1lcl9zdGFydCBvZiB0eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9ICVwLCBuZXQg
PSAlcCIsCisJCQkgICAgICB0X3R5cGUsIGlucCwgc3RjYiwgbmV0KTsKKyNlbHNlCiAJCQlyZXR1
cm47CisjZW5kaWYKIAkJfQotCQlpZiAoc3RjYi0+YXNvYy5zY3RwX2F1dG9jbG9zZV90aWNrcyA9
PSAwKSB7Ci0JCQkvKgotCQkJICogUmVhbGx5IGFuIGVycm9yIHNpbmNlIHN0Y2IgaXMgTk9UIHNl
dCB0bwotCQkJICogYXV0b2Nsb3NlCi0JCQkgKi8KKwkJLyogT25seSAxIHRpY2sgYXdheSA6LSkg
Ki8KKwkJdG1yID0gJlNDVFBfQkFTRV9JTkZPKGFkZHJfd3FfdGltZXIpOworCQl0b190aWNrcyA9
IFNDVFBfQUREUkVTU19USUNLX0RFTEFZOworCQlicmVhazsKKwljYXNlIFNDVFBfVElNRVJfVFlQ
RV9QUklNX0RFTEVURUQ6CisJCWlmICgoaW5wID09IE5VTEwpIHx8IChzdGNiID09IE5VTEwpIHx8
IChuZXQgIT0gTlVMTCkpIHsKKyNpZmRlZiBJTlZBUklBTlRTCisJCQlwYW5pYygic2N0cF90aW1l
cl9zdGFydCBvZiB0eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9ICVwLCBuZXQgPSAlcCIsCisJCQkg
ICAgICB0X3R5cGUsIGlucCwgc3RjYiwgbmV0KTsKKyNlbHNlCiAJCQlyZXR1cm47CisjZW5kaWYK
IAkJfQotCQl0b190aWNrcyA9IHN0Y2ItPmFzb2Muc2N0cF9hdXRvY2xvc2VfdGlja3M7Ci0JCXRt
ciA9ICZzdGNiLT5hc29jLmF1dG9jbG9zZV90aW1lcjsKKwkJdG1yID0gJnN0Y2ItPmFzb2MuZGVs
ZXRlX3ByaW1fdGltZXI7CisJCXRvX3RpY2tzID0gc2N0cF9tc2Vjc190b190aWNrcyhzdGNiLT5h
c29jLmluaXRpYWxfcnRvKTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKLQkJU0NUUERCRyhTQ1RQX0RF
QlVHX1RJTUVSMSwgIiVzOiBVbmtub3duIHRpbWVyIHR5cGUgJWRcbiIsCi0JCQlfX2Z1bmNfXywg
dF90eXBlKTsKLQkJcmV0dXJuOwotCQlicmVhazsKLQl9Ci0JaWYgKCh0b190aWNrcyA8PSAwKSB8
fCAodG1yID09IE5VTEwpKSB7Ci0JCVNDVFBEQkcoU0NUUF9ERUJVR19USU1FUjEsICIlczogJWQ6
c29mdHdhcmUgZXJyb3IgdG9fdGlja3M6JWQgdG1yOiVwIG5vdCBzZXQgPz9cbiIsCi0JCQlfX2Z1
bmNfXywgdF90eXBlLCB0b190aWNrcywgKHZvaWQgKil0bXIpOworI2lmZGVmIElOVkFSSUFOVFMK
KwkJcGFuaWMoIlVua25vd24gdGltZXIgdHlwZSAlZCIsIHRfdHlwZSk7CisjZWxzZQogCQlyZXR1
cm47CisjZW5kaWYKIAl9CisJS0FTU0VSVCh0bXIgIT0gTlVMTCwgKCJ0bXIgaXMgTlVMTCBmb3Ig
dGltZXIgdHlwZSAlZCIsIHRfdHlwZSkpOworCUtBU1NFUlQodG9fdGlja3MgPiAwLCAoInRvX3Rp
Y2tzID09IDAgZm9yIHRpbWVyIHR5cGUgJWQiLCB0X3R5cGUpKTsKIAlpZiAoU0NUUF9PU19USU1F
Ul9QRU5ESU5HKCZ0bXItPnRpbWVyKSkgewogCQkvKgotCQkgKiB3ZSBkbyBOT1QgYWxsb3cgeW91
IHRvIGhhdmUgaXQgYWxyZWFkeSBydW5uaW5nLiBpZiBpdCBpcwotCQkgKiB3ZSBsZWF2ZSB0aGUg
Y3VycmVudCBvbmUgdXAgdW5jaGFuZ2VkCisJCSAqIFdlIGRvIE5PVCBhbGxvdyB5b3UgdG8gaGF2
ZSBpdCBhbHJlYWR5IHJ1bm5pbmcuIElmIGl0IGlzLAorCQkgKiB3ZSBsZWF2ZSB0aGUgY3VycmVu
dCBvbmUgdXAgdW5jaGFuZ2VkLgogCQkgKi8KKwkJU0NUUERCRyhTQ1RQX0RFQlVHX1RJTUVSMiwK
KwkJICAgICAgICAiVGltZXIgdHlwZSAlZCBhbHJlYWR5IHJ1bm5pbmc6IGlucD0lcCwgc3RjYj0l
cCwgbmV0PSVwLlxuIiwKKwkJICAgICAgICAgdF90eXBlLCBpbnAsIHN0Y2IsIG5ldCk7CiAJCXJl
dHVybjsKIAl9Ci0JLyogQXQgdGhpcyBwb2ludCB3ZSBjYW4gcHJvY2VlZCAqLworCS8qIEF0IHRo
aXMgcG9pbnQgd2UgY2FuIHByb2NlZWQuICovCiAJaWYgKHRfdHlwZSA9PSBTQ1RQX1RJTUVSX1RZ
UEVfU0VORCkgewogCQlzdGNiLT5hc29jLm51bV9zZW5kX3RpbWVyc191cCsrOwogCX0KQEAgLTIz
MzksMTU1ICsyNjQwLDMwMSBAQCBzY3RwX3RpbWVyX3N0YXJ0KGludCB0X3R5cGUsIHN0cnVjdCBz
Y3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAl0bXItPnR5cGUgPSB0X3R5
cGU7CiAJdG1yLT5lcCA9ICh2b2lkICopaW5wOwogCXRtci0+dGNiID0gKHZvaWQgKilzdGNiOwot
CXRtci0+bmV0ID0gKHZvaWQgKiluZXQ7CisJaWYgKHRfdHlwZSA9PSBTQ1RQX1RJTUVSX1RZUEVf
U1RSUkVTRVQpIHsKKwkJdG1yLT5uZXQgPSBOVUxMOworCX0gZWxzZSB7CisJCXRtci0+bmV0ID0g
KHZvaWQgKiluZXQ7CisJfQogCXRtci0+c2VsZiA9ICh2b2lkICopdG1yOwotI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMDAwMAorI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJdG1yLT52bmV0ID0gKHZv
aWQgKiljdXJ2bmV0OwogI2VuZGlmCi0jaWZuZGVmIF9fUGFuZGFfXwogCXRtci0+dGlja3MgPSBz
Y3RwX2dldF90aWNrX2NvdW50KCk7Ci0jZW5kaWYKLQkodm9pZClTQ1RQX09TX1RJTUVSX1NUQVJU
KCZ0bXItPnRpbWVyLCB0b190aWNrcywgc2N0cF90aW1lb3V0X2hhbmRsZXIsIHRtcik7CisJaWYg
KFNDVFBfT1NfVElNRVJfU1RBUlQoJnRtci0+dGltZXIsIHRvX3RpY2tzLCBzY3RwX3RpbWVvdXRf
aGFuZGxlciwgdG1yKSA9PSAwKSB7CisJCVNDVFBEQkcoU0NUUF9ERUJVR19USU1FUjIsCisJCSAg
ICAgICAgIlRpbWVyIHR5cGUgJWQgc3RhcnRlZDogdGlja3M9JXUsIGlucD0lcCwgc3RjYj0lcCwg
bmV0PSVwLlxuIiwKKwkJICAgICAgICAgdF90eXBlLCB0b190aWNrcywgaW5wLCBzdGNiLCBuZXQp
OworCQkvKgorCQkgKiBJZiB0aGlzIGlzIGEgbmV3bHkgc2NoZWR1bGVkIGNhbGxvdXQsIGFzIG9w
cG9zZWQgdG8gYQorCQkgKiByZXNjaGVkdWxlZCBvbmUsIGluY3JlbWVudCByZWxldmFudCByZWZl
cmVuY2UgY291bnRzLgorCQkgKi8KKwkJaWYgKHRtci0+ZXAgIT0gTlVMTCkgeworCQkJU0NUUF9J
TlBfSU5DUl9SRUYoaW5wKTsKKwkJfQorCQlpZiAodG1yLT50Y2IgIT0gTlVMTCkgeworCQkJYXRv
bWljX2FkZF9pbnQoJnN0Y2ItPmFzb2MucmVmY250LCAxKTsKKwkJfQorCQlpZiAodG1yLT5uZXQg
IT0gTlVMTCkgeworCQkJYXRvbWljX2FkZF9pbnQoJm5ldC0+cmVmX2NvdW50LCAxKTsKKwkJfQor
CX0gZWxzZSB7CisJCS8qCisJCSAqIFRoaXMgc2hvdWxkIG5vdCBoYXBwZW4sIHNpbmNlIHdlIGNo
ZWNrZWQgZm9yIHBlbmRpbmcKKwkJICogYWJvdmUuCisJCSAqLworCQlTQ1RQREJHKFNDVFBfREVC
VUdfVElNRVIyLAorCQkgICAgICAgICJUaW1lciB0eXBlICVkIHJlc3RhcnRlZDogdGlja3M9JXUs
IGlucD0lcCwgc3RjYj0lcCwgbmV0PSVwLlxuIiwKKwkJICAgICAgICAgdF90eXBlLCB0b190aWNr
cywgaW5wLCBzdGNiLCBuZXQpOworCX0KIAlyZXR1cm47CiB9CiAKKy8qLQorICogVGhlIGZvbGxv
d2luZyB0YWJsZSBzaG93cyB3aGljaCBwYXJhbWV0ZXJzIG11c3QgYmUgcHJvdmlkZWQKKyAqIHdo
ZW4gY2FsbGluZyBzY3RwX3RpbWVyX3N0b3AoKS4gRm9yIHBhcmFtZXRlcnMgbm90IGJlaW5nCisg
KiBwcm92aWRlZCwgTlVMTCBtdXN0IGJlIHVzZWQuCisgKgorICogfE5hbWUgICAgICAgICAgICAg
ICAgICAgICAgICAgfGlucCB8c3RjYnxuZXQgfAorICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tfC0tLS18LS0tLXwtLS0tfAorICogfFNDVFBfVElNRVJfVFlQRV9TRU5EICAgICAgICAg
fFllcyB8WWVzIHxZZXMgfAorICogfFNDVFBfVElNRVJfVFlQRV9JTklUICAgICAgICAgfFllcyB8
WWVzIHxZZXMgfAorICogfFNDVFBfVElNRVJfVFlQRV9SRUNWICAgICAgICAgfFllcyB8WWVzIHxO
byAgfAorICogfFNDVFBfVElNRVJfVFlQRV9TSFVURE9XTiAgICAgfFllcyB8WWVzIHxZZXMgfAor
ICogfFNDVFBfVElNRVJfVFlQRV9IRUFSVEJFQVQgICAgfFllcyB8WWVzIHxZZXMgfAorICogfFND
VFBfVElNRVJfVFlQRV9DT09LSUUgICAgICAgfFllcyB8WWVzIHxZZXMgfAorICogfFNDVFBfVElN
RVJfVFlQRV9ORVdDT09LSUUgICAgfFllcyB8Tm8gIHxObyAgfAorICogfFNDVFBfVElNRVJfVFlQ
RV9QQVRITVRVUkFJU0UgfFllcyB8WWVzIHxZZXMgfAorICogfFNDVFBfVElNRVJfVFlQRV9TSFVU
RE9XTkFDSyAgfFllcyB8WWVzIHxZZXMgfAorICogfFNDVFBfVElNRVJfVFlQRV9BU0NPTkYgICAg
ICAgfFllcyB8WWVzIHxObyAgfAorICogfFNDVFBfVElNRVJfVFlQRV9TSFVURE9XTkdVQVJEfFll
cyB8WWVzIHxObyAgfAorICogfFNDVFBfVElNRVJfVFlQRV9BVVRPQ0xPU0UgICAgfFllcyB8WWVz
IHxObyAgfAorICogfFNDVFBfVElNRVJfVFlQRV9TVFJSRVNFVCAgICAgfFllcyB8WWVzIHxObyAg
fAorICogfFNDVFBfVElNRVJfVFlQRV9JTlBLSUxMICAgICAgfFllcyB8Tm8gIHxObyAgfAorICog
fFNDVFBfVElNRVJfVFlQRV9BU09DS0lMTCAgICAgfFllcyB8WWVzIHxObyAgfAorICogfFNDVFBf
VElNRVJfVFlQRV9BRERSX1dRICAgICAgfE5vICB8Tm8gIHxObyAgfAorICogfFNDVFBfVElNRVJf
VFlQRV9QUklNX0RFTEVURUQgfFllcyB8WWVzIHxObyAgfAorICoKKyAqLworCiB2b2lkCiBzY3Rw
X3RpbWVyX3N0b3AoaW50IHRfdHlwZSwgc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNj
dHBfdGNiICpzdGNiLAogICAgIHN0cnVjdCBzY3RwX25ldHMgKm5ldCwgdWludDMyX3QgZnJvbSkK
IHsKIAlzdHJ1Y3Qgc2N0cF90aW1lciAqdG1yOwogCi0JaWYgKCh0X3R5cGUgIT0gU0NUUF9USU1F
Ul9UWVBFX0FERFJfV1EpICYmCi0JICAgIChpbnAgPT0gTlVMTCkpCi0JCXJldHVybjsKLQotCXRt
ciA9IE5VTEw7Ci0JaWYgKHN0Y2IpIHsKKwlLQVNTRVJUKHN0Y2IgPT0gTlVMTCB8fCBzdGNiLT5z
Y3RwX2VwID09IGlucCwKKwkgICAgICAgICgic2N0cF90aW1lcl9zdG9wIG9mIHR5cGUgJWQ6IGlu
cCA9ICVwLCBzdGNiLT5zY3RwX2VwICVwIiwKKwkgICAgICAgICB0X3R5cGUsIHN0Y2IsIHN0Y2It
PnNjdHBfZXApKTsKKwlpZiAoc3RjYiAhPSBOVUxMKSB7CiAJCVNDVFBfVENCX0xPQ0tfQVNTRVJU
KHN0Y2IpOworCX0gZWxzZSBpZiAoaW5wICE9IE5VTEwpIHsKKwkJU0NUUF9JTlBfV0xPQ0tfQVNT
RVJUKGlucCk7CisJfSBlbHNlIHsKKwkJU0NUUF9XUV9BRERSX0xPQ0tfQVNTRVJUKCk7CiAJfQor
CXRtciA9IE5VTEw7CiAJc3dpdGNoICh0X3R5cGUpIHsKLQljYXNlIFNDVFBfVElNRVJfVFlQRV9B
RERSX1dROgotCQl0bXIgPSAmU0NUUF9CQVNFX0lORk8oYWRkcl93cV90aW1lcik7Ci0JCWJyZWFr
OwogCWNhc2UgU0NUUF9USU1FUl9UWVBFX1NFTkQ6Ci0JCWlmICgoc3RjYiA9PSBOVUxMKSB8fCAo
bmV0ID09IE5VTEwpKSB7CisJCWlmICgoaW5wID09IE5VTEwpIHx8IChzdGNiID09IE5VTEwpIHx8
IChuZXQgPT0gTlVMTCkpIHsKKyNpZmRlZiBJTlZBUklBTlRTCisJCQlwYW5pYygic2N0cF90aW1l
cl9zdG9wIG9mIHR5cGUgJWQ6IGlucCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9ICVwIiwKKwkJCSAg
ICAgIHRfdHlwZSwgaW5wLCBzdGNiLCBuZXQpOworI2Vsc2UKIAkJCXJldHVybjsKKyNlbmRpZgog
CQl9CiAJCXRtciA9ICZuZXQtPnJ4dF90aW1lcjsKIAkJYnJlYWs7CiAJY2FzZSBTQ1RQX1RJTUVS
X1RZUEVfSU5JVDoKLQkJaWYgKChzdGNiID09IE5VTEwpIHx8IChuZXQgPT0gTlVMTCkpIHsKKwkJ
aWYgKChpbnAgPT0gTlVMTCkgfHwgKHN0Y2IgPT0gTlVMTCkgfHwgKG5ldCA9PSBOVUxMKSkgewor
I2lmZGVmIElOVkFSSUFOVFMKKwkJCXBhbmljKCJzY3RwX3RpbWVyX3N0b3Agb2YgdHlwZSAlZDog
aW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkJICAgICAgdF90eXBlLCBpbnAsIHN0
Y2IsIG5ldCk7CisjZWxzZQogCQkJcmV0dXJuOworI2VuZGlmCiAJCX0KIAkJdG1yID0gJm5ldC0+
cnh0X3RpbWVyOwogCQlicmVhazsKIAljYXNlIFNDVFBfVElNRVJfVFlQRV9SRUNWOgotCQlpZiAo
c3RjYiA9PSBOVUxMKSB7CisJCWlmICgoaW5wID09IE5VTEwpIHx8IChzdGNiID09IE5VTEwpIHx8
IChuZXQgIT0gTlVMTCkpIHsKKyNpZmRlZiBJTlZBUklBTlRTCisJCQlwYW5pYygic2N0cF90aW1l
cl9zdG9wIG9mIHR5cGUgJWQ6IGlucCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9ICVwIiwKKwkJCSAg
ICAgIHRfdHlwZSwgaW5wLCBzdGNiLCBuZXQpOworI2Vsc2UKIAkJCXJldHVybjsKKyNlbmRpZgog
CQl9CiAJCXRtciA9ICZzdGNiLT5hc29jLmRhY2tfdGltZXI7CiAJCWJyZWFrOwogCWNhc2UgU0NU
UF9USU1FUl9UWVBFX1NIVVRET1dOOgotCQlpZiAoKHN0Y2IgPT0gTlVMTCkgfHwgKG5ldCA9PSBO
VUxMKSkgeworCQlpZiAoKGlucCA9PSBOVUxMKSB8fCAoc3RjYiA9PSBOVUxMKSB8fCAobmV0ID09
IE5VTEwpKSB7CisjaWZkZWYgSU5WQVJJQU5UUworCQkJcGFuaWMoInNjdHBfdGltZXJfc3RvcCBv
ZiB0eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9ICVwLCBuZXQgPSAlcCIsCisJCQkgICAgICB0X3R5
cGUsIGlucCwgc3RjYiwgbmV0KTsKKyNlbHNlCiAJCQlyZXR1cm47CisjZW5kaWYKIAkJfQogCQl0
bXIgPSAmbmV0LT5yeHRfdGltZXI7CiAJCWJyZWFrOwogCWNhc2UgU0NUUF9USU1FUl9UWVBFX0hF
QVJUQkVBVDoKLQkJaWYgKChzdGNiID09IE5VTEwpIHx8IChuZXQgPT0gTlVMTCkpIHsKKwkJaWYg
KChpbnAgPT0gTlVMTCkgfHwgKHN0Y2IgPT0gTlVMTCkgfHwgKG5ldCA9PSBOVUxMKSkgeworI2lm
ZGVmIElOVkFSSUFOVFMKKwkJCXBhbmljKCJzY3RwX3RpbWVyX3N0b3Agb2YgdHlwZSAlZDogaW5w
ID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkJICAgICAgdF90eXBlLCBpbnAsIHN0Y2Is
IG5ldCk7CisjZWxzZQogCQkJcmV0dXJuOworI2VuZGlmCiAJCX0KIAkJdG1yID0gJm5ldC0+aGJf
dGltZXI7CiAJCWJyZWFrOwogCWNhc2UgU0NUUF9USU1FUl9UWVBFX0NPT0tJRToKLQkJaWYgKChz
dGNiID09IE5VTEwpIHx8IChuZXQgPT0gTlVMTCkpIHsKKwkJaWYgKChpbnAgPT0gTlVMTCkgfHwg
KHN0Y2IgPT0gTlVMTCkgfHwgKG5ldCA9PSBOVUxMKSkgeworI2lmZGVmIElOVkFSSUFOVFMKKwkJ
CXBhbmljKCJzY3RwX3RpbWVyX3N0b3Agb2YgdHlwZSAlZDogaW5wID0gJXAsIHN0Y2IgPSAlcCwg
bmV0ID0gJXAiLAorCQkJICAgICAgdF90eXBlLCBpbnAsIHN0Y2IsIG5ldCk7CisjZWxzZQogCQkJ
cmV0dXJuOworI2VuZGlmCiAJCX0KIAkJdG1yID0gJm5ldC0+cnh0X3RpbWVyOwogCQlicmVhazsK
IAljYXNlIFNDVFBfVElNRVJfVFlQRV9ORVdDT09LSUU6Ci0JCS8qIG5vdGhpbmcgbmVlZGVkIGJ1
dCB0aGUgZW5kcG9pbnQgaGVyZSAqLwotCQl0bXIgPSAmaW5wLT5zY3RwX2VwLnNpZ25hdHVyZV9j
aGFuZ2U7Ci0JCS8qCi0JCSAqIFdlIHJlLXVzZSB0aGUgbmV3Y29va2llIHRpbWVyIGZvciB0aGUg
SU5QIGtpbGwgdGltZXIuIFdlCi0JCSAqIG11c3QgYXNzdXJlIHRoYXQgd2UgZG8gbm90IGtpbGwg
aXQgYnkgYWNjaWRlbnQuCi0JCSAqLwotCQlicmVhazsKLQljYXNlIFNDVFBfVElNRVJfVFlQRV9B
U09DS0lMTDoKLQkJLyoKLQkJICogU3RvcCB0aGUgYXNvYyBraWxsIHRpbWVyLgotCQkgKi8KLQkJ
aWYgKHN0Y2IgPT0gTlVMTCkgeworCQlpZiAoKGlucCA9PSBOVUxMKSB8fCAoc3RjYiAhPSBOVUxM
KSB8fCAobmV0ICE9IE5VTEwpKSB7CisjaWZkZWYgSU5WQVJJQU5UUworCQkJcGFuaWMoInNjdHBf
dGltZXJfc3RvcCBvZiB0eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9ICVwLCBuZXQgPSAlcCIsCisJ
CQkgICAgICB0X3R5cGUsIGlucCwgc3RjYiwgbmV0KTsKKyNlbHNlCiAJCQlyZXR1cm47CisjZW5k
aWYKIAkJfQotCQl0bXIgPSAmc3RjYi0+YXNvYy5zdHJyZXNldF90aW1lcjsKLQkJYnJlYWs7Ci0K
LQljYXNlIFNDVFBfVElNRVJfVFlQRV9JTlBLSUxMOgotCQkvKgotCQkgKiBUaGUgaW5wIGlzIHNl
dHVwIHRvIGRpZS4gV2UgcmUtdXNlIHRoZSBzaWduYXR1cmVfY2hhZ2UKLQkJICogdGltZXIgc2lu
Y2UgdGhhdCBoYXMgc3RvcHBlZCBhbmQgd2UgYXJlIGluIHRoZSBHT05FCi0JCSAqIHN0YXRlLgot
CQkgKi8KIAkJdG1yID0gJmlucC0+c2N0cF9lcC5zaWduYXR1cmVfY2hhbmdlOwogCQlicmVhazsK
IAljYXNlIFNDVFBfVElNRVJfVFlQRV9QQVRITVRVUkFJU0U6Ci0JCWlmICgoc3RjYiA9PSBOVUxM
KSB8fCAobmV0ID09IE5VTEwpKSB7CisJCWlmICgoaW5wID09IE5VTEwpIHx8IChzdGNiID09IE5V
TEwpIHx8IChuZXQgPT0gTlVMTCkpIHsKKyNpZmRlZiBJTlZBUklBTlRTCisJCQlwYW5pYygic2N0
cF90aW1lcl9zdG9wIG9mIHR5cGUgJWQ6IGlucCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9ICVwIiwK
KwkJCSAgICAgIHRfdHlwZSwgaW5wLCBzdGNiLCBuZXQpOworI2Vsc2UKIAkJCXJldHVybjsKKyNl
bmRpZgogCQl9CiAJCXRtciA9ICZuZXQtPnBtdHVfdGltZXI7CiAJCWJyZWFrOwogCWNhc2UgU0NU
UF9USU1FUl9UWVBFX1NIVVRET1dOQUNLOgotCQlpZiAoKHN0Y2IgPT0gTlVMTCkgfHwgKG5ldCA9
PSBOVUxMKSkgeworCQlpZiAoKGlucCA9PSBOVUxMKSB8fCAoc3RjYiA9PSBOVUxMKSB8fCAobmV0
ID09IE5VTEwpKSB7CisjaWZkZWYgSU5WQVJJQU5UUworCQkJcGFuaWMoInNjdHBfdGltZXJfc3Rv
cCBvZiB0eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9ICVwLCBuZXQgPSAlcCIsCisJCQkgICAgICB0
X3R5cGUsIGlucCwgc3RjYiwgbmV0KTsKKyNlbHNlCiAJCQlyZXR1cm47CisjZW5kaWYKIAkJfQog
CQl0bXIgPSAmbmV0LT5yeHRfdGltZXI7CiAJCWJyZWFrOworCWNhc2UgU0NUUF9USU1FUl9UWVBF
X0FTQ09ORjoKKwkJaWYgKChpbnAgPT0gTlVMTCkgfHwgKHN0Y2IgPT0gTlVMTCkgfHwgKG5ldCAh
PSBOVUxMKSkgeworI2lmZGVmIElOVkFSSUFOVFMKKwkJCXBhbmljKCJzY3RwX3RpbWVyX3N0b3Ag
b2YgdHlwZSAlZDogaW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkJICAgICAgdF90
eXBlLCBpbnAsIHN0Y2IsIG5ldCk7CisjZWxzZQorCQkJcmV0dXJuOworI2VuZGlmCisJCX0KKwkJ
dG1yID0gJnN0Y2ItPmFzb2MuYXNjb25mX3RpbWVyOworCQlicmVhazsKIAljYXNlIFNDVFBfVElN
RVJfVFlQRV9TSFVURE9XTkdVQVJEOgotCQlpZiAoc3RjYiA9PSBOVUxMKSB7CisJCWlmICgoaW5w
ID09IE5VTEwpIHx8IChzdGNiID09IE5VTEwpIHx8IChuZXQgIT0gTlVMTCkpIHsKKyNpZmRlZiBJ
TlZBUklBTlRTCisJCQlwYW5pYygic2N0cF90aW1lcl9zdG9wIG9mIHR5cGUgJWQ6IGlucCA9ICVw
LCBzdGNiID0gJXAsIG5ldCA9ICVwIiwKKwkJCSAgICAgIHRfdHlwZSwgaW5wLCBzdGNiLCBuZXQp
OworI2Vsc2UKIAkJCXJldHVybjsKKyNlbmRpZgogCQl9CiAJCXRtciA9ICZzdGNiLT5hc29jLnNo
dXRfZ3VhcmRfdGltZXI7CiAJCWJyZWFrOworCWNhc2UgU0NUUF9USU1FUl9UWVBFX0FVVE9DTE9T
RToKKwkJaWYgKChpbnAgPT0gTlVMTCkgfHwgKHN0Y2IgPT0gTlVMTCkgfHwgKG5ldCAhPSBOVUxM
KSkgeworI2lmZGVmIElOVkFSSUFOVFMKKwkJCXBhbmljKCJzY3RwX3RpbWVyX3N0b3Agb2YgdHlw
ZSAlZDogaW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkJICAgICAgdF90eXBlLCBp
bnAsIHN0Y2IsIG5ldCk7CisjZWxzZQorCQkJcmV0dXJuOworI2VuZGlmCisJCX0KKwkJdG1yID0g
JnN0Y2ItPmFzb2MuYXV0b2Nsb3NlX3RpbWVyOworCQlicmVhazsKIAljYXNlIFNDVFBfVElNRVJf
VFlQRV9TVFJSRVNFVDoKLQkJaWYgKHN0Y2IgPT0gTlVMTCkgeworCQlpZiAoKGlucCA9PSBOVUxM
KSB8fCAoc3RjYiA9PSBOVUxMKSB8fCAobmV0ICE9IE5VTEwpKSB7CisjaWZkZWYgSU5WQVJJQU5U
UworCQkJcGFuaWMoInNjdHBfdGltZXJfc3RvcCBvZiB0eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9
ICVwLCBuZXQgPSAlcCIsCisJCQkgICAgICB0X3R5cGUsIGlucCwgc3RjYiwgbmV0KTsKKyNlbHNl
CiAJCQlyZXR1cm47CisjZW5kaWYKIAkJfQogCQl0bXIgPSAmc3RjYi0+YXNvYy5zdHJyZXNldF90
aW1lcjsKIAkJYnJlYWs7Ci0JY2FzZSBTQ1RQX1RJTUVSX1RZUEVfQVNDT05GOgotCQlpZiAoc3Rj
YiA9PSBOVUxMKSB7CisJY2FzZSBTQ1RQX1RJTUVSX1RZUEVfSU5QS0lMTDoKKwkJLyoKKwkJICog
VGhlIGlucCBpcyBzZXR1cCB0byBkaWUuIFdlIHJlLXVzZSB0aGUgc2lnbmF0dXJlX2NoYWdlCisJ
CSAqIHRpbWVyIHNpbmNlIHRoYXQgaGFzIHN0b3BwZWQgYW5kIHdlIGFyZSBpbiB0aGUgR09ORQor
CQkgKiBzdGF0ZS4KKwkJICovCisJCWlmICgoaW5wID09IE5VTEwpIHx8IChzdGNiICE9IE5VTEwp
IHx8IChuZXQgIT0gTlVMTCkpIHsKKyNpZmRlZiBJTlZBUklBTlRTCisJCQlwYW5pYygic2N0cF90
aW1lcl9zdG9wIG9mIHR5cGUgJWQ6IGlucCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9ICVwIiwKKwkJ
CSAgICAgIHRfdHlwZSwgaW5wLCBzdGNiLCBuZXQpOworI2Vsc2UKIAkJCXJldHVybjsKKyNlbmRp
ZgogCQl9Ci0JCXRtciA9ICZzdGNiLT5hc29jLmFzY29uZl90aW1lcjsKKwkJdG1yID0gJmlucC0+
c2N0cF9lcC5zaWduYXR1cmVfY2hhbmdlOwogCQlicmVhazsKLQljYXNlIFNDVFBfVElNRVJfVFlQ
RV9QUklNX0RFTEVURUQ6Ci0JCWlmIChzdGNiID09IE5VTEwpIHsKKwljYXNlIFNDVFBfVElNRVJf
VFlQRV9BU09DS0lMTDoKKwkJaWYgKChpbnAgPT0gTlVMTCkgfHwgKHN0Y2IgPT0gTlVMTCkgfHwg
KG5ldCAhPSBOVUxMKSkgeworI2lmZGVmIElOVkFSSUFOVFMKKwkJCXBhbmljKCJzY3RwX3RpbWVy
X3N0b3Agb2YgdHlwZSAlZDogaW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkJICAg
ICAgdF90eXBlLCBpbnAsIHN0Y2IsIG5ldCk7CisjZWxzZQogCQkJcmV0dXJuOworI2VuZGlmCiAJ
CX0KLQkJdG1yID0gJnN0Y2ItPmFzb2MuZGVsZXRlX3ByaW1fdGltZXI7CisJCXRtciA9ICZzdGNi
LT5hc29jLnN0cnJlc2V0X3RpbWVyOwogCQlicmVhazsKLQljYXNlIFNDVFBfVElNRVJfVFlQRV9B
VVRPQ0xPU0U6Ci0JCWlmIChzdGNiID09IE5VTEwpIHsKKwljYXNlIFNDVFBfVElNRVJfVFlQRV9B
RERSX1dROgorCQlpZiAoKGlucCAhPSBOVUxMKSB8fCAoc3RjYiAhPSBOVUxMKSB8fCAobmV0ICE9
IE5VTEwpKSB7CisjaWZkZWYgSU5WQVJJQU5UUworCQkJcGFuaWMoInNjdHBfdGltZXJfc3RvcCBv
ZiB0eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9ICVwLCBuZXQgPSAlcCIsCisJCQkgICAgICB0X3R5
cGUsIGlucCwgc3RjYiwgbmV0KTsKKyNlbHNlCisJCQlyZXR1cm47CisjZW5kaWYKKwkJfQorCQl0
bXIgPSAmU0NUUF9CQVNFX0lORk8oYWRkcl93cV90aW1lcik7CisJCWJyZWFrOworCWNhc2UgU0NU
UF9USU1FUl9UWVBFX1BSSU1fREVMRVRFRDoKKwkJaWYgKChpbnAgPT0gTlVMTCkgfHwgKHN0Y2Ig
PT0gTlVMTCkgfHwgKG5ldCAhPSBOVUxMKSkgeworI2lmZGVmIElOVkFSSUFOVFMKKwkJCXBhbmlj
KCJzY3RwX3RpbWVyX3N0b3Agb2YgdHlwZSAlZDogaW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0g
JXAiLAorCQkJICAgICAgdF90eXBlLCBpbnAsIHN0Y2IsIG5ldCk7CisjZWxzZQogCQkJcmV0dXJu
OworI2VuZGlmCiAJCX0KLQkJdG1yID0gJnN0Y2ItPmFzb2MuYXV0b2Nsb3NlX3RpbWVyOworCQl0
bXIgPSAmc3RjYi0+YXNvYy5kZWxldGVfcHJpbV90aW1lcjsKIAkJYnJlYWs7CiAJZGVmYXVsdDoK
LQkJU0NUUERCRyhTQ1RQX0RFQlVHX1RJTUVSMSwgIiVzOiBVbmtub3duIHRpbWVyIHR5cGUgJWRc
biIsCi0JCQlfX2Z1bmNfXywgdF90eXBlKTsKLQkJYnJlYWs7Ci0JfQotCWlmICh0bXIgPT0gTlVM
TCkgeworI2lmZGVmIElOVkFSSUFOVFMKKwkJcGFuaWMoIlVua25vd24gdGltZXIgdHlwZSAlZCIs
IHRfdHlwZSk7CisjZWxzZQogCQlyZXR1cm47CisjZW5kaWYKIAl9Ci0JaWYgKCh0bXItPnR5cGUg
IT0gdF90eXBlKSAmJiB0bXItPnR5cGUpIHsKKwlLQVNTRVJUKHRtciAhPSBOVUxMLCAoInRtciBp
cyBOVUxMIGZvciB0aW1lciB0eXBlICVkIiwgdF90eXBlKSk7CisJaWYgKCh0bXItPnR5cGUgIT0g
U0NUUF9USU1FUl9UWVBFX05PTkUpICYmCisJICAgICh0bXItPnR5cGUgIT0gdF90eXBlKSkgewog
CQkvKgogCQkgKiBPayB3ZSBoYXZlIGEgdGltZXIgdGhhdCBpcyB1bmRlciBqb2ludCB1c2UuIENv
b2tpZSB0aW1lcgogCQkgKiBwZXIgY2hhbmNlIHdpdGggdGhlIFNFTkQgdGltZXIuIFdlIHRoZXJl
Zm9yZSBhcmUgTk9UCiAJCSAqIHJ1bm5pbmcgdGhlIHRpbWVyIHRoYXQgdGhlIGNhbGxlciB3YW50
cyBzdG9wcGVkLiAgU28ganVzdAogCQkgKiByZXR1cm4uCiAJCSAqLworCQlTQ1RQREJHKFNDVFBf
REVCVUdfVElNRVIyLAorCQkgICAgICAgICJTaGFyZWQgdGltZXIgdHlwZSAlZCBub3QgcnVubmlu
ZzogaW5wPSVwLCBzdGNiPSVwLCBuZXQ9JXAuXG4iLAorCQkgICAgICAgICB0X3R5cGUsIGlucCwg
c3RjYiwgbmV0KTsKIAkJcmV0dXJuOwogCX0KIAlpZiAoKHRfdHlwZSA9PSBTQ1RQX1RJTUVSX1RZ
UEVfU0VORCkgJiYgKHN0Y2IgIT0gTlVMTCkpIHsKQEAgLTI0OTgsNyArMjk0NSw0NSBAQCBzY3Rw
X3RpbWVyX3N0b3AoaW50IHRfdHlwZSwgc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNj
dHBfdGNiICpzdGNiLAogCX0KIAl0bXItPnNlbGYgPSBOVUxMOwogCXRtci0+c3RvcHBlZF9mcm9t
ID0gZnJvbTsKLQkodm9pZClTQ1RQX09TX1RJTUVSX1NUT1AoJnRtci0+dGltZXIpOworCWlmIChT
Q1RQX09TX1RJTUVSX1NUT1AoJnRtci0+dGltZXIpID09IDEpIHsKKwkJS0FTU0VSVCh0bXItPmVw
ID09IGlucCwKKwkJICAgICAgICAoInNjdHBfdGltZXJfc3RvcCBvZiB0eXBlICVkOiBpbnAgPSAl
cCwgdG1yLT5pbnAgPSAlcCIsCisJCSAgICAgICAgIHRfdHlwZSwgaW5wLCB0bXItPmVwKSk7CisJ
CUtBU1NFUlQodG1yLT50Y2IgPT0gc3RjYiwKKwkJICAgICAgICAoInNjdHBfdGltZXJfc3RvcCBv
ZiB0eXBlICVkOiBzdGNiID0gJXAsIHRtci0+c3RjYiA9ICVwIiwKKwkJICAgICAgICAgdF90eXBl
LCBzdGNiLCB0bXItPnRjYikpOworCQlLQVNTRVJUKCgodF90eXBlID09IFNDVFBfVElNRVJfVFlQ
RV9BU0NPTkYpICYmICh0bXItPm5ldCAhPSBOVUxMKSkgfHwKKwkJICAgICAgICAoKHRfdHlwZSAh
PSBTQ1RQX1RJTUVSX1RZUEVfQVNDT05GKSAmJiAodG1yLT5uZXQgPT0gbmV0KSksCisJCSAgICAg
ICAgKCJzY3RwX3RpbWVyX3N0b3Agb2YgdHlwZSAlZDogbmV0ID0gJXAsIHRtci0+bmV0ID0gJXAi
LAorCQkgICAgICAgICB0X3R5cGUsIG5ldCwgdG1yLT5uZXQpKTsKKwkJU0NUUERCRyhTQ1RQX0RF
QlVHX1RJTUVSMiwKKwkJICAgICAgICAiVGltZXIgdHlwZSAlZCBzdG9wcGVkOiBpbnA9JXAsIHN0
Y2I9JXAsIG5ldD0lcC5cbiIsCisJCSAgICAgICAgdF90eXBlLCBpbnAsIHN0Y2IsIG5ldCk7CisJ
CS8qCisJCSAqIElmIHRoZSB0aW1lciB3YXMgYWN0dWFsbHkgc3RvcHBlZCwgZGVjcmVtZW50IHJl
ZmVyZW5jZSBjb3VudHMKKwkJICogdGhhdCB3ZXJlIGluY3JlbWVudGVkIGluIHNjdHBfdGltZXJf
c3RhcnQoKS4KKwkJICovCisJCWlmICh0bXItPmVwICE9IE5VTEwpIHsKKwkJCVNDVFBfSU5QX0RF
Q1JfUkVGKGlucCk7CisJCQl0bXItPmVwID0gTlVMTDsKKwkJfQorCQlpZiAodG1yLT50Y2IgIT0g
TlVMTCkgeworCQkJYXRvbWljX2FkZF9pbnQoJnN0Y2ItPmFzb2MucmVmY250LCAtMSk7CisJCQl0
bXItPnRjYiA9IE5VTEw7CisJCX0KKwkJaWYgKHRtci0+bmV0ICE9IE5VTEwpIHsKKwkJCS8qCisJ
CQkgKiBDYW4ndCB1c2UgbmV0LCBzaW5jZSBpdCBkb2Vzbid0IHdvcmsgZm9yCisJCQkgKiBTQ1RQ
X1RJTUVSX1RZUEVfQVNDT05GLgorCQkJICovCisJCQlzY3RwX2ZyZWVfcmVtb3RlX2FkZHIoKHN0
cnVjdCBzY3RwX25ldHMgKil0bXItPm5ldCk7CisJCQl0bXItPm5ldCA9IE5VTEw7CisJCX0KKwl9
IGVsc2UgeworCQlTQ1RQREJHKFNDVFBfREVCVUdfVElNRVIyLAorCQkgICAgICAgICJUaW1lciB0
eXBlICVkIG5vdCBzdG9wcGVkOiBpbnA9JXAsIHN0Y2I9JXAsIG5ldD0lcC5cbiIsCisJCSAgICAg
ICAgIHRfdHlwZSwgaW5wLCBzdGNiLCBuZXQpOworCX0KIAlyZXR1cm47CiB9CiAKQEAgLTI1NDks
MjUgKzMwMzQsMjQgQEAgc2N0cF9tdHVfc2l6ZV9yZXNldChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5w
LAogCiAKIC8qCi0gKiBnaXZlbiBhbiBhc3NvY2lhdGlvbiBhbmQgc3RhcnRpbmcgdGltZSBvZiB0
aGUgY3VycmVudCBSVFQgcGVyaW9kIHJldHVybgotICogUlRPIGluIG51bWJlciBvZiBtc2VjcyBu
ZXQgc2hvdWxkIHBvaW50IHRvIHRoZSBjdXJyZW50IG5ldHdvcmsKKyAqIEdpdmVuIGFuIGFzc29j
aWF0aW9uIGFuZCBzdGFydGluZyB0aW1lIG9mIHRoZSBjdXJyZW50IFJUVCBwZXJpb2QsIHVwZGF0
ZQorICogUlRPIGluIG51bWJlciBvZiBtc2Vjcy4gbmV0IHNob3VsZCBwb2ludCB0byB0aGUgY3Vy
cmVudCBuZXR3b3JrLgorICogUmV0dXJuIDEsIGlmIGFuIFJUTyB1cGRhdGUgd2FzIHBlcmZvcm1l
ZCwgcmV0dXJuIDAgaWYgbm8gdXBkYXRlIHdhcworICogcGVyZm9ybWVkIGR1ZSB0byBpbnZhbGlk
IHN0YXJ0aW5nIHBvaW50LgogICovCiAKLXVpbnQzMl90CitpbnQKIHNjdHBfY2FsY3VsYXRlX3J0
byhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCSAgIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICph
c29jLAogCQkgICBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsCiAJCSAgIHN0cnVjdCB0aW1ldmFsICpv
bGQsCiAJCSAgIGludCBydHRfZnJvbV9zYWNrKQogewotCS8qLQotCSAqIGdpdmVuIGFuIGFzc29j
aWF0aW9uIGFuZCB0aGUgc3RhcnRpbmcgdGltZSBvZiB0aGUgY3VycmVudCBSVFQKLQkgKiBwZXJp
b2QgKGluIHZhbHVlMS92YWx1ZTIpIHJldHVybiBSVE8gaW4gbnVtYmVyIG9mIG1zZWNzLgotCSAq
LwotCWludDMyX3QgcnR0OyAvKiBSVFQgaW4gbXMgKi8KKwlzdHJ1Y3QgdGltZXZhbCBub3c7CisJ
dWludDY0X3QgcnR0X3VzOwkvKiBSVFQgaW4gdXMgKi8KKwlpbnQzMl90IHJ0dDsJCS8qIFJUVCBp
biBtcyAqLwogCXVpbnQzMl90IG5ld19ydG87CiAJaW50IGZpcnN0X21lYXN1cmUgPSAwOwotCXN0
cnVjdCB0aW1ldmFsIG5vdzsKIAogCS8qKioqKioqKioqKioqKioqKioqKioqKiovCiAJLyogMS4g
Y2FsY3VsYXRlIG5ldyBSVFQgKi8KQEAgLTI1NzgsMTAgKzMwNjIsMTkgQEAgc2N0cF9jYWxjdWxh
dGVfcnRvKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAl9IGVsc2UgewogCQkodm9pZClTQ1RQX0dF
VFRJTUVfVElNRVZBTCgmbm93KTsKIAl9CisJaWYgKChvbGQtPnR2X3NlYyA+IG5vdy50dl9zZWMp
IHx8CisJICAgICgob2xkLT50dl9zZWMgPT0gbm93LnR2X3NlYykgJiYgKG9sZC0+dHZfdXNlYyA+
IG5vdy50dl91c2VjKSkpIHsKKwkJLyogVGhlIHN0YXJ0aW5nIHBvaW50IGlzIGluIHRoZSBmdXR1
cmUuICovCisJCXJldHVybiAoMCk7CisJfQogCXRpbWV2YWxzdWIoJm5vdywgb2xkKTsKKwlydHRf
dXMgPSAodWludDY0X3QpMTAwMDAwMCAqICh1aW50NjRfdClub3cudHZfc2VjICsgKHVpbnQ2NF90
KW5vdy50dl91c2VjOworCWlmIChydHRfdXMgPiBTQ1RQX1JUT19VUFBFUl9CT1VORCAqIDEwMDAp
IHsKKwkJLyogVGhlIFJUVCBpcyBsYXJnZXIgdGhhbiBhIHNhbmUgdmFsdWUuICovCisJCXJldHVy
biAoMCk7CisJfQogCS8qIHN0b3JlIHRoZSBjdXJyZW50IFJUVCBpbiB1cyAqLwotCW5ldC0+cnR0
ID0gKHVpbnQ2NF90KTEwMDAwMDAgKiAodWludDY0X3Qpbm93LnR2X3NlYyArCi0JICAgICAgICAg
ICAodWludDY0X3Qpbm93LnR2X3VzZWM7CisJbmV0LT5ydHQgPSBydHRfdXM7CiAJLyogY29tcHV0
ZSBydHQgaW4gbXMgKi8KIAlydHQgPSAoaW50MzJfdCkobmV0LT5ydHQgLyAxMDAwKTsKIAlpZiAo
KGFzb2MtPmNjX2Z1bmN0aW9ucy5zY3RwX3J0dF9jYWxjdWxhdGVkKSAmJiAocnR0X2Zyb21fc2Fj
ayA9PSBTQ1RQX1JUVF9GUk9NX0RBVEEpKSB7CkBAIC0yNjEwLDcgKzMxMDMsNyBAQCBzY3RwX2Nh
bGN1bGF0ZV9ydG8oc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCSAqIFBhcGVyICJDb25nZXN0aW9u
IEF2b2lkYW5jZSBhbmQgQ29udHJvbCIsIEFubmV4IEEuCiAJICoKIAkgKiAobmV0LT5sYXN0c2Eg
Pj4gU0NUUF9SVFRfU0hJRlQpIGlzIHRoZSBzcnR0Ci0JICogKG5ldC0+bGFzdHNhID4+IFNDVFBf
UlRUX1ZBUl9TSElGVCkgaXMgdGhlIHJ0dHZhcgorCSAqIChuZXQtPmxhc3RzdiA+PiBTQ1RQX1JU
VF9WQVJfU0hJRlQpIGlzIHRoZSBydHR2YXIKIAkgKi8KIAlpZiAobmV0LT5SVE9fbWVhc3VyZWQp
IHsKIAkJcnR0IC09IChuZXQtPmxhc3RzYSA+PiBTQ1RQX1JUVF9TSElGVCk7CkBAIC0yNjUxLDgg
KzMxNDQsOCBAQCBzY3RwX2NhbGN1bGF0ZV9ydG8oc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCWlm
IChuZXdfcnRvID4gc3RjYi0+YXNvYy5tYXhydG8pIHsKIAkJbmV3X3J0byA9IHN0Y2ItPmFzb2Mu
bWF4cnRvOwogCX0KLQkvKiB3ZSBhcmUgbm93IHJldHVybmluZyB0aGUgUlRPICovCi0JcmV0dXJu
IChuZXdfcnRvKTsKKwluZXQtPlJUTyA9IG5ld19ydG87CisJcmV0dXJuICgxKTsKIH0KIAogLyoK
QEAgLTI3NjYsMTEgKzMyNTksNyBAQCBzY3RwX3BhZF9sYXN0bWJ1ZihzdHJ1Y3QgbWJ1ZiAqbSwg
aW50IHBhZHZhbCwgc3RydWN0IG1idWYgKmxhc3RfbWJ1ZikKIAogc3RhdGljIHZvaWQKIHNjdHBf
bm90aWZ5X2Fzc29jX2NoYW5nZSh1aW50MTZfdCBzdGF0ZSwgc3RydWN0IHNjdHBfdGNiICpzdGNi
LAotICAgIHVpbnQxNl90IGVycm9yLCBzdHJ1Y3Qgc2N0cF9hYm9ydF9jaHVuayAqYWJvcnQsIHVp
bnQ4X3QgZnJvbV9wZWVyLCBpbnQgc29fbG9ja2VkCi0jaWYgIWRlZmluZWQoX19BUFBMRV9fKSAm
JiAhZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKLSAgICBTQ1RQX1VOVVNFRAotI2VuZGlm
Ci0gICAgKQorICAgIHVpbnQxNl90IGVycm9yLCBzdHJ1Y3Qgc2N0cF9hYm9ydF9jaHVuayAqYWJv
cnQsIHVpbnQ4X3QgZnJvbV9wZWVyLCBpbnQgc29fbG9ja2VkKQogewogCXN0cnVjdCBtYnVmICpt
X25vdGlmeTsKIAlzdHJ1Y3Qgc2N0cF9hc3NvY19jaGFuZ2UgKnNhYzsKQEAgLTI3NzgsNyArMzI2
Nyw3IEBAIHNjdHBfbm90aWZ5X2Fzc29jX2NoYW5nZSh1aW50MTZfdCBzdGF0ZSwgc3RydWN0IHNj
dHBfdGNiICpzdGNiLAogCXVuc2lnbmVkIGludCBub3RpZl9sZW47CiAJdWludDE2X3QgYWJvcnRf
bGVuOwogCXVuc2lnbmVkIGludCBpOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVk
KFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogCXN0cnVjdCBzb2NrZXQgKnNvOwogI2VuZGlmCiAKQEAgLTI4Nzcs
NyArMzM2Niw3IEBAIHNldF9lcnJvcjoKIAkgICAgKChzdGF0ZSA9PSBTQ1RQX0NPTU1fTE9TVCkg
fHwgKHN0YXRlID09IFNDVFBfQ0FOVF9TVFJfQVNTT0MpKSkgewogCQlTT0NLX0xPQ0soc3RjYi0+
c2N0cF9zb2NrZXQpOwogCQlpZiAoZnJvbV9wZWVyKSB7Ci0JCQlpZiAoU0NUUF9HRVRfU1RBVEUo
JnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQpIHsKKwkJCWlmIChTQ1RQX0dF
VF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB7CiAJCQkJU0NUUF9MVFJB
Q0VfRVJSX1JFVChOVUxMLCBzdGNiLCBOVUxMLCBTQ1RQX0ZST01fU0NUUFVUSUwsIEVDT05OUkVG
VVNFRCk7CiAJCQkJc3RjYi0+c2N0cF9zb2NrZXQtPnNvX2Vycm9yID0gRUNPTk5SRUZVU0VEOwog
CQkJfSBlbHNlIHsKQEAgLTI4ODUsOCArMzM3NCw4IEBAIHNldF9lcnJvcjoKIAkJCQlzdGNiLT5z
Y3RwX3NvY2tldC0+c29fZXJyb3IgPSBFQ09OTlJFU0VUOwogCQkJfQogCQl9IGVsc2UgewotCQkJ
aWYgKChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9DT09LSUVfV0FJ
VCkgfHwKLQkJCSAgICAoU0NUUF9HRVRfU1RBVEUoJnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVf
Q09PS0lFX0VDSE9FRCkpIHsKKwkJCWlmICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9T
VEFURV9DT09LSUVfV0FJVCkgfHwKKwkJCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NU
UF9TVEFURV9DT09LSUVfRUNIT0VEKSkgewogCQkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoTlVMTCwg
c3RjYiwgTlVMTCwgU0NUUF9GUk9NX1NDVFBVVElMLCBFVElNRURPVVQpOwogCQkJCXN0Y2ItPnNj
dHBfc29ja2V0LT5zb19lcnJvciA9IEVUSU1FRE9VVDsKIAkJCX0gZWxzZSB7CkBAIC0yODk3LDcg
KzMzODYsNyBAQCBzZXRfZXJyb3I6CiAJCVNPQ0tfVU5MT0NLKHN0Y2ItPnNjdHBfc29ja2V0KTsK
IAl9CiAJLyogV2FrZSBBTlkgc2xlZXBlcnMgKi8KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwg
ZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzbyA9IFNDVFBfSU5QX1NPKHN0Y2ItPnNjdHBfZXAp
OwogCWlmICghc29fbG9ja2VkKSB7CiAJCWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29jLnJlZmNu
dCwgMSk7CkBAIC0yOTE4LDcgKzM0MDcsNyBAQCBzZXRfZXJyb3I6CiAJfQogCXNvcndha2V1cChz
dGNiLT5zY3RwX3NvY2tldCk7CiAJc293d2FrZXVwKHN0Y2ItPnNjdHBfc29ja2V0KTsKLSNpZiBk
ZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBk
ZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlpZiAoIXNvX2xv
Y2tlZCkgewogCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDEpOwogCX0KQEAgLTI5MjcsMTEgKzM0
MTYsNyBAQCBzZXRfZXJyb3I6CiAKIHN0YXRpYyB2b2lkCiBzY3RwX25vdGlmeV9wZWVyX2FkZHJf
Y2hhbmdlKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgdWludDMyX3Qgc3RhdGUsCi0gICAgc3RydWN0
IHNvY2thZGRyICpzYSwgdWludDMyX3QgZXJyb3IsIGludCBzb19sb2NrZWQKLSNpZiAhZGVmaW5l
ZChfX0FQUExFX18pICYmICFkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQotICAgIFNDVFBf
VU5VU0VECi0jZW5kaWYKLSkKKyAgICBzdHJ1Y3Qgc29ja2FkZHIgKnNhLCB1aW50MzJfdCBlcnJv
ciwgaW50IHNvX2xvY2tlZCkKIHsKIAlzdHJ1Y3QgbWJ1ZiAqbV9ub3RpZnk7CiAJc3RydWN0IHNj
dHBfcGFkZHJfY2hhbmdlICpzcGM7CkBAIC0zMDMzLDExICszNTE4LDcgQEAgc2N0cF9ub3RpZnlf
cGVlcl9hZGRyX2NoYW5nZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQzMl90IHN0YXRlLAog
CiBzdGF0aWMgdm9pZAogc2N0cF9ub3RpZnlfc2VuZF9mYWlsZWQoc3RydWN0IHNjdHBfdGNiICpz
dGNiLCB1aW50OF90IHNlbnQsIHVpbnQzMl90IGVycm9yLAotICAgIHN0cnVjdCBzY3RwX3RtaXRf
Y2h1bmsgKmNoaywgaW50IHNvX2xvY2tlZAotI2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRl
ZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCi0gICAgU0NUUF9VTlVTRUQKLSNlbmRpZgotICAg
ICkKKyAgICBzdHJ1Y3Qgc2N0cF90bWl0X2NodW5rICpjaGssIGludCBzb19sb2NrZWQpCiB7CiAJ
c3RydWN0IG1idWYgKm1fbm90aWZ5OwogCXN0cnVjdCBzY3RwX3NlbmRfZmFpbGVkICpzc2Y7CkBA
IC0zMTY5LDExICszNjUwLDcgQEAgc2N0cF9ub3RpZnlfc2VuZF9mYWlsZWQoc3RydWN0IHNjdHBf
dGNiICpzdGNiLCB1aW50OF90IHNlbnQsIHVpbnQzMl90IGVycm9yLAogCiBzdGF0aWMgdm9pZAog
c2N0cF9ub3RpZnlfc2VuZF9mYWlsZWQyKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgdWludDMyX3Qg
ZXJyb3IsCi0JCQkgc3RydWN0IHNjdHBfc3RyZWFtX3F1ZXVlX3BlbmRpbmcgKnNwLCBpbnQgc29f
bG9ja2VkCi0jaWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChTQ1RQX1NPX0xPQ0tf
VEVTVElORykKLSAgICAgICAgICAgICAgICAgICAgICAgICBTQ1RQX1VOVVNFRAotI2VuZGlmCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgKQorCQkJIHN0cnVjdCBzY3RwX3N0cmVhbV9xdWV1ZV9w
ZW5kaW5nICpzcCwgaW50IHNvX2xvY2tlZCkKIHsKIAlzdHJ1Y3QgbWJ1ZiAqbV9ub3RpZnk7CiAJ
c3RydWN0IHNjdHBfc2VuZF9mYWlsZWQgKnNzZjsKQEAgLTMzMTksMTEgKzM3OTYsNyBAQCBzY3Rw
X25vdGlmeV9hZGFwdGF0aW9uX2xheWVyKHN0cnVjdCBzY3RwX3RjYiAqc3RjYikKIC8qIFRoaXMg
YWx3YXlzIG11c3QgYmUgY2FsbGVkIHdpdGggdGhlIHJlYWQtcXVldWUgTE9DS0VEIGluIHRoZSBJ
TlAgKi8KIHN0YXRpYyB2b2lkCiBzY3RwX25vdGlmeV9wYXJ0aWFsX2RlbGl2ZXJ5X2luZGljYXRp
b24oc3RydWN0IHNjdHBfdGNiICpzdGNiLCB1aW50MzJfdCBlcnJvciwKLQkJCQkJdWludDMyX3Qg
dmFsLCBpbnQgc29fbG9ja2VkCi0jaWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChT
Q1RQX1NPX0xPQ0tfVEVTVElORykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0NUUF9V
TlVTRUQKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkK
KwkJCQkJdWludDMyX3QgdmFsLCBpbnQgc29fbG9ja2VkKQogewogCXN0cnVjdCBtYnVmICptX25v
dGlmeTsKIAlzdHJ1Y3Qgc2N0cF9wZGFwaV9ldmVudCAqcGRhcGk7CkBAIC0zMzg1LDcgKzM4NTgs
NyBAQCBzY3RwX25vdGlmeV9wYXJ0aWFsX2RlbGl2ZXJ5X2luZGljYXRpb24oc3RydWN0IHNjdHBf
dGNiICpzdGNiLCB1aW50MzJfdCBlcnJvciwKIAl9CiAJaWYgKHN0Y2ItPnNjdHBfZXAgJiYgc3Rj
Yi0+c2N0cF9zb2NrZXQpIHsKIAkJLyogVGhpcyBzaG91bGQgYWx3YXlzIGJlIHRoZSBjYXNlICov
Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcp
CisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCXN0
cnVjdCBzb2NrZXQgKnNvOwogCiAJCXNvID0gU0NUUF9JTlBfU08oc3RjYi0+c2N0cF9lcCk7CkBA
IC0zNDAyLDcgKzM4NzUsNyBAQCBzY3RwX25vdGlmeV9wYXJ0aWFsX2RlbGl2ZXJ5X2luZGljYXRp
b24oc3RydWN0IHNjdHBfdGNiICpzdGNiLCB1aW50MzJfdCBlcnJvciwKIAkJfQogI2VuZGlmCiAJ
CXNjdHBfc29yd2FrZXVwKHN0Y2ItPnNjdHBfZXAsIHN0Y2ItPnNjdHBfc29ja2V0KTsKLSNpZiBk
ZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBk
ZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJaWYgKCFzb19s
b2NrZWQpIHsKIAkJCVNDVFBfU09DS0VUX1VOTE9DSyhzbywgMSk7CiAJCX0KQEAgLTM0MjQsNyAr
Mzg5Nyw3IEBAIHNjdHBfbm90aWZ5X3NodXRkb3duX2V2ZW50KHN0cnVjdCBzY3RwX3RjYiAqc3Rj
YikKIAlpZiAoKHN0Y2ItPnNjdHBfZXAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BU
WVBFKSB8fAogCSAgICAoc3RjYi0+c2N0cF9lcC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdT
X0lOX1RDUFBPT0wpKSB7CiAJCS8qIG1hcmsgc29ja2V0IGNsb3NlZCBmb3IgcmVhZC93cml0ZSBh
bmQgd2FrZXVwISAqLwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09f
TE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCQlzdHJ1Y3Qgc29ja2V0ICpzbzsKIAogCQlzbyA9IFNDVFBfSU5QX1NPKHN0Y2It
PnNjdHBfZXApOwpAQCAtMzQzOSw3ICszOTEyLDcgQEAgc2N0cF9ub3RpZnlfc2h1dGRvd25fZXZl
bnQoc3RydWN0IHNjdHBfdGNiICpzdGNiKQogCQl9CiAjZW5kaWYKIAkJc29jYW50c2VuZG1vcmUo
c3RjYi0+c2N0cF9zb2NrZXQpOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFND
VFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDEpOwogI2VuZGlmCiAJfQpA
QCAtMzQ4MiwxMSArMzk1NSw3IEBAIHNjdHBfbm90aWZ5X3NodXRkb3duX2V2ZW50KHN0cnVjdCBz
Y3RwX3RjYiAqc3RjYikKIAogc3RhdGljIHZvaWQKIHNjdHBfbm90aWZ5X3NlbmRlcl9kcnlfZXZl
bnQoc3RydWN0IHNjdHBfdGNiICpzdGNiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgc29fbG9ja2VkCi0jaWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChTQ1RQX1NP
X0xPQ0tfVEVTVElORykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0NUUF9VTlVTRUQK
LSNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBzb19sb2NrZWQpCiB7CiAJc3RydWN0IG1idWYgKm1fbm90aWZ5Owog
CXN0cnVjdCBzY3RwX3NlbmRlcl9kcnlfZXZlbnQgKmV2ZW50OwpAQCAtMzc3MywxMSArNDI0Miw3
IEBAIHNjdHBfbm90aWZ5X3JlbW90ZV9lcnJvcihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQx
Nl90IGVycm9yLCBzdHJ1Y3Qgc2N0cF9lcnJvCiAKIHZvaWQKIHNjdHBfdWxwX25vdGlmeSh1aW50
MzJfdCBub3RpZmljYXRpb24sIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKLSAgICB1aW50MzJfdCBl
cnJvciwgdm9pZCAqZGF0YSwgaW50IHNvX2xvY2tlZAotI2lmICFkZWZpbmVkKF9fQVBQTEVfXykg
JiYgIWRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCi0gICAgU0NUUF9VTlVTRUQKLSNlbmRp
ZgotICAgICkKKyAgICB1aW50MzJfdCBlcnJvciwgdm9pZCAqZGF0YSwgaW50IHNvX2xvY2tlZCkK
IHsKIAlpZiAoKHN0Y2IgPT0gTlVMTCkgfHwKIAkgICAgKHN0Y2ItPnNjdHBfZXAtPnNjdHBfZmxh
Z3MgJiBTQ1RQX1BDQl9GTEFHU19TT0NLRVRfR09ORSkgfHwKQEAgLTM3ODYsMjIgKzQyNTEsMjIg
QEAgc2N0cF91bHBfbm90aWZ5KHVpbnQzMl90IG5vdGlmaWNhdGlvbiwgc3RydWN0IHNjdHBfdGNi
ICpzdGNiLAogCQkvKiBJZiB0aGUgc29ja2V0IGlzIGdvbmUgd2UgYXJlIG91dCBvZiBoZXJlICov
CiAJCXJldHVybjsKIAl9Ci0jaWYgKGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92
ZXJzaW9uID4gNTAwMDAwKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmIChkZWZpbmVkKF9f
RnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9XSU4zMikpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAJaWYgKHN0Y2ItPnNjdHBfc29ja2V0LT5zb19yY3Yuc2Jfc3RhdGUgJiBTQlNfQ0FOVFJDVk1P
UkUpIHsKICNlbHNlCiAJaWYgKHN0Y2ItPnNjdHBfc29ja2V0LT5zb19zdGF0ZSAmIFNTX0NBTlRS
Q1ZNT1JFKSB7CiAjZW5kaWYKIAkJcmV0dXJuOwogCX0KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykK
KyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlpZiAo
c29fbG9ja2VkKSB7CiAJCXNjdHBfbG9ja19hc3NlcnQoU0NUUF9JTlBfU08oc3RjYi0+c2N0cF9l
cCkpOwogCX0gZWxzZSB7CiAJCXNjdHBfdW5sb2NrX2Fzc2VydChTQ1RQX0lOUF9TTyhzdGNiLT5z
Y3RwX2VwKSk7CiAJfQogI2VuZGlmCi0JaWYgKChzdGNiLT5hc29jLnN0YXRlICYgU0NUUF9TVEFU
RV9DT09LSUVfV0FJVCkgfHwKLQkgICAgKHN0Y2ItPmFzb2Muc3RhdGUgJiAgU0NUUF9TVEFURV9D
T09LSUVfRUNIT0VEKSkgeworCWlmICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFU
RV9DT09LSUVfV0FJVCkgfHwKKwkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RB
VEVfQ09PS0lFX0VDSE9FRCkpIHsKIAkJaWYgKChub3RpZmljYXRpb24gPT0gU0NUUF9OT1RJRllf
SU5URVJGQUNFX0RPV04pIHx8CiAJCSAgICAobm90aWZpY2F0aW9uID09IFNDVFBfTk9USUZZX0lO
VEVSRkFDRV9VUCkgfHwKIAkJICAgIChub3RpZmljYXRpb24gPT0gU0NUUF9OT1RJRllfSU5URVJG
QUNFX0NPTkZJUk1FRCkpIHsKQEAgLTM4OTAsMTYgKzQzNTUsMTYgQEAgc2N0cF91bHBfbm90aWZ5
KHVpbnQzMl90IG5vdGlmaWNhdGlvbiwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQlicmVhazsK
IAkJfQogCWNhc2UgU0NUUF9OT1RJRllfQVNTT0NfTE9DX0FCT1JURUQ6Ci0JCWlmICgoKHN0Y2It
PmFzb2Muc3RhdGUgJiBTQ1RQX1NUQVRFX01BU0spID09IFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQp
IHx8Ci0JCSAgICAoKHN0Y2ItPmFzb2Muc3RhdGUgJiBTQ1RQX1NUQVRFX01BU0spID09IFNDVFBf
U1RBVEVfQ09PS0lFX0VDSE9FRCkpIHsKKwkJaWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBT
Q1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB8fAorCQkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09
IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCkpIHsKIAkJCXNjdHBfbm90aWZ5X2Fzc29jX2NoYW5n
ZShTQ1RQX0NBTlRfU1RSX0FTU09DLCBzdGNiLCBlcnJvciwgZGF0YSwgMCwgc29fbG9ja2VkKTsK
IAkJfSBlbHNlIHsKIAkJCXNjdHBfbm90aWZ5X2Fzc29jX2NoYW5nZShTQ1RQX0NPTU1fTE9TVCwg
c3RjYiwgZXJyb3IsIGRhdGEsIDAsIHNvX2xvY2tlZCk7CiAJCX0KIAkJYnJlYWs7CiAJY2FzZSBT
Q1RQX05PVElGWV9BU1NPQ19SRU1fQUJPUlRFRDoKLQkJaWYgKCgoc3RjYi0+YXNvYy5zdGF0ZSAm
IFNDVFBfU1RBVEVfTUFTSykgPT0gU0NUUF9TVEFURV9DT09LSUVfV0FJVCkgfHwKLQkJICAgICgo
c3RjYi0+YXNvYy5zdGF0ZSAmIFNDVFBfU1RBVEVfTUFTSykgPT0gU0NUUF9TVEFURV9DT09LSUVf
RUNIT0VEKSkgeworCQlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfQ09P
S0lFX1dBSVQpIHx8CisJCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9D
T09LSUVfRUNIT0VEKSkgewogCQkJc2N0cF9ub3RpZnlfYXNzb2NfY2hhbmdlKFNDVFBfQ0FOVF9T
VFJfQVNTT0MsIHN0Y2IsIGVycm9yLCBkYXRhLCAxLCBzb19sb2NrZWQpOwogCQl9IGVsc2Ugewog
CQkJc2N0cF9ub3RpZnlfYXNzb2NfY2hhbmdlKFNDVFBfQ09NTV9MT1NULCBzdGNiLCBlcnJvciwg
ZGF0YSwgMSwgc29fbG9ja2VkKTsKQEAgLTM5NzgsMTEgKzQ0NDMsNyBAQCBzY3RwX3VscF9ub3Rp
ZnkodWludDMyX3Qgbm90aWZpY2F0aW9uLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiB9CiAKIHZv
aWQKLXNjdHBfcmVwb3J0X2FsbF9vdXRib3VuZChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQx
Nl90IGVycm9yLCBpbnQgaG9sZHNfbG9jaywgaW50IHNvX2xvY2tlZAotI2lmICFkZWZpbmVkKF9f
QVBQTEVfXykgJiYgIWRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCi0gICAgU0NUUF9VTlVT
RUQKLSNlbmRpZgotICAgICkKK3NjdHBfcmVwb3J0X2FsbF9vdXRib3VuZChzdHJ1Y3Qgc2N0cF90
Y2IgKnN0Y2IsIHVpbnQxNl90IGVycm9yLCBpbnQgc29fbG9ja2VkKQogewogCXN0cnVjdCBzY3Rw
X2Fzc29jaWF0aW9uICphc29jOwogCXN0cnVjdCBzY3RwX3N0cmVhbV9vdXQgKm91dHM7CkBAIC0z
OTk4LDcgKzQ0NTksNyBAQCBzY3RwX3JlcG9ydF9hbGxfb3V0Ym91bmQoc3RydWN0IHNjdHBfdGNi
ICpzdGNiLCB1aW50MTZfdCBlcnJvciwgaW50IGhvbGRzX2xvY2ssCiAJCS8qIGFscmVhZHkgYmVp
bmcgZnJlZWQgKi8KIAkJcmV0dXJuOwogCX0KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBk
ZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlpZiAoc29fbG9j
a2VkKSB7CiAJCXNjdHBfbG9ja19hc3NlcnQoU0NUUF9JTlBfU08oc3RjYi0+c2N0cF9lcCkpOwog
CX0gZWxzZSB7CkBAIC00MDExLDkgKzQ0NzIsNiBAQCBzY3RwX3JlcG9ydF9hbGxfb3V0Ym91bmQo
c3RydWN0IHNjdHBfdGNiICpzdGNiLCB1aW50MTZfdCBlcnJvciwgaW50IGhvbGRzX2xvY2ssCiAJ
CXJldHVybjsKIAl9CiAJLyogbm93IHRocm91Z2ggYWxsIHRoZSBndW5rIGZyZWVpbmcgY2h1bmtz
ICovCi0JaWYgKGhvbGRzX2xvY2sgPT0gMCkgewotCQlTQ1RQX1RDQl9TRU5EX0xPQ0soc3RjYik7
Ci0JfQogCS8qIHNlbnQgcXVldWUgU0hPVUxEIGJlIGVtcHR5ICovCiAJVEFJTFFfRk9SRUFDSF9T
QUZFKGNoaywgJmFzb2MtPnNlbnRfcXVldWUsIHNjdHBfbmV4dCwgbmNoaykgewogCQlUQUlMUV9S
RU1PVkUoJmFzb2MtPnNlbnRfcXVldWUsIGNoaywgc2N0cF9uZXh0KTsKQEAgLTQwNjksNyArNDUy
Nyw3IEBAIHNjdHBfcmVwb3J0X2FsbF9vdXRib3VuZChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVp
bnQxNl90IGVycm9yLCBpbnQgaG9sZHNfbG9jaywKIAkJVEFJTFFfRk9SRUFDSF9TQUZFKHNwLCAm
b3V0cy0+b3V0cXVldWUsIG5leHQsIG5zcCkgewogCQkJYXRvbWljX3N1YnRyYWN0X2ludCgmYXNv
Yy0+c3RyZWFtX3F1ZXVlX2NudCwgMSk7CiAJCQlUQUlMUV9SRU1PVkUoJm91dHMtPm91dHF1ZXVl
LCBzcCwgbmV4dCk7Ci0JCQlzdGNiLT5hc29jLnNzX2Z1bmN0aW9ucy5zY3RwX3NzX3JlbW92ZV9m
cm9tX3N0cmVhbShzdGNiLCBhc29jLCBvdXRzLCBzcCwgaG9sZHNfbG9jayk7CisJCQlzdGNiLT5h
c29jLnNzX2Z1bmN0aW9ucy5zY3RwX3NzX3JlbW92ZV9mcm9tX3N0cmVhbShzdGNiLCBhc29jLCBv
dXRzLCBzcCwgMSk7CiAJCQlzY3RwX2ZyZWVfc3BidWZzcGFjZShzdGNiLCBhc29jLCBzcCk7CiAJ
CQlpZiAoc3AtPmRhdGEpIHsKIAkJCQlzY3RwX3VscF9ub3RpZnkoU0NUUF9OT1RJRllfU1BFQ0lB
TF9TUF9GQUlMLCBzdGNiLApAQCAtNDA5MCwyNCArNDU0OCwxNiBAQCBzY3RwX3JlcG9ydF9hbGxf
b3V0Ym91bmQoc3RydWN0IHNjdHBfdGNiICpzdGNiLCB1aW50MTZfdCBlcnJvciwgaW50IGhvbGRz
X2xvY2ssCiAJCQkvKnNhX2lnbm9yZSBGUkVFRF9NRU1PUlkqLwogCQl9CiAJfQotCi0JaWYgKGhv
bGRzX2xvY2sgPT0gMCkgewotCQlTQ1RQX1RDQl9TRU5EX1VOTE9DSyhzdGNiKTsKLQl9CiB9CiAK
IHZvaWQKIHNjdHBfYWJvcnRfbm90aWZpY2F0aW9uKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgdWlu
dDhfdCBmcm9tX3BlZXIsIHVpbnQxNl90IGVycm9yLAotCQkJc3RydWN0IHNjdHBfYWJvcnRfY2h1
bmsgKmFib3J0LCBpbnQgc29fbG9ja2VkCi0jaWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVm
aW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKLSAgICBTQ1RQX1VOVVNFRAotI2VuZGlmCi0gICAg
KQorCQkJc3RydWN0IHNjdHBfYWJvcnRfY2h1bmsgKmFib3J0LCBpbnQgc29fbG9ja2VkKQogewog
CWlmIChzdGNiID09IE5VTEwpIHsKIAkJcmV0dXJuOwogCX0KLSNpZiBkZWZpbmVkKF9fQVBQTEVf
XykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlp
ZiAoc29fbG9ja2VkKSB7CiAJCXNjdHBfbG9ja19hc3NlcnQoU0NUUF9JTlBfU08oc3RjYi0+c2N0
cF9lcCkpOwogCX0gZWxzZSB7CkBAIC00MTI0LDggKzQ1NzQsMTEgQEAgc2N0cF9hYm9ydF9ub3Rp
ZmljYXRpb24oc3RydWN0IHNjdHBfdGNiICpzdGNiLCB1aW50OF90IGZyb21fcGVlciwgdWludDE2
X3QgZXJyb3IKIAkgICAgKHN0Y2ItPmFzb2Muc3RhdGUgJiBTQ1RQX1NUQVRFX0NMT1NFRF9TT0NL
RVQpKSB7CiAJCXJldHVybjsKIAl9CisJU0NUUF9UQ0JfU0VORF9MT0NLKHN0Y2IpOworCVNDVFBf
QUREX1NVQlNUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfV0FTX0FCT1JURUQpOwogCS8qIFRlbGwgdGhl
bSB3ZSBsb3N0IHRoZSBhc29jICovCi0Jc2N0cF9yZXBvcnRfYWxsX291dGJvdW5kKHN0Y2IsIGVy
cm9yLCAxLCBzb19sb2NrZWQpOworCXNjdHBfcmVwb3J0X2FsbF9vdXRib3VuZChzdGNiLCBlcnJv
ciwgc29fbG9ja2VkKTsKKwlTQ1RQX1RDQl9TRU5EX1VOTE9DSyhzdGNiKTsKIAlpZiAoZnJvbV9w
ZWVyKSB7CiAJCXNjdHBfdWxwX25vdGlmeShTQ1RQX05PVElGWV9BU1NPQ19SRU1fQUJPUlRFRCwg
c3RjYiwgZXJyb3IsIGFib3J0LCBzb19sb2NrZWQpOwogCX0gZWxzZSB7CkBAIC00MTM4LDEzICs0
NTkxLDEzIEBAIHNjdHBfYWJvcnRfYXNzb2NpYXRpb24oc3RydWN0IHNjdHBfaW5wY2IgKmlucCwg
c3RydWN0IHNjdHBfdGNiICpzdGNiLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbWJ1
ZiAqbSwgaW50IGlwaGxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNvY2thZGRy
ICpzcmMsIHN0cnVjdCBzb2NrYWRkciAqZHN0LAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3Qgc2N0cGhkciAqc2gsIHN0cnVjdCBtYnVmICpvcF9lcnIsCi0jaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IG1mbG93dHlwZSwgdWludDMyX3QgbWZs
b3dpZCwKICNlbmRpZgogICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB2cmZfaWQsIHVp
bnQxNl90IHBvcnQpCiB7CiAJdWludDMyX3QgdnRhZzsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykg
fHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzdHJ1Y3Qgc29ja2V0ICpzbzsKICNlbmRpZgog
CkBAIC00MTU0LDE2ICs0NjA3LDE1IEBAIHNjdHBfYWJvcnRfYXNzb2NpYXRpb24oc3RydWN0IHNj
dHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQl2cmZfaWQgPSBzdGNiLT5h
c29jLnZyZl9pZDsKIAl9CiAJc2N0cF9zZW5kX2Fib3J0KG0sIGlwaGxlbiwgc3JjLCBkc3QsIHNo
LCB2dGFnLCBvcF9lcnIsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCSAgICAgICAgICAgICAgICBt
Zmxvd3R5cGUsIG1mbG93aWQsIGlucC0+ZmlibnVtLAogI2VuZGlmCiAJICAgICAgICAgICAgICAg
IHZyZl9pZCwgcG9ydCk7CiAJaWYgKHN0Y2IgIT0gTlVMTCkgewogCQkvKiBXZSBoYXZlIGEgVENC
IHRvIGFib3J0LCBzZW5kIG5vdGlmaWNhdGlvbiB0b28gKi8KIAkJc2N0cF9hYm9ydF9ub3RpZmlj
YXRpb24oc3RjYiwgMCwgMCwgTlVMTCwgU0NUUF9TT19OT1RfTE9DS0VEKTsKLQkJc3RjYi0+YXNv
Yy5zdGF0ZSB8PSBTQ1RQX1NUQVRFX1dBU19BQk9SVEVEOwogCQkvKiBPaywgbm93IGxldHMgZnJl
ZSBpdCAqLwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19U
RVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCQlzbyA9IFNDVFBfSU5QX1NPKGlucCk7CiAJCWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29j
LnJlZmNudCwgMSk7CiAJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKQEAgLTQxNzIsMTMgKzQ2MjQs
MTMgQEAgc2N0cF9hYm9ydF9hc3NvY2lhdGlvbihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1
Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCWF0b21pY19zdWJ0cmFjdF9pbnQoJnN0Y2ItPmFzb2MucmVm
Y250LCAxKTsKICNlbmRpZgogCQlTQ1RQX1NUQVRfSU5DUl9DT1VOVEVSMzIoc2N0cHNfYWJvcnRl
ZCk7Ci0JCWlmICgoU0NUUF9HRVRfU1RBVEUoJnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVfT1BF
TikgfHwKLQkJICAgIChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9T
SFVURE9XTl9SRUNFSVZFRCkpIHsKKwkJaWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQ
X1NUQVRFX09QRU4pIHx8CisJCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFU
RV9TSFVURE9XTl9SRUNFSVZFRCkpIHsKIAkJCVNDVFBfU1RBVF9ERUNSX0dBVUdFMzIoc2N0cHNf
Y3VycmVzdGFiKTsKIAkJfQogCQkodm9pZClzY3RwX2ZyZWVfYXNzb2MoaW5wLCBzdGNiLCBTQ1RQ
X05PUk1BTF9QUk9DLAogCQkgICAgICAgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBVVElM
ICsgU0NUUF9MT0NfNCk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9T
T19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAJCVNDVFBfU09DS0VUX1VOTE9DSyhzbywgMSk7CiAjZW5kaWYKIAl9CkBAIC00
MjQ4LDIwICs0NzAwLDE2IEBAIHNjdHBfcHJpbnRfb3V0X3RyYWNrX2xvZyhzdHJ1Y3Qgc2N0cF90
Y2IgKnN0Y2IpCiB2b2lkCiBzY3RwX2Fib3J0X2FuX2Fzc29jaWF0aW9uKHN0cnVjdCBzY3RwX2lu
cGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RydWN0IG1idWYgKm9wX2VyciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNv
X2xvY2tlZAotI2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoU0NUUF9TT19MT0NL
X1RFU1RJTkcpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFNDVFBfVU5VU0VECi0jZW5kaWYK
LSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNvX2xvY2tlZCkKIHsKLSNpZiBkZWZp
bmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZp
bmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzdHJ1Y3Qgc29ja2V0
ICpzbzsKICNlbmRpZgogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9T
T19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAJc28gPSBTQ1RQX0lOUF9TTyhpbnApOwogI2VuZGlmCi0jaWYgZGVmaW5lZChf
X0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAJaWYgKHNvX2xvY2tlZCkgewogCQlzY3RwX2xvY2tfYXNzZXJ0KFNDVFBfSU5QX1NPKGlu
cCkpOwogCX0gZWxzZSB7CkBAIC00MjcyLDE0ICs0NzIwLDE0IEBAIHNjdHBfYWJvcnRfYW5fYXNz
b2NpYXRpb24oc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAog
CQkvKiBHb3QgdG8gaGF2ZSBhIFRDQiAqLwogCQlpZiAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9Q
Q0JfRkxBR1NfU09DS0VUX0dPTkUpIHsKIAkJCWlmIChMSVNUX0VNUFRZKCZpbnAtPnNjdHBfYXNv
Y19saXN0KSkgewotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCWlmICghc29fbG9ja2VkKSB7CiAJCQkJ
CVNDVFBfU09DS0VUX0xPQ0soc28sIDEpOwogCQkJCX0KICNlbmRpZgogCQkJCXNjdHBfaW5wY2Jf
ZnJlZShpbnAsIFNDVFBfRlJFRV9TSE9VTERfVVNFX0FCT1JULAogCQkJCQkJU0NUUF9DQUxMRURf
RElSRUNUTFlfTk9DTVBTRVQpOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQo
X19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCWlmICghc29fbG9ja2Vk
KSB7CiAJCQkJCVNDVFBfU09DS0VUX1VOTE9DSyhzbywgMSk7CiAJCQkJfQpAQCAtNDI4NywxNCAr
NDczNSwxMiBAQCBzY3RwX2Fib3J0X2FuX2Fzc29jaWF0aW9uKHN0cnVjdCBzY3RwX2lucGNiICpp
bnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJCX0KIAkJfQogCQlyZXR1cm47Ci0JfSBlbHNl
IHsKLQkJc3RjYi0+YXNvYy5zdGF0ZSB8PSBTQ1RQX1NUQVRFX1dBU19BQk9SVEVEOwogCX0KIAkv
KiBub3RpZnkgdGhlIHBlZXIgKi8KIAlzY3RwX3NlbmRfYWJvcnRfdGNiKHN0Y2IsIG9wX2Vyciwg
c29fbG9ja2VkKTsKIAlTQ1RQX1NUQVRfSU5DUl9DT1VOVEVSMzIoc2N0cHNfYWJvcnRlZCk7Ci0J
aWYgKChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9PUEVOKSB8fAot
CSAgICAoU0NUUF9HRVRfU1RBVEUoJnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05f
UkVDRUlWRUQpKSB7CisJaWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX09Q
RU4pIHx8CisJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dO
X1JFQ0VJVkVEKSkgewogCQlTQ1RQX1NUQVRfREVDUl9HQVVHRTMyKHNjdHBzX2N1cnJlc3RhYik7
CiAJfQogCS8qIG5vdGlmeSB0aGUgdWxwICovCkBAIC00MzA1LDcgKzQ3NTEsNyBAQCBzY3RwX2Fi
b3J0X2FuX2Fzc29jaWF0aW9uKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3Rj
YiAqc3RjYiwKICNpZmRlZiBTQ1RQX0FTT0NMT0dfT0ZfVFNOUwogCXNjdHBfcHJpbnRfb3V0X3Ry
YWNrX2xvZyhzdGNiKTsKICNlbmRpZgotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVk
KFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogCWlmICghc29fbG9ja2VkKSB7CiAJCWF0b21pY19hZGRfaW50KCZz
dGNiLT5hc29jLnJlZmNudCwgMSk7CiAJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKQEAgLTQzMTYs
NyArNDc2Miw3IEBAIHNjdHBfYWJvcnRfYW5fYXNzb2NpYXRpb24oc3RydWN0IHNjdHBfaW5wY2Ig
KmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogI2VuZGlmCiAJKHZvaWQpc2N0cF9mcmVlX2Fz
c29jKGlucCwgc3RjYiwgU0NUUF9OT1JNQUxfUFJPQywKIAkgICAgICAgICAgICAgICAgICAgICAg
U0NUUF9GUk9NX1NDVFBVVElMICsgU0NUUF9MT0NfNSk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18p
IHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJaWYgKCFzb19sb2NrZWQpIHsKIAkJU0NUUF9T
T0NLRVRfVU5MT0NLKHNvLCAxKTsKIAl9CkBAIC00MzI4LDcgKzQ3NzQsNyBAQCBzY3RwX2hhbmRs
ZV9vb3RiKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogICAgICAgICAg
ICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIgKnNyYywgc3RydWN0IHNvY2thZGRyICpkc3QsCiAgICAg
ICAgICAgICAgICAgIHN0cnVjdCBzY3RwaGRyICpzaCwgc3RydWN0IHNjdHBfaW5wY2IgKmlucCwK
ICAgICAgICAgICAgICAgICAgc3RydWN0IG1idWYgKmNhdXNlLAotI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKICAgICAgICAgICAgICAgICAgdWludDhfdCBtZmxvd3R5cGUsIHVpbnQzMl90IG1mbG93aWQs
IHVpbnQxNl90IGZpYm51bSwKICNlbmRpZgogICAgICAgICAgICAgICAgICB1aW50MzJfdCB2cmZf
aWQsIHVpbnQxNl90IHBvcnQpCkBAIC00MzQxLDEyICs0Nzg3LDEyIEBAIHNjdHBfaGFuZGxlX29v
dGIoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJLyogR2VuZXJhdGUg
YSBUTyBhZGRyZXNzIGZvciBmdXR1cmUgcmVmZXJlbmNlICovCiAJaWYgKGlucCAmJiAoaW5wLT5z
Y3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfU09DS0VUX0dPTkUpKSB7CiAJCWlmIChMSVNUX0VN
UFRZKCZpbnAtPnNjdHBfYXNvY19saXN0KSkgewotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lm
IGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJU0NUUF9T
T0NLRVRfTE9DSyhTQ1RQX0lOUF9TTyhpbnApLCAxKTsKICNlbmRpZgogCQkJc2N0cF9pbnBjYl9m
cmVlKGlucCwgU0NUUF9GUkVFX1NIT1VMRF9VU0VfQUJPUlQsCiAJCQkJCVNDVFBfQ0FMTEVEX0RJ
UkVDVExZX05PQ01QU0VUKTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9f
QVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCVNDVFBfU09DS0VUX1VOTE9D
SyhTQ1RQX0lOUF9TTyhpbnApLCAxKTsKICNlbmRpZgogCQl9CkBAIC00Mzc4LDcgKzQ4MjQsNyBA
QCBzY3RwX2hhbmRsZV9vb3RiKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0
LAogCQkJcmV0dXJuOwogCQljYXNlIFNDVFBfU0hVVERPV05fQUNLOgogCQkJc2N0cF9zZW5kX3No
dXRkb3duX2NvbXBsZXRlMihzcmMsIGRzdCwgc2gsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykK
KyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJ
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQsIGZpYm51bSwK
ICNlbmRpZgogCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2cmZfaWQsIHBvcnQpOwpA
QCAtNDM5NCw3ICs0ODQwLDcgQEAgc2N0cF9oYW5kbGVfb290YihzdHJ1Y3QgbWJ1ZiAqbSwgaW50
IGlwaGxlbiwgaW50IG9mZnNldCwKIAkgICAgKChTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfYmxhY2to
b2xlKSA9PSAxKSAmJgogCSAgICAgKGNvbnRhaW5zX2luaXRfY2h1bmsgPT0gMCkpKSB7CiAJCXNj
dHBfc2VuZF9hYm9ydChtLCBpcGhsZW4sIHNyYywgZHN0LCBzaCwgMCwgY2F1c2UsCi0jaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogCQkgICAgICAgICAgICAgICAgbWZsb3d0eXBlLCBtZmxvd2lkLCBmaWJu
dW0sCiAjZW5kaWYKIAkJICAgICAgICAgICAgICAgIHZyZl9pZCwgcG9ydCk7CkBAIC00NTgxLDcg
KzUwMjcsNyBAQCB2b2lkCiBzY3RwX3ByaW50X2FkZHJlc3Moc3RydWN0IHNvY2thZGRyICpzYSkK
IHsKICNpZmRlZiBJTkVUNgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92
ZXJzaW9uID49IDcwMDAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAJY2hhciBpcDZidWZbSU5FVDZfQUREUlNUUkxFTl07CiAjZW5kaWYKICNl
bmRpZgpAQCAtNDYwNiw3ICs1MDUyLDcgQEAgc2N0cF9wcmludF9hZGRyZXNzKHN0cnVjdCBzb2Nr
YWRkciAqc2EpCiAJCQkgICAgbnRvaHMoc2luNi0+c2luNl9wb3J0KSwKIAkJCSAgICBzaW42LT5z
aW42X3Njb3BlX2lkKTsKICNlbHNlCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVl
QlNEX3ZlcnNpb24gPj0gNzAwMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKIAkJU0NUUF9QUklOVEYoIklQdjYgYWRkcmVzczogJXM6cG9ydDol
ZCBzY29wZToldVxuIiwKIAkJCSAgICBpcDZfc3ByaW50ZihpcDZidWYsICZzaW42LT5zaW42X2Fk
ZHIpLAogCQkJICAgIG50b2hzKHNpbjYtPnNpbjZfcG9ydCksCkBAIC00NjY0LDIxICs1MTEwLDE1
IEBAIHNjdHBfcHVsbF9vZmZfY29udHJvbF90b19uZXdfaW5wKHN0cnVjdCBzY3RwX2lucGNiICpv
bGRfaW5wLAogCXN0cnVjdCBzY3RwX3F1ZXVlZF90b19yZWFkICpjb250cm9sLCAqbmN0bDsKIAlz
dHJ1Y3Qgc2N0cF9yZWFkaGVhZCB0bXBfcXVldWU7CiAJc3RydWN0IG1idWYgKm07Ci0jaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pCisjaWYgKGRlZmluZWQoX19G
cmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSkgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKIAlpbnQgZXJyb3IgPSAwOwogI2VuZGlmCiAKIAlvbGRfc28gPSBvbGRfaW5wLT5zY3RwX3Nv
Y2tldDsKIAluZXdfc28gPSBuZXdfaW5wLT5zY3RwX3NvY2tldDsKIAlUQUlMUV9JTklUKCZ0bXBf
cXVldWUpOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKQot
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uIDwgNzAwMDAwCi0J
U09DS0JVRl9MT0NLKCYob2xkX3NvLT5zb19yY3YpKTsKLSNlbmRpZgorI2lmIChkZWZpbmVkKF9f
RnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAJZXJyb3IgPSBzYmxvY2soJm9sZF9zby0+c29fcmN2LCB3YWl0ZmxhZ3MpOwotI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uIDwgNzAwMDAwCi0JU09DS0JV
Rl9VTkxPQ0soJihvbGRfc28tPnNvX3JjdikpOwotI2VuZGlmCiAJaWYgKGVycm9yKSB7CiAJCS8q
IEdhaywgY2FuJ3QgZ2V0IHNibG9jaywgd2UgaGF2ZSBhIHByb2JsZW0uCiAJCSAqIGRhdGEgd2ls
bCBiZSBsZWZ0IHN0cmFuZGVkLi4gYW5kIHdlCkBAIC00NzE2LDE4ICs1MTU2LDEyIEBAIHNjdHBf
cHVsbF9vZmZfY29udHJvbF90b19uZXdfaW5wKHN0cnVjdCBzY3RwX2lucGNiICpvbGRfaW5wLAog
CX0KIAlTQ1RQX0lOUF9SRUFEX1VOTE9DSyhvbGRfaW5wKTsKIAkvKiBSZW1vdmUgdGhlIHNiLWxv
Y2sgb24gdGhlIG9sZCBzb2NrZXQgKi8KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0Zy
ZWVCU0RfdmVyc2lvbiA8IDcwMDAwMAotCVNPQ0tCVUZfTE9DSygmKG9sZF9zby0+c29fcmN2KSk7
Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzYnVubG9jaygmb2xkX3NvLT5zb19yY3YsIDEp
OwogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJc2J1bmxvY2soJm9sZF9zby0+c29f
cmN2KTsKLSNlbmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJz
aW9uIDwgNzAwMDAwCi0JU09DS0JVRl9VTkxPQ0soJihvbGRfc28tPnNvX3JjdikpOwogI2VuZGlm
CiAJLyogTm93IHdlIG1vdmUgdGhlbSBvdmVyIHRvIHRoZSBuZXcgc29ja2V0IGJ1ZmZlciAqLwog
CVNDVFBfSU5QX1JFQURfTE9DSyhuZXdfaW5wKTsKQEAgLTQ3NTIsMTMgKzUxODYsMTMgQEAgdm9p
ZAogc2N0cF93YWtldXBfdGhlX3JlYWRfc29ja2V0KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAg
ICAgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogICAgIGludCBzb19sb2NrZWQKLSNpZiAhZGVmaW5l
ZChfX0FQUExFX18pICYmICFkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmICEoZGVm
aW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pKQogICAgIFNDVFBfVU5V
U0VECiAjZW5kaWYKICkKIHsKIAlpZiAoKGlucCAhPSBOVUxMKSAmJiAoaW5wLT5zY3RwX3NvY2tl
dCAhPSBOVUxMKSkgewotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09f
TE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCQlzdHJ1Y3Qgc29ja2V0ICpzbzsKIAogCQlzbyA9IFNDVFBfSU5QX1NPKGlucCk7
CkBAIC00Nzc5LDcgKzUyMTMsNyBAQCBzY3RwX3dha2V1cF90aGVfcmVhZF9zb2NrZXQoc3RydWN0
IHNjdHBfaW5wY2IgKmlucCwKIAkJfQogI2VuZGlmCiAJCXNjdHBfc29yd2FrZXVwKGlucCwgaW5w
LT5zY3RwX3NvY2tldCk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9T
T19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAJCWlmICghc29fbG9ja2VkKSB7CiAJCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28s
IDEpOwogCQl9CkBAIC00ODkzLDExICs1MzI3LDcgQEAgc2N0cF9hZGRfdG9fcmVhZHEoc3RydWN0
IHNjdHBfaW5wY2IgKmlucCwKICAgICBzdHJ1Y3Qgc29ja2J1ZiAqc2IsCiAgICAgaW50IGVuZCwK
ICAgICBpbnQgaW5wX3JlYWRfbG9ja19oZWxkLAotICAgIGludCBzb19sb2NrZWQKLSNpZiAhZGVm
aW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQotICAgIFND
VFBfVU5VU0VECi0jZW5kaWYKLSAgICApCisgICAgaW50IHNvX2xvY2tlZCkKIHsKIAkvKgogCSAq
IEhlcmUgd2UgbXVzdCBwbGFjZSB0aGUgY29udHJvbCBvbiB0aGUgZW5kIG9mIHRoZSBzb2NrZXQg
cmVhZApAQCAtNDkxMyw3ICs1MzQzLDcgQEAgc2N0cF9hZGRfdG9fcmVhZHEoc3RydWN0IHNjdHBf
aW5wY2IgKmlucCwKICNlbmRpZgogCQlyZXR1cm47CiAJfQotI2lmIGRlZmluZWQoX19BUFBMRV9f
KQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWlm
IChzb19sb2NrZWQpIHsKIAkJc2N0cF9sb2NrX2Fzc2VydChTQ1RQX0lOUF9TTyhpbnApKTsKIAl9
IGVsc2UgewpAQCAtNDkyMywxMiArNTM1MywxNCBAQCBzY3RwX2FkZF90b19yZWFkcShzdHJ1Y3Qg
c2N0cF9pbnBjYiAqaW5wLAogCWlmIChpbnBfcmVhZF9sb2NrX2hlbGQgPT0gMCkKIAkJU0NUUF9J
TlBfUkVBRF9MT0NLKGlucCk7CiAJaWYgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdT
X1NPQ0tFVF9DQU5UX1JFQUQpIHsKLQkJc2N0cF9mcmVlX3JlbW90ZV9hZGRyKGNvbnRyb2wtPndo
b0Zyb20pOwotCQlpZiAoY29udHJvbC0+ZGF0YSkgewotCQkJc2N0cF9tX2ZyZWVtKGNvbnRyb2wt
PmRhdGEpOwotCQkJY29udHJvbC0+ZGF0YSA9IE5VTEw7CisJCWlmICghY29udHJvbC0+b25fc3Ry
bV9xKSB7CisJCQlzY3RwX2ZyZWVfcmVtb3RlX2FkZHIoY29udHJvbC0+d2hvRnJvbSk7CisJCQlp
ZiAoY29udHJvbC0+ZGF0YSkgeworCQkJCXNjdHBfbV9mcmVlbShjb250cm9sLT5kYXRhKTsKKwkJ
CQljb250cm9sLT5kYXRhID0gTlVMTDsKKwkJCX0KKwkJCXNjdHBfZnJlZV9hX3JlYWRxKHN0Y2Is
IGNvbnRyb2wpOwogCQl9Ci0JCXNjdHBfZnJlZV9hX3JlYWRxKHN0Y2IsIGNvbnRyb2wpOwogCQlp
ZiAoaW5wX3JlYWRfbG9ja19oZWxkID09IDApCiAJCQlTQ1RQX0lOUF9SRUFEX1VOTE9DSyhpbnAp
OwogCQlyZXR1cm47CkBAIC00OTczLDggKzU0MDUsMTAgQEAgc2N0cF9hZGRfdG9fcmVhZHEoc3Ry
dWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJY29udHJvbC0+dGFpbF9tYnVmID0gcHJldjsKIAl9IGVs
c2UgewogCQkvKiBFdmVyeXRoaW5nIGdvdCBjb2xsYXBzZWQgb3V0Pz8gKi8KLQkJc2N0cF9mcmVl
X3JlbW90ZV9hZGRyKGNvbnRyb2wtPndob0Zyb20pOwotCQlzY3RwX2ZyZWVfYV9yZWFkcShzdGNi
LCBjb250cm9sKTsKKwkJaWYgKCFjb250cm9sLT5vbl9zdHJtX3EpIHsKKwkJCXNjdHBfZnJlZV9y
ZW1vdGVfYWRkcihjb250cm9sLT53aG9Gcm9tKTsKKwkJCXNjdHBfZnJlZV9hX3JlYWRxKHN0Y2Is
IGNvbnRyb2wpOworCQl9CiAJCWlmIChpbnBfcmVhZF9sb2NrX2hlbGQgPT0gMCkKIAkJCVNDVFBf
SU5QX1JFQURfVU5MT0NLKGlucCk7CiAJCXJldHVybjsKQEAgLTUwODUsMTEgKzU1MTksNyBAQCBz
Y3RwX2ZyZWVfYnVmc3BhY2Uoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9hc3Nv
Y2lhdGlvbiAqYXNvYywKIAogaW50CiBzY3RwX3JlbGVhc2VfcHJfc2N0cF9jaHVuayhzdHJ1Y3Qg
c2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX3RtaXRfY2h1bmsgKnRwMSwKLQkJCSAgIHVpbnQ4
X3Qgc2VudCwgaW50IHNvX2xvY2tlZAotI2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmlu
ZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCi0JCQkgICBTQ1RQX1VOVVNFRAotI2VuZGlmCi0JKQor
CQkJICAgdWludDhfdCBzZW50LCBpbnQgc29fbG9ja2VkKQogewogCXN0cnVjdCBzY3RwX3N0cmVh
bV9vdXQgKnN0cnE7CiAJc3RydWN0IHNjdHBfdG1pdF9jaHVuayAqY2hrID0gTlVMTCwgKnRwMjsK
QEAgLTUxMDEsNyArNTUzMSw3IEBAIHNjdHBfcmVsZWFzZV9wcl9zY3RwX2NodW5rKHN0cnVjdCBz
Y3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfdG1pdF9jaHVuayAqdHAxLAogCWludCBub3Rkb25l
OwogCWludCBkb193YWtldXBfcm91dGluZSA9IDA7CiAKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykK
KyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlpZiAo
c29fbG9ja2VkKSB7CiAJCXNjdHBfbG9ja19hc3NlcnQoU0NUUF9JTlBfU08oc3RjYi0+c2N0cF9l
cCkpOwogCX0gZWxzZSB7CkBAIC01MjU4LDcgKzU2ODgsNyBAQCBzY3RwX3JlbGVhc2VfcHJfc2N0
cF9jaHVuayhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX3RtaXRfY2h1bmsgKnRw
MSwKIAkJCQljaGstPnJlYy5kYXRhLmNvbnRleHQgPSBzcC0+Y29udGV4dDsKIAkJCQljaGstPmZs
YWdzID0gc3AtPmFjdF9mbGFnczsKIAkJCQljaGstPndob1RvID0gTlVMTDsKLSNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fUGFuZGFfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCWNoay0+cmVjLmRhdGEudHNuID0g
YXRvbWljX2ZldGNoYWRkX2ludCgmc3RjYi0+YXNvYy5zZW5kaW5nX3NlcSwgMSk7CiAjZWxzZQog
CQkJCWNoay0+cmVjLmRhdGEudHNuID0gc3RjYi0+YXNvYy5zZW5kaW5nX3NlcSsrOwpAQCAtNTMw
Miw3ICs1NzMyLDcgQEAgc2N0cF9yZWxlYXNlX3ByX3NjdHBfY2h1bmsoc3RydWN0IHNjdHBfdGNi
ICpzdGNiLCBzdHJ1Y3Qgc2N0cF90bWl0X2NodW5rICp0cDEsCiAJCVNDVFBfVENCX1NFTkRfVU5M
T0NLKHN0Y2IpOwogCX0KIAlpZiAoZG9fd2FrZXVwX3JvdXRpbmUpIHsKLSNpZiBkZWZpbmVkKF9f
QVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9f
QVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJc3RydWN0IHNvY2tldCAqc287
CiAKIAkJc28gPSBTQ1RQX0lOUF9TTyhzdGNiLT5zY3RwX2VwKTsKQEAgLTUzMjAsNyArNTc1MCw3
IEBAIHNjdHBfcmVsZWFzZV9wcl9zY3RwX2NodW5rKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3Ry
dWN0IHNjdHBfdG1pdF9jaHVuayAqdHAxLAogCQl9CiAjZW5kaWYKIAkJc2N0cF9zb3d3YWtldXAo
c3RjYi0+c2N0cF9lcCwgc3RjYi0+c2N0cF9zb2NrZXQpOwotI2lmIGRlZmluZWQoX19BUFBMRV9f
KSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlpZiAoIXNvX2xvY2tlZCkgewogCQkJU0NU
UF9TT0NLRVRfVU5MT0NLKHNvLCAxKTsKIAkJfQpAQCAtNTM1NSwxMCArNTc4NSw2IEBAIHNjdHBf
ZmluZF9pZmFfaW5fZXAoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNvY2thZGRyICph
ZGRyLAogCQkJaWYgKCgoc3RydWN0IHNvY2thZGRyX2luICopYWRkciktPnNpbl9hZGRyLnNfYWRk
ciA9PQogCQkJICAgIGxhZGRyLT5pZmEtPmFkZHJlc3Muc2luLnNpbl9hZGRyLnNfYWRkcikgewog
CQkJCS8qIGZvdW5kIGhpbS4gKi8KLQkJCQlpZiAoaG9sZHNfbG9jayA9PSAwKSB7Ci0JCQkJCVND
VFBfSU5QX1JVTkxPQ0soaW5wKTsKLQkJCQl9Ci0JCQkJcmV0dXJuIChsYWRkci0+aWZhKTsKIAkJ
CQlicmVhazsKIAkJCX0KIAkJfQpAQCAtNTM2OCwxMCArNTc5NCw2IEBAIHNjdHBfZmluZF9pZmFf
aW5fZXAoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNvY2thZGRyICphZGRyLAogCQkJ
aWYgKFNDVFA2X0FSRV9BRERSX0VRVUFMKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopYWRkciwKIAkJ
CQkJCSAmbGFkZHItPmlmYS0+YWRkcmVzcy5zaW42KSkgewogCQkJCS8qIGZvdW5kIGhpbS4gKi8K
LQkJCQlpZiAoaG9sZHNfbG9jayA9PSAwKSB7Ci0JCQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsK
LQkJCQl9Ci0JCQkJcmV0dXJuIChsYWRkci0+aWZhKTsKIAkJCQlicmVhazsKIAkJCX0KIAkJfQpA
QCAtNTM4MCwxMCArNTgwMiw2IEBAIHNjdHBfZmluZF9pZmFfaW5fZXAoc3RydWN0IHNjdHBfaW5w
Y2IgKmlucCwgc3RydWN0IHNvY2thZGRyICphZGRyLAogCQlpZiAoYWRkci0+c2FfZmFtaWx5ID09
IEFGX0NPTk4pIHsKIAkJCWlmICgoKHN0cnVjdCBzb2NrYWRkcl9jb25uICopYWRkciktPnNjb25u
X2FkZHIgPT0gbGFkZHItPmlmYS0+YWRkcmVzcy5zY29ubi5zY29ubl9hZGRyKSB7CiAJCQkJLyog
Zm91bmQgaGltLiAqLwotCQkJCWlmIChob2xkc19sb2NrID09IDApIHsKLQkJCQkJU0NUUF9JTlBf
UlVOTE9DSyhpbnApOwotCQkJCX0KLQkJCQlyZXR1cm4gKGxhZGRyLT5pZmEpOwogCQkJCWJyZWFr
OwogCQkJfQogCQl9CkBAIC01MzkyLDcgKzU4MTAsMTEgQEAgc2N0cF9maW5kX2lmYV9pbl9lcChz
dHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsCiAJaWYgKGhvbGRz
X2xvY2sgPT0gMCkgewogCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CiAJfQotCXJldHVybiAoTlVM
TCk7CisJaWYgKGxhZGRyICE9IE5VTEwpIHsKKwkJcmV0dXJuIChsYWRkci0+aWZhKTsKKwl9IGVs
c2UgeworCQlyZXR1cm4gKE5VTEwpOworCX0KIH0KIAogdWludDMyX3QKQEAgLTU0MTUsNyArNTgz
Nyw3IEBAIHNjdHBfZ2V0X2lmYV9oYXNoX3ZhbChzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIpCiAJCXVp
bnQzMl90IGhhc2hfb2ZfYWRkcjsKIAogCQlzaW42ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilh
ZGRyOwotI2lmICFkZWZpbmVkKF9fV2luZG93c19fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9v
c19GcmVlQlNEKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19EYXJ3aW4pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgIWRlZmluZWQoX1dJTjMyKSAmJiAhKGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykpICYmICFkZWZpbmVkKF9f
QVBQTEVfXykKIAkJaGFzaF9vZl9hZGRyID0gKHNpbjYtPnNpbjZfYWRkci5zNl9hZGRyMzJbMF0g
KwogCQkJCXNpbjYtPnNpbjZfYWRkci5zNl9hZGRyMzJbMV0gKwogCQkJCXNpbjYtPnNpbjZfYWRk
ci5zNl9hZGRyMzJbMl0gKwpAQCAtNTQ1NSw4ICs1ODc3LDExIEBAIHNjdHBfZmluZF9pZmFfYnlf
YWRkcihzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIHVpbnQzMl90IHZyZl9pZCwgaW50IGhvbGRzX2xv
Y2spCiAJc3RydWN0IHNjdHBfaWZhbGlzdCAqaGFzaF9oZWFkOwogCXVpbnQzMl90IGhhc2hfb2Zf
YWRkcjsKIAotCWlmIChob2xkc19sb2NrID09IDApCisJaWYgKGhvbGRzX2xvY2sgPT0gMCkgewog
CQlTQ1RQX0lQSV9BRERSX1JMT0NLKCk7CisJfSBlbHNlIHsKKwkJU0NUUF9JUElfQUREUl9MT0NL
X0FTU0VSVCgpOworCX0KIAogCXZyZiA9IHNjdHBfZmluZF92cmYodnJmX2lkKTsKIAlpZiAodnJm
ID09IE5VTEwpIHsKQEAgLTU0ODcsOSArNTkxMiw2IEBAIHNjdHBfZmluZF9pZmFfYnlfYWRkcihz
dHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIHVpbnQzMl90IHZyZl9pZCwgaW50IGhvbGRzX2xvY2spCiAJ
CQlpZiAoKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilhZGRyKS0+c2luX2FkZHIuc19hZGRyID09CiAJ
CQkgICAgc2N0cF9pZmFwLT5hZGRyZXNzLnNpbi5zaW5fYWRkci5zX2FkZHIpIHsKIAkJCQkvKiBm
b3VuZCBoaW0uICovCi0JCQkJaWYgKGhvbGRzX2xvY2sgPT0gMCkKLQkJCQkJU0NUUF9JUElfQURE
Ul9SVU5MT0NLKCk7Ci0JCQkJcmV0dXJuIChzY3RwX2lmYXApOwogCQkJCWJyZWFrOwogCQkJfQog
CQl9CkBAIC01NDk5LDkgKzU5MjEsNiBAQCBzY3RwX2ZpbmRfaWZhX2J5X2FkZHIoc3RydWN0IHNv
Y2thZGRyICphZGRyLCB1aW50MzJfdCB2cmZfaWQsIGludCBob2xkc19sb2NrKQogCQkJaWYgKFND
VFA2X0FSRV9BRERSX0VRVUFMKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopYWRkciwKIAkJCQkJCSAm
c2N0cF9pZmFwLT5hZGRyZXNzLnNpbjYpKSB7CiAJCQkJLyogZm91bmQgaGltLiAqLwotCQkJCWlm
IChob2xkc19sb2NrID09IDApCi0JCQkJCVNDVFBfSVBJX0FERFJfUlVOTE9DSygpOwotCQkJCXJl
dHVybiAoc2N0cF9pZmFwKTsKIAkJCQlicmVhazsKIAkJCX0KIAkJfQpAQCAtNTUxMCw5ICs1OTI5
LDYgQEAgc2N0cF9maW5kX2lmYV9ieV9hZGRyKHN0cnVjdCBzb2NrYWRkciAqYWRkciwgdWludDMy
X3QgdnJmX2lkLCBpbnQgaG9sZHNfbG9jaykKIAkJaWYgKGFkZHItPnNhX2ZhbWlseSA9PSBBRl9D
T05OKSB7CiAJCQlpZiAoKChzdHJ1Y3Qgc29ja2FkZHJfY29ubiAqKWFkZHIpLT5zY29ubl9hZGRy
ID09IHNjdHBfaWZhcC0+YWRkcmVzcy5zY29ubi5zY29ubl9hZGRyKSB7CiAJCQkJLyogZm91bmQg
aGltLiAqLwotCQkJCWlmIChob2xkc19sb2NrID09IDApCi0JCQkJCVNDVFBfSVBJX0FERFJfUlVO
TE9DSygpOwotCQkJCXJldHVybiAoc2N0cF9pZmFwKTsKIAkJCQlicmVhazsKIAkJCX0KIAkJfQpA
QCAtNTUyMCw3ICs1OTM2LDcgQEAgc2N0cF9maW5kX2lmYV9ieV9hZGRyKHN0cnVjdCBzb2NrYWRk
ciAqYWRkciwgdWludDMyX3QgdnJmX2lkLCBpbnQgaG9sZHNfbG9jaykKIAl9CiAJaWYgKGhvbGRz
X2xvY2sgPT0gMCkKIAkJU0NUUF9JUElfQUREUl9SVU5MT0NLKCk7Ci0JcmV0dXJuIChOVUxMKTsK
KwlyZXR1cm4gKHNjdHBfaWZhcCk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC01NTI4LDYgKzU5NDQs
OSBAQCBzY3RwX3VzZXJfcmN2ZChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQzMl90ICpmcmVl
ZF9zb19mYXIsIGludCBob2xkX3Jsb2NrLAogCSAgICAgICB1aW50MzJfdCByd25kX3JlcSkKIHsK
IAkvKiBVc2VyIHB1bGxlZCBzb21lIGRhdGEsIGRvIHdlIG5lZWQgYSByd25kIHVwZGF0ZT8gKi8K
KyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCXN0
cnVjdCBlcG9jaF90cmFja2VyIGV0OworI2VuZGlmCiAJaW50IHJfdW5sb2NrZWQgPSAwOwogCXVp
bnQzMl90IGRpZiwgcnduZDsKIAlzdHJ1Y3Qgc29ja2V0ICpzbyA9IE5VTEw7CkBAIC01NTM3LDkg
KzU5NTYsOCBAQCBzY3RwX3VzZXJfcmN2ZChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQzMl90
ICpmcmVlZF9zb19mYXIsIGludCBob2xkX3Jsb2NrLAogCiAJYXRvbWljX2FkZF9pbnQoJnN0Y2It
PmFzb2MucmVmY250LCAxKTsKIAotCWlmIChzdGNiLT5hc29jLnN0YXRlICYgKFNDVFBfU1RBVEVf
QUJPVVRfVE9fQkVfRlJFRUQgfAotCQkJCVNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQgfAot
CQkJCVNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQpKSB7CisJaWYgKChTQ1RQX0dFVF9TVEFU
RShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX0FDS19TRU5UKSB8fAorCSAgICAoc3RjYi0+
YXNvYy5zdGF0ZSAmIChTQ1RQX1NUQVRFX0FCT1VUX1RPX0JFX0ZSRUVEIHwgU0NUUF9TVEFURV9T
SFVURE9XTl9SRUNFSVZFRCkpKSB7CiAJCS8qIFByZS1jaGVjayBJZiB3ZSBhcmUgZnJlZWluZyBu
byB1cGRhdGUgKi8KIAkJZ290byBub19sb2NrOwogCX0KQEAgLTU1ODQsMTEgKzYwMDIsMTcgQEAg
c2N0cF91c2VyX3JjdmQoc3RydWN0IHNjdHBfdGNiICpzdGNiLCB1aW50MzJfdCAqZnJlZWRfc29f
ZmFyLCBpbnQgaG9sZF9ybG9jaywKIAkJCWdvdG8gb3V0OwogCQl9CiAJCVNDVFBfU1RBVF9JTkNS
KHNjdHBzX3d1X3NhY2tzX3NlbnQpOworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCisJCU5FVF9FUE9DSF9FTlRFUihldCk7CisjZW5kaWYKIAkJc2N0
cF9zZW5kX3NhY2soc3RjYiwgU0NUUF9TT19MT0NLRUQpOwogCiAJCXNjdHBfY2h1bmtfb3V0cHV0
KHN0Y2ItPnNjdHBfZXAsIHN0Y2IsCiAJCQkJICBTQ1RQX09VVFBVVF9GUk9NX1VTUl9SQ1ZELCBT
Q1RQX1NPX0xPQ0tFRCk7CiAJCS8qIG1ha2Ugc3VyZSBubyB0aW1lciBpcyBydW5uaW5nICovCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJTkVU
X0VQT0NIX0VYSVQoZXQpOworI2VuZGlmCiAJCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZ
UEVfUkVDViwgc3RjYi0+c2N0cF9lcCwgc3RjYiwgTlVMTCwKIAkJICAgICAgICAgICAgICAgIFND
VFBfRlJPTV9TQ1RQVVRJTCArIFNDVFBfTE9DXzYpOwogCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7
CkBAIC01NjI2LDggKzYwNTAsOSBAQCBzY3RwX3NvcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzbywK
IAkgKgogCSAqLwogCXN0cnVjdCBzY3RwX2lucGNiICppbnAgPSBOVUxMOwotCWludCBteV9sZW4g
PSAwOwotCWludCBjcF9sZW4gPSAwLCBlcnJvciA9IDA7CisJc3NpemVfdCBteV9sZW4gPSAwOwor
CXNzaXplX3QgY3BfbGVuID0gMDsKKwlpbnQgZXJyb3IgPSAwOwogCXN0cnVjdCBzY3RwX3F1ZXVl
ZF90b19yZWFkICpjb250cm9sID0gTlVMTCwgKmN0bCA9IE5VTEwsICpueHQgPSBOVUxMOwogCXN0
cnVjdCBtYnVmICptID0gTlVMTDsKIAlzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IgPSBOVUxMOwpAQCAt
NTYzNiw3ICs2MDYxLDcgQEAgc2N0cF9zb3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc28sCiAJaW50
IG91dF9mbGFncyA9IDAsIGluX2ZsYWdzID0gMDsKIAlpbnQgYmxvY2tfYWxsb3dlZCA9IDE7CiAJ
dWludDMyX3QgZnJlZWRfc29fZmFyID0gMDsKLQl1aW50MzJfdCBjb3BpZWRfc29fZmFyID0gMDsK
Kwlzc2l6ZV90IGNvcGllZF9zb19mYXIgPSAwOwogCWludCBpbl9lZW9yX21vZGUgPSAwOwogCWlu
dCBub19yY3ZfbmVlZGVkID0gMDsKIAl1aW50MzJfdCByd25kX3JlcSA9IDA7CkBAIC01NjQ0LDcg
KzYwNjksNyBAQCBzY3RwX3NvcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzbywKIAlpbnQgaG9sZF9y
bG9jayA9IDA7CiAJc3NpemVfdCBzbGVuID0gMDsKIAl1aW50MzJfdCBoZWxkX2xlbmd0aCA9IDA7
Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNzAwMDAw
CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlp
bnQgc29ja2J1Zl9sb2NrID0gMDsKICNlbmRpZgogCkBAIC01NjYwLDcgKzYwODUsNyBAQCBzY3Rw
X3NvcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzbywKIAl9IGVsc2UgewogCQlpbl9mbGFncyA9IDA7
CiAJfQotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmIGRlZmluZWQoQVBQTEVfTEVPUEFSRCkKIAlzbGVu
ID0gdWlvLT51aW9fcmVzaWQ7CiAjZWxzZQpAQCAtNTY4MCw3ICs2MTA1LDcgQEAgc2N0cF9zb3Jl
Y3Ztc2coc3RydWN0IHNvY2tldCAqc28sCiAJCXJldHVybiAoRUlOVkFMKTsKIAl9CiAJaWYgKChp
bl9mbGFncyAmIChNU0dfRE9OVFdBSVQKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0Zy
ZWVCU0RfdmVyc2lvbiA+IDUwMDAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAJCQkgfCBNU0dfTkJJTwogI2VuZGlmCiAJCSAgICAgKSkgfHwK
QEAgLTU2OTksNyArNjEyNCw3IEBAIHNjdHBfc29yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvLAog
CQlyd25kX3JlcSA9IFNDVFBfTUlOX1JXTkQ7CiAJaW5fZWVvcl9tb2RlID0gc2N0cF9pc19mZWF0
dXJlX29uKGlucCwgU0NUUF9QQ0JfRkxBR1NfRVhQTElDSVRfRU9SKTsKIAlpZiAoU0NUUF9CQVNF
X1NZU0NUTChzY3RwX2xvZ2dpbmdfbGV2ZWwpICYgU0NUUF9SRUNWX1JXTkRfTE9HR0lOR19FTkFC
TEUpIHsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZiBkZWZpbmVkKEFQUExFX0xFT1BBUkQpCiAJCXNj
dHBfbWlzY19pbnRzKFNDVFBfU09SRUNWX0VOVEVSLAogCQkJICAgICAgIHJ3bmRfcmVxLCBpbl9l
ZW9yX21vZGUsIHNvLT5zb19yY3Yuc2JfY2MsIHVpby0+dWlvX3Jlc2lkKTsKQEAgLTU3MTIsMTIg
KzYxMzcsMTIgQEAgc2N0cF9zb3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc28sCiAJCQkgICAgICAg
cnduZF9yZXEsIGluX2Vlb3JfbW9kZSwgc28tPnNvX3Jjdi5zYl9jYywgKHVpbnQzMl90KXVpby0+
dWlvX3Jlc2lkKTsKICNlbmRpZgogCX0KLSNpZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19G
cmVlQlNEX3ZlcnNpb24gPCA3MDAwMDApIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiBk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJU09DS0JVRl9MT0NLKCZzby0+c29fcmN2KTsKIAlob2xk
X3NibG9jayA9IDE7CiAjZW5kaWYKIAlpZiAoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2xvZ2dpbmdf
bGV2ZWwpICZTQ1RQX1JFQ1ZfUldORF9MT0dHSU5HX0VOQUJMRSkgewotI2lmIGRlZmluZWQoX19B
UFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogI2lmIGRlZmluZWQoQVBQTEVfTEVPUEFSRCkKIAkJc2N0cF9taXNjX2ludHMoU0NUUF9TT1JF
Q1ZfRU5URVJQTCwKIAkJCSAgICAgICByd25kX3JlcSwgYmxvY2tfYWxsb3dlZCwgc28tPnNvX3Jj
di5zYl9jYywgdWlvLT51aW9fcmVzaWQpOwpAQCAtNTczMSwzNCArNjE1NiwzMCBAQCBzY3RwX3Nv
cmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzbywKICNlbmRpZgogCX0KIAotI2lmIGRlZmluZWQoX19B
UFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCWVycm9yID0gc2Jsb2NrKCZzby0+c29fcmN2LCBTQkxPQ0tXQUlUKGluX2ZsYWdzKSk7CiAj
ZW5kaWYKIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAllcnJvciA9IHNibG9jaygmc28tPnNvX3Jj
diwgKGJsb2NrX2FsbG93ZWQgPyBTQkxfV0FJVCA6IDApKTsKICNlbmRpZgogCWlmIChlcnJvcikg
ewogCQlnb3RvIHJlbGVhc2VfdW5sb2NrZWQ7CiAJfQotI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
ICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDcwMDAwMAotICAgICAgICBzb2NrYnVmX2xvY2sgPSAx
OworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJ
c29ja2J1Zl9sb2NrID0gMTsKICNlbmRpZgogIHJlc3RhcnQ6Ci0jaWYgKGRlZmluZWQoX19GcmVl
QlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uIDwgNzAwMDAwKSB8fCBkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCisjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWlmIChob2xkX3NibG9jayA9PSAw
KSB7CiAJCVNPQ0tCVUZfTE9DSygmc28tPnNvX3Jjdik7CiAJCWhvbGRfc2Jsb2NrID0gMTsKIAl9
CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzYnVubG9jaygmc28tPnNvX3JjdiwgMSk7CiAj
ZW5kaWYKIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uIDwg
NzAwMDAwCi0Jc2J1bmxvY2soJnNvLT5zb19yY3YpOwotI2VuZGlmCi0KICByZXN0YXJ0X25vc2Js
b2NrczoKIAlpZiAoaG9sZF9zYmxvY2sgPT0gMCkgewogCQlTT0NLQlVGX0xPQ0soJnNvLT5zb19y
Y3YpOwpAQCAtNTc2OCw3ICs2MTg5LDcgQEAgc2N0cF9zb3JlY3Ztc2coc3RydWN0IHNvY2tldCAq
c28sCiAJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19TT0NLRVRfQUxMR09O
RSkpIHsKIAkJZ290byBvdXQ7CiAJfQotI2lmIChkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0Zy
ZWVCU0RfdmVyc2lvbiA+IDUwMDAwMCkgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAoZGVm
aW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfV0lOMzIpKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCWlmICgoc28tPnNvX3Jjdi5zYl9zdGF0ZSAmIFNCU19DQU5UUkNWTU9SRSkgJiYg
KHNvLT5zb19yY3Yuc2JfY2MgPT0gMCkpIHsKICNlbHNlCiAJaWYgKChzby0+c29fc3RhdGUgJiBT
U19DQU5UUkNWTU9SRSkgJiYgKHNvLT5zb19yY3Yuc2JfY2MgPT0gMCkpIHsKQEAgLTU4MzYsMTEg
KzYyNTcsOCBAQCBzY3RwX3NvcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJU09DS0JVRl9V
TkxPQ0soJnNvLT5zb19yY3YpOwogCQlob2xkX3NibG9jayA9IDA7CiAJfQotI2lmIGRlZmluZWQo
X19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogCWVycm9yID0gc2Jsb2NrKCZzby0+c29fcmN2LCBTQkxPQ0tXQUlUKGluX2ZsYWdzKSk7
Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA8
IDcwMDAwMAotCWVycm9yID0gc2Jsb2NrKCZzby0+c29fcmN2LCAoYmxvY2tfYWxsb3dlZCA/IE1f
V0FJVE9LIDogMCkpOwogI2VuZGlmCiAJLyogd2UgcG9zc2libHkgaGF2ZSBkYXRhIHdlIGNhbiBy
ZWFkICovCiAJLypzYV9pZ25vcmUgRlJFRURfTUVNT1JZKi8KQEAgLTYwMzMsNyArNjQ1MSw3IEBA
IHNjdHBfc29yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvLAogCQkJICogd2UgdGhlbiB3aWxsIGdv
IHRvIHRoZSBzY3RwX3VzZXJfcmN2ZCgpIHRoYXQgd2lsbAogCQkJICogbm90IGxvY2sgdW50aWwg
aXQgS05PV3MgaXQgTVVTVCBzZW5kIGEgV1VQLVNBQ0suCiAJCQkgKi8KLQkJCWZyZWVkX3NvX2Zh
ciA9IHN0Y2ItPmZyZWVkX2J5X3NvcmN2X3NpbmNlbGFzdDsKKwkJCWZyZWVkX3NvX2ZhciA9ICh1
aW50MzJfdClzdGNiLT5mcmVlZF9ieV9zb3Jjdl9zaW5jZWxhc3Q7CiAJCQlzdGNiLT5mcmVlZF9i
eV9zb3Jjdl9zaW5jZWxhc3QgPSAwOwogCQl9CiAJfQpAQCAtNjE5MywxNiArNjYxMSwxNiBAQCBz
Y3RwX3NvcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJbSA9IGNvbnRyb2wtPmRhdGE7CiAJ
CXdoaWxlIChtKSB7CiAJCQkvKiBNb3ZlIG91dCBhbGwgd2UgY2FuICovCi0jaWYgZGVmaW5lZChf
X0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAjaWYgZGVmaW5lZChBUFBMRV9MRU9QQVJEKQotCQkJY3BfbGVuID0gKGludCl1aW8tPnVp
b19yZXNpZDsKKwkJCWNwX2xlbiA9IHVpby0+dWlvX3Jlc2lkOwogI2Vsc2UKLQkJCWNwX2xlbiA9
IChpbnQpdWlvX3Jlc2lkKHVpbyk7CisJCQljcF9sZW4gPSB1aW9fcmVzaWQodWlvKTsKICNlbmRp
ZgogI2Vsc2UKLQkJCWNwX2xlbiA9IChpbnQpdWlvLT51aW9fcmVzaWQ7CisJCQljcF9sZW4gPSB1
aW8tPnVpb19yZXNpZDsKICNlbmRpZgotCQkJbXlfbGVuID0gKGludClTQ1RQX0JVRl9MRU4obSk7
CisJCQlteV9sZW4gPSBTQ1RQX0JVRl9MRU4obSk7CiAJCQlpZiAoY3BfbGVuID4gbXlfbGVuKSB7
CiAJCQkJLyogbm90IGVub3VnaCBpbiB0aGlzIGJ1ZiAqLwogCQkJCWNwX2xlbiA9IG15X2xlbjsK
QEAgLTYyMTEsMTIgKzY2MjksMTIgQEAgc2N0cF9zb3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc28s
CiAJCQkJU0NUUF9JTlBfUkVBRF9VTkxPQ0soaW5wKTsKIAkJCQlob2xkX3Jsb2NrID0gMDsKIAkJ
CX0KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCVNDVFBfU09DS0VUX1VOTE9DSyhzbywgMCk7CiAjZW5k
aWYKIAkJCWlmIChjcF9sZW4gPiAwKQotCQkJCWVycm9yID0gdWlvbW92ZShtdG9kKG0sIGNoYXIg
KiksIGNwX2xlbiwgdWlvKTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKwkJCQllcnJvciA9IHVp
b21vdmUobXRvZChtLCBjaGFyICopLCAoaW50KWNwX2xlbiwgdWlvKTsKKyNpZiBkZWZpbmVkKF9f
QVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCVNDVFBfU09DS0VUX0xPQ0so
c28sIDApOwogI2VuZGlmCiAJCQkvKiByZS1yZWFkICovCkBAIC02MjYzLDcgKzY2ODEsNyBAQCBz
Y3RwX3NvcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJCQkJCSAgIGNvbnRyb2wtPmRvX25v
dF9yZWZfc3RjYj9OVUxMOnN0Y2IsIFNDVFBfTE9HX1NCUkVTVUxULCAwKTsKIAkJCQkJfQogCQkJ
CQljb3BpZWRfc29fZmFyICs9IGNwX2xlbjsKLQkJCQkJZnJlZWRfc29fZmFyICs9IGNwX2xlbjsK
KwkJCQkJZnJlZWRfc29fZmFyICs9ICh1aW50MzJfdCljcF9sZW47CiAJCQkJCWZyZWVkX3NvX2Zh
ciArPSBNU0laRTsKIAkJCQkJYXRvbWljX3N1YnRyYWN0X2ludCgmY29udHJvbC0+bGVuZ3RoLCBj
cF9sZW4pOwogCQkJCQljb250cm9sLT5kYXRhID0gc2N0cF9tX2ZyZWUobSk7CkBAIC02MjcxLDcg
KzY2ODksNyBAQCBzY3RwX3NvcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJCQkJLyogYmVl
biB0aHJvdWdoIGl0IGFsbCwgbXVzdCBob2xkIHNiIGxvY2sgb2sgdG8gbnVsbCB0YWlsICovCiAJ
CQkJCWlmIChjb250cm9sLT5kYXRhID09IE5VTEwpIHsKICNpZmRlZiBJTlZBUklBTlRTCi0jaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogCQkJCQkJaWYgKChjb250cm9sLT5lbmRfYWRkZWQgPT0gMCkgfHwK
IAkJCQkJCSAgICAoVEFJTFFfTkVYVChjb250cm9sLCBuZXh0KSA9PSBOVUxMKSkgewogCQkJCQkJ
CS8qIElmIHRoZSBlbmQgaXMgbm90IGFkZGVkLCBPUiB0aGUKQEAgLTYyOTgsOSArNjcxNiw5IEBA
IHNjdHBfc29yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvLAogCQkJCX0KIAkJCQlpZiAoKGluX2Zs
YWdzICYgTVNHX1BFRUspID09IDApIHsKIAkJCQkJU0NUUF9CVUZfUkVTVl9VRihtLCBjcF9sZW4p
OwotCQkJCQlTQ1RQX0JVRl9MRU4obSkgLT0gY3BfbGVuOworCQkJCQlTQ1RQX0JVRl9MRU4obSkg
LT0gKGludCljcF9sZW47CiAJCQkJCWlmIChTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbG9nZ2luZ19s
ZXZlbCkgJiBTQ1RQX1NCX0xPR0dJTkdfRU5BQkxFKSB7Ci0JCQkJCQlzY3RwX3NibG9nKCZzby0+
c29fcmN2LCBjb250cm9sLT5kb19ub3RfcmVmX3N0Y2I/TlVMTDpzdGNiLCBTQ1RQX0xPR19TQkZS
RUUsIGNwX2xlbik7CisJCQkJCQlzY3RwX3NibG9nKCZzby0+c29fcmN2LCBjb250cm9sLT5kb19u
b3RfcmVmX3N0Y2I/TlVMTDpzdGNiLCBTQ1RQX0xPR19TQkZSRUUsIChpbnQpY3BfbGVuKTsKIAkJ
CQkJfQogCQkJCQlhdG9taWNfc3VidHJhY3RfaW50KCZzby0+c29fcmN2LnNiX2NjLCBjcF9sZW4p
OwogCQkJCQlpZiAoKGNvbnRyb2wtPmRvX25vdF9yZWZfc3RjYiA9PSAwKSAmJgpAQCAtNjMwOCw3
ICs2NzI2LDcgQEAgc2N0cF9zb3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc28sCiAJCQkJCQlhdG9t
aWNfc3VidHJhY3RfaW50KCZzdGNiLT5hc29jLnNiX2NjLCBjcF9sZW4pOwogCQkJCQl9CiAJCQkJ
CWNvcGllZF9zb19mYXIgKz0gY3BfbGVuOwotCQkJCQlmcmVlZF9zb19mYXIgKz0gY3BfbGVuOwor
CQkJCQlmcmVlZF9zb19mYXIgKz0gKHVpbnQzMl90KWNwX2xlbjsKIAkJCQkJZnJlZWRfc29fZmFy
ICs9IE1TSVpFOwogCQkJCQlpZiAoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2xvZ2dpbmdfbGV2ZWwp
ICYgU0NUUF9TQl9MT0dHSU5HX0VOQUJMRSkgewogCQkJCQkJc2N0cF9zYmxvZygmc28tPnNvX3Jj
diwgY29udHJvbC0+ZG9fbm90X3JlZl9zdGNiP05VTEw6c3RjYiwKQEAgLTYzMTksNyArNjczNyw3
IEBAIHNjdHBfc29yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvLAogCQkJCQljb3BpZWRfc29fZmFy
ICs9IGNwX2xlbjsKIAkJCQl9CiAJCQl9Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVm
aW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaWYgZGVmaW5lZChB
UFBMRV9MRU9QQVJEKQogCQkJaWYgKChvdXRfZmxhZ3MgJiBNU0dfRU9SKSB8fCAodWlvLT51aW9f
cmVzaWQgPT0gMCkpIHsKICNlbHNlCkBAIC02NDA1LDcgKzY4MjMsNyBAQCBzY3RwX3NvcmVjdm1z
ZyhzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJaWYgKG91dF9mbGFncyAmIE1TR19FT1IpIHsKIAkJCWdv
dG8gcmVsZWFzZTsKIAkJfQotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19B
UFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmIGRlZmluZWQoQVBQTEVfTEVP
UEFSRCkKIAkJaWYgKCh1aW8tPnVpb19yZXNpZCA9PSAwKSB8fAogI2Vsc2UKQEAgLTY0MTUsNyAr
NjgzMyw3IEBAIHNjdHBfc29yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvLAogCQlpZiAoKHVpby0+
dWlvX3Jlc2lkID09IDApIHx8CiAjZW5kaWYKIAkJICAgICgoaW5fZWVvcl9tb2RlKSAmJgotCQkg
ICAgIChjb3BpZWRfc29fZmFyID49ICh1aW50MzJfdCltYXgoc28tPnNvX3Jjdi5zYl9sb3dhdCwg
MSkpKSkgeworCQkgICAgIChjb3BpZWRfc29fZmFyID49IG1heChzby0+c29fcmN2LnNiX2xvd2F0
LCAxKSkpKSB7CiAJCQlnb3RvIHJlbGVhc2U7CiAJCX0KIAkJLyoKQEAgLTY0NDMsNyArNjg2MSw3
IEBAIHNjdHBfc29yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvLAogCQkJc2N0cF91c2VyX3JjdmQo
c3RjYiwgJmZyZWVkX3NvX2ZhciwgaG9sZF9ybG9jaywgcnduZF9yZXEpOwogCQl9CiAJd2FpdF9z
b21lX21vcmU6Ci0jaWYgKGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9u
ID4gNTAwMDAwKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmIChkZWZpbmVkKF9fRnJlZUJT
RF9fKSB8fCBkZWZpbmVkKF9XSU4zMikpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCWlm
IChzby0+c29fcmN2LnNiX3N0YXRlICYgU0JTX0NBTlRSQ1ZNT1JFKSB7CiAJCQlnb3RvIHJlbGVh
c2U7CiAJCX0KQEAgLTY0NjgsMTMgKzY4ODYsMTMgQEAgc2N0cF9zb3JlY3Ztc2coc3RydWN0IHNv
Y2tldCAqc28sCiAJCSAgICAoc2N0cF9pc19mZWF0dXJlX29uKGlucCwgU0NUUF9QQ0JfRkxBR1Nf
RlJBR19JTlRFUkxFQVZFKSkpIHsKIAkJCWdvdG8gcmVsZWFzZTsKIAkJfQotI2lmIGRlZmluZWQo
X19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogCQlzYnVubG9jaygmc28tPnNvX3JjdiwgMSk7CiAjZW5kaWYKIAkJaWYgKHNvLT5zb19y
Y3Yuc2JfY2MgPD0gY29udHJvbC0+aGVsZF9sZW5ndGgpIHsKIAkJCWVycm9yID0gc2J3YWl0KCZz
by0+c29fcmN2KTsKIAkJCWlmIChlcnJvcikgewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQln
b3RvIHJlbGVhc2U7CiAjZWxzZQogCQkJCWdvdG8gcmVsZWFzZV91bmxvY2tlZDsKQEAgLTY0ODIs
NyArNjkwMCw3IEBAIHNjdHBfc29yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvLAogCQkJfQogCQkJ
Y29udHJvbC0+aGVsZF9sZW5ndGggPSAwOwogCQl9Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pCisj
aWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCWVycm9y
ID0gc2Jsb2NrKCZzby0+c29fcmN2LCBTQkxPQ0tXQUlUKGluX2ZsYWdzKSk7CiAjZW5kaWYKIAkJ
aWYgKGhvbGRfc2Jsb2NrKSB7CkBAIC02NTU0LDcgKzY5NzIsNyBAQCBzY3RwX3NvcmVjdm1zZyhz
dHJ1Y3Qgc29ja2V0ICpzbywKIAkJaWYgKGNvbnRyb2wtPnNwZWNfZmxhZ3MgJiBNX05PVElGSUNB
VElPTikgewogCQkJb3V0X2ZsYWdzIHw9IE1TR19OT1RJRklDQVRJT047CiAJCX0KLSNpZiBkZWZp
bmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKICNpZiBkZWZpbmVkKEFQUExFX0xFT1BBUkQpCiAJCXVpby0+dWlvX3Jlc2lkID0g
Y29udHJvbC0+bGVuZ3RoOwogI2Vsc2UKQEAgLTY1NzEsNyArNjk4OSw3IEBAIHNjdHBfc29yZWN2
bXNnKHN0cnVjdCBzb2NrZXQgKnNvLAogCQkJCSAgIGNvbnRyb2wtPmRvX25vdF9yZWZfc3RjYj9O
VUxMOnN0Y2IsIFNDVFBfTE9HX1NCRlJFRSwgU0NUUF9CVUZfTEVOKG0pKTsKIAkJCX0KIAkJCXNj
dHBfc2JmcmVlKGNvbnRyb2wsIHN0Y2IsICZzby0+c29fcmN2LCBtKTsKLQkJCWZyZWVkX3NvX2Zh
ciArPSBTQ1RQX0JVRl9MRU4obSk7CisJCQlmcmVlZF9zb19mYXIgKz0gKHVpbnQzMl90KVNDVFBf
QlVGX0xFTihtKTsKIAkJCWZyZWVkX3NvX2ZhciArPSBNU0laRTsKIAkJCWlmIChTQ1RQX0JBU0Vf
U1lTQ1RMKHNjdHBfbG9nZ2luZ19sZXZlbCkgJiBTQ1RQX1NCX0xPR0dJTkdfRU5BQkxFKSB7CiAJ
CQkJc2N0cF9zYmxvZygmc28tPnNvX3JjdiwKQEAgLTY1OTEsNyArNzAwOSw3IEBAIHNjdHBfc29y
ZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvLAogCQlTQ1RQX0lOUF9SRUFEX1VOTE9DSyhpbnApOwog
CQlob2xkX3Jsb2NrID0gMDsKIAl9Ci0jaWYgKGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJl
ZUJTRF92ZXJzaW9uIDwgNzAwMDAwKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaWYgZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCWlmIChob2xkX3NibG9jayA9PSAwKSB7CiAJCVNPQ0tCVUZf
TE9DSygmc28tPnNvX3Jjdik7CiAJCWhvbGRfc2Jsb2NrID0gMTsKQEAgLTY2MDIsMTUgKzcwMjAs
MTMgQEAgc2N0cF9zb3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc28sCiAJCWhvbGRfc2Jsb2NrID0g
MDsKIAl9CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzYnVubG9jaygmc28tPnNvX3Jjdiwg
MSk7CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzYnVubG9jaygmc28tPnNvX3Jj
dik7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNzAw
MDAwCiAJc29ja2J1Zl9sb2NrID0gMDsKLSNlbmRpZgogI2VuZGlmCiAKICByZWxlYXNlX3VubG9j
a2VkOgpAQCAtNjY0Myw3ICs3MDU5LDcgQEAgc2N0cF9zb3JlY3Ztc2coc3RydWN0IHNvY2tldCAq
c28sCiAJaWYgKGhvbGRfc2Jsb2NrKSB7CiAJCVNPQ0tCVUZfVU5MT0NLKCZzby0+c29fcmN2KTsK
IAl9Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNzAw
MDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
IAlpZiAoc29ja2J1Zl9sb2NrKSB7CiAJCXNidW5sb2NrKCZzby0+c29fcmN2KTsKIAl9CkBAIC02
NjcyLDcgKzcwODgsNyBAQCBzY3RwX3NvcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJaWYg
KHN0Y2IpIHsKIAkJCXNjdHBfbWlzY19pbnRzKFNDVFBfU09SRUNWX0RPTkUsCiAJCQkJICAgICAg
IGZyZWVkX3NvX2ZhciwKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZiBkZWZpbmVkKEFQUExFX0xFT1BB
UkQpCiAJCQkJICAgICAgICgodWlvKSA/IChzbGVuIC0gdWlvLT51aW9fcmVzaWQpIDogc2xlbiks
CiAjZWxzZQpAQCAtNjY4Niw3ICs3MTAyLDcgQEAgc2N0cF9zb3JlY3Ztc2coc3RydWN0IHNvY2tl
dCAqc28sCiAJCX0gZWxzZSB7CiAJCQlzY3RwX21pc2NfaW50cyhTQ1RQX1NPUkVDVl9ET05FLAog
CQkJCSAgICAgICBmcmVlZF9zb19mYXIsCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVm
aW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaWYgZGVmaW5lZChB
UFBMRV9MRU9QQVJEKQogCQkJCSAgICAgICAoKHVpbykgPyAoc2xlbiAtIHVpby0+dWlvX3Jlc2lk
KSA6IHNsZW4pLAogI2Vsc2UKQEAgLTY3MzUsNyArNzE1MSw3IEBAIHNjdHBfZHluYW1pY19zZXRf
cHJpbWFyeShzdHJ1Y3Qgc29ja2FkZHIgKnNhLCB1aW50MzJfdCB2cmZfaWQpCiAJc3RydWN0IHNj
dHBfaWZhICppZmE7CiAJc3RydWN0IHNjdHBfbGFkZHIgKndpOwogCi0JaWZhID0gc2N0cF9maW5k
X2lmYV9ieV9hZGRyKHNhLCB2cmZfaWQsIDApOworCWlmYSA9IHNjdHBfZmluZF9pZmFfYnlfYWRk
cihzYSwgdnJmX2lkLCBTQ1RQX0FERFJfTk9UX0xPQ0tFRCk7CiAJaWYgKGlmYSA9PSBOVUxMKSB7
CiAJCVNDVFBfTFRSQUNFX0VSUl9SRVQoTlVMTCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBV
VElMLCBFQUREUk5PVEFWQUlMKTsKIAkJcmV0dXJuIChFQUREUk5PVEFWQUlMKTsKQEAgLTY4MTYs
NyArNzIzMiw3IEBAIHNjdHBfc29yZWNlaXZlKAlzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJZnJvbWxl
biA9IDA7CiAJfQogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExF
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJU0NUUF9TT0NLRVRfTE9DSyhzbywgMSk7
CiAjZW5kaWYKIAlpZiAoZmlsbGluZ19zaW5mbykgewpAQCAtNjg0OCw3ICs3MjY0LDcgQEAgc2N0
cF9zb3JlY2VpdmUoCXN0cnVjdCBzb2NrZXQgKnNvLAogI2Vsc2UKIAkJaWYgKGZyb20pIHsKICNl
bmRpZgotI2lmIChkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDUw
MDAwMCkgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykg
fHwgZGVmaW5lZChfV0lOMzIpKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJKnBzYSA9
IHNvZHVwc29ja2FkZHIoZnJvbSwgTV9OT1dBSVQpOwogI2Vsc2UKIAkJCSpwc2EgPSBkdXBfc29j
a2FkZHIoZnJvbSwgbXAwID09IDApOwpAQCAtNjg1NywxNCArNzI3MywxNCBAQCBzY3RwX3NvcmVj
ZWl2ZSgJc3RydWN0IHNvY2tldCAqc28sCiAJCQkqcHNhID0gTlVMTDsKIAkJfQogCX0KLSNpZiBk
ZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKIAlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDEpOwogI2VuZGlmCiAJcmV0dXJu
IChlcnJvcik7CiB9CiAKIAotI2lmIChkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0Rf
dmVyc2lvbiA8IDYwMzAwMCkgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiBkZWZpbmVkKF9X
SU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIC8qCiAgKiBHZW5lcmFsIHJvdXRpbmUg
dG8gYWxsb2NhdGUgYSBoYXNoIHRhYmxlIHdpdGggY29udHJvbCBvZiBtZW1vcnkgZmxhZ3MuCiAg
KiBpcyBpbiA3LjAgYW5kIGJleW9uZCBmb3Igc3VyZSA6LSkKQEAgLTcxMDMsMzEgKzc1MTksMzQg
QEAgc2N0cF9jb25uZWN0eF9oZWxwZXJfYWRkKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0
IHNvY2thZGRyICphZGRyLAogCXJldHVybiAoYWRkZWQpOwogfQogCi1zdHJ1Y3Qgc2N0cF90Y2Ig
KgoraW50CiBzY3RwX2Nvbm5lY3R4X2hlbHBlcl9maW5kKHN0cnVjdCBzY3RwX2lucGNiICppbnAs
IHN0cnVjdCBzb2NrYWRkciAqYWRkciwKLQkJCSAgdW5zaWduZWQgaW50ICp0b3RhZGRyLAotCQkJ
ICB1bnNpZ25lZCBpbnQgKm51bV92NCwgdW5zaWduZWQgaW50ICpudW1fdjYsIGludCAqZXJyb3Is
Ci0JCQkgIHVuc2lnbmVkIGludCBsaW1pdCwgaW50ICpiYWRfYWRkcikKKwkJCSAgdW5zaWduZWQg
aW50IHRvdGFkZHIsCisJCQkgIHVuc2lnbmVkIGludCAqbnVtX3Y0LCB1bnNpZ25lZCBpbnQgKm51
bV92NiwKKwkJCSAgdW5zaWduZWQgaW50IGxpbWl0KQogewogCXN0cnVjdCBzb2NrYWRkciAqc2E7
Ci0Jc3RydWN0IHNjdHBfdGNiICpzdGNiID0gTlVMTDsKKwlzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2I7
CiAJdW5zaWduZWQgaW50IGluY3IsIGF0LCBpOwogCiAJYXQgPSAwOwogCXNhID0gYWRkcjsKLQkq
ZXJyb3IgPSAqbnVtX3Y2ID0gKm51bV92NCA9IDA7CisJKm51bV92NiA9ICpudW1fdjQgPSAwOwog
CS8qIGFjY291bnQgYW5kIHZhbGlkYXRlIGFkZHJlc3NlcyAqLwotCWZvciAoaSA9IDA7IGkgPCAq
dG90YWRkcjsgaSsrKSB7CisJaWYgKHRvdGFkZHIgPT0gMCkgeworCQlyZXR1cm4gKEVJTlZBTCk7
CisJfQorCWZvciAoaSA9IDA7IGkgPCB0b3RhZGRyOyBpKyspIHsKKwkJaWYgKGF0ICsgc2l6ZW9m
KHN0cnVjdCBzb2NrYWRkcikgPiBsaW1pdCkgeworCQkJcmV0dXJuIChFSU5WQUwpOworCQl9CiAJ
CXN3aXRjaCAoc2EtPnNhX2ZhbWlseSkgewogI2lmZGVmIElORVQKIAkJY2FzZSBBRl9JTkVUOgog
CQkJaW5jciA9ICh1bnNpZ25lZCBpbnQpc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7CiAjaWZk
ZWYgSEFWRV9TQV9MRU4KIAkJCWlmIChzYS0+c2FfbGVuICE9IGluY3IpIHsKLQkJCQlTQ1RQX0xU
UkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBVVElMLCBFSU5WQUwp
OwotCQkJCSplcnJvciA9IEVJTlZBTDsKLQkJCQkqYmFkX2FkZHIgPSAxOwotCQkJCXJldHVybiAo
TlVMTCk7CisJCQkJcmV0dXJuIChFSU5WQUwpOwogCQkJfQogI2VuZGlmCiAJCQkoKm51bV92NCkg
Kz0gMTsKQEAgLTcxNDEsMTggKzc1NjAsMTIgQEAgc2N0cF9jb25uZWN0eF9oZWxwZXJfZmluZChz
dHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsCiAJCQlzaW42ID0g
KHN0cnVjdCBzb2NrYWRkcl9pbjYgKilzYTsKIAkJCWlmIChJTjZfSVNfQUREUl9WNE1BUFBFRCgm
c2luNi0+c2luNl9hZGRyKSkgewogCQkJCS8qIE11c3QgYmUgbm9uLW1hcHBlZCBmb3IgY29ubmVj
dHggKi8KLQkJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9N
X1NDVFBVVElMLCBFSU5WQUwpOwotCQkJCSplcnJvciA9IEVJTlZBTDsKLQkJCQkqYmFkX2FkZHIg
PSAxOwotCQkJCXJldHVybiAoTlVMTCk7CisJCQkJcmV0dXJuIChFSU5WQUwpOwogCQkJfQogCQkJ
aW5jciA9ICh1bnNpZ25lZCBpbnQpc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpOwogI2lmZGVm
IEhBVkVfU0FfTEVOCiAJCQlpZiAoc2EtPnNhX2xlbiAhPSBpbmNyKSB7Ci0JCQkJU0NUUF9MVFJB
Q0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQVVRJTCwgRUlOVkFMKTsK
LQkJCQkqZXJyb3IgPSBFSU5WQUw7Ci0JCQkJKmJhZF9hZGRyID0gMTsKLQkJCQlyZXR1cm4gKE5V
TEwpOworCQkJCXJldHVybiAoRUlOVkFMKTsKIAkJCX0KICNlbmRpZgogCQkJKCpudW1fdjYpICs9
IDE7CkBAIC03MTYwLDI5ICs3NTczLDIzIEBAIHNjdHBfY29ubmVjdHhfaGVscGVyX2ZpbmQoc3Ry
dWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNvY2thZGRyICphZGRyLAogCQl9CiAjZW5kaWYK
IAkJZGVmYXVsdDoKLQkJCSp0b3RhZGRyID0gaTsKLQkJCWluY3IgPSAwOwotCQkJLyogd2UgYXJl
IGRvbmUgKi8KLQkJCWJyZWFrOworCQkJcmV0dXJuIChFSU5WQUwpOwogCQl9Ci0JCWlmIChpID09
ICp0b3RhZGRyKSB7Ci0JCQlicmVhazsKKwkJaWYgKChhdCArIGluY3IpID4gbGltaXQpIHsKKwkJ
CXJldHVybiAoRUlOVkFMKTsKIAkJfQogCQlTQ1RQX0lOUF9JTkNSX1JFRihpbnApOwogCQlzdGNi
ID0gc2N0cF9maW5kYXNzb2NpYXRpb25fZXBfYWRkcigmaW5wLCBzYSwgTlVMTCwgTlVMTCwgTlVM
TCk7CiAJCWlmIChzdGNiICE9IE5VTEwpIHsKLQkJCS8qIEFscmVhZHkgaGF2ZSBvciBhbSBicmlu
ZyB1cCBhbiBhc3NvY2lhdGlvbiAqLwotCQkJcmV0dXJuIChzdGNiKTsKKwkJCVNDVFBfVENCX1VO
TE9DSyhzdGNiKTsKKwkJCXJldHVybiAoRUFMUkVBRFkpOwogCQl9IGVsc2UgewogCQkJU0NUUF9J
TlBfREVDUl9SRUYoaW5wKTsKIAkJfQotCQlpZiAoKGF0ICsgaW5jcikgPiBsaW1pdCkgewotCQkJ
KnRvdGFkZHIgPSBpOwotCQkJYnJlYWs7Ci0JCX0KKwkJYXQgKz0gaW5jcjsKIAkJc2EgPSAoc3Ry
dWN0IHNvY2thZGRyICopKChjYWRkcl90KXNhICsgaW5jcik7CiAJfQotCXJldHVybiAoKHN0cnVj
dCBzY3RwX3RjYiAqKU5VTEwpOworCXJldHVybiAoMCk7CiB9CiAKIC8qCkBAIC03MTkxLDE2ICs3
NTk4LDI0IEBAIHNjdHBfY29ubmVjdHhfaGVscGVyX2ZpbmQoc3RydWN0IHNjdHBfaW5wY2IgKmlu
cCwgc3RydWN0IHNvY2thZGRyICphZGRyLAogICovCiB2b2lkCiBzY3RwX2JpbmR4X2FkZF9hZGRy
ZXNzKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAotCQkgICAgICAg
c3RydWN0IHNvY2thZGRyICpzYSwgc2N0cF9hc3NvY190IGFzc29jX2lkLAotCQkgICAgICAgdWlu
dDMyX3QgdnJmX2lkLCBpbnQgKmVycm9yLCB2b2lkICpwKQorICAgICAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3Qgc29ja2FkZHIgKnNhLCB1aW50MzJfdCB2cmZfaWQsIGludCAqZXJyb3IsCisgICAg
ICAgICAgICAgICAgICAgICAgIHZvaWQgKnApCiB7Ci0Jc3RydWN0IHNvY2thZGRyICphZGRyX3Rv
dXNlOwogI2lmIGRlZmluZWQoSU5FVCkgJiYgZGVmaW5lZChJTkVUNikKIAlzdHJ1Y3Qgc29ja2Fk
ZHJfaW4gc2luOwogI2VuZGlmCisjaWZkZWYgSU5FVDYKKwlzdHJ1Y3Qgc29ja2FkZHJfaW42ICpz
aW42OworI2VuZGlmCisjaWZkZWYgSU5FVAorCXN0cnVjdCBzb2NrYWRkcl9pbiAqc2lucDsKKyNl
bmRpZgorCXN0cnVjdCBzb2NrYWRkciAqYWRkcl90b191c2U7CisJc3RydWN0IHNjdHBfaW5wY2Ig
KmxlcDsKICNpZmRlZiBTQ1RQX01WUkYKLQlpbnQgaSwgZm5kID0gMDsKKwlpbnQgaTsKICNlbmRp
ZgorCXVpbnQxNl90IHBvcnQ7CiAKIAkvKiBzZWUgaWYgd2UncmUgYm91bmQgYWxsIGFscmVhZHkh
ICovCiAJaWYgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0JPVU5EQUxMKSB7CkBA
IC03MjEyLDIzICs3NjI3LDE4IEBAIHNjdHBfYmluZHhfYWRkX2FkZHJlc3Moc3RydWN0IHNvY2tl
dCAqc28sIHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJLyogSXMgdGhlIFZSRiBvbmUgd2UgaGF2
ZSAqLwogCWZvciAoaSA9IDA7IGkgPCBpbnAtPm51bV92cmZzOyBpKyspIHsKIAkJaWYgKHZyZl9p
ZCA9PSBpbnAtPm1fdnJmX2lkc1tpXSkgewotCQkJZm5kID0gMTsKIAkJCWJyZWFrOwogCQl9CiAJ
fQotCWlmICghZm5kKSB7CisJaWYgKGkgPT0gaW5wLT5udW1fdnJmcykgewogCQlTQ1RQX0xUUkFD
RV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBVVElMLCBFSU5WQUwpOwog
CQkqZXJyb3IgPSBFSU5WQUw7CiAJCXJldHVybjsKIAl9CiAjZW5kaWYKLQlhZGRyX3RvdXNlID0g
c2E7CisJc3dpdGNoIChzYS0+c2FfZmFtaWx5KSB7CiAjaWZkZWYgSU5FVDYKLQlpZiAoc2EtPnNh
X2ZhbWlseSA9PSBBRl9JTkVUNikgewotI2lmZGVmIElORVQKLQkJc3RydWN0IHNvY2thZGRyX2lu
NiAqc2luNjsKLQotI2VuZGlmCisJY2FzZSBBRl9JTkVUNjoKICNpZmRlZiBIQVZFX1NBX0xFTgog
CQlpZiAoc2EtPnNhX2xlbiAhPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNikpIHsKIAkJCVND
VFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUFVUSUwsIEVJ
TlZBTCk7CkBAIC03MjQyLDggKzc2NTIsOSBAQCBzY3RwX2JpbmR4X2FkZF9hZGRyZXNzKHN0cnVj
dCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogCQkJKmVycm9yID0gRUlOVkFM
OwogCQkJcmV0dXJuOwogCQl9CisJCXNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKXNhOwor
CQlwb3J0ID0gc2luNi0+c2luNl9wb3J0OwogI2lmZGVmIElORVQKLQkJc2luNiA9IChzdHJ1Y3Qg
c29ja2FkZHJfaW42ICopYWRkcl90b3VzZTsKIAkJaWYgKElONl9JU19BRERSX1Y0TUFQUEVEKCZz
aW42LT5zaW42X2FkZHIpKSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZM
QUdTX0JPVU5EX1Y2KSAmJgogCQkJICAgIFNDVFBfSVBWNl9WNk9OTFkoaW5wKSkgewpAQCAtNzI1
MywxMyArNzY2NCwxNyBAQCBzY3RwX2JpbmR4X2FkZF9hZGRyZXNzKHN0cnVjdCBzb2NrZXQgKnNv
LCBzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogCQkJCXJldHVybjsKIAkJCX0KIAkJCWluNl9zaW42
XzJfc2luKCZzaW4sIHNpbjYpOwotCQkJYWRkcl90b3VzZSA9IChzdHJ1Y3Qgc29ja2FkZHIgKikm
c2luOworCQkJYWRkcl90b191c2UgPSAoc3RydWN0IHNvY2thZGRyICopJnNpbjsKKwkJfSBlbHNl
IHsKKwkJCWFkZHJfdG9fdXNlID0gc2E7CiAJCX0KKyNlbHNlCisJCWFkZHJfdG9fdXNlID0gc2E7
CiAjZW5kaWYKLQl9CisJCWJyZWFrOwogI2VuZGlmCiAjaWZkZWYgSU5FVAotCWlmIChzYS0+c2Ff
ZmFtaWx5ID09IEFGX0lORVQpIHsKKwljYXNlIEFGX0lORVQ6CiAjaWZkZWYgSEFWRV9TQV9MRU4K
IAkJaWYgKHNhLT5zYV9sZW4gIT0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpIHsKIAkJCVND
VFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUFVUSUwsIEVJ
TlZBTCk7CkBAIC03Mjc0LDEwICs3Njg5LDE4IEBAIHNjdHBfYmluZHhfYWRkX2FkZHJlc3Moc3Ry
dWN0IHNvY2tldCAqc28sIHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCQkqZXJyb3IgPSBFSU5W
QUw7CiAJCQlyZXR1cm47CiAJCX0KLQl9CisJCXNpbnAgPSAoc3RydWN0IHNvY2thZGRyX2luICop
c2E7CisJCXBvcnQgPSBzaW5wLT5zaW5fcG9ydDsKKwkJYWRkcl90b191c2UgPSBzYTsKKwkJYnJl
YWs7CiAjZW5kaWYKKwlkZWZhdWx0OgorCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwg
TlVMTCwgU0NUUF9GUk9NX1NDVFBVVElMLCBFSU5WQUwpOworCQkqZXJyb3IgPSBFSU5WQUw7CisJ
CXJldHVybjsKKwl9CiAJaWYgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VOQk9V
TkQpIHsKLSNpZiAhKGRlZmluZWQoX19QYW5kYV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKSB8
fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pKQorI2lmICEoZGVmaW5lZChfV0lOMzIpIHx8IGRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykpCiAJCWlmIChwID09IE5VTEwpIHsKIAkJCS8qIENhbid0IGdldCBw
cm9jIGZvciBOZXQvT3BlbiBCU0QgKi8KIAkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxM
LCBOVUxMLCBTQ1RQX0ZST01fU0NUUFVUSUwsIEVJTlZBTCk7CkBAIC03Mjg1LDU4ICs3NzA4LDI1
IEBAIHNjdHBfYmluZHhfYWRkX2FkZHJlc3Moc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzY3Rw
X2lucGNiICppbnAsCiAJCQlyZXR1cm47CiAJCX0KICNlbmRpZgotCQkqZXJyb3IgPSBzY3RwX2lu
cGNiX2JpbmQoc28sIGFkZHJfdG91c2UsIE5VTEwsIHApOworCQkqZXJyb3IgPSBzY3RwX2lucGNi
X2JpbmQoc28sIGFkZHJfdG9fdXNlLCBOVUxMLCBwKTsKIAkJcmV0dXJuOwogCX0KLQkvKgotCSAq
IE5vIGxvY2tzIHJlcXVpcmVkIGhlcmUgc2luY2UgYmluZCBhbmQgbWdtdF9lcF9zYQotCSAqIGFs
bCBkbyB0aGVpciBvd24gbG9ja2luZy4gSWYgd2UgZG8gc29tZXRoaW5nIGZvcgotCSAqIHRoZSBG
SVg6IGJlbG93IHdlIG1heSBuZWVkIHRvIGxvY2sgaW4gdGhhdCBjYXNlLgotCSAqLwotCWlmIChh
c3NvY19pZCA9PSAwKSB7CisJLyogVmFsaWRhdGUgdGhlIGluY29taW5nIHBvcnQuICovCisJaWYg
KChwb3J0ICE9IDApICYmIChwb3J0ICE9IGlucC0+c2N0cF9scG9ydCkpIHsKKwkJU0NUUF9MVFJB
Q0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQVVRJTCwgRUlOVkFMKTsK
KwkJKmVycm9yID0gRUlOVkFMOworCQlyZXR1cm47CisJfQorCWxlcCA9IHNjdHBfcGNiX2ZpbmRl
cChhZGRyX3RvX3VzZSwgMSwgMCwgdnJmX2lkKTsKKwlpZiAobGVwID09IE5VTEwpIHsKIAkJLyog
YWRkIHRoZSBhZGRyZXNzICovCi0JCXN0cnVjdCBzY3RwX2lucGNiICpsZXA7Ci0JCXN0cnVjdCBz
b2NrYWRkcl9pbiAqbHNpbiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilhZGRyX3RvdXNlOwotCi0J
CS8qIHZhbGlkYXRlIHRoZSBpbmNvbWluZyBwb3J0ICovCi0JCWlmICgobHNpbi0+c2luX3BvcnQg
IT0gMCkgJiYKLQkJICAgIChsc2luLT5zaW5fcG9ydCAhPSBpbnAtPnNjdHBfbHBvcnQpKSB7Ci0J
CQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBVVElM
LCBFSU5WQUwpOwotCQkJKmVycm9yID0gRUlOVkFMOwotCQkJcmV0dXJuOwotCQl9IGVsc2Ugewot
CQkJLyogdXNlciBzcGVjaWZpZWQgMCBwb3J0LCBzZXQgaXQgdG8gZXhpc3RpbmcgcG9ydCAqLwot
CQkJbHNpbi0+c2luX3BvcnQgPSBpbnAtPnNjdHBfbHBvcnQ7Ci0JCX0KLQotCQlsZXAgPSBzY3Rw
X3BjYl9maW5kZXAoYWRkcl90b3VzZSwgMSwgMCwgdnJmX2lkKTsKLQkJaWYgKGxlcCAhPSBOVUxM
KSB7Ci0JCQkvKgotCQkJICogV2UgbXVzdCBkZWNyZW1lbnQgdGhlIHJlZmNvdW50Ci0JCQkgKiBz
aW5jZSB3ZSBoYXZlIHRoZSBlcCBhbHJlYWR5IGFuZAotCQkJICogYXJlIGJpbmRpbmcuIE5vIHJl
bW92ZSBnb2luZyBvbgotCQkJICogaGVyZS4KLQkJCSAqLwotCQkJU0NUUF9JTlBfREVDUl9SRUYo
bGVwKTsKLQkJfQotCQlpZiAobGVwID09IGlucCkgewotCQkJLyogYWxyZWFkeSBib3VuZCB0byBp
dC4uIG9rICovCi0JCQlyZXR1cm47Ci0JCX0gZWxzZSBpZiAobGVwID09IE5VTEwpIHsKLQkJCSgo
c3RydWN0IHNvY2thZGRyX2luICopYWRkcl90b3VzZSktPnNpbl9wb3J0ID0gMDsKLQkJCSplcnJv
ciA9IHNjdHBfYWRkcl9tZ210X2VwX3NhKGlucCwgYWRkcl90b3VzZSwKLQkJCQkJCSAgICAgIFND
VFBfQUREX0lQX0FERFJFU1MsCi0JCQkJCQkgICAgICB2cmZfaWQsIE5VTEwpOwotCQl9IGVsc2Ug
eworCQkqZXJyb3IgPSBzY3RwX2FkZHJfbWdtdF9lcF9zYShpbnAsIGFkZHJfdG9fdXNlLAorCQkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTQ1RQX0FERF9JUF9BRERSRVNTLCB2cmZfaWQp
OworCX0gZWxzZSB7CisJCWlmIChsZXAgIT0gaW5wKSB7CiAJCQkqZXJyb3IgPSBFQUREUklOVVNF
OwogCQl9Ci0JCWlmICgqZXJyb3IpCi0JCQlyZXR1cm47Ci0JfSBlbHNlIHsKLQkJLyoKLQkJICog
RklYOiBkZWNpZGUgd2hldGhlciB3ZSBhbGxvdyBhc3NvYyBiYXNlZAotCQkgKiBiaW5keAotCQkg
Ki8KKwkJU0NUUF9JTlBfREVDUl9SRUYobGVwKTsKIAl9CiB9CiAKQEAgLTczNDYsMTUgKzc3MzYs
MTUgQEAgc2N0cF9iaW5keF9hZGRfYWRkcmVzcyhzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNj
dHBfaW5wY2IgKmlucCwKICAqLwogdm9pZAogc2N0cF9iaW5keF9kZWxldGVfYWRkcmVzcyhzdHJ1
Y3Qgc2N0cF9pbnBjYiAqaW5wLAotCQkJICBzdHJ1Y3Qgc29ja2FkZHIgKnNhLCBzY3RwX2Fzc29j
X3QgYXNzb2NfaWQsCi0JCQkgIHVpbnQzMl90IHZyZl9pZCwgaW50ICplcnJvcikKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyICpzYSwgdWludDMyX3QgdnJmX2lkLCBp
bnQgKmVycm9yKQogewotCXN0cnVjdCBzb2NrYWRkciAqYWRkcl90b3VzZTsKKwlzdHJ1Y3Qgc29j
a2FkZHIgKmFkZHJfdG9fdXNlOwogI2lmIGRlZmluZWQoSU5FVCkgJiYgZGVmaW5lZChJTkVUNikK
KwlzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW42OwogCXN0cnVjdCBzb2NrYWRkcl9pbiBzaW47CiAj
ZW5kaWYKICNpZmRlZiBTQ1RQX01WUkYKLQlpbnQgaSwgZm5kID0gMDsKKwlpbnQgaTsKICNlbmRp
ZgogCiAJLyogc2VlIGlmIHdlJ3JlIGJvdW5kIGFsbCBhbHJlYWR5ISAqLwpAQCAtNzM2NywyMyAr
Nzc1NywxOCBAQCBzY3RwX2JpbmR4X2RlbGV0ZV9hZGRyZXNzKHN0cnVjdCBzY3RwX2lucGNiICpp
bnAsCiAJLyogSXMgdGhlIFZSRiBvbmUgd2UgaGF2ZSAqLwogCWZvciAoaSA9IDA7IGkgPCBpbnAt
Pm51bV92cmZzOyBpKyspIHsKIAkJaWYgKHZyZl9pZCA9PSBpbnAtPm1fdnJmX2lkc1tpXSkgewot
CQkJZm5kID0gMTsKIAkJCWJyZWFrOwogCQl9CiAJfQotCWlmICghZm5kKSB7CisJaWYgKGkgPT0g
aW5wLT5udW1fdnJmcykgewogCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwg
U0NUUF9GUk9NX1NDVFBVVElMLCBFSU5WQUwpOwogCQkqZXJyb3IgPSBFSU5WQUw7CiAJCXJldHVy
bjsKIAl9CiAjZW5kaWYKLQlhZGRyX3RvdXNlID0gc2E7CisJc3dpdGNoIChzYS0+c2FfZmFtaWx5
KSB7CiAjaWZkZWYgSU5FVDYKLQlpZiAoc2EtPnNhX2ZhbWlseSA9PSBBRl9JTkVUNikgewotI2lm
ZGVmIElORVQKLQkJc3RydWN0IHNvY2thZGRyX2luNiAqc2luNjsKLSNlbmRpZgotCisJY2FzZSBB
Rl9JTkVUNjoKICNpZmRlZiBIQVZFX1NBX0xFTgogCQlpZiAoc2EtPnNhX2xlbiAhPSBzaXplb2Yo
c3RydWN0IHNvY2thZGRyX2luNikpIHsKIAkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxM
LCBOVUxMLCBTQ1RQX0ZST01fU0NUUFVUSUwsIEVJTlZBTCk7CkBAIC03Mzk4LDcgKzc3ODMsNyBA
QCBzY3RwX2JpbmR4X2RlbGV0ZV9hZGRyZXNzKHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCQly
ZXR1cm47CiAJCX0KICNpZmRlZiBJTkVUCi0JCXNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAq
KWFkZHJfdG91c2U7CisJCXNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKXNhOwogCQlpZiAo
SU42X0lTX0FERFJfVjRNQVBQRUQoJnNpbjYtPnNpbjZfYWRkcikpIHsKIAkJCWlmICgoaW5wLT5z
Y3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfQk9VTkRfVjYpICYmCiAJCQkgICAgU0NUUF9JUFY2
X1Y2T05MWShpbnApKSB7CkBAIC03NDA4LDEzICs3NzkzLDE3IEBAIHNjdHBfYmluZHhfZGVsZXRl
X2FkZHJlc3Moc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJCQlyZXR1cm47CiAJCQl9CiAJCQlp
bjZfc2luNl8yX3Npbigmc2luLCBzaW42KTsKLQkJCWFkZHJfdG91c2UgPSAoc3RydWN0IHNvY2th
ZGRyICopJnNpbjsKKwkJCWFkZHJfdG9fdXNlID0gKHN0cnVjdCBzb2NrYWRkciAqKSZzaW47CisJ
CX0gZWxzZSB7CisJCQlhZGRyX3RvX3VzZSA9IHNhOwogCQl9CisjZWxzZQorCQlhZGRyX3RvX3Vz
ZSA9IHNhOwogI2VuZGlmCi0JfQorCQlicmVhazsKICNlbmRpZgogI2lmZGVmIElORVQKLQlpZiAo
c2EtPnNhX2ZhbWlseSA9PSBBRl9JTkVUKSB7CisJY2FzZSBBRl9JTkVUOgogI2lmZGVmIEhBVkVf
U0FfTEVOCiAJCWlmIChzYS0+c2FfbGVuICE9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKSB7
CiAJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBV
VElMLCBFSU5WQUwpOwpAQCAtNzQyOSwyNCArNzgxOCwxNyBAQCBzY3RwX2JpbmR4X2RlbGV0ZV9h
ZGRyZXNzKHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCQkqZXJyb3IgPSBFSU5WQUw7CiAJCQly
ZXR1cm47CiAJCX0KLQl9CisJCWFkZHJfdG9fdXNlID0gc2E7CisJCWJyZWFrOwogI2VuZGlmCi0J
LyoKLQkgKiBObyBsb2NrIHJlcXVpcmVkIG1nbXRfZXBfc2EgZG9lcyBpdHMgb3duIGxvY2tpbmcu
Ci0JICogSWYgdGhlIEZJWDogYmVsb3cgaXMgZXZlciBjaGFuZ2VkIHdlIG1heSBuZWVkIHRvCi0J
ICogbG9jayBiZWZvcmUgY2FsbGluZyBhc3NvY2lhdGlvbiBsZXZlbCBiaW5kaW5nLgotCSAqLwot
CWlmIChhc3NvY19pZCA9PSAwKSB7Ci0JCS8qIGRlbGV0ZSB0aGUgYWRkcmVzcyAqLwotCQkqZXJy
b3IgPSBzY3RwX2FkZHJfbWdtdF9lcF9zYShpbnAsIGFkZHJfdG91c2UsCi0JCQkJCSAgICAgIFND
VFBfREVMX0lQX0FERFJFU1MsCi0JCQkJCSAgICAgIHZyZl9pZCwgTlVMTCk7Ci0JfSBlbHNlIHsK
LQkJLyoKLQkJICogRklYOiBkZWNpZGUgd2hldGhlciB3ZSBhbGxvdyBhc3NvYyBiYXNlZAotCQkg
KiBiaW5keAotCQkgKi8KKwlkZWZhdWx0OgorCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVM
TCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBVVElMLCBFSU5WQUwpOworCQkqZXJyb3IgPSBFSU5WQUw7
CisJCXJldHVybjsKIAl9CisJLyogTm8gbG9jayByZXF1aXJlZCBtZ210X2VwX3NhIGRvZXMgaXRz
IG93biBsb2NraW5nLiAqLworCSplcnJvciA9IHNjdHBfYWRkcl9tZ210X2VwX3NhKGlucCwgYWRk
cl90b191c2UsIFNDVFBfREVMX0lQX0FERFJFU1MsCisJICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdnJmX2lkKTsKIH0KIAogLyoKQEAgLTc0NjAsNyArNzg0Miw3IEBAIHNjdHBfbG9jYWxf
YWRkcl9jb3VudChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IpCiAjaWYgZGVmaW5lZChJTkVUKQogCWlu
dCBpcHY0X2xvY2FsX3Njb3BlLCBpcHY0X2FkZHJfbGVnYWw7CiAjZW5kaWYKLSNpZiBkZWZpbmVk
IChJTkVUNikKKyNpZiBkZWZpbmVkKElORVQ2KQogCWludCBsb2NhbF9zY29wZSwgc2l0ZV9zY29w
ZSwgaXB2Nl9hZGRyX2xlZ2FsOwogI2VuZGlmCiAjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQpA
QCAtNzUxNiw3ICs3ODk4LDcgQEAgc2N0cF9sb2NhbF9hZGRyX2NvdW50KHN0cnVjdCBzY3RwX3Rj
YiAqc3RjYikKIAkJCQkJCQkvKiBza2lwIHVuc3BlY2lmaWVkIGFkZHJzICovCiAJCQkJCQkJY29u
dGludWU7CiAJCQkJCQl9Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCQkJaWYgKHByaXNvbl9j
aGVja19pcDQoc3RjYi0+c2N0cF9lcC0+aXBfaW5wLmlucC5pbnBfY3JlZCwKIAkJCQkJCSAgICAg
ICAgICAgICAgICAgICAgICZzaW4tPnNpbl9hZGRyKSAhPSAwKSB7CiAJCQkJCQkJY29udGludWU7
CkBAIC03NTQ1LDcgKzc5MjcsNyBAQCBzY3RwX2xvY2FsX2FkZHJfY291bnQoc3RydWN0IHNjdHBf
dGNiICpzdGNiKQogCQkJCQkJaWYgKElONl9JU19BRERSX1VOU1BFQ0lGSUVEKCZzaW42LT5zaW42
X2FkZHIpKSB7CiAJCQkJCQkJY29udGludWU7CiAJCQkJCQl9Ci0jaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCQkJCQkJaWYgKHByaXNvbl9jaGVja19pcDYoc3RjYi0+c2N0cF9lcC0+aXBfaW5wLmlucC5p
bnBfY3JlZCwKIAkJCQkJCSAgICAgICAgICAgICAgICAgICAgICZzaW42LT5zaW42X2FkZHIpICE9
IDApIHsKIAkJCQkJCQljb250aW51ZTsKQEAgLTc2MjcsNyArODAwOSw3IEBAIHNjdHBfbG9nX3Ry
YWNlKHVpbnQzMl90IHN1YnN5cywgY29uc3QgY2hhciAqc3RyIFNDVFBfVU5VU0VELCB1aW50MzJf
dCBhLCB1aW50MzJfCiB7CiAJdWludDMyX3Qgc2F2ZWluZGV4LCBuZXdpbmRleDsKIAotI2lmIGRl
ZmluZWQoX19XaW5kb3dzX18pCisjaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAJaWYgKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9sb2cpID09IE5VTEwpIHsKIAkJ
cmV0dXJuOwogCX0KQEAgLTc2NzQsOCArODA1Niw3IEBAIHNjdHBfbG9nX3RyYWNlKHVpbnQzMl90
IHN1YnN5cywgY29uc3QgY2hhciAqc3RyIFNDVFBfVU5VU0VELCB1aW50MzJfdCBhLCB1aW50MzJf
CiB9CiAKICNlbmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCi0jaWYgX19GcmVlQlNEX3Zl
cnNpb24gPj0gODAwMDQ0CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKIHN0YXRpYyB2b2lkCiBzY3RwX3JlY3ZfdWRwX3R1bm5lbGVkX3BhY2tldChz
dHJ1Y3QgbWJ1ZiAqbSwgaW50IG9mZiwgc3RydWN0IGlucGNiICppbnAsCiAgICAgY29uc3Qgc3Ry
dWN0IHNvY2thZGRyICpzYSBTQ1RQX1VOVVNFRCwgdm9pZCAqY3R4IFNDVFBfVU5VU0VEKQpAQCAt
NzcyOSwyOSArODExMCwxNyBAQCBzY3RwX3JlY3ZfdWRwX3R1bm5lbGVkX3BhY2tldChzdHJ1Y3Qg
bWJ1ZiAqbSwgaW50IG9mZiwgc3RydWN0IGlucGNiICppbnAsCiAJICogU2luY2UgQ1NVTV9EQVRB
X1ZBTElEID09IENTVU1fU0NUUF9WQUxJRCB0aGlzIHdvdWxkIGltcGx5IHRoYXQKIAkgKiB0aGUg
SFcgYWxzbyB2ZXJpZmllZCB0aGUgU0NUUCBjaGVja3N1bS4gVGhlcmVmb3JlLCBjbGVhciB0aGUg
Yml0LgogCSAqLwotI2lmIF9fRnJlZUJTRF92ZXJzaW9uID4gMTAwMDA0OQogCVNDVFBEQkcoU0NU
UF9ERUJVR19DUkNPRkZMT0FELAogCSAgICAgICAgInNjdHBfcmVjdl91ZHBfdHVubmVsZWRfcGFj
a2V0KCk6IFBhY2tldCBvZiBsZW5ndGggJWQgcmVjZWl2ZWQgb24gJXMgd2l0aCBjc3VtX2ZsYWdz
IDB4JWIuXG4iLAogCSAgICAgICAgbS0+bV9wa3RoZHIubGVuLAogCSAgICAgICAgaWZfbmFtZSht
LT5tX3BrdGhkci5yY3ZpZiksCiAJICAgICAgICAoaW50KW0tPm1fcGt0aGRyLmNzdW1fZmxhZ3Ms
IENTVU1fQklUUyk7Ci0jZWxzZQotCVNDVFBEQkcoU0NUUF9ERUJVR19DUkNPRkZMT0FELAotCSAg
ICAgICAgInNjdHBfcmVjdl91ZHBfdHVubmVsZWRfcGFja2V0KCk6IFBhY2tldCBvZiBsZW5ndGgg
JWQgcmVjZWl2ZWQgb24gJXMgd2l0aCBjc3VtX2ZsYWdzIDB4JXguXG4iLAotCSAgICAgICAgbS0+
bV9wa3RoZHIubGVuLAotCSAgICAgICAgaWZfbmFtZShtLT5tX3BrdGhkci5yY3ZpZiksCi0JICAg
ICAgICBtLT5tX3BrdGhkci5jc3VtX2ZsYWdzKTsKLSNlbmRpZgogCW0tPm1fcGt0aGRyLmNzdW1f
ZmxhZ3MgJj0gfkNTVU1fREFUQV9WQUxJRDsKIAlpcGggPSBtdG9kKG0sIHN0cnVjdCBpcCAqKTsK
IAlzd2l0Y2ggKGlwaC0+aXBfdikgewogI2lmZGVmIElORVQKIAljYXNlIElQVkVSU0lPTjoKLSNp
ZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSAxMDAwMDAwCiAJCWlwaC0+aXBfbGVuID0gaHRvbnMobnRv
aHMoaXBoLT5pcF9sZW4pIC0gc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpKTsKLSNlbHNlCi0JCWlwaC0+
aXBfbGVuIC09IHNpemVvZihzdHJ1Y3QgdWRwaGRyKTsKLSNlbmRpZgogCQlzY3RwX2lucHV0X3dp
dGhfcG9ydChtLCBvZmYsIHBvcnQpOwogCQlicmVhazsKICNlbmRpZgpAQCAtNzc3MCw5ICs4MTM5
LDcgQEAgc2N0cF9yZWN2X3VkcF90dW5uZWxlZF9wYWNrZXQoc3RydWN0IG1idWYgKm0sIGludCBv
ZmYsIHN0cnVjdCBpbnBjYiAqaW5wLAogIG91dDoKIAltX2ZyZWVtKG0pOwogfQotI2VuZGlmCiAK
LSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSAxMTAwMDAwCiAjaWZkZWYgSU5FVAogc3RhdGljIHZv
aWQKIHNjdHBfcmVjdl9pY21wX3R1bm5lbGVkX3BhY2tldChpbnQgY21kLCBzdHJ1Y3Qgc29ja2Fk
ZHIgKnNhLCB2b2lkICp2aXAsIHZvaWQgKmN0eCBTQ1RQX1VOVVNFRCkKQEAgLTc4NzMsMTcgKzgy
NDAsMjUgQEAgc2N0cF9yZWN2X2ljbXBfdHVubmVsZWRfcGFja2V0KGludCBjbWQsIHN0cnVjdCBz
b2NrYWRkciAqc2EsIHZvaWQgKnZpcCwgdm9pZCAqY3QKIAkJc2N0cF9ub3RpZnkoaW5wLCBzdGNi
LCBuZXQsIHR5cGUsIGNvZGUsCiAJCSAgICAgICAgICAgIG50b2hzKGlubmVyX2lwLT5pcF9sZW4p
LAogCQkgICAgICAgICAgICAodWludDMyX3QpbnRvaHMoaWNtcC0+aWNtcF9uZXh0bXR1KSk7Ci0J
fSBlbHNlIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA8
IDUwMDAwMAotCQkvKgotCQkgKiBYWFggbXVzdCBiZSBmaXhlZCBmb3IgNS54IGFuZCBoaWdoZXIs
IGxlYXZlIGZvcgotCQkgKiA0LngKLQkJICovCi0JCWlmIChQUkNfSVNfUkVESVJFQ1QoY21kKSAm
JiAoaW5wICE9IE5VTEwpKSB7Ci0JCQlpbl9ydGNoYW5nZSgoc3RydWN0IGlucGNiICopaW5wLAot
CQkJICAgIGluZXRjdGxlcnJtYXBbY21kXSk7CisjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQor
CQlpZiAoIShzdGNiLT5zY3RwX2VwLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfU09DS0VU
X0dPTkUpICYmCisJCSAgICAoc3RjYi0+c2N0cF9zb2NrZXQgIT0gTlVMTCkpIHsKKwkJCXN0cnVj
dCBzb2NrZXQgKnVwY2FsbF9zb2NrZXQ7CisKKwkJCXVwY2FsbF9zb2NrZXQgPSBzdGNiLT5zY3Rw
X3NvY2tldDsKKwkJCVNPQ0tfTE9DSyh1cGNhbGxfc29ja2V0KTsKKwkJCXNvcmVmKHVwY2FsbF9z
b2NrZXQpOworCQkJU09DS19VTkxPQ0sodXBjYWxsX3NvY2tldCk7CisJCQlpZiAoKHVwY2FsbF9z
b2NrZXQtPnNvX3VwY2FsbCAhPSBOVUxMKSAmJgorCQkJICAgICh1cGNhbGxfc29ja2V0LT5zb19l
cnJvciAhPSAwKSkgeworCQkJCSgqdXBjYWxsX3NvY2tldC0+c29fdXBjYWxsKSh1cGNhbGxfc29j
a2V0LCB1cGNhbGxfc29ja2V0LT5zb191cGNhbGxhcmcsIE1fTk9XQUlUKTsKKwkJCX0KKwkJCUFD
Q0VQVF9MT0NLKCk7CisJCQlTT0NLX0xPQ0sodXBjYWxsX3NvY2tldCk7CisJCQlzb3JlbGUodXBj
YWxsX3NvY2tldCk7CiAJCX0KICNlbmRpZgorCX0gZWxzZSB7CiAJCWlmICgoc3RjYiA9PSBOVUxM
KSAmJiAoaW5wICE9IE5VTEwpKSB7CiAJCQkvKiByZWR1Y2UgcmVmLWNvdW50ICovCiAJCQlTQ1RQ
X0lOUF9XTE9DSyhpbnApOwpAQCAtNzk0NSw3ICs4MzIwLDcgQEAgc2N0cF9yZWN2X2ljbXA2X3R1
bm5lbGVkX3BhY2tldChpbnQgY21kLCBzdHJ1Y3Qgc29ja2FkZHIgKnNhLCB2b2lkICpkLCB2b2lk
ICpjdHgKICNlbmRpZgogCXNyYy5zaW42X3BvcnQgPSBzaC5zcmNfcG9ydDsKIAlzcmMuc2luNl9h
ZGRyID0gaXA2Y3AtPmlwNmNfaXA2LT5pcDZfc3JjOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlp
ZiAoaW42X3NldHNjb3BlKCZzcmMuc2luNl9hZGRyLCBpcDZjcC0+aXA2Y19tLT5tX3BrdGhkci5y
Y3ZpZiwgTlVMTCkgIT0gMCkgewogCQlyZXR1cm47CiAJfQpAQCAtNzk1Nyw3ICs4MzMyLDcgQEAg
c2N0cF9yZWN2X2ljbXA2X3R1bm5lbGVkX3BhY2tldChpbnQgY21kLCBzdHJ1Y3Qgc29ja2FkZHIg
KnNhLCB2b2lkICpkLCB2b2lkICpjdHgKICNlbmRpZgogCWRzdC5zaW42X3BvcnQgPSBzaC5kZXN0
X3BvcnQ7CiAJZHN0LnNpbjZfYWRkciA9IGlwNmNwLT5pcDZjX2lwNi0+aXA2X2RzdDsKLSNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiAJaWYgKGluNl9zZXRzY29wZSgmZHN0LnNpbjZfYWRkciwgaXA2Y3At
PmlwNmNfbS0+bV9wa3RoZHIucmN2aWYsIE5VTEwpICE9IDApIHsKIAkJcmV0dXJuOwogCX0KQEAg
LTc5ODgsNyArODM2Myw3IEBAIHNjdHBfcmVjdl9pY21wNl90dW5uZWxlZF9wYWNrZXQoaW50IGNt
ZCwgc3RydWN0IHNvY2thZGRyICpzYSwgdm9pZCAqZCwgdm9pZCAqY3R4CiAJCQkJcmV0dXJuOwog
CQkJfQogCQl9IGVsc2UgewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCWlmIChpcDZjcC0+aXA2
Y19tLT5tX3BrdGhkci5sZW4gPj0KIAkJCSAgICBpcDZjcC0+aXA2Y19vZmYgKyBzaXplb2Yoc3Ry
dWN0IHVkcGhkcikgKwogCQkJICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3Qgc2N0
cGhkcikgKwpAQCAtODAzOCwxMyArODQxMywyNSBAQCBzY3RwX3JlY3ZfaWNtcDZfdHVubmVsZWRf
cGFja2V0KGludCBjbWQsIHN0cnVjdCBzb2NrYWRkciAqc2EsIHZvaWQgKmQsIHZvaWQgKmN0eAog
CQl9CiAJCXNjdHA2X25vdGlmeShpbnAsIHN0Y2IsIG5ldCwgdHlwZSwgY29kZSwKIAkJCSAgICAg
bnRvaGwoaXA2Y3AtPmlwNmNfaWNtcDYtPmljbXA2X210dSkpOwotCX0gZWxzZSB7Ci0jaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPCA1MDAwMDAKLQkJaWYgKFBS
Q19JU19SRURJUkVDVChjbWQpICYmIChpbnAgIT0gTlVMTCkpIHsKLQkJCWluNl9ydGNoYW5nZSgo
c3RydWN0IGluNnBjYiAqKWlucCwKLQkJCSAgICBpbmV0NmN0bGVycm1hcFtjbWRdKTsKKyNpZiBk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCWlmICghKHN0Y2ItPnNjdHBfZXAtPnNjdHBfZmxhZ3Mg
JiBTQ1RQX1BDQl9GTEFHU19TT0NLRVRfR09ORSkgJiYKKwkJICAgIChzdGNiLT5zY3RwX3NvY2tl
dCAhPSBOVUxMKSkgeworCQkJc3RydWN0IHNvY2tldCAqdXBjYWxsX3NvY2tldDsKKworCQkJdXBj
YWxsX3NvY2tldCA9IHN0Y2ItPnNjdHBfc29ja2V0OworCQkJU09DS19MT0NLKHVwY2FsbF9zb2Nr
ZXQpOworCQkJc29yZWYodXBjYWxsX3NvY2tldCk7CisJCQlTT0NLX1VOTE9DSyh1cGNhbGxfc29j
a2V0KTsKKwkJCWlmICgodXBjYWxsX3NvY2tldC0+c29fdXBjYWxsICE9IE5VTEwpICYmCisJCQkg
ICAgKHVwY2FsbF9zb2NrZXQtPnNvX2Vycm9yICE9IDApKSB7CisJCQkJKCp1cGNhbGxfc29ja2V0
LT5zb191cGNhbGwpKHVwY2FsbF9zb2NrZXQsIHVwY2FsbF9zb2NrZXQtPnNvX3VwY2FsbGFyZywg
TV9OT1dBSVQpOworCQkJfQorCQkJQUNDRVBUX0xPQ0soKTsKKwkJCVNPQ0tfTE9DSyh1cGNhbGxf
c29ja2V0KTsKKwkJCXNvcmVsZSh1cGNhbGxfc29ja2V0KTsKIAkJfQogI2VuZGlmCisJfSBlbHNl
IHsKIAkJaWYgKChzdGNiID09IE5VTEwpICYmIChpbnAgIT0gTlVMTCkpIHsKIAkJCS8qIHJlZHVj
ZSBpbnAncyByZWYtY291bnQgKi8KIAkJCVNDVFBfSU5QX1dMT0NLKGlucCk7CkBAIC04MDU3LDcg
Kzg0NDQsNiBAQCBzY3RwX3JlY3ZfaWNtcDZfdHVubmVsZWRfcGFja2V0KGludCBjbWQsIHN0cnVj
dCBzb2NrYWRkciAqc2EsIHZvaWQgKmQsIHZvaWQgKmN0eAogCX0KIH0KICNlbmRpZgotI2VuZGlm
CiAKIHZvaWQKIHNjdHBfb3Zlcl91ZHBfc3RvcCh2b2lkKQpAQCAtODA4Miw3ICs4NDY4LDYgQEAg
c2N0cF9vdmVyX3VkcF9zdG9wKHZvaWQpCiBpbnQKIHNjdHBfb3Zlcl91ZHBfc3RhcnQodm9pZCkK
IHsKLSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDAwNDQKIAl1aW50MTZfdCBwb3J0OwogCWlu
dCByZXQ7CiAjaWZkZWYgSU5FVApAQCAtODEyMSw5ICs4NTA2LDcgQEAgc2N0cF9vdmVyX3VkcF9z
dGFydCh2b2lkKQogCS8qIENhbGwgdGhlIHNwZWNpYWwgVURQIGhvb2suICovCiAJaWYgKChyZXQg
PSB1ZHBfc2V0X2tlcm5lbF90dW5uZWxpbmcoU0NUUF9CQVNFX0lORk8odWRwNF90dW5fc29ja2V0
KSwKIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3RwX3JlY3ZfdWRwX3R1
bm5lbGVkX3BhY2tldCwKLSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSAxMTAwMDAwCiAJICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2N0cF9yZWN2X2ljbXBfdHVubmVsZWRfcGFj
a2V0LAotI2VuZGlmCiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCkp
KSB7CiAJCXNjdHBfb3Zlcl91ZHBfc3RvcCgpOwogCQlyZXR1cm4gKHJldCk7CkBAIC04MTQ5LDkg
Kzg1MzIsNyBAQCBzY3RwX292ZXJfdWRwX3N0YXJ0KHZvaWQpCiAJLyogQ2FsbCB0aGUgc3BlY2lh
bCBVRFAgaG9vay4gKi8KIAlpZiAoKHJldCA9IHVkcF9zZXRfa2VybmVsX3R1bm5lbGluZyhTQ1RQ
X0JBU0VfSU5GTyh1ZHA2X3R1bl9zb2NrZXQpLAogCSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNjdHBfcmVjdl91ZHBfdHVubmVsZWRfcGFja2V0LAotI2lmIF9fRnJlZUJTRF92
ZXJzaW9uID49IDExMDAwMDAKIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
Y3RwX3JlY3ZfaWNtcDZfdHVubmVsZWRfcGFja2V0LAotI2VuZGlmCiAJICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTlVMTCkpKSB7CiAJCXNjdHBfb3Zlcl91ZHBfc3RvcCgpOwog
CQlyZXR1cm4gKHJldCk7CkBAIC04MTY4LDkgKzg1NDksNiBAQCBzY3RwX292ZXJfdWRwX3N0YXJ0
KHZvaWQpCiAJfQogI2VuZGlmCiAJcmV0dXJuICgwKTsKLSNlbHNlCi0JcmV0dXJuIChFTk9UU1VQ
KTsKLSNlbmRpZgogfQogI2VuZGlmCiAKQEAgLTgyMDgsNyArODU4Niw3IEBAIHNjdHBfbWluX210
dSh1aW50MzJfdCBtdHUxLCB1aW50MzJfdCBtdHUyLCB1aW50MzJfdCBtdHUzKQogCX0KIH0KIAot
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKIHZvaWQKIHNjdHBfaGNfc2V0X210dSh1bmlvbiBzY3RwX3Nv
Y2tzdG9yZSAqYWRkciwgdWludDE2X3QgZmlibnVtLCB1aW50MzJfdCBtdHUpCiB7CkBAIC04MjU5
LDMgKzg2MzcsNTAgQEAgc2N0cF9oY19nZXRfbXR1KHVuaW9uIHNjdHBfc29ja3N0b3JlICphZGRy
LCB1aW50MTZfdCBmaWJudW0pCiAJcmV0dXJuICgodWludDMyX3QpdGNwX2hjX2dldG10dSgmaW5j
KSk7CiB9CiAjZW5kaWYKKwordm9pZAorc2N0cF9zZXRfc3RhdGUoc3RydWN0IHNjdHBfdGNiICpz
dGNiLCBpbnQgbmV3X3N0YXRlKQoreworI2lmIGRlZmluZWQoS0RUUkFDRV9IT09LUykKKwlpbnQg
b2xkX3N0YXRlID0gc3RjYi0+YXNvYy5zdGF0ZTsKKyNlbmRpZgorCisJS0FTU0VSVCgobmV3X3N0
YXRlICYgflNDVFBfU1RBVEVfTUFTSykgPT0gMCwKKwkgICAgICAgICgic2N0cF9zZXRfc3RhdGU6
IENhbid0IHNldCBzdWJzdGF0ZSAobmV3X3N0YXRlID0gJXgpIiwKKwkgICAgICAgIG5ld19zdGF0
ZSkpOworCXN0Y2ItPmFzb2Muc3RhdGUgPSAoc3RjYi0+YXNvYy5zdGF0ZSAmIH5TQ1RQX1NUQVRF
X01BU0spIHwgbmV3X3N0YXRlOworCWlmICgobmV3X3N0YXRlID09IFNDVFBfU1RBVEVfU0hVVERP
V05fUkVDRUlWRUQpIHx8CisJICAgIChuZXdfc3RhdGUgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9T
RU5UKSB8fAorCSAgICAobmV3X3N0YXRlID09IFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQp
KSB7CisJCVNDVFBfQ0xFQVJfU1VCU1RBVEUoc3RjYiwgU0NUUF9TVEFURV9TSFVURE9XTl9QRU5E
SU5HKTsKKwl9CisjaWYgZGVmaW5lZChLRFRSQUNFX0hPT0tTKQorCWlmICgoKG9sZF9zdGF0ZSAm
IFNDVFBfU1RBVEVfTUFTSykgIT0gbmV3X3N0YXRlKSAmJgorCSAgICAhKCgob2xkX3N0YXRlICYg
U0NUUF9TVEFURV9NQVNLKSA9PSBTQ1RQX1NUQVRFX0VNUFRZKSAmJgorCSAgICAgIChuZXdfc3Rh
dGUgPT0gU0NUUF9TVEFURV9JTlVTRSkpKSB7CisJCVNDVFBfUFJPQkU2KHN0YXRlX19jaGFuZ2Us
IE5VTEwsIHN0Y2IsIE5VTEwsIHN0Y2IsIE5VTEwsIG9sZF9zdGF0ZSk7CisJfQorI2VuZGlmCit9
CisKK3ZvaWQKK3NjdHBfYWRkX3N1YnN0YXRlKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgaW50IHN1
YnN0YXRlKQoreworI2lmIGRlZmluZWQoS0RUUkFDRV9IT09LUykKKwlpbnQgb2xkX3N0YXRlID0g
c3RjYi0+YXNvYy5zdGF0ZTsKKyNlbmRpZgorCisJS0FTU0VSVCgoc3Vic3RhdGUgJiBTQ1RQX1NU
QVRFX01BU0spID09IDAsCisJICAgICAgICAoInNjdHBfYWRkX3N1YnN0YXRlOiBDYW4ndCBzZXQg
c3RhdGUgKHN1YnN0YXRlID0gJXgpIiwKKwkgICAgICAgIHN1YnN0YXRlKSk7CisJc3RjYi0+YXNv
Yy5zdGF0ZSB8PSBzdWJzdGF0ZTsKKyNpZiBkZWZpbmVkKEtEVFJBQ0VfSE9PS1MpCisJaWYgKCgo
c3Vic3RhdGUgJiBTQ1RQX1NUQVRFX0FCT1VUX1RPX0JFX0ZSRUVEKSAmJgorCSAgICAgKChvbGRf
c3RhdGUgJiBTQ1RQX1NUQVRFX0FCT1VUX1RPX0JFX0ZSRUVEKSA9PSAwKSkgfHwKKwkgICAgKChz
dWJzdGF0ZSAmIFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORykgJiYKKwkgICAgICgob2xkX3N0
YXRlICYgU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HKSA9PSAwKSkpIHsKKwkJU0NUUF9QUk9C
RTYoc3RhdGVfX2NoYW5nZSwgTlVMTCwgc3RjYiwgTlVMTCwgc3RjYiwgTlVMTCwgb2xkX3N0YXRl
KTsKKwl9CisjZW5kaWYKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRp
bmV0L3NjdHB1dGlsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cHV0aWwuaApv
bGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDY5ZmU0ODQ5ODFjMWM0ZmUwZWVm
NDI5NTA4MDUyYTM3Y2NhYWYyZDQuLjc2NDYxNjk1MDU1ZTUyZjQ5YjQxNjhmMzJlMTI2N2IyMTEx
NjU2MGEKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHB1dGlsLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3Vz
cnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHB1dGlsLmgKQEAgLTMyLDkgKzMyLDkgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZkZWYgX19GcmVl
QlNEX18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9u
ZXRpbmV0L3NjdHB1dGlsLmggMzI0NjE1IDIwMTctMTAtMTQgMTA6MDI6NTlaIHR1ZXhlbiAkIik7
CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cHV0aWwuaCAzNjQyNjgg
MjAyMC0wOC0xNiAxMTo1MDozN1ogdHVleGVuICQiKTsKICNlbmRpZgogCiAjaWZuZGVmIF9ORVRJ
TkVUX1NDVFBfVVRJTF9IXwpAQCAtNTcsNyArNTcsNyBAQCB2b2lkIHNjdHBfbV9mcmVlbShzdHJ1
Y3QgbWJ1ZiAqbSk7CiAjZGVmaW5lIHNjdHBfbV9mcmVlbSBtX2ZyZWVtCiAjZW5kaWYKIAotI2lm
IGRlZmluZWQoU0NUUF9MT0NBTF9UUkFDRV9CVUYpIHx8IGRlZmluZWQoX19BUFBMRV9fKQorI2lm
IGRlZmluZWQoU0NUUF9MT0NBTF9UUkFDRV9CVUYpCiB2b2lkCiBzY3RwX2xvZ190cmFjZSh1aW50
MzJfdCBmciwgY29uc3QgY2hhciAqc3RyIFNDVFBfVU5VU0VELCB1aW50MzJfdCBhLCB1aW50MzJf
dCBiLCB1aW50MzJfdCBjLCB1aW50MzJfdCBkLCB1aW50MzJfdCBlLCB1aW50MzJfdCBmKTsKICNl
bmRpZgpAQCAtOTQsNiArOTQsMTQgQEAgc2N0cF9ub3RpZnlfc3RyZWFtX3Jlc2V0X2FkZChzdHJ1
Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQxNl90IG51bWJlcmluLAogdm9pZAogc2N0cF9ub3RpZnlf
c3RyZWFtX3Jlc2V0X3RzbihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQzMl90IHNlbmRpbmdf
dHNuLCB1aW50MzJfdCByZWN2X3RzbiwgaW50IGZsYWcpOwogCisvKgorICogTk9URTogc2N0cF90
aW1lcl9zdGFydCgpIHdpbGwgaW5jcmVtZW50IHRoZSByZWZlcmVuY2UgY291bnQgb2YgYW55IHJl
bGV2YW50CisgKiBzdHJ1Y3R1cmUgdGhlIHRpbWVyIGlzIHJlZmVyZW5jaW5nLCBpbiBvcmRlciB0
byBwcmV2ZW50IGEgcmFjZSBjb25kaXRpb24KKyAqIGJldHdlZW4gdGhlIHRpbWVyIGV4ZWN1dGlu
ZyBhbmQgdGhlIHN0cnVjdHVyZSBiZWluZyBmcmVlZC4KKyAqCisgKiBXaGVuIHRoZSB0aW1lciBm
aXJlcyBvciBzY3RwX3RpbWVyX3N0b3AoKSBpcyBjYWxsZWQsIHRoZXNlIHJlZmVyZW5jZXMgYXJl
CisgKiByZW1vdmVkLgorICovCiB2b2lkCiBzY3RwX3RpbWVyX3N0YXJ0KGludCwgc3RydWN0IHNj
dHBfaW5wY2IgKiwgc3RydWN0IHNjdHBfdGNiICosCiAgICAgc3RydWN0IHNjdHBfbmV0cyAqKTsK
QEAgLTExMSw3ICsxMTksNyBAQCBzY3RwX210dV9zaXplX3Jlc2V0KHN0cnVjdCBzY3RwX2lucGNi
ICosIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICosIHVpbnQzMl90KTsKIHZvaWQKIHNjdHBfd2Fr
ZXVwX3RoZV9yZWFkX3NvY2tldChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90
Y2IgKnN0Y2IsCiAgICAgaW50IHNvX2xvY2tlZAotI2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYg
IWRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgIShkZWZpbmVkKF9fQVBQTEVfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAgICAgU0NUUF9VTlVTRUQKICNlbmRpZgogKTsK
QEAgLTEzMCwxMSArMTM4LDcgQEAgc2N0cF9hZGRfdG9fcmVhZHEoc3RydWN0IHNjdHBfaW5wY2Ig
KmlucCwKICAgICBzdHJ1Y3Qgc29ja2J1ZiAqc2IsCiAgICAgaW50IGVuZCwKICAgICBpbnQgaW5w
cmVhZF9sb2NrZWQsCi0gICAgaW50IHNvX2xvY2tlZAotI2lmICFkZWZpbmVkKF9fQVBQTEVfXykg
JiYgIWRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCi0gICAgU0NUUF9VTlVTRUQKLSNlbmRp
ZgotICAgICk7CisgICAgaW50IHNvX2xvY2tlZCk7CiAKIHZvaWQgc2N0cF9pdGVyYXRvcl93b3Jr
ZXIodm9pZCk7CiAKQEAgLTE0NCw3ICsxNDgsNyBAQCB1aW50MzJfdCBzY3RwX2dldF9uZXh0X210
dSh1aW50MzJfdCk7CiB2b2lkCiBzY3RwX3RpbWVvdXRfaGFuZGxlcih2b2lkICopOwogCi11aW50
MzJfdAoraW50CiBzY3RwX2NhbGN1bGF0ZV9ydG8oc3RydWN0IHNjdHBfdGNiICosIHN0cnVjdCBz
Y3RwX2Fzc29jaWF0aW9uICosCiAgICAgc3RydWN0IHNjdHBfbmV0cyAqLCBzdHJ1Y3QgdGltZXZh
bCAqLCBpbnQpOwogCkBAIC0xNjIsMTEgKzE2Niw3IEBAIHNjdHBfYWRkX3BhZF90b21idWYoc3Ry
dWN0IG1idWYgKiwgaW50KTsKIHN0cnVjdCBtYnVmICoKIHNjdHBfcGFkX2xhc3RtYnVmKHN0cnVj
dCBtYnVmICosIGludCwgc3RydWN0IG1idWYgKik7CiAKLXZvaWQgc2N0cF91bHBfbm90aWZ5KHVp
bnQzMl90LCBzdHJ1Y3Qgc2N0cF90Y2IgKiwgdWludDMyX3QsIHZvaWQgKiwgaW50Ci0jaWYgIWRl
ZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKLSAgICBT
Q1RQX1VOVVNFRAotI2VuZGlmCi0gICAgKTsKK3ZvaWQgc2N0cF91bHBfbm90aWZ5KHVpbnQzMl90
LCBzdHJ1Y3Qgc2N0cF90Y2IgKiwgdWludDMyX3QsIHZvaWQgKiwgaW50KTsKIAogdm9pZAogc2N0
cF9wdWxsX29mZl9jb250cm9sX3RvX25ld19pbnAoc3RydWN0IHNjdHBfaW5wY2IgKm9sZF9pbnAs
CkBAIC0xNzYsMjcgKzE3NiwyMiBAQCBzY3RwX3B1bGxfb2ZmX2NvbnRyb2xfdG9fbmV3X2lucChz
dHJ1Y3Qgc2N0cF9pbnBjYiAqb2xkX2lucCwKIAogdm9pZCBzY3RwX3N0b3BfdGltZXJzX2Zvcl9z
aHV0ZG93bihzdHJ1Y3Qgc2N0cF90Y2IgKik7CiAKLXZvaWQgc2N0cF9yZXBvcnRfYWxsX291dGJv
dW5kKHN0cnVjdCBzY3RwX3RjYiAqLCB1aW50MTZfdCwgaW50LCBpbnQKLSNpZiAhZGVmaW5lZChf
X0FQUExFX18pICYmICFkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQotICAgIFNDVFBfVU5V
U0VECi0jZW5kaWYKLSAgICApOworLyogU3RvcCBhbGwgdGltZXJzIGZvciBhc3NvY2lhdGlvbiBh
bmQgcmVtb3RlIGFkZHJlc3Nlcy4gKi8KK3ZvaWQgc2N0cF9zdG9wX2Fzc29jaWF0aW9uX3RpbWVy
cyhzdHJ1Y3Qgc2N0cF90Y2IgKiwgYm9vbCk7CisKK3ZvaWQgc2N0cF9yZXBvcnRfYWxsX291dGJv
dW5kKHN0cnVjdCBzY3RwX3RjYiAqLCB1aW50MTZfdCwgaW50KTsKIAogaW50IHNjdHBfZXhwYW5k
X21hcHBpbmdfYXJyYXkoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKiwgdWludDMyX3QpOwogCiB2
b2lkIHNjdHBfYWJvcnRfbm90aWZpY2F0aW9uKHN0cnVjdCBzY3RwX3RjYiAqLCB1aW50OF90LCB1
aW50MTZfdCwKLQkJCSAgICAgc3RydWN0IHNjdHBfYWJvcnRfY2h1bmsgKiwgaW50Ci0jaWYgIWRl
ZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKLSAgICBT
Q1RQX1VOVVNFRAotI2VuZGlmCi0gICAgKTsKKwkJCSAgICAgc3RydWN0IHNjdHBfYWJvcnRfY2h1
bmsgKiwgaW50KTsKIAogLyogV2UgYWJvcnQgcmVzcG9uZGluZyB0byBhbiBJUCBwYWNrZXQgZm9y
IHNvbWUgcmVhc29uICovCiB2b2lkCiBzY3RwX2Fib3J0X2Fzc29jaWF0aW9uKHN0cnVjdCBzY3Rw
X2lucGNiICosIHN0cnVjdCBzY3RwX3RjYiAqLCBzdHJ1Y3QgbWJ1ZiAqLAogICAgICAgICAgICAg
ICAgICAgICAgICBpbnQsIHN0cnVjdCBzb2NrYWRkciAqLCBzdHJ1Y3Qgc29ja2FkZHIgKiwKICAg
ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNjdHBoZHIgKiwgc3RydWN0IG1idWYgKiwKLSNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QsIHVpbnQz
Ml90LAogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90LCB1aW50MTZfdCk7
CkBAIC0yMDUsMTcgKzIwMCwxMyBAQCBzY3RwX2Fib3J0X2Fzc29jaWF0aW9uKHN0cnVjdCBzY3Rw
X2lucGNiICosIHN0cnVjdCBzY3RwX3RjYiAqLCBzdHJ1Y3QgbWJ1ZiAqLAogLyogV2UgY2hvb3Nl
IHRvIGFib3J0IHZpYSB1c2VyIGlucHV0ICovCiB2b2lkCiBzY3RwX2Fib3J0X2FuX2Fzc29jaWF0
aW9uKHN0cnVjdCBzY3RwX2lucGNiICosIHN0cnVjdCBzY3RwX3RjYiAqLAotICAgIHN0cnVjdCBt
YnVmICosIGludAotI2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoU0NUUF9TT19M
T0NLX1RFU1RJTkcpCi0gICAgU0NUUF9VTlVTRUQKLSNlbmRpZgotKTsKKyAgICBzdHJ1Y3QgbWJ1
ZiAqLCBpbnQpOwogCiB2b2lkIHNjdHBfaGFuZGxlX29vdGIoc3RydWN0IG1idWYgKiwgaW50LCBp
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyICosIHN0cnVjdCBzb2Nr
YWRkciAqLAogICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY3RwaGRyICosIHN0cnVjdCBz
Y3RwX2lucGNiICosCiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG1idWYgKiwKLSNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCwgdWludDMyX3Qs
IHVpbnQxNl90LAogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QsIHVpbnQx
Nl90KTsKQEAgLTIyMywxMCArMjE0LDkgQEAgdm9pZCBzY3RwX2hhbmRsZV9vb3RiKHN0cnVjdCBt
YnVmICosIGludCwgaW50LAogaW50IHNjdHBfY29ubmVjdHhfaGVscGVyX2FkZChzdHJ1Y3Qgc2N0
cF90Y2IgKnN0Y2IsIHN0cnVjdCBzb2NrYWRkciAqYWRkciwKICAgICBpbnQgdG90YWRkciwgaW50
ICplcnJvcik7CiAKLXN0cnVjdCBzY3RwX3RjYiAqCi1zY3RwX2Nvbm5lY3R4X2hlbHBlcl9maW5k
KHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzb2NrYWRkciAqYWRkciwKLSAgICB1bnNp
Z25lZCBpbnQgKnRvdGFkZHIsIHVuc2lnbmVkIGludCAqbnVtX3Y0LCB1bnNpZ25lZCBpbnQgKm51
bV92NiwKLSAgICBpbnQgKmVycm9yLCB1bnNpZ25lZCBpbnQgbGltaXQsIGludCAqYmFkX2FkZHIp
OworaW50CitzY3RwX2Nvbm5lY3R4X2hlbHBlcl9maW5kKHN0cnVjdCBzY3RwX2lucGNiICosIHN0
cnVjdCBzb2NrYWRkciAqLAorICAgIHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50ICosIHVuc2ln
bmVkIGludCAqLCB1bnNpZ25lZCBpbnQpOwogCiBpbnQgc2N0cF9pc190aGVyZV9hbl9hYm9ydF9o
ZXJlKHN0cnVjdCBtYnVmICosIGludCwgdWludDMyX3QgKik7CiAjaWZkZWYgSU5FVDYKQEAgLTI3
NywyMSArMjY3LDE2IEBAIHZvaWQgc2N0cF9wcmludF9hZGRyZXNzKHN0cnVjdCBzb2NrYWRkciAq
KTsKIAogaW50CiBzY3RwX3JlbGVhc2VfcHJfc2N0cF9jaHVuayhzdHJ1Y3Qgc2N0cF90Y2IgKiwg
c3RydWN0IHNjdHBfdG1pdF9jaHVuayAqLAotICAgIHVpbnQ4X3QsIGludAotI2lmICFkZWZpbmVk
KF9fQVBQTEVfXykgJiYgIWRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCi0gICAgU0NUUF9V
TlVTRUQKLSNlbmRpZgotKTsKKyAgICB1aW50OF90LCBpbnQpOwogCiBzdHJ1Y3QgbWJ1ZiAqc2N0
cF9nZW5lcmF0ZV9jYXVzZSh1aW50MTZfdCwgY2hhciAqKTsKIHN0cnVjdCBtYnVmICpzY3RwX2dl
bmVyYXRlX25vX3VzZXJfZGF0YV9jYXVzZSh1aW50MzJfdCk7CiAKIHZvaWQgc2N0cF9iaW5keF9h
ZGRfYWRkcmVzcyhzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKLQkJ
CSAgICBzdHJ1Y3Qgc29ja2FkZHIgKnNhLCBzY3RwX2Fzc29jX3QgYXNzb2NfaWQsCi0JCQkgICAg
dWludDMyX3QgdnJmX2lkLCBpbnQgKmVycm9yLCB2b2lkICpwKTsKLXZvaWQgc2N0cF9iaW5keF9k
ZWxldGVfYWRkcmVzcyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAotCQkJICAgICAgIHN0cnVjdCBz
b2NrYWRkciAqc2EsIHNjdHBfYXNzb2NfdCBhc3NvY19pZCwKLQkJCSAgICAgICB1aW50MzJfdCB2
cmZfaWQsIGludCAqZXJyb3IpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBz
b2NrYWRkciAqc2EsIHVpbnQzMl90IHZyZl9pZCwgaW50ICplcnJvciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2b2lkICpwKTsKK3ZvaWQgc2N0cF9iaW5keF9kZWxldGVfYWRkcmVzcyhz
dHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc29ja2FkZHIgKnNhLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHZyZl9pZCwgaW50ICplcnJvcik7CiAKIGludCBz
Y3RwX2xvY2FsX2FkZHJfY291bnQoc3RydWN0IHNjdHBfdGNiICpzdGNiKTsKIApAQCAtMzUzLDEx
ICszMzgsMTEgQEAgZG8geyBcCiB9IHdoaWxlICgwKQogCiAvKiBmdW5jdGlvbnMgdG8gc3RhcnQv
c3RvcCB1ZHAgdHVubmVsaW5nICovCi0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQo
X19GcmVlQlNEX18pCisjaWYgKGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fRnJlZUJT
RF9fKSkgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIHZvaWQgc2N0cF9vdmVyX3VkcF9zdG9w
KHZvaWQpOwogaW50IHNjdHBfb3Zlcl91ZHBfc3RhcnQodm9pZCk7CiAjZW5kaWYKLSNpZiBkZWZp
bmVkKF9fV2luZG93c19fKQorI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogdm9pZCBzY3RwX292ZXJfdWRwX3Jlc3RhcnQodm9pZCk7CiAjZW5kaWYKIApAQCAt
NDAzLDcgKzM4OCw3IEBAIHZvaWQgc2N0cF9sb2dfY2xvc2luZyhzdHJ1Y3Qgc2N0cF9pbnBjYiAq
aW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIGludDE2X3QgbG9jCiAKIHZvaWQgc2N0cF9sb2df
bG9jayhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQ4
X3QgZnJvbSk7CiB2b2lkIHNjdHBfbG9nX21heGJ1cnN0KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwg
c3RydWN0IHNjdHBfbmV0cyAqLCBpbnQsIGludCwgdWludDhfdCk7Ci12b2lkIHNjdHBfbG9nX2Js
b2NrKHVpbnQ4X3QsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICosIHNpemVfdCk7Cit2b2lkIHNj
dHBfbG9nX2Jsb2NrKHVpbnQ4X3QsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICosIHNzaXplX3Qp
Owogdm9pZCBzY3RwX2xvZ19yd25kKHVpbnQ4X3QsIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDMy
X3QpOwogdm9pZCBzY3RwX2xvZ19yd25kX3NldCh1aW50OF90LCB1aW50MzJfdCwgdWludDMyX3Qs
IHVpbnQzMl90LCB1aW50MzJfdCk7CiBpbnQgc2N0cF9maWxsX3N0YXRfbG9nKHZvaWQgKiwgc2l6
ZV90ICopOwpAQCAtNDIyLDkgKzQwNywxNiBAQCB2b2lkIHNjdHBfYXVkaXRfbG9nKHVpbnQ4X3Qs
IHVpbnQ4X3QpOwogCiAjZW5kaWYKIHVpbnQzMl90IHNjdHBfbWluX210dSh1aW50MzJfdCwgdWlu
dDMyX3QsIHVpbnQzMl90KTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiB2b2lkIHNjdHBfaGNfc2V0
X210dSh1bmlvbiBzY3RwX3NvY2tzdG9yZSAqLCB1aW50MTZfdCwgdWludDMyX3QpOwogdWludDMy
X3Qgc2N0cF9oY19nZXRfbXR1KHVuaW9uIHNjdHBfc29ja3N0b3JlICosIHVpbnQxNl90KTsKICNl
bmRpZgordm9pZCBzY3RwX3NldF9zdGF0ZShzdHJ1Y3Qgc2N0cF90Y2IgKiwgaW50KTsKK3ZvaWQg
c2N0cF9hZGRfc3Vic3RhdGUoc3RydWN0IHNjdHBfdGNiICosIGludCk7Cit1aW50MzJfdCBzY3Rw
X3RpY2tzX3RvX21zZWNzKHVpbnQzMl90KTsKK3VpbnQzMl90IHNjdHBfbXNlY3NfdG9fdGlja3Mo
dWludDMyX3QpOwordWludDMyX3Qgc2N0cF90aWNrc190b19zZWNzKHVpbnQzMl90KTsKK3VpbnQz
Ml90IHNjdHBfc2Vjc190b190aWNrcyh1aW50MzJfdCk7CisKICNlbmRpZgkJCQkvKiBfS0VSTkVM
ICovCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldDYvbWVz
b24uYnVpbGQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQ2L21lc29uLmJ1aWxkCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA0MzA3ZGY1OWUwNDYzMDVlZDhhYzFjZTgzZTMwMzgxNGQ3MzdiODAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQ2L21lc29uLmJ1aWxkCkBAIC0w
LDAgKzEgQEAKK3NvdXJjZXMgKz0gZmlsZXMoJ3NjdHA2X3VzcnJlcS5jJykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldDYvc2N0cDZfdXNycmVxLmMgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91
c3JzY3RwbGliL25ldGluZXQ2L3NjdHA2X3VzcnJlcS5jCmluZGV4IDVhNTdmZDZlN2IzNTM5MzBm
YWI4MDBiZGI1YTdlZTk3ZDExYmJkNjEuLjFmYzgxZGFhODdkZmRlODJmMjcwOGJkMzgzZDMyMjYx
NDU2NzFmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldDYvc2N0cDZf
dXNycmVxLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0Ni9zY3RwNl91c3JyZXEu
YwpAQCAtMzIsMTQgKzMyLDE0IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2lmZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLV9fRkJTRElE
KCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldDYvc2N0cDZfdXNycmVxLmMgMzMyMjczIDIwMTgt
MDQtMDggMTI6MDg6MjBaIHR1ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lz
L25ldGluZXQ2L3NjdHA2X3VzcnJlcS5jIDM2MTg5NSAyMDIwLTA2LTA3IDE0OjM5OjIwWiB0dWV4
ZW4gJCIpOwogI2VuZGlmCiAKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfb3MuaD4KICNpZmRlZiBJ
TkVUNgotI2lmZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxzeXMvcHJvYy5oPgogI2VuZGlmCiAjaW5j
bHVkZSA8bmV0aW5ldC9zY3RwX3BjYi5oPgpAQCAtNTgsMTggKzU4LDExIEBAIF9fRkJTRElEKCIk
RnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldDYvc2N0cDZfdXNycmVxLmMgMzMyMjczIDIwMTgtMDQt
MDggMTI6MDg6MjBaCiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX291dHB1dC5oPgogI2luY2x1ZGUg
PG5ldGluZXQvc2N0cF9ic2RfYWRkci5oPgogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9jcmMzMi5o
PgotI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgIWRlZmluZWQoX1dJ
TjMyKQogI2luY2x1ZGUgPG5ldGluZXQvaWNtcDYuaD4KICNpbmNsdWRlIDxuZXRpbmV0L3VkcC5o
PgogI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKLSNkZWZpbmUgQVBQTEVfRklMRV9O
TyA5Ci0jZW5kaWYKLSNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQotZXh0ZXJuIHN0cnVjdCBw
cm90b3N3IGluZXRzd1tdOwotI2VuZGlmCi0jaWYgZGVmaW5lZChfX1BhbmRhX18pIHx8IGRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBpbnQgaXA2X3Y2
b25seT0wOwogI2VuZGlmCiAjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQpAQCAtNzcsNyArNzAs
NyBAQCBpbnQgaXA2X3Y2b25seT0wOwogdm9pZAogaW42X3NpbjZfMl9zaW4oc3RydWN0IHNvY2th
ZGRyX2luICpzaW4sIHN0cnVjdCBzb2NrYWRkcl9pbjYgKnNpbjYpCiB7Ci0jaWYgZGVmaW5lZChf
X1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogCXVpbnQzMl90IHRl
bXA7CiAjZW5kaWYKIAltZW1zZXQoc2luLCAwLCBzaXplb2YoKnNpbikpOwpAQCAtODYsNyArNzks
NyBAQCBpbjZfc2luNl8yX3NpbihzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbiwgc3RydWN0IHNvY2th
ZGRyX2luNiAqc2luNikKICNlbmRpZgogCXNpbi0+c2luX2ZhbWlseSA9IEFGX0lORVQ7CiAJc2lu
LT5zaW5fcG9ydCA9IHNpbjYtPnNpbjZfcG9ydDsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29z
X1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJdGVtcCA9IHNpbjYtPnNpbjZfYWRkci5z
Nl9hZGRyMTZbN107CiAJdGVtcCA9IHRlbXAgPDwgMTY7CiAJdGVtcCA9IHRlbXAgfCBzaW42LT5z
aW42X2FkZHIuczZfYWRkcjE2WzZdOwpAQCAtMTA5LDcgKzEwMiw3IEBAIGluNl9zaW42XzJfc2lu
X2luX3NvY2soc3RydWN0IHNvY2thZGRyICpuYW0pCiB9CiAKIHZvaWQKLWluNl9zaW5fMl92NG1h
cHNpbjYoc3RydWN0IHNvY2thZGRyX2luICpzaW4sIHN0cnVjdCBzb2NrYWRkcl9pbjYgKnNpbjYp
CitpbjZfc2luXzJfdjRtYXBzaW42KGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbiAqc2luLCBzdHJ1
Y3Qgc29ja2FkZHJfaW42ICpzaW42KQogewogCW1lbXNldChzaW42LCAwLCBzaXplb2Yoc3RydWN0
IHNvY2thZGRyX2luNikpOwogIAlzaW42LT5zaW42X2ZhbWlseSA9IEFGX0lORVQ2OwpAQCAtMTE3
LDcgKzExMCw3IEBAIGluNl9zaW5fMl92NG1hcHNpbjYoc3RydWN0IHNvY2thZGRyX2luICpzaW4s
IHN0cnVjdCBzb2NrYWRkcl9pbjYgKnNpbjYpCiAJc2luNi0+c2luNl9sZW4gPSBzaXplb2Yoc3Ry
dWN0IHNvY2thZGRyX2luNik7CiAjZW5kaWYKIAlzaW42LT5zaW42X3BvcnQgPSBzaW4tPnNpbl9w
b3J0OwotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9X
SU4zMikKIAkoKHVpbnQzMl90ICopJnNpbjYtPnNpbjZfYWRkcilbMF0gPSAwOwogCSgodWludDMy
X3QgKikmc2luNi0+c2luNl9hZGRyKVsxXSA9IDA7CiAJKCh1aW50MzJfdCAqKSZzaW42LT5zaW42
X2FkZHIpWzJdID0gaHRvbmwoMHhmZmZmKTsKQEAgLTEzNiw4ICsxMjksNiBAQCBpbjZfc2luXzJf
djRtYXBzaW42KHN0cnVjdCBzb2NrYWRkcl9pbiAqc2luLCBzdHJ1Y3Qgc29ja2FkZHJfaW42ICpz
aW42KQogaW50CiAjaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19GcmVlQlNEX18p
CiBzY3RwNl9pbnB1dF93aXRoX3BvcnQoc3RydWN0IG1idWYgKippX3BhaywgaW50ICpvZmZwLCB1
aW50MTZfdCBwb3J0KQotI2VsaWYgZGVmaW5lZCggX19QYW5kYV9fKQotc2N0cDZfaW5wdXQocGFr
aGFuZGxlX3R5cGUgKmlfcGFrKQogI2Vsc2UKIHNjdHA2X2lucHV0KHN0cnVjdCBtYnVmICoqaV9w
YWssIGludCAqb2ZmcCwgaW50IHByb3RvKQogI2VuZGlmCkBAIC0xNTcsMjUgKzE0OCwxNiBAQCBz
Y3RwNl9pbnB1dChzdHJ1Y3QgbWJ1ZiAqKmlfcGFrLCBpbnQgKm9mZnAsIGludCBwcm90bykKIAl1
aW50OF90IG1mbG93dHlwZTsKIAl1aW50MTZfdCBmaWJudW07CiAjZW5kaWYKLSNpZiAhKGRlZmlu
ZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkIChfX0ZyZWVCU0RfXykpCisjaWYgIShkZWZpbmVkKF9f
QVBQTEVfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykpCiAJdWludDE2X3QgcG9ydCA9IDA7CiAj
ZW5kaWYKIAotI2lmIGRlZmluZWQoX19QYW5kYV9fKQotCS8qIFRoaXMgaXMgRXZpbCwgYnV0IGl0
cyB0aGUgb25seSB3YXkgdG8gbWFrZSBwYW5kYSB3b3JrIHJpZ2h0LiAqLwotCWlwaGxlbiA9IHNp
emVvZihzdHJ1Y3QgaXA2X2hkcik7Ci0jZWxzZQogCWlwaGxlbiA9ICpvZmZwOwotI2VuZGlmCiAJ
aWYgKFNDVFBfR0VUX1BLVF9WUkZJRCgqaV9wYWssIHZyZl9pZCkpIHsKIAkJU0NUUF9SRUxFQVNF
X1BLVCgqaV9wYWspOwogCQlyZXR1cm4gKElQUFJPVE9fRE9ORSk7CiAJfQogCW0gPSBTQ1RQX0hF
QURFUl9UT19DSEFJTigqaV9wYWspOwotI2lmZGVmIF9fUGFuZGFfXwotCVNDVFBfREVUQUNIX0hF
QURFUl9GUk9NX0NIQUlOKCppX3Bhayk7Ci0JKHZvaWQpU0NUUF9SRUxFQVNFX0hFQURFUigqaV9w
YWspOwotI2VuZGlmCiAjaWZkZWYgU0NUUF9NQlVGX0xPR0dJTkcKIAkvKiBMb2cgaW4gYW55IGlu
cHV0IG1idWZzICovCiAJaWYgKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9sb2dnaW5nX2xldmVsKSAm
IFNDVFBfTUJVRl9MT0dHSU5HX0VOQUJMRSkgewpAQCAtMTg4LDI1ICsxNzAsMTEgQEAgc2N0cDZf
aW5wdXQoc3RydWN0IG1idWYgKippX3BhaywgaW50ICpvZmZwLCBpbnQgcHJvdG8pCiAJfQogI2Vu
ZGlmCiAjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKLSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDEw
MDAwNDkKIAlTQ1RQREJHKFNDVFBfREVCVUdfQ1JDT0ZGTE9BRCwKIAkgICAgICAgICJzY3RwNl9p
bnB1dCgpOiBQYWNrZXQgb2YgbGVuZ3RoICVkIHJlY2VpdmVkIG9uICVzIHdpdGggY3N1bV9mbGFn
cyAweCViLlxuIiwKIAkgICAgICAgIG0tPm1fcGt0aGRyLmxlbiwKIAkgICAgICAgIGlmX25hbWUo
bS0+bV9wa3RoZHIucmN2aWYpLAogCSAgICAgICAgKGludCltLT5tX3BrdGhkci5jc3VtX2ZsYWdz
LCBDU1VNX0JJVFMpOwotI2VsaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAwMDAwCi0JU0NUUERC
RyhTQ1RQX0RFQlVHX0NSQ09GRkxPQUQsCi0JICAgICAgICAic2N0cDZfaW5wdXQoKTogUGFja2V0
IG9mIGxlbmd0aCAlZCByZWNlaXZlZCBvbiAlcyB3aXRoIGNzdW1fZmxhZ3MgMHgleC5cbiIsCi0J
ICAgICAgICBtLT5tX3BrdGhkci5sZW4sCi0JICAgICAgICBpZl9uYW1lKG0tPm1fcGt0aGRyLnJj
dmlmKSwKLQkgICAgICAgIG0tPm1fcGt0aGRyLmNzdW1fZmxhZ3MpOwotI2Vsc2UKLQlTQ1RQREJH
KFNDVFBfREVCVUdfQ1JDT0ZGTE9BRCwKLQkgICAgICAgICJzY3RwNl9pbnB1dCgpOiBQYWNrZXQg
b2YgbGVuZ3RoICVkIHJlY2VpdmVkIG9uICVzIHdpdGggY3N1bV9mbGFncyAweCV4LlxuIiwKLQkg
ICAgICAgIG0tPm1fcGt0aGRyLmxlbiwKLQkgICAgICAgIG0tPm1fcGt0aGRyLnJjdmlmLT5pZl94
bmFtZSwKLQkgICAgICAgIG0tPm1fcGt0aGRyLmNzdW1fZmxhZ3MpOwotI2VuZGlmCiAjZW5kaWYK
ICNpZiBkZWZpbmVkKF9fQVBQTEVfXykKIAlTQ1RQREJHKFNDVFBfREVCVUdfQ1JDT0ZGTE9BRCwK
QEAgLTIxNiw3ICsxODQsNyBAQCBzY3RwNl9pbnB1dChzdHJ1Y3QgbWJ1ZiAqKmlfcGFrLCBpbnQg
Km9mZnAsIGludCBwcm90bykKIAkgICAgICAgIG0tPm1fcGt0aGRyLnJjdmlmLT5pZl91bml0LAog
CSAgICAgICAgbS0+bV9wa3RoZHIuY3N1bV9mbGFncyk7CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9f
V2luZG93c19fKQorI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCVNDVFBEQkcoU0NUUF9ERUJVR19DUkNPRkZMT0FELAogCSAgICAgICAgInNjdHA2X2lucHV0
KCk6IFBhY2tldCBvZiBsZW5ndGggJWQgcmVjZWl2ZWQgb24gJXMgd2l0aCBjc3VtX2ZsYWdzIDB4
JXguXG4iLAogCSAgICAgICAgbS0+bV9wa3RoZHIubGVuLApAQCAtMjMyLDEzICsyMDAsMTUgQEAg
c2N0cDZfaW5wdXQoc3RydWN0IG1idWYgKippX3BhaywgaW50ICpvZmZwLCBpbnQgcHJvdG8pCiAJ
U0NUUF9TVEFUX0lOQ1JfQ09VTlRFUjY0KHNjdHBzX2lucGFja2V0cyk7CiAJLyogR2V0IElQLCBT
Q1RQLCBhbmQgZmlyc3QgY2h1bmsgaGVhZGVyIHRvZ2V0aGVyIGluIHRoZSBmaXJzdCBtYnVmLiAq
LwogCW9mZnNldCA9IGlwaGxlbiArIHNpemVvZihzdHJ1Y3Qgc2N0cGhkcikgKyBzaXplb2Yoc3Ry
dWN0IHNjdHBfY2h1bmtoZHIpOwotCWlwNiA9IG10b2QobSwgc3RydWN0IGlwNl9oZHIgKik7Ci0J
SVA2X0VYVEhEUl9HRVQoc2gsIHN0cnVjdCBzY3RwaGRyICosIG0sIGlwaGxlbiwKLQkJICAgICAg
IChpbnQpKHNpemVvZihzdHJ1Y3Qgc2N0cGhkcikgKyBzaXplb2Yoc3RydWN0IHNjdHBfY2h1bmto
ZHIpKSk7Ci0JaWYgKHNoID09IE5VTEwpIHsKLQkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfaGRyb3Bz
KTsKLQkJcmV0dXJuIChJUFBST1RPX0RPTkUpOworCWlmIChtLT5tX2xlbiA8IG9mZnNldCkgewor
CQltID0gbV9wdWxsdXAobSwgb2Zmc2V0KTsKKwkJaWYgKG0gPT0gTlVMTCkgeworCQkJU0NUUF9T
VEFUX0lOQ1Ioc2N0cHNfaGRyb3BzKTsKKwkJCXJldHVybiAoSVBQUk9UT19ET05FKTsKKwkJfQog
CX0KKwlpcDYgPSBtdG9kKG0sIHN0cnVjdCBpcDZfaGRyICopOworCXNoID0gKHN0cnVjdCBzY3Rw
aGRyICopKG10b2QobSwgY2FkZHJfdCkgKyBpcGhsZW4pOwogCWNoID0gKHN0cnVjdCBzY3RwX2No
dW5raGRyICopKChjYWRkcl90KXNoICsgc2l6ZW9mKHN0cnVjdCBzY3RwaGRyKSk7CiAJb2Zmc2V0
IC09IHNpemVvZihzdHJ1Y3Qgc2N0cF9jaHVua2hkcik7CiAJbWVtc2V0KCZzcmMsIDAsIHNpemVv
ZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSk7CkBAIC0yOTAsNyArMjYwLDcgQEAgc2N0cDZfaW5wdXQo
c3RydWN0IG1idWYgKippX3BhaywgaW50ICpvZmZwLCBpbnQgcHJvdG8pCiAJCWdvdG8gb3V0Owog
CX0KIAllY25fYml0cyA9ICgobnRvaGwoaXA2LT5pcDZfZmxvdykgPj4gMjApICYgMHgwMDAwMDBm
Zik7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAw
MDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKIAlpZiAobS0+bV9wa3RoZHIuY3N1bV9mbGFn
cyAmIENTVU1fU0NUUF9WQUxJRCkgewogCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19yZWN2aHdjcmMp
OwogCQljb21wdXRlX2NyYyA9IDA7CkBAIC0zNDYsNyArMzE2LDcgQEAgc2N0cDZfbm90aWZ5KHN0
cnVjdCBzY3RwX2lucGNiICppbnAsCiAgICAgICAgICAgICAgdWludDhfdCBpY21wNl9jb2RlLAog
ICAgICAgICAgICAgIHVpbnQzMl90IG5leHRfbXR1KQogewotI2lmIGRlZmluZWQoX19BUFBMRV9f
KSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9f
KQogCXN0cnVjdCBzb2NrZXQgKnNvOwogI2VuZGlmCiAJaW50IHRpbWVyX3N0b3BwZWQ7CkBAIC0z
NzIsNyArMzQyLDcgQEAgc2N0cDZfbm90aWZ5KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCS8q
IFRyZWF0IGl0IGxpa2UgYW4gQUJPUlQuICovCiAJCWlmIChpY21wNl9jb2RlID09IElDTVA2X1BB
UkFNUFJPQl9ORVhUSEVBREVSKSB7CiAJCQlzY3RwX2Fib3J0X25vdGlmaWNhdGlvbihzdGNiLCAx
LCAwLCBOVUxMLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8
fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKQog
CQkJc28gPSBTQ1RQX0lOUF9TTyhpbnApOwogCQkJYXRvbWljX2FkZF9pbnQoJnN0Y2ItPmFzb2Mu
cmVmY250LCAxKTsKIAkJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKQEAgLTM4Miw3ICszNTIsNyBA
QCBzY3RwNl9ub3RpZnkoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKICNlbmRpZgogCQkJKHZvaWQp
c2N0cF9mcmVlX2Fzc29jKGlucCwgc3RjYiwgU0NUUF9OT1JNQUxfUFJPQywKIAkJCQkJICAgICAg
U0NUUF9GUk9NX1NDVFBfVVNSUkVRICsgU0NUUF9MT0NfMik7Ci0jaWYgZGVmaW5lZChfX0FQUExF
X18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExF
X18pCiAJCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDEpOwogI2VuZGlmCiAJCX0gZWxzZSB7CkBA
IC00MDcsNiArMzc3LDEzIEBAIHNjdHA2X25vdGlmeShzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAog
CQl9CiAJCWlmIChuZXQtPm10dSA+IG5leHRfbXR1KSB7CiAJCQluZXQtPm10dSA9IG5leHRfbXR1
OworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisJCQlpZiAobmV0LT5wb3J0KSB7CisJCQkJc2N0
cF9oY19zZXRfbXR1KCZuZXQtPnJvLl9sX2FkZHIsIGlucC0+ZmlibnVtLCBuZXh0X210dSArIHNp
emVvZihzdHJ1Y3QgdWRwaGRyKSk7CisJCQl9IGVsc2UgeworCQkJCXNjdHBfaGNfc2V0X210dSgm
bmV0LT5yby5fbF9hZGRyLCBpbnAtPmZpYm51bSwgbmV4dF9tdHUpOworCQkJfQorI2VuZGlmCiAJ
CX0KIAkJLyogVXBkYXRlIHRoZSBhc3NvY2lhdGlvbiBNVFUgKi8KIAkJaWYgKHN0Y2ItPmFzb2Mu
c21hbGxlc3RfbXR1ID4gbmV4dF9tdHUpIHsKQEAgLTU3MSwxMyArNTQ4LDI1IEBAIHNjdHA2X2N0
bGlucHV0KGludCBjbWQsIHN0cnVjdCBzb2NrYWRkciAqcGt0ZHN0LCB2b2lkICpkKQogCQkJICAg
ICAgICAgICAgIGlwNmNwLT5pcDZjX2ljbXA2LT5pY21wNl90eXBlLAogCQkJICAgICAgICAgICAg
IGlwNmNwLT5pcDZjX2ljbXA2LT5pY21wNl9jb2RlLAogCQkJICAgICAgICAgICAgIG50b2hsKGlw
NmNwLT5pcDZjX2ljbXA2LT5pY21wNl9tdHUpKTsKLQkJfSBlbHNlIHsKLSNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA8IDUwMDAwMAotCQkJaWYgKFBSQ19JU19S
RURJUkVDVChjbWQpICYmIChpbnAgIT0gTlVMTCkpIHsKLQkJCQlpbjZfcnRjaGFuZ2UoKHN0cnVj
dCBpbjZwY2IgKilpbnAsCi0JCQkJICAgIGluZXQ2Y3RsZXJybWFwW2NtZF0pOworI2lmIGRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKKwkJCWlmICghKHN0Y2ItPnNjdHBfZXAtPnNjdHBfZmxhZ3MgJiBT
Q1RQX1BDQl9GTEFHU19TT0NLRVRfR09ORSkgJiYKKwkJCSAgICAoc3RjYi0+c2N0cF9zb2NrZXQg
IT0gTlVMTCkgeworCQkJCXN0cnVjdCBzb2NrZXQgKnVwY2FsbF9zb2NrZXQ7CisKKwkJCQl1cGNh
bGxfc29ja2V0ID0gc3RjYi0+c2N0cF9zb2NrZXQ7CisJCQkJU09DS19MT0NLKHVwY2FsbF9zb2Nr
ZXQpOworCQkJCXNvcmVmKHVwY2FsbF9zb2NrZXQpOworCQkJCVNPQ0tfVU5MT0NLKHVwY2FsbF9z
b2NrZXQpOworCQkJCWlmICgodXBjYWxsX3NvY2tldC0+c29fdXBjYWxsICE9IE5VTEwpICYmCisJ
CQkJICAgICh1cGNhbGxfc29ja2V0LT5zb19lcnJvciAhPSAwKSkgeworCQkJCQkoKnVwY2FsbF9z
b2NrZXQtPnNvX3VwY2FsbCkodXBjYWxsX3NvY2tldCwgdXBjYWxsX3NvY2tldC0+c29fdXBjYWxs
YXJnLCBNX05PV0FJVCk7CisJCQkJfQorCQkJCUFDQ0VQVF9MT0NLKCk7CisJCQkJU09DS19MT0NL
KHVwY2FsbF9zb2NrZXQpOworCQkJCXNvcmVsZSh1cGNhbGxfc29ja2V0KTsKIAkJCX0KICNlbmRp
ZgorCQl9IGVsc2UgewogCQkJaWYgKChzdGNiID09IE5VTEwpICYmIChpbnAgIT0gTlVMTCkpIHsK
IAkJCQkvKiByZWR1Y2UgaW5wJ3MgcmVmLWNvdW50ICovCiAJCQkJU0NUUF9JTlBfV0xPQ0soaW5w
KTsKQEAgLTU5Niw3ICs1ODUsNyBAQCBzY3RwNl9jdGxpbnB1dChpbnQgY21kLCBzdHJ1Y3Qgc29j
a2FkZHIgKnBrdGRzdCwgdm9pZCAqZCkKICAqIHRoaXMgcm91dGluZSBjYW4gcHJvYmFibHkgYmUg
Y29sbGFzcGVkIGludG8gdGhlIG9uZSBpbiBzY3RwX3VzZXJyZXEuYwogICogc2luY2UgdGhleSBk
byB0aGUgc2FtZSB0aGluZyBhbmQgbm93IHdlIGxvb2t1cCB3aXRoIGEgc29ja2FkZHIKICAqLwot
I2lmZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKIHN0YXRpYyBpbnQKIHNjdHA2X2dldGNyZWQoU1lTQ1RMX0hBTkRMRVJf
QVJHUykKIHsKQEAgLTYwOCwxNiArNTk3LDEwIEBAIHNjdHA2X2dldGNyZWQoU1lTQ1RMX0hBTkRM
RVJfQVJHUykKIAlpbnQgZXJyb3I7CiAJdWludDMyX3QgdnJmX2lkOwogCi0jaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pCiAJdnJmX2lkID0gU0NUUF9ERUZBVUxU
X1ZSRklEOwotI2Vsc2UKLQl2cmZfaWQgPSBwYW5kYV9nZXRfdnJmX2Zyb21fY2FsbCgpOyAvKiBm
cm9tIGNvbm5lY3R4IGNhbGw/ICovCi0jZW5kaWYKIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
ICYmIF9fRnJlZUJTRF92ZXJzaW9uID4gNjAyMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAllcnJvciA9IHByaXZfY2hlY2socmVxLT50ZCwg
UFJJVl9ORVRJTkVUX0dFVENSRUQpOwotI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19G
cmVlQlNEX3ZlcnNpb24gPj0gNTAwMDAwCi0JZXJyb3IgPSBzdXNlcihyZXEtPnRkKTsKICNlbHNl
CiAJZXJyb3IgPSBzdXNlcihyZXEtPnApOwogI2VuZGlmCkBAIC02NzksMjcgKzY2MiwzMyBAQCBT
WVNDVExfUFJPQyhfbmV0X2luZXQ2X3NjdHA2LCBPSURfQVVUTywgZ2V0Y3JlZCwgQ1RMVFlQRV9P
UEFRVUUgfCBDVExGTEFHX1JXLAogI2VuZGlmCiAKIC8qIFRoaXMgaXMgdGhlIHNhbWUgYXMgdGhl
IHNjdHBfYWJvcnQoKSBjb3VsZCBiZSBtYWRlIGNvbW1vbiAqLwotI2lmIChkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDY5MDAwMCkgfHwgZGVmaW5lZChfX1dpbmRv
d3NfXykKLXN0YXRpYyB2b2lkCi0jZWxpZiBkZWZpbmVkKF9fUGFuZGFfXykgfHwgZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQorI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIGludAorI2VsaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfV0lOMzIpCitzdGF0aWMgdm9pZAogI2Vsc2UK
IHN0YXRpYyBpbnQKICNlbmRpZgogc2N0cDZfYWJvcnQoc3RydWN0IHNvY2tldCAqc28pCiB7Cisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwlzdHJ1
Y3QgZXBvY2hfdHJhY2tlciBldDsKKyNlbmRpZgogCXN0cnVjdCBzY3RwX2lucGNiICppbnA7CiAJ
dWludDMyX3QgZmxhZ3M7CiAKIAlpbnAgPSAoc3RydWN0IHNjdHBfaW5wY2IgKilzby0+c29fcGNi
OwogCWlmIChpbnAgPT0gTlVMTCkgewogCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwg
TlVMTCwgU0NUUF9GUk9NX1NDVFA2X1VTUlJFUSwgRUlOVkFMKTsKLSNpZiAoZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPiA2OTAwMDApIHx8IGRlZmluZWQoX19XaW5k
b3dzX18pCisjaWYgKGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX1dJTjMyKSkgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJcmV0dXJuOwogI2Vsc2UKIAkJcmV0dXJuIChFSU5W
QUwpOwogI2VuZGlmCiAJfQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCisJTkVUX0VQT0NIX0VOVEVSKGV0KTsKKyNlbmRpZgogIHNjdHBfbXVzdF90
cnlfYWdhaW46CiAJZmxhZ3MgPSBpbnAtPnNjdHBfZmxhZ3M7CiAjaWZkZWYgU0NUUF9MT0dfQ0xP
U0lORwpAQCAtNzE4LDcgKzcwNyw3IEBAIHNjdHA2X2Fib3J0KHN0cnVjdCBzb2NrZXQgKnNvKQog
CQkgKiBoZXJlIGZvciB0aGUgYWNjb3VudGluZy9zZWxlY3QuCiAJCSAqLwogCQlTQ1RQX1NCX0NM
RUFSKHNvLT5zb19yY3YpOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19B
UFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlzby0+c29fdXNlY291bnQtLTsK
ICNlbHNlCiAJCS8qIE5vdyBudWxsIG91dCB0aGUgcmVmZXJlbmNlLCB3ZSBhcmUgY29tcGxldGVs
eSBkZXRhY2hlZC4gKi8KQEAgLTczMSwyMCArNzIwLDIxIEBAIHNjdHA2X2Fib3J0KHN0cnVjdCBz
b2NrZXQgKnNvKQogCQkJZ290byBzY3RwX211c3RfdHJ5X2FnYWluOwogCQl9CiAJfQotI2lmIChk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDY5MDAwMCkgfHwgZGVm
aW5lZChfX1dpbmRvd3NfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQorCU5FVF9FUE9DSF9FWElUKGV0KTsKIAlyZXR1cm47CiAjZWxzZQogCXJl
dHVybiAoMCk7CiAjZW5kaWYKIH0KIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJl
ZUJTRF92ZXJzaW9uID49IDUwMDAwMAotc3RhdGljIGludAotc2N0cDZfYXR0YWNoKHN0cnVjdCBz
b2NrZXQgKnNvLCBpbnQgcHJvdG8gU0NUUF9VTlVTRUQsIHN0cnVjdCB0aHJlYWQgKnAgU0NUUF9V
TlVTRUQpCi0jZWxpZiBkZWZpbmVkKF9fUGFuZGFfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQorI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIGludAogc2N0cDZfYXR0YWNoKHN0cnVjdCBz
b2NrZXQgKnNvLCBpbnQgcHJvdG8gU0NUUF9VTlVTRUQsIHVpbnQzMl90IHZyZl9pZCkKLSNlbGlm
IGRlZmluZWQoX19XaW5kb3dzX18pCisjZWxpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorc3RhdGlj
IGludAorc2N0cDZfYXR0YWNoKHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgcHJvdG8gU0NUUF9VTlVT
RUQsIHN0cnVjdCB0aHJlYWQgKnAgU0NUUF9VTlVTRUQpCisjZWxpZiBkZWZpbmVkKF9XSU4zMikK
IHN0YXRpYyBpbnQKIHNjdHA2X2F0dGFjaChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IHByb3RvIFND
VFBfVU5VU0VELCBQS1RIUkVBRCBwIFNDVFBfVU5VU0VEKQogI2Vsc2UKQEAgLTc1MiwxMCArNzQy
LDkgQEAgc3RhdGljIGludAogc2N0cDZfYXR0YWNoKHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgcHJv
dG8gU0NUUF9VTlVTRUQsIHN0cnVjdCBwcm9jICpwIFNDVFBfVU5VU0VEKQogI2VuZGlmCiB7Ci0J
c3RydWN0IGluNnBjYiAqaW5wNjsKIAlpbnQgZXJyb3I7CiAJc3RydWN0IHNjdHBfaW5wY2IgKmlu
cDsKLSNpZiAhZGVmaW5lZChfX1BhbmRhX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisj
aWYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAl1aW50MzJfdCB2cmZfaWQgPSBTQ1RQX0RFRkFV
TFRfVlJGSUQ7CiAjZW5kaWYKIApAQCAtNzc2LDQyICs3NjUsMzUgQEAgc2N0cDZfYXR0YWNoKHN0
cnVjdCBzb2NrZXQgKnNvLCBpbnQgcHJvdG8gU0NUUF9VTlVTRUQsIHN0cnVjdCBwcm9jICpwIFND
VFBfVU5VU0UKIAlpbnAgPSAoc3RydWN0IHNjdHBfaW5wY2IgKilzby0+c29fcGNiOwogCVNDVFBf
SU5QX1dMT0NLKGlucCk7CiAJaW5wLT5zY3RwX2ZsYWdzIHw9IFNDVFBfUENCX0ZMQUdTX0JPVU5E
X1Y2OwkvKiBJJ20gdjYhICovCi0JaW5wNiA9IChzdHJ1Y3QgaW42cGNiICopaW5wOwogCi0jaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19X
aW5kb3dzX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKLQlpbnA2LT5pbnBfdmZsYWcgfD0g
SU5QX0lQVjY7Ci0jZWxzZQotCWlucC0+aW5wX3ZmbGFnIHw9IElOUF9JUFY2OwotI2VuZGlmCi0j
aWYgIWRlZmluZWQoX19QYW5kYV9fKQotCWlucDYtPmluNnBfaG9wcyA9IC0xOwkvKiB1c2Uga2Vy
bmVsIGRlZmF1bHQgKi8KLQlpbnA2LT5pbjZwX2Nrc3VtID0gLTE7CS8qIGp1c3QgdG8gYmUgc3Vy
ZSAqLwotI2VuZGlmCisJaW5wLT5pcF9pbnAuaW5wLmlucF92ZmxhZyB8PSBJTlBfSVBWNjsKKwlp
bnAtPmlwX2lucC5pbnAuaW42cF9ob3BzID0gLTE7CS8qIHVzZSBrZXJuZWwgZGVmYXVsdCAqLwor
CWlucC0+aXBfaW5wLmlucC5pbjZwX2Nrc3VtID0gLTE7CS8qIGp1c3QgdG8gYmUgc3VyZSAqLwog
I2lmZGVmIElORVQKIAkvKgogCSAqIFhYWDogdWdseSEhIElQdjQgVFRMIGluaXRpYWxpemF0aW9u
IGlzIG5lY2Vzc2FyeSBmb3IgYW4gSVB2NgogCSAqIHNvY2tldCBhcyB3ZWxsLCBiZWNhdXNlIHRo
ZSBzb2NrZXQgbWF5IGJlIGJvdW5kIHRvIGFuIElQdjYKIAkgKiB3aWxkY2FyZCBhZGRyZXNzLCB3
aGljaCBtYXkgbWF0Y2ggYW4gSVB2NC1tYXBwZWQgSVB2NiBhZGRyZXNzLgogCSAqLwotCWlucDYt
PmlucF9pcF90dGwgPSBNT0RVTEVfR0xPQkFMKGlwX2RlZnR0bCk7CisJaW5wLT5pcF9pbnAuaW5w
LmlucF9pcF90dGwgPSBNT0RVTEVfR0xPQkFMKGlwX2RlZnR0bCk7CiAjZW5kaWYKIAlTQ1RQX0lO
UF9XVU5MT0NLKGlucCk7CiAJcmV0dXJuICgwKTsKIH0KIAotI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAwMAorI2lmIGRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKK2ludAorc2N0cDZfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRy
ICphZGRyLCB2b2lkICogcCkKK3sKKyNlbGlmIGRlZmluZWQoX19GcmVlQlNEX18pCiBzdGF0aWMg
aW50CiBzY3RwNl9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIs
IHN0cnVjdCB0aHJlYWQgKnApCiB7Ci0jZWxpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZp
bmVkKF9fQVBQTEVfXykKKyNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQogc3RhdGljIGludAogc2N0
cDZfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRyLCBzdHJ1Y3Qg
cHJvYyAqcCkKIHsKLSNlbGlmIGRlZmluZWQoX19QYW5kYV9fKSB8fCBkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCi1pbnQKLXNjdHA2X2JpbmQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRk
ciAqYWRkciwgdm9pZCAqIHApCi17Ci0jZWxpZiBkZWZpbmVkKF9fV2luZG93c19fKQorI2VsaWYg
ZGVmaW5lZChfV0lOMzIpCiBzdGF0aWMgaW50CiBzY3RwNl9iaW5kKHN0cnVjdCBzb2NrZXQgKnNv
LCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIFBLVEhSRUFEIHApCiB7CkBAIC04MjMsOCArODA1LDgg
QEAgc2N0cDZfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYgKm5hbSwgc3RydWN0
IHByb2MgKnApCiAKICNlbmRpZgogCXN0cnVjdCBzY3RwX2lucGNiICppbnA7Ci0Jc3RydWN0IGlu
NnBjYiAqaW5wNjsKIAlpbnQgZXJyb3I7CisJdV9jaGFyIHZmbGFnc2F2OwogCiAJaW5wID0gKHN0
cnVjdCBzY3RwX2lucGNiICopc28tPnNvX3BjYjsKIAlpZiAoaW5wID09IE5VTEwpIHsKQEAgLTgz
Miw3ICs4MTQsNyBAQCBzY3RwNl9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAq
bmFtLCBzdHJ1Y3QgcHJvYyAqcCkKIAkJcmV0dXJuIChFSU5WQUwpOwogCX0KIAotI2lmICFkZWZp
bmVkKF9fV2luZG93c19fKQorI2lmICEoZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pKQogCWlmIChhZGRyKSB7CiAJCXN3aXRjaCAoYWRkci0+c2FfZmFtaWx5KSB7CiAj
aWZkZWYgSU5FVApAQCAtODYxLDI2ICs4NDMsMTYgQEAgc2N0cDZfYmluZChzdHJ1Y3Qgc29ja2V0
ICpzbywgc3RydWN0IG1idWYgKm5hbSwgc3RydWN0IHByb2MgKnApCiAJCX0KIAl9CiAjZW5kaWYK
LQlpbnA2ID0gKHN0cnVjdCBpbjZwY2IgKilpbnA7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
fHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pIHx8IGRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKLQlpbnA2LT5pbnBfdmZsYWcgJj0gfklOUF9JUFY0OwotCWlucDYtPmlu
cF92ZmxhZyB8PSBJTlBfSVBWNjsKLSNlbHNlCi0JaW5wLT5pbnBfdmZsYWcgJj0gfklOUF9JUFY0
OwotCWlucC0+aW5wX3ZmbGFnIHw9IElOUF9JUFY2OwotI2VuZGlmCi0JaWYgKChhZGRyICE9IE5V
TEwpICYmIChTQ1RQX0lQVjZfVjZPTkxZKGlucDYpID09IDApKSB7CisJdmZsYWdzYXYgPSBpbnAt
PmlwX2lucC5pbnAuaW5wX3ZmbGFnOworCWlucC0+aXBfaW5wLmlucC5pbnBfdmZsYWcgJj0gfklO
UF9JUFY0OworCWlucC0+aXBfaW5wLmlucC5pbnBfdmZsYWcgfD0gSU5QX0lQVjY7CisJaWYgKChh
ZGRyICE9IE5VTEwpICYmIChTQ1RQX0lQVjZfVjZPTkxZKGlucCkgPT0gMCkpIHsKIAkJc3dpdGNo
IChhZGRyLT5zYV9mYW1pbHkpIHsKICNpZmRlZiBJTkVUCiAJCWNhc2UgQUZfSU5FVDoKIAkJCS8q
IGJpbmRpbmcgdjQgYWRkciB0byB2NiBzb2NrZXQsIHNvIHJlc2V0IGZsYWdzICovCi0jaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19XaW5k
b3dzX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKLQkJCWlucDYtPmlucF92ZmxhZyB8PSBJ
TlBfSVBWNDsKLQkJCWlucDYtPmlucF92ZmxhZyAmPSB+SU5QX0lQVjY7Ci0jZWxzZQotCQkJaW5w
LT5pbnBfdmZsYWcgfD0gSU5QX0lQVjQ7Ci0JCQlpbnAtPmlucF92ZmxhZyAmPSB+SU5QX0lQVjY7
Ci0jZW5kaWYKKwkJCWlucC0+aXBfaW5wLmlucC5pbnBfdmZsYWcgfD0gSU5QX0lQVjQ7CisJCQlp
bnAtPmlwX2lucC5pbnAuaW5wX3ZmbGFnICY9IH5JTlBfSVBWNjsKIAkJCWJyZWFrOwogI2VuZGlm
CiAjaWZkZWYgSU5FVDYKQEAgLTg5MSwyNiArODYzLDE3IEBAIHNjdHA2X2JpbmQoc3RydWN0IHNv
Y2tldCAqc28sIHN0cnVjdCBtYnVmICpuYW0sIHN0cnVjdCBwcm9jICpwKQogCQkJc2luNl9wID0g
KHN0cnVjdCBzb2NrYWRkcl9pbjYgKilhZGRyOwogCiAJCQlpZiAoSU42X0lTX0FERFJfVU5TUEVD
SUZJRUQoJnNpbjZfcC0+c2luNl9hZGRyKSkgewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8
IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKSB8fCBkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCi0JCQkJaW5wNi0+aW5wX3ZmbGFnIHw9IElOUF9JUFY0OwotI2Vsc2UKLQkJ
CQlpbnAtPmlucF92ZmxhZyB8PSBJTlBfSVBWNDsKLSNlbmRpZgorCQkJCWlucC0+aXBfaW5wLmlu
cC5pbnBfdmZsYWcgfD0gSU5QX0lQVjQ7CiAJCQl9CiAjaWZkZWYgSU5FVAogCQkJaWYgKElONl9J
U19BRERSX1Y0TUFQUEVEKCZzaW42X3AtPnNpbjZfYWRkcikpIHsKIAkJCQlzdHJ1Y3Qgc29ja2Fk
ZHJfaW4gc2luOwogCiAJCQkJaW42X3NpbjZfMl9zaW4oJnNpbiwgc2luNl9wKTsKLSNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRv
d3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQotCQkJCWlucDYtPmlucF92ZmxhZyB8PSBJ
TlBfSVBWNDsKLQkJCQlpbnA2LT5pbnBfdmZsYWcgJj0gfklOUF9JUFY2OwotI2Vsc2UKLQkJCQlp
bnAtPmlucF92ZmxhZyB8PSBJTlBfSVBWNDsKLQkJCQlpbnAtPmlucF92ZmxhZyAmPSB+SU5QX0lQ
VjY7Ci0jZW5kaWYKKwkJCQlpbnAtPmlwX2lucC5pbnAuaW5wX3ZmbGFnIHw9IElOUF9JUFY0Owor
CQkJCWlucC0+aXBfaW5wLmlucC5pbnBfdmZsYWcgJj0gfklOUF9JUFY2OwogCQkJCWVycm9yID0g
c2N0cF9pbnBjYl9iaW5kKHNvLCAoc3RydWN0IHNvY2thZGRyICopJnNpbiwgTlVMTCwgcCk7Ci0J
CQkJcmV0dXJuIChlcnJvcik7CisJCQkJZ290byBvdXQ7CiAJCQl9CiAjZW5kaWYKIAkJCWJyZWFr
OwpAQCAtOTI3LDcgKzg5MCw4IEBAIHNjdHA2X2JpbmQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVj
dCBtYnVmICpuYW0sIHN0cnVjdCBwcm9jICpwKQogCQlpZiAoYWRkci0+c2FfZmFtaWx5ID09IEFG
X0lORVQpIHsKIAkJCS8qIGNhbid0IGJpbmQgdjQgYWRkciB0byB2NiBvbmx5IHNvY2tldCEgKi8K
IAkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUDZf
VVNSUkVRLCBFSU5WQUwpOwotCQkJcmV0dXJuIChFSU5WQUwpOworCQkJZXJyb3IgPSBFSU5WQUw7
CisJCQlnb3RvIG91dDsKIAkJfQogI2VuZGlmCiAJCXNpbjZfcCA9IChzdHJ1Y3Qgc29ja2FkZHJf
aW42ICopYWRkcjsKQEAgLTkzNiwxNSArOTAwLDE5IEBAIHNjdHA2X2JpbmQoc3RydWN0IHNvY2tl
dCAqc28sIHN0cnVjdCBtYnVmICpuYW0sIHN0cnVjdCBwcm9jICpwKQogCQkJLyogY2FuJ3QgYmlu
ZCB2NC1tYXBwZWQgYWRkcnMgZWl0aGVyISAqLwogCQkJLyogTk9URTogd2UgZG9uJ3Qgc3VwcG9y
dCBTSUlUICovCiAJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9G
Uk9NX1NDVFA2X1VTUlJFUSwgRUlOVkFMKTsKLQkJCXJldHVybiAoRUlOVkFMKTsKKwkJCWVycm9y
ID0gRUlOVkFMOworCQkJZ290byBvdXQ7CiAJCX0KIAl9CiAJZXJyb3IgPSBzY3RwX2lucGNiX2Jp
bmQoc28sIGFkZHIsIE5VTEwsIHApOworb3V0OgorCWlmIChlcnJvciAhPSAwKQorCQlpbnAtPmlw
X2lucC5pbnAuaW5wX3ZmbGFnID0gdmZsYWdzYXY7CiAJcmV0dXJuIChlcnJvcik7CiB9CiAKIAot
I2lmIChkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDY5MDAwMCkg
fHwgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAjaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIHN0YXRpYyB2b2lkCiAjZWxzZQpA
QCAtOTU4LDkgKzkyNiw3IEBAIHNjdHA2X2Nsb3NlKHN0cnVjdCBzb2NrZXQgKnNvKQogLyogVGhp
cyBjb3VsZCBiZSBtYWRlIGNvbW1vbiB3aXRoIHNjdHBfZGV0YWNoKCkgc2luY2UgdGhleSBhcmUg
aWRlbnRpY2FsICovCiAjZWxzZQogCi0jaWYgIWRlZmluZWQoX19QYW5kYV9fKQogc3RhdGljCi0j
ZW5kaWYKIGludAogc2N0cDZfZGV0YWNoKHN0cnVjdCBzb2NrZXQgKnNvKQogewpAQCAtOTc0LDcg
Kzk0MCw3IEBAIHNjdHA2X2RldGFjaChzdHJ1Y3Qgc29ja2V0ICpzbykKIAogI2VuZGlmCiAKLSNp
ZiAhZGVmaW5lZChfX1BhbmRhX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaWYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKIHN0YXRpYwogI2VuZGlmCiBpbnQKQEAgLTk4NSw3ICs5NTEs
NyBAQCBzY3RwNl9kaXNjb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvKQogCiAKIGludAotI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAwMAorI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBzY3RwX3NlbmRt
KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgZmxhZ3MsIHN0cnVjdCBtYnVmICptLCBzdHJ1Y3Qgc29j
a2FkZHIgKmFkZHIsCiAgICAgc3RydWN0IG1idWYgKmNvbnRyb2wsIHN0cnVjdCB0aHJlYWQgKnAp
OwogCkBAIC05OTUsMTMgKzk2MSwxMyBAQCBzY3RwX3NlbmRtKHN0cnVjdCBzb2NrZXQgKnNvLCBp
bnQgZmxhZ3MsIHN0cnVjdCBtYnVmICptLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsCiAKICNlbmRp
ZgogCi0jaWYgIWRlZmluZWQoX19QYW5kYV9fKSAmJiAhZGVmaW5lZChfX1dpbmRvd3NfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0Zy
ZWVCU0RfdmVyc2lvbiA+PSA1MDAwMDAKKyNpZiAhZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKIHN0YXRpYyBpbnQKIHNj
dHA2X3NlbmQoc3RydWN0IHNvY2tldCAqc28sIGludCBmbGFncywgc3RydWN0IG1idWYgKm0sIHN0
cnVjdCBzb2NrYWRkciAqYWRkciwKICAgICBzdHJ1Y3QgbWJ1ZiAqY29udHJvbCwgc3RydWN0IHRo
cmVhZCAqcCkKIHsKLSNlbGlmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBM
RV9fKQorI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCiBzdGF0aWMgaW50CiBzY3RwNl9zZW5kKHN0
cnVjdCBzb2NrZXQgKnNvLCBpbnQgZmxhZ3MsIHN0cnVjdCBtYnVmICptLCBzdHJ1Y3Qgc29ja2Fk
ZHIgKmFkZHIsCiAgICAgc3RydWN0IG1idWYgKmNvbnRyb2wsIHN0cnVjdCBwcm9jICpwKQpAQCAt
MTAxNCw3ICs5ODAsNiBAQCBzY3RwNl9zZW5kKHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgZmxhZ3Ms
IHN0cnVjdCBtYnVmICptLCBzdHJ1Y3QgbWJ1ZiAqbmFtLAogCXN0cnVjdCBzb2NrYWRkciAqYWRk
ciA9IG5hbSA/IG10b2QobmFtLCBzdHJ1Y3Qgc29ja2FkZHIgKik6IE5VTEw7CiAjZW5kaWYKIAlz
dHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wOwotCXN0cnVjdCBpbjZwY2IgKmlucDY7CiAKICNpZmRlZiBJ
TkVUCiAJc3RydWN0IHNvY2thZGRyX2luNiAqc2luNjsKQEAgLTEwMzEsNyArOTk2LDYgQEAgc2N0
cDZfc2VuZChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IGZsYWdzLCBzdHJ1Y3QgbWJ1ZiAqbSwgc3Ry
dWN0IG1idWYgKm5hbSwKIAkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFND
VFBfRlJPTV9TQ1RQNl9VU1JSRVEsIEVJTlZBTCk7CiAJCXJldHVybiAoRUlOVkFMKTsKIAl9Ci0J
aW5wNiA9IChzdHJ1Y3QgaW42cGNiICopaW5wOwogCS8qCiAJICogRm9yIHRoZSBUQ1AgbW9kZWwg
d2UgbWF5IGdldCBhIE5VTEwgYWRkciwgaWYgd2UgYXJlIGEgY29ubmVjdGVkCiAJICogc29ja2V0
IHRoYXRzIG9rLgpAQCAtMTA1MSw3ICsxMDE1LDcgQEAgc2N0cDZfc2VuZChzdHJ1Y3Qgc29ja2V0
ICpzbywgaW50IGZsYWdzLCBzdHJ1Y3QgbWJ1ZiAqbSwgc3RydWN0IG1idWYgKm5hbSwKIAl9CiAj
aWZkZWYgSU5FVAogCXNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKWFkZHI7Ci0JaWYgKFND
VFBfSVBWNl9WNk9OTFkoaW5wNikpIHsKKwlpZiAoU0NUUF9JUFY2X1Y2T05MWShpbnApKSB7CiAJ
CS8qCiAJCSAqIGlmIElQVjZfVjZPTkxZIGZsYWcsIHdlIGRpc2NhcmQgZGF0YWdyYW1zIGRlc3Rp
bmVkIHRvIGEKIAkJICogdjQgYWRkciBvciB2NC1tYXBwZWQgYWRkcgpAQCAtMTA5MSw3ICsxMDU1
LDcgQEAgY29ubmVjdGVkX3R5cGU6CiAJCWlucC0+cGt0X2xhc3QgPSBpbnAtPnBrdCA9IG07CiAJ
fQogCWlmICgKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykK
KyNpZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCS8qIEZyZWVCU0QgYW5kIE1hY09TWCB1c2VzIGEgZmxhZyBw
YXNzZWQgKi8KIAkgICAgKChmbGFncyAmIFBSVVNfTU9SRVRPQ09NRSkgPT0gMCkKICNlbHNlCkBA
IC0xMTA2LDkgKzEwNzAsMTggQEAgY29ubmVjdGVkX3R5cGU6CiAJCSAqIG9wdGlvbmFseSBzd2l0
Y2ggYmFjayB0byB0aGlzIGNvZGUgKGJ5IGNoYW5naW5nIGJhY2sgdGhlCiAJCSAqIGRlZmluaW5p
dGlvbnMgYnV0IHRoaXMgaXMgbm90IGFkdmlzYWJsZS4KIAkJICovCisjaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJc3RydWN0IGVwb2NoX3RyYWNr
ZXIgZXQ7CisjZW5kaWYKIAkJaW50IHJldDsKIAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJTkVUX0VQT0NIX0VOVEVSKGV0KTsKKyNlbmRpZgog
CQlyZXQgPSBzY3RwX291dHB1dChpbnAsIGlucC0+cGt0LCBhZGRyLCBpbnAtPmNvbnRyb2wsIHAs
IGZsYWdzKTsKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQorCU5FVF9FUE9DSF9FWElUKGV0KTsKKyNlbmRpZgogCQlpbnAtPnBrdCA9IE5VTEw7CiAJ
CWlucC0+Y29udHJvbCA9IE5VTEw7CiAJCXJldHVybiAocmV0KTsKQEAgLTExMTgsNDYgKzEwOTEs
NDEgQEAgY29ubmVjdGVkX3R5cGU6CiB9CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAwMAorI2lmIGRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKK2ludAorc2N0cDZfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2th
ZGRyICphZGRyKQoreworCXZvaWQgKnAgPSBOVUxMOworI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykKIHN0YXRpYyBpbnQKIHNjdHA2X2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBz
b2NrYWRkciAqYWRkciwgc3RydWN0IHRocmVhZCAqcCkKIHsKLSNlbGlmIGRlZmluZWQoX19GcmVl
QlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKQorI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCiBz
dGF0aWMgaW50CiBzY3RwNl9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2Fk
ZHIgKmFkZHIsIHN0cnVjdCBwcm9jICpwKQogewotI2VsaWYgZGVmaW5lZChfX1BhbmRhX18pCi1p
bnQKLXNjdHA2X2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqYWRk
ciwgdm9pZCAqcCkKLXsKLSNlbGlmIGRlZmluZWQoX19XaW5kb3dzX18pCisjZWxpZiBkZWZpbmVk
KF9XSU4zMikKIHN0YXRpYyBpbnQKIHNjdHA2X2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0
cnVjdCBzb2NrYWRkciAqYWRkciwgUEtUSFJFQUQgcCkKIHsKLSNlbGlmIGRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKLWludAotc2N0cDZfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNv
Y2thZGRyICphZGRyKQotewotCXZvaWQgKnAgPSBOVUxMOwogI2Vsc2UKIHN0YXRpYyBpbnQKIHNj
dHA2X2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICpuYW0sIHN0cnVjdCBw
cm9jICpwKQogewogCXN0cnVjdCBzb2NrYWRkciAqYWRkciA9IG10b2QobmFtLCBzdHJ1Y3Qgc29j
a2FkZHIgKik7CisjZW5kaWYKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQorCXN0cnVjdCBlcG9jaF90cmFja2VyIGV0OwogI2VuZGlmCiAJdWludDMy
X3QgdnJmX2lkOwogCWludCBlcnJvciA9IDA7CiAJc3RydWN0IHNjdHBfaW5wY2IgKmlucDsKIAlz
dHJ1Y3Qgc2N0cF90Y2IgKnN0Y2I7CiAjaWZkZWYgSU5FVAotCXN0cnVjdCBpbjZwY2IgKmlucDY7
CiAJc3RydWN0IHNvY2thZGRyX2luNiAqc2luNjsKIAl1bmlvbiBzY3RwX3NvY2tzdG9yZSBzdG9y
ZTsKICNlbmRpZgogCi0jaWZkZWYgSU5FVAotCWlucDYgPSAoc3RydWN0IGluNnBjYiAqKXNvLT5z
b19wY2I7Ci0jZW5kaWYKIAlpbnAgPSAoc3RydWN0IHNjdHBfaW5wY2IgKilzby0+c29fcGNiOwog
CWlmIChpbnAgPT0gTlVMTCkgewogCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVM
TCwgU0NUUF9GUk9NX1NDVFA2X1VTUlJFUSwgRUNPTk5SRVNFVCk7CkBAIC0xMTY4LDcgKzExMzYs
NyBAQCBzY3RwNl9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtLCBz
dHJ1Y3QgcHJvYyAqcCkKIAkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFND
VFBfRlJPTV9TQ1RQNl9VU1JSRVEsIEVJTlZBTCk7CiAJCXJldHVybiAoRUlOVkFMKTsKIAl9Ci0j
aWYgIWRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgIShkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykpCiAJc3dpdGNoIChhZGRyLT5zYV9mYW1pbHkpIHsKICNpZmRlZiBJ
TkVUCiAJY2FzZSBBRl9JTkVUOgpAQCAtMTIyMSw3ICsxMTg5LDcgQEAgc2N0cDZfY29ubmVjdChz
dHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYgKm5hbSwgc3RydWN0IHByb2MgKnApCiAJfQog
I2lmZGVmIElORVQKIAlzaW42ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilhZGRyOwotCWlmIChT
Q1RQX0lQVjZfVjZPTkxZKGlucDYpKSB7CisJaWYgKFNDVFBfSVBWNl9WNk9OTFkoaW5wKSkgewog
CQkvKgogCQkgKiBpZiBJUFY2X1Y2T05MWSBmbGFnLCBpZ25vcmUgY29ubmVjdGlvbnMgZGVzdGlu
ZWQgdG8gYSB2NAogCQkgKiBhZGRyIG9yIHY0LW1hcHBlZCBhZGRyCkBAIC0xMjc1LDcgKzEyNDMs
OCBAQCBzY3RwNl9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtLCBz
dHJ1Y3QgcHJvYyAqcCkKIAkvKiBXZSBhcmUgR09PRCB0byBnbyAqLwogCXN0Y2IgPSBzY3RwX2Fs
b2NfYXNzb2MoaW5wLCBhZGRyLCAmZXJyb3IsIDAsIHZyZl9pZCwKIAkgICAgICAgICAgICAgICAg
ICAgICAgIGlucC0+c2N0cF9lcC5wcmVfb3Blbl9zdHJlYW1fY291bnQsCi0JICAgICAgICAgICAg
ICAgICAgICAgICBpbnAtPnNjdHBfZXAucG9ydCwgcCk7CisJICAgICAgICAgICAgICAgICAgICAg
ICBpbnAtPnNjdHBfZXAucG9ydCwgcCwKKwkgICAgICAgICAgICAgICAgICAgICAgIFNDVFBfSU5J
VElBTElaRV9BVVRIX1BBUkFNUyk7CiAJU0NUUF9BU09DX0NSRUFURV9VTkxPQ0soaW5wKTsKIAlp
ZiAoc3RjYiA9PSBOVUxMKSB7CiAJCS8qIEdhayEgbm8gbWVtb3J5ICovCkBAIC0xMjg2LDI2ICsx
MjU1LDI0IEBAIHNjdHA2X2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICpu
YW0sIHN0cnVjdCBwcm9jICpwKQogCQkvKiBTZXQgdGhlIGNvbm5lY3RlZCBmbGFnIHNvIHdlIGNh
biBxdWV1ZSBkYXRhICovCiAJCXNvaXNjb25uZWN0aW5nKHNvKTsKIAl9Ci0Jc3RjYi0+YXNvYy5z
dGF0ZSA9IFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQ7CisJU0NUUF9TRVRfU1RBVEUoc3RjYiwgU0NU
UF9TVEFURV9DT09LSUVfV0FJVCk7CiAJKHZvaWQpU0NUUF9HRVRUSU1FX1RJTUVWQUwoJnN0Y2It
PmFzb2MudGltZV9lbnRlcmVkKTsKLQotCS8qIGluaXRpYWxpemUgYXV0aGVudGljYXRpb24gcGFy
YW1ldGVycyBmb3IgdGhlIGFzc29jICovCi0Jc2N0cF9pbml0aWFsaXplX2F1dGhfcGFyYW1zKGlu
cCwgc3RjYik7Ci0KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQorCU5FVF9FUE9DSF9FTlRFUihldCk7CisjZW5kaWYKIAlzY3RwX3NlbmRfaW5pdGlh
dGUoaW5wLCBzdGNiLCBTQ1RQX1NPX0xPQ0tFRCk7CiAJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwor
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJTkVU
X0VQT0NIX0VYSVQoZXQpOworI2VuZGlmCiAJcmV0dXJuIChlcnJvcik7CiB9CiAKIHN0YXRpYyBp
bnQKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVm
aW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogc2N0cDZfZ2V0
YWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICoqYWRkcikKIHsKIAlzdHJ1
Y3Qgc29ja2FkZHJfaW42ICpzaW42OwotI2VsaWYgZGVmaW5lZChfX1BhbmRhX18pCi1zY3RwNl9n
ZXRhZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIpCi17Ci0Jc3Ry
dWN0IHNvY2thZGRyX2luNiAqc2luNiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopYWRkcjsKICNl
bHNlCiBzY3RwNl9nZXRhZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtKQog
ewpAQCAtMTMxNSwxOSArMTI4MiwxNyBAQCBzY3RwNl9nZXRhZGRyKHN0cnVjdCBzb2NrZXQgKnNv
LCBzdHJ1Y3QgbWJ1ZiAqbmFtKQogCXVpbnQzMl90IHZyZl9pZDsKIAlzdHJ1Y3Qgc2N0cF9pZmEg
KnNjdHBfaWZhOwogCi0jaWZkZWYgU0NUUF9LQU1FCisjaWYgZGVmaW5lZChTQ1RQX0tBTUUpICYm
IGRlZmluZWQoU0NUUF9FTUJFRERFRF9WNl9TQ09QRSkKIAlpbnQgZXJyb3I7Ci0jZW5kaWYgLyog
U0NUUF9LQU1FICovCisjZW5kaWYKIAogCS8qCiAJICogRG8gdGhlIG1hbGxvYyBmaXJzdCBpbiBj
YXNlIGl0IGJsb2Nrcy4KIAkgKi8KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVk
KF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCVNDVFBfTUFMTE9DX1NPTkFNRShzaW42LCBzdHJ1Y3Qgc29ja2FkZHJfaW42ICos
IHNpemVvZigqc2luNikpOwogCWlmIChzaW42ID09IE5VTEwpCiAJCXJldHVybiAoRU5PTUVNKTsK
LSNlbGlmIGRlZmluZWQoX19QYW5kYV9fKQotCW1lbXNldChzaW42LCAwLCBzaXplb2YoKnNpbjYp
KTsKICNlbHNlCiAJU0NUUF9CVUZfTEVOKG5hbSkgPSBzaXplb2YoKnNpbjYpOwogCW1lbXNldChz
aW42LCAwLCBzaXplb2YoKnNpbjYpKTsKQEAgLTEzMzksNyArMTMwNCw3IEBAIHNjdHA2X2dldGFk
ZHIoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICpuYW0pCiAKIAlpbnAgPSAoc3RydWN0
IHNjdHBfaW5wY2IgKilzby0+c29fcGNiOwogCWlmIChpbnAgPT0gTlVMTCkgewotI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93
c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCVNDVFBfRlJFRV9TT05BTUUoc2lu
Nik7CiAjZW5kaWYKIAkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBf
RlJPTV9TQ1RQNl9VU1JSRVEsIEVDT05OUkVTRVQpOwpAQCAtMTM1Nyw3ICsxMzIyLDcgQEAgc2N0
cDZfZ2V0YWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYgKm5hbSkKIAkJCXN0Y2Ig
PSBMSVNUX0ZJUlNUKCZpbnAtPnNjdHBfYXNvY19saXN0KTsKIAkJCWlmIChzdGNiID09IE5VTEwp
IHsKIAkJCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
fHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQlTQ1RQX0ZSRUVfU09OQU1FKHNpbjYpOwogI2VuZGlmCiAJ
CQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQNl9V
U1JSRVEsIEVOT0VOVCk7CkBAIC0xMzc5LDcgKzEzNDQsNyBAQCBzY3RwNl9nZXRhZGRyKHN0cnVj
dCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtKQogCQkJaWYgKCghZm5kKSB8fCAoc2luX2E2
ID09IE5VTEwpKSB7CiAJCQkJLyogcHVudCAqLwogCQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsK
LSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5l
ZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCVNDVFBfRlJF
RV9TT05BTUUoc2luNik7CiAjZW5kaWYKIAkJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVM
TCwgTlVMTCwgU0NUUF9GUk9NX1NDVFA2X1VTUlJFUSwgRU5PRU5UKTsKQEAgLTE0MTAsNyArMTM3
NSw3IEBAIHNjdHA2X2dldGFkZHIoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICpuYW0p
CiAJCQl9CiAJCX0KIAkJaWYgKCFmbmQpIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBk
ZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogCQkJU0NUUF9GUkVFX1NPTkFNRShzaW42KTsKICNlbmRpZgogCQkJU0NU
UF9JTlBfUlVOTE9DSyhpbnApOwpAQCAtMTQzNCwyMSArMTM5OSwxNyBAQCBzY3RwNl9nZXRhZGRy
KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtKQogCQlzaW42LT5zaW42X3Njb3Bl
X2lkID0gMDsJLyogWFhYICovCiAjZW5kaWYgLyogU0NUUF9LQU1FICovCiAjZW5kaWYgLyogU0NU
UF9FTUJFRERFRF9WNl9TQ09QRSAqLwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmlu
ZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAJKCphZGRyKSA9IChzdHJ1Y3Qgc29ja2FkZHIgKilzaW42OwogI2VuZGlmCiAJ
cmV0dXJuICgwKTsKIH0KIAogc3RhdGljIGludAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8
IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiBzY3RwNl9wZWVyYWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0
IHNvY2thZGRyICoqYWRkcikKIHsKIAlzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW42OwotI2VsaWYg
ZGVmaW5lZChfX1BhbmRhX18pCi1zY3RwNl9wZWVyYWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3Ry
dWN0IHNvY2thZGRyICphZGRyKQotewotCXN0cnVjdCBzb2NrYWRkcl9pbjYgKnNpbjYgPSAoc3Ry
dWN0IHNvY2thZGRyX2luNiAqKWFkZHI7CiAjZWxzZQogc2N0cDZfcGVlcmFkZHIoc3RydWN0IHNv
Y2tldCAqc28sIHN0cnVjdCBtYnVmICpuYW0pCiB7CkBAIC0xNDY0LDEyICsxNDI1LDEwIEBAIHNj
dHA2X3BlZXJhZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtKQogI2VuZGlm
CiAKIAkvKiBEbyB0aGUgbWFsbG9jIGZpcnN0IGluIGNhc2UgaXQgYmxvY2tzLiAqLwotI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2lu
ZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJU0NUUF9NQUxMT0NfU09OQU1F
KHNpbjYsIHN0cnVjdCBzb2NrYWRkcl9pbjYgKiwgc2l6ZW9mICpzaW42KTsKIAlpZiAoc2luNiA9
PSBOVUxMKQogCQlyZXR1cm4gKEVOT01FTSk7Ci0jZWxpZiBkZWZpbmVkKF9fUGFuZGFfXykKLQlt
ZW1zZXQoc2luNiwgMCwgc2l6ZW9mKCpzaW42KSk7CiAjZWxzZQogCVNDVFBfQlVGX0xFTihuYW0p
ID0gc2l6ZW9mKCpzaW42KTsKIAltZW1zZXQoc2luNiwgMCwgc2l6ZW9mKCpzaW42KSk7CkBAIC0x
NDgzLDcgKzE0NDIsNyBAQCBzY3RwNl9wZWVyYWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0
IG1idWYgKm5hbSkKIAlpZiAoKGlucCA9PSBOVUxMKSB8fAogCSAgICAoKGlucC0+c2N0cF9mbGFn
cyAmIFNDVFBfUENCX0ZMQUdTX0NPTk5FQ1RFRCkgPT0gMCkpIHsKIAkJLyogVURQIHR5cGUgYW5k
IGxpc3RlbmVycyB3aWxsIGRyb3Agb3V0IGhlcmUgKi8KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCQlTQ1RQX0ZSRUVfU09OQU1FKHNpbjYpOwogI2VuZGlmCiAJ
CVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUDZfVVNS
UkVRLCBFTk9UQ09OTik7CkBAIC0xNDk2LDcgKzE0NTUsNyBAQCBzY3RwNl9wZWVyYWRkcihzdHJ1
Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYgKm5hbSkKIAl9CiAJU0NUUF9JTlBfUlVOTE9DSyhp
bnApOwogCWlmIChzdGNiID09IE5VTEwpIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBk
ZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogCQlTQ1RQX0ZSRUVfU09OQU1FKHNpbjYpOwogI2VuZGlmCiAJCVNDVFBf
TFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUDZfVVNSUkVRLCBF
Q09OTlJFU0VUKTsKQEAgLTE1MTUsNyArMTQ3NCw3IEBAIHNjdHA2X3BlZXJhZGRyKHN0cnVjdCBz
b2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtKQogCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKIAlp
ZiAoIWZuZCkgewogCQkvKiBObyBJUHY0IGFkZHJlc3MgKi8KLSNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlTQ1RQX0ZSRUVfU09OQU1FKHNpbjYpOwogI2VuZGlm
CiAJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUDZf
VVNSUkVRLCBFTk9FTlQpOwpAQCAtMTUyNCw3ICsxNDgzLDcgQEAgc2N0cDZfcGVlcmFkZHIoc3Ry
dWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICpuYW0pCiAjaWZkZWYgU0NUUF9FTUJFRERFRF9W
Nl9TQ09QRQogI2lmZGVmIFNDVFBfS0FNRQogCWlmICgoZXJyb3IgPSBzYTZfcmVjb3ZlcnNjb3Bl
KHNpbjYpKSAhPSAwKSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQ
UExFX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKIAkJU0NUUF9GUkVFX1NPTkFNRShzaW42KTsKICNlbmRpZgogCQlTQ1RQX0xUUkFDRV9FUlJf
UkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFA2X1VTUlJFUSwgZXJyb3IpOwpAQCAt
MTUzNCwyMSArMTQ5MywxNiBAQCBzY3RwNl9wZWVyYWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3Ry
dWN0IG1idWYgKm5hbSkKIAlpbjZfcmVjb3ZlcnNjb3BlKHNpbjYsICZzaW42LT5zaW42X2FkZHIs
IE5VTEwpOwogI2VuZGlmIC8qIFNDVFBfS0FNRSAqLwogI2VuZGlmIC8qIFNDVFBfRU1CRURERURf
VjZfU0NPUEUgKi8KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVf
XykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
CSphZGRyID0gKHN0cnVjdCBzb2NrYWRkciAqKXNpbjY7CiAjZW5kaWYKIAlyZXR1cm4gKDApOwog
fQogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRl
ZmluZWQoX19XaW5kb3dzX18pCisjaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIHN0YXRpYyBp
bnQKIHNjdHA2X2luNmdldGFkZHIoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAq
Km5hbSkKIHsKLSNlbGlmIGRlZmluZWQoX19QYW5kYV9fKQotaW50Ci1zY3RwNl9pbjZnZXRhZGRy
KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKm5hbSwgdWludDMyX3QgKm5hbWVs
ZW4pCi17Ci0Jc3RydWN0IHNvY2thZGRyICphZGRyID0gbmFtOwogI2VsaWYgZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogaW50CiBzY3RwNl9pbjZnZXRhZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1
Y3QgbWJ1ZiAqbmFtKQpAQCAtMTU2NCwxMCArMTUxOCwxMCBAQCBzY3RwNl9pbjZnZXRhZGRyKHN0
cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtKQogCXN0cnVjdCBzb2NrYWRkciAqYWRk
ciA9IG10b2QobmFtLCBzdHJ1Y3Qgc29ja2FkZHIgKik7CiAjZW5kaWYKICNlbmRpZgotCXN0cnVj
dCBpbjZwY2IgKmlucDYgPSBzb3RvaW42cGNiKHNvKTsKKwlzdHJ1Y3QgaW5wY2IgKmlucCA9IHNv
dG9pbnBjYihzbyk7CiAJaW50IGVycm9yOwogCi0JaWYgKGlucDYgPT0gTlVMTCkgeworCWlmIChp
bnAgPT0gTlVMTCkgewogCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKE5VTEwsIE5VTEwsIE5VTEwsIFND
VFBfRlJPTV9TQ1RQNl9VU1JSRVEsIEVJTlZBTCk7CiAJCXJldHVybiAoRUlOVkFMKTsKIAl9CkBA
IC0xNTc2LDcgKzE1MzAsNyBAQCBzY3RwNl9pbjZnZXRhZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBz
dHJ1Y3QgbWJ1ZiAqbmFtKQogCWVycm9yID0gc2N0cDZfZ2V0YWRkcihzbywgbmFtKTsKICNpZmRl
ZiBJTkVUCiAJaWYgKGVycm9yKSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5l
ZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKIAkJc3RydWN0IHNvY2thZGRyX2luNiAqc2luNjsKICNlbHNlCiAJCXN0cnVjdCBz
b2NrYWRkcl9pbjYgc2luNjsKQEAgLTE1ODcsNyArMTU0MSw3IEBAIHNjdHA2X2luNmdldGFkZHIo
c3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICpuYW0pCiAJCWlmIChlcnJvcikgewogCQkJ
cmV0dXJuIChlcnJvcik7CiAJCX0KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVk
KF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCQlTQ1RQX01BTExPQ19TT05BTUUoc2luNiwgc3RydWN0IHNvY2thZGRyX2luNiAq
LCBzaXplb2YgKnNpbjYpOwogCQlpZiAoc2luNiA9PSBOVUxMKSB7CiAJCQlTQ1RQX0ZSRUVfU09O
QU1FKCpuYW0pOwpAQCAtMTYwMiwyMyArMTU1NiwxNSBAQCBzY3RwNl9pbjZnZXRhZGRyKHN0cnVj
dCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtKQogCQltZW1jcHkoYWRkciwgJnNpbjYsIHNp
emVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSk7CiAjZW5kaWYKIAl9Ci0jZW5kaWYKLSNpZiBkZWZp
bmVkKF9fUGFuZGFfXykKLQkqbmFtZWxlbiA9IG5hbS0+c2FfbGVuOwogI2VuZGlmCiAJcmV0dXJu
IChlcnJvcik7CiB9CiAKIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19B
UFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiBzdGF0aWMgaW50CiBzY3RwNl9nZXRwZWVyYWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3Ry
dWN0IHNvY2thZGRyICoqbmFtKQogewotI2VsaWYgZGVmaW5lZChfX1BhbmRhX18pCi1pbnQKLXNj
dHA2X2dldHBlZXJhZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKm5hbSwg
dWludDMyX3QgKm5hbWVsZW4pCi17Ci0Jc3RydWN0IHNvY2thZGRyICphZGRyID0gKHN0cnVjdCBz
b2NrYWRkciAqKW5hbTsKICNlbGlmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIGludAogc2N0cDZf
Z2V0cGVlcmFkZHIoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICpuYW0pCkBAIC0xNjM2
LDEwICsxNTgyLDEwIEBAIHNjdHA2X2dldHBlZXJhZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1
Y3QgbWJ1ZiAqbmFtKQogI2VuZGlmCiAKICNlbmRpZgotCXN0cnVjdCBpbjZwY2IgKmlucDYgPSBz
b3RvaW42cGNiKHNvKTsKKwlzdHJ1Y3QgaW5wY2IgKmlucCA9IHNvdG9pbnBjYihzbyk7CiAJaW50
IGVycm9yOwogCi0JaWYgKGlucDYgPT0gTlVMTCkgeworCWlmIChpbnAgPT0gTlVMTCkgewogCQlT
Q1RQX0xUUkFDRV9FUlJfUkVUKE5VTEwsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQNl9VU1JS
RVEsIEVJTlZBTCk7CiAJCXJldHVybiAoRUlOVkFMKTsKIAl9CkBAIC0xNjQ4LDcgKzE1OTQsNyBA
QCBzY3RwNl9nZXRwZWVyYWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYgKm5hbSkK
IAllcnJvciA9IHNjdHA2X3BlZXJhZGRyKHNvLCBuYW0pOwogI2lmZGVmIElORVQKIAlpZiAoZXJy
b3IpIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwg
ZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlzdHJ1
Y3Qgc29ja2FkZHJfaW42ICpzaW42OwogI2Vsc2UKIAkJc3RydWN0IHNvY2thZGRyX2luNiBzaW42
OwpAQCAtMTY1OSw3ICsxNjA1LDcgQEAgc2N0cDZfZ2V0cGVlcmFkZHIoc3RydWN0IHNvY2tldCAq
c28sIHN0cnVjdCBtYnVmICpuYW0pCiAJCWlmIChlcnJvcikgewogCQkJcmV0dXJuIChlcnJvcik7
CiAJCX0KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwg
ZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlTQ1RQ
X01BTExPQ19TT05BTUUoc2luNiwgc3RydWN0IHNvY2thZGRyX2luNiAqLCBzaXplb2YgKnNpbjYp
OwogCQlpZiAoc2luNiA9PSBOVUxMKSB7CiAJCQlTQ1RQX0ZSRUVfU09OQU1FKCpuYW0pOwpAQCAt
MTY3NCwxNCArMTYyMCwxMSBAQCBzY3RwNl9nZXRwZWVyYWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywg
c3RydWN0IG1idWYgKm5hbSkKIAkJbWVtY3B5KGFkZHIsICZzaW42LCBzaXplb2Yoc3RydWN0IHNv
Y2thZGRyX2luNikpOwogI2VuZGlmCiAJfQotI2VuZGlmCi0jaWYgZGVmaW5lZChfX1BhbmRhX18p
Ci0JKm5hbWVsZW4gPSBuYW0tPnNhX2xlbjsKICNlbmRpZgogCXJldHVybiAoZXJyb3IpOwogfQog
Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmlu
ZWQoX19XaW5kb3dzX18pCisjaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIHN0cnVjdCBwcl91
c3JyZXFzIHNjdHA2X3VzcnJlcXMgPSB7CiAjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKIAkucHJ1
X2Fib3J0ID0gc2N0cDZfYWJvcnQsCkBAIC0xNjkwLDE1ICsxNjMzLDEwIEBAIHN0cnVjdCBwcl91
c3JyZXFzIHNjdHA2X3VzcnJlcXMgPSB7CiAJLnBydV9iaW5kID0gc2N0cDZfYmluZCwKIAkucHJ1
X2Nvbm5lY3QgPSBzY3RwNl9jb25uZWN0LAogCS5wcnVfY29udHJvbCA9IGluNl9jb250cm9sLAot
I2lmIF9fRnJlZUJTRF92ZXJzaW9uID49IDY5MDAwMAogCS5wcnVfY2xvc2UgPSBzY3RwNl9jbG9z
ZSwKIAkucHJ1X2RldGFjaCA9IHNjdHA2X2Nsb3NlLAogCS5wcnVfc29wb2xsID0gc29wb2xsX2dl
bmVyaWMsCiAJLnBydV9mbHVzaCA9IHNjdHBfZmx1c2gsCi0jZWxzZQotCS5wcnVfZGV0YWNoID0g
c2N0cDZfZGV0YWNoLAotCS5wcnVfc29wb2xsID0gc29wb2xsLAotI2VuZGlmCiAJLnBydV9kaXNj
b25uZWN0ID0gc2N0cDZfZGlzY29ubmVjdCwKIAkucHJ1X2xpc3RlbiA9IHNjdHBfbGlzdGVuLAog
CS5wcnVfcGVlcmFkZHIgPSBzY3RwNl9nZXRwZWVyYWRkciwKQEAgLTE3MDcsNyArMTY0NSw3IEBA
IHN0cnVjdCBwcl91c3JyZXFzIHNjdHA2X3VzcnJlcXMgPSB7CiAJLnBydV9zb2NrYWRkciA9IHNj
dHA2X2luNmdldGFkZHIsCiAJLnBydV9zb3NlbmQgPSBzY3RwX3Nvc2VuZCwKIAkucHJ1X3NvcmVj
ZWl2ZSA9IHNjdHBfc29yZWNlaXZlCi0jZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNlbGlmIGRl
ZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCS5wcnVfYWJvcnQg
PSBzY3RwNl9hYm9ydCwKIAkucHJ1X2FjY2VwdCA9IHNjdHBfYWNjZXB0LAogCS5wcnVfYXR0YWNo
ID0gc2N0cDZfYXR0YWNoLApAQCAtMTcyOCw3ICsxNjY2LDcgQEAgc3RydWN0IHByX3VzcnJlcXMg
c2N0cDZfdXNycmVxcyA9IHsKIAkucHJ1X3Nvc2VuZCA9IHNjdHBfc29zZW5kLAogCS5wcnVfc29y
ZWNlaXZlID0gc2N0cF9zb3JlY2VpdmUsCiAJLnBydV9zb3BvbGwgPSBzb3BvbGwKLSNlbGlmIGRl
ZmluZWQoX19XaW5kb3dzX18pCisjZWxpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKIAlzY3RwNl9hYm9ydCwKIAlzY3RwX2FjY2VwdCwKIAlzY3RwNl9hdHRhY2gs
CkBAIC0xNzU1LDcgKzE2OTMsNyBAQCBzdHJ1Y3QgcHJfdXNycmVxcyBzY3RwNl91c3JyZXFzID0g
ewogI2VuZGlmCiB9OwogCi0jZWxpZiAhZGVmaW5lZChfX1BhbmRhX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCisjZWxpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogaW50CiBzY3RwNl91
c3JyZXEoc28sIHJlcSwgbSwgbmFtLCBjb250cm9sLCBwKQogCXN0cnVjdCBzb2NrZXQgKnNvOwpA
QCAtMTc2MywyMiArMTcwMSwyMiBAQCBzY3RwNl91c3JyZXEoc28sIHJlcSwgbSwgbmFtLCBjb250
cm9sLCBwKQogCXN0cnVjdCBtYnVmICptLCAqbmFtLCAqY29udHJvbDsKIAlzdHJ1Y3QgcHJvYyAq
cDsKIHsKLQlpbnQgczsKLQlpbnQgZXJyb3IgPSAwOworCWludCBlcnJvcjsKIAlpbnQgZmFtaWx5
OwotCXVpbnQzMl90IHZyZl9pZDsKKwogCWZhbWlseSA9IHNvLT5zb19wcm90by0+cHJfZG9tYWlu
LT5kb21fZmFtaWx5OwogCiAJaWYgKHJlcSA9PSBQUlVfQ09OVFJPTCkgewogCQlzd2l0Y2ggKGZh
bWlseSkgewogCQljYXNlIFBGX0lORVQ6CiAJCQllcnJvciA9IGluX2NvbnRyb2woc28sIChsb25n
KW0sIChjYWRkcl90KW5hbSwKLQkJCSAgICAoc3RydWN0IGlmbmV0ICopY29udHJvbAotCQkJICAg
ICk7CisJCQkgICAgKHN0cnVjdCBpZm5ldCAqKWNvbnRyb2wgKTsKKwkJCWJyZWFrOwogI2lmZGVm
IElORVQ2CiAJCWNhc2UgUEZfSU5FVDY6CiAJCQllcnJvciA9IGluNl9jb250cm9sKHNvLCAobG9u
ZyltLCAoY2FkZHJfdCluYW0sCiAJCQkgICAgKHN0cnVjdCBpZm5ldCAqKWNvbnRyb2wsIHApOwor
CQkJYnJlYWs7CiAjZW5kaWYKIAkJZGVmYXVsdDoKIAkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoTlVM
TCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFA2X1VTUlJFUSwgRUFGTk9TVVBQT1JUKTsKQEAg
LTE4NjIsNiArMTgwMCw3IEBAIHNjdHA2X3VzcnJlcShzbywgcmVxLCBtLCBuYW0sIGNvbnRyb2ws
IHApCiAJCWVycm9yID0gMDsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKKwkJZXJyb3IgPSAwOwogCQli
cmVhazsKIAl9CiAJcmV0dXJuIChlcnJvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3Rw
bGliL25ldGluZXQ2L3NjdHA2X3Zhci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0Ni9z
Y3RwNl92YXIuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDNjNDI4NWQy
OWNiNzhiZTEzZmIwYTZiZTY4NjdjY2Y2Nzk4MDY5ZTguLjU2YTZjM2FmM2Q5YzE2OWEwNjIzY2Rl
OTE2MGQyNmNkNjkyM2RhMTYKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0Ni9zY3Rw
Nl92YXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQ2L3NjdHA2X3Zhci5oCkBA
IC0zMiw3ICszMiw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KIF9fRkJTRElEKCIkRnJl
ZUJTRDogaGVhZC9zeXMvbmV0aW5ldDYvc2N0cDZfdmFyLmggMzE3NDU3IDIwMTctMDQtMjYgMTk6
MjY6NDBaIHR1ZXhlbiAkIik7CiAjZW5kaWYKQEAgLTQ0LDQ1ICs0NCwzMyBAQCBfX0ZCU0RJRCgi
JEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQ2L3NjdHA2X3Zhci5oIDMxNzQ1NyAyMDE3LTA0LTI2
IDE5OjI2OjQwWiB0dQogI2lmZGVmIElORVQKIGV4dGVybiB2b2lkIGluNl9zaW42XzJfc2luKHN0
cnVjdCBzb2NrYWRkcl9pbiAqLCBzdHJ1Y3Qgc29ja2FkZHJfaW42ICopOwogZXh0ZXJuIHZvaWQg
aW42X3NpbjZfMl9zaW5faW5fc29jayhzdHJ1Y3Qgc29ja2FkZHIgKik7Ci1leHRlcm4gdm9pZCBp
bjZfc2luXzJfdjRtYXBzaW42KHN0cnVjdCBzb2NrYWRkcl9pbiAqLCBzdHJ1Y3Qgc29ja2FkZHJf
aW42ICopOworZXh0ZXJuIHZvaWQgaW42X3Npbl8yX3Y0bWFwc2luNihjb25zdCBzdHJ1Y3Qgc29j
a2FkZHJfaW4gKiwgc3RydWN0IHNvY2thZGRyX2luNiAqKTsKICNlbmRpZgogI2VuZGlmCiAjaWYg
ZGVmaW5lZChfS0VSTkVMKQogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgKF9fQVBQTEVf
XykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
U1lTQ1RMX0RFQ0woX25ldF9pbmV0Nl9zY3RwNik7CiBleHRlcm4gc3RydWN0IHByX3VzcnJlcXMg
c2N0cDZfdXNycmVxczsKICNlbHNlCiBpbnQgc2N0cDZfdXNycmVxKHN0cnVjdCBzb2NrZXQgKiwg
aW50LCBzdHJ1Y3QgbWJ1ZiAqLCBzdHJ1Y3QgbWJ1ZiAqLCBzdHJ1Y3QgbWJ1ZiAqKTsKICNlbmRp
ZgogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBpbnQgc2N0cDZfaW5wdXQoc3RydWN0IG1idWYgKiosIGlu
dCAqKTsKIGludCBzY3RwNl9pbnB1dF93aXRoX3BvcnQoc3RydWN0IG1idWYgKiosIGludCAqLCB1
aW50MTZfdCk7Ci0jZWxpZiBkZWZpbmVkKF9fUGFuZGFfXykKLWludCBzY3RwNl9pbnB1dCAocGFr
aGFuZGxlX3R5cGUgKik7Ci0jZWxpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0Rf
dmVyc2lvbiA8IDkwMjAwMAotaW50IHNjdHA2X2lucHV0IF9fUCgoc3RydWN0IG1idWYgKiosIGlu
dCAqLCBpbnQpKTsKLWludCBzY3RwNl9pbnB1dF93aXRoX3BvcnQgX19QKChzdHJ1Y3QgbWJ1ZiAq
KiwgaW50ICosIHVpbnQxNl90KSk7CiAjZWxzZQogaW50IHNjdHA2X2lucHV0KHN0cnVjdCBtYnVm
ICoqLCBpbnQgKiwgaW50KTsKIGludCBzY3RwNl9pbnB1dF93aXRoX3BvcnQoc3RydWN0IG1idWYg
KiosIGludCAqLCB1aW50MTZfdCk7CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiBfX0ZyZWVCU0RfdmVyc2lvbiA8IDkwMjAwMAotaW50IHNjdHA2X291dHB1dAotX19QKChzdHJ1
Y3Qgc2N0cF9pbnBjYiAqLCBzdHJ1Y3QgbWJ1ZiAqLCBzdHJ1Y3Qgc29ja2FkZHIgKiwKLSAgICAg
c3RydWN0IG1idWYgKiwgc3RydWN0IHByb2MgKikpOwotdm9pZCBzY3RwNl9jdGxpbnB1dCBfX1Ao
KGludCwgc3RydWN0IHNvY2thZGRyICosIHZvaWQgKikpOwotI2Vsc2UKIGludCBzY3RwNl9vdXRw
dXQoc3RydWN0IHNjdHBfaW5wY2IgKiwgc3RydWN0IG1idWYgKiwgc3RydWN0IHNvY2thZGRyICos
CiAgICAgICAgICAgICAgICAgIHN0cnVjdCBtYnVmICosIHN0cnVjdCBwcm9jICopOwotI2lmIGRl
ZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChBUFBMRV9MRU9QQVJEKSAmJiAhZGVmaW5lZChB
UFBMRV9TTk9XTEVPUEFSRCkgJiYgIWRlZmluZWQoQVBQTEVfTElPTikgJiYgIWRlZmluZWQoQVBQ
TEVfTU9VTlRBSU5MSU9OKSAmJiAhZGVmaW5lZChBUFBMRV9FTENBUElUQU4pCisjaWYgZGVmaW5l
ZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pICYmICFkZWZpbmVkKEFQUExF
X0xFT1BBUkQpICYmICFkZWZpbmVkKEFQUExFX1NOT1dMRU9QQVJEKSAmJiAhZGVmaW5lZChBUFBM
RV9MSU9OKSAmJiAhZGVmaW5lZChBUFBMRV9NT1VOVEFJTkxJT04pICYmICFkZWZpbmVkKEFQUExF
X0VMQ0FQSVRBTikKIHZvaWQgc2N0cDZfY3RsaW5wdXQoaW50LCBzdHJ1Y3Qgc29ja2FkZHIgKiwg
dm9pZCAqLCBzdHJ1Y3QgaWZuZXQgKiBTQ1RQX1VOVVNFRCk7CiAjZWxzZQogdm9pZCBzY3RwNl9j
dGxpbnB1dChpbnQsIHN0cnVjdCBzb2NrYWRkciAqLCB2b2lkICopOwogI2VuZGlmCi0jZW5kaWYK
LSNpZiAhKGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSkKKyNpZiAh
KChkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykpICAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKSkKIGV4dGVybiB2b2lkIGluNl9zaW5fMl92NG1hcHNpbjYoc3RydWN0
IHNvY2thZGRyX2luICosIHN0cnVjdCBzb2NrYWRkcl9pbjYgKik7CiBleHRlcm4gdm9pZCBpbjZf
c2luNl8yX3NpbihzdHJ1Y3Qgc29ja2FkZHJfaW4gKiwgc3RydWN0IHNvY2thZGRyX2luNiAqKTsK
IGV4dGVybiB2b2lkIGluNl9zaW42XzJfc2luX2luX3NvY2soc3RydWN0IHNvY2thZGRyICopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX2F0b21pYy5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIv
dXNyc2N0cGxpYi91c2VyX2F0b21pYy5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUK
aW5kZXggODk3MzljNGU5MDgyYzc2Yzk2NTVhOTQ0MmQ3YjhiZGYxMGNiMDAwNi4uYjE1YWNmNWEw
YjNhNzE5YTUzM2NlZTA3NGM4NTVlMzJkMzNkNGM0MwotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGli
L3VzZXJfYXRvbWljLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX2F0b21pYy5oCkBA
IC00Miw4ICs0Miw4IEBACiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMu
aD4KIAotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRGFyd2luKSB8fCBkZWZpbmVkIChfX1Vz
ZXJzcGFjZV9vc19XaW5kb3dzKQotI2lmIGRlZmluZWQgKF9fVXNlcnNwYWNlX29zX1dpbmRvd3Mp
CisjaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX1dJTjMyKQorI2lmIGRlZmluZWQo
X1dJTjMyKQogI2RlZmluZSBhdG9taWNfYWRkX2ludChhZGRyLCB2YWwpIEludGVybG9ja2VkRXhj
aGFuZ2VBZGQoKExQTE9ORylhZGRyLCAoTE9ORyl2YWwpCiAjZGVmaW5lIGF0b21pY19mZXRjaGFk
ZF9pbnQoYWRkciwgdmFsKSBJbnRlcmxvY2tlZEV4Y2hhbmdlQWRkKChMUExPTkcpYWRkciwgKExP
TkcpdmFsKQogI2RlZmluZSBhdG9taWNfc3VidHJhY3RfaW50KGFkZHIsIHZhbCkgICBJbnRlcmxv
Y2tlZEV4Y2hhbmdlQWRkKChMUExPTkcpYWRkciwtKChMT05HKXZhbCkpCkBAIC03Nyw3ICs3Nyw3
IEBACiAJfSBcCiB9CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3Mp
CisjaWYgZGVmaW5lZChfV0lOMzIpCiBzdGF0aWMgdm9pZCBhdG9taWNfaW5pdCh2b2lkKSB7fSAv
KiBlbXB0eSB3aGVuIHdlIGFyZSBub3QgdXNpbmcgYXRvbWljX210eCAqLwogI2Vsc2UKIC8vIFdl
YktpdCBjaGFuZ2UsIHRoaXMgY29uZmxpY3RzIHdpdGggYXRvbWljX2luaXQKQEAgLTE3NCw3ICsx
NzQsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXRvbWljX2luaXQoKSB7fSAvKiBlbXB0eSB3aGVu
IHdlIGFyZSBub3QgdXNpbmcgYXRvbWljX210eCAqLwogCiBleHRlcm4gdXNlcmxhbmRfbXV0ZXhf
dCBhdG9taWNfbXR4OwogCi0jaWYgZGVmaW5lZCAoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNp
ZiBkZWZpbmVkKF9XSU4zMikKIHN0YXRpYyBpbmxpbmUgdm9pZCBhdG9taWNfaW5pdCgpIHsKIAlJ
bml0aWFsaXplQ3JpdGljYWxTZWN0aW9uKCZhdG9taWNfbXR4KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3Jz
Y3RwbGliL3VzcnNjdHBsaWIvdXNlcl9lbnZpcm9ubWVudC5jIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxp
Yi91c2VyX2Vudmlyb25tZW50LmMKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRl
eCA3NjdjNGJhNGQ0M2ZmYmE3NWEyMzA3NDEwNTllNGU5M2EwODY4ZTYzLi5kYzlkOThhMzkyMDEw
NThmZWUxOTNlNzIwZjI5MjFjOTMxZmIxMGY3Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNl
cl9lbnZpcm9ubWVudC5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9lbnZpcm9ubWVu
dC5jCkBAIC0zMSw3ICszMSw3IEBACiAvKiBfX1VzZXJzcGFjZV9fICovCiAKICNpbmNsdWRlIDxz
dGRsaWIuaD4KLSNpZiAhZGVmaW5lZCAoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiAhZGVm
aW5lZChfV0lOMzIpCiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bmV0aW5ldC9zY3Rw
X29zX3VzZXJzcGFjZS5oPgogI2VuZGlmCkBAIC02NCw5ICs2NCwyOCBAQCB1c2VybGFuZF9tdXRl
eF90IGF0b21pY19tdHg7CiAgKiBwcm92aWRlIF9zb21lXyBraW5kIG9mIHJhbmRvbW5lc3MuIFRo
aXMgc2hvdWxkIG9ubHkgYmUgdXNlZAogICogaW5zaWRlIG90aGVyIFJORydzLCBsaWtlIGFyYzRy
YW5kb20oOSkuCiAgKi8KLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0ZyZWVCU0QpIHx8IGRl
ZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRGFyd2luKQotc3RhdGljIGludAotcmVhZF9yYW5kb21fcGhv
bnkodm9pZCAqYnVmLCBpbnQgY291bnQpCisjaWZkZWYgRlVaWklOR19CVUlMRF9NT0RFX1VOU0FG
RV9GT1JfUFJPRFVDVElPTgordm9pZAoraW5pdF9yYW5kb20odm9pZCkKK3sKKwlyZXR1cm47Cit9
CisKK2ludAorcmVhZF9yYW5kb20odm9pZCAqYnVmLCBpbnQgY291bnQpCit7CisJbWVtc2V0KGJ1
ZiwgJ0EnLCBjb3VudCk7CisJcmV0dXJuIChjb3VudCk7Cit9CisjZWxpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pIHx8IGRlZmluZWQoX19PcGVuQlNEX18p
IHx8IGRlZmluZWQoX19PcGVuQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKQordm9pZAoraW5p
dF9yYW5kb20odm9pZCkKK3sKKwlyZXR1cm47Cit9CisKK2ludAorcmVhZF9yYW5kb20odm9pZCAq
YnVmLCBpbnQgY291bnQpCiB7CiAJaWYgKGNvdW50ID49IDApIHsKIAkJYXJjNHJhbmRvbV9idWYo
YnVmLCBjb3VudCk7CkBAIC03NCwxNCArOTMsMzMgQEAgcmVhZF9yYW5kb21fcGhvbnkodm9pZCAq
YnVmLCBpbnQgY291bnQpCiAJcmV0dXJuIChjb3VudCk7CiB9CiAjZWxzZQotc3RhdGljIGludAot
cmVhZF9yYW5kb21fcGhvbnkodm9pZCAqYnVmLCBpbnQgY291bnQpCit2b2lkCitpbml0X3JhbmRv
bSh2b2lkKQoreworCXN0cnVjdCB0aW1ldmFsIG5vdzsKKwl1bnNpZ25lZCBpbnQgc2VlZDsKKwor
CSh2b2lkKVNDVFBfR0VUVElNRV9USU1FVkFMKCZub3cpOworCXNlZWQgPSAwOworCXNlZWQgfD0g
KHVuc2lnbmVkIGludClub3cudHZfc2VjOworCXNlZWQgfD0gKHVuc2lnbmVkIGludClub3cudHZf
dXNlYzsKKyNpZiAhZGVmaW5lZChfV0lOMzIpICYmISBkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9f
KQorCXNlZWQgfD0gZ2V0cGlkKCk7CisjZW5kaWYKKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVm
aW5lZChfX25hdGl2ZV9jbGllbnRfXykKKwlzcmFuZChzZWVkKTsKKyNlbHNlCisJc3JhbmRvbShz
ZWVkKTsKKyNlbmRpZgorCXJldHVybjsKK30KKworaW50CityZWFkX3JhbmRvbSh2b2lkICpidWYs
IGludCBjb3VudCkKIHsKIAl1aW50MzJfdCByYW5kdmFsOwogCWludCBzaXplLCBpOwogCi0JLyog
c3JhbmRvbSgpIGlzIGNhbGxlZCBpbiBrZXJuL2luaXRfbWFpbi5jOnByb2MwX3Bvc3QoKSAqLwot
CiAJLyogRmlsbCBidWZbXSB3aXRoIHJhbmRvbSg5KSBvdXRwdXQgKi8KIAlmb3IgKGkgPSAwOyBp
IDwgY291bnQ7IGkrPSAoaW50KXNpemVvZih1aW50MzJfdCkpIHsKIAkJcmFuZHZhbCA9IHJhbmRv
bSgpOwpAQCAtOTIsMTMgKzEzMCwzIEBAIHJlYWRfcmFuZG9tX3Bob255KHZvaWQgKmJ1ZiwgaW50
IGNvdW50KQogCXJldHVybiAoY291bnQpOwogfQogI2VuZGlmCi0KLXN0YXRpYyBpbnQgKCpyZWFk
X2Z1bmMpKHZvaWQgKiwgaW50KSA9IHJlYWRfcmFuZG9tX3Bob255OwotCi0vKiBVc2VybGFuZC12
aXNpYmxlIHZlcnNpb24gb2YgcmVhZF9yYW5kb20gKi8KLWludAotcmVhZF9yYW5kb20odm9pZCAq
YnVmLCBpbnQgY291bnQpCi17Ci0JcmV0dXJuICgoKnJlYWRfZnVuYykoYnVmLCBjb3VudCkpOwot
fQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfZW52aXJvbm1lbnQuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9lbnZpcm9ubWVudC5oCm9sZCBtb2RlIDEwMDY0NApu
ZXcgbW9kZSAxMDA3NTUKaW5kZXggYzExYWQyYzQxZmZkNWIxMDMyNGIwMGYxOTYwNGQyZjFkOWY0
MDNmNC4uMGMyZWM5ZGIyMzVmNDAyNjA1M2JjZjZhMmY1YzYzZDAyMjk1YmFlOQotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0
cGxpYi91c3JzY3RwbGliL3VzZXJfZW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3Rw
bGliL3VzZXJfZW52aXJvbm1lbnQuaApAQCAtMzMsMTIgKzMzLDEyIEBACiAvKiBfX1VzZXJzcGFj
ZV9fICovCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAKLSNpZmRlZiBfX1VzZXJzcGFjZV9vc19G
cmVlQlNECisjaWZkZWYgX19GcmVlQlNEX18KICNpZm5kZWYgX1NZU19NVVRFWF9IXwogI2luY2x1
ZGUgPHN5cy9tdXRleC5oPgogI2VuZGlmCiAjZW5kaWYKLSNpZiBkZWZpbmVkIChfX1VzZXJzcGFj
ZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogI2luY2x1ZGUgIm5ldGluZXQvc2N0
cF9vc191c2Vyc3BhY2UuaCIKICNlbmRpZgogCkBAIC02MiwxMiArNjIsMTMgQEAgZXh0ZXJuIGlu
dCBpcHBvcnRfZmlyc3RhdXRvLCBpcHBvcnRfbGFzdGF1dG87CiAgKi8KIGV4dGVybiBpbnQgbm1i
Y2x1c3RlcnM7CiAKLSNpZiAhZGVmaW5lZCAoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKLSNkZWZp
bmUgbWluKGEsYikgKChhKT4oYik/KGIpOihhKSkKLSNkZWZpbmUgbWF4KGEsYikgKChhKT4oYik/
KGEpOihiKSkKKyNpZiAhZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoX19NSU5HVzMyX18p
CisjZGVmaW5lIG1pbihhLGIpICgoKGEpPihiKSk/KGIpOihhKSkKKyNkZWZpbmUgbWF4KGEsYikg
KCgoYSk+KGIpKT8oYSk6KGIpKQogI2VuZGlmCiAKLWV4dGVybiBpbnQgcmVhZF9yYW5kb20odm9p
ZCAqYnVmLCBpbnQgY291bnQpOwordm9pZCBpbml0X3JhbmRvbSh2b2lkKTsKK2ludCByZWFkX3Jh
bmRvbSh2b2lkICosIGludCk7CiAKIC8qIGVycm5vJ3MgbWF5IGRpZmZlciBwZXIgT1MuICBlcnJu
by5oIG5vdyBpbmNsdWRlZCBpbiBzY3RwX29zX3VzZXJzcGFjZS5oICovCiAvKiBTb3VyY2U6IC91
c3Ivc3JjL3N5cy9zeXMvZXJybm8uaCAqLwpAQCAtODIsNyArODMsNyBAQCBleHRlcm4gaW50IHJl
YWRfcmFuZG9tKHZvaWQgKmJ1ZiwgaW50IGNvdW50KTsKIC8qIFNvdXJjZSBpcF9vdXRwdXQuYy4g
ZXh0ZXJuJ2QgaW4gaXBfdmFyLmggKi8KIGV4dGVybiB1X3Nob3J0IGlwX2lkOwogCi0jaWYgZGVm
aW5lZChfX1VzZXJzcGFjZV9vc19MaW51eCkKKyNpZiBkZWZpbmVkKF9fbGludXhfXykKICNkZWZp
bmUgSVBWNl9WRVJTSU9OICAgICAgICAgICAgMHg2MAogI2VuZGlmCiAKQEAgLTk2LDcgKzk3LDcg
QEAgdGVybWluYXRlX25vbl9ncmFjZWZ1bCh2b2lkKSB7CiAKICNkZWZpbmUgcGFuaWMoLi4uKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAJZG8geyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0JCVNDVFBfUFJJTlRGKCIlcygpOiAiLCBfX0ZVTkNU
SU9OX18pO1wKKwkJU0NUUF9QUklOVEYoIiVzKCk6ICIsIF9fZnVuY19fKTsgICAgXAogCQlTQ1RQ
X1BSSU5URihfX1ZBX0FSR1NfXyk7ICAgICAgICAgICBcCiAJCVNDVFBfUFJJTlRGKCJcbiIpOyAg
ICAgICAgICAgICAgICAgIFwKIAkJdGVybWluYXRlX25vbl9ncmFjZWZ1bCgpOyAgICAgICAgICAg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX2lucGNiLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi91c3JzY3RwbGliL3VzZXJfaW5wY2IuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1
CmluZGV4IDgxYjVkMjEyZDcwOWY0ZGQyNDQ4OWI4ZGYyMTE0YWM1NTY5OThkZTMuLjM1ZDU5Yzg1
OGYyMWRjN2QxMjJlZmNlNmY5NTAyZDExZTk0ZmYyNGEKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxp
Yi91c2VyX2lucGNiLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX2lucGNiLmgKQEAg
LTM1LDggKzM1LDYgQEAKIAogI2luY2x1ZGUgPHVzZXJfcm91dGUuaD4gLyogd2FzIDxuZXQvcm91
dGUuaD4gKi8KIAotI2RlZmluZQlpbjZwY2IJCWlucGNiCS8qIGZvciBLQU1FIHNyYyBzeW5jIG92
ZXIgQlNEKidzICovCi0jZGVmaW5lCWluNnBfc3AJCWlucF9zcAkvKiBmb3IgS0FNRSBzcmMgc3lu
YyBvdmVyIEJTRConcyAqLwogc3RydWN0IGlucGNicG9saWN5OwogCiAvKgpAQCAtNTYsNyArNTQs
NyBAQCBMSVNUX0hFQUQoaW5wY2Jwb3J0aGVhZCwgaW5wY2Jwb3J0KTsKICAqIHRoZSBmb2xsb3dp
bmcgc3RydWN0dXJlLgogICovCiBzdHJ1Y3QgaW5fYWRkcl80aW42IHsKLQl1X2ludDMyX3QJaWE0
Nl9wYWQzMlszXTsKKwl1aW50MzJfdAlpYTQ2X3BhZDMyWzNdOwogCXN0cnVjdAlpbl9hZGRyCWlh
NDZfYWRkcjQ7CiB9OwogCkBAIC02NSw4ICs2Myw4IEBAIHN0cnVjdCBpbl9hZGRyXzRpbjYgewog
ICogc29tZSBleHRyYSBwYWRkaW5nIHRvIGFjY29tcGxpc2ggdGhpcy4KICAqLwogc3RydWN0IGlu
X2VuZHBvaW50cyB7Ci0JdV9pbnQxNl90CWllX2Zwb3J0OwkJLyogZm9yZWlnbiBwb3J0ICovCi0J
dV9pbnQxNl90CWllX2xwb3J0OwkJLyogbG9jYWwgcG9ydCAqLworCXVpbnQxNl90CWllX2Zwb3J0
OwkJLyogZm9yZWlnbiBwb3J0ICovCisJdWludDE2X3QJaWVfbHBvcnQ7CQkvKiBsb2NhbCBwb3J0
ICovCiAJLyogcHJvdG9jb2wgZGVwZW5kZW50IHBhcnQsIGxvY2FsIGFuZCBmb3JlaWduIGFkZHIg
Ki8KIAl1bmlvbiB7CiAJCS8qIGZvcmVpZ24gaG9zdCB0YWJsZSBlbnRyeSAqLwpAQCAtODksOSAr
ODcsOSBAQCBzdHJ1Y3QgaW5fZW5kcG9pbnRzIHsKICAqIHJlZmVyZW5jZXMuCiAgKi8KIHN0cnVj
dCBpbl9jb25uaW5mbyB7Ci0JdV9pbnQ4X3QJaW5jX2ZsYWdzOwotCXVfaW50OF90CWluY19sZW47
Ci0JdV9pbnQxNl90CWluY19wYWQ7CS8qIFhYWCBhbGlnbm1lbnQgZm9yIGluX2VuZHBvaW50cyAq
LworCXVpbnQ4X3QJaW5jX2ZsYWdzOworCXVpbnQ4X3QJaW5jX2xlbjsKKwl1aW50MTZfdAlpbmNf
cGFkOwkvKiBYWFggYWxpZ25tZW50IGZvciBpbl9lbmRwb2ludHMgKi8KIAkvKiBwcm90b2NvbCBk
ZXBlbmRlbnQgcGFydCAqLwogCXN0cnVjdAlpbl9lbmRwb2ludHMgaW5jX2llOwogfTsKQEAgLTEx
Miw3ICsxMTAsNyBAQCBzdHJ1Y3QgaW5wY2IgewogCXN0cnVjdAlpbnBjYmluZm8gKmlucF9wY2Jp
bmZvOwkvKiBQQ0IgbGlzdCBpbmZvICovCiAJc3RydWN0CXNvY2tldCAqaW5wX3NvY2tldDsJLyog
YmFjayBwb2ludGVyIHRvIHNvY2tldCAqLwogCi0JdV9pbnQzMl90CWlucF9mbG93OworCXVpbnQz
Ml90CWlucF9mbG93OwogCWludAlpbnBfZmxhZ3M7CQkvKiBnZW5lcmljIElQL2RhdGFncmFtIGZs
YWdzICovCiAKIAl1X2NoYXIJaW5wX3ZmbGFnOwkJLyogSVAgdmVyc2lvbiBmbGFnICh2NC92Nikg
Ki8KQEAgLTMyNiwxMyArMzI0LDExIEBAIHN0cnVjdCBpbnBjYmluZm8gewogCiAjZGVmaW5lCUlO
UExPT0tVUF9XSUxEQ0FSRAkxCiAjZGVmaW5lCXNvdG9pbnBjYihzbykJKChzdHJ1Y3QgaW5wY2Ig
Kikoc28pLT5zb19wY2IpCi0jZGVmaW5lCXNvdG9pbjZwY2Ioc28pCXNvdG9pbnBjYihzbykgLyog
Zm9yIEtBTUUgc3JjIHN5bmMgb3ZlciBCU0QqJ3MgKi8KIAogI2RlZmluZQlJTlBfU09DS0FGKHNv
KSBzby0+c29fcHJvdG8tPnByX2RvbWFpbi0+ZG9tX2ZhbWlseQogCiAjZGVmaW5lCUlOUF9DSEVD
S19TT0NLQUYoc28sIGFmKQkoSU5QX1NPQ0tBRihzbykgPT0gYWYpCiAKLS8qICNpZmRlZiBfS0VS
TkVMICovCiBleHRlcm4gaW50CWlwcG9ydF9yZXNlcnZlZGhpZ2g7CiBleHRlcm4gaW50CWlwcG9y
dF9yZXNlcnZlZGxvdzsKIGV4dGVybiBpbnQJaXBwb3J0X2xvd2ZpcnN0YXV0bzsKQEAgLTM3Myw2
ICszNjksNSBAQCB2b2lkCWlwcG9ydF90aWNrKHZvaWQgKnh0cCk7CiAgKi8KIHZvaWQJZGJfcHJp
bnRfaW5wY2Ioc3RydWN0IGlucGNiICppbnAsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBpbmRlbnQp
OwogCi0vKiAjZW5kaWYgIF9LRVJORUwgKi8KIAogI2VuZGlmIC8qICFfTkVUSU5FVF9JTl9QQ0Jf
SF8gKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9pcDZfdmFyLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNy
c2N0cGxpYi91c3JzY3RwbGliL3VzZXJfaXA2X3Zhci5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9k
ZSAxMDA3NTUKaW5kZXggZjVlNGE2MGU0ZjI3YzU2ZTY2YWIxMzkzZWMwYTY4MWNlYjc5MWVhMi4u
ZTFjOGYyNDE1NjRlMTY1ZWVjNGYwYzMxNjc5ZTgwNzllMjMxYzEyMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91
c3JzY3RwbGliL3VzZXJfaXA2X3Zhci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9p
cDZfdmFyLmgKQEAgLTYwLDE2ICs2MCwxNiBAQAogI2lmbmRlZiBfVVNFUl9JUDZfVkFSX0hfCiAj
ZGVmaW5lIF9VU0VSX0lQNl9WQVJfSF8KIAotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2lu
ZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIHN0cnVjdCBpcDZfaGRyIHsKIAl1bmlvbiB7CiAJ
CXN0cnVjdCBpcDZfaGRyY3RsIHsKLQkJCXVfaW50MzJfdCBpcDZfdW4xX2Zsb3c7CS8qIDIwIGJp
dHMgb2YgZmxvdy1JRCAqLwotCQkJdV9pbnQxNl90IGlwNl91bjFfcGxlbjsJLyogcGF5bG9hZCBs
ZW5ndGggKi8KLQkJCXVfaW50OF90ICBpcDZfdW4xX254dDsJLyogbmV4dCBoZWFkZXIgKi8KLQkJ
CXVfaW50OF90ICBpcDZfdW4xX2hsaW07CS8qIGhvcCBsaW1pdCAqLworCQkJdWludDMyX3QgaXA2
X3VuMV9mbG93OwkvKiAyMCBiaXRzIG9mIGZsb3ctSUQgKi8KKwkJCXVpbnQxNl90IGlwNl91bjFf
cGxlbjsJLyogcGF5bG9hZCBsZW5ndGggKi8KKwkJCXVpbnQ4X3QgIGlwNl91bjFfbnh0OwkvKiBu
ZXh0IGhlYWRlciAqLworCQkJdWludDhfdCAgaXA2X3VuMV9obGltOwkvKiBob3AgbGltaXQgKi8K
IAkJfSBpcDZfdW4xOwotCQl1X2ludDhfdCBpcDZfdW4yX3ZmYzsJLyogNCBiaXRzIHZlcnNpb24s
IHRvcCA0IGJpdHMgY2xhc3MgKi8KKwkJdWludDhfdCBpcDZfdW4yX3ZmYzsJLyogNCBiaXRzIHZl
cnNpb24sIHRvcCA0IGJpdHMgY2xhc3MgKi8KIAl9IGlwNl9jdGx1bjsKIAlzdHJ1Y3QgaW42X2Fk
ZHIgaXA2X3NyYzsJLyogc291cmNlIGFkZHJlc3MgKi8KIAlzdHJ1Y3QgaW42X2FkZHIgaXA2X2Rz
dDsJLyogZGVzdGluYXRpb24gYWRkcmVzcyAqLwpAQCAtODQsMTggKzg0LDE4IEBAIHN0cnVjdCBp
cDZfaGRyIHsKICNkZWZpbmUgSVBWNl9WRVJTSU9OCQkweDYwCiAjZW5kaWYKIAotI2lmIGRlZmlu
ZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKICNkZWZpbmUg
czZfYWRkcjE2IHUuV29yZAogI2VuZGlmCi0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2lu
ZG93cykKLSNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19MaW51eCkKKyNpZiAhZGVmaW5lZChf
V0lOMzIpCisjaWYgIWRlZmluZWQoX19saW51eF9fKQogI2RlZmluZSBzNl9hZGRyOCAgX191Nl9h
ZGRyLl9fdTZfYWRkcjgKICNkZWZpbmUgczZfYWRkcjE2IF9fdTZfYWRkci5fX3U2X2FkZHIxNgog
I2RlZmluZSBzNl9hZGRyMzIgX191Nl9hZGRyLl9fdTZfYWRkcjMyCiAjZW5kaWYKICNlbmRpZgog
Ci0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRnJlZUJTRCkgJiYgIWRlZmluZWQoX19Vc2Vy
c3BhY2Vfb3NfT3BlbkJTRCkgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRHJhZ29uRmx5KQor
I2lmICFkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX09wZW5CU0RfXykgJiYgIWRl
ZmluZWQoX19EcmFnb25GbHlfXykKIHN0cnVjdCByb3V0ZV9pbjYgewogCXN0cnVjdAlydGVudHJ5
ICpyb19ydDsKIAlzdHJ1Y3QJbGxlbnRyeSAqcm9fbGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIv
dXNyc2N0cGxpYi91c2VyX2lwX2ljbXAuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9pcF9p
Y21wLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCBmNmZkNTQ4N2UyYmNl
M2MwYWViODE4YTZhZTRjYmUxMjNmYTg1NDRkLi4wNDkzMTRlMjA1MDI1MDFkZDU3N2E5NjVkOGJi
Y2Q5ODQzZGVhYjQyCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9pcF9pY21wLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX2lwX2ljbXAuaApAQCAtNDAsOCArNDAsOCBAQAog
ICogSW50ZXJuYWwgb2YgYW4gSUNNUCBSb3V0ZXIgQWR2ZXJ0aXNlbWVudAogICovCiBzdHJ1Y3Qg
aWNtcF9yYV9hZGRyIHsKLQl1X2ludDMyX3QgaXJhX2FkZHI7Ci0JdV9pbnQzMl90IGlyYV9wcmVm
ZXJlbmNlOworCXVpbnQzMl90IGlyYV9hZGRyOworCXVpbnQzMl90IGlyYV9wcmVmZXJlbmNlOwog
fTsKIAogLyoKQEAgLTUzLDE2ICs1MywxNiBAQCBzdHJ1Y3QgaWNtcGhkciB7CiAJdV9zaG9ydAlp
Y21wX2Nrc3VtOwkJLyogb25lcyBjb21wbGVtZW50IGNrc3VtIG9mIHN0cnVjdCAqLwogfTsKIAot
I2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikK
ICNwcmFnbWEgcGFjayAocHVzaCwgMSkKIHN0cnVjdCBpY21wNl9oZHIgewotCXVfaW50OF90IGlj
bXA2X3R5cGU7Ci0JdV9pbnQ4X3QgaWNtcDZfY29kZTsKLQl1X2ludDE2X3QgaWNtcDZfY2tzdW07
CisJdWludDhfdCBpY21wNl90eXBlOworCXVpbnQ4X3QgaWNtcDZfY29kZTsKKwl1aW50MTZfdCBp
Y21wNl9ja3N1bTsKIAl1bmlvbiB7Ci0JCXVfaW50MzJfdCBpY21wNl91bl9kYXRhMzJbMV07Ci0J
CXVfaW50MTZfdCBpY21wNl91bl9kYXRhMTZbMl07Ci0JCXVfaW50OF90IGljbXA2X3VuX2RhdGE4
WzRdOworCQl1aW50MzJfdCBpY21wNl91bl9kYXRhMzJbMV07CisJCXVpbnQxNl90IGljbXA2X3Vu
X2RhdGExNlsyXTsKKwkJdWludDhfdCBpY21wNl91bl9kYXRhOFs0XTsKIAl9IGljbXA2X2RhdGF1
bjsKIH07CiAjcHJhZ21hIHBhY2socG9wKQpAQCAtOTgsNyArOTgsNyBAQCBzdHJ1Y3QgaWNtcCB7
CiAJCXN0cnVjdCBpaF9ydHJhZHYgewogCQkJdV9jaGFyIGlydF9udW1fYWRkcnM7CiAJCQl1X2No
YXIgaXJ0X3dwYTsKLQkJCXVfaW50MTZfdCBpcnRfbGlmZXRpbWU7CisJCQl1aW50MTZfdCBpcnRf
bGlmZXRpbWU7CiAJCX0gaWhfcnRyYWR2OwogCX0gaWNtcF9odW47CiAjZGVmaW5lCWljbXBfcHB0
cglpY21wX2h1bi5paF9wcHRyCkBAIC0xMjYsNyArMTI2LDcgQEAgc3RydWN0IGljbXAgewogCQkJ
Lyogb3B0aW9ucyBhbmQgdGhlbiA2NCBiaXRzIG9mIGRhdGEgKi8KIAkJfSBpZF9pcDsKIAkJc3Ry
dWN0IGljbXBfcmFfYWRkciBpZF9yYWR2OwotCQl1X2ludDMyX3QgaWRfbWFzazsKKwkJdWludDMy
X3QgaWRfbWFzazsKIAkJY2hhcglpZF9kYXRhWzFdOwogCX0gaWNtcF9kdW47CiAjZGVmaW5lCWlj
bXBfb3RpbWUJaWNtcF9kdW4uaWRfdHMuaXRzX290aW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91
c3JzY3RwbGliL3VzZXJfbWFsbG9jLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfbWFsbG9j
LmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA3MzkwNGNhNWI0N2JiYjU4
YjhmYjZiOWY2YmJjNDQ0ZmQ2ZDIyMTE5Li4xNjEyNDUyMTY4NDcyOWEzYmQzNzI2MGRhYzA3MzQx
OTQwNzcxOWQ3Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9tYWxsb2MuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNy
c2N0cGxpYi91c3JzY3RwbGliL3VzZXJfbWFsbG9jLmgKQEAgLTM3LDExICszNywxMSBAQAogLypf
X1VzZXJzcGFjZV9fKi8KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMu
aD4KLSNpZiAhZGVmaW5lZCAoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiAhZGVmaW5lZChf
V0lOMzIpCiAjaW5jbHVkZSA8c3RyaW5ncy5oPgogI2luY2x1ZGUgPHN0ZGludC5oPgogI2Vsc2UK
LSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA+PSAxNjAwCisjaWYgKGRlZmluZWQo
X01TQ19WRVIpICYmIF9NU0NfVkVSID49IDE2MDApIHx8IChkZWZpbmVkKF9fTVNWQ1JUX1ZFUlNJ
T05fXykgJiYgX19NU1ZDUlRfVkVSU0lPTl9fID49IDE0MDApCiAjaW5jbHVkZSA8c3RkaW50Lmg+
CiAjZWxpZiBkZWZpbmVkKFNDVFBfU1RESU5UX0lOQ0xVREUpCiAjaW5jbHVkZSBTQ1RQX1NURElO
VF9JTkNMVURFCkBAIC0yMDAsNjcgKzIwMCw0IEBAIFN0YXJ0IGNvcHk6IENvcGllZCBjb2RlIGZv
ciBfX1VzZXJzcGFjZV9fICovCiAJfQkJCQkJCQkJXAogICAgIH0gd2hpbGUgKDApOwogCi0KLS8q
IEVuZCBjb3B5OiBDb3BpZWQgY29kZSBmb3IgX19Vc2Vyc3BhY2VfXyAqLwotCi0jaWYgMAotI2lm
ZGVmIF9LRVJORUwKLSNkZWZpbmUJTUFMTE9DX0RFRklORSh0eXBlLCBzaG9ydGRlc2MsIGxvbmdk
ZXNjKQkJCVwKLQlzdHJ1Y3QgbWFsbG9jX3R5cGUgdHlwZVsxXSA9IHsJCQkJCVwKLQkJeyBOVUxM
LCAwLCAwLCAwLCAwLCAwLCBNX01BR0lDLCBzaG9ydGRlc2MsIE5VTEwsIE5VTEwsCVwKLQkJICAg
IE5VTEwsIDAsIE5VTEwsIE5VTEwsIDAsIDAgfQkJCQlcCi0JfTsJCQkJCQkJCVwKLQlTWVNJTklU
KHR5cGUjI19pbml0LCBTSV9TVUJfS01FTSwgU0lfT1JERVJfU0VDT05ELCBtYWxsb2NfaW5pdCwJ
XAotCSAgICB0eXBlKTsJCQkJCQkJXAotCVNZU1VOSU5JVCh0eXBlIyNfdW5pbml0LCBTSV9TVUJf
S01FTSwgU0lfT1JERVJfQU5ZLAkJXAotCSAgICBtYWxsb2NfdW5pbml0LCB0eXBlKQotCi0KLSNk
ZWZpbmUJTUFMTE9DX0RFQ0xBUkUodHlwZSkgXAotCWV4dGVybiBzdHJ1Y3QgbWFsbG9jX3R5cGUg
dHlwZVsxXQotCi1NQUxMT0NfREVDTEFSRShNX0NBQ0hFKTsKLU1BTExPQ19ERUNMQVJFKE1fREVW
QlVGKTsKLU1BTExPQ19ERUNMQVJFKE1fVEVNUCk7Ci0KLU1BTExPQ19ERUNMQVJFKE1fSVA2T1BU
KTsgLyogZm9yIElORVQ2ICovCi1NQUxMT0NfREVDTEFSRShNX0lQNk5EUCk7IC8qIGZvciBJTkVU
NiAqLwotCi0vKgotICogRGVwcmVjYXRlZCBtYWNybyB2ZXJzaW9ucyBvZiBub3QtcXVpdGUtbWFs
bG9jKCkgYW5kIGZyZWUoKS4KLSAqLwotI2RlZmluZQlNQUxMT0Moc3BhY2UsIGNhc3QsIHNpemUs
IHR5cGUsIGZsYWdzKSBcCi0JKChzcGFjZSkgPSAoY2FzdCltYWxsb2MoKHVfbG9uZykoc2l6ZSks
ICh0eXBlKSwgKGZsYWdzKSkpCi0jZGVmaW5lCUZSRUUoYWRkciwgdHlwZSkgZnJlZSgoYWRkciks
ICh0eXBlKSkKLQotLyoKLSAqIFhYWCB0aGlzIHNob3VsZCBiZSBkZWNsYXJlZCBpbiA8c3lzL3Vp
by5oPiwgYnV0IHRoYXQgdGVuZHMgdG8gZmFpbAotICogYmVjYXVzZSA8c3lzL3Vpby5oPiBpcyBp
bmNsdWRlZCBpbiBhIGhlYWRlciBiZWZvcmUgdGhlIHNvdXJjZSBmaWxlCi0gKiBoYXMgYSBjaGFu
Y2UgdG8gaW5jbHVkZSA8c3lzL21hbGxvYy5oPiB0byBnZXQgTUFMTE9DX0RFQ0xBUkUoKSBkZWZp
bmVkLgotICovCi1NQUxMT0NfREVDTEFSRShNX0lPVik7Ci0KLWV4dGVybiBzdHJ1Y3QgbXR4IG1h
bGxvY19tdHg7Ci0KLS8qIFhYWCBzdHJ1Y3QgbWFsbG9jX3R5cGUgaXMgdW51c2VkIGZvciBjb250
aWcqKCkuICovCi12b2lkCWNvbnRpZ2ZyZWUodm9pZCAqYWRkciwgdW5zaWduZWQgbG9uZyBzaXpl
LCBzdHJ1Y3QgbWFsbG9jX3R5cGUgKnR5cGUpOwotdm9pZAkqY29udGlnbWFsbG9jKHVuc2lnbmVk
IGxvbmcgc2l6ZSwgc3RydWN0IG1hbGxvY190eXBlICp0eXBlLCBpbnQgZmxhZ3MsCi0JICAgIHZt
X3BhZGRyX3QgbG93LCB2bV9wYWRkcl90IGhpZ2gsIHVuc2lnbmVkIGxvbmcgYWxpZ25tZW50LAot
CSAgICB1bnNpZ25lZCBsb25nIGJvdW5kYXJ5KTsKLXZvaWQJZnJlZSh2b2lkICphZGRyLCBzdHJ1
Y3QgbWFsbG9jX3R5cGUgKnR5cGUpOwotdm9pZAkqbWFsbG9jKHVuc2lnbmVkIGxvbmcgc2l6ZSwg
c3RydWN0IG1hbGxvY190eXBlICp0eXBlLCBpbnQgZmxhZ3MpOwotdm9pZAltYWxsb2NfaW5pdCh2
b2lkICopOwotaW50CW1hbGxvY19sYXN0X2ZhaWwodm9pZCk7Ci12b2lkCW1hbGxvY190eXBlX2Fs
bG9jYXRlZChzdHJ1Y3QgbWFsbG9jX3R5cGUgKnR5cGUsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7Ci12
b2lkCW1hbGxvY190eXBlX2ZyZWVkKHN0cnVjdCBtYWxsb2NfdHlwZSAqdHlwZSwgdW5zaWduZWQg
bG9uZyBzaXplKTsKLXZvaWQJbWFsbG9jX3VuaW5pdCh2b2lkICopOwotdm9pZAkqcmVhbGxvYyh2
b2lkICphZGRyLCB1bnNpZ25lZCBsb25nIHNpemUsIHN0cnVjdCBtYWxsb2NfdHlwZSAqdHlwZSwK
LQkgICAgaW50IGZsYWdzKTsKLXZvaWQJKnJlYWxsb2NmKHZvaWQgKmFkZHIsIHVuc2lnbmVkIGxv
bmcgc2l6ZSwgc3RydWN0IG1hbGxvY190eXBlICp0eXBlLAotCSAgICBpbnQgZmxhZ3MpOwotCi0K
LSNlbmRpZiAvKiBfS0VSTkVMICovCi0jZW5kaWYKLQogI2VuZGlmIC8qICFfU1lTX01BTExPQ19I
XyAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX21idWYuYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3Rw
bGliL3VzcnNjdHBsaWIvdXNlcl9tYnVmLmMKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1
NQppbmRleCBhNjNhODg5Yjc1MTNlYmM1OWM5Zjg2ZjZiNWU0MzMxZjlmYTVhMjY1Li45ZTU2NmUz
MDI1OTA5MDJiYmY5OTAzNzBmN2Q5YjkxZGZkNjYzYjljCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBs
aWIvdXNlcl9tYnVmLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX21idWYuYwpAQCAt
NDYsNyArNDYsNiBAQAogI2luY2x1ZGUgInVzZXJfYXRvbWljLmgiCiAjaW5jbHVkZSAibmV0aW5l
dC9zY3RwX3BjYi5oIgogCi1zdHJ1Y3QgbWJzdGF0IG1ic3RhdDsKICNkZWZpbmUgS0lQQ19NQVhf
TElOS0hEUiAgICAgICAgNCAgICAgICAvKiBpbnQ6IG1heCBsZW5ndGggb2YgbGluayBoZWFkZXIg
KHNlZSBzeXMvc3lzY2x0LmgpICovCiAjZGVmaW5lIEtJUENfTUFYX1BST1RPSERSCTUJLyogaW50
OiBtYXggbGVuZ3RoIG9mIG5ldHdvcmsgaGVhZGVyIChzZWUgc3lzL3N5c2NsdC5oKSovCiBpbnQg
bWF4X2xpbmtoZHIgPSBLSVBDX01BWF9MSU5LSERSOwpAQCAtMjcyLDkgKzI3MSw5IEBAIG1fY2xn
ZXQoc3RydWN0IG1idWYgKm0sIGludCBob3cpCiAJCW1jbHVzdF9yZXQgPSBTQ1RQX1pPTkVfR0VU
KHpvbmVfY2x1c3QsIGNoYXIpOwogI2VuZGlmCiAJCS8qbWNsdXN0X3JldCA9IHVtZW1fY2FjaGVf
YWxsb2Moem9uZV9jbHVzdCwgVU1FTV9ERUZBVUxUKTsqLwotCQlpZiAoTlVMTCA9PSBtY2x1c3Rf
cmV0KSB7Ci0JCQlTQ1RQREJHKFNDVFBfREVCVUdfVVNSLCAiTWVtb3J5IGFsbG9jYXRpb24gZmFp
bHVyZSBpbiAlc1xuIiwgX19mdW5jX18pOwotCQl9CisJCS8qIGlmIChOVUxMID09IG1jbHVzdF9y
ZXQpIHsgKi8KKwkJU0NUUERCRyhTQ1RQX0RFQlVHX1VTUiwgIk1lbW9yeSBhbGxvY2F0aW9uIGZh
aWx1cmUgaW4gJXNcbiIsIF9fZnVuY19fKTsKKwkJLyogfSAqLwogCX0KIAogI2lmIFVTSU5HX01C
VUZfQ09OU1RSVUNUT1IKQEAgLTI5MCw3ICsyODksNyBAQCBzdHJ1Y3QgbWJ1ZiAqCiBtX2dldG0y
KHN0cnVjdCBtYnVmICptLCBpbnQgbGVuLCBpbnQgaG93LCBzaG9ydCB0eXBlLCBpbnQgZmxhZ3Ms
IGludCBhbGxvbmVidWYpCiB7CiAJc3RydWN0IG1idWYgKm1iLCAqbm0gPSBOVUxMLCAqbXRhaWwg
PSBOVUxMOwotCWludCBzaXplID0gMCwgbWJ1Zl90aHJlc2hvbGQsIHNwYWNlX25lZWRlZCA9IGxl
bjsKKwlpbnQgc2l6ZSwgbWJ1Zl90aHJlc2hvbGQsIHNwYWNlX25lZWRlZCA9IGxlbjsKIAogCUtB
U1NFUlQobGVuID49IDAsICgiJXM6IGxlbiBpcyA8IDAiLCBfX2Z1bmNfXykpOwogCkBAIC0zMTMs
NyArMzEyLDcgQEAgbV9nZXRtMihzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGxlbiwgaW50IGhvdywgc2hv
cnQgdHlwZSwgaW50IGZsYWdzLCBpbnQgYWxsb25lYnVmKQogCQkJbWIgPSBtX2dldGhkcihob3cs
IHR5cGUpOwogCQkJTUNMR0VUKG1iLCBob3cpOwogCQkJc2l6ZSA9IE1DTEJZVEVTOwotCQkJLy9T
Q1RQX0JVRl9MRU4obWIpID0gTUNMQllURVM7CisJCQkvKiBTQ1RQX0JVRl9MRU4obWIpID0gTUNM
QllURVM7ICovCiAJCX0gZWxzZSBpZiAoZmxhZ3MgJiBNX1BLVEhEUikgewogCQkJbWIgPSBtX2dl
dGhkcihob3csIHR5cGUpOwogCQkJaWYgKGxlbiA8IE1ITEVOKSB7CkBAIC0zMzgsNyArMzM3LDcg
QEAgbV9nZXRtMihzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGxlbiwgaW50IGhvdywgc2hvcnQgdHlwZSwg
aW50IGZsYWdzLCBpbnQgYWxsb25lYnVmKQogCQl9CiAKIAkJaWYgKGFsbG9uZWJ1ZiAhPSAwICYm
IHNpemUgPCBzcGFjZV9uZWVkZWQpIHsKLQkJCW1fZnJlZW0obSk7CisJCQltX2ZyZWVtKG1iKTsK
IAkJCXJldHVybiAoTlVMTCk7CiAJCX0KIApAQCAtNDczLDcgKzQ3Miw3IEBAIG1fdGFnX2ZyZWUo
c3RydWN0IG1fdGFnICp0KQogICogWFhYIHByb2JhYmx5IHNob3VsZCBiZSBjYWxsZWQgbV90YWdf
aW5pdCwgYnV0IHRoYXQgd2FzIGFscmVhZHkgdGFrZW4uCiAgKi8KIHN0YXRpYyBfX2lubGluZSB2
b2lkCi1tX3RhZ19zZXR1cChzdHJ1Y3QgbV90YWcgKnQsIHVfaW50MzJfdCBjb29raWUsIGludCB0
eXBlLCBpbnQgbGVuKQorbV90YWdfc2V0dXAoc3RydWN0IG1fdGFnICp0LCB1aW50MzJfdCBjb29r
aWUsIGludCB0eXBlLCBpbnQgbGVuKQogewogCiAJdC0+bV90YWdfaWQgPSB0eXBlOwpAQCAtNTM2
LDI2ICs1MzUsNiBAQCBtYnVmX2luaXRpYWxpemUodm9pZCAqZHVtbXkpCiAJICoKIAkgKi8KIAot
Ci0JLyoKLQkgKiBbUmVdc2V0IGNvdW50ZXJzIGFuZCBsb2NhbCBzdGF0aXN0aWNzIGtub2JzLgot
CSAqCi0JICovCi0KLQltYnN0YXQubV9tYnVmcyA9IDA7Ci0JbWJzdGF0Lm1fbWNsdXN0cyA9IDA7
Ci0JbWJzdGF0Lm1fZHJhaW4gPSAwOwotCW1ic3RhdC5tX21zaXplID0gTVNJWkU7Ci0JbWJzdGF0
Lm1fbWNsYnl0ZXMgPSBNQ0xCWVRFUzsKLQltYnN0YXQubV9taW5jbHNpemUgPSBNSU5DTFNJWkU7
Ci0JbWJzdGF0Lm1fbWxlbiA9IE1MRU47Ci0JbWJzdGF0Lm1fbWhsZW4gPSBNSExFTjsKLQltYnN0
YXQubV9udW10eXBlcyA9IE1UX05UWVBFUzsKLQotCW1ic3RhdC5tX21jZmFpbCA9IG1ic3RhdC5t
X21wZmFpbCA9IDA7Ci0JbWJzdGF0LnNmX2lvY250ID0gMDsKLQltYnN0YXQuc2ZfYWxsb2N3YWl0
ID0gbWJzdGF0LnNmX2FsbG9jZmFpbCA9IDA7Ci0KIH0KIAogCkBAIC05MDksNyArODg4LDYgQEAg
bV9wdWxsdXAoc3RydWN0IG1idWYgKm4sIGludCBsZW4pCiAJcmV0dXJuIChtKTsKIGJhZDoKIAlt
X2ZyZWVtKG4pOwotCW1ic3RhdC5tX21wZmFpbCsrOwkvKiBYWFg6IE5vIGNvbnNpc3RlbmN5LiAq
LwogCXJldHVybiAoTlVMTCk7CiB9CiAKQEAgLTEwNDUsMTYgKzEwMjMsMTQgQEAgbV9wdWxsZG93
bihzdHJ1Y3QgbWJ1ZiAqbSwgaW50IG9mZiwgaW50IGxlbiwgaW50ICpvZmZwKQogCSAqIGVhc3kg
Y2FzZXMgZmlyc3QuCiAJICogd2UgbmVlZCB0byB1c2UgbV9jb3B5ZGF0YSgpIHRvIGdldCBkYXRh
IGZyb20gPG4tPm1fbmV4dCwgMD4uCiAJICovCi0JaWYgKChvZmYgPT0gMCB8fCBvZmZwKSAmJiBN
X1RSQUlMSU5HU1BBQ0UobikgPj0gdGxlbgotCSAgICAmJiB3cml0YWJsZSkgeworCWlmICgob2Zm
ID09IDAgfHwgb2ZmcCkgJiYgKE1fVFJBSUxJTkdTUEFDRShuKSA+PSB0bGVuKSAmJiB3cml0YWJs
ZSkgewogCQltX2NvcHlkYXRhKG4tPm1fbmV4dCwgMCwgdGxlbiwgbXRvZChuLCBjYWRkcl90KSAr
IG4tPm1fbGVuKTsKIAkJbi0+bV9sZW4gKz0gdGxlbjsKIAkJbV9hZGoobi0+bV9uZXh0LCB0bGVu
KTsKIAkJZ290byBvazsKIAl9CiAKLQlpZiAoKG9mZiA9PSAwIHx8IG9mZnApICYmIE1fTEVBRElO
R1NQQUNFKG4tPm1fbmV4dCkgPj0gaGxlbgotCSAgICAmJiB3cml0YWJsZSkgeworCWlmICgob2Zm
ID09IDAgfHwgb2ZmcCkgJiYgKE1fTEVBRElOR1NQQUNFKG4tPm1fbmV4dCkgPj0gaGxlbikgJiYg
d3JpdGFibGUpIHsKIAkJbi0+bV9uZXh0LT5tX2RhdGEgLT0gaGxlbjsKIAkJbi0+bV9uZXh0LT5t
X2xlbiArPSBobGVuOwogCQltZW1jcHkoIG10b2Qobi0+bV9uZXh0LCBjYWRkcl90KSwgbXRvZChu
LCBjYWRkcl90KSArIG9mZixobGVuKTsKQEAgLTExOTgsMTMgKzExNzQsMTAgQEAgbV9jb3B5bShz
dHJ1Y3QgbWJ1ZiAqbSwgaW50IG9mZjAsIGludCBsZW4sIGludCB3YWl0KQogCQltID0gbS0+bV9u
ZXh0OwogCQlucCA9ICZuLT5tX25leHQ7CiAJfQotCWlmICh0b3AgPT0gTlVMTCkKLQkJbWJzdGF0
Lm1fbWNmYWlsKys7CS8qIFhYWDogTm8gY29uc2lzdGVuY3kuICovCiAKIAlyZXR1cm4gKHRvcCk7
CiBub3NwYWNlOgogCW1fZnJlZW0odG9wKTsKLQltYnN0YXQubV9tY2ZhaWwrKzsJLyogWFhYOiBO
byBjb25zaXN0ZW5jeS4gKi8KIAlyZXR1cm4gKE5VTEwpOwogfQogCkBAIC0xMjY2LDcgKzEyMzks
NyBAQCBtX3RhZ19jb3B5KHN0cnVjdCBtX3RhZyAqdCwgaW50IGhvdykKIAogLyogR2V0IGEgcGFj
a2V0IHRhZyBzdHJ1Y3R1cmUgYWxvbmcgd2l0aCBzcGVjaWZpZWQgZGF0YSBmb2xsb3dpbmcuICov
CiBzdHJ1Y3QgbV90YWcgKgotbV90YWdfYWxsb2ModV9pbnQzMl90IGNvb2tpZSwgaW50IHR5cGUs
IGludCBsZW4sIGludCB3YWl0KQorbV90YWdfYWxsb2ModWludDMyX3QgY29va2llLCBpbnQgdHlw
ZSwgaW50IGxlbiwgaW50IHdhaXQpCiB7CiAJc3RydWN0IG1fdGFnICp0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAv
dXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfbWJ1Zi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91
c2VyX21idWYuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDljNWQwZDdl
ZjQ1YTJkOWNmY2Q3OWQ5ZjVjODc5YTE5ZGZkMTY2NmYuLmMxMWIzOGM5Y2IxMmU2ZWM0YTg4OTE3
YWQ5ZGQ4MGQyYTE4YzFmMmIKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX21idWYuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfbWJ1Zi5oCkBAIC0xMTAsNyArMTEwLDcgQEAg
dm9pZCAgICAgICAgICAgICBtX2NhdChzdHJ1Y3QgbWJ1ZiAqbSwgc3RydWN0IG1idWYgKm4pOwog
dm9pZAkJIG1fYWRqKHN0cnVjdCBtYnVmICosIGludCk7CiB2b2lkICBtYl9mcmVlX2V4dChzdHJ1
Y3QgbWJ1ZiAqKTsKIHZvaWQgIG1fZnJlZW0oc3RydWN0IG1idWYgKik7Ci1zdHJ1Y3QgbV90YWcJ
Km1fdGFnX2FsbG9jKHVfaW50MzJfdCwgaW50LCBpbnQsIGludCk7CitzdHJ1Y3QgbV90YWcJKm1f
dGFnX2FsbG9jKHVpbnQzMl90LCBpbnQsIGludCwgaW50KTsKIHN0cnVjdCBtYnVmCSptX2NvcHlt
KHN0cnVjdCBtYnVmICosIGludCwgaW50LCBpbnQpOwogdm9pZAkJIG1fY29weWJhY2soc3RydWN0
IG1idWYgKiwgaW50LCBpbnQsIGNhZGRyX3QpOwogc3RydWN0IG1idWYJKm1fcHVsbHVwKHN0cnVj
dCBtYnVmICosIGludCk7CkBAIC0xMjgsMzUgKzEyOCw2IEBAIHZvaWQJCSBtX2NvcHlkYXRhKGNv
bnN0IHN0cnVjdCBtYnVmICosIGludCwgaW50LCBjYWRkcl90KTsKICNkZWZpbmUJTVRfTk9JTklU
CTI1NQkvKiBOb3QgYSB0eXBlIGJ1dCBhIGZsYWcgdG8gYWxsb2NhdGUKIAkJCQkgICBhIG5vbi1p
bml0aWFsaXplZCBtYnVmICovCiAKLS8qCi0gKiBHZW5lcmFsIG1idWYgYWxsb2NhdG9yIHN0YXRp
c3RpY3Mgc3RydWN0dXJlLgotICogX19Vc2Vyc3BhY2VfXyBtYnN0YXQgbWF5IGJlIHVzZWZ1bCBm
b3IgZ2F0aGVyaW5nIHN0YXRpc3RpY3MuCi0gKiBJbiB0aGUga2VybmVsIG1hbnkgb2YgdGhlc2Ug
c3RhdGlzdGljcyBhcmUgbm8gbG9uZ2VyIHVzZWQgYXMKLSAqIHRoZXkgdHJhY2sgYWxsb2NhdG9y
IHN0YXRpc3RpY3MgdGhyb3VnaCBrZXJuZWwgVU1BJ3MgYnVpbHQgaW4gc3RhdGlzdGljcyBtZWNo
YW5pc20uCi0gKi8KLXN0cnVjdCBtYnN0YXQgewotCXVfbG9uZwltX21idWZzOwkvKiBYWFggKi8K
LQl1X2xvbmcJbV9tY2x1c3RzOwkvKiBYWFggKi8KLQotCXVfbG9uZwltX2RyYWluOwkvKiB0aW1l
cyBkcmFpbmVkIHByb3RvY29scyBmb3Igc3BhY2UgKi8KLQl1X2xvbmcJbV9tY2ZhaWw7CS8qIFhY
WDogdGltZXMgbV9jb3B5bSBmYWlsZWQgKi8KLQl1X2xvbmcJbV9tcGZhaWw7CS8qIFhYWDogdGlt
ZXMgbV9wdWxsdXAgZmFpbGVkICovCi0JdV9sb25nCW1fbXNpemU7CS8qIGxlbmd0aCBvZiBhbiBt
YnVmICovCi0JdV9sb25nCW1fbWNsYnl0ZXM7CS8qIGxlbmd0aCBvZiBhbiBtYnVmIGNsdXN0ZXIg
Ki8KLQl1X2xvbmcJbV9taW5jbHNpemU7CS8qIG1pbiBsZW5ndGggb2YgZGF0YSB0byBhbGxvY2F0
ZSBhIGNsdXN0ZXIgKi8KLQl1X2xvbmcJbV9tbGVuOwkJLyogbGVuZ3RoIG9mIGRhdGEgaW4gYW4g
bWJ1ZiAqLwotCXVfbG9uZwltX21obGVuOwkvKiBsZW5ndGggb2YgZGF0YSBpbiBhIGhlYWRlciBt
YnVmICovCi0KLQkvKiBOdW1iZXIgb2YgbWJ0eXBlcyAoZ2l2ZXMgIyBlbGVtcyBpbiBtYnR5cGVz
W10gYXJyYXk6ICovCi0Jc2hvcnQJbV9udW10eXBlczsKLQotCS8qIFhYWDogU2VuZGZpbGUgc3Rh
dHMgc2hvdWxkIGV2ZW50dWFsbHkgbW92ZSB0byB0aGVpciBvd24gc3RydWN0ICovCi0JdV9sb25n
CXNmX2lvY250OwkvKiB0aW1lcyBzZW5kZmlsZSBoYWQgdG8gZG8gZGlzayBJL08gKi8KLQl1X2xv
bmcJc2ZfYWxsb2NmYWlsOwkvKiB0aW1lcyBzZmJ1ZiBhbGxvY2F0aW9uIGZhaWxlZCAqLwotCXVf
bG9uZwlzZl9hbGxvY3dhaXQ7CS8qIHRpbWVzIHNmYnVmIGFsbG9jYXRpb24gaGFkIHRvIHdhaXQg
Ki8KLX07Ci0KLQogLyoKICAqIE1idWZzIGFyZSBvZiBhIHNpbmdsZSBzaXplLCBNU0laRSAoc3lz
L3BhcmFtLmgpLCB3aGljaCBpbmNsdWRlcyBvdmVyaGVhZC4KICAqIEFuIG1idWYgbWF5IGFkZCBh
IHNpbmdsZSAibWJ1ZiBjbHVzdGVyIiBvZiBzaXplIE1DTEJZVEVTIChhbHNvIGluCkBAIC0xOTAs
OSArMTYxLDkgQEAgc3RydWN0IG1faGRyIHsKICAqLwogc3RydWN0IG1fdGFnIHsKIAlTTElTVF9F
TlRSWShtX3RhZykJbV90YWdfbGluazsJLyogTGlzdCBvZiBwYWNrZXQgdGFncyAqLwotCXVfaW50
MTZfdAkJbV90YWdfaWQ7CS8qIFRhZyBJRCAqLwotCXVfaW50MTZfdAkJbV90YWdfbGVuOwkvKiBM
ZW5ndGggb2YgZGF0YSAqLwotCXVfaW50MzJfdAkJbV90YWdfY29va2llOwkvKiBBQkkvTW9kdWxl
IElEICovCisJdWludDE2X3QJCW1fdGFnX2lkOwkvKiBUYWcgSUQgKi8KKwl1aW50MTZfdAkJbV90
YWdfbGVuOwkvKiBMZW5ndGggb2YgZGF0YSAqLworCXVpbnQzMl90CQltX3RhZ19jb29raWU7CS8q
IEFCSS9Nb2R1bGUgSUQgKi8KIAl2b2lkCQkJKCptX3RhZ19mcmVlKShzdHJ1Y3QgbV90YWcgKik7
CiB9OwogCkBAIC0yMDcsOCArMTc4LDggQEAgc3RydWN0IHBrdGhkciB7CiAJLyogdmFyaWFibGVz
IGZvciBoYXJkd2FyZSBjaGVja3N1bSAqLwogCWludAkJIGNzdW1fZmxhZ3M7CS8qIGZsYWdzIHJl
Z2FyZGluZyBjaGVja3N1bSAqLwogCWludAkJIGNzdW1fZGF0YTsJLyogZGF0YSBmaWVsZCB1c2Vk
IGJ5IGNzdW0gcm91dGluZXMgKi8KLQl1X2ludDE2X3QJIHRzb19zZWdzejsJLyogVFNPIHNlZ21l
bnQgc2l6ZSAqLwotCXVfaW50MTZfdAkgZXRoZXJfdnRhZzsJLyogRXRoZXJuZXQgODAyLjFwK3Eg
dmxhbiB0YWcgKi8KKwl1aW50MTZfdAkgdHNvX3NlZ3N6OwkvKiBUU08gc2VnbWVudCBzaXplICov
CisJdWludDE2X3QJIGV0aGVyX3Z0YWc7CS8qIEV0aGVybmV0IDgwMi4xcCtxIHZsYW4gdGFnICov
CiAJU0xJU1RfSEVBRChwYWNrZXRfdGFncywgbV90YWcpIHRhZ3M7IC8qIGxpc3Qgb2YgcGFja2V0
IHRhZ3MgKi8KIH07CiAKQEAgLTM1Miw5ICszMjMsNiBAQCB2b2lkCQkgbV90YWdfZnJlZV9kZWZh
dWx0KHN0cnVjdCBtX3RhZyAqKTsKIGV4dGVybiBpbnQgbWF4X2xpbmtoZHI7ICAgIC8qIExhcmdl
c3QgbGluay1sZXZlbCBoZWFkZXIgKi8KIGV4dGVybiBpbnQgbWF4X3Byb3RvaGRyOyAvKiBTaXpl
IG9mIGxhcmdlc3QgcHJvdG9jb2wgbGF5ZXIgaGVhZGVyLiBTZWUgdXNlcl9tYnVmLmMgKi8KIAot
ZXh0ZXJuIHN0cnVjdCBtYnN0YXQJbWJzdGF0OwkJLyogR2VuZXJhbCBtYnVmIHN0YXRzL2luZm9z
ICovCi0KLQogLyoKICAqIEV2YWx1YXRlIFRSVUUgaWYgaXQncyBzYWZlIHRvIHdyaXRlIHRvIHRo
ZSBtYnVmIG0ncyBkYXRhIHJlZ2lvbiAodGhpcyBjYW4KICAqIGJlIGJvdGggdGhlIGxvY2FsIGRh
dGEgcGF5bG9hZCwgb3IgYW4gZXh0ZXJuYWwgYnVmZmVyIGFyZWEsIGRlcGVuZGluZyBvbgpAQCAt
MzczLDkgKzM0MSw5IEBAIGV4dGVybiBzdHJ1Y3QgbWJzdGF0CW1ic3RhdDsJCS8qIEdlbmVyYWwg
bWJ1ZiBzdGF0cy9pbmZvcyAqLwogICogb2YgY2hlY2tpbmcgd3JpdGFiaWxpdHkgb2YgdGhlIG1i
dWYgZGF0YSBhcmVhIHJlc3RzIHNvbGVseSB3aXRoIHRoZSBjYWxsZXIuCiAgKi8KICNkZWZpbmUJ
TV9MRUFESU5HU1BBQ0UobSkJCQkJCQlcCi0JKChtKS0+bV9mbGFncyAmIE1fRVhUID8JCQkJCQlc
CisJKCgobSktPm1fZmxhZ3MgJiBNX0VYVCkgPwkJCQkJXAogCSAgICAoTV9XUklUQUJMRShtKSA/
IChtKS0+bV9kYXRhIC0gKG0pLT5tX2V4dC5leHRfYnVmIDogMCk6CVwKLQkgICAgKG0pLT5tX2Zs
YWdzICYgTV9QS1RIRFIgPyAobSktPm1fZGF0YSAtIChtKS0+bV9wa3RkYXQgOglcCisJICAgICgo
bSktPm1fZmxhZ3MgJiBNX1BLVEhEUik/IChtKS0+bV9kYXRhIC0gKG0pLT5tX3BrdGRhdCA6CVwK
IAkgICAgKG0pLT5tX2RhdGEgLSAobSktPm1fZGF0KQogCiAvKgpAQCAtMzg1LDcgKzM1Myw3IEBA
IGV4dGVybiBzdHJ1Y3QgbWJzdGF0CW1ic3RhdDsJCS8qIEdlbmVyYWwgbWJ1ZiBzdGF0cy9pbmZv
cyAqLwogICogb2YgY2hlY2tpbmcgd3JpdGFiaWxpdHkgb2YgdGhlIG1idWYgZGF0YSBhcmVhIHJl
c3RzIHNvbGVseSB3aXRoIHRoZSBjYWxsZXIuCiAgKi8KICNkZWZpbmUJTV9UUkFJTElOR1NQQUNF
KG0pCQkJCQkJXAotCSgobSktPm1fZmxhZ3MgJiBNX0VYVCA/CQkJCQkJXAorCSgoKG0pLT5tX2Zs
YWdzICYgTV9FWFQpID8JCQkJCVwKIAkgICAgKE1fV1JJVEFCTEUobSkgPyAobSktPm1fZXh0LmV4
dF9idWYgKyAobSktPm1fZXh0LmV4dF9zaXplCVwKIAkJLSAoKG0pLT5tX2RhdGEgKyAobSktPm1f
bGVuKSA6IDApIDoJCQlcCiAJICAgICYobSktPm1fZGF0W01MRU5dIC0gKChtKS0+bV9kYXRhICsg
KG0pLT5tX2xlbikpCkBAIC00MzcsNCArNDA1LDkgQEAgZXh0ZXJuIHN0cnVjdCBtYnN0YXQJbWJz
dGF0OwkJLyogR2VuZXJhbCBtYnVmIHN0YXRzL2luZm9zICovCiAJKG0pLT5tX2RhdGEgKz0gKE1I
TEVOIC0gKGxlbikpICYgfihzaXplb2YobG9uZykgLSAxKTsJCVwKIH0gd2hpbGUgKDApCiAKKyNk
ZWZpbmUgTV9TSVpFKG0pCQkJCQkJXAorCQkoKChtKS0+bV9mbGFncyAmIE1fRVhUKSA/IChtKS0+
bV9leHQuZXh0X3NpemUgOglcCisJCSgobSktPm1fZmxhZ3MgJiBNX1BLVEhEUikgPyBNSExFTiA6
CQlcCisJCU1MRU4pCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91
c2VyX3F1ZXVlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfcXVldWUuaApvbGQgbW9kZSAx
MDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDQ0Zjg5OTQ5MDI2NjE5MGI4Yzc4NjFhYjAyYjI3
ZmY3MzJiMjE3ZGQuLmNkZTFjY2VjZjE1MDI0NDVkYzNlNjIzMjhmMDQ5NjFjNjUxOWMwZTkKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX3F1ZXVlLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0
cGxpYi91c2VyX3F1ZXVlLmgKQEAgLTE0NCw4ICsxNDQsOCBAQCBzdHJ1Y3QgbmFtZSB7CQkJCQkJ
CQlcCiAjZGVmaW5lCVNMSVNUX0hFQURfSU5JVElBTElaRVIoaGVhZCkJCQkJCVwKIAl7IE5VTEwg
fQogCi0jaWYgZGVmaW5lZCAoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKLSNpZiBkZWZpbmVkIChT
TElTVF9FTlRSWSkKKyNpZiBkZWZpbmVkKF9XSU4zMikKKyNpZiBkZWZpbmVkKFNMSVNUX0VOVFJZ
KQogI3VuZGVmIFNMSVNUX0VOVFJZCiAjZW5kaWYKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBs
aWIvdXNyc2N0cGxpYi91c2VyX3JlY3ZfdGhyZWFkLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3Vz
ZXJfcmVjdl90aHJlYWQuYwpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGVh
MGMxMGVmZGY5NmRlOGJlYmI0MDJiZTZjNDI5YWRkMDgzYTczZWQuLjNjMTY1N2I0YTY2ZTcyYjhm
MjhjYjI2NDRlNGMwYWIyMGIwNDYyYzUKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX3Jl
Y3ZfdGhyZWFkLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX3JlY3ZfdGhyZWFkLmMK
QEAgLTMwLDEyICszMCwxMiBAQAogCiAjaWYgZGVmaW5lZChJTkVUKSB8fCBkZWZpbmVkKElORVQ2
KQogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dp
bmRvd3MpCisjaWYgIWRlZmluZWQoX1dJTjMyKQogI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KICNp
bmNsdWRlIDxuZXRpbmV0L2luLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSA8cHRo
cmVhZC5oPgotI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0RyYWdvbkZseSkgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2Vfb3NfRnJlZUJTRCkgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfTmV0
QlNEKQorI2lmICFkZWZpbmVkKF9fRHJhZ29uRmx5X18pICYmICFkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiAhZGVmaW5lZChfX05ldEJTRF9fKQogI2luY2x1ZGUgPHN5cy91aW8uaD4KICNlbHNlCiAj
aW5jbHVkZSA8dXNlcl9pcDZfdmFyLmg+CkBAIC00Niw3ICs0Niw3IEBACiAjaW5jbHVkZSA8bmV0
aW5ldC9zY3RwX3BjYi5oPgogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9pbnB1dC5oPgogI2lmIDAK
LSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0xpbnV4KQorI2lmIGRlZmluZWQoX19saW51eF9f
KQogI2luY2x1ZGUgPGxpbnV4L25ldGxpbmsuaD4KICNpZmRlZiBIQVZFX0xJTlVYX0lGX0FERFJf
SAogI2luY2x1ZGUgPGxpbnV4L2lmX2FkZHIuaD4KQEAgLTU2LDIzICs1NiwyNiBAQAogI2VuZGlm
CiAjZW5kaWYKICNlbmRpZgotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRGFyd2luKSB8fCBk
ZWZpbmVkKF9fVXNlcnNwYWNlX29zX0RyYWdvbkZseSkgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9v
c19GcmVlQlNEKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5
X18pIHx8IGRlZmluZWQoX19GcmVlQlNEX18pCiAjaW5jbHVkZSA8bmV0L3JvdXRlLmg+CiAjZW5k
aWYKIC8qIGxvY2FsIG1hY3JvcyBhbmQgZGF0YXR5cGVzIHVzZWQgdG8gZ2V0IElQIGFkZHJlc3Nl
cyBzeXN0ZW0gaW5kZXBlbmRlbnRseSAqLwotI2lmICFkZWZpbmVkKElQX1BLVElORk8gKSAmJiAh
IGRlZmluZWQoSVBfUkVDVkRTVEFERFIpCisjaWYgIWRlZmluZWQoSVBfUEtUSU5GTyApICYmICFk
ZWZpbmVkKElQX1JFQ1ZEU1RBRERSKQogIyBlcnJvciAiQ2FuJ3QgZGV0ZXJtaW5lIHNvY2tldCBv
cHRpb24gdG8gdXNlIHRvIGdldCBVRFAgSVAiCiAjZW5kaWYKIAogdm9pZCByZWN2X3RocmVhZF9k
ZXN0cm95KHZvaWQpOwotI2RlZmluZSBNQVhMRU5fTUJVRl9DSEFJTiAzMiAvKiBXaGF0IHNob3Vs
ZCB0aGlzIHZhbHVlIGJlPyAqLworCisjZGVmaW5lIE1BWExFTl9NQlVGX0NIQUlOIDEyOAorCiAj
ZGVmaW5lIFJPVU5EVVAoYSwgc2l6ZSkgKCgoYSkgJiAoKHNpemUpLTEpKSA/ICgxICsgKChhKSB8
ICgoc2l6ZSktMSkpKSA6IChhKSkKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0Rhcndpbikg
fHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19EcmFnb25GbHkpIHx8IGRlZmluZWQoX19Vc2Vyc3Bh
Y2Vfb3NfRnJlZUJTRCkKKworI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fRHJh
Z29uRmx5X18pIHx8IGRlZmluZWQoX19GcmVlQlNEX18pCiAjZGVmaW5lIE5FWFRfU0EoYXApIGFw
ID0gKHN0cnVjdCBzb2NrYWRkciAqKSBcCiAJKChjYWRkcl90KSBhcCArIChhcC0+c2FfbGVuID8g
Uk9VTkRVUChhcC0+c2FfbGVuLCBzaXplb2YgKHVpbnQzMl90KSkgOiBzaXplb2YodWludDMyX3Qp
KSkKICNlbmRpZgogCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19EYXJ3aW4pIHx8IGRlZmlu
ZWQoX19Vc2Vyc3BhY2Vfb3NfRHJhZ29uRmx5KSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0Zy
ZWVCU0QpCisjaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykg
fHwgZGVmaW5lZChfX0ZyZWVCU0RfXykKIHN0YXRpYyB2b2lkCiBzY3RwX2dldF9ydGFkZHJzKGlu
dCBhZGRycywgc3RydWN0IHNvY2thZGRyICpzYSwgc3RydWN0IHNvY2thZGRyICoqcnRpX2luZm8p
CiB7CkBAIC0xNjQsNyArMTY3LDcgQEAgcmVjdl9mdW5jdGlvbl9yb3V0ZSh2b2lkICphcmcpCiAJ
CQl9CiAJCX0KIAkJaWYgKHJldCA8IDApIHsKLQkJCWlmIChlcnJubyA9PSBFQUdBSU4pIHsKKwkJ
CWlmIChlcnJubyA9PSBFQUdBSU4gfHwgZXJybm8gPT0gRUlOVFIpIHsKIAkJCQljb250aW51ZTsK
IAkJCX0gZWxzZSB7CiAJCQkJYnJlYWs7CkBAIC0yMTEsNyArMjE0LDcgQEAgcmVjdl9mdW5jdGlv
bl9yb3V0ZSh2b2lkICphcmcpCiAJCWxlbiA9IHJlY3Ztc2coU0NUUF9CQVNFX1ZBUih1c2Vyc3Bh
Y2Vfcm91dGUpLCAmbXNnLCAwKTsKIAogCQlpZiAobGVuIDwgMCkgewotCQkJaWYgKGVycm5vID09
IEVBR0FJTikgeworCQkJaWYgKGVycm5vID09IEVBR0FJTiB8fCBlcnJubyA9PSBFSU5UUikgewog
CQkJCWNvbnRpbnVlOwogCQkJfSBlbHNlIHsKIAkJCQlicmVhazsKQEAgLTI3MCw3ICsyNzMsNyBA
QCByZWN2X2Z1bmN0aW9uX3Jhdyh2b2lkICphcmcpCiAJaW50IGNvbXB1dGVfY3JjID0gMTsKIAlz
dHJ1Y3Qgc2N0cF9jaHVua2hkciAqY2g7CiAJc3RydWN0IHNvY2thZGRyX2luIHNyYywgZHN0Owot
I2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgIWRlZmluZWQoX1dJTjMy
KQogCXVuc2lnbmVkIGludCBuY291bnRlcjsKIAlzdHJ1Y3QgbXNnaGRyIG1zZzsKIAlzdHJ1Y3Qg
aW92ZWMgcmVjdl9pb3ZlY1tNQVhMRU5fTUJVRl9DSEFJTl07CkBAIC0zMDUsNyArMzA4LDcgQEAg
cmVjdl9mdW5jdGlvbl9yYXcodm9pZCAqYXJnKQogCQkJICAgSGF2ZSB0cmllZCBib3RoIHNlbmRp
bmcgYW5kIHJlY2VpdmluZwogCQkJICovCiAJCQlyZWN2bWJ1ZltpXSA9IHNjdHBfZ2V0X21idWZf
Zm9yX21zZyhpb3ZsZW4sIHdhbnRfaGVhZGVyLCBNX05PV0FJVCwgd2FudF9leHQsIE1UX0RBVEEp
OwotI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgIWRlZmluZWQoX1dJ
TjMyKQogCQkJcmVjdl9pb3ZlY1tpXS5pb3ZfYmFzZSA9IChjYWRkcl90KXJlY3ZtYnVmW2ldLT5t
X2RhdGE7CiAJCQlyZWN2X2lvdmVjW2ldLmlvdl9sZW4gPSBpb3ZsZW47CiAjZWxzZQpAQCAtMzE0
LDcgKzMxNyw3IEBAIHJlY3ZfZnVuY3Rpb25fcmF3KHZvaWQgKmFyZykKICNlbmRpZgogCQl9CiAJ
CXRvX2ZpbGwgPSAwOwotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBk
ZWZpbmVkKF9XSU4zMikKIAkJZmxhZ3MgPSAwOwogCQluY291bnRlciA9IDA7CiAJCWZyb21sZW4g
PSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKTsKQEAgLTMyMywxMiArMzI2LDEwIEBAIHJlY3Zf
ZnVuY3Rpb25fcmF3KHZvaWQgKmFyZykKIAkJblJlc3VsdCA9IFdTQVJlY3ZGcm9tKFNDVFBfQkFT
RV9WQVIodXNlcnNwYWNlX3Jhd3NjdHApLCByZWN2X2lvdmVjLCBNQVhMRU5fTUJVRl9DSEFJTiwg
Jm5jb3VudGVyLCAmZmxhZ3MsIChzdHJ1Y3Qgc29ja2FkZHIgKikmZnJvbSwgJmZyb21sZW4sIE5V
TEwsIE5VTEwpOwogCQlpZiAoblJlc3VsdCAhPSAwKSB7CiAJCQltX0Vycm9yQ29kZSA9IFdTQUdl
dExhc3RFcnJvcigpOwotCQkJaWYgKG1fRXJyb3JDb2RlID09IFdTQUVUSU1FRE9VVCkgewotCQkJ
CWNvbnRpbnVlOwotCQkJfQogCQkJaWYgKChtX0Vycm9yQ29kZSA9PSBXU0FFTk9UU09DSykgfHwg
KG1fRXJyb3JDb2RlID09IFdTQUVJTlRSKSkgewogCQkJCWJyZWFrOwogCQkJfQorCQkJY29udGlu
dWU7CiAJCX0KIAkJbiA9IG5jb3VudGVyOwogI2Vsc2UKQEAgLTM0MSw3ICszNDIsNyBAQCByZWN2
X2Z1bmN0aW9uX3Jhdyh2b2lkICphcmcpCiAJCW1zZy5tc2dfY29udHJvbGxlbiA9IDA7CiAJCW5j
b3VudGVyID0gbiA9IHJlY3Ztc2coU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfcmF3c2N0cCksICZt
c2csIDApOwogCQlpZiAobiA8IDApIHsKLQkJCWlmIChlcnJubyA9PSBFQUdBSU4pIHsKKwkJCWlm
IChlcnJubyA9PSBFQUdBSU4gfHwgZXJybm8gPT0gRUlOVFIpIHsKIAkJCQljb250aW51ZTsKIAkJ
CX0gZWxzZSB7CiAJCQkJYnJlYWs7CkBAIC00MzIsNiArNDMzLDcgQEAgcmVjdl9mdW5jdGlvbl9y
YXcodm9pZCAqYXJnKQogCX0KIAkvKiBmcmVlIHRoZSBhcnJheSBpdHNlbGYgKi8KIAlmcmVlKHJl
Y3ZtYnVmKTsKKwlTQ1RQREJHKFNDVFBfREVCVUdfVVNSLCAiJXM6IEV4aXRpbmcgU0NUUC9JUDQg
cmN2XG4iLCBfX2Z1bmNfXyk7CiAJcmV0dXJuIChOVUxMKTsKIH0KICNlbmRpZgpAQCAtNDQxLDcg
KzQ0Myw3IEBAIHN0YXRpYyB2b2lkICoKIHJlY3ZfZnVuY3Rpb25fcmF3Nih2b2lkICphcmcpCiB7
CiAJc3RydWN0IG1idWYgKipyZWN2bWJ1ZjY7Ci0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3Nf
V2luZG93cykKKyNpZiAhZGVmaW5lZChfV0lOMzIpCiAJdW5zaWduZWQgaW50IG5jb3VudGVyID0g
MDsKIAlzdHJ1Y3QgaW92ZWMgcmVjdl9pb3ZlY1tNQVhMRU5fTUJVRl9DSEFJTl07CiAJc3RydWN0
IG1zZ2hkciBtc2c7CkBAIC00NTAsMTAgKzQ1Miw4IEBAIHJlY3ZfZnVuY3Rpb25fcmF3Nih2b2lk
ICphcmcpCiAjZWxzZQogCVdTQUJVRiByZWN2X2lvdmVjW01BWExFTl9NQlVGX0NIQUlOXTsKIAlp
bnQgblJlc3VsdCwgbV9FcnJvckNvZGU7Ci0JRFdPUkQgZmxhZ3M7CiAJRFdPUkQgbmNvdW50ZXIg
PSAwOwogCXN0cnVjdCBzb2NrYWRkcl9pbjYgZnJvbTsKLQlpbnQgZnJvbWxlbjsKIAlHVUlEIFdT
QVJlY3ZNc2dfR1VJRCA9IFdTQUlEX1dTQVJFQ1ZNU0c7CiAJTFBGTl9XU0FSRUNWTVNHIFdTQVJl
Y3ZNc2c7CiAJV1NBQ01TR0hEUiAqY21zZ3B0cjsKQEAgLTQ4NSw3ICs0ODUsNyBAQCByZWN2X2Z1
bmN0aW9uX3JhdzYodm9pZCAqYXJnKQogCQkJICAgSGF2ZSB0cmllZCBib3RoIHNlbmRpbmcgYW5k
IHJlY2VpdmluZwogCQkJICovCiAJCQlyZWN2bWJ1ZjZbaV0gPSBzY3RwX2dldF9tYnVmX2Zvcl9t
c2coaW92bGVuLCB3YW50X2hlYWRlciwgTV9OT1dBSVQsIHdhbnRfZXh0LCBNVF9EQVRBKTsKLSNp
ZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmICFkZWZpbmVkKF9XSU4zMikK
IAkJCXJlY3ZfaW92ZWNbaV0uaW92X2Jhc2UgPSAoY2FkZHJfdClyZWN2bWJ1ZjZbaV0tPm1fZGF0
YTsKIAkJCXJlY3ZfaW92ZWNbaV0uaW92X2xlbiA9IGlvdmxlbjsKICNlbHNlCkBAIC00OTQsMTAg
KzQ5NCw4IEBAIHJlY3ZfZnVuY3Rpb25fcmF3Nih2b2lkICphcmcpCiAjZW5kaWYKIAkJfQogCQl0
b19maWxsID0gMDsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCi0JCWZsYWdz
ID0gMDsKKyNpZiBkZWZpbmVkKF9XSU4zMikKIAkJbmNvdW50ZXIgPSAwOwotCQlmcm9tbGVuID0g
c2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpOwogCQltZW1zZXQoJmZyb20sIDAsIHNpemVvZihz
dHJ1Y3Qgc29ja2FkZHJfaW42KSk7CiAJCW5SZXN1bHQgPSBXU0FJb2N0bChTQ1RQX0JBU0VfVkFS
KHVzZXJzcGFjZV9yYXdzY3RwNiksIFNJT19HRVRfRVhURU5TSU9OX0ZVTkNUSU9OX1BPSU5URVIs
CiAJCSAgICAgICAgICAgICAgICAgICAmV1NBUmVjdk1zZ19HVUlELCBzaXplb2YgV1NBUmVjdk1z
Z19HVUlELApAQCAtNTE1LDEwICs1MTMsMTAgQEAgcmVjdl9mdW5jdGlvbl9yYXc2KHZvaWQgKmFy
ZykKIAkJfQogCQlpZiAoblJlc3VsdCAhPSAwKSB7CiAJCQltX0Vycm9yQ29kZSA9IFdTQUdldExh
c3RFcnJvcigpOwotCQkJaWYgKG1fRXJyb3JDb2RlID09IFdTQUVUSU1FRE9VVCkKLQkJCQljb250
aW51ZTsKLQkJCWlmIChtX0Vycm9yQ29kZSA9PSBXU0FFTk9UU09DSyB8fCBtX0Vycm9yQ29kZSA9
PSBXU0FFSU5UUikKKwkJCWlmICgobV9FcnJvckNvZGUgPT0gV1NBRU5PVFNPQ0spIHx8IChtX0Vy
cm9yQ29kZSA9PSBXU0FFSU5UUikpIHsKIAkJCQlicmVhazsKKwkJCX0KKwkJCWNvbnRpbnVlOwog
CQl9CiAJCW4gPSBuY291bnRlcjsKICNlbHNlCkBAIC01MzEsMTIgKzUyOSwxMiBAQCByZWN2X2Z1
bmN0aW9uX3JhdzYodm9pZCAqYXJnKQogCQltc2cubXNnX2lvdiA9IHJlY3ZfaW92ZWM7CiAJCW1z
Zy5tc2dfaW92bGVuID0gTUFYTEVOX01CVUZfQ0hBSU47CiAJCW1zZy5tc2dfY29udHJvbCA9ICh2
b2lkICopY21zZ2J1ZjsKLQkJbXNnLm1zZ19jb250cm9sbGVuID0gKHNvY2tsZW5fdClDTVNHX0xF
TihzaXplb2YgKHN0cnVjdCBpbjZfcGt0aW5mbykpOworCQltc2cubXNnX2NvbnRyb2xsZW4gPSAo
c29ja2xlbl90KUNNU0dfU1BBQ0Uoc2l6ZW9mIChzdHJ1Y3QgaW42X3BrdGluZm8pKTsKIAkJbXNn
Lm1zZ19mbGFncyA9IDA7CiAKIAkJbmNvdW50ZXIgPSBuID0gcmVjdm1zZyhTQ1RQX0JBU0VfVkFS
KHVzZXJzcGFjZV9yYXdzY3RwNiksICZtc2csIDApOwogCQlpZiAobiA8IDApIHsKLQkJCWlmIChl
cnJubyA9PSBFQUdBSU4pIHsKKwkJCWlmIChlcnJubyA9PSBFQUdBSU4gfHwgZXJybm8gPT0gRUlO
VFIpIHsKIAkJCQljb250aW51ZTsKIAkJCX0gZWxzZSB7CiAJCQkJYnJlYWs7CkBAIC01OTYsNyAr
NTk0LDggQEAgcmVjdl9mdW5jdGlvbl9yYXc2KHZvaWQgKmFyZykKIAkJc3JjLnNpbjZfbGVuID0g
c2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpOwogI2VuZGlmCiAJCXNyYy5zaW42X3BvcnQgPSBz
aC0+c3JjX3BvcnQ7Ci0JCWlmIChtZW1jbXAoJnNyYy5zaW42X2FkZHIsICZkc3Quc2luNl9hZGRy
LCBzaXplb2Yoc3RydWN0IGluNl9hZGRyKSkgPT0gMCkgeworCQlpZiAoU0NUUF9CQVNFX1NZU0NU
TChzY3RwX25vX2NzdW1fb25fbG9vcGJhY2spICYmCisJCSAgICAobWVtY21wKCZzcmMuc2luNl9h
ZGRyLCAmZHN0LnNpbjZfYWRkciwgc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpID09IDApKSB7CiAJ
CQljb21wdXRlX2NyYyA9IDA7CiAJCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19yZWN2aHdjcmMpOwog
CQl9IGVsc2UgewpAQCAtNjIwLDYgKzYxOSw3IEBAIHJlY3ZfZnVuY3Rpb25fcmF3Nih2b2lkICph
cmcpCiAJfQogCS8qIGZyZWUgdGhlIGFycmF5IGl0c2VsZiAqLwogCWZyZWUocmVjdm1idWY2KTsK
KwlTQ1RQREJHKFNDVFBfREVCVUdfVVNSLCAiJXM6IEV4aXRpbmcgU0NUUC9JUDYgcmN2XG4iLCBf
X2Z1bmNfXyk7CiAJcmV0dXJuIChOVUxMKTsKIH0KICNlbmRpZgpAQCAtNjQ3LDcgKzY0Nyw3IEBA
IHJlY3ZfZnVuY3Rpb25fdWRwKHZvaWQgKmFyZykKIAljaGFyIGNtc2didWZbQ01TR19TUEFDRShz
aXplb2Yoc3RydWN0IGluX2FkZHIpKV07CiAjZW5kaWYKIAlpbnQgY29tcHV0ZV9jcmMgPSAxOwot
I2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgIWRlZmluZWQoX1dJTjMy
KQogCXVuc2lnbmVkIGludCBuY291bnRlcjsKIAlzdHJ1Y3QgaW92ZWMgaW92W01BWExFTl9NQlVG
X0NIQUlOXTsKIAlzdHJ1Y3QgbXNnaGRyIG1zZzsKQEAgLTY3NCw3ICs2NzQsNyBAQCByZWN2X2Z1
bmN0aW9uX3VkcCh2b2lkICphcmcpCiAJCQkgICBIYXZlIHRyaWVkIGJvdGggc2VuZGluZyBhbmQg
cmVjZWl2aW5nCiAJCQkgKi8KIAkJCXVkcHJlY3ZtYnVmW2ldID0gc2N0cF9nZXRfbWJ1Zl9mb3Jf
bXNnKGlvdmxlbiwgd2FudF9oZWFkZXIsIE1fTk9XQUlULCB3YW50X2V4dCwgTVRfREFUQSk7Ci0j
aWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiAhZGVmaW5lZChfV0lOMzIp
CiAJCQlpb3ZbaV0uaW92X2Jhc2UgPSAoY2FkZHJfdCl1ZHByZWN2bWJ1ZltpXS0+bV9kYXRhOwog
CQkJaW92W2ldLmlvdl9sZW4gPSBpb3ZsZW47CiAjZWxzZQpAQCAtNjgzLDcgKzY4Myw3IEBAIHJl
Y3ZfZnVuY3Rpb25fdWRwKHZvaWQgKmFyZykKICNlbmRpZgogCQl9CiAJCXRvX2ZpbGwgPSAwOwot
I2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgIWRlZmluZWQoX1dJTjMy
KQogCQltZW1zZXQoJm1zZywgMCwgc2l6ZW9mKHN0cnVjdCBtc2doZHIpKTsKICNlbHNlCiAJCW1l
bXNldCgmbXNnLCAwLCBzaXplb2YoV1NBTVNHKSk7CkBAIC02OTIsNyArNjkyLDcgQEAgcmVjdl9m
dW5jdGlvbl91ZHAodm9pZCAqYXJnKQogCQltZW1zZXQoJmRzdCwgMCwgc2l6ZW9mKHN0cnVjdCBz
b2NrYWRkcl9pbikpOwogCQltZW1zZXQoY21zZ2J1ZiwgMCwgc2l6ZW9mKGNtc2didWYpKTsKIAot
I2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgIWRlZmluZWQoX1dJTjMy
KQogCQltc2cubXNnX25hbWUgPSAodm9pZCAqKSZzcmM7CiAJCW1zZy5tc2dfbmFtZWxlbiA9IHNp
emVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pOwogCQltc2cubXNnX2lvdiA9IGlvdjsKQEAgLTcwMyw3
ICs3MDMsNyBAQCByZWN2X2Z1bmN0aW9uX3VkcCh2b2lkICphcmcpCiAKIAkJbmNvdW50ZXIgPSBu
ID0gcmVjdm1zZyhTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV91ZHBzY3RwKSwgJm1zZywgMCk7CiAJ
CWlmIChuIDwgMCkgewotCQkJaWYgKGVycm5vID09IEVBR0FJTikgeworCQkJaWYgKGVycm5vID09
IEVBR0FJTiB8fCBlcnJubyA9PSBFSU5UUikgewogCQkJCWNvbnRpbnVlOwogCQkJfSBlbHNlIHsK
IAkJCQlicmVhazsKQEAgLTcyNiwxMiArNzI2LDEwIEBAIHJlY3ZfZnVuY3Rpb25fdWRwKHZvaWQg
KmFyZykKIAkJfQogCQlpZiAoblJlc3VsdCAhPSAwKSB7CiAJCQltX0Vycm9yQ29kZSA9IFdTQUdl
dExhc3RFcnJvcigpOwotCQkJaWYgKG1fRXJyb3JDb2RlID09IFdTQUVUSU1FRE9VVCkgewotCQkJ
CWNvbnRpbnVlOwotCQkJfQogCQkJaWYgKChtX0Vycm9yQ29kZSA9PSBXU0FFTk9UU09DSykgfHwg
KG1fRXJyb3JDb2RlID09IFdTQUVJTlRSKSkgewogCQkJCWJyZWFrOwogCQkJfQorCQkJY29udGlu
dWU7CiAJCX0KIAkJbiA9IG5jb3VudGVyOwogI2VuZGlmCkBAIC04MDIsNyArODAwLDggQEAgcmVj
dl9mdW5jdGlvbl91ZHAodm9pZCAqYXJnKQogCQlwb3J0ID0gc3JjLnNpbl9wb3J0OwogCQlzcmMu
c2luX3BvcnQgPSBzaC0+c3JjX3BvcnQ7CiAJCWRzdC5zaW5fcG9ydCA9IHNoLT5kZXN0X3BvcnQ7
Ci0JCWlmIChzcmMuc2luX2FkZHIuc19hZGRyID09IGRzdC5zaW5fYWRkci5zX2FkZHIpIHsKKwkJ
aWYgKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9ub19jc3VtX29uX2xvb3BiYWNrKSAmJgorCQkgICAg
KHNyYy5zaW5fYWRkci5zX2FkZHIgPT0gZHN0LnNpbl9hZGRyLnNfYWRkcikpIHsKIAkJCWNvbXB1
dGVfY3JjID0gMDsKIAkJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3JlY3Zod2NyYyk7CiAJCX0gZWxz
ZSB7CkBAIC04MjYsNiArODI1LDcgQEAgcmVjdl9mdW5jdGlvbl91ZHAodm9pZCAqYXJnKQogCX0K
IAkvKiBmcmVlIHRoZSBhcnJheSBpdHNlbGYgKi8KIAlmcmVlKHVkcHJlY3ZtYnVmKTsKKwlTQ1RQ
REJHKFNDVFBfREVCVUdfVVNSLCAiJXM6IEV4aXRpbmcgU0NUUC9VRFAvSVA0IHJjdlxuIiwgX19m
dW5jX18pOwogCXJldHVybiAoTlVMTCk7CiB9CiAjZW5kaWYKQEAgLTg0OSwxMSArODQ5LDExIEBA
IHJlY3ZfZnVuY3Rpb25fdWRwNih2b2lkICphcmcpCiAJc3RydWN0IHNjdHBfY2h1bmtoZHIgKmNo
OwogCWNoYXIgY21zZ2J1ZltDTVNHX1NQQUNFKHNpemVvZiAoc3RydWN0IGluNl9wa3RpbmZvKSld
OwogCWludCBjb21wdXRlX2NyYyA9IDE7Ci0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2lu
ZG93cykKLQl1bnNpZ25lZCBpbnQgbmNvdW50ZXI7CisjaWYgIWRlZmluZWQoX1dJTjMyKQogCXN0
cnVjdCBpb3ZlYyBpb3ZbTUFYTEVOX01CVUZfQ0hBSU5dOwogCXN0cnVjdCBtc2doZHIgbXNnOwog
CXN0cnVjdCBjbXNnaGRyICpjbXNncHRyOworCXVuc2lnbmVkIGludCBuY291bnRlcjsKICNlbHNl
CiAJR1VJRCBXU0FSZWN2TXNnX0dVSUQgPSBXU0FJRF9XU0FSRUNWTVNHOwogCUxQRk5fV1NBUkVD
Vk1TRyBXU0FSZWN2TXNnOwpAQCAtODYxLDggKzg2MSw4IEBAIHJlY3ZfZnVuY3Rpb25fdWRwNih2
b2lkICphcmcpCiAJV1NBQlVGIGlvdltNQVhMRU5fTUJVRl9DSEFJTl07CiAJV1NBTVNHIG1zZzsK
IAlpbnQgblJlc3VsdCwgbV9FcnJvckNvZGU7Ci0JRFdPUkQgbmNvdW50ZXI7CiAJV1NBQ01TR0hE
UiAqY21zZ3B0cjsKKwlEV09SRCBuY291bnRlcjsKICNlbmRpZgogCiAJc2N0cF91c2Vyc3BhY2Vf
c2V0X3RocmVhZG5hbWUoIlNDVFAvVURQL0lQNiByY3YiKTsKQEAgLTg3NSw3ICs4NzUsNyBAQCBy
ZWN2X2Z1bmN0aW9uX3VkcDYodm9pZCAqYXJnKQogCQkJICAgSGF2ZSB0cmllZCBib3RoIHNlbmRp
bmcgYW5kIHJlY2VpdmluZwogCQkJICovCiAJCQl1ZHByZWN2bWJ1ZjZbaV0gPSBzY3RwX2dldF9t
YnVmX2Zvcl9tc2coaW92bGVuLCB3YW50X2hlYWRlciwgTV9OT1dBSVQsIHdhbnRfZXh0LCBNVF9E
QVRBKTsKLSNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmICFkZWZpbmVk
KF9XSU4zMikKIAkJCWlvdltpXS5pb3ZfYmFzZSA9IChjYWRkcl90KXVkcHJlY3ZtYnVmNltpXS0+
bV9kYXRhOwogCQkJaW92W2ldLmlvdl9sZW4gPSBpb3ZsZW47CiAjZWxzZQpAQCAtODg1LDcgKzg4
NSw3IEBAIHJlY3ZfZnVuY3Rpb25fdWRwNih2b2lkICphcmcpCiAJCX0KIAkJdG9fZmlsbCA9IDA7
CiAKLSNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmICFkZWZpbmVkKF9X
SU4zMikKIAkJbWVtc2V0KCZtc2csIDAsIHNpemVvZihzdHJ1Y3QgbXNnaGRyKSk7CiAjZWxzZQog
CQltZW1zZXQoJm1zZywgMCwgc2l6ZW9mKFdTQU1TRykpOwpAQCAtODk0LDE4ICs4OTQsMTggQEAg
cmVjdl9mdW5jdGlvbl91ZHA2KHZvaWQgKmFyZykKIAkJbWVtc2V0KCZkc3QsIDAsIHNpemVvZihz
dHJ1Y3Qgc29ja2FkZHJfaW42KSk7CiAJCW1lbXNldChjbXNnYnVmLCAwLCBDTVNHX1NQQUNFKHNp
emVvZiAoc3RydWN0IGluNl9wa3RpbmZvKSkpOwogCi0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
b3NfV2luZG93cykKKyNpZiAhZGVmaW5lZChfV0lOMzIpCiAJCW1zZy5tc2dfbmFtZSA9ICh2b2lk
ICopJnNyYzsKIAkJbXNnLm1zZ19uYW1lbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYp
OwogCQltc2cubXNnX2lvdiA9IGlvdjsKIAkJbXNnLm1zZ19pb3ZsZW4gPSBNQVhMRU5fTUJVRl9D
SEFJTjsKIAkJbXNnLm1zZ19jb250cm9sID0gKHZvaWQgKiljbXNnYnVmOwotCQltc2cubXNnX2Nv
bnRyb2xsZW4gPSAoc29ja2xlbl90KUNNU0dfTEVOKHNpemVvZiAoc3RydWN0IGluNl9wa3RpbmZv
KSk7CisJCW1zZy5tc2dfY29udHJvbGxlbiA9IChzb2NrbGVuX3QpQ01TR19TUEFDRShzaXplb2Yg
KHN0cnVjdCBpbjZfcGt0aW5mbykpOwogCQltc2cubXNnX2ZsYWdzID0gMDsKIAogCQluY291bnRl
ciA9IG4gPSByZWN2bXNnKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNjdHA2KSwgJm1zZywg
MCk7CiAJCWlmIChuIDwgMCkgewotCQkJaWYgKGVycm5vID09IEVBR0FJTikgeworCQkJaWYgKGVy
cm5vID09IEVBR0FJTiB8fCBlcnJubyA9PSBFSU5UUikgewogCQkJCWNvbnRpbnVlOwogCQkJfSBl
bHNlIHsKIAkJCQlicmVhazsKQEAgLTkzMiwxMiArOTMyLDEwIEBAIHJlY3ZfZnVuY3Rpb25fdWRw
Nih2b2lkICphcmcpCiAJCX0KIAkJaWYgKG5SZXN1bHQgIT0gMCkgewogCQkJbV9FcnJvckNvZGUg
PSBXU0FHZXRMYXN0RXJyb3IoKTsKLQkJCWlmIChtX0Vycm9yQ29kZSA9PSBXU0FFVElNRURPVVQp
IHsKLQkJCQljb250aW51ZTsKLQkJCX0KIAkJCWlmICgobV9FcnJvckNvZGUgPT0gV1NBRU5PVFNP
Q0spIHx8IChtX0Vycm9yQ29kZSA9PSBXU0FFSU5UUikpIHsKIAkJCQlicmVhazsKIAkJCX0KKwkJ
CWNvbnRpbnVlOwogCQl9CiAJCW4gPSBuY291bnRlcjsKICNlbmRpZgpAQCAtOTkwLDcgKzk4OCw4
IEBAIHJlY3ZfZnVuY3Rpb25fdWRwNih2b2lkICphcmcpCiAJCXBvcnQgPSBzcmMuc2luNl9wb3J0
OwogCQlzcmMuc2luNl9wb3J0ID0gc2gtPnNyY19wb3J0OwogCQlkc3Quc2luNl9wb3J0ID0gc2gt
PmRlc3RfcG9ydDsKLQkJaWYgKChtZW1jbXAoJnNyYy5zaW42X2FkZHIsICZkc3Quc2luNl9hZGRy
LCBzaXplb2Yoc3RydWN0IGluNl9hZGRyKSkgPT0gMCkpIHsKKwkJaWYgKFNDVFBfQkFTRV9TWVND
VEwoc2N0cF9ub19jc3VtX29uX2xvb3BiYWNrKSAmJgorCQkgICAgKG1lbWNtcCgmc3JjLnNpbjZf
YWRkciwgJmRzdC5zaW42X2FkZHIsIHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKSA9PSAwKSkgewog
CQkJY29tcHV0ZV9jcmMgPSAwOwogCQkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfcmVjdmh3Y3JjKTsK
IAkJfSBlbHNlIHsKQEAgLTEwMTQsMTEgKzEwMTMsMTIgQEAgcmVjdl9mdW5jdGlvbl91ZHA2KHZv
aWQgKmFyZykKIAl9CiAJLyogZnJlZSB0aGUgYXJyYXkgaXRzZWxmICovCiAJZnJlZSh1ZHByZWN2
bWJ1ZjYpOworCVNDVFBEQkcoU0NUUF9ERUJVR19VU1IsICIlczogRXhpdGluZyBTQ1RQL1VEUC9J
UDYgcmN2XG4iLCBfX2Z1bmNfXyk7CiAJcmV0dXJuIChOVUxMKTsKIH0KICNlbmRpZgogCi0jaWYg
ZGVmaW5lZCAoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIHN0
YXRpYyB2b2lkCiBzZXRSZWNlaXZlQnVmZmVyU2l6ZShTT0NLRVQgc2ZkLCBpbnQgbmV3X3NpemUp
CiAjZWxzZQpAQCAtMTAyOSw3ICsxMDI5LDcgQEAgc2V0UmVjZWl2ZUJ1ZmZlclNpemUoaW50IHNm
ZCwgaW50IG5ld19zaXplKQogCWludCBjaCA9IG5ld19zaXplOwogCiAJaWYgKHNldHNvY2tvcHQg
KHNmZCwgU09MX1NPQ0tFVCwgU09fUkNWQlVGLCAodm9pZCopJmNoLCBzaXplb2YoY2gpKSA8IDAp
IHsKLSNpZiBkZWZpbmVkIChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJ
TjMyKQogCQlTQ1RQREJHKFNDVFBfREVCVUdfVVNSLCAiQ2FuJ3Qgc2V0IHJlY3YtYnVmZmVycyBz
aXplIChlcnJubyA9ICVkKS5cbiIsIFdTQUdldExhc3RFcnJvcigpKTsKICNlbHNlCiAJCVNDVFBE
QkcoU0NUUF9ERUJVR19VU1IsICJDYW4ndCBzZXQgcmVjdi1idWZmZXJzIHNpemUgKGVycm5vID0g
JWQpLlxuIiwgZXJybm8pOwpAQCAtMTAzOCw3ICsxMDM4LDcgQEAgc2V0UmVjZWl2ZUJ1ZmZlclNp
emUoaW50IHNmZCwgaW50IG5ld19zaXplKQogCXJldHVybjsKIH0KIAotI2lmIGRlZmluZWQgKF9f
VXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiBzdGF0aWMgdm9pZAog
c2V0U2VuZEJ1ZmZlclNpemUoU09DS0VUIHNmZCwgaW50IG5ld19zaXplKQogI2Vsc2UKQEAgLTEw
NDksNyArMTA0OSw3IEBAIHNldFNlbmRCdWZmZXJTaXplKGludCBzZmQsIGludCBuZXdfc2l6ZSkK
IAlpbnQgY2ggPSBuZXdfc2l6ZTsKIAogCWlmIChzZXRzb2Nrb3B0IChzZmQsIFNPTF9TT0NLRVQs
IFNPX1NOREJVRiwgKHZvaWQqKSZjaCwgc2l6ZW9mKGNoKSkgPCAwKSB7Ci0jaWYgZGVmaW5lZCAo
X19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIAkJU0NUUERCRyhT
Q1RQX0RFQlVHX1VTUiwgIkNhbid0IHNldCBzZW5kLWJ1ZmZlcnMgc2l6ZSAoZXJybm8gPSAlZCku
XG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7CiAjZWxzZQogCQlTQ1RQREJHKFNDVFBfREVCVUdfVVNS
LCAiQ2FuJ3Qgc2V0IHNlbmQtYnVmZmVycyBzaXplIChlcnJubyA9ICVkKS5cbiIsIGVycm5vKTsK
QEAgLTEwNzIsNyArMTA3Miw3IEBAIHJlY3ZfdGhyZWFkX2luaXQodm9pZCkKICNpZiBkZWZpbmVk
KElORVQpIHx8IGRlZmluZWQoSU5FVDYpCiAJY29uc3QgaW50IG9uID0gMTsKICNlbmRpZgotI2lm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgIWRlZmluZWQoX1dJTjMyKQog
CXN0cnVjdCB0aW1ldmFsIHRpbWVvdXQ7CiAKIAltZW1zZXQoJnRpbWVvdXQsIDAsIHNpemVvZihz
dHJ1Y3QgdGltZXZhbCkpOwpAQCAtMTA4MSw3ICsxMDgxLDcgQEAgcmVjdl90aHJlYWRfaW5pdCh2
b2lkKQogI2Vsc2UKIAl1bnNpZ25lZCBpbnQgdGltZW91dCA9IFNPQ0tFVF9USU1FT1VUOyAvKiBU
aW1lb3V0IGluIG1pbGxpc2Vjb25kcyAqLwogI2VuZGlmCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFj
ZV9vc19EYXJ3aW4pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRHJhZ29uRmx5KSB8fCBkZWZp
bmVkKF9fVXNlcnNwYWNlX29zX0ZyZWVCU0QpCisjaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRl
ZmluZWQoX19EcmFnb25GbHlfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykKIAlpZiAoU0NUUF9C
QVNFX1ZBUih1c2Vyc3BhY2Vfcm91dGUpID09IC0xKSB7CiAJCWlmICgoU0NUUF9CQVNFX1ZBUih1
c2Vyc3BhY2Vfcm91dGUpID0gc29ja2V0KEFGX1JPVVRFLCBTT0NLX1JBVywgMCkpID09IC0xKSB7
CiAJCQlTQ1RQREJHKFNDVFBfREVCVUdfVVNSLCAiQ2FuJ3QgY3JlYXRlIHJvdXRpbmcgc29ja2V0
IChlcnJubyA9ICVkKS5cbiIsIGVycm5vKTsKQEAgLTExMTAsNyArMTExMCw3IEBAIHJlY3ZfdGhy
ZWFkX2luaXQodm9pZCkKIAkJaWYgKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3JvdXRlKSAhPSAt
MSkgewogCQkJaWYgKHNldHNvY2tvcHQoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2Vfcm91dGUpLCBT
T0xfU09DS0VULCBTT19SQ1ZUSU1FTywoY29uc3Qgdm9pZCopJnRpbWVvdXQsIHNpemVvZihzdHJ1
Y3QgdGltZXZhbCkpIDwgMCkgewogCQkJCVNDVFBEQkcoU0NUUF9ERUJVR19VU1IsICJDYW4ndCBz
ZXQgdGltZW91dCBvbiByb3V0aW5nIHNvY2tldCAoZXJybm8gPSAlZCkuXG4iLCBlcnJubyk7Ci0j
aWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQog
CQkJCWNsb3Nlc29ja2V0KFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3JvdXRlKSk7CiAjZWxzZQog
CQkJCWNsb3NlKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3JvdXRlKSk7CkBAIC0xMTIzLDcgKzEx
MjMsNyBAQCByZWN2X3RocmVhZF9pbml0KHZvaWQpCiAjaWYgZGVmaW5lZChJTkVUKQogCWlmIChT
Q1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3RwKSA9PSAtMSkgewogCQlpZiAoKFNDVFBfQkFT
RV9WQVIodXNlcnNwYWNlX3Jhd3NjdHApID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfUkFXLCBJUFBS
T1RPX1NDVFApKSA9PSAtMSkgewotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykK
KyNpZiBkZWZpbmVkKF9XSU4zMikKIAkJCVNDVFBEQkcoU0NUUF9ERUJVR19VU1IsICJDYW4ndCBj
cmVhdGUgcmF3IHNvY2tldCBmb3IgSVB2NCAoZXJybm8gPSAlZCkuXG4iLCBXU0FHZXRMYXN0RXJy
b3IoKSk7CiAjZWxzZQogCQkJU0NUUERCRyhTQ1RQX0RFQlVHX1VTUiwgIkNhbid0IGNyZWF0ZSBy
YXcgc29ja2V0IGZvciBJUHY0IChlcnJubyA9ICVkKS5cbiIsIGVycm5vKTsKQEAgLTExMzEsNyAr
MTEzMSw3IEBAIHJlY3ZfdGhyZWFkX2luaXQodm9pZCkKIAkJfSBlbHNlIHsKIAkJCS8qIGNvbXBs
ZXRlIHNldHRpbmcgdXAgdGhlIHJhdyBTQ1RQIHNvY2tldCAqLwogCQkJaWYgKHNldHNvY2tvcHQo
U0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfcmF3c2N0cCksIElQUFJPVE9fSVAsIElQX0hEUklOQ0ws
KGNvbnN0IHZvaWQqKSZoZHJpbmNsLCBzaXplb2YoaW50KSkgPCAwKSB7Ci0jaWYgZGVmaW5lZChf
X1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogCQkJCVNDVFBEQkco
U0NUUF9ERUJVR19VU1IsICJDYW4ndCBzZXQgSVBfSERSSU5DTCAoZXJybm8gPSAlZCkuXG4iLCBX
U0FHZXRMYXN0RXJyb3IoKSk7CiAJCQkJY2xvc2Vzb2NrZXQoU0NUUF9CQVNFX1ZBUih1c2Vyc3Bh
Y2VfcmF3c2N0cCkpOwogI2Vsc2UKQEAgLTExNDAsNyArMTE0MCw3IEBAIHJlY3ZfdGhyZWFkX2lu
aXQodm9pZCkKICNlbmRpZgogCQkJCVNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jhd3NjdHApID0g
LTE7CiAJCQl9IGVsc2UgaWYgKHNldHNvY2tvcHQoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfcmF3
c2N0cCksIFNPTF9TT0NLRVQsIFNPX1JDVlRJTUVPLCAoY29uc3Qgdm9pZCAqKSZ0aW1lb3V0LCBz
aXplb2YodGltZW91dCkpIDwgMCkgewotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93
cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIAkJCQlTQ1RQREJHKFNDVFBfREVCVUdfVVNSLCAiQ2Fu
J3Qgc2V0IHRpbWVvdXQgb24gc29ja2V0IGZvciBTQ1RQL0lQdjQgKGVycm5vID0gJWQpLlxuIiwg
V1NBR2V0TGFzdEVycm9yKCkpOwogCQkJCWNsb3Nlc29ja2V0KFNDVFBfQkFTRV9WQVIodXNlcnNw
YWNlX3Jhd3NjdHApKTsKICNlbHNlCkBAIC0xMTU3LDcgKzExNTcsNyBAQCByZWN2X3RocmVhZF9p
bml0KHZvaWQpCiAJCQkJYWRkcl9pcHY0LnNpbl9wb3J0ICAgICAgICA9IGh0b25zKDApOwogCQkJ
CWFkZHJfaXB2NC5zaW5fYWRkci5zX2FkZHIgPSBodG9ubChJTkFERFJfQU5ZKTsKIAkJCQlpZiAo
YmluZChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3RwKSwgKGNvbnN0IHN0cnVjdCBzb2Nr
YWRkciAqKSZhZGRyX2lwdjQsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKSA8IDApIHsKLSNp
ZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJ
CQkJCVNDVFBEQkcoU0NUUF9ERUJVR19VU1IsICJDYW4ndCBiaW5kIHNvY2tldCBmb3IgU0NUUC9J
UHY0IChlcnJubyA9ICVkKS5cbiIsIFdTQUdldExhc3RFcnJvcigpKTsKIAkJCQkJY2xvc2Vzb2Nr
ZXQoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfcmF3c2N0cCkpOwogI2Vsc2UKQEAgLTExNzQsNyAr
MTE3NCw3IEBAIHJlY3ZfdGhyZWFkX2luaXQodm9pZCkKIAl9CiAJaWYgKFNDVFBfQkFTRV9WQVIo
dXNlcnNwYWNlX3VkcHNjdHApID09IC0xKSB7CiAJCWlmICgoU0NUUF9CQVNFX1ZBUih1c2Vyc3Bh
Y2VfdWRwc2N0cCkgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgSVBQUk9UT19VRFApKSA9
PSAtMSkgewotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVk
KF9XSU4zMikKIAkJCVNDVFBEQkcoU0NUUF9ERUJVR19VU1IsICJDYW4ndCBjcmVhdGUgc29ja2V0
IGZvciBTQ1RQL1VEUC9JUHY0IChlcnJubyA9ICVkKS5cbiIsIFdTQUdldExhc3RFcnJvcigpKTsK
ICNlbHNlCiAJCQlTQ1RQREJHKFNDVFBfREVCVUdfVVNSLCAiQ2FuJ3QgY3JlYXRlIHNvY2tldCBm
b3IgU0NUUC9VRFAvSVB2NCAoZXJybm8gPSAlZCkuXG4iLCBlcnJubyk7CkBAIC0xMTg1LDcgKzEx
ODUsNyBAQCByZWN2X3RocmVhZF9pbml0KHZvaWQpCiAjZWxzZQogCQkJaWYgKHNldHNvY2tvcHQo
U0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfdWRwc2N0cCksIElQUFJPVE9fSVAsIElQX1JFQ1ZEU1RB
RERSLCAoY29uc3Qgdm9pZCAqKSZvbiwgKGludClzaXplb2YoaW50KSkgPCAwKSB7CiAjZW5kaWYK
LSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIp
CiAjaWYgZGVmaW5lZChJUF9QS1RJTkZPKQogCQkJCVNDVFBEQkcoU0NUUF9ERUJVR19VU1IsICJD
YW4ndCBzZXQgSVBfUEtUSU5GTyBvbiBzb2NrZXQgZm9yIFNDVFAvVURQL0lQdjQgKGVycm5vID0g
JWQpLlxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOwogI2Vsc2UKQEAgLTEyMDIsNyArMTIwMiw3IEBA
IHJlY3ZfdGhyZWFkX2luaXQodm9pZCkKICNlbmRpZgogCQkJCVNDVFBfQkFTRV9WQVIodXNlcnNw
YWNlX3VkcHNjdHApID0gLTE7CiAJCQl9IGVsc2UgaWYgKHNldHNvY2tvcHQoU0NUUF9CQVNFX1ZB
Uih1c2Vyc3BhY2VfdWRwc2N0cCksIFNPTF9TT0NLRVQsIFNPX1JDVlRJTUVPLCAoY29uc3Qgdm9p
ZCAqKSZ0aW1lb3V0LCBzaXplb2YodGltZW91dCkpIDwgMCkgewotI2lmIGRlZmluZWQoX19Vc2Vy
c3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIAkJCQlTQ1RQREJHKFNDVFBf
REVCVUdfVVNSLCAiQ2FuJ3Qgc2V0IHRpbWVvdXQgb24gc29ja2V0IGZvciBTQ1RQL1VEUC9JUHY0
IChlcnJubyA9ICVkKS5cbiIsIFdTQUdldExhc3RFcnJvcigpKTsKIAkJCQljbG9zZXNvY2tldChT
Q1RQX0JBU0VfVkFSKHVzZXJzcGFjZV91ZHBzY3RwKSk7CiAjZWxzZQpAQCAtMTIxOSw3ICsxMjE5
LDcgQEAgcmVjdl90aHJlYWRfaW5pdCh2b2lkKQogCQkJCWFkZHJfaXB2NC5zaW5fcG9ydCAgICAg
ICAgPSBodG9ucyhTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfdWRwX3R1bm5lbGluZ19wb3J0KSk7CiAJ
CQkJYWRkcl9pcHY0LnNpbl9hZGRyLnNfYWRkciA9IGh0b25sKElOQUREUl9BTlkpOwogCQkJCWlm
IChiaW5kKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNjdHApLCAoY29uc3Qgc3RydWN0IHNv
Y2thZGRyICopJmFkZHJfaXB2NCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpIDwgMCkgewot
I2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikK
IAkJCQkJU0NUUERCRyhTQ1RQX0RFQlVHX1VTUiwgIkNhbid0IGJpbmQgc29ja2V0IGZvciBTQ1RQ
L1VEUC9JUHY0IChlcnJubyA9ICVkKS5cbiIsIFdTQUdldExhc3RFcnJvcigpKTsKIAkJCQkJY2xv
c2Vzb2NrZXQoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfdWRwc2N0cCkpOwogI2Vsc2UKQEAgLTEy
MzgsNyArMTIzOCw3IEBAIHJlY3ZfdGhyZWFkX2luaXQodm9pZCkKICNpZiBkZWZpbmVkKElORVQ2
KQogCWlmIChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3RwNikgPT0gLTEpIHsKIAkJaWYg
KChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3RwNikgPSBzb2NrZXQoQUZfSU5FVDYsIFNP
Q0tfUkFXLCBJUFBST1RPX1NDVFApKSA9PSAtMSkgewotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vf
b3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIAkJCVNDVFBEQkcoU0NUUF9ERUJVR19V
U1IsICJDYW4ndCBjcmVhdGUgc29ja2V0IGZvciBTQ1RQL0lQdjYgKGVycm5vID0gJWQpLlxuIiwg
V1NBR2V0TGFzdEVycm9yKCkpOwogI2Vsc2UKIAkJCVNDVFBEQkcoU0NUUF9ERUJVR19VU1IsICJD
YW4ndCBjcmVhdGUgc29ja2V0IGZvciBTQ1RQL0lQdjYgKGVycm5vID0gJWQpLlxuIiwgZXJybm8p
OwpAQCAtMTI0Nyw3ICsxMjQ3LDcgQEAgcmVjdl90aHJlYWRfaW5pdCh2b2lkKQogCQkJLyogY29t
cGxldGUgc2V0dGluZyB1cCB0aGUgcmF3IFNDVFAgc29ja2V0ICovCiAjaWYgZGVmaW5lZChJUFY2
X1JFQ1ZQS1RJTkZPKQogCQkJaWYgKHNldHNvY2tvcHQoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2Vf
cmF3c2N0cDYpLCBJUFBST1RPX0lQVjYsIElQVjZfUkVDVlBLVElORk8sIChjb25zdCB2b2lkICop
Jm9uLCBzaXplb2Yob24pKSA8IDApIHsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRv
d3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJCQkJU0NUUERCRyhTQ1RQX0RFQlVHX1VTUiwgIkNh
bid0IHNldCBJUFY2X1JFQ1ZQS1RJTkZPIG9uIHNvY2tldCBmb3IgU0NUUC9JUHY2IChlcnJubyA9
ICVkKS5cbiIsIFdTQUdldExhc3RFcnJvcigpKTsKIAkJCQljbG9zZXNvY2tldChTQ1RQX0JBU0Vf
VkFSKHVzZXJzcGFjZV9yYXdzY3RwNikpOwogI2Vsc2UKQEAgLTEyNTgsNyArMTI1OCw3IEBAIHJl
Y3ZfdGhyZWFkX2luaXQodm9pZCkKIAkJCX0gZWxzZSB7CiAjZWxzZQogCQkJaWYgKHNldHNvY2tv
cHQoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfcmF3c2N0cDYpLCBJUFBST1RPX0lQVjYsIElQVjZf
UEtUSU5GTywoY29uc3Qgdm9pZCopJm9uLCBzaXplb2Yob24pKSA8IDApIHsKLSNpZiBkZWZpbmVk
KF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJCQkJU0NUUERC
RyhTQ1RQX0RFQlVHX1VTUiwgIkNhbid0IHNldCBJUFY2X1BLVElORk8gb24gc29ja2V0IGZvciBT
Q1RQL0lQdjYgKGVycm5vID0gJWQpLlxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOwogCQkJCWNsb3Nl
c29ja2V0KFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jhd3NjdHA2KSk7CiAjZWxzZQpAQCAtMTI2
OSwxNCArMTI2OSwxNCBAQCByZWN2X3RocmVhZF9pbml0KHZvaWQpCiAJCQl9IGVsc2UgewogI2Vu
ZGlmCiAJCQkJaWYgKHNldHNvY2tvcHQoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfcmF3c2N0cDYp
LCBJUFBST1RPX0lQVjYsIElQVjZfVjZPTkxZLCAoY29uc3Qgdm9pZCopJm9uLCAoc29ja2xlbl90
KXNpemVvZihvbikpIDwgMCkgewotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykK
KyNpZiBkZWZpbmVkKF9XSU4zMikKIAkJCQkJU0NUUERCRyhTQ1RQX0RFQlVHX1VTUiwgIkNhbid0
IHNldCBJUFY2X1Y2T05MWSBvbiBzb2NrZXQgZm9yIFNDVFAvSVB2NiAoZXJybm8gPSAlZCkuXG4i
LCBXU0FHZXRMYXN0RXJyb3IoKSk7CiAjZWxzZQogCQkJCQlTQ1RQREJHKFNDVFBfREVCVUdfVVNS
LCAiQ2FuJ3Qgc2V0IElQVjZfVjZPTkxZIG9uIHNvY2tldCBmb3IgU0NUUC9JUHY2IChlcnJubyA9
ICVkKS5cbiIsIGVycm5vKTsKICNlbmRpZgogCQkJCX0KIAkJCQlpZiAoc2V0c29ja29wdChTQ1RQ
X0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3RwNiksIFNPTF9TT0NLRVQsIFNPX1JDVlRJTUVPLCAo
Y29uc3Qgdm9pZCAqKSZ0aW1lb3V0LCBzaXplb2YodGltZW91dCkpIDwgMCkgewotI2lmIGRlZmlu
ZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIAkJCQkJU0NU
UERCRyhTQ1RQX0RFQlVHX1VTUiwgIkNhbid0IHNldCB0aW1lb3V0IG9uIHNvY2tldCBmb3IgU0NU
UC9JUHY2IChlcnJubyA9ICVkKS5cbiIsIFdTQUdldExhc3RFcnJvcigpKTsKIAkJCQkJY2xvc2Vz
b2NrZXQoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfcmF3c2N0cDYpKTsKICNlbHNlCkBAIC0xMjkz
LDcgKzEyOTMsNyBAQCByZWN2X3RocmVhZF9pbml0KHZvaWQpCiAJCQkJCWFkZHJfaXB2Ni5zaW42
X3BvcnQgICAgICAgID0gaHRvbnMoMCk7CiAJCQkJCWFkZHJfaXB2Ni5zaW42X2FkZHIgICAgICAg
ID0gaW42YWRkcl9hbnk7CiAJCQkJCWlmIChiaW5kKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jh
d3NjdHA2KSwgKGNvbnN0IHN0cnVjdCBzb2NrYWRkciAqKSZhZGRyX2lwdjYsIHNpemVvZihzdHJ1
Y3Qgc29ja2FkZHJfaW42KSkgPCAwKSB7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5k
b3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogCQkJCQkJU0NUUERCRyhTQ1RQX0RFQlVHX1VTUiwg
IkNhbid0IGJpbmQgc29ja2V0IGZvciBTQ1RQL0lQdjYgKGVycm5vID0gJWQpLlxuIiwgV1NBR2V0
TGFzdEVycm9yKCkpOwogCQkJCQkJY2xvc2Vzb2NrZXQoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2Vf
cmF3c2N0cDYpKTsKICNlbHNlCkBAIC0xMzExLDcgKzEzMTEsNyBAQCByZWN2X3RocmVhZF9pbml0
KHZvaWQpCiAJfQogCWlmIChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV91ZHBzY3RwNikgPT0gLTEp
IHsKIAkJaWYgKChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV91ZHBzY3RwNikgPSBzb2NrZXQoQUZf
SU5FVDYsIFNPQ0tfREdSQU0sIElQUFJPVE9fVURQKSkgPT0gLTEpIHsKLSNpZiBkZWZpbmVkKF9f
VXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJCQlTQ1RQREJHKFND
VFBfREVCVUdfVVNSLCAiQ2FuJ3QgY3JlYXRlIHNvY2tldCBmb3IgU0NUUC9VRFAvSVB2NiAoZXJy
bm8gPSAlZCkuXG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7CiAjZWxzZQogCQkJU0NUUERCRyhTQ1RQ
X0RFQlVHX1VTUiwgIkNhbid0IGNyZWF0ZSBzb2NrZXQgZm9yIFNDVFAvVURQL0lQdjYgKGVycm5v
ID0gJWQpLlxuIiwgZXJybm8pOwpAQCAtMTMxOSw3ICsxMzE5LDcgQEAgcmVjdl90aHJlYWRfaW5p
dCh2b2lkKQogCQl9CiAjaWYgZGVmaW5lZChJUFY2X1JFQ1ZQS1RJTkZPKQogCQlpZiAoc2V0c29j
a29wdChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV91ZHBzY3RwNiksIElQUFJPVE9fSVBWNiwgSVBW
Nl9SRUNWUEtUSU5GTywgKGNvbnN0IHZvaWQgKikmb24sIChpbnQpc2l6ZW9mKGludCkpIDwgMCkg
ewotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4z
MikKIAkJCVNDVFBEQkcoU0NUUF9ERUJVR19VU1IsICJDYW4ndCBzZXQgSVBWNl9SRUNWUEtUSU5G
TyBvbiBzb2NrZXQgZm9yIFNDVFAvVURQL0lQdjYgKGVycm5vID0gJWQpLlxuIiwgV1NBR2V0TGFz
dEVycm9yKCkpOwogCQkJY2xvc2Vzb2NrZXQoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfdWRwc2N0
cDYpKTsKICNlbHNlCkBAIC0xMzMwLDcgKzEzMzAsNyBAQCByZWN2X3RocmVhZF9pbml0KHZvaWQp
CiAJCX0gZWxzZSB7CiAjZWxzZQogCQlpZiAoc2V0c29ja29wdChTQ1RQX0JBU0VfVkFSKHVzZXJz
cGFjZV91ZHBzY3RwNiksIElQUFJPVE9fSVBWNiwgSVBWNl9QS1RJTkZPLCAoY29uc3Qgdm9pZCAq
KSZvbiwgKGludClzaXplb2YoaW50KSkgPCAwKSB7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9v
c19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogCQkJU0NUUERCRyhTQ1RQX0RFQlVHX1VT
UiwgIkNhbid0IHNldCBJUFY2X1BLVElORk8gb24gc29ja2V0IGZvciBTQ1RQL1VEUC9JUHY2IChl
cnJubyA9ICVkKS5cbiIsIFdTQUdldExhc3RFcnJvcigpKTsKIAkJCWNsb3Nlc29ja2V0KFNDVFBf
QkFTRV9WQVIodXNlcnNwYWNlX3VkcHNjdHA2KSk7CiAjZWxzZQpAQCAtMTM0MSwxNCArMTM0MSwx
NCBAQCByZWN2X3RocmVhZF9pbml0KHZvaWQpCiAJCX0gZWxzZSB7CiAjZW5kaWYKIAkJCWlmIChz
ZXRzb2Nrb3B0KFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNjdHA2KSwgSVBQUk9UT19JUFY2
LCBJUFY2X1Y2T05MWSwgKGNvbnN0IHZvaWQgKikmb24sIChzb2NrbGVuX3Qpc2l6ZW9mKG9uKSkg
PCAwKSB7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQo
X1dJTjMyKQogCQkJCVNDVFBEQkcoU0NUUF9ERUJVR19VU1IsICJDYW4ndCBzZXQgSVBWNl9WNk9O
TFkgb24gc29ja2V0IGZvciBTQ1RQL1VEUC9JUHY2IChlcnJubyA9ICVkKS5cbiIsIFdTQUdldExh
c3RFcnJvcigpKTsKICNlbHNlCiAJCQkJU0NUUERCRyhTQ1RQX0RFQlVHX1VTUiwgIkNhbid0IHNl
dCBJUFY2X1Y2T05MWSBvbiBzb2NrZXQgZm9yIFNDVFAvVURQL0lQdjYgKGVycm5vID0gJWQpLlxu
IiwgZXJybm8pOwogI2VuZGlmCiAJCQl9CiAJCQlpZiAoc2V0c29ja29wdChTQ1RQX0JBU0VfVkFS
KHVzZXJzcGFjZV91ZHBzY3RwNiksIFNPTF9TT0NLRVQsIFNPX1JDVlRJTUVPLCAoY29uc3Qgdm9p
ZCAqKSZ0aW1lb3V0LCBzaXplb2YodGltZW91dCkpIDwgMCkgewotI2lmIGRlZmluZWQoX19Vc2Vy
c3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIAkJCQlTQ1RQREJHKFNDVFBf
REVCVUdfVVNSLCAiQ2FuJ3Qgc2V0IHRpbWVvdXQgb24gc29ja2V0IGZvciBTQ1RQL1VEUC9JUHY2
IChlcnJubyA9ICVkKS5cbiIsIFdTQUdldExhc3RFcnJvcigpKTsKIAkJCQljbG9zZXNvY2tldChT
Q1RQX0JBU0VfVkFSKHVzZXJzcGFjZV91ZHBzY3RwNikpOwogI2Vsc2UKQEAgLTEzNjUsNyArMTM2
NSw3IEBAIHJlY3ZfdGhyZWFkX2luaXQodm9pZCkKIAkJCQlhZGRyX2lwdjYuc2luNl9wb3J0ICAg
ICAgICA9IGh0b25zKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF91ZHBfdHVubmVsaW5nX3BvcnQpKTsK
IAkJCQlhZGRyX2lwdjYuc2luNl9hZGRyICAgICAgICA9IGluNmFkZHJfYW55OwogCQkJCWlmIChi
aW5kKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNjdHA2KSwgKGNvbnN0IHN0cnVjdCBzb2Nr
YWRkciAqKSZhZGRyX2lwdjYsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSkgPCAwKSB7Ci0j
aWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQog
CQkJCQlTQ1RQREJHKFNDVFBfREVCVUdfVVNSLCAiQ2FuJ3QgYmluZCBzb2NrZXQgZm9yIFNDVFAv
VURQL0lQdjYgKGVycm5vID0gJWQpLlxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOwogCQkJCQljbG9z
ZXNvY2tldChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV91ZHBzY3RwNikpOwogI2Vsc2UKQEAgLTEz
ODEsNyArMTM4MSw3IEBAIHJlY3ZfdGhyZWFkX2luaXQodm9pZCkKIAkJfQogCX0KICNlbmRpZgot
I2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRGFyd2luKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNl
X29zX0RyYWdvbkZseSkgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19GcmVlQlNEKQorI2lmIGRl
ZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pIHx8IGRlZmluZWQoX19G
cmVlQlNEX18pCiAjaWYgZGVmaW5lZChJTkVUKSB8fCBkZWZpbmVkKElORVQ2KQogCWlmIChTQ1RQ
X0JBU0VfVkFSKHVzZXJzcGFjZV9yb3V0ZSkgIT0gLTEpIHsKIAkJaW50IHJjOwpAQCAtMTQwMCw3
ICsxNDAwLDcgQEAgcmVjdl90aHJlYWRfaW5pdCh2b2lkKQogCiAJCWlmICgocmMgPSBzY3RwX3Vz
ZXJzcGFjZV90aHJlYWRfY3JlYXRlKCZTQ1RQX0JBU0VfVkFSKHJlY3Z0aHJlYWRyYXcpLCAmcmVj
dl9mdW5jdGlvbl9yYXcpKSkgewogCQkJU0NUUERCRyhTQ1RQX0RFQlVHX1VTUiwgIkNhbid0IHN0
YXJ0IFNDVFAvSVB2NCByZWN2IHRocmVhZCAoJWQpLlxuIiwgcmMpOwotI2lmIGRlZmluZWQoX19V
c2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIAkJCWNsb3Nlc29ja2V0
KFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jhd3NjdHApKTsKICNlbHNlCiAJCQljbG9zZShTQ1RQ
X0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3RwKSk7CkBAIC0xNDEzLDcgKzE0MTMsNyBAQCByZWN2
X3RocmVhZF9pbml0KHZvaWQpCiAKIAkJaWYgKChyYyA9IHNjdHBfdXNlcnNwYWNlX3RocmVhZF9j
cmVhdGUoJlNDVFBfQkFTRV9WQVIocmVjdnRocmVhZHVkcCksICZyZWN2X2Z1bmN0aW9uX3VkcCkp
KSB7CiAJCQlTQ1RQREJHKFNDVFBfREVCVUdfVVNSLCAiQ2FuJ3Qgc3RhcnQgU0NUUC9VRFAvSVB2
NCByZWN2IHRocmVhZCAoJWQpLlxuIiwgcmMpOwotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3Nf
V2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIAkJCWNsb3Nlc29ja2V0KFNDVFBfQkFTRV9W
QVIodXNlcnNwYWNlX3VkcHNjdHApKTsKICNlbHNlCiAJCQljbG9zZShTQ1RQX0JBU0VfVkFSKHVz
ZXJzcGFjZV91ZHBzY3RwKSk7CkBAIC0xNDI4LDcgKzE0MjgsNyBAQCByZWN2X3RocmVhZF9pbml0
KHZvaWQpCiAKIAkJaWYgKChyYyA9IHNjdHBfdXNlcnNwYWNlX3RocmVhZF9jcmVhdGUoJlNDVFBf
QkFTRV9WQVIocmVjdnRocmVhZHJhdzYpLCAmcmVjdl9mdW5jdGlvbl9yYXc2KSkpIHsKIAkJCVND
VFBEQkcoU0NUUF9ERUJVR19VU1IsICJDYW4ndCBzdGFydCBTQ1RQL0lQdjYgcmVjdiB0aHJlYWQg
KCVkKS5cbiIsIHJjKTsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYg
ZGVmaW5lZChfV0lOMzIpCiAJCQljbG9zZXNvY2tldChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9y
YXdzY3RwNikpOwogI2Vsc2UKIAkJCWNsb3NlKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jhd3Nj
dHA2KSk7CkBAIC0xNDQxLDcgKzE0NDEsNyBAQCByZWN2X3RocmVhZF9pbml0KHZvaWQpCiAKIAkJ
aWYgKChyYyA9IHNjdHBfdXNlcnNwYWNlX3RocmVhZF9jcmVhdGUoJlNDVFBfQkFTRV9WQVIocmVj
dnRocmVhZHVkcDYpLCAmcmVjdl9mdW5jdGlvbl91ZHA2KSkpIHsKIAkJCVNDVFBEQkcoU0NUUF9E
RUJVR19VU1IsICJDYW4ndCBzdGFydCBTQ1RQL1VEUC9JUHY2IHJlY3YgdGhyZWFkICglZCkuXG4i
LCByYyk7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQo
X1dJTjMyKQogCQkJY2xvc2Vzb2NrZXQoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfdWRwc2N0cDYp
KTsKICNlbHNlCiAJCQljbG9zZShTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV91ZHBzY3RwNikpOwpA
QCAtMTQ1NSw0MiArMTQ1NSw2MyBAQCByZWN2X3RocmVhZF9pbml0KHZvaWQpCiB2b2lkCiByZWN2
X3RocmVhZF9kZXN0cm95KHZvaWQpCiB7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19EYXJ3
aW4pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRHJhZ29uRmx5KSB8fCBkZWZpbmVkKF9fVXNl
cnNwYWNlX29zX0ZyZWVCU0QpCisjaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19E
cmFnb25GbHlfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykKICNpZiBkZWZpbmVkKElORVQpIHx8
IGRlZmluZWQoSU5FVDYpCiAJaWYgKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3JvdXRlKSAhPSAt
MSkgewogCQljbG9zZShTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yb3V0ZSkpOworCQlwdGhyZWFk
X2pvaW4oU0NUUF9CQVNFX1ZBUihyZWN2dGhyZWFkcm91dGUpLCBOVUxMKTsKIAl9CiAjZW5kaWYK
ICNlbmRpZgogI2lmIGRlZmluZWQoSU5FVCkKIAlpZiAoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2Vf
cmF3c2N0cCkgIT0gLTEpIHsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisj
aWYgZGVmaW5lZChfV0lOMzIpCiAJCWNsb3Nlc29ja2V0KFNDVFBfQkFTRV9WQVIodXNlcnNwYWNl
X3Jhd3NjdHApKTsKKwkJU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfcmF3c2N0cCkgPSAtMTsKKwkJ
V2FpdEZvclNpbmdsZU9iamVjdChTQ1RQX0JBU0VfVkFSKHJlY3Z0aHJlYWRyYXcpLCBJTkZJTklU
RSk7CisJCUNsb3NlSGFuZGxlKFNDVFBfQkFTRV9WQVIocmVjdnRocmVhZHJhdykpOwogI2Vsc2UK
IAkJY2xvc2UoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfcmF3c2N0cCkpOworCQlTQ1RQX0JBU0Vf
VkFSKHVzZXJzcGFjZV9yYXdzY3RwKSA9IC0xOworCQlwdGhyZWFkX2pvaW4oU0NUUF9CQVNFX1ZB
UihyZWN2dGhyZWFkcmF3KSwgTlVMTCk7CiAjZW5kaWYKIAl9CiAJaWYgKFNDVFBfQkFTRV9WQVIo
dXNlcnNwYWNlX3VkcHNjdHApICE9IC0xKSB7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19X
aW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogCQljbG9zZXNvY2tldChTQ1RQX0JBU0VfVkFS
KHVzZXJzcGFjZV91ZHBzY3RwKSk7CisJCVNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNjdHAp
ID0gLTE7CisJCVdhaXRGb3JTaW5nbGVPYmplY3QoU0NUUF9CQVNFX1ZBUihyZWN2dGhyZWFkdWRw
KSwgSU5GSU5JVEUpOworCQlDbG9zZUhhbmRsZShTQ1RQX0JBU0VfVkFSKHJlY3Z0aHJlYWR1ZHAp
KTsKICNlbHNlCiAJCWNsb3NlKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNjdHApKTsKKwkJ
U0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfdWRwc2N0cCkgPSAtMTsKKwkJcHRocmVhZF9qb2luKFND
VFBfQkFTRV9WQVIocmVjdnRocmVhZHVkcCksIE5VTEwpOwogI2VuZGlmCiAJfQogI2VuZGlmCiAj
aWYgZGVmaW5lZChJTkVUNikKIAlpZiAoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfcmF3c2N0cDYp
ICE9IC0xKSB7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmlu
ZWQoX1dJTjMyKQogCQljbG9zZXNvY2tldChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3Rw
NikpOworCQlTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3RwNikgPSAtMTsKKwkJV2FpdEZv
clNpbmdsZU9iamVjdChTQ1RQX0JBU0VfVkFSKHJlY3Z0aHJlYWRyYXc2KSwgSU5GSU5JVEUpOwor
CQlDbG9zZUhhbmRsZShTQ1RQX0JBU0VfVkFSKHJlY3Z0aHJlYWRyYXc2KSk7CiAjZWxzZQogCQlj
bG9zZShTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3RwNikpOworCQlTQ1RQX0JBU0VfVkFS
KHVzZXJzcGFjZV9yYXdzY3RwNikgPSAtMTsKKwkJcHRocmVhZF9qb2luKFNDVFBfQkFTRV9WQVIo
cmVjdnRocmVhZHJhdzYpLCBOVUxMKTsKICNlbmRpZgogCX0KIAlpZiAoU0NUUF9CQVNFX1ZBUih1
c2Vyc3BhY2VfdWRwc2N0cDYpICE9IC0xKSB7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19X
aW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQorCQlTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV91
ZHBzY3RwNikgPSAtMTsKIAkJY2xvc2Vzb2NrZXQoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfdWRw
c2N0cDYpKTsKKwkJV2FpdEZvclNpbmdsZU9iamVjdChTQ1RQX0JBU0VfVkFSKHJlY3Z0aHJlYWR1
ZHA2KSwgSU5GSU5JVEUpOworCQlDbG9zZUhhbmRsZShTQ1RQX0JBU0VfVkFSKHJlY3Z0aHJlYWR1
ZHA2KSk7CiAjZWxzZQogCQljbG9zZShTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV91ZHBzY3RwNikp
OworCQlTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV91ZHBzY3RwNikgPSAtMTsKKwkJcHRocmVhZF9q
b2luKFNDVFBfQkFTRV9WQVIocmVjdnRocmVhZHVkcDYpLCBOVUxMKTsKICNlbmRpZgogCX0KICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX3JlY3ZfdGhyZWFkLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAv
dXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfcmVjdl90aHJlYWQuaApvbGQgbW9kZSAxMDA2NDQK
bmV3IG1vZGUgMTAwNzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfcm91
dGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNy
c2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9yb3V0ZS5oCm9sZCBtb2RlIDEwMDY0NApu
ZXcgbW9kZSAxMDA3NTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9zb2Nr
ZXQuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNy
c2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9zb2NrZXQuYwpvbGQgbW9kZSAxMDA2NDQK
bmV3IG1vZGUgMTAwNzU1CmluZGV4IDlmZTY5NzZhMGM3ODdmYjZkMGU1OWYyYWVhMTAzMTJlNTc1
NmM2YjQuLjE2ZjRkZWNlYmE0NzA5Mjc5ZWIzZTI2YjMwOGY0MDc5OWI4ODExMDEKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNj
dHBsaWIvdXNyc2N0cGxpYi91c2VyX3NvY2tldC5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIv
dXNlcl9zb2NrZXQuYwpAQCAtMzksMTcgKzM5LDE4IEBACiAjaW5jbHVkZSA8bmV0aW5ldC9zY3Rw
X3N5c2N0bC5oPgogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9pbnB1dC5oPgogI2luY2x1ZGUgPG5l
dGluZXQvc2N0cF9wZWVsb2ZmLmg+CisjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX2NhbGxvdXQuaD4K
ICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfY3JjMzIuaD4KICNpZmRlZiBJTkVUNgogI2luY2x1ZGUg
PG5ldGluZXQ2L3NjdHA2X3Zhci5oPgogI2VuZGlmCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9v
c19GcmVlQlNEKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCiAjaW5jbHVkZSA8c3lzL3BhcmFt
Lmg+CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0xpbnV4KQorI2lmIGRlZmlu
ZWQoX19saW51eF9fKQogI2RlZmluZSBfX0ZBVk9SX0JTRCAgICAvKiAob24gVWJ1bnR1IGF0IGxl
YXN0KSBlbmFibGVzIFVEUCBoZWFkZXIgZmllbGQgbmFtZXMgbGlrZSBCU0QgaW4gUkZDIDc2OCAq
LwogI2VuZGlmCi0jaWYgIWRlZmluZWQgKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgIWRl
ZmluZWQoX1dJTjMyKQogI2lmIGRlZmluZWQgSU5FVCB8fCBkZWZpbmVkIElORVQ2CiAjaW5jbHVk
ZSA8bmV0aW5ldC91ZHAuaD4KICNlbmRpZgpAQCAtNzcsMTIgKzc4LDggQEAgZXh0ZXJuIGludCBz
Y3RwX3Nvc2VuZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRyLCBzdHJ1
Y3QgdWlvICp1aW8KIGV4dGVybiBpbnQgc2N0cF9hdHRhY2goc3RydWN0IHNvY2tldCAqc28sIGlu
dCBwcm90bywgdWludDMyX3QgdnJmX2lkKTsKIGV4dGVybiBpbnQgc2N0cGNvbm5fYXR0YWNoKHN0
cnVjdCBzb2NrZXQgKnNvLCBpbnQgcHJvdG8sIHVpbnQzMl90IHZyZl9pZCk7CiAKLXZvaWQKLXVz
cnNjdHBfaW5pdCh1aW50MTZfdCBwb3J0LAotICAgICAgICAgICAgIGludCAoKmNvbm5fb3V0cHV0
KSh2b2lkICphZGRyLCB2b2lkICpidWZmZXIsIHNpemVfdCBsZW5ndGgsIHVpbnQ4X3QgdG9zLCB1
aW50OF90IHNldF9kZiksCi0gICAgICAgICAgICAgdm9pZCAoKmRlYnVnX3ByaW50ZikoY29uc3Qg
Y2hhciAqZm9ybWF0LCAuLi4pKQotewotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93
cykKK3N0YXRpYyB2b2lkIGluaXRfc3luYyh2b2lkKSB7CisjaWYgZGVmaW5lZChfV0lOMzIpCiAj
aWYgZGVmaW5lZChJTkVUKSB8fCBkZWZpbmVkKElORVQ2KQogCVdTQURBVEEgd3NhRGF0YTsKIApA
QCAtMTA0LDcgKzEwMSwyNSBAQCB1c3JzY3RwX2luaXQodWludDE2X3QgcG9ydCwKIAlwdGhyZWFk
X211dGV4YXR0cl9kZXN0cm95KCZtdXRleF9hdHRyKTsKIAlwdGhyZWFkX2NvbmRfaW5pdCgmYWNj
ZXB0X2NvbmQsIE5VTEwpOwogI2VuZGlmCi0Jc2N0cF9pbml0KHBvcnQsIGNvbm5fb3V0cHV0LCBk
ZWJ1Z19wcmludGYpOworfQorCit2b2lkCit1c3JzY3RwX2luaXQodWludDE2X3QgcG9ydCwKKyAg
ICAgICAgICAgICBpbnQgKCpjb25uX291dHB1dCkodm9pZCAqYWRkciwgdm9pZCAqYnVmZmVyLCBz
aXplX3QgbGVuZ3RoLCB1aW50OF90IHRvcywgdWludDhfdCBzZXRfZGYpLAorICAgICAgICAgICAg
IHZvaWQgKCpkZWJ1Z19wcmludGYpKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKSkKK3sKKwlpbml0
X3N5bmMoKTsKKwlzY3RwX2luaXQocG9ydCwgY29ubl9vdXRwdXQsIGRlYnVnX3ByaW50ZiwgMSk7
Cit9CisKKwordm9pZAordXNyc2N0cF9pbml0X25vdGhyZWFkcyh1aW50MTZfdCBwb3J0LAorCQkg
ICAgICAgaW50ICgqY29ubl9vdXRwdXQpKHZvaWQgKmFkZHIsIHZvaWQgKmJ1ZmZlciwgc2l6ZV90
IGxlbmd0aCwgdWludDhfdCB0b3MsIHVpbnQ4X3Qgc2V0X2RmKSwKKwkJICAgICAgIHZvaWQgKCpk
ZWJ1Z19wcmludGYpKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKSkKK3sKKwlpbml0X3N5bmMoKTsK
KwlzY3RwX2luaXQocG9ydCwgY29ubl9vdXRwdXQsIGRlYnVnX3ByaW50ZiwgMCk7CiB9CiAKIApA
QCAtMTU0LDI4ICsxNjksMTcgQEAgc29jYW50c2VuZG1vcmUoc3RydWN0IHNvY2tldCAqc28pCiBp
bnQKIHNid2FpdChzdHJ1Y3Qgc29ja2J1ZiAqc2IpCiB7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKSAvKiBfX1VzZXJzcGFjZV9fICovCi0KIAlTT0NLQlVGX0xPQ0tfQVNTRVJUKHNiKTsKIAog
CXNiLT5zYl9mbGFncyB8PSBTQl9XQUlUOwotI2lmIGRlZmluZWQgKF9fVXNlcnNwYWNlX29zX1dp
bmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJaWYgKFNsZWVwQ29uZGl0aW9uVmFyaWFibGVD
UygmKHNiLT5zYl9jb25kKSwgJihzYi0+c2JfbXR4KSwgSU5GSU5JVEUpKQotCQlyZXR1cm4gMDsK
KwkJcmV0dXJuICgwKTsKIAllbHNlCi0JCXJldHVybiAtMTsKKwkJcmV0dXJuICgtMSk7CiAjZWxz
ZQogCXJldHVybiAocHRocmVhZF9jb25kX3dhaXQoJihzYi0+c2JfY29uZCksICYoc2ItPnNiX210
eCkpKTsKICNlbmRpZgotCi0jZWxzZQotCVNPQ0tCVUZfTE9DS19BU1NFUlQoc2IpOwotCi0Jc2It
PnNiX2ZsYWdzIHw9IFNCX1dBSVQ7Ci0JcmV0dXJuIChtc2xlZXAoJnNiLT5zYl9jYywgJnNiLT5z
Yl9tdHgsCi0JICAgIChzYi0+c2JfZmxhZ3MgJiBTQl9OT0lOVFIpID8gUFNPQ0sgOiBQU09DSyB8
IFBDQVRDSCwgInNid2FpdCIsCi0JICAgIHNiLT5zYl90aW1lbykpOwotI2VuZGlmCiB9CiAKIApA
QCAtMzQ2LDIxICszNTAsMjEgQEAgdm9pZAogc29pc2Rpc2Nvbm5lY3Rpbmcoc3RydWN0IHNvY2tl
dCAqc28pCiB7CiAKLSAgICAgICAgLyoKLSAgICAgICAgICogTm90ZTogVGhpcyBjb2RlIGFzc3Vt
ZXMgdGhhdCBTT0NLX0xPQ0soc28pIGFuZAotICAgICAgICAgKiBTT0NLQlVGX0xPQ0soJnNvLT5z
b19yY3YpIGFyZSB0aGUgc2FtZS4KLSAgICAgICAgICovCi0gICAgICAgIFNPQ0tCVUZfTE9DSygm
c28tPnNvX3Jjdik7Ci0gICAgICAgIHNvLT5zb19zdGF0ZSAmPSB+U1NfSVNDT05ORUNUSU5HOwot
ICAgICAgICBzby0+c29fc3RhdGUgfD0gU1NfSVNESVNDT05ORUNUSU5HOwotICAgICAgICBzby0+
c29fcmN2LnNiX3N0YXRlIHw9IFNCU19DQU5UUkNWTU9SRTsKLSAgICAgICAgc29yd2FrZXVwX2xv
Y2tlZChzbyk7Ci0gICAgICAgIFNPQ0tCVUZfTE9DSygmc28tPnNvX3NuZCk7Ci0gICAgICAgIHNv
LT5zb19zbmQuc2Jfc3RhdGUgfD0gU0JTX0NBTlRTRU5ETU9SRTsKLSAgICAgICAgc293d2FrZXVw
X2xvY2tlZChzbyk7Ci0gICAgICAgIHdha2V1cCgiZHVtbXkiLHNvKTsKLSAgICAgICAgLyogcmVx
dWlyZXMgMiBhcmdzIGJ1dCB0aGlzIHdhcyBpbiBvcmlnICovCi0gICAgICAgIC8qIHdha2V1cCgm
c28tPnNvX3RpbWVvKTsgKi8KKwkvKgorCSAqIE5vdGU6IFRoaXMgY29kZSBhc3N1bWVzIHRoYXQg
U09DS19MT0NLKHNvKSBhbmQKKwkgKiBTT0NLQlVGX0xPQ0soJnNvLT5zb19yY3YpIGFyZSB0aGUg
c2FtZS4KKwkgKi8KKwlTT0NLQlVGX0xPQ0soJnNvLT5zb19yY3YpOworCXNvLT5zb19zdGF0ZSAm
PSB+U1NfSVNDT05ORUNUSU5HOworCXNvLT5zb19zdGF0ZSB8PSBTU19JU0RJU0NPTk5FQ1RJTkc7
CisJc28tPnNvX3Jjdi5zYl9zdGF0ZSB8PSBTQlNfQ0FOVFJDVk1PUkU7CisJc29yd2FrZXVwX2xv
Y2tlZChzbyk7CisJU09DS0JVRl9MT0NLKCZzby0+c29fc25kKTsKKwlzby0+c29fc25kLnNiX3N0
YXRlIHw9IFNCU19DQU5UU0VORE1PUkU7CisJc293d2FrZXVwX2xvY2tlZChzbyk7CisJd2FrZXVw
KCJkdW1teSIsc28pOworCS8qIHJlcXVpcmVzIDIgYXJncyBidXQgdGhpcyB3YXMgaW4gb3JpZyAq
LworCS8qIHdha2V1cCgmc28tPnNvX3RpbWVvKTsgKi8KIH0KIAogCkBAIC0zNzksNyArMzgzLDcg
QEAgdm9pZAogd2FrZXVwKHZvaWQgKmlkZW50LCBzdHJ1Y3Qgc29ja2V0ICpzbykKIHsKIAlTT0NL
X0xPQ0soc28pOwotI2lmIGRlZmluZWQgKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVm
aW5lZChfV0lOMzIpCiAJV2FrZUFsbENvbmRpdGlvblZhcmlhYmxlKCYoc28pLT50aW1lb19jb25k
KTsKICNlbHNlCiAJcHRocmVhZF9jb25kX2Jyb2FkY2FzdCgmKHNvKS0+dGltZW9fY29uZCk7CkBA
IC00MDUsNyArNDA5LDcgQEAgd2FrZXVwX29uZSh2b2lkICppZGVudCkKIAkgIHN1YnNpZGlhcnkg
c29ja2V0cy4KIAkgKi8KIAlBQ0NFUFRfTE9DSygpOwotI2lmIGRlZmluZWQgKF9fVXNlcnNwYWNl
X29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJV2FrZUFsbENvbmRpdGlvblZhcmlh
YmxlKCZhY2NlcHRfY29uZCk7CiAjZWxzZQogCXB0aHJlYWRfY29uZF9icm9hZGNhc3QoJmFjY2Vw
dF9jb25kKTsKQEAgLTU1MywyOCArNTU3LDYgQEAgc29uZXdjb25uKHN0cnVjdCBzb2NrZXQgKmhl
YWQsIGludCBjb25uc3RhdHVzKQogCiB9CiAKLS8qIEZyb20gL3NyYy9zeXMvc3lzL3N5c3Byb3Rv
LmggKi8KLXN0cnVjdCBzY3RwX2dlbmVyaWNfc2VuZG1zZ19hcmdzIHsKLQlpbnQgc2Q7Ci0JY2Fk
ZHJfdCBtc2c7Ci0JaW50IG1sZW47Ci0JY2FkZHJfdCB0bzsKLQlzb2NrbGVuX3QgdG9sZW47ICAv
KiB3YXMgX19zb2NrbGVuX3QgKi8KLQlzdHJ1Y3Qgc2N0cF9zbmRyY3ZpbmZvICogc2luZm87Ci0J
aW50IGZsYWdzOwotfTsKLQotc3RydWN0IHNjdHBfZ2VuZXJpY19yZWN2bXNnX2FyZ3MgewotICAg
ICAgICBpbnQgc2Q7Ci0gICAgICAgIHN0cnVjdCBpb3ZlYyAqaW92OwotICAgICAgICBpbnQgaW92
bGVuOwotICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIgKmZyb207Ci0gICAgICAgIHNvY2tsZW5fdCAq
ZnJvbWxlbmFkZHI7IC8qIHdhcyBfX3NvY2tsZW5fdCAqLwotICAgICAgICBzdHJ1Y3Qgc2N0cF9z
bmRyY3ZpbmZvICpzaW5mbzsKLSAgICAgICAgaW50ICptc2dfZmxhZ3M7Ci19OwotCi0KICAvKgog
ICAgU291cmNlOiAvc3JjL3N5cy9nbnUvZnMveGZzL0ZyZWVCU0QveGZzX2lvY3RsLmMKICAqLwpA
QCAtNzU5LDExICs3NDEsMTEgQEAgdXNlcnNwYWNlX3NjdHBfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0
ICpzbywKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgc3RydWN0IHNvY2thZGRyICp0bywKICAgICAgICAgICAgICAgICAgICAgICAgc29j
a2xlbl90IHRvbGVuLAotICAgICAgICAgICAgICAgICAgICAgICB1X2ludDMyX3QgcHBpZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgdV9pbnQzMl90IGZsYWdzLAotICAgICAgICAgICAgICAgICAg
ICAgICB1X2ludDE2X3Qgc3RyZWFtX25vLAotICAgICAgICAgICAgICAgICAgICAgICB1X2ludDMy
X3QgdGltZXRvbGl2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQzMl90IGNvbnRleHQp
CisgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHBwaWQsCisgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQzMl90IGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBz
dHJlYW1fbm8sCisgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHRpbWV0b2xpdmUsCisg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGNvbnRleHQpCiB7CiAJc3RydWN0IHNjdHBf
c25kcmN2aW5mbyBzbmRyY3ZpbmZvLCAqc2luZm8gPSAmc25kcmN2aW5mbzsKIAlzdHJ1Y3QgdWlv
IGF1aW87CkBAIC05NDMsNTkgKzkyNSw1OCBAQCB1c2Vyc3BhY2Vfc2N0cF9zZW5kbWJ1ZihzdHJ1
Y3Qgc29ja2V0ICpzbywKICAgICBzaXplX3QgbGVuLAogICAgIHN0cnVjdCBzb2NrYWRkciAqdG8s
CiAgICAgc29ja2xlbl90IHRvbGVuLAotICAgIHVfaW50MzJfdCBwcGlkLAotICAgIHVfaW50MzJf
dCBmbGFncywKLSAgICB1X2ludDE2X3Qgc3RyZWFtX25vLAotICAgIHVfaW50MzJfdCB0aW1ldG9s
aXZlLAotICAgIHVfaW50MzJfdCBjb250ZXh0KQotewotCi0gICAgc3RydWN0IHNjdHBfc25kcmN2
aW5mbyBzbmRyY3ZpbmZvLCAqc2luZm8gPSAmc25kcmN2aW5mbzsKLSAgICAvKiAgICBzdHJ1Y3Qg
dWlvIGF1aW87Ci0gICAgICAgICAgc3RydWN0IGlvdmVjIGlvdlsxXTsgKi8KLSAgICBpbnQgZXJy
b3IgPSAwOwotICAgIGludCB1ZmxhZ3MgPSAwOwotICAgIHNzaXplX3QgcmV0dmFsOwotCi0gICAg
c2luZm8tPnNpbmZvX3BwaWQgPSBwcGlkOwotICAgIHNpbmZvLT5zaW5mb19mbGFncyA9IGZsYWdz
OwotICAgIHNpbmZvLT5zaW5mb19zdHJlYW0gPSBzdHJlYW1fbm87Ci0gICAgc2luZm8tPnNpbmZv
X3RpbWV0b2xpdmUgPSB0aW1ldG9saXZlOwotICAgIHNpbmZvLT5zaW5mb19jb250ZXh0ID0gY29u
dGV4dDsKLSAgICBzaW5mby0+c2luZm9fYXNzb2NfaWQgPSAwOwotCi0gICAgLyogUGVyZm9ybSBl
cnJvciBjaGVja3Mgb24gZGVzdGluYXRpb24gKHRvKSAqLwotICAgIGlmICh0b2xlbiA+IFNPQ0tf
TUFYQUREUkxFTil7Ci0gICAgICAgIGVycm9yID0gKEVOQU1FVE9PTE9ORyk7Ci0gICAgICAgIGdv
dG8gc2VuZG1zZ19yZXR1cm47Ci0gICAgfQotICAgIGlmICh0b2xlbiA8IChzb2NrbGVuX3Qpb2Zm
c2V0b2Yoc3RydWN0IHNvY2thZGRyLCBzYV9kYXRhKSl7Ci0gICAgICAgIGVycm9yID0gKEVJTlZB
TCk7Ci0gICAgICAgIGdvdG8gc2VuZG1zZ19yZXR1cm47Ci0gICAgfQotICAgIC8qIEFkZGluZyB0
aGUgZm9sbG93aW5nIGFzIHBhcnQgb2YgZGVmZW5zaXZlIHByb2dyYW1taW5nLCBpbiBjYXNlIHRo
ZSBhcHBsaWNhdGlvbgotICAgICAgIGRvZXMgbm90IGRvIGl0IHdoZW4gcHJlcGFyaW5nIHRoZSBk
ZXN0aW5hdGlvbiBhZGRyZXNzLiovCisgICAgdWludDMyX3QgcHBpZCwKKyAgICB1aW50MzJfdCBm
bGFncywKKyAgICB1aW50MTZfdCBzdHJlYW1fbm8sCisgICAgdWludDMyX3QgdGltZXRvbGl2ZSwK
KyAgICB1aW50MzJfdCBjb250ZXh0KQoreworCisJc3RydWN0IHNjdHBfc25kcmN2aW5mbyBzbmRy
Y3ZpbmZvLCAqc2luZm8gPSAmc25kcmN2aW5mbzsKKwkvKiAgICBzdHJ1Y3QgdWlvIGF1aW87CisJ
ICAgICAgc3RydWN0IGlvdmVjIGlvdlsxXTsgKi8KKwlpbnQgZXJyb3IgPSAwOworCWludCB1Zmxh
Z3MgPSAwOworCXNzaXplX3QgcmV0dmFsOworCisJc2luZm8tPnNpbmZvX3BwaWQgPSBwcGlkOwor
CXNpbmZvLT5zaW5mb19mbGFncyA9IGZsYWdzOworCXNpbmZvLT5zaW5mb19zdHJlYW0gPSBzdHJl
YW1fbm87CisJc2luZm8tPnNpbmZvX3RpbWV0b2xpdmUgPSB0aW1ldG9saXZlOworCXNpbmZvLT5z
aW5mb19jb250ZXh0ID0gY29udGV4dDsKKwlzaW5mby0+c2luZm9fYXNzb2NfaWQgPSAwOworCisJ
LyogUGVyZm9ybSBlcnJvciBjaGVja3Mgb24gZGVzdGluYXRpb24gKHRvKSAqLworCWlmICh0b2xl
biA+IFNPQ0tfTUFYQUREUkxFTil7CisJCWVycm9yID0gKEVOQU1FVE9PTE9ORyk7CisJCWdvdG8g
c2VuZG1zZ19yZXR1cm47CisJfQorCWlmICh0b2xlbiA8IChzb2NrbGVuX3Qpb2Zmc2V0b2Yoc3Ry
dWN0IHNvY2thZGRyLCBzYV9kYXRhKSl7CisJCWVycm9yID0gKEVJTlZBTCk7CisJCWdvdG8gc2Vu
ZG1zZ19yZXR1cm47CisJfQorCS8qIEFkZGluZyB0aGUgZm9sbG93aW5nIGFzIHBhcnQgb2YgZGVm
ZW5zaXZlIHByb2dyYW1taW5nLCBpbiBjYXNlIHRoZSBhcHBsaWNhdGlvbgorCSAgIGRvZXMgbm90
IGRvIGl0IHdoZW4gcHJlcGFyaW5nIHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzLiovCiAjaWZkZWYg
SEFWRV9TQV9MRU4KLSAgICB0by0+c2FfbGVuID0gdG9sZW47CisJdG8tPnNhX2xlbiA9IHRvbGVu
OwogI2VuZGlmCiAKLSAgICBlcnJvciA9IHNjdHBfbG93ZXJfc29zZW5kKHNvLCB0bywgTlVMTC8q
dWlvKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IG1idWYgKiltYnVm
ZGF0YSwgKHN0cnVjdCBtYnVmICopTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVmbGFncywgc2luZm8pOworCWVycm9yID0gc2N0cF9sb3dlcl9zb3NlbmQoc28sIHRvLCBOVUxM
Lyp1aW8qLywKKwkgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBtYnVmICopbWJ1ZmRh
dGEsIChzdHJ1Y3QgbWJ1ZiAqKU5VTEwsCisJICAgICAgICAgICAgICAgICAgICAgICAgIHVmbGFn
cywgc2luZm8pOwogc2VuZG1zZ19yZXR1cm46Ci0gICAgLyogVE9ETzogTmVlZHMgYSBjb25kaXRp
b24gZm9yIG5vbi1ibG9ja2luZyB3aGVuIGVycm9yIGlzIEVXT1VMREJMT0NLICovCi0gICAgaWYg
KDAgPT0gZXJyb3IpCi0gICAgICAgIHJldHZhbCA9IGxlbjsKLSAgICBlbHNlIGlmIChlcnJvciA9
PSBFV09VTERCTE9DSykgewotICAgICAgICBlcnJubyA9IEVXT1VMREJMT0NLOwotICAgICAgICBy
ZXR2YWwgPSAtMTsKLSAgICB9IGVsc2UgewotICAgICAgICBTQ1RQX1BSSU5URigiJXM6IGVycm9y
ID0gJWRcbiIsIF9fZnVuY19fLCBlcnJvcik7Ci0gICAgICAgIGVycm5vID0gZXJyb3I7Ci0gICAg
ICAgIHJldHZhbCA9IC0xOwotICAgIH0KLSAgICByZXR1cm4gKHJldHZhbCk7Ci0KKwkvKiBUT0RP
OiBOZWVkcyBhIGNvbmRpdGlvbiBmb3Igbm9uLWJsb2NraW5nIHdoZW4gZXJyb3IgaXMgRVdPVUxE
QkxPQ0sgKi8KKwlpZiAoMCA9PSBlcnJvcikKKwkJcmV0dmFsID0gbGVuOworCWVsc2UgaWYgKGVy
cm9yID09IEVXT1VMREJMT0NLKSB7CisJCWVycm5vID0gRVdPVUxEQkxPQ0s7CisJCXJldHZhbCA9
IC0xOworCX0gZWxzZSB7CisJCVNDVFBfUFJJTlRGKCIlczogZXJyb3IgPSAlZFxuIiwgX19mdW5j
X18sIGVycm9yKTsKKwkJZXJybm8gPSBlcnJvcjsKKwkJcmV0dmFsID0gLTE7CisJfQorCXJldHVy
biAocmV0dmFsKTsKIH0KIAogCkBAIC0xMDU0LDcgKzEwMzUsNyBAQCB1c2Vyc3BhY2Vfc2N0cF9y
ZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvLAogCWlmIChlcnJvcikgewogCQlpZiAoKGF1aW8udWlv
X3Jlc2lkICE9IHVsZW4pICYmCiAJCSAgICAoZXJyb3IgPT0gRUlOVFIgfHwKLSNpZiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9vc19OZXRCU0QpCisjaWYgIWRlZmluZWQoX19OZXRCU0RfXykKIAkJICAg
ICBlcnJvciA9PSBFUkVTVEFSVCB8fAogI2VuZGlmCiAJCSAgICAgZXJyb3IgPT0gRVdPVUxEQkxP
Q0spKSB7CkBAIC0xMTQ3LDEzICsxMTI4LDE2IEBAIHVzcnNjdHBfcmVjdnYoc3RydWN0IHNvY2tl
dCAqc28sCiAJaWYgKGVycm5vKSB7CiAJCWlmICgoYXVpby51aW9fcmVzaWQgIT0gdWxlbikgJiYK
IAkJICAgIChlcnJubyA9PSBFSU5UUiB8fAotI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX05l
dEJTRCkKKyNpZiAhZGVmaW5lZChfX05ldEJTRF9fKQogCQkgICAgIGVycm5vID09IEVSRVNUQVJU
IHx8CiAjZW5kaWYKIAkJICAgICBlcnJubyA9PSBFV09VTERCTE9DSykpIHsKIAkJCWVycm5vID0g
MDsKIAkJfQogCX0KKwlpZiAoZXJybm8gIT0gMCkgeworCQlnb3RvIG91dDsKKwl9CiAJaWYgKCgq
bXNnX2ZsYWdzICYgTVNHX05PVElGSUNBVElPTikgPT0gMCkgewogCQlzdHJ1Y3Qgc2N0cF9pbnBj
YiAqaW5wOwogCkBAIC0xMjA1LDcgKzExODksMTAgQEAgdXNyc2N0cF9yZWN2dihzdHJ1Y3Qgc29j
a2V0ICpzbywKIAkJCSppbmZvbGVuID0gMDsKIAkJfQogCX0KLQlpZiAoKGZyb21sZW5wICE9IE5V
TEwpICYmIChmcm9tbGVuID4gMCkgJiYgKGZyb20gIT0gTlVMTCkpIHsKKwlpZiAoKGZyb21sZW5w
ICE9IE5VTEwpICYmCisJICAgIChmcm9tbGVuID4gMCkgJiYKKwkgICAgKGZyb20gIT0gTlVMTCkg
JiYKKwkgICAgKHVsZW4gPiBhdWlvLnVpb19yZXNpZCkpIHsKIAkJc3dpdGNoIChmcm9tLT5zYV9m
YW1pbHkpIHsKICNpZiBkZWZpbmVkKElORVQpCiAJCWNhc2UgQUZfSU5FVDoKQEAgLTEyMjgsNiAr
MTIxNSw3IEBAIHVzcnNjdHBfcmVjdnYoc3RydWN0IHNvY2tldCAqc28sCiAJCQkqZnJvbWxlbnAg
PSBmcm9tbGVuOwogCQl9CiAJfQorb3V0OgogCWlmIChlcnJubyA9PSAwKSB7CiAJCS8qIHJlYWR5
IHJldHVybiB2YWx1ZSAqLwogCQlyZXR1cm4gKHVsZW4gLSBhdWlvLnVpb19yZXNpZCk7CkBAIC0x
MjM5LDcgKzEyMjcsNiBAQCB1c3JzY3RwX3JlY3Z2KHN0cnVjdCBzb2NrZXQgKnNvLAogCiAKIAot
I2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIC8qIFRha2VuIGZyb20gIC9zcmMvc3lzL2tlcm4v
dWlwY19zb2NrZXQuYwogICogYW5kIG1vZGlmaWVkIGZvciBfX1VzZXJzcGFjZV9fCiAgKiBzb2Ny
ZWF0ZSByZXR1cm5zIGEgc29ja2V0LiAgVGhlIHNvY2tldCBzaG91bGQgYmUKQEAgLTEzMTAsNzQg
KzEyOTcsNiBAQCBzb2NyZWF0ZShpbnQgZG9tLCBzdHJ1Y3Qgc29ja2V0ICoqYXNvLCBpbnQgdHlw
ZSwgaW50IHByb3RvKQogCSphc28gPSBzbzsKIAlyZXR1cm4gKDApOwogfQotI2Vsc2UKLS8qIFRo
ZSBrZXJuZWwgdmVyc2lvbiBmb3IgcmVmZXJlbmNlIGlzIGJlbG93LiBUaGUgI2Vsc2UKLSAgIHNo
b3VsZCBiZSByZW1vdmVkIG9uY2UgdGhlIF9fVXNlcnNwYWNlX18KLSAgIHZlcnNpb24gaXMgdGVz
dGVkLgotICogc29jcmVhdGUgcmV0dXJucyBhIHNvY2tldCB3aXRoIGEgcmVmIGNvdW50IG9mIDEu
ICBUaGUgc29ja2V0IHNob3VsZCBiZQotICogY2xvc2VkIHdpdGggc29jbG9zZSgpLgotICovCi1p
bnQKLXNvY3JlYXRlKGludCBkb20sIHN0cnVjdCBzb2NrZXQgKiphc28sIGludCB0eXBlLCBpbnQg
cHJvdG8sCi0gICAgc3RydWN0IHVjcmVkICpjcmVkLCBzdHJ1Y3QgdGhyZWFkICp0ZCkKLXsKLQlz
dHJ1Y3QgcHJvdG9zdyAqcHJwOwotCXN0cnVjdCBzb2NrZXQgKnNvOwotCWludCBlcnJvcjsKLQot
CWlmIChwcm90bykKLQkJcHJwID0gcGZmaW5kcHJvdG8oZG9tLCBwcm90bywgdHlwZSk7Ci0JZWxz
ZQotCQlwcnAgPSBwZmZpbmR0eXBlKGRvbSwgdHlwZSk7Ci0KLQlpZiAocHJwID09IE5VTEwgfHwg
cHJwLT5wcl91c3JyZXFzLT5wcnVfYXR0YWNoID09IE5VTEwgfHwKLQkgICAgcHJwLT5wcl91c3Jy
ZXFzLT5wcnVfYXR0YWNoID09IHBydV9hdHRhY2hfbm90c3VwcCkKLQkJcmV0dXJuIChFUFJPVE9O
T1NVUFBPUlQpOwotCi0JaWYgKGphaWxlZChjcmVkKSAmJiBqYWlsX3NvY2tldF91bml4aXByb3V0
ZV9vbmx5ICYmCi0JICAgIHBycC0+cHJfZG9tYWluLT5kb21fZmFtaWx5ICE9IFBGX0xPQ0FMICYm
Ci0JICAgIHBycC0+cHJfZG9tYWluLT5kb21fZmFtaWx5ICE9IFBGX0lORVQgJiYKLQkgICAgcHJw
LT5wcl9kb21haW4tPmRvbV9mYW1pbHkgIT0gUEZfUk9VVEUpIHsKLQkJcmV0dXJuIChFUFJPVE9O
T1NVUFBPUlQpOwotCX0KLQotCWlmIChwcnAtPnByX3R5cGUgIT0gdHlwZSkKLQkJcmV0dXJuIChF
UFJPVE9UWVBFKTsKLQlzbyA9IHNvYWxsb2MoKTsKLQlpZiAoc28gPT0gTlVMTCkKLQkJcmV0dXJu
IChFTk9CVUZTKTsKLQotCVRBSUxRX0lOSVQoJnNvLT5zb19pbmNvbXApOwotCVRBSUxRX0lOSVQo
JnNvLT5zb19jb21wKTsKLQlzby0+c29fdHlwZSA9IHR5cGU7Ci0Jc28tPnNvX2NyZWQgPSBjcmhv
bGQoY3JlZCk7Ci0Jc28tPnNvX3Byb3RvID0gcHJwOwotI2lmZGVmIE1BQwotCW1hY19jcmVhdGVf
c29ja2V0KGNyZWQsIHNvKTsKLSNlbmRpZgotCWtubGlzdF9pbml0KCZzby0+c29fcmN2LnNiX3Nl
bC5zaV9ub3RlLCBTT0NLQlVGX01UWCgmc28tPnNvX3JjdiksCi0JICAgIE5VTEwsIE5VTEwsIE5V
TEwpOwotCWtubGlzdF9pbml0KCZzby0+c29fc25kLnNiX3NlbC5zaV9ub3RlLCBTT0NLQlVGX01U
WCgmc28tPnNvX3NuZCksCi0JICAgIE5VTEwsIE5VTEwsIE5VTEwpOwotCXNvLT5zb19jb3VudCA9
IDE7Ci0JLyoKLQkgKiBBdXRvLXNpemluZyBvZiBzb2NrZXQgYnVmZmVycyBpcyBtYW5hZ2VkIGJ5
IHRoZSBwcm90b2NvbHMgYW5kCi0JICogdGhlIGFwcHJvcHJpYXRlIGZsYWdzIG11c3QgYmUgc2V0
IGluIHRoZSBwcnVfYXR0YWNoIGZ1bmN0aW9uLgotCSAqLwotCWVycm9yID0gKCpwcnAtPnByX3Vz
cnJlcXMtPnBydV9hdHRhY2gpKHNvLCBwcm90bywgdGQpOwotCWlmIChlcnJvcikgewotCQlLQVNT
RVJUKHNvLT5zb19jb3VudCA9PSAxLCAoInNvY3JlYXRlOiBzb19jb3VudCAlZCIsCi0JCSAgICBz
by0+c29fY291bnQpKTsKLQkJc28tPnNvX2NvdW50ID0gMDsKLQkJc29kZWFsbG9jKHNvKTsKLQkJ
cmV0dXJuIChlcnJvcik7Ci0JfQotCSphc28gPSBzbzsKLQlyZXR1cm4gKDApOwotfQotI2VuZGlm
Ci0KLQogCiAKIC8qIFRha2VuIGZyb20gIC9zcmMvc3lzL2tlcm4vdWlwY19zeXNjYWxscy5jCkBA
IC0xNDA1LDcgKzEzMjQsNyBAQCBzdHJ1Y3Qgc29ja2V0ICoKIHVzcnNjdHBfc29ja2V0KGludCBk
b21haW4sIGludCB0eXBlLCBpbnQgcHJvdG9jb2wsCiAJICAgICAgIGludCAoKnJlY2VpdmVfY2Ip
KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHVuaW9uIHNjdHBfc29ja3N0b3JlIGFkZHIsIHZvaWQgKmRh
dGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGF0YWxlbiwgc3Ry
dWN0IHNjdHBfcmN2aW5mbywgaW50IGZsYWdzLCB2b2lkICp1bHBfaW5mbyksCi0JICAgICAgIGlu
dCAoKnNlbmRfY2IpKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHVpbnQzMl90IHNiX2ZyZWUpLAorCSAg
ICAgICBpbnQgKCpzZW5kX2NiKShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCB1aW50MzJfdCBzYl9mcmVl
LCB2b2lkICp1bHBfaW5mbyksCiAJICAgICAgIHVpbnQzMl90IHNiX3RocmVzaG9sZCwKIAkgICAg
ICAgdm9pZCAqdWxwX2luZm8pCiB7CkBAIC0xNDcyLDcgKzEzOTEsNiBAQCBzYnJlc2VydmUoc3Ry
dWN0IHNvY2tidWYgKnNiLCB1X2xvbmcgY2MsIHN0cnVjdCBzb2NrZXQgKnNvKQogCXJldHVybiAo
ZXJyb3IpOwogfQogCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogaW50CiBzb3Jlc2VydmUo
c3RydWN0IHNvY2tldCAqc28sIHVfbG9uZyBzbmRjYywgdV9sb25nIHJjdmNjKQogewpAQCAtMTUw
Miw0NSArMTQyMCwxMiBAQCBzb3Jlc2VydmUoc3RydWN0IHNvY2tldCAqc28sIHVfbG9uZyBzbmRj
YywgdV9sb25nIHJjdmNjKQogCVNPQ0tCVUZfVU5MT0NLKCZzby0+c29fc25kKTsKIAlyZXR1cm4g
KEVOT0JVRlMpOwogfQotI2Vsc2UgLyoga2VybmVsIHZlcnNpb24gZm9yIHJlZmVyZW5jZSAqLwot
aW50Ci1zb3Jlc2VydmUoc3RydWN0IHNvY2tldCAqc28sIHVfbG9uZyBzbmRjYywgdV9sb25nIHJj
dmNjKQotewotCXN0cnVjdCB0aHJlYWQgKnRkID0gY3VydGhyZWFkOwotCi0JU09DS0JVRl9MT0NL
KCZzby0+c29fc25kKTsKLQlTT0NLQlVGX0xPQ0soJnNvLT5zb19yY3YpOwotCWlmIChzYnJlc2Vy
dmVfbG9ja2VkKCZzby0+c29fc25kLCBzbmRjYywgc28sIHRkKSA9PSAwKQotCQlnb3RvIGJhZDsK
LQlpZiAoc2JyZXNlcnZlX2xvY2tlZCgmc28tPnNvX3JjdiwgcmN2Y2MsIHNvLCB0ZCkgPT0gMCkK
LQkJZ290byBiYWQyOwotCWlmIChzby0+c29fcmN2LnNiX2xvd2F0ID09IDApCi0JCXNvLT5zb19y
Y3Yuc2JfbG93YXQgPSAxOwotCWlmIChzby0+c29fc25kLnNiX2xvd2F0ID09IDApCi0JCXNvLT5z
b19zbmQuc2JfbG93YXQgPSBNQ0xCWVRFUzsKLQlpZiAoc28tPnNvX3NuZC5zYl9sb3dhdCA+IHNv
LT5zb19zbmQuc2JfaGl3YXQpCi0JCXNvLT5zb19zbmQuc2JfbG93YXQgPSBzby0+c29fc25kLnNi
X2hpd2F0OwotCVNPQ0tCVUZfVU5MT0NLKCZzby0+c29fcmN2KTsKLQlTT0NLQlVGX1VOTE9DSygm
c28tPnNvX3NuZCk7Ci0JcmV0dXJuICgwKTsKLWJhZDI6Ci0Jc2JyZWxlYXNlX2xvY2tlZCgmc28t
PnNvX3NuZCwgc28pOwotYmFkOgotCVNPQ0tCVUZfVU5MT0NLKCZzby0+c29fcmN2KTsKLQlTT0NL
QlVGX1VOTE9DSygmc28tPnNvX3NuZCk7Ci0JcmV0dXJuIChFTk9CVUZTKTsKLX0KLSNlbmRpZgot
Ci0KLQogCiAKIC8qIFRha2VuIGZyb20gIC9zcmMvc3lzL2tlcm4vdWlwY19zb2NrYnVmLmMKICAq
IGFuZCBtb2RpZmllZCBmb3IgX19Vc2Vyc3BhY2VfXwogICovCiAKLSNpZiBkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiB2b2lkCiBzb3dha2V1cChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2ti
dWYgKnNiKQogewpAQCAtMTU1MCw1MyArMTQzNSwxNCBAQCBzb3dha2V1cChzdHJ1Y3Qgc29ja2V0
ICpzbywgc3RydWN0IHNvY2tidWYgKnNiKQogCXNiLT5zYl9mbGFncyAmPSB+U0JfU0VMOwogCWlm
IChzYi0+c2JfZmxhZ3MgJiBTQl9XQUlUKSB7CiAJCXNiLT5zYl9mbGFncyAmPSB+U0JfV0FJVDsK
LSNpZiBkZWZpbmVkIChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMy
KQogCQlXYWtlQWxsQ29uZGl0aW9uVmFyaWFibGUoJihzYiktPnNiX2NvbmQpOwogI2Vsc2UKIAkJ
cHRocmVhZF9jb25kX2Jyb2FkY2FzdCgmKHNiKS0+c2JfY29uZCk7CiAjZW5kaWYKIAl9CiAJU09D
S0JVRl9VTkxPQ0soc2IpOwotCS8qX19Vc2Vyc3BhY2VfXyB3aGF0IHRvZG8gYWJvdXQgc29fdXBj
YWxsPyovCi0KLX0KLSNlbHNlIC8qIGtlcm5lbCB2ZXJzaW9uIGZvciByZWZlcmVuY2UgKi8KLS8q
Ci0gKiBXYWtldXAgcHJvY2Vzc2VzIHdhaXRpbmcgb24gYSBzb2NrZXQgYnVmZmVyLiAgRG8gYXN5
bmNocm9ub3VzIG5vdGlmaWNhdGlvbgotICogdmlhIFNJR0lPIGlmIHRoZSBzb2NrZXQgaGFzIHRo
ZSBTU19BU1lOQyBmbGFnIHNldC4KLSAqCi0gKiBDYWxsZWQgd2l0aCB0aGUgc29ja2V0IGJ1ZmZl
ciBsb2NrIGhlbGQ7IHdpbGwgcmVsZWFzZSB0aGUgbG9jayBieSB0aGUgZW5kCi0gKiBvZiB0aGUg
ZnVuY3Rpb24uICBUaGlzIGFsbG93cyB0aGUgY2FsbGVyIHRvIGFjcXVpcmUgdGhlIHNvY2tldCBi
dWZmZXIgbG9jawotICogd2hpbGUgdGVzdGluZyBmb3IgdGhlIG5lZWQgZm9yIHZhcmlvdXMgc29y
dHMgb2Ygd2FrZXVwIGFuZCBob2xkIGl0IHRocm91Z2gKLSAqIHRvIHRoZSBwb2ludCB3aGVyZSBp
dCdzIG5vIGxvbmdlciByZXF1aXJlZC4gIFdlIGN1cnJlbnRseSBob2xkIHRoZSBsb2NrCi0gKiB0
aHJvdWdoIGNhbGxzIG91dCB0byBvdGhlciBzdWJzeXN0ZW1zICh3aXRoIHRoZSBleGNlcHRpb24g
b2Yga3F1ZXVlKSwgYW5kCi0gKiB0aGVuIHJlbGVhc2UgaXQgdG8gYXZvaWQgbG9jayBvcmRlciBp
c3N1ZXMuICBJdCdzIG5vdCBjbGVhciB0aGF0J3MKLSAqIGNvcnJlY3QuCi0gKi8KLXZvaWQKLXNv
d2FrZXVwKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2J1ZiAqc2IpCi17Ci0KLQlTT0NL
QlVGX0xPQ0tfQVNTRVJUKHNiKTsKLQotCXNlbHdha2V1cHByaSgmc2ItPnNiX3NlbCwgUFNPQ0sp
OwotCXNiLT5zYl9mbGFncyAmPSB+U0JfU0VMOwotCWlmIChzYi0+c2JfZmxhZ3MgJiBTQl9XQUlU
KSB7Ci0JCXNiLT5zYl9mbGFncyAmPSB+U0JfV0FJVDsKLQkJd2FrZXVwKCZzYi0+c2JfY2MpOwot
CX0KLQlLTk9URV9MT0NLRUQoJnNiLT5zYl9zZWwuc2lfbm90ZSwgMCk7Ci0JU09DS0JVRl9VTkxP
Q0soc2IpOwotCWlmICgoc28tPnNvX3N0YXRlICYgU1NfQVNZTkMpICYmIHNvLT5zb19zaWdpbyAh
PSBOVUxMKQotCQlwZ3NpZ2lvKCZzby0+c29fc2lnaW8sIFNJR0lPLCAwKTsKLQlpZiAoc2ItPnNi
X2ZsYWdzICYgU0JfVVBDQUxMKQotCQkoKnNvLT5zb191cGNhbGwpKHNvLCBzby0+c29fdXBjYWxs
YXJnLCBNX05PV0FJVCk7Ci0JaWYgKHNiLT5zYl9mbGFncyAmIFNCX0FJTykKLQkJYWlvX3N3YWtl
KHNvLCBzYik7Ci0JbXR4X2Fzc2VydChTT0NLQlVGX01UWChzYiksIE1BX05PVE9XTkVEKTsKIH0K
LSNlbmRpZgotCiAKIAogLyogVGFrZW4gZnJvbSAgL3NyYy9zeXMva2Vybi91aXBjX3NvY2tldC5j
CkBAIC0xNzY4LDcgKzE2MTQsNyBAQCB1c2VyX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpoZWFkLCAg
c3RydWN0IHNvY2thZGRyICoqbmFtZSwgc29ja2xlbl90ICpuYW1lbGVuLCBzdAogCQkJaGVhZC0+
c29fZXJyb3IgPSBFQ09OTkFCT1JURUQ7CiAJCQlicmVhazsKIAkJfQotI2lmIGRlZmluZWQgKF9f
VXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJCWlmIChTbGVlcENv
bmRpdGlvblZhcmlhYmxlQ1MoJmFjY2VwdF9jb25kLCAmYWNjZXB0X210eCwgSU5GSU5JVEUpKQog
CQkJZXJyb3IgPSAwOwogCQllbHNlCkBAIC0yMDg5LDcgKzE5MzUsNyBAQCBpbnQgdXNlcl9jb25u
ZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKnNhKQogCiAJU09DS19MT0NL
KHNvKTsKIAl3aGlsZSAoKHNvLT5zb19zdGF0ZSAmIFNTX0lTQ09OTkVDVElORykgJiYgc28tPnNv
X2Vycm9yID09IDApIHsKLSNpZiBkZWZpbmVkIChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lm
IGRlZmluZWQoX1dJTjMyKQogCQlpZiAoU2xlZXBDb25kaXRpb25WYXJpYWJsZUNTKFNPQ0tfQ09O
RChzbyksIFNPQ0tfTVRYKHNvKSwgSU5GSU5JVEUpKQogCQkJZXJyb3IgPSAwOwogCQllbHNlCkBA
IC0yMDk4LDcgKzE5NDQsNyBAQCBpbnQgdXNlcl9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBz
dHJ1Y3Qgc29ja2FkZHIgKnNhKQogCQllcnJvciA9IHB0aHJlYWRfY29uZF93YWl0KFNPQ0tfQ09O
RChzbyksIFNPQ0tfTVRYKHNvKSk7CiAjZW5kaWYKIAkJaWYgKGVycm9yKSB7Ci0jaWYgZGVmaW5l
ZChfX1VzZXJzcGFjZV9vc19OZXRCU0QpCisjaWYgZGVmaW5lZChfX05ldEJTRF9fKQogCQkJaWYg
KGVycm9yID09IEVJTlRSKSB7CiAjZWxzZQogCQkJaWYgKGVycm9yID09IEVJTlRSIHx8IGVycm9y
ID09IEVSRVNUQVJUKSB7CkBAIC0yMTE4LDcgKzE5NjQsNyBAQCBiYWQ6CiAJaWYgKCFpbnRlcnJ1
cHRlZCkgewogCQlzby0+c29fc3RhdGUgJj0gflNTX0lTQ09OTkVDVElORzsKIAl9Ci0jaWYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2Vfb3NfTmV0QlNEKQorI2lmICFkZWZpbmVkKF9fTmV0QlNEX18pCiAJ
aWYgKGVycm9yID09IEVSRVNUQVJUKSB7CiAJCWVycm9yID0gRUlOVFI7CiAJfQpAQCAtMjEyOSwx
MSArMTk3NSwxNCBAQCBkb25lMToKIAogaW50IHVzcnNjdHBfY29ubmVjdChzdHJ1Y3Qgc29ja2V0
ICpzbywgc3RydWN0IHNvY2thZGRyICpuYW1lLCBpbnQgbmFtZWxlbikKIHsKLQlzdHJ1Y3Qgc29j
a2FkZHIgKnNhOworCXN0cnVjdCBzb2NrYWRkciAqc2EgPSBOVUxMOwogCiAJZXJybm8gPSBnZXRz
b2NrYWRkcigmc2EsIChjYWRkcl90KW5hbWUsIG5hbWVsZW4pOwotCWlmIChlcnJubykKLQkJcmV0
dXJuICgtMSk7CisgICAgaWYgKGVycm5vKSB7CisgICAgICAgIGlmIChzYSkKKyAgICAgICAgICAg
IEZSRUUoc2EsIE1fU09OQU1FKTsKKyAgICAgICAgcmV0dXJuICgtMSk7CisgICAgfQogCiAJZXJy
bm8gPSB1c2VyX2Nvbm5lY3Qoc28sIHNhKTsKIAlGUkVFKHNhLCBNX1NPTkFNRSk7CkBAIC0yMjI4
LDcgKzIwNzcsNyBAQCB1c3JzY3RwX2ZpbmlzaCh2b2lkKQogCQlyZXR1cm4gKC0xKTsKIAl9CiAJ
c2N0cF9maW5pc2goKTsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYg
ZGVmaW5lZChfV0lOMzIpCiAJRGVsZXRlQ29uZGl0aW9uVmFyaWFibGUoJmFjY2VwdF9jb25kKTsK
IAlEZWxldGVDcml0aWNhbFNlY3Rpb24oJmFjY2VwdF9tdHgpOwogI2lmIGRlZmluZWQoSU5FVCkg
fHwgZGVmaW5lZChJTkVUNikKQEAgLTIzOTksNiArMjI0OCwyMCBAQCB1c3JzY3RwX2dldHNvY2tv
cHQoc3RydWN0IHNvY2tldCAqc28sIGludCBsZXZlbCwgaW50IG9wdGlvbl9uYW1lLAogCQkJCSpv
cHRpb25fbGVuID0gKHNvY2tsZW5fdClzaXplb2Yoc3RydWN0IGxpbmdlcik7CiAJCQkJcmV0dXJu
ICgwKTsKIAkJCX0KKwkJCWJyZWFrOworCQljYXNlIFNPX0VSUk9SOgorCQkJaWYgKCpvcHRpb25f
bGVuIDwgKHNvY2tsZW5fdClzaXplb2YoaW50KSkgeworCQkJCWVycm5vID0gRUlOVkFMOworCQkJ
CXJldHVybiAoLTEpOworCQkJfSBlbHNlIHsKKwkJCQlpbnQgKmludHZhbDsKKworCQkJCWludHZh
bCA9IChpbnQgKilvcHRpb25fdmFsdWU7CisJCQkJKmludHZhbCA9IHNvLT5zb19lcnJvcjsKKwkJ
CQkqb3B0aW9uX2xlbiA9IChzb2NrbGVuX3Qpc2l6ZW9mKGludCk7CisJCQkJcmV0dXJuICgwKTsK
KwkJCX0KKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZXJybm8gPSBFSU5WQUw7CiAJCQlyZXR1
cm4gKC0xKTsKQEAgLTI1NTAsMTAgKzI0MTMsMTYgQEAgdXNyc2N0cF9zZXRfdWxwaW5mbyhzdHJ1
Y3Qgc29ja2V0ICpzbywgdm9pZCAqdWxwX2luZm8pCiAJcmV0dXJuIChyZWdpc3Rlcl91bHBfaW5m
byhzbywgdWxwX2luZm8pKTsKIH0KIAorCitpbnQKK3VzcnNjdHBfZ2V0X3VscGluZm8oc3RydWN0
IHNvY2tldCAqc28sIHZvaWQgKipwdWxwX2luZm8pCit7CisJcmV0dXJuIChyZXRyaWV2ZV91bHBf
aW5mbyhzbywgcHVscF9pbmZvKSk7Cit9CisKIGludAogdXNyc2N0cF9iaW5keChzdHJ1Y3Qgc29j
a2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRycywgaW50IGFkZHJjbnQsIGludCBmbGFncykK
IHsKLQlzdHJ1Y3Qgc2N0cF9nZXRhZGRyZXNzZXMgKmdhZGRyczsKIAlzdHJ1Y3Qgc29ja2FkZHIg
KnNhOwogI2lmZGVmIElORVQKIAlzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbjsKQEAgLTI1NjIsOSAr
MjQzMSw5IEBAIHVzcnNjdHBfYmluZHgoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRk
ciAqYWRkcnMsIGludCBhZGRyY250LCBpbnQgZmxhZ3MpCiAJc3RydWN0IHNvY2thZGRyX2luNiAq
c2luNjsKICNlbmRpZgogCWludCBpOwotCXNpemVfdCBhcmdzejsKICNpZiBkZWZpbmVkKElORVQp
IHx8IGRlZmluZWQoSU5FVDYpCi0JdWludDE2X3Qgc3BvcnQgPSAwOworCXVpbnQxNl90IHNwb3J0
OworCWJvb2wgZml4X3BvcnQ7CiAjZW5kaWYKIAogCS8qIHZhbGlkYXRlIHRoZSBmbGFncyAqLwpA
QCAtMjU3OCw2ICsyNDQ3LDEwIEBAIHVzcnNjdHBfYmluZHgoc3RydWN0IHNvY2tldCAqc28sIHN0
cnVjdCBzb2NrYWRkciAqYWRkcnMsIGludCBhZGRyY250LCBpbnQgZmxhZ3MpCiAJCWVycm5vID0g
RUlOVkFMOwogCQlyZXR1cm4gKC0xKTsKIAl9CisjaWYgZGVmaW5lZChJTkVUKSB8fCBkZWZpbmVk
KElORVQ2KQorCXNwb3J0ID0gMDsKKwlmaXhfcG9ydCA9IGZhbHNlOworI2VuZGlmCiAJLyogRmly
c3QgcHJlLXNjcmVlbiB0aGUgYWRkcmVzc2VzICovCiAJc2EgPSBhZGRyczsKIAlmb3IgKGkgPSAw
OyBpIDwgYWRkcmNudDsgaSsrKSB7CkBAIC0yNjAyLDYgKzI0NzUsNyBAQCB1c3JzY3RwX2JpbmR4
KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHJzLCBpbnQgYWRkcmNudCwg
aW50IGZsYWdzKQogCQkJCX0gZWxzZSB7CiAJCQkJCS8qIHNhdmUgb2ZmIHRoZSBwb3J0ICovCiAJ
CQkJCXNwb3J0ID0gc2luLT5zaW5fcG9ydDsKKwkJCQkJZml4X3BvcnQgPSAoaSA+IDApOwogCQkJ
CX0KIAkJCX0KICNpZm5kZWYgSEFWRV9TQV9MRU4KQEAgLTI2MjksNiArMjUwMyw3IEBAIHVzcnNj
dHBfYmluZHgoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqYWRkcnMsIGludCBh
ZGRyY250LCBpbnQgZmxhZ3MpCiAJCQkJfSBlbHNlIHsKIAkJCQkJLyogc2F2ZSBvZmYgdGhlIHBv
cnQgKi8KIAkJCQkJc3BvcnQgPSBzaW42LT5zaW42X3BvcnQ7CisJCQkJCWZpeF9wb3J0ID0gKGkg
PiAwKTsKIAkJCQl9CiAJCQl9CiAjaWZuZGVmIEhBVkVfU0FfTEVOCkBAIC0yNjQ1LDQxICsyNTIw
LDMwIEBAIHVzcnNjdHBfYmluZHgoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAq
YWRkcnMsIGludCBhZGRyY250LCBpbnQgZmxhZ3MpCiAJCXNhID0gKHN0cnVjdCBzb2NrYWRkciAq
KSgoY2FkZHJfdClzYSArIHNhLT5zYV9sZW4pOwogI2VuZGlmCiAJfQotCWFyZ3N6ID0gc2l6ZW9m
KHN0cnVjdCBzY3RwX2dldGFkZHJlc3NlcykgKwotCSAgICAgICAgc2l6ZW9mKHN0cnVjdCBzb2Nr
YWRkcl9zdG9yYWdlKTsKLQlpZiAoKGdhZGRycyA9IChzdHJ1Y3Qgc2N0cF9nZXRhZGRyZXNzZXMg
KiltYWxsb2MoYXJnc3opKSA9PSBOVUxMKSB7Ci0JCWVycm5vID0gRU5PTUVNOwotCQlyZXR1cm4g
KC0xKTsKLQl9CiAJc2EgPSBhZGRyczsKIAlmb3IgKGkgPSAwOyBpIDwgYWRkcmNudDsgaSsrKSB7
CiAjaWZuZGVmIEhBVkVfU0FfTEVOCiAJCXNpemVfdCBzYV9sZW47CisKICNlbmRpZgotCQltZW1z
ZXQoZ2FkZHJzLCAwLCBhcmdzeik7Ci0JCWdhZGRycy0+c2dldF9hc3NvY19pZCA9IDA7CiAjaWZk
ZWYgSEFWRV9TQV9MRU4KLQkJbWVtY3B5KGdhZGRycy0+YWRkciwgc2EsIHNhLT5zYV9sZW4pOwog
I2lmIGRlZmluZWQoSU5FVCkgfHwgZGVmaW5lZChJTkVUNikKLQkJaWYgKChpID09IDApICYmIChz
cG9ydCAhPSAwKSkgewotCQkJc3dpdGNoIChnYWRkcnMtPmFkZHItPnNhX2ZhbWlseSkgeworCQlp
ZiAoZml4X3BvcnQpIHsKKwkJCXN3aXRjaCAoc2EtPnNhX2ZhbWlseSkgewogI2lmZGVmIElORVQK
IAkJCWNhc2UgQUZfSU5FVDoKLQkJCQlzaW4gPSAoc3RydWN0IHNvY2thZGRyX2luICopZ2FkZHJz
LT5hZGRyOwotCQkJCXNpbi0+c2luX3BvcnQgPSBzcG9ydDsKKwkJCQkoKHN0cnVjdCBzb2NrYWRk
cl9pbiAqKXNhKS0+c2luX3BvcnQgPSBzcG9ydDsKIAkJCQlicmVhazsKICNlbmRpZgogI2lmZGVm
IElORVQ2CiAJCQljYXNlIEFGX0lORVQ2OgotCQkJCXNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2lu
NiAqKWdhZGRycy0+YWRkcjsKLQkJCQlzaW42LT5zaW42X3BvcnQgPSBzcG9ydDsKKwkJCQkoKHN0
cnVjdCBzb2NrYWRkcl9pbjYgKilzYSktPnNpbjZfcG9ydCA9IHNwb3J0OwogCQkJCWJyZWFrOwog
I2VuZGlmCiAJCQl9CiAJCX0KICNlbmRpZgotCQlpZiAodXNyc2N0cF9zZXRzb2Nrb3B0KHNvLCBJ
UFBST1RPX1NDVFAsIGZsYWdzLCBnYWRkcnMsIChzb2NrbGVuX3QpYXJnc3opICE9IDApIHsKLQkJ
CWZyZWUoZ2FkZHJzKTsKKwkJaWYgKHVzcnNjdHBfc2V0c29ja29wdChzbywgSVBQUk9UT19TQ1RQ
LCBmbGFncywgc2EsIHNhLT5zYV9sZW4pICE9IDApIHsKIAkJCXJldHVybiAoLTEpOwogCQl9CiAJ
CXNhID0gKHN0cnVjdCBzb2NrYWRkciAqKSgoY2FkZHJfdClzYSArIHNhLT5zYV9sZW4pOwpAQCAt
MjY5OSwzOCArMjU2MywzMyBAQCB1c3JzY3RwX2JpbmR4KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1
Y3Qgc29ja2FkZHIgKmFkZHJzLCBpbnQgYWRkcmNudCwgaW50IGZsYWdzKQogCQkJc2FfbGVuID0g
MDsKIAkJCWJyZWFrOwogCQl9Ci0JCW1lbWNweShnYWRkcnMtPmFkZHIsIHNhLCBzYV9sZW4pOwog
CQkvKgogCQkgKiBOb3csIGlmIHRoZXJlIHdhcyBhIHBvcnQgbWVudGlvbmVkLCBhc3N1cmUgdGhh
dCB0aGUKIAkJICogZmlyc3QgYWRkcmVzcyBoYXMgdGhhdCBwb3J0IHRvIG1ha2Ugc3VyZSBpdCBm
YWlscyBvcgogCQkgKiBzdWNjZWVkcyBjb3JyZWN0bHkuCiAJCSAqLwogI2lmIGRlZmluZWQoSU5F
VCkgfHwgZGVmaW5lZChJTkVUNikKLQkJaWYgKChpID09IDApICYmIChzcG9ydCAhPSAwKSkgewot
CQkJc3dpdGNoIChnYWRkcnMtPmFkZHItPnNhX2ZhbWlseSkgeworCQlpZiAoZml4X3BvcnQpIHsK
KwkJCXN3aXRjaCAoc2EtPnNhX2ZhbWlseSkgewogI2lmZGVmIElORVQKIAkJCWNhc2UgQUZfSU5F
VDoKLQkJCQlzaW4gPSAoc3RydWN0IHNvY2thZGRyX2luICopZ2FkZHJzLT5hZGRyOwotCQkJCXNp
bi0+c2luX3BvcnQgPSBzcG9ydDsKKwkJCQkoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKXNhKS0+c2lu
X3BvcnQgPSBzcG9ydDsKIAkJCQlicmVhazsKICNlbmRpZgogI2lmZGVmIElORVQ2CiAJCQljYXNl
IEFGX0lORVQ2OgotCQkJCXNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKWdhZGRycy0+YWRk
cjsKLQkJCQlzaW42LT5zaW42X3BvcnQgPSBzcG9ydDsKKwkJCQkoKHN0cnVjdCBzb2NrYWRkcl9p
bjYgKilzYSktPnNpbjZfcG9ydCA9IHNwb3J0OwogCQkJCWJyZWFrOwogI2VuZGlmCiAJCQl9CiAJ
CX0KICNlbmRpZgotCQlpZiAodXNyc2N0cF9zZXRzb2Nrb3B0KHNvLCBJUFBST1RPX1NDVFAsIGZs
YWdzLCBnYWRkcnMsIChzb2NrbGVuX3QpYXJnc3opICE9IDApIHsKLQkJCWZyZWUoZ2FkZHJzKTsK
KwkJaWYgKHVzcnNjdHBfc2V0c29ja29wdChzbywgSVBQUk9UT19TQ1RQLCBmbGFncywgc2EsIChz
b2NrbGVuX3Qpc2FfbGVuKSAhPSAwKSB7CiAJCQlyZXR1cm4gKC0xKTsKIAkJfQogCQlzYSA9IChz
dHJ1Y3Qgc29ja2FkZHIgKikoKGNhZGRyX3Qpc2EgKyBzYV9sZW4pOwogI2VuZGlmCiAJfQotCWZy
ZWUoZ2FkZHJzKTsKIAlyZXR1cm4gKDApOwogfQogCkBAIC0yODY2LDkgKzI3MjUsOSBAQCB1c3Jz
Y3RwX2dldHBhZGRycyhzdHJ1Y3Qgc29ja2V0ICpzbywgc2N0cF9hc3NvY190IGlkLCBzdHJ1Y3Qg
c29ja2FkZHIgKipyYWRkcnMpCiAJCWZyZWUoYWRkcnMpOwogCQlyZXR1cm4gKC0xKTsKIAl9Ci0J
KnJhZGRycyA9IChzdHJ1Y3Qgc29ja2FkZHIgKikmYWRkcnMtPmFkZHJbMF07CisJKnJhZGRycyA9
ICZhZGRycy0+YWRkclswXS5zYTsKIAljbnQgPSAwOwotCXNhID0gKHN0cnVjdCBzb2NrYWRkciAq
KSZhZGRycy0+YWRkclswXTsKKwlzYSA9ICZhZGRycy0+YWRkclswXS5zYTsKIAlsaW0gPSAoY2Fk
ZHJfdClhZGRycyArIG9wdF9sZW47CiAjaWZkZWYgSEFWRV9TQV9MRU4KIAl3aGlsZSAoKChjYWRk
cl90KXNhIDwgbGltKSAmJiAoc2EtPnNhX2xlbiA+IDApKSB7CkBAIC0yOTA1LDcgKzI3NjQsNyBA
QCB1c3JzY3RwX2ZyZWVwYWRkcnMoc3RydWN0IHNvY2thZGRyICphZGRycykKIAkvKiBUYWtlIGF3
YXkgdGhlIGhpZGRlbiBhc3NvY2lhdGlvbiBpZCAqLwogCXZvaWQgKmZyX2FkZHI7CiAKLQlmcl9h
ZGRyID0gKHZvaWQgKikoKGNhZGRyX3QpYWRkcnMgLSBzaXplb2Yoc2N0cF9hc3NvY190KSk7CisJ
ZnJfYWRkciA9ICh2b2lkICopKChjYWRkcl90KWFkZHJzIC0gb2Zmc2V0b2Yoc3RydWN0IHNjdHBf
Z2V0YWRkcmVzc2VzLCBhZGRyKSk7CiAJLyogTm93IGZyZWUgaXQgKi8KIAlmcmVlKGZyX2FkZHIp
OwogfQpAQCAtMjkzNCw5ICsyNzkzLDcgQEAgdXNyc2N0cF9nZXRsYWRkcnMoc3RydWN0IHNvY2tl
dCAqc28sIHNjdHBfYXNzb2NfdCBpZCwgc3RydWN0IHNvY2thZGRyICoqcmFkZHJzKQogCQllcnJu
byA9IEVOT1RDT05OOwogCQlyZXR1cm4gKC0xKTsKIAl9Ci0Jb3B0X2xlbiA9IChzb2NrbGVuX3Qp
KHNpemVfb2ZfYWRkcmVzc2VzICsKLQkgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVj
dCBzb2NrYWRkcl9zdG9yYWdlKSArCi0JICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1
Y3Qgc2N0cF9nZXRhZGRyZXNzZXMpKTsKKwlvcHRfbGVuID0gKHNvY2tsZW5fdCkoc2l6ZV9vZl9h
ZGRyZXNzZXMgKyBzaXplb2Yoc3RydWN0IHNjdHBfZ2V0YWRkcmVzc2VzKSk7CiAJYWRkcnMgPSBj
YWxsb2MoMSwgKHNpemVfdClvcHRfbGVuKTsKIAlpZiAoYWRkcnMgPT0gTlVMTCkgewogCQllcnJu
byA9IEVOT01FTTsKQEAgLTI5NDksOSArMjgwNiw5IEBAIHVzcnNjdHBfZ2V0bGFkZHJzKHN0cnVj
dCBzb2NrZXQgKnNvLCBzY3RwX2Fzc29jX3QgaWQsIHN0cnVjdCBzb2NrYWRkciAqKnJhZGRycykK
IAkJZXJybm8gPSBFTk9NRU07CiAJCXJldHVybiAoLTEpOwogCX0KLQkqcmFkZHJzID0gKHN0cnVj
dCBzb2NrYWRkciAqKSZhZGRycy0+YWRkclswXTsKKwkqcmFkZHJzID0gJmFkZHJzLT5hZGRyWzBd
LnNhOwogCWNudCA9IDA7Ci0Jc2EgPSAoc3RydWN0IHNvY2thZGRyICopJmFkZHJzLT5hZGRyWzBd
OworCXNhID0gJmFkZHJzLT5hZGRyWzBdLnNhOwogCWxpbSA9IChjYWRkcl90KWFkZHJzICsgb3B0
X2xlbjsKICNpZmRlZiBIQVZFX1NBX0xFTgogCXdoaWxlICgoKGNhZGRyX3Qpc2EgPCBsaW0pICYm
IChzYS0+c2FfbGVuID4gMCkpIHsKQEAgLTI5ODgsNyArMjg0NSw3IEBAIHVzcnNjdHBfZnJlZWxh
ZGRycyhzdHJ1Y3Qgc29ja2FkZHIgKmFkZHJzKQogCS8qIFRha2UgYXdheSB0aGUgaGlkZGVuIGFz
c29jaWF0aW9uIGlkICovCiAJdm9pZCAqZnJfYWRkcjsKIAotCWZyX2FkZHIgPSAodm9pZCAqKSgo
Y2FkZHJfdClhZGRycyAtIHNpemVvZihzY3RwX2Fzc29jX3QpKTsKKwlmcl9hZGRyID0gKHZvaWQg
KikoKGNhZGRyX3QpYWRkcnMgLSBvZmZzZXRvZihzdHJ1Y3Qgc2N0cF9nZXRhZGRyZXNzZXMsIGFk
ZHIpKTsKIAkvKiBOb3cgZnJlZSBpdCAqLwogCWZyZWUoZnJfYWRkcik7CiB9CkBAIC0zMDAyLDE2
ICsyODU5LDEyIEBAIHNjdHBfdXNlcnNwYWNlX2lwX291dHB1dChpbnQgKnJlc3VsdCwgc3RydWN0
IG1idWYgKm9fcGFrLAogCXN0cnVjdCBtYnVmICptOwogCXN0cnVjdCBtYnVmICptX29yaWc7CiAJ
aW50IGlvdmNudDsKLQlpbnQgc2VuZF9sZW47CiAJaW50IGxlbjsKIAlpbnQgc2VuZF9jb3VudDsK
IAlzdHJ1Y3QgaXAgKmlwOwogCXN0cnVjdCB1ZHBoZHIgKnVkcDsKLSNpZiAhZGVmaW5lZCAoX19V
c2Vyc3BhY2Vfb3NfV2luZG93cykKLQlpbnQgcmVzOwotI2VuZGlmCiAJc3RydWN0IHNvY2thZGRy
X2luIGRzdDsKLSNpZiBkZWZpbmVkIChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmlu
ZWQoX1dJTjMyKQogCVdTQU1TRyB3aW5fbXNnX2hkcjsKIAlEV09SRCB3aW5fc2VudF9sZW47CiAJ
V1NBQlVGIHNlbmRfaW92ZWNbTUFYTEVOX01CVUZfQ0hBSU5dOwpAQCAtMzA1Nyw3ICsyOTEwLDcg
QEAgc2N0cF91c2Vyc3BhY2VfaXBfb3V0cHV0KGludCAqcmVzdWx0LCBzdHJ1Y3QgbWJ1ZiAqb19w
YWssCiAJCQlTQ1RQX1BSSU5URigiV2h5IGRpZCB0aGUgU0NUUCBpbXBsZW1lbnRhdGlvbiBkaWQg
bm90IGNob29zZSBhIHNvdXJjZSBhZGRyZXNzP1xuIik7CiAJCX0KIAkJLyogVE9ETyBuZWVkIHRv
IHdvcnJ5IGFib3V0IHJvLT5yb19kc3QgYXMgaW4gaXBfb3V0cHV0PyAqLwotI2lmIGRlZmluZWQo
X19Vc2Vyc3BhY2Vfb3NfTGludXgpIHx8IGRlZmluZWQgKF9fVXNlcnNwYWNlX29zX1dpbmRvd3Mp
IHx8IChkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0ZyZWVCU0QpICYmIChfX0ZyZWVCU0RfdmVyc2lv
biA+PSAxMTAwMDMwKSkKKyNpZiBkZWZpbmVkKF9fbGludXhfXykgfHwgZGVmaW5lZChfV0lOMzIp
IHx8IChkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAoX19GcmVlQlNEX3ZlcnNpb24gPj0gMTEwMDAz
MCkpCiAJCS8qIG5lZWQgdG8gcHV0IGNlcnRhaW4gZmllbGRzIGludG8gbmV0d29yayBvcmRlciBm
b3IgTGludXggKi8KIAkJaXAtPmlwX2xlbiA9IGh0b25zKGlwLT5pcF9sZW4pOwogI2VuZGlmCkBA
IC0zMDgwLDEwICsyOTMzLDkgQEAgc2N0cF91c2Vyc3BhY2VfaXBfb3V0cHV0KGludCAqcmVzdWx0
LCBzdHJ1Y3QgbWJ1ZiAqb19wYWssCiAJCW1fYWRqKG0sIHNpemVvZihzdHJ1Y3QgaXApICsgc2l6
ZW9mKHN0cnVjdCB1ZHBoZHIpKTsKIAl9CiAKLQlzZW5kX2xlbiA9IFNDVFBfSEVBREVSX0xFTiht
KTsgLyogbGVuZ3RoIG9mIGVudGlyZSBwYWNrZXQgKi8KIAlzZW5kX2NvdW50ID0gMDsKIAlmb3Ig
KGlvdmNudCA9IDA7IG0gIT0gTlVMTCAmJiBpb3ZjbnQgPCBNQVhMRU5fTUJVRl9DSEFJTjsgbSA9
IG0tPm1fbmV4dCwgaW92Y250KyspIHsKLSNpZiAhZGVmaW5lZCAoX19Vc2Vyc3BhY2Vfb3NfV2lu
ZG93cykKKyNpZiAhZGVmaW5lZChfV0lOMzIpCiAJCXNlbmRfaW92ZWNbaW92Y250XS5pb3ZfYmFz
ZSA9IChjYWRkcl90KW0tPm1fZGF0YTsKIAkJc2VuZF9pb3ZlY1tpb3ZjbnRdLmlvdl9sZW4gPSBT
Q1RQX0JVRl9MRU4obSk7CiAJCXNlbmRfY291bnQgKz0gc2VuZF9pb3ZlY1tpb3ZjbnRdLmlvdl9s
ZW47CkBAIC0zMDk5LDcgKzI5NTEsNyBAQCBzY3RwX3VzZXJzcGFjZV9pcF9vdXRwdXQoaW50ICpy
ZXN1bHQsIHN0cnVjdCBtYnVmICpvX3BhaywKIAkJZ290byBmcmVlX21idWY7CiAJfQogCi0jaWYg
IWRlZmluZWQgKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgIWRlZmluZWQoX1dJTjMyKQog
CW1zZ19oZHIubXNnX25hbWUgPSAoc3RydWN0IHNvY2thZGRyICopICZkc3Q7CiAJbXNnX2hkci5t
c2dfbmFtZWxlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pOwogCW1zZ19oZHIubXNnX2lv
diA9IHNlbmRfaW92ZWM7CkBAIC0zMTA5LDEyICsyOTYxLDEyIEBAIHNjdHBfdXNlcnNwYWNlX2lw
X291dHB1dChpbnQgKnJlc3VsdCwgc3RydWN0IG1idWYgKm9fcGFrLAogCW1zZ19oZHIubXNnX2Zs
YWdzID0gMDsKIAogCWlmICgoIXVzZV91ZHBfdHVubmVsaW5nKSAmJiAoU0NUUF9CQVNFX1ZBUih1
c2Vyc3BhY2VfcmF3c2N0cCkgIT0gLTEpKSB7Ci0JCWlmICgocmVzID0gc2VuZG1zZyhTQ1RQX0JB
U0VfVkFSKHVzZXJzcGFjZV9yYXdzY3RwKSwgJm1zZ19oZHIsIE1TR19ET05UV0FJVCkpICE9IHNl
bmRfbGVuKSB7CisJCWlmIChzZW5kbXNnKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jhd3NjdHAp
LCAmbXNnX2hkciwgTVNHX0RPTlRXQUlUKSA8IDApIHsKIAkJCSpyZXN1bHQgPSBlcnJubzsKIAkJ
fQogCX0KIAlpZiAoKHVzZV91ZHBfdHVubmVsaW5nKSAmJiAoU0NUUF9CQVNFX1ZBUih1c2Vyc3Bh
Y2VfdWRwc2N0cCkgIT0gLTEpKSB7Ci0JCWlmICgocmVzID0gc2VuZG1zZyhTQ1RQX0JBU0VfVkFS
KHVzZXJzcGFjZV91ZHBzY3RwKSwgJm1zZ19oZHIsIE1TR19ET05UV0FJVCkpICE9IHNlbmRfbGVu
KSB7CisJCWlmIChzZW5kbXNnKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNjdHApLCAmbXNn
X2hkciwgTVNHX0RPTlRXQUlUKSA8IDApIHsKIAkJCSpyZXN1bHQgPSBlcnJubzsKIAkJfQogCX0K
QEAgLTMxMzEsMTUgKzI5ODMsMTEgQEAgc2N0cF91c2Vyc3BhY2VfaXBfb3V0cHV0KGludCAqcmVz
dWx0LCBzdHJ1Y3QgbWJ1ZiAqb19wYWssCiAJaWYgKCghdXNlX3VkcF90dW5uZWxpbmcpICYmIChT
Q1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3RwKSAhPSAtMSkpIHsKIAkJaWYgKFdTQVNlbmRU
byhTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3RwKSwgKExQV1NBQlVGKSBzZW5kX2lvdmVj
LCBpb3ZjbnQsICZ3aW5fc2VudF9sZW4sIHdpbl9tc2dfaGRyLmR3RmxhZ3MsIHdpbl9tc2dfaGRy
Lm5hbWUsIChpbnQpIHdpbl9tc2dfaGRyLm5hbWVsZW4sIE5VTEwsIE5VTEwpICE9IDApIHsKIAkJ
CSpyZXN1bHQgPSBXU0FHZXRMYXN0RXJyb3IoKTsKLQkJfSBlbHNlIGlmICh3aW5fc2VudF9sZW4g
IT0gc2VuZF9sZW4pIHsKLQkJCSpyZXN1bHQgPSBXU0FHZXRMYXN0RXJyb3IoKTsKIAkJfQogCX0K
IAlpZiAoKHVzZV91ZHBfdHVubmVsaW5nKSAmJiAoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfdWRw
c2N0cCkgIT0gLTEpKSB7CiAJCWlmIChXU0FTZW5kVG8oU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2Vf
dWRwc2N0cCksIChMUFdTQUJVRikgc2VuZF9pb3ZlYywgaW92Y250LCAmd2luX3NlbnRfbGVuLCB3
aW5fbXNnX2hkci5kd0ZsYWdzLCB3aW5fbXNnX2hkci5uYW1lLCAoaW50KSB3aW5fbXNnX2hkci5u
YW1lbGVuLCBOVUxMLCBOVUxMKSAhPSAwKSB7CiAJCQkqcmVzdWx0ID0gV1NBR2V0TGFzdEVycm9y
KCk7Ci0JCX0gZWxzZSBpZiAod2luX3NlbnRfbGVuICE9IHNlbmRfbGVuKSB7Ci0JCQkqcmVzdWx0
ID0gV1NBR2V0TGFzdEVycm9yKCk7CiAJCX0KIAl9CiAjZW5kaWYKQEAgLTMxNDgsNyArMjk5Niw3
IEBAIGZyZWVfbWJ1ZjoKIH0KICNlbmRpZgogCi0jaWYgZGVmaW5lZCAoSU5FVDYpCisjaWYgZGVm
aW5lZChJTkVUNikKIHZvaWQgc2N0cF91c2Vyc3BhY2VfaXA2X291dHB1dChpbnQgKnJlc3VsdCwg
c3RydWN0IG1idWYgKm9fcGFrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3Qgcm91dGVfaW42ICpybywgdm9pZCAqc3RjYiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdnJmX2lkKQpAQCAtMzE1Niwx
NiArMzAwNCwxMiBAQCB2b2lkIHNjdHBfdXNlcnNwYWNlX2lwNl9vdXRwdXQoaW50ICpyZXN1bHQs
IHN0cnVjdCBtYnVmICpvX3BhaywKIAlzdHJ1Y3QgbWJ1ZiAqbTsKIAlzdHJ1Y3QgbWJ1ZiAqbV9v
cmlnOwogCWludCBpb3ZjbnQ7Ci0JaW50IHNlbmRfbGVuOwogCWludCBsZW47CiAJaW50IHNlbmRf
Y291bnQ7CiAJc3RydWN0IGlwNl9oZHIgKmlwNjsKIAlzdHJ1Y3QgdWRwaGRyICp1ZHA7Ci0jaWYg
IWRlZmluZWQgKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCi0JaW50IHJlczsKLSNlbmRpZgogCXN0
cnVjdCBzb2NrYWRkcl9pbjYgZHN0OwotI2lmIGRlZmluZWQgKF9fVXNlcnNwYWNlX29zX1dpbmRv
d3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJV1NBTVNHIHdpbl9tc2dfaGRyOwogCURXT1JEIHdp
bl9zZW50X2xlbjsKIAlXU0FCVUYgc2VuZF9pb3ZlY1tNQVhMRU5fTUJVRl9DSEFJTl07CkBAIC0z
MjM1LDEwICszMDc5LDkgQEAgdm9pZCBzY3RwX3VzZXJzcGFjZV9pcDZfb3V0cHV0KGludCAqcmVz
dWx0LCBzdHJ1Y3QgbWJ1ZiAqb19wYWssCiAJICBtX2FkaihtLCBzaXplb2Yoc3RydWN0IGlwNl9o
ZHIpKTsKIAl9CiAKLQlzZW5kX2xlbiA9IFNDVFBfSEVBREVSX0xFTihtKTsgLyogbGVuZ3RoIG9m
IGVudGlyZSBwYWNrZXQgKi8KIAlzZW5kX2NvdW50ID0gMDsKIAlmb3IgKGlvdmNudCA9IDA7IG0g
IT0gTlVMTCAmJiBpb3ZjbnQgPCBNQVhMRU5fTUJVRl9DSEFJTjsgbSA9IG0tPm1fbmV4dCwgaW92
Y250KyspIHsKLSNpZiAhZGVmaW5lZCAoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiAhZGVm
aW5lZChfV0lOMzIpCiAJCXNlbmRfaW92ZWNbaW92Y250XS5pb3ZfYmFzZSA9IChjYWRkcl90KW0t
Pm1fZGF0YTsKIAkJc2VuZF9pb3ZlY1tpb3ZjbnRdLmlvdl9sZW4gPSBTQ1RQX0JVRl9MRU4obSk7
CiAJCXNlbmRfY291bnQgKz0gc2VuZF9pb3ZlY1tpb3ZjbnRdLmlvdl9sZW47CkBAIC0zMjUzLDcg
KzMwOTYsNyBAQCB2b2lkIHNjdHBfdXNlcnNwYWNlX2lwNl9vdXRwdXQoaW50ICpyZXN1bHQsIHN0
cnVjdCBtYnVmICpvX3BhaywKIAkJZ290byBmcmVlX21idWY7CiAJfQogCi0jaWYgIWRlZmluZWQg
KF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgIWRlZmluZWQoX1dJTjMyKQogCW1zZ19oZHIu
bXNnX25hbWUgPSAoc3RydWN0IHNvY2thZGRyICopICZkc3Q7CiAJbXNnX2hkci5tc2dfbmFtZWxl
biA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KTsKIAltc2dfaGRyLm1zZ19pb3YgPSBzZW5k
X2lvdmVjOwpAQCAtMzI2MywxMiArMzEwNiwxMiBAQCB2b2lkIHNjdHBfdXNlcnNwYWNlX2lwNl9v
dXRwdXQoaW50ICpyZXN1bHQsIHN0cnVjdCBtYnVmICpvX3BhaywKIAltc2dfaGRyLm1zZ19mbGFn
cyA9IDA7CiAKIAlpZiAoKCF1c2VfdWRwX3R1bm5lbGluZykgJiYgKFNDVFBfQkFTRV9WQVIodXNl
cnNwYWNlX3Jhd3NjdHA2KSAhPSAtMSkpIHsKLQkJaWYgKChyZXMgPSBzZW5kbXNnKFNDVFBfQkFT
RV9WQVIodXNlcnNwYWNlX3Jhd3NjdHA2KSwgJm1zZ19oZHIsIE1TR19ET05UV0FJVCkpICE9IHNl
bmRfbGVuKSB7CisJCWlmIChzZW5kbXNnKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jhd3NjdHA2
KSwgJm1zZ19oZHIsIE1TR19ET05UV0FJVCk8IDApIHsKIAkJCSpyZXN1bHQgPSBlcnJubzsKIAkJ
fQogCX0KIAlpZiAoKHVzZV91ZHBfdHVubmVsaW5nKSAmJiAoU0NUUF9CQVNFX1ZBUih1c2Vyc3Bh
Y2VfdWRwc2N0cDYpICE9IC0xKSkgewotCQlpZiAoKHJlcyA9IHNlbmRtc2coU0NUUF9CQVNFX1ZB
Uih1c2Vyc3BhY2VfdWRwc2N0cDYpLCAmbXNnX2hkciwgTVNHX0RPTlRXQUlUKSkgIT0gc2VuZF9s
ZW4pIHsKKwkJaWYgKHNlbmRtc2coU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfdWRwc2N0cDYpLCAm
bXNnX2hkciwgTVNHX0RPTlRXQUlUKSA8IDApIHsKIAkJCSpyZXN1bHQgPSBlcnJubzsKIAkJfQog
CX0KQEAgLTMyODUsMTUgKzMxMjgsMTEgQEAgdm9pZCBzY3RwX3VzZXJzcGFjZV9pcDZfb3V0cHV0
KGludCAqcmVzdWx0LCBzdHJ1Y3QgbWJ1ZiAqb19wYWssCiAJaWYgKCghdXNlX3VkcF90dW5uZWxp
bmcpICYmIChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3RwNikgIT0gLTEpKSB7CiAJCWlm
IChXU0FTZW5kVG8oU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfcmF3c2N0cDYpLCAoTFBXU0FCVUYp
IHNlbmRfaW92ZWMsIGlvdmNudCwgJndpbl9zZW50X2xlbiwgd2luX21zZ19oZHIuZHdGbGFncywg
d2luX21zZ19oZHIubmFtZSwgKGludCkgd2luX21zZ19oZHIubmFtZWxlbiwgTlVMTCwgTlVMTCkg
IT0gMCkgewogCQkJKnJlc3VsdCA9IFdTQUdldExhc3RFcnJvcigpOwotCQl9IGVsc2UgaWYgKHdp
bl9zZW50X2xlbiAhPSBzZW5kX2xlbikgewotCQkJKnJlc3VsdCA9IFdTQUdldExhc3RFcnJvcigp
OwogCQl9CiAJfQogCWlmICgodXNlX3VkcF90dW5uZWxpbmcpICYmIChTQ1RQX0JBU0VfVkFSKHVz
ZXJzcGFjZV91ZHBzY3RwNikgIT0gLTEpKSB7CiAJCWlmIChXU0FTZW5kVG8oU0NUUF9CQVNFX1ZB
Uih1c2Vyc3BhY2VfdWRwc2N0cDYpLCAoTFBXU0FCVUYpIHNlbmRfaW92ZWMsIGlvdmNudCwgJndp
bl9zZW50X2xlbiwgd2luX21zZ19oZHIuZHdGbGFncywgd2luX21zZ19oZHIubmFtZSwgKGludCkg
d2luX21zZ19oZHIubmFtZWxlbiwgTlVMTCwgTlVMTCkgIT0gMCkgewogCQkJKnJlc3VsdCA9IFdT
QUdldExhc3RFcnJvcigpOwotCQl9IGVsc2UgaWYgKHdpbl9zZW50X2xlbiAhPSBzZW5kX2xlbikg
ewotCQkJKnJlc3VsdCA9IFdTQUdldExhc3RFcnJvcigpOwogCQl9CiAJfQogI2VuZGlmCkBAIC0z
MzcxLDE5ICszMjEwLDM0IEBAIHVzcnNjdHBfZHVtcHBhY2tldChjb25zdCB2b2lkICpidWYsIHNp
emVfdCBsZW4sIGludCBvdXRib3VuZCkKICNpZmRlZiBfV0lOMzIKIAlmdGltZSgmdGIpOwogCWxv
Y2FsdGltZV9zKCZ0LCAmdGIudGltZSk7Ci0JX3NucHJpbnRmX3MoZHVtcF9idWYsIFBSRUFNQkxF
X0xFTkdUSCArIDEsIFBSRUFNQkxFX0xFTkdUSCwgUFJFQU1CTEVfRk9STUFULAotCSAgICAgICAg
ICAgIG91dGJvdW5kID8gJ08nIDogJ0knLAotCSAgICAgICAgICAgIHQudG1faG91ciwgdC50bV9t
aW4sIHQudG1fc2VjLCAobG9uZykoMTAwMCAqIHRiLm1pbGxpdG0pKTsKKyNpZiBkZWZpbmVkKF9f
TUlOR1czMl9fKQorCWlmIChzbnByaW50ZihkdW1wX2J1ZiwgUFJFQU1CTEVfTEVOR1RIICsgMSwg
UFJFQU1CTEVfRk9STUFULAorCSAgICAgICAgICAgICBvdXRib3VuZCA/ICdPJyA6ICdJJywKKwkg
ICAgICAgICAgICAgdC50bV9ob3VyLCB0LnRtX21pbiwgdC50bV9zZWMsIChsb25nKSgxMDAwICog
dGIubWlsbGl0bSkpIDwgMCkgeworCQlmcmVlKGR1bXBfYnVmKTsKKwkJcmV0dXJuIChOVUxMKTsK
Kwl9CisjZWxzZQorCWlmIChfc25wcmludGZfcyhkdW1wX2J1ZiwgUFJFQU1CTEVfTEVOR1RIICsg
MSwgUFJFQU1CTEVfTEVOR1RILCBQUkVBTUJMRV9GT1JNQVQsCisJICAgICAgICAgICAgICAgIG91
dGJvdW5kID8gJ08nIDogJ0knLAorCSAgICAgICAgICAgICAgICB0LnRtX2hvdXIsIHQudG1fbWlu
LCB0LnRtX3NlYywgKGxvbmcpKDEwMDAgKiB0Yi5taWxsaXRtKSkgPCAwKSB7CisJCWZyZWUoZHVt
cF9idWYpOworCQlyZXR1cm4gKE5VTEwpOworCX0KKyNlbmRpZgogI2Vsc2UKIAlnZXR0aW1lb2Zk
YXkoJnR2LCBOVUxMKTsKIAlzZWMgPSAodGltZV90KXR2LnR2X3NlYzsKIAlsb2NhbHRpbWVfcigo
Y29uc3QgdGltZV90ICopJnNlYywgJnQpOwotCXNucHJpbnRmKGR1bXBfYnVmLCBQUkVBTUJMRV9M
RU5HVEggKyAxLCBQUkVBTUJMRV9GT1JNQVQsCi0JICAgICAgICAgb3V0Ym91bmQgPyAnTycgOiAn
SScsCi0JICAgICAgICAgdC50bV9ob3VyLCB0LnRtX21pbiwgdC50bV9zZWMsIChsb25nKXR2LnR2
X3VzZWMpOworCWlmIChzbnByaW50ZihkdW1wX2J1ZiwgUFJFQU1CTEVfTEVOR1RIICsgMSwgUFJF
QU1CTEVfRk9STUFULAorCSAgICAgICAgICAgICBvdXRib3VuZCA/ICdPJyA6ICdJJywKKwkgICAg
ICAgICAgICAgdC50bV9ob3VyLCB0LnRtX21pbiwgdC50bV9zZWMsIChsb25nKXR2LnR2X3VzZWMp
IDwgMCkgeworCQlmcmVlKGR1bXBfYnVmKTsKKwkJcmV0dXJuIChOVUxMKTsKKwl9CiAjZW5kaWYK
IAlwb3MgKz0gUFJFQU1CTEVfTEVOR1RIOwotI2lmZGVmIF9XSU4zMgorI2lmIGRlZmluZWQoX1dJ
TjMyKSAmJiAhZGVmaW5lZChfX01JTkdXMzJfXykKIAlzdHJuY3B5X3MoZHVtcF9idWYgKyBwb3Ms
IHN0cmxlbihIRUFERVIpICsgMSwgSEVBREVSLCBzdHJsZW4oSEVBREVSKSk7CiAjZWxzZQogCXN0
cmNweShkdW1wX2J1ZiArIHBvcywgSEVBREVSKTsKQEAgLTM0MDAsNyArMzI1NCw3IEBAIHVzcnNj
dHBfZHVtcHBhY2tldChjb25zdCB2b2lkICpidWYsIHNpemVfdCBsZW4sIGludCBvdXRib3VuZCkK
IAkJZHVtcF9idWZbcG9zKytdID0gbG93IDwgMTAgPyAnMCcgKyBsb3cgOiAnYScgKyAobG93IC0g
MTApOwogCQlkdW1wX2J1Zltwb3MrK10gPSAnICc7CiAJfQotI2lmZGVmIF9XSU4zMgorI2lmIGRl
ZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX01JTkdXMzJfXykKIAlzdHJuY3B5X3MoZHVtcF9i
dWYgKyBwb3MsIHN0cmxlbihUUkFJTEVSKSArIDEsIFRSQUlMRVIsIHN0cmxlbihUUkFJTEVSKSk7
CiAjZWxzZQogCXN0cmNweShkdW1wX2J1ZiArIHBvcywgVFJBSUxFUik7CkBAIC0zNDQzLDkgKzMy
OTcsMTAgQEAgdm9pZAogdXNyc2N0cF9jb25uaW5wdXQodm9pZCAqYWRkciwgY29uc3Qgdm9pZCAq
YnVmZmVyLCBzaXplX3QgbGVuZ3RoLCB1aW50OF90IGVjbl9iaXRzKQogewogCXN0cnVjdCBzb2Nr
YWRkcl9jb25uIHNyYywgZHN0OwotCXN0cnVjdCBtYnVmICptOworCXN0cnVjdCBtYnVmICptLCAq
bW07CiAJc3RydWN0IHNjdHBoZHIgKnNoOwogCXN0cnVjdCBzY3RwX2NodW5raGRyICpjaDsKKwlp
bnQgcmVtYWluaW5nOwogCiAJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfcmVjdnBhY2tldHMpOwogCVND
VFBfU1RBVF9JTkNSX0NPVU5URVI2NChzY3Rwc19pbnBhY2tldHMpOwpAQCAtMzQ2NCw2ICszMzE5
LDE2IEBAIHVzcnNjdHBfY29ubmlucHV0KHZvaWQgKmFkZHIsIGNvbnN0IHZvaWQgKmJ1ZmZlciwg
c2l6ZV90IGxlbmd0aCwgdWludDhfdCBlY25fYml0CiAJaWYgKChtID0gc2N0cF9nZXRfbWJ1Zl9m
b3JfbXNnKCh1bnNpZ25lZCBpbnQpbGVuZ3RoLCAxLCBNX05PV0FJVCwgMCwgTVRfREFUQSkpID09
IE5VTEwpIHsKIAkJcmV0dXJuOwogCX0KKwkvKiBTZXQgdGhlIGxlbmd0aHMgZmllbGRzIG9mIHRo
ZSBtYnVmIGNoYWluLgorCSAqIFRoaXMgaXMgZXhwZWN0ZWQgYnkgbV9jb3B5YmFjaygpLgorCSAq
LworCXJlbWFpbmluZyA9IChpbnQpbGVuZ3RoOworCWZvciAobW0gPSBtOyBtbSAhPSBOVUxMOyBt
bSA9IG1tLT5tX25leHQpIHsKKwkJbW0tPm1fbGVuID0gbWluKChpbnQpTV9TSVpFKG1tKSwgcmVt
YWluaW5nKTsKKwkJbS0+bV9wa3RoZHIubGVuICs9IG1tLT5tX2xlbjsKKwkJcmVtYWluaW5nIC09
IG1tLT5tX2xlbjsKKwl9CisJS0FTU0VSVChyZW1haW5pbmcgPT0gMCwgKCJ1c3JzY3RwX2Nvbm5p
bnB1dDogJXp1IGJ5dGVzIGxlZnQiLCByZW1haW5pbmcpKTsKIAltX2NvcHliYWNrKG0sIDAsIChp
bnQpbGVuZ3RoLCAoY2FkZHJfdClidWZmZXIpOwogCWlmIChTQ1RQX0JVRl9MRU4obSkgPCAoaW50
KShzaXplb2Yoc3RydWN0IHNjdHBoZHIpICsgc2l6ZW9mKHN0cnVjdCBzY3RwX2NodW5raGRyKSkp
IHsKIAkJaWYgKChtID0gbV9wdWxsdXAobSwgc2l6ZW9mKHN0cnVjdCBzY3RwaGRyKSArIHNpemVv
ZihzdHJ1Y3Qgc2N0cF9jaHVua2hkcikpKSA9PSBOVUxMKSB7CkBAIC0zNDg4LDYgKzMzNTMsNTQg
QEAgdXNyc2N0cF9jb25uaW5wdXQodm9pZCAqYWRkciwgY29uc3Qgdm9pZCAqYnVmZmVyLCBzaXpl
X3QgbGVuZ3RoLCB1aW50OF90IGVjbl9iaXQKIAlyZXR1cm47CiB9CiAKK3ZvaWQgdXNyc2N0cF9o
YW5kbGVfdGltZXJzKHVpbnQzMl90IGVsYXBzZWRfbWlsbGlzZWNvbmRzKQoreworCXNjdHBfaGFu
ZGxlX3RpY2soc2N0cF9tc2Vjc190b190aWNrcyhlbGFwc2VkX21pbGxpc2Vjb25kcykpOworfQor
CitpbnQKK3VzcnNjdHBfZ2V0X2V2ZW50cyhzdHJ1Y3Qgc29ja2V0ICpzbykKK3sKKwlpbnQgZXZl
bnRzID0gMDsKKworCWlmIChzbyA9PSBOVUxMKSB7CisJCWVycm5vID0gRUJBREY7CisJCXJldHVy
biAtMTsKKwl9CisKKwlTT0NLX0xPQ0soc28pOworCWlmIChzb3JlYWRhYmxlKHNvKSkgeworCQll
dmVudHMgfD0gU0NUUF9FVkVOVF9SRUFEOworCX0KKwlpZiAoc293cml0ZWFibGUoc28pKSB7CisJ
CWV2ZW50cyB8PSBTQ1RQX0VWRU5UX1dSSVRFOworCX0KKwlpZiAoc28tPnNvX2Vycm9yKSB7CisJ
CWV2ZW50cyB8PSBTQ1RQX0VWRU5UX0VSUk9SOworCX0KKwlTT0NLX1VOTE9DSyhzbyk7CisKKwly
ZXR1cm4gZXZlbnRzOworfQorCitpbnQKK3VzcnNjdHBfc2V0X3VwY2FsbChzdHJ1Y3Qgc29ja2V0
ICpzbywgdm9pZCAoKnVwY2FsbCkoc3RydWN0IHNvY2tldCAqLCB2b2lkICosIGludCksIHZvaWQg
KmFyZykKK3sKKwlpZiAoc28gPT0gTlVMTCkgeworCQllcnJubyA9IEVCQURGOworCQlyZXR1cm4g
KC0xKTsKKwl9CisKKwlTT0NLX0xPQ0soc28pOworCXNvLT5zb191cGNhbGwgPSB1cGNhbGw7CisJ
c28tPnNvX3VwY2FsbGFyZyA9IGFyZzsKKwlzby0+c29fc25kLnNiX2ZsYWdzIHw9IFNCX1VQQ0FM
TDsKKwlzby0+c29fcmN2LnNiX2ZsYWdzIHw9IFNCX1VQQ0FMTDsKKwlTT0NLX1VOTE9DSyhzbyk7
CisKKwlyZXR1cm4gKDApOworfQorCiAjZGVmaW5lIFVTUlNDVFBfVFVOQUJMRV9TRVRfREVGKF9f
ZmllbGQsIF9fcHJlZml4KSAgIFwKIGludCB1c3JzY3RwX3R1bmFibGVfc2V0XyAjIyBfX2ZpZWxk
KHVpbnQzMl90IHZhbHVlKSAgXAogeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCkBAIC0zNTE4LDcgKzM0MzEsNyBAQCBpbnQgdXNyc2N0cF9zeXNj
dGxfc2V0XyAjIyBfX2ZpZWxkKHVpbnQzMl90IHZhbHVlKSAgIFwKIAl9ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiB9CiAKLSNpZiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9vc19XaW5kb3dzKQorI2lmIF9fR05VQ19fID49IDUgfHwgKF9fR05VQ19fID09IDQgJiYg
X19HTlVDX01JTk9SX18gPj0gNikgfHwgZGVmaW5lZChfX2NsYW5nX18pCiAjcHJhZ21hIEdDQyBk
aWFnbm9zdGljIHB1c2gKICNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVd0eXBlLWxp
bWl0cyIKICNlbmRpZgpAQCAtMzU5MSw4ICszNTA0LDggQEAgVVNSU0NUUF9TWVNDVExfU0VUX0RF
RihzY3RwX2luaXRpYWxfY3duZCwgU0NUUENUTF9JTklUSUFMX0NXTkQpCiAjaWZkZWYgU0NUUF9E
RUJVRwogVVNSU0NUUF9TWVNDVExfU0VUX0RFRihzY3RwX2RlYnVnX29uLCBTQ1RQQ1RMX0RFQlVH
KQogI2VuZGlmCi0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKLSNwcmFnbWEg
R0NDIGRpYWdub3N0aWMgcHVzaAorI2lmIF9fR05VQ19fID49IDUgfHwgKF9fR05VQ19fID09IDQg
JiYgX19HTlVDX01JTk9SX18gPj0gNikgfHwgZGVmaW5lZChfX2NsYW5nX18pCisjcHJhZ21hIEdD
QyBkaWFnbm9zdGljIHBvcAogI2VuZGlmCiAKICNkZWZpbmUgVVNSU0NUUF9TWVNDVExfR0VUX0RF
RihfX2ZpZWxkKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfc29ja2V0
dmFyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3Vz
cnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfc29ja2V0dmFyLmgKb2xkIG1vZGUgMTAw
NjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCBmZmM4MjcwZWZkYTQ2ZjhiY2M5OWU5YjUxODQyNjVm
MDY4ZjI5Yzk0Li42Yjc5YjU5MDhjMDY5ZmYxZjY2ZGQyZmNmNWM2MWM0NDA1MGQyMTRhCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9zb2NrZXR2YXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3Jz
Y3RwbGliL3VzZXJfc29ja2V0dmFyLmgKQEAgLTMzLDcgKzMzLDcgQEAKICNpZm5kZWYgX1VTRVJf
U09DS0VUVkFSX0hfCiAjZGVmaW5lIF9VU0VSX1NPQ0tFVFZBUl9IXwogCi0jaWYgZGVmaW5lZChf
X1VzZXJzcGFjZV9vc19EYXJ3aW4pCisjaWYgZGVmaW5lZChfX0FQUExFX18pCiAjaW5jbHVkZSA8
c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjZW5kaWYKQEAgLTQyLDcgKzQyLDcg
QEAKIC8qICNpbmNsdWRlIDxzeXMvX2xvY2suaD4gIHdhcyAwIGJ5dGUgZmlsZSAqLwogLyogI2lu
Y2x1ZGUgPHN5cy9fbXV0ZXguaD4gd2FzIDAgYnl0ZSBmaWxlICovCiAvKiAjaW5jbHVkZSA8c3lz
L19zeC5oPiAqLyAvKl9fVXNlcnNwYWNlX18gYWx0ZXJuYXRpdmU/Ki8KLSNpZiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9vc19EcmFnb25GbHkpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0ZyZWVC
U0QpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX05ldEJTRCkgJiYgIWRlZmluZWQoX19Vc2Vy
c3BhY2Vfb3NfV2luZG93cykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfTmFDbCkKKyNpZiAh
ZGVmaW5lZChfX0RyYWdvbkZseV9fKSAmJiAhZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmlu
ZWQoX19OZXRCU0RfXykgJiYgIWRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX25hdGl2ZV9j
bGllbnRfXykKICNpbmNsdWRlIDxzeXMvdWlvLmg+CiAjZW5kaWYKICNkZWZpbmUgU09DS19NQVhB
RERSTEVOIDI1NQpAQCAtNTQsMTYgKzU0LDE2IEBACiAjZGVmaW5lIFNTX0NBTlRSQ1ZNT1JFIDB4
MDIwCiAjZGVmaW5lIFNTX0NBTlRTRU5ETU9SRSAweDAxMAogCi0jaWYgZGVmaW5lZChfX1VzZXJz
cGFjZV9vc19EYXJ3aW4pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRHJhZ29uRmx5KSB8fCBk
ZWZpbmVkKF9fVXNlcnNwYWNlX29zX0ZyZWVCU0QpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3Nf
T3BlbkJTRCkgfHwgZGVmaW5lZCAoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykgfHwgZGVmaW5lZChf
X1VzZXJzcGFjZV9vc19OYUNsKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9f
RHJhZ29uRmx5X18pIHx8IGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19PcGVuQlNE
X18pIHx8IGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9fKQogI2Rl
ZmluZSBVSU9fTUFYSU9WIDEwMjQKICNkZWZpbmUgRVJFU1RBUlQgKC0xKQogI2VuZGlmCiAKLSNp
ZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19EYXJ3aW4pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X29zX05ldEJTRCkgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfT3BlbkJTRCkKKyNpZiAhZGVm
aW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fTmV0QlNEX18pICYmICFkZWZpbmVkKF9fT3Bl
bkJTRF9fKQogZW51bQl1aW9fcncgeyBVSU9fUkVBRCwgVUlPX1dSSVRFIH07CiAjZW5kaWYKIAot
I2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX05ldEJTRCkgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2Vfb3NfT3BlbkJTRCkKKyNpZiAhZGVmaW5lZChfX05ldEJTRF9fKSAmJiAhZGVmaW5lZChfX09w
ZW5CU0RfXykKIC8qIFNlZ21lbnQgZmxhZyB2YWx1ZXMuICovCiBlbnVtIHVpb19zZWcgewogCVVJ
T19VU0VSU1BBQ0UsCQkvKiBmcm9tIHVzZXIgZGF0YSBzcGFjZSAqLwpAQCAtNzIsNyArNzIsNyBA
QCBlbnVtIHVpb19zZWcgewogI2VuZGlmCiAKIHN0cnVjdCBwcm9jIHsKLSAgICBpbnQgc3R1Yjsg
Lyogc3RydWN0IHByb2MgaXMgYSBkdW1teSBmb3IgX19Vc2Vyc3BhY2VfXyAqLworCWludCBzdHVi
OyAvKiBzdHJ1Y3QgcHJvYyBpcyBhIGR1bW15IGZvciBfX1VzZXJzcGFjZV9fICovCiB9OwogCiBN
QUxMT0NfREVDTEFSRShNX0FDQ0YpOwpAQCAtODMsMTIgKzgzLDEyIEBAIE1BTExPQ19ERUNMQVJF
KE1fU09OQU1FKTsKICAqIFJlbW92aW5nIHN0cnVjdCB0aHJlYWQgKnVpb190ZDsgICAgb3duZXIg
ZmllbGQKICovCiBzdHJ1Y3QgdWlvIHsKLSAgICBzdHJ1Y3QJaW92ZWMgKnVpb19pb3Y7CQkvKiBz
Y2F0dGVyL2dhdGhlciBsaXN0ICovCi0gICAgaW50CQl1aW9faW92Y250OwkJLyogbGVuZ3RoIG9m
IHNjYXR0ZXIvZ2F0aGVyIGxpc3QgKi8KLSAgICBvZmZfdAl1aW9fb2Zmc2V0OwkJLyogb2Zmc2V0
IGluIHRhcmdldCBvYmplY3QgKi8KLSAgICBzc2l6ZV90IAl1aW9fcmVzaWQ7CQkvKiByZW1haW5p
bmcgYnl0ZXMgdG8gcHJvY2VzcyAqLwotICAgIGVudW0JdWlvX3NlZyB1aW9fc2VnZmxnOwkvKiBh
ZGRyZXNzIHNwYWNlICovCi0gICAgZW51bQl1aW9fcncgdWlvX3J3OwkJLyogb3BlcmF0aW9uICov
CisJc3RydWN0CWlvdmVjICp1aW9faW92OwkJLyogc2NhdHRlci9nYXRoZXIgbGlzdCAqLworCWlu
dAkJdWlvX2lvdmNudDsJCS8qIGxlbmd0aCBvZiBzY2F0dGVyL2dhdGhlciBsaXN0ICovCisJb2Zm
X3QJdWlvX29mZnNldDsJCS8qIG9mZnNldCBpbiB0YXJnZXQgb2JqZWN0ICovCisJc3NpemVfdCAJ
dWlvX3Jlc2lkOwkJLyogcmVtYWluaW5nIGJ5dGVzIHRvIHByb2Nlc3MgKi8KKwllbnVtCXVpb19z
ZWcgdWlvX3NlZ2ZsZzsJLyogYWRkcmVzcyBzcGFjZSAqLworCWVudW0JdWlvX3J3IHVpb19ydzsJ
CS8qIG9wZXJhdGlvbiAqLwogfTsKIAogCkBAIC0xMDAsOSArMTAwLDExIEBAIHN0cnVjdCB1aW8g
ewogICogaGFuZGxlIG9uIHByb3RvY29sIGFuZCBwb2ludGVyIHRvIHByb3RvY29sCiAgKiBwcml2
YXRlIGRhdGEgYW5kIGVycm9yIGluZm9ybWF0aW9uLgogICovCi0jaWYgZGVmaW5lZCAoX19Vc2Vy
c3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKICNkZWZpbmUgQUZfUk9VVEUg
IDE3CisjaWYgIWRlZmluZWQoX19NSU5HVzMyX18pCiB0eXBlZGVmIF9faW50MzIgcGlkX3Q7Cisj
ZW5kaWYKIHR5cGVkZWYgdW5zaWduZWQgX19pbnQzMiB1aWRfdDsKIGVudW0gc2lnVHlwZSB7CiAJ
U0lHTkFMID0gMCwKQEAgLTIzNSw3ICsyMzcsNyBAQCBzdHJ1Y3Qgc29ja2V0IHsKICAqIGF2b2lk
IGRlZmluaW5nIGEgbG9jayBvcmRlciBiZXR3ZWVuIGxpc3RlbiBhbmQgYWNjZXB0IHNvY2tldHMK
ICAqIHVudGlsIHN1Y2ggdGltZSBhcyBpdCBwcm92ZXMgdG8gYmUgYSBnb29kIGlkZWEuCiAgKi8K
LSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIp
CiBleHRlcm4gdXNlcmxhbmRfbXV0ZXhfdCBhY2NlcHRfbXR4OwogZXh0ZXJuIHVzZXJsYW5kX2Nv
bmRfdCBhY2NlcHRfY29uZDsKICNkZWZpbmUgQUNDRVBUX0xPQ0tfQVNTRVJUKCkKQEAgLTI3MCw3
ICsyNzIsNyBAQCBleHRlcm4gdXNlcmxhbmRfY29uZF90IGFjY2VwdF9jb25kOwogICogYnVmZmVy
LgogICovCiAjZGVmaW5lCVNPQ0tCVUZfTVRYKF9zYikgKCYoX3NiKS0+c2JfbXR4KQotI2lmIGRl
ZmluZWQgKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAjZGVm
aW5lIFNPQ0tCVUZfTE9DS19JTklUKF9zYiwgX25hbWUpIFwKIAlJbml0aWFsaXplQ3JpdGljYWxT
ZWN0aW9uKFNPQ0tCVUZfTVRYKF9zYikpCiAjZGVmaW5lIFNPQ0tCVUZfTE9DS19ERVNUUk9ZKF9z
YikgRGVsZXRlQ3JpdGljYWxTZWN0aW9uKFNPQ0tCVUZfTVRYKF9zYikpCkBAIC0zNjUsMzM4ICsz
NjcsMTEgQEAgZXh0ZXJuIHVzZXJsYW5kX2NvbmRfdCBhY2NlcHRfY29uZDsKICNkZWZpbmUJU1Ff
Q09NUAkJCTB4MTAwMAkvKiB1bmFjY2VwdGVkLCBjb21wbGV0ZSBjb25uZWN0aW9uICovCiAKIC8q
Ci0gKiBFeHRlcm5hbGl6ZWQgZm9ybSBvZiBzdHJ1Y3Qgc29ja2V0IHVzZWQgYnkgdGhlIHN5c2N0
bCgzKSBpbnRlcmZhY2UuCi0gKi8KLXN0cnVjdCB4c29ja2V0IHsKLQlzaXplX3QJeHNvX2xlbjsJ
LyogbGVuZ3RoIG9mIHRoaXMgc3RydWN0dXJlICovCi0Jc3RydWN0CXNvY2tldCAqeHNvX3NvOwkv
KiBtYWtlcyBhIGNvbnZlbmllbnQgaGFuZGxlIHNvbWV0aW1lcyAqLwotCXNob3J0CXNvX3R5cGU7
Ci0Jc2hvcnQJc29fb3B0aW9uczsKLQlzaG9ydAlzb19saW5nZXI7Ci0Jc2hvcnQJc29fc3RhdGU7
Ci0JY2FkZHJfdAlzb19wY2I7CQkvKiBhbm90aGVyIGNvbnZlbmllbnQgaGFuZGxlICovCi0JaW50
CXhzb19wcm90b2NvbDsKLQlpbnQJeHNvX2ZhbWlseTsKLQl1X3Nob3J0CXNvX3FsZW47Ci0JdV9z
aG9ydAlzb19pbmNxbGVuOwotCXVfc2hvcnQJc29fcWxpbWl0OwotCXNob3J0CXNvX3RpbWVvOwot
CXVfc2hvcnQJc29fZXJyb3I7Ci0JcGlkX3QJc29fcGdpZDsKLQl1X2xvbmcJc29fb29ibWFyazsK
LQlzdHJ1Y3QgeHNvY2tidWYgewotCQl1X2ludAlzYl9jYzsKLQkJdV9pbnQJc2JfaGl3YXQ7Ci0J
CXVfaW50CXNiX21iY250OwotCQl1X2ludAlzYl9tYm1heDsKLQkJaW50CXNiX2xvd2F0OwotCQlp
bnQJc2JfdGltZW87Ci0JCXNob3J0CXNiX2ZsYWdzOwotCX0gc29fcmN2LCBzb19zbmQ7Ci0JdWlk
X3QJc29fdWlkOwkJLyogWFhYICovCi19OwotCi0jaWYgZGVmaW5lZChfS0VSTkVMKQotCi0KLS8q
Ci0gKiBNYWNyb3MgZm9yIHNvY2tldHMgYW5kIHNvY2tldCBidWZmZXJpbmcuCi0gKi8KLQotLyoK
LSAqIERvIHdlIG5lZWQgdG8gbm90aWZ5IHRoZSBvdGhlciBzaWRlIHdoZW4gSS9PIGlzIHBvc3Np
YmxlPwotICovCi0jZGVmaW5lCXNiX25vdGlmeShzYikJKCgoc2IpLT5zYl9mbGFncyAmIChTQl9X
QUlUIHwgU0JfU0VMIHwgU0JfQVNZTkMgfCBcCi0gICAgU0JfVVBDQUxMIHwgU0JfQUlPIHwgU0Jf
S05PVEUpKSAhPSAwKQotCi0vKgotICogSG93IG11Y2ggc3BhY2UgaXMgdGhlcmUgaW4gYSBzb2Nr
ZXQgYnVmZmVyIChzby0+c29fc25kIG9yIHNvLT5zb19yY3YpPwotICogVGhpcyBpcyBwcm9ibGVt
YXRpY2FsIGlmIHRoZSBmaWVsZHMgYXJlIHVuc2lnbmVkLCBhcyB0aGUgc3BhY2UgbWlnaHQKLSAq
IHN0aWxsIGJlIG5lZ2F0aXZlIChjYyA+IGhpd2F0IG9yIG1iY250ID4gbWJtYXgpLiAgU2hvdWxk
IGRldGVjdAotICogb3ZlcmZsb3cgYW5kIHJldHVybiAwLiAgU2hvdWxkIHVzZSAibG1pbiIgYnV0
IGl0IGRvZXNuJ3QgZXhpc3Qgbm93LgotICovCi0jZGVmaW5lCXNic3BhY2Uoc2IpIFwKLSAgICAo
KGxvbmcpIGltaW4oKGludCkoKHNiKS0+c2JfaGl3YXQgLSAoc2IpLT5zYl9jYyksIFwKLQkgKGlu
dCkoKHNiKS0+c2JfbWJtYXggLSAoc2IpLT5zYl9tYmNudCkpKQotCi0vKiBkbyB3ZSBoYXZlIHRv
IHNlbmQgYWxsIGF0IG9uY2Ugb24gYSBzb2NrZXQ/ICovCi0jZGVmaW5lCXNvc2VuZGFsbGF0b25j
ZShzbykgXAotICAgICgoc28pLT5zb19wcm90by0+cHJfZmxhZ3MgJiBQUl9BVE9NSUMpCi0KLS8q
IGNhbiB3ZSByZWFkIHNvbWV0aGluZyBmcm9tIHNvPyAqLwotI2RlZmluZQlzb3JlYWRhYmxlKHNv
KSBcCi0gICAgKChzbyktPnNvX3Jjdi5zYl9jYyA+PSAoc28pLT5zb19yY3Yuc2JfbG93YXQgfHwg
XAotCSgoc28pLT5zb19yY3Yuc2Jfc3RhdGUgJiBTQlNfQ0FOVFJDVk1PUkUpIHx8IFwKLQkhVEFJ
TFFfRU1QVFkoJihzbyktPnNvX2NvbXApIHx8IChzbyktPnNvX2Vycm9yKQotCi0vKiBjYW4gd2Ug
d3JpdGUgc29tZXRoaW5nIHRvIHNvPyAqLwotI2RlZmluZQlzb3dyaXRlYWJsZShzbykgXAotICAg
ICgoc2JzcGFjZSgmKHNvKS0+c29fc25kKSA+PSAoc28pLT5zb19zbmQuc2JfbG93YXQgJiYgXAot
CSgoKHNvKS0+c29fc3RhdGUmU1NfSVNDT05ORUNURUQpIHx8IFwKLQkgICgoc28pLT5zb19wcm90
by0+cHJfZmxhZ3MmUFJfQ09OTlJFUVVJUkVEKT09MCkpIHx8IFwKLSAgICAgKChzbyktPnNvX3Nu
ZC5zYl9zdGF0ZSAmIFNCU19DQU5UU0VORE1PUkUpIHx8IFwKLSAgICAgKHNvKS0+c29fZXJyb3Ip
Ci0KLS8qIGFkanVzdCBjb3VudGVycyBpbiBzYiByZWZsZWN0aW5nIGFsbG9jYXRpb24gb2YgbSAq
LwotI2RlZmluZQlzYmFsbG9jKHNiLCBtKSB7IFwKLQkoc2IpLT5zYl9jYyArPSAobSktPm1fbGVu
OyBcCi0JaWYgKChtKS0+bV90eXBlICE9IE1UX0RBVEEgJiYgKG0pLT5tX3R5cGUgIT0gTVRfT09C
REFUQSkgXAotCQkoc2IpLT5zYl9jdGwgKz0gKG0pLT5tX2xlbjsgXAotCShzYiktPnNiX21iY250
ICs9IE1TSVpFOyBcCi0JaWYgKChtKS0+bV9mbGFncyAmIE1fRVhUKSBcCi0JCShzYiktPnNiX21i
Y250ICs9IChtKS0+bV9leHQuZXh0X3NpemU7IFwKLX0KLQotLyogYWRqdXN0IGNvdW50ZXJzIGlu
IHNiIHJlZmxlY3RpbmcgZnJlZWluZyBvZiBtICovCi0jZGVmaW5lCXNiZnJlZShzYiwgbSkgeyBc
Ci0JKHNiKS0+c2JfY2MgLT0gKG0pLT5tX2xlbjsgXAotCWlmICgobSktPm1fdHlwZSAhPSBNVF9E
QVRBICYmIChtKS0+bV90eXBlICE9IE1UX09PQkRBVEEpIFwKLQkJKHNiKS0+c2JfY3RsIC09ICht
KS0+bV9sZW47IFwKLQkoc2IpLT5zYl9tYmNudCAtPSBNU0laRTsgXAotCWlmICgobSktPm1fZmxh
Z3MgJiBNX0VYVCkgXAotCQkoc2IpLT5zYl9tYmNudCAtPSAobSktPm1fZXh0LmV4dF9zaXplOyBc
Ci0JaWYgKChzYiktPnNiX3NuZHB0ciA9PSAobSkpIHsgXAotCQkoc2IpLT5zYl9zbmRwdHIgPSBO
VUxMOyBcCi0JCShzYiktPnNiX3NuZHB0cm9mZiA9IDA7IFwKLQl9IFwKLQlpZiAoKHNiKS0+c2Jf
c25kcHRyb2ZmICE9IDApIFwKLQkJKHNiKS0+c2Jfc25kcHRyb2ZmIC09IChtKS0+bV9sZW47IFwK
LX0KLQotLyoKLSAqIHNvcmVmKCkvc29yZWxlKCkgcmVmLWNvdW50IHRoZSBzb2NrZXQgc3RydWN0
dXJlLiAgTm90ZSB0aGF0IHlvdSBtdXN0Ci0gKiBzdGlsbCBleHBsaWNpdGx5IGNsb3NlIHRoZSBz
b2NrZXQsIGJ1dCB0aGUgbGFzdCByZWYgY291bnQgd2lsbCBmcmVlCi0gKiB0aGUgc3RydWN0dXJl
LgotICovCi0jZGVmaW5lCXNvcmVmKHNvKSBkbyB7CQkJCQkJCVwKLQlTT0NLX0xPQ0tfQVNTRVJU
KHNvKTsJCQkJCQlcCi0JKysoc28pLT5zb19jb3VudDsJCQkJCQlcCi19IHdoaWxlICgwKQotCi0j
ZGVmaW5lCXNvcmVsZShzbykgZG8gewkJCQkJCQlcCi0JQUNDRVBUX0xPQ0tfQVNTRVJUKCk7CQkJ
CQkJXAotCVNPQ0tfTE9DS19BU1NFUlQoc28pOwkJCQkJCVwKLQlLQVNTRVJUKChzbyktPnNvX2Nv
dW50ID4gMCwgKCJzb3JlbGUiKSk7CQkJXAotCWlmICgtLShzbyktPnNvX2NvdW50ID09IDApCQkJ
CQlcCi0JCXNvZnJlZShzbyk7CQkJCQkJXAotCWVsc2UgewkJCQkJCQkJXAotCQlTT0NLX1VOTE9D
Syhzbyk7CQkJCQlcCi0JCUFDQ0VQVF9VTkxPQ0soKTsJCQkJCVwKLQl9CQkJCQkJCQlcCi19IHdo
aWxlICgwKQotCi0jZGVmaW5lCXNvdHJ5ZnJlZShzbykgZG8gewkJCQkJCVwKLQlBQ0NFUFRfTE9D
S19BU1NFUlQoKTsJCQkJCQlcCi0JU09DS19MT0NLX0FTU0VSVChzbyk7CQkJCQkJXAotCWlmICgo
c28pLT5zb19jb3VudCA9PSAwKQkJCQkJXAotCQlzb2ZyZWUoc28pOwkJCQkJCVwKLQllbHNlIHsJ
CQkJCQkJCVwKLQkJU09DS19VTkxPQ0soc28pOwkJCQkJXAotCQlBQ0NFUFRfVU5MT0NLKCk7CQkJ
CQlcCi0JfQkJCQkJCQkJXAotfSB3aGlsZSgwKQotCi0vKgotICogSW4gc29yd2FrZXVwKCkgYW5k
IHNvd3dha2V1cCgpLCBhY3F1aXJlIHRoZSBzb2NrZXQgYnVmZmVyIGxvY2sgdG8KLSAqIGF2b2lk
IGEgbm9uLWF0b21pYyB0ZXN0LWFuZC13YWtldXAuICBIb3dldmVyLCBzb3dha2V1cCBpcwotICog
cmVzcG9uc2libGUgZm9yIHJlbGVhc2luZyB0aGUgbG9jayBpZiBpdCBpcyBjYWxsZWQuICBXZSB1
bmxvY2sgb25seQotICogaWYgd2UgZG9uJ3QgY2FsbCBpbnRvIHNvd2FrZXVwLiAgSWYgYW55IGNv
ZGUgaXMgaW50cm9kdWNlZCB0aGF0Ci0gKiBkaXJlY3RseSBpbnZva2VzIHRoZSB1bmRlcmx5aW5n
IHNvd2FrZXVwKCkgcHJpbWl0aXZlcywgaXQgbXVzdAotICogbWFpbnRhaW4gdGhlIHNhbWUgc2Vt
YW50aWNzLgotICovCi0jZGVmaW5lCXNvcndha2V1cF9sb2NrZWQoc28pIGRvIHsJCQkJCVwKLQlT
T0NLQlVGX0xPQ0tfQVNTRVJUKCYoc28pLT5zb19yY3YpOwkJCQlcCi0JaWYgKHNiX25vdGlmeSgm
KHNvKS0+c29fcmN2KSkJCQkJCVwKLQkJc293YWtldXAoKHNvKSwgJihzbyktPnNvX3Jjdik7CSAJ
CQlcCi0JZWxzZQkJCQkJCQkJXAotCQlTT0NLQlVGX1VOTE9DSygmKHNvKS0+c29fcmN2KTsJCQkJ
XAotfSB3aGlsZSAoMCkKLQotI2RlZmluZQlzb3J3YWtldXAoc28pIGRvIHsJCQkJCQlcCi0JU09D
S0JVRl9MT0NLKCYoc28pLT5zb19yY3YpOwkJCQkJXAotCXNvcndha2V1cF9sb2NrZWQoc28pOwkJ
CQkJCVwKLX0gd2hpbGUgKDApCi0KLSNkZWZpbmUJc293d2FrZXVwX2xvY2tlZChzbykgZG8gewkJ
CQkJXAotCVNPQ0tCVUZfTE9DS19BU1NFUlQoJihzbyktPnNvX3NuZCk7CQkJCVwKLQlpZiAoc2Jf
bm90aWZ5KCYoc28pLT5zb19zbmQpKQkJCQkJXAotCQlzb3dha2V1cCgoc28pLCAmKHNvKS0+c29f
c25kKTsgCQkJCVwKLQllbHNlCQkJCQkJCQlcCi0JCVNPQ0tCVUZfVU5MT0NLKCYoc28pLT5zb19z
bmQpOwkJCQlcCi19IHdoaWxlICgwKQotCi0jZGVmaW5lCXNvd3dha2V1cChzbykgZG8gewkJCQkJ
CVwKLQlTT0NLQlVGX0xPQ0soJihzbyktPnNvX3NuZCk7CQkJCQlcCi0Jc293d2FrZXVwX2xvY2tl
ZChzbyk7CQkJCQkJXAotfSB3aGlsZSAoMCkKLQotLyoKLSAqIEFyZ3VtZW50IHN0cnVjdHVyZSBm
b3Igc29zZXRvcHQgZXQgc2VxLiAgVGhpcyBpcyBpbiB0aGUgS0VSTkVMCi0gKiBzZWN0aW9uIGJl
Y2F1c2UgaXQgd2lsbCBuZXZlciBiZSB2aXNpYmxlIHRvIHVzZXIgY29kZS4KLSAqLwotZW51bSBz
b3B0X2RpciB7IFNPUFRfR0VULCBTT1BUX1NFVCB9Owotc3RydWN0IHNvY2tvcHQgewotCWVudW0J
c29wdF9kaXIgc29wdF9kaXI7IC8qIGlzIHRoaXMgYSBnZXQgb3IgYSBzZXQ/ICovCi0JaW50CXNv
cHRfbGV2ZWw7CS8qIHNlY29uZCBhcmcgb2YgW2dzXWV0c29ja29wdCAqLwotCWludAlzb3B0X25h
bWU7CS8qIHRoaXJkIGFyZyBvZiBbZ3NdZXRzb2Nrb3B0ICovCi0Jdm9pZCAgICpzb3B0X3ZhbDsJ
LyogZm91cnRoIGFyZyBvZiBbZ3NdZXRzb2Nrb3B0ICovCi0Jc2l6ZV90CXNvcHRfdmFsc2l6ZTsJ
LyogKGFsbW9zdCkgZmlmdGggYXJnIG9mIFtnc11ldHNvY2tvcHQgKi8KLQlzdHJ1Y3QJdGhyZWFk
ICpzb3B0X3RkOyAvKiBjYWxsaW5nIHRocmVhZCBvciBudWxsIGlmIGtlcm5lbCAqLwotfTsKLQot
c3RydWN0IGFjY2VwdF9maWx0ZXIgewotCWNoYXIJYWNjZl9uYW1lWzE2XTsKLQl2b2lkCSgqYWNj
Zl9jYWxsYmFjaykKLQkJKHN0cnVjdCBzb2NrZXQgKnNvLCB2b2lkICphcmcsIGludCB3YWl0Zmxh
Zyk7Ci0Jdm9pZCAqCSgqYWNjZl9jcmVhdGUpCi0JCShzdHJ1Y3Qgc29ja2V0ICpzbywgY2hhciAq
YXJnKTsKLQl2b2lkCSgqYWNjZl9kZXN0cm95KQotCQkoc3RydWN0IHNvY2tldCAqc28pOwotCVNM
SVNUX0VOVFJZKGFjY2VwdF9maWx0ZXIpIGFjY2ZfbmV4dDsKLX07Ci0KLWV4dGVybiBpbnQJbWF4
c29ja2V0czsKLWV4dGVybiB1X2xvbmcJc2JfbWF4OwotZXh0ZXJuIHN0cnVjdCB1bWFfem9uZSAq
c29ja2V0X3pvbmU7Ci1leHRlcm4gc29fZ2VuX3Qgc29fZ2VuY250OwotCi1zdHJ1Y3QgbWJ1ZjsK
LXN0cnVjdCBzb2NrYWRkcjsKLXN0cnVjdCB1Y3JlZDsKLXN0cnVjdCB1aW87Ci0KLS8qCi0gKiBG
cm9tIHVpcGNfc29ja2V0IGFuZCBmcmllbmRzCi0gKi8KLWludAlkb19nZXRvcHRfYWNjZXB0X2Zp
bHRlcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2tvcHQgKnNvcHQpOwotaW50CWRvX3Nl
dG9wdF9hY2NlcHRfZmlsdGVyKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja29wdCAqc29w
dCk7Ci1pbnQJc29fc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IGxldmVsLCBpbnQg
b3B0bmFtZSwKLQkgICAgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0bGVuKTsKLWludAlzb2NrYXJn
cyhzdHJ1Y3QgbWJ1ZiAqKm1wLCBjYWRkcl90IGJ1ZiwgaW50IGJ1ZmxlbiwgaW50IHR5cGUpOwot
aW50CWdldHNvY2thZGRyKHN0cnVjdCBzb2NrYWRkciAqKm5hbXAsIGNhZGRyX3QgdWFkZHIsIHNp
emVfdCBsZW4pOwotdm9pZAlzYmFwcGVuZChzdHJ1Y3Qgc29ja2J1ZiAqc2IsIHN0cnVjdCBtYnVm
ICptKTsKLXZvaWQJc2JhcHBlbmRfbG9ja2VkKHN0cnVjdCBzb2NrYnVmICpzYiwgc3RydWN0IG1i
dWYgKm0pOwotdm9pZAlzYmFwcGVuZHN0cmVhbShzdHJ1Y3Qgc29ja2J1ZiAqc2IsIHN0cnVjdCBt
YnVmICptKTsKLXZvaWQJc2JhcHBlbmRzdHJlYW1fbG9ja2VkKHN0cnVjdCBzb2NrYnVmICpzYiwg
c3RydWN0IG1idWYgKm0pOwotaW50CXNiYXBwZW5kYWRkcihzdHJ1Y3Qgc29ja2J1ZiAqc2IsIGNv
bnN0IHN0cnVjdCBzb2NrYWRkciAqYXNhLAotCSAgICBzdHJ1Y3QgbWJ1ZiAqbTAsIHN0cnVjdCBt
YnVmICpjb250cm9sKTsKLWludAlzYmFwcGVuZGFkZHJfbG9ja2VkKHN0cnVjdCBzb2NrYnVmICpz
YiwgY29uc3Qgc3RydWN0IHNvY2thZGRyICphc2EsCi0JICAgIHN0cnVjdCBtYnVmICptMCwgc3Ry
dWN0IG1idWYgKmNvbnRyb2wpOwotaW50CXNiYXBwZW5kY29udHJvbChzdHJ1Y3Qgc29ja2J1ZiAq
c2IsIHN0cnVjdCBtYnVmICptMCwKLQkgICAgc3RydWN0IG1idWYgKmNvbnRyb2wpOwotaW50CXNi
YXBwZW5kY29udHJvbF9sb2NrZWQoc3RydWN0IHNvY2tidWYgKnNiLCBzdHJ1Y3QgbWJ1ZiAqbTAs
Ci0JICAgIHN0cnVjdCBtYnVmICpjb250cm9sKTsKLXZvaWQJc2JhcHBlbmRyZWNvcmQoc3RydWN0
IHNvY2tidWYgKnNiLCBzdHJ1Y3QgbWJ1ZiAqbTApOwotdm9pZAlzYmFwcGVuZHJlY29yZF9sb2Nr
ZWQoc3RydWN0IHNvY2tidWYgKnNiLCBzdHJ1Y3QgbWJ1ZiAqbTApOwotdm9pZAlzYmNoZWNrKHN0
cnVjdCBzb2NrYnVmICpzYik7Ci12b2lkCXNiY29tcHJlc3Moc3RydWN0IHNvY2tidWYgKnNiLCBz
dHJ1Y3QgbWJ1ZiAqbSwgc3RydWN0IG1idWYgKm4pOwotc3RydWN0IG1idWYgKgotCXNiY3JlYXRl
Y29udHJvbChjYWRkcl90IHAsIGludCBzaXplLCBpbnQgdHlwZSwgaW50IGxldmVsKTsKLXZvaWQJ
c2JkZXN0cm95KHN0cnVjdCBzb2NrYnVmICpzYiwgc3RydWN0IHNvY2tldCAqc28pOwotdm9pZAlz
YmRyb3Aoc3RydWN0IHNvY2tidWYgKnNiLCBpbnQgbGVuKTsKLXZvaWQJc2Jkcm9wX2xvY2tlZChz
dHJ1Y3Qgc29ja2J1ZiAqc2IsIGludCBsZW4pOwotdm9pZAlzYmRyb3ByZWNvcmQoc3RydWN0IHNv
Y2tidWYgKnNiKTsKLXZvaWQJc2Jkcm9wcmVjb3JkX2xvY2tlZChzdHJ1Y3Qgc29ja2J1ZiAqc2Ip
Owotdm9pZAlzYmZsdXNoKHN0cnVjdCBzb2NrYnVmICpzYik7Ci12b2lkCXNiZmx1c2hfbG9ja2Vk
KHN0cnVjdCBzb2NrYnVmICpzYik7Ci12b2lkCXNicmVsZWFzZShzdHJ1Y3Qgc29ja2J1ZiAqc2Is
IHN0cnVjdCBzb2NrZXQgKnNvKTsKLXZvaWQJc2JyZWxlYXNlX2xvY2tlZChzdHJ1Y3Qgc29ja2J1
ZiAqc2IsIHN0cnVjdCBzb2NrZXQgKnNvKTsKLWludAlzYnJlc2VydmUoc3RydWN0IHNvY2tidWYg
KnNiLCB1X2xvbmcgY2MsIHN0cnVjdCBzb2NrZXQgKnNvLAotCSAgICBzdHJ1Y3QgdGhyZWFkICp0
ZCk7Ci1pbnQJc2JyZXNlcnZlX2xvY2tlZChzdHJ1Y3Qgc29ja2J1ZiAqc2IsIHVfbG9uZyBjYywg
c3RydWN0IHNvY2tldCAqc28sCi0JICAgIHN0cnVjdCB0aHJlYWQgKnRkKTsKLXN0cnVjdCBtYnVm
ICoKLQlzYnNuZHB0cihzdHJ1Y3Qgc29ja2J1ZiAqc2IsIHVfaW50IG9mZiwgdV9pbnQgbGVuLCB1
X2ludCAqbW9mZik7Ci12b2lkCXNidG94c29ja2J1ZihzdHJ1Y3Qgc29ja2J1ZiAqc2IsIHN0cnVj
dCB4c29ja2J1ZiAqeHNiKTsKLWludAlzYndhaXQoc3RydWN0IHNvY2tidWYgKnNiKTsKLWludAlz
YmxvY2soc3RydWN0IHNvY2tidWYgKnNiLCBpbnQgZmxhZ3MpOwotdm9pZAlzYnVubG9jayhzdHJ1
Y3Qgc29ja2J1ZiAqc2IpOwotdm9pZAlzb2Fib3J0KHN0cnVjdCBzb2NrZXQgKnNvKTsKLWludAlz
b2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICoqbmFtKTsKLWludAlz
b2NoZWNrdWlkKHN0cnVjdCBzb2NrZXQgKnNvLCB1aWRfdCB1aWQpOwotaW50CXNvYmluZChzdHJ1
Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICpuYW0sIHN0cnVjdCB0aHJlYWQgKnRkKTsK
LXZvaWQJc29jYW50cmN2bW9yZShzdHJ1Y3Qgc29ja2V0ICpzbyk7Ci12b2lkCXNvY2FudHJjdm1v
cmVfbG9ja2VkKHN0cnVjdCBzb2NrZXQgKnNvKTsKLXZvaWQJc29jYW50c2VuZG1vcmUoc3RydWN0
IHNvY2tldCAqc28pOwotdm9pZAlzb2NhbnRzZW5kbW9yZV9sb2NrZWQoc3RydWN0IHNvY2tldCAq
c28pOwotaW50CXNvY2xvc2Uoc3RydWN0IHNvY2tldCAqc28pOwotaW50CXNvY29ubmVjdChzdHJ1
Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICpuYW0sIHN0cnVjdCB0aHJlYWQgKnRkKTsK
LWludAlzb2Nvbm5lY3QyKHN0cnVjdCBzb2NrZXQgKnNvMSwgc3RydWN0IHNvY2tldCAqc28yKTsK
LWludAlzb2Nvd19zZXR1cChzdHJ1Y3QgbWJ1ZiAqbTAsIHN0cnVjdCB1aW8gKnVpbyk7Ci1pbnQJ
c29jcmVhdGUoaW50IGRvbSwgc3RydWN0IHNvY2tldCAqKmFzbywgaW50IHR5cGUsIGludCBwcm90
bywKLQkgICAgc3RydWN0IHVjcmVkICpjcmVkLCBzdHJ1Y3QgdGhyZWFkICp0ZCk7Ci1pbnQJc29k
aXNjb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvKTsKLXN0cnVjdAlzb2NrYWRkciAqc29kdXBzb2Nr
YWRkcihjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKnNhLCBpbnQgbWZsYWdzKTsKLXZvaWQJc29mcmVl
KHN0cnVjdCBzb2NrZXQgKnNvKTsKLWludAlzb2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgc3Ry
dWN0IHNvY2tvcHQgKnNvcHQpOwotdm9pZAlzb2hhc291dG9mYmFuZChzdHJ1Y3Qgc29ja2V0ICpz
byk7Ci12b2lkCXNvaXNjb25uZWN0ZWQoc3RydWN0IHNvY2tldCAqc28pOwotdm9pZAlzb2lzY29u
bmVjdGluZyhzdHJ1Y3Qgc29ja2V0ICpzbyk7Ci12b2lkCXNvaXNkaXNjb25uZWN0ZWQoc3RydWN0
IHNvY2tldCAqc28pOwotdm9pZAlzb2lzZGlzY29ubmVjdGluZyhzdHJ1Y3Qgc29ja2V0ICpzbyk7
Ci1pbnQJc29saXN0ZW4oc3RydWN0IHNvY2tldCAqc28sIGludCBiYWNrbG9nLCBzdHJ1Y3QgdGhy
ZWFkICp0ZCk7Ci12b2lkCXNvbGlzdGVuX3Byb3RvKHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgYmFj
a2xvZyk7Ci1pbnQJc29saXN0ZW5fcHJvdG9fY2hlY2soc3RydWN0IHNvY2tldCAqc28pOwotc3Ry
dWN0IHNvY2tldCAqCi0Jc29uZXdjb25uKHN0cnVjdCBzb2NrZXQgKmhlYWQsIGludCBjb25uc3Rh
dHVzKTsKLWludAlzb29wdGNvcHlpbihzdHJ1Y3Qgc29ja29wdCAqc29wdCwgdm9pZCAqYnVmLCBz
aXplX3QgbGVuLCBzaXplX3QgbWlubGVuKTsKLWludAlzb29wdGNvcHlvdXQoc3RydWN0IHNvY2tv
cHQgKnNvcHQsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbik7Ci0KLS8qIFhYWDsgcHJlcGFy
ZSBtYnVmIGZvciAoX19GcmVlQlNEX18gPCAzKSByb3V0aW5lcy4gKi8KLWludAlzb29wdF9nZXRt
KHN0cnVjdCBzb2Nrb3B0ICpzb3B0LCBzdHJ1Y3QgbWJ1ZiAqKm1wKTsKLWludAlzb29wdF9tY29w
eWluKHN0cnVjdCBzb2Nrb3B0ICpzb3B0LCBzdHJ1Y3QgbWJ1ZiAqbSk7Ci1pbnQJc29vcHRfbWNv
cHlvdXQoc3RydWN0IHNvY2tvcHQgKnNvcHQsIHN0cnVjdCBtYnVmICptKTsKLQotaW50CXNvcG9s
bChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IGV2ZW50cywgc3RydWN0IHVjcmVkICphY3RpdmVfY3Jl
ZCwKLQkgICAgc3RydWN0IHRocmVhZCAqdGQpOwotaW50CXNvcG9sbF9nZW5lcmljKHN0cnVjdCBz
b2NrZXQgKnNvLCBpbnQgZXZlbnRzLAotCSAgICBzdHJ1Y3QgdWNyZWQgKmFjdGl2ZV9jcmVkLCBz
dHJ1Y3QgdGhyZWFkICp0ZCk7Ci1pbnQJc29yZWNlaXZlKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1
Y3Qgc29ja2FkZHIgKipwYWRkciwgc3RydWN0IHVpbyAqdWlvLAotCSAgICBzdHJ1Y3QgbWJ1ZiAq
Km1wMCwgc3RydWN0IG1idWYgKipjb250cm9scCwgaW50ICpmbGFnc3ApOwotaW50CXNvcmVjZWl2
ZV9nZW5lcmljKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKipwYWRkciwKLQkg
ICAgc3RydWN0IHVpbyAqdWlvLCBzdHJ1Y3QgbWJ1ZiAqKm1wMCwgc3RydWN0IG1idWYgKipjb250
cm9scCwKLQkgICAgaW50ICpmbGFnc3ApOwotaW50CXNvcmVzZXJ2ZShzdHJ1Y3Qgc29ja2V0ICpz
bywgdV9sb25nIHNuZGNjLCB1X2xvbmcgcmN2Y2MpOwotdm9pZAlzb3JmbHVzaChzdHJ1Y3Qgc29j
a2V0ICpzbyk7Ci1pbnQJc29zZW5kKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIg
KmFkZHIsIHN0cnVjdCB1aW8gKnVpbywKLQkgICAgc3RydWN0IG1idWYgKnRvcCwgc3RydWN0IG1i
dWYgKmNvbnRyb2wsIGludCBmbGFncywKLQkgICAgc3RydWN0IHRocmVhZCAqdGQpOwotaW50CXNv
c2VuZF9kZ3JhbShzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRyLAotCSAg
ICBzdHJ1Y3QgdWlvICp1aW8sIHN0cnVjdCBtYnVmICp0b3AsIHN0cnVjdCBtYnVmICpjb250cm9s
LAotCSAgICBpbnQgZmxhZ3MsIHN0cnVjdCB0aHJlYWQgKnRkKTsKLWludAlzb3NlbmRfZ2VuZXJp
YyhzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRyLAotCSAgICBzdHJ1Y3Qg
dWlvICp1aW8sIHN0cnVjdCBtYnVmICp0b3AsIHN0cnVjdCBtYnVmICpjb250cm9sLAotCSAgICBp
bnQgZmxhZ3MsIHN0cnVjdCB0aHJlYWQgKnRkKTsKLWludAlzb3NldG9wdChzdHJ1Y3Qgc29ja2V0
ICpzbywgc3RydWN0IHNvY2tvcHQgKnNvcHQpOwotaW50CXNvc2h1dGRvd24oc3RydWN0IHNvY2tl
dCAqc28sIGludCBob3cpOwotdm9pZAlzb3RveHNvY2tldChzdHJ1Y3Qgc29ja2V0ICpzbywgc3Ry
dWN0IHhzb2NrZXQgKnhzbyk7Ci12b2lkCXNvd2FrZXVwKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1
Y3Qgc29ja2J1ZiAqc2IpOwotCi0jaWZkZWYgU09DS0JVRl9ERUJVRwotdm9pZAlzYmxhc3RyZWNv
cmRjaGsoc3RydWN0IHNvY2tidWYgKiwgY29uc3QgY2hhciAqLCBpbnQpOwotI2RlZmluZQlTQkxB
U1RSRUNPUkRDSEsoc2IpCXNibGFzdHJlY29yZGNoaygoc2IpLCBfX0ZJTEVfXywgX19MSU5FX18p
Ci0KLXZvaWQJc2JsYXN0bWJ1ZmNoayhzdHJ1Y3Qgc29ja2J1ZiAqLCBjb25zdCBjaGFyICosIGlu
dCk7Ci0jZGVmaW5lCVNCTEFTVE1CVUZDSEsoc2IpCXNibGFzdG1idWZjaGsoKHNiKSwgX19GSUxF
X18sIF9fTElORV9fKQotI2Vsc2UKLSNkZWZpbmUJU0JMQVNUUkVDT1JEQ0hLKHNiKSAgICAgIC8q
IG5vdGhpbmcgKi8KLSNkZWZpbmUJU0JMQVNUTUJVRkNISyhzYikgICAgICAgIC8qIG5vdGhpbmcg
Ki8KLSNlbmRpZiAvKiBTT0NLQlVGX0RFQlVHICovCi0KLS8qCi0gKiBBY2NlcHQgZmlsdGVyIGZ1
bmN0aW9ucyAoZHVoKS4KKyAqIFNvY2tldCBldmVudCBmbGFncwogICovCi1pbnQJYWNjZXB0X2Zp
bHRfYWRkKHN0cnVjdCBhY2NlcHRfZmlsdGVyICpmaWx0KTsKLWludAlhY2NlcHRfZmlsdF9kZWwo
Y2hhciAqbmFtZSk7Ci1zdHJ1Y3QJYWNjZXB0X2ZpbHRlciAqYWNjZXB0X2ZpbHRfZ2V0KGNoYXIg
Km5hbWUpOwotI2lmZGVmIEFDQ0VQVF9GSUxURVJfTU9ECi0jaWZkZWYgU1lTQ1RMX0RFQ0wKLVNZ
U0NUTF9ERUNMKF9uZXRfaW5ldF9hY2NmKTsKLSNlbmRpZgotaW50CWFjY2VwdF9maWx0X2dlbmVy
aWNfbW9kX2V2ZW50KG1vZHVsZV90IG1vZCwgaW50IGV2ZW50LCB2b2lkICpkYXRhKTsKLSNlbmRp
ZgotCi0jZW5kaWYgLyogX0tFUk5FTCAqLworI2RlZmluZSBTQ1RQX0VWRU5UX1JFQUQJCTB4MDAw
MQkvKiBzb2NrZXQgaXMgcmVhZGFibGUgKi8KKyNkZWZpbmUgU0NUUF9FVkVOVF9XUklURQkweDAw
MDIJLyogc29ja2V0IGlzIHdyaXRlYWJsZSAqLworI2RlZmluZSBTQ1RQX0VWRU5UX0VSUk9SCTB4
MDAwNAkvKiBzb2NrZXQgaGFzIGFuIGVycm9yIHN0YXRlICovCiAKIAogLyotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KQEAgLTcw
OCw3ICszODMsNiBAQCBpbnQJYWNjZXB0X2ZpbHRfZ2VuZXJpY19tb2RfZXZlbnQobW9kdWxlX3Qg
bW9kLCBpbnQgZXZlbnQsIHZvaWQgKmRhdGEpOwogICogIGFib3ZlIGludG8sIGF2b2lkaW5nIGhh
dmluZyB0byBwb3J0IHRoZSBlbnRpcmUgdGhpbmcgYXQgb25jZS4uLgogICogIEZvciBmdW5jdGlv
biBwcm90b3R5cGVzLCB0aGUgZnVsbCBib2RpZXMgYXJlIGluIHVzZXJfc29ja2V0LmMgLgogICov
Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAvKiAtLS0gZnVuY3Rpb24g
cHJvdG90eXBlcyAoaW1wbGVtZW50ZWQgaW4gdXNlcl9zb2NrZXQuYykgLS0tICovCkBAIC03MTks
NiArMzkzLDcgQEAgdm9pZAlzb2lzY29ubmVjdGVkKHN0cnVjdCBzb2NrZXQgKnNvKTsKIHN0cnVj
dCBzb2NrZXQgKiBzb25ld2Nvbm4oc3RydWN0IHNvY2tldCAqaGVhZCwgaW50IGNvbm5zdGF0dXMp
Owogdm9pZAlzb2NhbnRyY3Ztb3JlKHN0cnVjdCBzb2NrZXQgKnNvKTsKIHZvaWQJc29jYW50c2Vu
ZG1vcmUoc3RydWN0IHNvY2tldCAqc28pOwordm9pZAlzb2ZyZWUoc3RydWN0IHNvY2tldCAqc28p
OwogCiAKIApAQCAtNzgyLDkgKzQ1Nyw3IEBAIGV4dGVybiBpbnQgc2N0cF9saXN0ZW4oc3RydWN0
IHNvY2tldCAqc28sIGludCBiYWNrbG9nLCBzdHJ1Y3QgcHJvYyAqcCk7CiBleHRlcm4gdm9pZCBz
b2NhbnRyY3Ztb3JlX2xvY2tlZChzdHJ1Y3Qgc29ja2V0ICpzbyk7CiBleHRlcm4gaW50IHNjdHBf
YmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRyKTsKIGV4dGVybiBp
bnQgc2N0cDZfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRyLCB2
b2lkICpwcm9jKTsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBleHRlcm4gaW50IHNjdHBj
b25uX2JpbmQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqYWRkcik7Ci0jZW5k
aWYKIGV4dGVybiBpbnQgc2N0cF9hY2NlcHQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2Nr
YWRkciAqKmFkZHIpOwogZXh0ZXJuIGludCBzY3RwX2F0dGFjaChzdHJ1Y3Qgc29ja2V0ICpzbywg
aW50IHByb3RvLCB1aW50MzJfdCB2cmZfaWQpOwogZXh0ZXJuIGludCBzY3RwNl9hdHRhY2goc3Ry
dWN0IHNvY2tldCAqc28sIGludCBwcm90bywgdWludDMyX3QgdnJmX2lkKTsKQEAgLTgwMyw5ICs0
NzYsNyBAQCBleHRlcm4gaW50IHNvY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNv
Y2thZGRyICpuYW0pOwogZXh0ZXJuIGludCBzY3RwX2Rpc2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAq
c28pOwogZXh0ZXJuIGludCBzY3RwX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBz
b2NrYWRkciAqYWRkcik7CiBleHRlcm4gaW50IHNjdHA2X2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAq
c28sIHN0cnVjdCBzb2NrYWRkciAqYWRkcik7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
ZXh0ZXJuIGludCBzY3RwY29ubl9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29j
a2FkZHIgKmFkZHIpOwotI2VuZGlmCiBleHRlcm4gdm9pZCBzY3RwX2ZpbmlzaCh2b2lkKTsKIAog
LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBA
IC04NTMsOCArNTI0LDQgQEAgZXh0ZXJuIHZvaWQgc2N0cF9maW5pc2godm9pZCk7CiAJc293d2Fr
ZXVwX2xvY2tlZChzbyk7CQkJCQkJXAogfSB3aGlsZSAoMCkKIAotCi0KLSNlbmRpZiAvKiBfX1Vz
ZXJzcGFjZV9fICovCi0KICNlbmRpZiAvKiAhX1NZU19TT0NLRVRWQVJfSF8gKi8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0
cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl91bWEuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIv
dXNlcl91bWEuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDFiZGVmZGI4
MDk2OGFlOWM0OWVmNGViMGEyNWZhMWE5Y2U5YTRiNDIuLjU5ZDcxZmZmNDJjM2VmYjEzMzQ0MWMx
Nzg1ODlmZjhhOWI4NjEzMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX3VtYS5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0
cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl91bWEuaApAQCAtNDYsMTEgKzQ2LDExIEBAIHR5
cGVkZWYgc3RydWN0IHVtYV96b25lICogdW1hX3pvbmVfdDsKIHR5cGVkZWYgc3RydWN0IHVtYV9r
ZWcgKiB1bWFfa2VnX3Q7CiAKIHN0cnVjdCB1bWFfY2FjaGUgewotICAgIGludCBzdHViOyAvKiBU
T0RPIF9fVXNlcnNwYWNlX18gKi8KKwlpbnQgc3R1YjsgLyogVE9ETyBfX1VzZXJzcGFjZV9fICov
CiB9OwogCiBzdHJ1Y3QgdW1hX2tlZyB7Ci0gICAgaW50IHN0dWI7IC8qIFRPRE8gX19Vc2Vyc3Bh
Y2VfXyAqLworCWludCBzdHViOyAvKiBUT0RPIF9fVXNlcnNwYWNlX18gKi8KIH07CiAKIHN0cnVj
dCB1bWFfem9uZSB7CkBAIC04MywxNiArODMsMTQgQEAgc3RydWN0IHVtYV96b25lIHsKIC8qIFBy
b3RvdHlwZSAqLwogdW1hX3pvbmVfdAogdW1hX3pjcmVhdGUoY2hhciAqbmFtZSwgc2l6ZV90IHNp
emUsIHVtYV9jdG9yIGN0b3IsIHVtYV9kdG9yIGR0b3IsCi0JICAgIHVtYV9pbml0IHVtaW5pdCwg
dW1hX2ZpbmkgZmluaSwgaW50IGFsaWduLCB1X2ludDMyX3QgZmxhZ3MpOworCSAgICB1bWFfaW5p
dCB1bWluaXQsIHVtYV9maW5pIGZpbmksIGludCBhbGlnbiwgdWludDMyX3QgZmxhZ3MpOwogCiAK
ICNkZWZpbmUgdW1hX3pvbmVfc2V0X21heCh6b25lLCBudW1iZXIpIC8qIHN0dWIgVE9ETyBfX1Vz
ZXJzcGFjZV9fICovCiAKIHVtYV96b25lX3QKIHVtYV96Y3JlYXRlKGNoYXIgKm5hbWUsIHNpemVf
dCBzaXplLCB1bWFfY3RvciBjdG9yLCB1bWFfZHRvciBkdG9yLAotCSAgICB1bWFfaW5pdCB1bWlu
aXQsIHVtYV9maW5pIGZpbmksIGludCBhbGlnbiwgdV9pbnQzMl90IGZsYWdzKQotewotICAgIHJl
dHVybiBOVUxMOyAvKiBzdHViIFRPRE8gX19Vc2Vyc3BhY2VfXy4gQWxzbyBwbGFjZSBpbXBsZW1l
bnRhdGlvbiBpbiBhIHNlcGFyYXRlIC5jIGZpbGUgKi8KLQorCSAgICB1bWFfaW5pdCB1bWluaXQs
IHVtYV9maW5pIGZpbmksIGludCBhbGlnbiwgdWludDMyX3QgZmxhZ3MpIHsKKwlyZXR1cm4gTlVM
TDsgLyogc3R1YiBUT0RPIF9fVXNlcnNwYWNlX18uIEFsc28gcGxhY2UgaW1wbGVtZW50YXRpb24g
aW4gYSBzZXBhcmF0ZSAuYyBmaWxlICovCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L3VzcnNjdHBsaWIvdXNyc2N0cC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c3JzY3RwLmgKaW5k
ZXggZTkzM2MxNDVlZmI1MDc0MzdjYjBhYjFhYmYxNzU5NWY5MzkzYWJhOS4uYjcxOTI5MDRlNDY3
NWI2NjI0MDBiNzQyNjM4MzMzMzU0M2FjZjllYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0
cGxpYi91c3JzY3RwLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c3JzY3RwLmgKQEAgLTcy
LDcgKzcyLDE2IEBAIGV4dGVybiAiQyIgewogI2RlZmluZSBpbnQzMl90ICAgX19pbnQzMgogI2Vu
ZGlmCiAKLSNkZWZpbmUgc3NpemVfdCAgIF9faW50NjQKKyNpZm5kZWYgc3NpemVfdAorI2lmZGVm
IF9XSU42NAorI2RlZmluZSBzc2l6ZV90IF9faW50NjQKKyNlbGlmIGRlZmluZWQgX1dJTjMyCisj
ZGVmaW5lIHNzaXplX3QgaW50CisjZWxzZQorI2Vycm9yICJVbmtub3duIHBsYXRmb3JtISIKKyNl
bmRpZgorI2VuZGlmCisKICNkZWZpbmUgTVNHX0VPUiAgIDB4OAogI2lmbmRlZiBFV09VTERCTE9D
SwogI2RlZmluZSBFV09VTERCTE9DSyAgV1NBRVdPVUxEQkxPQ0sKQEAgLTEyNywxMiArMTM2LDgg
QEAgc3RydWN0IHNvY2thZGRyX2Nvbm4gewogI2VuZGlmCiAKIHVuaW9uIHNjdHBfc29ja3N0b3Jl
IHsKLSNpZiBkZWZpbmVkKElORVQpCiAJc3RydWN0IHNvY2thZGRyX2luIHNpbjsKLSNlbmRpZgot
I2lmIGRlZmluZWQoSU5FVDYpCiAJc3RydWN0IHNvY2thZGRyX2luNiBzaW42OwotI2VuZGlmCiAJ
c3RydWN0IHNvY2thZGRyX2Nvbm4gc2Nvbm47CiAJc3RydWN0IHNvY2thZGRyIHNhOwogfTsKQEAg
LTE0MSw2ICsxNDYsMTAgQEAgdW5pb24gc2N0cF9zb2Nrc3RvcmUgewogI2RlZmluZSBTQ1RQX0NV
UlJFTlRfQVNTT0MgMQogI2RlZmluZSBTQ1RQX0FMTF9BU1NPQyAgICAgMgogCisjZGVmaW5lIFND
VFBfRVZFTlRfUkVBRCAgICAweDAwMDEKKyNkZWZpbmUgU0NUUF9FVkVOVF9XUklURSAgIDB4MDAw
MgorI2RlZmluZSBTQ1RQX0VWRU5UX0VSUk9SICAgMHgwMDA0CisKIC8qKiogIFN0cnVjdHVyZXMg
YW5kIGRlZmluaXRpb25zIHRvIHVzZSB0aGUgc29ja2V0IEFQSSAgKioqLwogCiAjZGVmaW5lIFND
VFBfQUxJR05fUkVTVl9QQUQgOTIKQEAgLTI3MiwxMiArMjgxLDEzIEBAIHN0cnVjdCBzY3RwX2Fz
c29jX2NoYW5nZSB7CiAjZGVmaW5lIFNDVFBfQ0FOVF9TVFJfQVNTT0MgMHgwMDA1CiAKIC8qIHNh
Y19pbmZvIHZhbHVlcyAqLwotI2RlZmluZSBTQ1RQX0FTU09DX1NVUFBPUlRTX1BSICAgICAgICAw
eDAxCi0jZGVmaW5lIFNDVFBfQVNTT0NfU1VQUE9SVFNfQVVUSCAgICAgIDB4MDIKLSNkZWZpbmUg
U0NUUF9BU1NPQ19TVVBQT1JUU19BU0NPTkYgICAgMHgwMwotI2RlZmluZSBTQ1RQX0FTU09DX1NV
UFBPUlRTX01VTFRJQlVGICAweDA0Ci0jZGVmaW5lIFNDVFBfQVNTT0NfU1VQUE9SVFNfUkVfQ09O
RklHIDB4MDUKLSNkZWZpbmUgU0NUUF9BU1NPQ19TVVBQT1JUU19NQVggICAgICAgMHgwNQorI2Rl
ZmluZSBTQ1RQX0FTU09DX1NVUFBPUlRTX1BSICAgICAgICAgICAweDAxCisjZGVmaW5lIFNDVFBf
QVNTT0NfU1VQUE9SVFNfQVVUSCAgICAgICAgIDB4MDIKKyNkZWZpbmUgU0NUUF9BU1NPQ19TVVBQ
T1JUU19BU0NPTkYgICAgICAgMHgwMworI2RlZmluZSBTQ1RQX0FTU09DX1NVUFBPUlRTX01VTFRJ
QlVGICAgICAweDA0CisjZGVmaW5lIFNDVFBfQVNTT0NfU1VQUE9SVFNfUkVfQ09ORklHICAgIDB4
MDUKKyNkZWZpbmUgU0NUUF9BU1NPQ19TVVBQT1JUU19JTlRFUkxFQVZJTkcgMHgwNgorI2RlZmlu
ZSBTQ1RQX0FTU09DX1NVUFBPUlRTX01BWCAgICAgICAgICAweDA2CiAKIC8qIEFkZHJlc3MgZXZl
bnQgKi8KIHN0cnVjdCBzY3RwX3BhZGRyX2NoYW5nZSB7CkBAIC0zMDYsNyArMzE2LDcgQEAgc3Ry
dWN0IHNjdHBfcmVtb3RlX2Vycm9yIHsKIAl1aW50MzJfdCBzcmVfbGVuZ3RoOwogCXVpbnQxNl90
IHNyZV9lcnJvcjsKIAlzY3RwX2Fzc29jX3Qgc3JlX2Fzc29jX2lkOwotCXVpbnQ4X3Qgc3JlX2Rh
dGFbNF07CisJdWludDhfdCBzcmVfZGF0YVtdOwogfTsKIAogLyogc2h1dGRvd24gZXZlbnQgKi8K
QEAgLTQ3MSw2ICs0ODEsOCBAQCBzdHJ1Y3Qgc2N0cF9ldmVudF9zdWJzY3JpYmUgewogCiAKIC8q
IEZsYWdzIHRoYXQgZ28gaW50byB0aGUgc2luZm8tPnNpbmZvX2ZsYWdzIGZpZWxkICovCisjZGVm
aW5lIFNDVFBfREFUQV9MQVNUX0ZSQUcgICAweDAwMDEgLyogdGFpbCBwYXJ0IG9mIHRoZSBtZXNz
YWdlIGNvdWxkIG5vdCBiZSBzZW50ICovCisjZGVmaW5lIFNDVFBfREFUQV9OT1RfRlJBRyAgICAw
eDAwMDMgLyogY29tcGxldGUgbWVzc2FnZSBjb3VsZCBub3QgYmUgc2VudCAqLwogI2RlZmluZSBT
Q1RQX05PVElGSUNBVElPTiAgICAgMHgwMDEwIC8qIG5leHQgbWVzc2FnZSBpcyBhIG5vdGlmaWNh
dGlvbiAqLwogI2RlZmluZSBTQ1RQX0NPTVBMRVRFICAgICAgICAgMHgwMDIwIC8qIG5leHQgbWVz
c2FnZSBpcyBjb21wbGV0ZSAqLwogI2RlZmluZSBTQ1RQX0VPRiAgICAgICAgICAgICAgMHgwMTAw
IC8qIFN0YXJ0IHNodXRkb3duIHByb2NlZHVyZXMgKi8KQEAgLTU0MCw2ICs1NTIsMTQgQEAgc3Ry
dWN0IHNjdHBfZXZlbnRfc3Vic2NyaWJlIHsKICNkZWZpbmUgU0NUUF9ERUZBVUxUX1NORElORk8g
ICAgICAgICAgICAweDAwMDAwMDIxCiAjZGVmaW5lIFNDVFBfREVGQVVMVF9QUklORk8gICAgICAg
ICAgICAgMHgwMDAwMDAyMgogI2RlZmluZSBTQ1RQX1JFTU9URV9VRFBfRU5DQVBTX1BPUlQgICAg
IDB4MDAwMDAwMjQKKyNkZWZpbmUgU0NUUF9FQ05fU1VQUE9SVEVEICAgICAgICAgICAgICAweDAw
MDAwMDI1CisjZGVmaW5lIFNDVFBfUFJfU1VQUE9SVEVEICAgICAgICAgICAgICAgMHgwMDAwMDAy
NgorI2RlZmluZSBTQ1RQX0FVVEhfU1VQUE9SVEVEICAgICAgICAgICAgIDB4MDAwMDAwMjcKKyNk
ZWZpbmUgU0NUUF9BU0NPTkZfU1VQUE9SVEVEICAgICAgICAgICAweDAwMDAwMDI4CisjZGVmaW5l
IFNDVFBfUkVDT05GSUdfU1VQUE9SVEVEICAgICAgICAgMHgwMDAwMDAyOQorI2RlZmluZSBTQ1RQ
X05SU0FDS19TVVBQT1JURUQgICAgICAgICAgIDB4MDAwMDAwMzAKKyNkZWZpbmUgU0NUUF9QS1RE
Uk9QX1NVUFBPUlRFRCAgICAgICAgICAweDAwMDAwMDMxCisjZGVmaW5lIFNDVFBfTUFYX0NXTkQg
ICAgICAgICAgICAgICAgICAgMHgwMDAwMDAzMgogCiAjZGVmaW5lIFNDVFBfRU5BQkxFX1NUUkVB
TV9SRVNFVCAgICAgICAgMHgwMDAwMDkwMCAvKiBzdHJ1Y3Qgc2N0cF9hc3NvY192YWx1ZSAqLwog
CkBAIC04NzUsMTEgKzg5NSwxNiBAQCB1c3JzY3RwX2luaXQodWludDE2X3QsCiAgICAgICAgICAg
ICAgaW50ICgqKSh2b2lkICphZGRyLCB2b2lkICpidWZmZXIsIHNpemVfdCBsZW5ndGgsIHVpbnQ4
X3QgdG9zLCB1aW50OF90IHNldF9kZiksCiAgICAgICAgICAgICAgdm9pZCAoKikoY29uc3QgY2hh
ciAqZm9ybWF0LCAuLi4pKTsKIAordm9pZAordXNyc2N0cF9pbml0X25vdGhyZWFkcyh1aW50MTZf
dCwKKwkJICAgICAgIGludCAoKikodm9pZCAqYWRkciwgdm9pZCAqYnVmZmVyLCBzaXplX3QgbGVu
Z3RoLCB1aW50OF90IHRvcywgdWludDhfdCBzZXRfZGYpLAorCQkgICAgICAgdm9pZCAoKikoY29u
c3QgY2hhciAqZm9ybWF0LCAuLi4pKTsKKwogc3RydWN0IHNvY2tldCAqCiB1c3JzY3RwX3NvY2tl
dChpbnQgZG9tYWluLCBpbnQgdHlwZSwgaW50IHByb3RvY29sLAogICAgICAgICAgICAgICAgaW50
ICgqcmVjZWl2ZV9jYikoc3RydWN0IHNvY2tldCAqc29jaywgdW5pb24gc2N0cF9zb2Nrc3RvcmUg
YWRkciwgdm9pZCAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBkYXRhbGVuLCBzdHJ1Y3Qgc2N0cF9yY3ZpbmZvLCBpbnQgZmxhZ3MsIHZvaWQgKnVscF9pbmZv
KSwKLSAgICAgICAgICAgICAgIGludCAoKnNlbmRfY2IpKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHVp
bnQzMl90IHNiX2ZyZWUpLAorICAgICAgICAgICAgICAgaW50ICgqc2VuZF9jYikoc3RydWN0IHNv
Y2tldCAqc29jaywgdWludDMyX3Qgc2JfZnJlZSwgdm9pZCAqdWxwX2luZm8pLAogICAgICAgICAg
ICAgICAgdWludDMyX3Qgc2JfdGhyZXNob2xkLAogICAgICAgICAgICAgICAgdm9pZCAqdWxwX2lu
Zm8pOwogCkBAIC0xMDA4LDYgKzEwMzMsMjEgQEAgdXNyc2N0cF9kZXJlZ2lzdGVyX2FkZHJlc3Mo
dm9pZCAqKTsKIGludAogdXNyc2N0cF9zZXRfdWxwaW5mbyhzdHJ1Y3Qgc29ja2V0ICosIHZvaWQg
Kik7CiAKK2ludAordXNyc2N0cF9nZXRfdWxwaW5mbyhzdHJ1Y3Qgc29ja2V0ICosIHZvaWQgKiop
OworCitpbnQKK3VzcnNjdHBfc2V0X3VwY2FsbChzdHJ1Y3Qgc29ja2V0ICpzbywKKyAgICAgICAg
ICAgICAgICAgICB2b2lkICgqdXBjYWxsKShzdHJ1Y3Qgc29ja2V0ICosIHZvaWQgKiwgaW50KSwK
KyAgICAgICAgICAgICAgICAgICB2b2lkICphcmcpOworCitpbnQKK3VzcnNjdHBfZ2V0X2V2ZW50
cyhzdHJ1Y3Qgc29ja2V0ICpzbyk7CisKKwordm9pZAordXNyc2N0cF9oYW5kbGVfdGltZXJzKHVp
bnQzMl90IGVsYXBzZWRfbWlsbGlzZWNvbmRzKTsKKwogI2RlZmluZSBTQ1RQX0RVTVBfT1VUQk9V
TkQgMQogI2RlZmluZSBTQ1RQX0RVTVBfSU5CT1VORCAgMAogCkBAIC0xMDk0LDYgKzExMzQsNyBA
QCBVU1JTQ1RQX1NZU0NUTF9ERUNMKHNjdHBfdWRwX3R1bm5lbGluZ19wb3J0KQogVVNSU0NUUF9T
WVNDVExfREVDTChzY3RwX2VuYWJsZV9zYWNrX2ltbWVkaWF0ZWx5KQogVVNSU0NUUF9TWVNDVExf
REVDTChzY3RwX3Z0YWdfdGltZV93YWl0KQogVVNSU0NUUF9TWVNDVExfREVDTChzY3RwX2JsYWNr
aG9sZSkKK1VTUlNDVFBfU1lTQ1RMX0RFQ0woc2N0cF9zZW5kYWxsX2xpbWl0KQogVVNSU0NUUF9T
WVNDVExfREVDTChzY3RwX2RpYWdfaW5mb19jb2RlKQogVVNSU0NUUF9TWVNDVExfREVDTChzY3Rw
X2ZyX21heF9idXJzdF9kZWZhdWx0KQogVVNSU0NUUF9TWVNDVExfREVDTChzY3RwX3BhdGhfcGZf
dGhyZXNob2xkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbWVkaWEvc2N0cC9zY3RwX3RyYW5zcG9ydC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL3NjdHAvc2N0cF90cmFuc3BvcnQuY2MKaW5k
ZXggNmJlOTQ2MWU5MWJjNWUyODVlMzE1NTY0NDU5YmJjODM2NDgyN2EzZC4uZjFiZjE0OGMyMWE2
YTk5YzU2YTRmODc5YjMyYjk4NWJhMDg4OThkNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvc2N0cC9zY3RwX3RyYW5zcG9ydC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9zY3Rw
L3NjdHBfdHJhbnNwb3J0LmNjCkBAIC00NzAsNyArNDcwLDcgQEAgY2xhc3MgU2N0cFRyYW5zcG9y
dDo6VXNyU2N0cFdyYXBwZXIgewogICAgIHJldHVybiB0cmFuc3BvcnQ7CiAgIH0KIAotICBzdGF0
aWMgaW50IFNlbmRUaHJlc2hvbGRDYWxsYmFjayhzdHJ1Y3Qgc29ja2V0KiBzb2NrLCB1aW50MzJf
dCBzYl9mcmVlKSB7CisgIHN0YXRpYyBpbnQgU2VuZFRocmVzaG9sZENhbGxiYWNrKHN0cnVjdCBz
b2NrZXQqIHNvY2ssIHVpbnQzMl90IHNiX2ZyZWUsIHZvaWQqKSB7CiAgICAgLy8gRmlyZWQgb24g
b3VyIEkvTyB0aHJlYWQuIFNjdHBUcmFuc3BvcnQ6Ok9uUGFja2V0UmVjZWl2ZWQoKSBnZXRzCiAg
ICAgLy8gYSBwYWNrZXQgY29udGFpbmluZyBhY2tub3dsZWRnbWVudHMsIHdoaWNoIGdvZXMgaW50
byB1c3JzY3RwX2Nvbm5pbnB1dCwKICAgICAvLyBhbmQgdGhlbiBiYWNrIGhlcmUuCg==
</data>
<flag name="review"
          id="429415"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
    <flag name="commit-queue"
          id="429566"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413053</attachid>
            <date>2020-11-03 05:41:12 -0800</date>
            <delta_ts>2020-11-03 06:20:53 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>0001-fix-218433.patch</filename>
            <type>text/plain</type>
            <size>1305501</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">RnJvbSA5MzE2MGU3NTdiYTQzYjExNTU4ZmMyZThjYmFiZTAwMDVmOTlhYWQzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBZb3Vlbm4gRmFibGV0IDx5b3Vlbm5AYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDMgTm92IDIwMjAgMTQ6Mzk6MzcgKzAxMDAKU3ViamVjdDogW1BBVENIXSBmaXgtMjE4
NDMzCgotLS0KIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9DaGFuZ2VMb2cgICAgICAgICB8
ICAgIDkgKwogLi4uL2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy91c3JzY3RwLnhjY29uZmlnIHwg
ICAgMiArLQogLi4uL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL0JVSUxELmduICAgICAgIHwg
ICAyMSArLQogLi4uL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL09XTkVSUyAgICAgICAgIHwg
ICAgNyArLQogLi4uL3RoaXJkX3BhcnR5L3VzcnNjdHAvUkVBRE1FLmNocm9taXVtICAgICAgIHwg
ICAgNSArLQogLi4uLy5naXRodWIvd29ya2Zsb3dzL2J1aWxkLXdpdGgtY21ha2UueW1sICAgIHwg
ICA1NyArCiAuLi4vdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliLy5naXRpZ25vcmUgfCAg
ICA5ICstCiAuLi4vdXNyc2N0cC91c3JzY3RwbGliL0NNYWtlTGlzdHMudHh0ICAgICAgICAgfCAg
MTA3ICstCiAuLi4vdXNyc2N0cC91c3JzY3RwbGliL01ha2VmaWxlLmFtICAgICAgICAgICAgfCAg
ICA2ICstCiAuLi4vdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL01hbnVhbC5tZCAgfCAg
IDQ3ICstCiAuLi4vdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL01hbnVhbC50ZXggfCAg
IDE5ICstCiAuLi4vdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL1JFQURNRS5tZCAgfCAg
ICA1ICstCiAuLi4vdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL2Jvb3RzdHJhcCAgfCAg
ICAwCiAuLi4vdXNyc2N0cC91c3JzY3RwbGliL2NvbmZpZ3VyZS5hYyAgICAgICAgICAgfCAgIDE3
ICstCiAuLi4vdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL2dlbi1kZWYucHkgfCAgIDI2
ICsKIC4uLi91c3JzY3RwL3VzcnNjdHBsaWIvbWVzb24uYnVpbGQgICAgICAgICAgICB8ICAyMTkg
KysKIC4uLi91c3JzY3RwL3VzcnNjdHBsaWIvbWVzb25fb3B0aW9ucy50eHQgICAgICB8ICAgMTAg
KwogLi4uL3VzcnNjdHBsaWIvcHJvZ3JhbXMvQ01ha2VMaXN0cy50eHQgICAgICAgIHwgICA5OSAt
CiAuLi4vdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL01ha2VmaWxlLmFtICAgfCAgIDYyIC0K
IC4uLi91c3JzY3RwbGliL3Byb2dyYW1zL01ha2VmaWxlLm5tYWtlICAgICAgICB8ICAxMjYgLQog
Li4uL3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9jbGllbnQuYyAgICAgIHwgIDUwMiAtLS0t
CiAuLi4vdXNyc2N0cGxpYi9wcm9ncmFtcy9kYXl0aW1lX3NlcnZlci5jICAgICAgfCAgMTQ2IC0t
CiAuLi4vdXNyc2N0cGxpYi9wcm9ncmFtcy9kaXNjYXJkX3NlcnZlci5jICAgICAgfCAgMjU0IC0t
CiAuLi4vdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2VjaG9fc2VydmVyLmMgfCAgMjg0IC0t
LQogLi4uL3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9la3JfY2xpZW50LmMgIHwgIDMyMiAt
LS0KIC4uLi91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvZWtyX2xvb3AuYyAgICB8ICA1NDMg
LS0tLQogLi4uL3VzcnNjdHBsaWIvcHJvZ3JhbXMvZWtyX2xvb3Bfb2ZmbG9hZC5jICAgIHwgIDU1
OSAtLS0tLQogLi4uL3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9la3JfcGVlci5jICAgIHwg
IDU0NCAtLS0tCiAuLi4vdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2Vrcl9zZXJ2ZXIuYyAg
fCAgMzA2IC0tLQogLi4uL3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9odHRwX2NsaWVudC5j
IHwgIDIzNiAtLQogLi4uL3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9ydGN3ZWIuYyAgICAg
IHwgMTUyNSAtLS0tLS0tLS0tLS0KIC4uLi91c3JzY3RwbGliL3Byb2dyYW1zL3Rlc3RfbGlibWdt
dC5jICAgICAgICB8ICAgNTIgLQogLi4uL3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy90ZXN0
X3RpbWVyLmMgIHwgICA1OSAtCiAuLi4vdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL3RzY3Rw
LmMgICAgICAgfCAgODI3IC0tLS0tLQogLi4uL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9DTWFrZUxp
c3RzLnR4dCAgICAgIHwgICA0NCArLQogLi4uL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9NYWtlZmls
ZS5ubWFrZSAgICAgIHwgICAgMiArLQogLi4uL3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGli
L21lc29uLmJ1aWxkIHwgICAyMCArCiAuLi4vdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQv
bWVzb24uYnVpbGQgfCAgIDIwICsKIC4uLi91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9z
Y3RwLmggICAgICB8ICAgMjAgKy0KIC4uLi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9hc2NvbmYu
YyAgICAgICAgICB8ICA0MDAgKy0tCiAuLi4vdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfYXNjb25m
LmggICAgICAgICAgfCAgIDEwICstCiAuLi4vdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQv
c2N0cF9hdXRoLmMgfCAgIDYwICstCiAuLi4vdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQv
c2N0cF9hdXRoLmggfCAgICA2ICstCiAuLi4vdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfYnNkX2Fk
ZHIuYyAgICAgICAgfCAgIDg2ICstCiAuLi4vdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfYnNkX2Fk
ZHIuaCAgICAgICAgfCAgICA4ICstCiAuLi4vdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfY2FsbG91
dC5jICAgICAgICAgfCAgIDY0ICstCiAuLi4vdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfY2FsbG91
dC5oICAgICAgICAgfCAgIDIzICstCiAuLi4vdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfY2NfZnVu
Y3Rpb25zLmMgICAgfCAgMTIyICstCiAuLi4vdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfY29uc3Rh
bnRzLmggICAgICAgfCAgIDgxICstCiAuLi4vdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfY3JjMzIu
YyAgICAgICAgICAgfCAgIDM2ICstCiAuLi4vdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfY3JjMzIu
aCAgICAgICAgICAgfCAgICA4ICstCiAuLi4vdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfaGVhZGVy
LmggICAgICAgICAgfCAgIDEyICstCiAuLi4vdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfaW5kYXRh
LmMgICAgICAgICAgfCAgNDg1ICsrLS0KIC4uLi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9pbmRh
dGEuaCAgICAgICAgICB8ICAgIDggKy0KIC4uLi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9pbnB1
dC5jICAgICAgICAgICB8IDEwMjggKysrKy0tLS0KIC4uLi91c3JzY3RwbGliL25ldGluZXQvc2N0
cF9pbnB1dC5oICAgICAgICAgICB8ICAgIDQgKy0KIC4uLi91c3JzY3RwbGliL25ldGluZXQvc2N0
cF9sb2NrX3VzZXJzcGFjZS5oICB8ICAgMjAgKy0KIC4uLi91c3JzY3RwbGliL3VzcnNjdHBsaWIv
bmV0aW5ldC9zY3RwX29zLmggICB8ICAgMTQgKy0KIC4uLi91c3JzY3RwbGliL25ldGluZXQvc2N0
cF9vc191c2Vyc3BhY2UuaCAgICB8ICAxODIgKy0KIC4uLi91c3JzY3RwbGliL25ldGluZXQvc2N0
cF9vdXRwdXQuYyAgICAgICAgICB8IDE0NzEgKysrKystLS0tLS0KIC4uLi91c3JzY3RwbGliL25l
dGluZXQvc2N0cF9vdXRwdXQuaCAgICAgICAgICB8ICAgNTkgKy0KIC4uLi91c3JzY3RwbGliL3Vz
cnNjdHBsaWIvbmV0aW5ldC9zY3RwX3BjYi5jICB8ICA3OTggKysrLS0tCiAuLi4vdXNyc2N0cGxp
Yi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9wY2IuaCAgfCAgMTM0ICstCiAuLi4vdXNyc2N0cGxp
Yi9uZXRpbmV0L3NjdHBfcGVlbG9mZi5jICAgICAgICAgfCAgIDQ3ICstCiAuLi4vdXNyc2N0cGxp
Yi9uZXRpbmV0L3NjdHBfcGVlbG9mZi5oICAgICAgICAgfCAgICA2ICstCiAuLi4vdXNyc2N0cGxp
Yi9uZXRpbmV0L3NjdHBfcHJvY2Vzc19sb2NrLmggICAgfCAgIDMyICstCiAuLi4vdXNyc2N0cGxp
Yi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9zaGExLmMgfCAgICA0ICstCiAuLi4vdXNyc2N0cGxp
Yi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9zaGExLmggfCAgIDEzICstCiAuLi4vdXNyc2N0cGxp
Yi9uZXRpbmV0L3NjdHBfc3NfZnVuY3Rpb25zLmMgICAgfCAgIDc0ICstCiAuLi4vdXNyc2N0cGxp
Yi9uZXRpbmV0L3NjdHBfc3RydWN0cy5oICAgICAgICAgfCAgIDY3ICstCiAuLi4vdXNyc2N0cGxp
Yi9uZXRpbmV0L3NjdHBfc3lzY3RsLmMgICAgICAgICAgfCAgMzUzICstLQogLi4uL3VzcnNjdHBs
aWIvbmV0aW5ldC9zY3RwX3N5c2N0bC5oICAgICAgICAgIHwgICA2OSArLQogLi4uL3VzcnNjdHBs
aWIvbmV0aW5ldC9zY3RwX3RpbWVyLmMgICAgICAgICAgIHwgIDEyNSArLQogLi4uL3VzcnNjdHBs
aWIvbmV0aW5ldC9zY3RwX3RpbWVyLmggICAgICAgICAgIHwgICAyMSArLQogLi4uL3VzcnNjdHBs
aWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfdWlvLmggIHwgIDE4MSArLQogLi4uL3VzcnNjdHBs
aWIvbmV0aW5ldC9zY3RwX3VzZXJzcGFjZS5jICAgICAgIHwgICA2NiArLQogLi4uL3VzcnNjdHBs
aWIvbmV0aW5ldC9zY3RwX3VzcnJlcS5jICAgICAgICAgIHwgMTUyMyArKysrKystLS0tLS0KIC4u
Li91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3Zhci5oICB8ICAxMDMgKy0KIC4u
Li91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwdXRpbC5jICB8IDIyMTUgKysrKysr
KysrKy0tLS0tLS0KIC4uLi91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwdXRpbC5o
ICB8ICAgOTIgKy0KIC4uLi91c3JzY3RwbGliL25ldGluZXQ2L21lc29uLmJ1aWxkICAgICAgICAg
ICB8ICAgIDEgKwogLi4uL3VzcnNjdHBsaWIvbmV0aW5ldDYvc2N0cDZfdXNycmVxLmMgICAgICAg
IHwgIDQwNyArKy0KIC4uLi91c3JzY3RwbGliL25ldGluZXQ2L3NjdHA2X3Zhci5oICAgICAgICAg
ICB8ICAgMjQgKy0KIC4uLi91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9hdG9taWMuaCAgICAg
ICB8ICAgIDggKy0KIC4uLi91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9lbnZpcm9ubWVudC5j
ICB8ICAgNjQgKy0KIC4uLi91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9lbnZpcm9ubWVudC5o
ICB8ICAgMTcgKy0KIC4uLi91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9pbnBjYi5oICAgICAg
ICB8ICAgMTkgKy0KIC4uLi91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9pcDZfdmFyLmggICAg
ICB8ICAgMjAgKy0KIC4uLi91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9pcF9pY21wLmggICAg
ICB8ICAgMjIgKy0KIC4uLi91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9tYWxsb2MuaCAgICAg
ICB8ICAgNjcgKy0KIC4uLi91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX21idWYu
YyB8ICAgNDcgKy0KIC4uLi91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX21idWYu
aCB8ICAgNTUgKy0KIC4uLi91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9xdWV1ZS5oICAgICAg
ICB8ICAgIDQgKy0KIC4uLi91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9yZWN2X3RocmVhZC5j
ICB8ICAxOTcgKy0KIC4uLi91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9yZWN2X3RocmVhZC5o
ICB8ICAgIDAKIC4uLi91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9yb3V0ZS5oICAgICAgICB8
ICAgIDAKIC4uLi91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9zb2NrZXQuYyAgICAgICB8ICA2
MTkgKystLS0KIC4uLi91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9zb2NrZXR2YXIuaCAgICB8
ICAzNzcgKy0tCiAuLi4vdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl91bWEuaCAg
fCAgIDEyICstCiAuLi4vdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNyc2N0cC5oICAg
fCAgIDY3ICstCiAuLi4vd2VicnRjL21lZGlhL3NjdHAvc2N0cF90cmFuc3BvcnQuY2MgICAgICAg
fCAgICAyICstCiAxMDEgZmlsZXMgY2hhbmdlZCwgNjQzNyBpbnNlcnRpb25zKCspLCAxMjgyMCBk
ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi8uZ2l0aHViL3dvcmtmbG93
cy9idWlsZC13aXRoLWNtYWtlLnltbAogbW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0
cGxpYi9ib290c3RyYXAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9nZW4tZGVmLnB5CiBj
cmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvbWVzb24uYnVpbGQKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAv
dXNyc2N0cGxpYi9tZXNvbl9vcHRpb25zLnR4dAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L3Byb2dyYW1zL0NNYWtlTGlzdHMudHh0CiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJv
Z3JhbXMvTWFrZWZpbGUuYW0KIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9N
YWtlZmlsZS5ubWFrZQogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2NsaWVu
dC5jCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvZGF5dGltZV9zZXJ2ZXIu
YwogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2Rpc2NhcmRfc2VydmVyLmMK
IGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9lY2hvX3NlcnZlci5jCiBkZWxl
dGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvZWtyX2NsaWVudC5jCiBkZWxldGUgbW9k
ZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91
c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvZWtyX2xvb3AuYwogZGVsZXRlIG1vZGUgMTAwNjQ0
IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3Byb2dyYW1zL2Vrcl9sb29wX29mZmxvYWQuYwogZGVsZXRlIG1vZGUgMTAwNjQ0
IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3Byb2dyYW1zL2Vrcl9wZWVyLmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi9wcm9ncmFtcy9la3Jfc2VydmVyLmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9n
cmFtcy9odHRwX2NsaWVudC5jCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMv
cnRjd2ViLmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy90ZXN0X2xpYm1n
bXQuYwogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL3Rlc3RfdGltZXIuYwog
ZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL3RzY3RwLmMKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3Vz
cnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL21lc29uLmJ1aWxkCiBjcmVhdGUgbW9kZSAxMDA2
NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L21lc29uLmJ1aWxkCiBtb2RlIGNoYW5nZSAx
MDA2NDQgPT4gMTAwNzU1IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwLmgKIG1vZGUg
Y2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBf
YXNjb25mLmMKIG1vZGUgY2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUgU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxp
Yi9uZXRpbmV0L3NjdHBfYXNjb25mLmgKIG1vZGUgY2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUgU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNj
dHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfYXV0aC5jCiBtb2RlIGNoYW5nZSAxMDA2NDQg
PT4gMTAwNzU1IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
dXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2F1dGguaAogbW9kZSBj
aGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NSBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9i
c2RfYWRkci5jCiBtb2RlIGNoYW5nZSAxMDA2NDQgPT4gMTAwNzU1IFNvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBs
aWIvbmV0aW5ldC9zY3RwX2JzZF9hZGRyLmgKIG1vZGUgY2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUg
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3Vz
cnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfY2FsbG91dC5jCiBtb2RlIGNoYW5nZSAx
MDA2NDQgPT4gMTAwNzU1IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2NhbGxvdXQu
aAogbW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NSBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGlu
ZXQvc2N0cF9jY19mdW5jdGlvbnMuYwogbW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0
cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9jb25zdGFudHMuaAogbW9kZSBjaGFuZ2UgMTAw
NjQ0ID0+IDEwMDc1NSBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9jcmMzMi5jCiBt
b2RlIGNoYW5nZSAxMDA2NDQgPT4gMTAwNzU1IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9z
Y3RwX2NyYzMyLmgKIG1vZGUgY2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUgU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0
cGxpYi9uZXRpbmV0L3NjdHBfaGVhZGVyLmgKIG1vZGUgY2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUg
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3Vz
cnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfaW5kYXRhLmMKIG1vZGUgY2hhbmdlIDEw
MDY0NCA9PiAxMDA3NTUgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfaW5kYXRhLmgK
IG1vZGUgY2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0
L3NjdHBfaW5wdXQuYwogbW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NSBTb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3Jz
Y3RwbGliL25ldGluZXQvc2N0cF9pbnB1dC5oCiBtb2RlIGNoYW5nZSAxMDA2NDQgPT4gMTAwNzU1
IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2xvY2tfdXNlcnNwYWNlLmgKIG1vZGUg
Y2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBf
b3MuaAogbW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NSBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25l
dGluZXQvc2N0cF9vc191c2Vyc3BhY2UuaAogbW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NSBT
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNy
c2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9vdXRwdXQuYwogbW9kZSBjaGFuZ2UgMTAw
NjQ0ID0+IDEwMDc1NSBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9vdXRwdXQuaAog
bW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NSBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQv
c2N0cF9wY2IuYwogbW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NSBTb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3Rw
bGliL25ldGluZXQvc2N0cF9wY2IuaAogbW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0
cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9wZWVsb2ZmLmMKIG1vZGUgY2hhbmdlIDEwMDY0
NCA9PiAxMDA3NTUgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfcGVlbG9mZi5oCiBt
b2RlIGNoYW5nZSAxMDA2NDQgPT4gMTAwNzU1IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9z
Y3RwX3Byb2Nlc3NfbG9jay5oCiBtb2RlIGNoYW5nZSAxMDA2NDQgPT4gMTAwNzU1IFNvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3NoYTEuYwogbW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEw
MDc1NSBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9zaGExLmgKIG1vZGUgY2hhbmdl
IDEwMDY0NCA9PiAxMDA3NTUgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfc3NfZnVu
Y3Rpb25zLmMKIG1vZGUgY2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUgU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxp
Yi9uZXRpbmV0L3NjdHBfc3RydWN0cy5oCiBtb2RlIGNoYW5nZSAxMDA2NDQgPT4gMTAwNzU1IFNv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3Jz
Y3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3N5c2N0bC5jCiBtb2RlIGNoYW5nZSAxMDA2
NDQgPT4gMTAwNzU1IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3N5c2N0bC5oCiBt
b2RlIGNoYW5nZSAxMDA2NDQgPT4gMTAwNzU1IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9z
Y3RwX3RpbWVyLmMKIG1vZGUgY2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUgU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0
cGxpYi9uZXRpbmV0L3NjdHBfdGltZXIuaAogbW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NSBT
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNy
c2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF91aW8uaAogbW9kZSBjaGFuZ2UgMTAwNjQ0
ID0+IDEwMDc1NSBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF91c2Vyc3BhY2UuYwog
bW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NSBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQv
c2N0cF91c3JyZXEuYwogbW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NSBTb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3Jz
Y3RwbGliL25ldGluZXQvc2N0cF92YXIuaAogbW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NSBT
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNy
c2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cHV0aWwuYwogbW9kZSBjaGFuZ2UgMTAwNjQ0
ID0+IDEwMDc1NSBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cHV0aWwuaAogY3JlYXRl
IG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldDYvbWVzb24uYnVpbGQKIG1v
ZGUgY2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0Ni9z
Y3RwNl92YXIuaAogbW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NSBTb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3Rw
bGliL3VzZXJfYXRvbWljLmgKIG1vZGUgY2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUgU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIv
dXNyc2N0cGxpYi91c2VyX2Vudmlyb25tZW50LmMKIG1vZGUgY2hhbmdlIDEwMDY0NCA9PiAxMDA3
NTUgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX2Vudmlyb25tZW50LmgKIG1vZGUgY2hhbmdlIDEw
MDY0NCA9PiAxMDA3NTUgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX2lucGNiLmgKIG1vZGUgY2hh
bmdlIDEwMDY0NCA9PiAxMDA3NTUgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX2lwNl92YXIuaAog
bW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NSBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfaXBf
aWNtcC5oCiBtb2RlIGNoYW5nZSAxMDA2NDQgPT4gMTAwNzU1IFNvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIv
dXNlcl9tYWxsb2MuaAogbW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NSBTb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3Jz
Y3RwbGliL3VzZXJfbWJ1Zi5jCiBtb2RlIGNoYW5nZSAxMDA2NDQgPT4gMTAwNzU1IFNvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L3VzcnNjdHBsaWIvdXNlcl9tYnVmLmgKIG1vZGUgY2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUgU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNj
dHBsaWIvdXNyc2N0cGxpYi91c2VyX3F1ZXVlLmgKIG1vZGUgY2hhbmdlIDEwMDY0NCA9PiAxMDA3
NTUgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX3JlY3ZfdGhyZWFkLmMKIG1vZGUgY2hhbmdlIDEw
MDY0NCA9PiAxMDA3NTUgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX3JlY3ZfdGhyZWFkLmgKIG1v
ZGUgY2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX3JvdXRl
LmgKIG1vZGUgY2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUgU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2Vy
X3NvY2tldC5jCiBtb2RlIGNoYW5nZSAxMDA2NDQgPT4gMTAwNzU1IFNvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBs
aWIvdXNlcl9zb2NrZXR2YXIuaAogbW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NSBTb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi91c3JzY3RwbGliL3VzZXJfdW1hLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5nZUxv
ZwppbmRleCA4YzBjZGEwMDI3MjguLmExZTY2ZDFiMzI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMTEtMDMgIFlvdWVubiBGYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBXZWJSVEMgdXNyc2N0cCB0
byBNODcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
ODQzMworCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICAqIFNv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwOiBSZXN5bmNlZC4KKwogMjAyMC0xMS0wMyAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBmdW5jdGlvbmFsIFdl
YlJUQyBlbmNvZGVycyBpbiBHUFVQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvdXNyc2N0cC54Y2NvbmZpZyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy91c3JzY3RwLnhjY29uZmlnCmluZGV4IGIw
OTE5YWRmZWU2OS4uMzg5MTFhYzY5MzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvdXNyc2N0cC54Y2NvbmZpZworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvdXNyc2N0cC54Y2NvbmZpZwpAQCAtMTIs
NCArMTIsNCBAQCBQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCA9IC91c3IvbG9jYWwvaW5jbHVk
ZS9saWJ3ZWJydGM7CiBVU0VfSEVBREVSTUFQID0gTk87CiBXQVJOSU5HX0NGTEFHUyA9IC1Xbm8t
ZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMgJChpbmhlcml0ZWQpOwogR0NDX1BSRVBST0NFU1NPUl9E
RUZJTklUSU9OUyA9IFNDVFBfUFJPQ0VTU19MRVZFTF9MT0NLUyBTQ1RQX1NJTVBMRV9BTExPQ0FU
T1IgU0NUUF9VU0VfT1BFTlNTTF9TSEExIF9fVXNlcnNwYWNlX18gSEFWRV9TQV9MRU4gSEFWRV9T
Q09OTl9MRU4gX19BUFBMRV9VU0VfUkZDXzIyOTIgX19Vc2Vyc3BhY2Vfb3NfRGFyd2luICQoaW5o
ZXJpdGVkKTsKLU9USEVSX0NGTEFHUyA9IC1VSU5FVCAtVUlORVQ2IC1VX19BUFBMRV9fOworT1RI
RVJfQ0ZMQUdTID0gLVVJTkVUIC1VSU5FVDY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvQlVJTEQuZ24gYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvQlVJTEQuZ24K
aW5kZXggOTRmMjY3ODZlMWQ4Li5iODY5ODUyMDBiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC9CVUlMRC5nbgorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAv
QlVJTEQuZ24KQEAgLTksNiArOSwxMiBAQCBjb25maWcoInVzcnNjdHBfY29uZmlnIikgewogICAg
ICJ1c3JzY3RwbGliL3VzcnNjdHBsaWIiLAogICAgICJ1c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0
aW5ldCIsCiAgIF0KKworICAjIFRoaXMgaXMgcGFydCBvZiB0aGUgcHVibGljIGNvbmZpZyBiZWNh
dXNlIGl0J3MgdXNlZCBib3RoIGJ5IHVzcnNjdHAgYW5kCisgICMgdGhlIGNsaWVudCAoV2ViUlRD
KSwgdG8gZGV0ZXJtaW5lIGlmIHRoZSBsZW5ndGggZmllbGQgbmVlZHMgcG9wdWxhdGluZy4KKyAg
aWYgKGlzX21hYyB8fCBpc19pb3MgfHwgdGFyZ2V0X29zID09ICJmcmVlYnNkIikgeworICAgIGRl
ZmluZXMgPSBbICJIQVZFX1NDT05OX0xFTiIgXQorICB9CiB9CiAKIGNvbmZpZygidXNyc2N0cF93
YXJuaW5ncyIpIHsKQEAgLTIxLDYgKzI3LDExIEBAIGNvbmZpZygidXNyc2N0cF93YXJuaW5ncyIp
IHsKICAgICAgICMgd2hhdCB0aGV5IGRpZCBpbiBjb25maWd1cmUuYWMuIFdlIGNhbiByZW1vdmUg
dGhpcyBvbmNlCiAgICAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9zY3RwbGFiL3VzcnNjdHAvaXNz
dWVzLzE3NyBpcyBmaXhlZC4KICAgICAgICItV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIiwK
KworICAgICAgIyB1c3JzY3RwIHVzZXMgdGltaW5nc2FmZV9iY21wIHdoaWNoIGlzIG5vdCBhdmFp
bGFibGUgaW4gYWxsCisgICAgICAjIHZlcnNpb25zIG9mIE9TIFgsIGhvd2V2ZXIgdGhpcyBpc24n
dCBhY3R1YWxseSBhbiBpc3N1ZSBzaW5jZQorICAgICAgIyB1c3JzY3RwIHByb3ZpZGVzIGl0cyBv
d24gaW1wbGVtZW50YXRpb24uCisgICAgICAiLVduby11bmd1YXJkZWQtYXZhaWxhYmlsaXR5IiwK
ICAgICBdCiAgIH0KIH0KQEAgLTExNiwxOSArMTI3LDE3IEBAIHN0YXRpY19saWJyYXJ5KCJ1c3Jz
Y3RwIikgewogICAgICItVUlORVQ2IiwKICAgXQogCi0gIGlmIChpc19saW51eCB8fCBpc19hbmRy
b2lkKSB7CisgIGlmIChpc19saW51eCB8fCBpc19jaHJvbWVvcyB8fCBpc19hbmRyb2lkKSB7CiAg
ICAgZGVmaW5lcyArPSBbCiAgICAgICAiX19Vc2Vyc3BhY2Vfb3NfTGludXgiLAogICAgICAgIl9H
TlVfU09VUkNFIiwKICAgICBdCi0gIH0gZWxzZSBpZiAoaXNfbWFjIHx8IGlzX2lvcykgeworICB9
IGVsc2UgaWYgKGlzX2FwcGxlKSB7CiAgICAgZGVmaW5lcyArPSBbCiAgICAgICAiSEFWRV9TQV9M
RU4iLAotICAgICAgIkhBVkVfU0NPTk5fTEVOIiwKICAgICAgICJfX0FQUExFX1VTRV9SRkNfMjI5
MiIsCiAgICAgICAiX19Vc2Vyc3BhY2Vfb3NfRGFyd2luIiwKICAgICBdCi0gICAgY2ZsYWdzICs9
IFsgIi1VX19BUFBMRV9fIiBdCiAgIH0KIAogICBpZiAoaXNfd2luKSB7CkBAIC0xNDAsNyArMTQ5
LDUgQEAgc3RhdGljX2xpYnJhcnkoInVzcnNjdHAiKSB7CiAgIGlmIChpc19mdWNoc2lhKSB7CiAg
ICAgZGVmaW5lcyArPSBbICJfX1VzZXJzcGFjZV9vc19GdWNoc2lhIiBdCiAgIH0KLSAgZGVwcyA9
IFsKLSAgICAiLy90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wiLAotICBdCisgIGRlcHMgPSBbICIvL3Ro
aXJkX3BhcnR5L2JvcmluZ3NzbCIgXQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL09XTkVSUyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC9PV05FUlMKaW5kZXgg
ZTgxM2IwNzk2ODBhLi5hYWU1MzhiMGI4NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC9PV05FUlMKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL09XTkVSUwpA
QCAtMSwzICsxLDQgQEAKLXB0aGF0Y2hlckBjaHJvbWl1bS5vcmcKLWppYXlsQGNocm9taXVtLm9y
ZwotbGRpeG9uQGNocm9taXVtLm9yZworaHRhQGNocm9taXVtLm9yZworb3JwaGlzQGNocm9taXVt
Lm9yZworCisjIENPTVBPTkVOVDogQmxpbms+V2ViUlRDPk5ldHdvcmsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC9SRUFE
TUUuY2hyb21pdW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3VzcnNjdHAvUkVBRE1FLmNocm9taXVtCmluZGV4IDI0YjBiZGY0NWY3YS4uZTc0MDVhYzk1
NDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L3VzcnNjdHAvUkVBRE1FLmNocm9taXVtCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC9SRUFETUUuY2hyb21pdW0KQEAgLTEs
OCArMSw5IEBACiBOYW1lOiB1c3JzY3RwCiBVUkw6IGh0dHA6Ly9naXRodWIuY29tL3NjdHBsYWIv
dXNyc2N0cAogVmVyc2lvbjogMAotRGF0ZTogSnVuIDIyLCAyMDE4Ci1SZXZpc2lvbjogN2E4YmM5
YTkwY2E5NjYzNGFhNTZlZTcxMjg1NmQ5N2YyN2Q5MDNmOAorQ1BFUHJlZml4OiBjcGU6L2E6dXNy
c2N0cF9wcm9qZWN0OnVzcnNjdHA6MjAxOS0xMi0yMAorRGF0ZTogQXVnIDI4LCAyMDIwCitSZXZp
c2lvbjogOTk1YzBiODQ0MTQ0NjZkNzdkNTIwMTFlNWI1NzJjYmUyMTNiNzcwYQogTGljZW5zZTog
TmV3IEJTRAogTGljZW5zZSBGaWxlOiBMSUNFTlNFCiBTZWN1cml0eSBDcml0aWNhbDogeWVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi8uZ2l0aHViL3dvcmtmbG93cy9idWlsZC13aXRoLWNtYWtlLnlt
bCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0
cC91c3JzY3RwbGliLy5naXRodWIvd29ya2Zsb3dzL2J1aWxkLXdpdGgtY21ha2UueW1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNWJhOWQ2OWMzMWZkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS91c3JzY3RwL3VzcnNjdHBsaWIvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtd2l0aC1jbWFrZS55
bWwKQEAgLTAsMCArMSw1NyBAQAorbmFtZTogQnVpbGQgd2l0aCBDTWFrZQorCitvbjoKKyAgcHVz
aDoKKyAgICBicmFuY2hlczogWyBtYXN0ZXIsIGdpdGh1Yi1hY3Rpb25zIF0KKyAgcHVsbF9yZXF1
ZXN0OgorICAgIGJyYW5jaGVzOiBbIG1hc3RlciBdCisKK2pvYnM6CisgIGJ1aWxkOgorCisgICAg
c3RyYXRlZ3k6CisgICAgICBtYXRyaXg6CisgICAgICAgIHBsYXRmb3JtOiBbdWJ1bnR1LWxhdGVz
dCwgbWFjb3MtbGF0ZXN0LCB3aW5kb3dzLWxhdGVzdF0KKyAgICAgICAgY21ha2VfYnVpbGRfdHlw
ZTogW0RlYnVnLCBSZWxXaXRoRGViSW5mb10KKyAgICAgICAgc2N0cF9pbnZhcmlhbnRzOiBbT04s
IE9GRl0KKyAgICAgICAgc2N0cF9pbmV0NjogW09OLCBPRkZdCisgICAgICAgIHNjdHBfaW5ldDog
W09OLCBPRkZdCisgICAgICAgIHNjdHBfZGVidWc6IFtPTiwgT0ZGXQorCisgICAgcnVucy1vbjog
JHt7IG1hdHJpeC5wbGF0Zm9ybSB9fQorCisgICAgc3RlcHM6CisgICAgLSB1c2VzOiBhY3Rpb25z
L2NoZWNrb3V0QHYyCisgICAgICB3aXRoOgorICAgICAgICBwYXRoOiAndXNyc2N0cF9zb3VyY2Un
CisKKyAgICAtIG5hbWU6IFByZXBhcmUgZGlycworICAgICAgc2hlbGw6IGJhc2gKKyAgICAgIHJ1
bjogfAorICAgICAgICBta2RpciAtcCBjbWFrZV9idWlsZAorICAgICAgICBta2RpciAtcCBjbWFr
ZV9pbnN0YWxsCisgICAgICAgIAorICAgIC0gbmFtZTogR2VuZXJhdGUgQ01ha2UgcHJvamVjdAor
ICAgICAgc2hlbGw6IGJhc2gKKyAgICAgIHJ1bjogfAorICAgICAgICBjZCBjbWFrZV9idWlsZAor
ICAgICAgICBjbWFrZSAtRENNQUtFX0JVSUxEX1RZUEU9JHt7IG1hdHJpeC5jbWFrZV9idWlsZF90
eXBlIH19IFwKKyAgICAgICAgICAgICAgLURDTUFLRV9QT1NJVElPTl9JTkRFUEVOREVOVF9DT0RF
PU9OIFwKKyAgICAgICAgICAgICAgLURDTUFLRV9WRVJCT1NFX01BS0VGSUxFOkJPT0w9T04gXAor
ICAgICAgICAgICAgICAtRHNjdHBfZGVidWc9JHt7IG1hdHJpeC5zY3RwX2RlYnVnIH19IFwKKyAg
ICAgICAgICAgICAgLURzY3RwX2ludmFyaWFudHM9JHt7IG1hdHJpeC5zY3RwX2ludmFyaWFudHMg
fX0gXAorICAgICAgICAgICAgICAtRHNjdHBfaW5ldDY9JHt7IG1hdHJpeC5zY3RwX2luZXQ2IH19
IFwKKyAgICAgICAgICAgICAgLURzY3RwX2luZXQ9JHt7IG1hdHJpeC5zY3RwX2luZXQgfX0gXAor
ICAgICAgICAgICAgICAtRHNjdHBfYnVpbGRfcHJvZ3JhbXM9T04gXAorICAgICAgICAgICAgICAt
RHNjdHBfYnVpbGRfZnV6emVyPU9GRiBcCisgICAgICAgICAgICAgIC1EQ01BS0VfSU5TVEFMTF9Q
UkVGSVg9JHtHSVRIVUJfV09SS1NQQUNFfS9jbWFrZV9pbnN0YWxsIFwKKyAgICAgICAgICAgICAg
JHtHSVRIVUJfV09SS1NQQUNFfS91c3JzY3RwX3NvdXJjZQorICAgICAgICAKKyAgICAtIG5hbWU6
IEJ1aWxkIGFuZCBpbnN0YWxsIHByb2plY3QKKyAgICAgIHNoZWxsOiBiYXNoCisgICAgICBydW46
IHwKKyAgICAgICAgY21ha2UgLS1idWlsZCBjbWFrZV9idWlsZCBcCisgICAgICAgICAgICAgIC0t
cGFyYWxsZWwgMiBcCisgICAgICAgICAgICAgIC0tY29uZmlnICR7eyBtYXRyaXguY21ha2VfYnVp
bGRfdHlwZSB9fSBcCisgICAgICAgICAgICAgIC0tdGFyZ2V0IGluc3RhbGwgXAorICAgICAgICAg
ICAgICAtLWNsZWFuLWZpcnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi8uZ2l0aWdub3JlIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNj
dHBsaWIvLmdpdGlnbm9yZQppbmRleCA0YTM4MDEzOGRmNTkuLjllMmQxYTJhMzcxZiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3Jz
Y3RwL3VzcnNjdHBsaWIvLmdpdGlnbm9yZQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi8uZ2l0aWdub3JlCkBAIC01
NSwxNyArNTUsMjQgQEAgTWFrZWZpbGUuaW4KIC5kaXJzdGFtcAogCiAjIGJpbmFyaWVzCitwcm9n
cmFtcy9jaGFyZ2VuX3NlcnZlcl91cGNhbGwKIHByb2dyYW1zL2NsaWVudAorcHJvZ3JhbXMvY2xp
ZW50X3VwY2FsbAogcHJvZ3JhbXMvZGF5dGltZV9zZXJ2ZXIKK3Byb2dyYW1zL2RheXRpbWVfc2Vy
dmVyX3VwY2FsbAogcHJvZ3JhbXMvZGlzY2FyZF9zZXJ2ZXIKK3Byb2dyYW1zL2Rpc2NhcmRfc2Vy
dmVyX3VwY2FsbAogcHJvZ3JhbXMvZWNob19zZXJ2ZXIKK3Byb2dyYW1zL2VjaG9fc2VydmVyX3Vw
Y2FsbAogcHJvZ3JhbXMvZWtyX2NsaWVudAogcHJvZ3JhbXMvZWtyX2xvb3AKLXByb2dyYW1zL2Vr
cl9sb29wX29mZmxvYWQKK3Byb2dyYW1zL2Vrcl9sb29wX3VwY2FsbAogcHJvZ3JhbXMvZWtyX3Bl
ZXIKIHByb2dyYW1zL2Vrcl9zZXJ2ZXIKIHByb2dyYW1zL2h0dHBfY2xpZW50Citwcm9ncmFtcy9o
dHRwX2NsaWVudF91cGNhbGwKIHByb2dyYW1zL3J0Y3dlYgorcHJvZ3JhbXMvc3RfY2xpZW50CiBw
cm9ncmFtcy90c2N0cAogcHJvZ3JhbXMvdGVzdF9saWJtZ210CiBwcm9ncmFtcy90ZXN0X3RpbWVy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL0NNYWtlTGlz
dHMudHh0CmluZGV4IGFjZjUwNTVhNGUyOC4uMzcyNzBkMWQzNzk1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0
cGxpYi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9DTWFrZUxpc3RzLnR4dApAQCAtMSw2
ICsxLDYgQEAKICMKICMgQ29weXJpZ2h0IChDKSAyMDE1LTIwMTUgT2xlZyBBbGV4ZWVua292Ci0j
IENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEZlbGl4IFdlaW5yYW5rCisjIENvcHlyaWdodCAoQykg
MjAxNS0yMDE5IEZlbGl4IFdlaW5yYW5rCiAjCiAjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCkBA
IC0yOSw3ICsyOSw3IEBACiAjIFNVQ0ggREFNQUdFLgogIwogCi1wcm9qZWN0KHVzcnNjdHBsaWIp
Citwcm9qZWN0KHVzcnNjdHBsaWIgQykKIGNtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAz
LjApCiAKICMgRGVidWcgYnVpbGQgdHlwZSBhcyBkZWZhdWx0CkBAIC03Nyw2ICs3Nyw4IEBAIG9w
dGlvbihzY3RwX3Nhbml0aXplcl9hZGRyZXNzICJDb21waWxlIHdpdGggYWRkcmVzcyBzYW5pdGl6
ZXIiIDApCiAKIG9wdGlvbihzY3RwX3Nhbml0aXplcl9tZW1vcnkgIkNvbXBpbGUgd2l0aCBtZW1v
cnkgc2FuaXRpemVyIiAwKQogCitvcHRpb24oc2N0cF9idWlsZF9mdXp6ZXIgIkNvbXBpbGUgaW4g
Y2xhbmcgZnV6emluZyBtb2RlIiAwKQorCiBpZiAoc2N0cF9zYW5pdGl6ZXJfYWRkcmVzcyBBTkQg
c2N0cF9zYW5pdGl6ZXJfbWVtb3J5KQogCW1lc3NhZ2UoRkFUQUxfRVJST1IgIkNhbiBub3QgY29t
cGlsZSB3aXRoIGJvdGggc2FuaXRpemVyIG9wdGlvbnMiKQogZW5kaWYgKCkKQEAgLTEyMiw3ICsx
MjQsNyBAQCBlbmRpZiAoKQogIyBDSEVDSyBTVFJVQ1QgTUVNQkVSUwogIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi1zZXQoQ01BS0VfUkVRVUlSRURf
SU5DTFVERVMgIiR7Q01BS0VfU09VUkNFX0RJUn0vdXNyc2N0cGxpYiIpCitzZXQoQ01BS0VfUkVR
VUlSRURfSU5DTFVERVMgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS91c3JzY3RwbGliIikK
IAogY2hlY2tfaW5jbHVkZV9maWxlKHVzcnNjdHAuaCBoYXZlX3VzcnNjdHBfaCkKIGlmIChOT1Qg
aGF2ZV91c3JzY3RwX2gpCkBAIC0xNTgsOTQgKzE2MCwxMTMgQEAgZW5kaWYgKCkKICMgQ09NUElM
RVIgU0VUVElOR1MKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKIAorIyBEZXRlcm1pbmUgaWYgY29tcGlsZXIgaXMgVmlzdWFsIFN0dWRpbyBjb21waWxl
ciBvciBDbGFuZyBpbiBNU1ZDIGNvbXBhdGlibGUgbW9kZQoraWYgKENNQUtFX0NfQ09NUElMRVJf
SUQgTUFUQ0hFUyAiTVNWQyIgT1IgQ01BS0VfQ19TSU1VTEFURV9JRCBNQVRDSEVTICJNU1ZDIikK
KyAgc2V0KENfQ09NUElMRVJfSVNfTVNWQ19MSUtFIFRSVUUpCitlbmRpZigpCisKKyMgU0VUVElO
R1MgRk9SIFZJU1VBTCBTVFVESU8gQ09NUElMRVIKK2lmIChDX0NPTVBJTEVSX0lTX01TVkNfTElL
RSkKKwlpZiAoQ01BS0VfQ19GTEFHUyBNQVRDSEVTICIvV1swLTRdIikKKwkJc3RyaW5nKFJFR0VY
IFJFUExBQ0UgIi9XWzAtNF0iICIvVzQiIENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30i
KQorCWVsc2UgKCkKKwkJc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gL1c0IikK
KwllbmRpZiAoKQorCisJc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gL3dkNDEw
MCIpICMgJ2lkZW50aWZpZXInIDogdW5yZWZlcmVuY2VkIGZvcm1hbCBwYXJhbWV0ZXIKKwlzZXQo
Q01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAvd2Q0MTI3IikgIyBjb25kaXRpb25hbCBl
eHByZXNzaW9uIGlzIGNvbnN0YW50CisJc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFH
U30gL3dkNDIwMCIpICMgbm9uc3RhbmRhcmQgZXh0ZW5zaW9uIHVzZWQgOiB6ZXJvLXNpemVkIGFy
cmF5IGluIHN0cnVjdC91bmlvbgorCXNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9
IC93ZDQyMTQiKSAjIGJpdCBmaWVsZCB0eXBlcyBvdGhlciB0aGFuIGludAorCXNldChDTUFLRV9D
X0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC93ZDQ3MDYiKSAjIGFzc2lnbm1lbnQgd2l0aGluIGNv
bmRpdGlvbmFsIGV4cHJlc3Npb24KKwlzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdT
fSAvd2Q0MjQ1IikgIyAnY29udmVyc2lvbicgOiBjb252ZXJzaW9uIGZyb20gJ3R5cGUxJyB0byAn
dHlwZTInLCBzaWduZWQvdW5zaWduZWQgbWlzbWF0Y2gKKwlzZXQoQ01BS0VfQ19GTEFHUyAiJHtD
TUFLRV9DX0ZMQUdTfSAvd2Q0Mzg5IikgIyAnb3BlcmF0b3InIDogc2lnbmVkL3Vuc2lnbmVkIG1p
c21hdGNoCisJc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gL3dkNDcwMiIpICMg
dW5yZWFjaGFibGUgY29kZQorCXNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC93
ZDQ3MDEiKSAjIFBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgbG9jYWwgdmFyaWFibGUgJ25hbWUn
IHVzZWQKKworCSMgVG9EbworCXNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC93
ZDQyNDQiKSAjICdjb252ZXJzaW9uJyBjb252ZXJzaW9uIGZyb20gJ3R5cGUxJyB0byAndHlwZTIn
LCBwb3NzaWJsZSBsb3NzIG9mIGRhdGEKKworCWlmIChzY3RwX3dlcnJvcikKKwkJc2V0KENNQUtF
X0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gL1dYIikKKworCQlpZiAoQ01BS0VfQ19DT01QSUxF
Ul9JRCBNQVRDSEVTICJDbGFuZyIpCisJCQkjIHRlbXBvcmFyeSBkaXNhYmxlIGV4dGEgY2xhbmcg
d2FybmluZ3MgcHJldmVudGluZyBjb21waWxhdGlvbgorCQkJc2V0KENNQUtFX0NfRkxBR1MgIiR7
Q01BS0VfQ19GTEFHU30gL2NsYW5nOi1Xbm8tdW51c2VkLWZ1bmN0aW9uIikKKwkJCXNldChDTUFL
RV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC9jbGFuZzotV25vLW1pc3NpbmctZmllbGQtaW5p
dGlhbGl6ZXJzIikKKwkJCXNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC9jbGFu
ZzotV25vLXNpZ24tY29tcGFyZSIpCisJCQlzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZM
QUdTfSAvY2xhbmc6LVduby1mb3JtYXQiKQorCQllbmRpZigpCisJZW5kaWYgKCkKICMgU0VUVElO
R1MgRk9SIFVOSVggQ09NUElMRVIKLWlmICgiJHtDTUFLRV9DX0NPTVBJTEVSX0lEfSIgTUFUQ0hF
UyAiQ2xhbmciIE9SICIke0NNQUtFX0NfQ09NUElMRVJfSUR9IiBNQVRDSEVTICJBcHBsZUNsYW5n
IiBPUiAiJHtDTUFLRV9DX0NPTVBJTEVSX0lEfSIgTUFUQ0hFUyAiR05VIikKLQlzZXQoQ01BS0Vf
Q19GTEFHUyAgICIke0NNQUtFX0NfRkxBR1N9ICAgLXN0ZD1jOTkgLXBlZGFudGljIC1XYWxsIC1X
ZXh0cmEiKQotCXNldChDTUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAtc3RkPWM5
OSAtcGVkYW50aWMgLVdhbGwgLVdleHRyYSIpCitlbHNlaWYgKENNQUtFX0NfQ09NUElMRVJfSUQg
TUFUQ0hFUyAiQ2xhbmciIE9SIENNQUtFX0NfQ09NUElMRVJfSUQgTUFUQ0hFUyAiQXBwbGVDbGFu
ZyIgT1IgQ01BS0VfQ19DT01QSUxFUl9JRCBNQVRDSEVTICJHTlUiKQorCXNldChDTUFLRV9DX0ZM
QUdTICIke0NNQUtFX0NfRkxBR1N9IC1zdGQ9Yzk5IC1wZWRhbnRpYyAtV2FsbCAtV2V4dHJhIikK
IAogCWNoZWNrX2NfY29tcGlsZXJfZmxhZygtV2Zsb2F0LWVxdWFsIGhhc193ZmxvYXRfZXF1YWwp
CiAJaWYgKGhhc193ZmxvYXRfZXF1YWwpCi0JCXNldChDTUFLRV9DX0ZMQUdTICAgIiR7Q01BS0Vf
Q19GTEFHU30gICAtV2Zsb2F0LWVxdWFsIikKLQkJc2V0KENNQUtFX0NYWF9GTEFHUyAiJHtDTUFL
RV9DWFhfRkxBR1N9IC1XZmxvYXQtZXF1YWwiKQorCQlzZXQoQ01BS0VfQ19GTEFHUyAgIiR7Q01B
S0VfQ19GTEFHU30gLVdmbG9hdC1lcXVhbCIpCiAJZW5kaWYgKCkKIAogCWNoZWNrX2NfY29tcGls
ZXJfZmxhZygtV3NoYWRvdyBoYXNfd3NoYWRvdykKIAlpZiAoaGFzX3dzaGFkb3cpCi0JCXNldChD
TUFLRV9DX0ZMQUdTICAgIiR7Q01BS0VfQ19GTEFHU30gICAtV3NoYWRvdyIpCi0JCXNldChDTUFL
RV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAtV3NoYWRvdyIpCisJCXNldChDTUFLRV9D
X0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC1Xc2hhZG93IikKIAllbmRpZiAoKQogCiAJY2hlY2tf
Y19jb21waWxlcl9mbGFnKC1XcG9pbnRlci1hcml0aCBoYXNfd3BvaW50ZXJfYXJpdGloKQogCWlm
IChoYXNfd3BvaW50ZXJfYXJpdGloKQotCQlzZXQoQ01BS0VfQ19GTEFHUyAgICIke0NNQUtFX0Nf
RkxBR1N9ICAgLVdwb2ludGVyLWFyaXRoIikKLQkJc2V0KENNQUtFX0NYWF9GTEFHUyAiJHtDTUFL
RV9DWFhfRkxBR1N9IC1XcG9pbnRlci1hcml0aCIpCisJCXNldChDTUFLRV9DX0ZMQUdTICIke0NN
QUtFX0NfRkxBR1N9IC1XcG9pbnRlci1hcml0aCIpCiAJZW5kaWYgKCkKIAogCWNoZWNrX2NfY29t
cGlsZXJfZmxhZygtV3VucmVhY2hhYmxlLWNvZGUgaGFzX3d1bnJlYWNoYWJsZV9jb2RlKQogCWlm
IChoYXNfd3VucmVhY2hhYmxlX2NvZGUpCi0JCXNldChDTUFLRV9DX0ZMQUdTICAgIiR7Q01BS0Vf
Q19GTEFHU30gICAtV3VucmVhY2hhYmxlLWNvZGUiKQotCQlzZXQoQ01BS0VfQ1hYX0ZMQUdTICIk
e0NNQUtFX0NYWF9GTEFHU30gLVd1bnJlYWNoYWJsZS1jb2RlIikKKwkJc2V0KENNQUtFX0NfRkxB
R1MgIiR7Q01BS0VfQ19GTEFHU30gLVd1bnJlYWNoYWJsZS1jb2RlIikKIAllbmRpZiAoKQogCiAJ
Y2hlY2tfY19jb21waWxlcl9mbGFnKC1XaW5pdC1zZWxmIGhhc193aW5pdF9zZWxmKQogCWlmICho
YXNfd2luaXRfc2VsZikKLQkJc2V0KENNQUtFX0NfRkxBR1MgICAiJHtDTUFLRV9DX0ZMQUdTfSAg
IC1XaW5pdC1zZWxmIikKLQkJc2V0KENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9
IC1XaW5pdC1zZWxmIikKKwkJc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gLVdp
bml0LXNlbGYiKQogCWVuZGlmICgpCiAKIAljaGVja19jX2NvbXBpbGVyX2ZsYWcoLVduby11bnVz
ZWQtZnVuY3Rpb24gaGFzX3dub191bnVzZWRfZnVuY3Rpb24pCiAJaWYgKGhhc193bm9fdW51c2Vk
X2Z1bmN0aW9uKQotCQlzZXQoQ01BS0VfQ19GTEFHUyAgICIke0NNQUtFX0NfRkxBR1N9ICAgLVdu
by11bnVzZWQtZnVuY3Rpb24iKQotCQlzZXQoQ01BS0VfQ1hYX0ZMQUdTICIke0NNQUtFX0NYWF9G
TEFHU30gLVduby11bnVzZWQtZnVuY3Rpb24iKQorCQlzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFL
RV9DX0ZMQUdTfSAtV25vLXVudXNlZC1mdW5jdGlvbiIpCiAJZW5kaWYgKCkKIAogCWNoZWNrX2Nf
Y29tcGlsZXJfZmxhZygtV25vLXVudXNlZC1wYXJhbWV0ZXIgaGFzX3dub191bnVzZWRfcGFyYW1l
dGVyKQogCWlmIChoYXNfd25vX3VudXNlZF9wYXJhbWV0ZXIpCi0JCXNldChDTUFLRV9DX0ZMQUdT
ICAgIiR7Q01BS0VfQ19GTEFHU30gICAtV25vLXVudXNlZC1wYXJhbWV0ZXIiKQotCQlzZXQoQ01B
S0VfQ1hYX0ZMQUdTICIke0NNQUtFX0NYWF9GTEFHU30gLVduby11bnVzZWQtcGFyYW1ldGVyIikK
KwkJc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gLVduby11bnVzZWQtcGFyYW1l
dGVyIikKIAllbmRpZiAoKQogCiAJY2hlY2tfY19jb21waWxlcl9mbGFnKC1Xbm8tdW5yZWFjaGFi
bGUtY29kZSBoYXNfd25vX3VucmVhY2hhYmxlX2NvZGUpCiAJaWYgKGhhc193bm9fdW5yZWFjaGFi
bGVfY29kZSkKLQkJc2V0KENNQUtFX0NfRkxBR1MgICAiJHtDTUFLRV9DX0ZMQUdTfSAgIC1Xbm8t
dW5yZWFjaGFibGUtY29kZSIpCi0JCXNldChDTUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZM
QUdTfSAtV25vLXVucmVhY2hhYmxlLWNvZGUiKQorCQlzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFL
RV9DX0ZMQUdTfSAtV25vLXVucmVhY2hhYmxlLWNvZGUiKQogCWVuZGlmICgpCiAKIAljaGVja19j
X2NvbXBpbGVyX2ZsYWcoLVdzdHJpY3QtcHJvdG90eXBlcyBoYXNfd3N0cmljdF9wcm90b3R5cGVz
KQogCWlmIChoYXNfd3N0cmljdF9wcm90b3R5cGVzKQotCQlzZXQoQ01BS0VfQ19GTEFHUyAgICIk
e0NNQUtFX0NfRkxBR1N9ICAgLVdzdHJpY3QtcHJvdG90eXBlcyIpCi0JCXNldChDTUFLRV9DWFhf
RkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAtV3N0cmljdC1wcm90b3R5cGVzIikKKwkJc2V0KENN
QUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gLVdzdHJpY3QtcHJvdG90eXBlcyIpCiAJZW5k
aWYgKCkKIAogCWlmIChzY3RwX3dlcnJvcikKLQkJc2V0KENNQUtFX0NfRkxBR1MgICAiJHtDTUFL
RV9DX0ZMQUdTfSAgIC1XZXJyb3IiKQotCQlzZXQoQ01BS0VfQ1hYX0ZMQUdTICIke0NNQUtFX0NY
WF9GTEFHU30gLVdlcnJvciIpCisJCXNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9
IC1XZXJyb3IiKQogCWVuZGlmICgpCiAKIAlpZiAoc2N0cF9zYW5pdGl6ZXJfYWRkcmVzcykKLQkJ
c2V0KENNQUtFX0NfRkxBR1MgICAiJHtDTUFLRV9DX0ZMQUdTfSAgIC1mc2FuaXRpemU9YWRkcmVz
cyAtZm5vLW9taXQtZnJhbWUtcG9pbnRlciAtZyIpCi0JCXNldChDTUFLRV9DWFhfRkxBR1MgIiR7
Q01BS0VfQ1hYX0ZMQUdTfSAtZnNhbml0aXplPWFkZHJlc3MgLWZuby1vbWl0LWZyYW1lLXBvaW50
ZXIgLWciKQorCQlzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAtZnNhbml0aXpl
PWFkZHJlc3MsdW5kZWZpbmVkLHNpZ25lZC1pbnRlZ2VyLW92ZXJmbG93IC1mbm8tb21pdC1mcmFt
ZS1wb2ludGVyIC1mbm8tc2FuaXRpemUtcmVjb3Zlcj1hbGwgLWZzYW5pdGl6ZS1hZGRyZXNzLXVz
ZS1hZnRlci1zY29wZSAiKQogCWVuZGlmICgpCiAKIAlpZiAoc2N0cF9zYW5pdGl6ZXJfbWVtb3J5
KQotCQlzZXQoQ01BS0VfQ19GTEFHUyAgICIke0NNQUtFX0NfRkxBR1N9ICAgLWZzYW5pdGl6ZT1t
ZW1vcnkgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIgLWcgLWZzYW5pdGl6ZS1tZW1vcnktdHJhY2st
b3JpZ2lucyIpCi0JCXNldChDTUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAtZnNh
bml0aXplPW1lbW9yeSAtZm5vLW9taXQtZnJhbWUtcG9pbnRlciAtZyAtZnNhbml0aXplLW1lbW9y
eS10cmFjay1vcmlnaW5zIikKKwkJc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30g
LWZzYW5pdGl6ZT1tZW1vcnkgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIgLWZzYW5pdGl6ZS1tZW1v
cnktdHJhY2stb3JpZ2lucyAtZlBJRSIpCiAJZW5kaWYgKCkKLWVuZGlmICgpCiAKLSMgU0VUVElO
R1MgRk9SIFZJU1VBTCBTVFVESU8gQ09NUElMRVIKLWlmICgieCR7Q01BS0VfQ19DT01QSUxFUl9J
RH0iIFNUUkVRVUFMICJ4TVNWQyIpCi0JaWYgKENNQUtFX0NfRkxBR1MgTUFUQ0hFUyAiL1dbMC00
XSIpCi0JCXN0cmluZyhSRUdFWCBSRVBMQUNFICIvV1swLTRdIiAiL1czIiBDTUFLRV9DX0ZMQUdT
ICIke0NNQUtFX0NfRkxBR1N9IikKLQllbHNlICgpCi0JCXNldChDTUFLRV9DX0ZMQUdTICIke0NN
QUtFX0NfRkxBR1N9IC9XMyIpCi0JZW5kaWYgKCkKLQotCWlmIChXRVJST1IpCi0JCXNldChDTUFL
RV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC9XWCIpCisJaWYgKHNjdHBfYnVpbGRfZnV6emVy
KQorCQlzZXQoQ01BS0VfQlVJTERfVFlQRSAiREVCVUciKQorCQlhZGRfZGVmaW5pdGlvbnMoLURG
VVpaSU5HX0JVSUxEX01PREVfVU5TQUZFX0ZPUl9QUk9EVUNUSU9OKQorCQlzZXQoQ01BS0VfQ19G
TEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAtTzEgLWZzYW5pdGl6ZT1mdXp6ZXItbm8tbGluayIpCiAJ
ZW5kaWYgKCkKIGVuZGlmICgpCiAKK21lc3NhZ2UoU1RBVFVTICJDb21waWxlciBmbGFncyAoQ01B
S0VfQ19GTEFHUyk6ICR7Q01BS0VfQ19GTEFHU30iKQorCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgSU5DTFVERSBTVUJESVJTCkBAIC0yNTYs
MyArMjc3LDcgQEAgYWRkX3N1YmRpcmVjdG9yeSh1c3JzY3RwbGliKQogaWYgKHNjdHBfYnVpbGRf
cHJvZ3JhbXMpCiAJYWRkX3N1YmRpcmVjdG9yeShwcm9ncmFtcykKIGVuZGlmICgpCisKK2lmIChz
Y3RwX2J1aWxkX2Z1enplcikKKwlhZGRfc3ViZGlyZWN0b3J5KGZ1enplcikKK2VuZGlmICgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi9NYWtlZmlsZS5hbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL01ha2VmaWxlLmFtCmlu
ZGV4IGU5ZTE3ZTIyYzRmNy4uNGJkOTk4ZmJlNzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9NYWtl
ZmlsZS5hbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9NYWtlZmlsZS5hbQpAQCAtMjgsNyArMjgsMTEgQEAKICMg
U1VDSCBEQU1BR0UuCiAjCiAKLVNVQkRJUlMgPSB1c3JzY3RwbGliIHByb2dyYW1zCitpZiBDT05E
X1BST0dSQU1TCitNQVlCRVBST0dSQU1TID0gcHJvZ3JhbXMKK2VuZGlmCisKK1NVQkRJUlMgPSB1
c3JzY3RwbGliICQoTUFZQkVQUk9HUkFNUykKIEVYVFJBX0RJU1QgPSBib290c3RyYXAgTWFrZWZp
bGUubm1ha2UKIEFDTE9DQUxfQU1GTEFHUyA9IC1JIG00CiAjIHBrZ2NvbmZpZ19EQVRBID0gdXNy
c2N0cC5wYwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvTWFudWFsLm1kIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvTWFudWFs
Lm1kCmluZGV4IDcwNTczNjg4NDRkZS4uYjE3Yzc1NDE0MmRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi9NYW51YWwubWQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvTWFudWFsLm1kCkBAIC00LDcgKzQsNyBAQCBTQ1RQ
IGlzIGEgbWVzc2FnZSBvcmllbnRlZCwgcmVsaWFibGUgdHJhbnNwb3J0IHByb3RvY29sIHdpdGgg
ZGlyZWN0IHN1cHBvcnQgZm9yCiAKIExpa2UgVENQLCBTQ1RQIHByb3ZpZGVzIHJlbGlhYmxlLCBj
b25uZWN0aW9uIG9yaWVudGVkIGRhdGEgZGVsaXZlcnkgd2l0aCBjb25nZXN0aW9uIGNvbnRyb2wu
IFVubGlrZSBUQ1AsIFNDVFAgYWxzbyBwcm92aWRlcyBtZXNzYWdlIGJvdW5kYXJ5IHByZXNlcnZh
dGlvbiwgb3JkZXJlZCBhbmQgdW5vcmRlcmVkIG1lc3NhZ2UgZGVsaXZlcnksIG11bHRpLXN0cmVh
bWluZyBhbmQgbXVsdGktaG9taW5nLiBEZXRlY3Rpb24gb2YgZGF0YSBjb3JydXB0aW9uLCBsb3Nz
IG9mIGRhdGEgYW5kIGR1cGxpY2F0aW9uIG9mIGRhdGEgaXMgYWNoaWV2ZWQgYnkgdXNpbmcgY2hl
Y2tzdW1zIGFuZCBzZXF1ZW5jZSBudW1iZXJzLiBBIHNlbGVjdGl2ZSByZXRyYW5zbWlzc2lvbiBt
ZWNoYW5pc20gaXMgYXBwbGllZCB0byBjb3JyZWN0IGxvc3Mgb3IgY29ycnVwdGlvbiBvZiBkYXRh
LgogCi1JbiB0aGlzIG1hbnVhbCB0aGUgc29ja2V0IEFQSSBmb3IgdGhlIFNDVFAgVXNlci1sYW5k
IGltcGxlbWVudGF0aW9uIHdpbGwgYmUgZGVzY3JpYmVkLiAgSXQgaXMgYmFzZWQgb24gW1JGQyA2
NDU4XShodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU4KS4gVGhlIG1haW4gZm9jdXMg
b2YgdGhpcyBkb2N1bWVudCBpcyBvbiBwb2ludGluZyBvdXQgdGhlIGRpZmZlcmVuY2VzIHRvIHRo
ZSBTQ1RQIFNvY2tldHMgQVBJLiBGb3IgYWxsIGFzcGVjdHMgb2YgdGhlIHNvY2tldHMgQVBJIHRo
YXQgYXJlIG5vdCBtZW50aW9uZWQgaW4gdGhpcyBkb2N1bWVudCwgcGxlYXNlIHJlZmVyIHRvIFtS
RkMgNjQ1OF0oaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1OCkuIFF1ZXN0aW9ucyBh
Ym91dCBTQ1RQIGl0c2VsZiBjYW4gaG9wZWZ1bGx5IGJlIGFuc3dlcmVkIGJ5IFtSRkMgNDk2MF0o
aHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNDk2MCkuCitJbiB0aGlzIG1hbnVhbCB0aGUg
c29ja2V0IEFQSSBmb3IgdGhlIFNDVFAgVXNlci1sYW5kIGltcGxlbWVudGF0aW9uIHdpbGwgYmUg
ZGVzY3JpYmVkLiAgSXQgaXMgYmFzZWQgb24gW1JGQyA2NDU4XShodHRwczovL3Rvb2xzLmlldGYu
b3JnL2h0bWwvcmZjNjQ1OCkuIFRoZSBtYWluIGZvY3VzIG9mIHRoaXMgZG9jdW1lbnQgaXMgb24g
cG9pbnRpbmcgb3V0IHRoZSBkaWZmZXJlbmNlcyB0byB0aGUgU0NUUCBTb2NrZXRzIEFQSS4gRm9y
IGFsbCBhc3BlY3RzIG9mIHRoZSBzb2NrZXRzIEFQSSB0aGF0IGFyZSBub3QgbWVudGlvbmVkIGlu
IHRoaXMgZG9jdW1lbnQsIHBsZWFzZSByZWZlciB0byBbUkZDIDY0NThdKGh0dHBzOi8vdG9vbHMu
aWV0Zi5vcmcvaHRtbC9yZmM2NDU4KS4gUXVlc3Rpb25zIGFib3V0IFNDVFAgaXRzZWxmIGNhbiBo
b3BlZnVsbHkgYmUgYW5zd2VyZWQgYnkgW1JGQyA0OTYwXShodHRwczovL3Rvb2xzLmlldGYub3Jn
L2h0bWwvcmZjNDk2MCkuCiAKICMjIEdldHRpbmcgU3RhcnRlZAogVGhlIHVzZXItbGFuZCBzdGFj
ayBoYXMgYmVlbiB0ZXN0ZWQgb24gRnJlZUJTRCAxMC4wLCBVYnVudHUgMTEuMTAsIFdpbmRvd3Mg
NywgTWFjIE9TIFggMTAuNiwgYW5kIE1hYyBPUyBYIDEwLjcuIFRoZSBjdXJyZW50IHZlcnNpb24g
b2YgdGhlIHVzZXItbGFuZCBzdGFjayBpcyBwcm92aWRlZCBvbiBbZ2l0aHViXShodHRwczovL2dp
dGh1Yi5jb20vc2N0cGxhYi91c3JzY3RwKS4gRG93bmxvYWQgdGhlIHRhcmJhbGwgYW5kIHVudGFy
IGl0IGluIGEgZm9sZGVyIG9mIHlvdXIgY2hvaWNlLiBUaGUgdGFyYmFsbCBjb250YWlucyBhbGwg
dGhlIHNvdXJjZXMgdG8gYnVpbGQgdGhlIGxpYnVzcnNjdHAsIHdoaWNoIGhhcyB0byBiZSBsaW5r
ZWQgdG8gdGhlIG9iamVjdCBmaWxlIG9mIGFuIGV4YW1wbGUgcHJvZ3JhbS4gSW4gYWRkaXRpb24g
dGhlcmUgYXJlIHR3byBhcHBsaWNhdGlvbnMgaW4gdGhlIGZvbGRlciBgcHJvZ3JhbXNgIHRoYXQg
Y2FuIGJlIGJ1aWx0IGFuZCBydW4uCkBAIC0xMjgsMTcgKzEyOCwxOCBAQCB1c3JzY3RwX3NvY2tl
dChpbnQgZG9tYWluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdWxwX2luZm8pLAogICAg
ICAgICAgICAgICAgaW50ICgqc2VuZF9jYikoc3RydWN0IHNvY2tldCAqc29jaywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNiX2ZyZWUpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDMyX3Qgc2JfZnJlZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZvaWQgKnVscF9pbmZvKSwKICAgICAgICAgICAgICAgIHVpbnQzMl90IHNiX3RocmVz
aG9sZCwKICAgICAgICAgICAgICAgIHZvaWQgKnVscF9pbmZvKQogYGBgCiAKLVRoZSBhcmd1bWVu
dHMgdGFrZW4gZnJvbSBbUkZDIDY0NThdKGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0
NTgpIGFyZToKK1RoZSBhcmd1bWVudHMgdGFrZW4gZnJvbSBbUkZDIDY0NThdKGh0dHBzOi8vdG9v
bHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU4KSBhcmU6CiAKICogZG9tYWluOiBQRl9JTkVUIG9yIFBG
X0lORVQ2IGNhbiBiZSB1c2VkLgogKiB0eXBlOiBJbiBjYXNlIG9mIGEgb25lLXRvLW1hbnkgc3R5
bGUgc29ja2V0IGl0IGlzIFNPQ0tfU0VRUEFDS0VULCBpbiBjYXNlIG9mIGEgb25lLXRvLW9uZSBz
dHlsZQogc29ja2V0IGl0IGlzIFNPQ0tfU1RSRUFNLiBGb3IgYW4gZXhwbGFuYXRpb24gb2YgdGhl
IGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHNvY2tldCB0eXBlcyBwbGVhc2UKLXJlZmVyIHRvIFtS
RkMgNjQ1OF0oaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1OCkuCityZWZlciB0byBb
UkZDIDY0NThdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU4KS4KICogcHJvdG9j
b2w6IFNldCBJUFBST1RPX1NDVFAuCiAKIEluIHVzcnNjdHAsIGEgY2FsbGJhY2sgQVBJIGNhbiBi
ZSB1c2VkLgpAQCAtMTYxLDcgKzE2Miw3IEBAIFRodXMgdGhlIG9ubHkgZGlmZmVyZW5jZSBpcyB0
aGUgYWJzZW5jZSBvZiBhIHJldHVybiBjb2RlLgogIyMgU2FtZSBGdW5jdGlvbmFsaXR5IGFzIFJG
QyA2NDU4CiAKIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGhhdmUgdGhlIHNhbWUgZnVuY3Rpb25h
bGl0eSBhcyB0aGVpciBrZXJuZWwgcGVuZGFudHMuIFRoZXJlIHByb3RvdHlwZXMKLWFyZSBkZXNj
cmliZWQgaW4gdGhlIGZvbGxvd2luZyBzdWJzZWN0aW9ucy4gRm9yIGEgZGV0YWlsZWQgZGVzY3Jp
cHRpb24gcGxlYXNlIHJlZmVyIHRvIFtSRkMgNjQ1OF0oaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0
bWwvcmZjNjQ1OCkuCithcmUgZGVzY3JpYmVkIGluIHRoZSBmb2xsb3dpbmcgc3Vic2VjdGlvbnMu
IEZvciBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIHBsZWFzZSByZWZlciB0byBbUkZDIDY0NThdKGh0
dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU4KS4KIAogIyMjIHVzcnNjdHBfYmluZCgp
CiAKQEAgLTIzNyw3ICsyMzgsNyBAQCB1c3JzY3RwX3NodXRkb3duKHN0cnVjdCBzb2NrZXQgKnNv
LCBpbnQgaG93KQogYHVzcnNjdHBfc2h1dGRvd24oKWAgcmV0dXJucyAwIG9uIHN1Y2Nlc3MgYW5k
IC0xIGluIGNhc2Ugb2YgYW4gZXJyb3IuCiAKICMjIFNlbmRpbmcgYW5kIFJlY2VpdmluZyBEYXRh
Ci1TaW5jZSB0aGUgcHVibGljYXRpb24gb2YgW1JGQyA2NDU4XShodHRwOi8vdG9vbHMuaWV0Zi5v
cmcvaHRtbC9yZmM2NDU4KSB0aGVyZSBpcyBvbmx5IG9uZSBmdW5jdGlvbiBmb3Igc2VuZGluZyBh
bmQgb25lIGZvciByZWNlaXZpbmcKK1NpbmNlIHRoZSBwdWJsaWNhdGlvbiBvZiBbUkZDIDY0NThd
KGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU4KSB0aGVyZSBpcyBvbmx5IG9uZSBm
dW5jdGlvbiBmb3Igc2VuZGluZyBhbmQgb25lIGZvciByZWNlaXZpbmcKIHRoYXQgaXMgbm90IGRl
cHJlY2F0ZWQuIFRoZXJlZm9yZSwgb25seSB0aGVzZSB0d28gYXJlIGRlc2NyaWJlZCBoZXJlLgog
CiAjIyMgdXNyc2N0cF9zZW5kdigpCkBAIC0yNjAsMTQgKzI2MSwxNCBAQCB1c3JzY3RwX3NlbmR2
KHN0cnVjdCBzb2NrZXQgKnNvLAogKiBsZW46IExlbmd0aCBvZiB0aGUgZGF0YS4KICogYWRkcnM6
IEluIHRoaXMgdmVyc2lvbiBvZiB1c3JzY3RwIGF0IG1vc3Qgb25lIGRlc3RpbmF0aW9uIGFkZHJl
c3MgaXMgc3VwcG9ydGVkLiBJbiB0aGUgY2FzZSBvZiBhIGNvbm5lY3RlZCBzb2NrZXQsIHRoZSBw
YXJhbWV0ZXIgYGFkZHJzYCBjYW4gYmUgc2V0IHRvIE5VTEwuCiAqIGFkZHJjbnQ6IE51bWJlciBv
ZiBhZGRyZXNzZXMuIEFzIGF0IG1vc3Qgb25lIGFkZHJlc3MgaXMgc3VwcG9ydGVkLCBhZGRyY250
IGlzIDAgaWYgYWRkcnMgaXMgTlVMTCBhbmQgMSBvdGhlcndpc2UuCi0qIGluZm86IEFkZGl0aW9u
YWwgaW5mb3JtYXRpb24gZm9yIGEgbWVzc2FnZSBpcyBzdG9yZWQgaW4gYHZvaWQgKmluZm9gLiBU
aGUgZGF0YSB0eXBlcyBgc3RydWN0IHNjdHBfc25kaW5mb2AsIGBzdHJ1Y3Qgc2N0cF9wcmluZm9g
LCBhbmQgYHN0cnVjdCBzY3RwX3NlbmR2X3NwYWAgYXJlIHN1cHBvcnRlZCBhcyBkZWZpbmVkIGlu
IFtSRkMgNjQ1OF0oaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1OCkuIFN1cHBvcnQg
Zm9yIGBzdHJ1Y3Qgc2N0cF9hdXRoaW5mb2AgaXMgbm90IGltcGxlbWVudGVkIHlldCwgdGhlcmVm
b3JlLCBlcnJubyBpcyBzZXQgRUlOVkFMIGFuZCAtMSB3aWxsIGJlIHJldHVybmVkLCBpZiBpdCBp
cyB1c2VkLgorKiBpbmZvOiBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGZvciBhIG1lc3NhZ2UgaXMg
c3RvcmVkIGluIGB2b2lkICppbmZvYC4gVGhlIGRhdGEgdHlwZXMgYHN0cnVjdCBzY3RwX3NuZGlu
Zm9gLCBgc3RydWN0IHNjdHBfcHJpbmZvYCwgYW5kIGBzdHJ1Y3Qgc2N0cF9zZW5kdl9zcGFgIGFy
ZSBzdXBwb3J0ZWQgYXMgZGVmaW5lZCBpbiBbUkZDIDY0NThdKGh0dHBzOi8vdG9vbHMuaWV0Zi5v
cmcvaHRtbC9yZmM2NDU4KS4gU3VwcG9ydCBmb3IgYHN0cnVjdCBzY3RwX2F1dGhpbmZvYCBpcyBu
b3QgaW1wbGVtZW50ZWQgeWV0LCB0aGVyZWZvcmUsIGVycm5vIGlzIHNldCBFSU5WQUwgYW5kIC0x
IHdpbGwgYmUgcmV0dXJuZWQsIGlmIGl0IGlzIHVzZWQuCiAqIGluZm9sZW46IExlbmd0aCBvZiBp
bmZvIGluIGJ5dGVzLgogKiBpbmZvdHlwZTogSWRlbnRpZmllcyB0aGUgdHlwZSBvZiB0aGUgaW5m
b3JtYXRpb24gcHJvdmlkZWQgaW4gaW5mby4gUG9zc2libGUgdmFsdWVzIGFyZQogICAqIFNDVFBf
U0VORFZfTk9JTkZPCiAgICogU0NUUF9TRU5EVl9TTkRJTkZPCiAgICogU0NUUF9TRU5EVl9QUklO
Rk8KLSAgKiBTQ1RQX1NFTkRWX1NQQSAoRm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcGxlYXNl
IHJlZmVyIHRvIFtSRkMgNjQ1OF0oaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1OCku
KQotKiBmbGFnczogRmxhZ3MgYXMgZGVzY3JpYmVkIGluIFtSRkMgNjQ1OF0oaHR0cDovL3Rvb2xz
LmlldGYub3JnL2h0bWwvcmZjNjQ1OCkuCisgICogU0NUUF9TRU5EVl9TUEEgKEZvciBhZGRpdGlv
bmFsIGluZm9ybWF0aW9uIHBsZWFzZSByZWZlciB0byBbUkZDIDY0NThdKGh0dHBzOi8vdG9vbHMu
aWV0Zi5vcmcvaHRtbC9yZmM2NDU4KS4pCisqIGZsYWdzOiBGbGFncyBhcyBkZXNjcmliZWQgaW4g
W1JGQyA2NDU4XShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1OCkuCiAKIGB1c3Jz
Y3RwX3NlbmR2KClgIHJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyBzZW50LCBvciAtMSBpZiBh
biBlcnJvciBvY2N1cnJlZC4gIFRoZSB2YXJpYWJsZSBlcnJubyBpcyB0aGVuIHNldCBhcHByb3By
aWF0ZWx5LgogCkBAIC0yOTEsMjAgKzI5MiwyMCBAQCB1c3JzY3RwX3JlY3Z2KHN0cnVjdCBzb2Nr
ZXQgKnNvLAogKiBsZW46IExlbmd0aCBvZiB0aGUgYnVmZmVyIGluIGJ5dGVzLgogKiBmcm9tOiBB
IHBvaW50ZXIgdG8gYW4gYWRkcmVzcyB0byBiZSBmaWxsZWQgd2l0aCB0aGUgc2VuZGVyIG9mIHRo
ZSByZWNlaXZlZCBtZXNzYWdlJ3MgYWRkcmVzcy4KICogZnJvbWxlbjogQW4gaW4vb3V0IHBhcmFt
ZXRlciBkZXNjcmliaW5nIHRoZSBmcm9tIGxlbmd0aC4KLSogaW5mbzogQSBwb2ludGVyIHRvIHRo
ZSBidWZmZXIgdG8gaG9sZCB0aGUgYXR0cmlidXRlcyBvZiB0aGUgcmVjZWl2ZWQgbWVzc2FnZS4g
IFRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiBpbmZvIGlzIGRldGVybWluZWQgYnkgdGhlIGluZm90eXBl
IHBhcmFtZXRlci4gVGhlIGF0dHJpYnV0ZXMgcmV0dXJuZWQgaW4gYGluZm9gIGhhdmUgdG8gYmUg
aGFuZGxlZCBpbiB0aGUgc2FtZSB3YXkgYXMgc3BlY2lmaWVkIGluIFtSRkMgNjQ1OF0oaHR0cDov
L3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1OCkuCisqIGluZm86IEEgcG9pbnRlciB0byB0aGUg
YnVmZmVyIHRvIGhvbGQgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIHJlY2VpdmVkIG1lc3NhZ2UuICBU
aGUgc3RydWN0dXJlIHR5cGUgb2YgaW5mbyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBpbmZvdHlwZSBw
YXJhbWV0ZXIuIFRoZSBhdHRyaWJ1dGVzIHJldHVybmVkIGluIGBpbmZvYCBoYXZlIHRvIGJlIGhh
bmRsZWQgaW4gdGhlIHNhbWUgd2F5IGFzIHNwZWNpZmllZCBpbiBbUkZDIDY0NThdKGh0dHBzOi8v
dG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU4KS4KICogaW5mb2xlbjogIEFuIGluL291dCBwYXJh
bWV0ZXIgZGVzY3JpYmluZyB0aGUgc2l6ZSBvZiB0aGUgaW5mbyBidWZmZXIuCiAqIGluZm90eXBl
OiAgT24gcmV0dXJuLCBgKmluZm90eXBlYCBpcyBzZXQgdG8gdGhlIHR5cGUgb2YgdGhlIGluZm8g
YnVmZmVyLiAgVGhlIGN1cnJlbnQgZGVmaW5lZCB2YWx1ZXMgYXJlCiAgICogU0NUUF9SRUNWVl9O
T0lORk8KICAgKiBTQ1RQX1JFQ1ZWX1JDVklORk8KICAgKiBTQ1RQX1JFQ1ZWX05YVElORk8KLSAg
KiBTQ1RQX1JFQ1ZWX1JOIChBIGRldGFpbGVkIGRlc2NyaXB0aW9uIGlzIGdpdmVuIGluIFtSRkMg
NjQ1OF0oaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1OCkpCisgICogU0NUUF9SRUNW
Vl9STiAoQSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBpcyBnaXZlbiBpbiBbUkZDIDY0NThdKGh0dHBz
Oi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU4KSkKICogZmxhZ3M6IEEgcG9pbnRlciB0byBh
biBpbnRlZ2VyIHRvIGJlIGZpbGxlZCB3aXRoIGFueSBtZXNzYWdlIGZsYWdzIChlLmcuLCBgTVNH
X05PVElGSUNBVElPTmApLiAgTm90ZSB0aGF0IHRoaXMgZmllbGQgaXMgYW4gaW4vb3V0IHBhcmFt
ZXRlci4gIE9wdGlvbnMgZm9yIHRoZSByZWNlaXZlIG1heSBhbHNvIGJlIHBhc3NlZCBpbnRvIHRo
ZSB2YWx1ZSAoZS5nLiwgYE1TR19FT1JgKS4gIFJldHVybmluZyBmcm9tIHRoZSBjYWxsLCB0aGUg
ZmxhZ3MnIHZhbHVlIHdpbGwgZGlmZmVyIGZyb20gaXRzIG9yaWdpbmFsIHZhbHVlLgogCi1gdXNy
c2N0cF9yZWN2digpYCByZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgc2VudCwgb3IgLTEgaWYg
YW4gZXJyb3Igb2NjdXJyZWQuICBUaGUgdmFyaWFibGUgZXJybm8gaXMgdGhlbiBzZXQgYXBwcm9w
cmlhdGVseS4KK2B1c3JzY3RwX3JlY3Z2KClgIHJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyBy
ZWNlaXZlZCwgb3IgLTEgaWYgYW4gZXJyb3Igb2NjdXJyZWQuICBUaGUgdmFyaWFibGUgZXJybm8g
aXMgdGhlbiBzZXQgYXBwcm9wcmlhdGVseS4KIAogIyMgU29ja2V0IE9wdGlvbnMKIFNvY2tldCBv
cHRpb25zIGFyZSB1c2VkIHRvIGNoYW5nZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiBzb2NrZXQg
Y2FsbHMuCi1UaGVpciBiZWhhdmlvciBpcyBzcGVjaWZpZWQgaW4gW1JGQyA2NDU4XShodHRwOi8v
dG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU4KS4gVGhlIGZ1bmN0aW9ucyB0byBnZXQgb3Igc2V0
IHRoZW0gYXJlCitUaGVpciBiZWhhdmlvciBpcyBzcGVjaWZpZWQgaW4gW1JGQyA2NDU4XShodHRw
czovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1OCkuIFRoZSBmdW5jdGlvbnMgdG8gZ2V0IG9y
IHNldCB0aGVtIGFyZQogCiBgYGBjCiBpbnQKQEAgLTM3NSw3ICszNzYsNyBAQCBTQ1RQX1JFU0VU
X1NUUkVBTVMgfCBzdHJ1Y3Qgc2N0cF9yZXNldF9zdHJlYW1zIHwgdwogU0NUUF9SRVNFVF9BU1NP
QyB8IHN0cnVjdCBzY3RwX2Fzc29jX3QgfCB3CiBTQ1RQX0FERF9TVFJFQU1TIHwgc3RydWN0IHNj
dHBfYWRkX3N0cmVhbXMgfCB3CiAKLUZ1cnRoZXIgdXNhZ2UgZGV0YWlscyBhcmUgZGVzY3JpYmVk
IGluIFtSRkMgNjQ1OF0odG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU4KSwgW1JGQyA2NTI1XSh0
b29scy5pZXRmLm9yZy9odG1sL3JmYzY1MjUpLCBhbmQgW2RyYWZ0LWlldGYtdHN2d2ctc2N0cC11
ZHAtZW5jYXBzLTAzXShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi10c3Z3
Zy1zY3RwLXVkcC1lbmNhcHMtMDMpICh3b3JrIGluIHByb2dyZXNzKS4KK0Z1cnRoZXIgdXNhZ2Ug
ZGV0YWlscyBhcmUgZGVzY3JpYmVkIGluIFtSRkMgNjQ1OF0oaHR0cHM6Ly90b29scy5pZXRmLm9y
Zy9odG1sL3JmYzY0NTgpLCBbUkZDIDY1MjVdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9y
ZmM2NTI1KSwgYW5kIFtkcmFmdC1pZXRmLXRzdndnLXNjdHAtdWRwLWVuY2Fwcy0wM10oaHR0cHM6
Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtdHN2d2ctc2N0cC11ZHAtZW5jYXBzLTAz
KSAod29yayBpbiBwcm9ncmVzcykuCiAKICMjIFN5c2N0bCB2YXJpYWJsZXMKIApAQCAtNTYzLDcg
KzU2NCw3IEBAIFRoZSBjb25nZXN0aW9uIGNvbnRyb2wgc2hvdWxkIHByb3RlY3QgdGhlIG5ldHdv
cmsgYWdhaW5zdCBmYXN0IHNlbmRlcnMuCiBFeHBsaWNpdCBjb25nZXN0aW9uIG5vdGlmaWNhdGlv
bnMgYXJlIHR1cm5lZCBvbiBieSBkZWZhdWx0LgogCiAjIyMjIHVzcnNjdHBfc3lzY3RsX3NldF9z
Y3RwX2RlZmF1bHRfY2NfbW9kdWxlKCkKLVRoaXMgcGFyYW1ldGVyIHNldHMgdGhlIGRlZmF1bHQg
YWxnb3JpdGhtIGZvciB0aGUgY29uZ2VzdGlvbiBjb250cm9sLiBEZWZhdWx0IGlzIDAsIGkuZS4g
dGhlIG9uZSBzcGVjaWZpZWQgaW4gW1JGQyA0OTYwXShodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRt
bC9yZmM0OTYwKS4KK1RoaXMgcGFyYW1ldGVyIHNldHMgdGhlIGRlZmF1bHQgYWxnb3JpdGhtIGZv
ciB0aGUgY29uZ2VzdGlvbiBjb250cm9sLiBEZWZhdWx0IGlzIDAsIGkuZS4gdGhlIG9uZSBzcGVj
aWZpZWQgaW4gW1JGQyA0OTYwXShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNDk2MCku
CiAKICMjIyMgdXNyc2N0cF9zeXNjdGxfc2V0X3NjdHBfaW5pdGlhbF9jd25kKCkKIFNldCB0aGUg
aW5pdGlhbCBjb25nZXN0aW9uIHdpbmRvdyBpbiBNVFVzLiBUaGUgZGVmYXVsdCBpcyAzLgpAQCAt
NTc4LDcgKzU3OSw3IEBAIEhvdyBtYW55IHRoZSBzYW1lcyBpdCB0YWtlcyB0byB0cnkgc3RlcCBk
b3duIG9mIGN3bmQuIERlZmF1bHQ6IDIwCiAKIAogIyMgQ29uZmlndXJlIEFVVEggYW5kIEFERC1J
UAotQW4gaW1wb3J0YW50IGV4dGVuc2lvbiBvZiBTQ1RQIGlzIHRoZSBkeW5hbWljIGFkZHJlc3Mg
cmVjb25maWd1cmF0aW9uIChzZWUgW1JGQyA1MDYxXShodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRt
bC9yZmM1MDYxKSksIGFsc28ga25vd24gYXMgQURELUlQLCB3aGljaCBhbGxvd3MgdGhlIGNoYW5n
aW5nIG9mIGFkZHJlc3NlcyBkdXJpbmcgdGhlIGxpZmV0aW1lIG9mIGFuIGFzc29jaWF0aW9uLiBG
b3IgdGhpcyBmZWF0dXJlIHRoZSBBVVRIIGV4dGVuc2lvbiAoc2VlIFtSRkMgNDg5NV0oaHR0cDov
L3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNDg5NSkpIGlzIG5lY2Vzc2FyeS4KK0FuIGltcG9ydGFu
dCBleHRlbnNpb24gb2YgU0NUUCBpcyB0aGUgZHluYW1pYyBhZGRyZXNzIHJlY29uZmlndXJhdGlv
biAoc2VlIFtSRkMgNTA2MV0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzUwNjEpKSwg
YWxzbyBrbm93biBhcyBBREQtSVAsIHdoaWNoIGFsbG93cyB0aGUgY2hhbmdpbmcgb2YgYWRkcmVz
c2VzIGR1cmluZyB0aGUgbGlmZXRpbWUgb2YgYW4gYXNzb2NpYXRpb24uIEZvciB0aGlzIGZlYXR1
cmUgdGhlIEFVVEggZXh0ZW5zaW9uIChzZWUgW1JGQyA0ODk1XShodHRwczovL3Rvb2xzLmlldGYu
b3JnL2h0bWwvcmZjNDg5NSkpIGlzIG5lY2Vzc2FyeS4KIAogIyMjIyB1c3JzY3RwX3N5c2N0bF9z
ZXRfc2N0cF9hdXRvX2FzY29uZigpCiBJZiBTQ1RQIEF1dG8tQVNDT05GIGlzIGVuYWJsZWQsIHRo
ZSBwZWVyIGlzIGluZm9ybWVkIGF1dG9tYXRpY2FsbHkgd2hlbiBhIG5ldyBhZGRyZXNzCkBAIC01
ODcsOCArNTg4LDggQEAgaXMgYWRkZWQgb3IgcmVtb3ZlZC4gVGhpcyBmZWF0dXJlIGlzIGVuYWJs
ZWQgYnkgZGVmYXVsdC4KICMjIyMgdXNyc2N0cF9zeXNjdGxfc2V0X3NjdHBfbXVsdGlwbGVfYXNj
b25mcygpCiBCeSBkZWZhdWx0IHRoZSBzZW5kaW5nIG9mIG11bHRpcGxlIEFTQ09ORnMgaXMgZGlz
YWJsZWQuCiAKLSMjIyMgdXNyc2N0cF9zeXNjdGxfc2V0X3NjdHBfYXV0aF9kaXNhYmxlKCkKLVRo
ZSB1c2Ugb2YgQVVUSCwgd2hpY2ggaXMgbm9ybWFsbHkgdHVybmVkIG9uLCBjYW4gYmUgZGlzYWJs
ZWQgYnkgc2V0dGluZyB0aGlzIHBhcmFtZXRlciB0byAxLgorIyMjIyB1c3JzY3RwX3N5c2N0bF9z
ZXRfc2N0cF9hdXRoX2VuYWJsZSgpCitUaGUgdXNlIG9mIEFVVEgsIHdoaWNoIGlzIG5vcm1hbGx5
IHR1cm5lZCBvbiwgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhpcyBwYXJhbWV0ZXIgdG8g
MC4KIAogIyMjIyB1c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9hc2NvbmZfYXV0aF9ub2NoaygpCiBJ
dCBpcyBhbHNvIHBvc3NpYmxlIHRvIGRpc2FibGUgdGhlIHJlcXVpcmVtZW50IHRvIHVzZSBBVVRI
IGluIGNvbmp1bmN0aW9uIHdpdGggQURELUlQIGJ5IHNldHRpbmcgdGhpcyBwYXJhbWV0ZXIKQEAg
LTc1MiwyNyArNzUzLDI3IEBAIFNlZSBodHRwczovL2dpdGh1Yi5jb20vc2N0cGxhYi91c3JzY3Rw
L3RyZWUvbWFzdGVyL3Byb2dyYW1zCiAjIyMjIFNDVFAKIFIuIFN0ZXdhcnQ6PC9icj4KIGBTdHJl
YW0gQ29udHJvbCBUcmFuc21pc3Npb24gUHJvdG9jb2xgLjwvYnI+Ci1bUkZDIDQ5NjBdKGh0dHA6
Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzQ5NjApLCBTZXB0ZW1iZXIgMjAwNy4KK1tSRkMgNDk2
MF0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzQ5NjApLCBTZXB0ZW1iZXIgMjAwNy4K
IAogIyMjIyBhdXRoCiBNLiBUw7x4ZW4sIFIuIFN0ZXdhcnQsIFAuIExlaSwgYW5kIEUuIFJlc2Nv
cmxhOjwvYnI+CiBgQXV0aGVudGljYXRlZCBDaHVua3MgZm9yIHRoZSBTdHJlYW0gQ29udHJvbCBU
cmFuc21pc3Npb24gUHJvdG9jb2wgKFNDVFApYC48L2JyPgotW1JGQyA0ODk1XShodHRwOi8vdG9v
bHMuaWV0Zi5vcmcvaHRtbC9yZmM0ODk1KSwgQXVndXN0IDIwMDcuCitbUkZDIDQ4OTVdKGh0dHBz
Oi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM0ODk1KSwgQXVndXN0IDIwMDcuCiAKICMjIyMgYWRk
aXAKIFIuIFN0ZXdhcnQsIFEuIFhpZSwgTS4gVMO8eGVuLCBTLiBNYXJ1eWFtYSwgYW5kIE0uIEtv
enVrYTo8L2JyPgogYFN0cmVhbSBDb250cm9sIFRyYW5zbWlzc2lvbiBQcm90b2NvbCAoU0NUUCkg
RHluYW1pYyBBZGRyZXNzIFJlY29uZmlndXJhdGlvbmAuPC9icj4KLVtSRkMgNTA2MV0oaHR0cDov
L3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNTA2MSksIFNlcHRlbWJlciAyMDA3LgorW1JGQyA1MDYx
XShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNTA2MSksIFNlcHRlbWJlciAyMDA3Lgog
CiAjIyMjIHNvY2tldEFQSQogUi4gU3Rld2FydCwgTS4gVMO8eGVuLCBLLiBQb29uLCBhbmQgVi4g
WWFzZXZpY2g6PC9icj4KIGBTb2NrZXRzIEFQSSBFeHRlbnNpb25zIGZvciB0aGUgU3RyZWFtIENv
bnRyb2wgVHJhbnNtaXNzaW9uIFByb3RvY29sIChTQ1RQKWAuPC9icj4KLVtSRkMgNjQ1OF0oaHR0
cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1OCksIERlemVtYmVyIDIwMTEuCitbUkZDIDY0
NThdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU4KSwgRGV6ZW1iZXIgMjAxMS4K
IAogIyMjIyBzdHJlYW1SZXNldAogUi4gU3Rld2FydCwgTS4gVMO8eGVuLCBhbmQgUC4gTGVpOjwv
YnI+CiBgU3RyZWFtIENvbnRyb2wgVHJhbnNtaXNzaW9uIFByb3RvY29sIChTQ1RQKSBTdHJlYW0g
UmVjb25maWd1cmF0aW9uYC48L2JyPgotW1JGQyA2NTI1XShodHRwOi8vdG9vbHMuaWV0Zi5vcmcv
aHRtbC9yZmM2NTI1KSwgRmVicnVhcnkgMjAxMi4KK1tSRkMgNjUyNV0oaHR0cHM6Ly90b29scy5p
ZXRmLm9yZy9odG1sL3JmYzY1MjUpLCBGZWJydWFyeSAyMDEyLgogCiAjIyMjIHVkcGVuY2Fwcwog
TS4gVMO8eGVuIGFuZCBSLiBTdGV3YXJ0PC9icj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL01hbnVh
bC50ZXggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3Vz
cnNjdHAvdXNyc2N0cGxpYi9NYW51YWwudGV4CmluZGV4IDdlYzFlMWY1M2IzMS4uMzI3MTFlZTk3
NDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9NYW51YWwudGV4CisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL01hbnVh
bC50ZXgKQEAgLTIwNSw3ICsyMDUsOCBAQCB1c3JzY3RwX3NvY2tldChpbnQgZG9tYWluLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdm9pZCAqdWxwX2luZm8pLAogICAgICAgICAgICAgICAgaW50ICgq
c2VuZF9jYikoc3RydWN0IHNvY2tldCAqc29jaywgCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1aW50MzJfdCBzYl9mcmVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQzMl90IHNiX2ZyZWUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdWxw
X2luZm8pLCAKICAgICAgICAgICAgICAgIHVpbnQzMl90IHNiX3RocmVzaG9sZCwKICAgICAgICAg
ICAgICAgIHZvaWQgKnVscF9pbmZvKS4KIFxlbmR7dmVyYmF0aW19CkBAIC05NzAsNyArOTcxLDcg
QEAgU0NUUFxfREVCVUcgaGFzIHRvIGJlIHNldCBhcyBhIGNvbXBpbGUgZmxhZy4KICNpbmNsdWRl
IDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4K
LSNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmICFkZWZpbmVkKF9XSU4z
MikKICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CiAjaW5jbHVk
ZSA8bmV0aW5ldC9pbi5oPgpAQCAtMTA5OCw3ICsxMDk5LDcgQEAgbWFpbihpbnQgYXJnYywgY2hh
ciAqYXJndltdKQogICAgIH0KICAgICB3aGlsZSAoMSkgewogICAgICAgICBpZiAodXNlX2NiKSB7
Ci0jaWYgZGVmaW5lZCAoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4z
MikKICAgICAgICAgICAgIFNsZWVwKDEqMTAwMCk7CiAjZWxzZQogICAgICAgICAgICAgc2xlZXAo
MSk7CkBAIC0xMTMzLDcgKzExMzQsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAg
ICAgfQogICAgIHVzcnNjdHBfY2xvc2Uoc29jayk7CiAgICAgd2hpbGUgKHVzcnNjdHBfZmluaXNo
KCkgIT0gMCkgewotI2lmIGRlZmluZWQgKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVm
aW5lZChfV0lOMzIpCiAgICAgICAgIFNsZWVwKDEwMDApOwogI2Vsc2UKICAgICAgICAgc2xlZXAo
MSk7CkBAIC0xMTgzLDExICsxMTg0LDExIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK
ICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0cmlu
Zy5oPgotI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgIWRlZmluZWQo
X1dJTjMyKQogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2VuZGlmCiAjaW5jbHVkZSA8c3lzL3R5cGVz
Lmg+Ci0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiAhZGVmaW5lZChf
V0lOMzIpCiAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgogI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4K
ICNpbmNsdWRlIDxhcnBhL2luZXQuaD4KQEAgLTEyNDIsNyArMTI0Myw3IEBAIG1haW4oaW50IGFy
Z2MsIGNoYXIgKmFyZ3ZbXSkKICAgICB9CiAgICAgbWVtc2V0KCh2b2lkICopJmFkZHI0LCAwLCBz
aXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7CiAgICAgbWVtc2V0KCh2b2lkICopJmFkZHI2LCAw
LCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNikpOwotI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X29zX0xpbnV4KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmICFkZWZp
bmVkKF9fbGludXhfXykgJiYgIWRlZmluZWQoX1dJTjMyKQogICAgIGFkZHI0LnNpbl9sZW4gPSBz
aXplb2Yoc3RydWN0IHNvY2thZGRyX2luKTsKICAgICBhZGRyNi5zaW42X2xlbiA9IHNpemVvZihz
dHJ1Y3Qgc29ja2FkZHJfaW42KTsKICNlbmRpZgpAQCAtMTI3MSwxNCArMTI3MiwxNCBAQCBtYWlu
KGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgICAgIHVzcnNjdHBfc2h1dGRvd24oc29jaywg
U0hVVF9XUik7CiAgICAgfQogICAgIHdoaWxlICghZG9uZSkgewotI2lmIGRlZmluZWQgKF9fVXNl
cnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAgICAgICAgIFNsZWVwKDEq
MTAwMCk7CiAjZWxzZQogICAgICAgICBzbGVlcCgxKTsKICNlbmRpZgogICAgIH0KICAgICB3aGls
ZSAodXNyc2N0cF9maW5pc2goKSAhPSAwKSB7Ci0jaWYgZGVmaW5lZCAoX19Vc2Vyc3BhY2Vfb3Nf
V2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKICAgICAgICAgU2xlZXAoMTAwMCk7CiAjZWxz
ZQogICAgICAgICBzbGVlcCgxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL1JFQURNRS5tZCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3Jz
Y3RwbGliL1JFQURNRS5tZAppbmRleCAwZjBmOGIxNmM1MTkuLjZmMmFmMWY0NWFlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3Jz
Y3RwL3VzcnNjdHBsaWIvUkVBRE1FLm1kCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL1JFQURNRS5tZApAQCAtMSw5
ICsxLDEwIEBACiAjIHVzcnNjdHAKIFshW0NvdmVyaXR5IFNjYW4gQnVpbGQgU3RhdHVzXShodHRw
czovL3NjYW4uY292ZXJpdHkuY29tL3Byb2plY3RzLzEzNDMwL2JhZGdlLnN2ZyldKGh0dHBzOi8v
c2Nhbi5jb3Zlcml0eS5jb20vcHJvamVjdHMvdXNyc2N0cCkKIAorIVtHaXRIdWIgQWN0aW9ucyBC
dWlsZCBTdGF0dXMgKENNYWtlLWJhc2VkIGJ1aWxkIG9ubHkpXShodHRwczovL2dpdGh1Yi5jb20v
c2N0cGxhYi91c3JzY3RwL3dvcmtmbG93cy9CdWlsZCUyMHdpdGglMjBDTWFrZS9iYWRnZS5zdmcp
CisKIFRoaXMgaXMgYSB1c2VybGFuZCBTQ1RQIHN0YWNrIHN1cHBvcnRpbmcgRnJlZUJTRCwgTGlu
dXgsIE1hYyBPUyBYIGFuZCBXaW5kb3dzLgogCiBTZWUgW21hbnVhbF0oTWFudWFsLm1kKSBmb3Ig
bW9yZSBpbmZvcm1hdGlvbi4KIAotVGhlIHN0YXR1cyBvZiBjb250aW51b3VzIGludGVncmF0aW9u
IHRlc3RpbmcgaXMgYXZhaWxhYmxlIGZyb20gW2dyaWRdKGh0dHA6Ly8yMTIuMjAxLjEyMS4xMTA6
MTgwMTAvZ3JpZCkgYW5kIFt3YXRlcmZhbGxdKGh0dHA6Ly8yMTIuMjAxLjEyMS4xMTA6MTgwMTAv
d2F0ZXJmYWxsKS4KLUlmIHlvdSBhcmUgb25seSBpbnRlcmVzdGVkIGluIGEgc2luZ2xlIGJyYW5j
aCwganVzdCBhcHBlbmQgYD9icmFuY2g9QlJBTkNITkFNRWAgdG8gdGhlIFVSTCwgZm9yIGV4YW1w
bGUgW3dhdGVyZmFsbF0oaHR0cDovLzIxMi4yMDEuMTIxLjExMDoxODAxMC93YXRlcmZhbGw/YnJh
bmNoPW1hc3RlcikuCitUaGUgc3RhdHVzIG9mIGNvbnRpbnVvdXMgaW50ZWdyYXRpb24gdGVzdGlu
ZyBpcyBhdmFpbGFibGUgZnJvbSBvdXIgW0J1aWxkYm90XShodHRwOi8vYnVpbGRib3QubnBsYWIu
ZGU6MTgwMTAvIy9jb25zb2xlKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL2Jvb3RzdHJhcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3Jz
Y3RwbGliL2Jvb3RzdHJhcApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi9jb25maWd1cmUuYWMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9jb25maWd1cmUuYWMKaW5kZXgg
YTZiZmJkOTNkNzk2Li4xNzZkNWZhN2UzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL2NvbmZpZ3Vy
ZS5hYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi9jb25maWd1cmUuYWMKQEAgLTI5LDcgKzI5LDcgQEAgZG5sIFNV
Q0ggREFNQUdFLgogZG5sCiAKIEFDX0lOSVQoW2xpYnVzcnNjdHBdLCBbMC45LjMuMF0pCi1BTV9J
TklUX0FVVE9NQUtFCitBTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduXSkKIAogQUNfUFJPR19DQwog
QUNfUFJPR19MSUJUT09MCkBAIC00NiwxMSArNDYsOSBAQCBBUFBDRkxBR1M9IiIKIGNhc2UgJGhv
c3Rfb3MgaW4KIGRhcndpbiopCiAgIENGTEFHUz0iJENGTEFHUyAtc3RkPWM5OSAtV25vLWRlcHJl
Y2F0ZWQtZGVjbGFyYXRpb25zIC1EX19BUFBMRV9VU0VfUkZDXzIyOTIiCi0gIExJQkNGTEFHUz0i
JExJQkNGTEFHUyAtVV9fQVBQTEVfXyAtRF9fVXNlcnNwYWNlX29zX0RhcndpbiIKICAgOzsKIGRy
YWdvbmZseSopCiAgIENGTEFHUz0iJENGTEFHUyAtc3RkPWM5OSAtcHRocmVhZCIKLSAgTElCQ0ZM
QUdTPSIkTElCQ0ZMQUdTIC1VX19EcmFnb25GbHlfXyAtRF9fVXNlcnNwYWNlX29zX0RyYWdvbkZs
eSIKICAgOzsKIGZyZWVic2QqKQogICBDRkxBR1M9IiRDRkxBR1MgLXN0ZD1jOTkgLXB0aHJlYWQi
CkBAIC01OCwxOSArNTYsMTUgQEAgZnJlZWJzZCopCiAgICAgQ0ZMQUdTPSIkQ0ZMQUdTIC1Xbm8t
dW5rbm93bi13YXJuaW5nLW9wdGlvbiIKICAgICBMREZMQUdTPSIkTERGTEFHUyAtUXVudXNlZC1h
cmd1bWVudHMiCiAgIGZpCi0gIExJQkNGTEFHUz0iJExJQkNGTEFHUyAtVV9fRnJlZUJTRF9fIC1E
X19Vc2Vyc3BhY2Vfb3NfRnJlZUJTRCIKICAgOzsKIGxpbnV4KikKLSAgQ0ZMQUdTPSIkQ0ZMQUdT
IC1zdGQ9Yzk5IC1wdGhyZWFkIC1EX0dOVV9TT1VSQ0UiCi0gIExJQkNGTEFHUz0iJExJQkNGTEFH
UyAtRF9fVXNlcnNwYWNlX29zX0xpbnV4IgorICBDRkxBR1M9IiRDRkxBR1MgLXN0ZD1jOTkgLXB0
aHJlYWQgLURfR05VX1NPVVJDRSAtV25vLWFkZHJlc3Mtb2YtcGFja2VkLW1lbWJlciIKICAgOzsK
IG5ldGJzZCopCiAgIENGTEFHUz0iJENGTEFHUyAtc3RkPWM5OSAtcHRocmVhZCIKLSAgTElCQ0ZM
QUdTPSIkTElCQ0ZMQUdTIC1VX19OZXRCU0RfXyAtRF9fVXNlcnNwYWNlX29zX05ldEJTRCIKICAg
OzsKIG9wZW5ic2QqKQogICBDRkxBR1M9IiRDRkxBR1MgLXN0ZD1jOTkgLXB0aHJlYWQiCi0gIExJ
QkNGTEFHUz0iJExJQkNGTEFHUyAtVV9fT3BlbkJTRF9fIC1EX19Vc2Vyc3BhY2Vfb3NfT3BlbkJT
RCIKICAgOzsKIHNvbGFyaXMqKQogICBDRkxBR1M9IiRDRkxBR1MgLURfWFBHNF8yIgpAQCAtMTM2
LDkgKzEzMCw3IEBAIEFDX0FSR19FTkFCTEUocHJvZ3JhbXMsCiAgIEFDX0hFTFBfU1RSSU5HKCBb
LS1lbmFibGUtcHJvZ3JhbXNdLAogICAgICAgICAgICAgICAgICAgW2J1aWxkIGV4YW1wbGUgcHJv
Z3JhbXMgQDw6QGRlZmF1bHQ9eWVzQDo+QF0pLAogICAgIGVuYWJsZV9wcm9ncmFtcz0kZW5hYmxl
dmFsLGVuYWJsZV9wcm9ncmFtcz15ZXMpCi1pZiB0ZXN0IHgkZW5hYmxlX3Byb2dyYW1zID0geHll
czsgdGhlbgotICAgICAgICBBQ19DT05GSUdfRklMRVMocHJvZ3JhbXMvTWFrZWZpbGUpCi1maQor
QU1fQ09ORElUSU9OQUwoW0NPTkRfUFJPR1JBTVNdLCBbdGVzdCAiJGVuYWJsZV9wcm9ncmFtcyIg
PSB5ZXNdKQogCiBBQ19DSEVDS19UWVBFKHNpemVfdCkKIEFDX0NIRUNLX1RZUEUoc3NpemVfdCkK
QEAgLTE5Miw0ICsxODQsNSBAQCBBQ19DX0JJR0VORElBTgogQUNfU1VCU1QoW0xJQkNGTEFHU10p
CiBBQ19TVUJTVChbQVBQQ0ZMQUdTXSkKIGRubCBBQ19DT05GSUdfRklMRVMoW3VzcnNjdHAucGNd
KQotQUNfT1VUUFVUKE1ha2VmaWxlIHVzcnNjdHBsaWIvTWFrZWZpbGUpCitBQ19DT05GSUdfRklM
RVModXNyc2N0cGxpYi9NYWtlZmlsZSBwcm9ncmFtcy9NYWtlZmlsZSBNYWtlZmlsZSkKK0FDX09V
VFBVVApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvZ2VuLWRlZi5weSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL2dlbi1kZWYu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41NWMwMjg1NDQyOGIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9nZW4tZGVmLnB5CkBAIC0wLDAgKzEsMjYgQEAK
KyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyMKKyMgZ2VuLWRlZi5weSB1c3JzY3RwLmxpYgoraW1w
b3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgc3VicHJvY2VzcworZnJvbSBzaHV0aWwgaW1wb3J0
IHdoaWNoCisKK3RyeToKKyAgICBsaWJfZmlsZSA9IHN5cy5hcmd2WzFdCitleGNlcHQ6CisgICAg
cHJpbnQoJ1VzYWdlOiBnZW4tZGVmLnB5IExJQi1GSUxFJykKKyAgICBleGl0KC0xKQorCitwcmlu
dCgnRVhQT1JUUycpCisKK2lmIHdoaWNoKCdkdW1wYmluJyk6CisgICAgZHVtcGJpbl9jbWQgPSBz
dWJwcm9jZXNzLnJ1bihbJ2R1bXBiaW4nLCAnL2xpbmtlcm1lbWJlcjoxJywgbGliX2ZpbGVdLAor
ICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQorCisgICAgcGF0dGVybiA9IHJlLmNvbXBp
bGUoJ1xzKlswLTlhLWZBLUZdKyBfPyg/UDxmdW5jdGlvbm5hbWU+dXNyc2N0cF9bXlxzXSopJykK
KworICAgIGZvciBsaW5lIGluIGR1bXBiaW5fY21kLnN0ZG91dC5kZWNvZGUoJ3V0Zi04Jykuc3Bs
aXRsaW5lcygpOgorICAgICAgICBtYXRjaCA9IHBhdHRlcm4ubWF0Y2gobGluZSkKKyAgICAgICAg
aWYgbWF0Y2g6CisgICAgICAgICAgICBwcmludChtYXRjaC5ncm91cCgnZnVuY3Rpb25uYW1lJykp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9tZXNvbi5idWlsZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL21lc29uLmJ1aWxk
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjlmMDY0NzdkYWJjCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvbWVzb24uYnVpbGQKQEAgLTAsMCArMSwyMTkgQEAK
KyMgUHJvamVjdCBkZWZpbml0aW9uCitwcm9qZWN0KCd1c3JzY3RwbGliJywgJ2MnLAorICAgIHZl
cnNpb246ICcxLjAuMCcsCisgICAgZGVmYXVsdF9vcHRpb25zOiBbJ2Nfc3RkPWM5OSddLAorICAg
IG1lc29uX3ZlcnNpb246ICc+PTAuNDkuMCcpCisKKyMgU2V0IGNvbXBpbGVyIHdhcm5pbmcgZmxh
Z3MKK2NvbXBpbGVyID0gbWVzb24uZ2V0X2NvbXBpbGVyKCdjJykKK2lmIGNvbXBpbGVyLmdldF9h
cmd1bWVudF9zeW50YXgoKSA9PSAnbXN2YycKKyAgICBjb21waWxlcl9hcmdzID0gY29tcGlsZXIu
Z2V0X3N1cHBvcnRlZF9hcmd1bWVudHMoWworICAgICAgICAnL3dkNDEwMCcsICMgJ2lkZW50aWZp
ZXInIDogdW5yZWZlcmVuY2VkIGZvcm1hbCBwYXJhbWV0ZXIKKyAgICAgICAgJy93ZDQxMjcnLCAj
IGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gaXMgY29uc3RhbnQKKyAgICAgICAgJy93ZDQyMDAnLCAj
IG5vbnN0YW5kYXJkIGV4dGVuc2lvbiB1c2VkIDogemVyby1zaXplZCBhcnJheSBpbiBzdHJ1Y3Qv
dW5pb24KKyAgICAgICAgJy93ZDQyMTQnLCAjIGJpdCBmaWVsZCB0eXBlcyBvdGhlciB0aGFuIGlu
dAorICAgICAgICAnL3dkNDcwNicsICMgYXNzaWdubWVudCB3aXRoaW4gY29uZGl0aW9uYWwgZXhw
cmVzc2lvbgorICAgICAgICAnL3dkNDI0NScsICMgJ2NvbnZlcnNpb24nIDogY29udmVyc2lvbiBm
cm9tICd0eXBlMScgdG8gJ3R5cGUyJywgc2lnbmVkL3Vuc2lnbmVkIG1pc21hdGNoCisgICAgICAg
ICcvd2Q0Mzg5JywgIyAnb3BlcmF0b3InIDogc2lnbmVkL3Vuc2lnbmVkIG1pc21hdGNoCisgICAg
ICAgICcvd2Q0NzAyJywgIyB1bnJlYWNoYWJsZSBjb2RlCisgICAgICAgICcvd2Q0NzAxJywgIyBQ
b3RlbnRpYWxseSB1bmluaXRpYWxpemVkIGxvY2FsIHZhcmlhYmxlICduYW1lJyB1c2VkCisgICAg
ICAgICcvd2Q0MjQ0JywgIyAnY29udmVyc2lvbicgY29udmVyc2lvbiBmcm9tICd0eXBlMScgdG8g
J3R5cGUyJywgcG9zc2libGUgbG9zcyBvZiBkYXRhCisgICAgXSkKK2Vsc2UKKyAgICBjb21waWxl
cl9hcmdzID0gY29tcGlsZXIuZ2V0X3N1cHBvcnRlZF9hcmd1bWVudHMoWworICAgICAgICAnLXBl
ZGFudGljJywKKyAgICAgICAgJy1XYWxsJywKKyAgICAgICAgJy1XZXh0cmEnLAorICAgICAgICAn
LVdmbG9hdC1lcXVhbCcsCisgICAgICAgICctV3NoYWRvdycsCisgICAgICAgICctV3BvaW50ZXIt
YXJpdGgnLAorICAgICAgICAnLVdpbml0LXNlbGYnLAorICAgICAgICAnLVduby11bnVzZWQtZnVu
Y3Rpb24nLAorICAgICAgICAnLVduby11bnVzZWQtcGFyYW1ldGVyJywKKyAgICAgICAgJy1Xbm8t
dW5yZWFjaGFibGUtY29kZScsCisgICAgICAgICctV3N0cmljdC1wcm90b3R5cGVzJywKKyAgICBd
KQorZW5kaWYKK2FkZF9wcm9qZWN0X2FyZ3VtZW50cyhjb21waWxlcl9hcmdzLCBsYW5ndWFnZTog
J2MnKQorCisjIENvbmZpZ3VyYXRpb24KK2NvbXBpbGVfYXJncyA9IFtdCisKKyMgRGVwZW5kZW5j
eTogVGhyZWFkcwordGhyZWFkX2RlcCA9IGRlcGVuZGVuY3koJ3RocmVhZHMnLCByZXF1aXJlZDog
dHJ1ZSkKKworIyBEZXBlbmRlbmNpZXMgbGlzdAorZGVwZW5kZW5jaWVzID0gWworICAgIHRocmVh
ZF9kZXAsCitdCisKKyMgR2xvYmFsIHNldHRpbmdzCithZGRfcHJvamVjdF9hcmd1bWVudHMoWwor
ICAgICctRF9fVXNlcnNwYWNlX18nLAorICAgICctRFNDVFBfU0lNUExFX0FMTE9DQVRPUicsCisg
ICAgJy1EU0NUUF9QUk9DRVNTX0xFVkVMX0xPQ0tTJywKK10sIGxhbmd1YWdlOiAnYycpCisKKyMg
T1Mtc3BlY2lmaWMgc2V0dGluZ3MKK3N5c3RlbSA9IGhvc3RfbWFjaGluZS5zeXN0ZW0oKQoraWYg
c3lzdGVtIGluIFsnbGludXgnLCAnYW5kcm9pZCddCisgICAgYWRkX3Byb2plY3RfYXJndW1lbnRz
KFsKKyAgICAgICAgJy1EX0dOVV9TT1VSQ0UnLAorICAgIF0sIGxhbmd1YWdlOiAnYycpCitlbGlm
IHN5c3RlbSA9PSAnZnJlZWJzZCcKKyAgICBhZGRfcHJvamVjdF9hcmd1bWVudHMoY29tcGlsZXIu
Z2V0X3N1cHBvcnRlZF9hcmd1bWVudHMoWworICAgICAgICAgICAgJy1Xbm8tYWRkcmVzcy1vZi1w
YWNrZWQtbWVtYmVyJywKKyAgICAgICAgXSksIGxhbmd1YWdlOiAnYycpCitlbGlmIHN5c3RlbSBp
biBbJ2RhcndpbicsICdpb3MnXQorICAgIGFkZF9wcm9qZWN0X2FyZ3VtZW50cyhbCisgICAgICAg
ICAgICAnLURfX0FQUExFX1VTRV9SRkNfMjI5MicsCisgICAgICAgIF0gKyBjb21waWxlci5nZXRf
c3VwcG9ydGVkX2FyZ3VtZW50cyhbCisgICAgICAgICAgICAnLVduby1hZGRyZXNzLW9mLXBhY2tl
ZC1tZW1iZXInLAorICAgICAgICAgICAgJy1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMnLAor
ICAgICAgICBdKSwgbGFuZ3VhZ2U6ICdjJykKK2VsaWYgc3lzdGVtID09ICd3aW5kb3dzJworICAg
IGRlcGVuZGVuY2llcyArPSBjb21waWxlci5maW5kX2xpYnJhcnkoJ3dzMl8zMicsIHJlcXVpcmVk
OiB0cnVlKQorICAgIGRlcGVuZGVuY2llcyArPSBjb21waWxlci5maW5kX2xpYnJhcnkoJ2lwaGxw
YXBpJywgcmVxdWlyZWQ6IHRydWUpCisgICAgaWYgY29tcGlsZXIuZ2V0X2lkKCkgPT0gJ2djYycK
KyAgICAgICAgYWRkX3Byb2plY3RfYXJndW1lbnRzKGNvbXBpbGVyLmdldF9zdXBwb3J0ZWRfYXJn
dW1lbnRzKFsKKyAgICAgICAgICAgICctV25vLWZvcm1hdCcsCisgICAgICAgICAgICAnLURfV0lO
MzJfV0lOTlQ9MHg2MDEnLCAgIyBFbmFibGVzIGluZXRfbnRvcCBhbmQgZnJpZW5kcworICAgICAg
ICBdKSwgbGFuZ3VhZ2U6ICdjJykKKyAgICBlbmRpZgorZWxzZQorICAgIGVycm9yKCdVbmtub3du
IHN5c3RlbTogQDBAJy5mb3JtYXQoc3lzdGVtKSkKK2VuZGlmCisKKyMgRmVhdHVyZTogc3lzL3F1
ZXVlCitpZiBjb21waWxlci5oYXNfaGVhZGVyKCdzeXMvcXVldWUuaCcpCisgICAgYWRkX3Byb2pl
Y3RfYXJndW1lbnRzKCctREhBVkVfU1lTX1FVRVVFX0gnLCBsYW5ndWFnZTogJ2MnKQorZW5kaWYK
KworIyBGZWF0dXJlOiBzeXMvc29ja2V0LCBsaW51eC9pZmFkZHIsIGxpbnV4L3J0bmV0bGluawor
aWYgY29tcGlsZXIuaGFzX2hlYWRlcignc3lzL3NvY2tldC5oJykKKyAgICBpZiBjb21waWxlci5o
YXNfaGVhZGVyKCdsaW51eC9pZl9hZGRyLmgnKQorICAgICAgICBhZGRfcHJvamVjdF9hcmd1bWVu
dHMoJy1ESEFWRV9MSU5VWF9JRl9BRERSX0gnLCBsYW5ndWFnZTogJ2MnKQorICAgIGVuZGlmCisK
KyAgICBpZiBjb21waWxlci5oYXNfaGVhZGVyKCdsaW51eC9ydG5ldGxpbmsuaCcpCisgICAgICAg
IGFkZF9wcm9qZWN0X2FyZ3VtZW50cygnLURIQVZFX0xJTlVYX1JUTkVUTElOS19IJywgbGFuZ3Vh
Z2U6ICdjJykKKyAgICBlbmRpZgorZW5kaWYKKworIyBGZWF0dXJlOiBJQ01QCitoYXZlX3N5c190
eXBlcyA9IGNvbXBpbGVyLmhhc19oZWFkZXIoJ3N5cy90eXBlcy5oJykKK2hhdmVfbmV0aW5ldF9p
biA9IGNvbXBpbGVyLmhhc19oZWFkZXIoJ25ldGluZXQvaW4uaCcpCitoYXZlX25ldGluZXRfaXAg
PSBjb21waWxlci5oYXNfaGVhZGVyKCduZXRpbmV0L2lwLmgnKQoraGF2ZV9uZXRpbmV0X2lwX2lj
bXAgPSBjb21waWxlci5oYXNfaGVhZGVyKCduZXRpbmV0L2lwX2ljbXAuaCcpCitpZiBoYXZlX3N5
c190eXBlcyBhbmQgaGF2ZV9uZXRpbmV0X2luIGFuZCBoYXZlX25ldGluZXRfaXAgYW5kIGhhdmVf
bmV0aW5ldF9pcF9pY21wCisgICAgYWRkX3Byb2plY3RfYXJndW1lbnRzKCctREhBVkVfTkVUSU5F
VF9JUF9JQ01QX0gnLCBsYW5ndWFnZTogJ2MnKQorZW5kaWYKKworIyBGZWF0dXJlOiBzdGRhdG9t
aWMKK2lmIGNvbXBpbGVyLmhhc19oZWFkZXIoJ3N0ZGF0b21pYy5oJykKKyAgICBhZGRfcHJvamVj
dF9hcmd1bWVudHMoJy1ESEFWRV9TVERBVE9NSUNfSCcsIGxhbmd1YWdlOiAnYycpCitlbmRpZgor
CisjIEZlYXR1cmU6IHNvY2thZGRyLnNhX2xlbgorcHJlZml4ID0gJycnCisjaW5jbHVkZSA8c3lz
L3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorJycnCitoYXZlX3NhX2xlbiA9IGNv
bXBpbGVyLmhhc19tZW1iZXIoJ3N0cnVjdCBzb2NrYWRkcicsICdzYV9sZW4nLCBwcmVmaXg6IHBy
ZWZpeCkKK2lmIGhhdmVfc2FfbGVuCisgICAgYWRkX3Byb2plY3RfYXJndW1lbnRzKCctREhBVkVf
U0FfTEVOJywgbGFuZ3VhZ2U6ICdjJykKK2VuZGlmCisKKyMgRmVhdHVyZTogc29ja2FkZHJfaW4u
c2luX2xlbiAvIHNvY2thZGRyX2luNi5zaW42X2xlbiAvIHNvY2thZGRyX2Nvbm4uc2Nvbm5fbGVu
CitwcmVmaXggPSAnJycKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxuZXRpbmV0
L2luLmg+CisnJycKK2hhdmVfc2luX2xlbiA9IGNvbXBpbGVyLmhhc19tZW1iZXIoJ3N0cnVjdCBz
b2NrYWRkcl9pbicsICdzaW5fbGVuJywgcHJlZml4OiBwcmVmaXgpCitpZiBoYXZlX3Npbl9sZW4K
KyAgICBhZGRfcHJvamVjdF9hcmd1bWVudHMoJy1ESEFWRV9TSU5fTEVOJywgbGFuZ3VhZ2U6ICdj
JykKK2VuZGlmCitoYXZlX3NpbjZfbGVuID0gY29tcGlsZXIuaGFzX21lbWJlcignc3RydWN0IHNv
Y2thZGRyX2luNicsICdzaW42X2xlbicsIHByZWZpeDogcHJlZml4KQoraWYgaGF2ZV9zaW42X2xl
bgorICAgIGFkZF9wcm9qZWN0X2FyZ3VtZW50cygnLURIQVZFX1NJTjZfTEVOJywgbGFuZ3VhZ2U6
ICdjJykKK2VuZGlmCitoYXZlX3Njb25uX2xlbiA9IGNvbXBpbGVyLmhhc19tZW1iZXIoJ3N0cnVj
dCBzb2NrYWRkcl9jb25uJywgJ3Njb25uX2xlbicsIHByZWZpeDogJyNpbmNsdWRlICJ1c3JzY3Rw
LmgiJywgaW5jbHVkZV9kaXJlY3RvcmllczogaW5jbHVkZV9kaXJlY3RvcmllcygndXNyc2N0cGxp
YicpKQoraWYgaGF2ZV9zY29ubl9sZW4KKyAgICBhZGRfcHJvamVjdF9hcmd1bWVudHMoJy1ESEFW
RV9TQ09OTl9MRU4nLCBsYW5ndWFnZTogJ2MnKQorZW5kaWYKKworIyBPcHRpb25zCitpZiBnZXRf
b3B0aW9uKCdzY3RwX2ludmFyaWFudHMnKQorICAgIGFkZF9wcm9qZWN0X2FyZ3VtZW50cygnLURJ
TlZBUklBTlRTJywgbGFuZ3VhZ2U6ICdjJykKK2VuZGlmCitpZiBnZXRfb3B0aW9uKCdzY3RwX2Rl
YnVnJykKKyAgICBhZGRfcHJvamVjdF9hcmd1bWVudHMoJy1EU0NUUF9ERUJVRycsIGxhbmd1YWdl
OiAnYycpCisgICAgY29tcGlsZV9hcmdzICs9ICctRFNDVFBfREVCVUcnCitlbmRpZgoraWYgZ2V0
X29wdGlvbignc2N0cF9pbmV0JykKKyAgICBhZGRfcHJvamVjdF9hcmd1bWVudHMoJy1ESU5FVCcs
IGxhbmd1YWdlOiAnYycpCitlbmRpZgoraWYgZ2V0X29wdGlvbignc2N0cF9pbmV0NicpCisgICAg
YWRkX3Byb2plY3RfYXJndW1lbnRzKCctRElORVQ2JywgbGFuZ3VhZ2U6ICdjJykKK2VuZGlmCisK
KyMgTGlicmFyeQorc3ViZGlyKCd1c3JzY3RwbGliJykKKworIyBCdWlsZCBsaWJyYXJ5CitpZiBj
b21waWxlci5nZXRfaWQoKSA9PSAnbXN2YycgYW5kIGdldF9vcHRpb24oJ2RlZmF1bHRfbGlicmFy
eScpID09ICdzaGFyZWQnCisgICAgIyBOZWVkZWQgYnkgdXNyc2N0cF9kZWYKKyAgICBmaW5kX3By
b2dyYW0oJ2R1bXBiaW4nKQorCisgICAgdXNyc2N0cF9zdGF0aWMgPSBzdGF0aWNfbGlicmFyeSgn
dXNyc2N0cC1zdGF0aWMnLCBzb3VyY2VzLAorICAgICAgICBkZXBlbmRlbmNpZXM6IGRlcGVuZGVu
Y2llcywKKyAgICAgICAgaW5jbHVkZV9kaXJlY3RvcmllczogaW5jbHVkZV9kaXJzKQorCisgICB1
c3JzY3RwX2RlZiA9IGN1c3RvbV90YXJnZXQoJ3VzcnNjdHAuZGVmJywKKyAgICAgICAgY29tbWFu
ZDogW2ZpbmRfcHJvZ3JhbSgnZ2VuLWRlZi5weScpLCAnQElOUFVUQCddLAorICAgICAgICBpbnB1
dDogdXNyc2N0cF9zdGF0aWMsCisgICAgICAgIG91dHB1dDogJ3VzcnNjdHAuZGVmJywKKyAgICAg
ICAgY2FwdHVyZTogdHJ1ZSkKKworICAgIHVzcnNjdHAgPSBzaGFyZWRfbGlicmFyeSgndXNyc2N0
cCcsCisgICAgICAgIGxpbmtfd2hvbGU6IHVzcnNjdHBfc3RhdGljLAorICAgICAgICBkZXBlbmRl
bmNpZXM6IGRlcGVuZGVuY2llcywKKyAgICAgICAgdnNfbW9kdWxlX2RlZnM6IHVzcnNjdHBfZGVm
LAorICAgICAgICBpbnN0YWxsOiB0cnVlLAorICAgICAgICB2ZXJzaW9uOiBtZXNvbi5wcm9qZWN0
X3ZlcnNpb24oKSkKK2Vsc2UKKyAgICB1c3JzY3RwID0gbGlicmFyeSgndXNyc2N0cCcsIHNvdXJj
ZXMsCisgICAgICAgIGRlcGVuZGVuY2llczogZGVwZW5kZW5jaWVzLAorICAgICAgICBpbmNsdWRl
X2RpcmVjdG9yaWVzOiBpbmNsdWRlX2RpcnMsCisgICAgICAgIGluc3RhbGw6IHRydWUsCisgICAg
ICAgIHZlcnNpb246IG1lc29uLnByb2plY3RfdmVyc2lvbigpKQorZW5kaWYKKworIyBEZWNsYXJl
IGRlcGVuZGVuY3kKK3VzcnNjdHBfZGVwID0gZGVjbGFyZV9kZXBlbmRlbmN5KAorICAgIGNvbXBp
bGVfYXJnczogY29tcGlsZV9hcmdzLAorICAgIGluY2x1ZGVfZGlyZWN0b3JpZXM6IGluY2x1ZGVf
ZGlycywKKyAgICBsaW5rX3dpdGg6IHVzcnNjdHApCisKKyMgR2VuZXJhdGUgcGtnLWNvbmZpZyBm
aWxlCitwa2cgPSBpbXBvcnQoJ3BrZ2NvbmZpZycpCitwa2cuZ2VuZXJhdGUodXNyc2N0cCwKKyAg
ICBuYW1lOiAndXNyc2N0cCcsCisgICAgZGVzY3JpcHRpb246ICdBIHBvcnRhYmxlIFNDVFAgdXNl
cmxhbmQgc3RhY2snLAorICAgIHVybDogJ2h0dHBzOi8vZ2l0aHViLmNvbS9zY3RwbGFiL3VzcnNj
dHAnLAorICAgIGV4dHJhX2NmbGFnczogY29tcGlsZV9hcmdzKQorCisjIFByb2dyYW1zIChvcHRp
b25hbCkKK2lmIGdldF9vcHRpb24oJ3NjdHBfYnVpbGRfcHJvZ3JhbXMnKQorICAgIHN1YmRpcign
cHJvZ3JhbXMnKQorCisgICAgIyBCdWlsZCBleGVjdXRhYmxlcworICAgIGZvcmVhY2ggbmFtZSwg
c291cmNlcyA6IHByb2dyYW1zCisgICAgICAgIGV4ZWN1dGFibGUoCisgICAgICAgICAgICBuYW1l
LAorICAgICAgICAgICAgcHJvZ3JhbXNfaGVscGVyX3NvdXJjZXMgKyBzb3VyY2VzLAorICAgICAg
ICAgICAgZGVwZW5kZW5jaWVzOiBkZXBlbmRlbmNpZXMsCisgICAgICAgICAgICBsaW5rX3dpdGg6
IHVzcnNjdHAsCisgICAgICAgICAgICBpbmNsdWRlX2RpcmVjdG9yaWVzOiBpbmNsdWRlX2RpcnMp
CisgICAgZW5kZm9yZWFjaAorZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL21lc29uX29wdGlv
bnMudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91
c3JzY3RwL3VzcnNjdHBsaWIvbWVzb25fb3B0aW9ucy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi41NmQ5NTA2MTIxNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0
cGxpYi9tZXNvbl9vcHRpb25zLnR4dApAQCAtMCwwICsxLDEwIEBACitvcHRpb24oJ3NjdHBfaW52
YXJpYW50cycsIHR5cGU6ICdib29sZWFuJywgdmFsdWU6IGZhbHNlLAorICAgIGRlc2NyaXB0aW9u
OiAnQWRkIHJ1bnRpbWUgY2hlY2tzJykKK29wdGlvbignc2N0cF9kZWJ1ZycsIHR5cGU6ICdib29s
ZWFuJywgdmFsdWU6IGZhbHNlLAorICAgIGRlc2NyaXB0aW9uOiAnUHJvdmlkZSBkZWJ1ZyBpbmZv
cm1hdGlvbicpCitvcHRpb24oJ3NjdHBfaW5ldCcsIHR5cGU6ICdib29sZWFuJywgdmFsdWU6IHRy
dWUsCisgICAgZGVzY3JpcHRpb246ICdTdXBwb3J0IElQdjQnKQorb3B0aW9uKCdzY3RwX2luZXQ2
JywgdHlwZTogJ2Jvb2xlYW4nLCB2YWx1ZTogdHJ1ZSwKKyAgICBkZXNjcmlwdGlvbjogJ1N1cHBv
cnQgSVB2NicpCitvcHRpb24oJ3NjdHBfYnVpbGRfcHJvZ3JhbXMnLCB0eXBlOiAnYm9vbGVhbics
IHZhbHVlOiB0cnVlLAorICAgIGRlc2NyaXB0aW9uOiAnQnVpbGQgZXhhbXBsZSBwcm9ncmFtcycp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L3Byb2dyYW1zL0NNYWtlTGlzdHMudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh
YjRjN2ZkYTM5YjcuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9DTWFrZUxp
c3RzLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTUgT2xlZyBBbGV4ZWVua292Ci0jIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEZl
bGl4IFdlaW5yYW5rCi0jCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jIDMuIE5laXRoZXIgdGhl
IG5hbWUgb2YgdGhlIHByb2plY3Qgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCi0j
ICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20gdGhpcyBzb2Z0d2FyZQotIyAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUFJPSkVDVCBB
TkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFCi0jIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgUFJPSkVD
VCBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0jIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTCi0jIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotIyBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZCi0jIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSMgU1VDSCBEQU1BR0UuCi0jCi0KLQotIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBJTkNMVURFIE1P
RFVMRVMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
LQotaW5jbHVkZShDaGVja0luY2x1ZGVGaWxlKQotCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ0hFQ0sgSU5DTFVERVMKLSMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotaW5jbHVkZV9kaXJlY3Rv
cmllcygke0NNQUtFX1NPVVJDRV9ESVJ9L3VzcnNjdHBsaWIpCi0KLQotIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBPUyBERVBFTkRFTlQKLSMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotaWYgKCR7Q01B
S0VfU1lTVEVNX05BTUV9IE1BVENIRVMgIkxpbnV4IikKLQlhZGRfZGVmaW5pdGlvbnMoLURfR05V
X1NPVVJDRSkKLWVuZGlmICgpCi0KLWlmICgke0NNQUtFX1NZU1RFTV9OQU1FfSBNQVRDSEVTICJE
YXJ3aW4iKQotCWFkZF9kZWZpbml0aW9ucygtRF9fQVBQTEVfVVNFX1JGQ18yMjkyKQotZW5kaWYg
KCkKLQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
Ci0jIE1JU0MKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKLQotZmluZF9wYWNrYWdlKFRocmVhZHMpCi0KLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBQUk9HUkFNUwotIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi1zZXQoY2hlY2tfcHJvZ3JhbXMKLQlj
bGllbnQuYwotCWRheXRpbWVfc2VydmVyLmMKLQlkaXNjYXJkX3NlcnZlci5jCi0JZWNob19zZXJ2
ZXIuYwotCWVrcl9jbGllbnQuYwotCWVrcl9sb29wX29mZmxvYWQuYwotCWVrcl9sb29wLmMKLQll
a3JfcGVlci5jCi0JZWtyX3NlcnZlci5jCi0JaHR0cF9jbGllbnQuYwotCXJ0Y3dlYi5jCi0JdGVz
dF9saWJtZ210LmMKLQl0ZXN0X3RpbWVyLmMKLQl0c2N0cC5jCi0pCi0KLWZvcmVhY2ggKHNvdXJj
ZV9maWxlICR7Y2hlY2tfcHJvZ3JhbXN9KQotCWdldF9maWxlbmFtZV9jb21wb25lbnQoc291cmNl
X2ZpbGVfd2UgJHtzb3VyY2VfZmlsZX0gTkFNRV9XRSkKLQlhZGRfZXhlY3V0YWJsZSgKLQkJJHtz
b3VyY2VfZmlsZV93ZX0KLQkJJHtzb3VyY2VfZmlsZX0KLQkpCi0KLQl0YXJnZXRfbGlua19saWJy
YXJpZXMoJHtzb3VyY2VfZmlsZV93ZX0KLQkJJHtwcm9ncmFtc19saW5rX2xpYnJhcnl9Ci0JCSR7
Q01BS0VfVEhSRUFEX0xJQlNfSU5JVH0KLQkpCi1lbmRmb3JlYWNoICgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNy
c2N0cGxpYi9wcm9ncmFtcy9NYWtlZmlsZS5hbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL01ha2VmaWxl
LmFtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWMyNDhmYmEzZTkuLjAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9NYWtlZmlsZS5hbQorKysgL2Rldi9udWxsCkBA
IC0xLDYyICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChDKSAyMDExLTIwMTIgTWljaGFlbCBUdWV4
ZW4KLSMKLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotIyBhcmUgbWV0OgotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0
aGUgcHJvamVjdCBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKLSMgICAgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNv
ZnR3YXJlCi0jICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
IwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBQUk9KRUNUIEFORCBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UK
LSMgQVJFIERJU0NMQUlNRUQuCUlOIE5PIEVWRU5UIFNIQUxMIFRIRSBQUk9KRUNUIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUKLSMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMK
LSMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pCi0jIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0jIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkK
LSMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRgotIyBTVUNIIERBTUFHRS4KLSMKLQotQU1fQ1BQRkxBR1MgPSAtSSQo
c3JjZGlyKS8uLi91c3JzY3RwbGliCi1FWFRSQV9ESVNUID0gTWFrZWZpbGUubm1ha2UgdHNjdHAu
YyBkYXl0aW1lX3NlcnZlci5jIGRpc2NhcmRfc2VydmVyLmMgZWNob19zZXJ2ZXIuYyBjbGllbnQu
YyBydGN3ZWIuYyBla3JfY2xpZW50LmMgZWtyX3NlcnZlci5jIGVrcl9sb29wLmMgZWtyX2xvb3Bf
b2ZmbG9hZC5jIHRlc3RfbGlibWdtdC5jIGh0dHBfY2xpZW50LmMKLQotbm9pbnN0X1BST0dSQU1T
ID0gdHNjdHAgZGF5dGltZV9zZXJ2ZXIgZGlzY2FyZF9zZXJ2ZXIgZWNob19zZXJ2ZXIgY2xpZW50
IHJ0Y3dlYiBla3JfY2xpZW50IGVrcl9zZXJ2ZXIgZWtyX3BlZXIgZWtyX2xvb3AgZWtyX2xvb3Bf
b2ZmbG9hZCB0ZXN0X2xpYm1nbXQgdGVzdF90aW1lciBodHRwX2NsaWVudAotdGVzdF9saWJtZ210
X1NPVVJDRVMgPSB0ZXN0X2xpYm1nbXQuYwotdGVzdF9saWJtZ210X0xEQUREID0gLi4vdXNyc2N0
cGxpYi9saWJ1c3JzY3RwLmxhCi10ZXN0X3RpbWVyX1NPVVJDRVMgPSB0ZXN0X3RpbWVyLmMKLXRl
c3RfdGltZXJfTERBREQgPSAuLi91c3JzY3RwbGliL2xpYnVzcnNjdHAubGEKLXRzY3RwX1NPVVJD
RVMgPSB0c2N0cC5jCi10c2N0cF9MREFERCA9IC4uL3VzcnNjdHBsaWIvbGlidXNyc2N0cC5sYQot
ZGF5dGltZV9zZXJ2ZXJfU09VUkNFUyA9IGRheXRpbWVfc2VydmVyLmMKLWRheXRpbWVfc2VydmVy
X0xEQUREID0gLi4vdXNyc2N0cGxpYi9saWJ1c3JzY3RwLmxhCi1kaXNjYXJkX3NlcnZlcl9TT1VS
Q0VTID0gZGlzY2FyZF9zZXJ2ZXIuYwotZGlzY2FyZF9zZXJ2ZXJfTERBREQgPSAuLi91c3JzY3Rw
bGliL2xpYnVzcnNjdHAubGEKLWVjaG9fc2VydmVyX1NPVVJDRVMgPSBlY2hvX3NlcnZlci5jCi1l
Y2hvX3NlcnZlcl9MREFERCA9IC4uL3VzcnNjdHBsaWIvbGlidXNyc2N0cC5sYQotY2xpZW50X1NP
VVJDRVMgPSBjbGllbnQuYwotY2xpZW50X0xEQUREID0gLi4vdXNyc2N0cGxpYi9saWJ1c3JzY3Rw
LmxhCi1ydGN3ZWJfU09VUkNFUyA9IHJ0Y3dlYi5jCi1ydGN3ZWJfTERBREQgPSAuLi91c3JzY3Rw
bGliL2xpYnVzcnNjdHAubGEKLWVrcl9zZXJ2ZXJfU09VUkNFUyA9IGVrcl9zZXJ2ZXIuYwotZWty
X3NlcnZlcl9MREFERCA9IC4uL3VzcnNjdHBsaWIvbGlidXNyc2N0cC5sYQotZWtyX2NsaWVudF9T
T1VSQ0VTID0gZWtyX2NsaWVudC5jCi1la3JfY2xpZW50X0xEQUREID0gLi4vdXNyc2N0cGxpYi9s
aWJ1c3JzY3RwLmxhCi1la3JfcGVlcl9TT1VSQ0VTID0gZWtyX3BlZXIuYwotZWtyX3BlZXJfTERB
REQgPSAuLi91c3JzY3RwbGliL2xpYnVzcnNjdHAubGEKLWVrcl9sb29wX1NPVVJDRVMgPSBla3Jf
bG9vcC5jCi1la3JfbG9vcF9MREFERCA9IC4uL3VzcnNjdHBsaWIvbGlidXNyc2N0cC5sYQotZWty
X2xvb3Bfb2ZmbG9hZF9TT1VSQ0VTID0gZWtyX2xvb3Bfb2ZmbG9hZC5jCi1la3JfbG9vcF9vZmZs
b2FkX0xEQUREID0gLi4vdXNyc2N0cGxpYi9saWJ1c3JzY3RwLmxhCi1odHRwX2NsaWVudF9TT1VS
Q0VTID0gaHR0cF9jbGllbnQuYwotaHR0cF9jbGllbnRfTERBREQgPSAuLi91c3JzY3RwbGliL2xp
YnVzcnNjdHAubGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL01ha2VmaWxlLm5tYWtl
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvcHJvZ3JhbXMvTWFrZWZpbGUubm1ha2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAxYzQxMWNlZjY4OS4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dy
YW1zL01ha2VmaWxlLm5tYWtlCisrKyAvZGV2L251bGwKQEAgLTEsMTI2ICswLDAgQEAKLSMNCi0j
IENvcHlyaWdodCAoQykgMjAxMS0yMDEyIE1pY2hhZWwgVHVleGVuDQotIw0KLSMgQWxsIHJpZ2h0
cyByZXNlcnZlZC4NCi0jDQotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCi0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KLSMgYXJlIG1ldDoN
Ci0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0DQotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KLSMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQ0KLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4NCi0jIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIHByb2pl
Y3Qgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzDQotIyAgICBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUN
Ci0jICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KLSMNCi0j
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIFBST0pFQ1QgQU5EIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EDQotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUNCi0jIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQot
IyBBUkUgRElTQ0xBSU1FRC4JSU4gTk8gRVZFTlQgU0hBTEwgVEhFIFBST0pFQ1QgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRQ0KLSMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwNCi0jIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
DQotIyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikNCi0jIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUDQotIyBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZDQotIyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GDQotIyBTVUNIIERBTUFHRS4NCi0jDQotDQotQ0ZMQUdTPS9X
MyAvV1ggL0kuLlx1c3JzY3RwbGliDQotDQotQ1ZBUlNETEw9LURJTkVUIC1ESU5FVDYNCi0NCi1M
SU5LRkxBR1M9L0xJQlBBVEg6Li5cdXNyc2N0cGxpYiB1c3JzY3RwLmxpYg0KLQ0KLS5jLm9iajo6
DQotCSQoQ0MpICQoQ1ZBUlNETEwpICQoQ0ZMQUdTKSAtRmQuXCAtYyAkPA0KLQ0KLWFsbDogXA0K
LQljbGllbnQgXA0KLQlkYXl0aW1lX3NlcnZlciBcDQotCWRpc2NhcmRfc2VydmVyIFwNCi0JZWNo
b19zZXJ2ZXIgXA0KLQl0c2N0cCBcDQotCXJ0Y3dlYiBcDQotCWVrcl9jbGllbnQgXA0KLQlla3Jf
c2VydmVyIFwNCi0JZWtyX3BlZXIgXA0KLQlla3JfbG9vcCBcDQotCXRlc3RfbGlibWdtdCBcDQot
CWh0dHBfY2xpZW50DQotDQotY2xpZW50Og0KLQkkKENDKSAkKENGTEFHUykgJChDVkFSU0RMTCkg
LWMgY2xpZW50LmMNCi0JbGluayAtb3V0OmNsaWVudC5leGUgY2xpZW50Lm9iaiAkKExJTktGTEFH
UykNCi0NCi1kYXl0aW1lX3NlcnZlcjoNCi0JJChDQykgJChDRkxBR1MpICQoQ1ZBUlNETEwpIC1j
IGRheXRpbWVfc2VydmVyLmMNCi0JbGluayAtb3V0OmRheXRpbWVfc2VydmVyLmV4ZSBkYXl0aW1l
X3NlcnZlci5vYmogJChMSU5LRkxBR1MpDQotDQotZGlzY2FyZF9zZXJ2ZXI6DQotCSQoQ0MpICQo
Q0ZMQUdTKSAkKENWQVJTRExMKSAtYyBkaXNjYXJkX3NlcnZlci5jDQotCWxpbmsgLW91dDpkaXNj
YXJkX3NlcnZlci5leGUgZGlzY2FyZF9zZXJ2ZXIub2JqICQoTElOS0ZMQUdTKQ0KLQ0KLWVjaG9f
c2VydmVyOg0KLQkkKENDKSAkKENGTEFHUykgJChDVkFSU0RMTCkgLWMgZWNob19zZXJ2ZXIuYw0K
LQlsaW5rIC1vdXQ6ZWNob19zZXJ2ZXIuZXhlIGVjaG9fc2VydmVyLm9iaiAkKExJTktGTEFHUykN
Ci0NCi10c2N0cDoNCi0JJChDQykgJChDRkxBR1MpICQoQ1ZBUlNETEwpIC1jIHRzY3RwLmMNCi0J
bGluayAtb3V0OnRzY3RwLmV4ZSB0c2N0cC5vYmogJChMSU5LRkxBR1MpDQotDQotcnRjd2ViOg0K
LQkkKENDKSAkKENGTEFHUykgJChDVkFSU0RMTCkgLWMgcnRjd2ViLmMNCi0JbGluayAtb3V0OnJ0
Y3dlYi5leGUgcnRjd2ViLm9iaiAkKExJTktGTEFHUykNCi0NCi1la3JfY2xpZW50Og0KLQkkKEND
KSAkKENGTEFHUykgJChDVkFSU0RMTCkgLWMgZWtyX2NsaWVudC5jDQotCWxpbmsgLW91dDpla3Jf
Y2xpZW50LmV4ZSBla3JfY2xpZW50Lm9iaiAkKExJTktGTEFHUykNCi0NCi1la3Jfc2VydmVyOg0K
LQkkKENDKSAkKENGTEFHUykgJChDVkFSU0RMTCkgLWMgZWtyX3NlcnZlci5jDQotCWxpbmsgLW91
dDpla3Jfc2VydmVyLmV4ZSBla3Jfc2VydmVyLm9iaiAkKExJTktGTEFHUykNCi0NCi1la3JfcGVl
cjoNCi0JJChDQykgJChDRkxBR1MpICQoQ1ZBUlNETEwpIC1jIGVrcl9wZWVyLmMNCi0JbGluayAt
b3V0OmVrcl9wZWVyLmV4ZSBla3JfcGVlci5vYmogJChMSU5LRkxBR1MpDQotDQotZWtyX2xvb3A6
DQotCSQoQ0MpICQoQ0ZMQUdTKSAkKENWQVJTRExMKSAtYyBla3JfbG9vcC5jDQotCWxpbmsgLW91
dDpla3JfbG9vcC5leGUgZWtyX2xvb3Aub2JqICQoTElOS0ZMQUdTKQ0KLQ0KLXRlc3RfbGlibWdt
dDoNCi0JJChDQykgJChDRkxBR1MpICQoQ1ZBUlNETEwpIC1jIHRlc3RfbGlibWdtdC5jDQotCWxp
bmsgLW91dDp0ZXN0X2xpYm1nbXQuZXhlIHRlc3RfbGlibWdtdC5vYmogJChMSU5LRkxBR1MpDQot
DQotaHR0cF9jbGllbnQ6DQotCSQoQ0MpICQoQ0ZMQUdTKSAkKENWQVJTRExMKSAtYyBodHRwX2Ns
aWVudC5jDQotCWxpbmsgLW91dDpodHRwX2NsaWVudC5leGUgaHR0cF9jbGllbnQub2JqICQoTElO
S0ZMQUdTKQ0KLQ0KLWNsZWFuOg0KLQlkZWwgL0YgY2xpZW50LmV4ZQ0KLQlkZWwgL0YgY2xpZW50
Lm9iag0KLQlkZWwgL0YgZGF5dGltZV9zZXJ2ZXIuZXhlDQotCWRlbCAvRiBkYXl0aW1lX3NlcnZl
ci5vYmoNCi0JZGVsIC9GIGRpc2NhcmRfc2VydmVyLmV4ZQ0KLQlkZWwgL0YgZGlzY2FyZF9zZXJ2
ZXIub2JqDQotCWRlbCAvRiBlY2hvX3NlcnZlci5leGUNCi0JZGVsIC9GIGVjaG9fc2VydmVyLm9i
ag0KLQlkZWwgL0YgdHNjdHAuZXhlDQotCWRlbCAvRiB0c2N0cC5vYmoNCi0JZGVsIC9GIHJ0Y3dl
Yi5leGUNCi0JZGVsIC9GIHJ0Y3dlYi5vYmoNCi0JZGVsIC9GIGVrcl9jbGllbnQuZXhlDQotCWRl
bCAvRiBla3JfY2xpZW50Lm9iag0KLQlkZWwgL0YgZWtyX3NlcnZlci5leGUNCi0JZGVsIC9GIGVr
cl9zZXJ2ZXIub2JqDQotCWRlbCAvRiBla3JfcGVlci5leGUNCi0JZGVsIC9GIGVrcl9wZWVyLm9i
ag0KLQlkZWwgL0YgZWtyX2xvb3AuZXhlDQotCWRlbCAvRiBla3JfbG9vcC5vYmoNCi0JZGVsIC9G
IHRlc3RfbGlibWdtdC5leGUNCi0JZGVsIC9GIHRlc3RfbGlibWdtdC5vYmoNCi0JZGVsIC9GIGh0
dHBfY2xpZW50LmV4ZQ0KLQlkZWwgL0YgaHR0cF9jbGllbnQub2JqDQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNj
dHBsaWIvcHJvZ3JhbXMvY2xpZW50LmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9jbGllbnQuYwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWZlNzU3OTFkZTJmLi4wMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvcHJvZ3JhbXMvY2xpZW50LmMKKysrIC9kZXYvbnVsbApAQCAtMSw1MDIgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDEzIE1pY2hhZWwgVHVleGVuCi0gKgot
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuIE5laXRoZXIgdGhlIG5hbWUg
b2YgdGhlIHByb2plY3Qgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCi0gKiAgICBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRo
aXMgc29mdHdhcmUKLSAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIFBST0pFQ1QgQU5E
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFCi0gKiBBUkUgRElTQ0xBSU1FRC4JSU4gTk8gRVZFTlQgU0hBTEwgVEhFIFBST0pF
Q1QgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTCi0gKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0gKiBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZCi0gKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0gKiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0vKgotICogVXNhZ2U6IGNsaWVudCByZW1vdGVfYWRkciByZW1vdGVfcG9ydCBbbG9jYWxfcG9y
dF0gW2xvY2FsX2VuY2Fwc19wb3J0XSBbcmVtb3RlX2VuY2Fwc19wb3J0XQotICovCi0KLSNpZmRl
ZiBfV0lOMzIKLSNkZWZpbmUgX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MKLSNlbmRpZgotI2luY2x1
ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0j
aW5jbHVkZSA8c3RkYXJnLmg+Ci0jaWZuZGVmIF9XSU4zMgotI2luY2x1ZGUgPHVuaXN0ZC5oPgot
I2VuZGlmCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWZuZGVmIF9XSU4zMgotI2luY2x1ZGUg
PHN5cy9zb2NrZXQuaD4KLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jaW5jbHVkZSA8YXJwYS9p
bmV0Lmg+Ci0jZWxzZQotI2luY2x1ZGUgPGlvLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDx1c3JzY3Rw
Lmg+Ci0KLWludCBkb25lID0gMDsKLQotI2lmZGVmIF9XSU4zMgotdHlwZWRlZiBjaGFyKiBjYWRk
cl90OwotI2VuZGlmCi0KLXN0YXRpYyB2b2lkCi1oYW5kbGVfYXNzb2NpYXRpb25fY2hhbmdlX2V2
ZW50KHN0cnVjdCBzY3RwX2Fzc29jX2NoYW5nZSAqc2FjKQotewotCXVuc2lnbmVkIGludCBpLCBu
OwotCi0JcHJpbnRmKCJBc3NvY2lhdGlvbiBjaGFuZ2UgIik7Ci0Jc3dpdGNoIChzYWMtPnNhY19z
dGF0ZSkgewotCWNhc2UgU0NUUF9DT01NX1VQOgotCQlwcmludGYoIlNDVFBfQ09NTV9VUCIpOwot
CQlicmVhazsKLQljYXNlIFNDVFBfQ09NTV9MT1NUOgotCQlwcmludGYoIlNDVFBfQ09NTV9MT1NU
Iik7Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9SRVNUQVJUOgotCQlwcmludGYoIlNDVFBfUkVTVEFS
VCIpOwotCQlicmVhazsKLQljYXNlIFNDVFBfU0hVVERPV05fQ09NUDoKLQkJcHJpbnRmKCJTQ1RQ
X1NIVVRET1dOX0NPTVAiKTsKLQkJYnJlYWs7Ci0JY2FzZSBTQ1RQX0NBTlRfU1RSX0FTU09DOgot
CQlwcmludGYoIlNDVFBfQ0FOVF9TVFJfQVNTT0MiKTsKLQkJYnJlYWs7Ci0JZGVmYXVsdDoKLQkJ
cHJpbnRmKCJVTktOT1dOIik7Ci0JCWJyZWFrOwotCX0KLQlwcmludGYoIiwgc3RyZWFtcyAoaW4v
b3V0KSA9ICgldS8ldSkiLAotCSAgICAgICBzYWMtPnNhY19pbmJvdW5kX3N0cmVhbXMsIHNhYy0+
c2FjX291dGJvdW5kX3N0cmVhbXMpOwotCW4gPSBzYWMtPnNhY19sZW5ndGggLSBzaXplb2Yoc3Ry
dWN0IHNjdHBfYXNzb2NfY2hhbmdlKTsKLQlpZiAoKChzYWMtPnNhY19zdGF0ZSA9PSBTQ1RQX0NP
TU1fVVApIHx8Ci0JICAgICAoc2FjLT5zYWNfc3RhdGUgPT0gU0NUUF9SRVNUQVJUKSkgJiYgKG4g
PiAwKSkgewotCQlwcmludGYoIiwgc3VwcG9ydHMiKTsKLQkJZm9yIChpID0gMDsgaSA8IG47IGkr
KykgewotCQkJc3dpdGNoIChzYWMtPnNhY19pbmZvW2ldKSB7Ci0JCQljYXNlIFNDVFBfQVNTT0Nf
U1VQUE9SVFNfUFI6Ci0JCQkJcHJpbnRmKCIgUFIiKTsKLQkJCQlicmVhazsKLQkJCWNhc2UgU0NU
UF9BU1NPQ19TVVBQT1JUU19BVVRIOgotCQkJCXByaW50ZigiIEFVVEgiKTsKLQkJCQlicmVhazsK
LQkJCWNhc2UgU0NUUF9BU1NPQ19TVVBQT1JUU19BU0NPTkY6Ci0JCQkJcHJpbnRmKCIgQVNDT05G
Iik7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlIFNDVFBfQVNTT0NfU1VQUE9SVFNfTVVMVElCVUY6Ci0J
CQkJcHJpbnRmKCIgTVVMVElCVUYiKTsKLQkJCQlicmVhazsKLQkJCWNhc2UgU0NUUF9BU1NPQ19T
VVBQT1JUU19SRV9DT05GSUc6Ci0JCQkJcHJpbnRmKCIgUkUtQ09ORklHIik7Ci0JCQkJYnJlYWs7
Ci0JCQlkZWZhdWx0OgotCQkJCXByaW50ZigiIFVOS05PV04oMHglMDJ4KSIsIHNhYy0+c2FjX2lu
Zm9baV0pOwotCQkJCWJyZWFrOwotCQkJfQotCQl9Ci0JfSBlbHNlIGlmICgoKHNhYy0+c2FjX3N0
YXRlID09IFNDVFBfQ09NTV9MT1NUKSB8fAotCSAgICAgICAgICAgIChzYWMtPnNhY19zdGF0ZSA9
PSBTQ1RQX0NBTlRfU1RSX0FTU09DKSkgJiYgKG4gPiAwKSkgewotCQlwcmludGYoIiwgQUJPUlQg
PSIpOwotCQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0JCQlwcmludGYoIiAweCUwMngiLCBz
YWMtPnNhY19pbmZvW2ldKTsKLQkJfQotCX0KLQlwcmludGYoIi5cbiIpOwotCWlmICgoc2FjLT5z
YWNfc3RhdGUgPT0gU0NUUF9DQU5UX1NUUl9BU1NPQykgfHwKLQkgICAgKHNhYy0+c2FjX3N0YXRl
ID09IFNDVFBfU0hVVERPV05fQ09NUCkgfHwKLQkgICAgKHNhYy0+c2FjX3N0YXRlID09IFNDVFBf
Q09NTV9MT1NUKSkgewotCQlleGl0KDApOwotCX0KLQlyZXR1cm47Ci19Ci0KLXN0YXRpYyB2b2lk
Ci1oYW5kbGVfcGVlcl9hZGRyZXNzX2NoYW5nZV9ldmVudChzdHJ1Y3Qgc2N0cF9wYWRkcl9jaGFu
Z2UgKnNwYykKLXsKLQljaGFyIGFkZHJfYnVmW0lORVQ2X0FERFJTVFJMRU5dOwotCWNvbnN0IGNo
YXIgKmFkZHI7Ci0Jc3RydWN0IHNvY2thZGRyX2luICpzaW47Ci0Jc3RydWN0IHNvY2thZGRyX2lu
NiAqc2luNjsKLQlzdHJ1Y3Qgc29ja2FkZHJfY29ubiAqc2Nvbm47Ci0KLQlzd2l0Y2ggKHNwYy0+
c3BjX2FhZGRyLnNzX2ZhbWlseSkgewotCWNhc2UgQUZfSU5FVDoKLQkJc2luID0gKHN0cnVjdCBz
b2NrYWRkcl9pbiAqKSZzcGMtPnNwY19hYWRkcjsKLQkJYWRkciA9IGluZXRfbnRvcChBRl9JTkVU
LCAmc2luLT5zaW5fYWRkciwgYWRkcl9idWYsIElORVRfQUREUlNUUkxFTik7Ci0JCWJyZWFrOwot
CWNhc2UgQUZfSU5FVDY6Ci0JCXNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKSZzcGMtPnNw
Y19hYWRkcjsKLQkJYWRkciA9IGluZXRfbnRvcChBRl9JTkVUNiwgJnNpbjYtPnNpbjZfYWRkciwg
YWRkcl9idWYsIElORVQ2X0FERFJTVFJMRU4pOwotCQlicmVhazsKLQljYXNlIEFGX0NPTk46Ci0J
CXNjb25uID0gKHN0cnVjdCBzb2NrYWRkcl9jb25uICopJnNwYy0+c3BjX2FhZGRyOwotI2lmZGVm
IF9XSU4zMgotCQlfc25wcmludGYoYWRkcl9idWYsIElORVQ2X0FERFJTVFJMRU4sICIlcCIsIHNj
b25uLT5zY29ubl9hZGRyKTsKLSNlbHNlCi0JCXNucHJpbnRmKGFkZHJfYnVmLCBJTkVUNl9BRERS
U1RSTEVOLCAiJXAiLCBzY29ubi0+c2Nvbm5fYWRkcik7Ci0jZW5kaWYKLQkJYWRkciA9IGFkZHJf
YnVmOwotCQlicmVhazsKLQlkZWZhdWx0OgotI2lmZGVmIF9XSU4zMgotCQlfc25wcmludGYoYWRk
cl9idWYsIElORVQ2X0FERFJTVFJMRU4sICJVbmtub3duIGZhbWlseSAlZCIsIHNwYy0+c3BjX2Fh
ZGRyLnNzX2ZhbWlseSk7Ci0jZWxzZQotCQlzbnByaW50ZihhZGRyX2J1ZiwgSU5FVDZfQUREUlNU
UkxFTiwgIlVua25vd24gZmFtaWx5ICVkIiwgc3BjLT5zcGNfYWFkZHIuc3NfZmFtaWx5KTsKLSNl
bmRpZgotCQlhZGRyID0gYWRkcl9idWY7Ci0JCWJyZWFrOwotCX0KLQlwcmludGYoIlBlZXIgYWRk
cmVzcyAlcyBpcyBub3cgIiwgYWRkcik7Ci0Jc3dpdGNoIChzcGMtPnNwY19zdGF0ZSkgewotCWNh
c2UgU0NUUF9BRERSX0FWQUlMQUJMRToKLQkJcHJpbnRmKCJTQ1RQX0FERFJfQVZBSUxBQkxFIik7
Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9BRERSX1VOUkVBQ0hBQkxFOgotCQlwcmludGYoIlNDVFBf
QUREUl9VTlJFQUNIQUJMRSIpOwotCQlicmVhazsKLQljYXNlIFNDVFBfQUREUl9SRU1PVkVEOgot
CQlwcmludGYoIlNDVFBfQUREUl9SRU1PVkVEIik7Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9BRERS
X0FEREVEOgotCQlwcmludGYoIlNDVFBfQUREUl9BRERFRCIpOwotCQlicmVhazsKLQljYXNlIFND
VFBfQUREUl9NQURFX1BSSU06Ci0JCXByaW50ZigiU0NUUF9BRERSX01BREVfUFJJTSIpOwotCQli
cmVhazsKLQljYXNlIFNDVFBfQUREUl9DT05GSVJNRUQ6Ci0JCXByaW50ZigiU0NUUF9BRERSX0NP
TkZJUk1FRCIpOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlwcmludGYoIlVOS05PV04iKTsKLQkJ
YnJlYWs7Ci0JfQotCXByaW50ZigiIChlcnJvciA9IDB4JTA4eCkuXG4iLCBzcGMtPnNwY19lcnJv
cik7Ci0JcmV0dXJuOwotfQotCi1zdGF0aWMgdm9pZAotaGFuZGxlX3NlbmRfZmFpbGVkX2V2ZW50
KHN0cnVjdCBzY3RwX3NlbmRfZmFpbGVkX2V2ZW50ICpzc2ZlKQotewotCXNpemVfdCBpLCBuOwot
Ci0JaWYgKHNzZmUtPnNzZmVfZmxhZ3MgJiBTQ1RQX0RBVEFfVU5TRU5UKSB7Ci0JCXByaW50Zigi
VW5zZW50ICIpOwotCX0KLQlpZiAoc3NmZS0+c3NmZV9mbGFncyAmIFNDVFBfREFUQV9TRU5UKSB7
Ci0JCXByaW50ZigiU2VudCAiKTsKLQl9Ci0JaWYgKHNzZmUtPnNzZmVfZmxhZ3MgJiB+KFNDVFBf
REFUQV9TRU5UIHwgU0NUUF9EQVRBX1VOU0VOVCkpIHsKLQkJcHJpbnRmKCIoZmxhZ3MgPSAleCkg
Iiwgc3NmZS0+c3NmZV9mbGFncyk7Ci0JfQotCXByaW50ZigibWVzc2FnZSB3aXRoIFBQSUQgPSAl
dSwgU0lEID0gJXUsIGZsYWdzOiAweCUwNHggZHVlIHRvIGVycm9yID0gMHglMDh4IiwKLQkgICAg
ICAgbnRvaGwoc3NmZS0+c3NmZV9pbmZvLnNuZF9wcGlkKSwgc3NmZS0+c3NmZV9pbmZvLnNuZF9z
aWQsCi0JICAgICAgIHNzZmUtPnNzZmVfaW5mby5zbmRfZmxhZ3MsIHNzZmUtPnNzZmVfZXJyb3Ip
OwotCW4gPSBzc2ZlLT5zc2ZlX2xlbmd0aCAtIHNpemVvZihzdHJ1Y3Qgc2N0cF9zZW5kX2ZhaWxl
ZF9ldmVudCk7Ci0JZm9yIChpID0gMDsgaSA8IG47IGkrKykgewotCQlwcmludGYoIiAweCUwMngi
LCBzc2ZlLT5zc2ZlX2RhdGFbaV0pOwotCX0KLQlwcmludGYoIi5cbiIpOwotCXJldHVybjsKLX0K
LQotc3RhdGljIHZvaWQKLWhhbmRsZV9ub3RpZmljYXRpb24odW5pb24gc2N0cF9ub3RpZmljYXRp
b24gKm5vdGlmLCBzaXplX3QgbikKLXsKLQlpZiAobm90aWYtPnNuX2hlYWRlci5zbl9sZW5ndGgg
IT0gKHVpbnQzMl90KW4pIHsKLQkJcmV0dXJuOwotCX0KLQlzd2l0Y2ggKG5vdGlmLT5zbl9oZWFk
ZXIuc25fdHlwZSkgewotCWNhc2UgU0NUUF9BU1NPQ19DSEFOR0U6Ci0JCWhhbmRsZV9hc3NvY2lh
dGlvbl9jaGFuZ2VfZXZlbnQoJihub3RpZi0+c25fYXNzb2NfY2hhbmdlKSk7Ci0JCWJyZWFrOwot
CWNhc2UgU0NUUF9QRUVSX0FERFJfQ0hBTkdFOgotCQloYW5kbGVfcGVlcl9hZGRyZXNzX2NoYW5n
ZV9ldmVudCgmKG5vdGlmLT5zbl9wYWRkcl9jaGFuZ2UpKTsKLQkJYnJlYWs7Ci0JY2FzZSBTQ1RQ
X1JFTU9URV9FUlJPUjoKLQkJYnJlYWs7Ci0JY2FzZSBTQ1RQX1NIVVRET1dOX0VWRU5UOgotCQli
cmVhazsKLQljYXNlIFNDVFBfQURBUFRBVElPTl9JTkRJQ0FUSU9OOgotCQlicmVhazsKLQljYXNl
IFNDVFBfUEFSVElBTF9ERUxJVkVSWV9FVkVOVDoKLQkJYnJlYWs7Ci0JY2FzZSBTQ1RQX0FVVEhF
TlRJQ0FUSU9OX0VWRU5UOgotCQlicmVhazsKLQljYXNlIFNDVFBfU0VOREVSX0RSWV9FVkVOVDoK
LQkJYnJlYWs7Ci0JY2FzZSBTQ1RQX05PVElGSUNBVElPTlNfU1RPUFBFRF9FVkVOVDoKLQkJYnJl
YWs7Ci0JY2FzZSBTQ1RQX1NFTkRfRkFJTEVEX0VWRU5UOgotCQloYW5kbGVfc2VuZF9mYWlsZWRf
ZXZlbnQoJihub3RpZi0+c25fc2VuZF9mYWlsZWRfZXZlbnQpKTsKLQkJYnJlYWs7Ci0JY2FzZSBT
Q1RQX1NUUkVBTV9SRVNFVF9FVkVOVDoKLQkJYnJlYWs7Ci0JY2FzZSBTQ1RQX0FTU09DX1JFU0VU
X0VWRU5UOgotCQlicmVhazsKLQljYXNlIFNDVFBfU1RSRUFNX0NIQU5HRV9FVkVOVDoKLQkJYnJl
YWs7Ci0JZGVmYXVsdDoKLQkJYnJlYWs7Ci0JfQotfQotCi1zdGF0aWMgaW50Ci1yZWNlaXZlX2Ni
KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHVuaW9uIHNjdHBfc29ja3N0b3JlIGFkZHIsIHZvaWQgKmRh
dGEsCi0gICAgICAgICAgIHNpemVfdCBkYXRhbGVuLCBzdHJ1Y3Qgc2N0cF9yY3ZpbmZvIHJjdiwg
aW50IGZsYWdzLCB2b2lkICp1bHBfaW5mbykKLXsKLQlpZiAoZGF0YSA9PSBOVUxMKSB7Ci0JCWRv
bmUgPSAxOwotCQl1c3JzY3RwX2Nsb3NlKHNvY2spOwotCX0gZWxzZSB7Ci0JCWlmIChmbGFncyAm
IE1TR19OT1RJRklDQVRJT04pIHsKLQkJCWhhbmRsZV9ub3RpZmljYXRpb24oKHVuaW9uIHNjdHBf
bm90aWZpY2F0aW9uICopZGF0YSwgZGF0YWxlbik7Ci0JCX0gZWxzZSB7Ci0jaWZkZWYgX1dJTjMy
Ci0JCQlfd3JpdGUoX2ZpbGVubyhzdGRvdXQpLCBkYXRhLCAodW5zaWduZWQgaW50KWRhdGFsZW4p
OwotI2Vsc2UKLQkJCWlmICh3cml0ZShmaWxlbm8oc3Rkb3V0KSwgZGF0YSwgZGF0YWxlbikgPCAw
KSB7Ci0JCQkJcGVycm9yKCJ3cml0ZSIpOwotCQkJfQotI2VuZGlmCi0JCX0KLQkJZnJlZShkYXRh
KTsKLQl9Ci0JcmV0dXJuICgxKTsKLX0KLQotdm9pZAotZGVidWdfcHJpbnRmKGNvbnN0IGNoYXIg
KmZvcm1hdCwgLi4uKQotewotCXZhX2xpc3QgYXA7Ci0KLQl2YV9zdGFydChhcCwgZm9ybWF0KTsK
LQl2cHJpbnRmKGZvcm1hdCwgYXApOwotCXZhX2VuZChhcCk7Ci19Ci0KLWludAotbWFpbihpbnQg
YXJnYywgY2hhciAqYXJndltdKQotewotCXN0cnVjdCBzb2NrZXQgKnNvY2s7Ci0Jc3RydWN0IHNv
Y2thZGRyICphZGRyLCAqYWRkcnM7Ci0Jc3RydWN0IHNvY2thZGRyX2luIGFkZHI0OwotCXN0cnVj
dCBzb2NrYWRkcl9pbjYgYWRkcjY7Ci0Jc3RydWN0IHNjdHBfdWRwZW5jYXBzIGVuY2FwczsKLQlz
dHJ1Y3Qgc2N0cHN0YXQgc3RhdDsKLQlzdHJ1Y3Qgc2N0cF9ldmVudCBldmVudDsKLQl1aW50MTZf
dCBldmVudF90eXBlc1tdID0ge1NDVFBfQVNTT0NfQ0hBTkdFLAotCSAgICAgICAgICAgICAgICAg
ICAgICAgICAgU0NUUF9QRUVSX0FERFJfQ0hBTkdFLAotCSAgICAgICAgICAgICAgICAgICAgICAg
ICAgU0NUUF9TRU5EX0ZBSUxFRF9FVkVOVH07Ci0JY2hhciBidWZmZXJbODBdOwotCXVuc2lnbmVk
IGludCBpOwotCWludCBuOwotCi0JaWYgKGFyZ2MgPCAzKSB7Ci0JCXByaW50ZigiJXMiLCAiVXNh
Z2U6IGNsaWVudCByZW1vdGVfYWRkciByZW1vdGVfcG9ydCBsb2NhbF9wb3J0IGxvY2FsX2VuY2Fw
c19wb3J0IHJlbW90ZV9lbmNhcHNfcG9ydFxuIik7Ci0JCXJldHVybiAoLTEpOwotCX0KLQlpZiAo
YXJnYyA+IDQpIHsKLQkJdXNyc2N0cF9pbml0KGF0b2koYXJndls0XSksIE5VTEwsIGRlYnVnX3By
aW50Zik7Ci0JfSBlbHNlIHsKLQkJdXNyc2N0cF9pbml0KDk4OTksIE5VTEwsIGRlYnVnX3ByaW50
Zik7Ci0JfQotI2lmZGVmIFNDVFBfREVCVUcKLQl1c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9kZWJ1
Z19vbihTQ1RQX0RFQlVHX05PTkUpOwotI2VuZGlmCi0JdXNyc2N0cF9zeXNjdGxfc2V0X3NjdHBf
YmxhY2tob2xlKDIpOwotCWlmICgoc29jayA9IHVzcnNjdHBfc29ja2V0KEFGX0lORVQ2LCBTT0NL
X1NUUkVBTSwgSVBQUk9UT19TQ1RQLCByZWNlaXZlX2NiLCBOVUxMLCAwLCBOVUxMKSkgPT0gTlVM
TCkgewotCQlwZXJyb3IoInVzcnNjdHBfc29ja2V0Iik7Ci0JfQotCW1lbXNldCgmZXZlbnQsIDAs
IHNpemVvZihldmVudCkpOwotCWV2ZW50LnNlX2Fzc29jX2lkID0gU0NUUF9BTExfQVNTT0M7Ci0J
ZXZlbnQuc2Vfb24gPSAxOwotCWZvciAoaSA9IDA7IGkgPCBzaXplb2YoZXZlbnRfdHlwZXMpL3Np
emVvZih1aW50MTZfdCk7IGkrKykgewotCQlldmVudC5zZV90eXBlID0gZXZlbnRfdHlwZXNbaV07
Ci0JCWlmICh1c3JzY3RwX3NldHNvY2tvcHQoc29jaywgSVBQUk9UT19TQ1RQLCBTQ1RQX0VWRU5U
LCAmZXZlbnQsIHNpemVvZihldmVudCkpIDwgMCkgewotCQkJcGVycm9yKCJzZXRzb2Nrb3B0IFND
VFBfRVZFTlQiKTsKLQkJfQotCX0KLQlpZiAoYXJnYyA+IDMpIHsKLQkJbWVtc2V0KCh2b2lkICop
JmFkZHI2LCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNikpOwotI2lmZGVmIEhBVkVfU0lO
Nl9MRU4KLQkJYWRkcjYuc2luNl9sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNik7Ci0j
ZW5kaWYKLQkJYWRkcjYuc2luNl9mYW1pbHkgPSBBRl9JTkVUNjsKLQkJYWRkcjYuc2luNl9wb3J0
ID0gaHRvbnMoYXRvaShhcmd2WzNdKSk7Ci0JCWFkZHI2LnNpbjZfYWRkciA9IGluNmFkZHJfYW55
OwotCQlpZiAodXNyc2N0cF9iaW5kKHNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikmYWRkcjYsIHNp
emVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSkgPCAwKSB7Ci0JCQlwZXJyb3IoImJpbmQiKTsKLQkJ
fQotCX0KLQlpZiAoYXJnYyA+IDUpIHsKLQkJbWVtc2V0KCZlbmNhcHMsIDAsIHNpemVvZihzdHJ1
Y3Qgc2N0cF91ZHBlbmNhcHMpKTsKLQkJZW5jYXBzLnN1ZV9hZGRyZXNzLnNzX2ZhbWlseSA9IEFG
X0lORVQ2OwotCQllbmNhcHMuc3VlX3BvcnQgPSBodG9ucyhhdG9pKGFyZ3ZbNV0pKTsKLQkJaWYg
KHVzcnNjdHBfc2V0c29ja29wdChzb2NrLCBJUFBST1RPX1NDVFAsIFNDVFBfUkVNT1RFX1VEUF9F
TkNBUFNfUE9SVCwgKGNvbnN0IHZvaWQqKSZlbmNhcHMsIChzb2NrbGVuX3Qpc2l6ZW9mKHN0cnVj
dCBzY3RwX3VkcGVuY2FwcykpIDwgMCkgewotCQkJcGVycm9yKCJzZXRzb2Nrb3B0Iik7Ci0JCX0K
LQl9Ci0JbWVtc2V0KCh2b2lkICopJmFkZHI0LCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2lu
KSk7Ci0JbWVtc2V0KCh2b2lkICopJmFkZHI2LCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2lu
NikpOwotI2lmZGVmIEhBVkVfU0lOX0xFTgotCWFkZHI0LnNpbl9sZW4gPSBzaXplb2Yoc3RydWN0
IHNvY2thZGRyX2luKTsKLSNlbmRpZgotI2lmZGVmIEhBVkVfU0lONl9MRU4KLQlhZGRyNi5zaW42
X2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KTsKLSNlbmRpZgotCWFkZHI0LnNpbl9m
YW1pbHkgPSBBRl9JTkVUOwotCWFkZHI2LnNpbjZfZmFtaWx5ID0gQUZfSU5FVDY7Ci0JYWRkcjQu
c2luX3BvcnQgPSBodG9ucyhhdG9pKGFyZ3ZbMl0pKTsKLQlhZGRyNi5zaW42X3BvcnQgPSBodG9u
cyhhdG9pKGFyZ3ZbMl0pKTsKLQlpZiAoaW5ldF9wdG9uKEFGX0lORVQ2LCBhcmd2WzFdLCAmYWRk
cjYuc2luNl9hZGRyKSA9PSAxKSB7Ci0JCWlmICh1c3JzY3RwX2Nvbm5lY3Qoc29jaywgKHN0cnVj
dCBzb2NrYWRkciAqKSZhZGRyNiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKSA8IDApIHsK
LQkJCXBlcnJvcigidXNyc2N0cF9jb25uZWN0Iik7Ci0JCX0KLQl9IGVsc2UgaWYgKGluZXRfcHRv
bihBRl9JTkVULCBhcmd2WzFdLCAmYWRkcjQuc2luX2FkZHIpID09IDEpIHsKLQkJaWYgKHVzcnNj
dHBfY29ubmVjdChzb2NrLCAoc3RydWN0IHNvY2thZGRyICopJmFkZHI0LCBzaXplb2Yoc3RydWN0
IHNvY2thZGRyX2luKSkgPCAwKSB7Ci0JCQlwZXJyb3IoInVzcnNjdHBfY29ubmVjdCIpOwotCQl9
Ci0JfSBlbHNlIHsKLQkJcHJpbnRmKCJJbGxlZ2FsIGRlc3RpbmF0aW9uIGFkZHJlc3MuXG4iKTsK
LQl9Ci0JaWYgKChuID0gdXNyc2N0cF9nZXRsYWRkcnMoc29jaywgMCwgJmFkZHJzKSkgPCAwKSB7
Ci0JCXBlcnJvcigidXNyc2N0cF9nZXRsYWRkcnMiKTsKLQl9IGVsc2UgewotCQlhZGRyID0gYWRk
cnM7Ci0JCXByaW50ZigiTG9jYWwgYWRkcmVzc2VzOiAiKTsKLQkJZm9yIChpID0gMDsgaSA8ICh1
bnNpZ25lZCBpbnQpbjsgaSsrKSB7Ci0JCQlpZiAoaSA+IDApIHsKLQkJCQlwcmludGYoIiVzIiwg
IiwgIik7Ci0JCQl9Ci0JCQlzd2l0Y2ggKGFkZHItPnNhX2ZhbWlseSkgewotCQkJY2FzZSBBRl9J
TkVUOgotCQkJewotCQkJCXN0cnVjdCBzb2NrYWRkcl9pbiAqc2luOwotCQkJCWNoYXIgYnVmW0lO
RVRfQUREUlNUUkxFTl07Ci0JCQkJY29uc3QgY2hhciAqbmFtZTsKLQotCQkJCXNpbiA9IChzdHJ1
Y3Qgc29ja2FkZHJfaW4gKilhZGRyOwotCQkJCW5hbWUgPSBpbmV0X250b3AoQUZfSU5FVCwgJnNp
bi0+c2luX2FkZHIsIGJ1ZiwgSU5FVF9BRERSU1RSTEVOKTsKLQkJCQlwcmludGYoIiVzIiwgbmFt
ZSk7Ci0jaWZuZGVmIEhBVkVfU0FfTEVOCi0JCQkJYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHIgKiko
KGNhZGRyX3QpYWRkciArIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKLSNlbmRpZgotCQkJ
CWJyZWFrOwotCQkJfQotCQkJY2FzZSBBRl9JTkVUNjoKLQkJCXsKLQkJCQlzdHJ1Y3Qgc29ja2Fk
ZHJfaW42ICpzaW42OwotCQkJCWNoYXIgYnVmW0lORVQ2X0FERFJTVFJMRU5dOwotCQkJCWNvbnN0
IGNoYXIgKm5hbWU7Ci0KLQkJCQlzaW42ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilhZGRyOwot
CQkJCW5hbWUgPSBpbmV0X250b3AoQUZfSU5FVDYsICZzaW42LT5zaW42X2FkZHIsIGJ1ZiwgSU5F
VDZfQUREUlNUUkxFTik7Ci0JCQkJcHJpbnRmKCIlcyIsIG5hbWUpOwotI2lmbmRlZiBIQVZFX1NB
X0xFTgotCQkJCWFkZHIgPSAoc3RydWN0IHNvY2thZGRyICopKChjYWRkcl90KWFkZHIgKyBzaXpl
b2Yoc3RydWN0IHNvY2thZGRyX2luNikpOwotI2VuZGlmCi0JCQkJYnJlYWs7Ci0JCQl9Ci0JCQlk
ZWZhdWx0OgotCQkJCWJyZWFrOwotCQkJfQotI2lmZGVmIEhBVkVfU0FfTEVOCi0JCQlhZGRyID0g
KHN0cnVjdCBzb2NrYWRkciAqKSgoY2FkZHJfdClhZGRyICsgYWRkci0+c2FfbGVuKTsKLSNlbmRp
ZgotCQl9Ci0JCXByaW50ZigiLlxuIik7Ci0JCXVzcnNjdHBfZnJlZWxhZGRycyhhZGRycyk7Ci0J
fQotCWlmICgobiA9IHVzcnNjdHBfZ2V0cGFkZHJzKHNvY2ssIDAsICZhZGRycykpIDwgMCkgewot
CQlwZXJyb3IoInVzcnNjdHBfZ2V0cGFkZHJzIik7Ci0JfSBlbHNlIHsKLQkJYWRkciA9IGFkZHJz
OwotCQlwcmludGYoIlBlZXIgYWRkcmVzc2VzOiAiKTsKLQkJZm9yIChpID0gMDsgaSA8ICh1bnNp
Z25lZCBpbnQpbjsgaSsrKSB7Ci0JCQlpZiAoaSA+IDApIHsKLQkJCQlwcmludGYoIiVzIiwgIiwg
Iik7Ci0JCQl9Ci0JCQlzd2l0Y2ggKGFkZHItPnNhX2ZhbWlseSkgewotCQkJY2FzZSBBRl9JTkVU
OgotCQkJewotCQkJCXN0cnVjdCBzb2NrYWRkcl9pbiAqc2luOwotCQkJCWNoYXIgYnVmW0lORVRf
QUREUlNUUkxFTl07Ci0JCQkJY29uc3QgY2hhciAqbmFtZTsKLQotCQkJCXNpbiA9IChzdHJ1Y3Qg
c29ja2FkZHJfaW4gKilhZGRyOwotCQkJCW5hbWUgPSBpbmV0X250b3AoQUZfSU5FVCwgJnNpbi0+
c2luX2FkZHIsIGJ1ZiwgSU5FVF9BRERSU1RSTEVOKTsKLQkJCQlwcmludGYoIiVzIiwgbmFtZSk7
Ci0jaWZuZGVmIEhBVkVfU0FfTEVOCi0JCQkJYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHIgKikoKGNh
ZGRyX3QpYWRkciArIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKLSNlbmRpZgotCQkJCWJy
ZWFrOwotCQkJfQotCQkJY2FzZSBBRl9JTkVUNjoKLQkJCXsKLQkJCQlzdHJ1Y3Qgc29ja2FkZHJf
aW42ICpzaW42OwotCQkJCWNoYXIgYnVmW0lORVQ2X0FERFJTVFJMRU5dOwotCQkJCWNvbnN0IGNo
YXIgKm5hbWU7Ci0KLQkJCQlzaW42ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilhZGRyOwotCQkJ
CW5hbWUgPSBpbmV0X250b3AoQUZfSU5FVDYsICZzaW42LT5zaW42X2FkZHIsIGJ1ZiwgSU5FVDZf
QUREUlNUUkxFTik7Ci0JCQkJcHJpbnRmKCIlcyIsIG5hbWUpOwotI2lmbmRlZiBIQVZFX1NBX0xF
TgotCQkJCWFkZHIgPSAoc3RydWN0IHNvY2thZGRyICopKChjYWRkcl90KWFkZHIgKyBzaXplb2Yo
c3RydWN0IHNvY2thZGRyX2luNikpOwotI2VuZGlmCi0JCQkJYnJlYWs7Ci0JCQl9Ci0JCQlkZWZh
dWx0OgotCQkJCWJyZWFrOwotCQkJfQotI2lmZGVmIEhBVkVfU0FfTEVOCi0JCQlhZGRyID0gKHN0
cnVjdCBzb2NrYWRkciAqKSgoY2FkZHJfdClhZGRyICsgYWRkci0+c2FfbGVuKTsKLSNlbmRpZgot
CQl9Ci0JCXByaW50ZigiLlxuIik7Ci0JCXVzcnNjdHBfZnJlZXBhZGRycyhhZGRycyk7Ci0JfQot
CXdoaWxlICgoZmdldHMoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgc3RkaW4pICE9IE5VTEwpICYm
ICFkb25lKSB7Ci0JCXVzcnNjdHBfc2VuZHYoc29jaywgYnVmZmVyLCBzdHJsZW4oYnVmZmVyKSwg
TlVMTCwgMCwgTlVMTCwgMCwgU0NUUF9TRU5EVl9OT0lORk8sIDApOwotCX0KLQlpZiAoIWRvbmUp
IHsKLQkJaWYgKHVzcnNjdHBfc2h1dGRvd24oc29jaywgU0hVVF9XUikgPCAwKSB7Ci0JCQlwZXJy
b3IoInVzcnNjdHBfc2h1dGRvd24iKTsKLQkJfQotCX0KLQl3aGlsZSAoIWRvbmUpIHsKLSNpZmRl
ZiBfV0lOMzIKLQkJU2xlZXAoMSAqIDEwMDApOwotI2Vsc2UKLQkJc2xlZXAoMSk7Ci0jZW5kaWYK
LQl9Ci0JdXNyc2N0cF9nZXRfc3RhdCgmc3RhdCk7Ci0JcHJpbnRmKCJOdW1iZXIgb2YgcGFja2V0
cyAoc2VudC9yZWNlaXZlZCk6ICgldS8ldSkuXG4iLAotCSAgICAgICBzdGF0LnNjdHBzX291dHBh
Y2tldHMsIHN0YXQuc2N0cHNfaW5wYWNrZXRzKTsKLQl3aGlsZSAodXNyc2N0cF9maW5pc2goKSAh
PSAwKSB7Ci0jaWZkZWYgX1dJTjMyCi0JCVNsZWVwKDEgKiAxMDAwKTsKLSNlbHNlCi0JCXNsZWVw
KDEpOwotI2VuZGlmCi0JfQotCXJldHVybigwKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3By
b2dyYW1zL2RheXRpbWVfc2VydmVyLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9kYXl0aW1lX3NlcnZl
ci5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNWNhZGY1M2QxMTkuLjAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9kYXl0aW1lX3NlcnZlci5jCisrKyAvZGV2L251
bGwKQEAgLTEsMTQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxMyBNaWNo
YWVsIFR1ZXhlbgotICoKLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBwcm9qZWN0IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRy
aWJ1dG9ycwotICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0gKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBQUk9KRUNUIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotICogQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotICogQVJFIERJU0NMQUlNRUQuCUlOIE5PIEVWRU5U
IFNIQUxMIFRIRSBQUk9KRUNUIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSAqIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwotICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0gKiBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVAotICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotICogU1VD
SCBEQU1BR0UuCi0gKi8KLQotLyoKLSAqIFVzYWdlOiBkYXl0aW1lX3NlcnZlciBbbG9jYWxfZW5j
YXBzX3BvcnRdIFtyZW1vdGVfZW5jYXBzX3BvcnRdCi0gKiAKLSAqIEV4YW1wbGUKLSAqIFNlcnZl
cjogJCAuL2RheXRpbWVfc2VydmVyIDExMTExIDIyMjIyCi0gKiBDbGllbnQ6ICQgLi9jbGllbnQg
MTI3LjAuMC4xIDEzIDAgMjIyMjIgMTExMTEKLSAqLwotCi0jaWZkZWYgX1dJTjMyCi0jZGVmaW5l
IF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTCi0jZW5kaWYKLSNpbmNsdWRlIDxzdGRpby5oPgotI2lu
Y2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPHN0ZGFyZy5o
PgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHRpbWUuaD4KLSNpZm5kZWYgX1dJ
TjMyCi0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotI2luY2x1
ZGUgPG5ldGluZXQvaW4uaD4KLSNpbmNsdWRlIDxhcnBhL2luZXQuaD4KLSNlbmRpZgotI2luY2x1
ZGUgPHVzcnNjdHAuaD4KLQotI2RlZmluZSBQT1JUIDEzCi0jZGVmaW5lIERBWVRJTUVfUFBJRCA0
MAotI2RlZmluZSBTTEVFUCAxCi0KLXZvaWQKLWRlYnVnX3ByaW50Zihjb25zdCBjaGFyICpmb3Jt
YXQsIC4uLikKLXsKLQl2YV9saXN0IGFwOwotCi0JdmFfc3RhcnQoYXAsIGZvcm1hdCk7Ci0JdnBy
aW50Zihmb3JtYXQsIGFwKTsKLQl2YV9lbmQoYXApOwotfQotCi1pbnQKLW1haW4oaW50IGFyZ2Ms
IGNoYXIgKmFyZ3ZbXSkKLXsKLQlzdHJ1Y3Qgc29ja2V0ICpzb2NrLCAqY29ubl9zb2NrOwotCXN0
cnVjdCBzb2NrYWRkcl9pbiBhZGRyOwotCXN0cnVjdCBzY3RwX3VkcGVuY2FwcyBlbmNhcHM7Ci0J
c29ja2xlbl90IGFkZHJfbGVuOwotCWNoYXIgYnVmZmVyWzgwXTsKLQl0aW1lX3Qgbm93OwotCXN0
cnVjdCBzY3RwX3NuZGluZm8gc25kaW5mbzsKLQotCWlmIChhcmdjID4gMSkgewotCQl1c3JzY3Rw
X2luaXQoYXRvaShhcmd2WzFdKSwgTlVMTCwgZGVidWdfcHJpbnRmKTsKLQl9IGVsc2UgewotCQl1
c3JzY3RwX2luaXQoOTg5OSwgTlVMTCwgZGVidWdfcHJpbnRmKTsKLQl9Ci0jaWZkZWYgU0NUUF9E
RUJVRwotCXVzcnNjdHBfc3lzY3RsX3NldF9zY3RwX2RlYnVnX29uKFNDVFBfREVCVUdfTk9ORSk7
Ci0jZW5kaWYKLQl1c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9ibGFja2hvbGUoMik7Ci0KLQlpZiAo
KHNvY2sgPSB1c3JzY3RwX3NvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgSVBQUk9UT19TQ1RQ
LCBOVUxMLCBOVUxMLCAwLCBOVUxMKSkgPT0gTlVMTCkgewotCQlwZXJyb3IoInVzcnNjdHBfc29j
a2V0Iik7Ci0JfQotCWlmIChhcmdjID4gMikgewotCQltZW1zZXQoJmVuY2FwcywgMCwgc2l6ZW9m
KHN0cnVjdCBzY3RwX3VkcGVuY2FwcykpOwotCQllbmNhcHMuc3VlX2FkZHJlc3Muc3NfZmFtaWx5
ID0gQUZfSU5FVDsKLQkJZW5jYXBzLnN1ZV9wb3J0ID0gaHRvbnMoYXRvaShhcmd2WzJdKSk7Ci0J
CWlmICh1c3JzY3RwX3NldHNvY2tvcHQoc29jaywgSVBQUk9UT19TQ1RQLCBTQ1RQX1JFTU9URV9V
RFBfRU5DQVBTX1BPUlQsIChjb25zdCB2b2lkKikmZW5jYXBzLCAoc29ja2xlbl90KXNpemVvZihz
dHJ1Y3Qgc2N0cF91ZHBlbmNhcHMpKSA8IDApIHsKLQkJCXBlcnJvcigic2V0c29ja29wdCIpOwot
CQl9Ci0JfQotCW1lbXNldCgodm9pZCAqKSZhZGRyLCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRy
X2luKSk7Ci0jaWZkZWYgSEFWRV9TSU5fTEVOCi0JYWRkci5zaW5fbGVuID0gc2l6ZW9mKHN0cnVj
dCBzb2NrYWRkcl9pbik7Ci0jZW5kaWYKLQlhZGRyLnNpbl9mYW1pbHkgPSBBRl9JTkVUOwotCWFk
ZHIuc2luX3BvcnQgPSBodG9ucyhQT1JUKTsKLQlhZGRyLnNpbl9hZGRyLnNfYWRkciA9IGh0b25s
KElOQUREUl9BTlkpOwotCWlmICh1c3JzY3RwX2JpbmQoc29jaywgKHN0cnVjdCBzb2NrYWRkciAq
KSZhZGRyLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSkgPCAwKSB7Ci0JCXBlcnJvcigidXNy
c2N0cF9iaW5kIik7Ci0JfQotCWlmICh1c3JzY3RwX2xpc3Rlbihzb2NrLCAxKSA8IDApIHsKLQkJ
cGVycm9yKCJ1c3JzY3RwX2xpc3RlbiIpOwotCX0KLQl3aGlsZSAoMSkgewotCQlhZGRyX2xlbiA9
IDA7Ci0JCWlmICgoY29ubl9zb2NrID0gdXNyc2N0cF9hY2NlcHQoc29jaywgTlVMTCwgJmFkZHJf
bGVuKSkgPT0gTlVMTCkgewotCQkJY29udGludWU7Ci0JCX0KLQkJdGltZSgmbm93KTsKLSNpZmRl
ZiBfV0lOMzIKLQkJX3NucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICIlcyIsIGN0aW1l
KCZub3cpKTsKLSNlbHNlCi0JCXNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICIlcyIs
IGN0aW1lKCZub3cpKTsKLSNlbmRpZgotCQlzbmRpbmZvLnNuZF9zaWQgPSAwOwotCQlzbmRpbmZv
LnNuZF9mbGFncyA9IDA7Ci0JCXNuZGluZm8uc25kX3BwaWQgPSBodG9ubChEQVlUSU1FX1BQSUQp
OwotCQlzbmRpbmZvLnNuZF9jb250ZXh0ID0gMDsKLQkJc25kaW5mby5zbmRfYXNzb2NfaWQgPSAw
OwotCQlpZiAodXNyc2N0cF9zZW5kdihjb25uX3NvY2ssIGJ1ZmZlciwgc3RybGVuKGJ1ZmZlciks
IE5VTEwsIDAsICh2b2lkICopJnNuZGluZm8sCi0JCSAgICAgICAgICAgICAgICAgIChzb2NrbGVu
X3Qpc2l6ZW9mKHN0cnVjdCBzY3RwX3NuZGluZm8pLCBTQ1RQX1NFTkRWX1NORElORk8sIDApIDwg
MCkgewotCQkJcGVycm9yKCJ1c3JzY3RwX3NlbmR2Iik7Ci0JCX0KLQkJdXNyc2N0cF9jbG9zZShj
b25uX3NvY2spOwotCX0KLQl1c3JzY3RwX2Nsb3NlKHNvY2spOwotCXdoaWxlICh1c3JzY3RwX2Zp
bmlzaCgpICE9IDApIHsKLSNpZmRlZiBfV0lOMzIKLQkJU2xlZXAoU0xFRVAgKiAxMDAwKTsKLSNl
bHNlCi0JCXNsZWVwKFNMRUVQKTsKLSNlbmRpZgotCX0KLQlyZXR1cm4gKDApOwotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3Jz
Y3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvZGlzY2FyZF9zZXJ2ZXIuYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dy
YW1zL2Rpc2NhcmRfc2VydmVyLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5ODQ2
ZGRlZDA0Yi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2Rpc2NhcmRfc2Vy
dmVyLmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDEzIE1pY2hhZWwgVHVleGVuCi0gKgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIHByb2plY3Qgbm9yIHRoZSBu
YW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCi0gKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKLSAqICAgIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIFBST0pFQ1QgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0gKiBBUkUgRElTQ0xB
SU1FRC4JSU4gTk8gRVZFTlQgU0hBTEwgVEhFIFBST0pFQ1QgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRQotICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0gKiBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikKLSAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0gKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0gKiBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GCi0gKiBTVUNIIERBTUFHRS4KLSAqLwotCi0vKgotICogVXNhZ2U6IGRpc2NhcmRf
c2VydmVyIFtsb2NhbF9lbmNhcHNfcG9ydF0gW3JlbW90ZV9lbmNhcHNfcG9ydF0KLSAqIAotICog
RXhhbXBsZQotICogU2VydmVyOiAkIC4vZGlzY2FyZF9zZXJ2ZXIgMTExMTEgMjIyMjIKLSAqIENs
aWVudDogJCAuL2NsaWVudCAxMjcuMC4wLjEgOSAwIDIyMjIyIDExMTExCi0gKi8KLQotI2lmZGVm
IF9XSU4zMgotI2RlZmluZSBfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUwotI2VuZGlmCi0jaW5jbHVk
ZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNp
bmNsdWRlIDxzdGRhcmcuaD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZm5kZWYgX1dJTjMy
Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotI2luY2x1ZGUg
PG5ldGluZXQvaW4uaD4KLSNpbmNsdWRlIDxhcnBhL2luZXQuaD4KLSNlbmRpZgotI2luY2x1ZGUg
PHVzcnNjdHAuaD4KLQotI2RlZmluZSBQT1JUIDkKLSNkZWZpbmUgQlVGRkVSX1NJWkUgMTAyNDAK
LSNkZWZpbmUgU0xFRVAgMQotCi1jb25zdCBpbnQgdXNlX2NiID0gMDsKLQotc3RhdGljIGludAot
cmVjZWl2ZV9jYihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCB1bmlvbiBzY3RwX3NvY2tzdG9yZSBhZGRy
LCB2b2lkICpkYXRhLAotICAgICAgICAgICBzaXplX3QgZGF0YWxlbiwgc3RydWN0IHNjdHBfcmN2
aW5mbyByY3YsIGludCBmbGFncywgdm9pZCAqdWxwX2luZm8pCi17Ci0JY2hhciBuYW1lYnVmW0lO
RVQ2X0FERFJTVFJMRU5dOwotCWNvbnN0IGNoYXIgKm5hbWU7Ci0JdWludDE2X3QgcG9ydDsKLQot
CWlmIChkYXRhKSB7Ci0JCWlmIChmbGFncyAmIE1TR19OT1RJRklDQVRJT04pIHsKLQkJCXByaW50
ZigiTm90aWZpY2F0aW9uIG9mIGxlbmd0aCAlZCByZWNlaXZlZC5cbiIsIChpbnQpZGF0YWxlbik7
Ci0JCX0gZWxzZSB7Ci0JCQlzd2l0Y2ggKGFkZHIuc2Euc2FfZmFtaWx5KSB7Ci0jaWZkZWYgSU5F
VAotCQkJY2FzZSBBRl9JTkVUOgotCQkJCW5hbWUgPSBpbmV0X250b3AoQUZfSU5FVCwgJmFkZHIu
c2luLnNpbl9hZGRyLCBuYW1lYnVmLCBJTkVUX0FERFJTVFJMRU4pOwotCQkJCXBvcnQgPSBudG9o
cyhhZGRyLnNpbi5zaW5fcG9ydCk7Ci0JCQkJYnJlYWs7Ci0jZW5kaWYKLSNpZmRlZiBJTkVUNgot
CQkJY2FzZSBBRl9JTkVUNjoKLQkJCQluYW1lID0gaW5ldF9udG9wKEFGX0lORVQ2LCAmYWRkci5z
aW42LnNpbjZfYWRkciwgbmFtZWJ1ZiwgSU5FVDZfQUREUlNUUkxFTiksCi0JCQkJcG9ydCA9IG50
b2hzKGFkZHIuc2luNi5zaW42X3BvcnQpOwotCQkJCWJyZWFrOwotI2VuZGlmCi0JCQljYXNlIEFG
X0NPTk46Ci0jaWZkZWYgX1dJTjMyCi0JCQkJX3NucHJpbnRmKG5hbWVidWYsIElORVQ2X0FERFJT
VFJMRU4sICIlcCIsIGFkZHIuc2Nvbm4uc2Nvbm5fYWRkcik7Ci0jZWxzZQotCQkJCXNucHJpbnRm
KG5hbWVidWYsIElORVQ2X0FERFJTVFJMRU4sICIlcCIsIGFkZHIuc2Nvbm4uc2Nvbm5fYWRkcik7
Ci0jZW5kaWYKLQkJCQluYW1lID0gbmFtZWJ1ZjsKLQkJCQlwb3J0ID0gbnRvaHMoYWRkci5zY29u
bi5zY29ubl9wb3J0KTsKLQkJCQlicmVhazsKLQkJCWRlZmF1bHQ6Ci0JCQkJbmFtZSA9IE5VTEw7
Ci0JCQkJcG9ydCA9IDA7Ci0JCQkJYnJlYWs7Ci0JCQl9Ci0JCQlwcmludGYoIk1zZyBvZiBsZW5n
dGggJWQgcmVjZWl2ZWQgZnJvbSAlczoldSBvbiBzdHJlYW0gJXUgd2l0aCBTU04gJXUgYW5kIFRT
TiAldSwgUFBJRCAldSwgY29udGV4dCAldS5cbiIsCi0JCQkgICAgICAgKGludClkYXRhbGVuLAot
CQkJICAgICAgIG5hbWUsCi0JCQkgICAgICAgcG9ydCwKLQkJCSAgICAgICByY3YucmN2X3NpZCwK
LQkJCSAgICAgICByY3YucmN2X3NzbiwKLQkJCSAgICAgICByY3YucmN2X3RzbiwKLQkJCSAgICAg
ICBudG9obChyY3YucmN2X3BwaWQpLAotCQkJICAgICAgIHJjdi5yY3ZfY29udGV4dCk7Ci0JCX0K
LQkJZnJlZShkYXRhKTsKLQl9Ci0JcmV0dXJuICgxKTsKLX0KLQotdm9pZAotZGVidWdfcHJpbnRm
KGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQotewotCXZhX2xpc3QgYXA7Ci0KLQl2YV9zdGFydChh
cCwgZm9ybWF0KTsKLQl2cHJpbnRmKGZvcm1hdCwgYXApOwotCXZhX2VuZChhcCk7Ci19Ci0KLWlu
dAotbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotewotCXN0cnVjdCBzb2NrZXQgKnNvY2s7
Ci0Jc3RydWN0IHNvY2thZGRyX2luNiBhZGRyOwotCXN0cnVjdCBzY3RwX3VkcGVuY2FwcyBlbmNh
cHM7Ci0Jc3RydWN0IHNjdHBfZXZlbnQgZXZlbnQ7Ci0JdWludDE2X3QgZXZlbnRfdHlwZXNbXSA9
IHtTQ1RQX0FTU09DX0NIQU5HRSwKLQkgICAgICAgICAgICAgICAgICAgICAgICAgIFNDVFBfUEVF
Ul9BRERSX0NIQU5HRSwKLQkgICAgICAgICAgICAgICAgICAgICAgICAgIFNDVFBfUkVNT1RFX0VS
Uk9SLAotCSAgICAgICAgICAgICAgICAgICAgICAgICAgU0NUUF9TSFVURE9XTl9FVkVOVCwKLQkg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNDVFBfQURBUFRBVElPTl9JTkRJQ0FUSU9OLAotCSAg
ICAgICAgICAgICAgICAgICAgICAgICAgU0NUUF9QQVJUSUFMX0RFTElWRVJZX0VWRU5UfTsKLQl1
bnNpZ25lZCBpbnQgaTsKLQlzdHJ1Y3Qgc2N0cF9hc3NvY192YWx1ZSBhdjsKLQljb25zdCBpbnQg
b24gPSAxOwotCXNzaXplX3QgbjsKLQlpbnQgZmxhZ3M7Ci0Jc29ja2xlbl90IGZyb21fbGVuOwot
CWNoYXIgYnVmZmVyW0JVRkZFUl9TSVpFXTsKLQljaGFyIG5hbWVbSU5FVDZfQUREUlNUUkxFTl07
Ci0Jc29ja2xlbl90IGluZm9sZW47Ci0Jc3RydWN0IHNjdHBfcmN2aW5mbyByY3ZfaW5mbzsKLQl1
bnNpZ25lZCBpbnQgaW5mb3R5cGU7Ci0KLQlpZiAoYXJnYyA+IDEpIHsKLQkJdXNyc2N0cF9pbml0
KGF0b2koYXJndlsxXSksIE5VTEwsIGRlYnVnX3ByaW50Zik7Ci0JfSBlbHNlIHsKLQkJdXNyc2N0
cF9pbml0KDk4OTksIE5VTEwsIGRlYnVnX3ByaW50Zik7Ci0JfQotI2lmZGVmIFNDVFBfREVCVUcK
LQl1c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9kZWJ1Z19vbihTQ1RQX0RFQlVHX0FMTCk7Ci0jZW5k
aWYKLQl1c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9ibGFja2hvbGUoMik7Ci0KLQlpZiAoKHNvY2sg
PSB1c3JzY3RwX3NvY2tldChBRl9JTkVUNiwgU09DS19TRVFQQUNLRVQsIElQUFJPVE9fU0NUUCwg
dXNlX2NiP3JlY2VpdmVfY2I6TlVMTCwgTlVMTCwgMCwgTlVMTCkpID09IE5VTEwpIHsKLQkJcGVy
cm9yKCJ1c3JzY3RwX3NvY2tldCIpOwotCX0KLQlpZiAodXNyc2N0cF9zZXRzb2Nrb3B0KHNvY2ss
IElQUFJPVE9fU0NUUCwgU0NUUF9JX1dBTlRfTUFQUEVEX1Y0X0FERFIsIChjb25zdCB2b2lkKikm
b24sIChzb2NrbGVuX3Qpc2l6ZW9mKGludCkpIDwgMCkgewotCQlwZXJyb3IoInVzcnNjdHBfc2V0
c29ja29wdCBTQ1RQX0lfV0FOVF9NQVBQRURfVjRfQUREUiIpOwotCX0KLQltZW1zZXQoJmF2LCAw
LCBzaXplb2Yoc3RydWN0IHNjdHBfYXNzb2NfdmFsdWUpKTsKLQlhdi5hc3NvY19pZCA9IFNDVFBf
QUxMX0FTU09DOwotCWF2LmFzc29jX3ZhbHVlID0gNDc7Ci0KLQlpZiAodXNyc2N0cF9zZXRzb2Nr
b3B0KHNvY2ssIElQUFJPVE9fU0NUUCwgU0NUUF9DT05URVhULCAoY29uc3Qgdm9pZCopJmF2LCAo
c29ja2xlbl90KXNpemVvZihzdHJ1Y3Qgc2N0cF9hc3NvY192YWx1ZSkpIDwgMCkgewotCQlwZXJy
b3IoInVzcnNjdHBfc2V0c29ja29wdCBTQ1RQX0NPTlRFWFQiKTsKLQl9Ci0JaWYgKHVzcnNjdHBf
c2V0c29ja29wdChzb2NrLCBJUFBST1RPX1NDVFAsIFNDVFBfUkVDVlJDVklORk8sICZvbiwgc2l6
ZW9mKGludCkpIDwgMCkgewotCQlwZXJyb3IoInVzcnNjdHBfc2V0c29ja29wdCBTQ1RQX1JFQ1ZS
Q1ZJTkZPIik7Ci0JfQotCWlmIChhcmdjID4gMikgewotCQltZW1zZXQoJmVuY2FwcywgMCwgc2l6
ZW9mKHN0cnVjdCBzY3RwX3VkcGVuY2FwcykpOwotCQllbmNhcHMuc3VlX2FkZHJlc3Muc3NfZmFt
aWx5ID0gQUZfSU5FVDY7Ci0JCWVuY2Fwcy5zdWVfcG9ydCA9IGh0b25zKGF0b2koYXJndlsyXSkp
OwotCQlpZiAodXNyc2N0cF9zZXRzb2Nrb3B0KHNvY2ssIElQUFJPVE9fU0NUUCwgU0NUUF9SRU1P
VEVfVURQX0VOQ0FQU19QT1JULCAoY29uc3Qgdm9pZCopJmVuY2FwcywgKHNvY2tsZW5fdClzaXpl
b2Yoc3RydWN0IHNjdHBfdWRwZW5jYXBzKSkgPCAwKSB7Ci0JCQlwZXJyb3IoInVzcnNjdHBfc2V0
c29ja29wdCBTQ1RQX1JFTU9URV9VRFBfRU5DQVBTX1BPUlQiKTsKLQkJfQotCX0KLQltZW1zZXQo
JmV2ZW50LCAwLCBzaXplb2YoZXZlbnQpKTsKLQlldmVudC5zZV9hc3NvY19pZCA9IFNDVFBfRlVU
VVJFX0FTU09DOwotCWV2ZW50LnNlX29uID0gMTsKLQlmb3IgKGkgPSAwOyBpIDwgKHVuc2lnbmVk
IGludCkoc2l6ZW9mKGV2ZW50X3R5cGVzKS9zaXplb2YodWludDE2X3QpKTsgaSsrKSB7Ci0JCWV2
ZW50LnNlX3R5cGUgPSBldmVudF90eXBlc1tpXTsKLQkJaWYgKHVzcnNjdHBfc2V0c29ja29wdChz
b2NrLCBJUFBST1RPX1NDVFAsIFNDVFBfRVZFTlQsICZldmVudCwgc2l6ZW9mKHN0cnVjdCBzY3Rw
X2V2ZW50KSkgPCAwKSB7Ci0JCQlwZXJyb3IoInVzcnNjdHBfc2V0c29ja29wdCBTQ1RQX0VWRU5U
Iik7Ci0JCX0KLQl9Ci0JbWVtc2V0KCh2b2lkICopJmFkZHIsIDAsIHNpemVvZihzdHJ1Y3Qgc29j
a2FkZHJfaW42KSk7Ci0jaWZkZWYgSEFWRV9TSU42X0xFTgotCWFkZHIuc2luNl9sZW4gPSBzaXpl
b2Yoc3RydWN0IHNvY2thZGRyX2luNik7Ci0jZW5kaWYKLQlhZGRyLnNpbjZfZmFtaWx5ID0gQUZf
SU5FVDY7Ci0JYWRkci5zaW42X3BvcnQgPSBodG9ucyhQT1JUKTsKLQlhZGRyLnNpbjZfYWRkciA9
IGluNmFkZHJfYW55OwotCWlmICh1c3JzY3RwX2JpbmQoc29jaywgKHN0cnVjdCBzb2NrYWRkciAq
KSZhZGRyLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNikpIDwgMCkgewotCQlwZXJyb3IoInVz
cnNjdHBfYmluZCIpOwotCX0KLQlpZiAodXNyc2N0cF9saXN0ZW4oc29jaywgMSkgPCAwKSB7Ci0J
CXBlcnJvcigidXNyc2N0cF9saXN0ZW4iKTsKLQl9Ci0Jd2hpbGUgKDEpIHsKLQkJaWYgKHVzZV9j
YikgewotI2lmZGVmIF9XSU4zMgotCQkJU2xlZXAoU0xFRVAgKiAxMDAwKTsKLSNlbHNlCi0JCQlz
bGVlcChTTEVFUCk7Ci0jZW5kaWYKLQkJfSBlbHNlIHsKLQkJCWZyb21fbGVuID0gKHNvY2tsZW5f
dClzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNik7Ci0JCQlmbGFncyA9IDA7Ci0JCQlpbmZvbGVu
ID0gKHNvY2tsZW5fdClzaXplb2Yoc3RydWN0IHNjdHBfcmN2aW5mbyk7Ci0JCQluID0gdXNyc2N0
cF9yZWN2dihzb2NrLCAodm9pZCopYnVmZmVyLCBCVUZGRVJfU0laRSwgKHN0cnVjdCBzb2NrYWRk
ciAqKSAmYWRkciwgJmZyb21fbGVuLCAodm9pZCAqKSZyY3ZfaW5mbywKLQkJCSAgICAgICAgICAg
ICAgICAgICZpbmZvbGVuLCAmaW5mb3R5cGUsICZmbGFncyk7Ci0JCQlpZiAobiA+IDApIHsKLQkJ
CQlpZiAoZmxhZ3MgJiBNU0dfTk9USUZJQ0FUSU9OKSB7Ci0JCQkJCXByaW50ZigiTm90aWZpY2F0
aW9uIG9mIGxlbmd0aCAlbGx1IHJlY2VpdmVkLlxuIiwgKHVuc2lnbmVkIGxvbmcgbG9uZyluKTsK
LQkJCQl9IGVsc2UgewotCQkJCQlpZiAoaW5mb3R5cGUgPT0gU0NUUF9SRUNWVl9SQ1ZJTkZPKSB7
Ci0JCQkJCQlwcmludGYoIk1zZyBvZiBsZW5ndGggJWxsdSByZWNlaXZlZCBmcm9tICVzOiV1IG9u
IHN0cmVhbSAldSB3aXRoIFNTTiAldSBhbmQgVFNOICV1LCBQUElEICV1LCBjb250ZXh0ICV1LCBj
b21wbGV0ZSAlZC5cbiIsCi0JCQkJCQkgICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpbiwKLQkJ
CQkJCSAgICAgICAgaW5ldF9udG9wKEFGX0lORVQ2LCAmYWRkci5zaW42X2FkZHIsIG5hbWUsIElO
RVQ2X0FERFJTVFJMRU4pLCBudG9ocyhhZGRyLnNpbjZfcG9ydCksCi0JCQkJCQkgICAgICAgIHJj
dl9pbmZvLnJjdl9zaWQsCi0JCQkJCQkgICAgICAgIHJjdl9pbmZvLnJjdl9zc24sCi0JCQkJCQkg
ICAgICAgIHJjdl9pbmZvLnJjdl90c24sCi0JCQkJCQkgICAgICAgIG50b2hsKHJjdl9pbmZvLnJj
dl9wcGlkKSwKLQkJCQkJCSAgICAgICAgcmN2X2luZm8ucmN2X2NvbnRleHQsCi0JCQkJCQkgICAg
ICAgIChmbGFncyAmIE1TR19FT1IpID8gMSA6IDApOwotCQkJCQl9IGVsc2UgewotCQkJCQkJcHJp
bnRmKCJNc2cgb2YgbGVuZ3RoICVsbHUgcmVjZWl2ZWQgZnJvbSAlczoldSwgY29tcGxldGUgJWQu
XG4iLAotCQkJCQkJICAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKW4sCi0JCQkJCQkgICAgICAg
IGluZXRfbnRvcChBRl9JTkVUNiwgJmFkZHIuc2luNl9hZGRyLCBuYW1lLCBJTkVUNl9BRERSU1RS
TEVOKSwgbnRvaHMoYWRkci5zaW42X3BvcnQpLAotCQkJCQkJICAgICAgICAoZmxhZ3MgJiBNU0df
RU9SKSA/IDEgOiAwKTsKLQkJCQkJfQotCQkJCX0KLQkJCX0gZWxzZSB7Ci0JCQkJYnJlYWs7Ci0J
CQl9Ci0JCX0KLQl9Ci0JdXNyc2N0cF9jbG9zZShzb2NrKTsKLQl3aGlsZSAodXNyc2N0cF9maW5p
c2goKSAhPSAwKSB7Ci0jaWZkZWYgX1dJTjMyCi0JCVNsZWVwKFNMRUVQICogMTAwMCk7Ci0jZWxz
ZQotCQlzbGVlcChTTEVFUCk7Ci0jZW5kaWYKLQl9Ci0JcmV0dXJuICgwKTsKLX0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0
cC91c3JzY3RwbGliL3Byb2dyYW1zL2VjaG9fc2VydmVyLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9l
Y2hvX3NlcnZlci5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NGYxMmM1NmQ5OTEu
LjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9lY2hvX3NlcnZlci5jCisrKyAv
ZGV2L251bGwKQEAgLTEsMjg0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAx
MyBNaWNoYWVsIFR1ZXhlbgotICoKLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBwcm9qZWN0IG5vciB0aGUgbmFtZXMgb2YgaXRz
IGNvbnRyaWJ1dG9ycwotICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0gKiAgICB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBQUk9KRUNUIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotICogQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotICogQVJFIERJU0NMQUlNRUQuCUlOIE5P
IEVWRU5UIFNIQUxMIFRIRSBQUk9KRUNUIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSAqIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwotICogT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0gKiBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVAotICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotICogT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgot
ICogU1VDSCBEQU1BR0UuCi0gKi8KLQotLyoKLSAqIFVzYWdlOiBlY2hvX3NlcnZlciBbbG9jYWxf
ZW5jYXBzX3BvcnRdIFtyZW1vdGVfZW5jYXBzX3BvcnRdCi0gKiAKLSAqIEV4YW1wbGUKLSAqIFNl
cnZlcjogJCAuL2VjaG9fc2VydmVyIDExMTExIDIyMjIyCi0gKiBDbGllbnQ6ICQgLi9jbGllbnQg
MTI3LjAuMC4xIDcgMCAyMjIyMiAxMTExMQotICovCi0KLSNpZmRlZiBfV0lOMzIKLSNkZWZpbmUg
X0NSVF9TRUNVUkVfTk9fV0FSTklOR1MKLSNlbmRpZgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5j
bHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8c3RkYXJnLmg+
Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWZuZGVmIF9XSU4zMgotI2luY2x1ZGUgPHVuaXN0
ZC5oPgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0j
aW5jbHVkZSA8YXJwYS9pbmV0Lmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDx1c3JzY3RwLmg+Ci0KLSNk
ZWZpbmUgUE9SVCA3Ci0jZGVmaW5lIEJVRkZFUl9TSVpFIDEwMjQwCi0jZGVmaW5lIFNMRUVQIDEK
LQotY29uc3QgaW50IHVzZV9jYiA9IDA7Ci0KLXN0YXRpYyBpbnQKLXJlY2VpdmVfY2Ioc3RydWN0
IHNvY2tldCAqc29jaywgdW5pb24gc2N0cF9zb2Nrc3RvcmUgYWRkciwgdm9pZCAqZGF0YSwKLSAg
ICAgICAgICAgc2l6ZV90IGRhdGFsZW4sIHN0cnVjdCBzY3RwX3JjdmluZm8gcmN2LCBpbnQgZmxh
Z3MsIHZvaWQgKnVscF9pbmZvKQotewotCWNoYXIgbmFtZWJ1ZltJTkVUNl9BRERSU1RSTEVOXTsK
LQljb25zdCBjaGFyICpuYW1lOwotCXVpbnQxNl90IHBvcnQ7Ci0KLQlpZiAoZGF0YSkgewotCQlp
ZiAoZmxhZ3MgJiBNU0dfTk9USUZJQ0FUSU9OKSB7Ci0JCQlwcmludGYoIk5vdGlmaWNhdGlvbiBv
ZiBsZW5ndGggJWQgcmVjZWl2ZWQuXG4iLCAoaW50KWRhdGFsZW4pOwotCQl9IGVsc2UgewotCQkJ
c3dpdGNoIChhZGRyLnNhLnNhX2ZhbWlseSkgewotI2lmZGVmIElORVQKLQkJCWNhc2UgQUZfSU5F
VDoKLQkJCQluYW1lID0gaW5ldF9udG9wKEFGX0lORVQsICZhZGRyLnNpbi5zaW5fYWRkciwgbmFt
ZWJ1ZiwgSU5FVF9BRERSU1RSTEVOKTsKLQkJCQlwb3J0ID0gbnRvaHMoYWRkci5zaW4uc2luX3Bv
cnQpOwotCQkJCWJyZWFrOwotI2VuZGlmCi0jaWZkZWYgSU5FVDYKLQkJCWNhc2UgQUZfSU5FVDY6
Ci0JCQkJbmFtZSA9IGluZXRfbnRvcChBRl9JTkVUNiwgJmFkZHIuc2luNi5zaW42X2FkZHIsIG5h
bWVidWYsIElORVQ2X0FERFJTVFJMRU4pLAotCQkJCXBvcnQgPSBudG9ocyhhZGRyLnNpbjYuc2lu
Nl9wb3J0KTsKLQkJCQlicmVhazsKLSNlbmRpZgotCQkJY2FzZSBBRl9DT05OOgotI2lmZGVmIF9X
SU4zMgotCQkJCV9zbnByaW50ZihuYW1lYnVmLCBJTkVUNl9BRERSU1RSTEVOLCAiJXAiLCBhZGRy
LnNjb25uLnNjb25uX2FkZHIpOwotI2Vsc2UKLQkJCQlzbnByaW50ZihuYW1lYnVmLCBJTkVUNl9B
RERSU1RSTEVOLCAiJXAiLCBhZGRyLnNjb25uLnNjb25uX2FkZHIpOwotI2VuZGlmCi0JCQkJbmFt
ZSA9IG5hbWVidWY7Ci0JCQkJcG9ydCA9IG50b2hzKGFkZHIuc2Nvbm4uc2Nvbm5fcG9ydCk7Ci0J
CQkJYnJlYWs7Ci0JCQlkZWZhdWx0OgotCQkJCW5hbWUgPSBOVUxMOwotCQkJCXBvcnQgPSAwOwot
CQkJCWJyZWFrOwotCQkJfQotCQkJcHJpbnRmKCJNc2cgb2YgbGVuZ3RoICVkIHJlY2VpdmVkIGZy
b20gJXM6JXUgb24gc3RyZWFtICV1IHdpdGggU1NOICV1IGFuZCBUU04gJXUsIFBQSUQgJXUsIGNv
bnRleHQgJXUuXG4iLAotCQkJICAgICAgIChpbnQpZGF0YWxlbiwKLQkJCSAgICAgICBuYW1lLAot
CQkJICAgICAgIHBvcnQsCi0JCQkgICAgICAgcmN2LnJjdl9zaWQsCi0JCQkgICAgICAgcmN2LnJj
dl9zc24sCi0JCQkgICAgICAgcmN2LnJjdl90c24sCi0JCQkgICAgICAgbnRvaGwocmN2LnJjdl9w
cGlkKSwKLQkJCSAgICAgICByY3YucmN2X2NvbnRleHQpOwotCQkJaWYgKGZsYWdzICYgTVNHX0VP
UikgewotCQkJCXN0cnVjdCBzY3RwX3NuZGluZm8gc25kX2luZm87Ci0KLQkJCQlzbmRfaW5mby5z
bmRfc2lkID0gcmN2LnJjdl9zaWQ7Ci0JCQkJc25kX2luZm8uc25kX2ZsYWdzID0gMDsKLQkJCQlp
ZiAocmN2LnJjdl9mbGFncyAmIFNDVFBfVU5PUkRFUkVEKSB7Ci0JCQkJCXNuZF9pbmZvLnNuZF9m
bGFncyB8PSBTQ1RQX1VOT1JERVJFRDsKLQkJCQl9Ci0JCQkJc25kX2luZm8uc25kX3BwaWQgPSBy
Y3YucmN2X3BwaWQ7Ci0JCQkJc25kX2luZm8uc25kX2NvbnRleHQgPSAwOwotCQkJCXNuZF9pbmZv
LnNuZF9hc3NvY19pZCA9IHJjdi5yY3ZfYXNzb2NfaWQ7Ci0JCQkJaWYgKHVzcnNjdHBfc2VuZHYo
c29jaywgZGF0YSwgZGF0YWxlbiwgTlVMTCwgMCwgJnNuZF9pbmZvLCBzaXplb2Yoc3RydWN0IHNj
dHBfc25kaW5mbyksIFNDVFBfU0VORFZfU05ESU5GTywgMCkgPCAwKSB7Ci0JCQkJCXBlcnJvcigi
c2N0cF9zZW5kdiIpOwotCQkJCX0KLQkJCX0KLQkJfQotCQlmcmVlKGRhdGEpOwotCX0KLQlyZXR1
cm4gKDEpOwotfQotCi12b2lkCi1kZWJ1Z19wcmludGYoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4p
Ci17Ci0JdmFfbGlzdCBhcDsKLQotCXZhX3N0YXJ0KGFwLCBmb3JtYXQpOwotCXZwcmludGYoZm9y
bWF0LCBhcCk7Ci0JdmFfZW5kKGFwKTsKLX0KLQotaW50Ci1tYWluKGludCBhcmdjLCBjaGFyICph
cmd2W10pCi17Ci0Jc3RydWN0IHNvY2tldCAqc29jazsKLQlzdHJ1Y3Qgc29ja2FkZHJfaW42IGFk
ZHI7Ci0Jc3RydWN0IHNjdHBfdWRwZW5jYXBzIGVuY2FwczsKLQlzdHJ1Y3Qgc2N0cF9ldmVudCBl
dmVudDsKLQl1aW50MTZfdCBldmVudF90eXBlc1tdID0ge1NDVFBfQVNTT0NfQ0hBTkdFLAotCSAg
ICAgICAgICAgICAgICAgICAgICAgICAgU0NUUF9QRUVSX0FERFJfQ0hBTkdFLAotCSAgICAgICAg
ICAgICAgICAgICAgICAgICAgU0NUUF9SRU1PVEVfRVJST1IsCi0JICAgICAgICAgICAgICAgICAg
ICAgICAgICBTQ1RQX1NIVVRET1dOX0VWRU5ULAotCSAgICAgICAgICAgICAgICAgICAgICAgICAg
U0NUUF9BREFQVEFUSU9OX0lORElDQVRJT04sCi0JICAgICAgICAgICAgICAgICAgICAgICAgICBT
Q1RQX1BBUlRJQUxfREVMSVZFUllfRVZFTlR9OwotCXVuc2lnbmVkIGludCBpOwotCXN0cnVjdCBz
Y3RwX2Fzc29jX3ZhbHVlIGF2OwotCWNvbnN0IGludCBvbiA9IDE7Ci0Jc3NpemVfdCBuOwotCWlu
dCBmbGFnczsKLQlzb2NrbGVuX3QgZnJvbV9sZW47Ci0JY2hhciBidWZmZXJbQlVGRkVSX1NJWkVd
OwotCWNoYXIgbmFtZVtJTkVUNl9BRERSU1RSTEVOXTsKLQlzb2NrbGVuX3QgaW5mb2xlbjsKLQlz
dHJ1Y3Qgc2N0cF9yY3ZpbmZvIHJjdl9pbmZvOwotCXVuc2lnbmVkIGludCBpbmZvdHlwZTsKLQot
CWlmIChhcmdjID4gMSkgewotCQl1c3JzY3RwX2luaXQoYXRvaShhcmd2WzFdKSwgTlVMTCwgZGVi
dWdfcHJpbnRmKTsKLQl9IGVsc2UgewotCQl1c3JzY3RwX2luaXQoOTg5OSwgTlVMTCwgZGVidWdf
cHJpbnRmKTsKLQl9Ci0jaWZkZWYgU0NUUF9ERUJVRwotCXVzcnNjdHBfc3lzY3RsX3NldF9zY3Rw
X2RlYnVnX29uKFNDVFBfREVCVUdfTk9ORSk7Ci0jZW5kaWYKLQl1c3JzY3RwX3N5c2N0bF9zZXRf
c2N0cF9ibGFja2hvbGUoMik7Ci0KLQlpZiAoKHNvY2sgPSB1c3JzY3RwX3NvY2tldChBRl9JTkVU
NiwgU09DS19TRVFQQUNLRVQsIElQUFJPVE9fU0NUUCwgdXNlX2NiP3JlY2VpdmVfY2I6TlVMTCwg
TlVMTCwgMCwgTlVMTCkpID09IE5VTEwpIHsKLQkJcGVycm9yKCJ1c3JzY3RwX3NvY2tldCIpOwot
CX0KLQlpZiAodXNyc2N0cF9zZXRzb2Nrb3B0KHNvY2ssIElQUFJPVE9fU0NUUCwgU0NUUF9JX1dB
TlRfTUFQUEVEX1Y0X0FERFIsIChjb25zdCB2b2lkKikmb24sIChzb2NrbGVuX3Qpc2l6ZW9mKGlu
dCkpIDwgMCkgewotCQlwZXJyb3IoInVzcnNjdHBfc2V0c29ja29wdCBTQ1RQX0lfV0FOVF9NQVBQ
RURfVjRfQUREUiIpOwotCX0KLQltZW1zZXQoJmF2LCAwLCBzaXplb2Yoc3RydWN0IHNjdHBfYXNz
b2NfdmFsdWUpKTsKLQlhdi5hc3NvY19pZCA9IFNDVFBfQUxMX0FTU09DOwotCWF2LmFzc29jX3Zh
bHVlID0gNDc7Ci0KLQlpZiAodXNyc2N0cF9zZXRzb2Nrb3B0KHNvY2ssIElQUFJPVE9fU0NUUCwg
U0NUUF9DT05URVhULCAoY29uc3Qgdm9pZCopJmF2LCAoc29ja2xlbl90KXNpemVvZihzdHJ1Y3Qg
c2N0cF9hc3NvY192YWx1ZSkpIDwgMCkgewotCQlwZXJyb3IoInVzcnNjdHBfc2V0c29ja29wdCBT
Q1RQX0NPTlRFWFQiKTsKLQl9Ci0JaWYgKHVzcnNjdHBfc2V0c29ja29wdChzb2NrLCBJUFBST1RP
X1NDVFAsIFNDVFBfUkVDVlJDVklORk8sICZvbiwgc2l6ZW9mKGludCkpIDwgMCkgewotCQlwZXJy
b3IoInVzcnNjdHBfc2V0c29ja29wdCBTQ1RQX1JFQ1ZSQ1ZJTkZPIik7Ci0JfQotCWlmIChhcmdj
ID4gMikgewotCQltZW1zZXQoJmVuY2FwcywgMCwgc2l6ZW9mKHN0cnVjdCBzY3RwX3VkcGVuY2Fw
cykpOwotCQllbmNhcHMuc3VlX2FkZHJlc3Muc3NfZmFtaWx5ID0gQUZfSU5FVDY7Ci0JCWVuY2Fw
cy5zdWVfcG9ydCA9IGh0b25zKGF0b2koYXJndlsyXSkpOwotCQlpZiAodXNyc2N0cF9zZXRzb2Nr
b3B0KHNvY2ssIElQUFJPVE9fU0NUUCwgU0NUUF9SRU1PVEVfVURQX0VOQ0FQU19QT1JULCAoY29u
c3Qgdm9pZCopJmVuY2FwcywgKHNvY2tsZW5fdClzaXplb2Yoc3RydWN0IHNjdHBfdWRwZW5jYXBz
KSkgPCAwKSB7Ci0JCQlwZXJyb3IoInVzcnNjdHBfc2V0c29ja29wdCBTQ1RQX1JFTU9URV9VRFBf
RU5DQVBTX1BPUlQiKTsKLQkJfQotCX0KLQltZW1zZXQoJmV2ZW50LCAwLCBzaXplb2YoZXZlbnQp
KTsKLQlldmVudC5zZV9hc3NvY19pZCA9IFNDVFBfRlVUVVJFX0FTU09DOwotCWV2ZW50LnNlX29u
ID0gMTsKLQlmb3IgKGkgPSAwOyBpIDwgKHVuc2lnbmVkIGludCkoc2l6ZW9mKGV2ZW50X3R5cGVz
KS9zaXplb2YodWludDE2X3QpKTsgaSsrKSB7Ci0JCWV2ZW50LnNlX3R5cGUgPSBldmVudF90eXBl
c1tpXTsKLQkJaWYgKHVzcnNjdHBfc2V0c29ja29wdChzb2NrLCBJUFBST1RPX1NDVFAsIFNDVFBf
RVZFTlQsICZldmVudCwgc2l6ZW9mKHN0cnVjdCBzY3RwX2V2ZW50KSkgPCAwKSB7Ci0JCQlwZXJy
b3IoInVzcnNjdHBfc2V0c29ja29wdCBTQ1RQX0VWRU5UIik7Ci0JCX0KLQl9Ci0JbWVtc2V0KCh2
b2lkICopJmFkZHIsIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSk7Ci0jaWZkZWYgSEFW
RV9TSU42X0xFTgotCWFkZHIuc2luNl9sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNik7
Ci0jZW5kaWYKLQlhZGRyLnNpbjZfZmFtaWx5ID0gQUZfSU5FVDY7Ci0JYWRkci5zaW42X3BvcnQg
PSBodG9ucyhQT1JUKTsKLQlhZGRyLnNpbjZfYWRkciA9IGluNmFkZHJfYW55OwotCWlmICh1c3Jz
Y3RwX2JpbmQoc29jaywgKHN0cnVjdCBzb2NrYWRkciAqKSZhZGRyLCBzaXplb2Yoc3RydWN0IHNv
Y2thZGRyX2luNikpIDwgMCkgewotCQlwZXJyb3IoInVzcnNjdHBfYmluZCIpOwotCX0KLQlpZiAo
dXNyc2N0cF9saXN0ZW4oc29jaywgMSkgPCAwKSB7Ci0JCXBlcnJvcigidXNyc2N0cF9saXN0ZW4i
KTsKLQl9Ci0Jd2hpbGUgKDEpIHsKLQkJaWYgKHVzZV9jYikgewotI2lmZGVmIF9XSU4zMgotCQlT
bGVlcChTTEVFUCAqIDEwMDApOwotI2Vsc2UKLQkJc2xlZXAoU0xFRVApOwotI2VuZGlmCi0JCX0g
ZWxzZSB7Ci0JCQlmcm9tX2xlbiA9IChzb2NrbGVuX3Qpc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9p
bjYpOwotCQkJZmxhZ3MgPSAwOwotCQkJaW5mb2xlbiA9IChzb2NrbGVuX3Qpc2l6ZW9mKHN0cnVj
dCBzY3RwX3JjdmluZm8pOwotCQkJbiA9IHVzcnNjdHBfcmVjdnYoc29jaywgKHZvaWQqKWJ1ZmZl
ciwgQlVGRkVSX1NJWkUsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJmFkZHIsICZmcm9tX2xlbiwgKHZv
aWQgKikmcmN2X2luZm8sCi0JCQkgICAgICAgICAgICAgICAgICAmaW5mb2xlbiwgJmluZm90eXBl
LCAmZmxhZ3MpOwotCQkJaWYgKG4gPiAwKSB7Ci0JCQkJaWYgKGZsYWdzICYgTVNHX05PVElGSUNB
VElPTikgewotCQkJCQlwcmludGYoIk5vdGlmaWNhdGlvbiBvZiBsZW5ndGggJWxsdSByZWNlaXZl
ZC5cbiIsICh1bnNpZ25lZCBsb25nIGxvbmcpbik7Ci0JCQkJfSBlbHNlIHsKLQkJCQkJaWYgKGlu
Zm90eXBlID09IFNDVFBfUkVDVlZfUkNWSU5GTykgewotCQkJCQkJcHJpbnRmKCJNc2cgb2YgbGVu
Z3RoICVsbHUgcmVjZWl2ZWQgZnJvbSAlczoldSBvbiBzdHJlYW0gJXUgd2l0aCBTU04gJXUgYW5k
IFRTTiAldSwgUFBJRCAldSwgY29udGV4dCAldSwgY29tcGxldGUgJWQuXG4iLAotCQkJCQkJICAg
ICAgICAodW5zaWduZWQgbG9uZyBsb25nKW4sCi0JCQkJCQkgICAgICAgIGluZXRfbnRvcChBRl9J
TkVUNiwgJmFkZHIuc2luNl9hZGRyLCBuYW1lLCBJTkVUNl9BRERSU1RSTEVOKSwgbnRvaHMoYWRk
ci5zaW42X3BvcnQpLAotCQkJCQkJICAgICAgICByY3ZfaW5mby5yY3Zfc2lkLAotCQkJCQkJICAg
ICAgICByY3ZfaW5mby5yY3Zfc3NuLAotCQkJCQkJICAgICAgICByY3ZfaW5mby5yY3ZfdHNuLAot
CQkJCQkJICAgICAgICBudG9obChyY3ZfaW5mby5yY3ZfcHBpZCksCi0JCQkJCQkgICAgICAgIHJj
dl9pbmZvLnJjdl9jb250ZXh0LAotCQkJCQkJICAgICAgICAoZmxhZ3MgJiBNU0dfRU9SKSA/IDEg
OiAwKTsKLQkJCQkJCWlmIChmbGFncyAmIE1TR19FT1IpIHsKLQkJCQkJCQlzdHJ1Y3Qgc2N0cF9z
bmRpbmZvIHNuZF9pbmZvOwotCi0JCQkJCQkJc25kX2luZm8uc25kX3NpZCA9IHJjdl9pbmZvLnJj
dl9zaWQ7Ci0JCQkJCQkJc25kX2luZm8uc25kX2ZsYWdzID0gMDsKLQkJCQkJCQlpZiAocmN2X2lu
Zm8ucmN2X2ZsYWdzICYgU0NUUF9VTk9SREVSRUQpIHsKLQkJCQkJCQkJc25kX2luZm8uc25kX2Zs
YWdzIHw9IFNDVFBfVU5PUkRFUkVEOwotCQkJCQkJCX0KLQkJCQkJCQlzbmRfaW5mby5zbmRfcHBp
ZCA9IHJjdl9pbmZvLnJjdl9wcGlkOwotCQkJCQkJCXNuZF9pbmZvLnNuZF9jb250ZXh0ID0gMDsK
LQkJCQkJCQlzbmRfaW5mby5zbmRfYXNzb2NfaWQgPSByY3ZfaW5mby5yY3ZfYXNzb2NfaWQ7Ci0J
CQkJCQkJaWYgKHVzcnNjdHBfc2VuZHYoc29jaywgYnVmZmVyLCAoc2l6ZV90KW4sIE5VTEwsIDAs
ICZzbmRfaW5mbywgKHNvY2tsZW5fdClzaXplb2Yoc3RydWN0IHNjdHBfc25kaW5mbyksIFNDVFBf
U0VORFZfU05ESU5GTywgMCkgPCAwKSB7Ci0JCQkJCQkJCXBlcnJvcigic2N0cF9zZW5kdiIpOwot
CQkJCQkJCX0KLQkJCQkJCX0KLQkJCQkJfSBlbHNlIHsKLQkJCQkJCXByaW50ZigiTXNnIG9mIGxl
bmd0aCAlbGx1IHJlY2VpdmVkIGZyb20gJXM6JXUsIGNvbXBsZXRlICVkLlxuIiwKLQkJCQkJCSAg
ICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZyluLAotCQkJCQkJICAgICAgICBpbmV0X250b3AoQUZf
SU5FVDYsICZhZGRyLnNpbjZfYWRkciwgbmFtZSwgSU5FVDZfQUREUlNUUkxFTiksIG50b2hzKGFk
ZHIuc2luNl9wb3J0KSwKLQkJCQkJCSAgICAgICAgKGZsYWdzICYgTVNHX0VPUikgPyAxIDogMCk7
Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9IGVsc2UgewotCQkJCWJyZWFrOwotCQkJfQotCQl9Ci0JfQot
CXVzcnNjdHBfY2xvc2Uoc29jayk7Ci0Jd2hpbGUgKHVzcnNjdHBfZmluaXNoKCkgIT0gMCkgewot
I2lmZGVmIF9XSU4zMgotCQlTbGVlcChTTEVFUCAqIDEwMDApOwotI2Vsc2UKLQkJc2xlZXAoU0xF
RVApOwotI2VuZGlmCi0JfQotCXJldHVybiAoMCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9w
cm9ncmFtcy9la3JfY2xpZW50LmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9la3JfY2xpZW50LmMKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlNWU3ZTMyZWQ2Yy4uMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0
cC91c3JzY3RwbGliL3Byb2dyYW1zL2Vrcl9jbGllbnQuYworKysgL2Rldi9udWxsCkBAIC0xLDMy
MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTMgTWljaGFlbCBUdWV4ZW4K
LSAqCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gTmVpdGhlciB0aGUg
bmFtZSBvZiB0aGUgcHJvamVjdCBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKLSAq
ICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20gdGhpcyBzb2Z0d2FyZQotICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUFJPSkVD
VCBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UKLSAqIEFSRSBESVNDTEFJTUVELglJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
UFJPSkVDVCBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0gKiBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAot
ICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMKLSAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotICogSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QK
LSAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkKLSAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSAqIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZmRlZiBfV0lOMzIKLSNkZWZpbmUgX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MKLSNl
bmRpZgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8
c3RyaW5nLmg+Ci0jaW5jbHVkZSA8c3RkYXJnLmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0j
aWZuZGVmIF9XSU4zMgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNpbmNsdWRlIDxuZXRpbmV0
L2luLmg+Ci0jaW5jbHVkZSA8YXJwYS9pbmV0Lmg+Ci0jaW5jbHVkZSA8ZXJybm8uaD4KLSNpbmNs
dWRlIDxwdGhyZWFkLmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jZWxzZQotI2luY2x1ZGUgPHdp
bnNvY2syLmg+Ci0jaW5jbHVkZSA8d3MydGNwaXAuaD4KLSNlbmRpZgotI2luY2x1ZGUgPHVzcnNj
dHAuaD4KLQotI2RlZmluZSBNQVhfUEFDS0VUX1NJWkUgKDE8PDE2KQotI2RlZmluZSBCVUZGRVJf
U0laRSA4MAotI2RlZmluZSBESVNDQVJEX1BQSUQgMzkKLQotI2lmZGVmIF9XSU4zMgotc3RhdGlj
IERXT1JEIFdJTkFQSQotI2Vsc2UKLXN0YXRpYyB2b2lkICoKLSNlbmRpZgotaGFuZGxlX3BhY2tl
dHModm9pZCAqYXJnKQotewotI2lmZGVmIF9XSU4zMgotCVNPQ0tFVCAqZmRwOwotI2Vsc2UKLQlp
bnQgKmZkcDsKLSNlbmRpZgotCWNoYXIgKmR1bXBfYnVmOwotCXNzaXplX3QgbGVuZ3RoOwotCWNo
YXIgYnVmW01BWF9QQUNLRVRfU0laRV07Ci0KLSNpZmRlZiBfV0lOMzIKLQlmZHAgPSAoU09DS0VU
ICopYXJnOwotI2Vsc2UKLQlmZHAgPSAoaW50ICopYXJnOwotI2VuZGlmCi0JZm9yICg7Oykgewot
I2lmIGRlZmluZWQoX19OZXRCU0RfXykKLQkJcHRocmVhZF90ZXN0Y2FuY2VsKCk7Ci0jZW5kaWYK
LQkJbGVuZ3RoID0gcmVjdigqZmRwLCBidWYsIE1BWF9QQUNLRVRfU0laRSwgMCk7Ci0JCWlmIChs
ZW5ndGggPiAwKSB7Ci0JCQlpZiAoKGR1bXBfYnVmID0gdXNyc2N0cF9kdW1wcGFja2V0KGJ1Ziwg
KHNpemVfdClsZW5ndGgsIFNDVFBfRFVNUF9JTkJPVU5EKSkgIT0gTlVMTCkgewotCQkJCWZwcmlu
dGYoc3RkZXJyLCAiJXMiLCBkdW1wX2J1Zik7Ci0JCQkJdXNyc2N0cF9mcmVlZHVtcGJ1ZmZlcihk
dW1wX2J1Zik7Ci0JCQl9Ci0JCQl1c3JzY3RwX2Nvbm5pbnB1dChmZHAsIGJ1ZiwgKHNpemVfdCls
ZW5ndGgsIDApOwotCQl9Ci0JfQotI2lmZGVmIF9XSU4zMgotCXJldHVybiAwOwotI2Vsc2UKLQly
ZXR1cm4gKE5VTEwpOwotI2VuZGlmCi19Ci0KLXN0YXRpYyBpbnQKLWNvbm5fb3V0cHV0KHZvaWQg
KmFkZHIsIHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbmd0aCwgdWludDhfdCB0b3MsIHVpbnQ4X3Qgc2V0
X2RmKQotewotCWNoYXIgKmR1bXBfYnVmOwotI2lmZGVmIF9XSU4zMgotCVNPQ0tFVCAqZmRwOwot
I2Vsc2UKLQlpbnQgKmZkcDsKLSNlbmRpZgotCi0jaWZkZWYgX1dJTjMyCi0JZmRwID0gKFNPQ0tF
VCAqKWFkZHI7Ci0jZWxzZQotCWZkcCA9IChpbnQgKilhZGRyOwotI2VuZGlmCi0JaWYgKChkdW1w
X2J1ZiA9IHVzcnNjdHBfZHVtcHBhY2tldChidWYsIGxlbmd0aCwgU0NUUF9EVU1QX09VVEJPVU5E
KSkgIT0gTlVMTCkgewotCQlmcHJpbnRmKHN0ZGVyciwgIiVzIiwgZHVtcF9idWYpOwotCQl1c3Jz
Y3RwX2ZyZWVkdW1wYnVmZmVyKGR1bXBfYnVmKTsKLQl9Ci0jaWZkZWYgX1dJTjMyCi0JaWYgKHNl
bmQoKmZkcCwgYnVmLCAoaW50KWxlbmd0aCwgMCkgPT0gU09DS0VUX0VSUk9SKSB7Ci0JCXJldHVy
biAoV1NBR2V0TGFzdEVycm9yKCkpOwotI2Vsc2UKLQlpZiAoc2VuZCgqZmRwLCBidWYsIGxlbmd0
aCwgMCkgPCAwKSB7Ci0JCXJldHVybiAoZXJybm8pOwotI2VuZGlmCi0JfSBlbHNlIHsKLQkJcmV0
dXJuICgwKTsKLQl9Ci19Ci0KLXN0YXRpYyBpbnQKLXJlY2VpdmVfY2Ioc3RydWN0IHNvY2tldCAq
c29jaywgdW5pb24gc2N0cF9zb2Nrc3RvcmUgYWRkciwgdm9pZCAqZGF0YSwKLSAgICAgICAgICAg
c2l6ZV90IGRhdGFsZW4sIHN0cnVjdCBzY3RwX3JjdmluZm8gcmN2LCBpbnQgZmxhZ3MsIHZvaWQg
KnVscF9pbmZvKQotewotCi0JaWYgKGRhdGEpIHsKLQkJaWYgKGZsYWdzICYgTVNHX05PVElGSUNB
VElPTikgewotCQkJcHJpbnRmKCJOb3RpZmljYXRpb24gb2YgbGVuZ3RoICVkIHJlY2VpdmVkLlxu
IiwgKGludClkYXRhbGVuKTsKLQkJfSBlbHNlIHsKLQkJCXByaW50ZigiTXNnIG9mIGxlbmd0aCAl
ZCByZWNlaXZlZCB2aWEgJXA6JXUgb24gc3RyZWFtICV1IHdpdGggU1NOICV1IGFuZCBUU04gJXUs
IFBQSUQgJXUsIGNvbnRleHQgJXUuXG4iLAotCQkJICAgICAgIChpbnQpZGF0YWxlbiwKLQkJCSAg
ICAgICBhZGRyLnNjb25uLnNjb25uX2FkZHIsCi0JCQkgICAgICAgbnRvaHMoYWRkci5zY29ubi5z
Y29ubl9wb3J0KSwKLQkJCSAgICAgICByY3YucmN2X3NpZCwKLQkJCSAgICAgICByY3YucmN2X3Nz
biwKLQkJCSAgICAgICByY3YucmN2X3RzbiwKLQkJCSAgICAgICBudG9obChyY3YucmN2X3BwaWQp
LAotCQkJICAgICAgIHJjdi5yY3ZfY29udGV4dCk7Ci0JCX0KLQkJZnJlZShkYXRhKTsKLQl9IGVs
c2UgewotCQl1c3JzY3RwX2RlcmVnaXN0ZXJfYWRkcmVzcyh1bHBfaW5mbyk7Ci0JCXVzcnNjdHBf
Y2xvc2Uoc29jayk7Ci0JfQotCXJldHVybiAoMSk7Ci19Ci0KLXZvaWQKLWRlYnVnX3ByaW50Zihj
b25zdCBjaGFyICpmb3JtYXQsIC4uLikKLXsKLQl2YV9saXN0IGFwOwotCi0JdmFfc3RhcnQoYXAs
IGZvcm1hdCk7Ci0JdnByaW50Zihmb3JtYXQsIGFwKTsKLQl2YV9lbmQoYXApOwotfQotCi1pbnQK
LW1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLXsKLQlzdHJ1Y3Qgc29ja2FkZHJfaW4gc2lu
OwotCXN0cnVjdCBzb2NrYWRkcl9jb25uIHNjb25uOwotI2lmZGVmIF9XSU4zMgotCVNPQ0tFVCBm
ZDsKLSNlbHNlCi0JaW50IGZkOwotI2VuZGlmCi0Jc3RydWN0IHNvY2tldCAqczsKLSNpZmRlZiBf
V0lOMzIKLQlIQU5ETEUgdGlkOwotI2Vsc2UKLQlwdGhyZWFkX3QgdGlkOwotI2VuZGlmCi0Jc3Ry
dWN0IHNjdHBfc25kaW5mbyBzbmRpbmZvOwotCWNoYXIgYnVmZmVyW0JVRkZFUl9TSVpFXTsKLSNp
ZmRlZiBfV0lOMzIKLQlXU0FEQVRBIHdzYURhdGE7Ci0jZW5kaWYKLQotCWlmIChhcmdjIDwgNCkg
ewotCQlwcmludGYoImVycm9yOiB0aGlzIHByb2dyYW0gcmVxdWlyZXMgNCBhcmd1bWVudHMhXG4i
KTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwotCX0KLQotI2lmZGVmIF9XSU4zMgotCWlmIChXU0FT
dGFydHVwKE1BS0VXT1JEKDIsMiksICZ3c2FEYXRhKSAhPSAwKSB7Ci0JCXByaW50ZigiV1NBU3Rh
cnR1cCBmYWlsZWRcbiIpOwotCQlleGl0IChFWElUX0ZBSUxVUkUpOwotCX0KLSNlbmRpZgotCXVz
cnNjdHBfaW5pdCgwLCBjb25uX291dHB1dCwgZGVidWdfcHJpbnRmKTsKLQkvKiBzZXQgdXAgYSBj
b25uZWN0ZWQgVURQIHNvY2tldCAqLwotI2lmZGVmIF9XSU4zMgotCWlmICgoZmQgPSBzb2NrZXQo
QUZfSU5FVCwgU09DS19ER1JBTSwgSVBQUk9UT19VRFApKSA9PSBJTlZBTElEX1NPQ0tFVCkgewot
CQlwcmludGYoInNvY2tldCgpIGZhaWxlZCB3aXRoIGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVy
cm9yKCkpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0JfQotI2Vsc2UKLQlpZiAoKGZkID0gc29j
a2V0KEFGX0lORVQsIFNPQ0tfREdSQU0sIElQUFJPVE9fVURQKSkgPCAwKSB7Ci0JCXBlcnJvcigi
c29ja2V0Iik7Ci0JCWV4aXQoRVhJVF9GQUlMVVJFKTsKLQl9Ci0jZW5kaWYKLQltZW1zZXQoJnNp
biwgMCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOwotCXNpbi5zaW5fZmFtaWx5ID0gQUZf
SU5FVDsKLSNpZmRlZiBIQVZFX1NJTl9MRU4KLQlzaW4uc2luX2xlbiA9IHNpemVvZihzdHJ1Y3Qg
c29ja2FkZHJfaW4pOwotI2VuZGlmCi0Jc2luLnNpbl9wb3J0ID0gaHRvbnMoYXRvaShhcmd2WzJd
KSk7Ci0JaWYgKCFpbmV0X3B0b24oQUZfSU5FVCwgYXJndlsxXSwgJnNpbi5zaW5fYWRkci5zX2Fk
ZHIpKXsKLQkJcHJpbnRmKCJlcnJvcjogaW52YWxpZCBhZGRyZXNzXG4iKTsKLQkJZXhpdChFWElU
X0ZBSUxVUkUpOwotCX0KLSNpZmRlZiBfV0lOMzIKLQlpZiAoYmluZChmZCwgKHN0cnVjdCBzb2Nr
YWRkciAqKSZzaW4sIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKSA9PSBTT0NLRVRfRVJST1Ip
IHsKLQkJcHJpbnRmKCJiaW5kKCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBXU0FHZXRMYXN0
RXJyb3IoKSk7Ci0JCWV4aXQoRVhJVF9GQUlMVVJFKTsKLQl9Ci0jZWxzZQotCWlmIChiaW5kKGZk
LCAoc3RydWN0IHNvY2thZGRyICopJnNpbiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpIDwg
MCkgewotCQlwZXJyb3IoImJpbmQiKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwotCX0KLSNlbmRp
ZgotCW1lbXNldCgmc2luLCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7Ci0Jc2luLnNp
bl9mYW1pbHkgPSBBRl9JTkVUOwotI2lmZGVmIEhBVkVfU0lOX0xFTgotCXNpbi5zaW5fbGVuID0g
c2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7Ci0jZW5kaWYKLQlzaW4uc2luX3BvcnQgPSBodG9u
cyhhdG9pKGFyZ3ZbNF0pKTsKLQlpZiAoIWluZXRfcHRvbihBRl9JTkVULCBhcmd2WzNdLCAmc2lu
LnNpbl9hZGRyLnNfYWRkcikpewotCQlwcmludGYoImVycm9yOiBpbnZhbGlkIGFkZHJlc3NcbiIp
OwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0JfQotI2lmZGVmIF9XSU4zMgotCWlmIChjb25uZWN0
KGZkLCAoc3RydWN0IHNvY2thZGRyICopJnNpbiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikp
ID09IFNPQ0tFVF9FUlJPUikgewotCQlwcmludGYoImNvbm5lY3QoKSBmYWlsZWQgd2l0aCBlcnJv
cjogJWRcbiIsIFdTQUdldExhc3RFcnJvcigpKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwotCX0K
LSNlbHNlCi0JaWYgKGNvbm5lY3QoZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luLCBzaXplb2Yo
c3RydWN0IHNvY2thZGRyX2luKSkgPCAwKSB7Ci0JCXBlcnJvcigiY29ubmVjdCIpOwotCQlleGl0
KEVYSVRfRkFJTFVSRSk7Ci0JfQotI2VuZGlmCi0jaWZkZWYgU0NUUF9ERUJVRwotCXVzcnNjdHBf
c3lzY3RsX3NldF9zY3RwX2RlYnVnX29uKFNDVFBfREVCVUdfTk9ORSk7Ci0jZW5kaWYKLQl1c3Jz
Y3RwX3N5c2N0bF9zZXRfc2N0cF9lY25fZW5hYmxlKDApOwotCXVzcnNjdHBfcmVnaXN0ZXJfYWRk
cmVzcygodm9pZCAqKSZmZCk7Ci0jaWZkZWYgX1dJTjMyCi0JdGlkID0gQ3JlYXRlVGhyZWFkKE5V
TEwsIDAsICZoYW5kbGVfcGFja2V0cywgKHZvaWQgKikmZmQsIDAsIE5VTEwpOwotI2Vsc2UKLQlw
dGhyZWFkX2NyZWF0ZSgmdGlkLCBOVUxMLCAmaGFuZGxlX3BhY2tldHMsICh2b2lkICopJmZkKTsK
LSNlbmRpZgotCWlmICgocyA9IHVzcnNjdHBfc29ja2V0KEFGX0NPTk4sIFNPQ0tfU1RSRUFNLCBJ
UFBST1RPX1NDVFAsIHJlY2VpdmVfY2IsIE5VTEwsIDAsICZmZCkpID09IE5VTEwpIHsKLQkJcGVy
cm9yKCJ1c3JzY3RwX3NvY2tldCIpOwotCX0KLQotCW1lbXNldCgmc2Nvbm4sIDAsIHNpemVvZihz
dHJ1Y3Qgc29ja2FkZHJfY29ubikpOwotCXNjb25uLnNjb25uX2ZhbWlseSA9IEFGX0NPTk47Ci0j
aWZkZWYgSEFWRV9TQ09OTl9MRU4KLQlzY29ubi5zY29ubl9sZW4gPSBzaXplb2Yoc3RydWN0IHNv
Y2thZGRyX2Nvbm4pOwotI2VuZGlmCi0Jc2Nvbm4uc2Nvbm5fcG9ydCA9IGh0b25zKDApOwotCXNj
b25uLnNjb25uX2FkZHIgPSBOVUxMOwotCWlmICh1c3JzY3RwX2JpbmQocywgKHN0cnVjdCBzb2Nr
YWRkciAqKSZzY29ubiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9jb25uKSkgPCAwKSB7Ci0JCXBl
cnJvcigidXNyc2N0cF9iaW5kIik7Ci0JfQotCi0JbWVtc2V0KCZzY29ubiwgMCwgc2l6ZW9mKHN0
cnVjdCBzb2NrYWRkcl9jb25uKSk7Ci0Jc2Nvbm4uc2Nvbm5fZmFtaWx5ID0gQUZfQ09OTjsKLSNp
ZmRlZiBIQVZFX1NDT05OX0xFTgotCXNjb25uLnNjb25uX2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29j
a2FkZHJfY29ubik7Ci0jZW5kaWYKLQlzY29ubi5zY29ubl9wb3J0ID0gaHRvbnMoNTAwMSk7Ci0J
c2Nvbm4uc2Nvbm5fYWRkciA9ICZmZDsKLQlpZiAodXNyc2N0cF9jb25uZWN0KHMsIChzdHJ1Y3Qg
c29ja2FkZHIgKikmc2Nvbm4sIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfY29ubikpIDwgMCkgewot
CQlwZXJyb3IoInVzcnNjdHBfY29ubmVjdCIpOwotCX0KLQltZW1zZXQoYnVmZmVyLCAnQScsIEJV
RkZFUl9TSVpFKTsKLQlzbmRpbmZvLnNuZF9zaWQgPSAxOwotCXNuZGluZm8uc25kX2ZsYWdzID0g
MDsKLQlzbmRpbmZvLnNuZF9wcGlkID0gaHRvbmwoRElTQ0FSRF9QUElEKTsKLQlzbmRpbmZvLnNu
ZF9jb250ZXh0ID0gMDsKLQlzbmRpbmZvLnNuZF9hc3NvY19pZCA9IDA7Ci0JaWYgKHVzcnNjdHBf
c2VuZHYocywgYnVmZmVyLCBCVUZGRVJfU0laRSwgTlVMTCwgMCwgKHZvaWQgKikmc25kaW5mbywK
LQkgICAgICAgICAgICAgICAgICAoc29ja2xlbl90KXNpemVvZihzdHJ1Y3Qgc2N0cF9zbmRpbmZv
KSwgU0NUUF9TRU5EVl9TTkRJTkZPLCAwKSA8IDApIHsKLQkJcGVycm9yKCJ1c3JzY3RwX3NlbmR2
Iik7Ci0JfQotCi0JdXNyc2N0cF9zaHV0ZG93bihzLCBTSFVUX1dSKTsKLQl3aGlsZSAodXNyc2N0
cF9maW5pc2goKSAhPSAwKSB7Ci0jaWZkZWYgX1dJTjMyCi0JCVNsZWVwKDEwMDApOwotI2Vsc2UK
LQkJc2xlZXAoMSk7Ci0jZW5kaWYKLQl9Ci0jaWZkZWYgX1dJTjMyCi0JVGVybWluYXRlVGhyZWFk
KHRpZCwgMCk7Ci0JV2FpdEZvclNpbmdsZU9iamVjdCh0aWQsIElORklOSVRFKTsKLQlpZiAoY2xv
c2Vzb2NrZXQoZmQpID09IFNPQ0tFVF9FUlJPUikgewotCQlwcmludGYoImNsb3Nlc29ja2V0KCkg
ZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7Ci0JfQotCVdTQUNs
ZWFudXAoKTsKLSNlbHNlCi0JcHRocmVhZF9jYW5jZWwodGlkKTsKLQlwdGhyZWFkX2pvaW4odGlk
LCBOVUxMKTsKLQlpZiAoY2xvc2UoZmQpIDwgMCkgewotCQlwZXJyb3IoImNsb3NlIik7Ci0JfQot
I2VuZGlmCi0JcmV0dXJuICgwKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2Vr
cl9sb29wLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9la3JfbG9vcC5jCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA3N2U3MmM1Yjg0ZjYuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9w
cm9ncmFtcy9la3JfbG9vcC5jCisrKyAvZGV2L251bGwKQEAgLTEsNTQzICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMyBNaWNoYWVsIFR1ZXhlbgotICoKLSAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBwcm9q
ZWN0IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotICogICAgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJl
Ci0gKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBQUk9KRUNUIEFORCBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQot
ICogQVJFIERJU0NMQUlNRUQuCUlOIE5PIEVWRU5UIFNIQUxMIFRIRSBQUk9KRUNUIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUKLSAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UwotICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pCi0gKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotICogTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWQotICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRgotICogU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmZGVmIF9X
SU4zMgotI2RlZmluZSBfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUwotI2VuZGlmCi0jaW5jbHVkZSA8
c3RkaW8uaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNs
dWRlIDxzdGRhcmcuaD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZm5kZWYgX1dJTjMyCi0j
aW5jbHVkZSA8c3lzL3NvY2tldC5oPgotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSNpbmNsdWRl
IDxhcnBhL2luZXQuaD4KLSNpbmNsdWRlIDxlcnJuby5oPgotI2luY2x1ZGUgPHB0aHJlYWQuaD4K
LSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNlbHNlCi0jaW5jbHVkZSA8d2luc29jazIuaD4KLSNpbmNs
dWRlIDx3czJ0Y3BpcC5oPgotI2VuZGlmCi0jaW5jbHVkZSA8dXNyc2N0cC5oPgotCi0jZGVmaW5l
IE1BWF9QQUNLRVRfU0laRSAoMTw8MTYpCi0jZGVmaW5lIExJTkVfTEVOR1RIICgxPDwyMCkKLSNk
ZWZpbmUgRElTQ0FSRF9QUElEIDM5Ci0KLSNpZmRlZiBfV0lOMzIKLXN0YXRpYyBEV09SRCBXSU5B
UEkKLSNlbHNlCi1zdGF0aWMgdm9pZCAqCi0jZW5kaWYKLWhhbmRsZV9wYWNrZXRzKHZvaWQgKmFy
ZykKLXsKLSNpZmRlZiBfV0lOMzIKLQlTT0NLRVQgKmZkcDsKLSNlbHNlCi0JaW50ICpmZHA7Ci0j
ZW5kaWYKLQljaGFyICpkdW1wX2J1ZjsKLQlzc2l6ZV90IGxlbmd0aDsKLQljaGFyIGJ1ZltNQVhf
UEFDS0VUX1NJWkVdOwotCi0jaWZkZWYgX1dJTjMyCi0JZmRwID0gKFNPQ0tFVCAqKWFyZzsKLSNl
bHNlCi0JZmRwID0gKGludCAqKWFyZzsKLSNlbmRpZgotCWZvciAoOzspIHsKLSNpZiBkZWZpbmVk
KF9fTmV0QlNEX18pCi0JCXB0aHJlYWRfdGVzdGNhbmNlbCgpOwotI2VuZGlmCi0JCWxlbmd0aCA9
IHJlY3YoKmZkcCwgYnVmLCBNQVhfUEFDS0VUX1NJWkUsIDApOwotCQlpZiAobGVuZ3RoID4gMCkg
ewotCQkJaWYgKChkdW1wX2J1ZiA9IHVzcnNjdHBfZHVtcHBhY2tldChidWYsIChzaXplX3QpbGVu
Z3RoLCBTQ1RQX0RVTVBfSU5CT1VORCkpICE9IE5VTEwpIHsKLQkJCQkvL2ZwcmludGYoc3RkZXJy
LCAiJXMiLCBkdW1wX2J1Zik7Ci0JCQkJdXNyc2N0cF9mcmVlZHVtcGJ1ZmZlcihkdW1wX2J1Zik7
Ci0JCQl9Ci0JCQl1c3JzY3RwX2Nvbm5pbnB1dChmZHAsIGJ1ZiwgKHNpemVfdClsZW5ndGgsIDAp
OwotCQl9Ci0JfQotI2lmZGVmIF9XSU4zMgotCXJldHVybiAwOwotI2Vsc2UKLQlyZXR1cm4gKE5V
TEwpOwotI2VuZGlmCi19Ci0KLXN0YXRpYyBpbnQKLWNvbm5fb3V0cHV0KHZvaWQgKmFkZHIsIHZv
aWQgKmJ1Ziwgc2l6ZV90IGxlbmd0aCwgdWludDhfdCB0b3MsIHVpbnQ4X3Qgc2V0X2RmKQotewot
CWNoYXIgKmR1bXBfYnVmOwotI2lmZGVmIF9XSU4zMgotCVNPQ0tFVCAqZmRwOwotI2Vsc2UKLQlp
bnQgKmZkcDsKLSNlbmRpZgotCi0jaWZkZWYgX1dJTjMyCi0JZmRwID0gKFNPQ0tFVCAqKWFkZHI7
Ci0jZWxzZQotCWZkcCA9IChpbnQgKilhZGRyOwotI2VuZGlmCi0JaWYgKChkdW1wX2J1ZiA9IHVz
cnNjdHBfZHVtcHBhY2tldChidWYsIGxlbmd0aCwgU0NUUF9EVU1QX09VVEJPVU5EKSkgIT0gTlVM
TCkgewotCQkvL2ZwcmludGYoc3RkZXJyLCAiJXMiLCBkdW1wX2J1Zik7Ci0JCXVzcnNjdHBfZnJl
ZWR1bXBidWZmZXIoZHVtcF9idWYpOwotCX0KLSNpZmRlZiBfV0lOMzIKLQlpZiAoc2VuZCgqZmRw
LCBidWYsIChpbnQpbGVuZ3RoLCAwKSA9PSBTT0NLRVRfRVJST1IpIHsKLQkJcmV0dXJuIChXU0FH
ZXRMYXN0RXJyb3IoKSk7Ci0jZWxzZQotCWlmIChzZW5kKCpmZHAsIGJ1ZiwgbGVuZ3RoLCAwKSA8
IDApIHsKLQkJcmV0dXJuIChlcnJubyk7Ci0jZW5kaWYKLQl9IGVsc2UgewotCQlyZXR1cm4gKDAp
OwotCX0KLX0KLQotc3RhdGljIGludAotcmVjZWl2ZV9jYihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCB1
bmlvbiBzY3RwX3NvY2tzdG9yZSBhZGRyLCB2b2lkICpkYXRhLAotICAgICAgICAgICBzaXplX3Qg
ZGF0YWxlbiwgc3RydWN0IHNjdHBfcmN2aW5mbyByY3YsIGludCBmbGFncywgdm9pZCAqdWxwX2lu
Zm8pCi17Ci0JcHJpbnRmKCJNZXNzYWdlICVwIHJlY2VpdmVkIG9uIHNvY2sgPSAlcC5cbiIsIGRh
dGEsICh2b2lkICopc29jayk7Ci0JaWYgKGRhdGEpIHsKLQkJaWYgKChmbGFncyAmIE1TR19OT1RJ
RklDQVRJT04pID09IDApIHsKLQkJCXByaW50ZigiTWVzc3NhZ2Ugb2YgbGVuZ3RoICVkIHJlY2Vp
dmVkIHZpYSAlcDoldSBvbiBzdHJlYW0gJXUgd2l0aCBTU04gJXUgYW5kIFRTTiAldSwgUFBJRCAl
dSwgY29udGV4dCAldSwgZmxhZ3MgJXguXG4iLAotCQkJICAgICAgIChpbnQpZGF0YWxlbiwKLQkJ
CSAgICAgICBhZGRyLnNjb25uLnNjb25uX2FkZHIsCi0JCQkgICAgICAgbnRvaHMoYWRkci5zY29u
bi5zY29ubl9wb3J0KSwKLQkJCSAgICAgICByY3YucmN2X3NpZCwKLQkJCSAgICAgICByY3YucmN2
X3NzbiwKLQkJCSAgICAgICByY3YucmN2X3RzbiwKLQkJCSAgICAgICBudG9obChyY3YucmN2X3Bw
aWQpLAotCQkJICAgICAgIHJjdi5yY3ZfY29udGV4dCwKLQkJCSAgICAgICBmbGFncyk7Ci0JCX0K
LQkJZnJlZShkYXRhKTsKLQl9IGVsc2UgewotCQl1c3JzY3RwX2RlcmVnaXN0ZXJfYWRkcmVzcyh1
bHBfaW5mbyk7Ci0JCXVzcnNjdHBfY2xvc2Uoc29jayk7Ci0JfQotCXJldHVybiAoMSk7Ci19Ci0K
LSNpZiAwCi1zdGF0aWMgdm9pZAotcHJpbnRfYWRkcmVzc2VzKHN0cnVjdCBzb2NrZXQgKnNvY2sp
Ci17Ci0JaW50IGksIG47Ci0Jc3RydWN0IHNvY2thZGRyICphZGRycywgKmFkZHI7Ci0KLQluID0g
dXNyc2N0cF9nZXRsYWRkcnMoc29jaywgMCwgJmFkZHJzKTsKLQlhZGRyID0gYWRkcnM7Ci0JZm9y
IChpID0gMDsgaSA8IG47IGkrKykgewotCQlzd2l0Y2ggKGFkZHItPnNhX2ZhbWlseSkgewotCQlj
YXNlIEFGX0lORVQ6Ci0JCXsKLQkJCXN0cnVjdCBzb2NrYWRkcl9pbiAqc2luOwotCQkJY2hhciBi
dWZbSU5FVF9BRERSU1RSTEVOXTsKLQkJCWNvbnN0IGNoYXIgKm5hbWU7Ci0KLQkJCXNpbiA9IChz
dHJ1Y3Qgc29ja2FkZHJfaW4gKilhZGRyOwotCQkJbmFtZSA9IGluZXRfbnRvcChBRl9JTkVULCAm
c2luLT5zaW5fYWRkciwgYnVmLCBJTkVUX0FERFJTVFJMRU4pOwotCQkJcHJpbnRmKCIlczolZCIs
IG5hbWUsIG50b2hzKHNpbi0+c2luX3BvcnQpKTsKLQkJCWJyZWFrOwotCQl9Ci0JCWNhc2UgQUZf
SU5FVDY6Ci0JCXsKLQkJCXN0cnVjdCBzb2NrYWRkcl9pbjYgKnNpbjY7Ci0JCQljaGFyIGJ1ZltJ
TkVUNl9BRERSU1RSTEVOXTsKLQkJCWNvbnN0IGNoYXIgKm5hbWU7Ci0KLQkJCXNpbjYgPSAoc3Ry
dWN0IHNvY2thZGRyX2luNiAqKWFkZHI7Ci0JCQluYW1lID0gaW5ldF9udG9wKEFGX0lORVQ2LCAm
c2luNi0+c2luNl9hZGRyLCBidWYsIElORVQ2X0FERFJTVFJMRU4pOwotCQkJcHJpbnRmKCIlczol
ZCIsIG5hbWUsIG50b2hzKHNpbjYtPnNpbjZfcG9ydCkpOwotCQkJYnJlYWs7Ci0JCX0KLQkJY2Fz
ZSBBRl9DT05OOgotCQl7Ci0JCQlzdHJ1Y3Qgc29ja2FkZHJfY29ubiAqc2Nvbm47Ci0KLQkJCXNj
b25uID0gKHN0cnVjdCBzb2NrYWRkcl9jb25uICopYWRkcjsKLQkJCXByaW50ZigiJXA6JWQiLCBz
Y29ubi0+c2Nvbm5fYWRkciwgbnRvaHMoc2Nvbm4tPnNjb25uX3BvcnQpKTsKLQkJCWJyZWFrOwot
CQl9Ci0JCWRlZmF1bHQ6Ci0JCQlwcmludGYoIlVua25vd24gZmFtaWx5OiAlZCIsIGFkZHItPnNh
X2ZhbWlseSk7Ci0JCQlicmVhazsKLQkJfQotCQlhZGRyID0gKHN0cnVjdCBzb2NrYWRkciAqKSgo
Y2FkZHJfdClhZGRyICsgYWRkci0+c2FfbGVuKTsKLQkJaWYgKGkgIT0gbiAtIDEpIHsKLQkJCXBy
aW50ZigiLCIpOwotCQl9Ci0JfQotCWlmIChuID4gMCkgewotCQl1c3JzY3RwX2ZyZWVsYWRkcnMo
YWRkcnMpOwotCX0KLQlwcmludGYoIjwtPiIpOwotCW4gPSB1c3JzY3RwX2dldHBhZGRycyhzb2Nr
LCAwLCAmYWRkcnMpOwotCWFkZHIgPSBhZGRyczsKLQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7
Ci0JCXN3aXRjaCAoYWRkci0+c2FfZmFtaWx5KSB7Ci0JCWNhc2UgQUZfSU5FVDoKLQkJewotCQkJ
c3RydWN0IHNvY2thZGRyX2luICpzaW47Ci0JCQljaGFyIGJ1ZltJTkVUX0FERFJTVFJMRU5dOwot
CQkJY29uc3QgY2hhciAqbmFtZTsKLQotCQkJc2luID0gKHN0cnVjdCBzb2NrYWRkcl9pbiAqKWFk
ZHI7Ci0JCQluYW1lID0gaW5ldF9udG9wKEFGX0lORVQsICZzaW4tPnNpbl9hZGRyLCBidWYsIElO
RVRfQUREUlNUUkxFTik7Ci0JCQlwcmludGYoIiVzOiVkIiwgbmFtZSwgbnRvaHMoc2luLT5zaW5f
cG9ydCkpOwotCQkJYnJlYWs7Ci0JCX0KLQkJY2FzZSBBRl9JTkVUNjoKLQkJewotCQkJc3RydWN0
IHNvY2thZGRyX2luNiAqc2luNjsKLQkJCWNoYXIgYnVmW0lORVQ2X0FERFJTVFJMRU5dOwotCQkJ
Y29uc3QgY2hhciAqbmFtZTsKLQotCQkJc2luNiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopYWRk
cjsKLQkJCW5hbWUgPSBpbmV0X250b3AoQUZfSU5FVDYsICZzaW42LT5zaW42X2FkZHIsIGJ1Ziwg
SU5FVDZfQUREUlNUUkxFTik7Ci0JCQlwcmludGYoIiVzOiVkIiwgbmFtZSwgbnRvaHMoc2luNi0+
c2luNl9wb3J0KSk7Ci0JCQlicmVhazsKLQkJfQotCQljYXNlIEFGX0NPTk46Ci0JCXsKLQkJCXN0
cnVjdCBzb2NrYWRkcl9jb25uICpzY29ubjsKLQotCQkJc2Nvbm4gPSAoc3RydWN0IHNvY2thZGRy
X2Nvbm4gKilhZGRyOwotCQkJcHJpbnRmKCIlcDolZCIsIHNjb25uLT5zY29ubl9hZGRyLCBudG9o
cyhzY29ubi0+c2Nvbm5fcG9ydCkpOwotCQkJYnJlYWs7Ci0JCX0KLQkJZGVmYXVsdDoKLQkJCXBy
aW50ZigiVW5rbm93biBmYW1pbHk6ICVkIiwgYWRkci0+c2FfZmFtaWx5KTsKLQkJCWJyZWFrOwot
CQl9Ci0JCWFkZHIgPSAoc3RydWN0IHNvY2thZGRyICopKChjYWRkcl90KWFkZHIgKyBhZGRyLT5z
YV9sZW4pOwotCQlpZiAoaSAhPSBuIC0gMSkgewotCQkJcHJpbnRmKCIsIik7Ci0JCX0KLQl9Ci0J
aWYgKG4gPiAwKSB7Ci0JCXVzcnNjdHBfZnJlZXBhZGRycyhhZGRycyk7Ci0JfQotCXByaW50Zigi
XG4iKTsKLX0KLSNlbmRpZgotCi12b2lkCi1kZWJ1Z19wcmludGYoY29uc3QgY2hhciAqZm9ybWF0
LCAuLi4pCi17Ci0JdmFfbGlzdCBhcDsKLQotCXZhX3N0YXJ0KGFwLCBmb3JtYXQpOwotCXZwcmlu
dGYoZm9ybWF0LCBhcCk7Ci0JdmFfZW5kKGFwKTsKLX0KLQotaW50Ci1tYWluKHZvaWQpCi17Ci0J
c3RydWN0IHNvY2thZGRyX2luIHNpbl9zLCBzaW5fYzsKLQlzdHJ1Y3Qgc29ja2FkZHJfY29ubiBz
Y29ubjsKLSNpZmRlZiBfV0lOMzIKLQlTT0NLRVQgZmRfYywgZmRfczsKLSNlbHNlCi0JaW50IGZk
X2MsIGZkX3M7Ci0jZW5kaWYKLQlzdHJ1Y3Qgc29ja2V0ICpzX2MsICpzX3MsICpzX2w7Ci0jaWZk
ZWYgX1dJTjMyCi0JSEFORExFIHRpZF9jLCB0aWRfczsKLSNlbHNlCi0JcHRocmVhZF90IHRpZF9j
LCB0aWRfczsKLSNlbmRpZgotCWludCBjdXJfYnVmX3NpemUsIHNuZF9idWZfc2l6ZSwgcmN2X2J1
Zl9zaXplOwotCXNvY2tsZW5fdCBvcHRfbGVuOwotCXN0cnVjdCBzY3RwX3NuZGluZm8gc25kaW5m
bzsKLQljaGFyICpsaW5lOwotI2lmZGVmIF9XSU4zMgotCVdTQURBVEEgd3NhRGF0YTsKLSNlbmRp
ZgotCi0jaWZkZWYgX1dJTjMyCi0JaWYgKFdTQVN0YXJ0dXAoTUFLRVdPUkQoMiwyKSwgJndzYURh
dGEpICE9IDApIHsKLQkJcHJpbnRmKCJXU0FTdGFydHVwIGZhaWxlZFxuIik7Ci0JCWV4aXQgKEVY
SVRfRkFJTFVSRSk7Ci0JfQotI2VuZGlmCi0JdXNyc2N0cF9pbml0KDAsIGNvbm5fb3V0cHV0LCBk
ZWJ1Z19wcmludGYpOwotCS8qIHNldCB1cCBhIGNvbm5lY3RlZCBVRFAgc29ja2V0ICovCi0jaWZk
ZWYgX1dJTjMyCi0JaWYgKChmZF9jID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfREdSQU0sIElQUFJP
VE9fVURQKSkgPT0gSU5WQUxJRF9TT0NLRVQpIHsKLQkJcHJpbnRmKCJzb2NrZXQoKSBmYWlsZWQg
d2l0aCBlcnJvcjogJWRcbiIsIFdTQUdldExhc3RFcnJvcigpKTsKLQkJZXhpdChFWElUX0ZBSUxV
UkUpOwotCX0KLQlpZiAoKGZkX3MgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgSVBQUk9U
T19VRFApKSA9PSBJTlZBTElEX1NPQ0tFVCkgewotCQlwcmludGYoInNvY2tldCgpIGZhaWxlZCB3
aXRoIGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOwotCQlleGl0KEVYSVRfRkFJTFVS
RSk7Ci0JfQotI2Vsc2UKLQlpZiAoKGZkX2MgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwg
SVBQUk9UT19VRFApKSA8IDApIHsKLQkJcGVycm9yKCJzb2NrZXQiKTsKLQkJZXhpdChFWElUX0ZB
SUxVUkUpOwotCX0KLQlpZiAoKGZkX3MgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgSVBQ
Uk9UT19VRFApKSA8IDApIHsKLQkJcGVycm9yKCJzb2NrZXQiKTsKLQkJZXhpdChFWElUX0ZBSUxV
UkUpOwotCX0KLSNlbmRpZgotCW1lbXNldCgmc2luX2MsIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2Fk
ZHJfaW4pKTsKLQlzaW5fYy5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKLSNpZmRlZiBIQVZFX1NJTl9M
RU4KLQlzaW5fYy5zaW5fbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7Ci0jZW5kaWYK
LQlzaW5fYy5zaW5fcG9ydCA9IGh0b25zKDk5MDApOwotCXNpbl9jLnNpbl9hZGRyLnNfYWRkciA9
IGh0b25sKElOQUREUl9MT09QQkFDSyk7Ci0JbWVtc2V0KCZzaW5fcywgMCwgc2l6ZW9mKHN0cnVj
dCBzb2NrYWRkcl9pbikpOwotCXNpbl9zLnNpbl9mYW1pbHkgPSBBRl9JTkVUOwotI2lmZGVmIEhB
VkVfU0lOX0xFTgotCXNpbl9zLnNpbl9sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKTsK
LSNlbmRpZgotCXNpbl9zLnNpbl9wb3J0ID0gaHRvbnMoOTkwMSk7Ci0Jc2luX3Muc2luX2FkZHIu
c19hZGRyID0gaHRvbmwoSU5BRERSX0xPT1BCQUNLKTsKLSNpZmRlZiBfV0lOMzIKLQlpZiAoYmlu
ZChmZF9jLCAoc3RydWN0IHNvY2thZGRyICopJnNpbl9jLCBzaXplb2Yoc3RydWN0IHNvY2thZGRy
X2luKSkgPT0gU09DS0VUX0VSUk9SKSB7Ci0JCXByaW50ZigiYmluZCgpIGZhaWxlZCB3aXRoIGVy
cm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0J
fQotCWlmIChiaW5kKGZkX3MsIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luX3MsIHNpemVvZihzdHJ1
Y3Qgc29ja2FkZHJfaW4pKSA9PSBTT0NLRVRfRVJST1IpIHsKLQkJcHJpbnRmKCJiaW5kKCkgZmFp
bGVkIHdpdGggZXJyb3I6ICVkXG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7Ci0JCWV4aXQoRVhJVF9G
QUlMVVJFKTsKLQl9Ci0jZWxzZQotCWlmIChiaW5kKGZkX2MsIChzdHJ1Y3Qgc29ja2FkZHIgKikm
c2luX2MsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKSA8IDApIHsKLQkJcGVycm9yKCJiaW5k
Iik7Ci0JCWV4aXQoRVhJVF9GQUlMVVJFKTsKLQl9Ci0JaWYgKGJpbmQoZmRfcywgKHN0cnVjdCBz
b2NrYWRkciAqKSZzaW5fcywgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpIDwgMCkgewotCQlw
ZXJyb3IoImJpbmQiKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwotCX0KLSNlbmRpZgotI2lmZGVm
IF9XSU4zMgotCWlmIChjb25uZWN0KGZkX2MsIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luX3MsIHNp
emVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKSA9PSBTT0NLRVRfRVJST1IpIHsKLQkJcHJpbnRmKCJj
b25uZWN0KCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7Ci0J
CWV4aXQoRVhJVF9GQUlMVVJFKTsKLQl9Ci0JaWYgKGNvbm5lY3QoZmRfcywgKHN0cnVjdCBzb2Nr
YWRkciAqKSZzaW5fYywgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpID09IFNPQ0tFVF9FUlJP
UikgewotCQlwcmludGYoImNvbm5lY3QoKSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIFdTQUdl
dExhc3RFcnJvcigpKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwotCX0KLSNlbHNlCi0JaWYgKGNv
bm5lY3QoZmRfYywgKHN0cnVjdCBzb2NrYWRkciAqKSZzaW5fcywgc2l6ZW9mKHN0cnVjdCBzb2Nr
YWRkcl9pbikpIDwgMCkgewotCQlwZXJyb3IoImNvbm5lY3QiKTsKLQkJZXhpdChFWElUX0ZBSUxV
UkUpOwotCX0KLQlpZiAoY29ubmVjdChmZF9zLCAoc3RydWN0IHNvY2thZGRyICopJnNpbl9jLCBz
aXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSkgPCAwKSB7Ci0JCXBlcnJvcigiY29ubmVjdCIpOwot
CQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0JfQotI2VuZGlmCi0jaWZkZWYgX1dJTjMyCi0JdGlkX2Mg
PSBDcmVhdGVUaHJlYWQoTlVMTCwgMCwgJmhhbmRsZV9wYWNrZXRzLCAodm9pZCAqKSZmZF9jLCAw
LCBOVUxMKTsKLQl0aWRfcyA9IENyZWF0ZVRocmVhZChOVUxMLCAwLCAmaGFuZGxlX3BhY2tldHMs
ICh2b2lkICopJmZkX3MsIDAsIE5VTEwpOwotI2Vsc2UKLQlpZiAocHRocmVhZF9jcmVhdGUoJnRp
ZF9jLCBOVUxMLCAmaGFuZGxlX3BhY2tldHMsICh2b2lkICopJmZkX2MpKSB7Ci0JCXBlcnJvcigi
cHRocmVhZF9jcmVhdGUgdGlkX2MiKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwotCX0KLQotCWlm
IChwdGhyZWFkX2NyZWF0ZSgmdGlkX3MsIE5VTEwsICZoYW5kbGVfcGFja2V0cywgKHZvaWQgKikm
ZmRfcykpIHsKLQkJcGVycm9yKCJwdGhyZWFkX2NyZWF0ZSB0aWRfcyIpOwotCQlleGl0KEVYSVRf
RkFJTFVSRSk7Ci0JfTsKLSNlbmRpZgotI2lmZGVmIFNDVFBfREVCVUcKLQl1c3JzY3RwX3N5c2N0
bF9zZXRfc2N0cF9kZWJ1Z19vbihTQ1RQX0RFQlVHX05PTkUpOwotI2VuZGlmCi0JdXNyc2N0cF9z
eXNjdGxfc2V0X3NjdHBfZWNuX2VuYWJsZSgwKTsKLQl1c3JzY3RwX3JlZ2lzdGVyX2FkZHJlc3Mo
KHZvaWQgKikmZmRfYyk7Ci0JdXNyc2N0cF9yZWdpc3Rlcl9hZGRyZXNzKCh2b2lkICopJmZkX3Mp
OwotCWlmICgoc19jID0gdXNyc2N0cF9zb2NrZXQoQUZfQ09OTiwgU09DS19TVFJFQU0sIElQUFJP
VE9fU0NUUCwgcmVjZWl2ZV9jYiwgTlVMTCwgMCwgJmZkX2MpKSA9PSBOVUxMKSB7Ci0JCXBlcnJv
cigidXNyc2N0cF9zb2NrZXQiKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwotCX0KLQlvcHRfbGVu
ID0gKHNvY2tsZW5fdClzaXplb2YoaW50KTsKLQljdXJfYnVmX3NpemUgPSAwOwotCWlmICh1c3Jz
Y3RwX2dldHNvY2tvcHQoc19jLCBTT0xfU09DS0VULCBTT19TTkRCVUYsICZjdXJfYnVmX3NpemUs
ICZvcHRfbGVuKSA8IDApIHsKLQkJcGVycm9yKCJ1c3JzY3RwX2dldHNvY2tvcHQiKTsKLQkJZXhp
dChFWElUX0ZBSUxVUkUpOwotCX0KLQlwcmludGYoIkNoYW5nZSBzZW5kIHNvY2tldCBidWZmZXIg
c2l6ZSBmcm9tICVkICIsIGN1cl9idWZfc2l6ZSk7Ci0Jc25kX2J1Zl9zaXplID0gMTw8MjI7IC8q
IDQgTUIgKi8KLQlpZiAodXNyc2N0cF9zZXRzb2Nrb3B0KHNfYywgU09MX1NPQ0tFVCwgU09fU05E
QlVGLCAmc25kX2J1Zl9zaXplLCBzaXplb2YoaW50KSkgPCAwKSB7Ci0JCXBlcnJvcigidXNyc2N0
cF9zZXRzb2Nrb3B0Iik7Ci0JCWV4aXQoRVhJVF9GQUlMVVJFKTsKLQl9Ci0Jb3B0X2xlbiA9IChz
b2NrbGVuX3Qpc2l6ZW9mKGludCk7Ci0JY3VyX2J1Zl9zaXplID0gMDsKLQlpZiAodXNyc2N0cF9n
ZXRzb2Nrb3B0KHNfYywgU09MX1NPQ0tFVCwgU09fU05EQlVGLCAmY3VyX2J1Zl9zaXplLCAmb3B0
X2xlbikgPCAwKSB7Ci0JCXBlcnJvcigidXNyc2N0cF9nZXRzb2Nrb3B0Iik7Ci0JCWV4aXQoRVhJ
VF9GQUlMVVJFKTsKLQl9Ci0JcHJpbnRmKCJ0byAlZC5cbiIsIGN1cl9idWZfc2l6ZSk7Ci0JaWYg
KChzX2wgPSB1c3JzY3RwX3NvY2tldChBRl9DT05OLCBTT0NLX1NUUkVBTSwgSVBQUk9UT19TQ1RQ
LCByZWNlaXZlX2NiLCBOVUxMLCAwLCAmZmRfcykpID09IE5VTEwpIHsKLQkJcGVycm9yKCJ1c3Jz
Y3RwX3NvY2tldCIpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0JfQotCW9wdF9sZW4gPSAoc29j
a2xlbl90KXNpemVvZihpbnQpOwotCWN1cl9idWZfc2l6ZSA9IDA7Ci0JaWYgKHVzcnNjdHBfZ2V0
c29ja29wdChzX2wsIFNPTF9TT0NLRVQsIFNPX1JDVkJVRiwgJmN1cl9idWZfc2l6ZSwgJm9wdF9s
ZW4pIDwgMCkgewotCQlwZXJyb3IoInVzcnNjdHBfZ2V0c29ja29wdCIpOwotCQlleGl0KEVYSVRf
RkFJTFVSRSk7Ci0JfQotCXByaW50ZigiQ2hhbmdlIHJlY2VpdmUgc29ja2V0IGJ1ZmZlciBzaXpl
IGZyb20gJWQgIiwgY3VyX2J1Zl9zaXplKTsKLQlyY3ZfYnVmX3NpemUgPSAxPDwxNjsgLyogNjQg
S0IgKi8KLQlpZiAodXNyc2N0cF9zZXRzb2Nrb3B0KHNfbCwgU09MX1NPQ0tFVCwgU09fUkNWQlVG
LCAmcmN2X2J1Zl9zaXplLCBzaXplb2YoaW50KSkgPCAwKSB7Ci0JCXBlcnJvcigidXNyc2N0cF9z
ZXRzb2Nrb3B0Iik7Ci0JCWV4aXQoRVhJVF9GQUlMVVJFKTsKLQl9Ci0Jb3B0X2xlbiA9IChzb2Nr
bGVuX3Qpc2l6ZW9mKGludCk7Ci0JY3VyX2J1Zl9zaXplID0gMDsKLQlpZiAodXNyc2N0cF9nZXRz
b2Nrb3B0KHNfbCwgU09MX1NPQ0tFVCwgU09fUkNWQlVGLCAmY3VyX2J1Zl9zaXplLCAmb3B0X2xl
bikgPCAwKSB7Ci0JCXBlcnJvcigidXNyc2N0cF9nZXRzb2Nrb3B0Iik7Ci0JCWV4aXQoRVhJVF9G
QUlMVVJFKTsKLQl9Ci0JcHJpbnRmKCJ0byAlZC5cbiIsIGN1cl9idWZfc2l6ZSk7Ci0JLyogQmlu
ZCB0aGUgY2xpZW50IHNpZGUuICovCi0JbWVtc2V0KCZzY29ubiwgMCwgc2l6ZW9mKHN0cnVjdCBz
b2NrYWRkcl9jb25uKSk7Ci0Jc2Nvbm4uc2Nvbm5fZmFtaWx5ID0gQUZfQ09OTjsKLSNpZmRlZiBI
QVZFX1NDT05OX0xFTgotCXNjb25uLnNjb25uX2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJf
Y29ubik7Ci0jZW5kaWYKLQlzY29ubi5zY29ubl9wb3J0ID0gaHRvbnMoNTAwMSk7Ci0Jc2Nvbm4u
c2Nvbm5fYWRkciA9ICZmZF9jOwotCWlmICh1c3JzY3RwX2JpbmQoc19jLCAoc3RydWN0IHNvY2th
ZGRyICopJnNjb25uLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2Nvbm4pKSA8IDApIHsKLQkJcGVy
cm9yKCJ1c3JzY3RwX2JpbmQiKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwotCX0KLQkvKiBCaW5k
IHRoZSBzZXJ2ZXIgc2lkZS4gKi8KLQltZW1zZXQoJnNjb25uLCAwLCBzaXplb2Yoc3RydWN0IHNv
Y2thZGRyX2Nvbm4pKTsKLQlzY29ubi5zY29ubl9mYW1pbHkgPSBBRl9DT05OOwotI2lmZGVmIEhB
VkVfU0NPTk5fTEVOCi0Jc2Nvbm4uc2Nvbm5fbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9j
b25uKTsKLSNlbmRpZgotCXNjb25uLnNjb25uX3BvcnQgPSBodG9ucyg1MDAxKTsKLQlzY29ubi5z
Y29ubl9hZGRyID0gJmZkX3M7Ci0JaWYgKHVzcnNjdHBfYmluZChzX2wsIChzdHJ1Y3Qgc29ja2Fk
ZHIgKikmc2Nvbm4sIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfY29ubikpIDwgMCkgewotCQlwZXJy
b3IoInVzcnNjdHBfYmluZCIpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0JfQotCS8qIE1ha2Ug
c2VydmVyIHNpZGUgcGFzc2l2ZS4uLiAqLwotCWlmICh1c3JzY3RwX2xpc3RlbihzX2wsIDEpIDwg
MCkgewotCQlwZXJyb3IoInVzcnNjdHBfbGlzdGVuIik7Ci0JCWV4aXQoRVhJVF9GQUlMVVJFKTsK
LQl9Ci0JLyogSW5pdGlhdGUgdGhlIGhhbmRzaGFrZSAqLwotCW1lbXNldCgmc2Nvbm4sIDAsIHNp
emVvZihzdHJ1Y3Qgc29ja2FkZHJfY29ubikpOwotCXNjb25uLnNjb25uX2ZhbWlseSA9IEFGX0NP
Tk47Ci0jaWZkZWYgSEFWRV9TQ09OTl9MRU4KLQlzY29ubi5zY29ubl9sZW4gPSBzaXplb2Yoc3Ry
dWN0IHNvY2thZGRyX2Nvbm4pOwotI2VuZGlmCi0Jc2Nvbm4uc2Nvbm5fcG9ydCA9IGh0b25zKDUw
MDEpOwotCXNjb25uLnNjb25uX2FkZHIgPSAmZmRfYzsKLQlpZiAodXNyc2N0cF9jb25uZWN0KHNf
YywgKHN0cnVjdCBzb2NrYWRkciAqKSZzY29ubiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9jb25u
KSkgPCAwKSB7Ci0JCXBlcnJvcigidXNyc2N0cF9jb25uZWN0Iik7Ci0JCWV4aXQoRVhJVF9GQUlM
VVJFKTsKLQl9Ci0JaWYgKChzX3MgPSB1c3JzY3RwX2FjY2VwdChzX2wsIE5VTEwsIE5VTEwpKSA9
PSBOVUxMKSB7Ci0JCXBlcnJvcigidXNyc2N0cF9hY2NlcHQiKTsKLQkJZXhpdChFWElUX0ZBSUxV
UkUpOwotCX0KLQl1c3JzY3RwX2Nsb3NlKHNfbCk7Ci0JaWYgKChsaW5lID0gbWFsbG9jKExJTkVf
TEVOR1RIKSkgPT0gTlVMTCkgewotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0JfQotCW1lbXNldChs
aW5lLCAnQScsIExJTkVfTEVOR1RIKTsKLQlzbmRpbmZvLnNuZF9zaWQgPSAxOwotCXNuZGluZm8u
c25kX2ZsYWdzID0gMDsKLQlzbmRpbmZvLnNuZF9wcGlkID0gaHRvbmwoRElTQ0FSRF9QUElEKTsK
LQlzbmRpbmZvLnNuZF9jb250ZXh0ID0gMDsKLQlzbmRpbmZvLnNuZF9hc3NvY19pZCA9IDA7Ci0J
LyogU2VuZCBhIDEgTUIgb3JkZXJlZCBtZXNzYWdlICovCi0JaWYgKHVzcnNjdHBfc2VuZHYoc19j
LCBsaW5lLCBMSU5FX0xFTkdUSCwgTlVMTCwgMCwgKHZvaWQgKikmc25kaW5mbywKLQkgICAgICAg
ICAgICAgICAgIChzb2NrbGVuX3Qpc2l6ZW9mKHN0cnVjdCBzY3RwX3NuZGluZm8pLCBTQ1RQX1NF
TkRWX1NORElORk8sIDApIDwgMCkgewotCQlwZXJyb3IoInVzcnNjdHBfc2VuZHYiKTsKLQkJZXhp
dChFWElUX0ZBSUxVUkUpOwotCX0KLQkvKiBTZW5kIGEgMSBNQiBvcmRlcmVkIG1lc3NhZ2UgKi8K
LQlpZiAodXNyc2N0cF9zZW5kdihzX2MsIGxpbmUsIExJTkVfTEVOR1RILCBOVUxMLCAwLCAodm9p
ZCAqKSZzbmRpbmZvLAotCSAgICAgICAgICAgICAgICAgKHNvY2tsZW5fdClzaXplb2Yoc3RydWN0
IHNjdHBfc25kaW5mbyksIFNDVFBfU0VORFZfU05ESU5GTywgMCkgPCAwKSB7Ci0JCXBlcnJvcigi
dXNyc2N0cF9zZW5kdiIpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0JfQotCWZyZWUobGluZSk7
Ci0JdXNyc2N0cF9zaHV0ZG93bihzX2MsIFNIVVRfV1IpOwotCi0Jd2hpbGUgKHVzcnNjdHBfZmlu
aXNoKCkgIT0gMCkgewotI2lmZGVmIF9XSU4zMgotCQlTbGVlcCgxMDAwKTsKLSNlbHNlCi0JCXNs
ZWVwKDEpOwotI2VuZGlmCi0JfQotI2lmZGVmIF9XSU4zMgotCVRlcm1pbmF0ZVRocmVhZCh0aWRf
YywgMCk7Ci0JV2FpdEZvclNpbmdsZU9iamVjdCh0aWRfYywgSU5GSU5JVEUpOwotCVRlcm1pbmF0
ZVRocmVhZCh0aWRfcywgMCk7Ci0JV2FpdEZvclNpbmdsZU9iamVjdCh0aWRfcywgSU5GSU5JVEUp
OwotCWlmIChjbG9zZXNvY2tldChmZF9jKSA9PSBTT0NLRVRfRVJST1IpIHsKLQkJcHJpbnRmKCJj
bG9zZXNvY2tldCgpIGZhaWxlZCB3aXRoIGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkp
OwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0JfQotCWlmIChjbG9zZXNvY2tldChmZF9zKSA9PSBT
T0NLRVRfRVJST1IpIHsKLQkJcHJpbnRmKCJjbG9zZXNvY2tldCgpIGZhaWxlZCB3aXRoIGVycm9y
OiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0JfQot
CVdTQUNsZWFudXAoKTsKLSNlbHNlCi0JcHRocmVhZF9jYW5jZWwodGlkX2MpOwotCXB0aHJlYWRf
am9pbih0aWRfYywgTlVMTCk7Ci0JcHRocmVhZF9jYW5jZWwodGlkX3MpOwotCXB0aHJlYWRfam9p
bih0aWRfcywgTlVMTCk7Ci0JaWYgKGNsb3NlKGZkX2MpIDwgMCkgewotCQlwZXJyb3IoImNsb3Nl
Iik7Ci0JCWV4aXQoRVhJVF9GQUlMVVJFKTsKLQl9Ci0JaWYgKGNsb3NlKGZkX3MpIDwgMCkgewot
CQlwZXJyb3IoImNsb3NlIik7Ci0JCWV4aXQoRVhJVF9GQUlMVVJFKTsKLQl9Ci0jZW5kaWYKLQly
ZXR1cm4gKDApOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvZWtyX2xvb3Bfb2Zm
bG9hZC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91
c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvZWtyX2xvb3Bfb2ZmbG9hZC5jCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA1NWY3ZDdmYzY5NDUuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0
cGxpYi9wcm9ncmFtcy9la3JfbG9vcF9vZmZsb2FkLmMKKysrIC9kZXYvbnVsbApAQCAtMSw1NTkg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDEzIE1pY2hhZWwgVHVleGVuCi0g
KgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuIE5laXRoZXIgdGhlIG5h
bWUgb2YgdGhlIHByb2plY3Qgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCi0gKiAg
ICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
IHRoaXMgc29mdHdhcmUKLSAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIFBST0pFQ1Qg
QU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFCi0gKiBBUkUgRElTQ0xBSU1FRC4JSU4gTk8gRVZFTlQgU0hBTEwgVEhFIFBS
T0pFQ1QgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotICogRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAq
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTCi0gKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSAqIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0g
KiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZCi0gKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0gKiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZkZWYgX1dJTjMyCi0jZGVmaW5lIF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTCi0jZW5k
aWYKLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN0
cmluZy5oPgotI2luY2x1ZGUgPHN0ZGFyZy5oPgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lm
bmRlZiBfV0lOMzIKLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0jaW5jbHVkZSA8bmV0aW5ldC9p
bi5oPgotI2luY2x1ZGUgPGFycGEvaW5ldC5oPgotI2luY2x1ZGUgPGVycm5vLmg+Ci0jaW5jbHVk
ZSA8cHRocmVhZC5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2Vsc2UKLSNpbmNsdWRlIDx3aW5z
b2NrMi5oPgotI2luY2x1ZGUgPHdzMnRjcGlwLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDx1c3JzY3Rw
Lmg+Ci0KLSNkZWZpbmUgTUFYX1BBQ0tFVF9TSVpFICgxPDwxNikKLSNkZWZpbmUgTElORV9MRU5H
VEggKDE8PDIwKQotI2RlZmluZSBESVNDQVJEX1BQSUQgMzkKLQotI2lmZGVmIF9XSU4zMgotc3Rh
dGljIERXT1JEIFdJTkFQSQotI2Vsc2UKLXN0YXRpYyB2b2lkICoKLSNlbmRpZgotaGFuZGxlX3Bh
Y2tldHModm9pZCAqYXJnKQotewotI2lmZGVmIF9XSU4zMgotCVNPQ0tFVCAqZmRwOwotI2Vsc2UK
LQlpbnQgKmZkcDsKLSNlbmRpZgotCWNoYXIgKmR1bXBfYnVmZmVyOwotCXN0cnVjdCBzY3RwX2Nv
bW1vbl9oZWFkZXIgKmhkcjsKLQlzc2l6ZV90IGxlbmd0aDsKLQljaGFyIGJ1ZmZlcltNQVhfUEFD
S0VUX1NJWkVdOwotCXVpbnQzMl90IHJlY2VpdmVkX2NyYzMyYywgY29tcHV0ZWRfY3JjMzJjOwot
Ci0jaWZkZWYgX1dJTjMyCi0JZmRwID0gKFNPQ0tFVCAqKWFyZzsKLSNlbHNlCi0JZmRwID0gKGlu
dCAqKWFyZzsKLSNlbmRpZgotCWZvciAoOzspIHsKLSNpZiBkZWZpbmVkKF9fTmV0QlNEX18pCi0J
CXB0aHJlYWRfdGVzdGNhbmNlbCgpOwotI2VuZGlmCi0JCWxlbmd0aCA9IHJlY3YoKmZkcCwgYnVm
ZmVyLCBNQVhfUEFDS0VUX1NJWkUsIDApOwotCQlpZiAobGVuZ3RoID4gMCkgewotCQkJaWYgKChk
dW1wX2J1ZmZlciA9IHVzcnNjdHBfZHVtcHBhY2tldChidWZmZXIsIChzaXplX3QpbGVuZ3RoLCBT
Q1RQX0RVTVBfSU5CT1VORCkpICE9IE5VTEwpIHsKLQkJCQkvL2ZwcmludGYoc3RkZXJyLCAiJXMi
LCBkdW1wX2J1ZmZlcik7Ci0JCQkJdXNyc2N0cF9mcmVlZHVtcGJ1ZmZlcihkdW1wX2J1ZmZlcik7
Ci0JCQl9Ci0JCQlpZiAoKHNpemVfdClsZW5ndGggPj0gc2l6ZW9mKHN0cnVjdCBzY3RwX2NvbW1v
bl9oZWFkZXIpKSB7Ci0JCQkJaGRyID0gKHN0cnVjdCBzY3RwX2NvbW1vbl9oZWFkZXIgKilidWZm
ZXI7Ci0JCQkJcmVjZWl2ZWRfY3JjMzJjID0gaGRyLT5jcmMzMmM7Ci0JCQkJaGRyLT5jcmMzMmMg
PSBodG9ubCgwKTsKLQkJCQljb21wdXRlZF9jcmMzMmMgPSB1c3JzY3RwX2NyYzMyYyhidWZmZXIs
IChzaXplX3QpbGVuZ3RoKTsKLQkJCQloZHItPmNyYzMyYyA9IHJlY2VpdmVkX2NyYzMyYzsKLQkJ
CQlpZiAocmVjZWl2ZWRfY3JjMzJjID09IGNvbXB1dGVkX2NyYzMyYykgewotCQkJCQl1c3JzY3Rw
X2Nvbm5pbnB1dChmZHAsIGJ1ZmZlciwgKHNpemVfdClsZW5ndGgsIDApOwotCQkJCX0gZWxzZSB7
Ci0JCQkJCWZwcmludGYoc3RkZXJyLCAiV3JvbmcgQ1JDMzJjOiBleHBlY3RlZCAlMDh4IHJlY2Vp
dmVkICUwOHhcbiIsCi0JCQkJCSAgICAgICAgbnRvaGwoY29tcHV0ZWRfY3JjMzJjKSwgbnRvaGwo
cmVjZWl2ZWRfY3JjMzJjKSk7Ci0JCQkJfQotCQkJfSBlbHNlIHsKLQkJCQlmcHJpbnRmKHN0ZGVy
ciwgIlBhY2tldCB0b28gc2hvcnQ6IGxlbmd0aCAlenUiLCAoc2l6ZV90KWxlbmd0aCk7Ci0JCQl9
Ci0JCX0KLQl9Ci0jaWZkZWYgX1dJTjMyCi0JcmV0dXJuIDA7Ci0jZWxzZQotCXJldHVybiAoTlVM
TCk7Ci0jZW5kaWYKLX0KLQotc3RhdGljIGludAotY29ubl9vdXRwdXQodm9pZCAqYWRkciwgdm9p
ZCAqYnVmZmVyLCBzaXplX3QgbGVuZ3RoLCB1aW50OF90IHRvcywgdWludDhfdCBzZXRfZGYpCi17
Ci0JY2hhciAqZHVtcF9idWZmZXI7Ci0Jc3RydWN0IHNjdHBfY29tbW9uX2hlYWRlciAqaGRyOwot
I2lmZGVmIF9XSU4zMgotCVNPQ0tFVCAqZmRwOwotI2Vsc2UKLQlpbnQgKmZkcDsKLSNlbmRpZgot
Ci0jaWZkZWYgX1dJTjMyCi0JZmRwID0gKFNPQ0tFVCAqKWFkZHI7Ci0jZWxzZQotCWZkcCA9IChp
bnQgKilhZGRyOwotI2VuZGlmCi0JaWYgKGxlbmd0aCA+PSBzaXplb2Yoc3RydWN0IHNjdHBfY29t
bW9uX2hlYWRlcikpIHsKLQkJaGRyID0gKHN0cnVjdCBzY3RwX2NvbW1vbl9oZWFkZXIgKilidWZm
ZXI7Ci0JCWhkci0+Y3JjMzJjID0gdXNyc2N0cF9jcmMzMmMoYnVmZmVyLCAoc2l6ZV90KWxlbmd0
aCk7Ci0JfQotCWlmICgoZHVtcF9idWZmZXIgPSB1c3JzY3RwX2R1bXBwYWNrZXQoYnVmZmVyLCBs
ZW5ndGgsIFNDVFBfRFVNUF9PVVRCT1VORCkpICE9IE5VTEwpIHsKLQkJLy9mcHJpbnRmKHN0ZGVy
ciwgIiVzIiwgZHVtcF9idWZmZXIpOwotCQl1c3JzY3RwX2ZyZWVkdW1wYnVmZmVyKGR1bXBfYnVm
ZmVyKTsKLQl9Ci0jaWZkZWYgX1dJTjMyCi0JaWYgKHNlbmQoKmZkcCwgYnVmZmVyLCAoaW50KWxl
bmd0aCwgMCkgPT0gU09DS0VUX0VSUk9SKSB7Ci0JCXJldHVybiAoV1NBR2V0TGFzdEVycm9yKCkp
OwotI2Vsc2UKLQlpZiAoc2VuZCgqZmRwLCBidWZmZXIsIGxlbmd0aCwgMCkgPCAwKSB7Ci0JCXJl
dHVybiAoZXJybm8pOwotI2VuZGlmCi0JfSBlbHNlIHsKLQkJcmV0dXJuICgwKTsKLQl9Ci19Ci0K
LXN0YXRpYyBpbnQKLXJlY2VpdmVfY2Ioc3RydWN0IHNvY2tldCAqc29jaywgdW5pb24gc2N0cF9z
b2Nrc3RvcmUgYWRkciwgdm9pZCAqZGF0YSwKLSAgICAgICAgICAgc2l6ZV90IGRhdGFsZW4sIHN0
cnVjdCBzY3RwX3JjdmluZm8gcmN2LCBpbnQgZmxhZ3MsIHZvaWQgKnVscF9pbmZvKQotewotCXBy
aW50ZigiTWVzc2FnZSAlcCByZWNlaXZlZCBvbiBzb2NrID0gJXAuXG4iLCBkYXRhLCAodm9pZCAq
KXNvY2spOwotCWlmIChkYXRhKSB7Ci0JCWlmICgoZmxhZ3MgJiBNU0dfTk9USUZJQ0FUSU9OKSA9
PSAwKSB7Ci0JCQlwcmludGYoIk1lc3NzYWdlIG9mIGxlbmd0aCAlZCByZWNlaXZlZCB2aWEgJXA6
JXUgb24gc3RyZWFtICV1IHdpdGggU1NOICV1IGFuZCBUU04gJXUsIFBQSUQgJXUsIGNvbnRleHQg
JXUsIGZsYWdzICV4LlxuIiwKLQkJCSAgICAgICAoaW50KWRhdGFsZW4sCi0JCQkgICAgICAgYWRk
ci5zY29ubi5zY29ubl9hZGRyLAotCQkJICAgICAgIG50b2hzKGFkZHIuc2Nvbm4uc2Nvbm5fcG9y
dCksCi0JCQkgICAgICAgcmN2LnJjdl9zaWQsCi0JCQkgICAgICAgcmN2LnJjdl9zc24sCi0JCQkg
ICAgICAgcmN2LnJjdl90c24sCi0JCQkgICAgICAgbnRvaGwocmN2LnJjdl9wcGlkKSwKLQkJCSAg
ICAgICByY3YucmN2X2NvbnRleHQsCi0JCQkgICAgICAgZmxhZ3MpOwotCQl9Ci0JCWZyZWUoZGF0
YSk7Ci0JfSBlbHNlIHsKLQkJdXNyc2N0cF9kZXJlZ2lzdGVyX2FkZHJlc3ModWxwX2luZm8pOwot
CQl1c3JzY3RwX2Nsb3NlKHNvY2spOwotCX0KLQlyZXR1cm4gKDEpOwotfQotCi0jaWYgMAotc3Rh
dGljIHZvaWQKLXByaW50X2FkZHJlc3NlcyhzdHJ1Y3Qgc29ja2V0ICpzb2NrKQotewotCWludCBp
LCBuOwotCXN0cnVjdCBzb2NrYWRkciAqYWRkcnMsICphZGRyOwotCi0JbiA9IHVzcnNjdHBfZ2V0
bGFkZHJzKHNvY2ssIDAsICZhZGRycyk7Ci0JYWRkciA9IGFkZHJzOwotCWZvciAoaSA9IDA7IGkg
PCBuOyBpKyspIHsKLQkJc3dpdGNoIChhZGRyLT5zYV9mYW1pbHkpIHsKLQkJY2FzZSBBRl9JTkVU
OgotCQl7Ci0JCQlzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbjsKLQkJCWNoYXIgYnVmW0lORVRfQURE
UlNUUkxFTl07Ci0JCQljb25zdCBjaGFyICpuYW1lOwotCi0JCQlzaW4gPSAoc3RydWN0IHNvY2th
ZGRyX2luICopYWRkcjsKLQkJCW5hbWUgPSBpbmV0X250b3AoQUZfSU5FVCwgJnNpbi0+c2luX2Fk
ZHIsIGJ1ZiwgSU5FVF9BRERSU1RSTEVOKTsKLQkJCXByaW50ZigiJXM6JWQiLCBuYW1lLCBudG9o
cyhzaW4tPnNpbl9wb3J0KSk7Ci0JCQlicmVhazsKLQkJfQotCQljYXNlIEFGX0lORVQ2OgotCQl7
Ci0JCQlzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW42OwotCQkJY2hhciBidWZbSU5FVDZfQUREUlNU
UkxFTl07Ci0JCQljb25zdCBjaGFyICpuYW1lOwotCi0JCQlzaW42ID0gKHN0cnVjdCBzb2NrYWRk
cl9pbjYgKilhZGRyOwotCQkJbmFtZSA9IGluZXRfbnRvcChBRl9JTkVUNiwgJnNpbjYtPnNpbjZf
YWRkciwgYnVmLCBJTkVUNl9BRERSU1RSTEVOKTsKLQkJCXByaW50ZigiJXM6JWQiLCBuYW1lLCBu
dG9ocyhzaW42LT5zaW42X3BvcnQpKTsKLQkJCWJyZWFrOwotCQl9Ci0JCWNhc2UgQUZfQ09OTjoK
LQkJewotCQkJc3RydWN0IHNvY2thZGRyX2Nvbm4gKnNjb25uOwotCi0JCQlzY29ubiA9IChzdHJ1
Y3Qgc29ja2FkZHJfY29ubiAqKWFkZHI7Ci0JCQlwcmludGYoIiVwOiVkIiwgc2Nvbm4tPnNjb25u
X2FkZHIsIG50b2hzKHNjb25uLT5zY29ubl9wb3J0KSk7Ci0JCQlicmVhazsKLQkJfQotCQlkZWZh
dWx0OgotCQkJcHJpbnRmKCJVbmtub3duIGZhbWlseTogJWQiLCBhZGRyLT5zYV9mYW1pbHkpOwot
CQkJYnJlYWs7Ci0JCX0KLQkJYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHIgKikoKGNhZGRyX3QpYWRk
ciArIGFkZHItPnNhX2xlbik7Ci0JCWlmIChpICE9IG4gLSAxKSB7Ci0JCQlwcmludGYoIiwiKTsK
LQkJfQotCX0KLQlpZiAobiA+IDApIHsKLQkJdXNyc2N0cF9mcmVlbGFkZHJzKGFkZHJzKTsKLQl9
Ci0JcHJpbnRmKCI8LT4iKTsKLQluID0gdXNyc2N0cF9nZXRwYWRkcnMoc29jaywgMCwgJmFkZHJz
KTsKLQlhZGRyID0gYWRkcnM7Ci0JZm9yIChpID0gMDsgaSA8IG47IGkrKykgewotCQlzd2l0Y2gg
KGFkZHItPnNhX2ZhbWlseSkgewotCQljYXNlIEFGX0lORVQ6Ci0JCXsKLQkJCXN0cnVjdCBzb2Nr
YWRkcl9pbiAqc2luOwotCQkJY2hhciBidWZbSU5FVF9BRERSU1RSTEVOXTsKLQkJCWNvbnN0IGNo
YXIgKm5hbWU7Ci0KLQkJCXNpbiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilhZGRyOwotCQkJbmFt
ZSA9IGluZXRfbnRvcChBRl9JTkVULCAmc2luLT5zaW5fYWRkciwgYnVmLCBJTkVUX0FERFJTVFJM
RU4pOwotCQkJcHJpbnRmKCIlczolZCIsIG5hbWUsIG50b2hzKHNpbi0+c2luX3BvcnQpKTsKLQkJ
CWJyZWFrOwotCQl9Ci0JCWNhc2UgQUZfSU5FVDY6Ci0JCXsKLQkJCXN0cnVjdCBzb2NrYWRkcl9p
bjYgKnNpbjY7Ci0JCQljaGFyIGJ1ZltJTkVUNl9BRERSU1RSTEVOXTsKLQkJCWNvbnN0IGNoYXIg
Km5hbWU7Ci0KLQkJCXNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKWFkZHI7Ci0JCQluYW1l
ID0gaW5ldF9udG9wKEFGX0lORVQ2LCAmc2luNi0+c2luNl9hZGRyLCBidWYsIElORVQ2X0FERFJT
VFJMRU4pOwotCQkJcHJpbnRmKCIlczolZCIsIG5hbWUsIG50b2hzKHNpbjYtPnNpbjZfcG9ydCkp
OwotCQkJYnJlYWs7Ci0JCX0KLQkJY2FzZSBBRl9DT05OOgotCQl7Ci0JCQlzdHJ1Y3Qgc29ja2Fk
ZHJfY29ubiAqc2Nvbm47Ci0KLQkJCXNjb25uID0gKHN0cnVjdCBzb2NrYWRkcl9jb25uICopYWRk
cjsKLQkJCXByaW50ZigiJXA6JWQiLCBzY29ubi0+c2Nvbm5fYWRkciwgbnRvaHMoc2Nvbm4tPnNj
b25uX3BvcnQpKTsKLQkJCWJyZWFrOwotCQl9Ci0JCWRlZmF1bHQ6Ci0JCQlwcmludGYoIlVua25v
d24gZmFtaWx5OiAlZCIsIGFkZHItPnNhX2ZhbWlseSk7Ci0JCQlicmVhazsKLQkJfQotCQlhZGRy
ID0gKHN0cnVjdCBzb2NrYWRkciAqKSgoY2FkZHJfdClhZGRyICsgYWRkci0+c2FfbGVuKTsKLQkJ
aWYgKGkgIT0gbiAtIDEpIHsKLQkJCXByaW50ZigiLCIpOwotCQl9Ci0JfQotCWlmIChuID4gMCkg
ewotCQl1c3JzY3RwX2ZyZWVwYWRkcnMoYWRkcnMpOwotCX0KLQlwcmludGYoIlxuIik7Ci19Ci0j
ZW5kaWYKLQotdm9pZAotZGVidWdfcHJpbnRmKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQotewot
CXZhX2xpc3QgYXA7Ci0KLQl2YV9zdGFydChhcCwgZm9ybWF0KTsKLQl2cHJpbnRmKGZvcm1hdCwg
YXApOwotCXZhX2VuZChhcCk7Ci19Ci0KLWludAotbWFpbih2b2lkKQotewotCXN0cnVjdCBzb2Nr
YWRkcl9pbiBzaW5fcywgc2luX2M7Ci0Jc3RydWN0IHNvY2thZGRyX2Nvbm4gc2Nvbm47Ci0jaWZk
ZWYgX1dJTjMyCi0JU09DS0VUIGZkX2MsIGZkX3M7Ci0jZWxzZQotCWludCBmZF9jLCBmZF9zOwot
I2VuZGlmCi0Jc3RydWN0IHNvY2tldCAqc19jLCAqc19zLCAqc19sOwotI2lmZGVmIF9XSU4zMgot
CUhBTkRMRSB0aWRfYywgdGlkX3M7Ci0jZWxzZQotCXB0aHJlYWRfdCB0aWRfYywgdGlkX3M7Ci0j
ZW5kaWYKLQlpbnQgY3VyX2J1Zl9zaXplLCBzbmRfYnVmX3NpemUsIHJjdl9idWZfc2l6ZTsKLQlz
b2NrbGVuX3Qgb3B0X2xlbjsKLQlzdHJ1Y3Qgc2N0cF9zbmRpbmZvIHNuZGluZm87Ci0JY2hhciAq
bGluZTsKLSNpZmRlZiBfV0lOMzIKLQlXU0FEQVRBIHdzYURhdGE7Ci0jZW5kaWYKLQotI2lmZGVm
IF9XSU4zMgotCWlmIChXU0FTdGFydHVwKE1BS0VXT1JEKDIsMiksICZ3c2FEYXRhKSAhPSAwKSB7
Ci0JCXByaW50ZigiV1NBU3RhcnR1cCBmYWlsZWRcbiIpOwotCQlleGl0IChFWElUX0ZBSUxVUkUp
OwotCX0KLSNlbmRpZgotCXVzcnNjdHBfaW5pdCgwLCBjb25uX291dHB1dCwgZGVidWdfcHJpbnRm
KTsKLQl1c3JzY3RwX2VuYWJsZV9jcmMzMmNfb2ZmbG9hZCgpOwotCS8qIHNldCB1cCBhIGNvbm5l
Y3RlZCBVRFAgc29ja2V0ICovCi0jaWZkZWYgX1dJTjMyCi0JaWYgKChmZF9jID0gc29ja2V0KEFG
X0lORVQsIFNPQ0tfREdSQU0sIElQUFJPVE9fVURQKSkgPT0gSU5WQUxJRF9TT0NLRVQpIHsKLQkJ
cHJpbnRmKCJzb2NrZXQoKSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIFdTQUdldExhc3RFcnJv
cigpKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwotCX0KLQlpZiAoKGZkX3MgPSBzb2NrZXQoQUZf
SU5FVCwgU09DS19ER1JBTSwgSVBQUk9UT19VRFApKSA9PSBJTlZBTElEX1NPQ0tFVCkgewotCQlw
cmludGYoInNvY2tldCgpIGZhaWxlZCB3aXRoIGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9y
KCkpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0JfQotI2Vsc2UKLQlpZiAoKGZkX2MgPSBzb2Nr
ZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgSVBQUk9UT19VRFApKSA8IDApIHsKLQkJcGVycm9yKCJz
b2NrZXQiKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwotCX0KLQlpZiAoKGZkX3MgPSBzb2NrZXQo
QUZfSU5FVCwgU09DS19ER1JBTSwgSVBQUk9UT19VRFApKSA8IDApIHsKLQkJcGVycm9yKCJzb2Nr
ZXQiKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwotCX0KLSNlbmRpZgotCW1lbXNldCgmc2luX2Ms
IDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKLQlzaW5fYy5zaW5fZmFtaWx5ID0gQUZf
SU5FVDsKLSNpZmRlZiBIQVZFX1NJTl9MRU4KLQlzaW5fYy5zaW5fbGVuID0gc2l6ZW9mKHN0cnVj
dCBzb2NrYWRkcl9pbik7Ci0jZW5kaWYKLQlzaW5fYy5zaW5fcG9ydCA9IGh0b25zKDk4OTkpOwot
CXNpbl9jLnNpbl9hZGRyLnNfYWRkciA9IGh0b25sKElOQUREUl9MT09QQkFDSyk7Ci0JbWVtc2V0
KCZzaW5fcywgMCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOwotCXNpbl9zLnNpbl9mYW1p
bHkgPSBBRl9JTkVUOwotI2lmZGVmIEhBVkVfU0lOX0xFTgotCXNpbl9zLnNpbl9sZW4gPSBzaXpl
b2Yoc3RydWN0IHNvY2thZGRyX2luKTsKLSNlbmRpZgotCXNpbl9zLnNpbl9wb3J0ID0gaHRvbnMo
OTkwMSk7Ci0Jc2luX3Muc2luX2FkZHIuc19hZGRyID0gaHRvbmwoSU5BRERSX0xPT1BCQUNLKTsK
LSNpZmRlZiBfV0lOMzIKLQlpZiAoYmluZChmZF9jLCAoc3RydWN0IHNvY2thZGRyICopJnNpbl9j
LCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSkgPT0gU09DS0VUX0VSUk9SKSB7Ci0JCXByaW50
ZigiYmluZCgpIGZhaWxlZCB3aXRoIGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOwot
CQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0JfQotCWlmIChiaW5kKGZkX3MsIChzdHJ1Y3Qgc29ja2Fk
ZHIgKikmc2luX3MsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKSA9PSBTT0NLRVRfRVJST1Ip
IHsKLQkJcHJpbnRmKCJiaW5kKCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBXU0FHZXRMYXN0
RXJyb3IoKSk7Ci0JCWV4aXQoRVhJVF9GQUlMVVJFKTsKLQl9Ci0jZWxzZQotCWlmIChiaW5kKGZk
X2MsIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luX2MsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4p
KSA8IDApIHsKLQkJcGVycm9yKCJiaW5kIik7Ci0JCWV4aXQoRVhJVF9GQUlMVVJFKTsKLQl9Ci0J
aWYgKGJpbmQoZmRfcywgKHN0cnVjdCBzb2NrYWRkciAqKSZzaW5fcywgc2l6ZW9mKHN0cnVjdCBz
b2NrYWRkcl9pbikpIDwgMCkgewotCQlwZXJyb3IoImJpbmQiKTsKLQkJZXhpdChFWElUX0ZBSUxV
UkUpOwotCX0KLSNlbmRpZgotI2lmZGVmIF9XSU4zMgotCWlmIChjb25uZWN0KGZkX2MsIChzdHJ1
Y3Qgc29ja2FkZHIgKikmc2luX3MsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKSA9PSBTT0NL
RVRfRVJST1IpIHsKLQkJcHJpbnRmKCJjb25uZWN0KCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4i
LCBXU0FHZXRMYXN0RXJyb3IoKSk7Ci0JCWV4aXQoRVhJVF9GQUlMVVJFKTsKLQl9Ci0JaWYgKGNv
bm5lY3QoZmRfcywgKHN0cnVjdCBzb2NrYWRkciAqKSZzaW5fYywgc2l6ZW9mKHN0cnVjdCBzb2Nr
YWRkcl9pbikpID09IFNPQ0tFVF9FUlJPUikgewotCQlwcmludGYoImNvbm5lY3QoKSBmYWlsZWQg
d2l0aCBlcnJvcjogJWRcbiIsIFdTQUdldExhc3RFcnJvcigpKTsKLQkJZXhpdChFWElUX0ZBSUxV
UkUpOwotCX0KLSNlbHNlCi0JaWYgKGNvbm5lY3QoZmRfYywgKHN0cnVjdCBzb2NrYWRkciAqKSZz
aW5fcywgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpIDwgMCkgewotCQlwZXJyb3IoImNvbm5l
Y3QiKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwotCX0KLQlpZiAoY29ubmVjdChmZF9zLCAoc3Ry
dWN0IHNvY2thZGRyICopJnNpbl9jLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSkgPCAwKSB7
Ci0JCXBlcnJvcigiY29ubmVjdCIpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0JfQotI2VuZGlm
Ci0jaWZkZWYgX1dJTjMyCi0JdGlkX2MgPSBDcmVhdGVUaHJlYWQoTlVMTCwgMCwgJmhhbmRsZV9w
YWNrZXRzLCAodm9pZCAqKSZmZF9jLCAwLCBOVUxMKTsKLQl0aWRfcyA9IENyZWF0ZVRocmVhZChO
VUxMLCAwLCAmaGFuZGxlX3BhY2tldHMsICh2b2lkICopJmZkX3MsIDAsIE5VTEwpOwotI2Vsc2UK
LQlpZiAocHRocmVhZF9jcmVhdGUoJnRpZF9jLCBOVUxMLCAmaGFuZGxlX3BhY2tldHMsICh2b2lk
ICopJmZkX2MpKSB7Ci0JCXBlcnJvcigicHRocmVhZF9jcmVhdGUgdGlkX2MiKTsKLQkJZXhpdChF
WElUX0ZBSUxVUkUpOwotCX0KLQotCWlmIChwdGhyZWFkX2NyZWF0ZSgmdGlkX3MsIE5VTEwsICZo
YW5kbGVfcGFja2V0cywgKHZvaWQgKikmZmRfcykpIHsKLQkJcGVycm9yKCJwdGhyZWFkX2NyZWF0
ZSB0aWRfcyIpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0JfTsKLSNlbmRpZgotI2lmZGVmIFND
VFBfREVCVUcKLQl1c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9kZWJ1Z19vbihTQ1RQX0RFQlVHX0FM
TCk7Ci0jZW5kaWYKLQl1c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9lY25fZW5hYmxlKDApOwotCXVz
cnNjdHBfcmVnaXN0ZXJfYWRkcmVzcygodm9pZCAqKSZmZF9jKTsKLQl1c3JzY3RwX3JlZ2lzdGVy
X2FkZHJlc3MoKHZvaWQgKikmZmRfcyk7Ci0JaWYgKChzX2MgPSB1c3JzY3RwX3NvY2tldChBRl9D
T05OLCBTT0NLX1NUUkVBTSwgSVBQUk9UT19TQ1RQLCByZWNlaXZlX2NiLCBOVUxMLCAwLCAmZmRf
YykpID09IE5VTEwpIHsKLQkJcGVycm9yKCJ1c3JzY3RwX3NvY2tldCIpOwotCQlleGl0KEVYSVRf
RkFJTFVSRSk7Ci0JfQotCW9wdF9sZW4gPSAoc29ja2xlbl90KXNpemVvZihpbnQpOwotCWN1cl9i
dWZfc2l6ZSA9IDA7Ci0JaWYgKHVzcnNjdHBfZ2V0c29ja29wdChzX2MsIFNPTF9TT0NLRVQsIFNP
X1NOREJVRiwgJmN1cl9idWZfc2l6ZSwgJm9wdF9sZW4pIDwgMCkgewotCQlwZXJyb3IoInVzcnNj
dHBfZ2V0c29ja29wdCIpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0JfQotCXByaW50ZigiQ2hh
bmdlIHNlbmQgc29ja2V0IGJ1ZmZlciBzaXplIGZyb20gJWQgIiwgY3VyX2J1Zl9zaXplKTsKLQlz
bmRfYnVmX3NpemUgPSAxPDwyMDsgLyogMSBNQiAqLwotCWlmICh1c3JzY3RwX3NldHNvY2tvcHQo
c19jLCBTT0xfU09DS0VULCBTT19TTkRCVUYsICZzbmRfYnVmX3NpemUsIHNpemVvZihpbnQpKSA8
IDApIHsKLQkJcGVycm9yKCJ1c3JzY3RwX3NldHNvY2tvcHQiKTsKLQkJZXhpdChFWElUX0ZBSUxV
UkUpOwotCX0KLQlvcHRfbGVuID0gKHNvY2tsZW5fdClzaXplb2YoaW50KTsKLQljdXJfYnVmX3Np
emUgPSAwOwotCWlmICh1c3JzY3RwX2dldHNvY2tvcHQoc19jLCBTT0xfU09DS0VULCBTT19TTkRC
VUYsICZjdXJfYnVmX3NpemUsICZvcHRfbGVuKSA8IDApIHsKLQkJcGVycm9yKCJ1c3JzY3RwX2dl
dHNvY2tvcHQiKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwotCX0KLQlwcmludGYoInRvICVkLlxu
IiwgY3VyX2J1Zl9zaXplKTsKLQlpZiAoKHNfbCA9IHVzcnNjdHBfc29ja2V0KEFGX0NPTk4sIFNP
Q0tfU1RSRUFNLCBJUFBST1RPX1NDVFAsIHJlY2VpdmVfY2IsIE5VTEwsIDAsICZmZF9zKSkgPT0g
TlVMTCkgewotCQlwZXJyb3IoInVzcnNjdHBfc29ja2V0Iik7Ci0JCWV4aXQoRVhJVF9GQUlMVVJF
KTsKLQl9Ci0Jb3B0X2xlbiA9IChzb2NrbGVuX3Qpc2l6ZW9mKGludCk7Ci0JY3VyX2J1Zl9zaXpl
ID0gMDsKLQlpZiAodXNyc2N0cF9nZXRzb2Nrb3B0KHNfbCwgU09MX1NPQ0tFVCwgU09fUkNWQlVG
LCAmY3VyX2J1Zl9zaXplLCAmb3B0X2xlbikgPCAwKSB7Ci0JCXBlcnJvcigidXNyc2N0cF9nZXRz
b2Nrb3B0Iik7Ci0JCWV4aXQoRVhJVF9GQUlMVVJFKTsKLQl9Ci0JcHJpbnRmKCJDaGFuZ2UgcmVj
ZWl2ZSBzb2NrZXQgYnVmZmVyIHNpemUgZnJvbSAlZCAiLCBjdXJfYnVmX3NpemUpOwotCXJjdl9i
dWZfc2l6ZSA9IDE8PDE2OyAvKiA2NCBLQiAqLwotCWlmICh1c3JzY3RwX3NldHNvY2tvcHQoc19s
LCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsICZyY3ZfYnVmX3NpemUsIHNpemVvZihpbnQpKSA8IDAp
IHsKLQkJcGVycm9yKCJ1c3JzY3RwX3NldHNvY2tvcHQiKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUp
OwotCX0KLQlvcHRfbGVuID0gKHNvY2tsZW5fdClzaXplb2YoaW50KTsKLQljdXJfYnVmX3NpemUg
PSAwOwotCWlmICh1c3JzY3RwX2dldHNvY2tvcHQoc19sLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYs
ICZjdXJfYnVmX3NpemUsICZvcHRfbGVuKSA8IDApIHsKLQkJcGVycm9yKCJ1c3JzY3RwX2dldHNv
Y2tvcHQiKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwotCX0KLQlwcmludGYoInRvICVkLlxuIiwg
Y3VyX2J1Zl9zaXplKTsKLQkvKiBCaW5kIHRoZSBjbGllbnQgc2lkZS4gKi8KLQltZW1zZXQoJnNj
b25uLCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2Nvbm4pKTsKLQlzY29ubi5zY29ubl9mYW1p
bHkgPSBBRl9DT05OOwotI2lmZGVmIEhBVkVfU0NPTk5fTEVOCi0Jc2Nvbm4uc2Nvbm5fbGVuID0g
c2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9jb25uKTsKLSNlbmRpZgotCXNjb25uLnNjb25uX3BvcnQg
PSBodG9ucyg1MDAxKTsKLQlzY29ubi5zY29ubl9hZGRyID0gJmZkX2M7Ci0JaWYgKHVzcnNjdHBf
YmluZChzX2MsIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2Nvbm4sIHNpemVvZihzdHJ1Y3Qgc29ja2Fk
ZHJfY29ubikpIDwgMCkgewotCQlwZXJyb3IoInVzcnNjdHBfYmluZCIpOwotCQlleGl0KEVYSVRf
RkFJTFVSRSk7Ci0JfQotCS8qIEJpbmQgdGhlIHNlcnZlciBzaWRlLiAqLwotCW1lbXNldCgmc2Nv
bm4sIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfY29ubikpOwotCXNjb25uLnNjb25uX2ZhbWls
eSA9IEFGX0NPTk47Ci0jaWZkZWYgSEFWRV9TQ09OTl9MRU4KLQlzY29ubi5zY29ubl9sZW4gPSBz
aXplb2Yoc3RydWN0IHNvY2thZGRyX2Nvbm4pOwotI2VuZGlmCi0Jc2Nvbm4uc2Nvbm5fcG9ydCA9
IGh0b25zKDUwMDEpOwotCXNjb25uLnNjb25uX2FkZHIgPSAmZmRfczsKLQlpZiAodXNyc2N0cF9i
aW5kKHNfbCwgKHN0cnVjdCBzb2NrYWRkciAqKSZzY29ubiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRk
cl9jb25uKSkgPCAwKSB7Ci0JCXBlcnJvcigidXNyc2N0cF9iaW5kIik7Ci0JCWV4aXQoRVhJVF9G
QUlMVVJFKTsKLQl9Ci0JLyogTWFrZSBzZXJ2ZXIgc2lkZSBwYXNzaXZlLi4uICovCi0JaWYgKHVz
cnNjdHBfbGlzdGVuKHNfbCwgMSkgPCAwKSB7Ci0JCXBlcnJvcigidXNyc2N0cF9saXN0ZW4iKTsK
LQkJZXhpdChFWElUX0ZBSUxVUkUpOwotCX0KLQkvKiBJbml0aWF0ZSB0aGUgaGFuZHNoYWtlICov
Ci0JbWVtc2V0KCZzY29ubiwgMCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9jb25uKSk7Ci0Jc2Nv
bm4uc2Nvbm5fZmFtaWx5ID0gQUZfQ09OTjsKLSNpZmRlZiBIQVZFX1NDT05OX0xFTgotCXNjb25u
LnNjb25uX2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfY29ubik7Ci0jZW5kaWYKLQlzY29u
bi5zY29ubl9wb3J0ID0gaHRvbnMoNTAwMSk7Ci0Jc2Nvbm4uc2Nvbm5fYWRkciA9ICZmZF9jOwot
CWlmICh1c3JzY3RwX2Nvbm5lY3Qoc19jLCAoc3RydWN0IHNvY2thZGRyICopJnNjb25uLCBzaXpl
b2Yoc3RydWN0IHNvY2thZGRyX2Nvbm4pKSA8IDApIHsKLQkJcGVycm9yKCJ1c3JzY3RwX2Nvbm5l
Y3QiKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwotCX0KLQlpZiAoKHNfcyA9IHVzcnNjdHBfYWNj
ZXB0KHNfbCwgTlVMTCwgTlVMTCkpID09IE5VTEwpIHsKLQkJcGVycm9yKCJ1c3JzY3RwX2FjY2Vw
dCIpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0JfQotCXVzcnNjdHBfY2xvc2Uoc19sKTsKLQlp
ZiAoKGxpbmUgPSBtYWxsb2MoTElORV9MRU5HVEgpKSA9PSBOVUxMKSB7Ci0JCWV4aXQoRVhJVF9G
QUlMVVJFKTsKLQl9Ci0JbWVtc2V0KGxpbmUsICdBJywgTElORV9MRU5HVEgpOwotCXNuZGluZm8u
c25kX3NpZCA9IDE7Ci0Jc25kaW5mby5zbmRfZmxhZ3MgPSAwOwotCXNuZGluZm8uc25kX3BwaWQg
PSBodG9ubChESVNDQVJEX1BQSUQpOwotCXNuZGluZm8uc25kX2NvbnRleHQgPSAwOwotCXNuZGlu
Zm8uc25kX2Fzc29jX2lkID0gMDsKLQkvKiBTZW5kIGEgMSBNQiBtZXNzYWdlICovCi0JaWYgKHVz
cnNjdHBfc2VuZHYoc19jLCBsaW5lLCBMSU5FX0xFTkdUSCwgTlVMTCwgMCwgKHZvaWQgKikmc25k
aW5mbywKLQkgICAgICAgICAgICAgICAgIChzb2NrbGVuX3Qpc2l6ZW9mKHN0cnVjdCBzY3RwX3Nu
ZGluZm8pLCBTQ1RQX1NFTkRWX1NORElORk8sIDApIDwgMCkgewotCQlwZXJyb3IoInVzcnNjdHBf
c2VuZHYiKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwotCX0KLQlmcmVlKGxpbmUpOwotCXVzcnNj
dHBfc2h1dGRvd24oc19jLCBTSFVUX1dSKTsKLQotCXdoaWxlICh1c3JzY3RwX2ZpbmlzaCgpICE9
IDApIHsKLSNpZmRlZiBfV0lOMzIKLQkJU2xlZXAoMTAwMCk7Ci0jZWxzZQotCQlzbGVlcCgxKTsK
LSNlbmRpZgotCX0KLSNpZmRlZiBfV0lOMzIKLQlUZXJtaW5hdGVUaHJlYWQodGlkX2MsIDApOwot
CVdhaXRGb3JTaW5nbGVPYmplY3QodGlkX2MsIElORklOSVRFKTsKLQlUZXJtaW5hdGVUaHJlYWQo
dGlkX3MsIDApOwotCVdhaXRGb3JTaW5nbGVPYmplY3QodGlkX3MsIElORklOSVRFKTsKLQlpZiAo
Y2xvc2Vzb2NrZXQoZmRfYykgPT0gU09DS0VUX0VSUk9SKSB7Ci0JCXByaW50ZigiY2xvc2Vzb2Nr
ZXQoKSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIFdTQUdldExhc3RFcnJvcigpKTsKLQkJZXhp
dChFWElUX0ZBSUxVUkUpOwotCX0KLQlpZiAoY2xvc2Vzb2NrZXQoZmRfcykgPT0gU09DS0VUX0VS
Uk9SKSB7Ci0JCXByaW50ZigiY2xvc2Vzb2NrZXQoKSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIs
IFdTQUdldExhc3RFcnJvcigpKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwotCX0KLQlXU0FDbGVh
bnVwKCk7Ci0jZWxzZQotCXB0aHJlYWRfY2FuY2VsKHRpZF9jKTsKLQlwdGhyZWFkX2pvaW4odGlk
X2MsIE5VTEwpOwotCXB0aHJlYWRfY2FuY2VsKHRpZF9zKTsKLQlwdGhyZWFkX2pvaW4odGlkX3Ms
IE5VTEwpOwotCWlmIChjbG9zZShmZF9jKSA8IDApIHsKLQkJcGVycm9yKCJjbG9zZSIpOwotCQll
eGl0KEVYSVRfRkFJTFVSRSk7Ci0JfQotCWlmIChjbG9zZShmZF9zKSA8IDApIHsKLQkJcGVycm9y
KCJjbG9zZSIpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0JfQotI2VuZGlmCi0JcmV0dXJuICgw
KTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2Vrcl9wZWVyLmMgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi9wcm9ncmFtcy9la3JfcGVlci5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTBj
NjRkNmRhZDEuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9la3JfcGVlci5j
CisrKyAvZGV2L251bGwKQEAgLTEsNTQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEtMjAxMyBNaWNoYWVsIFR1ZXhlbgotICoKLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBwcm9qZWN0IG5vciB0aGUgbmFtZXMg
b2YgaXRzIGNvbnRyaWJ1dG9ycwotICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0gKiAgICB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBQUk9KRUNUIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAot
ICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotICogQVJFIERJU0NMQUlNRUQu
CUlOIE5PIEVWRU5UIFNIQUxMIFRIRSBQUk9KRUNUIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUK
LSAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwotICogT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
Ci0gKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotICogT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRgotICogU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmZGVmIF9XSU4zMgotI2RlZmluZSBfQ1JU
X1NFQ1VSRV9OT19XQVJOSU5HUwotI2VuZGlmCi0jaW5jbHVkZSA8c3RkYXJnLmg+Ci0jaW5jbHVk
ZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNp
bmNsdWRlIDxzdGRhcmcuaD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZm5kZWYgX1dJTjMy
Ci0jaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSNpbmNs
dWRlIDxhcnBhL2luZXQuaD4KLSNpbmNsdWRlIDxlcnJuby5oPgotI2luY2x1ZGUgPHB0aHJlYWQu
aD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNlbHNlCi0jaW5jbHVkZSA8d2luc29jazIuaD4KLSNp
bmNsdWRlIDx3czJ0Y3BpcC5oPgotI2VuZGlmCi0jaW5jbHVkZSA8dXNyc2N0cC5oPgotCi0jZGVm
aW5lIE1BWF9QQUNLRVRfU0laRSAoMTw8MTYpCi0jZGVmaW5lIExJTkVfTEVOR1RIIDgwCi0jZGVm
aW5lIERJU0NBUkRfUFBJRCAzOQotCi0jaWZkZWYgX1dJTjMyCi1zdGF0aWMgRFdPUkQgV0lOQVBJ
Ci0jZWxzZQotc3RhdGljIHZvaWQgKgotI2VuZGlmCi1oYW5kbGVfcGFja2V0cyh2b2lkICphcmcp
Ci17Ci0jaWZkZWYgX1dJTjMyCi0JU09DS0VUICpmZHA7Ci0jZWxzZQotCWludCAqZmRwOwotI2Vu
ZGlmCi0Jc3NpemVfdCBsZW5ndGg7Ci0JY2hhciBidWZbTUFYX1BBQ0tFVF9TSVpFXTsKLQotI2lm
ZGVmIF9XSU4zMgotCWZkcCA9IChTT0NLRVQgKilhcmc7Ci0jZWxzZQotCWZkcCA9IChpbnQgKilh
cmc7Ci0jZW5kaWYKLQlmb3IgKDs7KSB7Ci0jaWYgZGVmaW5lZChfX05ldEJTRF9fKQotCQlwdGhy
ZWFkX3Rlc3RjYW5jZWwoKTsKLSNlbmRpZgotCQlsZW5ndGggPSByZWN2KCpmZHAsIGJ1ZiwgTUFY
X1BBQ0tFVF9TSVpFLCAwKTsKLQkJaWYgKGxlbmd0aCA+IDApIHsKLQkJCXVzcnNjdHBfY29ubmlu
cHV0KGZkcCwgYnVmLCAoc2l6ZV90KWxlbmd0aCwgMCk7Ci0JCX0KLQl9Ci0jaWZkZWYgX1dJTjMy
Ci0JcmV0dXJuIDA7Ci0jZWxzZQotCXJldHVybiAoTlVMTCk7Ci0jZW5kaWYKLX0KLQotc3RhdGlj
IGludAotY29ubl9vdXRwdXQodm9pZCAqYWRkciwgdm9pZCAqYnVmZmVyLCBzaXplX3QgbGVuZ3Ro
LCB1aW50OF90IHRvcywgdWludDhfdCBzZXRfZGYpCi17Ci0jaWZkZWYgX1dJTjMyCi0JU09DS0VU
ICpmZHA7Ci0jZWxzZQotCWludCAqZmRwOwotI2VuZGlmCi0KLSNpZmRlZiBfV0lOMzIKLQlmZHAg
PSAoU09DS0VUICopYWRkcjsKLSNlbHNlCi0JZmRwID0gKGludCAqKWFkZHI7Ci0jZW5kaWYKLSNp
ZmRlZiBfV0lOMzIKLQlpZiAoc2VuZCgqZmRwLCBidWZmZXIsIChpbnQpbGVuZ3RoLCAwKSA9PSBT
T0NLRVRfRVJST1IpIHsKLQkJcmV0dXJuIChXU0FHZXRMYXN0RXJyb3IoKSk7Ci0jZWxzZQotCWlm
IChzZW5kKCpmZHAsIGJ1ZmZlciwgbGVuZ3RoLCAwKSA8IDApIHsKLQkJcmV0dXJuIChlcnJubyk7
Ci0jZW5kaWYKLQl9IGVsc2UgewotCQlyZXR1cm4gKDApOwotCX0KLX0KLQotc3RhdGljIHZvaWQK
LWhhbmRsZV9hc3NvY2lhdGlvbl9jaGFuZ2VfZXZlbnQoc3RydWN0IHNjdHBfYXNzb2NfY2hhbmdl
ICpzYWMpCi17Ci0JdW5zaWduZWQgaW50IGksIG47Ci0KLQlwcmludGYoIkFzc29jaWF0aW9uIGNo
YW5nZSAiKTsKLQlzd2l0Y2ggKHNhYy0+c2FjX3N0YXRlKSB7Ci0JY2FzZSBTQ1RQX0NPTU1fVVA6
Ci0JCXByaW50ZigiU0NUUF9DT01NX1VQIik7Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9DT01NX0xP
U1Q6Ci0JCXByaW50ZigiU0NUUF9DT01NX0xPU1QiKTsKLQkJYnJlYWs7Ci0JY2FzZSBTQ1RQX1JF
U1RBUlQ6Ci0JCXByaW50ZigiU0NUUF9SRVNUQVJUIik7Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9T
SFVURE9XTl9DT01QOgotCQlwcmludGYoIlNDVFBfU0hVVERPV05fQ09NUCIpOwotCQlicmVhazsK
LQljYXNlIFNDVFBfQ0FOVF9TVFJfQVNTT0M6Ci0JCXByaW50ZigiU0NUUF9DQU5UX1NUUl9BU1NP
QyIpOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlwcmludGYoIlVOS05PV04iKTsKLQkJYnJlYWs7
Ci0JfQotCXByaW50ZigiLCBzdHJlYW1zIChpbi9vdXQpID0gKCV1LyV1KSIsCi0JICAgICAgIHNh
Yy0+c2FjX2luYm91bmRfc3RyZWFtcywgc2FjLT5zYWNfb3V0Ym91bmRfc3RyZWFtcyk7Ci0JbiA9
IHNhYy0+c2FjX2xlbmd0aCAtIHNpemVvZihzdHJ1Y3Qgc2N0cF9hc3NvY19jaGFuZ2UpOwotCWlm
ICgoKHNhYy0+c2FjX3N0YXRlID09IFNDVFBfQ09NTV9VUCkgfHwKLQkgICAgIChzYWMtPnNhY19z
dGF0ZSA9PSBTQ1RQX1JFU1RBUlQpKSAmJiAobiA+IDApKSB7Ci0JCXByaW50ZigiLCBzdXBwb3J0
cyIpOwotCQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0JCQlzd2l0Y2ggKHNhYy0+c2FjX2lu
Zm9baV0pIHsKLQkJCWNhc2UgU0NUUF9BU1NPQ19TVVBQT1JUU19QUjoKLQkJCQlwcmludGYoIiBQ
UiIpOwotCQkJCWJyZWFrOwotCQkJY2FzZSBTQ1RQX0FTU09DX1NVUFBPUlRTX0FVVEg6Ci0JCQkJ
cHJpbnRmKCIgQVVUSCIpOwotCQkJCWJyZWFrOwotCQkJY2FzZSBTQ1RQX0FTU09DX1NVUFBPUlRT
X0FTQ09ORjoKLQkJCQlwcmludGYoIiBBU0NPTkYiKTsKLQkJCQlicmVhazsKLQkJCWNhc2UgU0NU
UF9BU1NPQ19TVVBQT1JUU19NVUxUSUJVRjoKLQkJCQlwcmludGYoIiBNVUxUSUJVRiIpOwotCQkJ
CWJyZWFrOwotCQkJY2FzZSBTQ1RQX0FTU09DX1NVUFBPUlRTX1JFX0NPTkZJRzoKLQkJCQlwcmlu
dGYoIiBSRS1DT05GSUciKTsKLQkJCQlicmVhazsKLQkJCWRlZmF1bHQ6Ci0JCQkJcHJpbnRmKCIg
VU5LTk9XTigweCUwMngpIiwgc2FjLT5zYWNfaW5mb1tpXSk7Ci0JCQkJYnJlYWs7Ci0JCQl9Ci0J
CX0KLQl9IGVsc2UgaWYgKCgoc2FjLT5zYWNfc3RhdGUgPT0gU0NUUF9DT01NX0xPU1QpIHx8Ci0J
ICAgICAgICAgICAgKHNhYy0+c2FjX3N0YXRlID09IFNDVFBfQ0FOVF9TVFJfQVNTT0MpKSAmJiAo
biA+IDApKSB7Ci0JCXByaW50ZigiLCBBQk9SVCA9Iik7Ci0JCWZvciAoaSA9IDA7IGkgPCBuOyBp
KyspIHsKLQkJCXByaW50ZigiIDB4JTAyeCIsIHNhYy0+c2FjX2luZm9baV0pOwotCQl9Ci0JfQot
CXByaW50ZigiLlxuIik7Ci0JaWYgKChzYWMtPnNhY19zdGF0ZSA9PSBTQ1RQX0NBTlRfU1RSX0FT
U09DKSB8fAotCSAgICAoc2FjLT5zYWNfc3RhdGUgPT0gU0NUUF9TSFVURE9XTl9DT01QKSB8fAot
CSAgICAoc2FjLT5zYWNfc3RhdGUgPT0gU0NUUF9DT01NX0xPU1QpKSB7Ci0JCWV4aXQoMCk7Ci0J
fQotCXJldHVybjsKLX0KLQotc3RhdGljIHZvaWQKLWhhbmRsZV9wZWVyX2FkZHJlc3NfY2hhbmdl
X2V2ZW50KHN0cnVjdCBzY3RwX3BhZGRyX2NoYW5nZSAqc3BjKQotewotCWNoYXIgYWRkcl9idWZb
SU5FVDZfQUREUlNUUkxFTl07Ci0JY29uc3QgY2hhciAqYWRkcjsKLQlzdHJ1Y3Qgc29ja2FkZHJf
aW4gKnNpbjsKLQlzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW42OwotCXN0cnVjdCBzb2NrYWRkcl9j
b25uICpzY29ubjsKLQotCXN3aXRjaCAoc3BjLT5zcGNfYWFkZHIuc3NfZmFtaWx5KSB7Ci0JY2Fz
ZSBBRl9JTkVUOgotCQlzaW4gPSAoc3RydWN0IHNvY2thZGRyX2luICopJnNwYy0+c3BjX2FhZGRy
OwotCQlhZGRyID0gaW5ldF9udG9wKEFGX0lORVQsICZzaW4tPnNpbl9hZGRyLCBhZGRyX2J1Ziwg
SU5FVF9BRERSU1RSTEVOKTsKLQkJYnJlYWs7Ci0JY2FzZSBBRl9JTkVUNjoKLQkJc2luNiA9IChz
dHJ1Y3Qgc29ja2FkZHJfaW42ICopJnNwYy0+c3BjX2FhZGRyOwotCQlhZGRyID0gaW5ldF9udG9w
KEFGX0lORVQ2LCAmc2luNi0+c2luNl9hZGRyLCBhZGRyX2J1ZiwgSU5FVDZfQUREUlNUUkxFTik7
Ci0JCWJyZWFrOwotCWNhc2UgQUZfQ09OTjoKLQkJc2Nvbm4gPSAoc3RydWN0IHNvY2thZGRyX2Nv
bm4gKikmc3BjLT5zcGNfYWFkZHI7Ci0jaWZkZWYgX1dJTjMyCi0JCV9zbnByaW50ZihhZGRyX2J1
ZiwgSU5FVDZfQUREUlNUUkxFTiwgIiVwIiwgc2Nvbm4tPnNjb25uX2FkZHIpOwotI2Vsc2UKLQkJ
c25wcmludGYoYWRkcl9idWYsIElORVQ2X0FERFJTVFJMRU4sICIlcCIsIHNjb25uLT5zY29ubl9h
ZGRyKTsKLSNlbmRpZgotCQlhZGRyID0gYWRkcl9idWY7Ci0JCWJyZWFrOwotCWRlZmF1bHQ6Ci0j
aWZkZWYgX1dJTjMyCi0JCV9zbnByaW50ZihhZGRyX2J1ZiwgSU5FVDZfQUREUlNUUkxFTiwgIlVu
a25vd24gZmFtaWx5ICVkIiwgc3BjLT5zcGNfYWFkZHIuc3NfZmFtaWx5KTsKLSNlbHNlCi0JCXNu
cHJpbnRmKGFkZHJfYnVmLCBJTkVUNl9BRERSU1RSTEVOLCAiVW5rbm93biBmYW1pbHkgJWQiLCBz
cGMtPnNwY19hYWRkci5zc19mYW1pbHkpOwotI2VuZGlmCi0JCWFkZHIgPSBhZGRyX2J1ZjsKLQkJ
YnJlYWs7Ci0JfQotCXByaW50ZigiUGVlciBhZGRyZXNzICVzIGlzIG5vdyAiLCBhZGRyKTsKLQlz
d2l0Y2ggKHNwYy0+c3BjX3N0YXRlKSB7Ci0JY2FzZSBTQ1RQX0FERFJfQVZBSUxBQkxFOgotCQlw
cmludGYoIlNDVFBfQUREUl9BVkFJTEFCTEUiKTsKLQkJYnJlYWs7Ci0JY2FzZSBTQ1RQX0FERFJf
VU5SRUFDSEFCTEU6Ci0JCXByaW50ZigiU0NUUF9BRERSX1VOUkVBQ0hBQkxFIik7Ci0JCWJyZWFr
OwotCWNhc2UgU0NUUF9BRERSX1JFTU9WRUQ6Ci0JCXByaW50ZigiU0NUUF9BRERSX1JFTU9WRUQi
KTsKLQkJYnJlYWs7Ci0JY2FzZSBTQ1RQX0FERFJfQURERUQ6Ci0JCXByaW50ZigiU0NUUF9BRERS
X0FEREVEIik7Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9BRERSX01BREVfUFJJTToKLQkJcHJpbnRm
KCJTQ1RQX0FERFJfTUFERV9QUklNIik7Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9BRERSX0NPTkZJ
Uk1FRDoKLQkJcHJpbnRmKCJTQ1RQX0FERFJfQ09ORklSTUVEIik7Ci0JCWJyZWFrOwotCWRlZmF1
bHQ6Ci0JCXByaW50ZigiVU5LTk9XTiIpOwotCQlicmVhazsKLQl9Ci0JcHJpbnRmKCIgKGVycm9y
ID0gMHglMDh4KS5cbiIsIHNwYy0+c3BjX2Vycm9yKTsKLQlyZXR1cm47Ci19Ci0KLXN0YXRpYyB2
b2lkCi1oYW5kbGVfc2VuZF9mYWlsZWRfZXZlbnQoc3RydWN0IHNjdHBfc2VuZF9mYWlsZWRfZXZl
bnQgKnNzZmUpCi17Ci0Jc2l6ZV90IGksIG47Ci0KLQlpZiAoc3NmZS0+c3NmZV9mbGFncyAmIFND
VFBfREFUQV9VTlNFTlQpIHsKLQkJcHJpbnRmKCJVbnNlbnQgIik7Ci0JfQotCWlmIChzc2ZlLT5z
c2ZlX2ZsYWdzICYgU0NUUF9EQVRBX1NFTlQpIHsKLQkJcHJpbnRmKCJTZW50ICIpOwotCX0KLQlp
ZiAoc3NmZS0+c3NmZV9mbGFncyAmIH4oU0NUUF9EQVRBX1NFTlQgfCBTQ1RQX0RBVEFfVU5TRU5U
KSkgewotCQlwcmludGYoIihmbGFncyA9ICV4KSAiLCBzc2ZlLT5zc2ZlX2ZsYWdzKTsKLQl9Ci0J
cHJpbnRmKCJtZXNzYWdlIHdpdGggUFBJRCA9ICV1LCBTSUQgPSAldSwgZmxhZ3M6IDB4JTA0eCBk
dWUgdG8gZXJyb3IgPSAweCUwOHgiLAotCSAgICAgICBudG9obChzc2ZlLT5zc2ZlX2luZm8uc25k
X3BwaWQpLCBzc2ZlLT5zc2ZlX2luZm8uc25kX3NpZCwKLQkgICAgICAgc3NmZS0+c3NmZV9pbmZv
LnNuZF9mbGFncywgc3NmZS0+c3NmZV9lcnJvcik7Ci0JbiA9IHNzZmUtPnNzZmVfbGVuZ3RoIC0g
c2l6ZW9mKHN0cnVjdCBzY3RwX3NlbmRfZmFpbGVkX2V2ZW50KTsKLQlmb3IgKGkgPSAwOyBpIDwg
bjsgaSsrKSB7Ci0JCXByaW50ZigiIDB4JTAyeCIsIHNzZmUtPnNzZmVfZGF0YVtpXSk7Ci0JfQot
CXByaW50ZigiLlxuIik7Ci0JcmV0dXJuOwotfQotCi1zdGF0aWMgdm9pZAotaGFuZGxlX25vdGlm
aWNhdGlvbih1bmlvbiBzY3RwX25vdGlmaWNhdGlvbiAqbm90aWYsIHNpemVfdCBuKQotewotCWlm
IChub3RpZi0+c25faGVhZGVyLnNuX2xlbmd0aCAhPSAodWludDMyX3QpbikgewotCQlyZXR1cm47
Ci0JfQotCXN3aXRjaCAobm90aWYtPnNuX2hlYWRlci5zbl90eXBlKSB7Ci0JY2FzZSBTQ1RQX0FT
U09DX0NIQU5HRToKLQkJaGFuZGxlX2Fzc29jaWF0aW9uX2NoYW5nZV9ldmVudCgmKG5vdGlmLT5z
bl9hc3NvY19jaGFuZ2UpKTsKLQkJYnJlYWs7Ci0JY2FzZSBTQ1RQX1BFRVJfQUREUl9DSEFOR0U6
Ci0JCWhhbmRsZV9wZWVyX2FkZHJlc3NfY2hhbmdlX2V2ZW50KCYobm90aWYtPnNuX3BhZGRyX2No
YW5nZSkpOwotCQlicmVhazsKLQljYXNlIFNDVFBfUkVNT1RFX0VSUk9SOgotCQlicmVhazsKLQlj
YXNlIFNDVFBfU0hVVERPV05fRVZFTlQ6Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9BREFQVEFUSU9O
X0lORElDQVRJT046Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9QQVJUSUFMX0RFTElWRVJZX0VWRU5U
OgotCQlicmVhazsKLQljYXNlIFNDVFBfQVVUSEVOVElDQVRJT05fRVZFTlQ6Ci0JCWJyZWFrOwot
CWNhc2UgU0NUUF9TRU5ERVJfRFJZX0VWRU5UOgotCQlicmVhazsKLQljYXNlIFNDVFBfTk9USUZJ
Q0FUSU9OU19TVE9QUEVEX0VWRU5UOgotCQlicmVhazsKLQljYXNlIFNDVFBfU0VORF9GQUlMRURf
RVZFTlQ6Ci0JCWhhbmRsZV9zZW5kX2ZhaWxlZF9ldmVudCgmKG5vdGlmLT5zbl9zZW5kX2ZhaWxl
ZF9ldmVudCkpOwotCQlicmVhazsKLQljYXNlIFNDVFBfU1RSRUFNX1JFU0VUX0VWRU5UOgotCQli
cmVhazsKLQljYXNlIFNDVFBfQVNTT0NfUkVTRVRfRVZFTlQ6Ci0JCWJyZWFrOwotCWNhc2UgU0NU
UF9TVFJFQU1fQ0hBTkdFX0VWRU5UOgotCQlicmVhazsKLQlkZWZhdWx0OgotCQlicmVhazsKLQl9
Ci19Ci0KLXN0YXRpYyBpbnQKLXJlY2VpdmVfY2Ioc3RydWN0IHNvY2tldCAqc29jaywgdW5pb24g
c2N0cF9zb2Nrc3RvcmUgYWRkciwgdm9pZCAqZGF0YSwKLSAgICAgICAgICAgc2l6ZV90IGRhdGFs
ZW4sIHN0cnVjdCBzY3RwX3JjdmluZm8gcmN2LCBpbnQgZmxhZ3MsIHZvaWQgKnVscF9pbmZvKQot
ewotCWlmIChkYXRhKSB7Ci0JCWlmIChmbGFncyAmIE1TR19OT1RJRklDQVRJT04pIHsKLQkJCWhh
bmRsZV9ub3RpZmljYXRpb24oKHVuaW9uIHNjdHBfbm90aWZpY2F0aW9uICopZGF0YSwgZGF0YWxl
bik7Ci0JCX0gZWxzZSB7Ci0JCQlwcmludGYoIk1zZyBvZiBsZW5ndGggJWQgcmVjZWl2ZWQgdmlh
ICVwOiV1IG9uIHN0cmVhbSAldSB3aXRoIFNTTiAldSBhbmQgVFNOICV1LCBQUElEICV1LCBjb250
ZXh0ICV1LlxuIiwKLQkJCSAgICAgICAoaW50KWRhdGFsZW4sCi0JCQkgICAgICAgYWRkci5zY29u
bi5zY29ubl9hZGRyLAotCQkJICAgICAgIG50b2hzKGFkZHIuc2Nvbm4uc2Nvbm5fcG9ydCksCi0J
CQkgICAgICAgcmN2LnJjdl9zaWQsCi0JCQkgICAgICAgcmN2LnJjdl9zc24sCi0JCQkgICAgICAg
cmN2LnJjdl90c24sCi0JCQkgICAgICAgbnRvaGwocmN2LnJjdl9wcGlkKSwKLQkJCSAgICAgICBy
Y3YucmN2X2NvbnRleHQpOwotCQl9Ci0JCWZyZWUoZGF0YSk7Ci0JfSBlbHNlIHsKLQkJdXNyc2N0
cF9kZXJlZ2lzdGVyX2FkZHJlc3ModWxwX2luZm8pOwotCQl1c3JzY3RwX2Nsb3NlKHNvY2spOwot
CX0KLQlyZXR1cm4gKDEpOwotfQotCi12b2lkCi1kZWJ1Z19wcmludGYoY29uc3QgY2hhciAqZm9y
bWF0LCAuLi4pCi17Ci0JdmFfbGlzdCBhcDsKLQotCXZhX3N0YXJ0KGFwLCBmb3JtYXQpOwotCXZw
cmludGYoZm9ybWF0LCBhcCk7Ci0JdmFfZW5kKGFwKTsKLX0KLQotaW50Ci1tYWluKGludCBhcmdj
LCBjaGFyICphcmd2W10pCi17Ci0Jc3RydWN0IHNvY2thZGRyX2luIHNpbjsKLQlzdHJ1Y3Qgc29j
a2FkZHJfY29ubiBzY29ubjsKLQlzdHJ1Y3Qgc2N0cF9ldmVudCBldmVudDsKLQl1aW50MTZfdCBl
dmVudF90eXBlc1tdID0ge1NDVFBfQVNTT0NfQ0hBTkdFLAotCSAgICAgICAgICAgICAgICAgICAg
ICAgICAgU0NUUF9QRUVSX0FERFJfQ0hBTkdFLAotCSAgICAgICAgICAgICAgICAgICAgICAgICAg
U0NUUF9TRU5EX0ZBSUxFRF9FVkVOVH07Ci0JdW5zaWduZWQgaW50IGk7Ci0jaWZkZWYgX1dJTjMy
Ci0JU09DS0VUIGZkOwotI2Vsc2UKLQlpbnQgZmQ7Ci0jZW5kaWYKLQlzdHJ1Y3Qgc29ja2V0ICpz
OwotI2lmZGVmIF9XSU4zMgotCUhBTkRMRSB0aWQ7Ci0jZWxzZQotCXB0aHJlYWRfdCB0aWQ7Ci0j
ZW5kaWYKLQlzdHJ1Y3Qgc2N0cF9zbmRpbmZvIHNuZGluZm87Ci0JY2hhciBsaW5lW0xJTkVfTEVO
R1RIXTsKLSNpZmRlZiBfV0lOMzIKLQlXU0FEQVRBIHdzYURhdGE7Ci0jZW5kaWYKLQotCWlmIChh
cmdjIDwgNCkgewotCQlwcmludGYoImVycm9yOiB0aGlzIHByb2dyYW0gcmVxdWlyZXMgNCBhcmd1
bWVudHMhXG4iKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwotCX0KLQotI2lmZGVmIF9XSU4zMgot
CWlmIChXU0FTdGFydHVwKE1BS0VXT1JEKDIsMiksICZ3c2FEYXRhKSAhPSAwKSB7Ci0JCXByaW50
ZigiV1NBU3RhcnR1cCBmYWlsZWRcbiIpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0JfQotI2Vu
ZGlmCi0JdXNyc2N0cF9pbml0KDAsIGNvbm5fb3V0cHV0LCBkZWJ1Z19wcmludGYpOwotCS8qIHNl
dCB1cCBhIGNvbm5lY3RlZCBVRFAgc29ja2V0ICovCi0jaWZkZWYgX1dJTjMyCi0JaWYgKChmZCA9
IHNvY2tldChBRl9JTkVULCBTT0NLX0RHUkFNLCBJUFBST1RPX1VEUCkpID09IElOVkFMSURfU09D
S0VUKSB7Ci0JCXByaW50Zigic29ja2V0KCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBXU0FH
ZXRMYXN0RXJyb3IoKSk7Ci0JCWV4aXQoRVhJVF9GQUlMVVJFKTsKLQl9Ci0jZWxzZQotCWlmICgo
ZmQgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgSVBQUk9UT19VRFApKSA8IDApIHsKLQkJ
cGVycm9yKCJzb2NrZXQiKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwotCX0KLSNlbmRpZgotCW1l
bXNldCgmc2luLCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7Ci0Jc2luLnNpbl9mYW1p
bHkgPSBBRl9JTkVUOwotI2lmZGVmIEhBVkVfU0lOX0xFTgotCXNpbi5zaW5fbGVuID0gc2l6ZW9m
KHN0cnVjdCBzb2NrYWRkcl9pbik7Ci0jZW5kaWYKLQlzaW4uc2luX3BvcnQgPSBodG9ucyhhdG9p
KGFyZ3ZbMl0pKTsKLQlpZiAoIWluZXRfcHRvbihBRl9JTkVULCBhcmd2WzFdLCAmc2luLnNpbl9h
ZGRyLnNfYWRkcikpewotCQlwcmludGYoImVycm9yOiBpbnZhbGlkIGFkZHJlc3NcbiIpOwotCQll
eGl0KEVYSVRfRkFJTFVSRSk7Ci0JfQotI2lmZGVmIF9XSU4zMgotCWlmIChiaW5kKGZkLCAoc3Ry
dWN0IHNvY2thZGRyICopJnNpbiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpID09IFNPQ0tF
VF9FUlJPUikgewotCQlwcmludGYoImJpbmQoKSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIFdT
QUdldExhc3RFcnJvcigpKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwotCX0KLSNlbHNlCi0JaWYg
KGJpbmQoZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luLCBzaXplb2Yoc3RydWN0IHNvY2thZGRy
X2luKSkgPCAwKSB7Ci0JCXBlcnJvcigiYmluZCIpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0J
fQotI2VuZGlmCi0JbWVtc2V0KCZzaW4sIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsK
LQlzaW4uc2luX2ZhbWlseSA9IEFGX0lORVQ7Ci0jaWZkZWYgSEFWRV9TSU5fTEVOCi0Jc2luLnNp
bl9sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKTsKLSNlbmRpZgotCXNpbi5zaW5fcG9y
dCA9IGh0b25zKGF0b2koYXJndls0XSkpOwotCWlmICghaW5ldF9wdG9uKEFGX0lORVQsIGFyZ3Zb
M10sICZzaW4uc2luX2FkZHIuc19hZGRyKSl7Ci0JCXByaW50ZigiZXJyb3I6IGludmFsaWQgYWRk
cmVzc1xuIik7Ci0JCWV4aXQoRVhJVF9GQUlMVVJFKTsKLQl9Ci0jaWZkZWYgX1dJTjMyCi0JaWYg
KGNvbm5lY3QoZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luLCBzaXplb2Yoc3RydWN0IHNvY2th
ZGRyX2luKSkgPT0gU09DS0VUX0VSUk9SKSB7Ci0JCXByaW50ZigiY29ubmVjdCgpIGZhaWxlZCB3
aXRoIGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOwotCQlleGl0KEVYSVRfRkFJTFVS
RSk7Ci0JfQotI2Vsc2UKLQlpZiAoY29ubmVjdChmZCwgKHN0cnVjdCBzb2NrYWRkciAqKSZzaW4s
IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKSA8IDApIHsKLQkJcGVycm9yKCJjb25uZWN0Iik7
Ci0JCWV4aXQoRVhJVF9GQUlMVVJFKTsKLQl9Ci0jZW5kaWYKLSNpZmRlZiBfV0lOMzIKLQl0aWQg
PSBDcmVhdGVUaHJlYWQoTlVMTCwgMCwgJmhhbmRsZV9wYWNrZXRzLCAodm9pZCAqKSZmZCwgMCwg
TlVMTCk7Ci0jZWxzZQotCXB0aHJlYWRfY3JlYXRlKCZ0aWQsIE5VTEwsICZoYW5kbGVfcGFja2V0
cywgKHZvaWQgKikmZmQpOwotI2VuZGlmCi0jaWZkZWYgU0NUUF9ERUJVRwotCXVzcnNjdHBfc3lz
Y3RsX3NldF9zY3RwX2RlYnVnX29uKFNDVFBfREVCVUdfTk9ORSk7Ci0jZW5kaWYKLQl1c3JzY3Rw
X3JlZ2lzdGVyX2FkZHJlc3MoKHZvaWQgKikmZmQpOwotCXVzcnNjdHBfc3lzY3RsX3NldF9zY3Rw
X2Vjbl9lbmFibGUoMCk7Ci0JaWYgKChzID0gdXNyc2N0cF9zb2NrZXQoQUZfQ09OTiwgU09DS19T
VFJFQU0sIElQUFJPVE9fU0NUUCwgcmVjZWl2ZV9jYiwgTlVMTCwgMCwgJmZkKSkgPT0gTlVMTCkg
ewotCQlwZXJyb3IoInVzcnNjdHBfc29ja2V0Iik7Ci0JfQotCS8qIEVuYWJsZSB0aGUgZXZlbnRz
IG9mIGludGVyZXN0LiAqLwotCWlmICh1c3JzY3RwX3NldF9ub25fYmxvY2tpbmcocywgMSkgPCAw
KSB7Ci0JCXBlcnJvcigidXNyc2N0cF9zZXRfbm9uX2Jsb2NraW5nIik7Ci0JfQotCW1lbXNldCgm
ZXZlbnQsIDAsIHNpemVvZihldmVudCkpOwotCWV2ZW50LnNlX2Fzc29jX2lkID0gU0NUUF9BTExf
QVNTT0M7Ci0JZXZlbnQuc2Vfb24gPSAxOwotCWZvciAoaSA9IDA7IGkgPCBzaXplb2YoZXZlbnRf
dHlwZXMpL3NpemVvZih1aW50MTZfdCk7IGkrKykgewotCQlldmVudC5zZV90eXBlID0gZXZlbnRf
dHlwZXNbaV07Ci0JCWlmICh1c3JzY3RwX3NldHNvY2tvcHQocywgSVBQUk9UT19TQ1RQLCBTQ1RQ
X0VWRU5ULCAmZXZlbnQsIHNpemVvZihldmVudCkpIDwgMCkgewotCQkJcGVycm9yKCJzZXRzb2Nr
b3B0IFNDVFBfRVZFTlQiKTsKLQkJfQotCX0KLQltZW1zZXQoJnNjb25uLCAwLCBzaXplb2Yoc3Ry
dWN0IHNvY2thZGRyX2Nvbm4pKTsKLQlzY29ubi5zY29ubl9mYW1pbHkgPSBBRl9DT05OOwotI2lm
ZGVmIEhBVkVfU0NPTk5fTEVOCi0Jc2Nvbm4uc2Nvbm5fbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2Nr
YWRkcl9jb25uKTsKLSNlbmRpZgotCXNjb25uLnNjb25uX3BvcnQgPSBodG9ucyhhdG9pKGFyZ3Zb
NV0pKTsKLQlzY29ubi5zY29ubl9hZGRyID0gJmZkOwotCWlmICh1c3JzY3RwX2JpbmQocywgKHN0
cnVjdCBzb2NrYWRkciAqKSZzY29ubiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9jb25uKSkgPCAw
KSB7Ci0JCXBlcnJvcigidXNyc2N0cF9iaW5kIik7Ci0JfQotCW1lbXNldCgmc2Nvbm4sIDAsIHNp
emVvZihzdHJ1Y3Qgc29ja2FkZHJfY29ubikpOwotCXNjb25uLnNjb25uX2ZhbWlseSA9IEFGX0NP
Tk47Ci0jaWZkZWYgSEFWRV9TQ09OTl9MRU4KLQlzY29ubi5zY29ubl9sZW4gPSBzaXplb2Yoc3Ry
dWN0IHNvY2thZGRyX2Nvbm4pOwotI2VuZGlmCi0Jc2Nvbm4uc2Nvbm5fcG9ydCA9IGh0b25zKGF0
b2koYXJndls2XSkpOwotCXNjb25uLnNjb25uX2FkZHIgPSAmZmQ7Ci0JaWYgKHVzcnNjdHBfY29u
bmVjdChzLCAoc3RydWN0IHNvY2thZGRyICopJnNjb25uLCBzaXplb2Yoc3RydWN0IHNvY2thZGRy
X2Nvbm4pKSA8IDApIHsKLQkJcGVycm9yKCJ1c3JzY3RwX2Nvbm5lY3QiKTsKLQl9Ci0JZm9yICg7
OykgewotI2lmZGVmIF9XSU4zMgotCQlpZiAoZ2V0c19zKGxpbmUsIExJTkVfTEVOR1RIKSA9PSBO
VUxMKSB7Ci0jZWxzZQotCQlpZiAoZmdldHMobGluZSwgTElORV9MRU5HVEgsIHN0ZGluKSA9PSBO
VUxMKSB7Ci0jZW5kaWYKLQkJCWlmICh1c3JzY3RwX3NodXRkb3duKHMsIFNIVVRfV1IpIDwgMCkg
ewotCQkJCXBlcnJvcigidXNyc2N0cF9zaHV0ZG93biIpOwotCQkJfQotCQkJd2hpbGUgKHVzcnNj
dHBfZmluaXNoKCkgIT0gMCkgewotI2lmZGVmIF9XSU4zMgotCQkJCVNsZWVwKDEwMDApOwotI2Vs
c2UKLQkJCQlzbGVlcCgxKTsKLSNlbmRpZgotCQkJfQotCQkJYnJlYWs7Ci0JCX0KLQkJc25kaW5m
by5zbmRfc2lkID0gMTsKLQkJc25kaW5mby5zbmRfZmxhZ3MgPSAwOwotCQlzbmRpbmZvLnNuZF9w
cGlkID0gaHRvbmwoRElTQ0FSRF9QUElEKTsKLQkJc25kaW5mby5zbmRfY29udGV4dCA9IDA7Ci0J
CXNuZGluZm8uc25kX2Fzc29jX2lkID0gMDsKLQkJaWYgKHVzcnNjdHBfc2VuZHYocywgbGluZSwg
c3RybGVuKGxpbmUpLCBOVUxMLCAwLCAodm9pZCAqKSZzbmRpbmZvLAotCSAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHNvY2tsZW5fdClzaXplb2Yoc3RydWN0IHNjdHBfc25kaW5mbyksIFNDVFBf
U0VORFZfU05ESU5GTywgMCkgPCAwKSB7Ci0JCQlwZXJyb3IoInVzcnNjdHBfc2VuZHYiKTsKLQkJ
fQotCX0KLQl3aGlsZSAodXNyc2N0cF9maW5pc2goKSAhPSAwKSB7Ci0jaWZkZWYgX1dJTjMyCi0J
CVNsZWVwKDEwMDApOwotI2Vsc2UKLQkJc2xlZXAoMSk7Ci0jZW5kaWYKLQl9Ci0jaWZkZWYgX1dJ
TjMyCi0JVGVybWluYXRlVGhyZWFkKHRpZCwgMCk7Ci0JV2FpdEZvclNpbmdsZU9iamVjdCh0aWQs
IElORklOSVRFKTsKLQlpZiAoY2xvc2Vzb2NrZXQoZmQpID09IFNPQ0tFVF9FUlJPUikgewotCQlw
cmludGYoImNsb3Nlc29ja2V0KCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBXU0FHZXRMYXN0
RXJyb3IoKSk7Ci0JfQotCVdTQUNsZWFudXAoKTsKLSNlbHNlCi0JcHRocmVhZF9jYW5jZWwodGlk
KTsKLQlwdGhyZWFkX2pvaW4odGlkLCBOVUxMKTsKLQlpZiAoY2xvc2UoZmQpIDwgMCkgewotCQlw
ZXJyb3IoImNsb3NlIik7Ci0JfQotI2VuZGlmCi0JcmV0dXJuICgwKTsKLX0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3Byb2dyYW1zL2Vrcl9zZXJ2ZXIuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2Vrcl9z
ZXJ2ZXIuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTU0NWFiYjMyNjVkLi4wMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvZWtyX3NlcnZlci5jCisrKyAvZGV2L251
bGwKQEAgLTEsMzA2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMyBNaWNo
YWVsIFR1ZXhlbgotICoKLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBwcm9qZWN0IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRy
aWJ1dG9ycwotICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0gKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBQUk9KRUNUIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotICogQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotICogQVJFIERJU0NMQUlNRUQuCUlOIE5PIEVWRU5U
IFNIQUxMIFRIRSBQUk9KRUNUIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSAqIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwotICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0gKiBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVAotICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotICogU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2lmZGVmIF9XSU4zMgotI2RlZmluZSBfQ1JUX1NFQ1VSRV9OT19X
QVJOSU5HUwotI2VuZGlmCi0KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN0ZGxpYi5o
PgotI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUg
PHN0ZGFyZy5oPgotI2lmbmRlZiBfV0lOMzIKLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0jaW5j
bHVkZSA8bmV0aW5ldC9pbi5oPgotI2luY2x1ZGUgPGFycGEvaW5ldC5oPgotI2luY2x1ZGUgPGVy
cm5vLmg+Ci0jaW5jbHVkZSA8cHRocmVhZC5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2Vsc2UK
LSNpbmNsdWRlIDx3aW5zb2NrMi5oPgotI2luY2x1ZGUgPHdzMnRjcGlwLmg+Ci0jZW5kaWYKLSNp
bmNsdWRlIDx1c3JzY3RwLmg+Ci0KLSNkZWZpbmUgUE9SVCA1MDAxCi0jZGVmaW5lIE1BWF9QQUNL
RVRfU0laRSAoMTw8MTYpCi0jZGVmaW5lIFNMRUVQIDEKLQotI2lmZGVmIF9XSU4zMgotc3RhdGlj
IERXT1JEIFdJTkFQSQotI2Vsc2UKLXN0YXRpYyB2b2lkICoKLSNlbmRpZgotaGFuZGxlX3BhY2tl
dHModm9pZCAqYXJnKQotewotI2lmZGVmIF9XSU4zMgotCVNPQ0tFVCAqZmRwOwotI2Vsc2UKLQlp
bnQgKmZkcDsKLSNlbmRpZgotCWNoYXIgYnVmW01BWF9QQUNLRVRfU0laRV07Ci0JY2hhciAqZHVt
cF9idWY7Ci0Jc3NpemVfdCBsZW5ndGg7Ci0KLSNpZmRlZiBfV0lOMzIKLQlmZHAgPSAoU09DS0VU
ICopYXJnOwotI2Vsc2UKLQlmZHAgPSAoaW50ICopYXJnOwotI2VuZGlmCi0JZm9yICg7Oykgewot
I2lmIGRlZmluZWQoX19OZXRCU0RfXykKLQkJcHRocmVhZF90ZXN0Y2FuY2VsKCk7Ci0jZW5kaWYK
LQkJbGVuZ3RoID0gcmVjdigqZmRwLCBidWYsIE1BWF9QQUNLRVRfU0laRSwgMCk7Ci0JCWlmIChs
ZW5ndGggPiAwKSB7Ci0JCQlpZiAoKGR1bXBfYnVmID0gdXNyc2N0cF9kdW1wcGFja2V0KGJ1Ziwg
KHNpemVfdClsZW5ndGgsIFNDVFBfRFVNUF9JTkJPVU5EKSkgIT0gTlVMTCkgewotCQkJCWZwcmlu
dGYoc3RkZXJyLCAiJXMiLCBkdW1wX2J1Zik7Ci0JCQkJdXNyc2N0cF9mcmVlZHVtcGJ1ZmZlcihk
dW1wX2J1Zik7Ci0JCQl9Ci0JCQl1c3JzY3RwX2Nvbm5pbnB1dChmZHAsIGJ1ZiwgKHNpemVfdCls
ZW5ndGgsIDApOwotCQl9Ci0JfQotI2lmZGVmIF9XSU4zMgotCXJldHVybiAwOwotI2Vsc2UKLQly
ZXR1cm4gKE5VTEwpOwotI2VuZGlmCi19Ci0KLXN0YXRpYyBpbnQKLWNvbm5fb3V0cHV0KHZvaWQg
KmFkZHIsIHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbmd0aCwgdWludDhfdCB0b3MsIHVpbnQ4X3Qgc2V0
X2RmKQotewotCWNoYXIgKmR1bXBfYnVmOwotI2lmZGVmIF9XSU4zMgotCVNPQ0tFVCAqZmRwOwot
I2Vsc2UKLQlpbnQgKmZkcDsKLSNlbmRpZgotCi0jaWZkZWYgX1dJTjMyCi0JZmRwID0gKFNPQ0tF
VCAqKWFkZHI7Ci0jZWxzZQotCWZkcCA9IChpbnQgKilhZGRyOwotI2VuZGlmCi0JaWYgKChkdW1w
X2J1ZiA9IHVzcnNjdHBfZHVtcHBhY2tldChidWYsIGxlbmd0aCwgU0NUUF9EVU1QX09VVEJPVU5E
KSkgIT0gTlVMTCkgewotCQlmcHJpbnRmKHN0ZGVyciwgIiVzIiwgZHVtcF9idWYpOwotCQl1c3Jz
Y3RwX2ZyZWVkdW1wYnVmZmVyKGR1bXBfYnVmKTsKLQl9Ci0jaWZkZWYgX1dJTjMyCi0JaWYgKHNl
bmQoKmZkcCwgYnVmLCAoaW50KWxlbmd0aCwgMCkgPT0gU09DS0VUX0VSUk9SKSB7Ci0JCXJldHVy
biAoV1NBR2V0TGFzdEVycm9yKCkpOwotI2Vsc2UKLQlpZiAoc2VuZCgqZmRwLCBidWYsIGxlbmd0
aCwgMCkgPCAwKSB7Ci0JCXJldHVybiAoZXJybm8pOwotI2VuZGlmCi0JfSBlbHNlIHsKLQkJcmV0
dXJuICgwKTsKLQl9Ci19Ci0KLXN0YXRpYyBpbnQKLXJlY2VpdmVfY2Ioc3RydWN0IHNvY2tldCAq
cywgdW5pb24gc2N0cF9zb2Nrc3RvcmUgYWRkciwgdm9pZCAqZGF0YSwKLSAgICAgICAgICAgc2l6
ZV90IGRhdGFsZW4sIHN0cnVjdCBzY3RwX3JjdmluZm8gcmN2LCBpbnQgZmxhZ3MsIHZvaWQgKnVs
cF9pbmZvKQotewotCi0JaWYgKGRhdGEpIHsKLQkJaWYgKGZsYWdzICYgTVNHX05PVElGSUNBVElP
TikgewotCQkJcHJpbnRmKCJOb3RpZmljYXRpb24gb2YgbGVuZ3RoICVkIHJlY2VpdmVkLlxuIiwg
KGludClkYXRhbGVuKTsKLQkJfSBlbHNlIHsKLQkJCXByaW50ZigiTXNnIG9mIGxlbmd0aCAlZCBy
ZWNlaXZlZCB2aWEgJXA6JXUgb24gc3RyZWFtICV1IHdpdGggU1NOICV1IGFuZCBUU04gJXUsIFBQ
SUQgJXUsIGNvbnRleHQgJXUuXG4iLAotCQkJICAgICAgIChpbnQpZGF0YWxlbiwKLQkJCSAgICAg
ICBhZGRyLnNjb25uLnNjb25uX2FkZHIsCi0JCQkgICAgICAgbnRvaHMoYWRkci5zY29ubi5zY29u
bl9wb3J0KSwKLQkJCSAgICAgICByY3YucmN2X3NpZCwKLQkJCSAgICAgICByY3YucmN2X3NzbiwK
LQkJCSAgICAgICByY3YucmN2X3RzbiwKLQkJCSAgICAgICBudG9obChyY3YucmN2X3BwaWQpLAot
CQkJICAgICAgIHJjdi5yY3ZfY29udGV4dCk7Ci0JCX0KLQkJZnJlZShkYXRhKTsKLQl9IGVsc2Ug
ewotCQl1c3JzY3RwX2Nsb3NlKHMpOwotCX0KLQlyZXR1cm4gKDEpOwotfQotCi12b2lkCi1kZWJ1
Z19wcmludGYoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCi17Ci0JdmFfbGlzdCBhcDsKLQotCXZh
X3N0YXJ0KGFwLCBmb3JtYXQpOwotCXZwcmludGYoZm9ybWF0LCBhcCk7Ci0JdmFfZW5kKGFwKTsK
LX0KLQotaW50Ci1tYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi17Ci0Jc3RydWN0IHNvY2th
ZGRyX2luIHNpbjsKLQlzdHJ1Y3Qgc29ja2FkZHJfY29ubiBzY29ubjsKLSNpZmRlZiBfV0lOMzIK
LQlTT0NLRVQgZmQ7Ci0jZWxzZQotCWludCBmZDsKLSNlbmRpZgotCXN0cnVjdCBzb2NrZXQgKnM7
Ci0jaWZkZWYgX1dJTjMyCi0JSEFORExFIHRpZDsKLSNlbHNlCi0JcHRocmVhZF90IHRpZDsKLSNl
bmRpZgotI2lmZGVmIF9XSU4zMgotCVdTQURBVEEgd3NhRGF0YTsKLSNlbmRpZgotCi0JaWYgKGFy
Z2MgPCA0KSB7Ci0JCXByaW50ZigiZXJyb3I6IHRoaXMgcHJvZ3JhbSByZXF1aXJlcyA0IGFyZ3Vt
ZW50cyFcbiIpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0JfQotCi0jaWZkZWYgX1dJTjMyCi0J
aWYgKFdTQVN0YXJ0dXAoTUFLRVdPUkQoMiwyKSwgJndzYURhdGEpICE9IDApIHsKLQkJcHJpbnRm
KCJXU0FTdGFydHVwIGZhaWxlZFxuIik7Ci0JCWV4aXQgKEVYSVRfRkFJTFVSRSk7Ci0JfQotI2Vu
ZGlmCi0JdXNyc2N0cF9pbml0KDAsIGNvbm5fb3V0cHV0LCBkZWJ1Z19wcmludGYpOwotCS8qIHNl
dCB1cCBhIGNvbm5lY3RlZCBVRFAgc29ja2V0ICovCi0jaWZkZWYgX1dJTjMyCi0JaWYgKChmZCA9
IHNvY2tldChBRl9JTkVULCBTT0NLX0RHUkFNLCBJUFBST1RPX1VEUCkpID09IElOVkFMSURfU09D
S0VUKSB7Ci0JCXByaW50Zigic29ja2V0KCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBXU0FH
ZXRMYXN0RXJyb3IoKSk7Ci0JCWV4aXQoRVhJVF9GQUlMVVJFKTsKLQl9Ci0jZWxzZQotCWlmICgo
ZmQgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgSVBQUk9UT19VRFApKSA8IDApIHsKLQkJ
cGVycm9yKCJzb2NrZXQiKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwotCX0KLSNlbmRpZgotCW1l
bXNldCgmc2luLCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7Ci0Jc2luLnNpbl9mYW1p
bHkgPSBBRl9JTkVUOwotI2lmZGVmIEhBVkVfU0lOX0xFTgotCXNpbi5zaW5fbGVuID0gc2l6ZW9m
KHN0cnVjdCBzb2NrYWRkcl9pbik7Ci0jZW5kaWYKLQlzaW4uc2luX3BvcnQgPSBodG9ucyhhdG9p
KGFyZ3ZbMl0pKTsKLQlpZiAoIWluZXRfcHRvbihBRl9JTkVULCBhcmd2WzFdLCAmc2luLnNpbl9h
ZGRyLnNfYWRkcikpewotCQlwcmludGYoImVycm9yOiBpbnZhbGlkIGFkZHJlc3NcbiIpOwotCQll
eGl0KEVYSVRfRkFJTFVSRSk7Ci0JfQotI2lmZGVmIF9XSU4zMgotCWlmIChiaW5kKGZkLCAoc3Ry
dWN0IHNvY2thZGRyICopJnNpbiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpID09IFNPQ0tF
VF9FUlJPUikgewotCQlwcmludGYoImJpbmQoKSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIFdT
QUdldExhc3RFcnJvcigpKTsKLQkJZXhpdChFWElUX0ZBSUxVUkUpOwotCX0KLSNlbHNlCi0JaWYg
KGJpbmQoZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luLCBzaXplb2Yoc3RydWN0IHNvY2thZGRy
X2luKSkgPCAwKSB7Ci0JCXBlcnJvcigiYmluZCIpOwotCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0J
fQotI2VuZGlmCi0JbWVtc2V0KCZzaW4sIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsK
LQlzaW4uc2luX2ZhbWlseSA9IEFGX0lORVQ7Ci0jaWZkZWYgSEFWRV9TSU5fTEVOCi0Jc2luLnNp
bl9sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKTsKLSNlbmRpZgotCXNpbi5zaW5fcG9y
dCA9IGh0b25zKGF0b2koYXJndls0XSkpOwotCWlmICghaW5ldF9wdG9uKEFGX0lORVQsIGFyZ3Zb
M10sICZzaW4uc2luX2FkZHIuc19hZGRyKSl7Ci0JCXByaW50ZigiZXJyb3I6IGludmFsaWQgYWRk
cmVzc1xuIik7Ci0JCWV4aXQoRVhJVF9GQUlMVVJFKTsKLQl9Ci0jaWZkZWYgX1dJTjMyCi0JaWYg
KGNvbm5lY3QoZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luLCBzaXplb2Yoc3RydWN0IHNvY2th
ZGRyX2luKSkgPT0gU09DS0VUX0VSUk9SKSB7Ci0JCXByaW50ZigiY29ubmVjdCgpIGZhaWxlZCB3
aXRoIGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOwotCQlleGl0KEVYSVRfRkFJTFVS
RSk7Ci0JfQotI2Vsc2UKLQlpZiAoY29ubmVjdChmZCwgKHN0cnVjdCBzb2NrYWRkciAqKSZzaW4s
IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKSA8IDApIHsKLQkJcGVycm9yKCJjb25uZWN0Iik7
Ci0JCWV4aXQoRVhJVF9GQUlMVVJFKTsKLQl9Ci0jZW5kaWYKLSNpZmRlZiBTQ1RQX0RFQlVHCi0J
dXNyc2N0cF9zeXNjdGxfc2V0X3NjdHBfZGVidWdfb24oU0NUUF9ERUJVR19OT05FKTsKLSNlbmRp
ZgotCXVzcnNjdHBfc3lzY3RsX3NldF9zY3RwX2Vjbl9lbmFibGUoMCk7Ci0JdXNyc2N0cF9yZWdp
c3Rlcl9hZGRyZXNzKCh2b2lkICopJmZkKTsKLSNpZmRlZiBfV0lOMzIKLQl0aWQgPSBDcmVhdGVU
aHJlYWQoTlVMTCwgMCwgJmhhbmRsZV9wYWNrZXRzLCAodm9pZCAqKSZmZCwgMCwgTlVMTCk7Ci0j
ZWxzZQotCXB0aHJlYWRfY3JlYXRlKCZ0aWQsIE5VTEwsICZoYW5kbGVfcGFja2V0cywgKHZvaWQg
KikmZmQpOwotI2VuZGlmCi0JaWYgKChzID0gdXNyc2N0cF9zb2NrZXQoQUZfQ09OTiwgU09DS19T
VFJFQU0sIElQUFJPVE9fU0NUUCwgcmVjZWl2ZV9jYiwgTlVMTCwgMCwgTlVMTCkpID09IE5VTEwp
IHsKLQkJcGVycm9yKCJ1c3JzY3RwX3NvY2tldCIpOwotCX0KLQltZW1zZXQoJnNjb25uLCAwLCBz
aXplb2Yoc3RydWN0IHNvY2thZGRyX2Nvbm4pKTsKLQlzY29ubi5zY29ubl9mYW1pbHkgPSBBRl9D
T05OOwotI2lmZGVmIEhBVkVfU0NPTk5fTEVOCi0Jc2Nvbm4uc2Nvbm5fbGVuID0gc2l6ZW9mKHN0
cnVjdCBzb2NrYWRkcl9jb25uKTsKLSNlbmRpZgotCXNjb25uLnNjb25uX3BvcnQgPSBodG9ucyhQ
T1JUKTsKLQlzY29ubi5zY29ubl9hZGRyID0gKHZvaWQgKikmZmQ7Ci0JaWYgKHVzcnNjdHBfYmlu
ZChzLCAoc3RydWN0IHNvY2thZGRyICopJnNjb25uLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2Nv
bm4pKSA8IDApIHsKLQkJcGVycm9yKCJ1c3JzY3RwX2JpbmQiKTsKLQl9Ci0JaWYgKHVzcnNjdHBf
bGlzdGVuKHMsIDEpIDwgMCkgewotCQlwZXJyb3IoInVzcnNjdHBfbGlzdGVuIik7Ci0JfQotCXdo
aWxlICgxKSB7Ci0JCWlmICh1c3JzY3RwX2FjY2VwdChzLCBOVUxMLCBOVUxMKSA9PSBOVUxMKSB7
Ci0JCQlwZXJyb3IoInVzcnNjdHBfYWNjZXB0Iik7Ci0JCX0KLQl9Ci0JdXNyc2N0cF9jbG9zZShz
KTsKLQl1c3JzY3RwX2RlcmVnaXN0ZXJfYWRkcmVzcygodm9pZCAqKSZmZCk7Ci0Jd2hpbGUgKHVz
cnNjdHBfZmluaXNoKCkgIT0gMCkgewotI2lmZGVmIF9XSU4zMgotCQlTbGVlcChTTEVFUCAqIDEw
MDApOwotI2Vsc2UKLQkJc2xlZXAoU0xFRVApOwotI2VuZGlmCi0JfQotI2lmZGVmIF9XSU4zMgot
CVRlcm1pbmF0ZVRocmVhZCh0aWQsIDApOwotCVdhaXRGb3JTaW5nbGVPYmplY3QodGlkLCBJTkZJ
TklURSk7Ci0JaWYgKGNsb3Nlc29ja2V0KGZkKSA9PSBTT0NLRVRfRVJST1IpIHsKLQkJcHJpbnRm
KCJjbG9zZXNvY2tldCgpIGZhaWxlZCB3aXRoIGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9y
KCkpOwotCX0KLQlXU0FDbGVhbnVwKCk7Ci0jZWxzZQotCXB0aHJlYWRfY2FuY2VsKHRpZCk7Ci0J
cHRocmVhZF9qb2luKHRpZCwgTlVMTCk7Ci0JaWYgKGNsb3NlKGZkKSA8IDApIHsKLQkJcGVycm9y
KCJjbG9zZSIpOwotCX0KLSNlbmRpZgotCXJldHVybiAoMCk7Ci19CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0
cGxpYi9wcm9ncmFtcy9odHRwX2NsaWVudC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvaHR0cF9jbGll
bnQuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRjMTk3ZjAxMzdiLi4wMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvaHR0cF9jbGllbnQuYworKysgL2Rldi9udWxs
CkBAIC0xLDIzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEZlbGl4IFdlaW5y
YW5rCi0gKgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuIE5laXRoZXIg
dGhlIG5hbWUgb2YgdGhlIHByb2plY3Qgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3Jz
Ci0gKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tIHRoaXMgc29mdHdhcmUKLSAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIFBS
T0pFQ1QgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFCi0gKiBBUkUgRElTQ0xBSU1FRC4JSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIFBST0pFQ1QgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotICogRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTCi0gKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSAqIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUCi0gKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0gKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0gKiBTVUNIIERBTUFH
RS4KLSAqLwotCi0vKgotICogVXNhZ2U6IGh0dHBfY2xpZW50IHJlbW90ZV9hZGRyIHJlbW90ZV9w
b3J0IFtsb2NhbF9wb3J0XSBbbG9jYWxfZW5jYXBzX3BvcnRdIFtyZW1vdGVfZW5jYXBzX3BvcnRd
IFt1cmldCi0gKiAKLSAqIEV4YW1wbGUKLSAqIENsaWVudDogJCAuL2h0dHBfY2xpZW50IDIxMi4y
MDEuMTIxLjEwMCA4MCAwIDk4OTkgOTg5OSAvY2dpLWJpbi9oZQotICogICAgICAgICAgIC4vaHR0
cF9jbGllbnQgMmEwMjpjNmEwOjQwMTU6MTA6OjEwMCA4MCAwIDk4OTkgOTg5OSAvY2dpLWJpbi9o
ZQotICovCi0KLSNpZmRlZiBfV0lOMzIKLSNkZWZpbmUgX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MK
LSNlbmRpZgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVk
ZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8c3RkYXJnLmg+Ci0jaWZuZGVmIF9XSU4zMgotI2luY2x1
ZGUgPHVuaXN0ZC5oPgotI2VuZGlmCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWZuZGVmIF9X
SU4zMgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0j
aW5jbHVkZSA8YXJwYS9pbmV0Lmg+Ci0jZWxzZQotI2luY2x1ZGUgPGlvLmg+Ci0jZW5kaWYKLSNp
bmNsdWRlIDx1c3JzY3RwLmg+Ci0KLWludCBkb25lID0gMDsKLXN0YXRpYyBjb25zdCBjaGFyICpy
ZXF1ZXN0X3ByZWZpeCA9ICJHRVQiOwotc3RhdGljIGNvbnN0IGNoYXIgKnJlcXVlc3RfcG9zdGZp
eCA9ICJIVFRQLzEuMFxyXG5Vc2VyLWFnZW50OiBsaWJ1c3JzY3RwXHJcbkNvbm5lY3Rpb246IGNs
b3NlXHJcblxyXG4iOwotY2hhciByZXF1ZXN0WzUxMl07Ci0KLSNpZmRlZiBfV0lOMzIKLXR5cGVk
ZWYgY2hhciogY2FkZHJfdDsKLSNlbmRpZgotCi1zdGF0aWMgaW50Ci1yZWNlaXZlX2NiKHN0cnVj
dCBzb2NrZXQgKnNvY2ssIHVuaW9uIHNjdHBfc29ja3N0b3JlIGFkZHIsIHZvaWQgKmRhdGEsCi0g
ICAgICAgICAgIHNpemVfdCBkYXRhbGVuLCBzdHJ1Y3Qgc2N0cF9yY3ZpbmZvIHJjdiwgaW50IGZs
YWdzLCB2b2lkICp1bHBfaW5mbykKLXsKLQlpZiAoZGF0YSA9PSBOVUxMKSB7Ci0JCWRvbmUgPSAx
OwotCQl1c3JzY3RwX2Nsb3NlKHNvY2spOwotCX0gZWxzZSB7Ci0jaWZkZWYgX1dJTjMyCi0JCV93
cml0ZShfZmlsZW5vKHN0ZG91dCksIGRhdGEsICh1bnNpZ25lZCBpbnQpZGF0YWxlbik7Ci0jZWxz
ZQotCQlpZiAod3JpdGUoZmlsZW5vKHN0ZG91dCksIGRhdGEsIGRhdGFsZW4pIDwgMCkgewotCQkJ
cGVycm9yKCJ3cml0ZSIpOwotCQl9Ci0jZW5kaWYKLQkJZnJlZShkYXRhKTsKLQl9Ci0JcmV0dXJu
ICgxKTsKLX0KLQotdm9pZAotZGVidWdfcHJpbnRmKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQot
ewotCXZhX2xpc3QgYXA7Ci0KLQl2YV9zdGFydChhcCwgZm9ybWF0KTsKLQl2cHJpbnRmKGZvcm1h
dCwgYXApOwotCXZhX2VuZChhcCk7Ci19Ci0KLWludAotbWFpbihpbnQgYXJnYywgY2hhciAqYXJn
dltdKQotewotCXN0cnVjdCBzb2NrZXQgKnNvY2s7Ci0Jc3RydWN0IHNvY2thZGRyX2luIGFkZHI0
OwotCXN0cnVjdCBzb2NrYWRkcl9pbjYgYWRkcjY7Ci0Jc3RydWN0IHNjdHBfdWRwZW5jYXBzIGVu
Y2FwczsKLQlzdHJ1Y3Qgc2N0cF9zbmRpbmZvIHNuZGluZm87Ci0JaW50IHJlc3VsdDsKLQotICAg
IGlmIChhcmdjIDwgMykgewotICAgICAgICBwcmludGYoIlVzYWdlOiBodHRwX2NsaWVudCByZW1v
dGVfYWRkciByZW1vdGVfcG9ydCBbbG9jYWxfcG9ydF0gW2xvY2FsX2VuY2Fwc19wb3J0XSBbcmVt
b3RlX2VuY2Fwc19wb3J0XSBbdXJpXVxuIik7Ci0gICAgICAgIHJldHVybihFWElUX0ZBSUxVUkUp
OwotICAgIH0KLQotCXJlc3VsdCA9IDA7Ci0JaWYgKGFyZ2MgPiA0KSB7Ci0JCXVzcnNjdHBfaW5p
dChhdG9pKGFyZ3ZbNF0pLCBOVUxMLCBkZWJ1Z19wcmludGYpOwotCX0gZWxzZSB7Ci0JCXVzcnNj
dHBfaW5pdCg5ODk5LCBOVUxMLCBkZWJ1Z19wcmludGYpOwotCX0KLQotI2lmZGVmIFNDVFBfREVC
VUcKLQl1c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9kZWJ1Z19vbihTQ1RQX0RFQlVHX0FMTCk7Ci0j
ZW5kaWYKLQotCXVzcnNjdHBfc3lzY3RsX3NldF9zY3RwX2JsYWNraG9sZSgyKTsKLQotCWlmICgo
c29jayA9IHVzcnNjdHBfc29ja2V0KEFGX0lORVQ2LCBTT0NLX1NUUkVBTSwgSVBQUk9UT19TQ1RQ
LCByZWNlaXZlX2NiLCBOVUxMLCAwLCBOVUxMKSkgPT0gTlVMTCkgewotCQlwZXJyb3IoInVzcnNj
dHBfc29ja2V0Iik7Ci0JCXJlc3VsdCA9IDE7Ci0JCWdvdG8gb3V0OwotCX0KLQotCWlmIChhcmdj
ID4gMykgewotCQltZW1zZXQoKHZvaWQgKikmYWRkcjYsIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2Fk
ZHJfaW42KSk7Ci0jaWZkZWYgSEFWRV9TSU42X0xFTgotCQlhZGRyNi5zaW42X2xlbiA9IHNpemVv
ZihzdHJ1Y3Qgc29ja2FkZHJfaW42KTsKLSNlbmRpZgotCQlhZGRyNi5zaW42X2ZhbWlseSA9IEFG
X0lORVQ2OwotCQlhZGRyNi5zaW42X3BvcnQgPSBodG9ucyhhdG9pKGFyZ3ZbM10pKTsKLQkJYWRk
cjYuc2luNl9hZGRyID0gaW42YWRkcl9hbnk7Ci0JCWlmICh1c3JzY3RwX2JpbmQoc29jaywgKHN0
cnVjdCBzb2NrYWRkciAqKSZhZGRyNiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKSA8IDAp
IHsKLQkJCXBlcnJvcigiYmluZCIpOwotCQkJdXNyc2N0cF9jbG9zZShzb2NrKTsKLQkJCXJlc3Vs
dCA9IDI7Ci0JCQlnb3RvIG91dDsKLQkJfQotCX0KLQotCWlmIChhcmdjID4gNSkgewotCQltZW1z
ZXQoJmVuY2FwcywgMCwgc2l6ZW9mKHN0cnVjdCBzY3RwX3VkcGVuY2FwcykpOwotCQllbmNhcHMu
c3VlX2FkZHJlc3Muc3NfZmFtaWx5ID0gQUZfSU5FVDY7Ci0JCWVuY2Fwcy5zdWVfcG9ydCA9IGh0
b25zKGF0b2koYXJndls1XSkpOwotCQlpZiAodXNyc2N0cF9zZXRzb2Nrb3B0KHNvY2ssIElQUFJP
VE9fU0NUUCwgU0NUUF9SRU1PVEVfVURQX0VOQ0FQU19QT1JULCAoY29uc3Qgdm9pZCAqKSZlbmNh
cHMsIChzb2NrbGVuX3Qpc2l6ZW9mKHN0cnVjdCBzY3RwX3VkcGVuY2FwcykpIDwgMCkgewotCQkJ
cGVycm9yKCJzZXRzb2Nrb3B0Iik7Ci0JCQl1c3JzY3RwX2Nsb3NlKHNvY2spOwotCQkJcmVzdWx0
ID0gMzsKLQkJCWdvdG8gb3V0OwotCQl9Ci0JfQotCi0JaWYgKGFyZ2MgPiA2KSB7Ci0jaWZkZWYg
X1dJTjMyCi0JCV9zbnByaW50ZihyZXF1ZXN0LCBzaXplb2YocmVxdWVzdCksICIlcyAlcyAlcyIs
IHJlcXVlc3RfcHJlZml4LCBhcmd2WzZdLCByZXF1ZXN0X3Bvc3RmaXgpOwotI2Vsc2UKLQkJc25w
cmludGYocmVxdWVzdCwgc2l6ZW9mKHJlcXVlc3QpLCAiJXMgJXMgJXMiLCByZXF1ZXN0X3ByZWZp
eCwgYXJndls2XSwgcmVxdWVzdF9wb3N0Zml4KTsKLSNlbmRpZgotCX0gZWxzZSB7Ci0jaWZkZWYg
X1dJTjMyCi0JCV9zbnByaW50ZihyZXF1ZXN0LCBzaXplb2YocmVxdWVzdCksICIlcyAlcyAlcyIs
IHJlcXVlc3RfcHJlZml4LCAiLyIsIHJlcXVlc3RfcG9zdGZpeCk7Ci0jZWxzZQotCQlzbnByaW50
ZihyZXF1ZXN0LCBzaXplb2YocmVxdWVzdCksICIlcyAlcyAlcyIsIHJlcXVlc3RfcHJlZml4LCAi
LyIsIHJlcXVlc3RfcG9zdGZpeCk7Ci0jZW5kaWYKLQl9Ci0KLQlwcmludGYoIlxuSFRUUCByZXF1
ZXN0OlxuJXNcbiIsIHJlcXVlc3QpOwotCXByaW50ZigiXG5IVFRQIHJlc3BvbnNlOlxuIik7Ci0K
LQltZW1zZXQoKHZvaWQgKikmYWRkcjQsIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsK
LQltZW1zZXQoKHZvaWQgKikmYWRkcjYsIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSk7
Ci0jaWZkZWYgSEFWRV9TSU5fTEVOCi0JYWRkcjQuc2luX2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29j
a2FkZHJfaW4pOwotI2VuZGlmCi0jaWZkZWYgSEFWRV9TSU42X0xFTgotCWFkZHI2LnNpbjZfbGVu
ID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpOwotI2VuZGlmCi0JYWRkcjQuc2luX2ZhbWls
eSA9IEFGX0lORVQ7Ci0JYWRkcjYuc2luNl9mYW1pbHkgPSBBRl9JTkVUNjsKLQlhZGRyNC5zaW5f
cG9ydCA9IGh0b25zKGF0b2koYXJndlsyXSkpOwotCWFkZHI2LnNpbjZfcG9ydCA9IGh0b25zKGF0
b2koYXJndlsyXSkpOwotCWlmIChpbmV0X3B0b24oQUZfSU5FVDYsIGFyZ3ZbMV0sICZhZGRyNi5z
aW42X2FkZHIpID09IDEpIHsKLQkJaWYgKHVzcnNjdHBfY29ubmVjdChzb2NrLCAoc3RydWN0IHNv
Y2thZGRyICopJmFkZHI2LCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNikpIDwgMCkgewotCQkJ
cGVycm9yKCJ1c3JzY3RwX2Nvbm5lY3QiKTsKLQkJCXVzcnNjdHBfY2xvc2Uoc29jayk7Ci0JCQly
ZXN1bHQgPSA0OwotCQkJZ290byBvdXQ7Ci0JCX0KLQl9IGVsc2UgaWYgKGluZXRfcHRvbihBRl9J
TkVULCBhcmd2WzFdLCAmYWRkcjQuc2luX2FkZHIpID09IDEpIHsKLQkJaWYgKHVzcnNjdHBfY29u
bmVjdChzb2NrLCAoc3RydWN0IHNvY2thZGRyICopJmFkZHI0LCBzaXplb2Yoc3RydWN0IHNvY2th
ZGRyX2luKSkgPCAwKSB7Ci0JCQlwZXJyb3IoInVzcnNjdHBfY29ubmVjdCIpOwotCQkJdXNyc2N0
cF9jbG9zZShzb2NrKTsKLQkJCXJlc3VsdCA9IDU7Ci0JCQlnb3RvIG91dDsKLQkJfQotCX0gZWxz
ZSB7Ci0JCXByaW50ZigiSWxsZWdhbCBkZXN0aW5hdGlvbiBhZGRyZXNzXG4iKTsKLQkJdXNyc2N0
cF9jbG9zZShzb2NrKTsKLQkJcmVzdWx0ID0gNjsKLQkJZ290byBvdXQ7Ci0JfQotCi0JbWVtc2V0
KCZzbmRpbmZvLCAwLCBzaXplb2Yoc3RydWN0IHNjdHBfc25kaW5mbykpOwotCXNuZGluZm8uc25k
X3BwaWQgPSBodG9ubCg2Myk7IC8qIFBQSUQgZm9yIEhUVFAvU0NUUCAqLwotCS8qIHNlbmQgR0VU
IHJlcXVlc3QgKi8KLQlpZiAodXNyc2N0cF9zZW5kdihzb2NrLCByZXF1ZXN0LCBzdHJsZW4ocmVx
dWVzdCksIE5VTEwsIDAsICZzbmRpbmZvLCBzaXplb2Yoc3RydWN0IHNjdHBfc25kaW5mbyksIFND
VFBfU0VORFZfU05ESU5GTywgMCkgPCAwKSB7Ci0JCXBlcnJvcigidXNyc2N0cF9zZW5kdiIpOwot
CQl1c3JzY3RwX2Nsb3NlKHNvY2spOwotCQlyZXN1bHQgPSA2OwotCQlnb3RvIG91dDsKLQl9Ci0K
LQl3aGlsZSAoIWRvbmUpIHsKLSNpZmRlZiBfV0lOMzIKLQkJU2xlZXAoMSoxMDAwKTsKLSNlbHNl
Ci0JCXNsZWVwKDEpOwotI2VuZGlmCi0JfQotb3V0OgotCXdoaWxlICh1c3JzY3RwX2ZpbmlzaCgp
ICE9IDApIHsKLSNpZmRlZiBfV0lOMzIKLQkJU2xlZXAoMTAwMCk7Ci0jZWxzZQotCQlzbGVlcCgx
KTsKLSNlbmRpZgotCX0KLQlyZXR1cm4gKHJlc3VsdCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi9wcm9ncmFtcy9ydGN3ZWIuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL3J0Y3dlYi5jCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzU5MDhkODU1NjYuLjAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNy
c2N0cGxpYi9wcm9ncmFtcy9ydGN3ZWIuYworKysgL2Rldi9udWxsCkBAIC0xLDE1MjUgKzAsMCBA
QAotLyotCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxMyBNaWNoYWVsIFR1ZXhlbgotICogQ29w
eXJpZ2h0IChDKSAyMDEyLTIwMTMgSXJlbmUgUnVlbmdlbGVyCi0gKgotICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIHByb2plY3Qg
bm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCi0gKiAgICBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKLSAq
ICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIFBST0pFQ1QgQU5EIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0gKiBB
UkUgRElTQ0xBSU1FRC4JSU4gTk8gRVZFTlQgU0hBTEwgVEhFIFBST0pFQ1QgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRQotICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0g
KiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikKLSAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0gKiBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
Ci0gKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GCi0gKiBTVUNIIERBTUFHRS4KLSAqCi0gKiAkSWQ6IHJ0Y3dlYi5j
LHYgMS4yNiAyMDEyLTA3LTE3IDEzOjUwOjAyIHR1ZXhlbiBFeHAgJAotICovCi0KLS8qCi0gKiBn
Y2MgLVdhbGwgLXN0ZD1jOTkgLXBlZGFudGljIC1vIHJ0Y3dlYiBydGN3ZWIuYyAtbHVzcnNjdHAK
LSAqLwotCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWZkZWYgX1dJTjMyCi0jZGVmaW5lIF9D
UlRfU0VDVVJFX05PX1dBUk5JTkdTCi0jaW5jbHVkZSA8d2luc29jazIuaD4KLSNpbmNsdWRlIDx3
czJ0Y3BpcC5oPgotI2luY2x1ZGUgPGNydGRiZy5oPgotI2Vsc2UKLSNpbmNsdWRlIDxzeXMvc29j
a2V0Lmg+Ci0jaW5jbHVkZSA8c3lzL3NlbGVjdC5oPgotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4K
LSNpbmNsdWRlIDxhcnBhL2luZXQuaD4KLSNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0jaW5jbHVkZSA8
dW5pc3RkLmg+Ci0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzdGRhcmcu
aD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN0
cmluZy5oPgotI2luY2x1ZGUgPGVycm5vLmg+Ci0jaW5jbHVkZSA8dXNyc2N0cC5oPgotCi0jZGVm
aW5lIExJTkVfTEVOR1RIICgxMDI0KQotI2RlZmluZSBCVUZGRVJfU0laRSAoMTw8MTYpCi0jZGVm
aW5lIE5VTUJFUl9PRl9DSEFOTkVMUyAoMTAwKQotI2RlZmluZSBOVU1CRVJfT0ZfU1RSRUFNUyAo
MTAwKQotCi0jZGVmaW5lIERBVEFfQ0hBTk5FTF9QUElEX0NPTlRST0wgICA1MAotI2RlZmluZSBE
QVRBX0NIQU5ORUxfUFBJRF9ET01TVFJJTkcgNTEKLSNkZWZpbmUgREFUQV9DSEFOTkVMX1BQSURf
QklOQVJZICAgIDUyCi0KLSNkZWZpbmUgREFUQV9DSEFOTkVMX0NMT1NFRCAgICAgMAotI2RlZmlu
ZSBEQVRBX0NIQU5ORUxfQ09OTkVDVElORyAxCi0jZGVmaW5lIERBVEFfQ0hBTk5FTF9PUEVOICAg
ICAgIDIKLSNkZWZpbmUgREFUQV9DSEFOTkVMX0NMT1NJTkcgICAgMwotCi0jZGVmaW5lIERBVEFf
Q0hBTk5FTF9GTEFHU19TRU5EX1JFUSAweDAwMDAwMDAxCi0jZGVmaW5lIERBVEFfQ0hBTk5FTF9G
TEFHU19TRU5EX1JTUCAweDAwMDAwMDAyCi0jZGVmaW5lIERBVEFfQ0hBTk5FTF9GTEFHU19TRU5E
X0FDSyAweDAwMDAwMDA0Ci0KLXN0cnVjdCBjaGFubmVsIHsKLQl1aW50MzJfdCBpZDsKLQl1aW50
MzJfdCBwcl92YWx1ZTsKLQl1aW50MTZfdCBwcl9wb2xpY3k7Ci0JdWludDE2X3QgaV9zdHJlYW07
Ci0JdWludDE2X3Qgb19zdHJlYW07Ci0JdWludDhfdCB1bm9yZGVyZWQ7Ci0JdWludDhfdCBzdGF0
ZTsKLQl1aW50MzJfdCBmbGFnczsKLX07Ci0KLXN0cnVjdCBwZWVyX2Nvbm5lY3Rpb24gewotCXN0
cnVjdCBjaGFubmVsIGNoYW5uZWxzW05VTUJFUl9PRl9DSEFOTkVMU107Ci0Jc3RydWN0IGNoYW5u
ZWwgKmlfc3RyZWFtX2NoYW5uZWxbTlVNQkVSX09GX1NUUkVBTVNdOwotCXN0cnVjdCBjaGFubmVs
ICpvX3N0cmVhbV9jaGFubmVsW05VTUJFUl9PRl9TVFJFQU1TXTsKLQl1aW50MTZfdCBvX3N0cmVh
bV9idWZmZXJbTlVNQkVSX09GX1NUUkVBTVNdOwotCXVpbnQzMl90IG9fc3RyZWFtX2J1ZmZlcl9j
b3VudGVyOwotI2lmZGVmIF9XSU4zMgotCUNSSVRJQ0FMX1NFQ1RJT04gbXV0ZXg7Ci0jZWxzZQot
CXB0aHJlYWRfbXV0ZXhfdCBtdXRleDsKLSNlbmRpZgotCXN0cnVjdCBzb2NrZXQgKnNvY2s7Ci19
IHBlZXJfY29ubmVjdGlvbjsKLQotI2RlZmluZSBEQVRBX0NIQU5ORUxfT1BFTl9SRVFVRVNUICAw
Ci0jZGVmaW5lIERBVEFfQ0hBTk5FTF9PUEVOX1JFU1BPTlNFIDEKLSNkZWZpbmUgREFUQV9DSEFO
TkVMX0FDSyAgICAgICAgICAgMgotCi0jZGVmaW5lIERBVEFfQ0hBTk5FTF9SRUxJQUJMRSAgICAg
ICAgICAgICAgICAwCi0jZGVmaW5lIERBVEFfQ0hBTk5FTF9SRUxJQUJMRV9TVFJFQU0gICAgICAg
ICAxCi0jZGVmaW5lIERBVEFfQ0hBTk5FTF9VTlJFTElBQkxFICAgICAgICAgICAgICAyCi0jZGVm
aW5lIERBVEFfQ0hBTk5FTF9QQVJUSUFMX1JFTElBQkxFX1JFWE1JVCAzCi0jZGVmaW5lIERBVEFf
Q0hBTk5FTF9QQVJUSUFMX1JFTElBQkxFX1RJTUVEICA0Ci0KLSNkZWZpbmUgREFUQV9DSEFOTkVM
X0ZMQUdfT1VUX09GX09SREVSX0FMTE9XRUQgMHgwMDAxCi0KLSNpZm5kZWYgX1dJTjMyCi0jZGVm
aW5lIFNDVFBfUEFDS0VEIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpCi0jZWxzZQotI3ByYWdtYSBw
YWNrIChwdXNoLCAxKQotI2RlZmluZSBTQ1RQX1BBQ0tFRAotI2VuZGlmCi0KLXN0cnVjdCBydGN3
ZWJfZGF0YWNoYW5uZWxfb3Blbl9yZXF1ZXN0IHsKLQl1aW50OF90IG1zZ190eXBlOyAvKiBEQVRB
X0NIQU5ORUxfT1BFTl9SRVFVRVNUICovCi0JdWludDhfdCBjaGFubmVsX3R5cGU7Ci0JdWludDE2
X3QgZmxhZ3M7Ci0JdWludDE2X3QgcmVsaWFiaWxpdHlfcGFyYW1zOwotCWludDE2X3QgcHJpb3Jp
dHk7Ci0JY2hhciBsYWJlbFtdOwotfSBTQ1RQX1BBQ0tFRDsKLQotc3RydWN0IHJ0Y3dlYl9kYXRh
Y2hhbm5lbF9vcGVuX3Jlc3BvbnNlIHsKLQl1aW50OF90ICBtc2dfdHlwZTsgLyogREFUQV9DSEFO
TkVMX09QRU5fUkVTUE9OU0UgKi8KLQl1aW50OF90ICBlcnJvcjsKLQl1aW50MTZfdCBmbGFnczsK
LQl1aW50MTZfdCByZXZlcnNlX3N0cmVhbTsKLX0gU0NUUF9QQUNLRUQ7Ci0KLXN0cnVjdCBydGN3
ZWJfZGF0YWNoYW5uZWxfYWNrIHsKLQl1aW50OF90ICBtc2dfdHlwZTsgLyogREFUQV9DSEFOTkVM
X0FDSyAqLwotfSBTQ1RQX1BBQ0tFRDsKLQotI2lmZGVmIF9XSU4zMgotI3ByYWdtYSBwYWNrKHBv
cCkKLSNlbmRpZgotCi0jdW5kZWYgU0NUUF9QQUNLRUQKLQotc3RhdGljIHZvaWQKLWxvY2tfcGVl
cl9jb25uZWN0aW9uKHN0cnVjdCBwZWVyX2Nvbm5lY3Rpb24gKik7Ci0KLXN0YXRpYyB2b2lkCi11
bmxvY2tfcGVlcl9jb25uZWN0aW9uKHN0cnVjdCBwZWVyX2Nvbm5lY3Rpb24gKik7Ci0KLXN0YXRp
YyB2b2lkCi1pbml0X3BlZXJfY29ubmVjdGlvbihzdHJ1Y3QgcGVlcl9jb25uZWN0aW9uICpwYykK
LXsKLQl1aW50MzJfdCBpOwotCXN0cnVjdCBjaGFubmVsICpjaGFubmVsOwotCi0jaWZkZWYgX1dJ
TjMyCi0JSW5pdGlhbGl6ZUNyaXRpY2FsU2VjdGlvbigmKHBjLT5tdXRleCkpOwotI2Vsc2UKLQlw
dGhyZWFkX211dGV4X2luaXQoJnBjLT5tdXRleCwgTlVMTCk7Ci0jZW5kaWYKLQlsb2NrX3BlZXJf
Y29ubmVjdGlvbihwYyk7Ci0JZm9yIChpID0gMDsgaSA8IE5VTUJFUl9PRl9DSEFOTkVMUzsgaSsr
KSB7Ci0JCWNoYW5uZWwgPSAmKHBjLT5jaGFubmVsc1tpXSk7Ci0JCWNoYW5uZWwtPmlkID0gaTsK
LQkJY2hhbm5lbC0+c3RhdGUgPSBEQVRBX0NIQU5ORUxfQ0xPU0VEOwotCQljaGFubmVsLT5wcl9w
b2xpY3kgPSBTQ1RQX1BSX1NDVFBfTk9ORTsKLQkJY2hhbm5lbC0+cHJfdmFsdWUgPSAwOwotCQlj
aGFubmVsLT5pX3N0cmVhbSA9IDA7Ci0JCWNoYW5uZWwtPm9fc3RyZWFtID0gMDsKLQkJY2hhbm5l
bC0+dW5vcmRlcmVkID0gMDsKLQkJY2hhbm5lbC0+ZmxhZ3MgPSAwOwotCX0KLQlmb3IgKGkgPSAw
OyBpIDwgTlVNQkVSX09GX1NUUkVBTVM7IGkrKykgewotCQlwYy0+aV9zdHJlYW1fY2hhbm5lbFtp
XSA9IE5VTEw7Ci0JCXBjLT5vX3N0cmVhbV9jaGFubmVsW2ldID0gTlVMTDsKLQkJcGMtPm9fc3Ry
ZWFtX2J1ZmZlcltpXSA9IDA7Ci0JfQotCXBjLT5vX3N0cmVhbV9idWZmZXJfY291bnRlciA9IDA7
Ci0JcGMtPnNvY2sgPSBOVUxMOwotCXVubG9ja19wZWVyX2Nvbm5lY3Rpb24ocGMpOwotfQotCi1z
dGF0aWMgdm9pZAotbG9ja19wZWVyX2Nvbm5lY3Rpb24oc3RydWN0IHBlZXJfY29ubmVjdGlvbiAq
cGMpCi17Ci0jaWZkZWYgX1dJTjMyCi0JRW50ZXJDcml0aWNhbFNlY3Rpb24oJihwYy0+bXV0ZXgp
KTsKLSNlbHNlCi0JcHRocmVhZF9tdXRleF9sb2NrKCZwYy0+bXV0ZXgpOwotI2VuZGlmCi19Ci0K
LXN0YXRpYyB2b2lkCi11bmxvY2tfcGVlcl9jb25uZWN0aW9uKHN0cnVjdCBwZWVyX2Nvbm5lY3Rp
b24gKnBjKQotewotI2lmZGVmIF9XSU4zMgotCUxlYXZlQ3JpdGljYWxTZWN0aW9uKCYocGMtPm11
dGV4KSk7Ci0jZWxzZQotCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZwYy0+bXV0ZXgpOwotI2VuZGlm
Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgY2hhbm5lbCAqCi1maW5kX2NoYW5uZWxfYnlfaV9zdHJlYW0o
c3RydWN0IHBlZXJfY29ubmVjdGlvbiAqcGMsIHVpbnQxNl90IGlfc3RyZWFtKQotewotCWlmIChp
X3N0cmVhbSA8IE5VTUJFUl9PRl9TVFJFQU1TKSB7Ci0JCXJldHVybiAocGMtPmlfc3RyZWFtX2No
YW5uZWxbaV9zdHJlYW1dKTsKLQl9IGVsc2UgewotCQlyZXR1cm4gKE5VTEwpOwotCX0KLX0KLQot
c3RhdGljIHN0cnVjdCBjaGFubmVsICoKLWZpbmRfY2hhbm5lbF9ieV9vX3N0cmVhbShzdHJ1Y3Qg
cGVlcl9jb25uZWN0aW9uICpwYywgdWludDE2X3Qgb19zdHJlYW0pCi17Ci0JaWYgKG9fc3RyZWFt
IDwgTlVNQkVSX09GX1NUUkVBTVMpIHsKLQkJcmV0dXJuIChwYy0+b19zdHJlYW1fY2hhbm5lbFtv
X3N0cmVhbV0pOwotCX0gZWxzZSB7Ci0JCXJldHVybiAoTlVMTCk7Ci0JfQotfQotCi1zdGF0aWMg
c3RydWN0IGNoYW5uZWwgKgotZmluZF9mcmVlX2NoYW5uZWwoc3RydWN0IHBlZXJfY29ubmVjdGlv
biAqcGMpCi17Ci0JdWludDMyX3QgaTsKLQotCWZvciAoaSA9IDA7IGkgPCBOVU1CRVJfT0ZfQ0hB
Tk5FTFM7IGkrKykgewotCQlpZiAocGMtPmNoYW5uZWxzW2ldLnN0YXRlID09IERBVEFfQ0hBTk5F
TF9DTE9TRUQpIHsKLQkJCWJyZWFrOwotCQl9Ci0JfQotCWlmIChpID09IE5VTUJFUl9PRl9DSEFO
TkVMUykgewotCQlyZXR1cm4gKE5VTEwpOwotCX0gZWxzZSB7Ci0JCXJldHVybiAoJihwYy0+Y2hh
bm5lbHNbaV0pKTsKLQl9Ci19Ci0KLXN0YXRpYyB1aW50MTZfdAotZmluZF9mcmVlX29fc3RyZWFt
KHN0cnVjdCBwZWVyX2Nvbm5lY3Rpb24gKnBjKQotewotCXN0cnVjdCBzY3RwX3N0YXR1cyBzdGF0
dXM7Ci0JdWludDMyX3QgaSwgbGltaXQ7Ci0Jc29ja2xlbl90IGxlbjsKLQotCWxlbiA9IChzb2Nr
bGVuX3Qpc2l6ZW9mKHN0cnVjdCBzY3RwX3N0YXR1cyk7Ci0JaWYgKHVzcnNjdHBfZ2V0c29ja29w
dChwYy0+c29jaywgSVBQUk9UT19TQ1RQLCBTQ1RQX1NUQVRVUywgJnN0YXR1cywgJmxlbikgPCAw
KSB7Ci0JCXBlcnJvcigiZ2V0c29ja29wdCIpOwotCQlyZXR1cm4gKDApOwotCX0KLQlpZiAoc3Rh
dHVzLnNzdGF0X291dHN0cm1zIDwgTlVNQkVSX09GX1NUUkVBTVMpIHsKLQkJbGltaXQgPSBzdGF0
dXMuc3N0YXRfb3V0c3RybXM7Ci0JfSBlbHNlIHsKLQkJbGltaXQgPSBOVU1CRVJfT0ZfU1RSRUFN
UzsKLQl9Ci0JLyogc3RyZWFtIGlkIDAgaXMgcmVzZXJ2ZWQgKi8KLQlmb3IgKGkgPSAxOyBpIDwg
bGltaXQ7IGkrKykgewotCQlpZiAocGMtPm9fc3RyZWFtX2NoYW5uZWxbaV0gPT0gTlVMTCkgewot
CQkJYnJlYWs7Ci0JCX0KLQl9Ci0JaWYgKGkgPT0gbGltaXQpIHsKLQkJcmV0dXJuICgwKTsKLQl9
IGVsc2UgewotCQlyZXR1cm4gKCh1aW50MTZfdClpKTsKLQl9Ci19Ci0KLXN0YXRpYyB2b2lkCi1y
ZXF1ZXN0X21vcmVfb19zdHJlYW1zKHN0cnVjdCBwZWVyX2Nvbm5lY3Rpb24gKnBjKQotewotCXN0
cnVjdCBzY3RwX3N0YXR1cyBzdGF0dXM7Ci0Jc3RydWN0IHNjdHBfYWRkX3N0cmVhbXMgc2FzOwot
CXVpbnQzMl90IGksIG9fc3RyZWFtc19uZWVkZWQ7Ci0Jc29ja2xlbl90IGxlbjsKLQotCW9fc3Ry
ZWFtc19uZWVkZWQgPSAwOwotCWZvciAoaSA9IDA7IGkgPCBOVU1CRVJfT0ZfQ0hBTk5FTFM7IGkr
KykgewotCQlpZiAoKHBjLT5jaGFubmVsc1tpXS5zdGF0ZSA9PSBEQVRBX0NIQU5ORUxfQ09OTkVD
VElORykgJiYKLQkJICAgIChwYy0+Y2hhbm5lbHNbaV0ub19zdHJlYW0gPT0gMCkpIHsKLQkJCW9f
c3RyZWFtc19uZWVkZWQrKzsKLQkJfQotCX0KLQlsZW4gPSAoc29ja2xlbl90KXNpemVvZihzdHJ1
Y3Qgc2N0cF9zdGF0dXMpOwotCWlmICh1c3JzY3RwX2dldHNvY2tvcHQocGMtPnNvY2ssIElQUFJP
VE9fU0NUUCwgU0NUUF9TVEFUVVMsICZzdGF0dXMsICZsZW4pIDwgMCkgewotCQlwZXJyb3IoImdl
dHNvY2tvcHQiKTsKLQkJcmV0dXJuOwotCX0KLQlpZiAoc3RhdHVzLnNzdGF0X291dHN0cm1zICsg
b19zdHJlYW1zX25lZWRlZCA+IE5VTUJFUl9PRl9TVFJFQU1TKSB7Ci0JCW9fc3RyZWFtc19uZWVk
ZWQgPSBOVU1CRVJfT0ZfU1RSRUFNUyAtIHN0YXR1cy5zc3RhdF9vdXRzdHJtczsKLQl9Ci0JaWYg
KG9fc3RyZWFtc19uZWVkZWQgPT0gMCkgewotCQlyZXR1cm47Ci0JfQotCW1lbXNldCgmc2FzLCAw
LCBzaXplb2Yoc3RydWN0IHNjdHBfYWRkX3N0cmVhbXMpKTsKLQlzYXMuc2FzX2luc3RybXMgPSAw
OwotCXNhcy5zYXNfb3V0c3RybXMgPSAodWludDE2X3Qpb19zdHJlYW1zX25lZWRlZDsgLyogWFhY
IGVyb3IgaGFuZGxpbmcgKi8KLQlpZiAodXNyc2N0cF9zZXRzb2Nrb3B0KHBjLT5zb2NrLCBJUFBS
T1RPX1NDVFAsIFNDVFBfQUREX1NUUkVBTVMsICZzYXMsIChzb2NrbGVuX3Qpc2l6ZW9mKHN0cnVj
dCBzY3RwX2FkZF9zdHJlYW1zKSkgPCAwKSB7Ci0JCXBlcnJvcigic2V0c29ja29wdCIpOwotCX0K
LQlyZXR1cm47Ci19Ci0KLXN0YXRpYyBpbnQKLXNlbmRfb3Blbl9yZXF1ZXN0X21lc3NhZ2Uoc3Ry
dWN0IHNvY2tldCAqc29jaywgdWludDE2X3Qgb19zdHJlYW0sIHVpbnQ4X3QgdW5vcmRlcmVkLCB1
aW50MTZfdCBwcl9wb2xpY3ksIHVpbnQzMl90IHByX3ZhbHVlKQotewotCS8qIFhYWDogVGhpcyBz
aG91bGQgYmUgZW5jb2RlZCBpbiBhIGJldHRlciB3YXkgKi8KLQlzdHJ1Y3QgcnRjd2ViX2RhdGFj
aGFubmVsX29wZW5fcmVxdWVzdCByZXE7Ci0Jc3RydWN0IHNjdHBfc25kaW5mbyBzbmRpbmZvOwot
Ci0JbWVtc2V0KCZyZXEsIDAsIHNpemVvZihzdHJ1Y3QgcnRjd2ViX2RhdGFjaGFubmVsX29wZW5f
cmVxdWVzdCkpOwotCXJlcS5tc2dfdHlwZSA9IERBVEFfQ0hBTk5FTF9PUEVOX1JFUVVFU1Q7Ci0J
c3dpdGNoIChwcl9wb2xpY3kpIHsKLQljYXNlIFNDVFBfUFJfU0NUUF9OT05FOgotCQkvKiBYWFg6
IFdoYXQgYWJvdXQgREFUQV9DSEFOTkVMX1JFTElBQkxFX1NUUkVBTSAqLwotCQlyZXEuY2hhbm5l
bF90eXBlID0gREFUQV9DSEFOTkVMX1JFTElBQkxFOwotCQlicmVhazsKLQljYXNlIFNDVFBfUFJf
U0NUUF9UVEw6Ci0JCS8qIFhYWDogV2hhdCBhYm91dCBEQVRBX0NIQU5ORUxfVU5SRUxJQUJMRSAq
LwotCQlyZXEuY2hhbm5lbF90eXBlID0gREFUQV9DSEFOTkVMX1BBUlRJQUxfUkVMSUFCTEVfVElN
RUQ7Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9QUl9TQ1RQX1JUWDoKLQkJcmVxLmNoYW5uZWxfdHlw
ZSA9IERBVEFfQ0hBTk5FTF9QQVJUSUFMX1JFTElBQkxFX1JFWE1JVDsKLQkJYnJlYWs7Ci0JZGVm
YXVsdDoKLQkJcmV0dXJuICgwKTsKLQl9Ci0JcmVxLmZsYWdzID0gaHRvbnMoMCk7Ci0JaWYgKHVu
b3JkZXJlZCkgewotCQlyZXEuZmxhZ3MgfD0gaHRvbnMoREFUQV9DSEFOTkVMX0ZMQUdfT1VUX09G
X09SREVSX0FMTE9XRUQpOwotCX0KLQlyZXEucmVsaWFiaWxpdHlfcGFyYW1zID0gaHRvbnMoKHVp
bnQxNl90KXByX3ZhbHVlKTsgLyogWFhYIFdoeSAxNi1iaXQgKi8KLQlyZXEucHJpb3JpdHkgPSBo
dG9ucygwKTsgLyogWFhYOiBhZGQgc3VwcG9ydCAqLwotCW1lbXNldCgmc25kaW5mbywgMCwgc2l6
ZW9mKHN0cnVjdCBzY3RwX3NuZGluZm8pKTsKLQlzbmRpbmZvLnNuZF9zaWQgPSBvX3N0cmVhbTsK
LQlzbmRpbmZvLnNuZF9mbGFncyA9IFNDVFBfRU9SOwotCXNuZGluZm8uc25kX3BwaWQgPSBodG9u
bChEQVRBX0NIQU5ORUxfUFBJRF9DT05UUk9MKTsKLQlpZiAodXNyc2N0cF9zZW5kdihzb2NrLAot
CSAgICAgICAgICAgICAgICAgICZyZXEsIHNpemVvZihzdHJ1Y3QgcnRjd2ViX2RhdGFjaGFubmVs
X29wZW5fcmVxdWVzdCksCi0JICAgICAgICAgICAgICAgICAgTlVMTCwgMCwKLQkgICAgICAgICAg
ICAgICAgICAmc25kaW5mbywgKHNvY2tsZW5fdClzaXplb2Yoc3RydWN0IHNjdHBfc25kaW5mbyks
Ci0JICAgICAgICAgICAgICAgICAgU0NUUF9TRU5EVl9TTkRJTkZPLCAwKSA8IDApIHsKLQkJcGVy
cm9yKCJzY3RwX3NlbmR2Iik7Ci0JCXJldHVybiAoMCk7Ci0JfSBlbHNlIHsKLQkJcmV0dXJuICgx
KTsKLQl9Ci19Ci0KLXN0YXRpYyBpbnQKLXNlbmRfb3Blbl9yZXNwb25zZV9tZXNzYWdlKHN0cnVj
dCBzb2NrZXQgKnNvY2ssIHVpbnQxNl90IG9fc3RyZWFtLCB1aW50MTZfdCBpX3N0cmVhbSkKLXsK
LQkvKiBYWFg6IFRoaXMgc2hvdWxkIGJlIGVuY29kZWQgaW4gYSBiZXR0ZXIgd2F5ICovCi0Jc3Ry
dWN0IHJ0Y3dlYl9kYXRhY2hhbm5lbF9vcGVuX3Jlc3BvbnNlIHJzcDsKLQlzdHJ1Y3Qgc2N0cF9z
bmRpbmZvIHNuZGluZm87Ci0KLQltZW1zZXQoJnJzcCwgMCwgc2l6ZW9mKHN0cnVjdCBydGN3ZWJf
ZGF0YWNoYW5uZWxfb3Blbl9yZXNwb25zZSkpOwotCXJzcC5tc2dfdHlwZSA9IERBVEFfQ0hBTk5F
TF9PUEVOX1JFU1BPTlNFOwotCXJzcC5lcnJvciA9IDA7Ci0JcnNwLmZsYWdzID0gaHRvbnMoMCk7
Ci0JcnNwLnJldmVyc2Vfc3RyZWFtID0gaHRvbnMoaV9zdHJlYW0pOwotCW1lbXNldCgmc25kaW5m
bywgMCwgc2l6ZW9mKHN0cnVjdCBzY3RwX3NuZGluZm8pKTsKLQlzbmRpbmZvLnNuZF9zaWQgPSBv
X3N0cmVhbTsKLQlzbmRpbmZvLnNuZF9mbGFncyA9IFNDVFBfRU9SOwotCXNuZGluZm8uc25kX3Bw
aWQgPSBodG9ubChEQVRBX0NIQU5ORUxfUFBJRF9DT05UUk9MKTsKLQlpZiAodXNyc2N0cF9zZW5k
dihzb2NrLAotCSAgICAgICAgICAgICAgICAgICZyc3AsIHNpemVvZihzdHJ1Y3QgcnRjd2ViX2Rh
dGFjaGFubmVsX29wZW5fcmVzcG9uc2UpLAotCSAgICAgICAgICAgICAgICAgIE5VTEwsIDAsCi0J
ICAgICAgICAgICAgICAgICAgJnNuZGluZm8sIChzb2NrbGVuX3Qpc2l6ZW9mKHN0cnVjdCBzY3Rw
X3NuZGluZm8pLAotCSAgICAgICAgICAgICAgICAgIFNDVFBfU0VORFZfU05ESU5GTywgMCkgPCAw
KSB7Ci0JCXBlcnJvcigic2N0cF9zZW5kdiIpOwotCQlyZXR1cm4gKDApOwotCX0gZWxzZSB7Ci0J
CXJldHVybiAoMSk7Ci0JfQotfQotCi1zdGF0aWMgaW50Ci1zZW5kX29wZW5fYWNrX21lc3NhZ2Uo
c3RydWN0IHNvY2tldCAqc29jaywgdWludDE2X3Qgb19zdHJlYW0pCi17Ci0JLyogWFhYOiBUaGlz
IHNob3VsZCBiZSBlbmNvZGVkIGluIGEgYmV0dGVyIHdheSAqLwotCXN0cnVjdCBydGN3ZWJfZGF0
YWNoYW5uZWxfYWNrIGFjazsKLQlzdHJ1Y3Qgc2N0cF9zbmRpbmZvIHNuZGluZm87Ci0KLQltZW1z
ZXQoJmFjaywgMCwgc2l6ZW9mKHN0cnVjdCBydGN3ZWJfZGF0YWNoYW5uZWxfYWNrKSk7Ci0JYWNr
Lm1zZ190eXBlID0gREFUQV9DSEFOTkVMX0FDSzsKLQltZW1zZXQoJnNuZGluZm8sIDAsIHNpemVv
ZihzdHJ1Y3Qgc2N0cF9zbmRpbmZvKSk7Ci0Jc25kaW5mby5zbmRfc2lkID0gb19zdHJlYW07Ci0J
c25kaW5mby5zbmRfZmxhZ3MgPSBTQ1RQX0VPUjsKLQlzbmRpbmZvLnNuZF9wcGlkID0gaHRvbmwo
REFUQV9DSEFOTkVMX1BQSURfQ09OVFJPTCk7Ci0JaWYgKHVzcnNjdHBfc2VuZHYoc29jaywKLQkg
ICAgICAgICAgICAgICAgICAmYWNrLCBzaXplb2Yoc3RydWN0IHJ0Y3dlYl9kYXRhY2hhbm5lbF9h
Y2spLAotCSAgICAgICAgICAgICAgICAgIE5VTEwsIDAsCi0JICAgICAgICAgICAgICAgICAgJnNu
ZGluZm8sIChzb2NrbGVuX3Qpc2l6ZW9mKHN0cnVjdCBzY3RwX3NuZGluZm8pLAotCSAgICAgICAg
ICAgICAgICAgIFNDVFBfU0VORFZfU05ESU5GTywgMCkgPCAwKSB7Ci0JCXBlcnJvcigic2N0cF9z
ZW5kdiIpOwotCQlyZXR1cm4gKDApOwotCX0gZWxzZSB7Ci0JCXJldHVybiAoMSk7Ci0JfQotfQot
Ci1zdGF0aWMgdm9pZAotc2VuZF9kZWZlcnJlZF9tZXNzYWdlcyhzdHJ1Y3QgcGVlcl9jb25uZWN0
aW9uICpwYykKLXsKLQl1aW50MzJfdCBpOwotCXN0cnVjdCBjaGFubmVsICpjaGFubmVsOwotCi0J
Zm9yIChpID0gMDsgaSA8IE5VTUJFUl9PRl9DSEFOTkVMUzsgaSsrKSB7Ci0JCWNoYW5uZWwgPSAm
KHBjLT5jaGFubmVsc1tpXSk7Ci0JCWlmIChjaGFubmVsLT5mbGFncyAmIERBVEFfQ0hBTk5FTF9G
TEFHU19TRU5EX1JFUSkgewotCQkJaWYgKHNlbmRfb3Blbl9yZXF1ZXN0X21lc3NhZ2UocGMtPnNv
Y2ssIGNoYW5uZWwtPm9fc3RyZWFtLCBjaGFubmVsLT51bm9yZGVyZWQsIGNoYW5uZWwtPnByX3Bv
bGljeSwgY2hhbm5lbC0+cHJfdmFsdWUpKSB7Ci0JCQkJY2hhbm5lbC0+ZmxhZ3MgJj0gfkRBVEFf
Q0hBTk5FTF9GTEFHU19TRU5EX1JFUTsKLQkJCX0gZWxzZSB7Ci0JCQkJaWYgKGVycm5vICE9IEVB
R0FJTikgewotCQkJCQkvKiBYWFg6IGVycm9yIGhhbmRsaW5nICovCi0JCQkJfQotCQkJfQotCQl9
Ci0JCWlmIChjaGFubmVsLT5mbGFncyAmIERBVEFfQ0hBTk5FTF9GTEFHU19TRU5EX1JTUCkgewot
CQkJaWYgKHNlbmRfb3Blbl9yZXNwb25zZV9tZXNzYWdlKHBjLT5zb2NrLCBjaGFubmVsLT5vX3N0
cmVhbSwgY2hhbm5lbC0+aV9zdHJlYW0pKSB7Ci0JCQkJY2hhbm5lbC0+ZmxhZ3MgJj0gfkRBVEFf
Q0hBTk5FTF9GTEFHU19TRU5EX1JTUDsKLQkJCX0gZWxzZSB7Ci0JCQkJaWYgKGVycm5vICE9IEVB
R0FJTikgewotCQkJCQkvKiBYWFg6IGVycm9yIGhhbmRsaW5nICovCi0JCQkJfQotCQkJfQotCQl9
Ci0JCWlmIChjaGFubmVsLT5mbGFncyAmIERBVEFfQ0hBTk5FTF9GTEFHU19TRU5EX0FDSykgewot
CQkJaWYgKHNlbmRfb3Blbl9hY2tfbWVzc2FnZShwYy0+c29jaywgY2hhbm5lbC0+b19zdHJlYW0p
KSB7Ci0JCQkJY2hhbm5lbC0+ZmxhZ3MgJj0gfkRBVEFfQ0hBTk5FTF9GTEFHU19TRU5EX0FDSzsK
LQkJCX0gZWxzZSB7Ci0JCQkJaWYgKGVycm5vICE9IEVBR0FJTikgewotCQkJCQkvKiBYWFg6IGVy
cm9yIGhhbmRsaW5nICovCi0JCQkJfQotCQkJfQotCQl9Ci0JfQotCXJldHVybjsKLX0KLQotc3Rh
dGljIHN0cnVjdCBjaGFubmVsICoKLW9wZW5fY2hhbm5lbChzdHJ1Y3QgcGVlcl9jb25uZWN0aW9u
ICpwYywgdWludDhfdCB1bm9yZGVyZWQsIHVpbnQxNl90IHByX3BvbGljeSwgdWludDMyX3QgcHJf
dmFsdWUpCi17Ci0Jc3RydWN0IGNoYW5uZWwgKmNoYW5uZWw7Ci0JdWludDE2X3Qgb19zdHJlYW07
Ci0KLQlpZiAoKHByX3BvbGljeSAhPSBTQ1RQX1BSX1NDVFBfTk9ORSkgJiYKLQkgICAgKHByX3Bv
bGljeSAhPSBTQ1RQX1BSX1NDVFBfVFRMKSAmJgotCSAgICAocHJfcG9saWN5ICE9IFNDVFBfUFJf
U0NUUF9SVFgpKSB7Ci0JCXJldHVybiAoTlVMTCk7Ci0JfQotCWlmICgodW5vcmRlcmVkICE9IDAp
ICYmICh1bm9yZGVyZWQgIT0gMSkpIHsKLQkJcmV0dXJuIChOVUxMKTsKLQl9Ci0JaWYgKChwcl9w
b2xpY3kgPT0gU0NUUF9QUl9TQ1RQX05PTkUpICYmIChwcl92YWx1ZSAhPSAwKSkgewotCQlyZXR1
cm4gKE5VTEwpOwotCX0KLQlpZiAoKGNoYW5uZWwgPSBmaW5kX2ZyZWVfY2hhbm5lbChwYykpID09
IE5VTEwpIHsKLQkJcmV0dXJuIChOVUxMKTsKLQl9Ci0Jb19zdHJlYW0gPSBmaW5kX2ZyZWVfb19z
dHJlYW0ocGMpOwotCWNoYW5uZWwtPnN0YXRlID0gREFUQV9DSEFOTkVMX0NPTk5FQ1RJTkc7Ci0J
Y2hhbm5lbC0+dW5vcmRlcmVkID0gdW5vcmRlcmVkOwotCWNoYW5uZWwtPnByX3BvbGljeSA9IHBy
X3BvbGljeTsKLQljaGFubmVsLT5wcl92YWx1ZSA9IHByX3ZhbHVlOwotCWNoYW5uZWwtPm9fc3Ry
ZWFtID0gb19zdHJlYW07Ci0JY2hhbm5lbC0+ZmxhZ3MgPSAwOwotCWlmIChvX3N0cmVhbSA9PSAw
KSB7Ci0JCXJlcXVlc3RfbW9yZV9vX3N0cmVhbXMocGMpOwotCX0gZWxzZSB7Ci0JCWlmIChzZW5k
X29wZW5fcmVxdWVzdF9tZXNzYWdlKHBjLT5zb2NrLCBvX3N0cmVhbSwgdW5vcmRlcmVkLCBwcl9w
b2xpY3ksIHByX3ZhbHVlKSkgewotCQkJcGMtPm9fc3RyZWFtX2NoYW5uZWxbb19zdHJlYW1dID0g
Y2hhbm5lbDsKLQkJfSBlbHNlIHsKLQkJCWlmIChlcnJubyA9PSBFQUdBSU4pIHsKLQkJCQlwYy0+
b19zdHJlYW1fY2hhbm5lbFtvX3N0cmVhbV0gPSBjaGFubmVsOwotCQkJCWNoYW5uZWwtPmZsYWdz
IHw9IERBVEFfQ0hBTk5FTF9GTEFHU19TRU5EX1JFUTsKLQkJCX0gZWxzZSB7Ci0JCQkJY2hhbm5l
bC0+c3RhdGUgPSBEQVRBX0NIQU5ORUxfQ0xPU0VEOwotCQkJCWNoYW5uZWwtPnVub3JkZXJlZCA9
IDA7Ci0JCQkJY2hhbm5lbC0+cHJfcG9saWN5ID0gMDsKLQkJCQljaGFubmVsLT5wcl92YWx1ZSA9
IDA7Ci0JCQkJY2hhbm5lbC0+b19zdHJlYW0gPSAwOwotCQkJCWNoYW5uZWwtPmZsYWdzID0gMDsK
LQkJCQljaGFubmVsID0gTlVMTDsKLQkJCX0KLQkJfQotCX0KLQlyZXR1cm4gKGNoYW5uZWwpOwot
fQotCi1zdGF0aWMgaW50Ci1zZW5kX3VzZXJfbWVzc2FnZShzdHJ1Y3QgcGVlcl9jb25uZWN0aW9u
ICpwYywgc3RydWN0IGNoYW5uZWwgKmNoYW5uZWwsIGNoYXIgKm1lc3NhZ2UsIHNpemVfdCBsZW5n
dGgpCi17Ci0Jc3RydWN0IHNjdHBfc2VuZHZfc3BhIHNwYTsKLQotCWlmIChjaGFubmVsID09IE5V
TEwpIHsKLQkJcmV0dXJuICgwKTsKLQl9Ci0JaWYgKChjaGFubmVsLT5zdGF0ZSAhPSBEQVRBX0NI
QU5ORUxfT1BFTikgJiYKLQkgICAgKGNoYW5uZWwtPnN0YXRlICE9IERBVEFfQ0hBTk5FTF9DT05O
RUNUSU5HKSkgewotCQkvKiBYWFg6IFdoYXQgdG8gZG8gaW4gb3RoZXIgc3RhdGVzICovCi0JCXJl
dHVybiAoMCk7Ci0JfQotCi0JbWVtc2V0KCZzcGEsIDAsIHNpemVvZihzdHJ1Y3Qgc2N0cF9zZW5k
dl9zcGEpKTsKLQlzcGEuc2VuZHZfc25kaW5mby5zbmRfc2lkID0gY2hhbm5lbC0+b19zdHJlYW07
Ci0JaWYgKChjaGFubmVsLT5zdGF0ZSA9PSBEQVRBX0NIQU5ORUxfT1BFTikgJiYKLQkgICAgKGNo
YW5uZWwtPnVub3JkZXJlZCkpIHsKLQkJc3BhLnNlbmR2X3NuZGluZm8uc25kX2ZsYWdzID0gU0NU
UF9FT1IgfCBTQ1RQX1VOT1JERVJFRDsKLQl9IGVsc2UgewotCQlzcGEuc2VuZHZfc25kaW5mby5z
bmRfZmxhZ3MgPSBTQ1RQX0VPUjsKLQl9Ci0Jc3BhLnNlbmR2X3NuZGluZm8uc25kX3BwaWQgPSBo
dG9ubChEQVRBX0NIQU5ORUxfUFBJRF9ET01TVFJJTkcpOwotCXNwYS5zZW5kdl9mbGFncyA9IFND
VFBfU0VORF9TTkRJTkZPX1ZBTElEOwotCWlmICgoY2hhbm5lbC0+cHJfcG9saWN5ID09IFNDVFBf
UFJfU0NUUF9UVEwpIHx8Ci0JICAgIChjaGFubmVsLT5wcl9wb2xpY3kgPT0gU0NUUF9QUl9TQ1RQ
X1JUWCkpIHsKLQkJc3BhLnNlbmR2X3ByaW5mby5wcl9wb2xpY3kgPSBjaGFubmVsLT5wcl9wb2xp
Y3k7Ci0JCXNwYS5zZW5kdl9wcmluZm8ucHJfdmFsdWUgPSBjaGFubmVsLT5wcl92YWx1ZTsKLQkJ
c3BhLnNlbmR2X2ZsYWdzIHw9IFNDVFBfU0VORF9QUklORk9fVkFMSUQ7Ci0JfQotCWlmICh1c3Jz
Y3RwX3NlbmR2KHBjLT5zb2NrLAotCSAgICAgICAgICAgICAgICAgIG1lc3NhZ2UsIGxlbmd0aCwK
LQkgICAgICAgICAgICAgICAgICBOVUxMLCAwLAotCSAgICAgICAgICAgICAgICAgICZzcGEsIChz
b2NrbGVuX3Qpc2l6ZW9mKHN0cnVjdCBzY3RwX3NlbmR2X3NwYSksCi0JICAgICAgICAgICAgICAg
ICAgU0NUUF9TRU5EVl9TUEEsIDApIDwgMCkgewotCQlwZXJyb3IoInNjdHBfc2VuZHYiKTsKLQkJ
cmV0dXJuICgwKTsKLQl9IGVsc2UgewotCQlyZXR1cm4gKDEpOwotCX0KLX0KLQotc3RhdGljIHZv
aWQKLXJlc2V0X291dGdvaW5nX3N0cmVhbShzdHJ1Y3QgcGVlcl9jb25uZWN0aW9uICpwYywgdWlu
dDE2X3Qgb19zdHJlYW0pCi17Ci0JdWludDMyX3QgaTsKLQotCWZvciAoaSA9IDA7IGkgPCBwYy0+
b19zdHJlYW1fYnVmZmVyX2NvdW50ZXI7IGkrKykgewotCQlpZiAocGMtPm9fc3RyZWFtX2J1ZmZl
cltpXSA9PSBvX3N0cmVhbSkgewotCQkJcmV0dXJuOwotCQl9Ci0JfQotCXBjLT5vX3N0cmVhbV9i
dWZmZXJbcGMtPm9fc3RyZWFtX2J1ZmZlcl9jb3VudGVyKytdID0gb19zdHJlYW07Ci0JcmV0dXJu
OwotfQotCi1zdGF0aWMgdm9pZAotc2VuZF9vdXRnb2luZ19zdHJlYW1fcmVzZXQoc3RydWN0IHBl
ZXJfY29ubmVjdGlvbiAqcGMpCi17Ci0Jc3RydWN0IHNjdHBfcmVzZXRfc3RyZWFtcyAqc3JzOwot
CXVpbnQzMl90IGk7Ci0Jc2l6ZV90IGxlbjsKLQotCWlmIChwYy0+b19zdHJlYW1fYnVmZmVyX2Nv
dW50ZXIgPT0gMCkgewotCQlyZXR1cm47Ci0JfQotCWxlbiA9IHNpemVvZihzY3RwX2Fzc29jX3Qp
ICsgKDIgKyBwYy0+b19zdHJlYW1fYnVmZmVyX2NvdW50ZXIpICogc2l6ZW9mKHVpbnQxNl90KTsK
LQlzcnMgPSAoc3RydWN0IHNjdHBfcmVzZXRfc3RyZWFtcyAqKW1hbGxvYyhsZW4pOwotCWlmIChz
cnMgPT0gTlVMTCkgewotCQlyZXR1cm47Ci0JfQotCW1lbXNldChzcnMsIDAsIGxlbik7Ci0Jc3Jz
LT5zcnNfZmxhZ3MgPSBTQ1RQX1NUUkVBTV9SRVNFVF9PVVRHT0lORzsKLQlzcnMtPnNyc19udW1i
ZXJfc3RyZWFtcyA9IHBjLT5vX3N0cmVhbV9idWZmZXJfY291bnRlcjsKLQlmb3IgKGkgPSAwOyBp
IDwgcGMtPm9fc3RyZWFtX2J1ZmZlcl9jb3VudGVyOyBpKyspIHsKLQkJc3JzLT5zcnNfc3RyZWFt
X2xpc3RbaV0gPSBwYy0+b19zdHJlYW1fYnVmZmVyW2ldOwotCX0KLQlpZiAodXNyc2N0cF9zZXRz
b2Nrb3B0KHBjLT5zb2NrLCBJUFBST1RPX1NDVFAsIFNDVFBfUkVTRVRfU1RSRUFNUywgc3JzLCAo
c29ja2xlbl90KWxlbikgPCAwKSB7Ci0JCXBlcnJvcigic2V0c29ja29wdCIpOwotCX0gZWxzZSB7
Ci0JCWZvciAoaSA9IDA7IGkgPCBwYy0+b19zdHJlYW1fYnVmZmVyX2NvdW50ZXI7IGkrKykgewot
CQkJc3JzLT5zcnNfc3RyZWFtX2xpc3RbaV0gPSAwOwotCQl9Ci0JCXBjLT5vX3N0cmVhbV9idWZm
ZXJfY291bnRlciA9IDA7Ci0JfQotCWZyZWUoc3JzKTsKLQlyZXR1cm47Ci19Ci0KLXN0YXRpYyB2
b2lkCi1jbG9zZV9jaGFubmVsKHN0cnVjdCBwZWVyX2Nvbm5lY3Rpb24gKnBjLCBzdHJ1Y3QgY2hh
bm5lbCAqY2hhbm5lbCkKLXsKLQlpZiAoY2hhbm5lbCA9PSBOVUxMKSB7Ci0JCXJldHVybjsKLQl9
Ci0JaWYgKGNoYW5uZWwtPnN0YXRlICE9IERBVEFfQ0hBTk5FTF9PUEVOKSB7Ci0JCXJldHVybjsK
LQl9Ci0JcmVzZXRfb3V0Z29pbmdfc3RyZWFtKHBjLCBjaGFubmVsLT5vX3N0cmVhbSk7Ci0Jc2Vu
ZF9vdXRnb2luZ19zdHJlYW1fcmVzZXQocGMpOwotCWNoYW5uZWwtPnN0YXRlID0gREFUQV9DSEFO
TkVMX0NMT1NJTkc7Ci0JcmV0dXJuOwotfQotCi1zdGF0aWMgdm9pZAotaGFuZGxlX29wZW5fcmVx
dWVzdF9tZXNzYWdlKHN0cnVjdCBwZWVyX2Nvbm5lY3Rpb24gKnBjLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdCBydGN3ZWJfZGF0YWNoYW5uZWxfb3Blbl9yZXF1ZXN0ICpyZXEs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50MTZfdCBpX3N0cmVhbSkKLXsKLQlzdHJ1Y3QgY2hhbm5lbCAq
Y2hhbm5lbDsKLQl1aW50MzJfdCBwcl92YWx1ZTsKLQl1aW50MTZfdCBwcl9wb2xpY3k7Ci0JdWlu
dDE2X3Qgb19zdHJlYW07Ci0JdWludDhfdCB1bm9yZGVyZWQ7Ci0KLQlpZiAoKGNoYW5uZWwgPSBm
aW5kX2NoYW5uZWxfYnlfaV9zdHJlYW0ocGMsIGlfc3RyZWFtKSkpIHsKLQkJcHJpbnRmKCJoYW5k
bGVfb3Blbl9yZXF1ZXN0X21lc3NhZ2U6IGNoYW5uZWwgJWQgaXMgaW4gc3RhdGUgJWQgaW5zdGVh
ZCBvZiBDTE9TRUQuXG4iLAotCQkgICAgICAgY2hhbm5lbC0+aWQsIGNoYW5uZWwtPnN0YXRlKTsK
LQkJLyogWFhYOiBzb21lIGVycm9yIGhhbmRsaW5nICovCi0JCXJldHVybjsKLQl9Ci0JaWYgKChj
aGFubmVsID0gZmluZF9mcmVlX2NoYW5uZWwocGMpKSA9PSBOVUxMKSB7Ci0JCS8qIFhYWDogc29t
ZSBlcnJvciBoYW5kbGluZyAqLwotCQlyZXR1cm47Ci0JfQotCXN3aXRjaCAocmVxLT5jaGFubmVs
X3R5cGUpIHsKLQljYXNlIERBVEFfQ0hBTk5FTF9SRUxJQUJMRToKLQkJcHJfcG9saWN5ID0gU0NU
UF9QUl9TQ1RQX05PTkU7Ci0JCWJyZWFrOwotCS8qIFhYWCBEb2Vzbid0IG1ha2Ugc2Vuc2UgKi8K
LQljYXNlIERBVEFfQ0hBTk5FTF9SRUxJQUJMRV9TVFJFQU06Ci0JCXByX3BvbGljeSA9IFNDVFBf
UFJfU0NUUF9OT05FOwotCQlicmVhazsKLQkvKiBYWFggRG9lc24ndCBtYWtlIHNlbnNlICovCi0J
Y2FzZSBEQVRBX0NIQU5ORUxfVU5SRUxJQUJMRToKLQkJcHJfcG9saWN5ID0gU0NUUF9QUl9TQ1RQ
X1RUTDsKLQkJYnJlYWs7Ci0JY2FzZSBEQVRBX0NIQU5ORUxfUEFSVElBTF9SRUxJQUJMRV9SRVhN
SVQ6Ci0JCXByX3BvbGljeSA9IFNDVFBfUFJfU0NUUF9SVFg7Ci0JCWJyZWFrOwotCWNhc2UgREFU
QV9DSEFOTkVMX1BBUlRJQUxfUkVMSUFCTEVfVElNRUQ6Ci0JCXByX3BvbGljeSA9IFNDVFBfUFJf
U0NUUF9UVEw7Ci0JCWJyZWFrOwotCWRlZmF1bHQ6Ci0JCXByX3BvbGljeSA9IFNDVFBfUFJfU0NU
UF9OT05FOwotCQkvKiBYWFggZXJyb3IgaGFuZGxpbmcgKi8KLQkJYnJlYWs7Ci0JfQotCXByX3Zh
bHVlID0gbnRvaHMocmVxLT5yZWxpYWJpbGl0eV9wYXJhbXMpOwotCWlmIChudG9ocyhyZXEtPmZs
YWdzKSAmIERBVEFfQ0hBTk5FTF9GTEFHX09VVF9PRl9PUkRFUl9BTExPV0VEKSB7Ci0JCXVub3Jk
ZXJlZCA9IDE7Ci0JfSBlbHNlIHsKLQkJdW5vcmRlcmVkID0gMDsKLQl9Ci0Jb19zdHJlYW0gPSBm
aW5kX2ZyZWVfb19zdHJlYW0ocGMpOwotCWNoYW5uZWwtPnN0YXRlID0gREFUQV9DSEFOTkVMX0NP
Tk5FQ1RJTkc7Ci0JY2hhbm5lbC0+dW5vcmRlcmVkID0gdW5vcmRlcmVkOwotCWNoYW5uZWwtPnBy
X3BvbGljeSA9IHByX3BvbGljeTsKLQljaGFubmVsLT5wcl92YWx1ZSA9IHByX3ZhbHVlOwotCWNo
YW5uZWwtPmlfc3RyZWFtID0gaV9zdHJlYW07Ci0JY2hhbm5lbC0+b19zdHJlYW0gPSBvX3N0cmVh
bTsKLQljaGFubmVsLT5mbGFncyA9IDA7Ci0JcGMtPmlfc3RyZWFtX2NoYW5uZWxbaV9zdHJlYW1d
ID0gY2hhbm5lbDsKLQlpZiAob19zdHJlYW0gPT0gMCkgewotCQlyZXF1ZXN0X21vcmVfb19zdHJl
YW1zKHBjKTsKLQl9IGVsc2UgewotCQlpZiAoc2VuZF9vcGVuX3Jlc3BvbnNlX21lc3NhZ2UocGMt
PnNvY2ssIG9fc3RyZWFtLCBpX3N0cmVhbSkpIHsKLQkJCXBjLT5vX3N0cmVhbV9jaGFubmVsW29f
c3RyZWFtXSA9IGNoYW5uZWw7Ci0JCX0gZWxzZSB7Ci0JCQlpZiAoZXJybm8gPT0gRUFHQUlOKSB7
Ci0JCQkJY2hhbm5lbC0+ZmxhZ3MgfD0gREFUQV9DSEFOTkVMX0ZMQUdTX1NFTkRfUlNQOwotCQkJ
CXBjLT5vX3N0cmVhbV9jaGFubmVsW29fc3RyZWFtXSA9IGNoYW5uZWw7Ci0JCQl9IGVsc2Ugewot
CQkJCS8qIFhYWDogU2lnbmFsIGVycm9yIHRvIHRoZSBvdGhlciBlbmQuICovCi0JCQkJcGMtPmlf
c3RyZWFtX2NoYW5uZWxbaV9zdHJlYW1dID0gTlVMTDsKLQkJCQljaGFubmVsLT5zdGF0ZSA9IERB
VEFfQ0hBTk5FTF9DTE9TRUQ7Ci0JCQkJY2hhbm5lbC0+dW5vcmRlcmVkID0gMDsKLQkJCQljaGFu
bmVsLT5wcl9wb2xpY3kgPSAwOwotCQkJCWNoYW5uZWwtPnByX3ZhbHVlID0gMDsKLQkJCQljaGFu
bmVsLT5pX3N0cmVhbSA9IDA7Ci0JCQkJY2hhbm5lbC0+b19zdHJlYW0gPSAwOwotCQkJCWNoYW5u
ZWwtPmZsYWdzID0gMDsKLQkJCX0KLQkJfQotCX0KLX0KLQotc3RhdGljIHZvaWQKLWhhbmRsZV9v
cGVuX3Jlc3BvbnNlX21lc3NhZ2Uoc3RydWN0IHBlZXJfY29ubmVjdGlvbiAqcGMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBydGN3ZWJfZGF0YWNoYW5uZWxfb3Blbl9yZXNw
b25zZSAqcnNwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoLCB1
aW50MTZfdCBpX3N0cmVhbSkKLXsKLQl1aW50MTZfdCBvX3N0cmVhbTsKLQlzdHJ1Y3QgY2hhbm5l
bCAqY2hhbm5lbDsKLQotCW9fc3RyZWFtID0gbnRvaHMocnNwLT5yZXZlcnNlX3N0cmVhbSk7Ci0J
Y2hhbm5lbCA9IGZpbmRfY2hhbm5lbF9ieV9vX3N0cmVhbShwYywgb19zdHJlYW0pOwotCWlmIChj
aGFubmVsID09IE5VTEwpIHsKLQkJLyogWFhYOiBpbXByb3ZlIGVycm9yIGhhbmRsaW5nICovCi0J
CXByaW50ZigiaGFuZGxlX29wZW5fcmVzcG9uc2VfbWVzc2FnZTogQ2FuJ3QgZmluZCBjaGFubmVs
IGZvciBvdXRnb2luZyBzdGVhbSAlZC5cbiIsIG9fc3RyZWFtKTsKLQkJcmV0dXJuOwotCX0KLQlp
ZiAoY2hhbm5lbC0+c3RhdGUgIT0gREFUQV9DSEFOTkVMX0NPTk5FQ1RJTkcpIHsKLQkJLyogWFhY
OiBpbXByb3ZlIGVycm9yIGhhbmRsaW5nICovCi0JCXByaW50ZigiaGFuZGxlX29wZW5fcmVzcG9u
c2VfbWVzc2FnZTogQ2hhbm5lbCB3aXRoIGlkICVkIGZvciBvdXRnb2luZyBzdGVhbSAlZCBpcyBp
biBzdGF0ZSAlZC5cbiIsIGNoYW5uZWwtPmlkLCBvX3N0cmVhbSwgY2hhbm5lbC0+c3RhdGUpOwot
CQlyZXR1cm47Ci0JfQotCWlmIChmaW5kX2NoYW5uZWxfYnlfaV9zdHJlYW0ocGMsIGlfc3RyZWFt
KSkgewotCQkvKiBYWFg6IGltcHJvdmUgZXJyb3IgaGFuZGxpbmcgKi8KLQkJcHJpbnRmKCJoYW5k
bGVfb3Blbl9yZXNwb25zZV9tZXNzYWdlOiBDaGFubmVsIGNvbGxpc2lvbiBmb3IgY2hhbm5lbCB3
aXRoIGlkICVkIGFuZCBzdHJlYW1zIChpbi9vdXQpID0gKCVkLyVkKS5cbiIsIGNoYW5uZWwtPmlk
LCBpX3N0cmVhbSwgb19zdHJlYW0pOwotCQlyZXR1cm47Ci0JfQotCWNoYW5uZWwtPmlfc3RyZWFt
ID0gaV9zdHJlYW07Ci0JY2hhbm5lbC0+c3RhdGUgPSBEQVRBX0NIQU5ORUxfT1BFTjsKLQlwYy0+
aV9zdHJlYW1fY2hhbm5lbFtpX3N0cmVhbV0gPSBjaGFubmVsOwotCWlmIChzZW5kX29wZW5fYWNr
X21lc3NhZ2UocGMtPnNvY2ssIG9fc3RyZWFtKSkgewotCQljaGFubmVsLT5mbGFncyA9IDA7Ci0J
fSBlbHNlIHsKLQkJY2hhbm5lbC0+ZmxhZ3MgfD0gREFUQV9DSEFOTkVMX0ZMQUdTX1NFTkRfQUNL
OwotCX0KLQlyZXR1cm47Ci19Ci0KLXN0YXRpYyB2b2lkCi1oYW5kbGVfb3Blbl9hY2tfbWVzc2Fn
ZShzdHJ1Y3QgcGVlcl9jb25uZWN0aW9uICpwYywKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0
cnVjdCBydGN3ZWJfZGF0YWNoYW5uZWxfYWNrICphY2ssCi0gICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgbGVuZ3RoLCB1aW50MTZfdCBpX3N0cmVhbSkKLXsKLQlzdHJ1Y3QgY2hhbm5lbCAq
Y2hhbm5lbDsKLQotCWNoYW5uZWwgPSBmaW5kX2NoYW5uZWxfYnlfaV9zdHJlYW0ocGMsIGlfc3Ry
ZWFtKTsKLQlpZiAoY2hhbm5lbCA9PSBOVUxMKSB7Ci0JCS8qIFhYWDogc29tZSBlcnJvciBoYW5k
bGluZyAqLwotCQlyZXR1cm47Ci0JfQotCWlmIChjaGFubmVsLT5zdGF0ZSA9PSBEQVRBX0NIQU5O
RUxfT1BFTikgewotCQlyZXR1cm47Ci0JfQotCWlmIChjaGFubmVsLT5zdGF0ZSAhPSBEQVRBX0NI
QU5ORUxfQ09OTkVDVElORykgewotCQkvKiBYWFg6IGVycm9yIGhhbmRsaW5nICovCi0JCXJldHVy
bjsKLQl9Ci0JY2hhbm5lbC0+c3RhdGUgPSBEQVRBX0NIQU5ORUxfT1BFTjsKLQlyZXR1cm47Ci19
Ci0KLXN0YXRpYyB2b2lkCi1oYW5kbGVfdW5rbm93bl9tZXNzYWdlKGNoYXIgKm1zZywgc2l6ZV90
IGxlbmd0aCwgdWludDE2X3QgaV9zdHJlYW0pCi17Ci0JLyogWFhYOiBTZW5kIGFuIGVycm9yIG1l
c3NhZ2UgKi8KLQlyZXR1cm47Ci19Ci0KLXN0YXRpYyB2b2lkCi1oYW5kbGVfZGF0YV9tZXNzYWdl
KHN0cnVjdCBwZWVyX2Nvbm5lY3Rpb24gKnBjLAotICAgICAgICAgICAgICAgICAgICBjaGFyICpi
dWZmZXIsIHNpemVfdCBsZW5ndGgsIHVpbnQxNl90IGlfc3RyZWFtKQotewotCXN0cnVjdCBjaGFu
bmVsICpjaGFubmVsOwotCi0JY2hhbm5lbCA9IGZpbmRfY2hhbm5lbF9ieV9pX3N0cmVhbShwYywg
aV9zdHJlYW0pOwotCWlmIChjaGFubmVsID09IE5VTEwpIHsKLQkJLyogWFhYOiBTb21lIGVycm9y
IGhhbmRsaW5nICovCi0JCXJldHVybjsKLQl9Ci0JaWYgKGNoYW5uZWwtPnN0YXRlID09IERBVEFf
Q0hBTk5FTF9DT05ORUNUSU5HKSB7Ci0JCS8qIEltcGxpY2l0IEFDSyAqLwotCQljaGFubmVsLT5z
dGF0ZSA9IERBVEFfQ0hBTk5FTF9PUEVOOwotCX0KLQlpZiAoY2hhbm5lbC0+c3RhdGUgIT0gREFU
QV9DSEFOTkVMX09QRU4pIHsKLQkJLyogWFhYOiBXaGF0IGFib3V0IG90aGVyIHN0YXRlcz8gKi8K
LQkJLyogWFhYOiBTb21lIGVycm9yIGhhbmRsaW5nICovCi0JCXJldHVybjsKLQl9IGVsc2Ugewot
CQkvKiBBc3N1bWluZyBEQVRBX0NIQU5ORUxfUFBJRF9ET01TVFJJTkcgKi8KLQkJLyogWFhYOiBQ
cm90ZWN0IGZvciBub24gMCB0ZXJtaW5hdGVkIGJ1ZmZlciAqLwotCQlwcmludGYoIk1lc3NhZ2Ug
cmVjZWl2ZWQgb2YgbGVuZ3RoICV6dSBvbiBjaGFubmVsIHdpdGggaWQgJWQ6ICUuKnNcbiIsCi0J
CSAgICAgICBsZW5ndGgsIGNoYW5uZWwtPmlkLCAoaW50KWxlbmd0aCwgYnVmZmVyKTsKLQl9Ci0J
cmV0dXJuOwotfQotCi1zdGF0aWMgdm9pZAotaGFuZGxlX21lc3NhZ2Uoc3RydWN0IHBlZXJfY29u
bmVjdGlvbiAqcGMsIGNoYXIgKmJ1ZmZlciwgc2l6ZV90IGxlbmd0aCwgdWludDMyX3QgcHBpZCwg
dWludDE2X3QgaV9zdHJlYW0pCi17Ci0Jc3RydWN0IHJ0Y3dlYl9kYXRhY2hhbm5lbF9vcGVuX3Jl
cXVlc3QgKnJlcTsKLQlzdHJ1Y3QgcnRjd2ViX2RhdGFjaGFubmVsX29wZW5fcmVzcG9uc2UgKnJz
cDsKLQlzdHJ1Y3QgcnRjd2ViX2RhdGFjaGFubmVsX2FjayAqYWNrLCAqbXNnOwotCi0Jc3dpdGNo
IChwcGlkKSB7Ci0JY2FzZSBEQVRBX0NIQU5ORUxfUFBJRF9DT05UUk9MOgotCQlpZiAobGVuZ3Ro
IDwgc2l6ZW9mKHN0cnVjdCBydGN3ZWJfZGF0YWNoYW5uZWxfYWNrKSkgewotCQkJcmV0dXJuOwot
CQl9Ci0JCW1zZyA9IChzdHJ1Y3QgcnRjd2ViX2RhdGFjaGFubmVsX2FjayAqKWJ1ZmZlcjsKLQkJ
c3dpdGNoIChtc2ctPm1zZ190eXBlKSB7Ci0JCWNhc2UgREFUQV9DSEFOTkVMX09QRU5fUkVRVUVT
VDoKLQkJCWlmIChsZW5ndGggPCBzaXplb2Yoc3RydWN0IHJ0Y3dlYl9kYXRhY2hhbm5lbF9vcGVu
X3JlcXVlc3QpKSB7Ci0JCQkJLyogWFhYOiBlcnJvciBoYW5kbGluZz8gKi8KLQkJCQlyZXR1cm47
Ci0JCQl9Ci0JCQlyZXEgPSAoc3RydWN0IHJ0Y3dlYl9kYXRhY2hhbm5lbF9vcGVuX3JlcXVlc3Qg
KilidWZmZXI7Ci0JCQloYW5kbGVfb3Blbl9yZXF1ZXN0X21lc3NhZ2UocGMsIHJlcSwgbGVuZ3Ro
LCBpX3N0cmVhbSk7Ci0JCQlicmVhazsKLQkJY2FzZSBEQVRBX0NIQU5ORUxfT1BFTl9SRVNQT05T
RToKLQkJCWlmIChsZW5ndGggPCBzaXplb2Yoc3RydWN0IHJ0Y3dlYl9kYXRhY2hhbm5lbF9vcGVu
X3Jlc3BvbnNlKSkgewotCQkJCS8qIFhYWDogZXJyb3IgaGFuZGxpbmc/ICovCi0JCQkJcmV0dXJu
OwotCQkJfQotCQkJcnNwID0gKHN0cnVjdCBydGN3ZWJfZGF0YWNoYW5uZWxfb3Blbl9yZXNwb25z
ZSAqKWJ1ZmZlcjsKLQkJCWhhbmRsZV9vcGVuX3Jlc3BvbnNlX21lc3NhZ2UocGMsIHJzcCwgbGVu
Z3RoLCBpX3N0cmVhbSk7Ci0JCQlicmVhazsKLQkJY2FzZSBEQVRBX0NIQU5ORUxfQUNLOgotCQkJ
aWYgKGxlbmd0aCA8IHNpemVvZihzdHJ1Y3QgcnRjd2ViX2RhdGFjaGFubmVsX2FjaykpIHsKLQkJ
CQkvKiBYWFg6IGVycm9yIGhhbmRsaW5nPyAqLwotCQkJCXJldHVybjsKLQkJCX0KLQkJCWFjayA9
IChzdHJ1Y3QgcnRjd2ViX2RhdGFjaGFubmVsX2FjayAqKWJ1ZmZlcjsKLQkJCWhhbmRsZV9vcGVu
X2Fja19tZXNzYWdlKHBjLCBhY2ssIGxlbmd0aCwgaV9zdHJlYW0pOwotCQkJYnJlYWs7Ci0JCWRl
ZmF1bHQ6Ci0JCQloYW5kbGVfdW5rbm93bl9tZXNzYWdlKGJ1ZmZlciwgbGVuZ3RoLCBpX3N0cmVh
bSk7Ci0JCQlicmVhazsKLQkJfQotCQlicmVhazsKLQljYXNlIERBVEFfQ0hBTk5FTF9QUElEX0RP
TVNUUklORzoKLQljYXNlIERBVEFfQ0hBTk5FTF9QUElEX0JJTkFSWToKLQkJaGFuZGxlX2RhdGFf
bWVzc2FnZShwYywgYnVmZmVyLCBsZW5ndGgsIGlfc3RyZWFtKTsKLQkJYnJlYWs7Ci0JZGVmYXVs
dDoKLQkJcHJpbnRmKCJNZXNzYWdlIG9mIGxlbmd0aCAlenUsIFBQSUQgJXUgb24gc3RyZWFtICV1
IHJlY2VpdmVkLlxuIiwKLQkJICAgICAgIGxlbmd0aCwgcHBpZCwgaV9zdHJlYW0pOwotCQlicmVh
azsKLQl9Ci19Ci0KLXN0YXRpYyB2b2lkCi1oYW5kbGVfYXNzb2NpYXRpb25fY2hhbmdlX2V2ZW50
KHN0cnVjdCBzY3RwX2Fzc29jX2NoYW5nZSAqc2FjKQotewotCXVuc2lnbmVkIGludCBpLCBuOwot
Ci0JcHJpbnRmKCJBc3NvY2lhdGlvbiBjaGFuZ2UgIik7Ci0Jc3dpdGNoIChzYWMtPnNhY19zdGF0
ZSkgewotCWNhc2UgU0NUUF9DT01NX1VQOgotCQlwcmludGYoIlNDVFBfQ09NTV9VUCIpOwotCQli
cmVhazsKLQljYXNlIFNDVFBfQ09NTV9MT1NUOgotCQlwcmludGYoIlNDVFBfQ09NTV9MT1NUIik7
Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9SRVNUQVJUOgotCQlwcmludGYoIlNDVFBfUkVTVEFSVCIp
OwotCQlicmVhazsKLQljYXNlIFNDVFBfU0hVVERPV05fQ09NUDoKLQkJcHJpbnRmKCJTQ1RQX1NI
VVRET1dOX0NPTVAiKTsKLQkJYnJlYWs7Ci0JY2FzZSBTQ1RQX0NBTlRfU1RSX0FTU09DOgotCQlw
cmludGYoIlNDVFBfQ0FOVF9TVFJfQVNTT0MiKTsKLQkJYnJlYWs7Ci0JZGVmYXVsdDoKLQkJcHJp
bnRmKCJVTktOT1dOIik7Ci0JCWJyZWFrOwotCX0KLQlwcmludGYoIiwgc3RyZWFtcyAoaW4vb3V0
KSA9ICgldS8ldSkiLAotCSAgICAgICBzYWMtPnNhY19pbmJvdW5kX3N0cmVhbXMsIHNhYy0+c2Fj
X291dGJvdW5kX3N0cmVhbXMpOwotCW4gPSBzYWMtPnNhY19sZW5ndGggLSBzaXplb2Yoc3RydWN0
IHNjdHBfYXNzb2NfY2hhbmdlKTsKLQlpZiAoKChzYWMtPnNhY19zdGF0ZSA9PSBTQ1RQX0NPTU1f
VVApIHx8Ci0JICAgICAoc2FjLT5zYWNfc3RhdGUgPT0gU0NUUF9SRVNUQVJUKSkgJiYgKG4gPiAw
KSkgewotCQlwcmludGYoIiwgc3VwcG9ydHMiKTsKLQkJZm9yIChpID0gMDsgaSA8IG47IGkrKykg
ewotCQkJc3dpdGNoIChzYWMtPnNhY19pbmZvW2ldKSB7Ci0JCQljYXNlIFNDVFBfQVNTT0NfU1VQ
UE9SVFNfUFI6Ci0JCQkJcHJpbnRmKCIgUFIiKTsKLQkJCQlicmVhazsKLQkJCWNhc2UgU0NUUF9B
U1NPQ19TVVBQT1JUU19BVVRIOgotCQkJCXByaW50ZigiIEFVVEgiKTsKLQkJCQlicmVhazsKLQkJ
CWNhc2UgU0NUUF9BU1NPQ19TVVBQT1JUU19BU0NPTkY6Ci0JCQkJcHJpbnRmKCIgQVNDT05GIik7
Ci0JCQkJYnJlYWs7Ci0JCQljYXNlIFNDVFBfQVNTT0NfU1VQUE9SVFNfTVVMVElCVUY6Ci0JCQkJ
cHJpbnRmKCIgTVVMVElCVUYiKTsKLQkJCQlicmVhazsKLQkJCWNhc2UgU0NUUF9BU1NPQ19TVVBQ
T1JUU19SRV9DT05GSUc6Ci0JCQkJcHJpbnRmKCIgUkUtQ09ORklHIik7Ci0JCQkJYnJlYWs7Ci0J
CQlkZWZhdWx0OgotCQkJCXByaW50ZigiIFVOS05PV04oMHglMDJ4KSIsIHNhYy0+c2FjX2luZm9b
aV0pOwotCQkJCWJyZWFrOwotCQkJfQotCQl9Ci0JfSBlbHNlIGlmICgoKHNhYy0+c2FjX3N0YXRl
ID09IFNDVFBfQ09NTV9MT1NUKSB8fAotCSAgICAgICAgICAgIChzYWMtPnNhY19zdGF0ZSA9PSBT
Q1RQX0NBTlRfU1RSX0FTU09DKSkgJiYgKG4gPiAwKSkgewotCQlwcmludGYoIiwgQUJPUlQgPSIp
OwotCQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0JCQlwcmludGYoIiAweCUwMngiLCBzYWMt
PnNhY19pbmZvW2ldKTsKLQkJfQotCX0KLQlwcmludGYoIi5cbiIpOwotCWlmICgoc2FjLT5zYWNf
c3RhdGUgPT0gU0NUUF9DQU5UX1NUUl9BU1NPQykgfHwKLQkgICAgKHNhYy0+c2FjX3N0YXRlID09
IFNDVFBfU0hVVERPV05fQ09NUCkgfHwKLQkgICAgKHNhYy0+c2FjX3N0YXRlID09IFNDVFBfQ09N
TV9MT1NUKSkgewotCQlleGl0KDApOwotCX0KLQlyZXR1cm47Ci19Ci0KLXN0YXRpYyB2b2lkCi1o
YW5kbGVfcGVlcl9hZGRyZXNzX2NoYW5nZV9ldmVudChzdHJ1Y3Qgc2N0cF9wYWRkcl9jaGFuZ2Ug
KnNwYykKLXsKLQljaGFyIGFkZHJfYnVmW0lORVQ2X0FERFJTVFJMRU5dOwotCWNvbnN0IGNoYXIg
KmFkZHI7Ci0Jc3RydWN0IHNvY2thZGRyX2luICpzaW47Ci0Jc3RydWN0IHNvY2thZGRyX2luNiAq
c2luNjsKLQotCXN3aXRjaCAoc3BjLT5zcGNfYWFkZHIuc3NfZmFtaWx5KSB7Ci0JY2FzZSBBRl9J
TkVUOgotCQlzaW4gPSAoc3RydWN0IHNvY2thZGRyX2luICopJnNwYy0+c3BjX2FhZGRyOwotCQlh
ZGRyID0gaW5ldF9udG9wKEFGX0lORVQsICZzaW4tPnNpbl9hZGRyLCBhZGRyX2J1ZiwgSU5FVF9B
RERSU1RSTEVOKTsKLQkJYnJlYWs7Ci0JY2FzZSBBRl9JTkVUNjoKLQkJc2luNiA9IChzdHJ1Y3Qg
c29ja2FkZHJfaW42ICopJnNwYy0+c3BjX2FhZGRyOwotCQlhZGRyID0gaW5ldF9udG9wKEFGX0lO
RVQ2LCAmc2luNi0+c2luNl9hZGRyLCBhZGRyX2J1ZiwgSU5FVDZfQUREUlNUUkxFTik7Ci0JCWJy
ZWFrOwotCWRlZmF1bHQ6Ci0jaWZkZWYgX1dJTjMyCi0JCV9zbnByaW50ZihhZGRyX2J1ZiwgSU5F
VDZfQUREUlNUUkxFTiwgIlVua25vd24gZmFtaWx5ICVkIiwgc3BjLT5zcGNfYWFkZHIuc3NfZmFt
aWx5KTsKLSNlbHNlCi0JCXNucHJpbnRmKGFkZHJfYnVmLCBJTkVUNl9BRERSU1RSTEVOLCAiVW5r
bm93biBmYW1pbHkgJWQiLCBzcGMtPnNwY19hYWRkci5zc19mYW1pbHkpOwotI2VuZGlmCi0JCWFk
ZHIgPSBhZGRyX2J1ZjsKLQkJYnJlYWs7Ci0JfQotCXByaW50ZigiUGVlciBhZGRyZXNzICVzIGlz
IG5vdyAiLCBhZGRyKTsKLQlzd2l0Y2ggKHNwYy0+c3BjX3N0YXRlKSB7Ci0JY2FzZSBTQ1RQX0FE
RFJfQVZBSUxBQkxFOgotCQlwcmludGYoIlNDVFBfQUREUl9BVkFJTEFCTEUiKTsKLQkJYnJlYWs7
Ci0JY2FzZSBTQ1RQX0FERFJfVU5SRUFDSEFCTEU6Ci0JCXByaW50ZigiU0NUUF9BRERSX1VOUkVB
Q0hBQkxFIik7Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9BRERSX1JFTU9WRUQ6Ci0JCXByaW50Zigi
U0NUUF9BRERSX1JFTU9WRUQiKTsKLQkJYnJlYWs7Ci0JY2FzZSBTQ1RQX0FERFJfQURERUQ6Ci0J
CXByaW50ZigiU0NUUF9BRERSX0FEREVEIik7Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9BRERSX01B
REVfUFJJTToKLQkJcHJpbnRmKCJTQ1RQX0FERFJfTUFERV9QUklNIik7Ci0JCWJyZWFrOwotCWNh
c2UgU0NUUF9BRERSX0NPTkZJUk1FRDoKLQkJcHJpbnRmKCJTQ1RQX0FERFJfQ09ORklSTUVEIik7
Ci0JCWJyZWFrOwotCWRlZmF1bHQ6Ci0JCXByaW50ZigiVU5LTk9XTiIpOwotCQlicmVhazsKLQl9
Ci0JcHJpbnRmKCIgKGVycm9yID0gMHglMDh4KS5cbiIsIHNwYy0+c3BjX2Vycm9yKTsKLQlyZXR1
cm47Ci19Ci0KLXN0YXRpYyB2b2lkCi1oYW5kbGVfYWRhcHRhdGlvbl9pbmRpY2F0aW9uKHN0cnVj
dCBzY3RwX2FkYXB0YXRpb25fZXZlbnQgKnNhaSkKLXsKLQlwcmludGYoIkFkYXB0YXRpb24gaW5k
aWNhdGlvbjogJXguXG4iLCBzYWktPiBzYWlfYWRhcHRhdGlvbl9pbmQpOwotCXJldHVybjsKLX0K
LQotc3RhdGljIHZvaWQKLWhhbmRsZV9zaHV0ZG93bl9ldmVudChzdHJ1Y3Qgc2N0cF9zaHV0ZG93
bl9ldmVudCAqc3NlKQotewotCXByaW50ZigiU2h1dGRvd24gZXZlbnQuXG4iKTsKLQkvKiBYWFg6
IG5vdGlmeSBhbGwgY2hhbm5lbHMuICovCi0JcmV0dXJuOwotfQotCi1zdGF0aWMgdm9pZAotaGFu
ZGxlX3N0cmVhbV9yZXNldF9ldmVudChzdHJ1Y3QgcGVlcl9jb25uZWN0aW9uICpwYywgc3RydWN0
IHNjdHBfc3RyZWFtX3Jlc2V0X2V2ZW50ICpzdHJyc3QpCi17Ci0JdWludDMyX3QgbiwgaTsKLQlz
dHJ1Y3QgY2hhbm5lbCAqY2hhbm5lbDsKLQotCW4gPSAoc3RycnN0LT5zdHJyZXNldF9sZW5ndGgg
LSBzaXplb2Yoc3RydWN0IHNjdHBfc3RyZWFtX3Jlc2V0X2V2ZW50KSkgLyBzaXplb2YodWludDE2
X3QpOwotCXByaW50ZigiU3RyZWFtIHJlc2V0IGV2ZW50OiBmbGFncyA9ICV4LCAiLCBzdHJyc3Qt
PnN0cnJlc2V0X2ZsYWdzKTsKLQlpZiAoc3RycnN0LT5zdHJyZXNldF9mbGFncyAmIFNDVFBfU1RS
RUFNX1JFU0VUX0lOQ09NSU5HX1NTTikgewotCQlpZiAoc3RycnN0LT5zdHJyZXNldF9mbGFncyAm
IFNDVFBfU1RSRUFNX1JFU0VUX09VVEdPSU5HX1NTTikgewotCQkJcHJpbnRmKCJpbmNvbWluZy8i
KTsKLQkJfQotCQlwcmludGYoImluY29taW5nICIpOwotCX0KLQlpZiAoc3RycnN0LT5zdHJyZXNl
dF9mbGFncyAmIFNDVFBfU1RSRUFNX1JFU0VUX09VVEdPSU5HX1NTTikgewotCQlwcmludGYoIm91
dGdvaW5nICIpOwotCX0KLQlwcmludGYoInN0cmVhbSBpZHMgPSAiKTsKLQlmb3IgKGkgPSAwOyBp
IDwgbjsgaSsrKSB7Ci0JCWlmIChpID4gMCkgewotCQkJcHJpbnRmKCIsICIpOwotCQl9Ci0JCXBy
aW50ZigiJWQiLCBzdHJyc3QtPnN0cnJlc2V0X3N0cmVhbV9saXN0W2ldKTsKLQl9Ci0JcHJpbnRm
KCIuXG4iKTsKLQlpZiAoIShzdHJyc3QtPnN0cnJlc2V0X2ZsYWdzICYgU0NUUF9TVFJFQU1fUkVT
RVRfREVOSUVEKSAmJgotCSAgICAhKHN0cnJzdC0+c3RycmVzZXRfZmxhZ3MgJiBTQ1RQX1NUUkVB
TV9SRVNFVF9GQUlMRUQpKSB7Ci0JCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLQkJCWlmIChz
dHJyc3QtPnN0cnJlc2V0X2ZsYWdzICYgU0NUUF9TVFJFQU1fUkVTRVRfSU5DT01JTkdfU1NOKSB7
Ci0JCQkJY2hhbm5lbCA9IGZpbmRfY2hhbm5lbF9ieV9pX3N0cmVhbShwYywgc3RycnN0LT5zdHJy
ZXNldF9zdHJlYW1fbGlzdFtpXSk7Ci0JCQkJaWYgKGNoYW5uZWwgIT0gTlVMTCkgewotCQkJCQlw
Yy0+aV9zdHJlYW1fY2hhbm5lbFtjaGFubmVsLT5pX3N0cmVhbV0gPSBOVUxMOwotCQkJCQljaGFu
bmVsLT5pX3N0cmVhbSA9IDA7Ci0JCQkJCWlmIChjaGFubmVsLT5vX3N0cmVhbSA9PSAwKSB7Ci0J
CQkJCQljaGFubmVsLT5wcl9wb2xpY3kgPSBTQ1RQX1BSX1NDVFBfTk9ORTsKLQkJCQkJCWNoYW5u
ZWwtPnByX3ZhbHVlID0gMDsKLQkJCQkJCWNoYW5uZWwtPnVub3JkZXJlZCA9IDA7Ci0JCQkJCQlj
aGFubmVsLT5mbGFncyA9IDA7Ci0JCQkJCQljaGFubmVsLT5zdGF0ZSA9IERBVEFfQ0hBTk5FTF9D
TE9TRUQ7Ci0JCQkJCX0gZWxzZSB7Ci0JCQkJCQlpZiAoY2hhbm5lbC0+c3RhdGUgPT0gREFUQV9D
SEFOTkVMX09QRU4pIHsKLQkJCQkJCQlyZXNldF9vdXRnb2luZ19zdHJlYW0ocGMsIGNoYW5uZWwt
Pm9fc3RyZWFtKTsKLQkJCQkJCQljaGFubmVsLT5zdGF0ZSA9IERBVEFfQ0hBTk5FTF9DTE9TSU5H
OwotCQkJCQkJfSBlbHNlIHsKLQkJCQkJCQkvKiBYWFg6IFdoYXQgdG8gZG8/ICovCi0JCQkJCQl9
Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0JCQlpZiAoc3RycnN0LT5zdHJyZXNldF9mbGFncyAmIFND
VFBfU1RSRUFNX1JFU0VUX09VVEdPSU5HX1NTTikgewotCQkJCWNoYW5uZWwgPSBmaW5kX2NoYW5u
ZWxfYnlfb19zdHJlYW0ocGMsIHN0cnJzdC0+c3RycmVzZXRfc3RyZWFtX2xpc3RbaV0pOwotCQkJ
CWlmIChjaGFubmVsICE9IE5VTEwpIHsKLQkJCQkJcGMtPm9fc3RyZWFtX2NoYW5uZWxbY2hhbm5l
bC0+b19zdHJlYW1dID0gTlVMTDsKLQkJCQkJY2hhbm5lbC0+b19zdHJlYW0gPSAwOwotCQkJCQlp
ZiAoY2hhbm5lbC0+aV9zdHJlYW0gPT0gMCkgewotCQkJCQkJY2hhbm5lbC0+cHJfcG9saWN5ID0g
U0NUUF9QUl9TQ1RQX05PTkU7Ci0JCQkJCQljaGFubmVsLT5wcl92YWx1ZSA9IDA7Ci0JCQkJCQlj
aGFubmVsLT51bm9yZGVyZWQgPSAwOwotCQkJCQkJY2hhbm5lbC0+ZmxhZ3MgPSAwOwotCQkJCQkJ
Y2hhbm5lbC0+c3RhdGUgPSBEQVRBX0NIQU5ORUxfQ0xPU0VEOwotCQkJCQl9Ci0JCQkJfQotCQkJ
fQotCQl9Ci0JfQotCXJldHVybjsKLX0KLQotc3RhdGljIHZvaWQKLWhhbmRsZV9zdHJlYW1fY2hh
bmdlX2V2ZW50KHN0cnVjdCBwZWVyX2Nvbm5lY3Rpb24gKnBjLCBzdHJ1Y3Qgc2N0cF9zdHJlYW1f
Y2hhbmdlX2V2ZW50ICpzdHJjaGcpCi17Ci0JdWludDE2X3Qgb19zdHJlYW07Ci0JdWludDMyX3Qg
aTsKLQlzdHJ1Y3QgY2hhbm5lbCAqY2hhbm5lbDsKLQotCXByaW50ZigiU3RyZWFtIGNoYW5nZSBl
dmVudDogc3RyZWFtcyAoaW4vb3V0KSA9ICgldS8ldSksIGZsYWdzID0gJXguXG4iLAotCSAgICAg
ICBzdHJjaGctPnN0cmNoYW5nZV9pbnN0cm1zLCBzdHJjaGctPnN0cmNoYW5nZV9vdXRzdHJtcywg
c3RyY2hnLT5zdHJjaGFuZ2VfZmxhZ3MpOwotCWZvciAoaSA9IDA7IGkgPCBOVU1CRVJfT0ZfQ0hB
Tk5FTFM7IGkrKykgewotCQljaGFubmVsID0gJihwYy0+Y2hhbm5lbHNbaV0pOwotCQlpZiAoKGNo
YW5uZWwtPnN0YXRlID09IERBVEFfQ0hBTk5FTF9DT05ORUNUSU5HKSAmJgotCQkgICAgKGNoYW5u
ZWwtPm9fc3RyZWFtID09IDApKSB7Ci0JCQlpZiAoKHN0cmNoZy0+c3RyY2hhbmdlX2ZsYWdzICYg
U0NUUF9TVFJFQU1fQ0hBTkdFX0RFTklFRCkgfHwKLQkJCSAgICAoc3RyY2hnLT5zdHJjaGFuZ2Vf
ZmxhZ3MgJiBTQ1RQX1NUUkVBTV9DSEFOR0VfRkFJTEVEKSkgewotCQkJCS8qIFhYWDogU2lnbmFs
IHRvIHRoZSBvdGhlciBlbmQuICovCi0JCQkJaWYgKGNoYW5uZWwtPmlfc3RyZWFtICE9IDApIHsK
LQkJCQkJcGMtPmlfc3RyZWFtX2NoYW5uZWxbY2hhbm5lbC0+aV9zdHJlYW1dID0gTlVMTDsKLQkJ
CQl9Ci0JCQkJY2hhbm5lbC0+dW5vcmRlcmVkID0gMDsKLQkJCQljaGFubmVsLT5wcl9wb2xpY3kg
PSBTQ1RQX1BSX1NDVFBfTk9ORTsKLQkJCQljaGFubmVsLT5wcl92YWx1ZSA9IDA7Ci0JCQkJY2hh
bm5lbC0+aV9zdHJlYW0gPSAwOwotCQkJCWNoYW5uZWwtPm9fc3RyZWFtID0gMDsKLQkJCQljaGFu
bmVsLT5mbGFncyA9IDA7Ci0JCQkJY2hhbm5lbC0+c3RhdGUgPSBEQVRBX0NIQU5ORUxfQ0xPU0VE
OwotCQkJfSBlbHNlIHsKLQkJCQlvX3N0cmVhbSA9IGZpbmRfZnJlZV9vX3N0cmVhbShwYyk7Ci0J
CQkJaWYgKG9fc3RyZWFtICE9IDApIHsKLQkJCQkJY2hhbm5lbC0+b19zdHJlYW0gPSBvX3N0cmVh
bTsKLQkJCQkJcGMtPm9fc3RyZWFtX2NoYW5uZWxbb19zdHJlYW1dID0gY2hhbm5lbDsKLQkJCQkJ
aWYgKGNoYW5uZWwtPmlfc3RyZWFtID09IDApIHsKLQkJCQkJCWNoYW5uZWwtPmZsYWdzIHw9IERB
VEFfQ0hBTk5FTF9GTEFHU19TRU5EX1JFUTsKLQkJCQkJfSBlbHNlIHsKLQkJCQkJCWNoYW5uZWwt
PmZsYWdzIHw9IERBVEFfQ0hBTk5FTF9GTEFHU19TRU5EX1JTUDsKLQkJCQkJfQotCQkJCX0gZWxz
ZSB7Ci0JCQkJCS8qIFdlIHdpbGwgbm90IGZpbmQgbW9yZSAuLi4gKi8KLQkJCQkJYnJlYWs7Ci0J
CQkJfQotCQkJfQotCQl9Ci0JfQotCXJldHVybjsKLX0KLQotc3RhdGljIHZvaWQKLWhhbmRsZV9y
ZW1vdGVfZXJyb3JfZXZlbnQoc3RydWN0IHNjdHBfcmVtb3RlX2Vycm9yICpzcmUpCi17Ci0Jc2l6
ZV90IGksIG47Ci0KLQluID0gc3JlLT5zcmVfbGVuZ3RoIC0gc2l6ZW9mKHN0cnVjdCBzY3RwX3Jl
bW90ZV9lcnJvcik7Ci0JcHJpbnRmKCJSZW1vdGUgRXJyb3IgKGVycm9yID0gMHglMDR4KTogIiwg
c3JlLT5zcmVfZXJyb3IpOwotCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLQkJcHJpbnRmKCIg
MHglMDJ4Iiwgc3JlLT4gc3JlX2RhdGFbaV0pOwotCX0KLQlwcmludGYoIi5cbiIpOwotCXJldHVy
bjsKLX0KLQotc3RhdGljIHZvaWQKLWhhbmRsZV9zZW5kX2ZhaWxlZF9ldmVudChzdHJ1Y3Qgc2N0
cF9zZW5kX2ZhaWxlZF9ldmVudCAqc3NmZSkKLXsKLQlzaXplX3QgaSwgbjsKLQotCWlmIChzc2Zl
LT5zc2ZlX2ZsYWdzICYgU0NUUF9EQVRBX1VOU0VOVCkgewotCQlwcmludGYoIlVuc2VudCAiKTsK
LQl9Ci0JaWYgKHNzZmUtPnNzZmVfZmxhZ3MgJiBTQ1RQX0RBVEFfU0VOVCkgewotCQlwcmludGYo
IlNlbnQgIik7Ci0JfQotCWlmIChzc2ZlLT5zc2ZlX2ZsYWdzICYgfihTQ1RQX0RBVEFfU0VOVCB8
IFNDVFBfREFUQV9VTlNFTlQpKSB7Ci0JCXByaW50ZigiKGZsYWdzID0gJXgpICIsIHNzZmUtPnNz
ZmVfZmxhZ3MpOwotCX0KLQlwcmludGYoIm1lc3NhZ2Ugd2l0aCBQUElEID0gJXUsIFNJRCA9ICV1
LCBmbGFnczogMHglMDR4IGR1ZSB0byBlcnJvciA9IDB4JTA4eCIsCi0JICAgICAgIG50b2hsKHNz
ZmUtPnNzZmVfaW5mby5zbmRfcHBpZCksIHNzZmUtPnNzZmVfaW5mby5zbmRfc2lkLAotCSAgICAg
ICBzc2ZlLT5zc2ZlX2luZm8uc25kX2ZsYWdzLCBzc2ZlLT5zc2ZlX2Vycm9yKTsKLQluID0gc3Nm
ZS0+c3NmZV9sZW5ndGggLSBzaXplb2Yoc3RydWN0IHNjdHBfc2VuZF9mYWlsZWRfZXZlbnQpOwot
CWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLQkJcHJpbnRmKCIgMHglMDJ4Iiwgc3NmZS0+c3Nm
ZV9kYXRhW2ldKTsKLQl9Ci0JcHJpbnRmKCIuXG4iKTsKLQlyZXR1cm47Ci19Ci0KLXN0YXRpYyB2
b2lkCi1oYW5kbGVfbm90aWZpY2F0aW9uKHN0cnVjdCBwZWVyX2Nvbm5lY3Rpb24gKnBjLCB1bmlv
biBzY3RwX25vdGlmaWNhdGlvbiAqbm90aWYsIHNpemVfdCBuKQotewotCWlmIChub3RpZi0+c25f
aGVhZGVyLnNuX2xlbmd0aCAhPSAodWludDMyX3QpbikgewotCQlyZXR1cm47Ci0JfQotCXN3aXRj
aCAobm90aWYtPnNuX2hlYWRlci5zbl90eXBlKSB7Ci0JY2FzZSBTQ1RQX0FTU09DX0NIQU5HRToK
LQkJaGFuZGxlX2Fzc29jaWF0aW9uX2NoYW5nZV9ldmVudCgmKG5vdGlmLT5zbl9hc3NvY19jaGFu
Z2UpKTsKLQkJYnJlYWs7Ci0JY2FzZSBTQ1RQX1BFRVJfQUREUl9DSEFOR0U6Ci0JCWhhbmRsZV9w
ZWVyX2FkZHJlc3NfY2hhbmdlX2V2ZW50KCYobm90aWYtPnNuX3BhZGRyX2NoYW5nZSkpOwotCQli
cmVhazsKLQljYXNlIFNDVFBfUkVNT1RFX0VSUk9SOgotCQloYW5kbGVfcmVtb3RlX2Vycm9yX2V2
ZW50KCYobm90aWYtPnNuX3JlbW90ZV9lcnJvcikpOwotCQlicmVhazsKLQljYXNlIFNDVFBfU0hV
VERPV05fRVZFTlQ6Ci0JCWhhbmRsZV9zaHV0ZG93bl9ldmVudCgmKG5vdGlmLT5zbl9zaHV0ZG93
bl9ldmVudCkpOwotCQlicmVhazsKLQljYXNlIFNDVFBfQURBUFRBVElPTl9JTkRJQ0FUSU9OOgot
CQloYW5kbGVfYWRhcHRhdGlvbl9pbmRpY2F0aW9uKCYobm90aWYtPnNuX2FkYXB0YXRpb25fZXZl
bnQpKTsKLQkJYnJlYWs7Ci0JY2FzZSBTQ1RQX1BBUlRJQUxfREVMSVZFUllfRVZFTlQ6Ci0JCWJy
ZWFrOwotCWNhc2UgU0NUUF9BVVRIRU5USUNBVElPTl9FVkVOVDoKLQkJYnJlYWs7Ci0JY2FzZSBT
Q1RQX1NFTkRFUl9EUllfRVZFTlQ6Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9OT1RJRklDQVRJT05T
X1NUT1BQRURfRVZFTlQ6Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9TRU5EX0ZBSUxFRF9FVkVOVDoK
LQkJaGFuZGxlX3NlbmRfZmFpbGVkX2V2ZW50KCYobm90aWYtPnNuX3NlbmRfZmFpbGVkX2V2ZW50
KSk7Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9TVFJFQU1fUkVTRVRfRVZFTlQ6Ci0JCWhhbmRsZV9z
dHJlYW1fcmVzZXRfZXZlbnQocGMsICYobm90aWYtPnNuX3N0cnJlc2V0X2V2ZW50KSk7Ci0JCXNl
bmRfZGVmZXJyZWRfbWVzc2FnZXMocGMpOwotCQlzZW5kX291dGdvaW5nX3N0cmVhbV9yZXNldChw
Yyk7Ci0JCXJlcXVlc3RfbW9yZV9vX3N0cmVhbXMocGMpOwotCQlicmVhazsKLQljYXNlIFNDVFBf
QVNTT0NfUkVTRVRfRVZFTlQ6Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9TVFJFQU1fQ0hBTkdFX0VW
RU5UOgotCQloYW5kbGVfc3RyZWFtX2NoYW5nZV9ldmVudChwYywgJihub3RpZi0+c25fc3RyY2hh
bmdlX2V2ZW50KSk7Ci0JCXNlbmRfZGVmZXJyZWRfbWVzc2FnZXMocGMpOwotCQlzZW5kX291dGdv
aW5nX3N0cmVhbV9yZXNldChwYyk7Ci0JCXJlcXVlc3RfbW9yZV9vX3N0cmVhbXMocGMpOwotCQli
cmVhazsKLQlkZWZhdWx0OgotCQlicmVhazsKLQl9Ci19Ci0KLXN0YXRpYyB2b2lkCi1wcmludF9z
dGF0dXMoc3RydWN0IHBlZXJfY29ubmVjdGlvbiAqcGMpCi17Ci0Jc3RydWN0IHNjdHBfc3RhdHVz
IHN0YXR1czsKLQlzb2NrbGVuX3QgbGVuOwotCXVpbnQzMl90IGk7Ci0Jc3RydWN0IGNoYW5uZWwg
KmNoYW5uZWw7Ci0KLQlsZW4gPSAoc29ja2xlbl90KXNpemVvZihzdHJ1Y3Qgc2N0cF9zdGF0dXMp
OwotCWlmICh1c3JzY3RwX2dldHNvY2tvcHQocGMtPnNvY2ssIElQUFJPVE9fU0NUUCwgU0NUUF9T
VEFUVVMsICZzdGF0dXMsICZsZW4pIDwgMCkgewotCQlwZXJyb3IoImdldHNvY2tvcHQiKTsKLQkJ
cmV0dXJuOwotCX0KLQlwcmludGYoIkFzc29jaWF0aW9uIHN0YXRlOiAiKTsKLQlzd2l0Y2ggKHN0
YXR1cy5zc3RhdF9zdGF0ZSkgewotCWNhc2UgU0NUUF9DTE9TRUQ6Ci0JCXByaW50ZigiQ0xPU0VE
XG4iKTsKLQkJYnJlYWs7Ci0JY2FzZSBTQ1RQX0JPVU5EOgotCQlwcmludGYoIkJPVU5EXG4iKTsK
LQkJYnJlYWs7Ci0JY2FzZSBTQ1RQX0xJU1RFTjoKLQkJcHJpbnRmKCJMSVNURU5cbiIpOwotCQli
cmVhazsKLQljYXNlIFNDVFBfQ09PS0lFX1dBSVQ6Ci0JCXByaW50ZigiQ09PS0lFX1dBSVRcbiIp
OwotCQlicmVhazsKLQljYXNlIFNDVFBfQ09PS0lFX0VDSE9FRDoKLQkJcHJpbnRmKCJDT09LSUVf
RUNIT0VEXG4iKTsKLQkJYnJlYWs7Ci0JY2FzZSBTQ1RQX0VTVEFCTElTSEVEOgotCQlwcmludGYo
IkVTVEFCTElTSEVEXG4iKTsKLQkJYnJlYWs7Ci0JY2FzZSBTQ1RQX1NIVVRET1dOX1BFTkRJTkc6
Ci0JCXByaW50ZigiU0hVVERPV05fUEVORElOR1xuIik7Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9T
SFVURE9XTl9TRU5UOgotCQlwcmludGYoIlNIVVRET1dOX1NFTlRcbiIpOwotCQlicmVhazsKLQlj
YXNlIFNDVFBfU0hVVERPV05fUkVDRUlWRUQ6Ci0JCXByaW50ZigiU0hVVERPV05fUkVDRUlWRURc
biIpOwotCQlicmVhazsKLQljYXNlIFNDVFBfU0hVVERPV05fQUNLX1NFTlQ6Ci0JCXByaW50Zigi
U0hVVERPV05fQUNLX1NFTlRcbiIpOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlwcmludGYoIlVO
S05PV05cbiIpOwotCQlicmVhazsKLQl9Ci0JcHJpbnRmKCJOdW1iZXIgb2Ygc3RyZWFtcyAoaS9v
KSA9ICgldS8ldSlcbiIsCi0JICAgICAgIHN0YXR1cy5zc3RhdF9pbnN0cm1zLCBzdGF0dXMuc3N0
YXRfb3V0c3RybXMpOwotCWZvciAoaSA9IDA7IGkgPCBOVU1CRVJfT0ZfQ0hBTk5FTFM7IGkrKykg
ewotCQljaGFubmVsID0gJihwYy0+Y2hhbm5lbHNbaV0pOwotCQlpZiAoY2hhbm5lbC0+c3RhdGUg
PT0gREFUQV9DSEFOTkVMX0NMT1NFRCkgewotCQkJY29udGludWU7Ci0JCX0KLQkJcHJpbnRmKCJD
aGFubmVsIHdpdGggaWQgPSAldTogc3RhdGUgIiwgY2hhbm5lbC0+aWQpOwotCQlzd2l0Y2ggKGNo
YW5uZWwtPnN0YXRlKSB7Ci0JCWNhc2UgREFUQV9DSEFOTkVMX0NMT1NFRDoKLQkJCXByaW50Zigi
Q0xPU0VEIik7Ci0JCQlicmVhazsKLQkJY2FzZSBEQVRBX0NIQU5ORUxfQ09OTkVDVElORzoKLQkJ
CXByaW50ZigiQ09OTkVDVElORyIpOwotCQkJYnJlYWs7Ci0JCWNhc2UgREFUQV9DSEFOTkVMX09Q
RU46Ci0JCQlwcmludGYoIk9QRU4iKTsKLQkJCWJyZWFrOwotCQljYXNlIERBVEFfQ0hBTk5FTF9D
TE9TSU5HOgotCQkJcHJpbnRmKCJDTE9TSU5HIik7Ci0JCQlicmVhazsKLQkJZGVmYXVsdDoKLQkJ
CXByaW50ZigiVU5LTk9XTiglZCkiLCBjaGFubmVsLT5zdGF0ZSk7Ci0JCQlicmVhazsKLQkJfQot
CQlwcmludGYoIiwgZmxhZ3MgPSAweCUwOHgsIHN0cmVhbSBpZCAoaW4vb3V0KTogKCV1LyV1KSwg
IiwKLQkJICAgICAgIGNoYW5uZWwtPmZsYWdzLAotCQkgICAgICAgY2hhbm5lbC0+aV9zdHJlYW0s
Ci0JCSAgICAgICBjaGFubmVsLT5vX3N0cmVhbSk7Ci0JCWlmIChjaGFubmVsLT51bm9yZGVyZWQp
IHsKLQkJCXByaW50ZigidW5vcmRlcmVkLCAiKTsKLQkJfSBlbHNlIHsKLQkJCXByaW50Zigib3Jk
ZXJlZCwgIik7Ci0JCX0KLQkJc3dpdGNoIChjaGFubmVsLT5wcl9wb2xpY3kpIHsKLQkJY2FzZSBT
Q1RQX1BSX1NDVFBfTk9ORToKLQkJCXByaW50ZigicmVsaWFibGUuXG4iKTsKLQkJCWJyZWFrOwot
CQljYXNlIFNDVFBfUFJfU0NUUF9UVEw6Ci0JCQlwcmludGYoInVucmVsaWFibGUgKHRpbWVvdXQg
JXVtcykuXG4iLCBjaGFubmVsLT5wcl92YWx1ZSk7Ci0JCQlicmVhazsKLQkJY2FzZSBTQ1RQX1BS
X1NDVFBfUlRYOgotCQkJcHJpbnRmKCJ1bnJlbGlhYmxlIChtYXguICV1IHJ0eCkuXG4iLCBjaGFu
bmVsLT5wcl92YWx1ZSk7Ci0JCQlicmVhazsKLQkJZGVmYXVsdDoKLQkJCXByaW50ZigidW5rb3du
IHBvbGljeSAldS5cbiIsIGNoYW5uZWwtPnByX3BvbGljeSk7Ci0JCQlicmVhazsKLQkJfQotCX0K
LX0KLQotc3RhdGljIGludAotcmVjZWl2ZV9jYihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCB1bmlvbiBz
Y3RwX3NvY2tzdG9yZSBhZGRyLCB2b2lkICpkYXRhLAotICAgICAgICAgICBzaXplX3QgZGF0YWxl
biwgc3RydWN0IHNjdHBfcmN2aW5mbyByY3YsIGludCBmbGFncywgdm9pZCAqdWxwX2luZm8pCi17
Ci0Jc3RydWN0IHBlZXJfY29ubmVjdGlvbiAqcGM7Ci0KLQlwYyA9IChzdHJ1Y3QgcGVlcl9jb25u
ZWN0aW9uICopdWxwX2luZm87Ci0KLQlpZiAoZGF0YSkgewotCQlsb2NrX3BlZXJfY29ubmVjdGlv
bihwYyk7Ci0JCWlmIChmbGFncyAmIE1TR19OT1RJRklDQVRJT04pIHsKLQkJCWhhbmRsZV9ub3Rp
ZmljYXRpb24ocGMsICh1bmlvbiBzY3RwX25vdGlmaWNhdGlvbiAqKWRhdGEsIGRhdGFsZW4pOwot
CQl9IGVsc2UgewotCQkJaGFuZGxlX21lc3NhZ2UocGMsIGRhdGEsIGRhdGFsZW4sIG50b2hsKHJj
di5yY3ZfcHBpZCksIHJjdi5yY3Zfc2lkKTsKLQkJfQotCQl1bmxvY2tfcGVlcl9jb25uZWN0aW9u
KHBjKTsKLQl9Ci0JcmV0dXJuICgxKTsKLX0KLQotdm9pZAotZGVidWdfcHJpbnRmKGNvbnN0IGNo
YXIgKmZvcm1hdCwgLi4uKQotewotCXZhX2xpc3QgYXA7Ci0KLQl2YV9zdGFydChhcCwgZm9ybWF0
KTsKLQl2cHJpbnRmKGZvcm1hdCwgYXApOwotCXZhX2VuZChhcCk7Ci19Ci0KLWludAotbWFpbihp
bnQgYXJnYywgY2hhciAqYXJndltdKQotewotCXN0cnVjdCBzb2NrZXQgKnNvY2s7Ci0Jc3RydWN0
IHNvY2thZGRyX2luIGFkZHI7Ci0Jc29ja2xlbl90IGFkZHJfbGVuOwotCWNoYXIgbGluZVtMSU5F
X0xFTkdUSCArIDFdOwotCXVuc2lnbmVkIGludCB1bm9yZGVyZWQsIHBvbGljeSwgdmFsdWUsIGlk
LCBzZWNvbmRzOwotCXVuc2lnbmVkIGludCBpOwotCXN0cnVjdCBjaGFubmVsICpjaGFubmVsOwot
CWNvbnN0IGludCBvbiA9IDE7Ci0Jc3RydWN0IHNjdHBfYXNzb2NfdmFsdWUgYXY7Ci0Jc3RydWN0
IHNjdHBfZXZlbnQgZXZlbnQ7Ci0Jc3RydWN0IHNjdHBfdWRwZW5jYXBzIGVuY2FwczsKLQlzdHJ1
Y3Qgc2N0cF9pbml0bXNnIGluaXRtc2c7Ci0JdWludDE2X3QgZXZlbnRfdHlwZXNbXSA9IHtTQ1RQ
X0FTU09DX0NIQU5HRSwKLQkgICAgICAgICAgICAgICAgICAgICAgICAgIFNDVFBfUEVFUl9BRERS
X0NIQU5HRSwKLQkgICAgICAgICAgICAgICAgICAgICAgICAgIFNDVFBfUkVNT1RFX0VSUk9SLAot
CSAgICAgICAgICAgICAgICAgICAgICAgICAgU0NUUF9TSFVURE9XTl9FVkVOVCwKLQkgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNDVFBfQURBUFRBVElPTl9JTkRJQ0FUSU9OLAotCSAgICAgICAg
ICAgICAgICAgICAgICAgICAgU0NUUF9TRU5EX0ZBSUxFRF9FVkVOVCwKLQkgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNDVFBfU1RSRUFNX1JFU0VUX0VWRU5ULAotCSAgICAgICAgICAgICAgICAg
ICAgICAgICAgU0NUUF9TVFJFQU1fQ0hBTkdFX0VWRU5UfTsKLQljaGFyIGFkZHJidWZbSU5FVF9B
RERSU1RSTEVOXTsKLQotCWlmIChhcmdjID4gMSkgewotCQl1c3JzY3RwX2luaXQoYXRvaShhcmd2
WzFdKSwgTlVMTCwgZGVidWdfcHJpbnRmKTsKLQl9IGVsc2UgewotCQl1c3JzY3RwX2luaXQoOTg5
OSwgTlVMTCwgZGVidWdfcHJpbnRmKTsKLQl9Ci0jaWZkZWYgU0NUUF9ERUJVRwotCXVzcnNjdHBf
c3lzY3RsX3NldF9zY3RwX2RlYnVnX29uKFNDVFBfREVCVUdfTk9ORSk7Ci0jZW5kaWYKLQl1c3Jz
Y3RwX3N5c2N0bF9zZXRfc2N0cF9ibGFja2hvbGUoMik7Ci0KLQlpZiAoKHNvY2sgPSB1c3JzY3Rw
X3NvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgSVBQUk9UT19TQ1RQLCByZWNlaXZlX2NiLCBO
VUxMLCAwLCAmcGVlcl9jb25uZWN0aW9uKSkgPT0gTlVMTCkgewotCQlwZXJyb3IoInNvY2tldCIp
OwotCX0KLQlpbml0X3BlZXJfY29ubmVjdGlvbigmcGVlcl9jb25uZWN0aW9uKTsKLQlpZiAoYXJn
YyA+IDIpIHsKLQkJbWVtc2V0KCZlbmNhcHMsIDAsIHNpemVvZihzdHJ1Y3Qgc2N0cF91ZHBlbmNh
cHMpKTsKLQkJZW5jYXBzLnN1ZV9hZGRyZXNzLnNzX2ZhbWlseSA9IEFGX0lORVQ2OwotCQllbmNh
cHMuc3VlX3BvcnQgPSBodG9ucyhhdG9pKGFyZ3ZbMl0pKTsKLQkJaWYgKHVzcnNjdHBfc2V0c29j
a29wdChzb2NrLCBJUFBST1RPX1NDVFAsIFNDVFBfUkVNT1RFX1VEUF9FTkNBUFNfUE9SVCwgKGNv
bnN0IHZvaWQqKSZlbmNhcHMsIChzb2NrbGVuX3Qpc2l6ZW9mKHN0cnVjdCBzY3RwX3VkcGVuY2Fw
cykpIDwgMCkgewotCQkJcGVycm9yKCJzZXRzb2Nrb3B0Iik7Ci0JCX0KLQl9Ci0JaWYgKHVzcnNj
dHBfc2V0c29ja29wdChzb2NrLCBJUFBST1RPX1NDVFAsIFNDVFBfUkVDVlJDVklORk8sICZvbiwg
c2l6ZW9mKGludCkpIDwgMCkgewotCQlwZXJyb3IoInNldHNvY2tvcHQgU0NUUF9SRUNWUkNWSU5G
TyIpOwotCX0KLQlpZiAodXNyc2N0cF9zZXRzb2Nrb3B0KHNvY2ssIElQUFJPVE9fU0NUUCwgU0NU
UF9FWFBMSUNJVF9FT1IsICZvbiwgc2l6ZW9mKGludCkpIDwgMCkgewotCQlwZXJyb3IoInNldHNv
Y2tvcHQgU0NUUF9FWFBMSUNJVF9FT1IiKTsKLQl9Ci0JLyogQWxsb3cgcmVzZXR0aW5nIHN0cmVh
bXMuICovCi0JYXYuYXNzb2NfaWQgPSBTQ1RQX0FMTF9BU1NPQzsKLQlhdi5hc3NvY192YWx1ZSA9
IFNDVFBfRU5BQkxFX1JFU0VUX1NUUkVBTV9SRVEgfCBTQ1RQX0VOQUJMRV9DSEFOR0VfQVNTT0Nf
UkVROwotCWlmICh1c3JzY3RwX3NldHNvY2tvcHQoc29jaywgSVBQUk9UT19TQ1RQLCBTQ1RQX0VO
QUJMRV9TVFJFQU1fUkVTRVQsICZhdiwgc2l6ZW9mKHN0cnVjdCBzY3RwX2Fzc29jX3ZhbHVlKSkg
PCAwKSB7Ci0JCXBlcnJvcigic2V0c29ja29wdCBTQ1RQX0VOQUJMRV9TVFJFQU1fUkVTRVQiKTsK
LQl9Ci0JLyogRW5hYmxlIHRoZSBldmVudHMgb2YgaW50ZXJlc3QuICovCi0JbWVtc2V0KCZldmVu
dCwgMCwgc2l6ZW9mKGV2ZW50KSk7Ci0JZXZlbnQuc2VfYXNzb2NfaWQgPSBTQ1RQX0FMTF9BU1NP
QzsKLQlldmVudC5zZV9vbiA9IDE7Ci0JZm9yIChpID0gMDsgaSA8IHNpemVvZihldmVudF90eXBl
cykvc2l6ZW9mKHVpbnQxNl90KTsgaSsrKSB7Ci0JCWV2ZW50LnNlX3R5cGUgPSBldmVudF90eXBl
c1tpXTsKLQkJaWYgKHVzcnNjdHBfc2V0c29ja29wdChzb2NrLCBJUFBST1RPX1NDVFAsIFNDVFBf
RVZFTlQsICZldmVudCwgc2l6ZW9mKGV2ZW50KSkgPCAwKSB7Ci0JCQlwZXJyb3IoInNldHNvY2tv
cHQgU0NUUF9FVkVOVCIpOwotCQl9Ci0JfQotCW1lbXNldCgmaW5pdG1zZywgMCwgc2l6ZW9mKHN0
cnVjdCBzY3RwX2luaXRtc2cpKTsKLQlpbml0bXNnLnNpbml0X251bV9vc3RyZWFtcyA9IDU7Ci0J
aW5pdG1zZy5zaW5pdF9tYXhfaW5zdHJlYW1zID0gNjU1MzU7Ci0JaWYgKHVzcnNjdHBfc2V0c29j
a29wdChzb2NrLCBJUFBST1RPX1NDVFAsIFNDVFBfSU5JVE1TRywgJmluaXRtc2csIHNpemVvZihz
dHJ1Y3Qgc2N0cF9pbml0bXNnKSkgPCAwKSB7Ci0JCXBlcnJvcigic2V0c29ja29wdCBTQ1RQX0lO
SVRNU0ciKTsKLQl9Ci0KLQlpZiAoYXJnYyA9PSA1KSB7Ci0JCS8qIG9wZXJhdGluZyBhcyBjbGll
bnQgKi8KLQkJbWVtc2V0KCZhZGRyLCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7Ci0J
CWFkZHIuc2luX2ZhbWlseSA9IEFGX0lORVQ7Ci0jaWZkZWYgSEFWRV9TSU5fTEVOCi0JCWFkZHIu
c2luX2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pOwotI2VuZGlmCi0JCWlmICghaW5l
dF9wdG9uKEFGX0lORVQsIGFyZ3ZbM10sICZhZGRyLnNpbl9hZGRyLnNfYWRkcikpewotCQkJcHJp
bnRmKCJlcnJvcjogaW52YWxpZCBhZGRyZXNzXG4iKTsKLQkJCWV4aXQoMSk7Ci0JCX0KLQkJYWRk
ci5zaW5fcG9ydCA9IGh0b25zKGF0b2koYXJndls0XSkpOwotCQlpZiAodXNyc2N0cF9jb25uZWN0
KHNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikmYWRkciwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9p
bikpIDwgMCkgewotCQkJcGVycm9yKCJjb25uZWN0Iik7Ci0JCX0KLQotCQlwcmludGYoIkNvbm5l
Y3RlZCB0byAlczolZC5cbiIsIGluZXRfbnRvcChBRl9JTkVULCAmKGFkZHIuc2luX2FkZHIpLCBh
ZGRyYnVmLCBJTkVUX0FERFJTVFJMRU4pLCBudG9ocyhhZGRyLnNpbl9wb3J0KSk7Ci0JfSBlbHNl
IGlmIChhcmdjID09IDQpIHsKLQkJc3RydWN0IHNvY2tldCAqY29ubl9zb2NrOwotCi0JCS8qIG9w
ZXJhdGluZyBhcyBzZXJ2ZXIgKi8KLQkJbWVtc2V0KCZhZGRyLCAwLCBzaXplb2Yoc3RydWN0IHNv
Y2thZGRyX2luKSk7Ci0JCWFkZHIuc2luX2ZhbWlseSA9IEFGX0lORVQ7Ci0jaWZkZWYgSEFWRV9T
SU5fTEVOCi0JCWFkZHIuc2luX2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pOwotI2Vu
ZGlmCi0JCWFkZHIuc2luX2FkZHIuc19hZGRyID0gSU5BRERSX0FOWTsKLQkJYWRkci5zaW5fcG9y
dCA9IGh0b25zKGF0b2koYXJndlszXSkpOwotCQlpZiAodXNyc2N0cF9iaW5kKHNvY2ssIChzdHJ1
Y3Qgc29ja2FkZHIgKikmYWRkciwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpIDwgMCkgewot
CQkJcGVycm9yKCJiaW5kIik7Ci0JCX0KLQkJaWYgKHVzcnNjdHBfbGlzdGVuKHNvY2ssIDEpIDwg
MCkgewotCQkJcGVycm9yKCJsaXN0ZW4iKTsKLQkJfQotCQlhZGRyX2xlbiA9IChzb2NrbGVuX3Qp
c2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7Ci0JCW1lbXNldCgmYWRkciwgMCwgc2l6ZW9mKHN0
cnVjdCBzb2NrYWRkcl9pbikpOwotCQlpZiAoKGNvbm5fc29jayA9IHVzcnNjdHBfYWNjZXB0KHNv
Y2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikmYWRkciwgJmFkZHJfbGVuKSkgPT0gTlVMTCkgewotCQkJ
cGVycm9yKCJhY2NlcHQiKTsKLQkJfQotCQl1c3JzY3RwX2Nsb3NlKHNvY2spOwotCQlzb2NrID0g
Y29ubl9zb2NrOwotCQlwcmludGYoIkNvbm5lY3RlZCB0byAlczolZC5cbiIsIGluZXRfbnRvcChB
Rl9JTkVULCAmKGFkZHIuc2luX2FkZHIpLCBhZGRyYnVmLCBJTkVUX0FERFJTVFJMRU4pLCBudG9o
cyhhZGRyLnNpbl9wb3J0KSk7Ci0JfSBlbHNlIHsKLQkJcHJpbnRmKCJVc2FnZTogJXMgbG9jYWxf
dWRwX3BvcnQgcmVtb3RlX3VkcF9wb3J0IGxvY2FsX3BvcnQgd2hlbiBvcGVyYXRpbmcgYXMgc2Vy
dmVyXG4iCi0JCSAgICAgICAiICAgICAgICVzIGxvY2FsX3VkcF9wb3J0IHJlbW90ZV91ZHBfcG9y
dCByZW1vdGVfYWRkciByZW1vdGVfcG9ydCB3aGVuIG9wZXJhdGluZyBhcyBjbGllbnRcbiIsCi0J
CSAgICAgICBhcmd2WzBdLCBhcmd2WzBdKTsKLQkJcmV0dXJuICgwKTsKLQl9Ci0KLQlsb2NrX3Bl
ZXJfY29ubmVjdGlvbigmcGVlcl9jb25uZWN0aW9uKTsKLQlwZWVyX2Nvbm5lY3Rpb24uc29jayA9
IHNvY2s7Ci0JdW5sb2NrX3BlZXJfY29ubmVjdGlvbigmcGVlcl9jb25uZWN0aW9uKTsKLQotCWZv
ciAoOzspIHsKLSNpZmRlZiBfV0lOMzIKLQkJaWYgKGdldHNfcyhsaW5lLCBMSU5FX0xFTkdUSCkg
PT0gTlVMTCkgewotI2Vsc2UKLQkJaWYgKGZnZXRzKGxpbmUsIExJTkVfTEVOR1RILCBzdGRpbikg
PT0gTlVMTCkgewotI2VuZGlmCi0JCQlpZiAodXNyc2N0cF9zaHV0ZG93bihzb2NrLCBTSFVUX1dS
KSA8IDApIHsKLQkJCQlwZXJyb3IoInVzcnNjdHBfc2h1dGRvd24iKTsKLQkJCX0KLQkJCXdoaWxl
ICh1c3JzY3RwX2ZpbmlzaCgpICE9IDApIHsKLSNpZmRlZiBfV0lOMzIKLQkJCQlTbGVlcCgxMDAw
KTsKLSNlbHNlCi0JCQkJc2xlZXAoMSk7Ci0jZW5kaWYKLQkJCX0KLQkJCWJyZWFrOwotCQl9Ci0J
CWlmIChzdHJuY21wKGxpbmUsICI/Iiwgc3RybGVuKCI/IikpID09IDAgfHwKLQkJICAgIHN0cm5j
bXAobGluZSwgImhlbHAiLCBzdHJsZW4oImhlbHAiKSkgPT0gMCkgewotCQkJcHJpbnRmKCJDb21t
YW5kczpcbiIKLQkJCSAgICAgICAib3BlbiB1bm9yZGVyZWQgcHJfcG9saWN5IHByX3ZhbHVlIC0g
b3BlbnMgYSBjaGFubmVsXG4iCi0JCQkgICAgICAgImNsb3NlIGNoYW5uZWwgLSBjbG9zZXMgdGhl
IGNoYW5uZWxcbiIKLQkJCSAgICAgICAic2VuZCBjaGFubmVsOnN0cmluZyAtIHNlbmRzIHN0cmlu
ZyB1c2luZyBjaGFubmVsXG4iCi0JCQkgICAgICAgInN0YXR1cyAtIHByaW50cyB0aGUgc3RhdHVz
XG4iCi0JCQkgICAgICAgInNsZWVwIG4gLSBzbGVlcCBmb3IgbiBzZWNvbmRzXG4iCi0JCQkgICAg
ICAgImhlbHAgLSB0aGlzIG1lc3NhZ2VcbiIpOwotCQl9IGVsc2UgaWYgKHN0cm5jbXAobGluZSwg
InN0YXR1cyIsIHN0cmxlbigic3RhdHVzIikpID09IDApIHsKLQkJCWxvY2tfcGVlcl9jb25uZWN0
aW9uKCZwZWVyX2Nvbm5lY3Rpb24pOwotCQkJcHJpbnRfc3RhdHVzKCZwZWVyX2Nvbm5lY3Rpb24p
OwotCQkJdW5sb2NrX3BlZXJfY29ubmVjdGlvbigmcGVlcl9jb25uZWN0aW9uKTsKLQkJfSBlbHNl
IGlmIChzdHJuY21wKGxpbmUsICJxdWl0Iiwgc3RybGVuKCJxdWl0IikpID09IDApIHsKLQkJCWlm
ICh1c3JzY3RwX3NodXRkb3duKHNvY2ssIFNIVVRfV1IpIDwgMCkgewotCQkJCXBlcnJvcigidXNy
c2N0cF9zaHV0ZG93biIpOwotCQkJfQotCQkJd2hpbGUgKHVzcnNjdHBfZmluaXNoKCkgIT0gMCkg
ewotI2lmZGVmIF9XSU4zMgotCQkJCVNsZWVwKDEwMDApOwotI2Vsc2UKLQkJCQlzbGVlcCgxKTsK
LSNlbmRpZgotCQkJfQotCQkJYnJlYWs7Ci0JCX0gZWxzZSBpZiAoc3NjYW5mKGxpbmUsICJvcGVu
ICV1ICV1ICV1IiwgJnVub3JkZXJlZCwgJnBvbGljeSwgJnZhbHVlKSA9PSAzKSB7Ci0JCQlsb2Nr
X3BlZXJfY29ubmVjdGlvbigmcGVlcl9jb25uZWN0aW9uKTsKLQkJCWNoYW5uZWwgPSBvcGVuX2No
YW5uZWwoJnBlZXJfY29ubmVjdGlvbiwgKHVpbnQ4X3QpdW5vcmRlcmVkLCAodWludDE2X3QpcG9s
aWN5LCAodWludDMyX3QpdmFsdWUpOwotCQkJdW5sb2NrX3BlZXJfY29ubmVjdGlvbigmcGVlcl9j
b25uZWN0aW9uKTsKLQkJCWlmIChjaGFubmVsID09IE5VTEwpIHsKLQkJCQlwcmludGYoIkNyZWF0
aW5nIGNoYW5uZWwgZmFpbGVkLlxuIik7Ci0JCQl9IGVsc2UgewotCQkJCXByaW50ZigiQ2hhbm5l
bCB3aXRoIGlkICV1IGNyZWF0ZWQuXG4iLCBjaGFubmVsLT5pZCk7Ci0JCQl9Ci0JCX0gZWxzZSBp
ZiAoc3NjYW5mKGxpbmUsICJjbG9zZSAldSIsICZpZCkgPT0gMSkgewotCQkJaWYgKGlkIDwgTlVN
QkVSX09GX0NIQU5ORUxTKSB7Ci0JCQkJbG9ja19wZWVyX2Nvbm5lY3Rpb24oJnBlZXJfY29ubmVj
dGlvbik7Ci0JCQkJY2xvc2VfY2hhbm5lbCgmcGVlcl9jb25uZWN0aW9uLCAmcGVlcl9jb25uZWN0
aW9uLmNoYW5uZWxzW2lkXSk7Ci0JCQkJdW5sb2NrX3BlZXJfY29ubmVjdGlvbigmcGVlcl9jb25u
ZWN0aW9uKTsKLQkJCX0KLQkJfSBlbHNlIGlmIChzc2NhbmYobGluZSwgInNlbmQgJXUiLCAmaWQp
ID09IDEpIHsKLQkJCWlmIChpZCA8IE5VTUJFUl9PRl9DSEFOTkVMUykgewotCQkJCWNoYXIgKm1z
ZzsKLQotCQkJCW1zZyA9IHN0cnN0cihsaW5lLCAiOiIpOwotCQkJCWlmIChtc2cpIHsKLQkJCQkJ
bXNnKys7Ci0JCQkJCWxvY2tfcGVlcl9jb25uZWN0aW9uKCZwZWVyX2Nvbm5lY3Rpb24pOwotI2lm
ZGVmIF9XSU4zMgotCQkJCQlpZiAoc2VuZF91c2VyX21lc3NhZ2UoJnBlZXJfY29ubmVjdGlvbiwg
JnBlZXJfY29ubmVjdGlvbi5jaGFubmVsc1tpZF0sIG1zZywgc3RybGVuKG1zZykpKSB7Ci0jZWxz
ZQotCQkJCQlpZiAoc2VuZF91c2VyX21lc3NhZ2UoJnBlZXJfY29ubmVjdGlvbiwgJnBlZXJfY29u
bmVjdGlvbi5jaGFubmVsc1tpZF0sIG1zZywgc3RybGVuKG1zZykgLSAxKSkgewotI2VuZGlmCi0J
CQkJCQlwcmludGYoIk1lc3NhZ2Ugc2VudC5cbiIpOwotCQkJCQl9IGVsc2UgewotCQkJCQkJcHJp
bnRmKCJNZXNzYWdlIHNlbmRpbmcgZmFpbGVkLlxuIik7Ci0JCQkJCX0KLQkJCQkJdW5sb2NrX3Bl
ZXJfY29ubmVjdGlvbigmcGVlcl9jb25uZWN0aW9uKTsKLQkJCQl9Ci0JCQl9Ci0JCX0gZWxzZSBp
ZiAoc3NjYW5mKGxpbmUsICJzbGVlcCAldSIsICZzZWNvbmRzKSA9PSAxKSB7Ci0jaWZkZWYgX1dJ
TjMyCi0JCQlTbGVlcChzZWNvbmRzICogMTAwMCk7Ci0jZWxzZQotCQkJc2xlZXAoc2Vjb25kcyk7
Ci0jZW5kaWYKLQkJfSBlbHNlIHsKLQkJCXByaW50ZigiVW5rbm93biBjb21tYW5kOiAlcyIsIGxp
bmUpOwotCQl9Ci0JfQotCXJldHVybiAoMCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9n
cmFtcy90ZXN0X2xpYm1nbXQuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL3Rlc3RfbGlibWdtdC5jCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTVlMGYwMmE4MGQuLjAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi9wcm9ncmFtcy90ZXN0X2xpYm1nbXQuYworKysgL2Rldi9udWxsCkBAIC0x
LDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgTWljaGFlbCBUdWV4ZW4KLSAq
Ci0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gTmVpdGhlciB0aGUgbmFt
ZSBvZiB0aGUgcHJvamVjdCBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKLSAqICAg
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20g
dGhpcyBzb2Z0d2FyZQotICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUFJPSkVDVCBB
TkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UKLSAqIEFSRSBESVNDTEFJTUVELiAgICAgIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBQUk9KRUNUIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSAqIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
Ci0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUwotICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0gKiBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VAotICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotICogU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBfV0lOMzIKLSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNlbmRpZgotI2lu
Y2x1ZGUgInVzcnNjdHAuaCIKLQotaW50Ci1tYWluKHZvaWQpCi17Ci0JaW50IGk7Ci0KLQlmb3Ig
KGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgewotCQl1c3JzY3RwX2luaXQoMCwgTlVMTCwgTlVMTCk7
Ci0JCXdoaWxlICh1c3JzY3RwX2ZpbmlzaCgpICE9IDApIHsKLSNpZmRlZiBfV0lOMzIKLQkJCVNs
ZWVwKDEwMDApOwotI2Vsc2UKLQkJCXNsZWVwKDEpOwotI2VuZGlmCi0JCX0KLQl9Ci0JcmV0dXJu
ICgwKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL3Rlc3RfdGltZXIuYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3Jz
Y3RwbGliL3Byb2dyYW1zL3Rlc3RfdGltZXIuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOTBhOTNjODQ1YTVhLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvdGVz
dF90aW1lci5jCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNiBNaWNoYWVsIFR1ZXhlbgotICoKLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBwcm9qZWN0IG5vciB0aGUgbmFt
ZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0gKiAgICB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBQUk9KRUNUIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotICogQVJFIERJU0NMQUlN
RUQuCUlOIE5PIEVWRU5UIFNIQUxMIFRIRSBQUk9KRUNUIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUKLSAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwotICogT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pCi0gKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotICogT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRgotICogU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2lu
Y2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RkYXJnLmg+Ci0jaWZuZGVmIF9XSU4zMgotI2lu
Y2x1ZGUgPHVuaXN0ZC5oPgotI2VuZGlmCi0jaW5jbHVkZSA8dXNyc2N0cC5oPgotCi1pbnQKLW1h
aW4odm9pZCkgCi17Ci0JdW5zaWduZWQgaW50IGk7Ci0KLQl1c3JzY3RwX2luaXQoMCwgTlVMTCwg
TlVMTCk7Ci0JcHJpbnRmKCJFbnRlcmluZyB0aGUgbG9vcFxuIik7Ci0JZm9yIChpID0gMDsgaSA8
IDEwMDAwMDA7IGkrKykgewotCQl1c3JzY3RwX3JlZ2lzdGVyX2FkZHJlc3MoTlVMTCk7Ci0JCXVz
cnNjdHBfZGVyZWdpc3Rlcl9hZGRyZXNzKE5VTEwpOwotCX0KLQlwcmludGYoIkV4aXRlZCB0aGUg
bG9vcFxuIik7Ci0Jd2hpbGUgKHVzcnNjdHBfZmluaXNoKCkgIT0gMCkgewotI2lmZGVmIF9XSU4z
MgotCQlTbGVlcCgxMDAwKTsKLSNlbHNlCi0JCXNsZWVwKDEpOwotI2VuZGlmCi0JfQotCXJldHVy
biAoMCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy90c2N0cC5jIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBs
aWIvcHJvZ3JhbXMvdHNjdHAuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg1ZGEy
MmIxODhlLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvdHNjdHAuYworKysg
L2Rldi9udWxsCkBAIC0xLDgyNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA1LTIw
MTMgTWljaGFlbCBUdWV4ZW4KLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDEzIElyZW5lIFJ1ZW5n
ZWxlcgotICoKLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiBOZWl0aGVy
IHRoZSBuYW1lIG9mIHRoZSBwcm9qZWN0IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9y
cwotICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0gKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBQ
Uk9KRUNUIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotICogQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRQotICogQVJFIERJU0NMQUlNRUQuCUlOIE5PIEVWRU5UIFNIQUxM
IFRIRSBQUk9KRUNUIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSAqIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUwotICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0gKiBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVAotICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotICogU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmZGVmIF9XSU4zMgotI2luY2x1
ZGUgPHdpbnNvY2syLmg+Ci0jaW5jbHVkZSA8d3MydGNwaXAuaD4KLSNpbmNsdWRlIDxzdGRsaWIu
aD4KLSNpbmNsdWRlIDxjcnRkYmcuaD4KLSNpbmNsdWRlIDxzeXMvdGltZWIuaD4KLSNlbHNlCi0j
aW5jbHVkZSA8c3lzL3NvY2tldC5oPgotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSNpbmNsdWRl
IDxhcnBhL2luZXQuaD4KLSNpbmNsdWRlIDxzeXMvdGltZS5oPgotI2luY2x1ZGUgPHVuaXN0ZC5o
PgotI2luY2x1ZGUgPHB0aHJlYWQuaD4KLSNlbmRpZgotI2luY2x1ZGUgPHN0ZGFyZy5oPgotI2lu
Y2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+
Ci0jaW5jbHVkZSA8c2lnbmFsLmg+Ci0jaW5jbHVkZSA8ZXJybm8uaD4KLSNpZmRlZiBMSU5VWAot
I2luY2x1ZGUgPGdldG9wdC5oPgotI2VuZGlmCi0jaW5jbHVkZSA8dXNyc2N0cC5oPgotCi0vKiBn
bG9iYWwgZm9yIHRoZSBzZW5kIGNhbGxiYWNrLCBidXQgdXNlZCBpbiBrZXJuZWwgdmVyc2lvbiBh
cyB3ZWxsICovCi1zdGF0aWMgdW5zaWduZWQgbG9uZyBudW1iZXJfb2ZfbWVzc2FnZXM7Ci1zdGF0
aWMgY2hhciAqYnVmZmVyOwotc3RhdGljIGludCBsZW5ndGg7Ci1zdGF0aWMgc3RydWN0IHNvY2th
ZGRyX2luIHJlbW90ZV9hZGRyOwotc3RhdGljIGludCB1bm9yZGVyZWQ7Ci11aW50MzJfdCBvcHR2
YWwgPSAxOwotc3RydWN0IHNvY2tldCAqcHNvY2sgPSBOVUxMOwotCi1zdGF0aWMgc3RydWN0IHRp
bWV2YWwgc3RhcnRfdGltZTsKLXVuc2lnbmVkIGludCBydW50aW1lID0gMDsKLXN0YXRpYyB1bnNp
Z25lZCBsb25nIG1lc3NhZ2VzID0gMDsKLXN0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcgZmlyc3Rf
bGVuZ3RoID0gMDsKLXN0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcgc3VtID0gMDsKLXN0YXRpYyB1
bnNpZ25lZCBpbnQgdXNlX2NiID0gMDsKLQotI2lmbmRlZiB0aW1lcnN1YgotI2RlZmluZSB0aW1l
cnN1Yih0dnAsIHV2cCwgdnZwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
CWRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0JCSh2dnApLT50dl9zZWMgPSAodHZwKS0+dHZfc2VjIC0gKHV2cCktPnR2X3NlYzsgICAg
XAotCQkodnZwKS0+dHZfdXNlYyA9ICh0dnApLT50dl91c2VjIC0gKHV2cCktPnR2X3VzZWM7IFwK
LQkJaWYgKCh2dnApLT50dl91c2VjIDwgMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICBcCi0J
CQkodnZwKS0+dHZfc2VjLS07ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0JCQkodnZwKS0+
dHZfdXNlYyArPSAxMDAwMDAwOyAgICAgICAgICAgICAgICBcCi0JCX0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotCX0gd2hpbGUgKDApCi0jZW5kaWYK
LQotCi1jaGFyIFVzYWdlW10gPQotIlVzYWdlOiB0c2N0cCBbb3B0aW9uc10gW2FkZHJlc3NdXG4i
Ci0iT3B0aW9uczpcbiIKLSIgICAgICAgIC1hICAgICAgICAgICAgIHNldCBhZGFwdGF0aW9uIGxh
eWVyIGluZGljYXRpb25cbiIKLSIgICAgICAgIC1jICAgICAgICAgICAgIHVzZSBjYWxsYmFjayBB
UElcbiIKLSIgICAgICAgIC1FICAgICAgICAgICAgIGxvY2FsIFVEUCBlbmNhcHN1bGF0aW9uIHBv
cnQgKGRlZmF1bHQgOTg5OSlcbiIKLSIgICAgICAgIC1mICAgICAgICAgICAgIGZyYWdtZW50YXRp
b24gcG9pbnRcbiIKLSIgICAgICAgIC1sICAgICAgICAgICAgIHNpemUgb2Ygc2VuZC9yZWNlaXZl
IGJ1ZmZlclxuIgotIiAgICAgICAgLUwgICAgICAgICAgICAgYmluZCB0byBsb2NhbCBJUCAoZGVm
YXVsdCBJTkFERFJfQU5ZKVxuIgotIiAgICAgICAgLW4gICAgICAgICAgICAgbnVtYmVyIG9mIG1l
c3NhZ2VzIHNlbnQgKDAgbWVhbnMgaW5maW5pdGUpL3JlY2VpdmVkXG4iCi0iICAgICAgICAtRCAg
ICAgICAgICAgICB0dXJucyBOYWdsZSBvZmZcbiIKLSIgICAgICAgIC1SICAgICAgICAgICAgIHNv
Y2tldCByZWN2IGJ1ZmZlclxuIgotIiAgICAgICAgLVMgICAgICAgICAgICAgc29ja2V0IHNlbmQg
YnVmZmVyXG4iCi0iICAgICAgICAtVCAgICAgICAgICAgICB0aW1lIHRvIHNlbmQgbWVzc2FnZXNc
biIKLSIgICAgICAgIC11ICAgICAgICAgICAgIHVzZSB1bm9yZGVyZWQgdXNlciBtZXNzYWdlc1xu
IgotIiAgICAgICAgLVUgICAgICAgICAgICAgcmVtb3RlIFVEUCBlbmNhcHN1bGF0aW9uIHBvcnRc
biIKLSIgICAgICAgIC12ICAgICAgICAgICAgIHZlcmJvc2VcbiIKLSIgICAgICAgIC1WICAgICAg
ICAgICAgIHZlcnkgdmVyYm9zZVxuIgotOwotCi0jZGVmaW5lIERFRkFVTFRfTEVOR1RIICAgICAg
ICAgICAgIDEwMjQKLSNkZWZpbmUgREVGQVVMVF9OVU1CRVJfT0ZfTUVTU0FHRVMgMTAyNAotI2Rl
ZmluZSBERUZBVUxUX1BPUlQgICAgICAgICAgICAgICA1MDAxCi0jZGVmaW5lIEJVRkZFUlNJWkUg
ICAgICAgICAgICAgICAgICgxPDwxNikKLQotc3RhdGljIGludCB2ZXJib3NlLCB2ZXJ5X3ZlcmJv
c2U7Ci1zdGF0aWMgdW5zaWduZWQgaW50IGRvbmU7Ci0KLXZvaWQgc3RvcF9zZW5kZXIoaW50IHNp
ZykKLXsKLQlkb25lID0gMTsKLX0KLQotI2lmZGVmIF9XSU4zMgotc3RhdGljIHZvaWQKLWdldHRp
bWVvZmRheShzdHJ1Y3QgdGltZXZhbCAqdHYsIHZvaWQgKmlnbm9yZSkKLXsKLQlzdHJ1Y3QgdGlt
ZWIgdGI7Ci0KLQlmdGltZSgmdGIpOwotCXR2LT50dl9zZWMgPSAobG9uZyl0Yi50aW1lOwotIAl0
di0+dHZfdXNlYyA9IHRiLm1pbGxpdG0gKiAxMDAwOwotfQotI2VuZGlmCi0KLSNpZmRlZiBfV0lO
MzIKLXN0YXRpYyBEV09SRCBXSU5BUEkKLSNlbHNlCi1zdGF0aWMgdm9pZCAqCi0jZW5kaWYKLWhh
bmRsZV9jb25uZWN0aW9uKHZvaWQgKmFyZykKLXsKLQlzc2l6ZV90IG47Ci0JY2hhciAqYnVmOwot
I2lmZGVmIF9XSU4zMgotCUhBTkRMRSB0aWQ7Ci0jZWxzZQotCXB0aHJlYWRfdCB0aWQ7Ci0jZW5k
aWYKLQlzdHJ1Y3Qgc29ja2V0ICpjb25uX3NvY2s7Ci0Jc3RydWN0IHRpbWV2YWwgdGltZV9zdGFy
dCwgdGltZV9ub3csIHRpbWVfZGlmZjsKLQlkb3VibGUgc2Vjb25kczsKLQl1bnNpZ25lZCBsb25n
IHJlY3ZfY2FsbHMgPSAwOwotCXVuc2lnbmVkIGxvbmcgbm90aWZpY2F0aW9ucyA9IDA7Ci0JaW50
IGZsYWdzOwotCXN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyOwotCXNvY2tsZW5fdCBsZW47Ci0JdW5p
b24gc2N0cF9ub3RpZmljYXRpb24gKnNucDsKLQlzdHJ1Y3Qgc2N0cF9wYWRkcl9jaGFuZ2UgKnNw
YzsKLQlzdHJ1Y3QgdGltZXZhbCBub3RlX3RpbWU7Ci0JdW5zaWduZWQgaW50IGluZm90eXBlOwot
CXN0cnVjdCBzY3RwX3JlY3Z2X3JuIHJuOwotCXNvY2tsZW5fdCBpbmZvbGVuID0gc2l6ZW9mKHN0
cnVjdCBzY3RwX3JlY3Z2X3JuKTsKLQotCWNvbm5fc29jayA9ICooc3RydWN0IHNvY2tldCAqKilh
cmc7Ci0jaWZkZWYgX1dJTjMyCi0JdGlkID0gR2V0Q3VycmVudFRocmVhZCgpOwotI2Vsc2UKLQl0
aWQgPSBwdGhyZWFkX3NlbGYoKTsKLQlwdGhyZWFkX2RldGFjaCh0aWQpOwotI2VuZGlmCi0KLQli
dWYgPSBtYWxsb2MoQlVGRkVSU0laRSk7Ci0JZmxhZ3MgPSAwOwotCWxlbiA9IChzb2NrbGVuX3Qp
c2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7Ci0JaW5mb3R5cGUgPSAwOwotCW1lbXNldCgmcm4s
IDAsIHNpemVvZihzdHJ1Y3Qgc2N0cF9yZWN2dl9ybikpOwotCW4gPSB1c3JzY3RwX3JlY3Z2KGNv
bm5fc29jaywgYnVmLCBCVUZGRVJTSVpFLCAoc3RydWN0IHNvY2thZGRyICopICZhZGRyLCAmbGVu
LCAodm9pZCAqKSZybiwKLQkgICAgICAgICAgICAgICAgICZpbmZvbGVuLCAmaW5mb3R5cGUsICZm
bGFncyk7Ci0KLQlnZXR0aW1lb2ZkYXkoJnRpbWVfc3RhcnQsIE5VTEwpOwotCXdoaWxlIChuID4g
MCkgewotCQlyZWN2X2NhbGxzKys7Ci0JCWlmIChmbGFncyAmIE1TR19OT1RJRklDQVRJT04pIHsK
LQkJCW5vdGlmaWNhdGlvbnMrKzsKLQkJCWdldHRpbWVvZmRheSgmbm90ZV90aW1lLCBOVUxMKTsK
LQkJCXByaW50Zigibm90aWZpY2F0aW9uIGFycml2ZWQgYXQgJWZcbiIsIG5vdGVfdGltZS50dl9z
ZWMrKGRvdWJsZSlub3RlX3RpbWUudHZfdXNlYy8xMDAwMDAwLjApOwotCQkJc25wID0gKHVuaW9u
IHNjdHBfbm90aWZpY2F0aW9uICopYnVmOwotCQkJaWYgKHNucC0+c25faGVhZGVyLnNuX3R5cGU9
PVNDVFBfUEVFUl9BRERSX0NIQU5HRSkKLQkJCXsKLQkJCQlzcGMgPSAmc25wLT5zbl9wYWRkcl9j
aGFuZ2U7Ci0JCQkJcHJpbnRmKCJTQ1RQX1BFRVJfQUREUl9DSEFOR0U6IHN0YXRlPSVkLCBlcnJv
cj0lZFxuIixzcGMtPnNwY19zdGF0ZSwgc3BjLT5zcGNfZXJyb3IpOwotCQkJfQotCQl9IGVsc2Ug
ewotCQkJaWYgKHZlcnlfdmVyYm9zZSkgewotCQkJCXByaW50ZigiTWVzc2FnZSByZWNlaXZlZFxu
Iik7Ci0JCQl9Ci0JCQlzdW0gKz0gbjsKLQkJCWlmIChmbGFncyAmIE1TR19FT1IpIHsKLQkJCQlt
ZXNzYWdlcysrOwotCQkJCWlmIChmaXJzdF9sZW5ndGggPT0gMCkKLQkJCQkJZmlyc3RfbGVuZ3Ro
ID0gc3VtOwotCQkJfQotCQl9Ci0JCWZsYWdzID0gMDsKLQkJbGVuID0gKHNvY2tsZW5fdClzaXpl
b2Yoc3RydWN0IHNvY2thZGRyX2luKTsKLQkJaW5mb2xlbiA9IHNpemVvZihzdHJ1Y3Qgc2N0cF9y
ZWN2dl9ybik7Ci0JCWluZm90eXBlID0gMDsKLQkJbWVtc2V0KCZybiwgMCwgc2l6ZW9mKHN0cnVj
dCBzY3RwX3JlY3Z2X3JuKSk7Ci0JCW4gPSB1c3JzY3RwX3JlY3Z2KGNvbm5fc29jaywgKHZvaWQg
KikgYnVmLCBCVUZGRVJTSVpFLCAoc3RydWN0IHNvY2thZGRyICopICZhZGRyLCAmbGVuLCAodm9p
ZCAqKSZybiwKLQkJICAgICAgICAgICAgICAgICAgJmluZm9sZW4sICZpbmZvdHlwZSwgJmZsYWdz
KTsKLQl9Ci0JaWYgKG4gPCAwKQotCQlwZXJyb3IoInNjdHBfcmVjdnYiKTsKLQlnZXR0aW1lb2Zk
YXkoJnRpbWVfbm93LCBOVUxMKTsKLQl0aW1lcnN1YigmdGltZV9ub3csICZ0aW1lX3N0YXJ0LCAm
dGltZV9kaWZmKTsKLQlzZWNvbmRzID0gdGltZV9kaWZmLnR2X3NlYyArIChkb3VibGUpdGltZV9k
aWZmLnR2X3VzZWMvMTAwMDAwMC4wOwotCXByaW50ZigiJWxsdSwgJWx1LCAlbHUsICVsdSwgJWxs
dSwgJWYsICVmXG4iLAotCSAgICAgICAgZmlyc3RfbGVuZ3RoLCBtZXNzYWdlcywgcmVjdl9jYWxs
cywgbm90aWZpY2F0aW9ucywgc3VtLCBzZWNvbmRzLCAoZG91YmxlKWZpcnN0X2xlbmd0aCAqIChk
b3VibGUpbWVzc2FnZXMgLyBzZWNvbmRzKTsKLQlmZmx1c2goc3Rkb3V0KTsKLQl1c3JzY3RwX2Ns
b3NlKGNvbm5fc29jayk7Ci0JZnJlZShidWYpOwotI2lmZGVmIF9XSU4zMgotCXJldHVybiAwOwot
I2Vsc2UKLQlyZXR1cm4gKE5VTEwpOwotI2VuZGlmCi19Ci0KLXN0YXRpYyBpbnQKLXNlbmRfY2Io
c3RydWN0IHNvY2tldCAqc29jaywgdWludDMyX3Qgc2JfZnJlZSkgewotCXN0cnVjdCBzY3RwX3Nu
ZGluZm8gc25kaW5mbzsKLQotCWlmICgobWVzc2FnZXMgPT0gMCkgJiB2ZXJib3NlKSB7Ci0JCXBy
aW50ZigiU3RhcnQgc2VuZGluZyAiKTsKLQkJaWYgKG51bWJlcl9vZl9tZXNzYWdlcyA+IDApIHsK
LQkJCXByaW50ZigiJWxkIG1lc3NhZ2VzICIsIChsb25nKW51bWJlcl9vZl9tZXNzYWdlcyk7Ci0J
CX0KLQkJaWYgKHJ1bnRpbWUgPiAwKSB7Ci0JCQlwcmludGYoImZvciAldSBzZWNvbmRzIC4uLiIs
IHJ1bnRpbWUpOwotCQl9Ci0JCXByaW50ZigiXG4iKTsKLQkJZmZsdXNoKHN0ZG91dCk7Ci0JfQot
Ci0Jc25kaW5mby5zbmRfc2lkID0gMDsKLQlzbmRpbmZvLnNuZF9mbGFncyA9IDA7Ci0JaWYgKHVu
b3JkZXJlZCAhPSAwKSB7Ci0JCXNuZGluZm8uc25kX2ZsYWdzIHw9IFNDVFBfVU5PUkRFUkVEOwot
CX0KLQlzbmRpbmZvLnNuZF9wcGlkID0gMDsKLQlzbmRpbmZvLnNuZF9jb250ZXh0ID0gMDsKLQlz
bmRpbmZvLnNuZF9hc3NvY19pZCA9IDA7Ci0KLQl3aGlsZSAoIWRvbmUgJiYgKChudW1iZXJfb2Zf
bWVzc2FnZXMgPT0gMCkgfHwgKG1lc3NhZ2VzIDwgKG51bWJlcl9vZl9tZXNzYWdlcyAtIDEpKSkp
IHsKLQkJaWYgKHZlcnlfdmVyYm9zZSkgewotCQkJcHJpbnRmKCJTZW5kaW5nIG1lc3NhZ2UgbnVt
YmVyICVsdS5cbiIsIG1lc3NhZ2VzICsgMSk7Ci0JCX0KLQotCQlpZiAodXNyc2N0cF9zZW5kdihw
c29jaywgYnVmZmVyLCBsZW5ndGgsCi0JCSAgICAgICAgICAgICAgICAgIChzdHJ1Y3Qgc29ja2Fk
ZHIgKikgJnJlbW90ZV9hZGRyLCAxLAotCQkgICAgICAgICAgICAgICAgICAodm9pZCAqKSZzbmRp
bmZvLCAoc29ja2xlbl90KXNpemVvZihzdHJ1Y3Qgc2N0cF9zbmRpbmZvKSwgU0NUUF9TRU5EVl9T
TkRJTkZPLAotCQkgICAgICAgICAgICAgICAgICAwKSA8IDApIHsKLQkJCWlmIChlcnJubyAhPSBF
V09VTERCTE9DSyAmJiBlcnJubyAhPSBFQUdBSU4pIHsKLQkJCQlwZXJyb3IoInVzcnNjdHBfc2Vu
ZHYgKGNiKSIpOwotCQkJCWV4aXQoMSk7Ci0JCQl9IGVsc2UgewotCQkJCWlmICh2ZXJ5X3ZlcmJv
c2UpewotCQkJCQlwcmludGYoIkVXT1VMREJMT0NLIG9yIEVBR0FJTiBmb3IgbWVzc2FnZSBudW1i
ZXIgJWx1IC0gd2lsbCByZXRyeVxuIiwgbWVzc2FnZXMgKyAxKTsKLQkJCQl9Ci0JCQkJLyogc2Vu
ZCB1bnRpbCBFV09VTERCTE9DSyB0aGVuIGV4aXQgY2FsbGJhY2suICovCi0JCQkJcmV0dXJuICgx
KTsKLQkJCX0KLQkJfQotCQltZXNzYWdlcysrOwotCX0KLQlpZiAoKGRvbmUgPT0gMSkgfHwgKG1l
c3NhZ2VzID09IChudW1iZXJfb2ZfbWVzc2FnZXMgLSAxKSkpIHsKLQkJaWYgKHZlcnlfdmVyYm9z
ZSkKLQkJCXByaW50ZigiU2VuZGluZyBmaW5hbCBtZXNzYWdlIG51bWJlciAlbHUuXG4iLCBtZXNz
YWdlcyArIDEpOwotCi0JCXNuZGluZm8uc25kX2ZsYWdzIHw9IFNDVFBfRU9GOwotCQlpZiAodXNy
c2N0cF9zZW5kdihwc29jaywgYnVmZmVyLCBsZW5ndGgsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJnJl
bW90ZV9hZGRyLCAxLAotCQkgICAgICAgICAgICAgICAgICAodm9pZCAqKSZzbmRpbmZvLCAoc29j
a2xlbl90KXNpemVvZihzdHJ1Y3Qgc2N0cF9zbmRpbmZvKSwgU0NUUF9TRU5EVl9TTkRJTkZPLAot
CQkgICAgICAgICAgICAgICAgICAwKSA8IDApIHsKLQkJCWlmIChlcnJubyAhPSBFV09VTERCTE9D
SyAmJiBlcnJubyAhPSBFQUdBSU4pIHsKLQkJCQlwZXJyb3IoInVzcnNjdHBfc2VuZHYgKGNiKSIp
OwotCQkJCWV4aXQoMSk7Ci0JCQl9IGVsc2UgewotCQkJCWlmICh2ZXJ5X3ZlcmJvc2UpewotCQkJ
CQlwcmludGYoIkVXT1VMREJMT0NLIG9yIEVBR0FJTiBmb3IgZmluYWwgbWVzc2FnZSBudW1iZXIg
JWx1IC0gd2lsbCByZXRyeVxuIiwgbWVzc2FnZXMgKyAxKTsKLQkJCQl9Ci0JCQkJLyogc2VuZCB1
bnRpbCBFV09VTERCTE9DSyB0aGVuIGV4aXQgY2FsbGJhY2suICovCi0JCQkJcmV0dXJuICgxKTsK
LQkJCX0KLQkJfQotCQltZXNzYWdlcysrOwotCQlkb25lID0gMjsKLQl9Ci0KLQlyZXR1cm4gKDEp
OwotfQotCi1zdGF0aWMgaW50Ci1zZXJ2ZXJfcmVjZWl2ZV9jYihzdHJ1Y3Qgc29ja2V0ICpzb2Nr
LCB1bmlvbiBzY3RwX3NvY2tzdG9yZSBhZGRyLCB2b2lkICpkYXRhLAotICAgICAgICAgICBzaXpl
X3QgZGF0YWxlbiwgc3RydWN0IHNjdHBfcmN2aW5mbyByY3YsIGludCBmbGFncywgdm9pZCAqdWxw
X2luZm8pCi17Ci0Jc3RydWN0IHRpbWV2YWwgbm93LCBkaWZmX3RpbWU7Ci0JZG91YmxlIHNlY29u
ZHM7Ci0KLQlpZiAoZGF0YSA9PSBOVUxMKSB7Ci0JCWdldHRpbWVvZmRheSgmbm93LCBOVUxMKTsK
LQkJdGltZXJzdWIoJm5vdywgJnN0YXJ0X3RpbWUsICZkaWZmX3RpbWUpOwotCQlzZWNvbmRzID0g
ZGlmZl90aW1lLnR2X3NlYyArIChkb3VibGUpZGlmZl90aW1lLnR2X3VzZWMvMTAwMDAwMC4wOwot
CQlwcmludGYoIiVsbHUsICVsdSwgJWxsdSwgJWYsICVmXG4iLAotCQkJZmlyc3RfbGVuZ3RoLCBt
ZXNzYWdlcywgc3VtLCBzZWNvbmRzLCAoZG91YmxlKWZpcnN0X2xlbmd0aCAqIChkb3VibGUpbWVz
c2FnZXMgLyBzZWNvbmRzKTsKLQkJdXNyc2N0cF9jbG9zZShzb2NrKTsKLQkJZmlyc3RfbGVuZ3Ro
ID0gMDsKLQkJc3VtID0gMDsKLQkJbWVzc2FnZXMgPSAwOwotCQlyZXR1cm4gKDEpOwotCX0KLQlp
ZiAoZmlyc3RfbGVuZ3RoID09IDApIHsKLQkJZmlyc3RfbGVuZ3RoID0gKHVuc2lnbmVkIGludClk
YXRhbGVuOwotCQlnZXR0aW1lb2ZkYXkoJnN0YXJ0X3RpbWUsIE5VTEwpOwotCX0KLQlzdW0gKz0g
ZGF0YWxlbjsKLQltZXNzYWdlcysrOwotCi0JZnJlZShkYXRhKTsKLQlyZXR1cm4gKDEpOwotfQot
Ci1zdGF0aWMgaW50Ci1jbGllbnRfcmVjZWl2ZV9jYihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCB1bmlv
biBzY3RwX3NvY2tzdG9yZSBhZGRyLCB2b2lkICpkYXRhLAotICAgICAgICAgICBzaXplX3QgZGF0
YWxlbiwgc3RydWN0IHNjdHBfcmN2aW5mbyByY3YsIGludCBmbGFncywgdm9pZCAqdWxwX2luZm8p
Ci17Ci0JZnJlZShkYXRhKTsKLQlyZXR1cm4gKDEpOwotfQotCi12b2lkCi1kZWJ1Z19wcmludGYo
Y29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCi17Ci0JdmFfbGlzdCBhcDsKLQotCXZhX3N0YXJ0KGFw
LCBmb3JtYXQpOwotCXZwcmludGYoZm9ybWF0LCBhcCk7Ci0JdmFfZW5kKGFwKTsKLX0KLQotaW50
IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotewotI2lmbmRlZiBfV0lOMzIKLQlpbnQgYzsK
LSNlbmRpZgotCXNvY2tsZW5fdCBhZGRyX2xlbjsKLQlzdHJ1Y3Qgc29ja2FkZHJfaW4gbG9jYWxf
YWRkcjsKLQlzdHJ1Y3QgdGltZXZhbCB0aW1lX3N0YXJ0LCB0aW1lX25vdywgdGltZV9kaWZmOwot
CWludCBjbGllbnQ7Ci0JdWludDE2X3QgbG9jYWxfcG9ydCwgcmVtb3RlX3BvcnQsIHBvcnQsIGxv
Y2FsX3VkcF9wb3J0LCByZW1vdGVfdWRwX3BvcnQ7Ci0JaW50IHJjdmJ1ZnNpemU9MCwgc25kYnVm
c2l6ZT0wLCBteXJjdmJ1ZnNpemUsIG15c25kYnVmc2l6ZTsKLQlzb2NrbGVuX3QgaW50bGVuOwot
CWRvdWJsZSBzZWNvbmRzOwotCWRvdWJsZSB0aHJvdWdocHV0OwotCWludCBub2RlbGF5ID0gMDsK
LQlzdHJ1Y3Qgc2N0cF9hc3NvY192YWx1ZSBhdjsKLQlzdHJ1Y3Qgc2N0cF91ZHBlbmNhcHMgZW5j
YXBzOwotCXN0cnVjdCBzY3RwX3NuZGluZm8gc25kaW5mbzsKLSNpZmRlZiBfV0lOMzIKLQl1bnNp
Z25lZCBsb25nIHNyY0FkZHI7Ci0JSEFORExFIHRpZDsKLSNlbHNlCi0JaW5fYWRkcl90IHNyY0Fk
ZHI7Ci0JcHRocmVhZF90IHRpZDsKLSNlbmRpZgotCWludCBmcmFncG9pbnQgPSAwOwotCXN0cnVj
dCBzY3RwX3NldGFkYXB0YXRpb24gaW5kID0gezB9OwotI2lmZGVmIF9XSU4zMgotCWNoYXIgKm9w
dDsKLQlpbnQgb3B0aW5kOwotI2VuZGlmCi0JdW5vcmRlcmVkID0gMDsKLQotCWxlbmd0aCA9IERF
RkFVTFRfTEVOR1RIOwotCW51bWJlcl9vZl9tZXNzYWdlcyA9IERFRkFVTFRfTlVNQkVSX09GX01F
U1NBR0VTOwotCXBvcnQgPSBERUZBVUxUX1BPUlQ7Ci0JcmVtb3RlX3VkcF9wb3J0ID0gMDsKLQls
b2NhbF91ZHBfcG9ydCA9IDk4OTk7Ci0JdmVyYm9zZSA9IDA7Ci0JdmVyeV92ZXJib3NlID0gMDsK
LQlzcmNBZGRyID0gaHRvbmwoSU5BRERSX0FOWSk7Ci0KLQltZW1zZXQoKHZvaWQgKikgJnJlbW90
ZV9hZGRyLCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7Ci0JbWVtc2V0KCh2b2lkICop
ICZsb2NhbF9hZGRyLCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7Ci0KLSNpZm5kZWYg
X1dJTjMyCi0Jd2hpbGUgKChjID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJhOmNwOmw6RTpmOkw6bjpS
OlM6VDp1VTp2VkQiKSkgIT0gLTEpCi0JCXN3aXRjaChjKSB7Ci0JCQljYXNlICdhJzoKLQkJCQlp
bmQuc3NiX2FkYXB0YXRpb25faW5kID0gYXRvaShvcHRhcmcpOwotCQkJCWJyZWFrOwotCQkJY2Fz
ZSAnYyc6Ci0JCQkJdXNlX2NiID0gMTsKLQkJCQlicmVhazsKLQkJCWNhc2UgJ2wnOgotCQkJCWxl
bmd0aCA9IGF0b2kob3B0YXJnKTsKLQkJCQlicmVhazsKLQkJCWNhc2UgJ24nOgotCQkJCW51bWJl
cl9vZl9tZXNzYWdlcyA9IGF0b2kob3B0YXJnKTsKLQkJCQlicmVhazsKLQkJCWNhc2UgJ3AnOgot
CQkJCXBvcnQgPSBhdG9pKG9wdGFyZyk7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlICdFJzoKLQkJCQls
b2NhbF91ZHBfcG9ydCA9IGF0b2kob3B0YXJnKTsKLQkJCQlicmVhazsKLQkJCWNhc2UgJ2YnOgot
CQkJCWZyYWdwb2ludCA9IGF0b2kob3B0YXJnKTsKLQkJCQlicmVhazsKLQkJCWNhc2UgJ0wnOgot
CQkJCWlmIChpbmV0X3B0b24oQUZfSU5FVCwgb3B0YXJnLCAmc3JjQWRkcikgIT0gMSkgewotCQkJ
CQlwcmludGYoIkNhbid0IHBhcnNlICVzXG4iLCBvcHRhcmcpOwotCQkJCX0KLQkJCQlicmVhazsK
LQkJCWNhc2UgJ1InOgotCQkJCXJjdmJ1ZnNpemUgPSBhdG9pKG9wdGFyZyk7Ci0JCQkJYnJlYWs7
Ci0JCQljYXNlICdTJzoKLQkJCQlzbmRidWZzaXplID0gYXRvaShvcHRhcmcpOwotCQkJCWJyZWFr
OwotCQkJY2FzZSAnVCc6Ci0JCQkJcnVudGltZSA9IGF0b2kob3B0YXJnKTsKLQkJCQludW1iZXJf
b2ZfbWVzc2FnZXMgPSAwOwotCQkJCWJyZWFrOwotCQkJY2FzZSAndSc6Ci0JCQkJdW5vcmRlcmVk
ID0gMTsKLQkJCQlicmVhazsKLQkJCWNhc2UgJ1UnOgotCQkJCXJlbW90ZV91ZHBfcG9ydCA9IGF0
b2kob3B0YXJnKTsKLQkJCQlicmVhazsKLQkJCWNhc2UgJ3YnOgotCQkJCXZlcmJvc2UgPSAxOwot
CQkJCWJyZWFrOwotCQkJY2FzZSAnVic6Ci0JCQkJdmVyYm9zZSA9IDE7Ci0JCQkJdmVyeV92ZXJi
b3NlID0gMTsKLQkJCQlicmVhazsKLQkJCWNhc2UgJ0QnOgotCQkJCW5vZGVsYXkgPSAxOwotCQkJ
CWJyZWFrOwotCQkJZGVmYXVsdDoKLQkJCQlmcHJpbnRmKHN0ZGVyciwgIiVzIiwgVXNhZ2UpOwot
CQkJCWV4aXQoMSk7Ci0JCX0KLSNlbHNlCi0JZm9yIChvcHRpbmQgPSAxOyBvcHRpbmQgPCBhcmdj
OyBvcHRpbmQrKykgewotCQlpZiAoYXJndltvcHRpbmRdWzBdID09ICctJykgewotCQkJc3dpdGNo
IChhcmd2W29wdGluZF1bMV0pIHsKLQkJCQljYXNlICdhJzoKLQkJCQkJaWYgKCsrb3B0aW5kID49
IGFyZ2MpIHsKLQkJCQkJCXByaW50ZigiJXMiLCBVc2FnZSk7Ci0JCQkJCQlleGl0KDEpOwotCQkJ
CQl9Ci0JCQkJCW9wdCA9IGFyZ3Zbb3B0aW5kXTsKLQkJCQkJaW5kLnNzYl9hZGFwdGF0aW9uX2lu
ZCA9IGF0b2kob3B0KTsKLQkJCQkJYnJlYWs7Ci0JCQkJY2FzZSAnYyc6Ci0JCQkJCXVzZV9jYiA9
IDE7Ci0JCQkJCWJyZWFrOwotCQkJCWNhc2UgJ2wnOgotCQkJCQlpZiAoKytvcHRpbmQgPj0gYXJn
YykgewotCQkJCQkJcHJpbnRmKCIlcyIsIFVzYWdlKTsKLQkJCQkJCWV4aXQoMSk7Ci0JCQkJCX0K
LQkJCQkJb3B0ID0gYXJndltvcHRpbmRdOwotCQkJCQlsZW5ndGggPSBhdG9pKG9wdCk7Ci0JCQkJ
CWJyZWFrOwotCQkJCWNhc2UgJ3AnOgotCQkJCQlpZiAoKytvcHRpbmQgPj0gYXJnYykgewotCQkJ
CQkJcHJpbnRmKCIlcyIsIFVzYWdlKTsKLQkJCQkJCWV4aXQoMSk7Ci0JCQkJCX0KLQkJCQkJb3B0
ID0gYXJndltvcHRpbmRdOwotCQkJCQlwb3J0ID0gYXRvaShvcHQpOwotCQkJCQlicmVhazsKLQkJ
CQljYXNlICduJzoKLQkJCQkJaWYgKCsrb3B0aW5kID49IGFyZ2MpIHsKLQkJCQkJCXByaW50Zigi
JXMiLCBVc2FnZSk7Ci0JCQkJCQlleGl0KDEpOwotCQkJCQl9Ci0JCQkJCW9wdCA9IGFyZ3Zbb3B0
aW5kXTsKLQkJCQkJbnVtYmVyX29mX21lc3NhZ2VzID0gYXRvaShvcHQpOwotCQkJCQlicmVhazsK
LQkJCQljYXNlICdmJzoKLQkJCQkJaWYgKCsrb3B0aW5kID49IGFyZ2MpIHsKLQkJCQkJCXByaW50
ZigiJXMiLCBVc2FnZSk7Ci0JCQkJCQlleGl0KDEpOwotCQkJCQl9Ci0JCQkJCW9wdCA9IGFyZ3Zb
b3B0aW5kXTsKLQkJCQkJZnJhZ3BvaW50ID0gYXRvaShvcHQpOwotCQkJCQlicmVhazsKLQkJCQlj
YXNlICdMJzoKLQkJCQkJaWYgKCsrb3B0aW5kID49IGFyZ2MpIHsKLQkJCQkJCXByaW50ZigiJXMi
LCBVc2FnZSk7Ci0JCQkJCQlleGl0KDEpOwotCQkJCQl9Ci0JCQkJCW9wdCA9IGFyZ3Zbb3B0aW5k
XTsKLQkJCQkJaW5ldF9wdG9uKEFGX0lORVQsIG9wdCwgJnNyY0FkZHIpOwotCQkJCQlicmVhazsK
LQkJCQljYXNlICdVJzoKLQkJCQkJaWYgKCsrb3B0aW5kID49IGFyZ2MpIHsKLQkJCQkJCXByaW50
ZigiJXMiLCBVc2FnZSk7Ci0JCQkJCQlleGl0KDEpOwotCQkJCQl9Ci0JCQkJCW9wdCA9IGFyZ3Zb
b3B0aW5kXTsKLQkJCQkJcmVtb3RlX3VkcF9wb3J0ID0gYXRvaShvcHQpOwotCQkJCQlicmVhazsK
LQkJCQljYXNlICdFJzoKLQkJCQkJaWYgKCsrb3B0aW5kID49IGFyZ2MpIHsKLQkJCQkJCXByaW50
ZigiJXMiLCBVc2FnZSk7Ci0JCQkJCQlleGl0KDEpOwotCQkJCQl9Ci0JCQkJCW9wdCA9IGFyZ3Zb
b3B0aW5kXTsKLQkJCQkJbG9jYWxfdWRwX3BvcnQgPSBhdG9pKG9wdCk7Ci0JCQkJCWJyZWFrOwot
CQkJCWNhc2UgJ1InOgotCQkJCQlpZiAoKytvcHRpbmQgPj0gYXJnYykgewotCQkJCQkJcHJpbnRm
KCIlcyIsIFVzYWdlKTsKLQkJCQkJCWV4aXQoMSk7Ci0JCQkJCX0KLQkJCQkJb3B0ID0gYXJndltv
cHRpbmRdOwotCQkJCQlyY3ZidWZzaXplID0gYXRvaShvcHQpOwotCQkJCQlicmVhazsKLQkJCQlj
YXNlICdTJzoKLQkJCQkJaWYgKCsrb3B0aW5kID49IGFyZ2MpIHsKLQkJCQkJCXByaW50ZigiJXMi
LCBVc2FnZSk7Ci0JCQkJCQlleGl0KDEpOwotCQkJCQl9Ci0JCQkJCW9wdCA9IGFyZ3Zbb3B0aW5k
XTsKLQkJCQkJc25kYnVmc2l6ZSA9IGF0b2kob3B0KTsKLQkJCQkJYnJlYWs7Ci0JCQkJY2FzZSAn
VCc6Ci0JCQkJCWlmICgrK29wdGluZCA+PSBhcmdjKSB7Ci0JCQkJCQlwcmludGYoIiVzIiwgVXNh
Z2UpOwotCQkJCQkJZXhpdCgxKTsKLQkJCQkJfQotCQkJCQlvcHQgPSBhcmd2W29wdGluZF07Ci0J
CQkJCXJ1bnRpbWUgPSBhdG9pKG9wdCk7Ci0JCQkJCW51bWJlcl9vZl9tZXNzYWdlcyA9IDA7Ci0J
CQkJCWJyZWFrOwotCQkJCWNhc2UgJ3UnOgotCQkJCQl1bm9yZGVyZWQgPSAxOwotCQkJCQlicmVh
azsKLQkJCQljYXNlICd2JzoKLQkJCQkJdmVyYm9zZSA9IDE7Ci0JCQkJCWJyZWFrOwotCQkJCWNh
c2UgJ1YnOgotCQkJCQl2ZXJib3NlID0gMTsKLQkJCQkJdmVyeV92ZXJib3NlID0gMTsKLQkJCQkJ
YnJlYWs7Ci0JCQkJY2FzZSAnRCc6Ci0JCQkJCW5vZGVsYXkgPSAxOwotCQkJCQlicmVhazsKLQkJ
CQlkZWZhdWx0OgotCQkJCQlwcmludGYoIiVzIiwgVXNhZ2UpOwotCQkJCQlleGl0KDEpOwotCQkJ
fQotCQl9IGVsc2UgewotCQkJYnJlYWs7Ci0JCX0KLQl9Ci0jZW5kaWYKLQlpZiAob3B0aW5kID09
IGFyZ2MpIHsKLQkJY2xpZW50ID0gMDsKLQkJbG9jYWxfcG9ydCA9IHBvcnQ7Ci0JCXJlbW90ZV9w
b3J0ID0gMDsKLQl9IGVsc2UgewotCQljbGllbnQgPSAxOwotCQlsb2NhbF9wb3J0ID0gMDsKLQkJ
cmVtb3RlX3BvcnQgPSBwb3J0OwotCX0KLQlsb2NhbF9hZGRyLnNpbl9mYW1pbHkgPSBBRl9JTkVU
OwotI2lmZGVmIEhBVkVfU0lOX0xFTgotCWxvY2FsX2FkZHIuc2luX2xlbiA9IHNpemVvZihzdHJ1
Y3Qgc29ja2FkZHJfaW4pOwotI2VuZGlmCi0JbG9jYWxfYWRkci5zaW5fcG9ydCA9IGh0b25zKGxv
Y2FsX3BvcnQpOwotCWxvY2FsX2FkZHIuc2luX2FkZHIuc19hZGRyID0gc3JjQWRkcjsKLQotCXVz
cnNjdHBfaW5pdChsb2NhbF91ZHBfcG9ydCwgTlVMTCwgZGVidWdfcHJpbnRmKTsKLSNpZmRlZiBT
Q1RQX0RFQlVHCi0JdXNyc2N0cF9zeXNjdGxfc2V0X3NjdHBfZGVidWdfb24oU0NUUF9ERUJVR19B
TEwpOwotI2VuZGlmCi0JdXNyc2N0cF9zeXNjdGxfc2V0X3NjdHBfYmxhY2tob2xlKDIpOwotCXVz
cnNjdHBfc3lzY3RsX3NldF9zY3RwX2VuYWJsZV9zYWNrX2ltbWVkaWF0ZWx5KDEpOwotCi0JaWYg
KGNsaWVudCkgewotCQlpZiAodXNlX2NiKSB7Ci0JCQlpZiAoIShwc29jayA9IHVzcnNjdHBfc29j
a2V0KEFGX0lORVQsIFNPQ0tfU1RSRUFNLCBJUFBST1RPX1NDVFAsIGNsaWVudF9yZWNlaXZlX2Ni
LCBzZW5kX2NiLCBsZW5ndGgsIE5VTEwpKSkgewotCQkJCXBlcnJvcigidXNlcl9zb2NrZXQiKTsK
LQkJCQlleGl0KDEpOwotCQkJfQotCQl9IGVsc2UgewotCQkJaWYgKCEocHNvY2sgPSB1c3JzY3Rw
X3NvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgSVBQUk9UT19TQ1RQLCBOVUxMLCBOVUxMLCAw
LCBOVUxMKSkpIHsKLQkJCQlwZXJyb3IoInVzZXJfc29ja2V0Iik7Ci0JCQkJZXhpdCgxKTsKLQkJ
CX0KLQkJfQotCX0gZWxzZSB7Ci0JCWlmICh1c2VfY2IpIHsKLQkJCWlmICghKHBzb2NrID0gdXNy
c2N0cF9zb2NrZXQoQUZfSU5FVCwgU09DS19TVFJFQU0sIElQUFJPVE9fU0NUUCwgc2VydmVyX3Jl
Y2VpdmVfY2IsIE5VTEwsIDAsIE5VTEwpKSkgewotCQkJCXBlcnJvcigidXNlcl9zb2NrZXQiKTsK
LQkJCQlleGl0KDEpOwotCQkJfQotCQl9IGVsc2UgewotCQkJaWYgKCEocHNvY2sgPSB1c3JzY3Rw
X3NvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgSVBQUk9UT19TQ1RQLCBOVUxMLCBOVUxMLCAw
LCBOVUxMKSkpIHsKLQkJCQlwZXJyb3IoInVzZXJfc29ja2V0Iik7Ci0JCQkJZXhpdCgxKTsKLQkJ
CX0KLQkJfQotCX0KLQotCWlmICh1c3JzY3RwX2JpbmQocHNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIg
KikmbG9jYWxfYWRkciwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpID09IC0xKSB7Ci0JCXBl
cnJvcigidXNyc2N0cF9iaW5kIik7Ci0JCWV4aXQoMSk7Ci0JfQotCi0JaWYgKHVzcnNjdHBfc2V0
c29ja29wdChwc29jaywgSVBQUk9UT19TQ1RQLCBTQ1RQX0FEQVBUQVRJT05fTEFZRVIsIChjb25z
dCB2b2lkKikmaW5kLCAoc29ja2xlbl90KXNpemVvZihzdHJ1Y3Qgc2N0cF9zZXRhZGFwdGF0aW9u
KSkgPCAwKSB7Ci0JCXBlcnJvcigic2V0c29ja29wdCIpOwotCX0KLQotCWlmICghY2xpZW50KSB7
Ci0JCWlmIChyY3ZidWZzaXplKSB7Ci0JCQlpZiAodXNyc2N0cF9zZXRzb2Nrb3B0KHBzb2NrLCBT
T0xfU09DS0VULCBTT19SQ1ZCVUYsICZyY3ZidWZzaXplLCBzaXplb2YoaW50KSkgPCAwKSB7Ci0J
CQkJcGVycm9yKCJzZXRzb2Nrb3B0OiByY3ZidWYiKTsKLQkJCX0KLQkJfQotCQlpZiAodmVyYm9z
ZSkgewotCQkJaW50bGVuID0gc2l6ZW9mKGludCk7Ci0JCQlpZiAodXNyc2N0cF9nZXRzb2Nrb3B0
KHBzb2NrLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsICZteXJjdmJ1ZnNpemUsIChzb2NrbGVuX3Qg
KikmaW50bGVuKSA8IDApIHsKLQkJCQlwZXJyb3IoImdldHNvY2tvcHQ6IHJjdmJ1ZiIpOwotCQkJ
fSBlbHNlIHsKLQkJCQlmcHJpbnRmKHN0ZG91dCwiUmVjZWl2ZSBidWZmZXIgc2l6ZTogJWQuXG4i
LCBteXJjdmJ1ZnNpemUpOwotCQkJfQotCQl9Ci0KLQkJaWYgKHVzcnNjdHBfbGlzdGVuKHBzb2Nr
LCAxKSA8IDApIHsKLQkJCXBlcnJvcigidXNyc2N0cF9saXN0ZW4iKTsKLQkJCWV4aXQoMSk7Ci0J
CX0KLQotCQl3aGlsZSAoMSkgewotCQkJbWVtc2V0KCZyZW1vdGVfYWRkciwgMCwgc2l6ZW9mKHN0
cnVjdCBzb2NrYWRkcl9pbikpOwotCQkJYWRkcl9sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRy
X2luKTsKLQkJCWlmICh1c2VfY2IpIHsKLQkJCQlzdHJ1Y3Qgc29ja2V0ICpjb25uX3NvY2s7Ci0K
LQkJCQlpZiAoKGNvbm5fc29jayA9IHVzcnNjdHBfYWNjZXB0KHBzb2NrLCAoc3RydWN0IHNvY2th
ZGRyICopICZyZW1vdGVfYWRkciwgJmFkZHJfbGVuKSk9PSBOVUxMKSB7Ci0JCQkJCXBlcnJvcigi
dXNyc2N0cF9hY2NlcHQiKTsKLQkJCQkJY29udGludWU7Ci0JCQkJfQotCQkJfSBlbHNlIHsKLQkJ
CQlzdHJ1Y3Qgc29ja2V0ICoqY29ubl9zb2NrOwotCi0JCQkJY29ubl9zb2NrID0gKHN0cnVjdCBz
b2NrZXQgKiopbWFsbG9jKHNpemVvZihzdHJ1Y3Qgc29ja2V0ICopKTsKLQkJCQlpZiAoKCpjb25u
X3NvY2sgPSB1c3JzY3RwX2FjY2VwdChwc29jaywgKHN0cnVjdCBzb2NrYWRkciAqKSAmcmVtb3Rl
X2FkZHIsICZhZGRyX2xlbikpPT0gTlVMTCkgewotCQkJCQlwZXJyb3IoInVzcnNjdHBfYWNjZXB0
Iik7Ci0JCQkJCWNvbnRpbnVlOwotCQkJCX0KLSNpZmRlZiBfV0lOMzIKLQkJCQl0aWQgPSBDcmVh
dGVUaHJlYWQoTlVMTCwgMCwgJmhhbmRsZV9jb25uZWN0aW9uLCAodm9pZCAqKWNvbm5fc29jaywg
MCwgTlVMTCk7Ci0jZWxzZQotCQkJCXB0aHJlYWRfY3JlYXRlKCZ0aWQsIE5VTEwsICZoYW5kbGVf
Y29ubmVjdGlvbiwgKHZvaWQgKiljb25uX3NvY2spOwotI2VuZGlmCi0JCQl9Ci0JCQlpZiAodmVy
Ym9zZSkgewotCQkJCS8vIGNvbnN0IGNoYXIgKmluZXRfbnRvcChpbnQgYWYsIGNvbnN0IHZvaWQg
KnNyYywgY2hhciAqZHN0LCBzb2NrbGVuX3Qgc2l6ZSkKLQkJCQkvL2luZXRfbnRvYShyZW1vdGVf
YWRkci5zaW5fYWRkcikKLQkJCQljaGFyIGFkZHJidWZbSU5FVF9BRERSU1RSTEVOXTsKLQkJCQlw
cmludGYoIkNvbm5lY3Rpb24gYWNjZXB0ZWQgZnJvbSAlczolZFxuIiwgaW5ldF9udG9wKEFGX0lO
RVQsICYocmVtb3RlX2FkZHIuc2luX2FkZHIpLCBhZGRyYnVmLCBJTkVUX0FERFJTVFJMRU4pLCBu
dG9ocyhyZW1vdGVfYWRkci5zaW5fcG9ydCkpOwotCQkJfQotCQl9Ci0JCS8vdXNyc2N0cF9jbG9z
ZShwc29jayk7IC8vIHVucmVhY2hhYmxlCi0JfSBlbHNlIHsKLQkJbWVtc2V0KCZlbmNhcHMsIDAs
IHNpemVvZihzdHJ1Y3Qgc2N0cF91ZHBlbmNhcHMpKTsKLQkJZW5jYXBzLnN1ZV9hZGRyZXNzLnNz
X2ZhbWlseSA9IEFGX0lORVQ7Ci0JCWVuY2Fwcy5zdWVfcG9ydCA9IGh0b25zKHJlbW90ZV91ZHBf
cG9ydCk7Ci0JCWlmICh1c3JzY3RwX3NldHNvY2tvcHQocHNvY2ssIElQUFJPVE9fU0NUUCwgU0NU
UF9SRU1PVEVfVURQX0VOQ0FQU19QT1JULCAoY29uc3Qgdm9pZCopJmVuY2FwcywgKHNvY2tsZW5f
dClzaXplb2Yoc3RydWN0IHNjdHBfdWRwZW5jYXBzKSkgPCAwKSB7Ci0JCQlwZXJyb3IoInNldHNv
Y2tvcHQiKTsKLQkJfQotCi0JCXJlbW90ZV9hZGRyLnNpbl9mYW1pbHkgPSBBRl9JTkVUOwotI2lm
ZGVmIEhBVkVfU0lOX0xFTgotCQlyZW1vdGVfYWRkci5zaW5fbGVuID0gc2l6ZW9mKHN0cnVjdCBz
b2NrYWRkcl9pbik7Ci0jZW5kaWYKLQkJaWYgKCFpbmV0X3B0b24oQUZfSU5FVCwgYXJndltvcHRp
bmRdLCAmcmVtb3RlX2FkZHIuc2luX2FkZHIuc19hZGRyKSl7Ci0JCQlwcmludGYoImVycm9yOiBp
bnZhbGlkIGRlc3RpbmF0aW9uIGFkZHJlc3NcbiIpOwotCQkJZXhpdCgxKTsKLQkJfQotCQlyZW1v
dGVfYWRkci5zaW5fcG9ydCA9IGh0b25zKHJlbW90ZV9wb3J0KTsKLQotCQkvKiBUT0RPIGZyYWdw
b2ludCBzdHVmZiAqLwotCQlpZiAobm9kZWxheSA9PSAxKSB7Ci0JCQlvcHR2YWwgPSAxOwotCQl9
IGVsc2UgewotCQkJb3B0dmFsID0gMDsKLQkJfQotCQl1c3JzY3RwX3NldHNvY2tvcHQocHNvY2ss
IElQUFJPVE9fU0NUUCwgU0NUUF9OT0RFTEFZLCAmb3B0dmFsLCBzaXplb2YoaW50KSk7Ci0KLQkJ
aWYgKGZyYWdwb2ludCkgewotCQkJYXYuYXNzb2NfaWQgPSAwOwotCQkJYXYuYXNzb2NfdmFsdWUg
PSBmcmFncG9pbnQ7Ci0JCQlpZiAodXNyc2N0cF9zZXRzb2Nrb3B0KHBzb2NrLCBJUFBST1RPX1ND
VFAsIFNDVFBfTUFYU0VHLCAmYXYsIHNpemVvZihzdHJ1Y3Qgc2N0cF9hc3NvY192YWx1ZSkpIDwg
MCkgewotCQkJCXBlcnJvcigic2V0c29ja29wdDogU0NUUF9NQVhTRUciKTsKLQkJCX0KLQkJfQot
Ci0JCWlmIChzbmRidWZzaXplKSB7Ci0JCQlpZiAodXNyc2N0cF9zZXRzb2Nrb3B0KHBzb2NrLCBT
T0xfU09DS0VULCBTT19TTkRCVUYsICZzbmRidWZzaXplLCBzaXplb2YoaW50KSkgPCAwKSB7Ci0J
CQkJcGVycm9yKCJzZXRzb2Nrb3B0OiBzbmRidWYiKTsKLQkJCX0KLQkJfQotCQlpZiAodmVyYm9z
ZSkgewotCQkJaW50bGVuID0gc2l6ZW9mKGludCk7Ci0JCQlpZiAodXNyc2N0cF9nZXRzb2Nrb3B0
KHBzb2NrLCBTT0xfU09DS0VULCBTT19TTkRCVUYsICZteXNuZGJ1ZnNpemUsIChzb2NrbGVuX3Qg
KikmaW50bGVuKSA8IDApIHsKLQkJCQlwZXJyb3IoInNldHNvY2tvcHQ6IFNPX1NOREJVRiIpOwot
CQkJfSBlbHNlIHsKLQkJCQlmcHJpbnRmKHN0ZG91dCwiU2VuZCBidWZmZXIgc2l6ZTogJWQuXG4i
LCBteXNuZGJ1ZnNpemUpOwotCQkJfQotCQl9Ci0KLQkJYnVmZmVyID0gbWFsbG9jKGxlbmd0aCk7
Ci0JCW1lbXNldChidWZmZXIsICdiJywgbGVuZ3RoKTsKLQotCQlpZiAodXNyc2N0cF9jb25uZWN0
KHBzb2NrLCAoc3RydWN0IHNvY2thZGRyICopICZyZW1vdGVfYWRkciwgc2l6ZW9mKHN0cnVjdCBz
b2NrYWRkcl9pbikpID09IC0xICkgewotCQkJcGVycm9yKCJ1c3JzY3RwX2Nvbm5lY3QiKTsKLQkJ
CWV4aXQoMSk7Ci0JCX0KLQotCQlnZXR0aW1lb2ZkYXkoJnRpbWVfc3RhcnQsIE5VTEwpOwotCi0J
CWRvbmUgPSAwOwotCi0JCWlmIChydW50aW1lID4gMCkgewotI2lmbmRlZiBfV0lOMzIKLQkJCXNp
Z25hbChTSUdBTFJNLCBzdG9wX3NlbmRlcik7Ci0JCQlhbGFybShydW50aW1lKTsKLSNlbHNlCi0J
CQlwcmludGYoIllvdSBjYW5ub3Qgc2V0IHRoZSBydW50aW1lIGluIFdpbmRvd3MgeWV0XG4iKTsK
LQkJCWV4aXQoLTEpOwotI2VuZGlmCi0JCX0KLQotCQlpZiAodXNlX2NiKSB7Ci0JCQl3aGlsZSAo
ZG9uZSA8IDIgJiYgKG1lc3NhZ2VzIDwgKG51bWJlcl9vZl9tZXNzYWdlcyAtIDEpKSkgewotI2lm
ZGVmIF9XSU4zMgotCQkJCVNsZWVwKDEwMDApOwotI2Vsc2UKLQkJCQlzbGVlcCgxKTsKLSNlbmRp
ZgotCQkJfQotCQl9IGVsc2UgewotCQkJc25kaW5mby5zbmRfc2lkID0gMDsKLQkJCXNuZGluZm8u
c25kX2ZsYWdzID0gMDsKLQkJCWlmICh1bm9yZGVyZWQgIT0gMCkgewotCQkJCXNuZGluZm8uc25k
X2ZsYWdzIHw9IFNDVFBfVU5PUkRFUkVEOwotCQkJfQotCQkJc25kaW5mby5zbmRfcHBpZCA9IDA7
Ci0JCQlzbmRpbmZvLnNuZF9jb250ZXh0ID0gMDsKLQkJCXNuZGluZm8uc25kX2Fzc29jX2lkID0g
MDsKLQkJCWlmICh2ZXJib3NlKSB7Ci0JCQkJcHJpbnRmKCJTdGFydCBzZW5kaW5nICIpOwotCQkJ
CWlmIChudW1iZXJfb2ZfbWVzc2FnZXMgPiAwKSB7Ci0JCQkJCXByaW50ZigiJWxkIG1lc3NhZ2Vz
ICIsIChsb25nKW51bWJlcl9vZl9tZXNzYWdlcyk7Ci0JCQkJfQotCQkJCWlmIChydW50aW1lID4g
MCkgewotCQkJCQlwcmludGYoImZvciAldSBzZWNvbmRzIC4uLiIsIHJ1bnRpbWUpOwotCQkJCX0K
LQkJCQlwcmludGYoIlxuIik7Ci0JCQkJZmZsdXNoKHN0ZG91dCk7Ci0JCQl9Ci0JCQl3aGlsZSAo
IWRvbmUgJiYgKChudW1iZXJfb2ZfbWVzc2FnZXMgPT0gMCkgfHwgKG1lc3NhZ2VzIDwgKG51bWJl
cl9vZl9tZXNzYWdlcyAtIDEpKSkpIHsKLQkJCQlpZiAodmVyeV92ZXJib3NlKSB7Ci0JCQkJCXBy
aW50ZigiU2VuZGluZyBtZXNzYWdlIG51bWJlciAlbHUuXG4iLCBtZXNzYWdlcyArIDEpOwotCQkJ
CX0KLQotCQkJCWlmICh1c3JzY3RwX3NlbmR2KHBzb2NrLCBidWZmZXIsIGxlbmd0aCwgKHN0cnVj
dCBzb2NrYWRkciAqKSAmcmVtb3RlX2FkZHIsIDEsCi0JCQkJICAgICAgICAgICAgICAgICAgKHZv
aWQgKikmc25kaW5mbywgKHNvY2tsZW5fdClzaXplb2Yoc3RydWN0IHNjdHBfc25kaW5mbyksIFND
VFBfU0VORFZfU05ESU5GTywKLQkJCQkgICAgICAgICAgICAgICAgICAwKSA8IDApIHsKLQkJCQkJ
cGVycm9yKCJ1c3JzY3RwX3NlbmR2Iik7Ci0JCQkJCWV4aXQoMSk7Ci0JCQkJfQotCQkJCW1lc3Nh
Z2VzKys7Ci0JCQl9Ci0JCQlpZiAodmVyeV92ZXJib3NlKSB7Ci0JCQkJcHJpbnRmKCJTZW5kaW5n
IG1lc3NhZ2UgbnVtYmVyICVsdS5cbiIsIG1lc3NhZ2VzICsgMSk7Ci0JCQl9Ci0KLQkJCXNuZGlu
Zm8uc25kX2ZsYWdzIHw9IFNDVFBfRU9GOwotCQkJaWYgKHVzcnNjdHBfc2VuZHYocHNvY2ssIGJ1
ZmZlciwgbGVuZ3RoLCAoc3RydWN0IHNvY2thZGRyICopICZyZW1vdGVfYWRkciwgMSwKLQkJCSAg
ICAgICAgICAgICAgICAgICh2b2lkICopJnNuZGluZm8sIChzb2NrbGVuX3Qpc2l6ZW9mKHN0cnVj
dCBzY3RwX3NuZGluZm8pLCBTQ1RQX1NFTkRWX1NORElORk8sCi0JCQkgICAgICAgICAgICAgICAg
ICAwKSA8IDApIHsKLQkJCQlwZXJyb3IoInVzcnNjdHBfc2VuZHYiKTsKLQkJCQlleGl0KDEpOwot
CQkJfQotCQkJbWVzc2FnZXMrKzsKLQkJfQotCQlmcmVlIChidWZmZXIpOwotCi0JCWlmICh2ZXJi
b3NlKSB7Ci0JCQlwcmludGYoIkNsb3Npbmcgc29ja2V0LlxuIik7Ci0JCX0KLQotCQl1c3JzY3Rw
X2Nsb3NlKHBzb2NrKTsKLQkJZ2V0dGltZW9mZGF5KCZ0aW1lX25vdywgTlVMTCk7Ci0JCXRpbWVy
c3ViKCZ0aW1lX25vdywgJnRpbWVfc3RhcnQsICZ0aW1lX2RpZmYpOwotCQlzZWNvbmRzID0gdGlt
ZV9kaWZmLnR2X3NlYyArIChkb3VibGUpdGltZV9kaWZmLnR2X3VzZWMvMTAwMDAwMDsKLQkJcHJp
bnRmKCIlcyBvZiAlbGQgbWVzc2FnZXMgb2YgbGVuZ3RoICV1IHRvb2sgJWYgc2Vjb25kcy5cbiIs
Ci0JCSAgICAgICAiU2VuZGluZyIsIG1lc3NhZ2VzLCBsZW5ndGgsIHNlY29uZHMpOwotCQl0aHJv
dWdocHV0ID0gKGRvdWJsZSltZXNzYWdlcyAqIChkb3VibGUpbGVuZ3RoIC8gc2Vjb25kczsKLQkJ
cHJpbnRmKCJUaHJvdWdocHV0IHdhcyAlZiBCeXRlL3NlYy5cbiIsIHRocm91Z2hwdXQpOwotCX0K
LQotCXdoaWxlICh1c3JzY3RwX2ZpbmlzaCgpICE9IDApIHsKLSNpZmRlZiBfV0lOMzIKLQkJU2xl
ZXAoMTAwMCk7Ci0jZWxzZQotCQlzbGVlcCgxKTsKLSNlbmRpZgotCX0KLQlyZXR1cm4gMDsKLX0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi91c3JzY3RwbGliL0NNYWtlTGlzdHMudHh0CmluZGV4IGM1YjcyMjk2YjY1MS4uODk5Y2E4ZTBk
ZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3VzcnNjdHBsaWIvQ01ha2VMaXN0cy50eHQKQEAgLTEsNiArMSw2IEBACiAjCiAj
IENvcHlyaWdodCAoQykgMjAxNS0yMDE1IE9sZWcgQWxleGVlbmtvdgotIyBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxNyBGZWxpeCBXZWlucmFuaworIyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBGZWxp
eCBXZWlucmFuawogIwogIyBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwpAQCAtNDMsOCArNDMsOSBA
QCBzZXQoaW5jbHVkZWRpciAJCQkJJHtwcmVmaXh9L2luY2x1ZGUvdXNyc2N0cCkKIHNldChDTUFL
RV9SRVFVSVJFRF9JTkNMVURFUyAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0pCiBzZXQoQ01B
S0VfTUFDT1NYX1JQQVRIIAkJMSkKIAoraW5jbHVkZShDaGVja0NDb21waWxlckZsYWcpCisKIGFk
ZF9kZWZpbml0aW9ucygtRF9fVXNlcnNwYWNlX18pCi1hZGRfZGVmaW5pdGlvbnMoLURfX1VzZXJz
cGFjZV9vc18ke0NNQUtFX1NZU1RFTV9OQU1FfSkKIGFkZF9kZWZpbml0aW9ucygtRFNDVFBfU0lN
UExFX0FMTE9DQVRPUikKIGFkZF9kZWZpbml0aW9ucygtRFNDVFBfUFJPQ0VTU19MRVZFTF9MT0NL
UykKIApAQCAtNTMsMzQgKzU0LDI4IEBAIGFkZF9kZWZpbml0aW9ucygtRFNDVFBfUFJPQ0VTU19M
RVZFTF9MT0NLUykKICMgT1MgREVQRU5ERU5UCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLWlmICgke0NNQUtFX1NZU1RFTV9OQU1FfSBNQVRDSEVT
ICJMaW51eCIpCi0JYWRkX2RlZmluaXRpb25zKC1EX0dOVV9TT1VSQ0UpCitjaGVja19jX2NvbXBp
bGVyX2ZsYWcoLVduby1hZGRyZXNzLW9mLXBhY2tlZC1tZW1iZXIgaGFzX3dub19hZGRyZXNzX29m
X3BhY2tlZF9tZW1iZXIpCitpZiAoaGFzX3dub19hZGRyZXNzX29mX3BhY2tlZF9tZW1iZXIpCisJ
c2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gLVduby1hZGRyZXNzLW9mLXBhY2tl
ZC1tZW1iZXIiKQogZW5kaWYgKCkKIAotaWYgKCR7Q01BS0VfU1lTVEVNX05BTUV9IE1BVENIRVMg
IkZyZWVCU0QiKQotCWFkZF9kZWZpbml0aW9ucygtVV9fRnJlZUJTRF9fKQotCXNldChDTUFLRV9D
X0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9ICAgICAtV25vLWFkZHJlc3Mtb2YtcGFja2VkLW1lbWJl
ciIpCi0Jc2V0KENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9IC1Xbm8tYWRkcmVz
cy1vZi1wYWNrZWQtbWVtYmVyIikKK2NoZWNrX2NfY29tcGlsZXJfZmxhZygtV25vLWRlcHJlY2F0
ZWQtZGVjbGFyYXRpb25zIGhhc193bm9fZGVwcmVjYXRlZF9kZWNsYXJhdGlvbnMpCitpZiAoaGFz
X3dub19kZXByZWNhdGVkX2RlY2xhcmF0aW9ucykKKwlzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFL
RV9DX0ZMQUdTfSAtV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIikKIGVuZGlmICgpCiAKLWlm
ICgke0NNQUtFX1NZU1RFTV9OQU1FfSBNQVRDSEVTICJEYXJ3aW4iKQotCWFkZF9kZWZpbml0aW9u
cygtVV9fQVBQTEVfXykKLQlhZGRfZGVmaW5pdGlvbnMoLURfX0FQUExFX1VTRV9SRkNfMjI5MikK
LQlzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAgICAgLVduby1hZGRyZXNzLW9m
LXBhY2tlZC1tZW1iZXIgLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIpCi0Jc2V0KENNQUtF
X0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9IC1Xbm8tYWRkcmVzcy1vZi1wYWNrZWQtbWVt
YmVyIC1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiKQoraWYgKENNQUtFX1NZU1RFTV9OQU1F
IE1BVENIRVMgIkxpbnV4IikKKwlhZGRfZGVmaW5pdGlvbnMoLURfR05VX1NPVVJDRSkKIGVuZGlm
ICgpCiAKLWlmICgke0NNQUtFX1NZU1RFTV9OQU1FfSBNQVRDSEVTICJEcmFnb25GbHkiKQotCWFk
ZF9kZWZpbml0aW9ucygtVV9fRHJhZ29uRmx5X18pCitpZiAoQ01BS0VfU1lTVEVNX05BTUUgTUFU
Q0hFUyAiRGFyd2luIikKKwlhZGRfZGVmaW5pdGlvbnMoLURfX0FQUExFX1VTRV9SRkNfMjI5MikK
IGVuZGlmICgpCiAKLWlmICgke0NNQUtFX1NZU1RFTV9OQU1FfSBNQVRDSEVTICJOZXRCU0QiKQot
CWFkZF9kZWZpbml0aW9ucygtVV9fTmV0QlNEX18pCi1lbmRpZiAoKQorIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBNSVNDCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLWlmICgke0NNQUtFX1NZU1RF
TV9OQU1FfSBNQVRDSEVTICJPcGVuQlNEIikKLQlhZGRfZGVmaW5pdGlvbnMoLVVfX09wZW5CU0Rf
XykKLWVuZGlmICgpCiAKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIwpAQCAtMTcxLDEwICsxNjYsMTMgQEAgbGlzdChBUFBFTkQgdXNyc2N0cF9zb3Vy
Y2VzCiBhZGRfbGlicmFyeSh1c3JzY3RwIFNIQVJFRCAke3VzcnNjdHBfc291cmNlc30gJHt1c3Jz
Y3RwX2hlYWRlcnN9KQogYWRkX2xpYnJhcnkodXNyc2N0cC1zdGF0aWMgU1RBVElDICR7dXNyc2N0
cF9zb3VyY2VzfSAke3VzcnNjdHBfaGVhZGVyc30pCiAKK3RhcmdldF9pbmNsdWRlX2RpcmVjdG9y
aWVzKHVzcnNjdHAgUFVCTElDICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfSkKK3RhcmdldF9p
bmNsdWRlX2RpcmVjdG9yaWVzKHVzcnNjdHAtc3RhdGljIFBVQkxJQyAke0NNQUtFX0NVUlJFTlRf
U09VUkNFX0RJUn0pCisKIGlmIChXSU4zMikKIAltZXNzYWdlKFNUQVRVUyAibGluayBsaWJyYXJ5
OiB3czJfMzIiKQotCXRhcmdldF9saW5rX2xpYnJhcmllcyh1c3JzY3RwIHdzMl8zMikKLQl0YXJn
ZXRfbGlua19saWJyYXJpZXModXNyc2N0cC1zdGF0aWMgd3MyXzMyKQorCXRhcmdldF9saW5rX2xp
YnJhcmllcyh1c3JzY3RwIHdzMl8zMiBpcGhscGFwaS5saWIpCisJdGFyZ2V0X2xpbmtfbGlicmFy
aWVzKHVzcnNjdHAtc3RhdGljIHdzMl8zMiBpcGhscGFwaS5saWIpCiBlbmRpZiAoKQogCiBzZXRf
dGFyZ2V0X3Byb3BlcnRpZXModXNyc2N0cC1zdGF0aWMgUFJPUEVSVElFUyBPVVRQVVRfTkFNRSAi
dXNyc2N0cCIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL01ha2VmaWxlLm5tYWtl
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9NYWtlZmlsZS5ubWFrZQppbmRleCA0OGQyYmQxMTBjN2Uu
LmFmY2RhNmQ5MTVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9NYWtlZmlsZS5u
bWFrZQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL01ha2VmaWxlLm5tYWtlCkBAIC0zMSw3ICsz
MSw3IEBACiBDRkxBR1M9L0kuIC9XMyAvV1gNCiANCiBDVkFSU0RMTD0tRFNDVFBfREVCVUcgLURT
Q1RQX1NJTVBMRV9BTExPQ0FUT1IgLURTQ1RQX1BST0NFU1NfTEVWRUxfTE9DS1MNCi1DVkFSU0RM
TD0kKENWQVJTRExMKSAtRF9fVXNlcnNwYWNlX18gLURfX1VzZXJzcGFjZV9vc19XaW5kb3dzDQor
Q1ZBUlNETEw9JChDVkFSU0RMTCkgLURfX1VzZXJzcGFjZV9fDQogQ1ZBUlNETEw9JChDVkFSU0RM
TCkgLURJTkVUIC1ESU5FVDYNCiBDVkFSU0RMTD0kKENWQVJTRExMKSAtRF9MSUINCiANCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3Vz
cnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL21lc29uLmJ1aWxkIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0
cGxpYi9tZXNvbi5idWlsZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LmMxYTY2NTZmMWRhOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbWVz
b24uYnVpbGQKQEAgLTAsMCArMSwyMCBAQAorIyBJbmNsdWRlcworaW5jbHVkZV9kaXJzID0gaW5j
bHVkZV9kaXJlY3RvcmllcygKKyAgICAnLicsCisgICAgJ25ldGluZXQnLAorICAgICduZXRpbmV0
NicsCispCisKKyMgU291cmNlcworc291cmNlcyA9IGZpbGVzKFsKKyAgICAndXNlcl9lbnZpcm9u
bWVudC5jJywKKyAgICAndXNlcl9tYnVmLmMnLAorICAgICd1c2VyX3JlY3ZfdGhyZWFkLmMnLAor
ICAgICd1c2VyX3NvY2tldC5jJywKK10pCisKK3N1YmRpcignbmV0aW5ldCcpCitzdWJkaXIoJ25l
dGluZXQ2JykKKworIyBJbnN0YWxsIHVzcnNjdHAuaAoraW5zdGFsbF9oZWFkZXJzKCd1c3JzY3Rw
LmgnKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L21lc29uLmJ1aWxk
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L21lc29uLmJ1aWxkCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGE4NjYxNWJjZDRkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L21lc29uLmJ1aWxkCkBAIC0wLDAgKzEsMjAg
QEAKK3NvdXJjZXMgKz0gZmlsZXMoWworICAgICdzY3RwX2FzY29uZi5jJywKKyAgICAnc2N0cF9h
dXRoLmMnLAorICAgICdzY3RwX2JzZF9hZGRyLmMnLAorICAgICdzY3RwX2NhbGxvdXQuYycsCisg
ICAgJ3NjdHBfY2NfZnVuY3Rpb25zLmMnLAorICAgICdzY3RwX2NyYzMyLmMnLAorICAgICdzY3Rw
X2luZGF0YS5jJywKKyAgICAnc2N0cF9pbnB1dC5jJywKKyAgICAnc2N0cF9vdXRwdXQuYycsCisg
ICAgJ3NjdHBfcGNiLmMnLAorICAgICdzY3RwX3BlZWxvZmYuYycsCisgICAgJ3NjdHBfc2hhMS5j
JywKKyAgICAnc2N0cF9zc19mdW5jdGlvbnMuYycsCisgICAgJ3NjdHBfc3lzY3RsLmMnLAorICAg
ICdzY3RwX3RpbWVyLmMnLAorICAgICdzY3RwX3VzZXJzcGFjZS5jJywKKyAgICAnc2N0cF91c3Jy
ZXEuYycsCisgICAgJ3NjdHB1dGlsLmMnLAorXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNj
dHBsaWIvbmV0aW5ldC9zY3RwLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cC5o
Cm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggZjViMWQ4Mjg5MDIzLi44ZDhi
ZjMxZmU4MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHAuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNy
c2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cC5oCkBAIC0zMiwyMiArMzIsMjIgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZkZWYgX19GcmVlQlNE
X18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
I2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRp
bmV0L3NjdHAuaCAzMjM2NTcgMjAxNy0wOS0xNiAyMToyNjowNlogdHVleGVuICQiKTsKK19fRkJT
RElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwLmggMzU2MzU3IDIwMjAtMDEtMDQg
MjA6MzM6MTJaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAogI2lmbmRlZiBfTkVUSU5FVF9TQ1RQX0hf
CiAjZGVmaW5lIF9ORVRJTkVUX1NDVFBfSF8KIAotI2lmIChkZWZpbmVkKF9fQVBQTEVfXykgfHwg
ZGVmaW5lZChfX1VzZXJzcGFjZV9vc19MaW51eCkgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19E
YXJ3aW4pKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fbGludXhfXykKICNp
bmNsdWRlIDxzdGRpbnQuaD4KICNlbmRpZgogCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAKIAot
I2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgIWRlZmluZWQoX1dJTjMy
KQogI2RlZmluZSBTQ1RQX1BBQ0tFRCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKQogI2Vsc2UKICNw
cmFnbWEgcGFjayAocHVzaCwgMSkKQEAgLTI4NiwxMSArMjg2LDExIEBAIHN0cnVjdCBzY3RwX3Bh
cmFtaGRyIHsKICNkZWZpbmUgU0NUUF9QRUVMT0ZGICAgICAgICAgICAgICAgICAgICAweDAwMDA4
MDBhCiAvKiB0aGUgcmVhbCB3b3JrZXIgZm9yIHNjdHBfZ2V0YWRkcmxlbigpICovCiAjZGVmaW5l
IFNDVFBfR0VUX0FERFJfTEVOICAgICAgICAgICAgICAgMHgwMDAwODAwYgotI2lmIGRlZmluZWQo
X19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogLyogdGVtcG9yYXJ5IHdvcmthcm91bmQgZm9yIEFwcGxlIGxpc3RlbigpIGlzc3VlLCBu
byBhcmdzIHVzZWQgKi8KICNkZWZpbmUgU0NUUF9MSVNURU5fRklYCQkJMHgwMDAwODAwYwogI2Vu
ZGlmCi0jaWYgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKIC8qIHdvcmthcm91bmQgZm9yIEN5Z3dpbiBvbiBXaW5kb3dz
OiByZXR1cm5zIHRoZSBTT0NLRVQgaGFuZGxlICovCiAjZGVmaW5lIFNDVFBfR0VUX0hBTkRMRQkJ
CTB4MDAwMDgwMGQKICNlbmRpZgpAQCAtNTMwLDYgKzUzMCw3IEBAIHN0cnVjdCBzY3RwX2Vycm9y
X2F1dGhfaW52YWxpZF9obWFjIHsKICNkZWZpbmUgU0NUUF9QQ0JfRkxBR1NfQk9VTkRBTEwJCTB4
MDAwMDAwMDQKICNkZWZpbmUgU0NUUF9QQ0JfRkxBR1NfQUNDRVBUSU5HCTB4MDAwMDAwMDgKICNk
ZWZpbmUgU0NUUF9QQ0JfRkxBR1NfVU5CT1VORAkJMHgwMDAwMDAxMAorI2RlZmluZSBTQ1RQX1BD
Ql9GTEFHU19TTkRfSVRFUkFUT1JfVVAgIDB4MDAwMDAwMjAKICNkZWZpbmUgU0NUUF9QQ0JfRkxB
R1NfQ0xPU0VfSVAgICAgICAgICAweDAwMDQwMDAwCiAjZGVmaW5lIFNDVFBfUENCX0ZMQUdTX1dB
U19DT05ORUNURUQgICAgMHgwMDA4MDAwMAogI2RlZmluZSBTQ1RQX1BDQl9GTEFHU19XQVNfQUJP
UlRFRCAgICAgIDB4MDAxMDAwMDAKQEAgLTYwNyw5ICs2MDgsMTIgQEAgc3RydWN0IHNjdHBfZXJy
b3JfYXV0aF9pbnZhbGlkX2htYWMgewogI2RlZmluZSBTQ1RQX01PQklMSVRZX1BSSU1fREVMRVRF
RCAgICAgICAweDAwMDAwMDA0CiAKIAotI2RlZmluZSBTQ1RQX1NNQUxMRVNUX1BNVFUgNTEyCSAv
KiBzbWFsbGVzdCBwbXR1IGFsbG93ZWQgd2hlbiBkaXNhYmxpbmcgUE1UVSBkaXNjb3ZlcnkgKi8K
Ky8qIFNtYWxsZXN0IFBNVFUgYWxsb3dlZCB3aGVuIGRpc2FibGluZyBQTVRVIGRpc2NvdmVyeSAq
LworI2RlZmluZSBTQ1RQX1NNQUxMRVNUX1BNVFUgNTEyCisvKiBMYXJnZXN0IFBNVFUgYWxsb3dl
ZCB3aGVuIGRpc2FibGluZyBQTVRVIGRpc2NvdmVyeSAqLworI2RlZmluZSBTQ1RQX0xBUkdFU1Rf
UE1UVSAgNjU1MzYKIAotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBk
ZWZpbmVkKF9XSU4zMikKICNwcmFnbWEgcGFjayhwb3ApCiAjZW5kaWYKICN1bmRlZiBTQ1RQX1BB
Q0tFRApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfYXNjb25m
LmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9hc2NvbmYuYwpvbGQgbW9kZSAx
MDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGY2NTVmNjNjMjcyNC4uODFlMmFjZmQ1MGExCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0
cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2FzY29uZi5jCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3Rw
bGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2FzY29uZi5jCkBAIC0zMiw5ICszMiw5IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmZGVmIF9fRnJlZUJT
RF9fCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
ICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLV9fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0
aW5ldC9zY3RwX2FzY29uZi5jIDMyNDA1NiAyMDE3LTA5LTI3IDEzOjA1OjIzWiB0dWV4ZW4gJCIp
OworX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfYXNjb25mLmMgMzYz
MTk0IDIwMjAtMDctMTQgMjA6MzI6NTBaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAogI2luY2x1ZGUg
PG5ldGluZXQvc2N0cF9vcy5oPgpAQCAtNTMsMTAgKzUzLDYgQEAgX19GQlNESUQoIiRGcmVlQlNE
OiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfYXNjb25mLmMgMzI0MDU2IDIwMTctMDktMjcgMTM6MDU6
MjNaIHQKICAqIFNDVFBfREVCVUdfQVNDT05GMjogZGV0YWlsZWQgaW5mbwogICovCiAKLSNpZiBk
ZWZpbmVkKF9fQVBQTEVfXykKLSNkZWZpbmUgQVBQTEVfRklMRV9OTyAxCi0jZW5kaWYKLQogLyoK
ICAqIFJGQyA1MDYxCiAgKgpAQCAtMTA1LDQ3ICsxMDEsNTIgQEAgc2N0cF9hc2NvbmZfc3VjY2Vz
c19yZXNwb25zZSh1aW50MzJfdCBpZCkKIAogc3RhdGljIHN0cnVjdCBtYnVmICoKIHNjdHBfYXNj
b25mX2Vycm9yX3Jlc3BvbnNlKHVpbnQzMl90IGlkLCB1aW50MTZfdCBjYXVzZSwgdWludDhfdCAq
ZXJyb3JfdGx2LAotCQkJICAgdWludDE2X3QgdGx2X2xlbmd0aCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQxNl90IHRsdl9sZW5ndGgpCiB7CiAJc3RydWN0IG1idWYgKm1fcmVwbHkg
PSBOVUxMOwogCXN0cnVjdCBzY3RwX2FzY29uZl9wYXJhbWhkciAqYXBoOwogCXN0cnVjdCBzY3Rw
X2Vycm9yX2NhdXNlICplcnJvcjsKKwl1aW50MzJfdCBidWZfbGVuOworCXVpbnQxNl90IGksIHBh
cmFtX2xlbmd0aCwgY2F1c2VfbGVuZ3RoLCBwYWRkaW5nX2xlbmd0aDsKIAl1aW50OF90ICp0bHY7
CiAKLQltX3JlcGx5ID0gc2N0cF9nZXRfbWJ1Zl9mb3JfbXNnKChzaXplb2Yoc3RydWN0IHNjdHBf
YXNjb25mX3BhcmFtaGRyKSArCi0JCQkJCSB0bHZfbGVuZ3RoICsKLQkJCQkJIHNpemVvZihzdHJ1
Y3Qgc2N0cF9lcnJvcl9jYXVzZSkpLAotCQkJCQkwLCBNX05PV0FJVCwgMSwgTVRfREFUQSk7CisJ
aWYgKGVycm9yX3RsdiA9PSBOVUxMKSB7CisJCXRsdl9sZW5ndGggPSAwOworCX0KKwljYXVzZV9s
ZW5ndGggPSBzaXplb2Yoc3RydWN0IHNjdHBfZXJyb3JfY2F1c2UpICsgdGx2X2xlbmd0aDsKKwlw
YXJhbV9sZW5ndGggPSBzaXplb2Yoc3RydWN0IHNjdHBfYXNjb25mX3BhcmFtaGRyKSArIGNhdXNl
X2xlbmd0aDsKKwlwYWRkaW5nX2xlbmd0aCA9IHRsdl9sZW5ndGggJSA0OworCWlmIChwYWRkaW5n
X2xlbmd0aCAhPSAwKSB7CisJCXBhZGRpbmdfbGVuZ3RoID0gNCAtIHBhZGRpbmdfbGVuZ3RoOwor
CX0KKwlidWZfbGVuID0gcGFyYW1fbGVuZ3RoICsgcGFkZGluZ19sZW5ndGg7CisJaWYgKGJ1Zl9s
ZW4gPiBNTEVOKSB7CisJCVNDVFBEQkcoU0NUUF9ERUJVR19BU0NPTkYxLAorCQkJImFzY29uZl9l
cnJvcl9yZXNwb25zZTogdGx2X2xlbmd0aCAoJXhoKSB0b28gYmlnXG4iLAorCQkJdGx2X2xlbmd0
aCk7CisJCXJldHVybiAoTlVMTCk7CisJfQorCW1fcmVwbHkgPSBzY3RwX2dldF9tYnVmX2Zvcl9t
c2coYnVmX2xlbiwgMCwgTV9OT1dBSVQsIDEsIE1UX0RBVEEpOwogCWlmIChtX3JlcGx5ID09IE5V
TEwpIHsKIAkJU0NUUERCRyhTQ1RQX0RFQlVHX0FTQ09ORjEsCiAJCQkiYXNjb25mX2Vycm9yX3Jl
c3BvbnNlOiBjb3VsZG4ndCBnZXQgbWJ1ZiFcbiIpOwogCQlyZXR1cm4gKE5VTEwpOwogCX0KIAlh
cGggPSBtdG9kKG1fcmVwbHksIHN0cnVjdCBzY3RwX2FzY29uZl9wYXJhbWhkciAqKTsKLQllcnJv
ciA9IChzdHJ1Y3Qgc2N0cF9lcnJvcl9jYXVzZSAqKShhcGggKyAxKTsKLQotCWFwaC0+Y29ycmVs
YXRpb25faWQgPSBpZDsKIAlhcGgtPnBoLnBhcmFtX3R5cGUgPSBodG9ucyhTQ1RQX0VSUk9SX0NB
VVNFX0lORCk7CisJYXBoLT5waC5wYXJhbV9sZW5ndGggPSBodG9ucyhwYXJhbV9sZW5ndGgpOwor
CWFwaC0+Y29ycmVsYXRpb25faWQgPSBpZDsKKwllcnJvciA9IChzdHJ1Y3Qgc2N0cF9lcnJvcl9j
YXVzZSAqKShhcGggKyAxKTsKIAllcnJvci0+Y29kZSA9IGh0b25zKGNhdXNlKTsKLQllcnJvci0+
bGVuZ3RoID0gdGx2X2xlbmd0aCArIHNpemVvZihzdHJ1Y3Qgc2N0cF9lcnJvcl9jYXVzZSk7Ci0J
YXBoLT5waC5wYXJhbV9sZW5ndGggPSBlcnJvci0+bGVuZ3RoICsKLQkgICAgc2l6ZW9mKHN0cnVj
dCBzY3RwX2FzY29uZl9wYXJhbWhkcik7Ci0KLQlpZiAoYXBoLT5waC5wYXJhbV9sZW5ndGggPiBN
TEVOKSB7Ci0JCVNDVFBEQkcoU0NUUF9ERUJVR19BU0NPTkYxLAotCQkJImFzY29uZl9lcnJvcl9y
ZXNwb25zZTogdGx2X2xlbmd0aCAoJXhoKSB0b28gYmlnXG4iLAotCQkJdGx2X2xlbmd0aCk7Ci0J
CXNjdHBfbV9mcmVlbShtX3JlcGx5KTsJLyogZGlzY2FyZCAqLwotCQlyZXR1cm4gKE5VTEwpOwot
CX0KKwllcnJvci0+bGVuZ3RoID0gaHRvbnMoY2F1c2VfbGVuZ3RoKTsKIAlpZiAoZXJyb3JfdGx2
ICE9IE5VTEwpIHsKIAkJdGx2ID0gKHVpbnQ4X3QgKikgKGVycm9yICsgMSk7CiAJCW1lbWNweSh0
bHYsIGVycm9yX3RsdiwgdGx2X2xlbmd0aCk7CisJCWZvciAoaSA9IDA7IGkgPCBwYWRkaW5nX2xl
bmd0aDsgaSsrKSB7CisJCQl0bHZbdGx2X2xlbmd0aCArIGldID0gMDsKKwkJfQogCX0KLQlTQ1RQ
X0JVRl9MRU4obV9yZXBseSkgPSBhcGgtPnBoLnBhcmFtX2xlbmd0aDsKLQllcnJvci0+bGVuZ3Ro
ID0gaHRvbnMoZXJyb3ItPmxlbmd0aCk7Ci0JYXBoLT5waC5wYXJhbV9sZW5ndGggPSBodG9ucyhh
cGgtPnBoLnBhcmFtX2xlbmd0aCk7Ci0KKwlTQ1RQX0JVRl9MRU4obV9yZXBseSkgPSBidWZfbGVu
OwogCXJldHVybiAobV9yZXBseSk7CiB9CiAKQEAgLTE3NCwxMCArMTc1LDE2IEBAIHNjdHBfcHJv
Y2Vzc19hc2NvbmZfYWRkX2lwKHN0cnVjdCBzb2NrYWRkciAqc3JjLCBzdHJ1Y3Qgc2N0cF9hc2Nv
bmZfcGFyYW1oZHIgKmFwCiAjZW5kaWYKIAogCWFwYXJhbV9sZW5ndGggPSBudG9ocyhhcGgtPnBo
LnBhcmFtX2xlbmd0aCk7CisJaWYgKGFwYXJhbV9sZW5ndGggPCBzaXplb2Yoc3RydWN0IHNjdHBf
YXNjb25mX3BhcmFtaGRyKSArIHNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcikpIHsKKwkJcmV0
dXJuIChOVUxMKTsKKwl9CiAJcGggPSAoc3RydWN0IHNjdHBfcGFyYW1oZHIgKikoYXBoICsgMSk7
CiAJcGFyYW1fdHlwZSA9IG50b2hzKHBoLT5wYXJhbV90eXBlKTsKICNpZiBkZWZpbmVkKElORVQp
IHx8IGRlZmluZWQoSU5FVDYpCiAJcGFyYW1fbGVuZ3RoID0gbnRvaHMocGgtPnBhcmFtX2xlbmd0
aCk7CisJaWYgKHBhcmFtX2xlbmd0aCArIHNpemVvZihzdHJ1Y3Qgc2N0cF9hc2NvbmZfcGFyYW1o
ZHIpICE9IGFwYXJhbV9sZW5ndGgpIHsKKwkJcmV0dXJuIChOVUxMKTsKKwl9CiAjZW5kaWYKIAlz
YSA9ICZzdG9yZS5zYTsKIAlzd2l0Y2ggKHBhcmFtX3R5cGUpIHsKQEAgLTI0NSw2ICsyNTIsNyBA
QCBzY3RwX3Byb2Nlc3NfYXNjb25mX2FkZF9pcChzdHJ1Y3Qgc29ja2FkZHIgKnNyYywgc3RydWN0
IHNjdHBfYXNjb25mX3BhcmFtaGRyICphcAogCQkgICAgICAgICJwcm9jZXNzX2FzY29uZl9hZGRf
aXA6IHVzaW5nIHNvdXJjZSBhZGRyICIpOwogCQlTQ1RQREJHX0FERFIoU0NUUF9ERUJVR19BU0NP
TkYxLCBzcmMpOwogCX0KKwluZXQgPSBOVUxMOwogCS8qIGFkZCB0aGUgYWRkcmVzcyAqLwogCWlm
IChiYWRfYWRkcmVzcykgewogCQltX3JlcGx5ID0gc2N0cF9hc2NvbmZfZXJyb3JfcmVzcG9uc2Uo
YXBoLT5jb3JyZWxhdGlvbl9pZCwKQEAgLTI1OSwxNyArMjY3LDE5IEBAIHNjdHBfcHJvY2Vzc19h
c2NvbmZfYWRkX2lwKHN0cnVjdCBzb2NrYWRkciAqc3JjLCBzdHJ1Y3Qgc2N0cF9hc2NvbmZfcGFy
YW1oZHIgKmFwCiAJCSAgICBTQ1RQX0NBVVNFX1JFU09VUkNFX1NIT1JUQUdFLCAodWludDhfdCAq
KSBhcGgsCiAJCSAgICBhcGFyYW1fbGVuZ3RoKTsKIAl9IGVsc2UgewotCQkvKiBub3RpZnkgdXBw
ZXIgbGF5ZXIgKi8KLQkJc2N0cF91bHBfbm90aWZ5KFNDVFBfTk9USUZZX0FTQ09ORl9BRERfSVAs
IHN0Y2IsIDAsIHNhLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwogCQlpZiAocmVzcG9uc2VfcmVxdWly
ZWQpIHsKIAkJCW1fcmVwbHkgPQogCQkJICAgIHNjdHBfYXNjb25mX3N1Y2Nlc3NfcmVzcG9uc2Uo
YXBoLT5jb3JyZWxhdGlvbl9pZCk7CiAJCX0KLQkJc2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVS
X1RZUEVfUEFUSE1UVVJBSVNFLCBzdGNiLT5zY3RwX2VwLCBzdGNiLCBuZXQpOwotCQlzY3RwX3Rp
bWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9IRUFSVEJFQVQsIHN0Y2ItPnNjdHBfZXAsCi0JCSAg
ICAgICAgICAgICAgICAgc3RjYiwgbmV0KTsKLQkJaWYgKHNlbmRfaGIpIHsKLQkJCXNjdHBfc2Vu
ZF9oYihzdGNiLCBuZXQsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CisJCWlmIChuZXQgIT0gTlVMTCkg
eworCQkJLyogbm90aWZ5IHVwcGVyIGxheWVyICovCisJCQlzY3RwX3VscF9ub3RpZnkoU0NUUF9O
T1RJRllfQVNDT05GX0FERF9JUCwgc3RjYiwgMCwgc2EsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CisJ
CQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9QQVRITVRVUkFJU0UsIHN0Y2ItPnNj
dHBfZXAsIHN0Y2IsIG5ldCk7CisJCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9I
RUFSVEJFQVQsIHN0Y2ItPnNjdHBfZXAsCisJCQkJCSBzdGNiLCBuZXQpOworCQkJaWYgKHNlbmRf
aGIpIHsKKwkJCQlzY3RwX3NlbmRfaGIoc3RjYiwgbmV0LCBTQ1RQX1NPX05PVF9MT0NLRUQpOwor
CQkJfQogCQl9CiAJfQogCXJldHVybiAobV9yZXBseSk7CkBAIC0yNzgsNyArMjg4LDcgQEAgc2N0
cF9wcm9jZXNzX2FzY29uZl9hZGRfaXAoc3RydWN0IHNvY2thZGRyICpzcmMsIHN0cnVjdCBzY3Rw
X2FzY29uZl9wYXJhbWhkciAqYXAKIHN0YXRpYyBpbnQKIHNjdHBfYXNjb25mX2RlbF9yZW1vdGVf
YWRkcnNfZXhjZXB0KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNvY2thZGRyICpzcmMp
CiB7Ci0Jc3RydWN0IHNjdHBfbmV0cyAqc3JjX25ldCwgKm5ldDsKKwlzdHJ1Y3Qgc2N0cF9uZXRz
ICpzcmNfbmV0LCAqbmV0LCAqbm5ldDsKIAogCS8qIG1ha2Ugc3VyZSB0aGUgc291cmNlIGFkZHJl
c3MgZXhpc3RzIGFzIGEgZGVzdGluYXRpb24gbmV0ICovCiAJc3JjX25ldCA9IHNjdHBfZmluZG5l
dChzdGNiLCBzcmMpOwpAQCAtMjg4LDEwICsyOTgsOSBAQCBzY3RwX2FzY29uZl9kZWxfcmVtb3Rl
X2FkZHJzX2V4Y2VwdChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzb2NrYWRkciAqc3Jj
KQogCX0KIAogCS8qIGRlbGV0ZSBhbGwgZGVzdGluYXRpb24gYWRkcmVzc2VzIGV4Y2VwdCB0aGUg
c291cmNlICovCi0JVEFJTFFfRk9SRUFDSChuZXQsICZzdGNiLT5hc29jLm5ldHMsIHNjdHBfbmV4
dCkgeworCVRBSUxRX0ZPUkVBQ0hfU0FGRShuZXQsICZzdGNiLT5hc29jLm5ldHMsIHNjdHBfbmV4
dCwgbm5ldCkgewogCQlpZiAobmV0ICE9IHNyY19uZXQpIHsKIAkJCS8qIGRlbGV0ZSB0aGlzIGFk
ZHJlc3MgKi8KLQkJCXNjdHBfcmVtb3ZlX25ldChzdGNiLCBuZXQpOwogCQkJU0NUUERCRyhTQ1RQ
X0RFQlVHX0FTQ09ORjEsCiAJCQkJImFzY29uZl9kZWxfcmVtb3RlX2FkZHJzX2V4Y2VwdDogZGVs
ZXRpbmcgIik7CiAJCQlTQ1RQREJHX0FERFIoU0NUUF9ERUJVR19BU0NPTkYxLApAQCAtMjk5LDYg
KzMwOCw3IEBAIHNjdHBfYXNjb25mX2RlbF9yZW1vdGVfYWRkcnNfZXhjZXB0KHN0cnVjdCBzY3Rw
X3RjYiAqc3RjYiwgc3RydWN0IHNvY2thZGRyICpzcmMpCiAJCQkvKiBub3RpZnkgdXBwZXIgbGF5
ZXIgKi8KIAkJCXNjdHBfdWxwX25vdGlmeShTQ1RQX05PVElGWV9BU0NPTkZfREVMRVRFX0lQLCBz
dGNiLCAwLAogCQkJICAgIChzdHJ1Y3Qgc29ja2FkZHIgKikmbmV0LT5yby5fbF9hZGRyLCBTQ1RQ
X1NPX05PVF9MT0NLRUQpOworCQkJc2N0cF9yZW1vdmVfbmV0KHN0Y2IsIG5ldCk7CiAJCX0KIAl9
CiAJcmV0dXJuICgwKTsKQEAgLTMyOSwxMCArMzM5LDE2IEBAIHNjdHBfcHJvY2Vzc19hc2NvbmZf
ZGVsZXRlX2lwKHN0cnVjdCBzb2NrYWRkciAqc3JjLAogI2VuZGlmCiAKIAlhcGFyYW1fbGVuZ3Ro
ID0gbnRvaHMoYXBoLT5waC5wYXJhbV9sZW5ndGgpOworCWlmIChhcGFyYW1fbGVuZ3RoIDwgc2l6
ZW9mKHN0cnVjdCBzY3RwX2FzY29uZl9wYXJhbWhkcikgKyBzaXplb2Yoc3RydWN0IHNjdHBfcGFy
YW1oZHIpKSB7CisJCXJldHVybiAoTlVMTCk7CisJfQogCXBoID0gKHN0cnVjdCBzY3RwX3BhcmFt
aGRyICopKGFwaCArIDEpOwogCXBhcmFtX3R5cGUgPSBudG9ocyhwaC0+cGFyYW1fdHlwZSk7CiAj
aWYgZGVmaW5lZChJTkVUKSB8fCBkZWZpbmVkKElORVQ2KQogCXBhcmFtX2xlbmd0aCA9IG50b2hz
KHBoLT5wYXJhbV9sZW5ndGgpOworCWlmIChwYXJhbV9sZW5ndGggKyBzaXplb2Yoc3RydWN0IHNj
dHBfYXNjb25mX3BhcmFtaGRyKSAhPSBhcGFyYW1fbGVuZ3RoKSB7CisJCXJldHVybiAoTlVMTCk7
CisJfQogI2VuZGlmCiAJc2EgPSAmc3RvcmUuc2E7CiAJc3dpdGNoIChwYXJhbV90eXBlKSB7CkBA
IC00NjQsMTAgKzQ4MCwxNiBAQCBzY3RwX3Byb2Nlc3NfYXNjb25mX3NldF9wcmltYXJ5KHN0cnVj
dCBzb2NrYWRkciAqc3JjLAogI2VuZGlmCiAKIAlhcGFyYW1fbGVuZ3RoID0gbnRvaHMoYXBoLT5w
aC5wYXJhbV9sZW5ndGgpOworCWlmIChhcGFyYW1fbGVuZ3RoIDwgc2l6ZW9mKHN0cnVjdCBzY3Rw
X2FzY29uZl9wYXJhbWhkcikgKyBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpKSB7CisJCXJl
dHVybiAoTlVMTCk7CisJfQogCXBoID0gKHN0cnVjdCBzY3RwX3BhcmFtaGRyICopKGFwaCArIDEp
OwogCXBhcmFtX3R5cGUgPSBudG9ocyhwaC0+cGFyYW1fdHlwZSk7CiAjaWYgZGVmaW5lZChJTkVU
KSB8fCBkZWZpbmVkKElORVQ2KQogCXBhcmFtX2xlbmd0aCA9IG50b2hzKHBoLT5wYXJhbV9sZW5n
dGgpOworCWlmIChwYXJhbV9sZW5ndGggKyBzaXplb2Yoc3RydWN0IHNjdHBfYXNjb25mX3BhcmFt
aGRyKSAhPSBhcGFyYW1fbGVuZ3RoKSB7CisJCXJldHVybiAoTlVMTCk7CisJfQogI2VuZGlmCiAJ
c2EgPSAmc3RvcmUuc2E7CiAJc3dpdGNoIChwYXJhbV90eXBlKSB7CkBAIC01NzYsOCArNTk4LDcg
QEAgc2N0cF9wcm9jZXNzX2FzY29uZl9zZXRfcHJpbWFyeShzdHJ1Y3Qgc29ja2FkZHIgKnNyYywK
IAkJCQlzY3RwX21vdmVfY2h1bmtzX2Zyb21fbmV0KHN0Y2IsCiAJCQkJCQlzdGNiLT5hc29jLmRl
bGV0ZWRfcHJpbWFyeSk7CiAJCQl9Ci0JCQlzY3RwX2RlbGV0ZV9wcmltX3RpbWVyKHN0Y2ItPnNj
dHBfZXAsIHN0Y2IsCi0JCQkJCQlzdGNiLT5hc29jLmRlbGV0ZWRfcHJpbWFyeSk7CisJCQlzY3Rw
X2RlbGV0ZV9wcmltX3RpbWVyKHN0Y2ItPnNjdHBfZXAsIHN0Y2IpOwogCQl9CiAJfSBlbHNlIHsK
IAkJLyogY291bGRuJ3Qgc2V0IHRoZSByZXF1ZXN0ZWQgcHJpbWFyeSBhZGRyZXNzISAqLwpAQCAt
Njg3LDEwICs3MDgsMTEgQEAgc2N0cF9oYW5kbGVfYXNjb25mKHN0cnVjdCBtYnVmICptLCB1bnNp
Z25lZCBpbnQgb2Zmc2V0LAogCQlTQ1RQREJHKFNDVFBfREVCVUdfQVNDT05GMSwKIAkJCSJoYW5k
bGVfYXNjb25mOiBjb3VsZG4ndCBnZXQgbG9va3VwIGFkZHIhXG4iKTsKIAkJLyogcmVzcG9uZCB3
aXRoIGEgbWlzc2luZy9pbnZhbGlkIG1hbmRhdG9yeSBwYXJhbWV0ZXIgZXJyb3IgKi8KKwkJc2N0
cF9tX2ZyZWVtKG1fYWNrKTsKIAkJcmV0dXJuOwogCX0KLQkvKiBwYXJhbV9sZW5ndGggaXMgYWxy
ZWFkeSB2YWxpZGF0ZWQgaW4gcHJvY2Vzc19jb250cm9sLi4uICovCi0Jb2Zmc2V0ICs9IG50b2hz
KHBfYWRkci0+cGgucGFyYW1fbGVuZ3RoKTsJLyogc2tpcCBsb29rdXAgYWRkciAqLworCS8qIHNr
aXAgbG9va3VwIGFkZHIgKi8KKwlvZmZzZXQgKz0gU0NUUF9TSVpFMzIobnRvaHMocF9hZGRyLT5w
aC5wYXJhbV9sZW5ndGgpKTsKIAkvKiBnZXQgcG9pbnRlciB0byBmaXJzdCBhc2NvbmYgcGFyYW0g
aW4gQVNDT05GICovCiAJYXBoID0gKHN0cnVjdCBzY3RwX2FzY29uZl9wYXJhbWhkciAqKXNjdHBf
bV9nZXRwdHIobSwgb2Zmc2V0LCBzaXplb2Yoc3RydWN0IHNjdHBfYXNjb25mX3BhcmFtaGRyKSwg
KHVpbnQ4X3QgKikmYXBhcmFtX2J1Zik7CiAJaWYgKGFwaCA9PSBOVUxMKSB7CkBAIC03NzUsOCAr
Nzk3LDYgQEAgc2N0cF9oYW5kbGVfYXNjb25mKHN0cnVjdCBtYnVmICptLCB1bnNpZ25lZCBpbnQg
b2Zmc2V0LAogCQlpZiAobV9yZXN1bHQgIT0gTlVMTCkgewogCQkJU0NUUF9CVUZfTkVYVChtX3Rh
aWwpID0gbV9yZXN1bHQ7CiAJCQltX3RhaWwgPSBtX3Jlc3VsdDsKLQkJCS8qIHVwZGF0ZSBsZW5n
dGhzLCBtYWtlIHN1cmUgaXQncyBhbGlnbmVkIHRvbyAqLwotCQkJU0NUUF9CVUZfTEVOKG1fcmVz
dWx0KSA9IFNDVFBfU0laRTMyKFNDVFBfQlVGX0xFTihtX3Jlc3VsdCkpOwogCQkJYWNrX2NwLT5j
aC5jaHVua19sZW5ndGggKz0gU0NUUF9CVUZfTEVOKG1fcmVzdWx0KTsKIAkJCS8qIHNldCBmbGFn
IHRvIGZvcmNlIHN1Y2Nlc3MgcmVwb3J0cyAqLwogCQkJZXJyb3IgPSAxOwpAQCAtOTMwLDEyICs5
NTAsMTIgQEAgc2N0cF9hZGRyX21hdGNoKHN0cnVjdCBzY3RwX3BhcmFtaGRyICpwaCwgc3RydWN0
IHNvY2thZGRyICpzYSkKICAqIENsZWFudXAgZm9yIG5vbi1yZXNwb25kZWQvT1AgRVJSJ2QgQVND
T05GCiAgKi8KIHZvaWQKLXNjdHBfYXNjb25mX2NsZWFudXAoc3RydWN0IHNjdHBfdGNiICpzdGNi
LCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQpCitzY3RwX2FzY29uZl9jbGVhbnVwKHN0cnVjdCBzY3Rw
X3RjYiAqc3RjYikKIHsKIAkvKgogCSAqIGNsZWFyIG91dCBhbnkgZXhpc3RpbmcgYXNjb25mcyBn
b2luZyBvdXQKIAkgKi8KLQlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX0FTQ09ORiwg
c3RjYi0+c2N0cF9lcCwgc3RjYiwgbmV0LAorCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZ
UEVfQVNDT05GLCBzdGNiLT5zY3RwX2VwLCBzdGNiLCBOVUxMLAogCQkJU0NUUF9GUk9NX1NDVFBf
QVNDT05GICsgU0NUUF9MT0NfMik7CiAJc3RjYi0+YXNvYy5hc2NvbmZfc2VxX291dF9hY2tlZCA9
IHN0Y2ItPmFzb2MuYXNjb25mX3NlcV9vdXQ7CiAJLyogcmVtb3ZlIHRoZSBvbGQgQVNDT05GIG9u
IG91ciBvdXRib3VuZCBxdWV1ZSAqLwpAQCAtOTcyLDggKzk5MiwxMiBAQCBzY3RwX2FzY29uZl9u
ZXRzX2NsZWFudXAoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9pZm4gKmlmbikK
IAkJICAgICgoaWZuID09IE5VTEwpIHx8CiAJCSAgICAgKFNDVFBfR0VUX0lGX0lOREVYX0ZST01f
Uk9VVEUoJm5ldC0+cm8pICE9IGlmbi0+aWZuX2luZGV4KSkpIHsKIAkJCS8qIGNsZWFyIGFueSBj
YWNoZWQgcm91dGUgKi8KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQorCQkJUk9fTkhGUkVFKCZuZXQtPnJvKTsKKyNlbHNlCiAJCQlSVEZSRUUobmV0
LT5yby5yb19ydCk7CiAJCQluZXQtPnJvLnJvX3J0ID0gTlVMTDsKKyNlbmRpZgogCQl9CiAJCS8q
IGNsZWFyIGFueSBjYWNoZWQgc291cmNlIGFkZHJlc3MgKi8KIAkJaWYgKG5ldC0+c3JjX2FkZHJf
c2VsZWN0ZWQpIHsKQEAgLTEwMjUsOSArMTA0OSwxNCBAQCBzY3RwX2Fzc29jX2ltbWVkaWF0ZV9y
ZXRyYW5zKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfbmV0cyAqZHN0bmV0KQog
CQkgICAgKHN0Y2ItPmFzb2Muc2VudF9xdWV1ZV9jbnQgPiAwKSkgewogCQkJc3RydWN0IHNjdHBf
dG1pdF9jaHVuayAqY2hrOwogCi0JCQljaGsgPSBUQUlMUV9GSVJTVCgmc3RjYi0+YXNvYy5zZW50
X3F1ZXVlKTsKLQkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NFTkQsIHN0Y2It
PnNjdHBfZXAsCi0JCQkJCSBzdGNiLCBjaGstPndob1RvKTsKKwkJCVRBSUxRX0ZPUkVBQ0goY2hr
LCAmc3RjYi0+YXNvYy5zZW50X3F1ZXVlLCBzY3RwX25leHQpIHsKKwkJCQlpZiAoY2hrLT53aG9U
byAhPSBOVUxMKSB7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJCWlmIChjaGsgIT0gTlVM
TCkgeworCQkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NFTkQsIHN0Y2ItPnNj
dHBfZXAsIHN0Y2IsIGNoay0+d2hvVG8pOworCQkJfQogCQl9CiAJfQogCXJldHVybjsKQEAgLTEw
ODIsMTAgKzExMTEsMTQgQEAgc2N0cF9wYXRoX2NoZWNrX2FuZF9yZWFjdChzdHJ1Y3Qgc2N0cF90
Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2lmYSAqbmV3aWZhKQogCWlmIChhZGRybnVtID09IDEpIHsK
IAkJVEFJTFFfRk9SRUFDSChuZXQsICZzdGNiLT5hc29jLm5ldHMsIHNjdHBfbmV4dCkgewogCQkJ
LyogY2xlYXIgYW55IGNhY2hlZCByb3V0ZSBhbmQgc291cmNlIGFkZHJlc3MgKi8KKyNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQkJUk9fTkhGUkVF
KCZuZXQtPnJvKTsKKyNlbHNlCiAJCQlpZiAobmV0LT5yby5yb19ydCkgewogCQkJCVJURlJFRShu
ZXQtPnJvLnJvX3J0KTsKIAkJCQluZXQtPnJvLnJvX3J0ID0gTlVMTDsKIAkJCX0KKyNlbmRpZgog
CQkJaWYgKG5ldC0+c3JjX2FkZHJfc2VsZWN0ZWQpIHsKIAkJCQlzY3RwX2ZyZWVfaWZhKG5ldC0+
cm8uX3NfYWRkcik7CiAJCQkJbmV0LT5yby5fc19hZGRyID0gTlVMTDsKQEAgLTExMDQsMTAgKzEx
MzcsMTQgQEAgc2N0cF9wYXRoX2NoZWNrX2FuZF9yZWFjdChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2Is
IHN0cnVjdCBzY3RwX2lmYSAqbmV3aWZhKQogCS8qIE11bHRpcGxlIGxvY2FsIGFkZHJlc3NlcyBl
eHNpc3QgaW4gdGhlIGFzc29jaWF0aW9uLiAgKi8KIAlUQUlMUV9GT1JFQUNIKG5ldCwgJnN0Y2It
PmFzb2MubmV0cywgc2N0cF9uZXh0KSB7CiAJCS8qIGNsZWFyIGFueSBjYWNoZWQgcm91dGUgYW5k
IHNvdXJjZSBhZGRyZXNzICovCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKKwkJUk9fTkhGUkVFKCZuZXQtPnJvKTsKKyNlbHNlCiAJCWlmIChuZXQt
PnJvLnJvX3J0KSB7CiAJCQlSVEZSRUUobmV0LT5yby5yb19ydCk7CiAJCQluZXQtPnJvLnJvX3J0
ID0gTlVMTDsKIAkJfQorI2VuZGlmCiAJCWlmIChuZXQtPnNyY19hZGRyX3NlbGVjdGVkKSB7CiAJ
CQlzY3RwX2ZyZWVfaWZhKG5ldC0+cm8uX3NfYWRkcik7CiAJCQluZXQtPnJvLl9zX2FkZHIgPSBO
VUxMOwpAQCAtMTEyMiw3ICsxMTU5LDExIEBAIHNjdHBfcGF0aF9jaGVja19hbmRfcmVhY3Qoc3Ry
dWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9pZmEgKm5ld2lmYSkKIAkJU0NUUF9SVEFM
TE9DKChzY3RwX3JvdXRlX3QgKikmbmV0LT5ybywKIAkJCSAgICAgc3RjYi0+c2N0cF9lcC0+ZGVm
X3ZyZl9pZCwKIAkJCSAgICAgc3RjYi0+c2N0cF9lcC0+ZmlibnVtKTsKKyNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQlpZiAobmV0LT5yby5yb19u
aCA9PSBOVUxMKQorI2Vsc2UKIAkJaWYgKG5ldC0+cm8ucm9fcnQgPT0gTlVMTCkKKyNlbmRpZgog
CQkJY29udGludWU7CiAKIAkJY2hhbmdlZCA9IDA7CkBAIC0xMTYyLDcgKzEyMDMsNyBAQCBzY3Rw
X3BhdGhfY2hlY2tfYW5kX3JlYWN0KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBf
aWZhICpuZXdpZmEpCiAJCX0KIAl9CiB9Ci0jZW5kaWYgLyogX19GcmVlQlNEX18gIF9fQVBQTEVf
XyAgX19Vc2Vyc3BhY2VfXyAqLworI2VuZGlmCiAKIC8qCiAgKiBwcm9jZXNzIGFuIEFERC9ERUxF
VEUgSVAgYWNrIGZyb20gcGVlci4KQEAgLTExOTQsNyArMTIzNSw3IEBAIHNjdHBfYXNjb25mX2Fk
ZHJfbWdtdF9hY2soc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9pZmEgKmFkZHIs
IHVpbnQzMl90CiAJCQlzY3RwX3BhdGhfY2hlY2tfYW5kX3JlYWN0KHN0Y2IsIGFkZHIpOwogCQkJ
cmV0dXJuOwogCQl9Ci0jZW5kaWYgLyogX19GcmVlQlNEX18gX19BUFBMRV9fIF9fVXNlcnNwYWNl
X18gKi8KKyNlbmRpZgogCQkvKiBjbGVhciBhbnkgY2FjaGVkL3RvcG9sb2dpY2FsbHkgaW5jb3Jy
ZWN0IHNvdXJjZSBhZGRyZXNzZXMgKi8KIAkJc2N0cF9hc2NvbmZfbmV0c19jbGVhbnVwKHN0Y2Is
IGFkZHItPmlmbl9wKTsKIAl9CkBAIC0xMzgxLDcgKzE0MjIsNyBAQCBzY3RwX2FzY29uZl9xdWV1
ZV9hZGQoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9pZmEgKmlmYSwKIAkJaWYg
KHNjdHBfYXNjb25mX3F1ZXVlX21nbXQoc3RjYiwKIAkJCQkJICAgc3RjYi0+YXNvYy5hc2NvbmZf
YWRkcl9kZWxfcGVuZGluZywKIAkJCQkJICAgU0NUUF9ERUxfSVBfQUREUkVTUykgPT0gMCkgewot
CQkJU0NUUERCRyhTQ1RQX0RFQlVHX0FTQ09ORjIsICJhc2NvbmZfcXVldWVfYWRkOiBxdWVpbmcg
cGVuZGluZyBkZWxldGVcbiIpOworCQkJU0NUUERCRyhTQ1RQX0RFQlVHX0FTQ09ORjIsICJhc2Nv
bmZfcXVldWVfYWRkOiBxdWV1aW5nIHBlbmRpbmcgZGVsZXRlXG4iKTsKIAkJCXBlbmRpbmdfZGVs
ZXRlX3F1ZXVlZCA9IDE7CiAJCQkvKiBjbGVhciBvdXQgdGhlIHBlbmRpbmcgZGVsZXRlIGluZm8g
Ki8KIAkJCXN0Y2ItPmFzb2MuYXNjb25mX2RlbF9wZW5kaW5nID0gMDsKQEAgLTE2OTgsOCArMTcz
OSw3IEBAIHNjdHBfaGFuZGxlX2FzY29uZl9hY2soc3RydWN0IG1idWYgKm0sIGludCBvZmZzZXQs
CiAJCWNoYXIgbXNnW1NDVFBfRElBR19JTkZPX0xFTl07CiAKIAkJU0NUUERCRyhTQ1RQX0RFQlVH
X0FTQ09ORjEsICJoYW5kbGVfYXNjb25mX2FjazogZ290IHVuZXhwZWN0ZWQgbmV4dCBzZXJpYWwg
bnVtYmVyISBBYm9ydGluZyBhc29jIVxuIik7Ci0JCXNucHJpbnRmKG1zZywgc2l6ZW9mKG1zZyks
ICJOZXZlciBzZW50IHNlcmlhbCBudW1iZXIgJTguOHgiLAotCQkJIHNlcmlhbF9udW0pOworCQlT
Q1RQX1NOUFJJTlRGKG1zZywgc2l6ZW9mKG1zZyksICJOZXZlciBzZW50IHNlcmlhbCBudW1iZXIg
JTguOHgiLCBzZXJpYWxfbnVtKTsKIAkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQ
X0NBVVNFX1BST1RPQ09MX1ZJT0xBVElPTiwgbXNnKTsKIAkJc2N0cF9hYm9ydF9hbl9hc3NvY2lh
dGlvbihzdGNiLT5zY3RwX2VwLCBzdGNiLCBvcF9lcnIsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CiAJ
CSphYm9ydF9ub191bmxvY2sgPSAxOwpAQCAtMTcxNCw3ICsxNzU0LDcgQEAgc2N0cF9oYW5kbGVf
YXNjb25mX2FjayhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IG9mZnNldCwKIAogCWlmIChzZXJpYWxfbnVt
ID09IGFzb2MtPmFzY29uZl9zZXFfb3V0IC0gMSkgewogCQkvKiBzdG9wIG91ciB0aW1lciAqLwot
CQlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX0FTQ09ORiwgc3RjYi0+c2N0cF9lcCwg
c3RjYiwgbmV0LAorCQlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX0FTQ09ORiwgc3Rj
Yi0+c2N0cF9lcCwgc3RjYiwgTlVMTCwKIAkJCQlTQ1RQX0ZST01fU0NUUF9BU0NPTkYgKyBTQ1RQ
X0xPQ181KTsKIAl9CiAKQEAgLTE3ODgsOSArMTgyOCw5IEBAIHNjdHBfaGFuZGxlX2FzY29uZl9h
Y2soc3RydWN0IG1idWYgKm0sIGludCBvZmZzZXQsCiAJCX0JCS8qIHN3aXRjaCAqLwogCiAJCS8q
IHVwZGF0ZSByZW1haW5pbmcgQVNDT05GLUFDSyBtZXNzYWdlIGxlbmd0aCB0byBwcm9jZXNzICov
Ci0JCWFja19sZW5ndGggLT0gU0NUUF9TSVpFMzIocGFyYW1fbGVuZ3RoKTsKLQkJaWYgKGFja19s
ZW5ndGggPD0gMCkgewotCQkJLyogbm8gbW9yZSBkYXRhIGluIHRoZSBtYnVmIGNoYWluICovCisJ
CWlmIChhY2tfbGVuZ3RoID4gU0NUUF9TSVpFMzIocGFyYW1fbGVuZ3RoKSkgeworCQkJYWNrX2xl
bmd0aCAtPSBTQ1RQX1NJWkUzMihwYXJhbV9sZW5ndGgpOworCQl9IGVsc2UgewogCQkJYnJlYWs7
CiAJCX0KIAkJb2Zmc2V0ICs9IFNDVFBfU0laRTMyKHBhcmFtX2xlbmd0aCk7CkBAIC0xOTAxLDcg
KzE5NDEsNyBAQCBzY3RwX2FkZHJfbWdtdF9hc3NvYyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBz
dHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJc3dpdGNoIChpZmEtPmFkZHJlc3Muc2Euc2FfZmFtaWx5
KSB7CiAjaWZkZWYgSU5FVDYKIAljYXNlIEFGX0lORVQ2OgotI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
IAkJaWYgKHByaXNvbl9jaGVja19pcDYoaW5wLT5pcF9pbnAuaW5wLmlucF9jcmVkLAogCQkgICAg
ICAgICAgICAgICAgICAgICAmaWZhLT5hZGRyZXNzLnNpbjYuc2luNl9hZGRyKSAhPSAwKSB7CiAJ
CQlyZXR1cm47CkBAIC0xOTExLDcgKzE5NTEsNyBAQCBzY3RwX2FkZHJfbWdtdF9hc3NvYyhzdHJ1
Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAjZW5kaWYKICNpZmRl
ZiBJTkVUCiAJY2FzZSBBRl9JTkVUOgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJaWYgKHByaXNv
bl9jaGVja19pcDQoaW5wLT5pcF9pbnAuaW5wLmlucF9jcmVkLAogCQkgICAgICAgICAgICAgICAg
ICAgICAmaWZhLT5hZGRyZXNzLnNpbi5zaW5fYWRkcikgIT0gMCkgewogCQkJcmV0dXJuOwpAQCAt
MTk3MiwxMiArMjAxMiwxMCBAQCBzY3RwX2FkZHJfbWdtdF9hc3NvYyhzdHJ1Y3Qgc2N0cF9pbnBj
YiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJY2FzZSBBRl9JTkVUOgogCXsKIAkJc3Ry
dWN0IHNvY2thZGRyX2luICpzaW47Ci0JCXN0cnVjdCBpbjZwY2IgKmlucDY7CiAKLQkJaW5wNiA9
IChzdHJ1Y3QgaW42cGNiICopJmlucC0+aXBfaW5wLmlucDsKIAkJLyogaW52YWxpZCBpZiB3ZSBh
cmUgYSB2NiBvbmx5IGVuZHBvaW50ICovCiAJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9Q
Q0JfRkxBR1NfQk9VTkRfVjYpICYmCi0JCSAgICBTQ1RQX0lQVjZfVjZPTkxZKGlucDYpKQorCQkg
ICAgU0NUUF9JUFY2X1Y2T05MWShpbnApKQogCQkJcmV0dXJuOwogCiAJCXNpbiA9ICZpZmEtPmFk
ZHJlc3Muc2luOwpAQCAtMjAxMCw4ICsyMDQ4LDggQEAgc2N0cF9hZGRyX21nbXRfYXNzb2Moc3Ry
dWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkJICogc2VudCB3
aGVuIHRoZSBzdGF0ZSBnb2VzIG9wZW4uCiAJCQkgKi8KIAkJCWlmIChzdGF0dXMgPT0gMCAmJgot
CQkJICAgICgoU0NUUF9HRVRfU1RBVEUoJnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVfT1BFTikg
fHwKLQkJCSAgICAgKFNDVFBfR0VUX1NUQVRFKCZzdGNiLT5hc29jKSA9PSBTQ1RQX1NUQVRFX1NI
VVRET1dOX1JFQ0VJVkVEKSkpIHsKKwkJCSAgICAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFND
VFBfU1RBVEVfT1BFTikgfHwKKwkJCSAgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBf
U1RBVEVfU0hVVERPV05fUkVDRUlWRUQpKSkgewogI2lmZGVmIFNDVFBfVElNRVJfQkFTRURfQVND
T05GCiAJCQkJc2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfQVNDT05GLCBpbnAsCiAJ
CQkJICAgIHN0Y2IsIHN0Y2ItPmFzb2MucHJpbWFyeV9kZXN0aW5hdGlvbik7CkBAIC0yMDUwLDEw
ICsyMDg4LDggQEAgc2N0cF9hc2NvbmZfaXRlcmF0b3JfZXAoc3RydWN0IHNjdHBfaW5wY2IgKmlu
cCwgdm9pZCAqcHRyLCB1aW50MzJfdCB2YWwgU0NUUF9VTlUKIAkJY2FzZSBBRl9JTkVUOgogCQl7
CiAJCQkvKiBpbnZhbGlkIGlmIHdlIGFyZSBhIHY2IG9ubHkgZW5kcG9pbnQgKi8KLQkJCXN0cnVj
dCBpbjZwY2IgKmlucDY7Ci0JCQlpbnA2ID0gKHN0cnVjdCBpbjZwY2IgKikmaW5wLT5pcF9pbnAu
aW5wOwogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19CT1VORF9WNikg
JiYKLQkJCSAgICBTQ1RQX0lQVjZfVjZPTkxZKGlucDYpKSB7CisJCQkgICAgU0NUUF9JUFY2X1Y2
T05MWShpbnApKSB7CiAJCQkJY250X2ludmFsaWQrKzsKIAkJCQlpZiAoYXNjLT5jbnQgPT0gY250
X2ludmFsaWQpCiAJCQkJCXJldHVybiAoMSk7CkBAIC0yMTQ0LDcgKzIxODAsNyBAQCBzY3RwX2Fz
Y29uZl9pdGVyYXRvcl9zdGNiKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3Rj
YiAqc3RjYiwKIAkJCQkvKiB3ZSBza2lwIHVuc3BlY2lmZWQgYWRkcmVzc2VzICovCiAJCQkJY29u
dGludWU7CiAJCQl9Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJaWYgKHByaXNvbl9jaGVja19p
cDYoaW5wLT5pcF9pbnAuaW5wLmlucF9jcmVkLAogCQkJICAgICAgICAgICAgICAgICAgICAgJnNp
bjYtPnNpbjZfYWRkcikgIT0gMCkgewogCQkJCWNvbnRpbnVlOwpAQCAtMjE2NiwxMyArMjIwMiwx
MSBAQCBzY3RwX2FzY29uZl9pdGVyYXRvcl9zdGNiKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0
cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJY2FzZSBBRl9JTkVUOgogCQl7CiAJCQkvKiBpbnZhbGlk
IGlmIHdlIGFyZSBhIHY2IG9ubHkgZW5kcG9pbnQgKi8KLQkJCXN0cnVjdCBpbjZwY2IgKmlucDY7
CiAJCQlzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbjsKIAotCQkJaW5wNiA9IChzdHJ1Y3QgaW42cGNi
ICopJmlucC0+aXBfaW5wLmlucDsKIAkJCS8qIGludmFsaWQgaWYgd2UgYXJlIGEgdjYgb25seSBl
bmRwb2ludCAqLwogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19CT1VO
RF9WNikgJiYKLQkJCSAgICBTQ1RQX0lQVjZfVjZPTkxZKGlucDYpKQorCQkJICAgIFNDVFBfSVBW
Nl9WNk9OTFkoaW5wKSkKIAkJCQljb250aW51ZTsKIAogCQkJc2luID0gJmlmYS0+YWRkcmVzcy5z
aW47CkBAIC0yMTgwLDcgKzIyMTQsNyBAQCBzY3RwX2FzY29uZl9pdGVyYXRvcl9zdGNiKHN0cnVj
dCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJCQkvKiB3ZSBza2lw
IHVuc3BlY2lmZWQgYWRkcmVzc2VzICovCiAJCQkJY29udGludWU7CiAJCQl9Ci0jaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogCQkJaWYgKHByaXNvbl9jaGVja19pcDQoaW5wLT5pcF9pbnAuaW5wLmlucF9j
cmVkLAogCQkJICAgICAgICAgICAgICAgICAgICAgJnNpbi0+c2luX2FkZHIpICE9IDApIHsKIAkJ
CQljb250aW51ZTsKQEAgLTIxOTEsNyArMjIyNSw3IEBAIHNjdHBfYXNjb25mX2l0ZXJhdG9yX3N0
Y2Ioc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkJCWNv
bnRpbnVlOwogCQkJfQogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19C
T1VORF9WNikgJiYKLQkJCSAgICBTQ1RQX0lQVjZfVjZPTkxZKGlucDYpKSB7CisJCQkgICAgU0NU
UF9JUFY2X1Y2T05MWShpbnApKSB7CiAJCQkJY250X2ludmFsaWQrKzsKIAkJCQlpZiAoYXNjLT5j
bnQgPT0gY250X2ludmFsaWQpCiAJCQkJCXJldHVybjsKQEAgLTIyMTcsMTggKzIyNTEsMTkgQEAg
c2N0cF9hc2NvbmZfaXRlcmF0b3Jfc3RjYihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qg
c2N0cF90Y2IgKnN0Y2IsCiAJCX0gZWxzZSBpZiAodHlwZSA9PSBTQ1RQX0RFTF9JUF9BRERSRVNT
KSB7CiAJCQlzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQ7CiAJCQlUQUlMUV9GT1JFQUNIKG5ldCwgJnN0
Y2ItPmFzb2MubmV0cywgc2N0cF9uZXh0KSB7Ci0JCQkJc2N0cF9ydGVudHJ5X3QgKnJ0OwotCiAJ
CQkJLyogZGVsZXRlIHRoaXMgYWRkcmVzcyBpZiBjYWNoZWQgKi8KIAkJCQlpZiAobmV0LT5yby5f
c19hZGRyID09IGlmYSkgewogCQkJCQlzY3RwX2ZyZWVfaWZhKG5ldC0+cm8uX3NfYWRkcik7CiAJ
CQkJCW5ldC0+cm8uX3NfYWRkciA9IE5VTEw7CiAJCQkJCW5ldC0+c3JjX2FkZHJfc2VsZWN0ZWQg
PSAwOwotCQkJCQlydCA9IG5ldC0+cm8ucm9fcnQ7Ci0JCQkJCWlmIChydCkgewotCQkJCQkJUlRG
UkVFKHJ0KTsKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQorCQkJCQlST19OSEZSRUUoJm5ldC0+cm8pOworI2Vsc2UKKwkJCQkJaWYgKG5ldC0+cm8u
cm9fcnQpIHsKKwkJCQkJCVJURlJFRShuZXQtPnJvLnJvX3J0KTsKIAkJCQkJCW5ldC0+cm8ucm9f
cnQgPSBOVUxMOwogCQkJCQl9CisjZW5kaWYKIAkJCQkJLyoKIAkJCQkJICogTm93IHdlIGRlbGV0
ZWQgb3VyIHNyYyBhZGRyZXNzLAogCQkJCQkgKiBzaG91bGQgd2Ugbm90IGFsc28gbm93IHJlc2V0
IHRoZQpAQCAtMjI2Myw4ICsyMjk4LDggQEAgc2N0cF9hc2NvbmZfaXRlcmF0b3Jfc3RjYihzdHJ1
Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCQkgKiBjb3VudCBv
ZiBxdWV1ZWQgcGFyYW1zLiAgSWYgaW4gdGhlIG5vbi1vcGVuIHN0YXRlLAogCQkJICogdGhlc2Ug
Z2V0IHNlbnQgd2hlbiB0aGUgYXNzb2MgZ29lcyBvcGVuLgogCQkJICovCi0JCQlpZiAoKFNDVFBf
R0VUX1NUQVRFKCZzdGNiLT5hc29jKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHx8Ci0JCQkgICAgKFND
VFBfR0VUX1NUQVRFKCZzdGNiLT5hc29jKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVE
KSkgeworCQkJaWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHx8
CisJCQkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVD
RUlWRUQpKSB7CiAJCQkJaWYgKHN0YXR1cyA+PSAwKSB7CiAJCQkJCW51bV9xdWV1ZWQrKzsKIAkJ
CQl9CkBAIC0yMzI1LDggKzIzNjAsOCBAQCBzY3RwX3NldF9wcmltYXJ5X2lwX2FkZHJlc3Nfc2Eo
c3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc29ja2FkZHIgKnNhKQogCQkJInNldF9wcmlt
YXJ5X2lwX2FkZHJlc3Nfc2E6IHF1ZXVlZCBvbiB0Y2I9JXAsICIsCiAJCQkodm9pZCAqKXN0Y2Ip
OwogCQlTQ1RQREJHX0FERFIoU0NUUF9ERUJVR19BU0NPTkYxLCBzYSk7Ci0JCWlmICgoU0NUUF9H
RVRfU1RBVEUoJnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVfT1BFTikgfHwKLQkJICAgIChTQ1RQ
X0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkp
IHsKKwkJaWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHx8CisJ
CSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZF
RCkpIHsKICNpZmRlZiBTQ1RQX1RJTUVSX0JBU0VEX0FTQ09ORgogCQkJc2N0cF90aW1lcl9zdGFy
dChTQ1RQX1RJTUVSX1RZUEVfQVNDT05GLAogCQkJCQkgc3RjYi0+c2N0cF9lcCwgc3RjYiwKQEAg
LTI0NjksNyArMjUwNCw3IEBAIHNjdHBfZmluZF92YWxpZF9sb2NhbGFkZHIoc3RydWN0IHNjdHBf
dGNiICpzdGNiLCBpbnQgYWRkcl9sb2NrZWQpCiAJCQkJCQkvKiBza2lwIHVuc3BlY2lmZWQgYWRk
cmVzc2VzICovCiAJCQkJCQljb250aW51ZTsKIAkJCQkJfQotI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
IAkJCQkJaWYgKHByaXNvbl9jaGVja19pcDQoc3RjYi0+c2N0cF9lcC0+aXBfaW5wLmlucC5pbnBf
Y3JlZCwKIAkJCQkJICAgICAgICAgICAgICAgICAgICAgJnNpbi0+c2luX2FkZHIpICE9IDApIHsK
IAkJCQkJCWNvbnRpbnVlOwpAQCAtMjUwMyw3ICsyNTM4LDcgQEAgc2N0cF9maW5kX3ZhbGlkX2xv
Y2FsYWRkcihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIGludCBhZGRyX2xvY2tlZCkKIAkJCQkJCS8q
IHdlIHNraXAgdW5zcGVjaWZlZCBhZGRyZXNzZXMgKi8KIAkJCQkJCWNvbnRpbnVlOwogCQkJCQl9
Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCQlpZiAocHJpc29uX2NoZWNrX2lwNihzdGNiLT5z
Y3RwX2VwLT5pcF9pbnAuaW5wLmlucF9jcmVkLAogCQkJCQkgICAgICAgICAgICAgICAgICAgICAm
c2luNi0+c2luNl9hZGRyKSAhPSAwKSB7CiAJCQkJCQljb250aW51ZTsKQEAgLTI1OTIsMTQgKzI2
MjcsMTQgQEAgc2N0cF9jb21wb3NlX2FzY29uZihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIGludCAq
cmV0bGVuLCBpbnQgYWRkcl9sb2NrZWQpCiAJaWYgKG1fYXNjb25mX2NoayA9PSBOVUxMKSB7CiAJ
CS8qIG5vIG1idWYncyAqLwogCQlTQ1RQREJHKFNDVFBfREVCVUdfQVNDT05GMSwKLQkJCSJjb21w
b3NlX2FzY29uZjogY291bGRuJ3QgZ2V0IGNodW5rIG1idWYhXG4iKTsKKwkJCSJzY3RwX2NvbXBv
c2VfYXNjb25mOiBjb3VsZG4ndCBnZXQgY2h1bmsgbWJ1ZiFcbiIpOwogCQlyZXR1cm4gKE5VTEwp
OwogCX0KIAltX2FzY29uZiA9IHNjdHBfZ2V0X21idWZfZm9yX21zZyhNQ0xCWVRFUywgMCwgTV9O
T1dBSVQsIDEsIE1UX0RBVEEpOwogCWlmIChtX2FzY29uZiA9PSBOVUxMKSB7CiAJCS8qIG5vIG1i
dWYncyAqLwogCQlTQ1RQREJHKFNDVFBfREVCVUdfQVNDT05GMSwKLQkJCSJjb21wb3NlX2FzY29u
ZjogY291bGRuJ3QgZ2V0IG1idWYhXG4iKTsKKwkJCSJzY3RwX2NvbXBvc2VfYXNjb25mOiBjb3Vs
ZG4ndCBnZXQgbWJ1ZiFcbiIpOwogCQlzY3RwX21fZnJlZW0obV9hc2NvbmZfY2hrKTsKIAkJcmV0
dXJuIChOVUxMKTsKIAl9CkBAIC0yNzI0LDEwICsyNzU5LDEyIEBAIHNjdHBfY29tcG9zZV9hc2Nv
bmYoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBpbnQgKnJldGxlbiwgaW50IGFkZHJfbG9ja2VkKQog
CQkJCWJyZWFrOwogI2VuZGlmCiAJCQlkZWZhdWx0OgotCQkJCXBfc2l6ZSA9IDA7Ci0JCQkJYWRk
cl9zaXplID0gMDsKLQkJCQlhZGRyX3B0ciA9IE5VTEw7Ci0JCQkJYnJlYWs7CisJCQkJU0NUUERC
RyhTQ1RQX0RFQlVHX0FTQ09ORjEsCisJCQkJCSJzY3RwX2NvbXBvc2VfYXNjb25mOiBubyB1c2Fi
bGUgbG9va3VwIGFkZHIgKGZhbWlseSA9ICVkKSFcbiIsCisJCQkJCWZvdW5kX2FkZHItPnNhX2Zh
bWlseSk7CisJCQkJc2N0cF9tX2ZyZWVtKG1fYXNjb25mX2Noayk7CisJCQkJc2N0cF9tX2ZyZWVt
KG1fYXNjb25mKTsKKwkJCQlyZXR1cm4gKE5VTEwpOwogCQkJfQogCQkJbG9va3VwLT5waC5wYXJh
bV9sZW5ndGggPSBodG9ucyhTQ1RQX1NJWkUzMihwX3NpemUpKTsKIAkJCW1lbWNweShsb29rdXAt
PmFkZHIsIGFkZHJfcHRyLCBhZGRyX3NpemUpOwpAQCAtMjczNSwxMiArMjc3MiwxMCBAQCBzY3Rw
X2NvbXBvc2VfYXNjb25mKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgaW50ICpyZXRsZW4sIGludCBh
ZGRyX2xvY2tlZCkKIAkJfSBlbHNlIHsKIAkJCS8qIHVoIG9oLi4uIGRvbid0IGhhdmUgYW55IGFk
ZHJlc3M/PyAqLwogCQkJU0NUUERCRyhTQ1RQX0RFQlVHX0FTQ09ORjEsCi0JCQkJImNvbXBvc2Vf
YXNjb25mOiBubyBsb29rdXAgYWRkciFcbiIpOwotCQkJLyogWFhYIGZvciBub3csIHdlIHNlbmQg
YSBJUHY0IGFkZHJlc3Mgb2YgMC4wLjAuMCAqLwotCQkJbG9va3VwLT5waC5wYXJhbV90eXBlID0g
aHRvbnMoU0NUUF9JUFY0X0FERFJFU1MpOwotCQkJbG9va3VwLT5waC5wYXJhbV9sZW5ndGggPSBo
dG9ucyhTQ1RQX1NJWkUzMihzaXplb2Yoc3RydWN0IHNjdHBfaXB2NGFkZHJfcGFyYW0pKSk7Ci0J
CQltZW1zZXQobG9va3VwLT5hZGRyLCAwLCBzaXplb2Yoc3RydWN0IGluX2FkZHIpKTsKLQkJCVND
VFBfQlVGX0xFTihtX2FzY29uZl9jaGspICs9IFNDVFBfU0laRTMyKHNpemVvZihzdHJ1Y3Qgc2N0
cF9pcHY0YWRkcl9wYXJhbSkpOworCQkJCSJzY3RwX2NvbXBvc2VfYXNjb25mOiBubyBsb29rdXAg
YWRkciFcbiIpOworCQkJc2N0cF9tX2ZyZWVtKG1fYXNjb25mX2Noayk7CisJCQlzY3RwX21fZnJl
ZW0obV9hc2NvbmYpOworCQkJcmV0dXJuIChOVUxMKTsKIAkJfQogCX0KIAkvKiBjaGFpbiBpdCBh
bGwgdG9nZXRoZXIgKi8KQEAgLTI4NjEsOCArMjg5Niw3IEBAIHNjdHBfcHJvY2Vzc19pbml0YWNr
X2FkZHJlc3NlcyhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBtYnVmICptLAogCQkJCSAq
IG91dCB0aGUgQVNDT05GLgogCQkJCSAqLwogCQkJCWlmIChzdGF0dXMgPT0gMCAmJgotCQkJCSAg
ICBTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0KLQkJCQkgICAgU0NUUF9TVEFURV9PUEVO
KSB7CisJCQkJICAgIFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfT1BFTikgewog
I2lmZGVmIFNDVFBfVElNRVJfQkFTRURfQVNDT05GCiAJCQkJCXNjdHBfdGltZXJfc3RhcnQoU0NU
UF9USU1FUl9UWVBFX0FTQ09ORiwKIAkJCQkJCQkgc3RjYi0+c2N0cF9lcCwgc3RjYiwKQEAgLTMw
MzcsMTAgKzMwNzEsNiBAQCBzY3RwX2NoZWNrX2FkZHJlc3NfbGlzdF9lcChzdHJ1Y3Qgc2N0cF90
Y2IgKnN0Y2IsIHN0cnVjdCBtYnVmICptLCBpbnQgb2Zmc2V0LAogCQkJCSJjaGVja19hZGRyX2xp
c3RfZXA6IGxhZGRyLT5pZmEgaXMgTlVMTCIpOwogCQkJY29udGludWU7CiAJCX0KLQkJaWYgKGxh
ZGRyLT5pZmEgPT0gTlVMTCkgewotCQkJU0NUUERCRyhTQ1RQX0RFQlVHX0FTQ09ORjEsICJjaGVj
a19hZGRyX2xpc3RfZXA6IGxhZGRyLT5pZmEtPmlmYV9hZGRyIGlzIE5VTEwiKTsKLQkJCWNvbnRp
bnVlOwotCQl9CiAJCS8qIGRvIGkgaGF2ZSBpdCBpbXBsaWNpdGx5PyAqLwogCQlpZiAoc2N0cF9j
bXBhZGRyKCZsYWRkci0+aWZhLT5hZGRyZXNzLnNhLCBpbml0X2FkZHIpKSB7CiAJCQljb250aW51
ZTsKQEAgLTMxMDIsNyArMzEzMiw3IEBAIHNjdHBfY2hlY2tfYWRkcmVzc19saXN0X2FsbChzdHJ1
Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBtYnVmICptLCBpbnQgb2Zmc2V0LAogI2lmZGVmIElO
RVQKIAkJCWNhc2UgQUZfSU5FVDoKIAkJCQlzaW4gPSAmc2N0cF9pZmEtPmFkZHJlc3Muc2luOwot
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQlpZiAocHJpc29uX2NoZWNrX2lwNChzdGNiLT5zY3Rw
X2VwLT5pcF9pbnAuaW5wLmlucF9jcmVkLAogCQkJCSAgICAgICAgICAgICAgICAgICAgICZzaW4t
PnNpbl9hZGRyKSAhPSAwKSB7CiAJCQkJCWNvbnRpbnVlOwpAQCAtMzExOCw3ICszMTQ4LDcgQEAg
c2N0cF9jaGVja19hZGRyZXNzX2xpc3RfYWxsKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0
IG1idWYgKm0sIGludCBvZmZzZXQsCiAjaWZkZWYgSU5FVDYKIAkJCWNhc2UgQUZfSU5FVDY6CiAJ
CQkJc2luNiA9ICZzY3RwX2lmYS0+YWRkcmVzcy5zaW42OwotI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
IAkJCQlpZiAocHJpc29uX2NoZWNrX2lwNihzdGNiLT5zY3RwX2VwLT5pcF9pbnAuaW5wLmlucF9j
cmVkLAogCQkJCSAgICAgICAgICAgICAgICAgICAgICZzaW42LT5zaW42X2FkZHIpICE9IDApIHsK
IAkJCQkJY29udGludWU7CkBAIC0zMTg3LDcgKzMyMTcsNyBAQCBzY3RwX2NoZWNrX2FkZHJlc3Nf
bGlzdChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBtYnVmICptLCBpbnQgb2Zmc2V0LAog
ICovCiB1aW50MzJfdAogc2N0cF9hZGRyX21nbXRfZXBfc2Eoc3RydWN0IHNjdHBfaW5wY2IgKmlu
cCwgc3RydWN0IHNvY2thZGRyICpzYSwKLSAgICB1aW50MzJfdCB0eXBlLCB1aW50MzJfdCB2cmZf
aWQsIHN0cnVjdCBzY3RwX2lmYSAqc2N0cF9pZmFwKQorICAgICAgICAgICAgICAgICAgICAgdWlu
dDMyX3QgdHlwZSwgdWludDMyX3QgdnJmX2lkKQogewogCXN0cnVjdCBzY3RwX2lmYSAqaWZhOwog
CXN0cnVjdCBzY3RwX2xhZGRyICpsYWRkciwgKm5sYWRkcjsKQEAgLTMxOTgsOSArMzIyOCw3IEBA
IHNjdHBfYWRkcl9tZ210X2VwX3NhKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzb2Nr
YWRkciAqc2EsCiAJCXJldHVybiAoRUlOVkFMKTsKIAl9CiAjZW5kaWYKLQlpZiAoc2N0cF9pZmFw
KSB7Ci0JCWlmYSA9IHNjdHBfaWZhcDsKLQl9IGVsc2UgaWYgKHR5cGUgPT0gU0NUUF9BRERfSVBf
QUREUkVTUykgeworCWlmICh0eXBlID09IFNDVFBfQUREX0lQX0FERFJFU1MpIHsKIAkJLyogRm9y
IGFuIGFkZCB0aGUgYWRkcmVzcyBNVVNUIGJlIG9uIHRoZSBzeXN0ZW0gKi8KIAkJaWZhID0gc2N0
cF9maW5kX2lmYV9ieV9hZGRyKHNhLCB2cmZfaWQsIFNDVFBfQUREUl9OT1RfTE9DS0VEKTsKIAl9
IGVsc2UgaWYgKHR5cGUgPT0gU0NUUF9ERUxfSVBfQUREUkVTUykgewpAQCAtMzI4NywxMCArMzMx
NSw5IEBAIHNjdHBfYWRkcl9tZ210X2VwX3NhKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVj
dCBzb2NrYWRkciAqc2EsCiB9CiAKIHZvaWQKLXNjdHBfYXNjb25mX3NlbmRfbmF0X3N0YXRlX3Vw
ZGF0ZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCi0JCQkJICBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQp
CitzY3RwX2FzY29uZl9zZW5kX25hdF9zdGF0ZV91cGRhdGUoc3RydWN0IHNjdHBfdGNiICpzdGNi
LCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQpCiB7Ci0Jc3RydWN0IHNjdHBfYXNjb25mX2FkZHIgKmFh
OworCXN0cnVjdCBzY3RwX2FzY29uZl9hZGRyICphYV92dGFnLCAqYWFfYWRkLCAqYWFfZGVsOwog
CXN0cnVjdCBzY3RwX2lmYSAqc2N0cF9pZmFwOwogCXN0cnVjdCBzY3RwX2FzY29uZl90YWdfcGFy
YW0gKnZ0YWc7CiAjaWZkZWYgSU5FVApAQCAtMzI5OSw2ICszMzI2LDcgQEAgc2N0cF9hc2NvbmZf
c2VuZF9uYXRfc3RhdGVfdXBkYXRlKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKICNpZmRlZiBJTkVU
NgogCXN0cnVjdCBzb2NrYWRkcl9pbjYgKnRvNjsKICNlbmRpZgorCiAJaWYgKG5ldCA9PSBOVUxM
KSB7CiAJCVNDVFBEQkcoU0NUUF9ERUJVR19BU0NPTkYxLCAic2N0cF9hc2NvbmZfc2VuZF9uYXRf
c3RhdGVfdXBkYXRlOiBNaXNzaW5nIG5ldFxuIik7CiAJCXJldHVybjsKQEAgLTMzMDcsMTA4ICsz
MzM1LDg0IEBAIHNjdHBfYXNjb25mX3NlbmRfbmF0X3N0YXRlX3VwZGF0ZShzdHJ1Y3Qgc2N0cF90
Y2IgKnN0Y2IsCiAJCVNDVFBEQkcoU0NUUF9ERUJVR19BU0NPTkYxLCAic2N0cF9hc2NvbmZfc2Vu
ZF9uYXRfc3RhdGVfdXBkYXRlOiBNaXNzaW5nIHN0Y2JcbiIpOwogCQlyZXR1cm47CiAJfQotICAv
KiBOZWVkIHRvIGhhdmUgaW4gdGhlIGFzY29uZjoKLSAgICogLSB2dGFncGFyYW0obXlfdnRhZy9w
ZWVyX3Z0YWcpCi0gICAqIC0gYWRkKDAuMC4wLjApCi0gICAqIC0gZGVsKDAuMC4wLjApCi0gICAq
IC0gQW55IGdsb2JhbCBhZGRyZXNzZXMgYWRkKGFkZHIpCi0gICAqLwotCVNDVFBfTUFMTE9DKGFh
LCBzdHJ1Y3Qgc2N0cF9hc2NvbmZfYWRkciAqLCBzaXplb2YoKmFhKSwKLQkgICAgICAgICAgICBT
Q1RQX01fQVNDX0FERFIpOwotCWlmIChhYSA9PSBOVUxMKSB7Ci0JCS8qIGRpZG4ndCBnZXQgbWVt
b3J5ICovCi0JCVNDVFBEQkcoU0NUUF9ERUJVR19BU0NPTkYxLAotCQkgICAgICAgICJzY3RwX2Fz
Y29uZl9zZW5kX25hdF9zdGF0ZV91cGRhdGU6IGZhaWxlZCB0byBnZXQgbWVtb3J5IVxuIik7CisJ
LyogTmVlZCB0byBoYXZlIGluIHRoZSBBU0NPTkY6CisJICogLSBWVEFHKG15X3Z0YWcvcGVlcl92
dGFnKQorCSAqIC0gQUREKHdpbGRjYXJkKQorCSAqIC0gREVMKHdpbGRjYXJkKQorCSAqIC0gQURE
KEFueSBnbG9iYWwgYWRkcmVzc2VzKQorCSAqLworCVNDVFBfTUFMTE9DKGFhX3Z0YWcsIHN0cnVj
dCBzY3RwX2FzY29uZl9hZGRyICosIHNpemVvZihzdHJ1Y3Qgc2N0cF9hc2NvbmZfYWRkciksIFND
VFBfTV9BU0NfQUREUik7CisJU0NUUF9NQUxMT0MoYWFfYWRkLCBzdHJ1Y3Qgc2N0cF9hc2NvbmZf
YWRkciAqLCBzaXplb2Yoc3RydWN0IHNjdHBfYXNjb25mX2FkZHIpLCBTQ1RQX01fQVNDX0FERFIp
OworCVNDVFBfTUFMTE9DKGFhX2RlbCwgc3RydWN0IHNjdHBfYXNjb25mX2FkZHIgKiwgc2l6ZW9m
KHN0cnVjdCBzY3RwX2FzY29uZl9hZGRyKSwgU0NUUF9NX0FTQ19BRERSKTsKKworCWlmICgoYWFf
dnRhZyA9PSBOVUxMKSB8fCAoYWFfYWRkID09IE5VTEwpIHx8IChhYV9kZWwgPT0gTlVMTCkpIHsK
KwkJLyogRGlkbid0IGdldCBtZW1vcnkgKi8KKwkJU0NUUERCRyhTQ1RQX0RFQlVHX0FTQ09ORjEs
ICJzY3RwX2FzY29uZl9zZW5kX25hdF9zdGF0ZV91cGRhdGU6IGZhaWxlZCB0byBnZXQgbWVtb3J5
IVxuIik7CitvdXQ6CisJCWlmIChhYV92dGFnICE9IE5VTEwpIHsKKwkJCVNDVFBfRlJFRShhYV92
dGFnLCBTQ1RQX01fQVNDX0FERFIpOworCQl9CisJCWlmIChhYV9hZGQgIT0gTlVMTCkgeworCQkJ
U0NUUF9GUkVFKGFhX2FkZCwgU0NUUF9NX0FTQ19BRERSKTsKKwkJfQorCQlpZiAoYWFfZGVsICE9
IE5VTEwpIHsKKwkJCVNDVFBfRlJFRShhYV9kZWwsIFNDVFBfTV9BU0NfQUREUik7CisJCX0KIAkJ
cmV0dXJuOwogCX0KLQlhYS0+c3BlY2lhbF9kZWwgPSAwOwotCS8qIGZpbGwgaW4gYXNjb25mIGFk
ZHJlc3MgcGFyYW1ldGVyIGZpZWxkcyAqLwotCS8qIHRvcCBsZXZlbCBlbGVtZW50cyBhcmUgIm5l
dHdvcmtlZCIgZHVyaW5nIHNlbmQgKi8KLQlhYS0+aWZhID0gTlVMTDsKLQlhYS0+c2VudCA9IDA7
CQkvKiBjbGVhciBzZW50IGZsYWcgKi8KLQl2dGFnID0gKHN0cnVjdCBzY3RwX2FzY29uZl90YWdf
cGFyYW0gKikmYWEtPmFwLmFwaDsKKwltZW1zZXQoYWFfdnRhZywgMCwgc2l6ZW9mKHN0cnVjdCBz
Y3RwX2FzY29uZl9hZGRyKSk7CisJYWFfdnRhZy0+c3BlY2lhbF9kZWwgPSAwOworCS8qIEZpbGwg
aW4gQVNDT05GIGFkZHJlc3MgcGFyYW1ldGVyIGZpZWxkcy4gKi8KKwkvKiBUb3AgbGV2ZWwgZWxl
bWVudHMgYXJlICJuZXR3b3JrZWQiIGR1cmluZyBzZW5kLiAqLworCWFhX3Z0YWctPmlmYSA9IE5V
TEw7CisJYWFfdnRhZy0+c2VudCA9IDA7CQkvKiBjbGVhciBzZW50IGZsYWcgKi8KKwl2dGFnID0g
KHN0cnVjdCBzY3RwX2FzY29uZl90YWdfcGFyYW0gKikmYWFfdnRhZy0+YXAuYXBoOwogCXZ0YWct
PmFwaC5waC5wYXJhbV90eXBlID0gU0NUUF9OQVRfVlRBR1M7CiAJdnRhZy0+YXBoLnBoLnBhcmFt
X2xlbmd0aCA9IHNpemVvZihzdHJ1Y3Qgc2N0cF9hc2NvbmZfdGFnX3BhcmFtKTsKIAl2dGFnLT5s
b2NhbF92dGFnID0gaHRvbmwoc3RjYi0+YXNvYy5teV92dGFnKTsKIAl2dGFnLT5yZW1vdGVfdnRh
ZyA9IGh0b25sKHN0Y2ItPmFzb2MucGVlcl92dGFnKTsKLQlUQUlMUV9JTlNFUlRfVEFJTCgmc3Rj
Yi0+YXNvYy5hc2NvbmZfcXVldWUsIGFhLCBuZXh0KTsKIAotCVNDVFBfTUFMTE9DKGFhLCBzdHJ1
Y3Qgc2N0cF9hc2NvbmZfYWRkciAqLCBzaXplb2YoKmFhKSwKLQkgICAgICAgICAgICBTQ1RQX01f
QVNDX0FERFIpOwotCWlmIChhYSA9PSBOVUxMKSB7Ci0JCS8qIGRpZG4ndCBnZXQgbWVtb3J5ICov
Ci0JCVNDVFBEQkcoU0NUUF9ERUJVR19BU0NPTkYxLAotCQkgICAgICAgICJzY3RwX2FzY29uZl9z
ZW5kX25hdF9zdGF0ZV91cGRhdGU6IGZhaWxlZCB0byBnZXQgbWVtb3J5IVxuIik7Ci0JCXJldHVy
bjsKLQl9Ci0JbWVtc2V0KGFhLCAwLCBzaXplb2Yoc3RydWN0IHNjdHBfYXNjb25mX2FkZHIpKTsK
LQkvKiBmaWxsIGluIGFzY29uZiBhZGRyZXNzIHBhcmFtZXRlciBmaWVsZHMgKi8KLQkvKiBBREQo
MC4wLjAuMCkgKi8KLQlzd2l0Y2ggKG5ldC0+cm8uX2xfYWRkci5zYS5zYV9mYW1pbHkpIHsKLSNp
ZmRlZiBJTkVUCi0JY2FzZSBBRl9JTkVUOgotCQlhYS0+YXAuYXBoLnBoLnBhcmFtX3R5cGUgPSBT
Q1RQX0FERF9JUF9BRERSRVNTOwotCQlhYS0+YXAuYXBoLnBoLnBhcmFtX2xlbmd0aCA9IHNpemVv
ZihzdHJ1Y3Qgc2N0cF9hc2NvbmZfYWRkcnY0X3BhcmFtKTsKLQkJYWEtPmFwLmFkZHJwLnBoLnBh
cmFtX3R5cGUgPSBTQ1RQX0lQVjRfQUREUkVTUzsKLQkJYWEtPmFwLmFkZHJwLnBoLnBhcmFtX2xl
bmd0aCA9IHNpemVvZiAoc3RydWN0IHNjdHBfaXB2NGFkZHJfcGFyYW0pOwotCQkvKiBObyBuZWVk
IHRvIGFkZCBhbiBhZGRyZXNzLCB3ZSBhcmUgdXNpbmcgMC4wLjAuMCAqLwotCQlUQUlMUV9JTlNF
UlRfVEFJTCgmc3RjYi0+YXNvYy5hc2NvbmZfcXVldWUsIGFhLCBuZXh0KTsKLQkJYnJlYWs7Ci0j
ZW5kaWYKLSNpZmRlZiBJTkVUNgotCWNhc2UgQUZfSU5FVDY6Ci0JCWFhLT5hcC5hcGgucGgucGFy
YW1fdHlwZSA9IFNDVFBfQUREX0lQX0FERFJFU1M7Ci0JCWFhLT5hcC5hcGgucGgucGFyYW1fbGVu
Z3RoID0gc2l6ZW9mKHN0cnVjdCBzY3RwX2FzY29uZl9hZGRyX3BhcmFtKTsKLQkJYWEtPmFwLmFk
ZHJwLnBoLnBhcmFtX3R5cGUgPSBTQ1RQX0lQVjZfQUREUkVTUzsKLQkJYWEtPmFwLmFkZHJwLnBo
LnBhcmFtX2xlbmd0aCA9IHNpemVvZiAoc3RydWN0IHNjdHBfaXB2NmFkZHJfcGFyYW0pOwotCQkv
KiBObyBuZWVkIHRvIGFkZCBhbiBhZGRyZXNzLCB3ZSBhcmUgdXNpbmcgMC4wLjAuMCAqLwotCQlU
QUlMUV9JTlNFUlRfVEFJTCgmc3RjYi0+YXNvYy5hc2NvbmZfcXVldWUsIGFhLCBuZXh0KTsKLQkJ
YnJlYWs7Ci0jZW5kaWYKLQlkZWZhdWx0OgotCQlTQ1RQREJHKFNDVFBfREVCVUdfQVNDT05GMSwK
LQkJICAgICAgICAic2N0cF9hc2NvbmZfc2VuZF9uYXRfc3RhdGVfdXBkYXRlOiB1bmtub3duIGFk
ZHJlc3MgZmFtaWx5XG4iKTsKLQkJU0NUUF9GUkVFKGFhLCBTQ1RQX01fQVNDX0FERFIpOwotCQly
ZXR1cm47Ci0JfQotCVNDVFBfTUFMTE9DKGFhLCBzdHJ1Y3Qgc2N0cF9hc2NvbmZfYWRkciAqLCBz
aXplb2YoKmFhKSwKLQkgICAgICAgICAgICBTQ1RQX01fQVNDX0FERFIpOwotCWlmIChhYSA9PSBO
VUxMKSB7Ci0JCS8qIGRpZG4ndCBnZXQgbWVtb3J5ICovCi0JCVNDVFBEQkcoU0NUUF9ERUJVR19B
U0NPTkYxLAotCQkgICAgICAgICJzY3RwX2FzY29uZl9zZW5kX25hdF9zdGF0ZV91cGRhdGU6IGZh
aWxlZCB0byBnZXQgbWVtb3J5IVxuIik7Ci0JCXJldHVybjsKLQl9Ci0JbWVtc2V0KGFhLCAwLCBz
aXplb2Yoc3RydWN0IHNjdHBfYXNjb25mX2FkZHIpKTsKLQkvKiBmaWxsIGluIGFzY29uZiBhZGRy
ZXNzIHBhcmFtZXRlciBmaWVsZHMgKi8KLQkvKiBBREQoMC4wLjAuMCkgKi8KKwltZW1zZXQoYWFf
YWRkLCAwLCBzaXplb2Yoc3RydWN0IHNjdHBfYXNjb25mX2FkZHIpKTsKKwltZW1zZXQoYWFfZGVs
LCAwLCBzaXplb2Yoc3RydWN0IHNjdHBfYXNjb25mX2FkZHIpKTsKIAlzd2l0Y2ggKG5ldC0+cm8u
X2xfYWRkci5zYS5zYV9mYW1pbHkpIHsKICNpZmRlZiBJTkVUCiAJY2FzZSBBRl9JTkVUOgotCQlh
YS0+YXAuYXBoLnBoLnBhcmFtX3R5cGUgPSBTQ1RQX0FERF9JUF9BRERSRVNTOwotCQlhYS0+YXAu
YXBoLnBoLnBhcmFtX2xlbmd0aCA9IHNpemVvZihzdHJ1Y3Qgc2N0cF9hc2NvbmZfYWRkcnY0X3Bh
cmFtKTsKLQkJYWEtPmFwLmFkZHJwLnBoLnBhcmFtX3R5cGUgPSBTQ1RQX0lQVjRfQUREUkVTUzsK
LQkJYWEtPmFwLmFkZHJwLnBoLnBhcmFtX2xlbmd0aCA9IHNpemVvZiAoc3RydWN0IHNjdHBfaXB2
NGFkZHJfcGFyYW0pOwotCQkvKiBObyBuZWVkIHRvIGFkZCBhbiBhZGRyZXNzLCB3ZSBhcmUgdXNp
bmcgMC4wLjAuMCAqLwotCQlUQUlMUV9JTlNFUlRfVEFJTCgmc3RjYi0+YXNvYy5hc2NvbmZfcXVl
dWUsIGFhLCBuZXh0KTsKKwkJYWFfYWRkLT5hcC5hcGgucGgucGFyYW1fdHlwZSA9IFNDVFBfQURE
X0lQX0FERFJFU1M7CisJCWFhX2FkZC0+YXAuYXBoLnBoLnBhcmFtX2xlbmd0aCA9IHNpemVvZihz
dHJ1Y3Qgc2N0cF9hc2NvbmZfYWRkcnY0X3BhcmFtKTsKKwkJYWFfYWRkLT5hcC5hZGRycC5waC5w
YXJhbV90eXBlID0gU0NUUF9JUFY0X0FERFJFU1M7CisJCWFhX2FkZC0+YXAuYWRkcnAucGgucGFy
YW1fbGVuZ3RoID0gc2l6ZW9mIChzdHJ1Y3Qgc2N0cF9pcHY0YWRkcl9wYXJhbSk7CisJCS8qIE5v
IG5lZWQgdG8gZmlsbCB0aGUgYWRkcmVzcywgd2UgYXJlIHVzaW5nIDAuMC4wLjAgKi8KKwkJYWFf
ZGVsLT5hcC5hcGgucGgucGFyYW1fdHlwZSA9IFNDVFBfQUREX0lQX0FERFJFU1M7CisJCWFhX2Rl
bC0+YXAuYXBoLnBoLnBhcmFtX2xlbmd0aCA9IHNpemVvZihzdHJ1Y3Qgc2N0cF9hc2NvbmZfYWRk
cnY0X3BhcmFtKTsKKwkJYWFfZGVsLT5hcC5hZGRycC5waC5wYXJhbV90eXBlID0gU0NUUF9JUFY0
X0FERFJFU1M7CisJCWFhX2RlbC0+YXAuYWRkcnAucGgucGFyYW1fbGVuZ3RoID0gc2l6ZW9mIChz
dHJ1Y3Qgc2N0cF9pcHY0YWRkcl9wYXJhbSk7CisJCS8qIE5vIG5lZWQgdG8gZmlsbCB0aGUgYWRk
cmVzcywgd2UgYXJlIHVzaW5nIDAuMC4wLjAgKi8KIAkJYnJlYWs7CiAjZW5kaWYKICNpZmRlZiBJ
TkVUNgogCWNhc2UgQUZfSU5FVDY6Ci0JCWFhLT5hcC5hcGgucGgucGFyYW1fdHlwZSA9IFNDVFBf
REVMX0lQX0FERFJFU1M7Ci0JCWFhLT5hcC5hcGgucGgucGFyYW1fbGVuZ3RoID0gc2l6ZW9mKHN0
cnVjdCBzY3RwX2FzY29uZl9hZGRyX3BhcmFtKTsKLQkJYWEtPmFwLmFkZHJwLnBoLnBhcmFtX3R5
cGUgPSBTQ1RQX0lQVjZfQUREUkVTUzsKLQkJYWEtPmFwLmFkZHJwLnBoLnBhcmFtX2xlbmd0aCA9
IHNpemVvZiAoc3RydWN0IHNjdHBfaXB2NmFkZHJfcGFyYW0pOwotCQkvKiBObyBuZWVkIHRvIGFk
ZCBhbiBhZGRyZXNzLCB3ZSBhcmUgdXNpbmcgMC4wLjAuMCAqLwotCQlUQUlMUV9JTlNFUlRfVEFJ
TCgmc3RjYi0+YXNvYy5hc2NvbmZfcXVldWUsIGFhLCBuZXh0KTsKKwkJYWFfYWRkLT5hcC5hcGgu
cGgucGFyYW1fdHlwZSA9IFNDVFBfQUREX0lQX0FERFJFU1M7CisJCWFhX2FkZC0+YXAuYXBoLnBo
LnBhcmFtX2xlbmd0aCA9IHNpemVvZihzdHJ1Y3Qgc2N0cF9hc2NvbmZfYWRkcl9wYXJhbSk7CisJ
CWFhX2FkZC0+YXAuYWRkcnAucGgucGFyYW1fdHlwZSA9IFNDVFBfSVBWNl9BRERSRVNTOworCQlh
YV9hZGQtPmFwLmFkZHJwLnBoLnBhcmFtX2xlbmd0aCA9IHNpemVvZiAoc3RydWN0IHNjdHBfaXB2
NmFkZHJfcGFyYW0pOworCQkvKiBObyBuZWVkIHRvIGZpbGwgdGhlIGFkZHJlc3MsIHdlIGFyZSB1
c2luZyA6OjAgKi8KKwkJYWFfZGVsLT5hcC5hcGgucGgucGFyYW1fdHlwZSA9IFNDVFBfREVMX0lQ
X0FERFJFU1M7CisJCWFhX2RlbC0+YXAuYXBoLnBoLnBhcmFtX2xlbmd0aCA9IHNpemVvZihzdHJ1
Y3Qgc2N0cF9hc2NvbmZfYWRkcl9wYXJhbSk7CisJCWFhX2RlbC0+YXAuYWRkcnAucGgucGFyYW1f
dHlwZSA9IFNDVFBfSVBWNl9BRERSRVNTOworCQlhYV9kZWwtPmFwLmFkZHJwLnBoLnBhcmFtX2xl
bmd0aCA9IHNpemVvZiAoc3RydWN0IHNjdHBfaXB2NmFkZHJfcGFyYW0pOworCQkvKiBObyBuZWVk
IHRvIGZpbGwgdGhlIGFkZHJlc3MsIHdlIGFyZSB1c2luZyA6OjAgKi8KIAkJYnJlYWs7CiAjZW5k
aWYKIAlkZWZhdWx0OgogCQlTQ1RQREJHKFNDVFBfREVCVUdfQVNDT05GMSwKLQkJICAgICAgICAi
c2N0cF9hc2NvbmZfc2VuZF9uYXRfc3RhdGVfdXBkYXRlOiB1bmtub3duIGFkZHJlc3MgZmFtaWx5
XG4iKTsKLQkJU0NUUF9GUkVFKGFhLCBTQ1RQX01fQVNDX0FERFIpOwotCQlyZXR1cm47CisJCSAg
ICAgICAgInNjdHBfYXNjb25mX3NlbmRfbmF0X3N0YXRlX3VwZGF0ZTogdW5rbm93biBhZGRyZXNz
IGZhbWlseSAlZFxuIiwKKwkJICAgICAgICBuZXQtPnJvLl9sX2FkZHIuc2Euc2FfZmFtaWx5KTsK
KwkJZ290byBvdXQ7CiAJfQorCVRBSUxRX0lOU0VSVF9UQUlMKCZzdGNiLT5hc29jLmFzY29uZl9x
dWV1ZSwgYWFfdnRhZywgbmV4dCk7CisJVEFJTFFfSU5TRVJUX1RBSUwoJnN0Y2ItPmFzb2MuYXNj
b25mX3F1ZXVlLCBhYV9hZGQsIG5leHQpOworCVRBSUxRX0lOU0VSVF9UQUlMKCZzdGNiLT5hc29j
LmFzY29uZl9xdWV1ZSwgYWFfZGVsLCBuZXh0KTsKKwogCS8qIE5vdyB3ZSBtdXN0IGh1bnQgdGhl
IGFkZHJlc3NlcyBhbmQgYWRkIGFsbCBnbG9iYWwgYWRkcmVzc2VzICovCiAJaWYgKHN0Y2ItPnNj
dHBfZXAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19CT1VOREFMTCkgewogCQlzdHJ1Y3Qg
c2N0cF92cmYgKnZyZiA9IE5VTEw7CkBAIC0zNDI4LDcgKzM0MzIsNyBAQCBzY3RwX2FzY29uZl9z
ZW5kX25hdF9zdGF0ZV91cGRhdGUoc3RydWN0IHNjdHBfdGNiICpzdGNiLAogI2lmZGVmIElORVQK
IAkJCQljYXNlIEFGX0lORVQ6CiAJCQkJCXRvID0gJnNjdHBfaWZhcC0+YWRkcmVzcy5zaW47Ci0j
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCQlpZiAocHJpc29uX2NoZWNrX2lwNChzdGNiLT5zY3Rw
X2VwLT5pcF9pbnAuaW5wLmlucF9jcmVkLAogCQkJCQkgICAgICAgICAgICAgICAgICAgICAmdG8t
PnNpbl9hZGRyKSAhPSAwKSB7CiAJCQkJCQljb250aW51ZTsKQEAgLTM0NDUsNyArMzQ0OSw3IEBA
IHNjdHBfYXNjb25mX3NlbmRfbmF0X3N0YXRlX3VwZGF0ZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2Is
CiAjaWZkZWYgSU5FVDYKIAkJCQljYXNlIEFGX0lORVQ2OgogCQkJCQl0bzYgPSAmc2N0cF9pZmFw
LT5hZGRyZXNzLnNpbjY7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCQlpZiAocHJpc29uX2No
ZWNrX2lwNihzdGNiLT5zY3RwX2VwLT5pcF9pbnAuaW5wLmlucF9jcmVkLAogCQkJCQkgICAgICAg
ICAgICAgICAgICAgICAmdG82LT5zaW42X2FkZHIpICE9IDApIHsKIAkJCQkJCWNvbnRpbnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfYXNjb25mLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNy
c2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9hc2NvbmYuaApvbGQgbW9kZSAxMDA2NDQK
bmV3IG1vZGUgMTAwNzU1CmluZGV4IDI4MTMwZjNiMmY2MC4uZTE3MWEwYjU2MTc2Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3Jz
Y3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2FzY29uZi5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Vz
cnNjdHBsaWIvbmV0aW5ldC9zY3RwX2FzY29uZi5oCkBAIC0zMiw5ICszMiw5IEBACiAgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmZGVmIF9fRnJlZUJTRF9fCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNs
dWRlIDxzeXMvY2RlZnMuaD4KLV9fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9z
Y3RwX2FzY29uZi5oIDMyNDA1NiAyMDE3LTA5LTI3IDEzOjA1OjIzWiB0dWV4ZW4gJCIpOworX19G
QlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfYXNjb25mLmggMzYyMzc3IDIw
MjAtMDYtMTkgMTI6MzU6MjlaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAogI2lmbmRlZiBfTkVUSU5F
VF9TQ1RQX0FTQ09ORl9IXwpAQCAtNDUsNyArNDUsNyBAQCBfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhl
YWQvc3lzL25ldGluZXQvc2N0cF9hc2NvbmYuaCAzMjQwNTYgMjAxNy0wOS0yNyAxMzowNToyM1og
dAogLyoKICAqIGZ1bmN0aW9uIHByb3RvdHlwZXMKICAqLwotZXh0ZXJuIHZvaWQgc2N0cF9hc2Nv
bmZfY2xlYW51cChzdHJ1Y3Qgc2N0cF90Y2IgKiwgc3RydWN0IHNjdHBfbmV0cyAqKTsKK2V4dGVy
biB2b2lkIHNjdHBfYXNjb25mX2NsZWFudXAoc3RydWN0IHNjdHBfdGNiICopOwogCiBleHRlcm4g
c3RydWN0IG1idWYgKnNjdHBfY29tcG9zZV9hc2NvbmYoc3RydWN0IHNjdHBfdGNiICosIGludCAq
LCBpbnQpOwogCkBAIC01OCw4ICs1OCw4IEBAIHNjdHBfaGFuZGxlX2FzY29uZl9hY2soc3RydWN0
IG1idWYgKiwgaW50LCBzdHJ1Y3Qgc2N0cF9hc2NvbmZfYWNrX2NodW5rICosCiAgICAgIHN0cnVj
dCBzY3RwX3RjYiAqLCBzdHJ1Y3Qgc2N0cF9uZXRzICosIGludCAqKTsKIAogZXh0ZXJuIHVpbnQz
Ml90Ci1zY3RwX2FkZHJfbWdtdF9lcF9zYShzdHJ1Y3Qgc2N0cF9pbnBjYiAqLCBzdHJ1Y3Qgc29j
a2FkZHIgKiwKLQkJICAgICB1aW50MzJfdCwgdWludDMyX3QsIHN0cnVjdCBzY3RwX2lmYSAqKTsK
K3NjdHBfYWRkcl9tZ210X2VwX3NhKHN0cnVjdCBzY3RwX2lucGNiICosIHN0cnVjdCBzb2NrYWRk
ciAqLCB1aW50MzJfdCwKKyAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90KTsKIAogCiBleHRl
cm4gaW50IHNjdHBfYXNjb25mX2l0ZXJhdG9yX2VwKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHZv
aWQgKnB0ciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2F1
dGguYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNy
c2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2F1dGguYwpvbGQgbW9kZSAx
MDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGJjNjQ1YjM2ZDkwMS4uM2E4ZmFjMDczMTFjCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0
cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2F1dGguYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9hdXRoLmMKQEAgLTMyLDkgKzMyLDkgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZkZWYgX19GcmVlQlNEX18K
KyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lu
Y2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0
L3NjdHBfYXV0aC5jIDM1NTkzMSAyMDE5LTEyLTIwIDE1OjI1OjA4WiB0dWV4ZW4gJCIpOworX19G
QlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfYXV0aC5jIDM2MjA1NCAyMDIw
LTA2LTExIDEzOjM0OjA5WiB0dWV4ZW4gJCIpOwogI2VuZGlmCiAKICNpbmNsdWRlIDxuZXRpbmV0
L3NjdHBfb3MuaD4KQEAgLTUyNSw3ICs1MjUsNyBAQCBzY3RwX2luc2VydF9zaGFyZWRrZXkoc3Ry
dWN0IHNjdHBfa2V5aGVhZCAqc2hhcmVkX2tleXMsCiAJCX0gZWxzZSBpZiAobmV3X3NrZXktPmtl
eWlkID09IHNrZXktPmtleWlkKSB7CiAJCQkvKiByZXBsYWNlIHRoZSBleGlzdGluZyBrZXkgKi8K
IAkJCS8qIHZlcmlmeSB0aGlzIGtleSAqY2FuKiBiZSByZXBsYWNlZCAqLwotCQkJaWYgKChza2V5
LT5kZWFjdGl2YXRlZCkgJiYgKHNrZXktPnJlZmNvdW50ID4gMSkpIHsKKwkJCWlmICgoc2tleS0+
ZGVhY3RpdmF0ZWQpIHx8IChza2V5LT5yZWZjb3VudCA+IDEpKSB7CiAJCQkJU0NUUERCRyhTQ1RQ
X0RFQlVHX0FVVEgxLAogCQkJCQkiY2FuJ3QgcmVwbGFjZSBzaGFyZWQga2V5IGlkICV1XG4iLAog
CQkJCQluZXdfc2tleS0+a2V5aWQpOwpAQCAtNTY3LDExICs1NjcsNyBAQCBzY3RwX2F1dGhfa2V5
X2FjcXVpcmUoc3RydWN0IHNjdHBfdGNiICpzdGNiLCB1aW50MTZfdCBrZXlfaWQpCiB9CiAKIHZv
aWQKLXNjdHBfYXV0aF9rZXlfcmVsZWFzZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQxNl90
IGtleV9pZCwgaW50IHNvX2xvY2tlZAotI2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmlu
ZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCi0JU0NUUF9VTlVTRUQKLSNlbmRpZgotKQorc2N0cF9h
dXRoX2tleV9yZWxlYXNlKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgdWludDE2X3Qga2V5X2lkLCBp
bnQgc29fbG9ja2VkKQogewogCXNjdHBfc2hhcmVka2V5X3QgKnNrZXk7CiAKQEAgLTY2MCw3ICs2
NTYsNiBAQCBzY3RwX2ZyZWVfaG1hY2xpc3Qoc2N0cF9obWFjbGlzdF90ICpsaXN0KQogewogCWlm
IChsaXN0ICE9IE5VTEwpIHsKIAkJU0NUUF9GUkVFKGxpc3QsU0NUUF9NX0FVVEhfSEwpOwotCQls
aXN0ID0gTlVMTDsKIAl9CiB9CiAKQEAgLTEwODQsNDAgKzEwNzksNiBAQCBzY3RwX2htYWNfbSh1
aW50MTZfdCBobWFjX2FsZ28sIHVpbnQ4X3QgKmtleSwgdWludDMyX3Qga2V5bGVuLAogCXJldHVy
biAoZGlnZXN0bGVuKTsKIH0KIAotLyotCi0gKiB2ZXJpZnkgdGhlIEhNQUMgZGlnZXN0IHVzaW5n
IHRoZSBkZXNpcmVkIGhhc2gga2V5LCB0ZXh0LCBhbmQgSE1BQwotICogYWxnb3JpdGhtLgotICog
UmV0dXJucyAtMSBvbiBlcnJvciwgMCBvbiBzdWNjZXNzLgotICovCi1pbnQKLXNjdHBfdmVyaWZ5
X2htYWModWludDE2X3QgaG1hY19hbGdvLCB1aW50OF90ICprZXksIHVpbnQzMl90IGtleWxlbiwK
LSAgICB1aW50OF90ICp0ZXh0LCB1aW50MzJfdCB0ZXh0bGVuLAotICAgIHVpbnQ4X3QgKmRpZ2Vz
dCwgdWludDMyX3QgZGlnZXN0bGVuKQotewotCXVpbnQzMl90IGxlbjsKLQl1aW50OF90IHRlbXBb
U0NUUF9BVVRIX0RJR0VTVF9MRU5fTUFYXTsKLQotCS8qIHNhbml0eSBjaGVjayB0aGUgbWF0ZXJp
YWwgYW5kIGxlbmd0aCAqLwotCWlmICgoa2V5ID09IE5VTEwpIHx8IChrZXlsZW4gPT0gMCkgfHwK
LQkgICAgKHRleHQgPT0gTlVMTCkgfHwgKHRleHRsZW4gPT0gMCkgfHwgKGRpZ2VzdCA9PSBOVUxM
KSkgewotCQkvKiBjYW4ndCBkbyBITUFDIHdpdGggZW1wdHkga2V5IG9yIHRleHQgb3IgZGlnZXN0
ICovCi0JCXJldHVybiAoLTEpOwotCX0KLQlsZW4gPSBzY3RwX2dldF9obWFjX2RpZ2VzdF9sZW4o
aG1hY19hbGdvKTsKLQlpZiAoKGxlbiA9PSAwKSB8fCAoZGlnZXN0bGVuICE9IGxlbikpCi0JCXJl
dHVybiAoLTEpOwotCi0JLyogY29tcHV0ZSB0aGUgZXhwZWN0ZWQgaGFzaCAqLwotCWlmIChzY3Rw
X2htYWMoaG1hY19hbGdvLCBrZXksIGtleWxlbiwgdGV4dCwgdGV4dGxlbiwgdGVtcCkgIT0gbGVu
KQotCQlyZXR1cm4gKC0xKTsKLQotCWlmIChtZW1jbXAoZGlnZXN0LCB0ZW1wLCBkaWdlc3RsZW4p
ICE9IDApCi0JCXJldHVybiAoLTEpOwotCWVsc2UKLQkJcmV0dXJuICgwKTsKLX0KLQotCiAvKgog
ICogY29tcHV0ZXMgdGhlIHJlcXVlc3RlZCBITUFDIHVzaW5nIGEga2V5IHN0cnVjdCAod2hpY2gg
bWF5IGJlIG1vZGlmaWVkIGlmCiAgKiB0aGUga2V5bGVuIGV4Y2VlZHMgdGhlIEhNQUMgYmxvY2sg
bGVuKS4KQEAgLTE2ODQsNiArMTY0NSwxMSBAQCBzY3RwX2hhbmRsZV9hdXRoKHN0cnVjdCBzY3Rw
X3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfYXV0aF9jaHVuayAqYXV0aCwKIAkJIlNDVFAgQVVUSCBD
aHVuazogc2hhcmVkIGtleSAldSwgSE1BQyBpZCAldVxuIiwKIAkJc2hhcmVkX2tleV9pZCwgaG1h
Y19pZCk7CiAKKyNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaWZkZWYgRlVaWklOR19CVUlM
RF9NT0RFX1VOU0FGRV9GT1JfUFJPRFVDVElPTgorCXJldHVybiAoMCk7CisjZW5kaWYKKyNlbmRp
ZgogCS8qIGlzIHRoZSBpbmRpY2F0ZWQgSE1BQyBzdXBwb3J0ZWQ/ICovCiAJaWYgKCFzY3RwX2F1
dGhfaXNfc3VwcG9ydGVkX2htYWMoc3RjYi0+YXNvYy5sb2NhbF9obWFjcywgaG1hY19pZCkpIHsK
IAkJc3RydWN0IG1idWYgKm9wX2VycjsKQEAgLTE3NjUsNyArMTczMSw3IEBAIHNjdHBfaGFuZGxl
X2F1dGgoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9hdXRoX2NodW5rICphdXRo
LAogCSAgICBtLCBvZmZzZXQsIGNvbXB1dGVkX2RpZ2VzdCk7CiAKIAkvKiBjb21wYXJlIHRoZSBj
b21wdXRlZCBkaWdlc3Qgd2l0aCB0aGUgb25lIGluIHRoZSBBVVRIIGNodW5rICovCi0JaWYgKG1l
bWNtcChkaWdlc3QsIGNvbXB1dGVkX2RpZ2VzdCwgZGlnZXN0bGVuKSAhPSAwKSB7CisJaWYgKHRp
bWluZ3NhZmVfYmNtcChkaWdlc3QsIGNvbXB1dGVkX2RpZ2VzdCwgZGlnZXN0bGVuKSAhPSAwKSB7
CiAJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3JlY3ZhdXRoZmFpbGVkKTsKIAkJU0NUUERCRyhTQ1RQ
X0RFQlVHX0FVVEgxLAogCQkJIlNDVFAgQXV0aDogSE1BQyBkaWdlc3QgY2hlY2sgZmFpbGVkXG4i
KTsKQEAgLTE3NzksMTEgKzE3NDUsNyBAQCBzY3RwX2hhbmRsZV9hdXRoKHN0cnVjdCBzY3RwX3Rj
YiAqc3RjYiwgc3RydWN0IHNjdHBfYXV0aF9jaHVuayAqYXV0aCwKICAqLwogdm9pZAogc2N0cF9u
b3RpZnlfYXV0aGVudGljYXRpb24oc3RydWN0IHNjdHBfdGNiICpzdGNiLCB1aW50MzJfdCBpbmRp
Y2F0aW9uLAotCQkJICAgdWludDE2X3Qga2V5aWQsIHVpbnQxNl90IGFsdF9rZXlpZCwgaW50IHNv
X2xvY2tlZAotI2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoU0NUUF9TT19MT0NL
X1RFU1RJTkcpCi0JU0NUUF9VTlVTRUQKLSNlbmRpZgotKQorCQkJICAgdWludDE2X3Qga2V5aWQs
IHVpbnQxNl90IGFsdF9rZXlpZCwgaW50IHNvX2xvY2tlZCkKIHsKIAlzdHJ1Y3QgbWJ1ZiAqbV9u
b3RpZnk7CiAJc3RydWN0IHNjdHBfYXV0aGtleV9ldmVudCAqYXV0aDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3Jz
Y3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2F1dGguaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBs
aWIvbmV0aW5ldC9zY3RwX2F1dGguaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1Cmlu
ZGV4IGMxZjgyZDg4MjVhNC4uM2RjNWE1OWUyOGNjCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIv
bmV0aW5ldC9zY3RwX2F1dGguaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0
cF9hdXRoLmgKQEAgLTMyLDkgKzMyLDkgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWZkZWYgX19GcmVlQlNEX18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19G
QlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfYXV0aC5oIDMxMDU5MCAyMDE2
LTEyLTI2IDExOjA2OjQxWiB0dWV4ZW4gJCIpOworX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5
cy9uZXRpbmV0L3NjdHBfYXV0aC5oIDMzODc0OSAyMDE4LTA5LTE4IDEwOjUzOjA3WiB0dWV4ZW4g
JCIpOwogI2VuZGlmCiAKICNpZm5kZWYgX05FVElORVRfU0NUUF9BVVRIX0hfCkBAIC0xNzAsOCAr
MTcwLDYgQEAgZXh0ZXJuIHVpbnQzMl90IHNjdHBfZ2V0X2F1dGhfY2h1bmtfbGVuKHVpbnQxNl90
IGhtYWNfYWxnbyk7CiBleHRlcm4gdWludDMyX3Qgc2N0cF9nZXRfaG1hY19kaWdlc3RfbGVuKHVp
bnQxNl90IGhtYWNfYWxnbyk7CiBleHRlcm4gdWludDMyX3Qgc2N0cF9obWFjKHVpbnQxNl90IGht
YWNfYWxnbywgdWludDhfdCAqa2V5LCB1aW50MzJfdCBrZXlsZW4sCiAgICAgdWludDhfdCAqdGV4
dCwgdWludDMyX3QgdGV4dGxlbiwgdWludDhfdCAqZGlnZXN0KTsKLWV4dGVybiBpbnQgc2N0cF92
ZXJpZnlfaG1hYyh1aW50MTZfdCBobWFjX2FsZ28sIHVpbnQ4X3QgKmtleSwgdWludDMyX3Qga2V5
bGVuLAotICAgIHVpbnQ4X3QgKnRleHQsIHVpbnQzMl90IHRleHRsZW4sIHVpbnQ4X3QgKmRpZ2Vz
dCwgdWludDMyX3QgZGlnZXN0bGVuKTsKIGV4dGVybiB1aW50MzJfdCBzY3RwX2NvbXB1dGVfaG1h
Yyh1aW50MTZfdCBobWFjX2FsZ28sIHNjdHBfa2V5X3QgKmtleSwKICAgICB1aW50OF90ICp0ZXh0
LCB1aW50MzJfdCB0ZXh0bGVuLCB1aW50OF90ICpkaWdlc3QpOwogZXh0ZXJuIGludCBzY3RwX2F1
dGhfaXNfc3VwcG9ydGVkX2htYWMoc2N0cF9obWFjbGlzdF90ICpsaXN0LCB1aW50MTZfdCBpZCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9ic2RfYWRkci5j
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfYnNkX2FkZHIuYwpvbGQgbW9kZSAx
MDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGUzYjZlMWI2ZGU3ZS4uNDBlMzA4ZjhmMmViCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0
cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2JzZF9hZGRyLmMKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNj
dHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfYnNkX2FkZHIuYwpAQCAtMzIsOSArMzIsOSBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZmRlZiBfX0Zy
ZWVCU0RfXworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lz
L25ldGluZXQvc2N0cF9ic2RfYWRkci5jIDMzMzgxMyAyMDE4LTA1LTE4IDIwOjEzOjM0WiBtbWFj
eSAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9ic2RfYWRk
ci5jIDM1ODA4MCAyMDIwLTAyLTE4IDE5OjQxOjU1WiB0dWV4ZW4gJCIpOwogI2VuZGlmCiAKICNp
bmNsdWRlIDxuZXRpbmV0L3NjdHBfb3MuaD4KQEAgLTUwLDEyICs1MCwxMSBAQCBfX0ZCU0RJRCgi
JEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9ic2RfYWRkci5jIDMzMzgxMyAyMDE4LTA1
LTE4IDIwOjEzOjM0WgogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9hc2NvbmYuaD4KICNpbmNsdWRl
IDxuZXRpbmV0L3NjdHBfc3lzY3RsLmg+CiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX2luZGF0YS5o
PgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxzeXMvdW5pc3RkLmg+CiAjZW5kaWYK
IAogLyogRGVjbGFyZSBhbGwgb2Ygb3VyIG1hbGxvYyBuYW1lZCB0eXBlcyAqLwotI2lmbmRlZiBf
X1BhbmRhX18KIE1BTExPQ19ERUZJTkUoU0NUUF9NX01BUCwgInNjdHBfbWFwIiwgInNjdHAgYXNv
YyBtYXAgZGVzY3JpcHRvciIpOwogTUFMTE9DX0RFRklORShTQ1RQX01fU1RSTUksICJzY3RwX3N0
cmkiLCAic2N0cCBzdHJlYW0gaW4gYXJyYXkiKTsKIE1BTExPQ19ERUZJTkUoU0NUUF9NX1NUUk1P
LCAic2N0cF9zdHJvIiwgInNjdHAgc3RyZWFtIG91dCBhcnJheSIpOwpAQCAtNzYsMTIgKzc1LDEx
IEBAIE1BTExPQ19ERUZJTkUoU0NUUF9NX01WUkYsICJzY3RwX212cmYiLCAic2N0cCBtdnJmIHBj
YiBsaXN0Iik7CiBNQUxMT0NfREVGSU5FKFNDVFBfTV9JVEVSLCAic2N0cF9pdGVyIiwgInNjdHAg
aXRlcmF0b3IgY29udHJvbCIpOwogTUFMTE9DX0RFRklORShTQ1RQX01fU09DS09QVCwgInNjdHBf
c29ja28iLCAic2N0cCBzb2NrZXQgb3B0aW9uIik7CiBNQUxMT0NfREVGSU5FKFNDVFBfTV9NQ09S
RSwgInNjdHBfbWNvcmUiLCAic2N0cCBtY29yZSBxdWV1ZSIpOwotI2VuZGlmCiAKIC8qIEdsb2Jh
bCBOT04tVk5FVCBzdHJ1Y3R1cmUgdGhhdCBjb250cm9scyB0aGUgaXRlcmF0b3IgKi8KIHN0cnVj
dCBpdGVyYXRvcl9jb250cm9sIHNjdHBfaXRfY3RsOwogCi0jaWYgIWRlZmluZWQoX19GcmVlQlNE
X18pCisjaWYgIShkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KSkKIHN0YXRpYyB2b2lkCiBzY3RwX2NsZWFudXBfaXRxdWV1ZSh2b2lkKQogewpAQCAtMTA5LDcg
KzEwNyw3IEBAIHZvaWQKIHNjdHBfd2FrZXVwX2l0ZXJhdG9yKHZvaWQpCiB7CiAjaWYgZGVmaW5l
ZChTQ1RQX1BST0NFU1NfTEVWRUxfTE9DS1MpCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19X
aW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogCVdha2VBbGxDb25kaXRpb25WYXJpYWJsZSgm
c2N0cF9pdF9jdGwuaXRlcmF0b3Jfd2FrZXVwKTsKICNlbHNlCiAJcHRocmVhZF9jb25kX2Jyb2Fk
Y2FzdCgmc2N0cF9pdF9jdGwuaXRlcmF0b3Jfd2FrZXVwKTsKQEAgLTEzMSw3ICsxMjksNyBAQCBz
Y3RwX2l0ZXJhdG9yX3RocmVhZCh2b2lkICp2IFNDVFBfVU5VU0VEKQogI2VuZGlmCiAJU0NUUF9J
UElfSVRFUkFUT1JfV1FfTE9DSygpOwogCS8qIEluIEZyZWVCU0QgdGhpcyB0aHJlYWQgbmV2ZXIg
dGVybWluYXRlcy4gKi8KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJZm9yICg7OykgewogI2Vsc2UK
IAl3aGlsZSAoKHNjdHBfaXRfY3RsLml0ZXJhdG9yX2ZsYWdzICYgU0NUUF9JVEVSQVRPUl9NVVNU
X0VYSVQpID09IDApIHsKQEAgLTE0MCwyNSArMTM4LDI1IEBAIHNjdHBfaXRlcmF0b3JfdGhyZWFk
KHZvaWQgKnYgU0NUUF9VTlVTRUQpCiAJCW1zbGVlcCgmc2N0cF9pdF9jdGwuaXRlcmF0b3JfcnVu
bmluZywKICNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQogCQkgICAgICAgJnNjdHBfaXRfY3RsLmlw
aV9pdGVyYXRvcl93cV9tdHgsCi0jZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChf
X1VzZXJzcGFjZV9vc19EYXJ3aW4pCisjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKIAkJICAgICAg
IHNjdHBfaXRfY3RsLmlwaV9pdGVyYXRvcl93cV9tdHgsCiAjZW5kaWYKIAkJICAgICAgIDAsICJ3
YWl0aW5nX2Zvcl93b3JrIiwgMCk7CiAjZWxzZQotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3Nf
V2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIAkJU2xlZXBDb25kaXRpb25WYXJpYWJsZUNT
KCZzY3RwX2l0X2N0bC5pdGVyYXRvcl93YWtldXAsICZzY3RwX2l0X2N0bC5pcGlfaXRlcmF0b3Jf
d3FfbXR4LCBJTkZJTklURSk7CiAjZWxzZQogCQlwdGhyZWFkX2NvbmRfd2FpdCgmc2N0cF9pdF9j
dGwuaXRlcmF0b3Jfd2FrZXVwLCAmc2N0cF9pdF9jdGwuaXBpX2l0ZXJhdG9yX3dxX210eCk7CiAj
ZW5kaWYKICNlbmRpZgotI2lmICFkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmICEoZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAJCWlmIChzY3RwX2l0X2N0
bC5pdGVyYXRvcl9mbGFncyAmIFNDVFBfSVRFUkFUT1JfTVVTVF9FWElUKSB7CiAJCQlicmVhazsK
IAkJfQogI2VuZGlmCiAJCXNjdHBfaXRlcmF0b3Jfd29ya2VyKCk7CiAJfQotI2lmICFkZWZpbmVk
KF9fRnJlZUJTRF9fKQorI2lmICEoZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykpCiAJLyogTm93IHRoaXMgdGhyZWFkIG5lZWRzIHRvIGJlIHRlcm1pbmF0ZWQg
Ki8KIAlzY3RwX2NsZWFudXBfaXRxdWV1ZSgpOwogCXNjdHBfaXRfY3RsLml0ZXJhdG9yX2ZsYWdz
IHw9IFNDVFBfSVRFUkFUT1JfRVhJVEVEOwpAQCAtMTg3LDEyICsxODUsMTQgQEAgc2N0cF9zdGFy
dHVwX2l0ZXJhdG9yKHZvaWQpCiAJU0NUUF9JVEVSQVRPUl9MT0NLX0lOSVQoKTsKIAlTQ1RQX0lQ
SV9JVEVSQVRPUl9XUV9JTklUKCk7CiAJVEFJTFFfSU5JVCgmc2N0cF9pdF9jdGwuaXRlcmF0b3Jo
ZWFkKTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQotI2lmIF9fRnJlZUJTRF92ZXJzaW9uIDw9
IDcwMTAwMAotCWt0aHJlYWRfY3JlYXRlKHNjdHBfaXRlcmF0b3JfdGhyZWFkLAotI2Vsc2UKKyNp
ZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJaWYgKHNjdHBfdXNlcnNwYWNlX3RocmVhZF9jcmVh
dGUoJnNjdHBfaXRfY3RsLnRocmVhZF9wcm9jLCAmc2N0cF9pdGVyYXRvcl90aHJlYWQpKSB7CisJ
CVNDVFBfUFJJTlRGKCJFUlJPUjogQ3JlYXRpbmcgc2N0cF9pdGVyYXRvcl90aHJlYWQgZmFpbGVk
LlxuIik7CisJfSBlbHNlIHsKKwkJU0NUUF9CQVNFX1ZBUihpdGVyYXRvcl90aHJlYWRfc3RhcnRl
ZCkgPSAxOworCX0KKyNlbGlmIGRlZmluZWQoX19GcmVlQlNEX18pCiAJa3Byb2NfY3JlYXRlKHNj
dHBfaXRlcmF0b3JfdGhyZWFkLAotI2VuZGlmCiAJICAgICAgICAgICAgICh2b2lkICopTlVMTCwK
IAkgICAgICAgICAgICAgJnNjdHBfaXRfY3RsLnRocmVhZF9wcm9jLAogCSAgICAgICAgICAgICBS
RlBST0MsCkBAIC0yMDAsMTAgKzIwMCw2IEBAIHNjdHBfc3RhcnR1cF9pdGVyYXRvcih2b2lkKQog
CSAgICAgICAgICAgICBTQ1RQX0tUUkhFQURfTkFNRSk7CiAjZWxpZiBkZWZpbmVkKF9fQVBQTEVf
XykKIAlrZXJuZWxfdGhyZWFkX3N0YXJ0KCh0aHJlYWRfY29udGludWVfdClzY3RwX2l0ZXJhdG9y
X3RocmVhZCwgTlVMTCwgJnNjdHBfaXRfY3RsLnRocmVhZF9wcm9jKTsKLSNlbGlmIGRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKLQlpZiAoc2N0cF91c2Vyc3BhY2VfdGhyZWFkX2NyZWF0ZSgmc2N0cF9p
dF9jdGwudGhyZWFkX3Byb2MsICZzY3RwX2l0ZXJhdG9yX3RocmVhZCkpIHsKLQkJU0NUUF9QUklO
VEYoIkVSUk9SOiBDcmVhdGluZyBzY3RwX2l0ZXJhdG9yX3RocmVhZCBmYWlsZWQuXG4iKTsKLQl9
CiAjZW5kaWYKIH0KIApAQCAtMjU2LDcgKzI1Miw3IEBAIHNjdHBfaXNfZGVzaXJlZF9pbnRlcmZh
Y2VfdHlwZShzdHJ1Y3QgaWZuZXQgKmlmbikKIAlpbnQgcmVzdWx0OwogCiAJLyogY2hlY2sgdGhl
IGludGVyZmFjZSB0eXBlIHRvIHNlZSBpZiBpdCdzIG9uZSB3ZSBjYXJlIGFib3V0ICovCi0jaWYg
ZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAJc3dpdGNoKGlmbmV0X3R5cGUoaWZuKSkgewogI2Vsc2UKIAlzd2l0Y2gg
KGlmbi0+aWZfdHlwZSkgewpAQCAtMjgyLDcgKzI3OCw3IEBAIHNjdHBfaXNfZGVzaXJlZF9pbnRl
cmZhY2VfdHlwZShzdHJ1Y3QgaWZuZXQgKmlmbikKIAljYXNlIElGVF9HSUY6CiAJY2FzZSBJRlRf
TDJWTEFOOgogCWNhc2UgSUZUX1NURjoKLSNpZiAhZGVmaW5lZChfX0FQUExFX18pCisjaWYgIShk
ZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAJY2FzZSBJRlRf
SVA6CiAJY2FzZSBJRlRfSVBPVkVSQ0RMQzoKIAljYXNlIElGVF9JUE9WRVJDTEFXOgpAQCAtMjk5
LDcgKzI5NSw3IEBAIHNjdHBfaXNfZGVzaXJlZF9pbnRlcmZhY2VfdHlwZShzdHJ1Y3QgaWZuZXQg
KmlmbikKIH0KICNlbmRpZgogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChf
X0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBpbnQKIHNjdHBfaXNfdm13YXJl
X2ludGVyZmFjZShzdHJ1Y3QgaWZuZXQgKmlmbikKIHsKQEAgLTMwNyw3ICszMDMsNyBAQCBzY3Rw
X2lzX3Ztd2FyZV9pbnRlcmZhY2Uoc3RydWN0IGlmbmV0ICppZm4pCiB9CiAjZW5kaWYKIAotI2lm
IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikgJiYg
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmZGVmIE1BTExPQwogI3VuZGVmIE1BTExPQwogI2Rl
ZmluZSBNQUxMT0MoeCkgSGVhcEFsbG9jKEdldFByb2Nlc3NIZWFwKCksIDAsICh4KSkKQEAgLTQ4
MSw3ICs0NzcsNyBAQCBzY3RwX2luaXRfaWZuc19mb3JfdnJmKGludCB2cmZpZCkKIH0KICNlbmRp
ZgogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBzdGF0aWMgdm9pZAogc2N0cF9pbml0X2lmbnNfZm9yX3Zy
ZihpbnQgdnJmaWQpCiB7CkBAIC01NDAsNyArNTM2LDcgQEAgc2N0cF9pbml0X2lmbnNfZm9yX3Zy
ZihpbnQgdnJmaWQpCiAJCQl9IGVsc2UgewogCQkJCWlmYV9mbGFncyA9IDA7CiAJCQl9Ci0JCQlz
bnByaW50ZihuYW1lLCBTQ1RQX0lGTkFNU0laLCAiJXMlZCIsIGlmbmV0X25hbWUoaWZuKSwgaWZu
ZXRfdW5pdChpZm4pKTsKKwkJCVNDVFBfU05QUklOVEYobmFtZSwgU0NUUF9JRk5BTVNJWiwgIiVz
JWQiLCBpZm5ldF9uYW1lKGlmbiksIGlmbmV0X3VuaXQoaWZuKSk7CiAJCQlzY3RwX2lmYSA9IHNj
dHBfYWRkX2FkZHJfdG9fdnJmKHZyZmlkLAogCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAodm9pZCAqKWlmbiwgLyogWFhYICovCiAJCQkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmbmV0X2luZGV4KGlmbiksCkBAIC01NjAsNyArNTU2LDcgQEAgc2N0cF9pbml0X2lm
bnNfZm9yX3ZyZihpbnQgdnJmaWQpCiB9CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
IHN0YXRpYyB2b2lkCiBzY3RwX2luaXRfaWZuc19mb3JfdnJmKGludCB2cmZpZCkKIHsKQEAgLTU2
OSw2ICs1NjUsNyBAQCBzY3RwX2luaXRfaWZuc19mb3JfdnJmKGludCB2cmZpZCkKIAkgKiBhbnkg
SUZBIHRoYXQgZXhpc3RzIGFzIHdlIGZsb2F0IHRocm91Z2ggdGhlCiAJICogbGlzdCBvZiBJRkEn
cwogCSAqLworCXN0cnVjdCBlcG9jaF90cmFja2VyIGV0OwogCXN0cnVjdCBpZm5ldCAqaWZuOwog
CXN0cnVjdCBpZmFkZHIgKmlmYTsKIAlzdHJ1Y3Qgc2N0cF9pZmEgKnNjdHBfaWZhOwpAQCAtNTc4
LDEyICs1NzUsMTIgQEAgc2N0cF9pbml0X2lmbnNfZm9yX3ZyZihpbnQgdnJmaWQpCiAjZW5kaWYK
IAogCUlGTkVUX1JMT0NLKCk7Ci0JVEFJTFFfRk9SRUFDSChpZm4sICZNT0RVTEVfR0xPQkFMKGlm
bmV0KSwgaWZfbGluaykgeworCU5FVF9FUE9DSF9FTlRFUihldCk7CisJQ0tfU1RBSUxRX0ZPUkVB
Q0goaWZuLCAmTU9EVUxFX0dMT0JBTChpZm5ldCksIGlmX2xpbmspIHsKIAkJaWYgKHNjdHBfaXNf
ZGVzaXJlZF9pbnRlcmZhY2VfdHlwZShpZm4pID09IDApIHsKIAkJCS8qIG5vbiBkZXNpcmVkIHR5
cGUgKi8KIAkJCWNvbnRpbnVlOwogCQl9Ci0JCUlGX0FERFJfUkxPQ0soaWZuKTsKIAkJQ0tfU1RB
SUxRX0ZPUkVBQ0goaWZhLCAmaWZuLT5pZl9hZGRyaGVhZCwgaWZhX2xpbmspIHsKIAkJCWlmIChp
ZmEtPmlmYV9hZGRyID09IE5VTEwpIHsKIAkJCQljb250aW51ZTsKQEAgLTYzNiw4ICs2MzMsOCBA
QCBzY3RwX2luaXRfaWZuc19mb3JfdnJmKGludCB2cmZpZCkKIAkJCQlzY3RwX2lmYS0+bG9jYWxp
ZmFfZmxhZ3MgJj0gflNDVFBfQUREUl9ERUZFUl9VU0U7CiAJCQl9CiAJCX0KLQkJSUZfQUREUl9S
VU5MT0NLKGlmbik7CiAJfQorCU5FVF9FUE9DSF9FWElUKGV0KTsKIAlJRk5FVF9SVU5MT0NLKCk7
CiB9CiAjZW5kaWYKQEAgLTcxNSw3ICs3MTIsNyBAQCBzY3RwX2FkZHJfY2hhbmdlKHN0cnVjdCBp
ZmFkZHIgKmlmYSwgaW50IGNtZCkKIAl9CiAJaWYgKGNtZCA9PSBSVE1fQUREKSB7CiAJCSh2b2lk
KXNjdHBfYWRkX2FkZHJfdG9fdnJmKFNDVFBfREVGQVVMVF9WUkZJRCwgKHZvaWQgKilpZmEtPmlm
YV9pZnAsCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
bmV0X2luZGV4KGlmYS0+aWZhX2lmcCksIGlmbmV0X3R5cGUoaWZhLT5pZmFfaWZwKSwgaWZuZXRf
bmFtZShpZmEtPmlmYV9pZnApLAogI2Vsc2UKIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWZhLT5pZmFfaWZwLT5pZl9pbmRleCwgaWZhLT5pZmFfaWZwLT5pZl90eXBlLCBpZmEtPmlmYV9p
ZnAtPmlmX3huYW1lLApAQCAtNzI0LDcgKzcyMSw3IEBAIHNjdHBfYWRkcl9jaGFuZ2Uoc3RydWN0
IGlmYWRkciAqaWZhLCBpbnQgY21kKQogCX0gZWxzZSB7CiAKIAkJc2N0cF9kZWxfYWRkcl9mcm9t
X3ZyZihTQ1RQX0RFRkFVTFRfVlJGSUQsIGlmYS0+aWZhX2FkZHIsCi0jaWYgZGVmaW5lZChfX0FQ
UExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAJCSAgICAgICAgICAgICAgICAgICAgICAgaWZuZXRfaW5kZXgoaWZhLT5pZmFfaWZwKSwKIAkJ
ICAgICAgICAgICAgICAgICAgICAgICBpZm5ldF9uYW1lKGlmYS0+aWZhX2lmcCkpOwogI2Vsc2UK
QEAgLTczOSwyNiArNzM2LDEzIEBAIHNjdHBfYWRkcl9jaGFuZ2Uoc3RydWN0IGlmYWRkciAqaWZh
LCBpbnQgY21kKQogI2VuZGlmCiB9CiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiB2b2lkCi1zY3Rw
X2FkZF9vcl9kZWxfaW50ZXJmYWNlcyhpbnQgKCpwcmVkKShzdHJ1Y3QgaWZuZXQgKiksIGludCBh
ZGQpCi17Ci0Jc3RydWN0IGlmbmV0ICppZm47Ci0Jc3RydWN0IGlmYWRkciAqaWZhOwotCi0JSUZO
RVRfUkxPQ0soKTsKLQlUQUlMUV9GT1JFQUNIKGlmbiwgJk1PRFVMRV9HTE9CQUwoaWZuZXQpLCBp
Zl9saW5rKSB7Ci0JCWlmICghKCpwcmVkKShpZm4pKSB7Ci0JCQljb250aW51ZTsKLQkJfQotCQlD
S19TVEFJTFFfRk9SRUFDSChpZmEsICZpZm4tPmlmX2FkZHJoZWFkLCBpZmFfbGluaykgewotCQkJ
c2N0cF9hZGRyX2NoYW5nZShpZmEsIGFkZCA/IFJUTV9BREQgOiBSVE1fREVMRVRFKTsKLQkJfQot
CX0KLQlJRk5FVF9SVU5MT0NLKCk7CitzY3RwX2FkZHJfY2hhbmdlX2V2ZW50X2hhbmRsZXIodm9p
ZCAqYXJnIF9fdW51c2VkLCBzdHJ1Y3QgaWZhZGRyICppZmEsIGludCBjbWQpIHsKKwlzY3RwX2Fk
ZHJfY2hhbmdlKGlmYSwgY21kKTsKIH0KICNlbmRpZgotI2lmIGRlZmluZWQoX19BUFBMRV9fKQor
I2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogdm9pZAog
c2N0cF9hZGRfb3JfZGVsX2ludGVyZmFjZXMoaW50ICgqcHJlZCkoc3RydWN0IGlmbmV0ICopLCBp
bnQgYWRkKQogewpAQCAtNzkxLDcgKzc3NSw3IEBAIHNjdHBfZ2V0X21idWZfZm9yX21zZyh1bnNp
Z25lZCBpbnQgc3BhY2VfbmVlZGVkLCBpbnQgd2FudF9oZWFkZXIsCiAJCSAgICAgIGludCBob3cs
IGludCBhbGxvbmVidWYsIGludCB0eXBlKQogewogCXN0cnVjdCBtYnVmICptID0gTlVMTDsKLSNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDExMDAwNTIgfHwg
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKICNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJbSA9ICBtX2dl
dG0yKE5VTEwsIHNwYWNlX25lZWRlZCwgaG93LCB0eXBlLCB3YW50X2hlYWRlciA/IE1fUEtUSERS
IDogMCwgYWxsb25lYnVmKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGli
L25ldGluZXQvc2N0cF9ic2RfYWRkci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3Nj
dHBfYnNkX2FkZHIuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGE4M2Mw
ZWM0Yzc2OS4uMDVkMWIzZmVlZmEyCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9z
Y3RwX2JzZF9hZGRyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfYnNk
X2FkZHIuaApAQCAtMzIsOSArMzIsOSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLSNpZmRlZiBfX0ZyZWVCU0RfXworI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci1fX0ZC
U0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9ic2RfYWRkci5oIDMxMDU5MCAy
MDE2LTEyLTI2IDExOjA2OjQxWiB0dWV4ZW4gJCIpOworX19GQlNESUQoIiRGcmVlQlNEOiBoZWFk
L3N5cy9uZXRpbmV0L3NjdHBfYnNkX2FkZHIuaCAzNTM0ODAgMjAxOS0xMC0xMyAxODoxNzowOFog
dHVleGVuICQiKTsKICNlbmRpZgogCiAjaWZuZGVmIF9ORVRJTkVUX1NDVFBfQlNEX0FERFJfSF8K
QEAgLTYxLDggKzYxLDEwIEBAIGludCBzY3RwX2NvcHlfb3V0X3BhY2tldF9sb2codWludDhfdCAq
dGFyZ2V0LCBpbnQgbGVuZ3RoKTsKIAogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChfX1BhbmRhX18p
CiB2b2lkIHNjdHBfYWRkcl9jaGFuZ2Uoc3RydWN0IGlmYWRkciAqaWZhLCBpbnQgY21kKTsKKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCit2b2lk
IHNjdHBfYWRkcl9jaGFuZ2VfZXZlbnRfaGFuZGxlcih2b2lkICosIHN0cnVjdCBpZmFkZHIgKiwg
aW50KTsKICNlbmRpZgogCiB2b2lkIHNjdHBfYWRkX29yX2RlbF9pbnRlcmZhY2VzKGludCAoKnBy
ZWQpKHN0cnVjdCBpZm5ldCAqKSwgaW50IGFkZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3Jz
Y3RwbGliL25ldGluZXQvc2N0cF9jYWxsb3V0LmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGlu
ZXQvc2N0cF9jYWxsb3V0LmMKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA4
ZmM1N2M3YWZmMGIuLjRjOWJlNzU2OGJmYgotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGlu
ZXQvc2N0cF9jYWxsb3V0LmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBf
Y2FsbG91dC5jCkBAIC0zNCwxMiArMzQsMTIgQEAKIAogI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZiAhZGVmaW5lZCAoX19Vc2Vyc3BhY2Vfb3Nf
V2luZG93cykKKyNpZiAhZGVmaW5lZChfV0lOMzIpCiAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KICNp
bmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDxwdGhyZWFkLmg+CiAjZW5kaWYKLSNpZiBkZWZp
bmVkKF9fVXNlcnNwYWNlX29zX05hQ2wpCisjaWYgZGVmaW5lZChfX25hdGl2ZV9jbGllbnRfXykK
ICNpbmNsdWRlIDxzeXMvc2VsZWN0Lmg+CiAjZW5kaWYKICNpbmNsdWRlIDxzdGRsaWIuaD4KQEAg
LTU0LDE4ICs1NCwxOSBAQAogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9jYWxsb3V0Lmg+CiAjaW5j
bHVkZSA8bmV0aW5ldC9zY3RwX3BjYi5oPgogI2VuZGlmCisjaW5jbHVkZSA8bmV0aW5ldC9zY3Rw
dXRpbC5oPgogCiAvKgogICogQ2FsbG91dC9UaW1lciByb3V0aW5lcyBmb3IgT1MgdGhhdCBkb2Vz
bid0IGhhdmUgdGhlbQogICovCiAjaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19V
c2Vyc3BhY2VfXykKLXN0YXRpYyBpbnQgdGlja3MgPSAwOworc3RhdGljIHVpbnQzMl90IHRpY2tz
ID0gMDsKICNlbHNlCiBleHRlcm4gaW50IHRpY2tzOwogI2VuZGlmCiAKLWludCBzY3RwX2dldF90
aWNrX2NvdW50KHZvaWQpIHsKLQlpbnQgcmV0OwordWludDMyX3Qgc2N0cF9nZXRfdGlja19jb3Vu
dCh2b2lkKSB7CisJdWludDMyX3QgcmV0OwogCiAJU0NUUF9USU1FUlFfTE9DSygpOwogCXJldCA9
IHRpY2tzOwpAQCAtODYsMTcgKzg3LDIwIEBAIHNjdHBfb3NfdGltZXJfaW5pdChzY3RwX29zX3Rp
bWVyX3QgKmMpCiAJbWVtc2V0KGMsIDAsIHNpemVvZigqYykpOwogfQogCi12b2lkCi1zY3RwX29z
X3RpbWVyX3N0YXJ0KHNjdHBfb3NfdGltZXJfdCAqYywgaW50IHRvX3RpY2tzLCB2b2lkICgqZnRu
KSAodm9pZCAqKSwKK2ludAorc2N0cF9vc190aW1lcl9zdGFydChzY3RwX29zX3RpbWVyX3QgKmMs
IHVpbnQzMl90IHRvX3RpY2tzLCB2b2lkICgqZnRuKSAodm9pZCAqKSwKICAgICAgICAgICAgICAg
ICAgICAgdm9pZCAqYXJnKQogeworCWludCByZXQgPSAwOworCiAJLyogcGFyYW5vaWEgKi8KIAlp
ZiAoKGMgPT0gTlVMTCkgfHwgKGZ0biA9PSBOVUxMKSkKLQkgICAgcmV0dXJuOworCQlyZXR1cm4g
KHJldCk7CiAKIAlTQ1RQX1RJTUVSUV9MT0NLKCk7CiAJLyogY2hlY2sgdG8gc2VlIGlmIHdlJ3Jl
IHJlc2NoZWR1bGluZyBhIHRpbWVyICovCiAJaWYgKGMtPmNfZmxhZ3MgJiBTQ1RQX0NBTExPVVRf
UEVORElORykgeworCQlyZXQgPSAxOwogCQlpZiAoYyA9PSBzY3RwX29zX3RpbWVyX25leHQpIHsK
IAkJCXNjdHBfb3NfdGltZXJfbmV4dCA9IFRBSUxRX05FWFQoYywgdHFlKTsKIAkJfQpAQCAtMTEz
LDcgKzExNyw3IEBAIHNjdHBfb3NfdGltZXJfc3RhcnQoc2N0cF9vc190aW1lcl90ICpjLCBpbnQg
dG9fdGlja3MsIHZvaWQgKCpmdG4pICh2b2lkICopLAogCSAqIFdlIGNvdWxkIHVubG9jay9zcGx4
IGhlcmUgYW5kIGxvY2svc3BsIGF0IHRoZSBUQUlMUV9JTlNFUlRfVEFJTCwKIAkgKiBidXQgdGhl
cmUncyBubyBwb2ludCBzaW5jZSBkb2luZyB0aGlzIHNldHVwIGRvZXNuJ3QgdGFrZSBtdWNoIHRp
bWUuCiAJICovCi0JaWYgKHRvX3RpY2tzIDw9IDApCisJaWYgKHRvX3RpY2tzID09IDApCiAJCXRv
X3RpY2tzID0gMTsKIAogCWMtPmNfYXJnID0gYXJnOwpAQCAtMTIyLDYgKzEyNiw3IEBAIHNjdHBf
b3NfdGltZXJfc3RhcnQoc2N0cF9vc190aW1lcl90ICpjLCBpbnQgdG9fdGlja3MsIHZvaWQgKCpm
dG4pICh2b2lkICopLAogCWMtPmNfdGltZSA9IHRpY2tzICsgdG9fdGlja3M7CiAJVEFJTFFfSU5T
RVJUX1RBSUwoJlNDVFBfQkFTRV9JTkZPKGNhbGxxdWV1ZSksIGMsIHRxZSk7CiAJU0NUUF9USU1F
UlFfVU5MT0NLKCk7CisJcmV0dXJuIChyZXQpOwogfQogCiBpbnQKQEAgLTE0NSw4ICsxNTAsOCBA
QCBzY3RwX29zX3RpbWVyX3N0b3Aoc2N0cF9vc190aW1lcl90ICpjKQogCXJldHVybiAoMSk7CiB9
CiAKLXN0YXRpYyB2b2lkCi1zY3RwX2hhbmRsZV90aWNrKGludCBkZWx0YSkKK3ZvaWQKK3NjdHBf
aGFuZGxlX3RpY2sodWludDMyX3QgZWxhcHNlZF90aWNrcykKIHsKIAlzY3RwX29zX3RpbWVyX3Qg
KmM7CiAJdm9pZCAoKmNfZnVuYykodm9pZCAqKTsKQEAgLTE1NCwxMCArMTU5LDEwIEBAIHNjdHBf
aGFuZGxlX3RpY2soaW50IGRlbHRhKQogCiAJU0NUUF9USU1FUlFfTE9DSygpOwogCS8qIHVwZGF0
ZSBvdXIgdGljayBjb3VudCAqLwotCXRpY2tzICs9IGRlbHRhOworCXRpY2tzICs9IGVsYXBzZWRf
dGlja3M7CiAJYyA9IFRBSUxRX0ZJUlNUKCZTQ1RQX0JBU0VfSU5GTyhjYWxscXVldWUpKTsKIAl3
aGlsZSAoYykgewotCQlpZiAoYy0+Y190aW1lIDw9IHRpY2tzKSB7CisJCWlmIChTQ1RQX1VJTlQz
Ml9HRSh0aWNrcywgYy0+Y190aW1lKSkgewogCQkJc2N0cF9vc190aW1lcl9uZXh0ID0gVEFJTFFf
TkVYVChjLCB0cWUpOwogCQkJVEFJTFFfUkVNT1ZFKCZTQ1RQX0JBU0VfSU5GTyhjYWxscXVldWUp
LCBjLCB0cWUpOwogCQkJY19mdW5jID0gYy0+Y19mdW5jOwpAQCAtMTc1LDcgKzE4MCw3IEBAIHNj
dHBfaGFuZGxlX3RpY2soaW50IGRlbHRhKQogCVNDVFBfVElNRVJRX1VOTE9DSygpOwogfQogCi0j
aWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiB2b2lkCiBzY3RwX3RpbWVvdXQodm9pZCAqYXJnIFNDVFBfVU5VU0VE
KQogewpAQCAtMTkyLDI1ICsxOTcsMjcgQEAgdXNlcl9zY3RwX3RpbWVyX2l0ZXJhdGUodm9pZCAq
YXJnKQogewogCXNjdHBfdXNlcnNwYWNlX3NldF90aHJlYWRuYW1lKCJTQ1RQIHRpbWVyIik7CiAJ
Zm9yICg7OykgewotI2lmIGRlZmluZWQgKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVm
aW5lZChfV0lOMzIpCiAJCVNsZWVwKFRJTUVPVVRfSU5URVJWQUwpOwogI2Vsc2UKLQkJc3RydWN0
IHRpbWV2YWwgdGltZW91dDsKKwkJc3RydWN0IHRpbWVzcGVjIGFtb3VudCwgcmVtYWluaW5nOwog
Ci0JCXRpbWVvdXQudHZfc2VjICA9IDA7Ci0JCXRpbWVvdXQudHZfdXNlYyA9IDEwMDAgKiBUSU1F
T1VUX0lOVEVSVkFMOwotCQlzZWxlY3QoMCwgTlVMTCwgTlVMTCwgTlVMTCwgJnRpbWVvdXQpOwor
CQlyZW1haW5pbmcudHZfc2VjID0gMDsKKwkJcmVtYWluaW5nLnR2X25zZWMgPSBUSU1FT1VUX0lO
VEVSVkFMICogMTAwMCAqIDEwMDA7CisJCWRvIHsKKwkJCWFtb3VudCA9IHJlbWFpbmluZzsKKwkJ
fSB3aGlsZSAobmFub3NsZWVwKCZhbW91bnQsICZyZW1haW5pbmcpID09IC0xKTsKICNlbmRpZgog
CQlpZiAoYXRvbWljX2NtcHNldF9pbnQoJlNDVFBfQkFTRV9WQVIodGltZXJfdGhyZWFkX3Nob3Vs
ZF9leGl0KSwgMSwgMSkpIHsKIAkJCWJyZWFrOwogCQl9Ci0JCXNjdHBfaGFuZGxlX3RpY2soTVNF
Q19UT19USUNLUyhUSU1FT1VUX0lOVEVSVkFMKSk7CisJCXNjdHBfaGFuZGxlX3RpY2soc2N0cF9t
c2Vjc190b190aWNrcyhUSU1FT1VUX0lOVEVSVkFMKSk7CiAJfQogCXJldHVybiAoTlVMTCk7CiB9
CiAKIHZvaWQKLXNjdHBfc3RhcnRfdGltZXIodm9pZCkKK3NjdHBfc3RhcnRfdGltZXJfdGhyZWFk
KHZvaWQpCiB7CiAJLyoKIAkgKiBObyBuZWVkIHRvIGRvIFNDVFBfVElNRVJRX0xPQ0tfSU5JVCgp
OwpAQCAtMjIxLDcgKzIyOCwyMiBAQCBzY3RwX3N0YXJ0X3RpbWVyKHZvaWQpCiAJcmMgPSBzY3Rw
X3VzZXJzcGFjZV90aHJlYWRfY3JlYXRlKCZTQ1RQX0JBU0VfVkFSKHRpbWVyX3RocmVhZCksIHVz
ZXJfc2N0cF90aW1lcl9pdGVyYXRlKTsKIAlpZiAocmMpIHsKIAkJU0NUUF9QUklOVEYoIkVSUk9S
OyByZXR1cm4gY29kZSBmcm9tIHNjdHBfdGhyZWFkX2NyZWF0ZSgpIGlzICVkXG4iLCByYyk7CisJ
fSBlbHNlIHsKKwkJU0NUUF9CQVNFX1ZBUih0aW1lcl90aHJlYWRfc3RhcnRlZCkgPSAxOwogCX0K
IH0KIAordm9pZAorc2N0cF9zdG9wX3RpbWVyX3RocmVhZCh2b2lkKQoreworCWF0b21pY19jbXBz
ZXRfaW50KCZTQ1RQX0JBU0VfVkFSKHRpbWVyX3RocmVhZF9zaG91bGRfZXhpdCksIDAsIDEpOwor
CWlmIChTQ1RQX0JBU0VfVkFSKHRpbWVyX3RocmVhZF9zdGFydGVkKSkgeworI2lmIGRlZmluZWQo
X1dJTjMyKQorCQlXYWl0Rm9yU2luZ2xlT2JqZWN0KFNDVFBfQkFTRV9WQVIodGltZXJfdGhyZWFk
KSwgSU5GSU5JVEUpOworCQlDbG9zZUhhbmRsZShTQ1RQX0JBU0VfVkFSKHRpbWVyX3RocmVhZCkp
OworI2Vsc2UKKwkJcHRocmVhZF9qb2luKFNDVFBfQkFTRV9WQVIodGltZXJfdGhyZWFkKSwgTlVM
TCk7CisjZW5kaWYKKwl9Cit9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBs
aWIvbmV0aW5ldC9zY3RwX2NhbGxvdXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9z
Y3RwX2NhbGxvdXQuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDc2NWY5
NjZiZDFjMy4uODFmZDg1MzBkMWY2Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9z
Y3RwX2NhbGxvdXQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9jYWxs
b3V0LmgKQEAgLTMwLDcgKzMwLDcgQEAKICAqIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZmRlZiBf
X0ZyZWVCU0RfXworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+CiBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAj
ZW5kaWYKQEAgLTUzLDcgKzUzLDcgQEAgX19GQlNESUQoIiRGcmVlQlNEJCIpOwogI2RlZmluZSBT
Q1RQX1RJQ0tTX1BFUl9GQVNUVElNTyAyMAkvKiBjYWxsZWQgYWJvdXQgZXZlcnkgMjBtcyAqLwog
CiAjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3Nf
V2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKICNkZWZpbmUgU0NUUF9USU1FUlFfTE9DSygp
ICAgICAgICAgIEVudGVyQ3JpdGljYWxTZWN0aW9uKCZTQ1RQX0JBU0VfVkFSKHRpbWVyX210eCkp
CiAjZGVmaW5lIFNDVFBfVElNRVJRX1VOTE9DSygpICAgICAgICBMZWF2ZUNyaXRpY2FsU2VjdGlv
bigmU0NUUF9CQVNFX1ZBUih0aW1lcl9tdHgpKQogI2RlZmluZSBTQ1RQX1RJTUVSUV9MT0NLX0lO
SVQoKSAgICAgSW5pdGlhbGl6ZUNyaXRpY2FsU2VjdGlvbigmU0NUUF9CQVNFX1ZBUih0aW1lcl9t
dHgpKQpAQCAtNzEsMTMgKzcxLDEzIEBAIF9fRkJTRElEKCIkRnJlZUJTRCQiKTsKICNlbmRpZgog
I2VuZGlmCiAKLWludCBzY3RwX2dldF90aWNrX2NvdW50KHZvaWQpOwordWludDMyX3Qgc2N0cF9n
ZXRfdGlja19jb3VudCh2b2lkKTsKIAogVEFJTFFfSEVBRChjYWxsb3V0bGlzdCwgc2N0cF9jYWxs
b3V0KTsKIAogc3RydWN0IHNjdHBfY2FsbG91dCB7CiAJVEFJTFFfRU5UUlkoc2N0cF9jYWxsb3V0
KSB0cWU7Ci0JaW50IGNfdGltZTsJCS8qIHRpY2tzIHRvIHRoZSBldmVudCAqLworCXVpbnQzMl90
IGNfdGltZTsJCS8qIHRpY2tzIHRvIHRoZSBldmVudCAqLwogCXZvaWQgKmNfYXJnOwkJLyogZnVu
Y3Rpb24gYXJndW1lbnQgKi8KIAl2b2lkICgqY19mdW5jKSh2b2lkICopOwkvKiBmdW5jdGlvbiB0
byBjYWxsICovCiAJaW50IGNfZmxhZ3M7CQkvKiBzdGF0ZSBvZiB0aGlzIGVudHJ5ICovCkBAIC04
OCwxMCArODgsMTggQEAgdHlwZWRlZiBzdHJ1Y3Qgc2N0cF9jYWxsb3V0IHNjdHBfb3NfdGltZXJf
dDsKICNkZWZpbmUJU0NUUF9DQUxMT1VUX1BFTkRJTkcJMHgwMDA0CS8qIGNhbGxvdXQgaXMgd2Fp
dGluZyBmb3IgdGltZW91dCAqLwogCiB2b2lkIHNjdHBfb3NfdGltZXJfaW5pdChzY3RwX29zX3Rp
bWVyX3QgKnRtcik7Ci12b2lkIHNjdHBfb3NfdGltZXJfc3RhcnQoc2N0cF9vc190aW1lcl90ICos
IGludCwgdm9pZCAoKikodm9pZCAqKSwgdm9pZCAqKTsKKy8qIFJldHVybnMgMSBpZiBwZW5kaW5n
IHRpbWVyIHdhcyByZXNjaGVkdWxlZCwgMCBvdGhlcndpc2UuICovCitpbnQgc2N0cF9vc190aW1l
cl9zdGFydChzY3RwX29zX3RpbWVyX3QgKiwgdWludDMyX3QsIHZvaWQgKCopKHZvaWQgKiksIHZv
aWQgKik7CisvKiBSZXR1cm5zIDEgaWYgcGVuZGluZyB0aW1lciB3YXMgc3RvcHBlZCwgMCBvdGhl
cndpc2UuICovCiBpbnQgc2N0cF9vc190aW1lcl9zdG9wKHNjdHBfb3NfdGltZXJfdCAqKTsKK3Zv
aWQgc2N0cF9oYW5kbGVfdGljayh1aW50MzJfdCk7CiAKICNkZWZpbmUgU0NUUF9PU19USU1FUl9J
TklUCXNjdHBfb3NfdGltZXJfaW5pdAorLyoKKyAqIE5PVEU6IFRoZSBuZXh0IHR3byBzaG91bGRu
J3QgYmUgY2FsbGVkIGRpcmVjdGx5IG91dHNpZGUgb2Ygc2N0cF90aW1lcl9zdGFydCgpCisgKiBh
bmQgc2N0cF90aW1lcl9zdG9wKCksIHNpbmNlIHRoZXkgZG9uJ3QgaGFuZGxlIGluY3JlbWVudGlu
Zy9kZWNyZW1lbnRpbmcKKyAqIHJlbGV2YW50IHJlZmVyZW5jZSBjb3VudHMuCisgKi8KICNkZWZp
bmUgU0NUUF9PU19USU1FUl9TVEFSVAlzY3RwX29zX3RpbWVyX3N0YXJ0CiAjZGVmaW5lIFNDVFBf
T1NfVElNRVJfU1RPUAlzY3RwX29zX3RpbWVyX3N0b3AKIC8qIE1UIEZJWE1FOiBJcyB0aGUgZm9s
bG93aW5nIGNvcnJlY3Q/ICovCkBAIC0xMDEsOSArMTA5LDEwIEBAIGludCBzY3RwX29zX3RpbWVy
X3N0b3Aoc2N0cF9vc190aW1lcl90ICopOwogI2RlZmluZQlTQ1RQX09TX1RJTUVSX0RFQUNUSVZB
VEUodG1yKSAoKHRtciktPmNfZmxhZ3MgJj0gflNDVFBfQ0FMTE9VVF9BQ1RJVkUpCiAKICNpZiBk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCi12b2lkIHNjdHBfc3RhcnRfdGltZXIodm9pZCk7Cit2b2lk
IHNjdHBfc3RhcnRfdGltZXJfdGhyZWFkKHZvaWQpOwordm9pZCBzY3RwX3N0b3BfdGltZXJfdGhy
ZWFkKHZvaWQpOwogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChf
X0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiB2b2lkIHNjdHBfdGltZW91dCh2
b2lkICopOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5l
dC9zY3RwX2NjX2Z1bmN0aW9ucy5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBf
Y2NfZnVuY3Rpb25zLmMKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCBlNTNl
NGQ3NDdmMzIuLmRjZjYyOTg1NzlhMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQv
c2N0cF9jY19mdW5jdGlvbnMuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0
cF9jY19mdW5jdGlvbnMuYwpAQCAtMzIsOSArMzIsOSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZmRlZiBfX0ZyZWVCU0RfXworI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8c3lzL2NkZWZz
Lmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9jY19mdW5jdGlv
bnMuYyAzMTA1OTAgMjAxNi0xMi0yNiAxMTowNjo0MVogdHVleGVuICQiKTsKK19fRkJTRElEKCIk
RnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX2NjX2Z1bmN0aW9ucy5jIDM1OTQwNSAyMDIw
LTAzLTI4IDIwOjI1OjQ1WiB0dWV4ZW4gJCIpOwogI2VuZGlmCiAKICNpbmNsdWRlIDxuZXRpbmV0
L3NjdHBfb3MuaD4KQEAgLTUwLDggKzUwLDggQEAgX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5
cy9uZXRpbmV0L3NjdHBfY2NfZnVuY3Rpb25zLmMgMzEwNTkwIDIwMTYtMTItMjYgMTE6MDYKICNp
bmNsdWRlIDxuZXRpbmV0L3NjdHBfdGltZXIuaD4KICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfYXV0
aC5oPgogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9hc2NvbmYuaD4KLSNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDMwMDAKLSNpbmNsdWRlIDxuZXRpbmV0
L3NjdHBfZHRyYWNlX2RlY2xhcmUuaD4KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQorI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9rZHRyYWNlLmg+CiAj
ZW5kaWYKIAogI2RlZmluZSBTSElGVF9NUFRDUF9NVUxUSV9OIDQwCkBAIC0xMDEsNyArMTAxLDcg
QEAgc2N0cF9zZXRfaW5pdGlhbF9jY19wYXJhbShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVj
dCBzY3RwX25ldHMgKm5ldCkKIAl9CiAJc2N0cF9lbmZvcmNlX2N3bmRfbGltaXQoYXNzb2MsIG5l
dCk7CiAJbmV0LT5zc3RocmVzaCA9IGFzc29jLT5wZWVyc19yd25kOwotI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMzAwMAorI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJU0RUX1BST0JFNShzY3RwLCBj
d25kLCBuZXQsIGluaXQsCiAJICAgICAgICAgIHN0Y2ItPmFzb2MubXlfdnRhZywgKChzdGNiLT5z
Y3RwX2VwLT5zY3RwX2xwb3J0IDw8IDE2KSB8IChzdGNiLT5ycG9ydCkpLCBuZXQsCiAJICAgICAg
ICAgIDAsIG5ldC0+Y3duZCk7CkBAIC0xOTYsNyArMTk2LDcgQEAgc2N0cF9jd25kX3VwZGF0ZV9h
ZnRlcl9mcihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCQkJfQogCQkJCW5ldC0+Y3duZCA9IG5l
dC0+c3N0aHJlc2g7CiAJCQkJc2N0cF9lbmZvcmNlX2N3bmRfbGltaXQoYXNvYywgbmV0KTsKLSNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDMwMDAKKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCVNE
VF9QUk9CRTUoc2N0cCwgY3duZCwgbmV0LCBmciwKIAkJCQkJICBzdGNiLT5hc29jLm15X3Z0YWcs
ICgoc3RjYi0+c2N0cF9lcC0+c2N0cF9scG9ydCA8PCAxNikgfCAoc3RjYi0+cnBvcnQpKSwgbmV0
LAogCQkJCQkgIG9sZF9jd25kLCBuZXQtPmN3bmQpOwpAQCAtMjUyLDcgKzI1Miw3IEBAIHNjdHBf
Y3duZF91cGRhdGVfYWZ0ZXJfZnIoc3RydWN0IHNjdHBfdGNiICpzdGNiLAogI2RlZmluZSBTQ1RQ
X0lOU1RfR0FJTklORyAzIC8qIEdhaW5pbmcsIHN0ZXAgZG93biBwb3NzaWJsZSAqLwogCiAKLSNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDMwMDAKKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogc3RhdGlj
IGludAogY2NfYndfc2FtZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX25ldHMg
Km5ldCwgdWludDY0X3QgbmJ3LAogCSAgIHVpbnQ2NF90IHJ0dF9vZmZzZXQsIHVpbnQ2NF90IHZ0
YWcsIHVpbnQ4X3QgaW5zdF9pbmQpCkBAIC0yNjIsMTEgKzI2MiwxMSBAQCBjY19id19zYW1lKHN0
cnVjdCBzY3RwX3RjYiAqc3RjYiBTQ1RQX1VOVVNFRCwgc3RydWN0IHNjdHBfbmV0cyAqbmV0LCB1
aW50NjRfdCBuYgogCSAgIHVpbnQ2NF90IHJ0dF9vZmZzZXQsIHVpbnQ4X3QgaW5zdF9pbmQpCiAj
ZW5kaWYKIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+
PSA4MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogCXVpbnQ2NF90IG90aCwgcHJvYmVwb2ludDsKICNlbmRpZgogCi0jaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAzMDAwCisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlwcm9iZXBvaW50ID0gKCgo
dWludDY0X3QpbmV0LT5jd25kKSA8PCAzMik7CiAjZW5kaWYKIAlpZiAobmV0LT5ydHQgPiBuZXQt
PmNjX21vZC5ydGNjLmxid19ydHQgKyBydHRfb2Zmc2V0KSB7CkBAIC0yNzUsNyArMjc1LDcgQEAg
Y2NfYndfc2FtZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IgU0NUUF9VTlVTRUQsIHN0cnVjdCBzY3Rw
X25ldHMgKm5ldCwgdWludDY0X3QgbmIKIAkJICogd2UgZG9uJ3QgdXBkYXRlIGJ3Li4gc28gd2Ug
ZG9uJ3QKIAkJICogdXBkYXRlIHRoZSBydHQgZWl0aGVyLgogCQkgKi8KLSNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDMwMDAKKyNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkvKiBQcm9iZSBwb2ludCA1
ICovCiAJCXByb2JlcG9pbnQgfD0gICgoNSA8PCAxNikgfCAxKTsKIAkJU0RUX1BST0JFNShzY3Rw
LCBjd25kLCBuZXQsIHJ0dHZhciwKQEAgLTI5NSw3ICsyOTUsNyBAQCBjY19id19zYW1lKHN0cnVj
dCBzY3RwX3RjYiAqc3RjYiBTQ1RQX1VOVVNFRCwgc3RydWN0IHNjdHBfbmV0cyAqbmV0LCB1aW50
NjRfdCBuYgogCQkJICAgICgobmV0LT5jY19tb2QucnRjYy5zdGVwX2NudCA+IG5ldC0+Y2NfbW9k
LnJ0Y2Muc3RlYWR5X3N0ZXApICYmCiAJCQkgICAgICgobmV0LT5jY19tb2QucnRjYy5zdGVwX2Nu
dCAlIG5ldC0+Y2NfbW9kLnJ0Y2Muc3RlYWR5X3N0ZXApID09IDApKSkgewogCQkJCS8qIFRyeSBh
IHN0ZXAgZG93biAqLwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJz
aW9uID49IDgwMzAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAJCQkJb3RoID0gbmV0LT5jY19tb2QucnRjYy52b2xfcmVkdWNlOwogCQkJCW90
aCA8PD0gMTY7CiAJCQkJb3RoIHw9IG5ldC0+Y2NfbW9kLnJ0Y2Muc3RlcF9jbnQ7CkBAIC0zMjQs
NyArMzI0LDcgQEAgY2NfYndfc2FtZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IgU0NUUF9VTlVTRUQs
IHN0cnVjdCBzY3RwX25ldHMgKm5ldCwgdWludDY0X3QgbmIKIAkJICogd2UgdXBkYXRlIGJvdGgg
dGhlIGJ3IGFuZCB0aGUgcnR0IGhlcmUgdG8KIAkJICogbG9jayB0aGlzIGluIGFzIGEgZ29vZCBz
dGVwIGRvd24uCiAJCSAqLwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92
ZXJzaW9uID49IDgwMzAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAJCS8qIFByb2JlIHBvaW50IDYgKi8KIAkJcHJvYmVwb2ludCB8PSAgKCg2
IDw8IDE2KSB8IDApOwogCQlTRFRfUFJPQkU1KHNjdHAsIGN3bmQsIG5ldCwgcnR0dmFyLApAQCAt
MzM1LDcgKzMzNSw3IEBAIGNjX2J3X3NhbWUoc3RydWN0IHNjdHBfdGNiICpzdGNiIFNDVFBfVU5V
U0VELCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsIHVpbnQ2NF90IG5iCiAJCQkgIHByb2JlcG9pbnQp
OwogI2VuZGlmCiAJCWlmIChuZXQtPmNjX21vZC5ydGNjLnN0ZWFkeV9zdGVwKSB7Ci0jaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAzMDAwCisjaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCW90aCA9IG5l
dC0+Y2NfbW9kLnJ0Y2Mudm9sX3JlZHVjZTsKIAkJCW90aCA8PD0gMTY7CiAJCQlvdGggfD0gbmV0
LT5jY19tb2QucnRjYy5zdGVwX2NudDsKQEAgLTM3MCw3ICszNzAsNyBAQCBjY19id19zYW1lKHN0
cnVjdCBzY3RwX3RjYiAqc3RjYiBTQ1RQX1VOVVNFRCwgc3RydWN0IHNjdHBfbmV0cyAqbmV0LCB1
aW50NjRfdCBuYgogCX0KIAkvKiBPayBidyBhbmQgcnR0IHJlbWFpbmVkIHRoZSBzYW1lIC4uIG5v
IHVwZGF0ZSB0byBhbnkKIAkgKi8KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVC
U0RfdmVyc2lvbiA+PSA4MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogCS8qIFByb2JlIHBvaW50IDcgKi8KIAlwcm9iZXBvaW50IHw9ICAo
KDcgPDwgMTYpIHwgbmV0LT5jY19tb2QucnRjYy5yZXRfZnJvbV9lcSk7CiAJU0RUX1BST0JFNShz
Y3RwLCBjd25kLCBuZXQsIHJ0dHZhciwKQEAgLTQwNyw3ICs0MDcsNyBAQCBjY19id19zYW1lKHN0
cnVjdCBzY3RwX3RjYiAqc3RjYiBTQ1RQX1VOVVNFRCwgc3RydWN0IHNjdHBfbmV0cyAqbmV0LCB1
aW50NjRfdCBuYgogCQlyZXR1cm4gKChpbnQpbmV0LT5jY19tb2QucnRjYy5yZXRfZnJvbV9lcSk7
CiB9CiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4
MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogc3RhdGljIGludAogY2NfYndfZGVjcmVhc2Uoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1
Y3Qgc2N0cF9uZXRzICpuZXQsIHVpbnQ2NF90IG5idywgdWludDY0X3QgcnR0X29mZnNldCwKIAkg
ICAgICAgdWludDY0X3QgdnRhZywgdWludDhfdCBpbnN0X2luZCkKQEAgLTQxNywxMiArNDE3LDEy
IEBAIGNjX2J3X2RlY3JlYXNlKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiBTQ1RQX1VOVVNFRCwgc3Ry
dWN0IHNjdHBfbmV0cyAqbmV0LCB1aW50NjRfCiAJICAgICAgIHVpbnQ4X3QgaW5zdF9pbmQpCiAj
ZW5kaWYKIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+
PSA4MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogCXVpbnQ2NF90IG90aCwgcHJvYmVwb2ludDsKICNlbmRpZgogCiAJLyogQmFuZHdpZHRo
IGRlY3JlYXNlZC4qLwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJz
aW9uID49IDgwMzAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAJcHJvYmVwb2ludCA9ICgoKHVpbnQ2NF90KW5ldC0+Y3duZCkgPDwgMzIpOwog
I2VuZGlmCiAJaWYgKG5ldC0+cnR0ICA+IG5ldC0+Y2NfbW9kLnJ0Y2MubGJ3X3J0dCtydHRfb2Zm
c2V0KSB7CkBAIC00MzEsNyArNDMxLDcgQEAgY2NfYndfZGVjcmVhc2Uoc3RydWN0IHNjdHBfdGNi
ICpzdGNiIFNDVFBfVU5VU0VELCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsIHVpbnQ2NF8KIAkJaWYg
KChuZXQtPmN3bmQgPiBuZXQtPmNjX21vZC5ydGNjLmN3bmRfYXRfYndfc2V0KSAmJgogCQkgICAg
KGluc3RfaW5kICE9IFNDVFBfSU5TVF9MT09TSU5HKSkgewogCQkJLyogV2UgY2F1c2VkIGl0IG1h
eWJlLi4gYmFjayBvZmY/ICovCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNE
X3ZlcnNpb24gPj0gODAzMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKIAkJCS8qIFBST0JFIFBPSU5UIDEgKi8KIAkJCXByb2JlcG9pbnQgfD0g
ICgoMSA8PCAxNikgfCAxKTsKIAkJCVNEVF9QUk9CRTUoc2N0cCwgY3duZCwgbmV0LCBydHR2YXIs
CkBAIC00NDgsNyArNDQ4LDcgQEAgY2NfYndfZGVjcmVhc2Uoc3RydWN0IHNjdHBfdGNiICpzdGNi
IFNDVFBfVU5VU0VELCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsIHVpbnQ2NF8KIAkJCX0KIAkJCXJl
dHVybiAoMSk7CiAJCX0KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVy
c2lvbiA+PSA4MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogCQkvKiBQcm9iZSBwb2ludCAyICovCiAJCXByb2JlcG9pbnQgfD0gICgoMiA8
PCAxNikgfCAwKTsKIAkJU0RUX1BST0JFNShzY3RwLCBjd25kLCBuZXQsIHJ0dHZhciwKQEAgLTQ2
MCw3ICs0NjAsNyBAQCBjY19id19kZWNyZWFzZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IgU0NUUF9V
TlVTRUQsIHN0cnVjdCBzY3RwX25ldHMgKm5ldCwgdWludDY0XwogI2VuZGlmCiAJCS8qIFNvbWVv
bmUgZWxzZSAtIGZpZ2h0IGZvciBtb3JlPyAqLwogCQlpZiAobmV0LT5jY19tb2QucnRjYy5zdGVh
ZHlfc3RlcCkgewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9u
ID49IDgwMzAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJCQlvdGggPSBuZXQtPmNjX21vZC5ydGNjLnZvbF9yZWR1Y2U7CiAJCQlvdGggPDw9
IDE2OwogCQkJb3RoIHw9IG5ldC0+Y2NfbW9kLnJ0Y2Muc3RlcF9jbnQ7CkBAIC00ODgsNyArNDg4
LDcgQEAgY2NfYndfZGVjcmVhc2Uoc3RydWN0IHNjdHBfdGNiICpzdGNiIFNDVFBfVU5VU0VELCBz
dHJ1Y3Qgc2N0cF9uZXRzICpuZXQsIHVpbnQ2NF8KIAkJZ290byBvdXRfZGVjaXNpb247CiAJfSBl
bHNlICBpZiAobmV0LT5ydHQgIDwgbmV0LT5jY19tb2QucnRjYy5sYndfcnR0LXJ0dF9vZmZzZXQp
IHsKIAkJLyogYncgJiBydHQgZGVjcmVhc2VkICovCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
JiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAzMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJLyogUHJvYmUgcG9pbnQgMyAqLwogCQlwcm9i
ZXBvaW50IHw9ICAoKDMgPDwgMTYpIHwgMCk7CiAJCVNEVF9QUk9CRTUoc2N0cCwgY3duZCwgbmV0
LCBydHR2YXIsCkBAIC00OTksNyArNDk5LDcgQEAgY2NfYndfZGVjcmVhc2Uoc3RydWN0IHNjdHBf
dGNiICpzdGNiIFNDVFBfVU5VU0VELCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsIHVpbnQ2NF8KIAkJ
CSAgcHJvYmVwb2ludCk7CiAjZW5kaWYKIAkJaWYgKG5ldC0+Y2NfbW9kLnJ0Y2Muc3RlYWR5X3N0
ZXApIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4
MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCQkJb3RoID0gbmV0LT5jY19tb2QucnRjYy52b2xfcmVkdWNlOwogCQkJb3RoIDw8PSAxNjsK
IAkJCW90aCB8PSBuZXQtPmNjX21vZC5ydGNjLnN0ZXBfY250OwpAQCAtNTI0LDcgKzUyNCw3IEBA
IGNjX2J3X2RlY3JlYXNlKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiBTQ1RQX1VOVVNFRCwgc3RydWN0
IHNjdHBfbmV0cyAqbmV0LCB1aW50NjRfCiAJCWdvdG8gb3V0X2RlY2lzaW9uOwogCX0KIAkvKiBU
aGUgYncgZGVjcmVhc2VkIGJ1dCBydHQgc3RheWVkIHRoZSBzYW1lICovCi0jaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAzMDAwCisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkvKiBQcm9iZSBwb2ludCA0
ICovCiAJcHJvYmVwb2ludCB8PSAgKCg0IDw8IDE2KSB8IDApOwogCVNEVF9QUk9CRTUoc2N0cCwg
Y3duZCwgbmV0LCBydHR2YXIsCkBAIC01MzUsNyArNTM1LDcgQEAgY2NfYndfZGVjcmVhc2Uoc3Ry
dWN0IHNjdHBfdGNiICpzdGNiIFNDVFBfVU5VU0VELCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsIHVp
bnQ2NF8KIAkJICBwcm9iZXBvaW50KTsKICNlbmRpZgogCWlmIChuZXQtPmNjX21vZC5ydGNjLnN0
ZWFkeV9zdGVwKSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNp
b24gPj0gODAzMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKIAkJb3RoID0gbmV0LT5jY19tb2QucnRjYy52b2xfcmVkdWNlOwogCQlvdGggPDw9
IDE2OwogCQlvdGggfD0gbmV0LT5jY19tb2QucnRjYy5zdGVwX2NudDsKQEAgLTU2OCw3ICs1Njgs
NyBAQCBvdXRfZGVjaXNpb246CiAJfQogfQogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
X19GcmVlQlNEX3ZlcnNpb24gPj0gODAzMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIHN0YXRpYyBpbnQKIGNjX2J3X2luY3JlYXNlKHN0cnVj
dCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfbmV0cyAqbmV0LCB1aW50NjRfdCBuYncsIHVp
bnQ2NF90IHZ0YWcpCiAjZWxzZQpAQCAtNTc2LDcgKzU3Niw3IEBAIHN0YXRpYyBpbnQKIGNjX2J3
X2luY3JlYXNlKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiBTQ1RQX1VOVVNFRCwgc3RydWN0IHNjdHBf
bmV0cyAqbmV0LCB1aW50NjRfdCBuYncpCiAjZW5kaWYKIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCXVpbnQ2NF90IG90aCwgcHJvYmVwb2lu
dDsKIAogI2VuZGlmCkBAIC01ODYsNyArNTg2LDcgQEAgY2NfYndfaW5jcmVhc2Uoc3RydWN0IHNj
dHBfdGNiICpzdGNiIFNDVFBfVU5VU0VELCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsIHVpbnQ2NF8K
IAkgKiB1cGRhdGUuIE5vdGUgdGhhdCB3ZSBwYXkgbm8gYXR0ZW50aW9uIHRvCiAJICogdGhlIGlu
c3RfaW5kIHNpbmNlIG91ciBvdmVyYWxsIHN1bSBpcyBpbmNyZWFzaW5nLgogCSAqLwotI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMzAwMAorI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJLyogUFJPQkUg
UE9JTlQgMCAqLwogCXByb2JlcG9pbnQgPSAoKCh1aW50NjRfdCluZXQtPmN3bmQpIDw8IDMyKTsK
IAlTRFRfUFJPQkU1KHNjdHAsIGN3bmQsIG5ldCwgcnR0dmFyLApAQCAtNTk3LDcgKzU5Nyw3IEBA
IGNjX2J3X2luY3JlYXNlKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiBTQ1RQX1VOVVNFRCwgc3RydWN0
IHNjdHBfbmV0cyAqbmV0LCB1aW50NjRfCiAJCSAgcHJvYmVwb2ludCk7CiAjZW5kaWYKIAlpZiAo
bmV0LT5jY19tb2QucnRjYy5zdGVhZHlfc3RlcCkgewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
ICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMzAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCW90aCA9IG5ldC0+Y2NfbW9kLnJ0Y2Mudm9s
X3JlZHVjZTsKIAkJb3RoIDw8PSAxNjsKIAkJb3RoIHw9IG5ldC0+Y2NfbW9kLnJ0Y2Muc3RlcF9j
bnQ7CkBAIC02MjcsNyArNjI3LDcgQEAgc3RhdGljIGludAogY2NfYndfbGltaXQoc3RydWN0IHNj
dHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsIHVpbnQ2NF90IG5idykKIHsKIAl1
aW50NjRfdCBid19vZmZzZXQsIHJ0dF9vZmZzZXQ7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
JiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAzMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAl1aW50NjRfdCBwcm9iZXBvaW50LCBydHQsIHZ0
YWc7CiAjZW5kaWYKIAl1aW50NjRfdCBieXRlc19mb3JfdGhpc19ydHQsIGluc3RfYnc7CkBAIC02
NzMsNyArNjczLDcgQEAgY2NfYndfbGltaXQoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qg
c2N0cF9uZXRzICpuZXQsIHVpbnQ2NF90IG5idykKIAkgKiBjaGFuZ2Ugd2l0aGluIDEvMzJuZAog
CSAqLwogCWJ3X3NoaWZ0ID0gU0NUUF9CQVNFX1NZU0NUTChzY3RwX3J0dHZhcl9idyk7Ci0jaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAzMDAwCisjaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlydHQgPSBz
dGNiLT5hc29jLm15X3Z0YWc7CiAJdnRhZyA9IChydHQgPDwgMzIpIHwgKCgodWludDMyX3QpKHN0
Y2ItPnNjdHBfZXAtPnNjdHBfbHBvcnQpKSA8PCAxNikgfCAoc3RjYi0+cnBvcnQpOwogCXByb2Jl
cG9pbnQgPSAoKCh1aW50NjRfdCluZXQtPmN3bmQpIDw8IDMyKTsKQEAgLTY5NCwxMiArNjk0LDEy
IEBAIGNjX2J3X2xpbWl0KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfbmV0cyAq
bmV0LCB1aW50NjRfdCBuYncpCiAJCQkJCWluc3RfaW5kID0gU0NUUF9JTlNUX0xPT1NJTkc7CiAJ
CQkJZWxzZQogCQkJCQlpbnN0X2luZCA9IFNDVFBfSU5TVF9ORVVUUkFMOwotI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMzAwMAorI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJcHJvYmVwb2ludCB8
PSAgKCgweGIgPDwgMTYpIHwgaW5zdF9pbmQpOwogI2VuZGlmCiAJCQl9IGVsc2UgewogCQkJCWlu
c3RfaW5kID0gbmV0LT5jY19tb2QucnRjYy5sYXN0X2luc3RfaW5kOwotI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMzAwMAorI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJaW5zdF9idyA9IGJ5dGVz
X2Zvcl90aGlzX3J0dCAvICh1aW50NjRfdCkobmV0LT5ydHQpOwogCQkJCS8qIENhbid0IGRldGVy
bWluZSBkbyBub3QgY2hhbmdlICovCiAJCQkJcHJvYmVwb2ludCB8PSAgKCgweGMgPDwgMTYpIHwg
aW5zdF9pbmQpOwpAQCAtNzA3LDEzICs3MDcsMTMgQEAgY2NfYndfbGltaXQoc3RydWN0IHNjdHBf
dGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsIHVpbnQ2NF90IG5idykKIAkJCX0KIAkJ
fSBlbHNlIHsKIAkJCWluc3RfaW5kID0gbmV0LT5jY19tb2QucnRjYy5sYXN0X2luc3RfaW5kOwot
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMzAwMAor
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQlp
bnN0X2J3ID0gYnl0ZXNfZm9yX3RoaXNfcnR0OwogCQkJLyogQ2FuJ3QgZGV0ZXJtaW5lIGRvIG5v
dCBjaGFuZ2UgKi8KIAkJCXByb2JlcG9pbnQgfD0gICgoMHhkIDw8IDE2KSB8IGluc3RfaW5kKTsK
ICNlbmRpZgogCQl9Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNp
b24gPj0gODAzMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKIAkJU0RUX1BST0JFNShzY3RwLCBjd25kLCBuZXQsIHJ0dHZhciwKIAkJCSAgdnRh
ZywKIAkJCSAgKChuYncgPDwgMzIpIHwgaW5zdF9idyksCkBAIC03MjcsNyArNzI3LDcgQEAgY2Nf
YndfbGltaXQoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsIHVp
bnQ2NF90IG5idykKIAl9CiAJYndfb2Zmc2V0ID0gbmV0LT5jY19tb2QucnRjYy5sYncgPj4gYndf
c2hpZnQ7CiAJaWYgKG5idyA+IG5ldC0+Y2NfbW9kLnJ0Y2MubGJ3ICsgYndfb2Zmc2V0KSB7Ci0j
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAzMDAwCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJcmV0
ID0gY2NfYndfaW5jcmVhc2Uoc3RjYiwgbmV0LCBuYncsIHZ0YWcpOwogI2Vsc2UKIAkJcmV0ID0g
Y2NfYndfaW5jcmVhc2Uoc3RjYiwgbmV0LCBuYncpOwpAQCAtNzM2LDcgKzczNiw3IEBAIGNjX2J3
X2xpbWl0KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfbmV0cyAqbmV0LCB1aW50
NjRfdCBuYncpCiAJfQogCXJ0dF9vZmZzZXQgPSBuZXQtPmNjX21vZC5ydGNjLmxid19ydHQgPj4g
U0NUUF9CQVNFX1NZU0NUTChzY3RwX3J0dHZhcl9ydHQpOwogCWlmIChuYncgPCBuZXQtPmNjX21v
ZC5ydGNjLmxidyAtIGJ3X29mZnNldCkgewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9f
RnJlZUJTRF92ZXJzaW9uID49IDgwMzAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCXJldCA9IGNjX2J3X2RlY3JlYXNlKHN0Y2IsIG5ldCwg
bmJ3LCBydHRfb2Zmc2V0LCB2dGFnLCBpbnN0X2luZCk7CiAjZWxzZQogCQlyZXQgPSBjY19id19k
ZWNyZWFzZShzdGNiLCBuZXQsIG5idywgcnR0X29mZnNldCwgaW5zdF9pbmQpOwpAQCAtNzQ3LDcg
Kzc0Nyw3IEBAIGNjX2J3X2xpbWl0KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBf
bmV0cyAqbmV0LCB1aW50NjRfdCBuYncpCiAJICogd2UgYXJlIGluIGEgc2l0dWF0aW9uIHdoZXJl
CiAJICogdGhlIGJ3IHN0YXllZCB0aGUgc2FtZS4KIAkgKi8KLSNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCXJldCA9IGNjX2J3X3NhbWUoc3RjYiwg
bmV0LCBuYncsIHJ0dF9vZmZzZXQsIHZ0YWcsIGluc3RfaW5kKTsKICNlbHNlCiAJcmV0ID0gY2Nf
Yndfc2FtZShzdGNiLCBuZXQsIG5idywgcnR0X29mZnNldCwgaW5zdF9pbmQpOwpAQCAtNzYzLDcg
Kzc2Myw3IEBAIHNjdHBfY3duZF91cGRhdGVfYWZ0ZXJfc2Fja19jb21tb24oc3RydWN0IHNjdHBf
dGNiICpzdGNiLAogCQkJCSAgIGludCBhY2N1bV9tb3ZlZCwgaW50IHJlbmVnZWRfYWxsIFNDVFBf
VU5VU0VELCBpbnQgd2lsbF9leGl0LCBpbnQgdXNlX3J0Y2MpCiB7CiAJc3RydWN0IHNjdHBfbmV0
cyAqbmV0OwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49
IDgwMzAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAJaW50IG9sZF9jd25kOwogI2VuZGlmCiAJdWludDMyX3QgdF9zc3RocmVzaCwgdF9jd25k
LCBpbmNyOwpAQCAtODc5LDcgKzg3OSw3IEBAIHNjdHBfY3duZF91cGRhdGVfYWZ0ZXJfc2Fja19j
b21tb24oc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkJCQljb250aW51ZTsKIAkJCQl9CiAJCQl9
IGVsc2UgewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49
IDgwMzAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAJCQkJdWludDY0X3QgdnRhZywgcHJvYmVwb2ludDsKIAogCQkJCXByb2JlcG9pbnQgPSAo
KCh1aW50NjRfdCluZXQtPmN3bmQpIDw8IDMyKTsKQEAgLTkxNSw3ICs5MTUsNyBAQCBzY3RwX2N3
bmRfdXBkYXRlX2FmdGVyX3NhY2tfY29tbW9uKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJCQlp
ZiAobmV0LT5mbGlnaHRfc2l6ZSArIG5ldC0+bmV0X2FjayA+PSBuZXQtPmN3bmQpIHsKIAkJCQkJ
dWludDMyX3QgbGltaXQ7CiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0Rf
dmVyc2lvbiA+PSA4MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogCQkJCQlvbGRfY3duZCA9IG5ldC0+Y3duZDsKICNlbmRpZgogCQkJCQlz
d2l0Y2ggKGFzb2MtPnNjdHBfY210X29uX29mZikgewpAQCAtOTg3LDcgKzk4Nyw3IEBAIHNjdHBf
Y3duZF91cGRhdGVfYWZ0ZXJfc2Fja19jb21tb24oc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkJ
CQkJc2N0cF9sb2dfY3duZChzdGNiLCBuZXQsIGluY3IsCiAJCQkJCQkgICAgICAgICAgICAgIFND
VFBfQ1dORF9MT0dfRlJPTV9TUyk7CiAJCQkJCX0KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCQlTRFRfUFJPQkU1KHNjdHAsIGN3bmQsIG5l
dCwgYWNrLAogCQkJCQkgICAgICAgICAgc3RjYi0+YXNvYy5teV92dGFnLAogCQkJCQkgICAgICAg
ICAgKChzdGNiLT5zY3RwX2VwLT5zY3RwX2xwb3J0IDw8IDE2KSB8IChzdGNiLT5ycG9ydCkpLApA
QCAtMTAxMCw3ICsxMDEwLDcgQEAgc2N0cF9jd25kX3VwZGF0ZV9hZnRlcl9zYWNrX2NvbW1vbihz
dHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCQkJaWYgKChuZXQtPmZsaWdodF9zaXplICsgbmV0LT5u
ZXRfYWNrID49IG5ldC0+Y3duZCkgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChuZXQtPnBhcnRpYWxfYnl0ZXNfYWNrZWQgPj0gbmV0LT5jd25kKSkgewogCQkJCQluZXQt
PnBhcnRpYWxfYnl0ZXNfYWNrZWQgLT0gbmV0LT5jd25kOwotI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMzAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJCW9sZF9jd25kID0gbmV0LT5jd25k
OwogI2VuZGlmCiAJCQkJCXN3aXRjaCAoYXNvYy0+c2N0cF9jbXRfb25fb2ZmKSB7CkBAIC0xMDUx
LDcgKzEwNTEsNyBAQCBzY3RwX2N3bmRfdXBkYXRlX2FmdGVyX3NhY2tfY29tbW9uKHN0cnVjdCBz
Y3RwX3RjYiAqc3RjYiwKIAkJCQkJfQogCQkJCQluZXQtPmN3bmQgKz0gaW5jcjsKIAkJCQkJc2N0
cF9lbmZvcmNlX2N3bmRfbGltaXQoYXNvYywgbmV0KTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCQlTRFRfUFJPQkU1KHNjdHAsIGN3bmQs
IG5ldCwgYWNrLAogCQkJCQkJICBzdGNiLT5hc29jLm15X3Z0YWcsCiAJCQkJCQkgICgoc3RjYi0+
c2N0cF9lcC0+c2N0cF9scG9ydCA8PCAxNikgfCAoc3RjYi0+cnBvcnQpKSwKQEAgLTEwNzgsNyAr
MTA3OCw3IEBAIHNjdHBfY3duZF91cGRhdGVfYWZ0ZXJfc2Fja19jb21tb24oc3RydWN0IHNjdHBf
dGNiICpzdGNiLAogCX0KIH0KIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJT
RF92ZXJzaW9uID49IDgwMzAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiBzdGF0aWMgdm9pZAogc2N0cF9jd25kX3VwZGF0ZV9leGl0X3BmX2Nv
bW1vbihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX25ldHMgKm5ldCkKICNlbHNl
CkBAIC0xMDg2LDEzICsxMDg2LDEzIEBAIHN0YXRpYyB2b2lkCiBzY3RwX2N3bmRfdXBkYXRlX2V4
aXRfcGZfY29tbW9uKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiBTQ1RQX1VOVVNFRCwgc3RydWN0IHNj
dHBfbmV0cyAqbmV0KQogI2VuZGlmCiB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19G
cmVlQlNEX3ZlcnNpb24gPj0gODAzMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlpbnQgb2xkX2N3bmQ7CiAKIAlvbGRfY3duZCA9IG5ldC0+
Y3duZDsKICNlbmRpZgogCW5ldC0+Y3duZCA9IG5ldC0+bXR1OwotI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMzAwMAorI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJU0RUX1BST0JFNShzY3RwLCBjd25k
LCBuZXQsIGFjaywKIAkgICAgICAgICAgc3RjYi0+YXNvYy5teV92dGFnLCAoKHN0Y2ItPnNjdHBf
ZXAtPnNjdHBfbHBvcnQgPDwgMTYpIHwgKHN0Y2ItPnJwb3J0KSksIG5ldCwKIAkgICAgICAgICAg
b2xkX2N3bmQsIG5ldC0+Y3duZCk7CkBAIC0xMTY1LDcgKzExNjUsNyBAQCBzY3RwX2N3bmRfdXBk
YXRlX2FmdGVyX3RpbWVvdXQoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9uZXRz
ICpuZXQpCiAJfQogCW5ldC0+Y3duZCA9IG5ldC0+bXR1OwogCW5ldC0+cGFydGlhbF9ieXRlc19h
Y2tlZCA9IDA7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24g
Pj0gODAzMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKIAlTRFRfUFJPQkU1KHNjdHAsIGN3bmQsIG5ldCwgdG8sCiAJCSAgc3RjYi0+YXNvYy5t
eV92dGFnLAogCQkgICgoc3RjYi0+c2N0cF9lcC0+c2N0cF9scG9ydCA8PCAxNikgfCAoc3RjYi0+
cnBvcnQpKSwKQEAgLTEyMjAsNyArMTIyMCw3IEBAIHNjdHBfY3duZF91cGRhdGVfYWZ0ZXJfZWNu
X2VjaG9fY29tbW9uKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfbmV0cyAqCiAJ
CQkJbmV0LT5SVE8gPDw9IDE7CiAJCQl9CiAJCQluZXQtPmN3bmQgPSBuZXQtPnNzdGhyZXNoOwot
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMzAwMAor
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQlT
RFRfUFJPQkU1KHNjdHAsIGN3bmQsIG5ldCwgZWNuLAogCQkJCSAgc3RjYi0+YXNvYy5teV92dGFn
LAogCQkJCSAgKChzdGNiLT5zY3RwX2VwLT5zY3RwX2xwb3J0IDw8IDE2KSB8IChzdGNiLT5ycG9y
dCkpLApAQCAtMTM0MSw3ICsxMzQxLDcgQEAgc2N0cF9jd25kX3VwZGF0ZV9hZnRlcl9wYWNrZXRf
ZHJvcHBlZChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJc2N0cF9lbmZvcmNlX2N3bmRfbGltaXQo
JnN0Y2ItPmFzb2MsIG5ldCk7CiAJaWYgKG5ldC0+Y3duZCAtIG9sZF9jd25kICE9IDApIHsKIAkJ
LyogbG9nIG9ubHkgY2hhbmdlcyAqLwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJl
ZUJTRF92ZXJzaW9uID49IDgwMzAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAJCVNEVF9QUk9CRTUoc2N0cCwgY3duZCwgbmV0LCBwZCwKIAkJ
CSAgc3RjYi0+YXNvYy5teV92dGFnLAogCQkJICAoKHN0Y2ItPnNjdHBfZXAtPnNjdHBfbHBvcnQg
PDwgMTYpIHwgKHN0Y2ItPnJwb3J0KSksCkBAIC0xMzY2LDcgKzEzNjYsNyBAQCBzY3RwX2N3bmRf
dXBkYXRlX2FmdGVyX291dHB1dChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJaWYgKGJ1cnN0X2xp
bWl0KSB7CiAJCW5ldC0+Y3duZCA9IChuZXQtPmZsaWdodF9zaXplICsgKGJ1cnN0X2xpbWl0ICog
bmV0LT5tdHUpKTsKIAkJc2N0cF9lbmZvcmNlX2N3bmRfbGltaXQoJnN0Y2ItPmFzb2MsIG5ldCk7
Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAzMDAw
CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJ
U0RUX1BST0JFNShzY3RwLCBjd25kLCBuZXQsIGJsLAogCQkJICBzdGNiLT5hc29jLm15X3Z0YWcs
CiAJCQkgICgoc3RjYi0+c2N0cF9lcC0+c2N0cF9scG9ydCA8PCAxNikgfCAoc3RjYi0+cnBvcnQp
KSwKQEAgLTE0MzMsMTIgKzE0MzMsMTIgQEAgc3RhdGljIHZvaWQKIHNjdHBfY3duZF9uZXdfcnRj
Y190cmFuc21pc3Npb25fYmVnaW5zKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJCQkgICAgICAg
c3RydWN0IHNjdHBfbmV0cyAqbmV0KQogewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9f
RnJlZUJTRF92ZXJzaW9uID49IDgwMzAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJdWludDY0X3QgdnRhZywgcHJvYmVwb2ludDsKIAogI2Vu
ZGlmCiAJaWYgKG5ldC0+Y2NfbW9kLnJ0Y2MubGJ3KSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAzMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJLyogQ2xlYXIgdGhlIG9sZCBidy4uIHdl
IHdlbnQgdG8gMCBpbi1mbGlnaHQgKi8KIAkJdnRhZyA9IChuZXQtPnJ0dCA8PCAzMikgfCAoKCh1
aW50MzJfdCkoc3RjYi0+c2N0cF9lcC0+c2N0cF9scG9ydCkpIDw8IDE2KSB8CiAJCQkoc3RjYi0+
cnBvcnQpOwpAQCAtMTQ5NCwxMyArMTQ5NCwxMyBAQCBzdGF0aWMgdm9pZAogc2N0cF9zZXRfcnRj
Y19pbml0aWFsX2NjX3BhcmFtKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJCSAgICAgICBzdHJ1
Y3Qgc2N0cF9uZXRzICpuZXQpCiB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVl
QlNEX3ZlcnNpb24gPj0gODAzMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKIAl1aW50NjRfdCB2dGFnLCBwcm9iZXBvaW50OwogCiAjZW5kaWYK
IAlzY3RwX3NldF9pbml0aWFsX2NjX3BhcmFtKHN0Y2IsIG5ldCk7CiAJc3RjYi0+YXNvYy51c2Vf
cHJlY2lzZV90aW1lID0gMTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0Rf
dmVyc2lvbiA+PSA4MDMwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogCXByb2JlcG9pbnQgPSAoKCh1aW50NjRfdCluZXQtPmN3bmQpIDw8IDMy
KTsKIAlwcm9iZXBvaW50IHw9ICAoKDkgPDwgMTYpIHwgMCk7CiAJdnRhZyA9IChuZXQtPnJ0dCA8
PCAzMikgfApAQCAtMTk2Miw3ICsxOTYyLDcgQEAgaHRjcF9jb25nX3RpbWUoc3RydWN0IGh0Y3Ag
KmNhKQogc3RhdGljIGlubGluZSB1aW50MzJfdAogaHRjcF9jY291bnQoc3RydWN0IGh0Y3AgKmNh
KQogewotCXJldHVybiAoaHRjcF9jb25nX3RpbWUoY2EpL2NhLT5taW5SVFQpOworCXJldHVybiAo
Y2EtPm1pblJUVCA9PSAwID8gaHRjcF9jb25nX3RpbWUoY2EpIDogaHRjcF9jb25nX3RpbWUoY2Ep
L2NhLT5taW5SVFQpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQKQEAgLTIwMDAsNyArMjAwMCw3
IEBAIG1lYXN1cmVfcnR0KHN0cnVjdCBzY3RwX25ldHMgKm5ldCkKIAlpZiAobmV0LT5mYXN0X3Jl
dHJhbl9pcCA9PSAwICYmIG5ldC0+c3N0aHJlc2ggPCAweEZGRkYgJiYgaHRjcF9jY291bnQoJm5l
dC0+Y2NfbW9kLmh0Y3BfY2EpID4gMykgewogCQlpZiAobmV0LT5jY19tb2QuaHRjcF9jYS5tYXhS
VFQgPCBuZXQtPmNjX21vZC5odGNwX2NhLm1pblJUVCkKIAkJCW5ldC0+Y2NfbW9kLmh0Y3BfY2Eu
bWF4UlRUID0gbmV0LT5jY19tb2QuaHRjcF9jYS5taW5SVFQ7Ci0JCWlmIChuZXQtPmNjX21vZC5o
dGNwX2NhLm1heFJUVCA8IHNydHQgJiYgc3J0dCA8PSBuZXQtPmNjX21vZC5odGNwX2NhLm1heFJU
VCtNU0VDX1RPX1RJQ0tTKDIwKSkKKwkJaWYgKG5ldC0+Y2NfbW9kLmh0Y3BfY2EubWF4UlRUIDwg
c3J0dCAmJiBzcnR0IDw9IG5ldC0+Y2NfbW9kLmh0Y3BfY2EubWF4UlRUK3NjdHBfbXNlY3NfdG9f
dGlja3MoMjApKQogCQkJbmV0LT5jY19tb2QuaHRjcF9jYS5tYXhSVFQgPSBzcnR0OwogCX0KIH0K
QEAgLTIwNjAsNyArMjA2MCw3IEBAIGh0Y3BfYmV0YV91cGRhdGUoc3RydWN0IGh0Y3AgKmNhLCB1
aW50MzJfdCBtaW5SVFQsIHVpbnQzMl90IG1heFJUVCkKIAkJfQogCX0KIAotCWlmIChjYS0+bW9k
ZXN3aXRjaCAmJiBtaW5SVFQgPiAodWludDMyX3QpTVNFQ19UT19USUNLUygxMCkgJiYgbWF4UlRU
KSB7CisJaWYgKGNhLT5tb2Rlc3dpdGNoICYmIG1pblJUVCA+IHNjdHBfbXNlY3NfdG9fdGlja3Mo
MTApICYmIG1heFJUVCkgewogCQljYS0+YmV0YSA9IChtaW5SVFQ8PDcpL21heFJUVDsKIAkJaWYg
KGNhLT5iZXRhIDwgQkVUQV9NSU4pCiAJCQljYS0+YmV0YSA9IEJFVEFfTUlOOwpAQCAtMjQxMCw3
ICsyNDEwLDcgQEAgc2N0cF9odGNwX2N3bmRfdXBkYXRlX2FmdGVyX2Vjbl9lY2hvKHN0cnVjdCBz
Y3RwX3RjYiAqc3RjYiwKIAogY29uc3Qgc3RydWN0IHNjdHBfY2NfZnVuY3Rpb25zIHNjdHBfY2Nf
ZnVuY3Rpb25zW10gPSB7CiB7Ci0jaWYgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChf
X1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChf
X01JTkdXMzJfXykKIAlzY3RwX3NldF9pbml0aWFsX2NjX3BhcmFtLAogCXNjdHBfY3duZF91cGRh
dGVfYWZ0ZXJfc2FjaywKIAlzY3RwX2N3bmRfdXBkYXRlX2V4aXRfcGZfY29tbW9uLApAQCAtMjQz
MSw3ICsyNDMxLDcgQEAgY29uc3Qgc3RydWN0IHNjdHBfY2NfZnVuY3Rpb25zIHNjdHBfY2NfZnVu
Y3Rpb25zW10gPSB7CiAjZW5kaWYKIH0sCiB7Ci0jaWYgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwg
ZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAh
ZGVmaW5lZChfX01JTkdXMzJfXykKIAlzY3RwX3NldF9pbml0aWFsX2NjX3BhcmFtLAogCXNjdHBf
aHNfY3duZF91cGRhdGVfYWZ0ZXJfc2FjaywKIAlzY3RwX2N3bmRfdXBkYXRlX2V4aXRfcGZfY29t
bW9uLApAQCAtMjQ1Miw3ICsyNDUyLDcgQEAgY29uc3Qgc3RydWN0IHNjdHBfY2NfZnVuY3Rpb25z
IHNjdHBfY2NfZnVuY3Rpb25zW10gPSB7CiAjZW5kaWYKIH0sCiB7Ci0jaWYgZGVmaW5lZChfX1dp
bmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQo
X1dJTjMyKSAmJiAhZGVmaW5lZChfX01JTkdXMzJfXykKIAlzY3RwX2h0Y3Bfc2V0X2luaXRpYWxf
Y2NfcGFyYW0sCiAJc2N0cF9odGNwX2N3bmRfdXBkYXRlX2FmdGVyX3NhY2ssCiAJc2N0cF9jd25k
X3VwZGF0ZV9leGl0X3BmX2NvbW1vbiwKQEAgLTI0NzMsNyArMjQ3Myw3IEBAIGNvbnN0IHN0cnVj
dCBzY3RwX2NjX2Z1bmN0aW9ucyBzY3RwX2NjX2Z1bmN0aW9uc1tdID0gewogI2VuZGlmCiB9LAog
ewotI2lmIGRlZmluZWQoX19XaW5kb3dzX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2lu
ZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19NSU5HVzMyX18pCiAJc2N0
cF9zZXRfcnRjY19pbml0aWFsX2NjX3BhcmFtLAogCXNjdHBfY3duZF91cGRhdGVfcnRjY19hZnRl
cl9zYWNrLAogCXNjdHBfY3duZF91cGRhdGVfZXhpdF9wZl9jb21tb24sCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNy
c2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9jb25zdGFudHMuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Vz
cnNjdHBsaWIvbmV0aW5ldC9zY3RwX2NvbnN0YW50cy5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9k
ZSAxMDA3NTUKaW5kZXggZjlhODdhNDdiMmExLi5iOTMyZDdmMTkxNDkKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIv
dXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfY29uc3RhbnRzLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0
cGxpYi9uZXRpbmV0L3NjdHBfY29uc3RhbnRzLmgKQEAgLTMyLDE1ICszMiwxNSBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZmRlZiBfX0ZyZWVCU0RfXwor
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5j
bHVkZSA8c3lzL2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQv
c2N0cF9jb25zdGFudHMuaCAzMjg0NzggMjAxOC0wMS0yNyAxMzo0Njo1NVogdHVleGVuICQiKTsK
K19fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX2NvbnN0YW50cy5oIDM2
MzQ0MCAyMDIwLTA3LTIzIDAxOjM1OjI0WiB0dWV4ZW4gJCIpOwogI2VuZGlmCiAKICNpZm5kZWYg
X05FVElORVRfU0NUUF9DT05TVEFOVFNfSF8KICNkZWZpbmUgX05FVElORVRfU0NUUF9DT05TVEFO
VFNfSF8KIAotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVk
KF9XSU4zMikgJiYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogZXh0ZXJuIHZvaWQgZ2V0d2ludGlt
ZW9mZGF5KHN0cnVjdCB0aW1ldmFsICp0dik7CiAjZW5kaWYKIApAQCAtNDc4LDEwICs0NzgsMTQg
QEAgZXh0ZXJuIHZvaWQgZ2V0d2ludGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICp0dik7CiAjZGVm
aW5lIFNDVFBfU1RBVEVfSU5fQUNDRVBUX1FVRVVFICAgICAgMHgxMDAwCiAjZGVmaW5lIFNDVFBf
U1RBVEVfTUFTSwkJCTB4MDA3ZgogCi0jZGVmaW5lIFNDVFBfR0VUX1NUQVRFKGFzb2MpCSgoYXNv
YyktPnN0YXRlICYgU0NUUF9TVEFURV9NQVNLKQotI2RlZmluZSBTQ1RQX1NFVF9TVEFURShhc29j
LCBuZXdzdGF0ZSkgICgoYXNvYyktPnN0YXRlID0gKChhc29jKS0+c3RhdGUgJiB+U0NUUF9TVEFU
RV9NQVNLKSB8ICBuZXdzdGF0ZSkKLSNkZWZpbmUgU0NUUF9DTEVBUl9TVUJTVEFURShhc29jLCBz
dWJzdGF0ZSkgKChhc29jKS0+c3RhdGUgJj0gfnN1YnN0YXRlKQotI2RlZmluZSBTQ1RQX0FERF9T
VUJTVEFURShhc29jLCBzdWJzdGF0ZSkgKChhc29jKS0+c3RhdGUgfD0gc3Vic3RhdGUpCisjZGVm
aW5lIFNDVFBfR0VUX1NUQVRFKF9zdGNiKSBcCisJKChfc3RjYiktPmFzb2Muc3RhdGUgJiBTQ1RQ
X1NUQVRFX01BU0spCisjZGVmaW5lIFNDVFBfU0VUX1NUQVRFKF9zdGNiLCBfc3RhdGUpIFwKKwlz
Y3RwX3NldF9zdGF0ZShfc3RjYiwgX3N0YXRlKQorI2RlZmluZSBTQ1RQX0NMRUFSX1NVQlNUQVRF
KF9zdGNiLCBfc3Vic3RhdGUpIFwKKwkoX3N0Y2IpLT5hc29jLnN0YXRlICY9IH4oX3N1YnN0YXRl
KQorI2RlZmluZSBTQ1RQX0FERF9TVUJTVEFURShfc3RjYiwgX3N1YnN0YXRlKSBcCisJc2N0cF9h
ZGRfc3Vic3RhdGUoX3N0Y2IsIF9zdWJzdGF0ZSkKIAogLyogU0NUUCByZWFjaGFiaWxpdHkgc3Rh
dGUgZm9yIGVhY2ggYWRkcmVzcyAqLwogI2RlZmluZSBTQ1RQX0FERFJfUkVBQ0hBQkxFCQkweDAw
MQpAQCAtNTQ3LDIwICs1NTEsMTkgQEAgZXh0ZXJuIHZvaWQgZ2V0d2ludGltZW9mZGF5KHN0cnVj
dCB0aW1ldmFsICp0dik7CiAjZGVmaW5lIFNDVFBfVElNRVJfVFlQRV9BU0NPTkYJCTEwCiAjZGVm
aW5lIFNDVFBfVElNRVJfVFlQRV9TSFVURE9XTkdVQVJECTExCiAjZGVmaW5lIFNDVFBfVElNRVJf
VFlQRV9BVVRPQ0xPU0UJMTIKLSNkZWZpbmUgU0NUUF9USU1FUl9UWVBFX0VWRU5UV0FLRQkxMwot
I2RlZmluZSBTQ1RQX1RJTUVSX1RZUEVfU1RSUkVTRVQgICAgICAgIDE0Ci0jZGVmaW5lIFNDVFBf
VElNRVJfVFlQRV9JTlBLSUxMICAgICAgICAgMTUKLSNkZWZpbmUgU0NUUF9USU1FUl9UWVBFX0FT
T0NLSUxMICAgICAgICAxNgotI2RlZmluZSBTQ1RQX1RJTUVSX1RZUEVfQUREUl9XUSAgICAgICAg
IDE3Ci0jZGVmaW5lIFNDVFBfVElNRVJfVFlQRV9QUklNX0RFTEVURUQgICAgMTgKKyNkZWZpbmUg
U0NUUF9USU1FUl9UWVBFX1NUUlJFU0VUCTEzCisjZGVmaW5lIFNDVFBfVElNRVJfVFlQRV9JTlBL
SUxMCQkxNAorI2RlZmluZSBTQ1RQX1RJTUVSX1RZUEVfQVNPQ0tJTEwJMTUKKyNkZWZpbmUgU0NU
UF9USU1FUl9UWVBFX0FERFJfV1EJCTE2CisjZGVmaW5lIFNDVFBfVElNRVJfVFlQRV9QUklNX0RF
TEVURUQJMTcKIC8qIGFkZCBuZXcgdGltZXJzIGhlcmUgLSBhbmQgaW5jcmVtZW50IExBU1QgKi8K
LSNkZWZpbmUgU0NUUF9USU1FUl9UWVBFX0xBU1QgICAgICAgICAgICAxOQorI2RlZmluZSBTQ1RQ
X1RJTUVSX1RZUEVfTEFTVAkJMTgKIAogI2RlZmluZSBTQ1RQX0lTX1RJTUVSX1RZUEVfVkFMSUQo
dCkJKCgodCkgPiBTQ1RQX1RJTUVSX1RZUEVfTk9ORSkgJiYgXAogCQkJCQkgKCh0KSA8IFNDVFBf
VElNRVJfVFlQRV9MQVNUKSkKIAogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5l
ZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAvKiBOdW1iZXIgb2YgdGlj
a3MgdG8gcnVuIHRoZSBtYWluIHRpbWVyIGF0IGluIG1zZWMgKi8KICNkZWZpbmUgU0NUUF9NQUlO
X1RJTUVSX0RFRkFVTFQJCTEwCiAjZW5kaWYKQEAgLTU4MywyMiArNTg2LDcgQEAgZXh0ZXJuIHZv
aWQgZ2V0d2ludGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICp0dik7CiAgKiBudW1iZXIgb2YgY2x1
c3RlcnMgYXMgYSBiYXNlLiBUaGlzIHdheSBoaWdoIGJhbmR3aWR0aCBlbnZpcm9ubWVudHMgd2ls
bAogICogbm90IGdldCBpbXBhY3RlZCBieSB0aGUgbG93ZXIgYmFuZHdpZHRoIHNlbmRpbmcgYSBi
dW5jaCBvZiAxIGJ5dGUgY2h1bmtzCiAgKi8KLSNpZmRlZiBfX1BhbmRhX18KLSNkZWZpbmUgU0NU
UF9BU09DX01BWF9DSFVOS1NfT05fUVVFVUUgMTAyNDAKLSNlbHNlCiAjZGVmaW5lIFNDVFBfQVNP
Q19NQVhfQ0hVTktTX09OX1FVRVVFIDUxMgotI2VuZGlmCi0KLQotLyogVGhlIGNvbnZlcnNpb24g
ZnJvbSB0aW1lIHRvIHRpY2tzIGFuZCB2aWNlIHZlcnNhIGlzIGRvbmUgYnkgcm91bmRpbmcKLSAq
IHVwd2FyZHMuIFRoaXMgd2F5IHdlIGNhbiB0ZXN0IGluIHRoZSBjb2RlIHRoZSB0aW1lIHRvIGJl
IHBvc2l0aXZlIGFuZAotICoga25vdyB0aGF0IHRoaXMgY29ycmVzcG9uZHMgdG8gYSBwb3NpdGl2
ZSBudW1iZXIgb2YgdGlja3MuCi0gKi8KLSNkZWZpbmUgTVNFQ19UT19USUNLUyh4KSAoKGh6ID09
IDEwMDApID8geCA6ICgoKCh4KSAqIGh6KSArIDk5OSkgLyAxMDAwKSkKLSNkZWZpbmUgVElDS1Nf
VE9fTVNFQyh4KSAoKGh6ID09IDEwMDApID8geCA6ICgoKCh4KSAqIDEwMDApICsgKGh6IC0gMSkp
IC8gaHopKQotCi0jZGVmaW5lIFNFQ19UT19USUNLUyh4KSAoKHgpICogaHopCi0jZGVmaW5lIFRJ
Q0tTX1RPX1NFQyh4KSAoKCh4KSArIChoeiAtIDEpKSAvIGh6KQogCiAvKgogICogQmFzaWNhbGx5
IHRoZSBtaW5pbXVtIGFtb3VudCBvZiB0aW1lIGJlZm9yZSBJIGRvIGEgZWFybHkgRlIuIE1ha2lu
ZyB0aGlzCkBAIC03NjUsNyArNzUzLDExIEBAIGV4dGVybiB2b2lkIGdldHdpbnRpbWVvZmRheShz
dHJ1Y3QgdGltZXZhbCAqdHYpOwogI2RlZmluZSBTQ1RQX0RFRkFVTFRfU1BMSVRfUE9JTlRfTUlO
IDI5MDQKIAogLyogTWF4aW11bSBsZW5ndGggb2YgZGlhZ25vc3RpYyBpbmZvcm1hdGlvbiBpbiBl
cnJvciBjYXVzZXMgKi8KKyNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjZGVmaW5lIFNDVFBf
RElBR19JTkZPX0xFTiAyNTYKKyNlbHNlCiAjZGVmaW5lIFNDVFBfRElBR19JTkZPX0xFTiAxMjgK
KyNlbmRpZgogCiAvKiBBQk9SVCBDT0RFUyBhbmQgb3RoZXIgdGVsbC10YWxlIGxvY2F0aW9uCiAg
KiBjb2RlcyBhcmUgZ2VuZXJhdGVkIGJ5IGFkZGluZyB0aGUgYmVsb3cKQEAgLTc4Myw5ICs3NzUs
OCBAQCBleHRlcm4gdm9pZCBnZXR3aW50aW1lb2ZkYXkoc3RydWN0IHRpbWV2YWwgKnR2KTsKICNk
ZWZpbmUgU0NUUF9GUk9NX1NDVFBfQVNDT05GICAgICAgIDB4ODAwMDAwMDAKICNkZWZpbmUgU0NU
UF9GUk9NX1NDVFBfT1VUUFVUICAgICAgIDB4OTAwMDAwMDAKICNkZWZpbmUgU0NUUF9GUk9NX1ND
VFBfUEVFTE9GRiAgICAgIDB4YTAwMDAwMDAKLSNkZWZpbmUgU0NUUF9GUk9NX1NDVFBfUEFOREEg
ICAgICAgIDB4YjAwMDAwMDAKLSNkZWZpbmUgU0NUUF9GUk9NX1NDVFBfU1lTQ1RMICAgICAgIDB4
YzAwMDAwMDAKLSNkZWZpbmUgU0NUUF9GUk9NX1NDVFBfQ0NfRlVOQ1RJT05TIDB4ZDAwMDAwMDAK
KyNkZWZpbmUgU0NUUF9GUk9NX1NDVFBfU1lTQ1RMICAgICAgIDB4YjAwMDAwMDAKKyNkZWZpbmUg
U0NUUF9GUk9NX1NDVFBfQ0NfRlVOQ1RJT05TIDB4YzAwMDAwMDAKIAogLyogTG9jYXRpb24gSUQn
cyAqLwogI2RlZmluZSBTQ1RQX0xPQ18xICAweDAwMDAwMDAxCkBAIC04MjMsNyArODE0LDggQEAg
ZXh0ZXJuIHZvaWQgZ2V0d2ludGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICp0dik7CiAjZGVmaW5l
IFNDVFBfTE9DXzMzIDB4MDAwMDAwMjEKICNkZWZpbmUgU0NUUF9MT0NfMzQgMHgwMDAwMDAyMgog
I2RlZmluZSBTQ1RQX0xPQ18zNSAweDAwMDAwMDIzCi0KKyNkZWZpbmUgU0NUUF9MT0NfMzYgMHgw
MDAwMDAyNAorI2RlZmluZSBTQ1RQX0xPQ18zNyAweDAwMDAwMDI1CiAKIC8qIEZyZWUgYXNzb2Mg
Y29kZXMgKi8KICNkZWZpbmUgU0NUUF9OT1JNQUxfUFJPQyAgICAgIDAKQEAgLTg3MCw3ICs4NjIs
NyBAQCBleHRlcm4gdm9pZCBnZXR3aW50aW1lb2ZkYXkoc3RydWN0IHRpbWV2YWwgKnR2KTsKICNk
ZWZpbmUgU0NUUF9DSFVOS1FVRVVFX1NDQUxFIDEwCiAjZW5kaWYKIAotI2lmZGVmIF9fRnJlZUJT
RF9fCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
IC8qIGNsb2NrIHZhcmlhbmNlIGlzIDEgbXMgKi8KICNkZWZpbmUgU0NUUF9DTE9DS19HUkFOVUxB
UklUWQkxCiAjZWxzZQpAQCAtOTc3LDcgKzk2OSw3IEBAIGV4dGVybiB2b2lkIGdldHdpbnRpbWVv
ZmRheShzdHJ1Y3QgdGltZXZhbCAqdHYpOwogCiAvKi0KICAqIGRlZmluZXMgZm9yIHNvY2tldCBs
b2NrIHN0YXRlcy4KLSAqIFVzZWQgYnkgX19BUFBMRV9fIGFuZCBTQ1RQX1NPX0xPQ0tfVEVTVElO
RworICogVXNlZCBieSBfX0FQUExFX18KICAqLwogI2RlZmluZSBTQ1RQX1NPX0xPQ0tFRAkJMQog
I2RlZmluZSBTQ1RQX1NPX05PVF9MT0NLRUQJMApAQCAtMTAwNCw4ICs5OTYsMTEgQEAgZXh0ZXJu
IHZvaWQgZ2V0d2ludGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICp0dik7CiAgICAgKCgoKHVpbnQ4
X3QgKikmKGEpLT5zX2FkZHIpWzBdID09IDE2OSkgJiYgXAogICAgICAoKCh1aW50OF90ICopJihh
KS0+c19hZGRyKVsxXSA9PSAyNTQpKQogCisvKiBNYXhpbXVtIHNpemUgb2Ygb3B0dmFsIGZvciBJ
UFBST1RPX1NDVFAgbGV2ZWwgc29ja2V0IG9wdGlvbnMuICovCisjZGVmaW5lIFNDVFBfU09DS0VU
X09QVElPTl9MSU1JVCAoNjQgKiAxMDI0KQorCiAjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQot
I2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikK
ICNkZWZpbmUgU0NUUF9HRVRUSU1FX1RJTUVWQUwoeCkJZ2V0d2ludGltZW9mZGF5KHgpCiAjZGVm
aW5lIFNDVFBfR0VUUFRJTUVfVElNRVZBTCh4KSBnZXR3aW50aW1lb2ZkYXkoeCkgLyogdGhpcyBk
b2Vzbid0IHNlZW0gdG8gZXZlciBiZSB1c2VkLi4gKi8KICNlbHNlCkBAIC0xMDI5LDExICsxMDI0
LDExIEBAIGRvIHsgXAogCX0gXAogfSB3aGlsZSAoMCkKIAotI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogI2RlZmluZSBzY3RwX3Nvd3dha2V1cF9sb2NrZWQoaW5wLCBzbykgXAogZG8g
eyBcCiAJaWYgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0RPTlRfV0FLRSkgeyBc
Ci0gICAgICAgICAgICAgICAgU09DS0JVRl9VTkxPQ0soJigoc28pLT5zb19zbmQpKTsgXAorCQlT
T0NLQlVGX1VOTE9DSygmKChzbyktPnNvX3NuZCkpOyBcCiAJCWlucC0+c2N0cF9mbGFncyB8PSBT
Q1RQX1BDQl9GTEFHU19XQUtFT1VUUFVUOyBcCiAJfSBlbHNlIHsgXAogCQlzb3d3YWtldXBfbG9j
a2VkKHNvKTsgXApAQCAtMTA0Myw3ICsxMDM4LDcgQEAgZG8geyBcCiAjZGVmaW5lIHNjdHBfc293
d2FrZXVwX2xvY2tlZChpbnAsIHNvKSBcCiBkbyB7IFwKIAlpZiAoaW5wLT5zY3RwX2ZsYWdzICYg
U0NUUF9QQ0JfRkxBR1NfRE9OVF9XQUtFKSB7IFwKLSAgICAgICAgICAgICAgICBTT0NLQlVGX1VO
TE9DSygmKChzbyktPnNvX3NuZCkpOyBcCisJCVNPQ0tCVUZfVU5MT0NLKCYoKHNvKS0+c29fc25k
KSk7IFwKIAkJaW5wLT5zY3RwX2ZsYWdzIHw9IFNDVFBfUENCX0ZMQUdTX1dBS0VPVVRQVVQ7IFwK
IAl9IGVsc2UgeyBcCiAJCXNvd3dha2V1cChzbyk7IFwKQEAgLTEwNjAsMTIgKzEwNTUsMTIgQEAg
ZG8geyBcCiAJfSBcCiB9IHdoaWxlICgwKQogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwg
ZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAjZGVmaW5lIHNjdHBfc29yd2FrZXVwX2xvY2tlZChpbnAsIHNvKSBcCiBkbyB7IFwKIAlp
ZiAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfRE9OVF9XQUtFKSB7IFwKIAkJaW5w
LT5zY3RwX2ZsYWdzIHw9IFNDVFBfUENCX0ZMQUdTX1dBS0VJTlBVVDsgXAotICAgICAgICAgICAg
ICAgIFNPQ0tCVUZfVU5MT0NLKCYoKHNvKS0+c29fcmN2KSk7IFwKKwkJU09DS0JVRl9VTkxPQ0so
Jigoc28pLT5zb19yY3YpKTsgXAogCX0gZWxzZSB7IFwKIAkJc29yd2FrZXVwX2xvY2tlZChzbyk7
IFwKIAl9IFwKQEAgLTEwNzYsNyArMTA3MSw3IEBAIGRvIHsgXAogZG8geyBcCiAJaWYgKGlucC0+
c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0RPTlRfV0FLRSkgeyBcCiAJCWlucC0+c2N0cF9m
bGFncyB8PSBTQ1RQX1BDQl9GTEFHU19XQUtFSU5QVVQ7IFwKLSAgICAgICAgICAgICAgICBTT0NL
QlVGX1VOTE9DSygmKChzbyktPnNvX3JjdikpOyBcCisJCVNPQ0tCVUZfVU5MT0NLKCYoKHNvKS0+
c29fcmN2KSk7IFwKIAl9IGVsc2UgeyBcCiAJCXNvcndha2V1cChzbyk7IFwKIAl9IFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNy
c2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2NyYzMyLmMgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9jcmMzMi5jCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9k
ZSAxMDA3NTUKaW5kZXggMGJlMDc5NWNmMmE2Li4wYjVhMDZlMDY3NjAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIv
dXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfY3JjMzIuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGli
L25ldGluZXQvc2N0cF9jcmMzMi5jCkBAIC0zMiwyMyArMzIsMjIgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZkZWYgX19GcmVlQlNEX18KKyNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPHN5
cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfY3Jj
MzIuYyAzMjcyMDAgMjAxNy0xMi0yNiAxMjozNTowMlogdHVleGVuICQiKTsKK19fRkJTRElEKCIk
RnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX2NyYzMyLmMgMzYyNDk4IDIwMjAtMDYtMjIg
MTQ6MzY6MTRaIHR1ZXhlbiAkIik7CiAKICNpbmNsdWRlICJvcHRfc2N0cC5oIgogCi0jaWZkZWYg
U0NUUAotI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9vcy5oPgotI2luY2x1ZGUgPG5ldGluZXQvc2N0
cC5oPgotI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9jcmMzMi5oPgotI2luY2x1ZGUgPG5ldGluZXQv
c2N0cF9wY2IuaD4KLSNlbHNlCiAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CiAjaW5jbHVkZSA8c3lz
L3N5c3RtLmg+CisjaW5jbHVkZSA8c3lzL2dzYl9jcmMzMi5oPgogI2luY2x1ZGUgPHN5cy9tYnVm
Lmg+CiAKKyNpbmNsdWRlIDxuZXRpbmV0L3NjdHAuaD4KICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBf
Y3JjMzIuaD4KKyNpZiBkZWZpbmVkKFNDVFApIHx8IGRlZmluZWQoU0NUUF9TVVBQT1JUKQorI2lu
Y2x1ZGUgPG5ldGluZXQvc2N0cF9vcy5oPgorI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9wY2IuaD4K
ICNlbmRpZgogI2Vsc2UKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfb3MuaD4KQEAgLTU3LDcgKzU2
LDcgQEAgX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfY3JjMzIuYyAz
MjcyMDAgMjAxNy0xMi0yNiAxMjozNTowMlogdHUKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfcGNi
Lmg+CiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmICEoZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAvKioKICAqCiAgKiBSb3V0
aW5lIERlc2NyaXB0aW9uOgpAQCAtNzk2LDggKzc5NSwxMSBAQCBzY3RwX2NhbGN1bGF0ZV9ja3N1
bShzdHJ1Y3QgbWJ1ZiAqbSwgdWludDMyX3Qgb2Zmc2V0KQogCXJldHVybiAoYmFzZSk7CiB9CiAK
LSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQotI2lmZGVmIFNDVFAKKyNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmIGRlZmluZWQoU0NUUCkgfHwg
ZGVmaW5lZChTQ1RQX1NVUFBPUlQpCisKK1ZORVRfREVGSU5FKHN0cnVjdCBzY3RwX2Jhc2VfaW5m
bywgc3lzdGVtX2Jhc2VfaW5mbyk7CisKIC8qCiAgKiBDb21wdXRlIGFuZCBpbnNlcnQgdGhlIFND
VFAgY2hlY2tzdW0gaW4gbmV0d29yayBieXRlIG9yZGVyIGZvciBhIGdpdmVuCiAgKiBtYnVmIGNo
YWluIG0gd2hpY2ggY29udGFpbnMgYW4gU0NUUCBwYWNrZXQgc3RhcnRpbmcgYXQgb2Zmc2V0LgpA
QCAtODEyLDE3ICs4MTQsMTcgQEAgc2N0cF9kZWxheWVkX2Nrc3VtKHN0cnVjdCBtYnVmICptLCB1
aW50MzJfdCBvZmZzZXQpCiAJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfc2VuZHN3Y3JjKTsKIAlvZmZz
ZXQgKz0gb2Zmc2V0b2Yoc3RydWN0IHNjdHBoZHIsIGNoZWNrc3VtKTsKIAotCWlmIChvZmZzZXQg
KyBzaXplb2YodWludDMyX3QpID4gKHVpbnQzMl90KShtLT5tX2xlbikpIHsKKwlpZiAob2Zmc2V0
ICsgc2l6ZW9mKHVpbnQzMl90KSA+ICh1aW50MzJfdCkobS0+bV9wa3RoZHIubGVuKSkgewogI2lm
ZGVmIElOVkFSSUFOVFMKLQkJcGFuaWMoInNjdHBfZGVsYXllZF9ja3N1bSgpOiBtLT5tX2xlbjog
JWQsIG9mZnNldDogJXUuIiwKLQkJICAgICAgbS0+bV9sZW4sIG9mZnNldCk7CisJCXBhbmljKCJz
Y3RwX2RlbGF5ZWRfY2tzdW0oKTogbS0+bV9wa3RoZHIubGVuOiAlZCwgb2Zmc2V0OiAldS4iLAor
CQkgICAgICBtLT5tX3BrdGhkci5sZW4sIG9mZnNldCk7CiAjZWxzZQotCQlTQ1RQX1BSSU5URigi
c2N0cF9kZWxheWVkX2Nrc3VtKCk6IG0tPm1fbGVuOiAlZCwgb2Zmc2V0OiAldS5cbiIsCi0JCSAg
ICAgICAgICAgIG0tPm1fbGVuLCBvZmZzZXQpOworCQlTQ1RQX1BSSU5URigic2N0cF9kZWxheWVk
X2Nrc3VtKCk6IG0tPm1fcGt0aGRyLmxlbjogJWQsIG9mZnNldDogJXUuXG4iLAorCQkgICAgICAg
ICAgICBtLT5tX3BrdGhkci5sZW4sIG9mZnNldCk7CiAjZW5kaWYKIAkJcmV0dXJuOwogCX0KLQkq
KHVpbnQzMl90ICopKG0tPm1fZGF0YSArIG9mZnNldCkgPSBjaGVja3N1bTsKKwltX2NvcHliYWNr
KG0sIChpbnQpb2Zmc2V0LCAoaW50KXNpemVvZih1aW50MzJfdCksIChjYWRkcl90KSZjaGVja3N1
bSk7CiB9CiAjZW5kaWYKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9u
ZXRpbmV0L3NjdHBfY3JjMzIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2Ny
YzMyLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCBhYzIwYzEwMzQxZmEu
LjVlNzZmZjIxYmY5NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9jcmMz
Mi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
dXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2NyYzMyLmgKQEAgLTMy
LDkgKzMyLDkgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0j
aWZkZWYgX19GcmVlQlNEX18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNE
OiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfY3JjMzIuaCAzMjcyMDAgMjAxNy0xMi0yNiAxMjozNTow
MlogdHVleGVuICQiKTsKK19fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3Rw
X2NyYzMyLmggMzYyMzM4IDIwMjAtMDYtMTggMTk6MzI6MzRaIG1hcmtqICQiKTsKICNlbmRpZgog
CiAjaWZuZGVmIF9ORVRJTkVUX1NDVFBfQ1JDMzJfSF8KQEAgLTQyLDggKzQyLDggQEAgX19GQlNE
SUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfY3JjMzIuaCAzMjcyMDAgMjAxNy0x
Mi0yNiAxMjozNTowMlogdHUKIAogI2lmIGRlZmluZWQoX0tFUk5FTCkKIHVpbnQzMl90IHNjdHBf
Y2FsY3VsYXRlX2Nrc3VtKHN0cnVjdCBtYnVmICosIHVpbnQzMl90KTsKLSNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKQotI2lmZGVmIFNDVFAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQorI2lmIGRlZmluZWQoU0NUUCkgfHwgZGVmaW5lZChTQ1RQX1NV
UFBPUlQpCiB2b2lkIHNjdHBfZGVsYXllZF9ja3N1bShzdHJ1Y3QgbWJ1ZiAqLCB1aW50MzJfdCBv
ZmZzZXQpOwogI2VuZGlmCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIv
bmV0aW5ldC9zY3RwX2hlYWRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBf
aGVhZGVyLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA2MDM1ZDljYmRi
YmQuLjYwMjkyMWQwZTJiZAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9o
ZWFkZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9oZWFkZXIuaApA
QCAtMzIsNyArMzIsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpZmRlZiBfX0ZyZWVCU0RfXworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+CiBfX0ZCU0RJRCgiJEZy
ZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9oZWFkZXIuaCAzMDk2ODIgMjAxNi0xMi0wNyAx
OTozMDo1OVogdHVleGVuICQiKTsKICNlbmRpZgpAQCAtNDAsMTYgKzQwLDE2IEBAIF9fRkJTRElE
KCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX2hlYWRlci5oIDMwOTY4MiAyMDE2LTEy
LTA3IDE5OjMwOjU5WiB0CiAjaWZuZGVmIF9ORVRJTkVUX1NDVFBfSEVBREVSX0hfCiAjZGVmaW5l
IF9ORVRJTkVUX1NDVFBfSEVBREVSX0hfCiAKLSNpZiBkZWZpbmVkKF9fV2luZG93c19fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPHBhY2tvbi5oPgogI2VuZGlmCi0jaWYg
IWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiAhZGVmaW5lZChfV0lOMzIpCiAj
aW5jbHVkZSA8c3lzL3RpbWUuaD4KICNlbmRpZgogI2luY2x1ZGUgPG5ldGluZXQvc2N0cC5oPgog
I2luY2x1ZGUgPG5ldGluZXQvc2N0cF9jb25zdGFudHMuaD4KIAotI2lmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX29zX1dpbmRvd3MpCisjaWYgIWRlZmluZWQoX1dJTjMyKQogI2RlZmluZSBTQ1RQX1BB
Q0tFRCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKQogI2Vsc2UKICNwcmFnbWEgcGFjayAocHVzaCwg
MSkKQEAgLTYwMSwxMCArNjAxLDEwIEBAIHN0cnVjdCBzY3RwX2F1dGhfY2h1bmsgewogI2RlZmlu
ZSBTQ1RQX01JTl9WNF9PVkVSSEVBRCAoc2l6ZW9mKHN0cnVjdCBpcCkgKyBcCiAJCQkgICAgICBz
aXplb2Yoc3RydWN0IHNjdHBoZHIpKQogCi0jaWYgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiBk
ZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxwYWNr
b2ZmLmg+CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYg
ZGVmaW5lZChfV0lOMzIpICYmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNwcmFnbWEgcGFjayhw
b3ApCiAjZW5kaWYKICN1bmRlZiBTQ1RQX1BBQ0tFRApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNy
c2N0cGxpYi9uZXRpbmV0L3NjdHBfaW5kYXRhLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGlu
ZXQvc2N0cF9pbmRhdGEuYwpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDJm
YmFjMmZmMGJmNy4uODA2ZjYzMDkyN2FhCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5l
dC9zY3RwX2luZGF0YS5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2lu
ZGF0YS5jCkBAIC0zMiwxMyArMzIsMTMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWZkZWYgX19GcmVlQlNEX18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19G
QlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfaW5kYXRhLmMgMzMzOTc5IDIw
MTgtMDUtMjEgMTQ6NTE6MjBaIHR1ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQv
c3lzL25ldGluZXQvc2N0cF9pbmRhdGEuYyAzNjM0NDAgMjAyMC0wNy0yMyAwMTozNToyNFogdHVl
eGVuICQiKTsKICNlbmRpZgogCiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX29zLmg+Ci0jaWZkZWYg
X19GcmVlQlNEX18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogI2luY2x1ZGUgPHN5cy9wcm9jLmg+CiAjZW5kaWYKICNpbmNsdWRlIDxuZXRpbmV0
L3NjdHBfdmFyLmg+CkBAIC01NSw3ICs1NSw3IEBAIF9fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9z
eXMvbmV0aW5ldC9zY3RwX2luZGF0YS5jIDMzMzk3OSAyMDE4LTA1LTIxIDE0OjUxOjIwWiB0CiAj
aW5jbHVkZSA8bmV0aW5ldC9zY3RwX2JzZF9hZGRyLmg+CiAjaW5jbHVkZSA8bmV0aW5ldC9zY3Rw
X2lucHV0Lmg+CiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX2NyYzMyLmg+Ci0jaWZkZWYgX19GcmVl
QlNEX18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9sb2NrX2JzZC5oPgogI2VuZGlmCiAvKgpAQCAtNzIs
NyArNzIsNyBAQCBzY3RwX2FkZF9jaGtfdG9fY29udHJvbChzdHJ1Y3Qgc2N0cF9xdWV1ZWRfdG9f
cmVhZCAqY29udHJvbCwKIAkJCXN0cnVjdCBzY3RwX3N0cmVhbV9pbiAqc3RybSwKIAkJCXN0cnVj
dCBzY3RwX3RjYiAqc3RjYiwKIAkJCXN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAotCQkJ
c3RydWN0IHNjdHBfdG1pdF9jaHVuayAqY2hrLCBpbnQgbG9ja19oZWxkKTsKKwkJCXN0cnVjdCBz
Y3RwX3RtaXRfY2h1bmsgKmNoaywgaW50IGhvbGRfcmxvY2spOwogCiAKIHZvaWQKQEAgLTE2OSw2
ICsxNjksOSBAQCBzY3RwX2J1aWxkX3JlYWRxX2VudHJ5KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwK
IAlyZWFkX3F1ZXVlX2UtPmRhdGEgPSBkbTsKIAlyZWFkX3F1ZXVlX2UtPnN0Y2IgPSBzdGNiOwog
CXJlYWRfcXVldWVfZS0+cG9ydF9mcm9tID0gc3RjYi0+cnBvcnQ7CisJaWYgKHN0Y2ItPmFzb2Mu
c3RhdGUgJiBTQ1RQX1NUQVRFX0FCT1VUX1RPX0JFX0ZSRUVEKSB7CisJCXJlYWRfcXVldWVfZS0+
ZG9fbm90X3JlZl9zdGNiID0gMTsKKwl9CiBmYWlsZWRfYnVpbGQ6CiAJcmV0dXJuIChyZWFkX3F1
ZXVlX2UpOwogfQpAQCAtMTgwLDcgKzE4Myw3IEBAIHNjdHBfYnVpbGRfY3RsX25jaHVuayhzdHJ1
Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF9zbmRyY3ZpbmZvICpzaW5mbykKIAlzdHJ1
Y3Qgc2N0cF9zbmRyY3ZpbmZvICpvdXRpbmZvOwogCXN0cnVjdCBzY3RwX3JjdmluZm8gKnJjdmlu
Zm87CiAJc3RydWN0IHNjdHBfbnh0aW5mbyAqbnh0aW5mbzsKLSNpZiBkZWZpbmVkKF9fVXNlcnNw
YWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJV1NBQ01TR0hEUiAqY21oOwog
I2Vsc2UKIAlzdHJ1Y3QgY21zZ2hkciAqY21oOwpAQCAtMjI5LDcgKzIzMiw3IEBAIHNjdHBfYnVp
bGRfY3RsX25jaHVuayhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF9zbmRyY3Zp
bmZvICpzaW5mbykKIAlTQ1RQX0JVRl9MRU4ocmV0KSA9IDA7CiAKIAkvKiBXZSBuZWVkIGEgQ01T
RyBoZWFkZXIgZm9sbG93ZWQgYnkgdGhlIHN0cnVjdCAqLwotI2lmIGRlZmluZWQoX19Vc2Vyc3Bh
Y2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIAljbWggPSBtdG9kKHJldCwgV1NB
Q01TR0hEUiAqKTsKICNlbHNlCiAJY21oID0gbXRvZChyZXQsIHN0cnVjdCBjbXNnaGRyICopOwpA
QCAtMjUyLDcgKzI1NSw3IEBAIHNjdHBfYnVpbGRfY3RsX25jaHVuayhzdHJ1Y3Qgc2N0cF9pbnBj
YiAqaW5wLCBzdHJ1Y3Qgc2N0cF9zbmRyY3ZpbmZvICpzaW5mbykKIAkJcmN2aW5mby0+cmN2X2N1
bXRzbiA9IHNpbmZvLT5zaW5mb19jdW10c247CiAJCXJjdmluZm8tPnJjdl9jb250ZXh0ID0gc2lu
Zm8tPnNpbmZvX2NvbnRleHQ7CiAJCXJjdmluZm8tPnJjdl9hc3NvY19pZCA9IHNpbmZvLT5zaW5m
b19hc3NvY19pZDsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVm
aW5lZChfV0lOMzIpCiAJCWNtaCA9IChXU0FDTVNHSERSICopKChjYWRkcl90KWNtaCArIENNU0df
U1BBQ0Uoc2l6ZW9mKHN0cnVjdCBzY3RwX3JjdmluZm8pKSk7CiAjZWxzZQogCQljbWggPSAoc3Ry
dWN0IGNtc2doZHIgKikoKGNhZGRyX3QpY21oICsgQ01TR19TUEFDRShzaXplb2Yoc3RydWN0IHNj
dHBfcmN2aW5mbykpKTsKQEAgLTI3OCw3ICsyODEsNyBAQCBzY3RwX2J1aWxkX2N0bF9uY2h1bmso
c3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfc25kcmN2aW5mbyAqc2luZm8pCiAJ
CW54dGluZm8tPm54dF9wcGlkID0gc2VpbmZvLT5zZXJpbmZvX25leHRfcHBpZDsKIAkJbnh0aW5m
by0+bnh0X2xlbmd0aCA9IHNlaW5mby0+c2VyaW5mb19uZXh0X2xlbmd0aDsKIAkJbnh0aW5mby0+
bnh0X2Fzc29jX2lkID0gc2VpbmZvLT5zZXJpbmZvX25leHRfYWlkOwotI2lmIGRlZmluZWQoX19V
c2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIAkJY21oID0gKFdTQUNN
U0dIRFIgKikoKGNhZGRyX3QpY21oICsgQ01TR19TUEFDRShzaXplb2Yoc3RydWN0IHNjdHBfbnh0
aW5mbykpKTsKICNlbHNlCiAJCWNtaCA9IChzdHJ1Y3QgY21zZ2hkciAqKSgoY2FkZHJfdCljbWgg
KyBDTVNHX1NQQUNFKHNpemVvZihzdHJ1Y3Qgc2N0cF9ueHRpbmZvKSkpOwpAQCAtNDQ3LDIyICs0
NTAsMjIgQEAgc2N0cF9hYm9ydF9pbl9yZWFzbShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJc3Ry
dWN0IG1idWYgKm9wZXI7CiAKIAlpZiAoc3RjYi0+YXNvYy5pZGF0YV9zdXBwb3J0ZWQpIHsKLQkJ
c25wcmludGYobXNnLCBzaXplb2YobXNnKSwKLQkJCSAiUmVhc3MgJXgsQ0Y6JXgsVFNOPSU4Ljh4
LFNJRD0lNC40eCxGU049JTguOHgsTUlEOiU4Ljh4IiwKLQkJCSBvcHNwb3QsCi0JCQkgY29udHJv
bC0+ZnNuX2luY2x1ZGVkLAotCQkJIGNoay0+cmVjLmRhdGEudHNuLAotCQkJIGNoay0+cmVjLmRh
dGEuc2lkLAotCQkJIGNoay0+cmVjLmRhdGEuZnNuLCBjaGstPnJlYy5kYXRhLm1pZCk7CisJCVND
VFBfU05QUklOVEYobXNnLCBzaXplb2YobXNnKSwKKwkJICAgICAgICAgICAgICAiUmVhc3MgJXgs
Q0Y6JXgsVFNOPSU4Ljh4LFNJRD0lNC40eCxGU049JTguOHgsTUlEOiU4Ljh4IiwKKwkJICAgICAg
ICAgICAgICBvcHNwb3QsCisJCSAgICAgICAgICAgICAgY29udHJvbC0+ZnNuX2luY2x1ZGVkLAor
CQkgICAgICAgICAgICAgIGNoay0+cmVjLmRhdGEudHNuLAorCQkgICAgICAgICAgICAgIGNoay0+
cmVjLmRhdGEuc2lkLAorCQkgICAgICAgICAgICAgIGNoay0+cmVjLmRhdGEuZnNuLCBjaGstPnJl
Yy5kYXRhLm1pZCk7CiAJfSBlbHNlIHsKLQkJc25wcmludGYobXNnLCBzaXplb2YobXNnKSwKLQkJ
CSAiUmVhc3MgJXgsQ0k6JXgsVFNOPSU4Ljh4LFNJRD0lNC40eCxGU049JTQuNHgsU1NOOiU0LjR4
IiwKLQkJCSBvcHNwb3QsCi0JCQkgY29udHJvbC0+ZnNuX2luY2x1ZGVkLAotCQkJIGNoay0+cmVj
LmRhdGEudHNuLAotCQkJIGNoay0+cmVjLmRhdGEuc2lkLAotCQkJIGNoay0+cmVjLmRhdGEuZnNu
LAotCQkJICh1aW50MTZfdCljaGstPnJlYy5kYXRhLm1pZCk7CisJCVNDVFBfU05QUklOVEYobXNn
LCBzaXplb2YobXNnKSwKKwkJICAgICAgICAgICAgICAiUmVhc3MgJXgsQ0k6JXgsVFNOPSU4Ljh4
LFNJRD0lNC40eCxGU049JTQuNHgsU1NOOiU0LjR4IiwKKwkJICAgICAgICAgICAgICBvcHNwb3Qs
CisJCSAgICAgICAgICAgICAgY29udHJvbC0+ZnNuX2luY2x1ZGVkLAorCQkgICAgICAgICAgICAg
IGNoay0+cmVjLmRhdGEudHNuLAorCQkgICAgICAgICAgICAgIGNoay0+cmVjLmRhdGEuc2lkLAor
CQkgICAgICAgICAgICAgIGNoay0+cmVjLmRhdGEuZnNuLAorCQkgICAgICAgICAgICAgICh1aW50
MTZfdCljaGstPnJlYy5kYXRhLm1pZCk7CiAJfQogCW9wZXIgPSBzY3RwX2dlbmVyYXRlX2NhdXNl
KFNDVFBfQ0FVU0VfUFJPVE9DT0xfVklPTEFUSU9OLCBtc2cpOwogCXNjdHBfbV9mcmVlbShjaGst
PmRhdGEpOwpAQCAtNDc2LDcgKzQ3OSw3IEBAIHNjdHBfYWJvcnRfaW5fcmVhc20oc3RydWN0IHNj
dHBfdGNiICpzdGNiLAogc3RhdGljIHZvaWQKIHNjdHBfY2xlYW5fdXBfY29udHJvbChzdHJ1Y3Qg
c2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX3F1ZXVlZF90b19yZWFkICpjb250cm9sKQogewot
CS8qIAorCS8qCiAJICogVGhlIGNvbnRyb2wgY291bGQgbm90IGJlIHBsYWNlZCBhbmQgbXVzdCBi
ZSBjbGVhbmVkLgogCSAqLwogCXN0cnVjdCBzY3RwX3RtaXRfY2h1bmsgKmNoaywgKm5jaGs7CkBA
IC00ODcsNyArNDkwLDEyIEBAIHNjdHBfY2xlYW5fdXBfY29udHJvbChzdHJ1Y3Qgc2N0cF90Y2Ig
KnN0Y2IsIHN0cnVjdCBzY3RwX3F1ZXVlZF90b19yZWFkICpjb250cm9sCiAJCWNoay0+ZGF0YSA9
IE5VTEw7CiAJCXNjdHBfZnJlZV9hX2NodW5rKHN0Y2IsIGNoaywgU0NUUF9TT19OT1RfTE9DS0VE
KTsKIAl9Ci0Jc2N0cF9mcmVlX2FfcmVhZHEoc3RjYiwgY29udHJvbCk7CQorCXNjdHBfZnJlZV9y
ZW1vdGVfYWRkcihjb250cm9sLT53aG9Gcm9tKTsKKwlpZiAoY29udHJvbC0+ZGF0YSkgeworCQlz
Y3RwX21fZnJlZW0oY29udHJvbC0+ZGF0YSk7CisJCWNvbnRyb2wtPmRhdGEgPSBOVUxMOworCX0K
KwlzY3RwX2ZyZWVfYV9yZWFkcShzdGNiLCBjb250cm9sKTsKIH0KIAogLyoKQEAgLTU0MCwxNSAr
NTQ4LDE1IEBAIHNjdHBfcXVldWVfZGF0YV90b19zdHJlYW0oc3RydWN0IHNjdHBfdGNiICpzdGNi
LAogCQkgKi8KIAkJVEFJTFFfSU5TRVJUX0hFQUQoJnN0cm0tPmlucXVldWUsIGNvbnRyb2wsIG5l
eHRfaW5zdHJtKTsKIAkJaWYgKGFzb2MtPmlkYXRhX3N1cHBvcnRlZCkgewotCQkJc25wcmludGYo
bXNnLCBzaXplb2YobXNnKSwgIkRlbGl2ZXJlZCBNSUQ9JTguOHgsIGdvdCBUU049JTguOHgsIFNJ
RD0lNC40eCwgTUlEPSU4Ljh4IiwKLQkJCSAgICAgICAgIHN0cm0tPmxhc3RfbWlkX2RlbGl2ZXJl
ZCwgY29udHJvbC0+c2luZm9fdHNuLAotCQkJICAgICAgICAgY29udHJvbC0+c2luZm9fc3RyZWFt
LCBjb250cm9sLT5taWQpOworCQkJU0NUUF9TTlBSSU5URihtc2csIHNpemVvZihtc2cpLCAiRGVs
aXZlcmVkIE1JRD0lOC44eCwgZ290IFRTTj0lOC44eCwgU0lEPSU0LjR4LCBNSUQ9JTguOHgiLAor
CQkJICAgICAgICAgICAgICBzdHJtLT5sYXN0X21pZF9kZWxpdmVyZWQsIGNvbnRyb2wtPnNpbmZv
X3RzbiwKKwkJCSAgICAgICAgICAgICAgY29udHJvbC0+c2luZm9fc3RyZWFtLCBjb250cm9sLT5t
aWQpOwogCQl9IGVsc2UgewotCQkJc25wcmludGYobXNnLCBzaXplb2YobXNnKSwgIkRlbGl2ZXJl
ZCBTU049JTQuNHgsIGdvdCBUU049JTguOHgsIFNJRD0lNC40eCwgU1NOPSU0LjR4IiwKLQkJCSAg
ICAgICAgICh1aW50MTZfdClzdHJtLT5sYXN0X21pZF9kZWxpdmVyZWQsCi0JCQkgICAgICAgICBj
b250cm9sLT5zaW5mb190c24sCi0JCQkgICAgICAgICBjb250cm9sLT5zaW5mb19zdHJlYW0sCi0J
CQkgICAgICAgICAodWludDE2X3QpY29udHJvbC0+bWlkKTsKKwkJCVNDVFBfU05QUklOVEYobXNn
LCBzaXplb2YobXNnKSwgIkRlbGl2ZXJlZCBTU049JTQuNHgsIGdvdCBUU049JTguOHgsIFNJRD0l
NC40eCwgU1NOPSU0LjR4IiwKKwkJCSAgICAgICAgICAgICAgKHVpbnQxNl90KXN0cm0tPmxhc3Rf
bWlkX2RlbGl2ZXJlZCwKKwkJCSAgICAgICAgICAgICAgY29udHJvbC0+c2luZm9fdHNuLAorCQkJ
ICAgICAgICAgICAgICBjb250cm9sLT5zaW5mb19zdHJlYW0sCisJCQkgICAgICAgICAgICAgICh1
aW50MTZfdCljb250cm9sLT5taWQpOwogCQl9CiAJCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1
c2UoU0NUUF9DQVVTRV9QUk9UT0NPTF9WSU9MQVRJT04sIG1zZyk7CiAJCXN0Y2ItPnNjdHBfZXAt
Pmxhc3RfYWJvcnRfY29kZSA9IFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzI7CkBA
IC01NjIsNyArNTcwLDcgQEAgc2N0cF9xdWV1ZV9kYXRhX3RvX3N0cmVhbShzdHJ1Y3Qgc2N0cF90
Y2IgKnN0Y2IsCiAJc2N0cF91Y291bnRfaW5jcihhc29jLT5jbnRfb25fYWxsX3N0cmVhbXMpOwog
CW54dF90b2RlbCA9IHN0cm0tPmxhc3RfbWlkX2RlbGl2ZXJlZCArIDE7CiAJaWYgKFNDVFBfTUlE
X0VRKGFzb2MtPmlkYXRhX3N1cHBvcnRlZCwgbnh0X3RvZGVsLCBjb250cm9sLT5taWQpKSB7Ci0j
aWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisj
aWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCXN0cnVj
dCBzb2NrZXQgKnNvOwogCiAJCXNvID0gU0NUUF9JTlBfU08oc3RjYi0+c2N0cF9lcCk7CkBAIC02
NDUsNyArNjUzLDcgQEAgc2N0cF9xdWV1ZV9kYXRhX3RvX3N0cmVhbShzdHJ1Y3Qgc2N0cF90Y2Ig
KnN0Y2IsCiAJCQl9CiAJCQlicmVhazsKIAkJfQotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBk
ZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDEpOwogI2Vu
ZGlmCiAJfQpAQCAtNjU1LDkgKzY2Myw4IEBAIHNjdHBfcXVldWVfZGF0YV90b19zdHJlYW0oc3Ry
dWN0IHNjdHBfdGNiICpzdGNiLAogCQkgKiB0byBwdXQgaXQgb24gdGhlIHF1ZXVlLgogCQkgKi8K
IAkJaWYgKHNjdHBfcGxhY2VfY29udHJvbF9pbl9zdHJlYW0oc3RybSwgYXNvYywgY29udHJvbCkp
IHsKLQkJCXNucHJpbnRmKG1zZywgc2l6ZW9mKG1zZyksCi0JCQkJICJRdWV1ZSB0byBzdHIgTUlE
OiAldSBkdXBsaWNhdGUiLAotCQkJCSBjb250cm9sLT5taWQpOworCQkJU0NUUF9TTlBSSU5URiht
c2csIHNpemVvZihtc2cpLAorCQkJICAgICAgICAgICAgICAiUXVldWUgdG8gc3RyIE1JRDogJXUg
ZHVwbGljYXRlIiwgY29udHJvbC0+bWlkKTsKIAkJCXNjdHBfY2xlYW5fdXBfY29udHJvbChzdGNi
LCBjb250cm9sKTsKIAkJCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9DQVVTRV9Q
Uk9UT0NPTF9WSU9MQVRJT04sIG1zZyk7CiAJCQlzdGNiLT5zY3RwX2VwLT5sYXN0X2Fib3J0X2Nv
ZGUgPSBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18zOwpAQCAtNzI2LDYgKzczMyw3
IEBAIHNjdHBfYWRkX3RvX3RhaWxfcG9pbnRlcihzdHJ1Y3Qgc2N0cF9xdWV1ZWRfdG9fcmVhZCAq
Y29udHJvbCwgc3RydWN0IG1idWYgKm0sIHVpCiAJfQogCWlmIChjb250cm9sLT50YWlsX21idWYg
PT0gTlVMTCkgewogCQkvKiBUU05IICovCisJCXNjdHBfbV9mcmVlbShjb250cm9sLT5kYXRhKTsK
IAkJY29udHJvbC0+ZGF0YSA9IG07CiAJCXNjdHBfc2V0dXBfdGFpbF9wb2ludGVyKGNvbnRyb2wp
OwogCQlyZXR1cm47CkBAIC03NjQsNyArNzcyLDcgQEAgc2N0cF9hZGRfdG9fdGFpbF9wb2ludGVy
KHN0cnVjdCBzY3RwX3F1ZXVlZF90b19yZWFkICpjb250cm9sLCBzdHJ1Y3QgbWJ1ZiAqbSwgdWkK
IAl9CiB9CiAKLXN0YXRpYyB2b2lkIAorc3RhdGljIHZvaWQKIHNjdHBfYnVpbGRfcmVhZHFfZW50
cnlfZnJvbV9jdGwoc3RydWN0IHNjdHBfcXVldWVkX3RvX3JlYWQgKm5jLCBzdHJ1Y3Qgc2N0cF9x
dWV1ZWRfdG9fcmVhZCAqY29udHJvbCkKIHsKIAltZW1zZXQobmMsIDAsIHNpemVvZihzdHJ1Y3Qg
c2N0cF9xdWV1ZWRfdG9fcmVhZCkpOwpAQCAtNzg0LDE1ICs3OTIsMTYgQEAgc2N0cF9idWlsZF9y
ZWFkcV9lbnRyeV9mcm9tX2N0bChzdHJ1Y3Qgc2N0cF9xdWV1ZWRfdG9fcmVhZCAqbmMsIHN0cnVj
dCBzY3RwX3F1ZXUKIAlhdG9taWNfYWRkX2ludCgmbmMtPndob0Zyb20tPnJlZl9jb3VudCwgMSk7
CiAJbmMtPnN0Y2IgPSBjb250cm9sLT5zdGNiOwogCW5jLT5wb3J0X2Zyb20gPSBjb250cm9sLT5w
b3J0X2Zyb207CisJbmMtPmRvX25vdF9yZWZfc3RjYiA9IGNvbnRyb2wtPmRvX25vdF9yZWZfc3Rj
YjsKIH0KIAotc3RhdGljIHZvaWQgCitzdGF0aWMgdm9pZAogc2N0cF9yZXNldF9hX2NvbnRyb2wo
c3RydWN0IHNjdHBfcXVldWVkX3RvX3JlYWQgKmNvbnRyb2wsCiAgICAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCB1aW50MzJfdCB0c24pCiB7CiAJY29udHJvbC0+ZnNu
X2luY2x1ZGVkID0gdHNuOwogCWlmIChjb250cm9sLT5vbl9yZWFkX3EpIHsKLQkJLyogCisJCS8q
CiAJCSAqIFdlIGhhdmUgdG8gcHVyZ2UgaXQgZnJvbSB0aGVyZSwKIAkJICogaG9wZWZ1bGx5IHRo
aXMgd2lsbCB3b3JrIDotKQogCQkgKi8KQEAgLTg0OCw3ICs4NTcsNyBAQCByZXN0YXJ0OgogCQkJ
aWYgKGNvbnRyb2wtPmVuZF9hZGRlZCkgewogCQkJCS8qIFdlIGFyZSBkb25lICovCiAJCQkJaWYg
KCFUQUlMUV9FTVBUWSgmY29udHJvbC0+cmVhc20pKSB7Ci0JCQkJCS8qIAorCQkJCQkvKgogCQkJ
CQkgKiBPayB3ZSBoYXZlIHRvIG1vdmUgYW55dGhpbmcgbGVmdCBvbgogCQkJCQkgKiB0aGUgY29u
dHJvbCBxdWV1ZSB0byBhIG5ldyBjb250cm9sLgogCQkJCQkgKi8KQEAgLTkyOCw2ICs5MzcsMTIg
QEAgcmVzdGFydDoKIAkJCWJyZWFrOwogCQl9CiAJfQorCWlmIChjbnRfYWRkZWQgJiYgc3RybS0+
cGRfYXBpX3N0YXJ0ZWQpIHsKKyNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCXNjdHBfaW52
b2tlX3JlY3ZfY2FsbGJhY2soc3RjYi0+c2N0cF9lcCwgc3RjYiwgY29udHJvbCwgU0NUUF9SRUFE
X0xPQ0tfTk9UX0hFTEQpOworI2VuZGlmCisJCXNjdHBfd2FrZXVwX3RoZV9yZWFkX3NvY2tldChz
dGNiLT5zY3RwX2VwLCBzdGNiLCBTQ1RQX1NPX05PVF9MT0NLRUQpOworCX0KIAlpZiAoKGNvbnRy
b2wtPmxlbmd0aCA+IHBkX3BvaW50KSAmJiAoc3RybS0+cGRfYXBpX3N0YXJ0ZWQgPT0gMCkpIHsK
IAkJc3RybS0+cGRfYXBpX3N0YXJ0ZWQgPSAxOwogCQljb250cm9sLT5wZGFwaV9zdGFydGVkID0g
MTsKQEAgLTk1OSw2ICs5NzQsMTYgQEAgc2N0cF9pbmplY3Rfb2xkX3Vub3JkZXJlZF9kYXRhKHN0
cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJU0NUUERCRyhTQ1RQX0RFQlVHX1hYWCwKIAkJCSJjaHVu
ayBpcyBhIGZpcnN0IGZzbjogJXUgYmVjb21lcyBmc25faW5jbHVkZWRcbiIsCiAJCQljaGstPnJl
Yy5kYXRhLmZzbik7CisJCWF0ID0gVEFJTFFfRklSU1QoJmNvbnRyb2wtPnJlYXNtKTsKKwkJaWYg
KGF0ICYmIFNDVFBfVFNOX0dUKGNoay0+cmVjLmRhdGEuZnNuLCBhdC0+cmVjLmRhdGEuZnNuKSkg
eworCQkJLyoKKwkJCSAqIFRoZSBmaXJzdCBjaHVuayBpbiB0aGUgcmVhc3NlbWJseSBpcworCQkJ
ICogYSBzbWFsbGVyIFRTTiB0aGFuIHRoaXMgb25lLCBldmVuIHRob3VnaAorCQkJICogdGhpcyBo
YXMgYSBmaXJzdCwgaXQgbXVzdCBiZSBmcm9tIGEgc3Vic2VxdWVudAorCQkJICogbXNnLgorCQkJ
ICovCisJCQlnb3RvIHBsYWNlX2NodW5rOworCQl9CiAJCWlmIChjb250cm9sLT5maXJzdF9mcmFn
X3NlZW4pIHsKIAkJCS8qCiAJCQkgKiBJbiBvbGQgdW4tb3JkZXJlZCB3ZSBjYW4gcmVhc3NlbWJs
eSBvbgpAQCAtOTc1LDcgKzEwMDAsNyBAQCBzY3RwX2luamVjdF9vbGRfdW5vcmRlcmVkX2RhdGEo
c3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkJfQogCQkJaWYgKChjaGstPnJlYy5kYXRhLmZzbiA9
PSBjb250cm9sLT5mc25faW5jbHVkZWQpIHx8CiAJCQkgICAgKGNvbnRyb2wtPnBkYXBpX3N0YXJ0
ZWQpKSB7Ci0JCQkJLyogCisJCQkJLyoKIAkJCQkgKiBPayB0aGlzIHNob3VsZCBub3QgaGFwcGVu
LCBpZiBpdCBkb2VzCiAJCQkJICogd2Ugc3RhcnRlZCB0aGUgcGQtYXBpIG9uIHRoZSBoaWdoZXIg
VFNOIChzaW5jZQogCQkJCSAqIHRoZSBlcXVhbHMgcGFydCBpcyBhIFRTTiBmYWlsdXJlIGl0IG11
c3QgYmUgdGhhdCkuCkBAIC0xMDQ0LDcgKzEwNjksNyBAQCBwbGFjZV9jaHVuazoKIAkJCVRBSUxR
X0lOU0VSVF9CRUZPUkUoYXQsIGNoaywgc2N0cF9uZXh0KTsKIAkJCWJyZWFrOwogCQl9IGVsc2Ug
aWYgKGF0LT5yZWMuZGF0YS5mc24gPT0gY2hrLT5yZWMuZGF0YS5mc24pIHsKLQkJCS8qIAorCQkJ
LyoKIAkJCSAqIFRoZXkgc2VudCBhIGR1cGxpY2F0ZSBmc24gbnVtYmVyLiBUaGlzCiAJCQkgKiBy
ZWFsbHkgc2hvdWxkIG5vdCBoYXBwZW4gc2luY2UgdGhlIEZTTiBpcwogCQkJICogYSBUU04gYW5k
IGl0IHNob3VsZCBoYXZlIGJlZW4gZHJvcHBlZCBlYXJsaWVyLgpAQCAtMTExNiw2ICsxMTQxLDE2
IEBAIHNjdHBfZGVsaXZlcl9yZWFzbV9jaGVjayhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVj
dCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAogI2VuZGlmCiAJCQkJU0NUUF9TVEFUX0lOQ1JfQ09V
TlRFUjY0KHNjdHBzX3JlYXNtdXNybXNncyk7CiAJCQkJVEFJTFFfUkVNT1ZFKCZzdHJtLT51bm9f
aW5xdWV1ZSwgY29udHJvbCwgbmV4dF9pbnN0cm0pOworCQkJCWlmIChhc29jLT5zaXplX29uX2Fs
bF9zdHJlYW1zID49IGNvbnRyb2wtPmxlbmd0aCkgeworCQkJCQlhc29jLT5zaXplX29uX2FsbF9z
dHJlYW1zIC09IGNvbnRyb2wtPmxlbmd0aDsKKwkJCQl9IGVsc2UgeworI2lmZGVmIElOVkFSSUFO
VFMKKwkJCQkJcGFuaWMoInNpemVfb25fYWxsX3N0cmVhbXMgPSAldSBzbWFsbGVyIHRoYW4gY29u
dHJvbCBsZW5ndGggJXUiLCBhc29jLT5zaXplX29uX2FsbF9zdHJlYW1zLCBjb250cm9sLT5sZW5n
dGgpOworI2Vsc2UKKwkJCQkJYXNvYy0+c2l6ZV9vbl9hbGxfc3RyZWFtcyA9IDA7CisjZW5kaWYK
KwkJCQl9CisJCQkJc2N0cF91Y291bnRfZGVjcihhc29jLT5jbnRfb25fYWxsX3N0cmVhbXMpOwog
CQkJCWNvbnRyb2wtPm9uX3N0cm1fcSA9IDA7CiAJCQl9CiAJCQlpZiAoY29udHJvbC0+b25fcmVh
ZF9xID09IDApIHsKQEAgLTEzODQsNyArMTQxOSw3IEBAIHNjdHBfcXVldWVfZGF0YV9mb3JfcmVh
c20oc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywK
IAl9CiAJLyogTXVzdCBiZSBhZGRlZCB0byB0aGUgc3RyZWFtLWluIHF1ZXVlICovCiAJaWYgKGNy
ZWF0ZWRfY29udHJvbCkgewotCQlpZiAodW5vcmRlcmVkID09IDApIHsKKwkJaWYgKCh1bm9yZGVy
ZWQgPT0gMCkgfHwgKGFzb2MtPmlkYXRhX3N1cHBvcnRlZCkpIHsKIAkJCXNjdHBfdWNvdW50X2lu
Y3IoYXNvYy0+Y250X29uX2FsbF9zdHJlYW1zKTsKIAkJfQogCQlpZiAoc2N0cF9wbGFjZV9jb250
cm9sX2luX3N0cmVhbShzdHJtLCBhc29jLCBjb250cm9sKSkgewpAQCAtMTQ2Myw5ICsxNDk4LDE5
IEBAIHNjdHBfcXVldWVfZGF0YV9mb3JfcmVhc20oc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1
Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKIAkJCQkJIlRoZSBsYXN0IGZzbiBpcyBub3cgaW4g
cGxhY2UgZnNuOiAldVxuIiwKIAkJCQkJY2hrLT5yZWMuZGF0YS5mc24pOwogCQkJCWNvbnRyb2wt
Pmxhc3RfZnJhZ19zZWVuID0gMTsKKwkJCQlpZiAoU0NUUF9UU05fR1QoY29udHJvbC0+dG9wX2Zz
biwgY2hrLT5yZWMuZGF0YS5mc24pKSB7CisJCQkJCVNDVFBEQkcoU0NUUF9ERUJVR19YWFgsCisJ
CQkJCQkiTmV3IGZzbjogJXUgaXMgbm90IGF0IHRvcF9mc246ICV1IC0tIGFib3J0XG4iLAorCQkJ
CQkJY2hrLT5yZWMuZGF0YS5mc24sCisJCQkJCQljb250cm9sLT50b3BfZnNuKTsKKwkJCQkJc2N0
cF9hYm9ydF9pbl9yZWFzbShzdGNiLCBjb250cm9sLCBjaGssCisJCQkJCQkJICAgIGFib3J0X2Zs
YWcsCisJCQkJCQkJICAgIFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzkpOworCQkJ
CQlyZXR1cm47CisJCQkJfQogCQkJfQogCQkJaWYgKGFzb2MtPmlkYXRhX3N1cHBvcnRlZCB8fCBj
b250cm9sLT5maXJzdF9mcmFnX3NlZW4pIHsKLQkJCQkvKiAKKwkJCQkvKgogCQkJCSAqIEZvciBJ
REFUQSB3ZSBhbHdheXMgY2hlY2sgc2luY2Ugd2Uga25vdyB0aGF0CiAJCQkJICogdGhlIGZpcnN0
IGZyYWdtZW50IGlzIDAuIEZvciBvbGQgREFUQSB3ZSBoYXZlCiAJCQkJICogdG8gcmVjZWl2ZSB0
aGUgZmlyc3QgYmVmb3JlIHdlIGtub3cgdGhlIGZpcnN0IEZTTgpAQCAtMTQ3NSw3ICsxNTIwLDcg
QEAgc2N0cF9xdWV1ZV9kYXRhX2Zvcl9yZWFzbShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVj
dCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAogCQkJCQkvKiBXZSBoYXZlIGFscmVhZHkgZGVsaXZl
cmVkIHVwIHRvIHRoaXMgc28gaXRzIGEgZHVwICovCiAJCQkJCXNjdHBfYWJvcnRfaW5fcmVhc20o
c3RjYiwgY29udHJvbCwgY2hrLAogCQkJCQkJCSAgICBhYm9ydF9mbGFnLAotCQkJCQkJCSAgICBT
Q1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ185KTsKKwkJCQkJCQkgICAgU0NUUF9GUk9N
X1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMTApOwogCQkJCQlyZXR1cm47CiAJCQkJfQogCQkJfQpA
QCAtMTQ4NywxMSArMTUzMiwxMSBAQCBzY3RwX3F1ZXVlX2RhdGFfZm9yX3JlYXNtKHN0cnVjdCBz
Y3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiAJCQkJCWNoay0+
cmVjLmRhdGEuZnNuLCBjb250cm9sLT50b3BfZnNuKTsKIAkJCQlzY3RwX2Fib3J0X2luX3JlYXNt
KHN0Y2IsIGNvbnRyb2wsCiAJCQkJCQkgICAgY2hrLCBhYm9ydF9mbGFnLAotCQkJCQkJICAgIFND
VFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzEwKTsKKwkJCQkJCSAgICBTQ1RQX0ZST01f
U0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18xMSk7CiAJCQkJcmV0dXJuOwogCQkJfQogCQkJaWYgKGFz
b2MtPmlkYXRhX3N1cHBvcnRlZCB8fCBjb250cm9sLT5maXJzdF9mcmFnX3NlZW4pIHsKLQkJCQkv
KiAKKwkJCQkvKgogCQkJCSAqIEZvciBJREFUQSB3ZSBhbHdheXMgY2hlY2sgc2luY2Ugd2Uga25v
dyB0aGF0CiAJCQkJICogdGhlIGZpcnN0IGZyYWdtZW50IGlzIDAuIEZvciBvbGQgREFUQSB3ZSBo
YXZlCiAJCQkJICogdG8gcmVjZWl2ZSB0aGUgZmlyc3QgYmVmb3JlIHdlIGtub3cgdGhlIGZpcnN0
IEZTTgpAQCAtMTUwNSw3ICsxNTUwLDcgQEAgc2N0cF9xdWV1ZV9kYXRhX2Zvcl9yZWFzbShzdHJ1
Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAogCQkJCQkJ
Y2hrLT5yZWMuZGF0YS5mc24sIGNvbnRyb2wtPmZzbl9pbmNsdWRlZCk7CiAJCQkJCXNjdHBfYWJv
cnRfaW5fcmVhc20oc3RjYiwgY29udHJvbCwgY2hrLAogCQkJCQkJCSAgICBhYm9ydF9mbGFnLAot
CQkJCQkJCSAgICBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18xMSk7CisJCQkJCQkJ
ICAgIFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzEyKTsKIAkJCQkJcmV0dXJuOwog
CQkJCX0KIAkJCX0KQEAgLTE1MTcsMTMgKzE1NjIsMTMgQEAgc2N0cF9xdWV1ZV9kYXRhX2Zvcl9y
ZWFzbShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29j
LAogCQkJCQljb250cm9sLT50b3BfZnNuKTsKIAkJCQlzY3RwX2Fib3J0X2luX3JlYXNtKHN0Y2Is
IGNvbnRyb2wsIGNoaywKIAkJCQkJCSAgICBhYm9ydF9mbGFnLAotCQkJCQkJICAgIFNDVFBfRlJP
TV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzEyKTsKKwkJCQkJCSAgICBTQ1RQX0ZST01fU0NUUF9J
TkRBVEEgKyBTQ1RQX0xPQ18xMyk7CiAJCQkJcmV0dXJuOwogCQkJfQogCQl9CiAJCS8qCiAJCSAq
IElmIHdlIHJlYWNoIGhlcmUsIHdlIG5lZWQgdG8gcGxhY2UgdGhlCi0JCSAqIG5ldyBjaHVuayBp
biB0aGUgcmVhc3NlbWJseSBmb3IgdGhpcyAKKwkJICogbmV3IGNodW5rIGluIHRoZSByZWFzc2Vt
Ymx5IGZvciB0aGlzCiAJCSAqIGNvbnRyb2wuCiAJCSAqLwogCQlTQ1RQREJHKFNDVFBfREVCVUdf
WFhYLApAQCAtMTUzMSw2ICsxNTc2LDE1IEBAIHNjdHBfcXVldWVfZGF0YV9mb3JfcmVhc20oc3Ry
dWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKIAkJCWNo
ay0+cmVjLmRhdGEuZnNuKTsKIAkJVEFJTFFfRk9SRUFDSChhdCwgJmNvbnRyb2wtPnJlYXNtLCBz
Y3RwX25leHQpIHsKIAkJCWlmIChTQ1RQX1RTTl9HVChhdC0+cmVjLmRhdGEuZnNuLCBjaGstPnJl
Yy5kYXRhLmZzbikpIHsKKwkJCQlpZiAoY2hrLT5yZWMuZGF0YS5yY3ZfZmxhZ3MgJiBTQ1RQX0RB
VEFfTEFTVF9GUkFHKSB7CisJCQkJCS8qIExhc3Qgbm90IGF0IHRoZSBlbmQ/IGh1aD8gKi8KKwkJ
CQkJU0NUUERCRyhTQ1RQX0RFQlVHX1hYWCwKKwkJCQkJICAgICAgICAiTGFzdCBmcmFnbWVudCBu
b3QgbGFzdCBpbiBsaXN0OiAtLSBhYm9ydFxuIik7CisJCQkJCXNjdHBfYWJvcnRfaW5fcmVhc20o
c3RjYiwgY29udHJvbCwKKwkJCQkJICAgICAgICAgICAgICAgICAgICBjaGssIGFib3J0X2ZsYWcs
CisJCQkJCSAgICAgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9M
T0NfMTQpOworCQkJCQlyZXR1cm47CisJCQkJfQogCQkJCS8qCiAJCQkJICogVGhpcyBvbmUgaW4g
cXVldWUgaXMgYmlnZ2VyIHRoYW4gdGhlIG5ldyBvbmUsIGluc2VydAogCQkJCSAqIHRoZSBuZXcg
b25lIGJlZm9yZSBhdC4KQEAgLTE1NTcsNyArMTYxMSw3IEBAIHNjdHBfcXVldWVfZGF0YV9mb3Jf
cmVhc20oc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNv
YywKIAkJCQkJYXQtPnJlYy5kYXRhLmZzbik7CiAJCQkJc2N0cF9hYm9ydF9pbl9yZWFzbShzdGNi
LCBjb250cm9sLAogCQkJCQkJICAgIGNoaywgYWJvcnRfZmxhZywKLQkJCQkJCSAgICBTQ1RQX0ZS
T01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18xMyk7CisJCQkJCQkgICAgU0NUUF9GUk9NX1NDVFBf
SU5EQVRBICsgU0NUUF9MT0NfMTUpOwogCQkJCXJldHVybjsKIAkJCX0KIAkJfQpAQCAtMTY2Miw2
ICsxNzE2LDcgQEAgc2N0cF9wcm9jZXNzX2FfZGF0YV9jaHVuayhzdHJ1Y3Qgc2N0cF90Y2IgKnN0
Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAogCQkJICBpbnQgKmJyZWFrX2ZsYWcs
IGludCBsYXN0X2NodW5rLCB1aW50OF90IGNoa190eXBlKQogewogCXN0cnVjdCBzY3RwX3RtaXRf
Y2h1bmsgKmNoayA9IE5VTEw7IC8qIG1ha2UgZ2NjIGhhcHB5ICovCisJc3RydWN0IHNjdHBfc3Ry
ZWFtX2luICpzdHJtOwogCXVpbnQzMl90IHRzbiwgZnNuLCBnYXAsIG1pZDsKIAlzdHJ1Y3QgbWJ1
ZiAqZG1idWY7CiAJaW50IHRoZV9sZW47CkBAIC0xNzEzLDcgKzE3NjgsNyBAQCBzY3RwX3Byb2Nl
c3NfYV9kYXRhX2NodW5rKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfYXNzb2Np
YXRpb24gKmFzb2MsCiAJCSAqIGVtcHR5IGRhdGEgY2h1bmsuCiAJCSAqLwogCQlvcF9lcnIgPSBz
Y3RwX2dlbmVyYXRlX25vX3VzZXJfZGF0YV9jYXVzZSh0c24pOwotCQlzdGNiLT5zY3RwX2VwLT5s
YXN0X2Fib3J0X2NvZGUgPSBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18xNDsKKwkJ
c3RjYi0+c2N0cF9lcC0+bGFzdF9hYm9ydF9jb2RlID0gU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsg
U0NUUF9MT0NfMTY7CiAJCXNjdHBfYWJvcnRfYW5fYXNzb2NpYXRpb24oc3RjYi0+c2N0cF9lcCwg
c3RjYiwgb3BfZXJyLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwogCQkqYWJvcnRfZmxhZyA9IDE7CiAJ
CXJldHVybiAoMCk7CkBAIC0xODMxLDE0ICsxODg2LDEzIEBAIHNjdHBfcHJvY2Vzc19hX2RhdGFf
Y2h1bmsoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNv
YywKIAlpZiAoKGNoa190eXBlID09IFNDVFBfSURBVEEpICYmCiAJICAgICgoY2hrX2ZsYWdzICYg
U0NUUF9EQVRBX0ZJUlNUX0ZSQUcpID09IDApICYmCiAJICAgIChmc24gPT0gMCkpIHsKLQkJLyog
Ci0JCSAqICBUaGUgZmlyc3QgKm11c3QqIGJlIGZzbiAwLCBhbmQgb3RoZXIgCisJCS8qCisJCSAq
ICBUaGUgZmlyc3QgKm11c3QqIGJlIGZzbiAwLCBhbmQgb3RoZXIKIAkJICogIChtaWRkbGUvZW5k
KSBwaWVjZXMgY2FuICpub3QqIGJlIGZzbiAwLgogCQkgKiBYWFg6IFRoaXMgY2FuIGhhcHBlbiBp
biBjYXNlIG9mIGEgd3JhcCBhcm91bmQuCiAJCSAqICAgICAgSWdub3JlIGlzIGZvciBub3cuCiAJ
CSAqLwotCQlzbnByaW50Zihtc2csIHNpemVvZihtc2cpLCAiRlNOIHplcm8gZm9yIE1JRD0lOC44
eCwgYnV0IGZsYWdzPSUyLjJ4IiwKLQkJICAgICAgICAgbWlkLCBjaGtfZmxhZ3MpOworCQlTQ1RQ
X1NOUFJJTlRGKG1zZywgc2l6ZW9mKG1zZyksICJGU04gemVybyBmb3IgTUlEPSU4Ljh4LCBidXQg
ZmxhZ3M9JTIuMngiLCBtaWQsIGNoa19mbGFncyk7CiAJCWdvdG8gZXJyX291dDsKIAl9CiAJY29u
dHJvbCA9IHNjdHBfZmluZF9yZWFzbV9lbnRyeSgmYXNvYy0+c3RybWluW3NpZF0sIG1pZCwgb3Jk
ZXJlZCwgYXNvYy0+aWRhdGFfc3VwcG9ydGVkKTsKQEAgLTE4NDksMjQgKzE5MDMsMjYgQEAgc2N0
cF9wcm9jZXNzX2FfZGF0YV9jaHVuayhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3Rw
X2Fzc29jaWF0aW9uICphc29jLAogCQlpZiAoY29udHJvbCAhPSBOVUxMKSB7CiAJCQkvKiBXZSBm
b3VuZCBzb21ldGhpbmcsIGRvZXMgaXQgYmVsb25nPyAqLwogCQkJaWYgKG9yZGVyZWQgJiYgKG1p
ZCAhPSBjb250cm9sLT5taWQpKSB7Ci0JCQkJc25wcmludGYobXNnLCBzaXplb2YobXNnKSwgIlJl
YXNzZW1ibHkgcHJvYmxlbSAoTUlEPSU4Ljh4KSIsIG1pZCk7CisJCQkJU0NUUF9TTlBSSU5URiht
c2csIHNpemVvZihtc2cpLCAiUmVhc3NlbWJseSBwcm9ibGVtIChNSUQ9JTguOHgpIiwgbWlkKTsK
IAkJCWVycl9vdXQ6CiAJCQkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQX0NBVVNF
X1BST1RPQ09MX1ZJT0xBVElPTiwgbXNnKTsKLQkJCQlzdGNiLT5zY3RwX2VwLT5sYXN0X2Fib3J0
X2NvZGUgPSBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18xNTsKKwkJCQlzdGNiLT5z
Y3RwX2VwLT5sYXN0X2Fib3J0X2NvZGUgPSBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xP
Q18xNzsKIAkJCQlzY3RwX2Fib3J0X2FuX2Fzc29jaWF0aW9uKHN0Y2ItPnNjdHBfZXAsIHN0Y2Is
IG9wX2VyciwgU0NUUF9TT19OT1RfTE9DS0VEKTsKIAkJCQkqYWJvcnRfZmxhZyA9IDE7CiAJCQkJ
cmV0dXJuICgwKTsKIAkJCX0KIAkJCWlmIChvcmRlcmVkICYmICgoY29udHJvbC0+c2luZm9fZmxh
Z3MgPj4gOCkgJiBTQ1RQX0RBVEFfVU5PUkRFUkVEKSkgewogCQkJCS8qIFdlIGNhbid0IGhhdmUg
YSBzd2l0Y2hlZCBvcmRlciB3aXRoIGFuIHVub3JkZXJlZCBjaHVuayAqLwotCQkJCXNucHJpbnRm
KG1zZywgc2l6ZW9mKG1zZyksICJBbGwgZnJhZ21lbnRzIG9mIGEgdXNlciBtZXNzYWdlIG11c3Qg
YmUgb3JkZXJlZCBvciB1bm9yZGVyZWQgKFRTTj0lOC44eCkiLAotCQkJCQkgdHNuKTsKKwkJCQlT
Q1RQX1NOUFJJTlRGKG1zZywgc2l6ZW9mKG1zZyksCisJCQkJICAgICAgICAgICAgICAiQWxsIGZy
YWdtZW50cyBvZiBhIHVzZXIgbWVzc2FnZSBtdXN0IGJlIG9yZGVyZWQgb3IgdW5vcmRlcmVkIChU
U049JTguOHgpIiwKKwkJCQkgICAgICAgICAgICAgIHRzbik7CiAJCQkJZ290byBlcnJfb3V0Owog
CQkJfQogCQkJaWYgKCFvcmRlcmVkICYmICgoKGNvbnRyb2wtPnNpbmZvX2ZsYWdzID4+IDgpICYg
U0NUUF9EQVRBX1VOT1JERVJFRCkgPT0gMCkpIHsKIAkJCQkvKiBXZSBjYW4ndCBoYXZlIGEgc3dp
dGNoZWQgdW5vcmRlcmVkIHdpdGggYSBvcmRlcmVkIGNodW5rICovCi0JCQkJc25wcmludGYobXNn
LCBzaXplb2YobXNnKSwgIkFsbCBmcmFnbWVudHMgb2YgYSB1c2VyIG1lc3NhZ2UgbXVzdCBiZSBv
cmRlcmVkIG9yIHVub3JkZXJlZCAoVFNOPSU4Ljh4KSIsCi0JCQkJCSB0c24pOworCQkJCVNDVFBf
U05QUklOVEYobXNnLCBzaXplb2YobXNnKSwKKwkJCQkgICAgICAgICAgICAgIkFsbCBmcmFnbWVu
dHMgb2YgYSB1c2VyIG1lc3NhZ2UgbXVzdCBiZSBvcmRlcmVkIG9yIHVub3JkZXJlZCAoVFNOPSU4
Ljh4KSIsCisJCQkJICAgICAgICAgICAgIHRzbik7CiAJCQkJZ290byBlcnJfb3V0OwogCQkJfQog
CQl9CkBAIC0xODgwLDEyICsxOTM2LDE0IEBAIHNjdHBfcHJvY2Vzc19hX2RhdGFfY2h1bmsoc3Ry
dWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKIAkJCWlm
IChvcmRlcmVkIHx8IGFzb2MtPmlkYXRhX3N1cHBvcnRlZCkgewogCQkJCVNDVFBEQkcoU0NUUF9E
RUJVR19YWFgsICJjaHVua19mbGFnczogMHgleCBkdXAgZGV0ZWN0ZWQgb24gTUlEOiAldVxuIiwK
IAkJCQkJY2hrX2ZsYWdzLCBtaWQpOwotCQkJCXNucHJpbnRmKG1zZywgc2l6ZW9mKG1zZyksICJE
dXBsaWNhdGUgTUlEPSU4Ljh4IGRldGVjdGVkLiIsIG1pZCk7CisJCQkJU0NUUF9TTlBSSU5URiht
c2csIHNpemVvZihtc2cpLCAiRHVwbGljYXRlIE1JRD0lOC44eCBkZXRlY3RlZC4iLCBtaWQpOwog
CQkJCWdvdG8gZXJyX291dDsKIAkJCX0gZWxzZSB7CiAJCQkJaWYgKCh0c24gPT0gY29udHJvbC0+
ZnNuX2luY2x1ZGVkICsgMSkgJiYKIAkJCQkgICAgKGNvbnRyb2wtPmVuZF9hZGRlZCA9PSAwKSkg
ewotCQkJCQlzbnByaW50Zihtc2csIHNpemVvZihtc2cpLCAiSWxsZWdhbCBtZXNzYWdlIHNlcXVl
bmNlLCBtaXNzaW5nIGVuZCBmb3IgTUlEOiAlOC44eCIsIGNvbnRyb2wtPmZzbl9pbmNsdWRlZCk7
CisJCQkJCVNDVFBfU05QUklOVEYobXNnLCBzaXplb2YobXNnKSwKKwkJCQkJICAgICAgICAgICAg
ICAiSWxsZWdhbCBtZXNzYWdlIHNlcXVlbmNlLCBtaXNzaW5nIGVuZCBmb3IgTUlEOiAlOC44eCIs
CisJCQkJCSAgICAgICAgICAgICAgY29udHJvbC0+ZnNuX2luY2x1ZGVkKTsKIAkJCQkJZ290byBl
cnJfb3V0OwogCQkJCX0gZWxzZSB7CiAJCQkJCWNvbnRyb2wgPSBOVUxMOwpAQCAtMTkwNCw3ICsx
OTYyLDcgQEAgc2N0cF9wcm9jZXNzX2FfZGF0YV9jaHVuayhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2Is
IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAogCQkgKi8KIAkJaWYgKHN0Y2ItPnNjdHBf
c29ja2V0LT5zb19yY3Yuc2JfY2MpIHsKIAkJCS8qIHNvbWUgdG8gcmVhZCwgd2FrZS11cCAqLwot
I2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQor
I2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJc3Ry
dWN0IHNvY2tldCAqc287CiAKIAkJCXNvID0gU0NUUF9JTlBfU08oc3RjYi0+c2N0cF9lcCk7CkBA
IC0xOTIwLDcgKzE5NzgsNyBAQCBzY3RwX3Byb2Nlc3NfYV9kYXRhX2NodW5rKHN0cnVjdCBzY3Rw
X3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiAJCQl9CiAjZW5kaWYK
IAkJCXNjdHBfc29yd2FrZXVwKHN0Y2ItPnNjdHBfZXAsIHN0Y2ItPnNjdHBfc29ja2V0KTsKLSNp
ZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNp
ZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCVNDVFBf
U09DS0VUX1VOTE9DSyhzbywgMSk7CiAjZW5kaWYKIAkJfQpAQCAtMTk4MiwyMCArMjA0MCwyMCBA
QCBzY3RwX3Byb2Nlc3NfYV9kYXRhX2NodW5rKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0
IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiAJCQltaWQsIGFzb2MtPnN0cm1pbltzaWRdLmxhc3Rf
bWlkX2RlbGl2ZXJlZCk7CiAKIAkJaWYgKGFzb2MtPmlkYXRhX3N1cHBvcnRlZCkgewotCQkJc25w
cmludGYobXNnLCBzaXplb2YobXNnKSwgIkRlbGl2ZXJlZCBNSUQ9JTguOHgsIGdvdCBUU049JTgu
OHgsIFNJRD0lNC40eCwgTUlEPSU4Ljh4IiwKLQkJCSAgICAgICAgIGFzb2MtPnN0cm1pbltzaWRd
Lmxhc3RfbWlkX2RlbGl2ZXJlZCwKLQkJCSAgICAgICAgIHRzbiwKLQkJCSAgICAgICAgIHNpZCwK
LQkJCSAgICAgICAgIG1pZCk7CisJCQlTQ1RQX1NOUFJJTlRGKG1zZywgc2l6ZW9mKG1zZyksICJE
ZWxpdmVyZWQgTUlEPSU4Ljh4LCBnb3QgVFNOPSU4Ljh4LCBTSUQ9JTQuNHgsIE1JRD0lOC44eCIs
CisJCQkgICAgICAgICAgICAgIGFzb2MtPnN0cm1pbltzaWRdLmxhc3RfbWlkX2RlbGl2ZXJlZCwK
KwkJCSAgICAgICAgICAgICAgdHNuLAorCQkJICAgICAgICAgICAgICBzaWQsCisJCQkgICAgICAg
ICAgICAgIG1pZCk7CiAJCX0gZWxzZSB7Ci0JCQlzbnByaW50Zihtc2csIHNpemVvZihtc2cpLCAi
RGVsaXZlcmVkIFNTTj0lNC40eCwgZ290IFRTTj0lOC44eCwgU0lEPSU0LjR4LCBTU049JTQuNHgi
LAotCQkJICAgICAgICAgKHVpbnQxNl90KWFzb2MtPnN0cm1pbltzaWRdLmxhc3RfbWlkX2RlbGl2
ZXJlZCwKLQkJCSAgICAgICAgIHRzbiwKLQkJCSAgICAgICAgIHNpZCwKLQkJCSAgICAgICAgICh1
aW50MTZfdCltaWQpOworCQkJU0NUUF9TTlBSSU5URihtc2csIHNpemVvZihtc2cpLCAiRGVsaXZl
cmVkIFNTTj0lNC40eCwgZ290IFRTTj0lOC44eCwgU0lEPSU0LjR4LCBTU049JTQuNHgiLAorCQkJ
ICAgICAgICAgICAgICAodWludDE2X3QpYXNvYy0+c3RybWluW3NpZF0ubGFzdF9taWRfZGVsaXZl
cmVkLAorCQkJICAgICAgICAgICAgICB0c24sCisJCQkgICAgICAgICAgICAgIHNpZCwKKwkJCSAg
ICAgICAgICAgICAgKHVpbnQxNl90KW1pZCk7CiAJCX0KIAkJb3BfZXJyID0gc2N0cF9nZW5lcmF0
ZV9jYXVzZShTQ1RQX0NBVVNFX1BST1RPQ09MX1ZJT0xBVElPTiwgbXNnKTsKLQkJc3RjYi0+c2N0
cF9lcC0+bGFzdF9hYm9ydF9jb2RlID0gU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9MT0Nf
MTY7CisJCXN0Y2ItPnNjdHBfZXAtPmxhc3RfYWJvcnRfY29kZSA9IFNDVFBfRlJPTV9TQ1RQX0lO
REFUQSArIFNDVFBfTE9DXzE4OwogCQlzY3RwX2Fib3J0X2FuX2Fzc29jaWF0aW9uKHN0Y2ItPnNj
dHBfZXAsIHN0Y2IsIG9wX2VyciwgU0NUUF9TT19OT1RfTE9DS0VEKTsKIAkJKmFib3J0X2ZsYWcg
PSAxOwogCQlyZXR1cm4gKDApOwpAQCAtMjA3MiwxMCArMjEzMCwxMyBAQCBzY3RwX3Byb2Nlc3Nf
YV9kYXRhX2NodW5rKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfYXNzb2NpYXRp
b24gKmFzb2MsCiAJCQlzdHJ1Y3QgbWJ1ZiAqbW07CiAKIAkJCWNvbnRyb2wtPmRhdGEgPSBkbWJ1
ZjsKKwkJCWNvbnRyb2wtPnRhaWxfbWJ1ZiA9IE5VTEw7CiAJCQlmb3IgKG1tID0gY29udHJvbC0+
ZGF0YTsgbW07IG1tID0gbW0tPm1fbmV4dCkgewogCQkJCWNvbnRyb2wtPmxlbmd0aCArPSBTQ1RQ
X0JVRl9MRU4obW0pOworCQkJCWlmIChTQ1RQX0JVRl9ORVhUKG1tKSA9PSBOVUxMKSB7CisJCQkJ
CWNvbnRyb2wtPnRhaWxfbWJ1ZiA9IG1tOworCQkJCX0KIAkJCX0KLQkJCWNvbnRyb2wtPnRhaWxf
bWJ1ZiA9IE5VTEw7CiAJCQljb250cm9sLT5lbmRfYWRkZWQgPSAxOwogCQkJY29udHJvbC0+bGFz
dF9mcmFnX3NlZW4gPSAxOwogCQkJY29udHJvbC0+Zmlyc3RfZnJhZ19zZWVuID0gMTsKQEAgLTIy
OTQsMTIgKzIzNTUsMTMgQEAgZmluaXNoX2V4cHJlc3NfZGVsOgogCQkJLyogQWxsIGNhbiBiZSBy
ZW1vdmVkICovCiAJCQlUQUlMUV9GT1JFQUNIX1NBRkUoY29udHJvbCwgJmFzb2MtPnBlbmRpbmdf
cmVwbHlfcXVldWUsIG5leHQsIG5jb250cm9sKSB7CiAJCQkJVEFJTFFfUkVNT1ZFKCZhc29jLT5w
ZW5kaW5nX3JlcGx5X3F1ZXVlLCBjb250cm9sLCBuZXh0KTsKKwkJCQlzdHJtID0gJmFzb2MtPnN0
cm1pbltjb250cm9sLT5zaW5mb19zdHJlYW1dOwogCQkJCXNjdHBfcXVldWVfZGF0YV90b19zdHJl
YW0oc3RjYiwgYXNvYywgY29udHJvbCwgYWJvcnRfZmxhZywgJm5lZWRfcmVhc21fY2hlY2spOwog
CQkJCWlmICgqYWJvcnRfZmxhZykgewogCQkJCQlyZXR1cm4gKDApOwogCQkJCX0KIAkJCQlpZiAo
bmVlZF9yZWFzbV9jaGVjaykgewotCQkJCQkodm9pZClzY3RwX2RlbGl2ZXJfcmVhc21fY2hlY2so
c3RjYiwgYXNvYywgJmFzb2MtPnN0cm1pbltjb250cm9sLT5zaW5mb19zdHJlYW1dLCBTQ1RQX1JF
QURfTE9DS19OT1RfSEVMRCk7CisJCQkJCSh2b2lkKXNjdHBfZGVsaXZlcl9yZWFzbV9jaGVjayhz
dGNiLCBhc29jLCBzdHJtLCBTQ1RQX1JFQURfTE9DS19OT1RfSEVMRCk7CiAJCQkJCW5lZWRfcmVh
c21fY2hlY2sgPSAwOwogCQkJCX0KIAkJCX0KQEAgLTIzMTQsMTIgKzIzNzYsMTMgQEAgZmluaXNo
X2V4cHJlc3NfZGVsOgogCQkJCSAqIGNvbnRyb2wtPnNpbmZvX3RzbiA+IGxpc3RlLT50c24KIAkJ
CQkgKi8KIAkJCQlUQUlMUV9SRU1PVkUoJmFzb2MtPnBlbmRpbmdfcmVwbHlfcXVldWUsIGNvbnRy
b2wsIG5leHQpOworCQkJCXN0cm0gPSAmYXNvYy0+c3RybWluW2NvbnRyb2wtPnNpbmZvX3N0cmVh
bV07CiAJCQkJc2N0cF9xdWV1ZV9kYXRhX3RvX3N0cmVhbShzdGNiLCBhc29jLCBjb250cm9sLCBh
Ym9ydF9mbGFnLCAmbmVlZF9yZWFzbV9jaGVjayk7CiAJCQkJaWYgKCphYm9ydF9mbGFnKSB7CiAJ
CQkJCXJldHVybiAoMCk7CiAJCQkJfQogCQkJCWlmIChuZWVkX3JlYXNtX2NoZWNrKSB7Ci0JCQkJ
CSh2b2lkKXNjdHBfZGVsaXZlcl9yZWFzbV9jaGVjayhzdGNiLCBhc29jLCAmYXNvYy0+c3RybWlu
W2NvbnRyb2wtPnNpbmZvX3N0cmVhbV0sIFNDVFBfUkVBRF9MT0NLX05PVF9IRUxEKTsKKwkJCQkJ
KHZvaWQpc2N0cF9kZWxpdmVyX3JlYXNtX2NoZWNrKHN0Y2IsIGFzb2MsIHN0cm0sIFNDVFBfUkVB
RF9MT0NLX05PVF9IRUxEKTsKIAkJCQkJbmVlZF9yZWFzbV9jaGVjayA9IDA7CiAJCQkJfQogCQkJ
fQpAQCAtMjU1NCw3ICsyNjE3LDcgQEAgc2N0cF9zYWNrX2NoZWNrKHN0cnVjdCBzY3RwX3RjYiAq
c3RjYiwgaW50IHdhc19hX2dhcCkKIAkgKiBOb3cgd2UgbmVlZCB0byBzZWUgaWYgd2UgbmVlZCB0
byBxdWV1ZSBhIHNhY2sgb3IganVzdCBzdGFydCB0aGUKIAkgKiB0aW1lciAoaWYgYWxsb3dlZCku
CiAJICovCi0JaWYgKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05f
U0VOVCkgeworCWlmIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dO
X1NFTlQpIHsKIAkJLyoKIAkJICogT2sgc3BlY2lhbCBjYXNlLCBpbiBTSFVURE9XTi1TRU5UIGNh
c2UuIGhlcmUgd2UKIAkJICogbWFrZXIgc3VyZSBTQUNLIHRpbWVyIGlzIG9mZiBhbmQgaW5zdGVh
ZCBzZW5kIGEKQEAgLTI1NjMsNyArMjYyNiw3IEBAIHNjdHBfc2Fja19jaGVjayhzdHJ1Y3Qgc2N0
cF90Y2IgKnN0Y2IsIGludCB3YXNfYV9nYXApCiAJCWlmIChTQ1RQX09TX1RJTUVSX1BFTkRJTkco
JnN0Y2ItPmFzb2MuZGFja190aW1lci50aW1lcikpIHsKIAkJCXNjdHBfdGltZXJfc3RvcChTQ1RQ
X1RJTUVSX1RZUEVfUkVDViwKIAkJCSAgICAgICAgICAgICAgICBzdGNiLT5zY3RwX2VwLCBzdGNi
LCBOVUxMLAotCQkJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBf
TE9DXzE3KTsKKwkJCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQ
X0xPQ18xOSk7CiAJCX0KIAkJc2N0cF9zZW5kX3NodXRkb3duKHN0Y2IsCiAJCSAgICAgICAgICAg
ICAgICAgICAoKHN0Y2ItPmFzb2MuYWx0ZXJuYXRlKSA/IHN0Y2ItPmFzb2MuYWx0ZXJuYXRlIDog
c3RjYi0+YXNvYy5wcmltYXJ5X2Rlc3RpbmF0aW9uKSk7CkBAIC0yNjE0LDcgKzI2NzcsOCBAQCBz
Y3RwX3NhY2tfY2hlY2soc3RydWN0IHNjdHBfdGNiICpzdGNiLCBpbnQgd2FzX2FfZ2FwKQogCQkJ
CSAqIGZpcnN0IHBhY2tldCBPUiB0aGVyZSBhcmUgZ2FwcyBvcgogCQkJCSAqIGR1cGxpY2F0ZXMu
CiAJCQkJICovCi0JCQkJKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCZzdGNiLT5hc29jLmRhY2tf
dGltZXIudGltZXIpOworCQkJCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfUkVDViwg
c3RjYi0+c2N0cF9lcCwgc3RjYiwgTlVMTCwKKwkJCQkgICAgICAgICAgICAgICAgU0NUUF9GUk9N
X1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMjApOwogCQkJCXNjdHBfc2VuZF9zYWNrKHN0Y2IsIFND
VFBfU09fTk9UX0xPQ0tFRCk7CiAJCQl9CiAJCX0gZWxzZSB7CkBAIC0yNjYwLDE0ICsyNzI0LDEy
IEBAIHNjdHBfcHJvY2Vzc19kYXRhKHN0cnVjdCBtYnVmICoqbW0sIGludCBpcGhsZW4sIGludCAq
b2Zmc2V0LCBpbnQgbGVuZ3RoLAogCSAqLwogCWFzb2MtPmxhc3RfZGF0YV9jaHVua19mcm9tID0g
bmV0OwogCi0jaWZuZGVmIF9fUGFuZGFfXwogCS8qLQogCSAqIE5vdyBiZWZvcmUgd2UgcHJvY2Vl
ZCB3ZSBtdXN0IGZpZ3VyZSBvdXQgaWYgdGhpcyBpcyBhIHdhc3RlZAogCSAqIGNsdXN0ZXIuLi4g
aS5lLiBpdCBpcyBhIHNtYWxsIHBhY2tldCBzZW50IGluIGFuZCB5ZXQgdGhlIGRyaXZlcgogCSAq
IHVuZGVybmVhdGggYWxsb2NhdGVkIGEgZnVsbCBjbHVzdGVyIGZvciBpdC4gSWYgc28gd2UgbXVz
dCBjb3B5IGl0CiAJICogdG8gYSBzbWFsbGVyIG1idWYgYW5kIGZyZWUgdXAgdGhlIGNsdXN0ZXIg
bWJ1Zi4gVGhpcyB3aWxsIGhlbHAKLQkgKiB3aXRoIGNsdXN0ZXIgc3RhcnZhdGlvbi4gTm90ZSBm
b3IgX19QYW5kYV9fIHdlIGRvbid0IGRvIHRoaXMKLQkgKiBzaW5jZSBpdCBoYXMgY2x1c3RlcnMg
YWxsIHRoZSB3YXkgZG93biB0byA2NCBieXRlcy4KKwkgKiB3aXRoIGNsdXN0ZXIgc3RhcnZhdGlv
bi4KIAkgKi8KIAlpZiAoU0NUUF9CVUZfTEVOKG0pIDwgKGxvbmcpTUxFTiAmJiBTQ1RQX0JVRl9O
RVhUKG0pID09IE5VTEwpIHsKIAkJLyogd2Ugb25seSBoYW5kbGUgbWJ1ZnMgdGhhdCBhcmUgc2lu
Z2xldG9ucy4uIG5vdCBjaGFpbnMgKi8KQEAgLTI2ODksNyArMjc1MSw2IEBAIHNjdHBfcHJvY2Vz
c19kYXRhKHN0cnVjdCBtYnVmICoqbW0sIGludCBpcGhsZW4sIGludCAqb2Zmc2V0LCBpbnQgbGVu
Z3RoLAogCQkJbSA9ICptbTsKIAkJfQogCX0KLSNlbmRpZgogCS8qIGdldCBwb2ludGVyIHRvIHRo
ZSBmaXJzdCBjaHVuayBoZWFkZXIgKi8KIAljaCA9IChzdHJ1Y3Qgc2N0cF9jaHVua2hkciAqKXNj
dHBfbV9nZXRwdHIobSwgKm9mZnNldCwKIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBzY3RwX2NodW5raGRyKSwKQEAgLTI3MTYsOSArMjc3
Nyw5IEBAIHNjdHBfcHJvY2Vzc19kYXRhKHN0cnVjdCBtYnVmICoqbW0sIGludCBpcGhsZW4sIGlu
dCAqb2Zmc2V0LCBpbnQgbGVuZ3RoLAogCQkJc3RydWN0IG1idWYgKm9wX2VycjsKIAkJCWNoYXIg
bXNnW1NDVFBfRElBR19JTkZPX0xFTl07CiAKLQkJCXNucHJpbnRmKG1zZywgc2l6ZW9mKG1zZyks
ICIlcyIsICJJLURBVEEgY2h1bmsgcmVjZWl2ZWQgd2hlbiBEQVRBIHdhcyBuZWdvdGlhdGVkIik7
CisJCQlTQ1RQX1NOUFJJTlRGKG1zZywgc2l6ZW9mKG1zZyksICIlcyIsICJEQVRBIGNodW5rIHJl
Y2VpdmVkIHdoZW4gSS1EQVRBIHdhcyBuZWdvdGlhdGVkIik7CiAJCQlvcF9lcnIgPSBzY3RwX2dl
bmVyYXRlX2NhdXNlKFNDVFBfQ0FVU0VfUFJPVE9DT0xfVklPTEFUSU9OLCBtc2cpOwotCQkJc3Rj
Yi0+c2N0cF9lcC0+bGFzdF9hYm9ydF9jb2RlID0gU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NU
UF9MT0NfMTg7CisJCQlzdGNiLT5zY3RwX2VwLT5sYXN0X2Fib3J0X2NvZGUgPSBTQ1RQX0ZST01f
U0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18yMTsKIAkJCXNjdHBfYWJvcnRfYW5fYXNzb2NpYXRpb24o
aW5wLCBzdGNiLCBvcF9lcnIsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CiAJCQlyZXR1cm4gKDIpOwog
CQl9CkBAIC0yNzI3LDkgKzI3ODgsOSBAQCBzY3RwX3Byb2Nlc3NfZGF0YShzdHJ1Y3QgbWJ1ZiAq
Km1tLCBpbnQgaXBobGVuLCBpbnQgKm9mZnNldCwgaW50IGxlbmd0aCwKIAkJCXN0cnVjdCBtYnVm
ICpvcF9lcnI7CiAJCQljaGFyIG1zZ1tTQ1RQX0RJQUdfSU5GT19MRU5dOwogCi0JCQlzbnByaW50
Zihtc2csIHNpemVvZihtc2cpLCAiJXMiLCAiREFUQSBjaHVuayByZWNlaXZlZCB3aGVuIEktREFU
QSB3YXMgbmVnb3RpYXRlZCIpOworCQkJU0NUUF9TTlBSSU5URihtc2csIHNpemVvZihtc2cpLCAi
JXMiLCAiSS1EQVRBIGNodW5rIHJlY2VpdmVkIHdoZW4gREFUQSB3YXMgbmVnb3RpYXRlZCIpOwog
CQkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQX0NBVVNFX1BST1RPQ09MX1ZJT0xB
VElPTiwgbXNnKTsKLQkJCXN0Y2ItPnNjdHBfZXAtPmxhc3RfYWJvcnRfY29kZSA9IFNDVFBfRlJP
TV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzE5OworCQkJc3RjYi0+c2N0cF9lcC0+bGFzdF9hYm9y
dF9jb2RlID0gU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMjI7CiAJCQlzY3RwX2Fi
b3J0X2FuX2Fzc29jaWF0aW9uKGlucCwgc3RjYiwgb3BfZXJyLCBTQ1RQX1NPX05PVF9MT0NLRUQp
OwogCQkJcmV0dXJuICgyKTsKIAkJfQpAQCAtMjc1MCwxMSArMjgxMSwxMSBAQCBzY3RwX3Byb2Nl
c3NfZGF0YShzdHJ1Y3QgbWJ1ZiAqKm1tLCBpbnQgaXBobGVuLCBpbnQgKm9mZnNldCwgaW50IGxl
bmd0aCwKIAkJCQlzdHJ1Y3QgbWJ1ZiAqb3BfZXJyOwogCQkJCWNoYXIgbXNnW1NDVFBfRElBR19J
TkZPX0xFTl07CiAKLQkJCQlzbnByaW50Zihtc2csIHNpemVvZihtc2cpLCAiJXMgY2h1bmsgb2Yg
bGVuZ3RoICV1IiwKLQkJCQkgICAgICAgICBjaC0+Y2h1bmtfdHlwZSA9PSBTQ1RQX0RBVEEgPyAi
REFUQSIgOiAiSS1EQVRBIiwKLQkJCQkgICAgICAgICBjaGtfbGVuZ3RoKTsKKwkJCQlTQ1RQX1NO
UFJJTlRGKG1zZywgc2l6ZW9mKG1zZyksICIlcyBjaHVuayBvZiBsZW5ndGggJXUiLAorCQkJCSAg
ICAgICAgICAgICAgY2gtPmNodW5rX3R5cGUgPT0gU0NUUF9EQVRBID8gIkRBVEEiIDogIkktREFU
QSIsCisJCQkJICAgICAgICAgICAgICBjaGtfbGVuZ3RoKTsKIAkJCQlvcF9lcnIgPSBzY3RwX2dl
bmVyYXRlX2NhdXNlKFNDVFBfQ0FVU0VfUFJPVE9DT0xfVklPTEFUSU9OLCBtc2cpOwotCQkJCXN0
Y2ItPnNjdHBfZXAtPmxhc3RfYWJvcnRfY29kZSA9IFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFND
VFBfTE9DXzIwOworCQkJCXN0Y2ItPnNjdHBfZXAtPmxhc3RfYWJvcnRfY29kZSA9IFNDVFBfRlJP
TV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzIzOwogCQkJCXNjdHBfYWJvcnRfYW5fYXNzb2NpYXRp
b24oaW5wLCBzdGNiLCBvcF9lcnIsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CiAJCQkJcmV0dXJuICgy
KTsKIAkJCX0KQEAgLTI3NjYsNyArMjgyNyw3IEBAIHNjdHBfcHJvY2Vzc19kYXRhKHN0cnVjdCBt
YnVmICoqbW0sIGludCBpcGhsZW4sIGludCAqb2Zmc2V0LCBpbnQgbGVuZ3RoLAogCQkJfSBlbHNl
IHsKIAkJCQlsYXN0X2NodW5rID0gMDsKIAkJCX0KLQkJCWlmIChzY3RwX3Byb2Nlc3NfYV9kYXRh
X2NodW5rKHN0Y2IsIGFzb2MsIG1tLCAqb2Zmc2V0LCAKKwkJCWlmIChzY3RwX3Byb2Nlc3NfYV9k
YXRhX2NodW5rKHN0Y2IsIGFzb2MsIG1tLCAqb2Zmc2V0LAogCQkJCQkJICAgICAgY2hrX2xlbmd0
aCwgbmV0LCBoaWdoX3RzbiwgJmFib3J0X2ZsYWcsICZicmVha19mbGFnLAogCQkJCQkJICAgICAg
bGFzdF9jaHVuaywgY2gtPmNodW5rX3R5cGUpKSB7CiAJCQkJbnVtX2NodW5rcysrOwpAQCAtMjgx
OSw4ICsyODgwLDggQEAgc2N0cF9wcm9jZXNzX2RhdGEoc3RydWN0IG1idWYgKiptbSwgaW50IGlw
aGxlbiwgaW50ICpvZmZzZXQsIGludCBsZW5ndGgsCiAJCQkJc3RydWN0IG1idWYgKm9wX2VycjsK
IAkJCQljaGFyIG1zZ1tTQ1RQX0RJQUdfSU5GT19MRU5dOwogCi0JCQkJc25wcmludGYobXNnLCBz
aXplb2YobXNnKSwgIkRBVEEgY2h1bmsgZm9sbG93ZWQgYnkgY2h1bmsgb2YgdHlwZSAlMi4yeCIs
Ci0JCQkJICAgICAgICAgY2gtPmNodW5rX3R5cGUpOworCQkJCVNDVFBfU05QUklOVEYobXNnLCBz
aXplb2YobXNnKSwgIkRBVEEgY2h1bmsgZm9sbG93ZWQgYnkgY2h1bmsgb2YgdHlwZSAlMi4yeCIs
CisJCQkJICAgICAgICAgICAgICBjaC0+Y2h1bmtfdHlwZSk7CiAJCQkJb3BfZXJyID0gc2N0cF9n
ZW5lcmF0ZV9jYXVzZShTQ1RQX0NBVVNFX1BST1RPQ09MX1ZJT0xBVElPTiwgbXNnKTsKIAkJCQlz
Y3RwX2Fib3J0X2FuX2Fzc29jaWF0aW9uKGlucCwgc3RjYiwgb3BfZXJyLCBTQ1RQX1NPX05PVF9M
T0NLRUQpOwogCQkJCXJldHVybiAoMik7CkBAIC0yODM4LDEwICsyODk5LDkgQEAgc2N0cF9wcm9j
ZXNzX2RhdGEoc3RydWN0IG1idWYgKiptbSwgaW50IGlwaGxlbiwgaW50ICpvZmZzZXQsIGludCBs
ZW5ndGgsCiAJCQkJCXN0cnVjdCBtYnVmICpvcF9lcnI7CiAJCQkJCWNoYXIgbXNnW1NDVFBfRElB
R19JTkZPX0xFTl07CiAKLQkJCQkJc25wcmludGYobXNnLCBzaXplb2YobXNnKSwgIkNodW5rIG9m
IGxlbmd0aCAldSIsCi0JCQkJCQkgY2hrX2xlbmd0aCk7CisJCQkJCVNDVFBfU05QUklOVEYobXNn
LCBzaXplb2YobXNnKSwgIkNodW5rIG9mIGxlbmd0aCAldSIsIGNoa19sZW5ndGgpOwogCQkJCQlv
cF9lcnIgPSBzY3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBfQ0FVU0VfUFJPVE9DT0xfVklPTEFUSU9O
LCBtc2cpOwotCQkJCQlzdGNiLT5zY3RwX2VwLT5sYXN0X2Fib3J0X2NvZGUgPSBTQ1RQX0ZST01f
U0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18yMDsKKwkJCQkJc3RjYi0+c2N0cF9lcC0+bGFzdF9hYm9y
dF9jb2RlID0gU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMjQ7CiAJCQkJCXNjdHBf
YWJvcnRfYW5fYXNzb2NpYXRpb24oaW5wLCBzdGNiLCBvcF9lcnIsIFNDVFBfU09fTk9UX0xPQ0tF
RCk7CiAJCQkJCXJldHVybiAoMik7CiAJCQkJfQpAQCAtMjkxMSw3ICsyOTcxLDcgQEAgc2N0cF9w
cm9jZXNzX2RhdGEoc3RydWN0IG1idWYgKiptbSwgaW50IGlwaGxlbiwgaW50ICpvZmZzZXQsIGlu
dCBsZW5ndGgsCiAJCSh2b2lkKVNDVFBfR0VUVElNRV9USU1FVkFMKCZzdGNiLT5hc29jLnRpbWVf
bGFzdF9yY3ZkKTsKIAl9CiAJLyogbm93IHNlcnZpY2UgYWxsIG9mIHRoZSByZWFzc20gcXVldWUg
aWYgbmVlZGVkICovCi0JaWYgKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfU0hV
VERPV05fU0VOVCkgeworCWlmIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NI
VVRET1dOX1NFTlQpIHsKIAkJLyogQXNzdXJlIHRoYXQgd2UgYWNrIHJpZ2h0IGF3YXkgKi8KIAkJ
c3RjYi0+YXNvYy5zZW5kX3NhY2sgPSAxOwogCX0KQEAgLTMwNTksNyArMzExOSw3IEBAIHNjdHBf
cHJvY2Vzc19zZWdtZW50X3JhbmdlKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBf
dG1pdF9jaHVuayAqKnBfdHAxCiAJCQkJCQl0cDEtPndob1RvLT5uZXRfYWNrICs9IHRwMS0+c2Vu
ZF9zaXplOwogCQkJCQkJaWYgKHRwMS0+c25kX2NvdW50IDwgMikgewogCQkJCQkJCS8qLQotCQkJ
CQkJCSAqIFRydWUgbm9uLXJldHJhbnNtaXRlZCBjaHVuaworCQkJCQkJCSAqIFRydWUgbm9uLXJl
dHJhbnNtaXR0ZWQgY2h1bmsKIAkJCQkJCQkgKi8KIAkJCQkJCQl0cDEtPndob1RvLT5uZXRfYWNr
MiArPSB0cDEtPnNlbmRfc2l6ZTsKIApAQCAtMzA2NywxMyArMzEyNywxMiBAQCBzY3RwX3Byb2Nl
c3Nfc2VnbWVudF9yYW5nZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX3RtaXRf
Y2h1bmsgKipwX3RwMQogCQkJCQkJCSAqIHVwZGF0ZSBSVE8gdG9vID8KIAkJCQkJCQkgKi8KIAkJ
CQkJCQlpZiAodHAxLT5kb19ydHQpIHsKLQkJCQkJCQkJaWYgKCpydG9fb2spIHsKLQkJCQkJCQkJ
CXRwMS0+d2hvVG8tPlJUTyA9Ci0JCQkJCQkJCQkJc2N0cF9jYWxjdWxhdGVfcnRvKHN0Y2IsCi0J
CQkJCQkJCQkJCQkgICAmc3RjYi0+YXNvYywKLQkJCQkJCQkJCQkJCSAgIHRwMS0+d2hvVG8sCi0J
CQkJCQkJCQkJCQkgICAmdHAxLT5zZW50X3Jjdl90aW1lLAotCQkJCQkJCQkJCQkJICAgU0NUUF9S
VFRfRlJPTV9EQVRBKTsKKwkJCQkJCQkJaWYgKCpydG9fb2sgJiYKKwkJCQkJCQkJICAgIHNjdHBf
Y2FsY3VsYXRlX3J0byhzdGNiLAorCQkJCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICZzdGNi
LT5hc29jLAorCQkJCQkJCQkgICAgICAgICAgICAgICAgICAgICAgIHRwMS0+d2hvVG8sCisJCQkJ
CQkJCSAgICAgICAgICAgICAgICAgICAgICAgJnRwMS0+c2VudF9yY3ZfdGltZSwKKwkJCQkJCQkJ
ICAgICAgICAgICAgICAgICAgICAgICBTQ1RQX1JUVF9GUk9NX0RBVEEpKSB7CiAJCQkJCQkJCQkq
cnRvX29rID0gMDsKIAkJCQkJCQkJfQogCQkJCQkJCQlpZiAodHAxLT53aG9Uby0+cnRvX25lZWRl
ZCA9PSAwKSB7CkBAIC0zMzM0LDcgKzMzOTMsNyBAQCBzY3RwX3N0cmlrZV9nYXBfYWNrX2NodW5r
cyhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAog
CQlpZiAoc3RjYi0+YXNvYy5wcnNjdHBfc3VwcG9ydGVkKSB7CiAJCQlpZiAoKFBSX1NDVFBfVFRM
X0VOQUJMRUQodHAxLT5mbGFncykpICYmIHRwMS0+c2VudCA8IFNDVFBfREFUQUdSQU1fQUNLRUQp
IHsKIAkJCQkvKiBJcyBpdCBleHBpcmVkPyAqLwotI2lmbmRlZiBfX0ZyZWVCU0RfXworI2lmICEo
ZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAJCQkJaWYg
KHRpbWVyY21wKCZub3csICZ0cDEtPnJlYy5kYXRhLnRpbWV0b2Ryb3AsID4pKSB7CiAjZWxzZQog
CQkJCWlmICh0aW1ldmFsY21wKCZub3csICZ0cDEtPnJlYy5kYXRhLnRpbWV0b2Ryb3AsID4pKSB7
CkBAIC0zNzYyLDcgKzM4MjEsNyBAQCBzY3RwX3RyeV9hZHZhbmNlX3BlZXJfYWNrX3BvaW50KHN0
cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJCSAqIE5vdyBpcyB0aGlzIG9uZSBtYXJrZWQgZm9yIHJl
c2VuZCBhbmQgaXRzIHRpbWUgaXMKIAkJCSAqIG5vdyB1cD8KIAkJCSAqLwotI2lmbmRlZiBfX0Zy
ZWVCU0RfXworI2lmICEoZGVmaW5lZChfX0ZyZWVCU0RfXykgICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pKQogCQkJaWYgKHRpbWVyY21wKCZub3csICZ0cDEtPnJlYy5kYXRhLnRpbWV0b2Ryb3As
ID4pKSB7CiAjZWxzZQogCQkJaWYgKHRpbWV2YWxjbXAoJm5vdywgJnRwMS0+cmVjLmRhdGEudGlt
ZXRvZHJvcCwgPikpIHsKQEAgLTM5NzEsMTAgKzQwMzAsMTEgQEAgc2N0cF9leHByZXNzX2hhbmRs
ZV9zYWNrKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgdWludDMyX3QgY3VtYWNrLAogCiAJCSphYm9y
dF9ub3cgPSAxOwogCQkvKiBYWFggKi8KLQkJc25wcmludGYobXNnLCBzaXplb2YobXNnKSwgIkN1
bSBhY2sgJTguOHggZ3JlYXRlciBvciBlcXVhbCB0aGFuIFRTTiAlOC44eCIsCi0JCQkgY3VtYWNr
LCBzZW5kX3MpOworCQlTQ1RQX1NOUFJJTlRGKG1zZywgc2l6ZW9mKG1zZyksCisJCSAgICAgICAg
ICAgICAgIkN1bSBhY2sgJTguOHggZ3JlYXRlciBvciBlcXVhbCB0aGFuIFRTTiAlOC44eCIsCisJ
CSAgICAgICAgICAgICAgY3VtYWNrLCBzZW5kX3MpOwogCQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRl
X2NhdXNlKFNDVFBfQ0FVU0VfUFJPVE9DT0xfVklPTEFUSU9OLCBtc2cpOwotCQlzdGNiLT5zY3Rw
X2VwLT5sYXN0X2Fib3J0X2NvZGUgPSBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18y
MTsKKwkJc3RjYi0+c2N0cF9lcC0+bGFzdF9hYm9ydF9jb2RlID0gU0NUUF9GUk9NX1NDVFBfSU5E
QVRBICsgU0NUUF9MT0NfMjU7CiAJCXNjdHBfYWJvcnRfYW5fYXNzb2NpYXRpb24oc3RjYi0+c2N0
cF9lcCwgc3RjYiwgb3BfZXJyLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwogCQlyZXR1cm47CiAJfQpA
QCAtNDAxOSw3ICs0MDc5LDcgQEAgc2N0cF9leHByZXNzX2hhbmRsZV9zYWNrKHN0cnVjdCBzY3Rw
X3RjYiAqc3RjYiwgdWludDMyX3QgY3VtYWNrLAogCQkJCQl0cDEtPndob1RvLT5uZXRfYWNrICs9
IHRwMS0+c2VuZF9zaXplOwogCQkJCQlpZiAodHAxLT5zbmRfY291bnQgPCAyKSB7CiAJCQkJCQkv
KgotCQkJCQkJICogVHJ1ZSBub24tcmV0cmFuc21pdGVkCisJCQkJCQkgKiBUcnVlIG5vbi1yZXRy
YW5zbWl0dGVkCiAJCQkJCQkgKiBjaHVuawogCQkJCQkJICovCiAJCQkJCQl0cDEtPndob1RvLT5u
ZXRfYWNrMiArPQpAQCAtNDAyNywxNiArNDA4NywxMiBAQCBzY3RwX2V4cHJlc3NfaGFuZGxlX3Nh
Y2soc3RydWN0IHNjdHBfdGNiICpzdGNiLCB1aW50MzJfdCBjdW1hY2ssCiAKIAkJCQkJCS8qIHVw
ZGF0ZSBSVE8gdG9vPyAqLwogCQkJCQkJaWYgKHRwMS0+ZG9fcnR0KSB7Ci0JCQkJCQkJaWYgKHJ0
b19vaykgewotCQkJCQkJCQl0cDEtPndob1RvLT5SVE8gPQotCQkJCQkJCQkJLyoKLQkJCQkJCQkJ
CSAqIHNhX2lnbm9yZQotCQkJCQkJCQkJICogTk9fTlVMTF9DSEsKLQkJCQkJCQkJCSAqLwotCQkJ
CQkJCQkJc2N0cF9jYWxjdWxhdGVfcnRvKHN0Y2IsCi0JCQkJCQkJCQkJCSAgIGFzb2MsIHRwMS0+
d2hvVG8sCi0JCQkJCQkJCQkJCSAgICZ0cDEtPnNlbnRfcmN2X3RpbWUsCi0JCQkJCQkJCQkJCSAg
IFNDVFBfUlRUX0ZST01fREFUQSk7CisJCQkJCQkJaWYgKHJ0b19vayAmJgorCQkJCQkJCSAgICBz
Y3RwX2NhbGN1bGF0ZV9ydG8oc3RjYiwKKwkJCQkJCQkJCSAgICAgICAmc3RjYi0+YXNvYywKKwkJ
CQkJCQkJCSAgICAgICB0cDEtPndob1RvLAorCQkJCQkJCQkJICAgICAgICZ0cDEtPnNlbnRfcmN2
X3RpbWUsCisJCQkJCQkJCQkgICAgICAgU0NUUF9SVFRfRlJPTV9EQVRBKSkgewogCQkJCQkJCQly
dG9fb2sgPSAwOwogCQkJCQkJCX0KIAkJCQkJCQlpZiAodHAxLT53aG9Uby0+cnRvX25lZWRlZCA9
PSAwKSB7CkBAIC00MTI5LDcgKzQxODUsNyBAQCBzY3RwX2V4cHJlc3NfaGFuZGxlX3NhY2soc3Ry
dWN0IHNjdHBfdGNiICpzdGNiLCB1aW50MzJfdCBjdW1hY2ssCiAJCQkgICAgIChpbnAtPnNlbmRf
c2JfdGhyZXNob2xkID09IDApKSkgewogCQkJCWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29jLnJl
ZmNudCwgMSk7CiAJCQkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwotCQkJCWlucC0+c2VuZF9jYWxs
YmFjayhzdGNiLT5zY3RwX3NvY2tldCwgc2JfZnJlZV9ub3cpOworCQkJCWlucC0+c2VuZF9jYWxs
YmFjayhzdGNiLT5zY3RwX3NvY2tldCwgc2JfZnJlZV9ub3csIGlucC0+dWxwX2luZm8pOwogCQkJ
CVNDVFBfVENCX0xPQ0soc3RjYik7CiAJCQkJYXRvbWljX3N1YnRyYWN0X2ludCgmc3RjYi0+YXNv
Yy5yZWZjbnQsIDEpOwogCQkJfQpAQCAtNDEzOSw3ICs0MTk1LDcgQEAgc2N0cF9leHByZXNzX2hh
bmRsZV9zYWNrKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgdWludDMyX3QgY3VtYWNrLAogCS8qIHNh
X2lnbm9yZSBOT19OVUxMX0NISyAqLwogCWlmIChzdGNiLT5zY3RwX3NvY2tldCkgewogI2VuZGlm
Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcp
CisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCXN0
cnVjdCBzb2NrZXQgKnNvOwogCiAjZW5kaWYKQEAgLTQxNDgsNyArNDIwNCw3IEBAIHNjdHBfZXhw
cmVzc19oYW5kbGVfc2FjayhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQzMl90IGN1bWFjaywK
IAkJCS8qIHNhX2lnbm9yZSBOT19OVUxMX0NISyAqLwogCQkJc2N0cF93YWtldXBfbG9nKHN0Y2Is
IDEsIFNDVFBfV0FLRVNORF9GUk9NX1NBQ0spOwogCQl9Ci0jaWYgZGVmaW5lZChfX0FQUExFX18p
IHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCXNvID0gU0NUUF9JTlBfU08oc3RjYi0+c2N0
cF9lcCk7CiAJCWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29jLnJlZmNudCwgMSk7CiAJCVNDVFBf
VENCX1VOTE9DSyhzdGNiKTsKQEAgLTQxNjIsNyArNDIxOCw3IEBAIHNjdHBfZXhwcmVzc19oYW5k
bGVfc2FjayhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQzMl90IGN1bWFjaywKIAkJfQogI2Vu
ZGlmCiAJCXNjdHBfc293d2FrZXVwX2xvY2tlZChzdGNiLT5zY3RwX2VwLCBzdGNiLT5zY3RwX3Nv
Y2tldCk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RF
U1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAJCVNDVFBfU09DS0VUX1VOTE9DSyhzbywgMSk7CiAjZW5kaWYKIAl9IGVsc2UgewpAQCAtNDE5
Nyw3ICs0MjUzLDcgQEAgc2N0cF9leHByZXNzX2hhbmRsZV9zYWNrKHN0cnVjdCBzY3RwX3RjYiAq
c3RjYiwgdWludDMyX3QgY3VtYWNrLAogCQkJCQluZXQtPmRlc3Rfc3RhdGUgJj0gflNDVFBfQURE
Ul9QRjsKIAkJCQkJc2N0cF90aW1lcl9zdG9wKFNDVFBfVElNRVJfVFlQRV9IRUFSVEJFQVQsCiAJ
CQkJCSAgICAgICAgICAgICAgICBzdGNiLT5zY3RwX2VwLCBzdGNiLCBuZXQsCi0JCQkJCSAgICAg
ICAgICAgICAgICBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18yMik7CisJCQkJCSAg
ICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18yNik7CiAJCQkJ
CXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX0hFQVJUQkVBVCwgc3RjYi0+c2N0cF9l
cCwgc3RjYiwgbmV0KTsKIAkJCQkJYXNvYy0+Y2NfZnVuY3Rpb25zLnNjdHBfY3duZF91cGRhdGVf
ZXhpdF9wZihzdGNiLCBuZXQpOwogCQkJCQkvKiBEb25lIHdpdGggdGhpcyBuZXQgKi8KQEAgLTQy
NzIsNyArNDMyOCw3IEBAIGFnYWluOgogCQkJfSBlbHNlIGlmIChTQ1RQX09TX1RJTUVSX1BFTkRJ
TkcoJm5ldC0+cnh0X3RpbWVyLnRpbWVyKSkgewogCQkJCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJ
TUVSX1RZUEVfU0VORCwgc3RjYi0+c2N0cF9lcCwKIAkJCQkgICAgICAgICAgICAgICAgc3RjYiwg
bmV0LAotCQkJCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xP
Q18yMyk7CisJCQkJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBf
TE9DXzI3KTsKIAkJCX0KIAkJfQogCX0KQEAgLTQzMTEsMTIgKzQzNjcsMTIgQEAgYWdhaW46CiAJ
CS8qIGNsZWFuIHVwICovCiAJCWlmICgoYXNvYy0+c3RyZWFtX3F1ZXVlX2NudCA9PSAxKSAmJgog
CQkgICAgKChhc29jLT5zdGF0ZSAmIFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORykgfHwKLQkJ
ICAgICAoYXNvYy0+c3RhdGUgJiBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgJiYKKwkJ
ICAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZF
RCkpICYmCiAJCSAgICAoKCphc29jLT5zc19mdW5jdGlvbnMuc2N0cF9zc19pc191c2VyX21zZ3Nf
aW5jb21wbGV0ZSkoc3RjYiwgYXNvYykpKSB7Ci0JCQlhc29jLT5zdGF0ZSB8PSBTQ1RQX1NUQVRF
X1BBUlRJQUxfTVNHX0xFRlQ7CisJCQlTQ1RQX0FERF9TVUJTVEFURShzdGNiLCBTQ1RQX1NUQVRF
X1BBUlRJQUxfTVNHX0xFRlQpOwogCQl9CiAJCWlmICgoKGFzb2MtPnN0YXRlICYgU0NUUF9TVEFU
RV9TSFVURE9XTl9QRU5ESU5HKSB8fAotCQkgICAgICAoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0g
U0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkpICYmCisJCSAgICAgKFNDVFBfR0VUX1NUQVRF
KHN0Y2IpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpKSAmJgogCQkgICAgKGFzb2Mt
PnN0cmVhbV9xdWV1ZV9jbnQgPT0gMSkgJiYKIAkJICAgIChhc29jLT5zdGF0ZSAmIFNDVFBfU1RB
VEVfUEFSVElBTF9NU0dfTEVGVCkpIHsKIAkJCXN0cnVjdCBtYnVmICpvcF9lcnI7CkBAIC00MzI0
LDcgKzQzODAsNyBAQCBhZ2FpbjoKIAkJCSphYm9ydF9ub3cgPSAxOwogCQkJLyogWFhYICovCiAJ
CQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBfQ0FVU0VfVVNFUl9JTklUSUFURURf
QUJULCAiIik7Ci0JCQlzdGNiLT5zY3RwX2VwLT5sYXN0X2Fib3J0X2NvZGUgPSBTQ1RQX0ZST01f
U0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18yNDsKKwkJCXN0Y2ItPnNjdHBfZXAtPmxhc3RfYWJvcnRf
Y29kZSA9IFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzI4OwogCQkJc2N0cF9hYm9y
dF9hbl9hc3NvY2lhdGlvbihzdGNiLT5zY3RwX2VwLCBzdGNiLCBvcF9lcnIsIFNDVFBfU09fTk9U
X0xPQ0tFRCk7CiAJCQlyZXR1cm47CiAJCX0KQEAgLTQzMzIsMTIgKzQzODgsMTEgQEAgYWdhaW46
CiAJCSAgICAoYXNvYy0+c3RyZWFtX3F1ZXVlX2NudCA9PSAwKSkgewogCQkJc3RydWN0IHNjdHBf
bmV0cyAqbmV0cDsKIAotCQkJaWYgKChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRF
X09QRU4pIHx8Ci0JCQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfU0hV
VERPV05fUkVDRUlWRUQpKSB7CisJCQlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBf
U1RBVEVfT1BFTikgfHwKKwkJCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFU
RV9TSFVURE9XTl9SRUNFSVZFRCkpIHsKIAkJCQlTQ1RQX1NUQVRfREVDUl9HQVVHRTMyKHNjdHBz
X2N1cnJlc3RhYik7CiAJCQl9Ci0JCQlTQ1RQX1NFVF9TVEFURShhc29jLCBTQ1RQX1NUQVRFX1NI
VVRET1dOX1NFTlQpOwotCQkJU0NUUF9DTEVBUl9TVUJTVEFURShhc29jLCBTQ1RQX1NUQVRFX1NI
VVRET1dOX1BFTkRJTkcpOworCQkJU0NUUF9TRVRfU1RBVEUoc3RjYiwgU0NUUF9TVEFURV9TSFVU
RE9XTl9TRU5UKTsKIAkJCXNjdHBfc3RvcF90aW1lcnNfZm9yX3NodXRkb3duKHN0Y2IpOwogCQkJ
aWYgKGFzb2MtPmFsdGVybmF0ZSkgewogCQkJCW5ldHAgPSBhc29jLT5hbHRlcm5hdGU7CkBAIC00
MzQ4LDE0ICs0NDAzLDEzIEBAIGFnYWluOgogCQkJc2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVS
X1RZUEVfU0hVVERPV04sCiAJCQkJCSBzdGNiLT5zY3RwX2VwLCBzdGNiLCBuZXRwKTsKIAkJCXNj
dHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NIVVRET1dOR1VBUkQsCi0JCQkJCSBzdGNi
LT5zY3RwX2VwLCBzdGNiLCBuZXRwKTsKLQkJfSBlbHNlIGlmICgoU0NUUF9HRVRfU1RBVEUoYXNv
YykgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkgJiYKKwkJCQkJIHN0Y2ItPnNjdHBf
ZXAsIHN0Y2IsIE5VTEwpOworCQl9IGVsc2UgaWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBT
Q1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSAmJgogCQkJICAgKGFzb2MtPnN0cmVhbV9xdWV1
ZV9jbnQgPT0gMCkpIHsKIAkJCXN0cnVjdCBzY3RwX25ldHMgKm5ldHA7CiAKIAkJCVNDVFBfU1RB
VF9ERUNSX0dBVUdFMzIoc2N0cHNfY3VycmVzdGFiKTsKLQkJCVNDVFBfU0VUX1NUQVRFKGFzb2Ms
IFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQpOwotCQkJU0NUUF9DTEVBUl9TVUJTVEFURShh
c29jLCBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJTkcpOworCQkJU0NUUF9TRVRfU1RBVEUoc3Rj
YiwgU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tfU0VOVCk7CiAJCQlzY3RwX3N0b3BfdGltZXJzX2Zv
cl9zaHV0ZG93bihzdGNiKTsKIAkJCWlmIChhc29jLT5hbHRlcm5hdGUpIHsKIAkJCQluZXRwID0g
YXNvYy0+YWx0ZXJuYXRlOwpAQCAtNDM5NiwxMCArNDQ1MCwxNSBAQCBhZ2FpbjoKIAkJCQl9CiAJ
CQl9CiAJCX0KLQkJaWYgKGxjaGspIHsKKwkJZm9yICg7IGxjaGsgIT0gTlVMTDsgbGNoayA9IFRB
SUxRX05FWFQobGNoaywgc2N0cF9uZXh0KSkgeworCQkJaWYgKGxjaGstPndob1RvICE9IE5VTEwp
IHsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCQlpZiAobGNoayAhPSBOVUxMKSB7CiAJCQkvKiBB
c3N1cmUgYSB0aW1lciBpcyB1cCAqLwogCQkJc2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZ
UEVfU0VORCwKLQkJCQkJIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIGxjaGstPndob1RvKTsKKwkJCSAg
ICAgICAgICAgICAgICAgc3RjYi0+c2N0cF9lcCwgc3RjYiwgbGNoay0+d2hvVG8pOwogCQl9CiAJ
fQogCWlmIChTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbG9nZ2luZ19sZXZlbCkgJiBTQ1RQX1NBQ0tf
UldORF9MT0dHSU5HX0VOQUJMRSkgewpAQCAtNDUzMiwxMCArNDU5MSwxMSBAQCBzY3RwX2hhbmRs
ZV9zYWNrKHN0cnVjdCBtYnVmICptLCBpbnQgb2Zmc2V0X3NlZywgaW50IG9mZnNldF9kdXAsCiAJ
aG9wZWxlc3NfcGVlcjoKIAkJKmFib3J0X25vdyA9IDE7CiAJCS8qIFhYWCAqLwotCQlzbnByaW50
Zihtc2csIHNpemVvZihtc2cpLCAiQ3VtIGFjayAlOC44eCBncmVhdGVyIG9yIGVxdWFsIHRoYW4g
VFNOICU4Ljh4IiwKLQkJCSBjdW1fYWNrLCBzZW5kX3MpOworCQlTQ1RQX1NOUFJJTlRGKG1zZywg
c2l6ZW9mKG1zZyksCisJCSAgICAgICAgICAgICAgIkN1bSBhY2sgJTguOHggZ3JlYXRlciBvciBl
cXVhbCB0aGFuIFRTTiAlOC44eCIsCisJCSAgICAgICAgICAgICAgY3VtX2Fjaywgc2VuZF9zKTsK
IAkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQX0NBVVNFX1BST1RPQ09MX1ZJT0xB
VElPTiwgbXNnKTsKLQkJc3RjYi0+c2N0cF9lcC0+bGFzdF9hYm9ydF9jb2RlID0gU0NUUF9GUk9N
X1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMjU7CisJCXN0Y2ItPnNjdHBfZXAtPmxhc3RfYWJvcnRf
Y29kZSA9IFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzI5OwogCQlzY3RwX2Fib3J0
X2FuX2Fzc29jaWF0aW9uKHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIG9wX2VyciwgU0NUUF9TT19OT1Rf
TE9DS0VEKTsKIAkJcmV0dXJuOwogCX0KQEAgLTQ1NjcsNyArNDYyNyw3IEBAIHNjdHBfaGFuZGxl
X3NhY2soc3RydWN0IG1idWYgKm0sIGludCBvZmZzZXRfc2VnLCBpbnQgb2Zmc2V0X2R1cCwKIAkJ
Lyogc3RvcCBhbnkgdGltZXJzICovCiAJCVRBSUxRX0ZPUkVBQ0gobmV0LCAmYXNvYy0+bmV0cywg
c2N0cF9uZXh0KSB7CiAJCQlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX1NFTkQsIHN0
Y2ItPnNjdHBfZXAsCi0JCQkgICAgICAgICAgICAgICAgc3RjYiwgbmV0LCBTQ1RQX0ZST01fU0NU
UF9JTkRBVEEgKyBTQ1RQX0xPQ18yNik7CisJCQkgICAgICAgICAgICAgICAgc3RjYiwgbmV0LCBT
Q1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18zMCk7CiAJCQluZXQtPnBhcnRpYWxfYnl0
ZXNfYWNrZWQgPSAwOwogCQkJbmV0LT5mbGlnaHRfc2l6ZSA9IDA7CiAJCX0KQEAgLTQ2NTcsNyAr
NDcxNyw3IEBAIHNjdHBfaGFuZGxlX3NhY2soc3RydWN0IG1idWYgKm0sIGludCBvZmZzZXRfc2Vn
LCBpbnQgb2Zmc2V0X2R1cCwKIAogCQkJCQlpZiAodHAxLT5zbmRfY291bnQgPCAyKSB7CiAJCQkJ
CQkvKgotCQkJCQkJICogVHJ1ZSBub24tcmV0cmFuc21pdGVkCisJCQkJCQkgKiBUcnVlIG5vbi1y
ZXRyYW5zbWl0dGVkCiAJCQkJCQkgKiBjaHVuawogCQkJCQkJICovCiAJCQkJCQl0cDEtPndob1Rv
LT5uZXRfYWNrMiArPQpAQCAtNDY2NSwxMiArNDcyNSwxMiBAQCBzY3RwX2hhbmRsZV9zYWNrKHN0
cnVjdCBtYnVmICptLCBpbnQgb2Zmc2V0X3NlZywgaW50IG9mZnNldF9kdXAsCiAKIAkJCQkJCS8q
IHVwZGF0ZSBSVE8gdG9vPyAqLwogCQkJCQkJaWYgKHRwMS0+ZG9fcnR0KSB7Ci0JCQkJCQkJaWYg
KHJ0b19vaykgewotCQkJCQkJCQl0cDEtPndob1RvLT5SVE8gPQotCQkJCQkJCQkJc2N0cF9jYWxj
dWxhdGVfcnRvKHN0Y2IsCi0JCQkJCQkJCQkJCSAgIGFzb2MsIHRwMS0+d2hvVG8sCi0JCQkJCQkJ
CQkJCSAgICZ0cDEtPnNlbnRfcmN2X3RpbWUsCi0JCQkJCQkJCQkJCSAgIFNDVFBfUlRUX0ZST01f
REFUQSk7CisJCQkJCQkJaWYgKHJ0b19vayAmJgorCQkJCQkJCSAgICBzY3RwX2NhbGN1bGF0ZV9y
dG8oc3RjYiwKKwkJCQkJCQkJCSAgICAgICAmc3RjYi0+YXNvYywKKwkJCQkJCQkJCSAgICAgICB0
cDEtPndob1RvLAorCQkJCQkJCQkJICAgICAgICZ0cDEtPnNlbnRfcmN2X3RpbWUsCisJCQkJCQkJ
CQkgICAgICAgU0NUUF9SVFRfRlJPTV9EQVRBKSkgewogCQkJCQkJCQlydG9fb2sgPSAwOwogCQkJ
CQkJCX0KIAkJCQkJCQlpZiAodHAxLT53aG9Uby0+cnRvX25lZWRlZCA9PSAwKSB7CkBAIC00NzY3
LDE0ICs0ODI3LDE0IEBAIHNjdHBfaGFuZGxlX3NhY2soc3RydWN0IG1idWYgKm0sIGludCBvZmZz
ZXRfc2VnLCBpbnQgb2Zmc2V0X2R1cCwKIAkJCWlmIChuZXQtPm5ld19wc2V1ZG9fY3VtYWNrKQog
CQkJCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfU0VORCwgc3RjYi0+c2N0cF9lcCwK
IAkJCQkgICAgICAgICAgICAgICAgc3RjYiwgbmV0LAotCQkJCSAgICAgICAgICAgICAgICBTQ1RQ
X0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18yNyk7CisJCQkJICAgICAgICAgICAgICAgIFND
VFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzMxKTsKIAogCQl9CiAJfSBlbHNlIHsKIAkJ
aWYgKGFjY3VtX21vdmVkKSB7CiAJCQlUQUlMUV9GT1JFQUNIKG5ldCwgJmFzb2MtPm5ldHMsIHNj
dHBfbmV4dCkgewogCQkJCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfU0VORCwgc3Rj
Yi0+c2N0cF9lcCwKLQkJCQkgICAgICAgICAgICAgICAgc3RjYiwgbmV0LCBTQ1RQX0ZST01fU0NU
UF9JTkRBVEEgKyBTQ1RQX0xPQ18yOCk7CisJCQkJICAgICAgICAgICAgICAgIHN0Y2IsIG5ldCwg
U0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMzIpOwogCQkJfQogCQl9CiAJfQpAQCAt
NDg1Myw3ICs0OTEzLDcgQEAgc2N0cF9oYW5kbGVfc2FjayhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IG9m
ZnNldF9zZWcsIGludCBvZmZzZXRfZHVwLAogCQkJICAgIChpbnAtPnNlbmRfc2JfdGhyZXNob2xk
ID09IDApKSkgewogCQkJCWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29jLnJlZmNudCwgMSk7CiAJ
CQkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwotCQkJCWlucC0+c2VuZF9jYWxsYmFjayhzdGNiLT5z
Y3RwX3NvY2tldCwgc2JfZnJlZV9ub3cpOworCQkJCWlucC0+c2VuZF9jYWxsYmFjayhzdGNiLT5z
Y3RwX3NvY2tldCwgc2JfZnJlZV9ub3csIGlucC0+dWxwX2luZm8pOwogCQkJCVNDVFBfVENCX0xP
Q0soc3RjYik7CiAJCQkJYXRvbWljX3N1YnRyYWN0X2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIDEp
OwogCQkJfQpAQCAtNDg2Myw3ICs0OTIzLDcgQEAgc2N0cF9oYW5kbGVfc2FjayhzdHJ1Y3QgbWJ1
ZiAqbSwgaW50IG9mZnNldF9zZWcsIGludCBvZmZzZXRfZHVwLAogCS8qIHNhX2lnbm9yZSBOT19O
VUxMX0NISyAqLwogCWlmICgod2FrZV9oaW0pICYmIChzdGNiLT5zY3RwX3NvY2tldCkpIHsKICNl
bmRpZgotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNU
SU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
CQlzdHJ1Y3Qgc29ja2V0ICpzbzsKIAogI2VuZGlmCkBAIC00ODcxLDcgKzQ5MzEsNyBAQCBzY3Rw
X2hhbmRsZV9zYWNrKHN0cnVjdCBtYnVmICptLCBpbnQgb2Zmc2V0X3NlZywgaW50IG9mZnNldF9k
dXAsCiAJCWlmIChTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbG9nZ2luZ19sZXZlbCkgJiBTQ1RQX1dB
S0VfTE9HR0lOR19FTkFCTEUpIHsKIAkJCXNjdHBfd2FrZXVwX2xvZyhzdGNiLCB3YWtlX2hpbSwg
U0NUUF9XQUtFU05EX0ZST01fU0FDSyk7CiAJCX0KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwg
ZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJc28gPSBTQ1RQX0lOUF9TTyhzdGNiLT5zY3RwX2Vw
KTsKIAkJYXRvbWljX2FkZF9pbnQoJnN0Y2ItPmFzb2MucmVmY250LCAxKTsKIAkJU0NUUF9UQ0Jf
VU5MT0NLKHN0Y2IpOwpAQCAtNDg4NSw3ICs0OTQ1LDcgQEAgc2N0cF9oYW5kbGVfc2FjayhzdHJ1
Y3QgbWJ1ZiAqbSwgaW50IG9mZnNldF9zZWcsIGludCBvZmZzZXRfZHVwLAogCQl9CiAjZW5kaWYK
IAkJc2N0cF9zb3d3YWtldXBfbG9ja2VkKHN0Y2ItPnNjdHBfZXAsIHN0Y2ItPnNjdHBfc29ja2V0
KTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElO
RykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJ
U0NUUF9TT0NLRVRfVU5MT0NLKHNvLCAxKTsKICNlbmRpZgogCX0gZWxzZSB7CkBAIC00OTc5LDcg
KzUwMzksNyBAQCBzY3RwX2hhbmRsZV9zYWNrKHN0cnVjdCBtYnVmICptLCBpbnQgb2Zmc2V0X3Nl
ZywgaW50IG9mZnNldF9kdXAsCiAJCQkJCW5ldC0+ZGVzdF9zdGF0ZSAmPSB+U0NUUF9BRERSX1BG
OwogCQkJCQlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX0hFQVJUQkVBVCwKIAkJCQkJ
ICAgICAgICAgICAgICAgIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIG5ldCwKLQkJCQkJICAgICAgICAg
ICAgICAgIFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzI5KTsKKwkJCQkJICAgICAg
ICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzMzKTsKIAkJCQkJc2N0
cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfSEVBUlRCRUFULCBzdGNiLT5zY3RwX2VwLCBz
dGNiLCBuZXQpOwogCQkJCQlhc29jLT5jY19mdW5jdGlvbnMuc2N0cF9jd25kX3VwZGF0ZV9leGl0
X3BmKHN0Y2IsIG5ldCk7CiAJCQkJCS8qIERvbmUgd2l0aCB0aGlzIG5ldCAqLwpAQCAtNTAwNCw3
ICs1MDY0LDcgQEAgc2N0cF9oYW5kbGVfc2FjayhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IG9mZnNldF9z
ZWcsIGludCBvZmZzZXRfZHVwLAogCQkJLyogc3RvcCBhbGwgdGltZXJzICovCiAJCQlzY3RwX3Rp
bWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX1NFTkQsIHN0Y2ItPnNjdHBfZXAsCiAJCQkgICAgICAg
ICAgICAgICAgc3RjYiwgbmV0LAotCQkJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX0lO
REFUQSArIFNDVFBfTE9DXzMwKTsKKwkJCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUF9J
TkRBVEEgKyBTQ1RQX0xPQ18zNCk7CiAJCQluZXQtPmZsaWdodF9zaXplID0gMDsKIAkJCW5ldC0+
cGFydGlhbF9ieXRlc19hY2tlZCA9IDA7CiAJCX0KQEAgLTUwMjksMTIgKzUwODksMTIgQEAgc2N0
cF9oYW5kbGVfc2FjayhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IG9mZnNldF9zZWcsIGludCBvZmZzZXRf
ZHVwLAogCQkvKiBjbGVhbiB1cCAqLwogCQlpZiAoKGFzb2MtPnN0cmVhbV9xdWV1ZV9jbnQgPT0g
MSkgJiYKIAkJICAgICgoYXNvYy0+c3RhdGUgJiBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJTkcp
IHx8Ci0JCSAgICAgKGFzb2MtPnN0YXRlICYgU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkp
ICYmCisJCSAgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfU0hVVERPV05f
UkVDRUlWRUQpKSAmJgogCQkgICAgKCgqYXNvYy0+c3NfZnVuY3Rpb25zLnNjdHBfc3NfaXNfdXNl
cl9tc2dzX2luY29tcGxldGUpKHN0Y2IsIGFzb2MpKSkgewotCQkJYXNvYy0+c3RhdGUgfD0gU0NU
UF9TVEFURV9QQVJUSUFMX01TR19MRUZUOworCQkJU0NUUF9BRERfU1VCU1RBVEUoc3RjYiwgU0NU
UF9TVEFURV9QQVJUSUFMX01TR19MRUZUKTsKIAkJfQogCQlpZiAoKChhc29jLT5zdGF0ZSAmIFND
VFBfU1RBVEVfU0hVVERPV05fUEVORElORykgfHwKLQkJICAgICAgKFNDVFBfR0VUX1NUQVRFKGFz
b2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpKSAmJgorCQkgICAgIChTQ1RQX0dF
VF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgJiYKIAkJICAg
IChhc29jLT5zdHJlYW1fcXVldWVfY250ID09IDEpICYmCiAJCSAgICAoYXNvYy0+c3RhdGUgJiBT
Q1RQX1NUQVRFX1BBUlRJQUxfTVNHX0xFRlQpKSB7CiAJCQlzdHJ1Y3QgbWJ1ZiAqb3BfZXJyOwpA
QCAtNTA0Miw3ICs1MTAyLDcgQEAgc2N0cF9oYW5kbGVfc2FjayhzdHJ1Y3QgbWJ1ZiAqbSwgaW50
IG9mZnNldF9zZWcsIGludCBvZmZzZXRfZHVwLAogCQkJKmFib3J0X25vdyA9IDE7CiAJCQkvKiBY
WFggKi8KIAkJCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9DQVVTRV9VU0VSX0lO
SVRJQVRFRF9BQlQsICIiKTsKLQkJCXN0Y2ItPnNjdHBfZXAtPmxhc3RfYWJvcnRfY29kZSA9IFND
VFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzI0OworCQkJc3RjYi0+c2N0cF9lcC0+bGFz
dF9hYm9ydF9jb2RlID0gU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMzU7CiAJCQlz
Y3RwX2Fib3J0X2FuX2Fzc29jaWF0aW9uKHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIG9wX2VyciwgU0NU
UF9TT19OT1RfTE9DS0VEKTsKIAkJCXJldHVybjsKIAkJfQpAQCAtNTA1MCwxMiArNTExMCwxMSBA
QCBzY3RwX2hhbmRsZV9zYWNrKHN0cnVjdCBtYnVmICptLCBpbnQgb2Zmc2V0X3NlZywgaW50IG9m
ZnNldF9kdXAsCiAJCSAgICAoYXNvYy0+c3RyZWFtX3F1ZXVlX2NudCA9PSAwKSkgewogCQkJc3Ry
dWN0IHNjdHBfbmV0cyAqbmV0cDsKIAotCQkJaWYgKChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBT
Q1RQX1NUQVRFX09QRU4pIHx8Ci0JCQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBf
U1RBVEVfU0hVVERPV05fUkVDRUlWRUQpKSB7CisJCQlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2Ip
ID09IFNDVFBfU1RBVEVfT1BFTikgfHwKKwkJCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0g
U0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkpIHsKIAkJCQlTQ1RQX1NUQVRfREVDUl9HQVVH
RTMyKHNjdHBzX2N1cnJlc3RhYik7CiAJCQl9Ci0JCQlTQ1RQX1NFVF9TVEFURShhc29jLCBTQ1RQ
X1NUQVRFX1NIVVRET1dOX1NFTlQpOwotCQkJU0NUUF9DTEVBUl9TVUJTVEFURShhc29jLCBTQ1RQ
X1NUQVRFX1NIVVRET1dOX1BFTkRJTkcpOworCQkJU0NUUF9TRVRfU1RBVEUoc3RjYiwgU0NUUF9T
VEFURV9TSFVURE9XTl9TRU5UKTsKIAkJCXNjdHBfc3RvcF90aW1lcnNfZm9yX3NodXRkb3duKHN0
Y2IpOwogCQkJaWYgKGFzb2MtPmFsdGVybmF0ZSkgewogCQkJCW5ldHAgPSBhc29jLT5hbHRlcm5h
dGU7CkBAIC01MDY2LDE1ICs1MTI1LDE0IEBAIHNjdHBfaGFuZGxlX3NhY2soc3RydWN0IG1idWYg
Km0sIGludCBvZmZzZXRfc2VnLCBpbnQgb2Zmc2V0X2R1cCwKIAkJCXNjdHBfdGltZXJfc3RhcnQo
U0NUUF9USU1FUl9UWVBFX1NIVVRET1dOLAogCQkJCQkgc3RjYi0+c2N0cF9lcCwgc3RjYiwgbmV0
cCk7CiAJCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9TSFVURE9XTkdVQVJELAot
CQkJCQkgc3RjYi0+c2N0cF9lcCwgc3RjYiwgbmV0cCk7CisJCQkJCSBzdGNiLT5zY3RwX2VwLCBz
dGNiLCBOVUxMKTsKIAkJCXJldHVybjsKLQkJfSBlbHNlIGlmICgoU0NUUF9HRVRfU1RBVEUoYXNv
YykgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkgJiYKKwkJfSBlbHNlIGlmICgoU0NU
UF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkgJiYKIAkJ
CSAgIChhc29jLT5zdHJlYW1fcXVldWVfY250ID09IDApKSB7CiAJCQlzdHJ1Y3Qgc2N0cF9uZXRz
ICpuZXRwOwogCiAJCQlTQ1RQX1NUQVRfREVDUl9HQVVHRTMyKHNjdHBzX2N1cnJlc3RhYik7Ci0J
CQlTQ1RQX1NFVF9TVEFURShhc29jLCBTQ1RQX1NUQVRFX1NIVVRET1dOX0FDS19TRU5UKTsKLQkJ
CVNDVFBfQ0xFQVJfU1VCU1RBVEUoYXNvYywgU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HKTsK
KwkJCVNDVFBfU0VUX1NUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQpOwog
CQkJc2N0cF9zdG9wX3RpbWVyc19mb3Jfc2h1dGRvd24oc3RjYik7CiAJCQlpZiAoYXNvYy0+YWx0
ZXJuYXRlKSB7CiAJCQkJbmV0cCA9IGFzb2MtPmFsdGVybmF0ZTsKQEAgLTUxOTAsNyArNTI0OCw3
IEBAIGFnYWluOgogCQkJfSBlbHNlIGlmIChTQ1RQX09TX1RJTUVSX1BFTkRJTkcoJm5ldC0+cnh0
X3RpbWVyLnRpbWVyKSkgewogCQkJCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfU0VO
RCwgc3RjYi0+c2N0cF9lcCwKIAkJCQkgICAgICAgICAgICAgICAgc3RjYiwgbmV0LAotCQkJCSAg
ICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18zMik7CisJCQkJ
ICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzM2KTsKIAkJ
CX0KIAkJfQogCX0KQEAgLTUyNTUsNyArNTMxMywxMiBAQCBhZ2FpbjoKIAkJCQl9CiAJCQl9CiAJ
CX0KLQkJaWYgKGxjaGspIHsKKwkJZm9yICg7IGxjaGsgIT0gTlVMTDsgbGNoayA9IFRBSUxRX05F
WFQobGNoaywgc2N0cF9uZXh0KSkgeworCQkJaWYgKGxjaGstPndob1RvICE9IE5VTEwpIHsKKwkJ
CQlicmVhazsKKwkJCX0KKwkJfQorCQlpZiAobGNoayAhPSBOVUxMKSB7CiAJCQkvKiBBc3N1cmUg
YSB0aW1lciBpcyB1cCAqLwogCQkJc2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfU0VO
RCwKIAkJCSAgICAgICAgICAgICAgICAgc3RjYi0+c2N0cF9lcCwgc3RjYiwgbGNoay0+d2hvVG8p
OwpAQCAtNTQyOSwxMyArNTQ5MiwxMSBAQCBzY3RwX2tpY2tfcHJzY3RwX3Jlb3JkZXJfcXVldWUo
c3RydWN0IHNjdHBfdGNiICpzdGNiLAogCiBzdGF0aWMgdm9pZAogc2N0cF9mbHVzaF9yZWFzc21f
Zm9yX3N0cl9zZXEoc3RydWN0IHNjdHBfdGNiICpzdGNiLAotCXN0cnVjdCBzY3RwX2Fzc29jaWF0
aW9uICphc29jLAotCXVpbnQxNl90IHN0cmVhbSwgdWludDMyX3QgbWlkLCBpbnQgb3JkZXJlZCwg
dWludDMyX3QgY3VtdHNuKQorCXN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLCBzdHJ1Y3Qg
c2N0cF9zdHJlYW1faW4gKnN0cm0sCisJc3RydWN0IHNjdHBfcXVldWVkX3RvX3JlYWQgKmNvbnRy
b2wsIGludCBvcmRlcmVkLCB1aW50MzJfdCBjdW10c24pCiB7Ci0Jc3RydWN0IHNjdHBfcXVldWVk
X3RvX3JlYWQgKmNvbnRyb2w7Ci0Jc3RydWN0IHNjdHBfc3RyZWFtX2luICpzdHJtOwogCXN0cnVj
dCBzY3RwX3RtaXRfY2h1bmsgKmNoaywgKm5jaGs7Ci0JaW50IGNudF9yZW1vdmVkPTA7CisJaW50
IGNudF9yZW1vdmVkID0gMDsKIAogCS8qCiAJICogRm9yIG5vdyBsYXJnZSBtZXNzYWdlcyBoZWxk
IG9uIHRoZSBzdHJlYW0gcmVhc20gdGhhdCBhcmUKQEAgLTU0NDUsMTIgKzU1MDYsNiBAQCBzY3Rw
X2ZsdXNoX3JlYXNzbV9mb3Jfc3RyX3NlcShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJICogZGVs
aXZlcnkgZnVuY3Rpb24uLi4gdG8gc2VlIGlmIGl0IGNhbiBiZSBkZWxpdmVyZWQuLi4gQnV0CiAJ
ICogZm9yIG5vdyB3ZSBqdXN0IGR1bXAgZXZlcnl0aGluZyBvbiB0aGUgcXVldWUuCiAJICovCi0J
c3RybSA9ICZhc29jLT5zdHJtaW5bc3RyZWFtXTsKLQljb250cm9sID0gc2N0cF9maW5kX3JlYXNt
X2VudHJ5KHN0cm0sIG1pZCwgb3JkZXJlZCwgYXNvYy0+aWRhdGFfc3VwcG9ydGVkKTsKLQlpZiAo
Y29udHJvbCA9PSBOVUxMKSB7Ci0JCS8qIE5vdCBmb3VuZCAqLwotCQlyZXR1cm47Ci0JfQogCWlm
ICghYXNvYy0+aWRhdGFfc3VwcG9ydGVkICYmICFvcmRlcmVkICYmIFNDVFBfVFNOX0dUKGNvbnRy
b2wtPmZzbl9pbmNsdWRlZCwgY3VtdHNuKSkgewogCQlyZXR1cm47CiAJfQpAQCAtNTU0MCwxMCAr
NTU5NSwxMCBAQCBzY3RwX2hhbmRsZV9mb3J3YXJkX3RzbihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2Is
CiAJICoKIAkgKiBBc3N1bWUgd2UgZ2V0IEZ3ZFRTTih4KToKIAkgKgotCSAqIDEpIHVwZGF0ZSBs
b2NhbCBjdW1UU04gdG8geCAKLQkgKiAyKSB0cnkgdG8gZnVydGhlciBhZHZhbmNlIGN1bVRTTiB0
byB4ICsgb3RoZXJzIHdlIGhhdmUgCi0JICogMykgZXhhbWluZSBhbmQgdXBkYXRlIHJlLW9yZGVy
aW5nIHF1ZXVlIG9uIHByLWluLXN0cmVhbXMgCi0JICogNCkgY2xlYW4gdXAgcmUtYXNzZW1ibHkg
cXVldWUgCisJICogMSkgdXBkYXRlIGxvY2FsIGN1bVRTTiB0byB4CisJICogMikgdHJ5IHRvIGZ1
cnRoZXIgYWR2YW5jZSBjdW1UU04gdG8geCArIG90aGVycyB3ZSBoYXZlCisJICogMykgZXhhbWlu
ZSBhbmQgdXBkYXRlIHJlLW9yZGVyaW5nIHF1ZXVlIG9uIHByLWluLXN0cmVhbXMKKwkgKiA0KSBj
bGVhbiB1cCByZS1hc3NlbWJseSBxdWV1ZQogCSAqIDUpIFNlbmQgYSBzYWNrIHRvIHJlcG9ydCB3
aGVyZSB3ZSBhcmUuCiAJICovCiAJc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2M7CkBAIC01
NTg1LDExICs1NjQwLDExIEBAIHNjdHBfaGFuZGxlX2ZvcndhcmRfdHNuKHN0cnVjdCBzY3RwX3Rj
YiAqc3RjYiwKIAkJCSAqIGdpdmUgb3V0KS4gVGhpcyBtdXN0IGJlIGFuIGF0dGFja2VyLgogCQkJ
ICovCiAJCQkqYWJvcnRfZmxhZyA9IDE7Ci0JCQlzbnByaW50Zihtc2csIHNpemVvZihtc2cpLAot
CQkJICAgICAgICAgIk5ldyBjdW0gYWNrICU4Ljh4IHRvbyBoaWdoLCBoaWdoZXN0IFRTTiAlOC44
eCIsCi0JCQkgICAgICAgICBuZXdfY3VtX3RzbiwgYXNvYy0+aGlnaGVzdF90c25faW5zaWRlX21h
cCk7CisJCQlTQ1RQX1NOUFJJTlRGKG1zZywgc2l6ZW9mKG1zZyksCisJCQkgICAgICAgICAgICAg
ICJOZXcgY3VtIGFjayAlOC44eCB0b28gaGlnaCwgaGlnaGVzdCBUU04gJTguOHgiLAorCQkJICAg
ICAgICAgICAgICBuZXdfY3VtX3RzbiwgYXNvYy0+aGlnaGVzdF90c25faW5zaWRlX21hcCk7CiAJ
CQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBfQ0FVU0VfUFJPVE9DT0xfVklPTEFU
SU9OLCBtc2cpOwotCQkJc3RjYi0+c2N0cF9lcC0+bGFzdF9hYm9ydF9jb2RlID0gU0NUUF9GUk9N
X1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMzM7CisJCQlzdGNiLT5zY3RwX2VwLT5sYXN0X2Fib3J0
X2NvZGUgPSBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18zNzsKIAkJCXNjdHBfYWJv
cnRfYW5fYXNzb2NpYXRpb24oc3RjYi0+c2N0cF9lcCwgc3RjYiwgb3BfZXJyLCBTQ1RQX1NPX05P
VF9MT0NLRUQpOwogCQkJcmV0dXJuOwogCQl9CkBAIC01NjI0LDEwICs1Njc5LDE0IEBAIHNjdHBf
aGFuZGxlX2ZvcndhcmRfdHNuKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkvKiBUaGlzIGlzIG5v
dyBkb25lIGFzIHBhcnQgb2YgY2xlYXJpbmcgdXAgdGhlIHN0cmVhbS9zZXEgKi8KIAlpZiAoYXNv
Yy0+aWRhdGFfc3VwcG9ydGVkID09IDApIHsKIAkJdWludDE2X3Qgc2lkOworCiAJCS8qIEZsdXNo
IGFsbCB0aGUgdW4tb3JkZXJlZCBkYXRhIGJhc2VkIG9uIGN1bS10c24gKi8KIAkJU0NUUF9JTlBf
UkVBRF9MT0NLKHN0Y2ItPnNjdHBfZXApOwogCQlmb3IgKHNpZCA9IDAgOyBzaWQgPCBhc29jLT5z
dHJlYW1pbmNudDsgc2lkKyspIHsKLQkJCXNjdHBfZmx1c2hfcmVhc3NtX2Zvcl9zdHJfc2VxKHN0
Y2IsIGFzb2MsIHNpZCwgMCwgMCwgbmV3X2N1bV90c24pOworCQkJc3RybSA9ICZhc29jLT5zdHJt
aW5bc2lkXTsKKwkJCWlmICghVEFJTFFfRU1QVFkoJnN0cm0tPnVub19pbnF1ZXVlKSkgeworCQkJ
CXNjdHBfZmx1c2hfcmVhc3NtX2Zvcl9zdHJfc2VxKHN0Y2IsIGFzb2MsIHN0cm0sIFRBSUxRX0ZJ
UlNUKCZzdHJtLT51bm9faW5xdWV1ZSksIDAsIG5ld19jdW1fdHNuKTsKKwkJCX0KIAkJfQogCQlT
Q1RQX0lOUF9SRUFEX1VOTE9DSyhzdGNiLT5zY3RwX2VwKTsKIAl9CkBAIC01NjM5LDcgKzU2OTgs
NyBAQCBzY3RwX2hhbmRsZV9mb3J3YXJkX3RzbihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJaWYg
KG0gJiYgZndkX3N6KSB7CiAJCS8qIE5ldyBtZXRob2QuICovCiAJCXVuc2lnbmVkIGludCBudW1f
c3RyOwotCQl1aW50MzJfdCBtaWQsIGN1cl9taWQ7CisJCXVpbnQzMl90IG1pZDsKIAkJdWludDE2
X3Qgc2lkOwogCQl1aW50MTZfdCBvcmRlcmVkLCBmbGFnczsKIAkJc3RydWN0IHNjdHBfc3Ryc2Vx
ICpzdHNlcSwgc3Ryc2VxYnVmOwpAQCAtNTcwMyw4ICs1NzYyLDI0IEBAIHNjdHBfaGFuZGxlX2Zv
cndhcmRfdHNuKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJCQlhc29jLT5mcmFnbWVudGVkX2Rl
bGl2ZXJ5X2lucHJvZ3Jlc3MgPSAwOwogCQkJfQogCQkJc3RybSA9ICZhc29jLT5zdHJtaW5bc2lk
XTsKLQkJCWZvciAoY3VyX21pZCA9IHN0cm0tPmxhc3RfbWlkX2RlbGl2ZXJlZDsgU0NUUF9NSURf
R0UoYXNvYy0+aWRhdGFfc3VwcG9ydGVkLCBtaWQsIGN1cl9taWQpOyBjdXJfbWlkKyspIHsKLQkJ
CQlzY3RwX2ZsdXNoX3JlYXNzbV9mb3Jfc3RyX3NlcShzdGNiLCBhc29jLCBzaWQsIGN1cl9taWQs
IG9yZGVyZWQsIG5ld19jdW1fdHNuKTsKKwkJCWlmIChvcmRlcmVkKSB7CisJCQkJVEFJTFFfRk9S
RUFDSChjb250cm9sLCAmc3RybS0+aW5xdWV1ZSwgbmV4dF9pbnN0cm0pIHsKKwkJCQkJaWYgKFND
VFBfTUlEX0dFKGFzb2MtPmlkYXRhX3N1cHBvcnRlZCwgbWlkLCBjb250cm9sLT5taWQpKSB7CisJ
CQkJCQlzY3RwX2ZsdXNoX3JlYXNzbV9mb3Jfc3RyX3NlcShzdGNiLCBhc29jLCBzdHJtLCBjb250
cm9sLCBvcmRlcmVkLCBuZXdfY3VtX3Rzbik7CisJCQkJCX0KKwkJCQl9CisJCQl9IGVsc2Ugewor
CQkJCWlmIChhc29jLT5pZGF0YV9zdXBwb3J0ZWQpIHsKKwkJCQkJVEFJTFFfRk9SRUFDSChjb250
cm9sLCAmc3RybS0+dW5vX2lucXVldWUsIG5leHRfaW5zdHJtKSB7CisJCQkJCQlpZiAoU0NUUF9N
SURfR0UoYXNvYy0+aWRhdGFfc3VwcG9ydGVkLCBtaWQsIGNvbnRyb2wtPm1pZCkpIHsKKwkJCQkJ
CQlzY3RwX2ZsdXNoX3JlYXNzbV9mb3Jfc3RyX3NlcShzdGNiLCBhc29jLCBzdHJtLCBjb250cm9s
LCBvcmRlcmVkLCBuZXdfY3VtX3Rzbik7CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9IGVsc2Ugewor
CQkJCQlpZiAoIVRBSUxRX0VNUFRZKCZzdHJtLT51bm9faW5xdWV1ZSkpIHsKKwkJCQkJCXNjdHBf
Zmx1c2hfcmVhc3NtX2Zvcl9zdHJfc2VxKHN0Y2IsIGFzb2MsIHN0cm0sIFRBSUxRX0ZJUlNUKCZz
dHJtLT51bm9faW5xdWV1ZSksIG9yZGVyZWQsIG5ld19jdW1fdHNuKTsKKwkJCQkJfQorCQkJCX0K
IAkJCX0KIAkJCVRBSUxRX0ZPUkVBQ0goY29udHJvbCwgJnN0Y2ItPnNjdHBfZXAtPnJlYWRfcXVl
dWUsIG5leHQpIHsKIAkJCQlpZiAoKGNvbnRyb2wtPnNpbmZvX3N0cmVhbSA9PSBzaWQpICYmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9pbmRhdGEuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3Jz
Y3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2luZGF0YS5oCm9sZCBtb2RlIDEwMDY0NApu
ZXcgbW9kZSAxMDA3NTUKaW5kZXggYmRiYTExNDhiNjg1Li44MjlhMDE0ZjJkNjQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNj
dHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfaW5kYXRhLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNy
c2N0cGxpYi9uZXRpbmV0L3NjdHBfaW5kYXRhLmgKQEAgLTMyLDkgKzMyLDkgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZkZWYgX19GcmVlQlNEX18KKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1
ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3Nj
dHBfaW5kYXRhLmggMzEwNTkwIDIwMTYtMTItMjYgMTE6MDY6NDFaIHR1ZXhlbiAkIik7CitfX0ZC
U0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9pbmRhdGEuaCAzNjExMTYgMjAy
MC0wNS0xNiAxOToyNjozOVogdHVleGVuICQiKTsKICNlbmRpZgogCiAjaWZuZGVmIF9ORVRJTkVU
X1NDVFBfSU5EQVRBX0hfCkBAIC02Myw3ICs2Myw2IEBAIHNjdHBfYnVpbGRfcmVhZHFfZW50cnko
c3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkoX2N0bCktPnNpbmZvX3BwaWQgPSBwcGlkOyBcCiAJ
CShfY3RsKS0+c2luZm9fY29udGV4dCA9IGNvbnRleHQ7IFwKIAkJKF9jdGwpLT5mc25faW5jbHVk
ZWQgPSAweGZmZmZmZmZmOyBcCi0JCShfY3RsKS0+dG9wX2ZzbiA9IDB4ZmZmZmZmZmY7IFwKIAkJ
KF9jdGwpLT5zaW5mb190c24gPSB0c247IFwKIAkJKF9jdGwpLT5zaW5mb19jdW10c24gPSB0c247
IFwKIAkJKF9jdGwpLT5zaW5mb19hc3NvY19pZCA9IHNjdHBfZ2V0X2Fzc29jaWQoKGluX2l0KSk7
IFwKQEAgLTcxLDYgKzcwLDkgQEAgc2N0cF9idWlsZF9yZWFkcV9lbnRyeShzdHJ1Y3Qgc2N0cF90
Y2IgKnN0Y2IsCiAJCShfY3RsKS0+ZGF0YSA9IGRtOyBcCiAJCShfY3RsKS0+c3RjYiA9IChpbl9p
dCk7IFwKIAkJKF9jdGwpLT5wb3J0X2Zyb20gPSAoaW5faXQpLT5ycG9ydDsgXAorCQlpZiAoKGlu
X2l0KS0+YXNvYy5zdGF0ZSAmIFNDVFBfU1RBVEVfQUJPVVRfVE9fQkVfRlJFRUQpIHsgXAorCQkJ
KF9jdGwpLT5kb19ub3RfcmVmX3N0Y2IgPSAxOyBcCisJCX1cCiAJfSBcCiB9IHdoaWxlICgwKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9pbnB1dC5jIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3Vz
cnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfaW5wdXQuYwpvbGQgbW9kZSAxMDA2NDQK
bmV3IG1vZGUgMTAwNzU1CmluZGV4IGM2MmJiODUwNmRjMC4uMjU1NWVhY2Q2OGE5Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3Jz
Y3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2lucHV0LmMKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNy
c2N0cGxpYi9uZXRpbmV0L3NjdHBfaW5wdXQuYwpAQCAtMzIsOSArMzIsOSBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZmRlZiBfX0ZyZWVCU0RfXworI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVk
ZSA8c3lzL2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0
cF9pbnB1dC5jIDMzNDcyNSAyMDE4LTA2LTA2IDE5OjI3OjA2WiB0dWV4ZW4gJCIpOworX19GQlNE
SUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfaW5wdXQuYyAzNjQyNjggMjAyMC0w
OC0xNiAxMTo1MDozN1ogdHVleGVuICQiKTsKICNlbmRpZgogCiAjaW5jbHVkZSA8bmV0aW5ldC9z
Y3RwX29zLmg+CkBAIC01MSwyMCArNTEsMTggQEAgX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5
cy9uZXRpbmV0L3NjdHBfaW5wdXQuYyAzMzQ3MjUgMjAxOC0wNi0wNiAxOToyNzowNlogdHUKICNp
bmNsdWRlIDxuZXRpbmV0L3NjdHBfYnNkX2FkZHIuaD4KICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBf
dGltZXIuaD4KICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfY3JjMzIuaD4KKyNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2luY2x1ZGUgPG5ldGluZXQv
c2N0cF9rZHRyYWNlLmg+CisjZW5kaWYKICNpZiBkZWZpbmVkKElORVQpIHx8IGRlZmluZWQoSU5F
VDYpCi0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiAhZGVmaW5lZChf
V0lOMzIpCiAjaW5jbHVkZSA8bmV0aW5ldC91ZHAuaD4KICNlbmRpZgogI2VuZGlmCi0jaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPHN5cy9zbXAuaD4KICNlbmRpZgogCi0jaWYgZGVmaW5l
ZChfX0FQUExFX18pCi0jZGVmaW5lIEFQUExFX0ZJTEVfTk8gMgotI2VuZGlmCi0KLQogc3RhdGlj
IHZvaWQKIHNjdHBfc3RvcF9hbGxfY29va2llX3RpbWVycyhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2Ip
CiB7CkBAIC05Nyw3ICs5NSw3IEBAIHNjdHBfaGFuZGxlX2luaXQoc3RydWN0IG1idWYgKm0sIGlu
dCBpcGhsZW4sIGludCBvZmZzZXQsCiAgICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkciAq
c3JjLCBzdHJ1Y3Qgc29ja2FkZHIgKmRzdCwgc3RydWN0IHNjdHBoZHIgKnNoLAogICAgICAgICAg
ICAgICAgICBzdHJ1Y3Qgc2N0cF9pbml0X2NodW5rICpjcCwgc3RydWN0IHNjdHBfaW5wY2IgKmlu
cCwKICAgICAgICAgICAgICAgICAgc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9u
ZXRzICpuZXQsIGludCAqYWJvcnRfbm9fdW5sb2NrLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICAg
ICAgICAgICAgICAgICAgdWludDhfdCBtZmxvd3R5cGUsIHVpbnQzMl90IG1mbG93aWQsCiAjZW5k
aWYKICAgICAgICAgICAgICAgICAgdWludDMyX3QgdnJmX2lkLCB1aW50MTZfdCBwb3J0KQpAQCAt
MTE0LDcgKzExMiw3IEBAIHNjdHBfaGFuZGxlX2luaXQoc3RydWN0IG1idWYgKm0sIGludCBpcGhs
ZW4sIGludCBvZmZzZXQsCiAJaWYgKG50b2hzKGNwLT5jaC5jaHVua19sZW5ndGgpIDwgc2l6ZW9m
KHN0cnVjdCBzY3RwX2luaXRfY2h1bmspKSB7CiAJCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1
c2UoU0NUUF9DQVVTRV9JTlZBTElEX1BBUkFNLCAiIik7CiAJCXNjdHBfYWJvcnRfYXNzb2NpYXRp
b24oaW5wLCBzdGNiLCBtLCBpcGhsZW4sIHNyYywgZHN0LCBzaCwgb3BfZXJyLAotI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKIAkJICAgICAgICAgICAgICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQs
CiAjZW5kaWYKIAkJCQkgICAgICAgdnJmX2lkLCBwb3J0KTsKQEAgLTEyOCw3ICsxMjYsNyBAQCBz
Y3RwX2hhbmRsZV9pbml0KHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAog
CQkvKiBwcm90b2NvbCBlcnJvci4uLiBzZW5kIGFib3J0ICovCiAJCW9wX2VyciA9IHNjdHBfZ2Vu
ZXJhdGVfY2F1c2UoU0NUUF9DQVVTRV9JTlZBTElEX1BBUkFNLCAiIik7CiAJCXNjdHBfYWJvcnRf
YXNzb2NpYXRpb24oaW5wLCBzdGNiLCBtLCBpcGhsZW4sIHNyYywgZHN0LCBzaCwgb3BfZXJyLAot
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJICAgICAgICAgICAgICAgICAgICAgICBtZmxvd3R5cGUs
IG1mbG93aWQsCiAjZW5kaWYKIAkJCQkgICAgICAgdnJmX2lkLCBwb3J0KTsKQEAgLTE0MCw3ICsx
MzgsNyBAQCBzY3RwX2hhbmRsZV9pbml0KHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQg
b2Zmc2V0LAogCQkvKiBpbnZhbGlkIHBhcmFtZXRlci4uLiBzZW5kIGFib3J0ICovCiAJCW9wX2Vy
ciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9DQVVTRV9JTlZBTElEX1BBUkFNLCAiIik7CiAJ
CXNjdHBfYWJvcnRfYXNzb2NpYXRpb24oaW5wLCBzdGNiLCBtLCBpcGhsZW4sIHNyYywgZHN0LCBz
aCwgb3BfZXJyLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJICAgICAgICAgICAgICAgICAgICAg
ICBtZmxvd3R5cGUsIG1mbG93aWQsCiAjZW5kaWYKIAkJCQkgICAgICAgdnJmX2lkLCBwb3J0KTsK
QEAgLTE1Miw3ICsxNTAsNyBAQCBzY3RwX2hhbmRsZV9pbml0KHN0cnVjdCBtYnVmICptLCBpbnQg
aXBobGVuLCBpbnQgb2Zmc2V0LAogCQkvKiBwcm90b2NvbCBlcnJvci4uLiBzZW5kIGFib3J0ICov
CiAJCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9DQVVTRV9JTlZBTElEX1BBUkFN
LCAiIik7CiAJCXNjdHBfYWJvcnRfYXNzb2NpYXRpb24oaW5wLCBzdGNiLCBtLCBpcGhsZW4sIHNy
YywgZHN0LCBzaCwgb3BfZXJyLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJICAgICAgICAgICAg
ICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQsCiAjZW5kaWYKIAkJCQkgICAgICAgdnJmX2lk
LCBwb3J0KTsKQEAgLTE2NCw3ICsxNjIsNyBAQCBzY3RwX2hhbmRsZV9pbml0KHN0cnVjdCBtYnVm
ICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCQkvKiBwcm90b2NvbCBlcnJvci4uLiBzZW5k
IGFib3J0ICovCiAJCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9DQVVTRV9JTlZB
TElEX1BBUkFNLCAiIik7CiAJCXNjdHBfYWJvcnRfYXNzb2NpYXRpb24oaW5wLCBzdGNiLCBtLCBp
cGhsZW4sIHNyYywgZHN0LCBzaCwgb3BfZXJyLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJICAg
ICAgICAgICAgICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQsCiAjZW5kaWYKIAkJCQkgICAg
ICAgdnJmX2lkLCBwb3J0KTsKQEAgLTE3OCw3ICsxNzYsNyBAQCBzY3RwX2hhbmRsZV9pbml0KHN0
cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCQlvcF9lcnIgPSBzY3RwX2dl
bmVyYXRlX2NhdXNlKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9kaWFnX2luZm9fY29kZSksCiAJCSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlByb2JsZW0gd2l0aCBBVVRIIHBhcmFtZXRlcnMi
KTsKIAkJc2N0cF9hYm9ydF9hc3NvY2lhdGlvbihpbnAsIHN0Y2IsIG0sIGlwaGxlbiwgc3JjLCBk
c3QsIHNoLCBvcF9lcnIsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkgICAgICAgICAgICAgICAg
ICAgICAgIG1mbG93dHlwZSwgbWZsb3dpZCwKICNlbmRpZgogCQkgICAgICAgICAgICAgICAgICAg
ICAgIHZyZl9pZCwgcG9ydCk7CkBAIC0yMDcsNyArMjA1LDcgQEAgc2N0cF9oYW5kbGVfaW5pdChz
dHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJCW9wX2VyciA9IHNjdHBf
Z2VuZXJhdGVfY2F1c2UoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2RpYWdfaW5mb19jb2RlKSwKIAkJ
CSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIGxpc3RlbmVyIik7CiAJCQlzY3RwX3Nl
bmRfYWJvcnQobSwgaXBobGVuLCBzcmMsIGRzdCwgc2gsIDAsIG9wX2VyciwKLSNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAJCQkgICAgICAgICAgICAgICAgbWZsb3d0eXBlLCBtZmxvd2lkLCBpbnAtPmZp
Ym51bSwKICNlbmRpZgogCQkJICAgICAgICAgICAgICAgIHZyZl9pZCwgcG9ydCk7CkBAIC0yMTUs
NyArMjEzLDcgQEAgc2N0cF9oYW5kbGVfaW5pdChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwg
aW50IG9mZnNldCwKIAkJZ290byBvdXRub3c7CiAJfQogCWlmICgoc3RjYiAhPSBOVUxMKSAmJgot
CSAgICAoU0NUUF9HRVRfU1RBVEUoJnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05f
QUNLX1NFTlQpKSB7CisJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NI
VVRET1dOX0FDS19TRU5UKSkgewogCQlTQ1RQREJHKFNDVFBfREVCVUdfSU5QVVQzLCAic2N0cF9o
YW5kbGVfaW5pdDogc2VuZGluZyBTSFVURE9XTi1BQ0tcbiIpOwogCQlzY3RwX3NlbmRfc2h1dGRv
d25fYWNrKHN0Y2IsIE5VTEwpOwogCQlzY3RwX2NodW5rX291dHB1dChpbnAsIHN0Y2IsIFNDVFBf
T1VUUFVUX0ZST01fQ09OVFJPTF9QUk9DLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwpAQCAtMjIzLDcg
KzIyMSw3IEBAIHNjdHBfaGFuZGxlX2luaXQoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGlu
dCBvZmZzZXQsCiAJCVNDVFBEQkcoU0NUUF9ERUJVR19JTlBVVDMsICJzY3RwX2hhbmRsZV9pbml0
OiBzZW5kaW5nIElOSVQtQUNLXG4iKTsKIAkJc2N0cF9zZW5kX2luaXRpYXRlX2FjayhpbnAsIHN0
Y2IsIG5ldCwgbSwgaXBobGVuLCBvZmZzZXQsCiAJCSAgICAgICAgICAgICAgICAgICAgICAgc3Jj
LCBkc3QsIHNoLCBjcCwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCSAgICAgICAgICAgICAgICAg
ICAgICAgbWZsb3d0eXBlLCBtZmxvd2lkLAogI2VuZGlmCiAJCSAgICAgICAgICAgICAgICAgICAg
ICAgdnJmX2lkLCBwb3J0KTsKQEAgLTIzOSwxMSArMjM3LDcgQEAgc2N0cF9oYW5kbGVfaW5pdChz
dHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKICAqLwogCiBpbnQKLXNjdHBf
aXNfdGhlcmVfdW5zZW50X2RhdGEoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBpbnQgc29fbG9ja2Vk
Ci0jaWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElO
RykKLQlTQ1RQX1VOVVNFRAotI2VuZGlmCi0pCitzY3RwX2lzX3RoZXJlX3Vuc2VudF9kYXRhKHN0
cnVjdCBzY3RwX3RjYiAqc3RjYiwgaW50IHNvX2xvY2tlZCkKIHsKIAlpbnQgdW5zZW50X2RhdGE7
CiAJdW5zaWduZWQgaW50IGk7CkBAIC00NjMsMzQgKzQ1Nyw2OSBAQCBzY3RwX3Byb2Nlc3NfaW5p
dF9hY2soc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyICpzcmMsIHN0cnVjdCBzb2NrYWRkciAqZHN0LCBz
dHJ1Y3Qgc2N0cGhkciAqc2gsCiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNjdHBfaW5p
dF9hY2tfY2h1bmsgKmNwLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAgICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IHNjdHBfbmV0cyAqbmV0LCBpbnQgKmFib3J0X25vX3VubG9jaywKLSNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiAJCSAgICAgIHVpbnQ4X3QgbWZsb3d0eXBlLCB1aW50MzJfdCBtZmxv
d2lkLAogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdnJmX2lkKQogewog
CXN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jOwogCXN0cnVjdCBtYnVmICpvcF9lcnI7Ci0J
aW50IHJldHZhbCwgYWJvcnRfZmxhZzsKLQl1aW50MzJfdCBpbml0YWNrX2xpbWl0OworCWludCBy
ZXR2YWwsIGFib3J0X2ZsYWcsIGNvb2tpZV9mb3VuZDsKKwlpbnQgaW5pdGFja19saW1pdDsKIAlp
bnQgbmF0X2ZyaWVuZGx5ID0gMDsKIAogCS8qIEZpcnN0IHZlcmlmeSB0aGF0IHdlIGhhdmUgbm8g
aWxsZWdhbCBwYXJhbSdzICovCiAJYWJvcnRfZmxhZyA9IDA7CisJY29va2llX2ZvdW5kID0gMDsK
IAogCW9wX2VyciA9IHNjdHBfYXJldGhlcmVfdW5yZWNvZ25pemVkX3BhcmFtZXRlcnMobSwKIAkJ
CQkJCSAgICAgICAob2Zmc2V0ICsgc2l6ZW9mKHN0cnVjdCBzY3RwX2luaXRfY2h1bmspKSwKLQkJ
CQkJCSAgICAgICAmYWJvcnRfZmxhZywgKHN0cnVjdCBzY3RwX2NodW5raGRyICopY3AsICZuYXRf
ZnJpZW5kbHkpOworCQkJCQkJICAgICAgICZhYm9ydF9mbGFnLCAoc3RydWN0IHNjdHBfY2h1bmto
ZHIgKiljcCwKKwkJCQkJCSAgICAgICAmbmF0X2ZyaWVuZGx5LCAmY29va2llX2ZvdW5kKTsKIAlp
ZiAoYWJvcnRfZmxhZykgewogCQkvKiBTZW5kIGFuIGFib3J0IGFuZCBub3RpZnkgcGVlciAqLwog
CQlzY3RwX2Fib3J0X2FuX2Fzc29jaWF0aW9uKHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIG9wX2Vyciwg
U0NUUF9TT19OT1RfTE9DS0VEKTsKIAkJKmFib3J0X25vX3VubG9jayA9IDE7CiAJCXJldHVybiAo
LTEpOwogCX0KKwlpZiAoIWNvb2tpZV9mb3VuZCkgeworCQl1aW50MTZfdCBsZW47CisKKwkJLyog
T25seSByZXBvcnQgdGhlIG1pc3NpbmcgY29va2llIHBhcmFtZXRlciAqLworCQlpZiAob3BfZXJy
ICE9IE5VTEwpIHsKKwkJCXNjdHBfbV9mcmVlbShvcF9lcnIpOworCQl9CisJCWxlbiA9ICh1aW50
MTZfdCkoc2l6ZW9mKHN0cnVjdCBzY3RwX2Vycm9yX21pc3NpbmdfcGFyYW0pICsgc2l6ZW9mKHVp
bnQxNl90KSk7CisJCS8qIFdlIGFib3J0IHdpdGggYW4gZXJyb3Igb2YgbWlzc2luZyBtYW5kYXRv
cnkgcGFyYW0gKi8KKwkJb3BfZXJyID0gc2N0cF9nZXRfbWJ1Zl9mb3JfbXNnKGxlbiwgMCwgTV9O
T1dBSVQsIDEsIE1UX0RBVEEpOworCQlpZiAob3BfZXJyICE9IE5VTEwpIHsKKwkJCXN0cnVjdCBz
Y3RwX2Vycm9yX21pc3NpbmdfcGFyYW0gKmNhdXNlOworCisJCQlTQ1RQX0JVRl9MRU4ob3BfZXJy
KSA9IGxlbjsKKwkJCWNhdXNlID0gbXRvZChvcF9lcnIsIHN0cnVjdCBzY3RwX2Vycm9yX21pc3Np
bmdfcGFyYW0gKik7CisJCQkvKiBTdWJ0cmFjdCB0aGUgcmVzZXJ2ZWQgcGFyYW0gKi8KKwkJCWNh
dXNlLT5jYXVzZS5jb2RlID0gaHRvbnMoU0NUUF9DQVVTRV9NSVNTSU5HX1BBUkFNKTsKKwkJCWNh
dXNlLT5jYXVzZS5sZW5ndGggPSBodG9ucyhsZW4pOworCQkJY2F1c2UtPm51bV9taXNzaW5nX3Bh
cmFtcyA9IGh0b25sKDEpOworCQkJY2F1c2UtPnR5cGVbMF0gPSBodG9ucyhTQ1RQX1NUQVRFX0NP
T0tJRSk7CisJCX0KKwkJc2N0cF9hYm9ydF9hc3NvY2lhdGlvbihzdGNiLT5zY3RwX2VwLCBzdGNi
LCBtLCBpcGhsZW4sCisJCQkJICAgICAgIHNyYywgZHN0LCBzaCwgb3BfZXJyLAorI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQkJICAgICAgIG1m
bG93dHlwZSwgbWZsb3dpZCwKKyNlbmRpZgorCQkJCSAgICAgICB2cmZfaWQsIG5ldC0+cG9ydCk7
CisJCSphYm9ydF9ub191bmxvY2sgPSAxOworCQlyZXR1cm4gKC0zKTsKKwl9CiAJYXNvYyA9ICZz
dGNiLT5hc29jOwogCWFzb2MtPnBlZXJfc3VwcG9ydHNfbmF0ID0gKHVpbnQ4X3QpbmF0X2ZyaWVu
ZGx5OwogCS8qIHByb2Nlc3MgdGhlIHBlZXIncyBwYXJhbWV0ZXJzIGluIHRoZSBJTklULUFDSyAq
LwogCXJldHZhbCA9IHNjdHBfcHJvY2Vzc19pbml0KChzdHJ1Y3Qgc2N0cF9pbml0X2NodW5rICop
Y3AsIHN0Y2IpOwogCWlmIChyZXR2YWwgPCAwKSB7CisJCWlmIChvcF9lcnIgIT0gTlVMTCkgewor
CQkJc2N0cF9tX2ZyZWVtKG9wX2Vycik7CisJCX0KIAkJcmV0dXJuIChyZXR2YWwpOwogCX0KIAlp
bml0YWNrX2xpbWl0ID0gb2Zmc2V0ICsgbnRvaHMoY3AtPmNoLmNodW5rX2xlbmd0aCk7CkBAIC00
OTgsNiArNTI3LDkgQEAgc2N0cF9wcm9jZXNzX2luaXRfYWNrKHN0cnVjdCBtYnVmICptLCBpbnQg
aXBobGVuLCBpbnQgb2Zmc2V0LAogCWlmICgocmV0dmFsID0gc2N0cF9sb2FkX2FkZHJlc3Nlc19m
cm9tX2luaXQoc3RjYiwgbSwKIAkgICAgKG9mZnNldCArIHNpemVvZihzdHJ1Y3Qgc2N0cF9pbml0
X2NodW5rKSksIGluaXRhY2tfbGltaXQsCiAJICAgIHNyYywgZHN0LCBOVUxMLCBzdGNiLT5hc29j
LnBvcnQpKSkgeworCQlpZiAob3BfZXJyICE9IE5VTEwpIHsKKwkJCXNjdHBfbV9mcmVlbShvcF9l
cnIpOworCQl9CiAJCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9CQVNFX1NZU0NU
TChzY3RwX2RpYWdfaW5mb19jb2RlKSwKIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
UHJvYmxlbSB3aXRoIGFkZHJlc3MgcGFyYW1ldGVycyIpOwogCQlTQ1RQREJHKFNDVFBfREVCVUdf
SU5QVVQxLApAQCAtNTA1LDcgKzUzNyw3IEBAIHNjdHBfcHJvY2Vzc19pbml0X2FjayhzdHJ1Y3Qg
bWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJCXJldHZhbCk7CiAJCXNjdHBfYWJv
cnRfYXNzb2NpYXRpb24oc3RjYi0+c2N0cF9lcCwgc3RjYiwgbSwgaXBobGVuLAogCQkgICAgICAg
ICAgICAgICAgICAgICAgIHNyYywgZHN0LCBzaCwgb3BfZXJyLAotI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKIAkJICAgICAgICAgICAgICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQsCiAjZW5kaWYK
IAkJICAgICAgICAgICAgICAgICAgICAgICB2cmZfaWQsIG5ldC0+cG9ydCk7CkBAIC01NTAsOCAr
NTgyLDggQEAgc2N0cF9wcm9jZXNzX2luaXRfYWNrKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVu
LCBpbnQgb2Zmc2V0LAogCSAgICBhc29jLT5wcmltYXJ5X2Rlc3RpbmF0aW9uLCBTQ1RQX0ZST01f
U0NUUF9JTlBVVCArIFNDVFBfTE9DXzMpOwogCiAJLyogY2FsY3VsYXRlIHRoZSBSVE8gKi8KLQlu
ZXQtPlJUTyA9IHNjdHBfY2FsY3VsYXRlX3J0byhzdGNiLCBhc29jLCBuZXQsICZhc29jLT50aW1l
X2VudGVyZWQsCi0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0NUUF9SVFRfRlJPTV9O
T05fREFUQSk7CisJc2N0cF9jYWxjdWxhdGVfcnRvKHN0Y2IsIGFzb2MsIG5ldCwgJmFzb2MtPnRp
bWVfZW50ZXJlZCwKKwkgICAgICAgICAgICAgICAgICAgU0NUUF9SVFRfRlJPTV9OT05fREFUQSk7
CiAjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWlmIChzdGNiLT5zY3RwX2VwLT5yZWN2X2Nh
bGxiYWNrKSB7CiAJCWlmIChzdGNiLT5zY3RwX3NvY2tldCkgewpAQCAtNTcwLDQ5ICs2MDIsMTUg
QEAgc2N0cF9wcm9jZXNzX2luaXRfYWNrKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQg
b2Zmc2V0LAogCQkJICAgICAoaW5wLT5zZW5kX3NiX3RocmVzaG9sZCA9PSAwKSkpIHsKIAkJCQlh
dG9taWNfYWRkX2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIDEpOwogCQkJCVNDVFBfVENCX1VOTE9D
SyhzdGNiKTsKLQkJCQlpbnAtPnNlbmRfY2FsbGJhY2soc3RjYi0+c2N0cF9zb2NrZXQsIHNiX2Zy
ZWVfbm93KTsKKwkJCQlpbnAtPnNlbmRfY2FsbGJhY2soc3RjYi0+c2N0cF9zb2NrZXQsIHNiX2Zy
ZWVfbm93LCBpbnAtPnVscF9pbmZvKTsKIAkJCQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwogCQkJCWF0
b21pY19zdWJ0cmFjdF9pbnQoJnN0Y2ItPmFzb2MucmVmY250LCAxKTsKIAkJCX0KIAkJfQogCX0K
ICNlbmRpZgotCXJldHZhbCA9IHNjdHBfc2VuZF9jb29raWVfZWNobyhtLCBvZmZzZXQsIHN0Y2Is
IG5ldCk7Ci0JaWYgKHJldHZhbCA8IDApIHsKLQkJLyoKLQkJICogTm8gY29va2llLCB3ZSBwcm9i
YWJseSBzaG91bGQgc2VuZCBhIG9wIGVycm9yLiBCdXQgaW4gYW55Ci0JCSAqIGNhc2UgaWYgdGhl
cmUgaXMgbm8gY29va2llIGluIHRoZSBJTklULUFDSywgd2UgY2FuCi0JCSAqIGFiYW5kb24gdGhl
IHBlZXIsIGl0cyBicm9rZS4KLQkJICovCi0JCWlmIChyZXR2YWwgPT0gLTMpIHsKLQkJCXVpbnQx
Nl90IGxlbjsKLQotCQkJbGVuID0gKHVpbnQxNl90KShzaXplb2Yoc3RydWN0IHNjdHBfZXJyb3Jf
bWlzc2luZ19wYXJhbSkgKyBzaXplb2YodWludDE2X3QpKTsKLQkJCS8qIFdlIGFib3J0IHdpdGgg
YW4gZXJyb3Igb2YgbWlzc2luZyBtYW5kYXRvcnkgcGFyYW0gKi8KLQkJCW9wX2VyciA9IHNjdHBf
Z2V0X21idWZfZm9yX21zZyhsZW4sIDAsIE1fTk9XQUlULCAxLCBNVF9EQVRBKTsKLQkJCWlmIChv
cF9lcnIgIT0gTlVMTCkgewotCQkJCXN0cnVjdCBzY3RwX2Vycm9yX21pc3NpbmdfcGFyYW0gKmNh
dXNlOwotCi0JCQkJU0NUUF9CVUZfTEVOKG9wX2VycikgPSBsZW47Ci0JCQkJY2F1c2UgPSBtdG9k
KG9wX2Vyciwgc3RydWN0IHNjdHBfZXJyb3JfbWlzc2luZ19wYXJhbSAqKTsKLQkJCQkvKiBTdWJ0
cmFjdCB0aGUgcmVzZXJ2ZWQgcGFyYW0gKi8KLQkJCQljYXVzZS0+Y2F1c2UuY29kZSA9IGh0b25z
KFNDVFBfQ0FVU0VfTUlTU0lOR19QQVJBTSk7Ci0JCQkJY2F1c2UtPmNhdXNlLmxlbmd0aCA9IGh0
b25zKGxlbik7Ci0JCQkJY2F1c2UtPm51bV9taXNzaW5nX3BhcmFtcyA9IGh0b25sKDEpOwotCQkJ
CWNhdXNlLT50eXBlWzBdID0gaHRvbnMoU0NUUF9TVEFURV9DT09LSUUpOwotCQkJfQotCQkJc2N0
cF9hYm9ydF9hc3NvY2lhdGlvbihzdGNiLT5zY3RwX2VwLCBzdGNiLCBtLCBpcGhsZW4sCi0JCQkg
ICAgICAgICAgICAgICAgICAgICAgIHNyYywgZHN0LCBzaCwgb3BfZXJyLAotI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pCi0JCQkgICAgICAgICAgICAgICAgICAgICAgIG1mbG93dHlwZSwgbWZsb3dp
ZCwKLSNlbmRpZgotCQkJICAgICAgICAgICAgICAgICAgICAgICB2cmZfaWQsIG5ldC0+cG9ydCk7
Ci0JCQkqYWJvcnRfbm9fdW5sb2NrID0gMTsKLQkJfQotCQlyZXR1cm4gKHJldHZhbCk7Ci0JfQot
Ci0JcmV0dXJuICgwKTsKKwlyZXR2YWwgPSBzY3RwX3NlbmRfY29va2llX2VjaG8obSwgb2Zmc2V0
LCBpbml0YWNrX2xpbWl0LCBzdGNiLCBuZXQpOworCXJldHVybiAocmV0dmFsKTsKIH0KIAogc3Rh
dGljIHZvaWQKQEAgLTcyNiw4ICs3MjQsOCBAQCBzY3RwX2hhbmRsZV9oZWFydGJlYXRfYWNrKHN0
cnVjdCBzY3RwX2hlYXJ0YmVhdF9jaHVuayAqY3AsCiAJdHYudHZfc2VjID0gY3AtPmhlYXJ0YmVh
dC5oYl9pbmZvLnRpbWVfdmFsdWVfMTsKIAl0di50dl91c2VjID0gY3AtPmhlYXJ0YmVhdC5oYl9p
bmZvLnRpbWVfdmFsdWVfMjsKIAkvKiBOb3cgbGV0cyBkbyBhIFJUTyB3aXRoIHRoaXMgKi8KLQly
X25ldC0+UlRPID0gc2N0cF9jYWxjdWxhdGVfcnRvKHN0Y2IsICZzdGNiLT5hc29jLCByX25ldCwg
JnR2LAotCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0NUUF9SVFRfRlJPTV9OT05f
REFUQSk7CisJc2N0cF9jYWxjdWxhdGVfcnRvKHN0Y2IsICZzdGNiLT5hc29jLCByX25ldCwgJnR2
LAorCSAgICAgICAgICAgICAgICAgICBTQ1RQX1JUVF9GUk9NX05PTl9EQVRBKTsKIAlpZiAoIShy
X25ldC0+ZGVzdF9zdGF0ZSAmIFNDVFBfQUREUl9SRUFDSEFCTEUpKSB7CiAJCXJfbmV0LT5kZXN0
X3N0YXRlIHw9IFNDVFBfQUREUl9SRUFDSEFCTEU7CiAJCXNjdHBfdWxwX25vdGlmeShTQ1RQX05P
VElGWV9JTlRFUkZBQ0VfVVAsIHN0Y2IsCkBAIC03NzEsOCArNzY5LDcgQEAgc2N0cF9oYW5kbGVf
aGVhcnRiZWF0X2FjayhzdHJ1Y3Qgc2N0cF9oZWFydGJlYXRfY2h1bmsgKmNwLAogCQkJCXNjdHBf
bW92ZV9jaHVua3NfZnJvbV9uZXQoc3RjYiwKIAkJCQkJc3RjYi0+YXNvYy5kZWxldGVkX3ByaW1h
cnkpOwogCQkJfQotCQkJc2N0cF9kZWxldGVfcHJpbV90aW1lcihzdGNiLT5zY3RwX2VwLCBzdGNi
LAotCQkJCQlzdGNiLT5hc29jLmRlbGV0ZWRfcHJpbWFyeSk7CisJCQlzY3RwX2RlbGV0ZV9wcmlt
X3RpbWVyKHN0Y2ItPnNjdHBfZXAsIHN0Y2IpOwogCQl9CiAJfQogfQpAQCAtNzgwLDMxICs3Nzcs
MzUgQEAgc2N0cF9oYW5kbGVfaGVhcnRiZWF0X2FjayhzdHJ1Y3Qgc2N0cF9oZWFydGJlYXRfY2h1
bmsgKmNwLAogc3RhdGljIGludAogc2N0cF9oYW5kbGVfbmF0X2NvbGxpZGluZ19zdGF0ZShzdHJ1
Y3Qgc2N0cF90Y2IgKnN0Y2IpCiB7Ci0JLyogcmV0dXJuIDAgbWVhbnMgd2Ugd2FudCB5b3UgdG8g
cHJvY2VlZCB3aXRoIHRoZSBhYm9ydAotCSAqIG5vbi16ZXJvIG1lYW5zIG5vIGFib3J0IHByb2Nl
c3NpbmcKLQkqLworCS8qCisJICogUmV0dXJuIDAgbWVhbnMgd2Ugd2FudCB5b3UgdG8gcHJvY2Vl
ZCB3aXRoIHRoZSBhYm9ydAorCSAqIG5vbi16ZXJvIG1lYW5zIG5vIGFib3J0IHByb2Nlc3Npbmcu
CisJICovCisJdWludDMyX3QgbmV3X3Z0YWc7CiAJc3RydWN0IHNjdHBhc29jaGVhZCAqaGVhZDsK
IAotCWlmICgoU0NUUF9HRVRfU1RBVEUoJnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVfQ09PS0lF
X1dBSVQpIHx8Ci0JICAgIChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFU
RV9DT09LSUVfRUNIT0VEKSkgeworCWlmICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9T
VEFURV9DT09LSUVfV0FJVCkgfHwKKwkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBf
U1RBVEVfQ09PS0lFX0VDSE9FRCkpIHsKKwkJbmV3X3Z0YWcgPSBzY3RwX3NlbGVjdF9hX3RhZyhz
dGNiLT5zY3RwX2VwLCBzdGNiLT5zY3RwX2VwLT5zY3RwX2xwb3J0LCBzdGNiLT5ycG9ydCwgMSk7
CiAJCWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29jLnJlZmNudCwgMSk7CiAJCVNDVFBfVENCX1VO
TE9DSyhzdGNiKTsKIAkJU0NUUF9JTlBfSU5GT19XTE9DSygpOwogCQlTQ1RQX1RDQl9MT0NLKHN0
Y2IpOwogCQlhdG9taWNfc3VidHJhY3RfaW50KCZzdGNiLT5hc29jLnJlZmNudCwgMSk7CisJfSBl
bHNlIHsKKwkJcmV0dXJuICgwKTsKIAl9Ci0JaWYgKFNDVFBfR0VUX1NUQVRFKCZzdGNiLT5hc29j
KSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB7CisJaWYgKFNDVFBfR0VUX1NUQVRFKHN0Y2Ip
ID09IFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQpIHsKIAkJLyogZ2VuZXJhdGUgYSBuZXcgdnRhZyBh
bmQgc2VuZCBpbml0ICovCiAJCUxJU1RfUkVNT1ZFKHN0Y2IsIHNjdHBfYXNvY3MpOwotCQlzdGNi
LT5hc29jLm15X3Z0YWcgPSBzY3RwX3NlbGVjdF9hX3RhZyhzdGNiLT5zY3RwX2VwLCBzdGNiLT5z
Y3RwX2VwLT5zY3RwX2xwb3J0LCBzdGNiLT5ycG9ydCwgMSk7CisJCXN0Y2ItPmFzb2MubXlfdnRh
ZyA9IG5ld192dGFnOwogCQloZWFkID0gJlNDVFBfQkFTRV9JTkZPKHNjdHBfYXNvY2hhc2gpW1ND
VFBfUENCSEFTSF9BU09DKHN0Y2ItPmFzb2MubXlfdnRhZywgU0NUUF9CQVNFX0lORk8oaGFzaGFz
b2NtYXJrKSldOwogCQkvKiBwdXQgaXQgaW4gdGhlIGJ1Y2tldCBpbiB0aGUgdnRhZyBoYXNoIG9m
IGFzc29jJ3MgZm9yIHRoZSBzeXN0ZW0gKi8KIAkJTElTVF9JTlNFUlRfSEVBRChoZWFkLCBzdGNi
LCBzY3RwX2Fzb2NzKTsKLQkJc2N0cF9zZW5kX2luaXRpYXRlKHN0Y2ItPnNjdHBfZXAsIHN0Y2Is
IFNDVFBfU09fTk9UX0xPQ0tFRCk7CiAJCVNDVFBfSU5QX0lORk9fV1VOTE9DSygpOworCQlzY3Rw
X3NlbmRfaW5pdGlhdGUoc3RjYi0+c2N0cF9lcCwgc3RjYiwgU0NUUF9TT19OT1RfTE9DS0VEKTsK
IAkJcmV0dXJuICgxKTsKLQl9Ci0JaWYgKFNDVFBfR0VUX1NUQVRFKCZzdGNiLT5hc29jKSA9PSBT
Q1RQX1NUQVRFX0NPT0tJRV9FQ0hPRUQpIHsKKwl9IGVsc2UgewogCQkvKiB0cmVhdCBsaWtlIGEg
Y2FzZSB3aGVyZSB0aGUgY29va2llIGV4cGlyZWQgaS5lLjoKIAkJKiAtIGR1bXAgY3VycmVudCBj
b29raWUuCiAJCSogLSBnZW5lcmF0ZSBhIG5ldyB2dGFnLgpAQCAtODEyLDE2ICs4MTMsMTUgQEAg
c2N0cF9oYW5kbGVfbmF0X2NvbGxpZGluZ19zdGF0ZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IpCiAJ
CSovCiAJCS8qIGdlbmVyYXRlIGEgbmV3IHZ0YWcgYW5kIHNlbmQgaW5pdCAqLwogCQlMSVNUX1JF
TU9WRShzdGNiLCBzY3RwX2Fzb2NzKTsKLQkJc3RjYi0+YXNvYy5zdGF0ZSAmPSB+U0NUUF9TVEFU
RV9DT09LSUVfRUNIT0VEOwotCQlzdGNiLT5hc29jLnN0YXRlIHw9IFNDVFBfU1RBVEVfQ09PS0lF
X1dBSVQ7CisJCVNDVFBfU0VUX1NUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQpOwog
CQlzY3RwX3N0b3BfYWxsX2Nvb2tpZV90aW1lcnMoc3RjYik7CiAJCXNjdHBfdG9zc19vbGRfY29v
a2llcyhzdGNiLCAmc3RjYi0+YXNvYyk7Ci0JCXN0Y2ItPmFzb2MubXlfdnRhZyA9IHNjdHBfc2Vs
ZWN0X2FfdGFnKHN0Y2ItPnNjdHBfZXAsIHN0Y2ItPnNjdHBfZXAtPnNjdHBfbHBvcnQsIHN0Y2It
PnJwb3J0LCAgMSk7CisJCXN0Y2ItPmFzb2MubXlfdnRhZyA9IG5ld192dGFnOwogCQloZWFkID0g
JlNDVFBfQkFTRV9JTkZPKHNjdHBfYXNvY2hhc2gpW1NDVFBfUENCSEFTSF9BU09DKHN0Y2ItPmFz
b2MubXlfdnRhZywgU0NUUF9CQVNFX0lORk8oaGFzaGFzb2NtYXJrKSldOwogCQkvKiBwdXQgaXQg
aW4gdGhlIGJ1Y2tldCBpbiB0aGUgdnRhZyBoYXNoIG9mIGFzc29jJ3MgZm9yIHRoZSBzeXN0ZW0g
Ki8KIAkJTElTVF9JTlNFUlRfSEVBRChoZWFkLCBzdGNiLCBzY3RwX2Fzb2NzKTsKLQkJc2N0cF9z
ZW5kX2luaXRpYXRlKHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CiAJ
CVNDVFBfSU5QX0lORk9fV1VOTE9DSygpOworCQlzY3RwX3NlbmRfaW5pdGlhdGUoc3RjYi0+c2N0
cF9lcCwgc3RjYiwgU0NUUF9TT19OT1RfTE9DS0VEKTsKIAkJcmV0dXJuICgxKTsKIAl9CiAJcmV0
dXJuICgwKTsKQEAgLTg0OCw3ICs4NDgsNyBAQCBzdGF0aWMgaW50CiBzY3RwX2hhbmRsZV9hYm9y
dChzdHJ1Y3Qgc2N0cF9hYm9ydF9jaHVuayAqYWJvcnQsCiAgICAgc3RydWN0IHNjdHBfdGNiICpz
dGNiLCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQpCiB7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8
IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJc3RydWN0IHNvY2tldCAqc287CiAjZW5kaWYKIAl1
aW50MTZfdCBsZW47CkBAIC04NjksMTMgKzg2OSwxMyBAQCBzY3RwX2hhbmRsZV9hYm9ydChzdHJ1
Y3Qgc2N0cF9hYm9ydF9jaHVuayAqYWJvcnQsCiAJCWNhdXNlID0gKHN0cnVjdCBzY3RwX2Vycm9y
X2NhdXNlICopKGFib3J0ICsgMSk7CiAJCWVycm9yID0gbnRvaHMoY2F1c2UtPmNvZGUpOwogCQlp
ZiAoZXJyb3IgPT0gU0NUUF9DQVVTRV9OQVRfQ09MTElESU5HX1NUQVRFKSB7Ci0JCQlTQ1RQREJH
KFNDVFBfREVCVUdfSU5QVVQyLCAiUmVjZWl2ZWQgQ29sbGlkaW5nIHN0YXRlIGFib3J0IGZsYWdz
OiV4XG4iLAorCQkJU0NUUERCRyhTQ1RQX0RFQlVHX0lOUFVUMiwgIlJlY2VpdmVkIENvbGxpZGlu
ZyBzdGF0ZSwgQUJPUlQgZmxhZ3M6JXhcbiIsCiAJCQkgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhYm9ydC0+Y2guY2h1bmtfZmxhZ3MpOwogCQkJaWYgKHNjdHBfaGFuZGxlX25hdF9jb2xsaWRp
bmdfc3RhdGUoc3RjYikpIHsKIAkJCQlyZXR1cm4gKDApOwogCQkJfQogCQl9IGVsc2UgaWYgKGVy
cm9yID09IFNDVFBfQ0FVU0VfTkFUX01JU1NJTkdfU1RBVEUpIHsKLQkJCVNDVFBEQkcoU0NUUF9E
RUJVR19JTlBVVDIsICJSZWNlaXZlZCBtaXNzaW5nIHN0YXRlIGFib3J0IGZsYWdzOiV4XG4iLAor
CQkJU0NUUERCRyhTQ1RQX0RFQlVHX0lOUFVUMiwgIlJlY2VpdmVkIG1pc3Npbmcgc3RhdGUsIEFC
T1JUIGZsYWdzOiV4XG4iLAogCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJvcnQtPmNo
LmNodW5rX2ZsYWdzKTsKIAkJCWlmIChzY3RwX2hhbmRsZV9uYXRfbWlzc2luZ19zdGF0ZShzdGNi
LCBuZXQpKSB7CiAJCQkJcmV0dXJuICgwKTsKQEAgLTg4NSwyMCArODg1LDIwIEBAIHNjdHBfaGFu
ZGxlX2Fib3J0KHN0cnVjdCBzY3RwX2Fib3J0X2NodW5rICphYm9ydCwKIAkJZXJyb3IgPSAwOwog
CX0KIAkvKiBzdG9wIGFueSByZWNlaXZlIHRpbWVycyAqLwotCXNjdHBfdGltZXJfc3RvcChTQ1RQ
X1RJTUVSX1RZUEVfUkVDViwgc3RjYi0+c2N0cF9lcCwgc3RjYiwgbmV0LAorCXNjdHBfdGltZXJf
c3RvcChTQ1RQX1RJTUVSX1RZUEVfUkVDViwgc3RjYi0+c2N0cF9lcCwgc3RjYiwgTlVMTCwKIAkg
ICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBfSU5QVVQgKyBTQ1RQX0xPQ183KTsKIAkvKiBu
b3RpZnkgdXNlciBvZiB0aGUgYWJvcnQgYW5kIGNsZWFuIHVwLi4uICovCiAJc2N0cF9hYm9ydF9u
b3RpZmljYXRpb24oc3RjYiwgMSwgZXJyb3IsIGFib3J0LCBTQ1RQX1NPX05PVF9MT0NLRUQpOwog
CS8qIGZyZWUgdGhlIHRjYiAqLwogCVNDVFBfU1RBVF9JTkNSX0NPVU5URVIzMihzY3Rwc19hYm9y
dGVkKTsKLQlpZiAoKFNDVFBfR0VUX1NUQVRFKCZzdGNiLT5hc29jKSA9PSBTQ1RQX1NUQVRFX09Q
RU4pIHx8Ci0JICAgIChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9T
SFVURE9XTl9SRUNFSVZFRCkpIHsKKwlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBf
U1RBVEVfT1BFTikgfHwKKwkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVf
U0hVVERPV05fUkVDRUlWRUQpKSB7CiAJCVNDVFBfU1RBVF9ERUNSX0dBVUdFMzIoc2N0cHNfY3Vy
cmVzdGFiKTsKIAl9CiAjaWZkZWYgU0NUUF9BU09DTE9HX09GX1RTTlMKIAlzY3RwX3ByaW50X291
dF90cmFja19sb2coc3RjYik7CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVm
aW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzbyA9IFNDVFBfSU5QX1NPKHN0Y2ItPnNjdHBfZXApOwog
CWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29jLnJlZmNudCwgMSk7CiAJU0NUUF9UQ0JfVU5MT0NL
KHN0Y2IpOwpAQCAtOTA2LDEwICs5MDYsOSBAQCBzY3RwX2hhbmRsZV9hYm9ydChzdHJ1Y3Qgc2N0
cF9hYm9ydF9jaHVuayAqYWJvcnQsCiAJU0NUUF9UQ0JfTE9DSyhzdGNiKTsKIAlhdG9taWNfc3Vi
dHJhY3RfaW50KCZzdGNiLT5hc29jLnJlZmNudCwgMSk7CiAjZW5kaWYKLQlzdGNiLT5hc29jLnN0
YXRlIHw9IFNDVFBfU1RBVEVfV0FTX0FCT1JURUQ7CiAJKHZvaWQpc2N0cF9mcmVlX2Fzc29jKHN0
Y2ItPnNjdHBfZXAsIHN0Y2IsIFNDVFBfTk9STUFMX1BST0MsCiAJCQkgICAgICBTQ1RQX0ZST01f
U0NUUF9JTlBVVCArIFNDVFBfTE9DXzgpOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZp
bmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCVNDVFBfU09DS0VUX1VOTE9DSyhzbywgMSk7CiAjZW5kaWYK
IAlTQ1RQREJHKFNDVFBfREVCVUdfSU5QVVQyLCAic2N0cF9oYW5kbGVfYWJvcnQ6IGZpbmlzaGVk
XG4iKTsKQEAgLTk1NCw3ICs5NTMsNyBAQCBzY3RwX2hhbmRsZV9zaHV0ZG93bihzdHJ1Y3Qgc2N0
cF9zaHV0ZG93bl9jaHVuayAqY3AsCiAJc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2M7CiAJ
aW50IHNvbWVfb25fc3RyZWFtd2hlZWw7CiAJaW50IG9sZF9zdGF0ZTsKLSNpZiBkZWZpbmVkKF9f
QVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9f
QVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzdHJ1Y3Qgc29ja2V0ICpzbzsK
ICNlbmRpZgogCkBAIC05NjMsMTUgKzk2MiwxNSBAQCBzY3RwX2hhbmRsZV9zaHV0ZG93bihzdHJ1
Y3Qgc2N0cF9zaHV0ZG93bl9jaHVuayAqY3AsCiAJaWYgKHN0Y2IgPT0gTlVMTCkKIAkJcmV0dXJu
OwogCWFzb2MgPSAmc3RjYi0+YXNvYzsKLQlpZiAoKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFND
VFBfU1RBVEVfQ09PS0lFX1dBSVQpIHx8Ci0JICAgIChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBT
Q1RQX1NUQVRFX0NPT0tJRV9FQ0hPRUQpKSB7CisJaWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSA9
PSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB8fAorCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikg
PT0gU0NUUF9TVEFURV9DT09LSUVfRUNIT0VEKSkgewogCQlyZXR1cm47CiAJfQogCWlmIChudG9o
cyhjcC0+Y2guY2h1bmtfbGVuZ3RoKSAhPSBzaXplb2Yoc3RydWN0IHNjdHBfc2h1dGRvd25fY2h1
bmspKSB7CiAJCS8qIFNodXRkb3duIE5PVCB0aGUgZXhwZWN0ZWQgc2l6ZSAqLwogCQlyZXR1cm47
CiAJfQotCW9sZF9zdGF0ZSA9IFNDVFBfR0VUX1NUQVRFKGFzb2MpOworCW9sZF9zdGF0ZSA9IFND
VFBfR0VUX1NUQVRFKHN0Y2IpOwogCXNjdHBfdXBkYXRlX2Fja2VkKHN0Y2IsIGNwLCBhYm9ydF9m
bGFnKTsKIAlpZiAoKmFib3J0X2ZsYWcpIHsKIAkJcmV0dXJuOwpAQCAtMTAwNSw3ICsxMDA0LDcg
QEAgc2N0cF9oYW5kbGVfc2h1dGRvd24oc3RydWN0IHNjdHBfc2h1dGRvd25fY2h1bmsgKmNwLAog
CQlhc29jLT5jb250cm9sX3BkYXBpLT5wZGFwaV9hYm9ydGVkID0gMTsKIAkJYXNvYy0+Y29udHJv
bF9wZGFwaSA9IE5VTEw7CiAJCVNDVFBfSU5QX1JFQURfVU5MT0NLKHN0Y2ItPnNjdHBfZXApOwot
I2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQor
I2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlzbyA9
IFNDVFBfSU5QX1NPKHN0Y2ItPnNjdHBfZXApOwogCQlhdG9taWNfYWRkX2ludCgmc3RjYi0+YXNv
Yy5yZWZjbnQsIDEpOwogCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CkBAIC0xMDIxLDE3ICsxMDIw
LDE2IEBAIHNjdHBfaGFuZGxlX3NodXRkb3duKHN0cnVjdCBzY3RwX3NodXRkb3duX2NodW5rICpj
cCwKIAkJaWYgKHN0Y2ItPnNjdHBfc29ja2V0KSB7CiAJCQlzY3RwX3Nvcndha2V1cChzdGNiLT5z
Y3RwX2VwLCBzdGNiLT5zY3RwX3NvY2tldCk7CiAJCX0KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykg
fHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJU0NUUF9TT0NLRVRfVU5MT0NLKHNvLCAxKTsK
ICNlbmRpZgogCX0KIAkvKiBnb3RvIFNIVVRET1dOX1JFQ0VJVkVEIHN0YXRlIHRvIGJsb2NrIG5l
dyByZXF1ZXN0cyAqLwogCWlmIChzdGNiLT5zY3RwX3NvY2tldCkgewotCQlpZiAoKFNDVFBfR0VU
X1NUQVRFKGFzb2MpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpICYmCi0JCSAgICAo
U0NUUF9HRVRfU1RBVEUoYXNvYykgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tfU0VOVCkgJiYK
LQkJICAgIChTQ1RQX0dFVF9TVEFURShhc29jKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQp
KSB7Ci0JCQlTQ1RQX1NFVF9TVEFURShhc29jLCBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVE
KTsKLQkJCVNDVFBfQ0xFQVJfU1VCU1RBVEUoYXNvYywgU0NUUF9TVEFURV9TSFVURE9XTl9QRU5E
SU5HKTsKKwkJaWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dO
X1JFQ0VJVkVEKSAmJgorCQkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVf
U0hVVERPV05fQUNLX1NFTlQpICYmCisJCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgIT0gU0NU
UF9TVEFURV9TSFVURE9XTl9TRU5UKSkgeworCQkJU0NUUF9TRVRfU1RBVEUoc3RjYiwgU0NUUF9T
VEFURV9TSFVURE9XTl9SRUNFSVZFRCk7CiAJCQkvKiBub3RpZnkgdXBwZXIgbGF5ZXIgdGhhdCBw
ZWVyIGhhcyBpbml0aWF0ZWQgYSBzaHV0ZG93biAqLwogCQkJc2N0cF91bHBfbm90aWZ5KFNDVFBf
Tk9USUZZX1BFRVJfU0hVVERPV04sIHN0Y2IsIDAsIE5VTEwsIFNDVFBfU09fTk9UX0xPQ0tFRCk7
CiAKQEAgLTEwMzksNyArMTAzNyw3IEBAIHNjdHBfaGFuZGxlX3NodXRkb3duKHN0cnVjdCBzY3Rw
X3NodXRkb3duX2NodW5rICpjcCwKIAkJCSh2b2lkKVNDVFBfR0VUVElNRV9USU1FVkFMKCZhc29j
LT50aW1lX2VudGVyZWQpOwogCQl9CiAJfQotCWlmIChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBT
Q1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpIHsKKwlpZiAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0g
U0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKSB7CiAJCS8qCiAJCSAqIHN0b3AgdGhlIHNodXRkb3du
IHRpbWVyLCBzaW5jZSB3ZSBXSUxMIG1vdmUgdG8KIAkJICogU0hVVERPV04tQUNLLVNFTlQuCkBA
IC0xMDU5LDEzICsxMDU3LDEyIEBAIHNjdHBfaGFuZGxlX3NodXRkb3duKHN0cnVjdCBzY3RwX3No
dXRkb3duX2NodW5rICpjcCwKIAkJLyogbm8gb3V0c3RhbmRpbmcgZGF0YSB0byBzZW5kLCBzbyBt
b3ZlIG9uLi4uICovCiAJCS8qIHNlbmQgU0hVVERPV04tQUNLICovCiAJCS8qIG1vdmUgdG8gU0hV
VERPV04tQUNLLVNFTlQgc3RhdGUgKi8KLQkJaWYgKChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBT
Q1RQX1NUQVRFX09QRU4pIHx8Ci0JCSAgICAoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9T
VEFURV9TSFVURE9XTl9SRUNFSVZFRCkpIHsKKwkJaWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSA9
PSBTQ1RQX1NUQVRFX09QRU4pIHx8CisJCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NU
UF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkpIHsKIAkJCVNDVFBfU1RBVF9ERUNSX0dBVUdFMzIo
c2N0cHNfY3VycmVzdGFiKTsKIAkJfQotCQlTQ1RQX0NMRUFSX1NVQlNUQVRFKGFzb2MsIFNDVFBf
U1RBVEVfU0hVVERPV05fUEVORElORyk7Ci0JCWlmIChTQ1RQX0dFVF9TVEFURShhc29jKSAhPSBT
Q1RQX1NUQVRFX1NIVVRET1dOX0FDS19TRU5UKSB7Ci0JCQlTQ1RQX1NFVF9TVEFURShhc29jLCBT
Q1RQX1NUQVRFX1NIVVRET1dOX0FDS19TRU5UKTsKKwkJaWYgKFNDVFBfR0VUX1NUQVRFKHN0Y2Ip
ICE9IFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQpIHsKKwkJCVNDVFBfU0VUX1NUQVRFKHN0
Y2IsIFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQpOwogCQkJc2N0cF9zdG9wX3RpbWVyc19m
b3Jfc2h1dGRvd24oc3RjYik7CiAJCQlzY3RwX3NlbmRfc2h1dGRvd25fYWNrKHN0Y2IsIG5ldCk7
CiAJCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9TSFVURE9XTkFDSywKQEAgLTEw
ODIsNyArMTA3OSw3IEBAIHNjdHBfaGFuZGxlX3NodXRkb3duX2FjayhzdHJ1Y3Qgc2N0cF9zaHV0
ZG93bl9hY2tfY2h1bmsgKmNwIFNDVFBfVU5VU0VELAogICAgICAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdCBzY3RwX25ldHMgKm5ldCkKIHsKIAlzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNv
YzsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElO
RykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlz
dHJ1Y3Qgc29ja2V0ICpzbzsKIAogCXNvID0gU0NUUF9JTlBfU08oc3RjYi0+c2N0cF9lcCk7CkBA
IC0xMDk0LDE1ICsxMDkxLDE1IEBAIHNjdHBfaGFuZGxlX3NodXRkb3duX2FjayhzdHJ1Y3Qgc2N0
cF9zaHV0ZG93bl9hY2tfY2h1bmsgKmNwIFNDVFBfVU5VU0VELAogCiAJYXNvYyA9ICZzdGNiLT5h
c29jOwogCS8qIHByb2Nlc3MgYWNjb3JkaW5nIHRvIGFzc29jaWF0aW9uIHN0YXRlICovCi0JaWYg
KChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB8fAotCSAg
ICAoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9DT09LSUVfRUNIT0VEKSkgewor
CWlmICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9DT09LSUVfV0FJVCkgfHwK
KwkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCkp
IHsKIAkJLyogdW5leHBlY3RlZCBTSFVURE9XTi1BQ0suLi4gZG8gT09UQiBoYW5kbGluZy4uLiAq
LwogCQlzY3RwX3NlbmRfc2h1dGRvd25fY29tcGxldGUoc3RjYiwgbmV0LCAxKTsKIAkJU0NUUF9U
Q0JfVU5MT0NLKHN0Y2IpOwogCQlyZXR1cm47CiAJfQotCWlmICgoU0NUUF9HRVRfU1RBVEUoYXNv
YykgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKSAmJgotCSAgICAoU0NUUF9HRVRfU1RBVEUo
YXNvYykgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tfU0VOVCkpIHsKKwlpZiAoKFNDVFBfR0VU
X1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCkgJiYKKwkgICAgKFNDVFBf
R0VUX1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQpKSB7CiAJCS8q
IHVuZXhwZWN0ZWQgU0hVVERPV04tQUNLLi4uIHNvIGlnbm9yZS4uLiAqLwogCQlTQ1RQX1RDQl9V
TkxPQ0soc3RjYik7CiAJCXJldHVybjsKQEAgLTExMTYsNyArMTExMyw3IEBAIHNjdHBfaGFuZGxl
X3NodXRkb3duX2FjayhzdHJ1Y3Qgc2N0cF9zaHV0ZG93bl9hY2tfY2h1bmsgKmNwIFNDVFBfVU5V
U0VELAogCQlhc29jLT5jb250cm9sX3BkYXBpLT5wZGFwaV9hYm9ydGVkID0gMTsKIAkJYXNvYy0+
Y29udHJvbF9wZGFwaSA9IE5VTEw7CiAJCVNDVFBfSU5QX1JFQURfVU5MT0NLKHN0Y2ItPnNjdHBf
ZXApOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNU
SU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
CQlhdG9taWNfYWRkX2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIDEpOwogCQlTQ1RQX1RDQl9VTkxP
Q0soc3RjYik7CiAJCVNDVFBfU09DS0VUX0xPQ0soc28sIDEpOwpAQCAtMTEyOSw3ICsxMTI2LDcg
QEAgc2N0cF9oYW5kbGVfc2h1dGRvd25fYWNrKHN0cnVjdCBzY3RwX3NodXRkb3duX2Fja19jaHVu
ayAqY3AgU0NUUF9VTlVTRUQsCiAJCX0KICNlbmRpZgogCQlzY3RwX3Nvcndha2V1cChzdGNiLT5z
Y3RwX2VwLCBzdGNiLT5zY3RwX3NvY2tldCk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRl
ZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCVNDVFBfU09DS0VUX1VOTE9DSyhzbywgMSk7CiAjZW5k
aWYKIAl9CkBAIC0xMTU1LDcgKzExNTIsNyBAQCBzY3RwX2hhbmRsZV9zaHV0ZG93bl9hY2soc3Ry
dWN0IHNjdHBfc2h1dGRvd25fYWNrX2NodW5rICpjcCBTQ1RQX1VOVVNFRCwKIAl9CiAJU0NUUF9T
VEFUX0lOQ1JfQ09VTlRFUjMyKHNjdHBzX3NodXRkb3duKTsKIAkvKiBmcmVlIHRoZSBUQ0IgYnV0
IGZpcnN0IHNhdmUgb2ZmIHRoZSBlcCAqLwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZp
bmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29jLnJlZmNudCwg
MSk7CiAJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwogCVNDVFBfU09DS0VUX0xPQ0soc28sIDEpOwpA
QCAtMTE2NCwxOSArMTE2MSwxOCBAQCBzY3RwX2hhbmRsZV9zaHV0ZG93bl9hY2soc3RydWN0IHNj
dHBfc2h1dGRvd25fYWNrX2NodW5rICpjcCBTQ1RQX1VOVVNFRCwKICNlbmRpZgogCSh2b2lkKXNj
dHBfZnJlZV9hc3NvYyhzdGNiLT5zY3RwX2VwLCBzdGNiLCBTQ1RQX05PUk1BTF9QUk9DLAogCQkJ
ICAgICAgU0NUUF9GUk9NX1NDVFBfSU5QVVQgKyBTQ1RQX0xPQ18xMSk7Ci0jaWYgZGVmaW5lZChf
X0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChf
X0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJU0NUUF9TT0NLRVRfVU5MT0NL
KHNvLCAxKTsKICNlbmRpZgogfQogCiBzdGF0aWMgdm9pZAotc2N0cF9wcm9jZXNzX3VucmVjb2df
Y2h1bmsoc3RydWN0IHNjdHBfdGNiICpzdGNiLCB1aW50OF90IGNodW5rX3R5cGUsCi0gICAgc3Ry
dWN0IHNjdHBfbmV0cyAqbmV0KQorc2N0cF9wcm9jZXNzX3VucmVjb2dfY2h1bmsoc3RydWN0IHNj
dHBfdGNiICpzdGNiLCB1aW50OF90IGNodW5rX3R5cGUpCiB7CiAJc3dpdGNoIChjaHVua190eXBl
KSB7CiAJY2FzZSBTQ1RQX0FTQ09ORl9BQ0s6CiAJY2FzZSBTQ1RQX0FTQ09ORjoKLQkJc2N0cF9h
c2NvbmZfY2xlYW51cChzdGNiLCBuZXQpOworCQlzY3RwX2FzY29uZl9jbGVhbnVwKHN0Y2IpOwog
CQlicmVhazsKIAljYXNlIFNDVFBfSUZPUldBUkRfQ1VNX1RTTjoKIAljYXNlIFNDVFBfRk9SV0FS
RF9DVU1fVFNOOgpAQCAtMTIzOCw3ICsxMjM0LDcgQEAgc2N0cF9oYW5kbGVfZXJyb3Ioc3RydWN0
IHNjdHBfY2h1bmtoZHIgKmNoLAogCXN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jOwogCXVp
bnQzMl90IHJlbWFpbmluZ19sZW5ndGgsIGFkanVzdDsKIAl1aW50MTZfdCBjb2RlLCBjYXVzZV9j
b2RlLCBjYXVzZV9sZW5ndGg7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NU
UF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAJc3RydWN0IHNvY2tldCAqc287CiAjZW5kaWYKIApAQCAtMTI3OSwxNCAr
MTI3NSwxNCBAQCBzY3RwX2hhbmRsZV9lcnJvcihzdHJ1Y3Qgc2N0cF9jaHVua2hkciAqY2gsCiAJ
CQkJY2F1c2VfY29kZSk7CiAJCQlicmVhazsKIAkJY2FzZSBTQ1RQX0NBVVNFX05BVF9DT0xMSURJ
TkdfU1RBVEU6Ci0JCSAgICAgICAgU0NUUERCRyhTQ1RQX0RFQlVHX0lOUFVUMiwgIlJlY2VpdmVk
IENvbGxpZGluZyBzdGF0ZSBhYm9ydCBmbGFnczogJXhcbiIsCisJCQlTQ1RQREJHKFNDVFBfREVC
VUdfSU5QVVQyLCAiUmVjZWl2ZWQgQ29sbGlkaW5nIHN0YXRlLCBFUlJPUiBmbGFnczogJXhcbiIs
CiAJCQkJY2gtPmNodW5rX2ZsYWdzKTsKIAkJCWlmIChzY3RwX2hhbmRsZV9uYXRfY29sbGlkaW5n
X3N0YXRlKHN0Y2IpKSB7CiAJCQkJcmV0dXJuICgwKTsKIAkJCX0KIAkJCWJyZWFrOwogCQljYXNl
IFNDVFBfQ0FVU0VfTkFUX01JU1NJTkdfU1RBVEU6Ci0JCQlTQ1RQREJHKFNDVFBfREVCVUdfSU5Q
VVQyLCAiUmVjZWl2ZWQgbWlzc2luZyBzdGF0ZSBhYm9ydCBmbGFnczogJXhcbiIsCisJCQlTQ1RQ
REJHKFNDVFBfREVCVUdfSU5QVVQyLCAiUmVjZWl2ZWQgbWlzc2luZyBzdGF0ZSwgRVJST1IgZmxh
Z3M6ICV4XG4iLAogCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgY2gtPmNodW5rX2ZsYWdz
KTsKIAkJCWlmIChzY3RwX2hhbmRsZV9uYXRfbWlzc2luZ19zdGF0ZShzdGNiLCBuZXQpKSB7CiAJ
CQkJcmV0dXJuICgwKTsKQEAgLTEyOTgsNyArMTI5NCw3IEBAIHNjdHBfaGFuZGxlX2Vycm9yKHN0
cnVjdCBzY3RwX2NodW5raGRyICpjaCwKIAkJCSAqIHdhaXRpbmcuCiAJCQkgKi8KIAkJCWlmICgo
Y2F1c2VfbGVuZ3RoID49IHNpemVvZihzdHJ1Y3Qgc2N0cF9lcnJvcl9zdGFsZV9jb29raWUpKSAm
JgotCQkJICAgIChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9FQ0hP
RUQpKSB7CisJCQkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfQ09PS0lF
X0VDSE9FRCkpIHsKIAkJCQlzdHJ1Y3Qgc2N0cF9lcnJvcl9zdGFsZV9jb29raWUgKnN0YWxlX2Nv
b2tpZTsKIAogCQkJCXN0YWxlX2Nvb2tpZSA9IChzdHJ1Y3Qgc2N0cF9lcnJvcl9zdGFsZV9jb29r
aWUgKiljYXVzZTsKQEAgLTEzMTQsNyArMTMxMCw3IEBAIHNjdHBfaGFuZGxlX2Vycm9yKHN0cnVj
dCBzY3RwX2NodW5raGRyICpjaCwKIAkJCQkgICAgYXNvYy0+bWF4X2luaXRfdGltZXMpIHsKIAkJ
CQkJc2N0cF9hYm9ydF9ub3RpZmljYXRpb24oc3RjYiwgMCwgMCwgTlVMTCwgU0NUUF9TT19OT1Rf
TE9DS0VEKTsKIAkJCQkJLyogbm93IGZyZWUgdGhlIGFzb2MgKi8KLSNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQkJc28gPSBTQ1RQX0lOUF9TTyhz
dGNiLT5zY3RwX2VwKTsKIAkJCQkJYXRvbWljX2FkZF9pbnQoJnN0Y2ItPmFzb2MucmVmY250LCAx
KTsKIAkJCQkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwpAQCAtMTMyNCwxNSArMTMyMCwxNCBAQCBz
Y3RwX2hhbmRsZV9lcnJvcihzdHJ1Y3Qgc2N0cF9jaHVua2hkciAqY2gsCiAjZW5kaWYKIAkJCQkJ
KHZvaWQpc2N0cF9mcmVlX2Fzc29jKHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIFNDVFBfTk9STUFMX1BS
T0MsCiAJCQkJCQkJICAgICAgU0NUUF9GUk9NX1NDVFBfSU5QVVQgKyBTQ1RQX0xPQ18xMik7Ci0j
aWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisj
aWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJCVND
VFBfU09DS0VUX1VOTE9DSyhzbywgMSk7CiAjZW5kaWYKIAkJCQkJcmV0dXJuICgtMSk7CiAJCQkJ
fQogCQkJCS8qIGJsYXN0IGJhY2sgdG8gSU5JVCBzdGF0ZSAqLwogCQkJCXNjdHBfdG9zc19vbGRf
Y29va2llcyhzdGNiLCAmc3RjYi0+YXNvYyk7Ci0JCQkJYXNvYy0+c3RhdGUgJj0gflNDVFBfU1RB
VEVfQ09PS0lFX0VDSE9FRDsKLQkJCQlhc29jLT5zdGF0ZSB8PSBTQ1RQX1NUQVRFX0NPT0tJRV9X
QUlUOworCQkJCVNDVFBfU0VUX1NUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQpOwog
CQkJCXNjdHBfc3RvcF9hbGxfY29va2llX3RpbWVycyhzdGNiKTsKIAkJCQlzY3RwX3NlbmRfaW5p
dGlhdGUoc3RjYi0+c2N0cF9lcCwgc3RjYiwgU0NUUF9TT19OT1RfTE9DS0VEKTsKIAkJCX0KQEAg
LTEzNTUsNyArMTM1MCw3IEBAIHNjdHBfaGFuZGxlX2Vycm9yKHN0cnVjdCBzY3RwX2NodW5raGRy
ICpjaCwKIAkJCQlzdHJ1Y3Qgc2N0cF9lcnJvcl91bnJlY29nbml6ZWRfY2h1bmsgKnVucmVjX2No
dW5rOwogCiAJCQkJdW5yZWNfY2h1bmsgPSAoc3RydWN0IHNjdHBfZXJyb3JfdW5yZWNvZ25pemVk
X2NodW5rICopY2F1c2U7Ci0JCQkJc2N0cF9wcm9jZXNzX3VucmVjb2dfY2h1bmsoc3RjYiwgdW5y
ZWNfY2h1bmstPmNoLmNodW5rX3R5cGUsIG5ldCk7CisJCQkJc2N0cF9wcm9jZXNzX3VucmVjb2df
Y2h1bmsoc3RjYiwgdW5yZWNfY2h1bmstPmNoLmNodW5rX3R5cGUpOwogCQkJfQogCQkJYnJlYWs7
CiAJCWNhc2UgU0NUUF9DQVVTRV9VTlJFQ09HX1BBUkFNOgpAQCAtMTQxNiw3ICsxNDExLDcgQEAg
c2N0cF9oYW5kbGVfaW5pdF9hY2soc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZz
ZXQsCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIgKnNyYywgc3RydWN0IHNv
Y2thZGRyICpkc3QsIHN0cnVjdCBzY3RwaGRyICpzaCwKICAgICAgICAgICAgICAgICAgICAgIHN0
cnVjdCBzY3RwX2luaXRfYWNrX2NodW5rICpjcCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogICAg
ICAgICAgICAgICAgICAgICAgc3RydWN0IHNjdHBfbmV0cyAqbmV0LCBpbnQgKmFib3J0X25vX3Vu
bG9jaywKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAgICAgICAgICAgICAgICAgICAgICB1aW50OF90
IG1mbG93dHlwZSwgdWludDMyX3QgbWZsb3dpZCwKICNlbmRpZgogICAgICAgICAgICAgICAgICAg
ICAgdWludDMyX3QgdnJmX2lkKQpAQCAtMTQzNyw3ICsxNDMyLDcgQEAgc2N0cF9oYW5kbGVfaW5p
dF9hY2soc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJCW9wX2VyciA9
IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9DQVVTRV9JTlZBTElEX1BBUkFNLCAiIik7CiAJCXNj
dHBfYWJvcnRfYXNzb2NpYXRpb24oc3RjYi0+c2N0cF9lcCwgc3RjYiwgbSwgaXBobGVuLAogCQkg
ICAgICAgICAgICAgICAgICAgICAgIHNyYywgZHN0LCBzaCwgb3BfZXJyLAotI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKIAkJICAgICAgICAgICAgICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQsCiAj
ZW5kaWYKIAkJICAgICAgICAgICAgICAgICAgICAgICB2cmZfaWQsIG5ldC0+cG9ydCk7CkBAIC0x
NDUxLDcgKzE0NDYsNyBAQCBzY3RwX2hhbmRsZV9pbml0X2FjayhzdHJ1Y3QgbWJ1ZiAqbSwgaW50
IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQ
X0NBVVNFX0lOVkFMSURfUEFSQU0sICIiKTsKIAkJc2N0cF9hYm9ydF9hc3NvY2lhdGlvbihzdGNi
LT5zY3RwX2VwLCBzdGNiLCBtLCBpcGhsZW4sCiAJCSAgICAgICAgICAgICAgICAgICAgICAgc3Jj
LCBkc3QsIHNoLCBvcF9lcnIsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkgICAgICAgICAgICAg
ICAgICAgICAgIG1mbG93dHlwZSwgbWZsb3dpZCwKICNlbmRpZgogCQkgICAgICAgICAgICAgICAg
ICAgICAgIHZyZl9pZCwgbmV0LT5wb3J0KTsKQEAgLTE0NjMsNyArMTQ1OCw3IEBAIHNjdHBfaGFu
ZGxlX2luaXRfYWNrKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCQlv
cF9lcnIgPSBzY3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBfQ0FVU0VfSU5WQUxJRF9QQVJBTSwgIiIp
OwogCQlzY3RwX2Fib3J0X2Fzc29jaWF0aW9uKHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIG0sIGlwaGxl
biwKIAkJICAgICAgICAgICAgICAgICAgICAgICBzcmMsIGRzdCwgc2gsIG9wX2VyciwKLSNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiAJCSAgICAgICAgICAgICAgICAgICAgICAgbWZsb3d0eXBlLCBtZmxv
d2lkLAogI2VuZGlmCiAJCSAgICAgICAgICAgICAgICAgICAgICAgdnJmX2lkLCBuZXQtPnBvcnQp
OwpAQCAtMTQ3NSw3ICsxNDcwLDcgQEAgc2N0cF9oYW5kbGVfaW5pdF9hY2soc3RydWN0IG1idWYg
Km0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1
c2UoU0NUUF9DQVVTRV9JTlZBTElEX1BBUkFNLCAiIik7CiAJCXNjdHBfYWJvcnRfYXNzb2NpYXRp
b24oc3RjYi0+c2N0cF9lcCwgc3RjYiwgbSwgaXBobGVuLAogCQkgICAgICAgICAgICAgICAgICAg
ICAgIHNyYywgZHN0LCBzaCwgb3BfZXJyLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJICAgICAg
ICAgICAgICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQsCiAjZW5kaWYKIAkJICAgICAgICAg
ICAgICAgICAgICAgICB2cmZfaWQsIG5ldC0+cG9ydCk7CkBAIC0xNDg3LDcgKzE0ODIsNyBAQCBz
Y3RwX2hhbmRsZV9pbml0X2FjayhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNl
dCwKIAkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQX0NBVVNFX0lOVkFMSURfUEFS
QU0sICIiKTsKIAkJc2N0cF9hYm9ydF9hc3NvY2lhdGlvbihzdGNiLT5zY3RwX2VwLCBzdGNiLCBt
LCBpcGhsZW4sCiAJCSAgICAgICAgICAgICAgICAgICAgICAgc3JjLCBkc3QsIHNoLCBvcF9lcnIs
Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkgICAgICAgICAgICAgICAgICAgICAgIG1mbG93dHlw
ZSwgbWZsb3dpZCwKICNlbmRpZgogCQkgICAgICAgICAgICAgICAgICAgICAgIHZyZl9pZCwgbmV0
LT5wb3J0KTsKQEAgLTE0OTUsNyArMTQ5MCw3IEBAIHNjdHBfaGFuZGxlX2luaXRfYWNrKHN0cnVj
dCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCQlyZXR1cm4gKC0xKTsKIAl9CiAJ
LyogcHJvY2VzcyBhY2NvcmRpbmcgdG8gYXNzb2NpYXRpb24gc3RhdGUuLi4gKi8KLQlzd2l0Y2gg
KHN0Y2ItPmFzb2Muc3RhdGUgJiBTQ1RQX1NUQVRFX01BU0spIHsKKwlzd2l0Y2ggKFNDVFBfR0VU
X1NUQVRFKHN0Y2IpKSB7CiAJY2FzZSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUOgogCQkvKiB0aGlz
IGlzIHRoZSBleHBlY3RlZCBzdGF0ZSBmb3IgdGhpcyBjaHVuayAqLwogCQkvKiBwcm9jZXNzIHRo
ZSBJTklULUFDSyBwYXJhbWV0ZXJzICovCkBAIC0xNTE0LDcgKzE1MDksNyBAQCBzY3RwX2hhbmRs
ZV9pbml0X2FjayhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJfQog
CQlpZiAoc2N0cF9wcm9jZXNzX2luaXRfYWNrKG0sIGlwaGxlbiwgb2Zmc2V0LCBzcmMsIGRzdCwg
c2gsIGNwLCBzdGNiLAogCQkgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldCwgYWJvcnRfbm9f
dW5sb2NrLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJICAgICAgICAgICAgICAgICAgICAgICAg
ICBtZmxvd3R5cGUsIG1mbG93aWQsCiAjZW5kaWYKIAkJICAgICAgICAgICAgICAgICAgICAgICAg
ICB2cmZfaWQpIDwgMCkgewpAQCAtMTUyMyw3ICsxNTE4LDcgQEAgc2N0cF9oYW5kbGVfaW5pdF9h
Y2soc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJCX0KIAkJLyogdXBk
YXRlIG91ciBzdGF0ZSAqLwogCQlTQ1RQREJHKFNDVFBfREVCVUdfSU5QVVQyLCAibW92aW5nIHRv
IENPT0tJRS1FQ0hPRUQgc3RhdGVcbiIpOwotCQlTQ1RQX1NFVF9TVEFURSgmc3RjYi0+YXNvYywg
U0NUUF9TVEFURV9DT09LSUVfRUNIT0VEKTsKKwkJU0NUUF9TRVRfU1RBVEUoc3RjYiwgU0NUUF9T
VEFURV9DT09LSUVfRUNIT0VEKTsKIAogCQkvKiByZXNldCB0aGUgUlRPIGNhbGMgKi8KIAkJaWYg
KFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9sb2dnaW5nX2xldmVsKSAmIFNDVFBfVEhSRVNIT0xEX0xP
R0dJTkcpIHsKQEAgLTE1NzMsNyArMTU2OCw3IEBAIHNjdHBfcHJvY2Vzc19jb29raWVfbmV3KHN0
cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogICAgIHN0cnVjdCBzY3RwX2lu
cGNiICppbnAsIHN0cnVjdCBzY3RwX25ldHMgKipuZXRwLAogICAgIHN0cnVjdCBzb2NrYWRkciAq
aW5pdF9zcmMsIGludCAqbm90aWZpY2F0aW9uLAogICAgIGludCBhdXRoX3NraXBwZWQsIHVpbnQz
Ml90IGF1dGhfb2Zmc2V0LCB1aW50MzJfdCBhdXRoX2xlbiwKLSNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAgICAgdWludDhfdCBtZmxvd3R5cGUsIHVpbnQzMl90IG1mbG93aWQsCiAjZW5kaWYKICAgICB1
aW50MzJfdCB2cmZfaWQsIHVpbnQxNl90IHBvcnQpOwpAQCAtMTU5Miw3ICsxNTg3LDcgQEAgc2N0
cF9wcm9jZXNzX2Nvb2tpZV9leGlzdGluZyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50
IG9mZnNldCwKICAgICBzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0
Y2IsIHN0cnVjdCBzY3RwX25ldHMgKipuZXRwLAogICAgIHN0cnVjdCBzb2NrYWRkciAqaW5pdF9z
cmMsIGludCAqbm90aWZpY2F0aW9uLAogICAgIGludCBhdXRoX3NraXBwZWQsIHVpbnQzMl90IGF1
dGhfb2Zmc2V0LCB1aW50MzJfdCBhdXRoX2xlbiwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQor
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAgICAg
dWludDhfdCBtZmxvd3R5cGUsIHVpbnQzMl90IG1mbG93aWQsCiAjZW5kaWYKICAgICB1aW50MzJf
dCB2cmZfaWQsIHVpbnQxNl90IHBvcnQpCkBAIC0xNjIxLDEyICsxNjE2LDEyIEBAIHNjdHBfcHJv
Y2Vzc19jb29raWVfZXhpc3Rpbmcoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZz
ZXQsCiAJaWYgKGhvd19pbmR4IDwgc2l6ZW9mKGFzb2MtPmNvb2tpZV9ob3cpKSB7CiAJCWFzb2Mt
PmNvb2tpZV9ob3dbaG93X2luZHhdID0gMTsKIAl9Ci0JaWYgKFNDVFBfR0VUX1NUQVRFKGFzb2Mp
ID09IFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQpIHsKKwlpZiAoU0NUUF9HRVRfU1RBVEUo
c3RjYikgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tfU0VOVCkgewogCQkvKiBTSFVURE9XTiBj
YW1lIGluIGFmdGVyIHNlbmRpbmcgSU5JVC1BQ0sgKi8KIAkJc2N0cF9zZW5kX3NodXRkb3duX2Fj
ayhzdGNiLCBzdGNiLT5hc29jLnByaW1hcnlfZGVzdGluYXRpb24pOwogCQlvcF9lcnIgPSBzY3Rw
X2dlbmVyYXRlX2NhdXNlKFNDVFBfQ0FVU0VfQ09PS0lFX0lOX1NIVVRET1dOLCAiIik7CiAJCXNj
dHBfc2VuZF9vcGVycl90byhzcmMsIGRzdCwgc2gsIGNvb2tpZS0+cGVlcnNfdnRhZywgb3BfZXJy
LAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJICAgICAgICAgICAgICAgICAgIG1mbG93dHlwZSwg
bWZsb3dpZCwgaW5wLT5maWJudW0sCiAjZW5kaWYKIAkJICAgICAgICAgICAgICAgICAgIHZyZl9p
ZCwgbmV0LT5wb3J0KTsKQEAgLTE2OTIsNyArMTY4Nyw3IEBAIHNjdHBfcHJvY2Vzc19jb29raWVf
ZXhpc3Rpbmcoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJCQlyZXR1
cm4gKE5VTEwpOwogCiAJCX0KLQkJc3dpdGNoIChTQ1RQX0dFVF9TVEFURShhc29jKSkgeworCQlz
d2l0Y2ggKFNDVFBfR0VUX1NUQVRFKHN0Y2IpKSB7CiAJCQljYXNlIFNDVFBfU1RBVEVfQ09PS0lF
X1dBSVQ6CiAJCQljYXNlIFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRDoKIAkJCQkvKgpAQCAtMTcx
NiwyMiArMTcxMSwyMiBAQCBzY3RwX3Byb2Nlc3NfY29va2llX2V4aXN0aW5nKHN0cnVjdCBtYnVm
ICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCQkJCSAgICAgICAgICAgICAgICBzdGNiLCBu
ZXQsCiAJCQkJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX0lOUFVUICsgU0NUUF9MT0Nf
MTQpOwogCQkJCS8qIHVwZGF0ZSBjdXJyZW50IHN0YXRlICovCi0JCQkJaWYgKFNDVFBfR0VUX1NU
QVRFKGFzb2MpID09IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCkKKwkJCQlpZiAoU0NUUF9HRVRf
U1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9DT09LSUVfRUNIT0VEKQogCQkJCQlTQ1RQX1NUQVRf
SU5DUl9DT1VOVEVSMzIoc2N0cHNfYWN0aXZlZXN0YWIpOwogCQkJCWVsc2UKIAkJCQkJU0NUUF9T
VEFUX0lOQ1JfQ09VTlRFUjMyKHNjdHBzX2NvbGxpc2lvbmVzdGFiKTsKIAotCQkJCVNDVFBfU0VU
X1NUQVRFKGFzb2MsIFNDVFBfU1RBVEVfT1BFTik7CisJCQkJU0NUUF9TRVRfU1RBVEUoc3RjYiwg
U0NUUF9TVEFURV9PUEVOKTsKIAkJCQlpZiAoYXNvYy0+c3RhdGUgJiBTQ1RQX1NUQVRFX1NIVVRE
T1dOX1BFTkRJTkcpIHsKIAkJCQkJc2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfU0hV
VERPV05HVUFSRCwKLQkJCQkJCQkgc3RjYi0+c2N0cF9lcCwgc3RjYiwgYXNvYy0+cHJpbWFyeV9k
ZXN0aW5hdGlvbik7CisJCQkJCSAgICAgICAgICAgICAgICAgc3RjYi0+c2N0cF9lcCwgc3RjYiwg
TlVMTCk7CiAJCQkJfQogCQkJCVNDVFBfU1RBVF9JTkNSX0dBVUdFMzIoc2N0cHNfY3VycmVzdGFi
KTsKIAkJCQlzY3RwX3N0b3BfYWxsX2Nvb2tpZV90aW1lcnMoc3RjYik7CiAJCQkJaWYgKCgoc3Rj
Yi0+c2N0cF9lcC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkJ
ICAgICAoc3RjYi0+c2N0cF9lcC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBP
T0wpKSAmJgogCQkJCSAgICAoIVNDVFBfSVNfTElTVEVOSU5HKGlucCkpKSB7Ci0jaWYgZGVmaW5l
ZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5l
ZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJCXN0cnVjdCBzb2Nr
ZXQgKnNvOwogI2VuZGlmCiAJCQkJCS8qCkBAIC0xNzQyLDcgKzE3MzcsNyBAQCBzY3RwX3Byb2Nl
c3NfY29va2llX2V4aXN0aW5nKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0
LAogCQkJCQkgKi8KIAkJCQkJc3RjYi0+c2N0cF9lcC0+c2N0cF9mbGFncyB8PQogCQkJCQkJU0NU
UF9QQ0JfRkxBR1NfQ09OTkVDVEVEOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVk
KFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogCQkJCQlzbyA9IFNDVFBfSU5QX1NPKHN0Y2ItPnNjdHBfZXApOwog
CQkJCQlhdG9taWNfYWRkX2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIDEpOwogCQkJCQlTQ1RQX1RD
Ql9VTkxPQ0soc3RjYik7CkBAIC0xNzU1LDcgKzE3NTAsNyBAQCBzY3RwX3Byb2Nlc3NfY29va2ll
X2V4aXN0aW5nKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCQkJCQl9
CiAjZW5kaWYKIAkJCQkJc29pc2Nvbm5lY3RlZChzdGNiLT5zY3RwX3NvY2tldCk7Ci0jaWYgZGVm
aW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVm
aW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJCVNDVFBfU09D
S0VUX1VOTE9DSyhzbywgMSk7CiAjZW5kaWYKIAkJCQl9CkBAIC0xNzY4LDkgKzE3NjMsOCBAQCBz
Y3RwX3Byb2Nlc3NfY29va2llX2V4aXN0aW5nKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBp
bnQgb2Zmc2V0LAogCQkJCW9sZC50dl9zZWMgPSBjb29raWUtPnRpbWVfZW50ZXJlZC50dl9zZWM7
CiAJCQkJb2xkLnR2X3VzZWMgPSBjb29raWUtPnRpbWVfZW50ZXJlZC50dl91c2VjOwogCQkJCW5l
dC0+aGJfcmVzcG9uZGVkID0gMTsKLQkJCQluZXQtPlJUTyA9IHNjdHBfY2FsY3VsYXRlX3J0byhz
dGNiLCBhc29jLCBuZXQsCi0JCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9sZCwK
LQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTQ1RQX1JUVF9GUk9NX05PTl9EQVRB
KTsKKwkJCQlzY3RwX2NhbGN1bGF0ZV9ydG8oc3RjYiwgYXNvYywgbmV0LCAmb2xkLAorCQkJCSAg
ICAgICAgICAgICAgICAgICBTQ1RQX1JUVF9GUk9NX05PTl9EQVRBKTsKIAogCQkJCWlmIChzdGNi
LT5hc29jLnNjdHBfYXV0b2Nsb3NlX3RpY2tzICYmCiAJCQkJICAgIChzY3RwX2lzX2ZlYXR1cmVf
b24oaW5wLCBTQ1RQX1BDQl9GTEFHU19BVVRPQ0xPU0UpKSkgewpAQCAtMTgyMCw3ICsxODE0LDcg
QEAgc2N0cF9wcm9jZXNzX2Nvb2tpZV9leGlzdGluZyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxl
biwgaW50IG9mZnNldCwKIAkvKiBJZiBuYXQgc3VwcG9ydCwgYW5kIHRoZSBiZWxvdyBhbmQgc3Rj
YiBpcyBlc3RhYmxpc2hlZCwKIAkgKiBzZW5kIGJhY2sgYSBBQk9SVChjb2xsaWRpbmcgc3RhdGUp
IGlmIHdlIGFyZSBlc3RhYmxpc2hlZC4KIAkgKi8KLQlpZiAoKFNDVFBfR0VUX1NUQVRFKGFzb2Mp
ID09IFNDVFBfU1RBVEVfT1BFTikgICYmCisJaWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBT
Q1RQX1NUQVRFX09QRU4pICAmJgogCSAgICAoYXNvYy0+cGVlcl9zdXBwb3J0c19uYXQpICYmCiAJ
ICAgICgobnRvaGwoaW5pdGFja19jcC0+aW5pdC5pbml0aWF0ZV90YWcpID09IGFzb2MtPm15X3Z0
YWcpICYmCiAJICAgICgobnRvaGwoaW5pdF9jcC0+aW5pdC5pbml0aWF0ZV90YWcpICE9IGFzb2Mt
PnBlZXJfdnRhZykgfHwKQEAgLTE4MzYsNyArMTgzMCw3IEBAIHNjdHBfcHJvY2Vzc19jb29raWVf
ZXhpc3Rpbmcoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJCSAqLwog
CQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBfQ0FVU0VfTkFUX0NPTExJRElOR19T
VEFURSwgIiIpOwogCQlzY3RwX3NlbmRfYWJvcnQobSwgaXBobGVuLCAgc3JjLCBkc3QsIHNoLCAw
LCBvcF9lcnIsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkgICAgICAgICAgICAgICAgbWZsb3d0
eXBlLCBtZmxvd2lkLCBpbnAtPmZpYm51bSwKICNlbmRpZgogCQkgICAgICAgICAgICAgICAgdnJm
X2lkLCBwb3J0KTsKQEAgLTE5MjMsMTkgKzE5MTcsMTkgQEAgc2N0cF9wcm9jZXNzX2Nvb2tpZV9l
eGlzdGluZyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJCQlhc29j
LT5jb29raWVfaG93W2hvd19pbmR4XSA9IDEwOwogCQkJcmV0dXJuIChOVUxMKTsKIAkJfQotCQlp
ZiAoKGFzb2MtPnN0YXRlICYgU0NUUF9TVEFURV9DT09LSUVfV0FJVCkgfHwKLQkJICAgIChhc29j
LT5zdGF0ZSAmIFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCkpIHsKKwkJaWYgKChTQ1RQX0dFVF9T
VEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB8fAorCQkgICAgKFNDVFBfR0VU
X1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCkpIHsKIAkJCSpub3RpZmlj
YXRpb24gPSBTQ1RQX05PVElGWV9BU1NPQ19VUDsKIAogCQkJaWYgKCgoc3RjYi0+c2N0cF9lcC0+
c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgIChzdGNiLT5z
Y3RwX2VwLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkpICYmCiAJCQkg
ICAgKCFTQ1RQX0lTX0xJU1RFTklORyhpbnApKSkgewotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8
fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCXN0cnVjdCBzb2NrZXQgKnNvOwogI2VuZGlm
CiAJCQkJc3RjYi0+c2N0cF9lcC0+c2N0cF9mbGFncyB8PQogCQkJCQlTQ1RQX1BDQl9GTEFHU19D
T05ORUNURUQ7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NL
X1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAJCQkJc28gPSBTQ1RQX0lOUF9TTyhzdGNiLT5zY3RwX2VwKTsKIAkJCQlhdG9taWNfYWRk
X2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIDEpOwogCQkJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsK
QEAgLTE5NDgsMjQgKzE5NDIsMjQgQEAgc2N0cF9wcm9jZXNzX2Nvb2tpZV9leGlzdGluZyhzdHJ1
Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJCQl9CiAjZW5kaWYKIAkJCQlz
b2lzY29ubmVjdGVkKHN0Y2ItPnNjdHBfc29ja2V0KTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykg
fHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDEp
OwogI2VuZGlmCiAJCQl9Ci0JCQlpZiAoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFU
RV9DT09LSUVfRUNIT0VEKQorCQkJaWYgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RB
VEVfQ09PS0lFX0VDSE9FRCkKIAkJCQlTQ1RQX1NUQVRfSU5DUl9DT1VOVEVSMzIoc2N0cHNfYWN0
aXZlZXN0YWIpOwogCQkJZWxzZQogCQkJCVNDVFBfU1RBVF9JTkNSX0NPVU5URVIzMihzY3Rwc19j
b2xsaXNpb25lc3RhYik7CiAJCQlTQ1RQX1NUQVRfSU5DUl9HQVVHRTMyKHNjdHBzX2N1cnJlc3Rh
Yik7Ci0JCX0gZWxzZSBpZiAoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9PUEVO
KSB7CisJCX0gZWxzZSBpZiAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9PUEVO
KSB7CiAJCQlTQ1RQX1NUQVRfSU5DUl9DT1VOVEVSMzIoc2N0cHNfcmVzdGFydGVzdGFiKTsKIAkJ
fSBlbHNlIHsKIAkJCVNDVFBfU1RBVF9JTkNSX0NPVU5URVIzMihzY3Rwc19jb2xsaXNpb25lc3Rh
Yik7CiAJCX0KLQkJU0NUUF9TRVRfU1RBVEUoYXNvYywgU0NUUF9TVEFURV9PUEVOKTsKKwkJU0NU
UF9TRVRfU1RBVEUoc3RjYiwgU0NUUF9TVEFURV9PUEVOKTsKIAkJaWYgKGFzb2MtPnN0YXRlICYg
U0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HKSB7CiAJCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBf
VElNRVJfVFlQRV9TSFVURE9XTkdVQVJELAotCQkJCQkgc3RjYi0+c2N0cF9lcCwgc3RjYiwgYXNv
Yy0+cHJpbWFyeV9kZXN0aW5hdGlvbik7CisJCQkgICAgICAgICAgICAgICAgIHN0Y2ItPnNjdHBf
ZXAsIHN0Y2IsIE5VTEwpOwogCQl9CiAJCXNjdHBfc3RvcF9hbGxfY29va2llX3RpbWVycyhzdGNi
KTsKIAkJc2N0cF90b3NzX29sZF9jb29raWVzKHN0Y2IsIGFzb2MpOwpAQCAtMTk5MCw3ICsxOTg0
LDcgQEAgc2N0cF9wcm9jZXNzX2Nvb2tpZV9leGlzdGluZyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlw
aGxlbiwgaW50IG9mZnNldCwKIAkgICAgY29va2llLT50aWVfdGFnX3BlZXJfdnRhZyA9PSBhc29j
LT5wZWVyX3Z0YWdfbm9uY2UgJiYKIAkgICAgY29va2llLT50aWVfdGFnX3BlZXJfdnRhZyAhPSAw
KSB7CiAJCXN0cnVjdCBzY3RwYXNvY2hlYWQgKmhlYWQ7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18p
IHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCXN0cnVjdCBzb2NrZXQgKnNvOwogI2VuZGlm
CiAKQEAgLTIwMDQsNyArMTk5OCw3IEBAIHNjdHBfcHJvY2Vzc19jb29raWVfZXhpc3Rpbmcoc3Ry
dWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJCQkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNoLCBjb29raWUsIGNvb2tpZV9sZW4sCiAJCQkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlucCwgbmV0cCwgaW5pdF9zcmMsbm90aWZpY2F0aW9uLAogCQkJ
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRoX3NraXBwZWQsIGF1dGhfb2Zmc2V0
LCBhdXRoX2xlbiwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1mbG93dHlwZSwgbWZsb3dpZCwKICNlbmRpZgogCQkJICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2cmZfaWQsIHBvcnQpKTsKQEAgLTIwMjMsMjQgKzIwMTcsMjQg
QEAgc2N0cF9wcm9jZXNzX2Nvb2tpZV9leGlzdGluZyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxl
biwgaW50IG9mZnNldCwKIAkJLyogbm90aWZ5IHVwcGVyIGxheWVyICovCiAJCSpub3RpZmljYXRp
b24gPSBTQ1RQX05PVElGWV9BU1NPQ19SRVNUQVJUOwogCQlhdG9taWNfYWRkX2ludCgmc3RjYi0+
YXNvYy5yZWZjbnQsIDEpOwotCQlpZiAoKFNDVFBfR0VUX1NUQVRFKGFzb2MpICE9IFNDVFBfU1RB
VEVfT1BFTikgJiYKLQkJICAgIChTQ1RQX0dFVF9TVEFURShhc29jKSAhPSBTQ1RQX1NUQVRFX1NI
VVRET1dOX1JFQ0VJVkVEKSAmJgotCQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpICE9IFNDVFBf
U1RBVEVfU0hVVERPV05fU0VOVCkpIHsKKwkJaWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSAhPSBT
Q1RQX1NUQVRFX09QRU4pICYmCisJCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9T
VEFURV9TSFVURE9XTl9SRUNFSVZFRCkgJiYKKwkJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSAh
PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpKSB7CiAJCQlTQ1RQX1NUQVRfSU5DUl9HQVVHRTMy
KHNjdHBzX2N1cnJlc3RhYik7CiAJCX0KLQkJaWYgKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFND
VFBfU1RBVEVfT1BFTikgeworCQlpZiAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFU
RV9PUEVOKSB7CiAJCQlTQ1RQX1NUQVRfSU5DUl9HQVVHRTMyKHNjdHBzX3Jlc3RhcnRlc3RhYik7
Ci0JCX0gZWxzZSBpZiAoU0NUUF9HRVRfU1RBVEUoYXNvYykgIT0gU0NUUF9TVEFURV9TSFVURE9X
Tl9TRU5UKSB7CisJCX0gZWxzZSBpZiAoU0NUUF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9TVEFU
RV9TSFVURE9XTl9TRU5UKSB7CiAJCQlTQ1RQX1NUQVRfSU5DUl9HQVVHRTMyKHNjdHBzX2NvbGxp
c2lvbmVzdGFiKTsKIAkJfQogCQlpZiAoYXNvYy0+c3RhdGUgJiBTQ1RQX1NUQVRFX1NIVVRET1dO
X1BFTkRJTkcpIHsKLQkJCVNDVFBfU0VUX1NUQVRFKGFzb2MsIFNDVFBfU1RBVEVfT1BFTik7CisJ
CQlTQ1RQX1NFVF9TVEFURShzdGNiLCBTQ1RQX1NUQVRFX09QRU4pOwogCQkJc2N0cF90aW1lcl9z
dGFydChTQ1RQX1RJTUVSX1RZUEVfU0hVVERPV05HVUFSRCwKLQkJCQkJIHN0Y2ItPnNjdHBfZXAs
IHN0Y2IsIGFzb2MtPnByaW1hcnlfZGVzdGluYXRpb24pOworCQkJICAgICAgICAgICAgICAgICBz
dGNiLT5zY3RwX2VwLCBzdGNiLCBOVUxMKTsKIAotCQl9IGVsc2UgaWYgKCEoYXNvYy0+c3RhdGUg
JiBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpKSB7CisJCX0gZWxzZSBpZiAoU0NUUF9HRVRfU1RB
VEUoc3RjYikgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKSB7CiAJCQkvKiBtb3ZlIHRvIE9Q
RU4gc3RhdGUsIGlmIG5vdCBpbiBTSFVURE9XTl9TRU5UICovCi0JCQlTQ1RQX1NFVF9TVEFURShh
c29jLCBTQ1RQX1NUQVRFX09QRU4pOworCQkJU0NUUF9TRVRfU1RBVEUoc3RjYiwgU0NUUF9TVEFU
RV9PUEVOKTsKIAkJfQogCQlhc29jLT5wcmVfb3Blbl9zdHJlYW1zID0KIAkJCW50b2hzKGluaXRh
Y2tfY3AtPmluaXQubnVtX291dGJvdW5kX3N0cmVhbXMpOwpAQCAtMjA2Miw3ICsyMDU2LDcgQEAg
c2N0cF9wcm9jZXNzX2Nvb2tpZV9leGlzdGluZyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwg
aW50IG9mZnNldCwKIAkJCSAgICBhc29jLT5tYXBwaW5nX2FycmF5X3NpemUpOwogCQl9CiAJCVND
VFBfVENCX1VOTE9DSyhzdGNiKTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChT
Q1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKIAkJc28gPSBTQ1RQX0lOUF9TTyhzdGNiLT5zY3RwX2VwKTsKIAkJU0NU
UF9TT0NLRVRfTE9DSyhzbywgMSk7CiAjZW5kaWYKQEAgLTIwNzMsNyArMjA2Nyw3IEBAIHNjdHBf
cHJvY2Vzc19jb29raWVfZXhpc3Rpbmcoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBv
ZmZzZXQsCiAJCS8qIHNlbmQgdXAgYWxsIHRoZSBkYXRhICovCiAJCVNDVFBfVENCX1NFTkRfTE9D
SyhzdGNiKTsKIAotCQlzY3RwX3JlcG9ydF9hbGxfb3V0Ym91bmQoc3RjYiwgMCwgMSwgU0NUUF9T
T19MT0NLRUQpOworCQlzY3RwX3JlcG9ydF9hbGxfb3V0Ym91bmQoc3RjYiwgMCwgU0NUUF9TT19M
T0NLRUQpOwogCQlmb3IgKGkgPSAwOyBpIDwgc3RjYi0+YXNvYy5zdHJlYW1vdXRjbnQ7IGkrKykg
ewogCQkJc3RjYi0+YXNvYy5zdHJtb3V0W2ldLmNodW5rc19vbl9xdWV1ZXMgPSAwOwogI2lmIGRl
ZmluZWQoU0NUUF9ERVRBSUxFRF9TVFJfU1RBVFMpCkBAIC0yMTA4LDcgKzIxMDIsNyBAQCBzY3Rw
X3Byb2Nlc3NfY29va2llX2V4aXN0aW5nKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQg
b2Zmc2V0LAogCQlTQ1RQX1RDQl9TRU5EX1VOTE9DSyhzdGNiKTsKIAkJU0NUUF9JTlBfV1VOTE9D
SyhzdGNiLT5zY3RwX2VwKTsKIAkJU0NUUF9JTlBfSU5GT19XVU5MT0NLKCk7Ci0jaWYgZGVmaW5l
ZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5l
ZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCVNDVFBfU09DS0VUX1VO
TE9DSyhzbywgMSk7CiAjZW5kaWYKIAkJYXNvYy0+dG90YWxfZmxpZ2h0ID0gMDsKQEAgLTIxNjUs
NyArMjE1OSw3IEBAIHNjdHBfcHJvY2Vzc19jb29raWVfbmV3KHN0cnVjdCBtYnVmICptLCBpbnQg
aXBobGVuLCBpbnQgb2Zmc2V0LAogICAgIHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBz
Y3RwX25ldHMgKipuZXRwLAogICAgIHN0cnVjdCBzb2NrYWRkciAqaW5pdF9zcmMsIGludCAqbm90
aWZpY2F0aW9uLAogICAgIGludCBhdXRoX3NraXBwZWQsIHVpbnQzMl90IGF1dGhfb2Zmc2V0LCB1
aW50MzJfdCBhdXRoX2xlbiwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAgICAgdWludDhfdCBtZmxv
d3R5cGUsIHVpbnQzMl90IG1mbG93aWQsCiAjZW5kaWYKICAgICB1aW50MzJfdCB2cmZfaWQsIHVp
bnQxNl90IHBvcnQpCkBAIC0yMTc4LDggKzIxNzIsOCBAQCBzY3RwX3Byb2Nlc3NfY29va2llX25l
dyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAlpbnQgaW5pdF9vZmZz
ZXQsIGluaXRhY2tfb2Zmc2V0LCBpbml0YWNrX2xpbWl0OwogCWludCByZXR2YWw7CiAJaW50IGVy
cm9yID0gMDsKLQl1aW50OF90IGF1dGhfY2h1bmtfYnVmW1NDVFBfUEFSQU1fQlVGRkVSX1NJWkVd
OwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5H
KQorCXVpbnQ4X3QgYXV0aF9jaHVua19idWZbU0NUUF9DSFVOS19CVUZGRVJfU0laRV07CisjaWYg
ZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJc3RydWN0IHNv
Y2tldCAqc287CiAKIAlzbyA9IFNDVFBfSU5QX1NPKGlucCk7CkBAIC0yMjQzLDE0ICsyMjM3LDE0
IEBAIHNjdHBfcHJvY2Vzc19jb29raWVfbmV3KHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBp
bnQgb2Zmc2V0LAogCSAgICAgICAgICAgICAgICAgICAgICAgbnRvaGwoaW5pdGFja19jcC0+aW5p
dC5pbml0aWF0ZV90YWcpLCB2cmZfaWQsCiAJICAgICAgICAgICAgICAgICAgICAgICBudG9ocyhp
bml0YWNrX2NwLT5pbml0Lm51bV9vdXRib3VuZF9zdHJlYW1zKSwKIAkgICAgICAgICAgICAgICAg
ICAgICAgIHBvcnQsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNp
b24gPj0gNTAwMDAwCi0JICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHRocmVhZCAqKU5V
TEwKLSNlbGlmIGRlZmluZWQoX19XaW5kb3dzX18pCi0JICAgICAgICAgICAgICAgICAgICAgICAo
UEtUSFJFQUQpTlVMTAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCisJICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHRocmVhZCAqKU5VTEws
CisjZWxpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkgICAg
ICAgICAgICAgICAgICAgICAgIChQS1RIUkVBRClOVUxMLAogI2Vsc2UKLQkgICAgICAgICAgICAg
ICAgICAgICAgIChzdHJ1Y3QgcHJvYyAqKU5VTEwKKwkgICAgICAgICAgICAgICAgICAgICAgIChz
dHJ1Y3QgcHJvYyAqKU5VTEwsCiAjZW5kaWYKLQkgICAgICAgICAgICAgICAgICAgICAgICk7CisJ
ICAgICAgICAgICAgICAgICAgICAgICBTQ1RQX0RPTlRfSU5JVElBTElaRV9BVVRIX1BBUkFNUyk7
CiAJaWYgKHN0Y2IgPT0gTlVMTCkgewogCQlzdHJ1Y3QgbWJ1ZiAqb3BfZXJyOwogCkBAIC0yMjYw
LDcgKzIyNTQsNyBAQCBzY3RwX3Byb2Nlc3NfY29va2llX25ldyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50
IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQ
X0NBVVNFX09VVF9PRl9SRVNDLCAiIik7CiAJCXNjdHBfYWJvcnRfYXNzb2NpYXRpb24oaW5wLCAo
c3RydWN0IHNjdHBfdGNiICopTlVMTCwgbSwgaXBobGVuLAogCQkgICAgICAgICAgICAgICAgICAg
ICAgIHNyYywgZHN0LCBzaCwgb3BfZXJyLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJICAgICAg
ICAgICAgICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQsCiAjZW5kaWYKIAkJICAgICAgICAg
ICAgICAgICAgICAgICB2cmZfaWQsIHBvcnQpOwpAQCAtMjI5NSwxMSArMjI4OSwxMSBAQCBzY3Rw
X3Byb2Nlc3NfY29va2llX25ldyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNl
dCwKIAkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQX0NBVVNFX09VVF9PRl9SRVND
LCAiIik7CiAJCXNjdHBfYWJvcnRfYXNzb2NpYXRpb24oaW5wLCAoc3RydWN0IHNjdHBfdGNiICop
TlVMTCwgbSwgaXBobGVuLAogCQkJCSAgICAgICBzcmMsIGRzdCwgc2gsIG9wX2VyciwKLSNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiAJCSAgICAgICAgICAgICAgICAgICAgICAgbWZsb3d0eXBlLCBtZmxv
d2lkLAogI2VuZGlmCiAJCSAgICAgICAgICAgICAgICAgICAgICAgdnJmX2lkLCBwb3J0KTsKLSNp
ZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNp
ZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJYXRvbWlj
X2FkZF9pbnQoJnN0Y2ItPmFzb2MucmVmY250LCAxKTsKIAkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2Ip
OwogCQlTQ1RQX1NPQ0tFVF9MT0NLKHNvLCAxKTsKQEAgLTIzMDgsNyArMjMwMiw3IEBAIHNjdHBf
cHJvY2Vzc19jb29raWVfbmV3KHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0
LAogI2VuZGlmCiAJCSh2b2lkKXNjdHBfZnJlZV9hc3NvYyhpbnAsIHN0Y2IsIFNDVFBfTk9STUFM
X1BST0MsCiAJCQkJICAgICAgU0NUUF9GUk9NX1NDVFBfSU5QVVQgKyBTQ1RQX0xPQ18xOCk7Ci0j
aWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisj
aWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCVNDVFBf
U09DS0VUX1VOTE9DSyhzbywgMSk7CiAjZW5kaWYKIAkJcmV0dXJuIChOVUxMKTsKQEAgLTIzMzEs
NyArMjMyNSw3IEBAIHNjdHBfcHJvY2Vzc19jb29raWVfbmV3KHN0cnVjdCBtYnVmICptLCBpbnQg
aXBobGVuLCBpbnQgb2Zmc2V0LAogCWVsc2UKIAkJcmV0dmFsID0gMDsKIAlpZiAocmV0dmFsIDwg
MCkgewotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNU
SU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
CQlhdG9taWNfYWRkX2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIDEpOwogCQlTQ1RQX1RDQl9VTkxP
Q0soc3RjYik7CiAJCVNDVFBfU09DS0VUX0xPQ0soc28sIDEpOwpAQCAtMjM0MCw3ICsyMzM0LDcg
QEAgc2N0cF9wcm9jZXNzX2Nvb2tpZV9uZXcoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGlu
dCBvZmZzZXQsCiAjZW5kaWYKIAkJKHZvaWQpc2N0cF9mcmVlX2Fzc29jKGlucCwgc3RjYiwgU0NU
UF9OT1JNQUxfUFJPQywKIAkJICAgICAgICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX0lO
UFVUICsgU0NUUF9MT0NfMTkpOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFND
VFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDEpOwogI2VuZGlmCiAJCXJl
dHVybiAoTlVMTCk7CkBAIC0yMzQ5LDcgKzIzNDMsNyBAQCBzY3RwX3Byb2Nlc3NfY29va2llX25l
dyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAlpZiAoc2N0cF9sb2Fk
X2FkZHJlc3Nlc19mcm9tX2luaXQoc3RjYiwgbSwKIAkgICAgaW5pdF9vZmZzZXQgKyBzaXplb2Yo
c3RydWN0IHNjdHBfaW5pdF9jaHVuayksIGluaXRhY2tfb2Zmc2V0LAogCSAgICBzcmMsIGRzdCwg
aW5pdF9zcmMsIHBvcnQpKSB7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NU
UF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAJCWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29jLnJlZmNudCwgMSk7CiAJ
CVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKIAkJU0NUUF9TT0NLRVRfTE9DSyhzbywgMSk7CkBAIC0y
MzU4LDcgKzIzNTIsNyBAQCBzY3RwX3Byb2Nlc3NfY29va2llX25ldyhzdHJ1Y3QgbWJ1ZiAqbSwg
aW50IGlwaGxlbiwgaW50IG9mZnNldCwKICNlbmRpZgogCQkodm9pZClzY3RwX2ZyZWVfYXNzb2Mo
aW5wLCBzdGNiLCBTQ1RQX05PUk1BTF9QUk9DLAogCQkgICAgICAgICAgICAgICAgICAgICAgU0NU
UF9GUk9NX1NDVFBfSU5QVVQgKyBTQ1RQX0xPQ18yMCk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18p
IHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCVNDVFBfU09DS0VUX1VOTE9DSyhzbywgMSk7
CiAjZW5kaWYKIAkJcmV0dXJuIChOVUxMKTsKQEAgLTIzNzMsMTMgKzIzNjcsMTYgQEAgc2N0cF9w
cm9jZXNzX2Nvb2tpZV9uZXcoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQs
CiAJaWYgKGF1dGhfc2tpcHBlZCkgewogCQlzdHJ1Y3Qgc2N0cF9hdXRoX2NodW5rICphdXRoOwog
Ci0JCWF1dGggPSAoc3RydWN0IHNjdHBfYXV0aF9jaHVuayAqKQotCQkgICAgc2N0cF9tX2dldHB0
cihtLCBhdXRoX29mZnNldCwgYXV0aF9sZW4sIGF1dGhfY2h1bmtfYnVmKTsKKwkJaWYgKGF1dGhf
bGVuIDw9IFNDVFBfQ0hVTktfQlVGRkVSX1NJWkUpIHsKKwkJCWF1dGggPSAoc3RydWN0IHNjdHBf
YXV0aF9jaHVuayAqKXNjdHBfbV9nZXRwdHIobSwgYXV0aF9vZmZzZXQsIGF1dGhfbGVuLCBhdXRo
X2NodW5rX2J1Zik7CisJCX0gZWxzZSB7CisJCQlhdXRoID0gTlVMTDsKKwkJfQogCQlpZiAoKGF1
dGggPT0gTlVMTCkgfHwgc2N0cF9oYW5kbGVfYXV0aChzdGNiLCBhdXRoLCBtLCBhdXRoX29mZnNl
dCkpIHsKIAkJCS8qIGF1dGggSE1BQyBmYWlsZWQsIGR1bXAgdGhlIGFzc29jIGFuZCBwYWNrZXQg
Ki8KIAkJCVNDVFBEQkcoU0NUUF9ERUJVR19BVVRIMSwKIAkJCQkiQ09PS0lFLUVDSE86IEFVVEgg
ZmFpbGVkXG4iKTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xP
Q0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKIAkJCWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29jLnJlZmNudCwgMSk7CiAJCQlTQ1RQ
X1RDQl9VTkxPQ0soc3RjYik7CiAJCQlTQ1RQX1NPQ0tFVF9MT0NLKHNvLCAxKTsKQEAgLTIzODgs
NyArMjM4NSw3IEBAIHNjdHBfcHJvY2Vzc19jb29raWVfbmV3KHN0cnVjdCBtYnVmICptLCBpbnQg
aXBobGVuLCBpbnQgb2Zmc2V0LAogI2VuZGlmCiAJCQkodm9pZClzY3RwX2ZyZWVfYXNzb2MoaW5w
LCBzdGNiLCBTQ1RQX05PUk1BTF9QUk9DLAogCQkJICAgICAgICAgICAgICAgICAgICAgIFNDVFBf
RlJPTV9TQ1RQX0lOUFVUICsgU0NUUF9MT0NfMjEpOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8
fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJU0NUUF9TT0NLRVRfVU5MT0NLKHNvLCAxKTsK
ICNlbmRpZgogCQkJcmV0dXJuIChOVUxMKTsKQEAgLTI0NDUsNyArMjQ0Miw3IEBAIHNjdHBfcHJv
Y2Vzc19jb29raWVfbmV3KHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAog
CQlicmVhazsKICNlbmRpZgogCWRlZmF1bHQ6Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRl
ZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29jLnJlZmNu
dCwgMSk7CiAJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKIAkJU0NUUF9TT0NLRVRfTE9DSyhzbywg
MSk7CkBAIC0yNDU0LDcgKzI0NTEsNyBAQCBzY3RwX3Byb2Nlc3NfY29va2llX25ldyhzdHJ1Y3Qg
bWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKICNlbmRpZgogCQkodm9pZClzY3RwX2Zy
ZWVfYXNzb2MoaW5wLCBzdGNiLCBTQ1RQX05PUk1BTF9QUk9DLAogCQkgICAgICAgICAgICAgICAg
ICAgICAgU0NUUF9GUk9NX1NDVFBfSU5QVVQgKyBTQ1RQX0xPQ18yMik7Ci0jaWYgZGVmaW5lZChf
X0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChf
X0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCVNDVFBfU09DS0VUX1VOTE9D
SyhzbywgMSk7CiAjZW5kaWYKIAkJcmV0dXJuIChOVUxMKTsKQEAgLTI0NjIsMTAgKzI0NTksMTAg
QEAgc2N0cF9wcm9jZXNzX2Nvb2tpZV9uZXcoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGlu
dCBvZmZzZXQsCiAKIAkvKiB1cGRhdGUgY3VycmVudCBzdGF0ZSAqLwogCVNDVFBEQkcoU0NUUF9E
RUJVR19JTlBVVDIsICJtb3ZpbmcgdG8gT1BFTiBzdGF0ZVxuIik7Ci0JU0NUUF9TRVRfU1RBVEUo
YXNvYywgU0NUUF9TVEFURV9PUEVOKTsKKwlTQ1RQX1NFVF9TVEFURShzdGNiLCBTQ1RQX1NUQVRF
X09QRU4pOwogCWlmIChhc29jLT5zdGF0ZSAmIFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORykg
ewogCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9TSFVURE9XTkdVQVJELAotCQkJ
CSBzdGNiLT5zY3RwX2VwLCBzdGNiLCBhc29jLT5wcmltYXJ5X2Rlc3RpbmF0aW9uKTsKKwkJICAg
ICAgICAgICAgICAgICBzdGNiLT5zY3RwX2VwLCBzdGNiLCBOVUxMKTsKIAl9CiAJc2N0cF9zdG9w
X2FsbF9jb29raWVfdGltZXJzKHN0Y2IpOwogCVNDVFBfU1RBVF9JTkNSX0NPVU5URVIzMihzY3Rw
c19wYXNzaXZlZXN0YWIpOwpAQCAtMjQ4NSw3ICsyNDgyLDcgQEAgc2N0cF9wcm9jZXNzX2Nvb2tp
ZV9uZXcoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJCSAqIGEgYml0
IG9mIHByb3RlY3Rpb24gaXMgd29ydGggaGF2aW5nLi4KIAkJICovCiAJCXN0Y2ItPnNjdHBfZXAt
PnNjdHBfZmxhZ3MgfD0gU0NUUF9QQ0JfRkxBR1NfQ09OTkVDVEVEOwotI2lmIGRlZmluZWQoX19B
UFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19B
UFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlhdG9taWNfYWRkX2ludCgmc3Rj
Yi0+YXNvYy5yZWZjbnQsIDEpOwogCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CiAJCVNDVFBfU09D
S0VUX0xPQ0soc28sIDEpOwpAQCAtMjQ5Nyw3ICsyNDk0LDcgQEAgc2N0cF9wcm9jZXNzX2Nvb2tp
ZV9uZXcoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJCX0KICNlbmRp
ZgogCQlzb2lzY29ubmVjdGVkKHN0Y2ItPnNjdHBfc29ja2V0KTsKLSNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJU0NUUF9TT0NLRVRfVU5MT0NLKHNv
LCAxKTsKICNlbmRpZgogCX0gZWxzZSBpZiAoKHN0Y2ItPnNjdHBfZXAtPnNjdHBfZmxhZ3MgJiBT
Q1RQX1BDQl9GTEFHU19UQ1BUWVBFKSAmJgpAQCAtMjUyNCw4ICsyNTIxLDcgQEAgc2N0cF9wcm9j
ZXNzX2Nvb2tpZV9uZXcoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJ
CS8qIGNhbGN1bGF0ZSB0aGUgUlRUIGFuZCBzZXQgdGhlIGVuY2FwcyBwb3J0ICovCiAJCW9sZC50
dl9zZWMgPSBjb29raWUtPnRpbWVfZW50ZXJlZC50dl9zZWM7CiAJCW9sZC50dl91c2VjID0gY29v
a2llLT50aW1lX2VudGVyZWQudHZfdXNlYzsKLQkJKCpuZXRwKS0+UlRPID0gc2N0cF9jYWxjdWxh
dGVfcnRvKHN0Y2IsIGFzb2MsICpuZXRwLAotCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJm9sZCwgU0NUUF9SVFRfRlJPTV9OT05fREFUQSk7CisJCXNjdHBfY2FsY3VsYXRlX3J0
byhzdGNiLCBhc29jLCAqbmV0cCwgJm9sZCwgU0NUUF9SVFRfRlJPTV9OT05fREFUQSk7CiAJfQog
CS8qIHJlc3BvbmQgd2l0aCBhIENPT0tJRS1BQ0sgKi8KIAlzY3RwX3NlbmRfY29va2llX2Fjayhz
dGNiKTsKQEAgLTI1NjgsNyArMjU2NCw3IEBAIHNjdHBfaGFuZGxlX2Nvb2tpZV9lY2hvKHN0cnVj
dCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogICAgIHN0cnVjdCBzY3RwX2lucGNi
ICoqaW5wX3AsIHN0cnVjdCBzY3RwX3RjYiAqKnN0Y2IsIHN0cnVjdCBzY3RwX25ldHMgKipuZXRw
LAogICAgIGludCBhdXRoX3NraXBwZWQsIHVpbnQzMl90IGF1dGhfb2Zmc2V0LCB1aW50MzJfdCBh
dXRoX2xlbiwKICAgICBzdHJ1Y3Qgc2N0cF90Y2IgKipsb2NrZWRfdGNiLAotI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKICAgICB1aW50OF90IG1mbG93dHlwZSwgdWludDMyX3QgbWZsb3dpZCwKICNlbmRp
ZgogICAgIHVpbnQzMl90IHZyZl9pZCwgdWludDE2X3QgcG9ydCkKQEAgLTI2MjgsNiArMjYyNCwy
NyBAQCBzY3RwX2hhbmRsZV9jb29raWVfZWNobyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwg
aW50IG9mZnNldCwKIAkJICovCiAJCXJldHVybiAoTlVMTCk7CiAJfQorI2lmIGRlZmluZWQoX19V
c2Vyc3BhY2VfXykKKwkvKgorCSAqIFJlY292ZXIgdGhlIEFGX0NPTk4gYWRkcmVzc2VzIHdpdGhp
biB0aGUgY29va2llLgorCSAqIFRoaXMgbmVlZHMgdG8gYmUgZG9uZSBpbiB0aGUgYnVmZmVyIHBy
b3ZpZGVkIGZvciBsYXRlciBwcm9jZXNzaW5nCisJICogb2YgdGhlIGNvb2tpZSBhbmQgaW4gdGhl
IG1idWYgY2hhaW4gZm9yIEhNQUMgdmFsaWRhdGlvbi4KKwkgKi8KKwlpZiAoKGNvb2tpZS0+YWRk
cl90eXBlID09IFNDVFBfQ09OTl9BRERSRVNTKSAmJiAoc3JjLT5zYV9mYW1pbHkgPT0gQUZfQ09O
TikpIHsKKwkJc3RydWN0IHNvY2thZGRyX2Nvbm4gKnNjb25ucCA9IChzdHJ1Y3Qgc29ja2FkZHJf
Y29ubiAqKXNyYzsKKworCQltZW1jcHkoY29va2llLT5hZGRyZXNzLCAmc2Nvbm5wLT5zY29ubl9h
ZGRyICwgc2l6ZW9mKHZvaWQgKikpOworCQltX2NvcHliYWNrKG0sIGNvb2tpZV9vZmZzZXQgKyBv
ZmZzZXRvZihzdHJ1Y3Qgc2N0cF9zdGF0ZV9jb29raWUsIGFkZHJlc3MpLAorCQkgICAgICAgICAg
IChpbnQpc2l6ZW9mKHZvaWQgKiksIChjYWRkcl90KSZzY29ubnAtPnNjb25uX2FkZHIpOworCX0K
KwlpZiAoKGNvb2tpZS0+bGFkZHJfdHlwZSA9PSBTQ1RQX0NPTk5fQUREUkVTUykgJiYgKGRzdC0+
c2FfZmFtaWx5ID09IEFGX0NPTk4pKSB7CisJCXN0cnVjdCBzb2NrYWRkcl9jb25uICpzY29ubnAg
PSAoc3RydWN0IHNvY2thZGRyX2Nvbm4gKilkc3Q7CisKKwkJbWVtY3B5KGNvb2tpZS0+bGFkZHJl
c3MsICZzY29ubnAtPnNjb25uX2FkZHIgLCBzaXplb2Yodm9pZCAqKSk7CisJCW1fY29weWJhY2so
bSwgY29va2llX29mZnNldCArIG9mZnNldG9mKHN0cnVjdCBzY3RwX3N0YXRlX2Nvb2tpZSwgbGFk
ZHJlc3MpLAorCQkgICAgICAgICAgIChpbnQpc2l6ZW9mKHZvaWQgKiksIChjYWRkcl90KSZzY29u
bnAtPnNjb25uX2FkZHIpOworCX0KKyNlbmRpZgogCS8qCiAJICogc3BsaXQgb2ZmIHRoZSBzaWdu
YXR1cmUgaW50byBpdHMgb3duIG1idWYgKHNpbmNlIGl0IHNob3VsZCBub3QgYmUKIAkgKiBjYWxj
dWxhdGVkIGluIHRoZSBzY3RwX2htYWNfbSgpIGNhbGwpLgpAQCAtMjY3OCw3ICsyNjk1LDcgQEAg
c2N0cF9oYW5kbGVfY29va2llX2VjaG8oc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBv
ZmZzZXQsCiAJCXJldHVybiAoTlVMTCk7CiAJfQogCS8qIGNvbXBhcmUgdGhlIHJlY2VpdmVkIGRp
Z2VzdCB3aXRoIHRoZSBjb21wdXRlZCBkaWdlc3QgKi8KLQlpZiAobWVtY21wKGNhbGNfc2lnLCBz
aWcsIFNDVFBfU0lHTkFUVVJFX1NJWkUpICE9IDApIHsKKwlpZiAodGltaW5nc2FmZV9iY21wKGNh
bGNfc2lnLCBzaWcsIFNDVFBfU0lHTkFUVVJFX1NJWkUpICE9IDApIHsKIAkJLyogdHJ5IHRoZSBv
bGQgY29va2llPyAqLwogCQlpZiAoKGNvb2tpZS0+dGltZV9lbnRlcmVkLnR2X3NlYyA9PSAobG9u
ZyllcC0+dGltZV9vZl9zZWNyZXRfY2hhbmdlKSAmJgogCQkgICAgKGVwLT5jdXJyZW50X3NlY3Jl
dF9udW1iZXIgIT0gZXAtPmxhc3Rfc2VjcmV0X251bWJlcikpIHsKQEAgLTI2ODcsNyArMjcwNCw3
IEBAIHNjdHBfaGFuZGxlX2Nvb2tpZV9lY2hvKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBp
bnQgb2Zmc2V0LAogCQkJICAgICh1aW50OF90ICopZXAtPnNlY3JldF9rZXlbKGludCllcC0+bGFz
dF9zZWNyZXRfbnVtYmVyXSwKIAkJCSAgICBTQ1RQX1NFQ1JFVF9TSVpFLCBtLCBjb29raWVfb2Zm
c2V0LCBjYWxjX3NpZywgMCk7CiAJCQkvKiBjb21wYXJlICovCi0JCQlpZiAobWVtY21wKGNhbGNf
c2lnLCBzaWcsIFNDVFBfU0lHTkFUVVJFX1NJWkUpID09IDApCisJCQlpZiAodGltaW5nc2FmZV9i
Y21wKGNhbGNfc2lnLCBzaWcsIFNDVFBfU0lHTkFUVVJFX1NJWkUpID09IDApCiAJCQkJY29va2ll
X29rID0gMTsKIAkJfQogCX0gZWxzZSB7CkBAIC0yNzIxLDkgKzI3MzgsOSBAQCBzY3RwX2hhbmRs
ZV9jb29raWVfZWNobyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAkg
Ki8KIAkodm9pZClTQ1RQX0dFVFRJTUVfVElNRVZBTCgmbm93KTsKIAkvKiBFeHBpcmUgdGltZSBp
cyBpbiBUaWNrcywgc28gd2UgY29udmVydCB0byBzZWNvbmRzICovCi0JdGltZV9leHBpcmVzLnR2
X3NlYyA9IGNvb2tpZS0+dGltZV9lbnRlcmVkLnR2X3NlYyArIFRJQ0tTX1RPX1NFQyhjb29raWUt
PmNvb2tpZV9saWZlKTsKKwl0aW1lX2V4cGlyZXMudHZfc2VjID0gY29va2llLT50aW1lX2VudGVy
ZWQudHZfc2VjICsgc2N0cF90aWNrc190b19zZWNzKGNvb2tpZS0+Y29va2llX2xpZmUpOwogCXRp
bWVfZXhwaXJlcy50dl91c2VjID0gY29va2llLT50aW1lX2VudGVyZWQudHZfdXNlYzsKLSNpZm5k
ZWYgX19GcmVlQlNEX18KKyNpZiAhKGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pKQogCWlmICh0aW1lcmNtcCgmbm93LCAmdGltZV9leHBpcmVzLCA+KSkKICNl
bHNlCiAJaWYgKHRpbWV2YWxjbXAoJm5vdywgJnRpbWVfZXhwaXJlcywgPikpCkBAIC0yNzQ3LDcg
KzI3NjQsNyBAQCBzY3RwX2hhbmRsZV9jb29raWVfZWNobyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlw
aGxlbiwgaW50IG9mZnNldCwKIAkJY2F1c2UtPmNhdXNlLmNvZGUgPSBodG9ucyhTQ1RQX0NBVVNF
X1NUQUxFX0NPT0tJRSk7CiAJCWNhdXNlLT5jYXVzZS5sZW5ndGggPSBodG9ucygoc2l6ZW9mKHN0
cnVjdCBzY3RwX3BhcmFtaGRyKSArCiAJCSAgICAoc2l6ZW9mKHVpbnQzMl90KSkpKTsKLSNpZm5k
ZWYgX19GcmVlQlNEX18KKyNpZiAhKGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pKQogCQl0aW1lcnN1Yigmbm93LCAmdGltZV9leHBpcmVzLCAmZGlmZik7CiAj
ZWxzZQogCQlkaWZmID0gbm93OwpAQCAtMjc2NSw3ICsyNzgyLDcgQEAgc2N0cF9oYW5kbGVfY29v
a2llX2VjaG8oc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJCX0KIAkJ
Y2F1c2UtPnN0YWxlX3RpbWUgPSBodG9ubChzdGFsZW5lc3MpOwogCQlzY3RwX3NlbmRfb3BlcnJf
dG8oc3JjLCBkc3QsIHNoLCBjb29raWUtPnBlZXJzX3Z0YWcsIG9wX2VyciwKLSNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAJCSAgICAgICAgICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQsIGxfaW5w
LT5maWJudW0sCiAjZW5kaWYKIAkJICAgICAgICAgICAgICAgICAgIHZyZl9pZCwgcG9ydCk7CkBA
IC0yODY4LDcgKzI4ODUsNyBAQCBzY3RwX2hhbmRsZV9jb29raWVfZWNobyhzdHJ1Y3QgbWJ1ZiAq
bSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb29raWUsIGNvb2tpZV9sZW4sICppbnBfcCwKIAkJICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuZXRwLCB0bywgJm5vdGlmaWNhdGlvbiwKIAkJICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhdXRoX3NraXBwZWQsIGF1dGhfb2Zmc2V0LCBhdXRoX2xlbiwKLSNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWZsb3d0
eXBlLCBtZmxvd2lkLAogI2VuZGlmCiAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dnJmX2lkLCBwb3J0KTsKQEAgLTI4NzksNyArMjg5Niw3IEBAIHNjdHBfaGFuZGxlX2Nvb2tpZV9l
Y2hvKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCQkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjLCBkc3QsIHNoLAogCQkJCQkJICAgICBjb29r
aWUsIGNvb2tpZV9sZW4sICppbnBfcCwgKnN0Y2IsIG5ldHAsIHRvLAogCQkJCQkJICAgICAmbm90
aWZpY2F0aW9uLCBhdXRoX3NraXBwZWQsIGF1dGhfb2Zmc2V0LCBhdXRoX2xlbiwKLSNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZmxv
d3R5cGUsIG1mbG93aWQsCiAjZW5kaWYKIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZyZl9pZCwgcG9ydCk7CkBAIC0yODg5LDcgKzI5MDYsNyBAQCBzY3RwX2hhbmRsZV9j
b29raWVfZWNobyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJLyog
c3RpbGwgbm8gVENCLi4uIG11c3QgYmUgYmFkIGNvb2tpZS1lY2hvICovCiAJCXJldHVybiAoTlVM
TCk7CiAJfQotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlpZiAoKm5ldHAgIT0gTlVMTCkgewogCQko
Km5ldHApLT5mbG93dHlwZSA9IG1mbG93dHlwZTsKIAkJKCpuZXRwKS0+Zmxvd2lkID0gbWZsb3dp
ZDsKQEAgLTI5NDQsMzYgKzI5NjEsMjMgQEAgc2N0cF9oYW5kbGVfY29va2llX2VjaG8oc3RydWN0
IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJCQkJcmV0dXJuIChtKTsKIAkJCX0K
IAkJCW9zbyA9ICgqaW5wX3ApLT5zY3RwX3NvY2tldDsKLSNpZiAoZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPCA3MDAwMDApCi0JCQkvKgotCQkJICogV2UgZG8gdGhp
cyB0byBrZWVwIHRoZSBzb2NrZXRzIHNpZGUgaGFwcHkgZHVyaW5nCi0JCQkgKiB0aGUgc29uZXdj
b24gT05MWS4KLQkJCSAqLwotCQkJTkVUX0xPQ0tfR0lBTlQoKTsKLSNlbmRpZgogCQkJYXRvbWlj
X2FkZF9pbnQoJigqc3RjYiktPmFzb2MucmVmY250LCAxKTsKIAkJCVNDVFBfVENCX1VOTE9DSygo
KnN0Y2IpKTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+
PSA4MDEwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogCQkJQ1VSVk5FVF9TRVQob3NvLT5zb192bmV0KTsKICNlbmRpZgotI2lmIGRlZmluZWQo
X19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogCQkJU0NUUF9TT0NLRVRfTE9DSyhvc28sIDEpOwogI2VuZGlmCiAJCQlzbyA9IHNvbmV3
Y29ubihvc28sIDAKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCSAgICAsTlVMTAotI2VuZGlmCi0jaWZk
ZWYgX19QYW5kYV9fCi0JCQkgICAgICxOVUxMICwgKCppbnBfcCktPmRlZl92cmZfaWQKICNlbmRp
ZgogCQkJICAgICk7Ci0jaWYgKGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJz
aW9uIDwgNzAwMDAwKQotCQkJTkVUX1VOTE9DS19HSUFOVCgpOwotI2VuZGlmCi0jaWYgZGVmaW5l
ZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJCQlTQ1RQX1NPQ0tFVF9VTkxPQ0sob3NvLCAxKTsKICNlbmRpZgotI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMTAwMAorI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQlDVVJWTkVUX1JF
U1RPUkUoKTsKICNlbmRpZgogCQkJU0NUUF9UQ0JfTE9DSygoKnN0Y2IpKTsKQEAgLTI5ODEsNyAr
Mjk4NSw3IEBAIHNjdHBfaGFuZGxlX2Nvb2tpZV9lY2hvKHN0cnVjdCBtYnVmICptLCBpbnQgaXBo
bGVuLCBpbnQgb2Zmc2V0LAogCiAJCQlpZiAoc28gPT0gTlVMTCkgewogCQkJCXN0cnVjdCBtYnVm
ICpvcF9lcnI7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NL
X1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAJCQkJc3RydWN0IHNvY2tldCAqcGNiX3NvOwogI2VuZGlmCiAJCQkJLyogVG9vIG1hbnkg
c29ja2V0cyAqLwpAQCAtMjk4OSwxMSArMjk5MywxMSBAQCBzY3RwX2hhbmRsZV9jb29raWVfZWNo
byhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJCQlvcF9lcnIgPSBz
Y3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBfQ0FVU0VfT1VUX09GX1JFU0MsICIiKTsKIAkJCQlzY3Rw
X2Fib3J0X2Fzc29jaWF0aW9uKCppbnBfcCwgTlVMTCwgbSwgaXBobGVuLAogCQkJCQkJICAgICAg
IHNyYywgZHN0LCBzaCwgb3BfZXJyLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQkgICAgICAg
ICAgICAgICAgICAgICAgIG1mbG93dHlwZSwgbWZsb3dpZCwKICNlbmRpZgogCQkJCSAgICAgICAg
ICAgICAgICAgICAgICAgdnJmX2lkLCBwb3J0KTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwg
ZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQlwY2Jfc28gPSBTQ1RQX0lOUF9TTygqaW5wX3Ap
OwogCQkJCWF0b21pY19hZGRfaW50KCYoKnN0Y2IpLT5hc29jLnJlZmNudCwgMSk7CiAJCQkJU0NU
UF9UQ0JfVU5MT0NLKCgqc3RjYikpOwpAQCAtMzAwMyw3ICszMDA3LDcgQEAgc2N0cF9oYW5kbGVf
Y29va2llX2VjaG8oc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAjZW5k
aWYKIAkJCQkodm9pZClzY3RwX2ZyZWVfYXNzb2MoKmlucF9wLCAqc3RjYiwgU0NUUF9OT1JNQUxf
UFJPQywKIAkJCQkgICAgICAgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBfSU5QVVQgKyBT
Q1RQX0xPQ18yMyk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19M
T0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJCQkJU0NUUF9TT0NLRVRfVU5MT0NLKHBjYl9zbywgMSk7CiAjZW5kaWYKIAkJCQly
ZXR1cm4gKE5VTEwpOwpAQCAtMzA2NywxNCArMzA3MSwxNCBAQCBzY3RwX2hhbmRsZV9jb29raWVf
ZWNobyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAkJCSAqIHRoZSBh
Y2NlcHQgc3RhdGUgd2FpdGluZyBmb3IgdGhlIGFjY2VwdCEKIAkJCSAqLwogCQkJaWYgKCpzdGNi
KSB7Ci0JCQkJKCpzdGNiKS0+YXNvYy5zdGF0ZSB8PSBTQ1RQX1NUQVRFX0lOX0FDQ0VQVF9RVUVV
RTsKKwkJCQlTQ1RQX0FERF9TVUJTVEFURSgqc3RjYiwgU0NUUF9TVEFURV9JTl9BQ0NFUFRfUVVF
VUUpOwogCQkJfQogCQkJc2N0cF9tb3ZlX3BjYl9hbmRfYXNzb2MoKmlucF9wLCBpbnAsICpzdGNi
KTsKIAogCQkJYXRvbWljX2FkZF9pbnQoJigqc3RjYiktPmFzb2MucmVmY250LCAxKTsKIAkJCVND
VFBfVENCX1VOTE9DSygoKnN0Y2IpKTsKIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCXNjdHBf
cHVsbF9vZmZfY29udHJvbF90b19uZXdfaW5wKCgqaW5wX3ApLCBpbnAsICpzdGNiLAogCQkJICAg
IDApOwogI2Vsc2UKQEAgLTMxMDYsMTMgKzMxMTAsMTMgQEAgc2N0cF9oYW5kbGVfY29va2llX2Vj
aG8oc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJCQl9CiAKIAkJCS8q
IFB1bGwgaXQgZnJvbSB0aGUgaW5jb21wbGV0ZSBxdWV1ZSBhbmQgd2FrZSB0aGUgZ3V5ICovCi0j
aWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisj
aWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQlhdG9t
aWNfYWRkX2ludCgmKCpzdGNiKS0+YXNvYy5yZWZjbnQsIDEpOwogCQkJU0NUUF9UQ0JfVU5MT0NL
KCgqc3RjYikpOwogCQkJU0NUUF9TT0NLRVRfTE9DSyhzbywgMSk7CiAjZW5kaWYKIAkJCXNvaXNj
b25uZWN0ZWQoc28pOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09f
TE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCQkJU0NUUF9UQ0JfTE9DSygoKnN0Y2IpKTsKIAkJCWF0b21pY19zdWJ0cmFjdF9p
bnQoJigqc3RjYiktPmFzb2MucmVmY250LCAxKTsKIAkJCVNDVFBfU09DS0VUX1VOTE9DSyhzbywg
MSk7CkBAIC0zMTM2LDYgKzMxNDAsNyBAQCBzY3RwX2hhbmRsZV9jb29raWVfYWNrKHN0cnVjdCBz
Y3RwX2Nvb2tpZV9hY2tfY2h1bmsgKmNwIFNDVFBfVU5VU0VELAogewogCS8qIGNwIG11c3Qgbm90
IGJlIHVzZWQsIG90aGVycyBjYWxsIHRoaXMgd2l0aG91dCBhIGMtYWNrIDotKSAqLwogCXN0cnVj
dCBzY3RwX2Fzc29jaWF0aW9uICphc29jOworCXN0cnVjdCBzY3RwX3RtaXRfY2h1bmsgKmNoazsK
IAogCVNDVFBEQkcoU0NUUF9ERUJVR19JTlBVVDIsCiAJCSJzY3RwX2hhbmRsZV9jb29raWVfYWNr
OiBoYW5kbGluZyBDT09LSUUtQUNLXG4iKTsKQEAgLTMxNTQsMzQgKzMxNTksMzMgQEAgc2N0cF9o
YW5kbGVfY29va2llX2FjayhzdHJ1Y3Qgc2N0cF9jb29raWVfYWNrX2NodW5rICpjcCBTQ1RQX1VO
VVNFRCwKIAlhc29jLT5vdmVyYWxsX2Vycm9yX2NvdW50ID0gMDsKIAlzY3RwX3N0b3BfYWxsX2Nv
b2tpZV90aW1lcnMoc3RjYik7CiAJLyogcHJvY2VzcyBhY2NvcmRpbmcgdG8gYXNzb2NpYXRpb24g
c3RhdGUgKi8KLQlpZiAoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9DT09LSUVf
RUNIT0VEKSB7CisJaWYgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfQ09PS0lF
X0VDSE9FRCkgewogCQkvKiBzdGF0ZSBjaGFuZ2Ugb25seSBuZWVkZWQgd2hlbiBJIGFtIGluIHJp
Z2h0IHN0YXRlICovCiAJCVNDVFBEQkcoU0NUUF9ERUJVR19JTlBVVDIsICJtb3ZpbmcgdG8gT1BF
TiBzdGF0ZVxuIik7Ci0JCVNDVFBfU0VUX1NUQVRFKGFzb2MsIFNDVFBfU1RBVEVfT1BFTik7CisJ
CVNDVFBfU0VUX1NUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfT1BFTik7CiAJCXNjdHBfc3RhcnRfbmV0
X3RpbWVycyhzdGNiKTsKIAkJaWYgKGFzb2MtPnN0YXRlICYgU0NUUF9TVEFURV9TSFVURE9XTl9Q
RU5ESU5HKSB7CiAJCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9TSFVURE9XTkdV
QVJELAotCQkJCQkgc3RjYi0+c2N0cF9lcCwgc3RjYiwgYXNvYy0+cHJpbWFyeV9kZXN0aW5hdGlv
bik7CisJCQkgICAgICAgICAgICAgICAgIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIE5VTEwpOwogCiAJ
CX0KIAkJLyogdXBkYXRlIFJUTyAqLwogCQlTQ1RQX1NUQVRfSU5DUl9DT1VOVEVSMzIoc2N0cHNf
YWN0aXZlZXN0YWIpOwogCQlTQ1RQX1NUQVRfSU5DUl9HQVVHRTMyKHNjdHBzX2N1cnJlc3RhYik7
CiAJCWlmIChhc29jLT5vdmVyYWxsX2Vycm9yX2NvdW50ID09IDApIHsKLQkJCW5ldC0+UlRPID0g
c2N0cF9jYWxjdWxhdGVfcnRvKHN0Y2IsIGFzb2MsIG5ldCwKLQkJCSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZhc29jLT50aW1lX2VudGVyZWQsCi0JCQkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTQ1RQX1JUVF9GUk9NX05PTl9EQVRBKTsKKwkJCXNjdHBfY2FsY3VsYXRlX3J0
byhzdGNiLCBhc29jLCBuZXQsICZhc29jLT50aW1lX2VudGVyZWQsCisJCQkgICAgICAgICAgICAg
ICAgICAgU0NUUF9SVFRfRlJPTV9OT05fREFUQSk7CiAJCX0KIAkJKHZvaWQpU0NUUF9HRVRUSU1F
X1RJTUVWQUwoJmFzb2MtPnRpbWVfZW50ZXJlZCk7CiAJCXNjdHBfdWxwX25vdGlmeShTQ1RQX05P
VElGWV9BU1NPQ19VUCwgc3RjYiwgMCwgTlVMTCwgU0NUUF9TT19OT1RfTE9DS0VEKTsKIAkJaWYg
KChzdGNiLT5zY3RwX2VwLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwK
IAkJICAgIChzdGNiLT5zY3RwX2VwLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQ
UE9PTCkpIHsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tf
VEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKIAkJCXN0cnVjdCBzb2NrZXQgKnNvOwogCiAjZW5kaWYKIAkJCXN0Y2ItPnNjdHBfZXAtPnNj
dHBfZmxhZ3MgfD0gU0NUUF9QQ0JfRkxBR1NfQ09OTkVDVEVEOwotI2lmIGRlZmluZWQoX19BUFBM
RV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBM
RV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJc28gPSBTQ1RQX0lOUF9TTyhzdGNi
LT5zY3RwX2VwKTsKIAkJCWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29jLnJlZmNudCwgMSk7CiAJ
CQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CkBAIC0zMTkyLDcgKzMxOTYsNyBAQCBzY3RwX2hhbmRs
ZV9jb29raWVfYWNrKHN0cnVjdCBzY3RwX2Nvb2tpZV9hY2tfY2h1bmsgKmNwIFNDVFBfVU5VU0VE
LAogCQkJaWYgKChzdGNiLT5hc29jLnN0YXRlICYgU0NUUF9TVEFURV9DTE9TRURfU09DS0VUKSA9
PSAwKSB7CiAJCQkJc29pc2Nvbm5lY3RlZChzdGNiLT5zY3RwX3NvY2tldCk7CiAJCQl9Ci0jaWYg
ZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYg
ZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQlTQ1RQX1NP
Q0tFVF9VTkxPQ0soc28sIDEpOwogI2VuZGlmCiAJCX0KQEAgLTMyMzksMTEgKzMyNDMsMTMgQEAg
c2N0cF9oYW5kbGVfY29va2llX2FjayhzdHJ1Y3Qgc2N0cF9jb29raWVfYWNrX2NodW5rICpjcCBT
Q1RQX1VOVVNFRCwKIGNsb3NlZF9zb2NrZXQ6CiAJLyogVG9zcyB0aGUgY29va2llIGlmIEkgY2Fu
ICovCiAJc2N0cF90b3NzX29sZF9jb29raWVzKHN0Y2IsIGFzb2MpOwotCWlmICghVEFJTFFfRU1Q
VFkoJmFzb2MtPnNlbnRfcXVldWUpKSB7Ci0JCS8qIFJlc3RhcnQgdGhlIHRpbWVyIGlmIHdlIGhh
dmUgcGVuZGluZyBkYXRhICovCi0JCXN0cnVjdCBzY3RwX3RtaXRfY2h1bmsgKmNoazsKLQotCQlj
aGsgPSBUQUlMUV9GSVJTVCgmYXNvYy0+c2VudF9xdWV1ZSk7CisJLyogUmVzdGFydCB0aGUgdGlt
ZXIgaWYgd2UgaGF2ZSBwZW5kaW5nIGRhdGEgKi8KKwlUQUlMUV9GT1JFQUNIKGNoaywgJmFzb2Mt
PnNlbnRfcXVldWUsIHNjdHBfbmV4dCkgeworCQlpZiAoY2hrLT53aG9UbyAhPSBOVUxMKSB7CisJ
CQlicmVhazsKKwkJfQorCX0KKwlpZiAoY2hrICE9IE5VTEwpIHsKIAkJc2N0cF90aW1lcl9zdGFy
dChTQ1RQX1RJTUVSX1RZUEVfU0VORCwgc3RjYi0+c2N0cF9lcCwgc3RjYiwgY2hrLT53aG9Ubyk7
CiAJfQogfQpAQCAtMzQxMSw4ICszNDE3LDcgQEAgc3RhdGljIHZvaWQKIHNjdHBfaGFuZGxlX3No
dXRkb3duX2NvbXBsZXRlKHN0cnVjdCBzY3RwX3NodXRkb3duX2NvbXBsZXRlX2NodW5rICpjcCBT
Q1RQX1VOVVNFRCwKICAgICBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX25ldHMg
Km5ldCkKIHsKLQlzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYzsKLSNpZiBkZWZpbmVkKF9f
QVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9f
QVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzdHJ1Y3Qgc29ja2V0ICpzbzsK
ICNlbmRpZgogCkBAIC0zNDIxLDkgKzM0MjYsOCBAQCBzY3RwX2hhbmRsZV9zaHV0ZG93bl9jb21w
bGV0ZShzdHJ1Y3Qgc2N0cF9zaHV0ZG93bl9jb21wbGV0ZV9jaHVuayAqY3AgU0NUUF9VTlVTRQog
CWlmIChzdGNiID09IE5VTEwpCiAJCXJldHVybjsKIAotCWFzb2MgPSAmc3RjYi0+YXNvYzsKIAkv
KiBwcm9jZXNzIGFjY29yZGluZyB0byBhc3NvY2lhdGlvbiBzdGF0ZSAqLwotCWlmIChTQ1RQX0dF
VF9TVEFURShhc29jKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX0FDS19TRU5UKSB7CisJaWYgKFND
VFBfR0VUX1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQpIHsKIAkJ
LyogdW5leHBlY3RlZCBTSFVURE9XTi1DT01QTEVURS4uLiBzbyBpZ25vcmUuLi4gKi8KIAkJU0NU
UERCRyhTQ1RQX0RFQlVHX0lOUFVUMiwKIAkJCSJzY3RwX2hhbmRsZV9zaHV0ZG93bl9jb21wbGV0
ZTogbm90IGluIFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQgLS0tIGlnbm9yZVxuIik7CkBA
IC0zNDM1LDggKzM0MzksOCBAQCBzY3RwX2hhbmRsZV9zaHV0ZG93bl9jb21wbGV0ZShzdHJ1Y3Qg
c2N0cF9zaHV0ZG93bl9jb21wbGV0ZV9jaHVuayAqY3AgU0NUUF9VTlVTRQogCQlzY3RwX3VscF9u
b3RpZnkoU0NUUF9OT1RJRllfQVNTT0NfRE9XTiwgc3RjYiwgMCwgTlVMTCwgU0NUUF9TT19OT1Rf
TE9DS0VEKTsKIAl9CiAjaWZkZWYgSU5WQVJJQU5UUwotCWlmICghVEFJTFFfRU1QVFkoJmFzb2Mt
PnNlbmRfcXVldWUpIHx8Ci0JICAgICFUQUlMUV9FTVBUWSgmYXNvYy0+c2VudF9xdWV1ZSkgfHwK
KwlpZiAoIVRBSUxRX0VNUFRZKCZzdGNiLT5hc29jLnNlbmRfcXVldWUpIHx8CisJICAgICFUQUlM
UV9FTVBUWSgmc3RjYi0+YXNvYy5zZW50X3F1ZXVlKSB8fAogCSAgICBzY3RwX2lzX3RoZXJlX3Vu
c2VudF9kYXRhKHN0Y2IsIFNDVFBfU09fTk9UX0xPQ0tFRCkpIHsKIAkJcGFuaWMoIlF1ZXVlcyBh
cmUgbm90IGVtcHR5IHdoZW4gaGFuZGxpbmcgU0hVVERPV04tQ09NUExFVEUiKTsKIAl9CkBAIC0z
NDQ4LDcgKzM0NTIsNyBAQCBzY3RwX2hhbmRsZV9zaHV0ZG93bl9jb21wbGV0ZShzdHJ1Y3Qgc2N0
cF9zaHV0ZG93bl9jb21wbGV0ZV9jaHVuayAqY3AgU0NUUF9VTlVTRQogCS8qIGZyZWUgdGhlIFRD
QiAqLwogCVNDVFBEQkcoU0NUUF9ERUJVR19JTlBVVDIsCiAJCSJzY3RwX2hhbmRsZV9zaHV0ZG93
bl9jb21wbGV0ZTogY2FsbHMgZnJlZS1hc29jXG4iKTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykg
fHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzbyA9IFNDVFBfSU5QX1NPKHN0Y2ItPnNjdHBf
ZXApOwogCWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29jLnJlZmNudCwgMSk7CiAJU0NUUF9UQ0Jf
VU5MT0NLKHN0Y2IpOwpAQCAtMzQ1OCw3ICszNDYyLDcgQEAgc2N0cF9oYW5kbGVfc2h1dGRvd25f
Y29tcGxldGUoc3RydWN0IHNjdHBfc2h1dGRvd25fY29tcGxldGVfY2h1bmsgKmNwIFNDVFBfVU5V
U0UKICNlbmRpZgogCSh2b2lkKXNjdHBfZnJlZV9hc3NvYyhzdGNiLT5zY3RwX2VwLCBzdGNiLCBT
Q1RQX05PUk1BTF9QUk9DLAogCSAgICAgICAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUF9J
TlBVVCArIFNDVFBfTE9DXzI1KTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChT
Q1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKIAlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDEpOwogI2VuZGlmCiAJcmV0
dXJuOwpAQCAtMzQ3MCw3ICszNDc0LDggQEAgcHJvY2Vzc19jaHVua19kcm9wKHN0cnVjdCBzY3Rw
X3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfY2h1bmtfZGVzYyAqZGVzYywKIHsKIAlzd2l0Y2ggKGRl
c2MtPmNodW5rX3R5cGUpIHsKIAljYXNlIFNDVFBfREFUQToKLQkJLyogZmluZCB0aGUgdHNuIHRv
IHJlc2VuZCAocG9zc2libHkgKi8KKwljYXNlIFNDVFBfSURBVEE6CisJCS8qIGZpbmQgdGhlIHRz
biB0byByZXNlbmQgKHBvc3NpYmx5KSAqLwogCXsKIAkJdWludDMyX3QgdHNuOwogCQlzdHJ1Y3Qg
c2N0cF90bWl0X2NodW5rICp0cDE7CkBAIC0zNTA0LDggKzM1MDksNiBAQCBwcm9jZXNzX2NodW5r
X2Ryb3Aoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9jaHVua19kZXNjICpkZXNj
LAogCQkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfcGRycHRzbm5mKTsKIAkJfQogCQlpZiAoKHRwMSkg
JiYgKHRwMS0+c2VudCA8IFNDVFBfREFUQUdSQU1fQUNLRUQpKSB7Ci0JCQl1aW50OF90ICpkZHA7
Ci0KIAkJCWlmICgoKGZsZyAmIFNDVFBfQkFEQ1JDKSA9PSAwKSAmJgogCQkJICAgICgoZmxnICYg
U0NUUF9GUk9NX01JRERMRV9CT1gpID09IDApKSB7CiAJCQkJcmV0dXJuICgwKTsKQEAgLTM1MjAs
MjAgKzM1MjMsMTggQEAgcHJvY2Vzc19jaHVua19kcm9wKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwg
c3RydWN0IHNjdHBfY2h1bmtfZGVzYyAqZGVzYywKIAkJCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19w
ZHJwZGl6cncpOwogCQkJCXJldHVybiAoMCk7CiAJCQl9Ci0JCQlkZHAgPSAodWludDhfdCAqKSAo
bXRvZCh0cDEtPmRhdGEsIGNhZGRyX3QpICsKLQkJCQkJICAgc2l6ZW9mKHN0cnVjdCBzY3RwX2Rh
dGFfY2h1bmspKTsKLQkJCXsKLQkJCQl1bnNpZ25lZCBpbnQgaWlpOwotCi0JCQkJZm9yIChpaWkg
PSAwOyBpaWkgPCBzaXplb2YoZGVzYy0+ZGF0YV9ieXRlcyk7Ci0JCQkJICAgICBpaWkrKykgewot
CQkJCQlpZiAoZGRwW2lpaV0gIT0gZGVzYy0+ZGF0YV9ieXRlc1tpaWldKSB7Ci0JCQkJCQlTQ1RQ
X1NUQVRfSU5DUihzY3Rwc19wZHJwYmFkZCk7Ci0JCQkJCQlyZXR1cm4gKC0xKTsKLQkJCQkJfQot
CQkJCX0KKwkJCWlmICgodWludDMyX3QpU0NUUF9CVUZfTEVOKHRwMS0+ZGF0YSkgPAorCQkJICAg
IFNDVFBfREFUQV9DSFVOS19PVkVSSEVBRChzdGNiKSArIFNDVFBfTlVNX0RCX1RPX1ZFUklGWSkg
eworCQkJCS8qIFBheWxvYWQgbm90IG1hdGNoaW5nLiAqLworCQkJCVNDVFBfU1RBVF9JTkNSKHNj
dHBzX3BkcnBiYWRkKTsKKwkJCQlyZXR1cm4gKC0xKTsKKwkJCX0KKwkJCWlmIChtZW1jbXAobXRv
ZCh0cDEtPmRhdGEsIGNhZGRyX3QpICsgU0NUUF9EQVRBX0NIVU5LX09WRVJIRUFEKHN0Y2IpLAor
CQkJICAgICAgICAgICBkZXNjLT5kYXRhX2J5dGVzLCBTQ1RQX05VTV9EQl9UT19WRVJJRlkpICE9
IDApIHsKKwkJCQkvKiBQYXlsb2FkIG5vdCBtYXRjaGluZy4gKi8KKwkJCQlTQ1RQX1NUQVRfSU5D
UihzY3Rwc19wZHJwYmFkZCk7CisJCQkJcmV0dXJuICgtMSk7CiAJCQl9Ci0KIAkJCWlmICh0cDEt
PmRvX3J0dCkgewogCQkJCS8qCiAJCQkJICogdGhpcyBndXkgaGFkIGEgUlRPIGNhbGN1bGF0aW9u
CkBAIC0zODM2LDcgKzM4MzcsNyBAQCBzY3RwX2NsZWFuX3VwX3N0cmVhbV9yZXNldChzdHJ1Y3Qg
c2N0cF90Y2IgKnN0Y2IpCiAJfQogCWFzb2MtPnN0cl9yZXNldCA9IE5VTEw7CiAJc2N0cF90aW1l
cl9zdG9wKFNDVFBfVElNRVJfVFlQRV9TVFJSRVNFVCwgc3RjYi0+c2N0cF9lcCwgc3RjYiwKLQkg
ICAgICAgICAgICAgICAgY2hrLT53aG9UbywgU0NUUF9GUk9NX1NDVFBfSU5QVVQgKyBTQ1RQX0xP
Q18yOCk7CisJICAgICAgICAgICAgICAgIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX0lOUFVUICsgU0NU
UF9MT0NfMjgpOwogCVRBSUxRX1JFTU9WRSgmYXNvYy0+Y29udHJvbF9zZW5kX3F1ZXVlLCBjaGss
IHNjdHBfbmV4dCk7CiAJYXNvYy0+Y3RybF9xdWV1ZV9jbnQtLTsKIAlpZiAoY2hrLT5kYXRhKSB7
CkBAIC00MzY4LDExICs0MzY5LDkgQEAgc2N0cF9oYW5kbGVfc3RyX3Jlc2V0X2FkZF9vdXRfc3Ry
bShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX3RtaXRfY2h1bmsKIAl9CiB9CiAK
LSNpZiAhZGVmaW5lZChfX1BhbmRhX18pCiAjaWZkZWYgX19HTlVDX18KIF9fYXR0cmlidXRlX18g
KChub2lubGluZSkpCiAjZW5kaWYKLSNlbmRpZgogc3RhdGljIGludAogc2N0cF9oYW5kbGVfc3Ry
ZWFtX3Jlc2V0KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IG1idWYgKm0sIGludCBvZmZz
ZXQsCiAJCQkgc3RydWN0IHNjdHBfY2h1bmtoZHIgKmNoX3JlcSkKQEAgLTQ1NTQsMTA0ICs0NTUz
LDEyMCBAQCBzdGF0aWMgdm9pZAogc2N0cF9oYW5kbGVfcGFja2V0X2Ryb3BwZWQoc3RydWN0IHNj
dHBfcGt0ZHJvcF9jaHVuayAqY3AsCiAgICAgc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qg
c2N0cF9uZXRzICpuZXQsIHVpbnQzMl90IGxpbWl0KQogeworCXN0cnVjdCBzY3RwX2NodW5rX2Rl
c2MgZGVzYzsKKwlzdHJ1Y3Qgc2N0cF9jaHVua2hkciAqY2hrX2hkcjsKKwlzdHJ1Y3Qgc2N0cF9k
YXRhX2NodW5rICpkYXRhX2NodW5rOworCXN0cnVjdCBzY3RwX2lkYXRhX2NodW5rICppZGF0YV9j
aHVuazsKIAl1aW50MzJfdCBib3R0bGVfYncsIG9uX3F1ZXVlOworCXVpbnQzMl90IG9mZnNldCwg
Y2hrX2xlbjsKIAl1aW50MTZfdCB0cnVuY19sZW47Ci0JdW5zaWduZWQgaW50IGNobGVuOwotCXVu
c2lnbmVkIGludCBhdDsKLQlzdHJ1Y3Qgc2N0cF9jaHVua19kZXNjIGRlc2M7Ci0Jc3RydWN0IHNj
dHBfY2h1bmtoZHIgKmNoOwotCi0JY2hsZW4gPSBudG9ocyhjcC0+Y2guY2h1bmtfbGVuZ3RoKTsK
LQljaGxlbiAtPSBzaXplb2Yoc3RydWN0IHNjdHBfcGt0ZHJvcF9jaHVuayk7Ci0JLyogWFhYIHBv
c3NpYmxlIGNobGVuIHVuZGVyZmxvdyAqLwotCWlmIChjaGxlbiA9PSAwKSB7Ci0JCWNoID0gTlVM
TDsKLQkJaWYgKGNwLT5jaC5jaHVua19mbGFncyAmIFNDVFBfRlJPTV9NSURETEVfQk9YKQotCQkJ
U0NUUF9TVEFUX0lOQ1Ioc2N0cHNfcGRycGJ3cnB0KTsKKwl1aW50MTZfdCBwa3RkcnBfbGVuOwor
CXVpbnQ4X3QgcGt0ZHJwX2ZsYWdzOworCisJS0FTU0VSVChzaXplb2Yoc3RydWN0IHNjdHBfcGt0
ZHJvcF9jaHVuaykgPD0gbGltaXQsCisJICAgICAgICAoIlBLVERST1AgY2h1bmsgdG9vIHNtYWxs
IikpOworCXBrdGRycF9mbGFncyA9IGNwLT5jaC5jaHVua19mbGFnczsKKwlwa3RkcnBfbGVuID0g
bnRvaHMoY3AtPmNoLmNodW5rX2xlbmd0aCk7CisJS0FTU0VSVChsaW1pdCA8PSBwa3RkcnBfbGVu
LCAoIkluY29uc2lzdGVudCBsaW1pdCIpKTsKKwlpZiAocGt0ZHJwX2ZsYWdzICYgU0NUUF9QQUNL
RVRfVFJVTkNBVEVEKSB7CisJCXRydW5jX2xlbiA9IG50b2hzKGNwLT50cnVuY19sZW4pOworCQlp
ZiAodHJ1bmNfbGVuIDw9IHBrdGRycF9sZW4gLSBzaXplb2Yoc3RydWN0IHNjdHBfcGt0ZHJvcF9j
aHVuaykpIHsKKwkJCS8qIFRoZSBwZWVyIHBsYXlzIGdhbWVzIHdpdGggdXMuICovCisJCQlyZXR1
cm47CisJCX0KIAl9IGVsc2UgewotCQljaCA9IChzdHJ1Y3Qgc2N0cF9jaHVua2hkciAqKShjcC0+
ZGF0YSArIHNpemVvZihzdHJ1Y3Qgc2N0cGhkcikpOwotCQljaGxlbiAtPSBzaXplb2Yoc3RydWN0
IHNjdHBoZHIpOwotCQkvKiBYWFggcG9zc2libGUgY2hsZW4gdW5kZXJmbG93ICovCi0JCW1lbXNl
dCgmZGVzYywgMCwgc2l6ZW9mKGRlc2MpKTsKKwkJdHJ1bmNfbGVuID0gMDsKIAl9Ci0JdHJ1bmNf
bGVuID0gKHVpbnQxNl90KSBudG9ocyhjcC0+dHJ1bmNfbGVuKTsKLQlpZiAodHJ1bmNfbGVuID4g
bGltaXQpIHsKLQkJdHJ1bmNfbGVuID0gbGltaXQ7CisJbGltaXQgLT0gc2l6ZW9mKHN0cnVjdCBz
Y3RwX3BrdGRyb3BfY2h1bmspOworCW9mZnNldCA9IDA7CisJaWYgKG9mZnNldCA9PSBsaW1pdCkg
eworCQlpZiAocGt0ZHJwX2ZsYWdzICYgU0NUUF9GUk9NX01JRERMRV9CT1gpIHsKKwkJCVNDVFBf
U1RBVF9JTkNSKHNjdHBzX3BkcnBid3JwdCk7CisJCX0KKwl9IGVsc2UgaWYgKG9mZnNldCArIHNp
emVvZihzdHJ1Y3Qgc2N0cGhkcikgPiBsaW1pdCkgeworCQkvKiBPbmx5IGEgcGFydGlhbCBTQ1RQ
IGNvbW1vbiBoZWFkZXIuICovCisJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3BkcnBjcnVwdCk7CisJ
CW9mZnNldCA9IGxpbWl0OworCX0gZWxzZSB7CisJCS8qIFhYWDogQ2hlY2sgZW1iZWRkZWQgU0NU
UCBjb21tb24gaGVhZGVyLiAqLworCQlvZmZzZXQgKz0gc2l6ZW9mKHN0cnVjdCBzY3RwaGRyKTsK
IAl9Ci0KLQkvKiBub3cgdGhlIGNodW5rcyB0aGVtc2VsdmVzICovCi0Jd2hpbGUgKChjaCAhPSBO
VUxMKSAmJiAoY2hsZW4gPj0gc2l6ZW9mKHN0cnVjdCBzY3RwX2NodW5raGRyKSkpIHsKLQkJZGVz
Yy5jaHVua190eXBlID0gY2gtPmNodW5rX3R5cGU7Ci0JCS8qIGdldCBhbW91bnQgd2UgbmVlZCB0
byBtb3ZlICovCi0JCWF0ID0gbnRvaHMoY2gtPmNodW5rX2xlbmd0aCk7Ci0JCWlmIChhdCA8IHNp
emVvZihzdHJ1Y3Qgc2N0cF9jaHVua2hkcikpIHsKLQkJCS8qIGNvcnJ1cHQgY2h1bmssIG1heWJl
IGF0IHRoZSBlbmQ/ICovCisJLyogTm93IHBhcnNlIHRocm91Z2ggdGhlIGNodW5rcyB0aGVtc2Vs
dmVzLiAqLworCXdoaWxlIChvZmZzZXQgPCBsaW1pdCkgeworCQlpZiAob2Zmc2V0ICsgc2l6ZW9m
KHN0cnVjdCBzY3RwX2NodW5raGRyKSA+IGxpbWl0KSB7CiAJCQlTQ1RQX1NUQVRfSU5DUihzY3Rw
c19wZHJwY3J1cHQpOwogCQkJYnJlYWs7CiAJCX0KLQkJaWYgKHRydW5jX2xlbiA9PSAwKSB7Ci0J
CQkvKiB3ZSBhcmUgc3VwcG9zZWQgdG8gaGF2ZSBhbGwgb2YgaXQgKi8KLQkJCWlmIChhdCA+IGNo
bGVuKSB7Ci0JCQkJLyogY29ycnVwdCBza2lwIGl0ICovCi0JCQkJU0NUUF9TVEFUX0lOQ1Ioc2N0
cHNfcGRycGNydXB0KTsKKwkJY2hrX2hkciA9IChzdHJ1Y3Qgc2N0cF9jaHVua2hkciAqKShjcC0+
ZGF0YSArIG9mZnNldCk7CisJCWRlc2MuY2h1bmtfdHlwZSA9IGNoa19oZHItPmNodW5rX3R5cGU7
CisJCS8qIGdldCBhbW91bnQgd2UgbmVlZCB0byBtb3ZlICovCisJCWNoa19sZW4gPSAodWludDMy
X3QpbnRvaHMoY2hrX2hkci0+Y2h1bmtfbGVuZ3RoKTsKKwkJaWYgKGNoa19sZW4gPCBzaXplb2Yo
c3RydWN0IHNjdHBfY2h1bmtoZHIpKSB7CisJCQkvKiBTb21lb25lIGlzIGx5aW5nLi4uICovCisJ
CQlicmVhazsKKwkJfQorCQlpZiAoZGVzYy5jaHVua190eXBlID09IFNDVFBfREFUQSkgeworCQkJ
aWYgKHN0Y2ItPmFzb2MuaWRhdGFfc3VwcG9ydGVkKSB7CisJCQkJLyogU29tZSBpcyBwbGF5aW5n
IGdhbWVzIHdpdGggdXMuICovCiAJCQkJYnJlYWs7CiAJCQl9Ci0JCX0gZWxzZSB7Ci0JCQkvKiBp
cyB0aGVyZSBlbm91Z2ggb2YgaXQgbGVmdCA/ICovCi0JCQlpZiAoZGVzYy5jaHVua190eXBlID09
IFNDVFBfREFUQSkgewotCQkJCWlmIChjaGxlbiA8IChzaXplb2Yoc3RydWN0IHNjdHBfZGF0YV9j
aHVuaykgKwotCQkJCSAgICBzaXplb2YoZGVzYy5kYXRhX2J5dGVzKSkpIHsKLQkJCQkJYnJlYWs7
Ci0JCQkJfQotCQkJfSBlbHNlIHsKLQkJCQlpZiAoY2hsZW4gPCBzaXplb2Yoc3RydWN0IHNjdHBf
Y2h1bmtoZHIpKSB7Ci0JCQkJCWJyZWFrOwotCQkJCX0KKwkJCWlmIChjaGtfbGVuIDw9IHNpemVv
ZihzdHJ1Y3Qgc2N0cF9kYXRhX2NodW5rKSkgeworCQkJCS8qIFNvbWUgaXMgcGxheWluZyBnYW1l
cyB3aXRoIHVzLiAqLworCQkJCWJyZWFrOwogCQkJfQotCQl9Ci0JCWlmIChkZXNjLmNodW5rX3R5
cGUgPT0gU0NUUF9EQVRBKSB7Ci0JCQkvKiBjYW4gd2UgZ2V0IG91dCB0aGUgdHNuPyAqLwotCQkJ
aWYgKChjcC0+Y2guY2h1bmtfZmxhZ3MgJiBTQ1RQX0ZST01fTUlERExFX0JPWCkpCisJCQlpZiAo
Y2hrX2xlbiA8IHNpemVvZihzdHJ1Y3Qgc2N0cF9kYXRhX2NodW5rKSArIFNDVFBfTlVNX0RCX1RP
X1ZFUklGWSkgeworCQkJCS8qIE5vdCBlbm91Z2ggZGF0YSBieXRlcyBhdmFpbGFibGUgaW4gdGhl
IGNodW5rLiAqLworCQkJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3BkcnBuZWRhdCk7CisJCQkJZ290
byBuZXh0X2NodW5rOworCQkJfQorCQkJaWYgKG9mZnNldCArIHNpemVvZihzdHJ1Y3Qgc2N0cF9k
YXRhX2NodW5rKSArIFNDVFBfTlVNX0RCX1RPX1ZFUklGWSA+IGxpbWl0KSB7CisJCQkJLyogTm90
IGVub3VnaCBkYXRhIGluIGJ1ZmZlci4gKi8KKwkJCQlicmVhazsKKwkJCX0KKwkJCWRhdGFfY2h1
bmsgPSAoc3RydWN0IHNjdHBfZGF0YV9jaHVuayAqKShjcC0+ZGF0YSArIG9mZnNldCk7CisJCQlt
ZW1jcHkoZGVzYy5kYXRhX2J5dGVzLCBkYXRhX2NodW5rICsgMSwgU0NUUF9OVU1fREJfVE9fVkVS
SUZZKTsKKwkJCWRlc2MudHNuX2lmYW55ID0gZGF0YV9jaHVuay0+ZHAudHNuOworCQkJaWYgKHBr
dGRycF9mbGFncyAmIFNDVFBfRlJPTV9NSURETEVfQk9YKSB7CiAJCQkJU0NUUF9TVEFUX0lOQ1Io
c2N0cHNfcGRycG1iZGEpOwotCi0JCQlpZiAoY2hsZW4gPj0gKHNpemVvZihzdHJ1Y3Qgc2N0cF9k
YXRhX2NodW5rKSArIHNpemVvZih1aW50MzJfdCkpKSB7Ci0JCQkJLyogeWVwICovCi0JCQkJc3Ry
dWN0IHNjdHBfZGF0YV9jaHVuayAqZGNwOwotCQkJCXVpbnQ4X3QgKmRkcDsKLQkJCQl1bnNpZ25l
ZCBpbnQgaWlpOwotCi0JCQkJZGNwID0gKHN0cnVjdCBzY3RwX2RhdGFfY2h1bmsgKiljaDsKLQkJ
CQlkZHAgPSAodWludDhfdCAqKSAoZGNwICsgMSk7Ci0JCQkJZm9yIChpaWkgPSAwOyBpaWkgPCBz
aXplb2YoZGVzYy5kYXRhX2J5dGVzKTsgaWlpKyspIHsKLQkJCQkJZGVzYy5kYXRhX2J5dGVzW2lp
aV0gPSBkZHBbaWlpXTsKLQkJCQl9Ci0JCQkJZGVzYy50c25faWZhbnkgPSBkY3AtPmRwLnRzbjsK
LQkJCX0gZWxzZSB7Ci0JCQkJLyogbm9wZSB3ZSBhcmUgZG9uZS4gKi8KKwkJCX0KKwkJfSBlbHNl
IGlmIChkZXNjLmNodW5rX3R5cGUgPT0gU0NUUF9JREFUQSkgeworCQkJaWYgKCFzdGNiLT5hc29j
LmlkYXRhX3N1cHBvcnRlZCkgeworCQkJCS8qIFNvbWUgaXMgcGxheWluZyBnYW1lcyB3aXRoIHVz
LiAqLworCQkJCWJyZWFrOworCQkJfQorCQkJaWYgKGNoa19sZW4gPD0gc2l6ZW9mKHN0cnVjdCBz
Y3RwX2lkYXRhX2NodW5rKSkgeworCQkJCS8qIFNvbWUgaXMgcGxheWluZyBnYW1lcyB3aXRoIHVz
LiAqLworCQkJCWJyZWFrOworCQkJfQorCQkJaWYgKGNoa19sZW4gPCBzaXplb2Yoc3RydWN0IHNj
dHBfaWRhdGFfY2h1bmspICsgU0NUUF9OVU1fREJfVE9fVkVSSUZZKSB7CisJCQkJLyogTm90IGVu
b3VnaCBkYXRhIGJ5dGVzIGF2YWlsYWJsZSBpbiB0aGUgY2h1bmsuICovCiAJCQkJU0NUUF9TVEFU
X0lOQ1Ioc2N0cHNfcGRycG5lZGF0KTsKKwkJCQlnb3RvIG5leHRfY2h1bms7CisJCQl9CisJCQlp
ZiAob2Zmc2V0ICsgc2l6ZW9mKHN0cnVjdCBzY3RwX2lkYXRhX2NodW5rKSArIFNDVFBfTlVNX0RC
X1RPX1ZFUklGWSA+IGxpbWl0KSB7CisJCQkJLyogTm90IGVub3VnaCBkYXRhIGluIGJ1ZmZlci4g
Ki8KIAkJCQlicmVhazsKIAkJCX0KKwkJCWlkYXRhX2NodW5rID0gKHN0cnVjdCBzY3RwX2lkYXRh
X2NodW5rICopKGNwLT5kYXRhICsgb2Zmc2V0KTsKKwkJCW1lbWNweShkZXNjLmRhdGFfYnl0ZXMs
IGlkYXRhX2NodW5rICsgMSwgU0NUUF9OVU1fREJfVE9fVkVSSUZZKTsKKwkJCWRlc2MudHNuX2lm
YW55ID0gaWRhdGFfY2h1bmstPmRwLnRzbjsKKwkJCWlmIChwa3RkcnBfZmxhZ3MgJiBTQ1RQX0ZS
T01fTUlERExFX0JPWCkgeworCQkJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3BkcnBtYmRhKTsKKwkJ
CX0KIAkJfSBlbHNlIHsKLQkJCWlmICgoY3AtPmNoLmNodW5rX2ZsYWdzICYgU0NUUF9GUk9NX01J
RERMRV9CT1gpKQorCQkJaWYgKHBrdGRycF9mbGFncyAmIFNDVFBfRlJPTV9NSURETEVfQk9YKSB7
CiAJCQkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfcGRycG1iY3QpOworCQkJfQogCQl9Ci0KLQkJaWYg
KHByb2Nlc3NfY2h1bmtfZHJvcChzdGNiLCAmZGVzYywgbmV0LCBjcC0+Y2guY2h1bmtfZmxhZ3Mp
KSB7CisJCWlmIChwcm9jZXNzX2NodW5rX2Ryb3Aoc3RjYiwgJmRlc2MsIG5ldCwgcGt0ZHJwX2Zs
YWdzKSkgewogCQkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfcGRycHBkYnJrKTsKIAkJCWJyZWFrOwog
CQl9Ci0JCWlmIChTQ1RQX1NJWkUzMihhdCkgPiBjaGxlbikgewotCQkJYnJlYWs7Ci0JCX0KLQkJ
Y2hsZW4gLT0gU0NUUF9TSVpFMzIoYXQpOwotCQlpZiAoY2hsZW4gPCBzaXplb2Yoc3RydWN0IHNj
dHBfY2h1bmtoZHIpKSB7Ci0JCQkvKiBkb25lLCBub25lIGxlZnQgKi8KLQkJCWJyZWFrOwotCQl9
Ci0JCWNoID0gKHN0cnVjdCBzY3RwX2NodW5raGRyICopKChjYWRkcl90KWNoICsgU0NUUF9TSVpF
MzIoYXQpKTsKK25leHRfY2h1bms6CisJCW9mZnNldCArPSBTQ1RQX1NJWkUzMihjaGtfbGVuKTsK
IAl9CiAJLyogTm93IHVwZGF0ZSBhbnkgcnduZCAtLS0gcG9zc2libHkgKi8KLQlpZiAoKGNwLT5j
aC5jaHVua19mbGFncyAmIFNDVFBfRlJPTV9NSURETEVfQk9YKSA9PSAwKSB7CisJaWYgKChwa3Rk
cnBfZmxhZ3MgJiBTQ1RQX0ZST01fTUlERExFX0JPWCkgPT0gMCkgewogCQkvKiBGcm9tIGEgcGVl
ciwgd2UgZ2V0IGEgcnduZCByZXBvcnQgKi8KIAkJdWludDMyX3QgYV9yd25kOwogCkBAIC00Njg3
LDcgKzQ3MDIsNyBAQCBzY3RwX2hhbmRsZV9wYWNrZXRfZHJvcHBlZChzdHJ1Y3Qgc2N0cF9wa3Rk
cm9wX2NodW5rICpjcCwKIAl9CiAKIAkvKiBub3cgbWlkZGxlIGJveGVzIGluIHNhdCBuZXR3b3Jr
cyBnZXQgYSBjd25kIGJ1bXAgKi8KLQlpZiAoKGNwLT5jaC5jaHVua19mbGFncyAmIFNDVFBfRlJP
TV9NSURETEVfQk9YKSAmJgorCWlmICgocGt0ZHJwX2ZsYWdzICYgU0NUUF9GUk9NX01JRERMRV9C
T1gpICYmCiAJICAgIChzdGNiLT5hc29jLnNhdF90M19sb3NzX3JlY292ZXJ5ID09IDApICYmCiAJ
ICAgIChzdGNiLT5hc29jLnNhdF9uZXR3b3JrKSkgewogCQkvKgpAQCAtNDcwOSwxNyArNDcyNCwx
NSBAQCBzY3RwX2hhbmRsZV9wYWNrZXRfZHJvcHBlZChzdHJ1Y3Qgc2N0cF9wa3Rkcm9wX2NodW5r
ICpjcCwKICAqIGNvb2tpZS1lY2hvIHByb2Nlc3NpbmcgLSByZXR1cm4gTlVMTCB0byBkaXNjYXJk
IHRoZSBwYWNrZXQgKGllLiBubyBhc29jLAogICogYmFkIHBhY2tldCwuLi4pIG90aGVyd2lzZSBy
ZXR1cm4gdGhlIHRjYiBmb3IgdGhpcyBwYWNrZXQKICAqLwotI2lmICFkZWZpbmVkKF9fUGFuZGFf
XykKICNpZmRlZiBfX0dOVUNfXwogX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSkKICNlbmRpZgot
I2VuZGlmCiBzdGF0aWMgc3RydWN0IHNjdHBfdGNiICoKIHNjdHBfcHJvY2Vzc19jb250cm9sKHN0
cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgKm9mZnNldCwgaW50IGxlbmd0aCwKICAgICBz
dHJ1Y3Qgc29ja2FkZHIgKnNyYywgc3RydWN0IHNvY2thZGRyICpkc3QsCiAgICAgc3RydWN0IHNj
dHBoZHIgKnNoLCBzdHJ1Y3Qgc2N0cF9jaHVua2hkciAqY2gsIHN0cnVjdCBzY3RwX2lucGNiICpp
bnAsCiAgICAgc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9uZXRzICoqbmV0cCwg
aW50ICpmd2RfdHNuX3NlZW4sCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogICAgIHVpbnQ4X3QgbWZs
b3d0eXBlLCB1aW50MzJfdCBtZmxvd2lkLCB1aW50MTZfdCBmaWJudW0sCiAjZW5kaWYKICAgICB1
aW50MzJfdCB2cmZfaWQsIHVpbnQxNl90IHBvcnQpCkBAIC00NzQzLDcgKzQ3NTYsNyBAQCBzY3Rw
X3Byb2Nlc3NfY29udHJvbChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50ICpvZmZzZXQs
IGludCBsZW5ndGgsCiAJdWludDMyX3QgYXV0aF9vZmZzZXQgPSAwLCBhdXRoX2xlbiA9IDA7CiAJ
aW50IGF1dGhfc2tpcHBlZCA9IDA7CiAJaW50IGFzY29uZl9jbnQgPSAwOwotI2lmIGRlZmluZWQo
X19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQo
X19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCXN0cnVjdCBzb2NrZXQgKnNv
OwogI2VuZGlmCiAKQEAgLTQ4NDYsMTEgKzQ4NTksMTMgQEAgc2N0cF9wcm9jZXNzX2NvbnRyb2wo
c3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCAqb2Zmc2V0LCBpbnQgbGVuZ3RoLAogCQkJ
aWYgKGF1dGhfc2tpcHBlZCAmJiAoc3RjYiAhPSBOVUxMKSkgewogCQkJCXN0cnVjdCBzY3RwX2F1
dGhfY2h1bmsgKmF1dGg7CiAKLQkJCQlhdXRoID0gKHN0cnVjdCBzY3RwX2F1dGhfY2h1bmsgKikK
LQkJCQkJc2N0cF9tX2dldHB0cihtLCBhdXRoX29mZnNldCwKLQkJCQkJCSAgICAgIGF1dGhfbGVu
LCBjaHVua19idWYpOwotCQkJCWdvdF9hdXRoID0gMTsKLQkJCQlhdXRoX3NraXBwZWQgPSAwOwor
CQkJCWlmIChhdXRoX2xlbiA8PSBTQ1RQX0NIVU5LX0JVRkZFUl9TSVpFKSB7CisJCQkJCWF1dGgg
PSAoc3RydWN0IHNjdHBfYXV0aF9jaHVuayAqKXNjdHBfbV9nZXRwdHIobSwgYXV0aF9vZmZzZXQs
IGF1dGhfbGVuLCBjaHVua19idWYpOworCQkJCQlnb3RfYXV0aCA9IDE7CisJCQkJCWF1dGhfc2tp
cHBlZCA9IDA7CisJCQkJfSBlbHNlIHsKKwkJCQkJYXV0aCA9IE5VTEw7CisJCQkJfQogCQkJCWlm
ICgoYXV0aCA9PSBOVUxMKSB8fCBzY3RwX2hhbmRsZV9hdXRoKHN0Y2IsIGF1dGgsIG0sCiAJCQkJ
CQkJCSAgICAgICBhdXRoX29mZnNldCkpIHsKIAkJCQkJLyogYXV0aCBITUFDIGZhaWxlZCBzbyBk
dW1wIGl0ICovCkBAIC00ODYzLDEyICs0ODc4LDEyIEBAIHNjdHBfcHJvY2Vzc19jb250cm9sKHN0
cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgKm9mZnNldCwgaW50IGxlbmd0aCwKIAkJCX0K
IAkJfQogCQlpZiAoc3RjYiA9PSBOVUxMKSB7Ci0JCQlzbnByaW50Zihtc2csIHNpemVvZihtc2cp
LCAiT09UQiwgJXM6JWQgYXQgJXMiLCBfX0ZJTEVfXywgX19MSU5FX18sIF9fZnVuY19fKTsKKwkJ
CVNDVFBfU05QUklOVEYobXNnLCBzaXplb2YobXNnKSwgIk9PVEIsICVzOiVkIGF0ICVzIiwgX19G
SUxFX18sIF9fTElORV9fLCBfX2Z1bmNfXyk7CiAJCQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRlX2Nh
dXNlKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9kaWFnX2luZm9fY29kZSksCiAJCQkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1zZyk7CiAJCQkvKiBubyBhc3NvY2lhdGlvbiwgc28gaXQncyBv
dXQgb2YgdGhlIGJsdWUuLi4gKi8KIAkJCXNjdHBfaGFuZGxlX29vdGIobSwgaXBobGVuLCAqb2Zm
c2V0LCBzcmMsIGRzdCwgc2gsIGlucCwgb3BfZXJyLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJ
CSAgICAgICAgICAgICAgICAgbWZsb3d0eXBlLCBtZmxvd2lkLCBpbnAtPmZpYm51bSwKICNlbmRp
ZgogCQkJCQkgdnJmX2lkLCBwb3J0KTsKQEAgLTQ5MDcsMTIgKzQ5MjIsMTIgQEAgc2N0cF9wcm9j
ZXNzX2NvbnRyb2woc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCAqb2Zmc2V0LCBpbnQg
bGVuZ3RoLAogCQkJCWlmIChzdGNiICE9IE5VTEwpIHsKIAkJCQkJU0NUUF9UQ0JfVU5MT0NLKHN0
Y2IpOwogCQkJCX0KLQkJCQlzbnByaW50Zihtc2csIHNpemVvZihtc2cpLCAiT09UQiwgJXM6JWQg
YXQgJXMiLCBfX0ZJTEVfXywgX19MSU5FX18sIF9fZnVuY19fKTsKKwkJCQlTQ1RQX1NOUFJJTlRG
KG1zZywgc2l6ZW9mKG1zZyksICJPT1RCLCAlczolZCBhdCAlcyIsIF9fRklMRV9fLCBfX0xJTkVf
XywgX19mdW5jX18pOwogCQkJCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9CQVNF
X1NZU0NUTChzY3RwX2RpYWdfaW5mb19jb2RlKSwKIAkJCQkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1zZyk7CiAJCQkJc2N0cF9oYW5kbGVfb290YihtLCBpcGhsZW4sICpvZmZzZXQsIHNy
YywgZHN0LAogCQkJCSAgICAgICAgICAgICAgICAgc2gsIGlucCwgb3BfZXJyLAotI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKIAkJCQkgICAgICAgICAgICAgICAgIG1mbG93dHlwZSwgbWZsb3dpZCwgZmli
bnVtLAogI2VuZGlmCiAJCQkJICAgICAgICAgICAgICAgICB2cmZfaWQsIHBvcnQpOwpAQCAtNDk0
MCw3ICs0OTU1LDcgQEAgc2N0cF9wcm9jZXNzX2NvbnRyb2woc3RydWN0IG1idWYgKm0sIGludCBp
cGhsZW4sIGludCAqb2Zmc2V0LCBpbnQgbGVuZ3RoLAogCWlmICgoKGNoLT5jaHVua190eXBlID09
IFNDVFBfU0VMRUNUSVZFX0FDSykgfHwKIAkgICAgIChjaC0+Y2h1bmtfdHlwZSA9PSBTQ1RQX05S
X1NFTEVDVElWRV9BQ0spIHx8CiAJICAgICAoY2gtPmNodW5rX3R5cGUgPT0gU0NUUF9IRUFSVEJF
QVRfUkVRVUVTVCkpICYmCi0JICAgIChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NU
UF9TVEFURV9DT09LSUVfRUNIT0VEKSkgeworCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0g
U0NUUF9TVEFURV9DT09LSUVfRUNIT0VEKSkgewogCQkvKiBpbXBsaWVkIGNvb2tpZS1hY2suLiB3
ZSBtdXN0IGhhdmUgbG9zdCB0aGUgYWNrICovCiAJCXNjdHBfaGFuZGxlX2Nvb2tpZV9hY2soKHN0
cnVjdCBzY3RwX2Nvb2tpZV9hY2tfY2h1bmsgKiljaCwgc3RjYiwKIAkJCQkgICAgICAgKm5ldHAp
OwpAQCAtNTAyOSw3ICs1MDQ0LDcgQEAgc2N0cF9wcm9jZXNzX2NvbnRyb2woc3RydWN0IG1idWYg
Km0sIGludCBpcGhsZW4sIGludCAqb2Zmc2V0LCBpbnQgbGVuZ3RoLAogCQkJCW9wX2VyciA9IHNj
dHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9DQVVTRV9PVVRfT0ZfUkVTQywgIiIpOwogCQkJCXNjdHBf
YWJvcnRfYXNzb2NpYXRpb24oaW5wLCBzdGNiLCBtLCBpcGhsZW4sCiAJCQkJCQkgICAgICAgc3Jj
LCBkc3QsIHNoLCBvcF9lcnIsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCSAgICAgICAgICAg
ICAgICAgICAgICAgbWZsb3d0eXBlLCBtZmxvd2lkLAogI2VuZGlmCiAJCQkJICAgICAgICAgICAg
ICAgICAgICAgICB2cmZfaWQsIHBvcnQpOwpAQCAtNTAzOSw3ICs1MDU0LDcgQEAgc2N0cF9wcm9j
ZXNzX2NvbnRyb2woc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCAqb2Zmc2V0LCBpbnQg
bGVuZ3RoLAogCQkJc2N0cF9oYW5kbGVfaW5pdChtLCBpcGhsZW4sICpvZmZzZXQsIHNyYywgZHN0
LCBzaCwKIAkJCSAgICAgICAgICAgICAgICAgKHN0cnVjdCBzY3RwX2luaXRfY2h1bmsgKiljaCwg
aW5wLAogCQkJICAgICAgICAgICAgICAgICBzdGNiLCAqbmV0cCwgJmFib3J0X25vX3VubG9jaywK
LSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkgICAgICAgICAgICAgICAgIG1mbG93dHlwZSwgbWZs
b3dpZCwKICNlbmRpZgogCQkJICAgICAgICAgICAgICAgICB2cmZfaWQsIHBvcnQpOwpAQCAtNTA2
MCw3ICs1MDc1LDcgQEAgc2N0cF9wcm9jZXNzX2NvbnRyb2woc3RydWN0IG1idWYgKm0sIGludCBp
cGhsZW4sIGludCAqb2Zmc2V0LCBpbnQgbGVuZ3RoLAogCQkJCX0gZWxzZSB7CiAJCQkJCSpvZmZz
ZXQgPSBsZW5ndGg7CiAJCQkJCWlmIChzdGNiICE9IE5VTEwpIHsKLSNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQkJCXNvID0gU0NUUF9JTlBfU08o
aW5wKTsKIAkJCQkJCWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29jLnJlZmNudCwgMSk7CiAJCQkJ
CQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CkBAIC01MDcwLDcgKzUwODUsNyBAQCBzY3RwX3Byb2Nl
c3NfY29udHJvbChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50ICpvZmZzZXQsIGludCBs
ZW5ndGgsCiAjZW5kaWYKIAkJCQkJCSh2b2lkKXNjdHBfZnJlZV9hc3NvYyhpbnAsIHN0Y2IsIFND
VFBfTk9STUFMX1BST0MsCiAJCQkJCQkgICAgICAgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1ND
VFBfSU5QVVQgKyBTQ1RQX0xPQ18yOSk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmlu
ZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDEpOwogI2Vu
ZGlmCiAJCQkJCX0KQEAgLTUwODksNyArNTEwNCw3IEBAIHNjdHBfcHJvY2Vzc19jb250cm9sKHN0
cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgKm9mZnNldCwgaW50IGxlbmd0aCwKIAkJCQkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHNjdHBfaW5pdF9hY2tfY2h1bmsgKilj
aCwKIAkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGNiLCAqbmV0cCwKIAkJCQkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmYWJvcnRfbm9fdW5sb2NrLAotI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKIAkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQs
CiAjZW5kaWYKIAkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICB2cmZfaWQpOwpAQCAtNTE0
MCw3ICs1MTU1LDcgQEAgc2N0cF9wcm9jZXNzX2NvbnRyb2woc3RydWN0IG1idWYgKm0sIGludCBp
cGhsZW4sIGludCAqb2Zmc2V0LCBpbnQgbGVuZ3RoLAogCQkJCQlicmVhazsKIAkJCQl9CiAJCQl9
Ci0JCQlpZiAoU0NUUF9HRVRfU1RBVEUoJnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERP
V05fQUNLX1NFTlQpIHsKKwkJCWlmIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRF
X1NIVVRET1dOX0FDS19TRU5UKSB7CiAJCQkJLyotCiAJCQkJICogSWYgd2UgaGF2ZSBzZW50IGEg
c2h1dGRvd24tYWNrLCB3ZSB3aWxsIHBheSBubwogCQkJCSAqIGF0dGVudGlvbiB0byBhIHNhY2sg
c2VudCBpbiB0byB1cyBzaW5jZQpAQCAtNTMyOSw3ICs1MzQ0LDcgQEAgc2N0cF9wcm9jZXNzX2Nv
bnRyb2woc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCAqb2Zmc2V0LCBpbnQgbGVuZ3Ro
LAogCQkJaWYgKChzdGNiID09IE5VTEwpICYmCiAJCQkgICAgKCFTQ1RQX0lTX0xJU1RFTklORyhp
bnApIHx8CiAJCQkgICAgICghKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZ
UEUpICYmCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0g
MTIwMDAzNAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAJCQkgICAgICBpbnAtPnNjdHBfc29ja2V0LT5zb2xfcWxlbiA+PSBpbnAtPnNjdHBfc29j
a2V0LT5zb2xfcWxpbWl0KSkpIHsKICNlbHNlCiAJCQkgICAgICBpbnAtPnNjdHBfc29ja2V0LT5z
b19xbGVuID49IGlucC0+c2N0cF9zb2NrZXQtPnNvX3FsaW1pdCkpKSB7CkBAIC01MzM5LDcgKzUz
NTQsNyBAQCBzY3RwX3Byb2Nlc3NfY29udHJvbChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwg
aW50ICpvZmZzZXQsIGludCBsZW5ndGgsCiAJCQkJCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1
c2UoU0NUUF9DQVVTRV9PVVRfT0ZfUkVTQywgIiIpOwogCQkJCQlzY3RwX2Fib3J0X2Fzc29jaWF0
aW9uKGlucCwgc3RjYiwgbSwgaXBobGVuLAogCQkJCQkgICAgICAgICAgICAgICAgICAgICAgIHNy
YywgZHN0LCBzaCwgb3BfZXJyLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQkJICAgICAgICAg
ICAgICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQsCiAjZW5kaWYKIAkJCQkJICAgICAgICAg
ICAgICAgICAgICAgICB2cmZfaWQsIHBvcnQpOwpAQCAtNTM0OSw2ICs1MzY0LDggQEAgc2N0cF9w
cm9jZXNzX2NvbnRyb2woc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCAqb2Zmc2V0LCBp
bnQgbGVuZ3RoLAogCQkJfSBlbHNlIHsKIAkJCQlzdHJ1Y3QgbWJ1ZiAqcmV0X2J1ZjsKIAkJCQlz
dHJ1Y3Qgc2N0cF9pbnBjYiAqbGlucDsKKwkJCQlzdHJ1Y3Qgc2N0cF90bWl0X2NodW5rICpjaGs7
CisKIAkJCQlpZiAoc3RjYikgewogCQkJCQlsaW5wID0gTlVMTDsKIAkJCQl9IGVsc2UgewpAQCAt
NTM3OSw3ICs1Mzk2LDcgQEAgc2N0cF9wcm9jZXNzX2NvbnRyb2woc3RydWN0IG1idWYgKm0sIGlu
dCBpcGhsZW4sIGludCAqb2Zmc2V0LCBpbnQgbGVuZ3RoLAogCQkJCQkJICAgICAgICAgICAgICAg
ICAgICAgICAgYXV0aF9vZmZzZXQsCiAJCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICBhdXRo
X2xlbiwKIAkJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICZsb2NrZWRfc3RjYiwKLSNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiAJCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICBtZmxvd3R5cGUs
CiAJCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICBtZmxvd2lkLAogI2VuZGlmCkBAIC01NDEx
LDE0ICs1NDI4LDEzIEBAIHNjdHBfcHJvY2Vzc19jb250cm9sKHN0cnVjdCBtYnVmICptLCBpbnQg
aXBobGVuLCBpbnQgKm9mZnNldCwgaW50IGxlbmd0aCwKIAkJCQkJZ290X2F1dGggPSAxOwogCQkJ
CQlhdXRoX3NraXBwZWQgPSAwOwogCQkJCX0KLQkJCQlpZiAoIVRBSUxRX0VNUFRZKCZzdGNiLT5h
c29jLnNlbnRfcXVldWUpKSB7Ci0JCQkJCS8qCi0JCQkJCSAqIFJlc3RhcnQgdGhlIHRpbWVyIGlm
IHdlIGhhdmUKLQkJCQkJICogcGVuZGluZyBkYXRhCi0JCQkJCSAqLwotCQkJCQlzdHJ1Y3Qgc2N0
cF90bWl0X2NodW5rICpjaGs7Ci0KLQkJCQkJY2hrID0gVEFJTFFfRklSU1QoJnN0Y2ItPmFzb2Mu
c2VudF9xdWV1ZSk7CisJCQkJLyogUmVzdGFydCB0aGUgdGltZXIgaWYgd2UgaGF2ZSBwZW5kaW5n
IGRhdGEgKi8KKwkJCQlUQUlMUV9GT1JFQUNIKGNoaywgJnN0Y2ItPmFzb2Muc2VudF9xdWV1ZSwg
c2N0cF9uZXh0KSB7CisJCQkJCWlmIChjaGstPndob1RvICE9IE5VTEwpIHsKKwkJCQkJCWJyZWFr
OworCQkJCQl9CisJCQkJfQorCQkJCWlmIChjaGsgIT0gTlVMTCkgewogCQkJCQlzY3RwX3RpbWVy
X3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9TRU5ELCBzdGNiLT5zY3RwX2VwLCBzdGNiLCBjaGstPndo
b1RvKTsKIAkJCQl9CiAJCQl9CkBAIC01NDMzLDcgKzU0NDksNyBAQCBzY3RwX3Byb2Nlc3NfY29u
dHJvbChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50ICpvZmZzZXQsIGludCBsZW5ndGgs
CiAJCQkJaWYgKChzdGNiKSAmJiAoc3RjYi0+YXNvYy50b3RhbF9vdXRwdXRfcXVldWVfc2l6ZSkp
IHsKIAkJCQkJOwogCQkJCX0gZWxzZSBpZiAoc3RjYikgewotI2lmIGRlZmluZWQoX19BUFBMRV9f
KSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCQlzbyA9IFNDVFBfSU5QX1NPKGlucCk7
CiAJCQkJCWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29jLnJlZmNudCwgMSk7CiAJCQkJCVNDVFBf
VENCX1VOTE9DSyhzdGNiKTsKQEAgLTU0NDMsNyArNTQ1OSw3IEBAIHNjdHBfcHJvY2Vzc19jb250
cm9sKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgKm9mZnNldCwgaW50IGxlbmd0aCwK
ICNlbmRpZgogCQkJCQkodm9pZClzY3RwX2ZyZWVfYXNzb2MoaW5wLCBzdGNiLCBTQ1RQX05PUk1B
TF9QUk9DLAogCQkJCQkgICAgICAgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBfSU5QVVQg
KyBTQ1RQX0xPQ18zMCk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9T
T19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAJCQkJCVNDVFBfU09DS0VUX1VOTE9DSyhzbywgMSk7CiAjZW5kaWYKIAkJCQkJ
Km9mZnNldCA9IGxlbmd0aDsKQEAgLTU1MzIsNyArNTU0OCw4IEBAIHNjdHBfcHJvY2Vzc19jb250
cm9sKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgKm9mZnNldCwgaW50IGxlbmd0aCwK
IAkJCWJyZWFrOwogCQljYXNlIFNDVFBfRk9SV0FSRF9DVU1fVFNOOgogCQljYXNlIFNDVFBfSUZP
UldBUkRfQ1VNX1RTTjoKLQkJCVNDVFBEQkcoU0NUUF9ERUJVR19JTlBVVDMsICJTQ1RQX0ZXRF9U
U05cbiIpOworCQkJU0NUUERCRyhTQ1RQX0RFQlVHX0lOUFVUMywgIiVzXG4iLAorCQkJCWNoLT5j
aHVua190eXBlID09IFNDVFBfRk9SV0FSRF9DVU1fVFNOID8gIkZPUldBUkRfVFNOIiA6ICJJX0ZP
UldBUkRfVFNOIik7CiAJCQlpZiAoY2hrX2xlbmd0aCA8IHNpemVvZihzdHJ1Y3Qgc2N0cF9mb3J3
YXJkX3Rzbl9jaHVuaykpIHsKIAkJCQkvKiBJdHMgbm90IG91cnMgKi8KIAkJCQkqb2Zmc2V0ID0g
bGVuZ3RoOwpAQCAtNTU0NSwxMCArNTU2MiwyMiBAQCBzY3RwX3Byb2Nlc3NfY29udHJvbChzdHJ1
Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50ICpvZmZzZXQsIGludCBsZW5ndGgsCiAJCQkJaWYg
KHN0Y2ItPmFzb2MucHJzY3RwX3N1cHBvcnRlZCA9PSAwKSB7CiAJCQkJCWdvdG8gdW5rbm93bl9j
aHVuazsKIAkJCQl9CisJCQkJaWYgKCgoc3RjYi0+YXNvYy5pZGF0YV9zdXBwb3J0ZWQgPT0gMSkg
JiYgKGNoLT5jaHVua190eXBlID09IFNDVFBfRk9SV0FSRF9DVU1fVFNOKSkgfHwKKwkJCQkgICAg
KChzdGNiLT5hc29jLmlkYXRhX3N1cHBvcnRlZCA9PSAwKSAmJiAoY2gtPmNodW5rX3R5cGUgPT0g
U0NUUF9JRk9SV0FSRF9DVU1fVFNOKSkpIHsKKwkJCQkJaWYgKGNoLT5jaHVua190eXBlID09IFND
VFBfRk9SV0FSRF9DVU1fVFNOKSB7CisJCQkJCQlTQ1RQX1NOUFJJTlRGKG1zZywgc2l6ZW9mKG1z
ZyksICIlcyIsICJGT1JXQVJELVRTTiBjaHVuayByZWNlaXZlZCB3aGVuIEktRk9SV0FSRC1UU04g
d2FzIG5lZ290aWF0ZWQiKTsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCVNDVFBfU05QUklOVEYobXNn
LCBzaXplb2YobXNnKSwgIiVzIiwgIkktRk9SV0FSRC1UU04gY2h1bmsgcmVjZWl2ZWQgd2hlbiBG
T1JXQVJELVRTTiB3YXMgbmVnb3RpYXRlZCIpOworCQkJCQl9CisJCQkJCW9wX2VyciA9IHNjdHBf
Z2VuZXJhdGVfY2F1c2UoU0NUUF9DQVVTRV9QUk9UT0NPTF9WSU9MQVRJT04sIG1zZyk7CisJCQkJ
CXNjdHBfYWJvcnRfYW5fYXNzb2NpYXRpb24oaW5wLCBzdGNiLCBvcF9lcnIsIFNDVFBfU09fTk9U
X0xPQ0tFRCk7CisJCQkJCSpvZmZzZXQgPSBsZW5ndGg7CisJCQkJCXJldHVybiAoTlVMTCk7CisJ
CQkJfQogCQkJCSpmd2RfdHNuX3NlZW4gPSAxOwogCQkJCWlmIChpbnAtPnNjdHBfZmxhZ3MgJiBT
Q1RQX1BDQl9GTEFHU19TT0NLRVRfR09ORSkgewogCQkJCQkvKiBXZSBhcmUgbm90IGludGVyZXN0
ZWQgYW55bW9yZSAqLwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09f
TE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCQkJCQlzbyA9IFNDVFBfSU5QX1NPKGlucCk7CiAJCQkJCWF0b21pY19hZGRfaW50
KCZzdGNiLT5hc29jLnJlZmNudCwgMSk7CiAJCQkJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKQEAg
LTU1NTgsNyArNTU4Nyw3IEBAIHNjdHBfcHJvY2Vzc19jb250cm9sKHN0cnVjdCBtYnVmICptLCBp
bnQgaXBobGVuLCBpbnQgKm9mZnNldCwgaW50IGxlbmd0aCwKICNlbmRpZgogCQkJCQkodm9pZClz
Y3RwX2ZyZWVfYXNzb2MoaW5wLCBzdGNiLCBTQ1RQX05PUk1BTF9QUk9DLAogCQkJCQkgICAgICAg
ICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBfSU5QVVQgKyBTQ1RQX0xPQ18zMSk7Ci0jaWYg
ZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYg
ZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJCVNDVFBf
U09DS0VUX1VOTE9DSyhzbywgMSk7CiAjZW5kaWYKIAkJCQkJKm9mZnNldCA9IGxlbmd0aDsKQEAg
LTU1NzksNyArNTYwOCw3IEBAIHNjdHBfcHJvY2Vzc19jb250cm9sKHN0cnVjdCBtYnVmICptLCBp
bnQgaXBobGVuLCBpbnQgKm9mZnNldCwgaW50IGxlbmd0aCwKIAkJCWJyZWFrOwogCQljYXNlIFND
VFBfU1RSRUFNX1JFU0VUOgogCQkJU0NUUERCRyhTQ1RQX0RFQlVHX0lOUFVUMywgIlNDVFBfU1RS
RUFNX1JFU0VUXG4iKTsKLQkJCWlmICgoKHN0Y2IgPT0gTlVMTCkgfHwgKGNoID09IE5VTEwpIHx8
IChjaGtfbGVuZ3RoIDwgc2l6ZW9mKHN0cnVjdCBzY3RwX3N0cmVhbV9yZXNldF90c25fcmVxKSkp
KSB7CisJCQlpZiAoKHN0Y2IgPT0gTlVMTCkgfHwgKGNoa19sZW5ndGggPCBzaXplb2Yoc3RydWN0
IHNjdHBfc3RyZWFtX3Jlc2V0X3Rzbl9yZXEpKSkgewogCQkJCS8qIEl0cyBub3Qgb3VycyAqLwog
CQkJCSpvZmZzZXQgPSBsZW5ndGg7CiAJCQkJcmV0dXJuIChzdGNiKTsKQEAgLTU2MDIsNyArNTYz
MSw3IEBAIHNjdHBfcHJvY2Vzc19jb250cm9sKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBp
bnQgKm9mZnNldCwgaW50IGxlbmd0aCwKIAkJCQlyZXR1cm4gKHN0Y2IpOwogCQkJfQogCi0JCQlp
ZiAoKGNoICE9IE5VTEwpICYmIChzdGNiICE9IE5VTEwpICYmIChuZXRwICE9IE5VTEwpICYmICgq
bmV0cCAhPSBOVUxMKSkgeworCQkJaWYgKChzdGNiICE9IE5VTEwpICYmIChuZXRwICE9IE5VTEwp
ICYmICgqbmV0cCAhPSBOVUxMKSkgewogCQkJCWlmIChzdGNiLT5hc29jLnBrdGRyb3Bfc3VwcG9y
dGVkID09IDApIHsKIAkJCQkJZ290byB1bmtub3duX2NodW5rOwogCQkJCX0KQEAgLTU2MzgsOCAr
NTY2Nyw3IEBAIHNjdHBfcHJvY2Vzc19jb250cm9sKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVu
LCBpbnQgKm9mZnNldCwgaW50IGxlbmd0aCwKIAkJCQlnb3RvIG5leHRfY2h1bms7CiAJCQl9CiAJ
CQlnb3RfYXV0aCA9IDE7Ci0JCQlpZiAoKGNoID09IE5VTEwpIHx8IHNjdHBfaGFuZGxlX2F1dGgo
c3RjYiwgKHN0cnVjdCBzY3RwX2F1dGhfY2h1bmsgKiljaCwKLQkJCQkJCQkgICAgIG0sICpvZmZz
ZXQpKSB7CisJCQlpZiAoc2N0cF9oYW5kbGVfYXV0aChzdGNiLCAoc3RydWN0IHNjdHBfYXV0aF9j
aHVuayAqKWNoLCBtLCAqb2Zmc2V0KSkgewogCQkJCS8qIGF1dGggSE1BQyBmYWlsZWQgc28gZHVt
cCB0aGUgcGFja2V0ICovCiAJCQkJKm9mZnNldCA9IGxlbmd0aDsKIAkJCQlyZXR1cm4gKHN0Y2Ip
OwpAQCAtNTY1Miw3ICs1NjgwLDExIEBAIHNjdHBfcHJvY2Vzc19jb250cm9sKHN0cnVjdCBtYnVm
ICptLCBpbnQgaXBobGVuLCBpbnQgKm9mZnNldCwgaW50IGxlbmd0aCwKIAkJZGVmYXVsdDoKIAkJ
dW5rbm93bl9jaHVuazoKIAkJCS8qIGl0J3MgYW4gdW5rbm93biBjaHVuayEgKi8KLQkJCWlmICgo
Y2gtPmNodW5rX3R5cGUgJiAweDQwKSAmJiAoc3RjYiAhPSBOVUxMKSkgeworCQkJaWYgKChjaC0+
Y2h1bmtfdHlwZSAmIDB4NDApICYmCisJCQkgICAgKHN0Y2IgIT0gTlVMTCkgJiYKKwkJCSAgICAo
U0NUUF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9TVEFURV9FTVBUWSkgJiYKKwkJCSAgICAoU0NU
UF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9TVEFURV9JTlVTRSkgJiYKKwkJCSAgICAoU0NUUF9H
RVRfU1RBVEUoc3RjYikgIT0gU0NUUF9TVEFURV9DT09LSUVfV0FJVCkpIHsKIAkJCQlzdHJ1Y3Qg
c2N0cF9nZW5fZXJyb3JfY2F1c2UgKmNhdXNlOwogCQkJCWludCBsZW47CiAKQEAgLTU3MTcsNyAr
NTc0OSw3IEBAIHNjdHBfY29tbW9uX2lucHV0X3Byb2Nlc3Npbmcoc3RydWN0IG1idWYgKiptbSwg
aW50IGlwaGxlbiwgaW50IG9mZnNldCwgaW50IGxlbmd0CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCBzY3RwaGRyICpzaCwgc3RydWN0IHNjdHBfY2h1bmtoZHIgKmNoLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGNvbXB1dGVfY3JjLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50OF90IGVjbl9iaXRzLAotI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBtZmxvd3R5cGUsIHVpbnQz
Ml90IG1mbG93aWQsIHVpbnQxNl90IGZpYm51bSwKICNlbmRpZgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50MzJfdCB2cmZfaWQsIHVpbnQxNl90IHBvcnQpCkBAIC01NzMxLDYgKzU3
NjMsOSBAQCBzY3RwX2NvbW1vbl9pbnB1dF9wcm9jZXNzaW5nKHN0cnVjdCBtYnVmICoqbW0sIGlu
dCBpcGhsZW4sIGludCBvZmZzZXQsIGludCBsZW5ndAogCXN0cnVjdCBzY3RwX2lucGNiICppbnAg
PSBOVUxMLCAqaW5wX2RlY3IgPSBOVUxMOwogCXN0cnVjdCBzY3RwX3RjYiAqc3RjYiA9IE5VTEw7
CiAJc3RydWN0IHNjdHBfbmV0cyAqbmV0ID0gTlVMTDsKKyNpZiBkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCisJc3RydWN0IHNvY2tldCAqdXBjYWxsX3NvY2tldCA9IE5VTEw7CisjZW5kaWYKIAogCVND
VFBfU1RBVF9JTkNSKHNjdHBzX3JlY3ZkYXRhZ3JhbXMpOwogI2lmZGVmIFNDVFBfQVVESVRJTkdf
RU5BQkxFRApAQCAtNTc2NiwxMSArNTgwMSwxMiBAQCBzY3RwX2NvbW1vbl9pbnB1dF9wcm9jZXNz
aW5nKHN0cnVjdCBtYnVmICoqbW0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsIGludCBsZW5ndAog
CQkJCW5ldC0+cG9ydCA9IHBvcnQ7CiAJCQl9CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAJCQlpZiAobmV0ICE9IE5VTEwpIHsKIAkJCQluZXQtPmZsb3d0eXBlID0gbWZsb3d0eXBlOwog
CQkJCW5ldC0+Zmxvd2lkID0gbWZsb3dpZDsKIAkJCX0KKwkJCVNDVFBfUFJPQkU1KHJlY2VpdmUs
IE5VTEwsIHN0Y2IsIG0sIHN0Y2IsIHNoKTsKICNlbmRpZgogCQkJaWYgKChpbnAgIT0gTlVMTCkg
JiYgKHN0Y2IgIT0gTlVMTCkpIHsKIAkJCQlzY3RwX3NlbmRfcGFja2V0X2Ryb3BwZWQoc3RjYiwg
bmV0LCBtLCBsZW5ndGgsIGlwaGxlbiwgMSk7CkBAIC01ODA3LDIyICs1ODQzLDI1IEBAIHNjdHBf
Y29tbW9uX2lucHV0X3Byb2Nlc3Npbmcoc3RydWN0IG1idWYgKiptbSwgaW50IGlwaGxlbiwgaW50
IG9mZnNldCwgaW50IGxlbmd0CiAJCW5ldC0+cG9ydCA9IHBvcnQ7CiAJfQogI2VuZGlmCi0jaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogCWlmIChuZXQgIT0gTlVMTCkgewogCQluZXQtPmZsb3d0eXBlID0g
bWZsb3d0eXBlOwogCQluZXQtPmZsb3dpZCA9IG1mbG93aWQ7CiAJfQogI2VuZGlmCiAJaWYgKGlu
cCA9PSBOVUxMKSB7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKKwkJU0NUUF9QUk9CRTUocmVjZWl2ZSwgTlVMTCwgc3RjYiwgbSwgc3RjYiwgc2gp
OworI2VuZGlmCiAJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX25vcG9ydCk7Ci0jaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgKCgoX19GcmVlQlNEX3ZlcnNpb24gPCA5MDAwMDApICYmIChfX0ZyZWVC
U0RfdmVyc2lvbiA+PSA4MDQwMDApKSB8fCAoX19GcmVlQlNEX3ZlcnNpb24gPiA5MDAwMDApKQor
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCWlm
IChiYWRwb3J0X2JhbmRsaW0oQkFORExJTV9TQ1RQX09PVEIpIDwgMCkgewogCQkJZ290byBvdXQ7
CiAJCX0KICNlbmRpZgogCQlpZiAoY2gtPmNodW5rX3R5cGUgPT0gU0NUUF9TSFVURE9XTl9BQ0sp
IHsKIAkJCXNjdHBfc2VuZF9zaHV0ZG93bl9jb21wbGV0ZTIoc3JjLCBkc3QsIHNoLAotI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKIAkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWZsb3d0eXBl
LCBtZmxvd2lkLCBmaWJudW0sCiAjZW5kaWYKIAkJCSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdnJmX2lkLCBwb3J0KTsKQEAgLTU4MzksNyArNTg3OCw3IEBAIHNjdHBfY29tbW9uX2lucHV0
X3Byb2Nlc3Npbmcoc3RydWN0IG1idWYgKiptbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwgaW50
IGxlbmd0CiAJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3V0IG9mIHRoZSBibHVl
Iik7CiAJCQkJc2N0cF9zZW5kX2Fib3J0KG0sIGlwaGxlbiwgc3JjLCBkc3QsCiAJCQkJICAgICAg
ICAgICAgICAgIHNoLCAwLCBvcF9lcnIsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCSAgICAg
ICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQsIGZpYm51bSwKICNlbmRpZgogCQkJCSAgICAg
ICAgICAgICAgICB2cmZfaWQsIHBvcnQpOwpAQCAtNTg2OCwyNSArNTkwNyw0MSBAQCBzY3RwX2Nv
bW1vbl9pbnB1dF9wcm9jZXNzaW5nKHN0cnVjdCBtYnVmICoqbW0sIGludCBpcGhsZW4sIGludCBv
ZmZzZXQsIGludCBsZW5ndAogCQkJICovCiAJCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CiAJCQlz
dGNiID0gTlVMTDsKLQkJCXNucHJpbnRmKG1zZywgc2l6ZW9mKG1zZyksICJPT1RCLCAlczolZCBh
dCAlcyIsIF9fRklMRV9fLCBfX0xJTkVfXywgX19mdW5jX18pOworI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQlTQ1RQX1BST0JFNShyZWNlaXZl
LCBOVUxMLCBzdGNiLCBtLCBzdGNiLCBzaCk7CisjZW5kaWYKKwkJCVNDVFBfU05QUklOVEYobXNn
LCBzaXplb2YobXNnKSwgIk9PVEIsICVzOiVkIGF0ICVzIiwgX19GSUxFX18sIF9fTElORV9fLCBf
X2Z1bmNfXyk7CiAJCQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBfQkFTRV9TWVND
VEwoc2N0cF9kaWFnX2luZm9fY29kZSksCiAJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1zZyk7CiAJCQlzY3RwX2hhbmRsZV9vb3RiKG0sIGlwaGxlbiwgb2Zmc2V0LCBzcmMsIGRzdCwg
c2gsIGlucCwgb3BfZXJyLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCSAgICAgICAgICAgICAg
ICAgbWZsb3d0eXBlLCBtZmxvd2lkLCBpbnAtPmZpYm51bSwKICNlbmRpZgogCQkJICAgICAgICAg
ICAgICAgICB2cmZfaWQsIHBvcnQpOwogCQkJZ290byBvdXQ7CiAJCX0KLQogCX0KKyNpZiBkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCisJaWYgKChzdGNiICE9IE5VTEwpICYmCisJICAgICEoc3RjYi0+
c2N0cF9lcC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1NPQ0tFVF9HT05FKSAmJgorCSAg
ICAoc3RjYi0+c2N0cF9zb2NrZXQgIT0gTlVMTCkpIHsKKwkJaWYgKHN0Y2ItPnNjdHBfc29ja2V0
LT5zb19oZWFkICE9IE5VTEwpIHsKKwkJCXVwY2FsbF9zb2NrZXQgPSBzdGNiLT5zY3RwX3NvY2tl
dC0+c29faGVhZDsKKwkJfSBlbHNlIHsKKwkJCXVwY2FsbF9zb2NrZXQgPSBzdGNiLT5zY3RwX3Nv
Y2tldDsKKwkJfQorCQlTT0NLX0xPQ0sodXBjYWxsX3NvY2tldCk7CisJCXNvcmVmKHVwY2FsbF9z
b2NrZXQpOworCQlTT0NLX1VOTE9DSyh1cGNhbGxfc29ja2V0KTsKKwl9CisjZW5kaWYKIAlpZiAo
SVNfU0NUUF9DT05UUk9MKGNoKSkgewogCQkvKiBwcm9jZXNzIHRoZSBjb250cm9sIHBvcnRpb24g
b2YgdGhlIFNDVFAgcGFja2V0ICovCiAJCS8qIHNhX2lnbm9yZSBOT19OVUxMX0NISyAqLwogCQlz
dGNiID0gc2N0cF9wcm9jZXNzX2NvbnRyb2wobSwgaXBobGVuLCAmb2Zmc2V0LCBsZW5ndGgsCiAJ
CSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMsIGRzdCwgc2gsIGNoLAogCQkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5wLCBzdGNiLCAmbmV0LCAmZndkX3Rzbl9zZWVuLAotI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1mbG93dHlw
ZSwgbWZsb3dpZCwgZmlibnVtLAogI2VuZGlmCiAJCSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2cmZfaWQsIHBvcnQpOwpAQCAtNTkyNywxNiArNTk4MiwyMiBAQCBzY3RwX2NvbW1vbl9pbnB1
dF9wcm9jZXNzaW5nKHN0cnVjdCBtYnVmICoqbW0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsIGlu
dCBsZW5ndAogCQlpZiAoKHN0Y2IgIT0gTlVMTCkgJiYKIAkJICAgIHNjdHBfYXV0aF9pc19yZXF1
aXJlZF9jaHVuayhTQ1RQX0RBVEEsIHN0Y2ItPmFzb2MubG9jYWxfYXV0aF9jaHVua3MpKSB7CiAJ
CQkvKiAic2lsZW50bHkiIGlnbm9yZSAqLworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQlTQ1RQX1BST0JFNShyZWNlaXZlLCBOVUxMLCBzdGNi
LCBtLCBzdGNiLCBzaCk7CisjZW5kaWYKIAkJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3JlY3ZhdXRo
bWlzc2luZyk7CiAJCQlnb3RvIG91dDsKIAkJfQogCQlpZiAoc3RjYiA9PSBOVUxMKSB7CiAJCQkv
KiBvdXQgb2YgdGhlIGJsdWUgREFUQSBjaHVuayAqLwotCQkJc25wcmludGYobXNnLCBzaXplb2Yo
bXNnKSwgIk9PVEIsICVzOiVkIGF0ICVzIiwgX19GSUxFX18sIF9fTElORV9fLCBfX2Z1bmNfXyk7
CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJ
CVNDVFBfUFJPQkU1KHJlY2VpdmUsIE5VTEwsIE5VTEwsIG0sIE5VTEwsIHNoKTsKKyNlbmRpZgor
CQkJU0NUUF9TTlBSSU5URihtc2csIHNpemVvZihtc2cpLCAiT09UQiwgJXM6JWQgYXQgJXMiLCBf
X0ZJTEVfXywgX19MSU5FX18sIF9fZnVuY19fKTsKIAkJCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVf
Y2F1c2UoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2RpYWdfaW5mb19jb2RlKSwKIAkJCSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbXNnKTsKIAkJCXNjdHBfaGFuZGxlX29vdGIobSwgaXBobGVu
LCBvZmZzZXQsIHNyYywgZHN0LCBzaCwgaW5wLCBvcF9lcnIsCi0jaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCQkJICAgICAgICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQsIGZpYm51bSwKICNlbmRp
ZgogCQkJCQkgdnJmX2lkLCBwb3J0KTsKQEAgLTU5NDQsMTEgKzYwMDUsMTcgQEAgc2N0cF9jb21t
b25faW5wdXRfcHJvY2Vzc2luZyhzdHJ1Y3QgbWJ1ZiAqKm1tLCBpbnQgaXBobGVuLCBpbnQgb2Zm
c2V0LCBpbnQgbGVuZ3QKIAkJfQogCQlpZiAoc3RjYi0+YXNvYy5teV92dGFnICE9IG50b2hsKHNo
LT52X3RhZykpIHsKIAkJCS8qIHZfdGFnIG1pc21hdGNoISAqLworI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQlTQ1RQX1BST0JFNShyZWNlaXZl
LCBOVUxMLCBzdGNiLCBtLCBzdGNiLCBzaCk7CisjZW5kaWYKIAkJCVNDVFBfU1RBVF9JTkNSKHNj
dHBzX2JhZHZ0YWcpOwogCQkJZ290byBvdXQ7CiAJCX0KIAl9CiAKKyNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCVNDVFBfUFJPQkU1KHJlY2VpdmUs
IE5VTEwsIHN0Y2IsIG0sIHN0Y2IsIHNoKTsKKyNlbmRpZgogCWlmIChzdGNiID09IE5VTEwpIHsK
IAkJLyoKIAkJICogbm8gdmFsaWQgVENCIGZvciB0aGlzIHBhY2tldCwgb3Igd2UgZm91bmQgaXQn
cyBhIGJhZApAQCAtNTk1Nyw2ICs2MDI0LDIwIEBAIHNjdHBfY29tbW9uX2lucHV0X3Byb2Nlc3Np
bmcoc3RydWN0IG1idWYgKiptbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwgaW50IGxlbmd0CiAJ
CSAqLwogCQlnb3RvIG91dDsKIAl9CisjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCWlmICgo
dXBjYWxsX3NvY2tldCA9PSBOVUxMKSAmJgorCSAgICAhKHN0Y2ItPnNjdHBfZXAtPnNjdHBfZmxh
Z3MgJiBTQ1RQX1BDQl9GTEFHU19TT0NLRVRfR09ORSkgJiYKKwkgICAgKHN0Y2ItPnNjdHBfc29j
a2V0ICE9IE5VTEwpKSB7CisJCWlmIChzdGNiLT5zY3RwX3NvY2tldC0+c29faGVhZCAhPSBOVUxM
KSB7CisJCQl1cGNhbGxfc29ja2V0ID0gc3RjYi0+c2N0cF9zb2NrZXQtPnNvX2hlYWQ7CisJCX0g
ZWxzZSB7CisJCQl1cGNhbGxfc29ja2V0ID0gc3RjYi0+c2N0cF9zb2NrZXQ7CisJCX0KKwkJU09D
S19MT0NLKHVwY2FsbF9zb2NrZXQpOworCQlzb3JlZih1cGNhbGxfc29ja2V0KTsKKwkJU09DS19V
TkxPQ0sodXBjYWxsX3NvY2tldCk7CisJfQorI2VuZGlmCiAKIAkvKgogCSAqIERBVEEgY2h1bmsg
cHJvY2Vzc2luZwpAQCAtNTk4NSw3ICs2MDY2LDcgQEAgc2N0cF9jb21tb25faW5wdXRfcHJvY2Vz
c2luZyhzdHJ1Y3QgbWJ1ZiAqKm1tLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LCBpbnQgbGVuZ3QK
IAkJICogbm90IGdldCBoZXJlIHVubGVzcyB3ZSByZWFsbHkgZGlkIGhhdmUgYSB0YWcsIHNvIHdl
IGRvbid0CiAJCSAqIGFib3J0IGlmIHRoaXMgaGFwcGVucywganVzdCBkdW1wIHRoZSBjaHVuayBz
aWxlbnRseS4KIAkJICovCi0JCXN3aXRjaCAoU0NUUF9HRVRfU1RBVEUoJnN0Y2ItPmFzb2MpKSB7
CisJCXN3aXRjaCAoU0NUUF9HRVRfU1RBVEUoc3RjYikpIHsKIAkJY2FzZSBTQ1RQX1NUQVRFX0NP
T0tJRV9FQ0hPRUQ6CiAJCQkvKgogCQkJICogd2UgY29uc2lkZXIgZGF0YSB3aXRoIHZhbGlkIHRh
Z3MgaW4gdGhpcyBzdGF0ZQpAQCAtNTk5OCwxMSArNjA3OSwxMSBAQCBzY3RwX2NvbW1vbl9pbnB1
dF9wcm9jZXNzaW5nKHN0cnVjdCBtYnVmICoqbW0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsIGlu
dCBsZW5ndAogCQkJLyoKIAkJCSAqIFdlIGNvbnNpZGVyIE9PVEIgYW55IGRhdGEgc2VudCBkdXJp
bmcgYXNvYyBzZXR1cC4KIAkJCSAqLwotCQkJc25wcmludGYobXNnLCBzaXplb2YobXNnKSwgIk9P
VEIsICVzOiVkIGF0ICVzIiwgX19GSUxFX18sIF9fTElORV9fLCBfX2Z1bmNfXyk7CisJCQlTQ1RQ
X1NOUFJJTlRGKG1zZywgc2l6ZW9mKG1zZyksICJPT1RCLCAlczolZCBhdCAlcyIsIF9fRklMRV9f
LCBfX0xJTkVfXywgX19mdW5jX18pOwogCQkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShT
Q1RQX0JBU0VfU1lTQ1RMKHNjdHBfZGlhZ19pbmZvX2NvZGUpLAogCQkJICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtc2cpOwogCQkJc2N0cF9oYW5kbGVfb290YihtLCBpcGhsZW4sIG9mZnNl
dCwgc3JjLCBkc3QsIHNoLCBpbnAsIG9wX2VyciwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQor
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkg
ICAgICAgICAgICAgICAgIG1mbG93dHlwZSwgbWZsb3dpZCwgaW5wLT5maWJudW0sCiAjZW5kaWYK
IAkJCQkJIHZyZl9pZCwgcG9ydCk7CkBAIC02MDgwLDkgKzYxNjEsOCBAQCB0cmlnZ2VyX3NlbmQ6
CiAJaWYgKCFUQUlMUV9FTVBUWSgmc3RjYi0+YXNvYy5hc2NvbmZfc2VuZF9xdWV1ZSkgfHwKIAkg
ICAgY250X2N0cmxfcmVhZHkgfHwKIAkgICAgc3RjYi0+YXNvYy50cmlnZ2VyX3Jlc2V0IHx8Ci0J
ICAgICgodW5fc2VudCkgJiYKLQkgICAgIChzdGNiLT5hc29jLnBlZXJzX3J3bmQgPiAwIHx8Ci0J
ICAgICAgKHN0Y2ItPmFzb2MucGVlcnNfcnduZCA8PSAwICYmIHN0Y2ItPmFzb2MudG90YWxfZmxp
Z2h0ID09IDApKSkpIHsKKwkgICAgKCh1bl9zZW50ID4gMCkgJiYKKwkgICAgIChzdGNiLT5hc29j
LnBlZXJzX3J3bmQgPiAwIHx8IHN0Y2ItPmFzb2MudG90YWxfZmxpZ2h0ID09IDApKSkgewogCQlT
Q1RQREJHKFNDVFBfREVCVUdfSU5QVVQzLCAiQ2FsbGluZyBjaHVuayBPVVRQVVRcbiIpOwogCQlz
Y3RwX2NodW5rX291dHB1dChpbnAsIHN0Y2IsIFNDVFBfT1VUUFVUX0ZST01fQ09OVFJPTF9QUk9D
LCBTQ1RQX1NPX05PVF9MT0NLRUQpOwogCQlTQ1RQREJHKFNDVFBfREVCVUdfSU5QVVQzLCAiY2h1
bmsgT1VUUFVUIHJldHVybnNcbiIpOwpAQCAtNjA5NSw2ICs2MTc1LDIwIEBAIHRyaWdnZXJfc2Vu
ZDoKIAlpZiAoc3RjYiAhPSBOVUxMKSB7CiAJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKIAl9Cisj
aWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCWlmICh1cGNhbGxfc29ja2V0ICE9IE5VTEwpIHsK
KwkJaWYgKHVwY2FsbF9zb2NrZXQtPnNvX3VwY2FsbCAhPSBOVUxMKSB7CisJCQlpZiAoc29yZWFk
YWJsZSh1cGNhbGxfc29ja2V0KSB8fAorCQkJICAgIHNvd3JpdGVhYmxlKHVwY2FsbF9zb2NrZXQp
IHx8CisJCQkgICAgdXBjYWxsX3NvY2tldC0+c29fZXJyb3IpIHsKKwkJCQkoKnVwY2FsbF9zb2Nr
ZXQtPnNvX3VwY2FsbCkodXBjYWxsX3NvY2tldCwgdXBjYWxsX3NvY2tldC0+c29fdXBjYWxsYXJn
LCBNX05PV0FJVCk7CisJCQl9CisJCX0KKwkJQUNDRVBUX0xPQ0soKTsKKwkJU09DS19MT0NLKHVw
Y2FsbF9zb2NrZXQpOworCQlzb3JlbGUodXBjYWxsX3NvY2tldCk7CisJfQorI2VuZGlmCiAJaWYg
KGlucF9kZWNyICE9IE5VTEwpIHsKIAkJLyogcmVkdWNlIHJlZi1jb3VudCAqLwogCQlTQ1RQX0lO
UF9XTE9DSyhpbnBfZGVjcik7CkBAIC02MTA2LDIxICs2MjAwLDggQEAgdHJpZ2dlcl9zZW5kOgog
CiAjaWZkZWYgSU5FVAogI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi0jaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18p
CiB2b2lkCiBzY3RwX2lucHV0X3dpdGhfcG9ydChzdHJ1Y3QgbWJ1ZiAqaV9wYWssIGludCBvZmYs
IHVpbnQxNl90IHBvcnQpCi0jZWxpZiBkZWZpbmVkKF9fUGFuZGFfXykKLXZvaWQKLXNjdHBfaW5w
dXQocGFraGFuZGxlX3R5cGUgaV9wYWspCi0jZWxzZQotdm9pZAotI2lmIF9fU1REQ19fCi1zY3Rw
X2lucHV0KHN0cnVjdCBtYnVmICppX3BhaywuLi4pCi0jZWxzZQotc2N0cF9pbnB1dChpX3Bhaywg
dmFfYWxpc3QpCi0Jc3RydWN0IG1idWYgKmlfcGFrOwotI2VuZGlmCi0jZW5kaWYKIHsKIAlzdHJ1
Y3QgbWJ1ZiAqbTsKIAlpbnQgaXBobGVuOwpAQCAtNjEzMiwzMCArNjIxMywyMSBAQCBzY3RwX2lu
cHV0KGlfcGFrLCB2YV9hbGlzdCkKIAlzdHJ1Y3Qgc2N0cF9jaHVua2hkciAqY2g7CiAJaW50IGxl
bmd0aCwgb2Zmc2V0OwogCXVpbnQ4X3QgY29tcHV0ZV9jcmM7Ci0jaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCXVpbnQzMl90IG1mbG93aWQ7CiAJdWludDhfdCBtZmxvd3R5cGU7CiAJdWludDE2X3QgZmli
bnVtOwogI2VuZGlmCi0jaWYgIShkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQ
TEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykpCisjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCXVpbnQxNl90IHBvcnQgPSAwOwogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKF9fUGFuZGFfXykK
LQkvKiBUaGlzIGlzIEV2aWwsIGJ1dCBpdHMgdGhlIG9ubHkgd2F5IHRvIG1ha2UgcGFuZGEgd29y
ayByaWdodC4gKi8KLQlpcGhsZW4gPSBzaXplb2Yoc3RydWN0IGlwKTsKLSNlbHNlCiAJaXBobGVu
ID0gb2ZmOwotI2VuZGlmCiAJaWYgKFNDVFBfR0VUX1BLVF9WUkZJRChpX3BhaywgdnJmX2lkKSkg
ewogCQlTQ1RQX1JFTEVBU0VfUEtUKGlfcGFrKTsKIAkJcmV0dXJuOwogCX0KIAltID0gU0NUUF9I
RUFERVJfVE9fQ0hBSU4oaV9wYWspOwotI2lmZGVmIF9fUGFuZGFfXwotCVNDVFBfREVUQUNIX0hF
QURFUl9GUk9NX0NIQUlOKGlfcGFrKTsKLQkodm9pZClTQ1RQX1JFTEVBU0VfSEVBREVSKGlfcGFr
KTsKLSNlbmRpZgogI2lmZGVmIFNDVFBfTUJVRl9MT0dHSU5HCiAJLyogTG9nIGluIGFueSBpbnB1
dCBtYnVmcyAqLwogCWlmIChTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbG9nZ2luZ19sZXZlbCkgJiBT
Q1RQX01CVUZfTE9HR0lOR19FTkFCTEUpIHsKQEAgLTYxNjcsMjggKzYyMzksMTQgQEAgc2N0cF9p
bnB1dChpX3BhaywgdmFfYWxpc3QpCiAJCXNjdHBfcGFja2V0X2xvZyhtKTsKIAl9CiAjZW5kaWYK
LSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQotI2lmIF9fRnJlZUJTRF92ZXJzaW9uID4gMTAwMDA0
OQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJ
U0NUUERCRyhTQ1RQX0RFQlVHX0NSQ09GRkxPQUQsCiAJICAgICAgICAic2N0cF9pbnB1dCgpOiBQ
YWNrZXQgb2YgbGVuZ3RoICVkIHJlY2VpdmVkIG9uICVzIHdpdGggY3N1bV9mbGFncyAweCViLlxu
IiwKIAkgICAgICAgIG0tPm1fcGt0aGRyLmxlbiwKIAkgICAgICAgIGlmX25hbWUobS0+bV9wa3Ro
ZHIucmN2aWYpLAogCSAgICAgICAgKGludCltLT5tX3BrdGhkci5jc3VtX2ZsYWdzLCBDU1VNX0JJ
VFMpOwotI2VsaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAwMDAwCi0JU0NUUERCRyhTQ1RQX0RF
QlVHX0NSQ09GRkxPQUQsCi0JICAgICAgICAic2N0cF9pbnB1dCgpOiBQYWNrZXQgb2YgbGVuZ3Ro
ICVkIHJlY2VpdmVkIG9uICVzIHdpdGggY3N1bV9mbGFncyAweCV4LlxuIiwKLQkgICAgICAgIG0t
Pm1fcGt0aGRyLmxlbiwKLQkgICAgICAgIGlmX25hbWUobS0+bV9wa3RoZHIucmN2aWYpLAotCSAg
ICAgICAgbS0+bV9wa3RoZHIuY3N1bV9mbGFncyk7Ci0jZWxzZQotCVNDVFBEQkcoU0NUUF9ERUJV
R19DUkNPRkZMT0FELAotCSAgICAgICAgInNjdHBfaW5wdXQoKTogUGFja2V0IG9mIGxlbmd0aCAl
ZCByZWNlaXZlZCBvbiAlcyB3aXRoIGNzdW1fZmxhZ3MgMHgleC5cbiIsCi0JICAgICAgICBtLT5t
X3BrdGhkci5sZW4sCi0JICAgICAgICBtLT5tX3BrdGhkci5yY3ZpZi0+aWZfeG5hbWUsCi0JICAg
ICAgICBtLT5tX3BrdGhkci5jc3VtX2ZsYWdzKTsKLSNlbmRpZgogI2VuZGlmCi0jaWYgZGVmaW5l
ZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJU0NUUERCRyhTQ1RQX0RFQlVHX0NSQ09GRkxPQUQsCiAJICAgICAgICAic2N0cF9p
bnB1dCgpOiBQYWNrZXQgb2YgbGVuZ3RoICVkIHJlY2VpdmVkIG9uICVzJWQgd2l0aCBjc3VtX2Zs
YWdzIDB4JXguXG4iLAogCSAgICAgICAgbS0+bV9wa3RoZHIubGVuLApAQCAtNjE5NiwxNCArNjI1
NCwxNCBAQCBzY3RwX2lucHV0KGlfcGFrLCB2YV9hbGlzdCkKIAkgICAgICAgIG0tPm1fcGt0aGRy
LnJjdmlmLT5pZl91bml0LAogCSAgICAgICAgbS0+bV9wa3RoZHIuY3N1bV9mbGFncyk7CiAjZW5k
aWYKLSNpZiBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCVNDVFBEQkcoU0NUUF9ERUJVR19DUkNPRkZMT0FELAogCSAg
ICAgICAgInNjdHBfaW5wdXQoKTogUGFja2V0IG9mIGxlbmd0aCAlZCByZWNlaXZlZCBvbiAlcyB3
aXRoIGNzdW1fZmxhZ3MgMHgleC5cbiIsCiAJICAgICAgICBtLT5tX3BrdGhkci5sZW4sCiAJICAg
ICAgICBtLT5tX3BrdGhkci5yY3ZpZi0+aWZfeG5hbWUsCiAJICAgICAgICBtLT5tX3BrdGhkci5j
c3VtX2ZsYWdzKTsKICNlbmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAltZmxvd2lkID0gbS0+
bV9wa3RoZHIuZmxvd2lkOwogCW1mbG93dHlwZSA9IE1fSEFTSFRZUEVfR0VUKG0pOwogCWZpYm51
bSA9IE1fR0VURklCKG0pOwpAQCAtNjIzNiwyNiArNjI5NCwyMiBAQCBzY3RwX2lucHV0KGlfcGFr
LCB2YV9hbGlzdCkKICNlbmRpZgogCWRzdC5zaW5fcG9ydCA9IHNoLT5kZXN0X3BvcnQ7CiAJZHN0
LnNpbl9hZGRyID0gaXAtPmlwX2RzdDsKLSNpZiBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmIGRl
ZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCU5UT0hTKGlwLT5pcF9s
ZW4pOwogI2VuZGlmCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19MaW51eCkgfHwgZGVmaW5l
ZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX19saW51eF9fKSB8fCAoZGVm
aW5lZChfV0lOMzIpICYmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAJaXAtPmlwX2xlbiA9IG50
b2hzKGlwLT5pcF9sZW4pOwogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKLSNpZiBf
X0ZyZWVCU0RfdmVyc2lvbiA+PSAxMDAwMDAwCi0JbGVuZ3RoID0gbnRvaHMoaXAtPmlwX2xlbik7
CisjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmIGRlZmluZWQoX19saW51eF9fKSB8fCBk
ZWZpbmVkKF9XSU4zMikKKwlsZW5ndGggPSBpcC0+aXBfbGVuOwogI2Vsc2UKIAlsZW5ndGggPSBp
cC0+aXBfbGVuICsgaXBobGVuOwogI2VuZGlmCisjZWxpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQor
CWxlbmd0aCA9IG50b2hzKGlwLT5pcF9sZW4pOwogI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCiAJ
bGVuZ3RoID0gaXAtPmlwX2xlbiArIGlwaGxlbjsKLSNlbGlmIGRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0xpbnV4KSB8fCBkZWZpbmVkKF9fVXNlcnNw
YWNlX29zX1dpbmRvd3MpCi0JbGVuZ3RoID0gaXAtPmlwX2xlbjsKLSNlbHNlCi0JbGVuZ3RoID0g
aXAtPmlwX2xlbiArIGlwaGxlbjsKLSNlbmRpZgogI2Vsc2UKIAlsZW5ndGggPSBpcC0+aXBfbGVu
OwogI2VuZGlmCkBAIC02Mjc0LDcgKzYzMjgsNyBAQCBzY3RwX2lucHV0KGlfcGFrLCB2YV9hbGlz
dCkKIAkJZ290byBvdXQ7CiAJfQogCWVjbl9iaXRzID0gaXAtPmlwX3RvczsKLSNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDAwMDAKKyNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWlmIChtLT5tX3BrdGhk
ci5jc3VtX2ZsYWdzICYgQ1NVTV9TQ1RQX1ZBTElEKSB7CiAJCVNDVFBfU1RBVF9JTkNSKHNjdHBz
X3JlY3Zod2NyYyk7CiAJCWNvbXB1dGVfY3JjID0gMDsKQEAgLTYyOTYsNyArNjM1MCw3IEBAIHNj
dHBfaW5wdXQoaV9wYWssIHZhX2FsaXN0KQogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2gsIGNoLAogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZV9jcmMsCiAJICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlY25fYml0cywKLSNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQsIGZpYm51
bSwKICNlbmRpZgogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnJmX2lkLCBwb3J0KTsK
QEAgLTYzMDcsMTEgKzYzNjEsMTMgQEAgc2N0cF9pbnB1dChpX3BhaywgdmFfYWxpc3QpCiAJcmV0
dXJuOwogfQogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgZGVmaW5lZChTQ1RQX01DT1JF
X0lOUFVUKSAmJiBkZWZpbmVkKFNNUCkKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQorI2lmIGRlZmluZWQoU0NUUF9NQ09SRV9JTlBVVCkgJiYgZGVm
aW5lZChTTVApCiBleHRlcm4gaW50ICpzY3RwX2NwdWFycnk7CiAjZW5kaWYKKyNlbmRpZgogCi0j
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gMTEwMDAyMAor
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBpbnQK
IHNjdHBfaW5wdXQoc3RydWN0IG1idWYgKiptcCwgaW50ICpvZmZwLCBpbnQgcHJvdG8gU0NUUF9V
TlVTRUQpCiB7CkBAIC02MzI1LDcgKzYzODEsOCBAQCB2b2lkCiBzY3RwX2lucHV0KHN0cnVjdCBt
YnVmICptLCBpbnQgb2ZmKQogewogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
ZGVmaW5lZChTQ1RQX01DT1JFX0lOUFVUKSAmJiBkZWZpbmVkKFNNUCkKKyNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmIGRlZmluZWQoU0NUUF9N
Q09SRV9JTlBVVCkgJiYgZGVmaW5lZChTTVApCiAJaWYgKG1wX25jcHVzID4gMSkgewogCQlzdHJ1
Y3QgaXAgKmlwOwogCQlzdHJ1Y3Qgc2N0cGhkciAqc2g7CkBAIC02MzQzLDExICs2NDAwLDcgQEAg
c2N0cF9pbnB1dChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IG9mZikKIAkJCWlmIChTQ1RQX0JVRl9MRU4o
bSkgPCBvZmZzZXQpIHsKIAkJCQlpZiAoKG0gPSBtX3B1bGx1cChtLCBvZmZzZXQpKSA9PSBOVUxM
KSB7CiAJCQkJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX2hkcm9wcyk7Ci0jaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gMTEwMDAyMAogCQkJCQlyZXR1cm4gKElQ
UFJPVE9fRE9ORSk7Ci0jZWxzZQotCQkJCQlyZXR1cm47Ci0jZW5kaWYKIAkJCQl9CiAJCQl9CiAJ
CQlpcCA9IG10b2QobSwgc3RydWN0IGlwICopOwpAQCAtNjM1OSwxNSArNjQxMiwxMiBAQCBzY3Rw
X2lucHV0KHN0cnVjdCBtYnVmICptLCBpbnQgb2ZmKQogCQl9CiAJCWNwdV90b191c2UgPSBzY3Rw
X2NwdWFycnlbZmxvd2lkICUgbXBfbmNwdXNdOwogCQlzY3RwX3F1ZXVlX3RvX21jb3JlKG0sIG9m
ZiwgY3B1X3RvX3VzZSk7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3Zl
cnNpb24gPj0gMTEwMDAyMAogCQlyZXR1cm4gKElQUFJPVE9fRE9ORSk7Ci0jZWxzZQotCQlyZXR1
cm47Ci0jZW5kaWYKIAl9CisjZW5kaWYKICNlbmRpZgogCXNjdHBfaW5wdXRfd2l0aF9wb3J0KG0s
IG9mZiwgMCk7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24g
Pj0gMTEwMDAyMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJcmV0dXJuIChJUFBST1RPX0RPTkUpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNy
c2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9pbnB1dC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0
cGxpYi9uZXRpbmV0L3NjdHBfaW5wdXQuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1
CmluZGV4IDJkMDFiZWIwOGRlZC4uNTVhMTc0YmFlZmFmCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBs
aWIvbmV0aW5ldC9zY3RwX2lucHV0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0
L3NjdHBfaW5wdXQuaApAQCAtMzIsNyArMzIsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLSNpZmRlZiBfX0ZyZWVCU0RfXworI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+
CiBfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9pbnB1dC5oIDMyNjY3
MiAyMDE3LTEyLTA3IDIyOjE5OjA4WiB0dWV4ZW4gJCIpOwogI2VuZGlmCkBAIC00Nyw3ICs0Nyw3
IEBAIHNjdHBfY29tbW9uX2lucHV0X3Byb2Nlc3Npbmcoc3RydWN0IG1idWYgKiosIGludCwgaW50
LCBpbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY3RwaGRyICosIHN0
cnVjdCBzY3RwX2NodW5raGRyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4
X3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QsCi0jaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90LCB1aW50MzJfdCwg
dWludDE2X3QsCiAjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qs
IHVpbnQxNl90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3Rw
X2xvY2tfdXNlcnNwYWNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9sb2Nr
X3VzZXJzcGFjZS5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggN2I4YjBj
YmRkZDIyLi4wYWVkMzQ3NzBhYTgKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3Nj
dHBfbG9ja191c2Vyc3BhY2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0
cF9sb2NrX3VzZXJzcGFjZS5oCkBAIC0zMyw3ICszMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxzeXMvY2Rl
ZnMuaD4KIF9fRkJTRElEKCIkRnJlZUJTRCQiKTsKICNlbmRpZgpAQCAtNjgsNyArNjgsNyBAQCBf
X0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAjZGVmaW5lIFNDVFBfV1FfQUREUl9ERVNUUk9ZKCkKICNk
ZWZpbmUgU0NUUF9XUV9BRERSX0xPQ0soKQogI2RlZmluZSBTQ1RQX1dRX0FERFJfVU5MT0NLKCkK
LQorI2RlZmluZSBTQ1RQX1dRX0FERFJfTE9DS19BU1NFUlQoKQogCiAjZGVmaW5lIFNDVFBfSVBJ
X0FERFJfSU5JVCgpCiAjZGVmaW5lIFNDVFBfSVBJX0FERFJfREVTVFJPWSgpCkBAIC03NiwyMCAr
NzYsMTkgQEAgX19GQlNESUQoIiRGcmVlQlNEJCIpOwogI2RlZmluZSBTQ1RQX0lQSV9BRERSX1dM
T0NLKCkKICNkZWZpbmUgU0NUUF9JUElfQUREUl9SVU5MT0NLKCkKICNkZWZpbmUgU0NUUF9JUElf
QUREUl9XVU5MT0NLKCkKKyNkZWZpbmUgU0NUUF9JUElfQUREUl9MT0NLX0FTU0VSVCgpCisjZGVm
aW5lIFNDVFBfSVBJX0FERFJfV0xPQ0tfQVNTRVJUKCkKIAogI2RlZmluZSBTQ1RQX0lQSV9JVEVS
QVRPUl9XUV9JTklUKCkKICNkZWZpbmUgU0NUUF9JUElfSVRFUkFUT1JfV1FfREVTVFJPWSgpCiAj
ZGVmaW5lIFNDVFBfSVBJX0lURVJBVE9SX1dRX0xPQ0soKQogI2RlZmluZSBTQ1RQX0lQSV9JVEVS
QVRPUl9XUV9VTkxPQ0soKQogCi0KICNkZWZpbmUgU0NUUF9JUF9QS1RMT0dfSU5JVCgpCiAjZGVm
aW5lIFNDVFBfSVBfUEtUTE9HX0xPQ0soKQogI2RlZmluZSBTQ1RQX0lQX1BLVExPR19VTkxPQ0so
KQogI2RlZmluZSBTQ1RQX0lQX1BLVExPR19ERVNUUk9ZKCkKIAotCi0KICNkZWZpbmUgU0NUUF9J
TlBfUkVBRF9JTklUKF9pbnApCiAjZGVmaW5lIFNDVFBfSU5QX1JFQURfREVTVFJPWShfaW5wKQog
I2RlZmluZSBTQ1RQX0lOUF9SRUFEX0xPQ0soX2lucCkKQEAgLTEwMCw5ICs5OSwxMCBAQCBfX0ZC
U0RJRCgiJEZyZWVCU0QkIik7CiAjZGVmaW5lIFNDVFBfSU5QX0xPQ0tfREVTVFJPWShfaW5wKQog
I2RlZmluZSBTQ1RQX0FTT0NfQ1JFQVRFX0xPQ0tfREVTVFJPWShfaW5wKQogCi0KICNkZWZpbmUg
U0NUUF9JTlBfUkxPQ0soX2lucCkKICNkZWZpbmUgU0NUUF9JTlBfV0xPQ0soX2lucCkKKyNkZWZp
bmUgU0NUUF9JTlBfUkxPQ0tfQVNTRVJUKF9pbnApCisjZGVmaW5lIFNDVFBfSU5QX1dMT0NLX0FT
U0VSVChfaW5wKQogCiAjZGVmaW5lIFNDVFBfSU5QX0xPQ0tfQ09OVEVOREVEKF9pbnApICgwKSAv
KiBEb24ndCBrbm93IGlmIHRoaXMgaXMgcG9zc2libGUgKi8KIApAQCAtMjE0LDE0ICsyMTQsNiBA
QCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAJICAgICAgICB9IHdoaWxlICgwKQogCiAKLS8qIG5v
dCBzdXJlIGlmIF9fVXNlcnNwYWNlX18gbmVlZHMgdGhlc2UgKGJ1dCBjb3BpZWQgbm9uZXRoZWxl
c3MuLi4pICovCi0jaWYgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKLSNkZWZpbmUgU0NU
UF9JTlBfU08oc2N0cGlucCkJKHNjdHBpbnApLT5pcF9pbnAuaW5wLmlucF9zb2NrZXQKLSNkZWZp
bmUgU0NUUF9TT0NLRVRfTE9DSyhzbywgcmVmY250KQotI2RlZmluZSBTQ1RQX1NPQ0tFVF9VTkxP
Q0soc28sIHJlZmNudCkKLSNlbmRpZgotCi0KIC8qIHRoZXNlIHdlcmUgaW4gc2N0cF9sb2NrX2Vt
cHR5LmggYnV0IGFyZW4ndCBpbiBzY3RwX2xvY2tfYnNkLmggLi4uICovCiAjaWYgMAogI2RlZmlu
ZSBTQ1RQX0lQSV9BRERSX0xPQ0soKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9u
ZXRpbmV0L3NjdHBfb3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX29zLmgK
b2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCBiMzc0NmRkOTQ2ZjAuLmUwMWI5
NTc3N2EzYwotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9vcy5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX29zLmgKQEAgLTMyLDkgKzMyLDkgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZkZWYgX19GcmVl
QlNEX18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9u
ZXRpbmV0L3NjdHBfb3MuaCAyMzU4MjggMjAxMi0wNS0yMyAxMToyNjoyOFogdHVleGVuICQiKTsK
K19fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX29zLmggMzYxODcyIDIw
MjAtMDYtMDYgMTg6MjA6MDlaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAogI2lmbmRlZiBfTkVUSU5F
VF9TQ1RQX09TX0hfCkBAIC02NCw3ICs2NCw3IEBAIF9fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9z
eXMvbmV0aW5ldC9zY3RwX29zLmggMjM1ODI4IDIwMTItMDUtMjMgMTE6MjY6MjhaIHR1ZXhlCiAg
KiBTQ1RQX1pPTkVfREVTVFJPWSh6b25lKQogICovCiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAj
aW5jbHVkZSA8bmV0aW5ldC9zY3RwX29zX2JzZC5oPgogI2Vsc2UKICNkZWZpbmUgTU9EVUxFX0dM
T0JBTChfQikgKF9CKQpAQCAtNzQsMTUgKzc0LDExIEBAIF9fRkJTRElEKCIkRnJlZUJTRDogaGVh
ZC9zeXMvbmV0aW5ldC9zY3RwX29zLmggMjM1ODI4IDIwMTItMDUtMjMgMTE6MjY6MjhaIHR1ZXhl
CiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX29zX3VzZXJzcGFjZS5oPgogI2VuZGlmCiAKLSNpZiBk
ZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfb3NfbWFjb3N4Lmg+CiAjZW5kaWYK
IAotI2lmIGRlZmluZWQoX19QYW5kYV9fKQotI2luY2x1ZGUgPGlwL3NjdHAvc2N0cF9vc19pb3gu
aD4KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiBkZWZpbmVkKF9XSU4z
MikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfb3Nf
d2luZG93cy5oPgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0
aW5ldC9zY3RwX29zX3VzZXJzcGFjZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3Nj
dHBfb3NfdXNlcnNwYWNlLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA4
NjEzMzAxYWIwOGUuLjNhOTQwN2E4MjJiZQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGlu
ZXQvc2N0cF9vc191c2Vyc3BhY2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQv
c2N0cF9vc191c2Vyc3BhY2UuaApAQCAtNDMsMTIgKzQzLDEyIEBACiAKICNpbmNsdWRlIDxlcnJu
by5oPgogCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQo
X1dJTjMyKQogI2luY2x1ZGUgPHdpbnNvY2syLmg+CiAjaW5jbHVkZSA8d3MydGNwaXAuaD4KICNp
bmNsdWRlIDxpcGhscGFwaS5oPgotI2luY2x1ZGUgPE1zd3NvY2suaD4KLSNpbmNsdWRlIDxXaW5k
b3dzLmg+CisjaW5jbHVkZSA8bXN3c29jay5oPgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNs
dWRlICJ1c2VyX2Vudmlyb25tZW50LmgiCiB0eXBlZGVmIENSSVRJQ0FMX1NFQ1RJT04gdXNlcmxh
bmRfbXV0ZXhfdDsKICNpZiBXSU5WRVIgPCAweDA2MDAKQEAgLTgwLDMzICs4MCwzMCBAQCB0eXBl
ZGVmIEhBTkRMRSB1c2VybGFuZF90aHJlYWRfdDsKICNkZWZpbmUgSVBWRVJTSU9OICA0CiAjZGVm
aW5lIE1BWFRUTCAgICAgMjU1CiAvKiBWUzIwMTAgY29tZXMgd2l0aCBzdGRpbnQuaCAqLwotI2lm
IF9NU0NfVkVSID49IDE2MDAKKyNpZiAhZGVmaW5lZChfTVNDX1ZFUikgfHwgKF9NU0NfVkVSID49
IDE2MDApCiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjZWxzZQotI2RlZmluZSB1aW50NjRfdCAgIHVu
c2lnbmVkIF9faW50NjQKLSNkZWZpbmUgdWludDMyX3QgICB1bnNpZ25lZCBfX2ludDMyCi0jZGVm
aW5lIGludDMyX3QgICAgX19pbnQzMgotI2RlZmluZSB1aW50MTZfdCAgIHVuc2lnbmVkIF9faW50
MTYKLSNkZWZpbmUgaW50MTZfdCAgICBfX2ludDE2Ci0jZGVmaW5lIHVpbnQ4X3QgICAgdW5zaWdu
ZWQgX19pbnQ4Ci0jZGVmaW5lIGludDhfdCAgICAgX19pbnQ4Cit0eXBlZGVmIHVuc2lnbmVkIF9f
aW50NjQgdWludDY0X3Q7Cit0eXBlZGVmIHVuc2lnbmVkIF9faW50MzIgdWludDMyX3Q7Cit0eXBl
ZGVmIF9faW50MzIgICAgICAgICAgaW50MzJfdDsKK3R5cGVkZWYgdW5zaWduZWQgX19pbnQxNiB1
aW50MTZfdDsKK3R5cGVkZWYgX19pbnQxNiAgICAgICAgICBpbnQxNl90OwordHlwZWRlZiB1bnNp
Z25lZCBfX2ludDggIHVpbnQ4X3Q7Cit0eXBlZGVmIF9faW50OCAgICAgICAgICAgaW50OF90Owog
I2VuZGlmCiAjaWZuZGVmIF9TSVpFX1RfREVGSU5FRAotI2RlZmluZSBzaXplX3QgICAgIF9faW50
MzIKLSNlbmRpZgotI2RlZmluZSB1X2xvbmcgICAgIHVuc2lnbmVkIF9faW50NjQKLSNkZWZpbmUg
dV9pbnQgICAgICB1bnNpZ25lZCBfX2ludDMyCi0jZGVmaW5lIHVfaW50MzJfdCAgdW5zaWduZWQg
X19pbnQzMgotI2RlZmluZSB1X2ludDE2X3QgIHVuc2lnbmVkIF9faW50MTYKLSNkZWZpbmUgdV9p
bnQ4X3QgICB1bnNpZ25lZCBfX2ludDgKLSNkZWZpbmUgdV9jaGFyICAgICB1bnNpZ25lZCBjaGFy
Ci0jZGVmaW5lIG5fc2hvcnQgICAgdW5zaWduZWQgX19pbnQxNgotI2RlZmluZSB1X3Nob3J0ICAg
IHVuc2lnbmVkIF9faW50MTYKLSNkZWZpbmUgbl90aW1lICAgICB1bnNpZ25lZCBfX2ludDMyCi0j
ZGVmaW5lIHNhX2ZhbWlseV90IHVuc2lnbmVkIF9faW50OAotI2RlZmluZSBzc2l6ZV90ICAgIF9f
aW50NjQKKyN0eXBlZGVmIF9faW50MzIgICAgICAgICBzaXplX3Q7CisjZW5kaWYKK3R5cGVkZWYg
dW5zaWduZWQgX19pbnQzMiB1X2ludDsKK3R5cGVkZWYgdW5zaWduZWQgY2hhciAgICB1X2NoYXI7
Cit0eXBlZGVmIHVuc2lnbmVkIF9faW50MTYgdV9zaG9ydDsKK3R5cGVkZWYgdW5zaWduZWQgX19p
bnQ4ICBzYV9mYW1pbHlfdDsKKyNpZm5kZWYgX1NTSVpFX1RfREVGSU5FRAordHlwZWRlZiBfX2lu
dDY0ICAgICAgICAgIHNzaXplX3Q7CisjZW5kaWYKKyNpZiAhZGVmaW5lZChfX01JTkdXMzJfXykK
ICNkZWZpbmUgX19mdW5jX18JX19GVU5DVElPTl9fCi0KKyNlbmRpZgogI2lmbmRlZiBFV09VTERC
TE9DSwogI2RlZmluZSBFV09VTERCTE9DSyAgICAgICAgICAgICBXU0FFV09VTERCTE9DSwogI2Vu
ZGlmCkBAIC0yMjAsOSArMjE3LDE5IEBAIHR5cGVkZWYgY2hhciogY2FkZHJfdDsKIAogI2RlZmlu
ZSBiemVybyhidWYsIGxlbikgbWVtc2V0KGJ1ZiwgMCwgbGVuKQogI2RlZmluZSBiY29weShzcmNL
ZXksIGRzdEtleSwgbGVuKSBtZW1jcHkoZHN0S2V5LCBzcmNLZXksIGxlbikKLSNpZiBfTVNDX1ZF
UiA8IDE5MDAKLSNkZWZpbmUgc25wcmludGYoZGF0YSwgc2l6ZSwgZm9ybWF0LCAuLi4pIF9zbnBy
aW50Zl9zKGRhdGEsIHNpemUsIF9UUlVOQ0FURSwgZm9ybWF0LCBfX1ZBX0FSR1NfXykKKworI2lm
IGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA8IDE5MDApICYmICFkZWZpbmVkKF9fTUlO
R1czMl9fKQorI2RlZmluZSBTQ1RQX1NOUFJJTlRGKGRhdGEsIHNpemUsIGZvcm1hdCwgLi4uKSAJ
CQkJCVwKKwlpZiAoX3NucHJpbnRmX3MoZGF0YSwgc2l6ZSwgX1RSVU5DQVRFLCBmb3JtYXQsIF9f
VkFfQVJHU19fKSA8IDApIHsJXAorCQlkYXRhWzBdID0gJ1wwJzsJCQkJCQkJXAorCX0KKyNlbHNl
CisjZGVmaW5lIFNDVFBfU05QUklOVEYoZGF0YSwgLi4uKQkJCQkJCVwKKwlpZiAoc25wcmludGYo
ZGF0YSwgX19WQV9BUkdTX18pIDwgMCApIHsJCQkJCVwKKwkJZGF0YVswXSA9ICdcMCc7CQkJCQkJ
CVwKKwl9CiAjZW5kaWYKKwogI2RlZmluZSBpbmxpbmUgX19pbmxpbmUKICNkZWZpbmUgX19pbmxp
bmVfXyBfX2lubGluZQogI2RlZmluZQlNU0dfRU9SCQkweDgJCS8qIGRhdGEgY29tcGxldGVzIHJl
Y29yZCAqLwpAQCAtMjc2LDcgKzI4Myw3IEBAIHR5cGVkZWYgY2hhciogY2FkZHJfdDsKIAogI2Vs
c2UgLyogIWRlZmluZWQoVXNlcnNwYWNlX29zX1dpbmRvd3MpICovCiAjaW5jbHVkZSA8c3lzL3Nv
Y2tldC5oPgotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRHJhZ29uRmx5KSB8fCBkZWZpbmVk
KF9fVXNlcnNwYWNlX29zX0ZyZWVCU0QpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfTGludXgp
IHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfTmV0QlNEKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNl
X29zX09wZW5CU0QpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfTmFDbCkgfHwgZGVmaW5lZChf
X1VzZXJzcGFjZV9vc19GdWNoc2lhKQorI2lmIGRlZmluZWQoX19EcmFnb25GbHlfXykgfHwgZGVm
aW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX2xpbnV4X18pIHx8IGRlZmluZWQoX19OZXRC
U0RfXykgfHwgZGVmaW5lZChfX09wZW5CU0RfXykgfHwgZGVmaW5lZChfX25hdGl2ZV9jbGllbnRf
XykgfHwgZGVmaW5lZChfX0Z1Y2hzaWFfXykKICNpbmNsdWRlIDxwdGhyZWFkLmg+CiAjZW5kaWYK
IHR5cGVkZWYgcHRocmVhZF9tdXRleF90IHVzZXJsYW5kX211dGV4X3Q7CkBAIC0yODQsNyArMjkx
LDcgQEAgdHlwZWRlZiBwdGhyZWFkX2NvbmRfdCB1c2VybGFuZF9jb25kX3Q7CiB0eXBlZGVmIHB0
aHJlYWRfdCB1c2VybGFuZF90aHJlYWRfdDsKICNlbmRpZgogCi0jaWYgZGVmaW5lZChfX1VzZXJz
cGFjZV9vc19XaW5kb3dzKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX05hQ2wpCisjaWYgZGVm
aW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19uYXRpdmVfY2xpZW50X18pCiAKICNkZWZpbmUgSUZO
QU1TSVogNjQKIApAQCAtMzc4LDQzICszODUsOSBAQCBzdHJ1Y3QgaWZrcGkgewogCQlpbnQgaWZr
X3ZhbHVlOwogCX0gaWZrX2RhdGE7CiB9OwotCi1zdHJ1Y3QgaWZyZXEgewotCWNoYXIgICAgaWZy
X25hbWVbMTZdOwotCXVuaW9uIHsKLQkJc3RydWN0IHNvY2thZGRyIGlmcnVfYWRkcjsKLQkJc3Ry
dWN0IHNvY2thZGRyIGlmcnVfZHN0YWRkcjsKLQkJc3RydWN0IHNvY2thZGRyIGlmcnVfYnJvYWRh
ZGRyOwotCQlzaG9ydCAgaWZydV9mbGFnczsKLQkJaW50IGlmcnVfbWV0cmljOwotCQlpbnQgaWZy
dV9tdHU7Ci0JCWludCBpZnJ1X3BoeXM7Ci0JCWludCBpZnJ1X21lZGlhOwotCQlpbnQgICAgaWZy
dV9pbnR2YWw7Ci0JCWNoYXIqICBpZnJ1X2RhdGE7Ci0JCXN0cnVjdCBpZmRldm10dSBpZnJ1X2Rl
dm10dTsKLQkJc3RydWN0IGlma3BpICBpZnJ1X2twaTsKLQkJdWludDMyX3QgaWZydV93YWtlX2Zs
YWdzOwotCX0gaWZyX2lmcnU7Ci0jZGVmaW5lIGlmcl9hZGRyICAgICAgICBpZnJfaWZydS5pZnJ1
X2FkZHIKLSNkZWZpbmUgaWZyX2RzdGFkZHIgICAgIGlmcl9pZnJ1LmlmcnVfZHN0YWRkcgotI2Rl
ZmluZSBpZnJfYnJvYWRhZGRyICAgaWZyX2lmcnUuaWZydV9icm9hZGFkZHIKLSNkZWZpbmUgaWZy
X2ZsYWdzICAgICAgIGlmcl9pZnJ1LmlmcnVfZmxhZ3NbMF0KLSNkZWZpbmUgaWZyX3ByZXZmbGFn
cyAgIGlmcl9pZnJ1LmlmcnVfZmxhZ3NbMV0KLSNkZWZpbmUgaWZyX21ldHJpYyAgICAgIGlmcl9p
ZnJ1LmlmcnVfbWV0cmljCi0jZGVmaW5lIGlmcl9tdHUgICAgICAgICBpZnJfaWZydS5pZnJ1X210
dQotI2RlZmluZSBpZnJfcGh5cyAgICAgICAgaWZyX2lmcnUuaWZydV9waHlzCi0jZGVmaW5lIGlm
cl9tZWRpYSAgICAgICBpZnJfaWZydS5pZnJ1X21lZGlhCi0jZGVmaW5lIGlmcl9kYXRhICAgICAg
ICBpZnJfaWZydS5pZnJ1X2RhdGEKLSNkZWZpbmUgaWZyX2Rldm10dSAgICAgIGlmcl9pZnJ1Lmlm
cnVfZGV2bXR1Ci0jZGVmaW5lIGlmcl9pbnR2YWwgICAgICBpZnJfaWZydS5pZnJ1X2ludHZhbAot
I2RlZmluZSBpZnJfa3BpICAgICAgICAgaWZyX2lmcnUuaWZydV9rcGkKLSNkZWZpbmUgaWZyX3dh
a2VfZmxhZ3MgIGlmcl9pZnJ1LmlmcnVfd2FrZV9mbGFncwotfTsKLQogI2VuZGlmCiAKLSNpZiBk
ZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiBpbnQg
V2luX2dldGlmYWRkcnMoc3RydWN0IGlmYWRkcnMqKik7CiAjZGVmaW5lIGdldGlmYWRkcnMoaW50
ZXJmYWNlcykgIChpbnQpV2luX2dldGlmYWRkcnMoaW50ZXJmYWNlcykKIGludCB3aW5faWZfbmFt
ZXRvaW5kZXgoY29uc3QgY2hhciAqKTsKQEAgLTQyNSw5ICszOTgsOSBAQCBpbnQgd2luX2lmX25h
bWV0b2luZGV4KGNvbnN0IGNoYXIgKik7CiAjZGVmaW5lIG10eF91bmxvY2soYXJnMSkKICNkZWZp
bmUgbXR4X2Fzc2VydChhcmcxLGFyZzIpCiAjZGVmaW5lIE1BX09XTkVEIDcgLyogc3lzL211dGV4
LmggdHlwaWNhbGx5IG9uIEZyZWVCU0QgKi8KLSNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19G
cmVlQlNEKQorI2lmICFkZWZpbmVkKF9fRnJlZUJTRF9fKQogc3RydWN0IG10eCB7aW50IGR1bW15
O307Ci0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfTmV0QlNEKQorI2lmICFkZWZpbmVkKF9f
TmV0QlNEX18pCiBzdHJ1Y3Qgc2VsaW5mbyB7aW50IGR1bW15O307CiAjZW5kaWYKIHN0cnVjdCBz
eCB7aW50IGR1bW15O307CkBAIC00MzUsNiArNDA4LDcgQEAgc3RydWN0IHN4IHtpbnQgZHVtbXk7
fTsKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8
c3RkYm9vbC5oPgogLyogI2luY2x1ZGUgPHN5cy9wYXJhbS5oPiAgaW4gRnJlZUJTRCBkZWZpbmVz
IE1TSVpFICovCiAvKiAjaW5jbHVkZSA8c3lzL2t0ci5oPiAqLwogLyogI2luY2x1ZGUgPHN5cy9z
eXN0bS5oPiAqLwpAQCAtNDU3LDIyICs0MzEsMjIgQEAgc3RydWN0IHN4IHtpbnQgZHVtbXk7fTsK
ICNpbmNsdWRlIDx1c2VyX21idWYuaD4KIC8qICNpbmNsdWRlIDxzeXMvdWlvLmg+ICovCiAvKiAj
aW5jbHVkZSA8c3lzL2xvY2suaD4gKi8KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0Zy
ZWVCU0RfdmVyc2lvbiA+IDYwMjAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8c3lzL3J3bG9jay5oPgogI2VuZGlmCiAvKiAj
aW5jbHVkZSA8c3lzL2t0aHJlYWQuaD4gKi8KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBf
X0ZyZWVCU0RfdmVyc2lvbiA+IDYwMjAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8c3lzL3ByaXYuaD4KICNlbmRpZgogLyog
I2luY2x1ZGUgPHN5cy9yYW5kb20uaD4gKi8KICNpbmNsdWRlIDxsaW1pdHMuaD4KIC8qICNpbmNs
dWRlIDxtYWNoaW5lL2NwdS5oPiAqLwogCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19EYXJ3
aW4pCisjaWYgZGVmaW5lZChfX0FQUExFX18pCiAvKiB3YXMgYSAwIGJ5dGUgZmlsZS4gIG5lZWRl
ZCBmb3Igc3RydWN0cyBpZl9kYXRhKDY0KSBhbmQgbmV0X2V2ZW50X2RhdGEgKi8KICNpbmNsdWRl
IDxuZXQvaWZfdmFyLmg+CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0ZyZWVC
U0QpCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKICNpbmNsdWRlIDxuZXQvaWZfdHlwZXMuaD4K
IC8qICNpbmNsdWRlIDxuZXQvaWZfdmFyLmg+IHdhcyBhIDAgYnl0ZSBmaWxlLiAgY2F1c2VzIHN0
cnVjdCBtdHggcmVkZWZpbml0aW9uICovCiAjZW5kaWYKQEAgLTQ4MCw3ICs0NTQsNyBAQCBzdHJ1
Y3Qgc3gge2ludCBkdW1teTt9OwogICogIHVzZXJzcGFjZSBhcyB3ZWxsPyAqLwogLyogb24gRnJl
ZUJTRCwgdGhpcyByZXN1bHRzIGluIGEgcmVkZWZpbnRpb24gb2Ygc3RydWN0IHJvdXRlICovCiAv
KiAjaW5jbHVkZSA8bmV0L3JvdXRlLmg+ICovCi0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3Nf
V2luZG93cykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfTmFDbCkKKyNpZiAhZGVmaW5lZChf
V0lOMzIpICYmICFkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9fKQogI2luY2x1ZGUgPG5ldC9pZi5o
PgogI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KICNpbmNsdWRlIDxuZXRpbmV0L2luX3N5c3RtLmg+
CkBAIC00OTYsNyArNDcwLDcgQEAgc3RydWN0IHN4IHtpbnQgZHVtbXk7fTsKIAogLyogZm9yIGdl
dGlmYWRkcnMgKi8KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9vc19XaW5kb3dzKQorI2lmICFkZWZpbmVkKF9XSU4zMikKICNpZiBkZWZpbmVkKElORVQp
IHx8IGRlZmluZWQoSU5FVDYpCiAjaW5jbHVkZSA8aWZhZGRycy5oPgogI2VuZGlmCkBAIC01MDYs
NiArNDgwLDggQEAgc3RydWN0IHN4IHtpbnQgZHVtbXk7fTsKIAogLyogZm9yIGNsb3NlLCBldGMu
ICovCiAjaW5jbHVkZSA8dW5pc3RkLmg+CisvKiBmb3IgZ2V0dGltZW9mZGF5ICovCisjaW5jbHVk
ZSA8c3lzL3RpbWUuaD4KICNlbmRpZgogCiAvKiBsb3RzIG9mIGVycm5vJ3MgdXNlZCBhbmQgbmVl
ZGVkIGluIHVzZXJzcGFjZSAqLwpAQCAtNTEzLDcgKzQ4OSw3IEBAIHN0cnVjdCBzeCB7aW50IGR1
bW15O307CiAvKiBmb3Igb2Zmc2V0b2YgKi8KICNpbmNsdWRlIDxzdGRkZWYuaD4KIAotI2lmIGRl
ZmluZWQoU0NUUF9QUk9DRVNTX0xFVkVMX0xPQ0tTKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9v
c19XaW5kb3dzKQorI2lmIGRlZmluZWQoU0NUUF9QUk9DRVNTX0xFVkVMX0xPQ0tTKSAmJiAhZGVm
aW5lZChfV0lOMzIpCiAvKiBmb3IgcHRocmVhZF9tdXRleF9sb2NrLCBwdGhyZWFkX211dGV4X3Vu
bG9jaywgZXRjLiAqLwogI2luY2x1ZGUgPHB0aHJlYWQuaD4KICNlbmRpZgpAQCAtNTI0LDIxICs1
MDAsMjEgQEAgc3RydWN0IHN4IHtpbnQgZHVtbXk7fTsKICNlbmRpZgkJCQkvKiBJUFNFQyAqLwog
CiAjaWZkZWYgSU5FVDYKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0ZyZWVCU0QpCisjaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykKICNpbmNsdWRlIDxzeXMvZG9tYWluLmg+CiAjZW5kaWYKICNp
ZmRlZiBJUFNFQwogI2luY2x1ZGUgPG5ldGlwc2VjL2lwc2VjNi5oPgogI2VuZGlmCi0jaWYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiAhZGVmaW5lZChfV0lOMzIpCiAjaW5j
bHVkZSA8bmV0aW5ldC9pcDYuaD4KICNlbmRpZgotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3Nf
RGFyd2luKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0ZyZWVCU0QpIHx8IGRlZmluZWQoX19V
c2Vyc3BhY2Vfb3NfTGludXgpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfTmV0QlNEKSB8fCBk
ZWZpbmVkKF9fVXNlcnNwYWNlX29zX09wZW5CU0QpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3Nf
V2luZG93cykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykg
fHwgZGVmaW5lZChfX2xpbnV4X18pIHx8IGRlZmluZWQoX19OZXRCU0RfXykgfHwgZGVmaW5lZChf
X09wZW5CU0RfXykgfHwgZGVmaW5lZChfV0lOMzIpCiAjaW5jbHVkZSAidXNlcl9pcDZfdmFyLmgi
CiAjZWxzZQogI2luY2x1ZGUgPG5ldGluZXQ2L2lwNl92YXIuaD4KICNlbmRpZgotI2lmIGRlZmlu
ZWQoX19Vc2Vyc3BhY2Vfb3NfRnJlZUJTRCkKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQogI2lu
Y2x1ZGUgPG5ldGluZXQ2L2luNl9wY2IuaD4KICNpbmNsdWRlIDxuZXRpbmV0Ni9pcDZwcm90b3N3
Lmg+CiAvKiAjaW5jbHVkZSA8bmV0aW5ldDYvbmQ2Lmg+IHdhcyBhIDAgYnl0ZSBmaWxlICovCkBA
IC01NTMsNyArNTI5LDcgQEAgc3RydWN0IHN4IHtpbnQgZHVtbXk7fTsKIAogI2luY2x1ZGUgIm5l
dGluZXQvc2N0cF9zaGExLmgiCiAKLSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA3MDAwMDAKKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1
ZGUgPG5ldGluZXQvaXBfb3B0aW9ucy5oPgogI2VuZGlmCiAKQEAgLTU2MiwxMSArNTM4LDYgQEAg
c3RydWN0IHN4IHtpbnQgZHVtbXk7fTsKIAkJU0NUUF9CQVNFX1ZBUihkZWJ1Z19wcmludGYpKF9f
VkFfQVJHU19fKTsgXAogCX0KIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCi0jaWZuZGVmIGlu
NnBjYgotI2RlZmluZSBpbjZwY2IJCWlucGNiCi0jZW5kaWYKLSNlbmRpZgogLyogRGVjbGFyZSBh
bGwgdGhlIG1hbGxvYyBuYW1lcyBmb3IgYWxsIHRoZSB2YXJpb3VzIG1hbGxvY3MgKi8KIE1BTExP
Q19ERUNMQVJFKFNDVFBfTV9NQVApOwogTUFMTE9DX0RFQ0xBUkUoU0NUUF9NX1NUUk1JKTsKQEAg
LTYxMSwxMiArNTgyLDEyIEBAIE1BTExPQ19ERUNMQVJFKFNDVFBfTV9TT0NLT1BUKTsKIC8qCiAg
KgogICovCi0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRGFyd2luKQorI2lmICFkZWZpbmVk
KF9fQVBQTEVfXykKICNkZWZpbmUgVVNFUl9BRERSX05VTEwJKE5VTEwpCQkvKiBGSVggTUU6IHRl
bXAgKi8KICNlbmRpZgogCi0jaWYgZGVmaW5lZChTQ1RQX0RFQlVHKQogI2luY2x1ZGUgPG5ldGlu
ZXQvc2N0cF9jb25zdGFudHMuaD4KKyNpZiBkZWZpbmVkKFNDVFBfREVCVUcpCiAjZGVmaW5lIFND
VFBEQkcobGV2ZWwsIC4uLikJCQkJCVwKIHsJCQkJCQkJCVwKIAlkbyB7CQkJCQkJCVwKQEAgLTY3
MCw3ICs2NDEsNyBAQCBNQUxMT0NfREVDTEFSRShTQ1RQX01fU09DS09QVCk7CiAjZGVmaW5lIFND
VFBfVlJGX0lGTl9IQVNIX1NJWkUJMwogI2RlZmluZQlTQ1RQX0lOSVRfVlJGX1RBQkxFSUQodnJm
KQogCi0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiAhZGVmaW5lZChf
V0lOMzIpCiAjZGVmaW5lIFNDVFBfSUZOX0lTX0lGVF9MT09QKGlmbikgKHN0cm5jbXAoKGlmbikt
Pmlmbl9uYW1lLCAibG8iLCAyKSA9PSAwKQogLyogQlNEIGRlZmluaXRpb24gKi8KIC8qICNkZWZp
bmUgU0NUUF9ST1VURV9JU19SRUFMX0xPT1Aocm8pICgocm8pLT5yb19ydCAmJiAocm8pLT5yb19y
dC0+cnRfaWZhICYmIChybyktPnJvX3J0LT5ydF9pZmEtPmlmYV9pZnAgJiYgKHJvKS0+cm9fcnQt
PnJ0X2lmYS0+aWZhX2lmcC0+aWZfdHlwZSA9PSBJRlRfTE9PUCkgKi8KQEAgLTgwNCw3ICs3NzUs
NyBAQCBzY3RwX2hhc2hmcmVlZGVzdHJveSh2b2lkICp2aGFzaHRibCwgc3RydWN0IG1hbGxvY190
eXBlICp0eXBlLCB1X2xvbmcgaGFzaG1hc2spOwogI2RlZmluZSBLVFJfU1VCU1lTIDEKIAogLyog
VGhlIHBhY2tlZCBkZWZpbmUgZm9yIDY0IGJpdCBwbGF0Zm9ybXMgKi8KLSNpZiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmICFkZWZpbmVkKF9XSU4zMikKICNkZWZpbmUgU0NU
UF9QQUNLRUQgX19hdHRyaWJ1dGVfXygocGFja2VkKSkKICNkZWZpbmUgU0NUUF9VTlVTRUQgX19h
dHRyaWJ1dGVfXygodW51c2VkKSkKICNlbHNlCkBAIC04MzMsNiArODA0LDEzIEBAIHNjdHBfaGFz
aGZyZWVkZXN0cm95KHZvaWQgKnZoYXNodGJsLCBzdHJ1Y3QgbWFsbG9jX3R5cGUgKnR5cGUsIHVf
bG9uZyBoYXNobWFzayk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTV9B
TElHTihtLCBsZW4pOyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogCisj
aWYgIWRlZmluZWQoX1dJTjMyKQorI2RlZmluZSBTQ1RQX1NOUFJJTlRGKGRhdGEsIC4uLikJCQkJ
CQlcCisJaWYgKHNucHJpbnRmKGRhdGEsIF9fVkFfQVJHU19fKSA8IDApIHsJCQkJCVwKKwkJZGF0
YVswXSA9ICdcMCc7CQkJCQkJCVwKKwl9CisjZW5kaWYKKwogLyogV2UgbWFrZSBpdCBzbyBpZiB5
b3UgaGF2ZSB1cCB0byA0IHRocmVhZHMKICAqIHdyaXR0aW5nIGJhc2VkIG9uIHRoZSBkZWZhdWx0
IHNpemUgb2YKICAqIHRoZSBwYWNrZXQgbG9nIDY1IGssIHRoYXQgd291bGQgYmUKQEAgLTg5MSw3
ICs4NjksNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2N0cF91c2Vyc3BhY2VfcnRmcmVlKHNjdHBf
cnRlbnRyeV90ICpydCkKIAkJcmV0dXJuOwogCX0KIAlmcmVlKHJ0KTsKLQlydCA9IE5VTEw7CiB9
CiAjZGVmaW5lIHJ0ZnJlZShhcmcxKSBzY3RwX3VzZXJzcGFjZV9ydGZyZWUoYXJnMSkKIApAQCAt
OTEyLDEwICs4ODksNiBAQCBpbnQgc2N0cF91c2Vyc3BhY2VfZ2V0X210dV9mcm9tX2lmbih1aW50
MzJfdCBpZl9pbmRleCwgaW50IGFmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBydC0+cnRfcm14LnJteF9tdHUgPSBtdHU7IFwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlKDApCiAKLS8qIChkZS0pcmVn
aXN0ZXIgaW50ZXJmYWNlIGV2ZW50IG5vdGlmaWNhdGlvbnMgKi8KLSNkZWZpbmUgU0NUUF9SRUdJ
U1RFUl9JTlRFUkZBQ0UoaWZoYW5kbGUsIGFmKQotI2RlZmluZSBTQ1RQX0RFUkVHSVNURVJfSU5U
RVJGQUNFKGlmaGFuZGxlLCBhZikKLQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8q
IFRoZXNlIGFyZSBmb3IgbG9nZ2luZyAqLwpAQCAtOTY1LDExICs5MzgsMTEgQEAgaW50IHNjdHBf
dXNlcnNwYWNlX2dldF9tdHVfZnJvbV9pZm4odWludDMyX3QgaWZfaW5kZXgsIGludCBhZik7CiAg
Ki8KIAogLyogZ2V0IHRoZSB2NiBob3AgbGltaXQgKi8KLSNkZWZpbmUgU0NUUF9HRVRfSExJTShp
bnAsIHJvKSAxMjggLyogQXMgZG9uZSBmb3IgX19XaW5kb3dzX18gKi8KKyNkZWZpbmUgU0NUUF9H
RVRfSExJTShpbnAsIHJvKSAxMjgKICNkZWZpbmUgSVB2Nl9IT1BfTElNSVQgMTI4CiAKIC8qIGlz
IHRoZSBlbmRwb2ludCB2Nm9ubHk/ICovCi0jZGVmaW5lIFNDVFBfSVBWNl9WNk9OTFkoaW5wKQko
KChzdHJ1Y3QgaW5wY2IgKilpbnApLT5pbnBfZmxhZ3MgJiBJTjZQX0lQVjZfVjZPTkxZKQorI2Rl
ZmluZSBTQ1RQX0lQVjZfVjZPTkxZKHNjdHBfaW5wY2IpCSgoc2N0cF9pbnBjYiktPmlwX2lucC5p
bnAuaW5wX2ZsYWdzICYgSU42UF9JUFY2X1Y2T05MWSkKIC8qIGlzIHRoZSBzb2NrZXQgbm9uLWJs
b2NraW5nPyAqLwogI2RlZmluZSBTQ1RQX1NPX0lTX05CSU8oc28pCSgoc28pLT5zb19zdGF0ZSAm
IFNTX05CSU8pCiAjZGVmaW5lIFNDVFBfU0VUX1NPX05CSU8oc28pCSgoc28pLT5zb19zdGF0ZSB8
PSBTU19OQklPKQpAQCAtMTAwNCw3ICs5NzcsNyBAQCBpbnQgc2N0cF91c2Vyc3BhY2VfZ2V0X210
dV9mcm9tX2lmbih1aW50MzJfdCBpZl9pbmRleCwgaW50IGFmKTsKIAogLyogc2N0cF9wY2IuaCAq
LwogCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJ
TjMyKQogI2RlZmluZSBTSFVUX1JEIDEKICNkZWZpbmUgU0hVVF9XUiAyCiAjZGVmaW5lIFNIVVRf
UkRXUiAzCkBAIC0xMDc3LDcgKzEwNTAsNyBAQCBleHRlcm4gdm9pZCBzY3RwX3VzZXJzcGFjZV9p
cDZfb3V0cHV0KGludCAqcmVzdWx0LCBzdHJ1Y3QgbWJ1ZiAqb19wYWssCiB7IFwKIAlpZiAoc3Rj
YiAmJiBzdGNiLT5zY3RwX2VwKSBcCiAJCXJlc3VsdCA9IGlwNl9vdXRwdXQob19wYWssIFwKLQkJ
CQkgICAgKChzdHJ1Y3QgaW42cGNiICopKHN0Y2ItPnNjdHBfZXApKS0+aW42cF9vdXRwdXRvcHRz
LCBcCisJCQkJICAgICgoc3RydWN0IGlucGNiICopKHN0Y2ItPnNjdHBfZXApKS0+aW42cF9vdXRw
dXRvcHRzLCBcCiAJCQkJICAgIChybyksIDAsIDAsIGlmcCwgTlVMTCk7IFwKIAllbHNlIFwKIAkJ
cmVzdWx0ID0gaXA2X291dHB1dChvX3BhaywgTlVMTCwgKHJvKSwgMCwgMCwgaWZwLCBOVUxMKTsg
XApAQCAtMTA5MSwxMiArMTA2NCwxMiBAQCBzY3RwX2dldF9tYnVmX2Zvcl9tc2codW5zaWduZWQg
aW50IHNwYWNlX25lZWRlZCwgaW50IHdhbnRfaGVhZGVyLCBpbnQgaG93LCBpbnQgYQogLyogd2l0
aCB0aGUgY3VycmVudCBpbmNsdWRlZCBmaWxlcywgdGhpcyBpcyBkZWZpbmVkIGluIExpbnV4IGJ1
dAogICogIGluIEZyZWVCU0QsIGl0IGlzIGJlaGluZCBhIF9LRVJORUwgaW4gc3lzL3NvY2tldC5o
IC4uLgogICovCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19EcmFnb25GbHkpIHx8IGRlZmlu
ZWQoX19Vc2Vyc3BhY2Vfb3NfRnJlZUJTRCkgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19PcGVu
QlNEKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX05hQ2wpCisjaWYgZGVmaW5lZChfX0RyYWdv
bkZseV9fKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fT3BlbkJTRF9fKSB8
fCBkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9fKQogLyogc3RvbGVuIGZyb20gL3Vzci9pbmNsdWRl
L3N5cy9zb2NrZXQuaCAqLwogI2RlZmluZSBDTVNHX0FMSUdOKG4pICAgX0FMSUdOKG4pCi0jZWxp
ZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX05ldEJTRCkKKyNlbGlmIGRlZmluZWQoX19OZXRCU0Rf
XykKICNkZWZpbmUgQ01TR19BTElHTihuKSAgICgoKG4pICsgX19BTElHTkJZVEVTKSAmIH5fX0FM
SUdOQllURVMpCi0jZWxpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0RhcndpbikKKyNlbGlmIGRl
ZmluZWQoX19BUFBMRV9fKQogI2lmICFkZWZpbmVkKF9fREFSV0lOX0FMSUdOQllURVMpCiAjZGVm
aW5lCV9fREFSV0lOX0FMSUdOQllURVMJKHNpemVvZihfX2Rhcndpbl9zaXplX3QpIC0gMSkKICNl
bmRpZgpAQCAtMTEzMSw3ICsxMTA0LDcgQEAgc2N0cF9nZXRfbWJ1Zl9mb3JfbXNnKHVuc2lnbmVk
IGludCBzcGFjZV9uZWVkZWQsIGludCB3YW50X2hlYWRlciwgaW50IGhvdywgaW50IGEKIAl9IHdo
aWxlICgwKQogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0xpbnV4KQorI2lm
IGRlZmluZWQoX19saW51eF9fKQogI2lmICFkZWZpbmVkKFRBSUxRX0ZPUkVBQ0hfU0FGRSkKICNk
ZWZpbmUgVEFJTFFfRk9SRUFDSF9TQUZFKHZhciwgaGVhZCwgZmllbGQsIHR2YXIpICAgICAgICAg
ICAgIFwKICAgICAgICAgIGZvciAoKHZhcikgPSAoKGhlYWQpLT50cWhfZmlyc3QpOyAgICAgICAg
ICAgICAgICAgICAgIFwKQEAgLTExNDUsMTIgKzExMTgsMTIgQEAgc2N0cF9nZXRfbWJ1Zl9mb3Jf
bXNnKHVuc2lnbmVkIGludCBzcGFjZV9uZWVkZWQsIGludCB3YW50X2hlYWRlciwgaW50IGhvdywg
aW50IGEKICAgICAgICAgICAgICAgKHZhcikgPSAodHZhcikpCiAjZW5kaWYKICNlbmRpZgotI2lm
IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRHJhZ29uRmx5KQorI2lmIGRlZmluZWQoX19EcmFnb25G
bHlfXykKICNkZWZpbmUgVEFJTFFfRk9SRUFDSF9TQUZFIFRBSUxRX0ZPUkVBQ0hfTVVUQUJMRQog
I2RlZmluZSBMSVNUX0ZPUkVBQ0hfU0FGRSBMSVNUX0ZPUkVBQ0hfTVVUQUJMRQogI2VuZGlmCiAK
LSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX05hQ2wpCisjaWYgZGVmaW5lZChfX25hdGl2ZV9j
bGllbnRfXykKICNkZWZpbmUJdGltZXJjbXAodHZwLCB1dnAsIGNtcCkJCQkJCQlcCiAJKCgodHZw
KS0+dHZfc2VjID09ICh1dnApLT50dl9zZWMpID8JCQkJXAogCSAgICAoKHR2cCktPnR2X3VzZWMg
Y21wICh1dnApLT50dl91c2VjKSA6CQkJXApAQCAtMTE1OSw0ICsxMTMyLDkgQEAgc2N0cF9nZXRf
bWJ1Zl9mb3JfbXNnKHVuc2lnbmVkIGludCBzcGFjZV9uZWVkZWQsIGludCB3YW50X2hlYWRlciwg
aW50IGhvdywgaW50IGEKIAogI2RlZmluZSBTQ1RQX0lTX0xJU1RFTklORyhpbnApICgoaW5wLT5z
Y3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfQUNDRVBUSU5HKSAhPSAwKQogCisjaWYgZGVmaW5l
ZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykgfHwgZGVmaW5lZChfX2xpbnV4
X18pIHx8IGRlZmluZWQoX19uYXRpdmVfY2xpZW50X18pIHx8IGRlZmluZWQoX19OZXRCU0RfXykg
fHwgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19GdWNoc2lhX18pCitpbnQKK3RpbWluZ3Nh
ZmVfYmNtcChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKKyNlbmRpZgorCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX291dHB1
dC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3Jz
Y3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfb3V0cHV0LmMKb2xkIG1vZGUg
MTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCBlMjlhNzI3ZmFkZDkuLjIxNDI0YjY5NDU5Ygot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9vdXRwdXQuYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0
cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9vdXRwdXQuYwpAQCAtMzIsMTMgKzMyLDEzIEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmZGVmIF9fRnJl
ZUJTRF9fCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLV9fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMv
bmV0aW5ldC9zY3RwX291dHB1dC5jIDMzNTE3OSAyMDE4LTA2LTE0IDIxOjMwOjUyWiB0dWV4ZW4g
JCIpOworX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfb3V0cHV0LmMg
MzY0OTM3IDIwMjAtMDgtMjggMjA6MDU6MThaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAogI2luY2x1
ZGUgPG5ldGluZXQvc2N0cF9vcy5oPgotI2lmZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxzeXMvcHJv
Yy5oPgogI2VuZGlmCiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX3Zhci5oPgpAQCAtNTYsMzIgKzU2
LDMxIEBAIF9fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX291dHB1dC5j
IDMzNTE3OSAyMDE4LTA2LTE0IDIxOjMwOjUyWiB0CiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX2Jz
ZF9hZGRyLmg+CiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX2lucHV0Lmg+CiAjaW5jbHVkZSA8bmV0
aW5ldC9zY3RwX2NyYzMyLmg+Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19MaW51eCkKKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2luY2x1
ZGUgPG5ldGluZXQvc2N0cF9rZHRyYWNlLmg+CisjZW5kaWYKKyNpZiBkZWZpbmVkKF9fbGludXhf
XykKICNkZWZpbmUgX19GQVZPUl9CU0QgICAgLyogKG9uIFVidW50dSBhdCBsZWFzdCkgZW5hYmxl
cyBVRFAgaGVhZGVyIGZpZWxkIG5hbWVzIGxpa2UgQlNEIGluIFJGQyA3NjggKi8KICNlbmRpZgog
I2lmIGRlZmluZWQoSU5FVCkgfHwgZGVmaW5lZChJTkVUNikKLSNpZiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9vc19XaW5kb3dzKQorI2lmICFkZWZpbmVkKF9XSU4zMikKICNpbmNsdWRlIDxuZXRpbmV0
L3VkcC5oPgogI2VuZGlmCiAjZW5kaWYKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lm
IGRlZmluZWQoX19BUFBMRV9fKQogI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KICNlbmRpZgotI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVl
QlNEX3ZlcnNpb24gPj0gODAwMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxuZXRpbmV0L3VkcF92YXIuaD4KLSNlbmRpZgog
I2luY2x1ZGUgPG1hY2hpbmUvaW5fY2tzdW0uaD4KICNlbmRpZgorI2VuZGlmCiAjaWYgZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKSAmJiBkZWZpbmVkKElORVQ2KQogI2luY2x1ZGUgPG5ldGluZXQ2L3Nj
dHA2X3Zhci5oPgogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKLSNkZWZpbmUgQVBQ
TEVfRklMRV9OTyAzCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmlu
ZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmICEoZGVmaW5lZChB
UFBMRV9MRU9QQVJEKSB8fCBkZWZpbmVkKEFQUExFX1NOT1dMRU9QQVJEKSkKICNkZWZpbmUgU0NU
UF9NQVhfTElOS0hEUiAxNgogI2VuZGlmCkBAIC0xOTMwLDE0ICsxOTI5LDEyIEBAIHNjdHBfaXNf
YWRkcmVzc19pbl9zY29wZShzdHJ1Y3Qgc2N0cF9pZmEgKmlmYSwKIAkJaWYgKHNjb3BlLT5pcHY2
X2FkZHJfbGVnYWwpIHsKIAkJCXN0cnVjdCBzb2NrYWRkcl9pbjYgKnNpbjY7CiAKLSNpZiAhZGVm
aW5lZChfX1BhbmRhX18pCiAJCQkvKiBNdXN0IHVwZGF0ZSB0aGUgZmxhZ3MsICBidW1tZXIsIHdo
aWNoCiAJCQkgKiBtZWFucyBhbnkgSUZBIGxvY2tzIG11c3Qgbm93IGJlIGFwcGxpZWQgSEVSRSA8
LT4KIAkJCSAqLwogCQkJaWYgKGRvX3VwZGF0ZSkgewogCQkJCXNjdHBfZ2F0aGVyX2ludGVybmFs
X2lmYV9mbGFncyhpZmEpOwogCQkJfQotI2VuZGlmCiAJCQlpZiAoaWZhLT5sb2NhbGlmYV9mbGFn
cyAmIFNDVFBfQUREUl9JRkFfVU5VU0VBQkxFKSB7CiAJCQkJcmV0dXJuICgwKTsKIAkJCX0KQEAg
LTIxMDAsNyArMjA5Nyw3IEBAIHNjdHBfYWRkX2FkZHJlc3Nlc190b19pX2lhKHN0cnVjdCBzY3Rw
X2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJCQljb250aW51ZTsKIAkJCX0K
IAkJCUxJU1RfRk9SRUFDSChzY3RwX2lmYXAsICZzY3RwX2lmbnAtPmlmYWxpc3QsIG5leHRfaWZh
KSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmZGVmIElORVQKIAkJCQlpZiAoKHNjdHBfaWZh
cC0+YWRkcmVzcy5zYS5zYV9mYW1pbHkgPT0gQUZfSU5FVCkgJiYKIAkJCQkgICAgKHByaXNvbl9j
aGVja19pcDQoaW5wLT5pcF9pbnAuaW5wLmlucF9jcmVkLApAQCAtMjE1MCw3ICsyMTQ3LDcgQEAg
c2N0cF9hZGRfYWRkcmVzc2VzX3RvX2lfaWEoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0
IHNjdHBfdGNiICpzdGNiLAogCQkJCQljb250aW51ZTsKIAkJCQl9CiAJCQkJTElTVF9GT1JFQUNI
KHNjdHBfaWZhcCwgJnNjdHBfaWZucC0+aWZhbGlzdCwgbmV4dF9pZmEpIHsKLSNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAjaWZkZWYgSU5FVAogCQkJCQlpZiAoKHNjdHBfaWZhcC0+YWRkcmVzcy5zYS5z
YV9mYW1pbHkgPT0gQUZfSU5FVCkgJiYKIAkJCQkJICAgIChwcmlzb25fY2hlY2tfaXA0KGlucC0+
aXBfaW5wLmlucC5pbnBfY3JlZCwKQEAgLTI1MzgsNyArMjUzNSw3IEBAIHNjdHBfY2hvb3NlX2Jv
dW5kc3BlY2lmaWNfaW5wKHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJaWYgKHNjdHBfaWZuKSB7
CiAJCS8qIGlzIGEgcHJlZmVycmVkIG9uZSBvbiB0aGUgaW50ZXJmYWNlIHdlIHJvdXRlIG91dD8g
Ki8KIAkJTElTVF9GT1JFQUNIKHNjdHBfaWZhLCAmc2N0cF9pZm4tPmlmYWxpc3QsIG5leHRfaWZh
KSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmZGVmIElORVQKIAkJCWlmICgoc2N0cF9pZmEt
PmFkZHJlc3Muc2Euc2FfZmFtaWx5ID09IEFGX0lORVQpICYmCiAJCQkgICAgKHByaXNvbl9jaGVj
a19pcDQoaW5wLT5pcF9pbnAuaW5wLmlucF9jcmVkLApAQCAtMjY4MCw3ICsyNjc3LDcgQEAgc2N0
cF9jaG9vc2VfYm91bmRzcGVjaWZpY19zdGNiKHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJaWYg
KHNjdHBfaWZuKSB7CiAJCS8qIGZpcnN0IHRyeSBmb3IgYSBwcmVmZXJyZWQgYWRkcmVzcyBvbiB0
aGUgZXAgKi8KIAkJTElTVF9GT1JFQUNIKHNjdHBfaWZhLCAmc2N0cF9pZm4tPmlmYWxpc3QsIG5l
eHRfaWZhKSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmZGVmIElORVQKIAkJCWlmICgoc2N0
cF9pZmEtPmFkZHJlc3Muc2Euc2FfZmFtaWx5ID09IEFGX0lORVQpICYmCiAJCQkgICAgKHByaXNv
bl9jaGVja19pcDQoaW5wLT5pcF9pbnAuaW5wLmlucF9jcmVkLApAQCAtMjcxNiw3ICsyNzEzLDcg
QEAgc2N0cF9jaG9vc2VfYm91bmRzcGVjaWZpY19zdGNiKHN0cnVjdCBzY3RwX2lucGNiICppbnAs
CiAJCX0KIAkJLyogbmV4dCB0cnkgZm9yIGFuIGFjY2VwdGFibGUgYWRkcmVzcyBvbiB0aGUgZXAg
Ki8KIAkJTElTVF9GT1JFQUNIKHNjdHBfaWZhLCAmc2N0cF9pZm4tPmlmYWxpc3QsIG5leHRfaWZh
KSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmZGVmIElORVQKIAkJCWlmICgoc2N0cF9pZmEt
PmFkZHJlc3Muc2Euc2FfZmFtaWx5ID09IEFGX0lORVQpICYmCiAJCQkgICAgKHByaXNvbl9jaGVj
a19pcDQoaW5wLT5pcF9pbnAuaW5wLmlucF9jcmVkLApAQCAtMjgzNyw3ICsyODM0LDcgQEAgc2N0
cF9jaG9vc2VfYm91bmRzcGVjaWZpY19zdGNiKHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAKIHN0
YXRpYyBzdHJ1Y3Qgc2N0cF9pZmEgKgogc2N0cF9zZWxlY3RfbnRoX3ByZWZlcnJlZF9hZGRyX2Zy
b21faWZuX2JvdW5kYWxsKHN0cnVjdCBzY3RwX2lmbiAqaWZuLAotI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3Qgc2N0cF9pbnBjYiAqaW5wLAogI2Vsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wIFNDVFBfVU5VU0VELApA
QCAtMjg2OCw3ICsyODY1LDcgQEAgc2N0cF9zZWxlY3RfbnRoX3ByZWZlcnJlZF9hZGRyX2Zyb21f
aWZuX2JvdW5kYWxsKHN0cnVjdCBzY3RwX2lmbiAqaWZuLAogI2VuZGlmICAvKiBTQ1RQX0VNQkVE
REVEX1Y2X1NDT1BFICovCiAjZW5kaWYJLyogSU5FVDYgKi8KIAlMSVNUX0ZPUkVBQ0goaWZhLCAm
aWZuLT5pZmFsaXN0LCBuZXh0X2lmYSkgewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZmRlZiBJ
TkVUCiAJCWlmICgoaWZhLT5hZGRyZXNzLnNhLnNhX2ZhbWlseSA9PSBBRl9JTkVUKSAmJgogCQkg
ICAgKHByaXNvbl9jaGVja19pcDQoaW5wLT5pcF9pbnAuaW5wLmlucF9jcmVkLApAQCAtMjk3MSw3
ICsyOTY4LDcgQEAgc2N0cF9zZWxlY3RfbnRoX3ByZWZlcnJlZF9hZGRyX2Zyb21faWZuX2JvdW5k
YWxsKHN0cnVjdCBzY3RwX2lmbiAqaWZuLAogCiBzdGF0aWMgaW50CiBzY3RwX2NvdW50X251bV9w
cmVmZXJyZWRfYm91bmRhbGwoc3RydWN0IHNjdHBfaWZuICppZm4sCi0jaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY3RwX2lucGNi
ICppbnAsCiAjZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBz
Y3RwX2lucGNiICppbnAgU0NUUF9VTlVTRUQsCkBAIC0yOTg2LDcgKzI5ODMsNyBAQCBzY3RwX2Nv
dW50X251bV9wcmVmZXJyZWRfYm91bmRhbGwoc3RydWN0IHNjdHBfaWZuICppZm4sCiAJaW50IG51
bV9lbGlnaWJsZV9hZGRyID0gMDsKIAogCUxJU1RfRk9SRUFDSChpZmEsICZpZm4tPmlmYWxpc3Qs
IG5leHRfaWZhKSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmZGVmIElORVQKIAkJaWYgKChp
ZmEtPmFkZHJlc3Muc2Euc2FfZmFtaWx5ID09IEFGX0lORVQpICYmCiAJCSAgICAocHJpc29uX2No
ZWNrX2lwNChpbnAtPmlwX2lucC5pbnAuaW5wX2NyZWQsCkBAIC0zMTk2LDcgKzMxOTMsNyBAQCBh
Z2Fpbl93aXRoX3ByaXZhdGVfYWRkcmVzc2VzX2FsbG93ZWQ6CiAJfQogCUxJU1RfRk9SRUFDSChz
Y3RwX2lmYSwgJmVtaXRfaWZuLT5pZmFsaXN0LCBuZXh0X2lmYSkgewogCQlTQ1RQREJHKFNDVFBf
REVCVUdfT1VUUFVUMiwgImlmYTolcFxuIiwgKHZvaWQgKilzY3RwX2lmYSk7Ci0jaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogI2lmZGVmIElORVQKIAkJaWYgKChzY3RwX2lmYS0+YWRkcmVzcy5zYS5zYV9m
YW1pbHkgPT0gQUZfSU5FVCkgJiYKIAkJICAgIChwcmlzb25fY2hlY2tfaXA0KGlucC0+aXBfaW5w
LmlucC5pbnBfY3JlZCwKQEAgLTMyNjIsNyArMzI1OSw3IEBAIGFnYWluX3dpdGhfcHJpdmF0ZV9h
ZGRyZXNzZXNfYWxsb3dlZDoKIAkJCWNvbnRpbnVlOwogCQl9CiAJCUxJU1RfRk9SRUFDSChzY3Rw
X2lmYSwgJnNjdHBfaWZuLT5pZmFsaXN0LCBuZXh0X2lmYSkgewotI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKICNpZmRlZiBJTkVUCiAJCQlpZiAoKHNjdHBfaWZhLT5hZGRyZXNzLnNhLnNhX2ZhbWlseSA9
PSBBRl9JTkVUKSAmJgogCQkJICAgIChwcmlzb25fY2hlY2tfaXA0KGlucC0+aXBfaW5wLmlucC5p
bnBfY3JlZCwKQEAgLTMzMzAsNyArMzMyNyw3IEBAIG91dDoKIAkJCQlMSVNUX0ZPUkVBQ0goc2N0
cF9pZmEsICZzY3RwX2lmbi0+aWZhbGlzdCwgbmV4dF9pZmEpIHsKIAkJCQkJc3RydWN0IHNjdHBf
aWZhICp0bXBfc2lmYTsKIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZmRlZiBJTkVUCiAJCQkJ
CWlmICgoc2N0cF9pZmEtPmFkZHJlc3Muc2Euc2FfZmFtaWx5ID09IEFGX0lORVQpICYmCiAJCQkJ
CSAgICAocHJpc29uX2NoZWNrX2lwNChpbnAtPmlwX2lucC5pbnAuaW5wX2NyZWQsCkBAIC0zNDcx
LDE2ICszNDY4LDI0IEBAIHNjdHBfc291cmNlX2FkZHJlc3Nfc2VsZWN0aW9uKHN0cnVjdCBzY3Rw
X2lucGNiICppbnAsCiAJICogICBhZGRyZXNzZXMuIElmIHRoZSBib3VuZCBzZXQgaXMgTk9UIGFz
c2lnbmVkIHRvIHRoZSBpbnRlcmZhY2UgdGhlbgogCSAqICAgd2UgbXVzdCB1c2Ugcm90YXRpb24g
YW1vbmdzdCB0aGUgYm91bmQgYWRkcmVzc2VzLi4KIAkgKi8KKyNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCWlmIChyby0+cm9fbmggPT0gTlVMTCkg
eworI2Vsc2UKIAlpZiAocm8tPnJvX3J0ID09IE5VTEwpIHsKKyNlbmRpZgogCQkvKgogCQkgKiBO
ZWVkIGEgcm91dGUgdG8gY2FjaGUuCiAJCSAqLwogCQlTQ1RQX1JUQUxMT0Mocm8sIHZyZl9pZCwg
aW5wLT5maWJudW0pOwogCX0KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQorCWlmIChyby0+cm9fbmggPT0gTlVMTCkgeworI2Vsc2UKIAlpZiAocm8t
PnJvX3J0ID09IE5VTEwpIHsKKyNlbmRpZgogCQlyZXR1cm4gKE5VTEwpOwogCX0KLSNpZiBkZWZp
bmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJLyogT24g
V2luZG93cyB0aGUgc2FfZmFtaWx5IGlzIFVfU0hPUlQgb3IgQUREUkVTU19GQU1JTFkgKi8KIAlm
YW0gPSAoc2FfZmFtaWx5X3Qpcm8tPnJvX2RzdC5zYV9mYW1pbHk7CiAjZWxzZQpAQCAtMzUwNiw3
ICszNTExLDcgQEAgc2N0cF9zb3VyY2VfYWRkcmVzc19zZWxlY3Rpb24oc3RydWN0IHNjdHBfaW5w
Y2IgKmlucCwKICNpZmRlZiBJTkVUNgogCWNhc2UgQUZfSU5FVDY6CiAJCS8qIFNjb3BlIGJhc2Vk
IG9uIG91dGJvdW5kIGFkZHJlc3MgKi8KLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRv
d3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJCWlmIChJTjZfSVNfQUREUl9MT09QQkFDSygmdG82
LT5zaW42X2FkZHIpKSB7CiAjZWxzZQogCQlpZiAoSU42X0lTX0FERFJfTE9PUEJBQ0soJnRvNi0+
c2luNl9hZGRyKSB8fApAQCAtMzU2Myw3ICszNTY4LDcgQEAgc2N0cF9zb3VyY2VfYWRkcmVzc19z
ZWxlY3Rpb24oc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIHN0YXRpYyBpbnQKIHNjdHBfZmluZF9j
bXNnKGludCBjX3R5cGUsIHZvaWQgKmRhdGEsIHN0cnVjdCBtYnVmICpjb250cm9sLCBzaXplX3Qg
Y3BzaXplKQogewotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZp
bmVkKF9XSU4zMikKIAlXU0FDTVNHSERSIGNtaDsKICNlbHNlCiAJc3RydWN0IGNtc2doZHIgY21o
OwpAQCAtMzY2OCwxMiArMzY3MywxMSBAQCBzY3RwX2ZpbmRfY21zZyhpbnQgY190eXBlLCB2b2lk
ICpkYXRhLCBzdHJ1Y3QgbWJ1ZiAqY29udHJvbCwgc2l6ZV90IGNwc2l6ZSkKIHN0YXRpYyBpbnQK
IHNjdHBfcHJvY2Vzc19jbXNnc19mb3JfaW5pdChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVj
dCBtYnVmICpjb250cm9sLCBpbnQgKmVycm9yKQogewotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vf
b3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIAlXU0FDTVNHSERSIGNtaDsKICNlbHNl
CiAJc3RydWN0IGNtc2doZHIgY21oOwogI2VuZGlmCi0JaW50IHRsZW4sIGF0OwogCXN0cnVjdCBz
Y3RwX2luaXRtc2cgaW5pdG1zZzsKICNpZmRlZiBJTkVUCiAJc3RydWN0IHNvY2thZGRyX2luIHNp
bjsKQEAgLTM2ODEsMzQgKzM2ODUsMzcgQEAgc2N0cF9wcm9jZXNzX2Ntc2dzX2Zvcl9pbml0KHN0
cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IG1idWYgKmNvbnRyb2wsIGludCAqZXIKICNpZmRl
ZiBJTkVUNgogCXN0cnVjdCBzb2NrYWRkcl9pbjYgc2luNjsKICNlbmRpZgorCWludCB0b3RfbGVu
LCByZW1fbGVuLCBjbXNnX2RhdGFfbGVuLCBjbXNnX2RhdGFfb2ZmLCBvZmY7CiAKLQl0bGVuID0g
U0NUUF9CVUZfTEVOKGNvbnRyb2wpOwotCWF0ID0gMDsKLQl3aGlsZSAoYXQgPCB0bGVuKSB7Ci0J
CWlmICgodGxlbiAtIGF0KSA8IChpbnQpQ01TR19BTElHTihzaXplb2YoY21oKSkpIHsKKwl0b3Rf
bGVuID0gU0NUUF9CVUZfTEVOKGNvbnRyb2wpOworCWZvciAob2ZmID0gMDsgb2ZmIDwgdG90X2xl
bjsgb2ZmICs9IENNU0dfQUxJR04oY21oLmNtc2dfbGVuKSkgeworCQlyZW1fbGVuID0gdG90X2xl
biAtIG9mZjsKKwkJaWYgKHJlbV9sZW4gPCAoaW50KUNNU0dfQUxJR04oc2l6ZW9mKGNtaCkpKSB7
CiAJCQkvKiBUaGVyZSBpcyBub3QgZW5vdWdoIHJvb20gZm9yIG9uZSBtb3JlLiAqLwogCQkJKmVy
cm9yID0gRUlOVkFMOwogCQkJcmV0dXJuICgxKTsKIAkJfQotCQltX2NvcHlkYXRhKGNvbnRyb2ws
IGF0LCBzaXplb2YoY21oKSwgKGNhZGRyX3QpJmNtaCk7CisJCW1fY29weWRhdGEoY29udHJvbCwg
b2ZmLCBzaXplb2YoY21oKSwgKGNhZGRyX3QpJmNtaCk7CiAJCWlmIChjbWguY21zZ19sZW4gPCBD
TVNHX0FMSUdOKHNpemVvZihjbWgpKSkgewogCQkJLyogV2UgZG9udCd0IGhhdmUgYSBjb21wbGV0
ZSBDTVNHIGhlYWRlci4gKi8KIAkJCSplcnJvciA9IEVJTlZBTDsKIAkJCXJldHVybiAoMSk7CiAJ
CX0KLQkJaWYgKCgoaW50KWNtaC5jbXNnX2xlbiArIGF0KSA+IHRsZW4pIHsKKwkJaWYgKChjbWgu
Y21zZ19sZW4gPiBJTlRfTUFYKSB8fCAoKGludCljbWguY21zZ19sZW4gPiByZW1fbGVuKSkgewog
CQkJLyogV2UgZG9uJ3QgaGF2ZSB0aGUgY29tcGxldGUgQ01TRy4gKi8KIAkJCSplcnJvciA9IEVJ
TlZBTDsKIAkJCXJldHVybiAoMSk7CiAJCX0KKwkJY21zZ19kYXRhX2xlbiA9IChpbnQpY21oLmNt
c2dfbGVuIC0gQ01TR19BTElHTihzaXplb2YoY21oKSk7CisJCWNtc2dfZGF0YV9vZmYgPSBvZmYg
KyBDTVNHX0FMSUdOKHNpemVvZihjbWgpKTsKIAkJaWYgKGNtaC5jbXNnX2xldmVsID09IElQUFJP
VE9fU0NUUCkgewogCQkJc3dpdGNoIChjbWguY21zZ190eXBlKSB7CiAJCQljYXNlIFNDVFBfSU5J
VDoKLQkJCQlpZiAoKHNpemVfdCkoY21oLmNtc2dfbGVuIC0gQ01TR19BTElHTihzaXplb2YoY21o
KSkpIDwgc2l6ZW9mKHN0cnVjdCBzY3RwX2luaXRtc2cpKSB7CisJCQkJaWYgKGNtc2dfZGF0YV9s
ZW4gPCAoaW50KXNpemVvZihzdHJ1Y3Qgc2N0cF9pbml0bXNnKSkgewogCQkJCQkqZXJyb3IgPSBF
SU5WQUw7CiAJCQkJCXJldHVybiAoMSk7CiAJCQkJfQotCQkJCW1fY29weWRhdGEoY29udHJvbCwg
YXQgKyBDTVNHX0FMSUdOKHNpemVvZihjbWgpKSwgc2l6ZW9mKHN0cnVjdCBzY3RwX2luaXRtc2cp
LCAoY2FkZHJfdCkmaW5pdG1zZyk7CisJCQkJbV9jb3B5ZGF0YShjb250cm9sLCBjbXNnX2RhdGFf
b2ZmLCBzaXplb2Yoc3RydWN0IHNjdHBfaW5pdG1zZyksIChjYWRkcl90KSZpbml0bXNnKTsKIAkJ
CQlpZiAoaW5pdG1zZy5zaW5pdF9tYXhfYXR0ZW1wdHMpCiAJCQkJCXN0Y2ItPmFzb2MubWF4X2lu
aXRfdGltZXMgPSBpbml0bXNnLnNpbml0X21heF9hdHRlbXB0czsKIAkJCQlpZiAoaW5pdG1zZy5z
aW5pdF9udW1fb3N0cmVhbXMpCkBAIC0zNzYzLDcgKzM3NzAsNyBAQCBzY3RwX3Byb2Nlc3NfY21z
Z3NfZm9yX2luaXQoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3QgbWJ1ZiAqY29udHJvbCwg
aW50ICplcgogCQkJCWJyZWFrOwogI2lmZGVmIElORVQKIAkJCWNhc2UgU0NUUF9EU1RBRERSVjQ6
Ci0JCQkJaWYgKChzaXplX3QpKGNtaC5jbXNnX2xlbiAtIENNU0dfQUxJR04oc2l6ZW9mKGNtaCkp
KSA8IHNpemVvZihzdHJ1Y3QgaW5fYWRkcikpIHsKKwkJCQlpZiAoY21zZ19kYXRhX2xlbiA8IChp
bnQpc2l6ZW9mKHN0cnVjdCBpbl9hZGRyKSkgewogCQkJCQkqZXJyb3IgPSBFSU5WQUw7CiAJCQkJ
CXJldHVybiAoMSk7CiAJCQkJfQpAQCAtMzc3Myw3ICszNzgwLDcgQEAgc2N0cF9wcm9jZXNzX2Nt
c2dzX2Zvcl9pbml0KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IG1idWYgKmNvbnRyb2ws
IGludCAqZXIKIAkJCQlzaW4uc2luX2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pOwog
I2VuZGlmCiAJCQkJc2luLnNpbl9wb3J0ID0gc3RjYi0+cnBvcnQ7Ci0JCQkJbV9jb3B5ZGF0YShj
b250cm9sLCBhdCArIENNU0dfQUxJR04oc2l6ZW9mKGNtaCkpLCBzaXplb2Yoc3RydWN0IGluX2Fk
ZHIpLCAoY2FkZHJfdCkmc2luLnNpbl9hZGRyKTsKKwkJCQltX2NvcHlkYXRhKGNvbnRyb2wsIGNt
c2dfZGF0YV9vZmYsIHNpemVvZihzdHJ1Y3QgaW5fYWRkciksIChjYWRkcl90KSZzaW4uc2luX2Fk
ZHIpOwogCQkJCWlmICgoc2luLnNpbl9hZGRyLnNfYWRkciA9PSBJTkFERFJfQU5ZKSB8fAogCQkJ
CSAgICAoc2luLnNpbl9hZGRyLnNfYWRkciA9PSBJTkFERFJfQlJPQURDQVNUKSB8fAogCQkJCSAg
ICBJTl9NVUxUSUNBU1QobnRvaGwoc2luLnNpbl9hZGRyLnNfYWRkcikpKSB7CkBAIC0zNzg5LDcg
KzM3OTYsNyBAQCBzY3RwX3Byb2Nlc3NfY21zZ3NfZm9yX2luaXQoc3RydWN0IHNjdHBfdGNiICpz
dGNiLCBzdHJ1Y3QgbWJ1ZiAqY29udHJvbCwgaW50ICplcgogI2VuZGlmCiAjaWZkZWYgSU5FVDYK
IAkJCWNhc2UgU0NUUF9EU1RBRERSVjY6Ci0JCQkJaWYgKChzaXplX3QpKGNtaC5jbXNnX2xlbiAt
IENNU0dfQUxJR04oc2l6ZW9mKGNtaCkpKSA8IHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKSB7CisJ
CQkJaWYgKGNtc2dfZGF0YV9sZW4gPCAoaW50KXNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKSB7CiAJ
CQkJCSplcnJvciA9IEVJTlZBTDsKIAkJCQkJcmV0dXJuICgxKTsKIAkJCQl9CkBAIC0zNzk5LDcg
KzM4MDYsNyBAQCBzY3RwX3Byb2Nlc3NfY21zZ3NfZm9yX2luaXQoc3RydWN0IHNjdHBfdGNiICpz
dGNiLCBzdHJ1Y3QgbWJ1ZiAqY29udHJvbCwgaW50ICplcgogCQkJCXNpbjYuc2luNl9sZW4gPSBz
aXplb2Yoc3RydWN0IHNvY2thZGRyX2luNik7CiAjZW5kaWYKIAkJCQlzaW42LnNpbjZfcG9ydCA9
IHN0Y2ItPnJwb3J0OwotCQkJCW1fY29weWRhdGEoY29udHJvbCwgYXQgKyBDTVNHX0FMSUdOKHNp
emVvZihjbWgpKSwgc2l6ZW9mKHN0cnVjdCBpbjZfYWRkciksIChjYWRkcl90KSZzaW42LnNpbjZf
YWRkcik7CisJCQkJbV9jb3B5ZGF0YShjb250cm9sLCBjbXNnX2RhdGFfb2ZmLCBzaXplb2Yoc3Ry
dWN0IGluNl9hZGRyKSwgKGNhZGRyX3QpJnNpbjYuc2luNl9hZGRyKTsKIAkJCQlpZiAoSU42X0lT
X0FERFJfVU5TUEVDSUZJRUQoJnNpbjYuc2luNl9hZGRyKSB8fAogCQkJCSAgICBJTjZfSVNfQURE
Ul9NVUxUSUNBU1QoJnNpbjYuc2luNl9hZGRyKSkgewogCQkJCQkqZXJyb3IgPSBFSU5WQUw7CkBA
IC0zODMyLDExICszODM5LDExIEBAIHNjdHBfcHJvY2Vzc19jbXNnc19mb3JfaW5pdChzdHJ1Y3Qg
c2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBtYnVmICpjb250cm9sLCBpbnQgKmVyCiAJCQkJYnJlYWs7
CiAJCQl9CiAJCX0KLQkJYXQgKz0gQ01TR19BTElHTihjbWguY21zZ19sZW4pOwogCX0KIAlyZXR1
cm4gKDApOwogfQogCisjaWYgZGVmaW5lZChJTkVUKSB8fCBkZWZpbmVkKElORVQ2KQogc3RhdGlj
IHN0cnVjdCBzY3RwX3RjYiAqCiBzY3RwX2ZpbmRhc3NvY2lhdGlvbl9jbXNncyhzdHJ1Y3Qgc2N0
cF9pbnBjYiAqKmlucF9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgcG9y
dCwKQEAgLTM4NDQsMTIgKzM4NTEsMTEgQEAgc2N0cF9maW5kYXNzb2NpYXRpb25fY21zZ3Moc3Ry
dWN0IHNjdHBfaW5wY2IgKippbnBfcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj
dCBzY3RwX25ldHMgKipuZXRfcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqZXJy
b3IpCiB7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQo
X1dJTjMyKQogCVdTQUNNU0dIRFIgY21oOwogI2Vsc2UKIAlzdHJ1Y3QgY21zZ2hkciBjbWg7CiAj
ZW5kaWYKLQlpbnQgdGxlbiwgYXQ7CiAJc3RydWN0IHNjdHBfdGNiICpzdGNiOwogCXN0cnVjdCBz
b2NrYWRkciAqYWRkcjsKICNpZmRlZiBJTkVUCkBAIC0zODU4LDMxICszODY0LDM0IEBAIHNjdHBf
ZmluZGFzc29jaWF0aW9uX2Ntc2dzKHN0cnVjdCBzY3RwX2lucGNiICoqaW5wX3AsCiAjaWZkZWYg
SU5FVDYKIAlzdHJ1Y3Qgc29ja2FkZHJfaW42IHNpbjY7CiAjZW5kaWYKKwlpbnQgdG90X2xlbiwg
cmVtX2xlbiwgY21zZ19kYXRhX2xlbiwgY21zZ19kYXRhX29mZiwgb2ZmOwogCi0JdGxlbiA9IFND
VFBfQlVGX0xFTihjb250cm9sKTsKLQlhdCA9IDA7Ci0Jd2hpbGUgKGF0IDwgdGxlbikgewotCQlp
ZiAoKHRsZW4gLSBhdCkgPCAoaW50KUNNU0dfQUxJR04oc2l6ZW9mKGNtaCkpKSB7CisJdG90X2xl
biA9IFNDVFBfQlVGX0xFTihjb250cm9sKTsKKwlmb3IgKG9mZiA9IDA7IG9mZiA8IHRvdF9sZW47
IG9mZiArPSBDTVNHX0FMSUdOKGNtaC5jbXNnX2xlbikpIHsKKwkJcmVtX2xlbiA9IHRvdF9sZW4g
LSBvZmY7CisJCWlmIChyZW1fbGVuIDwgKGludClDTVNHX0FMSUdOKHNpemVvZihjbWgpKSkgewog
CQkJLyogVGhlcmUgaXMgbm90IGVub3VnaCByb29tIGZvciBvbmUgbW9yZS4gKi8KIAkJCSplcnJv
ciA9IEVJTlZBTDsKIAkJCXJldHVybiAoTlVMTCk7CiAJCX0KLQkJbV9jb3B5ZGF0YShjb250cm9s
LCBhdCwgc2l6ZW9mKGNtaCksIChjYWRkcl90KSZjbWgpOworCQltX2NvcHlkYXRhKGNvbnRyb2ws
IG9mZiwgc2l6ZW9mKGNtaCksIChjYWRkcl90KSZjbWgpOwogCQlpZiAoY21oLmNtc2dfbGVuIDwg
Q01TR19BTElHTihzaXplb2YoY21oKSkpIHsKIAkJCS8qIFdlIGRvbnQndCBoYXZlIGEgY29tcGxl
dGUgQ01TRyBoZWFkZXIuICovCiAJCQkqZXJyb3IgPSBFSU5WQUw7CiAJCQlyZXR1cm4gKE5VTEwp
OwogCQl9Ci0JCWlmICgoKGludCljbWguY21zZ19sZW4gKyBhdCkgPiB0bGVuKSB7CisJCWlmICgo
Y21oLmNtc2dfbGVuID4gSU5UX01BWCkgfHwgKChpbnQpY21oLmNtc2dfbGVuID4gcmVtX2xlbikp
IHsKIAkJCS8qIFdlIGRvbid0IGhhdmUgdGhlIGNvbXBsZXRlIENNU0cuICovCiAJCQkqZXJyb3Ig
PSBFSU5WQUw7CiAJCQlyZXR1cm4gKE5VTEwpOwogCQl9CisJCWNtc2dfZGF0YV9sZW4gPSAoaW50
KWNtaC5jbXNnX2xlbiAtIENNU0dfQUxJR04oc2l6ZW9mKGNtaCkpOworCQljbXNnX2RhdGFfb2Zm
ID0gb2ZmICsgQ01TR19BTElHTihzaXplb2YoY21oKSk7CiAJCWlmIChjbWguY21zZ19sZXZlbCA9
PSBJUFBST1RPX1NDVFApIHsKIAkJCXN3aXRjaCAoY21oLmNtc2dfdHlwZSkgewogI2lmZGVmIElO
RVQKIAkJCWNhc2UgU0NUUF9EU1RBRERSVjQ6Ci0JCQkJaWYgKChzaXplX3QpKGNtaC5jbXNnX2xl
biAtIENNU0dfQUxJR04oc2l6ZW9mKGNtaCkpKSA8IHNpemVvZihzdHJ1Y3QgaW5fYWRkcikpIHsK
KwkJCQlpZiAoY21zZ19kYXRhX2xlbiA8IChpbnQpc2l6ZW9mKHN0cnVjdCBpbl9hZGRyKSkgewog
CQkJCQkqZXJyb3IgPSBFSU5WQUw7CiAJCQkJCXJldHVybiAoTlVMTCk7CiAJCQkJfQpAQCAtMzg5
MiwxMyArMzkwMSwxMyBAQCBzY3RwX2ZpbmRhc3NvY2lhdGlvbl9jbXNncyhzdHJ1Y3Qgc2N0cF9p
bnBjYiAqKmlucF9wLAogCQkJCXNpbi5zaW5fbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9p
bik7CiAjZW5kaWYKIAkJCQlzaW4uc2luX3BvcnQgPSBwb3J0OwotCQkJCW1fY29weWRhdGEoY29u
dHJvbCwgYXQgKyBDTVNHX0FMSUdOKHNpemVvZihjbWgpKSwgc2l6ZW9mKHN0cnVjdCBpbl9hZGRy
KSwgKGNhZGRyX3QpJnNpbi5zaW5fYWRkcik7CisJCQkJbV9jb3B5ZGF0YShjb250cm9sLCBjbXNn
X2RhdGFfb2ZmLCBzaXplb2Yoc3RydWN0IGluX2FkZHIpLCAoY2FkZHJfdCkmc2luLnNpbl9hZGRy
KTsKIAkJCQlhZGRyID0gKHN0cnVjdCBzb2NrYWRkciAqKSZzaW47CiAJCQkJYnJlYWs7CiAjZW5k
aWYKICNpZmRlZiBJTkVUNgogCQkJY2FzZSBTQ1RQX0RTVEFERFJWNjoKLQkJCQlpZiAoKHNpemVf
dCkoY21oLmNtc2dfbGVuIC0gQ01TR19BTElHTihzaXplb2YoY21oKSkpIDwgc2l6ZW9mKHN0cnVj
dCBpbjZfYWRkcikpIHsKKwkJCQlpZiAoY21zZ19kYXRhX2xlbiA8IChpbnQpc2l6ZW9mKHN0cnVj
dCBpbjZfYWRkcikpIHsKIAkJCQkJKmVycm9yID0gRUlOVkFMOwogCQkJCQlyZXR1cm4gKE5VTEwp
OwogCQkJCX0KQEAgLTM5MDgsNyArMzkxNyw3IEBAIHNjdHBfZmluZGFzc29jaWF0aW9uX2Ntc2dz
KHN0cnVjdCBzY3RwX2lucGNiICoqaW5wX3AsCiAJCQkJc2luNi5zaW42X2xlbiA9IHNpemVvZihz
dHJ1Y3Qgc29ja2FkZHJfaW42KTsKICNlbmRpZgogCQkJCXNpbjYuc2luNl9wb3J0ID0gcG9ydDsK
LQkJCQltX2NvcHlkYXRhKGNvbnRyb2wsIGF0ICsgQ01TR19BTElHTihzaXplb2YoY21oKSksIHNp
emVvZihzdHJ1Y3QgaW42X2FkZHIpLCAoY2FkZHJfdCkmc2luNi5zaW42X2FkZHIpOworCQkJCW1f
Y29weWRhdGEoY29udHJvbCwgY21zZ19kYXRhX29mZiwgc2l6ZW9mKHN0cnVjdCBpbjZfYWRkciks
IChjYWRkcl90KSZzaW42LnNpbjZfYWRkcik7CiAjaWZkZWYgSU5FVAogCQkJCWlmIChJTjZfSVNf
QUREUl9WNE1BUFBFRCgmc2luNi5zaW42X2FkZHIpKSB7CiAJCQkJCWluNl9zaW42XzJfc2luKCZz
aW4sICZzaW42KTsKQEAgLTM5MjksMTAgKzM5MzgsMTAgQEAgc2N0cF9maW5kYXNzb2NpYXRpb25f
Y21zZ3Moc3RydWN0IHNjdHBfaW5wY2IgKippbnBfcCwKIAkJCQl9CiAJCQl9CiAJCX0KLQkJYXQg
Kz0gQ01TR19BTElHTihjbWguY21zZ19sZW4pOwogCX0KIAlyZXR1cm4gKE5VTEwpOwogfQorI2Vu
ZGlmCiAKIHN0YXRpYyBzdHJ1Y3QgbWJ1ZiAqCiBzY3RwX2FkZF9jb29raWUoc3RydWN0IG1idWYg
KmluaXQsIGludCBpbml0X29mZnNldCwKQEAgLTM5NDEsOCArMzk1MCw2IEBAIHNjdHBfYWRkX2Nv
b2tpZShzdHJ1Y3QgbWJ1ZiAqaW5pdCwgaW50IGluaXRfb2Zmc2V0LAogCXN0cnVjdCBtYnVmICpj
b3B5X2luaXQsICpjb3B5X2luaXRhY2ssICptX2F0LCAqc2lnLCAqbXJldDsKIAlzdHJ1Y3Qgc2N0
cF9zdGF0ZV9jb29raWUgKnN0YzsKIAlzdHJ1Y3Qgc2N0cF9wYXJhbWhkciAqcGg7Ci0JdWludDhf
dCAqZm9vOwotCWludCBzaWdfb2Zmc2V0OwogCXVpbnQxNl90IGNvb2tpZV9zejsKIAogCW1yZXQg
PSBzY3RwX2dldF9tYnVmX2Zvcl9tc2coKHNpemVvZihzdHJ1Y3Qgc2N0cF9zdGF0ZV9jb29raWUp
ICsKQEAgLTQwMDYsMjUgKzQwMTMsMjEgQEAgc2N0cF9hZGRfY29va2llKHN0cnVjdCBtYnVmICpp
bml0LCBpbnQgaW5pdF9vZmZzZXQsCiAJCQlicmVhazsKIAkJfQogCX0KLQlzaWcgPSBzY3RwX2dl
dF9tYnVmX2Zvcl9tc2coU0NUUF9TRUNSRVRfU0laRSwgMCwgTV9OT1dBSVQsIDEsIE1UX0RBVEEp
OworCXNpZyA9IHNjdHBfZ2V0X21idWZfZm9yX21zZyhTQ1RQX1NJR05BVFVSRV9TSVpFLCAwLCBN
X05PV0FJVCwgMSwgTVRfREFUQSk7CiAJaWYgKHNpZyA9PSBOVUxMKSB7CiAJCS8qIG5vIHNwYWNl
LCBzbyBmcmVlIHRoZSBlbnRpcmUgY2hhaW4gKi8KIAkJc2N0cF9tX2ZyZWVtKG1yZXQpOwogCQly
ZXR1cm4gKE5VTEwpOwogCX0KLQlTQ1RQX0JVRl9MRU4oc2lnKSA9IDA7CiAJU0NUUF9CVUZfTkVY
VChtX2F0KSA9IHNpZzsKLQlzaWdfb2Zmc2V0ID0gMDsKLQlmb28gPSAodWludDhfdCAqKSAobXRv
ZChzaWcsIGNhZGRyX3QpICsgc2lnX29mZnNldCk7Ci0JbWVtc2V0KGZvbywgMCwgU0NUUF9TSUdO
QVRVUkVfU0laRSk7Ci0JKnNpZ25hdHVyZSA9IGZvbzsKLQlTQ1RQX0JVRl9MRU4oc2lnKSArPSBT
Q1RQX1NJR05BVFVSRV9TSVpFOworCVNDVFBfQlVGX0xFTihzaWcpID0gU0NUUF9TSUdOQVRVUkVf
U0laRTsKIAljb29raWVfc3ogKz0gU0NUUF9TSUdOQVRVUkVfU0laRTsKIAlwaC0+cGFyYW1fbGVu
Z3RoID0gaHRvbnMoY29va2llX3N6KTsKKwkqc2lnbmF0dXJlID0gKHVpbnQ4X3QgKiltdG9kKHNp
ZywgY2FkZHJfdCk7CisJbWVtc2V0KCpzaWduYXR1cmUsIDAsIFNDVFBfU0lHTkFUVVJFX1NJWkUp
OwogCXJldHVybiAobXJldCk7CiB9CiAKLQogc3RhdGljIHVpbnQ4X3QKIHNjdHBfZ2V0X2VjdChz
dHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IpCiB7CkBAIC00MDk4LDE1ICs0MTAxLDEwIEBAIHNjdHBfbG93
bGV2ZWxfY2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAgICAgdWludDMyX3Qg
dl90YWcsCiAgICAgdWludDE2X3QgcG9ydCwKICAgICB1bmlvbiBzY3RwX3NvY2tzdG9yZSAqb3Zl
cl9hZGRyLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICAgICB1aW50OF90IG1mbG93dHlwZSwgdWlu
dDMyX3QgbWZsb3dpZCwKICNlbmRpZgotI2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmlu
ZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCi0gICAgaW50IHNvX2xvY2tlZCBTQ1RQX1VOVVNFRAot
I2Vsc2UKLSAgICBpbnQgc29fbG9ja2VkCi0jZW5kaWYKLSAgICApCitpbnQgc29fbG9ja2VkKQog
Lyogbm9mcmFnbWVudF9mbGFnIHRvIHRlbGwgaWYgSVBfREYgc2hvdWxkIGJlIHNldCAoSVB2NCBv
bmx5KSAqLwogewogCS8qKgpAQCAtNDEyMiw5ICs0MTIwLDYgQEAgc2N0cF9sb3dsZXZlbF9jaHVu
a19vdXRwdXQoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkgKiAgIGludGVyZmFjZSBhbmQgc21h
bGxlc3RfbXR1IHNpemUgYXMgd2VsbC4KIAkgKi8KIAkvKiBXaWxsIG5lZWQgaWZkZWZzIGFyb3Vu
ZCB0aGlzICovCi0jaWZkZWYgX19QYW5kYV9fCi0JcGFraGFuZGxlX3R5cGUgb19wYWs7Ci0jZW5k
aWYKIAlzdHJ1Y3QgbWJ1ZiAqbmV3bTsKIAlzdHJ1Y3Qgc2N0cGhkciAqc2N0cGhkcjsKIAlpbnQg
cGFja2V0X2xlbmd0aDsKQEAgLTQxMzMsMTggKzQxMjgsMTYgQEAgc2N0cF9sb3dsZXZlbF9jaHVu
a19vdXRwdXQoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAl1aW50MzJfdCB2cmZfaWQ7CiAjZW5k
aWYKICNpZiBkZWZpbmVkKElORVQpIHx8IGRlZmluZWQoSU5FVDYpCi0jaWYgIWRlZmluZWQoX19Q
YW5kYV9fKQogCXN0cnVjdCBtYnVmICpvX3BhazsKLSNlbmRpZgogCXNjdHBfcm91dGVfdCAqcm8g
PSBOVUxMOwogCXN0cnVjdCB1ZHBoZHIgKnVkcCA9IE5VTEw7CiAjZW5kaWYKIAl1aW50OF90IHRv
c192YWx1ZTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tf
VEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKIAlzdHJ1Y3Qgc29ja2V0ICpzbyA9IE5VTEw7CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoX19B
UFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCWlmIChzb19sb2NrZWQpIHsKIAkJc2N0cF9sb2NrX2Fzc2VydChTQ1RQX0lOUF9TTyhpbnAp
KTsKIAkJU0NUUF9UQ0JfTE9DS19BU1NFUlQoc3RjYik7CkBAIC00MTk5LDcgKzQxOTIsNyBAQCBz
Y3RwX2xvd2xldmVsX2NodW5rX291dHB1dChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogCQlTQ1RQ
X0JVRl9MRU4obmV3bSkgPSBsZW47CiAJCVNDVFBfQlVGX05FWFQobmV3bSkgPSBtOwogCQltID0g
bmV3bTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCWlmIChuZXQgIT0gTlVMTCkgewogCQkJbS0+
bV9wa3RoZHIuZmxvd2lkID0gbmV0LT5mbG93aWQ7CiAJCQlNX0hBU0hUWVBFX1NFVChtLCBuZXQt
PmZsb3d0eXBlKTsKQEAgLTQyMTcsMzYgKzQyMTAsMzAgQEAgc2N0cF9sb3dsZXZlbF9jaHVua19v
dXRwdXQoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJCSAqIFRoaXMgbWVhbnMgZXNwZWNpYWxs
eSwgdGhhdCBpdCBpcyBub3Qgc2V0IGF0IHRoZQogCQkJICogU0NUUCBsYXllci4gU28gdXNlIHRo
ZSB2YWx1ZSBmcm9tIHRoZSBJUCBsYXllci4KIAkJCSAqLwotI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fUGFuZGFfXykgfHwgZGVmaW5l
ZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJdG9zX3ZhbHVlID0g
aW5wLT5pcF9pbnAuaW5wLmlucF9pcF90b3M7Ci0jZWxzZQotCQkJdG9zX3ZhbHVlID0gaW5wLT5p
bnBfaXBfdG9zOwotI2VuZGlmCiAJCX0KIAkJdG9zX3ZhbHVlICY9IDB4ZmM7CiAJCWlmIChlY25f
b2spIHsKIAkJCXRvc192YWx1ZSB8PSBzY3RwX2dldF9lY3Qoc3RjYik7CiAJCX0KIAkJaWYgKChu
b2ZyYWdtZW50X2ZsYWcpICYmIChwb3J0ID09IDApKSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykKLSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSAxMDAwMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCWlwLT5pcF9vZmYgPSBodG9ucyhJ
UF9ERik7Ci0jZWxzZQotCQkJaXAtPmlwX29mZiA9IElQX0RGOwotI2VuZGlmCi0jZWxpZiBkZWZp
bmVkKFdJVEhfQ09OVkVSVF9JUF9PRkYpIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVk
KF9fVXNlcnNwYWNlX29zX0RhcndpbikKKyNlbGlmIGRlZmluZWQoV0lUSF9DT05WRVJUX0lQX09G
RikgfHwgZGVmaW5lZChfX0FQUExFX18pCiAJCQlpcC0+aXBfb2ZmID0gSVBfREY7CiAjZWxzZQog
CQkJaXAtPmlwX29mZiA9IGh0b25zKElQX0RGKTsKICNlbmRpZgogCQl9IGVsc2UgewotI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDEwMDAwMDAKKyNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJaXAtPmlw
X29mZiA9IGh0b25zKDApOwogI2Vsc2UKIAkJCWlwLT5pcF9vZmYgPSAwOwogI2VuZGlmCiAJCX0K
LSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJ
aXAtPmlwX2lkID0gaHRvbnMoU0NUUF9JUF9JRChpbnApKyspOworI2VsaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykKIAkJLyogRnJlZUJTRCBoYXMgYSBmdW5jdGlvbiBmb3IgaXBfaWQncyAqLwogCQlp
cF9maWxsaWQoaXApOwogI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCkBAIC00MjU1LDE4ICs0MjQy
LDEyIEBAIHNjdHBfbG93bGV2ZWxfY2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiICppbnAs
CiAjZWxzZQogCQlpcC0+aXBfaWQgPSBodG9ucyhpcF9pZCsrKTsKICNlbmRpZgotI2VsaWYgZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQotCQlpcC0+aXBfaWQgPSBodG9ucyhTQ1RQX0lQX0lEKGlucCkr
Kyk7CiAjZWxzZQogCQlpcC0+aXBfaWQgPSBTQ1RQX0lQX0lEKGlucCkrKzsKICNlbmRpZgogCi0j
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQo
X19QYW5kYV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAJCWlwLT5pcF90dGwgPSBpbnAtPmlwX2lucC5pbnAuaW5wX2lwX3R0bDsKLSNlbHNlCi0J
CWlwLT5pcF90dGwgPSBpbnAtPmlucF9pcF90dGw7Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSAxMDAwMDAwCisjaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJaXAtPmlwX2xlbiA9IGh0b25z
KHBhY2tldF9sZW5ndGgpOwogI2Vsc2UKIAkJaXAtPmlwX2xlbiA9IHBhY2tldF9sZW5ndGg7CkBA
IC00Mjk4LDEwICs0Mjc5LDE0IEBAIHNjdHBfbG93bGV2ZWxfY2h1bmtfb3V0cHV0KHN0cnVjdCBz
Y3RwX2lucGNiICppbnAsCiAJCQkJc2N0cF9mcmVlX2lmYShuZXQtPnJvLl9zX2FkZHIpOwogCQkJ
CW5ldC0+cm8uX3NfYWRkciA9IE5VTEw7CiAJCQkJbmV0LT5zcmNfYWRkcl9zZWxlY3RlZCA9IDA7
CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJ
CQlST19OSEZSRUUocm8pOworI2Vsc2UKIAkJCQlpZiAocm8tPnJvX3J0KSB7CiAJCQkJCVJURlJF
RShyby0+cm9fcnQpOwogCQkJCQlyby0+cm9fcnQgPSBOVUxMOwogCQkJCX0KKyNlbmRpZgogCQkJ
fQogCQkJaWYgKG5ldC0+c3JjX2FkZHJfc2VsZWN0ZWQgPT0gMCkgewogCQkJCS8qIENhY2hlIHRo
ZSBzb3VyY2UgYWRkcmVzcyAqLwpAQCAtNDM1MSw4ICs0MzM2LDggQEAgc2N0cF9sb3dsZXZlbF9j
aHVua19vdXRwdXQoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJCXVkcC0+dWhfc3BvcnQgPSBo
dG9ucyhTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfdWRwX3R1bm5lbGluZ19wb3J0KSk7CiAJCQl1ZHAt
PnVoX2Rwb3J0ID0gcG9ydDsKIAkJCXVkcC0+dWhfdWxlbiA9IGh0b25zKCh1aW50MTZfdCkocGFj
a2V0X2xlbmd0aCAtIHNpemVvZihzdHJ1Y3QgaXApKSk7Ci0jaWYgIWRlZmluZWQoX19XaW5kb3dz
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
JiYgKChfX0ZyZWVCU0RfdmVyc2lvbiA+IDgwMzAwMCAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA8IDkw
MDAwMCkgfHwgX19GcmVlQlNEX3ZlcnNpb24gPiA5MDAwMDApCisjaWYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQogCQkJaWYgKFZfdWRwX2Nrc3VtKSB7
CiAJCQkJdWRwLT51aF9zdW0gPSBpbl9wc2V1ZG8oaXAtPmlwX3NyYy5zX2FkZHIsIGlwLT5pcF9k
c3Quc19hZGRyLCB1ZHAtPnVoX3VsZW4gKyBodG9ucyhJUFBST1RPX1VEUCkpOwogCQkJfSBlbHNl
IHsKQEAgLTQzODEsNyArNDM2NiwxMSBAQCBzY3RwX2xvd2xldmVsX2NodW5rX291dHB1dChzdHJ1
Y3Qgc2N0cF9pbnBjYiAqaW5wLAogCQkgKiB0aGF0IHNvbWV3aGVyZSBhbmQgYWJvcnQgdGhlIGFz
c29jaWF0aW9uIHJpZ2h0IGF3YXkKIAkJICogKGFzc3VtaW5nIHRoaXMgaXMgYW4gSU5JVCBiZWlu
ZyBzZW50KS4KIAkJICovCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKKwkJaWYgKHJvLT5yb19uaCA9PSBOVUxMKSB7CisjZWxzZQogCQlpZiAocm8t
PnJvX3J0ID09IE5VTEwpIHsKKyNlbmRpZgogCQkJLyoKIAkJCSAqIHNyYyBhZGRyIHNlbGVjdGlv
biBmYWlsZWQgdG8gZmluZCBhIHJvdXRlIChvcgogCQkJICogdmFsaWQgc291cmNlIGFkZHIpLCBz
byB3ZSBjYW4ndCBnZXQgdGhlcmUgZnJvbQpAQCAtNDM5OSw4ICs0Mzg4LDEzIEBAIHNjdHBfbG93
bGV2ZWxfY2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCQkodWludDMyX3Qp
IChudG9obChpcC0+aXBfc3JjLnNfYWRkcikpKTsKIAkJU0NUUERCRyhTQ1RQX0RFQlVHX09VVFBV
VDMsICJEZXN0aW5hdGlvbiBpcyAleFxuIiwKIAkJCSh1aW50MzJfdCkobnRvaGwoaXAtPmlwX2Rz
dC5zX2FkZHIpKSk7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKKwkJU0NUUERCRyhTQ1RQX0RFQlVHX09VVFBVVDMsICJSVFAgcm91dGUgaXMgJXAg
dGhyb3VnaFxuIiwKKwkJCSh2b2lkICopcm8tPnJvX25oKTsKKyNlbHNlCiAJCVNDVFBEQkcoU0NU
UF9ERUJVR19PVVRQVVQzLCAiUlRQIHJvdXRlIGlzICVwIHRocm91Z2hcbiIsCiAJCQkodm9pZCAq
KXJvLT5yb19ydCk7CisjZW5kaWYKIAogCQlpZiAoU0NUUF9HRVRfSEVBREVSX0ZPUl9PVVRQVVQo
b19wYWspKSB7CiAJCQkvKiBmYWlsZWQgdG8gcHJlcGVuZCBkYXRhLCBnaXZlIHVwICovCkBAIC00
NDEyLDggKzQ0MDYsOCBAQCBzY3RwX2xvd2xldmVsX2NodW5rX291dHB1dChzdHJ1Y3Qgc2N0cF9p
bnBjYiAqaW5wLAogCQlpZiAocG9ydCkgewogCQkJc2N0cGhkci0+Y2hlY2tzdW0gPSBzY3RwX2Nh
bGN1bGF0ZV9ja3N1bShtLCBzaXplb2Yoc3RydWN0IGlwKSArIHNpemVvZihzdHJ1Y3QgdWRwaGRy
KSk7CiAJCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19zZW5kc3djcmMpOwotI2lmICFkZWZpbmVkKF9f
V2luZG93c19fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQotI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pICYmICgoX19GcmVlQlNEX3ZlcnNpb24gPiA4MDMwMDAgJiYgX19GcmVlQlNEX3ZlcnNp
b24gPCA5MDAwMDApIHx8IF9fRnJlZUJTRF92ZXJzaW9uID4gOTAwMDAwKQorI2lmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKIAkJCWlmIChWX3VkcF9j
a3N1bSkgewogCQkJCVNDVFBfRU5BQkxFX1VEUF9DU1VNKG9fcGFrKTsKIAkJCX0KQEAgLTQ0MjIs
NyArNDQxNiw3IEBAIHNjdHBfbG93bGV2ZWxfY2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNi
ICppbnAsCiAjZW5kaWYKICNlbmRpZgogCQl9IGVsc2UgewotI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMDAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQltLT5tX3BrdGhkci5jc3VtX2ZsYWdz
ID0gQ1NVTV9TQ1RQOwogCQkJbS0+bV9wa3RoZHIuY3N1bV9kYXRhID0gb2Zmc2V0b2Yoc3RydWN0
IHNjdHBoZHIsIGNoZWNrc3VtKTsKIAkJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3NlbmRod2NyYyk7
CkBAIC00NDQxLDE0ICs0NDM1LDE3IEBAIHNjdHBfbG93bGV2ZWxfY2h1bmtfb3V0cHV0KHN0cnVj
dCBzY3RwX2lucGNiICppbnAsCiAJCQlzY3RwX3BhY2tldF9sb2cob19wYWspOwogI2VuZGlmCiAJ
CS8qIHNlbmQgaXQgb3V0LiAgdGFibGUgaWQgaXMgdGFrZW4gZnJvbSBzdGNiICovCi0jaWYgZGVm
aW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVm
aW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCWlmICgoU0NUUF9C
QVNFX1NZU0NUTChzY3RwX291dHB1dF91bmxvY2tlZCkpICYmIChzb19sb2NrZWQpKSB7CiAJCQlz
byA9IFNDVFBfSU5QX1NPKGlucCk7CiAJCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDApOwogCQl9
CisjZW5kaWYKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQorCQlTQ1RQX1BST0JFNShzZW5kLCBOVUxMLCBzdGNiLCBpcCwgc3RjYiwgc2N0cGhkcik7
CiAjZW5kaWYKIAkJU0NUUF9JUF9PVVRQVVQocmV0LCBvX3Bhaywgcm8sIHN0Y2IsIHZyZl9pZCk7
Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcp
CisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCWlm
ICgoU0NUUF9CQVNFX1NZU0NUTChzY3RwX291dHB1dF91bmxvY2tlZCkpICYmIChzb19sb2NrZWQp
KSB7CiAJCQlhdG9taWNfYWRkX2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIDEpOwogCQkJU0NUUF9U
Q0JfVU5MT0NLKHN0Y2IpOwpAQCAtNDQ1Niw2ICs0NDUzLDExIEBAIHNjdHBfbG93bGV2ZWxfY2h1
bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCQlTQ1RQX1RDQl9MT0NLKHN0Y2Ip
OwogCQkJYXRvbWljX3N1YnRyYWN0X2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIDEpOwogCQl9Cisj
ZW5kaWYKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQorCQlpZiAocG9ydCkgeworCQkJVURQU1RBVF9JTkModWRwc19vcGFja2V0cyk7CisJCX0KICNl
bmRpZgogCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19zZW5kcGFja2V0cyk7CiAJCVNDVFBfU1RBVF9J
TkNSX0NPVU5URVI2NChzY3Rwc19vdXRwYWNrZXRzKTsKQEAgLTQ0NjUsOCArNDQ2Nyw4IEBAIHNj
dHBfbG93bGV2ZWxfY2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCVNDVFBE
QkcoU0NUUF9ERUJVR19PVVRQVVQzLCAiSVAgb3V0cHV0IHJldHVybnMgJWRcbiIsIHJldCk7CiAJ
CWlmIChuZXQgPT0gTlVMTCkgewogCQkJLyogZnJlZSB0ZW1weSByb3V0ZXMgKi8KLSNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDkwMTAwMAotCQkJUk9fUlRG
UkVFKHJvKTsKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQorCQkJUk9fTkhGUkVFKHJvKTsKICNlbHNlCiAJCQlpZiAocm8tPnJvX3J0KSB7CiAJCQkJ
UlRGUkVFKHJvLT5yb19ydCk7CkBAIC00NDc0LDIxICs0NDc2LDM1IEBAIHNjdHBfbG93bGV2ZWxf
Y2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCQl9CiAjZW5kaWYKIAkJfSBl
bHNlIHsKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQorCQkJaWYgKChyby0+cm9fbmggIT0gTlVMTCkgJiYgKG5ldC0+cm8uX3NfYWRkcikgJiYKKyNl
bHNlCiAJCQlpZiAoKHJvLT5yb19ydCAhPSBOVUxMKSAmJiAobmV0LT5yby5fc19hZGRyKSAmJgor
I2VuZGlmCiAJCQkgICAgKChuZXQtPmRlc3Rfc3RhdGUgJiBTQ1RQX0FERFJfTk9fUE1UVUQpID09
IDApKSB7CiAJCQkJdWludDMyX3QgbXR1OwogCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJCQltdHUgPSBTQ1RQX0dBVEhFUl9NVFVfRlJPTV9S
T1VURShuZXQtPnJvLl9zX2FkZHIsICZuZXQtPnJvLl9sX2FkZHIuc2EsIHJvLT5yb19uaCk7Cisj
ZWxzZQogCQkJCW10dSA9IFNDVFBfR0FUSEVSX01UVV9GUk9NX1JPVVRFKG5ldC0+cm8uX3NfYWRk
ciwgJm5ldC0+cm8uX2xfYWRkci5zYSwgcm8tPnJvX3J0KTsKKyNlbmRpZgogCQkJCWlmIChtdHUg
PiAwKSB7CiAJCQkJCWlmIChuZXQtPnBvcnQpIHsKIAkJCQkJCW10dSAtPSBzaXplb2Yoc3RydWN0
IHVkcGhkcik7CiAJCQkJCX0KLQkJCQkJaWYgKChzdGNiICE9IE5VTEwpICYmIChzdGNiLT5hc29j
LnNtYWxsZXN0X210dSA+IG10dSkpIHsKLQkJCQkJCXNjdHBfbXR1X3NpemVfcmVzZXQoaW5wLCAm
c3RjYi0+YXNvYywgbXR1KTsKKwkJCQkJaWYgKG10dSA8IG5ldC0+bXR1KSB7CisJCQkJCQlpZiAo
KHN0Y2IgIT0gTlVMTCkgJiYgKHN0Y2ItPmFzb2Muc21hbGxlc3RfbXR1ID4gbXR1KSkgeworCQkJ
CQkJCXNjdHBfbXR1X3NpemVfcmVzZXQoaW5wLCAmc3RjYi0+YXNvYywgbXR1KTsKKwkJCQkJCX0K
KwkJCQkJCW5ldC0+bXR1ID0gbXR1OwogCQkJCQl9Ci0JCQkJCW5ldC0+bXR1ID0gbXR1OwogCQkJ
CX0KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQor
CQkJfSBlbHNlIGlmIChyby0+cm9fbmggPT0gTlVMTCkgeworI2Vsc2UKIAkJCX0gZWxzZSBpZiAo
cm8tPnJvX3J0ID09IE5VTEwpIHsKKyNlbmRpZgogCQkJCS8qIHJvdXRlIHdhcyBmcmVlZCAqLwog
CQkJCWlmIChuZXQtPnJvLl9zX2FkZHIgJiYKIAkJCQkgICAgbmV0LT5zcmNfYWRkcl9zZWxlY3Rl
ZCkgewpAQCAtNDUwNyw3ICs0NTIzLDcgQEAgc2N0cF9sb3dsZXZlbF9jaHVua19vdXRwdXQoc3Ry
dWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJdWludDMyX3QgZmxvd2xhYmVsLCBmbG93aW5mbzsKIAkJ
c3RydWN0IGlwNl9oZHIgKmlwNmg7CiAJCXN0cnVjdCByb3V0ZV9pbjYgaXA2cm91dGU7Ci0jaWYg
IShkZWZpbmVkKF9fUGFuZGFfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkKKyNpZiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCQlzdHJ1Y3QgaWZuZXQgKmlmcDsKICNlbmRpZgogCQlzdHJ1
Y3Qgc29ja2FkZHJfaW42ICpzaW42LCB0bXAsICpsc2E2LCBsc2E2X3RtcDsKQEAgLTQ1MzEsMTAg
KzQ1NDcsMTAgQEAgc2N0cF9sb3dsZXZlbF9jaHVua19vdXRwdXQoc3RydWN0IHNjdHBfaW5wY2Ig
KmlucCwKIAkJCSAqIFRoaXMgbWVhbnMgZXNwZWNpYWxseSwgdGhhdCBpdCBpcyBub3Qgc2V0IGF0
IHRoZQogCQkJICogU0NUUCBsYXllci4gU28gdXNlIHRoZSB2YWx1ZSBmcm9tIHRoZSBJUCBsYXll
ci4KIAkJCSAqLwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAoIWRlZmluZWQoQVBQTEVfTEVP
UEFSRCkgJiYgIWRlZmluZWQoQVBQTEVfU05PV0xFT1BBUkQpICYmICFkZWZpbmVkKEFQUExFX0xJ
T04pICYmICFkZWZpbmVkKEFQUExFX01PVU5UQUlOTElPTikpCisjaWYgZGVmaW5lZChfX0FQUExF
X18pICAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKSAmJiAoIWRlZmluZWQoQVBQTEVfTEVPUEFS
RCkgJiYgIWRlZmluZWQoQVBQTEVfU05PV0xFT1BBUkQpICYmICFkZWZpbmVkKEFQUExFX0xJT04p
ICYmICFkZWZpbmVkKEFQUExFX01PVU5UQUlOTElPTikpCiAJCQlmbG93bGFiZWwgPSBudG9obChp
bnAtPmlwX2lucC5pbnAuaW5wX2Zsb3cpOwogI2Vsc2UKLQkJCWZsb3dsYWJlbCA9IG50b2hsKCgo
c3RydWN0IGluNnBjYiAqKWlucCktPmluNnBfZmxvd2luZm8pOworCQkJZmxvd2xhYmVsID0gbnRv
aGwoKChzdHJ1Y3QgaW5wY2IgKilpbnApLT5pbnBfZmxvdyk7CiAjZW5kaWYKIAkJfQogCQlmbG93
bGFiZWwgJj0gMHgwMDBmZmZmZjsKQEAgLTQ1NTIsNyArNDU2OCw3IEBAIHNjdHBfbG93bGV2ZWxf
Y2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCVNDVFBfQlVGX0xFTihuZXdt
KSA9IGxlbjsKIAkJU0NUUF9CVUZfTkVYVChuZXdtKSA9IG07CiAJCW0gPSBuZXdtOwotI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKIAkJaWYgKG5ldCAhPSBOVUxMKSB7CiAJCQltLT5tX3BrdGhkci5mbG93
aWQgPSBuZXQtPmZsb3dpZDsKIAkJCU1fSEFTSFRZUEVfU0VUKG0sIG5ldC0+Zmxvd3R5cGUpOwpA
QCAtNDU3MSw3ICs0NTg3LDcgQEAgc2N0cF9sb3dsZXZlbF9jaHVua19vdXRwdXQoc3RydWN0IHNj
dHBfaW5wY2IgKmlucCwKIAogI2lmZGVmIFNDVFBfRU1CRURERURfVjZfU0NPUEUKIAkJLyogS0FN
RSBoYWNrOiBlbWJlZCBzY29wZWlkICovCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVm
aW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaWYgZGVmaW5lZChB
UFBMRV9MRU9QQVJEKSB8fCBkZWZpbmVkKEFQUExFX1NOT1dMRU9QQVJEKQogCQlpZiAoaW42X2Vt
YmVkc2NvcGUoJnNpbjYtPnNpbjZfYWRkciwgc2luNiwgTlVMTCwgTlVMTCkgIT0gMCkKICNlbHNl
CkBAIC00NTg0LDYgKzQ2MDAsNyBAQCBzY3RwX2xvd2xldmVsX2NodW5rX291dHB1dChzdHJ1Y3Qg
c2N0cF9pbnBjYiAqaW5wLAogI2VuZGlmCiAJCXsKIAkJCVNDVFBfTFRSQUNFX0VSUl9SRVRfUEtU
KG0sIGlucCwgc3RjYiwgbmV0LCBTQ1RQX0ZST01fU0NUUF9PVVRQVVQsIEVJTlZBTCk7CisJCQlz
Y3RwX21fZnJlZW0obSk7CiAJCQlyZXR1cm4gKEVJTlZBTCk7CiAJCX0KICNlbmRpZiAvKiBTQ1RQ
X0VNQkVEREVEX1Y2X1NDT1BFICovCkBAIC00NjA3LDEyICs0NjI0LDEwIEBAIHNjdHBfbG93bGV2
ZWxfY2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCQkgKiBUaGlzIG1lYW5z
IGVzcGVjaWFsbHksIHRoYXQgaXQgaXMgbm90IHNldCBhdCB0aGUKIAkJCSAqIFNDVFAgbGF5ZXIu
IFNvIHVzZSB0aGUgdmFsdWUgZnJvbSB0aGUgSVAgbGF5ZXIuCiAJCQkgKi8KLSNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1BhbmRhX18p
IHx8IGRlZmluZWQoX19XaW5kb3dzX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKLSNpZiBk
ZWZpbmVkKF9fQVBQTEVfXykgJiYgKCFkZWZpbmVkKEFQUExFX0xFT1BBUkQpICYmICFkZWZpbmVk
KEFQUExFX1NOT1dMRU9QQVJEKSAmJiAhZGVmaW5lZChBUFBMRV9MSU9OKSAmJiAhZGVmaW5lZChB
UFBMRV9NT1VOVEFJTkxJT04pKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykgJiYgKCFkZWZpbmVkKEFQUExFX0xFT1BBUkQpICYmICFkZWZpbmVkKEFQ
UExFX1NOT1dMRU9QQVJEKSAmJiAhZGVmaW5lZChBUFBMRV9MSU9OKSAmJiAhZGVmaW5lZChBUFBM
RV9NT1VOVEFJTkxJT04pKQogCQkJdG9zX3ZhbHVlID0gKG50b2hsKGlucC0+aXBfaW5wLmlucC5p
bnBfZmxvdykgPj4gMjApICYgMHhmZjsKICNlbHNlCi0JCQl0b3NfdmFsdWUgPSAobnRvaGwoKChz
dHJ1Y3QgaW42cGNiICopaW5wKS0+aW42cF9mbG93aW5mbykgPj4gMjApICYgMHhmZjsKLSNlbmRp
ZgorCQkJdG9zX3ZhbHVlID0gKG50b2hsKCgoc3RydWN0IGlucGNiICopaW5wKS0+aW5wX2Zsb3cp
ID4+IDIwKSAmIDB4ZmY7CiAjZW5kaWYKIAkJfQogCQl0b3NfdmFsdWUgJj0gMHhmYzsKQEAgLTQ2
MzAsNyArNDY0NSw3IEBAIHNjdHBfbG93bGV2ZWxfY2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lu
cGNiICppbnAsCiAJCX0gZWxzZSB7CiAJCQlpcDZoLT5pcDZfbnh0ID0gSVBQUk9UT19TQ1RQOwog
CQl9Ci0JCWlwNmgtPmlwNl9wbGVuID0gaHRvbnMocGFja2V0X2xlbmd0aCAtIHNpemVvZihzdHJ1
Y3QgaXA2X2hkcikpOworCQlpcDZoLT5pcDZfcGxlbiA9IGh0b25zKCh1aW50MTZfdCkocGFja2V0
X2xlbmd0aCAtIHNpemVvZihzdHJ1Y3QgaXA2X2hkcikpKTsKIAkJaXA2aC0+aXA2X2RzdCA9IHNp
bjYtPnNpbjZfYWRkcjsKIAogCQkvKgpAQCAtNDY0OSwxNiArNDY2NCwyMCBAQCBzY3RwX2xvd2xl
dmVsX2NodW5rX291dHB1dChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogCQkJCXNjdHBfZnJlZV9p
ZmEobmV0LT5yby5fc19hZGRyKTsKIAkJCQluZXQtPnJvLl9zX2FkZHIgPSBOVUxMOwogCQkJCW5l
dC0+c3JjX2FkZHJfc2VsZWN0ZWQgPSAwOworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQkJUk9fTkhGUkVFKHJvKTsKKyNlbHNlCiAJCQkJaWYg
KHJvLT5yb19ydCkgewogCQkJCQlSVEZSRUUocm8tPnJvX3J0KTsKIAkJCQkJcm8tPnJvX3J0ID0g
TlVMTDsKIAkJCQl9CisjZW5kaWYKIAkJCX0KIAkJCWlmIChuZXQtPnNyY19hZGRyX3NlbGVjdGVk
ID09IDApIHsKICNpZmRlZiBTQ1RQX0VNQkVEREVEX1Y2X1NDT1BFCiAJCQkJc2luNiA9IChzdHJ1
Y3Qgc29ja2FkZHJfaW42ICopJm5ldC0+cm8uX2xfYWRkcjsKIAkJCQkvKiBLQU1FIGhhY2s6IGVt
YmVkIHNjb3BlaWQgKi8KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZiBkZWZpbmVkKEFQUExFX0xFT1BB
UkQpIHx8IGRlZmluZWQoQVBQTEVfU05PV0xFT1BBUkQpCiAJCQkJaWYgKGluNl9lbWJlZHNjb3Bl
KCZzaW42LT5zaW42X2FkZHIsIHNpbjYsIE5VTEwsIE5VTEwpICE9IDApCiAjZWxzZQpAQCAtNDY3
MSw2ICs0NjkwLDcgQEAgc2N0cF9sb3dsZXZlbF9jaHVua19vdXRwdXQoc3RydWN0IHNjdHBfaW5w
Y2IgKmlucCwKICNlbmRpZgogCQkJCXsKIAkJCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVF9QS1QobSwg
aW5wLCBzdGNiLCBuZXQsIFNDVFBfRlJPTV9TQ1RQX09VVFBVVCwgRUlOVkFMKTsKKwkJCQkJc2N0
cF9tX2ZyZWVtKG0pOwogCQkJCQlyZXR1cm4gKEVJTlZBTCk7CiAJCQkJfQogI2VuZGlmIC8qIFND
VFBfRU1CRURERURfVjZfU0NPUEUgKi8KQEAgLTQ3MDMsNyArNDcyMyw3IEBAIHNjdHBfbG93bGV2
ZWxfY2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAjaWZkZWYgU0NUUF9FTUJF
RERFRF9WNl9TQ09QRQogCQkJc2luNiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopJnJvLT5yb19k
c3Q7CiAJCQkvKiBLQU1FIGhhY2s6IGVtYmVkIHNjb3BlaWQgKi8KLSNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
ICNpZiBkZWZpbmVkKEFQUExFX0xFT1BBUkQpIHx8IGRlZmluZWQoQVBQTEVfU05PV0xFT1BBUkQp
CiAJCQlpZiAoaW42X2VtYmVkc2NvcGUoJnNpbjYtPnNpbjZfYWRkciwgc2luNiwgTlVMTCwgTlVM
TCkgIT0gMCkKICNlbHNlCkBAIC00NzE2LDYgKzQ3MzYsNyBAQCBzY3RwX2xvd2xldmVsX2NodW5r
X291dHB1dChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogI2VuZGlmCiAJCQkgIHsKIAkJCQlTQ1RQ
X0xUUkFDRV9FUlJfUkVUX1BLVChtLCBpbnAsIHN0Y2IsIG5ldCwgU0NUUF9GUk9NX1NDVFBfT1VU
UFVULCBFSU5WQUwpOworCQkJCXNjdHBfbV9mcmVlbShtKTsKIAkJCQlyZXR1cm4gKEVJTlZBTCk7
CiAJCQkgIH0KICNlbmRpZiAvKiBTQ1RQX0VNQkVEREVEX1Y2X1NDT1BFICovCkBAIC00NzQ4LDcg
KzQ3NjksMTEgQEAgc2N0cF9sb3dsZXZlbF9jaHVua19vdXRwdXQoc3RydWN0IHNjdHBfaW5wY2Ig
KmlucCwKIAkJfQogCQlsc2E2LT5zaW42X3BvcnQgPSBpbnAtPnNjdHBfbHBvcnQ7CiAKKyNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQlpZiAocm8t
PnJvX25oID09IE5VTEwpIHsKKyNlbHNlCiAJCWlmIChyby0+cm9fcnQgPT0gTlVMTCkgeworI2Vu
ZGlmCiAJCQkvKgogCQkJICogc3JjIGFkZHIgc2VsZWN0aW9uIGZhaWxlZCB0byBmaW5kIGEgcm91
dGUgKG9yCiAJCQkgKiB2YWxpZCBzb3VyY2UgYWRkciksIHNvIHdlIGNhbid0IGdldCB0aGVyZSBm
cm9tCkBAIC00ODE2LDcgKzQ4NDEsNyBAQCBzY3RwX2xvd2xldmVsX2NodW5rX291dHB1dChzdHJ1
Y3Qgc2N0cF9pbnBjYiAqaW5wLAogCQkgKiB0aGF0IG91ciBybyBwb2ludGVyIGlzIG5vdyBmaWxs
ZWQKIAkJICovCiAJCWlwNmgtPmlwNl9obGltID0gU0NUUF9HRVRfSExJTShpbnAsIHJvKTsKLSNp
ZiAhKGRlZmluZWQoX19QYW5kYV9fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pKQorI2lmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCWlmcCA9IFNDVFBfR0VUX0lGTl9WT0lEX0ZST01fUk9V
VEUocm8pOwogI2VuZGlmCiAKQEAgLTQ4NDgsMjcgKzQ4NzMsMjAgQEAgc2N0cF9sb3dsZXZlbF9j
aHVua19vdXRwdXQoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJaWYgKHBvcnQpIHsKIAkJCXNj
dHBoZHItPmNoZWNrc3VtID0gc2N0cF9jYWxjdWxhdGVfY2tzdW0obSwgc2l6ZW9mKHN0cnVjdCBp
cDZfaGRyKSArIHNpemVvZihzdHJ1Y3QgdWRwaGRyKSk7CiAJCQlTQ1RQX1NUQVRfSU5DUihzY3Rw
c19zZW5kc3djcmMpOwotI2lmIGRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIAkJCXVkcC0+dWhfc3VtID0gMDsKLSNl
bGlmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjZWxzZQogCQkJaWYgKCh1ZHAtPnVoX3N1bSA9
IGluNl9ja3N1bShvX3BhaywgSVBQUk9UT19VRFAsIHNpemVvZihzdHJ1Y3QgaXA2X2hkciksIHBh
Y2tldF9sZW5ndGggLSBzaXplb2Yoc3RydWN0IGlwNl9oZHIpKSkgPT0gMCkgewogCQkJCXVkcC0+
dWhfc3VtID0gMHhmZmZmOwogCQkJfQorI2VuZGlmCiAjZW5kaWYKIAkJfSBlbHNlIHsKLSNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDAwMDAKLSNpZiBf
X0ZyZWVCU0RfdmVyc2lvbiA8IDkwMDAwMAotCQkJc2N0cGhkci0+Y2hlY2tzdW0gPSBzY3RwX2Nh
bGN1bGF0ZV9ja3N1bShtLCBzaXplb2Yoc3RydWN0IGlwNl9oZHIpKTsKLQkJCVNDVFBfU1RBVF9J
TkNSKHNjdHBzX3NlbmRzd2NyYyk7Ci0jZWxzZQotI2lmIF9fRnJlZUJTRF92ZXJzaW9uID4gOTAx
MDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
IAkJCW0tPm1fcGt0aGRyLmNzdW1fZmxhZ3MgPSBDU1VNX1NDVFBfSVBWNjsKLSNlbHNlCi0JCQlt
LT5tX3BrdGhkci5jc3VtX2ZsYWdzID0gQ1NVTV9TQ1RQOwotI2VuZGlmCiAJCQltLT5tX3BrdGhk
ci5jc3VtX2RhdGEgPSBvZmZzZXRvZihzdHJ1Y3Qgc2N0cGhkciwgY2hlY2tzdW0pOwogCQkJU0NU
UF9TVEFUX0lOQ1Ioc2N0cHNfc2VuZGh3Y3JjKTsKLSNlbmRpZgogI2Vsc2UKIAkJCWlmICghKFND
VFBfQkFTRV9TWVNDVEwoc2N0cF9ub19jc3VtX29uX2xvb3BiYWNrKSAmJgogCQkJICAgICAgKHN0
Y2IpICYmIChzdGNiLT5hc29jLnNjb3BlLmxvb3BiYWNrX3Njb3BlKSkpIHsKQEAgLTQ4ODAsNyAr
NDg5OCw3IEBAIHNjdHBfbG93bGV2ZWxfY2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiICpp
bnAsCiAjZW5kaWYKIAkJfQogCQkvKiBzZW5kIGl0IG91dC4gdGFibGUgaWQgaXMgdGFrZW4gZnJv
bSBzdGNiICovCi0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NL
X1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAJCWlmICgoU0NUUF9CQVNFX1NZU0NUTChzY3RwX291dHB1dF91bmxvY2tlZCkpICYmIChz
b19sb2NrZWQpKSB7CiAJCQlzbyA9IFNDVFBfSU5QX1NPKGlucCk7CiAJCQlTQ1RQX1NPQ0tFVF9V
TkxPQ0soc28sIDApOwpAQCAtNDg5MCwxMiArNDkwOCwxNSBAQCBzY3RwX2xvd2xldmVsX2NodW5r
X291dHB1dChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogCQlpZiAoU0NUUF9CQVNFX1NZU0NUTChz
Y3RwX2xvZ2dpbmdfbGV2ZWwpICYgU0NUUF9MQVNUX1BBQ0tFVF9UUkFDSU5HKQogCQkJc2N0cF9w
YWNrZXRfbG9nKG9fcGFrKTsKICNlbmRpZgotI2lmICEoZGVmaW5lZChfX1BhbmRhX18pIHx8IGRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykpCisjaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKQorCQlTQ1RQX1BST0JFNShzZW5kLCBOVUxMLCBzdGNiLCBpcDZo
LCBzdGNiLCBzY3RwaGRyKTsKKyNlbmRpZgogCQlTQ1RQX0lQNl9PVVRQVVQocmV0LCBvX3Bhaywg
KHN0cnVjdCByb3V0ZV9pbjYgKilybywgJmlmcCwgc3RjYiwgdnJmX2lkKTsKICNlbHNlCiAJCVND
VFBfSVA2X09VVFBVVChyZXQsIG9fcGFrLCAoc3RydWN0IHJvdXRlX2luNiAqKXJvLCBOVUxMLCBz
dGNiLCB2cmZfaWQpOwogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQo
U0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiAJCWlmICgoU0NUUF9CQVNFX1NZU0NUTChzY3RwX291dHB1dF91bmxv
Y2tlZCkpICYmIChzb19sb2NrZWQpKSB7CiAJCQlhdG9taWNfYWRkX2ludCgmc3RjYi0+YXNvYy5y
ZWZjbnQsIDEpOwogCQkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwpAQCAtNDkxMCw2ICs0OTMxLDEx
IEBAIHNjdHBfbG93bGV2ZWxfY2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJ
CQlzaW42LT5zaW42X3BvcnQgPSBwcmV2X3BvcnQ7CiAJCX0KIAkJU0NUUERCRyhTQ1RQX0RFQlVH
X09VVFBVVDMsICJyZXR1cm4gZnJvbSBzZW5kIGlzICVkXG4iLCByZXQpOworI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCWlmIChwb3J0KSB7CisJ
CQlVRFBTVEFUX0lOQyh1ZHBzX29wYWNrZXRzKTsKKwkJfQorI2VuZGlmCiAJCVNDVFBfU1RBVF9J
TkNSKHNjdHBzX3NlbmRwYWNrZXRzKTsKIAkJU0NUUF9TVEFUX0lOQ1JfQ09VTlRFUjY0KHNjdHBz
X291dHBhY2tldHMpOwogCQlpZiAocmV0KSB7CkBAIC00OTE3LDggKzQ5NDMsOCBAQCBzY3RwX2xv
d2xldmVsX2NodW5rX291dHB1dChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogCQl9CiAJCWlmIChu
ZXQgPT0gTlVMTCkgewogCQkJLyogTm93IGlmIHdlIGhhZCBhIHRlbXAgcm91dGUgZnJlZSBpdCAq
LwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID4gOTAxMDAw
Ci0JCQlST19SVEZSRUUocm8pOworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCisJCQlST19OSEZSRUUocm8pOwogI2Vsc2UKIAkJCWlmIChyby0+cm9f
cnQpIHsKIAkJCQlSVEZSRUUocm8tPnJvX3J0KTsKQEAgLTQ5MjcsNyArNDk1MywxMSBAQCBzY3Rw
X2xvd2xldmVsX2NodW5rX291dHB1dChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogI2VuZGlmCiAJ
CX0gZWxzZSB7CiAJCQkvKiBQTVRVIGNoZWNrIHZlcnN1cyBzbWFsbGVzdCBhc29jIE1UVSBnb2Vz
IGhlcmUgKi8KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQorCQkJaWYgKHJvLT5yb19uaCA9PSBOVUxMKSB7CisjZWxzZQogCQkJaWYgKHJvLT5yb19y
dCA9PSBOVUxMKSB7CisjZW5kaWYKIAkJCQkvKiBSb3V0ZSB3YXMgZnJlZWQgKi8KIAkJCQlpZiAo
bmV0LT5yby5fc19hZGRyICYmCiAJCQkJICAgIG5ldC0+c3JjX2FkZHJfc2VsZWN0ZWQpIHsKQEAg
LTQ5MzYsMjQgKzQ5NjYsMzQgQEAgc2N0cF9sb3dsZXZlbF9jaHVua19vdXRwdXQoc3RydWN0IHNj
dHBfaW5wY2IgKmlucCwKIAkJCQl9CiAJCQkJbmV0LT5zcmNfYWRkcl9zZWxlY3RlZCA9IDA7CiAJ
CQl9CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
KwkJCWlmICgocm8tPnJvX25oICE9IE5VTEwpICYmIChuZXQtPnJvLl9zX2FkZHIpICYmCisjZWxz
ZQogCQkJaWYgKChyby0+cm9fcnQgIT0gTlVMTCkgJiYgKG5ldC0+cm8uX3NfYWRkcikgJiYKKyNl
bmRpZgogCQkJICAgICgobmV0LT5kZXN0X3N0YXRlICYgU0NUUF9BRERSX05PX1BNVFVEKSA9PSAw
KSkgewogCQkJCXVpbnQzMl90IG10dTsKIAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQkJbXR1ID0gU0NUUF9HQVRIRVJfTVRVX0ZST01fUk9V
VEUobmV0LT5yby5fc19hZGRyLCAmbmV0LT5yby5fbF9hZGRyLnNhLCByby0+cm9fbmgpOworI2Vs
c2UKIAkJCQltdHUgPSBTQ1RQX0dBVEhFUl9NVFVfRlJPTV9ST1VURShuZXQtPnJvLl9zX2FkZHIs
ICZuZXQtPnJvLl9sX2FkZHIuc2EsIHJvLT5yb19ydCk7CisjZW5kaWYKIAkJCQlpZiAobXR1ID4g
MCkgewogCQkJCQlpZiAobmV0LT5wb3J0KSB7CiAJCQkJCQltdHUgLT0gc2l6ZW9mKHN0cnVjdCB1
ZHBoZHIpOwogCQkJCQl9Ci0JCQkJCWlmICgoc3RjYiAhPSBOVUxMKSAmJiAoc3RjYi0+YXNvYy5z
bWFsbGVzdF9tdHUgPiBtdHUpKSB7Ci0JCQkJCQlzY3RwX210dV9zaXplX3Jlc2V0KGlucCwgJnN0
Y2ItPmFzb2MsIG10dSk7CisJCQkJCWlmIChtdHUgPCBuZXQtPm10dSkgeworCQkJCQkJaWYgKChz
dGNiICE9IE5VTEwpICYmIChzdGNiLT5hc29jLnNtYWxsZXN0X210dSA+IG10dSkpIHsKKwkJCQkJ
CQlzY3RwX210dV9zaXplX3Jlc2V0KGlucCwgJnN0Y2ItPmFzb2MsIG10dSk7CisJCQkJCQl9CisJ
CQkJCQluZXQtPm10dSA9IG10dTsKIAkJCQkJfQotCQkJCQluZXQtPm10dSA9IG10dTsKIAkJCQl9
CiAJCQl9Ci0jaWYgIWRlZmluZWQoX19QYW5kYV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQllbHNlIGlmIChpZnApIHsKLSNpZiBk
ZWZpbmVkKF9fV2luZG93c19fKQorI2lmIGRlZmluZWQoX1dJTjMyKQogI2RlZmluZSBORF9JRklO
Rk8oaWZwKQkoaWZwKQogI2RlZmluZSBsaW5rbXR1CQlpZl9tdHUKICNlbmRpZgpAQCAtNTAzMCwx
MSArNTA3MCw3IEBAIHNjdHBfbG93bGV2ZWxfY2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNi
ICppbnAsCiAKIAogdm9pZAotc2N0cF9zZW5kX2luaXRpYXRlKHN0cnVjdCBzY3RwX2lucGNiICpp
bnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgaW50IHNvX2xvY2tlZAotI2lmICFkZWZpbmVkKF9f
QVBQTEVfXykgJiYgIWRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCi0gICAgU0NUUF9VTlVT
RUQKLSNlbmRpZgotICAgICkKK3NjdHBfc2VuZF9pbml0aWF0ZShzdHJ1Y3Qgc2N0cF9pbnBjYiAq
aW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIGludCBzb19sb2NrZWQpCiB7CiAJc3RydWN0IG1i
dWYgKm0sICptX2xhc3Q7CiAJc3RydWN0IHNjdHBfbmV0cyAqbmV0OwpAQCAtNTA0Nyw3ICs1MDgz
LDcgQEAgc2N0cF9zZW5kX2luaXRpYXRlKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBz
Y3RwX3RjYiAqc3RjYiwgaW50IHNvX2xvY2tlZAogCWludCBlcnJvcjsKIAl1aW50MTZfdCBudW1f
ZXh0LCBjaHVua19sZW4sIHBhZGRpbmdfbGVuLCBwYXJhbWV0ZXJfbGVuOwogCi0jaWYgZGVmaW5l
ZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJaWYgKHNvX2xvY2tlZCkgewogCQlzY3RwX2xvY2tfYXNzZXJ0KFNDVFBfSU5QX1NP
KGlucCkpOwogCX0gZWxzZSB7CkBAIC01MzEyLDcgKzUzNDgsNyBAQCBzY3RwX3NlbmRfaW5pdGlh
dGUoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLCBpbnQgc29f
bG9ja2VkCiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0sIDAsIE5V
TEwsIDAsIDAsIDAsIDAsCiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlucC0+c2N0cF9scG9ydCwgc3RjYi0+cnBvcnQsIGh0b25sKDApLAogCSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBuZXQtPnBvcnQsIE5VTEwsCi0jaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLAog
I2VuZGlmCiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvX2xvY2tl
ZCkpKSB7CkBAIC01MzMwLDcgKzUzNjYsMTAgQEAgc2N0cF9zZW5kX2luaXRpYXRlKHN0cnVjdCBz
Y3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgaW50IHNvX2xvY2tlZAogCiBz
dHJ1Y3QgbWJ1ZiAqCiBzY3RwX2FyZXRoZXJlX3VucmVjb2duaXplZF9wYXJhbWV0ZXJzKHN0cnVj
dCBtYnVmICppbl9pbml0cGt0LAotCWludCBwYXJhbV9vZmZzZXQsIGludCAqYWJvcnRfcHJvY2Vz
c2luZywgc3RydWN0IHNjdHBfY2h1bmtoZHIgKmNwLCBpbnQgKm5hdF9mcmllbmRseSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBhcmFtX29mZnNldCwgaW50ICph
Ym9ydF9wcm9jZXNzaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dHJ1Y3Qgc2N0cF9jaHVua2hkciAqY3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCAqbmF0X2ZyaWVuZGx5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgKmNvb2tpZV9mb3VuZCkKIHsKIAkvKgogCSAqIEdpdmVuIGEgbWJ1ZiBjb250
YWluaW5nIGFuIElOSVQgb3IgSU5JVC1BQ0sgd2l0aCB0aGUgcGFyYW1fb2Zmc2V0CkBAIC01MzQ4
LDE4ICs1Mzg3LDIwIEBAIHNjdHBfYXJldGhlcmVfdW5yZWNvZ25pemVkX3BhcmFtZXRlcnMoc3Ry
dWN0IG1idWYgKmluX2luaXRwa3QsCiAJICovCiAJc3RydWN0IHNjdHBfcGFyYW1oZHIgKnBoZHIs
IHBhcmFtczsKIAotCXN0cnVjdCBtYnVmICptYXQsICpvcF9lcnI7Ci0JY2hhciB0ZW1wYnVmW1ND
VFBfUEFSQU1fQlVGRkVSX1NJWkVdOworCXN0cnVjdCBtYnVmICptYXQsICptX3RtcCwgKm9wX2Vy
ciwgKm9wX2Vycl9sYXN0OwogCWludCBhdCwgbGltaXQsIHBhZF9uZWVkZWQ7CiAJdWludDE2X3Qg
cHR5cGUsIHBsZW4sIHBhZGRlZF9zaXplOwotCWludCBlcnJfYXQ7CiAKIAkqYWJvcnRfcHJvY2Vz
c2luZyA9IDA7CisJaWYgKGNvb2tpZV9mb3VuZCAhPSBOVUxMKSB7CisJCSpjb29raWVfZm91bmQg
PSAwOworCX0KIAltYXQgPSBpbl9pbml0cGt0OwotCWVycl9hdCA9IDA7CiAJbGltaXQgPSBudG9o
cyhjcC0+Y2h1bmtfbGVuZ3RoKSAtIHNpemVvZihzdHJ1Y3Qgc2N0cF9pbml0X2NodW5rKTsKIAlh
dCA9IHBhcmFtX29mZnNldDsKIAlvcF9lcnIgPSBOVUxMOworCW9wX2Vycl9sYXN0ID0gTlVMTDsK
KwlwYWRfbmVlZGVkID0gMDsKIAlTQ1RQREJHKFNDVFBfREVCVUdfT1VUUFVUMSwgIkNoZWNrIGZv
ciB1bnJlY29nbml6ZWQgcGFyYW0nc1xuIik7CiAJcGhkciA9IHNjdHBfZ2V0X25leHRfcGFyYW0o
bWF0LCBhdCwgJnBhcmFtcywgc2l6ZW9mKHBhcmFtcykpOwogCXdoaWxlICgocGhkciAhPSBOVUxM
KSAmJiAoKHNpemVfdClsaW1pdCA+PSBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpKSkgewpA
QCAtNTM4MiwxMiArNTQyMywxNyBAQCBzY3RwX2FyZXRoZXJlX3VucmVjb2duaXplZF9wYXJhbWV0
ZXJzKHN0cnVjdCBtYnVmICppbl9pbml0cGt0LAogCQlzd2l0Y2ggKHB0eXBlKSB7CiAJCQkvKiBQ
YXJhbSdzIHdpdGggdmFyaWFibGUgc2l6ZSAqLwogCQljYXNlIFNDVFBfSEVBUlRCRUFUX0lORk86
Ci0JCWNhc2UgU0NUUF9TVEFURV9DT09LSUU6CiAJCWNhc2UgU0NUUF9VTlJFQ09HX1BBUkFNOgog
CQljYXNlIFNDVFBfRVJST1JfQ0FVU0VfSU5EOgogCQkJLyogb2sgc2tpcCBmd2QgKi8KIAkJCWF0
ICs9IHBhZGRlZF9zaXplOwogCQkJYnJlYWs7CisJCWNhc2UgU0NUUF9TVEFURV9DT09LSUU6CisJ
CQlpZiAoY29va2llX2ZvdW5kICE9IE5VTEwpIHsKKwkJCQkqY29va2llX2ZvdW5kID0gMTsKKwkJ
CX0KKwkJCWF0ICs9IHBhZGRlZF9zaXplOworCQkJYnJlYWs7CiAJCQkvKiBQYXJhbSdzIHdpdGgg
dmFyaWFibGUgc2l6ZSB3aXRoaW4gYSByYW5nZSAqLwogCQljYXNlIFNDVFBfQ0hVTktfTElTVDoK
IAkJY2FzZSBTQ1RQX1NVUFBPUlRFRF9DSFVOS19FWFQ6CkBAIC01NDc2LDcwICs1NTIyLDQ3IEBA
IHNjdHBfYXJldGhlcmVfdW5yZWNvZ25pemVkX3BhcmFtZXRlcnMoc3RydWN0IG1idWYgKmluX2lu
aXRwa3QsCiAJCQlicmVhazsKIAkJY2FzZSBTQ1RQX0hPU1ROQU1FX0FERFJFU1M6CiAJCXsKLQkJ
CS8qIFdlIGNhbiBOT1QgaGFuZGxlIEhPU1QgTkFNRSBhZGRyZXNzZXMhISAqLworCQkJLyogSG9z
dG5hbWUgcGFyYW1ldGVycyBhcmUgZGVwcmVjYXRlZC4gKi8KKwkJCXN0cnVjdCBzY3RwX2dlbl9l
cnJvcl9jYXVzZSAqY2F1c2U7CiAJCQlpbnQgbF9sZW47CiAKIAkJCVNDVFBEQkcoU0NUUF9ERUJV
R19PVVRQVVQxLCAiQ2FuJ3QgaGFuZGxlIGhvc3RuYW1lIGFkZHJlc3Nlcy4uIGFib3J0IHByb2Nl
c3NpbmdcbiIpOwogCQkJKmFib3J0X3Byb2Nlc3NpbmcgPSAxOwotCQkJaWYgKG9wX2VyciA9PSBO
VUxMKSB7Ci0JCQkJLyogT2sgbmVlZCB0byB0cnkgdG8gZ2V0IGEgbWJ1ZiAqLworCQkJc2N0cF9t
X2ZyZWVtKG9wX2Vycik7CisJCQlvcF9lcnIgPSBOVUxMOworCQkJb3BfZXJyX2xhc3QgPSBOVUxM
OwogI2lmZGVmIElORVQ2Ci0JCQkJbF9sZW4gPSBTQ1RQX01JTl9PVkVSSEVBRDsKKwkJCWxfbGVu
ID0gU0NUUF9NSU5fT1ZFUkhFQUQ7CiAjZWxzZQotCQkJCWxfbGVuID0gU0NUUF9NSU5fVjRfT1ZF
UkhFQUQ7CisJCQlsX2xlbiA9IFNDVFBfTUlOX1Y0X09WRVJIRUFEOwogI2VuZGlmCi0JCQkJbF9s
ZW4gKz0gc2l6ZW9mKHN0cnVjdCBzY3RwX2NodW5raGRyKTsKLQkJCQlsX2xlbiArPSBwbGVuOwot
CQkJCWxfbGVuICs9IHNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcik7Ci0JCQkJb3BfZXJyID0g
c2N0cF9nZXRfbWJ1Zl9mb3JfbXNnKGxfbGVuLCAwLCBNX05PV0FJVCwgMSwgTVRfREFUQSk7Ci0J
CQkJaWYgKG9wX2VycikgewotCQkJCQlTQ1RQX0JVRl9MRU4ob3BfZXJyKSA9IDA7Ci0JCQkJCS8q
Ci0JCQkJCSAqIHByZS1yZXNlcnZlIHNwYWNlIGZvciBpcCBhbmQgc2N0cAotCQkJCQkgKiBoZWFk
ZXIgIGFuZCBjaHVuayBoZHIKLQkJCQkJICovCisJCQlsX2xlbiArPSBzaXplb2Yoc3RydWN0IHNj
dHBfY2h1bmtoZHIpOworCQkJbF9sZW4gKz0gc2l6ZW9mKHN0cnVjdCBzY3RwX2dlbl9lcnJvcl9j
YXVzZSk7CisJCQlvcF9lcnIgPSBzY3RwX2dldF9tYnVmX2Zvcl9tc2cobF9sZW4sIDAsIE1fTk9X
QUlULCAxLCBNVF9EQVRBKTsKKwkJCWlmIChvcF9lcnIgIT0gTlVMTCkgeworCQkJCS8qCisJCQkJ
ICogUHJlLXJlc2VydmUgc3BhY2UgZm9yIElQLCBTQ1RQLCBhbmQKKwkJCQkgKiBjaHVuayBoZWFk
ZXIuCisJCQkJICovCiAjaWZkZWYgSU5FVDYKLQkJCQkJU0NUUF9CVUZfUkVTVl9VRihvcF9lcnIs
IHNpemVvZihzdHJ1Y3QgaXA2X2hkcikpOworCQkJCVNDVFBfQlVGX1JFU1ZfVUYob3BfZXJyLCBz
aXplb2Yoc3RydWN0IGlwNl9oZHIpKTsKICNlbHNlCi0JCQkJCVNDVFBfQlVGX1JFU1ZfVUYob3Bf
ZXJyLCBzaXplb2Yoc3RydWN0IGlwKSk7Ci0jZW5kaWYKLQkJCQkJU0NUUF9CVUZfUkVTVl9VRihv
cF9lcnIsIHNpemVvZihzdHJ1Y3Qgc2N0cGhkcikpOwotCQkJCQlTQ1RQX0JVRl9SRVNWX1VGKG9w
X2Vyciwgc2l6ZW9mKHN0cnVjdCBzY3RwX2NodW5raGRyKSk7Ci0JCQkJfQotCQkJfQotCQkJaWYg
KG9wX2VycikgewotCQkJCS8qIElmIHdlIGhhdmUgc3BhY2UgKi8KLQkJCQlzdHJ1Y3Qgc2N0cF9w
YXJhbWhkciBzOwotCi0JCQkJaWYgKGVycl9hdCAlIDQpIHsKLQkJCQkJdWludDMyX3QgY3B0aGlz
ID0gMDsKLQotCQkJCQlwYWRfbmVlZGVkID0gNCAtIChlcnJfYXQgJSA0KTsKLQkJCQkJbV9jb3B5
YmFjayhvcF9lcnIsIGVycl9hdCwgcGFkX25lZWRlZCwgKGNhZGRyX3QpJmNwdGhpcyk7Ci0JCQkJ
CWVycl9hdCArPSBwYWRfbmVlZGVkOwotCQkJCX0KLQkJCQlzLnBhcmFtX3R5cGUgPSBodG9ucyhT
Q1RQX0NBVVNFX1VOUkVTT0xWQUJMRV9BRERSKTsKLQkJCQlzLnBhcmFtX2xlbmd0aCA9IGh0b25z
KHNpemVvZihzKSArIHBsZW4pOwotCQkJCW1fY29weWJhY2sob3BfZXJyLCBlcnJfYXQsIHNpemVv
ZihzKSwgKGNhZGRyX3QpJnMpOwotCQkJCWVycl9hdCArPSBzaXplb2Yocyk7Ci0JCQkJaWYgKHBs
ZW4gPiBzaXplb2YodGVtcGJ1ZikpIHsKLQkJCQkJcGxlbiA9IHNpemVvZih0ZW1wYnVmKTsKLQkJ
CQl9Ci0JCQkJcGhkciA9IHNjdHBfZ2V0X25leHRfcGFyYW0obWF0LCBhdCwgKHN0cnVjdCBzY3Rw
X3BhcmFtaGRyICopdGVtcGJ1ZiwgcGxlbik7Ci0JCQkJaWYgKHBoZHIgPT0gTlVMTCkgeworCQkJ
CVNDVFBfQlVGX1JFU1ZfVUYob3BfZXJyLCBzaXplb2Yoc3RydWN0IGlwKSk7CisjZW5kaWYKKwkJ
CQlTQ1RQX0JVRl9SRVNWX1VGKG9wX2Vyciwgc2l6ZW9mKHN0cnVjdCBzY3RwaGRyKSk7CisJCQkJ
U0NUUF9CVUZfUkVTVl9VRihvcF9lcnIsIHNpemVvZihzdHJ1Y3Qgc2N0cF9jaHVua2hkcikpOwor
CQkJCVNDVFBfQlVGX0xFTihvcF9lcnIpID0gc2l6ZW9mKHN0cnVjdCBzY3RwX2dlbl9lcnJvcl9j
YXVzZSk7CisJCQkJY2F1c2UgPSBtdG9kKG9wX2Vyciwgc3RydWN0IHNjdHBfZ2VuX2Vycm9yX2Nh
dXNlICopOworCQkJCWNhdXNlLT5jb2RlID0gaHRvbnMoU0NUUF9DQVVTRV9VTlJFU09MVkFCTEVf
QUREUik7CisJCQkJY2F1c2UtPmxlbmd0aCA9IGh0b25zKCh1aW50MTZfdCkoc2l6ZW9mKHN0cnVj
dCBzY3RwX2dlbl9lcnJvcl9jYXVzZSkgKyBwbGVuKSk7CisJCQkJU0NUUF9CVUZfTkVYVChvcF9l
cnIpID0gU0NUUF9NX0NPUFlNKG1hdCwgYXQsIHBsZW4sIE1fTk9XQUlUKTsKKwkJCQlpZiAoU0NU
UF9CVUZfTkVYVChvcF9lcnIpID09IE5VTEwpIHsKIAkJCQkJc2N0cF9tX2ZyZWVtKG9wX2Vycik7
Ci0JCQkJCS8qCi0JCQkJCSAqIHdlIGFyZSBvdXQgb2YgbWVtb3J5IGJ1dCB3ZSBzdGlsbAotCQkJ
CQkgKiBuZWVkIHRvIGhhdmUgYSBsb29rIGF0IHdoYXQgdG8gZG8KLQkJCQkJICogKHRoZSBzeXN0
ZW0gaXMgaW4gdHJvdWJsZQotCQkJCQkgKiB0aG91Z2gpLgotCQkJCQkgKi8KLQkJCQkJcmV0dXJu
IChOVUxMKTsKKwkJCQkJb3BfZXJyID0gTlVMTDsKKwkJCQkJb3BfZXJyX2xhc3QgPSBOVUxMOwog
CQkJCX0KLQkJCQltX2NvcHliYWNrKG9wX2VyciwgZXJyX2F0LCBwbGVuLCAoY2FkZHJfdClwaGRy
KTsKIAkJCX0KIAkJCXJldHVybiAob3BfZXJyKTsKLQkJCWJyZWFrOwogCQl9CiAJCWRlZmF1bHQ6
CiAJCQkvKgpAQCAtNTU1OSw3ICs1NTgyLDYgQEAgc2N0cF9hcmV0aGVyZV91bnJlY29nbml6ZWRf
cGFyYW1ldGVycyhzdHJ1Y3QgbWJ1ZiAqaW5faW5pdHBrdCwKIAkJCQkJbF9sZW4gPSBTQ1RQX01J
Tl9WNF9PVkVSSEVBRDsKICNlbmRpZgogCQkJCQlsX2xlbiArPSBzaXplb2Yoc3RydWN0IHNjdHBf
Y2h1bmtoZHIpOwotCQkJCQlsX2xlbiArPSBwbGVuOwogCQkJCQlsX2xlbiArPSBzaXplb2Yoc3Ry
dWN0IHNjdHBfcGFyYW1oZHIpOwogCQkJCQlvcF9lcnIgPSBzY3RwX2dldF9tYnVmX2Zvcl9tc2co
bF9sZW4sIDAsIE1fTk9XQUlULCAxLCBNVF9EQVRBKTsKIAkJCQkJaWYgKG9wX2VycikgewpAQCAt
NTU3MSw0MSArNTU5Myw1NSBAQCBzY3RwX2FyZXRoZXJlX3VucmVjb2duaXplZF9wYXJhbWV0ZXJz
KHN0cnVjdCBtYnVmICppbl9pbml0cGt0LAogI2VuZGlmCiAJCQkJCQlTQ1RQX0JVRl9SRVNWX1VG
KG9wX2Vyciwgc2l6ZW9mKHN0cnVjdCBzY3RwaGRyKSk7CiAJCQkJCQlTQ1RQX0JVRl9SRVNWX1VG
KG9wX2Vyciwgc2l6ZW9mKHN0cnVjdCBzY3RwX2NodW5raGRyKSk7CisJCQkJCQlvcF9lcnJfbGFz
dCA9IG9wX2VycjsKIAkJCQkJfQogCQkJCX0KLQkJCQlpZiAob3BfZXJyKSB7CisJCQkJaWYgKG9w
X2VyciAhPSBOVUxMKSB7CiAJCQkJCS8qIElmIHdlIGhhdmUgc3BhY2UgKi8KLQkJCQkJc3RydWN0
IHNjdHBfcGFyYW1oZHIgczsKKwkJCQkJc3RydWN0IHNjdHBfcGFyYW1oZHIgKnBhcmFtOwogCi0J
CQkJCWlmIChlcnJfYXQgJSA0KSB7Ci0JCQkJCQl1aW50MzJfdCBjcHRoaXMgPSAwOwotCi0JCQkJ
CQlwYWRfbmVlZGVkID0gNCAtIChlcnJfYXQgJSA0KTsKLQkJCQkJCW1fY29weWJhY2sob3BfZXJy
LCBlcnJfYXQsIHBhZF9uZWVkZWQsIChjYWRkcl90KSZjcHRoaXMpOwotCQkJCQkJZXJyX2F0ICs9
IHBhZF9uZWVkZWQ7CisJCQkJCWlmIChwYWRfbmVlZGVkID4gMCkgeworCQkJCQkJb3BfZXJyX2xh
c3QgPSBzY3RwX2FkZF9wYWRfdG9tYnVmKG9wX2Vycl9sYXN0LCBwYWRfbmVlZGVkKTsKKwkJCQkJ
fQorCQkJCQlpZiAob3BfZXJyX2xhc3QgPT0gTlVMTCkgeworCQkJCQkJc2N0cF9tX2ZyZWVtKG9w
X2Vycik7CisJCQkJCQlvcF9lcnIgPSBOVUxMOworCQkJCQkJb3BfZXJyX2xhc3QgPSBOVUxMOwor
CQkJCQkJZ290byBtb3JlX3Byb2Nlc3Npbmc7CiAJCQkJCX0KLQkJCQkJcy5wYXJhbV90eXBlID0g
aHRvbnMoU0NUUF9VTlJFQ09HX1BBUkFNKTsKLQkJCQkJcy5wYXJhbV9sZW5ndGggPSBodG9ucyhz
aXplb2YocykgKyBwbGVuKTsKLQkJCQkJbV9jb3B5YmFjayhvcF9lcnIsIGVycl9hdCwgc2l6ZW9m
KHMpLCAoY2FkZHJfdCkmcyk7Ci0JCQkJCWVycl9hdCArPSBzaXplb2Yocyk7Ci0JCQkJCWlmIChw
bGVuID4gc2l6ZW9mKHRlbXBidWYpKSB7Ci0JCQkJCQlwbGVuID0gc2l6ZW9mKHRlbXBidWYpOwor
CQkJCQlpZiAoTV9UUkFJTElOR1NQQUNFKG9wX2Vycl9sYXN0KSA8IChpbnQpc2l6ZW9mKHN0cnVj
dCBzY3RwX3BhcmFtaGRyKSkgeworCQkJCQkJbV90bXAgPSBzY3RwX2dldF9tYnVmX2Zvcl9tc2co
c2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKSwgMCwgTV9OT1dBSVQsIDEsIE1UX0RBVEEpOwor
CQkJCQkJaWYgKG1fdG1wID09IE5VTEwpIHsKKwkJCQkJCQlzY3RwX21fZnJlZW0ob3BfZXJyKTsK
KwkJCQkJCQlvcF9lcnIgPSBOVUxMOworCQkJCQkJCW9wX2Vycl9sYXN0ID0gTlVMTDsKKwkJCQkJ
CQlnb3RvIG1vcmVfcHJvY2Vzc2luZzsKKwkJCQkJCX0KKwkJCQkJCVNDVFBfQlVGX0xFTihtX3Rt
cCkgPSAwOworCQkJCQkJU0NUUF9CVUZfTkVYVChtX3RtcCkgPSBOVUxMOworCQkJCQkJU0NUUF9C
VUZfTkVYVChvcF9lcnJfbGFzdCkgPSBtX3RtcDsKKwkJCQkJCW9wX2Vycl9sYXN0ID0gbV90bXA7
CiAJCQkJCX0KLQkJCQkJcGhkciA9IHNjdHBfZ2V0X25leHRfcGFyYW0obWF0LCBhdCwgKHN0cnVj
dCBzY3RwX3BhcmFtaGRyICopdGVtcGJ1ZiwgcGxlbik7Ci0JCQkJCWlmIChwaGRyID09IE5VTEwp
IHsKKwkJCQkJcGFyYW0gPSAoc3RydWN0IHNjdHBfcGFyYW1oZHIgKikobXRvZChvcF9lcnJfbGFz
dCwgY2FkZHJfdCkgKyBTQ1RQX0JVRl9MRU4ob3BfZXJyX2xhc3QpKTsKKwkJCQkJcGFyYW0tPnBh
cmFtX3R5cGUgPSBodG9ucyhTQ1RQX1VOUkVDT0dfUEFSQU0pOworCQkJCQlwYXJhbS0+cGFyYW1f
bGVuZ3RoID0gaHRvbnMoKHVpbnQxNl90KXNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcikgKyBw
bGVuKTsKKwkJCQkJU0NUUF9CVUZfTEVOKG9wX2Vycl9sYXN0KSArPSBzaXplb2Yoc3RydWN0IHNj
dHBfcGFyYW1oZHIpOworCQkJCQlTQ1RQX0JVRl9ORVhUKG9wX2Vycl9sYXN0KSA9IFNDVFBfTV9D
T1BZTShtYXQsIGF0LCBwbGVuLCBNX05PV0FJVCk7CisJCQkJCWlmIChTQ1RQX0JVRl9ORVhUKG9w
X2Vycl9sYXN0KSA9PSBOVUxMKSB7CiAJCQkJCQlzY3RwX21fZnJlZW0ob3BfZXJyKTsKLQkJCQkJ
CS8qCi0JCQkJCQkgKiB3ZSBhcmUgb3V0IG9mIG1lbW9yeSBidXQKLQkJCQkJCSAqIHdlIHN0aWxs
IG5lZWQgdG8gaGF2ZSBhCi0JCQkJCQkgKiBsb29rIGF0IHdoYXQgdG8gZG8gKHRoZQotCQkJCQkJ
ICogc3lzdGVtIGlzIGluIHRyb3VibGUKLQkJCQkJCSAqIHRob3VnaCkuCi0JCQkJCQkgKi8KIAkJ
CQkJCW9wX2VyciA9IE5VTEw7CisJCQkJCQlvcF9lcnJfbGFzdCA9IE5VTEw7CiAJCQkJCQlnb3Rv
IG1vcmVfcHJvY2Vzc2luZzsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCXdoaWxlIChTQ1RQX0JVRl9O
RVhUKG9wX2Vycl9sYXN0KSAhPSBOVUxMKSB7CisJCQkJCQkJb3BfZXJyX2xhc3QgPSBTQ1RQX0JV
Rl9ORVhUKG9wX2Vycl9sYXN0KTsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCQlpZiAocGxlbiAlIDQg
IT0gMCkgeworCQkJCQkJcGFkX25lZWRlZCA9IDQgLSAocGxlbiAlIDQpOworCQkJCQl9IGVsc2Ug
eworCQkJCQkJcGFkX25lZWRlZCA9IDA7CiAJCQkJCX0KLQkJCQkJbV9jb3B5YmFjayhvcF9lcnIs
IGVycl9hdCwgcGxlbiwgKGNhZGRyX3QpcGhkcik7Ci0JCQkJCWVycl9hdCArPSBwbGVuOwogCQkJ
CX0KIAkJCX0KIAkJbW9yZV9wcm9jZXNzaW5nOgpAQCAtNTYyNiw3ICs1NjYyLDExIEBAIHNjdHBf
YXJldGhlcmVfdW5yZWNvZ25pemVkX3BhcmFtZXRlcnMoc3RydWN0IG1idWYgKmluX2luaXRwa3Qs
CiAgaW52YWxpZF9zaXplOgogCVNDVFBEQkcoU0NUUF9ERUJVR19PVVRQVVQxLCAiYWJvcnQgZmxh
ZyBzZXRcbiIpOwogCSphYm9ydF9wcm9jZXNzaW5nID0gMTsKLQlpZiAoKG9wX2VyciA9PSBOVUxM
KSAmJiBwaGRyKSB7CisJc2N0cF9tX2ZyZWVtKG9wX2Vycik7CisJb3BfZXJyID0gTlVMTDsKKwlv
cF9lcnJfbGFzdCA9IE5VTEw7CisJaWYgKHBoZHIgIT0gTlVMTCkgeworCQlzdHJ1Y3Qgc2N0cF9w
YXJhbWhkciAqcGFyYW07CiAJCWludCBsX2xlbjsKICNpZmRlZiBJTkVUNgogCQlsX2xlbiA9IFND
VFBfTUlOX09WRVJIRUFEOwpAQCAtNTY0NSwyNSArNTY4NSwxNSBAQCBzY3RwX2FyZXRoZXJlX3Vu
cmVjb2duaXplZF9wYXJhbWV0ZXJzKHN0cnVjdCBtYnVmICppbl9pbml0cGt0LAogI2VuZGlmCiAJ
CQlTQ1RQX0JVRl9SRVNWX1VGKG9wX2Vyciwgc2l6ZW9mKHN0cnVjdCBzY3RwaGRyKSk7CiAJCQlT
Q1RQX0JVRl9SRVNWX1VGKG9wX2Vyciwgc2l6ZW9mKHN0cnVjdCBzY3RwX2NodW5raGRyKSk7CisJ
CQlTQ1RQX0JVRl9MRU4ob3BfZXJyKSA9IDIgKiBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIp
OworCQkJcGFyYW0gPSBtdG9kKG9wX2Vyciwgc3RydWN0IHNjdHBfcGFyYW1oZHIgKik7CisJCQlw
YXJhbS0+cGFyYW1fdHlwZSA9IGh0b25zKFNDVFBfQ0FVU0VfUFJPVE9DT0xfVklPTEFUSU9OKTsK
KwkJCXBhcmFtLT5wYXJhbV9sZW5ndGggPSBodG9ucygyICogc2l6ZW9mKHN0cnVjdCBzY3RwX3Bh
cmFtaGRyKSk7CisJCQlwYXJhbSsrOworCQkJcGFyYW0tPnBhcmFtX3R5cGUgPSBodG9ucyhwdHlw
ZSk7CisJCQlwYXJhbS0+cGFyYW1fbGVuZ3RoID0gaHRvbnMocGxlbik7CiAJCX0KIAl9Ci0JaWYg
KChvcF9lcnIpICYmIHBoZHIpIHsKLQkJc3RydWN0IHNjdHBfcGFyYW1oZHIgczsKLQotCQlpZiAo
ZXJyX2F0ICUgNCkgewotCQkJdWludDMyX3QgY3B0aGlzID0gMDsKLQotCQkJcGFkX25lZWRlZCA9
IDQgLSAoZXJyX2F0ICUgNCk7Ci0JCQltX2NvcHliYWNrKG9wX2VyciwgZXJyX2F0LCBwYWRfbmVl
ZGVkLCAoY2FkZHJfdCkmY3B0aGlzKTsKLQkJCWVycl9hdCArPSBwYWRfbmVlZGVkOwotCQl9Ci0J
CXMucGFyYW1fdHlwZSA9IGh0b25zKFNDVFBfQ0FVU0VfUFJPVE9DT0xfVklPTEFUSU9OKTsKLQkJ
cy5wYXJhbV9sZW5ndGggPSBodG9ucyhzaXplb2YocykgKyBzaXplb2Yoc3RydWN0IHNjdHBfcGFy
YW1oZHIpKTsKLQkJbV9jb3B5YmFjayhvcF9lcnIsIGVycl9hdCwgc2l6ZW9mKHMpLCAoY2FkZHJf
dCkmcyk7Ci0JCWVycl9hdCArPSBzaXplb2Yocyk7Ci0JCS8qIE9ubHkgY29weSBiYWNrIHRoZSBw
LWhkciB0aGF0IGNhdXNlZCB0aGUgaXNzdWUgKi8KLQkJbV9jb3B5YmFjayhvcF9lcnIsIGVycl9h
dCwgc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKSwgKGNhZGRyX3QpcGhkcik7Ci0JfQogCXJl
dHVybiAob3BfZXJyKTsKIH0KIApAQCAtNTg5Miw3ICs1OTIyLDcgQEAgc2N0cF9zZW5kX2luaXRp
YXRlX2FjayhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkciAqc3JjLCBzdHJ1Y3Qgc29ja2FkZHIgKmRzdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNjdHBoZHIgKnNoLCBzdHJ1Y3Qgc2N0cF9p
bml0X2NodW5rICppbml0X2NoaywKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCSAgICAgICB1aW50
OF90IG1mbG93dHlwZSwgdWludDMyX3QgbWZsb3dpZCwKICNlbmRpZgogICAgICAgICAgICAgICAg
ICAgICAgICB1aW50MzJfdCB2cmZfaWQsIHVpbnQxNl90IHBvcnQpCkBAIC01OTM5LDcgKzU5Njks
NyBAQCBzY3RwX3NlbmRfaW5pdGlhdGVfYWNrKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVj
dCBzY3RwX3RjYiAqc3RjYiwKIAkJYXNvYyA9IE5VTEw7CiAJfQogCWlmICgoYXNvYyAhPSBOVUxM
KSAmJgotCSAgICAoU0NUUF9HRVRfU1RBVEUoYXNvYykgIT0gU0NUUF9TVEFURV9DT09LSUVfV0FJ
VCkpIHsKKwkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVfQ09PS0lFX1dB
SVQpKSB7CiAJCWlmIChzY3RwX2FyZV90aGVyZV9uZXdfYWRkcmVzc2VzKGFzb2MsIGluaXRfcGt0
LCBvZmZzZXQsIHNyYykpIHsKIAkJCS8qCiAJCQkgKiBuZXcgYWRkcmVzc2VzLCBvdXQgb2YgaGVy
ZSBpbiBub24tY29va2llLXdhaXQgc3RhdGVzCkBAIC01OTUxLDcgKzU5ODEsNyBAQCBzY3RwX3Nl
bmRfaW5pdGlhdGVfYWNrKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAq
c3RjYiwKIAkJCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9CQVNFX1NZU0NUTChz
Y3RwX2RpYWdfaW5mb19jb2RlKSwKIAkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFk
ZHJlc3MgYWRkZWQiKTsKIAkJCXNjdHBfc2VuZF9hYm9ydChpbml0X3BrdCwgaXBobGVuLCBzcmMs
IGRzdCwgc2gsIDAsIG9wX2VyciwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkgICAgICAgICAg
ICAgICAgbWZsb3d0eXBlLCBtZmxvd2lkLCBpbnAtPmZpYm51bSwKICNlbmRpZgogCQkJICAgICAg
ICAgICAgICAgIHZyZl9pZCwgcG9ydCk7CkBAIC01OTY5LDcgKzU5OTksNyBAQCBzY3RwX3NlbmRf
aW5pdGlhdGVfYWNrKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3Rj
YiwKIAkJCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9CQVNFX1NZU0NUTChzY3Rw
X2RpYWdfaW5mb19jb2RlKSwKIAkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJlbW90
ZSBlbmNhcHN1bGF0aW9uIHBvcnQgY2hhbmdlZCIpOwogCQkJc2N0cF9zZW5kX2Fib3J0KGluaXRf
cGt0LCBpcGhsZW4sIHNyYywgZHN0LCBzaCwgMCwgb3BfZXJyLAotI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKIAkJCSAgICAgICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQsIGlucC0+ZmlibnVtLAog
I2VuZGlmCiAJCQkgICAgICAgICAgICAgICAgdnJmX2lkLCBwb3J0KTsKQEAgLTU5NzgsMjAgKzYw
MDgsMjIgQEAgc2N0cF9zZW5kX2luaXRpYXRlX2FjayhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBz
dHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJfQogCWFib3J0X2ZsYWcgPSAwOwogCW9wX2VyciA9IHNj
dHBfYXJldGhlcmVfdW5yZWNvZ25pemVkX3BhcmFtZXRlcnMoaW5pdF9wa3QsCi0JCQkJCQkgICAg
ICAgKG9mZnNldCArIHNpemVvZihzdHJ1Y3Qgc2N0cF9pbml0X2NodW5rKSksCi0JCQkJCQkgICAg
ICAgJmFib3J0X2ZsYWcsIChzdHJ1Y3Qgc2N0cF9jaHVua2hkciAqKWluaXRfY2hrLCAmbmF0X2Zy
aWVuZGx5KTsKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChvZmZzZXQgKyBzaXplb2Yoc3RydWN0IHNjdHBfaW5pdF9jaHVuaykpLAorCSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFib3J0X2ZsYWcsCisJICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHNjdHBfY2h1
bmtoZHIgKilpbml0X2NoaywKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZuYXRfZnJpZW5kbHksIE5VTEwpOwogCWlmIChhYm9ydF9mbGFnKSB7CiAJZG9f
YV9hYm9ydDoKIAkJaWYgKG9wX2VyciA9PSBOVUxMKSB7CiAJCQljaGFyIG1zZ1tTQ1RQX0RJQUdf
SU5GT19MRU5dOwogCi0JCQlzbnByaW50Zihtc2csIHNpemVvZihtc2cpLCAiJXM6JWQgYXQgJXMi
LCBfX0ZJTEVfXywgX19MSU5FX18sIF9fZnVuY19fKTsKKwkJCVNDVFBfU05QUklOVEYobXNnLCBz
aXplb2YobXNnKSwgIiVzOiVkIGF0ICVzIiwgX19GSUxFX18sIF9fTElORV9fLCBfX2Z1bmNfXyk7
CiAJCQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9k
aWFnX2luZm9fY29kZSksCiAJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyk7CiAJ
CX0KIAkJc2N0cF9zZW5kX2Fib3J0KGluaXRfcGt0LCBpcGhsZW4sIHNyYywgZHN0LCBzaCwKIAkJ
CQlpbml0X2Noay0+aW5pdC5pbml0aWF0ZV90YWcsIG9wX2VyciwKLSNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAJCSAgICAgICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQsIGlucC0+ZmlibnVtLAog
I2VuZGlmCiAJCSAgICAgICAgICAgICAgICB2cmZfaWQsIHBvcnQpOwpAQCAtNjAwMCw4ICs2MDMy
LDcgQEAgc2N0cF9zZW5kX2luaXRpYXRlX2FjayhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1
Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJbSA9IHNjdHBfZ2V0X21idWZfZm9yX21zZyhNQ0xCWVRFUywg
MCwgTV9OT1dBSVQsIDEsIE1UX0RBVEEpOwogCWlmIChtID09IE5VTEwpIHsKIAkJLyogTm8gbWVt
b3J5LCBJTklUIHRpbWVyIHdpbGwgcmUtYXR0ZW1wdC4gKi8KLQkJaWYgKG9wX2VycikKLQkJCXNj
dHBfbV9mcmVlbShvcF9lcnIpOworCQlzY3RwX21fZnJlZW0ob3BfZXJyKTsKIAkJcmV0dXJuOwog
CX0KIAljaHVua19sZW4gPSAodWludDE2X3Qpc2l6ZW9mKHN0cnVjdCBzY3RwX2luaXRfYWNrX2No
dW5rKTsKQEAgLTYxMDcsNyArNjEzOCw3IEBAIHNjdHBfc2VuZF9pbml0aWF0ZV9hY2soc3RydWN0
IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQl7CiAJCQlzdGMuYWRk
cl90eXBlID0gU0NUUF9JUFY2X0FERFJFU1M7CiAJCQltZW1jcHkoJnN0Yy5hZGRyZXNzLCAmc3Jj
Ni0+c2luNl9hZGRyLCBzaXplb2Yoc3RydWN0IGluNl9hZGRyKSk7Ci0jaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgKCgoX19GcmVlQlNEX3ZlcnNpb24gPCA5MDAwMDApICYmIChfX0ZyZWVCU0Rf
dmVyc2lvbiA+PSA4MDQwMDApKSB8fCAoX19GcmVlQlNEX3ZlcnNpb24gPiA5MDAwMDApKQorI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQlzdGMu
c2NvcGVfaWQgPSBudG9ocyhpbjZfZ2V0c2NvcGUoJnNyYzYtPnNpbjZfYWRkcikpOwogI2Vsc2UK
IAkJCXN0Yy5zY29wZV9pZCA9IDA7CkBAIC02MTI4LDcgKzYxNTksNyBAQCBzY3RwX3NlbmRfaW5p
dGlhdGVfYWNrKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwK
IAkJCQkgKiBiZWNhdXNlIHdlIHNoYXJlIG9uZSBsaW5rIHRoYXQgYWxsIGxpbmtzIGFyZQogCQkJ
CSAqIGNvbW1vbi4KIAkJCQkgKi8KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVk
KF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQkvKiBNYWMgT1MgWCBj
dXJyZW50bHkgZG9lc24ndCBoYXZlIGluNl9nZXRzY29wZSgpICovCiAJCQkJc3RjLnNjb3BlX2lk
ID0gc3JjNi0+c2luNl9hZGRyLnM2X2FkZHIxNlsxXTsKICNlbmRpZgpAQCAtNjIyOCw4ICs2MjU5
LDExIEBAIHNjdHBfc2VuZF9pbml0aWF0ZV9hY2soc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3Ry
dWN0IHNjdHBfdGNiICpzdGNiLAogCQkJCW5ldC0+cm8uX3NfYWRkciA9IHNjdHBfc291cmNlX2Fk
ZHJlc3Nfc2VsZWN0aW9uKGlucCwKIAkJCQkJCQkJCQlzdGNiLCAoc2N0cF9yb3V0ZV90ICopJm5l
dC0+cm8sCiAJCQkJCQkJCQkJbmV0LCAwLCB2cmZfaWQpOwotCQkJCWlmIChuZXQtPnJvLl9zX2Fk
ZHIgPT0gTlVMTCkKKwkJCQlpZiAobmV0LT5yby5fc19hZGRyID09IE5VTEwpIHsKKwkJCQkJc2N0
cF9tX2ZyZWVtKG9wX2Vycik7CisJCQkJCXNjdHBfbV9mcmVlbShtKTsKIAkJCQkJcmV0dXJuOwor
CQkJCX0KIAogCQkJCW5ldC0+c3JjX2FkZHJfc2VsZWN0ZWQgPSAxOwogCkBAIC02MjU4LDggKzYy
OTIsMTEgQEAgc2N0cF9zZW5kX2luaXRpYXRlX2FjayhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBz
dHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCQkJbmV0LT5yby5fc19hZGRyID0gc2N0cF9zb3VyY2Vf
YWRkcmVzc19zZWxlY3Rpb24oaW5wLAogCQkJCQkJCQkJCXN0Y2IsIChzY3RwX3JvdXRlX3QgKikm
bmV0LT5ybywKIAkJCQkJCQkJCQluZXQsIDAsIHZyZl9pZCk7Ci0JCQkJaWYgKG5ldC0+cm8uX3Nf
YWRkciA9PSBOVUxMKQorCQkJCWlmIChuZXQtPnJvLl9zX2FkZHIgPT0gTlVMTCkgeworCQkJCQlz
Y3RwX21fZnJlZW0ob3BfZXJyKTsKKwkJCQkJc2N0cF9tX2ZyZWVtKG0pOwogCQkJCQlyZXR1cm47
CisJCQkJfQogCiAJCQkJbmV0LT5zcmNfYWRkcl9zZWxlY3RlZCA9IDE7CiAJCQl9CkBAIC02MzAz
LDkgKzYzNDAsOSBAQCBzY3RwX3NlbmRfaW5pdGlhdGVfYWNrKHN0cnVjdCBzY3RwX2lucGNiICpp
bnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAlpbml0YWNrLT5jaC5jaHVua19sZW5ndGggPSAw
OwogCS8qIHBsYWNlIGluIG15IHRhZyAqLwogCWlmICgoYXNvYyAhPSBOVUxMKSAmJgotCSAgICAo
KFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQpIHx8Ci0JICAg
ICAoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9JTlVTRSkgfHwKLQkgICAgIChT
Q1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9FQ0hPRUQpKSkgeworCSAg
ICAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQpIHx8CisJ
ICAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9JTlVTRSkgfHwKKwkgICAg
IChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9FQ0hPRUQpKSkgewog
CQkvKiByZS11c2UgdGhlIHYtdGFncyBhbmQgaW5pdC1zZXEgaGVyZSAqLwogCQlpbml0YWNrLT5p
bml0LmluaXRpYXRlX3RhZyA9IGh0b25sKGFzb2MtPm15X3Z0YWcpOwogCQlpbml0YWNrLT5pbml0
LmluaXRpYWxfdHNuID0gaHRvbmwoYXNvYy0+aW5pdF9zZXFfbnVtYmVyKTsKQEAgLTYzNDcsNiAr
NjM4NCw3IEBAIHNjdHBfc2VuZF9pbml0aWF0ZV9hY2soc3RydWN0IHNjdHBfaW5wY2IgKmlucCwg
c3RydWN0IHNjdHBfdGNiICpzdGNiLAogCXNvID0gaW5wLT5zY3RwX3NvY2tldDsKIAlpZiAoc28g
PT0gTlVMTCkgewogCQkvKiBtZW1vcnkgcHJvYmxlbSAqLworCQlzY3RwX21fZnJlZW0ob3BfZXJy
KTsKIAkJc2N0cF9tX2ZyZWVtKG0pOwogCQlyZXR1cm47CiAJfSBlbHNlIHsKQEAgLTY1OTMsNiAr
NjYzMSwyNyBAQCBzY3RwX3NlbmRfaW5pdGlhdGVfYWNrKHN0cnVjdCBzY3RwX2lucGNiICppbnAs
IHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJCSAgKHVpbnQ4X3QgKilpbnAtPnNjdHBfZXAuc2Vj
cmV0X2tleVsoaW50KShpbnAtPnNjdHBfZXAuY3VycmVudF9zZWNyZXRfbnVtYmVyKV0sCiAJCQkg
IFNDVFBfU0VDUkVUX1NJWkUsIG1fY29va2llLCBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIp
LAogCQkJICAodWludDhfdCAqKXNpZ25hdHVyZSwgU0NUUF9TSUdOQVRVUkVfU0laRSk7CisjaWYg
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCS8qCisJICogRG9uJ3QgcHV0IEFGX0NPTk4gYWRkcmVz
c2VzIG9uIHRoZSB3aXJlLCBpbiBjYXNlIHRoaXMgaXMgY3JpdGljYWwKKwkgKiBmb3IgdGhlIGFw
cGxpY2F0aW9uLiBIb3dldmVyLCB0aGV5IGFyZSBwcm90ZWN0ZWQgYnkgdGhlIEhNQUMgYW5kCisJ
ICogbmVlZCB0byBiZSByZWNvbnN0cnVjdGVkIGJlZm9yZSBjaGVja2luZyB0aGUgSE1BQy4KKwkg
KiBDbGVhcmluZyBpcyBvbmx5IGRvbmUgaW4gdGhlIG1idWYgY2hhaW4sIHNpbmNlIHRoZSBsb2Nh
bCBzdGMgaXMKKwkgKiBub3QgdXNlZCBhbnltb3JlLgorCSAqLworCWlmIChzdGMuYWRkcl90eXBl
ID09IFNDVFBfQ09OTl9BRERSRVNTKSB7CisJCWNvbnN0IHZvaWQgKnAgPSBOVUxMOworCisJCW1f
Y29weWJhY2sobV9jb29raWUsIHNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcikgKyBvZmZzZXRv
ZihzdHJ1Y3Qgc2N0cF9zdGF0ZV9jb29raWUsIGFkZHJlc3MpLAorCQkgICAgICAgICAgIChpbnQp
c2l6ZW9mKHZvaWQgKiksIChjYWRkcl90KSZwKTsKKwl9CisJaWYgKHN0Yy5sYWRkcl90eXBlID09
IFNDVFBfQ09OTl9BRERSRVNTKSB7CisJCWNvbnN0IHZvaWQgKnAgPSBOVUxMOworCisJCW1fY29w
eWJhY2sobV9jb29raWUsIHNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcikgKyBvZmZzZXRvZihz
dHJ1Y3Qgc2N0cF9zdGF0ZV9jb29raWUsIGxhZGRyZXNzKSwKKwkJICAgICAgICAgICAoaW50KXNp
emVvZih2b2lkICopLCAoY2FkZHJfdCkmcCk7CisJfQorI2VuZGlmCiAJLyoKIAkgKiBXZSBzaWZh
IDAgaGVyZSB0byBOT1Qgc2V0IElQX0RGIGlmIGl0cyBJUHY0LCB3ZSBpZ25vcmUgdGhlIHJldHVy
bgogCSAqIGhlcmUgc2luY2UgdGhlIHRpbWVyIHdpbGwgZHJpdmUgYSByZXRyYW5taXNzaW9uLgpA
QCAtNjYxMyw3ICs2NjcyLDcgQEAgc2N0cF9zZW5kX2luaXRpYXRlX2FjayhzdHJ1Y3Qgc2N0cF9p
bnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAsIDAsCiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlucC0+c2N0cF9scG9ydCwgc2gtPnNyY19wb3J0LCBpbml0X2Noay0+aW5pdC5p
bml0aWF0ZV90YWcsCiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBv
cnQsIG92ZXJfYWRkciwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1mbG93dHlwZSwgbWZsb3dpZCwKICNlbmRpZgogCSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTQ1RQX1NPX05PVF9MT0NLRUQpKSkg
ewpAQCAtNjY1NywxMyArNjcxNiwxMyBAQCBzY3RwX3BydW5lX3Byc2N0cChzdHJ1Y3Qgc2N0cF90
Y2IgKnN0Y2IsCiAJCQkJICogVGhpcyBvbmUgaXMgUFItU0NUUCBBTkQgYnVmZmVyIHNwYWNlCiAJ
CQkJICogbGltaXRlZCB0eXBlCiAJCQkJICovCi0JCQkJaWYgKGNoay0+cmVjLmRhdGEudGltZXRv
ZHJvcC50dl9zZWMgPj0gKGxvbmcpc3Jjdi0+c2luZm9fdGltZXRvbGl2ZSkgeworCQkJCWlmIChj
aGstPnJlYy5kYXRhLnRpbWV0b2Ryb3AudHZfc2VjID4gKGxvbmcpc3Jjdi0+c2luZm9fdGltZXRv
bGl2ZSkgewogCQkJCQkvKgogCQkJCQkgKiBMb3dlciBudW1iZXJzIGVxdWF0ZXMgdG8gaGlnaGVy
Ci0JCQkJCSAqIHByaW9yaXR5IHNvIGlmIHRoZSBvbmUgd2UgYXJlCi0JCQkJCSAqIGxvb2tpbmcg
YXQgaGFzIGEgbGFyZ2VyIG9yIGVxdWFsCi0JCQkJCSAqIHByaW9yaXR5IHdlIHdhbnQgdG8gZHJv
cCB0aGUgZGF0YQotCQkJCQkgKiBhbmQgTk9UIHJldHJhbnNtaXQgaXQuCisJCQkJCSAqIHByaW9y
aXR5LiBTbyBpZiB0aGUgb25lIHdlIGFyZQorCQkJCQkgKiBsb29raW5nIGF0IGhhcyBhIGxhcmdl
ciBwcmlvcml0eSwKKwkJCQkJICogd2Ugd2FudCB0byBkcm9wIHRoZSBkYXRhIGFuZCBOT1QKKwkJ
CQkJICogcmV0cmFuc21pdCBpdC4KIAkJCQkJICovCiAJCQkJCWlmIChjaGstPmRhdGEpIHsKIAkJ
CQkJCS8qCkBAIC02NjkyLDcgKzY3NTEsNyBAQCBzY3RwX3BydW5lX3Byc2N0cChzdHJ1Y3Qgc2N0
cF90Y2IgKnN0Y2IsCiAJCVRBSUxRX0ZPUkVBQ0hfU0FGRShjaGssICZhc29jLT5zZW5kX3F1ZXVl
LCBzY3RwX25leHQsIG5jaGspIHsKIAkJCS8qIEhlcmUgd2UgbXVzdCBtb3ZlIHRvIHRoZSBzZW50
IHF1ZXVlIGFuZCBtYXJrICovCiAJCQlpZiAoUFJfU0NUUF9CVUZfRU5BQkxFRChjaGstPmZsYWdz
KSkgewotCQkJCWlmIChjaGstPnJlYy5kYXRhLnRpbWV0b2Ryb3AudHZfc2VjID49IChsb25nKXNy
Y3YtPnNpbmZvX3RpbWV0b2xpdmUpIHsKKwkJCQlpZiAoY2hrLT5yZWMuZGF0YS50aW1ldG9kcm9w
LnR2X3NlYyA+IChsb25nKXNyY3YtPnNpbmZvX3RpbWV0b2xpdmUpIHsKIAkJCQkJaWYgKGNoay0+
ZGF0YSkgewogCQkJCQkJLyoKIAkJCQkJCSAqIFdlIHJlbGVhc2UgdGhlIGJvb2tfc2l6ZQpAQCAt
Njc5NSw3ICs2ODU0LDcgQEAgc2N0cF9zZXRfcHJzY3RwX3BvbGljeShzdHJ1Y3Qgc2N0cF9zdHJl
YW1fcXVldWVfcGVuZGluZyAqc3ApCiAJCS8qIFRPRE8gc2N0cF9jb25zdGFudHMuaCBuZWVkcyBh
bHRlcm5hdGl2ZSB0aW1lIG1hY3JvcyB3aGVuCiAJCSAqICBfS0VSTkVMIGlzIHVuZGVmaW5lZC4K
IAkJICovCi0jaWZuZGVmIF9fRnJlZUJTRF9fCisjaWYgIShkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkKIAkJdGltZXJhZGQoJnNwLT50cywgJnR2LCAmc3At
PnRzKTsKICNlbHNlCiAJCXRpbWV2YWxhZGQoJnNwLT50cywgJnR2KTsKQEAgLTY4NDcsOSArNjkw
Niw5IEBAIHNjdHBfbXNnX2FwcGVuZChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJfQogCXN0cm0g
PSAmc3RjYi0+YXNvYy5zdHJtb3V0W3NyY3YtPnNpbmZvX3N0cmVhbV07CiAJLyogTm93IGNhbiB3
ZSBzZW5kIHRoaXM/ICovCi0JaWYgKChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NU
UF9TVEFURV9TSFVURE9XTl9TRU5UKSB8fAotCSAgICAoU0NUUF9HRVRfU1RBVEUoJnN0Y2ItPmFz
b2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQpIHx8Ci0JICAgIChTQ1RQX0dFVF9T
VEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkgfHwKKwlp
ZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCkgfHwK
KwkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NF
TlQpIHx8CisJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dO
X1JFQ0VJVkVEKSB8fAogCSAgICAoc3RjYi0+YXNvYy5zdGF0ZSAmIFNDVFBfU1RBVEVfU0hVVERP
V05fUEVORElORykpIHsKIAkJLyogZ290IGRhdGEgd2hpbGUgc2h1dHRpbmcgZG93biAqLwogCQlT
Q1RQX0xUUkFDRV9FUlJfUkVUKE5VTEwsIHN0Y2IsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX09VVFBV
VCwgRUNPTk5SRVNFVCk7CkBAIC02OTQzLDEyICs3MDAyLDcgQEAgc2N0cF9jb3B5X21idWZjaGFp
bihzdHJ1Y3QgbWJ1ZiAqY2xvbmVjaGFpbiwKIAkJYXBwZW5kY2hhaW4gPSBjbG9uZWNoYWluOwog
CX0gZWxzZSB7CiAJCWlmICghY29weV9ieV9yZWYgJiYKLSNpZiBkZWZpbmVkKF9fUGFuZGFfXykK
LQkJICAgIDAKLSNlbHNlCi0JCSAgICAoc2l6ZW9mY3B5IDw9IChpbnQpKCgoKFNDVFBfQkFTRV9T
WVNDVEwoc2N0cF9tYnVmX3RocmVzaG9sZF9jb3VudCkgLSAxKSAqIE1MRU4pICsgTUhMRU4pKSkK
LSNlbmRpZgotCQkgICAgKSB7CisJCSAgICAoc2l6ZW9mY3B5IDw9IChpbnQpKCgoKFNDVFBfQkFT
RV9TWVNDVEwoc2N0cF9tYnVmX3RocmVzaG9sZF9jb3VudCkgLSAxKSAqIE1MRU4pICsgTUhMRU4p
KSkpIHsKIAkJCS8qIEl0cyBub3QgaW4gYSBjbHVzdGVyICovCiAJCQlpZiAoKmVuZG9mY2hhaW4g
PT0gTlVMTCkgewogCQkJCS8qIGxldHMgZ2V0IGEgbWJ1ZiBjbHVzdGVyICovCkBAIC03MDc5LDEx
ICs3MTMzLDcgQEAgc2N0cF9tZWRfY2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiICppbnAs
CiAJCSAgICAgIGludCAqbnVtX291dCwKIAkJICAgICAgaW50ICpyZWFzb25fY29kZSwKIAkJICAg
ICAgaW50IGNvbnRyb2xfb25seSwgaW50IGZyb21fd2hlcmUsCi0JCSAgICAgIHN0cnVjdCB0aW1l
dmFsICpub3csIGludCAqbm93X2ZpbGxlZCwgaW50IGZyYWdfcG9pbnQsIGludCBzb19sb2NrZWQK
LSNpZiAhZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5H
KQotCQkgICAgICBTQ1RQX1VOVVNFRAotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAgKTsK
KwkJICAgICAgc3RydWN0IHRpbWV2YWwgKm5vdywgaW50ICpub3dfZmlsbGVkLCBpbnQgZnJhZ19w
b2ludCwgaW50IHNvX2xvY2tlZCk7CiAKIHN0YXRpYyB2b2lkCiBzY3RwX3NlbmRhbGxfaXRlcmF0
b3Ioc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLCB2b2lkICpw
dHIsCkBAIC03MTc2LDIxICs3MjI2LDIwIEBAIHNjdHBfc2VuZGFsbF9pdGVyYXRvcihzdHJ1Y3Qg
c2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHZvaWQgKnB0ciwKIAkJCQkJ
Z290byBhYm9ydF9hbnl3YXk7CiAJCQkJfQogCQkJCS8qIHRoZXJlIGlzIG5vdGhpbmcgcXVldWVk
IHRvIHNlbmQsIHNvIEknbSBkb25lLi4uICovCi0JCQkJaWYgKChTQ1RQX0dFVF9TVEFURShhc29j
KSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpICYmCi0JCQkJICAgIChTQ1RQX0dFVF9TVEFU
RShhc29jKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSAmJgotCQkJCSAgICAoU0NU
UF9HRVRfU1RBVEUoYXNvYykgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tfU0VOVCkpIHsKKwkJ
CQlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCkg
JiYKKwkJCQkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVfU0hVVERPV05f
UkVDRUlWRUQpICYmCisJCQkJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQX1NUQVRF
X1NIVVRET1dOX0FDS19TRU5UKSkgewogCQkJCQkvKiBvbmx5IHNlbmQgU0hVVERPV04gdGhlIGZp
cnN0IHRpbWUgdGhyb3VnaCAqLwotCQkJCQlpZiAoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NU
UF9TVEFURV9PUEVOKSB7CisJCQkJCWlmIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NU
QVRFX09QRU4pIHsKIAkJCQkJCVNDVFBfU1RBVF9ERUNSX0dBVUdFMzIoc2N0cHNfY3VycmVzdGFi
KTsKIAkJCQkJfQotCQkJCQlTQ1RQX1NFVF9TVEFURShhc29jLCBTQ1RQX1NUQVRFX1NIVVRET1dO
X1NFTlQpOwotCQkJCQlTQ1RQX0NMRUFSX1NVQlNUQVRFKGFzb2MsIFNDVFBfU1RBVEVfU0hVVERP
V05fUEVORElORyk7CisJCQkJCVNDVFBfU0VUX1NUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfU0hVVERP
V05fU0VOVCk7CiAJCQkJCXNjdHBfc3RvcF90aW1lcnNfZm9yX3NodXRkb3duKHN0Y2IpOwogCQkJ
CQlzY3RwX3NlbmRfc2h1dGRvd24oc3RjYiwgbmV0KTsKIAkJCQkJc2N0cF90aW1lcl9zdGFydChT
Q1RQX1RJTUVSX1RZUEVfU0hVVERPV04sIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsCiAJCQkJCQkJIG5l
dCk7CiAJCQkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NIVVRET1dOR1VBUkQs
IHN0Y2ItPnNjdHBfZXAsIHN0Y2IsCi0JCQkJCQkJIGFzb2MtPnByaW1hcnlfZGVzdGluYXRpb24p
OworCQkJCQkgICAgICAgICAgICAgICAgIE5VTEwpOwogCQkJCQlhZGRlZF9jb250cm9sID0gMTsK
IAkJCQkJZG9fY2h1bmtfb3V0cHV0ID0gMDsKIAkJCQl9CkBAIC03MjA1LDEzICs3MjU0LDEzIEBA
IHNjdHBfc2VuZGFsbF9pdGVyYXRvcihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0
cF90Y2IgKnN0Y2IsIHZvaWQgKnB0ciwKIAkJCQkgKiBkYXRhIHRvIGJlIHNlbnQgZmlyc3QgYW5k
IG1vdmUgdG8KIAkJCQkgKiBTSFVURE9XTi1QRU5ESU5HCiAJCQkJICovCi0JCQkJaWYgKChTQ1RQ
X0dFVF9TVEFURShhc29jKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpICYmCi0JCQkJICAg
IChTQ1RQX0dFVF9TVEFURShhc29jKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSAm
JgotCQkJCSAgICAoU0NUUF9HRVRfU1RBVEUoYXNvYykgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9B
Q0tfU0VOVCkpIHsKKwkJCQlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVf
U0hVVERPV05fU0VOVCkgJiYKKwkJCQkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpICE9IFNDVFBf
U1RBVEVfU0hVVERPV05fUkVDRUlWRUQpICYmCisJCQkJICAgIChTQ1RQX0dFVF9TVEFURShzdGNi
KSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX0FDS19TRU5UKSkgewogCQkJCQlpZiAoKCphc29jLT5z
c19mdW5jdGlvbnMuc2N0cF9zc19pc191c2VyX21zZ3NfaW5jb21wbGV0ZSkoc3RjYiwgYXNvYykp
IHsKLQkJCQkJCWFzb2MtPnN0YXRlIHw9IFNDVFBfU1RBVEVfUEFSVElBTF9NU0dfTEVGVDsKKwkJ
CQkJCVNDVFBfQUREX1NVQlNUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfUEFSVElBTF9NU0dfTEVGVCk7
CiAJCQkJCX0KLQkJCQkJYXNvYy0+c3RhdGUgfD0gU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5H
OworCQkJCQlTQ1RQX0FERF9TVUJTVEFURShzdGNiLCBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJ
TkcpOwogCQkJCQlpZiAoVEFJTFFfRU1QVFkoJmFzb2MtPnNlbmRfcXVldWUpICYmCiAJCQkJCSAg
ICBUQUlMUV9FTVBUWSgmYXNvYy0+c2VudF9xdWV1ZSkgJiYKIAkJCQkJICAgIChhc29jLT5zdGF0
ZSAmIFNDVFBfU1RBVEVfUEFSVElBTF9NU0dfTEVGVCkpIHsKQEAgLTcyMTksOCArNzI2OCw4IEBA
IHNjdHBfc2VuZGFsbF9pdGVyYXRvcihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0
cF90Y2IgKnN0Y2IsIHZvaWQgKnB0ciwKIAkJCQkJCWNoYXIgbXNnW1NDVFBfRElBR19JTkZPX0xF
Tl07CiAKIAkJCQkJYWJvcnRfYW55d2F5OgotCQkJCQkJc25wcmludGYobXNnLCBzaXplb2YobXNn
KSwKLQkJCQkJCSAgICAgICAgICIlczolZCBhdCAlcyIsIF9fRklMRV9fLCBfX0xJTkVfXywgX19m
dW5jX18pOworCQkJCQkJU0NUUF9TTlBSSU5URihtc2csIHNpemVvZihtc2cpLAorCQkJCQkJICAg
ICAgICAgICAgICAiJXM6JWQgYXQgJXMiLCBfX0ZJTEVfXywgX19MSU5FX18sIF9fZnVuY19fKTsK
IAkJCQkJCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9CQVNFX1NZU0NUTChzY3Rw
X2RpYWdfaW5mb19jb2RlKSwKIAkJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNn
KTsKIAkJCQkJCWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29jLnJlZmNudCwgMSk7CkBAIC03MjMw
LDcgKzcyNzksNyBAQCBzY3RwX3NlbmRhbGxfaXRlcmF0b3Ioc3RydWN0IHNjdHBfaW5wY2IgKmlu
cCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLCB2b2lkICpwdHIsCiAJCQkJCQlnb3RvIG5vX2NodW5r
X291dHB1dDsKIAkJCQkJfQogCQkJCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9T
SFVURE9XTkdVQVJELCBzdGNiLT5zY3RwX2VwLCBzdGNiLAotCQkJCQkJCSBhc29jLT5wcmltYXJ5
X2Rlc3RpbmF0aW9uKTsKKwkJCQkJICAgICAgICAgICAgICAgICBOVUxMKTsKIAkJCQl9CiAJCQl9
CiAKQEAgLTcyNzksMTUgKzczMjgsMTkgQEAgc2N0cF9zZW5kYWxsX2NvbXBsZXRlcyh2b2lkICpw
dHIsIHVpbnQzMl90IHZhbCBTQ1RQX1VOVVNFRCkKIAkgKi8KIAogCS8qIG5vdyBmcmVlIGV2ZXJ5
dGhpbmcgKi8KKwlpZiAoY2EtPmlucCkgeworCQkvKiBMZXRzIGNsZWFyIHRoZSBmbGFnIHRvIGFs
bG93IG90aGVycyB0byBydW4uICovCisJCWNhLT5pbnAtPnNjdHBfZmxhZ3MgJj0gflNDVFBfUENC
X0ZMQUdTX1NORF9JVEVSQVRPUl9VUDsKKwl9CiAJc2N0cF9tX2ZyZWVtKGNhLT5tKTsKIAlTQ1RQ
X0ZSRUUoY2EsIFNDVFBfTV9DT1BZQUwpOwogfQogCiBzdGF0aWMgc3RydWN0IG1idWYgKgotc2N0
cF9jb3B5X291dF9hbGwoc3RydWN0IHVpbyAqdWlvLCBpbnQgbGVuKQorc2N0cF9jb3B5X291dF9h
bGwoc3RydWN0IHVpbyAqdWlvLCBzc2l6ZV90IGxlbikKIHsKIAlzdHJ1Y3QgbWJ1ZiAqcmV0LCAq
YXQ7Ci0JaW50IGxlZnQsIHdpbGxjcHksIGNhbmNweSwgZXJyb3I7CisJc3NpemVfdCBsZWZ0LCB3
aWxsY3B5LCBjYW5jcHksIGVycm9yOwogCiAJcmV0ID0gc2N0cF9nZXRfbWJ1Zl9mb3JfbXNnKE1D
TEJZVEVTLCAwLCBNX1dBSVRPSywgMSwgTVRfREFUQSk7CiAJaWYgKHJldCA9PSBOVUxMKSB7CkBA
IC03MzAyLDE3ICs3MzU1LDE3IEBAIHNjdHBfY29weV9vdXRfYWxsKHN0cnVjdCB1aW8gKnVpbywg
aW50IGxlbikKIAlhdCA9IHJldDsKIAl3aGlsZSAobGVmdCA+IDApIHsKIAkJLyogQWxpZ24gZGF0
YSB0byB0aGUgZW5kICovCi0JCWVycm9yID0gdWlvbW92ZShtdG9kKGF0LCBjYWRkcl90KSwgd2ls
bGNweSwgdWlvKTsKKwkJZXJyb3IgPSB1aW9tb3ZlKG10b2QoYXQsIGNhZGRyX3QpLCAoaW50KXdp
bGxjcHksIHVpbyk7CiAJCWlmIChlcnJvcikgewogCWVycl9vdXRfbm93OgogCQkJc2N0cF9tX2Zy
ZWVtKGF0KTsKIAkJCXJldHVybiAoTlVMTCk7CiAJCX0KLQkJU0NUUF9CVUZfTEVOKGF0KSA9IHdp
bGxjcHk7CisJCVNDVFBfQlVGX0xFTihhdCkgPSAoaW50KXdpbGxjcHk7CiAJCVNDVFBfQlVGX05F
WFRfUEtUKGF0KSA9IFNDVFBfQlVGX05FWFQoYXQpID0gMDsKIAkJbGVmdCAtPSB3aWxsY3B5Owog
CQlpZiAobGVmdCA+IDApIHsKLQkJCVNDVFBfQlVGX05FWFQoYXQpID0gc2N0cF9nZXRfbWJ1Zl9m
b3JfbXNnKGxlZnQsIDAsIE1fV0FJVE9LLCAxLCBNVF9EQVRBKTsKKwkJCVNDVFBfQlVGX05FWFQo
YXQpID0gc2N0cF9nZXRfbWJ1Zl9mb3JfbXNnKCh1bnNpZ25lZCBpbnQpbGVmdCwgMCwgTV9XQUlU
T0ssIDEsIE1UX0RBVEEpOwogCQkJaWYgKFNDVFBfQlVGX05FWFQoYXQpID09IE5VTEwpIHsKIAkJ
CQlnb3RvIGVycl9vdXRfbm93OwogCQkJfQpAQCAtNzMzMiw2ICs3Mzg1LDIyIEBAIHNjdHBfc2Vu
ZGFsbChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3QgdWlvICp1aW8sIHN0cnVjdCBtYnVm
ICptLAogCWludCByZXQ7CiAJc3RydWN0IHNjdHBfY29weV9hbGwgKmNhOwogCisJaWYgKGlucC0+
c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1NORF9JVEVSQVRPUl9VUCkgeworCQkvKiBUaGVy
ZSBpcyBhbm90aGVyLiAqLworCQlyZXR1cm4gKEVCVVNZKTsKKwl9CisjaWYgZGVmaW5lZChfX0FQ
UExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaWYgZGVmaW5lZChBUFBMRV9MRU9Q
QVJEKQorCWlmICh1aW8tPnVpb19yZXNpZCA+IFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9zZW5kYWxs
X2xpbWl0KSkgeworI2Vsc2UKKwlpZiAodWlvX3Jlc2lkKHVpbykgPiBTQ1RQX0JBU0VfU1lTQ1RM
KHNjdHBfc2VuZGFsbF9saW1pdCkpIHsKKyNlbmRpZgorI2Vsc2UKKwlpZiAodWlvLT51aW9fcmVz
aWQgPiAoc3NpemVfdClTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfc2VuZGFsbF9saW1pdCkpIHsKKyNl
bmRpZgorCQkvKiBZb3UgbXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4gdGhlIGxpbWl0ISAqLworCQly
ZXR1cm4gKEVNU0dTSVpFKTsKKwl9CiAJU0NUUF9NQUxMT0MoY2EsIHN0cnVjdCBzY3RwX2NvcHlf
YWxsICosIHNpemVvZihzdHJ1Y3Qgc2N0cF9jb3B5X2FsbCksCiAJCSAgICBTQ1RQX01fQ09QWUFM
KTsKIAlpZiAoY2EgPT0gTlVMTCkgewpAQCAtNzM1MiwyMCArNzQyMSwyMCBAQCBzY3RwX3NlbmRh
bGwoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHVpbyAqdWlvLCBzdHJ1Y3QgbWJ1ZiAq
bSwKIAljYS0+c25kcmN2LnNpbmZvX2ZsYWdzICY9IH5TQ1RQX1NFTkRBTEw7CiAJLyogZ2V0IGxl
bmd0aCBhbmQgbWJ1ZiBjaGFpbiAqLwogCWlmICh1aW8pIHsKLSNpZiBkZWZpbmVkKF9fQVBQTEVf
XykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNp
ZiBkZWZpbmVkKEFQUExFX0xFT1BBUkQpCiAJCWNhLT5zbmRsZW4gPSB1aW8tPnVpb19yZXNpZDsK
ICNlbHNlCiAJCWNhLT5zbmRsZW4gPSB1aW9fcmVzaWQodWlvKTsKICNlbmRpZgogI2Vsc2UKLQkJ
Y2EtPnNuZGxlbiA9IChpbnQpdWlvLT51aW9fcmVzaWQ7CisJCWNhLT5zbmRsZW4gPSB1aW8tPnVp
b19yZXNpZDsKICNlbmRpZgotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19B
UFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlTQ1RQX1NPQ0tFVF9VTkxPQ0so
U0NUUF9JTlBfU08oaW5wKSwgMCk7CiAjZW5kaWYKIAkJY2EtPm0gPSBzY3RwX2NvcHlfb3V0X2Fs
bCh1aW8sIGNhLT5zbmRsZW4pOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQo
X19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlTQ1RQX1NPQ0tFVF9MT0NL
KFNDVFBfSU5QX1NPKGlucCksIDApOwogI2VuZGlmCiAJCWlmIChjYS0+bSA9PSBOVUxMKSB7CkBA
IC03MzgyLDEzICs3NDUxLDE0IEBAIHNjdHBfc2VuZGFsbChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5w
LCBzdHJ1Y3QgdWlvICp1aW8sIHN0cnVjdCBtYnVmICptLAogCQkJY2EtPnNuZGxlbiArPSBTQ1RQ
X0JVRl9MRU4obWF0KTsKIAkJfQogCX0KKwlpbnAtPnNjdHBfZmxhZ3MgfD0gU0NUUF9QQ0JfRkxB
R1NfU05EX0lURVJBVE9SX1VQOwogCXJldCA9IHNjdHBfaW5pdGlhdGVfaXRlcmF0b3IoTlVMTCwg
c2N0cF9zZW5kYWxsX2l0ZXJhdG9yLCBOVUxMLAogCQkJCSAgICAgU0NUUF9QQ0JfQU5ZX0ZMQUdT
LCBTQ1RQX1BDQl9BTllfRkVBVFVSRVMsCiAJCQkJICAgICBTQ1RQX0FTT0NfQU5ZX1NUQVRFLAog
CQkJCSAgICAgKHZvaWQgKiljYSwgMCwKIAkJCQkgICAgIHNjdHBfc2VuZGFsbF9jb21wbGV0ZXMs
IGlucCwgMSk7CiAJaWYgKHJldCkgewotCQlTQ1RQX1BSSU5URigiRmFpbGVkIHRvIGluaXRpYXRl
IGl0ZXJhdG9yIGZvciBzZW5kYWxsXG4iKTsKKwkJaW5wLT5zY3RwX2ZsYWdzICY9IH5TQ1RQX1BD
Ql9GTEFHU19TTkRfSVRFUkFUT1JfVVA7CiAJCVNDVFBfRlJFRShjYSwgU0NUUF9NX0NPUFlBTCk7
CiAJCVNDVFBfTFRSQUNFX0VSUl9SRVRfUEtUKG0sIGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9N
X1NDVFBfT1VUUFVULCBFRkFVTFQpOwogCQlyZXR1cm4gKEVGQVVMVCk7CkBAIC03NTM4LDExICs3
NjA4LDcgQEAgc2N0cF9jbGVhbl91cF9kYXRhbGlzdChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiB9
CiAKIHN0YXRpYyB2b2lkCi1zY3RwX2NsZWFuX3VwX2N0bChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2Is
IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLCBpbnQgc29fbG9ja2VkCi0jaWYgIWRlZmlu
ZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKLQlTQ1RQX1VO
VVNFRAotI2VuZGlmCi0pCitzY3RwX2NsZWFuX3VwX2N0bChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2Is
IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLCBpbnQgc29fbG9ja2VkKQogewogCXN0cnVj
dCBzY3RwX3RtaXRfY2h1bmsgKmNoaywgKm5jaGs7CiAKQEAgLTc2NDUsMTEgKzc3MTEsNyBAQCBz
Y3RwX21vdmVfdG9fb3V0cXVldWUoc3RydWN0IHNjdHBfdGNiICpzdGNiLAogICAgICAgICAgICAg
ICAgICAgICAgIGludCAqZ2l2ZXVwLAogICAgICAgICAgICAgICAgICAgICAgIGludCBlZW9yX21v
ZGUsCiAgICAgICAgICAgICAgICAgICAgICAgaW50ICpiYWlsLAotICAgICAgICAgICAgICAgICAg
ICAgIGludCBzb19sb2NrZWQKLSNpZiAhZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKFND
VFBfU09fTE9DS19URVNUSU5HKQotICAgICAgICAgICAgICAgICAgICAgIFNDVFBfVU5VU0VECi0j
ZW5kaWYKLQkpCisgICAgICAgICAgICAgICAgICAgICAgaW50IHNvX2xvY2tlZCkKIHsKIAkvKiBN
b3ZlIGZyb20gdGhlIHN0cmVhbSB0byB0aGUgc2VuZF9xdWV1ZSBrZWVwaW5nIHRyYWNrIG9mIHRo
ZSB0b3RhbCAqLwogCXN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jOwpAQCAtNzY5NCw3ICs3
NzU2LDcgQEAgb25lX21vcmVfdGltZToKIAl9CiAJaWYgKChzcC0+bXNnX2lzX2NvbXBsZXRlKSAm
JiAoc3AtPmxlbmd0aCA9PSAwKSkgewogCQlpZiAoc3AtPnNlbmRlcl9hbGxfZG9uZSkgewotCQkJ
LyogV2UgYXJlIGRvaW5nIGRpZmZlcmVkIGNsZWFudXAuIExhc3QKKwkJCS8qIFdlIGFyZSBkb2lu
ZyBkZWZlcnJlZCBjbGVhbnVwLiBMYXN0CiAJCQkgKiB0aW1lIHRocm91Z2ggd2hlbiB3ZSB0b29r
IGFsbCB0aGUgZGF0YQogCQkJICogdGhlIHNlbmRlcl9hbGxfZG9uZSB3YXMgbm90IHNldC4KIAkJ
CSAqLwpAQCAtODA0OCw3ICs4MTEwLDcgQEAgcmVfbG9vazoKIAkJc2N0cF9hdXRoX2tleV9hY3F1
aXJlKHN0Y2IsIGNoay0+YXV0aF9rZXlpZCk7CiAJCWNoay0+aG9sZHNfa2V5X3JlZiA9IDE7CiAJ
fQotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19QYW5kYV9fKQorI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJY2hrLT5yZWMu
ZGF0YS50c24gPSBhdG9taWNfZmV0Y2hhZGRfaW50KCZhc29jLT5zZW5kaW5nX3NlcSwgMSk7CiAj
ZWxzZQogCWNoay0+cmVjLmRhdGEudHNuID0gYXNvYy0+c2VuZGluZ19zZXErKzsKQEAgLTgxNzEs
MTEgKzgyMzMsNyBAQCBvdXRfb2Y6CiAKIHN0YXRpYyB2b2lkCiBzY3RwX2ZpbGxfb3V0cXVldWUo
c3RydWN0IHNjdHBfdGNiICpzdGNiLAotICAgIHN0cnVjdCBzY3RwX25ldHMgKm5ldCwgaW50IGZy
YWdfcG9pbnQsIGludCBlZW9yX21vZGUsIGludCAqcXVpdF9ub3csIGludCBzb19sb2NrZWQKLSNp
ZiAhZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQot
CVNDVFBfVU5VU0VECi0jZW5kaWYKLSkKKyAgICBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsIGludCBm
cmFnX3BvaW50LCBpbnQgZWVvcl9tb2RlLCBpbnQgKnF1aXRfbm93LCBpbnQgc29fbG9ja2VkKQog
ewogCXN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jOwogCXN0cnVjdCBzY3RwX3N0cmVhbV9v
dXQgKnN0cnE7CkBAIC04MjIzLDcgKzgyODEsMTEgQEAgc2N0cF9maWxsX291dHF1ZXVlKHN0cnVj
dCBzY3RwX3RjYiAqc3RjYiwKIAkJfQogCQlzdHJxID0gc3RjYi0+YXNvYy5zc19mdW5jdGlvbnMu
c2N0cF9zc19zZWxlY3Rfc3RyZWFtKHN0Y2IsIG5ldCwgYXNvYyk7CiAJCXRvdGFsX21vdmVkICs9
IG1vdmVkOwotCQlzcGFjZV9sZWZ0IC09IG1vdmVkOworCQlpZiAoc3BhY2VfbGVmdCA+PSBtb3Zl
ZCkgeworCQkJc3BhY2VfbGVmdCAtPSBtb3ZlZDsKKwkJfSBlbHNlIHsKKwkJCXNwYWNlX2xlZnQg
PSAwOworCQl9CiAJCWlmIChzcGFjZV9sZWZ0ID49IFNDVFBfREFUQV9DSFVOS19PVkVSSEVBRChz
dGNiKSkgewogCQkJc3BhY2VfbGVmdCAtPSBTQ1RQX0RBVEFfQ0hVTktfT1ZFUkhFQUQoc3RjYik7
CiAJCX0gZWxzZSB7CkBAIC04Mjk1LDExICs4MzU3LDcgQEAgc2N0cF9tZWRfY2h1bmtfb3V0cHV0
KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCSAgICAgIGludCAqbnVtX291dCwKIAkJICAgICAg
aW50ICpyZWFzb25fY29kZSwKIAkJICAgICAgaW50IGNvbnRyb2xfb25seSwgaW50IGZyb21fd2hl
cmUsCi0JCSAgICAgIHN0cnVjdCB0aW1ldmFsICpub3csIGludCAqbm93X2ZpbGxlZCwgaW50IGZy
YWdfcG9pbnQsIGludCBzb19sb2NrZWQKLSNpZiAhZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZp
bmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQotCQkgICAgICBTQ1RQX1VOVVNFRAotI2VuZGlmCi0J
KQorCQkgICAgICBzdHJ1Y3QgdGltZXZhbCAqbm93LCBpbnQgKm5vd19maWxsZWQsIGludCBmcmFn
X3BvaW50LCBpbnQgc29fbG9ja2VkKQogewogCS8qKgogCSAqIE9rIHRoaXMgaXMgdGhlIGdlbmVy
aWMgY2h1bmsgc2VydmljZSBxdWV1ZS4gd2UgbXVzdCBkbyB0aGUKQEAgLTgzMjYsOCArODM4NCw4
IEBAIHNjdHBfbWVkX2NodW5rX291dHB1dChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogCWludCBi
dW5kbGVfYXQsIGN0bF9jbnQsIG5vX2RhdGFfY2h1bmtzLCBlZW9yX21vZGU7CiAJdW5zaWduZWQg
aW50IG10dSwgcl9tdHUsIG9tdHUsIG14X210dSwgdG9fb3V0OwogCWludCB0c25zX3NlbnQgPSAw
OwotCXVpbnQzMl90IGF1dGhfb2Zmc2V0ID0gMDsKLQlzdHJ1Y3Qgc2N0cF9hdXRoX2NodW5rICph
dXRoID0gTlVMTDsKKwl1aW50MzJfdCBhdXRoX29mZnNldDsKKwlzdHJ1Y3Qgc2N0cF9hdXRoX2No
dW5rICphdXRoOwogCXVpbnQxNl90IGF1dGhfa2V5aWQ7CiAJaW50IG92ZXJyaWRlX29rID0gMTsK
IAlpbnQgc2tpcF9maWxsX3VwID0gMDsKQEAgLTgzMzYsNyArODM5NCw3IEBAIHNjdHBfbWVkX2No
dW5rX291dHB1dChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogCSAgIHRoZSBkZXN0aW5hdGlvbi4g
Ki8KIAlpbnQgcXVpdF9ub3cgPSAwOwogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVm
aW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJaWYgKHNvX2xvY2tl
ZCkgewogCQlzY3RwX2xvY2tfYXNzZXJ0KFNDVFBfSU5QX1NPKGlucCkpOwogCX0gZWxzZSB7CkBA
IC04MzQ3LDcgKzg0MDUsNyBAQCBzY3RwX21lZF9jaHVua19vdXRwdXQoc3RydWN0IHNjdHBfaW5w
Y2IgKmlucCwKIAkqcmVhc29uX2NvZGUgPSAwOwogCWF1dGhfa2V5aWQgPSBzdGNiLT5hc29jLmF1
dGhpbmZvLmFjdGl2ZV9rZXlpZDsKIAlpZiAoKGFzb2MtPnN0YXRlICYgU0NUUF9TVEFURV9TSFVU
RE9XTl9QRU5ESU5HKSB8fAotCSAgICAoYXNvYy0+c3RhdGUgJiBTQ1RQX1NUQVRFX1NIVVRET1dO
X1JFQ0VJVkVEKSB8fAorCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9T
SFVURE9XTl9SRUNFSVZFRCkgfHwKIAkgICAgKHNjdHBfaXNfZmVhdHVyZV9vbihpbnAsIFNDVFBf
UENCX0ZMQUdTX0VYUExJQ0lUX0VPUikpKSB7CiAJCWVlb3JfbW9kZSA9IDE7CiAJfSBlbHNlIHsK
QEAgLTg1MjUsNiArODU4Myw4IEBAIGFnYWluX29uZV9tb3JlX3RpbWU6CiAJCX0KIAkJYnVuZGxl
X2F0ID0gMDsKIAkJZW5kb3V0Y2hhaW4gPSBvdXRjaGFpbiA9IE5VTEw7CisJCWF1dGggPSBOVUxM
OworCQlhdXRoX29mZnNldCA9IDA7CiAJCW5vX2ZyYWdtZW50ZmxnID0gMTsKIAkJb25lX2NodW5r
ID0gMDsKIAkJaWYgKG5ldC0+ZGVzdF9zdGF0ZSAmIFNDVFBfQUREUl9VTkNPTkZJUk1FRCkgewpA
QCAtODcwNyw3ICs4NzY3LDcgQEAgYWdhaW5fb25lX21vcmVfdGltZToKIAkJCQkJICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucC0+c2N0cF9scG9ydCwgc3RjYi0+cnBv
cnQsCiAJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG9ubChz
dGNiLT5hc29jLnBlZXJfdnRhZyksCiAJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuZXQtPnBvcnQsIE5VTEwsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCQkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwKICNlbmRpZgogCQkJ
CQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29fbG9ja2VkKSkpIHsK
QEAgLTg5MDYsNyArODk2Niw3IEBAIGFnYWluX29uZV9tb3JlX3RpbWU6CiAJCQkJCQkvKiB0dXJu
IG9mZiB0aGUgdGltZXIgKi8KIAkJCQkJCWlmIChTQ1RQX09TX1RJTUVSX1BFTkRJTkcoJnN0Y2It
PmFzb2MuZGFja190aW1lci50aW1lcikpIHsKIAkJCQkJCQlzY3RwX3RpbWVyX3N0b3AoU0NUUF9U
SU1FUl9UWVBFX1JFQ1YsCi0JCQkJCQkJCQlpbnAsIHN0Y2IsIG5ldCwKKwkJCQkJCQkgICAgICAg
ICAgICAgICAgaW5wLCBzdGNiLCBOVUxMLAogCQkJCQkJCSAgICAgICAgICAgICAgICBTQ1RQX0ZS
T01fU0NUUF9PVVRQVVQgKyBTQ1RQX0xPQ18xKTsKIAkJCQkJCX0KIAkJCQkJfQpAQCAtODk3OCw3
ICs5MDM4LDcgQEAgYWdhaW5fb25lX21vcmVfdGltZToKIAkJCQkJICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlucC0+c2N0cF9scG9ydCwgc3RjYi0+cnBvcnQsCiAJCQkJ
CSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG9ubChzdGNiLT5hc29j
LnBlZXJfdnRhZyksCiAJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuZXQtPnBvcnQsIE5VTEwsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCQkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwKICNlbmRpZgogCQkJCQkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29fbG9ja2VkKSkpIHsKQEAgLTkxMTcs
OCArOTE3Nyw4IEBAIGFnYWluX29uZV9tb3JlX3RpbWU6CiAJCQlvbXR1ID0gMDsKIAkJCWJyZWFr
OwogCQl9Ci0JCWlmICgoKChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX09QRU4p
IHx8Ci0JCSAgICAgIChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dO
X1JFQ0VJVkVEKSkgJiYKKwkJaWYgKCgoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RB
VEVfT1BFTikgfHwKKwkJICAgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVf
U0hVVERPV05fUkVDRUlWRUQpKSAmJgogCQkgICAgIChza2lwX2RhdGFfZm9yX3RoaXNfbmV0ID09
IDApKSB8fAogCQkgICAgKGNvb2tpZSkpIHsKIAkJCVRBSUxRX0ZPUkVBQ0hfU0FGRShjaGssICZh
c29jLT5zZW5kX3F1ZXVlLCBzY3RwX25leHQsIG5jaGspIHsKQEAgLTkxNjcsNyArOTIyNyw3IEBA
IGFnYWluX29uZV9tb3JlX3RpbWU6CiAJCQkJCWNoay0+ZmxhZ3MgfD0gQ0hVTktfRkxBR1NfRlJB
R01FTlRfT0s7CiAJCQkJfQogCQkJCWlmIChTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfZW5hYmxlX3Nh
Y2tfaW1tZWRpYXRlbHkpICYmCi0JCQkJICAgICgoYXNvYy0+c3RhdGUgJiBTQ1RQX1NUQVRFX1NI
VVRET1dOX1BFTkRJTkcpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORykpIHsKKwkJCQkg
ICAgKGFzb2MtPnN0YXRlICYgU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HKSkgewogCQkJCQlz
dHJ1Y3Qgc2N0cF9kYXRhX2NodW5rICpkY2hraDsKIAogCQkJCQlkY2hraCA9IG10b2QoY2hrLT5k
YXRhLCBzdHJ1Y3Qgc2N0cF9kYXRhX2NodW5rICopOwpAQCAtOTMyMCw3ICs5MzgwLDcgQEAgYWdh
aW5fb25lX21vcmVfdGltZToKIAkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnAtPnNjdHBfbHBvcnQsIHN0Y2ItPnJwb3J0LAogCQkJICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGh0b25sKHN0Y2ItPmFzb2MucGVlcl92dGFnKSwKIAkJCSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXQtPnBvcnQsIE5VTEwsCi0j
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAsIDAsCiAjZW5kaWYKIAkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzb19sb2NrZWQpKSkgewpAQCAtOTQ1NCwxNCArOTUxNCwxNSBAQCBzY3RwX3F1ZXVl
X29wX2VycihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBtYnVmICpvcF9lcnIpCiAJCXJl
dHVybjsKIAl9CiAJY2hrLT5jb3B5X2J5X3JlZiA9IDA7CisJY2hrLT5yZWMuY2h1bmtfaWQuaWQg
PSBTQ1RQX09QRVJBVElPTl9FUlJPUjsKKwljaGstPnJlYy5jaHVua19pZC5jYW5fdGFrZV9kYXRh
ID0gMDsKKwljaGstPmZsYWdzID0gMDsKIAljaGstPnNlbmRfc2l6ZSA9ICh1aW50MTZfdCljaHVu
a19sZW5ndGg7CiAJY2hrLT5zZW50ID0gU0NUUF9EQVRBR1JBTV9VTlNFTlQ7CiAJY2hrLT5zbmRf
Y291bnQgPSAwOwogCWNoay0+YXNvYyA9ICZzdGNiLT5hc29jOwogCWNoay0+ZGF0YSA9IG9wX2Vy
cjsKIAljaGstPndob1RvID0gTlVMTDsKLQljaGstPnJlYy5jaHVua19pZC5pZCA9IFNDVFBfT1BF
UkFUSU9OX0VSUk9SOwotCWNoay0+cmVjLmNodW5rX2lkLmNhbl90YWtlX2RhdGEgPSAwOwogCWhk
ciA9IG10b2Qob3BfZXJyLCBzdHJ1Y3Qgc2N0cF9jaHVua2hkciAqKTsKIAloZHItPmNodW5rX3R5
cGUgPSBTQ1RQX09QRVJBVElPTl9FUlJPUjsKIAloZHItPmNodW5rX2ZsYWdzID0gMDsKQEAgLTk0
NzIsNyArOTUzMyw3IEBAIHNjdHBfcXVldWVfb3BfZXJyKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwg
c3RydWN0IG1idWYgKm9wX2VycikKIAogaW50CiBzY3RwX3NlbmRfY29va2llX2VjaG8oc3RydWN0
IG1idWYgKm0sCi0gICAgaW50IG9mZnNldCwKKyAgICBpbnQgb2Zmc2V0LCBpbnQgbGltaXQsCiAg
ICAgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogICAgIHN0cnVjdCBzY3RwX25ldHMgKm5ldCkKIHsK
QEAgLTk0OTgsMTggKzk1NTksMjkgQEAgc2N0cF9zZW5kX2Nvb2tpZV9lY2hvKHN0cnVjdCBtYnVm
ICptLAogCQl9CiAJCXB0eXBlID0gbnRvaHMocGhkci0+cGFyYW1fdHlwZSk7CiAJCXBsZW4gPSBu
dG9ocyhwaGRyLT5wYXJhbV9sZW5ndGgpOworCQlpZiAocGxlbiA8IHNpemVvZihzdHJ1Y3Qgc2N0
cF9wYXJhbWhkcikpIHsKKwkJCXJldHVybiAoLTYpOworCQl9CiAJCWlmIChwdHlwZSA9PSBTQ1RQ
X1NUQVRFX0NPT0tJRSkgewogCQkJaW50IHBhZDsKIAogCQkJLyogZm91bmQgdGhlIGNvb2tpZSAq
LwotCQkJaWYgKChwYWQgPSAocGxlbiAlIDQpKSkgewotCQkJCXBsZW4gKz0gNCAtIHBhZDsKKwkJ
CWlmIChhdCArIHBsZW4gPiBsaW1pdCkgeworCQkJCXJldHVybiAoLTcpOwogCQkJfQogCQkJY29v
a2llID0gU0NUUF9NX0NPUFlNKG0sIGF0LCBwbGVuLCBNX05PV0FJVCk7CiAJCQlpZiAoY29va2ll
ID09IE5VTEwpIHsKIAkJCQkvKiBObyBtZW1vcnkgKi8KIAkJCQlyZXR1cm4gKC0yKTsKIAkJCX0K
KwkJCWlmICgocGFkID0gKHBsZW4gJSA0KSkgPiAwKSB7CisJCQkJcGFkID0gNCAtIHBhZDsKKwkJ
CX0KKwkJCWlmIChwYWQgPiAwKSB7CisJCQkJaWYgKHNjdHBfcGFkX2xhc3RtYnVmKGNvb2tpZSwg
cGFkLCBOVUxMKSA9PSBOVUxMKSB7CisJCQkJCXJldHVybiAoLTgpOworCQkJCX0KKwkJCX0KICNp
ZmRlZiBTQ1RQX01CVUZfTE9HR0lORwogCQkJaWYgKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9sb2dn
aW5nX2xldmVsKSAmIFNDVFBfTUJVRl9MT0dHSU5HX0VOQUJMRSkgewogCQkJCXNjdHBfbG9nX21i
Yyhjb29raWUsIFNDVFBfTUJVRl9JQ09QWSk7CkBAIC05NTM1LDcgKzk2MDcsNyBAQCBzY3RwX3Nl
bmRfY29va2llX2VjaG8oc3RydWN0IG1idWYgKm0sCiAJY2hrLT5yZWMuY2h1bmtfaWQuaWQgPSBT
Q1RQX0NPT0tJRV9FQ0hPOwogCWNoay0+cmVjLmNodW5rX2lkLmNhbl90YWtlX2RhdGEgPSAwOwog
CWNoay0+ZmxhZ3MgPSBDSFVOS19GTEFHU19GUkFHTUVOVF9PSzsKLQljaGstPnNlbmRfc2l6ZSA9
IHBsZW47CisJY2hrLT5zZW5kX3NpemUgPSBTQ1RQX1NJWkUzMihwbGVuKTsKIAljaGstPnNlbnQg
PSBTQ1RQX0RBVEFHUkFNX1VOU0VOVDsKIAljaGstPnNuZF9jb3VudCA9IDA7CiAJY2hrLT5hc29j
ID0gJnN0Y2ItPmFzb2M7CkBAIC05NTYxLDcgKzk2MzMsNiBAQCBzY3RwX3NlbmRfaGVhcnRiZWF0
X2FjayhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJc3RydWN0IHNjdHBfY2h1bmtoZHIgKmNoZHI7
CiAJc3RydWN0IHNjdHBfdG1pdF9jaHVuayAqY2hrOwogCi0KIAlpZiAobmV0ID09IE5VTEwpCiAJ
CS8qIG11c3QgaGF2ZSBhIG5ldCBwb2ludGVyICovCiAJCXJldHVybjsKQEAgLTk1NzksMTMgKzk2
NTAsOCBAQCBzY3RwX3NlbmRfaGVhcnRiZWF0X2FjayhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJ
Y2hkciA9IG10b2Qob3V0Y2hhaW4sIHN0cnVjdCBzY3RwX2NodW5raGRyICopOwogCWNoZHItPmNo
dW5rX3R5cGUgPSBTQ1RQX0hFQVJUQkVBVF9BQ0s7CiAJY2hkci0+Y2h1bmtfZmxhZ3MgPSAwOwot
CWlmIChjaGtfbGVuZ3RoICUgNCkgewotCQkvKiBuZWVkIHBhZCAqLwotCQl1aW50MzJfdCBjcHRo
aXMgPSAwOwotCQlpbnQgcGFkbGVuOwotCi0JCXBhZGxlbiA9IDQgLSAoY2hrX2xlbmd0aCAlIDQp
OwotCQltX2NvcHliYWNrKG91dGNoYWluLCBjaGtfbGVuZ3RoLCBwYWRsZW4sIChjYWRkcl90KSZj
cHRoaXMpOworCWlmIChjaGtfbGVuZ3RoICUgNCAhPSAwKSB7CisJCXNjdHBfcGFkX2xhc3RtYnVm
KG91dGNoYWluLCA0IC0gKGNoa19sZW5ndGggJSA0KSwgTlVMTCk7CiAJfQogCXNjdHBfYWxsb2Nf
YV9jaHVuayhzdGNiLCBjaGspOwogCWlmIChjaGsgPT0gTlVMTCkgewpAQCAtOTY4Myw3ICs5NzQ5
LDYgQEAgc2N0cF9zZW5kX3NodXRkb3duX2FjayhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVj
dCBzY3RwX25ldHMgKm5ldCkKIAljaGstPnNlbmRfc2l6ZSA9IHNpemVvZihzdHJ1Y3Qgc2N0cF9j
aHVua2hkcik7CiAJY2hrLT5zZW50ID0gU0NUUF9EQVRBR1JBTV9VTlNFTlQ7CiAJY2hrLT5zbmRf
Y291bnQgPSAwOwotCWNoay0+ZmxhZ3MgPSAwOwogCWNoay0+YXNvYyA9ICZzdGNiLT5hc29jOwog
CWNoay0+ZGF0YSA9IG1fc2h1dGRvd25fYWNrOwogCWNoay0+d2hvVG8gPSBuZXQ7CkBAIC05NzM4
LDcgKzk4MDMsNiBAQCBzY3RwX3NlbmRfc2h1dGRvd24oc3RydWN0IHNjdHBfdGNiICpzdGNiLCBz
dHJ1Y3Qgc2N0cF9uZXRzICpuZXQpCiAJCWNoay0+c2VuZF9zaXplID0gc2l6ZW9mKHN0cnVjdCBz
Y3RwX3NodXRkb3duX2NodW5rKTsKIAkJY2hrLT5zZW50ID0gU0NUUF9EQVRBR1JBTV9VTlNFTlQ7
CiAJCWNoay0+c25kX2NvdW50ID0gMDsKLQkJY2hrLT5mbGFncyA9IDA7CiAJCWNoay0+YXNvYyA9
ICZzdGNiLT5hc29jOwogCQljaGstPmRhdGEgPSBtX3NodXRkb3duOwogCQljaGstPndob1RvID0g
bmV0OwpAQCAtOTkxMywxMSArOTk3Nyw3IEBAIHN0YXRpYyBpbnQKIHNjdHBfY2h1bmtfcmV0cmFu
c21pc3Npb24oc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKICAgICBzdHJ1Y3Qgc2N0cF90Y2IgKnN0
Y2IsCiAgICAgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCi0gICAgaW50ICpjbnRfb3V0
LCBzdHJ1Y3QgdGltZXZhbCAqbm93LCBpbnQgKm5vd19maWxsZWQsIGludCAqZnJfZG9uZSwgaW50
IHNvX2xvY2tlZAotI2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoU0NUUF9TT19M
T0NLX1RFU1RJTkcpCi0gICAgU0NUUF9VTlVTRUQKLSNlbmRpZgotICAgICkKKyAgICBpbnQgKmNu
dF9vdXQsIHN0cnVjdCB0aW1ldmFsICpub3csIGludCAqbm93X2ZpbGxlZCwgaW50ICpmcl9kb25l
LCBpbnQgc29fbG9ja2VkKQogewogCS8qLQogCSAqIHNlbmQgb3V0IG9uZSBNVFUgb2YgcmV0cmFu
c21pc3Npb24uIElmIGZhc3RfcmV0cmFuc21pdCBpcwpAQCAtOTk0Niw3ICsxMDAwNiw3IEBAIHNj
dHBfY2h1bmtfcmV0cmFuc21pc3Npb24oc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAlpbnQgZGF0
YV9hdXRoX3JlcWQgPSAwOwogCXVpbnQzMl90IGRtdHUgPSAwOwogCi0jaWYgZGVmaW5lZChfX0FQ
UExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAJaWYgKHNvX2xvY2tlZCkgewogCQlzY3RwX2xvY2tfYXNzZXJ0KFNDVFBfSU5QX1NPKGlucCkp
OwogCX0gZWxzZSB7CkBAIC0xMDAyNyw3ICsxMDA4Nyw3IEBAIHNjdHBfY2h1bmtfcmV0cmFuc21p
c3Npb24oc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5vX2ZyYWdtZW50ZmxnLCAwLCAwLAogCQkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW5wLT5zY3RwX2xwb3J0LCBzdGNiLT5ycG9ydCwgaHRv
bmwoc3RjYi0+YXNvYy5wZWVyX3Z0YWcpLAogCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2hrLT53aG9Uby0+cG9ydCwgTlVMTCwKLSNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLAogI2VuZGlm
CiAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb19sb2NrZWQpKSkg
ewpAQCAtMTAwNjYsOCArMTAxMjYsOCBAQCBzY3RwX2NodW5rX3JldHJhbnNtaXNzaW9uKHN0cnVj
dCBzY3RwX2lucGNiICppbnAsCiAJaWYgKFRBSUxRX0VNUFRZKCZhc29jLT5zZW50X3F1ZXVlKSkg
ewogCQlyZXR1cm4gKFNDVFBfUkVUUkFOX0RPTkUpOwogCX0KLQlpZiAoKFNDVFBfR0VUX1NUQVRF
KGFzb2MpID09IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCkgfHwKLQkgICAgKFNDVFBfR0VUX1NU
QVRFKGFzb2MpID09IFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQpKSB7CisJaWYgKChTQ1RQX0dFVF9T
VEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9FQ0hPRUQpIHx8CisJICAgIChTQ1RQX0dF
VF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSkgewogCQkvKiBub3QgeWV0
IG9wZW4sIHJlc2VuZCB0aGUgY29va2llIGFuZCB0aGF0IGlzIGl0ICovCiAJCXJldHVybiAoMSk7
CiAJfQpAQCAtMTAwOTAsOCArMTAxNTAsOCBAQCBzY3RwX2NodW5rX3JldHJhbnNtaXNzaW9uKHN0
cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCQlzdHJ1Y3QgbWJ1ZiAqb3BfZXJyOwogCQkJY2hhciBt
c2dbU0NUUF9ESUFHX0lORk9fTEVOXTsKIAotCQkJc25wcmludGYobXNnLCBzaXplb2YobXNnKSwg
IlRTTiAlOC44eCByZXRyYW5zbWl0dGVkICVkIHRpbWVzLCBnaXZpbmcgdXAiLAotCQkJCSBjaGst
PnJlYy5kYXRhLnRzbiwgY2hrLT5zbmRfY291bnQpOworCQkJU0NUUF9TTlBSSU5URihtc2csIHNp
emVvZihtc2cpLCAiVFNOICU4Ljh4IHJldHJhbnNtaXR0ZWQgJWQgdGltZXMsIGdpdmluZyB1cCIs
CisJCQkgICAgICAgICAgICAgIGNoay0+cmVjLmRhdGEudHNuLCBjaGstPnNuZF9jb3VudCk7CiAJ
CQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9kaWFn
X2luZm9fY29kZSksCiAJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyk7CiAJCQlh
dG9taWNfYWRkX2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIDEpOwpAQCAtMTAzMDgsNyArMTAzNjgs
NyBAQCBzY3RwX2NodW5rX3JldHJhbnNtaXNzaW9uKHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJ
CQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9fZnJhZ21lbnRmbGcs
IDAsIDAsCiAJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wLT5z
Y3RwX2xwb3J0LCBzdGNiLT5ycG9ydCwgaHRvbmwoc3RjYi0+YXNvYy5wZWVyX3Z0YWcpLAogCQkJ
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldC0+cG9ydCwgTlVMTCwK
LSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMCwgMCwKICNlbmRpZgogCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNvX2xvY2tlZCkpKSB7CkBAIC0xMDQxOCw3ICsxMDQ3OCw3IEBAIHNjdHBfY2h1
bmtfcmV0cmFuc21pc3Npb24oc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJCQkJCSAqIHQzLWV4
cGlyaW5nLgogCQkJCQkJICovCiAJCQkJCQlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBF
X1NFTkQsIGlucCwgc3RjYiwgbmV0LAotCQkJCQkJCQlTQ1RQX0ZST01fU0NUUF9PVVRQVVQgKyBT
Q1RQX0xPQ18yKTsKKwkJCQkJCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUF9PVVRQVVQg
KyBTQ1RQX0xPQ18yKTsKIAkJCQkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NF
TkQsIGlucCwgc3RjYiwgbmV0KTsKIAkJCQkJfQogCQkJCX0KQEAgLTEwNDc3LDExICsxMDUzNyw3
IEBAIHZvaWQKIHNjdHBfY2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAgICAg
c3RydWN0IHNjdHBfdGNiICpzdGNiLAogICAgIGludCBmcm9tX3doZXJlLAotICAgIGludCBzb19s
b2NrZWQKLSNpZiAhZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKFNDVFBfU09fTE9DS19U
RVNUSU5HKQotICAgIFNDVFBfVU5VU0VECi0jZW5kaWYKLSAgICApCisgICAgaW50IHNvX2xvY2tl
ZCkKIHsKIAkvKi0KIAkgKiBPayB0aGlzIGlzIHRoZSBnZW5lcmljIGNodW5rIHNlcnZpY2UgcXVl
dWUuIHdlIG11c3QgZG8gdGhlCkBAIC0xMDUwOCw3ICsxMDU2NCw3IEBAIHNjdHBfY2h1bmtfb3V0
cHV0KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJaW50IGZyX2RvbmU7CiAJdW5zaWduZWQgaW50
IHRvdF9mcnMgPSAwOwogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQ
UExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJaWYgKHNvX2xvY2tlZCkgewogCQlz
Y3RwX2xvY2tfYXNzZXJ0KFNDVFBfSU5QX1NPKGlucCkpOwogCX0gZWxzZSB7CkBAIC0xMDU0NCw3
ICsxMDYwMCw4IEBAIGRvX2l0X2FnYWluOgogCSAqLwogCWlmIChTQ1RQX09TX1RJTUVSX1BFTkRJ
TkcoJnN0Y2ItPmFzb2MuZGFja190aW1lci50aW1lcikpIHsKIAkJc2N0cF9zZW5kX3NhY2soc3Rj
Yiwgc29fbG9ja2VkKTsKLQkJKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCZzdGNiLT5hc29jLmRh
Y2tfdGltZXIudGltZXIpOworCQlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX1JFQ1Ys
IHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIE5VTEwsCisJCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01f
U0NUUF9PVVRQVVQgKyBTQ1RQX0xPQ18zKTsKIAl9CiAJd2hpbGUgKGFzb2MtPnNlbnRfcXVldWVf
cmV0cmFuX2NudCkgewogCQkvKi0KQEAgLTEwNzU3LDIzICsxMDgxNCwxNSBAQCBkb19pdF9hZ2Fp
bjoKIGludAogc2N0cF9vdXRwdXQoCiAJc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKLSNpZiBkZWZp
bmVkKF9fUGFuZGFfXykKLQlwYWtoYW5kbGVfdHlwZSBtLAotI2Vsc2UKIAlzdHJ1Y3QgbWJ1ZiAq
bSwKLSNlbmRpZgogCXN0cnVjdCBzb2NrYWRkciAqYWRkciwKLSNpZiBkZWZpbmVkKF9fUGFuZGFf
XykKLQlwYWtoYW5kbGVfdHlwZSBjb250cm9sLAotI2Vsc2UKIAlzdHJ1Y3QgbWJ1ZiAqY29udHJv
bCwKLSNlbmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9u
ID49IDUwMDAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJc3RydWN0IHRocmVhZCAqcCwKLSNlbGlmIGRlZmluZWQoX19XaW5kb3dzX18pCisj
ZWxpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlQS1RIUkVB
RCBwLAogI2Vsc2UKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzdHJ1Y3QgcHJvYyAqcCBTQ1RQX1VOVVNF
RCwKICNlbHNlCiAJc3RydWN0IHByb2MgKnAsCkBAIC0xMDc5NSw3ICsxMDg0NCw3IEBAIHNjdHBf
b3V0cHV0KAogCQkJICAgIChzdHJ1Y3QgdWlvICopTlVMTCwKIAkJCSAgICBtLAogCQkJICAgIGNv
bnRyb2wsCi0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19QYW5kYV9fKQorI2lm
IGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJICAgIGZs
YWdzCiAjZWxzZQogCQkJICAgIGZsYWdzLCBwCkBAIC0xMTAyMCwxMSArMTEwNjksNyBAQCBzY3Rw
X2ZpbGxfaW5fcmVzdDoKIH0KIAogdm9pZAotc2N0cF9zZW5kX3NhY2soc3RydWN0IHNjdHBfdGNi
ICpzdGNiLCBpbnQgc29fbG9ja2VkCi0jaWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5l
ZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKLQlTQ1RQX1VOVVNFRAotI2VuZGlmCi0pCitzY3RwX3Nl
bmRfc2FjayhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIGludCBzb19sb2NrZWQpCiB7CiAJLyotCiAJ
ICogUXVldWUgdXAgYSBTQUNLIG9yIE5SLVNBQ0sgaW4gdGhlIGNvbnRyb2wgcXVldWUuCkBAIC0x
MTA5MCw3ICsxMTEzNSw3IEBAIHNjdHBfc2VuZF9zYWNrKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwg
aW50IHNvX2xvY2tlZAogCQkJaWYgKHN0Y2ItPmFzb2MuZGVsYXllZF9hY2spIHsKIAkJCQlzY3Rw
X3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX1JFQ1YsCiAJCQkJICAgICAgICAgICAgICAgIHN0
Y2ItPnNjdHBfZXAsIHN0Y2IsIE5VTEwsCi0JCQkJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9T
Q1RQX09VVFBVVCArIFNDVFBfTE9DXzMpOworCQkJCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01f
U0NUUF9PVVRQVVQgKyBTQ1RQX0xPQ180KTsKIAkJCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElN
RVJfVFlQRV9SRUNWLAogCQkJCSAgICBzdGNiLT5zY3RwX2VwLCBzdGNiLCBOVUxMKTsKIAkJCX0g
ZWxzZSB7CkBAIC0xMTE1OSw3ICsxMTIwNCw3IEBAIHNjdHBfc2VuZF9zYWNrKHN0cnVjdCBzY3Rw
X3RjYiAqc3RjYiwgaW50IHNvX2xvY2tlZAogCQlpZiAoc3RjYi0+YXNvYy5kZWxheWVkX2Fjaykg
ewogCQkJc2N0cF90aW1lcl9zdG9wKFNDVFBfVElNRVJfVFlQRV9SRUNWLAogCQkJICAgICAgICAg
ICAgICAgIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIE5VTEwsCi0JCQkgICAgICAgICAgICAgICAgU0NU
UF9GUk9NX1NDVFBfT1VUUFVUICsgU0NUUF9MT0NfNCk7CisJCQkgICAgICAgICAgICAgICAgU0NU
UF9GUk9NX1NDVFBfT1VUUFVUICsgU0NUUF9MT0NfNSk7CiAJCQlzY3RwX3RpbWVyX3N0YXJ0KFND
VFBfVElNRVJfVFlQRV9SRUNWLAogCQkJICAgIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIE5VTEwpOwog
CQl9IGVsc2UgewpAQCAtMTEyMDUsNyArMTEyNTAsNyBAQCBzY3RwX3NlbmRfc2FjayhzdHJ1Y3Qg
c2N0cF90Y2IgKnN0Y2IsIGludCBzb19sb2NrZWQKIAkJaWYgKGhpZ2hlc3RfdHNuID4gYXNvYy0+
bWFwcGluZ19hcnJheV9iYXNlX3RzbikgewogCQkJc2l6ID0gKCgoaGlnaGVzdF90c24gLSBhc29j
LT5tYXBwaW5nX2FycmF5X2Jhc2VfdHNuKSArIDEpICsgNykgLyA4OwogCQl9IGVsc2UgewotCQkJ
c2l6ID0gKCgoTUFYX1RTTiAtIGhpZ2hlc3RfdHNuKSArIDEpICsgaGlnaGVzdF90c24gKyA3KSAv
IDg7CisJCQlzaXogPSAoKChNQVhfVFNOIC0gYXNvYy0+bWFwcGluZ19hcnJheV9iYXNlX3Rzbikg
KyAxKSArIGhpZ2hlc3RfdHNuICsgNykgLyA4OwogCQl9CiAJfSBlbHNlIHsKIAkJc2FjayA9IE5V
TEw7CkBAIC0xMTQxNiwxMSArMTE0NjEsNyBAQCBzY3RwX3NlbmRfc2FjayhzdHJ1Y3Qgc2N0cF90
Y2IgKnN0Y2IsIGludCBzb19sb2NrZWQKIH0KIAogdm9pZAotc2N0cF9zZW5kX2Fib3J0X3RjYihz
dHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBtYnVmICpvcGVyciwgaW50IHNvX2xvY2tlZAot
I2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcp
Ci0gICAgU0NUUF9VTlVTRUQKLSNlbmRpZgotICAgICkKK3NjdHBfc2VuZF9hYm9ydF90Y2Ioc3Ry
dWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3QgbWJ1ZiAqb3BlcnIsIGludCBzb19sb2NrZWQpCiB7
CiAJc3RydWN0IG1idWYgKm1fYWJvcnQsICptLCAqbV9sYXN0OwogCXN0cnVjdCBtYnVmICptX291
dCwgKm1fZW5kID0gTlVMTDsKQEAgLTExNDMyLDcgKzExNDczLDcgQEAgc2N0cF9zZW5kX2Fib3J0
X3RjYihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBtYnVmICpvcGVyciwgaW50IHNvX2xv
Y2tlZAogCWludCBlcnJvcjsKIAl1aW50MTZfdCBjYXVzZV9sZW4sIGNodW5rX2xlbiwgcGFkZGlu
Z19sZW47CiAKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlpZiAoc29fbG9ja2VkKSB7CiAJCXNjdHBfbG9j
a19hc3NlcnQoU0NUUF9JTlBfU08oc3RjYi0+c2N0cF9lcCkpOwogCX0gZWxzZSB7CkBAIC0xMTUx
Myw3ICsxMTU1NCw3IEBAIHNjdHBfc2VuZF9hYm9ydF90Y2Ioc3RydWN0IHNjdHBfdGNiICpzdGNi
LCBzdHJ1Y3QgbWJ1ZiAqb3BlcnIsIGludCBzb19sb2NrZWQKIAkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV9vdXQsIGF1dGhfb2Zmc2V0LCBhdXRoLCBzdGNiLT5hc29j
LmF1dGhpbmZvLmFjdGl2ZV9rZXlpZCwgMSwgMCwgMCwKIAkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RjYi0+c2N0cF9lcC0+c2N0cF9scG9ydCwgc3RjYi0+cnBvcnQs
IGh0b25sKHZ0YWcpLAogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGNiLT5hc29jLnByaW1hcnlfZGVzdGluYXRpb24tPnBvcnQsIE5VTEwsCi0jaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLAog
I2VuZGlmCiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvX2xvY2tl
ZCkpKSB7CkBAIC0xMTU2Myw3ICsxMTYwNCw3IEBAIHNjdHBfc2VuZF9zaHV0ZG93bl9jb21wbGV0
ZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0Y2ItPnNjdHBfZXAtPnNjdHBfbHBvcnQsIHN0Y2ItPnJwb3J0LAogCSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG9ubCh2dGFnKSwKIAkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0LT5wb3J0LCBOVUxMLAotI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MCwgMCwKICNlbmRpZgogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
Q1RQX1NPX05PVF9MT0NLRUQpKSkgewpAQCAtMTE1NzksNyArMTE2MjAsNyBAQCBzY3RwX3NlbmRf
c2h1dGRvd25fY29tcGxldGUoc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCXJldHVybjsKIH0KIAot
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKIHN0YXRpYyB2b2lkCiBzY3RwX3NlbmRfcmVzcF9tc2coc3Ry
dWN0IHNvY2thZGRyICpzcmMsIHN0cnVjdCBzb2NrYWRkciAqZHN0LAogICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCBzY3RwaGRyICpzaCwgdWludDMyX3QgdnRhZywKQEAgLTExNTk0LDExICsxMTYz
NSw3IEBAIHNjdHBfc2VuZF9yZXNwX21zZyhzdHJ1Y3Qgc29ja2FkZHIgKnNyYywgc3RydWN0IHNv
Y2thZGRyICpkc3QsCiAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdnJmX2lkIFNDVFBfVU5V
U0VELCB1aW50MTZfdCBwb3J0KQogI2VuZGlmCiB7Ci0jaWZkZWYgX19QYW5kYV9fCi0JcGFraGFu
ZGxlX3R5cGUgb19wYWs7Ci0jZWxzZQogCXN0cnVjdCBtYnVmICpvX3BhazsKLSNlbmRpZgogCXN0
cnVjdCBtYnVmICptb3V0OwogCXN0cnVjdCBzY3RwaGRyICpzaG91dDsKIAlzdHJ1Y3Qgc2N0cF9j
aHVua2hkciAqY2g7CkBAIC0xMTYwNyw3ICsxMTY0NCw3IEBAIHNjdHBfc2VuZF9yZXNwX21zZyhz
dHJ1Y3Qgc29ja2FkZHIgKnNyYywgc3RydWN0IHNvY2thZGRyICpkc3QsCiAjZW5kaWYKIAlpbnQg
cmV0LCBsZW4sIGNhdXNlX2xlbiwgcGFkZGluZ19sZW47CiAjaWZkZWYgSU5FVAotI2lmIGRlZmlu
ZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fUGFuZGFfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzY3RwX3JvdXRlX3Qgcm87CiAjZW5kaWYK
IAlzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNyY19zaW4sICpkc3Rfc2luOwpAQCAtMTE2NjIsNyArMTE2
OTksNyBAQCBzY3RwX3NlbmRfcmVzcF9tc2coc3RydWN0IHNvY2thZGRyICpzcmMsIHN0cnVjdCBz
b2NrYWRkciAqZHN0LAogCQlsZW4gKz0gc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpOwogCX0KICNlbmRp
ZgotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogI2lmIGRlZmluZWQoQVBQTEVfTEVPUEFSRCkgfHwgZGVmaW5l
ZChBUFBMRV9TTk9XTEVPUEFSRCkKIAltb3V0ID0gc2N0cF9nZXRfbWJ1Zl9mb3JfbXNnKGxlbiAr
IG1heF9saW5raGRyLCAxLCBNX05PV0FJVCwgMSwgTVRfREFUQSk7CiAjZWxzZQpAQCAtMTE2Nzcs
NyArMTE3MTQsNyBAQCBzY3RwX3NlbmRfcmVzcF9tc2coc3RydWN0IHNvY2thZGRyICpzcmMsIHN0
cnVjdCBzb2NrYWRkciAqZHN0LAogCQl9CiAJCXJldHVybjsKIAl9Ci0jaWYgZGVmaW5lZChfX0FQ
UExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAjaWYgZGVmaW5lZChBUFBMRV9MRU9QQVJEKSB8fCBkZWZpbmVkKEFQUExFX1NOT1dMRU9QQVJE
KQogCVNDVFBfQlVGX1JFU1ZfVUYobW91dCwgbWF4X2xpbmtoZHIpOwogI2Vsc2UKQEAgLTExNjg4
LDcgKzExNzI1LDcgQEAgc2N0cF9zZW5kX3Jlc3BfbXNnKHN0cnVjdCBzb2NrYWRkciAqc3JjLCBz
dHJ1Y3Qgc29ja2FkZHIgKmRzdCwKICNlbmRpZgogCVNDVFBfQlVGX0xFTihtb3V0KSA9IGxlbjsK
IAlTQ1RQX0JVRl9ORVhUKG1vdXQpID0gY2F1c2U7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykK
KyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCU1f
U0VURklCKG1vdXQsIGZpYm51bSk7CiAJbW91dC0+bV9wa3RoZHIuZmxvd2lkID0gbWZsb3dpZDsK
IAlNX0hBU0hUWVBFX1NFVChtb3V0LCBtZmxvd3R5cGUpOwpAQCAtMTE3MDgsMTggKzExNzQ1LDE2
IEBAIHNjdHBfc2VuZF9yZXNwX21zZyhzdHJ1Y3Qgc29ja2FkZHIgKnNyYywgc3RydWN0IHNvY2th
ZGRyICpkc3QsCiAJCWlwLT5pcF92ID0gSVBWRVJTSU9OOwogCQlpcC0+aXBfaGwgPSAoc2l6ZW9m
KHN0cnVjdCBpcCkgPj4gMik7CiAJCWlwLT5pcF90b3MgPSAwOwotI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pCi0jaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0gMTAwMDAwMAorI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCWlwLT5pcF9vZmYgPSBodG9u
cyhJUF9ERik7Ci0jZWxzZQotCQlpcC0+aXBfb2ZmID0gSVBfREY7Ci0jZW5kaWYKLSNlbGlmIGRl
ZmluZWQoV0lUSF9DT05WRVJUX0lQX09GRikgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmlu
ZWQoX19Vc2Vyc3BhY2Vfb3NfRGFyd2luKQorI2VsaWYgZGVmaW5lZChXSVRIX0NPTlZFUlRfSVBf
T0ZGKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykKIAkJaXAtPmlwX29mZiA9IElQX0RGOwogI2Vsc2UK
IAkJaXAtPmlwX29mZiA9IGh0b25zKElQX0RGKTsKICNlbmRpZgotI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pCisjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQlpcC0+aXBfaWQgPSBodG9ucyhp
cF9pZCsrKTsKKyNlbGlmIGRlZmluZWQoX19GcmVlQlNEX18pCiAJCWlwX2ZpbGxpZChpcCk7CiAj
ZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKICNpZiBSQU5ET01fSVBfSUQKQEAgLTExNzI3LDggKzEx
NzYyLDYgQEAgc2N0cF9zZW5kX3Jlc3BfbXNnKHN0cnVjdCBzb2NrYWRkciAqc3JjLCBzdHJ1Y3Qg
c29ja2FkZHIgKmRzdCwKICNlbHNlCiAJCWlwLT5pcF9pZCA9IGh0b25zKGlwX2lkKyspOwogI2Vu
ZGlmCi0jZWxpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi0JCWlwLT5pcF9pZCA9IGh0b25zKGlw
X2lkKyspOwogI2Vsc2UKIAkJaXAtPmlwX2lkID0gaXBfaWQrKzsKICNlbmRpZgpAQCAtMTE3NTEs
NyArMTE3ODQsNyBAQCBzY3RwX3NlbmRfcmVzcF9tc2coc3RydWN0IHNvY2thZGRyICpzcmMsIHN0
cnVjdCBzb2NrYWRkciAqZHN0LAogCQlkc3Rfc2luNiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICop
ZHN0OwogCQlpcDYgPSBtdG9kKG1vdXQsIHN0cnVjdCBpcDZfaGRyICopOwogCQlpcDYtPmlwNl9m
bG93ID0gaHRvbmwoMHg2MDAwMDAwMCk7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlpZiAoVl9p
cDZfYXV0b19mbG93bGFiZWwpIHsKIAkJCWlwNi0+aXA2X2Zsb3cgfD0gKGh0b25sKGlwNl9yYW5k
b21mbG93bGFiZWwoKSkgJiBJUFY2X0ZMT1dMQUJFTF9NQVNLKTsKIAkJfQpAQCAtMTE4MjUsMTYg
KzExODU4LDEzIEBAIHNjdHBfc2VuZF9yZXNwX21zZyhzdHJ1Y3Qgc29ja2FkZHIgKnNyYywgc3Ry
dWN0IHNvY2thZGRyICpkc3QsCiAJc3dpdGNoIChkc3QtPnNhX2ZhbWlseSkgewogI2lmZGVmIElO
RVQKIAljYXNlIEFGX0lORVQ6Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19Q
YW5kYV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCQkvKiB6YXAgdGhlIHN0YWNrIHBvaW50ZXIgdG8gdGhlIHJvdXRlICovCiAJCW1lbXNldCgm
cm8sIDAsIHNpemVvZihzY3RwX3JvdXRlX3QpKTsKLSNpZiBkZWZpbmVkKF9fUGFuZGFfXykKLQkJ
cm8uX2xfYWRkci5zYS5zYV9mYW1pbHkgPSBBRl9JTkVUOwotI2VuZGlmCiAjZW5kaWYKIAkJaWYg
KHBvcnQpIHsKLSNpZiAhZGVmaW5lZChfX1dpbmRvd3NfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAoKF9fRnJlZUJTRF92ZXJzaW9uID4g
ODAzMDAwICYmIF9fRnJlZUJTRF92ZXJzaW9uIDwgOTAwMDAwKSB8fCBfX0ZyZWVCU0RfdmVyc2lv
biA+IDkwMDAwMCkKKyNpZiAhZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKIAkJCWlmIChWX3VkcF9ja3N1bSkgewogCQkJ
CXVkcC0+dWhfc3VtID0gaW5fcHNldWRvKGlwLT5pcF9zcmMuc19hZGRyLCBpcC0+aXBfZHN0LnNf
YWRkciwgdWRwLT51aF91bGVuICsgaHRvbnMoSVBQUk9UT19VRFApKTsKIAkJCX0gZWxzZSB7CkBA
IC0xMTg0NywxMiArMTE4NzcsOCBAQCBzY3RwX3NlbmRfcmVzcF9tc2coc3RydWN0IHNvY2thZGRy
ICpzcmMsIHN0cnVjdCBzb2NrYWRkciAqZHN0LAogCQkJdWRwLT51aF9zdW0gPSAwOwogI2VuZGlm
CiAJCX0KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQotI2lmIF9fRnJlZUJTRF92ZXJzaW9uID49
IDEwMDAwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogCQlpcC0+aXBfbGVuID0gaHRvbnMobGVuKTsKLSNlbHNlCi0JCWlwLT5pcF9sZW4gPSBs
ZW47Ci0jZW5kaWYKICNlbGlmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJCWlwLT5pcF9sZW4gPSBsZW47CiAjZWxzZQpAQCAtMTE4NjEsOCArMTE4ODcsOCBA
QCBzY3RwX3NlbmRfcmVzcF9tc2coc3RydWN0IHNvY2thZGRyICpzcmMsIHN0cnVjdCBzb2NrYWRk
ciAqZHN0LAogCQlpZiAocG9ydCkgewogCQkJc2hvdXQtPmNoZWNrc3VtID0gc2N0cF9jYWxjdWxh
dGVfY2tzdW0obW91dCwgc2l6ZW9mKHN0cnVjdCBpcCkgKyBzaXplb2Yoc3RydWN0IHVkcGhkcikp
OwogCQkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfc2VuZHN3Y3JjKTsKLSNpZiAhZGVmaW5lZChfX1dp
bmRvd3NfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKLSNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiAoKF9fRnJlZUJTRF92ZXJzaW9uID4gODAzMDAwICYmIF9fRnJlZUJTRF92ZXJzaW9u
IDwgOTAwMDAwKSB8fCBfX0ZyZWVCU0RfdmVyc2lvbiA+IDkwMDAwMCkKKyNpZiAhZGVmaW5lZChf
V0lOMzIpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykKIAkJCWlmIChWX3VkcF9ja3N1bSkgewogCQkJCVNDVFBfRU5BQkxFX1VEUF9DU1VNKG9fcGFr
KTsKIAkJCX0KQEAgLTExODcxLDcgKzExODk3LDcgQEAgc2N0cF9zZW5kX3Jlc3BfbXNnKHN0cnVj
dCBzb2NrYWRkciAqc3JjLCBzdHJ1Y3Qgc29ja2FkZHIgKmRzdCwKICNlbmRpZgogI2VuZGlmCiAJ
CX0gZWxzZSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24g
Pj0gODAwMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKIAkJCW1vdXQtPm1fcGt0aGRyLmNzdW1fZmxhZ3MgPSBDU1VNX1NDVFA7CiAJCQltb3V0
LT5tX3BrdGhkci5jc3VtX2RhdGEgPSBvZmZzZXRvZihzdHJ1Y3Qgc2N0cGhkciwgY2hlY2tzdW0p
OwogCQkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfc2VuZGh3Y3JjKTsKQEAgLTExODg1LDcgKzExOTEx
LDcgQEAgc2N0cF9zZW5kX3Jlc3BfbXNnKHN0cnVjdCBzb2NrYWRkciAqc3JjLCBzdHJ1Y3Qgc29j
a2FkZHIgKmRzdCwKIAkJCXNjdHBfcGFja2V0X2xvZyhvX3Bhayk7CiAJCX0KICNlbmRpZgotI2lm
IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fUGFuZGFfXykKKyNpZiBkZWZpbmVkKF9f
QVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJU0NUUF9JUF9PVVRQVVQocmV0
LCBvX3BhaywgJnJvLCBOVUxMLCB2cmZfaWQpOwogCQkvKiBGcmVlIHRoZSByb3V0ZSBpZiB3ZSBn
b3Qgb25lIGJhY2sgKi8KIAkJaWYgKHJvLnJvX3J0KSB7CkBAIC0xMTg5MywzMCArMTE5MTksMzEg
QEAgc2N0cF9zZW5kX3Jlc3BfbXNnKHN0cnVjdCBzb2NrYWRkciAqc3JjLCBzdHJ1Y3Qgc29ja2Fk
ZHIgKmRzdCwKIAkJCXJvLnJvX3J0ID0gTlVMTDsKIAkJfQogI2Vsc2UKKyNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQlTQ1RQX1BST0JFNShzZW5k
LCBOVUxMLCBOVUxMLCBpcCwgTlVMTCwgc2hvdXQpOworI2VuZGlmCiAJCVNDVFBfSVBfT1VUUFVU
KHJldCwgb19wYWssIE5VTEwsIE5VTEwsIHZyZl9pZCk7CiAjZW5kaWYKIAkJYnJlYWs7CiAjZW5k
aWYKICNpZmRlZiBJTkVUNgogCWNhc2UgQUZfSU5FVDY6Ci0JCWlwNi0+aXA2X3BsZW4gPSBodG9u
cyhsZW4gLSBzaXplb2Yoc3RydWN0IGlwNl9oZHIpKTsKKwkJaXA2LT5pcDZfcGxlbiA9IGh0b25z
KCh1aW50MTZfdCkobGVuIC0gc2l6ZW9mKHN0cnVjdCBpcDZfaGRyKSkpOwogCQlpZiAocG9ydCkg
ewogCQkJc2hvdXQtPmNoZWNrc3VtID0gc2N0cF9jYWxjdWxhdGVfY2tzdW0obW91dCwgc2l6ZW9m
KHN0cnVjdCBpcDZfaGRyKSArIHNpemVvZihzdHJ1Y3QgdWRwaGRyKSk7CiAJCQlTQ1RQX1NUQVRf
SU5DUihzY3Rwc19zZW5kc3djcmMpOwotI2lmIGRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIAkJCXVkcC0+dWhfc3Vt
ID0gMDsKLSNlbGlmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjZWxzZQogCQkJaWYgKCh1ZHAt
PnVoX3N1bSA9IGluNl9ja3N1bShvX3BhaywgSVBQUk9UT19VRFAsIHNpemVvZihzdHJ1Y3QgaXA2
X2hkciksIGxlbiAtIHNpemVvZihzdHJ1Y3QgaXA2X2hkcikpKSA9PSAwKSB7CiAJCQkJdWRwLT51
aF9zdW0gPSAweGZmZmY7CiAJCQl9CisjZW5kaWYKICNlbmRpZgogCQl9IGVsc2UgewotI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDkwMDAwMAotI2lmIF9f
RnJlZUJTRF92ZXJzaW9uID4gOTAxMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCW1vdXQtPm1fcGt0aGRyLmNzdW1fZmxhZ3MgPSBDU1VN
X1NDVFBfSVBWNjsKLSNlbHNlCi0JCQltb3V0LT5tX3BrdGhkci5jc3VtX2ZsYWdzID0gQ1NVTV9T
Q1RQOwotI2VuZGlmCiAJCQltb3V0LT5tX3BrdGhkci5jc3VtX2RhdGEgPSBvZmZzZXRvZihzdHJ1
Y3Qgc2N0cGhkciwgY2hlY2tzdW0pOwogCQkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfc2VuZGh3Y3Jj
KTsKICNlbHNlCkBAIC0xMTkyOCw2ICsxMTk1NSw5IEBAIHNjdHBfc2VuZF9yZXNwX21zZyhzdHJ1
Y3Qgc29ja2FkZHIgKnNyYywgc3RydWN0IHNvY2thZGRyICpkc3QsCiAJCWlmIChTQ1RQX0JBU0Vf
U1lTQ1RMKHNjdHBfbG9nZ2luZ19sZXZlbCkgJiBTQ1RQX0xBU1RfUEFDS0VUX1RSQUNJTkcpIHsK
IAkJCXNjdHBfcGFja2V0X2xvZyhvX3Bhayk7CiAJCX0KKyNlbmRpZgorI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCVNDVFBfUFJPQkU1KHNlbmQs
IE5VTEwsIE5VTEwsIGlwNiwgTlVMTCwgc2hvdXQpOwogI2VuZGlmCiAJCVNDVFBfSVA2X09VVFBV
VChyZXQsIG9fcGFrLCBOVUxMLCBOVUxMLCBOVUxMLCB2cmZfaWQpOwogCQlicmVhazsKQEAgLTEx
OTcwLDYgKzEyMDAwLDExIEBAIHNjdHBfc2VuZF9yZXNwX21zZyhzdHJ1Y3Qgc29ja2FkZHIgKnNy
Yywgc3RydWN0IHNvY2thZGRyICpkc3QsCiAJCXJldHVybjsKIAl9CiAJU0NUUERCRyhTQ1RQX0RF
QlVHX09VVFBVVDMsICJyZXR1cm4gZnJvbSBzZW5kIGlzICVkXG4iLCByZXQpOworI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJaWYgKHBvcnQpIHsK
KwkJVURQU1RBVF9JTkModWRwc19vcGFja2V0cyk7CisJfQorI2VuZGlmCiAJU0NUUF9TVEFUX0lO
Q1Ioc2N0cHNfc2VuZHBhY2tldHMpOwogCVNDVFBfU1RBVF9JTkNSX0NPVU5URVI2NChzY3Rwc19v
dXRwYWNrZXRzKTsKIAlTQ1RQX1NUQVRfSU5DUl9DT1VOVEVSNjQoc2N0cHNfb3V0Y29udHJvbGNo
dW5rcyk7CkBAIC0xMTk4MiwyNCArMTIwMTcsMjAgQEAgc2N0cF9zZW5kX3Jlc3BfbXNnKHN0cnVj
dCBzb2NrYWRkciAqc3JjLCBzdHJ1Y3Qgc29ja2FkZHIgKmRzdCwKIHZvaWQKIHNjdHBfc2VuZF9z
aHV0ZG93bl9jb21wbGV0ZTIoc3RydWN0IHNvY2thZGRyICpzcmMsIHN0cnVjdCBzb2NrYWRkciAq
ZHN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2N0cGhkciAqc2gsCi0j
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90
IG1mbG93dHlwZSwgdWludDMyX3QgbWZsb3dpZCwgdWludDE2X3QgZmlibnVtLAogI2VuZGlmCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHZyZl9pZCwgdWludDE2X3QgcG9y
dCkKIHsKIAlzY3RwX3NlbmRfcmVzcF9tc2coc3JjLCBkc3QsIHNoLCAwLCBTQ1RQX1NIVVRET1dO
X0NPTVBMRVRFLCBOVUxMLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkgICAgICAgICAgICAgICAg
ICAgbWZsb3d0eXBlLCBtZmxvd2lkLCBmaWJudW0sCiAjZW5kaWYKIAkgICAgICAgICAgICAgICAg
ICAgdnJmX2lkLCBwb3J0KTsKIH0KIAogdm9pZAotc2N0cF9zZW5kX2hiKHN0cnVjdCBzY3RwX3Rj
YiAqc3RjYiwgc3RydWN0IHNjdHBfbmV0cyAqbmV0LGludCBzb19sb2NrZWQKLSNpZiAhZGVmaW5l
ZChfX0FQUExFX18pICYmICFkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQotCVNDVFBfVU5V
U0VECi0jZW5kaWYKLSkKK3NjdHBfc2VuZF9oYihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVj
dCBzY3RwX25ldHMgKm5ldCxpbnQgc29fbG9ja2VkKQogewogCXN0cnVjdCBzY3RwX3RtaXRfY2h1
bmsgKmNoazsKIAlzdHJ1Y3Qgc2N0cF9oZWFydGJlYXRfY2h1bmsgKmhiOwpAQCAtMTIyNDAsNyAr
MTIyNzEsNyBAQCBzY3RwX3NlbmRfcGFja2V0X2Ryb3BwZWQoc3RydWN0IHNjdHBfdGNiICpzdGNi
LCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsCiAJY2hrLT5mbGFncyA9IDA7CiAJbGVuIC09IGlwaGxl
bjsKIAljaGstPnNlbmRfc2l6ZSA9IGxlbjsKLSAgICAgICAgLyogVmFsaWRhdGUgdGhhdCB3ZSBk
byBub3QgaGF2ZSBhbiBBQk9SVCBpbiBoZXJlLiAqLworCS8qIFZhbGlkYXRlIHRoYXQgd2UgZG8g
bm90IGhhdmUgYW4gQUJPUlQgaW4gaGVyZS4gKi8KIAlvZmZzZXQgPSBpcGhsZW4gKyBzaXplb2Yo
c3RydWN0IHNjdHBoZHIpOwogCWNoID0gKHN0cnVjdCBzY3RwX2NodW5raGRyICopc2N0cF9tX2dl
dHB0cihtLCBvZmZzZXQsCiAJCQkJCQkgICBzaXplb2YoKmNoKSwgKHVpbnQ4X3QgKikgJiBjaHVu
a19idWYpOwpAQCAtMTI4NjYsNyArMTI4OTcsNiBAQCBzY3RwX3NlbmRfc3RyX3Jlc2V0X3JlcShz
dHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJY2hrLT5ib29rX3NpemUgPSBzaXplb2Yoc3RydWN0IHNj
dHBfY2h1bmtoZHIpOwogCWNoay0+c2VuZF9zaXplID0gU0NUUF9TSVpFMzIoY2hrLT5ib29rX3Np
emUpOwogCWNoay0+Ym9va19zaXplX3NjYWxlID0gMDsKLQogCWNoay0+ZGF0YSA9IHNjdHBfZ2V0
X21idWZfZm9yX21zZyhNQ0xCWVRFUywgMCwgTV9OT1dBSVQsIDEsIE1UX0RBVEEpOwogCWlmIChj
aGstPmRhdGEgPT0gTlVMTCkgewogCQlzY3RwX2ZyZWVfYV9jaHVuayhzdGNiLCBjaGssIFNDVFBf
U09fTE9DS0VEKTsKQEAgLTEzMDA4LDcgKzEzMDM4LDcgQEAgc2tpcF9zdHVmZjoKIHZvaWQKIHNj
dHBfc2VuZF9hYm9ydChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGlwaGxlbiwgc3RydWN0IHNvY2thZGRy
ICpzcmMsIHN0cnVjdCBzb2NrYWRkciAqZHN0LAogICAgICAgICAgICAgICAgIHN0cnVjdCBzY3Rw
aGRyICpzaCwgdWludDMyX3QgdnRhZywgc3RydWN0IG1idWYgKmNhdXNlLAotI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKICAgICAgICAgICAgICAgICB1aW50OF90IG1mbG93dHlwZSwgdWludDMyX3QgbWZs
b3dpZCwgdWludDE2X3QgZmlibnVtLAogI2VuZGlmCiAgICAgICAgICAgICAgICAgdWludDMyX3Qg
dnJmX2lkLCB1aW50MTZfdCBwb3J0KQpAQCAtMTMwMjAsNyArMTMwNTAsNyBAQCBzY3RwX3NlbmRf
YWJvcnQoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIHN0cnVjdCBzb2NrYWRkciAqc3JjLCBz
dHJ1Y3Qgc29ja2FkZAogCQlyZXR1cm47CiAJfQogCXNjdHBfc2VuZF9yZXNwX21zZyhzcmMsIGRz
dCwgc2gsIHZ0YWcsIFNDVFBfQUJPUlRfQVNTT0NJQVRJT04sIGNhdXNlLAotI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKIAkgICAgICAgICAgICAgICAgICAgbWZsb3d0eXBlLCBtZmxvd2lkLCBmaWJudW0s
CiAjZW5kaWYKIAkgICAgICAgICAgICAgICAgICAgdnJmX2lkLCBwb3J0KTsKQEAgLTEzMDMwLDEz
ICsxMzA2MCwxMyBAQCBzY3RwX3NlbmRfYWJvcnQoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4s
IHN0cnVjdCBzb2NrYWRkciAqc3JjLCBzdHJ1Y3Qgc29ja2FkZAogdm9pZAogc2N0cF9zZW5kX29w
ZXJyX3RvKHN0cnVjdCBzb2NrYWRkciAqc3JjLCBzdHJ1Y3Qgc29ja2FkZHIgKmRzdCwKICAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3Qgc2N0cGhkciAqc2gsIHVpbnQzMl90IHZ0YWcsIHN0cnVjdCBt
YnVmICpjYXVzZSwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAgICAgICAgICAgICAgICAgICAgdWlu
dDhfdCBtZmxvd3R5cGUsIHVpbnQzMl90IG1mbG93aWQsIHVpbnQxNl90IGZpYm51bSwKICNlbmRp
ZgogICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHZyZl9pZCwgdWludDE2X3QgcG9ydCkKIHsK
IAlzY3RwX3NlbmRfcmVzcF9tc2coc3JjLCBkc3QsIHNoLCB2dGFnLCBTQ1RQX09QRVJBVElPTl9F
UlJPUiwgY2F1c2UsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCSAgICAgICAgICAgICAgICAgICBt
Zmxvd3R5cGUsIG1mbG93aWQsIGZpYm51bSwKICNlbmRpZgogCSAgICAgICAgICAgICAgICAgICB2
cmZfaWQsIHBvcnQpOwpAQCAtMTMwNDYsMjcgKzEzMDc2LDE0IEBAIHNjdHBfc2VuZF9vcGVycl90
byhzdHJ1Y3Qgc29ja2FkZHIgKnNyYywgc3RydWN0IHNvY2thZGRyICpkc3QsCiBzdGF0aWMgc3Ry
dWN0IG1idWYgKgogc2N0cF9jb3B5X3Jlc3VtZShzdHJ1Y3QgdWlvICp1aW8sCiAJCSBpbnQgbWF4
X3NlbmRfbGVuLAotI2lmIChkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lv
biA+IDYwMjAwMCkgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJIGludCB1c2VyX21hcmtzX2VvciwK
ICNlbmRpZgogCQkgaW50ICplcnJvciwKIAkJIHVpbnQzMl90ICpzbmRvdXQsCiAJCSBzdHJ1Y3Qg
bWJ1ZiAqKm5ld190YWlsKQogewotI2lmIGRlZmluZWQoX19QYW5kYV9fKQotCXN0cnVjdCBtYnVm
ICptOwotCi0JbSA9IG1fdWlvdG9tYnVmKHVpbywgTV9XQUlUT0ssIG1heF9zZW5kX2xlbiwgMCwK
LQkJCSh1c2VyX21hcmtzX2VvciA/IE1fRU9SIDogMCkpOwotCWlmIChtID09IE5VTEwpIHsKLQkJ
U0NUUF9MVFJBQ0VfRVJSX1JFVChOVUxMLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9PVVRQ
VVQsIEVOT0JVRlMpOwotCQkqZXJyb3IgPSBFTk9CVUZTOwotCX0gZWxzZSB7Ci0JCSpzbmRvdXQg
PSBtX2xlbmd0aChtLCBOVUxMKTsKLQkJKm5ld190YWlsID0gbV9sYXN0KG0pOwotCX0KLQlyZXR1
cm4gKG0pOwotI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24g
PiA2MDIwMDAgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzdHJ1Y3QgbWJ1ZiAqbTsKIAogCW0gPSBt
X3Vpb3RvbWJ1Zih1aW8sIE1fV0FJVE9LLCBtYXhfc2VuZF9sZW4sIDAsCkBAIC0xMzA4Myw3ICsx
MzEwMCw3IEBAIHNjdHBfY29weV9yZXN1bWUoc3RydWN0IHVpbyAqdWlvLAogCWludCBsZWZ0LCBj
YW5jcHksIHdpbGxjcHk7CiAJc3RydWN0IG1idWYgKm0sICpoZWFkOwogCi0jaWYgZGVmaW5lZChf
X0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAjaWYgZGVmaW5lZChBUFBMRV9MRU9QQVJEKQogCWxlZnQgPSAoaW50KW1pbih1aW8tPnVp
b19yZXNpZCwgbWF4X3NlbmRfbGVuKTsKICNlbHNlCkBAIC0xMzE0OSwxNyArMTMxNjYsNyBAQCBz
Y3RwX2NvcHlfb25lKHN0cnVjdCBzY3RwX3N0cmVhbV9xdWV1ZV9wZW5kaW5nICpzcCwKICAgICAg
ICAgICAgICAgc3RydWN0IHVpbyAqdWlvLAogICAgICAgICAgICAgICBpbnQgcmVzdl91cGZyb250
KQogewotI2lmIGRlZmluZWQoX19QYW5kYV9fKQotCXNwLT5kYXRhID0gbV91aW90b21idWYodWlv
LCBNX1dBSVRPSywgc3AtPmxlbmd0aCwKLQkgICAgICAgICAgICAgICAgICAgICAgIHJlc3ZfdXBm
cm9udCwgMCk7Ci0JaWYgKHNwLT5kYXRhID09IE5VTEwpIHsKLQkJU0NUUF9MVFJBQ0VfRVJSX1JF
VChOVUxMLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9PVVRQVVQsIEVOT0JVRlMpOwotCQly
ZXR1cm4gKEVOT0JVRlMpOwotCX0KLQotCXNwLT50YWlsX21idWYgPSBtX2xhc3Qoc3AtPmRhdGEp
OwotCXJldHVybiAoMCk7Ci0jZWxpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0Rf
dmVyc2lvbiA+IDYwMjAwMCB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCXNwLT5kYXRhID0gbV91aW90
b21idWYodWlvLCBNX1dBSVRPSywgc3AtPmxlbmd0aCwKIAkgICAgICAgICAgICAgICAgICAgICAg
IHJlc3ZfdXBmcm9udCwgMCk7CiAJaWYgKHNwLT5kYXRhID09IE5VTEwpIHsKQEAgLTEzMjMyLDcg
KzEzMjM5LDcgQEAgc2N0cF9jb3B5X2l0X2luKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKICAgICBz
dHJ1Y3Qgc2N0cF9zbmRyY3ZpbmZvICpzcmN2LAogICAgIHN0cnVjdCB1aW8gKnVpbywKICAgICBz
dHJ1Y3Qgc2N0cF9uZXRzICpuZXQsCi0gICAgaW50IG1heF9zZW5kX2xlbiwKKyAgICBzc2l6ZV90
IG1heF9zZW5kX2xlbiwKICAgICBpbnQgdXNlcl9tYXJrc19lb3IsCiAgICAgaW50ICplcnJvcikK
IApAQCAtMTMyNDksOSArMTMyNTYsOSBAQCBzY3RwX2NvcHlfaXRfaW4oc3RydWN0IHNjdHBfdGNi
ICpzdGNiLAogCiAJKmVycm9yID0gMDsKIAkvKiBOb3cgY2FuIHdlIHNlbmQgdGhpcz8gKi8KLQlp
ZiAoKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCkgfHwK
LQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NF
TlQpIHx8Ci0JICAgIChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dO
X1JFQ0VJVkVEKSB8fAorCWlmICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9T
SFVURE9XTl9TRU5UKSB8fAorCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFU
RV9TSFVURE9XTl9BQ0tfU0VOVCkgfHwKKwkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFND
VFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpIHx8CiAJICAgIChhc29jLT5zdGF0ZSAmIFNDVFBf
U1RBVEVfU0hVVERPV05fUEVORElORykpIHsKIAkJLyogZ290IGRhdGEgd2hpbGUgc2h1dHRpbmcg
ZG93biAqLwogCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKE5VTEwsIHN0Y2IsIE5VTEwsIFNDVFBfRlJP
TV9TQ1RQX09VVFBVVCwgRUNPTk5SRVNFVCk7CkBAIC0xMzI3NCw3ICsxMzI4MSw3IEBAIHNjdHBf
Y29weV9pdF9pbihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJKHZvaWQpU0NUUF9HRVRUSU1FX1RJ
TUVWQUwoJnNwLT50cyk7CiAKIAlzcC0+c2lkID0gc3Jjdi0+c2luZm9fc3RyZWFtOwotI2lmIGRl
ZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogI2lmIGRlZmluZWQoQVBQTEVfTEVPUEFSRCkKIAlzcC0+bGVuZ3RoID0gKHVp
bnQzMl90KW1pbih1aW8tPnVpb19yZXNpZCwgbWF4X3NlbmRfbGVuKTsKICNlbHNlCkBAIC0xMzI4
Myw3ICsxMzI5MCw3IEBAIHNjdHBfY29weV9pdF9pbihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAj
ZWxzZQogCXNwLT5sZW5ndGggPSAodWludDMyX3QpbWluKHVpby0+dWlvX3Jlc2lkLCBtYXhfc2Vu
ZF9sZW4pOwogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQ
UExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaWYgZGVmaW5lZChBUFBMRV9MRU9Q
QVJEKQogCWlmICgoc3AtPmxlbmd0aCA9PSAodWludDMyX3QpdWlvLT51aW9fcmVzaWQpICYmCiAj
ZWxzZQpAQCAtMTMzMTYsMTEgKzEzMzIzLDExIEBAIHNjdHBfY29weV9pdF9pbihzdHJ1Y3Qgc2N0
cF90Y2IgKnN0Y2IsCiAJCXNjdHBfYXV0aF9rZXlfYWNxdWlyZShzdGNiLCBzcC0+YXV0aF9rZXlp
ZCk7CiAJCXNwLT5ob2xkc19rZXlfcmVmID0gMTsKIAl9Ci0jaWYgZGVmaW5lZChfX0FQUExFX18p
CisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJU0NU
UF9TT0NLRVRfVU5MT0NLKFNDVFBfSU5QX1NPKHN0Y2ItPnNjdHBfZXApLCAwKTsKICNlbmRpZgog
CSplcnJvciA9IHNjdHBfY29weV9vbmUoc3AsIHVpbywgcmVzdl9pbl9maXJzdCk7Ci0jaWYgZGVm
aW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAJU0NUUF9TT0NLRVRfTE9DSyhTQ1RQX0lOUF9TTyhzdGNiLT5zY3RwX2VwKSwg
MCk7CiAjZW5kaWYKICBza2lwX2NvcHk6CkBAIC0xMzM1MSwyMCArMTMzNTgsMTUgQEAgaW50CiBz
Y3RwX3Nvc2VuZChzdHJ1Y3Qgc29ja2V0ICpzbywKICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRk
ciAqYWRkciwKICAgICAgICAgICAgIHN0cnVjdCB1aW8gKnVpbywKLSNpZmRlZiBfX1BhbmRhX18K
LSAgICAgICAgICAgIHBha2hhbmRsZV90eXBlIHRvcCwKLSAgICAgICAgICAgIHBha2hhbmRsZV90
eXBlIGljb250cm9sLAotI2Vsc2UKICAgICAgICAgICAgIHN0cnVjdCBtYnVmICp0b3AsCiAgICAg
ICAgICAgICBzdHJ1Y3QgbWJ1ZiAqY29udHJvbCwKLSNlbmRpZgotI2lmIGRlZmluZWQoX19BUFBM
RV9fKSB8fCBkZWZpbmVkKF9fUGFuZGFfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKICAgICAgICAgICAgIGludCBmbGFncwogI2Vsc2UKICAgICAg
ICAgICAgIGludCBmbGFncywKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0Rf
dmVyc2lvbiA+PSA1MDAwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogICAgICAgICAgICAgc3RydWN0IHRocmVhZCAqcAotI2VsaWYgZGVmaW5l
ZChfX1dpbmRvd3NfXykKKyNlbGlmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogICAgICAgICAgICAgUEtUSFJFQUQgcAogI2Vsc2UKICNpZiBkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCkBAIC0xMzM3OCwxMCArMTMzODAsNyBAQCBzY3RwX3Nvc2VuZChzdHJ1Y3Qgc29j
a2V0ICpzbywKICNlbmRpZgogKQogewotI2lmZGVmIF9fUGFuZGFfXwotCXN0cnVjdCBtYnVmICpj
b250cm9sID0gTlVMTDsKLSNlbmRpZgotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmlu
ZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCXN0cnVjdCBwcm9jICpw
ID0gY3VycmVudF9wcm9jKCk7CiAjZW5kaWYKIAlpbnQgZXJyb3IsIHVzZV9zbmRpbmZvID0gMDsK
QEAgLTEzMzkxLDExICsxMzM5MCw4IEBAIHNjdHBfc29zZW5kKHN0cnVjdCBzb2NrZXQgKnNvLAog
CXN0cnVjdCBzb2NrYWRkcl9pbiBzaW47CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoX19BUFBMRV9f
KQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCVND
VFBfU09DS0VUX0xPQ0soc28sIDEpOwotI2VuZGlmCi0jaWZkZWYgX19QYW5kYV9fCi0JY29udHJv
bCA9IFNDVFBfSEVBREVSX1RPX0NIQUlOKGljb250cm9sKTsKICNlbmRpZgogCWlmIChjb250cm9s
KSB7CiAJCS8qIHByb2Nlc3MgY21zZyBzbmQvcmN2IGluZm8gKG1heWJlIGEgYXNzb2MtaWQpICov
CkBAIC0xMzQxOCwxOCArMTM0MTQsMTQgQEAgc2N0cF9zb3NlbmQoc3RydWN0IHNvY2tldCAqc28s
CiAJfQogI2VuZGlmCiAJZXJyb3IgPSBzY3RwX2xvd2VyX3Nvc2VuZChzbywgYWRkcl90b191c2Us
IHVpbywgdG9wLAotI2lmZGVmIF9fUGFuZGFfXwotCQkJCSAgaWNvbnRyb2wsCi0jZWxzZQogCQkJ
CSAgY29udHJvbCwKLSNlbmRpZgogCQkJCSAgZmxhZ3MsCiAJCQkJICB1c2Vfc25kaW5mbyA/ICZz
bmRyY3ZuaW5mbzogTlVMTAotI2lmICEoZGVmaW5lZChfX1BhbmRhX18pIHx8IGRlZmluZWQoX19V
c2Vyc3BhY2VfXykpCisjaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQkgICwgcAogI2Vu
ZGlmCiAJCSk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJU0NUUF9TT0NLRVRfVU5MT0NLKHNvLCAxKTsK
ICNlbmRpZgogCXJldHVybiAoZXJyb3IpOwpAQCAtMTM0NDAsMjAgKzEzNDMyLDE1IEBAIGludAog
c2N0cF9sb3dlcl9zb3NlbmQoc3RydWN0IHNvY2tldCAqc28sCiAgICAgICAgICAgICAgICAgICBz
dHJ1Y3Qgc29ja2FkZHIgKmFkZHIsCiAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdWlvICp1aW8s
Ci0jaWZkZWYgX19QYW5kYV9fCi0gICAgICAgICAgICAgICAgICBwYWtoYW5kbGVfdHlwZSBpX3Bh
aywKLSAgICAgICAgICAgICAgICAgIHBha2hhbmRsZV90eXBlIGlfY29udHJvbCwKLSNlbHNlCiAg
ICAgICAgICAgICAgICAgICBzdHJ1Y3QgbWJ1ZiAqaV9wYWssCiAgICAgICAgICAgICAgICAgICBz
dHJ1Y3QgbWJ1ZiAqY29udHJvbCwKLSNlbmRpZgogICAgICAgICAgICAgICAgICAgaW50IGZsYWdz
LAogICAgICAgICAgICAgICAgICAgc3RydWN0IHNjdHBfc25kcmN2aW5mbyAqc3JjdgotI2lmICEo
ZGVmaW5lZCggX19QYW5kYV9fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pKQorI2lmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAgICAgICAgICAgICAgICAgICAsCi0jaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMDAwCisjaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykKICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aHJlYWQgKnAKLSNlbGlmIGRlZmlu
ZWQoX19XaW5kb3dzX18pCisjZWxpZiBkZWZpbmVkKF9XSU4zMikKICAgICAgICAgICAgICAgICAg
IFBLVEhSRUFEIHAKICNlbHNlCiAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcHJvYyAqcApAQCAt
MTM0NjEsMTIgKzEzNDQ4LDEyIEBAIHNjdHBfbG93ZXJfc29zZW5kKHN0cnVjdCBzb2NrZXQgKnNv
LAogI2VuZGlmCiAJKQogewotCXVuc2lnbmVkIGludCBzbmRsZW4gPSAwLCBtYXhfbGVuOworI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJc3RydWN0
IGVwb2NoX3RyYWNrZXIgZXQ7CisjZW5kaWYKKwlzc2l6ZV90IHNuZGxlbiA9IDAsIG1heF9sZW4s
IGxvY2FsX2FkZF9tb3JlOwogCWludCBlcnJvciwgbGVuOwogCXN0cnVjdCBtYnVmICp0b3AgPSBO
VUxMOwotI2lmZGVmIF9fUGFuZGFfXwotCXN0cnVjdCBtYnVmICpjb250cm9sID0gTlVMTDsKLSNl
bmRpZgogCWludCBxdWV1ZV9vbmx5ID0gMCwgcXVldWVfb25seV9mb3JfaW5pdCA9IDA7CiAJaW50
IGZyZWVfY250X2FwcGxpZWQgPSAwOwogCWludCB1bl9zZW50OwpAQCAtMTM0ODYsNyArMTM0NzMs
NyBAQCBzY3RwX2xvd2VyX3Nvc2VuZChzdHJ1Y3Qgc29ja2V0ICpzbywKIAlpbnQgZ290X2FsbF9v
Zl90aGVfc2VuZCA9IDA7CiAJaW50IGhvbGRfdGNibG9jayA9IDA7CiAJaW50IG5vbl9ibG9ja2lu
ZyA9IDA7Ci0JdWludDMyX3QgbG9jYWxfYWRkX21vcmUsIGxvY2FsX3NvcmVzdiA9IDA7CisJc3Np
emVfdCBsb2NhbF9zb3Jlc3YgPSAwOwogCXVpbnQxNl90IHBvcnQ7CiAJdWludDE2X3Qgc2luZm9f
ZmxhZ3M7CiAJc2N0cF9hc3NvY190IHNpbmZvX2Fzc29jX2lkOwpAQCAtMTM0OTYsNyArMTM0ODMs
NyBAQCBzY3RwX2xvd2VyX3Nvc2VuZChzdHJ1Y3Qgc29ja2V0ICpzbywKIAlzdGNiID0gTlVMTDsK
IAlhc29jID0gTlVMTDsKIAotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19B
UFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCXNjdHBfbG9ja19hc3NlcnQoc28p
OwogI2VuZGlmCiAJdF9pbnAgPSBpbnAgPSAoc3RydWN0IHNjdHBfaW5wY2IgKilzby0+c29fcGNi
OwpAQCAtMTM1MTUsNyArMTM1MDIsNyBAQCBzY3RwX2xvd2VyX3Nvc2VuZChzdHJ1Y3Qgc29ja2V0
ICpzbywKIAl1c2VyX21hcmtzX2VvciA9IHNjdHBfaXNfZmVhdHVyZV9vbihpbnAsIFNDVFBfUENC
X0ZMQUdTX0VYUExJQ0lUX0VPUik7CiAJYXRvbWljX2FkZF9pbnQoJmlucC0+dG90YWxfc2VuZHMs
IDEpOwogCWlmICh1aW8pIHsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9f
QVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZiBkZWZpbmVkKEFQUExFX0xF
T1BBUkQpCiAJCWlmICh1aW8tPnVpb19yZXNpZCA8IDApIHsKICNlbHNlCkBAIC0xMzUyNyw1MCAr
MTM1MTQsMjIgQEAgc2N0cF9sb3dlcl9zb3NlbmQoc3RydWN0IHNvY2tldCAqc28sCiAJCQlTQ1RQ
X0xUUkFDRV9FUlJfUkVUKGlucCwgc3RjYiwgbmV0LCBTQ1RQX0ZST01fU0NUUF9PVVRQVVQsIEVJ
TlZBTCk7CiAJCQlyZXR1cm4gKEVJTlZBTCk7CiAJCX0KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykK
KyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZiBk
ZWZpbmVkKEFQUExFX0xFT1BBUkQpCi0JCXNuZGxlbiA9ICh1bnNpZ25lZCBpbnQpdWlvLT51aW9f
cmVzaWQ7CisJCXNuZGxlbiA9IHVpby0+dWlvX3Jlc2lkOwogI2Vsc2UKLQkJc25kbGVuID0gKHVu
c2lnbmVkIGludCl1aW9fcmVzaWQodWlvKTsKKwkJc25kbGVuID0gdWlvX3Jlc2lkKHVpbyk7CiAj
ZW5kaWYKICNlbHNlCi0JCXNuZGxlbiA9ICh1bnNpZ25lZCBpbnQpdWlvLT51aW9fcmVzaWQ7CisJ
CXNuZGxlbiA9IHVpby0+dWlvX3Jlc2lkOwogI2VuZGlmCiAJfSBlbHNlIHsKIAkJdG9wID0gU0NU
UF9IRUFERVJfVE9fQ0hBSU4oaV9wYWspOwotI2lmZGVmIF9fUGFuZGFfXwotCQkvKi0KLQkJICog
YXBwIGxlbiBpbmRpY2F0ZXMgdGhlIGRhdGFsZW4sIGRnc2l6ZSBmb3IgY2FzZXMKLQkJICogb2Yg
U0NUUF9FT0YvQUJPUlQgd2lsbCBub3QgaGF2ZSB0aGUgcmlnaHQgbGVuCi0JCSAqLwotCQlzbmRs
ZW4gPSBTQ1RQX0FQUF9EQVRBX0xFTihpX3Bhayk7Ci0JCS8qLQotCQkgKiBTZXQgdGhlIHBhcnRp
Y2xlIGxlbiBhbHNvIHRvIHplcm8gdG8gbWF0Y2gKLQkJICogdXAgd2l0aCBhcHAgbGVuLiBXZSBv
bmx5IGhhdmUgb25lIHBhcnRpY2xlCi0JCSAqIGlmIGFwcCBsZW4gaXMgemVybyBmb3IgUGFuZGEu
IFRoaXMgaXMgZW5zdXJlZAotCQkgKiBpbiB0aGUgc29ja2V0IGxpYgotCQkgKi8KLQkJaWYgKHNu
ZGxlbiA9PSAwKSB7Ci0JCQlTQ1RQX0JVRl9MRU4odG9wKSAgPSAwOwotCQl9Ci0JCS8qLQotCQkg
KiBXZSBkZWxpbmsgdGhlIGNoYWluIGZyb20gaGVhZGVyLCBidXQga2VlcAotCQkgKiB0aGUgaGVh
ZGVyIGFyb3VuZCBhcyB3ZSB3aWxsIG5lZWQgaXQgaW4KLQkJICogRUFHQUlOIGNhc2UKLQkJICov
Ci0JCVNDVFBfREVUQUNIX0hFQURFUl9GUk9NX0NIQUlOKGlfcGFrKTsKLSNlbHNlCiAJCXNuZGxl
biA9IFNDVFBfSEVBREVSX0xFTihpX3Bhayk7Ci0jZW5kaWYKIAl9Ci0JU0NUUERCRyhTQ1RQX0RF
QlVHX09VVFBVVDEsICJTZW5kIGNhbGxlZCBhZGRyOiVwIHNlbmQgbGVuZ3RoICVkXG4iLAotCQko
dm9pZCAqKWFkZHIsCisJU0NUUERCRyhTQ1RQX0RFQlVHX09VVFBVVDEsICJTZW5kIGNhbGxlZCBh
ZGRyOiVwIHNlbmQgbGVuZ3RoICV6ZFxuIiwKKwkgICAgICAgICh2b2lkICopYWRkciwKIAkgICAg
ICAgIHNuZGxlbik7Ci0jaWZkZWYgX19QYW5kYV9fCi0JaWYgKGlfY29udHJvbCkgewotCQljb250
cm9sID0gU0NUUF9IRUFERVJfVE9fQ0hBSU4oaV9jb250cm9sKTsKLQl9Ci0jZW5kaWYKIAlpZiAo
KGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpICYmCiAJICAgIFNDVFBf
SVNfTElTVEVOSU5HKGlucCkpIHsKIAkJLyogVGhlIGxpc3RlbmVyIGNhbiBOT1Qgc2VuZCAqLwpA
QCAtMTM2NDQsNiArMTM2MDMsMTQgQEAgc2N0cF9sb3dlcl9zb3NlbmQoc3RydWN0IHNvY2tldCAq
c28sCiAJCXNpbmZvX2ZsYWdzID0gaW5wLT5kZWZfc2VuZC5zaW5mb19mbGFnczsKIAkJc2luZm9f
YXNzb2NfaWQgPSBpbnAtPmRlZl9zZW5kLnNpbmZvX2Fzc29jX2lkOwogCX0KKyNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCWlmIChmbGFncyAmIE1T
R19FT1IpIHsKKwkJc2luZm9fZmxhZ3MgfD0gU0NUUF9FT1I7CisJfQorCWlmIChmbGFncyAmIE1T
R19FT0YpIHsKKwkJc2luZm9fZmxhZ3MgfD0gU0NUUF9FT0Y7CisJfQorI2VuZGlmCiAJaWYgKHNp
bmZvX2ZsYWdzICYgU0NUUF9TRU5EQUxMKSB7CiAJCS8qIGl0cyBhIHNlbmRhbGwgKi8KIAkJZXJy
b3IgPSBzY3RwX3NlbmRhbGwoaW5wLCB1aW8sIHRvcCwgc3Jjdik7CkBAIC0xMzcxMSw5ICsxMzY3
OCwxMSBAQCBzY3RwX2xvd2VyX3Nvc2VuZChzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJU0NUUF9JTlBf
V1VOTE9DSyhpbnApOwogCQkvKiBXaXRoIHRoZSBsb2NrIGFwcGxpZWQgbG9vayBhZ2FpbiAqLwog
CQlzdGNiID0gc2N0cF9maW5kYXNzb2NpYXRpb25fZXBfYWRkcigmdF9pbnAsIGFkZHIsICZuZXQs
IE5VTEwsIE5VTEwpOworI2lmIGRlZmluZWQoSU5FVCkgfHwgZGVmaW5lZChJTkVUNikKIAkJaWYg
KChzdGNiID09IE5VTEwpICYmIChjb250cm9sICE9IE5VTEwpICYmIChwb3J0ID4gMCkpIHsKIAkJ
CXN0Y2IgPSBzY3RwX2ZpbmRhc3NvY2lhdGlvbl9jbXNncygmdF9pbnAsIHBvcnQsIGNvbnRyb2ws
ICZuZXQsICZlcnJvcik7CiAJCX0KKyNlbmRpZgogCQlpZiAoc3RjYiA9PSBOVUxMKSB7CiAJCQlT
Q1RQX0lOUF9XTE9DSyhpbnApOwogCQkJU0NUUF9JTlBfREVDUl9SRUYoaW5wKTsKQEAgLTEzNzU5
LDExICsxMzcyOCwxMiBAQCBzY3RwX2xvd2VyX3Nvc2VuZChzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJ
CXN0Y2IgPSBzY3RwX2Fsb2NfYXNzb2MoaW5wLCBhZGRyLCAmZXJyb3IsIDAsIHZyZl9pZCwKIAkJ
CSAgICAgICAgICAgICAgICAgICAgICAgaW5wLT5zY3RwX2VwLnByZV9vcGVuX3N0cmVhbV9jb3Vu
dCwKIAkJCSAgICAgICAgICAgICAgICAgICAgICAgaW5wLT5zY3RwX2VwLnBvcnQsCi0jaWYgIShk
ZWZpbmVkKCBfX1BhbmRhX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCi0JCQkgICAgICAg
ICAgICAgICAgICAgICAgIHApOworI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQkgICAg
ICAgICAgICAgICAgICAgICAgIHAsCiAjZWxzZQotCQkJICAgICAgICAgICAgICAgICAgICAgICAo
c3RydWN0IHByb2MgKilOVUxMKTsKKwkJCSAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBw
cm9jICopTlVMTCwKICNlbmRpZgorCQkJICAgICAgICAgICAgICAgICAgICAgICBTQ1RQX0lOSVRJ
QUxJWkVfQVVUSF9QQVJBTVMpOwogCQkJaWYgKHN0Y2IgPT0gTlVMTCkgewogCQkJCS8qIEVycm9y
IGlzIHNldHVwIGZvciB1cyBpbiB0aGUgY2FsbCAqLwogCQkJCWdvdG8gb3V0X3VubG9ja2VkOwpA
QCAtMTM3ODMsMTYgKzEzNzUzLDEzIEBAIHNjdHBfbG93ZXJfc29zZW5kKHN0cnVjdCBzb2NrZXQg
KnNvLAogCQkJLyogVHVybiBvbiBxdWV1ZSBvbmx5IGZsYWcgdG8gcHJldmVudCBkYXRhIGZyb20g
YmVpbmcgc2VudCAqLwogCQkJcXVldWVfb25seSA9IDE7CiAJCQlhc29jID0gJnN0Y2ItPmFzb2M7
Ci0JCQlTQ1RQX1NFVF9TVEFURShhc29jLCBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKTsKKwkJCVND
VFBfU0VUX1NUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQpOwogCQkJKHZvaWQpU0NU
UF9HRVRUSU1FX1RJTUVWQUwoJmFzb2MtPnRpbWVfZW50ZXJlZCk7CiAKLQkJCS8qIGluaXRpYWxp
emUgYXV0aGVudGljYXRpb24gcGFyYW1zIGZvciB0aGUgYXNzb2MgKi8KLQkJCXNjdHBfaW5pdGlh
bGl6ZV9hdXRoX3BhcmFtcyhpbnAsIHN0Y2IpOwotCiAJCQlpZiAoY29udHJvbCkgewogCQkJCWlm
IChzY3RwX3Byb2Nlc3NfY21zZ3NfZm9yX2luaXQoc3RjYiwgY29udHJvbCwgJmVycm9yKSkgewog
CQkJCQlzY3RwX2ZyZWVfYXNzb2MoaW5wLCBzdGNiLCBTQ1RQX1BDQkZSRUVfRk9SQ0UsCi0JCQkJ
CSAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUF9PVVRQVVQgKyBTQ1RQX0xPQ181KTsKKwkJ
CQkJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX09VVFBVVCArIFNDVFBfTE9DXzYpOwog
CQkJCQlob2xkX3RjYmxvY2sgPSAwOwogCQkJCQlzdGNiID0gTlVMTDsKIAkJCQkJZ290byBvdXRf
dW5sb2NrZWQ7CkBAIC0xMzgwOSw5ICsxMzc3NiwxOSBAQCBzY3RwX2xvd2VyX3Nvc2VuZChzdHJ1
Y3Qgc29ja2V0ICpzbywKIAkJfQogCX0gZWxzZQogCQlhc29jID0gJnN0Y2ItPmFzb2M7Ci0JaWYg
KHNyY3YgPT0gTlVMTCkKKwlpZiAoc3JjdiA9PSBOVUxMKSB7CiAJCXNyY3YgPSAoc3RydWN0IHNj
dHBfc25kcmN2aW5mbyAqKSZhc29jLT5kZWZfc2VuZDsKLQlpZiAoc3Jjdi0+c2luZm9fZmxhZ3Mg
JiBTQ1RQX0FERFJfT1ZFUikgeworCQlzaW5mb19mbGFncyA9IHNyY3YtPnNpbmZvX2ZsYWdzOwor
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCWlm
IChmbGFncyAmIE1TR19FT1IpIHsKKwkJCXNpbmZvX2ZsYWdzIHw9IFNDVFBfRU9SOworCQl9CisJ
CWlmIChmbGFncyAmIE1TR19FT0YpIHsKKwkJCXNpbmZvX2ZsYWdzIHw9IFNDVFBfRU9GOworCQl9
CisjZW5kaWYKKwl9CisJaWYgKHNpbmZvX2ZsYWdzICYgU0NUUF9BRERSX09WRVIpIHsKIAkJaWYg
KGFkZHIpCiAJCQluZXQgPSBzY3RwX2ZpbmRuZXQoc3RjYiwgYWRkcik7CiAJCWVsc2UKQEAgLTEz
ODM1LDcgKzEzODEyLDcgQEAgc2N0cF9sb3dlcl9zb3NlbmQoc3RydWN0IHNvY2tldCAqc28sCiAJ
ZnJlZV9jbnRfYXBwbGllZCA9IDE7CiAKIAlpZiAoc2N0cF9pc19mZWF0dXJlX29uKGlucCwgU0NU
UF9QQ0JfRkxBR1NfTk9fRlJBR01FTlQpKSB7Ci0JCWlmIChzbmRsZW4gPiBhc29jLT5zbWFsbGVz
dF9tdHUpIHsKKwkJaWYgKHNuZGxlbiA+IChzc2l6ZV90KWFzb2MtPnNtYWxsZXN0X210dSkgewog
CQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIHN0Y2IsIG5ldCwgU0NUUF9GUk9NX1NDVFBfT1VU
UFVULCBFTVNHU0laRSk7CiAJCQllcnJvciA9IEVNU0dTSVpFOwogCQkJZ290byBvdXRfdW5sb2Nr
ZWQ7CkBAIC0xMzg0NywxNSArMTM4MjQsMTUgQEAgc2N0cF9sb3dlcl9zb3NlbmQoc3RydWN0IHNv
Y2tldCAqc28sCiAJfQogI2VuZGlmCiAJaWYgKFNDVFBfU09fSVNfTkJJTyhzbykKLSNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMDAKLQkgICAgIHx8
IChmbGFncyAmIE1TR19OQklPKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCisJICAgICB8fCAoZmxhZ3MgJiAoTVNHX05CSU8gfCBNU0dfRE9OVFdB
SVQpKSAhPSAwCiAjZW5kaWYKIAkgICAgKSB7CiAJCW5vbl9ibG9ja2luZyA9IDE7CiAJfQogCS8q
IHdvdWxkIHdlIGJsb2NrPyAqLwogCWlmIChub25fYmxvY2tpbmcpIHsKLQkJdWludDMyX3QgYW1v
dW50OworCQlzc2l6ZV90IGFtb3VudDsKIAogCQlpZiAoaG9sZF90Y2Jsb2NrID09IDApIHsKIAkJ
CVNDVFBfVENCX0xPQ0soc3RjYik7CkBAIC0xMzg3MCwxMyArMTM4NDcsMTMgQEAgc2N0cF9sb3dl
cl9zb3NlbmQoc3RydWN0IHNvY2tldCAqc28sCiAJCWlmICgoU0NUUF9TQl9MSU1JVF9TTkQoc28p
IDwgIChhbW91bnQgKyBpbnF1ZXVlX2J5dGVzICsgc3RjYi0+YXNvYy5zYl9zZW5kX3Jlc3YpKSB8
fAogCQkgICAgKHN0Y2ItPmFzb2MuY2h1bmtzX29uX291dF9xdWV1ZSA+PSBTQ1RQX0JBU0VfU1lT
Q1RMKHNjdHBfbWF4X2NodW5rc19vbl9xdWV1ZSkpKSB7CiAJCQlTQ1RQX0xUUkFDRV9FUlJfUkVU
KGlucCwgc3RjYiwgbmV0LCBTQ1RQX0ZST01fU0NUUF9PVVRQVVQsIEVXT1VMREJMT0NLKTsKLQkJ
CWlmIChzbmRsZW4gPiBTQ1RQX1NCX0xJTUlUX1NORChzbykpCisJCQlpZiAoc25kbGVuID4gKHNz
aXplX3QpU0NUUF9TQl9MSU1JVF9TTkQoc28pKQogCQkJCWVycm9yID0gRU1TR1NJWkU7CiAJCQll
bHNlCiAJCQkJZXJyb3IgPSBFV09VTERCTE9DSzsKIAkJCWdvdG8gb3V0X3VubG9ja2VkOwogCQl9
Ci0JCXN0Y2ItPmFzb2Muc2Jfc2VuZF9yZXN2ICs9IHNuZGxlbjsKKwkJc3RjYi0+YXNvYy5zYl9z
ZW5kX3Jlc3YgKz0gKHVpbnQzMl90KXNuZGxlbjsKIAkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwog
CQlob2xkX3RjYmxvY2sgPSAwOwogCX0gZWxzZSB7CkBAIC0xMzkxMiw4ICsxMzg4OSw4IEBAIHNj
dHBfbG93ZXJfc29zZW5kKHN0cnVjdCBzb2NrZXQgKnNvLAogCQlTQ1RQX0xUUkFDRV9FUlJfUkVU
KGlucCwgc3RjYiwgbmV0LCBTQ1RQX0ZST01fU0NUUF9PVVRQVVQsIGVycm9yKTsKIAkJZ290byBv
dXRfdW5sb2NrZWQ7CiAJfQotCWlmICgoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFU
RV9DT09LSUVfV0FJVCkgfHwKLQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RB
VEVfQ09PS0lFX0VDSE9FRCkpIHsKKwlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBf
U1RBVEVfQ09PS0lFX1dBSVQpIHx8CisJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQ
X1NUQVRFX0NPT0tJRV9FQ0hPRUQpKSB7CiAJCXF1ZXVlX29ubHkgPSAxOwogCX0KIAkvKiB3ZSBh
cmUgbm93IGRvbmUgd2l0aCBhbGwgY29udHJvbCAqLwpAQCAtMTM5MjEsMTEgKzEzODk4LDExIEBA
IHNjdHBfbG93ZXJfc29zZW5kKHN0cnVjdCBzb2NrZXQgKnNvLAogCQlzY3RwX21fZnJlZW0oY29u
dHJvbCk7CiAJCWNvbnRyb2wgPSBOVUxMOwogCX0KLQlpZiAoKFNDVFBfR0VUX1NUQVRFKGFzb2Mp
ID09IFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCkgfHwKLQkgICAgKFNDVFBfR0VUX1NUQVRFKGFz
b2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpIHx8Ci0JICAgIChTQ1RQX0dFVF9T
VEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX0FDS19TRU5UKSB8fAorCWlmICgoU0NU
UF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKSB8fAorCSAgICAo
U0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkgfHwK
KwkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NF
TlQpIHx8CiAJICAgIChhc29jLT5zdGF0ZSAmIFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORykp
IHsKLQkJaWYgKHNyY3YtPnNpbmZvX2ZsYWdzICYgU0NUUF9BQk9SVCkgeworCQlpZiAoc2luZm9f
ZmxhZ3MgJiBTQ1RQX0FCT1JUKSB7CiAJCQk7CiAJCX0gZWxzZSB7CiAJCQlTQ1RQX0xUUkFDRV9F
UlJfUkVUKE5VTEwsIHN0Y2IsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX09VVFBVVCwgRUNPTk5SRVNF
VCk7CkBAIC0xMzkzNCwyNSArMTM5MTEsMjMgQEAgc2N0cF9sb3dlcl9zb3NlbmQoc3RydWN0IHNv
Y2tldCAqc28sCiAJCX0KIAl9CiAJLyogT2ssIHdlIHdpbGwgYXR0ZW1wdCBhIG1zZ3NuZCA6PiAq
LwotI2lmICEoZGVmaW5lZChfX1BhbmRhX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pIHx8IGRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykpCisjaWYgIShkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChf
X1VzZXJzcGFjZV9fKSkKIAlpZiAocCkgewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9f
RnJlZUJTRF92ZXJzaW9uID49IDYwMzAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCiAJCXAt
PnRkX3J1LnJ1X21zZ3NuZCsrOwotI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVl
QlNEX3ZlcnNpb24gPj0gNTAwMDAwCi0JCXAtPnRkX3Byb2MtPnBfc3RhdHMtPnBfcnUucnVfbXNn
c25kKys7CiAjZWxzZQogCQlwLT5wX3N0YXRzLT5wX3J1LnJ1X21zZ3NuZCsrOwogI2VuZGlmCiAJ
fQogI2VuZGlmCiAJLyogQXJlIHdlIGFib3J0aW5nPyAqLwotCWlmIChzcmN2LT5zaW5mb19mbGFn
cyAmIFNDVFBfQUJPUlQpIHsKKwlpZiAoc2luZm9fZmxhZ3MgJiBTQ1RQX0FCT1JUKSB7CiAJCXN0
cnVjdCBtYnVmICptbTsKLQkJaW50IHRvdF9kZW1hbmQsIHRvdF9vdXQgPSAwLCBtYXhfb3V0Owor
CQlzc2l6ZV90IHRvdF9kZW1hbmQsIHRvdF9vdXQgPSAwLCBtYXhfb3V0OwogCiAJCVNDVFBfU1RB
VF9JTkNSKHNjdHBzX3NlbmRzX3dpdGhfYWJvcnQpOwotCQlpZiAoKFNDVFBfR0VUX1NUQVRFKGFz
b2MpID09IFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQpIHx8Ci0JCSAgICAoU0NUUF9HRVRfU1RBVEUo
YXNvYykgPT0gU0NUUF9TVEFURV9DT09LSUVfRUNIT0VEKSkgeworCQlpZiAoKFNDVFBfR0VUX1NU
QVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQpIHx8CisJCSAgICAoU0NUUF9HRVRf
U1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9DT09LSUVfRUNIT0VEKSkgewogCQkJLyogSXQgaGFz
IHRvIGJlIHVwIGJlZm9yZSB3ZSBhYm9ydCAqLwogCQkJLyogaG93IGJpZyBpcyB0aGUgdXNlciBp
bml0aWF0ZWQgYWJvcnQ/ICovCiAJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgc3RjYiwgbmV0
LCBTQ1RQX0ZST01fU0NUUF9PVVRQVVQsIEVJTlZBTCk7CkBAIC0xMzk4Miw3ICsxMzk1Nyw3IEBA
IHNjdHBfbG93ZXJfc29zZW5kKHN0cnVjdCBzb2NrZXQgKnNvLAogCQkJCWVycm9yID0gRU1TR1NJ
WkU7CiAJCQkJZ290byBvdXQ7CiAJCQl9Ci0JCQltbSA9IHNjdHBfZ2V0X21idWZfZm9yX21zZyh0
b3RfZGVtYW5kLCAwLCBNX1dBSVRPSywgMSwgTVRfREFUQSk7CisJCQltbSA9IHNjdHBfZ2V0X21i
dWZfZm9yX21zZygodW5zaWduZWQgaW50KXRvdF9kZW1hbmQsIDAsIE1fV0FJVE9LLCAxLCBNVF9E
QVRBKTsKIAkJfQogCQlpZiAobW0gPT0gTlVMTCkgewogCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChO
VUxMLCBzdGNiLCBuZXQsIFNDVFBfRlJPTV9TQ1RQX09VVFBVVCwgRU5PTUVNKTsKQEAgLTE0MDAy
LDEzICsxMzk3NywxMyBAQCBzY3RwX2xvd2VyX3Nvc2VuZChzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJ
CXBoLT5wYXJhbV90eXBlID0gaHRvbnMoU0NUUF9DQVVTRV9VU0VSX0lOSVRJQVRFRF9BQlQpOwog
CQkJcGgtPnBhcmFtX2xlbmd0aCA9IGh0b25zKCh1aW50MTZfdCkoc2l6ZW9mKHN0cnVjdCBzY3Rw
X3BhcmFtaGRyKSArIHRvdF9vdXQpKTsKIAkJCXBoKys7Ci0JCQlTQ1RQX0JVRl9MRU4obW0pID0g
dG90X291dCArIHNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcik7CisJCQlTQ1RQX0JVRl9MRU4o
bW0pID0gKGludCkodG90X291dCArIHNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcikpOwogCQkJ
aWYgKHRvcCA9PSBOVUxMKSB7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChf
X0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJU0NUUF9TT0NLRVRfVU5M
T0NLKHNvLCAwKTsKICNlbmRpZgogCQkJCWVycm9yID0gdWlvbW92ZSgoY2FkZHJfdClwaCwgKGlu
dCl0b3Rfb3V0LCB1aW8pOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19B
UFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCVNDVFBfU09DS0VUX0xPQ0so
c28sIDApOwogI2VuZGlmCiAJCQkJaWYgKGVycm9yKSB7CkBAIC0xNDAzMiw3ICsxNDAwNywxMyBA
QCBzY3RwX2xvd2VyX3Nvc2VuZChzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJYXRvbWljX2FkZF9pbnQo
JnN0Y2ItPmFzb2MucmVmY250LCAtMSk7CiAJCWZyZWVfY250X2FwcGxpZWQgPSAwOwogCQkvKiBy
ZWxlYXNlIHRoaXMgbG9jaywgb3RoZXJ3aXNlIHdlIGhhbmcgb24gb3Vyc2VsdmVzICovCisjaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJTkVUX0VQ
T0NIX0VOVEVSKGV0KTsKKyNlbmRpZgogCQlzY3RwX2Fib3J0X2FuX2Fzc29jaWF0aW9uKHN0Y2It
PnNjdHBfZXAsIHN0Y2IsIG1tLCBTQ1RQX1NPX0xPQ0tFRCk7CisjaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJTkVUX0VQT0NIX0VYSVQoZXQpOwor
I2VuZGlmCiAJCS8qIG5vdyByZWxvY2sgdGhlIHN0Y2Igc28gZXZlcnl0aGluZyBpcyBzYW5lICov
CiAJCWhvbGRfdGNibG9jayA9IDA7CiAJCXN0Y2IgPSBOVUxMOwpAQCAtMTQwNDksMTIgKzE0MDMw
LDcgQEAgc2N0cF9sb3dlcl9zb3NlbmQoc3RydWN0IHNvY2tldCAqc28sCiAJLyogQ2FsY3VsYXRl
IHRoZSBtYXhpbXVtIHdlIGNhbiBzZW5kICovCiAJaW5xdWV1ZV9ieXRlcyA9IHN0Y2ItPmFzb2Mu
dG90YWxfb3V0cHV0X3F1ZXVlX3NpemUgLSAoc3RjYi0+YXNvYy5jaHVua3Nfb25fb3V0X3F1ZXVl
ICogU0NUUF9EQVRBX0NIVU5LX09WRVJIRUFEKHN0Y2IpKTsKIAlpZiAoU0NUUF9TQl9MSU1JVF9T
TkQoc28pID4gaW5xdWV1ZV9ieXRlcykgewotCQlpZiAobm9uX2Jsb2NraW5nKSB7Ci0JCQkvKiB3
ZSBhbHJlYWR5IGNoZWNrZWQgZm9yIG5vbi1ibG9ja2luZyBhYm92ZS4gKi8KLQkJCW1heF9sZW4g
PSBzbmRsZW47Ci0JCX0gZWxzZSB7Ci0JCQltYXhfbGVuID0gU0NUUF9TQl9MSU1JVF9TTkQoc28p
IC0gaW5xdWV1ZV9ieXRlczsKLQkJfQorCQltYXhfbGVuID0gU0NUUF9TQl9MSU1JVF9TTkQoc28p
IC0gaW5xdWV1ZV9ieXRlczsKIAl9IGVsc2UgewogCQltYXhfbGVuID0gMDsKIAl9CkBAIC0xNDA3
MSw3ICsxNDA0Nyw3IEBAIHNjdHBfbG93ZXJfc29zZW5kKHN0cnVjdCBzb2NrZXQgKnNvLAogCiAJ
LyogVW5sZXNzIEVfRU9SIG1vZGUgaXMgb24sIHdlIG11c3QgbWFrZSBhIHNlbmQgRklUIGluIG9u
ZSBjYWxsLiAqLwogCWlmICgodXNlcl9tYXJrc19lb3IgPT0gMCkgJiYKLQkgICAgKHNuZGxlbiA+
IFNDVFBfU0JfTElNSVRfU05EKHN0Y2ItPnNjdHBfc29ja2V0KSkpIHsKKwkgICAgKHNuZGxlbiA+
IChzc2l6ZV90KVNDVFBfU0JfTElNSVRfU05EKHN0Y2ItPnNjdHBfc29ja2V0KSkpIHsKIAkJLyog
SXQgd2lsbCBORVZFUiBmaXQgKi8KIAkJU0NUUF9MVFJBQ0VfRVJSX1JFVChOVUxMLCBzdGNiLCBu
ZXQsIFNDVFBfRlJPTV9TQ1RQX09VVFBVVCwgRU1TR1NJWkUpOwogCQllcnJvciA9IEVNU0dTSVpF
OwpAQCAtMTQwODgsNyArMTQwNjQsNyBAQCBzY3RwX2xvd2VyX3Nvc2VuZChzdHJ1Y3Qgc29ja2V0
ICpzbywKIAl9CiAKIAlpZiAodXNlcl9tYXJrc19lb3IpIHsKLQkJbG9jYWxfYWRkX21vcmUgPSBt
aW4oU0NUUF9TQl9MSU1JVF9TTkQoc28pLCBTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfYWRkX21vcmVf
dGhyZXNob2xkKSk7CisJCWxvY2FsX2FkZF9tb3JlID0gKHNzaXplX3QpbWluKFNDVFBfU0JfTElN
SVRfU05EKHNvKSwgU0NUUF9CQVNFX1NZU0NUTChzY3RwX2FkZF9tb3JlX3RocmVzaG9sZCkpOwog
CX0gZWxzZSB7CiAJCS8qLQogCQkgKiBGb3Igbm9uLWVlb3IgdGhlIHdob2xlIG1lc3NhZ2UgbXVz
dCBmaXQgaW4KQEAgLTE0MTAxLDE1ICsxNDA3NywxNSBAQCBzY3RwX2xvd2VyX3Nvc2VuZChzdHJ1
Y3Qgc29ja2V0ICpzbywKIAkJZ290byBza2lwX3ByZWJsb2NrOwogCX0KIAlpZiAoKChtYXhfbGVu
IDw9IGxvY2FsX2FkZF9tb3JlKSAmJgotCSAgICAgKFNDVFBfU0JfTElNSVRfU05EKHNvKSA+PSBs
b2NhbF9hZGRfbW9yZSkpIHx8CisJICAgICAoKHNzaXplX3QpU0NUUF9TQl9MSU1JVF9TTkQoc28p
ID49IGxvY2FsX2FkZF9tb3JlKSkgfHwKIAkgICAgKG1heF9sZW4gPT0gMCkgfHwKIAkgICAgKChz
dGNiLT5hc29jLmNodW5rc19vbl9vdXRfcXVldWUrc3RjYi0+YXNvYy5zdHJlYW1fcXVldWVfY250
KSA+PSBTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbWF4X2NodW5rc19vbl9xdWV1ZSkpKSB7CiAJCS8q
IE5vIHJvb20gcmlnaHQgbm93ICEgKi8KIAkJU09DS0JVRl9MT0NLKCZzby0+c29fc25kKTsKIAkJ
aW5xdWV1ZV9ieXRlcyA9IHN0Y2ItPmFzb2MudG90YWxfb3V0cHV0X3F1ZXVlX3NpemUgLSAoc3Rj
Yi0+YXNvYy5jaHVua3Nfb25fb3V0X3F1ZXVlICogU0NUUF9EQVRBX0NIVU5LX09WRVJIRUFEKHN0
Y2IpKTsKIAkJd2hpbGUgKChTQ1RQX1NCX0xJTUlUX1NORChzbykgPCAoaW5xdWV1ZV9ieXRlcyAr
IGxvY2FsX2FkZF9tb3JlKSkgfHwKLQkJICAgICAgICgoc3RjYi0+YXNvYy5zdHJlYW1fcXVldWVf
Y250K3N0Y2ItPmFzb2MuY2h1bmtzX29uX291dF9xdWV1ZSkgPj0gU0NUUF9CQVNFX1NZU0NUTChz
Y3RwX21heF9jaHVua3Nfb25fcXVldWUpKSkgewotCQkJU0NUUERCRyhTQ1RQX0RFQlVHX09VVFBV
VDEsInByZV9ibG9jayBsaW1pdDoldSA8KGlucTolZCArICVkKSB8fCAoJWQrJWQgPiAlZClcbiIs
CisJCSAgICAgICAoKHN0Y2ItPmFzb2Muc3RyZWFtX3F1ZXVlX2NudCArIHN0Y2ItPmFzb2MuY2h1
bmtzX29uX291dF9xdWV1ZSkgPj0gU0NUUF9CQVNFX1NZU0NUTChzY3RwX21heF9jaHVua3Nfb25f
cXVldWUpKSkgeworCQkJU0NUUERCRyhTQ1RQX0RFQlVHX09VVFBVVDEsInByZV9ibG9jayBsaW1p
dDoldSA8KGlucTolZCArICV6ZCkgfHwgKCVkKyVkID4gJWQpXG4iLAogCQkJICAgICAgICAodW5z
aWduZWQgaW50KVNDVFBfU0JfTElNSVRfU05EKHNvKSwKIAkJCSAgICAgICAgaW5xdWV1ZV9ieXRl
cywKIAkJCSAgICAgICAgbG9jYWxfYWRkX21vcmUsCkBAIC0xNDEyMCw3ICsxNDA5Niw3IEBAIHNj
dHBfbG93ZXJfc29zZW5kKHN0cnVjdCBzb2NrZXQgKnNvLAogCQkJCXNjdHBfbG9nX2Jsb2NrKFND
VFBfQkxPQ0tfTE9HX0lOVE9fQkxLQSwgYXNvYywgc25kbGVuKTsKIAkJCX0KIAkJCWJlLmVycm9y
ID0gMDsKLSNpZiAhZGVmaW5lZChfX1BhbmRhX18pICYmICFkZWZpbmVkKF9fV2luZG93c19fKQor
I2lmICEoZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pKQogCQkJc3Rj
Yi0+YmxvY2tfZW50cnkgPSAmYmU7CiAjZW5kaWYKIAkJCWVycm9yID0gc2J3YWl0KCZzby0+c29f
c25kKTsKQEAgLTE0MTU4LDcgKzE0MTM0LDcgQEAgc2tpcF9wcmVibG9jazoKIAlpZiAoc3RjYi0+
YXNvYy5zdGF0ZSAmIFNDVFBfU1RBVEVfQUJPVVRfVE9fQkVfRlJFRUQpIHsKIAkJZ290byBvdXRf
dW5sb2NrZWQ7CiAJfQotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBM
RV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWVycm9yID0gc2Jsb2NrKCZzby0+c29f
c25kLCBTQkxPQ0tXQUlUKGZsYWdzKSk7CiAjZW5kaWYKIAkvKiBzbmRsZW4gY292ZXJzIGZvciBt
YnVmIGNhc2UKQEAgLTE0MTY2LDcgKzE0MTQyLDcgQEAgc2tpcF9wcmVibG9jazoKIAkgKiBOT1RF
OiB1aW8gd2lsbCBiZSBudWxsIHdoZW4gdG9wL21idWYgaXMgcGFzc2VkCiAJICovCiAJaWYgKHNu
ZGxlbiA9PSAwKSB7Ci0JCWlmIChzcmN2LT5zaW5mb19mbGFncyAmIFNDVFBfRU9GKSB7CisJCWlm
IChzaW5mb19mbGFncyAmIFNDVFBfRU9GKSB7CiAJCQlnb3RfYWxsX29mX3RoZV9zZW5kID0gMTsK
IAkJCWdvdG8gZGF0YWxlc3NfZW9mOwogCQl9IGVsc2UgewpAQCAtMTQxODgsMTEgKzE0MTY0LDEw
IEBAIHNraXBfcHJlYmxvY2s6CiAJCQllcnJvciA9IEVJTlZBTDsKIAkJCWdvdG8gb3V0OwogCQl9
Ci0JCVNDVFBfVENCX1NFTkRfVU5MT0NLKHN0Y2IpOwotCiAJCXN0cm0gPSAmc3RjYi0+YXNvYy5z
dHJtb3V0W3NyY3YtPnNpbmZvX3N0cmVhbV07CiAJCWlmIChzdHJtLT5sYXN0X21zZ19pbmNvbXBs
ZXRlID09IDApIHsKIAkJZG9fYV9jb3B5X2luOgorCQkJU0NUUF9UQ0JfU0VORF9VTkxPQ0soc3Rj
Yik7CiAJCQlzcCA9IHNjdHBfY29weV9pdF9pbihzdGNiLCBhc29jLCBzcmN2LCB1aW8sIG5ldCwg
bWF4X2xlbiwgdXNlcl9tYXJrc19lb3IsICZlcnJvcik7CiAJCQlpZiAoZXJyb3IpIHsKIAkJCQln
b3RvIG91dDsKQEAgLTE0MjE0LDE2ICsxNDE4OSwxNCBAQCBza2lwX3ByZWJsb2NrOgogCQkJfQog
CQkJc2N0cF9zbmRfc2JfYWxsb2Moc3RjYiwgc3AtPmxlbmd0aCk7CiAJCQlhdG9taWNfYWRkX2lu
dCgmYXNvYy0+c3RyZWFtX3F1ZXVlX2NudCwgMSk7Ci0JCQlpZiAoc3Jjdi0+c2luZm9fZmxhZ3Mg
JiBTQ1RQX1VOT1JERVJFRCkgeworCQkJaWYgKHNpbmZvX2ZsYWdzICYgU0NUUF9VTk9SREVSRUQp
IHsKIAkJCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19zZW5kc193aXRoX3Vub3JkKTsKIAkJCX0KKwkJ
CXNwLT5wcm9jZXNzaW5nID0gMTsKIAkJCVRBSUxRX0lOU0VSVF9UQUlMKCZzdHJtLT5vdXRxdWV1
ZSwgc3AsIG5leHQpOwogCQkJc3RjYi0+YXNvYy5zc19mdW5jdGlvbnMuc2N0cF9zc19hZGRfdG9f
c3RyZWFtKHN0Y2IsIGFzb2MsIHN0cm0sIHNwLCAxKTsKLQkJCVNDVFBfVENCX1NFTkRfVU5MT0NL
KHN0Y2IpOwogCQl9IGVsc2UgewotCQkJU0NUUF9UQ0JfU0VORF9MT0NLKHN0Y2IpOwogCQkJc3Ag
PSBUQUlMUV9MQVNUKCZzdHJtLT5vdXRxdWV1ZSwgc2N0cF9zdHJlYW1oZWFkKTsKLQkJCVNDVFBf
VENCX1NFTkRfVU5MT0NLKHN0Y2IpOwogCQkJaWYgKHNwID09IE5VTEwpIHsKIAkJCQkvKiA/Pz8/
IEh1aCA/Pz8gbGFzdCBtc2cgaXMgZ29uZSAqLwogI2lmZGVmIElOVkFSSUFOVFMKQEAgLTE0MjM1
LDggKzE0MjA4LDE3IEBAIHNraXBfcHJlYmxvY2s6CiAJCQkJZ290byBkb19hX2NvcHlfaW47CiAK
IAkJCX0KKwkJCWlmIChzcC0+cHJvY2Vzc2luZykgeworCQkJCVNDVFBfVENCX1NFTkRfVU5MT0NL
KHN0Y2IpOworCQkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBzdGNiLCBuZXQsIFNDVFBfRlJP
TV9TQ1RQX09VVFBVVCwgRUlOVkFMKTsKKwkJCQllcnJvciA9IEVJTlZBTDsKKwkJCQlnb3RvIG91
dDsKKwkJCX0gZWxzZSB7CisJCQkJc3AtPnByb2Nlc3NpbmcgPSAxOworCQkJfQogCQl9Ci0jaWYg
ZGVmaW5lZChfX0FQUExFX18pCisJCVNDVFBfVENCX1NFTkRfVU5MT0NLKHN0Y2IpOworI2lmIGRl
ZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmIGRlZmluZWQo
QVBQTEVfTEVPUEFSRCkKIAkJd2hpbGUgKHVpby0+dWlvX3Jlc2lkID4gMCkgewogI2Vsc2UKQEAg
LTE0MjU0LDE2ICsxNDIzNiwxNiBAQCBza2lwX3ByZWJsb2NrOgogCQkJZWxzZQogCQkJCW1heF9s
ZW4gPSAwOwogCi0JCQlpZiAoKG1heF9sZW4gPiBTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfYWRkX21v
cmVfdGhyZXNob2xkKSkgfHwKKwkJCWlmICgobWF4X2xlbiA+IChzc2l6ZV90KVNDVFBfQkFTRV9T
WVNDVEwoc2N0cF9hZGRfbW9yZV90aHJlc2hvbGQpKSB8fAogCQkJICAgIChtYXhfbGVuICYmIChT
Q1RQX1NCX0xJTUlUX1NORChzbykgPCBTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfYWRkX21vcmVfdGhy
ZXNob2xkKSkpIHx8Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExF
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaWYgZGVmaW5lZChBUFBMRV9MRU9QQVJE
KQotCQkJICAgICh1aW8tPnVpb19yZXNpZCAmJiAodWlvLT51aW9fcmVzaWQgPD0gKGludCltYXhf
bGVuKSkpIHsKKwkJCSAgICAodWlvLT51aW9fcmVzaWQgJiYgKHVpby0+dWlvX3Jlc2lkIDw9IG1h
eF9sZW4pKSkgewogI2Vsc2UKLQkJCSAgICAodWlvX3Jlc2lkKHVpbykgJiYgKHVpb19yZXNpZCh1
aW8pIDw9IChpbnQpbWF4X2xlbikpKSB7CisJCQkgICAgKHVpb19yZXNpZCh1aW8pICYmICh1aW9f
cmVzaWQodWlvKSA8PSBtYXhfbGVuKSkpIHsKICNlbmRpZgogI2Vsc2UKLQkJCSAgICAodWlvLT51
aW9fcmVzaWQgJiYgKHVpby0+dWlvX3Jlc2lkIDw9IChpbnQpbWF4X2xlbikpKSB7CisJCQkgICAg
KHVpby0+dWlvX3Jlc2lkICYmICh1aW8tPnVpb19yZXNpZCA8PSBtYXhfbGVuKSkpIHsKICNlbmRp
ZgogCQkJCXNuZG91dCA9IDA7CiAJCQkJbmV3X3RhaWwgPSBOVUxMOwpAQCAtMTQyNzEsMzQgKzE0
MjUzLDQzIEBAIHNraXBfcHJlYmxvY2s6CiAJCQkJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKIAkJ
CQkJaG9sZF90Y2Jsb2NrID0gMDsKIAkJCQl9Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYg
ZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJU0NUUF9T
T0NLRVRfVU5MT0NLKHNvLCAwKTsKICNlbmRpZgotI2lmIChkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDYwMjAwMCkgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQot
CQkJCSAgICBtbSA9IHNjdHBfY29weV9yZXN1bWUodWlvLCBtYXhfbGVuLCB1c2VyX21hcmtzX2Vv
ciwgJmVycm9yLCAmc25kb3V0LCAmbmV3X3RhaWwpOworI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
IHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJCQltbSA9IHNjdHBfY29weV9yZXN1bWUodWlv
LCAoaW50KW1heF9sZW4sIHVzZXJfbWFya3NfZW9yLCAmZXJyb3IsICZzbmRvdXQsICZuZXdfdGFp
bCk7CiAjZWxzZQotCQkJCSAgICBtbSA9IHNjdHBfY29weV9yZXN1bWUodWlvLCBtYXhfbGVuLCAm
ZXJyb3IsICZzbmRvdXQsICZuZXdfdGFpbCk7CisJCQkJbW0gPSBzY3RwX2NvcHlfcmVzdW1lKHVp
bywgKGludCltYXhfbGVuLCAmZXJyb3IsICZzbmRvdXQsICZuZXdfdGFpbCk7CiAjZW5kaWYKLSNp
ZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKIAkJCQlTQ1RQX1NPQ0tFVF9MT0NLKHNvLCAwKTsKICNlbmRpZgogCQkJ
CWlmICgobW0gPT0gTlVMTCkgfHwgZXJyb3IpIHsKIAkJCQkJaWYgKG1tKSB7CiAJCQkJCQlzY3Rw
X21fZnJlZW0obW0pOwogCQkJCQl9CisJCQkJCVNDVFBfVENCX1NFTkRfTE9DSyhzdGNiKTsKKwkJ
CQkJaWYgKHNwICE9IE5VTEwpIHsKKwkJCQkJCXNwLT5wcm9jZXNzaW5nID0gMDsKKwkJCQkJfQor
CQkJCQlTQ1RQX1RDQl9TRU5EX1VOTE9DSyhzdGNiKTsKIAkJCQkJZ290byBvdXQ7CiAJCQkJfQog
CQkJCS8qIFVwZGF0ZSB0aGUgbWJ1ZiBhbmQgY291bnQgKi8KIAkJCQlTQ1RQX1RDQl9TRU5EX0xP
Q0soc3RjYik7Ci0JCQkJaWYgKHN0Y2ItPmFzb2Muc3RhdGUgJiBTQ1RQX1NUQVRFX0FCT1VUX1RP
X0JFX0ZSRUVEKSB7CisJCQkJaWYgKChzdGNiLT5hc29jLnN0YXRlICYgU0NUUF9TVEFURV9BQk9V
VF9UT19CRV9GUkVFRCkgfHwKKwkJCQkgICAgKHN0Y2ItPmFzb2Muc3RhdGUgJiBTQ1RQX1NUQVRF
X1dBU19BQk9SVEVEKSkgewogCQkJCQkvKiB3ZSBuZWVkIHRvIGdldCBvdXQuCiAJCQkJCSAqIFBl
ZXIgcHJvYmFibHkgYWJvcnRlZC4KIAkJCQkJICovCiAJCQkJCXNjdHBfbV9mcmVlbShtbSk7Ci0J
CQkJCWlmIChzdGNiLT5hc29jLnN0YXRlICYgU0NUUF9QQ0JfRkxBR1NfV0FTX0FCT1JURUQpIHsK
KwkJCQkJaWYgKHN0Y2ItPmFzb2Muc3RhdGUgJiBTQ1RQX1NUQVRFX1dBU19BQk9SVEVEKSB7CiAJ
CQkJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKE5VTEwsIHN0Y2IsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQ
X09VVFBVVCwgRUNPTk5SRVNFVCk7CiAJCQkJCQllcnJvciA9IEVDT05OUkVTRVQ7CiAJCQkJCX0K
KwkJCQkJaWYgKHNwICE9IE5VTEwpIHsKKwkJCQkJCXNwLT5wcm9jZXNzaW5nID0gMDsKKwkJCQkJ
fQogCQkJCQlTQ1RQX1RDQl9TRU5EX1VOTE9DSyhzdGNiKTsKIAkJCQkJZ290byBvdXQ7CiAJCQkJ
fQpAQCAtMTQzMTQsMTIgKzE0MzA1LDEyIEBAIHNraXBfcHJlYmxvY2s6CiAJCQkJc2N0cF9zbmRf
c2JfYWxsb2Moc3RjYiwgc25kb3V0KTsKIAkJCQlhdG9taWNfYWRkX2ludCgmc3AtPmxlbmd0aCwg
c25kb3V0KTsKIAkJCQlsZW4gKz0gc25kb3V0OwotCQkJCWlmIChzcmN2LT5zaW5mb19mbGFncyAm
IFNDVFBfU0FDS19JTU1FRElBVEVMWSkgeworCQkJCWlmIChzaW5mb19mbGFncyAmIFNDVFBfU0FD
S19JTU1FRElBVEVMWSkgewogCQkJCQlzcC0+c2luZm9fZmxhZ3MgfD0gU0NUUF9TQUNLX0lNTUVE
SUFURUxZOwogCQkJCX0KIAogCQkJCS8qIERpZCB3ZSByZWFjaCBFT1I/ICovCi0jaWYgZGVmaW5l
ZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAjaWYgZGVmaW5lZChBUFBMRV9MRU9QQVJEKQogCQkJCWlmICgodWlvLT51aW9fcmVz
aWQgPT0gMCkgJiYKICNlbHNlCkBAIC0xNDMyOSwxNSArMTQzMjAsMTUgQEAgc2tpcF9wcmVibG9j
azoKIAkJCQlpZiAoKHVpby0+dWlvX3Jlc2lkID09IDApICYmCiAjZW5kaWYKIAkJCQkgICAgKCh1
c2VyX21hcmtzX2VvciA9PSAwKSB8fAotCQkJCSAgICAgKHNyY3YtPnNpbmZvX2ZsYWdzICYgU0NU
UF9FT0YpIHx8Ci0JCQkJICAgICAodXNlcl9tYXJrc19lb3IgJiYgKHNyY3YtPnNpbmZvX2ZsYWdz
ICYgU0NUUF9FT1IpKSkpIHsKKwkJCQkgICAgIChzaW5mb19mbGFncyAmIFNDVFBfRU9GKSB8fAor
CQkJCSAgICAgKHVzZXJfbWFya3NfZW9yICYmIChzaW5mb19mbGFncyAmIFNDVFBfRU9SKSkpKSB7
CiAJCQkJCXNwLT5tc2dfaXNfY29tcGxldGUgPSAxOwogCQkJCX0gZWxzZSB7CiAJCQkJCXNwLT5t
c2dfaXNfY29tcGxldGUgPSAwOwogCQkJCX0KIAkJCQlTQ1RQX1RDQl9TRU5EX1VOTE9DSyhzdGNi
KTsKIAkJCX0KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZiBkZWZpbmVkKEFQUExFX0xFT1BBUkQpCiAJ
CQlpZiAodWlvLT51aW9fcmVzaWQgPT0gMCkgewogI2Vsc2UKQEAgLTE0MzU2LDcgKzE0MzQ3LDcg
QEAgc2tpcF9wcmVibG9jazoKIAkJCQkJU0NUUF9UQ0JfTE9DSyhzdGNiKTsKIAkJCQkJaG9sZF90
Y2Jsb2NrID0gMTsKIAkJCQl9Ci0JCQkJc2N0cF9wcnVuZV9wcnNjdHAoc3RjYiwgYXNvYywgc3Jj
diwgc25kbGVuKTsKKwkJCQlzY3RwX3BydW5lX3Byc2N0cChzdGNiLCBhc29jLCBzcmN2LCAoaW50
KXNuZGxlbik7CiAJCQkJaW5xdWV1ZV9ieXRlcyA9IHN0Y2ItPmFzb2MudG90YWxfb3V0cHV0X3F1
ZXVlX3NpemUgLSAoc3RjYi0+YXNvYy5jaHVua3Nfb25fb3V0X3F1ZXVlICogU0NUUF9EQVRBX0NI
VU5LX09WRVJIRUFEKHN0Y2IpKTsKIAkJCQlpZiAoU0NUUF9TQl9MSU1JVF9TTkQoc28pID4gaW5x
dWV1ZV9ieXRlcykKIAkJCQkJbWF4X2xlbiA9IFNDVFBfU0JfTElNSVRfU05EKHNvKSAtIGlucXVl
dWVfYnl0ZXM7CkBAIC0xNDM3MSw2ICsxNDM2MiwxMSBAQCBza2lwX3ByZWJsb2NrOgogCQkJLyog
d2FpdCBmb3Igc3BhY2Ugbm93ICovCiAJCQlpZiAobm9uX2Jsb2NraW5nKSB7CiAJCQkJLyogTm9u
LWJsb2NraW5nIGlvIGluIHBsYWNlIG91dCAqLworCQkJCVNDVFBfVENCX1NFTkRfTE9DSyhzdGNi
KTsKKwkJCQlpZiAoc3AgIT0gTlVMTCkgeworCQkJCQlzcC0+cHJvY2Vzc2luZyA9IDA7CisJCQkJ
fQorCQkJCVNDVFBfVENCX1NFTkRfVU5MT0NLKHN0Y2IpOwogCQkJCWdvdG8gc2tpcF9vdXRfZW9m
OwogCQkJfQogCQkJLyogV2hhdCBhYm91dCB0aGUgSU5JVCwgc2VuZCBpdCBtYXliZSAqLwpAQCAt
MTQzNzksMTIgKzE0Mzc1LDE4IEBAIHNraXBfcHJlYmxvY2s6CiAJCQkJCVNDVFBfVENCX0xPQ0so
c3RjYik7CiAJCQkJCWhvbGRfdGNibG9jayA9IDE7CiAJCQkJfQotCQkJCWlmIChTQ1RQX0dFVF9T
VEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9PUEVOKSB7CisJCQkJaWYgKFNDVFBfR0VU
X1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfT1BFTikgewogCQkJCQkvKiBhIGNvbGxpc2lvbiB0
b29rIHVzIGZvcndhcmQ/ICovCiAJCQkJCXF1ZXVlX29ubHkgPSAwOwogCQkJCX0gZWxzZSB7Cisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJCQkJ
TkVUX0VQT0NIX0VOVEVSKGV0KTsKKyNlbmRpZgogCQkJCQlzY3RwX3NlbmRfaW5pdGlhdGUoaW5w
LCBzdGNiLCBTQ1RQX1NPX0xPQ0tFRCk7Ci0JCQkJCVNDVFBfU0VUX1NUQVRFKGFzb2MsIFNDVFBf
U1RBVEVfQ09PS0lFX1dBSVQpOworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCisJCQkJCU5FVF9FUE9DSF9FWElUKGV0KTsKKyNlbmRpZgorCQkJCQlT
Q1RQX1NFVF9TVEFURShzdGNiLCBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKTsKIAkJCQkJcXVldWVf
b25seSA9IDE7CiAJCQkJfQogCQkJfQpAQCAtMTQ0NDEsNiArMTQ0NDMsOSBAQCBza2lwX3ByZWJs
b2NrOgogCQkJCSAqIHRoZSBpbnB1dCB2aWEgdGhlIG5ldCBpcyBoYXBwZW5pbmcKIAkJCQkgKiBh
bmQgSSBkb24ndCBuZWVkIHRvIHN0YXJ0IG91dHB1dCA6LUQKIAkJCQkgKi8KKyNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQkJCU5FVF9FUE9DSF9F
TlRFUihldCk7CisjZW5kaWYKIAkJCQlpZiAoaG9sZF90Y2Jsb2NrID09IDApIHsKIAkJCQkJaWYg
KFNDVFBfVENCX1RSWUxPQ0soc3RjYikpIHsKIAkJCQkJCWhvbGRfdGNibG9jayA9IDE7CkBAIC0x
NDQ1MywxMCArMTQ0NTgsMTMgQEAgc2tpcF9wcmVibG9jazoKIAkJCQkJCQkgIHN0Y2IsCiAJCQkJ
CQkJICBTQ1RQX09VVFBVVF9GUk9NX1VTUl9TRU5ELCBTQ1RQX1NPX0xPQ0tFRCk7CiAJCQkJfQot
CQkJCWlmIChob2xkX3RjYmxvY2sgPT0gMSkgewotCQkJCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7
Ci0JCQkJCWhvbGRfdGNibG9jayA9IDA7Ci0JCQkJfQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQkJTkVUX0VQT0NIX0VYSVQoZXQpOworI2Vu
ZGlmCisJCQl9CisJCQlpZiAoaG9sZF90Y2Jsb2NrID09IDEpIHsKKwkJCQlTQ1RQX1RDQl9VTkxP
Q0soc3RjYik7CisJCQkJaG9sZF90Y2Jsb2NrID0gMDsKIAkJCX0KIAkJCVNPQ0tCVUZfTE9DSygm
c28tPnNvX3NuZCk7CiAJCQkvKi0KQEAgLTE0NDc3LDcgKzE0NDg1LDcgQEAgc2tpcF9wcmVibG9j
azoKIAkJCWlmIChTQ1RQX1NCX0xJTUlUX1NORChzbykgPD0gKGlucXVldWVfYnl0ZXMgKwogCQkJ
CQkJICAgICAgbWluKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9hZGRfbW9yZV90aHJlc2hvbGQpLCBT
Q1RQX1NCX0xJTUlUX1NORChzbykpKSkgewogCQkJCWlmIChTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBf
bG9nZ2luZ19sZXZlbCkgJiBTQ1RQX0JMS19MT0dHSU5HX0VOQUJMRSkgewotI2lmIGRlZmluZWQo
X19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogI2lmIGRlZmluZWQoQVBQTEVfTEVPUEFSRCkKIAkJCQkJc2N0cF9sb2dfYmxvY2soU0NU
UF9CTE9DS19MT0dfSU5UT19CTEssCiAJCQkJCQkgICAgICAgYXNvYywgdWlvLT51aW9fcmVzaWQp
OwpAQCAtMTQ0ODcsMTQgKzE0NDk1LDE0IEBAIHNraXBfcHJlYmxvY2s6CiAjZW5kaWYKICNlbHNl
CiAJCQkJCXNjdHBfbG9nX2Jsb2NrKFNDVFBfQkxPQ0tfTE9HX0lOVE9fQkxLLAotCQkJCQkJICAg
ICAgIGFzb2MsIChzaXplX3QpdWlvLT51aW9fcmVzaWQpOworCQkJCQkJICAgICAgIGFzb2MsIHVp
by0+dWlvX3Jlc2lkKTsKICNlbmRpZgogCQkJCX0KIAkJCQliZS5lcnJvciA9IDA7Ci0jaWYgIWRl
ZmluZWQoX19QYW5kYV9fKSAmJiAhZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhKGRlZmluZWQo
X1dJTjMyKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkKIAkJCQlzdGNiLT5ibG9ja19lbnRy
eSA9ICZiZTsKICNlbmRpZgotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19B
UFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCXNidW5sb2NrKCZzby0+c29f
c25kLCAxKTsKICNlbmRpZgogCQkJCWVycm9yID0gc2J3YWl0KCZzby0+c29fc25kKTsKQEAgLTE0
NTA5LDEwICsxNDUxNywxNSBAQCBza2lwX3ByZWJsb2NrOgogCQkJCQkJfQogCQkJCQl9CiAJCQkJ
CVNPQ0tCVUZfVU5MT0NLKCZzby0+c29fc25kKTsKKwkJCQkJU0NUUF9UQ0JfU0VORF9MT0NLKHN0
Y2IpOworCQkJCQlpZiAoc3AgIT0gTlVMTCkgeworCQkJCQkJc3AtPnByb2Nlc3NpbmcgPSAwOwor
CQkJCQl9CisJCQkJCVNDVFBfVENCX1NFTkRfVU5MT0NLKHN0Y2IpOwogCQkJCQlnb3RvIG91dF91
bmxvY2tlZDsKIAkJCQl9CiAKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9f
QVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQllcnJvciA9IHNibG9jaygm
c28tPnNvX3NuZCwgU0JMT0NLV0FJVChmbGFncykpOwogI2VuZGlmCiAJCQkJaWYgKFNDVFBfQkFT
RV9TWVNDVEwoc2N0cF9sb2dnaW5nX2xldmVsKSAmIFNDVFBfQkxLX0xPR0dJTkdfRU5BQkxFKSB7
CkBAIC0xNDUyMSwxMiArMTQ1MzQsMTkgQEAgc2tpcF9wcmVibG9jazoKIAkJCQl9CiAJCQl9CiAJ
CQlTT0NLQlVGX1VOTE9DSygmc28tPnNvX3NuZCk7CisJCQlTQ1RQX1RDQl9TRU5EX0xPQ0soc3Rj
Yik7CiAJCQlpZiAoc3RjYi0+YXNvYy5zdGF0ZSAmIFNDVFBfU1RBVEVfQUJPVVRfVE9fQkVfRlJF
RUQpIHsKKwkJCQlpZiAoc3AgIT0gTlVMTCkgeworCQkJCQlzcC0+cHJvY2Vzc2luZyA9IDA7CisJ
CQkJfQorCQkJCVNDVFBfVENCX1NFTkRfVU5MT0NLKHN0Y2IpOwogCQkJCWdvdG8gb3V0X3VubG9j
a2VkOwogCQkJfQorCQkJU0NUUF9UQ0JfU0VORF9VTkxPQ0soc3RjYik7CiAJCX0KIAkJU0NUUF9U
Q0JfU0VORF9MT0NLKHN0Y2IpOwotCQlpZiAoc3RjYi0+YXNvYy5zdGF0ZSAmIFNDVFBfU1RBVEVf
QUJPVVRfVE9fQkVfRlJFRUQpIHsKKwkJaWYgKChzdGNiLT5hc29jLnN0YXRlICYgU0NUUF9TVEFU
RV9BQk9VVF9UT19CRV9GUkVFRCkgfHwKKwkJICAgIChzdGNiLT5hc29jLnN0YXRlICYgU0NUUF9T
VEFURV9XQVNfQUJPUlRFRCkpIHsKIAkJCVNDVFBfVENCX1NFTkRfVU5MT0NLKHN0Y2IpOwogCQkJ
Z290byBvdXRfdW5sb2NrZWQ7CiAJCX0KQEAgLTE0NTQyLDEzICsxNDU2MiwxNCBAQCBza2lwX3By
ZWJsb2NrOgogCQkJCXN0cm0tPmxhc3RfbXNnX2luY29tcGxldGUgPSAwOwogCQkJCWFzb2MtPnN0
cmVhbV9sb2NrZWQgPSAwOwogCQkJfQorCQkJc3AtPnByb2Nlc3NpbmcgPSAwOwogCQl9IGVsc2Ug
ewogCQkJU0NUUF9QUklOVEYoIkh1aCBubyBzcCBUU05IP1xuIik7CiAJCQlzdHJtLT5sYXN0X21z
Z19pbmNvbXBsZXRlID0gMDsKIAkJCWFzb2MtPnN0cmVhbV9sb2NrZWQgPSAwOwogCQl9CiAJCVND
VFBfVENCX1NFTkRfVU5MT0NLKHN0Y2IpOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRl
ZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmIGRlZmluZWQo
QVBQTEVfTEVPUEFSRCkKIAkJaWYgKHVpby0+dWlvX3Jlc2lkID09IDApIHsKICNlbHNlCkBAIC0x
NDU2MywxMyArMTQ1ODQsNyBAQCBza2lwX3ByZWJsb2NrOgogCQkvKiBXZSBzZW5kIGluIGEgMCwg
c2luY2Ugd2UgZG8gTk9UIGhhdmUgYW55IGxvY2tzICovCiAJCWVycm9yID0gc2N0cF9tc2dfYXBw
ZW5kKHN0Y2IsIG5ldCwgdG9wLCBzcmN2LCAwKTsKIAkJdG9wID0gTlVMTDsKLQkJaWYgKHNyY3Yt
PnNpbmZvX2ZsYWdzICYgU0NUUF9FT0YpIHsKLQkJCS8qCi0JCQkgKiBUaGlzIHNob3VsZCBvbmx5
IGhhcHBlbiBmb3IgUGFuZGEgZm9yIHRoZSBtYnVmCi0JCQkgKiBzZW5kIGNhc2UsIHdoaWNoIGRv
ZXMgTk9UIHlldCBzdXBwb3J0IEVFT1IgbW9kZS4KLQkJCSAqIFRodXMsIHdlIGNhbiBqdXN0IHNl
dCB0aGlzIGZsYWcgdG8gZG8gdGhlIHByb3BlcgotCQkJICogRU9GIGhhbmRsaW5nLgotCQkJICov
CisJCWlmIChzaW5mb19mbGFncyAmIFNDVFBfRU9GKSB7CiAJCQlnb3RfYWxsX29mX3RoZV9zZW5k
ID0gMTsKIAkJfQogCX0KQEAgLTE0NTc4LDcgKzE0NTkzLDcgQEAgc2tpcF9wcmVibG9jazoKIAl9
CiBkYXRhbGVzc19lb2Y6CiAJLyogRU9GIHRoaW5nID8gKi8KLQlpZiAoKHNyY3YtPnNpbmZvX2Zs
YWdzICYgU0NUUF9FT0YpICYmCisJaWYgKChzaW5mb19mbGFncyAmIFNDVFBfRU9GKSAmJgogCSAg
ICAoZ290X2FsbF9vZl90aGVfc2VuZCA9PSAxKSkgewogCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19z
ZW5kc193aXRoX2VvZik7CiAJCWVycm9yID0gMDsKQEAgLTE0NTkzLDE3ICsxNDYwOCwxNiBAQCBk
YXRhbGVzc19lb2Y6CiAJCQkJZ290byBhYm9ydF9hbnl3YXk7CiAJCQl9CiAJCQkvKiB0aGVyZSBp
cyBub3RoaW5nIHF1ZXVlZCB0byBzZW5kLCBzbyBJJ20gZG9uZS4uLiAqLwotCQkJaWYgKChTQ1RQ
X0dFVF9TVEFURShhc29jKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpICYmCi0JCQkgICAg
KFNDVFBfR0VUX1NUQVRFKGFzb2MpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpICYm
Ci0JCQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fQUNL
X1NFTlQpKSB7CisJCQlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVfU0hV
VERPV05fU0VOVCkgJiYKKwkJCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9TVEFU
RV9TSFVURE9XTl9SRUNFSVZFRCkgJiYKKwkJCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgIT0g
U0NUUF9TVEFURV9TSFVURE9XTl9BQ0tfU0VOVCkpIHsKIAkJCQlzdHJ1Y3Qgc2N0cF9uZXRzICpu
ZXRwOwogCiAJCQkJLyogb25seSBzZW5kIFNIVVRET1dOIHRoZSBmaXJzdCB0aW1lIHRocm91Z2gg
Ki8KLQkJCQlpZiAoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9PUEVOKSB7CisJ
CQkJaWYgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfT1BFTikgewogCQkJCQlT
Q1RQX1NUQVRfREVDUl9HQVVHRTMyKHNjdHBzX2N1cnJlc3RhYik7CiAJCQkJfQotCQkJCVNDVFBf
U0VUX1NUQVRFKGFzb2MsIFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCk7Ci0JCQkJU0NUUF9DTEVB
Ul9TVUJTVEFURShhc29jLCBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJTkcpOworCQkJCVNDVFBf
U0VUX1NUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCk7CiAJCQkJc2N0cF9zdG9w
X3RpbWVyc19mb3Jfc2h1dGRvd24oc3RjYik7CiAJCQkJaWYgKHN0Y2ItPmFzb2MuYWx0ZXJuYXRl
KSB7CiAJCQkJCW5ldHAgPSBzdGNiLT5hc29jLmFsdGVybmF0ZTsKQEAgLTE0NjE0LDcgKzE0NjI4
LDcgQEAgZGF0YWxlc3NfZW9mOgogCQkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBF
X1NIVVRET1dOLCBzdGNiLT5zY3RwX2VwLCBzdGNiLAogCQkJCSAgICAgICAgICAgICAgICAgbmV0
cCk7CiAJCQkJc2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfU0hVVERPV05HVUFSRCwg
c3RjYi0+c2N0cF9lcCwgc3RjYiwKLQkJCQkgICAgICAgICAgICAgICAgIGFzb2MtPnByaW1hcnlf
ZGVzdGluYXRpb24pOworCQkJCSAgICAgICAgICAgICAgICAgTlVMTCk7CiAJCQl9CiAJCX0gZWxz
ZSB7CiAJCQkvKi0KQEAgLTE0NjI3LDE3ICsxNDY0MSwxNyBAQCBkYXRhbGVzc19lb2Y6CiAJCQkg
KiBkYXRhIHRvIGJlIHNlbnQgZmlyc3QgYW5kIG1vdmUgdG8KIAkJCSAqIFNIVVRET1dOLVBFTkRJ
TkcKIAkJCSAqLwotCQkJaWYgKChTQ1RQX0dFVF9TVEFURShhc29jKSAhPSBTQ1RQX1NUQVRFX1NI
VVRET1dOX1NFTlQpICYmCi0JCQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpICE9IFNDVFBfU1RB
VEVfU0hVVERPV05fUkVDRUlWRUQpICYmCi0JCQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpICE9
IFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQpKSB7CisJCQlpZiAoKFNDVFBfR0VUX1NUQVRF
KHN0Y2IpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCkgJiYKKwkJCSAgICAoU0NUUF9HRVRf
U1RBVEUoc3RjYikgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkgJiYKKwkJCSAgICAo
U0NUUF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tfU0VOVCkpIHsK
IAkJCQlpZiAoaG9sZF90Y2Jsb2NrID09IDApIHsKIAkJCQkJU0NUUF9UQ0JfTE9DSyhzdGNiKTsK
IAkJCQkJaG9sZF90Y2Jsb2NrID0gMTsKIAkJCQl9CiAJCQkJaWYgKCgqYXNvYy0+c3NfZnVuY3Rp
b25zLnNjdHBfc3NfaXNfdXNlcl9tc2dzX2luY29tcGxldGUpKHN0Y2IsIGFzb2MpKSB7Ci0JCQkJ
CWFzb2MtPnN0YXRlIHw9IFNDVFBfU1RBVEVfUEFSVElBTF9NU0dfTEVGVDsKKwkJCQkJU0NUUF9B
RERfU1VCU1RBVEUoc3RjYiwgU0NUUF9TVEFURV9QQVJUSUFMX01TR19MRUZUKTsKIAkJCQl9Ci0J
CQkJYXNvYy0+c3RhdGUgfD0gU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HOworCQkJCVNDVFBf
QUREX1NVQlNUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORyk7CiAJCQkJaWYg
KFRBSUxRX0VNUFRZKCZhc29jLT5zZW5kX3F1ZXVlKSAmJgogCQkJCSAgICBUQUlMUV9FTVBUWSgm
YXNvYy0+c2VudF9xdWV1ZSkgJiYKIAkJCQkgICAgKGFzb2MtPnN0YXRlICYgU0NUUF9TVEFURV9Q
QVJUSUFMX01TR19MRUZUKSkgewpAQCAtMTQ2NDksMTkgKzE0NjYzLDI1IEBAIGRhdGFsZXNzX2Vv
ZjoKIAkJCQkJCWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29jLnJlZmNudCwgLTEpOwogCQkJCQkJ
ZnJlZV9jbnRfYXBwbGllZCA9IDA7CiAJCQkJCX0KLQkJCQkJc25wcmludGYobXNnLCBzaXplb2Yo
bXNnKSwKLQkJCQkJICAgICAgICAgIiVzOiVkIGF0ICVzIiwgX19GSUxFX18sIF9fTElORV9fLCBf
X2Z1bmNfXyk7CisJCQkJCVNDVFBfU05QUklOVEYobXNnLCBzaXplb2YobXNnKSwKKwkJCQkJICAg
ICAgICAgICAgICAiJXM6JWQgYXQgJXMiLCBfX0ZJTEVfXywgX19MSU5FX18sIF9fZnVuY19fKTsK
IAkJCQkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBf
ZGlhZ19pbmZvX2NvZGUpLAogCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyk7
CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJ
CQkJTkVUX0VQT0NIX0VOVEVSKGV0KTsKKyNlbmRpZgogCQkJCQlzY3RwX2Fib3J0X2FuX2Fzc29j
aWF0aW9uKHN0Y2ItPnNjdHBfZXAsIHN0Y2IsCiAJCQkJCSAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3BfZXJyLCBTQ1RQX1NPX0xPQ0tFRCk7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJCQkJTkVUX0VQT0NIX0VYSVQoZXQpOworI2VuZGlm
CiAJCQkJCS8qIG5vdyByZWxvY2sgdGhlIHN0Y2Igc28gZXZlcnl0aGluZyBpcyBzYW5lICovCiAJ
CQkJCWhvbGRfdGNibG9jayA9IDA7CiAJCQkJCXN0Y2IgPSBOVUxMOwogCQkJCQlnb3RvIG91dDsK
IAkJCQl9CiAJCQkJc2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfU0hVVERPV05HVUFS
RCwgc3RjYi0+c2N0cF9lcCwgc3RjYiwKLQkJCQkgICAgICAgICAgICAgICAgIGFzb2MtPnByaW1h
cnlfZGVzdGluYXRpb24pOworCQkJCSAgICAgICAgICAgICAgICAgTlVMTCk7CiAJCQkJc2N0cF9m
ZWF0dXJlX29mZihpbnAsIFNDVFBfUENCX0ZMQUdTX05PREVMQVkpOwogCQkJfQogCQl9CkBAIC0x
NDY3NSwxMiArMTQ2OTUsMTggQEAgc2tpcF9vdXRfZW9mOgogCQkJU0NUUF9UQ0JfTE9DSyhzdGNi
KTsKIAkJCWhvbGRfdGNibG9jayA9IDE7CiAJCX0KLQkJaWYgKFNDVFBfR0VUX1NUQVRFKCZzdGNi
LT5hc29jKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHsKKwkJaWYgKFNDVFBfR0VUX1NUQVRFKHN0Y2Ip
ID09IFNDVFBfU1RBVEVfT1BFTikgewogCQkJLyogYSBjb2xsaXNpb24gdG9vayB1cyBmb3J3YXJk
PyAqLwogCQkJcXVldWVfb25seSA9IDA7CiAJCX0gZWxzZSB7CisjaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJCU5FVF9FUE9DSF9FTlRFUihldCk7
CisjZW5kaWYKIAkJCXNjdHBfc2VuZF9pbml0aWF0ZShpbnAsIHN0Y2IsIFNDVFBfU09fTE9DS0VE
KTsKLQkJCVNDVFBfU0VUX1NUQVRFKCZzdGNiLT5hc29jLCBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlU
KTsKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQor
CQkJTkVUX0VQT0NIX0VYSVQoZXQpOworI2VuZGlmCisJCQlTQ1RQX1NFVF9TVEFURShzdGNiLCBT
Q1RQX1NUQVRFX0NPT0tJRV9XQUlUKTsKIAkJCXF1ZXVlX29ubHkgPSAxOwogCQl9CiAJfQpAQCAt
MTQ3MjUsNiArMTQ3NTEsOSBAQCBza2lwX291dF9lb2Y6CiAJCSAgICAgICAgICAgICAgIHN0Y2It
PmFzb2MudG90YWxfZmxpZ2h0LAogCQkgICAgICAgICAgICAgICBzdGNiLT5hc29jLmNodW5rc19v
bl9vdXRfcXVldWUsIHN0Y2ItPmFzb2MudG90YWxfZmxpZ2h0X2NvdW50KTsKIAl9CisjaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwlORVRfRVBPQ0hf
RU5URVIoZXQpOworI2VuZGlmCiAJaWYgKChxdWV1ZV9vbmx5ID09IDApICYmIChuYWdsZV9hcHBs
aWVzID09IDApICYmIChzdGNiLT5hc29jLnBlZXJzX3J3bmQgJiYgdW5fc2VudCkpIHsKIAkJLyog
d2UgY2FuIGF0dGVtcHQgdG8gc2VuZCB0b28uICovCiAJCWlmIChob2xkX3RjYmxvY2sgPT0gMCkg
ewpAQCAtMTQ3NTcsMTMgKzE0Nzg2LDE2IEBAIHNraXBfb3V0X2VvZjoKIAkJKHZvaWQpc2N0cF9t
ZWRfY2h1bmtfb3V0cHV0KGlucCwgc3RjYiwgJnN0Y2ItPmFzb2MsICZudW1fb3V0LAogCQkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJnJlYXNvbiwgMSwgMSwgJm5vdywgJm5vd19maWxsZWQs
IGZyYWdfcG9pbnQsIFNDVFBfU09fTE9DS0VEKTsKIAl9CisjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwlORVRfRVBPQ0hfRVhJVChldCk7CisjZW5k
aWYKIAlTQ1RQREJHKFNDVFBfREVCVUdfT1VUUFVUMSwgIlVTUiBTZW5kIGNvbXBsZXRlIHFvOiVk
IHBydzolZCB1bnNlbnQ6JWQgdGY6JWQgY29vcTolZCB0b3FzOiVkIGVycjolZFxuIiwKIAkgICAg
ICAgIHF1ZXVlX29ubHksIHN0Y2ItPmFzb2MucGVlcnNfcnduZCwgdW5fc2VudCwKIAkJc3RjYi0+
YXNvYy50b3RhbF9mbGlnaHQsIHN0Y2ItPmFzb2MuY2h1bmtzX29uX291dF9xdWV1ZSwKIAkgICAg
ICAgIHN0Y2ItPmFzb2MudG90YWxfb3V0cHV0X3F1ZXVlX3NpemUsIGVycm9yKTsKIAogb3V0Ogot
I2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogCXNidW5sb2NrKCZzby0+c29fc25kLCAxKTsKICNlbmRpZgogb3V0
X3VubG9ja2VkOgpAQCAtMTQ3ODEsNyArMTQ4MTMsNyBAQCBvdXRfdW5sb2NrZWQ6CiAJCWF0b21p
Y19hZGRfaW50KCZzdGNiLT5hc29jLnJlZmNudCwgLTEpOwogCX0KICNpZmRlZiBJTlZBUklBTlRT
Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWlmIChzdGNiKSB7CiAJCWlmIChtdHhfb3duZWQoJnN0
Y2ItPnRjYl9tdHgpKSB7CiAJCQlwYW5pYygiTGVhdmluZyB3aXRoIHRjYiBtdHggb3duZWQ/Iik7
CkBAIC0xNDc5MSwzMyArMTQ4MjMsNiBAQCBvdXRfdW5sb2NrZWQ6CiAJCX0KIAl9CiAjZW5kaWYK
LSNlbmRpZgotI2lmZGVmIF9fUGFuZGFfXwotCS8qCi0JICogSGFuZGxlIHRoZSBFQUdBSU4vRU5P
TUVNIGNhc2VzIHRvIHJlYXR0YWNoIHRoZSBwYWsgaGVhZGVyCi0JICogdG8gcGFydGljbGUgd2hl
biBwYWsgaXMgcGFzc2VkIGluLCBzbyB0aGF0IGNhbGxlcgotCSAqIGNhbiB0cnkgYWdhaW4gd2l0
aCB0aGlzIHBhawotCSAqCi0JICogTk9URTogRm9yIG90aGVyIGNhc2VzLCBpbmNsdWRpbmcgc3Vj
Y2VzcyBjYXNlLAotCSAqIHdlIHNpbXBseSB3YW50IHRvIHJldHVybiB0aGUgaGVhZGVyIGJhY2sg
dG8gZnJlZQotCSAqIHBvb2wKLQkgKi8KLQlpZiAodG9wKSB7Ci0JCWlmICgoZXJyb3IgPT0gRUFH
QUlOKSB8fCAoZXJyb3IgPT0gRU5PTUVNKSkgewotCQkJU0NUUF9BVFRBQ0hfQ0hBSU4oaV9wYWss
IHRvcCwgc25kbGVuKTsKLQkJCXRvcCA9IE5VTEw7Ci0JCX0gZWxzZSB7Ci0JCQkodm9pZClTQ1RQ
X1JFTEVBU0VfSEVBREVSKGlfcGFrKTsKLQkJfQotCX0gZWxzZSB7Ci0JCS8qIFRoaXMgaXMgdG8g
aGFuZGxlIGNhc2VzIHdoZW4gdG9wIGhhcwotCQkgKiBiZWVuIHJlc2V0IHRvIE5VTEwgYnV0IHBh
ayBtaWdodCBub3QKLQkJICogYmUgZnJlZWQKLQkJICovCi0JCWlmIChpX3BhaykgewotCQkJKHZv
aWQpU0NUUF9SRUxFQVNFX0hFQURFUihpX3Bhayk7Ci0JCX0KLQl9CiAjZW5kaWYKIAlpZiAodG9w
KSB7CiAJCXNjdHBfbV9mcmVlbSh0b3ApOwpAQCAtMTQ4ODcsNyArMTQ4OTIsNyBAQCBzY3RwX2Fk
ZF9hdXRoX2NodW5rKHN0cnVjdCBtYnVmICptLCBzdHJ1Y3QgbWJ1ZiAqKm1fZW5kLAogCXJldHVy
biAobSk7CiB9CiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAgfHwgZGVmaW5lZChfX0FQUExF
X18pCisjaWYgKGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSkgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZmRlZiBJTkVUNgogaW50CiBzY3RwX3Y2c3JjX21h
dGNoX25leHRob3Aoc3RydWN0IHNvY2thZGRyX2luNiAqc3JjNiwgc2N0cF9yb3V0ZV90ICpybykK
QEAgLTE0ODk2LDcgKzE0OTAxLDExIEBAIHNjdHBfdjZzcmNfbWF0Y2hfbmV4dGhvcChzdHJ1Y3Qg
c29ja2FkZHJfaW42ICpzcmM2LCBzY3RwX3JvdXRlX3QgKnJvKQogCXN0cnVjdCBuZF9wZnhyb3V0
ZXIgKnBmeHJ0ciA9IE5VTEw7CiAJc3RydWN0IHNvY2thZGRyX2luNiBndzY7CiAKKyNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKQorCWlmIChybyA9PSBOVUxMIHx8IHJvLT5yb19uaCA9PSBOVUxMIHx8
IHNyYzYtPnNpbjZfZmFtaWx5ICE9IEFGX0lORVQ2KQorI2Vsc2UKIAlpZiAocm8gPT0gTlVMTCB8
fCByby0+cm9fcnQgPT0gTlVMTCB8fCBzcmM2LT5zaW42X2ZhbWlseSAhPSBBRl9JTkVUNikKKyNl
bmRpZgogCQlyZXR1cm4gKDApOwogCiAJLyogZ2V0IHByZWZpeCBlbnRyeSBvZiBhZGRyZXNzICov
CkBAIC0xNDkzNSwxMCArMTQ5NDQsMTYgQEAgc2N0cF92NnNyY19tYXRjaF9uZXh0aG9wKHN0cnVj
dCBzb2NrYWRkcl9pbjYgKnNyYzYsIHNjdHBfcm91dGVfdCAqcm8pCiAJCVNDVFBEQkcoU0NUUF9E
RUJVR19PVVRQVVQyLCAicHJlZml4IHJvdXRlciBpcyAiKTsKIAkJU0NUUERCR19BRERSKFNDVFBf
REVCVUdfT1VUUFVUMiwgKHN0cnVjdCBzb2NrYWRkciAqKSZndzYpOwogCQlTQ1RQREJHKFNDVFBf
REVCVUdfT1VUUFVUMiwgImluc3RhbGxlZCByb3V0ZXIgaXMgIik7CisjaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykKKwkJU0NUUERCR19BRERSKFNDVFBfREVCVUdfT1VUUFVUMiwgJnJvLT5yb19uaC0+
Z3dfc2EpOworI2Vsc2UKIAkJU0NUUERCR19BRERSKFNDVFBfREVCVUdfT1VUUFVUMiwgcm8tPnJv
X3J0LT5ydF9nYXRld2F5KTsKLQkJaWYgKHNjdHBfY21wYWRkcigoc3RydWN0IHNvY2thZGRyICop
Jmd3Niwgcm8tPnJvX3J0LT5ydF9nYXRld2F5KSkgeworI2VuZGlmCiAjaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykKKwkJaWYgKHNjdHBfY21wYWRkcigoc3RydWN0IHNvY2thZGRyICopJmd3NiwgJnJv
LT5yb19uaC0+Z3dfc2EpKSB7CiAJCQlORDZfUlVOTE9DSygpOworI2Vsc2UKKwkJaWYgKHNjdHBf
Y21wYWRkcigoc3RydWN0IHNvY2thZGRyICopJmd3Niwgcm8tPnJvX3J0LT5ydF9nYXRld2F5KSkg
ewogI2VuZGlmCiAJCQlTQ1RQREJHKFNDVFBfREVCVUdfT1VUUFVUMiwgInBmeHJvdXRlciBpcyBp
bnN0YWxsZWRcbiIpOwogCQkJcmV0dXJuICgxKTsKQEAgLTE0OTYwLDcgKzE0OTc1LDExIEBAIHNj
dHBfdjRzcmNfbWF0Y2hfbmV4dGhvcChzdHJ1Y3Qgc2N0cF9pZmEgKnNpZmEsIHNjdHBfcm91dGVf
dCAqcm8pCiAJc3RydWN0IGlmYWRkciAqaWZhOwogCXN0cnVjdCBpbl9hZGRyIHNyY25ldGFkZHIs
IGd3bmV0YWRkcjsKIAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisJaWYgKHJvID09IE5VTEwg
fHwgcm8tPnJvX25oID09IE5VTEwgfHwKKyNlbHNlCiAJaWYgKHJvID09IE5VTEwgfHwgcm8tPnJv
X3J0ID09IE5VTEwgfHwKKyNlbmRpZgogCSAgICBzaWZhLT5hZGRyZXNzLnNhLnNhX2ZhbWlseSAh
PSBBRl9JTkVUKSB7CiAJCXJldHVybiAoMCk7CiAJfQpAQCAtMTQ5NzIsMTAgKzE0OTkxLDE4IEBA
IHNjdHBfdjRzcmNfbWF0Y2hfbmV4dGhvcChzdHJ1Y3Qgc2N0cF9pZmEgKnNpZmEsIHNjdHBfcm91
dGVfdCAqcm8pCiAJU0NUUERCR19BRERSKFNDVFBfREVCVUdfT1VUUFVUMiwgJnNpZmEtPmFkZHJl
c3Muc2EpOwogCVNDVFBEQkcoU0NUUF9ERUJVR19PVVRQVVQxLCAibmV0d29yayBhZGRyZXNzIGlz
ICV4XG4iLCBzcmNuZXRhZGRyLnNfYWRkcik7CiAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQor
CXNpbiA9ICZyby0+cm9fbmgtPmd3NF9zYTsKKyNlbHNlCiAJc2luID0gKHN0cnVjdCBzb2NrYWRk
cl9pbiAqKXJvLT5yb19ydC0+cnRfZ2F0ZXdheTsKKyNlbmRpZgogCWd3bmV0YWRkci5zX2FkZHIg
PSAoc2luLT5zaW5fYWRkci5zX2FkZHIgJiBtYXNrLT5zaW5fYWRkci5zX2FkZHIpOwogCVNDVFBE
QkcoU0NUUF9ERUJVR19PVVRQVVQxLCAibWF0Y2hfbmV4dGhvcDQ6IG5leHRob3AgaXMgIik7Cisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKwlTQ1RQREJHX0FERFIoU0NUUF9ERUJVR19PVVRQVVQy
LCAmcm8tPnJvX25oLT5nd19zYSk7CisjZWxzZQogCVNDVFBEQkdfQUREUihTQ1RQX0RFQlVHX09V
VFBVVDIsIHJvLT5yb19ydC0+cnRfZ2F0ZXdheSk7CisjZW5kaWYKIAlTQ1RQREJHKFNDVFBfREVC
VUdfT1VUUFVUMSwgIm5ldHdvcmsgYWRkcmVzcyBpcyAleFxuIiwgZ3duZXRhZGRyLnNfYWRkcik7
CiAJaWYgKHNyY25ldGFkZHIuc19hZGRyID09IGd3bmV0YWRkci5zX2FkZHIpIHsKIAkJcmV0dXJu
ICgxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX291dHB1
dC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3Jz
Y3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfb3V0cHV0LmgKb2xkIG1vZGUg
MTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA1OTdkZGMzYmYzYTUuLjQ4NDljMmI0OTI1ZAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9vdXRwdXQuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0
cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9vdXRwdXQuaApAQCAtMzIsOSArMzIsOSBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZmRlZiBfX0ZyZWVC
U0RfXworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25l
dGluZXQvc2N0cF9vdXRwdXQuaCAzMjM4NjEgMjAxNy0wOS0yMSAxMTo1NjozMVogdHVleGVuICQi
KTsKK19fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX291dHB1dC5oIDM2
MjA1NCAyMDIwLTA2LTExIDEzOjM0OjA5WiB0dWV4ZW4gJCIpOwogI2VuZGlmCiAKICNpZm5kZWYg
X05FVElORVRfU0NUUF9PVVRQVVRfSF8KQEAgLTc4LDExICs3OCw3IEBAIGludAogc2N0cF92NHNy
Y19tYXRjaF9uZXh0aG9wKHN0cnVjdCBzY3RwX2lmYSAqc2lmYSwgc2N0cF9yb3V0ZV90ICpybyk7
CiAjZW5kaWYKIAotdm9pZCBzY3RwX3NlbmRfaW5pdGlhdGUoc3RydWN0IHNjdHBfaW5wY2IgKiwg
c3RydWN0IHNjdHBfdGNiICosIGludAotI2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmlu
ZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCi0gICAgU0NUUF9VTlVTRUQKLSNlbmRpZgotICAgICk7
Cit2b2lkIHNjdHBfc2VuZF9pbml0aWF0ZShzdHJ1Y3Qgc2N0cF9pbnBjYiAqLCBzdHJ1Y3Qgc2N0
cF90Y2IgKiwgaW50KTsKIAogdm9pZAogc2N0cF9zZW5kX2luaXRpYXRlX2FjayhzdHJ1Y3Qgc2N0
cF9pbnBjYiAqLCBzdHJ1Y3Qgc2N0cF90Y2IgKiwKQEAgLTkwLDE4ICs4NiwxOCBAQCBzY3RwX3Nl
bmRfaW5pdGlhdGVfYWNrKHN0cnVjdCBzY3RwX2lucGNiICosIHN0cnVjdCBzY3RwX3RjYiAqLAog
ICAgICAgICAgICAgICAgICAgICAgICBpbnQsIGludCwKICAgICAgICAgICAgICAgICAgICAgICAg
c3RydWN0IHNvY2thZGRyICosIHN0cnVjdCBzb2NrYWRkciAqLAogICAgICAgICAgICAgICAgICAg
ICAgICBzdHJ1Y3Qgc2N0cGhkciAqLCBzdHJ1Y3Qgc2N0cF9pbml0X2NodW5rICosCi0jaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90LCB1aW50MzJfdCwK
ICNlbmRpZgogICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCwgdWludDE2X3QpOwogCiBz
dHJ1Y3QgbWJ1ZiAqCiBzY3RwX2FyZXRoZXJlX3VucmVjb2duaXplZF9wYXJhbWV0ZXJzKHN0cnVj
dCBtYnVmICosIGludCwgaW50ICosCi0JCQkJICAgICAgc3RydWN0IHNjdHBfY2h1bmtoZHIgKiwg
aW50ICopOworCQkJCSAgICAgIHN0cnVjdCBzY3RwX2NodW5raGRyICosIGludCAqLCBpbnQgKik7
CiB2b2lkIHNjdHBfcXVldWVfb3BfZXJyKHN0cnVjdCBzY3RwX3RjYiAqLCBzdHJ1Y3QgbWJ1ZiAq
KTsKIAogaW50Ci1zY3RwX3NlbmRfY29va2llX2VjaG8oc3RydWN0IG1idWYgKiwgaW50LCBzdHJ1
Y3Qgc2N0cF90Y2IgKiwKK3NjdHBfc2VuZF9jb29raWVfZWNobyhzdHJ1Y3QgbWJ1ZiAqLCBpbnQs
IGludCwgc3RydWN0IHNjdHBfdGNiICosCiAgICAgc3RydWN0IHNjdHBfbmV0cyAqKTsKIAogdm9p
ZCBzY3RwX3NlbmRfY29va2llX2FjayhzdHJ1Y3Qgc2N0cF90Y2IgKik7CkBAIC0xMjQsNyArMTIw
LDcgQEAgdm9pZCBzY3RwX3NlbmRfc2h1dGRvd25fY29tcGxldGUoc3RydWN0IHNjdHBfdGNiICos
IHN0cnVjdCBzY3RwX25ldHMgKiwgaW50KTsKIAogdm9pZCBzY3RwX3NlbmRfc2h1dGRvd25fY29t
cGxldGUyKHN0cnVjdCBzb2NrYWRkciAqLCBzdHJ1Y3Qgc29ja2FkZHIgKiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2N0cGhkciAqLAotI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90LCB1aW50MzJf
dCwgdWludDE2X3QsCiAjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
aW50MzJfdCwgdWludDE2X3QpOwpAQCAtMTQ4LDExICsxNDQsMTEgQEAgdm9pZCBzY3RwX21vdmVf
Y2h1bmtzX2Zyb21fbmV0KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfbmV0cyAq
bmV0KTsKIAkJCQkJc2l6ZW9mKHN0cnVjdCBzY3RwX2lkYXRhX2NodW5rKSA6IFwKIAkJCQkJc2l6
ZW9mKHN0cnVjdCBzY3RwX2RhdGFfY2h1bmspKQogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
JiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIGludAogc2N0cF9vdXRwdXQoc3RydWN0IHNjdHBf
aW5wY2IgKiwgc3RydWN0IG1idWYgKiwgc3RydWN0IHNvY2thZGRyICosCiAgICAgc3RydWN0IG1i
dWYgKiwgc3RydWN0IHRocmVhZCAqLCBpbnQpOwotI2VsaWYgZGVmaW5lZChfX1dpbmRvd3NfXykK
KyNlbGlmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogc2N0cF9v
dXRwdXQoc3RydWN0IHNjdHBfaW5wY2IgKiwgc3RydWN0IG1idWYgKiwgc3RydWN0IHNvY2thZGRy
ICosCiAgICAgc3RydWN0IG1idWYgKiwgUEtUSFJFQUQsIGludCk7CiAjZWxzZQpAQCAtMTYxLDMw
ICsxNTcsMTUgQEAgc2N0cF9vdXRwdXQoc3RydWN0IHNjdHBfaW5wY2IgKiwgc3RydWN0IG1idWYg
Kiwgc3RydWN0IHNvY2thZGRyICosCiAjZW5kaWYKIGludAogc2N0cF9vdXRwdXQoc3RydWN0IHNj
dHBfaW5wY2IgKiwKLSNpZiBkZWZpbmVkKF9fUGFuZGFfXykKLSAgICBwYWtoYW5kbGVfdHlwZSwK
LSNlbHNlCiAgICAgc3RydWN0IG1idWYgKiwKLSNlbmRpZgogICAgIHN0cnVjdCBzb2NrYWRkciAq
LAotI2lmIGRlZmluZWQoX19QYW5kYV9fKQotICAgIHBha2hhbmRsZV90eXBlLAotI2Vsc2UKICAg
ICBzdHJ1Y3QgbWJ1ZiAqLAotI2VuZGlmCiAgICAgc3RydWN0IHByb2MgKiwgaW50KTsKICNlbmRp
ZgogCi12b2lkIHNjdHBfY2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiICosIHN0cnVjdCBz
Y3RwX3RjYiAqLCBpbnQsIGludAotI2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQo
U0NUUF9TT19MT0NLX1RFU1RJTkcpCi0gICAgU0NUUF9VTlVTRUQKLSNlbmRpZgotICAgICk7Ci12
b2lkIHNjdHBfc2VuZF9hYm9ydF90Y2Ioc3RydWN0IHNjdHBfdGNiICosIHN0cnVjdCBtYnVmICos
IGludAotI2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoU0NUUF9TT19MT0NLX1RF
U1RJTkcpCi0gICAgU0NUUF9VTlVTRUQKLSNlbmRpZgotICAgICk7Cit2b2lkIHNjdHBfY2h1bmtf
b3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiICosIHN0cnVjdCBzY3RwX3RjYiAqLCBpbnQsIGludCk7
CisKK3ZvaWQgc2N0cF9zZW5kX2Fib3J0X3RjYihzdHJ1Y3Qgc2N0cF90Y2IgKiwgc3RydWN0IG1i
dWYgKiwgaW50KTsKIAogdm9pZCBzZW5kX2ZvcndhcmRfdHNuKHN0cnVjdCBzY3RwX3RjYiAqLCBz
dHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqKTsKIApAQCAtMTk0LDcgKzE3NSw2IEBAIHZvaWQgc2N0
cF9zZW5kX2hiKHN0cnVjdCBzY3RwX3RjYiAqLCBzdHJ1Y3Qgc2N0cF9uZXRzICosIGludCk7CiAK
IHZvaWQgc2N0cF9zZW5kX2Vjbl9lY2hvKHN0cnVjdCBzY3RwX3RjYiAqLCBzdHJ1Y3Qgc2N0cF9u
ZXRzICosIHVpbnQzMl90KTsKIAotCiB2b2lkCiBzY3RwX3NlbmRfcGFja2V0X2Ryb3BwZWQoc3Ry
dWN0IHNjdHBfdGNiICosIHN0cnVjdCBzY3RwX25ldHMgKiwgc3RydWN0IG1idWYgKiwKICAgICBp
bnQsIGludCwgaW50KTsKQEAgLTIyNSwxNCArMjA1LDE0IEBAIHNjdHBfc2VuZF9zdHJfcmVzZXRf
cmVxKHN0cnVjdCBzY3RwX3RjYiAqLCB1aW50MTZfdCAsIHVpbnQxNl90ICosCiB2b2lkCiBzY3Rw
X3NlbmRfYWJvcnQoc3RydWN0IG1idWYgKiwgaW50LCBzdHJ1Y3Qgc29ja2FkZHIgKiwgc3RydWN0
IHNvY2thZGRyICosCiAgICAgICAgICAgICAgICAgc3RydWN0IHNjdHBoZHIgKiwgdWludDMyX3Qs
IHN0cnVjdCBtYnVmICosCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogICAgICAgICAgICAgICAgIHVp
bnQ4X3QsIHVpbnQzMl90LCB1aW50MTZfdCwKICNlbmRpZgogICAgICAgICAgICAgICAgIHVpbnQz
Ml90LCB1aW50MTZfdCk7CiAKIHZvaWQgc2N0cF9zZW5kX29wZXJyX3RvKHN0cnVjdCBzb2NrYWRk
ciAqLCBzdHJ1Y3Qgc29ja2FkZHIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBz
Y3RwaGRyICosIHVpbnQzMl90LCBzdHJ1Y3QgbWJ1ZiAqLAotI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QsIHVpbnQzMl90LCB1aW50MTZfdCwKICNl
bmRpZgogICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QsIHVpbnQxNl90KTsKQEAgLTI0
NCwyMCArMjI0LDE1IEBAIGludAogc2N0cF9zb3NlbmQoc3RydWN0IHNvY2tldCAqc28sCiAgICAg
c3RydWN0IHNvY2thZGRyICphZGRyLAogICAgIHN0cnVjdCB1aW8gKnVpbywKLSNpZmRlZiBfX1Bh
bmRhX18KLSAgICBwYWtoYW5kbGVfdHlwZSB0b3AsCi0gICAgcGFraGFuZGxlX3R5cGUgY29udHJv
bCwKLSNlbHNlCiAgICAgc3RydWN0IG1idWYgKnRvcCwKICAgICBzdHJ1Y3QgbWJ1ZiAqY29udHJv
bCwKLSNlbmRpZgotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fUGFuZGFfXykK
KyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICAgICBp
bnQgZmxhZ3MKICNlbHNlCiAgICAgaW50IGZsYWdzLAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
ICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAgICAgc3RydWN0IHRocmVhZCAqcAotI2VsaWYg
ZGVmaW5lZChfX1dpbmRvd3NfXykKKyNlbGlmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogICAgIFBLVEhSRUFEIHAKICNlbHNlCiAjaWYgZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfcGNi
LmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9wY2IuYwpvbGQgbW9kZSAxMDA2
NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDdmMzkzYmMwZTcwMi4uZjAyOTQ4NTg3MDI2Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3BjYi5jCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Vz
cnNjdHBsaWIvbmV0aW5ldC9zY3RwX3BjYi5jCkBAIC0zMiwxMyArMzIsMTMgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZkZWYgX19GcmVlQlNEX18KKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1
ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3Nj
dHBfcGNiLmMgMzU1OTMxIDIwMTktMTItMjAgMTU6MjU6MDhaIHR1ZXhlbiAkIik7CitfX0ZCU0RJ
RCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9wY2IuYyAzNjQyNjggMjAyMC0wOC0x
NiAxMTo1MDozN1ogdHVleGVuICQiKTsKICNlbmRpZgogCiAjaW5jbHVkZSA8bmV0aW5ldC9zY3Rw
X29zLmg+Ci0jaWZkZWYgX19GcmVlQlNEX18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPHN5cy9wcm9jLmg+CiAjZW5kaWYKICNp
bmNsdWRlIDxuZXRpbmV0L3NjdHBfdmFyLmg+CkBAIC01MSwxMSArNTEsOCBAQCBfX0ZCU0RJRCgi
JEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9wY2IuYyAzNTU5MzEgMjAxOS0xMi0yMCAx
NToyNTowOFogdHVleAogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9vdXRwdXQuaD4KICNpbmNsdWRl
IDxuZXRpbmV0L3NjdHBfdGltZXIuaD4KICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfYnNkX2FkZHIu
aD4KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSAxMDAw
MDAwCi0jaW5jbHVkZSA8bmV0aW5ldC9zY3RwX2R0cmFjZV9kZWZpbmUuaD4KLSNlbmRpZgogI2lm
IGRlZmluZWQoSU5FVCkgfHwgZGVmaW5lZChJTkVUNikKLSNpZiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9vc19XaW5kb3dzKQorI2lmICFkZWZpbmVkKF9XSU4zMikKICNpbmNsdWRlIDxuZXRpbmV0L3Vk
cC5oPgogI2VuZGlmCiAjZW5kaWYKQEAgLTY2LDI4ICs2MywyMyBAQCBfX0ZCU0RJRCgiJEZyZWVC
U0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9wY2IuYyAzNTU5MzEgMjAxOS0xMi0yMCAxNToyNTow
OFogdHVleAogI2luY2x1ZGUgPG5ldGluZXQ2L2lwNl92YXIuaD4KICNlbmRpZgogI2VuZGlmCi0j
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPHN5cy9zY2hlZC5oPgogI2luY2x1ZGUgPHN5
cy9zbXAuaD4KICNpbmNsdWRlIDxzeXMvdW5pc3RkLmg+CiAjZW5kaWYKICNpZiBkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8dXNlcl9zb2NrZXR2YXIuaD4KLSNpZiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2luY2x1ZGUgPHVzZXJfYXRvbWljLmg+CisjaWYgIWRl
ZmluZWQoX1dJTjMyKQogI2luY2x1ZGUgPG5ldGRiLmg+CiAjZW5kaWYKICNlbmRpZgogCi0jaWYg
ZGVmaW5lZChfX0FQUExFX18pCi0jZGVmaW5lIEFQUExFX0ZJTEVfTk8gNAotI2VuZGlmCi0KLSNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDEwMDAKLVZO
RVRfREVGSU5FKHN0cnVjdCBzY3RwX2Jhc2VfaW5mbywgc3lzdGVtX2Jhc2VfaW5mbyk7Ci0jZWxz
ZQorI2lmICFkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBz
dHJ1Y3Qgc2N0cF9iYXNlX2luZm8gc3lzdGVtX2Jhc2VfaW5mbzsKLSNlbmRpZgogCisjZW5kaWYK
IC8qIEZJWDogd2UgZG9uJ3QgaGFuZGxlIG11bHRpcGxlIGxpbmsgbG9jYWwgc2NvcGVzICovCiAv
KiAic2NvcGVsZXNzIiByZXBsYWNlbWVudCBJTjZfQVJFX0FERFJfRVFVQUwgKi8KICNpZmRlZiBJ
TkVUNgpAQCAtOTUsNyArODcsNyBAQCBpbnQKIFNDVFA2X0FSRV9BRERSX0VRVUFMKHN0cnVjdCBz
b2NrYWRkcl9pbjYgKmEsIHN0cnVjdCBzb2NrYWRkcl9pbjYgKmIpCiB7CiAjaWZkZWYgU0NUUF9F
TUJFRERFRF9WNl9TQ09QRQotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19B
UFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCXN0cnVjdCBpbjZfYWRkciB0bXBf
YSwgdG1wX2I7CiAKIAl0bXBfYSA9IGEtPnNpbjZfYWRkcjsKQEAgLTI2OCw2ICsyNjAsNyBAQCBz
Y3RwX2ZpbmRfaWZuKHZvaWQgKmlmbiwgdWludDMyX3QgaWZuX2luZGV4KQogCS8qIFdlIGFzc3Vt
ZSB0aGUgbG9jayBpcyBoZWxkIGZvciB0aGUgYWRkcmVzc2VzCiAJICogaWYgdGhhdCdzIHdyb25n
IHByb2JsZW1zIGNvdWxkIG9jY3VyIDotKQogCSAqLworCVNDVFBfSVBJX0FERFJfTE9DS19BU1NF
UlQoKTsKIAloYXNoX2lmbl9oZWFkID0gJlNDVFBfQkFTRV9JTkZPKHZyZl9pZm5faGFzaClbKGlm
bl9pbmRleCAmIFNDVFBfQkFTRV9JTkZPKHZyZl9pZm5faGFzaG1hcmspKV07CiAJTElTVF9GT1JF
QUNIKHNjdHBfaWZucCwgaGFzaF9pZm5faGVhZCwgbmV4dF9idWNrZXQpIHsKIAkJaWYgKHNjdHBf
aWZucC0+aWZuX2luZGV4ID09IGlmbl9pbmRleCkgewpAQCAtMzYzLDE0ICszNTYsMTYgQEAgc2N0
cF9kZWxldGVfaWZuKHN0cnVjdCBzY3RwX2lmbiAqc2N0cF9pZm5wLCBpbnQgaG9sZF9hZGRyX2xv
Y2spCiAJCS8qIE5vdCBpbiB0aGUgbGlzdC4uIHNvcnJ5ICovCiAJCXJldHVybjsKIAl9Ci0JaWYg
KGhvbGRfYWRkcl9sb2NrID09IDApCisJaWYgKGhvbGRfYWRkcl9sb2NrID09IDApIHsKIAkJU0NU
UF9JUElfQUREUl9XTE9DSygpOworCX0gZWxzZSB7CisJCVNDVFBfSVBJX0FERFJfV0xPQ0tfQVNT
RVJUKCk7CisJfQogCUxJU1RfUkVNT1ZFKHNjdHBfaWZucCwgbmV4dF9idWNrZXQpOwogCUxJU1Rf
UkVNT1ZFKHNjdHBfaWZucCwgbmV4dF9pZm4pOwotCVNDVFBfREVSRUdJU1RFUl9JTlRFUkZBQ0Uo
c2N0cF9pZm5wLT5pZm5faW5kZXgsCi0JCQkJICBzY3RwX2lmbnAtPnJlZ2lzdGVyZWRfYWYpOwot
CWlmIChob2xkX2FkZHJfbG9jayA9PSAwKQorCWlmIChob2xkX2FkZHJfbG9jayA9PSAwKSB7CiAJ
CVNDVFBfSVBJX0FERFJfV1VOTE9DSygpOworCX0KIAkvKiBUYWtlIGF3YXkgdGhlIHJlZmVyZW5j
ZSwgYW5kIHBvc3NpYmx5IGZyZWUgaXQgKi8KIAlzY3RwX2ZyZWVfaWZuKHNjdHBfaWZucCk7CiB9
CkBAIC00OTYsNyArNDkxLDYgQEAgc2N0cF9hZGRfaWZhX3RvX2lmbihzdHJ1Y3Qgc2N0cF9pZm4g
KnNjdHBfaWZucCwgc3RydWN0IHNjdHBfaWZhICpzY3RwX2lmYXApCiAJfQogCWlmIChzY3RwX2lm
bnAtPmlmYV9jb3VudCA9PSAxKSB7CiAJCS8qIHJlZ2lzdGVyIHRoZSBuZXcgaW50ZXJmYWNlICov
Ci0JCVNDVFBfUkVHSVNURVJfSU5URVJGQUNFKHNjdHBfaWZucC0+aWZuX2luZGV4LCBpZmFfYWYp
OwogCQlzY3RwX2lmbnAtPnJlZ2lzdGVyZWRfYWYgPSBpZmFfYWY7CiAJfQogfQpAQCAtNTM3LDEz
ICs1MzEsOSBAQCBzY3RwX3JlbW92ZV9pZmFfZnJvbV9pZm4oc3RydWN0IHNjdHBfaWZhICpzY3Rw
X2lmYXApCiAJCQkvKiByZS1yZWdpc3RlciBhZGRyZXNzIGZhbWlseSB0eXBlLCBpZiBuZWVkZWQg
Ki8KIAkJCWlmICgoc2N0cF9pZmFwLT5pZm5fcC0+bnVtX3Y2ID09IDApICYmCiAJCQkgICAgKHNj
dHBfaWZhcC0+aWZuX3AtPnJlZ2lzdGVyZWRfYWYgPT0gQUZfSU5FVDYpKSB7Ci0JCQkJU0NUUF9E
RVJFR0lTVEVSX0lOVEVSRkFDRShzY3RwX2lmYXAtPmlmbl9wLT5pZm5faW5kZXgsIEFGX0lORVQ2
KTsKLQkJCQlTQ1RQX1JFR0lTVEVSX0lOVEVSRkFDRShzY3RwX2lmYXAtPmlmbl9wLT5pZm5faW5k
ZXgsIEFGX0lORVQpOwogCQkJCXNjdHBfaWZhcC0+aWZuX3AtPnJlZ2lzdGVyZWRfYWYgPSBBRl9J
TkVUOwogCQkJfSBlbHNlIGlmICgoc2N0cF9pZmFwLT5pZm5fcC0+bnVtX3Y0ID09IDApICYmCiAJ
CQkJICAgKHNjdHBfaWZhcC0+aWZuX3AtPnJlZ2lzdGVyZWRfYWYgPT0gQUZfSU5FVCkpIHsKLQkJ
CQlTQ1RQX0RFUkVHSVNURVJfSU5URVJGQUNFKHNjdHBfaWZhcC0+aWZuX3AtPmlmbl9pbmRleCwg
QUZfSU5FVCk7Ci0JCQkJU0NUUF9SRUdJU1RFUl9JTlRFUkZBQ0Uoc2N0cF9pZmFwLT5pZm5fcC0+
aWZuX2luZGV4LCBBRl9JTkVUNik7CiAJCQkJc2N0cF9pZmFwLT5pZm5fcC0+cmVnaXN0ZXJlZF9h
ZiA9IEFGX0lORVQ2OwogCQkJfQogCQkJLyogZnJlZSB0aGUgaWZuIHJlZmNvdW50ICovCkBAIC01
NjEsOCArNTUxLDggQEAgc2N0cF9hZGRfYWRkcl90b192cmYodWludDMyX3QgdnJmX2lkLCB2b2lk
ICppZm4sIHVpbnQzMl90IGlmbl9pbmRleCwKIAkJICAgICBpbnQgZHluYW1pY19hZGQpCiB7CiAJ
c3RydWN0IHNjdHBfdnJmICp2cmY7Ci0Jc3RydWN0IHNjdHBfaWZuICpzY3RwX2lmbnAgPSBOVUxM
OwotCXN0cnVjdCBzY3RwX2lmYSAqc2N0cF9pZmFwID0gTlVMTDsKKwlzdHJ1Y3Qgc2N0cF9pZm4g
KnNjdHBfaWZucCwgKm5ld19zY3RwX2lmbnA7CisJc3RydWN0IHNjdHBfaWZhICpzY3RwX2lmYXAs
ICpuZXdfc2N0cF9pZmFwOwogCXN0cnVjdCBzY3RwX2lmYWxpc3QgKmhhc2hfYWRkcl9oZWFkOwog
CXN0cnVjdCBzY3RwX2lmbmxpc3QgKmhhc2hfaWZuX2hlYWQ7CiAJdWludDMyX3QgaGFzaF9vZl9h
ZGRyOwpAQCAtNTcyLDYgKzU2MiwyMyBAQCBzY3RwX2FkZF9hZGRyX3RvX3ZyZih1aW50MzJfdCB2
cmZfaWQsIHZvaWQgKmlmbiwgdWludDMyX3QgaWZuX2luZGV4LAogCVNDVFBEQkcoU0NUUF9ERUJV
R19QQ0I0LCAidnJmX2lkIDB4JXg6IGFkZGluZyBhZGRyZXNzOiAiLCB2cmZfaWQpOwogCVNDVFBE
QkdfQUREUihTQ1RQX0RFQlVHX1BDQjQsIGFkZHIpOwogI2VuZGlmCisJU0NUUF9NQUxMT0MobmV3
X3NjdHBfaWZucCwgc3RydWN0IHNjdHBfaWZuICosCisJICAgICAgICAgICAgc2l6ZW9mKHN0cnVj
dCBzY3RwX2lmbiksIFNDVFBfTV9JRk4pOworCWlmIChuZXdfc2N0cF9pZm5wID09IE5VTEwpIHsK
KyNpZmRlZiBJTlZBUklBTlRTCisJCXBhbmljKCJObyBtZW1vcnkgZm9yIElGTiIpOworI2VuZGlm
CisJCXJldHVybiAoTlVMTCk7CisJfQorCVNDVFBfTUFMTE9DKG5ld19zY3RwX2lmYXAsIHN0cnVj
dCBzY3RwX2lmYSAqLCBzaXplb2Yoc3RydWN0IHNjdHBfaWZhKSwgU0NUUF9NX0lGQSk7CisJaWYg
KG5ld19zY3RwX2lmYXAgPT0gTlVMTCkgeworI2lmZGVmIElOVkFSSUFOVFMKKwkJcGFuaWMoIk5v
IG1lbW9yeSBmb3IgSUZBIik7CisjZW5kaWYKKwkJU0NUUF9GUkVFKG5ld19zY3RwX2lmbnAsIFND
VFBfTV9JRk4pOworCQlyZXR1cm4gKE5VTEwpOworCX0KKwogCVNDVFBfSVBJX0FERFJfV0xPQ0so
KTsKIAlzY3RwX2lmbnAgPSBzY3RwX2ZpbmRfaWZuKGlmbiwgaWZuX2luZGV4KTsKIAlpZiAoc2N0
cF9pZm5wKSB7CkBAIC01ODIsNiArNTg5LDggQEAgc2N0cF9hZGRfYWRkcl90b192cmYodWludDMy
X3QgdnJmX2lkLCB2b2lkICppZm4sIHVpbnQzMl90IGlmbl9pbmRleCwKIAkJCXZyZiA9IHNjdHBf
YWxsb2NhdGVfdnJmKHZyZl9pZCk7CiAJCQlpZiAodnJmID09IE5VTEwpIHsKIAkJCQlTQ1RQX0lQ
SV9BRERSX1dVTkxPQ0soKTsKKwkJCQlTQ1RQX0ZSRUUobmV3X3NjdHBfaWZucCwgU0NUUF9NX0lG
Tik7CisJCQkJU0NUUF9GUkVFKG5ld19zY3RwX2lmYXAsIFNDVFBfTV9JRkEpOwogCQkJCXJldHVy
biAoTlVMTCk7CiAJCQl9CiAJCX0KQEAgLTU5MCwxNSArNTk5LDggQEAgc2N0cF9hZGRfYWRkcl90
b192cmYodWludDMyX3QgdnJmX2lkLCB2b2lkICppZm4sIHVpbnQzMl90IGlmbl9pbmRleCwKIAkJ
LyogYnVpbGQgb25lIGFuZCBhZGQgaXQsIGNhbid0IGhvbGQgbG9jawogCQkgKiB1bnRpbCBhZnRl
ciBtYWxsb2MgZG9uZSB0aG91Z2guCiAJCSAqLwotCQlTQ1RQX0lQSV9BRERSX1dVTkxPQ0soKTsK
LQkJU0NUUF9NQUxMT0Moc2N0cF9pZm5wLCBzdHJ1Y3Qgc2N0cF9pZm4gKiwKLQkJCSAgICBzaXpl
b2Yoc3RydWN0IHNjdHBfaWZuKSwgU0NUUF9NX0lGTik7Ci0JCWlmIChzY3RwX2lmbnAgPT0gTlVM
TCkgewotI2lmZGVmIElOVkFSSUFOVFMKLQkJCXBhbmljKCJObyBtZW1vcnkgZm9yIElGTiIpOwot
I2VuZGlmCi0JCQlyZXR1cm4gKE5VTEwpOwotCQl9CisJCXNjdHBfaWZucCA9IG5ld19zY3RwX2lm
bnA7CisJCW5ld19zY3RwX2lmbnAgPSBOVUxMOwogCQltZW1zZXQoc2N0cF9pZm5wLCAwLCBzaXpl
b2Yoc3RydWN0IHNjdHBfaWZuKSk7CiAJCXNjdHBfaWZucC0+aWZuX2luZGV4ID0gaWZuX2luZGV4
OwogCQlzY3RwX2lmbnAtPmlmbl9wID0gaWZuOwpAQCAtNjA4LDEzICs2MTAsMTIgQEAgc2N0cF9h
ZGRfYWRkcl90b192cmYodWludDMyX3QgdnJmX2lkLCB2b2lkICppZm4sIHVpbnQzMl90IGlmbl9p
bmRleCwKIAkJYXRvbWljX2FkZF9pbnQoJnZyZi0+cmVmY291bnQsIDEpOwogCQlzY3RwX2lmbnAt
Pmlmbl9tdHUgPSBTQ1RQX0dBVEhFUl9NVFVfRlJPTV9JRk5fSU5GTyhpZm4sIGlmbl9pbmRleCwg
YWRkci0+c2FfZmFtaWx5KTsKIAkJaWYgKGlmX25hbWUgIT0gTlVMTCkgewotCQkJc25wcmludGYo
c2N0cF9pZm5wLT5pZm5fbmFtZSwgU0NUUF9JRk5BTVNJWiwgIiVzIiwgaWZfbmFtZSk7CisJCQlT
Q1RQX1NOUFJJTlRGKHNjdHBfaWZucC0+aWZuX25hbWUsIFNDVFBfSUZOQU1TSVosICIlcyIsIGlm
X25hbWUpOwogCQl9IGVsc2UgewotCQkJc25wcmludGYoc2N0cF9pZm5wLT5pZm5fbmFtZSwgU0NU
UF9JRk5BTVNJWiwgIiVzIiwgInVua25vd24iKTsKKwkJCVNDVFBfU05QUklOVEYoc2N0cF9pZm5w
LT5pZm5fbmFtZSwgU0NUUF9JRk5BTVNJWiwgIiVzIiwgInVua25vd24iKTsKIAkJfQogCQloYXNo
X2lmbl9oZWFkID0gJlNDVFBfQkFTRV9JTkZPKHZyZl9pZm5faGFzaClbKGlmbl9pbmRleCAmIFND
VFBfQkFTRV9JTkZPKHZyZl9pZm5faGFzaG1hcmspKV07CiAJCUxJU1RfSU5JVCgmc2N0cF9pZm5w
LT5pZmFsaXN0KTsKLQkJU0NUUF9JUElfQUREUl9XTE9DSygpOwogCQlMSVNUX0lOU0VSVF9IRUFE
KGhhc2hfaWZuX2hlYWQsIHNjdHBfaWZucCwgbmV4dF9idWNrZXQpOwogCQlMSVNUX0lOU0VSVF9I
RUFEKCZ2cmYtPmlmbmxpc3QsIHNjdHBfaWZucCwgbmV4dF9pZm4pOwogCQlhdG9taWNfYWRkX2lu
dCgmU0NUUF9CQVNFX0lORk8oaXBpX2NvdW50X2lmbnMpLCAxKTsKQEAgLTY0MSw2ICs2NDIsMTAg
QEAgc2N0cF9hZGRfYWRkcl90b192cmYodWludDMyX3QgdnJmX2lkLCB2b2lkICppZm4sIHVpbnQz
Ml90IGlmbl9pbmRleCwKIAkJCX0KIAkJZXhpdF9zdGFnZV9sZWZ0OgogCQkJU0NUUF9JUElfQURE
Ul9XVU5MT0NLKCk7CisJCQlpZiAobmV3X3NjdHBfaWZucCAhPSBOVUxMKSB7CisJCQkJU0NUUF9G
UkVFKG5ld19zY3RwX2lmbnAsIFNDVFBfTV9JRk4pOworCQkJfQorCQkJU0NUUF9GUkVFKG5ld19z
Y3RwX2lmYXAsIFNDVFBfTV9JRkEpOwogCQkJcmV0dXJuIChzY3RwX2lmYXApOwogCQl9IGVsc2Ug
ewogCQkJaWYgKHNjdHBfaWZhcC0+aWZuX3ApIHsKQEAgLTY2NywxNCArNjcyLDcgQEAgc2N0cF9h
ZGRfYWRkcl90b192cmYodWludDMyX3QgdnJmX2lkLCB2b2lkICppZm4sIHVpbnQzMl90IGlmbl9p
bmRleCwKIAkJCWdvdG8gZXhpdF9zdGFnZV9sZWZ0OwogCQl9CiAJfQotCVNDVFBfSVBJX0FERFJf
V1VOTE9DSygpOwotCVNDVFBfTUFMTE9DKHNjdHBfaWZhcCwgc3RydWN0IHNjdHBfaWZhICosIHNp
emVvZihzdHJ1Y3Qgc2N0cF9pZmEpLCBTQ1RQX01fSUZBKTsKLQlpZiAoc2N0cF9pZmFwID09IE5V
TEwpIHsKLSNpZmRlZiBJTlZBUklBTlRTCi0JCXBhbmljKCJObyBtZW1vcnkgZm9yIElGQSIpOwot
I2VuZGlmCi0JCXJldHVybiAoTlVMTCk7Ci0JfQorCXNjdHBfaWZhcCA9IG5ld19zY3RwX2lmYXA7
CiAJbWVtc2V0KHNjdHBfaWZhcCwgMCwgc2l6ZW9mKHN0cnVjdCBzY3RwX2lmYSkpOwogCXNjdHBf
aWZhcC0+aWZuX3AgPSBzY3RwX2lmbnA7CiAJYXRvbWljX2FkZF9pbnQoJnNjdHBfaWZucC0+cmVm
Y291bnQsIDEpOwpAQCAtNzYzLDcgKzc2MSw2IEBAIHNjdHBfYWRkX2FkZHJfdG9fdnJmKHVpbnQz
Ml90IHZyZl9pZCwgdm9pZCAqaWZuLCB1aW50MzJfdCBpZm5faW5kZXgsCiAJICAgIChzY3RwX2lm
YXAtPnNyY19pc19sb29wID09IDApKSB7CiAJCXNjdHBfaWZhcC0+c3JjX2lzX2dsb2IgPSAxOwog
CX0KLQlTQ1RQX0lQSV9BRERSX1dMT0NLKCk7CiAJaGFzaF9hZGRyX2hlYWQgPSAmdnJmLT52cmZf
YWRkcl9oYXNoWyhoYXNoX29mX2FkZHIgJiB2cmYtPnZyZl9hZGRyX2hhc2htYXJrKV07CiAJTElT
VF9JTlNFUlRfSEVBRChoYXNoX2FkZHJfaGVhZCwgc2N0cF9pZmFwLCBuZXh0X2J1Y2tldCk7CiAJ
c2N0cF9pZmFwLT5yZWZjb3VudCA9IDE7CkBAIC03NzIsMTAgKzc2OSwxMyBAQCBzY3RwX2FkZF9h
ZGRyX3RvX3ZyZih1aW50MzJfdCB2cmZfaWQsIHZvaWQgKmlmbiwgdWludDMyX3QgaWZuX2luZGV4
LAogCXZyZi0+dG90YWxfaWZhX2NvdW50Kys7CiAJYXRvbWljX2FkZF9pbnQoJlNDVFBfQkFTRV9J
TkZPKGlwaV9jb3VudF9pZmFzKSwgMSk7CiAJaWYgKG5ld19pZm5fYWYpIHsKLQkJU0NUUF9SRUdJ
U1RFUl9JTlRFUkZBQ0UoaWZuX2luZGV4LCBuZXdfaWZuX2FmKTsKIAkJc2N0cF9pZm5wLT5yZWdp
c3RlcmVkX2FmID0gbmV3X2lmbl9hZjsKIAl9CiAJU0NUUF9JUElfQUREUl9XVU5MT0NLKCk7CisJ
aWYgKG5ld19zY3RwX2lmbnAgIT0gTlVMTCkgeworCQlTQ1RQX0ZSRUUobmV3X3NjdHBfaWZucCwg
U0NUUF9NX0lGTik7CisJfQorCiAJaWYgKGR5bmFtaWNfYWRkKSB7CiAJCS8qIEJ1bXAgdXAgdGhl
IHJlZmNvdW50IHNvIHRoYXQgd2hlbiB0aGUgdGltZXIKIAkJICogY29tcGxldGVzIGl0IHdpbGwg
ZHJvcCBiYWNrIGRvd24uCkBAIC04NDAsOCArODQwLDcgQEAgc2N0cF9kZWxfYWRkcl9mcm9tX3Zy
Zih1aW50MzJfdCB2cmZfaWQsIHN0cnVjdCBzb2NrYWRkciAqYWRkciwKIAkJCWludCB2YWxpZCA9
IDA7CiAJCQkvKi0KIAkJCSAqIFRoZSBuYW1lIGhhcyBwcmlvcml0eSBvdmVyIHRoZSBpZm5faW5k
ZXgKLQkJCSAqIGlmIGl0cyBnaXZlbi4gV2UgZG8gdGhpcyBlc3BlY2lhbGx5IGZvcgotCQkJICog
cGFuZGEgd2hvIG1pZ2h0IHJlY3ljbGUgaW5kZXhlcyBmYXN0LgorCQkJICogaWYgaXRzIGdpdmVu
LgogCQkJICovCiAJCQlpZiAoaWZfbmFtZSkgewogCQkJCWlmIChzdHJuY21wKGlmX25hbWUsIHNj
dHBfaWZhcC0+aWZuX3AtPmlmbl9uYW1lLCBTQ1RQX0lGTkFNU0laKSA9PSAwKSB7CkBAIC04NjYs
NyArODY1LDcgQEAgc2N0cF9kZWxfYWRkcl9mcm9tX3ZyZih1aW50MzJfdCB2cmZfaWQsIHN0cnVj
dCBzb2NrYWRkciAqYWRkciwKIAkJfQogCQlTQ1RQREJHKFNDVFBfREVCVUdfUENCNCwgIkRlbGV0
aW5nIGlmYSAlcFxuIiwgKHZvaWQgKilzY3RwX2lmYXApOwogCQlzY3RwX2lmYXAtPmxvY2FsaWZh
X2ZsYWdzICY9IFNDVFBfQUREUl9WQUxJRDsKLSAgICAgICAgICAgICAgICAvKgorCQkvKgogCQkg
KiBXZSBkb24ndCBzZXQgdGhlIGZsYWcuIFRoaXMgbWVhbnMgdGhhdCB0aGUgc3RydWN0dXJlIHdp
bGwKIAkJICogaGFuZyBhcm91bmQgaW4gRVAncyB0aGF0IGhhdmUgYm91bmQgc3BlY2lmaWMgdG8g
aXQgdW50aWwKIAkJICogdGhleSBjbG9zZS4gVGhpcyBnaXZlcyB1cyBUQ1AgbGlrZSBiZWhhdmlv
ciBpZiBzb21lb25lCkBAIC05OTIsNyArOTkxLDcgQEAgc2N0cF9kb2VzX3N0Y2Jfb3duX3RoaXNf
YWRkcihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzb2NrYWRkciAqdG8pCiAJCQkJCQkg
ICAgSU40X0lTUFJJVkFURV9BRERSRVNTKCZzaW4tPnNpbl9hZGRyKSkgewogCQkJCQkJCWNvbnRp
bnVlOwogCQkJCQkJfQotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQkJCWlmIChwcmlzb25fY2hl
Y2tfaXA0KHN0Y2ItPnNjdHBfZXAtPmlwX2lucC5pbnAuaW5wX2NyZWQsCiAJCQkJCQkgICAgICAg
ICAgICAgICAgICAgICAmc2luLT5zaW5fYWRkcikgIT0gMCkgewogCQkJCQkJCWNvbnRpbnVlOwpA
QCAtMTAxNCw3ICsxMDEzLDcgQEAgc2N0cF9kb2VzX3N0Y2Jfb3duX3RoaXNfYWRkcihzdHJ1Y3Qg
c2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzb2NrYWRkciAqdG8pCiAjZW5kaWYKIAkJCQkJCXNpbjYg
PSAmc2N0cF9pZmEtPmFkZHJlc3Muc2luNjsKIAkJCQkJCXJzaW42ID0gKHN0cnVjdCBzb2NrYWRk
cl9pbjYgKil0bzsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJCQlpZiAocHJpc29uX2NoZWNr
X2lwNihzdGNiLT5zY3RwX2VwLT5pcF9pbnAuaW5wLmlucF9jcmVkLAogCQkJCQkJICAgICAgICAg
ICAgICAgICAgICAgJnNpbjYtPnNpbjZfYWRkcikgIT0gMCkgewogCQkJCQkJCWNvbnRpbnVlOwpA
QCAtMTIxOSw3ICsxMjE4LDcgQEAgc2N0cF90Y2Jfc3BlY2lhbF9sb2NhdGUoc3RydWN0IHNjdHBf
aW5wY2IgKippbnBfcCwgc3RydWN0IHNvY2thZGRyICpmcm9tLAogCQkJU0NUUF9JTlBfUlVOTE9D
SyhpbnApOwogCQkJY29udGludWU7CiAJCX0KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCXN3aXRj
aCAodG8tPnNhX2ZhbWlseSkgewogI2lmZGVmIElORVQKIAkJY2FzZSBBRl9JTkVUOgpAQCAtMTk2
MCw3ICsxOTU5LDcgQEAgc2N0cF9lbmRwb2ludF9wcm9iZShzdHJ1Y3Qgc29ja2FkZHIgKm5hbSwg
c3RydWN0IHNjdHBwY2JoZWFkICpoZWFkLAogCQkJCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CiAJ
CQkJCWNvbnRpbnVlOwogCQkJCX0KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJaWYgKHByaXNv
bl9jaGVja19pcDQoaW5wLT5pcF9pbnAuaW5wLmlucF9jcmVkLAogCQkJCSAgICAgICAgICAgICAg
ICAgICAgICZzaW4tPnNpbl9hZGRyKSAhPSAwKSB7CiAJCQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5w
KTsKQEAgLTE5NzYsNyArMTk3NSw3IEBAIHNjdHBfZW5kcG9pbnRfcHJvYmUoc3RydWN0IHNvY2th
ZGRyICpuYW0sIHN0cnVjdCBzY3RwcGNiaGVhZCAqaGVhZCwKIAkJCQkJU0NUUF9JTlBfUlVOTE9D
SyhpbnApOwogCQkJCQljb250aW51ZTsKIAkJCQl9Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykK
KyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJ
CWlmIChwcmlzb25fY2hlY2tfaXA2KGlucC0+aXBfaW5wLmlucC5pbnBfY3JlZCwKIAkJCQkgICAg
ICAgICAgICAgICAgICAgICAmc2luNi0+c2luNl9hZGRyKSAhPSAwKSB7CiAJCQkJCVNDVFBfSU5Q
X1JVTkxPQ0soaW5wKTsKQEAgLTIwOTMsNyArMjA5Miw3IEBAIHNjdHBfZW5kcG9pbnRfcHJvYmUo
c3RydWN0IHNvY2thZGRyICpuYW0sIHN0cnVjdCBzY3RwcGNiaGVhZCAqaGVhZCwKIAkJCQlzd2l0
Y2ggKG5hbS0+c2FfZmFtaWx5KSB7CiAjaWZkZWYgSU5FVAogCQkJCWNhc2UgQUZfSU5FVDoKLSNp
ZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKIAkJCQkJaWYgKHNpbiA9PSBOVUxMKSB7CiAJCQkJCQkvKiBUU05IICov
CiAJCQkJCQlicmVhazsKQEAgLTI3OTksMTcgKzI3OTgsMTcgQEAgc2N0cF9pbnBjYl9hbGxvYyhz
dHJ1Y3Qgc29ja2V0ICpzbywgdWludDMyX3QgdnJmX2lkKQogCW1lbXNldChpbnAsIDAsIHNpemVv
ZigqaW5wKSk7CiAKIAkvKiBidW1wIGdlbmVyYXRpb25zICovCi0jaWYgZGVmaW5lZChfX0FQUExF
X18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJ
aW5wLT5pcF9pbnAuaW5wLmlucF9zdGF0ZSA9IElOUENCX1NUQVRFX0lOVVNFOwogI2VuZGlmCiAJ
Lyogc2V0dXAgc29ja2V0IHBvaW50ZXJzICovCiAJaW5wLT5zY3RwX3NvY2tldCA9IHNvOwogCWlu
cC0+aXBfaW5wLmlucC5pbnBfc29ja2V0ID0gc287Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykK
KyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWlu
cC0+aXBfaW5wLmlucC5pbnBfY3JlZCA9IGNyaG9sZChzby0+c29fY3JlZCk7CiAjZW5kaWYKICNp
ZmRlZiBJTkVUNgotI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pICYmICFkZWZpbmVkKF9fV2lu
ZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pICYmICFkZWZpbmVkKF9XSU4zMikK
IAlpZiAoSU5QX1NPQ0tBRihzbykgPT0gQUZfSU5FVDYpIHsKIAkJaWYgKE1PRFVMRV9HTE9CQUwo
aXA2X2F1dG9fZmxvd2xhYmVsKSkgewogCQkJaW5wLT5pcF9pbnAuaW5wLmlucF9mbGFncyB8PSBJ
TjZQX0FVVE9GTE9XTEFCRUw7CkBAIC0yODM0LDcgKzI4MzMsNyBAQCBzY3RwX2lucGNiX2FsbG9j
KHN0cnVjdCBzb2NrZXQgKnNvLCB1aW50MzJfdCB2cmZfaWQpCiAJaW5wLT5wa3Rkcm9wX3N1cHBv
cnRlZCA9ICh1aW50OF90KVNDVFBfQkFTRV9TWVNDVEwoc2N0cF9wa3Rkcm9wX2VuYWJsZSk7CiAJ
aW5wLT5pZGF0YV9zdXBwb3J0ZWQgPSAwOwogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWlucC0+
ZmlibnVtID0gc28tPnNvX2ZpYm51bTsKICNlbHNlCiAJaW5wLT5maWJudW0gPSAwOwpAQCAtMjg0
OCw3ICsyODQ3LDcgQEAgc2N0cF9pbnBjYl9hbGxvYyhzdHJ1Y3Qgc29ja2V0ICpzbywgdWludDMy
X3QgdnJmX2lkKQogCS8qIGluaXQgdGhlIHNtYWxsIGhhc2ggdGFibGUgd2UgdXNlIHRvIHRyYWNr
IGFzb2NpZCA8LT4gdGNiICovCiAJaW5wLT5zY3RwX2Fzb2NpZGhhc2ggPSBTQ1RQX0hBU0hfSU5J
VChTQ1RQX1NUQUNLX1ZUQUdfSEFTSF9TSVpFLCAmaW5wLT5oYXNoYXNvY2lkbWFyayk7CiAJaWYg
KGlucC0+c2N0cF9hc29jaWRoYXNoID09IE5VTEwpIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJ
CWNyZnJlZShpbnAtPmlwX2lucC5pbnAuaW5wX2NyZWQpOwogI2VuZGlmCiAJCVNDVFBfWk9ORV9G
UkVFKFNDVFBfQkFTRV9JTkZPKGlwaV96b25lX2VwKSwgaW5wKTsKQEAgLTI4NjEsMTIgKzI4NjAs
NyBAQCBzY3RwX2lucGNiX2FsbG9jKHN0cnVjdCBzb2NrZXQgKnNvLCB1aW50MzJfdCB2cmZfaWQp
CiAKIAlzby0+c29fcGNiID0gKGNhZGRyX3QpaW5wOwogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPCA4MDMwMDAKLQlpZiAoKFNDVFBfU09fVFlQRShzbykg
PT0gU09DS19ER1JBTSkgfHwKLQkgICAgKFNDVFBfU09fVFlQRShzbykgPT0gU09DS19TRVFQQUNL
RVQpKSB7Ci0jZWxzZQogCWlmIChTQ1RQX1NPX1RZUEUoc28pID09IFNPQ0tfU0VRUEFDS0VUKSB7
Ci0jZW5kaWYKIAkJLyogVURQIHN0eWxlIHNvY2tldCAqLwogCQlpbnAtPnNjdHBfZmxhZ3MgPSAo
U0NUUF9QQ0JfRkxBR1NfVURQVFlQRSB8CiAJCSAgICBTQ1RQX1BDQl9GTEFHU19VTkJPVU5EKTsK
QEAgLTI4ODAsMTQgKzI4NzQsNiBAQCBzY3RwX2lucGNiX2FsbG9jKHN0cnVjdCBzb2NrZXQgKnNv
LCB1aW50MzJfdCB2cmZfaWQpCiAJCVNPQ0tfTE9DSyhzbyk7CiAJCVNDVFBfQ0xFQVJfU09fTkJJ
Tyhzbyk7CiAJCVNPQ0tfVU5MT0NLKHNvKTsKLSNpZiBkZWZpbmVkKF9fUGFuZGFfXykKLQl9IGVs
c2UgaWYgKFNDVFBfU09fVFlQRShzbykgPT0gU09DS19GQVNUU0VRUEFDS0VUKSB7Ci0JCWlucC0+
c2N0cF9mbGFncyA9IChTQ1RQX1BDQl9GTEFHU19VRFBUWVBFIHwKLQkJICAgIFNDVFBfUENCX0ZM
QUdTX1VOQk9VTkQpOwotCX0gZWxzZSBpZiAoU0NUUF9TT19UWVBFKHNvKSA9PSBTT0NLX0ZBU1RT
VFJFQU0pIHsKLQkJaW5wLT5zY3RwX2ZsYWdzID0gKFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUgfAot
CQkgICAgU0NUUF9QQ0JfRkxBR1NfVU5CT1VORCk7Ci0jZW5kaWYKIAl9IGVsc2UgewogCQkvKgog
CQkgKiB1bnN1cHBvcnRlZCBzb2NrZXQgdHlwZSAoUkFXLCBldGMpLSBpbiBjYXNlIHdlIG1pc3Nl
ZCBpdApAQCAtMjg5NSw3ICsyODgxLDcgQEAgc2N0cF9pbnBjYl9hbGxvYyhzdHJ1Y3Qgc29ja2V0
ICpzbywgdWludDMyX3QgdnJmX2lkKQogCQkgKi8KIAkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAs
IE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1BDQiwgRU9QTk9UU1VQUCk7CiAJCXNvLT5zb19w
Y2IgPSBOVUxMOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJY3JmcmVlKGlucC0+aXBfaW5wLmlu
cC5pbnBfY3JlZCk7CiAjZW5kaWYKIAkJU0NUUF9aT05FX0ZSRUUoU0NUUF9CQVNFX0lORk8oaXBp
X3pvbmVfZXApLCBpbnApOwpAQCAtMjkxNyw3ICsyOTAzLDcgQEAgc2N0cF9pbnBjYl9hbGxvYyhz
dHJ1Y3Qgc29ja2V0ICpzbywgdWludDMyX3QgdnJmX2lkKQogCQlTQ1RQX1BSSU5URigiT3V0IG9m
IFNDVFAtSU5QQ0ItPmhhc2hpbml0IC0gbm8gcmVzb3VyY2VzXG4iKTsKIAkJU0NUUF9MVFJBQ0Vf
RVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1BDQiwgRU5PQlVGUyk7CiAJ
CXNvLT5zb19wY2IgPSBOVUxMOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJY3JmcmVlKGlucC0+
aXBfaW5wLmlucC5pbnBfY3JlZCk7CiAjZW5kaWYKIAkJU0NUUF9aT05FX0ZSRUUoU0NUUF9CQVNF
X0lORk8oaXBpX3pvbmVfZXApLCBpbnApOwpAQCAtMjkzMSw3ICsyOTE3LDcgQEAgc2N0cF9pbnBj
Yl9hbGxvYyhzdHJ1Y3Qgc29ja2V0ICpzbywgdWludDMyX3QgdnJmX2lkKQogCQlTQ1RQX0xUUkFD
RV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfUENCLCBFTk9CVUZTKTsK
IAkJc28tPnNvX3BjYiA9IE5VTEw7CiAJCVNDVFBfSEFTSF9GUkVFKGlucC0+c2N0cF90Y2JoYXNo
LCBpbnAtPnNjdHBfaGFzaG1hcmspOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJY3JmcmVlKGlu
cC0+aXBfaW5wLmlucC5pbnBfY3JlZCk7CiAjZW5kaWYKIAkJU0NUUF9aT05FX0ZSRUUoU0NUUF9C
QVNFX0lORk8oaXBpX3pvbmVfZXApLCBpbnApOwpAQCAtMjk0Miw3ICsyOTI4LDcgQEAgc2N0cF9p
bnBjYl9hbGxvYyhzdHJ1Y3Qgc29ja2V0ICpzbywgdWludDMyX3QgdnJmX2lkKQogI2VuZGlmCiAJ
aW5wLT5kZWZfdnJmX2lkID0gdnJmX2lkOwogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYg
ZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaWYgZGVmaW5l
ZChBUFBMRV9MRU9QQVJEKSB8fCBkZWZpbmVkKEFQUExFX1NOT1dMRU9QQVJEKQogCWlucC0+aXBf
aW5wLmlucC5pbnBjYl9tdHggPSBsY2tfbXR4X2FsbG9jX2luaXQoU0NUUF9CQVNFX0lORk8oc2N0
YmluZm8pLm10eF9ncnAsIFNDVFBfQkFTRV9JTkZPKHNjdGJpbmZvKS5tdHhfYXR0cik7CiAJaWYg
KGlucC0+aXBfaW5wLmlucC5pbnBjYl9tdHggPT0gTlVMTCkgewpAQCAtMjk2NSw3ICsyOTUxLDcg
QEAgc2N0cF9pbnBjYl9hbGxvYyhzdHJ1Y3Qgc29ja2V0ICpzbywgdWludDMyX3QgdnJmX2lkKQog
I2VuZGlmCiAJU0NUUF9JTlBfSU5GT19XTE9DSygpOwogCVNDVFBfSU5QX0xPQ0tfSU5JVChpbnAp
OwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlJTlBfTE9DS19JTklUKCZpbnAtPmlwX2lucC5pbnAs
ICJpbnAiLCAic2N0cGlucCIpOwogI2VuZGlmCiAJU0NUUF9JTlBfUkVBRF9JTklUKGlucCk7CkBA
IC0yOTc1LDcgKzI5NjEsNyBAQCBzY3RwX2lucGNiX2FsbG9jKHN0cnVjdCBzb2NrZXQgKnNvLCB1
aW50MzJfdCB2cmZfaWQpCiAKIAkvKiBhZGQgaXQgdG8gdGhlIGluZm8gYXJlYSAqLwogCUxJU1Rf
SU5TRVJUX0hFQUQoJlNDVFBfQkFTRV9JTkZPKGxpc3RoZWFkKSwgaW5wLCBzY3RwX2xpc3QpOwot
I2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogCWlucC0+aXBfaW5wLmlucC5pbnBfcGNiaW5mbyA9ICZTQ1RQX0JB
U0VfSU5GTyhzY3RiaW5mbyk7CiAjaWYgZGVmaW5lZChBUFBMRV9MRU9QQVJEKSB8fCBkZWZpbmVk
KEFQUExFX1NOT1dMRU9QQVJEKSB8fCBkZWZpbmVkKEFQUExFX0xJT04pIHx8IGRlZmluZWQoQVBQ
TEVfTU9VTlRBSU5MSU9OKQogCUxJU1RfSU5TRVJUX0hFQUQoU0NUUF9CQVNFX0lORk8oc2N0Ymlu
Zm8pLmxpc3RoZWFkLCAmaW5wLT5pcF9pbnAuaW5wLCBpbnBfbGlzdCk7CkBAIC0zMDAyLDEzICsy
OTg4LDEzIEBAIHNjdHBfaW5wY2JfYWxsb2Moc3RydWN0IHNvY2tldCAqc28sIHVpbnQzMl90IHZy
Zl9pZCkKIAltID0gJmlucC0+c2N0cF9lcDsKIAogCS8qIHNldHVwIHRoZSBiYXNlIHRpbWVvdXQg
aW5mb3JtYXRpb24gKi8KLQltLT5zY3RwX3RpbWVvdXR0aWNrc1tTQ1RQX1RJTUVSX1NFTkRdID0g
U0VDX1RPX1RJQ0tTKFNDVFBfU0VORF9TRUMpOwkvKiBuZWVkZWQgPyAqLwotCW0tPnNjdHBfdGlt
ZW91dHRpY2tzW1NDVFBfVElNRVJfSU5JVF0gPSBTRUNfVE9fVElDS1MoU0NUUF9JTklUX1NFQyk7
CS8qIG5lZWRlZCA/ICovCi0JbS0+c2N0cF90aW1lb3V0dGlja3NbU0NUUF9USU1FUl9SRUNWXSA9
IE1TRUNfVE9fVElDS1MoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2RlbGF5ZWRfc2Fja190aW1lX2Rl
ZmF1bHQpKTsKLQltLT5zY3RwX3RpbWVvdXR0aWNrc1tTQ1RQX1RJTUVSX0hFQVJUQkVBVF0gPSBN
U0VDX1RPX1RJQ0tTKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9oZWFydGJlYXRfaW50ZXJ2YWxfZGVm
YXVsdCkpOwotCW0tPnNjdHBfdGltZW91dHRpY2tzW1NDVFBfVElNRVJfUE1UVV0gPSBTRUNfVE9f
VElDS1MoU0NUUF9CQVNFX1NZU0NUTChzY3RwX3BtdHVfcmFpc2VfdGltZV9kZWZhdWx0KSk7Ci0J
bS0+c2N0cF90aW1lb3V0dGlja3NbU0NUUF9USU1FUl9NQVhTSFVURE9XTl0gPSBTRUNfVE9fVElD
S1MoU0NUUF9CQVNFX1NZU0NUTChzY3RwX3NodXRkb3duX2d1YXJkX3RpbWVfZGVmYXVsdCkpOwot
CW0tPnNjdHBfdGltZW91dHRpY2tzW1NDVFBfVElNRVJfU0lHTkFUVVJFXSA9IFNFQ19UT19USUNL
UyhTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfc2VjcmV0X2xpZmV0aW1lX2RlZmF1bHQpKTsKKwltLT5z
Y3RwX3RpbWVvdXR0aWNrc1tTQ1RQX1RJTUVSX1NFTkRdID0gc2N0cF9zZWNzX3RvX3RpY2tzKFND
VFBfU0VORF9TRUMpOwkvKiBuZWVkZWQgPyAqLworCW0tPnNjdHBfdGltZW91dHRpY2tzW1NDVFBf
VElNRVJfSU5JVF0gPSBzY3RwX3NlY3NfdG9fdGlja3MoU0NUUF9JTklUX1NFQyk7CS8qIG5lZWRl
ZCA/ICovCisJbS0+c2N0cF90aW1lb3V0dGlja3NbU0NUUF9USU1FUl9SRUNWXSA9IHNjdHBfbXNl
Y3NfdG9fdGlja3MoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2RlbGF5ZWRfc2Fja190aW1lX2RlZmF1
bHQpKTsKKwltLT5zY3RwX3RpbWVvdXR0aWNrc1tTQ1RQX1RJTUVSX0hFQVJUQkVBVF0gPSBzY3Rw
X21zZWNzX3RvX3RpY2tzKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9oZWFydGJlYXRfaW50ZXJ2YWxf
ZGVmYXVsdCkpOworCW0tPnNjdHBfdGltZW91dHRpY2tzW1NDVFBfVElNRVJfUE1UVV0gPSBzY3Rw
X3NlY3NfdG9fdGlja3MoU0NUUF9CQVNFX1NZU0NUTChzY3RwX3BtdHVfcmFpc2VfdGltZV9kZWZh
dWx0KSk7CisJbS0+c2N0cF90aW1lb3V0dGlja3NbU0NUUF9USU1FUl9NQVhTSFVURE9XTl0gPSBz
Y3RwX3NlY3NfdG9fdGlja3MoU0NUUF9CQVNFX1NZU0NUTChzY3RwX3NodXRkb3duX2d1YXJkX3Rp
bWVfZGVmYXVsdCkpOworCW0tPnNjdHBfdGltZW91dHRpY2tzW1NDVFBfVElNRVJfU0lHTkFUVVJF
XSA9IHNjdHBfc2Vjc190b190aWNrcyhTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfc2VjcmV0X2xpZmV0
aW1lX2RlZmF1bHQpKTsKIAkvKiBhbGwgbWF4L21pbiBtYXggYXJlIGluIG1zICovCiAJbS0+c2N0
cF9tYXhydG8gPSBTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfcnRvX21heF9kZWZhdWx0KTsKIAltLT5z
Y3RwX21pbnJ0byA9IFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9ydG9fbWluX2RlZmF1bHQpOwpAQCAt
MzA1Niw3ICszMDQyLDcgQEAgc2N0cF9pbnBjYl9hbGxvYyhzdHJ1Y3Qgc29ja2V0ICpzbywgdWlu
dDMyX3QgdnJmX2lkKQogCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX05FV0NPT0tJ
RSwgaW5wLCBOVUxMLCBOVUxMKTsKIAogCS8qIEhvdyBsb25nIGlzIGEgY29va2llIGdvb2QgZm9y
ID8gKi8KLQltLT5kZWZfY29va2llX2xpZmUgPSBNU0VDX1RPX1RJQ0tTKFNDVFBfQkFTRV9TWVND
VEwoc2N0cF92YWxpZF9jb29raWVfbGlmZV9kZWZhdWx0KSk7CisJbS0+ZGVmX2Nvb2tpZV9saWZl
ID0gc2N0cF9tc2Vjc190b190aWNrcyhTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfdmFsaWRfY29va2ll
X2xpZmVfZGVmYXVsdCkpOwogCS8qCiAJICogSW5pdGlhbGl6ZSBhdXRoZW50aWNhdGlvbiBwYXJh
bWV0ZXJzCiAJICovCkBAIC0zMTgwLDI0ICszMTY2LDU0IEBAIHNjdHBfbW92ZV9wY2JfYW5kX2Fz
c29jKHN0cnVjdCBzY3RwX2lucGNiICpvbGRfaW5wLCBzdHJ1Y3Qgc2N0cF9pbnBjYiAqbmV3X2lu
cCwKIAkJCX0KIAkJfQogCX0KLQkvKiBOb3cgYW55IHJ1bm5pbmcgdGltZXJzIG5lZWQgdG8gYmUg
YWRqdXN0ZWQKLQkgKiBzaW5jZSB3ZSByZWFsbHkgZG9uJ3QgY2FyZSBpZiB0aGV5IGFyZSBydW5u
aW5nCi0JICogb3Igbm90IGp1c3QgYmxhc3QgaW4gdGhlIG5ld19pbnAgaW50byBhbGwgb2YKLQkg
KiB0aGVtLgotCSAqLwotCi0Jc3RjYi0+YXNvYy5kYWNrX3RpbWVyLmVwID0gKHZvaWQgKiluZXdf
aW5wOwotCXN0Y2ItPmFzb2MuYXNjb25mX3RpbWVyLmVwID0gKHZvaWQgKiluZXdfaW5wOwotCXN0
Y2ItPmFzb2Muc3RycmVzZXRfdGltZXIuZXAgPSAodm9pZCAqKW5ld19pbnA7Ci0Jc3RjYi0+YXNv
Yy5zaHV0X2d1YXJkX3RpbWVyLmVwID0gKHZvaWQgKiluZXdfaW5wOwotCXN0Y2ItPmFzb2MuYXV0
b2Nsb3NlX3RpbWVyLmVwID0gKHZvaWQgKiluZXdfaW5wOwotCXN0Y2ItPmFzb2MuZGVsYXllZF9l
dmVudF90aW1lci5lcCA9ICh2b2lkICopbmV3X2lucDsKLQlzdGNiLT5hc29jLmRlbGV0ZV9wcmlt
X3RpbWVyLmVwID0gKHZvaWQgKiluZXdfaW5wOworCS8qIE5vdyBhbnkgcnVubmluZyB0aW1lcnMg
bmVlZCB0byBiZSBhZGp1c3RlZC4gKi8KKwlpZiAoc3RjYi0+YXNvYy5kYWNrX3RpbWVyLmVwID09
IG9sZF9pbnApIHsKKwkJU0NUUF9JTlBfREVDUl9SRUYob2xkX2lucCk7CisJCXN0Y2ItPmFzb2Mu
ZGFja190aW1lci5lcCA9IG5ld19pbnA7CisJCVNDVFBfSU5QX0lOQ1JfUkVGKG5ld19pbnApOwor
CX0KKwlpZiAoc3RjYi0+YXNvYy5hc2NvbmZfdGltZXIuZXAgPT0gb2xkX2lucCkgeworCQlTQ1RQ
X0lOUF9ERUNSX1JFRihvbGRfaW5wKTsKKwkJc3RjYi0+YXNvYy5hc2NvbmZfdGltZXIuZXAgPSBu
ZXdfaW5wOworCQlTQ1RQX0lOUF9JTkNSX1JFRihuZXdfaW5wKTsKKwl9CisJaWYgKHN0Y2ItPmFz
b2Muc3RycmVzZXRfdGltZXIuZXAgPT0gb2xkX2lucCkgeworCQlTQ1RQX0lOUF9ERUNSX1JFRihv
bGRfaW5wKTsKKwkJc3RjYi0+YXNvYy5zdHJyZXNldF90aW1lci5lcCA9IG5ld19pbnA7CisJCVND
VFBfSU5QX0lOQ1JfUkVGKG5ld19pbnApOworCX0KKwlpZiAoc3RjYi0+YXNvYy5zaHV0X2d1YXJk
X3RpbWVyLmVwID09IG9sZF9pbnApIHsKKwkJU0NUUF9JTlBfREVDUl9SRUYob2xkX2lucCk7CisJ
CXN0Y2ItPmFzb2Muc2h1dF9ndWFyZF90aW1lci5lcCA9IG5ld19pbnA7CisJCVNDVFBfSU5QX0lO
Q1JfUkVGKG5ld19pbnApOworCX0KKwlpZiAoc3RjYi0+YXNvYy5hdXRvY2xvc2VfdGltZXIuZXAg
PT0gb2xkX2lucCkgeworCQlTQ1RQX0lOUF9ERUNSX1JFRihvbGRfaW5wKTsKKwkJc3RjYi0+YXNv
Yy5hdXRvY2xvc2VfdGltZXIuZXAgPSBuZXdfaW5wOworCQlTQ1RQX0lOUF9JTkNSX1JFRihuZXdf
aW5wKTsKKwl9CisJaWYgKHN0Y2ItPmFzb2MuZGVsZXRlX3ByaW1fdGltZXIuZXAgPT0gb2xkX2lu
cCkgeworCQlTQ1RQX0lOUF9ERUNSX1JFRihvbGRfaW5wKTsKKwkJc3RjYi0+YXNvYy5kZWxldGVf
cHJpbV90aW1lci5lcCA9IG5ld19pbnA7CisJCVNDVFBfSU5QX0lOQ1JfUkVGKG5ld19pbnApOwor
CX0KIAkvKiBub3cgd2hhdCBhYm91dCB0aGUgbmV0cz8gKi8KIAlUQUlMUV9GT1JFQUNIKG5ldCwg
JnN0Y2ItPmFzb2MubmV0cywgc2N0cF9uZXh0KSB7Ci0JCW5ldC0+cG10dV90aW1lci5lcCA9ICh2
b2lkICopbmV3X2lucDsKLQkJbmV0LT5oYl90aW1lci5lcCA9ICh2b2lkICopbmV3X2lucDsKLQkJ
bmV0LT5yeHRfdGltZXIuZXAgPSAodm9pZCAqKW5ld19pbnA7CisJCWlmIChuZXQtPnBtdHVfdGlt
ZXIuZXAgPT0gb2xkX2lucCkgeworCQkJU0NUUF9JTlBfREVDUl9SRUYob2xkX2lucCk7CisJCQlu
ZXQtPnBtdHVfdGltZXIuZXAgPSBuZXdfaW5wOworCQkJU0NUUF9JTlBfSU5DUl9SRUYobmV3X2lu
cCk7CisJCX0KKwkJaWYgKG5ldC0+aGJfdGltZXIuZXAgPT0gb2xkX2lucCkgeworCQkJU0NUUF9J
TlBfREVDUl9SRUYob2xkX2lucCk7CisJCQluZXQtPmhiX3RpbWVyLmVwID0gbmV3X2lucDsKKwkJ
CVNDVFBfSU5QX0lOQ1JfUkVGKG5ld19pbnApOworCQl9CisJCWlmIChuZXQtPnJ4dF90aW1lci5l
cCA9PSBvbGRfaW5wKSB7CisJCQlTQ1RQX0lOUF9ERUNSX1JFRihvbGRfaW5wKTsKKwkJCW5ldC0+
cnh0X3RpbWVyLmVwID0gbmV3X2lucDsKKwkJCVNDVFBfSU5QX0lOQ1JfUkVGKG5ld19pbnApOwor
CQl9CiAJfQogCVNDVFBfSU5QX1dVTkxPQ0sobmV3X2lucCk7CiAJU0NUUF9JTlBfV1VOTE9DSyhv
bGRfaW5wKTsKQEAgLTMyNTQsMTAgKzMyNzAsMTAgQEAgZXh0ZXJuIHZvaWQgaW42X3NpbjZfMl9z
aW4oc3RydWN0IHNvY2thZGRyX2luICosIHN0cnVjdCBzb2NrYWRkcl9pbjYgKnNpbjYpOwogCiAv
KiBzY3RwX2lmYXAgaXMgdXNlZCB0byBieXBhc3Mgbm9ybWFsIGxvY2FsIGFkZHJlc3MgdmFsaWRh
dGlvbiBjaGVja3MgKi8KIGludAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJT
RF92ZXJzaW9uID49IDUwMDAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiBzY3RwX2lucGNiX2JpbmQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVj
dCBzb2NrYWRkciAqYWRkciwKICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2N0cF9pZmEgKnNjdHBf
aWZhcCwgc3RydWN0IHRocmVhZCAqcCkKLSNlbGlmIGRlZmluZWQoX19XaW5kb3dzX18pCisjZWxp
ZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIHNjdHBfaW5wY2Jf
YmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRyLAogICAgICAgICAg
ICAgICAgIHN0cnVjdCBzY3RwX2lmYSAqc2N0cF9pZmFwLCBQS1RIUkVBRCBwKQogI2Vsc2UKQEAg
LTMyNjgsNyArMzI4NCw3IEBAIHNjdHBfaW5wY2JfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3Ry
dWN0IHNvY2thZGRyICphZGRyLAogCS8qIGJpbmQgYSBlcCB0byBhIHNvY2tldCBhZGRyZXNzICov
CiAJc3RydWN0IHNjdHBwY2JoZWFkICpoZWFkOwogCXN0cnVjdCBzY3RwX2lucGNiICppbnAsICpp
bnBfdG1wOwotI2lmIGRlZmluZWQoSU5FVCkgfHwgKGRlZmluZWQoSU5FVDYpICYmIGRlZmluZWQo
X19BUFBMRV9fKSkgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18p
CisjaWYgKGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSkgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzdHJ1Y3QgaW5wY2IgKmlwX2lucDsKICNlbmRpZgogCWlu
dCBwb3J0X3JldXNlX2FjdGl2ZSA9IDA7CkBAIC0zMjgzLDcgKzMyOTksNyBAQCBzY3RwX2lucGNi
X2JpbmQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqYWRkciwKIAlscG9ydCA9
IDA7CiAJYmluZGFsbCA9IDE7CiAJaW5wID0gKHN0cnVjdCBzY3RwX2lucGNiICopc28tPnNvX3Bj
YjsKLSNpZiBkZWZpbmVkKElORVQpIHx8IChkZWZpbmVkKElORVQ2KSAmJiBkZWZpbmVkKF9fQVBQ
TEVfXykpIHx8IGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKQorI2lm
IChkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykpICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiAJaXBfaW5wID0gKHN0cnVjdCBpbnBjYiAqKXNvLT5zb19wY2I7CiAj
ZW5kaWYKICNpZmRlZiBTQ1RQX0RFQlVHCkBAIC0zMjk5LDcgKzMzMTUsNyBAQCBzY3RwX2lucGNi
X2JpbmQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqYWRkciwKIAkJU0NUUF9M
VFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1BDQiwgRUlOVkFM
KTsKIAkJcmV0dXJuIChFSU5WQUwpOwogCX0KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBf
X0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmZGVmIElOVkFSSUFOVFMKIAlpZiAocCA9PSBOVUxM
KQogCQlwYW5pYygibnVsbCBwcm9jL3RocmVhZCIpOwpAQCAtMzMxMyw3ICszMzI5LDcgQEAgc2N0
cF9pbnBjYl9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsCiAJ
CQlzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbjsKIAogCQkJLyogSVBWNl9WNk9OTFkgc29ja2V0PyAq
LwotCQkJaWYgKFNDVFBfSVBWNl9WNk9OTFkoaXBfaW5wKSkgeworCQkJaWYgKFNDVFBfSVBWNl9W
Nk9OTFkoaW5wKSkgewogCQkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBT
Q1RQX0ZST01fU0NUUF9QQ0IsIEVJTlZBTCk7CiAJCQkJcmV0dXJuIChFSU5WQUwpOwogCQkJfQpA
QCAtMzMyNiw3ICszMzQyLDcgQEAgc2N0cF9pbnBjYl9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvLCBz
dHJ1Y3Qgc29ja2FkZHIgKmFkZHIsCiAKIAkJCXNpbiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilh
ZGRyOwogCQkJbHBvcnQgPSBzaW4tPnNpbl9wb3J0OwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
ICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMDAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkvKgogCQkJICogRm9yIExPT1BCQUNLIHRo
ZSBwcmlzb25fbG9jYWxfaXA0KCkgY2FsbCB3aWxsIHRyYW5zbXV0ZSB0aGUgaXAgYWRkcmVzcwog
CQkJICogdG8gdGhlIHByb3BlciB2YWx1ZS4KQEAgLTMzNTcsNyArMzM3Myw3IEBAIHNjdHBfaW5w
Y2JfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRyLAogCQkJfQog
I2VuZGlmCiAJCQlscG9ydCA9IHNpbjYtPnNpbjZfcG9ydDsKLSNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDAwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJLyoKIAkJCSAqIEZvciBMT09QQkFD
SyB0aGUgcHJpc29uX2xvY2FsX2lwNigpIGNhbGwgd2lsbCB0cmFuc211dGUgdGhlIGlwdjYgYWRk
cmVzcwogCQkJICogdG8gdGhlIHByb3BlciB2YWx1ZS4KQEAgLTMzNzcsNyArMzM5Myw3IEBAIHNj
dHBfaW5wY2JfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRyLAog
CQkJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBf
UENCLCBFSU5WQUwpOwogCQkJCQlyZXR1cm4gKEVJTlZBTCk7CiAJCQkJfQotI2VsaWYgZGVmaW5l
ZChfX0FQUExFX18pCisjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKICNpZiBkZWZpbmVkKEFQUExFX0xFT1BBUkQpIHx8IGRlZmluZWQoQVBQTEVfU05P
V0xFT1BBUkQpCiAJCQkJaWYgKGluNl9lbWJlZHNjb3BlKCZzaW42LT5zaW42X2FkZHIsIHNpbjYs
IGlwX2lucCwgTlVMTCkgIT0gMCkgewogI2Vsc2UKQEAgLTMzODYsNyArMzQwMiw3IEBAIHNjdHBf
aW5wY2JfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRyLAogCQkJ
CQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfUENC
LCBFSU5WQUwpOwogCQkJCQlyZXR1cm4gKEVJTlZBTCk7CiAJCQkJfQotI2VsaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykKKyNlbGlmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAJCQkJZXJyb3IgPSBzY29wZTZfY2hlY2tfaWQoc2luNiwgTU9EVUxFX0dMT0JB
TChpcDZfdXNlX2RlZnpvbmUpKTsKIAkJCQlpZiAoZXJyb3IgIT0gMCkgewogCQkJCQlTQ1RQX0xU
UkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfUENCLCBlcnJvcik7
CkBAIC0zNDQ0LDE4ICszNDYwLDEyIEBAIHNjdHBfaW5wY2JfYmluZChzdHJ1Y3Qgc29ja2V0ICpz
bywgc3RydWN0IHNvY2thZGRyICphZGRyLAogCQkgKiBhbHJlYWR5IGhhcyB0aGlzIG9uZSBib3Vu
ZC4KIAkJICovCiAJCS8qIGdvdCB0byBiZSByb290IHRvIGdldCBhdCBsb3cgcG9ydHMgKi8KLSNp
ZiAhZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhKGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKSkKIAkJaWYgKG50b2hzKGxwb3J0KSA8IElQUE9SVF9SRVNFUlZFRCkg
ewogCQkJaWYgKChwICE9IE5VTEwpICYmICgoZXJyb3IgPQotI2lmZGVmIF9fRnJlZUJTRF9fCi0j
aWYgX19GcmVlQlNEX3ZlcnNpb24gPiA2MDIwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCSAgcHJpdl9jaGVjayhwLCBQUklWX05FVElO
RVRfUkVTRVJWRURQT1JUKQotI2VsaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMDAwCi0JCQkJ
ICBzdXNlcl9jcmVkKHAtPnRkX3VjcmVkLCAwKQotI2Vsc2UKLQkJCQkgIHN1c2VyKHApCi0jZW5k
aWYKLSNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQorI2VsaWYgZGVmaW5lZChfX0FQUExFX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJICBzdXNlcihwLT5wX3VjcmVkLCAmcC0+cF9h
Y2ZsYWcpCiAjZWxpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pIC8qIG11c3QgYmUgdHJ1ZSB0byB1
c2UgcmF3IHNvY2tldCAqLwogCQkJCSAgMQpAQCAtMzQ2OCwxNyArMzQ3OCw4IEBAIHNjdHBfaW5w
Y2JfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRyLAogCQkJCVND
VFBfSU5QX0lORk9fV1VOTE9DSygpOwogCQkJCXJldHVybiAoZXJyb3IpOwogCQkJfQotI2lmIGRl
ZmluZWQoX19QYW5kYV9fKQotCQkJaWYgKCFTQ1RQX0lTX1BSSVZJTEVER0VEKHNvKSkgewotCQkJ
CVNDVFBfSU5QX0RFQ1JfUkVGKGlucCk7Ci0JCQkJU0NUUF9JTlBfV1VOTE9DSyhpbnApOwotCQkJ
CVNDVFBfSU5QX0lORk9fV1VOTE9DSygpOwotCQkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBO
VUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9QQ0IsIEVBQ0NFUyk7Ci0JCQkJcmV0dXJuIChFQUND
RVMpOwotCQkJfQotI2VuZGlmCiAJCX0KLSNlbmRpZiAvKiBfX1dpbmRvd3NfXyAqLworI2VuZGlm
CiAJCVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsKIAkJaWYgKGJpbmRhbGwpIHsKICNpZmRlZiBTQ1RQ
X01WUkYKQEAgLTM1NjEsMjYgKzM1NjIsMjAgQEAgc2N0cF9pbnBjYl9iaW5kKHN0cnVjdCBzb2Nr
ZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsCiAJCXVpbnQxNl90IGNvdW50OwogCQlpbnQg
ZG9uZTsKIAotI2lmIGRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgZGVmaW5lZChfV0lOMzIpICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCWZpcnN0ID0gMTsKIAkJbGFzdCA9IDB4ZmZmZjsK
ICNlbHNlCiAjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkvKiBUT0RPIGVuc3VyZSB1aWQg
aXMgMCwgZXRjLi4uICovCi0jZWxpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9f
QVBQTEVfXykKKyNlbGlmIChkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVf
XykpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCWlmIChpcF9pbnAtPmlucF9mbGFncyAm
IElOUF9ISUdIUE9SVCkgewogCQkJZmlyc3QgPSBNT0RVTEVfR0xPQkFMKGlwcG9ydF9oaWZpcnN0
YXV0byk7CiAJCQlsYXN0ID0gTU9EVUxFX0dMT0JBTChpcHBvcnRfaGlsYXN0YXV0byk7CiAJCX0g
ZWxzZSBpZiAoaXBfaW5wLT5pbnBfZmxhZ3MgJiBJTlBfTE9XUE9SVCkgewogCQkJaWYgKHAgJiYg
KGVycm9yID0KLSNpZmRlZiBfX0ZyZWVCU0RfXwotI2lmIF9fRnJlZUJTRF92ZXJzaW9uID4gNjAy
MDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKIAkJCQkgIHByaXZfY2hlY2socCwgUFJJVl9O
RVRJTkVUX1JFU0VSVkVEUE9SVCkKLSNlbGlmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAwMAot
CQkJCSAgc3VzZXJfY3JlZChwLT50ZF91Y3JlZCwgMCkKLSNlbHNlCi0JCQkJICBzdXNlcihwKQot
I2VuZGlmCiAjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKIAkJCQkgIHN1c2VyKHAtPnBfdWNyZWQs
ICZwLT5wX2FjZmxhZykKICNlbHNlCkBAIC0zNTk5LDEwICszNTk0LDEwIEBAIHNjdHBfaW5wY2Jf
YmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRyLAogI2VuZGlmCiAJ
CQlmaXJzdCA9IE1PRFVMRV9HTE9CQUwoaXBwb3J0X2ZpcnN0YXV0byk7CiAJCQlsYXN0ID0gTU9E
VUxFX0dMT0JBTChpcHBvcnRfbGFzdGF1dG8pOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8
IGRlZmluZWQoX19BUFBMRV9fKQorI2lmIChkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVk
KF9fQVBQTEVfXykpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCX0KICNlbmRpZgotI2Vu
ZGlmIC8qIF9fV2luZG93c19fICovCisjZW5kaWYKIAkJaWYgKGZpcnN0ID4gbGFzdCkgewogCQkJ
dWludDE2X3QgdGVtcDsKIApAQCAtMzc0MSw3ICszNzM2LDcgQEAgc2N0cF9pbnBjYl9iaW5kKHN0
cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsCiAJCX0gZWxzZSB7CiAJCQkv
KiBOb3RlIGZvciBCU0Qgd2UgaGl0IGhlcmUgYWx3YXlzIG90aGVyCiAJCQkgKiBPL1MncyB3aWxs
IHBhc3MgdGhpbmdzIGluIHZpYSB0aGUKLQkJCSAqIHNjdHBfaWZhcCBhcmd1bWVudCAoUGFuZGEp
LgorCQkJICogc2N0cF9pZmFwIGFyZ3VtZW50LgogCQkJICovCiAJCQlpZmEgPSBzY3RwX2ZpbmRf
aWZhX2J5X2FkZHIoJnN0b3JlLnNhLAogCQkJCQkJICAgIHZyZl9pZCwgU0NUUF9BRERSX05PVF9M
T0NLRUQpOwpAQCAtMzgxNCw3ICszODA5LDcgQEAgc2N0cF9pdGVyYXRvcl9pbnBfYmVpbmdfZnJl
ZWQoc3RydWN0IHNjdHBfaW5wY2IgKmlucCkKIAkgKiBsb2NrIG9uIHRoZSBpbnBfaW5mbyBzdHVm
Zi4KIAkgKi8KIAlpdCA9IHNjdHBfaXRfY3RsLmN1cl9pdDsKLSNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDEwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWlmIChpdCAmJiAoaXQtPnZuICE9IGN1
cnZuZXQpKSB7CiAJCS8qIEl0cyBub3QgbG9va2luZyBhdCBvdXIgVk5FVCAqLwogCQlyZXR1cm47
CkBAIC0zODQ1LDcgKzM4NDAsNyBAQCBzY3RwX2l0ZXJhdG9yX2lucF9iZWluZ19mcmVlZChzdHJ1
Y3Qgc2N0cF9pbnBjYiAqaW5wKQogCSAqLwogCVNDVFBfSVBJX0lURVJBVE9SX1dRX0xPQ0soKTsK
IAlUQUlMUV9GT1JFQUNIX1NBRkUoaXQsICZzY3RwX2l0X2N0bC5pdGVyYXRvcmhlYWQsIHNjdHBf
bnh0X2l0ciwgbml0KSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3Zl
cnNpb24gPj0gODAxMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKIAkJaWYgKGl0LT52biAhPSBjdXJ2bmV0KSB7CiAJCQljb250aW51ZTsKIAkJ
fQpAQCAtMzg5MSw4ICszODg2LDggQEAgc2N0cF9pbnBjYl9mcmVlKHN0cnVjdCBzY3RwX2lucGNi
ICppbnAsIGludCBpbW1lZGlhdGUsIGludCBmcm9tKQogCXN0cnVjdCBzb2NrZXQgKnNvOwogCWlu
dCBiZWluZ19yZWZlZCA9IDA7CiAJc3RydWN0IHNjdHBfcXVldWVkX3RvX3JlYWQgKnNxLCAqbnNx
OwotI2lmICFkZWZpbmVkKF9fUGFuZGFfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKLSNp
ZiAhZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgX19GcmVlQlNEX3ZlcnNpb24gPCA1MDAwMDAKKyNp
ZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmICFkZWZpbmVkKF9fRnJlZUJTRF9fKQogCXNj
dHBfcnRlbnRyeV90ICpydDsKICNlbmRpZgogI2VuZGlmCkBAIC0zOTAwLDcgKzM4OTUsNyBAQCBz
Y3RwX2lucGNiX2ZyZWUoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgaW50IGltbWVkaWF0ZSwgaW50
IGZyb20pCiAJc2N0cF9zaGFyZWRrZXlfdCAqc2hhcmVkX2tleSwgKm5zaGFyZWRfa2V5OwogCiAK
LSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKIAlzY3RwX2xvY2tfYXNzZXJ0KFNDVFBfSU5QX1NPKGlucCkpOwog
I2VuZGlmCiAjaWZkZWYgU0NUUF9MT0dfQ0xPU0lORwpAQCAtMzkzMyw3ICszOTI4LDcgQEAgc2N0
cF9pbnBjYl9mcmVlKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIGludCBpbW1lZGlhdGUsIGludCBm
cm9tKQogCX0KIAkvKiBGaXJzdCB0aW1lIHRocm91Z2ggd2UgaGF2ZSB0aGUgc29ja2V0IGxvY2ss
IGFmdGVyIHRoYXQgbm8gbW9yZS4gKi8KIAlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBF
X05FV0NPT0tJRSwgaW5wLCBOVUxMLCBOVUxMLAotCQkJU0NUUF9GUk9NX1NDVFBfUENCICsgU0NU
UF9MT0NfMSk7CisJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX1BDQiArIFNDVFBfTE9D
XzEpOwogCiAJaWYgKGlucC0+Y29udHJvbCkgewogCQlzY3RwX21fZnJlZW0oaW5wLT5jb250cm9s
KTsKQEAgLTM5NjEsMTQgKzM5NTYsMTQgQEAgc2N0cF9pbnBjYl9mcmVlKHN0cnVjdCBzY3RwX2lu
cGNiICppbnAsIGludCBpbW1lZGlhdGUsIGludCBmcm9tKQogCQkJCQkgKiB0aW1lciBvbiB0aGUg
YXNvYyBkdWUgdG8gaXQgd2FzIG5vdAogCQkJCQkgKiBjbG9zZWQuIFNvIGdvIGFoZWFkIGFuZCBz
dGFydCBpdCBub3cuCiAJCQkJCSAqLwotCQkJCQlhc29jLT5hc29jLnN0YXRlICY9IH5TQ1RQX1NU
QVRFX0lOX0FDQ0VQVF9RVUVVRTsKKwkJCQkJU0NUUF9DTEVBUl9TVUJTVEFURShhc29jLCBTQ1RQ
X1NUQVRFX0lOX0FDQ0VQVF9RVUVVRSk7CiAJCQkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1F
Ul9UWVBFX0FTT0NLSUxMLCBpbnAsIGFzb2MsIE5VTEwpOwogCQkJCX0KIAkJCQlTQ1RQX1RDQl9V
TkxPQ0soYXNvYyk7CiAJCQkJY29udGludWU7CiAJCQl9Ci0JCQlpZiAoKChTQ1RQX0dFVF9TVEFU
RSgmYXNvYy0+YXNvYykgPT0gU0NUUF9TVEFURV9DT09LSUVfV0FJVCkgfHwKLQkJCSAgICAoU0NU
UF9HRVRfU1RBVEUoJmFzb2MtPmFzb2MpID09IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCkpICYm
CisJCQlpZiAoKChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlU
KSB8fAorCQkJICAgICAoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9DT09LSUVf
RUNIT0VEKSkgJiYKIAkJCSAgICAoYXNvYy0+YXNvYy50b3RhbF9vdXRwdXRfcXVldWVfc2l6ZSA9
PSAwKSkgewogCQkJCS8qIElmIHdlIGhhdmUgZGF0YSBpbiBxdWV1ZSwgd2UgZG9uJ3Qgd2FudCB0
byBqdXN0CiAJCQkJICogZnJlZSBzaW5jZSB0aGUgYXBwIG1heSBoYXZlIGRvbmUsIHNlbmQoKS9j
bG9zZQpAQCAtMzk4NCw3ICszOTc5LDcgQEAgc2N0cF9pbnBjYl9mcmVlKHN0cnVjdCBzY3RwX2lu
cGNiICppbnAsIGludCBpbW1lZGlhdGUsIGludCBmcm9tKQogCQkJfQogCQkJLyogRGlzY29ubmVj
dCB0aGUgc29ja2V0IHBsZWFzZSAqLwogCQkJYXNvYy0+c2N0cF9zb2NrZXQgPSBOVUxMOwotCQkJ
YXNvYy0+YXNvYy5zdGF0ZSB8PSBTQ1RQX1NUQVRFX0NMT1NFRF9TT0NLRVQ7CisJCQlTQ1RQX0FE
RF9TVUJTVEFURShhc29jLCBTQ1RQX1NUQVRFX0NMT1NFRF9TT0NLRVQpOwogCQkJaWYgKChhc29j
LT5hc29jLnNpemVfb25fcmVhc21fcXVldWUgPiAwKSB8fAogCQkJICAgIChhc29jLT5hc29jLmNv
bnRyb2xfcGRhcGkpIHx8CiAJCQkgICAgKGFzb2MtPmFzb2Muc2l6ZV9vbl9hbGxfc3RyZWFtcyA+
IDApIHx8CkBAIC0zOTk2LDggKzM5OTEsOCBAQCBzY3RwX2lucGNiX2ZyZWUoc3RydWN0IHNjdHBf
aW5wY2IgKmlucCwgaW50IGltbWVkaWF0ZSwgaW50IGZyb20pCiAJCQkJYXNvYy0+c2N0cF9lcC0+
bGFzdF9hYm9ydF9jb2RlID0gU0NUUF9GUk9NX1NDVFBfUENCICsgU0NUUF9MT0NfMzsKIAkJCQlz
Y3RwX3NlbmRfYWJvcnRfdGNiKGFzb2MsIG9wX2VyciwgU0NUUF9TT19MT0NLRUQpOwogCQkJCVND
VFBfU1RBVF9JTkNSX0NPVU5URVIzMihzY3Rwc19hYm9ydGVkKTsKLQkJCQlpZiAoKFNDVFBfR0VU
X1NUQVRFKCZhc29jLT5hc29jKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHx8Ci0JCQkJICAgIChTQ1RQ
X0dFVF9TVEFURSgmYXNvYy0+YXNvYykgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkp
IHsKKwkJCQlpZiAoKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfT1BFTikgfHwK
KwkJCQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVD
RUlWRUQpKSB7CiAJCQkJCVNDVFBfU1RBVF9ERUNSX0dBVUdFMzIoc2N0cHNfY3VycmVzdGFiKTsK
IAkJCQl9CiAJCQkJaWYgKHNjdHBfZnJlZV9hc3NvYyhpbnAsIGFzb2MsCkBAIC00MDExLDIwICs0
MDA2LDE5IEBAIHNjdHBfaW5wY2JfZnJlZShzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBpbnQgaW1t
ZWRpYXRlLCBpbnQgZnJvbSkKIAkJCQlpZiAoKCphc29jLT5hc29jLnNzX2Z1bmN0aW9ucy5zY3Rw
X3NzX2lzX3VzZXJfbXNnc19pbmNvbXBsZXRlKShhc29jLCAmYXNvYy0+YXNvYykpIHsKIAkJCQkJ
Z290byBhYm9ydF9hbnl3YXk7CiAJCQkJfQotCQkJCWlmICgoU0NUUF9HRVRfU1RBVEUoJmFzb2Mt
PmFzb2MpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCkgJiYKLQkJCQkgICAgKFNDVFBfR0VU
X1NUQVRFKCZhc29jLT5hc29jKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX0FDS19TRU5UKSkgewor
CQkJCWlmICgoU0NUUF9HRVRfU1RBVEUoYXNvYykgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9TRU5U
KSAmJgorCQkJCSAgICAoU0NUUF9HRVRfU1RBVEUoYXNvYykgIT0gU0NUUF9TVEFURV9TSFVURE9X
Tl9BQ0tfU0VOVCkpIHsKIAkJCQkJc3RydWN0IHNjdHBfbmV0cyAqbmV0cDsKIAogCQkJCQkvKgog
CQkJCQkgKiB0aGVyZSBpcyBub3RoaW5nIHF1ZXVlZCB0byBzZW5kLAogCQkJCQkgKiBzbyBJIHNl
bmQgc2h1dGRvd24KIAkJCQkJICovCi0JCQkJCWlmICgoU0NUUF9HRVRfU1RBVEUoJmFzb2MtPmFz
b2MpID09IFNDVFBfU1RBVEVfT1BFTikgfHwKLQkJCQkJICAgIChTQ1RQX0dFVF9TVEFURSgmYXNv
Yy0+YXNvYykgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkpIHsKKwkJCQkJaWYgKChT
Q1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHx8CisJCQkJCSAgICAoU0NU
UF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkpIHsKIAkJ
CQkJCVNDVFBfU1RBVF9ERUNSX0dBVUdFMzIoc2N0cHNfY3VycmVzdGFiKTsKIAkJCQkJfQotCQkJ
CQlTQ1RQX1NFVF9TVEFURSgmYXNvYy0+YXNvYywgU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKTsK
LQkJCQkJU0NUUF9DTEVBUl9TVUJTVEFURSgmYXNvYy0+YXNvYywgU0NUUF9TVEFURV9TSFVURE9X
Tl9QRU5ESU5HKTsKKwkJCQkJU0NUUF9TRVRfU1RBVEUoYXNvYywgU0NUUF9TVEFURV9TSFVURE9X
Tl9TRU5UKTsKIAkJCQkJc2N0cF9zdG9wX3RpbWVyc19mb3Jfc2h1dGRvd24oYXNvYyk7CiAJCQkJ
CWlmIChhc29jLT5hc29jLmFsdGVybmF0ZSkgewogCQkJCQkJbmV0cCA9IGFzb2MtPmFzb2MuYWx0
ZXJuYXRlOwpAQCAtNDAzNCwxNyArNDAyOCwxNSBAQCBzY3RwX2lucGNiX2ZyZWUoc3RydWN0IHNj
dHBfaW5wY2IgKmlucCwgaW50IGltbWVkaWF0ZSwgaW50IGZyb20pCiAJCQkJCXNjdHBfc2VuZF9z
aHV0ZG93bihhc29jLCBuZXRwKTsKIAkJCQkJc2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZ
UEVfU0hVVERPV04sIGFzb2MtPnNjdHBfZXAsIGFzb2MsCiAJCQkJCSAgICBuZXRwKTsKLQkJCQkJ
c2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfU0hVVERPV05HVUFSRCwgYXNvYy0+c2N0
cF9lcCwgYXNvYywKLQkJCQkJICAgIGFzb2MtPmFzb2MucHJpbWFyeV9kZXN0aW5hdGlvbik7CisJ
CQkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NIVVRET1dOR1VBUkQsIGFzb2Mt
PnNjdHBfZXAsIGFzb2MsIE5VTEwpOwogCQkJCQlzY3RwX2NodW5rX291dHB1dChpbnAsIGFzb2Ms
IFNDVFBfT1VUUFVUX0ZST01fU0hVVF9UTVIsIFNDVFBfU09fTE9DS0VEKTsKIAkJCQl9CiAJCQl9
IGVsc2UgewogCQkJCS8qIG1hcmsgaW50byBzaHV0ZG93biBwZW5kaW5nICovCi0JCQkJYXNvYy0+
YXNvYy5zdGF0ZSB8PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJTkc7Ci0JCQkJc2N0cF90aW1l
cl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfU0hVVERPV05HVUFSRCwgYXNvYy0+c2N0cF9lcCwgYXNv
YywKLQkJCQkJCSBhc29jLT5hc29jLnByaW1hcnlfZGVzdGluYXRpb24pOworCQkJCVNDVFBfQURE
X1NVQlNUQVRFKGFzb2MsIFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORyk7CisJCQkJc2N0cF90
aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfU0hVVERPV05HVUFSRCwgYXNvYy0+c2N0cF9lcCwg
YXNvYywgTlVMTCk7CiAJCQkJaWYgKCgqYXNvYy0+YXNvYy5zc19mdW5jdGlvbnMuc2N0cF9zc19p
c191c2VyX21zZ3NfaW5jb21wbGV0ZSkoYXNvYywgJmFzb2MtPmFzb2MpKSB7Ci0JCQkJCWFzb2Mt
PmFzb2Muc3RhdGUgfD0gU0NUUF9TVEFURV9QQVJUSUFMX01TR19MRUZUOworCQkJCQlTQ1RQX0FE
RF9TVUJTVEFURShhc29jLCBTQ1RQX1NUQVRFX1BBUlRJQUxfTVNHX0xFRlQpOwogCQkJCX0KIAkJ
CQlpZiAoVEFJTFFfRU1QVFkoJmFzb2MtPmFzb2Muc2VuZF9xdWV1ZSkgJiYKIAkJCQkgICAgVEFJ
TFFfRU1QVFkoJmFzb2MtPmFzb2Muc2VudF9xdWV1ZSkgJiYKQEAgLTQwNTUsOCArNDA0Nyw4IEBA
IHNjdHBfaW5wY2JfZnJlZShzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBpbnQgaW1tZWRpYXRlLCBp
bnQgZnJvbSkKIAkJCQkJYXNvYy0+c2N0cF9lcC0+bGFzdF9hYm9ydF9jb2RlID0gU0NUUF9GUk9N
X1NDVFBfUENCICsgU0NUUF9MT0NfNTsKIAkJCQkJc2N0cF9zZW5kX2Fib3J0X3RjYihhc29jLCBv
cF9lcnIsIFNDVFBfU09fTE9DS0VEKTsKIAkJCQkJU0NUUF9TVEFUX0lOQ1JfQ09VTlRFUjMyKHNj
dHBzX2Fib3J0ZWQpOwotCQkJCQlpZiAoKFNDVFBfR0VUX1NUQVRFKCZhc29jLT5hc29jKSA9PSBT
Q1RQX1NUQVRFX09QRU4pIHx8Ci0JCQkJCSAgICAoU0NUUF9HRVRfU1RBVEUoJmFzb2MtPmFzb2Mp
ID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpKSB7CisJCQkJCWlmICgoU0NUUF9HRVRf
U1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9PUEVOKSB8fAorCQkJCQkgICAgKFNDVFBfR0VUX1NU
QVRFKGFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpKSB7CiAJCQkJCQlTQ1RQ
X1NUQVRfREVDUl9HQVVHRTMyKHNjdHBzX2N1cnJlc3RhYik7CiAJCQkJCX0KIAkJCQkJaWYgKHNj
dHBfZnJlZV9hc3NvYyhpbnAsIGFzb2MsCkBAIC00MTA0LDE3ICs0MDk2LDIyIEBAIHNjdHBfaW5w
Y2JfZnJlZShzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBpbnQgaW1tZWRpYXRlLCBpbnQgZnJvbSkK
IAljbnQgPSAwOwogCUxJU1RfRk9SRUFDSF9TQUZFKGFzb2MsICZpbnAtPnNjdHBfYXNvY19saXN0
LCBzY3RwX3RjYmxpc3QsIG5hc29jKSB7CiAJCVNDVFBfVENCX0xPQ0soYXNvYyk7CisJCWlmIChp
bW1lZGlhdGUgIT0gU0NUUF9GUkVFX1NIT1VMRF9VU0VfR1JBQ0VGVUxfQ0xPU0UpIHsKKwkJCS8q
IERpc2Nvbm5lY3QgdGhlIHNvY2tldCBwbGVhc2UgKi8KKwkJCWFzb2MtPnNjdHBfc29ja2V0ID0g
TlVMTDsKKwkJCVNDVFBfQUREX1NVQlNUQVRFKGFzb2MsIFNDVFBfU1RBVEVfQ0xPU0VEX1NPQ0tF
VCk7CisJCX0KIAkJaWYgKGFzb2MtPmFzb2Muc3RhdGUgJiBTQ1RQX1NUQVRFX0FCT1VUX1RPX0JF
X0ZSRUVEKSB7CiAJCQlpZiAoYXNvYy0+YXNvYy5zdGF0ZSAmIFNDVFBfU1RBVEVfSU5fQUNDRVBU
X1FVRVVFKSB7Ci0JCQkJYXNvYy0+YXNvYy5zdGF0ZSAmPSB+U0NUUF9TVEFURV9JTl9BQ0NFUFRf
UVVFVUU7CisJCQkJU0NUUF9DTEVBUl9TVUJTVEFURShhc29jLCBTQ1RQX1NUQVRFX0lOX0FDQ0VQ
VF9RVUVVRSk7CiAJCQkJc2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfQVNPQ0tJTEws
IGlucCwgYXNvYywgTlVMTCk7CiAJCQl9Ci0JCSAgICAgICAgY250Kys7CisJCQljbnQrKzsKIAkJ
CVNDVFBfVENCX1VOTE9DSyhhc29jKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAJCS8qIEZyZWUgYXNz
b2NpYXRpb25zIHRoYXQgYXJlIE5PVCBraWxsaW5nIHVzICovCi0JCWlmICgoU0NUUF9HRVRfU1RB
VEUoJmFzb2MtPmFzb2MpICE9IFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQpICYmCisJCWlmICgoU0NU
UF9HRVRfU1RBVEUoYXNvYykgIT0gU0NUUF9TVEFURV9DT09LSUVfV0FJVCkgJiYKIAkJICAgICgo
YXNvYy0+YXNvYy5zdGF0ZSAmIFNDVFBfU1RBVEVfQUJPVVRfVE9fQkVfRlJFRUQpID09IDApKSB7
CiAJCQlzdHJ1Y3QgbWJ1ZiAqb3BfZXJyOwogCkBAIC00MTI3LDggKzQxMjQsOCBAQCBzY3RwX2lu
cGNiX2ZyZWUoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgaW50IGltbWVkaWF0ZSwgaW50IGZyb20p
CiAJCQlTQ1RQX1RDQl9VTkxPQ0soYXNvYyk7CiAJCQljb250aW51ZTsKIAkJfQotCQlpZiAoKFND
VFBfR0VUX1NUQVRFKCZhc29jLT5hc29jKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHx8Ci0JCSAgICAo
U0NUUF9HRVRfU1RBVEUoJmFzb2MtPmFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlW
RUQpKSB7CisJCWlmICgoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9PUEVOKSB8
fAorCQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVD
RUlWRUQpKSB7CiAJCQlTQ1RQX1NUQVRfREVDUl9HQVVHRTMyKHNjdHBzX2N1cnJlc3RhYik7CiAJ
CX0KIAkJaWYgKHNjdHBfZnJlZV9hc3NvYyhpbnAsIGFzb2MsIFNDVFBfUENCRlJFRV9GT1JDRSwK
QEAgLTQxMzgsNyArNDEzNSw2IEBAIHNjdHBfaW5wY2JfZnJlZShzdHJ1Y3Qgc2N0cF9pbnBjYiAq
aW5wLCBpbnQgaW1tZWRpYXRlLCBpbnQgZnJvbSkKIAl9CiAJaWYgKGNudCkgewogCQkvKiBPayB3
ZSBoYXZlIHNvbWVvbmUgb3V0IHRoZXJlIHRoYXQgd2lsbCBraWxsIHVzICovCi0JCSh2b2lkKVND
VFBfT1NfVElNRVJfU1RPUCgmaW5wLT5zY3RwX2VwLnNpZ25hdHVyZV9jaGFuZ2UudGltZXIpOwog
I2lmZGVmIFNDVFBfTE9HX0NMT1NJTkcKIAkJc2N0cF9sb2dfY2xvc2luZyhpbnAsIE5VTEwsIDMp
OwogI2VuZGlmCkBAIC00MTUzLDExICs0MTQ5LDEwIEBAIHNjdHBfaW5wY2JfZnJlZShzdHJ1Y3Qg
c2N0cF9pbnBjYiAqaW5wLCBpbnQgaW1tZWRpYXRlLCBpbnQgZnJvbSkKIAkJYmVpbmdfcmVmZWQr
KzsKIAlpZiAoU0NUUF9BU09DX0NSRUFURV9MT0NLX0NPTlRFTkRFRChpbnApKQogCQliZWluZ19y
ZWZlZCsrOwotCisJLyogTk9URTogMCByZWZjb3VudCBhbHNvIG1lYW5zIG5vIHRpbWVycyBhcmUg
cmVmZXJlbmNpbmcgdXMuICovCiAJaWYgKChpbnAtPnJlZmNvdW50KSB8fAogCSAgICAoYmVpbmdf
cmVmZWQpIHx8CiAJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19DTE9TRV9J
UCkpIHsKLQkJKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCZpbnAtPnNjdHBfZXAuc2lnbmF0dXJl
X2NoYW5nZS50aW1lcik7CiAjaWZkZWYgU0NUUF9MT0dfQ0xPU0lORwogCQlzY3RwX2xvZ19jbG9z
aW5nKGlucCwgTlVMTCwgNCk7CiAjZW5kaWYKQEAgLTQxNzYsMjYgKzQxNzEsMTMgQEAgc2N0cF9p
bnBjYl9mcmVlKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIGludCBpbW1lZGlhdGUsIGludCBmcm9t
KQogCVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsKIAlTQ1RQX0FTT0NfQ1JFQVRFX1VOTE9DSyhpbnAp
OwogCVNDVFBfSU5QX0lORk9fV1VOTE9DSygpOwotCS8qIE5vdyB3ZSByZWxlYXNlIGFsbCBsb2Nr
cy4gU2luY2UgdGhpcyBJTlAKLQkgKiBjYW5ub3QgYmUgZm91bmQgYW55bW9yZSBleGNlcHQgcG9z
c2libHkgYnkgdGhlCi0JICoga2lsbCB0aW1lciB0aGF0IG1pZ2h0IGJlIHJ1bm5pbmcuIFdlIGNh
bGwKLQkgKiB0aGUgZHJhaW4gZnVuY3Rpb24gaGVyZS4gSXQgc2hvdWxkIGhpdCB0aGUgY2FzZQot
CSAqIHdlcmUgaXQgc2VlcyB0aGUgQUNUSVZFIGZsYWcgY2xlYXJlZCBhbmQgZXhpdAotCSAqIG91
dCBmcmVlaW5nIHVzIHRvIHByb2NlZWQgYW5kIGRlc3Ryb3kgZXZlcnl0aGluZy4KLQkgKi8KLQlp
ZiAoZnJvbSAhPSBTQ1RQX0NBTExFRF9GUk9NX0lOUEtJTExfVElNRVIpIHsKLQkJKHZvaWQpU0NU
UF9PU19USU1FUl9TVE9QX0RSQUlOKCZpbnAtPnNjdHBfZXAuc2lnbmF0dXJlX2NoYW5nZS50aW1l
cik7Ci0JfSBlbHNlIHsKLQkJLyogUHJvYmFibHkgdW4tbmVlZGVkICovCi0JCSh2b2lkKVNDVFBf
T1NfVElNRVJfU1RPUCgmaW5wLT5zY3RwX2VwLnNpZ25hdHVyZV9jaGFuZ2UudGltZXIpOwotCX0K
IAogI2lmZGVmIFNDVFBfTE9HX0NMT1NJTkcKIAlzY3RwX2xvZ19jbG9zaW5nKGlucCwgTlVMTCwg
NSk7CiAjZW5kaWYKIAotI2lmICEoZGVmaW5lZChfX1BhbmRhX18pIHx8IGRlZmluZWQoX19XaW5k
b3dzX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCi0jaWYgIWRlZmluZWQoX19GcmVlQlNE
X18pIHx8IF9fRnJlZUJTRF92ZXJzaW9uIDwgNTAwMDAwCisjaWYgIShkZWZpbmVkKF9XSU4zMikg
fHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkKKyNpZiAhKGRlZmluZWQoX19GcmVlQlNEX18pICAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkKIAlydCA9IGlwX3BjYi0+aW5wX3JvdXRlLnJvX3J0
OwogI2VuZGlmCiAjZW5kaWYKQEAgLTQyMzAsNDkgKzQyMTIsMzIgQEAgc2N0cF9pbnBjYl9mcmVl
KHN0cnVjdCBzY3RwX2lucGNiICppbnAsIGludCBpbW1lZGlhdGUsIGludCBmcm9tKQogCSAqIG1h
Y3JvIGhlcmUgc2luY2UgbGVfbmV4dCB3aWxsIGdldCBmcmVlZCBhcyBwYXJ0IG9mIHRoZQogCSAq
IHNjdHBfZnJlZV9hc3NvYygpIGNhbGwuCiAJICovCi0jaWZuZGVmIF9fUGFuZGFfXwogCWlmIChp
cF9wY2ItPmlucF9vcHRpb25zKSB7CiAJCSh2b2lkKXNjdHBfbV9mcmVlKGlwX3BjYi0+aW5wX29w
dGlvbnMpOwogCQlpcF9wY2ItPmlucF9vcHRpb25zID0gMDsKIAl9Ci0jZW5kaWYKIAotI2lmICEo
ZGVmaW5lZChfX1BhbmRhX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pIHx8IGRlZmluZWQoX19V
c2Vyc3BhY2VfXykpCi0jaWYgIWRlZmluZWQoX19GcmVlQlNEX18pIHx8IF9fRnJlZUJTRF92ZXJz
aW9uIDwgNTAwMDAwCisjaWYgIShkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKSkKKyNpZiAhZGVmaW5lZChfX0ZyZWVCU0RfXykKIAlpZiAocnQpIHsKIAkJUlRGUkVFKHJ0
KTsKIAkJaXBfcGNiLT5pbnBfcm91dGUucm9fcnQgPSAwOwogCX0KICNlbmRpZgotI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uIDwgODAzMDAwCi0jaWZkZWYgSU5F
VAotCWlmIChpcF9wY2ItPmlucF9tb3B0aW9ucykgewotCQlpbnBfZnJlZW1vcHRpb25zKGlwX3Bj
Yi0+aW5wX21vcHRpb25zKTsKLQkJaXBfcGNiLT5pbnBfbW9wdGlvbnMgPSAwOwotCX0KLSNlbmRp
ZgotI2VuZGlmCiAjZW5kaWYKIAogI2lmZGVmIElORVQ2Ci0jaWYgIShkZWZpbmVkKF9fUGFuZGFf
XykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkKLSNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiAhKGRlZmlu
ZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pKQorI2lmIChkZWZpbmVkKF9fRnJl
ZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykp
CiAJaWYgKGlwX3BjYi0+aW5wX3ZmbGFnICYgSU5QX0lQVjYpIHsKICNlbHNlCiAJaWYgKGlucC0+
aW5wX3ZmbGFnICYgSU5QX0lQVjYpIHsKICNlbmRpZgotCQlzdHJ1Y3QgaW42cGNiICppbjZwOwot
Ci0JCWluNnAgPSAoc3RydWN0IGluNnBjYiAqKWlucDsKLQkJaXA2X2ZyZWVwY2JvcHRzKGluNnAt
PmluNnBfb3V0cHV0b3B0cyk7CisJCWlwNl9mcmVlcGNib3B0cyhpcF9wY2ItPmluNnBfb3V0cHV0
b3B0cyk7CiAJfQogI2VuZGlmCiAjZW5kaWYJCQkJLyogSU5FVDYgKi8KLSNpZiAhKGRlZmluZWQo
X19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19f
KSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pKQotCWlucC0+aW5wX3ZmbGFnID0gMDsKLSNlbHNl
CiAJaXBfcGNiLT5pbnBfdmZsYWcgPSAwOwotI2VuZGlmCiAJLyogZnJlZSB1cCBhdXRoZW50aWNh
dGlvbiBmaWVsZHMgKi8KIAlpZiAoaW5wLT5zY3RwX2VwLmxvY2FsX2F1dGhfY2h1bmtzICE9IE5V
TEwpCiAJCXNjdHBfZnJlZV9jaHVua2xpc3QoaW5wLT5zY3RwX2VwLmxvY2FsX2F1dGhfY2h1bmtz
KTsKQEAgLTQyODUsNyArNDI1MCw3IEBAIHNjdHBfaW5wY2JfZnJlZShzdHJ1Y3Qgc2N0cF9pbnBj
YiAqaW5wLCBpbnQgaW1tZWRpYXRlLCBpbnQgZnJvbSkKIAkJLypzYV9pZ25vcmUgRlJFRURfTUVN
T1JZKi8KIAl9CiAKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlpbnAtPmlwX2lucC5pbnAuaW5wX3N0YXRl
ID0gSU5QQ0JfU1RBVEVfREVBRDsKIAlpZiAoaW5fcGNiX2NoZWNrc3RhdGUoJmlucC0+aXBfaW5w
LmlucCwgV05UX1NUT1BVU0lORywgMSkgIT0gV05UX1NUT1BVU0lORykgewogI2lmZGVmIElOVkFS
SUFOVFMKQEAgLTQzMjMsMTQgKzQyODgsMTQgQEAgc2N0cF9pbnBjYl9mcmVlKHN0cnVjdCBzY3Rw
X2lucGNiICppbnAsIGludCBpbW1lZGlhdGUsIGludCBmcm9tKQogCQlpbnAtPnNjdHBfdGNiaGFz
aCA9IE5VTEw7CiAJfQogCS8qIE5vdyB3ZSBtdXN0IHB1dCB0aGUgZXAgbWVtb3J5IGJhY2sgaW50
byB0aGUgem9uZSBwb29sICovCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWNyZnJlZShpbnAtPmlw
X2lucC5pbnAuaW5wX2NyZWQpOwogCUlOUF9MT0NLX0RFU1RST1koJmlucC0+aXBfaW5wLmlucCk7
CiAjZW5kaWYKIAlTQ1RQX0lOUF9MT0NLX0RFU1RST1koaW5wKTsKIAlTQ1RQX0lOUF9SRUFEX0RF
U1RST1koaW5wKTsKIAlTQ1RQX0FTT0NfQ1JFQVRFX0xPQ0tfREVTVFJPWShpbnApOwotI2lmICFk
ZWZpbmVkKF9fQVBQTEVfXykKKyNpZiAhKGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKSkKIAlTQ1RQX1pPTkVfRlJFRShTQ1RQX0JBU0VfSU5GTyhpcGlfem9uZV9l
cCksIGlucCk7CiAJU0NUUF9ERUNSX0VQX0NPVU5UKCk7CiAjZWxzZQpAQCAtNDM1NSw5ICs0MzIw
LDYgQEAgc2N0cF9maW5kbmV0KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNvY2thZGRy
ICphZGRyKQogaW50CiBzY3RwX2lzX2FkZHJlc3Nfb25fbG9jYWxfaG9zdChzdHJ1Y3Qgc29ja2Fk
ZHIgKmFkZHIsIHVpbnQzMl90IHZyZl9pZCkKIHsKLSNpZmRlZiBfX1BhbmRhX18KLQlyZXR1cm4g
KDApOwotI2Vsc2UKIAlzdHJ1Y3Qgc2N0cF9pZmEgKnNjdHBfaWZhOwogCXNjdHBfaWZhID0gc2N0
cF9maW5kX2lmYV9ieV9hZGRyKGFkZHIsIHZyZl9pZCwgU0NUUF9BRERSX05PVF9MT0NLRUQpOwog
CWlmIChzY3RwX2lmYSkgewpAQCAtNDM2NSw3ICs0MzI3LDYgQEAgc2N0cF9pc19hZGRyZXNzX29u
X2xvY2FsX2hvc3Qoc3RydWN0IHNvY2thZGRyICphZGRyLCB1aW50MzJfdCB2cmZfaWQpCiAJfSBl
bHNlIHsKIAkJcmV0dXJuICgwKTsKIAl9Ci0jZW5kaWYKIH0KIAogLyoKQEAgLTQ2MTQsNyArNDU3
NSw3IEBAIHNjdHBfYWRkX3JlbW90ZV9hZGRyKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0
IHNvY2thZGRyICpuZXdhZGRyLAogCQlzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW42OwogCiAJCXNp
bjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKSZuZXQtPnJvLl9sX2FkZHI7Ci0jaWYgZGVmaW5l
ZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAjaWYgZGVmaW5lZChBUFBMRV9MRU9QQVJEKSB8fCBkZWZpbmVkKEFQUExFX1NOT1dM
RU9QQVJEKQogCQkodm9pZClpbjZfZW1iZWRzY29wZSgmc2luNi0+c2luNl9hZGRyLCBzaW42LCAm
c3RjYi0+c2N0cF9lcC0+aXBfaW5wLmlucCwgTlVMTCk7CiAjZWxzZQpAQCAtNDY4MSwxOCArNDY0
MiwyMiBAQCBzY3RwX2FkZF9yZW1vdGVfYWRkcihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVj
dCBzb2NrYWRkciAqbmV3YWRkciwKIAkJCX0gZWxzZSB7CiAJCQkJaW10dSA9IDA7CiAJCQl9Ci0J
CQlybXR1ID0gU0NUUF9HQVRIRVJfTVRVX0ZST01fUk9VVEUobmV0LT5yby5fc19hZGRyLCAmbmV0
LT5yby5fbF9hZGRyLnNhLCBuZXQtPnJvLnJvX3J0KTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJ
CQlybXR1ID0gU0NUUF9HQVRIRVJfTVRVX0ZST01fUk9VVEUobmV0LT5yby5fc19hZGRyLCAmbmV0
LT5yby5fbF9hZGRyLnNhLCBuZXQtPnJvLnJvX25oKTsKIAkJCWhjbXR1ID0gc2N0cF9oY19nZXRf
bXR1KCZuZXQtPnJvLl9sX2FkZHIsIHN0Y2ItPnNjdHBfZXAtPmZpYm51bSk7CiAjZWxzZQorCQkJ
cm10dSA9IFNDVFBfR0FUSEVSX01UVV9GUk9NX1JPVVRFKG5ldC0+cm8uX3NfYWRkciwgJm5ldC0+
cm8uX2xfYWRkci5zYSwgbmV0LT5yby5yb19ydCk7CiAJCQloY210dSA9IDA7CiAjZW5kaWYKIAkJ
CW5ldC0+bXR1ID0gc2N0cF9taW5fbXR1KGhjbXR1LCBybXR1LCBpbXR1KTsKKyNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2Vsc2UKIAkJCWlmIChy
bXR1ID09IDApIHsKIAkJCQkvKiBTdGFydCB0aGluZ3Mgb2ZmIHRvIG1hdGNoIG10dSBvZiBpbnRl
cmZhY2UgcGxlYXNlLiAqLwogCQkJCVNDVFBfU0VUX01UVV9PRl9ST1VURSgmbmV0LT5yby5fbF9h
ZGRyLnNhLAogCQkJCSAgICAgICAgICAgICAgICAgICAgICBuZXQtPnJvLnJvX3J0LCBuZXQtPm10
dSk7CiAJCQl9CisjZW5kaWYKIAkJfQogCX0KICNlbmRpZgpAQCAtNDc4MSw3ICs0NzQ2LDcgQEAg
c2N0cF9hZGRfcmVtb3RlX2FkZHIoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc29ja2Fk
ZHIgKm5ld2FkZHIsCiAJICovCiAJbmV0LT5maW5kX3BzZXVkb19jdW1hY2sgPSAxOwogCW5ldC0+
ZmluZF9ydHhfcHNldWRvX2N1bWFjayA9IDE7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCS8qIENo
b29zZSBhbiBpbml0aWFsIGZsb3dpZC4gKi8KIAluZXQtPmZsb3dpZCA9IHN0Y2ItPmFzb2MubXlf
dnRhZyBeCiAJICAgICAgICAgICAgICBudG9ocyhzdGNiLT5ycG9ydCkgXgpAQCAtNDc5MiwyNiAr
NDc1NywzNiBAQCBzY3RwX2FkZF9yZW1vdGVfYWRkcihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0
cnVjdCBzb2NrYWRkciAqbmV3YWRkciwKIAkJKm5ldHAgPSBuZXQ7CiAJfQogCW5ldGZpcnN0ID0g
VEFJTFFfRklSU1QoJnN0Y2ItPmFzb2MubmV0cyk7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwlpZiAobmV0LT5yby5yb19uaCA9PSBOVUxMKSB7
CisjZWxzZQogCWlmIChuZXQtPnJvLnJvX3J0ID09IE5VTEwpIHsKKyNlbmRpZgogCQkvKiBTaW5j
ZSB3ZSBoYXZlIG5vIHJvdXRlIHB1dCBpdCBhdCB0aGUgYmFjayAqLwogCQlUQUlMUV9JTlNFUlRf
VEFJTCgmc3RjYi0+YXNvYy5uZXRzLCBuZXQsIHNjdHBfbmV4dCk7CiAJfSBlbHNlIGlmIChuZXRm
aXJzdCA9PSBOVUxMKSB7CiAJCS8qIFdlIGFyZSB0aGUgZmlyc3Qgb25lIGluIHRoZSBwb29sLiAq
LwogCQlUQUlMUV9JTlNFUlRfSEVBRCgmc3RjYi0+YXNvYy5uZXRzLCBuZXQsIHNjdHBfbmV4dCk7
CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwl9
IGVsc2UgaWYgKG5ldGZpcnN0LT5yby5yb19uaCA9PSBOVUxMKSB7CisjZWxzZQogCX0gZWxzZSBp
ZiAobmV0Zmlyc3QtPnJvLnJvX3J0ID09IE5VTEwpIHsKKyNlbmRpZgogCQkvKgogCQkgKiBGaXJz
dCBvbmUgaGFzIE5PIHJvdXRlLiBQbGFjZSB0aGlzIG9uZSBhaGVhZCBvZiB0aGUgZmlyc3QKIAkJ
ICogb25lLgogCQkgKi8KIAkJVEFJTFFfSU5TRVJUX0hFQUQoJnN0Y2ItPmFzb2MubmV0cywgbmV0
LCBzY3RwX25leHQpOwotI2lmbmRlZiBfX1BhbmRhX18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCX0gZWxzZSBpZiAobmV0LT5yby5yb19uaC0+
bmhfaWZwICE9IG5ldGZpcnN0LT5yby5yb19uaC0+bmhfaWZwKSB7CisjZWxzZQogCX0gZWxzZSBp
ZiAobmV0LT5yby5yb19ydC0+cnRfaWZwICE9IG5ldGZpcnN0LT5yby5yb19ydC0+cnRfaWZwKSB7
CisjZW5kaWYKIAkJLyoKIAkJICogVGhpcyBvbmUgaGFzIGEgZGlmZmVyZW50IGludGVyZmFjZSB0
aGFuIHRoZSBvbmUgYXQgdGhlCiAJCSAqIHRvcCBvZiB0aGUgbGlzdC4gUGxhY2UgaXQgYWhlYWQu
CiAJCSAqLwogCQlUQUlMUV9JTlNFUlRfSEVBRCgmc3RjYi0+YXNvYy5uZXRzLCBuZXQsIHNjdHBf
bmV4dCk7Ci0jZW5kaWYKIAl9IGVsc2UgewogCQkvKgogCQkgKiBPayB3ZSBoYXZlIHRoZSBzYW1l
IGludGVyZmFjZSBhcyB0aGUgZmlyc3Qgb25lLiBNb3ZlCkBAIC00ODI3LDM0ICs0ODAyLDM5IEBA
IHNjdHBfYWRkX3JlbW90ZV9hZGRyKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNvY2th
ZGRyICpuZXdhZGRyLAogCQkJCS8qIEVuZCBvZiB0aGUgbGlzdCAqLwogCQkJCVRBSUxRX0lOU0VS
VF9UQUlMKCZzdGNiLT5hc29jLm5ldHMsIG5ldCwgc2N0cF9uZXh0KTsKIAkJCQlicmVhazsKKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQkJfSBl
bHNlIGlmIChuZXRsb29rLT5yby5yb19uaCA9PSBOVUxMKSB7CisjZWxzZQogCQkJfSBlbHNlIGlm
IChuZXRsb29rLT5yby5yb19ydCA9PSBOVUxMKSB7CisjZW5kaWYKIAkJCQkvKiBuZXh0IG9uZSBo
YXMgTk8gcm91dGUgKi8KIAkJCQlUQUlMUV9JTlNFUlRfQkVGT1JFKG5ldGZpcnN0LCBuZXQsIHNj
dHBfbmV4dCk7CiAJCQkJYnJlYWs7Ci0JCQl9Ci0jaWZuZGVmIF9fUGFuZGFfXwotCQkJZWxzZSBp
ZiAobmV0bG9vay0+cm8ucm9fcnQtPnJ0X2lmcCAhPSBuZXQtPnJvLnJvX3J0LT5ydF9pZnApCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJCX0g
ZWxzZSBpZiAobmV0bG9vay0+cm8ucm9fbmgtPm5oX2lmcCAhPSBuZXQtPnJvLnJvX25oLT5uaF9p
ZnApIHsKICNlbHNlCi0JCQllbHNlCisJCQl9IGVsc2UgaWYgKG5ldGxvb2stPnJvLnJvX3J0LT5y
dF9pZnAgIT0gbmV0LT5yby5yb19ydC0+cnRfaWZwKSB7CiAjZW5kaWYKLQkJCXsKIAkJCQlUQUlM
UV9JTlNFUlRfQUZURVIoJnN0Y2ItPmFzb2MubmV0cywgbmV0bG9vaywKLQkJCQkJCSAgIG5ldCwg
c2N0cF9uZXh0KTsKKwkJCQkgICAgICAgICAgICAgICAgICAgbmV0LCBzY3RwX25leHQpOwogCQkJ
CWJyZWFrOwogCQkJfQotI2lmbmRlZiBfX1BhbmRhX18KIAkJCS8qIFNoaWZ0IGZvcndhcmQgKi8K
IAkJCW5ldGZpcnN0ID0gbmV0bG9vazsKLSNlbmRpZgogCQl9IHdoaWxlIChuZXRsb29rICE9IE5V
TEwpOwogCX0KIAogCS8qIGdvdCB0byBoYXZlIGEgcHJpbWFyeSBzZXQgKi8KIAlpZiAoc3RjYi0+
YXNvYy5wcmltYXJ5X2Rlc3RpbmF0aW9uID09IDApIHsKIAkJc3RjYi0+YXNvYy5wcmltYXJ5X2Rl
c3RpbmF0aW9uID0gbmV0OworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCisJfSBlbHNlIGlmICgoc3RjYi0+YXNvYy5wcmltYXJ5X2Rlc3RpbmF0aW9u
LT5yby5yb19uaCA9PSBOVUxMKSAmJgorCSAgICAgICAgICAgKG5ldC0+cm8ucm9fbmgpICYmCisj
ZWxzZQogCX0gZWxzZSBpZiAoKHN0Y2ItPmFzb2MucHJpbWFyeV9kZXN0aW5hdGlvbi0+cm8ucm9f
cnQgPT0gTlVMTCkgJiYKLQkJICAgIChuZXQtPnJvLnJvX3J0KSAmJgotCSAgICAoKG5ldC0+ZGVz
dF9zdGF0ZSAmIFNDVFBfQUREUl9VTkNPTkZJUk1FRCkgPT0gMCkpIHsKKwkgICAgICAgICAgIChu
ZXQtPnJvLnJvX3J0KSAmJgorI2VuZGlmCisJICAgICAgICAgICAoKG5ldC0+ZGVzdF9zdGF0ZSAm
IFNDVFBfQUREUl9VTkNPTkZJUk1FRCkgPT0gMCkpIHsKIAkJLyogTm8gcm91dGUgdG8gY3VycmVu
dCBwcmltYXJ5IGFkb3B0IG5ldyBwcmltYXJ5ICovCiAJCXN0Y2ItPmFzb2MucHJpbWFyeV9kZXN0
aW5hdGlvbiA9IG5ldDsKIAl9CkBAIC00ODgzLDExICs0ODYzLDkgQEAgc2N0cF9hbG9jX2FfYXNz
b2NfaWQoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiKQogCXN0
cnVjdCBzY3RwYXNvY2hlYWQgKmhlYWQ7CiAJc3RydWN0IHNjdHBfdGNiICpsc3RjYjsKIAotCVND
VFBfSU5QX1dMT0NLKGlucCk7CiAgdHJ5X2FnYWluOgogCWlmIChpbnAtPnNjdHBfZmxhZ3MgJiBT
Q1RQX1BDQl9GTEFHU19TT0NLRVRfQUxMR09ORSkgewogCQkvKiBUU05IICovCi0JCVNDVFBfSU5Q
X1dVTkxPQ0soaW5wKTsKIAkJcmV0dXJuICgwKTsKIAl9CiAJLyoKQEAgLTQ5MDYsOCArNDg4NCw3
IEBAIHNjdHBfYWxvY19hX2Fzc29jX2lkKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBz
Y3RwX3RjYiAqc3RjYikKIAloZWFkID0gJmlucC0+c2N0cF9hc29jaWRoYXNoW1NDVFBfUENCSEFT
SF9BU09DKGlkLCBpbnAtPmhhc2hhc29jaWRtYXJrKV07CiAJTElTVF9JTlNFUlRfSEVBRChoZWFk
LCBzdGNiLCBzY3RwX3RjYmFzb2NpZGhhc2gpOwogCXN0Y2ItPmFzb2MuaW5fYXNvY2lkX2hhc2gg
PSAxOwotCVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsKLQlyZXR1cm4gaWQ7CisJcmV0dXJuIChpZCk7
CiB9CiAKIC8qCkBAIC00OTE5LDE3ICs0ODk2LDE3IEBAIHN0cnVjdCBzY3RwX3RjYiAqCiBzY3Rw
X2Fsb2NfYXNzb2Moc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNvY2thZGRyICpmaXJz
dGFkZHIsCiAgICAgICAgICAgICAgICAgaW50ICplcnJvciwgdWludDMyX3Qgb3ZlcnJpZGVfdGFn
LCB1aW50MzJfdCB2cmZfaWQsCiAgICAgICAgICAgICAgICAgdWludDE2X3Qgb19zdHJlYW1zLCB1
aW50MTZfdCBwb3J0LAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJz
aW9uID49IDUwMDAwMAotCQlzdHJ1Y3QgdGhyZWFkICpwCi0jZWxpZiBkZWZpbmVkKF9fV2luZG93
c19fKQotCQlQS1RIUkVBRCBwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKKyAgICAgICAgICAgICAgICBzdHJ1Y3QgdGhyZWFkICpwLAorI2VsaWYg
ZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisgICAgICAgICAgICAg
ICAgUEtUSFJFQUQgcCwKICNlbHNlCiAjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogICAgICAg
ICAgICAgICAgIC8qICBfX1VzZXJzcGFjZV9fIE5VTEwgcHJvYyBpcyBnb2luZyB0byBiZSBwYXNz
ZWQgaGVyZS4gU2VlIHNjdHBfbG93ZXJfc29zZW5kICovCiAjZW5kaWYKLQkJc3RydWN0IHByb2Mg
KnAKKyAgICAgICAgICAgICAgICBzdHJ1Y3QgcHJvYyAqcCwKICNlbmRpZgotKQorICAgICAgICAg
ICAgICAgIGludCBpbml0aWFsaXplX2F1dGhfcGFyYW1zKQogewogCS8qIG5vdGUgdGhlIHAgYXJn
dW1lbnQgaXMgb25seSB2YWxpZCBpbiB1bmJvdW5kIHNvY2tldHMgKi8KIApAQCAtNTA4MSwxNSAr
NTA1OCw3IEBAIHNjdHBfYWxvY19hc3NvYyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qg
c29ja2FkZHIgKmZpcnN0YWRkciwKIAkJICogSWYgeW91IGhhdmUgbm90IHBlcmZvcm1lZCBhIGJp
bmQsIHRoZW4gd2UgbmVlZCB0byBkbyB0aGUKIAkJICogZXBoZW1lcmFsIGJpbmQgZm9yIHlvdS4K
IAkJICovCi0JCWlmICgoZXJyID0gc2N0cF9pbnBjYl9iaW5kKGlucC0+c2N0cF9zb2NrZXQsCi0J
CSAgICAoc3RydWN0IHNvY2thZGRyICopTlVMTCwKLQkJICAgIChzdHJ1Y3Qgc2N0cF9pZmEgKilO
VUxMLAotI2lmbmRlZiBfX1BhbmRhX18KLQkJCQkJICAgcAotI2Vsc2UKLQkJCQkJICAgKHN0cnVj
dCBwcm9jICopTlVMTAotI2VuZGlmCi0JCSAgICApKSkgeworCQlpZiAoKGVyciA9IHNjdHBfaW5w
Y2JfYmluZChpbnAtPnNjdHBfc29ja2V0LCBOVUxMLCBOVUxMLCBwKSkpIHsKIAkJCS8qIGJpbmQg
ZXJyb3IsIHByb2JhYmx5IHBlcm0gKi8KIAkJCSplcnJvciA9IGVycjsKIAkJCXJldHVybiAoTlVM
TCk7CkBAIC01MTA3LDcgKzUwNzYsNiBAQCBzY3RwX2Fsb2NfYXNzb2Moc3RydWN0IHNjdHBfaW5w
Y2IgKmlucCwgc3RydWN0IHNvY2thZGRyICpmaXJzdGFkZHIsCiAJbWVtc2V0KHN0Y2IsIDAsIHNp
emVvZigqc3RjYikpOwogCWFzb2MgPSAmc3RjYi0+YXNvYzsKIAotCWFzb2MtPmFzc29jX2lkID0g
c2N0cF9hbG9jX2FfYXNzb2NfaWQoaW5wLCBzdGNiKTsKIAlTQ1RQX1RDQl9MT0NLX0lOSVQoc3Rj
Yik7CiAJU0NUUF9UQ0JfU0VORF9MT0NLX0lOSVQoc3RjYik7CiAJc3RjYi0+cnBvcnQgPSBycG9y
dDsKQEAgLTUxMTgsNyArNTA4Niw2IEBAIHNjdHBfYWxvY19hc3NvYyhzdHJ1Y3Qgc2N0cF9pbnBj
YiAqaW5wLCBzdHJ1Y3Qgc29ja2FkZHIgKmZpcnN0YWRkciwKIAkJLyogZmFpbGVkICovCiAJCVND
VFBfVENCX0xPQ0tfREVTVFJPWShzdGNiKTsKIAkJU0NUUF9UQ0JfU0VORF9MT0NLX0RFU1RST1ko
c3RjYik7Ci0JCUxJU1RfUkVNT1ZFKHN0Y2IsIHNjdHBfdGNiYXNvY2lkaGFzaCk7CiAJCVNDVFBf
Wk9ORV9GUkVFKFNDVFBfQkFTRV9JTkZPKGlwaV96b25lX2Fzb2MpLCBzdGNiKTsKIAkJU0NUUF9E
RUNSX0FTT0NfQ09VTlQoKTsKIAkJKmVycm9yID0gZXJyOwpAQCAtNTEzMSw3ICs1MDk4LDYgQEAg
c2N0cF9hbG9jX2Fzc29jKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzb2NrYWRkciAq
Zmlyc3RhZGRyLAogCQkvKiBpbnBjYiBmcmVlZCB3aGlsZSBhbGxvYyBnb2luZyBvbiAqLwogCQlT
Q1RQX1RDQl9MT0NLX0RFU1RST1koc3RjYik7CiAJCVNDVFBfVENCX1NFTkRfTE9DS19ERVNUUk9Z
KHN0Y2IpOwotCQlMSVNUX1JFTU9WRShzdGNiLCBzY3RwX3RjYmFzb2NpZGhhc2gpOwogCQlTQ1RQ
X1pPTkVfRlJFRShTQ1RQX0JBU0VfSU5GTyhpcGlfem9uZV9hc29jKSwgc3RjYik7CiAJCVNDVFBf
SU5QX1dVTkxPQ0soaW5wKTsKIAkJU0NUUF9JTlBfSU5GT19XVU5MT0NLKCk7CkBAIC01MTQyLDYg
KzUxMDgsNyBAQCBzY3RwX2Fsb2NfYXNzb2Moc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0
IHNvY2thZGRyICpmaXJzdGFkZHIsCiAJfQogCVNDVFBfVENCX0xPQ0soc3RjYik7CiAKKwlhc29j
LT5hc3NvY19pZCA9IHNjdHBfYWxvY19hX2Fzc29jX2lkKGlucCwgc3RjYik7CiAJLyogbm93IHRo
YXQgbXlfdnRhZyBpcyBzZXQsIGFkZCBpdCB0byB0aGUgaGFzaCAqLwogCWhlYWQgPSAmU0NUUF9C
QVNFX0lORk8oc2N0cF9hc29jaGFzaClbU0NUUF9QQ0JIQVNIX0FTT0Moc3RjYi0+YXNvYy5teV92
dGFnLCBTQ1RQX0JBU0VfSU5GTyhoYXNoYXNvY21hcmspKV07CiAJLyogcHV0IGl0IGluIHRoZSBi
dWNrZXQgaW4gdGhlIHZ0YWcgaGFzaCBvZiBhc3NvYydzIGZvciB0aGUgc3lzdGVtICovCkBAIC01
MTc5LDcgKzUxNDYsNiBAQCBzY3RwX2Fsb2NfYXNzb2Moc3RydWN0IHNjdHBfaW5wY2IgKmlucCwg
c3RydWN0IHNvY2thZGRyICpmaXJzdGFkZHIsCiAJU0NUUF9PU19USU1FUl9JTklUKCZhc29jLT5h
c2NvbmZfdGltZXIudGltZXIpOwogCVNDVFBfT1NfVElNRVJfSU5JVCgmYXNvYy0+c2h1dF9ndWFy
ZF90aW1lci50aW1lcik7CiAJU0NUUF9PU19USU1FUl9JTklUKCZhc29jLT5hdXRvY2xvc2VfdGlt
ZXIudGltZXIpOwotCVNDVFBfT1NfVElNRVJfSU5JVCgmYXNvYy0+ZGVsYXllZF9ldmVudF90aW1l
ci50aW1lcik7CiAJU0NUUF9PU19USU1FUl9JTklUKCZhc29jLT5kZWxldGVfcHJpbV90aW1lci50
aW1lcik7CiAKIAlMSVNUX0lOU0VSVF9IRUFEKCZpbnAtPnNjdHBfYXNvY19saXN0LCBzdGNiLCBz
Y3RwX3RjYmxpc3QpOwpAQCAtNTE4OSw2ICs1MTU1LDkgQEAgc2N0cF9hbG9jX2Fzc29jKHN0cnVj
dCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzb2NrYWRkciAqZmlyc3RhZGRyLAogCQkgICAgaW5w
LT5zY3RwX2hhc2htYXJrKV07CiAJCUxJU1RfSU5TRVJUX0hFQUQoaGVhZCwgc3RjYiwgc2N0cF90
Y2JoYXNoKTsKIAl9CisJaWYgKGluaXRpYWxpemVfYXV0aF9wYXJhbXMgPT0gU0NUUF9JTklUSUFM
SVpFX0FVVEhfUEFSQU1TKSB7CisJCXNjdHBfaW5pdGlhbGl6ZV9hdXRoX3BhcmFtcyhpbnAsIHN0
Y2IpOworCX0KIAlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7CiAJU0NUUERCRyhTQ1RQX0RFQlVHX1BD
QjEsICJBc3NvY2lhdGlvbiAlcCBub3cgYWxsb2NhdGVkXG4iLCAodm9pZCAqKXN0Y2IpOwogCXJl
dHVybiAoc3RjYik7CkBAIC01MTk4LDggKzUxNjcsMTAgQEAgc2N0cF9hbG9jX2Fzc29jKHN0cnVj
dCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzb2NrYWRkciAqZmlyc3RhZGRyLAogdm9pZAogc2N0
cF9yZW1vdmVfbmV0KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfbmV0cyAqbmV0
KQogeworCXN0cnVjdCBzY3RwX2lucGNiICppbnA7CiAJc3RydWN0IHNjdHBfYXNzb2NpYXRpb24g
KmFzb2M7CiAKKwlpbnAgPSBzdGNiLT5zY3RwX2VwOwogCWFzb2MgPSAmc3RjYi0+YXNvYzsKIAlh
c29jLT5udW1uZXRzLS07CiAJVEFJTFFfUkVNT1ZFKCZhc29jLT5uZXRzLCBuZXQsIHNjdHBfbmV4
dCk7CkBAIC01MjQ3LDYgKzUyMTgsMTEgQEAgb3V0OgogCQlzY3RwX2ZyZWVfcmVtb3RlX2FkZHIo
c3RjYi0+YXNvYy5hbHRlcm5hdGUpOwogCQlzdGNiLT5hc29jLmFsdGVybmF0ZSA9IE5VTEw7CiAJ
fQorCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfUEFUSE1UVVJBSVNFLCBpbnAsIHN0
Y2IsIG5ldCwKKwkgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBfUENCICsgU0NUUF9MT0Nf
OSk7CisJc2N0cF90aW1lcl9zdG9wKFNDVFBfVElNRVJfVFlQRV9IRUFSVEJFQVQsIGlucCwgc3Rj
YiwgbmV0LAorCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUF9QQ0IgKyBTQ1RQX0xPQ18x
MCk7CisJbmV0LT5kZXN0X3N0YXRlIHw9IFNDVFBfQUREUl9CRUlOR19ERUxFVEVEOwogCXNjdHBf
ZnJlZV9yZW1vdGVfYWRkcihuZXQpOwogfQogCkBAIC01NDAwLDkgKzUzNzYsNiBAQCBzY3RwX2Fk
ZF92dGFnX3RvX3RpbWV3YWl0KHVpbnQzMl90IHRhZywgdWludDMyX3QgdGltZSwgdWludDE2X3Qg
bHBvcnQsIHVpbnQxNl90CiAJCVNDVFBfTUFMTE9DKHR3YWl0X2Jsb2NrLCBzdHJ1Y3Qgc2N0cF90
YWdibG9jayAqLAogCQkgICAgc2l6ZW9mKHN0cnVjdCBzY3RwX3RhZ2Jsb2NrKSwgU0NUUF9NX1RJ
TVcpOwogCQlpZiAodHdhaXRfYmxvY2sgPT0gTlVMTCkgewotI2lmZGVmIElOVkFSSUFOVFMKLQkJ
CXBhbmljKCJDYW4gbm90IGFsbG9jIHRhZ2Jsb2NrIik7Ci0jZW5kaWYKIAkJCXJldHVybjsKIAkJ
fQogCQltZW1zZXQodHdhaXRfYmxvY2ssIDAsIHNpemVvZihzdHJ1Y3Qgc2N0cF90YWdibG9jaykp
OwpAQCAtNTQ1NSwxMCArNTQyOCw2IEBAIHNjdHBfY2xlYW5fdXBfc3RyZWFtKHN0cnVjdCBzY3Rw
X3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfcmVhZGhlYWQgKnJoKQogCX0KIH0KIAotI2lmZGVmIF9f
UGFuZGFfXwotdm9pZCBwYW5kYV93YWtldXBfc29ja2V0KHN0cnVjdCBzb2NrZXQgKnNvKTsKLSNl
bmRpZgotCiAvKi0KICAqIEZyZWUgdGhlIGFzc29jaWF0aW9uIGFmdGVyIHVuLWhhc2hpbmcgdGhl
IHJlbW90ZSBwb3J0LiBUaGlzCiAgKiBmdW5jdGlvbiBBTFdBWVMgcmV0dXJucyBob2xkaW5nIE5P
IExPQ0sgb24gdGhlIHN0Y2IuIEl0IERPRVMKQEAgLTU0ODQsNyArNTQ1Myw3IEBAIHNjdHBfZnJl
ZV9hc3NvYyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIGlu
dCBmcm9tX2lucGNiZnJlCiAJc3RydWN0IHNvY2tldCAqc287CiAKIAkvKiBmaXJzdCwgbGV0cyBw
dXJnZSB0aGUgZW50cnkgZnJvbSB0aGUgaGFzaCB0YWJsZS4gKi8KLSNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
IAlzY3RwX2xvY2tfYXNzZXJ0KFNDVFBfSU5QX1NPKGlucCkpOwogI2VuZGlmCiAKQEAgLTU0OTgs
MTcgKzU0NjcsMTggQEAgc2N0cF9mcmVlX2Fzc29jKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0
cnVjdCBzY3RwX3RjYiAqc3RjYiwgaW50IGZyb21faW5wY2JmcmUKIAkJLyogdGhlcmUgaXMgbm8g
YXNvYywgcmVhbGx5IFRTTkggOi0wICovCiAJCXJldHVybiAoMSk7CiAJfQorCVNDVFBfVENCX1NF
TkRfTE9DSyhzdGNiKTsKIAlpZiAoc3RjYi0+YXNvYy5hbHRlcm5hdGUpIHsKIAkJc2N0cF9mcmVl
X3JlbW90ZV9hZGRyKHN0Y2ItPmFzb2MuYWx0ZXJuYXRlKTsKIAkJc3RjYi0+YXNvYy5hbHRlcm5h
dGUgPSBOVUxMOwogCX0KLSNpZiAhZGVmaW5lZChfX0FQUExFX18pIC8qIFRFTVA6IG1vdmVkIHRv
IGJlbG93ICovCi0gICAgICAgIC8qIFRFTVAgQ09ERSAqLworI2lmICEoZGVmaW5lZChfX0FQUExF
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pKQorCS8qIFRFTVAgQ09ERSAqLwogCWlmIChz
dGNiLT5mcmVlZF9mcm9tX3doZXJlID09IDApIHsKIAkJLyogT25seSByZWNvcmQgdGhlIGZpcnN0
IHBsYWNlIGZyZWUgaGFwcGVuZWQgZnJvbSAqLwogCQlzdGNiLT5mcmVlZF9mcm9tX3doZXJlID0g
ZnJvbV9sb2NhdGlvbjsKIAl9Ci0gICAgICAgIC8qIFRFTVAgQ09ERSAqLworCS8qIFRFTVAgQ09E
RSAqLwogI2VuZGlmCiAKIAlhc29jID0gJnN0Y2ItPmFzb2M7CkBAIC01NTM0LDYgKzU1MDQsNyBA
QCBzY3RwX2ZyZWVfYXNzb2Moc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNi
ICpzdGNiLCBpbnQgZnJvbV9pbnBjYmZyZQogCQkJLyogbm9wZSwgcmVhZGVyIG9yIHdyaXRlciBp
biB0aGUgd2F5ICovCiAJCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9BU09DS0lM
TCwgaW5wLCBzdGNiLCBOVUxMKTsKIAkJCS8qIG5vIGFzb2MgZGVzdHJveWVkICovCisJCQlTQ1RQ
X1RDQl9TRU5EX1VOTE9DSyhzdGNiKTsKIAkJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKICNpZmRl
ZiBTQ1RQX0xPR19DTE9TSU5HCiAJCQlzY3RwX2xvZ19jbG9zaW5nKGlucCwgc3RjYiwgOCk7CkBA
IC01NTQxLDQwICs1NTEyLDExIEBAIHNjdHBfZnJlZV9hc3NvYyhzdHJ1Y3Qgc2N0cF9pbnBjYiAq
aW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIGludCBmcm9tX2lucGNiZnJlCiAJCQlyZXR1cm4g
KDApOwogCQl9CiAJfQotCS8qIG5vdyBjbGVhbiB1cCBhbnkgb3RoZXIgdGltZXJzICovCi0JKHZv
aWQpU0NUUF9PU19USU1FUl9TVE9QKCZhc29jLT5kYWNrX3RpbWVyLnRpbWVyKTsKLQlhc29jLT5k
YWNrX3RpbWVyLnNlbGYgPSBOVUxMOwotCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmYXNvYy0+
c3RycmVzZXRfdGltZXIudGltZXIpOwotCS8qLQotCSAqIEZvciBzdHJlYW0gcmVzZXQgd2UgZG9u
J3QgYmxhc3QgdGhpcyB1bmxlc3MKLQkgKiBpdCBpcyBhIHN0ci1yZXNldCB0aW1lciwgaXQgbWln
aHQgYmUgdGhlCi0JICogZnJlZS1hc29jIHRpbWVyIHdoaWNoIHdlIERPTidUIHdhbnQgdG8KLQkg
KiBkaXN0dXJiLgotCSAqLwotCWlmIChhc29jLT5zdHJyZXNldF90aW1lci50eXBlID09IFNDVFBf
VElNRVJfVFlQRV9TVFJSRVNFVCkKLQkJYXNvYy0+c3RycmVzZXRfdGltZXIuc2VsZiA9IE5VTEw7
Ci0JKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCZhc29jLT5hc2NvbmZfdGltZXIudGltZXIpOwot
CWFzb2MtPmFzY29uZl90aW1lci5zZWxmID0gTlVMTDsKLQkodm9pZClTQ1RQX09TX1RJTUVSX1NU
T1AoJmFzb2MtPmF1dG9jbG9zZV90aW1lci50aW1lcik7Ci0JYXNvYy0+YXV0b2Nsb3NlX3RpbWVy
LnNlbGYgPSBOVUxMOwotCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmYXNvYy0+c2h1dF9ndWFy
ZF90aW1lci50aW1lcik7Ci0JYXNvYy0+c2h1dF9ndWFyZF90aW1lci5zZWxmID0gTlVMTDsKLQko
dm9pZClTQ1RQX09TX1RJTUVSX1NUT1AoJmFzb2MtPmRlbGF5ZWRfZXZlbnRfdGltZXIudGltZXIp
OwotCWFzb2MtPmRlbGF5ZWRfZXZlbnRfdGltZXIuc2VsZiA9IE5VTEw7Ci0JLyogTW9iaWxpdHkg
YWRhcHRhdGlvbiAqLwotCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmYXNvYy0+ZGVsZXRlX3By
aW1fdGltZXIudGltZXIpOwotCWFzb2MtPmRlbGV0ZV9wcmltX3RpbWVyLnNlbGYgPSBOVUxMOwot
CVRBSUxRX0ZPUkVBQ0gobmV0LCAmYXNvYy0+bmV0cywgc2N0cF9uZXh0KSB7Ci0JCSh2b2lkKVND
VFBfT1NfVElNRVJfU1RPUCgmbmV0LT5yeHRfdGltZXIudGltZXIpOwotCQluZXQtPnJ4dF90aW1l
ci5zZWxmID0gTlVMTDsKLQkJKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCZuZXQtPnBtdHVfdGlt
ZXIudGltZXIpOwotCQluZXQtPnBtdHVfdGltZXIuc2VsZiA9IE5VTEw7Ci0JCSh2b2lkKVNDVFBf
T1NfVElNRVJfU1RPUCgmbmV0LT5oYl90aW1lci50aW1lcik7Ci0JCW5ldC0+aGJfdGltZXIuc2Vs
ZiA9IE5VTEw7Ci0JfQorCS8qIE5vdyBjbGVhbiB1cCBhbnkgb3RoZXIgdGltZXJzICovCisJc2N0
cF9zdG9wX2Fzc29jaWF0aW9uX3RpbWVycyhzdGNiLCBmYWxzZSk7CiAJLyogTm93IHRoZSByZWFk
IHF1ZXVlIG5lZWRzIHRvIGJlIGNsZWFuZWQgdXAgKG9ubHkgb25jZSkgKi8KIAlpZiAoKHN0Y2It
PmFzb2Muc3RhdGUgJiBTQ1RQX1NUQVRFX0FCT1VUX1RPX0JFX0ZSRUVEKSA9PSAwKSB7Ci0JCXN0
Y2ItPmFzb2Muc3RhdGUgfD0gU0NUUF9TVEFURV9BQk9VVF9UT19CRV9GUkVFRDsKKwkJU0NUUF9B
RERfU1VCU1RBVEUoc3RjYiwgU0NUUF9TVEFURV9BQk9VVF9UT19CRV9GUkVFRCk7CiAJCVNDVFBf
SU5QX1JFQURfTE9DSyhpbnApOwogCQlUQUlMUV9GT1JFQUNIKHNxLCAmaW5wLT5yZWFkX3F1ZXVl
LCBuZXh0KSB7CiAJCQlpZiAoc3EtPnN0Y2IgPT0gc3RjYikgewpAQCAtNTYyMSw5ICs1NTYzLDEw
IEBAIHNjdHBfZnJlZV9hc3NvYyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90
Y2IgKnN0Y2IsIGludCBmcm9tX2lucGNiZnJlCiAJCWlmICgoc3RjYi0+YXNvYy5yZWZjbnQpICB8
fAogCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1NPQ0tFVF9BTExHT05F
KSB8fAogCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1NPQ0tFVF9HT05F
KSkgewotCQkJc3RjYi0+YXNvYy5zdGF0ZSAmPSB+U0NUUF9TVEFURV9JTl9BQ0NFUFRfUVVFVUU7
CisJCQlTQ1RQX0NMRUFSX1NVQlNUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfSU5fQUNDRVBUX1FVRVVF
KTsKIAkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX0FTT0NLSUxMLCBpbnAsIHN0
Y2IsIE5VTEwpOwogCQl9CisJCVNDVFBfVENCX1NFTkRfVU5MT0NLKHN0Y2IpOwogCQlTQ1RQX1RD
Ql9VTkxPQ0soc3RjYik7CiAJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1Nf
U09DS0VUX0FMTEdPTkUpIHx8CiAJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxB
R1NfU09DS0VUX0dPTkUpKQpAQCAtNTY2MiwxMCArNTYwNSwxMiBAQCBzY3RwX2ZyZWVfYXNzb2Mo
c3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLCBpbnQgZnJvbV9p
bnBjYmZyZQogCWlmIChmcm9tX2lucGNiZnJlZSA9PSBTQ1RQX05PUk1BTF9QUk9DKSB7CiAJCWF0
b21pY19hZGRfaW50KCZzdGNiLT5hc29jLnJlZmNudCwgMSk7CiAKKwkJU0NUUF9UQ0JfU0VORF9V
TkxPQ0soc3RjYik7CiAJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKIAkJU0NUUF9JTlBfSU5GT19X
TE9DSygpOwogCQlTQ1RQX0lOUF9XTE9DSyhpbnApOwogCQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwor
CQlTQ1RQX1RDQl9TRU5EX0xPQ0soc3RjYik7CiAJfQogCS8qIERvdWJsZSBjaGVjayB0aGUgR09O
RSBmbGFnICovCiAJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19TT0NLRVRf
QUxMR09ORSkgfHwKQEAgLTU2ODQsMTMgKzU2MjksMTIgQEAgc2N0cF9mcmVlX2Fzc29jKHN0cnVj
dCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgaW50IGZyb21faW5wY2Jm
cmUKIAkJCWlucC0+c2N0cF9mbGFncyB8PSBTQ1RQX1BDQl9GTEFHU19XQVNfQ09OTkVDVEVEOwog
CQkJaWYgKHNvKSB7CiAJCQkJU09DS0JVRl9MT0NLKCZzby0+c29fcmN2KTsKLQkJCQlpZiAoc28t
PnNvX3Jjdi5zYl9jYyA9PSAwKSB7Ci0JCQkJCXNvLT5zb19zdGF0ZSAmPSB+KFNTX0lTQ09OTkVD
VElORyB8Ci0JCQkJCQkJICBTU19JU0RJU0NPTk5FQ1RJTkcgfAotCQkJCQkJCSAgU1NfSVNDT05G
SVJNSU5HIHwKLQkJCQkJCQkgIFNTX0lTQ09OTkVDVEVEKTsKLQkJCQl9Ci0jaWYgZGVmaW5lZChf
X0FQUExFX18pCisJCQkJc28tPnNvX3N0YXRlICY9IH4oU1NfSVNDT05ORUNUSU5HIHwKKwkJCQkg
ICAgU1NfSVNESVNDT05ORUNUSU5HIHwKKwkJCQkgICAgU1NfSVNDT05GSVJNSU5HIHwKKwkJCQkg
ICAgU1NfSVNDT05ORUNURUQpOworCQkJCXNvLT5zb19zdGF0ZSB8PSBTU19JU0RJU0NPTk5FQ1RF
RDsKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJ
CQlzb2NhbnRyY3Ztb3JlKHNvKTsKICNlbHNlCiAJCQkJc29jYW50cmN2bW9yZV9sb2NrZWQoc28p
OwpAQCAtNTcxMSwxMiArNTY1NSwxMyBAQCBzY3RwX2ZyZWVfYXNzb2Moc3RydWN0IHNjdHBfaW5w
Y2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLCBpbnQgZnJvbV9pbnBjYmZyZQogCQlhdG9t
aWNfYWRkX2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIC0xKTsKIAl9CiAJaWYgKHN0Y2ItPmFzb2Mu
cmVmY250KSB7Ci0JCXN0Y2ItPmFzb2Muc3RhdGUgJj0gflNDVFBfU1RBVEVfSU5fQUNDRVBUX1FV
RVVFOworCQlTQ1RQX0NMRUFSX1NVQlNUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfSU5fQUNDRVBUX1FV
RVVFKTsKIAkJc2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfQVNPQ0tJTEwsIGlucCwg
c3RjYiwgTlVMTCk7CiAJCWlmIChmcm9tX2lucGNiZnJlZSA9PSBTQ1RQX05PUk1BTF9QUk9DKSB7
CiAJCQlTQ1RQX0lOUF9JTkZPX1dVTkxPQ0soKTsKIAkJCVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsK
IAkJfQorCQlTQ1RQX1RDQl9TRU5EX1VOTE9DSyhzdGNiKTsKIAkJU0NUUF9UQ0JfVU5MT0NLKHN0
Y2IpOwogCQlyZXR1cm4gKDApOwogCX0KQEAgLTU3NDEsMjAgKzU2ODYsOCBAQCBzY3RwX2ZyZWVf
YXNzb2Moc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLCBpbnQg
ZnJvbV9pbnBjYmZyZQogCS8qIE5vdyByZXN0b3AgdGhlIHRpbWVycyB0byBiZSBzdXJlCiAJICog
dGhpcyBpcyBwYXJhbm9pYSBhdCBpcyBmaW5lc3QhCiAJICovCi0JKHZvaWQpU0NUUF9PU19USU1F
Ul9TVE9QKCZhc29jLT5zdHJyZXNldF90aW1lci50aW1lcik7Ci0JKHZvaWQpU0NUUF9PU19USU1F
Ul9TVE9QKCZhc29jLT5kYWNrX3RpbWVyLnRpbWVyKTsKLQkodm9pZClTQ1RQX09TX1RJTUVSX1NU
T1AoJmFzb2MtPnN0cnJlc2V0X3RpbWVyLnRpbWVyKTsKLQkodm9pZClTQ1RQX09TX1RJTUVSX1NU
T1AoJmFzb2MtPmFzY29uZl90aW1lci50aW1lcik7Ci0JKHZvaWQpU0NUUF9PU19USU1FUl9TVE9Q
KCZhc29jLT5zaHV0X2d1YXJkX3RpbWVyLnRpbWVyKTsKLQkodm9pZClTQ1RQX09TX1RJTUVSX1NU
T1AoJmFzb2MtPmF1dG9jbG9zZV90aW1lci50aW1lcik7Ci0JKHZvaWQpU0NUUF9PU19USU1FUl9T
VE9QKCZhc29jLT5kZWxheWVkX2V2ZW50X3RpbWVyLnRpbWVyKTsKLQlUQUlMUV9GT1JFQUNIKG5l
dCwgJmFzb2MtPm5ldHMsIHNjdHBfbmV4dCkgewotCQkodm9pZClTQ1RQX09TX1RJTUVSX1NUT1Ao
Jm5ldC0+cnh0X3RpbWVyLnRpbWVyKTsKLQkJKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCZuZXQt
PnBtdHVfdGltZXIudGltZXIpOwotCQkodm9pZClTQ1RQX09TX1RJTUVSX1NUT1AoJm5ldC0+aGJf
dGltZXIudGltZXIpOwotCX0KLQotCWFzb2MtPnN0cnJlc2V0X3RpbWVyLnR5cGUgPSBTQ1RQX1RJ
TUVSX1RZUEVfTk9ORTsKKwlzY3RwX3N0b3BfYXNzb2NpYXRpb25fdGltZXJzKHN0Y2IsIHRydWUp
OworCiAJLyoKIAkgKiBUaGUgY2h1bmsgbGlzdHMgYW5kIHN1Y2ggU0hPVUxEIGJlIGVtcHR5IGJ1
dCB3ZSBjaGVjayB0aGVtIGp1c3QKIAkgKiBpbiBjYXNlLgpAQCAtNTc2OCw3ICs1NzAxLDcgQEAg
c2N0cF9mcmVlX2Fzc29jKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAq
c3RjYiwgaW50IGZyb21faW5wY2JmcmUKIAkJVEFJTFFfRk9SRUFDSF9TQUZFKHNwLCAmb3V0cy0+
b3V0cXVldWUsIG5leHQsIG5zcCkgewogCQkJYXRvbWljX3N1YnRyYWN0X2ludCgmYXNvYy0+c3Ry
ZWFtX3F1ZXVlX2NudCwgMSk7CiAJCQlUQUlMUV9SRU1PVkUoJm91dHMtPm91dHF1ZXVlLCBzcCwg
bmV4dCk7Ci0JCQlzdGNiLT5hc29jLnNzX2Z1bmN0aW9ucy5zY3RwX3NzX3JlbW92ZV9mcm9tX3N0
cmVhbShzdGNiLCBhc29jLCBvdXRzLCBzcCwgMCk7CisJCQlzdGNiLT5hc29jLnNzX2Z1bmN0aW9u
cy5zY3RwX3NzX3JlbW92ZV9mcm9tX3N0cmVhbShzdGNiLCBhc29jLCBvdXRzLCBzcCwgMSk7CiAJ
CQlzY3RwX2ZyZWVfc3BidWZzcGFjZShzdGNiLCBhc29jLCBzcCk7CiAJCQlpZiAoc3AtPmRhdGEp
IHsKIAkJCQlpZiAoc28pIHsKQEAgLTU5OTEsNiArNTkyNCw3IEBAIHNjdHBfZnJlZV9hc3NvYyhz
dHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIGludCBmcm9tX2lu
cGNiZnJlCiAJLyogSW5zZXJ0IG5ldyBpdGVtcyBoZXJlIDo+ICovCiAKIAkvKiBHZXQgcmlkIG9m
IExPQ0sgKi8KKwlTQ1RQX1RDQl9TRU5EX1VOTE9DSyhzdGNiKTsKIAlTQ1RQX1RDQl9VTkxPQ0so
c3RjYik7CiAJU0NUUF9UQ0JfTE9DS19ERVNUUk9ZKHN0Y2IpOwogCVNDVFBfVENCX1NFTkRfTE9D
S19ERVNUUk9ZKHN0Y2IpOwpAQCAtNTk5OCw3ICs1OTMyLDggQEAgc2N0cF9mcmVlX2Fzc29jKHN0
cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgaW50IGZyb21faW5w
Y2JmcmUKIAkJU0NUUF9JTlBfSU5GT19XVU5MT0NLKCk7CiAJCVNDVFBfSU5QX1JMT0NLKGlucCk7
CiAJfQotI2lmIGRlZmluZWQoX19BUFBMRV9fKSAvKiBURU1QIENPREUgKi8KKyNpZiBkZWZpbmVk
KF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkvKiBURU1QIENPREUgKi8K
IAlzdGNiLT5mcmVlZF9mcm9tX3doZXJlID0gZnJvbV9sb2NhdGlvbjsKICNlbmRpZgogI2lmZGVm
IFNDVFBfVFJBQ0tfRlJFRURfQVNPQ1MKQEAgLTYwMzEsMTYgKzU5NjYsMTIgQEAgc2N0cF9mcmVl
X2Fzc29jKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgaW50
IGZyb21faW5wY2JmcmUKIAkJCQkJU0NUUF9GUkVFX1NIT1VMRF9VU0VfR1JBQ0VGVUxfQ0xPU0Us
CiAJCQkJCVNDVFBfQ0FMTEVEX0RJUkVDVExZX05PQ01QU0VUKTsKIAkJCVNDVFBfSU5QX0RFQ1Jf
UkVGKGlucCk7Ci0JCQlnb3RvIG91dF9vZjsKIAkJfSBlbHNlIHsKIAkJCS8qIFRoZSBzb2NrZXQg
aXMgc3RpbGwgb3Blbi4gKi8KIAkJCVNDVFBfSU5QX0RFQ1JfUkVGKGlucCk7CisJCQlTQ1RQX0lO
UF9SVU5MT0NLKGlucCk7CiAJCX0KIAl9Ci0JaWYgKGZyb21faW5wY2JmcmVlID09IFNDVFBfTk9S
TUFMX1BST0MpIHsKLQkJU0NUUF9JTlBfUlVOTE9DSyhpbnApOwotCX0KLSBvdXRfb2Y6CiAJLyog
ZGVzdHJveWVkIHRoZSBhc29jICovCiAjaWZkZWYgU0NUUF9MT0dfQ0xPU0lORwogCXNjdHBfbG9n
X2Nsb3NpbmcoaW5wLCBOVUxMLCAxMSk7CkBAIC02MDg5LDIwICs2MDIwLDEyIEBAIHNjdHBfZGVz
dGluYXRpb25faXNfcmVhY2hhYmxlKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNvY2th
ZGRyICpkZXN0YWRkcikKIAlzd2l0Y2ggKGRlc3RhZGRyLT5zYV9mYW1pbHkpIHsKICNpZmRlZiBJ
TkVUNgogCWNhc2UgQUZfSU5FVDY6Ci0jaWYgIShkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZp
bmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJz
cGFjZV9fKSkKLQkJYW5zd2VyID0gaW5wLT5pbnBfdmZsYWcgJiBJTlBfSVBWNjsKLSNlbHNlCiAJ
CWFuc3dlciA9IGlucC0+aXBfaW5wLmlucC5pbnBfdmZsYWcgJiBJTlBfSVBWNjsKLSNlbmRpZgog
CQlicmVhazsKICNlbmRpZgogI2lmZGVmIElORVQKIAljYXNlIEFGX0lORVQ6Ci0jaWYgIShkZWZp
bmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRv
d3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkKLQkJYW5zd2VyID0gaW5wLT5pbnBfdmZs
YWcgJiBJTlBfSVBWNDsKLSNlbHNlCiAJCWFuc3dlciA9IGlucC0+aXBfaW5wLmlucC5pbnBfdmZs
YWcgJiBJTlBfSVBWNDsKLSNlbmRpZgogCQlicmVhazsKICNlbmRpZgogI2lmIGRlZmluZWQoX19V
c2Vyc3BhY2VfXykKQEAgLTYxMjcsMTEgKzYwNTAsNyBAQCBzY3RwX3VwZGF0ZV9lcF92ZmxhZyhz
dHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wKQogCXN0cnVjdCBzY3RwX2xhZGRyICpsYWRkcjsKIAogCS8q
IGZpcnN0IGNsZWFyIHRoZSBmbGFnICovCi0jaWYgIShkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBk
ZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKSkKLQlpbnAtPmlucF92ZmxhZyA9IDA7Ci0jZWxzZQogCWlucC0+aXBfaW5wLmlu
cC5pbnBfdmZsYWcgPSAwOwotI2VuZGlmCiAJLyogc2V0IHRoZSBmbGFnIGJhc2VkIG9uIGFkZHJl
c3NlcyBvbiB0aGUgZXAgbGlzdCAqLwogCUxJU1RfRk9SRUFDSChsYWRkciwgJmlucC0+c2N0cF9h
ZGRyX2xpc3QsIHNjdHBfbnh0X2FkZHIpIHsKIAkJaWYgKGxhZGRyLT5pZmEgPT0gTlVMTCkgewpA
QCAtNjE0NiwyMCArNjA2NSwxMiBAQCBzY3RwX3VwZGF0ZV9lcF92ZmxhZyhzdHJ1Y3Qgc2N0cF9p
bnBjYiAqaW5wKQogCQlzd2l0Y2ggKGxhZGRyLT5pZmEtPmFkZHJlc3Muc2Euc2FfZmFtaWx5KSB7
CiAjaWZkZWYgSU5FVDYKIAkJY2FzZSBBRl9JTkVUNjoKLSNpZiAhKGRlZmluZWQoX19GcmVlQlNE
X18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKSB8fCBkZWZp
bmVkKF9fVXNlcnNwYWNlX18pKQotCQkJaW5wLT5pbnBfdmZsYWcgfD0gSU5QX0lQVjY7Ci0jZWxz
ZQogCQkJaW5wLT5pcF9pbnAuaW5wLmlucF92ZmxhZyB8PSBJTlBfSVBWNjsKLSNlbmRpZgogCQkJ
YnJlYWs7CiAjZW5kaWYKICNpZmRlZiBJTkVUCiAJCWNhc2UgQUZfSU5FVDoKLSNpZiAhKGRlZmlu
ZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93
c19fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pKQotCQkJaW5wLT5pbnBfdmZsYWcgfD0gSU5Q
X0lQVjQ7Ci0jZWxzZQogCQkJaW5wLT5pcF9pbnAuaW5wLmlucF92ZmxhZyB8PSBJTlBfSVBWNDsK
LSNlbmRpZgogCQkJYnJlYWs7CiAjZW5kaWYKICNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCkBA
IC02MjE2LDIwICs2MTI3LDEyIEBAIHNjdHBfYWRkX2xvY2FsX2FkZHJfZXAoc3RydWN0IHNjdHBf
aW5wY2IgKmlucCwgc3RydWN0IHNjdHBfaWZhICppZmEsIHVpbnQzMl90IGFjCiAJCXN3aXRjaCAo
aWZhLT5hZGRyZXNzLnNhLnNhX2ZhbWlseSkgewogI2lmZGVmIElORVQ2CiAJCWNhc2UgQUZfSU5F
VDY6Ci0jaWYgIShkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwg
ZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkKLQkJCWlucC0+
aW5wX3ZmbGFnIHw9IElOUF9JUFY2OwotI2Vsc2UKIAkJCWlucC0+aXBfaW5wLmlucC5pbnBfdmZs
YWcgfD0gSU5QX0lQVjY7Ci0jZW5kaWYKIAkJCWJyZWFrOwogI2VuZGlmCiAjaWZkZWYgSU5FVAog
CQljYXNlIEFGX0lORVQ6Ci0jaWYgIShkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9f
QVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9f
KSkKLQkJCWlucC0+aW5wX3ZmbGFnIHw9IElOUF9JUFY0OwotI2Vsc2UKIAkJCWlucC0+aXBfaW5w
LmlucC5pbnBfdmZsYWcgfD0gSU5QX0lQVjQ7Ci0jZW5kaWYKIAkJCWJyZWFrOwogI2VuZGlmCiAj
aWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQpAQCAtNjMyMyw2ICs2MjI2LDkgQEAgc2N0cF9kZWxf
bG9jYWxfYWRkcl9lcChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF9pZmEgKmlm
YSkKIAkJCVRBSUxRX0ZPUkVBQ0gobmV0LCAmc3RjYi0+YXNvYy5uZXRzLCBzY3RwX25leHQpIHsK
IAkJCQlpZiAobmV0LT5yby5fc19hZGRyID09IGxhZGRyLT5pZmEpIHsKIAkJCQkJLyogWWVwLCBw
dXJnZSBzcmMgYWRkcmVzcyBzZWxlY3RlZCAqLworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQkJCVJPX05IRlJFRSgmbmV0LT5ybyk7CisjZWxz
ZQogCQkJCQlzY3RwX3J0ZW50cnlfdCAqcnQ7CiAKIAkJCQkJLyogZGVsZXRlIHRoaXMgYWRkcmVz
cyBpZiBjYWNoZWQgKi8KQEAgLTYzMzEsNiArNjIzNyw3IEBAIHNjdHBfZGVsX2xvY2FsX2FkZHJf
ZXAoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfaWZhICppZmEpCiAJCQkJCQlS
VEZSRUUocnQpOwogCQkJCQkJbmV0LT5yby5yb19ydCA9IE5VTEw7CiAJCQkJCX0KKyNlbmRpZgog
CQkJCQlzY3RwX2ZyZWVfaWZhKG5ldC0+cm8uX3NfYWRkcik7CiAJCQkJCW5ldC0+cm8uX3NfYWRk
ciA9IE5VTEw7CiAJCQkJCW5ldC0+c3JjX2FkZHJfc2VsZWN0ZWQgPSAwOwpAQCAtNjQyNiwyMCAr
NjMzMywxNyBAQCBzY3RwX2RlbF9sb2NhbF9hZGRyX3Jlc3RyaWN0ZWQoc3RydWN0IHNjdHBfdGNi
ICpzdGNiLCBzdHJ1Y3Qgc2N0cF9pZmEgKmlmYSkKIAlyZXR1cm47CiB9CiAKLSNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKQotLyoKLSAqIFRlbXBvcmFyaWx5IHJlbW92ZSBmb3IgX19BUFBMRV9fIHVu
dGlsIHdlIHVzZSB0aGUgVGlnZXIgZXF1aXZhbGVudHMKLSAqLworI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAvKiBzeXNjdGwgKi8KIHN0YXRpYyBp
bnQgc2N0cF9tYXhfbnVtYmVyX29mX2Fzc29jID0gU0NUUF9NQVhfTlVNX09GX0FTT0M7CiBzdGF0
aWMgaW50IHNjdHBfc2NhbGVfdXBfZm9yX2FkZHJlc3MgPSBTQ1RQX1NDQUxFX0ZPUl9BRERSOwot
I2VuZGlmCQkJCS8qIEZyZWVCU0QgfHwgQVBQTEUgKi8KLQotCisjZW5kaWYKIAotI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmIGRlZmluZWQoU0NUUF9NQ09SRV9JTlBVVCkgJiYgZGVmaW5lZChT
TVApCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
KyNpZiBkZWZpbmVkKFNDVFBfTUNPUkVfSU5QVVQpICYmIGRlZmluZWQoU01QKQogc3RydWN0IHNj
dHBfbWNvcmVfY3RybCAqc2N0cF9tY29yZV93b3JrZXJzID0gTlVMTDsKIGludCAqc2N0cF9jcHVh
cnJ5ID0gTlVMTDsKKwogdm9pZAogc2N0cF9xdWV1ZV90b19tY29yZShzdHJ1Y3QgbWJ1ZiAqbSwg
aW50IG9mZiwgaW50IGNwdV90b191c2UpCiB7CkBAIC02NDQ3LDYgKzYzNTEsNyBAQCBzY3RwX3F1
ZXVlX3RvX21jb3JlKHN0cnVjdCBtYnVmICptLCBpbnQgb2ZmLCBpbnQgY3B1X3RvX3VzZSkKIAlz
dHJ1Y3Qgc2N0cF9tY29yZV9xdWV1ZSAqcWVudDsKIAlzdHJ1Y3Qgc2N0cF9tY29yZV9jdHJsICp3
a3E7CiAJaW50IG5lZWRfd2FrZSA9IDA7CisKIAlpZiAoc2N0cF9tY29yZV93b3JrZXJzID09IE5V
TEwpIHsKIAkJLyogU29tZXRoaW5nIHdlbnQgd2F5IGJhZCBkdXJpbmcgc2V0dXAgKi8KIAkJc2N0
cF9pbnB1dF93aXRoX3BvcnQobSwgb2ZmLCAwKTsKQEAgLTY0NjAsOSArNjM2NSw3IEBAIHNjdHBf
cXVldWVfdG9fbWNvcmUoc3RydWN0IG1idWYgKm0sIGludCBvZmYsIGludCBjcHVfdG9fdXNlKQog
CQlzY3RwX2lucHV0X3dpdGhfcG9ydChtLCBvZmYsIDApOwogCQlyZXR1cm47CiAJfQotI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMTAwMAogCXFlbnQt
PnZuID0gY3Vydm5ldDsKLSNlbmRpZgogCXFlbnQtPm0gPSBtOwogCXFlbnQtPm9mZiA9IG9mZjsK
IAlxZW50LT52NiA9IDA7CkBAIC02NTE0LDkgKzY0MTcsNyBAQCBzY3RwX21jb3JlX3RocmVhZCh2
b2lkICphcmcpCiAJCWlmIChxZW50KSB7CiAJCQlUQUlMUV9SRU1PVkUoJndrcS0+cXVlLCBxZW50
LCBuZXh0KTsKIAkJCVNDVFBfTUNPUkVfUVVOTE9DSyh3a3EpOwotI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMTAwMAogCQkJQ1VSVk5FVF9TRVQocWVu
dC0+dm4pOwotI2VuZGlmCiAJCQltID0gcWVudC0+bTsKIAkJCW9mZiA9IHFlbnQtPm9mZjsKIAkJ
CXY2ID0gcWVudC0+djY7CkBAIC02NTI3LDkgKzY0MjgsNyBAQCBzY3RwX21jb3JlX3RocmVhZCh2
b2lkICphcmcpCiAJCQkJU0NUUF9QUklOVEYoIlY2IG5vdCB5ZXQgc3VwcG9ydGVkXG4iKTsKIAkJ
CQlzY3RwX21fZnJlZW0obSk7CiAJCQl9Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19G
cmVlQlNEX3ZlcnNpb24gPj0gODAxMDAwCiAJCQlDVVJWTkVUX1JFU1RPUkUoKTsKLSNlbmRpZgog
CQkJU0NUUF9NQ09SRV9RTE9DSyh3a3EpOwogCQl9CiAJCXdrcS0+cnVubmluZyA9IDA7CkBAIC02
NTgzLDMwICs2NDgyLDIxIEBAIHNjdHBfc3RhcnR1cF9tY29yZV90aHJlYWRzKHZvaWQpCiAJCQlp
Kys7CiAJCX0KIAl9Ci0KIAkvKiBOb3cgc3RhcnQgdGhlbSBhbGwgKi8KIAlDUFVfRk9SRUFDSChj
cHUpIHsKLSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA8PSA3MDEwMDAKLQkJKHZvaWQpa3RocmVhZF9j
cmVhdGUoc2N0cF9tY29yZV90aHJlYWQsCi0JCQkJICAgICAodm9pZCAqKSZzY3RwX21jb3JlX3dv
cmtlcnNbY3B1XSwKLQkJCQkgICAgICZzY3RwX21jb3JlX3dvcmtlcnNbY3B1XS50aHJlYWRfcHJv
YywKLQkJCQkgICAgIFJGUFJPQywKLQkJCQkgICAgIFNDVFBfS1RIUkVBRF9QQUdFUywKLQkJCQkg
ICAgIFNDVFBfTUNPUkVfTkFNRSk7Ci0KLSNlbHNlCiAJCSh2b2lkKWtwcm9jX2NyZWF0ZShzY3Rw
X21jb3JlX3RocmVhZCwKIAkJCQkgICAodm9pZCAqKSZzY3RwX21jb3JlX3dvcmtlcnNbY3B1XSwK
IAkJCQkgICAmc2N0cF9tY29yZV93b3JrZXJzW2NwdV0udGhyZWFkX3Byb2MsCiAJCQkJICAgUkZQ
Uk9DLAogCQkJCSAgIFNDVFBfS1RIUkVBRF9QQUdFUywKIAkJCQkgICBTQ1RQX01DT1JFX05BTUUp
OwotI2VuZGlmCi0KIAl9CiB9CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBf
X0ZyZWVCU0RfY2NfdmVyc2lvbiA+PSAxMzAwMDAwCisjZW5kaWYKKworI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaWYgZGVmaW5lZChTQ1RQX05P
VF9ZRVQpCiBzdGF0aWMgc3RydWN0IG1idWYgKgogc2N0cF9uZXRpc3JfaGRscihzdHJ1Y3QgbWJ1
ZiAqbSwgdWludHB0cl90IHNvdXJjZSkKIHsKQEAgLTY2MzIsMTQgKzY1MjIsMTkgQEAgc2N0cF9u
ZXRpc3JfaGRscihzdHJ1Y3QgbWJ1ZiAqbSwgdWludHB0cl90IHNvdXJjZSkKIAl0YWcgPSBodG9u
bChzaC0+dl90YWcpOwogCWZsb3dpZCA9IHRhZyBeIG50b2hzKHNoLT5kZXN0X3BvcnQpIF4gbnRv
aHMoc2gtPnNyY19wb3J0KTsKIAltLT5tX3BrdGhkci5mbG93aWQgPSBmbG93aWQ7Ci0vKiBGSVgg
TUUgKi8KKwkvKiBGSVggTUUgKi8KIAltLT5tX2ZsYWdzIHw9IE1fRkxPV0lEOwogCXJldHVybiAo
bSk7CiB9Ci0jZW5kaWYKIAorI2VuZGlmCisjZW5kaWYKIHZvaWQKLXNjdHBfcGNiX2luaXQoKQor
I2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKK3NjdHBfcGNiX2luaXQoaW50IHN0YXJ0X3RocmVh
ZHMpCisjZWxzZQorc2N0cF9wY2JfaW5pdCh2b2lkKQorI2VuZGlmCiB7CiAJLyoKIAkgKiBTQ1RQ
IGluaXRpYWxpemF0aW9uIGZvciB0aGUgUENCIHN0cnVjdHVyZXMgc2hvdWxkIGJlIGNhbGxlZCBi
eQpAQCAtNjY1NSw3ICs2NTUwLDcgQEAgc2N0cF9wY2JfaW5pdCgpCiAJU0NUUF9CQVNFX1ZBUihz
Y3RwX3BjYl9pbml0aWFsaXplZCkgPSAxOwogCiAjaWYgZGVmaW5lZChTQ1RQX1BST0NFU1NfTEVW
RUxfTE9DS1MpCi0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiAhZGVm
aW5lZChfV0lOMzIpCiAJcHRocmVhZF9tdXRleGF0dHJfaW5pdCgmU0NUUF9CQVNFX1ZBUihtdHhf
YXR0cikpOwogI2lmZGVmIElOVkFSSUFOVFMKIAlwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlKCZT
Q1RQX0JBU0VfVkFSKG10eF9hdHRyKSwgUFRIUkVBRF9NVVRFWF9FUlJPUkNIRUNLKTsKQEAgLTY2
NjMsNyArNjU1OCw3IEBAIHNjdHBfcGNiX2luaXQoKQogI2VuZGlmCiAjZW5kaWYKICNpZiBkZWZp
bmVkKFNDVFBfTE9DQUxfVFJBQ0VfQlVGKQotI2lmIGRlZmluZWQoX19XaW5kb3dzX18pCisjaWYg
ZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJaWYgKFNDVFBfQkFT
RV9TWVNDVEwoc2N0cF9sb2cpICE9IE5VTEwpIHsKIAkJbWVtc2V0KFNDVFBfQkFTRV9TWVNDVEwo
c2N0cF9sb2cpLCAwLCBzaXplb2Yoc3RydWN0IHNjdHBfbG9nKSk7CiAJfQpAQCAtNjY3MSwxNiAr
NjU2NiwyNCBAQCBzY3RwX3BjYl9pbml0KCkKIAltZW1zZXQoJlNDVFBfQkFTRV9TWVNDVEwoc2N0
cF9sb2cpLCAwLCBzaXplb2Yoc3RydWN0IHNjdHBfbG9nKSk7CiAjZW5kaWYKICNlbmRpZgotI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmIGRlZmluZWQoU01QKSAmJiBkZWZpbmVkKFNDVFBfVVNF
X1BFUkNQVV9TVEFUKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCisjaWYgZGVmaW5lZChTTVApICYmIGRlZmluZWQoU0NUUF9VU0VfUEVSQ1BVX1NU
QVQpCiAJU0NUUF9NQUxMT0MoU0NUUF9CQVNFX1NUQVRTLCBzdHJ1Y3Qgc2N0cHN0YXQgKiwKIAkJ
ICAgICgobXBfbWF4aWQrMSkgKiBzaXplb2Yoc3RydWN0IHNjdHBzdGF0KSksCiAJCSAgICBTQ1RQ
X01fTUNPUkUpOworI2VuZGlmCiAjZW5kaWYKIAkodm9pZClTQ1RQX0dFVFRJTUVfVElNRVZBTCgm
dHYpOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIGRlZmluZWQoU01QKSAmJiBkZWZpbmVk
KFNDVFBfVVNFX1BFUkNQVV9TVEFUKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCisjaWYgZGVmaW5lZChTTVApICYmIGRlZmluZWQoU0NUUF9VU0Vf
UEVSQ1BVX1NUQVQpCiAJbWVtc2V0KFNDVFBfQkFTRV9TVEFUUywgMCwgc2l6ZW9mKHN0cnVjdCBz
Y3Rwc3RhdCkgKiAobXBfbWF4aWQrMSkpOwogCVNDVFBfQkFTRV9TVEFUU1tQQ1BVX0dFVChjcHVp
ZCldLnNjdHBzX2Rpc2NvbnRpbnVpdHl0aW1lLnR2X3NlYyA9ICh1aW50MzJfdCl0di50dl9zZWM7
CiAJU0NUUF9CQVNFX1NUQVRTW1BDUFVfR0VUKGNwdWlkKV0uc2N0cHNfZGlzY29udGludWl0eXRp
bWUudHZfdXNlYyA9ICh1aW50MzJfdCl0di50dl91c2VjOworI2Vsc2UKKwltZW1zZXQoJlNDVFBf
QkFTRV9TVEFUUywgMCwgc2l6ZW9mKHN0cnVjdCBzY3Rwc3RhdCkpOworCVNDVFBfQkFTRV9TVEFU
KHNjdHBzX2Rpc2NvbnRpbnVpdHl0aW1lKS50dl9zZWMgPSAodWludDMyX3QpdHYudHZfc2VjOwor
CVNDVFBfQkFTRV9TVEFUKHNjdHBzX2Rpc2NvbnRpbnVpdHl0aW1lKS50dl91c2VjID0gKHVpbnQz
Ml90KXR2LnR2X3VzZWM7CisjZW5kaWYKICNlbHNlCiAJbWVtc2V0KCZTQ1RQX0JBU0VfU1RBVFMs
IDAsIHNpemVvZihzdHJ1Y3Qgc2N0cHN0YXQpKTsKIAlTQ1RQX0JBU0VfU1RBVChzY3Rwc19kaXNj
b250aW51aXR5dGltZSkudHZfc2VjID0gKHVpbnQzMl90KXR2LnR2X3NlYzsKQEAgLTY2ODgsNyAr
NjU5MSw3IEBAIHNjdHBfcGNiX2luaXQoKQogI2VuZGlmCiAJLyogaW5pdCB0aGUgZW1wdHkgbGlz
dCBvZiAoQWxsKSBFbmRwb2ludHMgKi8KIAlMSVNUX0lOSVQoJlNDVFBfQkFTRV9JTkZPKGxpc3Ro
ZWFkKSk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJTElTVF9JTklUKCZTQ1RQX0JBU0VfSU5GTyhpbnBs
aXN0aGVhZCkpOwogI2lmIGRlZmluZWQoQVBQTEVfTEVPUEFSRCkgfHwgZGVmaW5lZChBUFBMRV9T
Tk9XTEVPUEFSRCkgfHwgZGVmaW5lZChBUFBMRV9MSU9OKSB8fCBkZWZpbmVkKEFQUExFX01PVU5U
QUlOTElPTikKIAlTQ1RQX0JBU0VfSU5GTyhzY3RiaW5mbykubGlzdGhlYWQgPSAmU0NUUF9CQVNF
X0lORk8oaW5wbGlzdGhlYWQpOwpAQCAtNjcxMywxOSArNjYxNiwxMCBAQCBzY3RwX3BjYl9pbml0
KCkKIAogCiAJLyogaW5pdCB0aGUgaGFzaCB0YWJsZSBvZiBlbmRwb2ludHMgKi8KLSNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKQotI2lmIGRlZmluZWQoX19GcmVlQlNEX2NjX3ZlcnNpb24pICYmIF9f
RnJlZUJTRF9jY192ZXJzaW9uID49IDQ0MDAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJVFVOQUJMRV9JTlRfRkVUQ0goIm5ldC5pbmV0LnNj
dHAudGNiaGFzaHNpemUiLCAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2hhc2h0YmxzaXplKSk7CiAJ
VFVOQUJMRV9JTlRfRkVUQ0goIm5ldC5pbmV0LnNjdHAucGNiaGFzaHNpemUiLCAmU0NUUF9CQVNF
X1NZU0NUTChzY3RwX3BjYnRibHNpemUpKTsKIAlUVU5BQkxFX0lOVF9GRVRDSCgibmV0LmluZXQu
c2N0cC5jaHVua3NjYWxlIiwgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9jaHVua3NjYWxlKSk7Ci0j
ZWxzZQotCVRVTkFCTEVfSU5UX0ZFVENIKCJuZXQuaW5ldC5zY3RwLnRjYmhhc2hzaXplIiwgU0NU
UF9UQ0JIQVNIU0laRSwKLQkJCSAgU0NUUF9CQVNFX1NZU0NUTChzY3RwX2hhc2h0YmxzaXplKSk7
Ci0JVFVOQUJMRV9JTlRfRkVUQ0goIm5ldC5pbmV0LnNjdHAucGNiaGFzaHNpemUiLCBTQ1RQX1BD
QkhBU0hTSVpFLAotCQkJICBTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfcGNidGJsc2l6ZSkpOwotCVRV
TkFCTEVfSU5UX0ZFVENIKCJuZXQuaW5ldC5zY3RwLmNodW5rc2NhbGUiLCBTQ1RQX0NIVU5LUVVF
VUVfU0NBTEUsCi0JCQkgIFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9jaHVua3NjYWxlKSk7Ci0jZW5k
aWYKICNlbmRpZgogCVNDVFBfQkFTRV9JTkZPKHNjdHBfYXNvY2hhc2gpID0gU0NUUF9IQVNIX0lO
SVQoKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9oYXNodGJsc2l6ZSkgKiAzMSksCiAJCQkJCQkgICAg
ICAgJlNDVFBfQkFTRV9JTkZPKGhhc2hhc29jbWFyaykpOwpAQCAtNjgyMCw3ICs2NzE0LDcgQEAg
c2N0cF9wY2JfaW5pdCgpCiAJCUxJU1RfSU5JVCgmU0NUUF9CQVNFX0lORk8odnRhZ190aW1ld2Fp
dClbaV0pOwogCX0KICNpZiBkZWZpbmVkKFNDVFBfUFJPQ0VTU19MRVZFTF9MT0NLUykKLSNpZiBk
ZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJSW5p
dGlhbGl6ZUNvbmRpdGlvblZhcmlhYmxlKCZzY3RwX2l0X2N0bC5pdGVyYXRvcl93YWtldXApOwog
I2Vsc2UKIAkodm9pZClwdGhyZWFkX2NvbmRfaW5pdCgmc2N0cF9pdF9jdGwuaXRlcmF0b3Jfd2Fr
ZXVwLCBOVUxMKTsKQEAgLTY4MjgsMTkgKzY3MjIsMTkgQEAgc2N0cF9wY2JfaW5pdCgpCiAjZW5k
aWYKIAlzY3RwX3N0YXJ0dXBfaXRlcmF0b3IoKTsKIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
ICYmIGRlZmluZWQoU0NUUF9NQ09SRV9JTlBVVCkgJiYgZGVmaW5lZChTTVApCisjaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiBkZWZpbmVkKFND
VFBfTUNPUkVfSU5QVVQpICYmIGRlZmluZWQoU01QKQogCXNjdHBfc3RhcnR1cF9tY29yZV90aHJl
YWRzKCk7CisjZW5kaWYKICNlbmRpZgogCi0jaWZuZGVmIF9fUGFuZGFfXwogCS8qCiAJICogSU5J
VCB0aGUgZGVmYXVsdCBWUkYgd2hpY2ggZm9yIEJTRCBpcyB0aGUgb25seSBvbmUsIG90aGVyIE8v
UydzCiAJICogbWF5IGhhdmUgbW9yZS4gQnV0IGluaXRpYWxseSB0aGV5IG11c3Qgc3RhcnQgd2l0
aCBvbmUgYW5kIHRoZW4KIAkgKiBhZGQgdGhlIFZSRidzIGFzIGFkZHJlc3NlcyBhcmUgYWRkZWQu
CiAJICovCiAJc2N0cF9pbml0X3ZyZl9saXN0KFNDVFBfREVGQVVMVF9WUkYpOwotI2VuZGlmCi0j
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX2NjX3ZlcnNpb24gPj0gMTMwMDAw
MAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pICYm
IGRlZmluZWQoU0NUUF9OT1RfWUVUKQogCWlmIChpcF9yZWdpc3Rlcl9mbG93X2hhbmRsZXIoc2N0
cF9uZXRpc3JfaGRsciwgSVBQUk9UT19TQ1RQKSkgewogCQlTQ1RQX1BSSU5URigiKioqU0NUUC0g
RXJyb3IgY2FuJ3QgcmVnaXN0ZXIgbmV0aXNyIGhhbmRsZXIqKipcbiIpOwogCX0KQEAgLTY4NTIs
OCArNjc0NiwxMSBAQCBzY3RwX3BjYl9pbml0KCkKICNlbmRpZgogI2lmIGRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKIAltYnVmX2luaXRpYWxpemUoTlVMTCk7CisgICAgLy8gV2ViS2l0IGNoYW5nZSwg
dGhpcyBjb25mbGljdHMgd2l0aCBhdG9taWNfaW5pdAorCS8vIGF0b21pY19pbml0KCk7CiAjaWYg
ZGVmaW5lZChJTkVUKSB8fCBkZWZpbmVkKElORVQ2KQotCXJlY3ZfdGhyZWFkX2luaXQoKTsKKwlp
ZiAoc3RhcnRfdGhyZWFkcykKKwkJcmVjdl90aHJlYWRfaW5pdCgpOwogI2VuZGlmCiAjZW5kaWYK
IH0KQEAgLTY4NzksMTQgKzY3NzYsMTQgQEAgc2N0cF9wY2JfZmluaXNoKHZvaWQpCiAJCXJldHVy
bjsKIAl9CiAJU0NUUF9CQVNFX1ZBUihzY3RwX3BjYl9pbml0aWFsaXplZCkgPSAwOwotI2lmICFk
ZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmICEoZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykpCiAJLyogTm90aWZ5IHRoZSBpdGVyYXRvciB0byBleGl0LiAqLwog
CVNDVFBfSVBJX0lURVJBVE9SX1dRX0xPQ0soKTsKIAlzY3RwX2l0X2N0bC5pdGVyYXRvcl9mbGFn
cyB8PSBTQ1RQX0lURVJBVE9SX01VU1RfRVhJVDsKIAlzY3RwX3dha2V1cF9pdGVyYXRvcigpOwog
CVNDVFBfSVBJX0lURVJBVE9SX1dRX1VOTE9DSygpOwogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0FQ
UExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAjaWYgIWRlZmluZWQoQVBQTEVfTEVPUEFSRCkgJiYgIWRlZmluZWQoQVBQTEVfU05PV0xFT1BB
UkQpICYmICFkZWZpbmVkKEFQUExFX0xJT04pICYmICFkZWZpbmVkKEFQUExFX01PVU5UQUlOTElP
TikKIAlpbl9wY2JpbmZvX2RldGFjaCgmU0NUUF9CQVNFX0lORk8oc2N0YmluZm8pKTsKICNlbmRp
ZgpAQCAtNjg5OSw3ICs2Nzk2LDcgQEAgc2N0cF9wY2JfZmluaXNoKHZvaWQpCiAJdGhyZWFkX2Rl
YWxsb2NhdGUoc2N0cF9pdF9jdGwudGhyZWFkX3Byb2MpOwogCVNDVFBfSVBJX0lURVJBVE9SX1dR
X1VOTE9DSygpOwogI2VuZGlmCi0jaWYgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiBkZWZpbmVk
KF9XSU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlpZiAoc2N0cF9pdF9jdGwuaXRl
cmF0b3JfdGhyZWFkX29iaiAhPSBOVUxMKSB7CiAJCU5UU1RBVFVTIHN0YXR1cyA9IFNUQVRVU19T
VUNDRVNTOwogCkBAIC02OTEzLDggKzY4MTAsOCBAQCBzY3RwX3BjYl9maW5pc2godm9pZCkKIAl9
CiAjZW5kaWYKICNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi0JaWYgKHNjdHBfaXRfY3RsLnRo
cmVhZF9wcm9jKSB7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorCWlmIChT
Q1RQX0JBU0VfVkFSKGl0ZXJhdG9yX3RocmVhZF9zdGFydGVkKSkgeworI2lmIGRlZmluZWQoX1dJ
TjMyKQogCQlXYWl0Rm9yU2luZ2xlT2JqZWN0KHNjdHBfaXRfY3RsLnRocmVhZF9wcm9jLCBJTkZJ
TklURSk7CiAJCUNsb3NlSGFuZGxlKHNjdHBfaXRfY3RsLnRocmVhZF9wcm9jKTsKIAkJc2N0cF9p
dF9jdGwudGhyZWFkX3Byb2MgPSBOVUxMOwpAQCAtNjkyNSw3ICs2ODIyLDcgQEAgc2N0cF9wY2Jf
ZmluaXNoKHZvaWQpCiAJfQogI2VuZGlmCiAjaWYgZGVmaW5lZChTQ1RQX1BST0NFU1NfTEVWRUxf
TE9DS1MpCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQo
X1dJTjMyKQogCURlbGV0ZUNvbmRpdGlvblZhcmlhYmxlKCZzY3RwX2l0X2N0bC5pdGVyYXRvcl93
YWtldXApOwogI2Vsc2UKIAlwdGhyZWFkX2NvbmRfZGVzdHJveSgmc2N0cF9pdF9jdGwuaXRlcmF0
b3Jfd2FrZXVwKTsKQEAgLTY5MzcsMTcgKzY4MzQsMTcgQEAgc2N0cF9wY2JfZmluaXNoKHZvaWQp
CiAJICogVGhlIG9ubHkgd2F5IEZyZWVCU0QgcmVhY2hlcyBoZXJlIGlzIGlmIHdlIGhhdmUgVlJG
J3MKIAkgKiBidXQgd2Ugc3RpbGwgYWRkIHRoZSBpZmRlZiB0byBtYWtlIGl0IGNvbXBpbGUgb24g
b2xkIHZlcnNpb25zLgogCSAqLwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIHJldHJ5OgogI2VuZGlm
CiAJU0NUUF9JUElfSVRFUkFUT1JfV1FfTE9DSygpOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkv
KgogCSAqIHNjdHBfaXRlcmF0b3Jfd29ya2VyKCkgbWlnaHQgYmUgd29ya2luZyBvbiBhbiBpdCBl
bnRyeSB3aXRob3V0CiAJICogaG9sZGluZyB0aGUgbG9jay4gIFdlIHdvbid0IGZpbmQgaXQgb24g
dGhlIGxpc3QgZWl0aGVyIGFuZAogCSAqIGNvbnRpbnVlIGFuZCBmcmVlL2Rlc3Ryb3kgaXQuICBX
aGlsZSBob2xkaW5nIHRoZSBsb2NrLCBzcGluLCB0bwogCSAqIGF2b2lkIHRoZSByYWNlIGNvbmRp
dGlvbiBhcyBzY3RwX2l0ZXJhdG9yX3dvcmtlcigpIHdpbGwgaGF2ZSB0bwotCSAqIHdhaXQgdG8g
cmUtYXF1aXJlIHRoZSBsb2NrLgorCSAqIHdhaXQgdG8gcmUtYWNxdWlyZSB0aGUgbG9jay4KIAkg
Ki8KIAlpZiAoc2N0cF9pdF9jdGwuaXRlcmF0b3JfcnVubmluZyAhPSAwIHx8IHNjdHBfaXRfY3Rs
LmN1cl9pdCAhPSBOVUxMKSB7CiAJCVNDVFBfSVBJX0lURVJBVE9SX1dRX1VOTE9DSygpOwpAQCAt
Njk1OCw3ICs2ODU1LDcgQEAgcmV0cnk6CiAJfQogI2VuZGlmCiAJVEFJTFFfRk9SRUFDSF9TQUZF
KGl0LCAmc2N0cF9pdF9jdGwuaXRlcmF0b3JoZWFkLCBzY3RwX254dF9pdHIsIG5pdCkgewotI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMTAwMAorI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCWlmIChp
dC0+dm4gIT0gY3Vydm5ldCkgewogCQkJY29udGludWU7CiAJCX0KQEAgLTY5NzAsNyArNjg2Nyw3
IEBAIHJldHJ5OgogCQlTQ1RQX0ZSRUUoaXQsU0NUUF9NX0lURVIpOwogCX0KIAlTQ1RQX0lQSV9J
VEVSQVRPUl9XUV9VTkxPQ0soKTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVC
U0RfdmVyc2lvbiA+PSA4MDEwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogCVNDVFBfSVRFUkFUT1JfTE9DSygpOwogCWlmICgoc2N0cF9pdF9j
dGwuY3VyX2l0KSAmJgogCSAgICAoc2N0cF9pdF9jdGwuY3VyX2l0LT52biA9PSBjdXJ2bmV0KSkg
ewpAQCAtNjk3OCw3ICs2ODc1LDcgQEAgcmV0cnk6CiAJfQogCVNDVFBfSVRFUkFUT1JfVU5MT0NL
KCk7CiAjZW5kaWYKLSNpZiAhZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiAhKGRlZmluZWQoX19G
cmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pKQogCVNDVFBfSVBJX0lURVJBVE9S
X1dRX0RFU1RST1koKTsKIAlTQ1RQX0lURVJBVE9SX0xPQ0tfREVTVFJPWSgpOwogI2VuZGlmCkBA
IC02OTk4LDYgKzY4OTUsNyBAQCByZXRyeToKIAkgKiBmcmVlIHRoZSB2cmYvaWZuL2lmYSBsaXN0
cyBhbmQgaGFzaGVzIChiZSBzdXJlIGFkZHJlc3MgbW9uaXRvcgogCSAqIGlzIGRlc3Ryb3llZCBm
aXJzdCkuCiAJICovCisJU0NUUF9JUElfQUREUl9XTE9DSygpOwogCXZyZl9idWNrZXQgPSAmU0NU
UF9CQVNFX0lORk8oc2N0cF92cmZoYXNoKVsoU0NUUF9ERUZBVUxUX1ZSRklEICYgU0NUUF9CQVNF
X0lORk8oaGFzaHZyZm1hcmspKV07CiAJTElTVF9GT1JFQUNIX1NBRkUodnJmLCB2cmZfYnVja2V0
LCBuZXh0X3ZyZiwgbnZyZikgewogCQlMSVNUX0ZPUkVBQ0hfU0FGRShpZm4sICZ2cmYtPmlmbmxp
c3QsIG5leHRfaWZuLCBuaWZuKSB7CkBAIC03MDE3LDYgKzY5MTUsNyBAQCByZXRyeToKIAkJTElT
VF9SRU1PVkUodnJmLCBuZXh0X3ZyZik7CiAJCVNDVFBfRlJFRSh2cmYsIFNDVFBfTV9WUkYpOwog
CX0KKwlTQ1RQX0lQSV9BRERSX1dVTkxPQ0soKTsKIAkvKiBmcmVlIHRoZSB2cmYgaGFzaGVzICov
CiAJU0NUUF9IQVNIX0ZSRUUoU0NUUF9CQVNFX0lORk8oc2N0cF92cmZoYXNoKSwgU0NUUF9CQVNF
X0lORk8oaGFzaHZyZm1hcmspKTsKIAlTQ1RQX0hBU0hfRlJFRShTQ1RQX0JBU0VfSU5GTyh2cmZf
aWZuX2hhc2gpLCBTQ1RQX0JBU0VfSU5GTyh2cmZfaWZuX2hhc2htYXJrKSk7CkBAIC03MDM5LDE0
ICs2OTM4LDE0IEBAIHJldHJ5OgogCX0KIAogCS8qIGZyZWUgdGhlIGxvY2tzIGFuZCBtdXRleGVz
ICovCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJU0NUUF9USU1FUlFfTE9DS19ERVNUUk9ZKCk7CiAjZW5k
aWYKICNpZmRlZiBTQ1RQX1BBQ0tFVF9MT0dHSU5HCiAJU0NUUF9JUF9QS1RMT0dfREVTVFJPWSgp
OwogI2VuZGlmCiAJU0NUUF9JUElfQUREUl9ERVNUUk9ZKCk7Ci0jaWYgZGVmaW5lZChfX0FQUExF
X18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJ
U0NUUF9JUElfQ09VTlRfREVTVFJPWSgpOwogI2VuZGlmCiAJU0NUUF9TVEFUTE9HX0RFU1RST1ko
KTsKQEAgLTcwNTQsNyArNjk1Myw3IEBAIHJldHJ5OgogCiAJU0NUUF9XUV9BRERSX0RFU1RST1ko
KTsKIAotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmIGRlZmluZWQoQVBQTEVfTEVPUEFSRCkgfHwgZGVm
aW5lZChBUFBMRV9TTk9XTEVPUEFSRCkgfHwgZGVmaW5lZChBUFBMRV9MSU9OKSB8fCBkZWZpbmVk
KEFQUExFX01PVU5UQUlOTElPTikKIAlsY2tfZ3JwX2F0dHJfZnJlZShTQ1RQX0JBU0VfSU5GTyhz
Y3RiaW5mbykubXR4X2dycF9hdHRyKTsKIAlsY2tfZ3JwX2ZyZWUoU0NUUF9CQVNFX0lORk8oc2N0
YmluZm8pLm10eF9ncnApOwpAQCAtNzA3OSw3ICs2OTc4LDcgQEAgcmV0cnk6CiAJaWYgKFNDVFBf
QkFTRV9JTkZPKHNjdHBfdGNwZXBoYXNoKSAhPSBOVUxMKQogCQlTQ1RQX0hBU0hfRlJFRShTQ1RQ
X0JBU0VfSU5GTyhzY3RwX3RjcGVwaGFzaCksIFNDVFBfQkFTRV9JTkZPKGhhc2h0Y3BtYXJrKSk7
CiAKLSNpZiBkZWZpbmVkKF9fV2luZG93c19fKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19G
cmVlQlNEX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlTQ1RQX1pPTkVfREVTVFJPWShT
Q1RQX0JBU0VfSU5GTyhpcGlfem9uZV9lcCkpOwogCVNDVFBfWk9ORV9ERVNUUk9ZKFNDVFBfQkFT
RV9JTkZPKGlwaV96b25lX2Fzb2MpKTsKIAlTQ1RQX1pPTkVfREVTVFJPWShTQ1RQX0JBU0VfSU5G
TyhpcGlfem9uZV9sYWRkcikpOwpAQCAtNzA5MCw5ICs2OTg5LDExIEBAIHJldHJ5OgogCVNDVFBf
Wk9ORV9ERVNUUk9ZKFNDVFBfQkFTRV9JTkZPKGlwaV96b25lX2FzY29uZikpOwogCVNDVFBfWk9O
RV9ERVNUUk9ZKFNDVFBfQkFTRV9JTkZPKGlwaV96b25lX2FzY29uZl9hY2spKTsKICNlbmRpZgot
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIGRlZmluZWQoU01QKSAmJiBkZWZpbmVkKFNDVFBf
VVNFX1BFUkNQVV9TVEFUKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCisjaWYgZGVmaW5lZChTTVApICYmIGRlZmluZWQoU0NUUF9VU0VfUEVSQ1BV
X1NUQVQpCiAJU0NUUF9GUkVFKFNDVFBfQkFTRV9TVEFUUywgU0NUUF9NX01DT1JFKTsKICNlbmRp
ZgorI2VuZGlmCiB9CiAKIApAQCAtNzMxNCwxMyArNzIxNSwxMyBAQCBzY3RwX2xvYWRfYWRkcmVz
c2VzX2Zyb21faW5pdChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBtYnVmICptLAogCQkJ
CQkgKiBhc3NvYz8gc3RyYWlnaHRlbiBvdXQgbG9ja3MuCiAJCQkJCSAqLwogCQkJCQlpZiAoc3Rj
Yl90bXApIHsKLQkJCQkJCWlmIChTQ1RQX0dFVF9TVEFURSgmc3RjYl90bXAtPmFzb2MpICYgU0NU
UF9TVEFURV9DT09LSUVfV0FJVCkgeworCQkJCQkJaWYgKFNDVFBfR0VUX1NUQVRFKHN0Y2JfdG1w
KSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB7CiAJCQkJCQkJc3RydWN0IG1idWYgKm9wX2Vy
cjsKIAkJCQkJCQljaGFyIG1zZ1tTQ1RQX0RJQUdfSU5GT19MRU5dOwogCiAJCQkJCQkJLyogaW4g
c2V0dXAgc3RhdGUgd2UgYWJvcnQgdGhpcyBndXkgKi8KLQkJCQkJCQlzbnByaW50Zihtc2csIHNp
emVvZihtc2cpLAotCQkJCQkJCSAgICAgICAgICIlczolZCBhdCAlcyIsIF9fRklMRV9fLCBfX0xJ
TkVfXywgX19mdW5jX18pOworCQkJCQkJCVNDVFBfU05QUklOVEYobXNnLCBzaXplb2YobXNnKSwK
KwkJCQkJCQkgICAgICAgICAgICAgICIlczolZCBhdCAlcyIsIF9fRklMRV9fLCBfX0xJTkVfXywg
X19mdW5jX18pOwogCQkJCQkJCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9CQVNF
X1NZU0NUTChzY3RwX2RpYWdfaW5mb19jb2RlKSwKIAkJCQkJCQkgICAgICAgICBtc2cpOwogCQkJ
CQkJCXNjdHBfYWJvcnRfYW5fYXNzb2NpYXRpb24oc3RjYl90bXAtPnNjdHBfZXAsCkBAIC03NDA4
LDEzICs3MzA5LDEzIEBAIHNjdHBfbG9hZF9hZGRyZXNzZXNfZnJvbV9pbml0KHN0cnVjdCBzY3Rw
X3RjYiAqc3RjYiwgc3RydWN0IG1idWYgKm0sCiAJCQkJCSAqIGFzc29jPyBzdHJhaWdodGVuIG91
dCBsb2Nrcy4KIAkJCQkJICovCiAJCQkJCWlmIChzdGNiX3RtcCkgewotCQkJCQkJaWYgKFNDVFBf
R0VUX1NUQVRFKCZzdGNiX3RtcC0+YXNvYykgJiBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB7CisJ
CQkJCQlpZiAoU0NUUF9HRVRfU1RBVEUoc3RjYl90bXApID09IFNDVFBfU1RBVEVfQ09PS0lFX1dB
SVQpIHsKIAkJCQkJCQlzdHJ1Y3QgbWJ1ZiAqb3BfZXJyOwogCQkJCQkJCWNoYXIgbXNnW1NDVFBf
RElBR19JTkZPX0xFTl07CiAKIAkJCQkJCQkvKiBpbiBzZXR1cCBzdGF0ZSB3ZSBhYm9ydCB0aGlz
IGd1eSAqLwotCQkJCQkJCXNucHJpbnRmKG1zZywgc2l6ZW9mKG1zZyksCi0JCQkJCQkJICAgICAg
ICAgIiVzOiVkIGF0ICVzIiwgX19GSUxFX18sIF9fTElORV9fLCBfX2Z1bmNfXyk7CisJCQkJCQkJ
U0NUUF9TTlBSSU5URihtc2csIHNpemVvZihtc2cpLAorCQkJCQkJCSAgICAgICAgICAgICAgIiVz
OiVkIGF0ICVzIiwgX19GSUxFX18sIF9fTElORV9fLCBfX2Z1bmNfXyk7CiAJCQkJCQkJb3BfZXJy
ID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfZGlhZ19pbmZvX2Nv
ZGUpLAogCQkJCQkJCSAgICAgICAgIG1zZyk7CiAJCQkJCQkJc2N0cF9hYm9ydF9hbl9hc3NvY2lh
dGlvbihzdGNiX3RtcC0+c2N0cF9lcCwKQEAgLTgwNjksNyArNzk3MCw4IEBAIHNjdHBfZHJhaW5f
bWJ1ZnMoc3RydWN0IHNjdHBfdGNiICpzdGNiKQogCQkgKiBhc29jLT5oaWdoZXN0X3Rzbl9pbnNp
ZGVfbWFwPwogCQkgKi8KIAkJYXNvYy0+bGFzdF9yZXZva2VfY291bnQgPSBjbnQ7Ci0JCSh2b2lk
KVNDVFBfT1NfVElNRVJfU1RPUCgmc3RjYi0+YXNvYy5kYWNrX3RpbWVyLnRpbWVyKTsKKwkJc2N0
cF90aW1lcl9zdG9wKFNDVFBfVElNRVJfVFlQRV9SRUNWLCBzdGNiLT5zY3RwX2VwLCBzdGNiLCBO
VUxMLAorCQkgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBfUENCICsgU0NUUF9MT0NfMTEp
OwogCQkvKnNhX2lnbm9yZSBOT19OVUxMX0NISyovCiAJCXNjdHBfc2VuZF9zYWNrKHN0Y2IsIFND
VFBfU09fTk9UX0xPQ0tFRCk7CiAJCXNjdHBfY2h1bmtfb3V0cHV0KHN0Y2ItPnNjdHBfZXAsIHN0
Y2IsIFNDVFBfT1VUUFVUX0ZST01fRFJBSU4sIFNDVFBfU09fTk9UX0xPQ0tFRCk7CkBAIC04MDkz
LDcgKzc5OTUsNyBAQCBzY3RwX2RyYWluKCkKIAkgKiBpcyBMT1cgb24gTUJVRidzIGFuZCBuZWVk
cyBoZWxwLiBUaGlzIGlzIHdoZXJlIHJlbmVnaW5nIHdpbGwKIAkgKiBvY2N1ci4gV2UgcmVhbGx5
IGhvcGUgdGhpcyBkb2VzIE5PVCBoYXBwZW4hCiAJICovCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAxMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlWTkVUX0lURVJBVE9SX0RFQ0wodm5ldF9p
dGVyKTsKICNlbHNlCiAJc3RydWN0IHNjdHBfaW5wY2IgKmlucDsKQEAgLTgxMDQsNyArODAwNiw3
IEBAIHNjdHBfZHJhaW4oKQogCQlyZXR1cm47CiAJfQogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAxMDAwCisjaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlWTkVUX0xJU1RfUkxPQ0tfTk9T
TEVFUCgpOwogCVZORVRfRk9SRUFDSCh2bmV0X2l0ZXIpIHsKIAkJQ1VSVk5FVF9TRVQodm5ldF9p
dGVyKTsKQEAgLTgxMTIsNyArODAxNCw3IEBAIHNjdHBfZHJhaW4oKQogCQlzdHJ1Y3Qgc2N0cF90
Y2IgKnN0Y2I7CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJT
RF92ZXJzaW9uID49IDgwMTAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiAJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3Byb3RvY29sX2RyYWluX2Nh
bGxzKTsKIAkJaWYgKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9kb19kcmFpbikgPT0gMCkgewogI2lm
ZGVmIFZJTUFHRQpAQCAtODEzNSw3ICs4MDM3LDcgQEAgc2N0cF9kcmFpbigpCiAJCQlTQ1RQX0lO
UF9SVU5MT0NLKGlucCk7CiAJCX0KIAkJU0NUUF9JTlBfSU5GT19SVU5MT0NLKCk7Ci0jaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAxMDAwCisjaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJQ1VSVk5FVF9S
RVNUT1JFKCk7CiAJfQogCVZORVRfTElTVF9SVU5MT0NLX05PU0xFRVAoKTsKQEAgLTgxNzgsNyAr
ODA4MCw3IEBAIHNjdHBfaW5pdGlhdGVfaXRlcmF0b3IoaW5wX2Z1bmMgaW5wZiwKIAkJICAgIFND
VFBfTV9JVEVSKTsKIAlpZiAoaXQgPT0gTlVMTCkgewogCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKE5V
TEwsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1BDQiwgRU5PTUVNKTsKLQkJcmV0dXJuIChF
Tk9NRU0pOworCQlyZXR1cm4gKC0xKTsKIAl9CiAJbWVtc2V0KGl0LCAwLCBzaXplb2YoKml0KSk7
CiAJaXQtPmZ1bmN0aW9uX2Fzc29jID0gYWY7CkBAIC04MTk1LDcgKzgwOTcsNyBAQCBzY3RwX2lu
aXRpYXRlX2l0ZXJhdG9yKGlucF9mdW5jIGlucGYsCiAJaXQtPmFzb2Nfc3RhdGUgPSBhc29jX3N0
YXRlOwogCWl0LT5mdW5jdGlvbl9pbnBfZW5kID0gaW5wZTsKIAlpdC0+bm9fY2h1bmtfb3V0cHV0
ID0gY2h1bmtfb3V0cHV0X29mZjsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVC
U0RfdmVyc2lvbiA+PSA4MDEwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogCWl0LT52biA9IGN1cnZuZXQ7CiAjZW5kaWYKIAlpZiAoc19pbnAp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3BjYi5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3Vz
cnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfcGNiLmgKb2xkIG1vZGUgMTAwNjQ0Cm5l
dyBtb2RlIDEwMDc1NQppbmRleCAzNDg4MTg2M2ZmYWEuLjczYjMyNTQ5YjBhZAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0
cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9wY2IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3Rw
bGliL25ldGluZXQvc2N0cF9wY2IuaApAQCAtMzIsOSArMzIsOSBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZmRlZiBfX0ZyZWVCU0RfXworI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8c3lz
L2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9wY2Iu
aCAzMjUzNzAgMjAxNy0xMS0wMyAyMDo0NjoxMlogdHVleGVuICQiKTsKK19fRkJTRElEKCIkRnJl
ZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX3BjYi5oIDM2MjEwNiAyMDIwLTA2LTEyIDE2OjMx
OjEzWiB0dWV4ZW4gJCIpOwogI2VuZGlmCiAKICNpZm5kZWYgX05FVElORVRfU0NUUF9QQ0JfSF8K
QEAgLTE0OSw3ICsxNDksNyBAQCBzdHJ1Y3Qgc2N0cF90YWdibG9jayB7CiAKIAogc3RydWN0IHNj
dHBfZXBpbmZvIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaWZkZWYgSU5FVAogCXN0cnVjdCBz
b2NrZXQgKnVkcDRfdHVuX3NvY2tldDsKICNlbmRpZgpAQCAtMTg5LDcgKzE4OSw3IEBAIHN0cnVj
dCBzY3RwX2VwaW5mbyB7CiAJc3RydWN0IHNjdHBwY2JoZWFkIGxpc3RoZWFkOwogCXN0cnVjdCBz
Y3RwbGFkZHIgYWRkcl93cTsKIAotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQo
X19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCXN0cnVjdCBpbnBjYmhlYWQg
aW5wbGlzdGhlYWQ7CiAJc3RydWN0IGlucGNiaW5mbyBzY3RiaW5mbzsKICNlbmRpZgpAQCAtMjA0
LDE4ICsyMDQsMTAgQEAgc3RydWN0IHNjdHBfZXBpbmZvIHsKIAlzY3RwX3pvbmVfdCBpcGlfem9u
ZV9hc2NvbmY7CiAJc2N0cF96b25lX3QgaXBpX3pvbmVfYXNjb25mX2FjazsKIAotI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMzAwMAotI2lmIF9fRnJl
ZUJTRF92ZXJzaW9uIDw9IDYwMjAwMAotCXN0cnVjdCBtdHggaXBpX2VwX210eDsKLSNlbHNlCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzdHJ1
Y3Qgcndsb2NrIGlwaV9lcF9tdHg7Ci0jZW5kaWYKIAlzdHJ1Y3QgbXR4IGlwaV9pdGVyYXRvcl93
cV9tdHg7Ci0jaWYgX19GcmVlQlNEX3ZlcnNpb24gPD0gNjAyMDAwCi0Jc3RydWN0IG10eCBpcGlf
YWRkcl9tdHg7Ci0jZWxzZQogCXN0cnVjdCByd2xvY2sgaXBpX2FkZHJfbXR4OwotI2VuZGlmCiAJ
c3RydWN0IG10eCBpcGlfcGt0bG9nX210eDsKIAlzdHJ1Y3QgbXR4IHdxX2FkZHJfbXR4OwogI2Vs
aWYgZGVmaW5lZChTQ1RQX1BST0NFU1NfTEVWRUxfTE9DS1MpCkBAIC0yMjQsNyArMjE2LDcgQEAg
c3RydWN0IHNjdHBfZXBpbmZvIHsKIAl1c2VybGFuZF9tdXRleF90IGlwaV9jb3VudF9tdHg7CiAJ
dXNlcmxhbmRfbXV0ZXhfdCBpcGlfcGt0bG9nX210eDsKIAl1c2VybGFuZF9tdXRleF90IHdxX2Fk
ZHJfbXR4OwotI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCisjZWxpZiBkZWZpbmVkKF9fQVBQTEVf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZmRlZiBfS0VSTl9MT0NLU19IXwogCWxj
a19tdHhfdCAqaXBpX2FkZHJfbXR4OwogCWxja19tdHhfdCAqaXBpX2NvdW50X210eDsKQEAgLTIz
NSwxMyArMjI3LDEyIEBAIHN0cnVjdCBzY3RwX2VwaW5mbyB7CiAJdm9pZCAqaXBpX2NvdW50X210
eDsKIAl2b2lkICpsb2dnaW5nX210eDsKICNlbmRpZiAvKiBfS0VSTl9MT0NLU19IXyAqLwotI2Vs
aWYgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNlbGlmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogCXN0cnVjdCByd2xvY2sgaXBpX2VwX2xvY2s7CiAJc3RydWN0IHJ3
bG9jayBpcGlfYWRkcl9sb2NrOwogCXN0cnVjdCBzcGlubG9jayBpcGlfcGt0bG9nX210eDsKIAlz
dHJ1Y3Qgcndsb2NrIHdxX2FkZHJfbXR4OwogI2VsaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQot
ICAgIC8qIFRPRE8gZGVjaWRlIG9uIF9fVXNlcnNwYWNlX18gbG9ja3MgKi8KICNlbmRpZgogCXVp
bnQzMl90IGlwaV9jb3VudF9lcDsKIApAQCAtMjkyLDggKzI4MywxMiBAQCBzdHJ1Y3Qgc2N0cF9i
YXNlX2luZm8gewogCSAqIGFuY2hvciB0aGUgc3lzdGVtIG11c3QgYmUgaGVyZS4KIAkgKi8KIAlz
dHJ1Y3Qgc2N0cF9lcGluZm8gc2N0cHBjYmluZm87Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
JiYgZGVmaW5lZChTTVApICYmIGRlZmluZWQoU0NUUF9VU0VfUEVSQ1BVX1NUQVQpCisjaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiBkZWZpbmVk
KFNNUCkgJiYgZGVmaW5lZChTQ1RQX1VTRV9QRVJDUFVfU1RBVCkKIAlzdHJ1Y3Qgc2N0cHN0YXQg
ICAgKnNjdHBzdGF0OworI2Vsc2UKKwlzdHJ1Y3Qgc2N0cHN0YXQgICAgc2N0cHN0YXQ7CisjZW5k
aWYKICNlbHNlCiAJc3RydWN0IHNjdHBzdGF0ICAgIHNjdHBzdGF0OwogI2VuZGlmCkBAIC0zMDUs
MTQgKzMwMCwxOSBAQCBzdHJ1Y3Qgc2N0cF9iYXNlX2luZm8gewogCWludCBwYWNrZXRfbG9nX2Vu
ZDsKIAl1aW50OF90IHBhY2tldF9sb2dfYnVmZmVyW1NDVFBfUEFDS0VUX0xPR19TSVpFXTsKICNl
bmRpZgotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJZXZlbnRoYW5kbGVyX3RhZyBlaF90YWc7CisjZW5k
aWYKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlp
bnQgc2N0cF9tYWluX3RpbWVyX3RpY2tzOwogI2VuZGlmCiAjaWYgZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogCXVzZXJsYW5kX211dGV4X3QgdGltZXJfbXR4OwogCXVzZXJsYW5kX3RocmVhZF90IHRp
bWVyX3RocmVhZDsKIAlpbnQgdGltZXJfdGhyZWFkX3Nob3VsZF9leGl0OwotI2lmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisJaW50IGl0ZXJhdG9yX3RocmVhZF9zdGFydGVkOwor
CWludCB0aW1lcl90aHJlYWRfc3RhcnRlZDsKKyNpZiAhZGVmaW5lZChfV0lOMzIpCiAJcHRocmVh
ZF9tdXRleGF0dHJfdCBtdHhfYXR0cjsKICNpZiBkZWZpbmVkKElORVQpIHx8IGRlZmluZWQoSU5F
VDYpCiAJaW50IHVzZXJzcGFjZV9yb3V0ZTsKQEAgLTMyMCw3ICszMjAsNyBAQCBzdHJ1Y3Qgc2N0
cF9iYXNlX2luZm8gewogI2VuZGlmCiAjZW5kaWYKICNpZmRlZiBJTkVUCi0jaWYgZGVmaW5lZChf
X1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChf
X01JTkdXMzJfXykKIAlTT0NLRVQgdXNlcnNwYWNlX3Jhd3NjdHA7CiAJU09DS0VUIHVzZXJzcGFj
ZV91ZHBzY3RwOwogI2Vsc2UKQEAgLTMzMSw3ICszMzEsNyBAQCBzdHJ1Y3Qgc2N0cF9iYXNlX2lu
Zm8gewogCXVzZXJsYW5kX3RocmVhZF90IHJlY3Z0aHJlYWR1ZHA7CiAjZW5kaWYKICNpZmRlZiBJ
TkVUNgotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9X
SU4zMikgJiYgIWRlZmluZWQoX19NSU5HVzMyX18pCiAJU09DS0VUIHVzZXJzcGFjZV9yYXdzY3Rw
NjsKIAlTT0NLRVQgdXNlcnNwYWNlX3VkcHNjdHA2OwogI2Vsc2UKQEAgLTM1OCwxMSArMzU4LDEx
IEBAIHN0cnVjdCBzY3RwX3BjYiB7CiAJdWludDMyX3Qgc2VjcmV0X2tleVtTQ1RQX0hPV19NQU5Z
X1NFQ1JFVFNdW1NDVFBfTlVNQkVSX09GX1NFQ1JFVFNdOwogCXVuc2lnbmVkIGludCBzaXplX29m
X2FfY29va2llOwogCi0JdW5zaWduZWQgaW50IHNjdHBfdGltZW91dHRpY2tzW1NDVFBfTlVNX1RN
UlNdOwotCXVuc2lnbmVkIGludCBzY3RwX21pbnJ0bzsKLQl1bnNpZ25lZCBpbnQgc2N0cF9tYXhy
dG87Ci0JdW5zaWduZWQgaW50IGluaXRpYWxfcnRvOwotCWludCBpbml0aWFsX2luaXRfcnRvX21h
eDsKKwl1aW50MzJfdCBzY3RwX3RpbWVvdXR0aWNrc1tTQ1RQX05VTV9UTVJTXTsKKwl1aW50MzJf
dCBzY3RwX21pbnJ0bzsKKwl1aW50MzJfdCBzY3RwX21heHJ0bzsKKwl1aW50MzJfdCBpbml0aWFs
X3J0bzsKKwl1aW50MzJfdCBpbml0aWFsX2luaXRfcnRvX21heDsKIAogCXVuc2lnbmVkIGludCBz
Y3RwX3NhY2tfZnJlcTsKIAl1aW50MzJfdCBzY3RwX3N3c19zZW5kZXI7CkBAIC00MDUsNyArNDA1
LDcgQEAgc3RydWN0IHNjdHBfcGNiIHsKIAogCXVpbnQzMl90IGRlZl9jb29raWVfbGlmZTsKIAkv
KiBkZWZhdWx0cyB0byAwICovCi0JaW50IGF1dG9fY2xvc2VfdGltZTsKKwl1aW50MzJfdCBhdXRv
X2Nsb3NlX3RpbWU7CiAJdWludDMyX3QgaW5pdGlhbF9zZXF1ZW5jZV9kZWJ1ZzsKIAl1aW50MzJf
dCBhZGFwdGF0aW9uX2xheWVyX2luZGljYXRvcjsKIAl1aW50OF90IGFkYXB0YXRpb25fbGF5ZXJf
aW5kaWNhdG9yX3Byb3ZpZGVkOwpAQCAtNDQ4LDExICs0NDgsMTEgQEAgc3RydWN0IHNjdHBfaW5w
Y2IgewogCSAqLwogCXVuaW9uIHsKIAkJc3RydWN0IGlucGNiIGlucDsKLQkJY2hhciBhbGlnblso
c2l6ZW9mKHN0cnVjdCBpbjZwY2IpICsgU0NUUF9BTElHTk0xKSAmCisJCWNoYXIgYWxpZ25bKHNp
emVvZihzdHJ1Y3QgaW5wY2IpICsgU0NUUF9BTElHTk0xKSAmCiAJCSAgICAgICAgflNDVFBfQUxJ
R05NMV07CiAJfSAgICAgaXBfaW5wOwogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVm
aW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJLyogbGVhdmUgc29t
ZSBzcGFjZSBpbiBjYXNlIGkzODYgaW5wY2IgaXMgYmlnZ2VyIHRoYW4gcHBjICovCiAJdWludDhf
dAkJcGFkZGluZ1sxMjhdOwogI2VuZGlmCkBAIC01MDksMjYgKzUwOSw5IEBAIHN0cnVjdCBzY3Rw
X2lucGNiIHsKIAkgKiB0aGV5IGFyZSBjYW5kaWRhdGVzIHdpdGggc2N0cF9zZW5kbSBmb3IKIAkg
KiBkZS1zdXBwb3J0aW5nLgogCSAqLwotI2lmZGVmIF9fUGFuZGFfXwotCXBha2hhbmRsZV90eXBl
IHBha190b19yZWFkOwotCXBha2hhbmRsZV90eXBlIHBha190b19yZWFkX3NlbmRxOwotI2VuZGlm
CiAJc3RydWN0IG1idWYgKnBrdCwgKnBrdF9sYXN0OwogCXN0cnVjdCBtYnVmICpjb250cm9sOwot
I2lmICEoZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmlu
ZWQoX19XaW5kb3dzX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCi0jaWZuZGVmIElOUF9J
UFY2Ci0jZGVmaW5lIElOUF9JUFY2CTB4MQotI2VuZGlmCi0jaWZuZGVmIElOUF9JUFY0Ci0jZGVm
aW5lIElOUF9JUFY0CTB4MgotI2VuZGlmCi0JdWludDhfdCBpbnBfdmZsYWc7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogVE9ETyBfX1VzZXJzcGFjZV9fIHdoZXJlIGlzIG91ciBp
bnBfdmxhZyBnb2luZyB0byBiZT8gKi8KLQl1aW50OF90IGlucF9pcF90dGw7Ci0gICAgICAgIHVp
bnQ4X3QgaW5wX2lwX3RvczsgICAgLyogZGVmaW5lZCBhcyBtYWNybyBpbiB1c2VyX2lucGNiLmgg
Ki8KLQl1aW50OF90IGlucF9pcF9yZXN2OwotI2VuZGlmCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAzMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzdHJ1Y3QgbXR4IGlucF9tdHg7CiAJc3Ry
dWN0IG10eCBpbnBfY3JlYXRlX210eDsKIAlzdHJ1Y3QgbXR4IGlucF9yZGF0YV9tdHg7CkBAIC01
MzgsNyArNTIxLDcgQEAgc3RydWN0IHNjdHBfaW5wY2IgewogCXVzZXJsYW5kX211dGV4X3QgaW5w
X2NyZWF0ZV9tdHg7CiAJdXNlcmxhbmRfbXV0ZXhfdCBpbnBfcmRhdGFfbXR4OwogCWludDMyX3Qg
cmVmY291bnQ7Ci0jZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNlbGlmIGRlZmluZWQoX19BUFBM
RV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmIGRlZmluZWQoU0NUUF9BUFBMRV9S
V0xPQ0spCiAJbGNrX3J3X3QgKmlucF9tdHg7CiAjZWxzZQpAQCAtNTQ2LDE2ICs1MjksMTUgQEAg
c3RydWN0IHNjdHBfaW5wY2IgewogI2VuZGlmCiAJbGNrX210eF90ICppbnBfY3JlYXRlX210eDsK
IAlsY2tfbXR4X3QgKmlucF9yZGF0YV9tdHg7Ci0jZWxpZiBkZWZpbmVkKF9fV2luZG93c19fKQor
I2VsaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJc3RydWN0
IHJ3bG9jayBpbnBfbG9jazsKIAlzdHJ1Y3Qgc3BpbmxvY2sgaW5wX2NyZWF0ZV9sb2NrOwogCXN0
cnVjdCBzcGlubG9jayBpbnBfcmRhdGFfbG9jazsKIAlpbnQzMl90IHJlZmNvdW50OwogI2VsaWYg
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQotICAgIC8qIFRPRE8gZGVjaWRlIG9uIF9fVXNlcnNwYWNl
X18gbG9ja3MgKi8KIAlpbnQzMl90IHJlZmNvdW50OwogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0FQ
UExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAJaW50MzJfdCByZWZjb3VudDsKIAogCXVpbnQzMl90IGxvY2tfY2FsbGVyMTsKQEAgLTU5OSw3
ICs1ODEsNyBAQCBzdHJ1Y3Qgc2N0cF9pbnBjYiB7CiAJaW50ICgqcmVjdl9jYWxsYmFjaykoc3Ry
dWN0IHNvY2tldCAqLCB1bmlvbiBzY3RwX3NvY2tzdG9yZSwgdm9pZCAqLCBzaXplX3QsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY3RwX3JjdmluZm8sIGludCwgdm9pZCAq
KTsKIAl1aW50MzJfdCBzZW5kX3NiX3RocmVzaG9sZDsKLQlpbnQgKCpzZW5kX2NhbGxiYWNrKShz
dHJ1Y3Qgc29ja2V0ICosIHVpbnQzMl90KTsKKwlpbnQgKCpzZW5kX2NhbGxiYWNrKShzdHJ1Y3Qg
c29ja2V0ICosIHVpbnQzMl90LCB2b2lkICopOwogI2VuZGlmCiB9OwogCkBAIC02MDcsOCArNTg5
LDkgQEAgc3RydWN0IHNjdHBfaW5wY2IgewogaW50IHJlZ2lzdGVyX3JlY3ZfY2IgKHN0cnVjdCBz
b2NrZXQgKiwKICAgICAgICAgICAgICAgICAgICAgICBpbnQgKCopKHN0cnVjdCBzb2NrZXQgKiwg
dW5pb24gc2N0cF9zb2Nrc3RvcmUsIHZvaWQgKiwgc2l6ZV90LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IHNjdHBfcmN2aW5mbywgaW50LCB2b2lkICopKTsKLWludCByZWdp
c3Rlcl9zZW5kX2NiIChzdHJ1Y3Qgc29ja2V0ICosIHVpbnQzMl90LCBpbnQgKCopKHN0cnVjdCBz
b2NrZXQgKiwgdWludDMyX3QpKTsKK2ludCByZWdpc3Rlcl9zZW5kX2NiIChzdHJ1Y3Qgc29ja2V0
ICosIHVpbnQzMl90LCBpbnQgKCopKHN0cnVjdCBzb2NrZXQgKiwgdWludDMyX3QsIHZvaWQgKikp
OwogaW50IHJlZ2lzdGVyX3VscF9pbmZvIChzdHJ1Y3Qgc29ja2V0ICosIHZvaWQgKik7CitpbnQg
cmV0cmlldmVfdWxwX2luZm8gKHN0cnVjdCBzb2NrZXQgKiwgdm9pZCAqKik7CiAKICNlbmRpZgog
c3RydWN0IHNjdHBfdGNiIHsKQEAgLTYzNiwyMiArNjE5LDIxIEBAIHN0cnVjdCBzY3RwX3RjYiB7
CiAJaW50IGZyZWVkX2Zyb21fd2hlcmU7CiAJdWludDE2X3QgcnBvcnQ7CQkvKiByZW1vdGUgcG9y
dCBpbiBuZXR3b3JrIGZvcm1hdCAqLwogCXVpbnQxNl90IHJlc3Y7Ci0jaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAzMDAwCisjaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzdHJ1Y3QgbXR4IHRjYl9tdHg7
CiAJc3RydWN0IG10eCB0Y2Jfc2VuZF9tdHg7CiAjZWxpZiBkZWZpbmVkKFNDVFBfUFJPQ0VTU19M
RVZFTF9MT0NLUykKIAl1c2VybGFuZF9tdXRleF90IHRjYl9tdHg7CiAJdXNlcmxhbmRfbXV0ZXhf
dCB0Y2Jfc2VuZF9tdHg7Ci0jZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNlbGlmIGRlZmluZWQo
X19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWxja19tdHhfdCogdGNiX210
eDsKIAlsY2tfbXR4X3QqIHRjYl9zZW5kX210eDsKLSNlbGlmIGRlZmluZWQoX19XaW5kb3dzX18p
CisjZWxpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzdHJ1
Y3Qgc3BpbmxvY2sgdGNiX2xvY2s7CiAJc3RydWN0IHNwaW5sb2NrIHRjYl9zZW5kX2xvY2s7CiAj
ZWxpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi0gICAgLyogVE9ETyBkZWNpZGUgb24gX19Vc2Vy
c3BhY2VfXyBsb2NrcyAqLwogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVm
aW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJdWludDMyX3QgY2Fs
bGVyMTsKIAl1aW50MzJfdCBjYWxsZXIyOwogCXVpbnQzMl90IGNhbGxlcjM7CkBAIC02NTksMTEg
KzY0MSwxMSBAQCBzdHJ1Y3Qgc2N0cF90Y2IgewogfTsKIAogCi0jaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAzMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAogI2luY2x1ZGUgPG5ldGluZXQvc2N0
cF9sb2NrX2JzZC5oPgogCi0jZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNlbGlmIGRlZmluZWQo
X19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogLyoKICAqIEFwcGxlIE1hY09T
IFggMTAuNCAiVGlnZXIiCiAgKi8KQEAgLTY3NCw3ICs2NTYsNyBAQCBzdHJ1Y3Qgc2N0cF90Y2Ig
ewogCiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX3Byb2Nlc3NfbG9jay5oPgogCi0jZWxpZiBkZWZp
bmVkKF9fV2luZG93c19fKQorI2VsaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfbG9ja193aW5kb3dzLmg+CiAKQEAg
LTY4OSwxNCArNjcxLDEzIEBAIHN0cnVjdCBzY3RwX3RjYiB7CiAjaW5jbHVkZSA8bmV0aW5ldC9z
Y3RwX2xvY2tfZW1wdHkuaD4KICNlbmRpZgogCi0vKiBUT0RPIHdoZXJlIHRvIHB1dCBub24tX0tF
Uk5FTCB0aGluZ3MgZm9yIF9fVXNlcnNwYWNlX18/ICovCiAjaWYgZGVmaW5lZChfS0VSTkVMKSB8
fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAKIC8qIEF0dGVudGlvbiBKdWxpYW4sIHRoaXMgaXMg
dGhlIGV4dGVybiB0aGF0CiAgKiBnb2VzIHdpdGggdGhlIGJhc2UgaW5mby4gc2N0cF9wY2IuYyBo
YXMKICAqIHRoZSByZWFsIGRlZmluaXRpb24uCiAgKi8KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDEwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogVk5FVF9ERUNMQVJFKHN0cnVjdCBzY3RwX2Jh
c2VfaW5mbywgc3lzdGVtX2Jhc2VfaW5mbykgOwogI2Vsc2UKIGV4dGVybiBzdHJ1Y3Qgc2N0cF9i
YXNlX2luZm8gc3lzdGVtX2Jhc2VfaW5mbzsKQEAgLTc0OSwxMCArNzMwLDEwIEBAIHN0cnVjdCBz
Y3RwX25ldHMgKnNjdHBfZmluZG5ldChzdHJ1Y3Qgc2N0cF90Y2IgKiwgc3RydWN0IHNvY2thZGRy
ICopOwogCiBzdHJ1Y3Qgc2N0cF9pbnBjYiAqc2N0cF9wY2JfZmluZGVwKHN0cnVjdCBzb2NrYWRk
ciAqLCBpbnQsIGludCwgdWludDMyX3QpOwogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
X19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIGludCBzY3RwX2lucGNiX2JpbmQoc3RydWN0IHNvY2tl
dCAqLCBzdHJ1Y3Qgc29ja2FkZHIgKiwKIAkJICAgIHN0cnVjdCBzY3RwX2lmYSAqLHN0cnVjdCB0
aHJlYWQgKik7Ci0jZWxpZiBkZWZpbmVkKF9fV2luZG93c19fKQorI2VsaWYgZGVmaW5lZChfV0lO
MzIpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBpbnQgc2N0cF9pbnBjYl9iaW5kKHN0cnVj
dCBzb2NrZXQgKiwgc3RydWN0IHNvY2thZGRyICosCiAJCSAgICBzdHJ1Y3Qgc2N0cF9pZmEgKixQ
S1RIUkVBRCk7CiAjZWxzZQpAQCAtODAzLDE5ICs3ODQsMjQgQEAgaW50IHNjdHBfaXNfYWRkcmVz
c19vbl9sb2NhbF9ob3N0KHN0cnVjdCBzb2NrYWRkciAqYWRkciwgdWludDMyX3QgdnJmX2lkKTsK
IAogdm9pZCBzY3RwX2lucGNiX2ZyZWUoc3RydWN0IHNjdHBfaW5wY2IgKiwgaW50LCBpbnQpOwog
Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMDAw
CisjZGVmaW5lIFNDVFBfRE9OVF9JTklUSUFMSVpFX0FVVEhfUEFSQU1TCTAKKyNkZWZpbmUgU0NU
UF9JTklUSUFMSVpFX0FVVEhfUEFSQU1TCQkxCisKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogc3RydWN0IHNjdHBfdGNiICoKIHNjdHBfYWxvY19h
c3NvYyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqLCBzdHJ1Y3Qgc29ja2FkZHIgKiwKLSAgICAgICAgICAg
ICAgICBpbnQgKiwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MTZfdCwgdWludDE2X3QsIHN0cnVj
dCB0aHJlYWQgKik7Ci0jZWxpZiBkZWZpbmVkKF9fV2luZG93c19fKQorICAgICAgICAgICAgICAg
IGludCAqLCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQxNl90LCB1aW50MTZfdCwgc3RydWN0IHRo
cmVhZCAqLAorICAgICAgICAgICAgICAgIGludCk7CisjZWxpZiBkZWZpbmVkKF9XSU4zMikgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIHN0cnVjdCBzY3RwX3RjYiAqCiBzY3RwX2Fsb2NfYXNz
b2Moc3RydWN0IHNjdHBfaW5wY2IgKiwgc3RydWN0IHNvY2thZGRyICosCi0gICAgICAgICAgICAg
ICAgaW50ICosIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDE2X3QsIHVpbnQxNl90LCBQS1RIUkVB
RCk7CisgICAgICAgICAgICAgICAgaW50ICosIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDE2X3Qs
IHVpbnQxNl90LCBQS1RIUkVBRCwgaW50KTsKICNlbHNlCiAvKiBwcm9jIHdpbGwgYmUgTlVMTCBm
b3IgX19Vc2Vyc3BhY2VfXyAqLwogc3RydWN0IHNjdHBfdGNiICoKIHNjdHBfYWxvY19hc3NvYyhz
dHJ1Y3Qgc2N0cF9pbnBjYiAqLCBzdHJ1Y3Qgc29ja2FkZHIgKiwKLSAgICAgICAgICAgICAgICBp
bnQgKiwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MTZfdCwgdWludDE2X3QsIHN0cnVjdCBwcm9j
ICopOworICAgICAgICAgICAgICAgIGludCAqLCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQxNl90
LCB1aW50MTZfdCwgc3RydWN0IHByb2MgKiwKKyAgICAgICAgICAgICAgICBpbnQpOwogI2VuZGlm
CiAKIGludCBzY3RwX2ZyZWVfYXNzb2Moc3RydWN0IHNjdHBfaW5wY2IgKiwgc3RydWN0IHNjdHBf
dGNiICosIGludCwgaW50KTsKQEAgLTgzOCw3ICs4MjQsMTEgQEAgdm9pZCBzY3RwX3JlbW92ZV9u
ZXQoc3RydWN0IHNjdHBfdGNiICosIHN0cnVjdCBzY3RwX25ldHMgKik7CiAKIGludCBzY3RwX2Rl
bF9yZW1vdGVfYWRkcihzdHJ1Y3Qgc2N0cF90Y2IgKiwgc3RydWN0IHNvY2thZGRyICopOwogCisj
aWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQordm9pZCBzY3RwX3BjYl9pbml0KGludCk7CisjZWxz
ZQogdm9pZCBzY3RwX3BjYl9pbml0KHZvaWQpOworI2VuZGlmCiAKIHZvaWQgc2N0cF9wY2JfZmlu
aXNoKHZvaWQpOwogCkBAIC04NzcsMTAgKzg2NywxMiBAQCBzY3RwX2luaXRpYXRlX2l0ZXJhdG9y
KGlucF9mdW5jIGlucGYsCiAJCSAgICAgICBlbmRfZnVuYyBlZiwKIAkJICAgICAgIHN0cnVjdCBz
Y3RwX2lucGNiICosCiAJCSAgICAgICB1aW50OF90IGNvX29mZik7Ci0jaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgZGVmaW5lZChTQ1RQX01DT1JFX0lOUFVUKSAmJiBkZWZpbmVkKFNNUCkKKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmIGRl
ZmluZWQoU0NUUF9NQ09SRV9JTlBVVCkgJiYgZGVmaW5lZChTTVApCiB2b2lkCiBzY3RwX3F1ZXVl
X3RvX21jb3JlKHN0cnVjdCBtYnVmICptLCBpbnQgb2ZmLCBpbnQgY3B1X3RvX3VzZSk7CiAKKyNl
bmRpZgogI2VuZGlmCiAKICNlbmRpZgkJCQkvKiBfS0VSTkVMICovCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0
cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9wZWVsb2ZmLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3Rw
bGliL25ldGluZXQvc2N0cF9wZWVsb2ZmLmMKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1
NQppbmRleCAzOTFiNGY1NDQ2YjYuLjg1ODFmNTE1ZjQxMwotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3Rw
bGliL25ldGluZXQvc2N0cF9wZWVsb2ZmLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRp
bmV0L3NjdHBfcGVlbG9mZi5jCkBAIC0zMiw5ICszMiw5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxzeXMvY2Rl
ZnMuaD4KLV9fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX3BlZWxvZmYu
YyAyNzk4NTkgMjAxNS0wMy0xMCAxOTo0OToyNVogdHVleGVuICQiKTsKK19fRkJTRElEKCIkRnJl
ZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX3BlZWxvZmYuYyAzNjIwNTQgMjAyMC0wNi0xMSAx
MzozNDowOVogdHVleGVuICQiKTsKICNlbmRpZgogCiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX29z
Lmg+CkBAIC00OSwxMCArNDksNiBAQCBfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGlu
ZXQvc2N0cF9wZWVsb2ZmLmMgMjc5ODU5IDIwMTUtMDMtMTAgMTk6NDk6MjVaCiAjaW5jbHVkZSA8
bmV0aW5ldC9zY3RwdXRpbC5oPgogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9hdXRoLmg+CiAKLSNp
ZiBkZWZpbmVkKF9fQVBQTEVfXykKLSNkZWZpbmUgQVBQTEVfRklMRV9OTyA1Ci0jZW5kaWYKLQog
aW50CiBzY3RwX2Nhbl9wZWVsX29mZihzdHJ1Y3Qgc29ja2V0ICpoZWFkLCBzY3RwX2Fzc29jX3Qg
YXNzb2NfaWQpCiB7CkBAIC03OSw3ICs3NSw3IEBAIHNjdHBfY2FuX3BlZWxfb2ZmKHN0cnVjdCBz
b2NrZXQgKmhlYWQsIHNjdHBfYXNzb2NfdCBhc3NvY19pZCkKIAkJU0NUUF9MVFJBQ0VfRVJSX1JF
VChpbnAsIHN0Y2IsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1BFRUxPRkYsIEVOT0VOVCk7CiAJCXJl
dHVybiAoRU5PRU5UKTsKIAl9Ci0Jc3RhdGUgPSBTQ1RQX0dFVF9TVEFURSgoJnN0Y2ItPmFzb2Mp
KTsKKwlzdGF0ZSA9IFNDVFBfR0VUX1NUQVRFKHN0Y2IpOwogCWlmICgoc3RhdGUgPT0gU0NUUF9T
VEFURV9FTVBUWSkgfHwKIAkgICAgKHN0YXRlID09IFNDVFBfU1RBVEVfSU5VU0UpKSB7CiAJCVND
VFBfVENCX1VOTE9DSyhzdGNiKTsKQEAgLTEwOSw3ICsxMDUsNyBAQCBzY3RwX2RvX3BlZWxvZmYo
c3RydWN0IHNvY2tldCAqaGVhZCwgc3RydWN0IHNvY2tldCAqc28sIHNjdHBfYXNzb2NfdCBhc3Nv
Y19pZCkKIAkJcmV0dXJuIChFTk9UQ09OTik7CiAJfQogCi0Jc3RhdGUgPSBTQ1RQX0dFVF9TVEFU
RSgoJnN0Y2ItPmFzb2MpKTsKKwlzdGF0ZSA9IFNDVFBfR0VUX1NUQVRFKHN0Y2IpOwogCWlmICgo
c3RhdGUgPT0gU0NUUF9TVEFURV9FTVBUWSkgfHwKIAkgICAgKHN0YXRlID09IFNDVFBfU1RBVEVf
SU5VU0UpKSB7CiAJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKQEAgLTE2NCw3ICsxNjAsNyBAQCBz
Y3RwX2RvX3BlZWxvZmYoc3RydWN0IHNvY2tldCAqaGVhZCwgc3RydWN0IHNvY2tldCAqc28sIHNj
dHBfYXNzb2NfdCBhc3NvY19pZCkKIAlhdG9taWNfYWRkX2ludCgmc3RjYi0+YXNvYy5yZWZjbnQs
IDEpOwogCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlz
Y3RwX3B1bGxfb2ZmX2NvbnRyb2xfdG9fbmV3X2lucChpbnAsIG5faW5wLCBzdGNiLCBTQkxfV0FJ
VCk7CiAjZWxzZQogCXNjdHBfcHVsbF9vZmZfY29udHJvbF90b19uZXdfaW5wKGlucCwgbl9pbnAs
IHN0Y2IsIE1fV0FJVE9LKTsKQEAgLTE3OCwxNCArMTc0LDYgQEAgc2N0cF9kb19wZWVsb2ZmKHN0
cnVjdCBzb2NrZXQgKmhlYWQsIHN0cnVjdCBzb2NrZXQgKnNvLCBzY3RwX2Fzc29jX3QgYXNzb2Nf
aWQpCiBzdHJ1Y3Qgc29ja2V0ICoKIHNjdHBfZ2V0X3BlZWxvZmYoc3RydWN0IHNvY2tldCAqaGVh
ZCwgc2N0cF9hc3NvY190IGFzc29jX2lkLCBpbnQgKmVycm9yKQogewotI2lmIGRlZmluZWQoX19V
c2Vyc3BhY2VfXykKLSAgICAvKiBpZiBfX1VzZXJzcGFjZV9fIGNob29zZXMgdG8gb3JpZ2luYWxs
eSBub3Qgc3VwcG9ydCBwZWVsb2ZmLCBwdXQgaXQgaGVyZS4uLiAqLwotI2VuZGlmCi0jaWYgZGVm
aW5lZChfX1BhbmRhX18pCi0JU0NUUF9MVFJBQ0VfRVJSX1JFVChOVUxMLCBOVUxMLCBOVUxMLCBT
Q1RQX0ZST01fU0NUUF9QRUVMT0ZGLCBFSU5WQUwpOwotCSplcnJvciA9IEVJTlZBTDsKLQlyZXR1
cm4gKE5VTEwpOwotI2Vsc2UKIAlzdHJ1Y3Qgc29ja2V0ICpuZXdzbzsKIAlzdHJ1Y3Qgc2N0cF9p
bnBjYiAqaW5wLCAqbl9pbnA7CiAJc3RydWN0IHNjdHBfdGNiICpzdGNiOwpAQCAtMjA1LDE4ICsx
OTMsMTUgQEAgc2N0cF9nZXRfcGVlbG9mZihzdHJ1Y3Qgc29ja2V0ICpoZWFkLCBzY3RwX2Fzc29j
X3QgYXNzb2NfaWQsIGludCAqZXJyb3IpCiAJfQogCWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29j
LnJlZmNudCwgMSk7CiAJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwotI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMTAwMAorI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJQ1VSVk5FVF9TRVQoaGVhZC0+c29f
dm5ldCk7CiAjZW5kaWYKIAluZXdzbyA9IHNvbmV3Y29ubihoZWFkLCBTU19JU0NPTk5FQ1RFRAot
I2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogCSAgICAsIE5VTEwKLSNlbGlmIGRlZmluZWQoX19QYW5kYV9fKQot
CSAgICAvKiBwbGFjZSB0aGlzIHNvY2tldCBpbiB0aGUgYXNzb2MncyB2cmYgaWQgKi8KLQkgICAg
LCBOVUxMLCBzdGNiLT5hc29jLnZyZl9pZAogI2VuZGlmCiAJCSk7Ci0jaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAxMDAwCisjaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlDVVJWTkVUX1JFU1RPUkUoKTsK
ICNlbmRpZgogCWlmIChuZXdzbyA9PSBOVUxMKSB7CkBAIC0yMjcsNyArMjEyLDcgQEAgc2N0cF9n
ZXRfcGVlbG9mZihzdHJ1Y3Qgc29ja2V0ICpoZWFkLCBzY3RwX2Fzc29jX3QgYXNzb2NfaWQsIGlu
dCAqZXJyb3IpCiAJCXJldHVybiAoTlVMTCk7CiAKIAl9Ci0jaWYgZGVmaW5lZChfX0FQUExFX18p
CisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJICBl
bHNlIHsKIAkJU0NUUF9TT0NLRVRfTE9DSyhuZXdzbywgMSk7CiAJfQpAQCAtMjg4LDcgKzI3Myw2
IEBAIHNjdHBfZ2V0X3BlZWxvZmYoc3RydWN0IHNvY2tldCAqaGVhZCwgc2N0cF9hc3NvY190IGFz
c29jX2lkLCBpbnQgKmVycm9yKQogCVNPQ0tfVU5MT0NLKG5ld3NvKTsKIAkvKiBXZSByZW1vdmUg
aXQgcmlnaHQgYXdheSAqLwogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChf
X0FQUExFX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKICNpZmRlZiBTQ1RQX0xPQ0tfTE9HR0lORwogCWlmIChTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBf
bG9nZ2luZ19sZXZlbCkgJiBTQ1RQX0xPQ0tfTE9HR0lOR19FTkFCTEUpIHsKIAkJc2N0cF9sb2df
bG9jayhpbnAsIChzdHJ1Y3Qgc2N0cF90Y2IgKilOVUxMLCBTQ1RQX0xPR19MT0NLX1NPQ0spOwpA
QCAtMjk3LDE2ICsyODEsNiBAQCBzY3RwX2dldF9wZWVsb2ZmKHN0cnVjdCBzb2NrZXQgKmhlYWQs
IHNjdHBfYXNzb2NfdCBhc3NvY19pZCwgaW50ICplcnJvcikKIAlUQUlMUV9SRU1PVkUoJmhlYWQt
PnNvX2NvbXAsIG5ld3NvLCBzb19saXN0KTsKIAloZWFkLT5zb19xbGVuLS07CiAJU09DS19VTkxP
Q0soaGVhZCk7Ci0jZWxzZQotCW5ld3NvID0gVEFJTFFfRklSU1QoJmhlYWQtPnNvX3EpOwotCWlm
IChzb3FyZW1xdWUobmV3c28sIDEpID09IDApIHsKLQkJU0NUUF9QUklOVEYoInNvcmVtcXVlIGZh
aWxlZCwgcGVlbG9mZi1mYWlscyAoaW52YXJpZW50cyB3b3VsZCBwYW5pYylcbiIpOwotCQlTQ1RQ
X0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfUEVFTE9GRiwg
RU5PVENPTk4pOwotCQkqZXJyb3IgPSBFTk9UQ09OTjsKLQkJcmV0dXJuIChOVUxMKTsKLQotCX0K
LSNlbmRpZgogCS8qCiAJICogTm93IHdlIG11c3QgbW92ZSBpdCBmcm9tIG9uZSBoYXNoIHRhYmxl
IHRvIGFub3RoZXIgYW5kIGdldCB0aGUKIAkgKiBzdGNiIGluIHRoZSByaWdodCBwbGFjZS4KQEAg
LTMxOCwxMyArMjkyLDEyIEBAIHNjdHBfZ2V0X3BlZWxvZmYoc3RydWN0IHNvY2tldCAqaGVhZCwg
c2N0cF9hc3NvY190IGFzc29jX2lkLCBpbnQgKmVycm9yKQogCSAqIEFuZCBub3cgdGhlIGZpbmFs
IGhhY2suIFdlIG1vdmUgZGF0YSBpbiB0aGUgcGVuZGluZyBzaWRlIGkuZS4KIAkgKiBoZWFkIHRv
IHRoZSBuZXcgc29ja2V0IGJ1ZmZlci4gTGV0IHRoZSBHUlVCQklORyBiZWdpbiA6LTAKIAkgKi8K
LSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJc2N0cF9wdWxsX29mZl9jb250cm9sX3RvX25ld19pbnAo
aW5wLCBuX2lucCwgc3RjYiwgU0JMX1dBSVQpOwogI2Vsc2UKIAlzY3RwX3B1bGxfb2ZmX2NvbnRy
b2xfdG9fbmV3X2lucChpbnAsIG5faW5wLCBzdGNiLCBNX1dBSVRPSyk7CiAjZW5kaWYKIAlhdG9t
aWNfc3VidHJhY3RfaW50KCZzdGNiLT5hc29jLnJlZmNudCwgMSk7CiAJcmV0dXJuIChuZXdzbyk7
Ci0jZW5kaWYKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRp
bmV0L3NjdHBfcGVlbG9mZi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfcGVl
bG9mZi5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggYWRlZmNkZWQxMzEx
Li43ZTFjNWVjZWViOGUKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfcGVl
bG9mZi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3BlZWxvZmYuaApA
QCAtMzIsNyArMzIsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpZmRlZiBfX0ZyZWVCU0RfXworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+CiBfX0ZCU0RJRCgiJEZy
ZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9wZWVsb2ZmLmggMzA5NjA3IDIwMTYtMTItMDYg
MTA6MjE6MjVaIHR1ZXhlbiAkIik7CiAjZW5kaWYKQEAgLTQyLDEzICs0MiwxMyBAQCBfX0ZCU0RJ
RCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9wZWVsb2ZmLmggMzA5NjA3IDIwMTYt
MTItMDYgMTA6MjE6MjVaCiAjaWYgZGVmaW5lZChIQVZFX1NDVFBfUEVFTE9GRl9TT0NLT1BUKQog
Lyogc29ja2V0IG9wdGlvbiBwZWVsb2ZmICovCiBzdHJ1Y3Qgc2N0cF9wZWVsb2ZmX29wdCB7Ci0j
aWYgIWRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgIShkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykpCiAJaW50IHM7CiAjZWxzZQogCUhBTkRMRSBzOwogI2VuZGlmCiAJ
c2N0cF9hc3NvY190IGFzc29jX2lkOwotI2lmICFkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICEo
ZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pKQogCWludCBuZXdfc2Q7
CiAjZWxzZQogCUhBTkRMRSBuZXdfc2Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGli
L25ldGluZXQvc2N0cF9wcm9jZXNzX2xvY2suaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5l
dC9zY3RwX3Byb2Nlc3NfbG9jay5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5k
ZXggY2E2NjkyMTIwMjEwLi5mZjBlMDUwNDhlNjMKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9u
ZXRpbmV0L3NjdHBfcHJvY2Vzc19sb2NrLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRp
bmV0L3NjdHBfcHJvY2Vzc19sb2NrLmgKQEAgLTUzLDcgKzUzLDcgQEAKICAqIHBlciBzb2NrZXQg
bGV2ZWwgbG9ja2luZwogICovCiAKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3Mp
CisjaWYgZGVmaW5lZChfV0lOMzIpCiAvKiBMb2NrIGZvciBJTkZPIHN0dWZmICovCiAjZGVmaW5l
IFNDVFBfSU5QX0lORk9fTE9DS19JTklUKCkKICNkZWZpbmUgU0NUUF9JTlBfSU5GT19STE9DSygp
CkBAIC04Niw3ICs4Niw5IEBACiAjZGVmaW5lIFNDVFBfSU5QX1JMT0NLKF9pbnApCiAjZGVmaW5l
IFNDVFBfSU5QX1JVTkxPQ0soX2lucCkKICNkZWZpbmUgU0NUUF9JTlBfV0xPQ0soX2lucCkKLSNk
ZWZpbmUgU0NUUF9JTlBfV1VOTE9DSyhfaW5lcCkKKyNkZWZpbmUgU0NUUF9JTlBfV1VOTE9DSyhf
aW5wKQorI2RlZmluZSBTQ1RQX0lOUF9STE9DS19BU1NFUlQoX2lucCkKKyNkZWZpbmUgU0NUUF9J
TlBfV0xPQ0tfQVNTRVJUKF9pbnApCiAjZGVmaW5lIFNDVFBfSU5QX0lOQ1JfUkVGKF9pbnApCiAj
ZGVmaW5lIFNDVFBfSU5QX0RFQ1JfUkVGKF9pbnApCiAKQEAgLTExNSw3ICsxMTcsNyBAQAogICov
CiAjZGVmaW5lIFNDVFBfSVBJX0NPVU5UX0lOSVQoKQogCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFj
ZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogI2RlZmluZSBTQ1RQX1dRX0FERFJf
SU5JVCgpIFwKIAlJbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uKCZTQ1RQX0JBU0VfSU5GTyh3cV9h
ZGRyX210eCkpCiAjZGVmaW5lIFNDVFBfV1FfQUREUl9ERVNUUk9ZKCkgXApAQCAtMTI0LDcgKzEy
Niw3IEBACiAJRW50ZXJDcml0aWNhbFNlY3Rpb24oJlNDVFBfQkFTRV9JTkZPKHdxX2FkZHJfbXR4
KSkKICNkZWZpbmUgU0NUUF9XUV9BRERSX1VOTE9DSygpIFwKIAlMZWF2ZUNyaXRpY2FsU2VjdGlv
bigmU0NUUF9CQVNFX0lORk8od3FfYWRkcl9tdHgpKQotCisjZGVmaW5lIFNDVFBfV1FfQUREUl9M
T0NLX0FTU0VSVCgpCiAKICNkZWZpbmUgU0NUUF9JTlBfSU5GT19MT0NLX0lOSVQoKSBcCiAJSW5p
dGlhbGl6ZUNyaXRpY2FsU2VjdGlvbigmU0NUUF9CQVNFX0lORk8oaXBpX2VwX210eCkpCkBAIC0x
ODUsNiArMTg3LDggQEAKICNkZWZpbmUgU0NUUF9JTlBfV0xPQ0soX2lucCkgXAogCUVudGVyQ3Jp
dGljYWxTZWN0aW9uKCYoX2lucCktPmlucF9tdHgpCiAjZW5kaWYKKyNkZWZpbmUgU0NUUF9JTlBf
UkxPQ0tfQVNTRVJUKF90Y2IpCisjZGVmaW5lIFNDVFBfSU5QX1dMT0NLX0FTU0VSVChfdGNiKQog
CiAjZGVmaW5lIFNDVFBfVENCX1NFTkRfTE9DS19JTklUKF90Y2IpIFwKIAlJbml0aWFsaXplQ3Jp
dGljYWxTZWN0aW9uKCYoX3RjYiktPnRjYl9zZW5kX210eCkKQEAgLTI2Myw2ICsyNjcsOCBAQAog
I2RlZmluZSBTQ1RQX1dRX0FERFJfVU5MT0NLKCkgXAogCSh2b2lkKXB0aHJlYWRfbXV0ZXhfdW5s
b2NrKCZTQ1RQX0JBU0VfSU5GTyh3cV9hZGRyX210eCkpCiAjZW5kaWYKKyNkZWZpbmUgU0NUUF9X
UV9BRERSX0xPQ0tfQVNTRVJUKCkgXAorCUtBU1NFUlQocHRocmVhZF9tdXRleF90cnlsb2NrKCZT
Q1RQX0JBU0VfSU5GTyh3cV9hZGRyX210eCkpID09IEVCVVNZLCAoIiVzOiB3cV9hZGRyX210eCBu
b3QgbG9ja2VkIiwgX19mdW5jX18pKQogCiAjZGVmaW5lIFNDVFBfSU5QX0lORk9fTE9DS19JTklU
KCkgXAogCSh2b2lkKXB0aHJlYWRfbXV0ZXhfaW5pdCgmU0NUUF9CQVNFX0lORk8oaXBpX2VwX210
eCksICZTQ1RQX0JBU0VfVkFSKG10eF9hdHRyKSkKQEAgLTM3Nyw2ICszODMsMTAgQEAKICNkZWZp
bmUgU0NUUF9JTlBfV1VOTE9DSyhfaW5wKSBcCiAJKHZvaWQpcHRocmVhZF9tdXRleF91bmxvY2so
JihfaW5wKS0+aW5wX210eCkKICNlbmRpZgorI2RlZmluZSBTQ1RQX0lOUF9STE9DS19BU1NFUlQo
X2lucCkgXAorCUtBU1NFUlQocHRocmVhZF9tdXRleF90cnlsb2NrKCYoX2lucCktPmlucF9tdHgp
ID09IEVCVVNZLCAoIiVzOiBpbnBfbXR4IG5vdCBsb2NrZWQiLCBfX2Z1bmNfXykpCisjZGVmaW5l
IFNDVFBfSU5QX1dMT0NLX0FTU0VSVChfaW5wKSBcCisJS0FTU0VSVChwdGhyZWFkX211dGV4X3Ry
eWxvY2soJihfaW5wKS0+aW5wX210eCkgPT0gRUJVU1ksICgiJXM6IGlucF9tdHggbm90IGxvY2tl
ZCIsIF9fZnVuY19fKSkKICNkZWZpbmUgU0NUUF9JTlBfSU5DUl9SRUYoX2lucCkgYXRvbWljX2Fk
ZF9pbnQoJigoX2lucCktPnJlZmNvdW50KSwgMSkKICNkZWZpbmUgU0NUUF9JTlBfREVDUl9SRUYo
X2lucCkgYXRvbWljX2FkZF9pbnQoJigoX2lucCktPnJlZmNvdW50KSwgLTEpCiAKQEAgLTQ4NCw3
ICs0OTQsNyBAQAogCiAvKiBzb2NrZXQgbG9ja3MgKi8KIAotI2lmIGRlZmluZWQoX19Vc2Vyc3Bh
Y2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKICNkZWZpbmUgU09DS0JVRl9MT0NL
X0FTU0VSVChfc29fYnVmKQogI2RlZmluZSBTT0NLQlVGX0xPQ0soX3NvX2J1ZikgXAogCUVudGVy
Q3JpdGljYWxTZWN0aW9uKCYoX3NvX2J1ZiktPnNiX210eCkKQEAgLTUxOSw3ICs1MjksNyBAQAog
I2RlZmluZSBTQ1RQX1NUQVRMT0dfVU5MT0NLKCkKICNkZWZpbmUgU0NUUF9TVEFUTE9HX0RFU1RS
T1koKQogCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQo
X1dJTjMyKQogLyogYWRkcmVzcyBsaXN0IGxvY2tzICovCiAjZGVmaW5lIFNDVFBfSVBJX0FERFJf
SU5JVCgpIFwKIAlJbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uKCZTQ1RQX0JBU0VfSU5GTyhpcGlf
YWRkcl9tdHgpKQpAQCAtNTMzLDYgKzU0Myw4IEBACiAJRW50ZXJDcml0aWNhbFNlY3Rpb24oJlND
VFBfQkFTRV9JTkZPKGlwaV9hZGRyX210eCkpCiAjZGVmaW5lIFNDVFBfSVBJX0FERFJfV1VOTE9D
SygpIFwKIAlMZWF2ZUNyaXRpY2FsU2VjdGlvbigmU0NUUF9CQVNFX0lORk8oaXBpX2FkZHJfbXR4
KSkKKyNkZWZpbmUgU0NUUF9JUElfQUREUl9MT0NLX0FTU0VSVCgpCisjZGVmaW5lIFNDVFBfSVBJ
X0FERFJfV0xPQ0tfQVNTRVJUKCkKIAogCiAvKiBpdGVyYXRvciBsb2NrcyAqLwpAQCAtNTU0LDcg
KzU2Niw3IEBACiAjZGVmaW5lIFNDVFBfSVBJX0lURVJBVE9SX1dRX1VOTE9DSygpIFwKIAlMZWF2
ZUNyaXRpY2FsU2VjdGlvbigmc2N0cF9pdF9jdGwuaXBpX2l0ZXJhdG9yX3dxX210eCkKIAotI2Vs
c2UgLyogZW5kIG9mIF9fVXNlcnNwYWNlX29zX1dpbmRvd3MgKi8KKyNlbHNlCiAvKiBhZGRyZXNz
IGxpc3QgbG9ja3MgKi8KICNkZWZpbmUgU0NUUF9JUElfQUREUl9JTklUKCkgXAogCSh2b2lkKXB0
aHJlYWRfbXV0ZXhfaW5pdCgmU0NUUF9CQVNFX0lORk8oaXBpX2FkZHJfbXR4KSwgJlNDVFBfQkFT
RV9WQVIobXR4X2F0dHIpKQpAQCAtNTY5LDYgKzU4MSwxMCBAQAogCUtBU1NFUlQocHRocmVhZF9t
dXRleF9sb2NrKCZTQ1RQX0JBU0VfSU5GTyhpcGlfYWRkcl9tdHgpKSA9PSAwLCAoIiVzOiBpcGlf
YWRkcl9tdHggYWxyZWFkeSBsb2NrZWQiLCBfX2Z1bmNfXykpCiAjZGVmaW5lIFNDVFBfSVBJX0FE
RFJfV1VOTE9DSygpIFwKIAlLQVNTRVJUKHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZTQ1RQX0JBU0Vf
SU5GTyhpcGlfYWRkcl9tdHgpKSA9PSAwLCAoIiVzOiBpcGlfYWRkcl9tdHggbm90IGxvY2tlZCIs
IF9fZnVuY19fKSkKKyNkZWZpbmUgU0NUUF9JUElfQUREUl9MT0NLX0FTU0VSVCgpIFwKKwlLQVNT
RVJUKHB0aHJlYWRfbXV0ZXhfdHJ5bG9jaygmU0NUUF9CQVNFX0lORk8oaXBpX2FkZHJfbXR4KSkg
PT0gRUJVU1ksICgiJXM6IGlwaV9hZGRyX210eCBub3QgbG9ja2VkIiwgX19mdW5jX18pKQorI2Rl
ZmluZSBTQ1RQX0lQSV9BRERSX1dMT0NLX0FTU0VSVCgpIFwKKwlLQVNTRVJUKHB0aHJlYWRfbXV0
ZXhfdHJ5bG9jaygmU0NUUF9CQVNFX0lORk8oaXBpX2FkZHJfbXR4KSkgPT0gRUJVU1ksICgiJXM6
IGlwaV9hZGRyX210eCBub3QgbG9ja2VkIiwgX19mdW5jX18pKQogI2Vsc2UKICNkZWZpbmUgU0NU
UF9JUElfQUREUl9STE9DSygpIFwKIAkodm9pZClwdGhyZWFkX211dGV4X2xvY2soJlNDVFBfQkFT
RV9JTkZPKGlwaV9hZGRyX210eCkpCkBAIC01NzgsNiArNTk0LDggQEAKIAkodm9pZClwdGhyZWFk
X211dGV4X2xvY2soJlNDVFBfQkFTRV9JTkZPKGlwaV9hZGRyX210eCkpCiAjZGVmaW5lIFNDVFBf
SVBJX0FERFJfV1VOTE9DSygpIFwKIAkodm9pZClwdGhyZWFkX211dGV4X3VubG9jaygmU0NUUF9C
QVNFX0lORk8oaXBpX2FkZHJfbXR4KSkKKyNkZWZpbmUgU0NUUF9JUElfQUREUl9MT0NLX0FTU0VS
VCgpCisjZGVmaW5lIFNDVFBfSVBJX0FERFJfV0xPQ0tfQVNTRVJUKCkKICNlbmRpZgogCiAvKiBp
dGVyYXRvciBsb2NrcyAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0
L3NjdHBfc2hhMS5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfc2hhMS5jCm9s
ZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggYWJhNjE2MDY5YjcyLi5kYjBlNzUz
M2ZmNmEKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfc2hhMS5jCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3NoYTEuYwpAQCAtODQsOSArODQsOSBA
QCBzY3RwX3NoYTFfZmluYWwodW5zaWduZWQgY2hhciAqZGlnZXN0LCBzdHJ1Y3Qgc2N0cF9zaGEx
X2NvbnRleHQgKmN0eCkKICNlbHNlCiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpZiBkZWZpbmVk
KF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpICYmIGRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDx3aW5zb2NrMi5oPgotI2VsaWYgIWRlZmluZWQoX19X
aW5kb3dzX18pCisjZWxpZiAhKGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKSkKICNpbmNsdWRlIDxhcnBhL2luZXQuaD4KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0
cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9zaGExLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGli
L25ldGluZXQvc2N0cF9zaGExLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRl
eCA2ZDZhMDVjMTBjZGQuLmQ1MzVlZTQ2Mzk1MQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25l
dGluZXQvc2N0cF9zaGExLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBf
c2hhMS5oCkBAIC0zMiw3ICszMiw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KIF9fRkJT
RElEKCIkRnJlZUJTRCQiKTsKICNlbmRpZgpAQCAtNDMsMTYgKzQzLDcgQEAgX19GQlNESUQoIiRG
cmVlQlNEJCIpOwogCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaWYgZGVmaW5lZChTQ1RQX1VT
RV9OU1NfU0hBMSkKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0RhcndpbikKLS8qIFRoZSBO
U1Mgc291cmNlcyByZXF1aXJlIF9fQVBQTEVfXyB0byBiZSBkZWZpbmVkLgotICogWFhYOiBSZW1v
dmUgdGhpcyB1Z2x5IGhhY2sgb25jZSB0aGUgcGxhdGZvcm0gZGVmaW5lcyBoYXZlIGJlZW4gY2xl
YW5lZCB1cC4KLSAqLwotI2RlZmluZSBfX0FQUExFX18KLSNlbmRpZgogI2luY2x1ZGUgPHBrMTFw
dWIuaD4KLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0RhcndpbikKLSN1bmRlZiBfX0FQUExF
X18KLSNlbmRpZgogI2VsaWYgZGVmaW5lZChTQ1RQX1VTRV9PUEVOU1NMX1NIQTEpCiAjaW5jbHVk
ZSA8b3BlbnNzbC9zaGEuaD4KICNlbmRpZgpAQCAtODMsNyArNzQsNyBAQCBzdHJ1Y3Qgc2N0cF9z
aGExX2NvbnRleHQgewogI2VuZGlmCiB9OwogCi0jaWYgKGRlZmluZWQoX19BUFBMRV9fKSAmJiBk
ZWZpbmVkKEtFUk5FTCkpCisjaWYgKGRlZmluZWQoX19BUFBMRV9fKSAgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykgJiYgZGVmaW5lZChLRVJORUwpKQogI2lmbmRlZiBfS0VSTkVMCiAjZGVmaW5l
IF9LRVJORUwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0
L3NjdHBfc3NfZnVuY3Rpb25zLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9z
c19mdW5jdGlvbnMuYwpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGYxOTgy
NTcyNDY4My4uZmFkNDI0NjdjMjBjCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9z
Y3RwX3NzX2Z1bmN0aW9ucy5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3Rw
X3NzX2Z1bmN0aW9ucy5jCkBAIC0yOCw5ICsyOCw5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxzeXMvY2RlZnMu
aD4KLV9fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX3NzX2Z1bmN0aW9u
cy5jIDMyNjE4MCAyMDE3LTExLTI0IDE5OjM4OjU5WiB0dWV4ZW4gJCIpOworX19GQlNESUQoIiRG
cmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfc3NfZnVuY3Rpb25zLmMgMzYyMTczIDIwMjAt
MDYtMTQgMDk6NTA6MDBaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAogI2luY2x1ZGUgPG5ldGluZXQv
c2N0cF9wY2IuaD4KQEAgLTU5LDYgKzU5LDkgQEAgc2N0cF9zc19kZWZhdWx0X2luaXQoc3RydWN0
IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKIHsKIAl1aW50
MTZfdCBpOwogCisJaWYgKGhvbGRzX2xvY2sgPT0gMCkgeworCQlTQ1RQX1RDQl9TRU5EX0xPQ0so
c3RjYik7CisJfQogCWFzb2MtPnNzX2RhdGEubG9ja2VkX29uX3NlbmRpbmcgPSBOVUxMOwogCWFz
b2MtPnNzX2RhdGEubGFzdF9vdXRfc3RyZWFtID0gTlVMTDsKIAlUQUlMUV9JTklUKCZhc29jLT5z
c19kYXRhLm91dC53aGVlbCk7CkBAIC03MSw3ICs3NCwxMCBAQCBzY3RwX3NzX2RlZmF1bHRfaW5p
dChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAog
CWZvciAoaSA9IDA7IGkgPCBzdGNiLT5hc29jLnN0cmVhbW91dGNudDsgaSsrKSB7CiAJCXN0Y2It
PmFzb2Muc3NfZnVuY3Rpb25zLnNjdHBfc3NfYWRkX3RvX3N0cmVhbShzdGNiLCAmc3RjYi0+YXNv
YywKIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGNi
LT5hc29jLnN0cm1vdXRbaV0sCi0JCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBOVUxMLCBob2xkc19sb2NrKTsKKwkJICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDEpOworCX0KKwlpZiAoaG9sZHNfbG9jayA9PSAw
KSB7CisJCVNDVFBfVENCX1NFTkRfVU5MT0NLKHN0Y2IpOwogCX0KIAlyZXR1cm47CiB9CkBAIC04
NCw4ICs5MCwxMCBAQCBzY3RwX3NzX2RlZmF1bHRfY2xlYXIoc3RydWN0IHNjdHBfdGNiICpzdGNi
LCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKIAkJU0NUUF9UQ0JfU0VORF9MT0NLKHN0
Y2IpOwogCX0KIAl3aGlsZSAoIVRBSUxRX0VNUFRZKCZhc29jLT5zc19kYXRhLm91dC53aGVlbCkp
IHsKLQkJc3RydWN0IHNjdHBfc3RyZWFtX291dCAqc3RycSA9IFRBSUxRX0ZJUlNUKCZhc29jLT5z
c19kYXRhLm91dC53aGVlbCk7Ci0JCVRBSUxRX1JFTU9WRSgmYXNvYy0+c3NfZGF0YS5vdXQud2hl
ZWwsIFRBSUxRX0ZJUlNUKCZhc29jLT5zc19kYXRhLm91dC53aGVlbCksIHNzX3BhcmFtcy5yci5u
ZXh0X3Nwb2tlKTsKKwkJc3RydWN0IHNjdHBfc3RyZWFtX291dCAqc3RycTsKKworCQlzdHJxID0g
VEFJTFFfRklSU1QoJmFzb2MtPnNzX2RhdGEub3V0LndoZWVsKTsKKwkJVEFJTFFfUkVNT1ZFKCZh
c29jLT5zc19kYXRhLm91dC53aGVlbCwgc3RycSwgc3NfcGFyYW1zLnJyLm5leHRfc3Bva2UpOwog
CQlzdHJxLT5zc19wYXJhbXMucnIubmV4dF9zcG9rZS50cWVfbmV4dCA9IE5VTEw7CiAJCXN0cnEt
PnNzX3BhcmFtcy5yci5uZXh0X3Nwb2tlLnRxZV9wcmV2ID0gTlVMTDsKIAl9CkBAIC00MDEsMTEg
KzQwOSwxMyBAQCBzY3RwX3NzX3ByaW9fY2xlYXIoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1
Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKIAkJU0NUUF9UQ0JfU0VORF9MT0NLKHN0Y2IpOwog
CX0KIAl3aGlsZSAoIVRBSUxRX0VNUFRZKCZhc29jLT5zc19kYXRhLm91dC53aGVlbCkpIHsKLQkJ
c3RydWN0IHNjdHBfc3RyZWFtX291dCAqc3RycSA9IFRBSUxRX0ZJUlNUKCZhc29jLT5zc19kYXRh
Lm91dC53aGVlbCk7CisJCXN0cnVjdCBzY3RwX3N0cmVhbV9vdXQgKnN0cnE7CisKKwkJc3RycSA9
IFRBSUxRX0ZJUlNUKCZhc29jLT5zc19kYXRhLm91dC53aGVlbCk7CiAJCWlmIChjbGVhcl92YWx1
ZXMpIHsKIAkJCXN0cnEtPnNzX3BhcmFtcy5wcmlvLnByaW9yaXR5ID0gMDsKIAkJfQotCQlUQUlM
UV9SRU1PVkUoJmFzb2MtPnNzX2RhdGEub3V0LndoZWVsLCBUQUlMUV9GSVJTVCgmYXNvYy0+c3Nf
ZGF0YS5vdXQud2hlZWwpLCBzc19wYXJhbXMucHJpby5uZXh0X3Nwb2tlKTsKKwkJVEFJTFFfUkVN
T1ZFKCZhc29jLT5zc19kYXRhLm91dC53aGVlbCwgc3RycSwgc3NfcGFyYW1zLnByaW8ubmV4dF9z
cG9rZSk7CiAJCXN0cnEtPnNzX3BhcmFtcy5wcmlvLm5leHRfc3Bva2UudHFlX25leHQgPSBOVUxM
OwogCQlzdHJxLT5zc19wYXJhbXMucHJpby5uZXh0X3Nwb2tlLnRxZV9wcmV2ID0gTlVMTDsKIApA
QCAtNTExLDYgKzUyMSw5IEBAIHNjdHBfc3NfcHJpb19zZWxlY3Qoc3RydWN0IHNjdHBfdGNiICpz
dGNiIFNDVFBfVU5VU0VELCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsCiB7CiAJc3RydWN0IHNjdHBf
c3RyZWFtX291dCAqc3RycSwgKnN0cnF0LCAqc3RycW47CiAKKwlpZiAoYXNvYy0+c3NfZGF0YS5s
b2NrZWRfb25fc2VuZGluZykgeworCQlyZXR1cm4gKGFzb2MtPnNzX2RhdGEubG9ja2VkX29uX3Nl
bmRpbmcpOworCX0KIAlzdHJxdCA9IGFzb2MtPnNzX2RhdGEubGFzdF9vdXRfc3RyZWFtOwogcHJp
b19hZ2FpbjoKIAkvKiBGaW5kIHRoZSBuZXh0IHN0cmVhbSB0byB1c2UgKi8KQEAgLTU4OSwxMSAr
NjAyLDEzIEBAIHNjdHBfc3NfZmJfY2xlYXIoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qg
c2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKIAkJU0NUUF9UQ0JfU0VORF9MT0NLKHN0Y2IpOwogCX0K
IAl3aGlsZSAoIVRBSUxRX0VNUFRZKCZhc29jLT5zc19kYXRhLm91dC53aGVlbCkpIHsKLQkJc3Ry
dWN0IHNjdHBfc3RyZWFtX291dCAqc3RycSA9IFRBSUxRX0ZJUlNUKCZhc29jLT5zc19kYXRhLm91
dC53aGVlbCk7CisJCXN0cnVjdCBzY3RwX3N0cmVhbV9vdXQgKnN0cnE7CisKKwkJc3RycSA9IFRB
SUxRX0ZJUlNUKCZhc29jLT5zc19kYXRhLm91dC53aGVlbCk7CiAJCWlmIChjbGVhcl92YWx1ZXMp
IHsKIAkJCXN0cnEtPnNzX3BhcmFtcy5mYi5yb3VuZHMgPSAtMTsKIAkJfQotCQlUQUlMUV9SRU1P
VkUoJmFzb2MtPnNzX2RhdGEub3V0LndoZWVsLCBUQUlMUV9GSVJTVCgmYXNvYy0+c3NfZGF0YS5v
dXQud2hlZWwpLCBzc19wYXJhbXMuZmIubmV4dF9zcG9rZSk7CisJCVRBSUxRX1JFTU9WRSgmYXNv
Yy0+c3NfZGF0YS5vdXQud2hlZWwsIHN0cnEsIHNzX3BhcmFtcy5mYi5uZXh0X3Nwb2tlKTsKIAkJ
c3RycS0+c3NfcGFyYW1zLmZiLm5leHRfc3Bva2UudHFlX25leHQgPSBOVUxMOwogCQlzdHJxLT5z
c19wYXJhbXMuZmIubmV4dF9zcG9rZS50cWVfcHJldiA9IE5VTEw7CiAJfQpAQCAtNjg1LDYgKzcw
MCw5IEBAIHNjdHBfc3NfZmJfc2VsZWN0KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiBTQ1RQX1VOVVNF
RCwgc3RydWN0IHNjdHBfbmV0cyAqbmV0LAogewogCXN0cnVjdCBzY3RwX3N0cmVhbV9vdXQgKnN0
cnEgPSBOVUxMLCAqc3RycXQ7CiAKKwlpZiAoYXNvYy0+c3NfZGF0YS5sb2NrZWRfb25fc2VuZGlu
ZykgeworCQlyZXR1cm4gKGFzb2MtPnNzX2RhdGEubG9ja2VkX29uX3NlbmRpbmcpOworCX0KIAlp
ZiAoYXNvYy0+c3NfZGF0YS5sYXN0X291dF9zdHJlYW0gPT0gTlVMTCB8fAogCSAgICBUQUlMUV9G
SVJTVCgmYXNvYy0+c3NfZGF0YS5vdXQud2hlZWwpID09IFRBSUxRX0xBU1QoJmFzb2MtPnNzX2Rh
dGEub3V0LndoZWVsLCBzY3Rwd2hlZWxfbGlzdGhlYWQpKSB7CiAJCXN0cnF0ID0gVEFJTFFfRklS
U1QoJmFzb2MtPnNzX2RhdGEub3V0LndoZWVsKTsKQEAgLTc1Miw4ICs3NzAsOCBAQCBzY3RwX3Nz
X2ZiX3NjaGVkdWxlZChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX25ldHMgKm5l
dCBTQ1RQX1VOVVNFRCwKICAqLwogc3RhdGljIHZvaWQKIHNjdHBfc3NfZmNmc19hZGQoc3RydWN0
IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKLSAgICAgICAg
ICAgICAgICAgc3RydWN0IHNjdHBfc3RyZWFtX291dCAqc3RycSwgc3RydWN0IHNjdHBfc3RyZWFt
X3F1ZXVlX3BlbmRpbmcgKnNwLAotICAgICAgICAgICAgICAgICBpbnQgaG9sZHNfbG9jayk7Cisg
ICAgICAgICAgICAgICAgIHN0cnVjdCBzY3RwX3N0cmVhbV9vdXQgKnN0cnEgU0NUUF9VTlVTRUQs
CisgICAgICAgICAgICAgICAgIHN0cnVjdCBzY3RwX3N0cmVhbV9xdWV1ZV9wZW5kaW5nICpzcCwg
aW50IGhvbGRzX2xvY2spOwogCiBzdGF0aWMgdm9pZAogc2N0cF9zc19mY2ZzX2luaXQoc3RydWN0
IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKQEAgLTc2Myw2
ICs3ODEsOSBAQCBzY3RwX3NzX2ZjZnNfaW5pdChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVj
dCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAogCXN0cnVjdCBzY3RwX3N0cmVhbV9xdWV1ZV9wZW5k
aW5nICpzcDsKIAl1aW50MTZfdCBpOwogCisJaWYgKGhvbGRzX2xvY2sgPT0gMCkgeworCQlTQ1RQ
X1RDQl9TRU5EX0xPQ0soc3RjYik7CisJfQogCVRBSUxRX0lOSVQoJmFzb2MtPnNzX2RhdGEub3V0
Lmxpc3QpOwogCS8qCiAJICogSWYgdGhlcmUgaXMgZGF0YSBpbiB0aGUgc3RyZWFtIHF1ZXVlcyBh
bHJlYWR5LApAQCAtNzgyLDEyICs4MDMsMTUgQEAgc2N0cF9zc19mY2ZzX2luaXQoc3RydWN0IHNj
dHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKIAkJCQl4Kys7CiAJ
CQl9CiAJCQlpZiAoc3AgIT0gTlVMTCkgewotCQkJCXNjdHBfc3NfZmNmc19hZGQoc3RjYiwgJnN0
Y2ItPmFzb2MsICZzdGNiLT5hc29jLnN0cm1vdXRbaV0sIHNwLCBob2xkc19sb2NrKTsKKwkJCQlz
Y3RwX3NzX2ZjZnNfYWRkKHN0Y2IsICZzdGNiLT5hc29jLCAmc3RjYi0+YXNvYy5zdHJtb3V0W2ld
LCBzcCwgMSk7CiAJCQkJYWRkX21vcmUgPSAxOwogCQkJfQogCQl9CiAJCW4rKzsKIAl9CisJaWYg
KGhvbGRzX2xvY2sgPT0gMCkgeworCQlTQ1RQX1RDQl9TRU5EX1VOTE9DSyhzdGNiKTsKKwl9CiAJ
cmV0dXJuOwogfQogCkBAIC03OTUsMTIgKzgxOSwxNyBAQCBzdGF0aWMgdm9pZAogc2N0cF9zc19m
Y2ZzX2NsZWFyKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24g
KmFzb2MsCiAgICAgICAgICAgICAgICAgICAgaW50IGNsZWFyX3ZhbHVlcywgaW50IGhvbGRzX2xv
Y2spCiB7CisJc3RydWN0IHNjdHBfc3RyZWFtX3F1ZXVlX3BlbmRpbmcgKnNwOworCiAJaWYgKGNs
ZWFyX3ZhbHVlcykgewogCQlpZiAoaG9sZHNfbG9jayA9PSAwKSB7CiAJCQlTQ1RQX1RDQl9TRU5E
X0xPQ0soc3RjYik7CiAJCX0KIAkJd2hpbGUgKCFUQUlMUV9FTVBUWSgmYXNvYy0+c3NfZGF0YS5v
dXQubGlzdCkpIHsKLQkJCVRBSUxRX1JFTU9WRSgmYXNvYy0+c3NfZGF0YS5vdXQubGlzdCwgVEFJ
TFFfRklSU1QoJmFzb2MtPnNzX2RhdGEub3V0Lmxpc3QpLCBzc19uZXh0KTsKKwkJCXNwID0gVEFJ
TFFfRklSU1QoJmFzb2MtPnNzX2RhdGEub3V0Lmxpc3QpOworCQkJVEFJTFFfUkVNT1ZFKCZhc29j
LT5zc19kYXRhLm91dC5saXN0LCBzcCwgc3NfbmV4dCk7CisJCQlzcC0+c3NfbmV4dC50cWVfbmV4
dCA9IE5VTEw7CisJCQlzcC0+c3NfbmV4dC50cWVfcHJldiA9IE5VTEw7CiAJCX0KIAkJaWYgKGhv
bGRzX2xvY2sgPT0gMCkgewogCQkJU0NUUF9UQ0JfU0VORF9VTkxPQ0soc3RjYik7CkBAIC04MjAs
NiArODQ5LDggQEAgc2N0cF9zc19mY2ZzX2luaXRfc3RyZWFtKHN0cnVjdCBzY3RwX3RjYiAqc3Rj
Yiwgc3RydWN0IHNjdHBfc3RyZWFtX291dCAqc3RycSwgc3QKIAkJCXN0Y2ItPmFzb2Muc3NfZGF0
YS5sYXN0X291dF9zdHJlYW0gPSBzdHJxOwogCQl9CiAJfQorCXN0cnEtPnNzX3BhcmFtcy5mYi5u
ZXh0X3Nwb2tlLnRxZV9uZXh0ID0gTlVMTDsKKwlzdHJxLT5zc19wYXJhbXMuZmIubmV4dF9zcG9r
ZS50cWVfcHJldiA9IE5VTEw7CiAJcmV0dXJuOwogfQogCkBAIC04NjMsNiArODk0LDggQEAgc2N0
cF9zc19mY2ZzX3JlbW92ZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29j
aWF0aW9uICphc29jLAogCSAgICAoKHNwLT5zc19uZXh0LnRxZV9uZXh0ICE9IE5VTEwpIHx8CiAJ
ICAgICAoc3AtPnNzX25leHQudHFlX3ByZXYgIT0gTlVMTCkpKSB7CiAJCVRBSUxRX1JFTU9WRSgm
YXNvYy0+c3NfZGF0YS5vdXQubGlzdCwgc3AsIHNzX25leHQpOworCQlzcC0+c3NfbmV4dC50cWVf
bmV4dCA9IE5VTEw7CisJCXNwLT5zc19uZXh0LnRxZV9wcmV2ID0gTlVMTDsKIAl9CiAJaWYgKGhv
bGRzX2xvY2sgPT0gMCkgewogCQlTQ1RQX1RDQl9TRU5EX1VOTE9DSyhzdGNiKTsKQEAgLTg3OCw2
ICs5MTEsOSBAQCBzY3RwX3NzX2ZjZnNfc2VsZWN0KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiBTQ1RQ
X1VOVVNFRCwgc3RydWN0IHNjdHBfbmV0cyAqbmV0LAogCXN0cnVjdCBzY3RwX3N0cmVhbV9vdXQg
KnN0cnE7CiAJc3RydWN0IHNjdHBfc3RyZWFtX3F1ZXVlX3BlbmRpbmcgKnNwOwogCisJaWYgKGFz
b2MtPnNzX2RhdGEubG9ja2VkX29uX3NlbmRpbmcpIHsKKwkJcmV0dXJuIChhc29jLT5zc19kYXRh
LmxvY2tlZF9vbl9zZW5kaW5nKTsKKwl9CiAJc3AgPSBUQUlMUV9GSVJTVCgmYXNvYy0+c3NfZGF0
YS5vdXQubGlzdCk7CiBkZWZhdWx0X2FnYWluOgogCWlmIChzcCAhPSBOVUxMKSB7CkBAIC05MTMs
NyArOTQ5LDcgQEAgZGVmYXVsdF9hZ2FpbjoKIGNvbnN0IHN0cnVjdCBzY3RwX3NzX2Z1bmN0aW9u
cyBzY3RwX3NzX2Z1bmN0aW9uc1tdID0gewogLyogU0NUUF9TU19ERUZBVUxUICovCiB7Ci0jaWYg
ZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQor
I2lmIGRlZmluZWQoX1dJTjMyKQogCXNjdHBfc3NfZGVmYXVsdF9pbml0LAogCXNjdHBfc3NfZGVm
YXVsdF9jbGVhciwKIAlzY3RwX3NzX2RlZmF1bHRfaW5pdF9zdHJlYW0sCkBAIC05NDMsNyArOTc5
LDcgQEAgY29uc3Qgc3RydWN0IHNjdHBfc3NfZnVuY3Rpb25zIHNjdHBfc3NfZnVuY3Rpb25zW10g
PSB7CiB9LAogLyogU0NUUF9TU19ST1VORF9ST0JJTiAqLwogewotI2lmIGRlZmluZWQoX19XaW5k
b3dzX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9X
SU4zMikKIAlzY3RwX3NzX2RlZmF1bHRfaW5pdCwKIAlzY3RwX3NzX2RlZmF1bHRfY2xlYXIsCiAJ
c2N0cF9zc19kZWZhdWx0X2luaXRfc3RyZWFtLApAQCAtOTczLDcgKzEwMDksNyBAQCBjb25zdCBz
dHJ1Y3Qgc2N0cF9zc19mdW5jdGlvbnMgc2N0cF9zc19mdW5jdGlvbnNbXSA9IHsKIH0sCiAvKiBT
Q1RQX1NTX1JPVU5EX1JPQklOX1BBQ0tFVCAqLwogewotI2lmIGRlZmluZWQoX19XaW5kb3dzX18p
IHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikK
IAlzY3RwX3NzX2RlZmF1bHRfaW5pdCwKIAlzY3RwX3NzX2RlZmF1bHRfY2xlYXIsCiAJc2N0cF9z
c19kZWZhdWx0X2luaXRfc3RyZWFtLApAQCAtMTAwMyw3ICsxMDM5LDcgQEAgY29uc3Qgc3RydWN0
IHNjdHBfc3NfZnVuY3Rpb25zIHNjdHBfc3NfZnVuY3Rpb25zW10gPSB7CiB9LAogLyogU0NUUF9T
U19QUklPUklUWSAqLwogewotI2lmIGRlZmluZWQoX19XaW5kb3dzX18pIHx8IGRlZmluZWQoX19V
c2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIAlzY3RwX3NzX2RlZmF1
bHRfaW5pdCwKIAlzY3RwX3NzX3ByaW9fY2xlYXIsCiAJc2N0cF9zc19wcmlvX2luaXRfc3RyZWFt
LApAQCAtMTAzMyw3ICsxMDY5LDcgQEAgY29uc3Qgc3RydWN0IHNjdHBfc3NfZnVuY3Rpb25zIHNj
dHBfc3NfZnVuY3Rpb25zW10gPSB7CiB9LAogLyogU0NUUF9TU19GQUlSX0JBTkRXSVRIICovCiB7
Ci0jaWYgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5k
b3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogCXNjdHBfc3NfZGVmYXVsdF9pbml0LAogCXNjdHBf
c3NfZmJfY2xlYXIsCiAJc2N0cF9zc19mYl9pbml0X3N0cmVhbSwKQEAgLTEwNjMsNyArMTA5OSw3
IEBAIGNvbnN0IHN0cnVjdCBzY3RwX3NzX2Z1bmN0aW9ucyBzY3RwX3NzX2Z1bmN0aW9uc1tdID0g
ewogfSwKIC8qIFNDVFBfU1NfRklSU1RfQ09NRSAqLwogewotI2lmIGRlZmluZWQoX19XaW5kb3dz
X18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4z
MikKIAlzY3RwX3NzX2ZjZnNfaW5pdCwKIAlzY3RwX3NzX2ZjZnNfY2xlYXIsCiAJc2N0cF9zc19m
Y2ZzX2luaXRfc3RyZWFtLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0
L3NjdHBfc3RydWN0cy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfc3RydWN0
cy5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggZjQ5ZjJjODdhNzcwLi4x
ZjVmMTUzZTk4NzcKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfc3RydWN0
cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
dXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3N0cnVjdHMuaApAQCAt
MzIsOSArMzIsOSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpZmRlZiBfX0ZyZWVCU0RfXworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVC
U0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9zdHJ1Y3RzLmggMzI1MzcwIDIwMTctMTEtMDMgMjA6
NDY6MTJaIHR1ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQv
c2N0cF9zdHJ1Y3RzLmggMzY0MjY4IDIwMjAtMDgtMTYgMTE6NTA6MzdaIHR1ZXhlbiAkIik7CiAj
ZW5kaWYKIAogI2lmbmRlZiBfTkVUSU5FVF9TQ1RQX1NUUlVDVFNfSF8KQEAgLTU1LDcgKzU1LDcg
QEAgc3RydWN0IHNjdHBfdGltZXIgewogCXZvaWQgKmVwOwogCXZvaWQgKnRjYjsKIAl2b2lkICpu
ZXQ7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAw
MDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
IAl2b2lkICp2bmV0OwogI2VuZGlmCiAKQEAgLTExMywxMyArMTEzLDEyIEBAIHR5cGVkZWYgdm9p
ZCAoKmFzb2NfZnVuYykgKHN0cnVjdCBzY3RwX2lucGNiICosIHN0cnVjdCBzY3RwX3RjYiAqLCB2
b2lkICpwdHIsCiB0eXBlZGVmIGludCAoKmlucF9mdW5jKSAoc3RydWN0IHNjdHBfaW5wY2IgKiwg
dm9pZCAqcHRyLCB1aW50MzJfdCB2YWwpOwogdHlwZWRlZiB2b2lkICgqZW5kX2Z1bmMpICh2b2lk
ICpwdHIsIHVpbnQzMl90IHZhbCk7CiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBkZWZp
bmVkKFNDVFBfTUNPUkVfSU5QVVQpICYmIGRlZmluZWQoU01QKQorI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaWYgZGVmaW5lZChTQ1RQX01DT1JF
X0lOUFVUKSAmJiBkZWZpbmVkKFNNUCkKIC8qIHdoYXRzIG9uIHRoZSBtY29yZSBjb250cm9sIHN0
cnVjdCAqLwogc3RydWN0IHNjdHBfbWNvcmVfcXVldWUgewogCVRBSUxRX0VOVFJZKHNjdHBfbWNv
cmVfcXVldWUpIG5leHQ7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3Zl
cnNpb24gPj0gODAxMDAwCiAJc3RydWN0IHZuZXQgKnZuOwotI2VuZGlmCiAJc3RydWN0IG1idWYg
Km07CiAJaW50IG9mZjsKIAlpbnQgdjY7CkBAIC0xMzUsMTQgKzEzNCwxMiBAQCBzdHJ1Y3Qgc2N0
cF9tY29yZV9jdHJsIHsKIAlpbnQgcnVubmluZzsKIAlpbnQgY3B1aWQ7CiB9OwotCi0KICNlbmRp
ZgotCisjZW5kaWYKIAogc3RydWN0IHNjdHBfaXRlcmF0b3IgewogCVRBSUxRX0VOVFJZKHNjdHBf
aXRlcmF0b3IpIHNjdHBfbnh0X2l0cjsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0Zy
ZWVCU0RfdmVyc2lvbiA+PSA4MDEwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCXN0cnVjdCB2bmV0ICp2bjsKICNlbmRpZgogCXN0cnVjdCBz
Y3RwX3RpbWVyIHRtcjsKQEAgLTE3Myw3ICsxNzAsNyBAQCBzdHJ1Y3Qgc2N0cF9jb3B5X2FsbCB7
CiAJc3RydWN0IHNjdHBfaW5wY2IgKmlucDsJLyogZXAgKi8KIAlzdHJ1Y3QgbWJ1ZiAqbTsKIAlz
dHJ1Y3Qgc2N0cF9zbmRyY3ZpbmZvIHNuZHJjdjsKLQlpbnQgc25kbGVuOworCXNzaXplX3Qgc25k
bGVuOwogCWludCBjbnRfc2VudDsKIAlpbnQgY250X2ZhaWxlZDsKIH07CkBAIC0xODQsMTAgKzE4
MSwxMCBAQCBzdHJ1Y3Qgc2N0cF9hc2NvbmZfaXRlcmF0b3IgewogfTsKIAogc3RydWN0IGl0ZXJh
dG9yX2NvbnRyb2wgewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzdHJ1Y3QgbXR4IGlwaV9pdGVy
YXRvcl93cV9tdHg7CiAJc3RydWN0IG10eCBpdF9tdHg7Ci0jZWxpZiBkZWZpbmVkKF9fQVBQTEVf
XykKKyNlbGlmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
CWxja19tdHhfdCAqaXBpX2l0ZXJhdG9yX3dxX210eDsKIAlsY2tfbXR4X3QgKml0X210eDsKICNl
bGlmIGRlZmluZWQoU0NUUF9QUk9DRVNTX0xFVkVMX0xPQ0tTKQpAQCAtMjAwLDcgKzE5Nyw3IEBA
IHN0cnVjdCBpdGVyYXRvcl9jb250cm9sIHsKIAlwdGhyZWFkX211dGV4X3QgaXRfbXR4OwogCXB0
aHJlYWRfY29uZF90IGl0ZXJhdG9yX3dha2V1cDsKICNlbmRpZgotI2VsaWYgZGVmaW5lZChfX1dp
bmRvd3NfXykKKyNlbGlmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCXN0cnVjdCBzcGlubG9jayBpdF9sb2NrOwogCXN0cnVjdCBzcGlubG9jayBpcGlfaXRlcmF0
b3Jfd3FfbG9jazsKIAlLRVZFTlQgaXRlcmF0b3Jfd2FrZXVwWzJdOwpAQCAtMjA4LDcgKzIwNSw3
IEBAIHN0cnVjdCBpdGVyYXRvcl9jb250cm9sIHsKICNlbHNlCiAJdm9pZCAqaXRfbXR4OwogI2Vu
ZGlmCi0jaWYgIWRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgIShkZWZpbmVkKF9XSU4zMikgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAjaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlT
Q1RQX1BST0NFU1NfU1RSVUNUIHRocmVhZF9wcm9jOwogI2Vsc2UKQEAgLTIyMCw3ICsyMTcsNyBA
QCBzdHJ1Y3QgaXRlcmF0b3JfY29udHJvbCB7CiAJdWludDMyX3QgaXRlcmF0b3JfcnVubmluZzsK
IAl1aW50MzJfdCBpdGVyYXRvcl9mbGFnczsKIH07Ci0jaWYgIWRlZmluZWQoX19GcmVlQlNEX18p
CisjaWYgIShkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkK
ICNkZWZpbmUgU0NUUF9JVEVSQVRPUl9NVVNUX0VYSVQJCTB4MDAwMDAwMDEKICNkZWZpbmUgU0NU
UF9JVEVSQVRPUl9FWElURUQJCTB4MDAwMDAwMDIKICNlbmRpZgpAQCAtMjI4LDI4ICsyMjUsMTgg
QEAgc3RydWN0IGl0ZXJhdG9yX2NvbnRyb2wgewogI2RlZmluZSBTQ1RQX0lURVJBVE9SX1NUT1Bf
Q1VSX0lOUAkweDAwMDAwMDA4CiAKIHN0cnVjdCBzY3RwX25ldF9yb3V0ZSB7Ci0Jc2N0cF9ydGVu
dHJ5X3QgKnJvX3J0OwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCi0jaWYgX19GcmVlQlNEX3Zl
cnNpb24gPCAxMTAwMDkzCi0jaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAwMDAwCi0Jdm9pZCAq
cm9fbGxlOwotI2VuZGlmCi0jaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0gOTAwMDAwCi0Jdm9pZCAq
cm9faWE7Ci0JaW50IHJvX2ZsYWdzOwotI2VuZGlmCi0jZWxzZQotI2lmIF9fRnJlZUJTRF92ZXJz
aW9uID49IDExMDAxMTYKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQorCXN0cnVjdCBuaG9wX29iamVjdCAqcm9fbmg7CiAJc3RydWN0IGxsZW50cnkg
KnJvX2xsZTsKLSNlbmRpZgogCWNoYXIJCSpyb19wcmVwZW5kOwogCXVpbnQxNl90CXJvX3BsZW47
CiAJdWludDE2X3QJcm9fZmxhZ3M7CiAJdWludDE2X3QJcm9fbXR1OwogCXVpbnQxNl90CXNwYXJl
OworI2Vsc2UKKwlzY3RwX3J0ZW50cnlfdCAqcm9fcnQ7CiAjZW5kaWYKLSNlbmRpZgotI2lmIGRl
ZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogI2lmICFkZWZpbmVkKEFQUExFX0xFT1BBUkQpICYmICFkZWZpbmVkKEFQUExF
X1NOT1dMRU9QQVJEKSAmJiAhZGVmaW5lZChBUFBMRV9MSU9OKSAmJiAhZGVmaW5lZChBUFBMRV9N
T1VOVEFJTkxJT04pICYmICFkZWZpbmVkKEFQUExFX0VMQ0FQSVRBTikKIAlzdHJ1Y3QgbGxlbnRy
eQkqcm9fbGxlOwogI2VuZGlmCkBAIC0zMzQsNyArMzIxLDcgQEAgc3RydWN0IHNjdHBfbmV0cyB7
CiAJaW50IGxhc3RzYTsKIAlpbnQgbGFzdHN2OwogCXVpbnQ2NF90IHJ0dDsgLyogbGFzdCBtZWFz
dXJlZCBydHQgdmFsdWUgaW4gdXMgKi8KLQl1bnNpZ25lZCBpbnQgUlRPOworCXVpbnQzMl90IFJU
TzsKIAogCS8qIFRoaXMgaXMgdXNlZCBmb3IgU0hVVERPV04vU0hVVERPV04tQUNLL1NFTkQgb3Ig
SU5JVCB0aW1lcnMgKi8KIAlzdHJ1Y3Qgc2N0cF90aW1lciByeHRfdGltZXI7CkBAIC00NDMsNyAr
NDMwLDcgQEAgc3RydWN0IHNjdHBfbmV0cyB7CiAJdWludDhfdCBsYXN0X2hzX3VzZWQ7CS8qIGlu
ZGV4IGludG8gdGhlIGxhc3QgSFMgdGFibGUgZW50cnkgd2UgdXNlZCAqLwogCXVpbnQ4X3QgbGFu
X3R5cGU7CiAJdWludDhfdCBydG9fbmVlZGVkOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAl1aW50
MzJfdCBmbG93aWQ7CiAJdWludDhfdCBmbG93dHlwZTsKICNlbmRpZgpAQCAtNTk3LDYgKzU4NCw3
IEBAIHN0cnVjdCBzY3RwX3N0cmVhbV9xdWV1ZV9wZW5kaW5nIHsKIAl1aW50OF90ICBzZW5kZXJf
YWxsX2RvbmU7CiAJdWludDhfdCAgcHV0X2xhc3Rfb3V0OwogCXVpbnQ4X3QgIGRpc2NhcmRfcmVz
dDsKKwl1aW50OF90ICBwcm9jZXNzaW5nOwogfTsKIAogLyoKQEAgLTg2OCw3ICs4NTYsNiBAQCBz
dHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiB7CiAJc3RydWN0IHNjdHBfdGltZXIgc3RycmVzZXRfdGlt
ZXI7CS8qIHN0cmVhbSByZXNldCAqLwogCXN0cnVjdCBzY3RwX3RpbWVyIHNodXRfZ3VhcmRfdGlt
ZXI7CS8qIHNodXRkb3duIGd1YXJkICovCiAJc3RydWN0IHNjdHBfdGltZXIgYXV0b2Nsb3NlX3Rp
bWVyOwkvKiBhdXRvbWF0aWMgY2xvc2UgdGltZXIgKi8KLQlzdHJ1Y3Qgc2N0cF90aW1lciBkZWxh
eWVkX2V2ZW50X3RpbWVyOwkvKiB0aW1lciBmb3IgZGVsYXllZCBldmVudHMgKi8KIAlzdHJ1Y3Qg
c2N0cF90aW1lciBkZWxldGVfcHJpbV90aW1lcjsJLyogZGVsZXRpbmcgcHJpbWFyeSBkc3QgKi8K
IAogCS8qIGxpc3Qgb2YgcmVzdHJpY3RlZCBsb2NhbCBhZGRyZXNzZXMgKi8KQEAgLTExMjIsNyAr
MTEwOSw3IEBAIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uIHsKIAl1aW50MzJfdCBoZWFydF9iZWF0
X2RlbGF5OwogCiAJLyogYXV0b2Nsb3NlICovCi0JdW5zaWduZWQgaW50IHNjdHBfYXV0b2Nsb3Nl
X3RpY2tzOworCXVpbnQzMl90IHNjdHBfYXV0b2Nsb3NlX3RpY2tzOwogCiAJLyogaG93IG1hbnkg
cHJlb3BlbiBzdHJlYW1zIHdlIGhhdmUgKi8KIAl1bnNpZ25lZCBpbnQgcHJlX29wZW5fc3RyZWFt
czsKQEAgLTExMzEsNyArMTExOCw3IEBAIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uIHsKIAl1bnNp
Z25lZCBpbnQgbWF4X2luYm91bmRfc3RyZWFtczsKIAogCS8qIHRoZSBjb29raWUgbGlmZSBJIGF3
YXJkIGZvciBhbnkgY29va2llLCBpbiBzZWNvbmRzICovCi0JdW5zaWduZWQgaW50IGNvb2tpZV9s
aWZlOworCXVpbnQzMl90IGNvb2tpZV9saWZlOwogCS8qIHRpbWUgdG8gZGVsYXkgYWNrcyBmb3Ig
Ki8KIAl1bnNpZ25lZCBpbnQgZGVsYXllZF9hY2s7CiAJdW5zaWduZWQgaW50IG9sZF9kZWxheWVk
X2FjazsKQEAgLTExNDAsMTAgKzExMjcsMTAgQEAgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gewog
CiAJdW5zaWduZWQgaW50IG51bWR1cHRzbnM7CiAJaW50IGR1cF90c25zW1NDVFBfTUFYX0RVUF9U
U05TXTsKLQl1bnNpZ25lZCBpbnQgaW5pdGlhbF9pbml0X3J0b19tYXg7CS8qIGluaXRpYWwgUlRP
IGZvciBJTklUJ3MgKi8KLQl1bnNpZ25lZCBpbnQgaW5pdGlhbF9ydG87CS8qIGluaXRpYWwgc2Vu
ZCBSVE8gKi8KLQl1bnNpZ25lZCBpbnQgbWlucnRvOwkvKiBwZXIgYXNzb2MgUlRPLU1JTiAqLwot
CXVuc2lnbmVkIGludCBtYXhydG87CS8qIHBlciBhc3NvYyBSVE8tTUFYICovCisJdWludDMyX3Qg
aW5pdGlhbF9pbml0X3J0b19tYXg7CS8qIGluaXRpYWwgUlRPIGZvciBJTklUJ3MgKi8KKwl1aW50
MzJfdCBpbml0aWFsX3J0bzsJLyogaW5pdGlhbCBzZW5kIFJUTyAqLworCXVpbnQzMl90IG1pbnJ0
bzsJLyogcGVyIGFzc29jIFJUTy1NSU4gKi8KKwl1aW50MzJfdCBtYXhydG87CS8qIHBlciBhc3Nv
YyBSVE8tTUFYICovCiAKIAkvKiBhdXRoZW50aWNhdGlvbiBmaWVsZHMgKi8KIAlzY3RwX2F1dGhf
Y2hrbGlzdF90ICpsb2NhbF9hdXRoX2NodW5rczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNj
dHBsaWIvbmV0aW5ldC9zY3RwX3N5c2N0bC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0
L3NjdHBfc3lzY3RsLmMKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA4M2Qy
YzlhMmI4M2EuLjkxMDY4MTE4ZTE3NgotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQv
c2N0cF9zeXNjdGwuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9zeXNj
dGwuYwpAQCAtMzIsOSArMzIsOSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZmRlZiBfX0ZyZWVCU0RfXworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci1fX0ZCU0RJ
RCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9zeXNjdGwuYyAzMjY2NzIgMjAxNy0x
Mi0wNyAyMjoxOTowOFogdHVleGVuICQiKTsKK19fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMv
bmV0aW5ldC9zY3RwX3N5c2N0bC5jIDM2MTkzNCAyMDIwLTA2LTA4IDIwOjIzOjIwWiB0dWV4ZW4g
JCIpOwogI2VuZGlmCiAKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfb3MuaD4KQEAgLTQ0LDE1ICs0
NCwxNSBAQCBfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9zeXNjdGwu
YyAzMjY2NzIgMjAxNy0xMi0wNyAyMjoxOTowOFogdAogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9w
Y2IuaD4KICNpbmNsdWRlIDxuZXRpbmV0L3NjdHB1dGlsLmg+CiAjaW5jbHVkZSA8bmV0aW5ldC9z
Y3RwX291dHB1dC5oPgotI2lmZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxzeXMvc21wLmg+CiAjaW5j
bHVkZSA8c3lzL3N5c2N0bC5oPgogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYg
ZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8
bmV0aW5ldC9zY3RwX2JzZF9hZGRyLmg+CiAjZW5kaWYKIAotI2lmZGVmIF9fRnJlZUJTRF9fCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIEZFQVRV
UkUoc2N0cCwgIlN0cmVhbSBDb250cm9sIFRyYW5zbWlzc2lvbiBQcm90b2NvbCIpOwogI2VuZGlm
CiAKQEAgLTc0LDcgKzc0LDcgQEAgc2N0cF9pbml0X3N5c2N0bHMoKQogCVNDVFBfQkFTRV9TWVND
VEwoc2N0cF9yZWNvbmZpZ19lbmFibGUpID0gU0NUUENUTF9SRUNPTkZJR19FTkFCTEVfREVGQVVM
VDsKIAlTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbnJzYWNrX2VuYWJsZSkgPSBTQ1RQQ1RMX05SU0FD
S19FTkFCTEVfREVGQVVMVDsKIAlTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfcGt0ZHJvcF9lbmFibGUp
ID0gU0NUUENUTF9QS1REUk9QX0VOQUJMRV9ERUZBVUxUOwotI2lmICEoZGVmaW5lZChfX0ZyZWVC
U0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAwMDAwKQorI2lmICEoZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAJU0NUUF9CQVNFX1NZU0NUTChz
Y3RwX25vX2NzdW1fb25fbG9vcGJhY2spID0gU0NUUENUTF9MT09QQkFDS19OT0NTVU1fREVGQVVM
VDsKICNlbmRpZgogCVNDVFBfQkFTRV9TWVNDVEwoc2N0cF9wZWVyX2NodW5rX29oKSA9IFNDVFBD
VExfUEVFUl9DSEtPSF9ERUZBVUxUOwpAQCAtMTQ5LDkgKzE0OSwxMCBAQCBzY3RwX2luaXRfc3lz
Y3RscygpCiAJU0NUUF9CQVNFX1NZU0NUTChzY3RwX3N0ZWFkeV9zdGVwKSA9IFNDVFBDVExfUlRU
VkFSX1NURUFEWVNfREVGQVVMVDsKIAlTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfdXNlX2RjY2NfZWNu
KSA9IFNDVFBDVExfUlRUVkFSX0RDQ0NFQ05fREVGQVVMVDsKIAlTQ1RQX0JBU0VfU1lTQ1RMKHNj
dHBfYmxhY2tob2xlKSA9IFNDVFBDVExfQkxBQ0tIT0xFX0RFRkFVTFQ7CisJU0NUUF9CQVNFX1NZ
U0NUTChzY3RwX3NlbmRhbGxfbGltaXQpID0gU0NUUENUTF9TRU5EQUxMX0xJTUlUX0RFRkFVTFQ7
CiAJU0NUUF9CQVNFX1NZU0NUTChzY3RwX2RpYWdfaW5mb19jb2RlKSA9IFNDVFBDVExfRElBR19J
TkZPX0NPREVfREVGQVVMVDsKICNpZiBkZWZpbmVkKFNDVFBfTE9DQUxfVFJBQ0VfQlVGKQotI2lm
IGRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAJLyogT24gV2luZG93cywgdGhlIHJlc291cmNlIGZvciBnbG9iYWwgdmFy
aWFibGVzIGlzIGxpbWl0ZWQuICovCiAJTUFMTE9DKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9sb2cp
LCBzdHJ1Y3Qgc2N0cF9sb2cgKiwgc2l6ZW9mKHN0cnVjdCBzY3RwX2xvZyksIE1fU1lTQ1RMLCBN
X1pFUk8pOwogI2Vsc2UKQEAgLTE2NCwxOCArMTY1LDE4IEBAIHNjdHBfaW5pdF9zeXNjdGxzKCkK
ICNpZiBkZWZpbmVkKFNDVFBfREVCVUcpCiAJU0NUUF9CQVNFX1NZU0NUTChzY3RwX2RlYnVnX29u
KSA9IFNDVFBDVExfREVCVUdfREVGQVVMVDsKICNlbmRpZgotI2lmIGRlZmluZWQoX19BUFBMRV9f
KQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCVND
VFBfQkFTRV9TWVNDVEwoc2N0cF9pZ25vcmVfdm13YXJlX2ludGVyZmFjZXMpID0gU0NUUENUTF9J
R05PUkVfVk1XQVJFX0lOVEVSRkFDRVNfREVGQVVMVDsKIAlTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBf
bWFpbl90aW1lcikgPSBTQ1RQQ1RMX01BSU5fVElNRVJfREVGQVVMVDsKIAlTQ1RQX0JBU0VfU1lT
Q1RMKHNjdHBfYWRkcl93YXRjaGRvZ19saW1pdCkgPSBTQ1RQQ1RMX0FERFJfV0FUQ0hET0dfTElN
SVRfREVGQVVMVDsKIAlTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfdnRhZ193YXRjaGRvZ19saW1pdCkg
PSBTQ1RQQ1RMX1ZUQUdfV0FUQ0hET0dfTElNSVRfREVGQVVMVDsKICNlbmRpZgotI2lmIGRlZmlu
ZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmlu
ZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCVNDVFBfQkFTRV9TWVND
VEwoc2N0cF9vdXRwdXRfdW5sb2NrZWQpID0gU0NUUENUTF9PVVRQVVRfVU5MT0NLRURfREVGQVVM
VDsKICNlbmRpZgogfQogCi0jaWYgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiBkZWZpbmVkKF9X
SU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIHZvaWQKIHNjdHBfZmluaXNoX3N5c2N0
bHMoKQogewpAQCAtMTg4LDcgKzE4OSw3IEBAIHNjdHBfZmluaXNoX3N5c2N0bHMoKQogfQogI2Vu
ZGlmCiAKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwg
ZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogLyogSXQg
cmV0dXJucyBhbiB1cHBlciBsaW1pdC4gTm8gZmlsdGVyaW5nIGlzIGRvbmUgaGVyZSAqLwogc3Rh
dGljIHVuc2lnbmVkIGludAogc2N0cF9zeXNjdGxfbnVtYmVyX29mX2FkZHJlc3NlcyhzdHJ1Y3Qg
c2N0cF9pbnBjYiAqaW5wKQpAQCAtMzI4LDcgKzMyOSw3IEBAIHNjdHBfc3lzY3RsX2NvcHlfb3V0
X2xvY2FsX2FkZHJlc3NlcyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2Ig
KnN0CiAJCQkJCQlzaW4gPSAmc2N0cF9pZmEtPmFkZHJlc3Muc2luOwogCQkJCQkJaWYgKHNpbi0+
c2luX2FkZHIuc19hZGRyID09IDApCiAJCQkJCQkJY29udGludWU7Ci0jaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogCQkJCQkJaWYgKHByaXNvbl9jaGVja19pcDQoaW5wLT5pcF9pbnAuaW5wLmlucF9jcmVk
LAogCQkJCQkJICAgICAgICAgICAgICAgICAgICAgJnNpbi0+c2luX2FkZHIpICE9IDApIHsKIAkJ
CQkJCQljb250aW51ZTsKQEAgLTM0OSw3ICszNTAsNyBAQCBzY3RwX3N5c2N0bF9jb3B5X291dF9s
b2NhbF9hZGRyZXNzZXMoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpz
dAogCQkJCQkJc2luNiA9ICZzY3RwX2lmYS0+YWRkcmVzcy5zaW42OwogCQkJCQkJaWYgKElONl9J
U19BRERSX1VOU1BFQ0lGSUVEKCZzaW42LT5zaW42X2FkZHIpKQogCQkJCQkJCWNvbnRpbnVlOwot
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQkJCWlmIChwcmlzb25fY2hlY2tfaXA2KGlucC0+aXBf
aW5wLmlucC5pbnBfY3JlZCwKIAkJCQkJCSAgICAgICAgICAgICAgICAgICAgICZzaW42LT5zaW42
X2FkZHIpICE9IDApIHsKIAkJCQkJCQljb250aW51ZTsKQEAgLTQyNyw3ICs0MjgsNyBAQCBzY3Rw
X3N5c2N0bF9jb3B5X291dF9sb2NhbF9hZGRyZXNzZXMoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwg
c3RydWN0IHNjdHBfdGNiICpzdAogLyoKICAqIHN5c2N0bCBmdW5jdGlvbnMKICAqLwotI2lmIGRl
ZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogc3RhdGljIGludAogc2N0cF9zeXNjdGxfaGFuZGxlX2Fzc29jbGlzdCBTWVND
VExfSEFORExFUl9BUkdTCiB7CkBAIC00NTcsNyArNDU4LDcgQEAgc2N0cF9zeXNjdGxfaGFuZGxl
X2Fzc29jbGlzdChTWVNDVExfSEFORExFUl9BUkdTKQogCW51bWJlcl9vZl9yZW1vdGVfYWRkcmVz
c2VzID0gMDsKIAogCVNDVFBfSU5QX0lORk9fUkxPQ0soKTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVf
XykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlp
ZiAocmVxLT5vbGRwdHIgPT0gVVNFUl9BRERSX05VTEwpIHsKICNlbHNlCiAJaWYgKHJlcS0+b2xk
cHRyID09IE5VTEwpIHsKQEAgLTQ4MiwxNCArNDgzLDE0IEBAIHNjdHBfc3lzY3RsX2hhbmRsZV9h
c3NvY2xpc3QoU1lTQ1RMX0hBTkRMRVJfQVJHUykKIAkJICAgIChudW1iZXJfb2ZfcmVtb3RlX2Fk
ZHJlc3NlcyArIG51bWJlcl9vZl9hc3NvY2lhdGlvbnMpICogc2l6ZW9mKHN0cnVjdCB4c2N0cF9y
YWRkcik7CiAKIAkJLyogcmVxdWVzdCBzb21lIG1vcmUgbWVtb3J5IHRoYW4gbmVlZGVkICovCi0j
aWYgIWRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgIShkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykpCiAJCXJlcS0+b2xkaWR4ID0gKG4gKyBuIC8gOCk7CiAjZWxzZQog
CQlyZXEtPmRhdGFpZHggPSAobiArIG4gLyA4KTsKICNlbmRpZgogCQlyZXR1cm4gKDApOwogCX0K
LSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKIAlpZiAocmVxLT5uZXdwdHIgIT0gVVNFUl9BRERSX05VTEwpIHsK
ICNlbHNlCiAJaWYgKHJlcS0+bmV3cHRyICE9IE5VTEwpIHsKQEAgLTQ5OCw2ICs0OTksOSBAQCBz
Y3RwX3N5c2N0bF9oYW5kbGVfYXNzb2NsaXN0KFNZU0NUTF9IQU5ETEVSX0FSR1MpCiAJCVNDVFBf
TFRSQUNFX0VSUl9SRVQoTlVMTCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfU1lTQ1RMLCBF
UEVSTSk7CiAJCXJldHVybiAoRVBFUk0pOwogCX0KKwltZW1zZXQoJnhpbnBjYiwgMCwgc2l6ZW9m
KHhpbnBjYikpOworCW1lbXNldCgmeHN0Y2IsIDAsIHNpemVvZih4c3RjYikpOworCW1lbXNldCgm
eHJhZGRyLCAwLCBzaXplb2YoeHJhZGRyKSk7CiAJTElTVF9GT1JFQUNIKGlucCwgJlNDVFBfQkFT
RV9JTkZPKGxpc3RoZWFkKSwgc2N0cF9saXN0KSB7CiAJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJ
CWlmIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19TT0NLRVRfQUxMR09ORSkgewpA
QCAtNTA3LDE2ICs1MTEsMTQgQEAgc2N0cF9zeXNjdGxfaGFuZGxlX2Fzc29jbGlzdChTWVNDVExf
SEFORExFUl9BUkdTKQogCQl4aW5wY2IubGFzdCA9IDA7CiAJCXhpbnBjYi5sb2NhbF9wb3J0ID0g
bnRvaHMoaW5wLT5zY3RwX2xwb3J0KTsKIAkJeGlucGNiLmZsYWdzID0gaW5wLT5zY3RwX2ZsYWdz
OwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uIDwgMTAwMDA0
OAotCQl4aW5wY2IuZmVhdHVyZXMgPSAodWludDMyX3QpaW5wLT5zY3RwX2ZlYXR1cmVzOwotI2Vs
c2UKIAkJeGlucGNiLmZlYXR1cmVzID0gaW5wLT5zY3RwX2ZlYXR1cmVzOwotI2VuZGlmCiAJCXhp
bnBjYi50b3RhbF9zZW5kcyA9IGlucC0+dG90YWxfc2VuZHM7CiAJCXhpbnBjYi50b3RhbF9yZWN2
cyA9IGlucC0+dG90YWxfcmVjdnM7CiAJCXhpbnBjYi50b3RhbF9ub3NwYWNlcyA9IGlucC0+dG90
YWxfbm9zcGFjZXM7CiAJCXhpbnBjYi5mcmFnbWVudGF0aW9uX3BvaW50ID0gaW5wLT5zY3RwX2Zy
YWdfcG9pbnQ7Ci0jaWYgIShkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAoX19GcmVlQlNEX3ZlcnNp
b24gPCAxMDAxNTE3KSkKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQorCQl4aW5wY2Iuc29ja2V0ID0gKHVpbnRwdHJfdClpbnAtPnNjdHBfc29ja2V0
OworI2Vsc2UKIAkJeGlucGNiLnNvY2tldCA9IGlucC0+c2N0cF9zb2NrZXQ7CiAjZW5kaWYKIAkJ
c28gPSBpbnAtPnNjdHBfc29ja2V0OwpAQCAtNTI2LDMzICs1MjgsMTYgQEAgc2N0cF9zeXNjdGxf
aGFuZGxlX2Fzc29jbGlzdChTWVNDVExfSEFORExFUl9BUkdTKQogCQkJeGlucGNiLnFsZW4gPSAw
OwogCQkJeGlucGNiLm1heHFsZW4gPSAwOwogCQl9IGVsc2UgewotI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDEyMDAwMzQKKyNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJeGlucGNiLnFsZW4gPSBzby0+
c29sX3FsZW47Ci0jZWxzZQotCQkJeGlucGNiLnFsZW4gPSBzby0+c29fcWxlbjsKLSNlbmRpZgot
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID4gMTEwMDA5Ngot
I2lmIF9fRnJlZUJTRF92ZXJzaW9uID49IDEyMDAwMzQKIAkJCXhpbnBjYi5xbGVuX29sZCA9IHNv
LT5zb2xfcWxlbiA+IFVTSFJUX01BWCA/CiAJCQkgICAgVVNIUlRfTUFYIDogKHVpbnQxNl90KSBz
by0+c29sX3FsZW47Ci0jZWxzZQotCQkJeGlucGNiLnFsZW5fb2xkID0gc28tPnNvX3FsZW4gPiBV
U0hSVF9NQVggPwotCQkJICAgIFVTSFJUX01BWCA6ICh1aW50MTZfdCkgc28tPnNvX3FsZW47Ci0j
ZW5kaWYKLSNlbmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJz
aW9uID49IDEyMDAwMzQKIAkJCXhpbnBjYi5tYXhxbGVuID0gc28tPnNvbF9xbGltaXQ7Ci0jZWxz
ZQotCQkJeGlucGNiLm1heHFsZW4gPSBzby0+c29fcWxpbWl0OwotI2VuZGlmCi0jaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPiAxMTAwMDk2Ci0jaWYgX19GcmVl
QlNEX3ZlcnNpb24gPj0gMTIwMDAzNAogCQkJeGlucGNiLm1heHFsZW5fb2xkID0gc28tPnNvbF9x
bGltaXQgPiBVU0hSVF9NQVggPwogCQkJICAgIFVTSFJUX01BWCA6ICh1aW50MTZfdCkgc28tPnNv
bF9xbGltaXQ7CiAjZWxzZQotCQkJeGlucGNiLm1heHFsZW5fb2xkID0gc28tPnNvX3FsaW1pdCA+
IFVTSFJUX01BWCA/Ci0JCQkgICAgVVNIUlRfTUFYIDogKHVpbnQxNl90KSBzby0+c29fcWxpbWl0
OwotI2VuZGlmCisJCQl4aW5wY2IucWxlbiA9IHNvLT5zb19xbGVuOworCQkJeGlucGNiLm1heHFs
ZW4gPSBzby0+c29fcWxpbWl0OwogI2VuZGlmCiAJCX0KIAkJU0NUUF9JTlBfSU5DUl9SRUYoaW5w
KTsKQEAgLTU4MSwxNiArNTY2LDggQEAgc2N0cF9zeXNjdGxfaGFuZGxlX2Fzc29jbGlzdChTWVND
VExfSEFORExFUl9BUkdTKQogCQkJCXhzdGNiLnByaW1hcnlfYWRkciA9IHN0Y2ItPmFzb2MucHJp
bWFyeV9kZXN0aW5hdGlvbi0+cm8uX2xfYWRkcjsKIAkJCXhzdGNiLmhlYXJ0YmVhdF9pbnRlcnZh
bCA9IHN0Y2ItPmFzb2MuaGVhcnRfYmVhdF9kZWxheTsKIAkJCXhzdGNiLnN0YXRlID0gKHVpbnQz
Ml90KXNjdHBfbWFwX2Fzc29jX3N0YXRlKHN0Y2ItPmFzb2Muc3RhdGUpOwotI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pCi0jaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAwMDAwCi0JCQkvKiA3LjAg
ZG9lcyBub3Qgc3VwcG9ydCB0aGVzZSAqLwogCQkJeHN0Y2IuYXNzb2NfaWQgPSBzY3RwX2dldF9h
c3NvY2lkKHN0Y2IpOwogCQkJeHN0Y2IucGVlcnNfcnduZCA9IHN0Y2ItPmFzb2MucGVlcnNfcndu
ZDsKLSNlbmRpZgotI2Vsc2UKLQkJCXhzdGNiLmFzc29jX2lkID0gc2N0cF9nZXRfYXNzb2NpZChz
dGNiKTsKLQkJCXhzdGNiLnBlZXJzX3J3bmQgPSBzdGNiLT5hc29jLnBlZXJzX3J3bmQ7Ci0jZW5k
aWYKIAkJCXhzdGNiLmluX3N0cmVhbXMgPSBzdGNiLT5hc29jLnN0cmVhbWluY250OwogCQkJeHN0
Y2Iub3V0X3N0cmVhbXMgPSBzdGNiLT5hc29jLnN0cmVhbW91dGNudDsKIAkJCXhzdGNiLm1heF9u
cl9yZXRyYW5zID0gc3RjYi0+YXNvYy5vdmVyYWxsX2Vycm9yX2NvdW50OwpAQCAtNjQyLDggKzYx
OSw2IEBAIHNjdHBfc3lzY3RsX2hhbmRsZV9hc3NvY2xpc3QoU1lTQ1RMX0hBTkRMRVJfQVJHUykK
IAkJCQl4cmFkZHIuY3duZCA9IG5ldC0+Y3duZDsKIAkJCQl4cmFkZHIuZmxpZ2h0X3NpemUgPSBu
ZXQtPmZsaWdodF9zaXplOwogCQkJCXhyYWRkci5tdHUgPSBuZXQtPm10dTsKLSNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKQotI2lmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMDAwMAogCQkJCXhyYWRk
ci5ydHQgPSBuZXQtPnJ0dCAvIDEwMDA7CiAJCQkJeHJhZGRyLmhlYXJ0YmVhdF9pbnRlcnZhbCA9
IG5ldC0+aGVhcnRfYmVhdF9kZWxheTsKIAkJCQl4cmFkZHIuc3N0aHJlc2ggPSBuZXQtPnNzdGhy
ZXNoOwpAQCAtNjU1LDIwICs2MzAsNiBAQCBzY3RwX3N5c2N0bF9oYW5kbGVfYXNzb2NsaXN0KFNZ
U0NUTF9IQU5ETEVSX0FSR1MpCiAJCQkJfSBlbHNlIHsKIAkJCQkJeHJhZGRyLnN0YXRlID0gU0NU
UF9JTkFDVElWRTsKIAkJCQl9Ci0jZW5kaWYKLSNlbHNlCi0JCQkJeHJhZGRyLnJ0dCA9IG5ldC0+
cnR0IC8gMTAwMDsKLQkJCQl4cmFkZHIuaGVhcnRiZWF0X2ludGVydmFsID0gbmV0LT5oZWFydF9i
ZWF0X2RlbGF5OwotCQkJCXhyYWRkci5zc3RocmVzaCA9IG5ldC0+c3N0aHJlc2g7Ci0JCQkJeHJh
ZGRyLmVuY2Fwc19wb3J0ID0gbmV0LT5wb3J0OwotCQkJCWlmIChuZXQtPmRlc3Rfc3RhdGUgJiBT
Q1RQX0FERFJfVU5DT05GSVJNRUQpIHsKLQkJCQkJeHJhZGRyLnN0YXRlID0gU0NUUF9VTkNPTkZJ
Uk1FRDsKLQkJCQl9IGVsc2UgaWYgKG5ldC0+ZGVzdF9zdGF0ZSAmIFNDVFBfQUREUl9SRUFDSEFC
TEUpIHsKLQkJCQkJeHJhZGRyLnN0YXRlID0gU0NUUF9BQ1RJVkU7Ci0JCQkJfSBlbHNlIHsKLQkJ
CQkJeHJhZGRyLnN0YXRlID0gU0NUUF9JTkFDVElWRTsKLQkJCQl9Ci0jZW5kaWYKIAkJCQl4cmFk
ZHIuc3RhcnRfdGltZS50dl9zZWMgPSAodWludDMyX3QpbmV0LT5zdGFydF90aW1lLnR2X3NlYzsK
IAkJCQl4cmFkZHIuc3RhcnRfdGltZS50dl91c2VjID0gKHVpbnQzMl90KW5ldC0+c3RhcnRfdGlt
ZS50dl91c2VjOwogCQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKQEAgLTcxNSw3ICs2NzYsNyBA
QCBza2lwOgogCXJldHVybiAoZXJyb3IpOwogfQogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisj
aWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBzdGF0aWMg
aW50CiBzY3RwX3N5c2N0bF9oYW5kbGVfdWRwX3R1bm5lbGluZyBTWVNDVExfSEFORExFUl9BUkdT
CiB7CkBAIC03MzIsMjIgKzY5MywxNCBAQCBzY3RwX3N5c2N0bF9oYW5kbGVfdWRwX3R1bm5lbGlu
ZyhTWVNDVExfSEFORExFUl9BUkdTKQogCW9sZCA9IFNDVFBfQkFTRV9TWVNDVEwoc2N0cF91ZHBf
dHVubmVsaW5nX3BvcnQpOwogCVNDVFBfSU5QX0lORk9fUlVOTE9DSygpOwogCW5ldyA9IG9sZDsK
LSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDAwNTYg
JiYgX19GcmVlQlNEX3ZlcnNpb24gPCAxMDAwMTAwCi0jaWZkZWYgVklNQUdFCi0JZXJyb3IgPSB2
bmV0X3N5c2N0bF9oYW5kbGVfaW50KG9pZHAsICZuZXcsIDAsIHJlcSk7Ci0jZWxzZQogCWVycm9y
ID0gc3lzY3RsX2hhbmRsZV9pbnQob2lkcCwgJm5ldywgMCwgcmVxKTsKLSNlbmRpZgotI2Vsc2UK
LQllcnJvciA9IHN5c2N0bF9oYW5kbGVfaW50KG9pZHAsICZuZXcsIDAsIHJlcSk7Ci0jZW5kaWYK
IAlpZiAoKGVycm9yID09IDApICYmCi0jaWYgZGVmaW5lZCAoX19BUFBMRV9fKQorI2lmIGRlZmlu
ZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCSAgICAocmVxLT5uZXdw
dHIgIT0gVVNFUl9BRERSX05VTEwpKSB7CiAjZWxzZQogCSAgICAocmVxLT5uZXdwdHIgIT0gTlVM
TCkpIHsKICNlbmRpZgotI2lmIGRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgZGVmaW5lZChfV0lO
MzIpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCVNDVFBfSU5QX0lORk9fV0xPQ0soKTsK
IAkJc2N0cF9vdmVyX3VkcF9yZXN0YXJ0KCk7CiAJCVNDVFBfSU5QX0lORk9fV1VOTE9DSygpOwpA
QCAtNzc1LDcgKzcyOCw3IEBAIHNjdHBfc3lzY3RsX2hhbmRsZV91ZHBfdHVubmVsaW5nKFNZU0NU
TF9IQU5ETEVSX0FSR1MpCiAJcmV0dXJuIChlcnJvcik7CiB9CiAKLSNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
IGludCBzY3RwX2lzX3Ztd2FyZV9pbnRlcmZhY2Uoc3RydWN0IGlmbmV0ICopOwogCiBzdGF0aWMg
aW50CkBAIC04MDgsNyArNzYxLDcgQEAgc2N0cF9zeXNjdGxfaGFuZGxlX3Ztd2FyZV9pbnRlcmZh
Y2VzIFNZU0NUTF9IQU5ETEVSX0FSR1MKIH0KICNlbmRpZgogCi0jaWYgZGVmaW5lZChfX0FQUExF
X18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBz
dGF0aWMgaW50CiBzY3RwX3N5c2N0bF9oYW5kbGVfYXV0aCBTWVNDVExfSEFORExFUl9BUkdTCiB7
CkBAIC04MjIsMTcgKzc3NSw5IEBAIHNjdHBfc3lzY3RsX2hhbmRsZV9hdXRoKFNZU0NUTF9IQU5E
TEVSX0FSR1MpCiAJdWludDMyX3QgbmV3OwogCiAJbmV3ID0gU0NUUF9CQVNFX1NZU0NUTChzY3Rw
X2F1dGhfZW5hYmxlKTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVy
c2lvbiA+PSA4MDAwNTYgJiYgX19GcmVlQlNEX3ZlcnNpb24gPCAxMDAwMTAwCi0jaWZkZWYgVklN
QUdFCi0JZXJyb3IgPSB2bmV0X3N5c2N0bF9oYW5kbGVfaW50KG9pZHAsICZuZXcsIDAsIHJlcSk7
Ci0jZWxzZQotCWVycm9yID0gc3lzY3RsX2hhbmRsZV9pbnQob2lkcCwgJm5ldywgMCwgcmVxKTsK
LSNlbmRpZgotI2Vsc2UKIAllcnJvciA9IHN5c2N0bF9oYW5kbGVfaW50KG9pZHAsICZuZXcsIDAs
IHJlcSk7Ci0jZW5kaWYKIAlpZiAoKGVycm9yID09IDApICYmCi0jaWYgZGVmaW5lZCAoX19BUFBM
RV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
CSAgICAocmVxLT5uZXdwdHIgIT0gVVNFUl9BRERSX05VTEwpKSB7CiAjZWxzZQogCSAgICAocmVx
LT5uZXdwdHIgIT0gTlVMTCkpIHsKQEAgLTg1Myw3ICs3OTgsNyBAQCBzY3RwX3N5c2N0bF9oYW5k
bGVfYXV0aChTWVNDVExfSEFORExFUl9BUkdTKQogCXJldHVybiAoZXJyb3IpOwogfQogCi0jaWYg
ZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiBzdGF0aWMgaW50CiBzY3RwX3N5c2N0bF9oYW5kbGVfYXNjb25mIFNZU0NU
TF9IQU5ETEVSX0FSR1MKIHsKQEAgLTg2NywxNyArODEyLDkgQEAgc2N0cF9zeXNjdGxfaGFuZGxl
X2FzY29uZihTWVNDVExfSEFORExFUl9BUkdTKQogCXVpbnQzMl90IG5ldzsKIAogCW5ldyA9IFND
VFBfQkFTRV9TWVNDVEwoc2N0cF9hc2NvbmZfZW5hYmxlKTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDAwNTYgJiYgX19GcmVlQlNEX3ZlcnNpb24g
PCAxMDAwMTAwCi0jaWZkZWYgVklNQUdFCi0JZXJyb3IgPSB2bmV0X3N5c2N0bF9oYW5kbGVfaW50
KG9pZHAsICZuZXcsIDAsIHJlcSk7Ci0jZWxzZQogCWVycm9yID0gc3lzY3RsX2hhbmRsZV9pbnQo
b2lkcCwgJm5ldywgMCwgcmVxKTsKLSNlbmRpZgotI2Vsc2UKLQllcnJvciA9IHN5c2N0bF9oYW5k
bGVfaW50KG9pZHAsICZuZXcsIDAsIHJlcSk7Ci0jZW5kaWYKIAlpZiAoKGVycm9yID09IDApICYm
Ci0jaWYgZGVmaW5lZCAoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCSAgICAocmVxLT5uZXdwdHIgIT0gVVNFUl9BRERSX05VTEwp
KSB7CiAjZWxzZQogCSAgICAocmVxLT5uZXdwdHIgIT0gTlVMTCkpIHsKQEAgLTg5OCw3ICs4MzUs
NyBAQCBzY3RwX3N5c2N0bF9oYW5kbGVfYXNjb25mKFNZU0NUTF9IQU5ETEVSX0FSR1MpCiAJcmV0
dXJuIChlcnJvcik7CiB9CiAKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9f
QVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIHN0YXRpYyBpbnQKIHNjdHBfc3lz
Y3RsX2hhbmRsZV9zdGF0cyBTWVNDVExfSEFORExFUl9BUkdTCiB7CkBAIC05MDksNyArODQ2LDcg
QEAgc2N0cF9zeXNjdGxfaGFuZGxlX3N0YXRzKFNZU0NUTF9IQU5ETEVSX0FSR1MpCiB7CiAjZW5k
aWYKIAlpbnQgZXJyb3I7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmIGRlZmluZWQoU01QKSAm
JiBkZWZpbmVkKFNDVFBfVVNFX1BFUkNQVV9TVEFUKQogCXN0cnVjdCBzY3Rwc3RhdCAqc2Fycnk7
CiAJc3RydWN0IHNjdHBzdGF0IHNiOwpAQCAtOTE4LDcgKzg1NSw3IEBAIHNjdHBfc3lzY3RsX2hh
bmRsZV9zdGF0cyhTWVNDVExfSEFORExFUl9BUkdTKQogCXN0cnVjdCBzY3Rwc3RhdCBzYl90ZW1w
OwogI2VuZGlmCiAKLSNpZiBkZWZpbmVkIChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExF
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJaWYgKChyZXEtPm5ld3B0ciAhPSBVU0VS
X0FERFJfTlVMTCkgJiYKICNlbHNlCiAJaWYgKChyZXEtPm5ld3B0ciAhPSBOVUxMKSAmJgpAQCAt
OTI2LDcgKzg2Myw3IEBAIHNjdHBfc3lzY3RsX2hhbmRsZV9zdGF0cyhTWVNDVExfSEFORExFUl9B
UkdTKQogCSAgICAocmVxLT5uZXdsZW4gIT0gc2l6ZW9mKHN0cnVjdCBzY3Rwc3RhdCkpKSB7CiAJ
CXJldHVybiAoRUlOVkFMKTsKIAl9Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCW1lbXNldCgmc2Jf
dGVtcCwgMCwgc2l6ZW9mKHN0cnVjdCBzY3Rwc3RhdCkpOwogCiAJaWYgKHJlcS0+bmV3cHRyICE9
IE5VTEwpIHsKQEAgLTEwODMsNyArMTAyMCw3IEBAIHNjdHBfc3lzY3RsX2hhbmRsZV9zdGF0cyhT
WVNDVExfSEFORExFUl9BUkdTKQogfQogCiAjaWYgZGVmaW5lZChTQ1RQX0xPQ0FMX1RSQUNFX0JV
RikKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKIHN0YXRpYyBpbnQKIHNjdHBfc3lzY3RsX2hhbmRsZV90cmFj
ZV9sb2cgU1lTQ1RMX0hBTkRMRVJfQVJHUwogewpAQCAtMTA5NSw3ICsxMDMyLDcgQEAgc2N0cF9z
eXNjdGxfaGFuZGxlX3RyYWNlX2xvZyhTWVNDVExfSEFORExFUl9BUkdTKQogI2VuZGlmCiAJaW50
IGVycm9yOwogCi0jaWYgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiBkZWZpbmVkKF9XSU4zMikg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAllcnJvciA9IFNZU0NUTF9PVVQocmVxLCBTQ1RQ
X0JBU0VfU1lTQ1RMKHNjdHBfbG9nKSwgc2l6ZW9mKHN0cnVjdCBzY3RwX2xvZykpOwogI2Vsc2UK
IAllcnJvciA9IFNZU0NUTF9PVVQocmVxLCAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2xvZyksIHNp
emVvZihzdHJ1Y3Qgc2N0cF9sb2cpKTsKQEAgLTExMDMsNyArMTA0MCw3IEBAIHNjdHBfc3lzY3Rs
X2hhbmRsZV90cmFjZV9sb2coU1lTQ1RMX0hBTkRMRVJfQVJHUykKIAlyZXR1cm4gKGVycm9yKTsK
IH0KIAotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogc3RhdGljIGludAogc2N0cF9zeXNjdGxfaGFuZGxlX3Ry
YWNlX2xvZ19jbGVhciBTWVNDVExfSEFORExFUl9BUkdTCiB7CkBAIC0xMTE0LDcgKzEwNTEsNyBA
QCBzY3RwX3N5c2N0bF9oYW5kbGVfdHJhY2VfbG9nX2NsZWFyKFNZU0NUTF9IQU5ETEVSX0FSR1Mp
CiB7CiAjZW5kaWYKIAlpbnQgZXJyb3IgPSAwOwotI2lmIGRlZmluZWQoX19XaW5kb3dzX18pCisj
aWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJaW50IHZhbHVl
ID0gMDsKIAogCWlmIChyZXEtPm5ld19kYXRhID09IE5VTEwpIHsKQEAgLTExMzIsNTcgKzEwNjks
OCBAQCBzY3RwX3N5c2N0bF9oYW5kbGVfdHJhY2VfbG9nX2NsZWFyKFNZU0NUTF9IQU5ETEVSX0FS
R1MpCiB9CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fRnJl
ZUJTRF9fKQorI2lmIChkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykp
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKLSNp
ZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDAwNTYgJiYgX19GcmVlQlNEX3ZlcnNpb24gPCAxMDAw
MTAwCi0jaWZkZWYgVklNQUdFCi0jZGVmaW5lIFNDVFBfVUlOVF9TWVNDVEwobmFtZSwgdmFyX25h
bWUsIHByZWZpeCkJCQlcCi0Jc3RhdGljIGludAkJCQkJCQlcCi0Jc2N0cF9zeXNjdGxfaGFuZGxl
XyMjbWliX25hbWUoU1lTQ1RMX0hBTkRMRVJfQVJHUykJCVwKLQl7CQkJCQkJCQlcCi0JCWludCBl
cnJvcjsJCQkJCQlcCi0JCXVpbnQzMl90IG5ldzsJCQkJCQlcCi0JCQkJCQkJCQlcCi0JCW5ldyA9
IFNDVFBfQkFTRV9TWVNDVEwodmFyX25hbWUpOwkJCVwKLQkJZXJyb3IgPSB2bmV0X3N5c2N0bF9o
YW5kbGVfaW50KG9pZHAsICZuZXcsIDAsIHJlcSk7CVwKLQkJaWYgKChlcnJvciA9PSAwKSAmJiAo
cmVxLT5uZXdwdHIgIT0gTlVMTCkpIHsJCVwKLQkJCWlmICgobmV3IDwgcHJlZml4IyNfTUlOKSB8
fAkJCVwKLQkJCSAgICAobmV3ID4gcHJlZml4IyNfTUFYKSkgewkJCVwKLQkJCQllcnJvciA9IEVJ
TlZBTDsJCQkJXAotCQkJfSBlbHNlIHsJCQkJCVwKLQkJCQlTQ1RQX0JBU0VfU1lTQ1RMKHZhcl9u
YW1lKSA9IG5ldzsJXAotCQkJfQkJCQkJCVwKLQkJfQkJCQkJCQlcCi0JCXJldHVybiAoZXJyb3Ip
OwkJCQkJCVwKLQl9CQkJCQkJCQlcCi0JU1lTQ1RMX1BST0MoX25ldF9pbmV0X3NjdHAsIE9JRF9B
VVRPLCBtaWJfbmFtZSwJCQlcCi0JICAgICAgICAgICAgICAgICBDVExUWVBFX1VJTlR8Q1RMRkxB
R19SVywgTlVMTCwgMCwJCVwKLQkgICAgICAgICAgICAgICAgIHNjdHBfc3lzY3RsX2hhbmRsZV8j
I21pYl9uYW1lLCAiVUkiLCBwcmVmaXgjI19ERVNDKTsKLSNlbHNlCi0jZGVmaW5lIFNDVFBfVUlO
VF9TWVNDVEwobWliX25hbWUsIHZhcl9uYW1lLCBwcmVmaXgpCQkJXAotCXN0YXRpYyBpbnQJCQkJ
CQkJXAotCXNjdHBfc3lzY3RsX2hhbmRsZV8jI21pYl9uYW1lKFNZU0NUTF9IQU5ETEVSX0FSR1Mp
CQlcCi0JewkJCQkJCQkJXAotCQlpbnQgZXJyb3I7CQkJCQkJXAotCQl1aW50MzJfdCBuZXc7CQkJ
CQkJXAotCQkJCQkJCQkJXAotCQluZXcgPSBTQ1RQX0JBU0VfU1lTQ1RMKHZhcl9uYW1lKTsJCQlc
Ci0JCWVycm9yID0gc3lzY3RsX2hhbmRsZV9pbnQob2lkcCwgJm5ldywgMCwgcmVxKTsJCVwKLQkJ
aWYgKChlcnJvciA9PSAwKSAmJiAocmVxLT5uZXdwdHIgIT0gTlVMTCkpIHsJCVwKLQkJCWlmICgo
bmV3IDwgcHJlZml4IyNfTUlOKSB8fAkJCVwKLQkJCSAgICAobmV3ID4gcHJlZml4IyNfTUFYKSkg
ewkJCVwKLQkJCQllcnJvciA9IEVJTlZBTDsJCQkJXAotCQkJfSBlbHNlIHsJCQkJCVwKLQkJCQlT
Q1RQX0JBU0VfU1lTQ1RMKHZhcl9uYW1lKSA9IG5ldzsJXAotCQkJfQkJCQkJCVwKLQkJfQkJCQkJ
CQlcCi0JCXJldHVybiAoZXJyb3IpOwkJCQkJCVwKLQl9CQkJCQkJCQlcCi0JU1lTQ1RMX1BST0Mo
X25ldF9pbmV0X3NjdHAsIE9JRF9BVVRPLCBtaWJfbmFtZSwJCQlcCi0JICAgICAgICAgICAgICAg
ICBDVExGTEFHX1ZORVR8Q1RMVFlQRV9VSU5UfENUTEZMQUdfUlcsIE5VTEwsIDAsCVwKLQkgICAg
ICAgICAgICAgICAgIHNjdHBfc3lzY3RsX2hhbmRsZV8jI21pYl9uYW1lLCAiVUkiLCBwcmVmaXgj
I19ERVNDKTsKLSNlbmRpZgotI2Vsc2UKICNkZWZpbmUgU0NUUF9VSU5UX1NZU0NUTChtaWJfbmFt
ZSwgdmFyX25hbWUsIHByZWZpeCkJCQlcCiAJc3RhdGljIGludAkJCQkJCQlcCiAJc2N0cF9zeXNj
dGxfaGFuZGxlXyMjbWliX25hbWUoU1lTQ1RMX0hBTkRMRVJfQVJHUykJCVwKQEAgLTEyMDUsNyAr
MTA5Myw2IEBAIHNjdHBfc3lzY3RsX2hhbmRsZV90cmFjZV9sb2dfY2xlYXIoU1lTQ1RMX0hBTkRM
RVJfQVJHUykKIAlTWVNDVExfUFJPQyhfbmV0X2luZXRfc2N0cCwgT0lEX0FVVE8sIG1pYl9uYW1l
LAkJCVwKIAkgICAgICAgICAgICAgICAgIENUTEZMQUdfVk5FVHxDVExUWVBFX1VJTlR8Q1RMRkxB
R19SVywgTlVMTCwgMCwJXAogCSAgICAgICAgICAgICAgICAgc2N0cF9zeXNjdGxfaGFuZGxlXyMj
bWliX25hbWUsICJVSSIsIHByZWZpeCMjX0RFU0MpOwotI2VuZGlmCiAjZWxzZQogI2RlZmluZSBT
Q1RQX1VJTlRfU1lTQ1RMKG1pYl9uYW1lLCB2YXJfbmFtZSwgcHJlZml4KQkJCVwKIAlzdGF0aWMg
aW50CQkJCQkJCVwKQEAgLTEyNTIsNyArMTEzOSw3IEBAIFNZU0NUTF9QUk9DKF9uZXRfaW5ldF9z
Y3RwLCBPSURfQVVUTywgYXNjb25mX2VuYWJsZSwgQ1RMRkxBR19WTkVUfENUTFRZUEVfVUlOVHxD
CiBTQ1RQX1VJTlRfU1lTQ1RMKHJlY29uZmlnX2VuYWJsZSwgc2N0cF9yZWNvbmZpZ19lbmFibGUs
IFNDVFBDVExfUkVDT05GSUdfRU5BQkxFKQogU0NUUF9VSU5UX1NZU0NUTChucnNhY2tfZW5hYmxl
LCBzY3RwX25yc2Fja19lbmFibGUsIFNDVFBDVExfTlJTQUNLX0VOQUJMRSkKIFNDVFBfVUlOVF9T
WVNDVEwocGt0ZHJvcF9lbmFibGUsIHNjdHBfcGt0ZHJvcF9lbmFibGUsIFNDVFBDVExfUEtURFJP
UF9FTkFCTEUpCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBTQ1RQX1VJTlRfU1lTQ1RMKGxvb3BiYWNrX25v
Y3N1bSwgc2N0cF9ub19jc3VtX29uX2xvb3BiYWNrLCBTQ1RQQ1RMX0xPT1BCQUNLX05PQ1NVTSkK
ICNlbmRpZgogU0NUUF9VSU5UX1NZU0NUTChwZWVyX2Noa29oLCBzY3RwX3BlZXJfY2h1bmtfb2gs
IFNDVFBDVExfUEVFUl9DSEtPSCkKQEAgLTEzMTksMTggKzEyMDYsMTkgQEAgU0NUUF9VSU5UX1NZ
U0NUTChydHR2YXJfZXFyZXQsIHNjdHBfcnR0dmFyX2VxcmV0LCBTQ1RQQ1RMX1JUVFZBUl9FUVJF
VCkKIFNDVFBfVUlOVF9TWVNDVEwocnR0dmFyX3N0ZWFkeV9zdGVwLCBzY3RwX3N0ZWFkeV9zdGVw
LCBTQ1RQQ1RMX1JUVFZBUl9TVEVBRFlTKQogU0NUUF9VSU5UX1NZU0NUTCh1c2VfZGNjY2Vjbiwg
c2N0cF91c2VfZGNjY19lY24sIFNDVFBDVExfUlRUVkFSX0RDQ0NFQ04pCiBTQ1RQX1VJTlRfU1lT
Q1RMKGJsYWNraG9sZSwgc2N0cF9ibGFja2hvbGUsIFNDVFBDVExfQkxBQ0tIT0xFKQorU0NUUF9V
SU5UX1NZU0NUTChzZW5kYWxsX2xpbWl0LCBzY3RwX3NlbmRhbGxfbGltaXQsIFNDVFBDVExfU0VO
REFMTF9MSU1JVCkKIFNDVFBfVUlOVF9TWVNDVEwoZGlhZ19pbmZvX2NvZGUsIHNjdHBfZGlhZ19p
bmZvX2NvZGUsIFNDVFBDVExfRElBR19JTkZPX0NPREUpCiAjaWZkZWYgU0NUUF9ERUJVRwogU0NU
UF9VSU5UX1NZU0NUTChkZWJ1Zywgc2N0cF9kZWJ1Z19vbiwgU0NUUENUTF9ERUJVRykKICNlbmRp
ZgotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogU0NUUF9VSU5UX1NZU0NUTChtYWluX3RpbWVyLCBzY3RwX21h
aW5fdGltZXIsIFNDVFBDVExfTUFJTl9USU1FUikKIFNZU0NUTF9QUk9DKF9uZXRfaW5ldF9zY3Rw
LCBPSURfQVVUTywgaWdub3JlX3Ztd2FyZV9pbnRlcmZhY2VzLCBDVExUWVBFX1VJTlR8Q1RMRkxB
R19SVywKICAgICAgICAgICAgIE5VTEwsIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV92bXdhcmVfaW50
ZXJmYWNlcywgIklVIiwgU0NUUENUTF9JR05PUkVfVk1XQVJFX0lOVEVSRkFDRVNfREVTQyk7CiBT
Q1RQX1VJTlRfU1lTQ1RMKGFkZHJfd2F0Y2hkb2dfbGltaXQsIHNjdHBfYWRkcl93YXRjaGRvZ19s
aW1pdCwgU0NUUENUTF9BRERSX1dBVENIRE9HX0xJTUlUKQogU0NUUF9VSU5UX1NZU0NUTCh2dGFn
X3dhdGNoZG9nX2xpbWl0LCBzY3RwX3Z0YWdfd2F0Y2hkb2dfbGltaXQsIFNDVFBDVExfVlRBR19X
QVRDSERPR19MSU1JVCkKICNlbmRpZgotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVk
KFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogU0NUUF9VSU5UX1NZU0NUTChvdXRwdXRfdW5sb2NrZWQsIHNjdHBf
b3V0cHV0X3VubG9ja2VkLCBTQ1RQQ1RMX09VVFBVVF9VTkxPQ0tFRCkKICNlbmRpZgogU1lTQ1RM
X1BST0MoX25ldF9pbmV0X3NjdHAsIE9JRF9BVVRPLCBzdGF0cywgQ1RMRkxBR19WTkVUfENUTFRZ
UEVfU1RSVUNUfENUTEZMQUdfUlcsCkBAIC0xMzM4LDcgKzEyMjYsNyBAQCBTWVNDVExfUFJPQyhf
bmV0X2luZXRfc2N0cCwgT0lEX0FVVE8sIHN0YXRzLCBDVExGTEFHX1ZORVR8Q1RMVFlQRV9TVFJV
Q1R8Q1RMRkxBRwogU1lTQ1RMX1BST0MoX25ldF9pbmV0X3NjdHAsIE9JRF9BVVRPLCBhc3NvY2xp
c3QsIENUTEZMQUdfVk5FVHxDVExUWVBFX09QQVFVRXxDVExGTEFHX1JELAogICAgICAgICAgICAg
TlVMTCwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2Fzc29jbGlzdCwgIlMseGFzc29jIiwgIkxpc3Qg
b2YgYWN0aXZlIFNDVFAgYXNzb2NpYXRpb25zIik7CiAKLSNlbGlmIGRlZmluZWQoX19XaW5kb3dz
X18pCisjZWxpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAog
I2RlZmluZSBSQU5HRUNISyh2YXIsIG1pbiwgbWF4KSBcCiAJaWYgKCh2YXIpIDwgKG1pbikpIHsg
KHZhcikgPSAobWluKTsgfSBcCkBAIC0xNDE3LDYgKzEzMDUsNyBAQCBzY3RwX3N5c2N0bF9oYW5k
bGVfaW50KFNZU0NUTF9IQU5ETEVSX0FSR1MpCiAJCVJBTkdFQ0hLKFNDVFBfQkFTRV9TWVNDVEwo
c2N0cF9lbmFibGVfc2Fja19pbW1lZGlhdGVseSksIFNDVFBDVExfU0FDS19JTU1FRElBVEVMWV9F
TkFCTEVfTUlOLCBTQ1RQQ1RMX1NBQ0tfSU1NRURJQVRFTFlfRU5BQkxFX01BWCk7CiAJCVJBTkdF
Q0hLKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9pbml0c19pbmNsdWRlX25hdF9mcmllbmRseSksIFND
VFBDVExfTkFUX0ZSSUVORExZX0lOSVRTX01JTiwgU0NUUENUTF9OQVRfRlJJRU5ETFlfSU5JVFNf
TUFYKTsKIAkJUkFOR0VDSEsoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2JsYWNraG9sZSksIFNDVFBD
VExfQkxBQ0tIT0xFX01JTiwgU0NUUENUTF9CTEFDS0hPTEVfTUFYKTsKKwkJUkFOR0VDSEsoU0NU
UF9CQVNFX1NZU0NUTChzY3RwX3NlbmRhbGxfbGltaXQpLCBTQ1RQQ1RMX1NFTkRBTExfTElNSVRf
TUlOLCBTQ1RQQ1RMX1NFTkRBTExfTElNSVRfTUFYKTsKIAkJUkFOR0VDSEsoU0NUUF9CQVNFX1NZ
U0NUTChzY3RwX2RpYWdfaW5mb19jb2RlKSwgU0NUUENUTF9ESUFHX0lORk9fQ09ERV9NSU4sIFND
VFBDVExfRElBR19JTkZPX0NPREVfTUFYKTsKICNpZmRlZiBTQ1RQX0RFQlVHCiAJCVJBTkdFQ0hL
KFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9kZWJ1Z19vbiksIFNDVFBDVExfREVCVUdfTUlOLCBTQ1RQ
Q1RMX0RFQlVHX01BWCk7CkBAIC0xNDI5LDE0MyArMTMxOCwxNDMgQEAgdm9pZAogc3lzY3RsX3Nl
dHVwX3NjdHAodm9pZCkKIHsKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJzZW5k
c3BhY2UiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9T
WVNDVEwoc2N0cF9zZW5kc3BhY2UpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAm
U0NUUF9CQVNFX1NZU0NUTChzY3RwX3NlbmRzcGFjZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9p
bnQsCiAJICAgIFNDVFBDVExfTUFYREdSQU1fREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lz
Y3RsX29pZF90b3AsICJyZWN2c3BhY2UiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAg
ICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3JlY3ZzcGFjZSksIDAsIHNjdHBfc3lzY3RsX2hh
bmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfcmVjdnNwYWNlKSwgMCwgc2N0
cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9SRUNWU1BBQ0VfREVTQyk7CiAKIAlz
eXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJhdXRvX2FzY29uZiIsIENUTFRZUEVfSU5U
fENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2F1dG9fYXNj
b25mKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwo
c2N0cF9hdXRvX2FzY29uZiksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBD
VExfQVVUT0FTQ09ORl9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwg
ImVjbl9lbmFibGUiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBf
QkFTRV9TWVNDVEwoc2N0cF9lY25fZW5hYmxlKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwK
KwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9lY25fZW5hYmxlKSwgMCwgc2N0cF9zeXNjdGxf
aGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9FQ05fRU5BQkxFX0RFU0MpOwogCiAJc3lzY3RsX2Fk
ZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAicHJfZW5hYmxlIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19S
VywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfcHJfZW5hYmxlKSwgMCwgc2N0
cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9wcl9lbmFi
bGUpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX1BSX0VOQUJMRV9E
RVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgImF1dGhfZW5hYmxlIiwg
Q1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNj
dHBfYXV0aF9lbmFibGUpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfYXV0aCwKKwkgICAgJlNDVFBf
QkFTRV9TWVNDVEwoc2N0cF9hdXRoX2VuYWJsZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9hdXRo
LAogCSAgICBTQ1RQQ1RMX0FVVEhfRU5BQkxFX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5
c2N0bF9vaWRfdG9wLCAiYXNjb25mX2VuYWJsZSIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcsCi0g
ICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2FzY29uZl9lbmFibGUpLCAwLCBzY3Rw
X3N5c2N0bF9oYW5kbGVfYXNjb25mLAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2FzY29u
Zl9lbmFibGUpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfYXNjb25mLAogCSAgICBTQ1RQQ1RMX0FT
Q09ORl9FTkFCTEVfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJy
ZWNvbmZpZ19lbmFibGUiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlND
VFBfQkFTRV9TWVNDVEwoc2N0cF9yZWNvbmZpZ19lbmFibGUpLCAwLCBzY3RwX3N5c2N0bF9oYW5k
bGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3JlY29uZmlnX2VuYWJsZSksIDAs
IHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExfUkVDT05GSUdfRU5BQkxFX0RF
U0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAibnJzYWNrX2VuYWJsZSIs
IENUTFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChz
Y3RwX25yc2Fja19lbmFibGUpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NU
UF9CQVNFX1NZU0NUTChzY3RwX25yc2Fja19lbmFibGUpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVf
aW50LAogCSAgICBTQ1RQQ1RMX05SU0FDS19FTkFCTEVfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29p
ZCgmc3lzY3RsX29pZF90b3AsICJwa3Rkcm9wX2VuYWJsZSIsIENUTFRZUEVfSU5UfENUTEZMQUdf
UlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3BrdGRyb3BfZW5hYmxlKSwg
MCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9w
a3Rkcm9wX2VuYWJsZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExf
UEtURFJPUF9FTkFCTEVfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3As
ICJsb29wYmFja19ub2NzdW0iLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAg
JlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9ub19jc3VtX29uX2xvb3BiYWNrKSwgMCwgc2N0cF9zeXNj
dGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9ub19jc3VtX29uX2xv
b3BiYWNrKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9MT09QQkFD
S19OT0NTVU1fREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJwZWVy
X2Noa29oIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0Vf
U1lTQ1RMKHNjdHBfcGVlcl9jaHVua19vaCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJ
ICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfcGVlcl9jaHVua19vaCksIDAsIHNjdHBfc3lzY3Rs
X2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExfUEVFUl9DSEtPSF9ERVNDKTsKIAogCXN5c2N0bF9h
ZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgIm1heGJ1cnN0IiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19S
VywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbWF4X2J1cnN0X2RlZmF1bHQp
LCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3Rw
X21heF9idXJzdF9kZWZhdWx0KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NU
UENUTF9NQVhCVVJTVF9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwg
ImZyX21heGJ1cnN0IiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQ
X0JBU0VfU1lTQ1RMKHNjdHBfZnJfbWF4X2J1cnN0X2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9o
YW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2ZyX21heF9idXJzdF9kZWZh
dWx0KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9GUk1BWEJVUlNU
X0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAibWF4Y2h1bmtzIiwg
Q1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNj
dHBfbWF4X2NodW5rc19vbl9xdWV1ZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAg
ICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbWF4X2NodW5rc19vbl9xdWV1ZSksIDAsIHNjdHBfc3lz
Y3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExfTUFYQ0hVTktTX0RFU0MpOwogCiAJc3lzY3Rs
X2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAidGNiaGFzaHNpemUiLCBDVExUWVBFX0lOVHxDVExG
TEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9oYXNodGJsc2l6ZSks
IDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBf
aGFzaHRibHNpemUpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX1RD
QkhBU0hTSVpFX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAicGNi
aGFzaHNpemUiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFT
RV9TWVNDVEwoc2N0cF9wY2J0YmxzaXplKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkg
ICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9wY2J0YmxzaXplKSwgMCwgc2N0cF9zeXNjdGxfaGFu
ZGxlX2ludCwKIAkgICAgU0NUUENUTF9QQ0JIQVNIU0laRV9ERVNDKTsKIAogCXN5c2N0bF9hZGRf
b2lkKCZzeXNjdGxfb2lkX3RvcCwgIm1pbl9zcGxpdF9wb2ludCIsIENUTFRZUEVfSU5UfENUTEZM
QUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX21pbl9zcGxpdF9wb2lu
dCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNj
dHBfbWluX3NwbGl0X3BvaW50KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NU
UENUTF9NSU5fU1BMSVRfUE9JTlRfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29p
ZF90b3AsICJjaHVua3NjYWxlIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAg
ICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfY2h1bmtzY2FsZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRs
ZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfY2h1bmtzY2FsZSksIDAsIHNjdHBf
c3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExfQ0hVTktTQ0FMRV9ERVNDKTsKIAogCXN5
c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgImRlbGF5ZWRfc2Fja190aW1lIiwgQ1RMVFlQ
RV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfZGVs
YXllZF9zYWNrX3RpbWVfZGVmYXVsdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAg
ICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfZGVsYXllZF9zYWNrX3RpbWVfZGVmYXVsdCksIDAsIHNj
dHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExfREVMQVlFRF9TQUNLX1RJTUVfREVT
Qyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJzYWNrX2ZyZXEiLCBDVExU
WVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9z
YWNrX2ZyZXFfZGVmYXVsdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQ
X0JBU0VfU1lTQ1RMKHNjdHBfc2Fja19mcmVxX2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5k
bGVfaW50LAogCSAgICBTQ1RQQ1RMX1NBQ0tfRlJFUV9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lk
KCZzeXNjdGxfb2lkX3RvcCwgInN5c19yZXNvdXJjZSIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcs
Ci0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3N5c3RlbV9mcmVlX3Jlc2NfbGlt
aXQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChz
Y3RwX3N5c3RlbV9mcmVlX3Jlc2NfbGltaXQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAog
CSAgICBTQ1RQQ1RMX1NZU19SRVNPVVJDRV9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNj
dGxfb2lkX3RvcCwgImFzb2NfcmVzb3VyY2UiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAg
ICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9hc29jX2ZyZWVfcmVzY19saW1pdCksIDAs
IHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfYXNv
Y19mcmVlX3Jlc2NfbGltaXQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQ
Q1RMX0FTT0NfUkVTT1VSQ0VfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90
b3AsICJoZWFydGJlYXRfaW50ZXJ2YWwiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAg
ICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9oZWFydGJlYXRfaW50ZXJ2YWxfZGVmYXVsdCks
IDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBf
aGVhcnRiZWF0X2ludGVydmFsX2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAog
CSAgICBTQ1RQQ1RMX0hFQVJUQkVBVF9JTlRFUlZBTF9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lk
KCZzeXNjdGxfb2lkX3RvcCwgInBtdHVfcmFpc2VfdGltZSIsIENUTFRZUEVfSU5UfENUTEZMQUdf
UlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3BtdHVfcmFpc2VfdGltZV9k
ZWZhdWx0KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVND
VEwoc2N0cF9wbXR1X3JhaXNlX3RpbWVfZGVmYXVsdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9p
bnQsCiAJICAgIFNDVFBDVExfUE1UVV9SQUlTRV9USU1FX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9v
aWQoJnN5c2N0bF9vaWRfdG9wLCAic2h1dGRvd25fZ3VhcmRfdGltZSIsIENUTFRZUEVfSU5UfENU
TEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3NodXRkb3duX2d1
YXJkX3RpbWVfZGVmYXVsdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQ
X0JBU0VfU1lTQ1RMKHNjdHBfc2h1dGRvd25fZ3VhcmRfdGltZV9kZWZhdWx0KSwgMCwgc2N0cF9z
eXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9TSFVURE9XTl9HVUFSRF9USU1FX0RFU0Mp
OwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAic2VjcmV0X2xpZmV0aW1lIiwg
Q1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNj
dHBfc2VjcmV0X2xpZmV0aW1lX2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAor
CSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3NlY3JldF9saWZldGltZV9kZWZhdWx0KSwgMCwg
c2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9TRUNSRVRfTElGRVRJTUVfREVT
Qyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJydG9fbWF4IiwgQ1RMVFlQ
RV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfcnRv
X21heF9kZWZhdWx0KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFT
RV9TWVNDVEwoc2N0cF9ydG9fbWF4X2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50
LAogCSAgICBTQ1RQQ1RMX1JUT19NQVhfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3Rs
X29pZF90b3AsICJydG9fbWluIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAg
ICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfcnRvX21pbl9kZWZhdWx0KSwgMCwgc2N0cF9zeXNjdGxf
aGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9ydG9fbWluX2RlZmF1bHQp
LCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX1JUT19NSU5fREVTQyk7
CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJydG9faW5pdGlhbCIsIENUTFRZ
UEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3J0
b19pbml0aWFsX2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NU
UF9CQVNFX1NZU0NUTChzY3RwX3J0b19pbml0aWFsX2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9o
YW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX1JUT19JTklUSUFMX0RFU0MpOwogCiAJc3lzY3RsX2Fk
ZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAiaW5pdF9ydG9fbWF4IiwgQ1RMVFlQRV9JTlR8Q1RMRkxB
R19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfaW5pdF9ydG9fbWF4X2Rl
ZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NU
TChzY3RwX2luaXRfcnRvX21heF9kZWZhdWx0KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwK
IAkgICAgU0NUUENUTF9JTklUX1JUT19NQVhfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lz
Y3RsX29pZF90b3AsICJ2YWxpZF9jb29raWVfbGlmZSIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcs
Ci0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3ZhbGlkX2Nvb2tpZV9saWZlX2Rl
ZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NU
TChzY3RwX3ZhbGlkX2Nvb2tpZV9saWZlX2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVf
aW50LAogCSAgICBTQ1RQQ1RMX1ZBTElEX0NPT0tJRV9MSUZFX0RFU0MpOwogCiAJc3lzY3RsX2Fk
ZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAiaW5pdF9ydHhfbWF4IiwgQ1RMVFlQRV9JTlR8Q1RMRkxB
R19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfaW5pdF9ydHhfbWF4X2Rl
ZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NU
TChzY3RwX2luaXRfcnR4X21heF9kZWZhdWx0KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwK
IAkgICAgU0NUUENUTF9JTklUX1JUWF9NQVhfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lz
Y3RsX29pZF90b3AsICJhc3NvY19ydHhfbWF4IiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAg
ICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfYXNzb2NfcnR4X21heF9kZWZhdWx0KSwg
MCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9h
c3NvY19ydHhfbWF4X2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBT
Q1RQQ1RMX0FTU09DX1JUWF9NQVhfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29p
ZF90b3AsICJwYXRoX3J0eF9tYXgiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAg
ICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9wYXRoX3J0eF9tYXhfZGVmYXVsdCksIDAsIHNjdHBf
c3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfcGF0aF9ydHhf
bWF4X2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX1BB
VEhfUlRYX01BWF9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgInBh
dGhfcGZfdGhyZXNob2xkIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKQEAgLTE1NzMsODMgKzE0
NjIsODMgQEAgc3lzY3RsX3NldHVwX3NjdHAodm9pZCkKIAkgICAgU0NUUENUTF9QQVRIX1BGX1RI
UkVTSE9MRF9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgImFkZF9t
b3JlX29uX291dHB1dCIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NU
UF9CQVNFX1NZU0NUTChzY3RwX2FkZF9tb3JlX3RocmVzaG9sZCksIDAsIHNjdHBfc3lzY3RsX2hh
bmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfYWRkX21vcmVfdGhyZXNob2xk
KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9BRERfTU9SRV9PTl9P
VVRQVVRfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJpbmNvbWlu
Z19zdHJlYW1zIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JB
U0VfU1lTQ1RMKHNjdHBfbnJfaW5jb21pbmdfc3RyZWFtc19kZWZhdWx0KSwgMCwgc2N0cF9zeXNj
dGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9ucl9pbmNvbWluZ19z
dHJlYW1zX2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RM
X0lOQ09NSU5HX1NUUkVBTVNfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90
b3AsICJvdXRnb2luZ19zdHJlYW1zIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAg
ICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbnJfb3V0Z29pbmdfc3RyZWFtc19kZWZhdWx0KSwg
MCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9u
cl9vdXRnb2luZ19zdHJlYW1zX2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAog
CSAgICBTQ1RQQ1RMX09VVEdPSU5HX1NUUkVBTVNfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgm
c3lzY3RsX29pZF90b3AsICJjbXRfb25fb2ZmIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAg
ICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfY210X29uX29mZiksIDAsIHNjdHBfc3lz
Y3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfY210X29uX29mZiks
IDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExfQ01UX09OX09GRl9ERVND
KTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgImNtdF91c2VfZGFjIiwgQ1RM
VFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBf
Y210X3VzZV9kYWMpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNF
X1NZU0NUTChzY3RwX2NtdF91c2VfZGFjKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkg
ICAgU0NUUENUTF9DTVRfVVNFX0RBQ19ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxf
b2lkX3RvcCwgImN3bmRfbWF4YnVyc3QiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAg
ICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF91c2VfY3duZF9iYXNlZF9tYXhidXJzdCksIDAs
IHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfdXNl
X2N3bmRfYmFzZWRfbWF4YnVyc3QpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBT
Q1RQQ1RMX0NXTkRfTUFYQlVSU1RfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29p
ZF90b3AsICJuYXRfZnJpZW5kbHkiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAg
ICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9uYXRfZnJpZW5kbHkpLCAwLCBzY3RwX3N5c2N0bF9o
YW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX25hdF9mcmllbmRseSksIDAs
IHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExfTkFUX0ZSSUVORExZX0RFU0Mp
OwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAiYWJjX2xfdmFyIiwgQ1RMVFlQ
RV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfTDJf
YWJjX3ZhcmlhYmxlKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFT
RV9TWVNDVEwoc2N0cF9MMl9hYmNfdmFyaWFibGUpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50
LAogCSAgICBTQ1RQQ1RMX0FCQ19MX1ZBUl9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNj
dGxfb2lkX3RvcCwgIm1heF9jaGFpbmVkX21idWZzIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywK
LSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbWJ1Zl90aHJlc2hvbGRfY291bnQp
LCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3Rw
X21idWZfdGhyZXNob2xkX2NvdW50KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAg
U0NUUENUTF9NQVhfQ0hBSU5FRF9NQlVGU19ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNj
dGxfb2lkX3RvcCwgImRvX3NjdHBfZHJhaW4iLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAg
ICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9kb19kcmFpbiksIDAsIHNjdHBfc3lzY3Rs
X2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfZG9fZHJhaW4pLCAwLCBz
Y3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX0RPX1NDVFBfRFJBSU5fREVTQyk7
CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJoYl9tYXhfYnVyc3QiLCBDVExU
WVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9o
Yl9tYXhidXJzdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0Vf
U1lTQ1RMKHNjdHBfaGJfbWF4YnVyc3QpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAg
ICBTQ1RQQ1RMX0hCX01BWF9CVVJTVF9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxf
b2lkX3RvcCwgImFib3J0X2F0X2xpbWl0IiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAg
ICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfYWJvcnRfaWZfb25lXzJfb25lX2hpdHNfbGlt
aXQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChz
Y3RwX2Fib3J0X2lmX29uZV8yX29uZV9oaXRzX2xpbWl0KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxl
X2ludCwKIAkgICAgU0NUUENUTF9BQk9SVF9BVF9MSU1JVF9ERVNDKTsKIAogCXN5c2N0bF9hZGRf
b2lkKCZzeXNjdGxfb2lkX3RvcCwgIm1pbl9yZXNpZHVhbCIsIENUTFRZUEVfSU5UfENUTEZMQUdf
UlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX21pbl9yZXNpZHVhbCksIDAs
IHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbWlu
X3Jlc2lkdWFsKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9NSU5f
UkVTSURVQUxfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJtYXhf
cmV0cmFuX2NodW5rIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQ
X0JBU0VfU1lTQ1RMKHNjdHBfbWF4X3JldHJhbl9jaHVuayksIDAsIHNjdHBfc3lzY3RsX2hhbmRs
ZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbWF4X3JldHJhbl9jaHVuayksIDAs
IHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExfTUFYX1JFVFJBTl9DSFVOS19E
RVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgImxvZ19sZXZlbCIsIENU
TFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3Rw
X2xvZ2dpbmdfbGV2ZWwpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9C
QVNFX1NZU0NUTChzY3RwX2xvZ2dpbmdfbGV2ZWwpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50
LAogCSAgICBTQ1RQQ1RMX0xPR0dJTkdfTEVWRUxfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgm
c3lzY3RsX29pZF90b3AsICJkZWZhdWx0X2NjX21vZHVsZSIsIENUTFRZUEVfSU5UfENUTEZMQUdf
UlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2RlZmF1bHRfY2NfbW9kdWxl
KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0
cF9kZWZhdWx0X2NjX21vZHVsZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFND
VFBDVExfREVGQVVMVF9DQ19NT0RVTEVfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3Rs
X29pZF90b3AsICJkZWZhdWx0X3NzX21vZHVsZSIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcsCi0g
ICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2RlZmF1bHRfc3NfbW9kdWxlKSwgMCwg
c2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9kZWZh
dWx0X3NzX21vZHVsZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExf
REVGQVVMVF9TU19NT0RVTEVfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90
b3AsICJkZWZhdWx0X2ZyYWdfaW50ZXJsZWF2ZSIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcsCi0g
ICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2RlZmF1bHRfZnJhZ19pbnRlcmxlYXZl
KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0
cF9kZWZhdWx0X2ZyYWdfaW50ZXJsZWF2ZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJ
ICAgIFNDVFBDVExfREVGQVVMVF9GUkFHX0lOVEVSTEVBVkVfREVTQyk7CiAKIAlzeXNjdGxfYWRk
X29pZCgmc3lzY3RsX29pZF90b3AsICJtb2JpbGl0eV9iYXNlIiwgQ1RMVFlQRV9JTlR8Q1RMRkxB
R19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbW9iaWxpdHlfYmFzZSks
IDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBf
bW9iaWxpdHlfYmFzZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExf
TU9CSUxJVFlfQkFTRV9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwg
Im1vYmlsaXR5X2Zhc3RoYW5kb2ZmIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAg
ICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbW9iaWxpdHlfZmFzdGhhbmRvZmYpLCAwLCBzY3Rw
X3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX21vYmlsaXR5
X2Zhc3RoYW5kb2ZmKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9N
T0JJTElUWV9GQVNUSEFORE9GRl9ERVNDKTsKIAogI2lmIGRlZmluZWQoU0NUUF9MT0NBTF9UUkFD
RV9CVUYpCkBAIC0xNjY3LDUyICsxNTU2LDU2IEBAIHN5c2N0bF9zZXR1cF9zY3RwKHZvaWQpCiAJ
ICAgIFNDVFBDVExfVURQX1RVTk5FTElOR19QT1JUX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQo
JnN5c2N0bF9vaWRfdG9wLCAiZW5hYmxlX3NhY2tfaW1tZWRpYXRlbHkiLCBDVExUWVBFX0lOVHxD
VExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9lbmFibGVfc2Fj
a19pbW1lZGlhdGVseSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JB
U0VfU1lTQ1RMKHNjdHBfZW5hYmxlX3NhY2tfaW1tZWRpYXRlbHkpLCAwLCBzY3RwX3N5c2N0bF9o
YW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX1NBQ0tfSU1NRURJQVRFTFlfRU5BQkxFX0RFU0MpOwog
CiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAibmF0X2ZyaWVuZGx5X2luaXQiLCBD
VExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0
cF9pbml0c19pbmNsdWRlX25hdF9mcmllbmRseSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQs
CisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfaW5pdHNfaW5jbHVkZV9uYXRfZnJpZW5kbHkp
LCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX05BVF9GUklFTkRMWV9E
RVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgInZ0YWdfdGltZV93YWl0
IiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RM
KHNjdHBfdnRhZ190aW1lX3dhaXQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAm
U0NUUF9CQVNFX1NZU0NUTChzY3RwX3Z0YWdfdGltZV93YWl0KSwgMCwgc2N0cF9zeXNjdGxfaGFu
ZGxlX2ludCwKIAkgICAgU0NUUENUTF9USU1FX1dBSVRfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29p
ZCgmc3lzY3RsX29pZF90b3AsICJidWZmZXJfc3BsaXR0aW5nIiwgQ1RMVFlQRV9JTlR8Q1RMRkxB
R19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfYnVmZmVyX3NwbGl0dGlu
ZyksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNj
dHBfYnVmZmVyX3NwbGl0dGluZyksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFND
VFBDVExfQlVGRkVSX1NQTElUVElOR19ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxf
b2lkX3RvcCwgImluaXRpYWxfY3duZCIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAg
ICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2luaXRpYWxfY3duZCksIDAsIHNjdHBfc3lzY3Rs
X2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfaW5pdGlhbF9jd25kKSwg
MCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9JTklUSUFMX0NXTkRfREVT
Qyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJydHR2YXJfYnciLCBDVExU
WVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9y
dHR2YXJfYncpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZ
U0NUTChzY3RwX3J0dHZhcl9idyksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFND
VFBDVExfUlRUVkFSX0JXX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9w
LCAicnR0dmFyX3J0dCIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NU
UF9CQVNFX1NZU0NUTChzY3RwX3J0dHZhcl9ydHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50
LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3J0dHZhcl9ydHQpLCAwLCBzY3RwX3N5c2N0
bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX1JUVFZBUl9SVFRfREVTQyk7CiAKIAlzeXNjdGxf
YWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJydHR2YXJfZXFyZXQiLCBDVExUWVBFX0lOVHxDVExG
TEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9ydHR2YXJfZXFyZXQp
LCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3Rw
X3J0dHZhcl9lcXJldCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExf
UlRUVkFSX0VRUkVUX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAi
cnR0dmFyX3N0ZWFkeV9zdGVwIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAg
ICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfc3RlYWR5X3N0ZXApLCAwLCBzY3RwX3N5c2N0bF9oYW5k
bGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3N0ZWFkeV9zdGVwKSwgMCwgc2N0
cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9SVFRWQVJfU1RFQURZU19ERVNDKTsK
IAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgInVzZV9kY2NjZWNuIiwgQ1RMVFlQ
RV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfdXNl
X2RjY2NfZWNuKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9T
WVNDVEwoc2N0cF91c2VfZGNjY19lY24pLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAg
ICBTQ1RQQ1RMX1JUVFZBUl9EQ0NDRUNOX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0
bF9vaWRfdG9wLCAiYmxhY2tob2xlIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAg
ICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfYmxhY2tob2xlKSwgMCwgc2N0cF9zeXNjdGxfaGFu
ZGxlX2ludCwKLSAgICAgICAgICAgIFNDVFBDVExfQkxBQ0tIT0xFX0RFU0MpOworCSAgICAmU0NU
UF9CQVNFX1NZU0NUTChzY3RwX2JsYWNraG9sZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQs
CisJICAgIFNDVFBDVExfQkxBQ0tIT0xFX0RFU0MpOworCisJc3lzY3RsX2FkZF9vaWQoJnN5c2N0
bF9vaWRfdG9wLCAic2VuZGFsbF9saW1pdCIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcsCisJICAg
ICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfc2VuZGFsbF9saW1pdCksIDAsIHNjdHBfc3lzY3RsX2hh
bmRsZV9pbnQsCisJICAgIFNDVFBDVExfU0VOREFMTF9MSU1JVF9ERVNDKTsKIAogCXN5c2N0bF9h
ZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgImRpYWdfaW5mb19jb2RlIiwgQ1RMVFlQRV9JTlR8Q1RM
RkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfZGlhZ19pbmZvX2Nv
ZGUpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAotICAgICAgICAgICAgU0NUUENUTF9ESUFH
X0lORk9fQ09ERV9ERVNDKTsKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9kaWFnX2luZm9f
Y29kZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgIFNDVFBDVExfRElBR19JTkZP
X0NPREVfREVTQyk7CiAKICNpZmRlZiBTQ1RQX0RFQlVHCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0
bF9vaWRfdG9wLCAiZGVidWciLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3Vz
cnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfc3lzY3RsLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3Jz
Y3RwbGliL25ldGluZXQvc2N0cF9zeXNjdGwuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAw
NzU1CmluZGV4IDRmMTBmZjY3NjkxNS4uZWI4ODgzMzhjYTg2Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNj
dHBsaWIvbmV0aW5ldC9zY3RwX3N5c2N0bC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0
aW5ldC9zY3RwX3N5c2N0bC5oCkBAIC0zMiw5ICszMiw5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxzeXMvY2Rl
ZnMuaD4KLV9fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX3N5c2N0bC5o
IDI5OTU0MyAyMDE2LTA1LTEyIDE2OjM0OjU5WiB0dWV4ZW4gJCIpOworX19GQlNESUQoIiRGcmVl
QlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfc3lzY3RsLmggMzYxODk1IDIwMjAtMDYtMDcgMTQ6
Mzk6MjBaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAogI2lmbmRlZiBfTkVUSU5FVF9TQ1RQX1NZU0NU
TF9IXwpAQCAtNTYsNyArNTYsNyBAQCBzdHJ1Y3Qgc2N0cF9zeXNjdGwgewogCXVpbnQzMl90IHNj
dHBfbnJzYWNrX2VuYWJsZTsKIAl1aW50MzJfdCBzY3RwX3BrdGRyb3BfZW5hYmxlOwogCXVpbnQz
Ml90IHNjdHBfZnJfbWF4X2J1cnN0X2RlZmF1bHQ7Ci0jaWYgIShkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDAwMDApCisjaWYgIShkZWZpbmVkKF9fRnJlZUJT
RF9fKSAgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAJdWludDMyX3Qgc2N0cF9ub19jc3Vt
X29uX2xvb3BiYWNrOwogI2VuZGlmCiAJdWludDMyX3Qgc2N0cF9wZWVyX2NodW5rX29oOwpAQCAt
MTEzLDcgKzExMyw3IEBAIHN0cnVjdCBzY3RwX3N5c2N0bCB7CiAJdWludDMyX3Qgc2N0cF91c2Vf
ZGNjY19lY247CiAJdWludDMyX3Qgc2N0cF9kaWFnX2luZm9fY29kZTsKICNpZiBkZWZpbmVkKFND
VFBfTE9DQUxfVFJBQ0VfQlVGKQotI2lmIGRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgZGVmaW5l
ZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJc3RydWN0IHNjdHBfbG9nICpz
Y3RwX2xvZzsKICNlbHNlCiAJc3RydWN0IHNjdHBfbG9nIHNjdHBfbG9nOwpAQCAtMTI1LDE2ICsx
MjUsMTcgQEAgc3RydWN0IHNjdHBfc3lzY3RsIHsKIAl1aW50MzJfdCBzY3RwX2J1ZmZlcl9zcGxp
dHRpbmc7CiAJdWludDMyX3Qgc2N0cF9pbml0aWFsX2N3bmQ7CiAJdWludDMyX3Qgc2N0cF9ibGFj
a2hvbGU7CisJdWludDMyX3Qgc2N0cF9zZW5kYWxsX2xpbWl0OwogI2lmIGRlZmluZWQoU0NUUF9E
RUJVRykKIAl1aW50MzJfdCBzY3RwX2RlYnVnX29uOwogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0FQ
UExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAJdWludDMyX3Qgc2N0cF9pZ25vcmVfdm13YXJlX2ludGVyZmFjZXM7CiAJdWludDMyX3Qgc2N0
cF9tYWluX3RpbWVyOwogCXVpbnQzMl90IHNjdHBfYWRkcl93YXRjaGRvZ19saW1pdDsKIAl1aW50
MzJfdCBzY3RwX3Z0YWdfd2F0Y2hkb2dfbGltaXQ7CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAl1aW50MzJfdCBzY3RwX291dHB1dF91
bmxvY2tlZDsKICNlbmRpZgogfTsKQEAgLTIzNSw3ICsyMzYsNyBAQCBzdHJ1Y3Qgc2N0cF9zeXNj
dGwgewogI2RlZmluZSBTQ1RQQ1RMX01BWEJVUlNUX0RFRkFVTFQJU0NUUF9ERUZfTUFYX0JVUlNU
CiAKIC8qIGZyX21heGJ1cnN0OiBEZWZhdWx0IG1heCBidXJzdCBmb3Igc2N0cCBlbmRwb2ludHMg
d2hlbiBmYXN0IHJldHJhbnNtaXR0aW5nICovCi0jZGVmaW5lIFNDVFBDVExfRlJNQVhCVVJTVF9E
RVNDCQkiRGVmYXVsdCBmciBtYXggYnVyc3QgZm9yIHNjdHAgZW5kcG9pbnRzIgorI2RlZmluZSBT
Q1RQQ1RMX0ZSTUFYQlVSU1RfREVTQwkJIkRlZmF1bHQgbWF4IGJ1cnN0IGZvciBTQ1RQIGVuZHBv
aW50cyB3aGVuIGZhc3QgcmV0cmFuc21pdHRpbmciCiAjZGVmaW5lIFNDVFBDVExfRlJNQVhCVVJT
VF9NSU4JCTAKICNkZWZpbmUgU0NUUENUTF9GUk1BWEJVUlNUX01BWAkJMHhGRkZGRkZGRgogI2Rl
ZmluZSBTQ1RQQ1RMX0ZSTUFYQlVSU1RfREVGQVVMVAlTQ1RQX0RFRl9GUk1BWF9CVVJTVApAQCAt
MjY2LDcgKzI2Nyw3IEBAIHN0cnVjdCBzY3RwX3N5c2N0bCB7CiAjZGVmaW5lIFNDVFBDVExfTUlO
X1NQTElUX1BPSU5UX0RFRkFVTFQJU0NUUF9ERUZBVUxUX1NQTElUX1BPSU5UX01JTgogCiAvKiBj
aHVua3NjYWxlOiBUdW5hYmxlIGZvciBTY2FsaW5nIG9mIG51bWJlciBvZiBjaHVua3MgYW5kIG1l
c3NhZ2VzICovCi0jZGVmaW5lIFNDVFBDVExfQ0hVTktTQ0FMRV9ERVNDCQkiVHVuYWJsZSBmb3Ig
U2NhbGluZyBvZiBudW1iZXIgb2YgY2h1bmtzIGFuZCBtZXNzYWdlcyIKKyNkZWZpbmUgU0NUUENU
TF9DSFVOS1NDQUxFX0RFU0MJCSJUdW5hYmxlIGZvciBzY2FsaW5nIG9mIG51bWJlciBvZiBjaHVu
a3MgYW5kIG1lc3NhZ2VzIgogI2RlZmluZSBTQ1RQQ1RMX0NIVU5LU0NBTEVfTUlOCQkxCiAjZGVm
aW5lIFNDVFBDVExfQ0hVTktTQ0FMRV9NQVgJCTB4RkZGRkZGRkYKICNkZWZpbmUgU0NUUENUTF9D
SFVOS1NDQUxFX0RFRkFVTFQJU0NUUF9DSFVOS1FVRVVFX1NDQUxFCkBAIC0zNTAsNyArMzUxLDcg
QEAgc3RydWN0IHNjdHBfc3lzY3RsIHsKICNkZWZpbmUgU0NUUENUTF9WQUxJRF9DT09LSUVfTElG
RV9ERUZBVUxUCVNDVFBfREVGQVVMVF9DT09LSUVfTElGRQogCiAvKiBpbml0X3J0eF9tYXg6IERl
ZmF1bHQgbWF4aW11bSBudW1iZXIgb2YgcmV0cmFuc21pc3Npb24gZm9yIElOSVQgY2h1bmtzICov
Ci0jZGVmaW5lIFNDVFBDVExfSU5JVF9SVFhfTUFYX0RFU0MJIkRlZmF1bHQgbWF4aW11bSBudW1i
ZXIgb2YgcmV0cmFuc21pc3Npb24gZm9yIElOSVQgY2h1bmtzIgorI2RlZmluZSBTQ1RQQ1RMX0lO
SVRfUlRYX01BWF9ERVNDCSJEZWZhdWx0IG1heGltdW0gbnVtYmVyIG9mIHJldHJhbnNtaXNzaW9u
cyBmb3IgSU5JVCBjaHVua3MiCiAjZGVmaW5lIFNDVFBDVExfSU5JVF9SVFhfTUFYX01JTgkwCiAj
ZGVmaW5lIFNDVFBDVExfSU5JVF9SVFhfTUFYX01BWAkweEZGRkZGRkZGCiAjZGVmaW5lIFNDVFBD
VExfSU5JVF9SVFhfTUFYX0RFRkFVTFQJU0NUUF9ERUZfTUFYX0lOSVQKQEAgLTQwMyw4ICs0MDQs
OCBAQCBzdHJ1Y3Qgc2N0cF9zeXNjdGwgewogI2RlZmluZSBTQ1RQQ1RMX0NNVF9VU0VfREFDX01B
WAkJMQogI2RlZmluZSBTQ1RQQ1RMX0NNVF9VU0VfREFDX0RFRkFVTFQgICAgCTAKIAotLyogY3du
ZF9tYXhidXJzdDogVXNlIGEgQ1dORCBhZGp1c3RpbmcgbWF4YnVyc3QgKi8KLSNkZWZpbmUgU0NU
UENUTF9DV05EX01BWEJVUlNUX0RFU0MJIlVzZSBhIENXTkQgYWRqdXN0aW5nIG1heGJ1cnN0Igor
LyogY3duZF9tYXhidXJzdDogVXNlIGEgQ1dORCBhZGp1c3RpbmcgdG8gaW1wbGVtZW50IG1heGJ1
cnN0ICovCisjZGVmaW5lIFNDVFBDVExfQ1dORF9NQVhCVVJTVF9ERVNDCSJBZGp1c3QgY29uZ2Vz
dGlvbiBjb250cm9sIHdpbmRvdyB0byBsaW1pdCBtYXhpbXVtIGJ1cnN0IHdoZW4gc2VuZGluZyIK
ICNkZWZpbmUgU0NUUENUTF9DV05EX01BWEJVUlNUX01JTgkwCiAjZGVmaW5lIFNDVFBDVExfQ1dO
RF9NQVhCVVJTVF9NQVgJMQogI2RlZmluZSBTQ1RQQ1RMX0NXTkRfTUFYQlVSU1RfREVGQVVMVAkx
CkBAIC00NDAsNyArNDQxLDcgQEAgc3RydWN0IHNjdHBfc3lzY3RsIHsKICNkZWZpbmUgU0NUUENU
TF9IQl9NQVhfQlVSU1RfREVGQVVMVAlTQ1RQX0RFRl9IQk1BWF9CVVJTVAogCiAvKiBhYm9ydF9h
dF9saW1pdDogV2hlbiBvbmUtMi1vbmUgaGl0cyBxbGltaXQgYWJvcnQgKi8KLSNkZWZpbmUgU0NU
UENUTF9BQk9SVF9BVF9MSU1JVF9ERVNDCSJXaGVuIG9uZS0yLW9uZSBoaXRzIHFsaW1pdCBhYm9y
dCIKKyNkZWZpbmUgU0NUUENUTF9BQk9SVF9BVF9MSU1JVF9ERVNDCSJBYm9ydCB3aGVuIG9uZS10
by1vbmUgaGl0cyBxbGltaXQiCiAjZGVmaW5lIFNDVFBDVExfQUJPUlRfQVRfTElNSVRfTUlOCTAK
ICNkZWZpbmUgU0NUUENUTF9BQk9SVF9BVF9MSU1JVF9NQVgJMQogI2RlZmluZSBTQ1RQQ1RMX0FC
T1JUX0FUX0xJTUlUX0RFRkFVTFQJMApAQCAtNDUyLDcgKzQ1Myw3IEBAIHN0cnVjdCBzY3RwX3N5
c2N0bCB7CiAjZGVmaW5lIFNDVFBDVExfTUlOX1JFU0lEVUFMX0RFRkFVTFQJMTQ1MgogCiAvKiBt
YXhfcmV0cmFuX2NodW5rOiBtYXggY2h1bmsgcmV0cmFuc21pc3Npb25zICovCi0jZGVmaW5lIFND
VFBDVExfTUFYX1JFVFJBTl9DSFVOS19ERVNDCSJNYXhpbXVtIHRpbWVzIGFuIHVubHVja3kgY2h1
bmsgY2FuIGJlIHJldHJhbidkIGJlZm9yZSBhc3NvYyBhYm9ydCIKKyNkZWZpbmUgU0NUUENUTF9N
QVhfUkVUUkFOX0NIVU5LX0RFU0MJIk1heGltdW0gdGltZXMgYW4gdW5sdWNreSBjaHVuayBjYW4g
YmUgcmV0cmFuc21pdHRlZCBiZWZvcmUgYXNzb2MgYWJvcnQiCiAjZGVmaW5lIFNDVFBDVExfTUFY
X1JFVFJBTl9DSFVOS19NSU4JMAogI2RlZmluZSBTQ1RQQ1RMX01BWF9SRVRSQU5fQ0hVTktfTUFY
CTY1NTM1CiAjZGVmaW5lIFNDVFBDVExfTUFYX1JFVFJBTl9DSFVOS19ERUZBVUxUCTMwCkBAIC00
OTcsNzQgKzQ5OCw4MCBAQCBzdHJ1Y3Qgc2N0cF9zeXNjdGwgewogI2RlZmluZSBTQ1RQQ1RMX1VE
UF9UVU5ORUxJTkdfUE9SVF9ERVNDCQkiU2V0IHRoZSBTQ1RQL1VEUCB0dW5uZWxpbmcgcG9ydCIK
ICNkZWZpbmUgU0NUUENUTF9VRFBfVFVOTkVMSU5HX1BPUlRfTUlOCQkwCiAjZGVmaW5lIFNDVFBD
VExfVURQX1RVTk5FTElOR19QT1JUX01BWAkJNjU1MzUKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAj
ZGVmaW5lIFNDVFBDVExfVURQX1RVTk5FTElOR19QT1JUX0RFRkFVTFQJMAogI2Vsc2UKICNkZWZp
bmUgU0NUUENUTF9VRFBfVFVOTkVMSU5HX1BPUlRfREVGQVVMVAlTQ1RQX09WRVJfVURQX1RVTk5F
TElOR19QT1JUCiAjZW5kaWYKIAogLyogRW5hYmxlIHNlbmRpbmcgb2YgdGhlIFNBQ0stSU1NRURJ
QVRFTFkgYml0ICovCi0jZGVmaW5lIFNDVFBDVExfU0FDS19JTU1FRElBVEVMWV9FTkFCTEVfREVT
QwkiRW5hYmxlIHNlbmRpbmcgb2YgdGhlIFNBQ0stSU1NRURJQVRFTFktYml0LiIKKyNkZWZpbmUg
U0NUUENUTF9TQUNLX0lNTUVESUFURUxZX0VOQUJMRV9ERVNDCSJFbmFibGUgc2VuZGluZyBvZiB0
aGUgU0FDSy1JTU1FRElBVEVMWS1iaXQiCiAjZGVmaW5lIFNDVFBDVExfU0FDS19JTU1FRElBVEVM
WV9FTkFCTEVfTUlOCTAKICNkZWZpbmUgU0NUUENUTF9TQUNLX0lNTUVESUFURUxZX0VOQUJMRV9N
QVgJMQogI2RlZmluZSBTQ1RQQ1RMX1NBQ0tfSU1NRURJQVRFTFlfRU5BQkxFX0RFRkFVTFQJU0NU
UENUTF9TQUNLX0lNTUVESUFURUxZX0VOQUJMRV9NQVgKIAogLyogRW5hYmxlIHNlbmRpbmcgb2Yg
dGhlIE5BVC1GUklFTkRMWSBtZXNzYWdlICovCi0jZGVmaW5lIFNDVFBDVExfTkFUX0ZSSUVORExZ
X0lOSVRTX0RFU0MJIkVuYWJsZSBzZW5kaW5nIG9mIHRoZSBuYXQtZnJpZW5kbHkgU0NUUCBvcHRp
b24gb24gSU5JVHMuIgorI2RlZmluZSBTQ1RQQ1RMX05BVF9GUklFTkRMWV9JTklUU19ERVNDCSJF
bmFibGUgc2VuZGluZyBvZiB0aGUgbmF0LWZyaWVuZGx5IFNDVFAgb3B0aW9uIG9uIElOSVRzIgog
I2RlZmluZSBTQ1RQQ1RMX05BVF9GUklFTkRMWV9JTklUU19NSU4JMAogI2RlZmluZSBTQ1RQQ1RM
X05BVF9GUklFTkRMWV9JTklUU19NQVgJMQogI2RlZmluZSBTQ1RQQ1RMX05BVF9GUklFTkRMWV9J
TklUU19ERUZBVUxUCVNDVFBDVExfTkFUX0ZSSUVORExZX0lOSVRTX01JTgogCiAvKiBWdGFnIHRp
bWUgd2FpdCBpbiBzZWNvbmRzICovCi0jZGVmaW5lIFNDVFBDVExfVElNRV9XQUlUX0RFU0MJIlZ0
YWcgdGltZSB3YWl0IHRpbWUgaW4gc2Vjb25kcywgMCBkaXNhYmxlcyBpdC4iCisjZGVmaW5lIFND
VFBDVExfVElNRV9XQUlUX0RFU0MJIlZ0YWcgdGltZSB3YWl0IHRpbWUgaW4gc2Vjb25kcywgMCBk
aXNhYmxlcyBpdCIKICNkZWZpbmUgU0NUUENUTF9USU1FX1dBSVRfTUlOCTAKICNkZWZpbmUgU0NU
UENUTF9USU1FX1dBSVRfTUFYCTB4ZmZmZmZmZmYKICNkZWZpbmUgU0NUUENUTF9USU1FX1dBSVRf
REVGQVVMVAlTQ1RQX1RJTUVfV0FJVAogCiAvKiBFbmFibGUgU2VuZC9SZWNlaXZlIGJ1ZmZlciBz
cGxpdHRpbmcgKi8KLSNkZWZpbmUgU0NUUENUTF9CVUZGRVJfU1BMSVRUSU5HX0RFU0MJCSJFbmFi
bGUgc2VuZC9yZWNlaXZlIGJ1ZmZlciBzcGxpdHRpbmcuIgorI2RlZmluZSBTQ1RQQ1RMX0JVRkZF
Ul9TUExJVFRJTkdfREVTQwkJIkVuYWJsZSBzZW5kL3JlY2VpdmUgYnVmZmVyIHNwbGl0dGluZyIK
ICNkZWZpbmUgU0NUUENUTF9CVUZGRVJfU1BMSVRUSU5HX01JTgkJMAogI2RlZmluZSBTQ1RQQ1RM
X0JVRkZFUl9TUExJVFRJTkdfTUFYCQkweDMKICNkZWZpbmUgU0NUUENUTF9CVUZGRVJfU1BMSVRU
SU5HX0RFRkFVTFQJU0NUUENUTF9CVUZGRVJfU1BMSVRUSU5HX01JTgogCi0vKiBJbml0aWFsIGNv
bmdlc3Rpb24gd2luZG93IGluIE1UVSAqLwotI2RlZmluZSBTQ1RQQ1RMX0lOSVRJQUxfQ1dORF9E
RVNDCSJJbml0aWFsIGNvbmdlc3Rpb24gd2luZG93IGluIE1UVXMiCisvKiBJbml0aWFsIGNvbmdl
c3Rpb24gd2luZG93IGluIE1UVXMgKi8KKyNkZWZpbmUgU0NUUENUTF9JTklUSUFMX0NXTkRfREVT
QwkiRGVmaW5lcyB0aGUgaW5pdGlhbCBjb25nZXN0aW9uIHdpbmRvdyBzaXplIGluIE1UVXMiCiAj
ZGVmaW5lIFNDVFBDVExfSU5JVElBTF9DV05EX01JTgkwCiAjZGVmaW5lIFNDVFBDVExfSU5JVElB
TF9DV05EX01BWAkweGZmZmZmZmZmCiAjZGVmaW5lIFNDVFBDVExfSU5JVElBTF9DV05EX0RFRkFV
TFQJMwogCiAvKiBydHR2YXIgc21vb3RoIGF2ZyBmb3IgYncgY2FsYyAgKi8KLSNkZWZpbmUgU0NU
UENUTF9SVFRWQVJfQldfREVTQwkiU2hpZnQgYW1vdW50IGZvciBidyBzbW9vdGhpbmcgb24gcnR0
IGNhbGMiCisjZGVmaW5lIFNDVFBDVExfUlRUVkFSX0JXX0RFU0MJIlNoaWZ0IGFtb3VudCBEQ0ND
IHVzZXMgZm9yIGJ3IHNtb290aGluZyBvbiBydHQgY2FsYyIKICNkZWZpbmUgU0NUUENUTF9SVFRW
QVJfQldfTUlOCTAKICNkZWZpbmUgU0NUUENUTF9SVFRWQVJfQldfTUFYCTMyCiAjZGVmaW5lIFND
VFBDVExfUlRUVkFSX0JXX0RFRkFVTFQJNAogCiAvKiBydHR2YXIgc21vb3RoIGF2ZyBmb3IgYncg
Y2FsYyAgKi8KLSNkZWZpbmUgU0NUUENUTF9SVFRWQVJfUlRUX0RFU0MJIlNoaWZ0IGFtb3VudCBm
b3IgcnR0IHNtb290aGluZyBvbiBydHQgY2FsYyIKKyNkZWZpbmUgU0NUUENUTF9SVFRWQVJfUlRU
X0RFU0MJIlNoaWZ0IGFtb3VudCBEQ0NDIHVzZXMgZm9yIHJ0dCBzbW9vdGhpbmcgb24gcnR0IGNh
bGMiCiAjZGVmaW5lIFNDVFBDVExfUlRUVkFSX1JUVF9NSU4JMAogI2RlZmluZSBTQ1RQQ1RMX1JU
VFZBUl9SVFRfTUFYCTMyCiAjZGVmaW5lIFNDVFBDVExfUlRUVkFSX1JUVF9ERUZBVUxUCTUKIAot
I2RlZmluZSBTQ1RQQ1RMX1JUVFZBUl9FUVJFVF9ERVNDCSJXaGF0IHRvIHJldHVybiB3aGVuIHJ0
dCBhbmQgYncgYXJlIHVuY2hhbmdlZCIKKyNkZWZpbmUgU0NUUENUTF9SVFRWQVJfRVFSRVRfREVT
QwkiV2hldGhlciBEQ0NDIGluY3JlYXNlcyBjd25kIHdoZW4gdGhlIHJ0dCBhbmQgYncgYXJlIHVu
Y2hhbmdlZCIKICNkZWZpbmUgU0NUUENUTF9SVFRWQVJfRVFSRVRfTUlOCTAKICNkZWZpbmUgU0NU
UENUTF9SVFRWQVJfRVFSRVRfTUFYCTEKICNkZWZpbmUgU0NUUENUTF9SVFRWQVJfRVFSRVRfREVG
QVVMVAkwCiAKLSNkZWZpbmUgU0NUUENUTF9SVFRWQVJfU1RFQURZU19ERVNDCSJIb3cgbWFueSB0
aGUgc2FtZXMgaXQgdGFrZXMgdG8gdHJ5IHN0ZXAgZG93biBvZiBjd25kIgorI2RlZmluZSBTQ1RQ
Q1RMX1JUVFZBUl9TVEVBRFlTX0RFU0MJIk51bWJlciBvZiBpZGVudGljYWwgYncgbWVhc3VyZW1l
bnRzIERDQ0MgdGFrZXMgdG8gdHJ5IHN0ZXAgZG93biBvZiBjd25kIgogI2RlZmluZSBTQ1RQQ1RM
X1JUVFZBUl9TVEVBRFlTX01JTgkwCiAjZGVmaW5lIFNDVFBDVExfUlRUVkFSX1NURUFEWVNfTUFY
CTB4RkZGRgogI2RlZmluZSBTQ1RQQ1RMX1JUVFZBUl9TVEVBRFlTX0RFRkFVTFQJMjAgLyogMCBt
ZWFucyBkaXNhYmxlIGZlYXR1cmUgKi8KIAotI2RlZmluZSBTQ1RQQ1RMX1JUVFZBUl9EQ0NDRUNO
X0RFU0MJIkVuYWJsZSBmb3IgUlRDQyBDQyBkYXRhY2VudGVyIEVDTiIKKyNkZWZpbmUgU0NUUENU
TF9SVFRWQVJfRENDQ0VDTl9ERVNDCSJFbmFibGUgRUNOIGZvciBEQ0NDLiIKICNkZWZpbmUgU0NU
UENUTF9SVFRWQVJfRENDQ0VDTl9NSU4JMAogI2RlZmluZSBTQ1RQQ1RMX1JUVFZBUl9EQ0NDRUNO
X01BWAkxCiAjZGVmaW5lIFNDVFBDVExfUlRUVkFSX0RDQ0NFQ05fREVGQVVMVAkxIC8qIDAgbWVh
bnMgZGlzYWJsZSBmZWF0dXJlICovCiAKLSNkZWZpbmUgU0NUUENUTF9CTEFDS0hPTEVfREVTQwkJ
IkVuYWJsZSBTQ1RQIGJsYWNraG9saW5nLiBTZWUgYmxhY2tob2xlKDQpIGZvciBtb3JlIGRldGFp
bHMuIgorI2RlZmluZSBTQ1RQQ1RMX0JMQUNLSE9MRV9ERVNDCQkiRW5hYmxlIFNDVFAgYmxhY2to
b2xpbmcsIHNlZSBibGFja2hvbGUoNCkgZm9yIG1vcmUgZGV0YWlscyIKICNkZWZpbmUgU0NUUENU
TF9CTEFDS0hPTEVfTUlOCQkwCiAjZGVmaW5lIFNDVFBDVExfQkxBQ0tIT0xFX01BWAkJMgogI2Rl
ZmluZSBTQ1RQQ1RMX0JMQUNLSE9MRV9ERUZBVUxUCVNDVFBDVExfQkxBQ0tIT0xFX01JTgogCisv
KiBzZW5kYWxsX2xpbWl0OiBNYXhpbXVtIG1lc3NhZ2Ugd2l0aCBTQ1RQX1NFTkRBTEwgKi8KKyNk
ZWZpbmUgU0NUUENUTF9TRU5EQUxMX0xJTUlUX0RFU0MJIk1heGltdW0gc2l6ZSBvZiBhIG1lc3Nh
Z2Ugc2VuZCB3aXRoIFNDVFBfU0VOREFMTCIKKyNkZWZpbmUgU0NUUENUTF9TRU5EQUxMX0xJTUlU
X01JTgkwCisjZGVmaW5lIFNDVFBDVExfU0VOREFMTF9MSU1JVF9NQVgJMHhGRkZGRkZGRgorI2Rl
ZmluZSBTQ1RQQ1RMX1NFTkRBTExfTElNSVRfREVGQVVMVAkxNDMyCisKICNkZWZpbmUgU0NUUENU
TF9ESUFHX0lORk9fQ09ERV9ERVNDCSJEaWFnbm9zdGljIGluZm9ybWF0aW9uIGVycm9yIGNhdXNl
IGNvZGUiCiAjZGVmaW5lIFNDVFBDVExfRElBR19JTkZPX0NPREVfTUlOCTAKICNkZWZpbmUgU0NU
UENUTF9ESUFHX0lORk9fQ09ERV9NQVgJNjU1MzUKQEAgLTU3OCw3ICs1ODUsNyBAQCBzdHJ1Y3Qg
c2N0cF9zeXNjdGwgewogI2RlZmluZSBTQ1RQQ1RMX0RFQlVHX0RFRkFVTFQJMAogI2VuZGlmCiAK
LSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKICNkZWZpbmUgU0NUUENUTF9NQUlOX1RJTUVSX0RFU0MJCSJNYWlu
IHRpbWVyIGludGVydmFsIGluIG1zIgogI2RlZmluZSBTQ1RQQ1RMX01BSU5fVElNRVJfTUlOCQkx
CiAjZGVmaW5lIFNDVFBDVExfTUFJTl9USU1FUl9NQVgJCTB4RkZGRkZGRkYKQEAgLTU5MCwxNCAr
NTk3LDE0IEBAIHN0cnVjdCBzY3RwX3N5c2N0bCB7CiAjZGVmaW5lIFNDVFBDVExfSUdOT1JFX1ZN
V0FSRV9JTlRFUkZBQ0VTX0RFRkFVTFQJU0NUUENUTF9JR05PUkVfVk1XQVJFX0lOVEVSRkFDRVNf
TUFYCiAjZW5kaWYKIAotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09f
TE9DS19URVNUSU5HKQotI2RlZmluZSBTQ1RQQ1RMX09VVFBVVF9VTkxPQ0tFRF9ERVNDCSJVbmxv
Y2sgc29ja2V0IHdoZW4gc2VuZGluZyBwYWNrZXRzIGRvd24gdG8gSVAuIgorI2lmIGRlZmluZWQo
X19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2RlZmluZSBTQ1RQQ1RMX09V
VFBVVF9VTkxPQ0tFRF9ERVNDCSJVbmxvY2sgc29ja2V0IHdoZW4gc2VuZGluZyBwYWNrZXRzIGRv
d24gdG8gSVAiCiAjZGVmaW5lIFNDVFBDVExfT1VUUFVUX1VOTE9DS0VEX01JTgkwCiAjZGVmaW5l
IFNDVFBDVExfT1VUUFVUX1VOTE9DS0VEX01BWAkxCiAjZGVmaW5lIFNDVFBDVExfT1VUUFVUX1VO
TE9DS0VEX0RFRkFVTFQJU0NUUENUTF9PVVRQVVRfVU5MT0NLRURfTUlOCiAjZW5kaWYKIAotI2lm
IGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogI2RlZmluZQlTQ1RQQ1RMX0FERFJfV0FUQ0hET0dfTElNSVRfREVTQwki
QWRkcmVzcyB3YXRjaGRvZyBsaW1pdCIKICNkZWZpbmUJU0NUUENUTF9BRERSX1dBVENIRE9HX0xJ
TUlUX01JTgkJMAogI2RlZmluZQlTQ1RQQ1RMX0FERFJfV0FUQ0hET0dfTElNSVRfTUFYCQkweEZG
RkZGRkZGCkBAIC02MTcsNyArNjI0LDcgQEAgU1lTQ1RMX0RFQ0woX25ldF9pbmV0X3NjdHApOwog
I2VuZGlmCiAKIHZvaWQgc2N0cF9pbml0X3N5c2N0bHModm9pZCk7Ci0jaWYgZGVmaW5lZChfX1dp
bmRvd3NfXykKKyNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
IHZvaWQgc2N0cF9maW5pc2hfc3lzY3Rscyh2b2lkKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNy
c2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF90aW1lci5jIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0
cGxpYi9uZXRpbmV0L3NjdHBfdGltZXIuYwpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1
CmluZGV4IDQyNmJhNDRhZWVlMi4uYWQwNjJiMzVlZWEwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBs
aWIvbmV0aW5ldC9zY3RwX3RpbWVyLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0
L3NjdHBfdGltZXIuYwpAQCAtMzIsMTYgKzMyLDE2IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpbmNsdWRlIDxzeXMvY2RlZnMu
aD4KLV9fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX3RpbWVyLmMgMzE3
NTkyIDIwMTctMDQtMjkgMDk6NTc6MjdaIHR1ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6
IGhlYWQvc3lzL25ldGluZXQvc2N0cF90aW1lci5jIDM2MjA1NCAyMDIwLTA2LTExIDEzOjM0OjA5
WiB0dWV4ZW4gJCIpOwogI2VuZGlmCiAKICNkZWZpbmUgX0lQX1ZITAogI2luY2x1ZGUgPG5ldGlu
ZXQvc2N0cF9vcy5oPgogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9wY2IuaD4KICNpZmRlZiBJTkVU
NgotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRnJlZUJTRCkKKyNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8bmV0aW5ldDYvc2N0
cDZfdmFyLmg+CiAjZW5kaWYKICNlbmRpZgpAQCAtNTcsMTUgKzU3LDExIEBAIF9fRkJTRElEKCIk
RnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX3RpbWVyLmMgMzE3NTkyIDIwMTctMDQtMjkg
MDk6NTc6MjdaIHR1CiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwLmg+CiAjaW5jbHVkZSA8bmV0aW5l
dC9zY3RwX3Vpby5oPgogI2lmIGRlZmluZWQoSU5FVCkgfHwgZGVmaW5lZChJTkVUNikKLSNpZiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmICEoZGVmaW5lZChfV0lOMzIpICYm
IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAjaW5jbHVkZSA8bmV0aW5ldC91ZHAuaD4KICNlbmRp
ZgogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKLSNkZWZpbmUgQVBQTEVfRklMRV9O
TyA2Ci0jZW5kaWYKLQogdm9pZAogc2N0cF9hdWRpdF9yZXRyYW5taXNzaW9uX3F1ZXVlKHN0cnVj
dCBzY3RwX2Fzc29jaWF0aW9uICphc29jKQogewpAQCAtMzQ4LDcgKzM0NCwxMSBAQCBzY3RwX2Zp
bmRfYWx0ZXJuYXRlX25ldChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCQkJcmV0dXJuIChOVUxM
KTsKIAkJCX0KIAkJfQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCisJCWlmIChhbHQtPnJvLnJvX25oID09IE5VTEwpIHsKKyNlbHNlCiAJCWlmIChh
bHQtPnJvLnJvX3J0ID09IE5VTEwpIHsKKyNlbmRpZgogCQkJaWYgKGFsdC0+cm8uX3NfYWRkcikg
ewogCQkJCXNjdHBfZnJlZV9pZmEoYWx0LT5yby5fc19hZGRyKTsKIAkJCQlhbHQtPnJvLl9zX2Fk
ZHIgPSBOVUxMOwpAQCAtMzU2LDcgKzM1NiwxMSBAQCBzY3RwX2ZpbmRfYWx0ZXJuYXRlX25ldChz
dHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCQlhbHQtPnNyY19hZGRyX3NlbGVjdGVkID0gMDsKIAkJ
fQogCQlpZiAoKChhbHQtPmRlc3Rfc3RhdGUgJiBTQ1RQX0FERFJfUkVBQ0hBQkxFKSA9PSBTQ1RQ
X0FERFJfUkVBQ0hBQkxFKSAmJgorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCisJCSAgICAoYWx0LT5yby5yb19uaCAhPSBOVUxMKSAmJgorI2Vsc2UK
IAkJICAgIChhbHQtPnJvLnJvX3J0ICE9IE5VTEwpICYmCisjZW5kaWYKIAkJICAgICghKGFsdC0+
ZGVzdF9zdGF0ZSAmIFNDVFBfQUREUl9VTkNPTkZJUk1FRCkpKSB7CiAJCQkvKiBGb3VuZCBhIHJl
YWNoYWJsZSBhZGRyZXNzICovCiAJCQlicmVhazsKQEAgLTUxNyw3ICs1MjEsNyBAQCBzY3RwX21h
cmtfYWxsX2Zvcl9yZXNlbmQoc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCX0KIAl0di50dl9zZWMg
PSBjdXJfcnRvIC8gMTAwMDAwMDsKIAl0di50dl91c2VjID0gY3VyX3J0byAlIDEwMDAwMDA7Ci0j
aWZuZGVmIF9fRnJlZUJTRF9fCisjaWYgIShkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKSkKIAl0aW1lcnN1Yigmbm93LCAmdHYsICZtaW5fd2FpdCk7CiAjZWxz
ZQogCW1pbl93YWl0ID0gbm93OwpAQCAtNjE0LDcgKzYxOCw3IEBAIHNjdHBfbWFya19hbGxfZm9y
X3Jlc2VuZChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCQl9CiAJCQlpZiAoc3RjYi0+YXNvYy5w
cnNjdHBfc3VwcG9ydGVkICYmIFBSX1NDVFBfVFRMX0VOQUJMRUQoY2hrLT5mbGFncykpIHsKIAkJ
CQkvKiBJcyBpdCBleHBpcmVkPyAqLwotI2lmbmRlZiBfX0ZyZWVCU0RfXworI2lmICEoZGVmaW5l
ZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAJCQkJaWYgKHRpbWVy
Y21wKCZub3csICZjaGstPnJlYy5kYXRhLnRpbWV0b2Ryb3AsID4pKSB7CiAjZWxzZQogCQkJCWlm
ICh0aW1ldmFsY21wKCZub3csICZjaGstPnJlYy5kYXRhLnRpbWV0b2Ryb3AsID4pKSB7CkBAIC05
NDIsMTAgKzk0NiwxNCBAQCBzY3RwX3Qzcnh0X3RpbWVyKHN0cnVjdCBzY3RwX2lucGNiICppbnAs
CiAJCW5ldC0+c3JjX2FkZHJfc2VsZWN0ZWQgPSAwOwogCiAJCS8qIEZvcmNlIGEgcm91dGUgYWxs
b2NhdGlvbiB0b28gKi8KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQorCQlST19OSEZSRUUoJm5ldC0+cm8pOworI2Vsc2UKIAkJaWYgKG5ldC0+cm8u
cm9fcnQpIHsKIAkJCVJURlJFRShuZXQtPnJvLnJvX3J0KTsKIAkJCW5ldC0+cm8ucm9fcnQgPSBO
VUxMOwogCQl9CisjZW5kaWYKIAogCQkvKiBXYXMgaXQgb3VyIHByaW1hcnk/ICovCiAJCWlmICgo
c3RjYi0+YXNvYy5wcmltYXJ5X2Rlc3RpbmF0aW9uID09IG5ldCkgJiYgKGFsdCAhPSBuZXQpKSB7
CkBAIC05NjcsNyArOTc1LDcgQEAgc2N0cF90M3J4dF90aW1lcihzdHJ1Y3Qgc2N0cF9pbnBjYiAq
aW5wLAogCSAqIFNwZWNpYWwgY2FzZSBmb3IgY29va2llLWVjaG8nZWQgY2FzZSwgd2UgZG9uJ3Qg
ZG8gb3V0cHV0IGJ1dCBtdXN0CiAJICogYXdhaXQgdGhlIENPT0tJRS1BQ0sgYmVmb3JlIHJldHJh
bnNtaXNzaW9uCiAJICovCi0JaWYgKFNDVFBfR0VUX1NUQVRFKCZzdGNiLT5hc29jKSA9PSBTQ1RQ
X1NUQVRFX0NPT0tJRV9FQ0hPRUQpIHsKKwlpZiAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NU
UF9TVEFURV9DT09LSUVfRUNIT0VEKSB7CiAJCS8qCiAJCSAqIEhlcmUgd2UganVzdCByZXNldCB0
aGUgdGltZXIgYW5kIHN0YXJ0IGFnYWluIHNpbmNlIHdlCiAJCSAqIGhhdmUgbm90IGVzdGFibGlz
aGVkIHRoZSBhc29jCkBAIC05ODIsNyArOTkwLDEyIEBAIHNjdHBfdDNyeHRfdGltZXIoc3RydWN0
IHNjdHBfaW5wY2IgKmlucCwKIAkJLyogQzMuIFNlZSBpZiB3ZSBuZWVkIHRvIHNlbmQgYSBGd2Qt
VFNOICovCiAJCWlmIChTQ1RQX1RTTl9HVChzdGNiLT5hc29jLmFkdmFuY2VkX3BlZXJfYWNrX3Bv
aW50LCBzdGNiLT5hc29jLmxhc3RfYWNrZWRfc2VxKSkgewogCQkJc2VuZF9mb3J3YXJkX3Rzbihz
dGNiLCAmc3RjYi0+YXNvYyk7Ci0JCQlpZiAobGNoaykgeworCQkJZm9yICg7IGxjaGsgIT0gTlVM
TDsgbGNoayA9IFRBSUxRX05FWFQobGNoaywgc2N0cF9uZXh0KSkgeworCQkJCWlmIChsY2hrLT53
aG9UbyAhPSBOVUxMKSB7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJCWlmIChsY2hrICE9
IE5VTEwpIHsKIAkJCQkvKiBBc3N1cmUgYSB0aW1lciBpcyB1cCAqLwogCQkJCXNjdHBfdGltZXJf
c3RhcnQoU0NUUF9USU1FUl9UWVBFX1NFTkQsIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIGxjaGstPndo
b1RvKTsKIAkJCX0KQEAgLTEwMDksNyArMTAyMiw3IEBAIHNjdHBfdDFpbml0X3RpbWVyKHN0cnVj
dCBzY3RwX2lucGNiICppbnAsCiAJCXNjdHBfc2VuZF9pbml0aWF0ZShpbnAsIHN0Y2IsIFNDVFBf
U09fTk9UX0xPQ0tFRCk7CiAJCXJldHVybiAoMCk7CiAJfQotCWlmIChTQ1RQX0dFVF9TVEFURSgo
JnN0Y2ItPmFzb2MpKSAhPSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB7CisJaWYgKFNDVFBfR0VU
X1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQpIHsKIAkJcmV0dXJuICgwKTsK
IAl9CiAJaWYgKHNjdHBfdGhyZXNob2xkX21hbmFnZW1lbnQoaW5wLCBzdGNiLCBuZXQsCkBAIC0x
MDU3LDcgKzEwNzAsNyBAQCBzY3RwX2Nvb2tpZV90aW1lcihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5w
LAogCQl9CiAJfQogCWlmIChjb29raWUgPT0gTlVMTCkgewotCQlpZiAoU0NUUF9HRVRfU1RBVEUo
JnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCkgeworCQlpZiAoU0NUUF9H
RVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9DT09LSUVfRUNIT0VEKSB7CiAJCQkvKiBGT09C
QVIhICovCiAJCQlzdHJ1Y3QgbWJ1ZiAqb3BfZXJyOwogCkBAIC0xMDY5LDcgKzEwODIsNyBAQCBz
Y3RwX2Nvb2tpZV90aW1lcihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogI2lmZGVmIElOVkFSSUFO
VFMKIAkJCXBhbmljKCJDb29raWUgdGltZXIgZXhwaXJlcyBpbiB3cm9uZyBzdGF0ZT8iKTsKICNl
bHNlCi0JCQlTQ1RQX1BSSU5URigiU3RyYW5nZSBpbiBzdGF0ZSAlZCBub3QgY29va2llLWVjaG9l
ZCB5ZXQgYy1lIHRpbWVyIGV4cGlyZXM/XG4iLCBTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykp
OworCQkJU0NUUF9QUklOVEYoIlN0cmFuZ2UgaW4gc3RhdGUgJWQgbm90IGNvb2tpZS1lY2hvZWQg
eWV0IGMtZSB0aW1lciBleHBpcmVzP1xuIiwgU0NUUF9HRVRfU1RBVEUoc3RjYikpOwogCQkJcmV0
dXJuICgwKTsKICNlbmRpZgogCQl9CkBAIC0xMTA4LDEwICsxMTIxLDkgQEAgc2N0cF9jb29raWVf
dGltZXIoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIH0KIAogaW50Ci1zY3RwX3N0cnJlc2V0X3Rp
bWVyKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKLSAgICBz
dHJ1Y3Qgc2N0cF9uZXRzICpuZXQpCitzY3RwX3N0cnJlc2V0X3RpbWVyKHN0cnVjdCBzY3RwX2lu
cGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYikKIHsKLQlzdHJ1Y3Qgc2N0cF9uZXRzICph
bHQ7CisJc3RydWN0IHNjdHBfbmV0cyAqYWx0LCAqbmV0OwogCXN0cnVjdCBzY3RwX3RtaXRfY2h1
bmsgKnN0cnJzdCA9IE5VTEwsICpjaGsgPSBOVUxMOwogCiAJaWYgKHN0Y2ItPmFzb2Muc3RyZWFt
X3Jlc2V0X291dHN0YW5kaW5nID09IDApIHsKQEAgLTExMjIsOSArMTEzNCw5IEBAIHNjdHBfc3Ry
cmVzZXRfdGltZXIoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNi
LAogCWlmIChzdHJyc3QgPT0gTlVMTCkgewogCQlyZXR1cm4gKDApOwogCX0KKwluZXQgPSBzdHJy
c3QtPndob1RvOwogCS8qIGRvIHRocmVzaG9sZCBtYW5hZ2VtZW50ICovCi0JaWYgKHNjdHBfdGhy
ZXNob2xkX21hbmFnZW1lbnQoaW5wLCBzdGNiLCBzdHJyc3QtPndob1RvLAotCSAgICBzdGNiLT5h
c29jLm1heF9zZW5kX3RpbWVzKSkgeworCWlmIChzY3RwX3RocmVzaG9sZF9tYW5hZ2VtZW50KGlu
cCwgc3RjYiwgbmV0LCBzdGNiLT5hc29jLm1heF9zZW5kX3RpbWVzKSkgewogCQkvKiBBc3NvYyBp
cyBvdmVyICovCiAJCXJldHVybiAoMSk7CiAJfQpAQCAtMTEzMiw5ICsxMTQ0LDggQEAgc2N0cF9z
dHJyZXNldF90aW1lcihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0
Y2IsCiAJICogQ2xlYXJlZCB0aHJlc2hvbGQgbWFuYWdlbWVudCwgbm93IGxldHMgYmFja29mZiB0
aGUgYWRkcmVzcwogCSAqIGFuZCBzZWxlY3QgYW4gYWx0ZXJuYXRlCiAJICovCi0Jc2N0cF9iYWNr
b2ZmX29uX3RpbWVvdXQoc3RjYiwgc3RycnN0LT53aG9UbywgMSwgMCwgMCk7Ci0JYWx0ID0gc2N0
cF9maW5kX2FsdGVybmF0ZV9uZXQoc3RjYiwgc3RycnN0LT53aG9UbywgMCk7Ci0Jc2N0cF9mcmVl
X3JlbW90ZV9hZGRyKHN0cnJzdC0+d2hvVG8pOworCXNjdHBfYmFja29mZl9vbl90aW1lb3V0KHN0
Y2IsIG5ldCwgMSwgMCwgMCk7CisJYWx0ID0gc2N0cF9maW5kX2FsdGVybmF0ZV9uZXQoc3RjYiwg
bmV0LCAwKTsKIAlzdHJyc3QtPndob1RvID0gYWx0OwogCWF0b21pY19hZGRfaW50KCZhbHQtPnJl
Zl9jb3VudCwgMSk7CiAKQEAgLTExNTksNiArMTE3MCw4IEBAIHNjdHBfc3RycmVzZXRfdGltZXIo
c3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkgKi8KIAkJ
c2N0cF9tb3ZlX2NodW5rc19mcm9tX25ldChzdGNiLCBuZXQpOwogCX0KKwlzY3RwX2ZyZWVfcmVt
b3RlX2FkZHIobmV0KTsKKwogCS8qIG1hcmsgdGhlIHJldHJhbiBpbmZvICovCiAJaWYgKHN0cnJz
dC0+c2VudCAhPSBTQ1RQX0RBVEFHUkFNX1JFU0VORCkKIAkJc2N0cF91Y291bnRfaW5jcihzdGNi
LT5hc29jLnNlbnRfcXVldWVfcmV0cmFuX2NudCk7CkBAIC0xMTY2LDcgKzExNzksNyBAQCBzY3Rw
X3N0cnJlc2V0X3RpbWVyKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAq
c3RjYiwKIAlzdHJyc3QtPmZsYWdzIHw9IENIVU5LX0ZMQUdTX0ZSQUdNRU5UX09LOwogCiAJLyog
cmVzdGFydCB0aGUgdGltZXIgKi8KLQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9T
VFJSRVNFVCwgaW5wLCBzdGNiLCBzdHJyc3QtPndob1RvKTsKKwlzY3RwX3RpbWVyX3N0YXJ0KFND
VFBfVElNRVJfVFlQRV9TVFJSRVNFVCwgaW5wLCBzdGNiLCBhbHQpOwogCXJldHVybiAoMCk7CiB9
CiAKQEAgLTExOTEsOCArMTIwNCw5IEBAIHNjdHBfYXNjb25mX3RpbWVyKHN0cnVjdCBzY3RwX2lu
cGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJaWYgKGFzY29uZiA9PSBOVUxMKSB7
CiAJCQlyZXR1cm4gKDApOwogCQl9CisJCW5ldCA9IGFzY29uZi0+d2hvVG87CiAJCS8qIGRvIHRo
cmVzaG9sZCBtYW5hZ2VtZW50ICovCi0JCWlmIChzY3RwX3RocmVzaG9sZF9tYW5hZ2VtZW50KGlu
cCwgc3RjYiwgYXNjb25mLT53aG9UbywKKwkJaWYgKHNjdHBfdGhyZXNob2xkX21hbmFnZW1lbnQo
aW5wLCBzdGNiLCBuZXQsCiAJCSAgICBzdGNiLT5hc29jLm1heF9zZW5kX3RpbWVzKSkgewogCQkJ
LyogQXNzb2MgaXMgb3ZlciAqLwogCQkJcmV0dXJuICgxKTsKQEAgLTEyMDUsMTcgKzEyMTksMTYg
QEAgc2N0cF9hc2NvbmZfdGltZXIoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBf
dGNiICpzdGNiLAogCQkJICogTWFyayB0aGlzIHBlZXIgYXMgQVNDT05GIGluY2FwYWJsZSBhbmQg
Y2xlYW51cC4KIAkJCSAqLwogCQkJU0NUUERCRyhTQ1RQX0RFQlVHX1RJTUVSMSwgImFzY29uZl90
aW1lcjogUGVlciBoYXMgbm90IHJlc3BvbmRlZCB0byBvdXIgcmVwZWF0ZWQgQVNDT05Gc1xuIik7
Ci0JCQlzY3RwX2FzY29uZl9jbGVhbnVwKHN0Y2IsIG5ldCk7CisJCQlzY3RwX2FzY29uZl9jbGVh
bnVwKHN0Y2IpOwogCQkJcmV0dXJuICgwKTsKIAkJfQogCQkvKgogCQkgKiBjbGVhcmVkIHRocmVz
aG9sZCBtYW5hZ2VtZW50LCBzbyBub3cgYmFja29mZiB0aGUgbmV0IGFuZAogCQkgKiBzZWxlY3Qg
YW4gYWx0ZXJuYXRlCiAJCSAqLwotCQlzY3RwX2JhY2tvZmZfb25fdGltZW91dChzdGNiLCBhc2Nv
bmYtPndob1RvLCAxLCAwLCAwKTsKLQkJYWx0ID0gc2N0cF9maW5kX2FsdGVybmF0ZV9uZXQoc3Rj
YiwgYXNjb25mLT53aG9UbywgMCk7CisJCXNjdHBfYmFja29mZl9vbl90aW1lb3V0KHN0Y2IsIG5l
dCwgMSwgMCwgMCk7CisJCWFsdCA9IHNjdHBfZmluZF9hbHRlcm5hdGVfbmV0KHN0Y2IsIG5ldCwg
MCk7CiAJCWlmIChhc2NvbmYtPndob1RvICE9IGFsdCkgewotCQkJc2N0cF9mcmVlX3JlbW90ZV9h
ZGRyKGFzY29uZi0+d2hvVG8pOwogCQkJYXNjb25mLT53aG9UbyA9IGFsdDsKIAkJCWF0b21pY19h
ZGRfaW50KCZhbHQtPnJlZl9jb3VudCwgMSk7CiAJCX0KQEAgLTEyNTIsNiArMTI2NSw4IEBAIHNj
dHBfYXNjb25mX3RpbWVyKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAq
c3RjYiwKIAkJCSAqLwogCQkJc2N0cF9tb3ZlX2NodW5rc19mcm9tX25ldChzdGNiLCBuZXQpOwog
CQl9CisJCXNjdHBfZnJlZV9yZW1vdGVfYWRkcihuZXQpOworCiAJCS8qIG1hcmsgdGhlIHJldHJh
biBpbmZvICovCiAJCWlmIChhc2NvbmYtPnNlbnQgIT0gU0NUUF9EQVRBR1JBTV9SRVNFTkQpCiAJ
CQlzY3RwX3Vjb3VudF9pbmNyKHN0Y2ItPmFzb2Muc2VudF9xdWV1ZV9yZXRyYW5fY250KTsKQEAg
LTEyNjYsOCArMTI4MSw3IEBAIHNjdHBfYXNjb25mX3RpbWVyKHN0cnVjdCBzY3RwX2lucGNiICpp
bnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAogLyogTW9iaWxpdHkgYWRhcHRhdGlvbiAqLwog
dm9pZAotc2N0cF9kZWxldGVfcHJpbV90aW1lcihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1
Y3Qgc2N0cF90Y2IgKnN0Y2IsCi0gICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY3RwX25l
dHMgKm5ldCBTQ1RQX1VOVVNFRCkKK3NjdHBfZGVsZXRlX3ByaW1fdGltZXIoc3RydWN0IHNjdHBf
aW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiKQogewogCWlmIChzdGNiLT5hc29jLmRl
bGV0ZWRfcHJpbWFyeSA9PSBOVUxMKSB7CiAJCVNDVFBEQkcoU0NUUF9ERUJVR19BU0NPTkYxLCAi
ZGVsZXRlX3ByaW1fdGltZXI6IGRlbGV0ZWRfcHJpbWFyeSBpcyBub3Qgc3RvcmVkLi4uXG4iKTsK
QEAgLTE0NDEsNyArMTQ1NSw3IEBAIHNjdHBfaGVhcnRiZWF0X3RpbWVyKHN0cnVjdCBzY3RwX2lu
cGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAogCQlpZiAoKG5ldC0+bGFzdF9zZW50
X3RpbWUudHZfc2VjID4gMCkgfHwKIAkJICAgIChuZXQtPmxhc3Rfc2VudF90aW1lLnR2X3VzZWMg
PiAwKSkgewotI2lmZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCXN0cnVjdCB0aW1ldmFsIGRpZmY7CiAKIAkJCVND
VFBfR0VUVElNRV9USU1FVkFMKCZkaWZmKTsKQEAgLTE0ODcsNyArMTUwMSw3IEBAIHNjdHBfcGF0
aG10dV90aW1lcihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogCQkJCWlmIChuZXQtPnJvLl9sX2Fk
ZHIuc2Euc2FfZmFtaWx5ID09IEFGX0lORVQ2KSB7CiAJCQkJCXN0cnVjdCBzb2NrYWRkcl9pbjYg
KnNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKSZuZXQtPnJvLl9sX2FkZHI7CiAJCQkJCS8q
IEtBTUUgaGFjazogZW1iZWQgc2NvcGVpZCAqLwotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lm
IGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmIGRlZmlu
ZWQoQVBQTEVfTEVPUEFSRCkgfHwgZGVmaW5lZChBUFBMRV9TTk9XTEVPUEFSRCkKIAkJCQkJKHZv
aWQpaW42X2VtYmVkc2NvcGUoJnNpbjYtPnNpbjZfYWRkciwgc2luNiwgTlVMTCwgTlVMTCk7CiAj
ZWxzZQpAQCAtMTUyMCw3ICsxNTM0LDExIEBAIHNjdHBfcGF0aG10dV90aW1lcihzdHJ1Y3Qgc2N0
cF9pbnBjYiAqaW5wLAogCQkJCW5ldC0+c3JjX2FkZHJfc2VsZWN0ZWQgPSAxOwogCQl9CiAJCWlm
IChuZXQtPnJvLl9zX2FkZHIpIHsKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQorCQkJbXR1ID0gU0NUUF9HQVRIRVJfTVRVX0ZST01fUk9VVEUobmV0
LT5yby5fc19hZGRyLCAmbmV0LT5yby5fc19hZGRyLnNhLCBuZXQtPnJvLnJvX25oKTsKKyNlbHNl
CiAJCQltdHUgPSBTQ1RQX0dBVEhFUl9NVFVfRlJPTV9ST1VURShuZXQtPnJvLl9zX2FkZHIsICZu
ZXQtPnJvLl9zX2FkZHIuc2EsIG5ldC0+cm8ucm9fcnQpOworI2VuZGlmCiAjaWYgZGVmaW5lZChJ
TkVUKSB8fCBkZWZpbmVkKElORVQ2KQogCQkJaWYgKG5ldC0+cG9ydCkgewogCQkJCW10dSAtPSBz
aXplb2Yoc3RydWN0IHVkcGhkcik7CkBAIC0xNTM4LDE2ICsxNTU2LDE0IEBAIHNjdHBfcGF0aG10
dV90aW1lcihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogfQogCiB2b2lkCi1zY3RwX2F1dG9jbG9z
ZV90aW1lcihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAotICAgIHN0cnVjdCBzY3RwX3RjYiAqc3Rj
YiwKLSAgICBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQpCitzY3RwX2F1dG9jbG9zZV90aW1lcihzdHJ1
Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IpCiB7CiAJc3RydWN0IHRp
bWV2YWwgdG4sICp0aW1fdG91c2U7CiAJc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2M7Ci0J
aW50IHRpY2tzX2dvbmVfYnk7CisJdWludDMyX3QgdGlja3NfZ29uZV9ieTsKIAogCSh2b2lkKVND
VFBfR0VUVElNRV9USU1FVkFMKCZ0bik7Ci0JaWYgKHN0Y2ItPmFzb2Muc2N0cF9hdXRvY2xvc2Vf
dGlja3MgJiYKKwlpZiAoc3RjYi0+YXNvYy5zY3RwX2F1dG9jbG9zZV90aWNrcyA+IDAgJiYKIAkg
ICAgc2N0cF9pc19mZWF0dXJlX29uKGlucCwgU0NUUF9QQ0JfRkxBR1NfQVVUT0NMT1NFKSkgewog
CQkvKiBBdXRvIGNsb3NlIGlzIG9uICovCiAJCWFzb2MgPSAmc3RjYi0+YXNvYzsKQEAgLTE1NTks
OSArMTU3NSw4IEBAIHNjdHBfYXV0b2Nsb3NlX3RpbWVyKHN0cnVjdCBzY3RwX2lucGNiICppbnAs
CiAJCQl0aW1fdG91c2UgPSAmYXNvYy0+dGltZV9sYXN0X3NlbnQ7CiAJCX0KIAkJLyogTm93IGhh
cyBsb25nIGVub3VnaCB0cmFuc3BpcmVkIHRvIGF1dG9jbG9zZT8gKi8KLQkJdGlja3NfZ29uZV9i
eSA9IFNFQ19UT19USUNLUyh0bi50dl9zZWMgLSB0aW1fdG91c2UtPnR2X3NlYyk7Ci0JCWlmICgo
dGlja3NfZ29uZV9ieSA+IDApICYmCi0JCSAgICAodGlja3NfZ29uZV9ieSA+PSAoaW50KWFzb2Mt
PnNjdHBfYXV0b2Nsb3NlX3RpY2tzKSkgeworCQl0aWNrc19nb25lX2J5ID0gc2N0cF9zZWNzX3Rv
X3RpY2tzKCh1aW50MzJfdCkodG4udHZfc2VjIC0gdGltX3RvdXNlLT50dl9zZWMpKTsKKwkJaWYg
KHRpY2tzX2dvbmVfYnkgPj0gYXNvYy0+c2N0cF9hdXRvY2xvc2VfdGlja3MpIHsKIAkJCS8qCiAJ
CQkgKiBhdXRvY2xvc2UgdGltZSBoYXMgaGl0LCBjYWxsIHRoZSBvdXRwdXQgcm91dGluZSwKIAkJ
CSAqIHdoaWNoIHNob3VsZCBkbyBub3RoaW5nIGp1c3QgdG8gYmUgU1VSRSB3ZSBkb24ndApAQCAt
MTU3NywyOSArMTU5MiwyNiBAQCBzY3RwX2F1dG9jbG9zZV90aW1lcihzdHJ1Y3Qgc2N0cF9pbnBj
YiAqaW5wLAogCQkJCSAqIHRoZXJlIGlzIG5vdGhpbmcgcXVldWVkIHRvIHNlbmQsIHNvIEknbQog
CQkJCSAqIGRvbmUuLi4KIAkJCQkgKi8KLQkJCQlpZiAoU0NUUF9HRVRfU1RBVEUoYXNvYykgIT0g
U0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKSB7CisJCQkJaWYgKFNDVFBfR0VUX1NUQVRFKHN0Y2Ip
ICE9IFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCkgewogCQkJCQkvKiBvbmx5IHNlbmQgU0hVVERP
V04gMXN0IHRpbWUgdGhydSAqLwotCQkJCQlzdHJ1Y3Qgc2N0cF9uZXRzICpuZXRwOworCQkJCQlz
dHJ1Y3Qgc2N0cF9uZXRzICpuZXQ7CiAKLQkJCQkJaWYgKChTQ1RQX0dFVF9TVEFURShhc29jKSA9
PSBTQ1RQX1NUQVRFX09QRU4pIHx8Ci0JCQkJCSAgICAoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0g
U0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkpIHsKKwkJCQkJaWYgKChTQ1RQX0dFVF9TVEFU
RShzdGNiKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHx8CisJCQkJCSAgICAoU0NUUF9HRVRfU1RBVEUo
c3RjYikgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkpIHsKIAkJCQkJCVNDVFBfU1RB
VF9ERUNSX0dBVUdFMzIoc2N0cHNfY3VycmVzdGFiKTsKIAkJCQkJfQotCQkJCQlTQ1RQX1NFVF9T
VEFURShhc29jLCBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpOwotCQkJCQlTQ1RQX0NMRUFSX1NV
QlNUQVRFKGFzb2MsIFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORyk7CisJCQkJCVNDVFBfU0VU
X1NUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCk7CiAJCQkJCXNjdHBfc3RvcF90
aW1lcnNfZm9yX3NodXRkb3duKHN0Y2IpOwogCQkJCQlpZiAoc3RjYi0+YXNvYy5hbHRlcm5hdGUp
IHsKLQkJCQkJCW5ldHAgPSBzdGNiLT5hc29jLmFsdGVybmF0ZTsKKwkJCQkJCW5ldCA9IHN0Y2It
PmFzb2MuYWx0ZXJuYXRlOwogCQkJCQl9IGVsc2UgewotCQkJCQkJbmV0cCA9IHN0Y2ItPmFzb2Mu
cHJpbWFyeV9kZXN0aW5hdGlvbjsKKwkJCQkJCW5ldCA9IHN0Y2ItPmFzb2MucHJpbWFyeV9kZXN0
aW5hdGlvbjsKIAkJCQkJfQotCQkJCQlzY3RwX3NlbmRfc2h1dGRvd24oc3RjYiwgbmV0cCk7CisJ
CQkJCXNjdHBfc2VuZF9zaHV0ZG93bihzdGNiLCBuZXQpOwogCQkJCQlzY3RwX3RpbWVyX3N0YXJ0
KFNDVFBfVElNRVJfVFlQRV9TSFVURE9XTiwKLQkJCQkJCQkgc3RjYi0+c2N0cF9lcCwgc3RjYiwK
LQkJCQkJCQkgbmV0cCk7CisJCQkJCQkJIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIG5ldCk7CiAJCQkJ
CXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NIVVRET1dOR1VBUkQsCi0JCQkJCQkJ
IHN0Y2ItPnNjdHBfZXAsIHN0Y2IsCi0JCQkJCQkJIG5ldHApOworCQkJCQkJCSBzdGNiLT5zY3Rw
X2VwLCBzdGNiLCBOVUxMKTsKIAkJCQl9CiAJCQl9CiAJCX0gZWxzZSB7CkBAIC0xNjA3LDEzICsx
NjE5LDEyIEBAIHNjdHBfYXV0b2Nsb3NlX3RpbWVyKHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJ
CQkgKiBObyBhdXRvIGNsb3NlIGF0IHRoaXMgdGltZSwgcmVzZXQgdC1vIHRvIGNoZWNrCiAJCQkg
KiBsYXRlcgogCQkJICovCi0JCQlpbnQgdG1wOworCQkJdWludDMyX3QgdG1wOwogCiAJCQkvKiBm
b29sIHRoZSB0aW1lciBzdGFydHVwIHRvIHVzZSB0aGUgdGltZSBsZWZ0ICovCiAJCQl0bXAgPSBh
c29jLT5zY3RwX2F1dG9jbG9zZV90aWNrczsKIAkJCWFzb2MtPnNjdHBfYXV0b2Nsb3NlX3RpY2tz
IC09IHRpY2tzX2dvbmVfYnk7Ci0JCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9B
VVRPQ0xPU0UsIGlucCwgc3RjYiwKLQkJCSAgICBuZXQpOworCQkJc2N0cF90aW1lcl9zdGFydChT
Q1RQX1RJTUVSX1RZUEVfQVVUT0NMT1NFLCBpbnAsIHN0Y2IsIE5VTEwpOwogCQkJLyogcmVzdG9y
ZSB0aGUgcmVhbCB0aWNrIHZhbHVlICovCiAJCQlhc29jLT5zY3RwX2F1dG9jbG9zZV90aWNrcyA9
IHRtcDsKIAkJfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBf
dGltZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
dXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3RpbWVyLmgKb2xkIG1v
ZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA4MjJkNWI0MDA3YmEuLmVlMWM0OTMwODFl
ZQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3Vz
cnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF90aW1lci5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3Jz
Y3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3RpbWVyLmgKQEAgLTMyLDkgKzMyLDkgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZkZWYgX19GcmVl
QlNEX18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9u
ZXRpbmV0L3NjdHBfdGltZXIuaCAyOTU3MDkgMjAxNi0wMi0xNyAxODowNDoyMlogdHVleGVuICQi
KTsKK19fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX3RpbWVyLmggMzU5
MTk1IDIwMjAtMDMtMjEgMTY6MTI6MTlaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAogI2lmbmRlZiBf
TkVUSU5FVF9TQ1RQX1RJTUVSX0hfCkBAIC00NiwxOCArNDYsMjAgQEAgX19GQlNESUQoIiRGcmVl
QlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfdGltZXIuaCAyOTU3MDkgMjAxNi0wMi0xNyAxODow
NDoyMlogdHUKICNkZWZpbmUgU0NUUF9SVFRfVkFSX1NISUZUIDIKIAogc3RydWN0IHNjdHBfbmV0
cyAqCi1zY3RwX2ZpbmRfYWx0ZXJuYXRlX25ldChzdHJ1Y3Qgc2N0cF90Y2IgKiwKLSAgICBzdHJ1
Y3Qgc2N0cF9uZXRzICosIGludCBtb2RlKTsKK3NjdHBfZmluZF9hbHRlcm5hdGVfbmV0KHN0cnVj
dCBzY3RwX3RjYiAqLCBzdHJ1Y3Qgc2N0cF9uZXRzICosIGludCk7CiAKIGludAogc2N0cF90M3J4
dF90aW1lcihzdHJ1Y3Qgc2N0cF9pbnBjYiAqLCBzdHJ1Y3Qgc2N0cF90Y2IgKiwKICAgICBzdHJ1
Y3Qgc2N0cF9uZXRzICopOworCiBpbnQKIHNjdHBfdDFpbml0X3RpbWVyKHN0cnVjdCBzY3RwX2lu
cGNiICosIHN0cnVjdCBzY3RwX3RjYiAqLAogICAgIHN0cnVjdCBzY3RwX25ldHMgKik7CisKIGlu
dAogc2N0cF9zaHV0ZG93bl90aW1lcihzdHJ1Y3Qgc2N0cF9pbnBjYiAqLCBzdHJ1Y3Qgc2N0cF90
Y2IgKiwKICAgICBzdHJ1Y3Qgc2N0cF9uZXRzICopOworCiBpbnQKIHNjdHBfaGVhcnRiZWF0X3Rp
bWVyKHN0cnVjdCBzY3RwX2lucGNiICosIHN0cnVjdCBzY3RwX3RjYiAqLAogICAgIHN0cnVjdCBz
Y3RwX25ldHMgKik7CkBAIC03NCwyNiArNzYsMjMgQEAgaW50CiBzY3RwX3NodXRkb3duYWNrX3Rp
bWVyKHN0cnVjdCBzY3RwX2lucGNiICosIHN0cnVjdCBzY3RwX3RjYiAqLAogICAgIHN0cnVjdCBz
Y3RwX25ldHMgKik7CiBpbnQKLXNjdHBfc3RycmVzZXRfdGltZXIoc3RydWN0IHNjdHBfaW5wY2Ig
KmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAotICAgIHN0cnVjdCBzY3RwX25ldHMgKm5ldCk7
CitzY3RwX3N0cnJlc2V0X3RpbWVyKHN0cnVjdCBzY3RwX2lucGNiICosIHN0cnVjdCBzY3RwX3Rj
YiAqKTsKIAogaW50CiBzY3RwX2FzY29uZl90aW1lcihzdHJ1Y3Qgc2N0cF9pbnBjYiAqLCBzdHJ1
Y3Qgc2N0cF90Y2IgKiwKICAgICBzdHJ1Y3Qgc2N0cF9uZXRzICopOwogCiB2b2lkCi1zY3RwX2Rl
bGV0ZV9wcmltX3RpbWVyKHN0cnVjdCBzY3RwX2lucGNiICosIHN0cnVjdCBzY3RwX3RjYiAqLAot
ICAgIHN0cnVjdCBzY3RwX25ldHMgKik7CitzY3RwX2RlbGV0ZV9wcmltX3RpbWVyKHN0cnVjdCBz
Y3RwX2lucGNiICosIHN0cnVjdCBzY3RwX3RjYiAqKTsKIAogdm9pZAotc2N0cF9hdXRvY2xvc2Vf
dGltZXIoc3RydWN0IHNjdHBfaW5wY2IgKiwgc3RydWN0IHNjdHBfdGNiICosCi0gICAgc3RydWN0
IHNjdHBfbmV0cyAqbmV0KTsKK3NjdHBfYXV0b2Nsb3NlX3RpbWVyKHN0cnVjdCBzY3RwX2lucGNi
ICosIHN0cnVjdCBzY3RwX3RjYiAqKTsKIAogdm9pZCBzY3RwX2F1ZGl0X3JldHJhbm1pc3Npb25f
cXVldWUoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKik7CiAKIHZvaWQgc2N0cF9pdGVyYXRvcl90
aW1lcihzdHJ1Y3Qgc2N0cF9pdGVyYXRvciAqaXQpOwogCi0jaWYgZGVmaW5lZChfX0FQUExFX18p
CisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaWYg
ZGVmaW5lZChBUFBMRV9MRU9QQVJEKSB8fCBkZWZpbmVkKEFQUExFX1NOT1dMRU9QQVJEKSB8fCBk
ZWZpbmVkKEFQUExFX0xJT04pIHx8IGRlZmluZWQoQVBQTEVfTU9VTlRBSU5MSU9OKQogdm9pZCBz
Y3RwX3Nsb3d0aW1vKHZvaWQpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBs
aWIvbmV0aW5ldC9zY3RwX3Vpby5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBf
dWlvLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA5ZDMxYWExNTkwYTAu
LjYyOThmOTMzNGE1MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF91aW8u
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3Vz
cnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF91aW8uaApAQCAtMzIsMjkg
KzMyLDI5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lm
ZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLV9fRkJTRElEKCIkRnJlZUJTRDog
aGVhZC9zeXMvbmV0aW5ldC9zY3RwX3Vpby5oIDMyNjY3MiAyMDE3LTEyLTA3IDIyOjE5OjA4WiB0
dWV4ZW4gJCIpOworX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfdWlv
LmggMzYyNDczIDIwMjAtMDYtMjEgMjM6MTI6NTZaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAogI2lm
bmRlZiBfTkVUSU5FVF9TQ1RQX1VJT19IXwogI2RlZmluZSBfTkVUSU5FVF9TQ1RQX1VJT19IXwog
Ci0jaWYgKGRlZmluZWQoX19BUFBMRV9fKSAmJiBkZWZpbmVkKEtFUk5FTCkpCisjaWYgKGRlZmlu
ZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKSAmJiBkZWZpbmVkKEtFUk5F
TCkpCiAjaWZuZGVmIF9LRVJORUwKICNkZWZpbmUgX0tFUk5FTAogI2VuZGlmCiAjZW5kaWYKIAot
I2lmICEoZGVmaW5lZChfX1dpbmRvd3NfXykpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dp
bmRvd3MpCi0jaWYgISBkZWZpbmVkKF9LRVJORUwpCisjaWYgIWRlZmluZWQoX1dJTjMyKQorI2lm
ICFkZWZpbmVkKF9LRVJORUwpCiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjZW5kaWYKICNpbmNsdWRl
IDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CiAjaW5jbHVkZSA8bmV0aW5l
dC9pbi5oPgogI2VuZGlmCi0jaWYgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiBkZWZpbmVkKF9X
SU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNwcmFnbWEgd2FybmluZyhwdXNoKQog
I3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQyMDApCiAjaWYgZGVmaW5lZChfS0VSTkVMKQpAQCAt
MTEwLDE0ICsxMTAsOCBAQCBzdHJ1Y3Qgc2N0cF9ldmVudF9zdWJzY3JpYmUgewogICogYW5jaWxs
YXJ5IGRhdGEgc3RydWN0dXJlcwogICovCiBzdHJ1Y3Qgc2N0cF9pbml0bXNnIHsKLSNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA8IDgwMDAwMAotCS8qIFRoaXMg
aXMgYSBidWcuIE5vdCBmaXhlZCBmb3IgQUJJIGNvbXBhdGliaWxpdHkgKi8KLQl1aW50MzJfdCBz
aW5pdF9udW1fb3N0cmVhbXM7Ci0JdWludDMyX3Qgc2luaXRfbWF4X2luc3RyZWFtczsKLSNlbHNl
CiAJdWludDE2X3Qgc2luaXRfbnVtX29zdHJlYW1zOwogCXVpbnQxNl90IHNpbml0X21heF9pbnN0
cmVhbXM7Ci0jZW5kaWYKIAl1aW50MTZfdCBzaW5pdF9tYXhfYXR0ZW1wdHM7CiAJdWludDE2X3Qg
c2luaXRfbWF4X2luaXRfdGltZW87CiB9OwpAQCAtMTQzLDkgKzEzNyw2IEBAIHN0cnVjdCBzY3Rw
X3NuZHJjdmluZm8gewogCXVpbnQxNl90IHNpbmZvX3N0cmVhbTsKIAl1aW50MTZfdCBzaW5mb19z
c247CiAJdWludDE2X3Qgc2luZm9fZmxhZ3M7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
X19GcmVlQlNEX3ZlcnNpb24gPCA4MDAwMDAKLQl1aW50MTZfdCBzaW5mb19wcl9wb2xpY3k7Ci0j
ZW5kaWYKIAl1aW50MzJfdCBzaW5mb19wcGlkOwogCXVpbnQzMl90IHNpbmZvX2NvbnRleHQ7CiAJ
dWludDMyX3Qgc2luZm9fdGltZXRvbGl2ZTsKQEAgLTE2MSw5ICsxNTIsNiBAQCBzdHJ1Y3Qgc2N0
cF9leHRyY3ZpbmZvIHsKIAl1aW50MTZfdCBzaW5mb19zdHJlYW07CiAJdWludDE2X3Qgc2luZm9f
c3NuOwogCXVpbnQxNl90IHNpbmZvX2ZsYWdzOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYm
IF9fRnJlZUJTRF92ZXJzaW9uIDwgODAwMDAwCi0JdWludDE2X3Qgc2luZm9fcHJfcG9saWN5Owot
I2VuZGlmCiAJdWludDMyX3Qgc2luZm9fcHBpZDsKIAl1aW50MzJfdCBzaW5mb19jb250ZXh0Owog
CXVpbnQzMl90IHNpbmZvX3RpbWV0b2xpdmU7IC8qIHNob3VsZCBoYXZlIGJlZW4gc2luZm9fcHJf
dmFsdWUgKi8KQEAgLTY2MiwxMCArNjUwLDE4IEBAIHN0cnVjdCBzY3RwX3NldHBlZXJwcmltIHsK
IAl1aW50OF90IHNzcHBfcGFkZGluZ1s0XTsKIH07CiAKK3VuaW9uIHNjdHBfc29ja3N0b3JlIHsK
KwlzdHJ1Y3Qgc29ja2FkZHJfaW4gc2luOworCXN0cnVjdCBzb2NrYWRkcl9pbjYgc2luNjsKKyNp
ZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJc3RydWN0IHNvY2thZGRyX2Nvbm4gc2Nvbm47Cisj
ZW5kaWYKKwlzdHJ1Y3Qgc29ja2FkZHIgc2E7Cit9OworCiBzdHJ1Y3Qgc2N0cF9nZXRhZGRyZXNz
ZXMgewogCXNjdHBfYXNzb2NfdCBzZ2V0X2Fzc29jX2lkOwotCS8qIGFkZHIgaXMgZmlsbGVkIGlu
IGZvciBOICogc29ja2FkZHJfc3RvcmFnZSAqLwotCXN0cnVjdCBzb2NrYWRkciBhZGRyWzFdOwor
CXVuaW9uIHNjdHBfc29ja3N0b3JlIGFkZHJbXTsKIH07CiAKIHN0cnVjdCBzY3RwX3N0YXR1cyB7
CkBAIC0xMTIxLDEzICsxMTE3LDE4IEBAIHN0cnVjdCBzY3Rwc3RhdCB7CiAKICNkZWZpbmUgU0NU
UF9TVEFUX0lOQ1IoX3gpIFNDVFBfU1RBVF9JTkNSX0JZKF94LDEpCiAjZGVmaW5lIFNDVFBfU1RB
VF9ERUNSKF94KSBTQ1RQX1NUQVRfREVDUl9CWShfeCwxKQotI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pICYmIGRlZmluZWQoU01QKSAmJiBkZWZpbmVkKFNDVFBfVVNFX1BFUkNQVV9TVEFUKQorI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaWYgZGVm
aW5lZChTTVApICYmIGRlZmluZWQoU0NUUF9VU0VfUEVSQ1BVX1NUQVQpCiAjZGVmaW5lIFNDVFBf
U1RBVF9JTkNSX0JZKF94LF9kKSAoU0NUUF9CQVNFX1NUQVRTW1BDUFVfR0VUKGNwdWlkKV0uX3gg
Kz0gX2QpCiAjZGVmaW5lIFNDVFBfU1RBVF9ERUNSX0JZKF94LF9kKSAoU0NUUF9CQVNFX1NUQVRT
W1BDUFVfR0VUKGNwdWlkKV0uX3ggLT0gX2QpCiAjZWxzZQogI2RlZmluZSBTQ1RQX1NUQVRfSU5D
Ul9CWShfeCxfZCkgYXRvbWljX2FkZF9pbnQoJlNDVFBfQkFTRV9TVEFUKF94KSwgX2QpCiAjZGVm
aW5lIFNDVFBfU1RBVF9ERUNSX0JZKF94LF9kKSBhdG9taWNfc3VidHJhY3RfaW50KCZTQ1RQX0JB
U0VfU1RBVChfeCksIF9kKQogI2VuZGlmCisjZWxzZQorI2RlZmluZSBTQ1RQX1NUQVRfSU5DUl9C
WShfeCxfZCkgYXRvbWljX2FkZF9pbnQoJlNDVFBfQkFTRV9TVEFUKF94KSwgX2QpCisjZGVmaW5l
IFNDVFBfU1RBVF9ERUNSX0JZKF94LF9kKSBhdG9taWNfc3VidHJhY3RfaW50KCZTQ1RQX0JBU0Vf
U1RBVChfeCksIF9kKQorI2VuZGlmCiAvKiBUaGUgZm9sbG93aW5nIG1hY3JvcyBhcmUgZm9yIGhh
bmRsaW5nIE1JQiB2YWx1ZXMsICovCiAjZGVmaW5lIFNDVFBfU1RBVF9JTkNSX0NPVU5URVIzMihf
eCkgU0NUUF9TVEFUX0lOQ1IoX3gpCiAjZGVmaW5lIFNDVFBfU1RBVF9JTkNSX0NPVU5URVI2NChf
eCkgU0NUUF9TVEFUX0lOQ1IoX3gpCkBAIC0xMTM2LDM0ICsxMTM3LDE1IEBAIHN0cnVjdCBzY3Rw
c3RhdCB7CiAjZGVmaW5lIFNDVFBfU1RBVF9ERUNSX0NPVU5URVI2NChfeCkgU0NUUF9TVEFUX0RF
Q1IoX3gpCiAjZGVmaW5lIFNDVFBfU1RBVF9ERUNSX0dBVUdFMzIoX3gpIFNDVFBfU1RBVF9ERUNS
KF94KQogCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQotdW5pb24gc2N0cF9zb2Nrc3RvcmUg
ewotI2lmIGRlZmluZWQoSU5FVCkKLQlzdHJ1Y3Qgc29ja2FkZHJfaW4gc2luOwotI2VuZGlmCi0j
aWYgZGVmaW5lZChJTkVUNikKLQlzdHJ1Y3Qgc29ja2FkZHJfaW42IHNpbjY7Ci0jZW5kaWYKLQlz
dHJ1Y3Qgc29ja2FkZHJfY29ubiBzY29ubjsKLQlzdHJ1Y3Qgc29ja2FkZHIgc2E7Ci19OwotI2Vs
c2UKLXVuaW9uIHNjdHBfc29ja3N0b3JlIHsKLQlzdHJ1Y3Qgc29ja2FkZHJfaW4gc2luOwotCXN0
cnVjdCBzb2NrYWRkcl9pbjYgc2luNjsKLQlzdHJ1Y3Qgc29ja2FkZHIgc2E7Ci19OwotI2VuZGlm
Ci0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogLyogQW5kIHNvbWV0
aGluZyBmb3IgdXMgb2xkIHRpbWVycyAqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqLwogCi0jaWZuZGVmIF9fQVBQTEVfXwotI2lmbmRlZiBfX1VzZXJzcGFjZV9fCisjaWYg
IShkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCisjaWYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZm5kZWYgbnRvaGxsCi0jaWYgZGVmaW5lZChfX1VzZXJz
cGFjZV9vc19MaW51eCkKKyNpZiBkZWZpbmVkKF9fbGludXhfXykKICNpZm5kZWYgX0JTRF9TT1VS
Q0UKICNkZWZpbmUgX0JTRF9TT1VSQ0UKICNlbmRpZgpAQCAtMTE3NSw3ICsxMTU3LDcgQEAgdW5p
b24gc2N0cF9zb2Nrc3RvcmUgewogI2VuZGlmCiAKICNpZm5kZWYgaHRvbmxsCi0jaWYgZGVmaW5l
ZChfX1VzZXJzcGFjZV9vc19MaW51eCkKKyNpZiBkZWZpbmVkKF9fbGludXhfXykKICNpZm5kZWYg
X0JTRF9TT1VSQ0UKICNkZWZpbmUgX0JTRF9TT1VSQ0UKICNlbmRpZgpAQCAtMTE5Myw1MiArMTE3
NSwzMCBAQCB1bmlvbiBzY3RwX3NvY2tzdG9yZSB7CiBzdHJ1Y3QgeHNjdHBfaW5wY2IgewogCXVp
bnQzMl90IGxhc3Q7CiAJdWludDMyX3QgZmxhZ3M7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
JiYgX19GcmVlQlNEX3ZlcnNpb24gPCAxMDAwMDQ4Ci0JdWludDMyX3QgZmVhdHVyZXM7Ci0jZWxz
ZQogCXVpbnQ2NF90IGZlYXR1cmVzOwotI2VuZGlmCiAJdWludDMyX3QgdG90YWxfc2VuZHM7CiAJ
dWludDMyX3QgdG90YWxfcmVjdnM7CiAJdWludDMyX3QgdG90YWxfbm9zcGFjZXM7CiAJdWludDMy
X3QgZnJhZ21lbnRhdGlvbl9wb2ludDsKIAl1aW50MTZfdCBsb2NhbF9wb3J0OwotI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID4gMTEwMDA5NgorI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJdWludDE2X3QgcWxl
bl9vbGQ7CiAJdWludDE2X3QgbWF4cWxlbl9vbGQ7CiAjZWxzZQogCXVpbnQxNl90IHFsZW47CiAJ
dWludDE2X3QgbWF4cWxlbjsKICNlbmRpZgotI2lmIGRlZmluZWQoX19XaW5kb3dzX18pCi0JdWlu
dDE2X3QgcGFkZGluZzsKLSNlbmRpZgotI2lmICEoZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgKF9f
RnJlZUJTRF92ZXJzaW9uIDwgMTAwMTUxNykpCisJdWludDE2X3QgX19zcGFyZTE2OworI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJa3ZhZGRyX3Qg
c29ja2V0OworI2Vsc2UKIAl2b2lkICpzb2NrZXQ7CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDExMDAwOTYKKyNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCXVpbnQzMl90IHFsZW47CiAJdWlu
dDMyX3QgbWF4cWxlbjsKICNlbmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJl
ZUJTRF92ZXJzaW9uIDwgMTAwMDA0OAotCXVpbnQzMl90IGV4dHJhX3BhZGRpbmdbMzJdOyAvKiBm
dXR1cmUgKi8KLSNlbGlmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIChfX0ZyZWVCU0RfdmVyc2lv
biA8IDEwMDE1MTcpCi0JdWludDMyX3QgZXh0cmFfcGFkZGluZ1szMV07IC8qIGZ1dHVyZSAqLwot
I2Vsc2UKLSNpZiBkZWZpbmVkKF9fTFA2NF9fKQotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYm
IF9fRnJlZUJTRF92ZXJzaW9uID4gMTEwMDA5NgotCXVpbnQzMl90IGV4dHJhX3BhZGRpbmdbMjdd
OyAvKiBmdXR1cmUgKi8KLSNlbHNlCi0JdWludDMyX3QgZXh0cmFfcGFkZGluZ1syOV07IC8qIGZ1
dHVyZSAqLwotI2VuZGlmCi0jZWxzZQotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJl
ZUJTRF92ZXJzaW9uID4gMTEwMDA5NgotCXVpbnQzMl90IGV4dHJhX3BhZGRpbmdbMjhdOyAvKiBm
dXR1cmUgKi8KLSNlbHNlCi0JdWludDMyX3QgZXh0cmFfcGFkZGluZ1szMF07IC8qIGZ1dHVyZSAq
LwotI2VuZGlmCi0jZW5kaWYKLSNlbmRpZgorCXVpbnQzMl90IGV4dHJhX3BhZGRpbmdbMjZdOyAv
KiBmdXR1cmUgKi8KIH07CiAKIHN0cnVjdCB4c2N0cF90Y2IgewpAQCAtMTI2NywxOCArMTIyNyw5
IEBAIHN0cnVjdCB4c2N0cF90Y2IgewogCXVpbnQxNl90IHJlbW90ZV9wb3J0OyAgICAgICAgICAg
ICAgICAgICAvKiBzY3RwQXNzb2NFbnRyeSA0ICAgKi8KIAlzdHJ1Y3Qgc2N0cF90aW1ldmFsIHN0
YXJ0X3RpbWU7ICAgICAgICAgLyogc2N0cEFzc29jRW50cnkgMTYgICovCiAJc3RydWN0IHNjdHBf
dGltZXZhbCBkaXNjb250aW51aXR5X3RpbWU7IC8qIHNjdHBBc3NvY0VudHJ5IDE3ICAqLwotI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pCi0jaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAwMDAwCi0J
dWludDMyX3QgcGVlcnNfcnduZDsKLQlzY3RwX2Fzc29jX3QgYXNzb2NfaWQ7ICAgICAgICAgICAg
ICAgICAgLyogc2N0cEFzc29jRW50cnkgMSAgICovCi0JdWludDMyX3QgZXh0cmFfcGFkZGluZ1sz
Ml07ICAgICAgICAgICAgICAvKiBmdXR1cmUgKi8KLSNlbHNlCi0jZW5kaWYKLSNlbHNlCiAJdWlu
dDMyX3QgcGVlcnNfcnduZDsKIAlzY3RwX2Fzc29jX3QgYXNzb2NfaWQ7ICAgICAgICAgICAgICAg
ICAgLyogc2N0cEFzc29jRW50cnkgMSAgICovCiAJdWludDMyX3QgZXh0cmFfcGFkZGluZ1szMl07
ICAgICAgICAgICAgICAvKiBmdXR1cmUgKi8KLSNlbmRpZgogfTsKIAogc3RydWN0IHhzY3RwX2xh
ZGRyIHsKQEAgLTEzMDMsMjMgKzEyNTQsMTIgQEAgc3RydWN0IHhzY3RwX3JhZGRyIHsKIAl1aW50
OF90IGhlYXJ0YmVhdF9lbmFibGVkOyAgICAgICAgIC8qIHNjdHBBc3NvY0xvY2FsUmVtRW50cnkg
NCAgICovCiAJdWludDhfdCBwb3RlbnRpYWxseV9mYWlsZWQ7CiAJc3RydWN0IHNjdHBfdGltZXZh
bCBzdGFydF90aW1lOyAgICAvKiBzY3RwQXNzb2NMb2NhbFJlbUVudHJ5IDggICAqLwotI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pCi0jaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAwMDAwCi0JdWlu
dDMyX3QgcnR0OwotCXVpbnQzMl90IGhlYXJ0YmVhdF9pbnRlcnZhbDsKLQl1aW50MzJfdCBzc3Ro
cmVzaDsKLQl1aW50MTZfdCBlbmNhcHNfcG9ydDsKLQl1aW50MTZfdCBzdGF0ZTsKLQl1aW50MzJf
dCBleHRyYV9wYWRkaW5nWzI5XTsgICAgICAgICAgICAgIC8qIGZ1dHVyZSAqLwotI2VuZGlmCi0j
ZWxzZQogCXVpbnQzMl90IHJ0dDsKIAl1aW50MzJfdCBoZWFydGJlYXRfaW50ZXJ2YWw7CiAJdWlu
dDMyX3Qgc3N0aHJlc2g7CiAJdWludDE2X3QgZW5jYXBzX3BvcnQ7CiAJdWludDE2X3Qgc3RhdGU7
CiAJdWludDMyX3QgZXh0cmFfcGFkZGluZ1syOV07ICAgICAgICAgICAgICAvKiBmdXR1cmUgKi8K
LSNlbmRpZgogfTsKIAogI2RlZmluZSBTQ1RQX01BWF9MT0dHSU5HX1NJWkUgMzAwMDAKQEAgLTEz
NDYsMTkgKzEyODYsMTQgQEAgaW50CiBzY3RwX2xvd2VyX3Nvc2VuZChzdHJ1Y3Qgc29ja2V0ICpz
bywKICAgICBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsCiAgICAgc3RydWN0IHVpbyAqdWlvLAotI2lm
IGRlZmluZWQoX19QYW5kYV9fKQotICAgIHBha2hhbmRsZV90eXBlIGlfcGFrLAotICAgIHBha2hh
bmRsZV90eXBlIGlfY29udHJvbCwKLSNlbHNlCiAgICAgc3RydWN0IG1idWYgKmlfcGFrLAogICAg
IHN0cnVjdCBtYnVmICpjb250cm9sLAotI2VuZGlmCiAgICAgaW50IGZsYWdzLAogICAgIHN0cnVj
dCBzY3RwX3NuZHJjdmluZm8gKnNyY3YKLSNpZiAhKGRlZmluZWQoX19QYW5kYV9fKSB8fCBkZWZp
bmVkKF9fVXNlcnNwYWNlX18pKQotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJT
RF92ZXJzaW9uID49IDUwMDAwMAorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykKICAgICAsc3RydWN0IHRocmVhZCAqcAotI2VsaWYgZGVmaW5lZChf
X1dpbmRvd3NfXykKKyNlbGlmIGRlZmluZWQoX1dJTjMyKQogICAgICwgUEtUSFJFQUQgcAogI2Vs
c2UKICAgICAsc3RydWN0IHByb2MgKnAKQEAgLTEzNjksMTEgKzEzMDQsNyBAQCBzY3RwX2xvd2Vy
X3Nvc2VuZChzdHJ1Y3Qgc29ja2V0ICpzbywKIGludAogc2N0cF9zb3JlY3Ztc2coc3RydWN0IHNv
Y2tldCAqc28sCiAgICAgc3RydWN0IHVpbyAqdWlvLAotI2lmIGRlZmluZWQoX19QYW5kYV9fKQot
ICAgIHBhcnRpY2xldHlwZSAqKm1wLAotI2Vsc2UKICAgICBzdHJ1Y3QgbWJ1ZiAqKm1wLAotI2Vu
ZGlmCiAgICAgc3RydWN0IHNvY2thZGRyICpmcm9tLAogICAgIGludCBmcm9tbGVuLAogICAgIGlu
dCAqbXNnX2ZsYWdzLApAQCAtMTM4Nyw0NSArMTMxOCw2IEBAIHNjdHBfc29yZWN2bXNnKHN0cnVj
dCBzb2NrZXQgKnNvLAogI2lmICEoZGVmaW5lZChfS0VSTkVMKSkgJiYgIShkZWZpbmVkKF9fVXNl
cnNwYWNlX18pKQogCiBfX0JFR0lOX0RFQ0xTCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
X19GcmVlQlNEX3ZlcnNpb24gPCA5MDIwMDAKLWludAlzY3RwX3BlZWxvZmYgX19QKChpbnQsIHNj
dHBfYXNzb2NfdCkpOwotaW50CXNjdHBfYmluZHggX19QKChpbnQsIHN0cnVjdCBzb2NrYWRkciAq
LCBpbnQsIGludCkpOwotaW50CXNjdHBfY29ubmVjdHggX19QKChpbnQsIGNvbnN0IHN0cnVjdCBz
b2NrYWRkciAqLCBpbnQsIHNjdHBfYXNzb2NfdCAqKSk7Ci1pbnQJc2N0cF9nZXRhZGRybGVuIF9f
UCgoc2FfZmFtaWx5X3QpKTsKLWludAlzY3RwX2dldHBhZGRycyBfX1AoKGludCwgc2N0cF9hc3Nv
Y190LCBzdHJ1Y3Qgc29ja2FkZHIgKiopKTsKLXZvaWQJc2N0cF9mcmVlcGFkZHJzIF9fUCgoc3Ry
dWN0IHNvY2thZGRyICopKTsKLWludAlzY3RwX2dldGxhZGRycyBfX1AoKGludCwgc2N0cF9hc3Nv
Y190LCBzdHJ1Y3Qgc29ja2FkZHIgKiopKTsKLXZvaWQJc2N0cF9mcmVlbGFkZHJzIF9fUCgoc3Ry
dWN0IHNvY2thZGRyICopKTsKLWludAlzY3RwX29wdF9pbmZvIF9fUCgoaW50LCBzY3RwX2Fzc29j
X3QsIGludCwgdm9pZCAqLCBzb2NrbGVuX3QgKikpOwotCi0vKiBkZXByZWNhdGVkICovCi1zc2l6
ZV90CXNjdHBfc2VuZG1zZyBfX1AoKGludCwgY29uc3Qgdm9pZCAqLCBzaXplX3QsIGNvbnN0IHN0
cnVjdCBzb2NrYWRkciAqLAotCSAgICBzb2NrbGVuX3QsIHVpbnQzMl90LCB1aW50MzJfdCwgdWlu
dDE2X3QsIHVpbnQzMl90LCB1aW50MzJfdCkpOwotCi0vKiBkZXByZWNhdGVkICovCi1zc2l6ZV90
CXNjdHBfc2VuZCBfX1AoKGludCwgY29uc3Qgdm9pZCAqLCBzaXplX3QsCi0JICAgIGNvbnN0IHN0
cnVjdCBzY3RwX3NuZHJjdmluZm8gKiwgaW50KSk7Ci0KLS8qIGRlcHJlY2F0ZWQgKi8KLXNzaXpl
X3QJc2N0cF9zZW5keCBfX1AoKGludCwgY29uc3Qgdm9pZCAqLCBzaXplX3QsIHN0cnVjdCBzb2Nr
YWRkciAqLAotCSAgICBpbnQsIHN0cnVjdCBzY3RwX3NuZHJjdmluZm8gKiwgaW50KSk7Ci0KLS8q
IGRlcHJlY2F0ZWQgKi8KLXNzaXplX3QJc2N0cF9zZW5kbXNneCBfX1AoKGludCBzZCwgY29uc3Qg
dm9pZCAqLCBzaXplX3QsIHN0cnVjdCBzb2NrYWRkciAqLAotCSAgICBpbnQsIHVpbnQzMl90LCB1
aW50MzJfdCwgdWludDE2X3QsIHVpbnQzMl90LCB1aW50MzJfdCkpOwotCi1zY3RwX2Fzc29jX3QJ
c2N0cF9nZXRhc3NvY2lkIF9fUCgoaW50LCBzdHJ1Y3Qgc29ja2FkZHIgKikpOwotCi0vKiBkZXBy
ZWNhdGVkICovCi1zc2l6ZV90CXNjdHBfcmVjdm1zZyBfX1AoKGludCwgdm9pZCAqLCBzaXplX3Qs
IHN0cnVjdCBzb2NrYWRkciAqLCBzb2NrbGVuX3QgKiwKLQkgICAgc3RydWN0IHNjdHBfc25kcmN2
aW5mbyAqLCBpbnQgKikpOwotCi1zc2l6ZV90CXNjdHBfc2VuZHYgX19QKChpbnQsIGNvbnN0IHN0
cnVjdCBpb3ZlYyAqLCBpbnQsIHN0cnVjdCBzb2NrYWRkciAqLAotCSAgICBpbnQsIHZvaWQgKiwg
c29ja2xlbl90LCB1bnNpZ25lZCBpbnQsIGludCkpOwotCi1zc2l6ZV90CXNjdHBfcmVjdnYgX19Q
KChpbnQsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqLCBpbnQsIHN0cnVjdCBzb2NrYWRkciAqLAotCSAg
ICBzb2NrbGVuX3QgKiwgdm9pZCAqLCBzb2NrbGVuX3QgKiwgdW5zaWduZWQgaW50ICosIGludCAq
KSk7Ci0jZWxzZQogaW50CXNjdHBfcGVlbG9mZihpbnQsIHNjdHBfYXNzb2NfdCk7CiBpbnQJc2N0
cF9iaW5keChpbnQsIHN0cnVjdCBzb2NrYWRkciAqLCBpbnQsIGludCk7CiBpbnQJc2N0cF9jb25u
ZWN0eChpbnQsIGNvbnN0IHN0cnVjdCBzb2NrYWRkciAqLCBpbnQsIHNjdHBfYXNzb2NfdCAqKTsK
QEAgLTE0NjMsNyArMTM1NSw2IEBAIHNzaXplX3QJc2N0cF9zZW5kdihpbnQsIGNvbnN0IHN0cnVj
dCBpb3ZlYyAqLCBpbnQsIHN0cnVjdCBzb2NrYWRkciAqLAogCiBzc2l6ZV90CXNjdHBfcmVjdnYo
aW50LCBjb25zdCBzdHJ1Y3QgaW92ZWMgKiwgaW50LCBzdHJ1Y3Qgc29ja2FkZHIgKiwKIAkgICAg
c29ja2xlbl90ICosIHZvaWQgKiwgc29ja2xlbl90ICosIHVuc2lnbmVkIGludCAqLCBpbnQgKik7
Ci0jZW5kaWYKIF9fRU5EX0RFQ0xTCiAKICNlbmRpZgkJCQkvKiAhX0tFUk5FTCAqLwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3Jz
Y3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfdXNlcnNwYWNlLmMgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0
cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF91c2Vyc3BhY2UuYwpvbGQgbW9kZSAxMDA2NDQK
bmV3IG1vZGUgMTAwNzU1CmluZGV4IDZmY2MwOGQxNmQzMy4uOGUyZWJmNDYyM2JlCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3Jz
Y3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3VzZXJzcGFjZS5jCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3VzZXJzcGFjZS5jCkBAIC0zMSwyMSArMzEsMjcgQEAK
ICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfcGNiLmg+CiAjaW5jbHVkZSA8c3lzL3RpbWViLmg+CiAj
aW5jbHVkZSA8aXBobHBhcGkuaD4KKyNpZiAhZGVmaW5lZChfX01JTkdXMzJfXykKICNwcmFnbWEg
Y29tbWVudChsaWIsICJJUEhMUEFQSS5saWIiKQogI2VuZGlmCisjZW5kaWYKICNpbmNsdWRlIDxu
ZXRpbmV0L3NjdHBfb3NfdXNlcnNwYWNlLmg+Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19G
cmVlQlNEKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCiAjaW5jbHVkZSA8cHRocmVhZF9ucC5o
PgogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0xpbnV4KQorI2lmIGRlZmlu
ZWQoX19saW51eF9fKQogI2luY2x1ZGUgPHN5cy9wcmN0bC5oPgogI2VuZGlmCiAKLSNpZiBkZWZp
bmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAvKiBBZGFw
dGVyIHRvIHRyYW5zbGF0ZSBVbml4IHRocmVhZCBzdGFydCByb3V0aW5lcyB0byBXaW5kb3dzIHRo
cmVhZCBzdGFydAogICogcm91dGluZXMuCiAgKi8KKyNpZiBkZWZpbmVkKF9fTUlOR1czMl9fKQor
I3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9y
ZWQgIi1XcGVkYW50aWMiCisjZW5kaWYKIHN0YXRpYyBEV09SRCBXSU5BUEkKIHNjdHBfY3JlYXRl
X3RocmVhZF9hZGFwdGVyKHZvaWQgKmFyZykgewogCXN0YXJ0X3JvdXRpbmVfdCBzdGFydF9yb3V0
aW5lID0gKHN0YXJ0X3JvdXRpbmVfdClhcmc7CkBAIC02MSw2ICs2NywxMSBAQCBzY3RwX3VzZXJz
cGFjZV90aHJlYWRfY3JlYXRlKHVzZXJsYW5kX3RocmVhZF90ICp0aHJlYWQsIHN0YXJ0X3JvdXRp
bmVfdCBzdGFydF9ybwogCQlyZXR1cm4gR2V0TGFzdEVycm9yKCk7CiAJcmV0dXJuIDA7CiB9CisK
KyNpZiBkZWZpbmVkKF9fTUlOR1czMl9fKQorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKKyNl
bmRpZgorCiAjZWxzZQogaW50CiBzY3RwX3VzZXJzcGFjZV90aHJlYWRfY3JlYXRlKHVzZXJsYW5k
X3RocmVhZF90ICp0aHJlYWQsIHN0YXJ0X3JvdXRpbmVfdCBzdGFydF9yb3V0aW5lKQpAQCAtNzIs
MTggKzgzLDE4IEBAIHNjdHBfdXNlcnNwYWNlX3RocmVhZF9jcmVhdGUodXNlcmxhbmRfdGhyZWFk
X3QgKnRocmVhZCwgc3RhcnRfcm91dGluZV90IHN0YXJ0X3JvCiB2b2lkCiBzY3RwX3VzZXJzcGFj
ZV9zZXRfdGhyZWFkbmFtZShjb25zdCBjaGFyICpuYW1lKQogewotI2lmIGRlZmluZWQoX19Vc2Vy
c3BhY2Vfb3NfRGFyd2luKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKQogCXB0aHJlYWRfc2V0bmFt
ZV9ucChuYW1lKTsKICNlbmRpZgotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfTGludXgpCisj
aWYgZGVmaW5lZChfX2xpbnV4X18pCiAJcHJjdGwoUFJfU0VUX05BTUUsIG5hbWUpOwogI2VuZGlm
Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19GcmVlQlNEKQorI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pCiAJcHRocmVhZF9zZXRfbmFtZV9ucChwdGhyZWFkX3NlbGYoKSwgbmFtZSk7CiAjZW5k
aWYKIH0KIAotI2lmICFkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3Nf
TmFDbCkKKyNpZiAhZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9f
KQogaW50CiBzY3RwX3VzZXJzcGFjZV9nZXRfbXR1X2Zyb21faWZuKHVpbnQzMl90IGlmX2luZGV4
LCBpbnQgYWYpCiB7CkBAIC0xMDcsNyArMTE4LDcgQEAgc2N0cF91c2Vyc3BhY2VfZ2V0X210dV9m
cm9tX2lmbih1aW50MzJfdCBpZl9pbmRleCwgaW50IGFmKQogfQogI2VuZGlmCiAKLSNpZiBkZWZp
bmVkKF9fVXNlcnNwYWNlX29zX05hQ2wpCisjaWYgZGVmaW5lZChfX25hdGl2ZV9jbGllbnRfXykK
IGludAogc2N0cF91c2Vyc3BhY2VfZ2V0X210dV9mcm9tX2lmbih1aW50MzJfdCBpZl9pbmRleCwg
aW50IGFmKQogewpAQCAtMTE1LDYgKzEyNiwxOSBAQCBzY3RwX3VzZXJzcGFjZV9nZXRfbXR1X2Zy
b21faWZuKHVpbnQzMl90IGlmX2luZGV4LCBpbnQgYWYpCiB9CiAjZW5kaWYKIAorI2lmIGRlZmlu
ZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pIHx8IGRlZmluZWQoX19saW51
eF9fKSB8fCBkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9fKSB8fCBkZWZpbmVkKF9fTmV0QlNEX18p
IHx8IGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fRnVjaHNpYV9fKQoraW50Cit0aW1pbmdz
YWZlX2JjbXAoY29uc3Qgdm9pZCAqYjEsIGNvbnN0IHZvaWQgKmIyLCBzaXplX3QgbikKK3sKKwlj
b25zdCB1bnNpZ25lZCBjaGFyICpwMSA9IGIxLCAqcDIgPSBiMjsKKwlpbnQgcmV0ID0gMDsKKwor
CWZvciAoOyBuID4gMDsgbi0tKQorCQlyZXQgfD0gKnAxKysgXiAqcDIrKzsKKwlyZXR1cm4gKHJl
dCAhPSAwKTsKK30KKyNlbmRpZgorCiAjaWZkZWYgX1dJTjMyCiBpbnQKIHNjdHBfdXNlcnNwYWNl
X2dldF9tdHVfZnJvbV9pZm4odWludDMyX3QgaWZfaW5kZXgsIGludCBhZikKQEAgLTE1OSwxMSAr
MTgzLDI5IEBAIGNsZWFudXA6CiB2b2lkCiBnZXR3aW50aW1lb2ZkYXkoc3RydWN0IHRpbWV2YWwg
KnR2KQogewotCXN0cnVjdCB0aW1lYiB0YjsKKwlGSUxFVElNRSBmaWxldGltZTsKKwlVTEFSR0Vf
SU5URUdFUiB1bGFyZ2U7CiAKLQlmdGltZSgmdGIpOwotCXR2LT50dl9zZWMgPSAobG9uZyl0Yi50
aW1lOwotCXR2LT50dl91c2VjID0gKGxvbmcpKHRiLm1pbGxpdG0pICogMTAwMEw7CisJR2V0U3lz
dGVtVGltZUFzRmlsZVRpbWUoJmZpbGV0aW1lKTsKKwl1bGFyZ2UuTG93UGFydCA9IGZpbGV0aW1l
LmR3TG93RGF0ZVRpbWU7CisJdWxhcmdlLkhpZ2hQYXJ0ID0gZmlsZXRpbWUuZHdIaWdoRGF0ZVRp
bWU7CisJLyogQ2hhbmdlIGJhc2UgZnJvbSBKYW4gMSAxNjAxIDAwOjAwOjAwIHRvIEphbiAxIDE5
NzAgMDA6MDA6MDAgKi8KKyNpZiBkZWZpbmVkKF9fTUlOR1czMl9fKQorCXVsYXJnZS5RdWFkUGFy
dCAtPSAxMTY0NDQ3MzYwMDAwMDAwMDBVTEw7CisjZWxzZQorCXVsYXJnZS5RdWFkUGFydCAtPSAx
MTY0NDQ3MzYwMDAwMDAwMDBVSTY0OworI2VuZGlmCisJLyoKKwkgKiB1bGFyZ2UuUXVhZFBhcnQg
aXMgbm93IHRoZSBudW1iZXIgb2YgMTAwLW5hbm9zZWNvbmQgaW50ZXJ2YWxzCisJICogc2luY2Ug
SmFuIDEgMTk3MCAwMDowMDowMC4KKwkgKi8KKyNpZiBkZWZpbmVkKF9fTUlOR1czMl9fKQorCXR2
LT50dl9zZWMgPSAobG9uZykodWxhcmdlLlF1YWRQYXJ0IC8gMTAwMDAwMDBVTEwpOworCXR2LT50
dl91c2VjID0gKGxvbmcpKCh1bGFyZ2UuUXVhZFBhcnQgJSAxMDAwMDAwMFVMTCkgLyAxMFVMTCk7
CisjZWxzZQorCXR2LT50dl9zZWMgPSAobG9uZykodWxhcmdlLlF1YWRQYXJ0IC8gMTAwMDAwMDBV
STY0KTsKKwl0di0+dHZfdXNlYyA9IChsb25nKSgodWxhcmdlLlF1YWRQYXJ0ICUgMTAwMDAwMDBV
STY0KSAvIDEwVUk2NCk7CisjZW5kaWYKIH0KIAogaW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91
c3JzY3RwbGliL25ldGluZXQvc2N0cF91c3JyZXEuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0
aW5ldC9zY3RwX3VzcnJlcS5jCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXgg
YmI1ZWE4ZTBiMDA5Li43OGQ3OTVjYzEzNTYKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRp
bmV0L3NjdHBfdXNycmVxLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBf
dXNycmVxLmMKQEAgLTMyLDEzICszMiwxMyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpZmRlZiBfX0ZyZWVCU0RfXworI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci1f
X0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF91c3JyZXEuYyAzMzQ3MjUg
MjAxOC0wNi0wNiAxOToyNzowNlogdHVleGVuICQiKTsKK19fRkJTRElEKCIkRnJlZUJTRDogaGVh
ZC9zeXMvbmV0aW5ldC9zY3RwX3VzcnJlcS5jIDM2NDM1MyAyMDIwLTA4LTE4IDE5OjI1OjAzWiB0
dWV4ZW4gJCIpOwogI2VuZGlmCiAKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfb3MuaD4KLSNpZmRl
ZiBfX0ZyZWVCU0RfXworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAjaW5jbHVkZSA8c3lzL3Byb2MuaD4KICNlbmRpZgogI2luY2x1ZGUgPG5ldGlu
ZXQvc2N0cF9wY2IuaD4KQEAgLTYxLDE1ICs2MSwxNCBAQCBfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhl
YWQvc3lzL25ldGluZXQvc2N0cF91c3JyZXEuYyAzMzQ3MjUgMjAxOC0wNi0wNiAxOToyNzowNlog
dAogI2Vsc2UKICNpbmNsdWRlIDxuZXRpbmV0L3VkcC5oPgogI2VuZGlmCisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpbmNsdWRlIDxzeXMvZXZl
bnRoYW5kbGVyLmg+CisjZW5kaWYKIAogI2lmIGRlZmluZWQoSEFWRV9TQ1RQX1BFRUxPRkZfU09D
S09QVCkKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfcGVlbG9mZi5oPgogI2VuZGlmCQkJCS8qIEhB
VkVfU0NUUF9QRUVMT0ZGX1NPQ0tPUFQgKi8KIAotI2lmIGRlZmluZWQoX19BUFBMRV9fKQotI2Rl
ZmluZSBBUFBMRV9GSUxFX05PIDcKLSNlbmRpZgotCiBleHRlcm4gY29uc3Qgc3RydWN0IHNjdHBf
Y2NfZnVuY3Rpb25zIHNjdHBfY2NfZnVuY3Rpb25zW107CiBleHRlcm4gY29uc3Qgc3RydWN0IHNj
dHBfc3NfZnVuY3Rpb25zIHNjdHBfc3NfZnVuY3Rpb25zW107CiAKQEAgLTc3LDQ5ICs3NiwzNSBA
QCB2b2lkCiAjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogc2N0cF9pbml0KHVpbnQxNl90IHBv
cnQsCiAgICAgICAgICAgaW50ICgqY29ubl9vdXRwdXQpKHZvaWQgKmFkZHIsIHZvaWQgKmJ1ZmZl
ciwgc2l6ZV90IGxlbmd0aCwgdWludDhfdCB0b3MsIHVpbnQ4X3Qgc2V0X2RmKSwKLSAgICAgICAg
ICB2b2lkICgqZGVidWdfcHJpbnRmKShjb25zdCBjaGFyICpmb3JtYXQsIC4uLikpCisgICAgICAg
ICAgdm9pZCAoKmRlYnVnX3ByaW50ZikoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pLCBpbnQgc3Rh
cnRfdGhyZWFkcykKICNlbGlmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAoIWRlZmluZWQoQVBQTEVf
TEVPUEFSRCkgJiYgIWRlZmluZWQoQVBQTEVfU05PV0xFT1BBUkQpICYmIWRlZmluZWQoQVBQTEVf
TElPTikgJiYgIWRlZmluZWQoQVBQTEVfTU9VTlRBSU5MSU9OKSkKIHNjdHBfaW5pdChzdHJ1Y3Qg
cHJvdG9zdyAqcHAgU0NUUF9VTlVTRUQsIHN0cnVjdCBkb21haW4gKmRwIFNDVFBfVU5VU0VEKQog
I2Vsc2UKIHNjdHBfaW5pdCh2b2lkKQogI2VuZGlmCiB7Ci0jaWYgIWRlZmluZWQoX19QYW5kYV9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAJdV9sb25nIHNiX21heF9hZGo7CiAKKyNlbHNlCisJaW5pdF9yYW5kb20oKTsKICNlbmRpZgog
CS8qIEluaXRpYWxpemUgYW5kIG1vZGlmeSB0aGUgc3lzY3RsZWQgdmFyaWFibGVzICovCiAJc2N0
cF9pbml0X3N5c2N0bHMoKTsKICNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi0jaWYgZGVmaW5l
ZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX05hQ2wp
Ci0Jc3JhbmQoKHVuc2lnbmVkIGludCl0aW1lKE5VTEwpKTsKLSNlbHNlCi0Jc3JhbmRvbShnZXRw
aWQoKSk7IC8qIHNvIGlucC0+c2N0cF9lcC5yYW5kb21fbnVtYmVycyBhcmUgdHJ1bHkgcmFuZG9t
Li4uICovCi0jZW5kaWYKLSNlbmRpZgotI2lmIGRlZmluZWQoX19QYW5kYV9fKQotCXNjdHBfc2Vu
ZHNwYWNlID0gU0JfTUFYOwotCXNjdHBfcmVjdnNwYWNlID0gU0JfTUFYOwotCi0jZWxpZiBkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAJU0NUUF9CQVNFX1NZU0NUTChzY3RwX3VkcF90dW5uZWxpbmdf
cG9ydCkgPSBwb3J0OwogI2Vsc2UKLSNpZiAhZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5l
ZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJc2JfbWF4X2FkaiA9ICh1
X2xvbmcpKCh1X3F1YWRfdCkgKHNiX21heCkgKiBNQ0xCWVRFUyAvIChNU0laRSArIE1DTEJZVEVT
KSk7CisJU0NUUF9CQVNFX1NZU0NUTChzY3RwX3NlbmRzcGFjZSkgPSBzYl9tYXhfYWRqOworI2Vs
c2UKIAlpZiAoKG5tYmNsdXN0ZXJzIC8gOCkgPiBTQ1RQX0FTT0NfTUFYX0NIVU5LU19PTl9RVUVV
RSkKIAkJU0NUUF9CQVNFX1NZU0NUTChzY3RwX21heF9jaHVua3Nfb25fcXVldWUpID0gKG5tYmNs
dXN0ZXJzIC8gOCk7Ci0jZW5kaWYKIAkvKgogCSAqIEFsbG93IGEgdXNlciB0byB0YWtlIG5vIG1v
cmUgdGhhbiAxLzIgdGhlIG51bWJlciBvZiBjbHVzdGVycyBvcgotCSAqIHRoZSBTQl9NQVggd2hp
Y2hldmVyIGlzIHNtYWxsZXIgZm9yIHRoZSBzZW5kIHdpbmRvdy4KKwkgKiB0aGUgU0JfTUFYLCB3
aGljaGV2ZXIgaXMgc21hbGxlciwgZm9yIHRoZSBzZW5kIHdpbmRvdy4KIAkgKi8KLSNpZiBkZWZp
bmVkKF9fQVBQTEVfXykKLQlzYl9tYXhfYWRqID0gKHVfbG9uZykoKHVfcXVhZF90KSAoc2JfbWF4
KSAqIE1DTEJZVEVTIC8gKE1TSVpFICsgTUNMQllURVMpKTsKLSNlbHNlCiAJc2JfbWF4X2FkaiA9
ICh1X2xvbmcpKCh1X3F1YWRfdCkgKFNCX01BWCkgKiBNQ0xCWVRFUyAvIChNU0laRSArIE1DTEJZ
VEVTKSk7Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKLQlTQ1RQX0JBU0VfU1lTQ1RM
KHNjdHBfc2VuZHNwYWNlKSA9IHNiX21heF9hZGo7Ci0jZWxzZQogCVNDVFBfQkFTRV9TWVNDVEwo
c2N0cF9zZW5kc3BhY2UpID0gbWluKHNiX21heF9hZGosCiAJICAgICgoKHVpbnQzMl90KW5tYmNs
dXN0ZXJzIC8gMikgKiBTQ1RQX0RFRkFVTFRfTUFYU0VHTUVOVCkpOwogI2VuZGlmCkBAIC0xMzMs
NyArMTE4LDcgQEAgc2N0cF9pbml0KHZvaWQpCiAJU0NUUF9CQVNFX1ZBUihmaXJzdF90aW1lKSA9
IDA7CiAJU0NUUF9CQVNFX1ZBUihzY3RwX3BjYl9pbml0aWFsaXplZCkgPSAwOwogI2lmIGRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKLSNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQor
I2lmICFkZWZpbmVkKF9XSU4zMikKICNpZiBkZWZpbmVkKElORVQpIHx8IGRlZmluZWQoSU5FVDYp
CiAJU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2Vfcm91dGUpID0gLTE7CiAjZW5kaWYKQEAgLTE1MCwy
OCArMTM1LDM5IEBAIHNjdHBfaW5pdCh2b2lkKQogCVNDVFBfQkFTRV9WQVIoY29ubl9vdXRwdXQp
ID0gY29ubl9vdXRwdXQ7CiAJU0NUUF9CQVNFX1ZBUihkZWJ1Z19wcmludGYpID0gZGVidWdfcHJp
bnRmOwogCVNDVFBfQkFTRV9WQVIoY3JjMzJjX29mZmxvYWRlZCkgPSAwOworCVNDVFBfQkFTRV9W
QVIoaXRlcmF0b3JfdGhyZWFkX3N0YXJ0ZWQpID0gMDsKKwlTQ1RQX0JBU0VfVkFSKHRpbWVyX3Ro
cmVhZF9zdGFydGVkKSA9IDA7CiAjZW5kaWYKLQlzY3RwX3BjYl9pbml0KCk7CiAjaWYgZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQotCXNjdHBfc3RhcnRfdGltZXIoKTsKKwlzY3RwX3BjYl9pbml0KHN0
YXJ0X3RocmVhZHMpOworCWlmIChzdGFydF90aHJlYWRzKSB7CisJCXNjdHBfc3RhcnRfdGltZXJf
dGhyZWFkKCk7CisJfQorI2Vsc2UKKwlzY3RwX3BjYl9pbml0KCk7CiAjZW5kaWYKICNpZiBkZWZp
bmVkKFNDVFBfUEFDS0VUX0xPR0dJTkcpCiAJU0NUUF9CQVNFX1ZBUihwYWNrZXRfbG9nX3dyaXRl
cnMpID0gMDsKIAlTQ1RQX0JBU0VfVkFSKHBhY2tldF9sb2dfZW5kKSA9IDA7CiAJbWVtc2V0KCZT
Q1RQX0JBU0VfVkFSKHBhY2tldF9sb2dfYnVmZmVyKSwgMCwgU0NUUF9QQUNLRVRfTE9HX1NJWkUp
OwogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJU0NUUF9CQVNFX1ZBUihzY3RwX21haW5fdGlt
ZXJfdGlja3MpID0gMDsKIAlzY3RwX3N0YXJ0X21haW5fdGltZXIoKTsKIAl0aW1lb3V0KHNjdHBf
ZGVsYXllZF9zdGFydHVwLCBOVUxMLCAxKTsKICNlbmRpZgorI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJU0NUUF9CQVNFX1ZBUihlaF90YWcpID0g
RVZFTlRIQU5ETEVSX1JFR0lTVEVSKHJ0X2FkZHJtc2csCisJICAgIHNjdHBfYWRkcl9jaGFuZ2Vf
ZXZlbnRfaGFuZGxlciwgTlVMTCwgRVZFTlRIQU5ETEVSX1BSSV9GSVJTVCk7CisjZW5kaWYKIH0K
IAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZmRlZiBWSU1BR0UKIHN0YXRpYyB2b2lkCiBzY3Rw
X2ZpbmlzaCh2b2lkICp1bnVzZWQgX191bnVzZWQpCiB7CisJRVZFTlRIQU5ETEVSX0RFUkVHSVNU
RVIocnRfYWRkcm1zZywgU0NUUF9CQVNFX1ZBUihlaF90YWcpKTsKIAlzY3RwX3BjYl9maW5pc2go
KTsKIH0KIFZORVRfU1lTVU5JTklUKHNjdHAsIFNJX1NVQl9QUk9UT19ET01BSU4sIFNJX09SREVS
X0ZPVVJUSCwgc2N0cF9maW5pc2gsIE5VTEwpOwpAQCAtMTgwLDcgKzE3Niw3IEBAIFZORVRfU1lT
VU5JTklUKHNjdHAsIFNJX1NVQl9QUk9UT19ET01BSU4sIFNJX09SREVSX0ZPVVJUSCwgc2N0cF9m
aW5pc2gsIE5VTEwpOwogdm9pZAogc2N0cF9maW5pc2godm9pZCkKIHsKLSNpZiBkZWZpbmVkKF9f
QVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKIAl1bnRpbWVvdXQoc2N0cF9kZWxheWVkX3N0YXJ0dXAsIE5VTEwpOwogCXNjdHBfb3Zlcl91
ZHBfc3RvcCgpOwogCXNjdHBfYWRkcmVzc19tb25pdG9yX3N0b3AoKTsKQEAgLTE5MCw1OSArMTg2
LDEwIEBAIHNjdHBfZmluaXNoKHZvaWQpCiAjaWYgZGVmaW5lZChJTkVUKSB8fCBkZWZpbmVkKElO
RVQ2KQogCXJlY3ZfdGhyZWFkX2Rlc3Ryb3koKTsKICNlbmRpZgotI2lmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX29zX1dpbmRvd3MpCi0jaWYgZGVmaW5lZChJTkVUKSB8fCBkZWZpbmVkKElORVQ2KQot
CWlmIChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yb3V0ZSkgIT0gLTEpIHsKLQkJcHRocmVhZF9q
b2luKFNDVFBfQkFTRV9WQVIocmVjdnRocmVhZHJvdXRlKSwgTlVMTCk7Ci0JfQotI2VuZGlmCi0j
ZW5kaWYKLSNpZmRlZiBJTkVUCi0JaWYgKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jhd3NjdHAp
ICE9IC0xKSB7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQotCQlXYWl0Rm9y
U2luZ2xlT2JqZWN0KFNDVFBfQkFTRV9WQVIocmVjdnRocmVhZHJhdyksIElORklOSVRFKTsKLQkJ
Q2xvc2VIYW5kbGUoU0NUUF9CQVNFX1ZBUihyZWN2dGhyZWFkcmF3KSk7Ci0jZWxzZQotCQlwdGhy
ZWFkX2pvaW4oU0NUUF9CQVNFX1ZBUihyZWN2dGhyZWFkcmF3KSwgTlVMTCk7Ci0jZW5kaWYKLQl9
Ci0JaWYgKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNjdHApICE9IC0xKSB7Ci0jaWYgZGVm
aW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQotCQlXYWl0Rm9yU2luZ2xlT2JqZWN0KFNDVFBf
QkFTRV9WQVIocmVjdnRocmVhZHVkcCksIElORklOSVRFKTsKLQkJQ2xvc2VIYW5kbGUoU0NUUF9C
QVNFX1ZBUihyZWN2dGhyZWFkdWRwKSk7Ci0jZWxzZQotCQlwdGhyZWFkX2pvaW4oU0NUUF9CQVNF
X1ZBUihyZWN2dGhyZWFkdWRwKSwgTlVMTCk7Ci0jZW5kaWYKLQl9Ci0jZW5kaWYKLSNpZmRlZiBJ
TkVUNgotCWlmIChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3RwNikgIT0gLTEpIHsKLSNp
ZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCi0JCVdhaXRGb3JTaW5nbGVPYmplY3Qo
U0NUUF9CQVNFX1ZBUihyZWN2dGhyZWFkcmF3NiksIElORklOSVRFKTsKLQkJQ2xvc2VIYW5kbGUo
U0NUUF9CQVNFX1ZBUihyZWN2dGhyZWFkcmF3NikpOwotI2Vsc2UKLQkJcHRocmVhZF9qb2luKFND
VFBfQkFTRV9WQVIocmVjdnRocmVhZHJhdzYpLCBOVUxMKTsKLSNlbmRpZgotCX0KLQlpZiAoU0NU
UF9CQVNFX1ZBUih1c2Vyc3BhY2VfdWRwc2N0cDYpICE9IC0xKSB7Ci0jaWYgZGVmaW5lZChfX1Vz
ZXJzcGFjZV9vc19XaW5kb3dzKQotCQlXYWl0Rm9yU2luZ2xlT2JqZWN0KFNDVFBfQkFTRV9WQVIo
cmVjdnRocmVhZHVkcDYpLCBJTkZJTklURSk7Ci0JCUNsb3NlSGFuZGxlKFNDVFBfQkFTRV9WQVIo
cmVjdnRocmVhZHVkcDYpKTsKLSNlbHNlCi0JCXB0aHJlYWRfam9pbihTQ1RQX0JBU0VfVkFSKHJl
Y3Z0aHJlYWR1ZHA2KSwgTlVMTCk7Ci0jZW5kaWYKLQl9Ci0jZW5kaWYKLQlhdG9taWNfY21wc2V0
X2ludCgmU0NUUF9CQVNFX1ZBUih0aW1lcl90aHJlYWRfc2hvdWxkX2V4aXQpLCAwLCAxKTsKLSNp
ZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCi0JV2FpdEZvclNpbmdsZU9iamVjdChT
Q1RQX0JBU0VfVkFSKHRpbWVyX3RocmVhZCksIElORklOSVRFKTsKLQlDbG9zZUhhbmRsZShTQ1RQ
X0JBU0VfVkFSKHRpbWVyX3RocmVhZCkpOwotI2Vsc2UKLQlwdGhyZWFkX2pvaW4oU0NUUF9CQVNF
X1ZBUih0aW1lcl90aHJlYWQpLCBOVUxMKTsKLSNlbmRpZgorCXNjdHBfc3RvcF90aW1lcl90aHJl
YWQoKTsKICNlbmRpZgogCXNjdHBfcGNiX2ZpbmlzaCgpOwotI2lmIGRlZmluZWQoX19XaW5kb3dz
X18pCisjaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJc2N0
cF9maW5pc2hfc3lzY3RscygpOwogI2VuZGlmCiB9CkBAIC0yODcsNyArMjM0LDEwIEBAIHNjdHBf
cGF0aG10dV9hZGp1c3RtZW50KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgdWludDE2X3Qgbnh0c3op
CiAJCQkJCQkgICAgICAgY2hrLT5yZWMuZGF0YS50c24pOwogCQkJCX0KIAkJCQkvKiBDbGVhciBh
bnkgdGltZSBzbyBOTyBSVFQgaXMgYmVpbmcgZG9uZSAqLwotCQkJCWNoay0+ZG9fcnR0ID0gMDsK
KwkJCQlpZiAoY2hrLT5kb19ydHQgPT0gMSkgeworCQkJCQljaGstPmRvX3J0dCA9IDA7CisJCQkJ
CWNoay0+d2hvVG8tPnJ0b19uZWVkZWQgPSAxOworCQkJCX0KIAkJCX0KIAkJfQogCX0KQEAgLTMw
NCw3ICsyNTQsNyBAQCBzY3RwX25vdGlmeShzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogICAgICAg
ICAgICAgdWludDE2X3QgaXBfbGVuLAogICAgICAgICAgICAgdWludDMyX3QgbmV4dF9tdHUpCiB7
Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcp
CisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJc3Ry
dWN0IHNvY2tldCAqc287CiAjZW5kaWYKIAlpbnQgdGltZXJfc3RvcHBlZDsKQEAgLTMyMSw5ICsy
NzEsNyBAQCBzY3RwX25vdGlmeShzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogCSAgICAoaWNtcF9j
b2RlID09IElDTVBfVU5SRUFDSF9JU09MQVRFRCkgfHwKIAkgICAgKGljbXBfY29kZSA9PSBJQ01Q
X1VOUkVBQ0hfTkVUX1BST0hJQikgfHwKIAkgICAgKGljbXBfY29kZSA9PSBJQ01QX1VOUkVBQ0hf
SE9TVF9QUk9ISUIpIHx8Ci0jaWYgZGVmaW5lZChfX1BhbmRhX18pCi0JICAgIChpY21wX2NvZGUg
PT0gSUNNUF9VTlJFQUNIX0FETUlOKSkgewotI2VsaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19O
ZXRCU0QpCisjaWYgZGVmaW5lZChfX05ldEJTRF9fKQogCSAgICAoaWNtcF9jb2RlID09IElDTVBf
VU5SRUFDSF9BRE1JTl9QUk9ISUJJVCkpIHsKICNlbHNlCiAJICAgIChpY21wX2NvZGUgPT0gSUNN
UF9VTlJFQUNIX0ZJTFRFUl9QUk9ISUIpKSB7CkBAIC0zNDIsNyArMjkwLDcgQEAgc2N0cF9ub3Rp
Znkoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJICAgIChpY21wX2NvZGUgPT0gSUNNUF9VTlJF
QUNIX1BPUlQpKSB7CiAJCS8qIFRyZWF0IGl0IGxpa2UgYW4gQUJPUlQuICovCiAJCXNjdHBfYWJv
cnRfbm90aWZpY2F0aW9uKHN0Y2IsIDEsIDAsIE5VTEwsIFNDVFBfU09fTk9UX0xPQ0tFRCk7Ci0j
aWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisj
aWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCXNvID0g
U0NUUF9JTlBfU08oaW5wKTsKIAkJYXRvbWljX2FkZF9pbnQoJnN0Y2ItPmFzb2MucmVmY250LCAx
KTsKIAkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwpAQCAtMzUyLDcgKzMwMCw3IEBAIHNjdHBfbm90
aWZ5KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAjZW5kaWYKIAkJKHZvaWQpc2N0cF9mcmVlX2Fz
c29jKGlucCwgc3RjYiwgU0NUUF9OT1JNQUxfUFJPQywKIAkJICAgICAgICAgICAgICAgICAgICAg
IFNDVFBfRlJPTV9TQ1RQX1VTUlJFUSArIFNDVFBfTE9DXzIpOwotI2lmIGRlZmluZWQoX19BUFBM
RV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBM
RV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28s
IDEpOwogCQkvKiBTQ1RQX1RDQl9VTkxPQ0soc3RjYik7IE1UOiBJIHRoaW5rIHRoaXMgaXMgbm90
IG5lZWRlZC4qLwogI2VuZGlmCkBAIC0zODYsNyArMzM0LDcgQEAgc2N0cF9ub3RpZnkoc3RydWN0
IHNjdHBfaW5wY2IgKmlucCwKIAkJfQogCQlpZiAobmV0LT5tdHUgPiBuZXh0X210dSkgewogCQkJ
bmV0LT5tdHUgPSBuZXh0X210dTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQlpZiAobmV0LT5w
b3J0KSB7CiAJCQkJc2N0cF9oY19zZXRfbXR1KCZuZXQtPnJvLl9sX2FkZHIsIGlucC0+ZmlibnVt
LCBuZXh0X210dSArIHNpemVvZihzdHJ1Y3QgdWRwaGRyKSk7CiAJCQl9IGVsc2UgewpAQCAtNDA5
LDE5ICszNTcsMTUgQEAgc2N0cF9ub3RpZnkoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIH0KICNl
bmRpZgogCi0jaWYgIWRlZmluZWQoX19QYW5kYV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZp
bmVkKF9fV2luZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiB2b2lkCi0jZWxz
ZQotdm9pZCAqCi0jZW5kaWYKICNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoQVBQ
TEVfTEVPUEFSRCkgJiYgIWRlZmluZWQoQVBQTEVfU05PV0xFT1BBUkQpICYmICFkZWZpbmVkKEFQ
UExFX0xJT04pICYmICFkZWZpbmVkKEFQUExFX01PVU5UQUlOTElPTikgJiYgIWRlZmluZWQoQVBQ
TEVfRUxDQVBJVEFOKQogc2N0cF9jdGxpbnB1dChpbnQgY21kLCBzdHJ1Y3Qgc29ja2FkZHIgKnNh
LCB2b2lkICp2aXAsIHN0cnVjdCBpZm5ldCAqaWZwIFNDVFBfVU5VU0VEKQogI2Vsc2UKIHNjdHBf
Y3RsaW5wdXQoaW50IGNtZCwgc3RydWN0IHNvY2thZGRyICpzYSwgdm9pZCAqdmlwKQogI2VuZGlm
CiB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCXN0cnVjdCBpcCAqb3V0ZXJfaXA7CiAjZW5kaWYK
IAlzdHJ1Y3QgaXAgKmlubmVyX2lwOwpAQCAtNDMwLDMzICszNzQsMjUgQEAgc2N0cF9jdGxpbnB1
dChpbnQgY21kLCBzdHJ1Y3Qgc29ja2FkZHIgKnNhLCB2b2lkICp2aXApCiAJc3RydWN0IHNjdHBf
aW5wY2IgKmlucDsKIAlzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2I7CiAJc3RydWN0IHNjdHBfbmV0cyAq
bmV0OwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzdHJ1Y3Qgc2N0cF9pbml0X2NodW5rICpjaDsK
ICNlbmRpZgogCXN0cnVjdCBzb2NrYWRkcl9pbiBzcmMsIGRzdDsKIAogCWlmIChzYS0+c2FfZmFt
aWx5ICE9IEFGX0lORVQgfHwKIAkgICAgKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilzYSktPnNpbl9h
ZGRyLnNfYWRkciA9PSBJTkFERFJfQU5ZKSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwg
ZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pCiAJCXJldHVybjsKLSNl
bHNlCi0JCXJldHVybiAoTlVMTCk7Ci0jZW5kaWYKIAl9CiAJaWYgKFBSQ19JU19SRURJUkVDVChj
bWQpKSB7CiAJCXZpcCA9IE5VTEw7CiAJfSBlbHNlIGlmICgodW5zaWduZWQpY21kID49IFBSQ19O
Q01EUyB8fCBpbmV0Y3RsZXJybWFwW2NtZF0gPT0gMCkgewotI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQogCQlyZXR1
cm47Ci0jZWxzZQotCQlyZXR1cm4gKE5VTEwpOwotI2VuZGlmCiAJfQogCWlmICh2aXAgIT0gTlVM
TCkgewogCQlpbm5lcl9pcCA9IChzdHJ1Y3QgaXAgKil2aXA7CiAJCWljbXAgPSAoc3RydWN0IGlj
bXAgKikoKGNhZGRyX3QpaW5uZXJfaXAgLQogCQkgICAgKHNpemVvZihzdHJ1Y3QgaWNtcCkgLSBz
aXplb2Yoc3RydWN0IGlwKSkpOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJb3V0ZXJfaXAgPSAo
c3RydWN0IGlwICopKChjYWRkcl90KWljbXAgLSBzaXplb2Yoc3RydWN0IGlwKSk7CiAjZW5kaWYK
IAkJc2ggPSAoc3RydWN0IHNjdHBoZHIgKikoKGNhZGRyX3QpaW5uZXJfaXAgKyAoaW5uZXJfaXAt
PmlwX2hsIDw8IDIpKTsKQEAgLTUwMCw3ICs0MzYsNyBAQCBzY3RwX2N0bGlucHV0KGludCBjbWQs
IHN0cnVjdCBzb2NrYWRkciAqc2EsIHZvaWQgKnZpcCkKIAkJCQkJcmV0dXJuOwogCQkJCX0KIAkJ
CX0gZWxzZSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCWlmIChudG9ocyhvdXRlcl9pcC0+
aXBfbGVuKSA+PQogCQkJCSAgICBzaXplb2Yoc3RydWN0IGlwKSArCiAJCQkJICAgIDggKyAoaW5u
ZXJfaXAtPmlwX2hsIDw8IDIpICsgMjApIHsKQEAgLTUyNywyMyArNDYzLDMxIEBAIHNjdHBfY3Rs
aW5wdXQoaW50IGNtZCwgc3RydWN0IHNvY2thZGRyICpzYSwgdm9pZCAqdmlwKQogCQkJc2N0cF9u
b3RpZnkoaW5wLCBzdGNiLCBuZXQsCiAJCQkgICAgICAgICAgICBpY21wLT5pY21wX3R5cGUsCiAJ
CQkgICAgICAgICAgICBpY21wLT5pY21wX2NvZGUsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
JiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gMTAwMDAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkgICAgICAgICAgICBudG9ocyhpbm5lcl9p
cC0+aXBfbGVuKSwKICNlbHNlCiAJCQkgICAgICAgICAgICBpbm5lcl9pcC0+aXBfbGVuLAogI2Vu
ZGlmCiAJCQkgICAgICAgICAgICAodWludDMyX3QpbnRvaHMoaWNtcC0+aWNtcF9uZXh0bXR1KSk7
Ci0JCX0gZWxzZSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNp
b24gPCA1MDAwMDAKLQkJCS8qCi0JCQkgKiBYWFggbXVzdCBiZSBmaXhlZCBmb3IgNS54IGFuZCBo
aWdoZXIsIGxlYXZlIGZvcgotCQkJICogNC54Ci0JCQkgKi8KLQkJCWlmIChQUkNfSVNfUkVESVJF
Q1QoY21kKSAmJiAoaW5wICE9IE5VTEwpKSB7Ci0JCQkJaW5fcnRjaGFuZ2UoKHN0cnVjdCBpbnBj
YiAqKWlucCwKLQkJCQkgICAgaW5ldGN0bGVycm1hcFtjbWRdKTsKKyNpZiBkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCisJCQlpZiAoIShzdGNiLT5zY3RwX2VwLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0Jf
RkxBR1NfU09DS0VUX0dPTkUpICYmCisJCQkgICAgKHN0Y2ItPnNjdHBfc29ja2V0ICE9IE5VTEwp
KSB7CisJCQkJc3RydWN0IHNvY2tldCAqdXBjYWxsX3NvY2tldDsKKworCQkJCXVwY2FsbF9zb2Nr
ZXQgPSBzdGNiLT5zY3RwX3NvY2tldDsKKwkJCQlTT0NLX0xPQ0sodXBjYWxsX3NvY2tldCk7CisJ
CQkJc29yZWYodXBjYWxsX3NvY2tldCk7CisJCQkJU09DS19VTkxPQ0sodXBjYWxsX3NvY2tldCk7
CisJCQkJaWYgKCh1cGNhbGxfc29ja2V0LT5zb191cGNhbGwgIT0gTlVMTCkgJiYKKwkJCQkgICAg
KHVwY2FsbF9zb2NrZXQtPnNvX2Vycm9yICE9IDApKSB7CisJCQkJCSgqdXBjYWxsX3NvY2tldC0+
c29fdXBjYWxsKSh1cGNhbGxfc29ja2V0LCB1cGNhbGxfc29ja2V0LT5zb191cGNhbGxhcmcsIE1f
Tk9XQUlUKTsKKwkJCQl9CisJCQkJQUNDRVBUX0xPQ0soKTsKKwkJCQlTT0NLX0xPQ0sodXBjYWxs
X3NvY2tldCk7CisJCQkJc29yZWxlKHVwY2FsbF9zb2NrZXQpOwogCQkJfQogI2VuZGlmCisJCX0g
ZWxzZSB7CiAJCQlpZiAoKHN0Y2IgPT0gTlVMTCkgJiYgKGlucCAhPSBOVUxMKSkgewogCQkJCS8q
IHJlZHVjZSByZWYtY291bnQgKi8KIAkJCQlTQ1RQX0lOUF9XTE9DSyhpbnApOwpAQCAtNTU1LDE2
ICs0OTksMTIgQEAgc2N0cF9jdGxpbnB1dChpbnQgY21kLCBzdHJ1Y3Qgc29ja2FkZHIgKnNhLCB2
b2lkICp2aXApCiAJCQl9CiAJCX0KIAl9Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVm
aW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pCiAJcmV0dXJuOwotI2Vsc2UK
LQlyZXR1cm4gKE5VTEwpOwotI2VuZGlmCiB9CiAjZW5kaWYKICNlbmRpZgogCi0jaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogc3RhdGljIGludAogc2N0cF9nZXRjcmVkKFNZU0NUTF9IQU5ETEVSX0FSR1Mp
CiB7CkBAIC01NzksMTQgKzUxOSw4IEBAIHNjdHBfZ2V0Y3JlZChTWVNDVExfSEFORExFUl9BUkdT
KQogCS8qIEZJWCwgZm9yIG5vbi1ic2QgaXMgdGhpcyByaWdodD8gKi8KIAl2cmZfaWQgPSBTQ1RQ
X0RFRkFVTFRfVlJGSUQ7CiAKLSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDYwMjAwMAogCWVycm9y
ID0gcHJpdl9jaGVjayhyZXEtPnRkLCBQUklWX05FVElORVRfR0VUQ1JFRCk7CiAKLSNlbGlmIF9f
RnJlZUJTRF92ZXJzaW9uID49IDUwMDAwMAotCWVycm9yID0gc3VzZXIocmVxLT50ZCk7Ci0jZWxz
ZQotCWVycm9yID0gc3VzZXIocmVxLT5wKTsKLSNlbmRpZgogCWlmIChlcnJvcikKIAkJcmV0dXJu
IChlcnJvcik7CiAKQEAgLTYzMSwyNyArNTY1LDMyIEBAIG91dDoKIAlyZXR1cm4gKGVycm9yKTsK
IH0KIAotU1lTQ1RMX1BST0MoX25ldF9pbmV0X3NjdHAsIE9JRF9BVVRPLCBnZXRjcmVkLCBDVExU
WVBFX09QQVFVRSB8IENUTEZMQUdfUlcsCi0gICAgMCwgMCwgc2N0cF9nZXRjcmVkLCAiUyx1Y3Jl
ZCIsICJHZXQgdGhlIHVjcmVkIG9mIGEgU0NUUCBjb25uZWN0aW9uIik7Ci0jZW5kaWYJCQkJLyog
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICovCitTWVNDVExfUFJPQyhfbmV0X2luZXRfc2N0cCwg
T0lEX0FVVE8sIGdldGNyZWQsCisgICAgQ1RMVFlQRV9PUEFRVUUgfCBDVExGTEFHX1JXIHwgQ1RM
RkxBR19ORUVER0lBTlQsCisgICAgMCwgMCwgc2N0cF9nZXRjcmVkLCAiUyx1Y3JlZCIsCisgICAg
IkdldCB0aGUgdWNyZWQgb2YgYSBTQ1RQIGNvbm5lY3Rpb24iKTsKKyNlbmRpZgogCiAKICNpZmRl
ZiBJTkVUCi0jaWYgZGVmaW5lZChfX1BhbmRhX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pIHx8
IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogaW50Ci0jZWxpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVC
U0RfdmVyc2lvbiA+IDY5MDAwMAorI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKIHN0YXRpYyB2
b2lkCiAjZWxzZQogc3RhdGljIGludAogI2VuZGlmCiBzY3RwX2Fib3J0KHN0cnVjdCBzb2NrZXQg
KnNvKQogeworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCisJc3RydWN0IGVwb2NoX3RyYWNrZXIgZXQ7CisjZW5kaWYKIAlzdHJ1Y3Qgc2N0cF9pbnBj
YiAqaW5wOwogCXVpbnQzMl90IGZsYWdzOwogCiAJaW5wID0gKHN0cnVjdCBzY3RwX2lucGNiICop
c28tPnNvX3BjYjsKIAlpZiAoaW5wID09IE5VTEwpIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDY5MDAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCXJldHVybjsKICNlbHNlCiAJCVNDVFBfTFRS
QUNFX0VSUl9SRVQoTlVMTCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBFSU5W
QUwpOwpAQCAtNjU5LDYgKzU5OCw5IEBAIHNjdHBfYWJvcnQoc3RydWN0IHNvY2tldCAqc28pCiAj
ZW5kaWYKIAl9CiAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQorCU5FVF9FUE9DSF9FTlRFUihldCk7CisjZW5kaWYKICBzY3RwX211c3RfdHJ5X2Fn
YWluOgogCWZsYWdzID0gaW5wLT5zY3RwX2ZsYWdzOwogI2lmZGVmIFNDVFBfTE9HX0NMT1NJTkcK
QEAgLTY3OCw3ICs2MjAsNyBAQCBzY3RwX2Fib3J0KHN0cnVjdCBzb2NrZXQgKnNvKQogCQkgKi8K
IAkJU0NUUF9TQl9DTEVBUihzby0+c29fcmN2KTsKIAotI2lmIGRlZmluZWQoX19BUFBMRV9fKQor
I2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlzby0+
c29fdXNlY291bnQtLTsKICNlbHNlCiAJCS8qIE5vdyBudWxsIG91dCB0aGUgcmVmZXJlbmNlLCB3
ZSBhcmUgY29tcGxldGVseSBkZXRhY2hlZC4gKi8KQEAgLTY5MSwyMyArNjMzLDI0IEBAIHNjdHBf
YWJvcnQoc3RydWN0IHNvY2tldCAqc28pCiAJCQlnb3RvIHNjdHBfbXVzdF90cnlfYWdhaW47CiAJ
CX0KIAl9Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPiA2
OTAwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQorCU5FVF9FUE9DSF9FWElUKGV0KTsKIAlyZXR1cm47CiAjZWxzZQogCXJldHVybiAoMCk7CiAj
ZW5kaWYKIH0KIAotI2lmIGRlZmluZWQoX19QYW5kYV9fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCisjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogaW50CiAjZWxzZQogc3RhdGljIGludAog
I2VuZGlmCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0g
NTAwMDAwCi1zY3RwX2F0dGFjaChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IHByb3RvIFNDVFBfVU5V
U0VELCBzdHJ1Y3QgdGhyZWFkICpwIFNDVFBfVU5VU0VEKQotI2VsaWYgZGVmaW5lZChfX1BhbmRh
X18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiBzY3RwX2F0dGFjaChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IHByb3RvIFNDVFBfVU5VU0VELCB1
aW50MzJfdCB2cmZfaWQpCi0jZWxpZiBkZWZpbmVkKF9fV2luZG93c19fKQorI2VsaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykKK3NjdHBfYXR0YWNoKHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgcHJvdG8g
U0NUUF9VTlVTRUQsIHN0cnVjdCB0aHJlYWQgKnAgU0NUUF9VTlVTRUQpCisjZWxpZiBkZWZpbmVk
KF9XSU4zMikKIHNjdHBfYXR0YWNoKHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgcHJvdG8gU0NUUF9V
TlVTRUQsIFBLVEhSRUFEIHAgU0NUUF9VTlVTRUQpCiAjZWxzZQogc2N0cF9hdHRhY2goc3RydWN0
IHNvY2tldCAqc28sIGludCBwcm90byBTQ1RQX1VOVVNFRCwgc3RydWN0IHByb2MgKnAgU0NUUF9V
TlVTRUQpCkBAIC03MTYsNyArNjU5LDcgQEAgc2N0cF9hdHRhY2goc3RydWN0IHNvY2tldCAqc28s
IGludCBwcm90byBTQ1RQX1VOVVNFRCwgc3RydWN0IHByb2MgKnAgU0NUUF9VTlVTRUQKIAlzdHJ1
Y3Qgc2N0cF9pbnBjYiAqaW5wOwogCXN0cnVjdCBpbnBjYiAqaXBfaW5wOwogCWludCBlcnJvcjsK
LSNpZiAhZGVmaW5lZChfX1BhbmRhX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaWYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAl1aW50MzJfdCB2cmZfaWQgPSBTQ1RQX0RFRkFVTFRf
VlJGSUQ7CiAjZW5kaWYKIApAQCAtNzQ1LDE4ICs2ODgsMTggQEAgc2N0cF9hdHRhY2goc3RydWN0
IHNvY2tldCAqc28sIGludCBwcm90byBTQ1RQX1VOVVNFRCwgc3RydWN0IHByb2MgKnAgU0NUUF9V
TlVTRUQKIAlyZXR1cm4gKDApOwogfQogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19G
cmVlQlNEX3ZlcnNpb24gPj0gNTAwMDAwCisjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQoraW50
CitzY3RwX2JpbmQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqYWRkcikgewor
CXZvaWQgKnAgPSBOVUxMOworI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKIHN0YXRpYyBpbnQK
IHNjdHBfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRyLCBzdHJ1
Y3QgdGhyZWFkICpwKQogewotI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChf
X0FQUExFX18pCisjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKIHN0YXRpYyBpbnQKIHNjdHBfYmlu
ZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRyLCBzdHJ1Y3QgcHJvYyAq
cCkgewotI2VsaWYgZGVmaW5lZChfX1BhbmRhX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
LWludAotc2N0cF9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIp
IHsKLQl2b2lkICpwID0gTlVMTDsKLSNlbGlmIGRlZmluZWQoX19XaW5kb3dzX18pCisjZWxpZiBk
ZWZpbmVkKF9XSU4zMikKIHN0YXRpYyBpbnQKIHNjdHBfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywg
c3RydWN0IHNvY2thZGRyICphZGRyLCBQS1RIUkVBRCBwKSB7CiAjZWxzZQpAQCAtODQ4LDEwICs3
OTEsMTMgQEAgc2N0cGNvbm5fYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRy
ICphZGRyKQogfQogCiAjZW5kaWYKLSNpZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVl
QlNEX3ZlcnNpb24gPiA2OTAwMDApIHx8IGRlZmluZWQoX19XaW5kb3dzX18pIHx8IGRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9XSU4z
MikgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogdm9pZAogc2N0cF9jbG9zZShzdHJ1Y3Qgc29j
a2V0ICpzbykKIHsKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQorCXN0cnVjdCBlcG9jaF90cmFja2VyIGV0OworI2VuZGlmCiAJc3RydWN0IHNjdHBf
aW5wY2IgKmlucDsKIAl1aW50MzJfdCBmbGFnczsKIApAQCAtODYyLDYgKzgwOCw5IEBAIHNjdHBf
Y2xvc2Uoc3RydWN0IHNvY2tldCAqc28pCiAJLyogSW5mb3JtIGFsbCB0aGUgbG93ZXIgbGF5ZXIg
YXNzb2MgdGhhdCB3ZQogCSAqIGFyZSBkb25lLgogCSAqLworI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJTkVUX0VQT0NIX0VOVEVSKGV0KTsKKyNl
bmRpZgogIHNjdHBfbXVzdF90cnlfYWdhaW46CiAJZmxhZ3MgPSBpbnAtPnNjdHBfZmxhZ3M7CiAj
aWZkZWYgU0NUUF9MT0dfQ0xPU0lORwpAQCAtODk4LDcgKzg0Nyw3IEBAIHNjdHBfY2xvc2Uoc3Ry
dWN0IHNvY2tldCAqc28pCiAJCSAqLwogCQlTQ1RQX1NCX0NMRUFSKHNvLT5zb19yY3YpOwogCi0j
aWYgIWRlZmluZWQoX19BUFBMRV9fKQorI2lmICEoZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pKQogCQkvKiBOb3cgbnVsbCBvdXQgdGhlIHJlZmVyZW5jZSwgd2Ug
YXJlIGNvbXBsZXRlbHkgZGV0YWNoZWQuICovCiAJCXNvLT5zb19wY2IgPSBOVUxMOwogI2VuZGlm
CkBAIC05MDksNiArODU4LDkgQEAgc2N0cF9jbG9zZShzdHJ1Y3Qgc29ja2V0ICpzbykKIAkJCWdv
dG8gc2N0cF9tdXN0X3RyeV9hZ2FpbjsKIAkJfQogCX0KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCU5FVF9FUE9DSF9FWElUKGV0KTsKKyNlbmRp
ZgogCXJldHVybjsKIH0KIApAQCAtOTIzLDcgKzg3NSw3IEBAIHNjdHBfZGV0YWNoKHN0cnVjdCBz
b2NrZXQgKnNvKQogCiAJaW5wID0gKHN0cnVjdCBzY3RwX2lucGNiICopc28tPnNvX3BjYjsKIAlp
ZiAoaW5wID09IE5VTEwpIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0Rf
dmVyc2lvbiA+IDY5MDAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAJCXJldHVybjsKICNlbHNlCiAJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5w
LCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIEVJTlZBTCk7CkBAIC05NjQsNyAr
OTE2LDcgQEAgc2N0cF9kZXRhY2goc3RydWN0IHNvY2tldCAqc28pCiAJCSAqIGhlcmUgZm9yIHRo
ZSBhY2NvdW50aW5nL3NlbGVjdC4KIAkJICovCiAJCVNDVFBfU0JfQ0xFQVIoc28tPnNvX3Jjdik7
Ci0jaWYgIWRlZmluZWQoX19BUFBMRV9fKQorI2lmICEoZGVmaW5lZChfX0FQUExFX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pKQogCQkvKiBOb3cgZGlzY29ubmVjdCAqLwogCQlzby0+c29f
cGNiID0gTlVMTDsKICNlbmRpZgpAQCAtOTc0LDcgKzkyNiw3IEBAIHNjdHBfZGV0YWNoKHN0cnVj
dCBzb2NrZXQgKnNvKQogCQkJZ290byBzY3RwX211c3RfdHJ5X2FnYWluOwogCQl9CiAJfQotI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID4gNjkwMDAwCisjaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlyZXR1cm47
CiAjZWxzZQogCXJldHVybiAoMCk7CkBAIC05ODUsOSArOTM3LDkgQEAgc2N0cF9kZXRhY2goc3Ry
dWN0IHNvY2tldCAqc28pCiAjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogLyogX19Vc2Vyc3Bh
Y2VfXyBpcyBub3QgY2FsbGluZyBzY3RwX3NlbmRtICovCiAjZW5kaWYKLSNpZiAhKGRlZmluZWQo
X19QYW5kYV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKSkKKyNpZiAhKGRlZmluZWQoX1dJTjMy
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkKIGludAotI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBzY3RwX3NlbmRtKHN0cnVjdCBzb2NrZXQg
KnNvLCBpbnQgZmxhZ3MsIHN0cnVjdCBtYnVmICptLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsCiAg
ICAgc3RydWN0IG1idWYgKmNvbnRyb2wsIHN0cnVjdCB0aHJlYWQgKnApOwogCkBAIC05OTgsNyAr
OTUwLDcgQEAgc2N0cF9zZW5kbShzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IGZsYWdzLCBzdHJ1Y3Qg
bWJ1ZiAqbSwgc3RydWN0IHNvY2thZGRyICphZGRyLAogI2VuZGlmCiAKIGludAotI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAwMAorI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBzY3RwX3NlbmRtKHN0
cnVjdCBzb2NrZXQgKnNvLCBpbnQgZmxhZ3MsIHN0cnVjdCBtYnVmICptLCBzdHJ1Y3Qgc29ja2Fk
ZHIgKmFkZHIsCiAgICAgc3RydWN0IG1idWYgKmNvbnRyb2wsIHN0cnVjdCB0aHJlYWQgKnApCiB7
CkBAIC0xMDUyLDcgKzEwMDQsNiBAQCBjb25uZWN0ZWRfdHlwZToKIAkvKiBub3cgd2hhdCBhYm91
dCBjb250cm9sICovCiAJaWYgKGNvbnRyb2wpIHsKIAkJaWYgKGlucC0+Y29udHJvbCkgewotCQkJ
U0NUUF9QUklOVEYoImh1aD8gY29udHJvbCBzZXQ/XG4iKTsKIAkJCXNjdHBfbV9mcmVlbShpbnAt
PmNvbnRyb2wpOwogCQkJaW5wLT5jb250cm9sID0gTlVMTDsKIAkJfQpAQCAtMTA2Niw3ICsxMDE3
LDcgQEAgY29ubmVjdGVkX3R5cGU6CiAJCWlucC0+cGt0X2xhc3QgPSBpbnAtPnBrdCA9IG07CiAJ
fQogCWlmICgKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykK
KyNpZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCS8qIEZyZWVCU0QgdXNlcyBhIGZsYWcgcGFzc2VkICovCiAJ
ICAgICgoZmxhZ3MgJiBQUlVTX01PUkVUT0NPTUUpID09IDApCiAjZWxzZQpAQCAtMTA4Miw5ICsx
MDMzLDE4IEBAIGNvbm5lY3RlZF90eXBlOgogCQkgKiBkZWZpbml0aW9ucykgYnV0IHRoaXMgaXMg
bm90IGFkdmlzYWJsZS4gVGhpcyBjb2RlIGlzIHVzZWQKIAkJICogYnkgRnJlZUJTRCB3aGVuIHNl
bmRpbmcgYSBmaWxlIHdpdGggc2VuZGZpbGUoKSB0aG91Z2guCiAJCSAqLworI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCXN0cnVjdCBlcG9jaF90
cmFja2VyIGV0OworI2VuZGlmCiAJCWludCByZXQ7CiAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCU5FVF9FUE9DSF9FTlRFUihldCk7CisjZW5k
aWYKIAkJcmV0ID0gc2N0cF9vdXRwdXQoaW5wLCBpbnAtPnBrdCwgYWRkciwgaW5wLT5jb250cm9s
LCBwLCBmbGFncyk7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKKwlORVRfRVBPQ0hfRVhJVChldCk7CisjZW5kaWYKIAkJaW5wLT5wa3QgPSBOVUxM
OwogCQlpbnAtPmNvbnRyb2wgPSBOVUxMOwogCQlyZXR1cm4gKHJldCk7CkBAIC0xMTEyLDYgKzEw
NzIsOSBAQCBzY3RwX2Rpc2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28pCiAJCQlTQ1RQX0lOUF9S
VU5MT0NLKGlucCk7CiAJCQlyZXR1cm4gKDApOwogCQl9IGVsc2UgeworI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQlzdHJ1Y3QgZXBvY2hfdHJh
Y2tlciBldDsKKyNlbmRpZgogCQkJc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2M7CiAJCQlz
dHJ1Y3Qgc2N0cF90Y2IgKnN0Y2I7CiAKQEAgLTExMjksNiArMTA5Miw5IEBAIHNjdHBfZGlzY29u
bmVjdChzdHJ1Y3Qgc29ja2V0ICpzbykKIAkJCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CiAJCQkJ
cmV0dXJuICgwKTsKIAkJCX0KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQorCQkJTkVUX0VQT0NIX0VOVEVSKGV0KTsKKyNlbmRpZgogI2lmIGRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKIAkJCWlmICgoKHNvLT5zb19vcHRpb25zICYgU0NUUF9TT19MSU5H
RVIpICYmCiAJCQkgICAgIChzby0+c29fbGluZ2VyID09IDApKSB8fApAQCAtMTEzOCw4ICsxMTA0
LDcgQEAgc2N0cF9kaXNjb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvKQogCQkJICAgICAoc28tPnNv
X2xpbmdlciA9PSAwKSkgfHwKIAkJCSAgICAoc28tPnNvX3Jjdi5zYl9jYyA+IDApKSB7CiAjZW5k
aWYKLQkJCQlpZiAoU0NUUF9HRVRfU1RBVEUoYXNvYykgIT0KLQkJCQkgICAgU0NUUF9TVEFURV9D
T09LSUVfV0FJVCkgeworCQkJCWlmIChTQ1RQX0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQX1NUQVRF
X0NPT0tJRV9XQUlUKSB7CiAJCQkJCS8qIExlZnQgd2l0aCBEYXRhIHVucmVhZCAqLwogCQkJCQlz
dHJ1Y3QgbWJ1ZiAqb3BfZXJyOwogCkBAIC0xMTQ4LDEzICsxMTEzLDE2IEBAIHNjdHBfZGlzY29u
bmVjdChzdHJ1Y3Qgc29ja2V0ICpzbykKIAkJCQkJU0NUUF9TVEFUX0lOQ1JfQ09VTlRFUjMyKHNj
dHBzX2Fib3J0ZWQpOwogCQkJCX0KIAkJCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7Ci0JCQkJaWYg
KChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9PUEVOKSB8fAotCQkJ
CSAgICAoU0NUUF9HRVRfU1RBVEUoJnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05f
UkVDRUlWRUQpKSB7CisJCQkJaWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRF
X09QRU4pIHx8CisJCQkJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NI
VVRET1dOX1JFQ0VJVkVEKSkgewogCQkJCQlTQ1RQX1NUQVRfREVDUl9HQVVHRTMyKHNjdHBzX2N1
cnJlc3RhYik7CiAJCQkJfQogCQkJCSh2b2lkKXNjdHBfZnJlZV9hc3NvYyhpbnAsIHN0Y2IsIFND
VFBfTk9STUFMX1BST0MsCiAJCQkJICAgICAgICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQ
X1VTUlJFUSArIFNDVFBfTE9DXzMpOwogCQkJCS8qIE5vIHVubG9jayB0Y2IgYXNzb2MgaXMgZ29u
ZSAqLworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CisJCQkJTkVUX0VQT0NIX0VYSVQoZXQpOworI2VuZGlmCiAJCQkJcmV0dXJuICgwKTsKIAkJCX0K
IAkJCWlmIChUQUlMUV9FTVBUWSgmYXNvYy0+c2VuZF9xdWV1ZSkgJiYKQEAgLTExNjQsMTcgKzEx
MzIsMTYgQEAgc2N0cF9kaXNjb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvKQogCQkJCWlmICgoKmFz
b2MtPnNzX2Z1bmN0aW9ucy5zY3RwX3NzX2lzX3VzZXJfbXNnc19pbmNvbXBsZXRlKShzdGNiLCBh
c29jKSkgewogCQkJCQlnb3RvIGFib3J0X2FueXdheTsKIAkJCQl9Ci0JCQkJaWYgKChTQ1RQX0dF
VF9TVEFURShhc29jKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpICYmCi0JCQkJICAgIChT
Q1RQX0dFVF9TVEFURShhc29jKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX0FDS19TRU5UKSkgewor
CQkJCWlmICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9TRU5U
KSAmJgorCQkJCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9TVEFURV9TSFVURE9X
Tl9BQ0tfU0VOVCkpIHsKIAkJCQkJLyogb25seSBzZW5kIFNIVVRET1dOIDFzdCB0aW1lIHRocnUg
Ki8KIAkJCQkJc3RydWN0IHNjdHBfbmV0cyAqbmV0cDsKIAotCQkJCQlpZiAoKFNDVFBfR0VUX1NU
QVRFKGFzb2MpID09IFNDVFBfU1RBVEVfT1BFTikgfHwKLQkJCQkJICAgIChTQ1RQX0dFVF9TVEFU
RShhc29jKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgeworCQkJCQlpZiAoKFND
VFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfT1BFTikgfHwKKwkJCQkJICAgIChTQ1RQ
X0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgewogCQkJ
CQkJU0NUUF9TVEFUX0RFQ1JfR0FVR0UzMihzY3Rwc19jdXJyZXN0YWIpOwogCQkJCQl9Ci0JCQkJ
CVNDVFBfU0VUX1NUQVRFKGFzb2MsIFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCk7Ci0JCQkJCVND
VFBfQ0xFQVJfU1VCU1RBVEUoYXNvYywgU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HKTsKKwkJ
CQkJU0NUUF9TRVRfU1RBVEUoc3RjYiwgU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKTsKIAkJCQkJ
c2N0cF9zdG9wX3RpbWVyc19mb3Jfc2h1dGRvd24oc3RjYik7CiAJCQkJCWlmIChzdGNiLT5hc29j
LmFsdGVybmF0ZSkgewogCQkJCQkJbmV0cCA9IHN0Y2ItPmFzb2MuYWx0ZXJuYXRlOwpAQCAtMTE4
Myw5ICsxMTUwLDkgQEAgc2N0cF9kaXNjb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvKQogCQkJCQl9
CiAJCQkJCXNjdHBfc2VuZF9zaHV0ZG93bihzdGNiLG5ldHApOwogCQkJCQlzY3RwX3RpbWVyX3N0
YXJ0KFNDVFBfVElNRVJfVFlQRV9TSFVURE9XTiwKLQkJCQkJCQkgc3RjYi0+c2N0cF9lcCwgc3Rj
YiwgbmV0cCk7CisJCQkJCSAgICAgICAgICAgICAgICAgc3RjYi0+c2N0cF9lcCwgc3RjYiwgbmV0
cCk7CiAJCQkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NIVVRET1dOR1VBUkQs
Ci0JCQkJCQkJIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIG5ldHApOworCQkJCQkgICAgICAgICAgICAg
ICAgIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIE5VTEwpOwogCQkJCQlzY3RwX2NodW5rX291dHB1dChz
dGNiLT5zY3RwX2VwLCBzdGNiLCBTQ1RQX09VVFBVVF9GUk9NX1QzLCBTQ1RQX1NPX0xPQ0tFRCk7
CiAJCQkJfQogCQkJfSBlbHNlIHsKQEAgLTExOTksMTggKzExNjYsMTAgQEAgc2N0cF9kaXNjb25u
ZWN0KHN0cnVjdCBzb2NrZXQgKnNvKQogCQkJCSAqIHdlIHdpbGwgYWxsb3cgdXNlciBkYXRhIHRv
IGJlIHNlbnQgZmlyc3QKIAkJCQkgKiBhbmQgbW92ZSB0byBTSFVURE9XTi1QRU5ESU5HCiAJCQkJ
ICovCi0JCQkJc3RydWN0IHNjdHBfbmV0cyAqbmV0cDsKLQkJCQlpZiAoc3RjYi0+YXNvYy5hbHRl
cm5hdGUpIHsKLQkJCQkJbmV0cCA9IHN0Y2ItPmFzb2MuYWx0ZXJuYXRlOwotCQkJCX0gZWxzZSB7
Ci0JCQkJCW5ldHAgPSBzdGNiLT5hc29jLnByaW1hcnlfZGVzdGluYXRpb247Ci0JCQkJfQotCi0J
CQkJYXNvYy0+c3RhdGUgfD0gU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HOwotCQkJCXNjdHBf
dGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NIVVRET1dOR1VBUkQsIHN0Y2ItPnNjdHBfZXAs
IHN0Y2IsCi0JCQkJCQkgbmV0cCk7CisJCQkJU0NUUF9BRERfU1VCU1RBVEUoc3RjYiwgU0NUUF9T
VEFURV9TSFVURE9XTl9QRU5ESU5HKTsKKwkJCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJf
VFlQRV9TSFVURE9XTkdVQVJELCBzdGNiLT5zY3RwX2VwLCBzdGNiLCBOVUxMKTsKIAkJCQlpZiAo
KCphc29jLT5zc19mdW5jdGlvbnMuc2N0cF9zc19pc191c2VyX21zZ3NfaW5jb21wbGV0ZSkoc3Rj
YiwgYXNvYykpIHsKLQkJCQkJYXNvYy0+c3RhdGUgfD0gU0NUUF9TVEFURV9QQVJUSUFMX01TR19M
RUZUOworCQkJCQlTQ1RQX0FERF9TVUJTVEFURShzdGNiLCBTQ1RQX1NUQVRFX1BBUlRJQUxfTVNH
X0xFRlQpOwogCQkJCX0KIAkJCQlpZiAoVEFJTFFfRU1QVFkoJmFzb2MtPnNlbmRfcXVldWUpICYm
CiAJCQkJICAgIFRBSUxRX0VNUFRZKCZhc29jLT5zZW50X3F1ZXVlKSAmJgpAQCAtMTIyMSwxOSAr
MTE4MCwyNSBAQCBzY3RwX2Rpc2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28pCiAJCQkJCXN0Y2It
PnNjdHBfZXAtPmxhc3RfYWJvcnRfY29kZSA9IFNDVFBfRlJPTV9TQ1RQX1VTUlJFUSArIFNDVFBf
TE9DXzQ7CiAJCQkJCXNjdHBfc2VuZF9hYm9ydF90Y2Ioc3RjYiwgb3BfZXJyLCBTQ1RQX1NPX0xP
Q0tFRCk7CiAJCQkJCVNDVFBfU1RBVF9JTkNSX0NPVU5URVIzMihzY3Rwc19hYm9ydGVkKTsKLQkJ
CQkJaWYgKChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9PUEVOKSB8
fAotCQkJCQkgICAgKFNDVFBfR0VUX1NUQVRFKCZzdGNiLT5hc29jKSA9PSBTQ1RQX1NUQVRFX1NI
VVRET1dOX1JFQ0VJVkVEKSkgeworCQkJCQlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFND
VFBfU1RBVEVfT1BFTikgfHwKKwkJCQkJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQ
X1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgewogCQkJCQkJU0NUUF9TVEFUX0RFQ1JfR0FVR0Uz
MihzY3Rwc19jdXJyZXN0YWIpOwogCQkJCQl9CiAJCQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsK
IAkJCQkJKHZvaWQpc2N0cF9mcmVlX2Fzc29jKGlucCwgc3RjYiwgU0NUUF9OT1JNQUxfUFJPQywK
IAkJCQkJICAgICAgICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX1VTUlJFUSArIFNDVFBf
TE9DXzUpOworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCisJCQkJCU5FVF9FUE9DSF9FWElUKGV0KTsKKyNlbmRpZgogCQkJCQlyZXR1cm4gKDApOwog
CQkJCX0gZWxzZSB7CiAJCQkJCXNjdHBfY2h1bmtfb3V0cHV0KGlucCwgc3RjYiwgU0NUUF9PVVRQ
VVRfRlJPTV9DTE9TSU5HLCBTQ1RQX1NPX0xPQ0tFRCk7CiAJCQkJfQogCQkJfQogCQkJc29pc2Rp
c2Nvbm5lY3Rpbmcoc28pOworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCisJCQlORVRfRVBPQ0hfRVhJVChldCk7CisjZW5kaWYKIAkJCVNDVFBfVENC
X1VOTE9DSyhzdGNiKTsKIAkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKIAkJCXJldHVybiAoMCk7
CkBAIC0xMjQ3LDcgKzEyMTIsNyBAQCBzY3RwX2Rpc2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28p
CiAJfQogfQogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX1dpbmRvd3Nf
XykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8
IGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBpbnQKIHNjdHBfZmx1
c2goc3RydWN0IHNvY2tldCAqc28sIGludCBob3cpCiB7CkBAIC0xMzEzLDcgKzEyNzgsNyBAQCBz
Y3RwX3NodXRkb3duKHN0cnVjdCBzb2NrZXQgKnNvKQogCWlmICghKChpbnAtPnNjdHBfZmxhZ3Mg
JiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCSAgICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBT
Q1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSkpIHsKIAkJLyogUmVzdG9yZSB0aGUgZmxhZ3MgdGhh
dCB0aGUgc29zaHV0ZG93biB0b29rIGF3YXkuICovCi0jaWYgKGRlZmluZWQoX19GcmVlQlNEX18p
ICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMjExNSkgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykK
KyNpZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfV0lOMzIpKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogCQlTT0NLQlVGX0xPQ0soJnNvLT5zb19yY3YpOwogCQlzby0+c29f
cmN2LnNiX3N0YXRlICY9IH5TQlNfQ0FOVFJDVk1PUkU7CiAJCVNPQ0tCVUZfVU5MT0NLKCZzby0+
c29fcmN2KTsKQEAgLTEzMzIsNiArMTI5Nyw5IEBAIHNjdHBfc2h1dGRvd24oc3RydWN0IHNvY2tl
dCAqc28pCiAJCSAqIGEgU0hVVF9XUiBvciBTSFVUX1JEV1IuCiAJCSAqIFRoaXMgbWVhbnMgd2Ug
cHV0IHRoZSBzaHV0ZG93biBmbGFnIGFnYWluc3QgaXQuCiAJCSAqLworI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCXN0cnVjdCBlcG9jaF90cmFj
a2VyIGV0OworI2VuZGlmCiAJCXN0cnVjdCBzY3RwX3RjYiAqc3RjYjsKIAkJc3RydWN0IHNjdHBf
YXNzb2NpYXRpb24gKmFzb2M7CiAJCXN0cnVjdCBzY3RwX25ldHMgKm5ldHA7CkBAIC0xMzYwLDkg
KzEzMjgsOSBAQCBzY3RwX3NodXRkb3duKHN0cnVjdCBzb2NrZXQgKnNvKQogCQkJU0NUUF9JTlBf
UlVOTE9DSyhpbnApOwogCQkJcmV0dXJuICgwKTsKIAkJfQotCQlpZiAoKFNDVFBfR0VUX1NUQVRF
KGFzb2MpICE9IFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQpICYmCi0JCSAgICAoU0NUUF9HRVRfU1RB
VEUoYXNvYykgIT0gU0NUUF9TVEFURV9DT09LSUVfRUNIT0VEKSAmJgotCQkgICAgKFNDVFBfR0VU
X1NUQVRFKGFzb2MpICE9IFNDVFBfU1RBVEVfT1BFTikpIHsKKwkJaWYgKChTQ1RQX0dFVF9TVEFU
RShzdGNiKSAhPSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSAmJgorCQkgICAgKFNDVFBfR0VUX1NU
QVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCkgJiYKKwkJICAgIChTQ1RQX0dF
VF9TVEFURShzdGNiKSAhPSBTQ1RQX1NUQVRFX09QRU4pKSB7CiAJCQkvKiBJZiB3ZSBhcmUgbm90
IGluIG9yIGJlZm9yZSBFU1RBQkxJU0hFRCwgdGhlcmUgaXMKIAkJCSAqIG5vIHByb3RvY29sIGFj
dGlvbiByZXF1aXJlZC4KIAkJCSAqLwpAQCAtMTM3MCwxMiArMTMzOCwxNSBAQCBzY3RwX3NodXRk
b3duKHN0cnVjdCBzb2NrZXQgKnNvKQogCQkJU0NUUF9JTlBfUlVOTE9DSyhpbnApOwogCQkJcmV0
dXJuICgwKTsKIAkJfQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCisJCU5FVF9FUE9DSF9FTlRFUihldCk7CisjZW5kaWYKIAkJaWYgKHN0Y2ItPmFz
b2MuYWx0ZXJuYXRlKSB7CiAJCQluZXRwID0gc3RjYi0+YXNvYy5hbHRlcm5hdGU7CiAJCX0gZWxz
ZSB7CiAJCQluZXRwID0gc3RjYi0+YXNvYy5wcmltYXJ5X2Rlc3RpbmF0aW9uOwogCQl9Ci0JCWlm
ICgoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9PUEVOKSAmJgorCQlpZiAoKFND
VFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfT1BFTikgJiYKIAkJICAgIFRBSUxRX0VN
UFRZKCZhc29jLT5zZW5kX3F1ZXVlKSAmJgogCQkgICAgVEFJTFFfRU1QVFkoJmFzb2MtPnNlbnRf
cXVldWUpICYmCiAJCSAgICAoYXNvYy0+c3RyZWFtX3F1ZXVlX2NudCA9PSAwKSkgewpAQCAtMTM4
NCw4ICsxMzU1LDcgQEAgc2N0cF9zaHV0ZG93bihzdHJ1Y3Qgc29ja2V0ICpzbykKIAkJCX0KIAkJ
CS8qIHRoZXJlIGlzIG5vdGhpbmcgcXVldWVkIHRvIHNlbmQsIHNvIEknbSBkb25lLi4uICovCiAJ
CQlTQ1RQX1NUQVRfREVDUl9HQVVHRTMyKHNjdHBzX2N1cnJlc3RhYik7Ci0JCQlTQ1RQX1NFVF9T
VEFURShhc29jLCBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpOwotCQkJU0NUUF9DTEVBUl9TVUJT
VEFURShhc29jLCBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJTkcpOworCQkJU0NUUF9TRVRfU1RB
VEUoc3RjYiwgU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKTsKIAkJCXNjdHBfc3RvcF90aW1lcnNf
Zm9yX3NodXRkb3duKHN0Y2IpOwogCQkJc2N0cF9zZW5kX3NodXRkb3duKHN0Y2IsIG5ldHApOwog
CQkJc2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfU0hVVERPV04sCkBAIC0xMzk1LDkg
KzEzNjUsOSBAQCBzY3RwX3NodXRkb3duKHN0cnVjdCBzb2NrZXQgKnNvKQogCQkJICogV2Ugc3Rp
bGwgZ290IChvciBqdXN0IGdvdCkgZGF0YSB0byBzZW5kLCBzbyBzZXQKIAkJCSAqIFNIVVRET1dO
X1BFTkRJTkcuCiAJCQkgKi8KLQkJCVNDVFBfQUREX1NVQlNUQVRFKGFzb2MsIFNDVFBfU1RBVEVf
U0hVVERPV05fUEVORElORyk7CisJCQlTQ1RQX0FERF9TVUJTVEFURShzdGNiLCBTQ1RQX1NUQVRF
X1NIVVRET1dOX1BFTkRJTkcpOwogCQkJaWYgKCgqYXNvYy0+c3NfZnVuY3Rpb25zLnNjdHBfc3Nf
aXNfdXNlcl9tc2dzX2luY29tcGxldGUpKHN0Y2IsIGFzb2MpKSB7Ci0JCQkJU0NUUF9BRERfU1VC
U1RBVEUoYXNvYywgU0NUUF9TVEFURV9QQVJUSUFMX01TR19MRUZUKTsKKwkJCQlTQ1RQX0FERF9T
VUJTVEFURShzdGNiLCBTQ1RQX1NUQVRFX1BBUlRJQUxfTVNHX0xFRlQpOwogCQkJfQogCQkJaWYg
KFRBSUxRX0VNUFRZKCZhc29jLT5zZW5kX3F1ZXVlKSAmJgogCQkJICAgIFRBSUxRX0VNUFRZKCZh
c29jLT5zZW50X3F1ZXVlKSAmJgpAQCAtMTQwNiwxNyArMTM3NiwyMyBAQCBzY3RwX3NodXRkb3du
KHN0cnVjdCBzb2NrZXQgKnNvKQogCQkJYWJvcnRfYW55d2F5OgogCQkJCW9wX2VyciA9IHNjdHBf
Z2VuZXJhdGVfY2F1c2UoU0NUUF9DQVVTRV9VU0VSX0lOSVRJQVRFRF9BQlQsICIiKTsKIAkJCQlz
dGNiLT5zY3RwX2VwLT5sYXN0X2Fib3J0X2NvZGUgPSBTQ1RQX0ZST01fU0NUUF9VU1JSRVEgKyBT
Q1RQX0xPQ182OworCQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKIAkJCQlzY3RwX2Fib3J0X2Fu
X2Fzc29jaWF0aW9uKHN0Y2ItPnNjdHBfZXAsIHN0Y2IsCiAJCQkJCQkJICBvcF9lcnIsIFNDVFBf
U09fTE9DS0VEKTsKLQkJCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CisjaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJCQlORVRfRVBPQ0hfRVhJVChl
dCk7CisjZW5kaWYKIAkJCQlyZXR1cm4gKDApOwogCQkJfQogCQl9Ci0JCXNjdHBfdGltZXJfc3Rh
cnQoU0NUUF9USU1FUl9UWVBFX1NIVVRET1dOR1VBUkQsIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIG5l
dHApOworCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9TSFVURE9XTkdVQVJELCBz
dGNiLT5zY3RwX2VwLCBzdGNiLCBOVUxMKTsKIAkJLyogWFhYOiBXaHkgZG8gdGhpcyBpbiB0aGUg
Y2FzZSB3aGVyZSB3ZSBoYXZlIHN0aWxsIGRhdGEgcXVldWVkPyAqLwogCQlzY3RwX2NodW5rX291
dHB1dChpbnAsIHN0Y2IsIFNDVFBfT1VUUFVUX0ZST01fQ0xPU0lORywgU0NUUF9TT19MT0NLRUQp
OwogCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CiAJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQlORVRf
RVBPQ0hfRVhJVChldCk7CisjZW5kaWYKIAkJcmV0dXJuICgwKTsKIAl9CiB9CkBAIC0xNDI2LDMz
ICsxNDAyLDMzIEBAIHNjdHBfc2h1dGRvd24oc3RydWN0IHNvY2tldCAqc28pCiAgKiByZXR1cm5z
IDAgb24gc3VjY2VzcywgMSBvbiBlcnJvcgogICovCiBzdGF0aWMgdWludDMyX3QKLXNjdHBfZmls
bF91c2VyX2FkZHJlc3Moc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKnNzLCBzdHJ1Y3Qgc29ja2Fk
ZHIgKnNhKQorc2N0cF9maWxsX3VzZXJfYWRkcmVzcyhzdHJ1Y3Qgc29ja2FkZHIgKmRzdCwgc3Ry
dWN0IHNvY2thZGRyICpzcmMpCiB7CiAjaWZkZWYgSU5FVDYKICNpZiBkZWZpbmVkKFNDVFBfRU1C
RURERURfVjZfU0NPUEUpCiAJc3RydWN0IHNvY2thZGRyX2luNiBsc2E2OwogCi0Jc2EgPSAoc3Ry
dWN0IHNvY2thZGRyICopc2N0cF9yZWNvdmVyX3Njb3BlKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICop
c2EsCisJc3JjID0gKHN0cnVjdCBzb2NrYWRkciAqKXNjdHBfcmVjb3Zlcl9zY29wZSgoc3RydWN0
IHNvY2thZGRyX2luNiAqKXNyYywKIAkgICAgJmxzYTYpOwogI2VuZGlmCiAjZW5kaWYKICNpZmRl
ZiBIQVZFX1NBX0xFTgotCW1lbWNweShzcywgc2EsIHNhLT5zYV9sZW4pOworCW1lbWNweShkc3Qs
IHNyYywgc3JjLT5zYV9sZW4pOwogI2Vsc2UKLQlzd2l0Y2ggKHNhLT5zYV9mYW1pbHkpIHsKKwlz
d2l0Y2ggKHNyYy0+c2FfZmFtaWx5KSB7CiAjaWZkZWYgSU5FVAogCWNhc2UgQUZfSU5FVDoKLQkJ
bWVtY3B5KHNzLCBzYSwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOworCQltZW1jcHkoZHN0
LCBzcmMsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKIAkJYnJlYWs7CiAjZW5kaWYKICNp
ZmRlZiBJTkVUNgogCWNhc2UgQUZfSU5FVDY6Ci0JCW1lbWNweShzcywgc2EsIHNpemVvZihzdHJ1
Y3Qgc29ja2FkZHJfaW42KSk7CisJCW1lbWNweShkc3QsIHNyYywgc2l6ZW9mKHN0cnVjdCBzb2Nr
YWRkcl9pbjYpKTsKIAkJYnJlYWs7CiAjZW5kaWYKICNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAJY2FzZSBBRl9DT05OOgotCQltZW1jcHkoc3MsIHNhLCBzaXplb2Yoc3RydWN0IHNvY2thZGRy
X2Nvbm4pKTsKKwkJbWVtY3B5KGRzdCwgc3JjLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2Nvbm4p
KTsKIAkJYnJlYWs7CiAjZW5kaWYKIAlkZWZhdWx0OgpAQCAtMTQ2NSwxNSArMTQ0MSwxMiBAQCBz
Y3RwX2ZpbGxfdXNlcl9hZGRyZXNzKHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlICpzcywgc3RydWN0
IHNvY2thZGRyICpzYSkKIAogCiAKLS8qCi0gKiBOT1RFOiBhc3N1bWVzIGFkZHIgbG9jayBpcyBo
ZWxkCi0gKi8KIHN0YXRpYyBzaXplX3QKIHNjdHBfZmlsbF91cF9hZGRyZXNzZXNfdnJmKHN0cnVj
dCBzY3RwX2lucGNiICppbnAsCi0JCQkgICBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCi0JCQkgICBz
aXplX3QgbGltaXQsCi0JCQkgICBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqc2FzLAotCQkJICAg
dWludDMyX3QgdnJmX2lkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNjdHBf
dGNiICpzdGNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxpbWl0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyICphZGRyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDMyX3QgdnJmX2lkKQogewogCXN0cnVjdCBzY3RwX2lmbiAq
c2N0cF9pZm47CiAJc3RydWN0IHNjdHBfaWZhICpzY3RwX2lmYTsKQEAgLTE0OTAsOCArMTQ2Myw5
IEBAIHNjdHBfZmlsbF91cF9hZGRyZXNzZXNfdnJmKHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAj
ZW5kaWYKIAlzdHJ1Y3Qgc2N0cF92cmYgKnZyZjsKIAorCVNDVFBfSVBJX0FERFJfTE9DS19BU1NF
UlQoKTsKIAlhY3R1YWwgPSAwOwotCWlmIChsaW1pdCA8PSAwKQorCWlmIChsaW1pdCA9PSAwKQog
CQlyZXR1cm4gKGFjdHVhbCk7CiAKIAlpZiAoc3RjYikgewpAQCAtMTU3OCw3ICsxNTUyLDcgQEAg
c2N0cF9maWxsX3VwX2FkZHJlc3Nlc192cmYoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJCQkJ
ICogaXMgb25lIG9mIHRob3NlIHdlIG11c3Qgc2tpcCBpdC4KIAkJCQkJICovCiAJCQkJCWlmIChz
Y3RwX2lzX2FkZHJfcmVzdHJpY3RlZChzdGNiLAotCQkJCQkJCQkgICAgc2N0cF9pZmEpKSB7CisJ
CQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3RwX2lmYSkpIHsKIAkJCQkJCWNvbnRp
bnVlOwogCQkJCQl9CiAJCQkJfQpAQCAtMTU5Niw3ICsxNTcwLDcgQEAgc2N0cF9maWxsX3VwX2Fk
ZHJlc3Nlc192cmYoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJCQkJCQkgKi8KIAkJCQkJCQlj
b250aW51ZTsKIAkJCQkJCX0KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJCQlpZiAocHJpc29u
X2NoZWNrX2lwNChpbnAtPmlwX2lucC5pbnAuaW5wX2NyZWQsCiAJCQkJCQkgICAgICAgICAgICAg
ICAgICAgICAmc2luLT5zaW5fYWRkcikgIT0gMCkgewogCQkJCQkJCWNvbnRpbnVlOwpAQCAtMTYw
OCwyMiArMTU4MiwyNSBAQCBzY3RwX2ZpbGxfdXBfYWRkcmVzc2VzX3ZyZihzdHJ1Y3Qgc2N0cF9p
bnBjYiAqaW5wLAogCQkJCQkJfQogI2lmZGVmIElORVQ2CiAJCQkJCQlpZiAoc2N0cF9pc19mZWF0
dXJlX29uKGlucCwgU0NUUF9QQ0JfRkxBR1NfTkVFRFNfTUFQUEVEX1Y0KSkgewotCQkJCQkJCWlu
Nl9zaW5fMl92NG1hcHNpbjYoc2luLCAoc3RydWN0IHNvY2thZGRyX2luNiAqKXNhcyk7Ci0JCQkJ
CQkJKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopc2FzKS0+c2luNl9wb3J0ID0gaW5wLT5zY3RwX2xw
b3J0OwotCQkJCQkJCXNhcyA9IChzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqKSgoY2FkZHJfdClz
YXMgKyBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNikpOworCQkJCQkJCWlmIChhY3R1YWwgKyBz
aXplb2Yoc3RydWN0IHNvY2thZGRyX2luNikgPiBsaW1pdCkgeworCQkJCQkJCQlyZXR1cm4gKGFj
dHVhbCk7CisJCQkJCQkJfQorCQkJCQkJCWluNl9zaW5fMl92NG1hcHNpbjYoc2luLCAoc3RydWN0
IHNvY2thZGRyX2luNiAqKWFkZHIpOworCQkJCQkJCSgoc3RydWN0IHNvY2thZGRyX2luNiAqKWFk
ZHIpLT5zaW42X3BvcnQgPSBpbnAtPnNjdHBfbHBvcnQ7CisJCQkJCQkJYWRkciA9IChzdHJ1Y3Qg
c29ja2FkZHIgKikoKGNhZGRyX3QpYWRkciArIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSk7
CiAJCQkJCQkJYWN0dWFsICs9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KTsKIAkJCQkJCX0g
ZWxzZSB7CiAjZW5kaWYKLQkJCQkJCQltZW1jcHkoc2FzLCBzaW4sIHNpemVvZigqc2luKSk7Ci0J
CQkJCQkJKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilzYXMpLT5zaW5fcG9ydCA9IGlucC0+c2N0cF9s
cG9ydDsKLQkJCQkJCQlzYXMgPSAoc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKikoKGNhZGRyX3Qp
c2FzICsgc2l6ZW9mKCpzaW4pKTsKLQkJCQkJCQlhY3R1YWwgKz0gc2l6ZW9mKCpzaW4pOworCQkJ
CQkJCWlmIChhY3R1YWwgKyBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSA+IGxpbWl0KSB7CisJ
CQkJCQkJCXJldHVybiAoYWN0dWFsKTsKKwkJCQkJCQl9CisJCQkJCQkJbWVtY3B5KGFkZHIsIHNp
biwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOworCQkJCQkJCSgoc3RydWN0IHNvY2thZGRy
X2luICopYWRkciktPnNpbl9wb3J0ID0gaW5wLT5zY3RwX2xwb3J0OworCQkJCQkJCWFkZHIgPSAo
c3RydWN0IHNvY2thZGRyICopKChjYWRkcl90KWFkZHIgKyBzaXplb2Yoc3RydWN0IHNvY2thZGRy
X2luKSk7CisJCQkJCQkJYWN0dWFsICs9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pOwogI2lm
ZGVmIElORVQ2CiAJCQkJCQl9CiAjZW5kaWYKLQkJCQkJCWlmIChhY3R1YWwgPj0gbGltaXQpIHsK
LQkJCQkJCQlyZXR1cm4gKGFjdHVhbCk7Ci0JCQkJCQl9CiAJCQkJCX0gZWxzZSB7CiAJCQkJCQlj
b250aW51ZTsKIAkJCQkJfQpAQCAtMTY0NSw3ICsxNjIyLDcgQEAgc2N0cF9maWxsX3VwX2FkZHJl
c3Nlc192cmYoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJCQkJCQkgKi8KIAkJCQkJCQljb250
aW51ZTsKIAkJCQkJCX0KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJCQlpZiAocHJpc29uX2No
ZWNrX2lwNihpbnAtPmlwX2lucC5pbnAuaW5wX2NyZWQsCiAJCQkJCQkgICAgICAgICAgICAgICAg
ICAgICAmc2luNi0+c2luNl9hZGRyKSAhPSAwKSB7CiAJCQkJCQkJY29udGludWU7CkBAIC0xNjg0
LDEzICsxNjYxLDEzIEBAIHNjdHBfZmlsbF91cF9hZGRyZXNzZXNfdnJmKHN0cnVjdCBzY3RwX2lu
cGNiICppbnAsCiAJCQkJCQkgICAgKElONl9JU19BRERSX1NJVEVMT0NBTCgmc2luNi0+c2luNl9h
ZGRyKSkpIHsKIAkJCQkJCQljb250aW51ZTsKIAkJCQkJCX0KLQkJCQkJCW1lbWNweShzYXMsIHNp
bjYsIHNpemVvZigqc2luNikpOwotCQkJCQkJKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopc2FzKS0+
c2luNl9wb3J0ID0gaW5wLT5zY3RwX2xwb3J0OwotCQkJCQkJc2FzID0gKHN0cnVjdCBzb2NrYWRk
cl9zdG9yYWdlICopKChjYWRkcl90KXNhcyArIHNpemVvZigqc2luNikpOwotCQkJCQkJYWN0dWFs
ICs9IHNpemVvZigqc2luNik7Ci0JCQkJCQlpZiAoYWN0dWFsID49IGxpbWl0KSB7CisJCQkJCQlp
ZiAoYWN0dWFsICsgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpID4gbGltaXQpIHsKIAkJCQkJ
CQlyZXR1cm4gKGFjdHVhbCk7CiAJCQkJCQl9CisJCQkJCQltZW1jcHkoYWRkciwgc2luNiwgc2l6
ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKTsKKwkJCQkJCSgoc3RydWN0IHNvY2thZGRyX2luNiAq
KWFkZHIpLT5zaW42X3BvcnQgPSBpbnAtPnNjdHBfbHBvcnQ7CisJCQkJCQlhZGRyID0gKHN0cnVj
dCBzb2NrYWRkciAqKSgoY2FkZHJfdClhZGRyICsgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYp
KTsKKwkJCQkJCWFjdHVhbCArPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNik7CiAJCQkJCX0g
ZWxzZSB7CiAJCQkJCQljb250aW51ZTsKIAkJCQkJfQpAQCAtMTY5OSwxMyArMTY3NiwxMyBAQCBz
Y3RwX2ZpbGxfdXBfYWRkcmVzc2VzX3ZyZihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogI2lmIGRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCQljYXNlIEFGX0NPTk46CiAJCQkJCWlmIChjb25uX2Fk
ZHJfbGVnYWwpIHsKLQkJCQkJCW1lbWNweShzYXMsICZzY3RwX2lmYS0+YWRkcmVzcy5zY29ubiwg
c2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9jb25uKSk7Ci0JCQkJCQkoKHN0cnVjdCBzb2NrYWRkcl9j
b25uICopc2FzKS0+c2Nvbm5fcG9ydCA9IGlucC0+c2N0cF9scG9ydDsKLQkJCQkJCXNhcyA9IChz
dHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqKSgoY2FkZHJfdClzYXMgKyBzaXplb2Yoc3RydWN0IHNv
Y2thZGRyX2Nvbm4pKTsKLQkJCQkJCWFjdHVhbCArPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2Nv
bm4pOwotCQkJCQkJaWYgKGFjdHVhbCA+PSBsaW1pdCkgeworCQkJCQkJaWYgKGFjdHVhbCArIHNp
emVvZihzdHJ1Y3Qgc29ja2FkZHJfY29ubikgPiBsaW1pdCkgewogCQkJCQkJCXJldHVybiAoYWN0
dWFsKTsKIAkJCQkJCX0KKwkJCQkJCW1lbWNweShhZGRyLCAmc2N0cF9pZmEtPmFkZHJlc3Muc2Nv
bm4sIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfY29ubikpOworCQkJCQkJKChzdHJ1Y3Qgc29ja2Fk
ZHJfY29ubiAqKWFkZHIpLT5zY29ubl9wb3J0ID0gaW5wLT5zY3RwX2xwb3J0OworCQkJCQkJYWRk
ciA9IChzdHJ1Y3Qgc29ja2FkZHIgKikoKGNhZGRyX3QpYWRkciArIHNpemVvZihzdHJ1Y3Qgc29j
a2FkZHJfY29ubikpOworCQkJCQkJYWN0dWFsICs9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfY29u
bik7CiAJCQkJCX0gZWxzZSB7CiAJCQkJCQljb250aW51ZTsKIAkJCQkJfQpAQCAtMTcxOCw5ICsx
Njk1LDcgQEAgc2N0cF9maWxsX3VwX2FkZHJlc3Nlc192cmYoc3RydWN0IHNjdHBfaW5wY2IgKmlu
cCwKIAkJfQogCX0gZWxzZSB7CiAJCXN0cnVjdCBzY3RwX2xhZGRyICpsYWRkcjsKLSNpZm5kZWYg
SEFWRV9TQV9MRU4KLQkJdWludDMyX3Qgc2FfbGVuID0gMDsKLSNlbmRpZgorCQlzaXplX3Qgc2Ff
bGVuOwogCiAJCUxJU1RfRk9SRUFDSChsYWRkciwgJmlucC0+c2N0cF9hZGRyX2xpc3QsIHNjdHBf
bnh0X2FkZHIpIHsKIAkJCWlmIChzdGNiKSB7CkBAIC0xNzI4LDU5ICsxNzAzLDU4IEBAIHNjdHBf
ZmlsbF91cF9hZGRyZXNzZXNfdnJmKHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCQkJCWNvbnRp
bnVlOwogCQkJCX0KIAkJCX0KLQkJCWlmIChzY3RwX2ZpbGxfdXNlcl9hZGRyZXNzKHNhcywgJmxh
ZGRyLT5pZmEtPmFkZHJlc3Muc2EpKQotCQkJCWNvbnRpbnVlOworI2lmZGVmIEhBVkVfU0FfTEVO
CisJCQlzYV9sZW4gPSBsYWRkci0+aWZhLT5hZGRyZXNzLnNhLnNhX2xlbjsKKyNlbHNlCiAJCQlz
d2l0Y2ggKGxhZGRyLT5pZmEtPmFkZHJlc3Muc2Euc2FfZmFtaWx5KSB7CiAjaWZkZWYgSU5FVAog
CQkJY2FzZSBBRl9JTkVUOgotCQkJCSgoc3RydWN0IHNvY2thZGRyX2luICopc2FzKS0+c2luX3Bv
cnQgPSBpbnAtPnNjdHBfbHBvcnQ7CisJCQkJc2FfbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRk
cl9pbik7CiAJCQkJYnJlYWs7CiAjZW5kaWYKICNpZmRlZiBJTkVUNgogCQkJY2FzZSBBRl9JTkVU
NjoKLQkJCQkoKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilzYXMpLT5zaW42X3BvcnQgPSBpbnAtPnNj
dHBfbHBvcnQ7CisJCQkJc2FfbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpOwogCQkJ
CWJyZWFrOwogI2VuZGlmCiAjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJY2FzZSBBRl9D
T05OOgotCQkJCSgoc3RydWN0IHNvY2thZGRyX2Nvbm4gKilzYXMpLT5zY29ubl9wb3J0ID0gaW5w
LT5zY3RwX2xwb3J0OworCQkJCXNhX2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfY29ubik7
CiAJCQkJYnJlYWs7CiAjZW5kaWYKIAkJCWRlZmF1bHQ6CiAJCQkJLyogVFNOSCAqLworCQkJCXNh
X2xlbiA9IDA7CiAJCQkJYnJlYWs7CiAJCQl9Ci0jaWZkZWYgSEFWRV9TQV9MRU4KLQkJCXNhcyA9
IChzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqKSgoY2FkZHJfdClzYXMgKwotCQkJCQkJCSAgbGFk
ZHItPmlmYS0+YWRkcmVzcy5zYS5zYV9sZW4pOwotCQkJYWN0dWFsICs9IGxhZGRyLT5pZmEtPmFk
ZHJlc3Muc2Euc2FfbGVuOwotI2Vsc2UKKyNlbmRpZgorCQkJaWYgKGFjdHVhbCArIHNhX2xlbiA+
IGxpbWl0KSB7CisJCQkJcmV0dXJuIChhY3R1YWwpOworCQkJfQorCQkJaWYgKHNjdHBfZmlsbF91
c2VyX2FkZHJlc3MoYWRkciwgJmxhZGRyLT5pZmEtPmFkZHJlc3Muc2EpKQorCQkJCWNvbnRpbnVl
OwogCQkJc3dpdGNoIChsYWRkci0+aWZhLT5hZGRyZXNzLnNhLnNhX2ZhbWlseSkgewogI2lmZGVm
IElORVQKIAkJCWNhc2UgQUZfSU5FVDoKLQkJCQlzYV9sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2th
ZGRyX2luKTsKKwkJCQkoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKWFkZHIpLT5zaW5fcG9ydCA9IGlu
cC0+c2N0cF9scG9ydDsKIAkJCQlicmVhazsKICNlbmRpZgogI2lmZGVmIElORVQ2CiAJCQljYXNl
IEFGX0lORVQ2OgotCQkJCXNhX2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KTsKKwkJ
CQkoKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilhZGRyKS0+c2luNl9wb3J0ID0gaW5wLT5zY3RwX2xw
b3J0OwogCQkJCWJyZWFrOwogI2VuZGlmCiAjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJ
Y2FzZSBBRl9DT05OOgotCQkJCXNhX2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfY29ubik7
CisJCQkJKChzdHJ1Y3Qgc29ja2FkZHJfY29ubiAqKWFkZHIpLT5zY29ubl9wb3J0ID0gaW5wLT5z
Y3RwX2xwb3J0OwogCQkJCWJyZWFrOwogI2VuZGlmCiAJCQlkZWZhdWx0OgogCQkJCS8qIFRTTkgg
Ki8KIAkJCQlicmVhazsKIAkJCX0KLQkJCXNhcyA9IChzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAq
KSgoY2FkZHJfdClzYXMgKyBzYV9sZW4pOworCQkJYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHIgKiko
KGNhZGRyX3QpYWRkciArIHNhX2xlbik7CiAJCQlhY3R1YWwgKz0gc2FfbGVuOwotI2VuZGlmCi0J
CQlpZiAoYWN0dWFsID49IGxpbWl0KSB7Ci0JCQkJcmV0dXJuIChhY3R1YWwpOwotCQkJfQogCQl9
CiAJfQogCXJldHVybiAoYWN0dWFsKTsKQEAgLTE3OTAsNyArMTc2NCw3IEBAIHN0YXRpYyBzaXpl
X3QKIHNjdHBfZmlsbF91cF9hZGRyZXNzZXMoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKICAgICAg
ICAgICAgICAgICAgICAgICAgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgbGltaXQsCi0gICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzb2Nr
YWRkcl9zdG9yYWdlICpzYXMpCisgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRk
ciAqYWRkcikKIHsKIAlzaXplX3Qgc2l6ZSA9IDA7CiAjaWZkZWYgU0NUUF9NVlJGCkBAIC0xODA1
LDIyICsxNzc5LDE5IEBAIHNjdHBfZmlsbF91cF9hZGRyZXNzZXMoc3RydWN0IHNjdHBfaW5wY2Ig
KmlucCwKICAqLwogCS8qIGZpbGwgdXAgYWRkcmVzc2VzIGZvciBhbGwgVlJGcyBvbiB0aGUgZW5k
cG9pbnQgKi8KIAlmb3IgKGlkID0gMDsgKGlkIDwgaW5wLT5udW1fdnJmcykgJiYgKHNpemUgPCBs
aW1pdCk7IGlkKyspIHsKLQkJc2l6ZSArPSBzY3RwX2ZpbGxfdXBfYWRkcmVzc2VzX3ZyZihpbnAs
IHN0Y2IsIGxpbWl0LCBzYXMsCi0JCQkJCQkgICBpbnAtPm1fdnJmX2lkc1tpZF0pOwotCQlzYXMg
PSAoc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKikoKGNhZGRyX3Qpc2FzICsgc2l6ZSk7CisJCXNp
emUgKz0gc2N0cF9maWxsX3VwX2FkZHJlc3Nlc192cmYoaW5wLCBzdGNiLCBsaW1pdCwgYWRkciwK
KwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnAtPm1fdnJmX2lkc1tpZF0p
OworCQlhZGRyID0gKHN0cnVjdCBzb2NrYWRkciAqKSgoY2FkZHJfdClhZGRyICsgc2l6ZSk7CiAJ
fQogI2Vsc2UKIAkvKiBmaWxsIHVwIGFkZHJlc3NlcyBmb3IgdGhlIGVuZHBvaW50J3MgZGVmYXVs
dCB2cmYgKi8KLQlzaXplID0gc2N0cF9maWxsX3VwX2FkZHJlc3Nlc192cmYoaW5wLCBzdGNiLCBs
aW1pdCwgc2FzLAotCQkJCQkgIGlucC0+ZGVmX3ZyZl9pZCk7CisJc2l6ZSA9IHNjdHBfZmlsbF91
cF9hZGRyZXNzZXNfdnJmKGlucCwgc3RjYiwgbGltaXQsIGFkZHIsCisJICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlucC0+ZGVmX3ZyZl9pZCk7CiAjZW5kaWYKIAlTQ1RQX0lQSV9B
RERSX1JVTkxPQ0soKTsKIAlyZXR1cm4gKHNpemUpOwogfQogCi0vKgotICogTk9URTogYXNzdW1l
cyBhZGRyIGxvY2sgaXMgaGVsZAotICovCiBzdGF0aWMgaW50CiBzY3RwX2NvdW50X21heF9hZGRy
ZXNzZXNfdnJmKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHVpbnQzMl90IHZyZl9pZCkKIHsKQEAg
LTE4MzQsNiArMTgwNSw3IEBAIHNjdHBfY291bnRfbWF4X2FkZHJlc3Nlc192cmYoc3RydWN0IHNj
dHBfaW5wY2IgKmlucCwgdWludDMyX3QgdnJmX2lkKQogCSAqIGJvdW5kLWFsbCBjYXNlIGEgVENC
IG1heSBOT1QgaW5jbHVkZSB0aGUgbG9vcGJhY2sgb3Igb3RoZXIKIAkgKiBhZGRyZXNzZXMgYXMg
d2VsbC4KIAkgKi8KKwlTQ1RQX0lQSV9BRERSX0xPQ0tfQVNTRVJUKCk7CiAJdnJmID0gc2N0cF9m
aW5kX3ZyZih2cmZfaWQpOwogCWlmICh2cmYgPT0gTlVMTCkgewogCQlyZXR1cm4gKDApOwpAQCAt
MTkzOCwxMyArMTkxMCwxMiBAQCBzdGF0aWMgaW50CiBzY3RwX2RvX2Nvbm5lY3RfeChzdHJ1Y3Qg
c29ja2V0ICpzbywgc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgdm9pZCAqb3B0dmFsLAogCQkgIHNp
emVfdCBvcHRzaXplLCB2b2lkICpwLCBpbnQgZGVsYXkpCiB7Ci0JaW50IGVycm9yID0gMDsKKwlp
bnQgZXJyb3I7CiAJaW50IGNyZWF0X2xvY2tfb24gPSAwOwogCXN0cnVjdCBzY3RwX3RjYiAqc3Rj
YiA9IE5VTEw7CiAJc3RydWN0IHNvY2thZGRyICpzYTsKIAl1bnNpZ25lZCBpbnQgbnVtX3Y2ID0g
MCwgbnVtX3Y0ID0gMCwgKnRvdGFkZHJwLCB0b3RhZGRyOwogCXVpbnQzMl90IHZyZl9pZDsKLQlp
bnQgYmFkX2FkZHJlc3NlcyA9IDA7CiAJc2N0cF9hc3NvY190ICphX2lkOwogCiAJU0NUUERCRyhT
Q1RQX0RFQlVHX1BDQjEsICJDb25uZWN0eCBjYWxsZWRcbiIpOwpAQCAtMTk4MywxNyArMTk1NCwx
MiBAQCBzY3RwX2RvX2Nvbm5lY3RfeChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNjdHBfaW5w
Y2IgKmlucCwgdm9pZCAqb3B0dmFsLAogCXRvdGFkZHJwID0gKHVuc2lnbmVkIGludCAqKW9wdHZh
bDsKIAl0b3RhZGRyID0gKnRvdGFkZHJwOwogCXNhID0gKHN0cnVjdCBzb2NrYWRkciAqKSh0b3Rh
ZGRycCArIDEpOwotCXN0Y2IgPSBzY3RwX2Nvbm5lY3R4X2hlbHBlcl9maW5kKGlucCwgc2EsICZ0
b3RhZGRyLCAmbnVtX3Y0LCAmbnVtX3Y2LCAmZXJyb3IsICh1bnNpZ25lZCBpbnQpKG9wdHNpemUg
LSBzaXplb2YoaW50KSksICZiYWRfYWRkcmVzc2VzKTsKLQlpZiAoKHN0Y2IgIT0gTlVMTCkgfHwg
YmFkX2FkZHJlc3NlcykgeworCWVycm9yID0gc2N0cF9jb25uZWN0eF9oZWxwZXJfZmluZChpbnAs
IHNhLCB0b3RhZGRyLCAmbnVtX3Y0LCAmbnVtX3Y2LCAodW5zaWduZWQgaW50KShvcHRzaXplIC0g
c2l6ZW9mKGludCkpKTsKKwlpZiAoZXJyb3IgIT0gMCkgewogCQkvKiBBbHJlYWR5IGhhdmUgb3Ig
YW0gYnJpbmcgdXAgYW4gYXNzb2NpYXRpb24gKi8KIAkJU0NUUF9BU09DX0NSRUFURV9VTkxPQ0so
aW5wKTsKIAkJY3JlYXRfbG9ja19vbiA9IDA7Ci0JCWlmIChzdGNiKQotCQkJU0NUUF9UQ0JfVU5M
T0NLKHN0Y2IpOwotCQlpZiAoYmFkX2FkZHJlc3NlcyA9PSAwKSB7Ci0JCQlTQ1RQX0xUUkFDRV9F
UlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBFQUxSRUFEWSk7
Ci0JCQllcnJvciA9IEVBTFJFQURZOwotCQl9CisJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBO
VUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIGVycm9yKTsKIAkJZ290byBvdXRfbm93
OwogCX0KICNpZmRlZiBJTkVUNgpAQCAtMjAwNCwxMCArMTk3MCw3IEBAIHNjdHBfZG9fY29ubmVj
dF94KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCB2b2lkICpvcHR2
YWwsCiAJfQogCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfQk9VTkRfVjYp
ICYmCiAJICAgIChudW1fdjQgPiAwKSkgewotCQlzdHJ1Y3QgaW42cGNiICppbnA2OwotCi0JCWlu
cDYgPSAoc3RydWN0IGluNnBjYiAqKWlucDsKLQkJaWYgKFNDVFBfSVBWNl9WNk9OTFkoaW5wNikp
IHsKKwkJaWYgKFNDVFBfSVBWNl9WNk9OTFkoaW5wKSkgewogCQkJLyoKIAkJCSAqIGlmIElQVjZf
VjZPTkxZIGZsYWcsIGlnbm9yZSBjb25uZWN0aW9ucyBkZXN0aW5lZAogCQkJICogdG8gYSB2NCBh
ZGRyIG9yIHY0LW1hcHBlZCBhZGRyCkBAIC0yMDM1LDE0ICsxOTk4LDE0IEBAIHNjdHBfZG9fY29u
bmVjdF94KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCB2b2lkICpv
cHR2YWwsCiAJc3RjYiA9IHNjdHBfYWxvY19hc3NvYyhpbnAsIHNhLCAmZXJyb3IsIDAsIHZyZl9p
ZCwKIAkgICAgICAgICAgICAgICAgICAgICAgIGlucC0+c2N0cF9lcC5wcmVfb3Blbl9zdHJlYW1f
Y291bnQsCiAJICAgICAgICAgICAgICAgICAgICAgICBpbnAtPnNjdHBfZXAucG9ydCwKLSNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMDAKLQkJCSAg
ICAgICAoc3RydWN0IHRocmVhZCAqKXAKLSNlbGlmIGRlZmluZWQoX19XaW5kb3dzX18pCi0JCQkg
ICAgICAgKFBLVEhSRUFEKXAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQorCSAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCB0aHJlYWQgKilw
LAorI2VsaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJICAg
ICAgICAgICAgICAgICAgICAgICAoUEtUSFJFQUQpcCwKICNlbHNlCi0JCQkgICAgICAgKHN0cnVj
dCBwcm9jICopcAorCSAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBwcm9jICopcCwKICNl
bmRpZgotCQkpOworCSAgICAgICAgICAgICAgICAgICAgICAgU0NUUF9JTklUSUFMSVpFX0FVVEhf
UEFSQU1TKTsKIAlpZiAoc3RjYiA9PSBOVUxMKSB7CiAJCS8qIEdhayEgbm8gbWVtb3J5ICovCiAJ
CWdvdG8gb3V0X25vdzsKQEAgLTIwNTIsNyArMjAxNSw3IEBAIHNjdHBfZG9fY29ubmVjdF94KHN0
cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCB2b2lkICpvcHR2YWwsCiAJ
CS8qIFNldCB0aGUgY29ubmVjdGVkIGZsYWcgc28gd2UgY2FuIHF1ZXVlIGRhdGEgKi8KIAkJc29p
c2Nvbm5lY3Rpbmcoc28pOwogCX0KLQlTQ1RQX1NFVF9TVEFURSgmc3RjYi0+YXNvYywgU0NUUF9T
VEFURV9DT09LSUVfV0FJVCk7CisJU0NUUF9TRVRfU1RBVEUoc3RjYiwgU0NUUF9TVEFURV9DT09L
SUVfV0FJVCk7CiAJLyogbW92ZSB0byBzZWNvbmQgYWRkcmVzcyAqLwogCXN3aXRjaCAoc2EtPnNh
X2ZhbWlseSkgewogI2lmZGVmIElORVQKQEAgLTIwNzMsMTYgKzIwMzYsMTEgQEAgc2N0cF9kb19j
b25uZWN0X3goc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHZvaWQg
Km9wdHZhbCwKIAlzY3RwX2Nvbm5lY3R4X2hlbHBlcl9hZGQoc3RjYiwgc2EsICh0b3RhZGRyLTEp
LCAmZXJyb3IpOwogCS8qIEZpbGwgaW4gdGhlIHJldHVybiBpZCAqLwogCWlmIChlcnJvcikgewot
CQkodm9pZClzY3RwX2ZyZWVfYXNzb2MoaW5wLCBzdGNiLCBTQ1RQX1BDQkZSRUVfRk9SQ0UsCi0J
CSAgICAgICAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUF9VU1JSRVEgKyBTQ1RQX0xPQ183
KTsKIAkJZ290byBvdXRfbm93OwogCX0KIAlhX2lkID0gKHNjdHBfYXNzb2NfdCAqKW9wdHZhbDsK
IAkqYV9pZCA9IHNjdHBfZ2V0X2Fzc29jaWQoc3RjYik7CiAKLQkvKiBpbml0aWFsaXplIGF1dGhl
bnRpY2F0aW9uIHBhcmFtZXRlcnMgZm9yIHRoZSBhc3NvYyAqLwotCXNjdHBfaW5pdGlhbGl6ZV9h
dXRoX3BhcmFtcyhpbnAsIHN0Y2IpOwotCiAJaWYgKGRlbGF5KSB7CiAJCS8qIGRvaW5nIGRlbGF5
ZWQgY29ubmVjdGlvbiAqLwogCQlzdGNiLT5hc29jLmRlbGF5ZWRfY29ubmVjdGlvbiA9IDE7CkBA
IC0yMTMyLDcgKzIwOTAsNyBAQCBzY3RwX2RvX2Nvbm5lY3RfeChzdHJ1Y3Qgc29ja2V0ICpzbywg
c3RydWN0IHNjdHBfaW5wY2IgKmlucCwgdm9pZCAqb3B0dmFsLAogCX0gXAogfQogCi0jaWYgZGVm
aW5lZChfX1BhbmRhX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiBkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiBpbnQKICNlbHNlCiBzdGF0aWMgaW50CkBAIC0yMTkyLDcgKzIxNTAsNyBA
QCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZh
bCwgc2l6ZV90ICpvcHRzaXplLAogCQkJYnJlYWs7CiAJCWNhc2UgU0NUUF9BVVRPQ0xPU0U6CiAJ
CQlpZiAoc2N0cF9pc19mZWF0dXJlX29uKGlucCwgU0NUUF9QQ0JfRkxBR1NfQVVUT0NMT1NFKSkK
LQkJCQl2YWwgPSBUSUNLU19UT19TRUMoaW5wLT5zY3RwX2VwLmF1dG9fY2xvc2VfdGltZSk7CisJ
CQkJdmFsID0gc2N0cF90aWNrc190b19zZWNzKGlucC0+c2N0cF9lcC5hdXRvX2Nsb3NlX3RpbWUp
OwogCQkJZWxzZQogCQkJCXZhbCA9IDA7CiAJCQlicmVhazsKQEAgLTIyODEsNyArMjIzOSw4IEBA
IHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFs
LCBzaXplX3QgKm9wdHNpemUsCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAm
IFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFND
VFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQ
X0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZM
QUdTX1VEUFRZUEUpICYmCisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNT
T0MpKSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJaWYgKGlucC0+aWRhdGFfc3Vw
cG9ydGVkKSB7CiAJCQkJCWF2LT5hc3NvY192YWx1ZSA9IDE7CkBAIC0yMzExLDcgKzIyNzAsOCBA
QCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZh
bCwgc2l6ZV90ICpvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3Mg
JiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBT
Q1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChhdi0+YXNzb2NfaWQgPT0gU0NU
UF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9G
TEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FT
U09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9STE9DSyhpbnApOwogCQkJCWF2LT5hc3NvY192YWx1ZSA9
IGlucC0+c2N0cF9jbXRfb25fb2ZmOwogCQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKQEAgLTIz
MzcsNyArMjI5Nyw4IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFt
ZSwgdm9pZCAqb3B0dmFsLCBzaXplX3QgKm9wdHNpemUsCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlu
cC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+
c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKGF2LT5h
c3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFn
cyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0g
U0NUUF9GVVRVUkVfQVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJYXYt
PmFzc29jX3ZhbHVlID0gaW5wLT5zY3RwX2VwLnNjdHBfZGVmYXVsdF9jY19tb2R1bGU7CiAJCQkJ
U0NUUF9JTlBfUlVOTE9DSyhpbnApOwpAQCAtMjM4Miw3ICsyMzQzLDggQEAgc2N0cF9nZXRvcHQo
c3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCAqb3B0
c2l6ZSwKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxB
R1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1Nf
SU5fVENQUE9PTCkgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09D
KSkgeworCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkg
JiYKKwkJCSAgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpKSB7CiAJCQkJ
U0NUUF9JTlBfUkxPQ0soaW5wKTsKIAkJCQlhdi0+YXNzb2NfdmFsdWUgPSBpbnAtPnNjdHBfZXAu
c2N0cF9kZWZhdWx0X3NzX21vZHVsZTsKIAkJCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CkBAIC0y
NTIzLDcgKzI0ODUsOCBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5h
bWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChp
bnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAt
PnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChhdi0+
YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxh
Z3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoYXYtPmFzc29jX2lkID09
IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9STE9DSyhpbnApOwogCQkJCWF2
LT5hc3NvY192YWx1ZSA9IGlucC0+c2N0cF9jb250ZXh0OwogCQkJCVNDVFBfSU5QX1JVTkxPQ0so
aW5wKTsKQEAgLTI2MTQsOSArMjU3NywxMCBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpz
bywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRzaXplLAogCQl9IGVsc2Ug
ewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAog
CQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAot
CQkJICAgIChzYWNrLT5zYWNrX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkgeworCQkJ
ICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAg
ICAgKHNhY2stPnNhY2tfYXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkgewogCQkJCVND
VFBfSU5QX1JMT0NLKGlucCk7Ci0JCQkJc2Fjay0+c2Fja19kZWxheSA9IFRJQ0tTX1RPX01TRUMo
aW5wLT5zY3RwX2VwLnNjdHBfdGltZW91dHRpY2tzW1NDVFBfVElNRVJfUkVDVl0pOworCQkJCXNh
Y2stPnNhY2tfZGVsYXkgPSBzY3RwX3RpY2tzX3RvX21zZWNzKGlucC0+c2N0cF9lcC5zY3RwX3Rp
bWVvdXR0aWNrc1tTQ1RQX1RJTUVSX1JFQ1ZdKTsKIAkJCQlzYWNrLT5zYWNrX2ZyZXEgPSBpbnAt
PnNjdHBfZXAuc2N0cF9zYWNrX2ZyZXE7CiAJCQkJU0NUUF9JTlBfUlVOTE9DSyhpbnApOwogCQkJ
fSBlbHNlIHsKQEAgLTI2NTAsMjAgKzI2MTQsNiBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0
ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRzaXplLAogCX0KIAlj
YXNlIFNDVFBfTUFYX0JVUlNUOgogCXsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0Zy
ZWVCU0RfdmVyc2lvbiA8IDkwMDAwMAotCQl1aW50OF90ICp2YWx1ZTsKLQotCQlTQ1RQX0NIRUNL
X0FORF9DQVNUKHZhbHVlLCBvcHR2YWwsIHVpbnQ4X3QsICpvcHRzaXplKTsKLQotCQlTQ1RQX0lO
UF9STE9DSyhpbnApOwotCQlpZiAoaW5wLT5zY3RwX2VwLm1heF9idXJzdCA8IDI1NikgewotCQkJ
KnZhbHVlID0gaW5wLT5zY3RwX2VwLm1heF9idXJzdDsKLQkJfSBlbHNlIHsKLQkJCSp2YWx1ZSA9
IDI1NTsKLQkJfQotCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7Ci0JCSpvcHRzaXplID0gc2l6ZW9m
KHVpbnQ4X3QpOwotI2Vsc2UKIAkJc3RydWN0IHNjdHBfYXNzb2NfdmFsdWUgKmF2OwogCiAJCVND
VFBfQ0hFQ0tfQU5EX0NBU1QoYXYsIG9wdHZhbCwgc3RydWN0IHNjdHBfYXNzb2NfdmFsdWUsICpv
cHRzaXplKTsKQEAgLTI2NzUsNyArMjYyNSw4IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQg
KnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3QgKm9wdHNpemUsCiAJCX0gZWxz
ZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8
CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8
Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAo
KGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgIChh
di0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1JMT0NL
KGlucCk7CiAJCQkJYXYtPmFzc29jX3ZhbHVlID0gaW5wLT5zY3RwX2VwLm1heF9idXJzdDsKIAkJ
CQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CkBAIC0yNjg3LDcgKzI2MzgsNiBAQCBzY3RwX2dldG9w
dChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpv
cHRzaXplLAogCQlpZiAoZXJyb3IgPT0gMCkgewogCQkJKm9wdHNpemUgPSBzaXplb2Yoc3RydWN0
IHNjdHBfYXNzb2NfdmFsdWUpOwogCQl9Ci0jZW5kaWYKIAkJYnJlYWs7CiAJfQogCWNhc2UgU0NU
UF9NQVhTRUc6CkBAIC0yNzA0LDcgKzI2NTQsOCBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0
ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRzaXplLAogCQl9IGVs
c2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8
fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8
fAotCQkJICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAg
KChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAo
YXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9STE9D
SyhpbnApOwogCQkJCWlmIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19CT1VORF9W
NikgewogCQkJCQlvdmggPSBTQ1RQX01FRF9PVkVSSEVBRDsKQEAgLTI4NjQsNyArMjgxNSw3IEBA
IHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFs
LCBzaXplX3QgKm9wdHNpemUsCiAJCSAqLwogCXsKIAkJc2l6ZV90IGNwc3osIGxlZnQ7Ci0JCXN0
cnVjdCBzb2NrYWRkcl9zdG9yYWdlICpzYXM7CisJCXN0cnVjdCBzb2NrYWRkciAqYWRkcjsKIAkJ
c3RydWN0IHNjdHBfbmV0cyAqbmV0OwogCQlzdHJ1Y3Qgc2N0cF9nZXRhZGRyZXNzZXMgKnNhZGRy
OwogCkBAIC0yODcyLDkgKzI4MjMsOSBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywg
aW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRzaXplLAogCQlTQ1RQX0ZJTkRf
U1RDQihpbnAsIHN0Y2IsIHNhZGRyLT5zZ2V0X2Fzc29jX2lkKTsKIAogCQlpZiAoc3RjYikgewot
CQkJbGVmdCA9ICgqb3B0c2l6ZSkgLSBzaXplb2Yoc3RydWN0IHNjdHBfZ2V0YWRkcmVzc2VzKTsK
LQkJCSpvcHRzaXplID0gc2l6ZW9mKHN0cnVjdCBzY3RwX2dldGFkZHJlc3Nlcyk7Ci0JCQlzYXMg
PSAoc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKikmc2FkZHItPmFkZHJbMF07CisJCQlsZWZ0ID0g
Km9wdHNpemUgLSBvZmZzZXRvZihzdHJ1Y3Qgc2N0cF9nZXRhZGRyZXNzZXMsIGFkZHIpOworCQkJ
Km9wdHNpemUgPSBvZmZzZXRvZihzdHJ1Y3Qgc2N0cF9nZXRhZGRyZXNzZXMsIGFkZHIpOworCQkJ
YWRkciA9ICZzYWRkci0+YWRkclswXS5zYTsKIAogCQkJVEFJTFFfRk9SRUFDSChuZXQsICZzdGNi
LT5hc29jLm5ldHMsIHNjdHBfbmV4dCkgewogCQkJCXN3aXRjaCAobmV0LT5yby5fbF9hZGRyLnNh
LnNhX2ZhbWlseSkgewpAQCAtMjkxNywyMiArMjg2OCwyMiBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qg
c29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRzaXplLAog
CQkJCSAgICAobmV0LT5yby5fbF9hZGRyLnNhLnNhX2ZhbWlseSA9PSBBRl9JTkVUKSkgewogCQkJ
CQkvKiBNdXN0IG1hcCB0aGUgYWRkcmVzcyAqLwogCQkJCQlpbjZfc2luXzJfdjRtYXBzaW42KCZu
ZXQtPnJvLl9sX2FkZHIuc2luLAotCQkJCQkJCSAgICAoc3RydWN0IHNvY2thZGRyX2luNiAqKXNh
cyk7CisJCQkJCSAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilhZGRy
KTsKIAkJCQl9IGVsc2UgewotCQkJCQltZW1jcHkoc2FzLCAmbmV0LT5yby5fbF9hZGRyLCBjcHN6
KTsKKwkJCQkJbWVtY3B5KGFkZHIsICZuZXQtPnJvLl9sX2FkZHIsIGNwc3opOwogCQkJCX0KICNl
bHNlCi0JCQkJbWVtY3B5KHNhcywgJm5ldC0+cm8uX2xfYWRkciwgY3Bzeik7CisJCQkJbWVtY3B5
KGFkZHIsICZuZXQtPnJvLl9sX2FkZHIsIGNwc3opOwogI2VuZGlmCi0JCQkJKChzdHJ1Y3Qgc29j
a2FkZHJfaW4gKilzYXMpLT5zaW5fcG9ydCA9IHN0Y2ItPnJwb3J0OworCQkJCSgoc3RydWN0IHNv
Y2thZGRyX2luICopYWRkciktPnNpbl9wb3J0ID0gc3RjYi0+cnBvcnQ7CiAKLQkJCQlzYXMgPSAo
c3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKikoKGNhZGRyX3Qpc2FzICsgY3Bzeik7CisJCQkJYWRk
ciA9IChzdHJ1Y3Qgc29ja2FkZHIgKikoKGNhZGRyX3QpYWRkciArIGNwc3opOwogCQkJCWxlZnQg
LT0gY3BzejsKIAkJCQkqb3B0c2l6ZSArPSBjcHN6OwogCQkJfQogCQkJU0NUUF9UQ0JfVU5MT0NL
KHN0Y2IpOwogCQl9IGVsc2UgewotCQkgICAgICAgIFNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBO
VUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIEVOT0VOVCk7CisJCQlTQ1RQX0xUUkFD
RV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBFTk9FTlQp
OwogCQkJZXJyb3IgPSBFTk9FTlQ7CiAJCX0KIAkJYnJlYWs7CkBAIC0yOTQwLDE5ICsyODkxLDE3
IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0
dmFsLCBzaXplX3QgKm9wdHNpemUsCiAJY2FzZSBTQ1RQX0dFVF9MT0NBTF9BRERSRVNTRVM6CiAJ
ewogCQlzaXplX3QgbGltaXQsIGFjdHVhbDsKLQkJc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKnNh
czsKIAkJc3RydWN0IHNjdHBfZ2V0YWRkcmVzc2VzICpzYWRkcjsKIAogCQlTQ1RQX0NIRUNLX0FO
RF9DQVNUKHNhZGRyLCBvcHR2YWwsIHN0cnVjdCBzY3RwX2dldGFkZHJlc3NlcywgKm9wdHNpemUp
OwogCQlTQ1RQX0ZJTkRfU1RDQihpbnAsIHN0Y2IsIHNhZGRyLT5zZ2V0X2Fzc29jX2lkKTsKIAot
CQlzYXMgPSAoc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKikmc2FkZHItPmFkZHJbMF07Ci0JCWxp
bWl0ID0gKm9wdHNpemUgLSBzaXplb2Yoc2N0cF9hc3NvY190KTsKLQkJYWN0dWFsID0gc2N0cF9m
aWxsX3VwX2FkZHJlc3NlcyhpbnAsIHN0Y2IsIGxpbWl0LCBzYXMpOworCQlsaW1pdCA9ICpvcHRz
aXplIC0gb2Zmc2V0b2Yoc3RydWN0IHNjdHBfZ2V0YWRkcmVzc2VzLCBhZGRyKTsKKwkJYWN0dWFs
ID0gc2N0cF9maWxsX3VwX2FkZHJlc3NlcyhpbnAsIHN0Y2IsIGxpbWl0LCAmc2FkZHItPmFkZHJb
MF0uc2EpOwogCQlpZiAoc3RjYikgewogCQkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwogCQl9Ci0J
CSpvcHRzaXplID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlKSArIGFjdHVhbDsKKwkJ
Km9wdHNpemUgPSBvZmZzZXRvZihzdHJ1Y3Qgc2N0cF9nZXRhZGRyZXNzZXMsIGFkZHIpICsgYWN0
dWFsOwogCQlicmVhazsKIAl9CiAJY2FzZSBTQ1RQX1BFRVJfQUREUl9QQVJBTVM6CkBAIC0zMTMw
LDExICszMDc5LDEyIEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFt
ZSwgdm9pZCAqb3B0dmFsLCBzaXplX3QgKm9wdHNpemUsCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlu
cC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+
c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKHBhZGRy
cC0+c3BwX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkgeworCQkJICAgICgoaW5wLT5z
Y3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAgKHBhZGRycC0+
c3BwX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQkvKiBVc2UgZW5kcG9p
bnQgZGVmYXVsdHMgKi8KIAkJCQlTQ1RQX0lOUF9STE9DSyhpbnApOwogCQkJCXBhZGRycC0+c3Bw
X3BhdGhtYXhyeHQgPSBpbnAtPnNjdHBfZXAuZGVmX25ldF9mYWlsdXJlOwotCQkJCXBhZGRycC0+
c3BwX2hiaW50ZXJ2YWwgPSBUSUNLU19UT19NU0VDKGlucC0+c2N0cF9lcC5zY3RwX3RpbWVvdXR0
aWNrc1tTQ1RQX1RJTUVSX0hFQVJUQkVBVF0pOworCQkJCXBhZGRycC0+c3BwX2hiaW50ZXJ2YWwg
PSBzY3RwX3RpY2tzX3RvX21zZWNzKGlucC0+c2N0cF9lcC5zY3RwX3RpbWVvdXR0aWNrc1tTQ1RQ
X1RJTUVSX0hFQVJUQkVBVF0pOwogCQkJCXBhZGRycC0+c3BwX2Fzc29jX2lkID0gU0NUUF9GVVRV
UkVfQVNTT0M7CiAJCQkJLyogZ2V0IGlucCdzIGRlZmF1bHQgKi8KIAkJCQlpZiAoaW5wLT5zY3Rw
X2VwLmRlZmF1bHRfZHNjcCAmIDB4MDEpIHsKQEAgLTMyOTgsNTkgKzMyNDgsNzkgQEAgc2N0cF9n
ZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVf
dCAqb3B0c2l6ZSwKIAkJc3N0YXQtPnNzdGF0X2luc3RybXMgPSBzdGNiLT5hc29jLnN0cmVhbWlu
Y250OwogCQlzc3RhdC0+c3N0YXRfb3V0c3RybXMgPSBzdGNiLT5hc29jLnN0cmVhbW91dGNudDsK
IAkJc3N0YXQtPnNzdGF0X2ZyYWdtZW50YXRpb25fcG9pbnQgPSBzY3RwX2dldF9mcmFnX3BvaW50
KHN0Y2IsICZzdGNiLT5hc29jKTsKKwkJbmV0ID0gc3RjYi0+YXNvYy5wcmltYXJ5X2Rlc3RpbmF0
aW9uOworCQlpZiAobmV0ICE9IE5VTEwpIHsKICNpZmRlZiBIQVZFX1NBX0xFTgotCQltZW1jcHko
JnNzdGF0LT5zc3RhdF9wcmltYXJ5LnNwaW5mb19hZGRyZXNzLAotCQkgICAgICAgJnN0Y2ItPmFz
b2MucHJpbWFyeV9kZXN0aW5hdGlvbi0+cm8uX2xfYWRkciwKLQkJICAgICAgICgoc3RydWN0IHNv
Y2thZGRyICopKCZzdGNiLT5hc29jLnByaW1hcnlfZGVzdGluYXRpb24tPnJvLl9sX2FkZHIpKS0+
c2FfbGVuKTsKLSNlbHNlCi0JCWlmIChzdGNiLT5hc29jLnByaW1hcnlfZGVzdGluYXRpb24tPnJv
Ll9sX2FkZHIuc2Euc2FfZmFtaWx5ID09IEFGX0lORVQpIHsKIAkJCW1lbWNweSgmc3N0YXQtPnNz
dGF0X3ByaW1hcnkuc3BpbmZvX2FkZHJlc3MsCi0JCQkgICAgICAgJnN0Y2ItPmFzb2MucHJpbWFy
eV9kZXN0aW5hdGlvbi0+cm8uX2xfYWRkciwKLQkJCSAgICAgICBzaXplb2Yoc3RydWN0IHNvY2th
ZGRyX2luKSk7Ci0JCX0gZWxzZSB7Ci0JCQltZW1jcHkoJnNzdGF0LT5zc3RhdF9wcmltYXJ5LnNw
aW5mb19hZGRyZXNzLAotCQkJICAgICAgICZzdGNiLT5hc29jLnByaW1hcnlfZGVzdGluYXRpb24t
PnJvLl9sX2FkZHIsCi0JCQkgICAgICAgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKTsKLQkJ
fQorCQkJICAgICAgICZuZXQtPnJvLl9sX2FkZHIsCisJCQkgICAgICAgKChzdHJ1Y3Qgc29ja2Fk
ZHIgKikoJm5ldC0+cm8uX2xfYWRkcikpLT5zYV9sZW4pOworI2Vsc2UKKwkJCXN3aXRjaCAoc3Rj
Yi0+YXNvYy5wcmltYXJ5X2Rlc3RpbmF0aW9uLT5yby5fbF9hZGRyLnNhLnNhX2ZhbWlseSkgewor
I2lmIGRlZmluZWQoSU5FVCkKKwkJCWNhc2UgQUZfSU5FVDoKKwkJCQltZW1jcHkoJnNzdGF0LT5z
c3RhdF9wcmltYXJ5LnNwaW5mb19hZGRyZXNzLAorCQkJCSAgICAgICAmbmV0LT5yby5fbF9hZGRy
LAorCQkJCSAgICAgICBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7CisJCQkJYnJlYWs7CiAj
ZW5kaWYKLQkJbmV0ID0gc3RjYi0+YXNvYy5wcmltYXJ5X2Rlc3RpbmF0aW9uOwotCQkoKHN0cnVj
dCBzb2NrYWRkcl9pbiAqKSZzc3RhdC0+c3N0YXRfcHJpbWFyeS5zcGluZm9fYWRkcmVzcyktPnNp
bl9wb3J0ID0gc3RjYi0+cnBvcnQ7Ci0JCS8qCi0JCSAqIEFnYWluIHRoZSB1c2VyIGNhbiBnZXQg
aW5mbyBmcm9tIHNjdHBfY29uc3RhbnRzLmgKLQkJICogZm9yIHdoYXQgdGhlIHN0YXRlIG9mIHRo
ZSBuZXR3b3JrIGlzLgotCQkgKi8KLQkJaWYgKG5ldC0+ZGVzdF9zdGF0ZSAmIFNDVFBfQUREUl9V
TkNPTkZJUk1FRCkgewotCQkJLyogSXQncyB1bmNvbmZpcm1lZCAqLwotCQkJc3N0YXQtPnNzdGF0
X3ByaW1hcnkuc3BpbmZvX3N0YXRlID0gU0NUUF9VTkNPTkZJUk1FRDsKLQkJfSBlbHNlIGlmIChu
ZXQtPmRlc3Rfc3RhdGUgJiBTQ1RQX0FERFJfUkVBQ0hBQkxFKSB7Ci0JCQkvKiBJdCdzIGFjdGl2
ZSAqLwotCQkJc3N0YXQtPnNzdGF0X3ByaW1hcnkuc3BpbmZvX3N0YXRlID0gU0NUUF9BQ1RJVkU7
Ci0JCX0gZWxzZSB7Ci0JCQkvKiBJdCdzIGluYWN0aXZlICovCi0JCQlzc3RhdC0+c3N0YXRfcHJp
bWFyeS5zcGluZm9fc3RhdGUgPSBTQ1RQX0lOQUNUSVZFOwotCQl9Ci0JCXNzdGF0LT5zc3RhdF9w
cmltYXJ5LnNwaW5mb19jd25kID0gbmV0LT5jd25kOwotCQlzc3RhdC0+c3N0YXRfcHJpbWFyeS5z
cGluZm9fc3J0dCA9IG5ldC0+bGFzdHNhID4+IFNDVFBfUlRUX1NISUZUOwotCQlzc3RhdC0+c3N0
YXRfcHJpbWFyeS5zcGluZm9fcnRvID0gbmV0LT5SVE87Ci0JCXNzdGF0LT5zc3RhdF9wcmltYXJ5
LnNwaW5mb19tdHUgPSBuZXQtPm10dTsKLQkJc3dpdGNoIChzdGNiLT5hc29jLnByaW1hcnlfZGVz
dGluYXRpb24tPnJvLl9sX2FkZHIuc2Euc2FfZmFtaWx5KSB7CisjaWYgZGVmaW5lZChJTkVUNikK
KwkJCWNhc2UgQUZfSU5FVDY6CisJCQkJbWVtY3B5KCZzc3RhdC0+c3N0YXRfcHJpbWFyeS5zcGlu
Zm9fYWRkcmVzcywKKwkJCQkgICAgICAgJm5ldC0+cm8uX2xfYWRkciwKKwkJCQkgICAgICAgc2l6
ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKTsKKwkJCQlicmVhazsKKyNlbmRpZgorI2lmIGRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKKwkJCWNhc2UgQUZfQ09OTjoKKwkJCQltZW1jcHkoJnNzdGF0LT5z
c3RhdF9wcmltYXJ5LnNwaW5mb19hZGRyZXNzLAorCQkJCSAgICAgICAmbmV0LT5yby5fbF9hZGRy
LAorCQkJCSAgICAgICBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2Nvbm4pKTsKKwkJCQlicmVhazsK
KyNlbmRpZgorCQkJZGVmYXVsdDoKKwkJCQlicmVhazsKKwkJCX0KKyNlbmRpZgorCQkJKChzdHJ1
Y3Qgc29ja2FkZHJfaW4gKikmc3N0YXQtPnNzdGF0X3ByaW1hcnkuc3BpbmZvX2FkZHJlc3MpLT5z
aW5fcG9ydCA9IHN0Y2ItPnJwb3J0OworCQkJLyoKKwkJCSAqIEFnYWluIHRoZSB1c2VyIGNhbiBn
ZXQgaW5mbyBmcm9tIHNjdHBfY29uc3RhbnRzLmgKKwkJCSAqIGZvciB3aGF0IHRoZSBzdGF0ZSBv
ZiB0aGUgbmV0d29yayBpcy4KKwkJCSAqLworCQkJaWYgKG5ldC0+ZGVzdF9zdGF0ZSAmIFNDVFBf
QUREUl9VTkNPTkZJUk1FRCkgeworCQkJCS8qIEl0J3MgdW5jb25maXJtZWQgKi8KKwkJCQlzc3Rh
dC0+c3N0YXRfcHJpbWFyeS5zcGluZm9fc3RhdGUgPSBTQ1RQX1VOQ09ORklSTUVEOworCQkJfSBl
bHNlIGlmIChuZXQtPmRlc3Rfc3RhdGUgJiBTQ1RQX0FERFJfUkVBQ0hBQkxFKSB7CisJCQkJLyog
SXQncyBhY3RpdmUgKi8KKwkJCQlzc3RhdC0+c3N0YXRfcHJpbWFyeS5zcGluZm9fc3RhdGUgPSBT
Q1RQX0FDVElWRTsKKwkJCX0gZWxzZSB7CisJCQkJLyogSXQncyBpbmFjdGl2ZSAqLworCQkJCXNz
dGF0LT5zc3RhdF9wcmltYXJ5LnNwaW5mb19zdGF0ZSA9IFNDVFBfSU5BQ1RJVkU7CisJCQl9CisJ
CQlzc3RhdC0+c3N0YXRfcHJpbWFyeS5zcGluZm9fY3duZCA9IG5ldC0+Y3duZDsKKwkJCXNzdGF0
LT5zc3RhdF9wcmltYXJ5LnNwaW5mb19zcnR0ID0gbmV0LT5sYXN0c2EgPj4gU0NUUF9SVFRfU0hJ
RlQ7CisJCQlzc3RhdC0+c3N0YXRfcHJpbWFyeS5zcGluZm9fcnRvID0gbmV0LT5SVE87CisJCQlz
c3RhdC0+c3N0YXRfcHJpbWFyeS5zcGluZm9fbXR1ID0gbmV0LT5tdHU7CisJCQlzd2l0Y2ggKHN0
Y2ItPmFzb2MucHJpbWFyeV9kZXN0aW5hdGlvbi0+cm8uX2xfYWRkci5zYS5zYV9mYW1pbHkpIHsK
ICNpZiBkZWZpbmVkKElORVQpCi0JCWNhc2UgQUZfSU5FVDoKLQkJCXNzdGF0LT5zc3RhdF9wcmlt
YXJ5LnNwaW5mb19tdHUgLT0gU0NUUF9NSU5fVjRfT1ZFUkhFQUQ7Ci0JCQlicmVhazsKKwkJCWNh
c2UgQUZfSU5FVDoKKwkJCQlzc3RhdC0+c3N0YXRfcHJpbWFyeS5zcGluZm9fbXR1IC09IFNDVFBf
TUlOX1Y0X09WRVJIRUFEOworCQkJCWJyZWFrOwogI2VuZGlmCiAjaWYgZGVmaW5lZChJTkVUNikK
LQkJY2FzZSBBRl9JTkVUNjoKLQkJCXNzdGF0LT5zc3RhdF9wcmltYXJ5LnNwaW5mb19tdHUgLT0g
U0NUUF9NSU5fT1ZFUkhFQUQ7Ci0JCQlicmVhazsKKwkJCWNhc2UgQUZfSU5FVDY6CisJCQkJc3N0
YXQtPnNzdGF0X3ByaW1hcnkuc3BpbmZvX210dSAtPSBTQ1RQX01JTl9PVkVSSEVBRDsKKwkJCQli
cmVhazsKICNlbmRpZgogI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKLQkJY2FzZSBBRl9DT05O
OgotCQkJc3N0YXQtPnNzdGF0X3ByaW1hcnkuc3BpbmZvX210dSAtPSBzaXplb2Yoc3RydWN0IHNj
dHBoZHIpOwotCQkJYnJlYWs7CisJCQljYXNlIEFGX0NPTk46CisJCQkJc3N0YXQtPnNzdGF0X3By
aW1hcnkuc3BpbmZvX210dSAtPSBzaXplb2Yoc3RydWN0IHNjdHBoZHIpOworCQkJCWJyZWFrOwog
I2VuZGlmCi0JCWRlZmF1bHQ6Ci0JCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJYnJlYWs7CisJ
CQl9CisJCX0gZWxzZSB7CisJCQltZW1zZXQoJnNzdGF0LT5zc3RhdF9wcmltYXJ5LCAwLCBzaXpl
b2Yoc3RydWN0IHNjdHBfcGFkZHJpbmZvKSk7CiAJCX0KIAkJc3N0YXQtPnNzdGF0X3ByaW1hcnku
c3BpbmZvX2Fzc29jX2lkID0gc2N0cF9nZXRfYXNzb2NpZChzdGNiKTsKIAkJU0NUUF9UQ0JfVU5M
T0NLKHN0Y2IpOwpAQCAtMzM3Miw3ICszMzQyLDggQEAgc2N0cF9nZXRvcHQoc3RydWN0IHNvY2tl
dCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCAqb3B0c2l6ZSwKIAkJfSBl
bHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkg
fHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkg
fHwKLQkJCSAgICAoc3J0by0+c3J0b19hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsK
KwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJ
CQkgICAgIChzcnRvLT5zcnRvX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJ
CQlTQ1RQX0lOUF9STE9DSyhpbnApOwogCQkJCXNydG8tPnNydG9faW5pdGlhbCA9IGlucC0+c2N0
cF9lcC5pbml0aWFsX3J0bzsKIAkJCQlzcnRvLT5zcnRvX21heCA9IGlucC0+c2N0cF9lcC5zY3Rw
X21heHJ0bzsKQEAgLTM0MTksNyArMzM5MCw3IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQg
KnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3QgKm9wdHNpemUsCiAJCVNDVFBf
RklORF9TVENCKGlucCwgc3RjYiwgc2Fzb2MtPnNhc29jX2Fzc29jX2lkKTsKIAogCQlpZiAoc3Rj
YikgewotCQkJc2Fzb2MtPnNhc29jX2Nvb2tpZV9saWZlID0gVElDS1NfVE9fTVNFQyhzdGNiLT5h
c29jLmNvb2tpZV9saWZlKTsKKwkJCXNhc29jLT5zYXNvY19jb29raWVfbGlmZSA9IHNjdHBfdGlj
a3NfdG9fbXNlY3Moc3RjYi0+YXNvYy5jb29raWVfbGlmZSk7CiAJCQlzYXNvYy0+c2Fzb2NfYXNv
Y21heHJ4dCA9IHN0Y2ItPmFzb2MubWF4X3NlbmRfdGltZXM7CiAJCQlzYXNvYy0+c2Fzb2NfbnVt
YmVyX3BlZXJfZGVzdGluYXRpb25zID0gc3RjYi0+YXNvYy5udW1uZXRzOwogCQkJc2Fzb2MtPnNh
c29jX3BlZXJfcnduZCA9IHN0Y2ItPmFzb2MucGVlcnNfcnduZDsKQEAgLTM0MjgsOSArMzM5OSwx
MCBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9w
dHZhbCwgc2l6ZV90ICpvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxh
Z3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3Mg
JiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChzYXNvYy0+c2Fzb2NfYXNz
b2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3Mg
JiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoc2Fzb2MtPnNhc29jX2Fzc29j
X2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9STE9DSyhpbnApOwot
CQkJCXNhc29jLT5zYXNvY19jb29raWVfbGlmZSA9IFRJQ0tTX1RPX01TRUMoaW5wLT5zY3RwX2Vw
LmRlZl9jb29raWVfbGlmZSk7CisJCQkJc2Fzb2MtPnNhc29jX2Nvb2tpZV9saWZlID0gc2N0cF90
aWNrc190b19tc2VjcyhpbnAtPnNjdHBfZXAuZGVmX2Nvb2tpZV9saWZlKTsKIAkJCQlzYXNvYy0+
c2Fzb2NfYXNvY21heHJ4dCA9IGlucC0+c2N0cF9lcC5tYXhfc2VuZF90aW1lczsKIAkJCQlzYXNv
Yy0+c2Fzb2NfbnVtYmVyX3BlZXJfZGVzdGluYXRpb25zID0gMDsKIAkJCQlzYXNvYy0+c2Fzb2Nf
cGVlcl9yd25kID0gMDsKQEAgLTM0NTksNyArMzQzMSw4IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBz
b2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3QgKm9wdHNpemUsCiAJ
CX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZ
UEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBP
T0wpIHx8Ci0JCQkgICAgKHNfaW5mby0+c2luZm9fYXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNT
T0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBF
KSAmJgorCQkJICAgICAoc19pbmZvLT5zaW5mb19hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NP
QykpKSB7CiAJCQkJU0NUUF9JTlBfUkxPQ0soaW5wKTsKIAkJCQltZW1jcHkoc19pbmZvLCAmaW5w
LT5kZWZfc2VuZCwgc2l6ZW9mKGlucC0+ZGVmX3NlbmQpKTsKIAkJCQlTQ1RQX0lOUF9SVU5MT0NL
KGlucCk7CkBAIC0zNTg0LDcgKzM1NTcsOCBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpz
bywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRzaXplLAogCQl9IGVsc2Ug
ewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAog
CQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAot
CQkJICAgIChzY2FjdC0+c2NhY3RfYXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJ
CQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJ
ICAgICAoc2NhY3QtPnNjYWN0X2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJ
CQkvKiBnZXQgdGhlIGVuZHBvaW50IGFjdGl2ZSBrZXkgKi8KIAkJCQlTQ1RQX0lOUF9STE9DSyhp
bnApOwogCQkJCXNjYWN0LT5zY2FjdF9rZXludW1iZXIgPSBpbnAtPnNjdHBfZXAuZGVmYXVsdF9r
ZXlpZDsKQEAgLTM2MjYsNyArMzYwMCw4IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNv
LCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3QgKm9wdHNpemUsCiAJCX0gZWxzZSB7
CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJ
CQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0J
CQkgICAgKHNhYy0+Z2F1dGhfYXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkg
ICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAg
ICAoc2FjLT5nYXV0aF9hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpKSB7CiAJCQkJLyog
Z2V0IG9mZiB0aGUgZW5kcG9pbnQgKi8KIAkJCQlTQ1RQX0lOUF9STE9DSyhpbnApOwogCQkJCWNo
a2xpc3QgPSBpbnAtPnNjdHBfZXAubG9jYWxfYXV0aF9jaHVua3M7CkBAIC0zNzU4LDcgKzM3MzMs
OCBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9w
dHZhbCwgc2l6ZV90ICpvcHRzaXplLAogCQkJfSBlbHNlIHsKIAkJCQlpZiAoKGlucC0+c2N0cF9m
bGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkJICAgIChpbnAtPnNjdHBfZmxh
Z3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJCSAgICAoZXZlbnQtPnNlX2Fz
c29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkgeworCQkJCSAgICAoKGlucC0+c2N0cF9mbGFn
cyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkJICAgICAoZXZlbnQtPnNlX2Fzc29j
X2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQkJU0NUUF9JTlBfUkxPQ0soaW5wKTsK
IAkJCQkJZXZlbnQtPnNlX29uID0gc2N0cF9pc19mZWF0dXJlX29uKGlucCwgZXZlbnRfdHlwZSk7
CiAJCQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKQEAgLTM4MzEsNyArMzgwNyw4IEBAIHNjdHBf
Z2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXpl
X3QgKm9wdHNpemUsCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBf
UENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENC
X0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKGluZm8tPnNuZF9hc3NvY19pZCA9PSBTQ1RQ
X0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZM
QUdTX1VEUFRZUEUpICYmCisJCQkgICAgIChpbmZvLT5zbmRfYXNzb2NfaWQgPT0gU0NUUF9GVVRV
UkVfQVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJaW5mby0+c25kX3Np
ZCA9IGlucC0+ZGVmX3NlbmQuc2luZm9fc3RyZWFtOwogCQkJCWluZm8tPnNuZF9mbGFncyA9IGlu
cC0+ZGVmX3NlbmQuc2luZm9fZmxhZ3M7CkBAIC0zODYzLDcgKzM4NDAsOCBAQCBzY3RwX2dldG9w
dChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpv
cHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9G
TEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFH
U19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChpbmZvLT5wcl9hc3NvY19pZCA9PSBTQ1RQX0ZVVFVS
RV9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VE
UFRZUEUpICYmCisJCQkgICAgIChpbmZvLT5wcl9hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NP
QykpKSB7CiAJCQkJU0NUUF9JTlBfUkxPQ0soaW5wKTsKIAkJCQlpbmZvLT5wcl9wb2xpY3kgPSBQ
Ul9TQ1RQX1BPTElDWShpbnAtPmRlZl9zZW5kLnNpbmZvX2ZsYWdzKTsKIAkJCQlpbmZvLT5wcl92
YWx1ZSA9IGlucC0+ZGVmX3NlbmQuc2luZm9fdGltZXRvbGl2ZTsKQEAgLTM5ODQsNyArMzk2Miw4
IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0
dmFsLCBzaXplX3QgKm9wdHNpemUsCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFn
cyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAm
IFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKHRobGRzLT5zcHRfYXNzb2Nf
aWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBT
Q1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAodGhsZHMtPnNwdF9hc3NvY19pZCA9
PSBTQ1RQX0ZVVFVSRV9BU1NPQykpKSB7CiAJCQkJLyogVXNlIGVuZHBvaW50IGRlZmF1bHRzICov
CiAJCQkJU0NUUF9JTlBfUkxPQ0soaW5wKTsKIAkJCQl0aGxkcy0+c3B0X3BhdGhtYXhyeHQgPSBp
bnAtPnNjdHBfZXAuZGVmX25ldF9mYWlsdXJlOwpAQCAtNDEwMiw3ICs0MDgxLDggQEAgc2N0cF9n
ZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVf
dCAqb3B0c2l6ZSwKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9Q
Q0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0Jf
RkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAgICAoZW5jYXBzLT5zdWVfYXNzb2NfaWQgPT0gU0NU
UF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9G
TEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoZW5jYXBzLT5zdWVfYXNzb2NfaWQgPT0gU0NUUF9G
VVRVUkVfQVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJZW5jYXBzLT5z
dWVfcG9ydCA9IGlucC0+c2N0cF9lcC5wb3J0OwogCQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsK
QEAgLTQxMjksNyArNDEwOSw4IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQg
b3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3QgKm9wdHNpemUsCiAJCX0gZWxzZSB7CiAJCQlp
ZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAg
KGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAg
KGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0
cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgIChhdi0+YXNzb2Nf
aWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJ
CQkJYXYtPmFzc29jX3ZhbHVlID0gaW5wLT5lY25fc3VwcG9ydGVkOwogCQkJCVNDVFBfSU5QX1JV
TkxPQ0soaW5wKTsKQEAgLTQxNTYsNyArNDEzNyw4IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2Nr
ZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3QgKm9wdHNpemUsCiAJCX0g
ZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUp
IHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wp
IHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAg
ICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAg
IChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1JM
T0NLKGlucCk7CiAJCQkJYXYtPmFzc29jX3ZhbHVlID0gaW5wLT5wcnNjdHBfc3VwcG9ydGVkOwog
CQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKQEAgLTQxODMsNyArNDE2NSw4IEBAIHNjdHBfZ2V0
b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qg
Km9wdHNpemUsCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENC
X0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZM
QUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9B
U1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZ
UEUpICYmCisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkgewog
CQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJYXYtPmFzc29jX3ZhbHVlID0gaW5wLT5hdXRo
X3N1cHBvcnRlZDsKIAkJCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CkBAIC00MjEwLDcgKzQxOTMs
OCBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9w
dHZhbCwgc2l6ZV90ICpvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxh
Z3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3Mg
JiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChhdi0+YXNzb2NfaWQgPT0g
U0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BD
Ql9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJF
X0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9STE9DSyhpbnApOwogCQkJCWF2LT5hc3NvY192YWx1
ZSA9IGlucC0+YXNjb25mX3N1cHBvcnRlZDsKIAkJCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CkBA
IC00MjM3LDcgKzQyMjEsOCBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9w
dG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYg
KChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChp
bnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChh
di0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBf
ZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoYXYtPmFzc29jX2lk
ID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9STE9DSyhpbnApOwogCQkJ
CWF2LT5hc3NvY192YWx1ZSA9IGlucC0+cmVjb25maWdfc3VwcG9ydGVkOwogCQkJCVNDVFBfSU5Q
X1JVTkxPQ0soaW5wKTsKQEAgLTQyNjQsNyArNDI0OSw4IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBz
b2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3QgKm9wdHNpemUsCiAJ
CX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZ
UEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBP
T0wpIHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJ
CSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkg
ICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkgewogCQkJCVNDVFBfSU5Q
X1JMT0NLKGlucCk7CiAJCQkJYXYtPmFzc29jX3ZhbHVlID0gaW5wLT5ucnNhY2tfc3VwcG9ydGVk
OwogCQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKQEAgLTQyOTEsNyArNDI3Nyw4IEBAIHNjdHBf
Z2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXpl
X3QgKm9wdHNpemUsCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBf
UENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENC
X0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVS
RV9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VE
UFRZUEUpICYmCisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkg
ewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJYXYtPmFzc29jX3ZhbHVlID0gaW5wLT5w
a3Rkcm9wX3N1cHBvcnRlZDsKIAkJCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CkBAIC00MzE4LDcg
KzQzMDUsOCBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZv
aWQgKm9wdHZhbCwgc2l6ZV90ICpvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNj
dHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBf
ZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChhdi0+YXNzb2Nf
aWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBT
Q1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoYXYtPmFzc29jX2lkID09IFNDVFBf
RlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9STE9DSyhpbnApOwogCQkJCWF2LT5hc3Nv
Y192YWx1ZSA9ICh1aW50MzJfdClpbnAtPmxvY2FsX3N0cnJlc2V0X3N1cHBvcnQ7CiAJCQkJU0NU
UF9JTlBfUlVOTE9DSyhpbnApOwpAQCAtNDQyMCw3ICs0NDA4LDggQEAgc2N0cF9nZXRvcHQoc3Ry
dWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCAqb3B0c2l6
ZSwKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1Nf
VENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5f
VENQUE9PTCkgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkg
eworCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYK
KwkJCSAgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpKSB7CiAJCQkJU0NU
UF9JTlBfUkxPQ0soaW5wKTsKIAkJCQlhdi0+YXNzb2NfdmFsdWUgPSBpbnAtPm1heF9jd25kOwog
CQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKQEAgLTQ0NDUsNyArNDQzNCw3IEBAIHNjdHBfZ2V0
b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qg
Km9wdHNpemUsCiAJcmV0dXJuIChlcnJvcik7CiB9CiAKLSNpZiBkZWZpbmVkKF9fUGFuZGFfXykg
fHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIGlu
dAogI2Vsc2UKIHN0YXRpYyBpbnQKQEAgLTQ0NjAsMTMgKzQ0NDksMTEgQEAgc2N0cF9zZXRvcHQo
c3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRz
aXplLAogCXVpbnQzMl90IHZyZl9pZDsKIAogCWlmIChvcHR2YWwgPT0gTlVMTCkgewotCQlTQ1RQ
X1BSSU5URigib3B0dmFsIGlzIE5VTExcbiIpOwogCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwg
TlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBFSU5WQUwpOwogCQlyZXR1cm4gKEVJ
TlZBTCk7CiAJfQogCWlucCA9IChzdHJ1Y3Qgc2N0cF9pbnBjYiAqKXNvLT5zb19wY2I7CiAJaWYg
KGlucCA9PSBOVUxMKSB7Ci0JCVNDVFBfUFJJTlRGKCJpbnAgaXMgTlVMTD9cbiIpOwogCQlTQ1RQ
X0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBF
SU5WQUwpOwogCQlyZXR1cm4gKEVJTlZBTCk7CiAJfQpAQCAtNDUzNiw3ICs0NTIzLDcgQEAgc2N0
cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNp
emVfdCBvcHRzaXplLAogCQkJICogVGhlIHZhbHVlIGlzIGluIHRpY2tzLiBOb3RlIHRoaXMgZG9l
cyBub3QgZWZmZWN0CiAJCQkgKiBvbGQgYXNzb2NpYXRpb25zLCBvbmx5IG5ldyBvbmVzLgogCQkJ
ICovCi0JCQlpbnAtPnNjdHBfZXAuYXV0b19jbG9zZV90aW1lID0gU0VDX1RPX1RJQ0tTKCptb3B0
KTsKKwkJCWlucC0+c2N0cF9lcC5hdXRvX2Nsb3NlX3RpbWUgPSBzY3RwX3NlY3NfdG9fdGlja3Mo
Km1vcHQpOwogCQkJYnJlYWs7CiAJCX0KIAkJU0NUUF9JTlBfV0xPQ0soaW5wKTsKQEAgLTQ2MTUs
NyArNDYwMiw4IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwg
dm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5z
Y3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3Rw
X2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAgICAoYXYtPmFzc29j
X2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkgeworCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYg
U0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQ
X0ZVVFVSRV9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfV0xPQ0soaW5wKTsKIAkJCQlpZiAoYXYt
PmFzc29jX3ZhbHVlID09IDApIHsKIAkJCQkJaW5wLT5pZGF0YV9zdXBwb3J0ZWQgPSAwOwpAQCAt
NDY1NCwxNCArNDY0MiwxNiBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9w
dG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90IG9wdHNpemUsCiAJCQl9IGVsc2UgewogCQkJCWlm
ICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCQkgICAg
KGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkJICAg
IChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpIHx8Ci0JCQkJICAgIChhdi0+YXNz
b2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSB7CisJCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYg
U0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCQkgICAgICgoYXYtPmFzc29jX2lkID09IFND
VFBfRlVUVVJFX0FTU09DKSB8fAorCQkJCSAgICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9BTExf
QVNTT0MpKSkpIHsKIAkJCQkJU0NUUF9JTlBfV0xPQ0soaW5wKTsKIAkJCQkJaW5wLT5zY3RwX2Nt
dF9vbl9vZmYgPSBhdi0+YXNzb2NfdmFsdWU7CiAJCQkJCVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsK
IAkJCQl9Ci0JCQkJaWYgKChhdi0+YXNzb2NfaWQgPT0gU0NUUF9DVVJSRU5UX0FTU09DKSB8fAot
CQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkgeworCQkJCWlmICgoaW5w
LT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCQkgICAgKChhdi0+
YXNzb2NfaWQgPT0gU0NUUF9DVVJSRU5UX0FTU09DKSB8fAorCQkJCSAgICAgKGF2LT5hc3NvY19p
ZCA9PSBTQ1RQX0FMTF9BU1NPQykpKSB7CiAJCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJ
CUxJU1RfRk9SRUFDSChzdGNiLCAmaW5wLT5zY3RwX2Fzb2NfbGlzdCwgc2N0cF90Y2JsaXN0KSB7
CiAJCQkJCQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwpAQCAtNDcwMywxNCArNDY5MywxNiBAQCBzY3Rw
X3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6
ZV90IG9wdHNpemUsCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBf
UENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENC
X0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVS
RV9BU1NPQykgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkgewor
CQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJ
CSAgICAgKChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpIHx8CisJCQkgICAgICAo
YXYtPmFzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkpKSB7CiAJCQkJU0NUUF9JTlBfV0xPQ0so
aW5wKTsKIAkJCQlpbnAtPnNjdHBfZXAuc2N0cF9kZWZhdWx0X2NjX21vZHVsZSA9IGF2LT5hc3Nv
Y192YWx1ZTsKIAkJCQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7CiAJCQl9Ci0JCQlpZiAoKGF2LT5h
c3NvY19pZCA9PSBTQ1RQX0NVUlJFTlRfQVNTT0MpIHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9
PSBTQ1RQX0FMTF9BU1NPQykpIHsKKwkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0Jf
RkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAoKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0NVUlJFTlRf
QVNTT0MpIHx8CisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSkgewog
CQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJTElTVF9GT1JFQUNIKHN0Y2IsICZpbnAtPnNj
dHBfYXNvY19saXN0LCBzY3RwX3RjYmxpc3QpIHsKIAkJCQkJU0NUUF9UQ0JfTE9DSyhzdGNiKTsK
QEAgLTQ3MzUsNyArNDcyNyw4IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQg
b3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJU0NUUF9DSEVDS19BTkRf
Q0FTVChjY19vcHQsIG9wdHZhbCwgc3RydWN0IHNjdHBfY2Nfb3B0aW9uLCBvcHRzaXplKTsKIAkJ
U0NUUF9GSU5EX1NUQ0IoaW5wLCBzdGNiLCBjY19vcHQtPmFpZF92YWx1ZS5hc3NvY19pZCk7CiAJ
CWlmIChzdGNiID09IE5VTEwpIHsKLQkJCWlmIChjY19vcHQtPmFpZF92YWx1ZS5hc3NvY19pZCA9
PSBTQ1RQX0NVUlJFTlRfQVNTT0MpIHsKKwkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9Q
Q0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAoY2Nfb3B0LT5haWRfdmFsdWUuYXNzb2NfaWQg
PT0gU0NUUF9DVVJSRU5UX0FTU09DKSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJ
TElTVF9GT1JFQUNIKHN0Y2IsICZpbnAtPnNjdHBfYXNvY19saXN0LCBzY3RwX3RjYmxpc3QpIHsK
IAkJCQkJU0NUUF9UQ0JfTE9DSyhzdGNiKTsKQEAgLTQ3NzYsMjkgKzQ3NjksMzUgQEAgc2N0cF9z
ZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVf
dCBvcHRzaXplLAogCQl9CiAJCVNDVFBfRklORF9TVENCKGlucCwgc3RjYiwgYXYtPmFzc29jX2lk
KTsKIAkJaWYgKHN0Y2IpIHsKKwkJCVNDVFBfVENCX1NFTkRfTE9DSyhzdGNiKTsKIAkJCXN0Y2It
PmFzb2Muc3NfZnVuY3Rpb25zLnNjdHBfc3NfY2xlYXIoc3RjYiwgJnN0Y2ItPmFzb2MsIDEsIDEp
OwogCQkJc3RjYi0+YXNvYy5zc19mdW5jdGlvbnMgPSBzY3RwX3NzX2Z1bmN0aW9uc1thdi0+YXNz
b2NfdmFsdWVdOwogCQkJc3RjYi0+YXNvYy5zdHJlYW1fc2NoZWR1bGluZ19tb2R1bGUgPSBhdi0+
YXNzb2NfdmFsdWU7CiAJCQlzdGNiLT5hc29jLnNzX2Z1bmN0aW9ucy5zY3RwX3NzX2luaXQoc3Rj
YiwgJnN0Y2ItPmFzb2MsIDEpOworCQkJU0NUUF9UQ0JfU0VORF9VTkxPQ0soc3RjYik7CiAJCQlT
Q1RQX1RDQl9VTkxPQ0soc3RjYik7CiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFn
cyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAm
IFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9PSBT
Q1RQX0ZVVFVSRV9BU1NPQykgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfQUxMX0FT
U09DKSkgeworCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQ
RSkgJiYKKwkJCSAgICAgKChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpIHx8CisJ
CQkgICAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkpKSB7CiAJCQkJU0NUUF9J
TlBfV0xPQ0soaW5wKTsKIAkJCQlpbnAtPnNjdHBfZXAuc2N0cF9kZWZhdWx0X3NzX21vZHVsZSA9
IGF2LT5hc3NvY192YWx1ZTsKIAkJCQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7CiAJCQl9Ci0JCQlp
ZiAoKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0NVUlJFTlRfQVNTT0MpIHx8Ci0JCQkgICAgKGF2LT5h
c3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpIHsKKwkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYg
U0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAoKGF2LT5hc3NvY19pZCA9PSBTQ1RQ
X0NVUlJFTlRfQVNTT0MpIHx8CisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9BTExfQVNT
T0MpKSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJTElTVF9GT1JFQUNIKHN0Y2Is
ICZpbnAtPnNjdHBfYXNvY19saXN0LCBzY3RwX3RjYmxpc3QpIHsKIAkJCQkJU0NUUF9UQ0JfTE9D
SyhzdGNiKTsKKwkJCQkJU0NUUF9UQ0JfU0VORF9MT0NLKHN0Y2IpOwogCQkJCQlzdGNiLT5hc29j
LnNzX2Z1bmN0aW9ucy5zY3RwX3NzX2NsZWFyKHN0Y2IsICZzdGNiLT5hc29jLCAxLCAxKTsKIAkJ
CQkJc3RjYi0+YXNvYy5zc19mdW5jdGlvbnMgPSBzY3RwX3NzX2Z1bmN0aW9uc1thdi0+YXNzb2Nf
dmFsdWVdOwogCQkJCQlzdGNiLT5hc29jLnN0cmVhbV9zY2hlZHVsaW5nX21vZHVsZSA9IGF2LT5h
c3NvY192YWx1ZTsKIAkJCQkJc3RjYi0+YXNvYy5zc19mdW5jdGlvbnMuc2N0cF9zc19pbml0KHN0
Y2IsICZzdGNiLT5hc29jLCAxKTsKKwkJCQkJU0NUUF9UQ0JfU0VORF9VTkxPQ0soc3RjYik7CiAJ
CQkJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKIAkJCQl9CiAJCQkJU0NUUF9JTlBfUlVOTE9DSyhp
bnApOwpAQCAtNDgyMSw3ICs0ODIwLDggQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28s
IGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQkJfQogCQkJU0NU
UF9UQ0JfVU5MT0NLKHN0Y2IpOwogCQl9IGVsc2UgewotCQkJaWYgKGF2LT5hc3NvY19pZCA9PSBT
Q1RQX0NVUlJFTlRfQVNTT0MpIHsKKwkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0Jf
RkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9B
U1NPQykpIHsKIAkJCQlTQ1RQX0lOUF9STE9DSyhpbnApOwogCQkJCUxJU1RfRk9SRUFDSChzdGNi
LCAmaW5wLT5zY3RwX2Fzb2NfbGlzdCwgc2N0cF90Y2JsaXN0KSB7CiAJCQkJCVNDVFBfVENCX0xP
Q0soc3RjYik7CkBAIC00ODU5LDE0ICs0ODU5LDE2IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2Nr
ZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJfSBl
bHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkg
fHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkg
fHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSB8fAotCQkJICAg
IChhdi0+YXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBf
ZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoKGF2LT5hc3NvY19p
ZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykgfHwKKwkJCSAgICAgIChhdi0+YXNzb2NfaWQgPT0gU0NU
UF9BTExfQVNTT0MpKSkpIHsKIAkJCQlTQ1RQX0lOUF9XTE9DSyhpbnApOwogCQkJCWlucC0+c2N0
cF9jb250ZXh0ID0gYXYtPmFzc29jX3ZhbHVlOwogCQkJCVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsK
IAkJCX0KLQkJCWlmICgoYXYtPmFzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKLQkJ
CSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkgeworCQkJaWYgKChpbnAtPnNj
dHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICgoYXYtPmFzc29j
X2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKKwkJCSAgICAgKGF2LT5hc3NvY19pZCA9PSBT
Q1RQX0FMTF9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfUkxPQ0soaW5wKTsKIAkJCQlMSVNUX0ZP
UkVBQ0goc3RjYiwgJmlucC0+c2N0cF9hc29jX2xpc3QsIHNjdHBfdGNibGlzdCkgewogCQkJCQlT
Q1RQX1RDQl9MT0NLKHN0Y2IpOwpAQCAtNTAyMywxMCArNTAyNSwxMiBAQCBzY3RwX3NldG9wdChz
dHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90IG9wdHNp
emUsCiAJCVNDVFBfQ0hFQ0tfQU5EX0NBU1Qoc2Fjaywgb3B0dmFsLCBzdHJ1Y3Qgc2N0cF9zYWNr
X2luZm8sIG9wdHNpemUpOwogCQlTQ1RQX0ZJTkRfU1RDQihpbnAsIHN0Y2IsIHNhY2stPnNhY2tf
YXNzb2NfaWQpOwogCQlpZiAoc2Fjay0+c2Fja19kZWxheSkgewotCQkJaWYgKHNhY2stPnNhY2tf
ZGVsYXkgPiBTQ1RQX01BWF9TQUNLX0RFTEFZKQotCQkJCXNhY2stPnNhY2tfZGVsYXkgPSBTQ1RQ
X01BWF9TQUNLX0RFTEFZOwotCQkJaWYgKE1TRUNfVE9fVElDS1Moc2Fjay0+c2Fja19kZWxheSkg
PCAxKSB7Ci0JCQkJc2Fjay0+c2Fja19kZWxheSA9IFRJQ0tTX1RPX01TRUMoMSk7CisJCQlpZiAo
c2Fjay0+c2Fja19kZWxheSA+IFNDVFBfTUFYX1NBQ0tfREVMQVkpIHsKKwkJCQllcnJvciA9IEVJ
TlZBTDsKKwkJCQlpZiAoc3RjYiAhPSBOVUxMKSB7CisJCQkJCVNDVFBfVENCX1VOTE9DSyhzdGNi
KTsKKwkJCQl9CisJCQkJYnJlYWs7CiAJCQl9CiAJCX0KIAkJaWYgKHN0Y2IpIHsKQEAgLTUwNDAs
MTkgKzUwNDQsMjEgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1l
LCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAt
PnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNj
dHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChzYWNrLT5z
YWNrX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSB8fAotCQkJICAgIChzYWNrLT5zYWNr
X2Fzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkgeworCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdz
ICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAgKChzYWNrLT5zYWNrX2Fzc29j
X2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSB8fAorCQkJICAgICAgKHNhY2stPnNhY2tfYXNzb2Nf
aWQgPT0gU0NUUF9BTExfQVNTT0MpKSkpIHsKIAkJCQlTQ1RQX0lOUF9XTE9DSyhpbnApOwogCQkJ
CWlmIChzYWNrLT5zYWNrX2RlbGF5KSB7Ci0JCQkJCWlucC0+c2N0cF9lcC5zY3RwX3RpbWVvdXR0
aWNrc1tTQ1RQX1RJTUVSX1JFQ1ZdID0gTVNFQ19UT19USUNLUyhzYWNrLT5zYWNrX2RlbGF5KTsK
KwkJCQkJaW5wLT5zY3RwX2VwLnNjdHBfdGltZW91dHRpY2tzW1NDVFBfVElNRVJfUkVDVl0gPSBz
Y3RwX21zZWNzX3RvX3RpY2tzKHNhY2stPnNhY2tfZGVsYXkpOwogCQkJCX0KIAkJCQlpZiAoc2Fj
ay0+c2Fja19mcmVxKSB7CiAJCQkJCWlucC0+c2N0cF9lcC5zY3RwX3NhY2tfZnJlcSA9IHNhY2st
PnNhY2tfZnJlcTsKIAkJCQl9CiAJCQkJU0NUUF9JTlBfV1VOTE9DSyhpbnApOwogCQkJfQotCQkJ
aWYgKChzYWNrLT5zYWNrX2Fzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKLQkJCSAg
ICAoc2Fjay0+c2Fja19hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpIHsKKwkJCWlmICgoaW5w
LT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAoKHNhY2st
PnNhY2tfYXNzb2NfaWQgPT0gU0NUUF9DVVJSRU5UX0FTU09DKSB8fAorCQkJICAgICAoc2Fjay0+
c2Fja19hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfUkxPQ0so
aW5wKTsKIAkJCQlMSVNUX0ZPUkVBQ0goc3RjYiwgJmlucC0+c2N0cF9hc29jX2xpc3QsIHNjdHBf
dGNibGlzdCkgewogCQkJCQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwpAQCAtNTA5Nyw3ICs1MTAzLDcg
QEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2
YWwsIHNpemVfdCBvcHRzaXplLAogCQlpZiAoc2NhLT5zY2Ffa2V5bGVuZ3RoID09IDApIHsKIAkJ
CXNpemUgPSBvcHRzaXplIC0gc2l6ZW9mKHN0cnVjdCBzY3RwX2F1dGhrZXkpOwogCQl9IGVsc2Ug
ewotCQkgICAgICAgIGlmIChzY2EtPnNjYV9rZXlsZW5ndGggKyBzaXplb2Yoc3RydWN0IHNjdHBf
YXV0aGtleSkgPD0gb3B0c2l6ZSkgeworCQkJaWYgKHNjYS0+c2NhX2tleWxlbmd0aCArIHNpemVv
ZihzdHJ1Y3Qgc2N0cF9hdXRoa2V5KSA8PSBvcHRzaXplKSB7CiAJCQkJc2l6ZSA9IHNjYS0+c2Nh
X2tleWxlbmd0aDsKIAkJCX0gZWxzZSB7CiAJCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5V
TEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1VTUlJFUSwgRUlOVkFMKTsKQEAgLTUxMzksOCArNTE0
NSw5IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAq
b3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2Zs
YWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdz
ICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAgICAoc2NhLT5zY2FfYXNzb2Nf
aWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpIHx8Ci0JCQkgICAgKHNjYS0+c2NhX2Fzc29jX2lkID09
IFNDVFBfQUxMX0FTU09DKSkgeworCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0Jf
RkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAgKChzY2EtPnNjYV9hc3NvY19pZCA9PSBTQ1RQX0ZV
VFVSRV9BU1NPQykgfHwKKwkJCSAgICAgIChzY2EtPnNjYV9hc3NvY19pZCA9PSBTQ1RQX0FMTF9B
U1NPQykpKSkgewogCQkJCVNDVFBfSU5QX1dMT0NLKGlucCk7CiAJCQkJc2hhcmVkX2tleXMgPSAm
aW5wLT5zY3RwX2VwLnNoYXJlZF9rZXlzOwogCQkJCS8qCkBAIC01MTc0LDggKzUxODEsOSBAQCBz
Y3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwg
c2l6ZV90IG9wdHNpemUsCiAJCQkJZXJyb3IgPSBzY3RwX2luc2VydF9zaGFyZWRrZXkoc2hhcmVk
X2tleXMsIHNoYXJlZF9rZXkpOwogCQkJCVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsKIAkJCX0KLQkJ
CWlmICgoc2NhLT5zY2FfYXNzb2NfaWQgPT0gU0NUUF9DVVJSRU5UX0FTU09DKSB8fAotCQkJICAg
IChzY2EtPnNjYV9hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpIHsKKwkJCWlmICgoaW5wLT5z
Y3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAoKHNjYS0+c2Nh
X2Fzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKKwkJCSAgICAgKHNjYS0+c2NhX2Fz
c29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9STE9DSyhpbnApOwog
CQkJCUxJU1RfRk9SRUFDSChzdGNiLCAmaW5wLT5zY3RwX2Fzb2NfbGlzdCwgc2N0cF90Y2JsaXN0
KSB7CiAJCQkJCVNDVFBfVENCX0xPQ0soc3RjYik7CkBAIC01MjgzLDggKzUyOTEsOSBAQCBzY3Rw
X3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6
ZV90IG9wdHNpemUsCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBf
UENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENC
X0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKHNjYWN0LT5zY2FjdF9hc3NvY19pZCA9PSBT
Q1RQX0ZVVFVSRV9BU1NPQykgfHwKLQkJCSAgICAoc2NhY3QtPnNjYWN0X2Fzc29jX2lkID09IFND
VFBfQUxMX0FTU09DKSkgeworCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxB
R1NfVURQVFlQRSkgJiYKKwkJCSAgICAgKChzY2FjdC0+c2NhY3RfYXNzb2NfaWQgPT0gU0NUUF9G
VVRVUkVfQVNTT0MpIHx8CisJCQkgICAgICAoc2NhY3QtPnNjYWN0X2Fzc29jX2lkID09IFNDVFBf
QUxMX0FTU09DKSkpKSB7CiAJCQkJU0NUUF9JTlBfV0xPQ0soaW5wKTsKIAkJCQlpZiAoc2N0cF9h
dXRoX3NldGFjdGl2ZWtleV9lcChpbnAsIHNjYWN0LT5zY2FjdF9rZXludW1iZXIpKSB7CiAJCQkJ
CVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JS
RVEsIEVJTlZBTCk7CkBAIC01MjkyLDggKzUzMDEsOSBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29j
a2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90IG9wdHNpemUsCiAJCQkJ
fQogCQkJCVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsKIAkJCX0KLQkJCWlmICgoc2NhY3QtPnNjYWN0
X2Fzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKLQkJCSAgICAoc2NhY3QtPnNjYWN0
X2Fzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkgeworCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3Mg
JiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICgoc2NhY3QtPnNjYWN0X2Fzc29j
X2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKKwkJCSAgICAgKHNjYWN0LT5zY2FjdF9hc3Nv
Y19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfUkxPQ0soaW5wKTsKIAkJ
CQlMSVNUX0ZPUkVBQ0goc3RjYiwgJmlucC0+c2N0cF9hc29jX2xpc3QsIHNjdHBfdGNibGlzdCkg
ewogCQkJCQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwpAQCAtNTMyMiw4ICs1MzMyLDkgQEAgc2N0cF9z
ZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVf
dCBvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BD
Ql9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9G
TEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChzY2RlbC0+c2NhY3RfYXNzb2NfaWQgPT0gU0NU
UF9GVVRVUkVfQVNTT0MpIHx8Ci0JCQkgICAgKHNjZGVsLT5zY2FjdF9hc3NvY19pZCA9PSBTQ1RQ
X0FMTF9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdT
X1VEUFRZUEUpICYmCisJCQkgICAgICgoc2NkZWwtPnNjYWN0X2Fzc29jX2lkID09IFNDVFBfRlVU
VVJFX0FTU09DKSB8fAorCQkJICAgICAgKHNjZGVsLT5zY2FjdF9hc3NvY19pZCA9PSBTQ1RQX0FM
TF9BU1NPQykpKSkgewogCQkJCVNDVFBfSU5QX1dMT0NLKGlucCk7CiAJCQkJaWYgKHNjdHBfZGVs
ZXRlX3NoYXJlZGtleV9lcChpbnAsIHNjZGVsLT5zY2FjdF9rZXludW1iZXIpKSB7CiAJCQkJCVND
VFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEs
IEVJTlZBTCk7CkBAIC01MzMxLDggKzUzNDIsOSBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0
ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90IG9wdHNpemUsCiAJCQkJfQog
CQkJCVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsKIAkJCX0KLQkJCWlmICgoc2NkZWwtPnNjYWN0X2Fz
c29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKLQkJCSAgICAoc2NkZWwtPnNjYWN0X2Fz
c29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkgeworCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBT
Q1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICgoc2NkZWwtPnNjYWN0X2Fzc29jX2lk
ID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKKwkJCSAgICAgKHNjZGVsLT5zY2FjdF9hc3NvY19p
ZCA9PSBTQ1RQX0FMTF9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfUkxPQ0soaW5wKTsKIAkJCQlM
SVNUX0ZPUkVBQ0goc3RjYiwgJmlucC0+c2N0cF9hc29jX2xpc3QsIHNjdHBfdGNibGlzdCkgewog
CQkJCQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwpAQCAtNTM2MSw4ICs1MzczLDkgQEAgc2N0cF9zZXRv
cHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBv
cHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9G
TEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFH
U19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChrZXlpZC0+c2NhY3RfYXNzb2NfaWQgPT0gU0NUUF9G
VVRVUkVfQVNTT0MpIHx8Ci0JCQkgICAgKGtleWlkLT5zY2FjdF9hc3NvY19pZCA9PSBTQ1RQX0FM
TF9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VE
UFRZUEUpICYmCisJCQkgICAgICgoa2V5aWQtPnNjYWN0X2Fzc29jX2lkID09IFNDVFBfRlVUVVJF
X0FTU09DKSB8fAorCQkJICAgICAgKGtleWlkLT5zY2FjdF9hc3NvY19pZCA9PSBTQ1RQX0FMTF9B
U1NPQykpKSkgewogCQkJCVNDVFBfSU5QX1dMT0NLKGlucCk7CiAJCQkJaWYgKHNjdHBfZGVhY3Rf
c2hhcmVka2V5X2VwKGlucCwga2V5aWQtPnNjYWN0X2tleW51bWJlcikpIHsKIAkJCQkJU0NUUF9M
VFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1VTUlJFUSwgRUlO
VkFMKTsKQEAgLTUzNzAsOCArNTM4Myw5IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNv
LCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJCQl9CiAJCQkJ
U0NUUF9JTlBfV1VOTE9DSyhpbnApOwogCQkJfQotCQkJaWYgKChrZXlpZC0+c2NhY3RfYXNzb2Nf
aWQgPT0gU0NUUF9DVVJSRU5UX0FTU09DKSB8fAotCQkJICAgIChrZXlpZC0+c2NhY3RfYXNzb2Nf
aWQgPT0gU0NUUF9BTExfQVNTT0MpKSB7CisJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBf
UENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgKChrZXlpZC0+c2NhY3RfYXNzb2NfaWQgPT0g
U0NUUF9DVVJSRU5UX0FTU09DKSB8fAorCQkJICAgICAoa2V5aWQtPnNjYWN0X2Fzc29jX2lkID09
IFNDVFBfQUxMX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9STE9DSyhpbnApOwogCQkJCUxJU1Rf
Rk9SRUFDSChzdGNiLCAmaW5wLT5zY3RwX2Fzb2NfbGlzdCwgc2N0cF90Y2JsaXN0KSB7CiAJCQkJ
CVNDVFBfVENCX0xPQ0soc3RjYik7CkBAIC01NDAwLDE0ICs1NDE0LDE2IEBAIHNjdHBfc2V0b3B0
KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0
c2l6ZSwKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxB
R1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1Nf
SU5fVENQUE9PTCkgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09D
KSB8fAotCQkJICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSB7CisJCQkgICAg
KChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAo
KGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykgfHwKKwkJCSAgICAgIChhdi0+YXNz
b2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSkpIHsKIAkJCQlTQ1RQX0lOUF9XTE9DSyhpbnApOwog
CQkJCWlucC0+bG9jYWxfc3RycmVzZXRfc3VwcG9ydCA9ICh1aW50OF90KWF2LT5hc3NvY192YWx1
ZTsKIAkJCQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7CiAJCQl9Ci0JCQlpZiAoKGF2LT5hc3NvY19p
ZCA9PSBTQ1RQX0NVUlJFTlRfQVNTT0MpIHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQ
X0FMTF9BU1NPQykpIHsKKwkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1Nf
VURQVFlQRSkgJiYKKwkJCSAgICAoKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0NVUlJFTlRfQVNTT0Mp
IHx8CisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSkgewogCQkJCVND
VFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJTElTVF9GT1JFQUNIKHN0Y2IsICZpbnAtPnNjdHBfYXNv
Y19saXN0LCBzY3RwX3RjYmxpc3QpIHsKIAkJCQkJU0NUUF9UQ0JfTE9DSyhzdGNiKTsKQEAgLTU0
MjksNyArNTQ0NSw3IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFt
ZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJU0NUUF9DSEVDS19BTkRfQ0FTVChz
dHJyc3QsIG9wdHZhbCwgc3RydWN0IHNjdHBfcmVzZXRfc3RyZWFtcywgb3B0c2l6ZSk7CiAJCVND
VFBfRklORF9TVENCKGlucCwgc3RjYiwgc3RycnN0LT5zcnNfYXNzb2NfaWQpOwogCQlpZiAoc3Rj
YiA9PSBOVUxMKSB7Ci0JCSAgICAgICAgU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5V
TEwsIFNDVFBfRlJPTV9TQ1RQX1VTUlJFUSwgRU5PRU5UKTsKKwkJCVNDVFBfTFRSQUNFX0VSUl9S
RVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIEVOT0VOVCk7CiAJCQll
cnJvciA9IEVOT0VOVDsKIAkJCWJyZWFrOwogCQl9CkBAIC01NDQyLDYgKzU0NTgsMTIgQEAgc2N0
cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNp
emVfdCBvcHRzaXplLAogCQkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwogCQkJYnJlYWs7CiAJCX0K
KwkJaWYgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVfT1BFTikgeworCQkJU0NU
UF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1VTUlJFUSwg
RUlOVkFMKTsKKwkJCWVycm9yID0gRUlOVkFMOworCQkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwor
CQkJYnJlYWs7CisJCX0KIAkJaWYgKHNpemVvZihzdHJ1Y3Qgc2N0cF9yZXNldF9zdHJlYW1zKSAr
CiAJCSAgICBzdHJyc3QtPnNyc19udW1iZXJfc3RyZWFtcyAqIHNpemVvZih1aW50MTZfdCkgPiBv
cHRzaXplKSB7CiAJCQllcnJvciA9IEVJTlZBTDsKQEAgLTU0NzQsMTMgKzU0OTYsMTMgQEAgc2N0
cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNp
emVfdCBvcHRzaXplLAogCQl9CiAJCWZvciAoaSA9IDA7IGkgPCBzdHJyc3QtPnNyc19udW1iZXJf
c3RyZWFtczsgaSsrKSB7CiAJCQlpZiAoKHNlbmRfaW4pICYmCi0JCQkgICAgKHN0cnJzdC0+c3Jz
X3N0cmVhbV9saXN0W2ldID4gc3RjYi0+YXNvYy5zdHJlYW1pbmNudCkpIHsKKwkJCSAgICAoc3Ry
cnN0LT5zcnNfc3RyZWFtX2xpc3RbaV0gPj0gc3RjYi0+YXNvYy5zdHJlYW1pbmNudCkpIHsKIAkJ
CQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNS
UkVRLCBFSU5WQUwpOwogCQkJCWVycm9yID0gRUlOVkFMOwogCQkJCWJyZWFrOwogCQkJfQogCQkJ
aWYgKChzZW5kX291dCkgJiYKLQkJCSAgICAoc3RycnN0LT5zcnNfc3RyZWFtX2xpc3RbaV0gPiBz
dGNiLT5hc29jLnN0cmVhbW91dGNudCkpIHsKKwkJCSAgICAoc3RycnN0LT5zcnNfc3RyZWFtX2xp
c3RbaV0gPj0gc3RjYi0+YXNvYy5zdHJlYW1vdXRjbnQpKSB7CiAJCQkJU0NUUF9MVFJBQ0VfRVJS
X1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1VTUlJFUSwgRUlOVkFMKTsKIAkJ
CQllcnJvciA9IEVJTlZBTDsKIAkJCQlicmVhazsKQEAgLTU1NDEsNyArNTU2Myw3IEBAIHNjdHBf
c2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXpl
X3Qgb3B0c2l6ZSwKIAkJU0NUUF9DSEVDS19BTkRfQ0FTVChzdHJhZGQsIG9wdHZhbCwgc3RydWN0
IHNjdHBfYWRkX3N0cmVhbXMsIG9wdHNpemUpOwogCQlTQ1RQX0ZJTkRfU1RDQihpbnAsIHN0Y2Is
IHN0cmFkZC0+c2FzX2Fzc29jX2lkKTsKIAkJaWYgKHN0Y2IgPT0gTlVMTCkgewotCQkgICAgICAg
IFNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JS
RVEsIEVOT0VOVCk7CisJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NU
UF9GUk9NX1NDVFBfVVNSUkVRLCBFTk9FTlQpOwogCQkJZXJyb3IgPSBFTk9FTlQ7CiAJCQlicmVh
azsKIAkJfQpAQCAtNTU1NCw2ICs1NTc2LDEyIEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQg
KnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJCVNDVFBf
VENCX1VOTE9DSyhzdGNiKTsKIAkJCWJyZWFrOwogCQl9CisJCWlmIChTQ1RQX0dFVF9TVEFURShz
dGNiKSAhPSBTQ1RQX1NUQVRFX09QRU4pIHsKKwkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBO
VUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIEVJTlZBTCk7CisJCQllcnJvciA9IEVJ
TlZBTDsKKwkJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKKwkJCWJyZWFrOworCQl9CiAJCWlmIChz
dGNiLT5hc29jLnN0cmVhbV9yZXNldF9vdXRzdGFuZGluZykgewogCQkJU0NUUF9MVFJBQ0VfRVJS
X1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1VTUlJFUSwgRUFMUkVBRFkpOwog
CQkJZXJyb3IgPSBFQUxSRUFEWTsKQEAgLTU2MjEsNiArNTY0OSwxMiBAQCBzY3RwX3NldG9wdChz
dHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90IG9wdHNp
emUsCiAJCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CiAJCQlicmVhazsKIAkJfQorCQlpZiAoU0NU
UF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9TVEFURV9PUEVOKSB7CisJCQlTQ1RQX0xUUkFDRV9F
UlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBFSU5WQUwpOwor
CQkJZXJyb3IgPSBFSU5WQUw7CisJCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CisJCQlicmVhazsK
KwkJfQogCQlpZiAoc3RjYi0+YXNvYy5zdHJlYW1fcmVzZXRfb3V0c3RhbmRpbmcpIHsKIAkJCVND
VFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEs
IEVBTFJFQURZKTsKIAkJCWVycm9yID0gRUFMUkVBRFk7CkBAIC01NzE1LDE1ICs1NzQ5LDYgQEAg
c2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWws
IHNpemVfdCBvcHRzaXplLAogCX0KIAljYXNlIFNDVFBfTUFYX0JVUlNUOgogCXsKLSNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA8IDkwMDAwMAotCQl1aW50OF90
ICpidXJzdDsKLQotCQlTQ1RQX0NIRUNLX0FORF9DQVNUKGJ1cnN0LCBvcHR2YWwsIHVpbnQ4X3Qs
IG9wdHNpemUpOwotCi0JCVNDVFBfSU5QX1dMT0NLKGlucCk7Ci0JCWlucC0+c2N0cF9lcC5tYXhf
YnVyc3QgPSAqYnVyc3Q7Ci0JCVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsKLSNlbHNlCiAJCXN0cnVj
dCBzY3RwX2Fzc29jX3ZhbHVlICphdjsKIAogCQlTQ1RQX0NIRUNLX0FORF9DQVNUKGF2LCBvcHR2
YWwsIHN0cnVjdCBzY3RwX2Fzc29jX3ZhbHVlLCBvcHRzaXplKTsKQEAgLTU3MzUsMTQgKzU3NjAs
MTYgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpv
cHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxh
Z3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3Mg
JiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChhdi0+YXNzb2NfaWQgPT0g
U0NUUF9GVVRVUkVfQVNTT0MpIHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0FMTF9B
U1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZ
UEUpICYmCisJCQkgICAgICgoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSB8fAor
CQkJICAgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpKSkgewogCQkJCVNDVFBf
SU5QX1dMT0NLKGlucCk7CiAJCQkJaW5wLT5zY3RwX2VwLm1heF9idXJzdCA9IGF2LT5hc3NvY192
YWx1ZTsKIAkJCQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7CiAJCQl9Ci0JCQlpZiAoKGF2LT5hc3Nv
Y19pZCA9PSBTQ1RQX0NVUlJFTlRfQVNTT0MpIHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9PSBT
Q1RQX0FMTF9BU1NPQykpIHsKKwkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxB
R1NfVURQVFlQRSkgJiYKKwkJCSAgICAoKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0NVUlJFTlRfQVNT
T0MpIHx8CisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSkgewogCQkJ
CVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJTElTVF9GT1JFQUNIKHN0Y2IsICZpbnAtPnNjdHBf
YXNvY19saXN0LCBzY3RwX3RjYmxpc3QpIHsKIAkJCQkJU0NUUF9UQ0JfTE9DSyhzdGNiKTsKQEAg
LTU3NTIsNyArNTc3OSw2IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0
bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJCQlTQ1RQX0lOUF9SVU5MT0NL
KGlucCk7CiAJCQl9CiAJCX0KLSNlbmRpZgogCQlicmVhazsKIAl9CiAJY2FzZSBTQ1RQX01BWFNF
RzoKQEAgLTU3NzgsNyArNTgwNCw4IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBp
bnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJfSBlbHNlIHsKIAkJ
CWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAg
ICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAg
ICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkgeworCQkJICAgICgoaW5wLT5z
Y3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAgKGF2LT5hc3Nv
Y19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfV0xPQ0soaW5wKTsK
IAkJCQkvKiBGSVhNRSBNVDogSSB0aGluayB0aGlzIGlzIG5vdCBpbiB0dW5lIHdpdGggdGhlIEFQ
SSBJRCAqLwogCQkJCWlmIChhdi0+YXNzb2NfdmFsdWUpIHsKQEAgLTU5ODMsMTQgKzYwMTAsMTYg
QEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2
YWwsIHNpemVfdCBvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3Mg
JiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBT
Q1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChzX2luZm8tPnNpbmZvX2Fzc29j
X2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSB8fAotCQkJICAgIChzX2luZm8tPnNpbmZvX2Fzc29j
X2lkID09IFNDVFBfQUxMX0FTU09DKSkgeworCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NU
UF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAgKChzX2luZm8tPnNpbmZvX2Fzc29jX2lk
ID09IFNDVFBfRlVUVVJFX0FTU09DKSB8fAorCQkJICAgICAgKHNfaW5mby0+c2luZm9fYXNzb2Nf
aWQgPT0gU0NUUF9BTExfQVNTT0MpKSkpIHsKIAkJCQlTQ1RQX0lOUF9XTE9DSyhpbnApOwogCQkJ
CW1lbWNweSgmaW5wLT5kZWZfc2VuZCwgc19pbmZvLCBtaW4ob3B0c2l6ZSwgc2l6ZW9mKGlucC0+
ZGVmX3NlbmQpKSk7CiAJCQkJU0NUUF9JTlBfV1VOTE9DSyhpbnApOwogCQkJfQotCQkJaWYgKChz
X2luZm8tPnNpbmZvX2Fzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKLQkJCSAgICAo
c19pbmZvLT5zaW5mb19hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpIHsKKwkJCWlmICgoaW5w
LT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAoKHNfaW5m
by0+c2luZm9fYXNzb2NfaWQgPT0gU0NUUF9DVVJSRU5UX0FTU09DKSB8fAorCQkJICAgICAoc19p
bmZvLT5zaW5mb19hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBf
UkxPQ0soaW5wKTsKIAkJCQlMSVNUX0ZPUkVBQ0goc3RjYiwgJmlucC0+c2N0cF9hc29jX2xpc3Qs
IHNjdHBfdGNibGlzdCkgewogCQkJCQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwpAQCAtNjEwOSw2ICs2
MTM4LDE0IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9p
ZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBO
VUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIEVJTlZBTCk7CiAJCQlyZXR1cm4gKEVJ
TlZBTCk7CiAJCX0KKwkJaWYgKChwYWRkcnAtPnNwcF9mbGFncyAmIFNQUF9QTVRVRF9ESVNBQkxF
KSAmJgorCQkgICAgKChwYWRkcnAtPnNwcF9wYXRobXR1IDwgU0NUUF9TTUFMTEVTVF9QTVRVKSB8
fAorCQkgICAgIChwYWRkcnAtPnNwcF9wYXRobXR1ID4gU0NUUF9MQVJHRVNUX1BNVFUpKSkgewor
CQkJaWYgKHN0Y2IpCisJCQkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOworCQkJU0NUUF9MVFJBQ0Vf
RVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1VTUlJFUSwgRUlOVkFMKTsK
KwkJCXJldHVybiAoRUlOVkFMKTsKKwkJfQogCiAJCWlmIChzdGNiICE9IE5VTEwpIHsKIAkJCS8q
KioqKioqKioqKioqKioqKioqKioqKipUQ0IgU1BFQ0lGSUMgU0VUICoqKioqKioqKioqKioqKioq
Ki8KQEAgLTYxMzQsMTIgKzYxNzEsMTMgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28s
IGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQkJCQluZXQtPmRl
c3Rfc3RhdGUgJj0gflNDVFBfQUREUl9OT0hCOwogCQkJCX0KIAkJCQlpZiAocGFkZHJwLT5zcHBf
ZmxhZ3MgJiBTUFBfSEJfREVNQU5EKSB7Ci0JCQkJCS8qIG9uIGRlbWFuZCBIQiAqLwotCQkJCQlz
Y3RwX3NlbmRfaGIoc3RjYiwgbmV0LCBTQ1RQX1NPX0xPQ0tFRCk7Ci0JCQkJCXNjdHBfY2h1bmtf
b3V0cHV0KGlucCwgc3RjYiwgIFNDVFBfT1VUUFVUX0ZST01fU09DS09QVCwgU0NUUF9TT19MT0NL
RUQpOwotCQkJCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9IRUFSVEJFQVQsIGlu
cCwgc3RjYiwgbmV0KTsKKwkJCQkJaWYgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RB
VEVfT1BFTikgeworCQkJCQkJc2N0cF9zZW5kX2hiKHN0Y2IsIG5ldCwgU0NUUF9TT19MT0NLRUQp
OworCQkJCQkJc2N0cF9jaHVua19vdXRwdXQoaW5wLCBzdGNiLCAgU0NUUF9PVVRQVVRfRlJPTV9T
T0NLT1BULCBTQ1RQX1NPX0xPQ0tFRCk7CisJCQkJCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElN
RVJfVFlQRV9IRUFSVEJFQVQsIGlucCwgc3RjYiwgbmV0KTsKKwkJCQkJfQogCQkJCX0KLQkJCQlp
ZiAoKHBhZGRycC0+c3BwX2ZsYWdzICYgU1BQX1BNVFVEX0RJU0FCTEUpICYmIChwYWRkcnAtPnNw
cF9wYXRobXR1ID49IFNDVFBfU01BTExFU1RfUE1UVSkpIHsKKwkJCQlpZiAocGFkZHJwLT5zcHBf
ZmxhZ3MgJiBTUFBfUE1UVURfRElTQUJMRSkgewogCQkJCQlpZiAoU0NUUF9PU19USU1FUl9QRU5E
SU5HKCZuZXQtPnBtdHVfdGltZXIudGltZXIpKSB7CiAJCQkJCQlzY3RwX3RpbWVyX3N0b3AoU0NU
UF9USU1FUl9UWVBFX1BBVEhNVFVSQUlTRSwgaW5wLCBzdGNiLCBuZXQsCiAJCQkJCQkJCVNDVFBf
RlJPTV9TQ1RQX1VTUlJFUSArIFNDVFBfTE9DXzExKTsKQEAgLTYyODYsNyArNjMyNCw3IEBAIHNj
dHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBz
aXplX3Qgb3B0c2l6ZSwKIAkJCQkJfQogCQkJCQlzY3RwX3N0Y2JfZmVhdHVyZV9vbihpbnAsIHN0
Y2IsIFNDVFBfUENCX0ZMQUdTX0RPTk9UX0hFQVJUQkVBVCk7CiAJCQkJfQotCQkJCWlmICgocGFk
ZHJwLT5zcHBfZmxhZ3MgJiBTUFBfUE1UVURfRElTQUJMRSkgJiYgKHBhZGRycC0+c3BwX3BhdGht
dHUgPj0gU0NUUF9TTUFMTEVTVF9QTVRVKSkgeworCQkJCWlmIChwYWRkcnAtPnNwcF9mbGFncyAm
IFNQUF9QTVRVRF9ESVNBQkxFKSB7CiAJCQkJCVRBSUxRX0ZPUkVBQ0gobmV0LCAmc3RjYi0+YXNv
Yy5uZXRzLCBzY3RwX25leHQpIHsKIAkJCQkJCWlmIChTQ1RQX09TX1RJTUVSX1BFTkRJTkcoJm5l
dC0+cG10dV90aW1lci50aW1lcikpIHsKIAkJCQkJCQlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1F
Ul9UWVBFX1BBVEhNVFVSQUlTRSwgaW5wLCBzdGNiLCBuZXQsCkBAIC02MzU2LDcgKzYzOTQsOCBA
QCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZh
bCwgc2l6ZV90IG9wdHNpemUsCiAJCQkvKioqKioqKioqKioqKioqKioqKioqKioqTk8gVENCLCBT
RVQgVE8gZGVmYXVsdCBzdHVmZiAqKioqKioqKioqKioqKioqKiovCiAJCQlpZiAoKGlucC0+c2N0
cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9m
bGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKHBhZGRycC0+c3Bw
X2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkgeworCQkJICAgICgoaW5wLT5zY3RwX2Zs
YWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAgKHBhZGRycC0+c3BwX2Fz
c29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9XTE9DSyhpbnAp
OwogCQkJCS8qCiAJCQkJICogRm9yIHRoZSBUT1MvRkxPV0xBQkVMIHN0dWZmIHlvdSBzZXQgaXQK
QEAgLTYzNzEsMTQgKzY0MTAsMTQgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGlu
dCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQkJCWVsc2UgaWYgKHBh
ZGRycC0+c3BwX2hiaW50ZXJ2YWwgIT0gMCkgewogCQkJCQlpZiAocGFkZHJwLT5zcHBfaGJpbnRl
cnZhbCA+IFNDVFBfTUFYX0hCX0lOVEVSVkFMKQogCQkJCQkJcGFkZHJwLT5zcHBfaGJpbnRlcnZh
bD0gU0NUUF9NQVhfSEJfSU5URVJWQUw7Ci0JCQkJCWlucC0+c2N0cF9lcC5zY3RwX3RpbWVvdXR0
aWNrc1tTQ1RQX1RJTUVSX0hFQVJUQkVBVF0gPSBNU0VDX1RPX1RJQ0tTKHBhZGRycC0+c3BwX2hi
aW50ZXJ2YWwpOworCQkJCQlpbnAtPnNjdHBfZXAuc2N0cF90aW1lb3V0dGlja3NbU0NUUF9USU1F
Ul9IRUFSVEJFQVRdID0gc2N0cF9tc2Vjc190b190aWNrcyhwYWRkcnAtPnNwcF9oYmludGVydmFs
KTsKIAkJCQl9CiAKIAkJCQlpZiAocGFkZHJwLT5zcHBfZmxhZ3MgJiBTUFBfSEJfRU5BQkxFKSB7
CiAJCQkJCWlmIChwYWRkcnAtPnNwcF9mbGFncyAmIFNQUF9IQl9USU1FX0lTX1pFUk8pIHsKIAkJ
CQkJCWlucC0+c2N0cF9lcC5zY3RwX3RpbWVvdXR0aWNrc1tTQ1RQX1RJTUVSX0hFQVJUQkVBVF0g
PSAwOwogCQkJCQl9IGVsc2UgaWYgKHBhZGRycC0+c3BwX2hiaW50ZXJ2YWwpIHsKLQkJCQkJCWlu
cC0+c2N0cF9lcC5zY3RwX3RpbWVvdXR0aWNrc1tTQ1RQX1RJTUVSX0hFQVJUQkVBVF0gPSBNU0VD
X1RPX1RJQ0tTKHBhZGRycC0+c3BwX2hiaW50ZXJ2YWwpOworCQkJCQkJaW5wLT5zY3RwX2VwLnNj
dHBfdGltZW91dHRpY2tzW1NDVFBfVElNRVJfSEVBUlRCRUFUXSA9IHNjdHBfbXNlY3NfdG9fdGlj
a3MocGFkZHJwLT5zcHBfaGJpbnRlcnZhbCk7CiAJCQkJCX0KIAkJCQkJc2N0cF9mZWF0dXJlX29m
ZihpbnAsIFNDVFBfUENCX0ZMQUdTX0RPTk9UX0hFQVJUQkVBVCk7CiAJCQkJfSBlbHNlIGlmIChw
YWRkcnAtPnNwcF9mbGFncyAmIFNQUF9IQl9ESVNBQkxFKSB7CkBAIC02Mzg4LDkgKzY0MjcsNyBA
QCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZh
bCwgc2l6ZV90IG9wdHNpemUsCiAJCQkJCWlucC0+c2N0cF9lcC5kZWZhdWx0X210dSA9IDA7CiAJ
CQkJCXNjdHBfZmVhdHVyZV9vZmYoaW5wLCBTQ1RQX1BDQl9GTEFHU19ET19OT1RfUE1UVUQpOwog
CQkJCX0gZWxzZSBpZiAocGFkZHJwLT5zcHBfZmxhZ3MgJiBTUFBfUE1UVURfRElTQUJMRSkgewot
CQkJCQlpZiAocGFkZHJwLT5zcHBfcGF0aG10dSA+PSBTQ1RQX1NNQUxMRVNUX1BNVFUpIHsKLQkJ
CQkJCWlucC0+c2N0cF9lcC5kZWZhdWx0X210dSA9IHBhZGRycC0+c3BwX3BhdGhtdHU7Ci0JCQkJ
CX0KKwkJCQkJaW5wLT5zY3RwX2VwLmRlZmF1bHRfbXR1ID0gcGFkZHJwLT5zcHBfcGF0aG10dTsK
IAkJCQkJc2N0cF9mZWF0dXJlX29uKGlucCwgU0NUUF9QQ0JfRkxBR1NfRE9fTk9UX1BNVFVEKTsK
IAkJCQl9CiAJCQkJaWYgKHBhZGRycC0+c3BwX2ZsYWdzICYgU1BQX0RTQ1ApIHsKQEAgLTY0NDYs
NyArNjQ4Myw4IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwg
dm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5z
Y3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3Rw
X2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAgICAoc3J0by0+c3J0
b19hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9m
bGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgIChzcnRvLT5zcnRvX2Fz
c29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9XTE9DSyhpbnAp
OwogCQkJCWlmIChzcnRvLT5zcnRvX2luaXRpYWwpCiAJCQkJCW5ld19pbml0ID0gc3J0by0+c3J0
b19pbml0aWFsOwpAQCAtNjQ5NCwxOCArNjUzMiwxOSBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29j
a2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90IG9wdHNpemUsCiAJCQlp
ZiAoc2Fzb2MtPnNhc29jX2Fzb2NtYXhyeHQpCiAJCQkJc3RjYi0+YXNvYy5tYXhfc2VuZF90aW1l
cyA9IHNhc29jLT5zYXNvY19hc29jbWF4cnh0OwogCQkJaWYgKHNhc29jLT5zYXNvY19jb29raWVf
bGlmZSkgewotCQkJCXN0Y2ItPmFzb2MuY29va2llX2xpZmUgPSBNU0VDX1RPX1RJQ0tTKHNhc29j
LT5zYXNvY19jb29raWVfbGlmZSk7CisJCQkJc3RjYi0+YXNvYy5jb29raWVfbGlmZSA9IHNjdHBf
bXNlY3NfdG9fdGlja3Moc2Fzb2MtPnNhc29jX2Nvb2tpZV9saWZlKTsKIAkJCX0KIAkJCVNDVFBf
VENCX1VOTE9DSyhzdGNiKTsKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYg
U0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NU
UF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAgICAoc2Fzb2MtPnNhc29jX2Fzc29jX2lk
ID09IFNDVFBfRlVUVVJFX0FTU09DKSkgeworCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NU
UF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAgKHNhc29jLT5zYXNvY19hc3NvY19pZCA9
PSBTQ1RQX0ZVVFVSRV9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfV0xPQ0soaW5wKTsKIAkJCQlp
ZiAoc2Fzb2MtPnNhc29jX2Fzb2NtYXhyeHQpCiAJCQkJCWlucC0+c2N0cF9lcC5tYXhfc2VuZF90
aW1lcyA9IHNhc29jLT5zYXNvY19hc29jbWF4cnh0OwogCQkJCWlmIChzYXNvYy0+c2Fzb2NfY29v
a2llX2xpZmUpIHsKLQkJCQkJaW5wLT5zY3RwX2VwLmRlZl9jb29raWVfbGlmZSA9IE1TRUNfVE9f
VElDS1Moc2Fzb2MtPnNhc29jX2Nvb2tpZV9saWZlKTsKKwkJCQkJaW5wLT5zY3RwX2VwLmRlZl9j
b29raWVfbGlmZSA9IHNjdHBfbXNlY3NfdG9fdGlja3Moc2Fzb2MtPnNhc29jX2Nvb2tpZV9saWZl
KTsKIAkJCQl9CiAJCQkJU0NUUF9JTlBfV1VOTE9DSyhpbnApOwogCQkJfSBlbHNlIHsKQEAgLTY2
MTUsMTkgKzY2NTQsMTMgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRu
YW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogI2lmZGVmIFNDVFBfTVZSRgogCQlp
bnQgaSwgZm5kID0gMDsKICNlbmRpZgotI2lmICFkZWZpbmVkKF9fV2luZG93c19fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQorI2lmICFkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKICNpZiBkZWZpbmVkKF9fQVBQTEVfXykKIAkJc3RydWN0IHByb2MgKnByb2M7
CiAjZW5kaWYKLSNpZmRlZiBfX0ZyZWVCU0RfXwotI2lmIF9fRnJlZUJTRF92ZXJzaW9uID4gNjAy
MDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKIAkJZXJyb3IgPSBwcml2X2NoZWNrKGN1cnRo
cmVhZCwKIAkJCQkgICBQUklWX05FVElORVRfUkVTRVJWRURQT1JUKTsKLSNlbGlmIF9fRnJlZUJT
RF92ZXJzaW9uID49IDUwMDAwMAotCQllcnJvciA9IHN1c2VyKChzdHJ1Y3QgdGhyZWFkICopcCk7
Ci0jZWxzZQotCQllcnJvciA9IHN1c2VyKHApOwotI2VuZGlmCiAjZWxpZiBkZWZpbmVkKF9fQVBQ
TEVfXykKIAkJcHJvYyA9IChzdHJ1Y3QgcHJvYyAqKXA7CiAJCWlmIChwKSB7CkBAIC02NzIxLDcg
KzY3NTQsNyBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZv
aWQgKm9wdHZhbCwgc2l6ZV90IG9wdHNpemUsCiAJCQkJCWVycm9yID0gRUlOVkFMOwogCQkJCQln
b3RvIG91dF9vZl9pdDsKIAkJCQl9Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJfSBlbHNlIHsK
IAkJCQlzd2l0Y2ggKGFkZHItPnNhX2ZhbWlseSkgewogI2lmZGVmIElORVQKQEAgLTY3NzYsMjMg
KzY4MDksMjMgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2
b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCX0KIAljYXNlIFNDVFBfQklORFhfQUREX0FE
RFI6CiAJewotCQlzdHJ1Y3Qgc2N0cF9nZXRhZGRyZXNzZXMgKmFkZHJzOwotI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAwMAorCQlzdHJ1Y3Qgc29j
a2FkZHIgKnNhOworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJCXN0cnVjdCB0aHJlYWQgKnRkOwogCiAJCXRkID0gKHN0cnVjdCB0aHJlYWQgKilw
OwogI2VuZGlmCi0JCVNDVFBfQ0hFQ0tfQU5EX0NBU1QoYWRkcnMsIG9wdHZhbCwgc3RydWN0IHNj
dHBfZ2V0YWRkcmVzc2VzLAotCQkJCSAgICBvcHRzaXplKTsKKwkJU0NUUF9DSEVDS19BTkRfQ0FT
VChzYSwgb3B0dmFsLCBzdHJ1Y3Qgc29ja2FkZHIsIG9wdHNpemUpOwogI2lmZGVmIElORVQKLQkJ
aWYgKGFkZHJzLT5hZGRyLT5zYV9mYW1pbHkgPT0gQUZfSU5FVCkgewotCQkJaWYgKG9wdHNpemUg
PCBzaXplb2Yoc3RydWN0IHNjdHBfZ2V0YWRkcmVzc2VzKSAtIHNpemVvZihzdHJ1Y3Qgc29ja2Fk
ZHIpICsgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpIHsKKwkJaWYgKHNhLT5zYV9mYW1pbHkg
PT0gQUZfSU5FVCkgeworCQkJaWYgKG9wdHNpemUgPCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2lu
KSkgewogCQkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01f
U0NUUF9VU1JSRVEsIEVJTlZBTCk7CiAJCQkJZXJyb3IgPSBFSU5WQUw7CiAJCQkJYnJlYWs7CiAJ
CQl9Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAw
MDAwCi0JCQlpZiAodGQgIT0gTlVMTCAmJiAoZXJyb3IgPSBwcmlzb25fbG9jYWxfaXA0KHRkLT50
ZF91Y3JlZCwgJigoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKShhZGRycy0+YWRkcikpLT5zaW5fYWRk
cikpKSkgeworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCisJCQlpZiAodGQgIT0gTlVMTCAmJgorCQkJICAgIChlcnJvciA9IHByaXNvbl9sb2NhbF9p
cDQodGQtPnRkX3VjcmVkLCAmKCgoc3RydWN0IHNvY2thZGRyX2luICopc2EpLT5zaW5fYWRkcikp
KSkgewogCQkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBzdGNiLCBOVUxMLCBTQ1RQX0ZST01f
U0NUUF9VU1JSRVEsIGVycm9yKTsKIAkJCQlicmVhazsKIAkJCX0KQEAgLTY4MDAsNDggKzY4MzMs
NDkgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpv
cHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQl9IGVsc2UKICNlbmRpZgogI2lmZGVmIElORVQ2Ci0J
CWlmIChhZGRycy0+YWRkci0+c2FfZmFtaWx5ID09IEFGX0lORVQ2KSB7Ci0JCQlpZiAob3B0c2l6
ZSA8IHNpemVvZihzdHJ1Y3Qgc2N0cF9nZXRhZGRyZXNzZXMpIC0gc2l6ZW9mKHN0cnVjdCBzb2Nr
YWRkcikgKyBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNikpIHsKKwkJaWYgKHNhLT5zYV9mYW1p
bHkgPT0gQUZfSU5FVDYpIHsKKwkJCWlmIChvcHRzaXplIDwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRk
cl9pbjYpKSB7CiAJCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBf
RlJPTV9TQ1RQX1VTUlJFUSwgRUlOVkFMKTsKIAkJCQllcnJvciA9IEVJTlZBTDsKIAkJCQlicmVh
azsKIAkJCX0KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+
PSA4MDAwMDAKLQkJCWlmICh0ZCAhPSBOVUxMICYmIChlcnJvciA9IHByaXNvbl9sb2NhbF9pcDYo
dGQtPnRkX3VjcmVkLCAmKCgoc3RydWN0IHNvY2thZGRyX2luNiAqKShhZGRycy0+YWRkcikpLT5z
aW42X2FkZHIpLAotCQkJCQkJCQkJCQkgICAoU0NUUF9JUFY2X1Y2T05MWShpbnApICE9IDApKSkg
IT0gMCkgewotCQkJICBTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgc3RjYiwgTlVMTCwgU0NUUF9G
Uk9NX1NDVFBfVVNSUkVRLCBlcnJvcik7Ci0JCQkgIGJyZWFrOworI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQlpZiAodGQgIT0gTlVMTCAmJgor
CQkJICAgIChlcnJvciA9IHByaXNvbl9sb2NhbF9pcDYodGQtPnRkX3VjcmVkLAorCQkJICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJigoKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilzYSktPnNp
bjZfYWRkciksCisJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU0NUUF9JUFY2X1Y2
T05MWShpbnApICE9IDApKSkgIT0gMCkgeworCQkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBz
dGNiLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIGVycm9yKTsKKwkJCQlicmVhazsKIAkJ
CX0KICNlbmRpZgogCQl9IGVsc2UKICNlbmRpZgogCQl7Ci0JCSAgICAgICBlcnJvciA9IEVBRk5P
U1VQUE9SVDsKLQkJICAgICAgIGJyZWFrOworCQkJZXJyb3IgPSBFQUZOT1NVUFBPUlQ7CisJCQli
cmVhazsKIAkJfQotCQlzY3RwX2JpbmR4X2FkZF9hZGRyZXNzKHNvLCBpbnAsIGFkZHJzLT5hZGRy
LAotCQkJCSAgICAgICBhZGRycy0+c2dldF9hc3NvY19pZCwgdnJmX2lkLAotCQkJCSAgICAgICAm
ZXJyb3IsIHApOworCQlzY3RwX2JpbmR4X2FkZF9hZGRyZXNzKHNvLCBpbnAsIHNhLCB2cmZfaWQs
ICZlcnJvciwgcCk7CiAJCWJyZWFrOwogCX0KIAljYXNlIFNDVFBfQklORFhfUkVNX0FERFI6CiAJ
ewotCQlzdHJ1Y3Qgc2N0cF9nZXRhZGRyZXNzZXMgKmFkZHJzOwotI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAwMAorCQlzdHJ1Y3Qgc29ja2FkZHIg
KnNhOworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAJCXN0cnVjdCB0aHJlYWQgKnRkOwogCQl0ZCA9IChzdHJ1Y3QgdGhyZWFkICopcDsKIAogI2Vu
ZGlmCi0JCVNDVFBfQ0hFQ0tfQU5EX0NBU1QoYWRkcnMsIG9wdHZhbCwgc3RydWN0IHNjdHBfZ2V0
YWRkcmVzc2VzLCBvcHRzaXplKTsKKwkJU0NUUF9DSEVDS19BTkRfQ0FTVChzYSwgb3B0dmFsLCBz
dHJ1Y3Qgc29ja2FkZHIsIG9wdHNpemUpOwogI2lmZGVmIElORVQKLQkJaWYgKGFkZHJzLT5hZGRy
LT5zYV9mYW1pbHkgPT0gQUZfSU5FVCkgewotCQkJaWYgKG9wdHNpemUgPCBzaXplb2Yoc3RydWN0
IHNjdHBfZ2V0YWRkcmVzc2VzKSAtIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHIpICsgc2l6ZW9mKHN0
cnVjdCBzb2NrYWRkcl9pbikpIHsKKwkJaWYgKHNhLT5zYV9mYW1pbHkgPT0gQUZfSU5FVCkgewor
CQkJaWYgKG9wdHNpemUgPCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSkgewogCQkJCVNDVFBf
TFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIEVJ
TlZBTCk7CiAJCQkJZXJyb3IgPSBFSU5WQUw7CiAJCQkJYnJlYWs7CiAJCQl9Ci0jaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAwMDAwCi0JCWlmICh0ZCAh
PSBOVUxMICYmIChlcnJvciA9IHByaXNvbl9sb2NhbF9pcDQodGQtPnRkX3VjcmVkLCAmKCgoc3Ry
dWN0IHNvY2thZGRyX2luICopKGFkZHJzLT5hZGRyKSktPnNpbl9hZGRyKSkpKSB7CisjaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJCWlmICh0ZCAh
PSBOVUxMICYmCisJCQkgICAgKGVycm9yID0gcHJpc29uX2xvY2FsX2lwNCh0ZC0+dGRfdWNyZWQs
ICYoKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilzYSktPnNpbl9hZGRyKSkpKSB7CiAJCQkJU0NUUF9M
VFJBQ0VfRVJSX1JFVChpbnAsIHN0Y2IsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1VTUlJFUSwgZXJy
b3IpOwogCQkJCWJyZWFrOwogCQkJfQpAQCAtNjg0OSwxNiArNjg4MywxNiBAQCBzY3RwX3NldG9w
dChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90IG9w
dHNpemUsCiAJCX0gZWxzZQogI2VuZGlmCiAjaWZkZWYgSU5FVDYKLQkJaWYgKGFkZHJzLT5hZGRy
LT5zYV9mYW1pbHkgPT0gQUZfSU5FVDYpIHsKLQkJCWlmIChvcHRzaXplIDwgc2l6ZW9mKHN0cnVj
dCBzY3RwX2dldGFkZHJlc3NlcykgLSBzaXplb2Yoc3RydWN0IHNvY2thZGRyKSArIHNpemVvZihz
dHJ1Y3Qgc29ja2FkZHJfaW42KSkgeworCQlpZiAoc2EtPnNhX2ZhbWlseSA9PSBBRl9JTkVUNikg
eworCQkJaWYgKG9wdHNpemUgPCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNikpIHsKIAkJCQlT
Q1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVR
LCBFSU5WQUwpOwogCQkJCWVycm9yID0gRUlOVkFMOwogCQkJCWJyZWFrOwogCQkJfQotI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMDAwMAorI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQlpZiAodGQg
IT0gTlVMTCAmJgogCQkJICAgIChlcnJvciA9IHByaXNvbl9sb2NhbF9pcDYodGQtPnRkX3VjcmVk
LAotCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJigoKHN0cnVjdCBzb2NrYWRkcl9p
bjYgKikoYWRkcnMtPmFkZHIpKS0+c2luNl9hZGRyKSwKKwkJCSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICYoKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopc2EpLT5zaW42X2FkZHIpLAogCQkJ
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNDVFBfSVBWNl9WNk9OTFkoaW5wKSAhPSAw
KSkpICE9IDApIHsKIAkJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgc3RjYiwgTlVMTCwgU0NU
UF9GUk9NX1NDVFBfVVNSUkVRLCBlcnJvcik7CiAJCQkJYnJlYWs7CkBAIC02ODcwLDEyICs2OTA0
LDEwIEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAq
b3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJCWVycm9yID0gRUFGTk9TVVBQT1JUOwogCQkJYnJl
YWs7CiAJCX0KLQkJc2N0cF9iaW5keF9kZWxldGVfYWRkcmVzcyhpbnAsIGFkZHJzLT5hZGRyLAot
CQkJCQkgIGFkZHJzLT5zZ2V0X2Fzc29jX2lkLCB2cmZfaWQsCi0JCQkJCSAgJmVycm9yKTsKKwkJ
c2N0cF9iaW5keF9kZWxldGVfYWRkcmVzcyhpbnAsIHNhLCB2cmZfaWQsICZlcnJvcik7CiAJCWJy
ZWFrOwogCX0KLSNpZmRlZiBfX0FQUExFX18KKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKIAljYXNlIFNDVFBfTElTVEVOX0ZJWDoKIAkJLyogb25seSBh
cHBsaWVzIHRvIG9uZS10by1tYW55IHNvY2tldHMgKi8KIAkJaWYgKGlucC0+c2N0cF9mbGFncyAm
IFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpIHsKQEAgLTY4ODcsNyArNjkxOSw3IEBAIHNjdHBfc2V0
b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qg
b3B0c2l6ZSwKIAkJCWVycm9yID0gRUlOVkFMOwogCQl9CiAJCWJyZWFrOwotI2VuZGlmCQkJCS8q
IF9fQVBQTEVfXyAqLworI2VuZGlmCiAJY2FzZSBTQ1RQX0VWRU5UOgogCXsKIAkJc3RydWN0IHNj
dHBfZXZlbnQgKmV2ZW50OwpAQCAtNjk2Nyw4ICs2OTk5LDcgQEAgc2N0cF9zZXRvcHQoc3RydWN0
IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAog
CQkJCSAqIHNvIHJldHVybiBhbiBlcnJvciBmb3Igc2VuZGVyIGRyeSBldmVudHMKIAkJCQkgKi8K
IAkJCQlpZiAoKGV2ZW50X3R5cGUgPT0gU0NUUF9QQ0JfRkxBR1NfRFJZRVZOVCkgJiYKLQkJCQkg
ICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSA9PSAwKSAmJgot
CQkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpID09
IDApICYmCisJCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBF
KSAmJgogCQkJCSAgICAoKGV2ZW50LT5zZV9hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykgfHwK
IAkJCQkgICAgIChldmVudC0+c2VfYXNzb2NfaWQgPT0gU0NUUF9DVVJSRU5UX0FTU09DKSkpIHsK
IAkJCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQ
X1VTUlJFUSwgRU5PVFNVUCk7CkBAIC02OTc3LDggKzcwMDgsOSBAQCBzY3RwX3NldG9wdChzdHJ1
Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90IG9wdHNpemUs
CiAJCQkJfQogCQkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQ
RSkgfHwKIAkJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBP
T0wpIHx8Ci0JCQkJICAgIChldmVudC0+c2VfYXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0Mp
IHx8Ci0JCQkJICAgIChldmVudC0+c2VfYXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSB7CisJ
CQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJ
CQkgICAgICgoZXZlbnQtPnNlX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSB8fAorCQkJ
CSAgICAgIChldmVudC0+c2VfYXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSkpIHsKIAkJCQkJ
U0NUUF9JTlBfV0xPQ0soaW5wKTsKIAkJCQkJaWYgKGV2ZW50LT5zZV9vbikgewogCQkJCQkJc2N0
cF9mZWF0dXJlX29uKGlucCwgZXZlbnRfdHlwZSk7CkBAIC02OTg3LDggKzcwMTksOSBAQCBzY3Rw
X3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6
ZV90IG9wdHNpemUsCiAJCQkJCX0KIAkJCQkJU0NUUF9JTlBfV1VOTE9DSyhpbnApOwogCQkJCX0K
LQkJCQlpZiAoKGV2ZW50LT5zZV9hc3NvY19pZCA9PSBTQ1RQX0NVUlJFTlRfQVNTT0MpIHx8Ci0J
CQkJICAgIChldmVudC0+c2VfYXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSB7CisJCQkJaWYg
KChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJCSAgICAo
KGV2ZW50LT5zZV9hc3NvY19pZCA9PSBTQ1RQX0NVUlJFTlRfQVNTT0MpIHx8CisJCQkJICAgICAo
ZXZlbnQtPnNlX2Fzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkpIHsKIAkJCQkJU0NUUF9JTlBf
UkxPQ0soaW5wKTsKIAkJCQkJTElTVF9GT1JFQUNIKHN0Y2IsICZpbnAtPnNjdHBfYXNvY19saXN0
LCBzY3RwX3RjYmxpc3QpIHsKIAkJCQkJCVNDVFBfVENCX0xPQ0soc3RjYik7CkBAIC03MDAyLDYg
KzcwMzUsMTAgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2
b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQkJCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7
CiAJCQkJfQogCQkJfQorCQl9IGVsc2UgeworCQkJaWYgKHN0Y2IpIHsKKwkJCQlTQ1RQX1RDQl9V
TkxPQ0soc3RjYik7CisJCQl9CiAJCX0KIAkJYnJlYWs7CiAJfQpAQCAtNzA1Nyw4ICs3MDk0LDkg
QEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2
YWwsIHNpemVfdCBvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3Mg
JiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBT
Q1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChpbmZvLT5zbmRfYXNzb2NfaWQg
PT0gU0NUUF9GVVRVUkVfQVNTT0MpIHx8Ci0JCQkgICAgKGluZm8tPnNuZF9hc3NvY19pZCA9PSBT
Q1RQX0FMTF9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZM
QUdTX1VEUFRZUEUpICYmCisJCQkgICAgICgoaW5mby0+c25kX2Fzc29jX2lkID09IFNDVFBfRlVU
VVJFX0FTU09DKSB8fAorCQkJICAgICAgKGluZm8tPnNuZF9hc3NvY19pZCA9PSBTQ1RQX0FMTF9B
U1NPQykpKSkgewogCQkJCVNDVFBfSU5QX1dMT0NLKGlucCk7CiAJCQkJaW5wLT5kZWZfc2VuZC5z
aW5mb19zdHJlYW0gPSBpbmZvLT5zbmRfc2lkOwogCQkJCXBvbGljeSA9IFBSX1NDVFBfUE9MSUNZ
KGlucC0+ZGVmX3NlbmQuc2luZm9fZmxhZ3MpOwpAQCAtNzA2OCw4ICs3MTA2LDkgQEAgc2N0cF9z
ZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVf
dCBvcHRzaXplLAogCQkJCWlucC0+ZGVmX3NlbmQuc2luZm9fY29udGV4dCA9IGluZm8tPnNuZF9j
b250ZXh0OwogCQkJCVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsKIAkJCX0KLQkJCWlmICgoaW5mby0+
c25kX2Fzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKLQkJCSAgICAoaW5mby0+c25k
X2Fzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkgeworCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3Mg
JiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICgoaW5mby0+c25kX2Fzc29jX2lk
ID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKKwkJCSAgICAgKGluZm8tPnNuZF9hc3NvY19pZCA9
PSBTQ1RQX0FMTF9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfUkxPQ0soaW5wKTsKIAkJCQlMSVNU
X0ZPUkVBQ0goc3RjYiwgJmlucC0+c2N0cF9hc29jX2xpc3QsIHNjdHBfdGNibGlzdCkgewogCQkJ
CQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwpAQCAtNzA5Niw2ICs3MTM1LDkgQEAgc2N0cF9zZXRvcHQo
c3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRz
aXplLAogCQlTQ1RQX0ZJTkRfU1RDQihpbnAsIHN0Y2IsIGluZm8tPnByX2Fzc29jX2lkKTsKIAog
CQlpZiAoaW5mby0+cHJfcG9saWN5ID4gU0NUUF9QUl9TQ1RQX01BWCkgeworCQkJaWYgKHN0Y2Ip
IHsKKwkJCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CisJCQl9CiAJCQlTQ1RQX0xUUkFDRV9FUlJf
UkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBFSU5WQUwpOwogCQkJ
ZXJyb3IgPSBFSU5WQUw7CiAJCQlicmVhazsKQEAgLTcxMDgsMTYgKzcxNTAsMTggQEAgc2N0cF9z
ZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVf
dCBvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BD
Ql9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9G
TEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChpbmZvLT5wcl9hc3NvY19pZCA9PSBTQ1RQX0ZV
VFVSRV9BU1NPQykgfHwKLQkJCSAgICAoaW5mby0+cHJfYXNzb2NfaWQgPT0gU0NUUF9BTExfQVNT
T0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBF
KSAmJgorCQkJICAgICAoKGluZm8tPnByX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSB8
fAorCQkJICAgICAgKGluZm8tPnByX2Fzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkpKSB7CiAJ
CQkJU0NUUF9JTlBfV0xPQ0soaW5wKTsKIAkJCQlpbnAtPmRlZl9zZW5kLnNpbmZvX2ZsYWdzICY9
IDB4ZmZmMDsKIAkJCQlpbnAtPmRlZl9zZW5kLnNpbmZvX2ZsYWdzIHw9IGluZm8tPnByX3BvbGlj
eTsKIAkJCQlpbnAtPmRlZl9zZW5kLnNpbmZvX3RpbWV0b2xpdmUgPSBpbmZvLT5wcl92YWx1ZTsK
IAkJCQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7CiAJCQl9Ci0JCQlpZiAoKGluZm8tPnByX2Fzc29j
X2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKLQkJCSAgICAoaW5mby0+cHJfYXNzb2NfaWQg
PT0gU0NUUF9BTExfQVNTT0MpKSB7CisJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENC
X0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgKChpbmZvLT5wcl9hc3NvY19pZCA9PSBTQ1RQX0NV
UlJFTlRfQVNTT0MpIHx8CisJCQkgICAgIChpbmZvLT5wcl9hc3NvY19pZCA9PSBTQ1RQX0FMTF9B
U1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfUkxPQ0soaW5wKTsKIAkJCQlMSVNUX0ZPUkVBQ0goc3Rj
YiwgJmlucC0+c2N0cF9hc29jX2xpc3QsIHNjdHBfdGNibGlzdCkgewogCQkJCQlTQ1RQX1RDQl9M
T0NLKHN0Y2IpOwpAQCAtNzIyNCw2ICs3MjY4LDkgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tl
dCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQkJfQog
CQl9CiAJCWlmICh0aGxkcy0+c3B0X3BhdGhjcHRobGQgIT0gMHhmZmZmKSB7CisJCQlpZiAoc3Rj
YiAhPSBOVUxMKSB7CisJCQkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOworCQkJfQogCQkJZXJyb3Ig
PSBFSU5WQUw7CiAJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9G
Uk9NX1NDVFBfVVNSUkVRLCBlcnJvcik7CiAJCQlicmVhazsKQEAgLTcyOTgsNyArNzM0NSw4IEBA
IHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFs
LCBzaXplX3Qgb3B0c2l6ZSwKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYg
U0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NU
UF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAgICAodGhsZHMtPnNwdF9hc3NvY19pZCA9
PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBf
UENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgICh0aGxkcy0+c3B0X2Fzc29jX2lkID09IFND
VFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9XTE9DSyhpbnApOwogCQkJCWlucC0+
c2N0cF9lcC5kZWZfbmV0X2ZhaWx1cmUgPSB0aGxkcy0+c3B0X3BhdGhtYXhyeHQ7CiAJCQkJaW5w
LT5zY3RwX2VwLmRlZl9uZXRfcGZfdGhyZXNob2xkID0gdGhsZHMtPnNwdF9wYXRocGZ0aGxkOwpA
QCAtNzQxMSw3ICs3NDU5LDggQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBv
cHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYg
KChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChp
bnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChl
bmNhcHMtPnN1ZV9hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAoKGlu
cC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgIChlbmNh
cHMtPnN1ZV9hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBf
V0xPQ0soaW5wKTsKIAkJCQlpbnAtPnNjdHBfZXAucG9ydCA9IGVuY2Fwcy0+c3VlX3BvcnQ7CiAJ
CQkJU0NUUF9JTlBfV1VOTE9DSyhpbnApOwpAQCAtNzQzNiw3ICs3NDg1LDggQEAgc2N0cF9zZXRv
cHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBv
cHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9G
TEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFH
U19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNT
T0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBF
KSAmJgorCQkJICAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJ
CQlTQ1RQX0lOUF9XTE9DSyhpbnApOwogCQkJCWlmIChhdi0+YXNzb2NfdmFsdWUgPT0gMCkgewog
CQkJCQlpbnAtPmVjbl9zdXBwb3J0ZWQgPSAwOwpAQCAtNzQ2NSw3ICs3NTE1LDggQEAgc2N0cF9z
ZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVf
dCBvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BD
Ql9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9G
TEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVf
QVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBU
WVBFKSAmJgorCQkJICAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsK
IAkJCQlTQ1RQX0lOUF9XTE9DSyhpbnApOwogCQkJCWlmIChhdi0+YXNzb2NfdmFsdWUgPT0gMCkg
ewogCQkJCQlpbnAtPnByc2N0cF9zdXBwb3J0ZWQgPSAwOwpAQCAtNzQ5NCw3ICs3NTQ1LDggQEAg
c2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWws
IHNpemVfdCBvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBT
Q1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQ
X1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9G
VVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFH
U19VRFBUWVBFKSAmJgorCQkJICAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09D
KSkpIHsKIAkJCQlpZiAoKGF2LT5hc3NvY192YWx1ZSA9PSAwKSAmJgogCQkJCSAgICAoaW5wLT5h
c2NvbmZfc3VwcG9ydGVkID09IDEpKSB7CiAJCQkJICAgIAkvKiBBVVRIIGlzIHJlcXVpcmVkIGZv
ciBBU0NPTkYgKi8KQEAgLTc1MzAsNyArNzU4Miw4IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2Nr
ZXQgKnNvLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzaXplX3Qgb3B0c2l6ZSwKIAkJfSBl
bHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkg
fHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkg
fHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkgeworCQkJICAg
ICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAg
KGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpKSB7CiAJCQkJaWYgKChhdi0+YXNz
b2NfdmFsdWUgIT0gMCkgJiYKIAkJCQkgICAgKGlucC0+YXV0aF9zdXBwb3J0ZWQgPT0gMCkpIHsK
IAkJCQkgICAgCS8qIEFVVEggaXMgcmVxdWlyZWQgZm9yIEFTQ09ORiAqLwpAQCAtNzU3NCw3ICs3
NjI3LDggQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYW1lLCB2b2lk
ICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBf
ZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxh
Z3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChhdi0+YXNzb2NfaWQg
PT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQ
X1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVU
VVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9XTE9DSyhpbnApOwogCQkJCWlmIChhdi0+YXNz
b2NfdmFsdWUgPT0gMCkgewogCQkJCQlpbnAtPnJlY29uZmlnX3N1cHBvcnRlZCA9IDA7CkBAIC03
NjAzLDcgKzc2NTcsOCBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5h
bWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90IG9wdHNpemUsCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlu
cC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+
c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKGF2LT5h
c3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFn
cyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0g
U0NUUF9GVVRVUkVfQVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1dMT0NLKGlucCk7CiAJCQkJaWYg
KGF2LT5hc3NvY192YWx1ZSA9PSAwKSB7CiAJCQkJCWlucC0+bnJzYWNrX3N1cHBvcnRlZCA9IDA7
CkBAIC03NjMyLDcgKzc2ODcsOCBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50
IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90IG9wdHNpemUsCiAJCX0gZWxzZSB7CiAJCQlp
ZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAg
KGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAg
KGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0
cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgIChhdi0+YXNzb2Nf
aWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1dMT0NLKGlucCk7CiAJ
CQkJaWYgKGF2LT5hc3NvY192YWx1ZSA9PSAwKSB7CiAJCQkJCWlucC0+cGt0ZHJvcF9zdXBwb3J0
ZWQgPSAwOwpAQCAtNzY3Miw3ICs3NzI4LDggQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAq
c28sIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNpemVfdCBvcHRzaXplLAogCQl9IGVsc2Ug
ewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAog
CQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAot
CQkJICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChp
bnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoYXYt
PmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9XTE9DSyhp
bnApOwogCQkJCWlucC0+bWF4X2N3bmQgPSBhdi0+YXNzb2NfdmFsdWU7CiAJCQkJU0NUUF9JTlBf
V1VOTE9DSyhpbnApOwpAQCAtNzY5MSwxNyArNzc0OCwxOCBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qg
c29ja2V0ICpzbywgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc2l6ZV90IG9wdHNpemUsCiAJ
cmV0dXJuIChlcnJvcik7CiB9CiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVk
KF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogaW50CiBzY3RwX2N0bG91dHB1dChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNv
Y2tvcHQgKnNvcHQpCiB7Ci0Jdm9pZCAqb3B0dmFsID0gTlVMTDsKLQlzaXplX3Qgb3B0c2l6ZSA9
IDA7Ci0Jdm9pZCAqcDsKLQlpbnQgZXJyb3IgPSAwOwogI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
CisJc3RydWN0IGVwb2NoX3RyYWNrZXIgZXQ7CiAJc3RydWN0IHNjdHBfaW5wY2IgKmlucDsKICNl
bmRpZgorCXZvaWQgKm9wdHZhbCA9IE5VTEw7CisJdm9pZCAqcDsKKwlzaXplX3Qgb3B0c2l6ZSA9
IDA7CisJaW50IGVycm9yID0gMDsKIAogI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCiAJaWYgKChz
b3B0LT5zb3B0X2xldmVsID09IFNPTF9TT0NLRVQpICYmCkBAIC03NzMyLDYgKzc3OTAsMTAgQEAg
c2N0cF9jdGxvdXRwdXQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2Nrb3B0ICpzb3B0KQog
CQlyZXR1cm4gKGVycm9yKTsKIAl9CiAJb3B0c2l6ZSA9IHNvcHQtPnNvcHRfdmFsc2l6ZTsKKwlp
ZiAob3B0c2l6ZSA+IFNDVFBfU09DS0VUX09QVElPTl9MSU1JVCkgeworCQlTQ1RQX0xUUkFDRV9F
UlJfUkVUKHNvLT5zb19wY2IsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1VTUlJFUSwgRU5P
QlVGUyk7CisJCXJldHVybiAoRU5PQlVGUyk7CisJfQogCWlmIChvcHRzaXplKSB7CiAJCVNDVFBf
TUFMTE9DKG9wdHZhbCwgdm9pZCAqLCBvcHRzaXplLCBTQ1RQX01fU09DS09QVCk7CiAJCWlmIChv
cHR2YWwgPT0gTlVMTCkgewpAQCAtNzc0NCwxMyArNzgwNiwxOSBAQCBzY3RwX2N0bG91dHB1dChz
dHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2tvcHQgKnNvcHQpCiAJCQlnb3RvIG91dDsKIAkJ
fQogCX0KLSNpZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0g
NTAwMDAwKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
IHx8IGRlZmluZWQoX1dJTjMyKQogCXAgPSAodm9pZCAqKXNvcHQtPnNvcHRfdGQ7CiAjZWxzZQog
CXAgPSAodm9pZCAqKXNvcHQtPnNvcHRfcDsKICNlbmRpZgogCWlmIChzb3B0LT5zb3B0X2RpciA9
PSBTT1BUX1NFVCkgeworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisJCU5FVF9FUE9DSF9FTlRF
UihldCk7CisjZW5kaWYKIAkJZXJyb3IgPSBzY3RwX3NldG9wdChzbywgc29wdC0+c29wdF9uYW1l
LCBvcHR2YWwsIG9wdHNpemUsIHApOworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisJCU5FVF9F
UE9DSF9FWElUKGV0KTsKKyNlbmRpZgogCX0gZWxzZSBpZiAoc29wdC0+c29wdF9kaXIgPT0gU09Q
VF9HRVQpIHsKIAkJZXJyb3IgPSBzY3RwX2dldG9wdChzbywgc29wdC0+c29wdF9uYW1lLCBvcHR2
YWwsICZvcHRzaXplLCBwKTsKIAl9IGVsc2UgewpAQCAtNzc2OSwyMSArNzgzNywyMCBAQCBvdXQ6
CiAjZW5kaWYKIAogI2lmZGVmIElORVQKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0Zy
ZWVCU0RfdmVyc2lvbiA+PSA1MDAwMDAKKyNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCitpbnQK
K3NjdHBfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRyKQor
eworCXZvaWQgKnAgPSBOVUxMOworI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKIHN0YXRpYyBp
bnQKIHNjdHBfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRy
LCBzdHJ1Y3QgdGhyZWFkICpwKQogewotI2Vsc2UKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8
fCBkZWZpbmVkKF9fQVBQTEVfXykKKyNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQogc3RhdGljIGlu
dAogc2N0cF9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIs
IHN0cnVjdCBwcm9jICpwKQogewotI2VsaWYgZGVmaW5lZChfX1BhbmRhX18pIHx8IGRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKLWludAotc2N0cF9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1
Y3Qgc29ja2FkZHIgKmFkZHIpCi17Ci0Jdm9pZCAqcCA9IE5VTEw7Ci0jZWxpZiBkZWZpbmVkKF9f
V2luZG93c19fKQorI2VsaWYgZGVmaW5lZChfV0lOMzIpCiBzdGF0aWMgaW50CiBzY3RwX2Nvbm5l
Y3Qoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqYWRkciwgUEtUSFJFQUQgcCkK
IHsKQEAgLTc3OTQsNiArNzg2MSw4IEBAIHNjdHBfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbywg
c3RydWN0IG1idWYgKm5hbSwgc3RydWN0IHByb2MgKnApCiAJc3RydWN0IHNvY2thZGRyICphZGRy
ID0gbXRvZChuYW0sIHN0cnVjdCBzb2NrYWRkciAqKTsKIAogI2VuZGlmCisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwlzdHJ1Y3QgZXBvY2hfdHJh
Y2tlciBldDsKICNlbmRpZgogI2lmZGVmIFNDVFBfTVZSRgogCWludCBpLCBmbmQgPSAwOwpAQCAt
NzgxNiwyNCArNzg4NSwyNCBAQCBzY3RwX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0cnVj
dCBtYnVmICpuYW0sIHN0cnVjdCBwcm9jICpwKQogCX0KIAogI2lmIGRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKLSAgICAgICAgLyogVE9ETyBfX1VzZXJzcGFjZV9fIGZhbGxzIGludG8gdGhpcyBjb2Rl
IGZvciBJUHY2IHN0dWZmIGF0IHRoZSBtb21lbnQuLi4gKi8KKwkvKiBUT0RPIF9fVXNlcnNwYWNl
X18gZmFsbHMgaW50byB0aGlzIGNvZGUgZm9yIElQdjYgc3R1ZmYgYXQgdGhlIG1vbWVudC4uLiAq
LwogI2VuZGlmCi0jaWYgIWRlZmluZWQoX19XaW5kb3dzX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX29zX0xpbnV4KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmICFk
ZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19saW51eF9fKQogCXN3aXRjaCAoYWRkci0+c2Ff
ZmFtaWx5KSB7CiAjaWZkZWYgSU5FVDYKIAljYXNlIEFGX0lORVQ2OgogCXsKLSNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDAwMDAKLQkJc3RydWN0IHNv
Y2thZGRyX2luNiAqc2luNnA7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKKwkJc3RydWN0IHNvY2thZGRyX2luNiAqc2luNjsKIAogI2VuZGlmCiAJ
CWlmIChhZGRyLT5zYV9sZW4gIT0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKSB7CiAJCQlT
Q1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVR
LCBFSU5WQUwpOwogCQkJcmV0dXJuIChFSU5WQUwpOwogCQl9Ci0jaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAwMDAwCi0JCXNpbjZwID0gKHN0cnVjdCBz
b2NrYWRkcl9pbjYgKilhZGRyOwotCQlpZiAocCAhPSBOVUxMICYmIChlcnJvciA9IHByaXNvbl9y
ZW1vdGVfaXA2KHAtPnRkX3VjcmVkLCAmc2luNnAtPnNpbjZfYWRkcikpICE9IDApIHsKKyNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQlzaW42ID0g
KHN0cnVjdCBzb2NrYWRkcl9pbjYgKilhZGRyOworCQlpZiAocCAhPSBOVUxMICYmIChlcnJvciA9
IHByaXNvbl9yZW1vdGVfaXA2KHAtPnRkX3VjcmVkLCAmc2luNi0+c2luNl9hZGRyKSkgIT0gMCkg
ewogCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQ
X1VTUlJFUSwgZXJyb3IpOwogCQkJcmV0dXJuIChlcnJvcik7CiAJCX0KQEAgLTc4NDQsMTkgKzc5
MTMsMTkgQEAgc2N0cF9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFt
LCBzdHJ1Y3QgcHJvYyAqcCkKICNpZmRlZiBJTkVUCiAJY2FzZSBBRl9JTkVUOgogCXsKLSNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDAwMDAKLQkJc3Ry
dWN0IHNvY2thZGRyX2luICpzaW5wOworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCisJCXN0cnVjdCBzb2NrYWRkcl9pbiAqc2luOwogCiAjZW5kaWYK
LSNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmICFkZWZpbmVkKF9XSU4z
MikKIAkJaWYgKGFkZHItPnNhX2xlbiAhPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSkgewog
CQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1VT
UlJFUSwgRUlOVkFMKTsKIAkJCXJldHVybiAoRUlOVkFMKTsKIAkJfQogI2VuZGlmCi0jaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAwMDAwCi0JCXNpbnAg
PSAoc3RydWN0IHNvY2thZGRyX2luICopYWRkcjsKLQkJaWYgKHAgIT0gTlVMTCAmJiAoZXJyb3Ig
PSBwcmlzb25fcmVtb3RlX2lwNChwLT50ZF91Y3JlZCwgJnNpbnAtPnNpbl9hZGRyKSkgIT0gMCkg
eworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJ
CXNpbiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilhZGRyOworCQlpZiAocCAhPSBOVUxMICYmIChl
cnJvciA9IHByaXNvbl9yZW1vdGVfaXA0KHAtPnRkX3VjcmVkLCAmc2luLT5zaW5fYWRkcikpICE9
IDApIHsKIAkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01f
U0NUUF9VU1JSRVEsIGVycm9yKTsKIAkJCXJldHVybiAoZXJyb3IpOwogCQl9CkBAIC03ODcyLDcg
Kzc5NDEsOSBAQCBzY3RwX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICpu
YW0sIHN0cnVjdCBwcm9jICpwKQogCVNDVFBfSU5QX0lOQ1JfUkVGKGlucCk7CiAJU0NUUF9BU09D
X0NSRUFURV9MT0NLKGlucCk7CiAJY3JlYXRlX2xvY2tfb24gPSAxOwotCisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwlORVRfRVBPQ0hfRU5URVIo
ZXQpOworI2VuZGlmCiAKIAlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1NP
Q0tFVF9BTExHT05FKSB8fAogCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1Nf
U09DS0VUX0dPTkUpKSB7CkBAIC03OTYwLDcgKzgwMzEsOCBAQCBzY3RwX2Nvbm5lY3Qoc3RydWN0
IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICpuYW0sIHN0cnVjdCBwcm9jICpwKQogCS8qIFdlIGFy
ZSBHT09EIHRvIGdvICovCiAJc3RjYiA9IHNjdHBfYWxvY19hc3NvYyhpbnAsIGFkZHIsICZlcnJv
ciwgMCwgdnJmX2lkLAogCSAgICAgICAgICAgICAgICAgICAgICAgaW5wLT5zY3RwX2VwLnByZV9v
cGVuX3N0cmVhbV9jb3VudCwKLQkgICAgICAgICAgICAgICAgICAgICAgIGlucC0+c2N0cF9lcC5w
b3J0LCBwKTsKKwkgICAgICAgICAgICAgICAgICAgICAgIGlucC0+c2N0cF9lcC5wb3J0LCBwLAor
CSAgICAgICAgICAgICAgICAgICAgICAgU0NUUF9JTklUSUFMSVpFX0FVVEhfUEFSQU1TKTsKIAlp
ZiAoc3RjYiA9PSBOVUxMKSB7CiAJCS8qIEdhayEgbm8gbWVtb3J5ICovCiAJCWdvdG8gb3V0X25v
dzsKQEAgLTc5NzAsMTkgKzgwNDIsMTggQEAgc2N0cF9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNv
LCBzdHJ1Y3QgbWJ1ZiAqbmFtLCBzdHJ1Y3QgcHJvYyAqcCkKIAkJLyogU2V0IHRoZSBjb25uZWN0
ZWQgZmxhZyBzbyB3ZSBjYW4gcXVldWUgZGF0YSAqLwogCQlzb2lzY29ubmVjdGluZyhzbyk7CiAJ
fQotCVNDVFBfU0VUX1NUQVRFKCZzdGNiLT5hc29jLCBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKTsK
KwlTQ1RQX1NFVF9TVEFURShzdGNiLCBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKTsKIAkodm9pZClT
Q1RQX0dFVFRJTUVfVElNRVZBTCgmc3RjYi0+YXNvYy50aW1lX2VudGVyZWQpOwogCi0JLyogaW5p
dGlhbGl6ZSBhdXRoZW50aWNhdGlvbiBwYXJhbWV0ZXJzIGZvciB0aGUgYXNzb2MgKi8KLQlzY3Rw
X2luaXRpYWxpemVfYXV0aF9wYXJhbXMoaW5wLCBzdGNiKTsKLQogCXNjdHBfc2VuZF9pbml0aWF0
ZShpbnAsIHN0Y2IsIFNDVFBfU09fTE9DS0VEKTsKIAlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CiAg
b3V0X25vdzoKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQorCU5FVF9FUE9DSF9FWElUKGV0KTsKKyNlbmRpZgogCWlmIChjcmVhdGVfbG9ja19vbikg
ewogCQlTQ1RQX0FTT0NfQ1JFQVRFX1VOTE9DSyhpbnApOwogCX0KLQogCVNDVFBfSU5QX0RFQ1Jf
UkVGKGlucCk7CiAJcmV0dXJuIChlcnJvcik7CiB9CkBAIC04MTI3LDcgKzgxOTgsOCBAQCBzY3Rw
Y29ubl9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIpCiAJ
LyogV2UgYXJlIEdPT0QgdG8gZ28gKi8KIAlzdGNiID0gc2N0cF9hbG9jX2Fzc29jKGlucCwgYWRk
ciwgJmVycm9yLCAwLCB2cmZfaWQsCiAJICAgICAgICAgICAgICAgICAgICAgICBpbnAtPnNjdHBf
ZXAucHJlX29wZW5fc3RyZWFtX2NvdW50LAotCSAgICAgICAgICAgICAgICAgICAgICAgaW5wLT5z
Y3RwX2VwLnBvcnQsIHApOworCSAgICAgICAgICAgICAgICAgICAgICAgaW5wLT5zY3RwX2VwLnBv
cnQsIHAsCisJICAgICAgICAgICAgICAgICAgICAgICBTQ1RQX0lOSVRJQUxJWkVfQVVUSF9QQVJB
TVMpOwogCWlmIChzdGNiID09IE5VTEwpIHsKIAkJLyogR2FrISBubyBtZW1vcnkgKi8KIAkJZ290
byBvdXRfbm93OwpAQCAtODEzNywxMiArODIwOSw5IEBAIHNjdHBjb25uX2Nvbm5lY3Qoc3RydWN0
IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqYWRkcikKIAkJLyogU2V0IHRoZSBjb25uZWN0
ZWQgZmxhZyBzbyB3ZSBjYW4gcXVldWUgZGF0YSAqLwogCQlzb2lzY29ubmVjdGluZyhzbyk7CiAJ
fQotCVNDVFBfU0VUX1NUQVRFKCZzdGNiLT5hc29jLCBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKTsK
KwlTQ1RQX1NFVF9TVEFURShzdGNiLCBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKTsKIAkodm9pZClT
Q1RQX0dFVFRJTUVfVElNRVZBTCgmc3RjYi0+YXNvYy50aW1lX2VudGVyZWQpOwogCi0JLyogaW5p
dGlhbGl6ZSBhdXRoZW50aWNhdGlvbiBwYXJhbWV0ZXJzIGZvciB0aGUgYXNzb2MgKi8KLQlzY3Rw
X2luaXRpYWxpemVfYXV0aF9wYXJhbXMoaW5wLCBzdGNiKTsKLQogCXNjdHBfc2VuZF9pbml0aWF0
ZShpbnAsIHN0Y2IsIFNDVFBfU09fTE9DS0VEKTsKIAlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CiAg
b3V0X25vdzoKQEAgLTgxNTUsMTYgKzgyMjQsMTIgQEAgc2N0cGNvbm5fY29ubmVjdChzdHJ1Y3Qg
c29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRyKQogfQogI2VuZGlmCiBpbnQKLSNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMDAKLSNpZiBf
X0ZyZWVCU0RfdmVyc2lvbiA+PSA3MDAwMDAKKyNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCitz
Y3RwX2xpc3RlbihzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IGJhY2tsb2csIHN0cnVjdCBwcm9jICpw
KQorI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKIHNjdHBfbGlzdGVuKHN0cnVjdCBzb2NrZXQg
KnNvLCBpbnQgYmFja2xvZywgc3RydWN0IHRocmVhZCAqcCkKLSNlbHNlCi1zY3RwX2xpc3Rlbihz
dHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHRocmVhZCAqcCkKLSNlbmRpZgotI2VsaWYgZGVmaW5l
ZChfX1dpbmRvd3NfXykKKyNlbGlmIGRlZmluZWQoX1dJTjMyKQogc2N0cF9saXN0ZW4oc3RydWN0
IHNvY2tldCAqc28sIGludCBiYWNrbG9nLCBQS1RIUkVBRCBwKQotI2VsaWYgZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQotc2N0cF9saXN0ZW4oc3RydWN0IHNvY2tldCAqc28sIGludCBiYWNrbG9nLCBz
dHJ1Y3QgcHJvYyAqcCkKICNlbHNlCiBzY3RwX2xpc3RlbihzdHJ1Y3Qgc29ja2V0ICpzbywgc3Ry
dWN0IHByb2MgKnApCiAjZW5kaWYKQEAgLTgyOTksNyArODM2NCw3IEBAIHNjdHBfbGlzdGVuKHN0
cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgcHJvYyAqcCkKIAkJc2N0cF9sb2dfbG9jayhpbnAsIChz
dHJ1Y3Qgc2N0cF90Y2IgKilOVUxMLCBTQ1RQX0xPR19MT0NLX1NPQ0spOwogCX0KICNlbmRpZgot
I2lmIChkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDUwMDAwMCkg
fHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlTT0NLX0xPQ0soc28pOwogCWVycm9yID0gc29saXN0ZW5f
cHJvdG9fY2hlY2soc28pOwogCVNPQ0tfVU5MT0NLKHNvKTsKQEAgLTgzMzksMjUgKzg0MDQsMTcg
QEAgc2N0cF9saXN0ZW4oc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBwcm9jICpwKQogCQl9CiAJ
fQogCVNDVFBfSU5QX1dMT0NLKGlucCk7Ci0jaWYgKGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9f
RnJlZUJTRF92ZXJzaW9uID4gNTAwMDAwKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKSB8fCBkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCi0jaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0gMTIwMDAzNAorI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJaWYgKChp
bnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSA9PSAwKSB7CiAJCVNPQ0tf
TE9DSyhzbyk7CiAJCXNvbGlzdGVuX3Byb3RvKHNvLCBiYWNrbG9nKTsKIAkJU09DS19VTkxPQ0so
c28pOwogCX0KLSNlbGlmIF9fRnJlZUJTRF92ZXJzaW9uID49IDcwMDAwMCB8fCBkZWZpbmVkKF9f
V2luZG93c19fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi0JLyogSXQgYXBwZWFycyBmb3Ig
Ny4wIGFuZCBvbiwgd2UgbXVzdCBhbHdheXMgY2FsbCB0aGlzLiAqLworI2VsaWYgZGVmaW5lZChf
V0lOMzIpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlTT0NLX0xPQ0soc28pOwogCXNvbGlz
dGVuX3Byb3RvKHNvLCBiYWNrbG9nKTsKLSNlbHNlCi0JU09DS19MT0NLKHNvKTsKLQlpZiAoKGlu
cC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpID09IDApIHsKLQkJc29saXN0
ZW5fcHJvdG8oc28pOwotCX0KLSNlbmRpZgogI2VuZGlmCi0jaWYgIWRlZmluZWQoX19GcmVlQlNE
X18pIHx8IF9fRnJlZUJTRF92ZXJzaW9uIDwgMTIwMDAzNAorI2lmICEoZGVmaW5lZChfX0ZyZWVC
U0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAJaWYgKGlucC0+c2N0cF9mbGFncyAm
IFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpIHsKIAkJLyogcmVtb3ZlIHRoZSBBQ0NFUFRDT05OIGZs
YWcgZm9yIG9uZS10by1tYW55IHNvY2tldHMgKi8KICNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CkBAIC04MzY4LDcgKzg0MjUsNyBAQCBzY3RwX2xpc3RlbihzdHJ1Y3Qgc29ja2V0ICpzbywgc3Ry
dWN0IHByb2MgKnApCiAJfQogCVNPQ0tfVU5MT0NLKHNvKTsKICNlbmRpZgotI2lmIChkZWZpbmVk
KF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA3MDAwMDApIHx8IGRlZmluZWQo
X19XaW5kb3dzX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSB8fCBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWlm
IChiYWNrbG9nID4gMCkgewogCQlpbnAtPnNjdHBfZmxhZ3MgfD0gU0NUUF9QQ0JfRkxBR1NfQUND
RVBUSU5HOwogCX0gZWxzZSB7CkBAIC04Mzg0LDI1ICs4NDQxLDE1IEBAIHNjdHBfbGlzdGVuKHN0
cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgcHJvYyAqcCkKIHN0YXRpYyBpbnQgc2N0cF9kZWZlcmVk
X3dha2V1cF9jbnQgPSAwOwogCiBpbnQKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZp
bmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogc2N0cF9hY2NlcHQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAq
KmFkZHIpCiB7Ci0jZWxpZiBkZWZpbmVkKF9fUGFuZGFfXykKLXNjdHBfYWNjZXB0KHN0cnVjdCBz
b2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIGludCAqbmFtZWxlbiwKLQkgICAgdm9p
ZCAqYWNjZXB0X2luZm8sIGludCAqYWNjZXB0X2luZm9fbGVuKQotewotI2Vsc2UKLXNjdHBfYWNj
ZXB0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtKQotewotCXN0cnVjdCBzb2Nr
YWRkciAqYWRkciA9IG10b2QobmFtLCBzdHJ1Y3Qgc29ja2FkZHIgKik7Ci0jZW5kaWYKIAlzdHJ1
Y3Qgc2N0cF90Y2IgKnN0Y2I7CiAJc3RydWN0IHNjdHBfaW5wY2IgKmlucDsKIAl1bmlvbiBzY3Rw
X3NvY2tzdG9yZSBzdG9yZTsKICNpZmRlZiBJTkVUNgotI2lmZGVmIFNDVFBfS0FNRQorI2lmIGRl
ZmluZWQoU0NUUF9LQU1FKSAmJiBkZWZpbmVkKFNDVFBfRU1CRURERURfVjZfU0NPUEUpCiAJaW50
IGVycm9yOwotI2VuZGlmIC8qIFNDVFBfS0FNRSAqLworI2VuZGlmCiAjZW5kaWYKIAlpbnAgPSAo
c3RydWN0IHNjdHBfaW5wY2IgKilzby0+c29fcGNiOwogCkBAIC04NDEwLDUzICs4NDU3LDkyIEBA
IHNjdHBfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtKQogCQlTQ1RQ
X0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBF
SU5WQUwpOwogCQlyZXR1cm4gKEVDT05OUkVTRVQpOwogCX0KLQlTQ1RQX0lOUF9STE9DSyhpbnAp
OworCVNDVFBfSU5QX1dMT0NLKGlucCk7CiAJaWYgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENC
X0ZMQUdTX1VEUFRZUEUpIHsKLQkJU0NUUF9JTlBfUlVOTE9DSyhpbnApOworCQlTQ1RQX0lOUF9X
VU5MT0NLKGlucCk7CiAJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQ
X0ZST01fU0NUUF9VU1JSRVEsIEVPUE5PVFNVUFApOwogCQlyZXR1cm4gKEVPUE5PVFNVUFApOwog
CX0KIAlpZiAoc28tPnNvX3N0YXRlICYgU1NfSVNESVNDT05ORUNURUQpIHsKLQkJU0NUUF9JTlBf
UlVOTE9DSyhpbnApOworCQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7CiAJCVNDVFBfTFRSQUNFX0VS
Ul9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIEVDT05OQUJPUlRF
RCk7CiAJCXJldHVybiAoRUNPTk5BQk9SVEVEKTsKIAl9CiAJc3RjYiA9IExJU1RfRklSU1QoJmlu
cC0+c2N0cF9hc29jX2xpc3QpOwogCWlmIChzdGNiID09IE5VTEwpIHsKLQkJU0NUUF9JTlBfUlVO
TE9DSyhpbnApOworCQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7CiAJCVNDVFBfTFRSQUNFX0VSUl9S
RVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIEVJTlZBTCk7CiAJCXJl
dHVybiAoRUNPTk5SRVNFVCk7CiAJfQogCVNDVFBfVENCX0xPQ0soc3RjYik7Ci0JU0NUUF9JTlBf
UlVOTE9DSyhpbnApOwogCXN0b3JlID0gc3RjYi0+YXNvYy5wcmltYXJ5X2Rlc3RpbmF0aW9uLT5y
by5fbF9hZGRyOwotCXN0Y2ItPmFzb2Muc3RhdGUgJj0gflNDVFBfU1RBVEVfSU5fQUNDRVBUX1FV
RVVFOwotCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKKwlTQ1RQX0NMRUFSX1NVQlNUQVRFKHN0Y2Is
IFNDVFBfU1RBVEVfSU5fQUNDRVBUX1FVRVVFKTsKKwkvKiBXYWtlIGFueSBkZWxheWVkIHNsZWVw
IGFjdGlvbiAqLworCWlmIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19ET05UX1dB
S0UpIHsKKwkJaW5wLT5zY3RwX2ZsYWdzICY9IH5TQ1RQX1BDQl9GTEFHU19ET05UX1dBS0U7CisJ
CWlmIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19XQUtFT1VUUFVUKSB7CisJCQlp
bnAtPnNjdHBfZmxhZ3MgJj0gflNDVFBfUENCX0ZMQUdTX1dBS0VPVVRQVVQ7CisJCQlTT0NLQlVG
X0xPQ0soJmlucC0+c2N0cF9zb2NrZXQtPnNvX3NuZCk7CisJCQlpZiAoc293cml0ZWFibGUoaW5w
LT5zY3RwX3NvY2tldCkpIHsKKyNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQkJLypfX1Vz
ZXJzcGFjZV9fIGNhbGxpbmcgc293d2FrdXBfbG9ja2VkIGJlY2F1c2Ugb2YgU09DS0JVRl9MT0NL
IGFib3ZlLiAqLworI2VuZGlmCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChf
V0lOMzIpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJCQlzb3d3YWtldXBfbG9ja2VkKGlu
cC0+c2N0cF9zb2NrZXQpOworI2Vsc2UKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKwkJCQkvKiBz
b2NrZXQgaXMgbG9ja2VkICovCisjZW5kaWYKKwkJCQlzb3d3YWtldXAoaW5wLT5zY3RwX3NvY2tl
dCk7CisjZW5kaWYKKwkJCX0gZWxzZSB7CisJCQkJU09DS0JVRl9VTkxPQ0soJmlucC0+c2N0cF9z
b2NrZXQtPnNvX3NuZCk7CisJCQl9CisJCX0KKwkJaWYgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBf
UENCX0ZMQUdTX1dBS0VJTlBVVCkgeworCQkJaW5wLT5zY3RwX2ZsYWdzICY9IH5TQ1RQX1BDQl9G
TEFHU19XQUtFSU5QVVQ7CisJCQlTT0NLQlVGX0xPQ0soJmlucC0+c2N0cF9zb2NrZXQtPnNvX3Jj
dik7CisJCQlpZiAoc29yZWFkYWJsZShpbnAtPnNjdHBfc29ja2V0KSkgeworCQkJCXNjdHBfZGVm
ZXJlZF93YWtldXBfY250Kys7CisjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQkJCS8qX19V
c2Vyc3BhY2VfXyBjYWxsaW5nIHNvcndha3VwX2xvY2tlZCBiZWNhdXNlIG9mIFNPQ0tCVUZfTE9D
SyBhYm92ZSAqLworI2VuZGlmCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChf
V0lOMzIpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJCQlzb3J3YWtldXBfbG9ja2VkKGlu
cC0+c2N0cF9zb2NrZXQpOworI2Vsc2UKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKwkJCQkvKiBz
b2NrZXQgaXMgbG9ja2VkICovCisjZW5kaWYKKwkJCQlzb3J3YWtldXAoaW5wLT5zY3RwX3NvY2tl
dCk7CisjZW5kaWYKKwkJCX0gZWxzZSB7CisJCQkJU09DS0JVRl9VTkxPQ0soJmlucC0+c2N0cF9z
b2NrZXQtPnNvX3Jjdik7CisJCQl9CisJCX0KKwl9CisJU0NUUF9JTlBfV1VOTE9DSyhpbnApOwor
CWlmIChzdGNiLT5hc29jLnN0YXRlICYgU0NUUF9TVEFURV9BQk9VVF9UT19CRV9GUkVFRCkgewor
CQlzY3RwX2ZyZWVfYXNzb2MoaW5wLCBzdGNiLCBTQ1RQX05PUk1BTF9QUk9DLAorCQkgICAgICAg
ICAgICAgICAgU0NUUF9GUk9NX1NDVFBfVVNSUkVRICsgU0NUUF9MT0NfMTkpOworCX0gZWxzZSB7
CisJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKKwl9CiAJc3dpdGNoIChzdG9yZS5zYS5zYV9mYW1p
bHkpIHsKICNpZmRlZiBJTkVUCiAJY2FzZSBBRl9JTkVUOgogCXsKIAkJc3RydWN0IHNvY2thZGRy
X2luICpzaW47CiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVf
XykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlT
Q1RQX01BTExPQ19TT05BTUUoc2luLCBzdHJ1Y3Qgc29ja2FkZHJfaW4gKiwgc2l6ZW9mICpzaW4p
OwogCQlpZiAoc2luID09IE5VTEwpCiAJCQlyZXR1cm4gKEVOT01FTSk7Ci0jZWxzZQotCQlzaW4g
PSAoc3RydWN0IHNvY2thZGRyX2luICopYWRkcjsKLQkJbWVtc2V0KHNpbiwgMCwgc2l6ZW9mKCpz
aW4pKTsKLSNlbmRpZgogCQlzaW4tPnNpbl9mYW1pbHkgPSBBRl9JTkVUOwogI2lmZGVmIEhBVkVf
U0lOX0xFTgogCQlzaW4tPnNpbl9sZW4gPSBzaXplb2YoKnNpbik7CiAjZW5kaWYKIAkJc2luLT5z
aW5fcG9ydCA9IHN0b3JlLnNpbi5zaW5fcG9ydDsKIAkJc2luLT5zaW5fYWRkciA9IHN0b3JlLnNp
bi5zaW5fYWRkcjsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVf
XykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkq
YWRkciA9IChzdHJ1Y3Qgc29ja2FkZHIgKilzaW47Ci0jZWxpZiAhZGVmaW5lZChfX1BhbmRhX18p
Ci0JCVNDVFBfQlVGX0xFTihuYW0pID0gc2l6ZW9mKCpzaW4pOwotI2VuZGlmCiAJCWJyZWFrOwog
CX0KICNlbmRpZgpAQCAtODQ2NSwxNCArODU1MSw5IEBAIHNjdHBfYWNjZXB0KHN0cnVjdCBzb2Nr
ZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtKQogCXsKIAkJc3RydWN0IHNvY2thZGRyX2luNiAqc2lu
NjsKIAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBk
ZWZpbmVkKF9fV2luZG93c19fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCVNDVFBfTUFM
TE9DX1NPTkFNRShzaW42LCBzdHJ1Y3Qgc29ja2FkZHJfaW42ICosIHNpemVvZiAqc2luNik7CiAJ
CWlmIChzaW42ID09IE5VTEwpCiAJCQlyZXR1cm4gKEVOT01FTSk7Ci0jZWxzZQotCQlzaW42ID0g
KHN0cnVjdCBzb2NrYWRkcl9pbjYgKilhZGRyOwotCQltZW1zZXQoc2luNiwgMCwgc2l6ZW9mKCpz
aW42KSk7Ci0jZW5kaWYKIAkJc2luNi0+c2luNl9mYW1pbHkgPSBBRl9JTkVUNjsKICNpZmRlZiBI
QVZFX1NJTjZfTEVOCiAJCXNpbjYtPnNpbjZfbGVuID0gc2l6ZW9mKCpzaW42KTsKQEAgLTg0OTYs
MTEgKzg1NzcsNyBAQCBzY3RwX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYg
Km5hbSkKIAkJCXNpbjYtPnNpbjZfc2NvcGVfaWQgPSAwOwkvKiBYWFggKi8KICNlbmRpZiAvKiBT
Q1RQX0tBTUUgKi8KICNlbmRpZiAvKiBTQ1RQX0VNQkVEREVEX1Y2X1NDT1BFICovCi0jaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19XaW5k
b3dzX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJKmFkZHIgPSAoc3RydWN0IHNvY2th
ZGRyICopc2luNjsKLSNlbGlmICFkZWZpbmVkKF9fUGFuZGFfXykKLQkJU0NUUF9CVUZfTEVOKG5h
bSkgPSBzaXplb2YoKnNpbjYpOwotI2VuZGlmCiAJCWJyZWFrOwogCX0KICNlbmRpZgpAQCAtODUy
Nyw3MyArODYwNCwxNSBAQCBzY3RwX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1i
dWYgKm5hbSkKIAkJLyogVFNOSCAqLwogCQlicmVhazsKIAl9Ci0JLyogV2FrZSBhbnkgZGVsYXll
ZCBzbGVlcCBhY3Rpb24gKi8KLQlpZiAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1Nf
RE9OVF9XQUtFKSB7Ci0JCVNDVFBfSU5QX1dMT0NLKGlucCk7Ci0JCWlucC0+c2N0cF9mbGFncyAm
PSB+U0NUUF9QQ0JfRkxBR1NfRE9OVF9XQUtFOwotCQlpZiAoaW5wLT5zY3RwX2ZsYWdzICYgU0NU
UF9QQ0JfRkxBR1NfV0FLRU9VVFBVVCkgewotCQkJaW5wLT5zY3RwX2ZsYWdzICY9IH5TQ1RQX1BD
Ql9GTEFHU19XQUtFT1VUUFVUOwotCQkJU0NUUF9JTlBfV1VOTE9DSyhpbnApOwotCQkJU09DS0JV
Rl9MT0NLKCZpbnAtPnNjdHBfc29ja2V0LT5zb19zbmQpOwotCQkJaWYgKHNvd3JpdGVhYmxlKGlu
cC0+c2N0cF9zb2NrZXQpKSB7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qX19Vc2Vyc3BhY2VfXyBjYWxsaW5nIHNvd3dha3VwX2xvY2tl
ZCBiZWNhdXNlIG9mIFNPQ0tCVUZfTE9DSyBhYm92ZS4gKi8KLSNlbmRpZgotI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pIHx8IGRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKLQkJCQlzb3d3YWtldXBfbG9ja2VkKGlucC0+c2N0cF9zb2NrZXQpOwotI2Vsc2UKLSNp
ZiBkZWZpbmVkKF9fQVBQTEVfXykKLQkJCQkvKiBzb2NrZXQgaXMgbG9ja2VkICovCi0jZW5kaWYK
LQkJCQlzb3d3YWtldXAoaW5wLT5zY3RwX3NvY2tldCk7Ci0jZW5kaWYKLQkJCX0gZWxzZSB7Ci0J
CQkJU09DS0JVRl9VTkxPQ0soJmlucC0+c2N0cF9zb2NrZXQtPnNvX3NuZCk7Ci0JCQl9Ci0JCQlT
Q1RQX0lOUF9XTE9DSyhpbnApOwotCQl9Ci0JCWlmIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BD
Ql9GTEFHU19XQUtFSU5QVVQpIHsKLQkJCWlucC0+c2N0cF9mbGFncyAmPSB+U0NUUF9QQ0JfRkxB
R1NfV0FLRUlOUFVUOwotCQkJU0NUUF9JTlBfV1VOTE9DSyhpbnApOwotCQkJU09DS0JVRl9MT0NL
KCZpbnAtPnNjdHBfc29ja2V0LT5zb19yY3YpOwotCQkJaWYgKHNvcmVhZGFibGUoaW5wLT5zY3Rw
X3NvY2tldCkpIHsKLQkJCQlzY3RwX2RlZmVyZWRfd2FrZXVwX2NudCsrOwotI2lmIGRlZmluZWQo
X19Vc2Vyc3BhY2VfXykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypfX1VzZXJz
cGFjZV9fIGNhbGxpbmcgc29yd2FrdXBfbG9ja2VkIGJlY2F1c2Ugb2YgU09DS0JVRl9MT0NLIGFi
b3ZlICovCi0jZW5kaWYKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fV2lu
ZG93c19fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi0JCQkJc29yd2FrZXVwX2xvY2tlZChp
bnAtPnNjdHBfc29ja2V0KTsKLSNlbHNlCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCi0JCQkJLyog
c29ja2V0IGlzIGxvY2tlZCAqLwotI2VuZGlmCi0JCQkJc29yd2FrZXVwKGlucC0+c2N0cF9zb2Nr
ZXQpOwotI2VuZGlmCi0JCQl9IGVsc2UgewotCQkJCVNPQ0tCVUZfVU5MT0NLKCZpbnAtPnNjdHBf
c29ja2V0LT5zb19yY3YpOwotCQkJfQotCQkJU0NUUF9JTlBfV0xPQ0soaW5wKTsKLQkJfQotCQlT
Q1RQX0lOUF9XVU5MT0NLKGlucCk7Ci0JfQotCWlmIChzdGNiLT5hc29jLnN0YXRlICYgU0NUUF9T
VEFURV9BQk9VVF9UT19CRV9GUkVFRCkgewotCQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwotCQlzY3Rw
X2ZyZWVfYXNzb2MoaW5wLCBzdGNiLCBTQ1RQX05PUk1BTF9QUk9DLAotCQkgICAgICAgICAgICAg
ICAgU0NUUF9GUk9NX1NDVFBfVVNSUkVRICsgU0NUUF9MT0NfMTkpOwotCX0KIAlyZXR1cm4gKDAp
OwogfQogCiAjaWZkZWYgSU5FVAogaW50Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVm
aW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKIHNjdHBfaW5nZXRhZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29j
a2FkZHIgKiphZGRyKQogewogCXN0cnVjdCBzb2NrYWRkcl9pbiAqc2luOwotI2VsaWYgZGVmaW5l
ZChfX1BhbmRhX18pCi1zY3RwX2luZ2V0YWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNv
Y2thZGRyICphZGRyKQotewotCXN0cnVjdCBzb2NrYWRkcl9pbiAqc2luID0gKHN0cnVjdCBzb2Nr
YWRkcl9pbiAqKWFkZHI7CiAjZWxzZQogc2N0cF9pbmdldGFkZHIoc3RydWN0IHNvY2tldCAqc28s
IHN0cnVjdCBtYnVmICpuYW0pCiB7CkBAIC04NjA2LDEyICs4NjI1LDEwIEBAIHNjdHBfaW5nZXRh
ZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtKQogCS8qCiAJICogRG8gdGhl
IG1hbGxvYyBmaXJzdCBpbiBjYXNlIGl0IGJsb2Nrcy4KIAkgKi8KLSNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNp
ZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCVNDVFBfTUFMTE9DX1NPTkFNRShzaW4sIHN0cnVj
dCBzb2NrYWRkcl9pbiAqLCBzaXplb2YgKnNpbik7CiAJaWYgKHNpbiA9PSBOVUxMKQogCQlyZXR1
cm4gKEVOT01FTSk7Ci0jZWxpZiBkZWZpbmVkKF9fUGFuZGFfXykKLQltZW1zZXQoc2luLCAwLCBz
aXplb2YoKnNpbikpOwogI2Vsc2UKIAlTQ1RQX0JVRl9MRU4obmFtKSA9IHNpemVvZigqc2luKTsK
IAltZW1zZXQoc2luLCAwLCBzaXplb2YoKnNpbikpOwpAQCAtODYyMiw3ICs4NjM5LDcgQEAgc2N0
cF9pbmdldGFkZHIoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICpuYW0pCiAjZW5kaWYK
IAlpbnAgPSAoc3RydWN0IHNjdHBfaW5wY2IgKilzby0+c29fcGNiOwogCWlmICghaW5wKSB7Ci0j
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQo
X19XaW5kb3dzX18pCisjaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJU0NUUF9GUkVFX1NP
TkFNRShzaW4pOwogI2VuZGlmCiAJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxM
LCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIEVJTlZBTCk7CkBAIC04NjkzLDcgKzg3MTAsNyBAQCBz
Y3RwX2luZ2V0YWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYgKm5hbSkKIAkJCX0K
IAkJfQogCQlpZiAoIWZuZCkgewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQo
X19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJCQlTQ1RQX0ZSRUVfU09OQU1FKHNpbik7CiAjZW5kaWYKIAkJCVNDVFBfSU5QX1JV
TkxPQ0soaW5wKTsKQEAgLTg3MDIsMjEgKzg3MTksMTcgQEAgc2N0cF9pbmdldGFkZHIoc3RydWN0
IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICpuYW0pCiAJCX0KIAl9CiAJU0NUUF9JTlBfUlVOTE9D
SyhpbnApOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8
fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJKCph
ZGRyKSA9IChzdHJ1Y3Qgc29ja2FkZHIgKilzaW47CiAjZW5kaWYKIAlyZXR1cm4gKDApOwogfQog
CiBpbnQKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwg
ZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogc2N0cF9w
ZWVyYWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICoqYWRkcikKIHsKIAlz
dHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbjsKLSNlbGlmIGRlZmluZWQoX19QYW5kYV9fKQotc2N0cF9w
ZWVyYWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRyKQotewotCXN0
cnVjdCBzb2NrYWRkcl9pbiAqc2luID0gKHN0cnVjdCBzb2NrYWRkcl9pbiAqKWFkZHI7CiAjZWxz
ZQogc2N0cF9wZWVyYWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYgKm5hbSkKIHsK
QEAgLTg3MzAsMTIgKzg3NDMsMTAgQEAgc2N0cF9wZWVyYWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywg
c3RydWN0IG1idWYgKm5hbSkKIAlzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQ7CiAKIAkvKiBEbyB0aGUg
bWFsbG9jIGZpcnN0IGluIGNhc2UgaXQgYmxvY2tzLiAqLwotI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJU0NUUF9NQUxMT0NfU09OQU1FKHNpbiwgc3RydWN0IHNv
Y2thZGRyX2luICosIHNpemVvZiAqc2luKTsKIAlpZiAoc2luID09IE5VTEwpCiAJCXJldHVybiAo
RU5PTUVNKTsKLSNlbGlmIGRlZmluZWQoX19QYW5kYV9fKQotCW1lbXNldChzaW4sIDAsIHNpemVv
Zigqc2luKSk7CiAjZWxzZQogCVNDVFBfQlVGX0xFTihuYW0pID0gc2l6ZW9mKCpzaW4pOwogCW1l
bXNldChzaW4sIDAsIHNpemVvZigqc2luKSk7CkBAIC04NzQ5LDcgKzg3NjAsNyBAQCBzY3RwX3Bl
ZXJhZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtKQogCWlmICgoaW5wID09
IE5VTEwpIHx8CiAJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfQ09OTkVD
VEVEKSA9PSAwKSkgewogCQkvKiBVRFAgdHlwZSBhbmQgbGlzdGVuZXJzIHdpbGwgZHJvcCBvdXQg
aGVyZSAqLwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8
fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCVND
VFBfRlJFRV9TT05BTUUoc2luKTsKICNlbmRpZgogCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwg
TlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBFTk9UQ09OTik7CkBAIC04NzYyLDcg
Kzg3NzMsNyBAQCBzY3RwX3BlZXJhZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAq
bmFtKQogCX0KIAlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CiAJaWYgKHN0Y2IgPT0gTlVMTCkgewot
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVk
KF9fV2luZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCVNDVFBfRlJFRV9T
T05BTUUoc2luKTsKICNlbmRpZgogCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVM
TCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBFSU5WQUwpOwpAQCAtODc4MSwxOSArODc5MiwxOSBA
QCBzY3RwX3BlZXJhZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtKQogCVND
VFBfVENCX1VOTE9DSyhzdGNiKTsKIAlpZiAoIWZuZCkgewogCQkvKiBObyBJUHY0IGFkZHJlc3Mg
Ki8KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVm
aW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlTQ1RQX0ZS
RUVfU09OQU1FKHNpbik7CiAjZW5kaWYKIAkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEws
IE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1VTUlJFUSwgRU5PRU5UKTsKIAkJcmV0dXJuIChFTk9FTlQp
OwogCX0KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwg
ZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCSgqYWRk
cikgPSAoc3RydWN0IHNvY2thZGRyICopc2luOwogI2VuZGlmCiAJcmV0dXJuICgwKTsKIH0KIAot
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVk
KF9fV2luZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBzdHJ1Y3QgcHJfdXNy
cmVxcyBzY3RwX3VzcnJlcXMgPSB7CiAjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKIAkucHJ1X2Fi
b3J0ID0gc2N0cF9hYm9ydCwKQEAgLTg4MDIsMTUgKzg4MTMsMTAgQEAgc3RydWN0IHByX3VzcnJl
cXMgc2N0cF91c3JyZXFzID0gewogCS5wcnVfYmluZCA9IHNjdHBfYmluZCwKIAkucHJ1X2Nvbm5l
Y3QgPSBzY3RwX2Nvbm5lY3QsCiAJLnBydV9jb250cm9sID0gaW5fY29udHJvbCwKLSNpZiBfX0Zy
ZWVCU0RfdmVyc2lvbiA+PSA2OTAwMDAKIAkucHJ1X2Nsb3NlID0gc2N0cF9jbG9zZSwKIAkucHJ1
X2RldGFjaCA9IHNjdHBfY2xvc2UsCiAJLnBydV9zb3BvbGwgPSBzb3BvbGxfZ2VuZXJpYywKIAku
cHJ1X2ZsdXNoID0gc2N0cF9mbHVzaCwKLSNlbHNlCi0JLnBydV9kZXRhY2ggPSBzY3RwX2RldGFj
aCwKLQkucHJ1X3NvcG9sbCA9IHNvcG9sbCwKLSNlbmRpZgogCS5wcnVfZGlzY29ubmVjdCA9IHNj
dHBfZGlzY29ubmVjdCwKIAkucHJ1X2xpc3RlbiA9IHNjdHBfbGlzdGVuLAogCS5wcnVfcGVlcmFk
ZHIgPSBzY3RwX3BlZXJhZGRyLApAQCAtODg0MCw3ICs4ODQ2LDcgQEAgc3RydWN0IHByX3VzcnJl
cXMgc2N0cF91c3JyZXFzID0gewogCS5wcnVfc29zZW5kID0gc2N0cF9zb3NlbmQsCiAJLnBydV9z
b3JlY2VpdmUgPSBzY3RwX3NvcmVjZWl2ZSwKIAkucHJ1X3NvcG9sbCA9IHNvcG9sbAotI2VsaWYg
ZGVmaW5lZChfX1dpbmRvd3NfXykKKyNlbGlmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogCXNjdHBfYWJvcnQsCiAJc2N0cF9hY2NlcHQsCiAJc2N0cF9hdHRhY2gs
CkBAIC04ODY2LDcgKzg4NzIsNyBAQCBzdHJ1Y3QgcHJfdXNycmVxcyBzY3RwX3VzcnJlcXMgPSB7
CiAJc2N0cF9jbG9zZQogI2VuZGlmCiB9OwotI2VsaWYgIWRlZmluZWQoX19QYW5kYV9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2VsaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIGlu
dAogc2N0cF91c3JyZXEoc28sIHJlcSwgbSwgbmFtLCBjb250cm9sKQogCXN0cnVjdCBzb2NrZXQg
KnNvOwpAQCAtODg3NCw4ICs4ODgwLDYgQEAgc2N0cF91c3JyZXEoc28sIHJlcSwgbSwgbmFtLCBj
b250cm9sKQogCXN0cnVjdCBtYnVmICptLCAqbmFtLCAqY29udHJvbDsKIHsKIAlzdHJ1Y3QgcHJv
YyAqcCA9IGN1cnByb2M7Ci0JdWludDMyX3QgdnJmX2lkOwotCXN0cnVjdCBzY3RwX3ZyZiAqdnJm
OwogCWludCBlcnJvcjsKIAlpbnQgZmFtaWx5OwogCXN0cnVjdCBzY3RwX2lucGNiICppbnAgPSAo
c3RydWN0IHNjdHBfaW5wY2IgKilzby0+c29fcGNiOwpAQCAtOTAxMSw3ICs5MDE1LDcgQEAgcmVn
aXN0ZXJfcmVjdl9jYihzdHJ1Y3Qgc29ja2V0ICpzbywKIH0KIAogaW50Ci1yZWdpc3Rlcl9zZW5k
X2NiKHN0cnVjdCBzb2NrZXQgKnNvLCB1aW50MzJfdCBzYl90aHJlc2hvbGQsIGludCAoKnNlbmRf
Y2IpKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHVpbnQzMl90IHNiX2ZyZWUpKQorcmVnaXN0ZXJfc2Vu
ZF9jYihzdHJ1Y3Qgc29ja2V0ICpzbywgdWludDMyX3Qgc2JfdGhyZXNob2xkLCBpbnQgKCpzZW5k
X2NiKShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCB1aW50MzJfdCBzYl9mcmVlLCB2b2lkICp1bHBfaW5m
bykpCiB7CiAJc3RydWN0IHNjdHBfaW5wY2IgKmlucDsKIApAQCAtOTA0NSw0ICs5MDQ5LDIzIEBA
IHJlZ2lzdGVyX3VscF9pbmZvIChzdHJ1Y3Qgc29ja2V0ICpzbywgdm9pZCAqdWxwX2luZm8pCiAJ
U0NUUF9JTlBfV1VOTE9DSyhpbnApOwogCXJldHVybiAoMSk7CiB9CisKK2ludAorcmV0cmlldmVf
dWxwX2luZm8gKHN0cnVjdCBzb2NrZXQgKnNvLCB2b2lkICoqcHVscF9pbmZvKQoreworCXN0cnVj
dCBzY3RwX2lucGNiICppbnA7CisKKwlpZiAocHVscF9pbmZvID09IE5VTEwpIHsKKwkJcmV0dXJu
ICgwKTsKKwl9CisKKwlpbnAgPSAoc3RydWN0IHNjdHBfaW5wY2IgKikgc28tPnNvX3BjYjsKKwlp
ZiAoaW5wID09IE5VTEwpIHsKKwkJcmV0dXJuICgwKTsKKwl9CisJU0NUUF9JTlBfUkxPQ0soaW5w
KTsKKwkqcHVscF9pbmZvID0gaW5wLT51bHBfaW5mbzsKKwlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7
CisJcmV0dXJuICgxKTsKK30KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxp
Yi9uZXRpbmV0L3NjdHBfdmFyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF92
YXIuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGJjNGFmZTk1ZjFmMC4u
ZDI0MzNkNjA3MjI4Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3Zhci5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNy
c2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3Zhci5oCkBAIC0zMiw5ICsz
Miw5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmZGVm
IF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLV9fRkJTRElEKCIkRnJlZUJTRDogaGVh
ZC9zeXMvbmV0aW5ldC9zY3RwX3Zhci5oIDMxNzQ1NyAyMDE3LTA0LTI2IDE5OjI2OjQwWiB0dWV4
ZW4gJCIpOworX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfdmFyLmgg
MzYzMzIzIDIwMjAtMDctMTkgMTI6MzQ6MTlaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAogI2lmbmRl
ZiBfTkVUSU5FVF9TQ1RQX1ZBUl9IXwpAQCAtNDQsNyArNDQsNyBAQCBfX0ZCU0RJRCgiJEZyZWVC
U0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF92YXIuaCAzMTc0NTcgMjAxNy0wNC0yNiAxOToyNjo0
MFogdHVleAogCiAjaWYgZGVmaW5lZChfS0VSTkVMKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVm
aW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogZXh0ZXJuIHN0
cnVjdCBwcl91c3JyZXFzIHNjdHBfdXNycmVxczsKICNlbmRpZgogCkBAIC0xODYsMTggKzE4Niwx
MiBAQCBleHRlcm4gc3RydWN0IHByX3VzcnJlcXMgc2N0cF91c3JyZXFzOwogCX0gXAogfQogCi0j
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPiA1MDAwMDAKKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCiAjZGVm
aW5lIHNjdHBfZnJlZV9yZW1vdGVfYWRkcihfX25ldCkgeyBcCiAJaWYgKChfX25ldCkpIHsgIFwK
IAkJaWYgKFNDVFBfREVDUkVNRU5UX0FORF9DSEVDS19SRUZDT1VOVCgmKF9fbmV0KS0+cmVmX2Nv
dW50KSkgeyBcCi0JCQkodm9pZClTQ1RQX09TX1RJTUVSX1NUT1AoJihfX25ldCktPnJ4dF90aW1l
ci50aW1lcik7IFwKLQkJCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmKF9fbmV0KS0+cG10dV90
aW1lci50aW1lcik7IFwKLQkJCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmKF9fbmV0KS0+aGJf
dGltZXIudGltZXIpOyBcCi0JCQlpZiAoKF9fbmV0KS0+cm8ucm9fcnQpIHsgXAotCQkJCVJURlJF
RSgoX19uZXQpLT5yby5yb19ydCk7IFwKLQkJCQkoX19uZXQpLT5yby5yb19ydCA9IE5VTEw7IFwK
LQkJCX0gXAorCQkJUk9fTkhGUkVFKCYoX19uZXQpLT5ybyk7IFwKIAkJCWlmICgoX19uZXQpLT5z
cmNfYWRkcl9zZWxlY3RlZCkgeyBcCiAJCQkJc2N0cF9mcmVlX2lmYSgoX19uZXQpLT5yby5fc19h
ZGRyKTsgXAogCQkJCShfX25ldCktPnJvLl9zX2FkZHIgPSBOVUxMOyBcCkBAIC0yMzksOSArMjMz
LDYgQEAgZXh0ZXJuIHN0cnVjdCBwcl91c3JyZXFzIHNjdHBfdXNycmVxczsKICNkZWZpbmUgc2N0
cF9mcmVlX3JlbW90ZV9hZGRyKF9fbmV0KSB7IFwKIAlpZiAoKF9fbmV0KSkgeyBcCiAJCWlmIChT
Q1RQX0RFQ1JFTUVOVF9BTkRfQ0hFQ0tfUkVGQ09VTlQoJihfX25ldCktPnJlZl9jb3VudCkpIHsg
XAotCQkJKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCYoX19uZXQpLT5yeHRfdGltZXIudGltZXIp
OyBcCi0JCQkodm9pZClTQ1RQX09TX1RJTUVSX1NUT1AoJihfX25ldCktPnBtdHVfdGltZXIudGlt
ZXIpOyBcCi0JCQkodm9pZClTQ1RQX09TX1RJTUVSX1NUT1AoJihfX25ldCktPmhiX3RpbWVyLnRp
bWVyKTsgXAogCQkJaWYgKChfX25ldCktPnJvLnJvX3J0KSB7IFwKIAkJCQlSVEZSRUUoKF9fbmV0
KS0+cm8ucm9fcnQpOyBcCiAJCQkJKF9fbmV0KS0+cm8ucm9fcnQgPSBOVUxMOyBcCkBAIC0yNTgs
MzEgKzI0OSw2IEBAIGV4dGVybiBzdHJ1Y3QgcHJfdXNycmVxcyBzY3RwX3VzcnJlcXM7CiAJfSBc
CiB9CiAKLSNpZiBkZWZpbmVkKF9fUGFuZGFfXykKLSNkZWZpbmUgc2N0cF9zYmZyZWUoY3RsLCBz
dGNiLCBzYiwgbSkgeyBcCi0JaWYgKChzYiktPnNiX2NjID49ICh1aW50MzJfdClTQ1RQX0JVRl9M
RU4oKG0pKSkgeyBcCi0JCWF0b21pY19zdWJ0cmFjdF9pbnQoJihzYiktPnNiX2NjLCBTQ1RQX0JV
Rl9MRU4oKG0pKSk7IFwKLQl9IGVsc2UgeyBcCi0JCShzYiktPnNiX2NjID0gMDsgXAotCX0gXAot
CWlmICgoKGN0bCktPmRvX25vdF9yZWZfc3RjYiA9PSAwKSAmJiBzdGNiKSB7IFwKLQkJaWYgKChz
dGNiKS0+YXNvYy5zYl9jYyA+PSAodWludDMyX3QpU0NUUF9CVUZfTEVOKChtKSkpIHsgXAotCQkJ
YXRvbWljX3N1YnRyYWN0X2ludCgmKHN0Y2IpLT5hc29jLnNiX2NjLCBTQ1RQX0JVRl9MRU4oKG0p
KSk7IFwKLQkJfSBlbHNlIHsgXAotCQkJKHN0Y2IpLT5hc29jLnNiX2NjID0gMDsgXAotCQl9IFwK
LQl9IFwKLX0KLQotI2RlZmluZSBzY3RwX3NiYWxsb2Moc3RjYiwgc2IsIG0pIHsgXAotCWF0b21p
Y19hZGRfaW50KCYoc2IpLT5zYl9jYywgU0NUUF9CVUZfTEVOKChtKSkpOyBcCi0JaWYgKHN0Y2Ip
IHsgXAotCQlhdG9taWNfYWRkX2ludCgmKHN0Y2IpLT5hc29jLnNiX2NjLCBTQ1RQX0JVRl9MRU4o
KG0pKSk7IFwKLQl9IFwKLX0KLQotI2Vsc2UKLQogI2RlZmluZSBzY3RwX3NiZnJlZShjdGwsIHN0
Y2IsIHNiLCBtKSB7IFwKIAlTQ1RQX1NBVkVfQVRPTUlDX0RFQ1JFTUVOVCgmKHNiKS0+c2JfY2Ms
IFNDVFBfQlVGX0xFTigobSkpKTsgXAogCVNDVFBfU0FWRV9BVE9NSUNfREVDUkVNRU5UKCYoc2Ip
LT5zYl9tYmNudCwgTVNJWkUpOyBcCkBAIC0zMDEsNyArMjY3LDYgQEAgZXh0ZXJuIHN0cnVjdCBw
cl91c3JyZXFzIHNjdHBfdXNycmVxczsKIAl9IFwKIH0KICNlbmRpZgotI2VuZGlmCiAKICNkZWZp
bmUgc2N0cF91Y291bnRfaW5jcih2YWwpIHsgXAogCXZhbCsrOyBcCkBAIC00MDMsMjIgKzM2OCwx
MyBAQCBzdHJ1Y3Qgc2N0cF90Y2I7CiBzdHJ1Y3Qgc2N0cGhkcjsKIAogCi0jaWYgKGRlZmluZWQo
X19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID4gNjkwMDAwKSB8fCBkZWZpbmVkKF9f
V2luZG93c19fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykgfHwgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIHZvaWQg
c2N0cF9jbG9zZShzdHJ1Y3Qgc29ja2V0ICpzbyk7CiAjZWxzZQogaW50IHNjdHBfZGV0YWNoKHN0
cnVjdCBzb2NrZXQgKnNvKTsKICNlbmRpZgogaW50IHNjdHBfZGlzY29ubmVjdChzdHJ1Y3Qgc29j
a2V0ICpzbyk7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18p
IHx8IGRlZmluZWQoX19XaW5kb3dzX18pCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19G
cmVlQlNEX3ZlcnNpb24gPCA5MDIwMDAKLXZvaWQgc2N0cF9jdGxpbnB1dCBfX1AoKGludCwgc3Ry
dWN0IHNvY2thZGRyICosIHZvaWQgKikpOwotaW50IHNjdHBfY3Rsb3V0cHV0IF9fUCgoc3RydWN0
IHNvY2tldCAqLCBzdHJ1Y3Qgc29ja29wdCAqKSk7Ci0jaWZkZWYgSU5FVAotdm9pZCBzY3RwX2lu
cHV0X3dpdGhfcG9ydCBfX1AoKHN0cnVjdCBtYnVmICosIGludCwgdWludDE2X3QpKTsKLXZvaWQg
c2N0cF9pbnB1dCBfX1AoKHN0cnVjdCBtYnVmICosIGludCkpOwotI2VuZGlmCi12b2lkIHNjdHBf
cGF0aG10dV9hZGp1c3RtZW50IF9fUCgoc3RydWN0IHNjdHBfdGNiICosIHVpbnQxNl90KSk7Ci0j
ZWxzZQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaWYgZGVmaW5lZChfX0FQUExFX18p
ICYmICFkZWZpbmVkKEFQUExFX0xFT1BBUkQpICYmICFkZWZpbmVkKEFQUExFX1NOT1dMRU9QQVJE
KSAmJiAhZGVmaW5lZChBUFBMRV9MSU9OKSAmJiAhZGVmaW5lZChBUFBMRV9NT1VOVEFJTkxJT04p
ICYmICFkZWZpbmVkKEFQUExFX0VMQ0FQSVRBTikKIHZvaWQgc2N0cF9jdGxpbnB1dChpbnQsIHN0
cnVjdCBzb2NrYWRkciAqLCB2b2lkICosIHN0cnVjdCBpZm5ldCAqIFNDVFBfVU5VU0VEKTsKICNl
bHNlCkBAIC00MjcsMTggKzM4MywxNSBAQCB2b2lkIHNjdHBfY3RsaW5wdXQoaW50LCBzdHJ1Y3Qg
c29ja2FkZHIgKiwgdm9pZCAqKTsKIGludCBzY3RwX2N0bG91dHB1dChzdHJ1Y3Qgc29ja2V0ICos
IHN0cnVjdCBzb2Nrb3B0ICopOwogI2lmZGVmIElORVQKIHZvaWQgc2N0cF9pbnB1dF93aXRoX3Bv
cnQoc3RydWN0IG1idWYgKiwgaW50LCB1aW50MTZfdCk7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gMTEwMDAyMAorI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBpbnQgc2N0cF9pbnB1dChzdHJ1Y3QgbWJ1
ZiAqKiwgaW50ICosIGludCk7CiAjZWxzZQogdm9pZCBzY3RwX2lucHV0KHN0cnVjdCBtYnVmICos
IGludCk7CiAjZW5kaWYKICNlbmRpZgogdm9pZCBzY3RwX3BhdGhtdHVfYWRqdXN0bWVudChzdHJ1
Y3Qgc2N0cF90Y2IgKiwgdWludDE2X3QpOwotI2VuZGlmCiAjZWxzZQotI2lmIGRlZmluZWQoX19Q
YW5kYV9fKQotdm9pZCBzY3RwX2lucHV0KHBha2hhbmRsZV90eXBlIGlfcGFrKTsKLSNlbGlmIGRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiB2b2lkIHNj
dHBfcGF0aG10dV9hZGp1c3RtZW50KHN0cnVjdCBzY3RwX3RjYiAqLCB1aW50MTZfdCk7CiAjZWxz
ZQogdm9pZCBzY3RwX2lucHV0KHN0cnVjdCBtYnVmICosLi4uKTsKQEAgLTQ0NiwxNyArMzk5LDEx
IEBAIHZvaWQgc2N0cF9pbnB1dChzdHJ1Y3QgbWJ1ZiAqLC4uLik7CiB2b2lkICpzY3RwX2N0bGlu
cHV0KGludCwgc3RydWN0IHNvY2thZGRyICosIHZvaWQgKik7CiBpbnQgc2N0cF9jdGxvdXRwdXQo
aW50LCBzdHJ1Y3Qgc29ja2V0ICosIGludCwgaW50LCBzdHJ1Y3QgbWJ1ZiAqKik7CiAjZW5kaWYK
LSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA8IDkwMjAwMAot
dm9pZCBzY3RwX2RyYWluIF9fUCgodm9pZCkpOwotI2Vsc2UKIHZvaWQgc2N0cF9kcmFpbih2b2lk
KTsKLSNlbmRpZgogI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIHZvaWQgc2N0cF9pbml0KHVp
bnQxNl90LAogICAgICAgICAgICAgICAgaW50ICgqKSh2b2lkICphZGRyLCB2b2lkICpidWZmZXIs
IHNpemVfdCBsZW5ndGgsIHVpbnQ4X3QgdG9zLCB1aW50OF90IHNldF9kZiksCi0gICAgICAgICAg
ICAgICB2b2lkICgqKShjb25zdCBjaGFyICosIC4uLikpOwotI2VsaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPCA5MDIwMDAKLXZvaWQgc2N0cF9pbml0IF9fUCgo
dm9pZCkpOworICAgICAgICAgICAgICAgdm9pZCAoKikoY29uc3QgY2hhciAqLCAuLi4pLCBpbnQg
c3RhcnRfdGhyZWFkcyk7CiAjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgKCFkZWZpbmVkKEFQ
UExFX0xFT1BBUkQpICYmICFkZWZpbmVkKEFQUExFX1NOT1dMRU9QQVJEKSAmJiFkZWZpbmVkKEFQ
UExFX0xJT04pICYmICFkZWZpbmVkKEFQUExFX01PVU5UQUlOTElPTikpCiB2b2lkIHNjdHBfaW5p
dChzdHJ1Y3QgcHJvdG9zdyAqcHAsIHN0cnVjdCBkb21haW4gKmRwKTsKICNlbHNlCkBAIC00NjQs
NTUgKzQxMSwzNyBAQCB2b2lkIHNjdHBfaW5pdCh2b2lkKTsKIHZvaWQgc2N0cF9ub3RpZnkoc3Ry
dWN0IHNjdHBfaW5wY2IgKiwgc3RydWN0IHNjdHBfdGNiICosIHN0cnVjdCBzY3RwX25ldHMgKiwK
ICAgICB1aW50OF90LCB1aW50OF90LCB1aW50MTZfdCwgdWludDMyX3QpOwogI2VuZGlmCi0jaWYg
IWRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgIWRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiB2b2lkIHNjdHBfZmluaXNoKHZvaWQpOwogI2VuZGlmCi0jaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX1dJTjMy
KSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBpbnQgc2N0cF9mbHVzaChzdHJ1Y3Qgc29ja2V0
ICosIGludCk7CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0Rf
dmVyc2lvbiA8IDkwMjAwMAotaW50IHNjdHBfc2h1dGRvd24gX19QKChzdHJ1Y3Qgc29ja2V0ICop
KTsKLSNlbHNlCiBpbnQgc2N0cF9zaHV0ZG93bihzdHJ1Y3Qgc29ja2V0ICopOwotI2VuZGlmCiBp
bnQgc2N0cF9iaW5keChzdHJ1Y3Qgc29ja2V0ICosIGludCwgc3RydWN0IHNvY2thZGRyX3N0b3Jh
Z2UgKiwKIAlpbnQsIGludCwgc3RydWN0IHByb2MgKik7CiAvKiBjYW4ndCB1c2Ugc2N0cF9hc3Nv
Y190IGhlcmUgKi8KIGludCBzY3RwX3BlZWxvZmYoc3RydWN0IHNvY2tldCAqLCBzdHJ1Y3Qgc29j
a2V0ICosIGludCwgY2FkZHJfdCwgaW50ICopOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8
IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiBpbnQgc2N0cF9pbmdldGFkZHIoc3RydWN0IHNvY2tldCAqLCBzdHJ1
Y3Qgc29ja2FkZHIgKiopOwotI2VsaWYgZGVmaW5lZChfX1BhbmRhX18pCi1pbnQgc2N0cF9pbmdl
dGFkZHIoc3RydWN0IHNvY2tldCAqLCBzdHJ1Y3Qgc29ja2FkZHIgKik7CiAjZWxzZQogaW50IHNj
dHBfaW5nZXRhZGRyKHN0cnVjdCBzb2NrZXQgKiwgc3RydWN0IG1idWYgKik7CiAjZW5kaWYKLSNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChf
X1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogaW50IHNjdHBfcGVlcmFk
ZHIoc3RydWN0IHNvY2tldCAqLCBzdHJ1Y3Qgc29ja2FkZHIgKiopOwotI2VsaWYgZGVmaW5lZChf
X1BhbmRhX18pCi1pbnQgc2N0cF9wZWVyYWRkcihzdHJ1Y3Qgc29ja2V0ICosIHN0cnVjdCBzb2Nr
YWRkciAqKTsKICNlbHNlCiBpbnQgc2N0cF9wZWVyYWRkcihzdHJ1Y3Qgc29ja2V0ICosIHN0cnVj
dCBtYnVmICopOwogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNE
X3ZlcnNpb24gPj0gNTAwMDAwCi0jaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNzAwMDAwCisjaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIGludCBzY3Rw
X2xpc3RlbihzdHJ1Y3Qgc29ja2V0ICosIGludCwgc3RydWN0IHRocmVhZCAqKTsKLSNlbHNlCi1p
bnQgc2N0cF9saXN0ZW4oc3RydWN0IHNvY2tldCAqLCBzdHJ1Y3QgdGhyZWFkICopOwotI2VuZGlm
Ci0jZWxpZiBkZWZpbmVkKF9fV2luZG93c19fKQorI2VsaWYgZGVmaW5lZChfV0lOMzIpICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBpbnQgc2N0cF9saXN0ZW4oc3RydWN0IHNvY2tldCAqLCBp
bnQsIFBLVEhSRUFEKTsKICNlbGlmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIGludCBzY3RwX2xp
c3RlbihzdHJ1Y3Qgc29ja2V0ICosIGludCwgc3RydWN0IHByb2MgKik7CiAjZWxzZQogaW50IHNj
dHBfbGlzdGVuKHN0cnVjdCBzb2NrZXQgKiwgc3RydWN0IHByb2MgKik7CiAjZW5kaWYKLSNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dp
bmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogaW50IHNjdHBfYWNjZXB0KHN0cnVj
dCBzb2NrZXQgKiwgc3RydWN0IHNvY2thZGRyICoqKTsKLSNlbGlmIGRlZmluZWQoX19QYW5kYV9f
KQotaW50IHNjdHBfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKiwgc3RydWN0IHNvY2thZGRyICosIGlu
dCAqLCB2b2lkICosIGludCAqKTsKLSNlbHNlCi1pbnQgc2N0cF9hY2NlcHQoc3RydWN0IHNvY2tl
dCAqLCBzdHJ1Y3QgbWJ1ZiAqKTsKLSNlbmRpZgogCiAjZW5kaWYgLyogX0tFUk5FTCAqLwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cHV0aWwuYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3Rw
bGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwdXRpbC5jCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9k
ZSAxMDA3NTUKaW5kZXggMTEzNGI1MDY1NzhiLi5mMDUwNjEwYWI1ZDIKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIv
dXNyc2N0cGxpYi9uZXRpbmV0L3NjdHB1dGlsLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9u
ZXRpbmV0L3NjdHB1dGlsLmMKQEAgLTMyLDkgKzMyLDkgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZkZWYgX19GcmVlQlNEX18KKyNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPHN5cy9jZGVm
cy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHB1dGlsLmMgMzM0
Mjg2IDIwMTgtMDUtMjggMTM6MzE6NDdaIHR1ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6
IGhlYWQvc3lzL25ldGluZXQvc2N0cHV0aWwuYyAzNjQyNjggMjAyMC0wOC0xNiAxMTo1MDozN1og
dHVleGVuICQiKTsKICNlbmRpZgogCiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX29zLmg+CkBAIC01
OCw3ICs1OCw4IEBAIF9fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwdXRp
bC5jIDMzNDI4NiAyMDE4LTA1LTI4IDEzOjMxOjQ3WiB0dWV4CiAjaWYgZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9jb25zdGFudHMuaD4KICNlbmRpZgotI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKKyNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfa2R0cmFjZS5oPgogI2lm
IGRlZmluZWQoSU5FVDYpIHx8IGRlZmluZWQoSU5FVCkKICNpbmNsdWRlIDxuZXRpbmV0L3RjcF92
YXIuaD4KICNlbmRpZgpAQCAtNzAsMTEgKzcxLDcgQEAgX19GQlNESUQoIiRGcmVlQlNEOiBoZWFk
L3N5cy9uZXRpbmV0L3NjdHB1dGlsLmMgMzM0Mjg2IDIwMTgtMDUtMjggMTM6MzE6NDdaIHR1ZXgK
ICNlbmRpZgogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKLSNkZWZpbmUgQVBQTEVf
RklMRV9OTyA4Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgZGVmaW5l
ZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaWYgIWRlZmluZWQoU0NUUF9M
T0NBTF9UUkFDRV9CVUYpCiAjaW5jbHVkZSAiZXZlbnRyYWNlX25ldGluZXQuaCIKICNpbmNsdWRl
ICJzY3RwdXRpbC50bWgiIC8qIHRoaXMgaXMgdGhlIGZpbGUgdGhhdCB3aWxsIGJlIGF1dG8gZ2Vu
ZXJhdGVkICovCkBAIC0yNzMsNyArMjcwLDcgQEAgc2N0cF9sb2dfbWIoc3RydWN0IG1idWYgKm0s
IGludCBmcm9tKQogCXNjdHBfY2xvZy54Lm1iLmRhdGEgPSBTQ1RQX0JVRl9BVChtLCAwKTsKIAlp
ZiAoU0NUUF9CVUZfSVNfRVhURU5ERUQobSkpIHsKIAkJc2N0cF9jbG9nLngubWIuZXh0ID0gU0NU
UF9CVUZfRVhURU5EX0JBU0UobSk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5l
ZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCS8qIEFQUExFIGRvZXMg
bm90IHVzZSBhIHJlZl9jbnQsIGJ1dCBhIGZvcndhcmQvYmFja3dhcmQgcmVmIHF1ZXVlICovCiAj
ZWxzZQogCQlzY3RwX2Nsb2cueC5tYi5yZWZjbnQgPSAodWludDhfdCkoU0NUUF9CVUZfRVhURU5E
X1JFRkNOVChtKSk7CkBAIC0zNzEsNyArMzY4LDcgQEAgc2N0cF9sb2dfY3duZChzdHJ1Y3Qgc2N0
cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX25ldHMgKm5ldCwgaW50IGF1Z21lbnQsIHVpbnQ4X3QK
ICNlbmRpZgogfQogCi0jaWZuZGVmIF9fQVBQTEVfXworI2lmICFkZWZpbmVkKF9fQVBQTEVfXykg
JiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIHZvaWQKIHNjdHBfbG9nX2xvY2soc3RydWN0IHNj
dHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLCB1aW50OF90IGZyb20pCiB7CkBA
IC0zODYsNyArMzgzLDcgQEAgc2N0cF9sb2dfbG9jayhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBz
dHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQ4X3QgZnJvbSkKIAkJc2N0cF9jbG9nLngubG9jay5z
b2NrID0gKHZvaWQgKikgTlVMTDsKIAl9CiAJc2N0cF9jbG9nLngubG9jay5pbnAgPSAodm9pZCAq
KSBpbnA7Ci0jaWYgKGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49
IDUwMzAwMCkgfHwgKGRlZmluZWQoX19BUFBMRV9fKSkKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KQogCWlmIChzdGNiKSB7CiAJCXNjdHBfY2xvZy54LmxvY2sudGNiX2xvY2sgPSBtdHhfb3duZWQo
JnN0Y2ItPnRjYl9tdHgpOwogCX0gZWxzZSB7CkBAIC0zOTksMTEgKzM5Niw3IEBAIHNjdHBfbG9n
X2xvY2soc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLCB1aW50
OF90IGZyb20pCiAJCXNjdHBfY2xvZy54LmxvY2suaW5wX2xvY2sgPSBTQ1RQX0xPQ0tfVU5LTk9X
TjsKIAkJc2N0cF9jbG9nLngubG9jay5jcmVhdGVfbG9jayA9IFNDVFBfTE9DS19VTktOT1dOOwog
CX0KLSNpZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPD0gNjAy
MDAwKQotCXNjdHBfY2xvZy54LmxvY2suaW5mb19sb2NrID0gbXR4X293bmVkKCZTQ1RQX0JBU0Vf
SU5GTyhpcGlfZXBfbXR4KSk7Ci0jZWxzZQogCXNjdHBfY2xvZy54LmxvY2suaW5mb19sb2NrID0g
cndfd293bmVkKCZTQ1RQX0JBU0VfSU5GTyhpcGlfZXBfbXR4KSk7Ci0jZW5kaWYKIAlpZiAoaW5w
ICYmIChpbnAtPnNjdHBfc29ja2V0KSkgewogCQlzY3RwX2Nsb2cueC5sb2NrLnNvY2tfbG9jayA9
IG10eF9vd25lZCgmKGlucC0+c2N0cF9zb2NrZXQtPnNvX3Jjdi5zYl9tdHgpKTsKIAkJc2N0cF9j
bG9nLngubG9jay5zb2NrcmN2YnVmX2xvY2sgPSBtdHhfb3duZWQoJihpbnAtPnNjdHBfc29ja2V0
LT5zb19yY3Yuc2JfbXR4KSk7CkBAIC01NzYsNyArNTY5LDcgQEAgc2N0cF93YWtldXBfbG9nKHN0
cnVjdCBzY3RwX3RjYiAqc3RjYiwgdWludDMyX3Qgd2FrZV9jbnQsIGludCBmcm9tKQogfQogCiB2
b2lkCi1zY3RwX2xvZ19ibG9jayh1aW50OF90IGZyb20sIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9u
ICphc29jLCBzaXplX3Qgc2VuZGxlbikKK3NjdHBfbG9nX2Jsb2NrKHVpbnQ4X3QgZnJvbSwgc3Ry
dWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsIHNzaXplX3Qgc2VuZGxlbikKIHsKICNpZiBkZWZp
bmVkKFNDVFBfTE9DQUxfVFJBQ0VfQlVGKQogCXN0cnVjdCBzY3RwX2N3bmRfbG9nIHNjdHBfY2xv
ZzsKQEAgLTgwMiw2ICs3OTUsODAgQEAgc2N0cF9hdWRpdF9sb2codWludDhfdCBldiwgdWludDhf
dCBmZCkKIAogI2VuZGlmCiAKKy8qCisgKiBUaGUgY29udmVyc2lvbiBmcm9tIHRpbWUgdG8gdGlj
a3MgYW5kIHZpY2UgdmVyc2EgaXMgZG9uZSBieSByb3VuZGluZworICogdXB3YXJkcy4gVGhpcyB3
YXkgd2UgY2FuIHRlc3QgaW4gdGhlIGNvZGUgdGhlIHRpbWUgdG8gYmUgcG9zaXRpdmUgYW5kCisg
KiBrbm93IHRoYXQgdGhpcyBjb3JyZXNwb25kcyB0byBhIHBvc2l0aXZlIG51bWJlciBvZiB0aWNr
cy4KKyAqLworCit1aW50MzJfdAorc2N0cF9tc2Vjc190b190aWNrcyh1aW50MzJfdCBtc2VjcykK
K3sKKwl1aW50NjRfdCB0ZW1wOworCXVpbnQzMl90IHRpY2tzOworCisJaWYgKGh6ID09IDEwMDAp
IHsKKwkJdGlja3MgPSBtc2VjczsKKwl9IGVsc2UgeworCQl0ZW1wID0gKCgodWludDY0X3QpbXNl
Y3MgKiBoeikgKyA5OTkpIC8gMTAwMDsKKwkJaWYgKHRlbXAgPiBVSU5UMzJfTUFYKSB7CisJCQl0
aWNrcyA9IFVJTlQzMl9NQVg7CisJCX0gZWxzZSB7CisJCQl0aWNrcyA9ICh1aW50MzJfdCl0ZW1w
OworCQl9CisJfQorCXJldHVybiAodGlja3MpOworfQorCit1aW50MzJfdAorc2N0cF90aWNrc190
b19tc2Vjcyh1aW50MzJfdCB0aWNrcykKK3sKKwl1aW50NjRfdCB0ZW1wOworCXVpbnQzMl90IG1z
ZWNzOworCisJaWYgKGh6ID09IDEwMDApIHsKKwkJbXNlY3MgPSB0aWNrczsKKwl9IGVsc2Ugewor
CQl0ZW1wID0gKCgodWludDY0X3QpdGlja3MgKiAxMDAwKSArIChoeiAtIDEpKSAvIGh6OworCQlp
ZiAodGVtcCA+IFVJTlQzMl9NQVgpIHsKKwkJCW1zZWNzID0gVUlOVDMyX01BWDsKKwkJfSBlbHNl
IHsKKwkJCW1zZWNzID0gKHVpbnQzMl90KXRlbXA7CisJCX0KKwl9CisJcmV0dXJuIChtc2Vjcyk7
Cit9CisKK3VpbnQzMl90CitzY3RwX3NlY3NfdG9fdGlja3ModWludDMyX3Qgc2VjcykKK3sKKwl1
aW50NjRfdCB0ZW1wOworCXVpbnQzMl90IHRpY2tzOworCisJdGVtcCA9ICh1aW50NjRfdClzZWNz
ICogaHo7CisJaWYgKHRlbXAgPiBVSU5UMzJfTUFYKSB7CisJCXRpY2tzID0gVUlOVDMyX01BWDsK
Kwl9IGVsc2UgeworCQl0aWNrcyA9ICh1aW50MzJfdCl0ZW1wOworCX0KKwlyZXR1cm4gKHRpY2tz
KTsKK30KKwordWludDMyX3QKK3NjdHBfdGlja3NfdG9fc2Vjcyh1aW50MzJfdCB0aWNrcykKK3sK
Kwl1aW50NjRfdCB0ZW1wOworCXVpbnQzMl90IHNlY3M7CisKKwl0ZW1wID0gKCh1aW50NjRfdCl0
aWNrcyArIChoeiAtIDEpKSAvIGh6OworCWlmICh0ZW1wID4gVUlOVDMyX01BWCkgeworCQlzZWNz
ID0gVUlOVDMyX01BWDsKKwl9IGVsc2UgeworCQlzZWNzID0gKHVpbnQzMl90KXRlbXA7CisJfQor
CXJldHVybiAoc2Vjcyk7Cit9CisKIC8qCiAgKiBzY3RwX3N0b3BfdGltZXJzX2Zvcl9zaHV0ZG93
bigpIHNob3VsZCBiZSBjYWxsZWQKICAqIHdoZW4gZW50ZXJpbmcgdGhlIFNIVVRET1dOX1NFTlQg
b3IgU0hVVERPV05fQUNLX1NFTlQKQEAgLTgxMCwxOSArODc3LDY2IEBAIHNjdHBfYXVkaXRfbG9n
KHVpbnQ4X3QgZXYsIHVpbnQ4X3QgZmQpCiB2b2lkCiBzY3RwX3N0b3BfdGltZXJzX2Zvcl9zaHV0
ZG93bihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IpCiB7Ci0Jc3RydWN0IHNjdHBfYXNzb2NpYXRpb24g
KmFzb2M7CisJc3RydWN0IHNjdHBfaW5wY2IgKmlucDsKIAlzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQ7
CiAKLQlhc29jID0gJnN0Y2ItPmFzb2M7CisJaW5wID0gc3RjYi0+c2N0cF9lcDsKKworCXNjdHBf
dGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfUkVDViwgaW5wLCBzdGNiLCBOVUxMLAorCSAgICAg
ICAgICAgICAgICBTQ1RQX0ZST01fU0NUUFVUSUwgKyBTQ1RQX0xPQ18xMik7CisJc2N0cF90aW1l
cl9zdG9wKFNDVFBfVElNRVJfVFlQRV9TVFJSRVNFVCwgaW5wLCBzdGNiLCBOVUxMLAorCSAgICAg
ICAgICAgICAgICBTQ1RQX0ZST01fU0NUUFVUSUwgKyBTQ1RQX0xPQ18xMyk7CisJc2N0cF90aW1l
cl9zdG9wKFNDVFBfVElNRVJfVFlQRV9BU0NPTkYsIGlucCwgc3RjYiwgTlVMTCwKKwkgICAgICAg
ICAgICAgICAgU0NUUF9GUk9NX1NDVFBVVElMICsgU0NUUF9MT0NfMTQpOworCXNjdHBfdGltZXJf
c3RvcChTQ1RQX1RJTUVSX1RZUEVfQVVUT0NMT1NFLCBpbnAsIHN0Y2IsIE5VTEwsCisJICAgICAg
ICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQVVRJTCArIFNDVFBfTE9DXzE1KTsKKwlUQUlMUV9GT1JF
QUNIKG5ldCwgJnN0Y2ItPmFzb2MubmV0cywgc2N0cF9uZXh0KSB7CisJCXNjdHBfdGltZXJfc3Rv
cChTQ1RQX1RJTUVSX1RZUEVfUEFUSE1UVVJBSVNFLCBpbnAsIHN0Y2IsIG5ldCwKKwkJICAgICAg
ICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQVVRJTCArIFNDVFBfTE9DXzE2KTsKKwkJc2N0cF90aW1l
cl9zdG9wKFNDVFBfVElNRVJfVFlQRV9IRUFSVEJFQVQsIGlucCwgc3RjYiwgbmV0LAorCQkgICAg
ICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBVVElMICsgU0NUUF9MT0NfMTcpOworCX0KK30KIAot
CSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmYXNvYy0+ZGFja190aW1lci50aW1lcik7Ci0JKHZv
aWQpU0NUUF9PU19USU1FUl9TVE9QKCZhc29jLT5zdHJyZXNldF90aW1lci50aW1lcik7Ci0JKHZv
aWQpU0NUUF9PU19USU1FUl9TVE9QKCZhc29jLT5hc2NvbmZfdGltZXIudGltZXIpOwotCSh2b2lk
KVNDVFBfT1NfVElNRVJfU1RPUCgmYXNvYy0+YXV0b2Nsb3NlX3RpbWVyLnRpbWVyKTsKLQkodm9p
ZClTQ1RQX09TX1RJTUVSX1NUT1AoJmFzb2MtPmRlbGF5ZWRfZXZlbnRfdGltZXIudGltZXIpOwot
CVRBSUxRX0ZPUkVBQ0gobmV0LCAmYXNvYy0+bmV0cywgc2N0cF9uZXh0KSB7Ci0JCSh2b2lkKVND
VFBfT1NfVElNRVJfU1RPUCgmbmV0LT5wbXR1X3RpbWVyLnRpbWVyKTsKLQkJKHZvaWQpU0NUUF9P
U19USU1FUl9TVE9QKCZuZXQtPmhiX3RpbWVyLnRpbWVyKTsKK3ZvaWQKK3NjdHBfc3RvcF9hc3Nv
Y2lhdGlvbl90aW1lcnMoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBib29sIHN0b3BfYXNzb2Nfa2ls
bF90aW1lcikKK3sKKwlzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wOworCXN0cnVjdCBzY3RwX25ldHMg
Km5ldDsKKworCWlucCA9IHN0Y2ItPnNjdHBfZXA7CisJc2N0cF90aW1lcl9zdG9wKFNDVFBfVElN
RVJfVFlQRV9SRUNWLCBpbnAsIHN0Y2IsIE5VTEwsCisJICAgICAgICAgICAgICAgIFNDVFBfRlJP
TV9TQ1RQVVRJTCArIFNDVFBfTE9DXzE4KTsKKwlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9U
WVBFX1NUUlJFU0VULCBpbnAsIHN0Y2IsIE5VTEwsCisJICAgICAgICAgICAgICAgIFNDVFBfRlJP
TV9TQ1RQVVRJTCArIFNDVFBfTE9DXzE5KTsKKwlpZiAoc3RvcF9hc3NvY19raWxsX3RpbWVyKSB7
CisJCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfQVNPQ0tJTEwsIGlucCwgc3RjYiwg
TlVMTCwKKwkJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQVVRJTCArIFNDVFBfTE9DXzIw
KTsKKwl9CisJc2N0cF90aW1lcl9zdG9wKFNDVFBfVElNRVJfVFlQRV9BU0NPTkYsIGlucCwgc3Rj
YiwgTlVMTCwKKwkgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBVVElMICsgU0NUUF9MT0Nf
MjEpOworCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfQVVUT0NMT1NFLCBpbnAsIHN0
Y2IsIE5VTEwsCisJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQVVRJTCArIFNDVFBfTE9D
XzIyKTsKKwlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX1NIVVRET1dOR1VBUkQsIGlu
cCwgc3RjYiwgTlVMTCwKKwkgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBVVElMICsgU0NU
UF9MT0NfMjMpOworCS8qIE1vYmlsaXR5IGFkYXB0YXRpb24gKi8KKwlzY3RwX3RpbWVyX3N0b3Ao
U0NUUF9USU1FUl9UWVBFX1BSSU1fREVMRVRFRCwgaW5wLCBzdGNiLCBOVUxMLAorCSAgICAgICAg
ICAgICAgICBTQ1RQX0ZST01fU0NUUFVUSUwgKyBTQ1RQX0xPQ18yNCk7CisJVEFJTFFfRk9SRUFD
SChuZXQsICZzdGNiLT5hc29jLm5ldHMsIHNjdHBfbmV4dCkgeworCQlzY3RwX3RpbWVyX3N0b3Ao
U0NUUF9USU1FUl9UWVBFX1NFTkQsIGlucCwgc3RjYiwgbmV0LAorCQkgICAgICAgICAgICAgICAg
U0NUUF9GUk9NX1NDVFBVVElMICsgU0NUUF9MT0NfMjUpOworCQlzY3RwX3RpbWVyX3N0b3AoU0NU
UF9USU1FUl9UWVBFX0lOSVQsIGlucCwgc3RjYiwgbmV0LAorCQkgICAgICAgICAgICAgICAgU0NU
UF9GUk9NX1NDVFBVVElMICsgU0NUUF9MT0NfMjYpOworCQlzY3RwX3RpbWVyX3N0b3AoU0NUUF9U
SU1FUl9UWVBFX1NIVVRET1dOLCBpbnAsIHN0Y2IsIG5ldCwKKwkJICAgICAgICAgICAgICAgIFND
VFBfRlJPTV9TQ1RQVVRJTCArIFNDVFBfTE9DXzI3KTsKKwkJc2N0cF90aW1lcl9zdG9wKFNDVFBf
VElNRVJfVFlQRV9DT09LSUUsIGlucCwgc3RjYiwgbmV0LAorCQkgICAgICAgICAgICAgICAgU0NU
UF9GUk9NX1NDVFBVVElMICsgU0NUUF9MT0NfMjgpOworCQlzY3RwX3RpbWVyX3N0b3AoU0NUUF9U
SU1FUl9UWVBFX1NIVVRET1dOQUNLLCBpbnAsIHN0Y2IsIG5ldCwKKwkJICAgICAgICAgICAgICAg
IFNDVFBfRlJPTV9TQ1RQVVRJTCArIFNDVFBfTE9DXzI5KTsKKwkJc2N0cF90aW1lcl9zdG9wKFND
VFBfVElNRVJfVFlQRV9QQVRITVRVUkFJU0UsIGlucCwgc3RjYiwgbmV0LAorCQkgICAgICAgICAg
ICAgICAgU0NUUF9GUk9NX1NDVFBVVElMICsgU0NUUF9MT0NfMzApOworCQlzY3RwX3RpbWVyX3N0
b3AoU0NUUF9USU1FUl9UWVBFX0hFQVJUQkVBVCwgaW5wLCBzdGNiLCBuZXQsCisJCSAgICAgICAg
ICAgICAgICBTQ1RQX0ZST01fU0NUUFVUSUwgKyBTQ1RQX0xPQ18zMSk7CiAJfQogfQogCkBAIC04
NDUsNyArOTU5LDcgQEAgc3RhdGljIHVpbnQzMl90IHNjdHBfbXR1X3NpemVzW10gPSB7CiAJMjA0
OCwKIAk0MzUyLAogCTQ0NjQsCi0JODE2NiwKKwk4MTY4LAogCTE3OTEyLAogCTMyMDAwLAogCTY1
NTMyCkBAIC05MTIsOSArMTAyNiwxNSBAQCBzY3RwX2ZpbGxfcmFuZG9tX3N0b3JlKHN0cnVjdCBz
Y3RwX3BjYiAqbSkKIAkgKiBudW1iZXJzLCBidXQgdGhhdHMgb2sgdG9vIHNpbmNlIHRoYXQgaXMg
cmFuZG9tIGFzIHdlbGwgOi0+CiAJICovCiAJbS0+c3RvcmVfYXQgPSAwOworI2lmIGRlZmluZWQo
X19Vc2Vyc3BhY2VfXykgJiYgZGVmaW5lZChGVVpaSU5HX0JVSUxEX01PREVfVU5TQUZFX0ZPUl9Q
Uk9EVUNUSU9OKQorCWZvciAoaW50IGkgPSAwOyBpIDwgKGludCkgKHNpemVvZihtLT5yYW5kb21f
c3RvcmUpIC8gc2l6ZW9mKG0tPnJhbmRvbV9zdG9yZVswXSkpOyBpKyspIHsKKwkJbS0+cmFuZG9t
X3N0b3JlW2ldID0gKHVpbnQ4X3QpIHJhbmQoKTsKKwl9CisjZWxzZQogCSh2b2lkKXNjdHBfaG1h
YyhTQ1RQX0hNQUMsICh1aW50OF90ICopbS0+cmFuZG9tX251bWJlcnMsCiAJICAgIHNpemVvZiht
LT5yYW5kb21fbnVtYmVycyksICh1aW50OF90ICopJm0tPnJhbmRvbV9jb3VudGVyLAogCSAgICBz
aXplb2YobS0+cmFuZG9tX2NvdW50ZXIpLCAodWludDhfdCAqKW0tPnJhbmRvbV9zdG9yZSk7Cisj
ZW5kaWYKIAltLT5yYW5kb21fY291bnRlcisrOwogfQogCkBAIC0xMDQ0LDE1ICsxMTY0LDE0IEBA
IHNjdHBfaW5pdF9hc29jKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAq
c3RjYiwKIAogCWFzb2MgPSAmc3RjYi0+YXNvYzsKIAkvKiBpbml0IGFsbCB2YXJpYWJsZXMgdG8g
YSBrbm93biB2YWx1ZS4gKi8KLQlTQ1RQX1NFVF9TVEFURSgmc3RjYi0+YXNvYywgU0NUUF9TVEFU
RV9JTlVTRSk7CisJU0NUUF9TRVRfU1RBVEUoc3RjYiwgU0NUUF9TVEFURV9JTlVTRSk7CiAJYXNv
Yy0+bWF4X2J1cnN0ID0gaW5wLT5zY3RwX2VwLm1heF9idXJzdDsKIAlhc29jLT5mcl9tYXhfYnVy
c3QgPSBpbnAtPnNjdHBfZXAuZnJfbWF4X2J1cnN0OwotCWFzb2MtPmhlYXJ0X2JlYXRfZGVsYXkg
PSBUSUNLU19UT19NU0VDKGlucC0+c2N0cF9lcC5zY3RwX3RpbWVvdXR0aWNrc1tTQ1RQX1RJTUVS
X0hFQVJUQkVBVF0pOworCWFzb2MtPmhlYXJ0X2JlYXRfZGVsYXkgPSBzY3RwX3RpY2tzX3RvX21z
ZWNzKGlucC0+c2N0cF9lcC5zY3RwX3RpbWVvdXR0aWNrc1tTQ1RQX1RJTUVSX0hFQVJUQkVBVF0p
OwogCWFzb2MtPmNvb2tpZV9saWZlID0gaW5wLT5zY3RwX2VwLmRlZl9jb29raWVfbGlmZTsKIAlh
c29jLT5zY3RwX2NtdF9vbl9vZmYgPSBpbnAtPnNjdHBfY210X29uX29mZjsKIAlhc29jLT5lY25f
c3VwcG9ydGVkID0gaW5wLT5lY25fc3VwcG9ydGVkOwogCWFzb2MtPnByc2N0cF9zdXBwb3J0ZWQg
PSBpbnAtPnByc2N0cF9zdXBwb3J0ZWQ7Ci0JYXNvYy0+aWRhdGFfc3VwcG9ydGVkID0gaW5wLT5p
ZGF0YV9zdXBwb3J0ZWQ7CiAJYXNvYy0+YXV0aF9zdXBwb3J0ZWQgPSBpbnAtPmF1dGhfc3VwcG9y
dGVkOwogCWFzb2MtPmFzY29uZl9zdXBwb3J0ZWQgPSBpbnAtPmFzY29uZl9zdXBwb3J0ZWQ7CiAJ
YXNvYy0+cmVjb25maWdfc3VwcG9ydGVkID0gaW5wLT5yZWNvbmZpZ19zdXBwb3J0ZWQ7CkBAIC0x
MTMzLDcgKzEyNTIsNyBAQCBzY3RwX2luaXRfYXNvYyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBz
dHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJYXNvYy0+Y29udGV4dCA9IGlucC0+c2N0cF9jb250ZXh0
OwogCWFzb2MtPmxvY2FsX3N0cnJlc2V0X3N1cHBvcnQgPSBpbnAtPmxvY2FsX3N0cnJlc2V0X3N1
cHBvcnQ7CiAJYXNvYy0+ZGVmX3NlbmQgPSBpbnAtPmRlZl9zZW5kOwotCWFzb2MtPmRlbGF5ZWRf
YWNrID0gVElDS1NfVE9fTVNFQyhpbnAtPnNjdHBfZXAuc2N0cF90aW1lb3V0dGlja3NbU0NUUF9U
SU1FUl9SRUNWXSk7CisJYXNvYy0+ZGVsYXllZF9hY2sgPSBzY3RwX3RpY2tzX3RvX21zZWNzKGlu
cC0+c2N0cF9lcC5zY3RwX3RpbWVvdXR0aWNrc1tTQ1RQX1RJTUVSX1JFQ1ZdKTsKIAlhc29jLT5z
YWNrX2ZyZXEgPSBpbnAtPnNjdHBfZXAuc2N0cF9zYWNrX2ZyZXE7CiAJYXNvYy0+cHJfc2N0cF9j
bnQgPSAwOwogCWFzb2MtPnRvdGFsX291dHB1dF9xdWV1ZV9zaXplID0gMDsKQEAgLTEzNjUsMTEg
KzE0ODQsMTcgQEAgc2N0cF9leHBhbmRfbWFwcGluZ19hcnJheShzdHJ1Y3Qgc2N0cF9hc3NvY2lh
dGlvbiAqYXNvYywgdWludDMyX3QgbmVlZGVkKQogc3RhdGljIHZvaWQKIHNjdHBfaXRlcmF0b3Jf
d29yayhzdHJ1Y3Qgc2N0cF9pdGVyYXRvciAqaXQpCiB7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwlzdHJ1Y3QgZXBvY2hfdHJhY2tlciBldDsK
KyNlbmRpZgorCXN0cnVjdCBzY3RwX2lucGNiICp0aW5wOwogCWludCBpdGVyYXRpb25fY291bnQg
PSAwOwogCWludCBpbnBfc2tpcCA9IDA7CiAJaW50IGZpcnN0X2luID0gMTsKLQlzdHJ1Y3Qgc2N0
cF9pbnBjYiAqdGlucDsKIAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCisJTkVUX0VQT0NIX0VOVEVSKGV0KTsKKyNlbmRpZgogCVNDVFBfSU5QX0lO
Rk9fUkxPQ0soKTsKIAlTQ1RQX0lURVJBVE9SX0xPQ0soKTsKIAlzY3RwX2l0X2N0bC5jdXJfaXQg
PSBpdDsKQEAgLTEzODcsNiArMTUxMiw5IEBAIGRvbmVfd2l0aF9pdGVyYXRvcjoKIAkJCSgqaXQt
PmZ1bmN0aW9uX2F0ZW5kKSAoaXQtPnBvaW50ZXIsIGl0LT52YWwpOwogCQl9CiAJCVNDVFBfRlJF
RShpdCwgU0NUUF9NX0lURVIpOworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCisJCU5FVF9FUE9DSF9FWElUKGV0KTsKKyNlbmRpZgogCQlyZXR1cm47
CiAJfQogc2VsZWN0X2FfbmV3X2VwOgpAQCAtMTQwNiw2ICsxNTM0LDcgQEAgc2VsZWN0X2FfbmV3
X2VwOgogCQl9CiAJCXRpbnAgPSBpdC0+aW5wOwogCQlpdC0+aW5wID0gTElTVF9ORVhUKGl0LT5p
bnAsIHNjdHBfbGlzdCk7CisJCWl0LT5zdGNiID0gTlVMTDsKIAkJU0NUUF9JTlBfUlVOTE9DSyh0
aW5wKTsKIAkJaWYgKGl0LT5pbnAgPT0gTlVMTCkgewogCQkJZ290byBkb25lX3dpdGhfaXRlcmF0
b3I7CkBAIC0xNDU0LDcgKzE1ODMsNyBAQCBzZWxlY3RfYV9uZXdfZXA6CiAJCQkJLyogV2Ugd29u
J3QgYmUgc3RheWluZyBoZXJlICovCiAJCQkJU0NUUF9JTlBfREVDUl9SRUYoaXQtPmlucCk7CiAJ
CQkJYXRvbWljX2FkZF9pbnQoJml0LT5zdGNiLT5hc29jLnJlZmNudCwgLTEpOwotI2lmICFkZWZp
bmVkKF9fRnJlZUJTRF9fKQorI2lmICEoZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQo
X19Vc2Vyc3BhY2VfXykpCiAJCQkJaWYgKHNjdHBfaXRfY3RsLml0ZXJhdG9yX2ZsYWdzICYKIAkJ
CQkgICBTQ1RQX0lURVJBVE9SX01VU1RfRVhJVCkgewogCQkJCQlnb3RvIGRvbmVfd2l0aF9pdGVy
YXRvcjsKQEAgLTE0ODEsNiArMTYxMCw5IEBAIHNlbGVjdF9hX25ld19lcDoKIAkJCWF0b21pY19h
ZGRfaW50KCZpdC0+c3RjYi0+YXNvYy5yZWZjbnQsIC0xKTsKIAkJCWl0ZXJhdGlvbl9jb3VudCA9
IDA7CiAJCX0KKwkJS0FTU0VSVChpdC0+aW5wID09IGl0LT5zdGNiLT5zY3RwX2VwLAorCQkgICAg
ICAgICgiJXM6IHN0Y2IgJXAgZG9lcyBub3QgYmVsb25nIHRvIGlucCAlcCwgYnV0IGlucCAlcCIs
CisJCSAgICAgICAgIF9fZnVuY19fLCBpdC0+c3RjYiwgaXQtPmlucCwgaXQtPnN0Y2ItPnNjdHBf
ZXApKTsKIAogCQkvKiBydW4gZnVuY3Rpb24gb24gdGhpcyBvbmUgKi8KIAkJKCppdC0+ZnVuY3Rp
b25fYXNzb2MpKGl0LT5pbnAsIGl0LT5zdGNiLCBpdC0+cG9pbnRlciwgaXQtPnZhbCk7CkBAIC0x
NTEzLDYgKzE2NDUsNyBAQCBzZWxlY3RfYV9uZXdfZXA6CiAJfSBlbHNlIHsKIAkJaXQtPmlucCA9
IExJU1RfTkVYVChpdC0+aW5wLCBzY3RwX2xpc3QpOwogCX0KKwlpdC0+c3RjYiA9IE5VTEw7CiAJ
aWYgKGl0LT5pbnAgPT0gTlVMTCkgewogCQlnb3RvIGRvbmVfd2l0aF9pdGVyYXRvcjsKIAl9CkBA
IC0xNTIyLDI0ICsxNjU1LDIzIEBAIHNlbGVjdF9hX25ld19lcDoKIHZvaWQKIHNjdHBfaXRlcmF0
b3Jfd29ya2VyKHZvaWQpCiB7Ci0Jc3RydWN0IHNjdHBfaXRlcmF0b3IgKml0LCAqbml0OworCXN0
cnVjdCBzY3RwX2l0ZXJhdG9yICppdDsKIAogCS8qIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdp
dGggdGhlIFdRIGxvY2sgaW4gcGxhY2UgKi8KLQogCXNjdHBfaXRfY3RsLml0ZXJhdG9yX3J1bm5p
bmcgPSAxOwotCVRBSUxRX0ZPUkVBQ0hfU0FGRShpdCwgJnNjdHBfaXRfY3RsLml0ZXJhdG9yaGVh
ZCwgc2N0cF9ueHRfaXRyLCBuaXQpIHsKKwl3aGlsZSAoKGl0ID0gVEFJTFFfRklSU1QoJnNjdHBf
aXRfY3RsLml0ZXJhdG9yaGVhZCkpICE9IE5VTEwpIHsKIAkJLyogbm93IGxldHMgd29yayBvbiB0
aGlzIG9uZSAqLwogCQlUQUlMUV9SRU1PVkUoJnNjdHBfaXRfY3RsLml0ZXJhdG9yaGVhZCwgaXQs
IHNjdHBfbnh0X2l0cik7CiAJCVNDVFBfSVBJX0lURVJBVE9SX1dRX1VOTE9DSygpOwotI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMTAwMAorI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCUNVUlZORVRf
U0VUKGl0LT52bik7CiAjZW5kaWYKIAkJc2N0cF9pdGVyYXRvcl93b3JrKGl0KTsKLSNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDEwMDAKKyNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlDVVJWTkVUX1JF
U1RPUkUoKTsKICNlbmRpZgogCQlTQ1RQX0lQSV9JVEVSQVRPUl9XUV9MT0NLKCk7Ci0jaWYgIWRl
ZmluZWQoX19GcmVlQlNEX18pCisjaWYgIWRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiAJCWlmIChzY3RwX2l0X2N0bC5pdGVyYXRvcl9mbGFncyAmIFNDVFBf
SVRFUkFUT1JfTVVTVF9FWElUKSB7CiAJCQlicmVhazsKIAkJfQpAQCAtMTYwNSwyOCArMTczNyw2
OCBAQCBzY3RwX2hhbmRsZV9hZGRyX3dxKHZvaWQpCiAJfQogfQogCisvKi0KKyAqIFRoZSBmb2xs
b3dpbmcgdGFibGUgc2hvd3Mgd2hpY2ggcG9pbnRlcnMgZm9yIHRoZSBpbnAsIHN0Y2IsIG9yIG5l
dCBhcmUKKyAqIHN0b3JlZCBmb3IgZWFjaCB0aW1lciBhZnRlciBpdCB3YXMgc3RhcnRlZC4KKyAq
CisgKnxOYW1lICAgICAgICAgICAgICAgICAgICAgICAgIHxUaW1lciAgICAgICAgICAgICAgICAg
ICAgICAgIHxpbnAgfHN0Y2J8bmV0IHwKKyAqfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
fC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS18LS0tLXwtLS0tfAorICp8U0NUUF9U
SU1FUl9UWVBFX1NFTkQgICAgICAgICB8bmV0LT5yeHRfdGltZXIgICAgICAgICAgICAgICB8WWVz
IHxZZXMgfFllcyB8CisgKnxTQ1RQX1RJTUVSX1RZUEVfSU5JVCAgICAgICAgIHxuZXQtPnJ4dF90
aW1lciAgICAgICAgICAgICAgIHxZZXMgfFllcyB8WWVzIHwKKyAqfFNDVFBfVElNRVJfVFlQRV9S
RUNWICAgICAgICAgfHN0Y2ItPmFzb2MuZGFja190aW1lciAgICAgICAgfFllcyB8WWVzIHxObyAg
fAorICp8U0NUUF9USU1FUl9UWVBFX1NIVVRET1dOICAgICB8bmV0LT5yeHRfdGltZXIgICAgICAg
ICAgICAgICB8WWVzIHxZZXMgfFllcyB8CisgKnxTQ1RQX1RJTUVSX1RZUEVfSEVBUlRCRUFUICAg
IHxuZXQtPmhiX3RpbWVyICAgICAgICAgICAgICAgIHxZZXMgfFllcyB8WWVzIHwKKyAqfFNDVFBf
VElNRVJfVFlQRV9DT09LSUUgICAgICAgfG5ldC0+cnh0X3RpbWVyICAgICAgICAgICAgICAgfFll
cyB8WWVzIHxZZXMgfAorICp8U0NUUF9USU1FUl9UWVBFX05FV0NPT0tJRSAgICB8aW5wLT5zY3Rw
X2VwLnNpZ25hdHVyZV9jaGFuZ2V8WWVzIHxObyAgfE5vICB8CisgKnxTQ1RQX1RJTUVSX1RZUEVf
UEFUSE1UVVJBSVNFIHxuZXQtPnBtdHVfdGltZXIgICAgICAgICAgICAgIHxZZXMgfFllcyB8WWVz
IHwKKyAqfFNDVFBfVElNRVJfVFlQRV9TSFVURE9XTkFDSyAgfG5ldC0+cnh0X3RpbWVyICAgICAg
ICAgICAgICAgfFllcyB8WWVzIHxZZXMgfAorICp8U0NUUF9USU1FUl9UWVBFX0FTQ09ORiAgICAg
ICB8c3RjYi0+YXNvYy5hc2NvbmZfdGltZXIgICAgICB8WWVzIHxZZXMgfFllcyB8CisgKnxTQ1RQ
X1RJTUVSX1RZUEVfU0hVVERPV05HVUFSRHxzdGNiLT5hc29jLnNodXRfZ3VhcmRfdGltZXIgIHxZ
ZXMgfFllcyB8Tm8gIHwKKyAqfFNDVFBfVElNRVJfVFlQRV9BVVRPQ0xPU0UgICAgfHN0Y2ItPmFz
b2MuYXV0b2Nsb3NlX3RpbWVyICAgfFllcyB8WWVzIHxObyAgfAorICp8U0NUUF9USU1FUl9UWVBF
X1NUUlJFU0VUICAgICB8c3RjYi0+YXNvYy5zdHJyZXNldF90aW1lciAgICB8WWVzIHxZZXMgfE5v
ICB8CisgKnxTQ1RQX1RJTUVSX1RZUEVfSU5QS0lMTCAgICAgIHxpbnAtPnNjdHBfZXAuc2lnbmF0
dXJlX2NoYW5nZXxZZXMgfE5vICB8Tm8gIHwKKyAqfFNDVFBfVElNRVJfVFlQRV9BU09DS0lMTCAg
ICAgfHN0Y2ItPmFzb2Muc3RycmVzZXRfdGltZXIgICAgfFllcyB8WWVzIHxObyAgfAorICp8U0NU
UF9USU1FUl9UWVBFX0FERFJfV1EgICAgICB8U0NUUF9CQVNFX0lORk8oYWRkcl93cV90aW1lcil8
Tm8gIHxObyAgfE5vICB8CisgKnxTQ1RQX1RJTUVSX1RZUEVfUFJJTV9ERUxFVEVEIHxzdGNiLT5h
c29jLmRlbGV0ZV9wcmltX3RpbWVyIHxZZXMgfFllcyB8Tm8gIHwKKyAqLworCiB2b2lkCiBzY3Rw
X3RpbWVvdXRfaGFuZGxlcih2b2lkICp0KQogeworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJc3RydWN0IGVwb2NoX3RyYWNrZXIgZXQ7CisjZW5k
aWYKKwlzdHJ1Y3QgdGltZXZhbCB0djsKIAlzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wOwogCXN0cnVj
dCBzY3RwX3RjYiAqc3RjYjsKIAlzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQ7CiAJc3RydWN0IHNjdHBf
dGltZXIgKnRtcjsKIAlzdHJ1Y3QgbWJ1ZiAqb3BfZXJyOwotI2lmIGRlZmluZWQoX19BUFBMRV9f
KSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCXN0cnVjdCBzb2NrZXQgKnNvOwogI2VuZGlm
Ci0JaW50IGRpZF9vdXRwdXQ7CisjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCXN0cnVjdCBz
b2NrZXQgKnVwY2FsbF9zb2NrZXQgPSBOVUxMOworI2VuZGlmCiAJaW50IHR5cGU7CisJaW50IGks
IHNlY3JldDsKKwlib29sIGRpZF9vdXRwdXQsIHJlbGVhc2VkX2Fzb2NfcmVmZXJlbmNlOwogCisJ
LyoKKwkgKiBJZiBpbnAsIHN0Y2Igb3IgbmV0IGFyZSBub3QgTlVMTCwgdGhlbiByZWZlcmVuY2Vz
IHRvIHRoZXNlIHdlcmUKKwkgKiBhZGRlZCB3aGVuIHRoZSB0aW1lciB3YXMgc3RhcnRlZCwgYW5k
IG11c3QgYmUgcmVsZWFzZWQgYmVmb3JlIHRoaXMKKwkgKiBmdW5jdGlvbiByZXR1cm5zLgorCSAq
LwogCXRtciA9IChzdHJ1Y3Qgc2N0cF90aW1lciAqKXQ7CiAJaW5wID0gKHN0cnVjdCBzY3RwX2lu
cGNiICopdG1yLT5lcDsKIAlzdGNiID0gKHN0cnVjdCBzY3RwX3RjYiAqKXRtci0+dGNiOwogCW5l
dCA9IChzdHJ1Y3Qgc2N0cF9uZXRzICopdG1yLT5uZXQ7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAxMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlDVVJWTkVUX1NFVCgoc3RydWN0IHZuZXQg
Kil0bXItPnZuZXQpOworCU5FVF9FUE9DSF9FTlRFUihldCk7CiAjZW5kaWYKIAlkaWRfb3V0cHV0
ID0gMTsKKwlyZWxlYXNlZF9hc29jX3JlZmVyZW5jZSA9IGZhbHNlOwogCiAjaWZkZWYgU0NUUF9B
VURJVElOR19FTkFCTEVECiAJc2N0cF9hdWRpdF9sb2coMHhGMCwgKHVpbnQ4X3QpIHRtci0+dHlw
ZSk7CkBAIC0xNjM0LDEzNSArMTgwNiw4NyBAQCBzY3RwX3RpbWVvdXRfaGFuZGxlcih2b2lkICp0
KQogI2VuZGlmCiAKIAkvKiBzYW5pdHkgY2hlY2tzLi4uICovCi0JaWYgKHRtci0+c2VsZiAhPSAo
dm9pZCAqKXRtcikgewotCQkvKgotCQkgKiBTQ1RQX1BSSU5URigiU3RhbGUgU0NUUCB0aW1lciBm
aXJlZCAoJXApLCBpZ25vcmluZy4uLlxuIiwKLQkJICogICAgICAgICAgICAgKHZvaWQgKil0bXIp
OwotCQkgKi8KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+
PSA4MDEwMDAKLQkJQ1VSVk5FVF9SRVNUT1JFKCk7Ci0jZW5kaWYKLQkJcmV0dXJuOwotCX0KKwlL
QVNTRVJUKHRtci0+c2VsZiA9PSBOVUxMIHx8IHRtci0+c2VsZiA9PSB0bXIsCisJICAgICAgICAo
InNjdHBfdGltZW91dF9oYW5kbGVyOiB0bXItPnNlbGYgY29ycnVwdGVkIikpOworCUtBU1NFUlQo
U0NUUF9JU19USU1FUl9UWVBFX1ZBTElEKHRtci0+dHlwZSksCisJICAgICAgICAoInNjdHBfdGlt
ZW91dF9oYW5kbGVyOiBpbnZhbGlkIHRpbWVyIHR5cGUgJWQiLCB0bXItPnR5cGUpKTsKKwl0eXBl
ID0gdG1yLT50eXBlOworCUtBU1NFUlQoc3RjYiA9PSBOVUxMIHx8IHN0Y2ItPnNjdHBfZXAgPT0g
aW5wLAorCSAgICAgICAgKCJzY3RwX3RpbWVvdXRfaGFuZGxlciBvZiB0eXBlICVkOiBpbnAgPSAl
cCwgc3RjYi0+c2N0cF9lcCAlcCIsCisJICAgICAgICAgdHlwZSwgc3RjYiwgc3RjYi0+c2N0cF9l
cCkpOwogCXRtci0+c3RvcHBlZF9mcm9tID0gMHhhMDAxOwotCWlmICghU0NUUF9JU19USU1FUl9U
WVBFX1ZBTElEKHRtci0+dHlwZSkpIHsKLQkJLyoKLQkJICogU0NUUF9QUklOVEYoIlNDVFAgdGlt
ZXIgZmlyZWQgd2l0aCBpbnZhbGlkIHR5cGU6IDB4JXhcbiIsCi0JCSAqIHRtci0+dHlwZSk7Ci0J
CSAqLwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgw
MTAwMAotCQlDVVJWTkVUX1JFU1RPUkUoKTsKLSNlbmRpZgotCQlyZXR1cm47CisJaWYgKChzdGNi
ICE9IE5VTEwpICYmIChzdGNiLT5hc29jLnN0YXRlID09IFNDVFBfU1RBVEVfRU1QVFkpKSB7CisJ
CVNDVFBEQkcoU0NUUF9ERUJVR19USU1FUjIsCisJCSAgICAgICAgIlRpbWVyIHR5cGUgJWQgaGFu
ZGxlciBleGl0aW5nIGR1ZSB0byBDTE9TRUQgYXNzb2NpYXRpb24uXG4iLAorCQkgICAgICAgIHR5
cGUpOworCQlnb3RvIG91dF9kZWNyOwogCX0KIAl0bXItPnN0b3BwZWRfZnJvbSA9IDB4YTAwMjsK
LQlpZiAoKHRtci0+dHlwZSAhPSBTQ1RQX1RJTUVSX1RZUEVfQUREUl9XUSkgJiYgKGlucCA9PSBO
VUxMKSkgewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49
IDgwMTAwMAotCQlDVVJWTkVUX1JFU1RPUkUoKTsKLSNlbmRpZgotCQlyZXR1cm47Ci0JfQotCS8q
IGlmIHRoaXMgaXMgYW4gaXRlcmF0b3IgdGltZW91dCwgZ2V0IHRoZSBzdHJ1Y3QgYW5kIGNsZWFy
IGlucCAqLwotCXRtci0+c3RvcHBlZF9mcm9tID0gMHhhMDAzOwotCWlmIChpbnApIHsKLQkJU0NU
UF9JTlBfSU5DUl9SRUYoaW5wKTsKLQkJaWYgKChpbnAtPnNjdHBfc29ja2V0ID09IE5VTEwpICYm
Ci0JCSAgICAoKHRtci0+dHlwZSAhPSBTQ1RQX1RJTUVSX1RZUEVfSU5QS0lMTCkgJiYKLQkJICAg
ICAodG1yLT50eXBlICE9IFNDVFBfVElNRVJfVFlQRV9JTklUKSAmJgotCQkgICAgICh0bXItPnR5
cGUgIT0gU0NUUF9USU1FUl9UWVBFX1NFTkQpICYmCi0JCSAgICAgKHRtci0+dHlwZSAhPSBTQ1RQ
X1RJTUVSX1RZUEVfUkVDVikgJiYKLQkJICAgICAodG1yLT50eXBlICE9IFNDVFBfVElNRVJfVFlQ
RV9IRUFSVEJFQVQpICYmCi0JCSAgICAgKHRtci0+dHlwZSAhPSBTQ1RQX1RJTUVSX1RZUEVfU0hV
VERPV04pICYmCi0JCSAgICAgKHRtci0+dHlwZSAhPSBTQ1RQX1RJTUVSX1RZUEVfU0hVVERPV05B
Q0spICYmCi0JCSAgICAgKHRtci0+dHlwZSAhPSBTQ1RQX1RJTUVSX1RZUEVfU0hVVERPV05HVUFS
RCkgJiYKLQkJICAgICAodG1yLT50eXBlICE9IFNDVFBfVElNRVJfVFlQRV9BU09DS0lMTCkpKSB7
Ci0JCQlTQ1RQX0lOUF9ERUNSX1JFRihpbnApOwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYm
IF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMTAwMAotCQkJQ1VSVk5FVF9SRVNUT1JFKCk7Ci0jZW5k
aWYKLQkJCXJldHVybjsKLQkJfQotCX0KLQl0bXItPnN0b3BwZWRfZnJvbSA9IDB4YTAwNDsKLQlp
ZiAoc3RjYikgewotCQlhdG9taWNfYWRkX2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIDEpOwotCQlp
ZiAoc3RjYi0+YXNvYy5zdGF0ZSA9PSAwKSB7Ci0JCQlhdG9taWNfYWRkX2ludCgmc3RjYi0+YXNv
Yy5yZWZjbnQsIC0xKTsKLQkJCWlmIChpbnApIHsKLQkJCQlTQ1RQX0lOUF9ERUNSX1JFRihpbnAp
OwotCQkJfQotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49
IDgwMTAwMAotCQkJQ1VSVk5FVF9SRVNUT1JFKCk7Ci0jZW5kaWYKLQkJCXJldHVybjsKLQkJfQot
CX0KLQl0eXBlID0gdG1yLT50eXBlOwotCXRtci0+c3RvcHBlZF9mcm9tID0gMHhhMDA1OwotCVND
VFBEQkcoU0NUUF9ERUJVR19USU1FUjEsICJUaW1lciB0eXBlICVkIGdvZXMgb2ZmXG4iLCB0eXBl
KTsKKwlTQ1RQREJHKFNDVFBfREVCVUdfVElNRVIyLCAiVGltZXIgdHlwZSAlZCBnb2VzIG9mZi5c
biIsIHR5cGUpOwogCWlmICghU0NUUF9PU19USU1FUl9BQ1RJVkUoJnRtci0+dGltZXIpKSB7Ci0J
CWlmIChpbnApIHsKLQkJCVNDVFBfSU5QX0RFQ1JfUkVGKGlucCk7Ci0JCX0KLQkJaWYgKHN0Y2Ip
IHsKLQkJCWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29jLnJlZmNudCwgLTEpOwotCQl9Ci0jaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAxMDAwCi0JCUNV
UlZORVRfUkVTVE9SRSgpOwotI2VuZGlmCi0JCXJldHVybjsKKwkJU0NUUERCRyhTQ1RQX0RFQlVH
X1RJTUVSMiwKKwkJCSJUaW1lciB0eXBlICVkIGhhbmRsZXIgZXhpdGluZyBkdWUgdG8gbm90IGJl
aW5nIGFjdGl2ZS5cbiIsCisJCQl0eXBlKTsKKwkJZ290byBvdXRfZGVjcjsKIAl9Ci0JdG1yLT5z
dG9wcGVkX2Zyb20gPSAweGEwMDY7CiAKKwl0bXItPnN0b3BwZWRfZnJvbSA9IDB4YTAwMzsKIAlp
ZiAoc3RjYikgewogCQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOworCQkvKgorCQkgKiBSZWxlYXNlIHJl
ZmVyZW5jZSBzbyB0aGF0IGFzc29jaWF0aW9uIGNhbiBiZSBmcmVlZCBpZgorCQkgKiBuZWNlc3Nh
cnkgYmVsb3cuCisJCSAqIFRoaXMgaXMgc2FmZSBub3cgdGhhdCB3ZSBoYXZlIGFjcXVpcmVkIHRo
ZSBsb2NrLgorCQkgKi8KIAkJYXRvbWljX2FkZF9pbnQoJnN0Y2ItPmFzb2MucmVmY250LCAtMSk7
CisJCXJlbGVhc2VkX2Fzb2NfcmVmZXJlbmNlID0gdHJ1ZTsKIAkJaWYgKCh0eXBlICE9IFNDVFBf
VElNRVJfVFlQRV9BU09DS0lMTCkgJiYKLQkJICAgICgoc3RjYi0+YXNvYy5zdGF0ZSA9PSAwKSB8
fAorCQkgICAgKChzdGNiLT5hc29jLnN0YXRlID09IFNDVFBfU1RBVEVfRU1QVFkpIHx8CiAJCSAg
ICAgKHN0Y2ItPmFzb2Muc3RhdGUgJiBTQ1RQX1NUQVRFX0FCT1VUX1RPX0JFX0ZSRUVEKSkpIHsK
LQkJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKLQkJCWlmIChpbnApIHsKLQkJCQlTQ1RQX0lOUF9E
RUNSX1JFRihpbnApOwotCQkJfQotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJT
RF92ZXJzaW9uID49IDgwMTAwMAotCQkJQ1VSVk5FVF9SRVNUT1JFKCk7Ci0jZW5kaWYKLQkJCXJl
dHVybjsKKwkJCVNDVFBEQkcoU0NUUF9ERUJVR19USU1FUjIsCisJCQkgICAgICAgICJUaW1lciB0
eXBlICVkIGhhbmRsZXIgZXhpdGluZyBkdWUgdG8gQ0xPU0VEIGFzc29jaWF0aW9uLlxuIiwKKwkJ
CSAgICAgICAgdHlwZSk7CisJCQlnb3RvIG91dDsKIAkJfQogCX0gZWxzZSBpZiAoaW5wICE9IE5V
TEwpIHsKLQkJaWYgKHR5cGUgIT0gU0NUUF9USU1FUl9UWVBFX0lOUEtJTEwpIHsKLQkJCVNDVFBf
SU5QX1dMT0NLKGlucCk7Ci0JCX0KKwkJU0NUUF9JTlBfV0xPQ0soaW5wKTsKIAl9IGVsc2Ugewog
CQlTQ1RQX1dRX0FERFJfTE9DSygpOwogCX0KLQkvKiByZWNvcmQgaW4gc3RvcHBlZCB3aGF0IHQt
byBvY2N1cnJlZCAqLwotCXRtci0+c3RvcHBlZF9mcm9tID0gdHlwZTsKIAorCS8qIFJlY29yZCBp
biBzdG9wcGVkX2Zyb20gd2hpY2ggdGltZW91dCBvY2N1cnJlZC4gKi8KKwl0bXItPnN0b3BwZWRf
ZnJvbSA9IHR5cGU7CiAJLyogbWFyayBhcyBiZWluZyBzZXJ2aWNlZCBub3cgKi8KIAlpZiAoU0NU
UF9PU19USU1FUl9QRU5ESU5HKCZ0bXItPnRpbWVyKSkgewogCQkvKgogCQkgKiBDYWxsb3V0IGhh
cyBiZWVuIHJlc2NoZWR1bGVkLgogCQkgKi8KLQkJZ290byBnZXRfb3V0OworCQlnb3RvIG91dDsK
IAl9CiAJaWYgKCFTQ1RQX09TX1RJTUVSX0FDVElWRSgmdG1yLT50aW1lcikpIHsKIAkJLyoKIAkJ
ICogTm90IGFjdGl2ZSwgc28gbm8gYWN0aW9uLgogCQkgKi8KLQkJZ290byBnZXRfb3V0OworCQln
b3RvIG91dDsKIAl9CiAJU0NUUF9PU19USU1FUl9ERUFDVElWQVRFKCZ0bXItPnRpbWVyKTsKIAor
I2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwlpZiAoKHN0Y2IgIT0gTlVMTCkgJiYKKwkgICAg
IShzdGNiLT5zY3RwX2VwLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfU09DS0VUX0dPTkUp
ICYmCisJICAgIChzdGNiLT5zY3RwX3NvY2tldCAhPSBOVUxMKSkgeworCQl1cGNhbGxfc29ja2V0
ID0gc3RjYi0+c2N0cF9zb2NrZXQ7CisJCVNPQ0tfTE9DSyh1cGNhbGxfc29ja2V0KTsKKwkJc29y
ZWYodXBjYWxsX3NvY2tldCk7CisJCVNPQ0tfVU5MT0NLKHVwY2FsbF9zb2NrZXQpOworCX0KKyNl
bmRpZgogCS8qIGNhbGwgdGhlIGhhbmRsZXIgZm9yIHRoZSBhcHByb3ByaWF0ZSB0aW1lciB0eXBl
ICovCiAJc3dpdGNoICh0eXBlKSB7Ci0JY2FzZSBTQ1RQX1RJTUVSX1RZUEVfQUREUl9XUToKLQkJ
c2N0cF9oYW5kbGVfYWRkcl93cSgpOwotCQlicmVhazsKIAljYXNlIFNDVFBfVElNRVJfVFlQRV9T
RU5EOgotCQlpZiAoKHN0Y2IgPT0gTlVMTCkgfHwgKGlucCA9PSBOVUxMKSkgewotCQkJYnJlYWs7
Ci0JCX0KKwkJS0FTU0VSVChpbnAgIT0gTlVMTCAmJiBzdGNiICE9IE5VTEwgJiYgbmV0ICE9IE5V
TEwsCisJCSAgICAgICAgKCJ0aW1lb3V0IG9mIHR5cGUgJWQ6IGlucCA9ICVwLCBzdGNiID0gJXAs
IG5ldCA9ICVwIiwKKwkJICAgICAgICAgdHlwZSwgaW5wLCBzdGNiLCBuZXQpKTsKIAkJU0NUUF9T
VEFUX0lOQ1Ioc2N0cHNfdGltb2RhdGEpOwogCQlzdGNiLT5hc29jLnRpbW9kYXRhKys7CiAJCXN0
Y2ItPmFzb2MubnVtX3NlbmRfdGltZXJzX3VwLS07CkBAIC0xNzgwLDY1ICsxOTA0LDcyIEBAIHNj
dHBfdGltZW91dF9oYW5kbGVyKHZvaWQgKnQpCiAJCXNjdHBfYXVkaXRpbmcoNCwgaW5wLCBzdGNi
LCBuZXQpOwogI2VuZGlmCiAJCXNjdHBfY2h1bmtfb3V0cHV0KGlucCwgc3RjYiwgU0NUUF9PVVRQ
VVRfRlJPTV9UMywgU0NUUF9TT19OT1RfTE9DS0VEKTsKKwkJZGlkX291dHB1dCA9IHRydWU7CiAJ
CWlmICgoc3RjYi0+YXNvYy5udW1fc2VuZF90aW1lcnNfdXAgPT0gMCkgJiYKIAkJICAgIChzdGNi
LT5hc29jLnNlbnRfcXVldWVfY250ID4gMCkpIHsKIAkJCXN0cnVjdCBzY3RwX3RtaXRfY2h1bmsg
KmNoazsKIAogCQkJLyoKLQkJCSAqIHNhZmVndWFyZC4gSWYgdGhlcmUgb24gc29tZSBvbiB0aGUg
c2VudCBxdWV1ZQorCQkJICogU2FmZWd1YXJkLiBJZiB0aGVyZSBvbiBzb21lIG9uIHRoZSBzZW50
IHF1ZXVlCiAJCQkgKiBzb21ld2hlcmUgYnV0IG5vIHRpbWVycyBydW5uaW5nIHNvbWV0aGluZyBp
cwogCQkJICogd3JvbmcuLi4gc28gd2Ugc3RhcnQgYSB0aW1lciBvbiB0aGUgZmlyc3QgY2h1bmsK
IAkJCSAqIG9uIHRoZSBzZW5kIHF1ZXVlIG9uIHdoYXRldmVyIG5ldCBpdCBpcyBzZW50IHRvLgog
CQkJICovCi0JCQljaGsgPSBUQUlMUV9GSVJTVCgmc3RjYi0+YXNvYy5zZW50X3F1ZXVlKTsKLQkJ
CXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NFTkQsIGlucCwgc3RjYiwKLQkJCSAg
ICBjaGstPndob1RvKTsKKwkJCVRBSUxRX0ZPUkVBQ0goY2hrLCAmc3RjYi0+YXNvYy5zZW50X3F1
ZXVlLCBzY3RwX25leHQpIHsKKwkJCQlpZiAoY2hrLT53aG9UbyAhPSBOVUxMKSB7CisJCQkJCWJy
ZWFrOworCQkJCX0KKwkJCX0KKwkJCWlmIChjaGsgIT0gTlVMTCkgeworCQkJCXNjdHBfdGltZXJf
c3RhcnQoU0NUUF9USU1FUl9UWVBFX1NFTkQsIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIGNoay0+d2hv
VG8pOworCQkJfQogCQl9CiAJCWJyZWFrOwogCWNhc2UgU0NUUF9USU1FUl9UWVBFX0lOSVQ6Ci0J
CWlmICgoc3RjYiA9PSBOVUxMKSB8fCAoaW5wID09IE5VTEwpKSB7Ci0JCQlicmVhazsKLQkJfQor
CQlLQVNTRVJUKGlucCAhPSBOVUxMICYmIHN0Y2IgIT0gTlVMTCAmJiBuZXQgIT0gTlVMTCwKKwkJ
ICAgICAgICAoInRpbWVvdXQgb2YgdHlwZSAlZDogaW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0g
JXAiLAorCQkgICAgICAgICB0eXBlLCBpbnAsIHN0Y2IsIG5ldCkpOwogCQlTQ1RQX1NUQVRfSU5D
UihzY3Rwc190aW1vaW5pdCk7CiAJCXN0Y2ItPmFzb2MudGltb2luaXQrKzsKIAkJaWYgKHNjdHBf
dDFpbml0X3RpbWVyKGlucCwgc3RjYiwgbmV0KSkgewogCQkJLyogbm8gbmVlZCB0byB1bmxvY2sg
b24gdGNiIGl0cyBnb25lICovCiAJCQlnb3RvIG91dF9kZWNyOwogCQl9Ci0JCS8qIFdlIGRvIG91
dHB1dCBidXQgbm90IGhlcmUgKi8KLQkJZGlkX291dHB1dCA9IDA7CisJCWRpZF9vdXRwdXQgPSBm
YWxzZTsKIAkJYnJlYWs7CiAJY2FzZSBTQ1RQX1RJTUVSX1RZUEVfUkVDVjoKLQkJaWYgKChzdGNi
ID09IE5VTEwpIHx8IChpbnAgPT0gTlVMTCkpIHsKLQkJCWJyZWFrOwotCQl9CisJCUtBU1NFUlQo
aW5wICE9IE5VTEwgJiYgc3RjYiAhPSBOVUxMICYmIG5ldCA9PSBOVUxMLAorCQkgICAgICAgICgi
dGltZW91dCBvZiB0eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9ICVwLCBuZXQgPSAlcCIsCisJCSAg
ICAgICAgIHR5cGUsIGlucCwgc3RjYiwgbmV0KSk7CiAJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3Rp
bW9zYWNrKTsKIAkJc3RjYi0+YXNvYy50aW1vc2FjaysrOwogCQlzY3RwX3NlbmRfc2FjayhzdGNi
LCBTQ1RQX1NPX05PVF9MT0NLRUQpOwogI2lmZGVmIFNDVFBfQVVESVRJTkdfRU5BQkxFRAotCQlz
Y3RwX2F1ZGl0aW5nKDQsIGlucCwgc3RjYiwgbmV0KTsKKwkJc2N0cF9hdWRpdGluZyg0LCBpbnAs
IHN0Y2IsIE5VTEwpOwogI2VuZGlmCiAJCXNjdHBfY2h1bmtfb3V0cHV0KGlucCwgc3RjYiwgU0NU
UF9PVVRQVVRfRlJPTV9TQUNLX1RNUiwgU0NUUF9TT19OT1RfTE9DS0VEKTsKKwkJZGlkX291dHB1
dCA9IHRydWU7CiAJCWJyZWFrOwogCWNhc2UgU0NUUF9USU1FUl9UWVBFX1NIVVRET1dOOgotCQlp
ZiAoKHN0Y2IgPT0gTlVMTCkgfHwgKGlucCA9PSBOVUxMKSkgewotCQkJYnJlYWs7Ci0JCX0KKwkJ
S0FTU0VSVChpbnAgIT0gTlVMTCAmJiBzdGNiICE9IE5VTEwgJiYgbmV0ICE9IE5VTEwsCisJCSAg
ICAgICAgKCJ0aW1lb3V0IG9mIHR5cGUgJWQ6IGlucCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9ICVw
IiwKKwkJICAgICAgICAgdHlwZSwgaW5wLCBzdGNiLCBuZXQpKTsKKwkJU0NUUF9TVEFUX0lOQ1Io
c2N0cHNfdGltb3NodXRkb3duKTsKKwkJc3RjYi0+YXNvYy50aW1vc2h1dGRvd24rKzsKIAkJaWYg
KHNjdHBfc2h1dGRvd25fdGltZXIoaW5wLCBzdGNiLCBuZXQpKSB7CiAJCQkvKiBubyBuZWVkIHRv
IHVubG9jayBvbiB0Y2IgaXRzIGdvbmUgKi8KIAkJCWdvdG8gb3V0X2RlY3I7CiAJCX0KLQkJU0NU
UF9TVEFUX0lOQ1Ioc2N0cHNfdGltb3NodXRkb3duKTsKLQkJc3RjYi0+YXNvYy50aW1vc2h1dGRv
d24rKzsKICNpZmRlZiBTQ1RQX0FVRElUSU5HX0VOQUJMRUQKIAkJc2N0cF9hdWRpdGluZyg0LCBp
bnAsIHN0Y2IsIG5ldCk7CiAjZW5kaWYKIAkJc2N0cF9jaHVua19vdXRwdXQoaW5wLCBzdGNiLCBT
Q1RQX09VVFBVVF9GUk9NX1NIVVRfVE1SLCBTQ1RQX1NPX05PVF9MT0NLRUQpOworCQlkaWRfb3V0
cHV0ID0gdHJ1ZTsKIAkJYnJlYWs7CiAJY2FzZSBTQ1RQX1RJTUVSX1RZUEVfSEVBUlRCRUFUOgot
CQlpZiAoKHN0Y2IgPT0gTlVMTCkgfHwgKGlucCA9PSBOVUxMKSB8fCAobmV0ID09IE5VTEwpKSB7
Ci0JCQlicmVhazsKLQkJfQorCQlLQVNTRVJUKGlucCAhPSBOVUxMICYmIHN0Y2IgIT0gTlVMTCAm
JiBuZXQgIT0gTlVMTCwKKwkJICAgICAgICAoInRpbWVvdXQgb2YgdHlwZSAlZDogaW5wID0gJXAs
IHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkgICAgICAgICB0eXBlLCBpbnAsIHN0Y2IsIG5ldCkp
OwogCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc190aW1vaGVhcnRiZWF0KTsKIAkJc3RjYi0+YXNvYy50
aW1vaGVhcnRiZWF0Kys7CiAJCWlmIChzY3RwX2hlYXJ0YmVhdF90aW1lcihpbnAsIHN0Y2IsIG5l
dCkpIHsKQEAgLTE4NTEsMTkgKzE5ODIsMjEgQEAgc2N0cF90aW1lb3V0X2hhbmRsZXIodm9pZCAq
dCkKIAkJaWYgKCEobmV0LT5kZXN0X3N0YXRlICYgU0NUUF9BRERSX05PSEIpKSB7CiAJCQlzY3Rw
X3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9IRUFSVEJFQVQsIGlucCwgc3RjYiwgbmV0KTsK
IAkJCXNjdHBfY2h1bmtfb3V0cHV0KGlucCwgc3RjYiwgU0NUUF9PVVRQVVRfRlJPTV9IQl9UTVIs
IFNDVFBfU09fTk9UX0xPQ0tFRCk7CisJCQlkaWRfb3V0cHV0ID0gdHJ1ZTsKKwkJfSBlbHNlIHsK
KwkJCWRpZF9vdXRwdXQgPSBmYWxzZTsKIAkJfQogCQlicmVhazsKIAljYXNlIFNDVFBfVElNRVJf
VFlQRV9DT09LSUU6Ci0JCWlmICgoc3RjYiA9PSBOVUxMKSB8fCAoaW5wID09IE5VTEwpKSB7Ci0J
CQlicmVhazsKLQkJfQotCisJCUtBU1NFUlQoaW5wICE9IE5VTEwgJiYgc3RjYiAhPSBOVUxMICYm
IG5ldCAhPSBOVUxMLAorCQkgICAgICAgICgidGltZW91dCBvZiB0eXBlICVkOiBpbnAgPSAlcCwg
c3RjYiA9ICVwLCBuZXQgPSAlcCIsCisJCSAgICAgICAgIHR5cGUsIGlucCwgc3RjYiwgbmV0KSk7
CisJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3RpbW9jb29raWUpOworCQlzdGNiLT5hc29jLnRpbW9j
b29raWUrKzsKIAkJaWYgKHNjdHBfY29va2llX3RpbWVyKGlucCwgc3RjYiwgbmV0KSkgewogCQkJ
Lyogbm8gbmVlZCB0byB1bmxvY2sgb24gdGNiIGl0cyBnb25lICovCiAJCQlnb3RvIG91dF9kZWNy
OwogCQl9Ci0JCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3RpbW9jb29raWUpOwotCQlzdGNiLT5hc29j
LnRpbW9jb29raWUrKzsKICNpZmRlZiBTQ1RQX0FVRElUSU5HX0VOQUJMRUQKIAkJc2N0cF9hdWRp
dGluZyg0LCBpbnAsIHN0Y2IsIG5ldCk7CiAjZW5kaWYKQEAgLTE4NzIsNDUgKzIwMDUsNDIgQEAg
c2N0cF90aW1lb3V0X2hhbmRsZXIodm9pZCAqdCkKIAkJICogcmVzcGVjdCB0byB3aGVyZSBmcm9t
IGluIGNodW5rX291dHB1dC4KIAkJICovCiAJCXNjdHBfY2h1bmtfb3V0cHV0KGlucCwgc3RjYiwg
U0NUUF9PVVRQVVRfRlJPTV9UMywgU0NUUF9TT19OT1RfTE9DS0VEKTsKKwkJZGlkX291dHB1dCA9
IHRydWU7CiAJCWJyZWFrOwogCWNhc2UgU0NUUF9USU1FUl9UWVBFX05FV0NPT0tJRToKLQkJewot
CQkJc3RydWN0IHRpbWV2YWwgdHY7Ci0JCQlpbnQgaSwgc2VjcmV0OwotCQkJaWYgKGlucCA9PSBO
VUxMKSB7Ci0JCQkJYnJlYWs7Ci0JCQl9Ci0JCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc190aW1vc2Vj
cmV0KTsKLQkJCSh2b2lkKVNDVFBfR0VUVElNRV9USU1FVkFMKCZ0dik7Ci0JCQlpbnAtPnNjdHBf
ZXAudGltZV9vZl9zZWNyZXRfY2hhbmdlID0gdHYudHZfc2VjOwotCQkJaW5wLT5zY3RwX2VwLmxh
c3Rfc2VjcmV0X251bWJlciA9Ci0JCQkgICAgaW5wLT5zY3RwX2VwLmN1cnJlbnRfc2VjcmV0X251
bWJlcjsKLQkJCWlucC0+c2N0cF9lcC5jdXJyZW50X3NlY3JldF9udW1iZXIrKzsKLQkJCWlmIChp
bnAtPnNjdHBfZXAuY3VycmVudF9zZWNyZXRfbnVtYmVyID49Ci0JCQkgICAgU0NUUF9IT1dfTUFO
WV9TRUNSRVRTKSB7Ci0JCQkJaW5wLT5zY3RwX2VwLmN1cnJlbnRfc2VjcmV0X251bWJlciA9IDA7
Ci0JCQl9Ci0JCQlzZWNyZXQgPSAoaW50KWlucC0+c2N0cF9lcC5jdXJyZW50X3NlY3JldF9udW1i
ZXI7Ci0JCQlmb3IgKGkgPSAwOyBpIDwgU0NUUF9OVU1CRVJfT0ZfU0VDUkVUUzsgaSsrKSB7Ci0J
CQkJaW5wLT5zY3RwX2VwLnNlY3JldF9rZXlbc2VjcmV0XVtpXSA9Ci0JCQkJICAgIHNjdHBfc2Vs
ZWN0X2luaXRpYWxfVFNOKCZpbnAtPnNjdHBfZXApOwotCQkJfQotCQkJc2N0cF90aW1lcl9zdGFy
dChTQ1RQX1RJTUVSX1RZUEVfTkVXQ09PS0lFLCBpbnAsIHN0Y2IsIG5ldCk7Ci0JCX0KLQkJZGlk
X291dHB1dCA9IDA7CisJCUtBU1NFUlQoaW5wICE9IE5VTEwgJiYgc3RjYiA9PSBOVUxMICYmIG5l
dCA9PSBOVUxMLAorCQkJKCJ0aW1lb3V0IG9mIHR5cGUgJWQ6IGlucCA9ICVwLCBzdGNiID0gJXAs
IG5ldCA9ICVwIiwKKwkJCSB0eXBlLCBpbnAsIHN0Y2IsIG5ldCkpOworCQlTQ1RQX1NUQVRfSU5D
UihzY3Rwc190aW1vc2VjcmV0KTsKKwkJKHZvaWQpU0NUUF9HRVRUSU1FX1RJTUVWQUwoJnR2KTsK
KwkJaW5wLT5zY3RwX2VwLnRpbWVfb2Zfc2VjcmV0X2NoYW5nZSA9IHR2LnR2X3NlYzsKKwkJaW5w
LT5zY3RwX2VwLmxhc3Rfc2VjcmV0X251bWJlciA9CisJCSAgICBpbnAtPnNjdHBfZXAuY3VycmVu
dF9zZWNyZXRfbnVtYmVyOworCQlpbnAtPnNjdHBfZXAuY3VycmVudF9zZWNyZXRfbnVtYmVyKys7
CisJCWlmIChpbnAtPnNjdHBfZXAuY3VycmVudF9zZWNyZXRfbnVtYmVyID49CisJCSAgICBTQ1RQ
X0hPV19NQU5ZX1NFQ1JFVFMpIHsKKwkJCWlucC0+c2N0cF9lcC5jdXJyZW50X3NlY3JldF9udW1i
ZXIgPSAwOworCQl9CisJCXNlY3JldCA9IChpbnQpaW5wLT5zY3RwX2VwLmN1cnJlbnRfc2VjcmV0
X251bWJlcjsKKwkJZm9yIChpID0gMDsgaSA8IFNDVFBfTlVNQkVSX09GX1NFQ1JFVFM7IGkrKykg
eworCQkJaW5wLT5zY3RwX2VwLnNlY3JldF9rZXlbc2VjcmV0XVtpXSA9CisJCQkgICAgc2N0cF9z
ZWxlY3RfaW5pdGlhbF9UU04oJmlucC0+c2N0cF9lcCk7CisJCX0KKwkJc2N0cF90aW1lcl9zdGFy
dChTQ1RQX1RJTUVSX1RZUEVfTkVXQ09PS0lFLCBpbnAsIE5VTEwsIE5VTEwpOworCQlkaWRfb3V0
cHV0ID0gZmFsc2U7CiAJCWJyZWFrOwogCWNhc2UgU0NUUF9USU1FUl9UWVBFX1BBVEhNVFVSQUlT
RToKLQkJaWYgKChzdGNiID09IE5VTEwpIHx8IChpbnAgPT0gTlVMTCkpIHsKLQkJCWJyZWFrOwot
CQl9CisJCUtBU1NFUlQoaW5wICE9IE5VTEwgJiYgc3RjYiAhPSBOVUxMICYmIG5ldCAhPSBOVUxM
LAorCQkgICAgICAgICgidGltZW91dCBvZiB0eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9ICVwLCBu
ZXQgPSAlcCIsCisJCSAgICAgICAgIHR5cGUsIGlucCwgc3RjYiwgbmV0KSk7CiAJCVNDVFBfU1RB
VF9JTkNSKHNjdHBzX3RpbW9wYXRobXR1KTsKIAkJc2N0cF9wYXRobXR1X3RpbWVyKGlucCwgc3Rj
YiwgbmV0KTsKLQkJZGlkX291dHB1dCA9IDA7CisJCWRpZF9vdXRwdXQgPSBmYWxzZTsKIAkJYnJl
YWs7CiAJY2FzZSBTQ1RQX1RJTUVSX1RZUEVfU0hVVERPV05BQ0s6Ci0JCWlmICgoc3RjYiA9PSBO
VUxMKSB8fCAoaW5wID09IE5VTEwpKSB7Ci0JCQlicmVhazsKLQkJfQorCQlLQVNTRVJUKGlucCAh
PSBOVUxMICYmIHN0Y2IgIT0gTlVMTCAmJiBuZXQgIT0gTlVMTCwKKwkJICAgICAgICAoInRpbWVv
dXQgb2YgdHlwZSAlZDogaW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkgICAgICAg
ICB0eXBlLCBpbnAsIHN0Y2IsIG5ldCkpOwogCQlpZiAoc2N0cF9zaHV0ZG93bmFja190aW1lcihp
bnAsIHN0Y2IsIG5ldCkpIHsKIAkJCS8qIG5vIG5lZWQgdG8gdW5sb2NrIG9uIHRjYiBpdHMgZ29u
ZSAqLwogCQkJZ290byBvdXRfZGVjcjsKQEAgLTE5MjEsNzAgKzIwNTEsODggQEAgc2N0cF90aW1l
b3V0X2hhbmRsZXIodm9pZCAqdCkKIAkJc2N0cF9hdWRpdGluZyg0LCBpbnAsIHN0Y2IsIG5ldCk7
CiAjZW5kaWYKIAkJc2N0cF9jaHVua19vdXRwdXQoaW5wLCBzdGNiLCBTQ1RQX09VVFBVVF9GUk9N
X1NIVVRfQUNLX1RNUiwgU0NUUF9TT19OT1RfTE9DS0VEKTsKLQkJYnJlYWs7Ci0JY2FzZSBTQ1RQ
X1RJTUVSX1RZUEVfU0hVVERPV05HVUFSRDoKLQkJaWYgKChzdGNiID09IE5VTEwpIHx8IChpbnAg
PT0gTlVMTCkpIHsKLQkJCWJyZWFrOwotCQl9Ci0JCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3RpbW9z
aHV0ZG93bmd1YXJkKTsKLQkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQX0JBU0Vf
U1lTQ1RMKHNjdHBfZGlhZ19pbmZvX2NvZGUpLAotCQkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJTaHV0ZG93biBndWFyZCB0aW1lciBleHBpcmVkIik7Ci0JCXNjdHBfYWJvcnRfYW5fYXNz
b2NpYXRpb24oaW5wLCBzdGNiLCBvcF9lcnIsIFNDVFBfU09fTk9UX0xPQ0tFRCk7Ci0JCS8qIG5v
IG5lZWQgdG8gdW5sb2NrIG9uIHRjYiBpdHMgZ29uZSAqLwotCQlnb3RvIG91dF9kZWNyOwotCi0J
Y2FzZSBTQ1RQX1RJTUVSX1RZUEVfU1RSUkVTRVQ6Ci0JCWlmICgoc3RjYiA9PSBOVUxMKSB8fCAo
aW5wID09IE5VTEwpKSB7Ci0JCQlicmVhazsKLQkJfQotCQlpZiAoc2N0cF9zdHJyZXNldF90aW1l
cihpbnAsIHN0Y2IsIG5ldCkpIHsKLQkJCS8qIG5vIG5lZWQgdG8gdW5sb2NrIG9uIHRjYiBpdHMg
Z29uZSAqLwotCQkJZ290byBvdXRfZGVjcjsKLQkJfQotCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc190
aW1vc3RybXJzdCk7Ci0JCXNjdHBfY2h1bmtfb3V0cHV0KGlucCwgc3RjYiwgU0NUUF9PVVRQVVRf
RlJPTV9TVFJSU1RfVE1SLCBTQ1RQX1NPX05PVF9MT0NLRUQpOworCQlkaWRfb3V0cHV0ID0gdHJ1
ZTsKIAkJYnJlYWs7CiAJY2FzZSBTQ1RQX1RJTUVSX1RZUEVfQVNDT05GOgotCQlpZiAoKHN0Y2Ig
PT0gTlVMTCkgfHwgKGlucCA9PSBOVUxMKSkgewotCQkJYnJlYWs7Ci0JCX0KKwkJS0FTU0VSVChp
bnAgIT0gTlVMTCAmJiBzdGNiICE9IE5VTEwgJiYgbmV0ICE9IE5VTEwsCisJCSAgICAgICAgKCJ0
aW1lb3V0IG9mIHR5cGUgJWQ6IGlucCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9ICVwIiwKKwkJICAg
ICAgICAgdHlwZSwgaW5wLCBzdGNiLCBuZXQpKTsKKwkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfdGlt
b2FzY29uZik7CiAJCWlmIChzY3RwX2FzY29uZl90aW1lcihpbnAsIHN0Y2IsIG5ldCkpIHsKIAkJ
CS8qIG5vIG5lZWQgdG8gdW5sb2NrIG9uIHRjYiBpdHMgZ29uZSAqLwogCQkJZ290byBvdXRfZGVj
cjsKIAkJfQotCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc190aW1vYXNjb25mKTsKICNpZmRlZiBTQ1RQ
X0FVRElUSU5HX0VOQUJMRUQKIAkJc2N0cF9hdWRpdGluZyg0LCBpbnAsIHN0Y2IsIG5ldCk7CiAj
ZW5kaWYKIAkJc2N0cF9jaHVua19vdXRwdXQoaW5wLCBzdGNiLCBTQ1RQX09VVFBVVF9GUk9NX0FT
Q09ORl9UTVIsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CisJCWRpZF9vdXRwdXQgPSB0cnVlOwogCQli
cmVhazsKLQljYXNlIFNDVFBfVElNRVJfVFlQRV9QUklNX0RFTEVURUQ6Ci0JCWlmICgoc3RjYiA9
PSBOVUxMKSB8fCAoaW5wID09IE5VTEwpKSB7Ci0JCQlicmVhazsKLQkJfQotCQlzY3RwX2RlbGV0
ZV9wcmltX3RpbWVyKGlucCwgc3RjYiwgbmV0KTsKLQkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfdGlt
b2RlbHByaW0pOwotCQlicmVhazsKLQorCWNhc2UgU0NUUF9USU1FUl9UWVBFX1NIVVRET1dOR1VB
UkQ6CisJCUtBU1NFUlQoaW5wICE9IE5VTEwgJiYgc3RjYiAhPSBOVUxMICYmIG5ldCA9PSBOVUxM
LAorCQkgICAgICAgICgidGltZW91dCBvZiB0eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9ICVwLCBu
ZXQgPSAlcCIsCisJCSAgICAgICAgIHR5cGUsIGlucCwgc3RjYiwgbmV0KSk7CisJCVNDVFBfU1RB
VF9JTkNSKHNjdHBzX3RpbW9zaHV0ZG93bmd1YXJkKTsKKwkJb3BfZXJyID0gc2N0cF9nZW5lcmF0
ZV9jYXVzZShTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfZGlhZ19pbmZvX2NvZGUpLAorCQkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJTaHV0ZG93biBndWFyZCB0aW1lciBleHBpcmVkIik7CisJ
CXNjdHBfYWJvcnRfYW5fYXNzb2NpYXRpb24oaW5wLCBzdGNiLCBvcF9lcnIsIFNDVFBfU09fTk9U
X0xPQ0tFRCk7CisJCWRpZF9vdXRwdXQgPSB0cnVlOworCQkvKiBubyBuZWVkIHRvIHVubG9jayBv
biB0Y2IgaXRzIGdvbmUgKi8KKwkJZ290byBvdXRfZGVjcjsKIAljYXNlIFNDVFBfVElNRVJfVFlQ
RV9BVVRPQ0xPU0U6Ci0JCWlmICgoc3RjYiA9PSBOVUxMKSB8fCAoaW5wID09IE5VTEwpKSB7Ci0J
CQlicmVhazsKLQkJfQorCQlLQVNTRVJUKGlucCAhPSBOVUxMICYmIHN0Y2IgIT0gTlVMTCAmJiBu
ZXQgPT0gTlVMTCwKKwkJICAgICAgICAoInRpbWVvdXQgb2YgdHlwZSAlZDogaW5wID0gJXAsIHN0
Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkgICAgICAgICB0eXBlLCBpbnAsIHN0Y2IsIG5ldCkpOwog
CQlTQ1RQX1NUQVRfSU5DUihzY3Rwc190aW1vYXV0b2Nsb3NlKTsKLQkJc2N0cF9hdXRvY2xvc2Vf
dGltZXIoaW5wLCBzdGNiLCBuZXQpOworCQlzY3RwX2F1dG9jbG9zZV90aW1lcihpbnAsIHN0Y2Ip
OwogCQlzY3RwX2NodW5rX291dHB1dChpbnAsIHN0Y2IsIFNDVFBfT1VUUFVUX0ZST01fQVVUT0NM
T1NFX1RNUiwgU0NUUF9TT19OT1RfTE9DS0VEKTsKLQkJZGlkX291dHB1dCA9IDA7CisJCWRpZF9v
dXRwdXQgPSB0cnVlOwogCQlicmVhazsKLQljYXNlIFNDVFBfVElNRVJfVFlQRV9BU09DS0lMTDoK
LQkJaWYgKChzdGNiID09IE5VTEwpIHx8IChpbnAgPT0gTlVMTCkpIHsKLQkJCWJyZWFrOworCWNh
c2UgU0NUUF9USU1FUl9UWVBFX1NUUlJFU0VUOgorCQlLQVNTRVJUKGlucCAhPSBOVUxMICYmIHN0
Y2IgIT0gTlVMTCAmJiBuZXQgPT0gTlVMTCwKKwkJICAgICAgICAoInRpbWVvdXQgb2YgdHlwZSAl
ZDogaW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkgICAgICAgICB0eXBlLCBpbnAs
IHN0Y2IsIG5ldCkpOworCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc190aW1vc3RybXJzdCk7CisJCWlm
IChzY3RwX3N0cnJlc2V0X3RpbWVyKGlucCwgc3RjYikpIHsKKwkJCS8qIG5vIG5lZWQgdG8gdW5s
b2NrIG9uIHRjYiBpdHMgZ29uZSAqLworCQkJZ290byBvdXRfZGVjcjsKIAkJfQorCQlzY3RwX2No
dW5rX291dHB1dChpbnAsIHN0Y2IsIFNDVFBfT1VUUFVUX0ZST01fU1RSUlNUX1RNUiwgU0NUUF9T
T19OT1RfTE9DS0VEKTsKKwkJZGlkX291dHB1dCA9IHRydWU7CisJCWJyZWFrOworCWNhc2UgU0NU
UF9USU1FUl9UWVBFX0lOUEtJTEw6CisJCUtBU1NFUlQoaW5wICE9IE5VTEwgJiYgc3RjYiA9PSBO
VUxMICYmIG5ldCA9PSBOVUxMLAorCQkgICAgICAgICgidGltZW91dCBvZiB0eXBlICVkOiBpbnAg
PSAlcCwgc3RjYiA9ICVwLCBuZXQgPSAlcCIsCisJCSAgICAgICAgIHR5cGUsIGlucCwgc3RjYiwg
bmV0KSk7CisJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3RpbW9pbnBraWxsKTsKKwkJLyoKKwkJICog
c3BlY2lhbCBjYXNlLCB0YWtlIGF3YXkgb3VyIGluY3JlbWVudCBzaW5jZSBXRSBhcmUgdGhlCisJ
CSAqIGtpbGxlcgorCQkgKi8KKwkJc2N0cF90aW1lcl9zdG9wKFNDVFBfVElNRVJfVFlQRV9JTlBL
SUxMLCBpbnAsIE5VTEwsIE5VTEwsCisJCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUFVU
SUwgKyBTQ1RQX0xPQ18zKTsKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKKwkJU0NUUF9TT0NLRVRfTE9DSyhTQ1RQX0lOUF9TTyhpbnApLCAxKTsKKyNl
bmRpZgorCQlTQ1RQX0lOUF9ERUNSX1JFRihpbnApOworCQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7
CisJCXNjdHBfaW5wY2JfZnJlZShpbnAsIFNDVFBfRlJFRV9TSE9VTERfVVNFX0FCT1JULAorCQkg
ICAgICAgICAgICAgICAgU0NUUF9DQUxMRURfRlJPTV9JTlBLSUxMX1RJTUVSKTsKKyNpZiBkZWZp
bmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwkJU0NUUF9TT0NLRVRf
VU5MT0NLKFNDVFBfSU5QX1NPKGlucCksIDEpOworI2VuZGlmCisJCWlucCA9IE5VTEw7CisJCWdv
dG8gb3V0X25vX2RlY3I7CisJY2FzZSBTQ1RQX1RJTUVSX1RZUEVfQVNPQ0tJTEw6CisJCUtBU1NF
UlQoaW5wICE9IE5VTEwgJiYgc3RjYiAhPSBOVUxMICYmIG5ldCA9PSBOVUxMLAorCQkgICAgICAg
ICgidGltZW91dCBvZiB0eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9ICVwLCBuZXQgPSAlcCIsCisJ
CSAgICAgICAgIHR5cGUsIGlucCwgc3RjYiwgbmV0KSk7CiAJCVNDVFBfU1RBVF9JTkNSKHNjdHBz
X3RpbW9hc3NvY2tpbGwpOwogCQkvKiBDYW4gd2UgZnJlZSBpdCB5ZXQ/ICovCiAJCVNDVFBfSU5Q
X0RFQ1JfUkVGKGlucCk7CiAJCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfQVNPQ0tJ
TEwsIGlucCwgc3RjYiwgTlVMTCwKIAkJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQVVRJ
TCArIFNDVFBfTE9DXzEpOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBf
U09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogCQlzbyA9IFNDVFBfSU5QX1NPKGlucCk7CiAJCWF0b21pY19hZGRfaW50KCZz
dGNiLT5hc29jLnJlZmNudCwgMSk7CiAJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKQEAgLTE5OTQs
NyArMjE0Miw3IEBAIHNjdHBfdGltZW91dF9oYW5kbGVyKHZvaWQgKnQpCiAjZW5kaWYKIAkJKHZv
aWQpc2N0cF9mcmVlX2Fzc29jKGlucCwgc3RjYiwgU0NUUF9OT1JNQUxfUFJPQywKIAkJICAgICAg
ICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQVVRJTCArIFNDVFBfTE9DXzIpOwotI2lmIGRl
ZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRl
ZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlTQ1RQX1NPQ0tF
VF9VTkxPQ0soc28sIDEpOwogI2VuZGlmCiAJCS8qCkBAIC0yMDAzLDM5ICsyMTUxLDM1IEBAIHNj
dHBfdGltZW91dF9oYW5kbGVyKHZvaWQgKnQpCiAJCSAqLwogCQlzdGNiID0gTlVMTDsKIAkJZ290
byBvdXRfbm9fZGVjcjsKLQljYXNlIFNDVFBfVElNRVJfVFlQRV9JTlBLSUxMOgotCQlTQ1RQX1NU
QVRfSU5DUihzY3Rwc190aW1vaW5wa2lsbCk7Ci0JCWlmIChpbnAgPT0gTlVMTCkgewotCQkJYnJl
YWs7Ci0JCX0KLQkJLyoKLQkJICogc3BlY2lhbCBjYXNlLCB0YWtlIGF3YXkgb3VyIGluY3JlbWVu
dCBzaW5jZSBXRSBhcmUgdGhlCi0JCSAqIGtpbGxlcgotCQkgKi8KLQkJU0NUUF9JTlBfREVDUl9S
RUYoaW5wKTsKLQkJc2N0cF90aW1lcl9zdG9wKFNDVFBfVElNRVJfVFlQRV9JTlBLSUxMLCBpbnAs
IE5VTEwsIE5VTEwsCi0JCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUFVUSUwgKyBTQ1RQ
X0xPQ18zKTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKLQkJU0NUUF9TT0NLRVRfTE9DSyhTQ1RQ
X0lOUF9TTyhpbnApLCAxKTsKLSNlbmRpZgotCQlzY3RwX2lucGNiX2ZyZWUoaW5wLCBTQ1RQX0ZS
RUVfU0hPVUxEX1VTRV9BQk9SVCwKLQkJCQlTQ1RQX0NBTExFRF9GUk9NX0lOUEtJTExfVElNRVIp
OwotI2lmIGRlZmluZWQoX19BUFBMRV9fKQotCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soU0NUUF9JTlBf
U08oaW5wKSwgMSk7Ci0jZW5kaWYKLQkJaW5wID0gTlVMTDsKLQkJZ290byBvdXRfbm9fZGVjcjsK
LQlkZWZhdWx0OgotCQlTQ1RQREJHKFNDVFBfREVCVUdfVElNRVIxLCAic2N0cF90aW1lb3V0X2hh
bmRsZXI6dW5rbm93biB0aW1lciAlZFxuIiwKLQkJCXR5cGUpOworCWNhc2UgU0NUUF9USU1FUl9U
WVBFX0FERFJfV1E6CisJCUtBU1NFUlQoaW5wID09IE5VTEwgJiYgc3RjYiA9PSBOVUxMICYmIG5l
dCA9PSBOVUxMLAorCQkgICAgICAgICgidGltZW91dCBvZiB0eXBlICVkOiBpbnAgPSAlcCwgc3Rj
YiA9ICVwLCBuZXQgPSAlcCIsCisJCSAgICAgICAgIHR5cGUsIGlucCwgc3RjYiwgbmV0KSk7CisJ
CXNjdHBfaGFuZGxlX2FkZHJfd3EoKTsKKwkJZGlkX291dHB1dCA9IHRydWU7CiAJCWJyZWFrOwor
CWNhc2UgU0NUUF9USU1FUl9UWVBFX1BSSU1fREVMRVRFRDoKKwkJS0FTU0VSVChpbnAgIT0gTlVM
TCAmJiBzdGNiICE9IE5VTEwgJiYgbmV0ID09IE5VTEwsCisJCSAgICAgICAgKCJ0aW1lb3V0IG9m
IHR5cGUgJWQ6IGlucCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9ICVwIiwKKwkJICAgICAgICAgdHlw
ZSwgaW5wLCBzdGNiLCBuZXQpKTsKKwkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfdGltb2RlbHByaW0p
OworCQlzY3RwX2RlbGV0ZV9wcmltX3RpbWVyKGlucCwgc3RjYik7CisJCWRpZF9vdXRwdXQgPSBm
YWxzZTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKyNpZmRlZiBJTlZBUklBTlRTCisJCXBhbmljKCJV
bmtub3duIHRpbWVyIHR5cGUgJWQiLCB0eXBlKTsKKyNlbHNlCisJCWRpZF9vdXRwdXQgPSBmYWxz
ZTsKKwkJZ290byBvdXQ7CisjZW5kaWYKIAl9CiAjaWZkZWYgU0NUUF9BVURJVElOR19FTkFCTEVE
CiAJc2N0cF9hdWRpdF9sb2coMHhGMSwgKHVpbnQ4X3QpIHR5cGUpOwotCWlmIChpbnApCisJaWYg
KGlucCAhPSBOVUxMKQogCQlzY3RwX2F1ZGl0aW5nKDUsIGlucCwgc3RjYiwgbmV0KTsKICNlbmRp
ZgotCWlmICgoZGlkX291dHB1dCkgJiYgc3RjYikgeworCWlmIChkaWRfb3V0cHV0ICYmIChzdGNi
ICE9IE5VTEwpICkgewogCQkvKgogCQkgKiBOb3cgd2UgbmVlZCB0byBjbGVhbiB1cCB0aGUgY29u
dHJvbCBjaHVuayBjaGFpbiBpZiBhbgogCQkgKiBFQ05FIGlzIG9uIGl0LiBJdCBtdXN0IGJlIG1h
cmtlZCBhcyBVTlNFTlQgYWdhaW4gc28gbmV4dApAQCAtMjA0NSw4ICsyMTg5LDggQEAgc2N0cF90
aW1lb3V0X2hhbmRsZXIodm9pZCAqdCkKIAkJICovCiAJCXNjdHBfZml4X2Vjbl9lY2hvKCZzdGNi
LT5hc29jKTsKIAl9Ci1nZXRfb3V0OgotCWlmIChzdGNiKSB7CitvdXQ6CisJaWYgKHN0Y2IgIT0g
TlVMTCkgewogCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CiAJfSBlbHNlIGlmIChpbnAgIT0gTlVM
TCkgewogCQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7CkBAIC0yMDU1LDI4MyArMjE5OSw0NDAgQEAg
Z2V0X291dDoKIAl9CiAKIG91dF9kZWNyOgotCWlmIChpbnApIHsKKyNpZiBkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCisJaWYgKHVwY2FsbF9zb2NrZXQgIT0gTlVMTCkgeworCQlpZiAoKHVwY2FsbF9z
b2NrZXQtPnNvX3VwY2FsbCAhPSBOVUxMKSAmJgorCQkgICAgKHVwY2FsbF9zb2NrZXQtPnNvX2Vy
cm9yICE9IDApKSB7CisJCQkoKnVwY2FsbF9zb2NrZXQtPnNvX3VwY2FsbCkodXBjYWxsX3NvY2tl
dCwgdXBjYWxsX3NvY2tldC0+c29fdXBjYWxsYXJnLCBNX05PV0FJVCk7CisJCX0KKwkJQUNDRVBU
X0xPQ0soKTsKKwkJU09DS19MT0NLKHVwY2FsbF9zb2NrZXQpOworCQlzb3JlbGUodXBjYWxsX3Nv
Y2tldCk7CisJfQorI2VuZGlmCisJLyogVGhlc2UgcmVmZXJlbmNlIGNvdW50cyB3ZXJlIGluY3Jl
bWVudGVkIGluIHNjdHBfdGltZXJfc3RhcnQoKS4gKi8KKwlpZiAoaW5wICE9IE5VTEwpIHsKIAkJ
U0NUUF9JTlBfREVDUl9SRUYoaW5wKTsKIAl9Ci0KKwlpZiAoKHN0Y2IgIT0gTlVMTCkgJiYgIXJl
bGVhc2VkX2Fzb2NfcmVmZXJlbmNlKSB7CisJCWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29jLnJl
ZmNudCwgLTEpOworCX0KKwlpZiAobmV0ICE9IE5VTEwpIHsKKwkJc2N0cF9mcmVlX3JlbW90ZV9h
ZGRyKG5ldCk7CisJfQogb3V0X25vX2RlY3I6Ci0JU0NUUERCRyhTQ1RQX0RFQlVHX1RJTUVSMSwg
IlRpbWVyIG5vdyBjb21wbGV0ZSAodHlwZSA9ICVkKVxuIiwgdHlwZSk7Ci0jaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAxMDAwCisJU0NUUERCRyhTQ1RQ
X0RFQlVHX1RJTUVSMiwgIlRpbWVyIHR5cGUgJWQgaGFuZGxlciBmaW5pc2hlZC5cbiIsIHR5cGUp
OworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJ
Q1VSVk5FVF9SRVNUT1JFKCk7CisJTkVUX0VQT0NIX0VYSVQoZXQpOwogI2VuZGlmCiB9CiAKKy8q
LQorICogVGhlIGZvbGxvd2luZyB0YWJsZSBzaG93cyB3aGljaCBwYXJhbWV0ZXJzIG11c3QgYmUg
cHJvdmlkZWQKKyAqIHdoZW4gY2FsbGluZyBzY3RwX3RpbWVyX3N0YXJ0KCkuIEZvciBwYXJhbWV0
ZXJzIG5vdCBiZWluZworICogcHJvdmlkZWQsIE5VTEwgbXVzdCBiZSB1c2VkLgorICoKKyAqIHxO
YW1lICAgICAgICAgICAgICAgICAgICAgICAgIHxpbnAgfHN0Y2J8bmV0IHwKKyAqIHwtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tfC0tLS18LS0tLXwKKyAqIHxTQ1RQX1RJTUVSX1RZ
UEVfU0VORCAgICAgICAgIHxZZXMgfFllcyB8WWVzIHwKKyAqIHxTQ1RQX1RJTUVSX1RZUEVfSU5J
VCAgICAgICAgIHxZZXMgfFllcyB8WWVzIHwKKyAqIHxTQ1RQX1RJTUVSX1RZUEVfUkVDViAgICAg
ICAgIHxZZXMgfFllcyB8Tm8gIHwKKyAqIHxTQ1RQX1RJTUVSX1RZUEVfU0hVVERPV04gICAgIHxZ
ZXMgfFllcyB8WWVzIHwKKyAqIHxTQ1RQX1RJTUVSX1RZUEVfSEVBUlRCRUFUICAgIHxZZXMgfFll
cyB8WWVzIHwKKyAqIHxTQ1RQX1RJTUVSX1RZUEVfQ09PS0lFICAgICAgIHxZZXMgfFllcyB8WWVz
IHwKKyAqIHxTQ1RQX1RJTUVSX1RZUEVfTkVXQ09PS0lFICAgIHxZZXMgfE5vICB8Tm8gIHwKKyAq
IHxTQ1RQX1RJTUVSX1RZUEVfUEFUSE1UVVJBSVNFIHxZZXMgfFllcyB8WWVzIHwKKyAqIHxTQ1RQ
X1RJTUVSX1RZUEVfU0hVVERPV05BQ0sgIHxZZXMgfFllcyB8WWVzIHwKKyAqIHxTQ1RQX1RJTUVS
X1RZUEVfQVNDT05GICAgICAgIHxZZXMgfFllcyB8WWVzIHwKKyAqIHxTQ1RQX1RJTUVSX1RZUEVf
U0hVVERPV05HVUFSRHxZZXMgfFllcyB8Tm8gIHwKKyAqIHxTQ1RQX1RJTUVSX1RZUEVfQVVUT0NM
T1NFICAgIHxZZXMgfFllcyB8Tm8gIHwKKyAqIHxTQ1RQX1RJTUVSX1RZUEVfU1RSUkVTRVQgICAg
IHxZZXMgfFllcyB8WWVzIHwKKyAqIHxTQ1RQX1RJTUVSX1RZUEVfSU5QS0lMTCAgICAgIHxZZXMg
fE5vICB8Tm8gIHwKKyAqIHxTQ1RQX1RJTUVSX1RZUEVfQVNPQ0tJTEwgICAgIHxZZXMgfFllcyB8
Tm8gIHwKKyAqIHxTQ1RQX1RJTUVSX1RZUEVfQUREUl9XUSAgICAgIHxObyAgfE5vICB8Tm8gIHwK
KyAqIHxTQ1RQX1RJTUVSX1RZUEVfUFJJTV9ERUxFVEVEIHxZZXMgfFllcyB8Tm8gIHwKKyAqCisg
Ki8KKwogdm9pZAogc2N0cF90aW1lcl9zdGFydChpbnQgdF90eXBlLCBzdHJ1Y3Qgc2N0cF9pbnBj
YiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAgICAgc3RydWN0IHNjdHBfbmV0cyAqbmV0
KQogewotCXVpbnQzMl90IHRvX3RpY2tzOwogCXN0cnVjdCBzY3RwX3RpbWVyICp0bXI7CisJdWlu
dDMyX3QgdG9fdGlja3M7CisJdWludDMyX3Qgcm5kdmFsLCBqaXR0ZXI7CiAKLQlpZiAoKHRfdHlw
ZSAhPSBTQ1RQX1RJTUVSX1RZUEVfQUREUl9XUSkgJiYgKGlucCA9PSBOVUxMKSkKLQkJcmV0dXJu
OwotCisJS0FTU0VSVChzdGNiID09IE5VTEwgfHwgc3RjYi0+c2N0cF9lcCA9PSBpbnAsCisJICAg
ICAgICAoInNjdHBfdGltZXJfc3RhcnQgb2YgdHlwZSAlZDogaW5wID0gJXAsIHN0Y2ItPnNjdHBf
ZXAgJXAiLAorCSAgICAgICAgIHRfdHlwZSwgc3RjYiwgc3RjYi0+c2N0cF9lcCkpOwogCXRtciA9
IE5VTEw7Ci0JaWYgKHN0Y2IpIHsKKwl0b190aWNrcyA9IDA7CisJaWYgKHN0Y2IgIT0gTlVMTCkg
ewogCQlTQ1RQX1RDQl9MT0NLX0FTU0VSVChzdGNiKTsKKwl9IGVsc2UgaWYgKGlucCAhPSBOVUxM
KSB7CisJCVNDVFBfSU5QX1dMT0NLX0FTU0VSVChpbnApOworCX0gZWxzZSB7CisJCVNDVFBfV1Ff
QUREUl9MT0NLX0FTU0VSVCgpOworCX0KKwlpZiAoc3RjYiAhPSBOVUxMKSB7CisJCS8qIERvbid0
IHJlc3RhcnQgdGltZXIgb24gYXNzb2NpYXRpb24gdGhhdCdzIGFib3V0IHRvIGJlIGtpbGxlZC4g
Ki8KKwkJaWYgKChzdGNiLT5hc29jLnN0YXRlICYgU0NUUF9TVEFURV9BQk9VVF9UT19CRV9GUkVF
RCkgJiYKKwkJICAgICh0X3R5cGUgIT0gU0NUUF9USU1FUl9UWVBFX0FTT0NLSUxMKSkgeworCQkJ
U0NUUERCRyhTQ1RQX0RFQlVHX1RJTUVSMiwKKwkJCQkiVGltZXIgdHlwZSAlZCBub3Qgc3RhcnRl
ZDogaW5wPSVwLCBzdGNiPSVwLCBuZXQ9JXAgKHN0Y2IgZGVsZXRlZCkuXG4iLAorCQkJCXRfdHlw
ZSwgaW5wLCBzdGNiLCBuZXQpOworCQkJcmV0dXJuOworCQl9CisJCS8qIERvbid0IHJlc3RhcnQg
dGltZXIgb24gbmV0IHRoYXQncyBiZWVuIHJlbW92ZWQuICovCisJCWlmIChuZXQgIT0gTlVMTCAm
JiAobmV0LT5kZXN0X3N0YXRlICYgU0NUUF9BRERSX0JFSU5HX0RFTEVURUQpKSB7CisJCQlTQ1RQ
REJHKFNDVFBfREVCVUdfVElNRVIyLAorCQkJCSJUaW1lciB0eXBlICVkIG5vdCBzdGFydGVkOiBp
bnA9JXAsIHN0Y2I9JXAsIG5ldD0lcCAobmV0IGRlbGV0ZWQpLlxuIiwKKwkJCQl0X3R5cGUsIGlu
cCwgc3RjYiwgbmV0KTsKKwkJCXJldHVybjsKKwkJfQogCX0KIAlzd2l0Y2ggKHRfdHlwZSkgewot
CWNhc2UgU0NUUF9USU1FUl9UWVBFX0FERFJfV1E6Ci0JCS8qIE9ubHkgMSB0aWNrIGF3YXkgOi0p
ICovCi0JCXRtciA9ICZTQ1RQX0JBU0VfSU5GTyhhZGRyX3dxX3RpbWVyKTsKLQkJdG9fdGlja3Mg
PSBTQ1RQX0FERFJFU1NfVElDS19ERUxBWTsKLQkJYnJlYWs7CiAJY2FzZSBTQ1RQX1RJTUVSX1RZ
UEVfU0VORDoKLQkJLyogSGVyZSB3ZSB1c2UgdGhlIFJUTyB0aW1lciAqLwotCQl7Ci0JCQlpbnQg
cnRvX3ZhbDsKLQotCQkJaWYgKChzdGNiID09IE5VTEwpIHx8IChuZXQgPT0gTlVMTCkpIHsKLQkJ
CQlyZXR1cm47Ci0JCQl9Ci0JCQl0bXIgPSAmbmV0LT5yeHRfdGltZXI7Ci0JCQlpZiAobmV0LT5S
VE8gPT0gMCkgewotCQkJCXJ0b192YWwgPSBzdGNiLT5hc29jLmluaXRpYWxfcnRvOwotCQkJfSBl
bHNlIHsKLQkJCQlydG9fdmFsID0gbmV0LT5SVE87Ci0JCQl9Ci0JCQl0b190aWNrcyA9IE1TRUNf
VE9fVElDS1MocnRvX3ZhbCk7CisJCS8qIEhlcmUgd2UgdXNlIHRoZSBSVE8gdGltZXIuICovCisJ
CWlmICgoaW5wID09IE5VTEwpIHx8IChzdGNiID09IE5VTEwpIHx8IChuZXQgPT0gTlVMTCkpIHsK
KyNpZmRlZiBJTlZBUklBTlRTCisJCQlwYW5pYygic2N0cF90aW1lcl9zdGFydCBvZiB0eXBlICVk
OiBpbnAgPSAlcCwgc3RjYiA9ICVwLCBuZXQgPSAlcCIsCisJCQkgICAgICB0X3R5cGUsIGlucCwg
c3RjYiwgbmV0KTsKKyNlbHNlCisJCQlyZXR1cm47CisjZW5kaWYKKwkJfQorCQl0bXIgPSAmbmV0
LT5yeHRfdGltZXI7CisJCWlmIChuZXQtPlJUTyA9PSAwKSB7CisJCQl0b190aWNrcyA9IHNjdHBf
bXNlY3NfdG9fdGlja3Moc3RjYi0+YXNvYy5pbml0aWFsX3J0byk7CisJCX0gZWxzZSB7CisJCQl0
b190aWNrcyA9IHNjdHBfbXNlY3NfdG9fdGlja3MobmV0LT5SVE8pOwogCQl9CiAJCWJyZWFrOwog
CWNhc2UgU0NUUF9USU1FUl9UWVBFX0lOSVQ6CiAJCS8qCiAJCSAqIEhlcmUgd2UgdXNlIHRoZSBJ
TklUIHRpbWVyIGRlZmF1bHQgdXN1YWxseSBhYm91dCAxCi0JCSAqIG1pbnV0ZS4KKwkJICogc2Vj
b25kLgogCQkgKi8KLQkJaWYgKChzdGNiID09IE5VTEwpIHx8IChuZXQgPT0gTlVMTCkpIHsKKwkJ
aWYgKChpbnAgPT0gTlVMTCkgfHwgKHN0Y2IgPT0gTlVMTCkgfHwgKG5ldCA9PSBOVUxMKSkgewor
I2lmZGVmIElOVkFSSUFOVFMKKwkJCXBhbmljKCJzY3RwX3RpbWVyX3N0YXJ0IG9mIHR5cGUgJWQ6
IGlucCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9ICVwIiwKKwkJCSAgICAgIHRfdHlwZSwgaW5wLCBz
dGNiLCBuZXQpOworI2Vsc2UKIAkJCXJldHVybjsKKyNlbmRpZgogCQl9CiAJCXRtciA9ICZuZXQt
PnJ4dF90aW1lcjsKIAkJaWYgKG5ldC0+UlRPID09IDApIHsKLQkJCXRvX3RpY2tzID0gTVNFQ19U
T19USUNLUyhzdGNiLT5hc29jLmluaXRpYWxfcnRvKTsKKwkJCXRvX3RpY2tzID0gc2N0cF9tc2Vj
c190b190aWNrcyhzdGNiLT5hc29jLmluaXRpYWxfcnRvKTsKIAkJfSBlbHNlIHsKLQkJCXRvX3Rp
Y2tzID0gTVNFQ19UT19USUNLUyhuZXQtPlJUTyk7CisJCQl0b190aWNrcyA9IHNjdHBfbXNlY3Nf
dG9fdGlja3MobmV0LT5SVE8pOwogCQl9CiAJCWJyZWFrOwogCWNhc2UgU0NUUF9USU1FUl9UWVBF
X1JFQ1Y6CiAJCS8qCi0JCSAqIEhlcmUgd2UgdXNlIHRoZSBEZWxheWVkLUFjayB0aW1lciB2YWx1
ZSBmcm9tIHRoZSBpbnAKKwkJICogSGVyZSB3ZSB1c2UgdGhlIERlbGF5ZWQtQWNrIHRpbWVyIHZh
bHVlIGZyb20gdGhlIGlucCwKIAkJICogdXN1c3VhbGx5IGFib3V0IDIwMG1zLgogCQkgKi8KLQkJ
aWYgKHN0Y2IgPT0gTlVMTCkgeworCQlpZiAoKGlucCA9PSBOVUxMKSB8fCAoc3RjYiA9PSBOVUxM
KSB8fCAobmV0ICE9IE5VTEwpKSB7CisjaWZkZWYgSU5WQVJJQU5UUworCQkJcGFuaWMoInNjdHBf
dGltZXJfc3RhcnQgb2YgdHlwZSAlZDogaW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAor
CQkJICAgICAgdF90eXBlLCBpbnAsIHN0Y2IsIG5ldCk7CisjZWxzZQogCQkJcmV0dXJuOworI2Vu
ZGlmCiAJCX0KIAkJdG1yID0gJnN0Y2ItPmFzb2MuZGFja190aW1lcjsKLQkJdG9fdGlja3MgPSBN
U0VDX1RPX1RJQ0tTKHN0Y2ItPmFzb2MuZGVsYXllZF9hY2spOworCQl0b190aWNrcyA9IHNjdHBf
bXNlY3NfdG9fdGlja3Moc3RjYi0+YXNvYy5kZWxheWVkX2Fjayk7CiAJCWJyZWFrOwogCWNhc2Ug
U0NUUF9USU1FUl9UWVBFX1NIVVRET1dOOgogCQkvKiBIZXJlIHdlIHVzZSB0aGUgUlRPIG9mIHRo
ZSBkZXN0aW5hdGlvbi4gKi8KLQkJaWYgKChzdGNiID09IE5VTEwpIHx8IChuZXQgPT0gTlVMTCkp
IHsKKwkJaWYgKChpbnAgPT0gTlVMTCkgfHwgKHN0Y2IgPT0gTlVMTCkgfHwgKG5ldCA9PSBOVUxM
KSkgeworI2lmZGVmIElOVkFSSUFOVFMKKwkJCXBhbmljKCJzY3RwX3RpbWVyX3N0YXJ0IG9mIHR5
cGUgJWQ6IGlucCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9ICVwIiwKKwkJCSAgICAgIHRfdHlwZSwg
aW5wLCBzdGNiLCBuZXQpOworI2Vsc2UKIAkJCXJldHVybjsKKyNlbmRpZgogCQl9CisJCXRtciA9
ICZuZXQtPnJ4dF90aW1lcjsKIAkJaWYgKG5ldC0+UlRPID09IDApIHsKLQkJCXRvX3RpY2tzID0g
TVNFQ19UT19USUNLUyhzdGNiLT5hc29jLmluaXRpYWxfcnRvKTsKKwkJCXRvX3RpY2tzID0gc2N0
cF9tc2Vjc190b190aWNrcyhzdGNiLT5hc29jLmluaXRpYWxfcnRvKTsKIAkJfSBlbHNlIHsKLQkJ
CXRvX3RpY2tzID0gTVNFQ19UT19USUNLUyhuZXQtPlJUTyk7CisJCQl0b190aWNrcyA9IHNjdHBf
bXNlY3NfdG9fdGlja3MobmV0LT5SVE8pOwogCQl9Ci0JCXRtciA9ICZuZXQtPnJ4dF90aW1lcjsK
IAkJYnJlYWs7CiAJY2FzZSBTQ1RQX1RJTUVSX1RZUEVfSEVBUlRCRUFUOgogCQkvKgotCQkgKiB0
aGUgbmV0IGlzIHVzZWQgaGVyZSBzbyB0aGF0IHdlIGNhbiBhZGQgaW4gdGhlIFJUTy4gRXZlbgor
CQkgKiBUaGUgbmV0IGlzIHVzZWQgaGVyZSBzbyB0aGF0IHdlIGNhbiBhZGQgaW4gdGhlIFJUTy4g
RXZlbgogCQkgKiB0aG91Z2ggd2UgdXNlIGEgZGlmZmVyZW50IHRpbWVyLiBXZSBhbHNvIGFkZCB0
aGUgSEIgdGltZXIKIAkJICogUExVUyBhIHJhbmRvbSBqaXR0ZXIuCiAJCSAqLwotCQlpZiAoKHN0
Y2IgPT0gTlVMTCkgfHwgKG5ldCA9PSBOVUxMKSkgeworCQlpZiAoKGlucCA9PSBOVUxMKSB8fCAo
c3RjYiA9PSBOVUxMKSB8fCAobmV0ID09IE5VTEwpKSB7CisjaWZkZWYgSU5WQVJJQU5UUworCQkJ
cGFuaWMoInNjdHBfdGltZXJfc3RhcnQgb2YgdHlwZSAlZDogaW5wID0gJXAsIHN0Y2IgPSAlcCwg
bmV0ID0gJXAiLAorCQkJICAgICAgdF90eXBlLCBpbnAsIHN0Y2IsIG5ldCk7CisjZWxzZQogCQkJ
cmV0dXJuOworI2VuZGlmCisJCX0KKwkJaWYgKChuZXQtPmRlc3Rfc3RhdGUgJiBTQ1RQX0FERFJf
Tk9IQikgJiYKKwkJICAgICEobmV0LT5kZXN0X3N0YXRlICYgU0NUUF9BRERSX1VOQ09ORklSTUVE
KSkgeworCQkJU0NUUERCRyhTQ1RQX0RFQlVHX1RJTUVSMiwKKwkJCSAgICAgICAgIlRpbWVyIHR5
cGUgJWQgbm90IHN0YXJ0ZWQ6IGlucD0lcCwgc3RjYj0lcCwgbmV0PSVwLlxuIiwKKwkJCSAgICAg
ICAgdF90eXBlLCBpbnAsIHN0Y2IsIG5ldCk7CisJCQlyZXR1cm47CisJCX0KKwkJdG1yID0gJm5l
dC0+aGJfdGltZXI7CisJCWlmIChuZXQtPlJUTyA9PSAwKSB7CisJCQl0b190aWNrcyA9IHN0Y2It
PmFzb2MuaW5pdGlhbF9ydG87CiAJCX0gZWxzZSB7Ci0JCQl1aW50MzJfdCBybmR2YWw7Ci0JCQl1
aW50MzJfdCBqaXR0ZXI7Ci0KLQkJCWlmICgobmV0LT5kZXN0X3N0YXRlICYgU0NUUF9BRERSX05P
SEIpICYmCi0JCQkgICAgIShuZXQtPmRlc3Rfc3RhdGUgJiBTQ1RQX0FERFJfVU5DT05GSVJNRUQp
KSB7Ci0JCQkJcmV0dXJuOwotCQkJfQotCQkJaWYgKG5ldC0+UlRPID09IDApIHsKLQkJCQl0b190
aWNrcyA9IHN0Y2ItPmFzb2MuaW5pdGlhbF9ydG87Ci0JCQl9IGVsc2UgewotCQkJCXRvX3RpY2tz
ID0gbmV0LT5SVE87Ci0JCQl9Ci0JCQlybmR2YWwgPSBzY3RwX3NlbGVjdF9pbml0aWFsX1RTTigm
aW5wLT5zY3RwX2VwKTsKLQkJCWppdHRlciA9IHJuZHZhbCAlIHRvX3RpY2tzOwotCQkJaWYgKGpp
dHRlciA+PSAodG9fdGlja3MgPj4gMSkpIHsKLQkJCQl0b190aWNrcyA9IHRvX3RpY2tzICsgKGpp
dHRlciAtICh0b190aWNrcyA+PiAxKSk7Ci0JCQl9IGVsc2UgewotCQkJCXRvX3RpY2tzID0gdG9f
dGlja3MgLSBqaXR0ZXI7Ci0JCQl9Ci0JCQlpZiAoIShuZXQtPmRlc3Rfc3RhdGUgJiBTQ1RQX0FE
RFJfVU5DT05GSVJNRUQpICYmCi0JCQkgICAgIShuZXQtPmRlc3Rfc3RhdGUgJiBTQ1RQX0FERFJf
UEYpKSB7Ci0JCQkJdG9fdGlja3MgKz0gbmV0LT5oZWFydF9iZWF0X2RlbGF5OwotCQkJfQotCQkJ
LyoKLQkJCSAqIE5vdyB3ZSBtdXN0IGNvbnZlcnQgdGhlIHRvX3RpY2tzIHRoYXQgYXJlIG5vdyBp
bgotCQkJICogbXMgdG8gdGlja3MuCi0JCQkgKi8KLQkJCXRvX3RpY2tzID0gTVNFQ19UT19USUNL
Uyh0b190aWNrcyk7Ci0JCQl0bXIgPSAmbmV0LT5oYl90aW1lcjsKKwkJCXRvX3RpY2tzID0gbmV0
LT5SVE87CisJCX0KKwkJcm5kdmFsID0gc2N0cF9zZWxlY3RfaW5pdGlhbF9UU04oJmlucC0+c2N0
cF9lcCk7CisJCWppdHRlciA9IHJuZHZhbCAlIHRvX3RpY2tzOworCQlpZiAoaml0dGVyID49ICh0
b190aWNrcyA+PiAxKSkgeworCQkJdG9fdGlja3MgPSB0b190aWNrcyArIChqaXR0ZXIgLSAodG9f
dGlja3MgPj4gMSkpOworCQl9IGVsc2UgeworCQkJdG9fdGlja3MgPSB0b190aWNrcyAtIGppdHRl
cjsKIAkJfQorCQlpZiAoIShuZXQtPmRlc3Rfc3RhdGUgJiBTQ1RQX0FERFJfVU5DT05GSVJNRUQp
ICYmCisJCSAgICAhKG5ldC0+ZGVzdF9zdGF0ZSAmIFNDVFBfQUREUl9QRikpIHsKKwkJCXRvX3Rp
Y2tzICs9IG5ldC0+aGVhcnRfYmVhdF9kZWxheTsKKwkJfQorCQkvKgorCQkgKiBOb3cgd2UgbXVz
dCBjb252ZXJ0IHRoZSB0b190aWNrcyB0aGF0IGFyZSBub3cgaW4KKwkJICogbXMgdG8gdGlja3Mu
CisJCSAqLworCQl0b190aWNrcyA9IHNjdHBfbXNlY3NfdG9fdGlja3ModG9fdGlja3MpOwogCQli
cmVhazsKIAljYXNlIFNDVFBfVElNRVJfVFlQRV9DT09LSUU6CiAJCS8qCiAJCSAqIEhlcmUgd2Ug
Y2FuIHVzZSB0aGUgUlRPIHRpbWVyIGZyb20gdGhlIG5ldHdvcmsgc2luY2Ugb25lCi0JCSAqIFJU
VCB3YXMgY29tcGVsZXRlLiBJZiBhIHJldHJhbiBoYXBwZW5lZCB0aGVuIHdlIHdpbGwgYmUKLQkJ
ICogdXNpbmcgdGhlIFJUTyBpbml0aWFsIHZhbHVlLgorCQkgKiBSVFQgd2FzIGNvbXBsZXRlLiBJ
ZiBhIHJldHJhbnNtaXNzaW9uIGhhcHBlbmVkIHRoZW4gd2Ugd2lsbAorCQkgKiBiZSB1c2luZyB0
aGUgUlRPIGluaXRpYWwgdmFsdWUuCiAJCSAqLwotCQlpZiAoKHN0Y2IgPT0gTlVMTCkgfHwgKG5l
dCA9PSBOVUxMKSkgeworCQlpZiAoKGlucCA9PSBOVUxMKSB8fCAoc3RjYiA9PSBOVUxMKSB8fCAo
bmV0ID09IE5VTEwpKSB7CisjaWZkZWYgSU5WQVJJQU5UUworCQkJcGFuaWMoInNjdHBfdGltZXJf
c3RhcnQgb2YgdHlwZSAlZDogaW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkJICAg
ICAgdF90eXBlLCBpbnAsIHN0Y2IsIG5ldCk7CisjZWxzZQogCQkJcmV0dXJuOworI2VuZGlmCiAJ
CX0KKwkJdG1yID0gJm5ldC0+cnh0X3RpbWVyOwogCQlpZiAobmV0LT5SVE8gPT0gMCkgewotCQkJ
dG9fdGlja3MgPSBNU0VDX1RPX1RJQ0tTKHN0Y2ItPmFzb2MuaW5pdGlhbF9ydG8pOworCQkJdG9f
dGlja3MgPSBzY3RwX21zZWNzX3RvX3RpY2tzKHN0Y2ItPmFzb2MuaW5pdGlhbF9ydG8pOwogCQl9
IGVsc2UgewotCQkJdG9fdGlja3MgPSBNU0VDX1RPX1RJQ0tTKG5ldC0+UlRPKTsKKwkJCXRvX3Rp
Y2tzID0gc2N0cF9tc2Vjc190b190aWNrcyhuZXQtPlJUTyk7CiAJCX0KLQkJdG1yID0gJm5ldC0+
cnh0X3RpbWVyOwogCQlicmVhazsKIAljYXNlIFNDVFBfVElNRVJfVFlQRV9ORVdDT09LSUU6CiAJ
CS8qCi0JCSAqIG5vdGhpbmcgbmVlZGVkIGJ1dCB0aGUgZW5kcG9pbnQgaGVyZSB1c3VzdWFsbHkg
YWJvdXQgNjAKKwkJICogTm90aGluZyBuZWVkZWQgYnV0IHRoZSBlbmRwb2ludCBoZXJlIHVzdXN1
YWxseSBhYm91dCA2MAogCQkgKiBtaW51dGVzLgogCQkgKi8KLQkJdG1yID0gJmlucC0+c2N0cF9l
cC5zaWduYXR1cmVfY2hhbmdlOwotCQl0b190aWNrcyA9IGlucC0+c2N0cF9lcC5zY3RwX3RpbWVv
dXR0aWNrc1tTQ1RQX1RJTUVSX1NJR05BVFVSRV07Ci0JCWJyZWFrOwotCWNhc2UgU0NUUF9USU1F
Ul9UWVBFX0FTT0NLSUxMOgotCQlpZiAoc3RjYiA9PSBOVUxMKSB7CisJCWlmICgoaW5wID09IE5V
TEwpIHx8IChzdGNiICE9IE5VTEwpIHx8IChuZXQgIT0gTlVMTCkpIHsKKyNpZmRlZiBJTlZBUklB
TlRTCisJCQlwYW5pYygic2N0cF90aW1lcl9zdGFydCBvZiB0eXBlICVkOiBpbnAgPSAlcCwgc3Rj
YiA9ICVwLCBuZXQgPSAlcCIsCisJCQkgICAgICB0X3R5cGUsIGlucCwgc3RjYiwgbmV0KTsKKyNl
bHNlCiAJCQlyZXR1cm47CisjZW5kaWYKIAkJfQotCQl0bXIgPSAmc3RjYi0+YXNvYy5zdHJyZXNl
dF90aW1lcjsKLQkJdG9fdGlja3MgPSBNU0VDX1RPX1RJQ0tTKFNDVFBfQVNPQ19LSUxMX1RJTUVP
VVQpOwotCQlicmVhazsKLQljYXNlIFNDVFBfVElNRVJfVFlQRV9JTlBLSUxMOgotCQkvKgotCQkg
KiBUaGUgaW5wIGlzIHNldHVwIHRvIGRpZS4gV2UgcmUtdXNlIHRoZSBzaWduYXR1cmVfY2hhZ2UK
LQkJICogdGltZXIgc2luY2UgdGhhdCBoYXMgc3RvcHBlZCBhbmQgd2UgYXJlIGluIHRoZSBHT05F
Ci0JCSAqIHN0YXRlLgotCQkgKi8KIAkJdG1yID0gJmlucC0+c2N0cF9lcC5zaWduYXR1cmVfY2hh
bmdlOwotCQl0b190aWNrcyA9IE1TRUNfVE9fVElDS1MoU0NUUF9JTlBfS0lMTF9USU1FT1VUKTsK
KwkJdG9fdGlja3MgPSBpbnAtPnNjdHBfZXAuc2N0cF90aW1lb3V0dGlja3NbU0NUUF9USU1FUl9T
SUdOQVRVUkVdOwogCQlicmVhazsKIAljYXNlIFNDVFBfVElNRVJfVFlQRV9QQVRITVRVUkFJU0U6
CiAJCS8qCi0JCSAqIEhlcmUgd2UgdXNlIHRoZSB2YWx1ZSBmb3VuZCBpbiB0aGUgRVAgZm9yIFBN
VFUgdXN1c3VhbGx5CisJCSAqIEhlcmUgd2UgdXNlIHRoZSB2YWx1ZSBmb3VuZCBpbiB0aGUgRVAg
Zm9yIFBNVFVELCB1c3VzdWFsbHkKIAkJICogYWJvdXQgMTAgbWludXRlcy4KIAkJICovCi0JCWlm
ICgoc3RjYiA9PSBOVUxMKSB8fCAobmV0ID09IE5VTEwpKSB7CisJCWlmICgoaW5wID09IE5VTEwp
IHx8IChzdGNiID09IE5VTEwpIHx8IChuZXQgPT0gTlVMTCkpIHsKKyNpZmRlZiBJTlZBUklBTlRT
CisJCQlwYW5pYygic2N0cF90aW1lcl9zdGFydCBvZiB0eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9
ICVwLCBuZXQgPSAlcCIsCisJCQkgICAgICB0X3R5cGUsIGlucCwgc3RjYiwgbmV0KTsKKyNlbHNl
CiAJCQlyZXR1cm47CisjZW5kaWYKIAkJfQogCQlpZiAobmV0LT5kZXN0X3N0YXRlICYgU0NUUF9B
RERSX05PX1BNVFVEKSB7CisJCQlTQ1RQREJHKFNDVFBfREVCVUdfVElNRVIyLAorCQkJICAgICAg
ICAiVGltZXIgdHlwZSAlZCBub3Qgc3RhcnRlZDogaW5wPSVwLCBzdGNiPSVwLCBuZXQ9JXAuXG4i
LAorCQkJICAgICAgICB0X3R5cGUsIGlucCwgc3RjYiwgbmV0KTsKIAkJCXJldHVybjsKIAkJfQot
CQl0b190aWNrcyA9IGlucC0+c2N0cF9lcC5zY3RwX3RpbWVvdXR0aWNrc1tTQ1RQX1RJTUVSX1BN
VFVdOwogCQl0bXIgPSAmbmV0LT5wbXR1X3RpbWVyOworCQl0b190aWNrcyA9IGlucC0+c2N0cF9l
cC5zY3RwX3RpbWVvdXR0aWNrc1tTQ1RQX1RJTUVSX1BNVFVdOwogCQlicmVhazsKIAljYXNlIFND
VFBfVElNRVJfVFlQRV9TSFVURE9XTkFDSzoKLQkJLyogSGVyZSB3ZSB1c2UgdGhlIFJUTyBvZiB0
aGUgZGVzdGluYXRpb24gKi8KLQkJaWYgKChzdGNiID09IE5VTEwpIHx8IChuZXQgPT0gTlVMTCkp
IHsKKwkJLyogSGVyZSB3ZSB1c2UgdGhlIFJUTyBvZiB0aGUgZGVzdGluYXRpb24uICovCisJCWlm
ICgoaW5wID09IE5VTEwpIHx8IChzdGNiID09IE5VTEwpIHx8IChuZXQgPT0gTlVMTCkpIHsKKyNp
ZmRlZiBJTlZBUklBTlRTCisJCQlwYW5pYygic2N0cF90aW1lcl9zdGFydCBvZiB0eXBlICVkOiBp
bnAgPSAlcCwgc3RjYiA9ICVwLCBuZXQgPSAlcCIsCisJCQkgICAgICB0X3R5cGUsIGlucCwgc3Rj
YiwgbmV0KTsKKyNlbHNlCiAJCQlyZXR1cm47CisjZW5kaWYKIAkJfQorCQl0bXIgPSAmbmV0LT5y
eHRfdGltZXI7CiAJCWlmIChuZXQtPlJUTyA9PSAwKSB7Ci0JCQl0b190aWNrcyA9IE1TRUNfVE9f
VElDS1Moc3RjYi0+YXNvYy5pbml0aWFsX3J0byk7CisJCQl0b190aWNrcyA9IHNjdHBfbXNlY3Nf
dG9fdGlja3Moc3RjYi0+YXNvYy5pbml0aWFsX3J0byk7CiAJCX0gZWxzZSB7Ci0JCQl0b190aWNr
cyA9IE1TRUNfVE9fVElDS1MobmV0LT5SVE8pOworCQkJdG9fdGlja3MgPSBzY3RwX21zZWNzX3Rv
X3RpY2tzKG5ldC0+UlRPKTsKKwkJfQorCQlicmVhazsKKwljYXNlIFNDVFBfVElNRVJfVFlQRV9B
U0NPTkY6CisJCS8qCisJCSAqIEhlcmUgdGhlIHRpbWVyIGNvbWVzIGZyb20gdGhlIHN0Y2IgYnV0
IGl0cyB2YWx1ZSBpcyBmcm9tCisJCSAqIHRoZSBuZXQncyBSVE8uCisJCSAqLworCQlpZiAoKGlu
cCA9PSBOVUxMKSB8fCAoc3RjYiA9PSBOVUxMKSB8fCAobmV0ID09IE5VTEwpKSB7CisjaWZkZWYg
SU5WQVJJQU5UUworCQkJcGFuaWMoInNjdHBfdGltZXJfc3RhcnQgb2YgdHlwZSAlZDogaW5wID0g
JXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkJICAgICAgdF90eXBlLCBpbnAsIHN0Y2IsIG5l
dCk7CisjZWxzZQorCQkJcmV0dXJuOworI2VuZGlmCisJCX0KKwkJdG1yID0gJnN0Y2ItPmFzb2Mu
YXNjb25mX3RpbWVyOworCQlpZiAobmV0LT5SVE8gPT0gMCkgeworCQkJdG9fdGlja3MgPSBzY3Rw
X21zZWNzX3RvX3RpY2tzKHN0Y2ItPmFzb2MuaW5pdGlhbF9ydG8pOworCQl9IGVsc2UgeworCQkJ
dG9fdGlja3MgPSBzY3RwX21zZWNzX3RvX3RpY2tzKG5ldC0+UlRPKTsKIAkJfQotCQl0bXIgPSAm
bmV0LT5yeHRfdGltZXI7CiAJCWJyZWFrOwogCWNhc2UgU0NUUF9USU1FUl9UWVBFX1NIVVRET1dO
R1VBUkQ6CiAJCS8qCiAJCSAqIEhlcmUgd2UgdXNlIHRoZSBlbmRwb2ludHMgc2h1dGRvd24gZ3Vh
cmQgdGltZXIgdXN1YWxseQogCQkgKiBhYm91dCAzIG1pbnV0ZXMuCiAJCSAqLwotCQlpZiAoc3Rj
YiA9PSBOVUxMKSB7CisJCWlmICgoaW5wID09IE5VTEwpIHx8IChzdGNiID09IE5VTEwpIHx8IChu
ZXQgIT0gTlVMTCkpIHsKKyNpZmRlZiBJTlZBUklBTlRTCisJCQlwYW5pYygic2N0cF90aW1lcl9z
dGFydCBvZiB0eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9ICVwLCBuZXQgPSAlcCIsCisJCQkgICAg
ICB0X3R5cGUsIGlucCwgc3RjYiwgbmV0KTsKKyNlbHNlCiAJCQlyZXR1cm47CisjZW5kaWYKIAkJ
fQorCQl0bXIgPSAmc3RjYi0+YXNvYy5zaHV0X2d1YXJkX3RpbWVyOwogCQlpZiAoaW5wLT5zY3Rw
X2VwLnNjdHBfdGltZW91dHRpY2tzW1NDVFBfVElNRVJfTUFYU0hVVERPV05dID09IDApIHsKLQkJ
CXRvX3RpY2tzID0gNSAqIE1TRUNfVE9fVElDS1Moc3RjYi0+YXNvYy5tYXhydG8pOworCQkJaWYg
KHN0Y2ItPmFzb2MubWF4cnRvIDwgVUlOVDMyX01BWCAvIDUpIHsKKwkJCQl0b190aWNrcyA9IHNj
dHBfbXNlY3NfdG9fdGlja3MoNSAqIHN0Y2ItPmFzb2MubWF4cnRvKTsKKwkJCX0gZWxzZSB7CisJ
CQkJdG9fdGlja3MgPSBzY3RwX21zZWNzX3RvX3RpY2tzKFVJTlQzMl9NQVgpOworCQkJfQogCQl9
IGVsc2UgewogCQkJdG9fdGlja3MgPSBpbnAtPnNjdHBfZXAuc2N0cF90aW1lb3V0dGlja3NbU0NU
UF9USU1FUl9NQVhTSFVURE9XTl07CiAJCX0KLQkJdG1yID0gJnN0Y2ItPmFzb2Muc2h1dF9ndWFy
ZF90aW1lcjsKKwkJYnJlYWs7CisJY2FzZSBTQ1RQX1RJTUVSX1RZUEVfQVVUT0NMT1NFOgorCQlp
ZiAoKGlucCA9PSBOVUxMKSB8fCAoc3RjYiA9PSBOVUxMKSB8fCAobmV0ICE9IE5VTEwpKSB7Cisj
aWZkZWYgSU5WQVJJQU5UUworCQkJcGFuaWMoInNjdHBfdGltZXJfc3RhcnQgb2YgdHlwZSAlZDog
aW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkJICAgICAgdF90eXBlLCBpbnAsIHN0
Y2IsIG5ldCk7CisjZWxzZQorCQkJcmV0dXJuOworI2VuZGlmCisJCX0KKwkJdG1yID0gJnN0Y2It
PmFzb2MuYXV0b2Nsb3NlX3RpbWVyOworCQl0b190aWNrcyA9IHN0Y2ItPmFzb2Muc2N0cF9hdXRv
Y2xvc2VfdGlja3M7CiAJCWJyZWFrOwogCWNhc2UgU0NUUF9USU1FUl9UWVBFX1NUUlJFU0VUOgog
CQkvKgogCQkgKiBIZXJlIHRoZSB0aW1lciBjb21lcyBmcm9tIHRoZSBzdGNiIGJ1dCBpdHMgdmFs
dWUgaXMgZnJvbQogCQkgKiB0aGUgbmV0J3MgUlRPLgogCQkgKi8KLQkJaWYgKChzdGNiID09IE5V
TEwpIHx8IChuZXQgPT0gTlVMTCkpIHsKKwkJaWYgKChpbnAgPT0gTlVMTCkgfHwgKHN0Y2IgPT0g
TlVMTCkgfHwgKG5ldCA9PSBOVUxMKSkgeworI2lmZGVmIElOVkFSSUFOVFMKKwkJCXBhbmljKCJz
Y3RwX3RpbWVyX3N0YXJ0IG9mIHR5cGUgJWQ6IGlucCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9ICVw
IiwKKwkJCSAgICAgIHRfdHlwZSwgaW5wLCBzdGNiLCBuZXQpOworI2Vsc2UKIAkJCXJldHVybjsK
KyNlbmRpZgogCQl9CisJCXRtciA9ICZzdGNiLT5hc29jLnN0cnJlc2V0X3RpbWVyOwogCQlpZiAo
bmV0LT5SVE8gPT0gMCkgewotCQkJdG9fdGlja3MgPSBNU0VDX1RPX1RJQ0tTKHN0Y2ItPmFzb2Mu
aW5pdGlhbF9ydG8pOworCQkJdG9fdGlja3MgPSBzY3RwX21zZWNzX3RvX3RpY2tzKHN0Y2ItPmFz
b2MuaW5pdGlhbF9ydG8pOwogCQl9IGVsc2UgewotCQkJdG9fdGlja3MgPSBNU0VDX1RPX1RJQ0tT
KG5ldC0+UlRPKTsKKwkJCXRvX3RpY2tzID0gc2N0cF9tc2Vjc190b190aWNrcyhuZXQtPlJUTyk7
CiAJCX0KLQkJdG1yID0gJnN0Y2ItPmFzb2Muc3RycmVzZXRfdGltZXI7CiAJCWJyZWFrOwotCWNh
c2UgU0NUUF9USU1FUl9UWVBFX0FTQ09ORjoKKwljYXNlIFNDVFBfVElNRVJfVFlQRV9JTlBLSUxM
OgogCQkvKgotCQkgKiBIZXJlIHRoZSB0aW1lciBjb21lcyBmcm9tIHRoZSBzdGNiIGJ1dCBpdHMg
dmFsdWUgaXMgZnJvbQotCQkgKiB0aGUgbmV0J3MgUlRPLgorCQkgKiBUaGUgaW5wIGlzIHNldHVw
IHRvIGRpZS4gV2UgcmUtdXNlIHRoZSBzaWduYXR1cmVfY2hhZ2UKKwkJICogdGltZXIgc2luY2Ug
dGhhdCBoYXMgc3RvcHBlZCBhbmQgd2UgYXJlIGluIHRoZSBHT05FCisJCSAqIHN0YXRlLgogCQkg
Ki8KLQkJaWYgKChzdGNiID09IE5VTEwpIHx8IChuZXQgPT0gTlVMTCkpIHsKKwkJaWYgKChpbnAg
PT0gTlVMTCkgfHwgKHN0Y2IgIT0gTlVMTCkgfHwgKG5ldCAhPSBOVUxMKSkgeworI2lmZGVmIElO
VkFSSUFOVFMKKwkJCXBhbmljKCJzY3RwX3RpbWVyX3N0YXJ0IG9mIHR5cGUgJWQ6IGlucCA9ICVw
LCBzdGNiID0gJXAsIG5ldCA9ICVwIiwKKwkJCSAgICAgIHRfdHlwZSwgaW5wLCBzdGNiLCBuZXQp
OworI2Vsc2UKIAkJCXJldHVybjsKKyNlbmRpZgogCQl9Ci0JCWlmIChuZXQtPlJUTyA9PSAwKSB7
Ci0JCQl0b190aWNrcyA9IE1TRUNfVE9fVElDS1Moc3RjYi0+YXNvYy5pbml0aWFsX3J0byk7Ci0J
CX0gZWxzZSB7Ci0JCQl0b190aWNrcyA9IE1TRUNfVE9fVElDS1MobmV0LT5SVE8pOwotCQl9Ci0J
CXRtciA9ICZzdGNiLT5hc29jLmFzY29uZl90aW1lcjsKKwkJdG1yID0gJmlucC0+c2N0cF9lcC5z
aWduYXR1cmVfY2hhbmdlOworCQl0b190aWNrcyA9IHNjdHBfbXNlY3NfdG9fdGlja3MoU0NUUF9J
TlBfS0lMTF9USU1FT1VUKTsKIAkJYnJlYWs7Ci0JY2FzZSBTQ1RQX1RJTUVSX1RZUEVfUFJJTV9E
RUxFVEVEOgotCQlpZiAoKHN0Y2IgPT0gTlVMTCkgfHwgKG5ldCAhPSBOVUxMKSkgeworCWNhc2Ug
U0NUUF9USU1FUl9UWVBFX0FTT0NLSUxMOgorCQlpZiAoKGlucCA9PSBOVUxMKSB8fCAoc3RjYiA9
PSBOVUxMKSB8fCAobmV0ICE9IE5VTEwpKSB7CisjaWZkZWYgSU5WQVJJQU5UUworCQkJcGFuaWMo
InNjdHBfdGltZXJfc3RhcnQgb2YgdHlwZSAlZDogaW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0g
JXAiLAorCQkJICAgICAgdF90eXBlLCBpbnAsIHN0Y2IsIG5ldCk7CisjZWxzZQogCQkJcmV0dXJu
OworI2VuZGlmCiAJCX0KLQkJdG9fdGlja3MgPSBNU0VDX1RPX1RJQ0tTKHN0Y2ItPmFzb2MuaW5p
dGlhbF9ydG8pOwotCQl0bXIgPSAmc3RjYi0+YXNvYy5kZWxldGVfcHJpbV90aW1lcjsKKwkJdG1y
ID0gJnN0Y2ItPmFzb2Muc3RycmVzZXRfdGltZXI7CisJCXRvX3RpY2tzID0gc2N0cF9tc2Vjc190
b190aWNrcyhTQ1RQX0FTT0NfS0lMTF9USU1FT1VUKTsKIAkJYnJlYWs7Ci0JY2FzZSBTQ1RQX1RJ
TUVSX1RZUEVfQVVUT0NMT1NFOgotCQlpZiAoc3RjYiA9PSBOVUxMKSB7CisJY2FzZSBTQ1RQX1RJ
TUVSX1RZUEVfQUREUl9XUToKKwkJaWYgKChpbnAgIT0gTlVMTCkgfHwgKHN0Y2IgIT0gTlVMTCkg
fHwgKG5ldCAhPSBOVUxMKSkgeworI2lmZGVmIElOVkFSSUFOVFMKKwkJCXBhbmljKCJzY3RwX3Rp
bWVyX3N0YXJ0IG9mIHR5cGUgJWQ6IGlucCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9ICVwIiwKKwkJ
CSAgICAgIHRfdHlwZSwgaW5wLCBzdGNiLCBuZXQpOworI2Vsc2UKIAkJCXJldHVybjsKKyNlbmRp
ZgogCQl9Ci0JCWlmIChzdGNiLT5hc29jLnNjdHBfYXV0b2Nsb3NlX3RpY2tzID09IDApIHsKLQkJ
CS8qCi0JCQkgKiBSZWFsbHkgYW4gZXJyb3Igc2luY2Ugc3RjYiBpcyBOT1Qgc2V0IHRvCi0JCQkg
KiBhdXRvY2xvc2UKLQkJCSAqLworCQkvKiBPbmx5IDEgdGljayBhd2F5IDotKSAqLworCQl0bXIg
PSAmU0NUUF9CQVNFX0lORk8oYWRkcl93cV90aW1lcik7CisJCXRvX3RpY2tzID0gU0NUUF9BRERS
RVNTX1RJQ0tfREVMQVk7CisJCWJyZWFrOworCWNhc2UgU0NUUF9USU1FUl9UWVBFX1BSSU1fREVM
RVRFRDoKKwkJaWYgKChpbnAgPT0gTlVMTCkgfHwgKHN0Y2IgPT0gTlVMTCkgfHwgKG5ldCAhPSBO
VUxMKSkgeworI2lmZGVmIElOVkFSSUFOVFMKKwkJCXBhbmljKCJzY3RwX3RpbWVyX3N0YXJ0IG9m
IHR5cGUgJWQ6IGlucCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9ICVwIiwKKwkJCSAgICAgIHRfdHlw
ZSwgaW5wLCBzdGNiLCBuZXQpOworI2Vsc2UKIAkJCXJldHVybjsKKyNlbmRpZgogCQl9Ci0JCXRv
X3RpY2tzID0gc3RjYi0+YXNvYy5zY3RwX2F1dG9jbG9zZV90aWNrczsKLQkJdG1yID0gJnN0Y2It
PmFzb2MuYXV0b2Nsb3NlX3RpbWVyOworCQl0bXIgPSAmc3RjYi0+YXNvYy5kZWxldGVfcHJpbV90
aW1lcjsKKwkJdG9fdGlja3MgPSBzY3RwX21zZWNzX3RvX3RpY2tzKHN0Y2ItPmFzb2MuaW5pdGlh
bF9ydG8pOwogCQlicmVhazsKIAlkZWZhdWx0OgotCQlTQ1RQREJHKFNDVFBfREVCVUdfVElNRVIx
LCAiJXM6IFVua25vd24gdGltZXIgdHlwZSAlZFxuIiwKLQkJCV9fZnVuY19fLCB0X3R5cGUpOwot
CQlyZXR1cm47Ci0JCWJyZWFrOwotCX0KLQlpZiAoKHRvX3RpY2tzIDw9IDApIHx8ICh0bXIgPT0g
TlVMTCkpIHsKLQkJU0NUUERCRyhTQ1RQX0RFQlVHX1RJTUVSMSwgIiVzOiAlZDpzb2Z0d2FyZSBl
cnJvciB0b190aWNrczolZCB0bXI6JXAgbm90IHNldCA/P1xuIiwKLQkJCV9fZnVuY19fLCB0X3R5
cGUsIHRvX3RpY2tzLCAodm9pZCAqKXRtcik7CisjaWZkZWYgSU5WQVJJQU5UUworCQlwYW5pYygi
VW5rbm93biB0aW1lciB0eXBlICVkIiwgdF90eXBlKTsKKyNlbHNlCiAJCXJldHVybjsKKyNlbmRp
ZgogCX0KKwlLQVNTRVJUKHRtciAhPSBOVUxMLCAoInRtciBpcyBOVUxMIGZvciB0aW1lciB0eXBl
ICVkIiwgdF90eXBlKSk7CisJS0FTU0VSVCh0b190aWNrcyA+IDAsICgidG9fdGlja3MgPT0gMCBm
b3IgdGltZXIgdHlwZSAlZCIsIHRfdHlwZSkpOwogCWlmIChTQ1RQX09TX1RJTUVSX1BFTkRJTkco
JnRtci0+dGltZXIpKSB7CiAJCS8qCi0JCSAqIHdlIGRvIE5PVCBhbGxvdyB5b3UgdG8gaGF2ZSBp
dCBhbHJlYWR5IHJ1bm5pbmcuIGlmIGl0IGlzCi0JCSAqIHdlIGxlYXZlIHRoZSBjdXJyZW50IG9u
ZSB1cCB1bmNoYW5nZWQKKwkJICogV2UgZG8gTk9UIGFsbG93IHlvdSB0byBoYXZlIGl0IGFscmVh
ZHkgcnVubmluZy4gSWYgaXQgaXMsCisJCSAqIHdlIGxlYXZlIHRoZSBjdXJyZW50IG9uZSB1cCB1
bmNoYW5nZWQuCiAJCSAqLworCQlTQ1RQREJHKFNDVFBfREVCVUdfVElNRVIyLAorCQkgICAgICAg
ICJUaW1lciB0eXBlICVkIGFscmVhZHkgcnVubmluZzogaW5wPSVwLCBzdGNiPSVwLCBuZXQ9JXAu
XG4iLAorCQkgICAgICAgICB0X3R5cGUsIGlucCwgc3RjYiwgbmV0KTsKIAkJcmV0dXJuOwogCX0K
LQkvKiBBdCB0aGlzIHBvaW50IHdlIGNhbiBwcm9jZWVkICovCisJLyogQXQgdGhpcyBwb2ludCB3
ZSBjYW4gcHJvY2VlZC4gKi8KIAlpZiAodF90eXBlID09IFNDVFBfVElNRVJfVFlQRV9TRU5EKSB7
CiAJCXN0Y2ItPmFzb2MubnVtX3NlbmRfdGltZXJzX3VwKys7CiAJfQpAQCAtMjMzOSwxNTUgKzI2
NDAsMzAxIEBAIHNjdHBfdGltZXJfc3RhcnQoaW50IHRfdHlwZSwgc3RydWN0IHNjdHBfaW5wY2Ig
KmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCXRtci0+dHlwZSA9IHRfdHlwZTsKIAl0bXIt
PmVwID0gKHZvaWQgKilpbnA7CiAJdG1yLT50Y2IgPSAodm9pZCAqKXN0Y2I7Ci0JdG1yLT5uZXQg
PSAodm9pZCAqKW5ldDsKKwlpZiAodF90eXBlID09IFNDVFBfVElNRVJfVFlQRV9TVFJSRVNFVCkg
eworCQl0bXItPm5ldCA9IE5VTEw7CisJfSBlbHNlIHsKKwkJdG1yLT5uZXQgPSAodm9pZCAqKW5l
dDsKKwl9CiAJdG1yLT5zZWxmID0gKHZvaWQgKil0bXI7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAwMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAl0bXItPnZuZXQgPSAodm9pZCAqKWN1cnZu
ZXQ7CiAjZW5kaWYKLSNpZm5kZWYgX19QYW5kYV9fCiAJdG1yLT50aWNrcyA9IHNjdHBfZ2V0X3Rp
Y2tfY291bnQoKTsKLSNlbmRpZgotCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RBUlQoJnRtci0+dGlt
ZXIsIHRvX3RpY2tzLCBzY3RwX3RpbWVvdXRfaGFuZGxlciwgdG1yKTsKKwlpZiAoU0NUUF9PU19U
SU1FUl9TVEFSVCgmdG1yLT50aW1lciwgdG9fdGlja3MsIHNjdHBfdGltZW91dF9oYW5kbGVyLCB0
bXIpID09IDApIHsKKwkJU0NUUERCRyhTQ1RQX0RFQlVHX1RJTUVSMiwKKwkJICAgICAgICAiVGlt
ZXIgdHlwZSAlZCBzdGFydGVkOiB0aWNrcz0ldSwgaW5wPSVwLCBzdGNiPSVwLCBuZXQ9JXAuXG4i
LAorCQkgICAgICAgICB0X3R5cGUsIHRvX3RpY2tzLCBpbnAsIHN0Y2IsIG5ldCk7CisJCS8qCisJ
CSAqIElmIHRoaXMgaXMgYSBuZXdseSBzY2hlZHVsZWQgY2FsbG91dCwgYXMgb3Bwb3NlZCB0byBh
CisJCSAqIHJlc2NoZWR1bGVkIG9uZSwgaW5jcmVtZW50IHJlbGV2YW50IHJlZmVyZW5jZSBjb3Vu
dHMuCisJCSAqLworCQlpZiAodG1yLT5lcCAhPSBOVUxMKSB7CisJCQlTQ1RQX0lOUF9JTkNSX1JF
RihpbnApOworCQl9CisJCWlmICh0bXItPnRjYiAhPSBOVUxMKSB7CisJCQlhdG9taWNfYWRkX2lu
dCgmc3RjYi0+YXNvYy5yZWZjbnQsIDEpOworCQl9CisJCWlmICh0bXItPm5ldCAhPSBOVUxMKSB7
CisJCQlhdG9taWNfYWRkX2ludCgmbmV0LT5yZWZfY291bnQsIDEpOworCQl9CisJfSBlbHNlIHsK
KwkJLyoKKwkJICogVGhpcyBzaG91bGQgbm90IGhhcHBlbiwgc2luY2Ugd2UgY2hlY2tlZCBmb3Ig
cGVuZGluZworCQkgKiBhYm92ZS4KKwkJICovCisJCVNDVFBEQkcoU0NUUF9ERUJVR19USU1FUjIs
CisJCSAgICAgICAgIlRpbWVyIHR5cGUgJWQgcmVzdGFydGVkOiB0aWNrcz0ldSwgaW5wPSVwLCBz
dGNiPSVwLCBuZXQ9JXAuXG4iLAorCQkgICAgICAgICB0X3R5cGUsIHRvX3RpY2tzLCBpbnAsIHN0
Y2IsIG5ldCk7CisJfQogCXJldHVybjsKIH0KIAorLyotCisgKiBUaGUgZm9sbG93aW5nIHRhYmxl
IHNob3dzIHdoaWNoIHBhcmFtZXRlcnMgbXVzdCBiZSBwcm92aWRlZAorICogd2hlbiBjYWxsaW5n
IHNjdHBfdGltZXJfc3RvcCgpLiBGb3IgcGFyYW1ldGVycyBub3QgYmVpbmcKKyAqIHByb3ZpZGVk
LCBOVUxMIG11c3QgYmUgdXNlZC4KKyAqCisgKiB8TmFtZSAgICAgICAgICAgICAgICAgICAgICAg
ICB8aW5wIHxzdGNifG5ldCB8CisgKiB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0t
LXwtLS0tfC0tLS18CisgKiB8U0NUUF9USU1FUl9UWVBFX1NFTkQgICAgICAgICB8WWVzIHxZZXMg
fFllcyB8CisgKiB8U0NUUF9USU1FUl9UWVBFX0lOSVQgICAgICAgICB8WWVzIHxZZXMgfFllcyB8
CisgKiB8U0NUUF9USU1FUl9UWVBFX1JFQ1YgICAgICAgICB8WWVzIHxZZXMgfE5vICB8CisgKiB8
U0NUUF9USU1FUl9UWVBFX1NIVVRET1dOICAgICB8WWVzIHxZZXMgfFllcyB8CisgKiB8U0NUUF9U
SU1FUl9UWVBFX0hFQVJUQkVBVCAgICB8WWVzIHxZZXMgfFllcyB8CisgKiB8U0NUUF9USU1FUl9U
WVBFX0NPT0tJRSAgICAgICB8WWVzIHxZZXMgfFllcyB8CisgKiB8U0NUUF9USU1FUl9UWVBFX05F
V0NPT0tJRSAgICB8WWVzIHxObyAgfE5vICB8CisgKiB8U0NUUF9USU1FUl9UWVBFX1BBVEhNVFVS
QUlTRSB8WWVzIHxZZXMgfFllcyB8CisgKiB8U0NUUF9USU1FUl9UWVBFX1NIVVRET1dOQUNLICB8
WWVzIHxZZXMgfFllcyB8CisgKiB8U0NUUF9USU1FUl9UWVBFX0FTQ09ORiAgICAgICB8WWVzIHxZ
ZXMgfE5vICB8CisgKiB8U0NUUF9USU1FUl9UWVBFX1NIVVRET1dOR1VBUkR8WWVzIHxZZXMgfE5v
ICB8CisgKiB8U0NUUF9USU1FUl9UWVBFX0FVVE9DTE9TRSAgICB8WWVzIHxZZXMgfE5vICB8Cisg
KiB8U0NUUF9USU1FUl9UWVBFX1NUUlJFU0VUICAgICB8WWVzIHxZZXMgfE5vICB8CisgKiB8U0NU
UF9USU1FUl9UWVBFX0lOUEtJTEwgICAgICB8WWVzIHxObyAgfE5vICB8CisgKiB8U0NUUF9USU1F
Ul9UWVBFX0FTT0NLSUxMICAgICB8WWVzIHxZZXMgfE5vICB8CisgKiB8U0NUUF9USU1FUl9UWVBF
X0FERFJfV1EgICAgICB8Tm8gIHxObyAgfE5vICB8CisgKiB8U0NUUF9USU1FUl9UWVBFX1BSSU1f
REVMRVRFRCB8WWVzIHxZZXMgfE5vICB8CisgKgorICovCisKIHZvaWQKIHNjdHBfdGltZXJfc3Rv
cChpbnQgdF90eXBlLCBzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0
Y2IsCiAgICAgc3RydWN0IHNjdHBfbmV0cyAqbmV0LCB1aW50MzJfdCBmcm9tKQogewogCXN0cnVj
dCBzY3RwX3RpbWVyICp0bXI7CiAKLQlpZiAoKHRfdHlwZSAhPSBTQ1RQX1RJTUVSX1RZUEVfQURE
Ul9XUSkgJiYKLQkgICAgKGlucCA9PSBOVUxMKSkKLQkJcmV0dXJuOwotCi0JdG1yID0gTlVMTDsK
LQlpZiAoc3RjYikgeworCUtBU1NFUlQoc3RjYiA9PSBOVUxMIHx8IHN0Y2ItPnNjdHBfZXAgPT0g
aW5wLAorCSAgICAgICAgKCJzY3RwX3RpbWVyX3N0b3Agb2YgdHlwZSAlZDogaW5wID0gJXAsIHN0
Y2ItPnNjdHBfZXAgJXAiLAorCSAgICAgICAgIHRfdHlwZSwgc3RjYiwgc3RjYi0+c2N0cF9lcCkp
OworCWlmIChzdGNiICE9IE5VTEwpIHsKIAkJU0NUUF9UQ0JfTE9DS19BU1NFUlQoc3RjYik7CisJ
fSBlbHNlIGlmIChpbnAgIT0gTlVMTCkgeworCQlTQ1RQX0lOUF9XTE9DS19BU1NFUlQoaW5wKTsK
Kwl9IGVsc2UgeworCQlTQ1RQX1dRX0FERFJfTE9DS19BU1NFUlQoKTsKIAl9CisJdG1yID0gTlVM
TDsKIAlzd2l0Y2ggKHRfdHlwZSkgewotCWNhc2UgU0NUUF9USU1FUl9UWVBFX0FERFJfV1E6Ci0J
CXRtciA9ICZTQ1RQX0JBU0VfSU5GTyhhZGRyX3dxX3RpbWVyKTsKLQkJYnJlYWs7CiAJY2FzZSBT
Q1RQX1RJTUVSX1RZUEVfU0VORDoKLQkJaWYgKChzdGNiID09IE5VTEwpIHx8IChuZXQgPT0gTlVM
TCkpIHsKKwkJaWYgKChpbnAgPT0gTlVMTCkgfHwgKHN0Y2IgPT0gTlVMTCkgfHwgKG5ldCA9PSBO
VUxMKSkgeworI2lmZGVmIElOVkFSSUFOVFMKKwkJCXBhbmljKCJzY3RwX3RpbWVyX3N0b3Agb2Yg
dHlwZSAlZDogaW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkJICAgICAgdF90eXBl
LCBpbnAsIHN0Y2IsIG5ldCk7CisjZWxzZQogCQkJcmV0dXJuOworI2VuZGlmCiAJCX0KIAkJdG1y
ID0gJm5ldC0+cnh0X3RpbWVyOwogCQlicmVhazsKIAljYXNlIFNDVFBfVElNRVJfVFlQRV9JTklU
OgotCQlpZiAoKHN0Y2IgPT0gTlVMTCkgfHwgKG5ldCA9PSBOVUxMKSkgeworCQlpZiAoKGlucCA9
PSBOVUxMKSB8fCAoc3RjYiA9PSBOVUxMKSB8fCAobmV0ID09IE5VTEwpKSB7CisjaWZkZWYgSU5W
QVJJQU5UUworCQkJcGFuaWMoInNjdHBfdGltZXJfc3RvcCBvZiB0eXBlICVkOiBpbnAgPSAlcCwg
c3RjYiA9ICVwLCBuZXQgPSAlcCIsCisJCQkgICAgICB0X3R5cGUsIGlucCwgc3RjYiwgbmV0KTsK
KyNlbHNlCiAJCQlyZXR1cm47CisjZW5kaWYKIAkJfQogCQl0bXIgPSAmbmV0LT5yeHRfdGltZXI7
CiAJCWJyZWFrOwogCWNhc2UgU0NUUF9USU1FUl9UWVBFX1JFQ1Y6Ci0JCWlmIChzdGNiID09IE5V
TEwpIHsKKwkJaWYgKChpbnAgPT0gTlVMTCkgfHwgKHN0Y2IgPT0gTlVMTCkgfHwgKG5ldCAhPSBO
VUxMKSkgeworI2lmZGVmIElOVkFSSUFOVFMKKwkJCXBhbmljKCJzY3RwX3RpbWVyX3N0b3Agb2Yg
dHlwZSAlZDogaW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkJICAgICAgdF90eXBl
LCBpbnAsIHN0Y2IsIG5ldCk7CisjZWxzZQogCQkJcmV0dXJuOworI2VuZGlmCiAJCX0KIAkJdG1y
ID0gJnN0Y2ItPmFzb2MuZGFja190aW1lcjsKIAkJYnJlYWs7CiAJY2FzZSBTQ1RQX1RJTUVSX1RZ
UEVfU0hVVERPV046Ci0JCWlmICgoc3RjYiA9PSBOVUxMKSB8fCAobmV0ID09IE5VTEwpKSB7CisJ
CWlmICgoaW5wID09IE5VTEwpIHx8IChzdGNiID09IE5VTEwpIHx8IChuZXQgPT0gTlVMTCkpIHsK
KyNpZmRlZiBJTlZBUklBTlRTCisJCQlwYW5pYygic2N0cF90aW1lcl9zdG9wIG9mIHR5cGUgJWQ6
IGlucCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9ICVwIiwKKwkJCSAgICAgIHRfdHlwZSwgaW5wLCBz
dGNiLCBuZXQpOworI2Vsc2UKIAkJCXJldHVybjsKKyNlbmRpZgogCQl9CiAJCXRtciA9ICZuZXQt
PnJ4dF90aW1lcjsKIAkJYnJlYWs7CiAJY2FzZSBTQ1RQX1RJTUVSX1RZUEVfSEVBUlRCRUFUOgot
CQlpZiAoKHN0Y2IgPT0gTlVMTCkgfHwgKG5ldCA9PSBOVUxMKSkgeworCQlpZiAoKGlucCA9PSBO
VUxMKSB8fCAoc3RjYiA9PSBOVUxMKSB8fCAobmV0ID09IE5VTEwpKSB7CisjaWZkZWYgSU5WQVJJ
QU5UUworCQkJcGFuaWMoInNjdHBfdGltZXJfc3RvcCBvZiB0eXBlICVkOiBpbnAgPSAlcCwgc3Rj
YiA9ICVwLCBuZXQgPSAlcCIsCisJCQkgICAgICB0X3R5cGUsIGlucCwgc3RjYiwgbmV0KTsKKyNl
bHNlCiAJCQlyZXR1cm47CisjZW5kaWYKIAkJfQogCQl0bXIgPSAmbmV0LT5oYl90aW1lcjsKIAkJ
YnJlYWs7CiAJY2FzZSBTQ1RQX1RJTUVSX1RZUEVfQ09PS0lFOgotCQlpZiAoKHN0Y2IgPT0gTlVM
TCkgfHwgKG5ldCA9PSBOVUxMKSkgeworCQlpZiAoKGlucCA9PSBOVUxMKSB8fCAoc3RjYiA9PSBO
VUxMKSB8fCAobmV0ID09IE5VTEwpKSB7CisjaWZkZWYgSU5WQVJJQU5UUworCQkJcGFuaWMoInNj
dHBfdGltZXJfc3RvcCBvZiB0eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9ICVwLCBuZXQgPSAlcCIs
CisJCQkgICAgICB0X3R5cGUsIGlucCwgc3RjYiwgbmV0KTsKKyNlbHNlCiAJCQlyZXR1cm47Cisj
ZW5kaWYKIAkJfQogCQl0bXIgPSAmbmV0LT5yeHRfdGltZXI7CiAJCWJyZWFrOwogCWNhc2UgU0NU
UF9USU1FUl9UWVBFX05FV0NPT0tJRToKLQkJLyogbm90aGluZyBuZWVkZWQgYnV0IHRoZSBlbmRw
b2ludCBoZXJlICovCi0JCXRtciA9ICZpbnAtPnNjdHBfZXAuc2lnbmF0dXJlX2NoYW5nZTsKLQkJ
LyoKLQkJICogV2UgcmUtdXNlIHRoZSBuZXdjb29raWUgdGltZXIgZm9yIHRoZSBJTlAga2lsbCB0
aW1lci4gV2UKLQkJICogbXVzdCBhc3N1cmUgdGhhdCB3ZSBkbyBub3Qga2lsbCBpdCBieSBhY2Np
ZGVudC4KLQkJICovCi0JCWJyZWFrOwotCWNhc2UgU0NUUF9USU1FUl9UWVBFX0FTT0NLSUxMOgot
CQkvKgotCQkgKiBTdG9wIHRoZSBhc29jIGtpbGwgdGltZXIuCi0JCSAqLwotCQlpZiAoc3RjYiA9
PSBOVUxMKSB7CisJCWlmICgoaW5wID09IE5VTEwpIHx8IChzdGNiICE9IE5VTEwpIHx8IChuZXQg
IT0gTlVMTCkpIHsKKyNpZmRlZiBJTlZBUklBTlRTCisJCQlwYW5pYygic2N0cF90aW1lcl9zdG9w
IG9mIHR5cGUgJWQ6IGlucCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9ICVwIiwKKwkJCSAgICAgIHRf
dHlwZSwgaW5wLCBzdGNiLCBuZXQpOworI2Vsc2UKIAkJCXJldHVybjsKKyNlbmRpZgogCQl9Ci0J
CXRtciA9ICZzdGNiLT5hc29jLnN0cnJlc2V0X3RpbWVyOwotCQlicmVhazsKLQotCWNhc2UgU0NU
UF9USU1FUl9UWVBFX0lOUEtJTEw6Ci0JCS8qCi0JCSAqIFRoZSBpbnAgaXMgc2V0dXAgdG8gZGll
LiBXZSByZS11c2UgdGhlIHNpZ25hdHVyZV9jaGFnZQotCQkgKiB0aW1lciBzaW5jZSB0aGF0IGhh
cyBzdG9wcGVkIGFuZCB3ZSBhcmUgaW4gdGhlIEdPTkUKLQkJICogc3RhdGUuCi0JCSAqLwogCQl0
bXIgPSAmaW5wLT5zY3RwX2VwLnNpZ25hdHVyZV9jaGFuZ2U7CiAJCWJyZWFrOwogCWNhc2UgU0NU
UF9USU1FUl9UWVBFX1BBVEhNVFVSQUlTRToKLQkJaWYgKChzdGNiID09IE5VTEwpIHx8IChuZXQg
PT0gTlVMTCkpIHsKKwkJaWYgKChpbnAgPT0gTlVMTCkgfHwgKHN0Y2IgPT0gTlVMTCkgfHwgKG5l
dCA9PSBOVUxMKSkgeworI2lmZGVmIElOVkFSSUFOVFMKKwkJCXBhbmljKCJzY3RwX3RpbWVyX3N0
b3Agb2YgdHlwZSAlZDogaW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkJICAgICAg
dF90eXBlLCBpbnAsIHN0Y2IsIG5ldCk7CisjZWxzZQogCQkJcmV0dXJuOworI2VuZGlmCiAJCX0K
IAkJdG1yID0gJm5ldC0+cG10dV90aW1lcjsKIAkJYnJlYWs7CiAJY2FzZSBTQ1RQX1RJTUVSX1RZ
UEVfU0hVVERPV05BQ0s6Ci0JCWlmICgoc3RjYiA9PSBOVUxMKSB8fCAobmV0ID09IE5VTEwpKSB7
CisJCWlmICgoaW5wID09IE5VTEwpIHx8IChzdGNiID09IE5VTEwpIHx8IChuZXQgPT0gTlVMTCkp
IHsKKyNpZmRlZiBJTlZBUklBTlRTCisJCQlwYW5pYygic2N0cF90aW1lcl9zdG9wIG9mIHR5cGUg
JWQ6IGlucCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9ICVwIiwKKwkJCSAgICAgIHRfdHlwZSwgaW5w
LCBzdGNiLCBuZXQpOworI2Vsc2UKIAkJCXJldHVybjsKKyNlbmRpZgogCQl9CiAJCXRtciA9ICZu
ZXQtPnJ4dF90aW1lcjsKIAkJYnJlYWs7CisJY2FzZSBTQ1RQX1RJTUVSX1RZUEVfQVNDT05GOgor
CQlpZiAoKGlucCA9PSBOVUxMKSB8fCAoc3RjYiA9PSBOVUxMKSB8fCAobmV0ICE9IE5VTEwpKSB7
CisjaWZkZWYgSU5WQVJJQU5UUworCQkJcGFuaWMoInNjdHBfdGltZXJfc3RvcCBvZiB0eXBlICVk
OiBpbnAgPSAlcCwgc3RjYiA9ICVwLCBuZXQgPSAlcCIsCisJCQkgICAgICB0X3R5cGUsIGlucCwg
c3RjYiwgbmV0KTsKKyNlbHNlCisJCQlyZXR1cm47CisjZW5kaWYKKwkJfQorCQl0bXIgPSAmc3Rj
Yi0+YXNvYy5hc2NvbmZfdGltZXI7CisJCWJyZWFrOwogCWNhc2UgU0NUUF9USU1FUl9UWVBFX1NI
VVRET1dOR1VBUkQ6Ci0JCWlmIChzdGNiID09IE5VTEwpIHsKKwkJaWYgKChpbnAgPT0gTlVMTCkg
fHwgKHN0Y2IgPT0gTlVMTCkgfHwgKG5ldCAhPSBOVUxMKSkgeworI2lmZGVmIElOVkFSSUFOVFMK
KwkJCXBhbmljKCJzY3RwX3RpbWVyX3N0b3Agb2YgdHlwZSAlZDogaW5wID0gJXAsIHN0Y2IgPSAl
cCwgbmV0ID0gJXAiLAorCQkJICAgICAgdF90eXBlLCBpbnAsIHN0Y2IsIG5ldCk7CisjZWxzZQog
CQkJcmV0dXJuOworI2VuZGlmCiAJCX0KIAkJdG1yID0gJnN0Y2ItPmFzb2Muc2h1dF9ndWFyZF90
aW1lcjsKIAkJYnJlYWs7CisJY2FzZSBTQ1RQX1RJTUVSX1RZUEVfQVVUT0NMT1NFOgorCQlpZiAo
KGlucCA9PSBOVUxMKSB8fCAoc3RjYiA9PSBOVUxMKSB8fCAobmV0ICE9IE5VTEwpKSB7CisjaWZk
ZWYgSU5WQVJJQU5UUworCQkJcGFuaWMoInNjdHBfdGltZXJfc3RvcCBvZiB0eXBlICVkOiBpbnAg
PSAlcCwgc3RjYiA9ICVwLCBuZXQgPSAlcCIsCisJCQkgICAgICB0X3R5cGUsIGlucCwgc3RjYiwg
bmV0KTsKKyNlbHNlCisJCQlyZXR1cm47CisjZW5kaWYKKwkJfQorCQl0bXIgPSAmc3RjYi0+YXNv
Yy5hdXRvY2xvc2VfdGltZXI7CisJCWJyZWFrOwogCWNhc2UgU0NUUF9USU1FUl9UWVBFX1NUUlJF
U0VUOgotCQlpZiAoc3RjYiA9PSBOVUxMKSB7CisJCWlmICgoaW5wID09IE5VTEwpIHx8IChzdGNi
ID09IE5VTEwpIHx8IChuZXQgIT0gTlVMTCkpIHsKKyNpZmRlZiBJTlZBUklBTlRTCisJCQlwYW5p
Yygic2N0cF90aW1lcl9zdG9wIG9mIHR5cGUgJWQ6IGlucCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9
ICVwIiwKKwkJCSAgICAgIHRfdHlwZSwgaW5wLCBzdGNiLCBuZXQpOworI2Vsc2UKIAkJCXJldHVy
bjsKKyNlbmRpZgogCQl9CiAJCXRtciA9ICZzdGNiLT5hc29jLnN0cnJlc2V0X3RpbWVyOwogCQli
cmVhazsKLQljYXNlIFNDVFBfVElNRVJfVFlQRV9BU0NPTkY6Ci0JCWlmIChzdGNiID09IE5VTEwp
IHsKKwljYXNlIFNDVFBfVElNRVJfVFlQRV9JTlBLSUxMOgorCQkvKgorCQkgKiBUaGUgaW5wIGlz
IHNldHVwIHRvIGRpZS4gV2UgcmUtdXNlIHRoZSBzaWduYXR1cmVfY2hhZ2UKKwkJICogdGltZXIg
c2luY2UgdGhhdCBoYXMgc3RvcHBlZCBhbmQgd2UgYXJlIGluIHRoZSBHT05FCisJCSAqIHN0YXRl
LgorCQkgKi8KKwkJaWYgKChpbnAgPT0gTlVMTCkgfHwgKHN0Y2IgIT0gTlVMTCkgfHwgKG5ldCAh
PSBOVUxMKSkgeworI2lmZGVmIElOVkFSSUFOVFMKKwkJCXBhbmljKCJzY3RwX3RpbWVyX3N0b3Ag
b2YgdHlwZSAlZDogaW5wID0gJXAsIHN0Y2IgPSAlcCwgbmV0ID0gJXAiLAorCQkJICAgICAgdF90
eXBlLCBpbnAsIHN0Y2IsIG5ldCk7CisjZWxzZQogCQkJcmV0dXJuOworI2VuZGlmCiAJCX0KLQkJ
dG1yID0gJnN0Y2ItPmFzb2MuYXNjb25mX3RpbWVyOworCQl0bXIgPSAmaW5wLT5zY3RwX2VwLnNp
Z25hdHVyZV9jaGFuZ2U7CiAJCWJyZWFrOwotCWNhc2UgU0NUUF9USU1FUl9UWVBFX1BSSU1fREVM
RVRFRDoKLQkJaWYgKHN0Y2IgPT0gTlVMTCkgeworCWNhc2UgU0NUUF9USU1FUl9UWVBFX0FTT0NL
SUxMOgorCQlpZiAoKGlucCA9PSBOVUxMKSB8fCAoc3RjYiA9PSBOVUxMKSB8fCAobmV0ICE9IE5V
TEwpKSB7CisjaWZkZWYgSU5WQVJJQU5UUworCQkJcGFuaWMoInNjdHBfdGltZXJfc3RvcCBvZiB0
eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9ICVwLCBuZXQgPSAlcCIsCisJCQkgICAgICB0X3R5cGUs
IGlucCwgc3RjYiwgbmV0KTsKKyNlbHNlCiAJCQlyZXR1cm47CisjZW5kaWYKIAkJfQotCQl0bXIg
PSAmc3RjYi0+YXNvYy5kZWxldGVfcHJpbV90aW1lcjsKKwkJdG1yID0gJnN0Y2ItPmFzb2Muc3Ry
cmVzZXRfdGltZXI7CiAJCWJyZWFrOwotCWNhc2UgU0NUUF9USU1FUl9UWVBFX0FVVE9DTE9TRToK
LQkJaWYgKHN0Y2IgPT0gTlVMTCkgeworCWNhc2UgU0NUUF9USU1FUl9UWVBFX0FERFJfV1E6CisJ
CWlmICgoaW5wICE9IE5VTEwpIHx8IChzdGNiICE9IE5VTEwpIHx8IChuZXQgIT0gTlVMTCkpIHsK
KyNpZmRlZiBJTlZBUklBTlRTCisJCQlwYW5pYygic2N0cF90aW1lcl9zdG9wIG9mIHR5cGUgJWQ6
IGlucCA9ICVwLCBzdGNiID0gJXAsIG5ldCA9ICVwIiwKKwkJCSAgICAgIHRfdHlwZSwgaW5wLCBz
dGNiLCBuZXQpOworI2Vsc2UKKwkJCXJldHVybjsKKyNlbmRpZgorCQl9CisJCXRtciA9ICZTQ1RQ
X0JBU0VfSU5GTyhhZGRyX3dxX3RpbWVyKTsKKwkJYnJlYWs7CisJY2FzZSBTQ1RQX1RJTUVSX1RZ
UEVfUFJJTV9ERUxFVEVEOgorCQlpZiAoKGlucCA9PSBOVUxMKSB8fCAoc3RjYiA9PSBOVUxMKSB8
fCAobmV0ICE9IE5VTEwpKSB7CisjaWZkZWYgSU5WQVJJQU5UUworCQkJcGFuaWMoInNjdHBfdGlt
ZXJfc3RvcCBvZiB0eXBlICVkOiBpbnAgPSAlcCwgc3RjYiA9ICVwLCBuZXQgPSAlcCIsCisJCQkg
ICAgICB0X3R5cGUsIGlucCwgc3RjYiwgbmV0KTsKKyNlbHNlCiAJCQlyZXR1cm47CisjZW5kaWYK
IAkJfQotCQl0bXIgPSAmc3RjYi0+YXNvYy5hdXRvY2xvc2VfdGltZXI7CisJCXRtciA9ICZzdGNi
LT5hc29jLmRlbGV0ZV9wcmltX3RpbWVyOwogCQlicmVhazsKIAlkZWZhdWx0OgotCQlTQ1RQREJH
KFNDVFBfREVCVUdfVElNRVIxLCAiJXM6IFVua25vd24gdGltZXIgdHlwZSAlZFxuIiwKLQkJCV9f
ZnVuY19fLCB0X3R5cGUpOwotCQlicmVhazsKLQl9Ci0JaWYgKHRtciA9PSBOVUxMKSB7CisjaWZk
ZWYgSU5WQVJJQU5UUworCQlwYW5pYygiVW5rbm93biB0aW1lciB0eXBlICVkIiwgdF90eXBlKTsK
KyNlbHNlCiAJCXJldHVybjsKKyNlbmRpZgogCX0KLQlpZiAoKHRtci0+dHlwZSAhPSB0X3R5cGUp
ICYmIHRtci0+dHlwZSkgeworCUtBU1NFUlQodG1yICE9IE5VTEwsICgidG1yIGlzIE5VTEwgZm9y
IHRpbWVyIHR5cGUgJWQiLCB0X3R5cGUpKTsKKwlpZiAoKHRtci0+dHlwZSAhPSBTQ1RQX1RJTUVS
X1RZUEVfTk9ORSkgJiYKKwkgICAgKHRtci0+dHlwZSAhPSB0X3R5cGUpKSB7CiAJCS8qCiAJCSAq
IE9rIHdlIGhhdmUgYSB0aW1lciB0aGF0IGlzIHVuZGVyIGpvaW50IHVzZS4gQ29va2llIHRpbWVy
CiAJCSAqIHBlciBjaGFuY2Ugd2l0aCB0aGUgU0VORCB0aW1lci4gV2UgdGhlcmVmb3JlIGFyZSBO
T1QKIAkJICogcnVubmluZyB0aGUgdGltZXIgdGhhdCB0aGUgY2FsbGVyIHdhbnRzIHN0b3BwZWQu
ICBTbyBqdXN0CiAJCSAqIHJldHVybi4KIAkJICovCisJCVNDVFBEQkcoU0NUUF9ERUJVR19USU1F
UjIsCisJCSAgICAgICAgIlNoYXJlZCB0aW1lciB0eXBlICVkIG5vdCBydW5uaW5nOiBpbnA9JXAs
IHN0Y2I9JXAsIG5ldD0lcC5cbiIsCisJCSAgICAgICAgIHRfdHlwZSwgaW5wLCBzdGNiLCBuZXQp
OwogCQlyZXR1cm47CiAJfQogCWlmICgodF90eXBlID09IFNDVFBfVElNRVJfVFlQRV9TRU5EKSAm
JiAoc3RjYiAhPSBOVUxMKSkgewpAQCAtMjQ5OCw3ICsyOTQ1LDQ1IEBAIHNjdHBfdGltZXJfc3Rv
cChpbnQgdF90eXBlLCBzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0
Y2IsCiAJfQogCXRtci0+c2VsZiA9IE5VTEw7CiAJdG1yLT5zdG9wcGVkX2Zyb20gPSBmcm9tOwot
CSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmdG1yLT50aW1lcik7CisJaWYgKFNDVFBfT1NfVElN
RVJfU1RPUCgmdG1yLT50aW1lcikgPT0gMSkgeworCQlLQVNTRVJUKHRtci0+ZXAgPT0gaW5wLAor
CQkgICAgICAgICgic2N0cF90aW1lcl9zdG9wIG9mIHR5cGUgJWQ6IGlucCA9ICVwLCB0bXItPmlu
cCA9ICVwIiwKKwkJICAgICAgICAgdF90eXBlLCBpbnAsIHRtci0+ZXApKTsKKwkJS0FTU0VSVCh0
bXItPnRjYiA9PSBzdGNiLAorCQkgICAgICAgICgic2N0cF90aW1lcl9zdG9wIG9mIHR5cGUgJWQ6
IHN0Y2IgPSAlcCwgdG1yLT5zdGNiID0gJXAiLAorCQkgICAgICAgICB0X3R5cGUsIHN0Y2IsIHRt
ci0+dGNiKSk7CisJCUtBU1NFUlQoKCh0X3R5cGUgPT0gU0NUUF9USU1FUl9UWVBFX0FTQ09ORikg
JiYgKHRtci0+bmV0ICE9IE5VTEwpKSB8fAorCQkgICAgICAgICgodF90eXBlICE9IFNDVFBfVElN
RVJfVFlQRV9BU0NPTkYpICYmICh0bXItPm5ldCA9PSBuZXQpKSwKKwkJICAgICAgICAoInNjdHBf
dGltZXJfc3RvcCBvZiB0eXBlICVkOiBuZXQgPSAlcCwgdG1yLT5uZXQgPSAlcCIsCisJCSAgICAg
ICAgIHRfdHlwZSwgbmV0LCB0bXItPm5ldCkpOworCQlTQ1RQREJHKFNDVFBfREVCVUdfVElNRVIy
LAorCQkgICAgICAgICJUaW1lciB0eXBlICVkIHN0b3BwZWQ6IGlucD0lcCwgc3RjYj0lcCwgbmV0
PSVwLlxuIiwKKwkJICAgICAgICB0X3R5cGUsIGlucCwgc3RjYiwgbmV0KTsKKwkJLyoKKwkJICog
SWYgdGhlIHRpbWVyIHdhcyBhY3R1YWxseSBzdG9wcGVkLCBkZWNyZW1lbnQgcmVmZXJlbmNlIGNv
dW50cworCQkgKiB0aGF0IHdlcmUgaW5jcmVtZW50ZWQgaW4gc2N0cF90aW1lcl9zdGFydCgpLgor
CQkgKi8KKwkJaWYgKHRtci0+ZXAgIT0gTlVMTCkgeworCQkJU0NUUF9JTlBfREVDUl9SRUYoaW5w
KTsKKwkJCXRtci0+ZXAgPSBOVUxMOworCQl9CisJCWlmICh0bXItPnRjYiAhPSBOVUxMKSB7CisJ
CQlhdG9taWNfYWRkX2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIC0xKTsKKwkJCXRtci0+dGNiID0g
TlVMTDsKKwkJfQorCQlpZiAodG1yLT5uZXQgIT0gTlVMTCkgeworCQkJLyoKKwkJCSAqIENhbid0
IHVzZSBuZXQsIHNpbmNlIGl0IGRvZXNuJ3Qgd29yayBmb3IKKwkJCSAqIFNDVFBfVElNRVJfVFlQ
RV9BU0NPTkYuCisJCQkgKi8KKwkJCXNjdHBfZnJlZV9yZW1vdGVfYWRkcigoc3RydWN0IHNjdHBf
bmV0cyAqKXRtci0+bmV0KTsKKwkJCXRtci0+bmV0ID0gTlVMTDsKKwkJfQorCX0gZWxzZSB7CisJ
CVNDVFBEQkcoU0NUUF9ERUJVR19USU1FUjIsCisJCSAgICAgICAgIlRpbWVyIHR5cGUgJWQgbm90
IHN0b3BwZWQ6IGlucD0lcCwgc3RjYj0lcCwgbmV0PSVwLlxuIiwKKwkJICAgICAgICAgdF90eXBl
LCBpbnAsIHN0Y2IsIG5ldCk7CisJfQogCXJldHVybjsKIH0KIApAQCAtMjU0OSwyNSArMzAzNCwy
NCBAQCBzY3RwX210dV9zaXplX3Jlc2V0KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAKIAogLyoK
LSAqIGdpdmVuIGFuIGFzc29jaWF0aW9uIGFuZCBzdGFydGluZyB0aW1lIG9mIHRoZSBjdXJyZW50
IFJUVCBwZXJpb2QgcmV0dXJuCi0gKiBSVE8gaW4gbnVtYmVyIG9mIG1zZWNzIG5ldCBzaG91bGQg
cG9pbnQgdG8gdGhlIGN1cnJlbnQgbmV0d29yaworICogR2l2ZW4gYW4gYXNzb2NpYXRpb24gYW5k
IHN0YXJ0aW5nIHRpbWUgb2YgdGhlIGN1cnJlbnQgUlRUIHBlcmlvZCwgdXBkYXRlCisgKiBSVE8g
aW4gbnVtYmVyIG9mIG1zZWNzLiBuZXQgc2hvdWxkIHBvaW50IHRvIHRoZSBjdXJyZW50IG5ldHdv
cmsuCisgKiBSZXR1cm4gMSwgaWYgYW4gUlRPIHVwZGF0ZSB3YXMgcGVyZm9ybWVkLCByZXR1cm4g
MCBpZiBubyB1cGRhdGUgd2FzCisgKiBwZXJmb3JtZWQgZHVlIHRvIGludmFsaWQgc3RhcnRpbmcg
cG9pbnQuCiAgKi8KIAotdWludDMyX3QKK2ludAogc2N0cF9jYWxjdWxhdGVfcnRvKHN0cnVjdCBz
Y3RwX3RjYiAqc3RjYiwKIAkJICAgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiAJCSAg
IHN0cnVjdCBzY3RwX25ldHMgKm5ldCwKIAkJICAgc3RydWN0IHRpbWV2YWwgKm9sZCwKIAkJICAg
aW50IHJ0dF9mcm9tX3NhY2spCiB7Ci0JLyotCi0JICogZ2l2ZW4gYW4gYXNzb2NpYXRpb24gYW5k
IHRoZSBzdGFydGluZyB0aW1lIG9mIHRoZSBjdXJyZW50IFJUVAotCSAqIHBlcmlvZCAoaW4gdmFs
dWUxL3ZhbHVlMikgcmV0dXJuIFJUTyBpbiBudW1iZXIgb2YgbXNlY3MuCi0JICovCi0JaW50MzJf
dCBydHQ7IC8qIFJUVCBpbiBtcyAqLworCXN0cnVjdCB0aW1ldmFsIG5vdzsKKwl1aW50NjRfdCBy
dHRfdXM7CS8qIFJUVCBpbiB1cyAqLworCWludDMyX3QgcnR0OwkJLyogUlRUIGluIG1zICovCiAJ
dWludDMyX3QgbmV3X3J0bzsKIAlpbnQgZmlyc3RfbWVhc3VyZSA9IDA7Ci0Jc3RydWN0IHRpbWV2
YWwgbm93OwogCiAJLyoqKioqKioqKioqKioqKioqKioqKioqKi8KIAkvKiAxLiBjYWxjdWxhdGUg
bmV3IFJUVCAqLwpAQCAtMjU3OCwxMCArMzA2MiwxOSBAQCBzY3RwX2NhbGN1bGF0ZV9ydG8oc3Ry
dWN0IHNjdHBfdGNiICpzdGNiLAogCX0gZWxzZSB7CiAJCSh2b2lkKVNDVFBfR0VUVElNRV9USU1F
VkFMKCZub3cpOwogCX0KKwlpZiAoKG9sZC0+dHZfc2VjID4gbm93LnR2X3NlYykgfHwKKwkgICAg
KChvbGQtPnR2X3NlYyA9PSBub3cudHZfc2VjKSAmJiAob2xkLT50dl91c2VjID4gbm93LnR2X3Vz
ZWMpKSkgeworCQkvKiBUaGUgc3RhcnRpbmcgcG9pbnQgaXMgaW4gdGhlIGZ1dHVyZS4gKi8KKwkJ
cmV0dXJuICgwKTsKKwl9CiAJdGltZXZhbHN1Yigmbm93LCBvbGQpOworCXJ0dF91cyA9ICh1aW50
NjRfdCkxMDAwMDAwICogKHVpbnQ2NF90KW5vdy50dl9zZWMgKyAodWludDY0X3Qpbm93LnR2X3Vz
ZWM7CisJaWYgKHJ0dF91cyA+IFNDVFBfUlRPX1VQUEVSX0JPVU5EICogMTAwMCkgeworCQkvKiBU
aGUgUlRUIGlzIGxhcmdlciB0aGFuIGEgc2FuZSB2YWx1ZS4gKi8KKwkJcmV0dXJuICgwKTsKKwl9
CiAJLyogc3RvcmUgdGhlIGN1cnJlbnQgUlRUIGluIHVzICovCi0JbmV0LT5ydHQgPSAodWludDY0
X3QpMTAwMDAwMCAqICh1aW50NjRfdClub3cudHZfc2VjICsKLQkgICAgICAgICAgICh1aW50NjRf
dClub3cudHZfdXNlYzsKKwluZXQtPnJ0dCA9IHJ0dF91czsKIAkvKiBjb21wdXRlIHJ0dCBpbiBt
cyAqLwogCXJ0dCA9IChpbnQzMl90KShuZXQtPnJ0dCAvIDEwMDApOwogCWlmICgoYXNvYy0+Y2Nf
ZnVuY3Rpb25zLnNjdHBfcnR0X2NhbGN1bGF0ZWQpICYmIChydHRfZnJvbV9zYWNrID09IFNDVFBf
UlRUX0ZST01fREFUQSkpIHsKQEAgLTI2MTAsNyArMzEwMyw3IEBAIHNjdHBfY2FsY3VsYXRlX3J0
byhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJICogUGFwZXIgIkNvbmdlc3Rpb24gQXZvaWRhbmNl
IGFuZCBDb250cm9sIiwgQW5uZXggQS4KIAkgKgogCSAqIChuZXQtPmxhc3RzYSA+PiBTQ1RQX1JU
VF9TSElGVCkgaXMgdGhlIHNydHQKLQkgKiAobmV0LT5sYXN0c2EgPj4gU0NUUF9SVFRfVkFSX1NI
SUZUKSBpcyB0aGUgcnR0dmFyCisJICogKG5ldC0+bGFzdHN2ID4+IFNDVFBfUlRUX1ZBUl9TSElG
VCkgaXMgdGhlIHJ0dHZhcgogCSAqLwogCWlmIChuZXQtPlJUT19tZWFzdXJlZCkgewogCQlydHQg
LT0gKG5ldC0+bGFzdHNhID4+IFNDVFBfUlRUX1NISUZUKTsKQEAgLTI2NTEsOCArMzE0NCw4IEBA
IHNjdHBfY2FsY3VsYXRlX3J0byhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJaWYgKG5ld19ydG8g
PiBzdGNiLT5hc29jLm1heHJ0bykgewogCQluZXdfcnRvID0gc3RjYi0+YXNvYy5tYXhydG87CiAJ
fQotCS8qIHdlIGFyZSBub3cgcmV0dXJuaW5nIHRoZSBSVE8gKi8KLQlyZXR1cm4gKG5ld19ydG8p
OworCW5ldC0+UlRPID0gbmV3X3J0bzsKKwlyZXR1cm4gKDEpOwogfQogCiAvKgpAQCAtMjc2Niwx
MSArMzI1OSw3IEBAIHNjdHBfcGFkX2xhc3RtYnVmKHN0cnVjdCBtYnVmICptLCBpbnQgcGFkdmFs
LCBzdHJ1Y3QgbWJ1ZiAqbGFzdF9tYnVmKQogCiBzdGF0aWMgdm9pZAogc2N0cF9ub3RpZnlfYXNz
b2NfY2hhbmdlKHVpbnQxNl90IHN0YXRlLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCi0gICAgdWlu
dDE2X3QgZXJyb3IsIHN0cnVjdCBzY3RwX2Fib3J0X2NodW5rICphYm9ydCwgdWludDhfdCBmcm9t
X3BlZXIsIGludCBzb19sb2NrZWQKLSNpZiAhZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVk
KFNDVFBfU09fTE9DS19URVNUSU5HKQotICAgIFNDVFBfVU5VU0VECi0jZW5kaWYKLSAgICApCisg
ICAgdWludDE2X3QgZXJyb3IsIHN0cnVjdCBzY3RwX2Fib3J0X2NodW5rICphYm9ydCwgdWludDhf
dCBmcm9tX3BlZXIsIGludCBzb19sb2NrZWQpCiB7CiAJc3RydWN0IG1idWYgKm1fbm90aWZ5Owog
CXN0cnVjdCBzY3RwX2Fzc29jX2NoYW5nZSAqc2FjOwpAQCAtMjc3OCw3ICszMjY3LDcgQEAgc2N0
cF9ub3RpZnlfYXNzb2NfY2hhbmdlKHVpbnQxNl90IHN0YXRlLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0
Y2IsCiAJdW5zaWduZWQgaW50IG5vdGlmX2xlbjsKIAl1aW50MTZfdCBhYm9ydF9sZW47CiAJdW5z
aWduZWQgaW50IGk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19M
T0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJc3RydWN0IHNvY2tldCAqc287CiAjZW5kaWYKIApAQCAtMjg3Nyw3ICszMzY2LDcg
QEAgc2V0X2Vycm9yOgogCSAgICAoKHN0YXRlID09IFNDVFBfQ09NTV9MT1NUKSB8fCAoc3RhdGUg
PT0gU0NUUF9DQU5UX1NUUl9BU1NPQykpKSB7CiAJCVNPQ0tfTE9DSyhzdGNiLT5zY3RwX3NvY2tl
dCk7CiAJCWlmIChmcm9tX3BlZXIpIHsKLQkJCWlmIChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNv
YykgPT0gU0NUUF9TVEFURV9DT09LSUVfV0FJVCkgeworCQkJaWYgKFNDVFBfR0VUX1NUQVRFKHN0
Y2IpID09IFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQpIHsKIAkJCQlTQ1RQX0xUUkFDRV9FUlJfUkVU
KE5VTEwsIHN0Y2IsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQVVRJTCwgRUNPTk5SRUZVU0VEKTsKIAkJ
CQlzdGNiLT5zY3RwX3NvY2tldC0+c29fZXJyb3IgPSBFQ09OTlJFRlVTRUQ7CiAJCQl9IGVsc2Ug
ewpAQCAtMjg4NSw4ICszMzc0LDggQEAgc2V0X2Vycm9yOgogCQkJCXN0Y2ItPnNjdHBfc29ja2V0
LT5zb19lcnJvciA9IEVDT05OUkVTRVQ7CiAJCQl9CiAJCX0gZWxzZSB7Ci0JCQlpZiAoKFNDVFBf
R0VUX1NUQVRFKCZzdGNiLT5hc29jKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB8fAotCQkJ
ICAgIChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9DT09LSUVfRUNI
T0VEKSkgeworCQkJaWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX0NPT0tJ
RV9XQUlUKSB8fAorCQkJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX0NP
T0tJRV9FQ0hPRUQpKSB7CiAJCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChOVUxMLCBzdGNiLCBOVUxM
LCBTQ1RQX0ZST01fU0NUUFVUSUwsIEVUSU1FRE9VVCk7CiAJCQkJc3RjYi0+c2N0cF9zb2NrZXQt
PnNvX2Vycm9yID0gRVRJTUVET1VUOwogCQkJfSBlbHNlIHsKQEAgLTI4OTcsNyArMzM4Niw3IEBA
IHNldF9lcnJvcjoKIAkJU09DS19VTkxPQ0soc3RjYi0+c2N0cF9zb2NrZXQpOwogCX0KIAkvKiBX
YWtlIEFOWSBzbGVlcGVycyAqLwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFND
VFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogCXNvID0gU0NUUF9JTlBfU08oc3RjYi0+c2N0cF9lcCk7CiAJaWYgKCFz
b19sb2NrZWQpIHsKIAkJYXRvbWljX2FkZF9pbnQoJnN0Y2ItPmFzb2MucmVmY250LCAxKTsKQEAg
LTI5MTgsNyArMzQwNyw3IEBAIHNldF9lcnJvcjoKIAl9CiAJc29yd2FrZXVwKHN0Y2ItPnNjdHBf
c29ja2V0KTsKIAlzb3d3YWtldXAoc3RjYi0+c2N0cF9zb2NrZXQpOwotI2lmIGRlZmluZWQoX19B
UFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19B
UFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWlmICghc29fbG9ja2VkKSB7CiAJ
CVNDVFBfU09DS0VUX1VOTE9DSyhzbywgMSk7CiAJfQpAQCAtMjkyNywxMSArMzQxNiw3IEBAIHNl
dF9lcnJvcjoKIAogc3RhdGljIHZvaWQKIHNjdHBfbm90aWZ5X3BlZXJfYWRkcl9jaGFuZ2Uoc3Ry
dWN0IHNjdHBfdGNiICpzdGNiLCB1aW50MzJfdCBzdGF0ZSwKLSAgICBzdHJ1Y3Qgc29ja2FkZHIg
KnNhLCB1aW50MzJfdCBlcnJvciwgaW50IHNvX2xvY2tlZAotI2lmICFkZWZpbmVkKF9fQVBQTEVf
XykgJiYgIWRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCi0gICAgU0NUUF9VTlVTRUQKLSNl
bmRpZgotKQorICAgIHN0cnVjdCBzb2NrYWRkciAqc2EsIHVpbnQzMl90IGVycm9yLCBpbnQgc29f
bG9ja2VkKQogewogCXN0cnVjdCBtYnVmICptX25vdGlmeTsKIAlzdHJ1Y3Qgc2N0cF9wYWRkcl9j
aGFuZ2UgKnNwYzsKQEAgLTMwMzMsMTEgKzM1MTgsNyBAQCBzY3RwX25vdGlmeV9wZWVyX2FkZHJf
Y2hhbmdlKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgdWludDMyX3Qgc3RhdGUsCiAKIHN0YXRpYyB2
b2lkCiBzY3RwX25vdGlmeV9zZW5kX2ZhaWxlZChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQ4
X3Qgc2VudCwgdWludDMyX3QgZXJyb3IsCi0gICAgc3RydWN0IHNjdHBfdG1pdF9jaHVuayAqY2hr
LCBpbnQgc29fbG9ja2VkCi0jaWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChTQ1RQ
X1NPX0xPQ0tfVEVTVElORykKLSAgICBTQ1RQX1VOVVNFRAotI2VuZGlmCi0gICAgKQorICAgIHN0
cnVjdCBzY3RwX3RtaXRfY2h1bmsgKmNoaywgaW50IHNvX2xvY2tlZCkKIHsKIAlzdHJ1Y3QgbWJ1
ZiAqbV9ub3RpZnk7CiAJc3RydWN0IHNjdHBfc2VuZF9mYWlsZWQgKnNzZjsKQEAgLTMxNjksMTEg
KzM2NTAsNyBAQCBzY3RwX25vdGlmeV9zZW5kX2ZhaWxlZChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2Is
IHVpbnQ4X3Qgc2VudCwgdWludDMyX3QgZXJyb3IsCiAKIHN0YXRpYyB2b2lkCiBzY3RwX25vdGlm
eV9zZW5kX2ZhaWxlZDIoc3RydWN0IHNjdHBfdGNiICpzdGNiLCB1aW50MzJfdCBlcnJvciwKLQkJ
CSBzdHJ1Y3Qgc2N0cF9zdHJlYW1fcXVldWVfcGVuZGluZyAqc3AsIGludCBzb19sb2NrZWQKLSNp
ZiAhZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQot
ICAgICAgICAgICAgICAgICAgICAgICAgIFNDVFBfVU5VU0VECi0jZW5kaWYKLSAgICAgICAgICAg
ICAgICAgICAgICAgICApCisJCQkgc3RydWN0IHNjdHBfc3RyZWFtX3F1ZXVlX3BlbmRpbmcgKnNw
LCBpbnQgc29fbG9ja2VkKQogewogCXN0cnVjdCBtYnVmICptX25vdGlmeTsKIAlzdHJ1Y3Qgc2N0
cF9zZW5kX2ZhaWxlZCAqc3NmOwpAQCAtMzMxOSwxMSArMzc5Niw3IEBAIHNjdHBfbm90aWZ5X2Fk
YXB0YXRpb25fbGF5ZXIoc3RydWN0IHNjdHBfdGNiICpzdGNiKQogLyogVGhpcyBhbHdheXMgbXVz
dCBiZSBjYWxsZWQgd2l0aCB0aGUgcmVhZC1xdWV1ZSBMT0NLRUQgaW4gdGhlIElOUCAqLwogc3Rh
dGljIHZvaWQKIHNjdHBfbm90aWZ5X3BhcnRpYWxfZGVsaXZlcnlfaW5kaWNhdGlvbihzdHJ1Y3Qg
c2N0cF90Y2IgKnN0Y2IsIHVpbnQzMl90IGVycm9yLAotCQkJCQl1aW50MzJfdCB2YWwsIGludCBz
b19sb2NrZWQKLSNpZiAhZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKFNDVFBfU09fTE9D
S19URVNUSU5HKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTQ1RQX1VOVVNFRAotI2Vu
ZGlmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorCQkJCQl1aW50
MzJfdCB2YWwsIGludCBzb19sb2NrZWQpCiB7CiAJc3RydWN0IG1idWYgKm1fbm90aWZ5OwogCXN0
cnVjdCBzY3RwX3BkYXBpX2V2ZW50ICpwZGFwaTsKQEAgLTMzODUsNyArMzg1OCw3IEBAIHNjdHBf
bm90aWZ5X3BhcnRpYWxfZGVsaXZlcnlfaW5kaWNhdGlvbihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2Is
IHVpbnQzMl90IGVycm9yLAogCX0KIAlpZiAoc3RjYi0+c2N0cF9lcCAmJiBzdGNiLT5zY3RwX3Nv
Y2tldCkgewogCQkvKiBUaGlzIHNob3VsZCBhbHdheXMgYmUgdGhlIGNhc2UgKi8KLSNpZiBkZWZp
bmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZp
bmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJc3RydWN0IHNvY2tl
dCAqc287CiAKIAkJc28gPSBTQ1RQX0lOUF9TTyhzdGNiLT5zY3RwX2VwKTsKQEAgLTM0MDIsNyAr
Mzg3NSw3IEBAIHNjdHBfbm90aWZ5X3BhcnRpYWxfZGVsaXZlcnlfaW5kaWNhdGlvbihzdHJ1Y3Qg
c2N0cF90Y2IgKnN0Y2IsIHVpbnQzMl90IGVycm9yLAogCQl9CiAjZW5kaWYKIAkJc2N0cF9zb3J3
YWtldXAoc3RjYi0+c2N0cF9lcCwgc3RjYi0+c2N0cF9zb2NrZXQpOwotI2lmIGRlZmluZWQoX19B
UFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19B
UFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlpZiAoIXNvX2xvY2tlZCkgewog
CQkJU0NUUF9TT0NLRVRfVU5MT0NLKHNvLCAxKTsKIAkJfQpAQCAtMzQyNCw3ICszODk3LDcgQEAg
c2N0cF9ub3RpZnlfc2h1dGRvd25fZXZlbnQoc3RydWN0IHNjdHBfdGNiICpzdGNiKQogCWlmICgo
c3RjYi0+c2N0cF9lcC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJ
ICAgIChzdGNiLT5zY3RwX2VwLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9P
TCkpIHsKIAkJLyogbWFyayBzb2NrZXQgY2xvc2VkIGZvciByZWFkL3dyaXRlIGFuZCB3YWtldXAh
ICovCi0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJ
TkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJ
CXN0cnVjdCBzb2NrZXQgKnNvOwogCiAJCXNvID0gU0NUUF9JTlBfU08oc3RjYi0+c2N0cF9lcCk7
CkBAIC0zNDM5LDcgKzM5MTIsNyBAQCBzY3RwX25vdGlmeV9zaHV0ZG93bl9ldmVudChzdHJ1Y3Qg
c2N0cF90Y2IgKnN0Y2IpCiAJCX0KICNlbmRpZgogCQlzb2NhbnRzZW5kbW9yZShzdGNiLT5zY3Rw
X3NvY2tldCk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NL
X1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAJCVNDVFBfU09DS0VUX1VOTE9DSyhzbywgMSk7CiAjZW5kaWYKIAl9CkBAIC0zNDgyLDEx
ICszOTU1LDcgQEAgc2N0cF9ub3RpZnlfc2h1dGRvd25fZXZlbnQoc3RydWN0IHNjdHBfdGNiICpz
dGNiKQogCiBzdGF0aWMgdm9pZAogc2N0cF9ub3RpZnlfc2VuZGVyX2RyeV9ldmVudChzdHJ1Y3Qg
c2N0cF90Y2IgKnN0Y2IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzb19sb2Nr
ZWQKLSNpZiAhZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKFNDVFBfU09fTE9DS19URVNU
SU5HKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTQ1RQX1VOVVNFRAotI2VuZGlmCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHNvX2xvY2tlZCkKIHsKIAlzdHJ1Y3QgbWJ1ZiAqbV9ub3RpZnk7CiAJc3RydWN0IHNj
dHBfc2VuZGVyX2RyeV9ldmVudCAqZXZlbnQ7CkBAIC0zNzczLDExICs0MjQyLDcgQEAgc2N0cF9u
b3RpZnlfcmVtb3RlX2Vycm9yKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgdWludDE2X3QgZXJyb3Is
IHN0cnVjdCBzY3RwX2Vycm8KIAogdm9pZAogc2N0cF91bHBfbm90aWZ5KHVpbnQzMl90IG5vdGlm
aWNhdGlvbiwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAotICAgIHVpbnQzMl90IGVycm9yLCB2b2lk
ICpkYXRhLCBpbnQgc29fbG9ja2VkCi0jaWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5l
ZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKLSAgICBTQ1RQX1VOVVNFRAotI2VuZGlmCi0gICAgKQor
ICAgIHVpbnQzMl90IGVycm9yLCB2b2lkICpkYXRhLCBpbnQgc29fbG9ja2VkKQogewogCWlmICgo
c3RjYiA9PSBOVUxMKSB8fAogCSAgICAoc3RjYi0+c2N0cF9lcC0+c2N0cF9mbGFncyAmIFNDVFBf
UENCX0ZMQUdTX1NPQ0tFVF9HT05FKSB8fApAQCAtMzc4NiwyMiArNDI1MSwyMiBAQCBzY3RwX3Vs
cF9ub3RpZnkodWludDMyX3Qgbm90aWZpY2F0aW9uLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJ
CS8qIElmIHRoZSBzb2NrZXQgaXMgZ29uZSB3ZSBhcmUgb3V0IG9mIGhlcmUgKi8KIAkJcmV0dXJu
OwogCX0KLSNpZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPiA1
MDAwMDApIHx8IGRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgKGRlZmluZWQoX19GcmVlQlNEX18p
IHx8IGRlZmluZWQoX1dJTjMyKSkgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlpZiAoc3Rj
Yi0+c2N0cF9zb2NrZXQtPnNvX3Jjdi5zYl9zdGF0ZSAmIFNCU19DQU5UUkNWTU9SRSkgewogI2Vs
c2UKIAlpZiAoc3RjYi0+c2N0cF9zb2NrZXQtPnNvX3N0YXRlICYgU1NfQ0FOVFJDVk1PUkUpIHsK
ICNlbmRpZgogCQlyZXR1cm47CiAJfQotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmlu
ZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWlmIChzb19sb2NrZWQp
IHsKIAkJc2N0cF9sb2NrX2Fzc2VydChTQ1RQX0lOUF9TTyhzdGNiLT5zY3RwX2VwKSk7CiAJfSBl
bHNlIHsKIAkJc2N0cF91bmxvY2tfYXNzZXJ0KFNDVFBfSU5QX1NPKHN0Y2ItPnNjdHBfZXApKTsK
IAl9CiAjZW5kaWYKLQlpZiAoKHN0Y2ItPmFzb2Muc3RhdGUgJiBTQ1RQX1NUQVRFX0NPT0tJRV9X
QUlUKSB8fAotCSAgICAoc3RjYi0+YXNvYy5zdGF0ZSAmICBTQ1RQX1NUQVRFX0NPT0tJRV9FQ0hP
RUQpKSB7CisJaWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9X
QUlUKSB8fAorCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9DT09LSUVf
RUNIT0VEKSkgewogCQlpZiAoKG5vdGlmaWNhdGlvbiA9PSBTQ1RQX05PVElGWV9JTlRFUkZBQ0Vf
RE9XTikgfHwKIAkJICAgIChub3RpZmljYXRpb24gPT0gU0NUUF9OT1RJRllfSU5URVJGQUNFX1VQ
KSB8fAogCQkgICAgKG5vdGlmaWNhdGlvbiA9PSBTQ1RQX05PVElGWV9JTlRFUkZBQ0VfQ09ORklS
TUVEKSkgewpAQCAtMzg5MCwxNiArNDM1NSwxNiBAQCBzY3RwX3VscF9ub3RpZnkodWludDMyX3Qg
bm90aWZpY2F0aW9uLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCWJyZWFrOwogCQl9CiAJY2Fz
ZSBTQ1RQX05PVElGWV9BU1NPQ19MT0NfQUJPUlRFRDoKLQkJaWYgKCgoc3RjYi0+YXNvYy5zdGF0
ZSAmIFNDVFBfU1RBVEVfTUFTSykgPT0gU0NUUF9TVEFURV9DT09LSUVfV0FJVCkgfHwKLQkJICAg
ICgoc3RjYi0+YXNvYy5zdGF0ZSAmIFNDVFBfU1RBVEVfTUFTSykgPT0gU0NUUF9TVEFURV9DT09L
SUVfRUNIT0VEKSkgeworCQlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVf
Q09PS0lFX1dBSVQpIHx8CisJCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFU
RV9DT09LSUVfRUNIT0VEKSkgewogCQkJc2N0cF9ub3RpZnlfYXNzb2NfY2hhbmdlKFNDVFBfQ0FO
VF9TVFJfQVNTT0MsIHN0Y2IsIGVycm9yLCBkYXRhLCAwLCBzb19sb2NrZWQpOwogCQl9IGVsc2Ug
ewogCQkJc2N0cF9ub3RpZnlfYXNzb2NfY2hhbmdlKFNDVFBfQ09NTV9MT1NULCBzdGNiLCBlcnJv
ciwgZGF0YSwgMCwgc29fbG9ja2VkKTsKIAkJfQogCQlicmVhazsKIAljYXNlIFNDVFBfTk9USUZZ
X0FTU09DX1JFTV9BQk9SVEVEOgotCQlpZiAoKChzdGNiLT5hc29jLnN0YXRlICYgU0NUUF9TVEFU
RV9NQVNLKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB8fAotCQkgICAgKChzdGNiLT5hc29j
LnN0YXRlICYgU0NUUF9TVEFURV9NQVNLKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9FQ0hPRUQpKSB7
CisJCWlmICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9DT09LSUVfV0FJVCkg
fHwKKwkJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9FQ0hP
RUQpKSB7CiAJCQlzY3RwX25vdGlmeV9hc3NvY19jaGFuZ2UoU0NUUF9DQU5UX1NUUl9BU1NPQywg
c3RjYiwgZXJyb3IsIGRhdGEsIDEsIHNvX2xvY2tlZCk7CiAJCX0gZWxzZSB7CiAJCQlzY3RwX25v
dGlmeV9hc3NvY19jaGFuZ2UoU0NUUF9DT01NX0xPU1QsIHN0Y2IsIGVycm9yLCBkYXRhLCAxLCBz
b19sb2NrZWQpOwpAQCAtMzk3OCwxMSArNDQ0Myw3IEBAIHNjdHBfdWxwX25vdGlmeSh1aW50MzJf
dCBub3RpZmljYXRpb24sIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIH0KIAogdm9pZAotc2N0cF9y
ZXBvcnRfYWxsX291dGJvdW5kKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgdWludDE2X3QgZXJyb3Is
IGludCBob2xkc19sb2NrLCBpbnQgc29fbG9ja2VkCi0jaWYgIWRlZmluZWQoX19BUFBMRV9fKSAm
JiAhZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKLSAgICBTQ1RQX1VOVVNFRAotI2VuZGlm
Ci0gICAgKQorc2N0cF9yZXBvcnRfYWxsX291dGJvdW5kKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwg
dWludDE2X3QgZXJyb3IsIGludCBzb19sb2NrZWQpCiB7CiAJc3RydWN0IHNjdHBfYXNzb2NpYXRp
b24gKmFzb2M7CiAJc3RydWN0IHNjdHBfc3RyZWFtX291dCAqb3V0czsKQEAgLTM5OTgsNyArNDQ1
OSw3IEBAIHNjdHBfcmVwb3J0X2FsbF9vdXRib3VuZChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVp
bnQxNl90IGVycm9yLCBpbnQgaG9sZHNfbG9jaywKIAkJLyogYWxyZWFkeSBiZWluZyBmcmVlZCAq
LwogCQlyZXR1cm47CiAJfQotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19B
UFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWlmIChzb19sb2NrZWQpIHsKIAkJ
c2N0cF9sb2NrX2Fzc2VydChTQ1RQX0lOUF9TTyhzdGNiLT5zY3RwX2VwKSk7CiAJfSBlbHNlIHsK
QEAgLTQwMTEsOSArNDQ3Miw2IEBAIHNjdHBfcmVwb3J0X2FsbF9vdXRib3VuZChzdHJ1Y3Qgc2N0
cF90Y2IgKnN0Y2IsIHVpbnQxNl90IGVycm9yLCBpbnQgaG9sZHNfbG9jaywKIAkJcmV0dXJuOwog
CX0KIAkvKiBub3cgdGhyb3VnaCBhbGwgdGhlIGd1bmsgZnJlZWluZyBjaHVua3MgKi8KLQlpZiAo
aG9sZHNfbG9jayA9PSAwKSB7Ci0JCVNDVFBfVENCX1NFTkRfTE9DSyhzdGNiKTsKLQl9CiAJLyog
c2VudCBxdWV1ZSBTSE9VTEQgYmUgZW1wdHkgKi8KIAlUQUlMUV9GT1JFQUNIX1NBRkUoY2hrLCAm
YXNvYy0+c2VudF9xdWV1ZSwgc2N0cF9uZXh0LCBuY2hrKSB7CiAJCVRBSUxRX1JFTU9WRSgmYXNv
Yy0+c2VudF9xdWV1ZSwgY2hrLCBzY3RwX25leHQpOwpAQCAtNDA2OSw3ICs0NTI3LDcgQEAgc2N0
cF9yZXBvcnRfYWxsX291dGJvdW5kKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgdWludDE2X3QgZXJy
b3IsIGludCBob2xkc19sb2NrLAogCQlUQUlMUV9GT1JFQUNIX1NBRkUoc3AsICZvdXRzLT5vdXRx
dWV1ZSwgbmV4dCwgbnNwKSB7CiAJCQlhdG9taWNfc3VidHJhY3RfaW50KCZhc29jLT5zdHJlYW1f
cXVldWVfY250LCAxKTsKIAkJCVRBSUxRX1JFTU9WRSgmb3V0cy0+b3V0cXVldWUsIHNwLCBuZXh0
KTsKLQkJCXN0Y2ItPmFzb2Muc3NfZnVuY3Rpb25zLnNjdHBfc3NfcmVtb3ZlX2Zyb21fc3RyZWFt
KHN0Y2IsIGFzb2MsIG91dHMsIHNwLCBob2xkc19sb2NrKTsKKwkJCXN0Y2ItPmFzb2Muc3NfZnVu
Y3Rpb25zLnNjdHBfc3NfcmVtb3ZlX2Zyb21fc3RyZWFtKHN0Y2IsIGFzb2MsIG91dHMsIHNwLCAx
KTsKIAkJCXNjdHBfZnJlZV9zcGJ1ZnNwYWNlKHN0Y2IsIGFzb2MsIHNwKTsKIAkJCWlmIChzcC0+
ZGF0YSkgewogCQkJCXNjdHBfdWxwX25vdGlmeShTQ1RQX05PVElGWV9TUEVDSUFMX1NQX0ZBSUws
IHN0Y2IsCkBAIC00MDkwLDI0ICs0NTQ4LDE2IEBAIHNjdHBfcmVwb3J0X2FsbF9vdXRib3VuZChz
dHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQxNl90IGVycm9yLCBpbnQgaG9sZHNfbG9jaywKIAkJ
CS8qc2FfaWdub3JlIEZSRUVEX01FTU9SWSovCiAJCX0KIAl9Ci0KLQlpZiAoaG9sZHNfbG9jayA9
PSAwKSB7Ci0JCVNDVFBfVENCX1NFTkRfVU5MT0NLKHN0Y2IpOwotCX0KIH0KIAogdm9pZAogc2N0
cF9hYm9ydF9ub3RpZmljYXRpb24oc3RydWN0IHNjdHBfdGNiICpzdGNiLCB1aW50OF90IGZyb21f
cGVlciwgdWludDE2X3QgZXJyb3IsCi0JCQlzdHJ1Y3Qgc2N0cF9hYm9ydF9jaHVuayAqYWJvcnQs
IGludCBzb19sb2NrZWQKLSNpZiAhZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKFNDVFBf
U09fTE9DS19URVNUSU5HKQotICAgIFNDVFBfVU5VU0VECi0jZW5kaWYKLSAgICApCisJCQlzdHJ1
Y3Qgc2N0cF9hYm9ydF9jaHVuayAqYWJvcnQsIGludCBzb19sb2NrZWQpCiB7CiAJaWYgKHN0Y2Ig
PT0gTlVMTCkgewogCQlyZXR1cm47CiAJfQotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRl
ZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWlmIChzb19sb2Nr
ZWQpIHsKIAkJc2N0cF9sb2NrX2Fzc2VydChTQ1RQX0lOUF9TTyhzdGNiLT5zY3RwX2VwKSk7CiAJ
fSBlbHNlIHsKQEAgLTQxMjQsOCArNDU3NCwxMSBAQCBzY3RwX2Fib3J0X25vdGlmaWNhdGlvbihz
dHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQ4X3QgZnJvbV9wZWVyLCB1aW50MTZfdCBlcnJvcgog
CSAgICAoc3RjYi0+YXNvYy5zdGF0ZSAmIFNDVFBfU1RBVEVfQ0xPU0VEX1NPQ0tFVCkpIHsKIAkJ
cmV0dXJuOwogCX0KKwlTQ1RQX1RDQl9TRU5EX0xPQ0soc3RjYik7CisJU0NUUF9BRERfU1VCU1RB
VEUoc3RjYiwgU0NUUF9TVEFURV9XQVNfQUJPUlRFRCk7CiAJLyogVGVsbCB0aGVtIHdlIGxvc3Qg
dGhlIGFzb2MgKi8KLQlzY3RwX3JlcG9ydF9hbGxfb3V0Ym91bmQoc3RjYiwgZXJyb3IsIDEsIHNv
X2xvY2tlZCk7CisJc2N0cF9yZXBvcnRfYWxsX291dGJvdW5kKHN0Y2IsIGVycm9yLCBzb19sb2Nr
ZWQpOworCVNDVFBfVENCX1NFTkRfVU5MT0NLKHN0Y2IpOwogCWlmIChmcm9tX3BlZXIpIHsKIAkJ
c2N0cF91bHBfbm90aWZ5KFNDVFBfTk9USUZZX0FTU09DX1JFTV9BQk9SVEVELCBzdGNiLCBlcnJv
ciwgYWJvcnQsIHNvX2xvY2tlZCk7CiAJfSBlbHNlIHsKQEAgLTQxMzgsMTMgKzQ1OTEsMTMgQEAg
c2N0cF9hYm9ydF9hc3NvY2lhdGlvbihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0
cF90Y2IgKnN0Y2IsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtYnVmICptLCBpbnQg
aXBobGVuLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIgKnNyYywgc3Ry
dWN0IHNvY2thZGRyICpkc3QsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY3RwaGRy
ICpzaCwgc3RydWN0IG1idWYgKm9wX2VyciwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQ4X3QgbWZsb3d0eXBlLCB1aW50MzJfdCBtZmxvd2lkLAogI2Vu
ZGlmCiAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHZyZl9pZCwgdWludDE2X3QgcG9y
dCkKIHsKIAl1aW50MzJfdCB2dGFnOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVk
KFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogCXN0cnVjdCBzb2NrZXQgKnNvOwogI2VuZGlmCiAKQEAgLTQxNTQs
MTYgKzQ2MDcsMTUgQEAgc2N0cF9hYm9ydF9hc3NvY2lhdGlvbihzdHJ1Y3Qgc2N0cF9pbnBjYiAq
aW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCXZyZl9pZCA9IHN0Y2ItPmFzb2MudnJmX2lk
OwogCX0KIAlzY3RwX3NlbmRfYWJvcnQobSwgaXBobGVuLCBzcmMsIGRzdCwgc2gsIHZ0YWcsIG9w
X2VyciwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJICAgICAgICAgICAgICAgIG1mbG93dHlwZSwg
bWZsb3dpZCwgaW5wLT5maWJudW0sCiAjZW5kaWYKIAkgICAgICAgICAgICAgICAgdnJmX2lkLCBw
b3J0KTsKIAlpZiAoc3RjYiAhPSBOVUxMKSB7CiAJCS8qIFdlIGhhdmUgYSBUQ0IgdG8gYWJvcnQs
IHNlbmQgbm90aWZpY2F0aW9uIHRvbyAqLwogCQlzY3RwX2Fib3J0X25vdGlmaWNhdGlvbihzdGNi
LCAwLCAwLCBOVUxMLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwotCQlzdGNiLT5hc29jLnN0YXRlIHw9
IFNDVFBfU1RBVEVfV0FTX0FCT1JURUQ7CiAJCS8qIE9rLCBub3cgbGV0cyBmcmVlIGl0ICovCi0j
aWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisj
aWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCXNvID0g
U0NUUF9JTlBfU08oaW5wKTsKIAkJYXRvbWljX2FkZF9pbnQoJnN0Y2ItPmFzb2MucmVmY250LCAx
KTsKIAkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwpAQCAtNDE3MiwxMyArNDYyNCwxMyBAQCBzY3Rw
X2Fib3J0X2Fzc29jaWF0aW9uKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3Rj
YiAqc3RjYiwKIAkJYXRvbWljX3N1YnRyYWN0X2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIDEpOwog
I2VuZGlmCiAJCVNDVFBfU1RBVF9JTkNSX0NPVU5URVIzMihzY3Rwc19hYm9ydGVkKTsKLQkJaWYg
KChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9PUEVOKSB8fAotCQkg
ICAgKFNDVFBfR0VUX1NUQVRFKCZzdGNiLT5hc29jKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JF
Q0VJVkVEKSkgeworCQlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfT1BF
TikgfHwKKwkJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dO
X1JFQ0VJVkVEKSkgewogCQkJU0NUUF9TVEFUX0RFQ1JfR0FVR0UzMihzY3Rwc19jdXJyZXN0YWIp
OwogCQl9CiAJCSh2b2lkKXNjdHBfZnJlZV9hc3NvYyhpbnAsIHN0Y2IsIFNDVFBfTk9STUFMX1BS
T0MsCiAJCSAgICAgICAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUFVUSUwgKyBTQ1RQX0xP
Q180KTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVT
VElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
IAkJU0NUUF9TT0NLRVRfVU5MT0NLKHNvLCAxKTsKICNlbmRpZgogCX0KQEAgLTQyNDgsMjAgKzQ3
MDAsMTYgQEAgc2N0cF9wcmludF9vdXRfdHJhY2tfbG9nKHN0cnVjdCBzY3RwX3RjYiAqc3RjYikK
IHZvaWQKIHNjdHBfYWJvcnRfYW5fYXNzb2NpYXRpb24oc3RydWN0IHNjdHBfaW5wY2IgKmlucCwg
c3RydWN0IHNjdHBfdGNiICpzdGNiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg
bWJ1ZiAqb3BfZXJyLAotICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc29fbG9ja2VkCi0j
aWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgU0NUUF9VTlVTRUQKLSNlbmRpZgotKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgc29fbG9ja2VkKQogewotI2lmIGRlZmluZWQoX19BUFBM
RV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBM
RV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCXN0cnVjdCBzb2NrZXQgKnNvOwogI2Vu
ZGlmCiAKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVT
VElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
IAlzbyA9IFNDVFBfSU5QX1NPKGlucCk7CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykK
KyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlpZiAo
c29fbG9ja2VkKSB7CiAJCXNjdHBfbG9ja19hc3NlcnQoU0NUUF9JTlBfU08oaW5wKSk7CiAJfSBl
bHNlIHsKQEAgLTQyNzIsMTQgKzQ3MjAsMTQgQEAgc2N0cF9hYm9ydF9hbl9hc3NvY2lhdGlvbihz
dHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCS8qIEdvdCB0
byBoYXZlIGEgVENCICovCiAJCWlmIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19T
T0NLRVRfR09ORSkgewogCQkJaWYgKExJU1RfRU1QVFkoJmlucC0+c2N0cF9hc29jX2xpc3QpKSB7
Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJaWYgKCFzb19sb2NrZWQpIHsKIAkJCQkJU0NUUF9TT0NL
RVRfTE9DSyhzbywgMSk7CiAJCQkJfQogI2VuZGlmCiAJCQkJc2N0cF9pbnBjYl9mcmVlKGlucCwg
U0NUUF9GUkVFX1NIT1VMRF9VU0VfQUJPUlQsCiAJCQkJCQlTQ1RQX0NBTExFRF9ESVJFQ1RMWV9O
T0NNUFNFVCk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJaWYgKCFzb19sb2NrZWQpIHsKIAkJCQkJ
U0NUUF9TT0NLRVRfVU5MT0NLKHNvLCAxKTsKIAkJCQl9CkBAIC00Mjg3LDE0ICs0NzM1LDEyIEBA
IHNjdHBfYWJvcnRfYW5fYXNzb2NpYXRpb24oc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0
IHNjdHBfdGNiICpzdGNiLAogCQkJfQogCQl9CiAJCXJldHVybjsKLQl9IGVsc2UgewotCQlzdGNi
LT5hc29jLnN0YXRlIHw9IFNDVFBfU1RBVEVfV0FTX0FCT1JURUQ7CiAJfQogCS8qIG5vdGlmeSB0
aGUgcGVlciAqLwogCXNjdHBfc2VuZF9hYm9ydF90Y2Ioc3RjYiwgb3BfZXJyLCBzb19sb2NrZWQp
OwogCVNDVFBfU1RBVF9JTkNSX0NPVU5URVIzMihzY3Rwc19hYm9ydGVkKTsKLQlpZiAoKFNDVFBf
R0VUX1NUQVRFKCZzdGNiLT5hc29jKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHx8Ci0JICAgIChTQ1RQ
X0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkp
IHsKKwlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfT1BFTikgfHwKKwkg
ICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQp
KSB7CiAJCVNDVFBfU1RBVF9ERUNSX0dBVUdFMzIoc2N0cHNfY3VycmVzdGFiKTsKIAl9CiAJLyog
bm90aWZ5IHRoZSB1bHAgKi8KQEAgLTQzMDUsNyArNDc1MSw3IEBAIHNjdHBfYWJvcnRfYW5fYXNz
b2NpYXRpb24oc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAog
I2lmZGVmIFNDVFBfQVNPQ0xPR19PRl9UU05TCiAJc2N0cF9wcmludF9vdXRfdHJhY2tfbG9nKHN0
Y2IpOwogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19M
T0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJaWYgKCFzb19sb2NrZWQpIHsKIAkJYXRvbWljX2FkZF9pbnQoJnN0Y2ItPmFzb2Mu
cmVmY250LCAxKTsKIAkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwpAQCAtNDMxNiw3ICs0NzYyLDcg
QEAgc2N0cF9hYm9ydF9hbl9hc3NvY2lhdGlvbihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1
Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAjZW5kaWYKIAkodm9pZClzY3RwX2ZyZWVfYXNzb2MoaW5wLCBz
dGNiLCBTQ1RQX05PUk1BTF9QUk9DLAogCSAgICAgICAgICAgICAgICAgICAgICBTQ1RQX0ZST01f
U0NUUFVUSUwgKyBTQ1RQX0xPQ181KTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5l
ZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKIAlpZiAoIXNvX2xvY2tlZCkgewogCQlTQ1RQX1NPQ0tFVF9VTkxP
Q0soc28sIDEpOwogCX0KQEAgLTQzMjgsNyArNDc3NCw3IEBAIHNjdHBfaGFuZGxlX29vdGIoc3Ry
dWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAgICAgICAgICAgICAgICAgIHN0
cnVjdCBzb2NrYWRkciAqc3JjLCBzdHJ1Y3Qgc29ja2FkZHIgKmRzdCwKICAgICAgICAgICAgICAg
ICAgc3RydWN0IHNjdHBoZHIgKnNoLCBzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogICAgICAgICAg
ICAgICAgICBzdHJ1Y3QgbWJ1ZiAqY2F1c2UsCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogICAgICAg
ICAgICAgICAgICB1aW50OF90IG1mbG93dHlwZSwgdWludDMyX3QgbWZsb3dpZCwgdWludDE2X3Qg
ZmlibnVtLAogI2VuZGlmCiAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHZyZl9pZCwgdWludDE2
X3QgcG9ydCkKQEAgLTQzNDEsMTIgKzQ3ODcsMTIgQEAgc2N0cF9oYW5kbGVfb290YihzdHJ1Y3Qg
bWJ1ZiAqbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwKIAkvKiBHZW5lcmF0ZSBhIFRPIGFkZHJl
c3MgZm9yIGZ1dHVyZSByZWZlcmVuY2UgKi8KIAlpZiAoaW5wICYmIChpbnAtPnNjdHBfZmxhZ3Mg
JiBTQ1RQX1BDQl9GTEFHU19TT0NLRVRfR09ORSkpIHsKIAkJaWYgKExJU1RfRU1QVFkoJmlucC0+
c2N0cF9hc29jX2xpc3QpKSB7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChf
X0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQlTQ1RQX1NPQ0tFVF9MT0NL
KFNDVFBfSU5QX1NPKGlucCksIDEpOwogI2VuZGlmCiAJCQlzY3RwX2lucGNiX2ZyZWUoaW5wLCBT
Q1RQX0ZSRUVfU0hPVUxEX1VTRV9BQk9SVCwKIAkJCQkJU0NUUF9DQUxMRURfRElSRUNUTFlfTk9D
TVBTRVQpOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJU0NUUF9TT0NLRVRfVU5MT0NLKFNDVFBfSU5Q
X1NPKGlucCksIDEpOwogI2VuZGlmCiAJCX0KQEAgLTQzNzgsNyArNDgyNCw3IEBAIHNjdHBfaGFu
ZGxlX29vdGIoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZzZXQsCiAJCQlyZXR1
cm47CiAJCWNhc2UgU0NUUF9TSFVURE9XTl9BQ0s6CiAJCQlzY3RwX3NlbmRfc2h1dGRvd25fY29t
cGxldGUyKHNyYywgZHN0LCBzaCwKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1mbG93dHlwZSwgbWZsb3dpZCwgZmlibnVtLAogI2VuZGlmCiAJ
CQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZyZl9pZCwgcG9ydCk7CkBAIC00Mzk0LDcg
KzQ4NDAsNyBAQCBzY3RwX2hhbmRsZV9vb3RiKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBp
bnQgb2Zmc2V0LAogCSAgICAoKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9ibGFja2hvbGUpID09IDEp
ICYmCiAJICAgICAoY29udGFpbnNfaW5pdF9jaHVuayA9PSAwKSkpIHsKIAkJc2N0cF9zZW5kX2Fi
b3J0KG0sIGlwaGxlbiwgc3JjLCBkc3QsIHNoLCAwLCBjYXVzZSwKLSNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiAJCSAgICAgICAgICAgICAgICBtZmxvd3R5cGUsIG1mbG93aWQsIGZpYm51bSwKICNlbmRp
ZgogCQkgICAgICAgICAgICAgICAgdnJmX2lkLCBwb3J0KTsKQEAgLTQ1ODEsNyArNTAyNyw3IEBA
IHZvaWQKIHNjdHBfcHJpbnRfYWRkcmVzcyhzdHJ1Y3Qgc29ja2FkZHIgKnNhKQogewogI2lmZGVm
IElORVQ2Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0g
NzAwMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKIAljaGFyIGlwNmJ1ZltJTkVUNl9BRERSU1RSTEVOXTsKICNlbmRpZgogI2VuZGlmCkBAIC00
NjA2LDcgKzUwNTIsNyBAQCBzY3RwX3ByaW50X2FkZHJlc3Moc3RydWN0IHNvY2thZGRyICpzYSkK
IAkJCSAgICBudG9ocyhzaW42LT5zaW42X3BvcnQpLAogCQkJICAgIHNpbjYtPnNpbjZfc2NvcGVf
aWQpOwogI2Vsc2UKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lv
biA+PSA3MDAwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogCQlTQ1RQX1BSSU5URigiSVB2NiBhZGRyZXNzOiAlczpwb3J0OiVkIHNjb3BlOiV1
XG4iLAogCQkJICAgIGlwNl9zcHJpbnRmKGlwNmJ1ZiwgJnNpbjYtPnNpbjZfYWRkciksCiAJCQkg
ICAgbnRvaHMoc2luNi0+c2luNl9wb3J0KSwKQEAgLTQ2NjQsMjEgKzUxMTAsMTUgQEAgc2N0cF9w
dWxsX29mZl9jb250cm9sX3RvX25ld19pbnAoc3RydWN0IHNjdHBfaW5wY2IgKm9sZF9pbnAsCiAJ
c3RydWN0IHNjdHBfcXVldWVkX3RvX3JlYWQgKmNvbnRyb2wsICpuY3RsOwogCXN0cnVjdCBzY3Rw
X3JlYWRoZWFkIHRtcF9xdWV1ZTsKIAlzdHJ1Y3QgbWJ1ZiAqbTsKLSNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykg
fHwgZGVmaW5lZChfX0FQUExFX18pKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWludCBl
cnJvciA9IDA7CiAjZW5kaWYKIAogCW9sZF9zbyA9IG9sZF9pbnAtPnNjdHBfc29ja2V0OwogCW5l
d19zbyA9IG5ld19pbnAtPnNjdHBfc29ja2V0OwogCVRBSUxRX0lOSVQoJnRtcF9xdWV1ZSk7Ci0j
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pCi0jaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPCA3MDAwMDAKLQlTT0NLQlVGX0xP
Q0soJihvbGRfc28tPnNvX3JjdikpOwotI2VuZGlmCisjaWYgKGRlZmluZWQoX19GcmVlQlNEX18p
IHx8IGRlZmluZWQoX19BUFBMRV9fKSkgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAllcnJv
ciA9IHNibG9jaygmb2xkX3NvLT5zb19yY3YsIHdhaXRmbGFncyk7Ci0jaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPCA3MDAwMDAKLQlTT0NLQlVGX1VOTE9DSygm
KG9sZF9zby0+c29fcmN2KSk7Ci0jZW5kaWYKIAlpZiAoZXJyb3IpIHsKIAkJLyogR2FrLCBjYW4n
dCBnZXQgc2Jsb2NrLCB3ZSBoYXZlIGEgcHJvYmxlbS4KIAkJICogZGF0YSB3aWxsIGJlIGxlZnQg
c3RyYW5kZWQuLiBhbmQgd2UKQEAgLTQ3MTYsMTggKzUxNTYsMTIgQEAgc2N0cF9wdWxsX29mZl9j
b250cm9sX3RvX25ld19pbnAoc3RydWN0IHNjdHBfaW5wY2IgKm9sZF9pbnAsCiAJfQogCVNDVFBf
SU5QX1JFQURfVU5MT0NLKG9sZF9pbnApOwogCS8qIFJlbW92ZSB0aGUgc2ItbG9jayBvbiB0aGUg
b2xkIHNvY2tldCAqLwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJz
aW9uIDwgNzAwMDAwCi0JU09DS0JVRl9MT0NLKCYob2xkX3NvLT5zb19yY3YpKTsKLSNlbmRpZgot
I2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogCXNidW5sb2NrKCZvbGRfc28tPnNvX3JjdiwgMSk7CiAjZW5kaWYK
IAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzYnVubG9jaygmb2xkX3NvLT5zb19yY3YpOwotI2Vu
ZGlmCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPCA3MDAw
MDAKLQlTT0NLQlVGX1VOTE9DSygmKG9sZF9zby0+c29fcmN2KSk7CiAjZW5kaWYKIAkvKiBOb3cg
d2UgbW92ZSB0aGVtIG92ZXIgdG8gdGhlIG5ldyBzb2NrZXQgYnVmZmVyICovCiAJU0NUUF9JTlBf
UkVBRF9MT0NLKG5ld19pbnApOwpAQCAtNDc1MiwxMyArNTE4NiwxMyBAQCB2b2lkCiBzY3RwX3dh
a2V1cF90aGVfcmVhZF9zb2NrZXQoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKICAgICBzdHJ1Y3Qg
c2N0cF90Y2IgKnN0Y2IsCiAgICAgaW50IHNvX2xvY2tlZAotI2lmICFkZWZpbmVkKF9fQVBQTEVf
XykgJiYgIWRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgIShkZWZpbmVkKF9fQVBQ
TEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykpCiAgICAgU0NUUF9VTlVTRUQKICNlbmRp
ZgogKQogewogCWlmICgoaW5wICE9IE5VTEwpICYmIChpbnAtPnNjdHBfc29ja2V0ICE9IE5VTEwp
KSB7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJ
TkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJ
CXN0cnVjdCBzb2NrZXQgKnNvOwogCiAJCXNvID0gU0NUUF9JTlBfU08oaW5wKTsKQEAgLTQ3Nzks
NyArNTIxMyw3IEBAIHNjdHBfd2FrZXVwX3RoZV9yZWFkX3NvY2tldChzdHJ1Y3Qgc2N0cF9pbnBj
YiAqaW5wLAogCQl9CiAjZW5kaWYKIAkJc2N0cF9zb3J3YWtldXAoaW5wLCBpbnAtPnNjdHBfc29j
a2V0KTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVT
VElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
IAkJaWYgKCFzb19sb2NrZWQpIHsKIAkJCVNDVFBfU09DS0VUX1VOTE9DSyhzbywgMSk7CiAJCX0K
QEAgLTQ4OTMsMTEgKzUzMjcsNyBAQCBzY3RwX2FkZF90b19yZWFkcShzdHJ1Y3Qgc2N0cF9pbnBj
YiAqaW5wLAogICAgIHN0cnVjdCBzb2NrYnVmICpzYiwKICAgICBpbnQgZW5kLAogICAgIGludCBp
bnBfcmVhZF9sb2NrX2hlbGQsCi0gICAgaW50IHNvX2xvY2tlZAotI2lmICFkZWZpbmVkKF9fQVBQ
TEVfXykgJiYgIWRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCi0gICAgU0NUUF9VTlVTRUQK
LSNlbmRpZgotICAgICkKKyAgICBpbnQgc29fbG9ja2VkKQogewogCS8qCiAJICogSGVyZSB3ZSBt
dXN0IHBsYWNlIHRoZSBjb250cm9sIG9uIHRoZSBlbmQgb2YgdGhlIHNvY2tldCByZWFkCkBAIC00
OTEzLDcgKzUzNDMsNyBAQCBzY3RwX2FkZF90b19yZWFkcShzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5w
LAogI2VuZGlmCiAJCXJldHVybjsKIAl9Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVm
aW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJaWYgKHNvX2xvY2tl
ZCkgewogCQlzY3RwX2xvY2tfYXNzZXJ0KFNDVFBfSU5QX1NPKGlucCkpOwogCX0gZWxzZSB7CkBA
IC00OTIzLDEyICs1MzUzLDE0IEBAIHNjdHBfYWRkX3RvX3JlYWRxKHN0cnVjdCBzY3RwX2lucGNi
ICppbnAsCiAJaWYgKGlucF9yZWFkX2xvY2tfaGVsZCA9PSAwKQogCQlTQ1RQX0lOUF9SRUFEX0xP
Q0soaW5wKTsKIAlpZiAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfU09DS0VUX0NB
TlRfUkVBRCkgewotCQlzY3RwX2ZyZWVfcmVtb3RlX2FkZHIoY29udHJvbC0+d2hvRnJvbSk7Ci0J
CWlmIChjb250cm9sLT5kYXRhKSB7Ci0JCQlzY3RwX21fZnJlZW0oY29udHJvbC0+ZGF0YSk7Ci0J
CQljb250cm9sLT5kYXRhID0gTlVMTDsKKwkJaWYgKCFjb250cm9sLT5vbl9zdHJtX3EpIHsKKwkJ
CXNjdHBfZnJlZV9yZW1vdGVfYWRkcihjb250cm9sLT53aG9Gcm9tKTsKKwkJCWlmIChjb250cm9s
LT5kYXRhKSB7CisJCQkJc2N0cF9tX2ZyZWVtKGNvbnRyb2wtPmRhdGEpOworCQkJCWNvbnRyb2wt
PmRhdGEgPSBOVUxMOworCQkJfQorCQkJc2N0cF9mcmVlX2FfcmVhZHEoc3RjYiwgY29udHJvbCk7
CiAJCX0KLQkJc2N0cF9mcmVlX2FfcmVhZHEoc3RjYiwgY29udHJvbCk7CiAJCWlmIChpbnBfcmVh
ZF9sb2NrX2hlbGQgPT0gMCkKIAkJCVNDVFBfSU5QX1JFQURfVU5MT0NLKGlucCk7CiAJCXJldHVy
bjsKQEAgLTQ5NzMsOCArNTQwNSwxMCBAQCBzY3RwX2FkZF90b19yZWFkcShzdHJ1Y3Qgc2N0cF9p
bnBjYiAqaW5wLAogCQljb250cm9sLT50YWlsX21idWYgPSBwcmV2OwogCX0gZWxzZSB7CiAJCS8q
IEV2ZXJ5dGhpbmcgZ290IGNvbGxhcHNlZCBvdXQ/PyAqLwotCQlzY3RwX2ZyZWVfcmVtb3RlX2Fk
ZHIoY29udHJvbC0+d2hvRnJvbSk7Ci0JCXNjdHBfZnJlZV9hX3JlYWRxKHN0Y2IsIGNvbnRyb2wp
OworCQlpZiAoIWNvbnRyb2wtPm9uX3N0cm1fcSkgeworCQkJc2N0cF9mcmVlX3JlbW90ZV9hZGRy
KGNvbnRyb2wtPndob0Zyb20pOworCQkJc2N0cF9mcmVlX2FfcmVhZHEoc3RjYiwgY29udHJvbCk7
CisJCX0KIAkJaWYgKGlucF9yZWFkX2xvY2tfaGVsZCA9PSAwKQogCQkJU0NUUF9JTlBfUkVBRF9V
TkxPQ0soaW5wKTsKIAkJcmV0dXJuOwpAQCAtNTA4NSwxMSArNTUxOSw3IEBAIHNjdHBfZnJlZV9i
dWZzcGFjZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICph
c29jLAogCiBpbnQKIHNjdHBfcmVsZWFzZV9wcl9zY3RwX2NodW5rKHN0cnVjdCBzY3RwX3RjYiAq
c3RjYiwgc3RydWN0IHNjdHBfdG1pdF9jaHVuayAqdHAxLAotCQkJICAgdWludDhfdCBzZW50LCBp
bnQgc29fbG9ja2VkCi0jaWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChTQ1RQX1NP
X0xPQ0tfVEVTVElORykKLQkJCSAgIFNDVFBfVU5VU0VECi0jZW5kaWYKLQkpCisJCQkgICB1aW50
OF90IHNlbnQsIGludCBzb19sb2NrZWQpCiB7CiAJc3RydWN0IHNjdHBfc3RyZWFtX291dCAqc3Ry
cTsKIAlzdHJ1Y3Qgc2N0cF90bWl0X2NodW5rICpjaGsgPSBOVUxMLCAqdHAyOwpAQCAtNTEwMSw3
ICs1NTMxLDcgQEAgc2N0cF9yZWxlYXNlX3ByX3NjdHBfY2h1bmsoc3RydWN0IHNjdHBfdGNiICpz
dGNiLCBzdHJ1Y3Qgc2N0cF90bWl0X2NodW5rICp0cDEsCiAJaW50IG5vdGRvbmU7CiAJaW50IGRv
X3dha2V1cF9yb3V0aW5lID0gMDsKIAotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmlu
ZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWlmIChzb19sb2NrZWQp
IHsKIAkJc2N0cF9sb2NrX2Fzc2VydChTQ1RQX0lOUF9TTyhzdGNiLT5zY3RwX2VwKSk7CiAJfSBl
bHNlIHsKQEAgLTUyNTgsNyArNTY4OCw3IEBAIHNjdHBfcmVsZWFzZV9wcl9zY3RwX2NodW5rKHN0
cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfdG1pdF9jaHVuayAqdHAxLAogCQkJCWNo
ay0+cmVjLmRhdGEuY29udGV4dCA9IHNwLT5jb250ZXh0OwogCQkJCWNoay0+ZmxhZ3MgPSBzcC0+
YWN0X2ZsYWdzOwogCQkJCWNoay0+d2hvVG8gPSBOVUxMOwotI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pIHx8IGRlZmluZWQoX19QYW5kYV9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJY2hrLT5yZWMuZGF0YS50c24gPSBhdG9taWNfZmV0
Y2hhZGRfaW50KCZzdGNiLT5hc29jLnNlbmRpbmdfc2VxLCAxKTsKICNlbHNlCiAJCQkJY2hrLT5y
ZWMuZGF0YS50c24gPSBzdGNiLT5hc29jLnNlbmRpbmdfc2VxKys7CkBAIC01MzAyLDcgKzU3MzIs
NyBAQCBzY3RwX3JlbGVhc2VfcHJfc2N0cF9jaHVuayhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0
cnVjdCBzY3RwX3RtaXRfY2h1bmsgKnRwMSwKIAkJU0NUUF9UQ0JfU0VORF9VTkxPQ0soc3RjYik7
CiAJfQogCWlmIChkb193YWtldXBfcm91dGluZSkgewotI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8
fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlzdHJ1Y3Qgc29ja2V0ICpzbzsKIAogCQlzbyA9
IFNDVFBfSU5QX1NPKHN0Y2ItPnNjdHBfZXApOwpAQCAtNTMyMCw3ICs1NzUwLDcgQEAgc2N0cF9y
ZWxlYXNlX3ByX3NjdHBfY2h1bmsoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF90
bWl0X2NodW5rICp0cDEsCiAJCX0KICNlbmRpZgogCQlzY3RwX3Nvd3dha2V1cChzdGNiLT5zY3Rw
X2VwLCBzdGNiLT5zY3RwX3NvY2tldCk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmlu
ZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCiAJCWlmICghc29fbG9ja2VkKSB7CiAJCQlTQ1RQX1NPQ0tFVF9V
TkxPQ0soc28sIDEpOwogCQl9CkBAIC01MzU1LDEwICs1Nzg1LDYgQEAgc2N0cF9maW5kX2lmYV9p
bl9lcChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsCiAJCQlp
ZiAoKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilhZGRyKS0+c2luX2FkZHIuc19hZGRyID09CiAJCQkg
ICAgbGFkZHItPmlmYS0+YWRkcmVzcy5zaW4uc2luX2FkZHIuc19hZGRyKSB7CiAJCQkJLyogZm91
bmQgaGltLiAqLwotCQkJCWlmIChob2xkc19sb2NrID09IDApIHsKLQkJCQkJU0NUUF9JTlBfUlVO
TE9DSyhpbnApOwotCQkJCX0KLQkJCQlyZXR1cm4gKGxhZGRyLT5pZmEpOwogCQkJCWJyZWFrOwog
CQkJfQogCQl9CkBAIC01MzY4LDEwICs1Nzk0LDYgQEAgc2N0cF9maW5kX2lmYV9pbl9lcChzdHJ1
Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsCiAJCQlpZiAoU0NUUDZf
QVJFX0FERFJfRVFVQUwoKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilhZGRyLAogCQkJCQkJICZsYWRk
ci0+aWZhLT5hZGRyZXNzLnNpbjYpKSB7CiAJCQkJLyogZm91bmQgaGltLiAqLwotCQkJCWlmICho
b2xkc19sb2NrID09IDApIHsKLQkJCQkJU0NUUF9JTlBfUlVOTE9DSyhpbnApOwotCQkJCX0KLQkJ
CQlyZXR1cm4gKGxhZGRyLT5pZmEpOwogCQkJCWJyZWFrOwogCQkJfQogCQl9CkBAIC01MzgwLDEw
ICs1ODAyLDYgQEAgc2N0cF9maW5kX2lmYV9pbl9lcChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBz
dHJ1Y3Qgc29ja2FkZHIgKmFkZHIsCiAJCWlmIChhZGRyLT5zYV9mYW1pbHkgPT0gQUZfQ09OTikg
ewogCQkJaWYgKCgoc3RydWN0IHNvY2thZGRyX2Nvbm4gKilhZGRyKS0+c2Nvbm5fYWRkciA9PSBs
YWRkci0+aWZhLT5hZGRyZXNzLnNjb25uLnNjb25uX2FkZHIpIHsKIAkJCQkvKiBmb3VuZCBoaW0u
ICovCi0JCQkJaWYgKGhvbGRzX2xvY2sgPT0gMCkgewotCQkJCQlTQ1RQX0lOUF9SVU5MT0NLKGlu
cCk7Ci0JCQkJfQotCQkJCXJldHVybiAobGFkZHItPmlmYSk7CiAJCQkJYnJlYWs7CiAJCQl9CiAJ
CX0KQEAgLTUzOTIsNyArNTgxMCwxMSBAQCBzY3RwX2ZpbmRfaWZhX2luX2VwKHN0cnVjdCBzY3Rw
X2lucGNiICppbnAsIHN0cnVjdCBzb2NrYWRkciAqYWRkciwKIAlpZiAoaG9sZHNfbG9jayA9PSAw
KSB7CiAJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKIAl9Ci0JcmV0dXJuIChOVUxMKTsKKwlpZiAo
bGFkZHIgIT0gTlVMTCkgeworCQlyZXR1cm4gKGxhZGRyLT5pZmEpOworCX0gZWxzZSB7CisJCXJl
dHVybiAoTlVMTCk7CisJfQogfQogCiB1aW50MzJfdApAQCAtNTQxNSw3ICs1ODM3LDcgQEAgc2N0
cF9nZXRfaWZhX2hhc2hfdmFsKHN0cnVjdCBzb2NrYWRkciAqYWRkcikKIAkJdWludDMyX3QgaGFz
aF9vZl9hZGRyOwogCiAJCXNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKWFkZHI7Ci0jaWYg
IWRlZmluZWQoX19XaW5kb3dzX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0ZyZWVCU0Qp
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0RhcndpbikgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2Vfb3NfV2luZG93cykKKyNpZiAhZGVmaW5lZChfV0lOMzIpICYmICEoZGVmaW5lZChfX0ZyZWVC
U0RfXykgJiYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkgJiYgIWRlZmluZWQoX19BUFBMRV9fKQog
CQloYXNoX29mX2FkZHIgPSAoc2luNi0+c2luNl9hZGRyLnM2X2FkZHIzMlswXSArCiAJCQkJc2lu
Ni0+c2luNl9hZGRyLnM2X2FkZHIzMlsxXSArCiAJCQkJc2luNi0+c2luNl9hZGRyLnM2X2FkZHIz
MlsyXSArCkBAIC01NDU1LDggKzU4NzcsMTEgQEAgc2N0cF9maW5kX2lmYV9ieV9hZGRyKHN0cnVj
dCBzb2NrYWRkciAqYWRkciwgdWludDMyX3QgdnJmX2lkLCBpbnQgaG9sZHNfbG9jaykKIAlzdHJ1
Y3Qgc2N0cF9pZmFsaXN0ICpoYXNoX2hlYWQ7CiAJdWludDMyX3QgaGFzaF9vZl9hZGRyOwogCi0J
aWYgKGhvbGRzX2xvY2sgPT0gMCkKKwlpZiAoaG9sZHNfbG9jayA9PSAwKSB7CiAJCVNDVFBfSVBJ
X0FERFJfUkxPQ0soKTsKKwl9IGVsc2UgeworCQlTQ1RQX0lQSV9BRERSX0xPQ0tfQVNTRVJUKCk7
CisJfQogCiAJdnJmID0gc2N0cF9maW5kX3ZyZih2cmZfaWQpOwogCWlmICh2cmYgPT0gTlVMTCkg
ewpAQCAtNTQ4Nyw5ICs1OTEyLDYgQEAgc2N0cF9maW5kX2lmYV9ieV9hZGRyKHN0cnVjdCBzb2Nr
YWRkciAqYWRkciwgdWludDMyX3QgdnJmX2lkLCBpbnQgaG9sZHNfbG9jaykKIAkJCWlmICgoKHN0
cnVjdCBzb2NrYWRkcl9pbiAqKWFkZHIpLT5zaW5fYWRkci5zX2FkZHIgPT0KIAkJCSAgICBzY3Rw
X2lmYXAtPmFkZHJlc3Muc2luLnNpbl9hZGRyLnNfYWRkcikgewogCQkJCS8qIGZvdW5kIGhpbS4g
Ki8KLQkJCQlpZiAoaG9sZHNfbG9jayA9PSAwKQotCQkJCQlTQ1RQX0lQSV9BRERSX1JVTkxPQ0so
KTsKLQkJCQlyZXR1cm4gKHNjdHBfaWZhcCk7CiAJCQkJYnJlYWs7CiAJCQl9CiAJCX0KQEAgLTU0
OTksOSArNTkyMSw2IEBAIHNjdHBfZmluZF9pZmFfYnlfYWRkcihzdHJ1Y3Qgc29ja2FkZHIgKmFk
ZHIsIHVpbnQzMl90IHZyZl9pZCwgaW50IGhvbGRzX2xvY2spCiAJCQlpZiAoU0NUUDZfQVJFX0FE
RFJfRVFVQUwoKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilhZGRyLAogCQkJCQkJICZzY3RwX2lmYXAt
PmFkZHJlc3Muc2luNikpIHsKIAkJCQkvKiBmb3VuZCBoaW0uICovCi0JCQkJaWYgKGhvbGRzX2xv
Y2sgPT0gMCkKLQkJCQkJU0NUUF9JUElfQUREUl9SVU5MT0NLKCk7Ci0JCQkJcmV0dXJuIChzY3Rw
X2lmYXApOwogCQkJCWJyZWFrOwogCQkJfQogCQl9CkBAIC01NTEwLDkgKzU5MjksNiBAQCBzY3Rw
X2ZpbmRfaWZhX2J5X2FkZHIoc3RydWN0IHNvY2thZGRyICphZGRyLCB1aW50MzJfdCB2cmZfaWQs
IGludCBob2xkc19sb2NrKQogCQlpZiAoYWRkci0+c2FfZmFtaWx5ID09IEFGX0NPTk4pIHsKIAkJ
CWlmICgoKHN0cnVjdCBzb2NrYWRkcl9jb25uICopYWRkciktPnNjb25uX2FkZHIgPT0gc2N0cF9p
ZmFwLT5hZGRyZXNzLnNjb25uLnNjb25uX2FkZHIpIHsKIAkJCQkvKiBmb3VuZCBoaW0uICovCi0J
CQkJaWYgKGhvbGRzX2xvY2sgPT0gMCkKLQkJCQkJU0NUUF9JUElfQUREUl9SVU5MT0NLKCk7Ci0J
CQkJcmV0dXJuIChzY3RwX2lmYXApOwogCQkJCWJyZWFrOwogCQkJfQogCQl9CkBAIC01NTIwLDcg
KzU5MzYsNyBAQCBzY3RwX2ZpbmRfaWZhX2J5X2FkZHIoc3RydWN0IHNvY2thZGRyICphZGRyLCB1
aW50MzJfdCB2cmZfaWQsIGludCBob2xkc19sb2NrKQogCX0KIAlpZiAoaG9sZHNfbG9jayA9PSAw
KQogCQlTQ1RQX0lQSV9BRERSX1JVTkxPQ0soKTsKLQlyZXR1cm4gKE5VTEwpOworCXJldHVybiAo
c2N0cF9pZmFwKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTU1MjgsNiArNTk0NCw5IEBAIHNjdHBf
dXNlcl9yY3ZkKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgdWludDMyX3QgKmZyZWVkX3NvX2Zhciwg
aW50IGhvbGRfcmxvY2ssCiAJICAgICAgIHVpbnQzMl90IHJ3bmRfcmVxKQogewogCS8qIFVzZXIg
cHVsbGVkIHNvbWUgZGF0YSwgZG8gd2UgbmVlZCBhIHJ3bmQgdXBkYXRlPyAqLworI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJc3RydWN0IGVwb2No
X3RyYWNrZXIgZXQ7CisjZW5kaWYKIAlpbnQgcl91bmxvY2tlZCA9IDA7CiAJdWludDMyX3QgZGlm
LCByd25kOwogCXN0cnVjdCBzb2NrZXQgKnNvID0gTlVMTDsKQEAgLTU1MzcsOSArNTk1Niw4IEBA
IHNjdHBfdXNlcl9yY3ZkKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgdWludDMyX3QgKmZyZWVkX3Nv
X2ZhciwgaW50IGhvbGRfcmxvY2ssCiAKIAlhdG9taWNfYWRkX2ludCgmc3RjYi0+YXNvYy5yZWZj
bnQsIDEpOwogCi0JaWYgKHN0Y2ItPmFzb2Muc3RhdGUgJiAoU0NUUF9TVEFURV9BQk9VVF9UT19C
RV9GUkVFRCB8Ci0JCQkJU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCB8Ci0JCQkJU0NUUF9T
VEFURV9TSFVURE9XTl9BQ0tfU0VOVCkpIHsKKwlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09
IFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQpIHx8CisJICAgIChzdGNiLT5hc29jLnN0YXRl
ICYgKFNDVFBfU1RBVEVfQUJPVVRfVE9fQkVfRlJFRUQgfCBTQ1RQX1NUQVRFX1NIVVRET1dOX1JF
Q0VJVkVEKSkpIHsKIAkJLyogUHJlLWNoZWNrIElmIHdlIGFyZSBmcmVlaW5nIG5vIHVwZGF0ZSAq
LwogCQlnb3RvIG5vX2xvY2s7CiAJfQpAQCAtNTU4NCwxMSArNjAwMiwxNyBAQCBzY3RwX3VzZXJf
cmN2ZChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQzMl90ICpmcmVlZF9zb19mYXIsIGludCBo
b2xkX3Jsb2NrLAogCQkJZ290byBvdXQ7CiAJCX0KIAkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfd3Vf
c2Fja3Nfc2VudCk7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKKwkJTkVUX0VQT0NIX0VOVEVSKGV0KTsKKyNlbmRpZgogCQlzY3RwX3NlbmRfc2Fj
ayhzdGNiLCBTQ1RQX1NPX0xPQ0tFRCk7CiAKIAkJc2N0cF9jaHVua19vdXRwdXQoc3RjYi0+c2N0
cF9lcCwgc3RjYiwKIAkJCQkgIFNDVFBfT1VUUFVUX0ZST01fVVNSX1JDVkQsIFNDVFBfU09fTE9D
S0VEKTsKIAkJLyogbWFrZSBzdXJlIG5vIHRpbWVyIGlzIHJ1bm5pbmcgKi8KKyNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQlORVRfRVBPQ0hfRVhJ
VChldCk7CisjZW5kaWYKIAkJc2N0cF90aW1lcl9zdG9wKFNDVFBfVElNRVJfVFlQRV9SRUNWLCBz
dGNiLT5zY3RwX2VwLCBzdGNiLCBOVUxMLAogCQkgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1ND
VFBVVElMICsgU0NUUF9MT0NfNik7CiAJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKQEAgLTU2MjYs
OCArNjA1MCw5IEBAIHNjdHBfc29yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvLAogCSAqCiAJICov
CiAJc3RydWN0IHNjdHBfaW5wY2IgKmlucCA9IE5VTEw7Ci0JaW50IG15X2xlbiA9IDA7Ci0JaW50
IGNwX2xlbiA9IDAsIGVycm9yID0gMDsKKwlzc2l6ZV90IG15X2xlbiA9IDA7CisJc3NpemVfdCBj
cF9sZW4gPSAwOworCWludCBlcnJvciA9IDA7CiAJc3RydWN0IHNjdHBfcXVldWVkX3RvX3JlYWQg
KmNvbnRyb2wgPSBOVUxMLCAqY3RsID0gTlVMTCwgKm54dCA9IE5VTEw7CiAJc3RydWN0IG1idWYg
Km0gPSBOVUxMOwogCXN0cnVjdCBzY3RwX3RjYiAqc3RjYiA9IE5VTEw7CkBAIC01NjM2LDcgKzYw
NjEsNyBAQCBzY3RwX3NvcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzbywKIAlpbnQgb3V0X2ZsYWdz
ID0gMCwgaW5fZmxhZ3MgPSAwOwogCWludCBibG9ja19hbGxvd2VkID0gMTsKIAl1aW50MzJfdCBm
cmVlZF9zb19mYXIgPSAwOwotCXVpbnQzMl90IGNvcGllZF9zb19mYXIgPSAwOworCXNzaXplX3Qg
Y29waWVkX3NvX2ZhciA9IDA7CiAJaW50IGluX2Vlb3JfbW9kZSA9IDA7CiAJaW50IG5vX3Jjdl9u
ZWVkZWQgPSAwOwogCXVpbnQzMl90IHJ3bmRfcmVxID0gMDsKQEAgLTU2NDQsNyArNjA2OSw3IEBA
IHNjdHBfc29yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvLAogCWludCBob2xkX3Jsb2NrID0gMDsK
IAlzc2l6ZV90IHNsZW4gPSAwOwogCXVpbnQzMl90IGhlbGRfbGVuZ3RoID0gMDsKLSNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA3MDAwMDAKKyNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWludCBzb2NrYnVm
X2xvY2sgPSAwOwogI2VuZGlmCiAKQEAgLTU2NjAsNyArNjA4NSw3IEBAIHNjdHBfc29yZWN2bXNn
KHN0cnVjdCBzb2NrZXQgKnNvLAogCX0gZWxzZSB7CiAJCWluX2ZsYWdzID0gMDsKIAl9Ci0jaWYg
ZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAjaWYgZGVmaW5lZChBUFBMRV9MRU9QQVJEKQogCXNsZW4gPSB1aW8tPnVp
b19yZXNpZDsKICNlbHNlCkBAIC01NjgwLDcgKzYxMDUsNyBAQCBzY3RwX3NvcmVjdm1zZyhzdHJ1
Y3Qgc29ja2V0ICpzbywKIAkJcmV0dXJuIChFSU5WQUwpOwogCX0KIAlpZiAoKGluX2ZsYWdzICYg
KE1TR19ET05UV0FJVAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJz
aW9uID4gNTAwMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKIAkJCSB8IE1TR19OQklPCiAjZW5kaWYKIAkJICAgICApKSB8fApAQCAtNTY5OSw3
ICs2MTI0LDcgQEAgc2N0cF9zb3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc28sCiAJCXJ3bmRfcmVx
ID0gU0NUUF9NSU5fUldORDsKIAlpbl9lZW9yX21vZGUgPSBzY3RwX2lzX2ZlYXR1cmVfb24oaW5w
LCBTQ1RQX1BDQl9GTEFHU19FWFBMSUNJVF9FT1IpOwogCWlmIChTQ1RQX0JBU0VfU1lTQ1RMKHNj
dHBfbG9nZ2luZ19sZXZlbCkgJiBTQ1RQX1JFQ1ZfUldORF9MT0dHSU5HX0VOQUJMRSkgewotI2lm
IGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogI2lmIGRlZmluZWQoQVBQTEVfTEVPUEFSRCkKIAkJc2N0cF9taXNjX2lu
dHMoU0NUUF9TT1JFQ1ZfRU5URVIsCiAJCQkgICAgICAgcnduZF9yZXEsIGluX2Vlb3JfbW9kZSwg
c28tPnNvX3Jjdi5zYl9jYywgdWlvLT51aW9fcmVzaWQpOwpAQCAtNTcxMiwxMiArNjEzNywxMiBA
QCBzY3RwX3NvcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJCSAgICAgICByd25kX3JlcSwg
aW5fZWVvcl9tb2RlLCBzby0+c29fcmN2LnNiX2NjLCAodWludDMyX3QpdWlvLT51aW9fcmVzaWQp
OwogI2VuZGlmCiAJfQotI2lmIChkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVy
c2lvbiA8IDcwMDAwMCkgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorI2lmIGRlZmluZWQoX19V
c2Vyc3BhY2VfXykKIAlTT0NLQlVGX0xPQ0soJnNvLT5zb19yY3YpOwogCWhvbGRfc2Jsb2NrID0g
MTsKICNlbmRpZgogCWlmIChTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbG9nZ2luZ19sZXZlbCkgJlND
VFBfUkVDVl9SV05EX0xPR0dJTkdfRU5BQkxFKSB7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pCisj
aWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaWYgZGVm
aW5lZChBUFBMRV9MRU9QQVJEKQogCQlzY3RwX21pc2NfaW50cyhTQ1RQX1NPUkVDVl9FTlRFUlBM
LAogCQkJICAgICAgIHJ3bmRfcmVxLCBibG9ja19hbGxvd2VkLCBzby0+c29fcmN2LnNiX2NjLCB1
aW8tPnVpb19yZXNpZCk7CkBAIC01NzMxLDM0ICs2MTU2LDMwIEBAIHNjdHBfc29yZWN2bXNnKHN0
cnVjdCBzb2NrZXQgKnNvLAogI2VuZGlmCiAJfQogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCisj
aWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJZXJyb3Ig
PSBzYmxvY2soJnNvLT5zb19yY3YsIFNCTE9DS1dBSVQoaW5fZmxhZ3MpKTsKICNlbmRpZgogCi0j
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCWVycm9yID0gc2Jsb2NrKCZzby0+c29fcmN2LCAoYmxvY2tf
YWxsb3dlZCA/IFNCTF9XQUlUIDogMCkpOwogI2VuZGlmCiAJaWYgKGVycm9yKSB7CiAJCWdvdG8g
cmVsZWFzZV91bmxvY2tlZDsKIAl9Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVl
QlNEX3ZlcnNpb24gPj0gNzAwMDAwCi0gICAgICAgIHNvY2tidWZfbG9jayA9IDE7CisjaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwlzb2NrYnVmX2xv
Y2sgPSAxOwogI2VuZGlmCiAgcmVzdGFydDoKLSNpZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
X19GcmVlQlNEX3ZlcnNpb24gPCA3MDAwMDApIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNp
ZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJaWYgKGhvbGRfc2Jsb2NrID09IDApIHsKIAkJU09D
S0JVRl9MT0NLKCZzby0+c29fcmN2KTsKIAkJaG9sZF9zYmxvY2sgPSAxOwogCX0KICNlbmRpZgot
I2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogCXNidW5sb2NrKCZzby0+c29fcmN2LCAxKTsKICNlbmRpZgogCi0j
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPCA3MDAwMDAKLQlz
YnVubG9jaygmc28tPnNvX3Jjdik7Ci0jZW5kaWYKLQogIHJlc3RhcnRfbm9zYmxvY2tzOgogCWlm
IChob2xkX3NibG9jayA9PSAwKSB7CiAJCVNPQ0tCVUZfTE9DSygmc28tPnNvX3Jjdik7CkBAIC01
NzY4LDcgKzYxODksNyBAQCBzY3RwX3NvcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzbywKIAkgICAg
KGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1NPQ0tFVF9BTExHT05FKSkgewogCQln
b3RvIG91dDsKIAl9Ci0jaWYgKGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJz
aW9uID4gNTAwMDAwKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmIChkZWZpbmVkKF9fRnJl
ZUJTRF9fKSB8fCBkZWZpbmVkKF9XSU4zMikpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJ
aWYgKChzby0+c29fcmN2LnNiX3N0YXRlICYgU0JTX0NBTlRSQ1ZNT1JFKSAmJiAoc28tPnNvX3Jj
di5zYl9jYyA9PSAwKSkgewogI2Vsc2UKIAlpZiAoKHNvLT5zb19zdGF0ZSAmIFNTX0NBTlRSQ1ZN
T1JFKSAmJiAoc28tPnNvX3Jjdi5zYl9jYyA9PSAwKSkgewpAQCAtNTgzNiwxMSArNjI1Nyw4IEBA
IHNjdHBfc29yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvLAogCQlTT0NLQlVGX1VOTE9DSygmc28t
PnNvX3Jjdik7CiAJCWhvbGRfc2Jsb2NrID0gMDsKIAl9Ci0jaWYgZGVmaW5lZChfX0FQUExFX18p
CisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJZXJy
b3IgPSBzYmxvY2soJnNvLT5zb19yY3YsIFNCTE9DS1dBSVQoaW5fZmxhZ3MpKTsKLSNlbmRpZgot
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uIDwgNzAwMDAwCi0J
ZXJyb3IgPSBzYmxvY2soJnNvLT5zb19yY3YsIChibG9ja19hbGxvd2VkID8gTV9XQUlUT0sgOiAw
KSk7CiAjZW5kaWYKIAkvKiB3ZSBwb3NzaWJseSBoYXZlIGRhdGEgd2UgY2FuIHJlYWQgKi8KIAkv
KnNhX2lnbm9yZSBGUkVFRF9NRU1PUlkqLwpAQCAtNjAzMyw3ICs2NDUxLDcgQEAgc2N0cF9zb3Jl
Y3Ztc2coc3RydWN0IHNvY2tldCAqc28sCiAJCQkgKiB3ZSB0aGVuIHdpbGwgZ28gdG8gdGhlIHNj
dHBfdXNlcl9yY3ZkKCkgdGhhdCB3aWxsCiAJCQkgKiBub3QgbG9jayB1bnRpbCBpdCBLTk9XcyBp
dCBNVVNUIHNlbmQgYSBXVVAtU0FDSy4KIAkJCSAqLwotCQkJZnJlZWRfc29fZmFyID0gc3RjYi0+
ZnJlZWRfYnlfc29yY3Zfc2luY2VsYXN0OworCQkJZnJlZWRfc29fZmFyID0gKHVpbnQzMl90KXN0
Y2ItPmZyZWVkX2J5X3NvcmN2X3NpbmNlbGFzdDsKIAkJCXN0Y2ItPmZyZWVkX2J5X3NvcmN2X3Np
bmNlbGFzdCA9IDA7CiAJCX0KIAl9CkBAIC02MTkzLDE2ICs2NjExLDE2IEBAIHNjdHBfc29yZWN2
bXNnKHN0cnVjdCBzb2NrZXQgKnNvLAogCQltID0gY29udHJvbC0+ZGF0YTsKIAkJd2hpbGUgKG0p
IHsKIAkJCS8qIE1vdmUgb3V0IGFsbCB3ZSBjYW4gKi8KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykK
KyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZiBk
ZWZpbmVkKEFQUExFX0xFT1BBUkQpCi0JCQljcF9sZW4gPSAoaW50KXVpby0+dWlvX3Jlc2lkOwor
CQkJY3BfbGVuID0gdWlvLT51aW9fcmVzaWQ7CiAjZWxzZQotCQkJY3BfbGVuID0gKGludCl1aW9f
cmVzaWQodWlvKTsKKwkJCWNwX2xlbiA9IHVpb19yZXNpZCh1aW8pOwogI2VuZGlmCiAjZWxzZQot
CQkJY3BfbGVuID0gKGludCl1aW8tPnVpb19yZXNpZDsKKwkJCWNwX2xlbiA9IHVpby0+dWlvX3Jl
c2lkOwogI2VuZGlmCi0JCQlteV9sZW4gPSAoaW50KVNDVFBfQlVGX0xFTihtKTsKKwkJCW15X2xl
biA9IFNDVFBfQlVGX0xFTihtKTsKIAkJCWlmIChjcF9sZW4gPiBteV9sZW4pIHsKIAkJCQkvKiBu
b3QgZW5vdWdoIGluIHRoaXMgYnVmICovCiAJCQkJY3BfbGVuID0gbXlfbGVuOwpAQCAtNjIxMSwx
MiArNjYyOSwxMiBAQCBzY3RwX3NvcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJCQlTQ1RQ
X0lOUF9SRUFEX1VOTE9DSyhpbnApOwogCQkJCWhvbGRfcmxvY2sgPSAwOwogCQkJfQotI2lmIGRl
ZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogCQkJU0NUUF9TT0NLRVRfVU5MT0NLKHNvLCAwKTsKICNlbmRpZgogCQkJaWYg
KGNwX2xlbiA+IDApCi0JCQkJZXJyb3IgPSB1aW9tb3ZlKG10b2QobSwgY2hhciAqKSwgY3BfbGVu
LCB1aW8pOwotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorCQkJCWVycm9yID0gdWlvbW92ZShtdG9k
KG0sIGNoYXIgKiksIChpbnQpY3BfbGVuLCB1aW8pOworI2lmIGRlZmluZWQoX19BUFBMRV9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJU0NUUF9TT0NLRVRfTE9DSyhzbywgMCk7CiAj
ZW5kaWYKIAkJCS8qIHJlLXJlYWQgKi8KQEAgLTYyNjMsNyArNjY4MSw3IEBAIHNjdHBfc29yZWN2
bXNnKHN0cnVjdCBzb2NrZXQgKnNvLAogCQkJCQkJICAgY29udHJvbC0+ZG9fbm90X3JlZl9zdGNi
P05VTEw6c3RjYiwgU0NUUF9MT0dfU0JSRVNVTFQsIDApOwogCQkJCQl9CiAJCQkJCWNvcGllZF9z
b19mYXIgKz0gY3BfbGVuOwotCQkJCQlmcmVlZF9zb19mYXIgKz0gY3BfbGVuOworCQkJCQlmcmVl
ZF9zb19mYXIgKz0gKHVpbnQzMl90KWNwX2xlbjsKIAkJCQkJZnJlZWRfc29fZmFyICs9IE1TSVpF
OwogCQkJCQlhdG9taWNfc3VidHJhY3RfaW50KCZjb250cm9sLT5sZW5ndGgsIGNwX2xlbik7CiAJ
CQkJCWNvbnRyb2wtPmRhdGEgPSBzY3RwX21fZnJlZShtKTsKQEAgLTYyNzEsNyArNjY4OSw3IEBA
IHNjdHBfc29yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvLAogCQkJCQkvKiBiZWVuIHRocm91Z2gg
aXQgYWxsLCBtdXN0IGhvbGQgc2IgbG9jayBvayB0byBudWxsIHRhaWwgKi8KIAkJCQkJaWYgKGNv
bnRyb2wtPmRhdGEgPT0gTlVMTCkgewogI2lmZGVmIElOVkFSSUFOVFMKLSNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJCQkJCQlpZiAoKGNvbnRyb2wtPmVuZF9hZGRlZCA9PSAwKSB8fAogCQkJCQkJICAg
IChUQUlMUV9ORVhUKGNvbnRyb2wsIG5leHQpID09IE5VTEwpKSB7CiAJCQkJCQkJLyogSWYgdGhl
IGVuZCBpcyBub3QgYWRkZWQsIE9SIHRoZQpAQCAtNjI5OCw5ICs2NzE2LDkgQEAgc2N0cF9zb3Jl
Y3Ztc2coc3RydWN0IHNvY2tldCAqc28sCiAJCQkJfQogCQkJCWlmICgoaW5fZmxhZ3MgJiBNU0df
UEVFSykgPT0gMCkgewogCQkJCQlTQ1RQX0JVRl9SRVNWX1VGKG0sIGNwX2xlbik7Ci0JCQkJCVND
VFBfQlVGX0xFTihtKSAtPSBjcF9sZW47CisJCQkJCVNDVFBfQlVGX0xFTihtKSAtPSAoaW50KWNw
X2xlbjsKIAkJCQkJaWYgKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9sb2dnaW5nX2xldmVsKSAmIFND
VFBfU0JfTE9HR0lOR19FTkFCTEUpIHsKLQkJCQkJCXNjdHBfc2Jsb2coJnNvLT5zb19yY3YsIGNv
bnRyb2wtPmRvX25vdF9yZWZfc3RjYj9OVUxMOnN0Y2IsIFNDVFBfTE9HX1NCRlJFRSwgY3BfbGVu
KTsKKwkJCQkJCXNjdHBfc2Jsb2coJnNvLT5zb19yY3YsIGNvbnRyb2wtPmRvX25vdF9yZWZfc3Rj
Yj9OVUxMOnN0Y2IsIFNDVFBfTE9HX1NCRlJFRSwgKGludCljcF9sZW4pOwogCQkJCQl9CiAJCQkJ
CWF0b21pY19zdWJ0cmFjdF9pbnQoJnNvLT5zb19yY3Yuc2JfY2MsIGNwX2xlbik7CiAJCQkJCWlm
ICgoY29udHJvbC0+ZG9fbm90X3JlZl9zdGNiID09IDApICYmCkBAIC02MzA4LDcgKzY3MjYsNyBA
QCBzY3RwX3NvcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJCQkJCWF0b21pY19zdWJ0cmFj
dF9pbnQoJnN0Y2ItPmFzb2Muc2JfY2MsIGNwX2xlbik7CiAJCQkJCX0KIAkJCQkJY29waWVkX3Nv
X2ZhciArPSBjcF9sZW47Ci0JCQkJCWZyZWVkX3NvX2ZhciArPSBjcF9sZW47CisJCQkJCWZyZWVk
X3NvX2ZhciArPSAodWludDMyX3QpY3BfbGVuOwogCQkJCQlmcmVlZF9zb19mYXIgKz0gTVNJWkU7
CiAJCQkJCWlmIChTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbG9nZ2luZ19sZXZlbCkgJiBTQ1RQX1NC
X0xPR0dJTkdfRU5BQkxFKSB7CiAJCQkJCQlzY3RwX3NibG9nKCZzby0+c29fcmN2LCBjb250cm9s
LT5kb19ub3RfcmVmX3N0Y2I/TlVMTDpzdGNiLApAQCAtNjMxOSw3ICs2NzM3LDcgQEAgc2N0cF9z
b3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc28sCiAJCQkJCWNvcGllZF9zb19mYXIgKz0gY3BfbGVu
OwogCQkJCX0KIAkJCX0KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZiBkZWZpbmVkKEFQUExFX0xFT1BB
UkQpCiAJCQlpZiAoKG91dF9mbGFncyAmIE1TR19FT1IpIHx8ICh1aW8tPnVpb19yZXNpZCA9PSAw
KSkgewogI2Vsc2UKQEAgLTY0MDUsNyArNjgyMyw3IEBAIHNjdHBfc29yZWN2bXNnKHN0cnVjdCBz
b2NrZXQgKnNvLAogCQlpZiAob3V0X2ZsYWdzICYgTVNHX0VPUikgewogCQkJZ290byByZWxlYXNl
OwogCQl9Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAjaWYgZGVmaW5lZChBUFBMRV9MRU9QQVJEKQogCQlp
ZiAoKHVpby0+dWlvX3Jlc2lkID09IDApIHx8CiAjZWxzZQpAQCAtNjQxNSw3ICs2ODMzLDcgQEAg
c2N0cF9zb3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc28sCiAJCWlmICgodWlvLT51aW9fcmVzaWQg
PT0gMCkgfHwKICNlbmRpZgogCQkgICAgKChpbl9lZW9yX21vZGUpICYmCi0JCSAgICAgKGNvcGll
ZF9zb19mYXIgPj0gKHVpbnQzMl90KW1heChzby0+c29fcmN2LnNiX2xvd2F0LCAxKSkpKSB7CisJ
CSAgICAgKGNvcGllZF9zb19mYXIgPj0gbWF4KHNvLT5zb19yY3Yuc2JfbG93YXQsIDEpKSkpIHsK
IAkJCWdvdG8gcmVsZWFzZTsKIAkJfQogCQkvKgpAQCAtNjQ0Myw3ICs2ODYxLDcgQEAgc2N0cF9z
b3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc28sCiAJCQlzY3RwX3VzZXJfcmN2ZChzdGNiLCAmZnJl
ZWRfc29fZmFyLCBob2xkX3Jsb2NrLCByd25kX3JlcSk7CiAJCX0KIAl3YWl0X3NvbWVfbW9yZToK
LSNpZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPiA1MDAwMDAp
IHx8IGRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgKGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRl
ZmluZWQoX1dJTjMyKSkgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJaWYgKHNvLT5zb19y
Y3Yuc2Jfc3RhdGUgJiBTQlNfQ0FOVFJDVk1PUkUpIHsKIAkJCWdvdG8gcmVsZWFzZTsKIAkJfQpA
QCAtNjQ2OCwxMyArNjg4NiwxMyBAQCBzY3RwX3NvcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzbywK
IAkJICAgIChzY3RwX2lzX2ZlYXR1cmVfb24oaW5wLCBTQ1RQX1BDQl9GTEFHU19GUkFHX0lOVEVS
TEVBVkUpKSkgewogCQkJZ290byByZWxlYXNlOwogCQl9Ci0jaWYgZGVmaW5lZChfX0FQUExFX18p
CisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCXNi
dW5sb2NrKCZzby0+c29fcmN2LCAxKTsKICNlbmRpZgogCQlpZiAoc28tPnNvX3Jjdi5zYl9jYyA8
PSBjb250cm9sLT5oZWxkX2xlbmd0aCkgewogCQkJZXJyb3IgPSBzYndhaXQoJnNvLT5zb19yY3Yp
OwogCQkJaWYgKGVycm9yKSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJCWdvdG8gcmVsZWFz
ZTsKICNlbHNlCiAJCQkJZ290byByZWxlYXNlX3VubG9ja2VkOwpAQCAtNjQ4Miw3ICs2OTAwLDcg
QEAgc2N0cF9zb3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc28sCiAJCQl9CiAJCQljb250cm9sLT5o
ZWxkX2xlbmd0aCA9IDA7CiAJCX0KLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVk
KF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJZXJyb3IgPSBzYmxvY2so
JnNvLT5zb19yY3YsIFNCTE9DS1dBSVQoaW5fZmxhZ3MpKTsKICNlbmRpZgogCQlpZiAoaG9sZF9z
YmxvY2spIHsKQEAgLTY1NTQsNyArNjk3Miw3IEBAIHNjdHBfc29yZWN2bXNnKHN0cnVjdCBzb2Nr
ZXQgKnNvLAogCQlpZiAoY29udHJvbC0+c3BlY19mbGFncyAmIE1fTk9USUZJQ0FUSU9OKSB7CiAJ
CQlvdXRfZmxhZ3MgfD0gTVNHX05PVElGSUNBVElPTjsKIAkJfQotI2lmIGRlZmluZWQoX19BUFBM
RV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
I2lmIGRlZmluZWQoQVBQTEVfTEVPUEFSRCkKIAkJdWlvLT51aW9fcmVzaWQgPSBjb250cm9sLT5s
ZW5ndGg7CiAjZWxzZQpAQCAtNjU3MSw3ICs2OTg5LDcgQEAgc2N0cF9zb3JlY3Ztc2coc3RydWN0
IHNvY2tldCAqc28sCiAJCQkJICAgY29udHJvbC0+ZG9fbm90X3JlZl9zdGNiP05VTEw6c3RjYiwg
U0NUUF9MT0dfU0JGUkVFLCBTQ1RQX0JVRl9MRU4obSkpOwogCQkJfQogCQkJc2N0cF9zYmZyZWUo
Y29udHJvbCwgc3RjYiwgJnNvLT5zb19yY3YsIG0pOwotCQkJZnJlZWRfc29fZmFyICs9IFNDVFBf
QlVGX0xFTihtKTsKKwkJCWZyZWVkX3NvX2ZhciArPSAodWludDMyX3QpU0NUUF9CVUZfTEVOKG0p
OwogCQkJZnJlZWRfc29fZmFyICs9IE1TSVpFOwogCQkJaWYgKFNDVFBfQkFTRV9TWVNDVEwoc2N0
cF9sb2dnaW5nX2xldmVsKSAmIFNDVFBfU0JfTE9HR0lOR19FTkFCTEUpIHsKIAkJCQlzY3RwX3Ni
bG9nKCZzby0+c29fcmN2LApAQCAtNjU5MSw3ICs3MDA5LDcgQEAgc2N0cF9zb3JlY3Ztc2coc3Ry
dWN0IHNvY2tldCAqc28sCiAJCVNDVFBfSU5QX1JFQURfVU5MT0NLKGlucCk7CiAJCWhvbGRfcmxv
Y2sgPSAwOwogCX0KLSNpZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNp
b24gPCA3MDAwMDApIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiBkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAJaWYgKGhvbGRfc2Jsb2NrID09IDApIHsKIAkJU09DS0JVRl9MT0NLKCZzby0+
c29fcmN2KTsKIAkJaG9sZF9zYmxvY2sgPSAxOwpAQCAtNjYwMiwxNSArNzAyMCwxMyBAQCBzY3Rw
X3NvcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJaG9sZF9zYmxvY2sgPSAwOwogCX0KICNl
bmRpZgotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCXNidW5sb2NrKCZzby0+c29fcmN2LCAxKTsKICNlbmRp
ZgogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCXNidW5sb2NrKCZzby0+c29fcmN2KTsKLSNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA3MDAwMDAKIAlzb2Nr
YnVmX2xvY2sgPSAwOwotI2VuZGlmCiAjZW5kaWYKIAogIHJlbGVhc2VfdW5sb2NrZWQ6CkBAIC02
NjQzLDcgKzcwNTksNyBAQCBzY3RwX3NvcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzbywKIAlpZiAo
aG9sZF9zYmxvY2spIHsKIAkJU09DS0JVRl9VTkxPQ0soJnNvLT5zb19yY3YpOwogCX0KLSNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA3MDAwMDAKKyNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWlmIChzb2Nr
YnVmX2xvY2spIHsKIAkJc2J1bmxvY2soJnNvLT5zb19yY3YpOwogCX0KQEAgLTY2NzIsNyArNzA4
OCw3IEBAIHNjdHBfc29yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvLAogCQlpZiAoc3RjYikgewog
CQkJc2N0cF9taXNjX2ludHMoU0NUUF9TT1JFQ1ZfRE9ORSwKIAkJCQkgICAgICAgZnJlZWRfc29f
ZmFyLAotI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2lmIGRlZmluZWQoQVBQTEVfTEVPUEFSRCkKIAkJCQkg
ICAgICAgKCh1aW8pID8gKHNsZW4gLSB1aW8tPnVpb19yZXNpZCkgOiBzbGVuKSwKICNlbHNlCkBA
IC02Njg2LDcgKzcxMDIsNyBAQCBzY3RwX3NvcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJ
fSBlbHNlIHsKIAkJCXNjdHBfbWlzY19pbnRzKFNDVFBfU09SRUNWX0RPTkUsCiAJCQkJICAgICAg
IGZyZWVkX3NvX2ZhciwKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQ
TEVfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZiBkZWZpbmVkKEFQUExFX0xFT1BB
UkQpCiAJCQkJICAgICAgICgodWlvKSA/IChzbGVuIC0gdWlvLT51aW9fcmVzaWQpIDogc2xlbiks
CiAjZWxzZQpAQCAtNjczNSw3ICs3MTUxLDcgQEAgc2N0cF9keW5hbWljX3NldF9wcmltYXJ5KHN0
cnVjdCBzb2NrYWRkciAqc2EsIHVpbnQzMl90IHZyZl9pZCkKIAlzdHJ1Y3Qgc2N0cF9pZmEgKmlm
YTsKIAlzdHJ1Y3Qgc2N0cF9sYWRkciAqd2k7CiAKLQlpZmEgPSBzY3RwX2ZpbmRfaWZhX2J5X2Fk
ZHIoc2EsIHZyZl9pZCwgMCk7CisJaWZhID0gc2N0cF9maW5kX2lmYV9ieV9hZGRyKHNhLCB2cmZf
aWQsIFNDVFBfQUREUl9OT1RfTE9DS0VEKTsKIAlpZiAoaWZhID09IE5VTEwpIHsKIAkJU0NUUF9M
VFJBQ0VfRVJSX1JFVChOVUxMLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUFVUSUwsIEVBRERS
Tk9UQVZBSUwpOwogCQlyZXR1cm4gKEVBRERSTk9UQVZBSUwpOwpAQCAtNjgxNiw3ICs3MjMyLDcg
QEAgc2N0cF9zb3JlY2VpdmUoCXN0cnVjdCBzb2NrZXQgKnNvLAogCQlmcm9tbGVuID0gMDsKIAl9
CiAKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlTQ1RQX1NPQ0tFVF9MT0NLKHNvLCAxKTsKICNlbmRpZgog
CWlmIChmaWxsaW5nX3NpbmZvKSB7CkBAIC02ODQ4LDcgKzcyNjQsNyBAQCBzY3RwX3NvcmVjZWl2
ZSgJc3RydWN0IHNvY2tldCAqc28sCiAjZWxzZQogCQlpZiAoZnJvbSkgewogI2VuZGlmCi0jaWYg
KGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID4gNTAwMDAwKSB8fCBk
ZWZpbmVkKF9fV2luZG93c19fKQorI2lmIChkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVk
KF9XSU4zMikpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkqcHNhID0gc29kdXBzb2Nr
YWRkcihmcm9tLCBNX05PV0FJVCk7CiAjZWxzZQogCQkJKnBzYSA9IGR1cF9zb2NrYWRkcihmcm9t
LCBtcDAgPT0gMCk7CkBAIC02ODU3LDE0ICs3MjczLDE0IEBAIHNjdHBfc29yZWNlaXZlKAlzdHJ1
Y3Qgc29ja2V0ICpzbywKIAkJCSpwc2EgPSBOVUxMOwogCQl9CiAJfQotI2lmIGRlZmluZWQoX19B
UFBMRV9fKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCVNDVFBfU09DS0VUX1VOTE9DSyhzbywgMSk7CiAjZW5kaWYKIAlyZXR1cm4gKGVycm9yKTsK
IH0KIAogCi0jaWYgKGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uIDwg
NjAzMDAwKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogLyoKICAqIEdlbmVyYWwgcm91dGluZSB0byBhbGxvY2F0
ZSBhIGhhc2ggdGFibGUgd2l0aCBjb250cm9sIG9mIG1lbW9yeSBmbGFncy4KICAqIGlzIGluIDcu
MCBhbmQgYmV5b25kIGZvciBzdXJlIDotKQpAQCAtNzEwMywzMSArNzUxOSwzNCBAQCBzY3RwX2Nv
bm5lY3R4X2hlbHBlcl9hZGQoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc29ja2FkZHIg
KmFkZHIsCiAJcmV0dXJuIChhZGRlZCk7CiB9CiAKLXN0cnVjdCBzY3RwX3RjYiAqCitpbnQKIHNj
dHBfY29ubmVjdHhfaGVscGVyX2ZpbmQoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RydWN0IHNv
Y2thZGRyICphZGRyLAotCQkJICB1bnNpZ25lZCBpbnQgKnRvdGFkZHIsCi0JCQkgIHVuc2lnbmVk
IGludCAqbnVtX3Y0LCB1bnNpZ25lZCBpbnQgKm51bV92NiwgaW50ICplcnJvciwKLQkJCSAgdW5z
aWduZWQgaW50IGxpbWl0LCBpbnQgKmJhZF9hZGRyKQorCQkJICB1bnNpZ25lZCBpbnQgdG90YWRk
ciwKKwkJCSAgdW5zaWduZWQgaW50ICpudW1fdjQsIHVuc2lnbmVkIGludCAqbnVtX3Y2LAorCQkJ
ICB1bnNpZ25lZCBpbnQgbGltaXQpCiB7CiAJc3RydWN0IHNvY2thZGRyICpzYTsKLQlzdHJ1Y3Qg
c2N0cF90Y2IgKnN0Y2IgPSBOVUxMOworCXN0cnVjdCBzY3RwX3RjYiAqc3RjYjsKIAl1bnNpZ25l
ZCBpbnQgaW5jciwgYXQsIGk7CiAKIAlhdCA9IDA7CiAJc2EgPSBhZGRyOwotCSplcnJvciA9ICpu
dW1fdjYgPSAqbnVtX3Y0ID0gMDsKKwkqbnVtX3Y2ID0gKm51bV92NCA9IDA7CiAJLyogYWNjb3Vu
dCBhbmQgdmFsaWRhdGUgYWRkcmVzc2VzICovCi0JZm9yIChpID0gMDsgaSA8ICp0b3RhZGRyOyBp
KyspIHsKKwlpZiAodG90YWRkciA9PSAwKSB7CisJCXJldHVybiAoRUlOVkFMKTsKKwl9CisJZm9y
IChpID0gMDsgaSA8IHRvdGFkZHI7IGkrKykgeworCQlpZiAoYXQgKyBzaXplb2Yoc3RydWN0IHNv
Y2thZGRyKSA+IGxpbWl0KSB7CisJCQlyZXR1cm4gKEVJTlZBTCk7CisJCX0KIAkJc3dpdGNoIChz
YS0+c2FfZmFtaWx5KSB7CiAjaWZkZWYgSU5FVAogCQljYXNlIEFGX0lORVQ6CiAJCQlpbmNyID0g
KHVuc2lnbmVkIGludClzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKTsKICNpZmRlZiBIQVZFX1NB
X0xFTgogCQkJaWYgKHNhLT5zYV9sZW4gIT0gaW5jcikgewotCQkJCVNDVFBfTFRSQUNFX0VSUl9S
RVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUFVUSUwsIEVJTlZBTCk7Ci0JCQkJKmVy
cm9yID0gRUlOVkFMOwotCQkJCSpiYWRfYWRkciA9IDE7Ci0JCQkJcmV0dXJuIChOVUxMKTsKKwkJ
CQlyZXR1cm4gKEVJTlZBTCk7CiAJCQl9CiAjZW5kaWYKIAkJCSgqbnVtX3Y0KSArPSAxOwpAQCAt
NzE0MSwxOCArNzU2MCwxMiBAQCBzY3RwX2Nvbm5lY3R4X2hlbHBlcl9maW5kKHN0cnVjdCBzY3Rw
X2lucGNiICppbnAsIHN0cnVjdCBzb2NrYWRkciAqYWRkciwKIAkJCXNpbjYgPSAoc3RydWN0IHNv
Y2thZGRyX2luNiAqKXNhOwogCQkJaWYgKElONl9JU19BRERSX1Y0TUFQUEVEKCZzaW42LT5zaW42
X2FkZHIpKSB7CiAJCQkJLyogTXVzdCBiZSBub24tbWFwcGVkIGZvciBjb25uZWN0eCAqLwotCQkJ
CVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUFVUSUws
IEVJTlZBTCk7Ci0JCQkJKmVycm9yID0gRUlOVkFMOwotCQkJCSpiYWRfYWRkciA9IDE7Ci0JCQkJ
cmV0dXJuIChOVUxMKTsKKwkJCQlyZXR1cm4gKEVJTlZBTCk7CiAJCQl9CiAJCQlpbmNyID0gKHVu
c2lnbmVkIGludClzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNik7CiAjaWZkZWYgSEFWRV9TQV9M
RU4KIAkJCWlmIChzYS0+c2FfbGVuICE9IGluY3IpIHsKLQkJCQlTQ1RQX0xUUkFDRV9FUlJfUkVU
KGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBVVElMLCBFSU5WQUwpOwotCQkJCSplcnJv
ciA9IEVJTlZBTDsKLQkJCQkqYmFkX2FkZHIgPSAxOwotCQkJCXJldHVybiAoTlVMTCk7CisJCQkJ
cmV0dXJuIChFSU5WQUwpOwogCQkJfQogI2VuZGlmCiAJCQkoKm51bV92NikgKz0gMTsKQEAgLTcx
NjAsMjkgKzc1NzMsMjMgQEAgc2N0cF9jb25uZWN0eF9oZWxwZXJfZmluZChzdHJ1Y3Qgc2N0cF9p
bnBjYiAqaW5wLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsCiAJCX0KICNlbmRpZgogCQlkZWZhdWx0
OgotCQkJKnRvdGFkZHIgPSBpOwotCQkJaW5jciA9IDA7Ci0JCQkvKiB3ZSBhcmUgZG9uZSAqLwot
CQkJYnJlYWs7CisJCQlyZXR1cm4gKEVJTlZBTCk7CiAJCX0KLQkJaWYgKGkgPT0gKnRvdGFkZHIp
IHsKLQkJCWJyZWFrOworCQlpZiAoKGF0ICsgaW5jcikgPiBsaW1pdCkgeworCQkJcmV0dXJuIChF
SU5WQUwpOwogCQl9CiAJCVNDVFBfSU5QX0lOQ1JfUkVGKGlucCk7CiAJCXN0Y2IgPSBzY3RwX2Zp
bmRhc3NvY2lhdGlvbl9lcF9hZGRyKCZpbnAsIHNhLCBOVUxMLCBOVUxMLCBOVUxMKTsKIAkJaWYg
KHN0Y2IgIT0gTlVMTCkgewotCQkJLyogQWxyZWFkeSBoYXZlIG9yIGFtIGJyaW5nIHVwIGFuIGFz
c29jaWF0aW9uICovCi0JCQlyZXR1cm4gKHN0Y2IpOworCQkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2Ip
OworCQkJcmV0dXJuIChFQUxSRUFEWSk7CiAJCX0gZWxzZSB7CiAJCQlTQ1RQX0lOUF9ERUNSX1JF
RihpbnApOwogCQl9Ci0JCWlmICgoYXQgKyBpbmNyKSA+IGxpbWl0KSB7Ci0JCQkqdG90YWRkciA9
IGk7Ci0JCQlicmVhazsKLQkJfQorCQlhdCArPSBpbmNyOwogCQlzYSA9IChzdHJ1Y3Qgc29ja2Fk
ZHIgKikoKGNhZGRyX3Qpc2EgKyBpbmNyKTsKIAl9Ci0JcmV0dXJuICgoc3RydWN0IHNjdHBfdGNi
ICopTlVMTCk7CisJcmV0dXJuICgwKTsKIH0KIAogLyoKQEAgLTcxOTEsMTYgKzc1OTgsMjQgQEAg
c2N0cF9jb25uZWN0eF9oZWxwZXJfZmluZChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qg
c29ja2FkZHIgKmFkZHIsCiAgKi8KIHZvaWQKIHNjdHBfYmluZHhfYWRkX2FkZHJlc3Moc3RydWN0
IHNvY2tldCAqc28sIHN0cnVjdCBzY3RwX2lucGNiICppbnAsCi0JCSAgICAgICBzdHJ1Y3Qgc29j
a2FkZHIgKnNhLCBzY3RwX2Fzc29jX3QgYXNzb2NfaWQsCi0JCSAgICAgICB1aW50MzJfdCB2cmZf
aWQsIGludCAqZXJyb3IsIHZvaWQgKnApCisgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBz
b2NrYWRkciAqc2EsIHVpbnQzMl90IHZyZl9pZCwgaW50ICplcnJvciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgdm9pZCAqcCkKIHsKLQlzdHJ1Y3Qgc29ja2FkZHIgKmFkZHJfdG91c2U7CiAjaWYg
ZGVmaW5lZChJTkVUKSAmJiBkZWZpbmVkKElORVQ2KQogCXN0cnVjdCBzb2NrYWRkcl9pbiBzaW47
CiAjZW5kaWYKKyNpZmRlZiBJTkVUNgorCXN0cnVjdCBzb2NrYWRkcl9pbjYgKnNpbjY7CisjZW5k
aWYKKyNpZmRlZiBJTkVUCisJc3RydWN0IHNvY2thZGRyX2luICpzaW5wOworI2VuZGlmCisJc3Ry
dWN0IHNvY2thZGRyICphZGRyX3RvX3VzZTsKKwlzdHJ1Y3Qgc2N0cF9pbnBjYiAqbGVwOwogI2lm
ZGVmIFNDVFBfTVZSRgotCWludCBpLCBmbmQgPSAwOworCWludCBpOwogI2VuZGlmCisJdWludDE2
X3QgcG9ydDsKIAogCS8qIHNlZSBpZiB3ZSdyZSBib3VuZCBhbGwgYWxyZWFkeSEgKi8KIAlpZiAo
aW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfQk9VTkRBTEwpIHsKQEAgLTcyMTIsMjMg
Kzc2MjcsMTggQEAgc2N0cF9iaW5keF9hZGRfYWRkcmVzcyhzdHJ1Y3Qgc29ja2V0ICpzbywgc3Ry
dWN0IHNjdHBfaW5wY2IgKmlucCwKIAkvKiBJcyB0aGUgVlJGIG9uZSB3ZSBoYXZlICovCiAJZm9y
IChpID0gMDsgaSA8IGlucC0+bnVtX3ZyZnM7IGkrKykgewogCQlpZiAodnJmX2lkID09IGlucC0+
bV92cmZfaWRzW2ldKSB7Ci0JCQlmbmQgPSAxOwogCQkJYnJlYWs7CiAJCX0KIAl9Ci0JaWYgKCFm
bmQpIHsKKwlpZiAoaSA9PSBpbnAtPm51bV92cmZzKSB7CiAJCVNDVFBfTFRSQUNFX0VSUl9SRVQo
aW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUFVUSUwsIEVJTlZBTCk7CiAJCSplcnJvciA9
IEVJTlZBTDsKIAkJcmV0dXJuOwogCX0KICNlbmRpZgotCWFkZHJfdG91c2UgPSBzYTsKKwlzd2l0
Y2ggKHNhLT5zYV9mYW1pbHkpIHsKICNpZmRlZiBJTkVUNgotCWlmIChzYS0+c2FfZmFtaWx5ID09
IEFGX0lORVQ2KSB7Ci0jaWZkZWYgSU5FVAotCQlzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW42Owot
Ci0jZW5kaWYKKwljYXNlIEFGX0lORVQ2OgogI2lmZGVmIEhBVkVfU0FfTEVOCiAJCWlmIChzYS0+
c2FfbGVuICE9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSkgewogCQkJU0NUUF9MVFJBQ0Vf
RVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQVVRJTCwgRUlOVkFMKTsKQEAg
LTcyNDIsOCArNzY1Miw5IEBAIHNjdHBfYmluZHhfYWRkX2FkZHJlc3Moc3RydWN0IHNvY2tldCAq
c28sIHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCQkqZXJyb3IgPSBFSU5WQUw7CiAJCQlyZXR1
cm47CiAJCX0KKwkJc2luNiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopc2E7CisJCXBvcnQgPSBz
aW42LT5zaW42X3BvcnQ7CiAjaWZkZWYgSU5FVAotCQlzaW42ID0gKHN0cnVjdCBzb2NrYWRkcl9p
bjYgKilhZGRyX3RvdXNlOwogCQlpZiAoSU42X0lTX0FERFJfVjRNQVBQRUQoJnNpbjYtPnNpbjZf
YWRkcikpIHsKIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfQk9VTkRf
VjYpICYmCiAJCQkgICAgU0NUUF9JUFY2X1Y2T05MWShpbnApKSB7CkBAIC03MjUzLDEzICs3NjY0
LDE3IEBAIHNjdHBfYmluZHhfYWRkX2FkZHJlc3Moc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBz
Y3RwX2lucGNiICppbnAsCiAJCQkJcmV0dXJuOwogCQkJfQogCQkJaW42X3NpbjZfMl9zaW4oJnNp
biwgc2luNik7Ci0JCQlhZGRyX3RvdXNlID0gKHN0cnVjdCBzb2NrYWRkciAqKSZzaW47CisJCQlh
ZGRyX3RvX3VzZSA9IChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luOworCQl9IGVsc2UgeworCQkJYWRk
cl90b191c2UgPSBzYTsKIAkJfQorI2Vsc2UKKwkJYWRkcl90b191c2UgPSBzYTsKICNlbmRpZgot
CX0KKwkJYnJlYWs7CiAjZW5kaWYKICNpZmRlZiBJTkVUCi0JaWYgKHNhLT5zYV9mYW1pbHkgPT0g
QUZfSU5FVCkgeworCWNhc2UgQUZfSU5FVDoKICNpZmRlZiBIQVZFX1NBX0xFTgogCQlpZiAoc2Et
PnNhX2xlbiAhPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSkgewogCQkJU0NUUF9MVFJBQ0Vf
RVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQVVRJTCwgRUlOVkFMKTsKQEAg
LTcyNzQsMTAgKzc2ODksMTggQEAgc2N0cF9iaW5keF9hZGRfYWRkcmVzcyhzdHJ1Y3Qgc29ja2V0
ICpzbywgc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJCSplcnJvciA9IEVJTlZBTDsKIAkJCXJl
dHVybjsKIAkJfQotCX0KKwkJc2lucCA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilzYTsKKwkJcG9y
dCA9IHNpbnAtPnNpbl9wb3J0OworCQlhZGRyX3RvX3VzZSA9IHNhOworCQlicmVhazsKICNlbmRp
ZgorCWRlZmF1bHQ6CisJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQ
X0ZST01fU0NUUFVUSUwsIEVJTlZBTCk7CisJCSplcnJvciA9IEVJTlZBTDsKKwkJcmV0dXJuOwor
CX0KIAlpZiAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVU5CT1VORCkgewotI2lm
ICEoZGVmaW5lZChfX1BhbmRhX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pIHx8IGRlZmluZWQo
X19Vc2Vyc3BhY2VfXykpCisjaWYgIShkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX1VzZXJz
cGFjZV9fKSkKIAkJaWYgKHAgPT0gTlVMTCkgewogCQkJLyogQ2FuJ3QgZ2V0IHByb2MgZm9yIE5l
dC9PcGVuIEJTRCAqLwogCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFND
VFBfRlJPTV9TQ1RQVVRJTCwgRUlOVkFMKTsKQEAgLTcyODUsNTggKzc3MDgsMjUgQEAgc2N0cF9i
aW5keF9hZGRfYWRkcmVzcyhzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNjdHBfaW5wY2IgKmlu
cCwKIAkJCXJldHVybjsKIAkJfQogI2VuZGlmCi0JCSplcnJvciA9IHNjdHBfaW5wY2JfYmluZChz
bywgYWRkcl90b3VzZSwgTlVMTCwgcCk7CisJCSplcnJvciA9IHNjdHBfaW5wY2JfYmluZChzbywg
YWRkcl90b191c2UsIE5VTEwsIHApOwogCQlyZXR1cm47CiAJfQotCS8qCi0JICogTm8gbG9ja3Mg
cmVxdWlyZWQgaGVyZSBzaW5jZSBiaW5kIGFuZCBtZ210X2VwX3NhCi0JICogYWxsIGRvIHRoZWly
IG93biBsb2NraW5nLiBJZiB3ZSBkbyBzb21ldGhpbmcgZm9yCi0JICogdGhlIEZJWDogYmVsb3cg
d2UgbWF5IG5lZWQgdG8gbG9jayBpbiB0aGF0IGNhc2UuCi0JICovCi0JaWYgKGFzc29jX2lkID09
IDApIHsKKwkvKiBWYWxpZGF0ZSB0aGUgaW5jb21pbmcgcG9ydC4gKi8KKwlpZiAoKHBvcnQgIT0g
MCkgJiYgKHBvcnQgIT0gaW5wLT5zY3RwX2xwb3J0KSkgeworCQlTQ1RQX0xUUkFDRV9FUlJfUkVU
KGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBVVElMLCBFSU5WQUwpOworCQkqZXJyb3Ig
PSBFSU5WQUw7CisJCXJldHVybjsKKwl9CisJbGVwID0gc2N0cF9wY2JfZmluZGVwKGFkZHJfdG9f
dXNlLCAxLCAwLCB2cmZfaWQpOworCWlmIChsZXAgPT0gTlVMTCkgewogCQkvKiBhZGQgdGhlIGFk
ZHJlc3MgKi8KLQkJc3RydWN0IHNjdHBfaW5wY2IgKmxlcDsKLQkJc3RydWN0IHNvY2thZGRyX2lu
ICpsc2luID0gKHN0cnVjdCBzb2NrYWRkcl9pbiAqKWFkZHJfdG91c2U7Ci0KLQkJLyogdmFsaWRh
dGUgdGhlIGluY29taW5nIHBvcnQgKi8KLQkJaWYgKChsc2luLT5zaW5fcG9ydCAhPSAwKSAmJgot
CQkgICAgKGxzaW4tPnNpbl9wb3J0ICE9IGlucC0+c2N0cF9scG9ydCkpIHsKLQkJCVNDVFBfTFRS
QUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUFVUSUwsIEVJTlZBTCk7
Ci0JCQkqZXJyb3IgPSBFSU5WQUw7Ci0JCQlyZXR1cm47Ci0JCX0gZWxzZSB7Ci0JCQkvKiB1c2Vy
IHNwZWNpZmllZCAwIHBvcnQsIHNldCBpdCB0byBleGlzdGluZyBwb3J0ICovCi0JCQlsc2luLT5z
aW5fcG9ydCA9IGlucC0+c2N0cF9scG9ydDsKLQkJfQotCi0JCWxlcCA9IHNjdHBfcGNiX2ZpbmRl
cChhZGRyX3RvdXNlLCAxLCAwLCB2cmZfaWQpOwotCQlpZiAobGVwICE9IE5VTEwpIHsKLQkJCS8q
Ci0JCQkgKiBXZSBtdXN0IGRlY3JlbWVudCB0aGUgcmVmY291bnQKLQkJCSAqIHNpbmNlIHdlIGhh
dmUgdGhlIGVwIGFscmVhZHkgYW5kCi0JCQkgKiBhcmUgYmluZGluZy4gTm8gcmVtb3ZlIGdvaW5n
IG9uCi0JCQkgKiBoZXJlLgotCQkJICovCi0JCQlTQ1RQX0lOUF9ERUNSX1JFRihsZXApOwotCQl9
Ci0JCWlmIChsZXAgPT0gaW5wKSB7Ci0JCQkvKiBhbHJlYWR5IGJvdW5kIHRvIGl0Li4gb2sgKi8K
LQkJCXJldHVybjsKLQkJfSBlbHNlIGlmIChsZXAgPT0gTlVMTCkgewotCQkJKChzdHJ1Y3Qgc29j
a2FkZHJfaW4gKilhZGRyX3RvdXNlKS0+c2luX3BvcnQgPSAwOwotCQkJKmVycm9yID0gc2N0cF9h
ZGRyX21nbXRfZXBfc2EoaW5wLCBhZGRyX3RvdXNlLAotCQkJCQkJICAgICAgU0NUUF9BRERfSVBf
QUREUkVTUywKLQkJCQkJCSAgICAgIHZyZl9pZCwgTlVMTCk7Ci0JCX0gZWxzZSB7CisJCSplcnJv
ciA9IHNjdHBfYWRkcl9tZ210X2VwX3NhKGlucCwgYWRkcl90b191c2UsCisJCSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNDVFBfQUREX0lQX0FERFJFU1MsIHZyZl9pZCk7CisJfSBlbHNl
IHsKKwkJaWYgKGxlcCAhPSBpbnApIHsKIAkJCSplcnJvciA9IEVBRERSSU5VU0U7CiAJCX0KLQkJ
aWYgKCplcnJvcikKLQkJCXJldHVybjsKLQl9IGVsc2UgewotCQkvKgotCQkgKiBGSVg6IGRlY2lk
ZSB3aGV0aGVyIHdlIGFsbG93IGFzc29jIGJhc2VkCi0JCSAqIGJpbmR4Ci0JCSAqLworCQlTQ1RQ
X0lOUF9ERUNSX1JFRihsZXApOwogCX0KIH0KIApAQCAtNzM0NiwxNSArNzczNiwxNSBAQCBzY3Rw
X2JpbmR4X2FkZF9hZGRyZXNzKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc2N0cF9pbnBjYiAq
aW5wLAogICovCiB2b2lkCiBzY3RwX2JpbmR4X2RlbGV0ZV9hZGRyZXNzKHN0cnVjdCBzY3RwX2lu
cGNiICppbnAsCi0JCQkgIHN0cnVjdCBzb2NrYWRkciAqc2EsIHNjdHBfYXNzb2NfdCBhc3NvY19p
ZCwKLQkJCSAgdWludDMyX3QgdnJmX2lkLCBpbnQgKmVycm9yKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIgKnNhLCB1aW50MzJfdCB2cmZfaWQsIGludCAqZXJyb3Ip
CiB7Ci0Jc3RydWN0IHNvY2thZGRyICphZGRyX3RvdXNlOworCXN0cnVjdCBzb2NrYWRkciAqYWRk
cl90b191c2U7CiAjaWYgZGVmaW5lZChJTkVUKSAmJiBkZWZpbmVkKElORVQ2KQorCXN0cnVjdCBz
b2NrYWRkcl9pbjYgKnNpbjY7CiAJc3RydWN0IHNvY2thZGRyX2luIHNpbjsKICNlbmRpZgogI2lm
ZGVmIFNDVFBfTVZSRgotCWludCBpLCBmbmQgPSAwOworCWludCBpOwogI2VuZGlmCiAKIAkvKiBz
ZWUgaWYgd2UncmUgYm91bmQgYWxsIGFscmVhZHkhICovCkBAIC03MzY3LDIzICs3NzU3LDE4IEBA
IHNjdHBfYmluZHhfZGVsZXRlX2FkZHJlc3Moc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkvKiBJ
cyB0aGUgVlJGIG9uZSB3ZSBoYXZlICovCiAJZm9yIChpID0gMDsgaSA8IGlucC0+bnVtX3ZyZnM7
IGkrKykgewogCQlpZiAodnJmX2lkID09IGlucC0+bV92cmZfaWRzW2ldKSB7Ci0JCQlmbmQgPSAx
OwogCQkJYnJlYWs7CiAJCX0KIAl9Ci0JaWYgKCFmbmQpIHsKKwlpZiAoaSA9PSBpbnAtPm51bV92
cmZzKSB7CiAJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01f
U0NUUFVUSUwsIEVJTlZBTCk7CiAJCSplcnJvciA9IEVJTlZBTDsKIAkJcmV0dXJuOwogCX0KICNl
bmRpZgotCWFkZHJfdG91c2UgPSBzYTsKKwlzd2l0Y2ggKHNhLT5zYV9mYW1pbHkpIHsKICNpZmRl
ZiBJTkVUNgotCWlmIChzYS0+c2FfZmFtaWx5ID09IEFGX0lORVQ2KSB7Ci0jaWZkZWYgSU5FVAot
CQlzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW42OwotI2VuZGlmCi0KKwljYXNlIEFGX0lORVQ2Ogog
I2lmZGVmIEhBVkVfU0FfTEVOCiAJCWlmIChzYS0+c2FfbGVuICE9IHNpemVvZihzdHJ1Y3Qgc29j
a2FkZHJfaW42KSkgewogCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFND
VFBfRlJPTV9TQ1RQVVRJTCwgRUlOVkFMKTsKQEAgLTczOTgsNyArNzc4Myw3IEBAIHNjdHBfYmlu
ZHhfZGVsZXRlX2FkZHJlc3Moc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJCXJldHVybjsKIAkJ
fQogI2lmZGVmIElORVQKLQkJc2luNiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopYWRkcl90b3Vz
ZTsKKwkJc2luNiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopc2E7CiAJCWlmIChJTjZfSVNfQURE
Ul9WNE1BUFBFRCgmc2luNi0+c2luNl9hZGRyKSkgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3Mg
JiBTQ1RQX1BDQl9GTEFHU19CT1VORF9WNikgJiYKIAkJCSAgICBTQ1RQX0lQVjZfVjZPTkxZKGlu
cCkpIHsKQEAgLTc0MDgsMTMgKzc3OTMsMTcgQEAgc2N0cF9iaW5keF9kZWxldGVfYWRkcmVzcyhz
dHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogCQkJCXJldHVybjsKIAkJCX0KIAkJCWluNl9zaW42XzJf
c2luKCZzaW4sIHNpbjYpOwotCQkJYWRkcl90b3VzZSA9IChzdHJ1Y3Qgc29ja2FkZHIgKikmc2lu
OworCQkJYWRkcl90b191c2UgPSAoc3RydWN0IHNvY2thZGRyICopJnNpbjsKKwkJfSBlbHNlIHsK
KwkJCWFkZHJfdG9fdXNlID0gc2E7CiAJCX0KKyNlbHNlCisJCWFkZHJfdG9fdXNlID0gc2E7CiAj
ZW5kaWYKLQl9CisJCWJyZWFrOwogI2VuZGlmCiAjaWZkZWYgSU5FVAotCWlmIChzYS0+c2FfZmFt
aWx5ID09IEFGX0lORVQpIHsKKwljYXNlIEFGX0lORVQ6CiAjaWZkZWYgSEFWRV9TQV9MRU4KIAkJ
aWYgKHNhLT5zYV9sZW4gIT0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpIHsKIAkJCVNDVFBf
TFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUFVUSUwsIEVJTlZB
TCk7CkBAIC03NDI5LDI0ICs3ODE4LDE3IEBAIHNjdHBfYmluZHhfZGVsZXRlX2FkZHJlc3Moc3Ry
dWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJCSplcnJvciA9IEVJTlZBTDsKIAkJCXJldHVybjsKIAkJ
fQotCX0KKwkJYWRkcl90b191c2UgPSBzYTsKKwkJYnJlYWs7CiAjZW5kaWYKLQkvKgotCSAqIE5v
IGxvY2sgcmVxdWlyZWQgbWdtdF9lcF9zYSBkb2VzIGl0cyBvd24gbG9ja2luZy4KLQkgKiBJZiB0
aGUgRklYOiBiZWxvdyBpcyBldmVyIGNoYW5nZWQgd2UgbWF5IG5lZWQgdG8KLQkgKiBsb2NrIGJl
Zm9yZSBjYWxsaW5nIGFzc29jaWF0aW9uIGxldmVsIGJpbmRpbmcuCi0JICovCi0JaWYgKGFzc29j
X2lkID09IDApIHsKLQkJLyogZGVsZXRlIHRoZSBhZGRyZXNzICovCi0JCSplcnJvciA9IHNjdHBf
YWRkcl9tZ210X2VwX3NhKGlucCwgYWRkcl90b3VzZSwKLQkJCQkJICAgICAgU0NUUF9ERUxfSVBf
QUREUkVTUywKLQkJCQkJICAgICAgdnJmX2lkLCBOVUxMKTsKLQl9IGVsc2UgewotCQkvKgotCQkg
KiBGSVg6IGRlY2lkZSB3aGV0aGVyIHdlIGFsbG93IGFzc29jIGJhc2VkCi0JCSAqIGJpbmR4Ci0J
CSAqLworCWRlZmF1bHQ6CisJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBT
Q1RQX0ZST01fU0NUUFVUSUwsIEVJTlZBTCk7CisJCSplcnJvciA9IEVJTlZBTDsKKwkJcmV0dXJu
OwogCX0KKwkvKiBObyBsb2NrIHJlcXVpcmVkIG1nbXRfZXBfc2EgZG9lcyBpdHMgb3duIGxvY2tp
bmcuICovCisJKmVycm9yID0gc2N0cF9hZGRyX21nbXRfZXBfc2EoaW5wLCBhZGRyX3RvX3VzZSwg
U0NUUF9ERUxfSVBfQUREUkVTUywKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2cmZf
aWQpOwogfQogCiAvKgpAQCAtNzQ2MCw3ICs3ODQyLDcgQEAgc2N0cF9sb2NhbF9hZGRyX2NvdW50
KHN0cnVjdCBzY3RwX3RjYiAqc3RjYikKICNpZiBkZWZpbmVkKElORVQpCiAJaW50IGlwdjRfbG9j
YWxfc2NvcGUsIGlwdjRfYWRkcl9sZWdhbDsKICNlbmRpZgotI2lmIGRlZmluZWQgKElORVQ2KQor
I2lmIGRlZmluZWQoSU5FVDYpCiAJaW50IGxvY2FsX3Njb3BlLCBzaXRlX3Njb3BlLCBpcHY2X2Fk
ZHJfbGVnYWw7CiAjZW5kaWYKICNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCkBAIC03NTE2LDcg
Kzc4OTgsNyBAQCBzY3RwX2xvY2FsX2FkZHJfY291bnQoc3RydWN0IHNjdHBfdGNiICpzdGNiKQog
CQkJCQkJCS8qIHNraXAgdW5zcGVjaWZpZWQgYWRkcnMgKi8KIAkJCQkJCQljb250aW51ZTsKIAkJ
CQkJCX0KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJCQlpZiAocHJpc29uX2NoZWNrX2lwNChz
dGNiLT5zY3RwX2VwLT5pcF9pbnAuaW5wLmlucF9jcmVkLAogCQkJCQkJICAgICAgICAgICAgICAg
ICAgICAgJnNpbi0+c2luX2FkZHIpICE9IDApIHsKIAkJCQkJCQljb250aW51ZTsKQEAgLTc1NDUs
NyArNzkyNyw3IEBAIHNjdHBfbG9jYWxfYWRkcl9jb3VudChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2Ip
CiAJCQkJCQlpZiAoSU42X0lTX0FERFJfVU5TUEVDSUZJRUQoJnNpbjYtPnNpbjZfYWRkcikpIHsK
IAkJCQkJCQljb250aW51ZTsKIAkJCQkJCX0KLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJCQlp
ZiAocHJpc29uX2NoZWNrX2lwNihzdGNiLT5zY3RwX2VwLT5pcF9pbnAuaW5wLmlucF9jcmVkLAog
CQkJCQkJICAgICAgICAgICAgICAgICAgICAgJnNpbjYtPnNpbjZfYWRkcikgIT0gMCkgewogCQkJ
CQkJCWNvbnRpbnVlOwpAQCAtNzYyNyw3ICs4MDA5LDcgQEAgc2N0cF9sb2dfdHJhY2UodWludDMy
X3Qgc3Vic3lzLCBjb25zdCBjaGFyICpzdHIgU0NUUF9VTlVTRUQsIHVpbnQzMl90IGEsIHVpbnQz
Ml8KIHsKIAl1aW50MzJfdCBzYXZlaW5kZXgsIG5ld2luZGV4OwogCi0jaWYgZGVmaW5lZChfX1dp
bmRvd3NfXykKKyNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
IAlpZiAoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2xvZykgPT0gTlVMTCkgewogCQlyZXR1cm47CiAJ
fQpAQCAtNzY3NCw4ICs4MDU2LDcgQEAgc2N0cF9sb2dfdHJhY2UodWludDMyX3Qgc3Vic3lzLCBj
b25zdCBjaGFyICpzdHIgU0NUUF9VTlVTRUQsIHVpbnQzMl90IGEsIHVpbnQzMl8KIH0KIAogI2Vu
ZGlmCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKLSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4
MDAwNDQKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogc3RhdGljIHZvaWQKIHNjdHBfcmVjdl91ZHBfdHVubmVsZWRfcGFja2V0KHN0cnVjdCBtYnVm
ICptLCBpbnQgb2ZmLCBzdHJ1Y3QgaW5wY2IgKmlucCwKICAgICBjb25zdCBzdHJ1Y3Qgc29ja2Fk
ZHIgKnNhIFNDVFBfVU5VU0VELCB2b2lkICpjdHggU0NUUF9VTlVTRUQpCkBAIC03NzI5LDI5ICs4
MTEwLDE3IEBAIHNjdHBfcmVjdl91ZHBfdHVubmVsZWRfcGFja2V0KHN0cnVjdCBtYnVmICptLCBp
bnQgb2ZmLCBzdHJ1Y3QgaW5wY2IgKmlucCwKIAkgKiBTaW5jZSBDU1VNX0RBVEFfVkFMSUQgPT0g
Q1NVTV9TQ1RQX1ZBTElEIHRoaXMgd291bGQgaW1wbHkgdGhhdAogCSAqIHRoZSBIVyBhbHNvIHZl
cmlmaWVkIHRoZSBTQ1RQIGNoZWNrc3VtLiBUaGVyZWZvcmUsIGNsZWFyIHRoZSBiaXQuCiAJICov
Ci0jaWYgX19GcmVlQlNEX3ZlcnNpb24gPiAxMDAwMDQ5CiAJU0NUUERCRyhTQ1RQX0RFQlVHX0NS
Q09GRkxPQUQsCiAJICAgICAgICAic2N0cF9yZWN2X3VkcF90dW5uZWxlZF9wYWNrZXQoKTogUGFj
a2V0IG9mIGxlbmd0aCAlZCByZWNlaXZlZCBvbiAlcyB3aXRoIGNzdW1fZmxhZ3MgMHglYi5cbiIs
CiAJICAgICAgICBtLT5tX3BrdGhkci5sZW4sCiAJICAgICAgICBpZl9uYW1lKG0tPm1fcGt0aGRy
LnJjdmlmKSwKIAkgICAgICAgIChpbnQpbS0+bV9wa3RoZHIuY3N1bV9mbGFncywgQ1NVTV9CSVRT
KTsKLSNlbHNlCi0JU0NUUERCRyhTQ1RQX0RFQlVHX0NSQ09GRkxPQUQsCi0JICAgICAgICAic2N0
cF9yZWN2X3VkcF90dW5uZWxlZF9wYWNrZXQoKTogUGFja2V0IG9mIGxlbmd0aCAlZCByZWNlaXZl
ZCBvbiAlcyB3aXRoIGNzdW1fZmxhZ3MgMHgleC5cbiIsCi0JICAgICAgICBtLT5tX3BrdGhkci5s
ZW4sCi0JICAgICAgICBpZl9uYW1lKG0tPm1fcGt0aGRyLnJjdmlmKSwKLQkgICAgICAgIG0tPm1f
cGt0aGRyLmNzdW1fZmxhZ3MpOwotI2VuZGlmCiAJbS0+bV9wa3RoZHIuY3N1bV9mbGFncyAmPSB+
Q1NVTV9EQVRBX1ZBTElEOwogCWlwaCA9IG10b2QobSwgc3RydWN0IGlwICopOwogCXN3aXRjaCAo
aXBoLT5pcF92KSB7CiAjaWZkZWYgSU5FVAogCWNhc2UgSVBWRVJTSU9OOgotI2lmIF9fRnJlZUJT
RF92ZXJzaW9uID49IDEwMDAwMDAKIAkJaXBoLT5pcF9sZW4gPSBodG9ucyhudG9ocyhpcGgtPmlw
X2xlbikgLSBzaXplb2Yoc3RydWN0IHVkcGhkcikpOwotI2Vsc2UKLQkJaXBoLT5pcF9sZW4gLT0g
c2l6ZW9mKHN0cnVjdCB1ZHBoZHIpOwotI2VuZGlmCiAJCXNjdHBfaW5wdXRfd2l0aF9wb3J0KG0s
IG9mZiwgcG9ydCk7CiAJCWJyZWFrOwogI2VuZGlmCkBAIC03NzcwLDkgKzgxMzksNyBAQCBzY3Rw
X3JlY3ZfdWRwX3R1bm5lbGVkX3BhY2tldChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IG9mZiwgc3RydWN0
IGlucGNiICppbnAsCiAgb3V0OgogCW1fZnJlZW0obSk7CiB9Ci0jZW5kaWYKIAotI2lmIF9fRnJl
ZUJTRF92ZXJzaW9uID49IDExMDAwMDAKICNpZmRlZiBJTkVUCiBzdGF0aWMgdm9pZAogc2N0cF9y
ZWN2X2ljbXBfdHVubmVsZWRfcGFja2V0KGludCBjbWQsIHN0cnVjdCBzb2NrYWRkciAqc2EsIHZv
aWQgKnZpcCwgdm9pZCAqY3R4IFNDVFBfVU5VU0VEKQpAQCAtNzg3MywxNyArODI0MCwyNSBAQCBz
Y3RwX3JlY3ZfaWNtcF90dW5uZWxlZF9wYWNrZXQoaW50IGNtZCwgc3RydWN0IHNvY2thZGRyICpz
YSwgdm9pZCAqdmlwLCB2b2lkICpjdAogCQlzY3RwX25vdGlmeShpbnAsIHN0Y2IsIG5ldCwgdHlw
ZSwgY29kZSwKIAkJICAgICAgICAgICAgbnRvaHMoaW5uZXJfaXAtPmlwX2xlbiksCiAJCSAgICAg
ICAgICAgICh1aW50MzJfdCludG9ocyhpY21wLT5pY21wX25leHRtdHUpKTsKLQl9IGVsc2Ugewot
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uIDwgNTAwMDAwCi0J
CS8qCi0JCSAqIFhYWCBtdXN0IGJlIGZpeGVkIGZvciA1LnggYW5kIGhpZ2hlciwgbGVhdmUgZm9y
Ci0JCSAqIDQueAotCQkgKi8KLQkJaWYgKFBSQ19JU19SRURJUkVDVChjbWQpICYmIChpbnAgIT0g
TlVMTCkpIHsKLQkJCWluX3J0Y2hhbmdlKChzdHJ1Y3QgaW5wY2IgKilpbnAsCi0JCQkgICAgaW5l
dGN0bGVycm1hcFtjbWRdKTsKKyNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCWlmICghKHN0
Y2ItPnNjdHBfZXAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19TT0NLRVRfR09ORSkgJiYK
KwkJICAgIChzdGNiLT5zY3RwX3NvY2tldCAhPSBOVUxMKSkgeworCQkJc3RydWN0IHNvY2tldCAq
dXBjYWxsX3NvY2tldDsKKworCQkJdXBjYWxsX3NvY2tldCA9IHN0Y2ItPnNjdHBfc29ja2V0Owor
CQkJU09DS19MT0NLKHVwY2FsbF9zb2NrZXQpOworCQkJc29yZWYodXBjYWxsX3NvY2tldCk7CisJ
CQlTT0NLX1VOTE9DSyh1cGNhbGxfc29ja2V0KTsKKwkJCWlmICgodXBjYWxsX3NvY2tldC0+c29f
dXBjYWxsICE9IE5VTEwpICYmCisJCQkgICAgKHVwY2FsbF9zb2NrZXQtPnNvX2Vycm9yICE9IDAp
KSB7CisJCQkJKCp1cGNhbGxfc29ja2V0LT5zb191cGNhbGwpKHVwY2FsbF9zb2NrZXQsIHVwY2Fs
bF9zb2NrZXQtPnNvX3VwY2FsbGFyZywgTV9OT1dBSVQpOworCQkJfQorCQkJQUNDRVBUX0xPQ0so
KTsKKwkJCVNPQ0tfTE9DSyh1cGNhbGxfc29ja2V0KTsKKwkJCXNvcmVsZSh1cGNhbGxfc29ja2V0
KTsKIAkJfQogI2VuZGlmCisJfSBlbHNlIHsKIAkJaWYgKChzdGNiID09IE5VTEwpICYmIChpbnAg
IT0gTlVMTCkpIHsKIAkJCS8qIHJlZHVjZSByZWYtY291bnQgKi8KIAkJCVNDVFBfSU5QX1dMT0NL
KGlucCk7CkBAIC03OTQ1LDcgKzgzMjAsNyBAQCBzY3RwX3JlY3ZfaWNtcDZfdHVubmVsZWRfcGFj
a2V0KGludCBjbWQsIHN0cnVjdCBzb2NrYWRkciAqc2EsIHZvaWQgKmQsIHZvaWQgKmN0eAogI2Vu
ZGlmCiAJc3JjLnNpbjZfcG9ydCA9IHNoLnNyY19wb3J0OwogCXNyYy5zaW42X2FkZHIgPSBpcDZj
cC0+aXA2Y19pcDYtPmlwNl9zcmM7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWlmIChpbjZfc2V0
c2NvcGUoJnNyYy5zaW42X2FkZHIsIGlwNmNwLT5pcDZjX20tPm1fcGt0aGRyLnJjdmlmLCBOVUxM
KSAhPSAwKSB7CiAJCXJldHVybjsKIAl9CkBAIC03OTU3LDcgKzgzMzIsNyBAQCBzY3RwX3JlY3Zf
aWNtcDZfdHVubmVsZWRfcGFja2V0KGludCBjbWQsIHN0cnVjdCBzb2NrYWRkciAqc2EsIHZvaWQg
KmQsIHZvaWQgKmN0eAogI2VuZGlmCiAJZHN0LnNpbjZfcG9ydCA9IHNoLmRlc3RfcG9ydDsKIAlk
c3Quc2luNl9hZGRyID0gaXA2Y3AtPmlwNmNfaXA2LT5pcDZfZHN0OwotI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKIAlpZiAoaW42X3NldHNjb3BlKCZkc3Quc2luNl9hZGRyLCBpcDZjcC0+aXA2Y19tLT5t
X3BrdGhkci5yY3ZpZiwgTlVMTCkgIT0gMCkgewogCQlyZXR1cm47CiAJfQpAQCAtNzk4OCw3ICs4
MzYzLDcgQEAgc2N0cF9yZWN2X2ljbXA2X3R1bm5lbGVkX3BhY2tldChpbnQgY21kLCBzdHJ1Y3Qg
c29ja2FkZHIgKnNhLCB2b2lkICpkLCB2b2lkICpjdHgKIAkJCQlyZXR1cm47CiAJCQl9CiAJCX0g
ZWxzZSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQkJaWYgKGlwNmNwLT5pcDZjX20tPm1fcGt0
aGRyLmxlbiA+PQogCQkJICAgIGlwNmNwLT5pcDZjX29mZiArIHNpemVvZihzdHJ1Y3QgdWRwaGRy
KSArCiAJCQkgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBzY3RwaGRyKSArCkBA
IC04MDM4LDEzICs4NDEzLDI1IEBAIHNjdHBfcmVjdl9pY21wNl90dW5uZWxlZF9wYWNrZXQoaW50
IGNtZCwgc3RydWN0IHNvY2thZGRyICpzYSwgdm9pZCAqZCwgdm9pZCAqY3R4CiAJCX0KIAkJc2N0
cDZfbm90aWZ5KGlucCwgc3RjYiwgbmV0LCB0eXBlLCBjb2RlLAogCQkJICAgICBudG9obChpcDZj
cC0+aXA2Y19pY21wNi0+aWNtcDZfbXR1KSk7Ci0JfSBlbHNlIHsKLSNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA8IDUwMDAwMAotCQlpZiAoUFJDX0lTX1JFRElS
RUNUKGNtZCkgJiYgKGlucCAhPSBOVUxMKSkgewotCQkJaW42X3J0Y2hhbmdlKChzdHJ1Y3QgaW42
cGNiICopaW5wLAotCQkJICAgIGluZXQ2Y3RsZXJybWFwW2NtZF0pOworI2lmIGRlZmluZWQoX19V
c2Vyc3BhY2VfXykKKwkJaWYgKCEoc3RjYi0+c2N0cF9lcC0+c2N0cF9mbGFncyAmIFNDVFBfUENC
X0ZMQUdTX1NPQ0tFVF9HT05FKSAmJgorCQkgICAgKHN0Y2ItPnNjdHBfc29ja2V0ICE9IE5VTEwp
KSB7CisJCQlzdHJ1Y3Qgc29ja2V0ICp1cGNhbGxfc29ja2V0OworCisJCQl1cGNhbGxfc29ja2V0
ID0gc3RjYi0+c2N0cF9zb2NrZXQ7CisJCQlTT0NLX0xPQ0sodXBjYWxsX3NvY2tldCk7CisJCQlz
b3JlZih1cGNhbGxfc29ja2V0KTsKKwkJCVNPQ0tfVU5MT0NLKHVwY2FsbF9zb2NrZXQpOworCQkJ
aWYgKCh1cGNhbGxfc29ja2V0LT5zb191cGNhbGwgIT0gTlVMTCkgJiYKKwkJCSAgICAodXBjYWxs
X3NvY2tldC0+c29fZXJyb3IgIT0gMCkpIHsKKwkJCQkoKnVwY2FsbF9zb2NrZXQtPnNvX3VwY2Fs
bCkodXBjYWxsX3NvY2tldCwgdXBjYWxsX3NvY2tldC0+c29fdXBjYWxsYXJnLCBNX05PV0FJVCk7
CisJCQl9CisJCQlBQ0NFUFRfTE9DSygpOworCQkJU09DS19MT0NLKHVwY2FsbF9zb2NrZXQpOwor
CQkJc29yZWxlKHVwY2FsbF9zb2NrZXQpOwogCQl9CiAjZW5kaWYKKwl9IGVsc2UgewogCQlpZiAo
KHN0Y2IgPT0gTlVMTCkgJiYgKGlucCAhPSBOVUxMKSkgewogCQkJLyogcmVkdWNlIGlucCdzIHJl
Zi1jb3VudCAqLwogCQkJU0NUUF9JTlBfV0xPQ0soaW5wKTsKQEAgLTgwNTcsNyArODQ0NCw2IEBA
IHNjdHBfcmVjdl9pY21wNl90dW5uZWxlZF9wYWNrZXQoaW50IGNtZCwgc3RydWN0IHNvY2thZGRy
ICpzYSwgdm9pZCAqZCwgdm9pZCAqY3R4CiAJfQogfQogI2VuZGlmCi0jZW5kaWYKIAogdm9pZAog
c2N0cF9vdmVyX3VkcF9zdG9wKHZvaWQpCkBAIC04MDgyLDcgKzg0NjgsNiBAQCBzY3RwX292ZXJf
dWRwX3N0b3Aodm9pZCkKIGludAogc2N0cF9vdmVyX3VkcF9zdGFydCh2b2lkKQogewotI2lmIF9f
RnJlZUJTRF92ZXJzaW9uID49IDgwMDA0NAogCXVpbnQxNl90IHBvcnQ7CiAJaW50IHJldDsKICNp
ZmRlZiBJTkVUCkBAIC04MTIxLDkgKzg1MDYsNyBAQCBzY3RwX292ZXJfdWRwX3N0YXJ0KHZvaWQp
CiAJLyogQ2FsbCB0aGUgc3BlY2lhbCBVRFAgaG9vay4gKi8KIAlpZiAoKHJldCA9IHVkcF9zZXRf
a2VybmVsX3R1bm5lbGluZyhTQ1RQX0JBU0VfSU5GTyh1ZHA0X3R1bl9zb2NrZXQpLAogCSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjdHBfcmVjdl91ZHBfdHVubmVsZWRfcGFj
a2V0LAotI2lmIF9fRnJlZUJTRF92ZXJzaW9uID49IDExMDAwMDAKIAkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzY3RwX3JlY3ZfaWNtcF90dW5uZWxlZF9wYWNrZXQsCi0jZW5k
aWYKIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKSkpIHsKIAkJc2N0
cF9vdmVyX3VkcF9zdG9wKCk7CiAJCXJldHVybiAocmV0KTsKQEAgLTgxNDksOSArODUzMiw3IEBA
IHNjdHBfb3Zlcl91ZHBfc3RhcnQodm9pZCkKIAkvKiBDYWxsIHRoZSBzcGVjaWFsIFVEUCBob29r
LiAqLwogCWlmICgocmV0ID0gdWRwX3NldF9rZXJuZWxfdHVubmVsaW5nKFNDVFBfQkFTRV9JTkZP
KHVkcDZfdHVuX3NvY2tldCksCiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2N0cF9yZWN2X3VkcF90dW5uZWxlZF9wYWNrZXQsCi0jaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0g
MTEwMDAwMAogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjdHBfcmVjdl9p
Y21wNl90dW5uZWxlZF9wYWNrZXQsCi0jZW5kaWYKIAkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBOVUxMKSkpIHsKIAkJc2N0cF9vdmVyX3VkcF9zdG9wKCk7CiAJCXJldHVybiAo
cmV0KTsKQEAgLTgxNjgsOSArODU0OSw2IEBAIHNjdHBfb3Zlcl91ZHBfc3RhcnQodm9pZCkKIAl9
CiAjZW5kaWYKIAlyZXR1cm4gKDApOwotI2Vsc2UKLQlyZXR1cm4gKEVOT1RTVVApOwotI2VuZGlm
CiB9CiAjZW5kaWYKIApAQCAtODIwOCw3ICs4NTg2LDcgQEAgc2N0cF9taW5fbXR1KHVpbnQzMl90
IG10dTEsIHVpbnQzMl90IG10dTIsIHVpbnQzMl90IG10dTMpCiAJfQogfQogCi0jaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogdm9pZAogc2N0cF9oY19zZXRfbXR1KHVuaW9uIHNjdHBfc29ja3N0b3JlICph
ZGRyLCB1aW50MTZfdCBmaWJudW0sIHVpbnQzMl90IG10dSkKIHsKQEAgLTgyNTksMyArODYzNyw1
MCBAQCBzY3RwX2hjX2dldF9tdHUodW5pb24gc2N0cF9zb2Nrc3RvcmUgKmFkZHIsIHVpbnQxNl90
IGZpYm51bSkKIAlyZXR1cm4gKCh1aW50MzJfdCl0Y3BfaGNfZ2V0bXR1KCZpbmMpKTsKIH0KICNl
bmRpZgorCit2b2lkCitzY3RwX3NldF9zdGF0ZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIGludCBu
ZXdfc3RhdGUpCit7CisjaWYgZGVmaW5lZChLRFRSQUNFX0hPT0tTKQorCWludCBvbGRfc3RhdGUg
PSBzdGNiLT5hc29jLnN0YXRlOworI2VuZGlmCisKKwlLQVNTRVJUKChuZXdfc3RhdGUgJiB+U0NU
UF9TVEFURV9NQVNLKSA9PSAwLAorCSAgICAgICAgKCJzY3RwX3NldF9zdGF0ZTogQ2FuJ3Qgc2V0
IHN1YnN0YXRlIChuZXdfc3RhdGUgPSAleCkiLAorCSAgICAgICAgbmV3X3N0YXRlKSk7CisJc3Rj
Yi0+YXNvYy5zdGF0ZSA9IChzdGNiLT5hc29jLnN0YXRlICYgflNDVFBfU1RBVEVfTUFTSykgfCBu
ZXdfc3RhdGU7CisJaWYgKChuZXdfc3RhdGUgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZF
RCkgfHwKKwkgICAgKG5ld19zdGF0ZSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpIHx8CisJ
ICAgIChuZXdfc3RhdGUgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tfU0VOVCkpIHsKKwkJU0NU
UF9DTEVBUl9TVUJTVEFURShzdGNiLCBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJTkcpOworCX0K
KyNpZiBkZWZpbmVkKEtEVFJBQ0VfSE9PS1MpCisJaWYgKCgob2xkX3N0YXRlICYgU0NUUF9TVEFU
RV9NQVNLKSAhPSBuZXdfc3RhdGUpICYmCisJICAgICEoKChvbGRfc3RhdGUgJiBTQ1RQX1NUQVRF
X01BU0spID09IFNDVFBfU1RBVEVfRU1QVFkpICYmCisJICAgICAgKG5ld19zdGF0ZSA9PSBTQ1RQ
X1NUQVRFX0lOVVNFKSkpIHsKKwkJU0NUUF9QUk9CRTYoc3RhdGVfX2NoYW5nZSwgTlVMTCwgc3Rj
YiwgTlVMTCwgc3RjYiwgTlVMTCwgb2xkX3N0YXRlKTsKKwl9CisjZW5kaWYKK30KKwordm9pZAor
c2N0cF9hZGRfc3Vic3RhdGUoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBpbnQgc3Vic3RhdGUpCit7
CisjaWYgZGVmaW5lZChLRFRSQUNFX0hPT0tTKQorCWludCBvbGRfc3RhdGUgPSBzdGNiLT5hc29j
LnN0YXRlOworI2VuZGlmCisKKwlLQVNTRVJUKChzdWJzdGF0ZSAmIFNDVFBfU1RBVEVfTUFTSykg
PT0gMCwKKwkgICAgICAgICgic2N0cF9hZGRfc3Vic3RhdGU6IENhbid0IHNldCBzdGF0ZSAoc3Vi
c3RhdGUgPSAleCkiLAorCSAgICAgICAgc3Vic3RhdGUpKTsKKwlzdGNiLT5hc29jLnN0YXRlIHw9
IHN1YnN0YXRlOworI2lmIGRlZmluZWQoS0RUUkFDRV9IT09LUykKKwlpZiAoKChzdWJzdGF0ZSAm
IFNDVFBfU1RBVEVfQUJPVVRfVE9fQkVfRlJFRUQpICYmCisJICAgICAoKG9sZF9zdGF0ZSAmIFND
VFBfU1RBVEVfQUJPVVRfVE9fQkVfRlJFRUQpID09IDApKSB8fAorCSAgICAoKHN1YnN0YXRlICYg
U0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HKSAmJgorCSAgICAgKChvbGRfc3RhdGUgJiBTQ1RQ
X1NUQVRFX1NIVVRET1dOX1BFTkRJTkcpID09IDApKSkgeworCQlTQ1RQX1BST0JFNihzdGF0ZV9f
Y2hhbmdlLCBOVUxMLCBzdGNiLCBOVUxMLCBzdGNiLCBOVUxMLCBvbGRfc3RhdGUpOworCX0KKyNl
bmRpZgorfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cHV0
aWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNy
c2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwdXRpbC5oCm9sZCBtb2RlIDEw
MDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggNjlmZTQ4NDk4MWMxLi43NjQ2MTY5NTA1NWUKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHB1dGlsLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIv
dXNyc2N0cGxpYi9uZXRpbmV0L3NjdHB1dGlsLmgKQEAgLTMyLDkgKzMyLDkgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZkZWYgX19GcmVlQlNEX18KKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogI2luY2x1
ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3Nj
dHB1dGlsLmggMzI0NjE1IDIwMTctMTAtMTQgMTA6MDI6NTlaIHR1ZXhlbiAkIik7CitfX0ZCU0RJ
RCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cHV0aWwuaCAzNjQyNjggMjAyMC0wOC0x
NiAxMTo1MDozN1ogdHVleGVuICQiKTsKICNlbmRpZgogCiAjaWZuZGVmIF9ORVRJTkVUX1NDVFBf
VVRJTF9IXwpAQCAtNTcsNyArNTcsNyBAQCB2b2lkIHNjdHBfbV9mcmVlbShzdHJ1Y3QgbWJ1ZiAq
bSk7CiAjZGVmaW5lIHNjdHBfbV9mcmVlbSBtX2ZyZWVtCiAjZW5kaWYKIAotI2lmIGRlZmluZWQo
U0NUUF9MT0NBTF9UUkFDRV9CVUYpIHx8IGRlZmluZWQoX19BUFBMRV9fKQorI2lmIGRlZmluZWQo
U0NUUF9MT0NBTF9UUkFDRV9CVUYpCiB2b2lkCiBzY3RwX2xvZ190cmFjZSh1aW50MzJfdCBmciwg
Y29uc3QgY2hhciAqc3RyIFNDVFBfVU5VU0VELCB1aW50MzJfdCBhLCB1aW50MzJfdCBiLCB1aW50
MzJfdCBjLCB1aW50MzJfdCBkLCB1aW50MzJfdCBlLCB1aW50MzJfdCBmKTsKICNlbmRpZgpAQCAt
OTQsNiArOTQsMTQgQEAgc2N0cF9ub3RpZnlfc3RyZWFtX3Jlc2V0X2FkZChzdHJ1Y3Qgc2N0cF90
Y2IgKnN0Y2IsIHVpbnQxNl90IG51bWJlcmluLAogdm9pZAogc2N0cF9ub3RpZnlfc3RyZWFtX3Jl
c2V0X3RzbihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQzMl90IHNlbmRpbmdfdHNuLCB1aW50
MzJfdCByZWN2X3RzbiwgaW50IGZsYWcpOwogCisvKgorICogTk9URTogc2N0cF90aW1lcl9zdGFy
dCgpIHdpbGwgaW5jcmVtZW50IHRoZSByZWZlcmVuY2UgY291bnQgb2YgYW55IHJlbGV2YW50Cisg
KiBzdHJ1Y3R1cmUgdGhlIHRpbWVyIGlzIHJlZmVyZW5jaW5nLCBpbiBvcmRlciB0byBwcmV2ZW50
IGEgcmFjZSBjb25kaXRpb24KKyAqIGJldHdlZW4gdGhlIHRpbWVyIGV4ZWN1dGluZyBhbmQgdGhl
IHN0cnVjdHVyZSBiZWluZyBmcmVlZC4KKyAqCisgKiBXaGVuIHRoZSB0aW1lciBmaXJlcyBvciBz
Y3RwX3RpbWVyX3N0b3AoKSBpcyBjYWxsZWQsIHRoZXNlIHJlZmVyZW5jZXMgYXJlCisgKiByZW1v
dmVkLgorICovCiB2b2lkCiBzY3RwX3RpbWVyX3N0YXJ0KGludCwgc3RydWN0IHNjdHBfaW5wY2Ig
Kiwgc3RydWN0IHNjdHBfdGNiICosCiAgICAgc3RydWN0IHNjdHBfbmV0cyAqKTsKQEAgLTExMSw3
ICsxMTksNyBAQCBzY3RwX210dV9zaXplX3Jlc2V0KHN0cnVjdCBzY3RwX2lucGNiICosIHN0cnVj
dCBzY3RwX2Fzc29jaWF0aW9uICosIHVpbnQzMl90KTsKIHZvaWQKIHNjdHBfd2FrZXVwX3RoZV9y
ZWFkX3NvY2tldChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2Is
CiAgICAgaW50IHNvX2xvY2tlZAotI2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQo
U0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgIShkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykpCiAgICAgU0NUUF9VTlVTRUQKICNlbmRpZgogKTsKQEAgLTEzMCwx
MSArMTM4LDcgQEAgc2N0cF9hZGRfdG9fcmVhZHEoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKICAg
ICBzdHJ1Y3Qgc29ja2J1ZiAqc2IsCiAgICAgaW50IGVuZCwKICAgICBpbnQgaW5wcmVhZF9sb2Nr
ZWQsCi0gICAgaW50IHNvX2xvY2tlZAotI2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmlu
ZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCi0gICAgU0NUUF9VTlVTRUQKLSNlbmRpZgotICAgICk7
CisgICAgaW50IHNvX2xvY2tlZCk7CiAKIHZvaWQgc2N0cF9pdGVyYXRvcl93b3JrZXIodm9pZCk7
CiAKQEAgLTE0NCw3ICsxNDgsNyBAQCB1aW50MzJfdCBzY3RwX2dldF9uZXh0X210dSh1aW50MzJf
dCk7CiB2b2lkCiBzY3RwX3RpbWVvdXRfaGFuZGxlcih2b2lkICopOwogCi11aW50MzJfdAoraW50
CiBzY3RwX2NhbGN1bGF0ZV9ydG8oc3RydWN0IHNjdHBfdGNiICosIHN0cnVjdCBzY3RwX2Fzc29j
aWF0aW9uICosCiAgICAgc3RydWN0IHNjdHBfbmV0cyAqLCBzdHJ1Y3QgdGltZXZhbCAqLCBpbnQp
OwogCkBAIC0xNjIsMTEgKzE2Niw3IEBAIHNjdHBfYWRkX3BhZF90b21idWYoc3RydWN0IG1idWYg
KiwgaW50KTsKIHN0cnVjdCBtYnVmICoKIHNjdHBfcGFkX2xhc3RtYnVmKHN0cnVjdCBtYnVmICos
IGludCwgc3RydWN0IG1idWYgKik7CiAKLXZvaWQgc2N0cF91bHBfbm90aWZ5KHVpbnQzMl90LCBz
dHJ1Y3Qgc2N0cF90Y2IgKiwgdWludDMyX3QsIHZvaWQgKiwgaW50Ci0jaWYgIWRlZmluZWQoX19B
UFBMRV9fKSAmJiAhZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKLSAgICBTQ1RQX1VOVVNF
RAotI2VuZGlmCi0gICAgKTsKK3ZvaWQgc2N0cF91bHBfbm90aWZ5KHVpbnQzMl90LCBzdHJ1Y3Qg
c2N0cF90Y2IgKiwgdWludDMyX3QsIHZvaWQgKiwgaW50KTsKIAogdm9pZAogc2N0cF9wdWxsX29m
Zl9jb250cm9sX3RvX25ld19pbnAoc3RydWN0IHNjdHBfaW5wY2IgKm9sZF9pbnAsCkBAIC0xNzYs
MjcgKzE3NiwyMiBAQCBzY3RwX3B1bGxfb2ZmX2NvbnRyb2xfdG9fbmV3X2lucChzdHJ1Y3Qgc2N0
cF9pbnBjYiAqb2xkX2lucCwKIAogdm9pZCBzY3RwX3N0b3BfdGltZXJzX2Zvcl9zaHV0ZG93bihz
dHJ1Y3Qgc2N0cF90Y2IgKik7CiAKLXZvaWQgc2N0cF9yZXBvcnRfYWxsX291dGJvdW5kKHN0cnVj
dCBzY3RwX3RjYiAqLCB1aW50MTZfdCwgaW50LCBpbnQKLSNpZiAhZGVmaW5lZChfX0FQUExFX18p
ICYmICFkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQotICAgIFNDVFBfVU5VU0VECi0jZW5k
aWYKLSAgICApOworLyogU3RvcCBhbGwgdGltZXJzIGZvciBhc3NvY2lhdGlvbiBhbmQgcmVtb3Rl
IGFkZHJlc3Nlcy4gKi8KK3ZvaWQgc2N0cF9zdG9wX2Fzc29jaWF0aW9uX3RpbWVycyhzdHJ1Y3Qg
c2N0cF90Y2IgKiwgYm9vbCk7CisKK3ZvaWQgc2N0cF9yZXBvcnRfYWxsX291dGJvdW5kKHN0cnVj
dCBzY3RwX3RjYiAqLCB1aW50MTZfdCwgaW50KTsKIAogaW50IHNjdHBfZXhwYW5kX21hcHBpbmdf
YXJyYXkoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKiwgdWludDMyX3QpOwogCiB2b2lkIHNjdHBf
YWJvcnRfbm90aWZpY2F0aW9uKHN0cnVjdCBzY3RwX3RjYiAqLCB1aW50OF90LCB1aW50MTZfdCwK
LQkJCSAgICAgc3RydWN0IHNjdHBfYWJvcnRfY2h1bmsgKiwgaW50Ci0jaWYgIWRlZmluZWQoX19B
UFBMRV9fKSAmJiAhZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKLSAgICBTQ1RQX1VOVVNF
RAotI2VuZGlmCi0gICAgKTsKKwkJCSAgICAgc3RydWN0IHNjdHBfYWJvcnRfY2h1bmsgKiwgaW50
KTsKIAogLyogV2UgYWJvcnQgcmVzcG9uZGluZyB0byBhbiBJUCBwYWNrZXQgZm9yIHNvbWUgcmVh
c29uICovCiB2b2lkCiBzY3RwX2Fib3J0X2Fzc29jaWF0aW9uKHN0cnVjdCBzY3RwX2lucGNiICos
IHN0cnVjdCBzY3RwX3RjYiAqLCBzdHJ1Y3QgbWJ1ZiAqLAogICAgICAgICAgICAgICAgICAgICAg
ICBpbnQsIHN0cnVjdCBzb2NrYWRkciAqLCBzdHJ1Y3Qgc29ja2FkZHIgKiwKICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IHNjdHBoZHIgKiwgc3RydWN0IG1idWYgKiwKLSNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNl
cnNwYWNlX18pCiAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QsIHVpbnQzMl90LAogI2Vu
ZGlmCiAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90LCB1aW50MTZfdCk7CkBAIC0yMDUs
MTcgKzIwMCwxMyBAQCBzY3RwX2Fib3J0X2Fzc29jaWF0aW9uKHN0cnVjdCBzY3RwX2lucGNiICos
IHN0cnVjdCBzY3RwX3RjYiAqLCBzdHJ1Y3QgbWJ1ZiAqLAogLyogV2UgY2hvb3NlIHRvIGFib3J0
IHZpYSB1c2VyIGlucHV0ICovCiB2b2lkCiBzY3RwX2Fib3J0X2FuX2Fzc29jaWF0aW9uKHN0cnVj
dCBzY3RwX2lucGNiICosIHN0cnVjdCBzY3RwX3RjYiAqLAotICAgIHN0cnVjdCBtYnVmICosIGlu
dAotI2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJ
TkcpCi0gICAgU0NUUF9VTlVTRUQKLSNlbmRpZgotKTsKKyAgICBzdHJ1Y3QgbWJ1ZiAqLCBpbnQp
OwogCiB2b2lkIHNjdHBfaGFuZGxlX29vdGIoc3RydWN0IG1idWYgKiwgaW50LCBpbnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyICosIHN0cnVjdCBzb2NrYWRkciAqLAog
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY3RwaGRyICosIHN0cnVjdCBzY3RwX2lucGNi
ICosCiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG1idWYgKiwKLSNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCwgdWludDMyX3QsIHVpbnQxNl90
LAogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QsIHVpbnQxNl90KTsKQEAg
LTIyMywxMCArMjE0LDkgQEAgdm9pZCBzY3RwX2hhbmRsZV9vb3RiKHN0cnVjdCBtYnVmICosIGlu
dCwgaW50LAogaW50IHNjdHBfY29ubmVjdHhfaGVscGVyX2FkZChzdHJ1Y3Qgc2N0cF90Y2IgKnN0
Y2IsIHN0cnVjdCBzb2NrYWRkciAqYWRkciwKICAgICBpbnQgdG90YWRkciwgaW50ICplcnJvcik7
CiAKLXN0cnVjdCBzY3RwX3RjYiAqCi1zY3RwX2Nvbm5lY3R4X2hlbHBlcl9maW5kKHN0cnVjdCBz
Y3RwX2lucGNiICppbnAsIHN0cnVjdCBzb2NrYWRkciAqYWRkciwKLSAgICB1bnNpZ25lZCBpbnQg
KnRvdGFkZHIsIHVuc2lnbmVkIGludCAqbnVtX3Y0LCB1bnNpZ25lZCBpbnQgKm51bV92NiwKLSAg
ICBpbnQgKmVycm9yLCB1bnNpZ25lZCBpbnQgbGltaXQsIGludCAqYmFkX2FkZHIpOworaW50Citz
Y3RwX2Nvbm5lY3R4X2hlbHBlcl9maW5kKHN0cnVjdCBzY3RwX2lucGNiICosIHN0cnVjdCBzb2Nr
YWRkciAqLAorICAgIHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50ICosIHVuc2lnbmVkIGludCAq
LCB1bnNpZ25lZCBpbnQpOwogCiBpbnQgc2N0cF9pc190aGVyZV9hbl9hYm9ydF9oZXJlKHN0cnVj
dCBtYnVmICosIGludCwgdWludDMyX3QgKik7CiAjaWZkZWYgSU5FVDYKQEAgLTI3NywyMSArMjY3
LDE2IEBAIHZvaWQgc2N0cF9wcmludF9hZGRyZXNzKHN0cnVjdCBzb2NrYWRkciAqKTsKIAogaW50
CiBzY3RwX3JlbGVhc2VfcHJfc2N0cF9jaHVuayhzdHJ1Y3Qgc2N0cF90Y2IgKiwgc3RydWN0IHNj
dHBfdG1pdF9jaHVuayAqLAotICAgIHVpbnQ4X3QsIGludAotI2lmICFkZWZpbmVkKF9fQVBQTEVf
XykgJiYgIWRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCi0gICAgU0NUUF9VTlVTRUQKLSNl
bmRpZgotKTsKKyAgICB1aW50OF90LCBpbnQpOwogCiBzdHJ1Y3QgbWJ1ZiAqc2N0cF9nZW5lcmF0
ZV9jYXVzZSh1aW50MTZfdCwgY2hhciAqKTsKIHN0cnVjdCBtYnVmICpzY3RwX2dlbmVyYXRlX25v
X3VzZXJfZGF0YV9jYXVzZSh1aW50MzJfdCk7CiAKIHZvaWQgc2N0cF9iaW5keF9hZGRfYWRkcmVz
cyhzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKLQkJCSAgICBzdHJ1
Y3Qgc29ja2FkZHIgKnNhLCBzY3RwX2Fzc29jX3QgYXNzb2NfaWQsCi0JCQkgICAgdWludDMyX3Qg
dnJmX2lkLCBpbnQgKmVycm9yLCB2b2lkICpwKTsKLXZvaWQgc2N0cF9iaW5keF9kZWxldGVfYWRk
cmVzcyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAotCQkJICAgICAgIHN0cnVjdCBzb2NrYWRkciAq
c2EsIHNjdHBfYXNzb2NfdCBhc3NvY19pZCwKLQkJCSAgICAgICB1aW50MzJfdCB2cmZfaWQsIGlu
dCAqZXJyb3IpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkciAq
c2EsIHVpbnQzMl90IHZyZl9pZCwgaW50ICplcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2b2lkICpwKTsKK3ZvaWQgc2N0cF9iaW5keF9kZWxldGVfYWRkcmVzcyhzdHJ1Y3Qgc2N0
cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc29ja2FkZHIgKnNhLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQzMl90IHZyZl9pZCwgaW50ICplcnJvcik7CiAKIGludCBzY3RwX2xvY2Fs
X2FkZHJfY291bnQoc3RydWN0IHNjdHBfdGNiICpzdGNiKTsKIApAQCAtMzUzLDExICszMzgsMTEg
QEAgZG8geyBcCiB9IHdoaWxlICgwKQogCiAvKiBmdW5jdGlvbnMgdG8gc3RhcnQvc3RvcCB1ZHAg
dHVubmVsaW5nICovCi0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19GcmVlQlNE
X18pCisjaWYgKGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSkgJiYg
IWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIHZvaWQgc2N0cF9vdmVyX3VkcF9zdG9wKHZvaWQpOwog
aW50IHNjdHBfb3Zlcl91ZHBfc3RhcnQodm9pZCk7CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fV2lu
ZG93c19fKQorI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQog
dm9pZCBzY3RwX292ZXJfdWRwX3Jlc3RhcnQodm9pZCk7CiAjZW5kaWYKIApAQCAtNDAzLDcgKzM4
OCw3IEBAIHZvaWQgc2N0cF9sb2dfY2xvc2luZyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1
Y3Qgc2N0cF90Y2IgKnN0Y2IsIGludDE2X3QgbG9jCiAKIHZvaWQgc2N0cF9sb2dfbG9jayhzdHJ1
Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQ4X3QgZnJvbSk7
CiB2b2lkIHNjdHBfbG9nX21heGJ1cnN0KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNj
dHBfbmV0cyAqLCBpbnQsIGludCwgdWludDhfdCk7Ci12b2lkIHNjdHBfbG9nX2Jsb2NrKHVpbnQ4
X3QsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICosIHNpemVfdCk7Cit2b2lkIHNjdHBfbG9nX2Js
b2NrKHVpbnQ4X3QsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICosIHNzaXplX3QpOwogdm9pZCBz
Y3RwX2xvZ19yd25kKHVpbnQ4X3QsIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDMyX3QpOwogdm9p
ZCBzY3RwX2xvZ19yd25kX3NldCh1aW50OF90LCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90
LCB1aW50MzJfdCk7CiBpbnQgc2N0cF9maWxsX3N0YXRfbG9nKHZvaWQgKiwgc2l6ZV90ICopOwpA
QCAtNDIyLDkgKzQwNywxNiBAQCB2b2lkIHNjdHBfYXVkaXRfbG9nKHVpbnQ4X3QsIHVpbnQ4X3Qp
OwogCiAjZW5kaWYKIHVpbnQzMl90IHNjdHBfbWluX210dSh1aW50MzJfdCwgdWludDMyX3QsIHVp
bnQzMl90KTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiB2b2lkIHNjdHBfaGNfc2V0X210dSh1bmlv
biBzY3RwX3NvY2tzdG9yZSAqLCB1aW50MTZfdCwgdWludDMyX3QpOwogdWludDMyX3Qgc2N0cF9o
Y19nZXRfbXR1KHVuaW9uIHNjdHBfc29ja3N0b3JlICosIHVpbnQxNl90KTsKICNlbmRpZgordm9p
ZCBzY3RwX3NldF9zdGF0ZShzdHJ1Y3Qgc2N0cF90Y2IgKiwgaW50KTsKK3ZvaWQgc2N0cF9hZGRf
c3Vic3RhdGUoc3RydWN0IHNjdHBfdGNiICosIGludCk7Cit1aW50MzJfdCBzY3RwX3RpY2tzX3Rv
X21zZWNzKHVpbnQzMl90KTsKK3VpbnQzMl90IHNjdHBfbXNlY3NfdG9fdGlja3ModWludDMyX3Qp
OwordWludDMyX3Qgc2N0cF90aWNrc190b19zZWNzKHVpbnQzMl90KTsKK3VpbnQzMl90IHNjdHBf
c2Vjc190b190aWNrcyh1aW50MzJfdCk7CisKICNlbmRpZgkJCQkvKiBfS0VSTkVMICovCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldDYvbWVzb24uYnVpbGQg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAv
dXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQ2L21lc29uLmJ1aWxkCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDQzMDdkZjU5ZTA0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0Ni9tZXNvbi5idWlsZApAQCAtMCwwICsxIEBA
Citzb3VyY2VzICs9IGZpbGVzKCdzY3RwNl91c3JyZXEuYycpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi91c3JzY3RwbGliL25ldGluZXQ2L3NjdHA2X3VzcnJlcS5jIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxp
Yi9uZXRpbmV0Ni9zY3RwNl91c3JyZXEuYwppbmRleCA1YTU3ZmQ2ZTdiMzUuLjFmYzgxZGFhODdk
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0Ni9zY3RwNl91c3JyZXEu
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3Vz
cnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQ2L3NjdHA2X3VzcnJlcS5jCkBAIC0z
MiwxNCArMzIsMTQgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jaWZkZWYgX19GcmVlQlNEX18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVl
QlNEOiBoZWFkL3N5cy9uZXRpbmV0Ni9zY3RwNl91c3JyZXEuYyAzMzIyNzMgMjAxOC0wNC0wOCAx
MjowODoyMFogdHVleGVuICQiKTsKK19fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5l
dDYvc2N0cDZfdXNycmVxLmMgMzYxODk1IDIwMjAtMDYtMDcgMTQ6Mzk6MjBaIHR1ZXhlbiAkIik7
CiAjZW5kaWYKIAogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9vcy5oPgogI2lmZGVmIElORVQ2Ci0j
aWZkZWYgX19GcmVlQlNEX18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPHN5cy9wcm9jLmg+CiAjZW5kaWYKICNpbmNsdWRlIDxu
ZXRpbmV0L3NjdHBfcGNiLmg+CkBAIC01OCwxOCArNTgsMTEgQEAgX19GQlNESUQoIiRGcmVlQlNE
OiBoZWFkL3N5cy9uZXRpbmV0Ni9zY3RwNl91c3JyZXEuYyAzMzIyNzMgMjAxOC0wNC0wOCAxMjow
ODoyMFoKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfb3V0cHV0Lmg+CiAjaW5jbHVkZSA8bmV0aW5l
dC9zY3RwX2JzZF9hZGRyLmg+CiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX2NyYzMyLmg+Ci0jaWYg
IWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiAhZGVmaW5lZChfV0lOMzIpCiAj
aW5jbHVkZSA8bmV0aW5ldC9pY21wNi5oPgogI2luY2x1ZGUgPG5ldGluZXQvdWRwLmg+CiAjZW5k
aWYKLQotI2lmIGRlZmluZWQoX19BUFBMRV9fKQotI2RlZmluZSBBUFBMRV9GSUxFX05PIDkKLSNl
bmRpZgotI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi1leHRlcm4gc3RydWN0IHByb3Rvc3cg
aW5ldHN3W107Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKF9fUGFuZGFfXykgfHwgZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQorI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIGludCBpcDZfdjZvbmx5PTA7
CiAjZW5kaWYKICNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCkBAIC03Nyw3ICs3MCw3IEBAIGlu
dCBpcDZfdjZvbmx5PTA7CiB2b2lkCiBpbjZfc2luNl8yX3NpbihzdHJ1Y3Qgc29ja2FkZHJfaW4g
KnNpbiwgc3RydWN0IHNvY2thZGRyX2luNiAqc2luNikKIHsKLSNpZiBkZWZpbmVkKF9fVXNlcnNw
YWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJdWludDMyX3QgdGVtcDsKICNl
bmRpZgogCW1lbXNldChzaW4sIDAsIHNpemVvZigqc2luKSk7CkBAIC04Niw3ICs3OSw3IEBAIGlu
Nl9zaW42XzJfc2luKHN0cnVjdCBzb2NrYWRkcl9pbiAqc2luLCBzdHJ1Y3Qgc29ja2FkZHJfaW42
ICpzaW42KQogI2VuZGlmCiAJc2luLT5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKIAlzaW4tPnNpbl9w
b3J0ID0gc2luNi0+c2luNl9wb3J0OwotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93
cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIAl0ZW1wID0gc2luNi0+c2luNl9hZGRyLnM2X2FkZHIx
Nls3XTsKIAl0ZW1wID0gdGVtcCA8PCAxNjsKIAl0ZW1wID0gdGVtcCB8IHNpbjYtPnNpbjZfYWRk
ci5zNl9hZGRyMTZbNl07CkBAIC0xMDksNyArMTAyLDcgQEAgaW42X3NpbjZfMl9zaW5faW5fc29j
ayhzdHJ1Y3Qgc29ja2FkZHIgKm5hbSkKIH0KIAogdm9pZAotaW42X3Npbl8yX3Y0bWFwc2luNihz
dHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbiwgc3RydWN0IHNvY2thZGRyX2luNiAqc2luNikKK2luNl9z
aW5fMl92NG1hcHNpbjYoY29uc3Qgc3RydWN0IHNvY2thZGRyX2luICpzaW4sIHN0cnVjdCBzb2Nr
YWRkcl9pbjYgKnNpbjYpCiB7CiAJbWVtc2V0KHNpbjYsIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2Fk
ZHJfaW42KSk7CiAgCXNpbjYtPnNpbjZfZmFtaWx5ID0gQUZfSU5FVDY7CkBAIC0xMTcsNyArMTEw
LDcgQEAgaW42X3Npbl8yX3Y0bWFwc2luNihzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbiwgc3RydWN0
IHNvY2thZGRyX2luNiAqc2luNikKIAlzaW42LT5zaW42X2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29j
a2FkZHJfaW42KTsKICNlbmRpZgogCXNpbjYtPnNpbjZfcG9ydCA9IHNpbi0+c2luX3BvcnQ7Ci0j
aWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQog
CSgodWludDMyX3QgKikmc2luNi0+c2luNl9hZGRyKVswXSA9IDA7CiAJKCh1aW50MzJfdCAqKSZz
aW42LT5zaW42X2FkZHIpWzFdID0gMDsKIAkoKHVpbnQzMl90ICopJnNpbjYtPnNpbjZfYWRkcilb
Ml0gPSBodG9ubCgweGZmZmYpOwpAQCAtMTM2LDggKzEyOSw2IEBAIGluNl9zaW5fMl92NG1hcHNp
bjYoc3RydWN0IHNvY2thZGRyX2luICpzaW4sIHN0cnVjdCBzb2NrYWRkcl9pbjYgKnNpbjYpCiBp
bnQKICNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykKIHNjdHA2
X2lucHV0X3dpdGhfcG9ydChzdHJ1Y3QgbWJ1ZiAqKmlfcGFrLCBpbnQgKm9mZnAsIHVpbnQxNl90
IHBvcnQpCi0jZWxpZiBkZWZpbmVkKCBfX1BhbmRhX18pCi1zY3RwNl9pbnB1dChwYWtoYW5kbGVf
dHlwZSAqaV9wYWspCiAjZWxzZQogc2N0cDZfaW5wdXQoc3RydWN0IG1idWYgKippX3BhaywgaW50
ICpvZmZwLCBpbnQgcHJvdG8pCiAjZW5kaWYKQEAgLTE1NywyNSArMTQ4LDE2IEBAIHNjdHA2X2lu
cHV0KHN0cnVjdCBtYnVmICoqaV9wYWssIGludCAqb2ZmcCwgaW50IHByb3RvKQogCXVpbnQ4X3Qg
bWZsb3d0eXBlOwogCXVpbnQxNl90IGZpYm51bTsKICNlbmRpZgotI2lmICEoZGVmaW5lZChfX0FQ
UExFX18pIHx8IGRlZmluZWQgKF9fRnJlZUJTRF9fKSkKKyNpZiAhKGRlZmluZWQoX19BUFBMRV9f
KSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSkKIAl1aW50MTZfdCBwb3J0ID0gMDsKICNlbmRpZgog
Ci0jaWYgZGVmaW5lZChfX1BhbmRhX18pCi0JLyogVGhpcyBpcyBFdmlsLCBidXQgaXRzIHRoZSBv
bmx5IHdheSB0byBtYWtlIHBhbmRhIHdvcmsgcmlnaHQuICovCi0JaXBobGVuID0gc2l6ZW9mKHN0
cnVjdCBpcDZfaGRyKTsKLSNlbHNlCiAJaXBobGVuID0gKm9mZnA7Ci0jZW5kaWYKIAlpZiAoU0NU
UF9HRVRfUEtUX1ZSRklEKCppX3BhaywgdnJmX2lkKSkgewogCQlTQ1RQX1JFTEVBU0VfUEtUKCpp
X3Bhayk7CiAJCXJldHVybiAoSVBQUk9UT19ET05FKTsKIAl9CiAJbSA9IFNDVFBfSEVBREVSX1RP
X0NIQUlOKCppX3Bhayk7Ci0jaWZkZWYgX19QYW5kYV9fCi0JU0NUUF9ERVRBQ0hfSEVBREVSX0ZS
T01fQ0hBSU4oKmlfcGFrKTsKLQkodm9pZClTQ1RQX1JFTEVBU0VfSEVBREVSKCppX3Bhayk7Ci0j
ZW5kaWYKICNpZmRlZiBTQ1RQX01CVUZfTE9HR0lORwogCS8qIExvZyBpbiBhbnkgaW5wdXQgbWJ1
ZnMgKi8KIAlpZiAoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2xvZ2dpbmdfbGV2ZWwpICYgU0NUUF9N
QlVGX0xPR0dJTkdfRU5BQkxFKSB7CkBAIC0xODgsMjUgKzE3MCwxMSBAQCBzY3RwNl9pbnB1dChz
dHJ1Y3QgbWJ1ZiAqKmlfcGFrLCBpbnQgKm9mZnAsIGludCBwcm90bykKIAl9CiAjZW5kaWYKICNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQotI2lmIF9fRnJlZUJTRF92ZXJzaW9uID4gMTAwMDA0OQog
CVNDVFBEQkcoU0NUUF9ERUJVR19DUkNPRkZMT0FELAogCSAgICAgICAgInNjdHA2X2lucHV0KCk6
IFBhY2tldCBvZiBsZW5ndGggJWQgcmVjZWl2ZWQgb24gJXMgd2l0aCBjc3VtX2ZsYWdzIDB4JWIu
XG4iLAogCSAgICAgICAgbS0+bV9wa3RoZHIubGVuLAogCSAgICAgICAgaWZfbmFtZShtLT5tX3Br
dGhkci5yY3ZpZiksCiAJICAgICAgICAoaW50KW0tPm1fcGt0aGRyLmNzdW1fZmxhZ3MsIENTVU1f
QklUUyk7Ci0jZWxpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDAwMDAKLQlTQ1RQREJHKFNDVFBf
REVCVUdfQ1JDT0ZGTE9BRCwKLQkgICAgICAgICJzY3RwNl9pbnB1dCgpOiBQYWNrZXQgb2YgbGVu
Z3RoICVkIHJlY2VpdmVkIG9uICVzIHdpdGggY3N1bV9mbGFncyAweCV4LlxuIiwKLQkgICAgICAg
IG0tPm1fcGt0aGRyLmxlbiwKLQkgICAgICAgIGlmX25hbWUobS0+bV9wa3RoZHIucmN2aWYpLAot
CSAgICAgICAgbS0+bV9wa3RoZHIuY3N1bV9mbGFncyk7Ci0jZWxzZQotCVNDVFBEQkcoU0NUUF9E
RUJVR19DUkNPRkZMT0FELAotCSAgICAgICAgInNjdHA2X2lucHV0KCk6IFBhY2tldCBvZiBsZW5n
dGggJWQgcmVjZWl2ZWQgb24gJXMgd2l0aCBjc3VtX2ZsYWdzIDB4JXguXG4iLAotCSAgICAgICAg
bS0+bV9wa3RoZHIubGVuLAotCSAgICAgICAgbS0+bV9wa3RoZHIucmN2aWYtPmlmX3huYW1lLAot
CSAgICAgICAgbS0+bV9wa3RoZHIuY3N1bV9mbGFncyk7Ci0jZW5kaWYKICNlbmRpZgogI2lmIGRl
ZmluZWQoX19BUFBMRV9fKQogCVNDVFBEQkcoU0NUUF9ERUJVR19DUkNPRkZMT0FELApAQCAtMjE2
LDcgKzE4NCw3IEBAIHNjdHA2X2lucHV0KHN0cnVjdCBtYnVmICoqaV9wYWssIGludCAqb2ZmcCwg
aW50IHByb3RvKQogCSAgICAgICAgbS0+bV9wa3RoZHIucmN2aWYtPmlmX3VuaXQsCiAJICAgICAg
ICBtLT5tX3BrdGhkci5jc3VtX2ZsYWdzKTsKICNlbmRpZgotI2lmIGRlZmluZWQoX19XaW5kb3dz
X18pCisjaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJU0NU
UERCRyhTQ1RQX0RFQlVHX0NSQ09GRkxPQUQsCiAJICAgICAgICAic2N0cDZfaW5wdXQoKTogUGFj
a2V0IG9mIGxlbmd0aCAlZCByZWNlaXZlZCBvbiAlcyB3aXRoIGNzdW1fZmxhZ3MgMHgleC5cbiIs
CiAJICAgICAgICBtLT5tX3BrdGhkci5sZW4sCkBAIC0yMzIsMTMgKzIwMCwxNSBAQCBzY3RwNl9p
bnB1dChzdHJ1Y3QgbWJ1ZiAqKmlfcGFrLCBpbnQgKm9mZnAsIGludCBwcm90bykKIAlTQ1RQX1NU
QVRfSU5DUl9DT1VOVEVSNjQoc2N0cHNfaW5wYWNrZXRzKTsKIAkvKiBHZXQgSVAsIFNDVFAsIGFu
ZCBmaXJzdCBjaHVuayBoZWFkZXIgdG9nZXRoZXIgaW4gdGhlIGZpcnN0IG1idWYuICovCiAJb2Zm
c2V0ID0gaXBobGVuICsgc2l6ZW9mKHN0cnVjdCBzY3RwaGRyKSArIHNpemVvZihzdHJ1Y3Qgc2N0
cF9jaHVua2hkcik7Ci0JaXA2ID0gbXRvZChtLCBzdHJ1Y3QgaXA2X2hkciAqKTsKLQlJUDZfRVhU
SERSX0dFVChzaCwgc3RydWN0IHNjdHBoZHIgKiwgbSwgaXBobGVuLAotCQkgICAgICAgKGludCko
c2l6ZW9mKHN0cnVjdCBzY3RwaGRyKSArIHNpemVvZihzdHJ1Y3Qgc2N0cF9jaHVua2hkcikpKTsK
LQlpZiAoc2ggPT0gTlVMTCkgewotCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19oZHJvcHMpOwotCQly
ZXR1cm4gKElQUFJPVE9fRE9ORSk7CisJaWYgKG0tPm1fbGVuIDwgb2Zmc2V0KSB7CisJCW0gPSBt
X3B1bGx1cChtLCBvZmZzZXQpOworCQlpZiAobSA9PSBOVUxMKSB7CisJCQlTQ1RQX1NUQVRfSU5D
UihzY3Rwc19oZHJvcHMpOworCQkJcmV0dXJuIChJUFBST1RPX0RPTkUpOworCQl9CiAJfQorCWlw
NiA9IG10b2QobSwgc3RydWN0IGlwNl9oZHIgKik7CisJc2ggPSAoc3RydWN0IHNjdHBoZHIgKiko
bXRvZChtLCBjYWRkcl90KSArIGlwaGxlbik7CiAJY2ggPSAoc3RydWN0IHNjdHBfY2h1bmtoZHIg
KikoKGNhZGRyX3Qpc2ggKyBzaXplb2Yoc3RydWN0IHNjdHBoZHIpKTsKIAlvZmZzZXQgLT0gc2l6
ZW9mKHN0cnVjdCBzY3RwX2NodW5raGRyKTsKIAltZW1zZXQoJnNyYywgMCwgc2l6ZW9mKHN0cnVj
dCBzb2NrYWRkcl9pbjYpKTsKQEAgLTI5MCw3ICsyNjAsNyBAQCBzY3RwNl9pbnB1dChzdHJ1Y3Qg
bWJ1ZiAqKmlfcGFrLCBpbnQgKm9mZnAsIGludCBwcm90bykKIAkJZ290byBvdXQ7CiAJfQogCWVj
bl9iaXRzID0gKChudG9obChpcDYtPmlwNl9mbG93KSA+PiAyMCkgJiAweDAwMDAwMGZmKTsKLSNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDAwMDAKKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQogCWlmIChtLT5tX3BrdGhkci5jc3VtX2ZsYWdzICYgQ1NV
TV9TQ1RQX1ZBTElEKSB7CiAJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3JlY3Zod2NyYyk7CiAJCWNv
bXB1dGVfY3JjID0gMDsKQEAgLTM0Niw3ICszMTYsNyBAQCBzY3RwNl9ub3RpZnkoc3RydWN0IHNj
dHBfaW5wY2IgKmlucCwKICAgICAgICAgICAgICB1aW50OF90IGljbXA2X2NvZGUsCiAgICAgICAg
ICAgICAgdWludDMyX3QgbmV4dF9tdHUpCiB7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRl
ZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pCiAJc3Ry
dWN0IHNvY2tldCAqc287CiAjZW5kaWYKIAlpbnQgdGltZXJfc3RvcHBlZDsKQEAgLTM3Miw3ICsz
NDIsNyBAQCBzY3RwNl9ub3RpZnkoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJLyogVHJlYXQg
aXQgbGlrZSBhbiBBQk9SVC4gKi8KIAkJaWYgKGljbXA2X2NvZGUgPT0gSUNNUDZfUEFSQU1QUk9C
X05FWFRIRUFERVIpIHsKIAkJCXNjdHBfYWJvcnRfbm90aWZpY2F0aW9uKHN0Y2IsIDEsIDAsIE5V
TEwsIFNDVFBfU09fTk9UX0xPQ0tFRCk7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmlu
ZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCisjaWYgZGVmaW5lZChfX0FQUExFX18pCiAJCQlzbyA9
IFNDVFBfSU5QX1NPKGlucCk7CiAJCQlhdG9taWNfYWRkX2ludCgmc3RjYi0+YXNvYy5yZWZjbnQs
IDEpOwogCQkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwpAQCAtMzgyLDcgKzM1Miw3IEBAIHNjdHA2
X25vdGlmeShzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogI2VuZGlmCiAJCQkodm9pZClzY3RwX2Zy
ZWVfYXNzb2MoaW5wLCBzdGNiLCBTQ1RQX05PUk1BTF9QUk9DLAogCQkJCQkgICAgICBTQ1RQX0ZS
T01fU0NUUF9VU1JSRVEgKyBTQ1RQX0xPQ18yKTsKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwg
ZGVmaW5lZChTQ1RQX1NPX0xPQ0tfVEVTVElORykKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykKIAkJ
CVNDVFBfU09DS0VUX1VOTE9DSyhzbywgMSk7CiAjZW5kaWYKIAkJfSBlbHNlIHsKQEAgLTQwNyw2
ICszNzcsMTMgQEAgc2N0cDZfbm90aWZ5KHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCX0KIAkJ
aWYgKG5ldC0+bXR1ID4gbmV4dF9tdHUpIHsKIAkJCW5ldC0+bXR1ID0gbmV4dF9tdHU7CisjaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykKKwkJCWlmIChuZXQtPnBvcnQpIHsKKwkJCQlzY3RwX2hjX3Nl
dF9tdHUoJm5ldC0+cm8uX2xfYWRkciwgaW5wLT5maWJudW0sIG5leHRfbXR1ICsgc2l6ZW9mKHN0
cnVjdCB1ZHBoZHIpKTsKKwkJCX0gZWxzZSB7CisJCQkJc2N0cF9oY19zZXRfbXR1KCZuZXQtPnJv
Ll9sX2FkZHIsIGlucC0+ZmlibnVtLCBuZXh0X210dSk7CisJCQl9CisjZW5kaWYKIAkJfQogCQkv
KiBVcGRhdGUgdGhlIGFzc29jaWF0aW9uIE1UVSAqLwogCQlpZiAoc3RjYi0+YXNvYy5zbWFsbGVz
dF9tdHUgPiBuZXh0X210dSkgewpAQCAtNTcxLDEzICs1NDgsMjUgQEAgc2N0cDZfY3RsaW5wdXQo
aW50IGNtZCwgc3RydWN0IHNvY2thZGRyICpwa3Rkc3QsIHZvaWQgKmQpCiAJCQkgICAgICAgICAg
ICAgaXA2Y3AtPmlwNmNfaWNtcDYtPmljbXA2X3R5cGUsCiAJCQkgICAgICAgICAgICAgaXA2Y3At
PmlwNmNfaWNtcDYtPmljbXA2X2NvZGUsCiAJCQkgICAgICAgICAgICAgbnRvaGwoaXA2Y3AtPmlw
NmNfaWNtcDYtPmljbXA2X210dSkpOwotCQl9IGVsc2UgewotI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pICYmIF9fRnJlZUJTRF92ZXJzaW9uIDwgNTAwMDAwCi0JCQlpZiAoUFJDX0lTX1JFRElSRUNU
KGNtZCkgJiYgKGlucCAhPSBOVUxMKSkgewotCQkJCWluNl9ydGNoYW5nZSgoc3RydWN0IGluNnBj
YiAqKWlucCwKLQkJCQkgICAgaW5ldDZjdGxlcnJtYXBbY21kXSk7CisjaWYgZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQorCQkJaWYgKCEoc3RjYi0+c2N0cF9lcC0+c2N0cF9mbGFncyAmIFNDVFBfUENC
X0ZMQUdTX1NPQ0tFVF9HT05FKSAmJgorCQkJICAgIChzdGNiLT5zY3RwX3NvY2tldCAhPSBOVUxM
KSB7CisJCQkJc3RydWN0IHNvY2tldCAqdXBjYWxsX3NvY2tldDsKKworCQkJCXVwY2FsbF9zb2Nr
ZXQgPSBzdGNiLT5zY3RwX3NvY2tldDsKKwkJCQlTT0NLX0xPQ0sodXBjYWxsX3NvY2tldCk7CisJ
CQkJc29yZWYodXBjYWxsX3NvY2tldCk7CisJCQkJU09DS19VTkxPQ0sodXBjYWxsX3NvY2tldCk7
CisJCQkJaWYgKCh1cGNhbGxfc29ja2V0LT5zb191cGNhbGwgIT0gTlVMTCkgJiYKKwkJCQkgICAg
KHVwY2FsbF9zb2NrZXQtPnNvX2Vycm9yICE9IDApKSB7CisJCQkJCSgqdXBjYWxsX3NvY2tldC0+
c29fdXBjYWxsKSh1cGNhbGxfc29ja2V0LCB1cGNhbGxfc29ja2V0LT5zb191cGNhbGxhcmcsIE1f
Tk9XQUlUKTsKKwkJCQl9CisJCQkJQUNDRVBUX0xPQ0soKTsKKwkJCQlTT0NLX0xPQ0sodXBjYWxs
X3NvY2tldCk7CisJCQkJc29yZWxlKHVwY2FsbF9zb2NrZXQpOwogCQkJfQogI2VuZGlmCisJCX0g
ZWxzZSB7CiAJCQlpZiAoKHN0Y2IgPT0gTlVMTCkgJiYgKGlucCAhPSBOVUxMKSkgewogCQkJCS8q
IHJlZHVjZSBpbnAncyByZWYtY291bnQgKi8KIAkJCQlTQ1RQX0lOUF9XTE9DSyhpbnApOwpAQCAt
NTk2LDcgKzU4NSw3IEBAIHNjdHA2X2N0bGlucHV0KGludCBjbWQsIHN0cnVjdCBzb2NrYWRkciAq
cGt0ZHN0LCB2b2lkICpkKQogICogdGhpcyByb3V0aW5lIGNhbiBwcm9iYWJseSBiZSBjb2xsYXNw
ZWQgaW50byB0aGUgb25lIGluIHNjdHBfdXNlcnJlcS5jCiAgKiBzaW5jZSB0aGV5IGRvIHRoZSBz
YW1lIHRoaW5nIGFuZCBub3cgd2UgbG9va3VwIHdpdGggYSBzb2NrYWRkcgogICovCi0jaWZkZWYg
X19GcmVlQlNEX18KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogc3RhdGljIGludAogc2N0cDZfZ2V0Y3JlZChTWVNDVExfSEFORExFUl9BUkdTKQog
ewpAQCAtNjA4LDE2ICs1OTcsMTAgQEAgc2N0cDZfZ2V0Y3JlZChTWVNDVExfSEFORExFUl9BUkdT
KQogCWludCBlcnJvcjsKIAl1aW50MzJfdCB2cmZfaWQ7CiAKLSNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykKIAl2cmZfaWQgPSBTQ1RQX0RFRkFVTFRfVlJGSUQ7
Ci0jZWxzZQotCXZyZl9pZCA9IHBhbmRhX2dldF92cmZfZnJvbV9jYWxsKCk7IC8qIGZyb20gY29u
bmVjdHggY2FsbD8gKi8KLSNlbmRpZgogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19G
cmVlQlNEX3ZlcnNpb24gPiA2MDIwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCWVycm9yID0gcHJpdl9jaGVjayhyZXEtPnRkLCBQUklWX05F
VElORVRfR0VUQ1JFRCk7Ci0jZWxpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0Rf
dmVyc2lvbiA+PSA1MDAwMDAKLQllcnJvciA9IHN1c2VyKHJlcS0+dGQpOwogI2Vsc2UKIAllcnJv
ciA9IHN1c2VyKHJlcS0+cCk7CiAjZW5kaWYKQEAgLTY3OSwyNyArNjYyLDMzIEBAIFNZU0NUTF9Q
Uk9DKF9uZXRfaW5ldDZfc2N0cDYsIE9JRF9BVVRPLCBnZXRjcmVkLCBDVExUWVBFX09QQVFVRSB8
IENUTEZMQUdfUlcsCiAjZW5kaWYKIAogLyogVGhpcyBpcyB0aGUgc2FtZSBhcyB0aGUgc2N0cF9h
Ym9ydCgpIGNvdWxkIGJlIG1hZGUgY29tbW9uICovCi0jaWYgKGRlZmluZWQoX19GcmVlQlNEX18p
ICYmIF9fRnJlZUJTRF92ZXJzaW9uID4gNjkwMDAwKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQot
c3RhdGljIHZvaWQKLSNlbGlmIGRlZmluZWQoX19QYW5kYV9fKSB8fCBkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCisjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogaW50CisjZWxpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9XSU4zMikKK3N0YXRpYyB2b2lkCiAjZWxzZQogc3RhdGlj
IGludAogI2VuZGlmCiBzY3RwNl9hYm9ydChzdHJ1Y3Qgc29ja2V0ICpzbykKIHsKKyNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCXN0cnVjdCBlcG9j
aF90cmFja2VyIGV0OworI2VuZGlmCiAJc3RydWN0IHNjdHBfaW5wY2IgKmlucDsKIAl1aW50MzJf
dCBmbGFnczsKIAogCWlucCA9IChzdHJ1Y3Qgc2N0cF9pbnBjYiAqKXNvLT5zb19wY2I7CiAJaWYg
KGlucCA9PSBOVUxMKSB7CiAJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBT
Q1RQX0ZST01fU0NUUDZfVVNSUkVRLCBFSU5WQUwpOwotI2lmIChkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDY5MDAwMCkgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykK
KyNpZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfV0lOMzIpKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogCQlyZXR1cm47CiAjZWxzZQogCQlyZXR1cm4gKEVJTlZBTCk7CiAj
ZW5kaWYKIAl9CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKKwlORVRfRVBPQ0hfRU5URVIoZXQpOworI2VuZGlmCiAgc2N0cF9tdXN0X3RyeV9hZ2Fp
bjoKIAlmbGFncyA9IGlucC0+c2N0cF9mbGFnczsKICNpZmRlZiBTQ1RQX0xPR19DTE9TSU5HCkBA
IC03MTgsNyArNzA3LDcgQEAgc2N0cDZfYWJvcnQoc3RydWN0IHNvY2tldCAqc28pCiAJCSAqIGhl
cmUgZm9yIHRoZSBhY2NvdW50aW5nL3NlbGVjdC4KIAkJICovCiAJCVNDVFBfU0JfQ0xFQVIoc28t
PnNvX3Jjdik7Ci0jaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18p
ICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCXNvLT5zb191c2Vjb3VudC0tOwogI2Vsc2UK
IAkJLyogTm93IG51bGwgb3V0IHRoZSByZWZlcmVuY2UsIHdlIGFyZSBjb21wbGV0ZWx5IGRldGFj
aGVkLiAqLwpAQCAtNzMxLDIwICs3MjAsMjEgQEAgc2N0cDZfYWJvcnQoc3RydWN0IHNvY2tldCAq
c28pCiAJCQlnb3RvIHNjdHBfbXVzdF90cnlfYWdhaW47CiAJCX0KIAl9Ci0jaWYgKGRlZmluZWQo
X19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID4gNjkwMDAwKSB8fCBkZWZpbmVkKF9f
V2luZG93c19fKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCisJTkVUX0VQT0NIX0VYSVQoZXQpOwogCXJldHVybjsKICNlbHNlCiAJcmV0dXJuICgw
KTsKICNlbmRpZgogfQogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3Zl
cnNpb24gPj0gNTAwMDAwCi1zdGF0aWMgaW50Ci1zY3RwNl9hdHRhY2goc3RydWN0IHNvY2tldCAq
c28sIGludCBwcm90byBTQ1RQX1VOVVNFRCwgc3RydWN0IHRocmVhZCAqcCBTQ1RQX1VOVVNFRCkK
LSNlbGlmIGRlZmluZWQoX19QYW5kYV9fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaWYg
ZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogaW50CiBzY3RwNl9hdHRhY2goc3RydWN0IHNvY2tldCAq
c28sIGludCBwcm90byBTQ1RQX1VOVVNFRCwgdWludDMyX3QgdnJmX2lkKQotI2VsaWYgZGVmaW5l
ZChfX1dpbmRvd3NfXykKKyNlbGlmIGRlZmluZWQoX19GcmVlQlNEX18pCitzdGF0aWMgaW50Citz
Y3RwNl9hdHRhY2goc3RydWN0IHNvY2tldCAqc28sIGludCBwcm90byBTQ1RQX1VOVVNFRCwgc3Ry
dWN0IHRocmVhZCAqcCBTQ1RQX1VOVVNFRCkKKyNlbGlmIGRlZmluZWQoX1dJTjMyKQogc3RhdGlj
IGludAogc2N0cDZfYXR0YWNoKHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgcHJvdG8gU0NUUF9VTlVT
RUQsIFBLVEhSRUFEIHAgU0NUUF9VTlVTRUQpCiAjZWxzZQpAQCAtNzUyLDEwICs3NDIsOSBAQCBz
dGF0aWMgaW50CiBzY3RwNl9hdHRhY2goc3RydWN0IHNvY2tldCAqc28sIGludCBwcm90byBTQ1RQ
X1VOVVNFRCwgc3RydWN0IHByb2MgKnAgU0NUUF9VTlVTRUQpCiAjZW5kaWYKIHsKLQlzdHJ1Y3Qg
aW42cGNiICppbnA2OwogCWludCBlcnJvcjsKIAlzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wOwotI2lm
ICFkZWZpbmVkKF9fUGFuZGFfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9fKQogCXVpbnQzMl90IHZyZl9pZCA9IFNDVFBfREVGQVVMVF9WUkZJ
RDsKICNlbmRpZgogCkBAIC03NzYsNDIgKzc2NSwzNSBAQCBzY3RwNl9hdHRhY2goc3RydWN0IHNv
Y2tldCAqc28sIGludCBwcm90byBTQ1RQX1VOVVNFRCwgc3RydWN0IHByb2MgKnAgU0NUUF9VTlVT
RQogCWlucCA9IChzdHJ1Y3Qgc2N0cF9pbnBjYiAqKXNvLT5zb19wY2I7CiAJU0NUUF9JTlBfV0xP
Q0soaW5wKTsKIAlpbnAtPnNjdHBfZmxhZ3MgfD0gU0NUUF9QQ0JfRkxBR1NfQk9VTkRfVjY7CS8q
IEknbSB2NiEgKi8KLQlpbnA2ID0gKHN0cnVjdCBpbjZwY2IgKilpbnA7CiAKLSNpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3Nf
XykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQotCWlucDYtPmlucF92ZmxhZyB8PSBJTlBfSVBW
NjsKLSNlbHNlCi0JaW5wLT5pbnBfdmZsYWcgfD0gSU5QX0lQVjY7Ci0jZW5kaWYKLSNpZiAhZGVm
aW5lZChfX1BhbmRhX18pCi0JaW5wNi0+aW42cF9ob3BzID0gLTE7CS8qIHVzZSBrZXJuZWwgZGVm
YXVsdCAqLwotCWlucDYtPmluNnBfY2tzdW0gPSAtMTsJLyoganVzdCB0byBiZSBzdXJlICovCi0j
ZW5kaWYKKwlpbnAtPmlwX2lucC5pbnAuaW5wX3ZmbGFnIHw9IElOUF9JUFY2OworCWlucC0+aXBf
aW5wLmlucC5pbjZwX2hvcHMgPSAtMTsJLyogdXNlIGtlcm5lbCBkZWZhdWx0ICovCisJaW5wLT5p
cF9pbnAuaW5wLmluNnBfY2tzdW0gPSAtMTsJLyoganVzdCB0byBiZSBzdXJlICovCiAjaWZkZWYg
SU5FVAogCS8qCiAJICogWFhYOiB1Z2x5ISEgSVB2NCBUVEwgaW5pdGlhbGl6YXRpb24gaXMgbmVj
ZXNzYXJ5IGZvciBhbiBJUHY2CiAJICogc29ja2V0IGFzIHdlbGwsIGJlY2F1c2UgdGhlIHNvY2tl
dCBtYXkgYmUgYm91bmQgdG8gYW4gSVB2NgogCSAqIHdpbGRjYXJkIGFkZHJlc3MsIHdoaWNoIG1h
eSBtYXRjaCBhbiBJUHY0LW1hcHBlZCBJUHY2IGFkZHJlc3MuCiAJICovCi0JaW5wNi0+aW5wX2lw
X3R0bCA9IE1PRFVMRV9HTE9CQUwoaXBfZGVmdHRsKTsKKwlpbnAtPmlwX2lucC5pbnAuaW5wX2lw
X3R0bCA9IE1PRFVMRV9HTE9CQUwoaXBfZGVmdHRsKTsKICNlbmRpZgogCVNDVFBfSU5QX1dVTkxP
Q0soaW5wKTsKIAlyZXR1cm4gKDApOwogfQogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
X19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMDAwCisjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQor
aW50CitzY3RwNl9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIs
IHZvaWQgKiBwKQoreworI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKIHN0YXRpYyBpbnQKIHNj
dHA2X2JpbmQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqYWRkciwgc3RydWN0
IHRocmVhZCAqcCkKIHsKLSNlbGlmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19B
UFBMRV9fKQorI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCiBzdGF0aWMgaW50CiBzY3RwNl9iaW5k
KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIHN0cnVjdCBwcm9jICpw
KQogewotI2VsaWYgZGVmaW5lZChfX1BhbmRhX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
LWludAotc2N0cDZfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRy
LCB2b2lkICogcCkKLXsKLSNlbGlmIGRlZmluZWQoX19XaW5kb3dzX18pCisjZWxpZiBkZWZpbmVk
KF9XSU4zMikKIHN0YXRpYyBpbnQKIHNjdHA2X2JpbmQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVj
dCBzb2NrYWRkciAqYWRkciwgUEtUSFJFQUQgcCkKIHsKQEAgLTgyMyw4ICs4MDUsOCBAQCBzY3Rw
Nl9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtLCBzdHJ1Y3QgcHJvYyAq
cCkKIAogI2VuZGlmCiAJc3RydWN0IHNjdHBfaW5wY2IgKmlucDsKLQlzdHJ1Y3QgaW42cGNiICpp
bnA2OwogCWludCBlcnJvcjsKKwl1X2NoYXIgdmZsYWdzYXY7CiAKIAlpbnAgPSAoc3RydWN0IHNj
dHBfaW5wY2IgKilzby0+c29fcGNiOwogCWlmIChpbnAgPT0gTlVMTCkgewpAQCAtODMyLDcgKzgx
NCw3IEBAIHNjdHA2X2JpbmQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICpuYW0sIHN0
cnVjdCBwcm9jICpwKQogCQlyZXR1cm4gKEVJTlZBTCk7CiAJfQogCi0jaWYgIWRlZmluZWQoX19X
aW5kb3dzX18pCisjaWYgIShkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykpCiAJaWYgKGFkZHIpIHsKIAkJc3dpdGNoIChhZGRyLT5zYV9mYW1pbHkpIHsKICNpZmRlZiBJ
TkVUCkBAIC04NjEsMjYgKzg0MywxNiBAQCBzY3RwNl9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvLCBz
dHJ1Y3QgbWJ1ZiAqbmFtLCBzdHJ1Y3QgcHJvYyAqcCkKIAkJfQogCX0KICNlbmRpZgotCWlucDYg
PSAoc3RydWN0IGluNnBjYiAqKWlucDsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZp
bmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQotCWlucDYtPmlucF92ZmxhZyAmPSB+SU5QX0lQVjQ7Ci0JaW5wNi0+aW5wX3ZmbGFn
IHw9IElOUF9JUFY2OwotI2Vsc2UKLQlpbnAtPmlucF92ZmxhZyAmPSB+SU5QX0lQVjQ7Ci0JaW5w
LT5pbnBfdmZsYWcgfD0gSU5QX0lQVjY7Ci0jZW5kaWYKLQlpZiAoKGFkZHIgIT0gTlVMTCkgJiYg
KFNDVFBfSVBWNl9WNk9OTFkoaW5wNikgPT0gMCkpIHsKKwl2ZmxhZ3NhdiA9IGlucC0+aXBfaW5w
LmlucC5pbnBfdmZsYWc7CisJaW5wLT5pcF9pbnAuaW5wLmlucF92ZmxhZyAmPSB+SU5QX0lQVjQ7
CisJaW5wLT5pcF9pbnAuaW5wLmlucF92ZmxhZyB8PSBJTlBfSVBWNjsKKwlpZiAoKGFkZHIgIT0g
TlVMTCkgJiYgKFNDVFBfSVBWNl9WNk9OTFkoaW5wKSA9PSAwKSkgewogCQlzd2l0Y2ggKGFkZHIt
PnNhX2ZhbWlseSkgewogI2lmZGVmIElORVQKIAkJY2FzZSBBRl9JTkVUOgogCQkJLyogYmluZGlu
ZyB2NCBhZGRyIHRvIHY2IHNvY2tldCwgc28gcmVzZXQgZmxhZ3MgKi8KLSNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykg
fHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQotCQkJaW5wNi0+aW5wX3ZmbGFnIHw9IElOUF9JUFY0
OwotCQkJaW5wNi0+aW5wX3ZmbGFnICY9IH5JTlBfSVBWNjsKLSNlbHNlCi0JCQlpbnAtPmlucF92
ZmxhZyB8PSBJTlBfSVBWNDsKLQkJCWlucC0+aW5wX3ZmbGFnICY9IH5JTlBfSVBWNjsKLSNlbmRp
ZgorCQkJaW5wLT5pcF9pbnAuaW5wLmlucF92ZmxhZyB8PSBJTlBfSVBWNDsKKwkJCWlucC0+aXBf
aW5wLmlucC5pbnBfdmZsYWcgJj0gfklOUF9JUFY2OwogCQkJYnJlYWs7CiAjZW5kaWYKICNpZmRl
ZiBJTkVUNgpAQCAtODkxLDI2ICs4NjMsMTcgQEAgc2N0cDZfYmluZChzdHJ1Y3Qgc29ja2V0ICpz
bywgc3RydWN0IG1idWYgKm5hbSwgc3RydWN0IHByb2MgKnApCiAJCQlzaW42X3AgPSAoc3RydWN0
IHNvY2thZGRyX2luNiAqKWFkZHI7CiAKIAkJCWlmIChJTjZfSVNfQUREUl9VTlNQRUNJRklFRCgm
c2luNl9wLT5zaW42X2FkZHIpKSB7Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5l
ZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pIHx8IGRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKLQkJCQlpbnA2LT5pbnBfdmZsYWcgfD0gSU5QX0lQVjQ7Ci0jZWxzZQotCQkJCWlucC0+
aW5wX3ZmbGFnIHw9IElOUF9JUFY0OwotI2VuZGlmCisJCQkJaW5wLT5pcF9pbnAuaW5wLmlucF92
ZmxhZyB8PSBJTlBfSVBWNDsKIAkJCX0KICNpZmRlZiBJTkVUCiAJCQlpZiAoSU42X0lTX0FERFJf
VjRNQVBQRUQoJnNpbjZfcC0+c2luNl9hZGRyKSkgewogCQkJCXN0cnVjdCBzb2NrYWRkcl9pbiBz
aW47CiAKIAkJCQlpbjZfc2luNl8yX3Npbigmc2luLCBzaW42X3ApOwotI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKSB8
fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi0JCQkJaW5wNi0+aW5wX3ZmbGFnIHw9IElOUF9JUFY0
OwotCQkJCWlucDYtPmlucF92ZmxhZyAmPSB+SU5QX0lQVjY7Ci0jZWxzZQotCQkJCWlucC0+aW5w
X3ZmbGFnIHw9IElOUF9JUFY0OwotCQkJCWlucC0+aW5wX3ZmbGFnICY9IH5JTlBfSVBWNjsKLSNl
bmRpZgorCQkJCWlucC0+aXBfaW5wLmlucC5pbnBfdmZsYWcgfD0gSU5QX0lQVjQ7CisJCQkJaW5w
LT5pcF9pbnAuaW5wLmlucF92ZmxhZyAmPSB+SU5QX0lQVjY7CiAJCQkJZXJyb3IgPSBzY3RwX2lu
cGNiX2JpbmQoc28sIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luLCBOVUxMLCBwKTsKLQkJCQlyZXR1
cm4gKGVycm9yKTsKKwkJCQlnb3RvIG91dDsKIAkJCX0KICNlbmRpZgogCQkJYnJlYWs7CkBAIC05
MjcsNyArODkwLDggQEAgc2N0cDZfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYg
Km5hbSwgc3RydWN0IHByb2MgKnApCiAJCWlmIChhZGRyLT5zYV9mYW1pbHkgPT0gQUZfSU5FVCkg
ewogCQkJLyogY2FuJ3QgYmluZCB2NCBhZGRyIHRvIHY2IG9ubHkgc29ja2V0ISAqLwogCQkJU0NU
UF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQNl9VU1JSRVEs
IEVJTlZBTCk7Ci0JCQlyZXR1cm4gKEVJTlZBTCk7CisJCQllcnJvciA9IEVJTlZBTDsKKwkJCWdv
dG8gb3V0OwogCQl9CiAjZW5kaWYKIAkJc2luNl9wID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilh
ZGRyOwpAQCAtOTM2LDE1ICs5MDAsMTkgQEAgc2N0cDZfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywg
c3RydWN0IG1idWYgKm5hbSwgc3RydWN0IHByb2MgKnApCiAJCQkvKiBjYW4ndCBiaW5kIHY0LW1h
cHBlZCBhZGRycyBlaXRoZXIhICovCiAJCQkvKiBOT1RFOiB3ZSBkb24ndCBzdXBwb3J0IFNJSVQg
Ki8KIAkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NU
UDZfVVNSUkVRLCBFSU5WQUwpOwotCQkJcmV0dXJuIChFSU5WQUwpOworCQkJZXJyb3IgPSBFSU5W
QUw7CisJCQlnb3RvIG91dDsKIAkJfQogCX0KIAllcnJvciA9IHNjdHBfaW5wY2JfYmluZChzbywg
YWRkciwgTlVMTCwgcCk7CitvdXQ6CisJaWYgKGVycm9yICE9IDApCisJCWlucC0+aXBfaW5wLmlu
cC5pbnBfdmZsYWcgPSB2ZmxhZ3NhdjsKIAlyZXR1cm4gKGVycm9yKTsKIH0KIAogCi0jaWYgKGRl
ZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID4gNjkwMDAwKSB8fCBkZWZp
bmVkKF9fV2luZG93c19fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
ICNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogc3RhdGljIHZvaWQKICNlbHNlCkBAIC05NTgs
OSArOTI2LDcgQEAgc2N0cDZfY2xvc2Uoc3RydWN0IHNvY2tldCAqc28pCiAvKiBUaGlzIGNvdWxk
IGJlIG1hZGUgY29tbW9uIHdpdGggc2N0cF9kZXRhY2goKSBzaW5jZSB0aGV5IGFyZSBpZGVudGlj
YWwgKi8KICNlbHNlCiAKLSNpZiAhZGVmaW5lZChfX1BhbmRhX18pCiBzdGF0aWMKLSNlbmRpZgog
aW50CiBzY3RwNl9kZXRhY2goc3RydWN0IHNvY2tldCAqc28pCiB7CkBAIC05NzQsNyArOTQwLDcg
QEAgc2N0cDZfZGV0YWNoKHN0cnVjdCBzb2NrZXQgKnNvKQogCiAjZW5kaWYKIAotI2lmICFkZWZp
bmVkKF9fUGFuZGFfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKyNpZiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQogc3RhdGljCiAjZW5kaWYKIGludApAQCAtOTg1LDcgKzk1MSw3IEBAIHNj
dHA2X2Rpc2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28pCiAKIAogaW50Ci0jaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMDAwCisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIHNjdHBfc2VuZG0oc3RydWN0
IHNvY2tldCAqc28sIGludCBmbGFncywgc3RydWN0IG1idWYgKm0sIHN0cnVjdCBzb2NrYWRkciAq
YWRkciwKICAgICBzdHJ1Y3QgbWJ1ZiAqY29udHJvbCwgc3RydWN0IHRocmVhZCAqcCk7CiAKQEAg
LTk5NSwxMyArOTYxLDEzIEBAIHNjdHBfc2VuZG0oc3RydWN0IHNvY2tldCAqc28sIGludCBmbGFn
cywgc3RydWN0IG1idWYgKm0sIHN0cnVjdCBzb2NrYWRkciAqYWRkciwKIAogI2VuZGlmCiAKLSNp
ZiAhZGVmaW5lZChfX1BhbmRhX18pICYmICFkZWZpbmVkKF9fV2luZG93c19fKSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92
ZXJzaW9uID49IDUwMDAwMAorI2lmICFkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQogc3RhdGljIGludAogc2N0cDZfc2Vu
ZChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IGZsYWdzLCBzdHJ1Y3QgbWJ1ZiAqbSwgc3RydWN0IHNv
Y2thZGRyICphZGRyLAogICAgIHN0cnVjdCBtYnVmICpjb250cm9sLCBzdHJ1Y3QgdGhyZWFkICpw
KQogewotI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pCisj
ZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKIHN0YXRpYyBpbnQKIHNjdHA2X3NlbmQoc3RydWN0IHNv
Y2tldCAqc28sIGludCBmbGFncywgc3RydWN0IG1idWYgKm0sIHN0cnVjdCBzb2NrYWRkciAqYWRk
ciwKICAgICBzdHJ1Y3QgbWJ1ZiAqY29udHJvbCwgc3RydWN0IHByb2MgKnApCkBAIC0xMDE0LDcg
Kzk4MCw2IEBAIHNjdHA2X3NlbmQoc3RydWN0IHNvY2tldCAqc28sIGludCBmbGFncywgc3RydWN0
IG1idWYgKm0sIHN0cnVjdCBtYnVmICpuYW0sCiAJc3RydWN0IHNvY2thZGRyICphZGRyID0gbmFt
ID8gbXRvZChuYW0sIHN0cnVjdCBzb2NrYWRkciAqKTogTlVMTDsKICNlbmRpZgogCXN0cnVjdCBz
Y3RwX2lucGNiICppbnA7Ci0Jc3RydWN0IGluNnBjYiAqaW5wNjsKIAogI2lmZGVmIElORVQKIAlz
dHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW42OwpAQCAtMTAzMSw3ICs5OTYsNiBAQCBzY3RwNl9zZW5k
KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgZmxhZ3MsIHN0cnVjdCBtYnVmICptLCBzdHJ1Y3QgbWJ1
ZiAqbmFtLAogCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9N
X1NDVFA2X1VTUlJFUSwgRUlOVkFMKTsKIAkJcmV0dXJuIChFSU5WQUwpOwogCX0KLQlpbnA2ID0g
KHN0cnVjdCBpbjZwY2IgKilpbnA7CiAJLyoKIAkgKiBGb3IgdGhlIFRDUCBtb2RlbCB3ZSBtYXkg
Z2V0IGEgTlVMTCBhZGRyLCBpZiB3ZSBhcmUgYSBjb25uZWN0ZWQKIAkgKiBzb2NrZXQgdGhhdHMg
b2suCkBAIC0xMDUxLDcgKzEwMTUsNyBAQCBzY3RwNl9zZW5kKHN0cnVjdCBzb2NrZXQgKnNvLCBp
bnQgZmxhZ3MsIHN0cnVjdCBtYnVmICptLCBzdHJ1Y3QgbWJ1ZiAqbmFtLAogCX0KICNpZmRlZiBJ
TkVUCiAJc2luNiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopYWRkcjsKLQlpZiAoU0NUUF9JUFY2
X1Y2T05MWShpbnA2KSkgeworCWlmIChTQ1RQX0lQVjZfVjZPTkxZKGlucCkpIHsKIAkJLyoKIAkJ
ICogaWYgSVBWNl9WNk9OTFkgZmxhZywgd2UgZGlzY2FyZCBkYXRhZ3JhbXMgZGVzdGluZWQgdG8g
YQogCQkgKiB2NCBhZGRyIG9yIHY0LW1hcHBlZCBhZGRyCkBAIC0xMDkxLDcgKzEwNTUsNyBAQCBj
b25uZWN0ZWRfdHlwZToKIAkJaW5wLT5wa3RfbGFzdCA9IGlucC0+cGt0ID0gbTsKIAl9CiAJaWYg
KAotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKQorI2lmIChk
ZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykpICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAJLyogRnJlZUJTRCBhbmQgTWFjT1NYIHVzZXMgYSBmbGFnIHBhc3NlZCAq
LwogCSAgICAoKGZsYWdzICYgUFJVU19NT1JFVE9DT01FKSA9PSAwKQogI2Vsc2UKQEAgLTExMDYs
OSArMTA3MCwxOCBAQCBjb25uZWN0ZWRfdHlwZToKIAkJICogb3B0aW9uYWx5IHN3aXRjaCBiYWNr
IHRvIHRoaXMgY29kZSAoYnkgY2hhbmdpbmcgYmFjayB0aGUKIAkJICogZGVmaW5pbml0aW9ucyBi
dXQgdGhpcyBpcyBub3QgYWR2aXNhYmxlLgogCQkgKi8KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQlzdHJ1Y3QgZXBvY2hfdHJhY2tlciBldDsK
KyNlbmRpZgogCQlpbnQgcmV0OwogCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKKwlORVRfRVBPQ0hfRU5URVIoZXQpOworI2VuZGlmCiAJCXJldCA9
IHNjdHBfb3V0cHV0KGlucCwgaW5wLT5wa3QsIGFkZHIsIGlucC0+Y29udHJvbCwgcCwgZmxhZ3Mp
OworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJ
TkVUX0VQT0NIX0VYSVQoZXQpOworI2VuZGlmCiAJCWlucC0+cGt0ID0gTlVMTDsKIAkJaW5wLT5j
b250cm9sID0gTlVMTDsKIAkJcmV0dXJuIChyZXQpOwpAQCAtMTExOCw0NiArMTA5MSw0MSBAQCBj
b25uZWN0ZWRfdHlwZToKIH0KICNlbmRpZgogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYg
X19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMDAwCisjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQor
aW50CitzY3RwNl9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKmFk
ZHIpCit7CisJdm9pZCAqcCA9IE5VTEw7CisjZWxpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQogc3Rh
dGljIGludAogc2N0cDZfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRy
ICphZGRyLCBzdHJ1Y3QgdGhyZWFkICpwKQogewotI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
fHwgZGVmaW5lZChfX0FQUExFX18pCisjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKIHN0YXRpYyBp
bnQKIHNjdHA2X2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqYWRk
ciwgc3RydWN0IHByb2MgKnApCiB7Ci0jZWxpZiBkZWZpbmVkKF9fUGFuZGFfXykKLWludAotc2N0
cDZfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRyLCB2b2lk
ICpwKQotewotI2VsaWYgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNlbGlmIGRlZmluZWQoX1dJTjMy
KQogc3RhdGljIGludAogc2N0cDZfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNv
Y2thZGRyICphZGRyLCBQS1RIUkVBRCBwKQogewotI2VsaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQotaW50Ci1zY3RwNl9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIg
KmFkZHIpCi17Ci0Jdm9pZCAqcCA9IE5VTEw7CiAjZWxzZQogc3RhdGljIGludAogc2N0cDZfY29u
bmVjdChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYgKm5hbSwgc3RydWN0IHByb2MgKnAp
CiB7CiAJc3RydWN0IHNvY2thZGRyICphZGRyID0gbXRvZChuYW0sIHN0cnVjdCBzb2NrYWRkciAq
KTsKKyNlbmRpZgorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCisJc3RydWN0IGVwb2NoX3RyYWNrZXIgZXQ7CiAjZW5kaWYKIAl1aW50MzJfdCB2cmZf
aWQ7CiAJaW50IGVycm9yID0gMDsKIAlzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wOwogCXN0cnVjdCBz
Y3RwX3RjYiAqc3RjYjsKICNpZmRlZiBJTkVUCi0Jc3RydWN0IGluNnBjYiAqaW5wNjsKIAlzdHJ1
Y3Qgc29ja2FkZHJfaW42ICpzaW42OwogCXVuaW9uIHNjdHBfc29ja3N0b3JlIHN0b3JlOwogI2Vu
ZGlmCiAKLSNpZmRlZiBJTkVUCi0JaW5wNiA9IChzdHJ1Y3QgaW42cGNiICopc28tPnNvX3BjYjsK
LSNlbmRpZgogCWlucCA9IChzdHJ1Y3Qgc2N0cF9pbnBjYiAqKXNvLT5zb19wY2I7CiAJaWYgKGlu
cCA9PSBOVUxMKSB7CiAJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQ
X0ZST01fU0NUUDZfVVNSUkVRLCBFQ09OTlJFU0VUKTsKQEAgLTExNjgsNyArMTEzNiw3IEBAIHNj
dHA2X2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICpuYW0sIHN0cnVjdCBw
cm9jICpwKQogCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9N
X1NDVFA2X1VTUlJFUSwgRUlOVkFMKTsKIAkJcmV0dXJuIChFSU5WQUwpOwogCX0KLSNpZiAhZGVm
aW5lZChfX1dpbmRvd3NfXykKKyNpZiAhKGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKSkKIAlzd2l0Y2ggKGFkZHItPnNhX2ZhbWlseSkgewogI2lmZGVmIElORVQKIAlj
YXNlIEFGX0lORVQ6CkBAIC0xMjIxLDcgKzExODksNyBAQCBzY3RwNl9jb25uZWN0KHN0cnVjdCBz
b2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtLCBzdHJ1Y3QgcHJvYyAqcCkKIAl9CiAjaWZkZWYg
SU5FVAogCXNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKWFkZHI7Ci0JaWYgKFNDVFBfSVBW
Nl9WNk9OTFkoaW5wNikpIHsKKwlpZiAoU0NUUF9JUFY2X1Y2T05MWShpbnApKSB7CiAJCS8qCiAJ
CSAqIGlmIElQVjZfVjZPTkxZIGZsYWcsIGlnbm9yZSBjb25uZWN0aW9ucyBkZXN0aW5lZCB0byBh
IHY0CiAJCSAqIGFkZHIgb3IgdjQtbWFwcGVkIGFkZHIKQEAgLTEyNzUsNyArMTI0Myw4IEBAIHNj
dHA2X2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICpuYW0sIHN0cnVjdCBw
cm9jICpwKQogCS8qIFdlIGFyZSBHT09EIHRvIGdvICovCiAJc3RjYiA9IHNjdHBfYWxvY19hc3Nv
YyhpbnAsIGFkZHIsICZlcnJvciwgMCwgdnJmX2lkLAogCSAgICAgICAgICAgICAgICAgICAgICAg
aW5wLT5zY3RwX2VwLnByZV9vcGVuX3N0cmVhbV9jb3VudCwKLQkgICAgICAgICAgICAgICAgICAg
ICAgIGlucC0+c2N0cF9lcC5wb3J0LCBwKTsKKwkgICAgICAgICAgICAgICAgICAgICAgIGlucC0+
c2N0cF9lcC5wb3J0LCBwLAorCSAgICAgICAgICAgICAgICAgICAgICAgU0NUUF9JTklUSUFMSVpF
X0FVVEhfUEFSQU1TKTsKIAlTQ1RQX0FTT0NfQ1JFQVRFX1VOTE9DSyhpbnApOwogCWlmIChzdGNi
ID09IE5VTEwpIHsKIAkJLyogR2FrISBubyBtZW1vcnkgKi8KQEAgLTEyODYsMjYgKzEyNTUsMjQg
QEAgc2N0cDZfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYgKm5hbSwgc3Ry
dWN0IHByb2MgKnApCiAJCS8qIFNldCB0aGUgY29ubmVjdGVkIGZsYWcgc28gd2UgY2FuIHF1ZXVl
IGRhdGEgKi8KIAkJc29pc2Nvbm5lY3Rpbmcoc28pOwogCX0KLQlzdGNiLT5hc29jLnN0YXRlID0g
U0NUUF9TVEFURV9DT09LSUVfV0FJVDsKKwlTQ1RQX1NFVF9TVEFURShzdGNiLCBTQ1RQX1NUQVRF
X0NPT0tJRV9XQUlUKTsKIAkodm9pZClTQ1RQX0dFVFRJTUVfVElNRVZBTCgmc3RjYi0+YXNvYy50
aW1lX2VudGVyZWQpOwotCi0JLyogaW5pdGlhbGl6ZSBhdXRoZW50aWNhdGlvbiBwYXJhbWV0ZXJz
IGZvciB0aGUgYXNzb2MgKi8KLQlzY3RwX2luaXRpYWxpemVfYXV0aF9wYXJhbXMoaW5wLCBzdGNi
KTsKLQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CisJTkVUX0VQT0NIX0VOVEVSKGV0KTsKKyNlbmRpZgogCXNjdHBfc2VuZF9pbml0aWF0ZShpbnAs
IHN0Y2IsIFNDVFBfU09fTE9DS0VEKTsKIAlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CisjaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwlORVRfRVBPQ0hf
RVhJVChldCk7CisjZW5kaWYKIAlyZXR1cm4gKGVycm9yKTsKIH0KIAogc3RhdGljIGludAotI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9f
V2luZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBzY3RwNl9nZXRhZGRyKHN0
cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKiphZGRyKQogewogCXN0cnVjdCBzb2Nr
YWRkcl9pbjYgKnNpbjY7Ci0jZWxpZiBkZWZpbmVkKF9fUGFuZGFfXykKLXNjdHA2X2dldGFkZHIo
c3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqYWRkcikKLXsKLQlzdHJ1Y3Qgc29j
a2FkZHJfaW42ICpzaW42ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilhZGRyOwogI2Vsc2UKIHNj
dHA2X2dldGFkZHIoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICpuYW0pCiB7CkBAIC0x
MzE1LDE5ICsxMjgyLDE3IEBAIHNjdHA2X2dldGFkZHIoc3RydWN0IHNvY2tldCAqc28sIHN0cnVj
dCBtYnVmICpuYW0pCiAJdWludDMyX3QgdnJmX2lkOwogCXN0cnVjdCBzY3RwX2lmYSAqc2N0cF9p
ZmE7CiAKLSNpZmRlZiBTQ1RQX0tBTUUKKyNpZiBkZWZpbmVkKFNDVFBfS0FNRSkgJiYgZGVmaW5l
ZChTQ1RQX0VNQkVEREVEX1Y2X1NDT1BFKQogCWludCBlcnJvcjsKLSNlbmRpZiAvKiBTQ1RQX0tB
TUUgKi8KKyNlbmRpZgogCiAJLyoKIAkgKiBEbyB0aGUgbWFsbG9jIGZpcnN0IGluIGNhc2UgaXQg
YmxvY2tzLgogCSAqLwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBM
RV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAJU0NUUF9NQUxMT0NfU09OQU1FKHNpbjYsIHN0cnVjdCBzb2NrYWRkcl9pbjYgKiwgc2l6ZW9m
KCpzaW42KSk7CiAJaWYgKHNpbjYgPT0gTlVMTCkKIAkJcmV0dXJuIChFTk9NRU0pOwotI2VsaWYg
ZGVmaW5lZChfX1BhbmRhX18pCi0JbWVtc2V0KHNpbjYsIDAsIHNpemVvZigqc2luNikpOwogI2Vs
c2UKIAlTQ1RQX0JVRl9MRU4obmFtKSA9IHNpemVvZigqc2luNik7CiAJbWVtc2V0KHNpbjYsIDAs
IHNpemVvZigqc2luNikpOwpAQCAtMTMzOSw3ICsxMzA0LDcgQEAgc2N0cDZfZ2V0YWRkcihzdHJ1
Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYgKm5hbSkKIAogCWlucCA9IChzdHJ1Y3Qgc2N0cF9p
bnBjYiAqKXNvLT5zb19wY2I7CiAJaWYgKGlucCA9PSBOVUxMKSB7Ci0jaWYgZGVmaW5lZChfX0Zy
ZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pCisj
aWYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJU0NUUF9GUkVFX1NPTkFNRShzaW42KTsKICNl
bmRpZgogCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1ND
VFA2X1VTUlJFUSwgRUNPTk5SRVNFVCk7CkBAIC0xMzU3LDcgKzEzMjIsNyBAQCBzY3RwNl9nZXRh
ZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtKQogCQkJc3RjYiA9IExJU1Rf
RklSU1QoJmlucC0+c2N0cF9hc29jX2xpc3QpOwogCQkJaWYgKHN0Y2IgPT0gTlVMTCkgewogCQkJ
CVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZp
bmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogCQkJCVNDVFBfRlJFRV9TT05BTUUoc2luNik7CiAjZW5kaWYKIAkJCQlTQ1RQ
X0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFA2X1VTUlJFUSwg
RU5PRU5UKTsKQEAgLTEzNzksNyArMTM0NCw3IEBAIHNjdHA2X2dldGFkZHIoc3RydWN0IHNvY2tl
dCAqc28sIHN0cnVjdCBtYnVmICpuYW0pCiAJCQlpZiAoKCFmbmQpIHx8IChzaW5fYTYgPT0gTlVM
TCkpIHsKIAkJCQkvKiBwdW50ICovCiAJCQkJU0NUUF9JTlBfUlVOTE9DSyhpbnApOwotI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2lu
ZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJU0NUUF9GUkVFX1NPTkFN
RShzaW42KTsKICNlbmRpZgogCQkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxM
LCBTQ1RQX0ZST01fU0NUUDZfVVNSUkVRLCBFTk9FTlQpOwpAQCAtMTQxMCw3ICsxMzc1LDcgQEAg
c2N0cDZfZ2V0YWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYgKm5hbSkKIAkJCX0K
IAkJfQogCQlpZiAoIWZuZCkgewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQo
X19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJCQlTQ1RQX0ZSRUVfU09OQU1FKHNpbjYpOwogI2VuZGlmCiAJCQlTQ1RQX0lOUF9S
VU5MT0NLKGlucCk7CkBAIC0xNDM0LDIxICsxMzk5LDE3IEBAIHNjdHA2X2dldGFkZHIoc3RydWN0
IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICpuYW0pCiAJCXNpbjYtPnNpbjZfc2NvcGVfaWQgPSAw
OwkvKiBYWFggKi8KICNlbmRpZiAvKiBTQ1RQX0tBTUUgKi8KICNlbmRpZiAvKiBTQ1RQX0VNQkVE
REVEX1Y2X1NDT1BFICovCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQ
UExFX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKIAkoKmFkZHIpID0gKHN0cnVjdCBzb2NrYWRkciAqKXNpbjY7CiAjZW5kaWYKIAlyZXR1cm4g
KDApOwogfQogCiBzdGF0aWMgaW50Ci0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5l
ZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgIWRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKIHNjdHA2X3BlZXJhZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2Fk
ZHIgKiphZGRyKQogewogCXN0cnVjdCBzb2NrYWRkcl9pbjYgKnNpbjY7Ci0jZWxpZiBkZWZpbmVk
KF9fUGFuZGFfXykKLXNjdHA2X3BlZXJhZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29j
a2FkZHIgKmFkZHIpCi17Ci0Jc3RydWN0IHNvY2thZGRyX2luNiAqc2luNiA9IChzdHJ1Y3Qgc29j
a2FkZHJfaW42ICopYWRkcjsKICNlbHNlCiBzY3RwNl9wZWVyYWRkcihzdHJ1Y3Qgc29ja2V0ICpz
bywgc3RydWN0IG1idWYgKm5hbSkKIHsKQEAgLTE0NjQsMTIgKzE0MjUsMTAgQEAgc2N0cDZfcGVl
cmFkZHIoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICpuYW0pCiAjZW5kaWYKIAogCS8q
IERvIHRoZSBtYWxsb2MgZmlyc3QgaW4gY2FzZSBpdCBibG9ja3MuICovCi0jaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18p
CisjaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlTQ1RQX01BTExPQ19TT05BTUUoc2luNiwg
c3RydWN0IHNvY2thZGRyX2luNiAqLCBzaXplb2YgKnNpbjYpOwogCWlmIChzaW42ID09IE5VTEwp
CiAJCXJldHVybiAoRU5PTUVNKTsKLSNlbGlmIGRlZmluZWQoX19QYW5kYV9fKQotCW1lbXNldChz
aW42LCAwLCBzaXplb2YoKnNpbjYpKTsKICNlbHNlCiAJU0NUUF9CVUZfTEVOKG5hbSkgPSBzaXpl
b2YoKnNpbjYpOwogCW1lbXNldChzaW42LCAwLCBzaXplb2YoKnNpbjYpKTsKQEAgLTE0ODMsNyAr
MTQ0Miw3IEBAIHNjdHA2X3BlZXJhZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAq
bmFtKQogCWlmICgoaW5wID09IE5VTEwpIHx8CiAJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NU
UF9QQ0JfRkxBR1NfQ09OTkVDVEVEKSA9PSAwKSkgewogCQkvKiBVRFAgdHlwZSBhbmQgbGlzdGVu
ZXJzIHdpbGwgZHJvcCBvdXQgaGVyZSAqLwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRl
ZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX18pCiAJCVNDVFBfRlJFRV9TT05BTUUoc2luNik7CiAjZW5kaWYKIAkJU0NUUF9M
VFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQNl9VU1JSRVEsIEVO
T1RDT05OKTsKQEAgLTE0OTYsNyArMTQ1NSw3IEBAIHNjdHA2X3BlZXJhZGRyKHN0cnVjdCBzb2Nr
ZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtKQogCX0KIAlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CiAJ
aWYgKHN0Y2IgPT0gTlVMTCkgewotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQo
X19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNw
YWNlX18pCiAJCVNDVFBfRlJFRV9TT05BTUUoc2luNik7CiAjZW5kaWYKIAkJU0NUUF9MVFJBQ0Vf
RVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQNl9VU1JSRVEsIEVDT05OUkVT
RVQpOwpAQCAtMTUxNSw3ICsxNDc0LDcgQEAgc2N0cDZfcGVlcmFkZHIoc3RydWN0IHNvY2tldCAq
c28sIHN0cnVjdCBtYnVmICpuYW0pCiAJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwogCWlmICghZm5k
KSB7CiAJCS8qIE5vIElQdjQgYWRkcmVzcyAqLwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8
IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiAJCVNDVFBfRlJFRV9TT05BTUUoc2luNik7CiAjZW5kaWYKIAkJU0NU
UF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQNl9VU1JSRVEs
IEVOT0VOVCk7CkBAIC0xNTI0LDcgKzE0ODMsNyBAQCBzY3RwNl9wZWVyYWRkcihzdHJ1Y3Qgc29j
a2V0ICpzbywgc3RydWN0IG1idWYgKm5hbSkKICNpZmRlZiBTQ1RQX0VNQkVEREVEX1Y2X1NDT1BF
CiAjaWZkZWYgU0NUUF9LQU1FCiAJaWYgKChlcnJvciA9IHNhNl9yZWNvdmVyc2NvcGUoc2luNikp
ICE9IDApIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykg
fHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCQlT
Q1RQX0ZSRUVfU09OQU1FKHNpbjYpOwogI2VuZGlmCiAJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5w
LCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUDZfVVNSUkVRLCBlcnJvcik7CkBAIC0xNTM0LDIx
ICsxNDkzLDE2IEBAIHNjdHA2X3BlZXJhZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1
ZiAqbmFtKQogCWluNl9yZWNvdmVyc2NvcGUoc2luNiwgJnNpbjYtPnNpbjZfYWRkciwgTlVMTCk7
CiAjZW5kaWYgLyogU0NUUF9LQU1FICovCiAjZW5kaWYgLyogU0NUUF9FTUJFRERFRF9WNl9TQ09Q
RSAqLwotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBk
ZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJKmFkZHIg
PSAoc3RydWN0IHNvY2thZGRyICopc2luNjsKICNlbmRpZgogCXJldHVybiAoMCk7CiB9CiAKLSNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChf
X1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogc3RhdGljIGludAogc2N0
cDZfaW42Z2V0YWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICoqbmFtKQog
ewotI2VsaWYgZGVmaW5lZChfX1BhbmRhX18pCi1pbnQKLXNjdHA2X2luNmdldGFkZHIoc3RydWN0
IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqbmFtLCB1aW50MzJfdCAqbmFtZWxlbikKLXsK
LQlzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIgPSBuYW07CiAjZWxpZiBkZWZpbmVkKF9fVXNlcnNwYWNl
X18pCiBpbnQKIHNjdHA2X2luNmdldGFkZHIoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVm
ICpuYW0pCkBAIC0xNTY0LDEwICsxNTE4LDEwIEBAIHNjdHA2X2luNmdldGFkZHIoc3RydWN0IHNv
Y2tldCAqc28sIHN0cnVjdCBtYnVmICpuYW0pCiAJc3RydWN0IHNvY2thZGRyICphZGRyID0gbXRv
ZChuYW0sIHN0cnVjdCBzb2NrYWRkciAqKTsKICNlbmRpZgogI2VuZGlmCi0Jc3RydWN0IGluNnBj
YiAqaW5wNiA9IHNvdG9pbjZwY2Ioc28pOworCXN0cnVjdCBpbnBjYiAqaW5wID0gc290b2lucGNi
KHNvKTsKIAlpbnQgZXJyb3I7CiAKLQlpZiAoaW5wNiA9PSBOVUxMKSB7CisJaWYgKGlucCA9PSBO
VUxMKSB7CiAJCVNDVFBfTFRSQUNFX0VSUl9SRVQoTlVMTCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9N
X1NDVFA2X1VTUlJFUSwgRUlOVkFMKTsKIAkJcmV0dXJuIChFSU5WQUwpOwogCX0KQEAgLTE1NzYs
NyArMTUzMCw3IEBAIHNjdHA2X2luNmdldGFkZHIoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBt
YnVmICpuYW0pCiAJZXJyb3IgPSBzY3RwNl9nZXRhZGRyKHNvLCBuYW0pOwogI2lmZGVmIElORVQK
IAlpZiAoZXJyb3IpIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQ
TEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQogCQlzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW42OwogI2Vsc2UKIAkJc3RydWN0IHNvY2thZGRy
X2luNiBzaW42OwpAQCAtMTU4Nyw3ICsxNTQxLDcgQEAgc2N0cDZfaW42Z2V0YWRkcihzdHJ1Y3Qg
c29ja2V0ICpzbywgc3RydWN0IG1idWYgKm5hbSkKIAkJaWYgKGVycm9yKSB7CiAJCQlyZXR1cm4g
KGVycm9yKTsKIAkJfQotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBM
RV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAJCVNDVFBfTUFMTE9DX1NPTkFNRShzaW42LCBzdHJ1Y3Qgc29ja2FkZHJfaW42ICosIHNpemVv
ZiAqc2luNik7CiAJCWlmIChzaW42ID09IE5VTEwpIHsKIAkJCVNDVFBfRlJFRV9TT05BTUUoKm5h
bSk7CkBAIC0xNjAyLDIzICsxNTU2LDE1IEBAIHNjdHA2X2luNmdldGFkZHIoc3RydWN0IHNvY2tl
dCAqc28sIHN0cnVjdCBtYnVmICpuYW0pCiAJCW1lbWNweShhZGRyLCAmc2luNiwgc2l6ZW9mKHN0
cnVjdCBzb2NrYWRkcl9pbjYpKTsKICNlbmRpZgogCX0KLSNlbmRpZgotI2lmIGRlZmluZWQoX19Q
YW5kYV9fKQotCSpuYW1lbGVuID0gbmFtLT5zYV9sZW47CiAjZW5kaWYKIAlyZXR1cm4gKGVycm9y
KTsKIH0KIAogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18p
IHx8IGRlZmluZWQoX19XaW5kb3dzX18pCisjaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIHN0
YXRpYyBpbnQKIHNjdHA2X2dldHBlZXJhZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29j
a2FkZHIgKipuYW0pCiB7Ci0jZWxpZiBkZWZpbmVkKF9fUGFuZGFfXykKLWludAotc2N0cDZfZ2V0
cGVlcmFkZHIoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqbmFtLCB1aW50MzJf
dCAqbmFtZWxlbikKLXsKLQlzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIgPSAoc3RydWN0IHNvY2thZGRy
ICopbmFtOwogI2VsaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogaW50CiBzY3RwNl9nZXRwZWVy
YWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYgKm5hbSkKQEAgLTE2MzYsMTAgKzE1
ODIsMTAgQEAgc2N0cDZfZ2V0cGVlcmFkZHIoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVm
ICpuYW0pCiAjZW5kaWYKIAogI2VuZGlmCi0Jc3RydWN0IGluNnBjYiAqaW5wNiA9IHNvdG9pbjZw
Y2Ioc28pOworCXN0cnVjdCBpbnBjYiAqaW5wID0gc290b2lucGNiKHNvKTsKIAlpbnQgZXJyb3I7
CiAKLQlpZiAoaW5wNiA9PSBOVUxMKSB7CisJaWYgKGlucCA9PSBOVUxMKSB7CiAJCVNDVFBfTFRS
QUNFX0VSUl9SRVQoTlVMTCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFA2X1VTUlJFUSwgRUlO
VkFMKTsKIAkJcmV0dXJuIChFSU5WQUwpOwogCX0KQEAgLTE2NDgsNyArMTU5NCw3IEBAIHNjdHA2
X2dldHBlZXJhZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtKQogCWVycm9y
ID0gc2N0cDZfcGVlcmFkZHIoc28sIG5hbSk7CiAjaWZkZWYgSU5FVAogCWlmIChlcnJvcikgewot
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVk
KF9fV2luZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCXN0cnVjdCBzb2Nr
YWRkcl9pbjYgKnNpbjY7CiAjZWxzZQogCQlzdHJ1Y3Qgc29ja2FkZHJfaW42IHNpbjY7CkBAIC0x
NjU5LDcgKzE2MDUsNyBAQCBzY3RwNl9nZXRwZWVyYWRkcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3Ry
dWN0IG1idWYgKm5hbSkKIAkJaWYgKGVycm9yKSB7CiAJCQlyZXR1cm4gKGVycm9yKTsKIAkJfQot
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVk
KF9fV2luZG93c19fKQorI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCVNDVFBfTUFMTE9D
X1NPTkFNRShzaW42LCBzdHJ1Y3Qgc29ja2FkZHJfaW42ICosIHNpemVvZiAqc2luNik7CiAJCWlm
IChzaW42ID09IE5VTEwpIHsKIAkJCVNDVFBfRlJFRV9TT05BTUUoKm5hbSk7CkBAIC0xNjc0LDE0
ICsxNjIwLDExIEBAIHNjdHA2X2dldHBlZXJhZGRyKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qg
bWJ1ZiAqbmFtKQogCQltZW1jcHkoYWRkciwgJnNpbjYsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJf
aW42KSk7CiAjZW5kaWYKIAl9Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKF9fUGFuZGFfXykKLQkqbmFt
ZWxlbiA9IG5hbS0+c2FfbGVuOwogI2VuZGlmCiAJcmV0dXJuIChlcnJvcik7CiB9CiAKLSNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dp
bmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogc3RydWN0IHByX3VzcnJlcXMg
c2N0cDZfdXNycmVxcyA9IHsKICNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQogCS5wcnVfYWJvcnQg
PSBzY3RwNl9hYm9ydCwKQEAgLTE2OTAsMTUgKzE2MzMsMTAgQEAgc3RydWN0IHByX3VzcnJlcXMg
c2N0cDZfdXNycmVxcyA9IHsKIAkucHJ1X2JpbmQgPSBzY3RwNl9iaW5kLAogCS5wcnVfY29ubmVj
dCA9IHNjdHA2X2Nvbm5lY3QsCiAJLnBydV9jb250cm9sID0gaW42X2NvbnRyb2wsCi0jaWYgX19G
cmVlQlNEX3ZlcnNpb24gPj0gNjkwMDAwCiAJLnBydV9jbG9zZSA9IHNjdHA2X2Nsb3NlLAogCS5w
cnVfZGV0YWNoID0gc2N0cDZfY2xvc2UsCiAJLnBydV9zb3BvbGwgPSBzb3BvbGxfZ2VuZXJpYywK
IAkucHJ1X2ZsdXNoID0gc2N0cF9mbHVzaCwKLSNlbHNlCi0JLnBydV9kZXRhY2ggPSBzY3RwNl9k
ZXRhY2gsCi0JLnBydV9zb3BvbGwgPSBzb3BvbGwsCi0jZW5kaWYKIAkucHJ1X2Rpc2Nvbm5lY3Qg
PSBzY3RwNl9kaXNjb25uZWN0LAogCS5wcnVfbGlzdGVuID0gc2N0cF9saXN0ZW4sCiAJLnBydV9w
ZWVyYWRkciA9IHNjdHA2X2dldHBlZXJhZGRyLApAQCAtMTcwNyw3ICsxNjQ1LDcgQEAgc3RydWN0
IHByX3VzcnJlcXMgc2N0cDZfdXNycmVxcyA9IHsKIAkucHJ1X3NvY2thZGRyID0gc2N0cDZfaW42
Z2V0YWRkciwKIAkucHJ1X3Nvc2VuZCA9IHNjdHBfc29zZW5kLAogCS5wcnVfc29yZWNlaXZlID0g
c2N0cF9zb3JlY2VpdmUKLSNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQorI2VsaWYgZGVmaW5lZChf
X0FQUExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJLnBydV9hYm9ydCA9IHNjdHA2
X2Fib3J0LAogCS5wcnVfYWNjZXB0ID0gc2N0cF9hY2NlcHQsCiAJLnBydV9hdHRhY2ggPSBzY3Rw
Nl9hdHRhY2gsCkBAIC0xNzI4LDcgKzE2NjYsNyBAQCBzdHJ1Y3QgcHJfdXNycmVxcyBzY3RwNl91
c3JyZXFzID0gewogCS5wcnVfc29zZW5kID0gc2N0cF9zb3NlbmQsCiAJLnBydV9zb3JlY2VpdmUg
PSBzY3RwX3NvcmVjZWl2ZSwKIAkucHJ1X3NvcG9sbCA9IHNvcG9sbAotI2VsaWYgZGVmaW5lZChf
X1dpbmRvd3NfXykKKyNlbGlmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9fKQogCXNjdHA2X2Fib3J0LAogCXNjdHBfYWNjZXB0LAogCXNjdHA2X2F0dGFjaCwKQEAgLTE3
NTUsNyArMTY5Myw3IEBAIHN0cnVjdCBwcl91c3JyZXFzIHNjdHA2X3VzcnJlcXMgPSB7CiAjZW5k
aWYKIH07CiAKLSNlbGlmICFkZWZpbmVkKF9fUGFuZGFfXykgJiYgIWRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKKyNlbGlmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBpbnQKIHNjdHA2X3VzcnJlcShz
bywgcmVxLCBtLCBuYW0sIGNvbnRyb2wsIHApCiAJc3RydWN0IHNvY2tldCAqc287CkBAIC0xNzYz
LDIyICsxNzAxLDIyIEBAIHNjdHA2X3VzcnJlcShzbywgcmVxLCBtLCBuYW0sIGNvbnRyb2wsIHAp
CiAJc3RydWN0IG1idWYgKm0sICpuYW0sICpjb250cm9sOwogCXN0cnVjdCBwcm9jICpwOwogewot
CWludCBzOwotCWludCBlcnJvciA9IDA7CisJaW50IGVycm9yOwogCWludCBmYW1pbHk7Ci0JdWlu
dDMyX3QgdnJmX2lkOworCiAJZmFtaWx5ID0gc28tPnNvX3Byb3RvLT5wcl9kb21haW4tPmRvbV9m
YW1pbHk7CiAKIAlpZiAocmVxID09IFBSVV9DT05UUk9MKSB7CiAJCXN3aXRjaCAoZmFtaWx5KSB7
CiAJCWNhc2UgUEZfSU5FVDoKIAkJCWVycm9yID0gaW5fY29udHJvbChzbywgKGxvbmcpbSwgKGNh
ZGRyX3QpbmFtLAotCQkJICAgIChzdHJ1Y3QgaWZuZXQgKiljb250cm9sCi0JCQkgICAgKTsKKwkJ
CSAgICAoc3RydWN0IGlmbmV0ICopY29udHJvbCApOworCQkJYnJlYWs7CiAjaWZkZWYgSU5FVDYK
IAkJY2FzZSBQRl9JTkVUNjoKIAkJCWVycm9yID0gaW42X2NvbnRyb2woc28sIChsb25nKW0sIChj
YWRkcl90KW5hbSwKIAkJCSAgICAoc3RydWN0IGlmbmV0ICopY29udHJvbCwgcCk7CisJCQlicmVh
azsKICNlbmRpZgogCQlkZWZhdWx0OgogCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChOVUxMLCBOVUxM
LCBOVUxMLCBTQ1RQX0ZST01fU0NUUDZfVVNSUkVRLCBFQUZOT1NVUFBPUlQpOwpAQCAtMTg2Miw2
ICsxODAwLDcgQEAgc2N0cDZfdXNycmVxKHNvLCByZXEsIG0sIG5hbSwgY29udHJvbCwgcCkKIAkJ
ZXJyb3IgPSAwOwogCQlicmVhazsKIAlkZWZhdWx0OgorCQllcnJvciA9IDA7CiAJCWJyZWFrOwog
CX0KIAlyZXR1cm4gKGVycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0
aW5ldDYvc2N0cDZfdmFyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQ2L3NjdHA2X3Zh
ci5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggM2M0Mjg1ZDI5Y2I3Li41
NmE2YzNhZjNkOWMKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0Ni9zY3RwNl92YXIu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3Vz
cnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQ2L3NjdHA2X3Zhci5oCkBAIC0zMiw3
ICszMiw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lm
ZGVmIF9fRnJlZUJTRF9fCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KIF9fRkJTRElEKCIkRnJlZUJTRDog
aGVhZC9zeXMvbmV0aW5ldDYvc2N0cDZfdmFyLmggMzE3NDU3IDIwMTctMDQtMjYgMTk6MjY6NDBa
IHR1ZXhlbiAkIik7CiAjZW5kaWYKQEAgLTQ0LDQ1ICs0NCwzMyBAQCBfX0ZCU0RJRCgiJEZyZWVC
U0Q6IGhlYWQvc3lzL25ldGluZXQ2L3NjdHA2X3Zhci5oIDMxNzQ1NyAyMDE3LTA0LTI2IDE5OjI2
OjQwWiB0dQogI2lmZGVmIElORVQKIGV4dGVybiB2b2lkIGluNl9zaW42XzJfc2luKHN0cnVjdCBz
b2NrYWRkcl9pbiAqLCBzdHJ1Y3Qgc29ja2FkZHJfaW42ICopOwogZXh0ZXJuIHZvaWQgaW42X3Np
bjZfMl9zaW5faW5fc29jayhzdHJ1Y3Qgc29ja2FkZHIgKik7Ci1leHRlcm4gdm9pZCBpbjZfc2lu
XzJfdjRtYXBzaW42KHN0cnVjdCBzb2NrYWRkcl9pbiAqLCBzdHJ1Y3Qgc29ja2FkZHJfaW42ICop
OworZXh0ZXJuIHZvaWQgaW42X3Npbl8yX3Y0bWFwc2luNihjb25zdCBzdHJ1Y3Qgc29ja2FkZHJf
aW4gKiwgc3RydWN0IHNvY2thZGRyX2luNiAqKTsKICNlbmRpZgogI2VuZGlmCiAjaWYgZGVmaW5l
ZChfS0VSTkVMKQogCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgKF9fQVBQTEVfXykgfHwg
ZGVmaW5lZChfX1dpbmRvd3NfXykKKyNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogU1lTQ1RM
X0RFQ0woX25ldF9pbmV0Nl9zY3RwNik7CiBleHRlcm4gc3RydWN0IHByX3VzcnJlcXMgc2N0cDZf
dXNycmVxczsKICNlbHNlCiBpbnQgc2N0cDZfdXNycmVxKHN0cnVjdCBzb2NrZXQgKiwgaW50LCBz
dHJ1Y3QgbWJ1ZiAqLCBzdHJ1Y3QgbWJ1ZiAqLCBzdHJ1Y3QgbWJ1ZiAqKTsKICNlbmRpZgogCi0j
aWYgZGVmaW5lZChfX0FQUExFX18pCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiBpbnQgc2N0cDZfaW5wdXQoc3RydWN0IG1idWYgKiosIGludCAqKTsK
IGludCBzY3RwNl9pbnB1dF93aXRoX3BvcnQoc3RydWN0IG1idWYgKiosIGludCAqLCB1aW50MTZf
dCk7Ci0jZWxpZiBkZWZpbmVkKF9fUGFuZGFfXykKLWludCBzY3RwNl9pbnB1dCAocGFraGFuZGxl
X3R5cGUgKik7Ci0jZWxpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lv
biA8IDkwMjAwMAotaW50IHNjdHA2X2lucHV0IF9fUCgoc3RydWN0IG1idWYgKiosIGludCAqLCBp
bnQpKTsKLWludCBzY3RwNl9pbnB1dF93aXRoX3BvcnQgX19QKChzdHJ1Y3QgbWJ1ZiAqKiwgaW50
ICosIHVpbnQxNl90KSk7CiAjZWxzZQogaW50IHNjdHA2X2lucHV0KHN0cnVjdCBtYnVmICoqLCBp
bnQgKiwgaW50KTsKIGludCBzY3RwNl9pbnB1dF93aXRoX3BvcnQoc3RydWN0IG1idWYgKiosIGlu
dCAqLCB1aW50MTZfdCk7CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0Zy
ZWVCU0RfdmVyc2lvbiA8IDkwMjAwMAotaW50IHNjdHA2X291dHB1dAotX19QKChzdHJ1Y3Qgc2N0
cF9pbnBjYiAqLCBzdHJ1Y3QgbWJ1ZiAqLCBzdHJ1Y3Qgc29ja2FkZHIgKiwKLSAgICAgc3RydWN0
IG1idWYgKiwgc3RydWN0IHByb2MgKikpOwotdm9pZCBzY3RwNl9jdGxpbnB1dCBfX1AoKGludCwg
c3RydWN0IHNvY2thZGRyICosIHZvaWQgKikpOwotI2Vsc2UKIGludCBzY3RwNl9vdXRwdXQoc3Ry
dWN0IHNjdHBfaW5wY2IgKiwgc3RydWN0IG1idWYgKiwgc3RydWN0IHNvY2thZGRyICosCiAgICAg
ICAgICAgICAgICAgIHN0cnVjdCBtYnVmICosIHN0cnVjdCBwcm9jICopOwotI2lmIGRlZmluZWQo
X19BUFBMRV9fKSAmJiAhZGVmaW5lZChBUFBMRV9MRU9QQVJEKSAmJiAhZGVmaW5lZChBUFBMRV9T
Tk9XTEVPUEFSRCkgJiYgIWRlZmluZWQoQVBQTEVfTElPTikgJiYgIWRlZmluZWQoQVBQTEVfTU9V
TlRBSU5MSU9OKSAmJiAhZGVmaW5lZChBUFBMRV9FTENBUElUQU4pCisjaWYgZGVmaW5lZChfX0FQ
UExFX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pICYmICFkZWZpbmVkKEFQUExFX0xFT1BB
UkQpICYmICFkZWZpbmVkKEFQUExFX1NOT1dMRU9QQVJEKSAmJiAhZGVmaW5lZChBUFBMRV9MSU9O
KSAmJiAhZGVmaW5lZChBUFBMRV9NT1VOVEFJTkxJT04pICYmICFkZWZpbmVkKEFQUExFX0VMQ0FQ
SVRBTikKIHZvaWQgc2N0cDZfY3RsaW5wdXQoaW50LCBzdHJ1Y3Qgc29ja2FkZHIgKiwgdm9pZCAq
LCBzdHJ1Y3QgaWZuZXQgKiBTQ1RQX1VOVVNFRCk7CiAjZWxzZQogdm9pZCBzY3RwNl9jdGxpbnB1
dChpbnQsIHN0cnVjdCBzb2NrYWRkciAqLCB2b2lkICopOwogI2VuZGlmCi0jZW5kaWYKLSNpZiAh
KGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSkKKyNpZiAhKChkZWZp
bmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykpICAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKSkKIGV4dGVybiB2b2lkIGluNl9zaW5fMl92NG1hcHNpbjYoc3RydWN0IHNvY2th
ZGRyX2luICosIHN0cnVjdCBzb2NrYWRkcl9pbjYgKik7CiBleHRlcm4gdm9pZCBpbjZfc2luNl8y
X3NpbihzdHJ1Y3Qgc29ja2FkZHJfaW4gKiwgc3RydWN0IHNvY2thZGRyX2luNiAqKTsKIGV4dGVy
biB2b2lkIGluNl9zaW42XzJfc2luX2luX3NvY2soc3RydWN0IHNvY2thZGRyICopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3Jz
Y3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX2F0b21pYy5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0
cGxpYi91c2VyX2F0b21pYy5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXgg
ODk3MzljNGU5MDgyLi5iMTVhY2Y1YTBiM2EKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2Vy
X2F0b21pYy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9hdG9taWMuaApAQCAtNDIs
OCArNDIsOCBAQAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAK
LSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0RhcndpbikgfHwgZGVmaW5lZCAoX19Vc2Vyc3Bh
Y2Vfb3NfV2luZG93cykKLSNpZiBkZWZpbmVkIChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lm
IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9XSU4zMikKKyNpZiBkZWZpbmVkKF9XSU4z
MikKICNkZWZpbmUgYXRvbWljX2FkZF9pbnQoYWRkciwgdmFsKSBJbnRlcmxvY2tlZEV4Y2hhbmdl
QWRkKChMUExPTkcpYWRkciwgKExPTkcpdmFsKQogI2RlZmluZSBhdG9taWNfZmV0Y2hhZGRfaW50
KGFkZHIsIHZhbCkgSW50ZXJsb2NrZWRFeGNoYW5nZUFkZCgoTFBMT05HKWFkZHIsIChMT05HKXZh
bCkKICNkZWZpbmUgYXRvbWljX3N1YnRyYWN0X2ludChhZGRyLCB2YWwpICAgSW50ZXJsb2NrZWRF
eGNoYW5nZUFkZCgoTFBMT05HKWFkZHIsLSgoTE9ORyl2YWwpKQpAQCAtNzcsNyArNzcsNyBAQAog
CX0gXAogfQogI2VuZGlmCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lm
IGRlZmluZWQoX1dJTjMyKQogc3RhdGljIHZvaWQgYXRvbWljX2luaXQodm9pZCkge30gLyogZW1w
dHkgd2hlbiB3ZSBhcmUgbm90IHVzaW5nIGF0b21pY19tdHggKi8KICNlbHNlCiAvLyBXZWJLaXQg
Y2hhbmdlLCB0aGlzIGNvbmZsaWN0cyB3aXRoIGF0b21pY19pbml0CkBAIC0xNzQsNyArMTc0LDcg
QEAgc3RhdGljIGlubGluZSB2b2lkIGF0b21pY19pbml0KCkge30gLyogZW1wdHkgd2hlbiB3ZSBh
cmUgbm90IHVzaW5nIGF0b21pY19tdHggKi8KIAogZXh0ZXJuIHVzZXJsYW5kX211dGV4X3QgYXRv
bWljX210eDsKIAotI2lmIGRlZmluZWQgKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVm
aW5lZChfV0lOMzIpCiBzdGF0aWMgaW5saW5lIHZvaWQgYXRvbWljX2luaXQoKSB7CiAJSW5pdGlh
bGl6ZUNyaXRpY2FsU2VjdGlvbigmYXRvbWljX210eCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi91c3JzY3RwbGliL3VzZXJfZW52aXJvbm1lbnQuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNl
cl9lbnZpcm9ubWVudC5jCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggNzY3
YzRiYTRkNDNmLi5kYzlkOThhMzkyMDEKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX2Vu
dmlyb25tZW50LmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX2Vudmlyb25tZW50LmMK
QEAgLTMxLDcgKzMxLDcgQEAKIC8qIF9fVXNlcnNwYWNlX18gKi8KIAogI2luY2x1ZGUgPHN0ZGxp
Yi5oPgotI2lmICFkZWZpbmVkIChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmICFkZWZpbmVk
KF9XSU4zMikKICNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfb3Nf
dXNlcnNwYWNlLmg+CiAjZW5kaWYKQEAgLTY0LDkgKzY0LDI4IEBAIHVzZXJsYW5kX211dGV4X3Qg
YXRvbWljX210eDsKICAqIHByb3ZpZGUgX3NvbWVfIGtpbmQgb2YgcmFuZG9tbmVzcy4gVGhpcyBz
aG91bGQgb25seSBiZSB1c2VkCiAgKiBpbnNpZGUgb3RoZXIgUk5HJ3MsIGxpa2UgYXJjNHJhbmRv
bSg5KS4KICAqLwotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRnJlZUJTRCkgfHwgZGVmaW5l
ZChfX1VzZXJzcGFjZV9vc19EYXJ3aW4pCi1zdGF0aWMgaW50Ci1yZWFkX3JhbmRvbV9waG9ueSh2
b2lkICpidWYsIGludCBjb3VudCkKKyNpZmRlZiBGVVpaSU5HX0JVSUxEX01PREVfVU5TQUZFX0ZP
Ul9QUk9EVUNUSU9OCit2b2lkCitpbml0X3JhbmRvbSh2b2lkKQoreworCXJldHVybjsKK30KKwor
aW50CityZWFkX3JhbmRvbSh2b2lkICpidWYsIGludCBjb3VudCkKK3sKKwltZW1zZXQoYnVmLCAn
QScsIGNvdW50KTsKKwlyZXR1cm4gKGNvdW50KTsKK30KKyNlbGlmIGRlZmluZWQoX19GcmVlQlNE
X18pIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykgfHwgZGVmaW5lZChfX09wZW5CU0RfXykgfHwg
ZGVmaW5lZChfX09wZW5CU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pCit2b2lkCitpbml0X3Jh
bmRvbSh2b2lkKQoreworCXJldHVybjsKK30KKworaW50CityZWFkX3JhbmRvbSh2b2lkICpidWYs
IGludCBjb3VudCkKIHsKIAlpZiAoY291bnQgPj0gMCkgewogCQlhcmM0cmFuZG9tX2J1ZihidWYs
IGNvdW50KTsKQEAgLTc0LDE0ICs5MywzMyBAQCByZWFkX3JhbmRvbV9waG9ueSh2b2lkICpidWYs
IGludCBjb3VudCkKIAlyZXR1cm4gKGNvdW50KTsKIH0KICNlbHNlCi1zdGF0aWMgaW50Ci1yZWFk
X3JhbmRvbV9waG9ueSh2b2lkICpidWYsIGludCBjb3VudCkKK3ZvaWQKK2luaXRfcmFuZG9tKHZv
aWQpCit7CisJc3RydWN0IHRpbWV2YWwgbm93OworCXVuc2lnbmVkIGludCBzZWVkOworCisJKHZv
aWQpU0NUUF9HRVRUSU1FX1RJTUVWQUwoJm5vdyk7CisJc2VlZCA9IDA7CisJc2VlZCB8PSAodW5z
aWduZWQgaW50KW5vdy50dl9zZWM7CisJc2VlZCB8PSAodW5zaWduZWQgaW50KW5vdy50dl91c2Vj
OworI2lmICFkZWZpbmVkKF9XSU4zMikgJiYhIGRlZmluZWQoX19uYXRpdmVfY2xpZW50X18pCisJ
c2VlZCB8PSBnZXRwaWQoKTsKKyNlbmRpZgorI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVk
KF9fbmF0aXZlX2NsaWVudF9fKQorCXNyYW5kKHNlZWQpOworI2Vsc2UKKwlzcmFuZG9tKHNlZWQp
OworI2VuZGlmCisJcmV0dXJuOworfQorCitpbnQKK3JlYWRfcmFuZG9tKHZvaWQgKmJ1ZiwgaW50
IGNvdW50KQogewogCXVpbnQzMl90IHJhbmR2YWw7CiAJaW50IHNpemUsIGk7CiAKLQkvKiBzcmFu
ZG9tKCkgaXMgY2FsbGVkIGluIGtlcm4vaW5pdF9tYWluLmM6cHJvYzBfcG9zdCgpICovCi0KIAkv
KiBGaWxsIGJ1ZltdIHdpdGggcmFuZG9tKDkpIG91dHB1dCAqLwogCWZvciAoaSA9IDA7IGkgPCBj
b3VudDsgaSs9IChpbnQpc2l6ZW9mKHVpbnQzMl90KSkgewogCQlyYW5kdmFsID0gcmFuZG9tKCk7
CkBAIC05MiwxMyArMTMwLDMgQEAgcmVhZF9yYW5kb21fcGhvbnkodm9pZCAqYnVmLCBpbnQgY291
bnQpCiAJcmV0dXJuIChjb3VudCk7CiB9CiAjZW5kaWYKLQotc3RhdGljIGludCAoKnJlYWRfZnVu
Yykodm9pZCAqLCBpbnQpID0gcmVhZF9yYW5kb21fcGhvbnk7Ci0KLS8qIFVzZXJsYW5kLXZpc2li
bGUgdmVyc2lvbiBvZiByZWFkX3JhbmRvbSAqLwotaW50Ci1yZWFkX3JhbmRvbSh2b2lkICpidWYs
IGludCBjb3VudCkKLXsKLQlyZXR1cm4gKCgqcmVhZF9mdW5jKShidWYsIGNvdW50KSk7Ci19Ci0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9lbnZpcm9ubWVudC5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNj
dHBsaWIvdXNyc2N0cGxpYi91c2VyX2Vudmlyb25tZW50LmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBt
b2RlIDEwMDc1NQppbmRleCBjMTFhZDJjNDFmZmQuLjBjMmVjOWRiMjM1ZgotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi91c3JzY3RwbGliL3VzZXJfZW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGli
L3VzZXJfZW52aXJvbm1lbnQuaApAQCAtMzMsMTIgKzMzLDEyIEBACiAvKiBfX1VzZXJzcGFjZV9f
ICovCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAKLSNpZmRlZiBfX1VzZXJzcGFjZV9vc19GcmVl
QlNECisjaWZkZWYgX19GcmVlQlNEX18KICNpZm5kZWYgX1NZU19NVVRFWF9IXwogI2luY2x1ZGUg
PHN5cy9tdXRleC5oPgogI2VuZGlmCiAjZW5kaWYKLSNpZiBkZWZpbmVkIChfX1VzZXJzcGFjZV9v
c19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogI2luY2x1ZGUgIm5ldGluZXQvc2N0cF9v
c191c2Vyc3BhY2UuaCIKICNlbmRpZgogCkBAIC02MiwxMiArNjIsMTMgQEAgZXh0ZXJuIGludCBp
cHBvcnRfZmlyc3RhdXRvLCBpcHBvcnRfbGFzdGF1dG87CiAgKi8KIGV4dGVybiBpbnQgbm1iY2x1
c3RlcnM7CiAKLSNpZiAhZGVmaW5lZCAoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKLSNkZWZpbmUg
bWluKGEsYikgKChhKT4oYik/KGIpOihhKSkKLSNkZWZpbmUgbWF4KGEsYikgKChhKT4oYik/KGEp
OihiKSkKKyNpZiAhZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoX19NSU5HVzMyX18pCisj
ZGVmaW5lIG1pbihhLGIpICgoKGEpPihiKSk/KGIpOihhKSkKKyNkZWZpbmUgbWF4KGEsYikgKCgo
YSk+KGIpKT8oYSk6KGIpKQogI2VuZGlmCiAKLWV4dGVybiBpbnQgcmVhZF9yYW5kb20odm9pZCAq
YnVmLCBpbnQgY291bnQpOwordm9pZCBpbml0X3JhbmRvbSh2b2lkKTsKK2ludCByZWFkX3JhbmRv
bSh2b2lkICosIGludCk7CiAKIC8qIGVycm5vJ3MgbWF5IGRpZmZlciBwZXIgT1MuICBlcnJuby5o
IG5vdyBpbmNsdWRlZCBpbiBzY3RwX29zX3VzZXJzcGFjZS5oICovCiAvKiBTb3VyY2U6IC91c3Iv
c3JjL3N5cy9zeXMvZXJybm8uaCAqLwpAQCAtODIsNyArODMsNyBAQCBleHRlcm4gaW50IHJlYWRf
cmFuZG9tKHZvaWQgKmJ1ZiwgaW50IGNvdW50KTsKIC8qIFNvdXJjZSBpcF9vdXRwdXQuYy4gZXh0
ZXJuJ2QgaW4gaXBfdmFyLmggKi8KIGV4dGVybiB1X3Nob3J0IGlwX2lkOwogCi0jaWYgZGVmaW5l
ZChfX1VzZXJzcGFjZV9vc19MaW51eCkKKyNpZiBkZWZpbmVkKF9fbGludXhfXykKICNkZWZpbmUg
SVBWNl9WRVJTSU9OICAgICAgICAgICAgMHg2MAogI2VuZGlmCiAKQEAgLTk2LDcgKzk3LDcgQEAg
dGVybWluYXRlX25vbl9ncmFjZWZ1bCh2b2lkKSB7CiAKICNkZWZpbmUgcGFuaWMoLi4uKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAJZG8geyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0JCVNDVFBfUFJJTlRGKCIlcygpOiAiLCBfX0ZVTkNUSU9O
X18pO1wKKwkJU0NUUF9QUklOVEYoIiVzKCk6ICIsIF9fZnVuY19fKTsgICAgXAogCQlTQ1RQX1BS
SU5URihfX1ZBX0FSR1NfXyk7ICAgICAgICAgICBcCiAJCVNDVFBfUFJJTlRGKCJcbiIpOyAgICAg
ICAgICAgICAgICAgIFwKIAkJdGVybWluYXRlX25vbl9ncmFjZWZ1bCgpOyAgICAgICAgICAgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX2lucGNiLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91
c3JzY3RwbGliL3VzZXJfaW5wY2IuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1Cmlu
ZGV4IDgxYjVkMjEyZDcwOS4uMzVkNTljODU4ZjIxCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIv
dXNlcl9pbnBjYi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9pbnBjYi5oCkBAIC0z
NSw4ICszNSw2IEBACiAKICNpbmNsdWRlIDx1c2VyX3JvdXRlLmg+IC8qIHdhcyA8bmV0L3JvdXRl
Lmg+ICovCiAKLSNkZWZpbmUJaW42cGNiCQlpbnBjYgkvKiBmb3IgS0FNRSBzcmMgc3luYyBvdmVy
IEJTRConcyAqLwotI2RlZmluZQlpbjZwX3NwCQlpbnBfc3AJLyogZm9yIEtBTUUgc3JjIHN5bmMg
b3ZlciBCU0QqJ3MgKi8KIHN0cnVjdCBpbnBjYnBvbGljeTsKIAogLyoKQEAgLTU2LDcgKzU0LDcg
QEAgTElTVF9IRUFEKGlucGNicG9ydGhlYWQsIGlucGNicG9ydCk7CiAgKiB0aGUgZm9sbG93aW5n
IHN0cnVjdHVyZS4KICAqLwogc3RydWN0IGluX2FkZHJfNGluNiB7Ci0JdV9pbnQzMl90CWlhNDZf
cGFkMzJbM107CisJdWludDMyX3QJaWE0Nl9wYWQzMlszXTsKIAlzdHJ1Y3QJaW5fYWRkcglpYTQ2
X2FkZHI0OwogfTsKIApAQCAtNjUsOCArNjMsOCBAQCBzdHJ1Y3QgaW5fYWRkcl80aW42IHsKICAq
IHNvbWUgZXh0cmEgcGFkZGluZyB0byBhY2NvbXBsaXNoIHRoaXMuCiAgKi8KIHN0cnVjdCBpbl9l
bmRwb2ludHMgewotCXVfaW50MTZfdAlpZV9mcG9ydDsJCS8qIGZvcmVpZ24gcG9ydCAqLwotCXVf
aW50MTZfdAlpZV9scG9ydDsJCS8qIGxvY2FsIHBvcnQgKi8KKwl1aW50MTZfdAlpZV9mcG9ydDsJ
CS8qIGZvcmVpZ24gcG9ydCAqLworCXVpbnQxNl90CWllX2xwb3J0OwkJLyogbG9jYWwgcG9ydCAq
LwogCS8qIHByb3RvY29sIGRlcGVuZGVudCBwYXJ0LCBsb2NhbCBhbmQgZm9yZWlnbiBhZGRyICov
CiAJdW5pb24gewogCQkvKiBmb3JlaWduIGhvc3QgdGFibGUgZW50cnkgKi8KQEAgLTg5LDkgKzg3
LDkgQEAgc3RydWN0IGluX2VuZHBvaW50cyB7CiAgKiByZWZlcmVuY2VzLgogICovCiBzdHJ1Y3Qg
aW5fY29ubmluZm8gewotCXVfaW50OF90CWluY19mbGFnczsKLQl1X2ludDhfdAlpbmNfbGVuOwot
CXVfaW50MTZfdAlpbmNfcGFkOwkvKiBYWFggYWxpZ25tZW50IGZvciBpbl9lbmRwb2ludHMgKi8K
Kwl1aW50OF90CWluY19mbGFnczsKKwl1aW50OF90CWluY19sZW47CisJdWludDE2X3QJaW5jX3Bh
ZDsJLyogWFhYIGFsaWdubWVudCBmb3IgaW5fZW5kcG9pbnRzICovCiAJLyogcHJvdG9jb2wgZGVw
ZW5kZW50IHBhcnQgKi8KIAlzdHJ1Y3QJaW5fZW5kcG9pbnRzIGluY19pZTsKIH07CkBAIC0xMTIs
NyArMTEwLDcgQEAgc3RydWN0IGlucGNiIHsKIAlzdHJ1Y3QJaW5wY2JpbmZvICppbnBfcGNiaW5m
bzsJLyogUENCIGxpc3QgaW5mbyAqLwogCXN0cnVjdAlzb2NrZXQgKmlucF9zb2NrZXQ7CS8qIGJh
Y2sgcG9pbnRlciB0byBzb2NrZXQgKi8KIAotCXVfaW50MzJfdAlpbnBfZmxvdzsKKwl1aW50MzJf
dAlpbnBfZmxvdzsKIAlpbnQJaW5wX2ZsYWdzOwkJLyogZ2VuZXJpYyBJUC9kYXRhZ3JhbSBmbGFn
cyAqLwogCiAJdV9jaGFyCWlucF92ZmxhZzsJCS8qIElQIHZlcnNpb24gZmxhZyAodjQvdjYpICov
CkBAIC0zMjYsMTMgKzMyNCwxMSBAQCBzdHJ1Y3QgaW5wY2JpbmZvIHsKIAogI2RlZmluZQlJTlBM
T09LVVBfV0lMRENBUkQJMQogI2RlZmluZQlzb3RvaW5wY2Ioc28pCSgoc3RydWN0IGlucGNiICop
KHNvKS0+c29fcGNiKQotI2RlZmluZQlzb3RvaW42cGNiKHNvKQlzb3RvaW5wY2Ioc28pIC8qIGZv
ciBLQU1FIHNyYyBzeW5jIG92ZXIgQlNEKidzICovCiAKICNkZWZpbmUJSU5QX1NPQ0tBRihzbykg
c28tPnNvX3Byb3RvLT5wcl9kb21haW4tPmRvbV9mYW1pbHkKIAogI2RlZmluZQlJTlBfQ0hFQ0tf
U09DS0FGKHNvLCBhZikJKElOUF9TT0NLQUYoc28pID09IGFmKQogCi0vKiAjaWZkZWYgX0tFUk5F
TCAqLwogZXh0ZXJuIGludAlpcHBvcnRfcmVzZXJ2ZWRoaWdoOwogZXh0ZXJuIGludAlpcHBvcnRf
cmVzZXJ2ZWRsb3c7CiBleHRlcm4gaW50CWlwcG9ydF9sb3dmaXJzdGF1dG87CkBAIC0zNzMsNiAr
MzY5LDUgQEAgdm9pZAlpcHBvcnRfdGljayh2b2lkICp4dHApOwogICovCiB2b2lkCWRiX3ByaW50
X2lucGNiKHN0cnVjdCBpbnBjYiAqaW5wLCBjb25zdCBjaGFyICpuYW1lLCBpbnQgaW5kZW50KTsK
IAotLyogI2VuZGlmICBfS0VSTkVMICovCiAKICNlbmRpZiAvKiAhX05FVElORVRfSU5fUENCX0hf
ICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfaXA2X3Zhci5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNj
dHBsaWIvdXNyc2N0cGxpYi91c2VyX2lwNl92YXIuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUg
MTAwNzU1CmluZGV4IGY1ZTRhNjBlNGYyNy4uZTFjOGYyNDE1NjRlCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Vz
cnNjdHBsaWIvdXNlcl9pcDZfdmFyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX2lw
Nl92YXIuaApAQCAtNjAsMTYgKzYwLDE2IEBACiAjaWZuZGVmIF9VU0VSX0lQNl9WQVJfSF8KICNk
ZWZpbmUgX1VTRVJfSVA2X1ZBUl9IXwogCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5k
b3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogc3RydWN0IGlwNl9oZHIgewogCXVuaW9uIHsKIAkJ
c3RydWN0IGlwNl9oZHJjdGwgewotCQkJdV9pbnQzMl90IGlwNl91bjFfZmxvdzsJLyogMjAgYml0
cyBvZiBmbG93LUlEICovCi0JCQl1X2ludDE2X3QgaXA2X3VuMV9wbGVuOwkvKiBwYXlsb2FkIGxl
bmd0aCAqLwotCQkJdV9pbnQ4X3QgIGlwNl91bjFfbnh0OwkvKiBuZXh0IGhlYWRlciAqLwotCQkJ
dV9pbnQ4X3QgIGlwNl91bjFfaGxpbTsJLyogaG9wIGxpbWl0ICovCisJCQl1aW50MzJfdCBpcDZf
dW4xX2Zsb3c7CS8qIDIwIGJpdHMgb2YgZmxvdy1JRCAqLworCQkJdWludDE2X3QgaXA2X3VuMV9w
bGVuOwkvKiBwYXlsb2FkIGxlbmd0aCAqLworCQkJdWludDhfdCAgaXA2X3VuMV9ueHQ7CS8qIG5l
eHQgaGVhZGVyICovCisJCQl1aW50OF90ICBpcDZfdW4xX2hsaW07CS8qIGhvcCBsaW1pdCAqLwog
CQl9IGlwNl91bjE7Ci0JCXVfaW50OF90IGlwNl91bjJfdmZjOwkvKiA0IGJpdHMgdmVyc2lvbiwg
dG9wIDQgYml0cyBjbGFzcyAqLworCQl1aW50OF90IGlwNl91bjJfdmZjOwkvKiA0IGJpdHMgdmVy
c2lvbiwgdG9wIDQgYml0cyBjbGFzcyAqLwogCX0gaXA2X2N0bHVuOwogCXN0cnVjdCBpbjZfYWRk
ciBpcDZfc3JjOwkvKiBzb3VyY2UgYWRkcmVzcyAqLwogCXN0cnVjdCBpbjZfYWRkciBpcDZfZHN0
OwkvKiBkZXN0aW5hdGlvbiBhZGRyZXNzICovCkBAIC04NCwxOCArODQsMTggQEAgc3RydWN0IGlw
Nl9oZHIgewogI2RlZmluZSBJUFY2X1ZFUlNJT04JCTB4NjAKICNlbmRpZgogCi0jaWYgZGVmaW5l
ZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogI2RlZmluZSBz
Nl9hZGRyMTYgdS5Xb3JkCiAjZW5kaWYKLSNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5k
b3dzKQotI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0xpbnV4KQorI2lmICFkZWZpbmVkKF9X
SU4zMikKKyNpZiAhZGVmaW5lZChfX2xpbnV4X18pCiAjZGVmaW5lIHM2X2FkZHI4ICBfX3U2X2Fk
ZHIuX191Nl9hZGRyOAogI2RlZmluZSBzNl9hZGRyMTYgX191Nl9hZGRyLl9fdTZfYWRkcjE2CiAj
ZGVmaW5lIHM2X2FkZHIzMiBfX3U2X2FkZHIuX191Nl9hZGRyMzIKICNlbmRpZgogI2VuZGlmCiAK
LSNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19GcmVlQlNEKSAmJiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9vc19PcGVuQlNEKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19EcmFnb25GbHkpCisj
aWYgIWRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fT3BlbkJTRF9fKSAmJiAhZGVm
aW5lZChfX0RyYWdvbkZseV9fKQogc3RydWN0IHJvdXRlX2luNiB7CiAJc3RydWN0CXJ0ZW50cnkg
KnJvX3J0OwogCXN0cnVjdAlsbGVudHJ5ICpyb19sbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91
c3JzY3RwbGliL3VzZXJfaXBfaWNtcC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX2lwX2lj
bXAuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGY2ZmQ1NDg3ZTJiYy4u
MDQ5MzE0ZTIwNTAyCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9pcF9pY21wLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX2lwX2ljbXAuaApAQCAtNDAsOCArNDAsOCBAQAog
ICogSW50ZXJuYWwgb2YgYW4gSUNNUCBSb3V0ZXIgQWR2ZXJ0aXNlbWVudAogICovCiBzdHJ1Y3Qg
aWNtcF9yYV9hZGRyIHsKLQl1X2ludDMyX3QgaXJhX2FkZHI7Ci0JdV9pbnQzMl90IGlyYV9wcmVm
ZXJlbmNlOworCXVpbnQzMl90IGlyYV9hZGRyOworCXVpbnQzMl90IGlyYV9wcmVmZXJlbmNlOwog
fTsKIAogLyoKQEAgLTUzLDE2ICs1MywxNiBAQCBzdHJ1Y3QgaWNtcGhkciB7CiAJdV9zaG9ydAlp
Y21wX2Nrc3VtOwkJLyogb25lcyBjb21wbGVtZW50IGNrc3VtIG9mIHN0cnVjdCAqLwogfTsKIAot
I2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikK
ICNwcmFnbWEgcGFjayAocHVzaCwgMSkKIHN0cnVjdCBpY21wNl9oZHIgewotCXVfaW50OF90IGlj
bXA2X3R5cGU7Ci0JdV9pbnQ4X3QgaWNtcDZfY29kZTsKLQl1X2ludDE2X3QgaWNtcDZfY2tzdW07
CisJdWludDhfdCBpY21wNl90eXBlOworCXVpbnQ4X3QgaWNtcDZfY29kZTsKKwl1aW50MTZfdCBp
Y21wNl9ja3N1bTsKIAl1bmlvbiB7Ci0JCXVfaW50MzJfdCBpY21wNl91bl9kYXRhMzJbMV07Ci0J
CXVfaW50MTZfdCBpY21wNl91bl9kYXRhMTZbMl07Ci0JCXVfaW50OF90IGljbXA2X3VuX2RhdGE4
WzRdOworCQl1aW50MzJfdCBpY21wNl91bl9kYXRhMzJbMV07CisJCXVpbnQxNl90IGljbXA2X3Vu
X2RhdGExNlsyXTsKKwkJdWludDhfdCBpY21wNl91bl9kYXRhOFs0XTsKIAl9IGljbXA2X2RhdGF1
bjsKIH07CiAjcHJhZ21hIHBhY2socG9wKQpAQCAtOTgsNyArOTgsNyBAQCBzdHJ1Y3QgaWNtcCB7
CiAJCXN0cnVjdCBpaF9ydHJhZHYgewogCQkJdV9jaGFyIGlydF9udW1fYWRkcnM7CiAJCQl1X2No
YXIgaXJ0X3dwYTsKLQkJCXVfaW50MTZfdCBpcnRfbGlmZXRpbWU7CisJCQl1aW50MTZfdCBpcnRf
bGlmZXRpbWU7CiAJCX0gaWhfcnRyYWR2OwogCX0gaWNtcF9odW47CiAjZGVmaW5lCWljbXBfcHB0
cglpY21wX2h1bi5paF9wcHRyCkBAIC0xMjYsNyArMTI2LDcgQEAgc3RydWN0IGljbXAgewogCQkJ
Lyogb3B0aW9ucyBhbmQgdGhlbiA2NCBiaXRzIG9mIGRhdGEgKi8KIAkJfSBpZF9pcDsKIAkJc3Ry
dWN0IGljbXBfcmFfYWRkciBpZF9yYWR2OwotCQl1X2ludDMyX3QgaWRfbWFzazsKKwkJdWludDMy
X3QgaWRfbWFzazsKIAkJY2hhcglpZF9kYXRhWzFdOwogCX0gaWNtcF9kdW47CiAjZGVmaW5lCWlj
bXBfb3RpbWUJaWNtcF9kdW4uaWRfdHMuaXRzX290aW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91
c3JzY3RwbGliL3VzZXJfbWFsbG9jLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfbWFsbG9j
LmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA3MzkwNGNhNWI0N2IuLjE2
MTI0NTIxNjg0NwotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfbWFsbG9jLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3Vz
cnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX21hbGxvYy5oCkBAIC0zNywxMSArMzcsMTEgQEAKIC8q
X19Vc2Vyc3BhY2VfXyovCiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVz
Lmg+Ci0jaWYgIWRlZmluZWQgKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgIWRlZmluZWQo
X1dJTjMyKQogI2luY2x1ZGUgPHN0cmluZ3MuaD4KICNpbmNsdWRlIDxzdGRpbnQuaD4KICNlbHNl
Ci0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPj0gMTYwMAorI2lmIChkZWZpbmVk
KF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA+PSAxNjAwKSB8fCAoZGVmaW5lZChfX01TVkNSVF9WRVJT
SU9OX18pICYmIF9fTVNWQ1JUX1ZFUlNJT05fXyA+PSAxNDAwKQogI2luY2x1ZGUgPHN0ZGludC5o
PgogI2VsaWYgZGVmaW5lZChTQ1RQX1NURElOVF9JTkNMVURFKQogI2luY2x1ZGUgU0NUUF9TVERJ
TlRfSU5DTFVERQpAQCAtMjAwLDY3ICsyMDAsNCBAQCBTdGFydCBjb3B5OiBDb3BpZWQgY29kZSBm
b3IgX19Vc2Vyc3BhY2VfXyAqLwogCX0JCQkJCQkJCVwKICAgICB9IHdoaWxlICgwKTsKIAotCi0v
KiBFbmQgY29weTogQ29waWVkIGNvZGUgZm9yIF9fVXNlcnNwYWNlX18gKi8KLQotI2lmIDAKLSNp
ZmRlZiBfS0VSTkVMCi0jZGVmaW5lCU1BTExPQ19ERUZJTkUodHlwZSwgc2hvcnRkZXNjLCBsb25n
ZGVzYykJCQlcCi0Jc3RydWN0IG1hbGxvY190eXBlIHR5cGVbMV0gPSB7CQkJCQlcCi0JCXsgTlVM
TCwgMCwgMCwgMCwgMCwgMCwgTV9NQUdJQywgc2hvcnRkZXNjLCBOVUxMLCBOVUxMLAlcCi0JCSAg
ICBOVUxMLCAwLCBOVUxMLCBOVUxMLCAwLCAwIH0JCQkJXAotCX07CQkJCQkJCQlcCi0JU1lTSU5J
VCh0eXBlIyNfaW5pdCwgU0lfU1VCX0tNRU0sIFNJX09SREVSX1NFQ09ORCwgbWFsbG9jX2luaXQs
CVwKLQkgICAgdHlwZSk7CQkJCQkJCVwKLQlTWVNVTklOSVQodHlwZSMjX3VuaW5pdCwgU0lfU1VC
X0tNRU0sIFNJX09SREVSX0FOWSwJCVwKLQkgICAgbWFsbG9jX3VuaW5pdCwgdHlwZSkKLQotCi0j
ZGVmaW5lCU1BTExPQ19ERUNMQVJFKHR5cGUpIFwKLQlleHRlcm4gc3RydWN0IG1hbGxvY190eXBl
IHR5cGVbMV0KLQotTUFMTE9DX0RFQ0xBUkUoTV9DQUNIRSk7Ci1NQUxMT0NfREVDTEFSRShNX0RF
VkJVRik7Ci1NQUxMT0NfREVDTEFSRShNX1RFTVApOwotCi1NQUxMT0NfREVDTEFSRShNX0lQNk9Q
VCk7IC8qIGZvciBJTkVUNiAqLwotTUFMTE9DX0RFQ0xBUkUoTV9JUDZORFApOyAvKiBmb3IgSU5F
VDYgKi8KLQotLyoKLSAqIERlcHJlY2F0ZWQgbWFjcm8gdmVyc2lvbnMgb2Ygbm90LXF1aXRlLW1h
bGxvYygpIGFuZCBmcmVlKCkuCi0gKi8KLSNkZWZpbmUJTUFMTE9DKHNwYWNlLCBjYXN0LCBzaXpl
LCB0eXBlLCBmbGFncykgXAotCSgoc3BhY2UpID0gKGNhc3QpbWFsbG9jKCh1X2xvbmcpKHNpemUp
LCAodHlwZSksIChmbGFncykpKQotI2RlZmluZQlGUkVFKGFkZHIsIHR5cGUpIGZyZWUoKGFkZHIp
LCAodHlwZSkpCi0KLS8qCi0gKiBYWFggdGhpcyBzaG91bGQgYmUgZGVjbGFyZWQgaW4gPHN5cy91
aW8uaD4sIGJ1dCB0aGF0IHRlbmRzIHRvIGZhaWwKLSAqIGJlY2F1c2UgPHN5cy91aW8uaD4gaXMg
aW5jbHVkZWQgaW4gYSBoZWFkZXIgYmVmb3JlIHRoZSBzb3VyY2UgZmlsZQotICogaGFzIGEgY2hh
bmNlIHRvIGluY2x1ZGUgPHN5cy9tYWxsb2MuaD4gdG8gZ2V0IE1BTExPQ19ERUNMQVJFKCkgZGVm
aW5lZC4KLSAqLwotTUFMTE9DX0RFQ0xBUkUoTV9JT1YpOwotCi1leHRlcm4gc3RydWN0IG10eCBt
YWxsb2NfbXR4OwotCi0vKiBYWFggc3RydWN0IG1hbGxvY190eXBlIGlzIHVudXNlZCBmb3IgY29u
dGlnKigpLiAqLwotdm9pZAljb250aWdmcmVlKHZvaWQgKmFkZHIsIHVuc2lnbmVkIGxvbmcgc2l6
ZSwgc3RydWN0IG1hbGxvY190eXBlICp0eXBlKTsKLXZvaWQJKmNvbnRpZ21hbGxvYyh1bnNpZ25l
ZCBsb25nIHNpemUsIHN0cnVjdCBtYWxsb2NfdHlwZSAqdHlwZSwgaW50IGZsYWdzLAotCSAgICB2
bV9wYWRkcl90IGxvdywgdm1fcGFkZHJfdCBoaWdoLCB1bnNpZ25lZCBsb25nIGFsaWdubWVudCwK
LQkgICAgdW5zaWduZWQgbG9uZyBib3VuZGFyeSk7Ci12b2lkCWZyZWUodm9pZCAqYWRkciwgc3Ry
dWN0IG1hbGxvY190eXBlICp0eXBlKTsKLXZvaWQJKm1hbGxvYyh1bnNpZ25lZCBsb25nIHNpemUs
IHN0cnVjdCBtYWxsb2NfdHlwZSAqdHlwZSwgaW50IGZsYWdzKTsKLXZvaWQJbWFsbG9jX2luaXQo
dm9pZCAqKTsKLWludAltYWxsb2NfbGFzdF9mYWlsKHZvaWQpOwotdm9pZAltYWxsb2NfdHlwZV9h
bGxvY2F0ZWQoc3RydWN0IG1hbGxvY190eXBlICp0eXBlLCB1bnNpZ25lZCBsb25nIHNpemUpOwot
dm9pZAltYWxsb2NfdHlwZV9mcmVlZChzdHJ1Y3QgbWFsbG9jX3R5cGUgKnR5cGUsIHVuc2lnbmVk
IGxvbmcgc2l6ZSk7Ci12b2lkCW1hbGxvY191bmluaXQodm9pZCAqKTsKLXZvaWQJKnJlYWxsb2Mo
dm9pZCAqYWRkciwgdW5zaWduZWQgbG9uZyBzaXplLCBzdHJ1Y3QgbWFsbG9jX3R5cGUgKnR5cGUs
Ci0JICAgIGludCBmbGFncyk7Ci12b2lkCSpyZWFsbG9jZih2b2lkICphZGRyLCB1bnNpZ25lZCBs
b25nIHNpemUsIHN0cnVjdCBtYWxsb2NfdHlwZSAqdHlwZSwKLQkgICAgaW50IGZsYWdzKTsKLQot
Ci0jZW5kaWYgLyogX0tFUk5FTCAqLwotI2VuZGlmCi0KICNlbmRpZiAvKiAhX1NZU19NQUxMT0Nf
SF8gKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9tYnVmLmMgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0
cGxpYi91c3JzY3RwbGliL3VzZXJfbWJ1Zi5jCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3
NTUKaW5kZXggYTYzYTg4OWI3NTEzLi45ZTU2NmUzMDI1OTAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0
cGxpYi91c2VyX21idWYuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfbWJ1Zi5jCkBA
IC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSAidXNlcl9hdG9taWMuaCIKICNpbmNsdWRlICJuZXRp
bmV0L3NjdHBfcGNiLmgiCiAKLXN0cnVjdCBtYnN0YXQgbWJzdGF0OwogI2RlZmluZSBLSVBDX01B
WF9MSU5LSERSICAgICAgICA0ICAgICAgIC8qIGludDogbWF4IGxlbmd0aCBvZiBsaW5rIGhlYWRl
ciAoc2VlIHN5cy9zeXNjbHQuaCkgKi8KICNkZWZpbmUgS0lQQ19NQVhfUFJPVE9IRFIJNQkvKiBp
bnQ6IG1heCBsZW5ndGggb2YgbmV0d29yayBoZWFkZXIgKHNlZSBzeXMvc3lzY2x0LmgpKi8KIGlu
dCBtYXhfbGlua2hkciA9IEtJUENfTUFYX0xJTktIRFI7CkBAIC0yNzIsOSArMjcxLDkgQEAgbV9j
bGdldChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGhvdykKIAkJbWNsdXN0X3JldCA9IFNDVFBfWk9ORV9H
RVQoem9uZV9jbHVzdCwgY2hhcik7CiAjZW5kaWYKIAkJLyptY2x1c3RfcmV0ID0gdW1lbV9jYWNo
ZV9hbGxvYyh6b25lX2NsdXN0LCBVTUVNX0RFRkFVTFQpOyovCi0JCWlmIChOVUxMID09IG1jbHVz
dF9yZXQpIHsKLQkJCVNDVFBEQkcoU0NUUF9ERUJVR19VU1IsICJNZW1vcnkgYWxsb2NhdGlvbiBm
YWlsdXJlIGluICVzXG4iLCBfX2Z1bmNfXyk7Ci0JCX0KKwkJLyogaWYgKE5VTEwgPT0gbWNsdXN0
X3JldCkgeyAqLworCQlTQ1RQREJHKFNDVFBfREVCVUdfVVNSLCAiTWVtb3J5IGFsbG9jYXRpb24g
ZmFpbHVyZSBpbiAlc1xuIiwgX19mdW5jX18pOworCQkvKiB9ICovCiAJfQogCiAjaWYgVVNJTkdf
TUJVRl9DT05TVFJVQ1RPUgpAQCAtMjkwLDcgKzI4OSw3IEBAIHN0cnVjdCBtYnVmICoKIG1fZ2V0
bTIoc3RydWN0IG1idWYgKm0sIGludCBsZW4sIGludCBob3csIHNob3J0IHR5cGUsIGludCBmbGFn
cywgaW50IGFsbG9uZWJ1ZikKIHsKIAlzdHJ1Y3QgbWJ1ZiAqbWIsICpubSA9IE5VTEwsICptdGFp
bCA9IE5VTEw7Ci0JaW50IHNpemUgPSAwLCBtYnVmX3RocmVzaG9sZCwgc3BhY2VfbmVlZGVkID0g
bGVuOworCWludCBzaXplLCBtYnVmX3RocmVzaG9sZCwgc3BhY2VfbmVlZGVkID0gbGVuOwogCiAJ
S0FTU0VSVChsZW4gPj0gMCwgKCIlczogbGVuIGlzIDwgMCIsIF9fZnVuY19fKSk7CiAKQEAgLTMx
Myw3ICszMTIsNyBAQCBtX2dldG0yKHN0cnVjdCBtYnVmICptLCBpbnQgbGVuLCBpbnQgaG93LCBz
aG9ydCB0eXBlLCBpbnQgZmxhZ3MsIGludCBhbGxvbmVidWYpCiAJCQltYiA9IG1fZ2V0aGRyKGhv
dywgdHlwZSk7CiAJCQlNQ0xHRVQobWIsIGhvdyk7CiAJCQlzaXplID0gTUNMQllURVM7Ci0JCQkv
L1NDVFBfQlVGX0xFTihtYikgPSBNQ0xCWVRFUzsKKwkJCS8qIFNDVFBfQlVGX0xFTihtYikgPSBN
Q0xCWVRFUzsgKi8KIAkJfSBlbHNlIGlmIChmbGFncyAmIE1fUEtUSERSKSB7CiAJCQltYiA9IG1f
Z2V0aGRyKGhvdywgdHlwZSk7CiAJCQlpZiAobGVuIDwgTUhMRU4pIHsKQEAgLTMzOCw3ICszMzcs
NyBAQCBtX2dldG0yKHN0cnVjdCBtYnVmICptLCBpbnQgbGVuLCBpbnQgaG93LCBzaG9ydCB0eXBl
LCBpbnQgZmxhZ3MsIGludCBhbGxvbmVidWYpCiAJCX0KIAogCQlpZiAoYWxsb25lYnVmICE9IDAg
JiYgc2l6ZSA8IHNwYWNlX25lZWRlZCkgewotCQkJbV9mcmVlbShtKTsKKwkJCW1fZnJlZW0obWIp
OwogCQkJcmV0dXJuIChOVUxMKTsKIAkJfQogCkBAIC00NzMsNyArNDcyLDcgQEAgbV90YWdfZnJl
ZShzdHJ1Y3QgbV90YWcgKnQpCiAgKiBYWFggcHJvYmFibHkgc2hvdWxkIGJlIGNhbGxlZCBtX3Rh
Z19pbml0LCBidXQgdGhhdCB3YXMgYWxyZWFkeSB0YWtlbi4KICAqLwogc3RhdGljIF9faW5saW5l
IHZvaWQKLW1fdGFnX3NldHVwKHN0cnVjdCBtX3RhZyAqdCwgdV9pbnQzMl90IGNvb2tpZSwgaW50
IHR5cGUsIGludCBsZW4pCittX3RhZ19zZXR1cChzdHJ1Y3QgbV90YWcgKnQsIHVpbnQzMl90IGNv
b2tpZSwgaW50IHR5cGUsIGludCBsZW4pCiB7CiAKIAl0LT5tX3RhZ19pZCA9IHR5cGU7CkBAIC01
MzYsMjYgKzUzNSw2IEBAIG1idWZfaW5pdGlhbGl6ZSh2b2lkICpkdW1teSkKIAkgKgogCSAqLwog
Ci0KLQkvKgotCSAqIFtSZV1zZXQgY291bnRlcnMgYW5kIGxvY2FsIHN0YXRpc3RpY3Mga25vYnMu
Ci0JICoKLQkgKi8KLQotCW1ic3RhdC5tX21idWZzID0gMDsKLQltYnN0YXQubV9tY2x1c3RzID0g
MDsKLQltYnN0YXQubV9kcmFpbiA9IDA7Ci0JbWJzdGF0Lm1fbXNpemUgPSBNU0laRTsKLQltYnN0
YXQubV9tY2xieXRlcyA9IE1DTEJZVEVTOwotCW1ic3RhdC5tX21pbmNsc2l6ZSA9IE1JTkNMU0la
RTsKLQltYnN0YXQubV9tbGVuID0gTUxFTjsKLQltYnN0YXQubV9taGxlbiA9IE1ITEVOOwotCW1i
c3RhdC5tX251bXR5cGVzID0gTVRfTlRZUEVTOwotCi0JbWJzdGF0Lm1fbWNmYWlsID0gbWJzdGF0
Lm1fbXBmYWlsID0gMDsKLQltYnN0YXQuc2ZfaW9jbnQgPSAwOwotCW1ic3RhdC5zZl9hbGxvY3dh
aXQgPSBtYnN0YXQuc2ZfYWxsb2NmYWlsID0gMDsKLQogfQogCiAKQEAgLTkwOSw3ICs4ODgsNiBA
QCBtX3B1bGx1cChzdHJ1Y3QgbWJ1ZiAqbiwgaW50IGxlbikKIAlyZXR1cm4gKG0pOwogYmFkOgog
CW1fZnJlZW0obik7Ci0JbWJzdGF0Lm1fbXBmYWlsKys7CS8qIFhYWDogTm8gY29uc2lzdGVuY3ku
ICovCiAJcmV0dXJuIChOVUxMKTsKIH0KIApAQCAtMTA0NSwxNiArMTAyMywxNCBAQCBtX3B1bGxk
b3duKHN0cnVjdCBtYnVmICptLCBpbnQgb2ZmLCBpbnQgbGVuLCBpbnQgKm9mZnApCiAJICogZWFz
eSBjYXNlcyBmaXJzdC4KIAkgKiB3ZSBuZWVkIHRvIHVzZSBtX2NvcHlkYXRhKCkgdG8gZ2V0IGRh
dGEgZnJvbSA8bi0+bV9uZXh0LCAwPi4KIAkgKi8KLQlpZiAoKG9mZiA9PSAwIHx8IG9mZnApICYm
IE1fVFJBSUxJTkdTUEFDRShuKSA+PSB0bGVuCi0JICAgICYmIHdyaXRhYmxlKSB7CisJaWYgKChv
ZmYgPT0gMCB8fCBvZmZwKSAmJiAoTV9UUkFJTElOR1NQQUNFKG4pID49IHRsZW4pICYmIHdyaXRh
YmxlKSB7CiAJCW1fY29weWRhdGEobi0+bV9uZXh0LCAwLCB0bGVuLCBtdG9kKG4sIGNhZGRyX3Qp
ICsgbi0+bV9sZW4pOwogCQluLT5tX2xlbiArPSB0bGVuOwogCQltX2FkaihuLT5tX25leHQsIHRs
ZW4pOwogCQlnb3RvIG9rOwogCX0KIAotCWlmICgob2ZmID09IDAgfHwgb2ZmcCkgJiYgTV9MRUFE
SU5HU1BBQ0Uobi0+bV9uZXh0KSA+PSBobGVuCi0JICAgICYmIHdyaXRhYmxlKSB7CisJaWYgKChv
ZmYgPT0gMCB8fCBvZmZwKSAmJiAoTV9MRUFESU5HU1BBQ0Uobi0+bV9uZXh0KSA+PSBobGVuKSAm
JiB3cml0YWJsZSkgewogCQluLT5tX25leHQtPm1fZGF0YSAtPSBobGVuOwogCQluLT5tX25leHQt
Pm1fbGVuICs9IGhsZW47CiAJCW1lbWNweSggbXRvZChuLT5tX25leHQsIGNhZGRyX3QpLCBtdG9k
KG4sIGNhZGRyX3QpICsgb2ZmLGhsZW4pOwpAQCAtMTE5OCwxMyArMTE3NCwxMCBAQCBtX2NvcHlt
KHN0cnVjdCBtYnVmICptLCBpbnQgb2ZmMCwgaW50IGxlbiwgaW50IHdhaXQpCiAJCW0gPSBtLT5t
X25leHQ7CiAJCW5wID0gJm4tPm1fbmV4dDsKIAl9Ci0JaWYgKHRvcCA9PSBOVUxMKQotCQltYnN0
YXQubV9tY2ZhaWwrKzsJLyogWFhYOiBObyBjb25zaXN0ZW5jeS4gKi8KIAogCXJldHVybiAodG9w
KTsKIG5vc3BhY2U6CiAJbV9mcmVlbSh0b3ApOwotCW1ic3RhdC5tX21jZmFpbCsrOwkvKiBYWFg6
IE5vIGNvbnNpc3RlbmN5LiAqLwogCXJldHVybiAoTlVMTCk7CiB9CiAKQEAgLTEyNjYsNyArMTIz
OSw3IEBAIG1fdGFnX2NvcHkoc3RydWN0IG1fdGFnICp0LCBpbnQgaG93KQogCiAvKiBHZXQgYSBw
YWNrZXQgdGFnIHN0cnVjdHVyZSBhbG9uZyB3aXRoIHNwZWNpZmllZCBkYXRhIGZvbGxvd2luZy4g
Ki8KIHN0cnVjdCBtX3RhZyAqCi1tX3RhZ19hbGxvYyh1X2ludDMyX3QgY29va2llLCBpbnQgdHlw
ZSwgaW50IGxlbiwgaW50IHdhaXQpCittX3RhZ19hbGxvYyh1aW50MzJfdCBjb29raWUsIGludCB0
eXBlLCBpbnQgbGVuLCBpbnQgd2FpdCkKIHsKIAlzdHJ1Y3QgbV90YWcgKnQ7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0
cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9tYnVmLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGli
L3VzZXJfbWJ1Zi5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggOWM1ZDBk
N2VmNDVhLi5jMTFiMzhjOWNiMTIKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX21idWYu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3Vz
cnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfbWJ1Zi5oCkBAIC0xMTAsNyArMTEwLDcg
QEAgdm9pZCAgICAgICAgICAgICBtX2NhdChzdHJ1Y3QgbWJ1ZiAqbSwgc3RydWN0IG1idWYgKm4p
Owogdm9pZAkJIG1fYWRqKHN0cnVjdCBtYnVmICosIGludCk7CiB2b2lkICBtYl9mcmVlX2V4dChz
dHJ1Y3QgbWJ1ZiAqKTsKIHZvaWQgIG1fZnJlZW0oc3RydWN0IG1idWYgKik7Ci1zdHJ1Y3QgbV90
YWcJKm1fdGFnX2FsbG9jKHVfaW50MzJfdCwgaW50LCBpbnQsIGludCk7CitzdHJ1Y3QgbV90YWcJ
Km1fdGFnX2FsbG9jKHVpbnQzMl90LCBpbnQsIGludCwgaW50KTsKIHN0cnVjdCBtYnVmCSptX2Nv
cHltKHN0cnVjdCBtYnVmICosIGludCwgaW50LCBpbnQpOwogdm9pZAkJIG1fY29weWJhY2soc3Ry
dWN0IG1idWYgKiwgaW50LCBpbnQsIGNhZGRyX3QpOwogc3RydWN0IG1idWYJKm1fcHVsbHVwKHN0
cnVjdCBtYnVmICosIGludCk7CkBAIC0xMjgsMzUgKzEyOCw2IEBAIHZvaWQJCSBtX2NvcHlkYXRh
KGNvbnN0IHN0cnVjdCBtYnVmICosIGludCwgaW50LCBjYWRkcl90KTsKICNkZWZpbmUJTVRfTk9J
TklUCTI1NQkvKiBOb3QgYSB0eXBlIGJ1dCBhIGZsYWcgdG8gYWxsb2NhdGUKIAkJCQkgICBhIG5v
bi1pbml0aWFsaXplZCBtYnVmICovCiAKLS8qCi0gKiBHZW5lcmFsIG1idWYgYWxsb2NhdG9yIHN0
YXRpc3RpY3Mgc3RydWN0dXJlLgotICogX19Vc2Vyc3BhY2VfXyBtYnN0YXQgbWF5IGJlIHVzZWZ1
bCBmb3IgZ2F0aGVyaW5nIHN0YXRpc3RpY3MuCi0gKiBJbiB0aGUga2VybmVsIG1hbnkgb2YgdGhl
c2Ugc3RhdGlzdGljcyBhcmUgbm8gbG9uZ2VyIHVzZWQgYXMKLSAqIHRoZXkgdHJhY2sgYWxsb2Nh
dG9yIHN0YXRpc3RpY3MgdGhyb3VnaCBrZXJuZWwgVU1BJ3MgYnVpbHQgaW4gc3RhdGlzdGljcyBt
ZWNoYW5pc20uCi0gKi8KLXN0cnVjdCBtYnN0YXQgewotCXVfbG9uZwltX21idWZzOwkvKiBYWFgg
Ki8KLQl1X2xvbmcJbV9tY2x1c3RzOwkvKiBYWFggKi8KLQotCXVfbG9uZwltX2RyYWluOwkvKiB0
aW1lcyBkcmFpbmVkIHByb3RvY29scyBmb3Igc3BhY2UgKi8KLQl1X2xvbmcJbV9tY2ZhaWw7CS8q
IFhYWDogdGltZXMgbV9jb3B5bSBmYWlsZWQgKi8KLQl1X2xvbmcJbV9tcGZhaWw7CS8qIFhYWDog
dGltZXMgbV9wdWxsdXAgZmFpbGVkICovCi0JdV9sb25nCW1fbXNpemU7CS8qIGxlbmd0aCBvZiBh
biBtYnVmICovCi0JdV9sb25nCW1fbWNsYnl0ZXM7CS8qIGxlbmd0aCBvZiBhbiBtYnVmIGNsdXN0
ZXIgKi8KLQl1X2xvbmcJbV9taW5jbHNpemU7CS8qIG1pbiBsZW5ndGggb2YgZGF0YSB0byBhbGxv
Y2F0ZSBhIGNsdXN0ZXIgKi8KLQl1X2xvbmcJbV9tbGVuOwkJLyogbGVuZ3RoIG9mIGRhdGEgaW4g
YW4gbWJ1ZiAqLwotCXVfbG9uZwltX21obGVuOwkvKiBsZW5ndGggb2YgZGF0YSBpbiBhIGhlYWRl
ciBtYnVmICovCi0KLQkvKiBOdW1iZXIgb2YgbWJ0eXBlcyAoZ2l2ZXMgIyBlbGVtcyBpbiBtYnR5
cGVzW10gYXJyYXk6ICovCi0Jc2hvcnQJbV9udW10eXBlczsKLQotCS8qIFhYWDogU2VuZGZpbGUg
c3RhdHMgc2hvdWxkIGV2ZW50dWFsbHkgbW92ZSB0byB0aGVpciBvd24gc3RydWN0ICovCi0JdV9s
b25nCXNmX2lvY250OwkvKiB0aW1lcyBzZW5kZmlsZSBoYWQgdG8gZG8gZGlzayBJL08gKi8KLQl1
X2xvbmcJc2ZfYWxsb2NmYWlsOwkvKiB0aW1lcyBzZmJ1ZiBhbGxvY2F0aW9uIGZhaWxlZCAqLwot
CXVfbG9uZwlzZl9hbGxvY3dhaXQ7CS8qIHRpbWVzIHNmYnVmIGFsbG9jYXRpb24gaGFkIHRvIHdh
aXQgKi8KLX07Ci0KLQogLyoKICAqIE1idWZzIGFyZSBvZiBhIHNpbmdsZSBzaXplLCBNU0laRSAo
c3lzL3BhcmFtLmgpLCB3aGljaCBpbmNsdWRlcyBvdmVyaGVhZC4KICAqIEFuIG1idWYgbWF5IGFk
ZCBhIHNpbmdsZSAibWJ1ZiBjbHVzdGVyIiBvZiBzaXplIE1DTEJZVEVTIChhbHNvIGluCkBAIC0x
OTAsOSArMTYxLDkgQEAgc3RydWN0IG1faGRyIHsKICAqLwogc3RydWN0IG1fdGFnIHsKIAlTTElT
VF9FTlRSWShtX3RhZykJbV90YWdfbGluazsJLyogTGlzdCBvZiBwYWNrZXQgdGFncyAqLwotCXVf
aW50MTZfdAkJbV90YWdfaWQ7CS8qIFRhZyBJRCAqLwotCXVfaW50MTZfdAkJbV90YWdfbGVuOwkv
KiBMZW5ndGggb2YgZGF0YSAqLwotCXVfaW50MzJfdAkJbV90YWdfY29va2llOwkvKiBBQkkvTW9k
dWxlIElEICovCisJdWludDE2X3QJCW1fdGFnX2lkOwkvKiBUYWcgSUQgKi8KKwl1aW50MTZfdAkJ
bV90YWdfbGVuOwkvKiBMZW5ndGggb2YgZGF0YSAqLworCXVpbnQzMl90CQltX3RhZ19jb29raWU7
CS8qIEFCSS9Nb2R1bGUgSUQgKi8KIAl2b2lkCQkJKCptX3RhZ19mcmVlKShzdHJ1Y3QgbV90YWcg
Kik7CiB9OwogCkBAIC0yMDcsOCArMTc4LDggQEAgc3RydWN0IHBrdGhkciB7CiAJLyogdmFyaWFi
bGVzIGZvciBoYXJkd2FyZSBjaGVja3N1bSAqLwogCWludAkJIGNzdW1fZmxhZ3M7CS8qIGZsYWdz
IHJlZ2FyZGluZyBjaGVja3N1bSAqLwogCWludAkJIGNzdW1fZGF0YTsJLyogZGF0YSBmaWVsZCB1
c2VkIGJ5IGNzdW0gcm91dGluZXMgKi8KLQl1X2ludDE2X3QJIHRzb19zZWdzejsJLyogVFNPIHNl
Z21lbnQgc2l6ZSAqLwotCXVfaW50MTZfdAkgZXRoZXJfdnRhZzsJLyogRXRoZXJuZXQgODAyLjFw
K3EgdmxhbiB0YWcgKi8KKwl1aW50MTZfdAkgdHNvX3NlZ3N6OwkvKiBUU08gc2VnbWVudCBzaXpl
ICovCisJdWludDE2X3QJIGV0aGVyX3Z0YWc7CS8qIEV0aGVybmV0IDgwMi4xcCtxIHZsYW4gdGFn
ICovCiAJU0xJU1RfSEVBRChwYWNrZXRfdGFncywgbV90YWcpIHRhZ3M7IC8qIGxpc3Qgb2YgcGFj
a2V0IHRhZ3MgKi8KIH07CiAKQEAgLTM1Miw5ICszMjMsNiBAQCB2b2lkCQkgbV90YWdfZnJlZV9k
ZWZhdWx0KHN0cnVjdCBtX3RhZyAqKTsKIGV4dGVybiBpbnQgbWF4X2xpbmtoZHI7ICAgIC8qIExh
cmdlc3QgbGluay1sZXZlbCBoZWFkZXIgKi8KIGV4dGVybiBpbnQgbWF4X3Byb3RvaGRyOyAvKiBT
aXplIG9mIGxhcmdlc3QgcHJvdG9jb2wgbGF5ZXIgaGVhZGVyLiBTZWUgdXNlcl9tYnVmLmMgKi8K
IAotZXh0ZXJuIHN0cnVjdCBtYnN0YXQJbWJzdGF0OwkJLyogR2VuZXJhbCBtYnVmIHN0YXRzL2lu
Zm9zICovCi0KLQogLyoKICAqIEV2YWx1YXRlIFRSVUUgaWYgaXQncyBzYWZlIHRvIHdyaXRlIHRv
IHRoZSBtYnVmIG0ncyBkYXRhIHJlZ2lvbiAodGhpcyBjYW4KICAqIGJlIGJvdGggdGhlIGxvY2Fs
IGRhdGEgcGF5bG9hZCwgb3IgYW4gZXh0ZXJuYWwgYnVmZmVyIGFyZWEsIGRlcGVuZGluZyBvbgpA
QCAtMzczLDkgKzM0MSw5IEBAIGV4dGVybiBzdHJ1Y3QgbWJzdGF0CW1ic3RhdDsJCS8qIEdlbmVy
YWwgbWJ1ZiBzdGF0cy9pbmZvcyAqLwogICogb2YgY2hlY2tpbmcgd3JpdGFiaWxpdHkgb2YgdGhl
IG1idWYgZGF0YSBhcmVhIHJlc3RzIHNvbGVseSB3aXRoIHRoZSBjYWxsZXIuCiAgKi8KICNkZWZp
bmUJTV9MRUFESU5HU1BBQ0UobSkJCQkJCQlcCi0JKChtKS0+bV9mbGFncyAmIE1fRVhUID8JCQkJ
CQlcCisJKCgobSktPm1fZmxhZ3MgJiBNX0VYVCkgPwkJCQkJXAogCSAgICAoTV9XUklUQUJMRSht
KSA/IChtKS0+bV9kYXRhIC0gKG0pLT5tX2V4dC5leHRfYnVmIDogMCk6CVwKLQkgICAgKG0pLT5t
X2ZsYWdzICYgTV9QS1RIRFIgPyAobSktPm1fZGF0YSAtIChtKS0+bV9wa3RkYXQgOglcCisJICAg
ICgobSktPm1fZmxhZ3MgJiBNX1BLVEhEUik/IChtKS0+bV9kYXRhIC0gKG0pLT5tX3BrdGRhdCA6
CVwKIAkgICAgKG0pLT5tX2RhdGEgLSAobSktPm1fZGF0KQogCiAvKgpAQCAtMzg1LDcgKzM1Myw3
IEBAIGV4dGVybiBzdHJ1Y3QgbWJzdGF0CW1ic3RhdDsJCS8qIEdlbmVyYWwgbWJ1ZiBzdGF0cy9p
bmZvcyAqLwogICogb2YgY2hlY2tpbmcgd3JpdGFiaWxpdHkgb2YgdGhlIG1idWYgZGF0YSBhcmVh
IHJlc3RzIHNvbGVseSB3aXRoIHRoZSBjYWxsZXIuCiAgKi8KICNkZWZpbmUJTV9UUkFJTElOR1NQ
QUNFKG0pCQkJCQkJXAotCSgobSktPm1fZmxhZ3MgJiBNX0VYVCA/CQkJCQkJXAorCSgoKG0pLT5t
X2ZsYWdzICYgTV9FWFQpID8JCQkJCVwKIAkgICAgKE1fV1JJVEFCTEUobSkgPyAobSktPm1fZXh0
LmV4dF9idWYgKyAobSktPm1fZXh0LmV4dF9zaXplCVwKIAkJLSAoKG0pLT5tX2RhdGEgKyAobSkt
Pm1fbGVuKSA6IDApIDoJCQlcCiAJICAgICYobSktPm1fZGF0W01MRU5dIC0gKChtKS0+bV9kYXRh
ICsgKG0pLT5tX2xlbikpCkBAIC00MzcsNCArNDA1LDkgQEAgZXh0ZXJuIHN0cnVjdCBtYnN0YXQJ
bWJzdGF0OwkJLyogR2VuZXJhbCBtYnVmIHN0YXRzL2luZm9zICovCiAJKG0pLT5tX2RhdGEgKz0g
KE1ITEVOIC0gKGxlbikpICYgfihzaXplb2YobG9uZykgLSAxKTsJCVwKIH0gd2hpbGUgKDApCiAK
KyNkZWZpbmUgTV9TSVpFKG0pCQkJCQkJXAorCQkoKChtKS0+bV9mbGFncyAmIE1fRVhUKSA/ICht
KS0+bV9leHQuZXh0X3NpemUgOglcCisJCSgobSktPm1fZmxhZ3MgJiBNX1BLVEhEUikgPyBNSExF
TiA6CQlcCisJCU1MRU4pCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxp
Yi91c2VyX3F1ZXVlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfcXVldWUuaApvbGQgbW9k
ZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDQ0Zjg5OTQ5MDI2Ni4uY2RlMWNjZWNmMTUw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNy
c2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9xdWV1ZS5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Vz
cnNjdHBsaWIvdXNlcl9xdWV1ZS5oCkBAIC0xNDQsOCArMTQ0LDggQEAgc3RydWN0IG5hbWUgewkJ
CQkJCQkJXAogI2RlZmluZQlTTElTVF9IRUFEX0lOSVRJQUxJWkVSKGhlYWQpCQkJCQlcCiAJeyBO
VUxMIH0KIAotI2lmIGRlZmluZWQgKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCi0jaWYgZGVmaW5l
ZCAoU0xJU1RfRU5UUlkpCisjaWYgZGVmaW5lZChfV0lOMzIpCisjaWYgZGVmaW5lZChTTElTVF9F
TlRSWSkKICN1bmRlZiBTTElTVF9FTlRSWQogI2VuZGlmCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3Jz
Y3RwbGliL3VzcnNjdHBsaWIvdXNlcl9yZWN2X3RocmVhZC5jIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxp
Yi91c2VyX3JlY3ZfdGhyZWFkLmMKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRl
eCBlYTBjMTBlZmRmOTYuLjNjMTY1N2I0YTY2ZQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3Vz
ZXJfcmVjdl90aHJlYWQuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfcmVjdl90aHJl
YWQuYwpAQCAtMzAsMTIgKzMwLDEyIEBACiAKICNpZiBkZWZpbmVkKElORVQpIHx8IGRlZmluZWQo
SU5FVDYpCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vf
b3NfV2luZG93cykKKyNpZiAhZGVmaW5lZChfV0lOMzIpCiAjaW5jbHVkZSA8c3lzL3NvY2tldC5o
PgogI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRl
IDxwdGhyZWFkLmg+Ci0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRHJhZ29uRmx5KSAmJiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9vc19GcmVlQlNEKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9v
c19OZXRCU0QpCisjaWYgIWRlZmluZWQoX19EcmFnb25GbHlfXykgJiYgIWRlZmluZWQoX19GcmVl
QlNEX18pICYmICFkZWZpbmVkKF9fTmV0QlNEX18pCiAjaW5jbHVkZSA8c3lzL3Vpby5oPgogI2Vs
c2UKICNpbmNsdWRlIDx1c2VyX2lwNl92YXIuaD4KQEAgLTQ2LDcgKzQ2LDcgQEAKICNpbmNsdWRl
IDxuZXRpbmV0L3NjdHBfcGNiLmg+CiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX2lucHV0Lmg+CiAj
aWYgMAotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfTGludXgpCisjaWYgZGVmaW5lZChfX2xp
bnV4X18pCiAjaW5jbHVkZSA8bGludXgvbmV0bGluay5oPgogI2lmZGVmIEhBVkVfTElOVVhfSUZf
QUREUl9ICiAjaW5jbHVkZSA8bGludXgvaWZfYWRkci5oPgpAQCAtNTYsMjMgKzU2LDI2IEBACiAj
ZW5kaWYKICNlbmRpZgogI2VuZGlmCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19EYXJ3aW4p
IHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRHJhZ29uRmx5KSB8fCBkZWZpbmVkKF9fVXNlcnNw
YWNlX29zX0ZyZWVCU0QpCisjaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19EcmFn
b25GbHlfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykKICNpbmNsdWRlIDxuZXQvcm91dGUuaD4K
ICNlbmRpZgogLyogbG9jYWwgbWFjcm9zIGFuZCBkYXRhdHlwZXMgdXNlZCB0byBnZXQgSVAgYWRk
cmVzc2VzIHN5c3RlbSBpbmRlcGVuZGVudGx5ICovCi0jaWYgIWRlZmluZWQoSVBfUEtUSU5GTyAp
ICYmICEgZGVmaW5lZChJUF9SRUNWRFNUQUREUikKKyNpZiAhZGVmaW5lZChJUF9QS1RJTkZPICkg
JiYgIWRlZmluZWQoSVBfUkVDVkRTVEFERFIpCiAjIGVycm9yICJDYW4ndCBkZXRlcm1pbmUgc29j
a2V0IG9wdGlvbiB0byB1c2UgdG8gZ2V0IFVEUCBJUCIKICNlbmRpZgogCiB2b2lkIHJlY3ZfdGhy
ZWFkX2Rlc3Ryb3kodm9pZCk7Ci0jZGVmaW5lIE1BWExFTl9NQlVGX0NIQUlOIDMyIC8qIFdoYXQg
c2hvdWxkIHRoaXMgdmFsdWUgYmU/ICovCisKKyNkZWZpbmUgTUFYTEVOX01CVUZfQ0hBSU4gMTI4
CisKICNkZWZpbmUgUk9VTkRVUChhLCBzaXplKSAoKChhKSAmICgoc2l6ZSktMSkpID8gKDEgKyAo
KGEpIHwgKChzaXplKS0xKSkpIDogKGEpKQotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRGFy
d2luKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0RyYWdvbkZseSkgfHwgZGVmaW5lZChfX1Vz
ZXJzcGFjZV9vc19GcmVlQlNEKQorCisjaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQo
X19EcmFnb25GbHlfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykKICNkZWZpbmUgTkVYVF9TQShh
cCkgYXAgPSAoc3RydWN0IHNvY2thZGRyICopIFwKIAkoKGNhZGRyX3QpIGFwICsgKGFwLT5zYV9s
ZW4gPyBST1VORFVQKGFwLT5zYV9sZW4sIHNpemVvZiAodWludDMyX3QpKSA6IHNpemVvZih1aW50
MzJfdCkpKQogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0RhcndpbikgfHwg
ZGVmaW5lZChfX1VzZXJzcGFjZV9vc19EcmFnb25GbHkpIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vf
b3NfRnJlZUJTRCkKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX0RyYWdvbkZs
eV9fKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKQogc3RhdGljIHZvaWQKIHNjdHBfZ2V0X3J0YWRk
cnMoaW50IGFkZHJzLCBzdHJ1Y3Qgc29ja2FkZHIgKnNhLCBzdHJ1Y3Qgc29ja2FkZHIgKipydGlf
aW5mbykKIHsKQEAgLTE2NCw3ICsxNjcsNyBAQCByZWN2X2Z1bmN0aW9uX3JvdXRlKHZvaWQgKmFy
ZykKIAkJCX0KIAkJfQogCQlpZiAocmV0IDwgMCkgewotCQkJaWYgKGVycm5vID09IEVBR0FJTikg
eworCQkJaWYgKGVycm5vID09IEVBR0FJTiB8fCBlcnJubyA9PSBFSU5UUikgewogCQkJCWNvbnRp
bnVlOwogCQkJfSBlbHNlIHsKIAkJCQlicmVhazsKQEAgLTIxMSw3ICsyMTQsNyBAQCByZWN2X2Z1
bmN0aW9uX3JvdXRlKHZvaWQgKmFyZykKIAkJbGVuID0gcmVjdm1zZyhTQ1RQX0JBU0VfVkFSKHVz
ZXJzcGFjZV9yb3V0ZSksICZtc2csIDApOwogCiAJCWlmIChsZW4gPCAwKSB7Ci0JCQlpZiAoZXJy
bm8gPT0gRUFHQUlOKSB7CisJCQlpZiAoZXJybm8gPT0gRUFHQUlOIHx8IGVycm5vID09IEVJTlRS
KSB7CiAJCQkJY29udGludWU7CiAJCQl9IGVsc2UgewogCQkJCWJyZWFrOwpAQCAtMjcwLDcgKzI3
Myw3IEBAIHJlY3ZfZnVuY3Rpb25fcmF3KHZvaWQgKmFyZykKIAlpbnQgY29tcHV0ZV9jcmMgPSAx
OwogCXN0cnVjdCBzY3RwX2NodW5raGRyICpjaDsKIAlzdHJ1Y3Qgc29ja2FkZHJfaW4gc3JjLCBk
c3Q7Ci0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiAhZGVmaW5lZChf
V0lOMzIpCiAJdW5zaWduZWQgaW50IG5jb3VudGVyOwogCXN0cnVjdCBtc2doZHIgbXNnOwogCXN0
cnVjdCBpb3ZlYyByZWN2X2lvdmVjW01BWExFTl9NQlVGX0NIQUlOXTsKQEAgLTMwNSw3ICszMDgs
NyBAQCByZWN2X2Z1bmN0aW9uX3Jhdyh2b2lkICphcmcpCiAJCQkgICBIYXZlIHRyaWVkIGJvdGgg
c2VuZGluZyBhbmQgcmVjZWl2aW5nCiAJCQkgKi8KIAkJCXJlY3ZtYnVmW2ldID0gc2N0cF9nZXRf
bWJ1Zl9mb3JfbXNnKGlvdmxlbiwgd2FudF9oZWFkZXIsIE1fTk9XQUlULCB3YW50X2V4dCwgTVRf
REFUQSk7Ci0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiAhZGVmaW5l
ZChfV0lOMzIpCiAJCQlyZWN2X2lvdmVjW2ldLmlvdl9iYXNlID0gKGNhZGRyX3QpcmVjdm1idWZb
aV0tPm1fZGF0YTsKIAkJCXJlY3ZfaW92ZWNbaV0uaW92X2xlbiA9IGlvdmxlbjsKICNlbHNlCkBA
IC0zMTQsNyArMzE3LDcgQEAgcmVjdl9mdW5jdGlvbl9yYXcodm9pZCAqYXJnKQogI2VuZGlmCiAJ
CX0KIAkJdG9fZmlsbCA9IDA7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQor
I2lmIGRlZmluZWQoX1dJTjMyKQogCQlmbGFncyA9IDA7CiAJCW5jb3VudGVyID0gMDsKIAkJZnJv
bWxlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pOwpAQCAtMzIzLDEyICszMjYsMTAgQEAg
cmVjdl9mdW5jdGlvbl9yYXcodm9pZCAqYXJnKQogCQluUmVzdWx0ID0gV1NBUmVjdkZyb20oU0NU
UF9CQVNFX1ZBUih1c2Vyc3BhY2VfcmF3c2N0cCksIHJlY3ZfaW92ZWMsIE1BWExFTl9NQlVGX0NI
QUlOLCAmbmNvdW50ZXIsICZmbGFncywgKHN0cnVjdCBzb2NrYWRkciAqKSZmcm9tLCAmZnJvbWxl
biwgTlVMTCwgTlVMTCk7CiAJCWlmIChuUmVzdWx0ICE9IDApIHsKIAkJCW1fRXJyb3JDb2RlID0g
V1NBR2V0TGFzdEVycm9yKCk7Ci0JCQlpZiAobV9FcnJvckNvZGUgPT0gV1NBRVRJTUVET1VUKSB7
Ci0JCQkJY29udGludWU7Ci0JCQl9CiAJCQlpZiAoKG1fRXJyb3JDb2RlID09IFdTQUVOT1RTT0NL
KSB8fCAobV9FcnJvckNvZGUgPT0gV1NBRUlOVFIpKSB7CiAJCQkJYnJlYWs7CiAJCQl9CisJCQlj
b250aW51ZTsKIAkJfQogCQluID0gbmNvdW50ZXI7CiAjZWxzZQpAQCAtMzQxLDcgKzM0Miw3IEBA
IHJlY3ZfZnVuY3Rpb25fcmF3KHZvaWQgKmFyZykKIAkJbXNnLm1zZ19jb250cm9sbGVuID0gMDsK
IAkJbmNvdW50ZXIgPSBuID0gcmVjdm1zZyhTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3Rw
KSwgJm1zZywgMCk7CiAJCWlmIChuIDwgMCkgewotCQkJaWYgKGVycm5vID09IEVBR0FJTikgewor
CQkJaWYgKGVycm5vID09IEVBR0FJTiB8fCBlcnJubyA9PSBFSU5UUikgewogCQkJCWNvbnRpbnVl
OwogCQkJfSBlbHNlIHsKIAkJCQlicmVhazsKQEAgLTQzMiw2ICs0MzMsNyBAQCByZWN2X2Z1bmN0
aW9uX3Jhdyh2b2lkICphcmcpCiAJfQogCS8qIGZyZWUgdGhlIGFycmF5IGl0c2VsZiAqLwogCWZy
ZWUocmVjdm1idWYpOworCVNDVFBEQkcoU0NUUF9ERUJVR19VU1IsICIlczogRXhpdGluZyBTQ1RQ
L0lQNCByY3ZcbiIsIF9fZnVuY19fKTsKIAlyZXR1cm4gKE5VTEwpOwogfQogI2VuZGlmCkBAIC00
NDEsNyArNDQzLDcgQEAgc3RhdGljIHZvaWQgKgogcmVjdl9mdW5jdGlvbl9yYXc2KHZvaWQgKmFy
ZykKIHsKIAlzdHJ1Y3QgbWJ1ZiAqKnJlY3ZtYnVmNjsKLSNpZiAhZGVmaW5lZChfX1VzZXJzcGFj
ZV9vc19XaW5kb3dzKQorI2lmICFkZWZpbmVkKF9XSU4zMikKIAl1bnNpZ25lZCBpbnQgbmNvdW50
ZXIgPSAwOwogCXN0cnVjdCBpb3ZlYyByZWN2X2lvdmVjW01BWExFTl9NQlVGX0NIQUlOXTsKIAlz
dHJ1Y3QgbXNnaGRyIG1zZzsKQEAgLTQ1MCwxMCArNDUyLDggQEAgcmVjdl9mdW5jdGlvbl9yYXc2
KHZvaWQgKmFyZykKICNlbHNlCiAJV1NBQlVGIHJlY3ZfaW92ZWNbTUFYTEVOX01CVUZfQ0hBSU5d
OwogCWludCBuUmVzdWx0LCBtX0Vycm9yQ29kZTsKLQlEV09SRCBmbGFnczsKIAlEV09SRCBuY291
bnRlciA9IDA7CiAJc3RydWN0IHNvY2thZGRyX2luNiBmcm9tOwotCWludCBmcm9tbGVuOwogCUdV
SUQgV1NBUmVjdk1zZ19HVUlEID0gV1NBSURfV1NBUkVDVk1TRzsKIAlMUEZOX1dTQVJFQ1ZNU0cg
V1NBUmVjdk1zZzsKIAlXU0FDTVNHSERSICpjbXNncHRyOwpAQCAtNDg1LDcgKzQ4NSw3IEBAIHJl
Y3ZfZnVuY3Rpb25fcmF3Nih2b2lkICphcmcpCiAJCQkgICBIYXZlIHRyaWVkIGJvdGggc2VuZGlu
ZyBhbmQgcmVjZWl2aW5nCiAJCQkgKi8KIAkJCXJlY3ZtYnVmNltpXSA9IHNjdHBfZ2V0X21idWZf
Zm9yX21zZyhpb3ZsZW4sIHdhbnRfaGVhZGVyLCBNX05PV0FJVCwgd2FudF9leHQsIE1UX0RBVEEp
OwotI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgIWRlZmluZWQoX1dJ
TjMyKQogCQkJcmVjdl9pb3ZlY1tpXS5pb3ZfYmFzZSA9IChjYWRkcl90KXJlY3ZtYnVmNltpXS0+
bV9kYXRhOwogCQkJcmVjdl9pb3ZlY1tpXS5pb3ZfbGVuID0gaW92bGVuOwogI2Vsc2UKQEAgLTQ5
NCwxMCArNDk0LDggQEAgcmVjdl9mdW5jdGlvbl9yYXc2KHZvaWQgKmFyZykKICNlbmRpZgogCQl9
CiAJCXRvX2ZpbGwgPSAwOwotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKLQkJ
ZmxhZ3MgPSAwOworI2lmIGRlZmluZWQoX1dJTjMyKQogCQluY291bnRlciA9IDA7Ci0JCWZyb21s
ZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNik7CiAJCW1lbXNldCgmZnJvbSwgMCwgc2l6
ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKTsKIAkJblJlc3VsdCA9IFdTQUlvY3RsKFNDVFBfQkFT
RV9WQVIodXNlcnNwYWNlX3Jhd3NjdHA2KSwgU0lPX0dFVF9FWFRFTlNJT05fRlVOQ1RJT05fUE9J
TlRFUiwKIAkJICAgICAgICAgICAgICAgICAgICZXU0FSZWN2TXNnX0dVSUQsIHNpemVvZiBXU0FS
ZWN2TXNnX0dVSUQsCkBAIC01MTUsMTAgKzUxMywxMCBAQCByZWN2X2Z1bmN0aW9uX3JhdzYodm9p
ZCAqYXJnKQogCQl9CiAJCWlmIChuUmVzdWx0ICE9IDApIHsKIAkJCW1fRXJyb3JDb2RlID0gV1NB
R2V0TGFzdEVycm9yKCk7Ci0JCQlpZiAobV9FcnJvckNvZGUgPT0gV1NBRVRJTUVET1VUKQotCQkJ
CWNvbnRpbnVlOwotCQkJaWYgKG1fRXJyb3JDb2RlID09IFdTQUVOT1RTT0NLIHx8IG1fRXJyb3JD
b2RlID09IFdTQUVJTlRSKQorCQkJaWYgKChtX0Vycm9yQ29kZSA9PSBXU0FFTk9UU09DSykgfHwg
KG1fRXJyb3JDb2RlID09IFdTQUVJTlRSKSkgewogCQkJCWJyZWFrOworCQkJfQorCQkJY29udGlu
dWU7CiAJCX0KIAkJbiA9IG5jb3VudGVyOwogI2Vsc2UKQEAgLTUzMSwxMiArNTI5LDEyIEBAIHJl
Y3ZfZnVuY3Rpb25fcmF3Nih2b2lkICphcmcpCiAJCW1zZy5tc2dfaW92ID0gcmVjdl9pb3ZlYzsK
IAkJbXNnLm1zZ19pb3ZsZW4gPSBNQVhMRU5fTUJVRl9DSEFJTjsKIAkJbXNnLm1zZ19jb250cm9s
ID0gKHZvaWQgKiljbXNnYnVmOwotCQltc2cubXNnX2NvbnRyb2xsZW4gPSAoc29ja2xlbl90KUNN
U0dfTEVOKHNpemVvZiAoc3RydWN0IGluNl9wa3RpbmZvKSk7CisJCW1zZy5tc2dfY29udHJvbGxl
biA9IChzb2NrbGVuX3QpQ01TR19TUEFDRShzaXplb2YgKHN0cnVjdCBpbjZfcGt0aW5mbykpOwog
CQltc2cubXNnX2ZsYWdzID0gMDsKIAogCQluY291bnRlciA9IG4gPSByZWN2bXNnKFNDVFBfQkFT
RV9WQVIodXNlcnNwYWNlX3Jhd3NjdHA2KSwgJm1zZywgMCk7CiAJCWlmIChuIDwgMCkgewotCQkJ
aWYgKGVycm5vID09IEVBR0FJTikgeworCQkJaWYgKGVycm5vID09IEVBR0FJTiB8fCBlcnJubyA9
PSBFSU5UUikgewogCQkJCWNvbnRpbnVlOwogCQkJfSBlbHNlIHsKIAkJCQlicmVhazsKQEAgLTU5
Niw3ICs1OTQsOCBAQCByZWN2X2Z1bmN0aW9uX3JhdzYodm9pZCAqYXJnKQogCQlzcmMuc2luNl9s
ZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNik7CiAjZW5kaWYKIAkJc3JjLnNpbjZfcG9y
dCA9IHNoLT5zcmNfcG9ydDsKLQkJaWYgKG1lbWNtcCgmc3JjLnNpbjZfYWRkciwgJmRzdC5zaW42
X2FkZHIsIHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKSA9PSAwKSB7CisJCWlmIChTQ1RQX0JBU0Vf
U1lTQ1RMKHNjdHBfbm9fY3N1bV9vbl9sb29wYmFjaykgJiYKKwkJICAgIChtZW1jbXAoJnNyYy5z
aW42X2FkZHIsICZkc3Quc2luNl9hZGRyLCBzaXplb2Yoc3RydWN0IGluNl9hZGRyKSkgPT0gMCkp
IHsKIAkJCWNvbXB1dGVfY3JjID0gMDsKIAkJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3JlY3Zod2Ny
Yyk7CiAJCX0gZWxzZSB7CkBAIC02MjAsNiArNjE5LDcgQEAgcmVjdl9mdW5jdGlvbl9yYXc2KHZv
aWQgKmFyZykKIAl9CiAJLyogZnJlZSB0aGUgYXJyYXkgaXRzZWxmICovCiAJZnJlZShyZWN2bWJ1
ZjYpOworCVNDVFBEQkcoU0NUUF9ERUJVR19VU1IsICIlczogRXhpdGluZyBTQ1RQL0lQNiByY3Zc
biIsIF9fZnVuY19fKTsKIAlyZXR1cm4gKE5VTEwpOwogfQogI2VuZGlmCkBAIC02NDcsNyArNjQ3
LDcgQEAgcmVjdl9mdW5jdGlvbl91ZHAodm9pZCAqYXJnKQogCWNoYXIgY21zZ2J1ZltDTVNHX1NQ
QUNFKHNpemVvZihzdHJ1Y3QgaW5fYWRkcikpXTsKICNlbmRpZgogCWludCBjb21wdXRlX2NyYyA9
IDE7Ci0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiAhZGVmaW5lZChf
V0lOMzIpCiAJdW5zaWduZWQgaW50IG5jb3VudGVyOwogCXN0cnVjdCBpb3ZlYyBpb3ZbTUFYTEVO
X01CVUZfQ0hBSU5dOwogCXN0cnVjdCBtc2doZHIgbXNnOwpAQCAtNjc0LDcgKzY3NCw3IEBAIHJl
Y3ZfZnVuY3Rpb25fdWRwKHZvaWQgKmFyZykKIAkJCSAgIEhhdmUgdHJpZWQgYm90aCBzZW5kaW5n
IGFuZCByZWNlaXZpbmcKIAkJCSAqLwogCQkJdWRwcmVjdm1idWZbaV0gPSBzY3RwX2dldF9tYnVm
X2Zvcl9tc2coaW92bGVuLCB3YW50X2hlYWRlciwgTV9OT1dBSVQsIHdhbnRfZXh0LCBNVF9EQVRB
KTsKLSNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmICFkZWZpbmVkKF9X
SU4zMikKIAkJCWlvdltpXS5pb3ZfYmFzZSA9IChjYWRkcl90KXVkcHJlY3ZtYnVmW2ldLT5tX2Rh
dGE7CiAJCQlpb3ZbaV0uaW92X2xlbiA9IGlvdmxlbjsKICNlbHNlCkBAIC02ODMsNyArNjgzLDcg
QEAgcmVjdl9mdW5jdGlvbl91ZHAodm9pZCAqYXJnKQogI2VuZGlmCiAJCX0KIAkJdG9fZmlsbCA9
IDA7Ci0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiAhZGVmaW5lZChf
V0lOMzIpCiAJCW1lbXNldCgmbXNnLCAwLCBzaXplb2Yoc3RydWN0IG1zZ2hkcikpOwogI2Vsc2UK
IAkJbWVtc2V0KCZtc2csIDAsIHNpemVvZihXU0FNU0cpKTsKQEAgLTY5Miw3ICs2OTIsNyBAQCBy
ZWN2X2Z1bmN0aW9uX3VkcCh2b2lkICphcmcpCiAJCW1lbXNldCgmZHN0LCAwLCBzaXplb2Yoc3Ry
dWN0IHNvY2thZGRyX2luKSk7CiAJCW1lbXNldChjbXNnYnVmLCAwLCBzaXplb2YoY21zZ2J1Zikp
OwogCi0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiAhZGVmaW5lZChf
V0lOMzIpCiAJCW1zZy5tc2dfbmFtZSA9ICh2b2lkICopJnNyYzsKIAkJbXNnLm1zZ19uYW1lbGVu
ID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7CiAJCW1zZy5tc2dfaW92ID0gaW92OwpAQCAt
NzAzLDcgKzcwMyw3IEBAIHJlY3ZfZnVuY3Rpb25fdWRwKHZvaWQgKmFyZykKIAogCQluY291bnRl
ciA9IG4gPSByZWN2bXNnKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNjdHApLCAmbXNnLCAw
KTsKIAkJaWYgKG4gPCAwKSB7Ci0JCQlpZiAoZXJybm8gPT0gRUFHQUlOKSB7CisJCQlpZiAoZXJy
bm8gPT0gRUFHQUlOIHx8IGVycm5vID09IEVJTlRSKSB7CiAJCQkJY29udGludWU7CiAJCQl9IGVs
c2UgewogCQkJCWJyZWFrOwpAQCAtNzI2LDEyICs3MjYsMTAgQEAgcmVjdl9mdW5jdGlvbl91ZHAo
dm9pZCAqYXJnKQogCQl9CiAJCWlmIChuUmVzdWx0ICE9IDApIHsKIAkJCW1fRXJyb3JDb2RlID0g
V1NBR2V0TGFzdEVycm9yKCk7Ci0JCQlpZiAobV9FcnJvckNvZGUgPT0gV1NBRVRJTUVET1VUKSB7
Ci0JCQkJY29udGludWU7Ci0JCQl9CiAJCQlpZiAoKG1fRXJyb3JDb2RlID09IFdTQUVOT1RTT0NL
KSB8fCAobV9FcnJvckNvZGUgPT0gV1NBRUlOVFIpKSB7CiAJCQkJYnJlYWs7CiAJCQl9CisJCQlj
b250aW51ZTsKIAkJfQogCQluID0gbmNvdW50ZXI7CiAjZW5kaWYKQEAgLTgwMiw3ICs4MDAsOCBA
QCByZWN2X2Z1bmN0aW9uX3VkcCh2b2lkICphcmcpCiAJCXBvcnQgPSBzcmMuc2luX3BvcnQ7CiAJ
CXNyYy5zaW5fcG9ydCA9IHNoLT5zcmNfcG9ydDsKIAkJZHN0LnNpbl9wb3J0ID0gc2gtPmRlc3Rf
cG9ydDsKLQkJaWYgKHNyYy5zaW5fYWRkci5zX2FkZHIgPT0gZHN0LnNpbl9hZGRyLnNfYWRkcikg
eworCQlpZiAoU0NUUF9CQVNFX1NZU0NUTChzY3RwX25vX2NzdW1fb25fbG9vcGJhY2spICYmCisJ
CSAgICAoc3JjLnNpbl9hZGRyLnNfYWRkciA9PSBkc3Quc2luX2FkZHIuc19hZGRyKSkgewogCQkJ
Y29tcHV0ZV9jcmMgPSAwOwogCQkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfcmVjdmh3Y3JjKTsKIAkJ
fSBlbHNlIHsKQEAgLTgyNiw2ICs4MjUsNyBAQCByZWN2X2Z1bmN0aW9uX3VkcCh2b2lkICphcmcp
CiAJfQogCS8qIGZyZWUgdGhlIGFycmF5IGl0c2VsZiAqLwogCWZyZWUodWRwcmVjdm1idWYpOwor
CVNDVFBEQkcoU0NUUF9ERUJVR19VU1IsICIlczogRXhpdGluZyBTQ1RQL1VEUC9JUDQgcmN2XG4i
LCBfX2Z1bmNfXyk7CiAJcmV0dXJuIChOVUxMKTsKIH0KICNlbmRpZgpAQCAtODQ5LDExICs4NDks
MTEgQEAgcmVjdl9mdW5jdGlvbl91ZHA2KHZvaWQgKmFyZykKIAlzdHJ1Y3Qgc2N0cF9jaHVua2hk
ciAqY2g7CiAJY2hhciBjbXNnYnVmW0NNU0dfU1BBQ0Uoc2l6ZW9mIChzdHJ1Y3QgaW42X3BrdGlu
Zm8pKV07CiAJaW50IGNvbXB1dGVfY3JjID0gMTsKLSNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9v
c19XaW5kb3dzKQotCXVuc2lnbmVkIGludCBuY291bnRlcjsKKyNpZiAhZGVmaW5lZChfV0lOMzIp
CiAJc3RydWN0IGlvdmVjIGlvdltNQVhMRU5fTUJVRl9DSEFJTl07CiAJc3RydWN0IG1zZ2hkciBt
c2c7CiAJc3RydWN0IGNtc2doZHIgKmNtc2dwdHI7CisJdW5zaWduZWQgaW50IG5jb3VudGVyOwog
I2Vsc2UKIAlHVUlEIFdTQVJlY3ZNc2dfR1VJRCA9IFdTQUlEX1dTQVJFQ1ZNU0c7CiAJTFBGTl9X
U0FSRUNWTVNHIFdTQVJlY3ZNc2c7CkBAIC04NjEsOCArODYxLDggQEAgcmVjdl9mdW5jdGlvbl91
ZHA2KHZvaWQgKmFyZykKIAlXU0FCVUYgaW92W01BWExFTl9NQlVGX0NIQUlOXTsKIAlXU0FNU0cg
bXNnOwogCWludCBuUmVzdWx0LCBtX0Vycm9yQ29kZTsKLQlEV09SRCBuY291bnRlcjsKIAlXU0FD
TVNHSERSICpjbXNncHRyOworCURXT1JEIG5jb3VudGVyOwogI2VuZGlmCiAKIAlzY3RwX3VzZXJz
cGFjZV9zZXRfdGhyZWFkbmFtZSgiU0NUUC9VRFAvSVA2IHJjdiIpOwpAQCAtODc1LDcgKzg3NSw3
IEBAIHJlY3ZfZnVuY3Rpb25fdWRwNih2b2lkICphcmcpCiAJCQkgICBIYXZlIHRyaWVkIGJvdGgg
c2VuZGluZyBhbmQgcmVjZWl2aW5nCiAJCQkgKi8KIAkJCXVkcHJlY3ZtYnVmNltpXSA9IHNjdHBf
Z2V0X21idWZfZm9yX21zZyhpb3ZsZW4sIHdhbnRfaGVhZGVyLCBNX05PV0FJVCwgd2FudF9leHQs
IE1UX0RBVEEpOwotI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgIWRl
ZmluZWQoX1dJTjMyKQogCQkJaW92W2ldLmlvdl9iYXNlID0gKGNhZGRyX3QpdWRwcmVjdm1idWY2
W2ldLT5tX2RhdGE7CiAJCQlpb3ZbaV0uaW92X2xlbiA9IGlvdmxlbjsKICNlbHNlCkBAIC04ODUs
NyArODg1LDcgQEAgcmVjdl9mdW5jdGlvbl91ZHA2KHZvaWQgKmFyZykKIAkJfQogCQl0b19maWxs
ID0gMDsKIAotI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgIWRlZmlu
ZWQoX1dJTjMyKQogCQltZW1zZXQoJm1zZywgMCwgc2l6ZW9mKHN0cnVjdCBtc2doZHIpKTsKICNl
bHNlCiAJCW1lbXNldCgmbXNnLCAwLCBzaXplb2YoV1NBTVNHKSk7CkBAIC04OTQsMTggKzg5NCwx
OCBAQCByZWN2X2Z1bmN0aW9uX3VkcDYodm9pZCAqYXJnKQogCQltZW1zZXQoJmRzdCwgMCwgc2l6
ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKTsKIAkJbWVtc2V0KGNtc2didWYsIDAsIENNU0dfU1BB
Q0Uoc2l6ZW9mIChzdHJ1Y3QgaW42X3BrdGluZm8pKSk7CiAKLSNpZiAhZGVmaW5lZChfX1VzZXJz
cGFjZV9vc19XaW5kb3dzKQorI2lmICFkZWZpbmVkKF9XSU4zMikKIAkJbXNnLm1zZ19uYW1lID0g
KHZvaWQgKikmc3JjOwogCQltc2cubXNnX25hbWVsZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRy
X2luNik7CiAJCW1zZy5tc2dfaW92ID0gaW92OwogCQltc2cubXNnX2lvdmxlbiA9IE1BWExFTl9N
QlVGX0NIQUlOOwogCQltc2cubXNnX2NvbnRyb2wgPSAodm9pZCAqKWNtc2didWY7Ci0JCW1zZy5t
c2dfY29udHJvbGxlbiA9IChzb2NrbGVuX3QpQ01TR19MRU4oc2l6ZW9mIChzdHJ1Y3QgaW42X3Br
dGluZm8pKTsKKwkJbXNnLm1zZ19jb250cm9sbGVuID0gKHNvY2tsZW5fdClDTVNHX1NQQUNFKHNp
emVvZiAoc3RydWN0IGluNl9wa3RpbmZvKSk7CiAJCW1zZy5tc2dfZmxhZ3MgPSAwOwogCiAJCW5j
b3VudGVyID0gbiA9IHJlY3Ztc2coU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfdWRwc2N0cDYpLCAm
bXNnLCAwKTsKIAkJaWYgKG4gPCAwKSB7Ci0JCQlpZiAoZXJybm8gPT0gRUFHQUlOKSB7CisJCQlp
ZiAoZXJybm8gPT0gRUFHQUlOIHx8IGVycm5vID09IEVJTlRSKSB7CiAJCQkJY29udGludWU7CiAJ
CQl9IGVsc2UgewogCQkJCWJyZWFrOwpAQCAtOTMyLDEyICs5MzIsMTAgQEAgcmVjdl9mdW5jdGlv
bl91ZHA2KHZvaWQgKmFyZykKIAkJfQogCQlpZiAoblJlc3VsdCAhPSAwKSB7CiAJCQltX0Vycm9y
Q29kZSA9IFdTQUdldExhc3RFcnJvcigpOwotCQkJaWYgKG1fRXJyb3JDb2RlID09IFdTQUVUSU1F
RE9VVCkgewotCQkJCWNvbnRpbnVlOwotCQkJfQogCQkJaWYgKChtX0Vycm9yQ29kZSA9PSBXU0FF
Tk9UU09DSykgfHwgKG1fRXJyb3JDb2RlID09IFdTQUVJTlRSKSkgewogCQkJCWJyZWFrOwogCQkJ
fQorCQkJY29udGludWU7CiAJCX0KIAkJbiA9IG5jb3VudGVyOwogI2VuZGlmCkBAIC05OTAsNyAr
OTg4LDggQEAgcmVjdl9mdW5jdGlvbl91ZHA2KHZvaWQgKmFyZykKIAkJcG9ydCA9IHNyYy5zaW42
X3BvcnQ7CiAJCXNyYy5zaW42X3BvcnQgPSBzaC0+c3JjX3BvcnQ7CiAJCWRzdC5zaW42X3BvcnQg
PSBzaC0+ZGVzdF9wb3J0OwotCQlpZiAoKG1lbWNtcCgmc3JjLnNpbjZfYWRkciwgJmRzdC5zaW42
X2FkZHIsIHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKSA9PSAwKSkgeworCQlpZiAoU0NUUF9CQVNF
X1NZU0NUTChzY3RwX25vX2NzdW1fb25fbG9vcGJhY2spICYmCisJCSAgICAobWVtY21wKCZzcmMu
c2luNl9hZGRyLCAmZHN0LnNpbjZfYWRkciwgc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpID09IDAp
KSB7CiAJCQljb21wdXRlX2NyYyA9IDA7CiAJCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19yZWN2aHdj
cmMpOwogCQl9IGVsc2UgewpAQCAtMTAxNCwxMSArMTAxMywxMiBAQCByZWN2X2Z1bmN0aW9uX3Vk
cDYodm9pZCAqYXJnKQogCX0KIAkvKiBmcmVlIHRoZSBhcnJheSBpdHNlbGYgKi8KIAlmcmVlKHVk
cHJlY3ZtYnVmNik7CisJU0NUUERCRyhTQ1RQX0RFQlVHX1VTUiwgIiVzOiBFeGl0aW5nIFNDVFAv
VURQL0lQNiByY3ZcbiIsIF9fZnVuY19fKTsKIAlyZXR1cm4gKE5VTEwpOwogfQogI2VuZGlmCiAK
LSNpZiBkZWZpbmVkIChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMy
KQogc3RhdGljIHZvaWQKIHNldFJlY2VpdmVCdWZmZXJTaXplKFNPQ0tFVCBzZmQsIGludCBuZXdf
c2l6ZSkKICNlbHNlCkBAIC0xMDI5LDcgKzEwMjksNyBAQCBzZXRSZWNlaXZlQnVmZmVyU2l6ZShp
bnQgc2ZkLCBpbnQgbmV3X3NpemUpCiAJaW50IGNoID0gbmV3X3NpemU7CiAKIAlpZiAoc2V0c29j
a29wdCAoc2ZkLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsICh2b2lkKikmY2gsIHNpemVvZihjaCkp
IDwgMCkgewotI2lmIGRlZmluZWQgKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5l
ZChfV0lOMzIpCiAJCVNDVFBEQkcoU0NUUF9ERUJVR19VU1IsICJDYW4ndCBzZXQgcmVjdi1idWZm
ZXJzIHNpemUgKGVycm5vID0gJWQpLlxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOwogI2Vsc2UKIAkJ
U0NUUERCRyhTQ1RQX0RFQlVHX1VTUiwgIkNhbid0IHNldCByZWN2LWJ1ZmZlcnMgc2l6ZSAoZXJy
bm8gPSAlZCkuXG4iLCBlcnJubyk7CkBAIC0xMDM4LDcgKzEwMzgsNyBAQCBzZXRSZWNlaXZlQnVm
ZmVyU2l6ZShpbnQgc2ZkLCBpbnQgbmV3X3NpemUpCiAJcmV0dXJuOwogfQogCi0jaWYgZGVmaW5l
ZCAoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIHN0YXRpYyB2
b2lkCiBzZXRTZW5kQnVmZmVyU2l6ZShTT0NLRVQgc2ZkLCBpbnQgbmV3X3NpemUpCiAjZWxzZQpA
QCAtMTA0OSw3ICsxMDQ5LDcgQEAgc2V0U2VuZEJ1ZmZlclNpemUoaW50IHNmZCwgaW50IG5ld19z
aXplKQogCWludCBjaCA9IG5ld19zaXplOwogCiAJaWYgKHNldHNvY2tvcHQgKHNmZCwgU09MX1NP
Q0tFVCwgU09fU05EQlVGLCAodm9pZCopJmNoLCBzaXplb2YoY2gpKSA8IDApIHsKLSNpZiBkZWZp
bmVkIChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogCQlTQ1RQ
REJHKFNDVFBfREVCVUdfVVNSLCAiQ2FuJ3Qgc2V0IHNlbmQtYnVmZmVycyBzaXplIChlcnJubyA9
ICVkKS5cbiIsIFdTQUdldExhc3RFcnJvcigpKTsKICNlbHNlCiAJCVNDVFBEQkcoU0NUUF9ERUJV
R19VU1IsICJDYW4ndCBzZXQgc2VuZC1idWZmZXJzIHNpemUgKGVycm5vID0gJWQpLlxuIiwgZXJy
bm8pOwpAQCAtMTA3Miw3ICsxMDcyLDcgQEAgcmVjdl90aHJlYWRfaW5pdCh2b2lkKQogI2lmIGRl
ZmluZWQoSU5FVCkgfHwgZGVmaW5lZChJTkVUNikKIAljb25zdCBpbnQgb24gPSAxOwogI2VuZGlm
Ci0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiAhZGVmaW5lZChfV0lO
MzIpCiAJc3RydWN0IHRpbWV2YWwgdGltZW91dDsKIAogCW1lbXNldCgmdGltZW91dCwgMCwgc2l6
ZW9mKHN0cnVjdCB0aW1ldmFsKSk7CkBAIC0xMDgxLDcgKzEwODEsNyBAQCByZWN2X3RocmVhZF9p
bml0KHZvaWQpCiAjZWxzZQogCXVuc2lnbmVkIGludCB0aW1lb3V0ID0gU09DS0VUX1RJTUVPVVQ7
IC8qIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzICovCiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fVXNl
cnNwYWNlX29zX0RhcndpbikgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19EcmFnb25GbHkpIHx8
IGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRnJlZUJTRCkKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykg
fHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKQogCWlmIChT
Q1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yb3V0ZSkgPT0gLTEpIHsKIAkJaWYgKChTQ1RQX0JBU0Vf
VkFSKHVzZXJzcGFjZV9yb3V0ZSkgPSBzb2NrZXQoQUZfUk9VVEUsIFNPQ0tfUkFXLCAwKSkgPT0g
LTEpIHsKIAkJCVNDVFBEQkcoU0NUUF9ERUJVR19VU1IsICJDYW4ndCBjcmVhdGUgcm91dGluZyBz
b2NrZXQgKGVycm5vID0gJWQpLlxuIiwgZXJybm8pOwpAQCAtMTExMCw3ICsxMTEwLDcgQEAgcmVj
dl90aHJlYWRfaW5pdCh2b2lkKQogCQlpZiAoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2Vfcm91dGUp
ICE9IC0xKSB7CiAJCQlpZiAoc2V0c29ja29wdChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yb3V0
ZSksIFNPTF9TT0NLRVQsIFNPX1JDVlRJTUVPLChjb25zdCB2b2lkKikmdGltZW91dCwgc2l6ZW9m
KHN0cnVjdCB0aW1ldmFsKSkgPCAwKSB7CiAJCQkJU0NUUERCRyhTQ1RQX0RFQlVHX1VTUiwgIkNh
bid0IHNldCB0aW1lb3V0IG9uIHJvdXRpbmcgc29ja2V0IChlcnJubyA9ICVkKS5cbiIsIGVycm5v
KTsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lO
MzIpCiAJCQkJY2xvc2Vzb2NrZXQoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2Vfcm91dGUpKTsKICNl
bHNlCiAJCQkJY2xvc2UoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2Vfcm91dGUpKTsKQEAgLTExMjMs
NyArMTEyMyw3IEBAIHJlY3ZfdGhyZWFkX2luaXQodm9pZCkKICNpZiBkZWZpbmVkKElORVQpCiAJ
aWYgKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jhd3NjdHApID09IC0xKSB7CiAJCWlmICgoU0NU
UF9CQVNFX1ZBUih1c2Vyc3BhY2VfcmF3c2N0cCkgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19SQVcs
IElQUFJPVE9fU0NUUCkpID09IC0xKSB7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5k
b3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogCQkJU0NUUERCRyhTQ1RQX0RFQlVHX1VTUiwgIkNh
bid0IGNyZWF0ZSByYXcgc29ja2V0IGZvciBJUHY0IChlcnJubyA9ICVkKS5cbiIsIFdTQUdldExh
c3RFcnJvcigpKTsKICNlbHNlCiAJCQlTQ1RQREJHKFNDVFBfREVCVUdfVVNSLCAiQ2FuJ3QgY3Jl
YXRlIHJhdyBzb2NrZXQgZm9yIElQdjQgKGVycm5vID0gJWQpLlxuIiwgZXJybm8pOwpAQCAtMTEz
MSw3ICsxMTMxLDcgQEAgcmVjdl90aHJlYWRfaW5pdCh2b2lkKQogCQl9IGVsc2UgewogCQkJLyog
Y29tcGxldGUgc2V0dGluZyB1cCB0aGUgcmF3IFNDVFAgc29ja2V0ICovCiAJCQlpZiAoc2V0c29j
a29wdChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3RwKSwgSVBQUk9UT19JUCwgSVBfSERS
SU5DTCwoY29uc3Qgdm9pZCopJmhkcmluY2wsIHNpemVvZihpbnQpKSA8IDApIHsKLSNpZiBkZWZp
bmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJCQkJU0NU
UERCRyhTQ1RQX0RFQlVHX1VTUiwgIkNhbid0IHNldCBJUF9IRFJJTkNMIChlcnJubyA9ICVkKS5c
biIsIFdTQUdldExhc3RFcnJvcigpKTsKIAkJCQljbG9zZXNvY2tldChTQ1RQX0JBU0VfVkFSKHVz
ZXJzcGFjZV9yYXdzY3RwKSk7CiAjZWxzZQpAQCAtMTE0MCw3ICsxMTQwLDcgQEAgcmVjdl90aHJl
YWRfaW5pdCh2b2lkKQogI2VuZGlmCiAJCQkJU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfcmF3c2N0
cCkgPSAtMTsKIAkJCX0gZWxzZSBpZiAoc2V0c29ja29wdChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFj
ZV9yYXdzY3RwKSwgU09MX1NPQ0tFVCwgU09fUkNWVElNRU8sIChjb25zdCB2b2lkICopJnRpbWVv
dXQsIHNpemVvZih0aW1lb3V0KSkgPCAwKSB7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19X
aW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogCQkJCVNDVFBEQkcoU0NUUF9ERUJVR19VU1Is
ICJDYW4ndCBzZXQgdGltZW91dCBvbiBzb2NrZXQgZm9yIFNDVFAvSVB2NCAoZXJybm8gPSAlZCku
XG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7CiAJCQkJY2xvc2Vzb2NrZXQoU0NUUF9CQVNFX1ZBUih1
c2Vyc3BhY2VfcmF3c2N0cCkpOwogI2Vsc2UKQEAgLTExNTcsNyArMTE1Nyw3IEBAIHJlY3ZfdGhy
ZWFkX2luaXQodm9pZCkKIAkJCQlhZGRyX2lwdjQuc2luX3BvcnQgICAgICAgID0gaHRvbnMoMCk7
CiAJCQkJYWRkcl9pcHY0LnNpbl9hZGRyLnNfYWRkciA9IGh0b25sKElOQUREUl9BTlkpOwogCQkJ
CWlmIChiaW5kKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jhd3NjdHApLCAoY29uc3Qgc3RydWN0
IHNvY2thZGRyICopJmFkZHJfaXB2NCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpIDwgMCkg
ewotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4z
MikKIAkJCQkJU0NUUERCRyhTQ1RQX0RFQlVHX1VTUiwgIkNhbid0IGJpbmQgc29ja2V0IGZvciBT
Q1RQL0lQdjQgKGVycm5vID0gJWQpLlxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOwogCQkJCQljbG9z
ZXNvY2tldChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3RwKSk7CiAjZWxzZQpAQCAtMTE3
NCw3ICsxMTc0LDcgQEAgcmVjdl90aHJlYWRfaW5pdCh2b2lkKQogCX0KIAlpZiAoU0NUUF9CQVNF
X1ZBUih1c2Vyc3BhY2VfdWRwc2N0cCkgPT0gLTEpIHsKIAkJaWYgKChTQ1RQX0JBU0VfVkFSKHVz
ZXJzcGFjZV91ZHBzY3RwKSA9IHNvY2tldChBRl9JTkVULCBTT0NLX0RHUkFNLCBJUFBST1RPX1VE
UCkpID09IC0xKSB7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRl
ZmluZWQoX1dJTjMyKQogCQkJU0NUUERCRyhTQ1RQX0RFQlVHX1VTUiwgIkNhbid0IGNyZWF0ZSBz
b2NrZXQgZm9yIFNDVFAvVURQL0lQdjQgKGVycm5vID0gJWQpLlxuIiwgV1NBR2V0TGFzdEVycm9y
KCkpOwogI2Vsc2UKIAkJCVNDVFBEQkcoU0NUUF9ERUJVR19VU1IsICJDYW4ndCBjcmVhdGUgc29j
a2V0IGZvciBTQ1RQL1VEUC9JUHY0IChlcnJubyA9ICVkKS5cbiIsIGVycm5vKTsKQEAgLTExODUs
NyArMTE4NSw3IEBAIHJlY3ZfdGhyZWFkX2luaXQodm9pZCkKICNlbHNlCiAJCQlpZiAoc2V0c29j
a29wdChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV91ZHBzY3RwKSwgSVBQUk9UT19JUCwgSVBfUkVD
VkRTVEFERFIsIChjb25zdCB2b2lkICopJm9uLCAoaW50KXNpemVvZihpbnQpKSA8IDApIHsKICNl
bmRpZgotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9X
SU4zMikKICNpZiBkZWZpbmVkKElQX1BLVElORk8pCiAJCQkJU0NUUERCRyhTQ1RQX0RFQlVHX1VT
UiwgIkNhbid0IHNldCBJUF9QS1RJTkZPIG9uIHNvY2tldCBmb3IgU0NUUC9VRFAvSVB2NCAoZXJy
bm8gPSAlZCkuXG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7CiAjZWxzZQpAQCAtMTIwMiw3ICsxMjAy
LDcgQEAgcmVjdl90aHJlYWRfaW5pdCh2b2lkKQogI2VuZGlmCiAJCQkJU0NUUF9CQVNFX1ZBUih1
c2Vyc3BhY2VfdWRwc2N0cCkgPSAtMTsKIAkJCX0gZWxzZSBpZiAoc2V0c29ja29wdChTQ1RQX0JB
U0VfVkFSKHVzZXJzcGFjZV91ZHBzY3RwKSwgU09MX1NPQ0tFVCwgU09fUkNWVElNRU8sIChjb25z
dCB2b2lkICopJnRpbWVvdXQsIHNpemVvZih0aW1lb3V0KSkgPCAwKSB7Ci0jaWYgZGVmaW5lZChf
X1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogCQkJCVNDVFBEQkco
U0NUUF9ERUJVR19VU1IsICJDYW4ndCBzZXQgdGltZW91dCBvbiBzb2NrZXQgZm9yIFNDVFAvVURQ
L0lQdjQgKGVycm5vID0gJWQpLlxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOwogCQkJCWNsb3Nlc29j
a2V0KFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNjdHApKTsKICNlbHNlCkBAIC0xMjE5LDcg
KzEyMTksNyBAQCByZWN2X3RocmVhZF9pbml0KHZvaWQpCiAJCQkJYWRkcl9pcHY0LnNpbl9wb3J0
ICAgICAgICA9IGh0b25zKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF91ZHBfdHVubmVsaW5nX3BvcnQp
KTsKIAkJCQlhZGRyX2lwdjQuc2luX2FkZHIuc19hZGRyID0gaHRvbmwoSU5BRERSX0FOWSk7CiAJ
CQkJaWYgKGJpbmQoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfdWRwc2N0cCksIChjb25zdCBzdHJ1
Y3Qgc29ja2FkZHIgKikmYWRkcl9pcHY0LCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSkgPCAw
KSB7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJ
TjMyKQogCQkJCQlTQ1RQREJHKFNDVFBfREVCVUdfVVNSLCAiQ2FuJ3QgYmluZCBzb2NrZXQgZm9y
IFNDVFAvVURQL0lQdjQgKGVycm5vID0gJWQpLlxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOwogCQkJ
CQljbG9zZXNvY2tldChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV91ZHBzY3RwKSk7CiAjZWxzZQpA
QCAtMTIzOCw3ICsxMjM4LDcgQEAgcmVjdl90aHJlYWRfaW5pdCh2b2lkKQogI2lmIGRlZmluZWQo
SU5FVDYpCiAJaWYgKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jhd3NjdHA2KSA9PSAtMSkgewog
CQlpZiAoKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jhd3NjdHA2KSA9IHNvY2tldChBRl9JTkVU
NiwgU09DS19SQVcsIElQUFJPVE9fU0NUUCkpID09IC0xKSB7Ci0jaWYgZGVmaW5lZChfX1VzZXJz
cGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogCQkJU0NUUERCRyhTQ1RQX0RF
QlVHX1VTUiwgIkNhbid0IGNyZWF0ZSBzb2NrZXQgZm9yIFNDVFAvSVB2NiAoZXJybm8gPSAlZCku
XG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7CiAjZWxzZQogCQkJU0NUUERCRyhTQ1RQX0RFQlVHX1VT
UiwgIkNhbid0IGNyZWF0ZSBzb2NrZXQgZm9yIFNDVFAvSVB2NiAoZXJybm8gPSAlZCkuXG4iLCBl
cnJubyk7CkBAIC0xMjQ3LDcgKzEyNDcsNyBAQCByZWN2X3RocmVhZF9pbml0KHZvaWQpCiAJCQkv
KiBjb21wbGV0ZSBzZXR0aW5nIHVwIHRoZSByYXcgU0NUUCBzb2NrZXQgKi8KICNpZiBkZWZpbmVk
KElQVjZfUkVDVlBLVElORk8pCiAJCQlpZiAoc2V0c29ja29wdChTQ1RQX0JBU0VfVkFSKHVzZXJz
cGFjZV9yYXdzY3RwNiksIElQUFJPVE9fSVBWNiwgSVBWNl9SRUNWUEtUSU5GTywgKGNvbnN0IHZv
aWQgKikmb24sIHNpemVvZihvbikpIDwgMCkgewotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3Nf
V2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIAkJCQlTQ1RQREJHKFNDVFBfREVCVUdfVVNS
LCAiQ2FuJ3Qgc2V0IElQVjZfUkVDVlBLVElORk8gb24gc29ja2V0IGZvciBTQ1RQL0lQdjYgKGVy
cm5vID0gJWQpLlxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOwogCQkJCWNsb3Nlc29ja2V0KFNDVFBf
QkFTRV9WQVIodXNlcnNwYWNlX3Jhd3NjdHA2KSk7CiAjZWxzZQpAQCAtMTI1OCw3ICsxMjU4LDcg
QEAgcmVjdl90aHJlYWRfaW5pdCh2b2lkKQogCQkJfSBlbHNlIHsKICNlbHNlCiAJCQlpZiAoc2V0
c29ja29wdChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3RwNiksIElQUFJPVE9fSVBWNiwg
SVBWNl9QS1RJTkZPLChjb25zdCB2b2lkKikmb24sIHNpemVvZihvbikpIDwgMCkgewotI2lmIGRl
ZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIAkJCQlT
Q1RQREJHKFNDVFBfREVCVUdfVVNSLCAiQ2FuJ3Qgc2V0IElQVjZfUEtUSU5GTyBvbiBzb2NrZXQg
Zm9yIFNDVFAvSVB2NiAoZXJybm8gPSAlZCkuXG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7CiAJCQkJ
Y2xvc2Vzb2NrZXQoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfcmF3c2N0cDYpKTsKICNlbHNlCkBA
IC0xMjY5LDE0ICsxMjY5LDE0IEBAIHJlY3ZfdGhyZWFkX2luaXQodm9pZCkKIAkJCX0gZWxzZSB7
CiAjZW5kaWYKIAkJCQlpZiAoc2V0c29ja29wdChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdz
Y3RwNiksIElQUFJPVE9fSVBWNiwgSVBWNl9WNk9OTFksIChjb25zdCB2b2lkKikmb24sIChzb2Nr
bGVuX3Qpc2l6ZW9mKG9uKSkgPCAwKSB7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5k
b3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogCQkJCQlTQ1RQREJHKFNDVFBfREVCVUdfVVNSLCAi
Q2FuJ3Qgc2V0IElQVjZfVjZPTkxZIG9uIHNvY2tldCBmb3IgU0NUUC9JUHY2IChlcnJubyA9ICVk
KS5cbiIsIFdTQUdldExhc3RFcnJvcigpKTsKICNlbHNlCiAJCQkJCVNDVFBEQkcoU0NUUF9ERUJV
R19VU1IsICJDYW4ndCBzZXQgSVBWNl9WNk9OTFkgb24gc29ja2V0IGZvciBTQ1RQL0lQdjYgKGVy
cm5vID0gJWQpLlxuIiwgZXJybm8pOwogI2VuZGlmCiAJCQkJfQogCQkJCWlmIChzZXRzb2Nrb3B0
KFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jhd3NjdHA2KSwgU09MX1NPQ0tFVCwgU09fUkNWVElN
RU8sIChjb25zdCB2b2lkICopJnRpbWVvdXQsIHNpemVvZih0aW1lb3V0KSkgPCAwKSB7Ci0jaWYg
ZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogCQkJ
CQlTQ1RQREJHKFNDVFBfREVCVUdfVVNSLCAiQ2FuJ3Qgc2V0IHRpbWVvdXQgb24gc29ja2V0IGZv
ciBTQ1RQL0lQdjYgKGVycm5vID0gJWQpLlxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOwogCQkJCQlj
bG9zZXNvY2tldChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3RwNikpOwogI2Vsc2UKQEAg
LTEyOTMsNyArMTI5Myw3IEBAIHJlY3ZfdGhyZWFkX2luaXQodm9pZCkKIAkJCQkJYWRkcl9pcHY2
LnNpbjZfcG9ydCAgICAgICAgPSBodG9ucygwKTsKIAkJCQkJYWRkcl9pcHY2LnNpbjZfYWRkciAg
ICAgICAgPSBpbjZhZGRyX2FueTsKIAkJCQkJaWYgKGJpbmQoU0NUUF9CQVNFX1ZBUih1c2Vyc3Bh
Y2VfcmF3c2N0cDYpLCAoY29uc3Qgc3RydWN0IHNvY2thZGRyICopJmFkZHJfaXB2Niwgc2l6ZW9m
KHN0cnVjdCBzb2NrYWRkcl9pbjYpKSA8IDApIHsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29z
X1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJCQkJCQlTQ1RQREJHKFNDVFBfREVCVUdf
VVNSLCAiQ2FuJ3QgYmluZCBzb2NrZXQgZm9yIFNDVFAvSVB2NiAoZXJybm8gPSAlZCkuXG4iLCBX
U0FHZXRMYXN0RXJyb3IoKSk7CiAJCQkJCQljbG9zZXNvY2tldChTQ1RQX0JBU0VfVkFSKHVzZXJz
cGFjZV9yYXdzY3RwNikpOwogI2Vsc2UKQEAgLTEzMTEsNyArMTMxMSw3IEBAIHJlY3ZfdGhyZWFk
X2luaXQodm9pZCkKIAl9CiAJaWYgKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNjdHA2KSA9
PSAtMSkgewogCQlpZiAoKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNjdHA2KSA9IHNvY2tl
dChBRl9JTkVUNiwgU09DS19ER1JBTSwgSVBQUk9UT19VRFApKSA9PSAtMSkgewotI2lmIGRlZmlu
ZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIAkJCVNDVFBE
QkcoU0NUUF9ERUJVR19VU1IsICJDYW4ndCBjcmVhdGUgc29ja2V0IGZvciBTQ1RQL1VEUC9JUHY2
IChlcnJubyA9ICVkKS5cbiIsIFdTQUdldExhc3RFcnJvcigpKTsKICNlbHNlCiAJCQlTQ1RQREJH
KFNDVFBfREVCVUdfVVNSLCAiQ2FuJ3QgY3JlYXRlIHNvY2tldCBmb3IgU0NUUC9VRFAvSVB2NiAo
ZXJybm8gPSAlZCkuXG4iLCBlcnJubyk7CkBAIC0xMzE5LDcgKzEzMTksNyBAQCByZWN2X3RocmVh
ZF9pbml0KHZvaWQpCiAJCX0KICNpZiBkZWZpbmVkKElQVjZfUkVDVlBLVElORk8pCiAJCWlmIChz
ZXRzb2Nrb3B0KFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNjdHA2KSwgSVBQUk9UT19JUFY2
LCBJUFY2X1JFQ1ZQS1RJTkZPLCAoY29uc3Qgdm9pZCAqKSZvbiwgKGludClzaXplb2YoaW50KSkg
PCAwKSB7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQo
X1dJTjMyKQogCQkJU0NUUERCRyhTQ1RQX0RFQlVHX1VTUiwgIkNhbid0IHNldCBJUFY2X1JFQ1ZQ
S1RJTkZPIG9uIHNvY2tldCBmb3IgU0NUUC9VRFAvSVB2NiAoZXJybm8gPSAlZCkuXG4iLCBXU0FH
ZXRMYXN0RXJyb3IoKSk7CiAJCQljbG9zZXNvY2tldChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV91
ZHBzY3RwNikpOwogI2Vsc2UKQEAgLTEzMzAsNyArMTMzMCw3IEBAIHJlY3ZfdGhyZWFkX2luaXQo
dm9pZCkKIAkJfSBlbHNlIHsKICNlbHNlCiAJCWlmIChzZXRzb2Nrb3B0KFNDVFBfQkFTRV9WQVIo
dXNlcnNwYWNlX3VkcHNjdHA2KSwgSVBQUk9UT19JUFY2LCBJUFY2X1BLVElORk8sIChjb25zdCB2
b2lkICopJm9uLCAoaW50KXNpemVvZihpbnQpKSA8IDApIHsKLSNpZiBkZWZpbmVkKF9fVXNlcnNw
YWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJCQlTQ1RQREJHKFNDVFBfREVC
VUdfVVNSLCAiQ2FuJ3Qgc2V0IElQVjZfUEtUSU5GTyBvbiBzb2NrZXQgZm9yIFNDVFAvVURQL0lQ
djYgKGVycm5vID0gJWQpLlxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOwogCQkJY2xvc2Vzb2NrZXQo
U0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfdWRwc2N0cDYpKTsKICNlbHNlCkBAIC0xMzQxLDE0ICsx
MzQxLDE0IEBAIHJlY3ZfdGhyZWFkX2luaXQodm9pZCkKIAkJfSBlbHNlIHsKICNlbmRpZgogCQkJ
aWYgKHNldHNvY2tvcHQoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfdWRwc2N0cDYpLCBJUFBST1RP
X0lQVjYsIElQVjZfVjZPTkxZLCAoY29uc3Qgdm9pZCAqKSZvbiwgKHNvY2tsZW5fdClzaXplb2Yo
b24pKSA8IDApIHsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVm
aW5lZChfV0lOMzIpCiAJCQkJU0NUUERCRyhTQ1RQX0RFQlVHX1VTUiwgIkNhbid0IHNldCBJUFY2
X1Y2T05MWSBvbiBzb2NrZXQgZm9yIFNDVFAvVURQL0lQdjYgKGVycm5vID0gJWQpLlxuIiwgV1NB
R2V0TGFzdEVycm9yKCkpOwogI2Vsc2UKIAkJCQlTQ1RQREJHKFNDVFBfREVCVUdfVVNSLCAiQ2Fu
J3Qgc2V0IElQVjZfVjZPTkxZIG9uIHNvY2tldCBmb3IgU0NUUC9VRFAvSVB2NiAoZXJybm8gPSAl
ZCkuXG4iLCBlcnJubyk7CiAjZW5kaWYKIAkJCX0KIAkJCWlmIChzZXRzb2Nrb3B0KFNDVFBfQkFT
RV9WQVIodXNlcnNwYWNlX3VkcHNjdHA2KSwgU09MX1NPQ0tFVCwgU09fUkNWVElNRU8sIChjb25z
dCB2b2lkICopJnRpbWVvdXQsIHNpemVvZih0aW1lb3V0KSkgPCAwKSB7Ci0jaWYgZGVmaW5lZChf
X1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogCQkJCVNDVFBEQkco
U0NUUF9ERUJVR19VU1IsICJDYW4ndCBzZXQgdGltZW91dCBvbiBzb2NrZXQgZm9yIFNDVFAvVURQ
L0lQdjYgKGVycm5vID0gJWQpLlxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOwogCQkJCWNsb3Nlc29j
a2V0KFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNjdHA2KSk7CiAjZWxzZQpAQCAtMTM2NSw3
ICsxMzY1LDcgQEAgcmVjdl90aHJlYWRfaW5pdCh2b2lkKQogCQkJCWFkZHJfaXB2Ni5zaW42X3Bv
cnQgICAgICAgID0gaHRvbnMoU0NUUF9CQVNFX1NZU0NUTChzY3RwX3VkcF90dW5uZWxpbmdfcG9y
dCkpOwogCQkJCWFkZHJfaXB2Ni5zaW42X2FkZHIgICAgICAgID0gaW42YWRkcl9hbnk7CiAJCQkJ
aWYgKGJpbmQoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfdWRwc2N0cDYpLCAoY29uc3Qgc3RydWN0
IHNvY2thZGRyICopJmFkZHJfaXB2Niwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKSA8IDAp
IHsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lO
MzIpCiAJCQkJCVNDVFBEQkcoU0NUUF9ERUJVR19VU1IsICJDYW4ndCBiaW5kIHNvY2tldCBmb3Ig
U0NUUC9VRFAvSVB2NiAoZXJybm8gPSAlZCkuXG4iLCBXU0FHZXRMYXN0RXJyb3IoKSk7CiAJCQkJ
CWNsb3Nlc29ja2V0KFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNjdHA2KSk7CiAjZWxzZQpA
QCAtMTM4MSw3ICsxMzgxLDcgQEAgcmVjdl90aHJlYWRfaW5pdCh2b2lkKQogCQl9CiAJfQogI2Vu
ZGlmCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19EYXJ3aW4pIHx8IGRlZmluZWQoX19Vc2Vy
c3BhY2Vfb3NfRHJhZ29uRmx5KSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0ZyZWVCU0QpCisj
aWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykgfHwgZGVmaW5l
ZChfX0ZyZWVCU0RfXykKICNpZiBkZWZpbmVkKElORVQpIHx8IGRlZmluZWQoSU5FVDYpCiAJaWYg
KFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3JvdXRlKSAhPSAtMSkgewogCQlpbnQgcmM7CkBAIC0x
NDAwLDcgKzE0MDAsNyBAQCByZWN2X3RocmVhZF9pbml0KHZvaWQpCiAKIAkJaWYgKChyYyA9IHNj
dHBfdXNlcnNwYWNlX3RocmVhZF9jcmVhdGUoJlNDVFBfQkFTRV9WQVIocmVjdnRocmVhZHJhdyks
ICZyZWN2X2Z1bmN0aW9uX3JhdykpKSB7CiAJCQlTQ1RQREJHKFNDVFBfREVCVUdfVVNSLCAiQ2Fu
J3Qgc3RhcnQgU0NUUC9JUHY0IHJlY3YgdGhyZWFkICglZCkuXG4iLCByYyk7Ci0jaWYgZGVmaW5l
ZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogCQkJY2xvc2Vz
b2NrZXQoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfcmF3c2N0cCkpOwogI2Vsc2UKIAkJCWNsb3Nl
KFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jhd3NjdHApKTsKQEAgLTE0MTMsNyArMTQxMyw3IEBA
IHJlY3ZfdGhyZWFkX2luaXQodm9pZCkKIAogCQlpZiAoKHJjID0gc2N0cF91c2Vyc3BhY2VfdGhy
ZWFkX2NyZWF0ZSgmU0NUUF9CQVNFX1ZBUihyZWN2dGhyZWFkdWRwKSwgJnJlY3ZfZnVuY3Rpb25f
dWRwKSkpIHsKIAkJCVNDVFBEQkcoU0NUUF9ERUJVR19VU1IsICJDYW4ndCBzdGFydCBTQ1RQL1VE
UC9JUHY0IHJlY3YgdGhyZWFkICglZCkuXG4iLCByYyk7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFj
ZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMyKQogCQkJY2xvc2Vzb2NrZXQoU0NUUF9C
QVNFX1ZBUih1c2Vyc3BhY2VfdWRwc2N0cCkpOwogI2Vsc2UKIAkJCWNsb3NlKFNDVFBfQkFTRV9W
QVIodXNlcnNwYWNlX3VkcHNjdHApKTsKQEAgLTE0MjgsNyArMTQyOCw3IEBAIHJlY3ZfdGhyZWFk
X2luaXQodm9pZCkKIAogCQlpZiAoKHJjID0gc2N0cF91c2Vyc3BhY2VfdGhyZWFkX2NyZWF0ZSgm
U0NUUF9CQVNFX1ZBUihyZWN2dGhyZWFkcmF3NiksICZyZWN2X2Z1bmN0aW9uX3JhdzYpKSkgewog
CQkJU0NUUERCRyhTQ1RQX0RFQlVHX1VTUiwgIkNhbid0IHN0YXJ0IFNDVFAvSVB2NiByZWN2IHRo
cmVhZCAoJWQpLlxuIiwgcmMpOwotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykK
KyNpZiBkZWZpbmVkKF9XSU4zMikKIAkJCWNsb3Nlc29ja2V0KFNDVFBfQkFTRV9WQVIodXNlcnNw
YWNlX3Jhd3NjdHA2KSk7CiAjZWxzZQogCQkJY2xvc2UoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2Vf
cmF3c2N0cDYpKTsKQEAgLTE0NDEsNyArMTQ0MSw3IEBAIHJlY3ZfdGhyZWFkX2luaXQodm9pZCkK
IAogCQlpZiAoKHJjID0gc2N0cF91c2Vyc3BhY2VfdGhyZWFkX2NyZWF0ZSgmU0NUUF9CQVNFX1ZB
UihyZWN2dGhyZWFkdWRwNiksICZyZWN2X2Z1bmN0aW9uX3VkcDYpKSkgewogCQkJU0NUUERCRyhT
Q1RQX0RFQlVHX1VTUiwgIkNhbid0IHN0YXJ0IFNDVFAvVURQL0lQdjYgcmVjdiB0aHJlYWQgKCVk
KS5cbiIsIHJjKTsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVm
aW5lZChfV0lOMzIpCiAJCQljbG9zZXNvY2tldChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV91ZHBz
Y3RwNikpOwogI2Vsc2UKIAkJCWNsb3NlKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNjdHA2
KSk7CkBAIC0xNDU1LDQyICsxNDU1LDYzIEBAIHJlY3ZfdGhyZWFkX2luaXQodm9pZCkKIHZvaWQK
IHJlY3ZfdGhyZWFkX2Rlc3Ryb3kodm9pZCkKIHsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29z
X0RhcndpbikgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19EcmFnb25GbHkpIHx8IGRlZmluZWQo
X19Vc2Vyc3BhY2Vfb3NfRnJlZUJTRCkKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5l
ZChfX0RyYWdvbkZseV9fKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKQogI2lmIGRlZmluZWQoSU5F
VCkgfHwgZGVmaW5lZChJTkVUNikKIAlpZiAoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2Vfcm91dGUp
ICE9IC0xKSB7CiAJCWNsb3NlKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3JvdXRlKSk7CisJCXB0
aHJlYWRfam9pbihTQ1RQX0JBU0VfVkFSKHJlY3Z0aHJlYWRyb3V0ZSksIE5VTEwpOwogCX0KICNl
bmRpZgogI2VuZGlmCiAjaWYgZGVmaW5lZChJTkVUKQogCWlmIChTQ1RQX0JBU0VfVkFSKHVzZXJz
cGFjZV9yYXdzY3RwKSAhPSAtMSkgewotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93
cykKKyNpZiBkZWZpbmVkKF9XSU4zMikKIAkJY2xvc2Vzb2NrZXQoU0NUUF9CQVNFX1ZBUih1c2Vy
c3BhY2VfcmF3c2N0cCkpOworCQlTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3RwKSA9IC0x
OworCQlXYWl0Rm9yU2luZ2xlT2JqZWN0KFNDVFBfQkFTRV9WQVIocmVjdnRocmVhZHJhdyksIElO
RklOSVRFKTsKKwkJQ2xvc2VIYW5kbGUoU0NUUF9CQVNFX1ZBUihyZWN2dGhyZWFkcmF3KSk7CiAj
ZWxzZQogCQljbG9zZShTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3RwKSk7CisJCVNDVFBf
QkFTRV9WQVIodXNlcnNwYWNlX3Jhd3NjdHApID0gLTE7CisJCXB0aHJlYWRfam9pbihTQ1RQX0JB
U0VfVkFSKHJlY3Z0aHJlYWRyYXcpLCBOVUxMKTsKICNlbmRpZgogCX0KIAlpZiAoU0NUUF9CQVNF
X1ZBUih1c2Vyc3BhY2VfdWRwc2N0cCkgIT0gLTEpIHsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNl
X29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJCWNsb3Nlc29ja2V0KFNDVFBfQkFT
RV9WQVIodXNlcnNwYWNlX3VkcHNjdHApKTsKKwkJU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfdWRw
c2N0cCkgPSAtMTsKKwkJV2FpdEZvclNpbmdsZU9iamVjdChTQ1RQX0JBU0VfVkFSKHJlY3Z0aHJl
YWR1ZHApLCBJTkZJTklURSk7CisJCUNsb3NlSGFuZGxlKFNDVFBfQkFTRV9WQVIocmVjdnRocmVh
ZHVkcCkpOwogI2Vsc2UKIAkJY2xvc2UoU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfdWRwc2N0cCkp
OworCQlTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV91ZHBzY3RwKSA9IC0xOworCQlwdGhyZWFkX2pv
aW4oU0NUUF9CQVNFX1ZBUihyZWN2dGhyZWFkdWRwKSwgTlVMTCk7CiAjZW5kaWYKIAl9CiAjZW5k
aWYKICNpZiBkZWZpbmVkKElORVQ2KQogCWlmIChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdz
Y3RwNikgIT0gLTEpIHsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYg
ZGVmaW5lZChfV0lOMzIpCiAJCWNsb3Nlc29ja2V0KFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jh
d3NjdHA2KSk7CisJCVNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jhd3NjdHA2KSA9IC0xOworCQlX
YWl0Rm9yU2luZ2xlT2JqZWN0KFNDVFBfQkFTRV9WQVIocmVjdnRocmVhZHJhdzYpLCBJTkZJTklU
RSk7CisJCUNsb3NlSGFuZGxlKFNDVFBfQkFTRV9WQVIocmVjdnRocmVhZHJhdzYpKTsKICNlbHNl
CiAJCWNsb3NlKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jhd3NjdHA2KSk7CisJCVNDVFBfQkFT
RV9WQVIodXNlcnNwYWNlX3Jhd3NjdHA2KSA9IC0xOworCQlwdGhyZWFkX2pvaW4oU0NUUF9CQVNF
X1ZBUihyZWN2dGhyZWFkcmF3NiksIE5VTEwpOwogI2VuZGlmCiAJfQogCWlmIChTQ1RQX0JBU0Vf
VkFSKHVzZXJzcGFjZV91ZHBzY3RwNikgIT0gLTEpIHsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNl
X29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCisJCVNDVFBfQkFTRV9WQVIodXNlcnNw
YWNlX3VkcHNjdHA2KSA9IC0xOwogCQljbG9zZXNvY2tldChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFj
ZV91ZHBzY3RwNikpOworCQlXYWl0Rm9yU2luZ2xlT2JqZWN0KFNDVFBfQkFTRV9WQVIocmVjdnRo
cmVhZHVkcDYpLCBJTkZJTklURSk7CisJCUNsb3NlSGFuZGxlKFNDVFBfQkFTRV9WQVIocmVjdnRo
cmVhZHVkcDYpKTsKICNlbHNlCiAJCWNsb3NlKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNj
dHA2KSk7CisJCVNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNjdHA2KSA9IC0xOworCQlwdGhy
ZWFkX2pvaW4oU0NUUF9CQVNFX1ZBUihyZWN2dGhyZWFkdWRwNiksIE5VTEwpOwogI2VuZGlmCiAJ
fQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfcmVjdl90aHJl
YWQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNy
c2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9yZWN2X3RocmVhZC5oCm9sZCBtb2RlIDEw
MDY0NApuZXcgbW9kZSAxMDA3NTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNl
cl9yb3V0ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX3JvdXRlLmgKb2xkIG1vZGUgMTAw
NjQ0Cm5ldyBtb2RlIDEwMDc1NQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2Vy
X3NvY2tldC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX3NvY2tldC5jCm9sZCBtb2RlIDEw
MDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggOWZlNjk3NmEwYzc4Li4xNmY0ZGVjZWJhNDcKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX3NvY2tldC5jCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNj
dHBsaWIvdXNlcl9zb2NrZXQuYwpAQCAtMzksMTcgKzM5LDE4IEBACiAjaW5jbHVkZSA8bmV0aW5l
dC9zY3RwX3N5c2N0bC5oPgogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9pbnB1dC5oPgogI2luY2x1
ZGUgPG5ldGluZXQvc2N0cF9wZWVsb2ZmLmg+CisjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX2NhbGxv
dXQuaD4KICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfY3JjMzIuaD4KICNpZmRlZiBJTkVUNgogI2lu
Y2x1ZGUgPG5ldGluZXQ2L3NjdHA2X3Zhci5oPgogI2VuZGlmCi0jaWYgZGVmaW5lZChfX1VzZXJz
cGFjZV9vc19GcmVlQlNEKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCiAjaW5jbHVkZSA8c3lz
L3BhcmFtLmg+CiAjZW5kaWYKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0xpbnV4KQorI2lm
IGRlZmluZWQoX19saW51eF9fKQogI2RlZmluZSBfX0ZBVk9SX0JTRCAgICAvKiAob24gVWJ1bnR1
IGF0IGxlYXN0KSBlbmFibGVzIFVEUCBoZWFkZXIgZmllbGQgbmFtZXMgbGlrZSBCU0QgaW4gUkZD
IDc2OCAqLwogI2VuZGlmCi0jaWYgIWRlZmluZWQgKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisj
aWYgIWRlZmluZWQoX1dJTjMyKQogI2lmIGRlZmluZWQgSU5FVCB8fCBkZWZpbmVkIElORVQ2CiAj
aW5jbHVkZSA8bmV0aW5ldC91ZHAuaD4KICNlbmRpZgpAQCAtNzcsMTIgKzc4LDggQEAgZXh0ZXJu
IGludCBzY3RwX3Nvc2VuZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRy
LCBzdHJ1Y3QgdWlvICp1aW8KIGV4dGVybiBpbnQgc2N0cF9hdHRhY2goc3RydWN0IHNvY2tldCAq
c28sIGludCBwcm90bywgdWludDMyX3QgdnJmX2lkKTsKIGV4dGVybiBpbnQgc2N0cGNvbm5fYXR0
YWNoKHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgcHJvdG8sIHVpbnQzMl90IHZyZl9pZCk7CiAKLXZv
aWQKLXVzcnNjdHBfaW5pdCh1aW50MTZfdCBwb3J0LAotICAgICAgICAgICAgIGludCAoKmNvbm5f
b3V0cHV0KSh2b2lkICphZGRyLCB2b2lkICpidWZmZXIsIHNpemVfdCBsZW5ndGgsIHVpbnQ4X3Qg
dG9zLCB1aW50OF90IHNldF9kZiksCi0gICAgICAgICAgICAgdm9pZCAoKmRlYnVnX3ByaW50Ziko
Y29uc3QgY2hhciAqZm9ybWF0LCAuLi4pKQotewotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3Nf
V2luZG93cykKK3N0YXRpYyB2b2lkIGluaXRfc3luYyh2b2lkKSB7CisjaWYgZGVmaW5lZChfV0lO
MzIpCiAjaWYgZGVmaW5lZChJTkVUKSB8fCBkZWZpbmVkKElORVQ2KQogCVdTQURBVEEgd3NhRGF0
YTsKIApAQCAtMTA0LDcgKzEwMSwyNSBAQCB1c3JzY3RwX2luaXQodWludDE2X3QgcG9ydCwKIAlw
dGhyZWFkX211dGV4YXR0cl9kZXN0cm95KCZtdXRleF9hdHRyKTsKIAlwdGhyZWFkX2NvbmRfaW5p
dCgmYWNjZXB0X2NvbmQsIE5VTEwpOwogI2VuZGlmCi0Jc2N0cF9pbml0KHBvcnQsIGNvbm5fb3V0
cHV0LCBkZWJ1Z19wcmludGYpOworfQorCit2b2lkCit1c3JzY3RwX2luaXQodWludDE2X3QgcG9y
dCwKKyAgICAgICAgICAgICBpbnQgKCpjb25uX291dHB1dCkodm9pZCAqYWRkciwgdm9pZCAqYnVm
ZmVyLCBzaXplX3QgbGVuZ3RoLCB1aW50OF90IHRvcywgdWludDhfdCBzZXRfZGYpLAorICAgICAg
ICAgICAgIHZvaWQgKCpkZWJ1Z19wcmludGYpKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKSkKK3sK
Kwlpbml0X3N5bmMoKTsKKwlzY3RwX2luaXQocG9ydCwgY29ubl9vdXRwdXQsIGRlYnVnX3ByaW50
ZiwgMSk7Cit9CisKKwordm9pZAordXNyc2N0cF9pbml0X25vdGhyZWFkcyh1aW50MTZfdCBwb3J0
LAorCQkgICAgICAgaW50ICgqY29ubl9vdXRwdXQpKHZvaWQgKmFkZHIsIHZvaWQgKmJ1ZmZlciwg
c2l6ZV90IGxlbmd0aCwgdWludDhfdCB0b3MsIHVpbnQ4X3Qgc2V0X2RmKSwKKwkJICAgICAgIHZv
aWQgKCpkZWJ1Z19wcmludGYpKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKSkKK3sKKwlpbml0X3N5
bmMoKTsKKwlzY3RwX2luaXQocG9ydCwgY29ubl9vdXRwdXQsIGRlYnVnX3ByaW50ZiwgMCk7CiB9
CiAKIApAQCAtMTU0LDI4ICsxNjksMTcgQEAgc29jYW50c2VuZG1vcmUoc3RydWN0IHNvY2tldCAq
c28pCiBpbnQKIHNid2FpdChzdHJ1Y3Qgc29ja2J1ZiAqc2IpCiB7Ci0jaWYgZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKSAvKiBfX1VzZXJzcGFjZV9fICovCi0KIAlTT0NLQlVGX0xPQ0tfQVNTRVJUKHNi
KTsKIAogCXNiLT5zYl9mbGFncyB8PSBTQl9XQUlUOwotI2lmIGRlZmluZWQgKF9fVXNlcnNwYWNl
X29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJaWYgKFNsZWVwQ29uZGl0aW9uVmFy
aWFibGVDUygmKHNiLT5zYl9jb25kKSwgJihzYi0+c2JfbXR4KSwgSU5GSU5JVEUpKQotCQlyZXR1
cm4gMDsKKwkJcmV0dXJuICgwKTsKIAllbHNlCi0JCXJldHVybiAtMTsKKwkJcmV0dXJuICgtMSk7
CiAjZWxzZQogCXJldHVybiAocHRocmVhZF9jb25kX3dhaXQoJihzYi0+c2JfY29uZCksICYoc2It
PnNiX210eCkpKTsKICNlbmRpZgotCi0jZWxzZQotCVNPQ0tCVUZfTE9DS19BU1NFUlQoc2IpOwot
Ci0Jc2ItPnNiX2ZsYWdzIHw9IFNCX1dBSVQ7Ci0JcmV0dXJuIChtc2xlZXAoJnNiLT5zYl9jYywg
JnNiLT5zYl9tdHgsCi0JICAgIChzYi0+c2JfZmxhZ3MgJiBTQl9OT0lOVFIpID8gUFNPQ0sgOiBQ
U09DSyB8IFBDQVRDSCwgInNid2FpdCIsCi0JICAgIHNiLT5zYl90aW1lbykpOwotI2VuZGlmCiB9
CiAKIApAQCAtMzQ2LDIxICszNTAsMjEgQEAgdm9pZAogc29pc2Rpc2Nvbm5lY3Rpbmcoc3RydWN0
IHNvY2tldCAqc28pCiB7CiAKLSAgICAgICAgLyoKLSAgICAgICAgICogTm90ZTogVGhpcyBjb2Rl
IGFzc3VtZXMgdGhhdCBTT0NLX0xPQ0soc28pIGFuZAotICAgICAgICAgKiBTT0NLQlVGX0xPQ0so
JnNvLT5zb19yY3YpIGFyZSB0aGUgc2FtZS4KLSAgICAgICAgICovCi0gICAgICAgIFNPQ0tCVUZf
TE9DSygmc28tPnNvX3Jjdik7Ci0gICAgICAgIHNvLT5zb19zdGF0ZSAmPSB+U1NfSVNDT05ORUNU
SU5HOwotICAgICAgICBzby0+c29fc3RhdGUgfD0gU1NfSVNESVNDT05ORUNUSU5HOwotICAgICAg
ICBzby0+c29fcmN2LnNiX3N0YXRlIHw9IFNCU19DQU5UUkNWTU9SRTsKLSAgICAgICAgc29yd2Fr
ZXVwX2xvY2tlZChzbyk7Ci0gICAgICAgIFNPQ0tCVUZfTE9DSygmc28tPnNvX3NuZCk7Ci0gICAg
ICAgIHNvLT5zb19zbmQuc2Jfc3RhdGUgfD0gU0JTX0NBTlRTRU5ETU9SRTsKLSAgICAgICAgc293
d2FrZXVwX2xvY2tlZChzbyk7Ci0gICAgICAgIHdha2V1cCgiZHVtbXkiLHNvKTsKLSAgICAgICAg
LyogcmVxdWlyZXMgMiBhcmdzIGJ1dCB0aGlzIHdhcyBpbiBvcmlnICovCi0gICAgICAgIC8qIHdh
a2V1cCgmc28tPnNvX3RpbWVvKTsgKi8KKwkvKgorCSAqIE5vdGU6IFRoaXMgY29kZSBhc3N1bWVz
IHRoYXQgU09DS19MT0NLKHNvKSBhbmQKKwkgKiBTT0NLQlVGX0xPQ0soJnNvLT5zb19yY3YpIGFy
ZSB0aGUgc2FtZS4KKwkgKi8KKwlTT0NLQlVGX0xPQ0soJnNvLT5zb19yY3YpOworCXNvLT5zb19z
dGF0ZSAmPSB+U1NfSVNDT05ORUNUSU5HOworCXNvLT5zb19zdGF0ZSB8PSBTU19JU0RJU0NPTk5F
Q1RJTkc7CisJc28tPnNvX3Jjdi5zYl9zdGF0ZSB8PSBTQlNfQ0FOVFJDVk1PUkU7CisJc29yd2Fr
ZXVwX2xvY2tlZChzbyk7CisJU09DS0JVRl9MT0NLKCZzby0+c29fc25kKTsKKwlzby0+c29fc25k
LnNiX3N0YXRlIHw9IFNCU19DQU5UU0VORE1PUkU7CisJc293d2FrZXVwX2xvY2tlZChzbyk7CisJ
d2FrZXVwKCJkdW1teSIsc28pOworCS8qIHJlcXVpcmVzIDIgYXJncyBidXQgdGhpcyB3YXMgaW4g
b3JpZyAqLworCS8qIHdha2V1cCgmc28tPnNvX3RpbWVvKTsgKi8KIH0KIAogCkBAIC0zNzksNyAr
MzgzLDcgQEAgdm9pZAogd2FrZXVwKHZvaWQgKmlkZW50LCBzdHJ1Y3Qgc29ja2V0ICpzbykKIHsK
IAlTT0NLX0xPQ0soc28pOwotI2lmIGRlZmluZWQgKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisj
aWYgZGVmaW5lZChfV0lOMzIpCiAJV2FrZUFsbENvbmRpdGlvblZhcmlhYmxlKCYoc28pLT50aW1l
b19jb25kKTsKICNlbHNlCiAJcHRocmVhZF9jb25kX2Jyb2FkY2FzdCgmKHNvKS0+dGltZW9fY29u
ZCk7CkBAIC00MDUsNyArNDA5LDcgQEAgd2FrZXVwX29uZSh2b2lkICppZGVudCkKIAkgIHN1YnNp
ZGlhcnkgc29ja2V0cy4KIAkgKi8KIAlBQ0NFUFRfTE9DSygpOwotI2lmIGRlZmluZWQgKF9fVXNl
cnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJV2FrZUFsbENvbmRpdGlv
blZhcmlhYmxlKCZhY2NlcHRfY29uZCk7CiAjZWxzZQogCXB0aHJlYWRfY29uZF9icm9hZGNhc3Qo
JmFjY2VwdF9jb25kKTsKQEAgLTU1MywyOCArNTU3LDYgQEAgc29uZXdjb25uKHN0cnVjdCBzb2Nr
ZXQgKmhlYWQsIGludCBjb25uc3RhdHVzKQogCiB9CiAKLS8qIEZyb20gL3NyYy9zeXMvc3lzL3N5
c3Byb3RvLmggKi8KLXN0cnVjdCBzY3RwX2dlbmVyaWNfc2VuZG1zZ19hcmdzIHsKLQlpbnQgc2Q7
Ci0JY2FkZHJfdCBtc2c7Ci0JaW50IG1sZW47Ci0JY2FkZHJfdCB0bzsKLQlzb2NrbGVuX3QgdG9s
ZW47ICAvKiB3YXMgX19zb2NrbGVuX3QgKi8KLQlzdHJ1Y3Qgc2N0cF9zbmRyY3ZpbmZvICogc2lu
Zm87Ci0JaW50IGZsYWdzOwotfTsKLQotc3RydWN0IHNjdHBfZ2VuZXJpY19yZWN2bXNnX2FyZ3Mg
ewotICAgICAgICBpbnQgc2Q7Ci0gICAgICAgIHN0cnVjdCBpb3ZlYyAqaW92OwotICAgICAgICBp
bnQgaW92bGVuOwotICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIgKmZyb207Ci0gICAgICAgIHNvY2ts
ZW5fdCAqZnJvbWxlbmFkZHI7IC8qIHdhcyBfX3NvY2tsZW5fdCAqLwotICAgICAgICBzdHJ1Y3Qg
c2N0cF9zbmRyY3ZpbmZvICpzaW5mbzsKLSAgICAgICAgaW50ICptc2dfZmxhZ3M7Ci19OwotCi0K
ICAvKgogICAgU291cmNlOiAvc3JjL3N5cy9nbnUvZnMveGZzL0ZyZWVCU0QveGZzX2lvY3RsLmMK
ICAqLwpAQCAtNzU5LDExICs3NDEsMTEgQEAgdXNlcnNwYWNlX3NjdHBfc2VuZG1zZyhzdHJ1Y3Qg
c29ja2V0ICpzbywKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyICp0bywKICAgICAgICAgICAgICAgICAgICAg
ICAgc29ja2xlbl90IHRvbGVuLAotICAgICAgICAgICAgICAgICAgICAgICB1X2ludDMyX3QgcHBp
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQzMl90IGZsYWdzLAotICAgICAgICAgICAg
ICAgICAgICAgICB1X2ludDE2X3Qgc3RyZWFtX25vLAotICAgICAgICAgICAgICAgICAgICAgICB1
X2ludDMyX3QgdGltZXRvbGl2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQzMl90IGNv
bnRleHQpCisgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHBwaWQsCisgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICB1aW50
MTZfdCBzdHJlYW1fbm8sCisgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHRpbWV0b2xp
dmUsCisgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGNvbnRleHQpCiB7CiAJc3RydWN0
IHNjdHBfc25kcmN2aW5mbyBzbmRyY3ZpbmZvLCAqc2luZm8gPSAmc25kcmN2aW5mbzsKIAlzdHJ1
Y3QgdWlvIGF1aW87CkBAIC05NDMsNTkgKzkyNSw1OCBAQCB1c2Vyc3BhY2Vfc2N0cF9zZW5kbWJ1
ZihzdHJ1Y3Qgc29ja2V0ICpzbywKICAgICBzaXplX3QgbGVuLAogICAgIHN0cnVjdCBzb2NrYWRk
ciAqdG8sCiAgICAgc29ja2xlbl90IHRvbGVuLAotICAgIHVfaW50MzJfdCBwcGlkLAotICAgIHVf
aW50MzJfdCBmbGFncywKLSAgICB1X2ludDE2X3Qgc3RyZWFtX25vLAotICAgIHVfaW50MzJfdCB0
aW1ldG9saXZlLAotICAgIHVfaW50MzJfdCBjb250ZXh0KQotewotCi0gICAgc3RydWN0IHNjdHBf
c25kcmN2aW5mbyBzbmRyY3ZpbmZvLCAqc2luZm8gPSAmc25kcmN2aW5mbzsKLSAgICAvKiAgICBz
dHJ1Y3QgdWlvIGF1aW87Ci0gICAgICAgICAgc3RydWN0IGlvdmVjIGlvdlsxXTsgKi8KLSAgICBp
bnQgZXJyb3IgPSAwOwotICAgIGludCB1ZmxhZ3MgPSAwOwotICAgIHNzaXplX3QgcmV0dmFsOwot
Ci0gICAgc2luZm8tPnNpbmZvX3BwaWQgPSBwcGlkOwotICAgIHNpbmZvLT5zaW5mb19mbGFncyA9
IGZsYWdzOwotICAgIHNpbmZvLT5zaW5mb19zdHJlYW0gPSBzdHJlYW1fbm87Ci0gICAgc2luZm8t
PnNpbmZvX3RpbWV0b2xpdmUgPSB0aW1ldG9saXZlOwotICAgIHNpbmZvLT5zaW5mb19jb250ZXh0
ID0gY29udGV4dDsKLSAgICBzaW5mby0+c2luZm9fYXNzb2NfaWQgPSAwOwotCi0gICAgLyogUGVy
Zm9ybSBlcnJvciBjaGVja3Mgb24gZGVzdGluYXRpb24gKHRvKSAqLwotICAgIGlmICh0b2xlbiA+
IFNPQ0tfTUFYQUREUkxFTil7Ci0gICAgICAgIGVycm9yID0gKEVOQU1FVE9PTE9ORyk7Ci0gICAg
ICAgIGdvdG8gc2VuZG1zZ19yZXR1cm47Ci0gICAgfQotICAgIGlmICh0b2xlbiA8IChzb2NrbGVu
X3Qpb2Zmc2V0b2Yoc3RydWN0IHNvY2thZGRyLCBzYV9kYXRhKSl7Ci0gICAgICAgIGVycm9yID0g
KEVJTlZBTCk7Ci0gICAgICAgIGdvdG8gc2VuZG1zZ19yZXR1cm47Ci0gICAgfQotICAgIC8qIEFk
ZGluZyB0aGUgZm9sbG93aW5nIGFzIHBhcnQgb2YgZGVmZW5zaXZlIHByb2dyYW1taW5nLCBpbiBj
YXNlIHRoZSBhcHBsaWNhdGlvbgotICAgICAgIGRvZXMgbm90IGRvIGl0IHdoZW4gcHJlcGFyaW5n
IHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzLiovCisgICAgdWludDMyX3QgcHBpZCwKKyAgICB1aW50
MzJfdCBmbGFncywKKyAgICB1aW50MTZfdCBzdHJlYW1fbm8sCisgICAgdWludDMyX3QgdGltZXRv
bGl2ZSwKKyAgICB1aW50MzJfdCBjb250ZXh0KQoreworCisJc3RydWN0IHNjdHBfc25kcmN2aW5m
byBzbmRyY3ZpbmZvLCAqc2luZm8gPSAmc25kcmN2aW5mbzsKKwkvKiAgICBzdHJ1Y3QgdWlvIGF1
aW87CisJICAgICAgc3RydWN0IGlvdmVjIGlvdlsxXTsgKi8KKwlpbnQgZXJyb3IgPSAwOworCWlu
dCB1ZmxhZ3MgPSAwOworCXNzaXplX3QgcmV0dmFsOworCisJc2luZm8tPnNpbmZvX3BwaWQgPSBw
cGlkOworCXNpbmZvLT5zaW5mb19mbGFncyA9IGZsYWdzOworCXNpbmZvLT5zaW5mb19zdHJlYW0g
PSBzdHJlYW1fbm87CisJc2luZm8tPnNpbmZvX3RpbWV0b2xpdmUgPSB0aW1ldG9saXZlOworCXNp
bmZvLT5zaW5mb19jb250ZXh0ID0gY29udGV4dDsKKwlzaW5mby0+c2luZm9fYXNzb2NfaWQgPSAw
OworCisJLyogUGVyZm9ybSBlcnJvciBjaGVja3Mgb24gZGVzdGluYXRpb24gKHRvKSAqLworCWlm
ICh0b2xlbiA+IFNPQ0tfTUFYQUREUkxFTil7CisJCWVycm9yID0gKEVOQU1FVE9PTE9ORyk7CisJ
CWdvdG8gc2VuZG1zZ19yZXR1cm47CisJfQorCWlmICh0b2xlbiA8IChzb2NrbGVuX3Qpb2Zmc2V0
b2Yoc3RydWN0IHNvY2thZGRyLCBzYV9kYXRhKSl7CisJCWVycm9yID0gKEVJTlZBTCk7CisJCWdv
dG8gc2VuZG1zZ19yZXR1cm47CisJfQorCS8qIEFkZGluZyB0aGUgZm9sbG93aW5nIGFzIHBhcnQg
b2YgZGVmZW5zaXZlIHByb2dyYW1taW5nLCBpbiBjYXNlIHRoZSBhcHBsaWNhdGlvbgorCSAgIGRv
ZXMgbm90IGRvIGl0IHdoZW4gcHJlcGFyaW5nIHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzLiovCiAj
aWZkZWYgSEFWRV9TQV9MRU4KLSAgICB0by0+c2FfbGVuID0gdG9sZW47CisJdG8tPnNhX2xlbiA9
IHRvbGVuOwogI2VuZGlmCiAKLSAgICBlcnJvciA9IHNjdHBfbG93ZXJfc29zZW5kKHNvLCB0bywg
TlVMTC8qdWlvKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IG1idWYg
KiltYnVmZGF0YSwgKHN0cnVjdCBtYnVmICopTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVmbGFncywgc2luZm8pOworCWVycm9yID0gc2N0cF9sb3dlcl9zb3NlbmQoc28sIHRv
LCBOVUxMLyp1aW8qLywKKwkgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBtYnVmICop
bWJ1ZmRhdGEsIChzdHJ1Y3QgbWJ1ZiAqKU5VTEwsCisJICAgICAgICAgICAgICAgICAgICAgICAg
IHVmbGFncywgc2luZm8pOwogc2VuZG1zZ19yZXR1cm46Ci0gICAgLyogVE9ETzogTmVlZHMgYSBj
b25kaXRpb24gZm9yIG5vbi1ibG9ja2luZyB3aGVuIGVycm9yIGlzIEVXT1VMREJMT0NLICovCi0g
ICAgaWYgKDAgPT0gZXJyb3IpCi0gICAgICAgIHJldHZhbCA9IGxlbjsKLSAgICBlbHNlIGlmIChl
cnJvciA9PSBFV09VTERCTE9DSykgewotICAgICAgICBlcnJubyA9IEVXT1VMREJMT0NLOwotICAg
ICAgICByZXR2YWwgPSAtMTsKLSAgICB9IGVsc2UgewotICAgICAgICBTQ1RQX1BSSU5URigiJXM6
IGVycm9yID0gJWRcbiIsIF9fZnVuY19fLCBlcnJvcik7Ci0gICAgICAgIGVycm5vID0gZXJyb3I7
Ci0gICAgICAgIHJldHZhbCA9IC0xOwotICAgIH0KLSAgICByZXR1cm4gKHJldHZhbCk7Ci0KKwkv
KiBUT0RPOiBOZWVkcyBhIGNvbmRpdGlvbiBmb3Igbm9uLWJsb2NraW5nIHdoZW4gZXJyb3IgaXMg
RVdPVUxEQkxPQ0sgKi8KKwlpZiAoMCA9PSBlcnJvcikKKwkJcmV0dmFsID0gbGVuOworCWVsc2Ug
aWYgKGVycm9yID09IEVXT1VMREJMT0NLKSB7CisJCWVycm5vID0gRVdPVUxEQkxPQ0s7CisJCXJl
dHZhbCA9IC0xOworCX0gZWxzZSB7CisJCVNDVFBfUFJJTlRGKCIlczogZXJyb3IgPSAlZFxuIiwg
X19mdW5jX18sIGVycm9yKTsKKwkJZXJybm8gPSBlcnJvcjsKKwkJcmV0dmFsID0gLTE7CisJfQor
CXJldHVybiAocmV0dmFsKTsKIH0KIAogCkBAIC0xMDU0LDcgKzEwMzUsNyBAQCB1c2Vyc3BhY2Vf
c2N0cF9yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvLAogCWlmIChlcnJvcikgewogCQlpZiAoKGF1
aW8udWlvX3Jlc2lkICE9IHVsZW4pICYmCiAJCSAgICAoZXJyb3IgPT0gRUlOVFIgfHwKLSNpZiAh
ZGVmaW5lZChfX1VzZXJzcGFjZV9vc19OZXRCU0QpCisjaWYgIWRlZmluZWQoX19OZXRCU0RfXykK
IAkJICAgICBlcnJvciA9PSBFUkVTVEFSVCB8fAogI2VuZGlmCiAJCSAgICAgZXJyb3IgPT0gRVdP
VUxEQkxPQ0spKSB7CkBAIC0xMTQ3LDEzICsxMTI4LDE2IEBAIHVzcnNjdHBfcmVjdnYoc3RydWN0
IHNvY2tldCAqc28sCiAJaWYgKGVycm5vKSB7CiAJCWlmICgoYXVpby51aW9fcmVzaWQgIT0gdWxl
bikgJiYKIAkJICAgIChlcnJubyA9PSBFSU5UUiB8fAotI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNl
X29zX05ldEJTRCkKKyNpZiAhZGVmaW5lZChfX05ldEJTRF9fKQogCQkgICAgIGVycm5vID09IEVS
RVNUQVJUIHx8CiAjZW5kaWYKIAkJICAgICBlcnJubyA9PSBFV09VTERCTE9DSykpIHsKIAkJCWVy
cm5vID0gMDsKIAkJfQogCX0KKwlpZiAoZXJybm8gIT0gMCkgeworCQlnb3RvIG91dDsKKwl9CiAJ
aWYgKCgqbXNnX2ZsYWdzICYgTVNHX05PVElGSUNBVElPTikgPT0gMCkgewogCQlzdHJ1Y3Qgc2N0
cF9pbnBjYiAqaW5wOwogCkBAIC0xMjA1LDcgKzExODksMTAgQEAgdXNyc2N0cF9yZWN2dihzdHJ1
Y3Qgc29ja2V0ICpzbywKIAkJCSppbmZvbGVuID0gMDsKIAkJfQogCX0KLQlpZiAoKGZyb21sZW5w
ICE9IE5VTEwpICYmIChmcm9tbGVuID4gMCkgJiYgKGZyb20gIT0gTlVMTCkpIHsKKwlpZiAoKGZy
b21sZW5wICE9IE5VTEwpICYmCisJICAgIChmcm9tbGVuID4gMCkgJiYKKwkgICAgKGZyb20gIT0g
TlVMTCkgJiYKKwkgICAgKHVsZW4gPiBhdWlvLnVpb19yZXNpZCkpIHsKIAkJc3dpdGNoIChmcm9t
LT5zYV9mYW1pbHkpIHsKICNpZiBkZWZpbmVkKElORVQpCiAJCWNhc2UgQUZfSU5FVDoKQEAgLTEy
MjgsNiArMTIxNSw3IEBAIHVzcnNjdHBfcmVjdnYoc3RydWN0IHNvY2tldCAqc28sCiAJCQkqZnJv
bWxlbnAgPSBmcm9tbGVuOwogCQl9CiAJfQorb3V0OgogCWlmIChlcnJubyA9PSAwKSB7CiAJCS8q
IHJlYWR5IHJldHVybiB2YWx1ZSAqLwogCQlyZXR1cm4gKHVsZW4gLSBhdWlvLnVpb19yZXNpZCk7
CkBAIC0xMjM5LDcgKzEyMjcsNiBAQCB1c3JzY3RwX3JlY3Z2KHN0cnVjdCBzb2NrZXQgKnNvLAog
CiAKIAotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIC8qIFRha2VuIGZyb20gIC9zcmMvc3lz
L2tlcm4vdWlwY19zb2NrZXQuYwogICogYW5kIG1vZGlmaWVkIGZvciBfX1VzZXJzcGFjZV9fCiAg
KiBzb2NyZWF0ZSByZXR1cm5zIGEgc29ja2V0LiAgVGhlIHNvY2tldCBzaG91bGQgYmUKQEAgLTEz
MTAsNzQgKzEyOTcsNiBAQCBzb2NyZWF0ZShpbnQgZG9tLCBzdHJ1Y3Qgc29ja2V0ICoqYXNvLCBp
bnQgdHlwZSwgaW50IHByb3RvKQogCSphc28gPSBzbzsKIAlyZXR1cm4gKDApOwogfQotI2Vsc2UK
LS8qIFRoZSBrZXJuZWwgdmVyc2lvbiBmb3IgcmVmZXJlbmNlIGlzIGJlbG93LiBUaGUgI2Vsc2UK
LSAgIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgdGhlIF9fVXNlcnNwYWNlX18KLSAgIHZlcnNpb24g
aXMgdGVzdGVkLgotICogc29jcmVhdGUgcmV0dXJucyBhIHNvY2tldCB3aXRoIGEgcmVmIGNvdW50
IG9mIDEuICBUaGUgc29ja2V0IHNob3VsZCBiZQotICogY2xvc2VkIHdpdGggc29jbG9zZSgpLgot
ICovCi1pbnQKLXNvY3JlYXRlKGludCBkb20sIHN0cnVjdCBzb2NrZXQgKiphc28sIGludCB0eXBl
LCBpbnQgcHJvdG8sCi0gICAgc3RydWN0IHVjcmVkICpjcmVkLCBzdHJ1Y3QgdGhyZWFkICp0ZCkK
LXsKLQlzdHJ1Y3QgcHJvdG9zdyAqcHJwOwotCXN0cnVjdCBzb2NrZXQgKnNvOwotCWludCBlcnJv
cjsKLQotCWlmIChwcm90bykKLQkJcHJwID0gcGZmaW5kcHJvdG8oZG9tLCBwcm90bywgdHlwZSk7
Ci0JZWxzZQotCQlwcnAgPSBwZmZpbmR0eXBlKGRvbSwgdHlwZSk7Ci0KLQlpZiAocHJwID09IE5V
TEwgfHwgcHJwLT5wcl91c3JyZXFzLT5wcnVfYXR0YWNoID09IE5VTEwgfHwKLQkgICAgcHJwLT5w
cl91c3JyZXFzLT5wcnVfYXR0YWNoID09IHBydV9hdHRhY2hfbm90c3VwcCkKLQkJcmV0dXJuIChF
UFJPVE9OT1NVUFBPUlQpOwotCi0JaWYgKGphaWxlZChjcmVkKSAmJiBqYWlsX3NvY2tldF91bml4
aXByb3V0ZV9vbmx5ICYmCi0JICAgIHBycC0+cHJfZG9tYWluLT5kb21fZmFtaWx5ICE9IFBGX0xP
Q0FMICYmCi0JICAgIHBycC0+cHJfZG9tYWluLT5kb21fZmFtaWx5ICE9IFBGX0lORVQgJiYKLQkg
ICAgcHJwLT5wcl9kb21haW4tPmRvbV9mYW1pbHkgIT0gUEZfUk9VVEUpIHsKLQkJcmV0dXJuIChF
UFJPVE9OT1NVUFBPUlQpOwotCX0KLQotCWlmIChwcnAtPnByX3R5cGUgIT0gdHlwZSkKLQkJcmV0
dXJuIChFUFJPVE9UWVBFKTsKLQlzbyA9IHNvYWxsb2MoKTsKLQlpZiAoc28gPT0gTlVMTCkKLQkJ
cmV0dXJuIChFTk9CVUZTKTsKLQotCVRBSUxRX0lOSVQoJnNvLT5zb19pbmNvbXApOwotCVRBSUxR
X0lOSVQoJnNvLT5zb19jb21wKTsKLQlzby0+c29fdHlwZSA9IHR5cGU7Ci0Jc28tPnNvX2NyZWQg
PSBjcmhvbGQoY3JlZCk7Ci0Jc28tPnNvX3Byb3RvID0gcHJwOwotI2lmZGVmIE1BQwotCW1hY19j
cmVhdGVfc29ja2V0KGNyZWQsIHNvKTsKLSNlbmRpZgotCWtubGlzdF9pbml0KCZzby0+c29fcmN2
LnNiX3NlbC5zaV9ub3RlLCBTT0NLQlVGX01UWCgmc28tPnNvX3JjdiksCi0JICAgIE5VTEwsIE5V
TEwsIE5VTEwpOwotCWtubGlzdF9pbml0KCZzby0+c29fc25kLnNiX3NlbC5zaV9ub3RlLCBTT0NL
QlVGX01UWCgmc28tPnNvX3NuZCksCi0JICAgIE5VTEwsIE5VTEwsIE5VTEwpOwotCXNvLT5zb19j
b3VudCA9IDE7Ci0JLyoKLQkgKiBBdXRvLXNpemluZyBvZiBzb2NrZXQgYnVmZmVycyBpcyBtYW5h
Z2VkIGJ5IHRoZSBwcm90b2NvbHMgYW5kCi0JICogdGhlIGFwcHJvcHJpYXRlIGZsYWdzIG11c3Qg
YmUgc2V0IGluIHRoZSBwcnVfYXR0YWNoIGZ1bmN0aW9uLgotCSAqLwotCWVycm9yID0gKCpwcnAt
PnByX3VzcnJlcXMtPnBydV9hdHRhY2gpKHNvLCBwcm90bywgdGQpOwotCWlmIChlcnJvcikgewot
CQlLQVNTRVJUKHNvLT5zb19jb3VudCA9PSAxLCAoInNvY3JlYXRlOiBzb19jb3VudCAlZCIsCi0J
CSAgICBzby0+c29fY291bnQpKTsKLQkJc28tPnNvX2NvdW50ID0gMDsKLQkJc29kZWFsbG9jKHNv
KTsKLQkJcmV0dXJuIChlcnJvcik7Ci0JfQotCSphc28gPSBzbzsKLQlyZXR1cm4gKDApOwotfQot
I2VuZGlmCi0KLQogCiAKIC8qIFRha2VuIGZyb20gIC9zcmMvc3lzL2tlcm4vdWlwY19zeXNjYWxs
cy5jCkBAIC0xNDA1LDcgKzEzMjQsNyBAQCBzdHJ1Y3Qgc29ja2V0ICoKIHVzcnNjdHBfc29ja2V0
KGludCBkb21haW4sIGludCB0eXBlLCBpbnQgcHJvdG9jb2wsCiAJICAgICAgIGludCAoKnJlY2Vp
dmVfY2IpKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHVuaW9uIHNjdHBfc29ja3N0b3JlIGFkZHIsIHZv
aWQgKmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGF0YWxl
biwgc3RydWN0IHNjdHBfcmN2aW5mbywgaW50IGZsYWdzLCB2b2lkICp1bHBfaW5mbyksCi0JICAg
ICAgIGludCAoKnNlbmRfY2IpKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHVpbnQzMl90IHNiX2ZyZWUp
LAorCSAgICAgICBpbnQgKCpzZW5kX2NiKShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCB1aW50MzJfdCBz
Yl9mcmVlLCB2b2lkICp1bHBfaW5mbyksCiAJICAgICAgIHVpbnQzMl90IHNiX3RocmVzaG9sZCwK
IAkgICAgICAgdm9pZCAqdWxwX2luZm8pCiB7CkBAIC0xNDcyLDcgKzEzOTEsNiBAQCBzYnJlc2Vy
dmUoc3RydWN0IHNvY2tidWYgKnNiLCB1X2xvbmcgY2MsIHN0cnVjdCBzb2NrZXQgKnNvKQogCXJl
dHVybiAoZXJyb3IpOwogfQogCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogaW50CiBzb3Jl
c2VydmUoc3RydWN0IHNvY2tldCAqc28sIHVfbG9uZyBzbmRjYywgdV9sb25nIHJjdmNjKQogewpA
QCAtMTUwMiw0NSArMTQyMCwxMiBAQCBzb3Jlc2VydmUoc3RydWN0IHNvY2tldCAqc28sIHVfbG9u
ZyBzbmRjYywgdV9sb25nIHJjdmNjKQogCVNPQ0tCVUZfVU5MT0NLKCZzby0+c29fc25kKTsKIAly
ZXR1cm4gKEVOT0JVRlMpOwogfQotI2Vsc2UgLyoga2VybmVsIHZlcnNpb24gZm9yIHJlZmVyZW5j
ZSAqLwotaW50Ci1zb3Jlc2VydmUoc3RydWN0IHNvY2tldCAqc28sIHVfbG9uZyBzbmRjYywgdV9s
b25nIHJjdmNjKQotewotCXN0cnVjdCB0aHJlYWQgKnRkID0gY3VydGhyZWFkOwotCi0JU09DS0JV
Rl9MT0NLKCZzby0+c29fc25kKTsKLQlTT0NLQlVGX0xPQ0soJnNvLT5zb19yY3YpOwotCWlmIChz
YnJlc2VydmVfbG9ja2VkKCZzby0+c29fc25kLCBzbmRjYywgc28sIHRkKSA9PSAwKQotCQlnb3Rv
IGJhZDsKLQlpZiAoc2JyZXNlcnZlX2xvY2tlZCgmc28tPnNvX3JjdiwgcmN2Y2MsIHNvLCB0ZCkg
PT0gMCkKLQkJZ290byBiYWQyOwotCWlmIChzby0+c29fcmN2LnNiX2xvd2F0ID09IDApCi0JCXNv
LT5zb19yY3Yuc2JfbG93YXQgPSAxOwotCWlmIChzby0+c29fc25kLnNiX2xvd2F0ID09IDApCi0J
CXNvLT5zb19zbmQuc2JfbG93YXQgPSBNQ0xCWVRFUzsKLQlpZiAoc28tPnNvX3NuZC5zYl9sb3dh
dCA+IHNvLT5zb19zbmQuc2JfaGl3YXQpCi0JCXNvLT5zb19zbmQuc2JfbG93YXQgPSBzby0+c29f
c25kLnNiX2hpd2F0OwotCVNPQ0tCVUZfVU5MT0NLKCZzby0+c29fcmN2KTsKLQlTT0NLQlVGX1VO
TE9DSygmc28tPnNvX3NuZCk7Ci0JcmV0dXJuICgwKTsKLWJhZDI6Ci0Jc2JyZWxlYXNlX2xvY2tl
ZCgmc28tPnNvX3NuZCwgc28pOwotYmFkOgotCVNPQ0tCVUZfVU5MT0NLKCZzby0+c29fcmN2KTsK
LQlTT0NLQlVGX1VOTE9DSygmc28tPnNvX3NuZCk7Ci0JcmV0dXJuIChFTk9CVUZTKTsKLX0KLSNl
bmRpZgotCi0KLQogCiAKIC8qIFRha2VuIGZyb20gIC9zcmMvc3lzL2tlcm4vdWlwY19zb2NrYnVm
LmMKICAqIGFuZCBtb2RpZmllZCBmb3IgX19Vc2Vyc3BhY2VfXwogICovCiAKLSNpZiBkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCiB2b2lkCiBzb3dha2V1cChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0
IHNvY2tidWYgKnNiKQogewpAQCAtMTU1MCw1MyArMTQzNSwxNCBAQCBzb3dha2V1cChzdHJ1Y3Qg
c29ja2V0ICpzbywgc3RydWN0IHNvY2tidWYgKnNiKQogCXNiLT5zYl9mbGFncyAmPSB+U0JfU0VM
OwogCWlmIChzYi0+c2JfZmxhZ3MgJiBTQl9XQUlUKSB7CiAJCXNiLT5zYl9mbGFncyAmPSB+U0Jf
V0FJVDsKLSNpZiBkZWZpbmVkIChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQo
X1dJTjMyKQogCQlXYWtlQWxsQ29uZGl0aW9uVmFyaWFibGUoJihzYiktPnNiX2NvbmQpOwogI2Vs
c2UKIAkJcHRocmVhZF9jb25kX2Jyb2FkY2FzdCgmKHNiKS0+c2JfY29uZCk7CiAjZW5kaWYKIAl9
CiAJU09DS0JVRl9VTkxPQ0soc2IpOwotCS8qX19Vc2Vyc3BhY2VfXyB3aGF0IHRvZG8gYWJvdXQg
c29fdXBjYWxsPyovCi0KLX0KLSNlbHNlIC8qIGtlcm5lbCB2ZXJzaW9uIGZvciByZWZlcmVuY2Ug
Ki8KLS8qCi0gKiBXYWtldXAgcHJvY2Vzc2VzIHdhaXRpbmcgb24gYSBzb2NrZXQgYnVmZmVyLiAg
RG8gYXN5bmNocm9ub3VzIG5vdGlmaWNhdGlvbgotICogdmlhIFNJR0lPIGlmIHRoZSBzb2NrZXQg
aGFzIHRoZSBTU19BU1lOQyBmbGFnIHNldC4KLSAqCi0gKiBDYWxsZWQgd2l0aCB0aGUgc29ja2V0
IGJ1ZmZlciBsb2NrIGhlbGQ7IHdpbGwgcmVsZWFzZSB0aGUgbG9jayBieSB0aGUgZW5kCi0gKiBv
ZiB0aGUgZnVuY3Rpb24uICBUaGlzIGFsbG93cyB0aGUgY2FsbGVyIHRvIGFjcXVpcmUgdGhlIHNv
Y2tldCBidWZmZXIgbG9jawotICogd2hpbGUgdGVzdGluZyBmb3IgdGhlIG5lZWQgZm9yIHZhcmlv
dXMgc29ydHMgb2Ygd2FrZXVwIGFuZCBob2xkIGl0IHRocm91Z2gKLSAqIHRvIHRoZSBwb2ludCB3
aGVyZSBpdCdzIG5vIGxvbmdlciByZXF1aXJlZC4gIFdlIGN1cnJlbnRseSBob2xkIHRoZSBsb2Nr
Ci0gKiB0aHJvdWdoIGNhbGxzIG91dCB0byBvdGhlciBzdWJzeXN0ZW1zICh3aXRoIHRoZSBleGNl
cHRpb24gb2Yga3F1ZXVlKSwgYW5kCi0gKiB0aGVuIHJlbGVhc2UgaXQgdG8gYXZvaWQgbG9jayBv
cmRlciBpc3N1ZXMuICBJdCdzIG5vdCBjbGVhciB0aGF0J3MKLSAqIGNvcnJlY3QuCi0gKi8KLXZv
aWQKLXNvd2FrZXVwKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2J1ZiAqc2IpCi17Ci0K
LQlTT0NLQlVGX0xPQ0tfQVNTRVJUKHNiKTsKLQotCXNlbHdha2V1cHByaSgmc2ItPnNiX3NlbCwg
UFNPQ0spOwotCXNiLT5zYl9mbGFncyAmPSB+U0JfU0VMOwotCWlmIChzYi0+c2JfZmxhZ3MgJiBT
Ql9XQUlUKSB7Ci0JCXNiLT5zYl9mbGFncyAmPSB+U0JfV0FJVDsKLQkJd2FrZXVwKCZzYi0+c2Jf
Y2MpOwotCX0KLQlLTk9URV9MT0NLRUQoJnNiLT5zYl9zZWwuc2lfbm90ZSwgMCk7Ci0JU09DS0JV
Rl9VTkxPQ0soc2IpOwotCWlmICgoc28tPnNvX3N0YXRlICYgU1NfQVNZTkMpICYmIHNvLT5zb19z
aWdpbyAhPSBOVUxMKQotCQlwZ3NpZ2lvKCZzby0+c29fc2lnaW8sIFNJR0lPLCAwKTsKLQlpZiAo
c2ItPnNiX2ZsYWdzICYgU0JfVVBDQUxMKQotCQkoKnNvLT5zb191cGNhbGwpKHNvLCBzby0+c29f
dXBjYWxsYXJnLCBNX05PV0FJVCk7Ci0JaWYgKHNiLT5zYl9mbGFncyAmIFNCX0FJTykKLQkJYWlv
X3N3YWtlKHNvLCBzYik7Ci0JbXR4X2Fzc2VydChTT0NLQlVGX01UWChzYiksIE1BX05PVE9XTkVE
KTsKIH0KLSNlbmRpZgotCiAKIAogLyogVGFrZW4gZnJvbSAgL3NyYy9zeXMva2Vybi91aXBjX3Nv
Y2tldC5jCkBAIC0xNzY4LDcgKzE2MTQsNyBAQCB1c2VyX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpo
ZWFkLCAgc3RydWN0IHNvY2thZGRyICoqbmFtZSwgc29ja2xlbl90ICpuYW1lbGVuLCBzdAogCQkJ
aGVhZC0+c29fZXJyb3IgPSBFQ09OTkFCT1JURUQ7CiAJCQlicmVhazsKIAkJfQotI2lmIGRlZmlu
ZWQgKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJCWlmIChT
bGVlcENvbmRpdGlvblZhcmlhYmxlQ1MoJmFjY2VwdF9jb25kLCAmYWNjZXB0X210eCwgSU5GSU5J
VEUpKQogCQkJZXJyb3IgPSAwOwogCQllbHNlCkBAIC0yMDg5LDcgKzE5MzUsNyBAQCBpbnQgdXNl
cl9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKnNhKQogCiAJU09D
S19MT0NLKHNvKTsKIAl3aGlsZSAoKHNvLT5zb19zdGF0ZSAmIFNTX0lTQ09OTkVDVElORykgJiYg
c28tPnNvX2Vycm9yID09IDApIHsKLSNpZiBkZWZpbmVkIChfX1VzZXJzcGFjZV9vc19XaW5kb3dz
KQorI2lmIGRlZmluZWQoX1dJTjMyKQogCQlpZiAoU2xlZXBDb25kaXRpb25WYXJpYWJsZUNTKFNP
Q0tfQ09ORChzbyksIFNPQ0tfTVRYKHNvKSwgSU5GSU5JVEUpKQogCQkJZXJyb3IgPSAwOwogCQll
bHNlCkBAIC0yMDk4LDcgKzE5NDQsNyBAQCBpbnQgdXNlcl9jb25uZWN0KHN0cnVjdCBzb2NrZXQg
KnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKnNhKQogCQllcnJvciA9IHB0aHJlYWRfY29uZF93YWl0KFNP
Q0tfQ09ORChzbyksIFNPQ0tfTVRYKHNvKSk7CiAjZW5kaWYKIAkJaWYgKGVycm9yKSB7Ci0jaWYg
ZGVmaW5lZChfX1VzZXJzcGFjZV9vc19OZXRCU0QpCisjaWYgZGVmaW5lZChfX05ldEJTRF9fKQog
CQkJaWYgKGVycm9yID09IEVJTlRSKSB7CiAjZWxzZQogCQkJaWYgKGVycm9yID09IEVJTlRSIHx8
IGVycm9yID09IEVSRVNUQVJUKSB7CkBAIC0yMTE4LDcgKzE5NjQsNyBAQCBiYWQ6CiAJaWYgKCFp
bnRlcnJ1cHRlZCkgewogCQlzby0+c29fc3RhdGUgJj0gflNTX0lTQ09OTkVDVElORzsKIAl9Ci0j
aWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfTmV0QlNEKQorI2lmICFkZWZpbmVkKF9fTmV0QlNE
X18pCiAJaWYgKGVycm9yID09IEVSRVNUQVJUKSB7CiAJCWVycm9yID0gRUlOVFI7CiAJfQpAQCAt
MjEyOSwxMSArMTk3NSwxNCBAQCBkb25lMToKIAogaW50IHVzcnNjdHBfY29ubmVjdChzdHJ1Y3Qg
c29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICpuYW1lLCBpbnQgbmFtZWxlbikKIHsKLQlzdHJ1
Y3Qgc29ja2FkZHIgKnNhOworCXN0cnVjdCBzb2NrYWRkciAqc2EgPSBOVUxMOwogCiAJZXJybm8g
PSBnZXRzb2NrYWRkcigmc2EsIChjYWRkcl90KW5hbWUsIG5hbWVsZW4pOwotCWlmIChlcnJubykK
LQkJcmV0dXJuICgtMSk7CisgICAgaWYgKGVycm5vKSB7CisgICAgICAgIGlmIChzYSkKKyAgICAg
ICAgICAgIEZSRUUoc2EsIE1fU09OQU1FKTsKKyAgICAgICAgcmV0dXJuICgtMSk7CisgICAgfQog
CiAJZXJybm8gPSB1c2VyX2Nvbm5lY3Qoc28sIHNhKTsKIAlGUkVFKHNhLCBNX1NPTkFNRSk7CkBA
IC0yMjI4LDcgKzIwNzcsNyBAQCB1c3JzY3RwX2ZpbmlzaCh2b2lkKQogCQlyZXR1cm4gKC0xKTsK
IAl9CiAJc2N0cF9maW5pc2goKTsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3Mp
CisjaWYgZGVmaW5lZChfV0lOMzIpCiAJRGVsZXRlQ29uZGl0aW9uVmFyaWFibGUoJmFjY2VwdF9j
b25kKTsKIAlEZWxldGVDcml0aWNhbFNlY3Rpb24oJmFjY2VwdF9tdHgpOwogI2lmIGRlZmluZWQo
SU5FVCkgfHwgZGVmaW5lZChJTkVUNikKQEAgLTIzOTksNiArMjI0OCwyMCBAQCB1c3JzY3RwX2dl
dHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBsZXZlbCwgaW50IG9wdGlvbl9uYW1lLAog
CQkJCSpvcHRpb25fbGVuID0gKHNvY2tsZW5fdClzaXplb2Yoc3RydWN0IGxpbmdlcik7CiAJCQkJ
cmV0dXJuICgwKTsKIAkJCX0KKwkJCWJyZWFrOworCQljYXNlIFNPX0VSUk9SOgorCQkJaWYgKCpv
cHRpb25fbGVuIDwgKHNvY2tsZW5fdClzaXplb2YoaW50KSkgeworCQkJCWVycm5vID0gRUlOVkFM
OworCQkJCXJldHVybiAoLTEpOworCQkJfSBlbHNlIHsKKwkJCQlpbnQgKmludHZhbDsKKworCQkJ
CWludHZhbCA9IChpbnQgKilvcHRpb25fdmFsdWU7CisJCQkJKmludHZhbCA9IHNvLT5zb19lcnJv
cjsKKwkJCQkqb3B0aW9uX2xlbiA9IChzb2NrbGVuX3Qpc2l6ZW9mKGludCk7CisJCQkJcmV0dXJu
ICgwKTsKKwkJCX0KKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZXJybm8gPSBFSU5WQUw7CiAJ
CQlyZXR1cm4gKC0xKTsKQEAgLTI1NTAsMTAgKzI0MTMsMTYgQEAgdXNyc2N0cF9zZXRfdWxwaW5m
byhzdHJ1Y3Qgc29ja2V0ICpzbywgdm9pZCAqdWxwX2luZm8pCiAJcmV0dXJuIChyZWdpc3Rlcl91
bHBfaW5mbyhzbywgdWxwX2luZm8pKTsKIH0KIAorCitpbnQKK3VzcnNjdHBfZ2V0X3VscGluZm8o
c3RydWN0IHNvY2tldCAqc28sIHZvaWQgKipwdWxwX2luZm8pCit7CisJcmV0dXJuIChyZXRyaWV2
ZV91bHBfaW5mbyhzbywgcHVscF9pbmZvKSk7Cit9CisKIGludAogdXNyc2N0cF9iaW5keChzdHJ1
Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRycywgaW50IGFkZHJjbnQsIGludCBm
bGFncykKIHsKLQlzdHJ1Y3Qgc2N0cF9nZXRhZGRyZXNzZXMgKmdhZGRyczsKIAlzdHJ1Y3Qgc29j
a2FkZHIgKnNhOwogI2lmZGVmIElORVQKIAlzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbjsKQEAgLTI1
NjIsOSArMjQzMSw5IEBAIHVzcnNjdHBfYmluZHgoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBz
b2NrYWRkciAqYWRkcnMsIGludCBhZGRyY250LCBpbnQgZmxhZ3MpCiAJc3RydWN0IHNvY2thZGRy
X2luNiAqc2luNjsKICNlbmRpZgogCWludCBpOwotCXNpemVfdCBhcmdzejsKICNpZiBkZWZpbmVk
KElORVQpIHx8IGRlZmluZWQoSU5FVDYpCi0JdWludDE2X3Qgc3BvcnQgPSAwOworCXVpbnQxNl90
IHNwb3J0OworCWJvb2wgZml4X3BvcnQ7CiAjZW5kaWYKIAogCS8qIHZhbGlkYXRlIHRoZSBmbGFn
cyAqLwpAQCAtMjU3OCw2ICsyNDQ3LDEwIEBAIHVzcnNjdHBfYmluZHgoc3RydWN0IHNvY2tldCAq
c28sIHN0cnVjdCBzb2NrYWRkciAqYWRkcnMsIGludCBhZGRyY250LCBpbnQgZmxhZ3MpCiAJCWVy
cm5vID0gRUlOVkFMOwogCQlyZXR1cm4gKC0xKTsKIAl9CisjaWYgZGVmaW5lZChJTkVUKSB8fCBk
ZWZpbmVkKElORVQ2KQorCXNwb3J0ID0gMDsKKwlmaXhfcG9ydCA9IGZhbHNlOworI2VuZGlmCiAJ
LyogRmlyc3QgcHJlLXNjcmVlbiB0aGUgYWRkcmVzc2VzICovCiAJc2EgPSBhZGRyczsKIAlmb3Ig
KGkgPSAwOyBpIDwgYWRkcmNudDsgaSsrKSB7CkBAIC0yNjAyLDYgKzI0NzUsNyBAQCB1c3JzY3Rw
X2JpbmR4KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHJzLCBpbnQgYWRk
cmNudCwgaW50IGZsYWdzKQogCQkJCX0gZWxzZSB7CiAJCQkJCS8qIHNhdmUgb2ZmIHRoZSBwb3J0
ICovCiAJCQkJCXNwb3J0ID0gc2luLT5zaW5fcG9ydDsKKwkJCQkJZml4X3BvcnQgPSAoaSA+IDAp
OwogCQkJCX0KIAkJCX0KICNpZm5kZWYgSEFWRV9TQV9MRU4KQEAgLTI2MjksNiArMjUwMyw3IEBA
IHVzcnNjdHBfYmluZHgoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqYWRkcnMs
IGludCBhZGRyY250LCBpbnQgZmxhZ3MpCiAJCQkJfSBlbHNlIHsKIAkJCQkJLyogc2F2ZSBvZmYg
dGhlIHBvcnQgKi8KIAkJCQkJc3BvcnQgPSBzaW42LT5zaW42X3BvcnQ7CisJCQkJCWZpeF9wb3J0
ID0gKGkgPiAwKTsKIAkJCQl9CiAJCQl9CiAjaWZuZGVmIEhBVkVfU0FfTEVOCkBAIC0yNjQ1LDQx
ICsyNTIwLDMwIEBAIHVzcnNjdHBfYmluZHgoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2Nr
YWRkciAqYWRkcnMsIGludCBhZGRyY250LCBpbnQgZmxhZ3MpCiAJCXNhID0gKHN0cnVjdCBzb2Nr
YWRkciAqKSgoY2FkZHJfdClzYSArIHNhLT5zYV9sZW4pOwogI2VuZGlmCiAJfQotCWFyZ3N6ID0g
c2l6ZW9mKHN0cnVjdCBzY3RwX2dldGFkZHJlc3NlcykgKwotCSAgICAgICAgc2l6ZW9mKHN0cnVj
dCBzb2NrYWRkcl9zdG9yYWdlKTsKLQlpZiAoKGdhZGRycyA9IChzdHJ1Y3Qgc2N0cF9nZXRhZGRy
ZXNzZXMgKiltYWxsb2MoYXJnc3opKSA9PSBOVUxMKSB7Ci0JCWVycm5vID0gRU5PTUVNOwotCQly
ZXR1cm4gKC0xKTsKLQl9CiAJc2EgPSBhZGRyczsKIAlmb3IgKGkgPSAwOyBpIDwgYWRkcmNudDsg
aSsrKSB7CiAjaWZuZGVmIEhBVkVfU0FfTEVOCiAJCXNpemVfdCBzYV9sZW47CisKICNlbmRpZgot
CQltZW1zZXQoZ2FkZHJzLCAwLCBhcmdzeik7Ci0JCWdhZGRycy0+c2dldF9hc3NvY19pZCA9IDA7
CiAjaWZkZWYgSEFWRV9TQV9MRU4KLQkJbWVtY3B5KGdhZGRycy0+YWRkciwgc2EsIHNhLT5zYV9s
ZW4pOwogI2lmIGRlZmluZWQoSU5FVCkgfHwgZGVmaW5lZChJTkVUNikKLQkJaWYgKChpID09IDAp
ICYmIChzcG9ydCAhPSAwKSkgewotCQkJc3dpdGNoIChnYWRkcnMtPmFkZHItPnNhX2ZhbWlseSkg
eworCQlpZiAoZml4X3BvcnQpIHsKKwkJCXN3aXRjaCAoc2EtPnNhX2ZhbWlseSkgewogI2lmZGVm
IElORVQKIAkJCWNhc2UgQUZfSU5FVDoKLQkJCQlzaW4gPSAoc3RydWN0IHNvY2thZGRyX2luICop
Z2FkZHJzLT5hZGRyOwotCQkJCXNpbi0+c2luX3BvcnQgPSBzcG9ydDsKKwkJCQkoKHN0cnVjdCBz
b2NrYWRkcl9pbiAqKXNhKS0+c2luX3BvcnQgPSBzcG9ydDsKIAkJCQlicmVhazsKICNlbmRpZgog
I2lmZGVmIElORVQ2CiAJCQljYXNlIEFGX0lORVQ2OgotCQkJCXNpbjYgPSAoc3RydWN0IHNvY2th
ZGRyX2luNiAqKWdhZGRycy0+YWRkcjsKLQkJCQlzaW42LT5zaW42X3BvcnQgPSBzcG9ydDsKKwkJ
CQkoKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilzYSktPnNpbjZfcG9ydCA9IHNwb3J0OwogCQkJCWJy
ZWFrOwogI2VuZGlmCiAJCQl9CiAJCX0KICNlbmRpZgotCQlpZiAodXNyc2N0cF9zZXRzb2Nrb3B0
KHNvLCBJUFBST1RPX1NDVFAsIGZsYWdzLCBnYWRkcnMsIChzb2NrbGVuX3QpYXJnc3opICE9IDAp
IHsKLQkJCWZyZWUoZ2FkZHJzKTsKKwkJaWYgKHVzcnNjdHBfc2V0c29ja29wdChzbywgSVBQUk9U
T19TQ1RQLCBmbGFncywgc2EsIHNhLT5zYV9sZW4pICE9IDApIHsKIAkJCXJldHVybiAoLTEpOwog
CQl9CiAJCXNhID0gKHN0cnVjdCBzb2NrYWRkciAqKSgoY2FkZHJfdClzYSArIHNhLT5zYV9sZW4p
OwpAQCAtMjY5OSwzOCArMjU2MywzMyBAQCB1c3JzY3RwX2JpbmR4KHN0cnVjdCBzb2NrZXQgKnNv
LCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHJzLCBpbnQgYWRkcmNudCwgaW50IGZsYWdzKQogCQkJc2Ff
bGVuID0gMDsKIAkJCWJyZWFrOwogCQl9Ci0JCW1lbWNweShnYWRkcnMtPmFkZHIsIHNhLCBzYV9s
ZW4pOwogCQkvKgogCQkgKiBOb3csIGlmIHRoZXJlIHdhcyBhIHBvcnQgbWVudGlvbmVkLCBhc3N1
cmUgdGhhdCB0aGUKIAkJICogZmlyc3QgYWRkcmVzcyBoYXMgdGhhdCBwb3J0IHRvIG1ha2Ugc3Vy
ZSBpdCBmYWlscyBvcgogCQkgKiBzdWNjZWVkcyBjb3JyZWN0bHkuCiAJCSAqLwogI2lmIGRlZmlu
ZWQoSU5FVCkgfHwgZGVmaW5lZChJTkVUNikKLQkJaWYgKChpID09IDApICYmIChzcG9ydCAhPSAw
KSkgewotCQkJc3dpdGNoIChnYWRkcnMtPmFkZHItPnNhX2ZhbWlseSkgeworCQlpZiAoZml4X3Bv
cnQpIHsKKwkJCXN3aXRjaCAoc2EtPnNhX2ZhbWlseSkgewogI2lmZGVmIElORVQKIAkJCWNhc2Ug
QUZfSU5FVDoKLQkJCQlzaW4gPSAoc3RydWN0IHNvY2thZGRyX2luICopZ2FkZHJzLT5hZGRyOwot
CQkJCXNpbi0+c2luX3BvcnQgPSBzcG9ydDsKKwkJCQkoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKXNh
KS0+c2luX3BvcnQgPSBzcG9ydDsKIAkJCQlicmVhazsKICNlbmRpZgogI2lmZGVmIElORVQ2CiAJ
CQljYXNlIEFGX0lORVQ2OgotCQkJCXNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKWdhZGRy
cy0+YWRkcjsKLQkJCQlzaW42LT5zaW42X3BvcnQgPSBzcG9ydDsKKwkJCQkoKHN0cnVjdCBzb2Nr
YWRkcl9pbjYgKilzYSktPnNpbjZfcG9ydCA9IHNwb3J0OwogCQkJCWJyZWFrOwogI2VuZGlmCiAJ
CQl9CiAJCX0KICNlbmRpZgotCQlpZiAodXNyc2N0cF9zZXRzb2Nrb3B0KHNvLCBJUFBST1RPX1ND
VFAsIGZsYWdzLCBnYWRkcnMsIChzb2NrbGVuX3QpYXJnc3opICE9IDApIHsKLQkJCWZyZWUoZ2Fk
ZHJzKTsKKwkJaWYgKHVzcnNjdHBfc2V0c29ja29wdChzbywgSVBQUk9UT19TQ1RQLCBmbGFncywg
c2EsIChzb2NrbGVuX3Qpc2FfbGVuKSAhPSAwKSB7CiAJCQlyZXR1cm4gKC0xKTsKIAkJfQogCQlz
YSA9IChzdHJ1Y3Qgc29ja2FkZHIgKikoKGNhZGRyX3Qpc2EgKyBzYV9sZW4pOwogI2VuZGlmCiAJ
fQotCWZyZWUoZ2FkZHJzKTsKIAlyZXR1cm4gKDApOwogfQogCkBAIC0yODY2LDkgKzI3MjUsOSBA
QCB1c3JzY3RwX2dldHBhZGRycyhzdHJ1Y3Qgc29ja2V0ICpzbywgc2N0cF9hc3NvY190IGlkLCBz
dHJ1Y3Qgc29ja2FkZHIgKipyYWRkcnMpCiAJCWZyZWUoYWRkcnMpOwogCQlyZXR1cm4gKC0xKTsK
IAl9Ci0JKnJhZGRycyA9IChzdHJ1Y3Qgc29ja2FkZHIgKikmYWRkcnMtPmFkZHJbMF07CisJKnJh
ZGRycyA9ICZhZGRycy0+YWRkclswXS5zYTsKIAljbnQgPSAwOwotCXNhID0gKHN0cnVjdCBzb2Nr
YWRkciAqKSZhZGRycy0+YWRkclswXTsKKwlzYSA9ICZhZGRycy0+YWRkclswXS5zYTsKIAlsaW0g
PSAoY2FkZHJfdClhZGRycyArIG9wdF9sZW47CiAjaWZkZWYgSEFWRV9TQV9MRU4KIAl3aGlsZSAo
KChjYWRkcl90KXNhIDwgbGltKSAmJiAoc2EtPnNhX2xlbiA+IDApKSB7CkBAIC0yOTA1LDcgKzI3
NjQsNyBAQCB1c3JzY3RwX2ZyZWVwYWRkcnMoc3RydWN0IHNvY2thZGRyICphZGRycykKIAkvKiBU
YWtlIGF3YXkgdGhlIGhpZGRlbiBhc3NvY2lhdGlvbiBpZCAqLwogCXZvaWQgKmZyX2FkZHI7CiAK
LQlmcl9hZGRyID0gKHZvaWQgKikoKGNhZGRyX3QpYWRkcnMgLSBzaXplb2Yoc2N0cF9hc3NvY190
KSk7CisJZnJfYWRkciA9ICh2b2lkICopKChjYWRkcl90KWFkZHJzIC0gb2Zmc2V0b2Yoc3RydWN0
IHNjdHBfZ2V0YWRkcmVzc2VzLCBhZGRyKSk7CiAJLyogTm93IGZyZWUgaXQgKi8KIAlmcmVlKGZy
X2FkZHIpOwogfQpAQCAtMjkzNCw5ICsyNzkzLDcgQEAgdXNyc2N0cF9nZXRsYWRkcnMoc3RydWN0
IHNvY2tldCAqc28sIHNjdHBfYXNzb2NfdCBpZCwgc3RydWN0IHNvY2thZGRyICoqcmFkZHJzKQog
CQllcnJubyA9IEVOT1RDT05OOwogCQlyZXR1cm4gKC0xKTsKIAl9Ci0Jb3B0X2xlbiA9IChzb2Nr
bGVuX3QpKHNpemVfb2ZfYWRkcmVzc2VzICsKLQkgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9m
KHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlKSArCi0JICAgICAgICAgICAgICAgICAgICAgIHNpemVv
ZihzdHJ1Y3Qgc2N0cF9nZXRhZGRyZXNzZXMpKTsKKwlvcHRfbGVuID0gKHNvY2tsZW5fdCkoc2l6
ZV9vZl9hZGRyZXNzZXMgKyBzaXplb2Yoc3RydWN0IHNjdHBfZ2V0YWRkcmVzc2VzKSk7CiAJYWRk
cnMgPSBjYWxsb2MoMSwgKHNpemVfdClvcHRfbGVuKTsKIAlpZiAoYWRkcnMgPT0gTlVMTCkgewog
CQllcnJubyA9IEVOT01FTTsKQEAgLTI5NDksOSArMjgwNiw5IEBAIHVzcnNjdHBfZ2V0bGFkZHJz
KHN0cnVjdCBzb2NrZXQgKnNvLCBzY3RwX2Fzc29jX3QgaWQsIHN0cnVjdCBzb2NrYWRkciAqKnJh
ZGRycykKIAkJZXJybm8gPSBFTk9NRU07CiAJCXJldHVybiAoLTEpOwogCX0KLQkqcmFkZHJzID0g
KHN0cnVjdCBzb2NrYWRkciAqKSZhZGRycy0+YWRkclswXTsKKwkqcmFkZHJzID0gJmFkZHJzLT5h
ZGRyWzBdLnNhOwogCWNudCA9IDA7Ci0Jc2EgPSAoc3RydWN0IHNvY2thZGRyICopJmFkZHJzLT5h
ZGRyWzBdOworCXNhID0gJmFkZHJzLT5hZGRyWzBdLnNhOwogCWxpbSA9IChjYWRkcl90KWFkZHJz
ICsgb3B0X2xlbjsKICNpZmRlZiBIQVZFX1NBX0xFTgogCXdoaWxlICgoKGNhZGRyX3Qpc2EgPCBs
aW0pICYmIChzYS0+c2FfbGVuID4gMCkpIHsKQEAgLTI5ODgsNyArMjg0NSw3IEBAIHVzcnNjdHBf
ZnJlZWxhZGRycyhzdHJ1Y3Qgc29ja2FkZHIgKmFkZHJzKQogCS8qIFRha2UgYXdheSB0aGUgaGlk
ZGVuIGFzc29jaWF0aW9uIGlkICovCiAJdm9pZCAqZnJfYWRkcjsKIAotCWZyX2FkZHIgPSAodm9p
ZCAqKSgoY2FkZHJfdClhZGRycyAtIHNpemVvZihzY3RwX2Fzc29jX3QpKTsKKwlmcl9hZGRyID0g
KHZvaWQgKikoKGNhZGRyX3QpYWRkcnMgLSBvZmZzZXRvZihzdHJ1Y3Qgc2N0cF9nZXRhZGRyZXNz
ZXMsIGFkZHIpKTsKIAkvKiBOb3cgZnJlZSBpdCAqLwogCWZyZWUoZnJfYWRkcik7CiB9CkBAIC0z
MDAyLDE2ICsyODU5LDEyIEBAIHNjdHBfdXNlcnNwYWNlX2lwX291dHB1dChpbnQgKnJlc3VsdCwg
c3RydWN0IG1idWYgKm9fcGFrLAogCXN0cnVjdCBtYnVmICptOwogCXN0cnVjdCBtYnVmICptX29y
aWc7CiAJaW50IGlvdmNudDsKLQlpbnQgc2VuZF9sZW47CiAJaW50IGxlbjsKIAlpbnQgc2VuZF9j
b3VudDsKIAlzdHJ1Y3QgaXAgKmlwOwogCXN0cnVjdCB1ZHBoZHIgKnVkcDsKLSNpZiAhZGVmaW5l
ZCAoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKLQlpbnQgcmVzOwotI2VuZGlmCiAJc3RydWN0IHNv
Y2thZGRyX2luIGRzdDsKLSNpZiBkZWZpbmVkIChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lm
IGRlZmluZWQoX1dJTjMyKQogCVdTQU1TRyB3aW5fbXNnX2hkcjsKIAlEV09SRCB3aW5fc2VudF9s
ZW47CiAJV1NBQlVGIHNlbmRfaW92ZWNbTUFYTEVOX01CVUZfQ0hBSU5dOwpAQCAtMzA1Nyw3ICsy
OTEwLDcgQEAgc2N0cF91c2Vyc3BhY2VfaXBfb3V0cHV0KGludCAqcmVzdWx0LCBzdHJ1Y3QgbWJ1
ZiAqb19wYWssCiAJCQlTQ1RQX1BSSU5URigiV2h5IGRpZCB0aGUgU0NUUCBpbXBsZW1lbnRhdGlv
biBkaWQgbm90IGNob29zZSBhIHNvdXJjZSBhZGRyZXNzP1xuIik7CiAJCX0KIAkJLyogVE9ETyBu
ZWVkIHRvIHdvcnJ5IGFib3V0IHJvLT5yb19kc3QgYXMgaW4gaXBfb3V0cHV0PyAqLwotI2lmIGRl
ZmluZWQoX19Vc2Vyc3BhY2Vfb3NfTGludXgpIHx8IGRlZmluZWQgKF9fVXNlcnNwYWNlX29zX1dp
bmRvd3MpIHx8IChkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0ZyZWVCU0QpICYmIChfX0ZyZWVCU0Rf
dmVyc2lvbiA+PSAxMTAwMDMwKSkKKyNpZiBkZWZpbmVkKF9fbGludXhfXykgfHwgZGVmaW5lZChf
V0lOMzIpIHx8IChkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAoX19GcmVlQlNEX3ZlcnNpb24gPj0g
MTEwMDAzMCkpCiAJCS8qIG5lZWQgdG8gcHV0IGNlcnRhaW4gZmllbGRzIGludG8gbmV0d29yayBv
cmRlciBmb3IgTGludXggKi8KIAkJaXAtPmlwX2xlbiA9IGh0b25zKGlwLT5pcF9sZW4pOwogI2Vu
ZGlmCkBAIC0zMDgwLDEwICsyOTMzLDkgQEAgc2N0cF91c2Vyc3BhY2VfaXBfb3V0cHV0KGludCAq
cmVzdWx0LCBzdHJ1Y3QgbWJ1ZiAqb19wYWssCiAJCW1fYWRqKG0sIHNpemVvZihzdHJ1Y3QgaXAp
ICsgc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpKTsKIAl9CiAKLQlzZW5kX2xlbiA9IFNDVFBfSEVBREVS
X0xFTihtKTsgLyogbGVuZ3RoIG9mIGVudGlyZSBwYWNrZXQgKi8KIAlzZW5kX2NvdW50ID0gMDsK
IAlmb3IgKGlvdmNudCA9IDA7IG0gIT0gTlVMTCAmJiBpb3ZjbnQgPCBNQVhMRU5fTUJVRl9DSEFJ
TjsgbSA9IG0tPm1fbmV4dCwgaW92Y250KyspIHsKLSNpZiAhZGVmaW5lZCAoX19Vc2Vyc3BhY2Vf
b3NfV2luZG93cykKKyNpZiAhZGVmaW5lZChfV0lOMzIpCiAJCXNlbmRfaW92ZWNbaW92Y250XS5p
b3ZfYmFzZSA9IChjYWRkcl90KW0tPm1fZGF0YTsKIAkJc2VuZF9pb3ZlY1tpb3ZjbnRdLmlvdl9s
ZW4gPSBTQ1RQX0JVRl9MRU4obSk7CiAJCXNlbmRfY291bnQgKz0gc2VuZF9pb3ZlY1tpb3ZjbnRd
Lmlvdl9sZW47CkBAIC0zMDk5LDcgKzI5NTEsNyBAQCBzY3RwX3VzZXJzcGFjZV9pcF9vdXRwdXQo
aW50ICpyZXN1bHQsIHN0cnVjdCBtYnVmICpvX3BhaywKIAkJZ290byBmcmVlX21idWY7CiAJfQog
Ci0jaWYgIWRlZmluZWQgKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgIWRlZmluZWQoX1dJ
TjMyKQogCW1zZ19oZHIubXNnX25hbWUgPSAoc3RydWN0IHNvY2thZGRyICopICZkc3Q7CiAJbXNn
X2hkci5tc2dfbmFtZWxlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pOwogCW1zZ19oZHIu
bXNnX2lvdiA9IHNlbmRfaW92ZWM7CkBAIC0zMTA5LDEyICsyOTYxLDEyIEBAIHNjdHBfdXNlcnNw
YWNlX2lwX291dHB1dChpbnQgKnJlc3VsdCwgc3RydWN0IG1idWYgKm9fcGFrLAogCW1zZ19oZHIu
bXNnX2ZsYWdzID0gMDsKIAogCWlmICgoIXVzZV91ZHBfdHVubmVsaW5nKSAmJiAoU0NUUF9CQVNF
X1ZBUih1c2Vyc3BhY2VfcmF3c2N0cCkgIT0gLTEpKSB7Ci0JCWlmICgocmVzID0gc2VuZG1zZyhT
Q1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3RwKSwgJm1zZ19oZHIsIE1TR19ET05UV0FJVCkp
ICE9IHNlbmRfbGVuKSB7CisJCWlmIChzZW5kbXNnKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jh
d3NjdHApLCAmbXNnX2hkciwgTVNHX0RPTlRXQUlUKSA8IDApIHsKIAkJCSpyZXN1bHQgPSBlcnJu
bzsKIAkJfQogCX0KIAlpZiAoKHVzZV91ZHBfdHVubmVsaW5nKSAmJiAoU0NUUF9CQVNFX1ZBUih1
c2Vyc3BhY2VfdWRwc2N0cCkgIT0gLTEpKSB7Ci0JCWlmICgocmVzID0gc2VuZG1zZyhTQ1RQX0JB
U0VfVkFSKHVzZXJzcGFjZV91ZHBzY3RwKSwgJm1zZ19oZHIsIE1TR19ET05UV0FJVCkpICE9IHNl
bmRfbGVuKSB7CisJCWlmIChzZW5kbXNnKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNjdHAp
LCAmbXNnX2hkciwgTVNHX0RPTlRXQUlUKSA8IDApIHsKIAkJCSpyZXN1bHQgPSBlcnJubzsKIAkJ
fQogCX0KQEAgLTMxMzEsMTUgKzI5ODMsMTEgQEAgc2N0cF91c2Vyc3BhY2VfaXBfb3V0cHV0KGlu
dCAqcmVzdWx0LCBzdHJ1Y3QgbWJ1ZiAqb19wYWssCiAJaWYgKCghdXNlX3VkcF90dW5uZWxpbmcp
ICYmIChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3RwKSAhPSAtMSkpIHsKIAkJaWYgKFdT
QVNlbmRUbyhTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3RwKSwgKExQV1NBQlVGKSBzZW5k
X2lvdmVjLCBpb3ZjbnQsICZ3aW5fc2VudF9sZW4sIHdpbl9tc2dfaGRyLmR3RmxhZ3MsIHdpbl9t
c2dfaGRyLm5hbWUsIChpbnQpIHdpbl9tc2dfaGRyLm5hbWVsZW4sIE5VTEwsIE5VTEwpICE9IDAp
IHsKIAkJCSpyZXN1bHQgPSBXU0FHZXRMYXN0RXJyb3IoKTsKLQkJfSBlbHNlIGlmICh3aW5fc2Vu
dF9sZW4gIT0gc2VuZF9sZW4pIHsKLQkJCSpyZXN1bHQgPSBXU0FHZXRMYXN0RXJyb3IoKTsKIAkJ
fQogCX0KIAlpZiAoKHVzZV91ZHBfdHVubmVsaW5nKSAmJiAoU0NUUF9CQVNFX1ZBUih1c2Vyc3Bh
Y2VfdWRwc2N0cCkgIT0gLTEpKSB7CiAJCWlmIChXU0FTZW5kVG8oU0NUUF9CQVNFX1ZBUih1c2Vy
c3BhY2VfdWRwc2N0cCksIChMUFdTQUJVRikgc2VuZF9pb3ZlYywgaW92Y250LCAmd2luX3NlbnRf
bGVuLCB3aW5fbXNnX2hkci5kd0ZsYWdzLCB3aW5fbXNnX2hkci5uYW1lLCAoaW50KSB3aW5fbXNn
X2hkci5uYW1lbGVuLCBOVUxMLCBOVUxMKSAhPSAwKSB7CiAJCQkqcmVzdWx0ID0gV1NBR2V0TGFz
dEVycm9yKCk7Ci0JCX0gZWxzZSBpZiAod2luX3NlbnRfbGVuICE9IHNlbmRfbGVuKSB7Ci0JCQkq
cmVzdWx0ID0gV1NBR2V0TGFzdEVycm9yKCk7CiAJCX0KIAl9CiAjZW5kaWYKQEAgLTMxNDgsNyAr
Mjk5Niw3IEBAIGZyZWVfbWJ1ZjoKIH0KICNlbmRpZgogCi0jaWYgZGVmaW5lZCAoSU5FVDYpCisj
aWYgZGVmaW5lZChJTkVUNikKIHZvaWQgc2N0cF91c2Vyc3BhY2VfaXA2X291dHB1dChpbnQgKnJl
c3VsdCwgc3RydWN0IG1idWYgKm9fcGFrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3Qgcm91dGVfaW42ICpybywgdm9pZCAqc3RjYiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdnJmX2lkKQpAQCAt
MzE1NiwxNiArMzAwNCwxMiBAQCB2b2lkIHNjdHBfdXNlcnNwYWNlX2lwNl9vdXRwdXQoaW50ICpy
ZXN1bHQsIHN0cnVjdCBtYnVmICpvX3BhaywKIAlzdHJ1Y3QgbWJ1ZiAqbTsKIAlzdHJ1Y3QgbWJ1
ZiAqbV9vcmlnOwogCWludCBpb3ZjbnQ7Ci0JaW50IHNlbmRfbGVuOwogCWludCBsZW47CiAJaW50
IHNlbmRfY291bnQ7CiAJc3RydWN0IGlwNl9oZHIgKmlwNjsKIAlzdHJ1Y3QgdWRwaGRyICp1ZHA7
Ci0jaWYgIWRlZmluZWQgKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCi0JaW50IHJlczsKLSNlbmRp
ZgogCXN0cnVjdCBzb2NrYWRkcl9pbjYgZHN0OwotI2lmIGRlZmluZWQgKF9fVXNlcnNwYWNlX29z
X1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAJV1NBTVNHIHdpbl9tc2dfaGRyOwogCURX
T1JEIHdpbl9zZW50X2xlbjsKIAlXU0FCVUYgc2VuZF9pb3ZlY1tNQVhMRU5fTUJVRl9DSEFJTl07
CkBAIC0zMjM1LDEwICszMDc5LDkgQEAgdm9pZCBzY3RwX3VzZXJzcGFjZV9pcDZfb3V0cHV0KGlu
dCAqcmVzdWx0LCBzdHJ1Y3QgbWJ1ZiAqb19wYWssCiAJICBtX2FkaihtLCBzaXplb2Yoc3RydWN0
IGlwNl9oZHIpKTsKIAl9CiAKLQlzZW5kX2xlbiA9IFNDVFBfSEVBREVSX0xFTihtKTsgLyogbGVu
Z3RoIG9mIGVudGlyZSBwYWNrZXQgKi8KIAlzZW5kX2NvdW50ID0gMDsKIAlmb3IgKGlvdmNudCA9
IDA7IG0gIT0gTlVMTCAmJiBpb3ZjbnQgPCBNQVhMRU5fTUJVRl9DSEFJTjsgbSA9IG0tPm1fbmV4
dCwgaW92Y250KyspIHsKLSNpZiAhZGVmaW5lZCAoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNp
ZiAhZGVmaW5lZChfV0lOMzIpCiAJCXNlbmRfaW92ZWNbaW92Y250XS5pb3ZfYmFzZSA9IChjYWRk
cl90KW0tPm1fZGF0YTsKIAkJc2VuZF9pb3ZlY1tpb3ZjbnRdLmlvdl9sZW4gPSBTQ1RQX0JVRl9M
RU4obSk7CiAJCXNlbmRfY291bnQgKz0gc2VuZF9pb3ZlY1tpb3ZjbnRdLmlvdl9sZW47CkBAIC0z
MjUzLDcgKzMwOTYsNyBAQCB2b2lkIHNjdHBfdXNlcnNwYWNlX2lwNl9vdXRwdXQoaW50ICpyZXN1
bHQsIHN0cnVjdCBtYnVmICpvX3BhaywKIAkJZ290byBmcmVlX21idWY7CiAJfQogCi0jaWYgIWRl
ZmluZWQgKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgIWRlZmluZWQoX1dJTjMyKQogCW1z
Z19oZHIubXNnX25hbWUgPSAoc3RydWN0IHNvY2thZGRyICopICZkc3Q7CiAJbXNnX2hkci5tc2df
bmFtZWxlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KTsKIAltc2dfaGRyLm1zZ19pb3Yg
PSBzZW5kX2lvdmVjOwpAQCAtMzI2MywxMiArMzEwNiwxMiBAQCB2b2lkIHNjdHBfdXNlcnNwYWNl
X2lwNl9vdXRwdXQoaW50ICpyZXN1bHQsIHN0cnVjdCBtYnVmICpvX3BhaywKIAltc2dfaGRyLm1z
Z19mbGFncyA9IDA7CiAKIAlpZiAoKCF1c2VfdWRwX3R1bm5lbGluZykgJiYgKFNDVFBfQkFTRV9W
QVIodXNlcnNwYWNlX3Jhd3NjdHA2KSAhPSAtMSkpIHsKLQkJaWYgKChyZXMgPSBzZW5kbXNnKFND
VFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jhd3NjdHA2KSwgJm1zZ19oZHIsIE1TR19ET05UV0FJVCkp
ICE9IHNlbmRfbGVuKSB7CisJCWlmIChzZW5kbXNnKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jh
d3NjdHA2KSwgJm1zZ19oZHIsIE1TR19ET05UV0FJVCk8IDApIHsKIAkJCSpyZXN1bHQgPSBlcnJu
bzsKIAkJfQogCX0KIAlpZiAoKHVzZV91ZHBfdHVubmVsaW5nKSAmJiAoU0NUUF9CQVNFX1ZBUih1
c2Vyc3BhY2VfdWRwc2N0cDYpICE9IC0xKSkgewotCQlpZiAoKHJlcyA9IHNlbmRtc2coU0NUUF9C
QVNFX1ZBUih1c2Vyc3BhY2VfdWRwc2N0cDYpLCAmbXNnX2hkciwgTVNHX0RPTlRXQUlUKSkgIT0g
c2VuZF9sZW4pIHsKKwkJaWYgKHNlbmRtc2coU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfdWRwc2N0
cDYpLCAmbXNnX2hkciwgTVNHX0RPTlRXQUlUKSA8IDApIHsKIAkJCSpyZXN1bHQgPSBlcnJubzsK
IAkJfQogCX0KQEAgLTMyODUsMTUgKzMxMjgsMTEgQEAgdm9pZCBzY3RwX3VzZXJzcGFjZV9pcDZf
b3V0cHV0KGludCAqcmVzdWx0LCBzdHJ1Y3QgbWJ1ZiAqb19wYWssCiAJaWYgKCghdXNlX3VkcF90
dW5uZWxpbmcpICYmIChTQ1RQX0JBU0VfVkFSKHVzZXJzcGFjZV9yYXdzY3RwNikgIT0gLTEpKSB7
CiAJCWlmIChXU0FTZW5kVG8oU0NUUF9CQVNFX1ZBUih1c2Vyc3BhY2VfcmF3c2N0cDYpLCAoTFBX
U0FCVUYpIHNlbmRfaW92ZWMsIGlvdmNudCwgJndpbl9zZW50X2xlbiwgd2luX21zZ19oZHIuZHdG
bGFncywgd2luX21zZ19oZHIubmFtZSwgKGludCkgd2luX21zZ19oZHIubmFtZWxlbiwgTlVMTCwg
TlVMTCkgIT0gMCkgewogCQkJKnJlc3VsdCA9IFdTQUdldExhc3RFcnJvcigpOwotCQl9IGVsc2Ug
aWYgKHdpbl9zZW50X2xlbiAhPSBzZW5kX2xlbikgewotCQkJKnJlc3VsdCA9IFdTQUdldExhc3RF
cnJvcigpOwogCQl9CiAJfQogCWlmICgodXNlX3VkcF90dW5uZWxpbmcpICYmIChTQ1RQX0JBU0Vf
VkFSKHVzZXJzcGFjZV91ZHBzY3RwNikgIT0gLTEpKSB7CiAJCWlmIChXU0FTZW5kVG8oU0NUUF9C
QVNFX1ZBUih1c2Vyc3BhY2VfdWRwc2N0cDYpLCAoTFBXU0FCVUYpIHNlbmRfaW92ZWMsIGlvdmNu
dCwgJndpbl9zZW50X2xlbiwgd2luX21zZ19oZHIuZHdGbGFncywgd2luX21zZ19oZHIubmFtZSwg
KGludCkgd2luX21zZ19oZHIubmFtZWxlbiwgTlVMTCwgTlVMTCkgIT0gMCkgewogCQkJKnJlc3Vs
dCA9IFdTQUdldExhc3RFcnJvcigpOwotCQl9IGVsc2UgaWYgKHdpbl9zZW50X2xlbiAhPSBzZW5k
X2xlbikgewotCQkJKnJlc3VsdCA9IFdTQUdldExhc3RFcnJvcigpOwogCQl9CiAJfQogI2VuZGlm
CkBAIC0zMzcxLDE5ICszMjEwLDM0IEBAIHVzcnNjdHBfZHVtcHBhY2tldChjb25zdCB2b2lkICpi
dWYsIHNpemVfdCBsZW4sIGludCBvdXRib3VuZCkKICNpZmRlZiBfV0lOMzIKIAlmdGltZSgmdGIp
OwogCWxvY2FsdGltZV9zKCZ0LCAmdGIudGltZSk7Ci0JX3NucHJpbnRmX3MoZHVtcF9idWYsIFBS
RUFNQkxFX0xFTkdUSCArIDEsIFBSRUFNQkxFX0xFTkdUSCwgUFJFQU1CTEVfRk9STUFULAotCSAg
ICAgICAgICAgIG91dGJvdW5kID8gJ08nIDogJ0knLAotCSAgICAgICAgICAgIHQudG1faG91ciwg
dC50bV9taW4sIHQudG1fc2VjLCAobG9uZykoMTAwMCAqIHRiLm1pbGxpdG0pKTsKKyNpZiBkZWZp
bmVkKF9fTUlOR1czMl9fKQorCWlmIChzbnByaW50ZihkdW1wX2J1ZiwgUFJFQU1CTEVfTEVOR1RI
ICsgMSwgUFJFQU1CTEVfRk9STUFULAorCSAgICAgICAgICAgICBvdXRib3VuZCA/ICdPJyA6ICdJ
JywKKwkgICAgICAgICAgICAgdC50bV9ob3VyLCB0LnRtX21pbiwgdC50bV9zZWMsIChsb25nKSgx
MDAwICogdGIubWlsbGl0bSkpIDwgMCkgeworCQlmcmVlKGR1bXBfYnVmKTsKKwkJcmV0dXJuIChO
VUxMKTsKKwl9CisjZWxzZQorCWlmIChfc25wcmludGZfcyhkdW1wX2J1ZiwgUFJFQU1CTEVfTEVO
R1RIICsgMSwgUFJFQU1CTEVfTEVOR1RILCBQUkVBTUJMRV9GT1JNQVQsCisJICAgICAgICAgICAg
ICAgIG91dGJvdW5kID8gJ08nIDogJ0knLAorCSAgICAgICAgICAgICAgICB0LnRtX2hvdXIsIHQu
dG1fbWluLCB0LnRtX3NlYywgKGxvbmcpKDEwMDAgKiB0Yi5taWxsaXRtKSkgPCAwKSB7CisJCWZy
ZWUoZHVtcF9idWYpOworCQlyZXR1cm4gKE5VTEwpOworCX0KKyNlbmRpZgogI2Vsc2UKIAlnZXR0
aW1lb2ZkYXkoJnR2LCBOVUxMKTsKIAlzZWMgPSAodGltZV90KXR2LnR2X3NlYzsKIAlsb2NhbHRp
bWVfcigoY29uc3QgdGltZV90ICopJnNlYywgJnQpOwotCXNucHJpbnRmKGR1bXBfYnVmLCBQUkVB
TUJMRV9MRU5HVEggKyAxLCBQUkVBTUJMRV9GT1JNQVQsCi0JICAgICAgICAgb3V0Ym91bmQgPyAn
TycgOiAnSScsCi0JICAgICAgICAgdC50bV9ob3VyLCB0LnRtX21pbiwgdC50bV9zZWMsIChsb25n
KXR2LnR2X3VzZWMpOworCWlmIChzbnByaW50ZihkdW1wX2J1ZiwgUFJFQU1CTEVfTEVOR1RIICsg
MSwgUFJFQU1CTEVfRk9STUFULAorCSAgICAgICAgICAgICBvdXRib3VuZCA/ICdPJyA6ICdJJywK
KwkgICAgICAgICAgICAgdC50bV9ob3VyLCB0LnRtX21pbiwgdC50bV9zZWMsIChsb25nKXR2LnR2
X3VzZWMpIDwgMCkgeworCQlmcmVlKGR1bXBfYnVmKTsKKwkJcmV0dXJuIChOVUxMKTsKKwl9CiAj
ZW5kaWYKIAlwb3MgKz0gUFJFQU1CTEVfTEVOR1RIOwotI2lmZGVmIF9XSU4zMgorI2lmIGRlZmlu
ZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX01JTkdXMzJfXykKIAlzdHJuY3B5X3MoZHVtcF9idWYg
KyBwb3MsIHN0cmxlbihIRUFERVIpICsgMSwgSEVBREVSLCBzdHJsZW4oSEVBREVSKSk7CiAjZWxz
ZQogCXN0cmNweShkdW1wX2J1ZiArIHBvcywgSEVBREVSKTsKQEAgLTM0MDAsNyArMzI1NCw3IEBA
IHVzcnNjdHBfZHVtcHBhY2tldChjb25zdCB2b2lkICpidWYsIHNpemVfdCBsZW4sIGludCBvdXRi
b3VuZCkKIAkJZHVtcF9idWZbcG9zKytdID0gbG93IDwgMTAgPyAnMCcgKyBsb3cgOiAnYScgKyAo
bG93IC0gMTApOwogCQlkdW1wX2J1Zltwb3MrK10gPSAnICc7CiAJfQotI2lmZGVmIF9XSU4zMgor
I2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX01JTkdXMzJfXykKIAlzdHJuY3B5X3Mo
ZHVtcF9idWYgKyBwb3MsIHN0cmxlbihUUkFJTEVSKSArIDEsIFRSQUlMRVIsIHN0cmxlbihUUkFJ
TEVSKSk7CiAjZWxzZQogCXN0cmNweShkdW1wX2J1ZiArIHBvcywgVFJBSUxFUik7CkBAIC0zNDQz
LDkgKzMyOTcsMTAgQEAgdm9pZAogdXNyc2N0cF9jb25uaW5wdXQodm9pZCAqYWRkciwgY29uc3Qg
dm9pZCAqYnVmZmVyLCBzaXplX3QgbGVuZ3RoLCB1aW50OF90IGVjbl9iaXRzKQogewogCXN0cnVj
dCBzb2NrYWRkcl9jb25uIHNyYywgZHN0OwotCXN0cnVjdCBtYnVmICptOworCXN0cnVjdCBtYnVm
ICptLCAqbW07CiAJc3RydWN0IHNjdHBoZHIgKnNoOwogCXN0cnVjdCBzY3RwX2NodW5raGRyICpj
aDsKKwlpbnQgcmVtYWluaW5nOwogCiAJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfcmVjdnBhY2tldHMp
OwogCVNDVFBfU1RBVF9JTkNSX0NPVU5URVI2NChzY3Rwc19pbnBhY2tldHMpOwpAQCAtMzQ2NCw2
ICszMzE5LDE2IEBAIHVzcnNjdHBfY29ubmlucHV0KHZvaWQgKmFkZHIsIGNvbnN0IHZvaWQgKmJ1
ZmZlciwgc2l6ZV90IGxlbmd0aCwgdWludDhfdCBlY25fYml0CiAJaWYgKChtID0gc2N0cF9nZXRf
bWJ1Zl9mb3JfbXNnKCh1bnNpZ25lZCBpbnQpbGVuZ3RoLCAxLCBNX05PV0FJVCwgMCwgTVRfREFU
QSkpID09IE5VTEwpIHsKIAkJcmV0dXJuOwogCX0KKwkvKiBTZXQgdGhlIGxlbmd0aHMgZmllbGRz
IG9mIHRoZSBtYnVmIGNoYWluLgorCSAqIFRoaXMgaXMgZXhwZWN0ZWQgYnkgbV9jb3B5YmFjaygp
LgorCSAqLworCXJlbWFpbmluZyA9IChpbnQpbGVuZ3RoOworCWZvciAobW0gPSBtOyBtbSAhPSBO
VUxMOyBtbSA9IG1tLT5tX25leHQpIHsKKwkJbW0tPm1fbGVuID0gbWluKChpbnQpTV9TSVpFKG1t
KSwgcmVtYWluaW5nKTsKKwkJbS0+bV9wa3RoZHIubGVuICs9IG1tLT5tX2xlbjsKKwkJcmVtYWlu
aW5nIC09IG1tLT5tX2xlbjsKKwl9CisJS0FTU0VSVChyZW1haW5pbmcgPT0gMCwgKCJ1c3JzY3Rw
X2Nvbm5pbnB1dDogJXp1IGJ5dGVzIGxlZnQiLCByZW1haW5pbmcpKTsKIAltX2NvcHliYWNrKG0s
IDAsIChpbnQpbGVuZ3RoLCAoY2FkZHJfdClidWZmZXIpOwogCWlmIChTQ1RQX0JVRl9MRU4obSkg
PCAoaW50KShzaXplb2Yoc3RydWN0IHNjdHBoZHIpICsgc2l6ZW9mKHN0cnVjdCBzY3RwX2NodW5r
aGRyKSkpIHsKIAkJaWYgKChtID0gbV9wdWxsdXAobSwgc2l6ZW9mKHN0cnVjdCBzY3RwaGRyKSAr
IHNpemVvZihzdHJ1Y3Qgc2N0cF9jaHVua2hkcikpKSA9PSBOVUxMKSB7CkBAIC0zNDg4LDYgKzMz
NTMsNTQgQEAgdXNyc2N0cF9jb25uaW5wdXQodm9pZCAqYWRkciwgY29uc3Qgdm9pZCAqYnVmZmVy
LCBzaXplX3QgbGVuZ3RoLCB1aW50OF90IGVjbl9iaXQKIAlyZXR1cm47CiB9CiAKK3ZvaWQgdXNy
c2N0cF9oYW5kbGVfdGltZXJzKHVpbnQzMl90IGVsYXBzZWRfbWlsbGlzZWNvbmRzKQoreworCXNj
dHBfaGFuZGxlX3RpY2soc2N0cF9tc2Vjc190b190aWNrcyhlbGFwc2VkX21pbGxpc2Vjb25kcykp
OworfQorCitpbnQKK3VzcnNjdHBfZ2V0X2V2ZW50cyhzdHJ1Y3Qgc29ja2V0ICpzbykKK3sKKwlp
bnQgZXZlbnRzID0gMDsKKworCWlmIChzbyA9PSBOVUxMKSB7CisJCWVycm5vID0gRUJBREY7CisJ
CXJldHVybiAtMTsKKwl9CisKKwlTT0NLX0xPQ0soc28pOworCWlmIChzb3JlYWRhYmxlKHNvKSkg
eworCQlldmVudHMgfD0gU0NUUF9FVkVOVF9SRUFEOworCX0KKwlpZiAoc293cml0ZWFibGUoc28p
KSB7CisJCWV2ZW50cyB8PSBTQ1RQX0VWRU5UX1dSSVRFOworCX0KKwlpZiAoc28tPnNvX2Vycm9y
KSB7CisJCWV2ZW50cyB8PSBTQ1RQX0VWRU5UX0VSUk9SOworCX0KKwlTT0NLX1VOTE9DSyhzbyk7
CisKKwlyZXR1cm4gZXZlbnRzOworfQorCitpbnQKK3VzcnNjdHBfc2V0X3VwY2FsbChzdHJ1Y3Qg
c29ja2V0ICpzbywgdm9pZCAoKnVwY2FsbCkoc3RydWN0IHNvY2tldCAqLCB2b2lkICosIGludCks
IHZvaWQgKmFyZykKK3sKKwlpZiAoc28gPT0gTlVMTCkgeworCQllcnJubyA9IEVCQURGOworCQly
ZXR1cm4gKC0xKTsKKwl9CisKKwlTT0NLX0xPQ0soc28pOworCXNvLT5zb191cGNhbGwgPSB1cGNh
bGw7CisJc28tPnNvX3VwY2FsbGFyZyA9IGFyZzsKKwlzby0+c29fc25kLnNiX2ZsYWdzIHw9IFNC
X1VQQ0FMTDsKKwlzby0+c29fcmN2LnNiX2ZsYWdzIHw9IFNCX1VQQ0FMTDsKKwlTT0NLX1VOTE9D
Syhzbyk7CisKKwlyZXR1cm4gKDApOworfQorCiAjZGVmaW5lIFVTUlNDVFBfVFVOQUJMRV9TRVRf
REVGKF9fZmllbGQsIF9fcHJlZml4KSAgIFwKIGludCB1c3JzY3RwX3R1bmFibGVfc2V0XyAjIyBf
X2ZpZWxkKHVpbnQzMl90IHZhbHVlKSAgXAogeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0zNTE4LDcgKzM0MzEsNyBAQCBpbnQgdXNyc2N0
cF9zeXNjdGxfc2V0XyAjIyBfX2ZpZWxkKHVpbnQzMl90IHZhbHVlKSAgIFwKIAl9ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiB9CiAKLSNpZiAhZGVmaW5lZChf
X1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIF9fR05VQ19fID49IDUgfHwgKF9fR05VQ19fID09
IDQgJiYgX19HTlVDX01JTk9SX18gPj0gNikgfHwgZGVmaW5lZChfX2NsYW5nX18pCiAjcHJhZ21h
IEdDQyBkaWFnbm9zdGljIHB1c2gKICNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVd0
eXBlLWxpbWl0cyIKICNlbmRpZgpAQCAtMzU5MSw4ICszNTA0LDggQEAgVVNSU0NUUF9TWVNDVExf
U0VUX0RFRihzY3RwX2luaXRpYWxfY3duZCwgU0NUUENUTF9JTklUSUFMX0NXTkQpCiAjaWZkZWYg
U0NUUF9ERUJVRwogVVNSU0NUUF9TWVNDVExfU0VUX0RFRihzY3RwX2RlYnVnX29uLCBTQ1RQQ1RM
X0RFQlVHKQogI2VuZGlmCi0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKLSNw
cmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAorI2lmIF9fR05VQ19fID49IDUgfHwgKF9fR05VQ19f
ID09IDQgJiYgX19HTlVDX01JTk9SX18gPj0gNikgfHwgZGVmaW5lZChfX2NsYW5nX18pCisjcHJh
Z21hIEdDQyBkaWFnbm9zdGljIHBvcAogI2VuZGlmCiAKICNkZWZpbmUgVVNSU0NUUF9TWVNDVExf
R0VUX0RFRihfX2ZpZWxkKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJf
c29ja2V0dmFyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfc29ja2V0dmFyLmgKb2xkIG1v
ZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCBmZmM4MjcwZWZkYTQuLjZiNzliNTkwOGMw
NgotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3Vz
cnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfc29ja2V0dmFyLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBs
aWIvdXNyc2N0cGxpYi91c2VyX3NvY2tldHZhci5oCkBAIC0zMyw3ICszMyw3IEBACiAjaWZuZGVm
IF9VU0VSX1NPQ0tFVFZBUl9IXwogI2RlZmluZSBfVVNFUl9TT0NLRVRWQVJfSF8KIAotI2lmIGRl
ZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRGFyd2luKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKQogI2lu
Y2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2VuZGlmCkBAIC00Miw3
ICs0Miw3IEBACiAvKiAjaW5jbHVkZSA8c3lzL19sb2NrLmg+ICB3YXMgMCBieXRlIGZpbGUgKi8K
IC8qICNpbmNsdWRlIDxzeXMvX211dGV4Lmg+IHdhcyAwIGJ5dGUgZmlsZSAqLwogLyogI2luY2x1
ZGUgPHN5cy9fc3guaD4gKi8gLypfX1VzZXJzcGFjZV9fIGFsdGVybmF0aXZlPyovCi0jaWYgIWRl
ZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRHJhZ29uRmx5KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9v
c19GcmVlQlNEKSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19OZXRCU0QpICYmICFkZWZpbmVk
KF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX05hQ2wp
CisjaWYgIWRlZmluZWQoX19EcmFnb25GbHlfXykgJiYgIWRlZmluZWQoX19GcmVlQlNEX18pICYm
ICFkZWZpbmVkKF9fTmV0QlNEX18pICYmICFkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19u
YXRpdmVfY2xpZW50X18pCiAjaW5jbHVkZSA8c3lzL3Vpby5oPgogI2VuZGlmCiAjZGVmaW5lIFNP
Q0tfTUFYQUREUkxFTiAyNTUKQEAgLTU0LDE2ICs1NCwxNiBAQAogI2RlZmluZSBTU19DQU5UUkNW
TU9SRSAweDAyMAogI2RlZmluZSBTU19DQU5UU0VORE1PUkUgMHgwMTAKIAotI2lmIGRlZmluZWQo
X19Vc2Vyc3BhY2Vfb3NfRGFyd2luKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0RyYWdvbkZs
eSkgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19GcmVlQlNEKSB8fCBkZWZpbmVkKF9fVXNlcnNw
YWNlX29zX09wZW5CU0QpIHx8IGRlZmluZWQgKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpIHx8IGRl
ZmluZWQoX19Vc2Vyc3BhY2Vfb3NfTmFDbCkKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVm
aW5lZChfX0RyYWdvbkZseV9fKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9f
T3BlbkJTRF9fKSB8fCBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX25hdGl2ZV9jbGllbnRf
XykKICNkZWZpbmUgVUlPX01BWElPViAxMDI0CiAjZGVmaW5lIEVSRVNUQVJUICgtMSkKICNlbmRp
ZgogCi0jaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRGFyd2luKSAmJiAhZGVmaW5lZChfX1Vz
ZXJzcGFjZV9vc19OZXRCU0QpICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX09wZW5CU0QpCisj
aWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX05ldEJTRF9fKSAmJiAhZGVmaW5l
ZChfX09wZW5CU0RfXykKIGVudW0JdWlvX3J3IHsgVUlPX1JFQUQsIFVJT19XUklURSB9OwogI2Vu
ZGlmCiAKLSNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19OZXRCU0QpICYmICFkZWZpbmVkKF9f
VXNlcnNwYWNlX29zX09wZW5CU0QpCisjaWYgIWRlZmluZWQoX19OZXRCU0RfXykgJiYgIWRlZmlu
ZWQoX19PcGVuQlNEX18pCiAvKiBTZWdtZW50IGZsYWcgdmFsdWVzLiAqLwogZW51bSB1aW9fc2Vn
IHsKIAlVSU9fVVNFUlNQQUNFLAkJLyogZnJvbSB1c2VyIGRhdGEgc3BhY2UgKi8KQEAgLTcyLDcg
KzcyLDcgQEAgZW51bSB1aW9fc2VnIHsKICNlbmRpZgogCiBzdHJ1Y3QgcHJvYyB7Ci0gICAgaW50
IHN0dWI7IC8qIHN0cnVjdCBwcm9jIGlzIGEgZHVtbXkgZm9yIF9fVXNlcnNwYWNlX18gKi8KKwlp
bnQgc3R1YjsgLyogc3RydWN0IHByb2MgaXMgYSBkdW1teSBmb3IgX19Vc2Vyc3BhY2VfXyAqLwog
fTsKIAogTUFMTE9DX0RFQ0xBUkUoTV9BQ0NGKTsKQEAgLTgzLDEyICs4MywxMiBAQCBNQUxMT0Nf
REVDTEFSRShNX1NPTkFNRSk7CiAgKiBSZW1vdmluZyBzdHJ1Y3QgdGhyZWFkICp1aW9fdGQ7ICAg
IG93bmVyIGZpZWxkCiAqLwogc3RydWN0IHVpbyB7Ci0gICAgc3RydWN0CWlvdmVjICp1aW9faW92
OwkJLyogc2NhdHRlci9nYXRoZXIgbGlzdCAqLwotICAgIGludAkJdWlvX2lvdmNudDsJCS8qIGxl
bmd0aCBvZiBzY2F0dGVyL2dhdGhlciBsaXN0ICovCi0gICAgb2ZmX3QJdWlvX29mZnNldDsJCS8q
IG9mZnNldCBpbiB0YXJnZXQgb2JqZWN0ICovCi0gICAgc3NpemVfdCAJdWlvX3Jlc2lkOwkJLyog
cmVtYWluaW5nIGJ5dGVzIHRvIHByb2Nlc3MgKi8KLSAgICBlbnVtCXVpb19zZWcgdWlvX3NlZ2Zs
ZzsJLyogYWRkcmVzcyBzcGFjZSAqLwotICAgIGVudW0JdWlvX3J3IHVpb19ydzsJCS8qIG9wZXJh
dGlvbiAqLworCXN0cnVjdAlpb3ZlYyAqdWlvX2lvdjsJCS8qIHNjYXR0ZXIvZ2F0aGVyIGxpc3Qg
Ki8KKwlpbnQJCXVpb19pb3ZjbnQ7CQkvKiBsZW5ndGggb2Ygc2NhdHRlci9nYXRoZXIgbGlzdCAq
LworCW9mZl90CXVpb19vZmZzZXQ7CQkvKiBvZmZzZXQgaW4gdGFyZ2V0IG9iamVjdCAqLworCXNz
aXplX3QgCXVpb19yZXNpZDsJCS8qIHJlbWFpbmluZyBieXRlcyB0byBwcm9jZXNzICovCisJZW51
bQl1aW9fc2VnIHVpb19zZWdmbGc7CS8qIGFkZHJlc3Mgc3BhY2UgKi8KKwllbnVtCXVpb19ydyB1
aW9fcnc7CQkvKiBvcGVyYXRpb24gKi8KIH07CiAKIApAQCAtMTAwLDkgKzEwMCwxMSBAQCBzdHJ1
Y3QgdWlvIHsKICAqIGhhbmRsZSBvbiBwcm90b2NvbCBhbmQgcG9pbnRlciB0byBwcm90b2NvbAog
ICogcHJpdmF0ZSBkYXRhIGFuZCBlcnJvciBpbmZvcm1hdGlvbi4KICAqLwotI2lmIGRlZmluZWQg
KF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfV0lOMzIpCiAjZGVmaW5lIEFG
X1JPVVRFICAxNworI2lmICFkZWZpbmVkKF9fTUlOR1czMl9fKQogdHlwZWRlZiBfX2ludDMyIHBp
ZF90OworI2VuZGlmCiB0eXBlZGVmIHVuc2lnbmVkIF9faW50MzIgdWlkX3Q7CiBlbnVtIHNpZ1R5
cGUgewogCVNJR05BTCA9IDAsCkBAIC0yMzUsNyArMjM3LDcgQEAgc3RydWN0IHNvY2tldCB7CiAg
KiBhdm9pZCBkZWZpbmluZyBhIGxvY2sgb3JkZXIgYmV0d2VlbiBsaXN0ZW4gYW5kIGFjY2VwdCBz
b2NrZXRzCiAgKiB1bnRpbCBzdWNoIHRpbWUgYXMgaXQgcHJvdmVzIHRvIGJlIGEgZ29vZCBpZGVh
LgogICovCi0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQo
X1dJTjMyKQogZXh0ZXJuIHVzZXJsYW5kX211dGV4X3QgYWNjZXB0X210eDsKIGV4dGVybiB1c2Vy
bGFuZF9jb25kX3QgYWNjZXB0X2NvbmQ7CiAjZGVmaW5lIEFDQ0VQVF9MT0NLX0FTU0VSVCgpCkBA
IC0yNzAsNyArMjcyLDcgQEAgZXh0ZXJuIHVzZXJsYW5kX2NvbmRfdCBhY2NlcHRfY29uZDsKICAq
IGJ1ZmZlci4KICAqLwogI2RlZmluZQlTT0NLQlVGX01UWChfc2IpICgmKF9zYiktPnNiX210eCkK
LSNpZiBkZWZpbmVkIChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX1dJTjMy
KQogI2RlZmluZSBTT0NLQlVGX0xPQ0tfSU5JVChfc2IsIF9uYW1lKSBcCiAJSW5pdGlhbGl6ZUNy
aXRpY2FsU2VjdGlvbihTT0NLQlVGX01UWChfc2IpKQogI2RlZmluZSBTT0NLQlVGX0xPQ0tfREVT
VFJPWShfc2IpIERlbGV0ZUNyaXRpY2FsU2VjdGlvbihTT0NLQlVGX01UWChfc2IpKQpAQCAtMzY1
LDMzOCArMzY3LDExIEBAIGV4dGVybiB1c2VybGFuZF9jb25kX3QgYWNjZXB0X2NvbmQ7CiAjZGVm
aW5lCVNRX0NPTVAJCQkweDEwMDAJLyogdW5hY2NlcHRlZCwgY29tcGxldGUgY29ubmVjdGlvbiAq
LwogCiAvKgotICogRXh0ZXJuYWxpemVkIGZvcm0gb2Ygc3RydWN0IHNvY2tldCB1c2VkIGJ5IHRo
ZSBzeXNjdGwoMykgaW50ZXJmYWNlLgotICovCi1zdHJ1Y3QgeHNvY2tldCB7Ci0Jc2l6ZV90CXhz
b19sZW47CS8qIGxlbmd0aCBvZiB0aGlzIHN0cnVjdHVyZSAqLwotCXN0cnVjdAlzb2NrZXQgKnhz
b19zbzsJLyogbWFrZXMgYSBjb252ZW5pZW50IGhhbmRsZSBzb21ldGltZXMgKi8KLQlzaG9ydAlz
b190eXBlOwotCXNob3J0CXNvX29wdGlvbnM7Ci0Jc2hvcnQJc29fbGluZ2VyOwotCXNob3J0CXNv
X3N0YXRlOwotCWNhZGRyX3QJc29fcGNiOwkJLyogYW5vdGhlciBjb252ZW5pZW50IGhhbmRsZSAq
LwotCWludAl4c29fcHJvdG9jb2w7Ci0JaW50CXhzb19mYW1pbHk7Ci0JdV9zaG9ydAlzb19xbGVu
OwotCXVfc2hvcnQJc29faW5jcWxlbjsKLQl1X3Nob3J0CXNvX3FsaW1pdDsKLQlzaG9ydAlzb190
aW1lbzsKLQl1X3Nob3J0CXNvX2Vycm9yOwotCXBpZF90CXNvX3BnaWQ7Ci0JdV9sb25nCXNvX29v
Ym1hcms7Ci0Jc3RydWN0IHhzb2NrYnVmIHsKLQkJdV9pbnQJc2JfY2M7Ci0JCXVfaW50CXNiX2hp
d2F0OwotCQl1X2ludAlzYl9tYmNudDsKLQkJdV9pbnQJc2JfbWJtYXg7Ci0JCWludAlzYl9sb3dh
dDsKLQkJaW50CXNiX3RpbWVvOwotCQlzaG9ydAlzYl9mbGFnczsKLQl9IHNvX3Jjdiwgc29fc25k
OwotCXVpZF90CXNvX3VpZDsJCS8qIFhYWCAqLwotfTsKLQotI2lmIGRlZmluZWQoX0tFUk5FTCkK
LQotCi0vKgotICogTWFjcm9zIGZvciBzb2NrZXRzIGFuZCBzb2NrZXQgYnVmZmVyaW5nLgotICov
Ci0KLS8qCi0gKiBEbyB3ZSBuZWVkIHRvIG5vdGlmeSB0aGUgb3RoZXIgc2lkZSB3aGVuIEkvTyBp
cyBwb3NzaWJsZT8KLSAqLwotI2RlZmluZQlzYl9ub3RpZnkoc2IpCSgoKHNiKS0+c2JfZmxhZ3Mg
JiAoU0JfV0FJVCB8IFNCX1NFTCB8IFNCX0FTWU5DIHwgXAotICAgIFNCX1VQQ0FMTCB8IFNCX0FJ
TyB8IFNCX0tOT1RFKSkgIT0gMCkKLQotLyoKLSAqIEhvdyBtdWNoIHNwYWNlIGlzIHRoZXJlIGlu
IGEgc29ja2V0IGJ1ZmZlciAoc28tPnNvX3NuZCBvciBzby0+c29fcmN2KT8KLSAqIFRoaXMgaXMg
cHJvYmxlbWF0aWNhbCBpZiB0aGUgZmllbGRzIGFyZSB1bnNpZ25lZCwgYXMgdGhlIHNwYWNlIG1p
Z2h0Ci0gKiBzdGlsbCBiZSBuZWdhdGl2ZSAoY2MgPiBoaXdhdCBvciBtYmNudCA+IG1ibWF4KS4g
IFNob3VsZCBkZXRlY3QKLSAqIG92ZXJmbG93IGFuZCByZXR1cm4gMC4gIFNob3VsZCB1c2UgImxt
aW4iIGJ1dCBpdCBkb2Vzbid0IGV4aXN0IG5vdy4KLSAqLwotI2RlZmluZQlzYnNwYWNlKHNiKSBc
Ci0gICAgKChsb25nKSBpbWluKChpbnQpKChzYiktPnNiX2hpd2F0IC0gKHNiKS0+c2JfY2MpLCBc
Ci0JIChpbnQpKChzYiktPnNiX21ibWF4IC0gKHNiKS0+c2JfbWJjbnQpKSkKLQotLyogZG8gd2Ug
aGF2ZSB0byBzZW5kIGFsbCBhdCBvbmNlIG9uIGEgc29ja2V0PyAqLwotI2RlZmluZQlzb3NlbmRh
bGxhdG9uY2Uoc28pIFwKLSAgICAoKHNvKS0+c29fcHJvdG8tPnByX2ZsYWdzICYgUFJfQVRPTUlD
KQotCi0vKiBjYW4gd2UgcmVhZCBzb21ldGhpbmcgZnJvbSBzbz8gKi8KLSNkZWZpbmUJc29yZWFk
YWJsZShzbykgXAotICAgICgoc28pLT5zb19yY3Yuc2JfY2MgPj0gKHNvKS0+c29fcmN2LnNiX2xv
d2F0IHx8IFwKLQkoKHNvKS0+c29fcmN2LnNiX3N0YXRlICYgU0JTX0NBTlRSQ1ZNT1JFKSB8fCBc
Ci0JIVRBSUxRX0VNUFRZKCYoc28pLT5zb19jb21wKSB8fCAoc28pLT5zb19lcnJvcikKLQotLyog
Y2FuIHdlIHdyaXRlIHNvbWV0aGluZyB0byBzbz8gKi8KLSNkZWZpbmUJc293cml0ZWFibGUoc28p
IFwKLSAgICAoKHNic3BhY2UoJihzbyktPnNvX3NuZCkgPj0gKHNvKS0+c29fc25kLnNiX2xvd2F0
ICYmIFwKLQkoKChzbyktPnNvX3N0YXRlJlNTX0lTQ09OTkVDVEVEKSB8fCBcCi0JICAoKHNvKS0+
c29fcHJvdG8tPnByX2ZsYWdzJlBSX0NPTk5SRVFVSVJFRCk9PTApKSB8fCBcCi0gICAgICgoc28p
LT5zb19zbmQuc2Jfc3RhdGUgJiBTQlNfQ0FOVFNFTkRNT1JFKSB8fCBcCi0gICAgIChzbyktPnNv
X2Vycm9yKQotCi0vKiBhZGp1c3QgY291bnRlcnMgaW4gc2IgcmVmbGVjdGluZyBhbGxvY2F0aW9u
IG9mIG0gKi8KLSNkZWZpbmUJc2JhbGxvYyhzYiwgbSkgeyBcCi0JKHNiKS0+c2JfY2MgKz0gKG0p
LT5tX2xlbjsgXAotCWlmICgobSktPm1fdHlwZSAhPSBNVF9EQVRBICYmIChtKS0+bV90eXBlICE9
IE1UX09PQkRBVEEpIFwKLQkJKHNiKS0+c2JfY3RsICs9IChtKS0+bV9sZW47IFwKLQkoc2IpLT5z
Yl9tYmNudCArPSBNU0laRTsgXAotCWlmICgobSktPm1fZmxhZ3MgJiBNX0VYVCkgXAotCQkoc2Ip
LT5zYl9tYmNudCArPSAobSktPm1fZXh0LmV4dF9zaXplOyBcCi19Ci0KLS8qIGFkanVzdCBjb3Vu
dGVycyBpbiBzYiByZWZsZWN0aW5nIGZyZWVpbmcgb2YgbSAqLwotI2RlZmluZQlzYmZyZWUoc2Is
IG0pIHsgXAotCShzYiktPnNiX2NjIC09IChtKS0+bV9sZW47IFwKLQlpZiAoKG0pLT5tX3R5cGUg
IT0gTVRfREFUQSAmJiAobSktPm1fdHlwZSAhPSBNVF9PT0JEQVRBKSBcCi0JCShzYiktPnNiX2N0
bCAtPSAobSktPm1fbGVuOyBcCi0JKHNiKS0+c2JfbWJjbnQgLT0gTVNJWkU7IFwKLQlpZiAoKG0p
LT5tX2ZsYWdzICYgTV9FWFQpIFwKLQkJKHNiKS0+c2JfbWJjbnQgLT0gKG0pLT5tX2V4dC5leHRf
c2l6ZTsgXAotCWlmICgoc2IpLT5zYl9zbmRwdHIgPT0gKG0pKSB7IFwKLQkJKHNiKS0+c2Jfc25k
cHRyID0gTlVMTDsgXAotCQkoc2IpLT5zYl9zbmRwdHJvZmYgPSAwOyBcCi0JfSBcCi0JaWYgKChz
YiktPnNiX3NuZHB0cm9mZiAhPSAwKSBcCi0JCShzYiktPnNiX3NuZHB0cm9mZiAtPSAobSktPm1f
bGVuOyBcCi19Ci0KLS8qCi0gKiBzb3JlZigpL3NvcmVsZSgpIHJlZi1jb3VudCB0aGUgc29ja2V0
IHN0cnVjdHVyZS4gIE5vdGUgdGhhdCB5b3UgbXVzdAotICogc3RpbGwgZXhwbGljaXRseSBjbG9z
ZSB0aGUgc29ja2V0LCBidXQgdGhlIGxhc3QgcmVmIGNvdW50IHdpbGwgZnJlZQotICogdGhlIHN0
cnVjdHVyZS4KLSAqLwotI2RlZmluZQlzb3JlZihzbykgZG8gewkJCQkJCQlcCi0JU09DS19MT0NL
X0FTU0VSVChzbyk7CQkJCQkJXAotCSsrKHNvKS0+c29fY291bnQ7CQkJCQkJXAotfSB3aGlsZSAo
MCkKLQotI2RlZmluZQlzb3JlbGUoc28pIGRvIHsJCQkJCQkJXAotCUFDQ0VQVF9MT0NLX0FTU0VS
VCgpOwkJCQkJCVwKLQlTT0NLX0xPQ0tfQVNTRVJUKHNvKTsJCQkJCQlcCi0JS0FTU0VSVCgoc28p
LT5zb19jb3VudCA+IDAsICgic29yZWxlIikpOwkJCVwKLQlpZiAoLS0oc28pLT5zb19jb3VudCA9
PSAwKQkJCQkJXAotCQlzb2ZyZWUoc28pOwkJCQkJCVwKLQllbHNlIHsJCQkJCQkJCVwKLQkJU09D
S19VTkxPQ0soc28pOwkJCQkJXAotCQlBQ0NFUFRfVU5MT0NLKCk7CQkJCQlcCi0JfQkJCQkJCQkJ
XAotfSB3aGlsZSAoMCkKLQotI2RlZmluZQlzb3RyeWZyZWUoc28pIGRvIHsJCQkJCQlcCi0JQUND
RVBUX0xPQ0tfQVNTRVJUKCk7CQkJCQkJXAotCVNPQ0tfTE9DS19BU1NFUlQoc28pOwkJCQkJCVwK
LQlpZiAoKHNvKS0+c29fY291bnQgPT0gMCkJCQkJCVwKLQkJc29mcmVlKHNvKTsJCQkJCQlcCi0J
ZWxzZSB7CQkJCQkJCQlcCi0JCVNPQ0tfVU5MT0NLKHNvKTsJCQkJCVwKLQkJQUNDRVBUX1VOTE9D
SygpOwkJCQkJXAotCX0JCQkJCQkJCVwKLX0gd2hpbGUoMCkKLQotLyoKLSAqIEluIHNvcndha2V1
cCgpIGFuZCBzb3d3YWtldXAoKSwgYWNxdWlyZSB0aGUgc29ja2V0IGJ1ZmZlciBsb2NrIHRvCi0g
KiBhdm9pZCBhIG5vbi1hdG9taWMgdGVzdC1hbmQtd2FrZXVwLiAgSG93ZXZlciwgc293YWtldXAg
aXMKLSAqIHJlc3BvbnNpYmxlIGZvciByZWxlYXNpbmcgdGhlIGxvY2sgaWYgaXQgaXMgY2FsbGVk
LiAgV2UgdW5sb2NrIG9ubHkKLSAqIGlmIHdlIGRvbid0IGNhbGwgaW50byBzb3dha2V1cC4gIElm
IGFueSBjb2RlIGlzIGludHJvZHVjZWQgdGhhdAotICogZGlyZWN0bHkgaW52b2tlcyB0aGUgdW5k
ZXJseWluZyBzb3dha2V1cCgpIHByaW1pdGl2ZXMsIGl0IG11c3QKLSAqIG1haW50YWluIHRoZSBz
YW1lIHNlbWFudGljcy4KLSAqLwotI2RlZmluZQlzb3J3YWtldXBfbG9ja2VkKHNvKSBkbyB7CQkJ
CQlcCi0JU09DS0JVRl9MT0NLX0FTU0VSVCgmKHNvKS0+c29fcmN2KTsJCQkJXAotCWlmIChzYl9u
b3RpZnkoJihzbyktPnNvX3JjdikpCQkJCQlcCi0JCXNvd2FrZXVwKChzbyksICYoc28pLT5zb19y
Y3YpOwkgCQkJXAotCWVsc2UJCQkJCQkJCVwKLQkJU09DS0JVRl9VTkxPQ0soJihzbyktPnNvX3Jj
dik7CQkJCVwKLX0gd2hpbGUgKDApCi0KLSNkZWZpbmUJc29yd2FrZXVwKHNvKSBkbyB7CQkJCQkJ
XAotCVNPQ0tCVUZfTE9DSygmKHNvKS0+c29fcmN2KTsJCQkJCVwKLQlzb3J3YWtldXBfbG9ja2Vk
KHNvKTsJCQkJCQlcCi19IHdoaWxlICgwKQotCi0jZGVmaW5lCXNvd3dha2V1cF9sb2NrZWQoc28p
IGRvIHsJCQkJCVwKLQlTT0NLQlVGX0xPQ0tfQVNTRVJUKCYoc28pLT5zb19zbmQpOwkJCQlcCi0J
aWYgKHNiX25vdGlmeSgmKHNvKS0+c29fc25kKSkJCQkJCVwKLQkJc293YWtldXAoKHNvKSwgJihz
byktPnNvX3NuZCk7IAkJCQlcCi0JZWxzZQkJCQkJCQkJXAotCQlTT0NLQlVGX1VOTE9DSygmKHNv
KS0+c29fc25kKTsJCQkJXAotfSB3aGlsZSAoMCkKLQotI2RlZmluZQlzb3d3YWtldXAoc28pIGRv
IHsJCQkJCQlcCi0JU09DS0JVRl9MT0NLKCYoc28pLT5zb19zbmQpOwkJCQkJXAotCXNvd3dha2V1
cF9sb2NrZWQoc28pOwkJCQkJCVwKLX0gd2hpbGUgKDApCi0KLS8qCi0gKiBBcmd1bWVudCBzdHJ1
Y3R1cmUgZm9yIHNvc2V0b3B0IGV0IHNlcS4gIFRoaXMgaXMgaW4gdGhlIEtFUk5FTAotICogc2Vj
dGlvbiBiZWNhdXNlIGl0IHdpbGwgbmV2ZXIgYmUgdmlzaWJsZSB0byB1c2VyIGNvZGUuCi0gKi8K
LWVudW0gc29wdF9kaXIgeyBTT1BUX0dFVCwgU09QVF9TRVQgfTsKLXN0cnVjdCBzb2Nrb3B0IHsK
LQllbnVtCXNvcHRfZGlyIHNvcHRfZGlyOyAvKiBpcyB0aGlzIGEgZ2V0IG9yIGEgc2V0PyAqLwot
CWludAlzb3B0X2xldmVsOwkvKiBzZWNvbmQgYXJnIG9mIFtnc11ldHNvY2tvcHQgKi8KLQlpbnQJ
c29wdF9uYW1lOwkvKiB0aGlyZCBhcmcgb2YgW2dzXWV0c29ja29wdCAqLwotCXZvaWQgICAqc29w
dF92YWw7CS8qIGZvdXJ0aCBhcmcgb2YgW2dzXWV0c29ja29wdCAqLwotCXNpemVfdAlzb3B0X3Zh
bHNpemU7CS8qIChhbG1vc3QpIGZpZnRoIGFyZyBvZiBbZ3NdZXRzb2Nrb3B0ICovCi0Jc3RydWN0
CXRocmVhZCAqc29wdF90ZDsgLyogY2FsbGluZyB0aHJlYWQgb3IgbnVsbCBpZiBrZXJuZWwgKi8K
LX07Ci0KLXN0cnVjdCBhY2NlcHRfZmlsdGVyIHsKLQljaGFyCWFjY2ZfbmFtZVsxNl07Ci0Jdm9p
ZAkoKmFjY2ZfY2FsbGJhY2spCi0JCShzdHJ1Y3Qgc29ja2V0ICpzbywgdm9pZCAqYXJnLCBpbnQg
d2FpdGZsYWcpOwotCXZvaWQgKgkoKmFjY2ZfY3JlYXRlKQotCQkoc3RydWN0IHNvY2tldCAqc28s
IGNoYXIgKmFyZyk7Ci0Jdm9pZAkoKmFjY2ZfZGVzdHJveSkKLQkJKHN0cnVjdCBzb2NrZXQgKnNv
KTsKLQlTTElTVF9FTlRSWShhY2NlcHRfZmlsdGVyKSBhY2NmX25leHQ7Ci19OwotCi1leHRlcm4g
aW50CW1heHNvY2tldHM7Ci1leHRlcm4gdV9sb25nCXNiX21heDsKLWV4dGVybiBzdHJ1Y3QgdW1h
X3pvbmUgKnNvY2tldF96b25lOwotZXh0ZXJuIHNvX2dlbl90IHNvX2dlbmNudDsKLQotc3RydWN0
IG1idWY7Ci1zdHJ1Y3Qgc29ja2FkZHI7Ci1zdHJ1Y3QgdWNyZWQ7Ci1zdHJ1Y3QgdWlvOwotCi0v
KgotICogRnJvbSB1aXBjX3NvY2tldCBhbmQgZnJpZW5kcwotICovCi1pbnQJZG9fZ2V0b3B0X2Fj
Y2VwdF9maWx0ZXIoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2Nrb3B0ICpzb3B0KTsKLWlu
dAlkb19zZXRvcHRfYWNjZXB0X2ZpbHRlcihzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2tv
cHQgKnNvcHQpOwotaW50CXNvX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBsZXZl
bCwgaW50IG9wdG5hbWUsCi0JICAgIHZvaWQgKm9wdHZhbCwgc2l6ZV90IG9wdGxlbik7Ci1pbnQJ
c29ja2FyZ3Moc3RydWN0IG1idWYgKiptcCwgY2FkZHJfdCBidWYsIGludCBidWZsZW4sIGludCB0
eXBlKTsKLWludAlnZXRzb2NrYWRkcihzdHJ1Y3Qgc29ja2FkZHIgKipuYW1wLCBjYWRkcl90IHVh
ZGRyLCBzaXplX3QgbGVuKTsKLXZvaWQJc2JhcHBlbmQoc3RydWN0IHNvY2tidWYgKnNiLCBzdHJ1
Y3QgbWJ1ZiAqbSk7Ci12b2lkCXNiYXBwZW5kX2xvY2tlZChzdHJ1Y3Qgc29ja2J1ZiAqc2IsIHN0
cnVjdCBtYnVmICptKTsKLXZvaWQJc2JhcHBlbmRzdHJlYW0oc3RydWN0IHNvY2tidWYgKnNiLCBz
dHJ1Y3QgbWJ1ZiAqbSk7Ci12b2lkCXNiYXBwZW5kc3RyZWFtX2xvY2tlZChzdHJ1Y3Qgc29ja2J1
ZiAqc2IsIHN0cnVjdCBtYnVmICptKTsKLWludAlzYmFwcGVuZGFkZHIoc3RydWN0IHNvY2tidWYg
KnNiLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKmFzYSwKLQkgICAgc3RydWN0IG1idWYgKm0wLCBz
dHJ1Y3QgbWJ1ZiAqY29udHJvbCk7Ci1pbnQJc2JhcHBlbmRhZGRyX2xvY2tlZChzdHJ1Y3Qgc29j
a2J1ZiAqc2IsIGNvbnN0IHN0cnVjdCBzb2NrYWRkciAqYXNhLAotCSAgICBzdHJ1Y3QgbWJ1ZiAq
bTAsIHN0cnVjdCBtYnVmICpjb250cm9sKTsKLWludAlzYmFwcGVuZGNvbnRyb2woc3RydWN0IHNv
Y2tidWYgKnNiLCBzdHJ1Y3QgbWJ1ZiAqbTAsCi0JICAgIHN0cnVjdCBtYnVmICpjb250cm9sKTsK
LWludAlzYmFwcGVuZGNvbnRyb2xfbG9ja2VkKHN0cnVjdCBzb2NrYnVmICpzYiwgc3RydWN0IG1i
dWYgKm0wLAotCSAgICBzdHJ1Y3QgbWJ1ZiAqY29udHJvbCk7Ci12b2lkCXNiYXBwZW5kcmVjb3Jk
KHN0cnVjdCBzb2NrYnVmICpzYiwgc3RydWN0IG1idWYgKm0wKTsKLXZvaWQJc2JhcHBlbmRyZWNv
cmRfbG9ja2VkKHN0cnVjdCBzb2NrYnVmICpzYiwgc3RydWN0IG1idWYgKm0wKTsKLXZvaWQJc2Jj
aGVjayhzdHJ1Y3Qgc29ja2J1ZiAqc2IpOwotdm9pZAlzYmNvbXByZXNzKHN0cnVjdCBzb2NrYnVm
ICpzYiwgc3RydWN0IG1idWYgKm0sIHN0cnVjdCBtYnVmICpuKTsKLXN0cnVjdCBtYnVmICoKLQlz
YmNyZWF0ZWNvbnRyb2woY2FkZHJfdCBwLCBpbnQgc2l6ZSwgaW50IHR5cGUsIGludCBsZXZlbCk7
Ci12b2lkCXNiZGVzdHJveShzdHJ1Y3Qgc29ja2J1ZiAqc2IsIHN0cnVjdCBzb2NrZXQgKnNvKTsK
LXZvaWQJc2Jkcm9wKHN0cnVjdCBzb2NrYnVmICpzYiwgaW50IGxlbik7Ci12b2lkCXNiZHJvcF9s
b2NrZWQoc3RydWN0IHNvY2tidWYgKnNiLCBpbnQgbGVuKTsKLXZvaWQJc2Jkcm9wcmVjb3JkKHN0
cnVjdCBzb2NrYnVmICpzYik7Ci12b2lkCXNiZHJvcHJlY29yZF9sb2NrZWQoc3RydWN0IHNvY2ti
dWYgKnNiKTsKLXZvaWQJc2JmbHVzaChzdHJ1Y3Qgc29ja2J1ZiAqc2IpOwotdm9pZAlzYmZsdXNo
X2xvY2tlZChzdHJ1Y3Qgc29ja2J1ZiAqc2IpOwotdm9pZAlzYnJlbGVhc2Uoc3RydWN0IHNvY2ti
dWYgKnNiLCBzdHJ1Y3Qgc29ja2V0ICpzbyk7Ci12b2lkCXNicmVsZWFzZV9sb2NrZWQoc3RydWN0
IHNvY2tidWYgKnNiLCBzdHJ1Y3Qgc29ja2V0ICpzbyk7Ci1pbnQJc2JyZXNlcnZlKHN0cnVjdCBz
b2NrYnVmICpzYiwgdV9sb25nIGNjLCBzdHJ1Y3Qgc29ja2V0ICpzbywKLQkgICAgc3RydWN0IHRo
cmVhZCAqdGQpOwotaW50CXNicmVzZXJ2ZV9sb2NrZWQoc3RydWN0IHNvY2tidWYgKnNiLCB1X2xv
bmcgY2MsIHN0cnVjdCBzb2NrZXQgKnNvLAotCSAgICBzdHJ1Y3QgdGhyZWFkICp0ZCk7Ci1zdHJ1
Y3QgbWJ1ZiAqCi0Jc2JzbmRwdHIoc3RydWN0IHNvY2tidWYgKnNiLCB1X2ludCBvZmYsIHVfaW50
IGxlbiwgdV9pbnQgKm1vZmYpOwotdm9pZAlzYnRveHNvY2tidWYoc3RydWN0IHNvY2tidWYgKnNi
LCBzdHJ1Y3QgeHNvY2tidWYgKnhzYik7Ci1pbnQJc2J3YWl0KHN0cnVjdCBzb2NrYnVmICpzYik7
Ci1pbnQJc2Jsb2NrKHN0cnVjdCBzb2NrYnVmICpzYiwgaW50IGZsYWdzKTsKLXZvaWQJc2J1bmxv
Y2soc3RydWN0IHNvY2tidWYgKnNiKTsKLXZvaWQJc29hYm9ydChzdHJ1Y3Qgc29ja2V0ICpzbyk7
Ci1pbnQJc29hY2NlcHQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqKm5hbSk7
Ci1pbnQJc29jaGVja3VpZChzdHJ1Y3Qgc29ja2V0ICpzbywgdWlkX3QgdWlkKTsKLWludAlzb2Jp
bmQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqbmFtLCBzdHJ1Y3QgdGhyZWFk
ICp0ZCk7Ci12b2lkCXNvY2FudHJjdm1vcmUoc3RydWN0IHNvY2tldCAqc28pOwotdm9pZAlzb2Nh
bnRyY3Ztb3JlX2xvY2tlZChzdHJ1Y3Qgc29ja2V0ICpzbyk7Ci12b2lkCXNvY2FudHNlbmRtb3Jl
KHN0cnVjdCBzb2NrZXQgKnNvKTsKLXZvaWQJc29jYW50c2VuZG1vcmVfbG9ja2VkKHN0cnVjdCBz
b2NrZXQgKnNvKTsKLWludAlzb2Nsb3NlKHN0cnVjdCBzb2NrZXQgKnNvKTsKLWludAlzb2Nvbm5l
Y3Qoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqbmFtLCBzdHJ1Y3QgdGhyZWFk
ICp0ZCk7Ci1pbnQJc29jb25uZWN0MihzdHJ1Y3Qgc29ja2V0ICpzbzEsIHN0cnVjdCBzb2NrZXQg
KnNvMik7Ci1pbnQJc29jb3dfc2V0dXAoc3RydWN0IG1idWYgKm0wLCBzdHJ1Y3QgdWlvICp1aW8p
OwotaW50CXNvY3JlYXRlKGludCBkb20sIHN0cnVjdCBzb2NrZXQgKiphc28sIGludCB0eXBlLCBp
bnQgcHJvdG8sCi0JICAgIHN0cnVjdCB1Y3JlZCAqY3JlZCwgc3RydWN0IHRocmVhZCAqdGQpOwot
aW50CXNvZGlzY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbyk7Ci1zdHJ1Y3QJc29ja2FkZHIgKnNv
ZHVwc29ja2FkZHIoY29uc3Qgc3RydWN0IHNvY2thZGRyICpzYSwgaW50IG1mbGFncyk7Ci12b2lk
CXNvZnJlZShzdHJ1Y3Qgc29ja2V0ICpzbyk7Ci1pbnQJc29nZXRvcHQoc3RydWN0IHNvY2tldCAq
c28sIHN0cnVjdCBzb2Nrb3B0ICpzb3B0KTsKLXZvaWQJc29oYXNvdXRvZmJhbmQoc3RydWN0IHNv
Y2tldCAqc28pOwotdm9pZAlzb2lzY29ubmVjdGVkKHN0cnVjdCBzb2NrZXQgKnNvKTsKLXZvaWQJ
c29pc2Nvbm5lY3Rpbmcoc3RydWN0IHNvY2tldCAqc28pOwotdm9pZAlzb2lzZGlzY29ubmVjdGVk
KHN0cnVjdCBzb2NrZXQgKnNvKTsKLXZvaWQJc29pc2Rpc2Nvbm5lY3Rpbmcoc3RydWN0IHNvY2tl
dCAqc28pOwotaW50CXNvbGlzdGVuKHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgYmFja2xvZywgc3Ry
dWN0IHRocmVhZCAqdGQpOwotdm9pZAlzb2xpc3Rlbl9wcm90byhzdHJ1Y3Qgc29ja2V0ICpzbywg
aW50IGJhY2tsb2cpOwotaW50CXNvbGlzdGVuX3Byb3RvX2NoZWNrKHN0cnVjdCBzb2NrZXQgKnNv
KTsKLXN0cnVjdCBzb2NrZXQgKgotCXNvbmV3Y29ubihzdHJ1Y3Qgc29ja2V0ICpoZWFkLCBpbnQg
Y29ubnN0YXR1cyk7Ci1pbnQJc29vcHRjb3B5aW4oc3RydWN0IHNvY2tvcHQgKnNvcHQsIHZvaWQg
KmJ1Ziwgc2l6ZV90IGxlbiwgc2l6ZV90IG1pbmxlbik7Ci1pbnQJc29vcHRjb3B5b3V0KHN0cnVj
dCBzb2Nrb3B0ICpzb3B0LCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBsZW4pOwotCi0vKiBYWFg7
IHByZXBhcmUgbWJ1ZiBmb3IgKF9fRnJlZUJTRF9fIDwgMykgcm91dGluZXMuICovCi1pbnQJc29v
cHRfZ2V0bShzdHJ1Y3Qgc29ja29wdCAqc29wdCwgc3RydWN0IG1idWYgKiptcCk7Ci1pbnQJc29v
cHRfbWNvcHlpbihzdHJ1Y3Qgc29ja29wdCAqc29wdCwgc3RydWN0IG1idWYgKm0pOwotaW50CXNv
b3B0X21jb3B5b3V0KHN0cnVjdCBzb2Nrb3B0ICpzb3B0LCBzdHJ1Y3QgbWJ1ZiAqbSk7Ci0KLWlu
dAlzb3BvbGwoc3RydWN0IHNvY2tldCAqc28sIGludCBldmVudHMsIHN0cnVjdCB1Y3JlZCAqYWN0
aXZlX2NyZWQsCi0JICAgIHN0cnVjdCB0aHJlYWQgKnRkKTsKLWludAlzb3BvbGxfZ2VuZXJpYyhz
dHJ1Y3Qgc29ja2V0ICpzbywgaW50IGV2ZW50cywKLQkgICAgc3RydWN0IHVjcmVkICphY3RpdmVf
Y3JlZCwgc3RydWN0IHRocmVhZCAqdGQpOwotaW50CXNvcmVjZWl2ZShzdHJ1Y3Qgc29ja2V0ICpz
bywgc3RydWN0IHNvY2thZGRyICoqcGFkZHIsIHN0cnVjdCB1aW8gKnVpbywKLQkgICAgc3RydWN0
IG1idWYgKiptcDAsIHN0cnVjdCBtYnVmICoqY29udHJvbHAsIGludCAqZmxhZ3NwKTsKLWludAlz
b3JlY2VpdmVfZ2VuZXJpYyhzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICoqcGFk
ZHIsCi0JICAgIHN0cnVjdCB1aW8gKnVpbywgc3RydWN0IG1idWYgKiptcDAsIHN0cnVjdCBtYnVm
ICoqY29udHJvbHAsCi0JICAgIGludCAqZmxhZ3NwKTsKLWludAlzb3Jlc2VydmUoc3RydWN0IHNv
Y2tldCAqc28sIHVfbG9uZyBzbmRjYywgdV9sb25nIHJjdmNjKTsKLXZvaWQJc29yZmx1c2goc3Ry
dWN0IHNvY2tldCAqc28pOwotaW50CXNvc2VuZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNv
Y2thZGRyICphZGRyLCBzdHJ1Y3QgdWlvICp1aW8sCi0JICAgIHN0cnVjdCBtYnVmICp0b3AsIHN0
cnVjdCBtYnVmICpjb250cm9sLCBpbnQgZmxhZ3MsCi0JICAgIHN0cnVjdCB0aHJlYWQgKnRkKTsK
LWludAlzb3NlbmRfZGdyYW0oc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqYWRk
ciwKLQkgICAgc3RydWN0IHVpbyAqdWlvLCBzdHJ1Y3QgbWJ1ZiAqdG9wLCBzdHJ1Y3QgbWJ1ZiAq
Y29udHJvbCwKLQkgICAgaW50IGZsYWdzLCBzdHJ1Y3QgdGhyZWFkICp0ZCk7Ci1pbnQJc29zZW5k
X2dlbmVyaWMoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqYWRkciwKLQkgICAg
c3RydWN0IHVpbyAqdWlvLCBzdHJ1Y3QgbWJ1ZiAqdG9wLCBzdHJ1Y3QgbWJ1ZiAqY29udHJvbCwK
LQkgICAgaW50IGZsYWdzLCBzdHJ1Y3QgdGhyZWFkICp0ZCk7Ci1pbnQJc29zZXRvcHQoc3RydWN0
IHNvY2tldCAqc28sIHN0cnVjdCBzb2Nrb3B0ICpzb3B0KTsKLWludAlzb3NodXRkb3duKHN0cnVj
dCBzb2NrZXQgKnNvLCBpbnQgaG93KTsKLXZvaWQJc290b3hzb2NrZXQoc3RydWN0IHNvY2tldCAq
c28sIHN0cnVjdCB4c29ja2V0ICp4c28pOwotdm9pZAlzb3dha2V1cChzdHJ1Y3Qgc29ja2V0ICpz
bywgc3RydWN0IHNvY2tidWYgKnNiKTsKLQotI2lmZGVmIFNPQ0tCVUZfREVCVUcKLXZvaWQJc2Js
YXN0cmVjb3JkY2hrKHN0cnVjdCBzb2NrYnVmICosIGNvbnN0IGNoYXIgKiwgaW50KTsKLSNkZWZp
bmUJU0JMQVNUUkVDT1JEQ0hLKHNiKQlzYmxhc3RyZWNvcmRjaGsoKHNiKSwgX19GSUxFX18sIF9f
TElORV9fKQotCi12b2lkCXNibGFzdG1idWZjaGsoc3RydWN0IHNvY2tidWYgKiwgY29uc3QgY2hh
ciAqLCBpbnQpOwotI2RlZmluZQlTQkxBU1RNQlVGQ0hLKHNiKQlzYmxhc3RtYnVmY2hrKChzYiks
IF9fRklMRV9fLCBfX0xJTkVfXykKLSNlbHNlCi0jZGVmaW5lCVNCTEFTVFJFQ09SRENISyhzYikg
ICAgICAvKiBub3RoaW5nICovCi0jZGVmaW5lCVNCTEFTVE1CVUZDSEsoc2IpICAgICAgICAvKiBu
b3RoaW5nICovCi0jZW5kaWYgLyogU09DS0JVRl9ERUJVRyAqLwotCi0vKgotICogQWNjZXB0IGZp
bHRlciBmdW5jdGlvbnMgKGR1aCkuCisgKiBTb2NrZXQgZXZlbnQgZmxhZ3MKICAqLwotaW50CWFj
Y2VwdF9maWx0X2FkZChzdHJ1Y3QgYWNjZXB0X2ZpbHRlciAqZmlsdCk7Ci1pbnQJYWNjZXB0X2Zp
bHRfZGVsKGNoYXIgKm5hbWUpOwotc3RydWN0CWFjY2VwdF9maWx0ZXIgKmFjY2VwdF9maWx0X2dl
dChjaGFyICpuYW1lKTsKLSNpZmRlZiBBQ0NFUFRfRklMVEVSX01PRAotI2lmZGVmIFNZU0NUTF9E
RUNMCi1TWVNDVExfREVDTChfbmV0X2luZXRfYWNjZik7Ci0jZW5kaWYKLWludAlhY2NlcHRfZmls
dF9nZW5lcmljX21vZF9ldmVudChtb2R1bGVfdCBtb2QsIGludCBldmVudCwgdm9pZCAqZGF0YSk7
Ci0jZW5kaWYKLQotI2VuZGlmIC8qIF9LRVJORUwgKi8KKyNkZWZpbmUgU0NUUF9FVkVOVF9SRUFE
CQkweDAwMDEJLyogc29ja2V0IGlzIHJlYWRhYmxlICovCisjZGVmaW5lIFNDVFBfRVZFTlRfV1JJ
VEUJMHgwMDAyCS8qIHNvY2tldCBpcyB3cml0ZWFibGUgKi8KKyNkZWZpbmUgU0NUUF9FVkVOVF9F
UlJPUgkweDAwMDQJLyogc29ja2V0IGhhcyBhbiBlcnJvciBzdGF0ZSAqLwogCiAKIC8qLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSov
CkBAIC03MDgsNyArMzgzLDYgQEAgaW50CWFjY2VwdF9maWx0X2dlbmVyaWNfbW9kX2V2ZW50KG1v
ZHVsZV90IG1vZCwgaW50IGV2ZW50LCB2b2lkICpkYXRhKTsKICAqICBhYm92ZSBpbnRvLCBhdm9p
ZGluZyBoYXZpbmcgdG8gcG9ydCB0aGUgZW50aXJlIHRoaW5nIGF0IG9uY2UuLi4KICAqICBGb3Ig
ZnVuY3Rpb24gcHJvdG90eXBlcywgdGhlIGZ1bGwgYm9kaWVzIGFyZSBpbiB1c2VyX3NvY2tldC5j
IC4KICAqLwotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAogLyogLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogLyogLS0tIGZ1
bmN0aW9uIHByb3RvdHlwZXMgKGltcGxlbWVudGVkIGluIHVzZXJfc29ja2V0LmMpIC0tLSAqLwpA
QCAtNzE5LDYgKzM5Myw3IEBAIHZvaWQJc29pc2Nvbm5lY3RlZChzdHJ1Y3Qgc29ja2V0ICpzbyk7
CiBzdHJ1Y3Qgc29ja2V0ICogc29uZXdjb25uKHN0cnVjdCBzb2NrZXQgKmhlYWQsIGludCBjb25u
c3RhdHVzKTsKIHZvaWQJc29jYW50cmN2bW9yZShzdHJ1Y3Qgc29ja2V0ICpzbyk7CiB2b2lkCXNv
Y2FudHNlbmRtb3JlKHN0cnVjdCBzb2NrZXQgKnNvKTsKK3ZvaWQJc29mcmVlKHN0cnVjdCBzb2Nr
ZXQgKnNvKTsKIAogCiAKQEAgLTc4Miw5ICs0NTcsNyBAQCBleHRlcm4gaW50IHNjdHBfbGlzdGVu
KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgYmFja2xvZywgc3RydWN0IHByb2MgKnApOwogZXh0ZXJu
IHZvaWQgc29jYW50cmN2bW9yZV9sb2NrZWQoc3RydWN0IHNvY2tldCAqc28pOwogZXh0ZXJuIGlu
dCBzY3RwX2JpbmQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqYWRkcik7CiBl
eHRlcm4gaW50IHNjdHA2X2JpbmQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAq
YWRkciwgdm9pZCAqcHJvYyk7Ci0jaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogZXh0ZXJuIGlu
dCBzY3RwY29ubl9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIp
OwotI2VuZGlmCiBleHRlcm4gaW50IHNjdHBfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1
Y3Qgc29ja2FkZHIgKiphZGRyKTsKIGV4dGVybiBpbnQgc2N0cF9hdHRhY2goc3RydWN0IHNvY2tl
dCAqc28sIGludCBwcm90bywgdWludDMyX3QgdnJmX2lkKTsKIGV4dGVybiBpbnQgc2N0cDZfYXR0
YWNoKHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgcHJvdG8sIHVpbnQzMl90IHZyZl9pZCk7CkBAIC04
MDMsOSArNDc2LDcgQEAgZXh0ZXJuIGludCBzb2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0
cnVjdCBzb2NrYWRkciAqbmFtKTsKIGV4dGVybiBpbnQgc2N0cF9kaXNjb25uZWN0KHN0cnVjdCBz
b2NrZXQgKnNvKTsKIGV4dGVybiBpbnQgc2N0cF9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBz
dHJ1Y3Qgc29ja2FkZHIgKmFkZHIpOwogZXh0ZXJuIGludCBzY3RwNl9jb25uZWN0KHN0cnVjdCBz
b2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIpOwotI2lmIGRlZmluZWQoX19Vc2Vyc3Bh
Y2VfXykKIGV4dGVybiBpbnQgc2N0cGNvbm5fY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbywgc3Ry
dWN0IHNvY2thZGRyICphZGRyKTsKLSNlbmRpZgogZXh0ZXJuIHZvaWQgc2N0cF9maW5pc2godm9p
ZCk7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSAqLwpAQCAtODUzLDggKzUyNCw0IEBAIGV4dGVybiB2b2lkIHNjdHBfZmluaXNoKHZvaWQpOwog
CXNvd3dha2V1cF9sb2NrZWQoc28pOwkJCQkJCVwKIH0gd2hpbGUgKDApCiAKLQotCi0jZW5kaWYg
LyogX19Vc2Vyc3BhY2VfXyAqLwotCiAjZW5kaWYgLyogIV9TWVNfU09DS0VUVkFSX0hfICovCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfdW1hLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3Jz
Y3RwbGliL3VzZXJfdW1hLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCAx
YmRlZmRiODA5NjguLjU5ZDcxZmZmNDJjMwotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJf
dW1hLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX3VtYS5oCkBAIC00NiwxMSArNDYs
MTEgQEAgdHlwZWRlZiBzdHJ1Y3QgdW1hX3pvbmUgKiB1bWFfem9uZV90OwogdHlwZWRlZiBzdHJ1
Y3QgdW1hX2tlZyAqIHVtYV9rZWdfdDsKIAogc3RydWN0IHVtYV9jYWNoZSB7Ci0gICAgaW50IHN0
dWI7IC8qIFRPRE8gX19Vc2Vyc3BhY2VfXyAqLworCWludCBzdHViOyAvKiBUT0RPIF9fVXNlcnNw
YWNlX18gKi8KIH07CiAKIHN0cnVjdCB1bWFfa2VnIHsKLSAgICBpbnQgc3R1YjsgLyogVE9ETyBf
X1VzZXJzcGFjZV9fICovCisJaW50IHN0dWI7IC8qIFRPRE8gX19Vc2Vyc3BhY2VfXyAqLwogfTsK
IAogc3RydWN0IHVtYV96b25lIHsKQEAgLTgzLDE2ICs4MywxNCBAQCBzdHJ1Y3QgdW1hX3pvbmUg
ewogLyogUHJvdG90eXBlICovCiB1bWFfem9uZV90CiB1bWFfemNyZWF0ZShjaGFyICpuYW1lLCBz
aXplX3Qgc2l6ZSwgdW1hX2N0b3IgY3RvciwgdW1hX2R0b3IgZHRvciwKLQkgICAgdW1hX2luaXQg
dW1pbml0LCB1bWFfZmluaSBmaW5pLCBpbnQgYWxpZ24sIHVfaW50MzJfdCBmbGFncyk7CisJICAg
IHVtYV9pbml0IHVtaW5pdCwgdW1hX2ZpbmkgZmluaSwgaW50IGFsaWduLCB1aW50MzJfdCBmbGFn
cyk7CiAKIAogI2RlZmluZSB1bWFfem9uZV9zZXRfbWF4KHpvbmUsIG51bWJlcikgLyogc3R1YiBU
T0RPIF9fVXNlcnNwYWNlX18gKi8KIAogdW1hX3pvbmVfdAogdW1hX3pjcmVhdGUoY2hhciAqbmFt
ZSwgc2l6ZV90IHNpemUsIHVtYV9jdG9yIGN0b3IsIHVtYV9kdG9yIGR0b3IsCi0JICAgIHVtYV9p
bml0IHVtaW5pdCwgdW1hX2ZpbmkgZmluaSwgaW50IGFsaWduLCB1X2ludDMyX3QgZmxhZ3MpCi17
Ci0gICAgcmV0dXJuIE5VTEw7IC8qIHN0dWIgVE9ETyBfX1VzZXJzcGFjZV9fLiBBbHNvIHBsYWNl
IGltcGxlbWVudGF0aW9uIGluIGEgc2VwYXJhdGUgLmMgZmlsZSAqLwotCisJICAgIHVtYV9pbml0
IHVtaW5pdCwgdW1hX2ZpbmkgZmluaSwgaW50IGFsaWduLCB1aW50MzJfdCBmbGFncykgeworCXJl
dHVybiBOVUxMOyAvKiBzdHViIFRPRE8gX19Vc2Vyc3BhY2VfXy4gQWxzbyBwbGFjZSBpbXBsZW1l
bnRhdGlvbiBpbiBhIHNlcGFyYXRlIC5jIGZpbGUgKi8KIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3Vz
cnNjdHBsaWIvdXNyc2N0cGxpYi91c3JzY3RwLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzcnNj
dHAuaAppbmRleCBlOTMzYzE0NWVmYjUuLmI3MTkyOTA0ZTQ2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBs
aWIvdXNyc2N0cGxpYi91c3JzY3RwLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c3JzY3Rw
LmgKQEAgLTcyLDcgKzcyLDE2IEBAIGV4dGVybiAiQyIgewogI2RlZmluZSBpbnQzMl90ICAgX19p
bnQzMgogI2VuZGlmCiAKLSNkZWZpbmUgc3NpemVfdCAgIF9faW50NjQKKyNpZm5kZWYgc3NpemVf
dAorI2lmZGVmIF9XSU42NAorI2RlZmluZSBzc2l6ZV90IF9faW50NjQKKyNlbGlmIGRlZmluZWQg
X1dJTjMyCisjZGVmaW5lIHNzaXplX3QgaW50CisjZWxzZQorI2Vycm9yICJVbmtub3duIHBsYXRm
b3JtISIKKyNlbmRpZgorI2VuZGlmCisKICNkZWZpbmUgTVNHX0VPUiAgIDB4OAogI2lmbmRlZiBF
V09VTERCTE9DSwogI2RlZmluZSBFV09VTERCTE9DSyAgV1NBRVdPVUxEQkxPQ0sKQEAgLTEyNywx
MiArMTM2LDggQEAgc3RydWN0IHNvY2thZGRyX2Nvbm4gewogI2VuZGlmCiAKIHVuaW9uIHNjdHBf
c29ja3N0b3JlIHsKLSNpZiBkZWZpbmVkKElORVQpCiAJc3RydWN0IHNvY2thZGRyX2luIHNpbjsK
LSNlbmRpZgotI2lmIGRlZmluZWQoSU5FVDYpCiAJc3RydWN0IHNvY2thZGRyX2luNiBzaW42Owot
I2VuZGlmCiAJc3RydWN0IHNvY2thZGRyX2Nvbm4gc2Nvbm47CiAJc3RydWN0IHNvY2thZGRyIHNh
OwogfTsKQEAgLTE0MSw2ICsxNDYsMTAgQEAgdW5pb24gc2N0cF9zb2Nrc3RvcmUgewogI2RlZmlu
ZSBTQ1RQX0NVUlJFTlRfQVNTT0MgMQogI2RlZmluZSBTQ1RQX0FMTF9BU1NPQyAgICAgMgogCisj
ZGVmaW5lIFNDVFBfRVZFTlRfUkVBRCAgICAweDAwMDEKKyNkZWZpbmUgU0NUUF9FVkVOVF9XUklU
RSAgIDB4MDAwMgorI2RlZmluZSBTQ1RQX0VWRU5UX0VSUk9SICAgMHgwMDA0CisKIC8qKiogIFN0
cnVjdHVyZXMgYW5kIGRlZmluaXRpb25zIHRvIHVzZSB0aGUgc29ja2V0IEFQSSAgKioqLwogCiAj
ZGVmaW5lIFNDVFBfQUxJR05fUkVTVl9QQUQgOTIKQEAgLTI3MiwxMiArMjgxLDEzIEBAIHN0cnVj
dCBzY3RwX2Fzc29jX2NoYW5nZSB7CiAjZGVmaW5lIFNDVFBfQ0FOVF9TVFJfQVNTT0MgMHgwMDA1
CiAKIC8qIHNhY19pbmZvIHZhbHVlcyAqLwotI2RlZmluZSBTQ1RQX0FTU09DX1NVUFBPUlRTX1BS
ICAgICAgICAweDAxCi0jZGVmaW5lIFNDVFBfQVNTT0NfU1VQUE9SVFNfQVVUSCAgICAgIDB4MDIK
LSNkZWZpbmUgU0NUUF9BU1NPQ19TVVBQT1JUU19BU0NPTkYgICAgMHgwMwotI2RlZmluZSBTQ1RQ
X0FTU09DX1NVUFBPUlRTX01VTFRJQlVGICAweDA0Ci0jZGVmaW5lIFNDVFBfQVNTT0NfU1VQUE9S
VFNfUkVfQ09ORklHIDB4MDUKLSNkZWZpbmUgU0NUUF9BU1NPQ19TVVBQT1JUU19NQVggICAgICAg
MHgwNQorI2RlZmluZSBTQ1RQX0FTU09DX1NVUFBPUlRTX1BSICAgICAgICAgICAweDAxCisjZGVm
aW5lIFNDVFBfQVNTT0NfU1VQUE9SVFNfQVVUSCAgICAgICAgIDB4MDIKKyNkZWZpbmUgU0NUUF9B
U1NPQ19TVVBQT1JUU19BU0NPTkYgICAgICAgMHgwMworI2RlZmluZSBTQ1RQX0FTU09DX1NVUFBP
UlRTX01VTFRJQlVGICAgICAweDA0CisjZGVmaW5lIFNDVFBfQVNTT0NfU1VQUE9SVFNfUkVfQ09O
RklHICAgIDB4MDUKKyNkZWZpbmUgU0NUUF9BU1NPQ19TVVBQT1JUU19JTlRFUkxFQVZJTkcgMHgw
NgorI2RlZmluZSBTQ1RQX0FTU09DX1NVUFBPUlRTX01BWCAgICAgICAgICAweDA2CiAKIC8qIEFk
ZHJlc3MgZXZlbnQgKi8KIHN0cnVjdCBzY3RwX3BhZGRyX2NoYW5nZSB7CkBAIC0zMDYsNyArMzE2
LDcgQEAgc3RydWN0IHNjdHBfcmVtb3RlX2Vycm9yIHsKIAl1aW50MzJfdCBzcmVfbGVuZ3RoOwog
CXVpbnQxNl90IHNyZV9lcnJvcjsKIAlzY3RwX2Fzc29jX3Qgc3JlX2Fzc29jX2lkOwotCXVpbnQ4
X3Qgc3JlX2RhdGFbNF07CisJdWludDhfdCBzcmVfZGF0YVtdOwogfTsKIAogLyogc2h1dGRvd24g
ZXZlbnQgKi8KQEAgLTQ3MSw2ICs0ODEsOCBAQCBzdHJ1Y3Qgc2N0cF9ldmVudF9zdWJzY3JpYmUg
ewogCiAKIC8qIEZsYWdzIHRoYXQgZ28gaW50byB0aGUgc2luZm8tPnNpbmZvX2ZsYWdzIGZpZWxk
ICovCisjZGVmaW5lIFNDVFBfREFUQV9MQVNUX0ZSQUcgICAweDAwMDEgLyogdGFpbCBwYXJ0IG9m
IHRoZSBtZXNzYWdlIGNvdWxkIG5vdCBiZSBzZW50ICovCisjZGVmaW5lIFNDVFBfREFUQV9OT1Rf
RlJBRyAgICAweDAwMDMgLyogY29tcGxldGUgbWVzc2FnZSBjb3VsZCBub3QgYmUgc2VudCAqLwog
I2RlZmluZSBTQ1RQX05PVElGSUNBVElPTiAgICAgMHgwMDEwIC8qIG5leHQgbWVzc2FnZSBpcyBh
IG5vdGlmaWNhdGlvbiAqLwogI2RlZmluZSBTQ1RQX0NPTVBMRVRFICAgICAgICAgMHgwMDIwIC8q
IG5leHQgbWVzc2FnZSBpcyBjb21wbGV0ZSAqLwogI2RlZmluZSBTQ1RQX0VPRiAgICAgICAgICAg
ICAgMHgwMTAwIC8qIFN0YXJ0IHNodXRkb3duIHByb2NlZHVyZXMgKi8KQEAgLTU0MCw2ICs1NTIs
MTQgQEAgc3RydWN0IHNjdHBfZXZlbnRfc3Vic2NyaWJlIHsKICNkZWZpbmUgU0NUUF9ERUZBVUxU
X1NORElORk8gICAgICAgICAgICAweDAwMDAwMDIxCiAjZGVmaW5lIFNDVFBfREVGQVVMVF9QUklO
Rk8gICAgICAgICAgICAgMHgwMDAwMDAyMgogI2RlZmluZSBTQ1RQX1JFTU9URV9VRFBfRU5DQVBT
X1BPUlQgICAgIDB4MDAwMDAwMjQKKyNkZWZpbmUgU0NUUF9FQ05fU1VQUE9SVEVEICAgICAgICAg
ICAgICAweDAwMDAwMDI1CisjZGVmaW5lIFNDVFBfUFJfU1VQUE9SVEVEICAgICAgICAgICAgICAg
MHgwMDAwMDAyNgorI2RlZmluZSBTQ1RQX0FVVEhfU1VQUE9SVEVEICAgICAgICAgICAgIDB4MDAw
MDAwMjcKKyNkZWZpbmUgU0NUUF9BU0NPTkZfU1VQUE9SVEVEICAgICAgICAgICAweDAwMDAwMDI4
CisjZGVmaW5lIFNDVFBfUkVDT05GSUdfU1VQUE9SVEVEICAgICAgICAgMHgwMDAwMDAyOQorI2Rl
ZmluZSBTQ1RQX05SU0FDS19TVVBQT1JURUQgICAgICAgICAgIDB4MDAwMDAwMzAKKyNkZWZpbmUg
U0NUUF9QS1REUk9QX1NVUFBPUlRFRCAgICAgICAgICAweDAwMDAwMDMxCisjZGVmaW5lIFNDVFBf
TUFYX0NXTkQgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAzMgogCiAjZGVmaW5lIFNDVFBfRU5B
QkxFX1NUUkVBTV9SRVNFVCAgICAgICAgMHgwMDAwMDkwMCAvKiBzdHJ1Y3Qgc2N0cF9hc3NvY192
YWx1ZSAqLwogCkBAIC04NzUsMTEgKzg5NSwxNiBAQCB1c3JzY3RwX2luaXQodWludDE2X3QsCiAg
ICAgICAgICAgICAgaW50ICgqKSh2b2lkICphZGRyLCB2b2lkICpidWZmZXIsIHNpemVfdCBsZW5n
dGgsIHVpbnQ4X3QgdG9zLCB1aW50OF90IHNldF9kZiksCiAgICAgICAgICAgICAgdm9pZCAoKiko
Y29uc3QgY2hhciAqZm9ybWF0LCAuLi4pKTsKIAordm9pZAordXNyc2N0cF9pbml0X25vdGhyZWFk
cyh1aW50MTZfdCwKKwkJICAgICAgIGludCAoKikodm9pZCAqYWRkciwgdm9pZCAqYnVmZmVyLCBz
aXplX3QgbGVuZ3RoLCB1aW50OF90IHRvcywgdWludDhfdCBzZXRfZGYpLAorCQkgICAgICAgdm9p
ZCAoKikoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pKTsKKwogc3RydWN0IHNvY2tldCAqCiB1c3Jz
Y3RwX3NvY2tldChpbnQgZG9tYWluLCBpbnQgdHlwZSwgaW50IHByb3RvY29sLAogICAgICAgICAg
ICAgICAgaW50ICgqcmVjZWl2ZV9jYikoc3RydWN0IHNvY2tldCAqc29jaywgdW5pb24gc2N0cF9z
b2Nrc3RvcmUgYWRkciwgdm9pZCAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBkYXRhbGVuLCBzdHJ1Y3Qgc2N0cF9yY3ZpbmZvLCBpbnQgZmxhZ3MsIHZvaWQg
KnVscF9pbmZvKSwKLSAgICAgICAgICAgICAgIGludCAoKnNlbmRfY2IpKHN0cnVjdCBzb2NrZXQg
KnNvY2ssIHVpbnQzMl90IHNiX2ZyZWUpLAorICAgICAgICAgICAgICAgaW50ICgqc2VuZF9jYiko
c3RydWN0IHNvY2tldCAqc29jaywgdWludDMyX3Qgc2JfZnJlZSwgdm9pZCAqdWxwX2luZm8pLAog
ICAgICAgICAgICAgICAgdWludDMyX3Qgc2JfdGhyZXNob2xkLAogICAgICAgICAgICAgICAgdm9p
ZCAqdWxwX2luZm8pOwogCkBAIC0xMDA4LDYgKzEwMzMsMjEgQEAgdXNyc2N0cF9kZXJlZ2lzdGVy
X2FkZHJlc3Modm9pZCAqKTsKIGludAogdXNyc2N0cF9zZXRfdWxwaW5mbyhzdHJ1Y3Qgc29ja2V0
ICosIHZvaWQgKik7CiAKK2ludAordXNyc2N0cF9nZXRfdWxwaW5mbyhzdHJ1Y3Qgc29ja2V0ICos
IHZvaWQgKiopOworCitpbnQKK3VzcnNjdHBfc2V0X3VwY2FsbChzdHJ1Y3Qgc29ja2V0ICpzbywK
KyAgICAgICAgICAgICAgICAgICB2b2lkICgqdXBjYWxsKShzdHJ1Y3Qgc29ja2V0ICosIHZvaWQg
KiwgaW50KSwKKyAgICAgICAgICAgICAgICAgICB2b2lkICphcmcpOworCitpbnQKK3VzcnNjdHBf
Z2V0X2V2ZW50cyhzdHJ1Y3Qgc29ja2V0ICpzbyk7CisKKwordm9pZAordXNyc2N0cF9oYW5kbGVf
dGltZXJzKHVpbnQzMl90IGVsYXBzZWRfbWlsbGlzZWNvbmRzKTsKKwogI2RlZmluZSBTQ1RQX0RV
TVBfT1VUQk9VTkQgMQogI2RlZmluZSBTQ1RQX0RVTVBfSU5CT1VORCAgMAogCkBAIC0xMDk0LDYg
KzExMzQsNyBAQCBVU1JTQ1RQX1NZU0NUTF9ERUNMKHNjdHBfdWRwX3R1bm5lbGluZ19wb3J0KQog
VVNSU0NUUF9TWVNDVExfREVDTChzY3RwX2VuYWJsZV9zYWNrX2ltbWVkaWF0ZWx5KQogVVNSU0NU
UF9TWVNDVExfREVDTChzY3RwX3Z0YWdfdGltZV93YWl0KQogVVNSU0NUUF9TWVNDVExfREVDTChz
Y3RwX2JsYWNraG9sZSkKK1VTUlNDVFBfU1lTQ1RMX0RFQ0woc2N0cF9zZW5kYWxsX2xpbWl0KQog
VVNSU0NUUF9TWVNDVExfREVDTChzY3RwX2RpYWdfaW5mb19jb2RlKQogVVNSU0NUUF9TWVNDVExf
REVDTChzY3RwX2ZyX21heF9idXJzdF9kZWZhdWx0KQogVVNSU0NUUF9TWVNDVExfREVDTChzY3Rw
X3BhdGhfcGZfdGhyZXNob2xkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvc2N0cC9zY3RwX3RyYW5zcG9ydC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL3NjdHAvc2N0cF90cmFuc3Bv
cnQuY2MKaW5kZXggNmJlOTQ2MWU5MWJjLi5mMWJmMTQ4YzIxYTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL3NjdHAvc2N0cF90cmFu
c3BvcnQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bWVkaWEvc2N0cC9zY3RwX3RyYW5zcG9ydC5jYwpAQCAtNDcwLDcgKzQ3MCw3IEBAIGNsYXNzIFNj
dHBUcmFuc3BvcnQ6OlVzclNjdHBXcmFwcGVyIHsKICAgICByZXR1cm4gdHJhbnNwb3J0OwogICB9
CiAKLSAgc3RhdGljIGludCBTZW5kVGhyZXNob2xkQ2FsbGJhY2soc3RydWN0IHNvY2tldCogc29j
aywgdWludDMyX3Qgc2JfZnJlZSkgeworICBzdGF0aWMgaW50IFNlbmRUaHJlc2hvbGRDYWxsYmFj
ayhzdHJ1Y3Qgc29ja2V0KiBzb2NrLCB1aW50MzJfdCBzYl9mcmVlLCB2b2lkKikgewogICAgIC8v
IEZpcmVkIG9uIG91ciBJL08gdGhyZWFkLiBTY3RwVHJhbnNwb3J0OjpPblBhY2tldFJlY2VpdmVk
KCkgZ2V0cwogICAgIC8vIGEgcGFja2V0IGNvbnRhaW5pbmcgYWNrbm93bGVkZ21lbnRzLCB3aGlj
aCBnb2VzIGludG8gdXNyc2N0cF9jb25uaW5wdXQsCiAgICAgLy8gYW5kIHRoZW4gYmFjayBoZXJl
LgotLSAKMi4yNC4zIChBcHBsZSBHaXQtMTI4KQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>