<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>14795</bug_id>
          
          <creation_ts>2008-03-06 19:22:15 +0300</creation_ts>
          <short_desc>Ругань при установке grub-0.97-alt3</short_desc>
          <delta_ts>2008-08-08 20:13:11 +0400</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>grub</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Evgenii Terechkov">evg</reporter>
          <assigned_to name="Sir Raorn">raorn</assigned_to>
          <cc>nickel</cc>
    
    <cc>placeholder</cc>
    
    <cc>rider</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>65157</commentid>
    <comment_count>0</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2008-03-06 19:22:15 +0300</bug_when>
    <thetext>20: grub                    
##########################################################################################
[ 95%]
/usr/sbin/detectloader: hdb: grub
/root/tmp/rpm-tmp.66887: line 7: [: too many arguments
Please install GRUB manually.

Typo в script-let-е:

elif [ -s /etc/sysconfig/grub -a grep -q quit /etc/sysconfig/grub ]; then</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67879</commentid>
    <comment_count>1</comment_count>
      <attachid>2557</attachid>
    <who name="Mike">mike</who>
    <bug_when>2008-04-09 21:30:31 +0400</bug_when>
    <thetext>Created attachment 2557
workaround for &apos;line 7 - to many arguments...&apos; error

заменил  elif [ -s /etc/sysconfig/grub -a grep -q quit /etc/sysconfig/grub ]
на elif [ -s /etc/sysconfig/grub -a grep -q quit /etc/sysconfig/grub
2&gt;/dev/null 1&gt;/dev/null ]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67894</commentid>
    <comment_count>2</comment_count>
    <who name="Sir Raorn">raorn</who>
    <bug_when>2008-04-10 01:22:35 +0400</bug_when>
    <thetext>Надо

elif [ -s /etc/sysconfig/grub ] &amp;&amp; grep -q quit /etc/sysconfig/grub</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68618</commentid>
    <comment_count>3</comment_count>
    <who name="Sir Raorn">raorn</who>
    <bug_when>2008-04-18 19:57:13 +0400</bug_when>
    <thetext>Fixed in -alt4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75112</commentid>
    <comment_count>4</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2008-08-08 20:13:11 +0400</bug_when>
    <thetext>Чёта забыл закрыть. Исправляюсь.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>2557</attachid>
            <date>2008-04-09 21:30:31 +0400</date>
            <delta_ts>2008-04-09 21:30:31 +0400</delta_ts>
            <desc>workaround for &apos;line 7 - to many arguments...&apos; error</desc>
            <filename>grub-0.97-alt3.patch</filename>
            <type>text/plain</type>
            <size>121307</size>
            <attacher name="Mike">mike</attacher>
            
              <data encoding="base64">IC5nZWFyL3J1bGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg
MiArCiAuLi4vdGFncy82MDdkODQ5YjVmYjMyYjQxODIyNTE2MzgwMDg5ZGU1MDA3OGVkMTJiICB8
ICAgIDYgKwogLmdlYXIvdGFncy9saXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICAxICsKIE1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAgMSArCiBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgIDMgKy0KIGRvY3MvZ3J1Yi1pbnN0YWxsLjggICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAgMiArCiBkb2NzL2dydWIudGV4aSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgNjEgKystCiBncnViLnNwZWMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzMjMgKysrKysrKwogZ3J1Yi9hc21zdHViLmMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDUyICstCiBncnViL21haW4u
YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIGdydWJv
bmNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1NyArKwog
bGliL2RldmljZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjY5
ICsrKysrKy0KIG5ldGJvb3QvY29uZmlnLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAxMiArCiBuZXRib290L2ZzeXNfdGZ0cC5jICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgIDQgKy0KIG5ldGJvb3QvaTgyNTg2LmMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAgMiArLQogbmV0Ym9vdC9tYWluLmMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiBuZXRib290L3BjaS5oICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKwogc3RhZ2UxL01ha2VmaWxlLmFtICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBzdGFnZTEvc3RhZ2UxLlMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTEgKy0KIHN0YWdlMi9NYWtlZmls
ZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogc3RhZ2UyL2Fz
bS5TICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMzcxICsrKysrKysr
LQogc3RhZ2UyL2Jvb3QuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
ICA3ICstCiBzdGFnZTIvYnVpbHRpbnMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAxNDggKysrLQogc3RhZ2UyL2Rpc2tfaW8uYyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDM5ICstCiBzdGFnZTIvZmlsZXN5cy5oICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgNDAgKy0KIHN0YWdlMi9mc3lzX2V4dDJmcy5jICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAzOSArLQogc3RhZ2UyL2ZzeXNfZmF0LmMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI2ICstCiBzdGFnZTIvZnN5c19mZnMuYyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjAgKy0KIHN0YWdlMi9mc3lzX2lzbzk2
NjAuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNCArLQogc3RhZ2UyL2ZzeXNf
amZzLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE0ICstCiBzdGFnZTIv
ZnN5c19taW5peC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjggKy0KIHN0
YWdlMi9mc3lzX3JlaXNlcmZzLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxOCAr
LQogc3RhZ2UyL2ZzeXNfdWZzMi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
IDE2ICstCiBzdGFnZTIvZnN5c192c3RhZnMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgMTcgKy0KIHN0YWdlMi9mc3lzX3hmcy5jICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAxMyArLQogc3RhZ2UyL2lzbzk2NjAuaCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgICA0ICstCiBzdGFnZTIvcGNfc2xpY2UuaCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgIDIgKwogc3RhZ2UyL3NoYXJlZC5oICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgIDYwICsrLQogc3RhZ2UyL3N0YWdlMi5jICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgODk2ICsrKysrKysrKysrKysrKysrKystCiB1
dGlsL2dydWItaW5zdGFsbC5pbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyNzgg
KysrKystLQogdXRpbC9ncnViLW1kNS1jcnlwdC5pbiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICAyICstCiB1dGlsL21iY2hrLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgIDQgKy0KIDQyIGZpbGVzIGNoYW5nZWQsIDI1MzQgaW5zZXJ0aW9ucygrKSwg
MzQyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhLy5nZWFyL3J1bGVzIGIvLmdlYXIvcnVsZXMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjc4YTk2ZQotLS0gL2Rldi9udWxs
CisrKyBiLy5nZWFyL3J1bGVzCkBAIC0wLDAgKzEsMiBAQAordGFyOiBAbmFtZUAtQHZlcnNpb25A
Oi4KK2RpZmY6IEBuYW1lQC1AdmVyc2lvbkA6LiAuCmRpZmYgLS1naXQgYS8uZ2Vhci90YWdzLzYw
N2Q4NDliNWZiMzJiNDE4MjI1MTYzODAwODlkZTUwMDc4ZWQxMmIgYi8uZ2Vhci90YWdzLzYwN2Q4
NDliNWZiMzJiNDE4MjI1MTYzODAwODlkZTUwMDc4ZWQxMmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uYzY3MzllNwotLS0gL2Rldi9udWxsCisrKyBiLy5nZWFyL3RhZ3MvNjA3
ZDg0OWI1ZmIzMmI0MTgyMjUxNjM4MDA4OWRlNTAwNzhlZDEyYgpAQCAtMCwwICsxLDYgQEAKK29i
amVjdCBiYzE5YmMwMjZjMDU3MDkxZDNmZjI1YzAzMTJhZmQyMDBhMTUzZWY4Cit0eXBlIGNvbW1p
dAordGFnIGdydWItMC45NwordGFnZ2VyIEFsZXhleSBJLiBGcm9sb2ZmIDxyYW9ybkBhbHRsaW51
eC5vcmc+IDEyMDI4MjUxMTEgKzAzMDAKKworZ3J1YiAwLjk3CmRpZmYgLS1naXQgYS8uZ2Vhci90
YWdzL2xpc3QgYi8uZ2Vhci90YWdzL2xpc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uYjQwM2FiNAotLS0gL2Rldi9udWxsCisrKyBiLy5nZWFyL3RhZ3MvbGlzdApAQCAtMCww
ICsxIEBACis2MDdkODQ5YjVmYjMyYjQxODIyNTE2MzgwMDg5ZGU1MDA3OGVkMTJiIGdydWItMC45
NwpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQppbmRleCA2M2E5YTRmLi4y
MDJhOWQxIDEwMDY0NAotLS0gYS9NYWtlZmlsZS5hbQorKysgYi9NYWtlZmlsZS5hbQpAQCAtMiwz
ICsyLDQgQEAKIEFVVE9NQUtFX09QVElPTlMgPSAxLjcgZ251CiBTVUJESVJTID0gbmV0Ym9vdCBz
dGFnZTIgc3RhZ2UxIGxpYiBncnViIHV0aWwgZG9jcwogRVhUUkFfRElTVCA9IEJVR1MgTUFJTlRF
TkFOQ0UKK3BrZ2RhdGFkaXI9JChkYXRhZGlyKQpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIv
Y29uZmlndXJlLmFjCmluZGV4IGJiOWUxZDkuLmRmZDVjYzYgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3Vy
ZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTYwLDggKzYwLDcgQEAgQUNfUFJPR19DQwogX0FN
X0RFUEVOREVOQ0lFUyhDQykKIAogZG5sIEJlY2F1c2UgcmVjZW50IGF1dG9tYWtlIGNvbXBsYWlu
cyBhYm91dCBBUywgc2V0IGl0IGhlcmUuCi1DQ0FTPSIkQ0MiCi1BQ19TVUJTVChDQ0FTKQorQU1f
UFJPR19BUwogCiBBQ19BUkdfV0lUSChiaW51dGlscywKICAgWyAgLS13aXRoLWJpbnV0aWxzPURJ
UiAgICAgc2VhcmNoIHRoZSBkaXJlY3RvcnkgRElSIHRvIGZpbmQgYmludXRpbHNdKQpkaWZmIC0t
Z2l0IGEvZG9jcy9ncnViLWluc3RhbGwuOCBiL2RvY3MvZ3J1Yi1pbnN0YWxsLjgKaW5kZXggYWM1
ODhhMy4uYWNjZmYyMiAxMDA2NDQKLS0tIGEvZG9jcy9ncnViLWluc3RhbGwuOAorKysgYi9kb2Nz
L2dydWItaW5zdGFsbC44CkBAIC0zMCw2ICszMCw4IEBAIEJJT1MKIC5UUAogXGZCXC1cLXJlY2hl
Y2tcZlIKIHByb2JlIGEgZGV2aWNlIG1hcCBldmVuIGlmIGl0IGFscmVhZHkgZXhpc3RzCisKK1Ro
aXMgb3B0aW9uIGlzIHVucmVsaWFibGUgYW5kIGl0cyB1c2UgaXMgc3Ryb25nbHkgZGlzY291cmFn
ZWQuCiAuUFAKIElOU1RBTExfREVWSUNFIGNhbiBiZSBhIEdSVUIgZGV2aWNlIG5hbWUgb3IgYSBz
eXN0ZW0gZGV2aWNlIGZpbGVuYW1lLgogLlBQCmRpZmYgLS1naXQgYS9kb2NzL2dydWIudGV4aSBi
L2RvY3MvZ3J1Yi50ZXhpCmluZGV4IDUxZDMzMGEuLjE4ZTM3MzYgMTAwNjQ0Ci0tLSBhL2RvY3Mv
Z3J1Yi50ZXhpCisrKyBiL2RvY3MvZ3J1Yi50ZXhpCkBAIC0yMTE4LDggKzIxMTgsMTAgQEAgVGhl
c2UgY29tbWFuZHMgY2FuIG9ubHkgYmUgdXNlZCBpbiB0aGUgbWVudToKICogZGVmYXVsdDo6ICAg
ICAgICAgICAgICAgICAgICAgU2V0IHRoZSBkZWZhdWx0IGVudHJ5CiAqIGZhbGxiYWNrOjogICAg
ICAgICAgICAgICAgICAgIFNldCB0aGUgZmFsbGJhY2sgZW50cnkKICogaGlkZGVubWVudTo6ICAg
ICAgICAgICAgICAgICAgSGlkZSB0aGUgbWVudSBpbnRlcmZhY2UKKyogZ2Z4bWVudTo6ICAgICAg
ICAgICAgICAgICAgICAgVXNlIGdyYXBoaWNhbCBtZW51IGludGVyZmFjZQogKiB0aW1lb3V0Ojog
ICAgICAgICAgICAgICAgICAgICBTZXQgdGhlIHRpbWVvdXQKICogdGl0bGU6OiAgICAgICAgICAg
ICAgICAgICAgICAgU3RhcnQgYSBtZW51IGVudHJ5CisqIHdpbGRjYXJkOjogICAgICAgICAgICAg
ICAgICAgIERlZmluZSBhIHdpbGRjYXJkIGJvb3QgZW50cnkKIEBlbmQgbWVudQogCiAKQEAgLTIx
NTAsNiArMjE1MiwxNSBAQCBmYWxsYmFjayBlbnRyeSBudW1iZXJzLgogQGVuZCBkZWZmbgogCiAK
K0Bub2RlIGdmeG1lbnUKK0BzdWJzZWN0aW9uIGdmeG1lbnUKKworQGRlZmZuIENvbW1hbmQgZ2Z4
bWVudSBmaWxlCitVc2UgdGhlIGdyYXBoaWNhbCBtZW51IGludGVyZmFjZS4gVGhlIGdyYXBoaWNz
IGRhdGEgYXJlIHRha2VuIGZyb20KK0B2YXJ7ZmlsZX0gYW5kIG11c3QgYmUgY3JlYXRlZCB1c2lu
ZyAnbWtib290bXNnJyBmcm9tIHRoZSBnZnhib290IHBhY2thZ2UuCitAZW5kIGRlZmZuCisKKwog
QG5vZGUgaGlkZGVubWVudQogQHN1YnNlY3Rpb24gaGlkZGVubWVudQogCkBAIC0yMTgwLDYgKzIx
OTEsNDIgQEAgdGhlIGxpbmUsIHN0YXJ0aW5nIHdpdGggdGhlIGZpcnN0IG5vbi1zcGFjZSBjaGFy
YWN0ZXIuCiBAZW5kIGRlZmZuCiAKIAorQG5vZGUgd2lsZGNhcmQKK0BzdWJzZWN0aW9uIHdpbGRj
YXJkCisKK0BkZWZmbiBDb21tYW5kIHdpbGRjYXJkIHBhdGhuYW1lCitUcmVhdCB0aGlzIGJvb3Qg
ZW50cnkgYXMgYSB3aWxkY2FyZCBlbnRyeTogVGhlCit3aWxkY2FyZCwgdGl0bGUsIGtlcm5lbCwg
YW5kIGluaXRyZCBjb21tYW5kcyAoc2VlIEByZWZ7TWVudS1zcGVjaWZpYworY29tbWFuZHN9IGFu
ZCBAcmVme0NvbW1hbmQtbGluZSBhbmQgbWVudSBlbnRyeSBjb21tYW5kc30pIGVhY2ggaGF2ZSBh
bgorYXN0ZXJpc2sgKCopIGluIHRoZWlyIHZhbHVlLiBBIGZpbGVuYW1lIG1hdGNoIGlzIHBlcmZv
cm1lZCBvbiB0aGUKK0B2YXJ7cGF0aG5hbWV9IG9mIHRoZSB3aWxkY2FyZCBjb21tYW5kLiBGb3Ig
ZWFjaCBtYXRjaCwgdGhlIGVudGlyZSBib290CitlbnRyeSBpcyBkdXBsaWNhdGVkLiBUaGUgcGFy
dCBvZiB0aGUgZmlsZW5hbWUgd2hjaWggbWF0Y2hlcyB0aGUgYXN0ZXJpc2sKK2luIHRoZSB3aWxk
Y2FyZCBjb21tYW5kIHJlcGxhY2VzIHRoZSBhc3Rlcmlza3MgaW4gdGhlIHRpdGxlLCBrZXJuZWws
IGFuZAoraW5pdHJkIGNvbW1hbmRzLiBGb3IgZXhhbXBsZSwgd2l0aCB0aGUgZmlsZXMgdm1saW51
ei0yLjYuNS0xIGFuZAordm1saW51ei0yLjYuOC04IGJlbG93IChoZDAsNykvYm9vdCwgdGhlIGZv
bGxvd2luZyBlbnRyeSBpbiB0aGUgc3RhZ2UgMgorY29uZmlndXJhdGlvbiBmaWxlOgorCitAZXhh
bXBsZQordGl0bGUgTGludXgtKgorICAgIHdpbGRjYXJkIChoZDAsNykvYm9vdC92bWxpbnV6LSoK
KyAgICBrZXJuZWwgKGhkMCw3KS9ib290L3ZtbGludXotKiByb290PS9kZXYvaGRhOAorICAgIGlu
aXRyZCAoaGQwLDcpL2Jvb3QvaW5pdHJkLSoKK0BlbmQgZXhhbXBsZQorCit3b3VsZCBleHBhbmQg
YXMgZm9sbG93czoKKworQGV4YW1wbGUKK3RpdGxlIExpbnV4LTIuNi41LTEKKyAgICB3aWxkY2Fy
ZCAoaGQwLDcpL2Jvb3Qvdm1saW51ei0yLjYuNS0xCisgICAga2VybmVsIChoZDAsNykvYm9vdC92
bWxpbnV6LTIuNi41LTEgcm9vdD0vZGV2L2hkYTgKKyAgICBpbml0cmQgKGhkMCw3KS9ib290L2lu
aXRyZC0yLjYuNS0xCit0aXRsZSBMaW51eC0yLjYuOC04CisgICAgd2lsZGNhcmQgKGhkMCw3KS9i
b290L3ZtbGludXotMi42LjgtOAorICAgIGtlcm5lbCAoaGQwLDcpL2Jvb3Qvdm1saW51ei0yLjYu
OC04IHJvb3Q9L2Rldi9oZGE4CisgICAgaW5pdHJkIChoZDAsNykvYm9vdC9pbml0cmQtMi42Ljgt
OAorQGVuZCBleGFtcGxlCitAZW5kIGRlZmZuCisKIEBub2RlIEdlbmVyYWwgY29tbWFuZHMKIEBz
ZWN0aW9uIFRoZSBsaXN0IG9mIGdlbmVyYWwgY29tbWFuZHMKIApAQCAtMjkwOSw3ICsyOTU2LDcg
QEAgYXBwcm9wcmlhdGUgcGFyYW1ldGVycyBpbiB0aGUgTGludXggc2V0dXAgYXJlYSBpbiBtZW1v
cnkuIFNlZSBhbHNvCiBAbm9kZSBpbnN0YWxsCiBAc3Vic2VjdGlvbiBpbnN0YWxsCiAKLUBkZWZm
biBDb21tYW5kIGluc3RhbGwgW0BvcHRpb257LS1mb3JjZS1sYmF9XSBbQG9wdGlvbnstLXN0YWdl
Mj1vc19zdGFnZTJfZmlsZX1dIHN0YWdlMV9maWxlIFtAb3B0aW9ue2R9XSBkZXN0X2RldiBzdGFn
ZTJfZmlsZSBbYWRkcl0gW0BvcHRpb257cH1dIFtjb25maWdfZmlsZV0gW3JlYWxfY29uZmlnX2Zp
bGVdCitAZGVmZm4gQ29tbWFuZCBpbnN0YWxsIFtAb3B0aW9uey0tZm9yY2UtbGJhWz1vZmZdfV0g
W0BvcHRpb257LS1zdGFnZTI9b3Nfc3RhZ2UyX2ZpbGV9XSBzdGFnZTFfZmlsZSBbQG9wdGlvbntk
fV0gZGVzdF9kZXYgc3RhZ2UyX2ZpbGUgW2FkZHJdIFtAb3B0aW9ue3B9XSBbY29uZmlnX2ZpbGVd
IFtyZWFsX2NvbmZpZ19maWxlXQogVGhpcyBjb21tYW5kIGlzIGZhaXJseSBjb21wbGV4LCBhbmQg
eW91IHNob3VsZCBub3QgdXNlIHRoaXMgY29tbWFuZAogdW5sZXNzIHlvdSBhcmUgZmFtaWxpYXIg
d2l0aCBHUlVCLiBVc2UgQGNvbW1hbmR7c2V0dXB9IChAcHhyZWZ7c2V0dXB9KQogaW5zdGVhZC4K
QEAgLTI5NTYsNiArMzAwMywxMyBAQCBIUCBWZWN0cmEgWFUgNi8yMDAgQklPUyB2ZXJzaW9uIEdH
LjA2LjExCiBiaXRtYXAgZXZlbiBpZiB0aGV5IGRvIGhhdmUgdGhlIHN1cHBvcnQuIFNvIEdSVUIg
cHJvdmlkZXMgYSBzb2x1dGlvbiB0bwogaWdub3JlIHRoZSB3cm9uZyBiaXRtYXAsIHRoYXQgaXMs
IHRoZSBvcHRpb24gQG9wdGlvbnstLWZvcmNlLWxiYX0uIERvbid0CiB1c2UgdGhpcyBvcHRpb24g
aWYgeW91IGtub3cgdGhhdCB5b3VyIEJJT1MgZG9lc24ndCBoYXZlIExCQSBzdXBwb3J0LgorT24g
dGhlIG90aGVyIGhhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGtub3duIEJJT1MgdGhhdCBkb2Vz
IHRoZSBvcHBvc2l0ZSwKK2l0IGNsYWltcyB0byBzdXBwb3J0IExCQSBhbmQgdGhlbiBmYWlscyB0
byBwcm92aWRlIGl0LiBJZmYgeW91IGhhdmUgYW4KK0FkYXB0ZWMgMjk0MCB3aXRoIEJJT1MgcmV2
aXNpb24gMS4yMSAoIG5ld2VyIG9uZXMganVzdCB3b3JrIGFuZCBvbGRlciBvbmVzCitkb24ndCBt
YWtlIHRoZSBmYWxzZSBjbGFpbSApLCBvciBvdGhlcndpc2UgZXhwZXJpZW5jZSBncnViIGhhbmdp
bmcKK2FmdGVyIHN0YWdlMSwgeW91IGNhbiB0cnkgdG8gdXNlIHRoZSBvcHRpb24gQG9wdGlvbnst
LWZvcmNlLWxiYT1vZmZ9LAorYXMgbG9uZyBhcyBhbGwgZGlzayBibG9ja3MgaW52b2x2ZWQgaW4g
Ym9vdGluZyByZXNpZGUKK3dpdGhpbiB0aGUgZmlyc3QgMTAyNCBjeWxpbmRlcnMuCiAKIEBzdHJv
bmd7Q2F1dGlvbjM6fSBZb3UgbXVzdCBzcGVjaWZ5IHRoZSBvcHRpb24gQG9wdGlvbnstLXN0YWdl
Mn0gaW4gdGhlCiBncnViIHNoZWxsLCBpZiB5b3UgY2Fubm90IHVubW91bnQgdGhlIGZpbGVzeXN0
ZW0gd2hlcmUgeW91ciBzdGFnZTIgZmlsZQpAQCAtMzcwMiw4ICszNzU2LDkgQEAgVXNlIEB2YXJ7
ZmlsZX0gYXMgdGhlIGdydWIgc2hlbGwuIFlvdSBjYW4gYXBwZW5kIGFyYml0cmFyeSBvcHRpb25z
IHRvCiAKIEBpdGVtIC0tcmVjaGVjawogUmVjaGVjayB0aGUgZGV2aWNlIG1hcCwgZXZlbiBpZiBA
ZmlsZXsvYm9vdC9ncnViL2RldmljZS5tYXB9IGFscmVhZHkKLWV4aXN0cy4gWW91IHNob3VsZCB1
c2UgdGhpcyBvcHRpb24gd2hlbmV2ZXIgeW91IGFkZC9yZW1vdmUgYSBkaXNrCi1pbnRvL2Zyb20g
eW91ciBjb21wdXRlci4KK2V4aXN0cy4KKworVGhpcyBvcHRpb24gaXMgdW5yZWxpYWJsZSBhbmQg
aXRzIHVzZSBpcyBzdHJvbmdseSBkaXNjb3VyYWdlZC4KIEBlbmQgdGFibGUKIAogCmRpZmYgLS1n
aXQgYS9ncnViLnNwZWMgYi9ncnViLnNwZWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNWI2YjY4YQotLS0gL2Rldi9udWxsCisrKyBiL2dydWIuc3BlYwpAQCAtMCwwICsxLDMy
MyBAQAorTmFtZTogZ3J1YgorVmVyc2lvbjogMC45NworUmVsZWFzZTogYWx0MworCitTdW1tYXJ5
OiBHUmFuZCBVbmlmaWVkIEJvb3Rsb2FkZXIKK0dyb3VwOiBTeXN0ZW0vS2VybmVsIGFuZCBoYXJk
d2FyZQorTGljZW5zZTogR1BMCitVUkw6IGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9ncnVi
L2dydWIuZW4uaHRtbAorCitFeGNsdXNpdmVBcmNoOiAlaXg4NgorCitQYWNrYWdlcjogU2lyIFJh
b3JuIDxyYW9ybkBhbHRsaW51eC5ydT4KKworU291cmNlOiBmdHA6Ly9hbHBoYS5nbnUub3JnL2du
dS9ncnViLyVuYW1lLSV2ZXJzaW9uLnRhcgorUGF0Y2g6ICVuYW1lLSV2ZXJzaW9uLSVyZWxlYXNl
LnBhdGNoCisKK1Byb3ZpZGVzOiAlbmFtZS1kb2MgPSAldmVyc2lvbiwgJW5hbWUtZ3JhcGggPSAl
dmVyc2lvbgorT2Jzb2xldGVzOiAlbmFtZS1kb2MsICVuYW1lLWdyYXBoCisKKyMgQXV0b21hdGlj
YWxseSBhZGRlZCBieSBidWlsZHJlcSBvbiBNb24gRmViIDI1IDIwMDgKK0J1aWxkUmVxdWlyZXM6
IGxpYm5jdXJzZXMtZGV2ZWwgdGV0ZXgtbGF0ZXgKKworIyNCdWlsZFJlcXVpcmVzOiBsaWJuY3Vy
c2VzLWRldmVsIHJlaXNlcjRwcm9ncy1taW5pbWFsLWRldmVsIHRldGV4LWxhdGV4CisKKyVwYWNr
YWdlIHV0aWxzCitHcm91cDogU3lzdGVtL0tlcm5lbCBhbmQgaGFyZHdhcmUKK1N1bW1hcnk6IEFk
ZGl0aW9uYWwgdXRpbGl0ZXMgZm9yICVuYW1lCisKKyVkZXNjcmlwdGlvbgorR05VIEdSVUIgaXMg
YSBtdWx0aWJvb3QgYm9vdCBsb2FkZXIuIEl0IHdhcyBkZXJpdmVkIGZyb20gR1JVQi4gSXQgaXMg
YW4KK2F0dGVtcHQgdG8gcHJvZHVjZSBhIGJvb3QgbG9hZGVyIGZvciBJQk0gUEMtY29tcGF0aWJs
ZSBtYWNoaW5lcyB0aGF0CitoYXMgYm90aCB0aGUgYWJpbGl0eSB0byBiZSBmcmllbmRseSB0byBi
ZWdpbm5pbmcgb3Igb3RoZXJ3aXNlCitub250ZWNobmljYWxseSBpbnRlcmVzdGVkIHVzZXJzIGFu
ZCB0aGUgZmxleGliaWxpdHkgdG8gaGVscCBleHBlcnRzIGluCitkaXZlcnNlIGVudmlyb25tZW50
cy4gSXQgaXMgY29tcGF0aWJsZSB3aXRoIEZyZWUvTmV0L09wZW5CU0QgYW5kIExpbnV4LgorSXQg
c3VwcG9ydHMgV2luIDl4L05UIGFuZCBPUy8yIHZpYSBjaGFpbmxvYWRlcnMuIEl0IGhhcyBhIG1l
bnUKK2ludGVyZmFjZSBhbmQgYSBjb21tYW5kIGxpbmUgaW50ZXJmYWNlLgorSXQgaW1wbGVtZW50
cyB0aGUgTXVsdGlib290IHN0YW5kYXJkLCB3aGljaCBhbGxvd3MgZm9yIGZsZXhpYmxlIGxvYWRp
bmcKK29mIG11bHRpcGxlIGJvb3QgaW1hZ2VzIChuZWVkZWQgZm9yIG1vZHVsYXIga2VybmVscyBz
dWNoIGFzIHRoZSBHTlUKK0h1cmQpLgorCislZGVzY3JpcHRpb24gdXRpbHMKK0FkZGl0aW9uYWwg
dXRpbGl0ZXMgZm9yICVuYW1lCisKKyVwcmVwCislc2V0dXAKKyVwYXRjaCAtcDEKKworJWJ1aWxk
CislYXV0b3JlY29uZgorCislZGVmaW5lIF9vcHRsZXZlbCBzCislYWRkX29wdGZsYWdzIC1ETkRF
QlVHIC1XIC1XYWxsIC1XcG9pbnRlci1hcml0aAorJWFkZF9vcHRmbGFncyAtZm5vLXN0YWNrLXBy
b3RlY3RvciAtZm5vLXN0cmljdC1hbGlhc2luZyAtbWlubGluZS1hbGwtc3RyaW5nb3BzCislaWZh
cmNoIHg4Nl82NAorICVhZGRfb3B0ZmxhZ3MgLW0zMiAtZm5vLWFzeW5jaHJvbm91cy11bndpbmQt
dGFibGVzCislZW5kaWYgIAorJWNvbmZpZ3VyZSBcCisgIC0tYmluZGlyPS9iaW4gLS1zYmluZGly
PS9zYmluIFwKKyAgLS1kaXNhYmxlLWF1dG8tbGludXgtbWVtLW9wdCAtLWVuYWJsZS1kaXNrbGVz
cyBcCisgIC0tZW5hYmxlLXszYzUwezMsN30sM2M1ezAsMn05LDNjNTk1LDNjOTB4LGNzODl4MCxk
YXZpY29tLGRlcGNhLGVlcHJveywxMDB9LGVwaWMxMDB9IFwKKyAgLS1lbmFibGUte2V4b3MyMDUs
bGFuY2UsbmUsbmUyMTAwLG5pezUwLDUyLDY1fTAwLG5zODM5MH0gXAorICAtLWVuYWJsZS17cnRs
ODEzOSxzay1nMTYsc21jOTAwMCx0aWFyYSx0dWxpcCx2aWEtcmhpbmUsdzg5Yzg0MCx3ZH0gCisl
bWFrZV9idWlsZAorKGNkIHN0YWdlMjsgbXYgbmJncnViIHB4ZWdydWIgLi4pCittdiBzdGFnZTIv
c3RhZ2UyeywubmV0Ym9vdH0KKyVtYWtlX2J1aWxkIGNsZWFuCislY29uZmlndXJlIFwKKyAgLS1i
aW5kaXI9L2JpbiAtLXNiaW5kaXI9L3NiaW4gXAorICAtLXByZWZpeD0vdXNyIC0taW5mb2Rpcj0l
e19pbmZvZGlyfSAtLW1hbmRpcj0le19tYW5kaXJ9IC0tZGF0YWRpcj0le19kYXRhZGlyfSBcCisg
IC0tbGliZXhlY2Rpcj0le19saWJleGVjZGlyfSBcCisgIC0tZGlzYWJsZS1hdXRvLWxpbnV4LW1l
bS1vcHQgCislbWFrZV9idWlsZAorJW1ha2VfYnVpbGQgLUMgZG9jcyBkdmkKKworJWluc3RhbGwK
KyVtYWtlX2luc3RhbGwgREVTVERJUj0lYnVpbGRyb290IGluc3RhbGwKK21rZGlyIC1wICVidWls
ZHJvb3QvYm9vdC9ncnViL3BpY3R1cmVzCitsbiAtc2ZuIC4gJWJ1aWxkcm9vdC9ib290L2Jvb3QK
K2luc3RhbGwgLXAge25iLHB4ZX1ncnViIHN0YWdlMi9zdGFnZTJ7LC5uZXRib290fSAlYnVpbGRy
b290L2Jvb3QvZ3J1YgoraW5zdGFsbCAtbTc1NSAtcCBncnVib25jZSAlYnVpbGRyb290L3NiaW4K
K212ICVidWlsZHJvb3QlX2xpYmV4ZWNkaXIvZ3J1Yi8qICVidWlsZHJvb3QvYm9vdC9ncnViCity
bSAtcmYgJWJ1aWxkcm9vdCVfbGliZXhlY2Rpci9ncnViCitsbiAtc2ZuIC4uLy4uL2Jvb3QvZ3J1
YiAlYnVpbGRyb290JV9saWJleGVjZGlyIAorCislcG9zdAoraWYgWyAteCAvdXNyL3NiaW4vZGV0
ZWN0bG9hZGVyIC1hIC1mIC9wcm9jL3BhcnRpdGlvbnMgXTsgdGhlbgorICBMT0FERVI9JCgvdXNy
L3NiaW4vZGV0ZWN0bG9hZGVyKQorICBpZiBbICIkTE9BREVSIiA9ICJHUlVCIiBdOyB0aGVuCisg
ICAgaWYgWyAtZiAvYm9vdC9ncnViL2luc3RhbGwuc2ggXTsgdGhlbgorICAgICAgIyBPbGQgZ3J1
YiBpbnN0YWxsYXRpb24KKyAgICAgIHNoIC9ib290L2dydWIvaW5zdGFsbC5zaCA+IC9kZXYvbnVs
bAorICAgIGVsaWYgWyAtcyAvZXRjL3N5c2NvbmZpZy9ncnViIC1hIGdyZXAgLXEgcXVpdCAvZXRj
L3N5c2NvbmZpZy9ncnViIDE+L2Rldi9udWxsIDI+L2Rldi9udWxsIF07IHRoZW4KKyAgICAgICMg
VGhpcyBmaWxlIHNob3VsZCBiZSBjcmVhdGVkIGJ5IChmdXR1cmUpIGFsdGVyYXRvci1ncnViCisg
ICAgICAvc2Jpbi9ncnViIC0tYmF0Y2ggPCAvZXRjL3N5c2NvbmZpZy9ncnViID4gL2Rldi9udWxs
CisgICAgZWxzZQorICAgICAgY2F0IDw8RU9GID4mMgorUGxlYXNlIGluc3RhbGwgR1JVQiBtYW51
YWxseS4KK0VPRgorICAgIGZpCisgIGZpCitmaQorCislaW5zdGFsbF9pbmZvICVuYW1lLmluZm8K
KyVpbnN0YWxsX2luZm8gbXVsdGlib290LmluZm8KKworJXByZXVuCisldW5pbnN0YWxsX2luZm8g
JW5hbWUuaW5mbworJXVuaW5zdGFsbF9pbmZvIG11bHRpYm9vdC5pbmZvCisKKworJWZpbGVzCisl
ZG9jIEJVR1MgTkVXUyBUT0RPIFJFQURNRSBUSEFOS1MgQVVUSE9SUyBJTlNUQUxMIENoYW5nZUxv
ZyBDT1BZSU5HIGRvY3MvbWVudS5sc3QKKyVkaXIgL2Jvb3QvZ3J1YgorJWRpciAvYm9vdC9ib290
CisvYm9vdC9ncnViLypzdGFnZSoKKy9ib290L2dydWIvbmJncnViCisvYm9vdC9ncnViL3B4ZWdy
dWIKKyVfaW5mb2Rpci8qCislX21hbmRpci8qLyoKKy9zYmluLyoKKy9iaW4vKgorJWV4Y2x1ZGUg
L3NiaW4vZ3J1Yi10ZXJtaW5mbworJWRpciAlX2xpYmV4ZWNkaXIvZ3J1YgorCislZmlsZXMgdXRp
bHMKKy9zYmluL2dydWItdGVybWluZm8KKworJWNoYW5nZWxvZworKiBUaHUgRmViIDI4IDIwMDgg
U2lyIFJhb3JuIDxyYW9ybkBhbHRsaW51eC5ydT4gMC45Ny1hbHQzCistIFJlc3VycmVjdGVkIGZy
b20gb3JwaGFuZWQKKy0gUmVtb3ZlZCBSZWlzZXJGUzQgc3VwcG9ydAorLSBVcGRhdGVkIGdmeGJv
b3Qgc3VwcG9ydCBmcm9tIFN1U0UKKy0gbWRyYWlkL2RtcmFpZCBzdXBwb3J0IGluIGdydWItaW5z
dGFsbCg4KSBmcm9tIEZlZG9yYQorLSBBbGwgYmluYXJpZXMgbW92ZWQgdG8gL2JpbiBhbmQgL3Ni
aW4KKy0gV2lsZGNhcmQgbWVudS5sc3QgZW50cmllcyBzdXBwb3J0IGZyb20gU3VTRQorCisqIFR1
ZSBNYXkgMzAgMjAwNiBBbmRyaXkgU3RlcGFub3YgPHN0YW52QGFsdGxpbnV4LnJ1PiAwLjk3LWFs
dDIKKy0gQWRkIHN1cHBvcnQgZm9yIHJlaXNlcjQgRlMKKworKiBXZWQgTWF5IDI0IDIwMDYgQW5k
cml5IFN0ZXBhbm92IDxzdGFudkBhbHRsaW51eC5ydT4gMC45Ny1hbHQxCistIFN3aXRjaCB0byBu
ZXcgdmVyc2lvbi4gRHVhbCBwbGFpbiBncnViIGFuZCB3aXRoIFBYRSBzdXBwb3J0LgorCisqIFdl
ZCBPY3QgMjAgMjAwNCBTdGFuaXNsYXYgSWV2bGV2IDxpbmdlckBhbHRsaW51eC5vcmc+IDAuOTUt
YWx0MQorLSAwLjk1CisKKyogVHVlIE1hciAwOSAyMDA0IFN0YW5pc2xhdiBJZXZsZXYgPGluZ2Vy
QGFsdGxpbnV4Lm9yZz4gMC45NC1hbHQxCistIDAuOTQKKworKiBXZWQgSmFuIDE0IDIwMDQgU3Rh
bmlzbGF2IElldmxldiA8aW5nZXJAYWx0bGludXgub3JnPiAwLjkzLWFsdDIKKy0gZml4IGJ1aWxk
aW5nIHdpdGggZ2NjMy4zCisKKyogVHVlIEFwciAwOCAyMDAzIFN0YW5pc2xhdiBJZXZsZXYgPGlu
Z2VyQGFsdGxpbnV4LnJ1PiAwLjkzLWFsdDEKKy0gcmVtb3ZlZCBwYXRjaGVzIGZvciBvbGQgZ3Jh
cGhpY3Mgc3VwcG9ydAorLSByZW1vdmVkIGdydWItc3BsYXNoZXMgdG9vCistIHBhdGNoIChub2Rl
cHJlY2F0ZWRmbGFncykgcmVtb3ZlZAorLSBkdW1wIHBhdGNoIHR1cm5lZCBvZmYKKy0gbmV3IGdy
dWItdGVybWluZm8gdXRpbGl0eSBwbGFjZWQgaW50byBncnViLXV0aWxzIHN1YnBhY2thZ2UgKHRv
IGF2b2lkIGRlcHMgb24gdGVybXV0aWxzLWRldmVsKQorCisqIEZyaSBGZWIgMDcgMjAwMyBTdGFu
aXNsYXYgSWV2bGV2IDxpbmdlckBhbHRsaW51eC5ydT4gMC45Mi1hbHQzLjEKKy0gcmVtb3ZlZCBv
bGQgZ3JhcGhpY3Mgc3VwcG9ydAorLSByZW1vdmVkIGdydWItZ3JhcGggcGFja2FnZSAobm93IG9i
c29sZXRlKQorCisqIE1vbiBGZWIgMDMgMjAwMyBSaWRlciA8cmlkZXJAYWx0bGludXgucnU+IDAu
OTItYWx0MworLSBHRlggbWVudSBzdXBwb3J0IGZyb20gU3VTRQorCisqIFN1biBPY3QgIDYgMjAw
MiBJdmFuIFpha2hhcnlhc2NoZXYgPGltekBhbHRsaW51eC5ydT4gMC45Mi1hbHQyCistIHRyeSB0
byBmaXggZ3JhcGggbWVudSBjdXJzb3IgY2xlYXJpbmcgcGFzc2VkIGl0ZW1zOiBrZXlwcmVzc2Ns
ZWFyIHBhdGNoIAorICBtb2RpZmllZCAtLSBub3cgaXQgcmVmcmVzaGVzIHRoZSBzY3JlZW4gbXVs
dGlwbGUgdGltZXMgCisgIChub3Qgb25seSB0aGUgZmlyc3QgdGltZSkKKworKiBNb24gQXByIDAx
IDIwMDIgU3RhbmlzbGF2IElldmxldiA8aW5nZXJAYWx0bGludXgucnU+IDAuOTEtYWx0NQorLSBB
ZGRlZCBwYXRjaCB0byBmaXggbWVtaW5mbyBkaXNwbGF5aW5nCisKKyogRnJpIEZlYiAxNSAyMDAy
IFN0YW5pc2xhdiBJZXZsZXYgPGluZ2VyQGFsdGxpbnV4LnJ1PiAwLjkxLWFsdDQKKy0gZml4ZWQg
Z3J1Yi1pbnN0YWxsCisKKyogTW9uIEZlYiAwNCAyMDAyIFN0YW5pc2xhdiBJZXZsZXYgPGluZ2Vy
QGFsdGxpbnV4LnJ1PiAwLjkxLWFsdDMKKy0gcmVhbCBkdW1wIHRlcm1pbmFsIGZpeCBhbmQgc29t
ZSBvdGhlciBwYXRjaGVzIGZyb20gZ3J1Yi1idWcgbWFpbGluZyBsaXN0CisgCisKKyogV2VkIEph
biAzMCAyMDAyIFN0YW5pc2xhdiBJZXZsZXYgPGluZ2VyQGFsdGxpbnV4LnJ1PiAwLjkxLWFsdDIK
Ky0gYWRkZWQgdGVtcG9yYXJ5IGhhY2sgZm9yIHRoZSBEVU1CX1RFUk1JTkFMIG1vZGUKKworKiBU
dWUgSmFuIDI5IDIwMDIgU3RhbmlzbGF2IElldmxldiA8aW5nZXJAYWx0bGludXgucnU+IDAuOTEt
YWx0MQorLSAwLjkxCistIGFsbCBtYW5kcmFrZSBwYXRjaGVzIHJlbW92ZWQKKworKiBGcmkgTm92
IDE2IDIwMDEgU3RhbmlzbGF2IElldmxldiA8aW5nZXJAYWx0bGludXgucnU+IDAuOTAtYWx0OAor
LSBBZGRlZCBsYXRlc3QgWEZTK0pGUyBwYXRjaGVzIAorLSBBZGRlZCBzb21lIFJIIHBhdGNoZXMK
KworKiBXZWQgTm92IDE0IDIwMDEgRG1pdHJ5IFYuIExldmluIDxsZHZAYWx0LWxpbnV4Lm9yZz4g
MC45MC1hbHQ3CistIE1vdmVkIHJlYm9vdGluIHV0aWxpdHkgdG8gYm9vdGxvYWRlci11dGlscyBw
YWNrYWdlLgorCisqIFdlZCBBdWcgMjIgMjAwMSBTdGFuaXNsYXYgSWV2bGV2IDxpbmdlckBhbHRs
aW51eC5ydT4gMC45MC1hbHQ2CistIE5ldyBpbWFnZSBhbmQgbmV3IHBhY2thZ2UgKGdyYXBoKS4K
KworKiBXZWQgQXVnIDE1IDIwMDEgU3RhbmlzbGF2IElldmxldiA8aW5nZXJAYWx0bGludXgucnU+
IDAuOTAtYWx0NQorLSBBZGRlZCBmaXJzdCBwaWN0dXJlICggSnVuaW9yIDspICkuCisKKyogTW9u
IEF1ZyAxMyAyMDAxIFN0YW5pc2xhdiBJZXZsZXYgPGluZ2VyQGFsdGxpbnV4LnJ1PiAwLjkwLWFs
dDQKKy0gQWRkZWQgcGF0Y2ggZm9yIEpGUyBzdXBwb3J0CisKKyogV2VkIEF1ZyAwOCAyMDAxIFN0
YW5pc2xhdiBJZXZsZXYgPGluZ2VyQGFsdGxpbnV4LnJ1PiAwLjkwLWFsdDMKKy0gUmVtb3ZlZCBN
YW5kcmFrZSdzIGJ1aWx0aW5zLiBXZSBkb24ndCBuZWVkIGl0CistIEFkZGVkIHZnYTE2IHN1cHBv
cnQuCistIFdlIGRvbid0ICBuZWVkIHByZXZpb3VzIGhhY2sgbm93LiBBbGwgd29ya3MuCisgIFBy
b2JsZW0gd2FzOiBzb21lIGJhZCBmdW5jdGlvbiBzZXQgZXJybnVtIG5vbnplcm8uCisKKyogVGh1
IEF1ZyAwMiAyMDAxIFN0YW5pc2xhdiBJZXZsZXYgPGluZ2VyQGFsdGxpbnV4LnJ1PiAwLjkwLWFs
dDIKKy0gVGVtcG9yYXJ5IGhhY2s6IG1lbWNoZWNrKCkgZnVuY3Rpb24gZG9lc24ndCB3b3JrLgor
CisqIFRodSBKdWwgMjYgMjAwMSBTdGFuaXNsYXYgSWV2bGV2IDxpbmdlckBhbHRsaW51eC5ydT4g
MC45MC1hbHQxCistIDAuOTAuIExpdHRsZSBjaGFuZ2VzIGZyb20gcHJldmlvdXMgc25hcHNob3QK
KworKiBUaHUgSnVuIDI4IDIwMDEgU3RhbmlzbGF2IElldmxldiA8aW5nZXJAYWx0bGludXgucnU+
IDAuNS45Ni4xLWlwbDVtZGsKKy0gVXBkYXRlIHRvIENWUyBhdCAyMDAxMDUzMAorCisqIE1vbiBN
YXkgMjggMjAwMSBTdGFuaXNsYXYgSWV2bGV2IDxpbmdlckBhbHRsaW51eC5ydT4gMC41Ljk2LjEt
aXBsNG1kaworLSBOZXcgcGF0Y2hlcyBmcm9tIE1hbmRyYWtlCisKKyogTW9uIERlYyAxOCAyMDAw
IEFFTiA8YWVuQGxvZ2ljLnJ1PgorLSBhZG9wdGVkIGZvciBSRQorCisqIE1vbiBEZWMgMTEgMjAw
MCBQaXhlbCA8cGl4ZWxAbWFuZHJha2Vzb2Z0LmNvbT4gMC41Ljk2LjEtMm1kaworLSBhZGQgYSBj
YWxsIHRvIC9ib290L2dydWIvaW5zdGFsbC5zaCBpZiBuZWVkZWQKKworKiBTYXQgRGVjICA5IDIw
MDAgUGl4ZWwgPHBpeGVsQG1hbmRyYWtlc29mdC5jb20+IDAuNS45Ni4xLTFtZGsKKy0gbmV3IHZl
cnNpb24KKyAgKiBwYXRjaCBmaXhiaW9zYnVnLW5ic2VjdG9ycyBubyBtb3JlIG5lZWRlZCAodW5s
ZXNzIHlvdSBkZWZpbmUgTk9fQlVHR1lfQklPU19JTl9USEVfV09STEQpCisKKyogVGh1IEF1ZyAy
NCAyMDAwIFBpeGVsIDxwaXhlbEBtYW5kcmFrZXNvZnQuY29tPiAwLjUuOTUtN21kaworLSAlJXVu
aW5zdGFsbF9pbmZvIGlzIGZpeGVkLCB5ZWVwZWUgOikKKworKiBUdWUgQXVnIDIyIDIwMDAgUGl4
ZWwgPHBpeGVsQG1hbmRyYWtlc29mdC5jb20+IDAuNS45NS02bWRrCistIGZpeGJpb3NidWctbmJz
ZWN0b3JzIGZvciBzb21lIEdlb20gRXJyb3JzICh3YXJseSdzIGNhc2UpCisKKyogV2VkIEF1ZyAx
NiAyMDAwIFBpeGVsIDxwaXhlbEBtYW5kcmFrZXNvZnQuY29tPiAwLjUuOTUtNW1kaworLSBmaXgg
ZXJyb25lb3VzIHJlbW92ZV9pbmZvIG1hY3JvIChzaWxseW1lKQorCisqIE1vbiBBdWcgMDcgMjAw
MCBGcmVkZXJpYyBMZXBpZWQgPGZsZXBpZWRAbWFuZHJha2Vzb2Z0LmNvbT4gMC41Ljk1LTRtZGsK
Ky0gYXV0b21hdGljYWxseSBhZGRlZCBCdWlsZFJlcXVpcmVzCisKKyogRnJpIEp1bCAyMSAyMDAw
IFBpeGVsIDxwaXhlbEBtYW5kcmFrZXNvZnQuY29tPiAwLjUuOTUtM21kaworLSBtYWNyb2l6YXRp
b24sIEJNCisKKyogV2VkIEp1bCAxMiAyMDAwIFBpeGVsIDxwaXhlbEBtYW5kcmFrZXNvZnQuY29t
PiAwLjUuOTUtMm1kaworLSBhZGQgYSBwYXRjaCBmb3IgZXpiaW9zIG5vbnNlbnNlCisKKyogTW9u
IEp1bCAgMyAyMDAwIFBpeGVsIDxwaXhlbEBtYW5kcmFrZXNvZnQuY29tPiAwLjUuOTUtMW1kawor
LSBuZXcgdmVyc2lvbgorCisqIFNhdCBNYXkgMjAgMjAwMCBQaXhlbCA8cGl4ZWxAbWFuZHJha2Vz
b2Z0LmNvbT4gMC41Ljk0LTE0bWRrCistIGFkZCByZWJvb3RpbiBjb21tYW5kICh1c2UgYWx0Y29u
ZmlnZmlsZSBjbWQgaW4gbWVudS5sc3QpCistIGFkZCBhbHRjb25maWdmaWxlIChyZWFkIG9uY2Up
CisKKyogTW9uIE1heSAgOCAyMDAwIFBpeGVsIDxwaXhlbEBtYW5kcmFrZXNvZnQuY29tPiAwLjUu
OTQtMTJtZGsKKy0gYWRkIHJlaXNlcmZzIGhhbmRsaW5nIChtaXNzaW5nIHN5bWxpbmsgaGFuZGxp
bmcgdGhvdWdoKQorCisqIFdlZCBNYXkgIDMgMjAwMCBQaXhlbCA8cGl4ZWxAbWFuZHJha2Vzb2Z0
LmNvbT4gMC41Ljk0LTExbWRrCistIGZpeCBmb3IgbGludXgtZXh0ZW5kZWQgZXh0ZW5kZWQgcGFy
dGl0aW9uCisKKyogVHVlIE1heSAgMiAyMDAwIFBpeGVsIDxwaXhlbEBtYW5kcmFrZXNvZnQuY29t
PiAwLjUuOTQtMTBtZGsKKy0gZml4IGNhc2Ugb2Ygbm90IGZvdW5kIGtleXRhYmxlCisKKyogVHVl
IEFwciAxOCAyMDAwIFBpeGVsIDxwaXhlbEBtYW5kcmFrZXNvZnQuY29tPiAwLjUuOTQtOW1kawor
LSByZW1vdmUgYSBwYXRjaCBmcm9tIGNhbGRlcmEKKworKiBTdW4gQXByIDE2IDIwMDAgUGl4ZWwg
PHBpeGVsQG1hbmRyYWtlc29mdC5jb20+IDAuNS45NC04bWRrCistIG5pY2VyIG1lbnUKKy0gZG9u
J3QgYWRkIGF1dG9tYXRpYyBtZW09IGlmIG9uZSBpcyBnaXZlbgorCisqIFR1ZSBBcHIgIDQgMjAw
MCBQaXhlbCA8cGl4ZWxAbWFuZHJha2Vzb2Z0LmNvbT4gMC41Ljk0LTdtZGsKKy0gZml4IGluc3Rh
bGwgcGF0aAorCisqIE1vbiBBcHIgIDMgMjAwMCBQaXhlbCA8cGl4ZWxAbWFuZHJha2Vzb2Z0LmNv
bT4gMC41Ljk0LTZtZGsKKy0gaW50ZWdyYXRlIHBhdGNoZXMgZnJvbSBjYWxkZXJhCisKKyogRnJp
IE1hciAzMSAyMDAwIFBpeGVsIDxwaXhlbEBtYW5kcmFrZXNvZnQuY29tPiAwLjUuOTQtNW1kawor
LSByZS1yZWJ1aWxkCisKKyogV2VkIE1hciAyOSAyMDAwIFBpeGVsIDxwaXhlbEBtYW5kcmFrZXNv
ZnQuY29tPiAwLjUuOTQtNG1kaworLSBiaWcgcGF0Y2ggKGkxOG4gJiBsb29rKQorCisqIFNhdCBN
YXIgMjUgMjAwMCBQaXhlbCA8cGl4ZWxAbWFuZHJha2Vzb2Z0LmNvbT4gMC41Ljk0LTNtZGsKKy0g
c3BsaXQgcHJpbnRhYmxlIGRvYyBhbmQgc29tZSBtb3JlIHRvIGhhdmUgc21hbGxlciBwYWNrYWdl
IChrZWVwIG1haW5seSBpbmZvIGluCittYWluIHBhY2thZ2UsIHZlcnkgZ29vZCBvbmUpCistIGNs
ZWFudXAgaW5zdGFsbC1pbmZvIGluICUlIHBvc3Qgc2NyaXB0cworCisqIEZyaSBNYXIgMjQgMjAw
MCBQaXhlbCA8cGl4ZWxAbWFuZHJha2Vzb2Z0LmNvbT4gMC41Ljk0LTJtZGsKKy0gcmVtb3ZlIHVu
bmVlZGVkIHBhdGNoCistIHVzZSBvZiAlJSB7IGl4ODYgfQorCisqIFdlZCBNYXIgMjIgMjAwMCBQ
aXhlbCA8cGl4ZWxAbWFuZHJha2Vzb2Z0LmNvbT4gMC41Ljk0LTFtZGsKKy0gcmVtb3ZlIG5vdyB1
bm5lZWRlZCAtLWRpc2FibGUtZ3VuemlwCistIGFkZGVkIG9wdGlvbiAtLWRpc2FibGUtbGJhLXN1
cHBvcnQtYml0bWFwLWNoZWNrCistIHBhdGNoIGZvciAqdmVyeSogYnVnZ3kgYmlvc2VzICh0ZWxs
cyBncnViIGV2ZXJ5IGhkIGlzIGdpZ2FudGljKQorLSBuZXcgdmVyc2lvbgorCisqIE1vbiBNYXIg
MTMgMjAwMCBQaXhlbCA8cGl4ZWxAbWFuZHJha2Vzb2Z0LmNvbT4gMC41LjkzLjEtN21kaworLSBj
b25maWd1cmUgd2l0aCAtLWRpc2FibGUtZ3VuemlwCisoc28gdGhhdCBpbml0cmQgaXMgbm90IGd1
bnppcCdlZCBhbmQgZml0cyBpbiBtZW1vcnksIHRoYXQncyB0aGUga2VybmVsJ3Mgam9iIGFueXdh
eSkKKworKiBXZWQgTWFyICAxIDIwMDAgUGl4ZWwgPHBpeGVsQG1hbmRyYWtlc29mdC5jb20+IDAu
NS45My4xLTZtZGsKKy0gcmVtb3ZlIG5vLWRldmljZS1jaGVjayAod2FzIHN0dXBpZCkKKy0gcmVw
bGFjZSBieSBzb21ldGhpbmcgYmV0dGVyIChvcHRpb24gLS1kZXZpY2VzKQorCisqIFR1ZSBGZWIg
MjkgMjAwMCBQaXhlbCA8cGl4ZWxAbWFuZHJha2Vzb2Z0LmNvbT4gMC41LjkzLjEtNW1kaworLSBh
ZGQgb3B0aW9uIG5vLWRldmljZS1jaGVjayBmb3IgZ3J1YiBiaW5hcnkgKG1haW5seSBmb3Igbm9u
LWludGVyYWN0aXZlIHVzZSkKKworKiBTdW4gSmFuIDE2IDIwMDAgQ2htb3VlbCBCb3Vkam5haCA8
Y2htb3VlbEBtYW5kcmFrZXNvZnQuY29tPiAwLjUuOTMuMS00bWRrCistIEFkZCBFeGNsdXNpdmVh
cmNoLgorCisqIFR1ZSBKYW4gNCAyMDAwIENobW91ZWwgQm91ZGpuYWggPGNobW91ZWxAbWFuZHJh
a2Vzb2Z0LmNvbT4gMC41LjkzLjEtM21kaworLSBBZGQgaW5zdGFsbF9ncnViX29uX2Zsb3BweSBz
Y3JpcHQgKHRobmtzIGIuYm9kaW4pLgorLSBBZGQgZHZpIGRvY3MgKHRrbmtzIGIuYm9kaW4pLgor
CisqIE1vbiBKYW4gIDMgMjAwMCBDaG1vdWVsIEJvdWRqbmFoIDxjaG1vdWVsQG1hbmRyYWtlc29m
dC5jb20+IDAuNS45My4xLTJtZGsKKy0gQWRkICUlcGFja2FnZXIgKHRobmtzIHJwbWxpbnQpLgor
LSBSZW1vdmUgQ0ZMQUdTLgorCisqIE1vbiBKYW4gIDMgMjAwMCBDaG1vdWVsIEJvdWRqbmFoIDxj
aG1vdWVsQG1hbmRyYWtlc29mdC5jb20+CistIEZpcnN0IHNwZWMgZmlsZSBmb3IgTWFuZHJha2Ug
ZGlzdHJpYnV0aW9uIGJhc2VkIG9uIGRlYmlhbiB2ZXJzaW9uLgpkaWZmIC0tZ2l0IGEvZ3J1Yi9h
c21zdHViLmMgYi9ncnViL2FzbXN0dWIuYwppbmRleCBhYjk1YjRiLi41NjI4MGI5IDEwMDY0NAot
LS0gYS9ncnViL2FzbXN0dWIuYworKysgYi9ncnViL2FzbXN0dWIuYwpAQCAtNDMsNiArNDMsOCBA
QCBpbnQgZ3J1Yl9zdGFnZTIgKHZvaWQpOwogI2luY2x1ZGUgPHRlcm1pb3MuaD4KICNpbmNsdWRl
IDxzaWduYWwuaD4KIAorI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisKICNpZmRlZiBfX2xpbnV4X18K
ICMgaW5jbHVkZSA8c3lzL2lvY3RsLmg+CQkvKiBpb2N0bCAqLwogIyBpZiAhZGVmaW5lZChfX0dM
SUJDX18pIHx8IFwKQEAgLTE0MiwxNCArMTQ0LDMwIEBAIGdydWJfc3RhZ2UyICh2b2lkKQogICAg
IH0KIAogICBhc3NlcnQgKGdydWJfc2NyYXRjaF9tZW0gPT0gMCk7Ci0gIHNjcmF0Y2ggPSBtYWxs
b2MgKDB4MTAwMDAwICsgRVhURU5ERURfTUVNU0laRSArIDE1KTsKKyNpZmRlZiBNQVBfMzJCSVQK
KyNkZWZpbmUgTVlfTUFQX1NFVCBNQVBfUFJJVkFURSB8IE1BUF9HUk9XU0RPV04gfCBNQVBfQU5P
TllNT1VTIHwgTUFQXzMyQklUCisjZWxzZQorI2RlZmluZSBNWV9NQVBfU0VUIE1BUF9QUklWQVRF
IHwgTUFQX0dST1dTRE9XTiB8IE1BUF9BTk9OWU1PVVMKKyNlbmRpZgorICBzY3JhdGNoID0gbW1h
cChOVUxMLAorICAgICAgICAgICAgICAgICAweDEwMDAwMCArIEVYVEVOREVEX01FTVNJWkUgKyAx
NSwKKyAgICAgICAgICAgICAgICAgUFJPVF9FWEVDIHwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwK
KyAgICAgICAgICAgICAgICAgTVlfTUFQX1NFVCwKKyAgICAgICAgICAgICAgICAgLTEsCisgICAg
ICAgICAgICAgICAgIDApOworCiAgIGFzc2VydCAoc2NyYXRjaCk7CiAgIGdydWJfc2NyYXRjaF9t
ZW0gPSAoY2hhciAqKSAoKCgoaW50KSBzY3JhdGNoKSA+PiA0KSA8PCA0KTsKIAogICAvKiBGSVhN
RTogc2ltdWxhdGUgdGhlIG1lbW9yeSBob2xlcyB1c2luZyBtcHJvdCwgaWYgYXZhaWxhYmxlLiAq
LwogCiAgIGFzc2VydCAoZGlza3MgPT0gMCk7Ci0gIGRpc2tzID0gbWFsbG9jIChOVU1fRElTS1Mg
KiBzaXplb2YgKCpkaXNrcykpOworICBkaXNrcyA9IG1tYXAoTlVMTCwKKyAgICAgICAgICAgICAg
IE5VTV9ESVNLUyAqIHNpemVvZiAoKmRpc2tzKSwKKyAgICAgICAgICAgICAgIFBST1RfRVhFQyB8
IFBST1RfUkVBRCB8IFBST1RfV1JJVEUsCisgICAgICAgICAgICAgICBNWV9NQVBfU0VULAorICAg
ICAgICAgICAgICAgLTEsCisgICAgICAgICAgICAgICAwKTsKICAgYXNzZXJ0IChkaXNrcyk7CiAg
IC8qIEluaXRpYWxpemUgRElTS1MuICAqLwogICBmb3IgKGkgPSAwOyBpIDwgTlVNX0RJU0tTOyBp
KyspCkBAIC0yMTUsOSArMjMzLDkgQEAgZ3J1Yl9zdGFnZTIgKHZvaWQpCiAgIC8qIFJlbGVhc2Ug
bWVtb3J5LiAqLwogICByZXN0b3JlX2RldmljZV9tYXAgKGRldmljZV9tYXApOwogICBkZXZpY2Vf
bWFwID0gMDsKLSAgZnJlZSAoZGlza3MpOworICBtdW5tYXAoZGlza3MsIE5VTV9ESVNLUyAqIHNp
emVvZiAoKmRpc2tzKSk7CiAgIGRpc2tzID0gMDsKLSAgZnJlZSAoc2NyYXRjaCk7CisgIG11bm1h
cChzY3JhdGNoLCAweDEwMDAwMCArIEVYVEVOREVEX01FTVNJWkUgKyAxNSk7CiAgIGdydWJfc2Ny
YXRjaF9tZW0gPSAwOwogCiAgIGlmIChzZXJpYWxfZGV2aWNlKQpAQCAtNDgwLDYgKzQ5OCwzMiBA
QCBzZXRfdmJlX21vZGUgKGludCBtb2RlX251bWJlcikKICAgcmV0dXJuIDA7CiB9CiAKKy8qIGdy
YXBoaWNhbCBtZW51IGZ1bmN0aW9ucyAuICAqLworaW50CitnZnhfaW5pdCAoZ2Z4X2RhdGFfdCAq
Z2Z4X2RhdGEpCit7CisgIHJldHVybiAwOworfQorCitpbnQKK2dmeF9kb25lIChnZnhfZGF0YV90
ICpnZnhfZGF0YSkKK3sKKyAgcmV0dXJuIDA7Cit9CisKK2ludAorZ2Z4X2lucHV0IChnZnhfZGF0
YV90ICpnZnhfZGF0YSwgaW50ICptZW51X2VudHJ5KQoreworICByZXR1cm4gMDsKK30KKworaW50
CitnZnhfc2V0dXBfbWVudSAoZ2Z4X2RhdGFfdCAqZ2Z4X2RhdGEpCit7CisgIHJldHVybiAwOwor
fQorCisKIC8qIGxvdy1sZXZlbCB0aW1pbmcgaW5mbyAqLwogaW50CiBnZXRydHNlY3MgKHZvaWQp
CmRpZmYgLS1naXQgYS9ncnViL21haW4uYyBiL2dydWIvbWFpbi5jCmluZGV4IGRmZTg0N2UuLmM5
NDc2ZmQgMTAwNjQ0Ci0tLSBhL2dydWIvbWFpbi5jCisrKyBiL2dydWIvbWFpbi5jCkBAIC00NCw3
ICs0NCw3IEBAIGludCB1c2VfY3Vyc2VzID0gMDsKIGludCB2ZXJib3NlID0gMDsKIGludCByZWFk
X29ubHkgPSAwOwogaW50IGZsb3BweV9kaXNrcyA9IDE7Ci1jaGFyICpkZXZpY2VfbWFwX2ZpbGUg
PSAwOworY2hhciAqZGV2aWNlX21hcF9maWxlID0gIi9ib290L2dydWIvZGV2aWNlLm1hcCI7CiBz
dGF0aWMgaW50IGRlZmF1bHRfYm9vdF9kcml2ZTsKIHN0YXRpYyBpbnQgZGVmYXVsdF9pbnN0YWxs
X3BhcnRpdGlvbjsKIHN0YXRpYyBjaGFyICpkZWZhdWx0X2NvbmZpZ19maWxlOwpkaWZmIC0tZ2l0
IGEvZ3J1Ym9uY2UgYi9ncnVib25jZQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAw
Li44NGRmMzFkCi0tLSAvZGV2L251bGwKKysrIGIvZ3J1Ym9uY2UKQEAgLTAsMCArMSw1NyBAQAor
IyEvdXNyL2Jpbi9wZXJsCisKKyMgS2VlcCB0aGlzIHNvcnQgb2YgY29uZmlndXJhYmxlIGZvciB0
aGUgZnV0dXJlLgorJEdSVUJESVI9Ii9ib290L2dydWIiOworCisjIFBhcnNlIHRoZSBtZW51IGZp
bGUsIGFuZCBzZWUgaWYgd2UgY2FuIGdldCBhIG1hdGNoIGZvciBhIG1heWJlIGdpdmVuIGFyZy4K
K29wZW4oTUVOVSwgIjwkR1JVQkRJUi9tZW51LmxzdCIpIHx8IGRpZSAibm8gbWVudS5sc3QgaW4g
JEdSVUJESVIiOworJGdvdGl0ID0gMDsKKyR0aXRsZW5vID0gLTE7CiskZ2xvYmFsX2RlZmF1bHQg
PSB1bmRlZjsKK3doaWxlKDxNRU5VPikgeworICBtLFxzKmRlZmF1bHRccysoLispLCAmJiAkdGl0
bGVubyA9PSAtMSAmJiAoJGdsb2JhbF9kZWZhdWx0ID0gJDEpOworICBuZXh0IHVubGVzcyBtLFxz
KnRpdGxlXHMrKC4qKSxpOworICAkdGl0bGVfbmFtZSA9ICQxOworICAkdGl0bGVubysrOworCisg
IGlmIChAQVJHViA+IDApIHsKKyAgICAjIEFyZ3VtZW50IG1heSBiZSBlbnRpcmVseSBudW1lcmlj
YWwsIGluIHdoaWNoIGNhc2UgaXQgaXMgYW4gaW5kZXgsCisgICAgIyBvciBhIHBlcmwgUkUgdGhh
dCBsZWFkcyB0byB0aGUgZmlyc3QgdGl0bGUgbWF0Y2hpbmcuCisgICAgaWYgKCggJEFSR1ZbMF0g
PX4gbSxeWzAtOV0rJCwgJiYgJHRpdGxlbm8gICAgZXEgICAkQVJHVlswXSApIHx8CisJKCAkQVJH
VlswXSAhfiBtLF5bMC05XSskLCAmJiAkdGl0bGVfbmFtZSA9fiBtLCRBUkdWWzBdLGkpICkgewor
ICAgICAgJGdvdGl0ID0gMTsKKyAgICAgIGxhc3Q7CisgICAgfQorICB9IGVsc2UgeworICAgIHBy
aW50ICIkdGl0bGVubzogJHRpdGxlX25hbWVcbiI7CisgIH0KK30KK2Nsb3NlKE1FTlUpOworCitw
cmludCAiV2FybmluZzogeW91IGhhdmVuJ3Qgc2V0IGEgZ2xvYmFsIGRlZmF1bHQhXG4iIGlmICFk
ZWZpbmVkKCRnbG9iYWxfZGVmYXVsdCk7CisKKyMgV2l0aG91dCBhIGNvbW1hbmQgbGluZSBhcmd1
bWVudCwgd2UgaGF2ZSBub3cgbGlzdGV0IHRoZSB0aXRsZXMgYW5kIGFyZSBkb25lLgorZXhpdCAw
IGlmIEBBUkdWIDwgMTsKKworIyBFbHNlIHRoZSB1c2VyIHdhbnRzIHRvIHdyaXRlIHRoZSBkZWZh
dWx0IGZpbGUuIFdlIGhhdmUgYmV0dGVyIGZvdW5kIGEgbWF0Y2ghCitpZiAoJGdvdGl0ID4gMCkg
eworICBwcmludCAiV2FybmluZzogeW91ciBnbG9iYWwgZGVmYXVsdCBpcyAnc2F2ZWQnOyBjaGFu
Z2luZyBkZWZhdWx0IHBlcm1hbmVudGx5ISIKKyAgICBpZiAkZ2xvYmFsX2RlZmF1bHQgZXEgInNh
dmVkIjsKKworICBwcmludCAiVXNpbmcgZW50cnkgIyR0aXRsZW5vOiAkdGl0bGVfbmFtZVxuIjsK
KworICAjIHNldCB0aGUgbWFnaWMgb25lLXRpbWUgZmxhZworICAkdGl0bGVubyB8PSAweDQwMDA7
CisKKyAgb3BlbihERUZGSUxFLCAiPiRHUlVCRElSL2RlZmF1bHQiKSB8fAorICAgIGRpZSAiQ2Fu
bm90IG9wZW4gZGVmYXVsdCBmaWxlIGZvciB3cml0aW5nIjsKKyAgJGJ1ZiA9ICR0aXRsZW5vIC4g
IlwwIiAuICAiXG4iIHggOTsKKyAgc3lzd3JpdGUoREVGRklMRSwgJGJ1ZiwgMTApOworICBjbG9z
ZShERUZGSUxFKTsKKworICBleGl0IDA7Cit9IGVsc2UgeworICBwcmludCAkQVJHVlswXSAuICIg
bm90IGZvdW5kIGluICRHUlVCRElSL21lbnUubHN0XG4iOworICBleGl0IDE7Cit9CisKZGlmZiAt
LWdpdCBhL2xpYi9kZXZpY2UuYyBiL2xpYi9kZXZpY2UuYwppbmRleCBkMDY2M2IzLi5kZGQ0Njg3
IDEwMDY0NAotLS0gYS9saWIvZGV2aWNlLmMKKysrIGIvbGliL2RldmljZS5jCkBAIC0xMzEsNiAr
MTMxLDEyMiBAQCBnZXRfa2ZyZWVic2RfdmVyc2lvbiAoKQogI2luY2x1ZGUgPHNoYXJlZC5oPgog
I2luY2x1ZGUgPGRldmljZS5oPgogCisjaWYgZGVmaW5lZChfX2xpbnV4X18pCisvKiBUaGUgMi42
IGtlcm5lbCBoYXMgcmVtb3ZlZCBhbGwgb2YgdGhlIGdlb21ldHJ5IGhhbmRsaW5nIGZvciBJREUg
ZHJpdmVzCisgKiB0aGF0IGRpZCBmaXh1cHMgZm9yIExCQSwgZXRjLiAgVGhpcyBtZWFucyB0aGF0
IHRoZSBnZW9tZXRyeSB3ZSBnZXQKKyAqIHdpdGggdGhlIGlvY3RsIGhhcyBhIGdvb2QgY2hhbmNl
IG9mIGJlaW5nIHdyb25nLiAgU28sIHdlIGdldCB0byAKKyAqIGFsc28ga25vdyBhYm91dCBwYXJ0
aXRpb24gdGFibGVzIGFuZCB0cnkgdG8gcmVhZCB3aGF0IHRoZSBnZW9tZXRyeQorICogaXMgdGhl
cmUuICpncnVtYmxlKiAgIFZlcnkgY2xvc2VseSBiYXNlZCBvbiBjb2RlIGZyb20gY2ZkaXNrCisg
Ki8KK3N0YXRpYyB2b2lkIGdldF9rZXJuZWxfZ2VvbWV0cnkoaW50IGZkLCBpbnQgKmN5bCwgaW50
ICpoZWFkcywgaW50ICpzZWN0b3JzKSB7CisgICAgc3RydWN0IGhkX2dlb21ldHJ5IGhkZzsKKyAg
ICAKKyAgICBpZiAoaW9jdGwgKGZkLCBIRElPX0dFVEdFTywgJmhkZykpCisgICAgICAgIHJldHVy
bjsKKworICAgICpjeWwgPSBoZGcuY3lsaW5kZXJzOworICAgICpoZWFkcyA9IGhkZy5oZWFkczsK
KyAgICAqc2VjdG9ycyA9IGhkZy5zZWN0b3JzOworfQorCitzdHJ1Y3QgcGFydGl0aW9uIHsKKyAg
ICAgICAgdW5zaWduZWQgY2hhciBib290X2luZDsgICAgICAgICAvKiAweDgwIC0gYWN0aXZlICov
CisgICAgICAgIHVuc2lnbmVkIGNoYXIgaGVhZDsgICAgICAgICAgICAgLyogc3RhcnRpbmcgaGVh
ZCAqLworICAgICAgICB1bnNpZ25lZCBjaGFyIHNlY3RvcjsgICAgICAgICAgIC8qIHN0YXJ0aW5n
IHNlY3RvciAqLworICAgICAgICB1bnNpZ25lZCBjaGFyIGN5bDsgICAgICAgICAgICAgIC8qIHN0
YXJ0aW5nIGN5bGluZGVyICovCisgICAgICAgIHVuc2lnbmVkIGNoYXIgc3lzX2luZDsgICAgICAg
ICAgLyogV2hhdCBwYXJ0aXRpb24gdHlwZSAqLworICAgICAgICB1bnNpZ25lZCBjaGFyIGVuZF9o
ZWFkOyAgICAgICAgIC8qIGVuZCBoZWFkICovCisgICAgICAgIHVuc2lnbmVkIGNoYXIgZW5kX3Nl
Y3RvcjsgICAgICAgLyogZW5kIHNlY3RvciAqLworICAgICAgICB1bnNpZ25lZCBjaGFyIGVuZF9j
eWw7ICAgICAgICAgIC8qIGVuZCBjeWxpbmRlciAqLworICAgICAgICB1bnNpZ25lZCBjaGFyIHN0
YXJ0NFs0XTsgICAgICAgIC8qIHN0YXJ0aW5nIHNlY3RvciBjb3VudGluZyBmcm9tIDAgKi8KKyAg
ICAgICAgdW5zaWduZWQgY2hhciBzaXplNFs0XTsgICAgICAgICAvKiBuciBvZiBzZWN0b3JzIGlu
IHBhcnRpdGlvbiAqLworfTsKKworI2RlZmluZSBBTElHTk1FTlQgMgordHlwZWRlZiB1bmlvbiB7
CisgICAgc3RydWN0IHsKKwl1bnNpZ25lZCBjaGFyIGFsaWduW0FMSUdOTUVOVF07CisJdW5zaWdu
ZWQgY2hhciBiW1NFQ1RPUl9TSVpFXTsKKyAgICB9IGM7CisgICAgc3RydWN0IHsKKwl1bnNpZ25l
ZCBjaGFyIGFsaWduW0FMSUdOTUVOVF07CisJdW5zaWduZWQgY2hhciBidWZmZXJbMHgxQkVdOwor
CXN0cnVjdCBwYXJ0aXRpb24gcGFydFs0XTsKKwl1bnNpZ25lZCBjaGFyIG1hZ2ljZmxhZ1syXTsK
KyAgICB9IHA7Cit9IHBhcnRpdGlvbl90YWJsZTsKKworI2RlZmluZSBQQVJUX1RBQkxFX0ZMQUcw
IDB4NTUKKyNkZWZpbmUgUEFSVF9UQUJMRV9GTEFHMSAweEFBCisKK3N0YXRpYyB2b2lkCitnZXRf
cGFydGl0aW9uX3RhYmxlX2dlb21ldHJ5KHBhcnRpdGlvbl90YWJsZSAqYnVmcCwgaW50ICpjeWws
IGludCAqaGVhZHMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnNlY3RvcnMp
IHsKKyAgICBzdHJ1Y3QgcGFydGl0aW9uICpwOworICAgIGludCBpLGgscyxoaCxzczsKKyAgICBp
bnQgZmlyc3QgPSAxOworICAgIGludCBiYWQgPSAwOworCisgICAgaWYgKGJ1ZnAtPnAubWFnaWNm
bGFnWzBdICE9IFBBUlRfVEFCTEVfRkxBRzAgfHwKKwlidWZwLT5wLm1hZ2ljZmxhZ1sxXSAhPSBQ
QVJUX1RBQkxFX0ZMQUcxKSB7CisJICAgIC8qIE1hdHRoZXcgV2lsY294OiBzbGlnaHRseSBmcmll
bmRsaWVyIHZlcnNpb24gb2YKKwkgICAgICAgZmF0YWwoXygiQmFkIHNpZ25hdHVyZSBvbiBwYXJ0
aXRpb24gdGFibGUiKSwgMyk7CisJICAgICovCisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwg
IlVua25vd24gcGFydGl0aW9uIHRhYmxlIHNpZ25hdHVyZVxuIik7CisJICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBoaCA9IHNzID0gMDsKKyAgICBmb3IgKGk9MDsgaTw0OyBpKyspIHsKKwlwID0g
JihidWZwLT5wLnBhcnRbaV0pOworCWlmIChwLT5zeXNfaW5kICE9IDApIHsKKwkgICAgaCA9IHAt
PmVuZF9oZWFkICsgMTsKKwkgICAgcyA9IChwLT5lbmRfc2VjdG9yICYgMDc3KTsKKwkgICAgaWYg
KGZpcnN0KSB7CisJCWhoID0gaDsKKwkJc3MgPSBzOworCQlmaXJzdCA9IDA7CisJICAgIH0gZWxz
ZSBpZiAoaGggIT0gaCB8fCBzcyAhPSBzKQorCQliYWQgPSAxOworCX0KKyAgICB9CisKKyAgICBp
ZiAoIWZpcnN0ICYmICFiYWQpIHsKKwkqaGVhZHMgPSBoaDsKKwkqc2VjdG9ycyA9IHNzOworICAg
IH0KK30KKworc3RhdGljIHZvaWQgZ2V0X2xpbnV4X2dlb21ldHJ5IChpbnQgZmQsIHN0cnVjdCBn
ZW9tZXRyeSAqZ2VvbSkgeworICAgIGludCBrZXJuX2N5bCA9IDAsIGtlcm5faGVhZCA9IDAsIGtl
cm5fc2VjdG9ycyA9IDA7CisgICAgaW50IHB0X2N5bCA9IDAsIHB0X2hlYWQgPSAwLCBwdF9zZWN0
b3JzID0gMDsKKyAgICBwYXJ0aXRpb25fdGFibGUgYnVmcDsKKworICAgIGdldF9rZXJuZWxfZ2Vv
bWV0cnkoZmQsICZrZXJuX2N5bCwgJmtlcm5faGVhZCwgJmtlcm5fc2VjdG9ycyk7CisKKyAgICBp
ZiAocmVhZChmZCwgYnVmcC5jLmIsIFNFQ1RPUl9TSVpFKSA9PSBTRUNUT1JfU0laRSkgeworICAg
ICAgICBnZXRfcGFydGl0aW9uX3RhYmxlX2dlb21ldHJ5KCZidWZwLCAmcHRfY3lsLCAmcHRfaGVh
ZCwgJnB0X3NlY3RvcnMpOworICAgIH0gZWxzZSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAi
VW5hYmxlIHRvIHJlYWQgcGFydGl0aW9uIHRhYmxlOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsK
KyAgICB9CisKKyAgICBpZiAocHRfaGVhZCAmJiBwdF9zZWN0b3JzKSB7CisgICAgICAgIGludCBj
eWxfc2l6ZTsKKworICAgICAgICBnZW9tLT5oZWFkcyA9IHB0X2hlYWQ7CisgICAgICAgIGdlb20t
PnNlY3RvcnMgPSBwdF9zZWN0b3JzOworICAgICAgICBjeWxfc2l6ZSA9IHB0X2hlYWQgKiBwdF9z
ZWN0b3JzOworICAgICAgICBnZW9tLT5jeWxpbmRlcnMgPSBnZW9tLT50b3RhbF9zZWN0b3JzL2N5
bF9zaXplOworICAgIH0gZWxzZSB7CisgICAgICAgIGdlb20tPmhlYWRzID0ga2Vybl9oZWFkOwor
ICAgICAgICBnZW9tLT5zZWN0b3JzID0ga2Vybl9zZWN0b3JzOworICAgICAgICBnZW9tLT5jeWxp
bmRlcnMgPSBrZXJuX2N5bDsKKyAgICB9CisKKyAgICByZXR1cm47Cit9CisjZW5kaWYKKwogLyog
R2V0IHRoZSBnZW9tZXRyeSBvZiBhIGRyaXZlIERSSVZFLiAgKi8KIHZvaWQKIGdldF9kcml2ZV9n
ZW9tZXRyeSAoc3RydWN0IGdlb21ldHJ5ICpnZW9tLCBjaGFyICoqbWFwLCBpbnQgZHJpdmUpCkBA
IC0xNTEsMjAgKzI2NywxNiBAQCBnZXRfZHJpdmVfZ2VvbWV0cnkgKHN0cnVjdCBnZW9tZXRyeSAq
Z2VvbSwgY2hhciAqKm1hcCwgaW50IGRyaXZlKQogI2lmIGRlZmluZWQoX19saW51eF9fKQogICAv
KiBMaW51eCAqLwogICB7Ci0gICAgc3RydWN0IGhkX2dlb21ldHJ5IGhkZzsKICAgICB1bnNpZ25l
ZCBsb25nIG5yOwogICAgIAotICAgIGlmIChpb2N0bCAoZmQsIEhESU9fR0VUR0VPLCAmaGRnKSkK
LSAgICAgIGdvdG8gZmFpbDsKLQogICAgIGlmIChpb2N0bCAoZmQsIEJMS0dFVFNJWkUsICZucikp
CiAgICAgICBnb3RvIGZhaWw7Ci0gICAgCi0gICAgLyogR290IHRoZSBnZW9tZXRyeSwgc28gc2F2
ZSBpdC4gKi8KLSAgICBnZW9tLT5jeWxpbmRlcnMgPSBoZGcuY3lsaW5kZXJzOwotICAgIGdlb20t
PmhlYWRzID0gaGRnLmhlYWRzOwotICAgIGdlb20tPnNlY3RvcnMgPSBoZGcuc2VjdG9yczsKKwog
ICAgIGdlb20tPnRvdGFsX3NlY3RvcnMgPSBucjsKKyAgICBnZXRfbGludXhfZ2VvbWV0cnkoZmQs
IGdlb20pOworCisgICAgaWYgKCFnZW9tLT5oZWFkcyAmJiAhZ2VvbS0+Y3lsaW5kZXJzICYmICFn
ZW9tLT5zZWN0b3JzKQorICAgICAgICBnb3RvIGZhaWw7CiAgICAgCiAgICAgZ290byBzdWNjZXNz
OwogICB9CkBAIC00MDMsMTAgKzUxNSwyNyBAQCBnZXRfZGFjOTYwX2Rpc2tfbmFtZSAoY2hhciAq
bmFtZSwgaW50IGNvbnRyb2xsZXIsIGludCBkcml2ZSkKIH0KIAogc3RhdGljIHZvaWQKK2dldF9j
Y2lzc19kaXNrX25hbWUgKGNoYXIgKiBuYW1lLCBpbnQgY29udHJvbGxlciwgaW50IGRyaXZlKQor
eworICBzcHJpbnRmIChuYW1lLCAiL2Rldi9jY2lzcy9jJWRkJWQiLCBjb250cm9sbGVyLCBkcml2
ZSk7Cit9CisKK3N0YXRpYyB2b2lkCitnZXRfY3BxYXJyYXlfZGlza19uYW1lIChjaGFyICogbmFt
ZSwgaW50IGNvbnRyb2xsZXIsIGludCBkcml2ZSkKK3sKKyAgc3ByaW50ZiAobmFtZSwgIi9kZXYv
aWRhL2MlZGQlZCIsIGNvbnRyb2xsZXIsIGRyaXZlKTsKK30KK3N0YXRpYyB2b2lkCiBnZXRfYXRh
cmFpZF9kaXNrX25hbWUgKGNoYXIgKm5hbWUsIGludCB1bml0KQogewogICBzcHJpbnRmIChuYW1l
LCAiL2Rldi9hdGFyYWlkL2QlYyIsIHVuaXQgKyAnMCcpOwogfQorCitzdGF0aWMgdm9pZAorZ2V0
X2kyb19kaXNrX25hbWUgKGNoYXIgKm5hbWUsIGludCB1bml0KQoreworICBzcHJpbnRmIChuYW1l
LCAiL2Rldi9pMm8vaGQlYyIsIHVuaXQgKyAnYScpOworfQogI2VuZGlmCiAKIC8qIENoZWNrIGlm
IERFVklDRSBjYW4gYmUgcmVhZC4gSWYgYW4gZXJyb3Igb2NjdXJzLCByZXR1cm4gemVybywKQEAg
LTUxNSw2ICs2NDQsNyBAQCByZWFkX2RldmljZV9tYXAgKEZJTEUgKmZwLCBjaGFyICoqbWFwLCBj
b25zdCBjaGFyICptYXBfZmlsZSkKICAgICAgcHJvYmluZyBkZXZpY2VzLiAgKi8KICAgY2hhciBi
dWZbMTAyNF07CQkvKiBYWFggKi8KICAgaW50IGxpbmVfbnVtYmVyID0gMDsKKyAgaW50IHJldHZh
bCA9IDA7CQkvKiBkZWZhdWx0IHRvIGZhaWx1cmUgKi8KICAgCiAgIHdoaWxlIChmZ2V0cyAoYnVm
LCBzaXplb2YgKGJ1ZiksIGZwKSkKICAgICB7CkBAIC01NDEsMTQgKzY3MSwxNCBAQCByZWFkX2Rl
dmljZV9tYXAgKEZJTEUgKmZwLCBjaGFyICoqbWFwLCBjb25zdCBjaGFyICptYXBfZmlsZSkKICAg
ICAgIGlmICgqcHRyICE9ICcoJykKIAl7CiAJICBzaG93X2Vycm9yIChsaW5lX251bWJlciwgIk5v
IG9wZW4gcGFyZW50aGVzaXMgZm91bmQiKTsKLQkgIHJldHVybiAwOworCSAgY29udGludWU7CiAJ
fQogICAgICAgCiAgICAgICBwdHIrKzsKICAgICAgIGlmICgoKnB0ciAhPSAnZicgJiYgKnB0ciAh
PSAnaCcpIHx8ICoocHRyICsgMSkgIT0gJ2QnKQogCXsKIAkgIHNob3dfZXJyb3IgKGxpbmVfbnVt
YmVyLCAiQmFkIGRyaXZlIG5hbWUiKTsKLQkgIHJldHVybiAwOworCSAgY29udGludWU7CiAJfQog
ICAgICAgCiAgICAgICBpZiAoKnB0ciA9PSAnZicpCkBAIC01NTksNyArNjg5LDcgQEAgcmVhZF9k
ZXZpY2VfbWFwIChGSUxFICpmcCwgY2hhciAqKm1hcCwgY29uc3QgY2hhciAqbWFwX2ZpbGUpCiAg
ICAgICBpZiAoZHJpdmUgPCAwKQogCXsKIAkgIHNob3dfZXJyb3IgKGxpbmVfbnVtYmVyLCAiQmFk
IGRldmljZSBudW1iZXIiKTsKLQkgIHJldHVybiAwOworCSAgY29udGludWU7CiAJfQogICAgICAg
ZWxzZSBpZiAoZHJpdmUgPiAxMjcpCiAJewpAQCAtNTc1LDcgKzcwNSw3IEBAIHJlYWRfZGV2aWNl
X21hcCAoRklMRSAqZnAsIGNoYXIgKiptYXAsIGNvbnN0IGNoYXIgKm1hcF9maWxlKQogICAgICAg
aWYgKCpwdHIgIT0gJyknKQogCXsKIAkgIHNob3dfZXJyb3IgKGxpbmVfbnVtYmVyLCAiTm8gY2xv
c2UgcGFyZW50aGVzaXMgZm91bmQiKTsKLQkgIHJldHVybiAwOworCSAgY29udGludWU7CiAJfQog
ICAgICAgCiAgICAgICBwdHIrKzsKQEAgLTU4Niw3ICs3MTYsNyBAQCByZWFkX2RldmljZV9tYXAg
KEZJTEUgKmZwLCBjaGFyICoqbWFwLCBjb25zdCBjaGFyICptYXBfZmlsZSkKICAgICAgIGlmICgh
ICpwdHIpCiAJewogCSAgc2hvd19lcnJvciAobGluZV9udW1iZXIsICJObyBmaWxlbmFtZSBmb3Vu
ZCIpOwotCSAgcmV0dXJuIDA7CisJICBjb250aW51ZTsKIAl9CiAgICAgICAKICAgICAgIC8qIFRl
cm1pbmF0ZSB0aGUgZmlsZW5hbWUuICAqLwpAQCAtNjA0LDkgKzczNCwxMSBAQCByZWFkX2Rldmlj
ZV9tYXAgKEZJTEUgKmZwLCBjaGFyICoqbWFwLCBjb25zdCBjaGFyICptYXBfZmlsZSkKICAgICAg
IAogICAgICAgbWFwW2RyaXZlXSA9IHN0cmR1cCAocHRyKTsKICAgICAgIGFzc2VydCAobWFwW2Ry
aXZlXSk7CisKKyAgICAgIHJldHZhbCA9IDE7CS8qIGF0IGxlYXN0IDEgZHJpdmUgY29uZmlndXJl
ZCBzdWNjZXNzZnVsbHkgKi8KICAgICB9CiAgIAotICByZXR1cm4gMTsKKyAgcmV0dXJuIHJldHZh
bDsKIH0KIAogLyogSW5pdGlhbGl6ZSB0aGUgZGV2aWNlIG1hcCBNQVAuICpNQVAgd2lsbCBiZSBh
bGxvY2F0ZWQgZnJvbSB0aGUgaGVhcApAQCAtNzgyLDcgKzkxNCw3IEBAIGluaXRfZGV2aWNlX21h
cCAoY2hhciAqKiptYXAsIGNvbnN0IGNoYXIgKm1hcF9maWxlLCBpbnQgZmxvcHB5X2Rpc2tzKQog
ICAgIAogICAgIGZvciAoY29udHJvbGxlciA9IDA7IGNvbnRyb2xsZXIgPCA4OyBjb250cm9sbGVy
KyspCiAgICAgICB7Ci0JZm9yIChkcml2ZSA9IDA7IGRyaXZlIDwgMTU7IGRyaXZlKyspCisJZm9y
IChkcml2ZSA9IDA7IGRyaXZlIDwgMzI7IGRyaXZlKyspCiAJICB7CiAJICAgIGNoYXIgbmFtZVsy
NF07CiAJICAgIApAQCAtODAxLDYgKzkzMyw5MCBAQCBpbml0X2RldmljZV9tYXAgKGNoYXIgKioq
bWFwLCBjb25zdCBjaGFyICptYXBfZmlsZSwgaW50IGZsb3BweV9kaXNrcykKIAkgIH0KICAgICAg
IH0KICAgfQorCisgIC8qIEkyTyBkaXNrcy4gICovCisgIGZvciAoaSA9IDA7IGkgPCA4OyBpKysp
CisgICAgeworICAgICAgY2hhciBuYW1lWzE2XTsKKyAgICAgIAorICAgICAgZ2V0X2kyb19kaXNr
X25hbWUgKG5hbWUsIGkpOworICAgICAgaWYgKGNoZWNrX2RldmljZSAobmFtZSkpCisJeworCSAg
KCptYXApW251bV9oZCArIDB4ODBdID0gc3RyZHVwIChuYW1lKTsKKwkgIGFzc2VydCAoKCptYXAp
W251bV9oZCArIDB4ODBdKTsKKwkgIAorCSAgLyogSWYgdGhlIGRldmljZSBtYXAgZmlsZSBpcyBv
cGVuZWQsIHdyaXRlIHRoZSBtYXAuICAqLworCSAgaWYgKGZwKQorCSAgICBmcHJpbnRmIChmcCwg
IihoZCVkKVx0JXNcbiIsIG51bV9oZCwgbmFtZSk7CisJICAKKwkgIG51bV9oZCsrOworCX0KKyAg
ICB9CisgIAorI2VuZGlmIC8qIF9fbGludXhfXyAqLworCisjaWZkZWYgX19saW51eF9fCisgIC8q
IFRoaXMgaXMgZm9yIGNjaXNzIC0gd2UgaGF2ZQorICAgICAvZGV2L2NjaXNzL2M8Y29udHJvbGxl
cj5kPGxvZ2ljYWwgZHJpdmU+cDxwYXJ0aXRpb24+LgorICAgICAKKyAgICAgY2Npc3MgZHJpdmVy
IGN1cnJlbnRseSBzdXBwb3J0cyB1cCB0byA4IGNvbnRyb2xsZXJzLCAxNiBsb2dpY2FsCisgICAg
IGRyaXZlcywgYW5kIDcgcGFydGl0aW9ucy4gICovCisgIHsKKyAgICBpbnQgY29udHJvbGxlciwg
ZHJpdmU7CisgICAgCisgICAgZm9yIChjb250cm9sbGVyID0gMDsgY29udHJvbGxlciA8IDg7IGNv
bnRyb2xsZXIrKykKKyAgICAgIHsKKwlmb3IgKGRyaXZlID0gMDsgZHJpdmUgPCAxNjsgZHJpdmUr
KykKKwkgIHsKKwkgICAgY2hhciBuYW1lWzI0XTsKKwkgICAgCisJICAgIGdldF9jY2lzc19kaXNr
X25hbWUgKG5hbWUsIGNvbnRyb2xsZXIsIGRyaXZlKTsKKwkgICAgaWYgKGNoZWNrX2RldmljZSAo
bmFtZSkpCisJICAgICAgeworCQkoKm1hcClbbnVtX2hkICsgMHg4MF0gPSBzdHJkdXAgKG5hbWUp
OworCQlhc3NlcnQgKCgqbWFwKVtudW1faGQgKyAweDgwXSk7CisJCQorCQkvKiBJZiB0aGUgZGV2
aWNlIG1hcCBmaWxlIGlzIG9wZW5lZCwgd3JpdGUgdGhlIG1hcC4gICovCisJCWlmIChmcCkKKwkJ
ICBmcHJpbnRmIChmcCwgIihoZCVkKVx0JXNcbiIsIG51bV9oZCwgbmFtZSk7CisJCQorCQludW1f
aGQrKzsKKwkgICAgICB9CisJICB9CisgICAgICB9CisgIH0KKyNlbmRpZiAvKiBfX2xpbnV4X18g
Ki8KKworI2lmZGVmIF9fbGludXhfXworICAvKiBUaGlzIGlzIGZvciBjcHFhcnJheSAtIHdlIGhh
dmUKKyAgICAgL2Rldi9pZGEvYzxjb250cm9sbGVyPmQ8bG9naWNhbCBkcml2ZT5wPHBhcnRpdGlv
bj4uCisgICAgIAorICAgICBjcHFhcnJheSBkcml2ZXIgY3VycmVudGx5IHN1cHBvcnRzIHVwIHRv
IDggY29udHJvbGxlcnMsIDE2IGxvZ2ljYWwKKyAgICAgZHJpdmVzLCBhbmQgMTUgcGFydGl0aW9u
cy4gICovCisgIHsKKyAgICBpbnQgY29udHJvbGxlciwgZHJpdmU7CisgICAgCisgICAgZm9yIChj
b250cm9sbGVyID0gMDsgY29udHJvbGxlciA8IDg7IGNvbnRyb2xsZXIrKykKKyAgICAgIHsKKwlm
b3IgKGRyaXZlID0gMDsgZHJpdmUgPCAxNTsgZHJpdmUrKykKKwkgIHsKKwkgICAgY2hhciBuYW1l
WzI0XTsKKwkgICAgCisJICAgIGdldF9jcHFhcnJheV9kaXNrX25hbWUgKG5hbWUsIGNvbnRyb2xs
ZXIsIGRyaXZlKTsKKwkgICAgaWYgKGNoZWNrX2RldmljZSAobmFtZSkpCisJICAgICAgeworCQko
Km1hcClbbnVtX2hkICsgMHg4MF0gPSBzdHJkdXAgKG5hbWUpOworCQlhc3NlcnQgKCgqbWFwKVtu
dW1faGQgKyAweDgwXSk7CisJCQorCQkvKiBJZiB0aGUgZGV2aWNlIG1hcCBmaWxlIGlzIG9wZW5l
ZCwgd3JpdGUgdGhlIG1hcC4gICovCisJCWlmIChmcCkKKwkJICBmcHJpbnRmIChmcCwgIihoZCVk
KVx0JXNcbiIsIG51bV9oZCwgbmFtZSk7CisJCQorCQludW1faGQrKzsKKwkgICAgICB9CisJICB9
CisgICAgICB9CisgIH0KICNlbmRpZiAvKiBfX2xpbnV4X18gKi8KICAgCiAgIC8qIE9LLCBjbG9z
ZSB0aGUgZGV2aWNlIG1hcCBmaWxlIGlmIG9wZW5lZC4gICovCkBAIC04MzEsOSArMTA0NywxMSBA
QCBpbnQKIGlzX2Rpc2tfZGV2aWNlIChjaGFyICoqbWFwLCBpbnQgZHJpdmUpCiB7CiAgIHN0cnVj
dCBzdGF0IHN0OworICBpbnQgcmV0dmFsOwogICAKICAgYXNzZXJ0IChtYXBbZHJpdmVdICE9IDAp
OwotICBhc3NlcnQgKHN0YXQgKG1hcFtkcml2ZV0sICZzdCkgPT0gMCk7CisgIHJldHZhbCA9IHN0
YXQgKG1hcFtkcml2ZV0sICZzdCk7CisgIGFzc2VydCAocmV0dmFsID09IDApOwogICAvKiBGb3Ig
bm93LCBkaXNrIGRldmljZXMgdW5kZXIgTGludXggYXJlIGFsbCBibG9jayBkZXZpY2VzLiAgKi8K
ICAgcmV0dXJuIFNfSVNCTEsgKHN0LnN0X21vZGUpOwogfQpAQCAtODQzLDcgKzEwNjEsNyBAQCB3
cml0ZV90b19wYXJ0aXRpb24gKGNoYXIgKiptYXAsIGludCBkcml2ZSwgaW50IHBhcnRpdGlvbiwK
IAkJICAgIGludCBzZWN0b3IsIGludCBzaXplLCBjb25zdCBjaGFyICpidWYpCiB7CiAgIGNoYXIg
ZGV2W1BBVEhfTUFYXTsJLyogWFhYICovCi0gIGludCBmZDsKKyAgaW50IGZkLCBsZW4sIHBudW07
CiAgIAogICBpZiAoKHBhcnRpdGlvbiAmIDB4MDBGRjAwKSAhPSAweDAwRkYwMCkKICAgICB7CkBA
IC04NjEsNyArMTA3OSwyMCBAQCB3cml0ZV90b19wYXJ0aXRpb24gKGNoYXIgKiptYXAsIGludCBk
cml2ZSwgaW50IHBhcnRpdGlvbiwKICAgICAgIGlmIChzdHJjbXAgKGRldiArIHN0cmxlbihkZXYp
IC0gNSwgIi9kaXNjIikgPT0gMCkKIAlzdHJjcHkgKGRldiArIHN0cmxlbihkZXYpIC0gNSwgIi9w
YXJ0Iik7CiAgICAgfQotICBzcHJpbnRmIChkZXYgKyBzdHJsZW4oZGV2KSwgIiVkIiwgKChwYXJ0
aXRpb24gPj4gMTYpICYgMHhGRikgKyAxKTsKKworICBsZW4gPSBzdHJsZW4oZGV2KTsKKyAgcG51
bSA9ICgocGFydGl0aW9uID4+IDE2KSAmIDB4RkYpOworICBpZiAoc3RybmNtcCAoZGV2LCAiL2Rl
di9kaXNrL2J5LWlkLyIsIDE2KSA9PSAwKQorICAgIHsKKyAgICAgIHNwcmludGYgKGRldiArIGxl
biwgIi1wYXJ0JWQiLCAgcG51bSArIDEpOworICAgIH0KKyAgZWxzZSBpZiAoaXNkaWdpdChkZXZb
bGVuLTFdKSkKKyAgICB7CisgICAgICAvKiBJdCBpcyBvYnZpb3VzbHkgc29tZSBSQUlEIGRpc2s6
ICIvZGV2Lzxkc2s+L2MwZDAiIC4gInAxIiAqLworICAgICAgc3ByaW50ZiAoZGV2ICsgbGVuLCAi
cCVkIiwgIHBudW0gKyAxKTsKKyAgICB9CisgIGVsc2UKKyAgICBzcHJpbnRmIChkZXYgKyBsZW4s
ICIlZCIsICBwbnVtICsgMSk7CiAgIAogICAvKiBPcGVuIHRoZSBwYXJ0aXRpb24uICAqLwogICBm
ZCA9IG9wZW4gKGRldiwgT19SRFdSKTsKZGlmZiAtLWdpdCBhL25ldGJvb3QvY29uZmlnLmMgYi9u
ZXRib290L2NvbmZpZy5jCmluZGV4IDM5NDlhNjcuLjAwOWU2Y2QgMTAwNjQ0Ci0tLSBhL25ldGJv
b3QvY29uZmlnLmMKKysrIGIvbmV0Ym9vdC9jb25maWcuYwpAQCAtMTIyLDYgKzEyMiwxNCBAQCBz
dGF0aWMgc3RydWN0IHBjaV9kZXZpY2UgcGNpX25pY19saXN0W10gPQogICAgICJJbnRlbCBFdGhl
ckV4cHJlc3NQcm8xMDAgSUQxMDI5IiwgMCwgMCwgMCwgMH0sCiAgIHsgUENJX1ZFTkRPUl9JRF9J
TlRFTCwJUENJX0RFVklDRV9JRF9JTlRFTF9JRDEwMzAsCiAgICAgIkludGVsIENvcnBvcmF0aW9u
IDgyNTU5IEluQnVzaW5lc3MgMTAvMTAwIiwgMCwgMCwgMCwgMH0sCisgIHsgUENJX1ZFTkRPUl9J
RF9JTlRFTCwJUENJX0RFVklDRV9JRF9JTlRFTF9JRDEwMzEsCisgICAgIkludGVsIEV0aGVyRXhw
cmVzc1BybzEwMCBJRDEwMzEiLCAwLCAwLCAwLCAwfSwKKyAgeyBQQ0lfVkVORE9SX0lEX0lOVEVM
LAlQQ0lfREVWSUNFX0lEX0lOVEVMX0lEMTAzOSwKKyAgICAiSW50ZWwgRXRoZXJFeHByZXNzUHJv
MTAwIElEMTAzOSIsIDAsIDAsIDAsIDB9LAorICB7IFBDSV9WRU5ET1JfSURfSU5URUwsCVBDSV9E
RVZJQ0VfSURfSU5URUxfSUQxMDNCLAorICAgICJJbnRlbCA4MjgwMUJEIFBSTy8xMDAgVk0iLCAw
LCAwLCAwLCAwfSwKKyAgeyBQQ0lfVkVORE9SX0lEX0lOVEVMLAlQQ0lfREVWSUNFX0lEX0lOVEVM
X0lEMTA1MCwKKyAgICAiSW50ZWwgRXRoZXJFeHByZXNzUHJvMTAwIDgyNTU1IDEwLzEwMCIsIDAs
IDAsIDAsIDB9LAogICB7IFBDSV9WRU5ET1JfSURfSU5URUwsCVBDSV9ERVZJQ0VfSURfSU5URUxf
ODI1NjIsCiAgICAgIkludGVsIEV0aGVyRXhwcmVzc1BybzEwMCA4MjU2MkVNIiwgMCwgMCwgMCwg
MH0sCiAjZW5kaWYKQEAgLTI4MSw2ICsyODksMTAgQEAgc3RhdGljIHN0cnVjdCBwY2lfZGlzcGF0
Y2hfdGFibGUgUENJX05JQ1tdID0KICAgeyBQQ0lfVkVORE9SX0lEX0lOVEVMLCAgICBQQ0lfREVW
SUNFX0lEX0lOVEVMXzgyNTU5RVIsICAgZWVwcm8xMDBfcHJvYmUgfSwKICAgeyBQQ0lfVkVORE9S
X0lEX0lOVEVMLCAgICBQQ0lfREVWSUNFX0lEX0lOVEVMX0lEMTAyOSwgICAgZWVwcm8xMDBfcHJv
YmUgfSwKICAgeyBQQ0lfVkVORE9SX0lEX0lOVEVMLCAgICBQQ0lfREVWSUNFX0lEX0lOVEVMX0lE
MTAzMCwgICAgZWVwcm8xMDBfcHJvYmUgfSwKKyAgeyBQQ0lfVkVORE9SX0lEX0lOVEVMLCAgICBQ
Q0lfREVWSUNFX0lEX0lOVEVMX0lEMTAzMSwgICAgZWVwcm8xMDBfcHJvYmUgfSwKKyAgeyBQQ0lf
VkVORE9SX0lEX0lOVEVMLCAgICBQQ0lfREVWSUNFX0lEX0lOVEVMX0lEMTAzOSwgICAgZWVwcm8x
MDBfcHJvYmUgfSwKKyAgeyBQQ0lfVkVORE9SX0lEX0lOVEVMLCAgICBQQ0lfREVWSUNFX0lEX0lO
VEVMX0lEMTAzQiwgICAgZWVwcm8xMDBfcHJvYmUgfSwKKyAgeyBQQ0lfVkVORE9SX0lEX0lOVEVM
LCAgICBQQ0lfREVWSUNFX0lEX0lOVEVMX0lEMTA1MCwgICAgZWVwcm8xMDBfcHJvYmUgfSwKICAg
eyBQQ0lfVkVORE9SX0lEX0lOVEVMLCAgICBQQ0lfREVWSUNFX0lEX0lOVEVMXzgyNTYyLCAgICAg
ZWVwcm8xMDBfcHJvYmUgfSwKICMgZW5kaWYgLyogSU5DTFVERV9FRVBSTzEwMCAqLwogIyBpZmRl
ZglJTkNMVURFX0VQSUMxMDAKZGlmZiAtLWdpdCBhL25ldGJvb3QvZnN5c190ZnRwLmMgYi9uZXRi
b290L2ZzeXNfdGZ0cC5jCmluZGV4IGIwMjMzZTguLmMyMTQwYTQgMTAwNjQ0Ci0tLSBhL25ldGJv
b3QvZnN5c190ZnRwLmMKKysrIGIvbmV0Ym9vdC9mc3lzX3RmdHAuYwpAQCAtNDA5LDcgKzQwOSw3
IEBAIHRmdHBfcmVhZCAoY2hhciAqYWRkciwgaW50IHNpemUpCiAvKiBDaGVjayBpZiB0aGUgZmls
ZSBESVJOQU1FIHJlYWxseSBleGlzdHMuIEdldCB0aGUgc2l6ZSBhbmQgc2F2ZSBpdCBpbgogICAg
RklMRU1BWC4gICovCiBpbnQKLXRmdHBfZGlyIChjaGFyICpkaXJuYW1lKQordGZ0cF9kaXIgKGNo
YXIgKmRpcm5hbWUsIHZvaWQgKCpoYW5kbGUpKGNoYXIgKikpCiB7CiAgIGludCBjaDsKIApAQCAt
NDE4LDcgKzQxOCw3IEBAIHRmdHBfZGlyIChjaGFyICpkaXJuYW1lKQogI2VuZGlmCiAgIAogICAv
KiBJbiBURlRQLCB0aGVyZSBpcyBubyB3YXkgdG8ga25vdyB3aGF0IGZpbGVzIGV4aXN0LiAgKi8K
LSAgaWYgKHByaW50X3Bvc3NpYmlsaXRpZXMpCisgIGlmIChoYW5kbGUpCiAgICAgcmV0dXJuIDE7
CiAKICAgLyogRG9uJ3Qga25vdyB0aGUgc2l6ZSB5ZXQuICAqLwpkaWZmIC0tZ2l0IGEvbmV0Ym9v
dC9pODI1ODYuYyBiL25ldGJvb3QvaTgyNTg2LmMKaW5kZXggMTU1NDBjMi4uZjhlYzNmYSAxMDA2
NDQKLS0tIGEvbmV0Ym9vdC9pODI1ODYuYworKysgYi9uZXRib290L2k4MjU4Ni5jCkBAIC03MzUs
NyArNzM1LDcgQEAgc3RhdGljIHVuc2lnbmVkIGNoYXIgZXhvc19pMTg2X2luaXRbXSA9CiBzdGF0
aWMgaW50IGV4b3MyMDVfcHJvYmUyKHZvaWQpCiB7CiAJdW5zaWduZWQgc2hvcnQJCWk7Ci0JdW5z
aWduZWQgc2hvcnQJCXNobWVtWzEwXTsKKwl1bnNpZ25lZCBzaG9ydAkJc2htZW1bMTBdID0geyAw
LDAsMCwwLDAsMCwwLDAsMCwwIH07CiAKIAkvKiBGaXggdGhlIElTQ1AgYWRkcmVzcyBhbmQgYmFz
ZS4gKi8KIAlpbml0X3dvcmRzWzNdID0gc2NiX2Jhc2U7CmRpZmYgLS1naXQgYS9uZXRib290L21h
aW4uYyBiL25ldGJvb3QvbWFpbi5jCmluZGV4IDgyNzU5YjYuLmFiZDkyMTIgMTAwNjQ0Ci0tLSBh
L25ldGJvb3QvbWFpbi5jCisrKyBiL25ldGJvb3QvbWFpbi5jCkBAIC01NCw5ICs1NCw5IEBAIHN0
cnVjdCByb21faW5mbyByb207CiAKIHN0YXRpYyBpbnQgdmVuZG9yZXh0X2lzdmFsaWQ7CiBzdGF0
aWMgdW5zaWduZWQgbG9uZyBuZXRtYXNrOwotc3RhdGljIHN0cnVjdCBib290cGRfdCBib290cF9k
YXRhOworc3RydWN0IGJvb3RwZF90IGJvb3RwX2RhdGE7CiBzdGF0aWMgdW5zaWduZWQgbG9uZyB4
aWQ7Ci1zdGF0aWMgdW5zaWduZWQgY2hhciAqZW5kX29mX3JmYzE1MzMgPSBOVUxMOwordW5zaWdu
ZWQgY2hhciAqZW5kX29mX3JmYzE1MzMgPSBOVUxMOwogCiAjaWZuZGVmCU5PX0RIQ1BfU1VQUE9S
VAogI2VuZGlmIC8qIE5PX0RIQ1BfU1VQUE9SVCAqLwpkaWZmIC0tZ2l0IGEvbmV0Ym9vdC9wY2ku
aCBiL25ldGJvb3QvcGNpLmgKaW5kZXggYTk5ZGMxNC4uY2FjZDhkZSAxMDA2NDQKLS0tIGEvbmV0
Ym9vdC9wY2kuaAorKysgYi9uZXRib290L3BjaS5oCkBAIC0xMjksNiArMTI5LDEwIEBAIF9fYXNt
X18gX192b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBvcGZsIjogLyogbm8gb3V0cHV0ICovIDoiZyIg
KHgpOiJtZW1vcnkiKQogI2RlZmluZSBQQ0lfREVWSUNFX0lEX0lOVEVMXzgyNTU5RVIJMHgxMjA5
CiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfSU5URUxfSUQxMDI5CTB4MTAyOQogI2RlZmluZSBQQ0lf
REVWSUNFX0lEX0lOVEVMX0lEMTAzMAkweDEwMzAKKyNkZWZpbmUgUENJX0RFVklDRV9JRF9JTlRF
TF9JRDEwMzEJMHgxMDMxCisjZGVmaW5lIFBDSV9ERVZJQ0VfSURfSU5URUxfSUQxMDM5CTB4MTAz
OQorI2RlZmluZSBQQ0lfREVWSUNFX0lEX0lOVEVMX0lEMTAzQgkweDEwM0IKKyNkZWZpbmUgUENJ
X0RFVklDRV9JRF9JTlRFTF9JRDEwNTAJMHgxMDUwCiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfSU5U
RUxfODI1NjIJMHgyNDQ5CiAjZGVmaW5lIFBDSV9WRU5ET1JfSURfQU1ECQkweDEwMjIKICNkZWZp
bmUgUENJX0RFVklDRV9JRF9BTURfTEFOQ0UJCTB4MjAwMApkaWZmIC0tZ2l0IGEvc3RhZ2UxL01h
a2VmaWxlLmFtIGIvc3RhZ2UxL01ha2VmaWxlLmFtCmluZGV4IDBhZmMyODUuLjE2ZTA3NmEgMTAw
NjQ0Ci0tLSBhL3N0YWdlMS9NYWtlZmlsZS5hbQorKysgYi9zdGFnZTEvTWFrZWZpbGUuYW0KQEAg
LTEsNCArMSw0IEBACi1wa2dsaWJkaXIgPSAkKGxpYmRpcikvJChQQUNLQUdFKS8kKGhvc3RfY3B1
KS0kKGhvc3RfdmVuZG9yKQorcGtnbGliZGlyID0gL3Vzci9saWIvZ3J1Ygogbm9kaXN0X3BrZ2xp
Yl9EQVRBID0gc3RhZ2UxCiAKIENMRUFORklMRVMgPSAkKG5vZGlzdF9wa2dsaWJfREFUQSkKZGlm
ZiAtLWdpdCBhL3N0YWdlMS9zdGFnZTEuUyBiL3N0YWdlMS9zdGFnZTEuUwppbmRleCA5ODU5NjNk
Li44ODY2MzNmIDEwMDY0NAotLS0gYS9zdGFnZTEvc3RhZ2UxLlMKKysrIGIvc3RhZ2UxL3N0YWdl
MS5TCkBAIC02OSw5ICs2OSwxMiBAQCBtb2RlOgogCS5ieXRlCTAKIGRpc2tfYWRkcmVzc19wYWNr
ZXQ6CQogc2VjdG9yczoKLQkubG9uZwkwCisJLmJ5dGUJMAorCS5hc2NpaQkiR1JVIgogaGVhZHM6
Ci0JLmxvbmcJMAorCS5hc2NpaSAiQiIKKwkuYnl0ZQkwCisJLndvcmQJMAogY3lsaW5kZXJzOgog
CS53b3JkCTAKIHNlY3Rvcl9zdGFydDoKQEAgLTE3Nyw3ICsxODAsMTEgQEAgcmVhbF9zdGFydDoK
IAkvKiBjaGVjayBpZiBBSD0weDQyIGlzIHN1cHBvcnRlZCBpZiBGT1JDRV9MQkEgaXMgemVybyAq
LwogCU1PVl9NRU1fVE9fQUwoQUJTKGZvcmNlX2xiYSkpCS8qIG1vdmIJQUJTKGZvcmNlX2xiYSks
ICVhbCAqLwogCXRlc3RiCSVhbCwgJWFsCisJLyogY2hlY2sgaWYgTEJBIGlzIGZvcmNlZCBPRkYg
MHg4MCA8PSAlYWwgPD0gMHhmZiAqLworCWpzCWNoc19tb2RlCisJLyogb3IgZm9yY2VkIE9OIDB4
MDEgPD0gJWFsIDw9IDB4N2YgKi8KIAlqbnoJbGJhX21vZGUKKwkvKiBvdGhlcndpc2UgdHJ1c3Qg
QklPUyBpbnQncyByZXN1bHQgKi8KIAlhbmR3CSQxLCAlY3gKIAlqegljaHNfbW9kZQogCQpkaWZm
IC0tZ2l0IGEvc3RhZ2UyL01ha2VmaWxlLmFtIGIvc3RhZ2UyL01ha2VmaWxlLmFtCmluZGV4IGY4
ZTZkNDIuLjMzZTEyMzEgMTAwNjQ0Ci0tLSBhL3N0YWdlMi9NYWtlZmlsZS5hbQorKysgYi9zdGFn
ZTIvTWFrZWZpbGUuYW0KQEAgLTI3LDcgKzI3LDcgQEAgbGliZ3J1Yl9hX0NGTEFHUyA9ICQoR1JV
Ql9DRkxBR1MpIC1JJCh0b3Bfc3JjZGlyKS9saWIgXAogCS1EVVNFX01ENV9QQVNTV09SRFM9MSAt
RFNVUFBPUlRfU0VSSUFMPTEgLURTVVBQT1JUX0hFUkNVTEVTPTEKIAogIyBTdGFnZSAyIGFuZCBT
dGFnZSAxLjUncy4KLXBrZ2xpYmRpciA9ICQobGliZGlyKS8kKFBBQ0tBR0UpLyQoaG9zdF9jcHUp
LSQoaG9zdF92ZW5kb3IpCitwa2dsaWJkaXIgPSAvdXNyL2xpYi9ncnViCiAKIEVYVFJBX1BST0dS
QU1TID0gbmJsb2FkZXIuZXhlYyBweGVsb2FkZXIuZXhlYyBkaXNrbGVzcy5leGVjCiAKZGlmZiAt
LWdpdCBhL3N0YWdlMi9hc20uUyBiL3N0YWdlMi9hc20uUwppbmRleCAzNGI2ZTdkLi5lMmIwN2Mw
IDEwMDY0NAotLS0gYS9zdGFnZTIvYXNtLlMKKysrIGIvc3RhZ2UyL2FzbS5TCkBAIC0xMDkxLDcg
KzEwOTEsMTEgQEAgRU5UUlkoY2hlY2tfaW50MTNfZXh0ZW5zaW9ucykKIAkvKiBjaGVjayBpZiBB
SD0weDQyIGlzIHN1cHBvcnRlZCBpZiBGT1JDRV9MQkEgaXMgemVybyAqLwogCW1vdmIJRVhUX0Mo
Zm9yY2VfbGJhKSwgJWFsCiAJdGVzdGIJJWFsLCAlYWwKKwkvKiBjaGVjayBpZiBMQkEgaXMgZm9y
Y2VkIE9GRiAweDgwIDw9ICVhbCA8PSAweGZmICovCisJanMJMWYKKwkvKiBvciBmb3JjZWQgT04g
MHgwMSA8PSAlYWwgPD0gMHg3ZiAqLwogCWpuegkyZgorCS8qIG90aGVyd2lzZSB0cnVzdCBCSU9T
IGludCdzIHJlc3VsdCAqLwogCWFuZHcJJDEsICVjeAogCWpuegkyZgogCQpAQCAtMTYxMCw0OCAr
MTYxNCwzNjkgQEAgRU5UUlkoc2V0X3ZiZV9tb2RlKQogCXBvcGwJJWVicAogCXJldAogCisKKy8q
CisgKiAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0g
LSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0KKyAqCisgKiBncmFwaGljYWwgbWVudSBmdW5jdGlvbnMK
KyAqCisgKi8KKworLyoKKyAqIGludCBnZnhfaW5pdCAoZ2Z4X2RhdGFfdCAqZ2Z4X2RhdGEpCisg
KgorICogaW5pdCBnZnggdGhpbmdzCisgKgorICogcmV0dXJuIHZhbGVzOgorICogICAwOiBvawor
ICogICAxOiBmYWlsZWQKKyAqICAgc2V0cyBnZnhfZGF0YS0+b2sKKyAqLworCitFTlRSWShnZnhf
aW5pdCkKKwlwdXNobAklZWJwCisJbW92bAklZXNwLCAlZWJwCisJCisJcHVzaGwJJWVkaQorCXB1
c2hsCSVlc2kKKwlwdXNobAklZWJ4CisKKwltb3ZsCTgoJWVicCksJWVkeAorCW1vdmwJJWVkeCwl
ZWRpCisJbGVhbAlnZnhfb2ZzX3N5c19jZmcoJWVkeCksJWVzaQorCWFuZGwJJDB4ZiwlZWRpCisJ
c2hybAkkNCwlZWR4CisKKwlwdXNobAklZWJwCisKKwljYWxsCUVYVF9DKHByb3RfdG9fcmVhbCkK
KwkuY29kZTE2CisKKwlwdXNodwklZHMKKwltb3Z3CSVkeCwlZHMKKworCWxjYWxsCSpnZnhfb2Zz
X2ptcF90YWJsZSArIDQgKiAwICglZGkpCisKKwlzYmJsCSVlYngsJWVieAorCW5lZ2wJJWVieAor
CisJcG9wdwklZHMKKworCURBVEEzMgljYWxsCUVYVF9DKHJlYWxfdG9fcHJvdCkKKwkuY29kZTMy
CisKKwlwb3BsCSVlYnAKKworCW1vdmwJJWVieCwlZWF4CisJeG9ybAkkMSwlZWJ4CisJbW92bAk4
KCVlYnApLCVlZHgKKwltb3ZsCSVlYngsZ2Z4X29mc19vayglZWR4KQorCisJcG9wbAklZWJ4CisJ
cG9wbAklZXNpCisJcG9wbAklZWRpCisKKwlwb3BsCSVlYnAKKwlyZXQKKworCisvKgorICogaW50
IGdmeF9kb25lIChnZnhfZGF0YV90ICpnZnhfZGF0YSkKKyAqCisgKiBzaHV0IGRvd24gZ2Z4IHRo
aW5ncworICoKKyAqIHJldHVybiB2YWxlczoKKyAqICAgYWx3YXlzIDAKKyAqICAgc2V0cyBnZnhf
ZGF0YS0+b2sKKyAqLworCitFTlRSWShnZnhfZG9uZSkKKwlwdXNobAklZWJwCisJbW92bAklZXNw
LCAlZWJwCisJCisJcHVzaGwJJWVkaQorCXB1c2hsCSVlc2kKKwlwdXNobAklZWJ4CisKKwltb3Zs
CTgoJWVicCksJWVkeAorCW1vdmwJJWVkeCwlZWJ4CisJYW5kbAkkMHhmLCVlYngKKwlzaHJsCSQ0
LCVlZHgKKworCXB1c2hsCSVlYnAKKworCWNhbGwJRVhUX0MocHJvdF90b19yZWFsKQorCS5jb2Rl
MTYKKworCXB1c2h3CSVkcworCisJbW92dwklZHgsJWRzCisKKwlsY2FsbAkqZ2Z4X29mc19qbXBf
dGFibGUgKyA0ICogMSAoJWJ4KQorCisJcG9wdwklZHMKKworCURBVEEzMgljYWxsCUVYVF9DKHJl
YWxfdG9fcHJvdCkKKwkuY29kZTMyCisKKwlwb3BsCSVlYnAKKworCXhvcmwJJWVheCwlZWF4CisJ
bW92bAk4KCVlYnApLCVlZHgKKwltb3ZsCSVlYXgsZ2Z4X29mc19vayglZWR4KQorCisJcG9wbAkl
ZWJ4CisJcG9wbAklZXNpCisJcG9wbAklZWRpCisKKwlwb3BsCSVlYnAKKwlyZXQKKworCisvKgor
ICogaW50IGdmeF9pbnB1dCAoZ2Z4X2RhdGFfdCAqZ2Z4X2RhdGEsIGludCAqbWVudV9lbnRyeSkK
KyAqCisgKiBsZXQgdXNlciBlbnRlciBhIGNvbW1hbmQgbGluZQorICoKKyAqIHVzZXMgZ2Z4X2Rh
dGEtPmNtZGxpbmUgYXMgYnVmZmVyCisgKgorICogcmV0dXJuIHZhbHVlczoKKyAqICAgMTogYWJv
cnQKKyAqICAgMjogYm9vdAorICogICBtZW51X2VudHJ5OiBzZWxlY3RlZCBlbnRyeQorICovCisK
K0VOVFJZKGdmeF9pbnB1dCkKKwlwdXNobAklZWJwCisJbW92bAklZXNwLCAlZWJwCisJCisJcHVz
aGwJJWVkaQorCXB1c2hsCSVlc2kKKwlwdXNobAklZWJ4CisKKwltb3ZsCTgoJWVicCksJWVkeAor
CW1vdmwJJWVkeCwlZWJ4CisJbGVhbAlnZnhfb2ZzX3N5c19jZmcoJWVkeCksJWVzaQorCWFuZGwJ
JDB4ZiwlZWJ4CisJc2hybAkkNCwlZWR4CisKKwlwdXNobAklZWJwCisKKwljYWxsCUVYVF9DKHBy
b3RfdG9fcmVhbCkKKwkuY29kZTE2CisKKwlwdXNodwklZHMKKworCW1vdncJJWR4LCVkcworCisJ
bW92bAlnZnhfb2ZzX2NtZGxpbmUoJWJ4KSwlZWRpCisJbW92bAlnZnhfb2ZzX2NtZGxpbmVfbGVu
KCVieCksJWVjeAorCW1vdmwJZ2Z4X29mc190aW1lb3V0KCVieCksJWVheAorCWltdWxsCSQxOCwl
ZWF4CisKKwlsY2FsbAkqZ2Z4X29mc19qbXBfdGFibGUgKyA0ICogMiAoJWJ4KQorCisJbW92bAkl
ZWF4LCVlY3gKKworCXBvcHcJJWRzCisKKwlEQVRBMzIJY2FsbAlFWFRfQyhyZWFsX3RvX3Byb3Qp
CisJLmNvZGUzMgorCisJcG9wbAklZWJwCisKKwltb3ZsCTEyKCVlYnApLCVlZHgKKwltb3ZsCSVl
YngsKCVlZHgpCisKKwltb3ZsCSVlY3gsJWVheAorCisJcG9wbAklZWJ4CisJcG9wbAklZXNpCisJ
cG9wbAklZWRpCisKKwlwb3BsCSVlYnAKKwlyZXQKKworCisvKgorICogaW50IGdmeF9zZXR1cF9t
ZW51IChnZnhfZGF0YV90ICpnZnhfZGF0YSkKKyAqCisgKiBkcmF3IGJvb3QgbWVudQorICoKKyAq
IHJldHVybiB2YWx1ZXM6CisgKiAgIGFsd2F5cyAwCisgKi8KKworLyogbWVudSBlbnRyeSBkZXNj
cmlwdG9yICovCisjZGVmaW5lIG1lbnVfZW50cmllcwkJMAorI2RlZmluZSBtZW51X2RlZmF1bHQJ
CTIJLyogc2VnOm9mcyAqLworI2RlZmluZSBtZW51X2VudF9saXN0CQk2CS8qIHNlZzpvZnMgKi8K
KyNkZWZpbmUgbWVudV9lbnRfc2l6ZQkJMTAKKyNkZWZpbmUgbWVudV9hcmdfbGlzdAkJMTIJLyog
c2VnOm9mcyAqLworI2RlZmluZSBtZW51X2FyZ19zaXplCQkxNgorI2RlZmluZSBzaXplb2ZfbWVu
dV9kZXNjCTE4CisKK0VOVFJZKGdmeF9zZXR1cF9tZW51KQorCXB1c2hsCSVlYnAKKwltb3ZsCSVl
c3AsICVlYnAKKwkKKwlwdXNobAklZWRpCisJcHVzaGwJJWVzaQorCXB1c2hsCSVlYngKKworCW1v
dmwJOCglZWJwKSwlZWR4CisJbW92bAklZWR4LCVlYngKKwlhbmRsCSQweGYsJWVieAorCXNocmwJ
JDQsJWVkeAorCisJY2FsbAlFWFRfQyhwcm90X3RvX3JlYWwpCisJLmNvZGUxNgorCisJcHVzaHcJ
JWRzCisKKwltb3Z3CSVkeCwlZHMKKwlzaGxsCSQ0LCVlZHgKKworCXN1YncJJHNpemVvZl9tZW51
X2Rlc2MsJXNwCisJbW92dwklZXNwLCVlYnAKKworCW1vdmwJZ2Z4X29mc19tZW51X2VudHJpZXMo
JWJ4KSwlZWF4CisJbW92dwklYXgsbWVudV9lbnRyaWVzKCVicCkKKworCW1vdmwJZ2Z4X29mc19t
ZW51X2RlZmF1bHRfZW50cnkoJWJ4KSwlZWF4CisJc3VibAklZWR4LCVlYXgKKwltb3Z3CSVheCxt
ZW51X2RlZmF1bHQoJWJwKQorCW1vdncJJWRzLG1lbnVfZGVmYXVsdCsyKCVicCkKKworCW1vdmwJ
Z2Z4X29mc19tZW51X2xpc3QoJWJ4KSwlZWF4CisJc3VibAklZWR4LCVlYXgKKwltb3Z3CSVheCxt
ZW51X2VudF9saXN0KCVicCkKKwltb3Z3CSVkcyxtZW51X2VudF9saXN0KzIoJWJwKQorCisJbW92
bAlnZnhfb2ZzX21lbnVfZW50cnlfbGVuKCVieCksJWVheAorCW1vdncJJWF4LG1lbnVfZW50X3Np
emUoJWJwKQorCisJbW92bAlnZnhfb2ZzX2FyZ3NfbGlzdCglYngpLCVlYXgKKwlzdWJsCSVlZHgs
JWVheAorCW1vdncJJWF4LG1lbnVfYXJnX2xpc3QoJWJwKQorCW1vdncJJWRzLG1lbnVfYXJnX2xp
c3QrMiglYnApCisKKwltb3ZsCWdmeF9vZnNfYXJnc19lbnRyeV9sZW4oJWJ4KSwlZWF4CisJbW92
dwklYXgsbWVudV9hcmdfc2l6ZSglYnApCisKKwltb3ZsCSVzcywlZXNpCisJc2hsbAkkNCwlZXNp
CisJYWRkbAklZWJwLCVlc2kKKwkKKwlsY2FsbAklZHM6ICpnZnhfb2ZzX2ptcF90YWJsZSArIDQg
KiAzICglYngpCisKKwlhZGR3CSRzaXplb2ZfbWVudV9kZXNjLCVzcAorCisJcG9wdwklZHMKKwor
CURBVEEzMgljYWxsCUVYVF9DKHJlYWxfdG9fcHJvdCkKKwkuY29kZTMyCisKKwl4b3JsCSVlYXgs
JWVheAorCisJcG9wbAklZWJ4CisJcG9wbAklZXNpCisJcG9wbAklZWRpCisKKwlwb3BsCSVlYnAK
KwlyZXQKKworCisvKgorICoKKyAqIGVuZCBncmFwaGljcyBzdHVmZgorICoKKyAqIC0gLSAtIC0g
LSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAt
IC0gLSAtIC0gLQorICovCisKIAkJCiAvKgogICogZ2F0ZUEyMChpbnQgbGluZWFyKQogICoKICAq
IEdhdGUgYWRkcmVzcy1saW5lIDIwIGZvciBoaWdoIG1lbW9yeS4KICAqCi0gKiBUaGlzIHJvdXRp
bmUgaXMgcHJvYmFibHkgb3ZlcmNvbnNlcnZhdGl2ZSBpbiB3aGF0IGl0IGRvZXMsIGJ1dCBzbyB3
aGF0PwotICoKLSAqIEl0IGFsc28gZWF0cyBhbnkga2V5c3Ryb2tlcyBpbiB0aGUga2V5Ym9hcmQg
YnVmZmVyLiAgOi0oCisgKiBUcnkgdG8gZGlzYWJsZSB0aGUgQTIwIGdhdGUgYnkgYWxsIG1lYW5z
LiAoVGhlIGFyZ3VtZW50IGlzIGlnbm9yZWQpCisgKiBPbiBzdWNjZXNzICh0aGUgbWVtb3J5IHdv
cmxkIGlzIGZyZWUpLCBhIC0xIGlzIHJldHVybmVkLCAgMCBvbiBmYWlsdXJlLgorICogSXQgbWF5
IGFsc28gZWF0IGFueSBrZXlzdHJva2VzIGluIHRoZSBrZXlib2FyZCBidWZmZXIuICA6LSgKICAq
LwogCiBFTlRSWShnYXRlQTIwKQorCXB1c2hsCSVlYngKKwlwdXNobAklZWR4CisJY2FsbAl0ZXN0
QTIwCisJam56CTFmCisJY2FsbAlBMjBfQklPUworCWNhbGwJdGVzdEEyMAorCWpuegkxZgorCWNh
bGwJQTIwX1BPUlQ5MgorCWNhbGwJdGVzdEEyMAorCWpuegkxZgorCWNhbGwJQTIwX0tCRENUTAor
CWNhbGwJdGVzdEEyMAorCWpuegkxZgorCW1vdmwJJDAsJWVheAorCWptcAkyZgorMToJbW92bAkk
LTEsJWVheAorMjoJcG9wbAklZWR4CisJcG9wbAklZWJ4CisJcmV0CisKK3Rlc3RBMjA6CisJbW92
bAkweDUwMCwlZWF4CisJbW92bAkweDEwMDUwMCwlZWJ4CisJbm90bAklZWF4CisJbW92bAklZWF4
LDB4MTAwNTAwCisJY21wbAklZWF4LDB4NTAwCisJcHVzaGZsCisJbW92bAklZWJ4LDB4MTAwNTAw
CisJbm90bAklZWF4CisJbW92bAklZWF4LDB4NTAwCisJcG9wZmwKKwlyZXQKKworQTIwX0JJT1M6
CQogCS8qIGZpcnN0LCB0cnkgYSBCSU9TIGNhbGwgKi8KLQlwdXNobAklZWJwCi0JbW92bAk4KCVl
c3ApLCAlZWR4CiAJCiAJY2FsbAlFWFRfQyhwcm90X3RvX3JlYWwpCiAJCiAJLmNvZGUxNgotCW1v
dncJJDB4MjQwMCwgJWF4Ci0JdGVzdHcJJWR4LCAlZHgKLQlqegkxZgotCWluY3cJJWF4CisJbW92
dwkkMHgyNDAxLCAlYXgKIDE6CXN0YwogCWludAkkMHgxNQotCWpuYwkyZgotCi0JLyogc2V0IG5v
bi16ZXJvIGlmIGZhaWxlZCAqLwotCW1vdmIJJDEsICVhaAotCi0JLyogc2F2ZSB0aGUgc3RhdHVz
ICovCi0yOgltb3ZiCSVhaCwgJWRsCiAKIAlEQVRBMzIJY2FsbAlFWFRfQyhyZWFsX3RvX3Byb3Qp
CiAJLmNvZGUzMgotCi0JcG9wbAklZWJwCi0JdGVzdGIJJWRsLCAlZGwKLQlqbnoJM2YKIAlyZXQK
IAotMzoJLyogdXNlIGtleWJvYXJkIGNvbnRyb2xsZXIgKi8KKworQTIwX1BPUlQ5MjoKKwkvKgor
CSAqIHRyeSB0byBzd2l0Y2ggZ2F0ZUEyMCB1c2luZyBQT1JUOTIsIHRoZSAiRmFzdCBBMjAgYW5k
IEluaXQiCisJICogcmVnaXN0ZXIKKwkgKi8KKwltb3YgICAgICQweDkyLCAlZHgKKwlpbmIgICAg
ICVkeCwgJWFsCisJLyogc2tpcCB0aGUgcG9ydDkyIGNvZGUgaWYgaXQncyB1bmltcGxlbWVudGVk
IChyZWFkIHJldHVybnMgMHhmZikgKi8KKwljbXBiICAgICQweGZmLCAlYWwKKwlqeiAgICAgIDZm
CisKKwkvKiBzZXQgYml0MSwgdGhlIEFMVF9BMjBfR0FURSBiaXQgKi8KKwlvcmIgICAgICQyLCAl
YWwKKy8qCWFuZCAgICAgJDB4ZmQsICVhbCAqLworCisJLyogY2xlYXIgdGhlIElOSVRfTk9XIGJp
dDsgZG9uJ3QgYWNjaWRlbnRseSByZXNldCB0aGUgbWFjaGluZSAqLworCWFuZCAgICAgJDB4ZmUs
ICVhbAorCW91dGIgICAgJWFsLCAlZHgKKzY6CXJldAorCisKK0EyMF9LQkRDVEw6CQorCS8qIHVz
ZSBrZXlib2FyZCBjb250cm9sbGVyICovCiAJcHVzaGwJJWVheAogCiAJY2FsbCAgICBnbG9vcDEK
QEAgLTE2NjUsMTEgKzE5OTAsNyBAQCBnbG9vcGludDE6CiAJam56CWdsb29waW50MQogCiAJbW92
YgkkS0JfT1VUUFVUX01BU0ssICVhbAotCWNtcGIJJDAsIDB4OCglZXNwKQotCWp6CWdkb2l0Ci0K
IAlvcmIJJEtCX0EyMF9FTkFCTEUsICVhbAotZ2RvaXQ6CiAJb3V0YgkkS19SRFdSCiAKIAljYWxs
CWdsb29wMQpkaWZmIC0tZ2l0IGEvc3RhZ2UyL2Jvb3QuYyBiL3N0YWdlMi9ib290LmMKaW5kZXgg
NDE4NWQyMy4uNDYxNjU3MiAxMDA2NDQKLS0tIGEvc3RhZ2UyL2Jvb3QuYworKysgYi9zdGFnZTIv
Ym9vdC5jCkBAIC04MjQsOCArODI0LDExIEBAIGxvYWRfaW5pdHJkIChjaGFyICppbml0cmQpCiAg
ICAgbW92ZXRvID0gKG1iaS5tZW1fdXBwZXIgKyAweDQwMCkgPDwgMTA7CiAgIAogICBtb3ZldG8g
PSAobW92ZXRvIC0gbGVuKSAmIDB4ZmZmZmYwMDA7Ci0gIG1heF9hZGRyID0gKGxoLT5oZWFkZXIg
PT0gTElOVVhfTUFHSUNfU0lHTkFUVVJFICYmIGxoLT52ZXJzaW9uID49IDB4MDIwMwotCSAgICAg
ID8gbGgtPmluaXRyZF9hZGRyX21heCA6IExJTlVYX0lOSVRSRF9NQVhfQUREUkVTUyk7CisgIG1h
eF9hZGRyID0gTElOVVhfSU5JVFJEX01BWF9BRERSRVNTOworICBpZiAobGgtPmhlYWRlciA9PSBM
SU5VWF9NQUdJQ19TSUdOQVRVUkUgJiYKKyAgICAgIGxoLT52ZXJzaW9uID49IDB4MDIwMyAmJgor
ICAgICAgbGgtPmluaXRyZF9hZGRyX21heCA8IG1heF9hZGRyKQorICAgIG1heF9hZGRyID0gbGgt
PmluaXRyZF9hZGRyX21heDsKICAgaWYgKG1vdmV0byArIGxlbiA+PSBtYXhfYWRkcikKICAgICBt
b3ZldG8gPSAobWF4X2FkZHIgLSBsZW4pICYgMHhmZmZmZjAwMDsKICAgCmRpZmYgLS1naXQgYS9z
dGFnZTIvYnVpbHRpbnMuYyBiL3N0YWdlMi9idWlsdGlucy5jCmluZGV4IDNlMDhhODYuLjQ3NjFh
ZjQgMTAwNjQ0Ci0tLSBhL3N0YWdlMi9idWlsdGlucy5jCisrKyBiL3N0YWdlMi9idWlsdGlucy5j
CkBAIC02Myw2ICs2Myw4IEBAIGludCBmYWxsYmFja19lbnRyeW5vOwogaW50IGZhbGxiYWNrX2Vu
dHJpZXNbTUFYX0ZBTExCQUNLX0VOVFJJRVNdOwogLyogVGhlIG51bWJlciBvZiBjdXJyZW50IGVu
dHJ5LiAgKi8KIGludCBjdXJyZW50X2VudHJ5bm87CisvKiBncmFwaGljcyBmaWxlICovCitjaGFy
IGdyYXBoaWNzX2ZpbGVbNjRdOwogLyogVGhlIGFkZHJlc3MgZm9yIE11bHRpYm9vdCBjb21tYW5k
LWxpbmUgYnVmZmVyLiAgKi8KIHN0YXRpYyBjaGFyICptYl9jbWRsaW5lOwogLyogVGhlIHBhc3N3
b3JkLiAgKi8KQEAgLTQ1NSw2ICs0NTcsMTAgQEAgY2hhaW5sb2FkZXJfZnVuYyAoY2hhciAqYXJn
LCBpbnQgZmxhZ3MpCiAgICAgKigodW5zaWduZWQgbG9uZyAqKSAoQk9PVFNFQ19MT0NBVElPTiAr
IEJPT1RTRUNfQlBCX0hJRERFTl9TRUNUT1JTKSkKICAgICAgID0gcGFydF9zdGFydDsKIAorICAv
KiBpZiBhIG5ldyBkZXZpY2Ugd2FzIHNwZWNpZmllZCwgbWFrZSBzdXJlIERYIGlzIHBhc3NlZCBj
b3JyZWN0bHkgKi8KKyAgaWYgKCcoJyA9PSAqZmlsZSkKKyAgICBzZXRfZGV2aWNlKGZpbGUpOwor
CiAgIGVycm51bSA9IEVSUl9OT05FOwogICAKICAgcmV0dXJuIDA7CkBAIC03NjYsMTEgKzc3Miwx
MSBAQCBzdGF0aWMgaW50CiBkZWZhdWx0X2Z1bmMgKGNoYXIgKmFyZywgaW50IGZsYWdzKQogewog
I2lmbmRlZiBTVVBQT1JUX0RJU0tMRVNTCi0gIGlmIChncnViX3N0cmNtcCAoYXJnLCAic2F2ZWQi
KSA9PSAwKQorICBpZiAoZ3J1Yl9zdHJjbXAgKGFyZywgInNhdmVkIikgPT0gMCB8fCAoc2F2ZWRf
ZW50cnlubyAmIDB4NDAwMCkpCiAgICAgewotICAgICAgZGVmYXVsdF9lbnRyeSA9IHNhdmVkX2Vu
dHJ5bm87Ci0gICAgICByZXR1cm4gMDsKKyAgICAgIGRlZmF1bHRfZW50cnkgPSBzYXZlZF9lbnRy
eW5vICYgMHgzZmZmOwogICAgIH0KKyAgZWxzZQogI2VuZGlmIC8qIFNVUFBPUlRfRElTS0xFU1Mg
Ki8KICAgCiAgIGlmICghIHNhZmVfcGFyc2VfbWF4aW50ICgmYXJnLCAmZGVmYXVsdF9lbnRyeSkp
CkBAIC03OTEsNiArNzk3LDIyIEBAIHN0YXRpYyBzdHJ1Y3QgYnVpbHRpbiBidWlsdGluX2RlZmF1
bHQgPQogI2VuZGlmCiB9OwogCisjaWZuZGVmIFNVUFBPUlRfRElTS0xFU1MKK3N0YXRpYyBpbnQg
c2F2ZWRlZmF1bHRfZnVuYyAoY2hhciAqYXJnLCBpbnQgZmxhZ3MpOwordm9pZCBfX3NhdmVkZWZh
dWx0X29uY2VfcmVzZXQoKQoreworICBpZiAoc2F2ZWRfZW50cnlubyAmIDB4NDAwMCkKKyAgICB7
CisgICAgICBpbnQgc2F2ZWRfY3VycmVudF9lbnRyeW5vID0gY3VycmVudF9lbnRyeW5vOworICAg
ICAgZ3J1Yl90aW1lb3V0ID0gMDsKKyAgICAgIGN1cnJlbnRfZW50cnlubyA9IGRlZmF1bHRfZW50
cnk7CisgICAgICBzYXZlZGVmYXVsdF9mdW5jKCJcMCIsIEJVSUxUSU5fU0NSSVBUKTsKKyAgICAg
IGN1cnJlbnRfZW50cnlubyA9IHNhdmVkX2N1cnJlbnRfZW50cnlubzsKKyAgICAgIHNhdmVkX2Vu
dHJ5bm8gJj0gMHgzZmZmOworICAgIH0KK30KKyNlbmRpZiAvKiBTVVBQT1JUX0RJU0tMRVNTICov
CisKIAwKICNpZmRlZiBHUlVCX1VUSUwKIC8qIGRldmljZSAqLwpAQCAtMTMzMSw2ICsxMzUzLDI2
IEBAIHN0YXRpYyBzdHJ1Y3QgYnVpbHRpbiBidWlsdGluX2ZzdGVzdCA9CiB9OwogCiAMCisvKiBn
cmFwaGljcyAqLworc3RhdGljIGludAorZ2Z4bWVudV9mdW5jIChjaGFyICphcmcsIGludCBmbGFn
cykKK3sKKyAgbWVtbW92ZShncmFwaGljc19maWxlLCBhcmcsIHNpemVvZiBncmFwaGljc19maWxl
IC0gMSk7CisgIGdyYXBoaWNzX2ZpbGVbc2l6ZW9mIGdyYXBoaWNzX2ZpbGUgLSAxXSA9IDA7CisK
KyAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgYnVpbHRpbiBidWlsdGluX2dmeG1lbnUg
PQoreworICAiZ2Z4bWVudSIsCisgIGdmeG1lbnVfZnVuYywKKyAgQlVJTFRJTl9NRU5VIHwgQlVJ
TFRJTl9IRUxQX0xJU1QsCisgICJnZnhtZW51IEZJTEUiLAorICAiVXNlIHRoZSBncmFwaGljYWwg
bWVudSBmcm9tIEZJTEUuIgorfTsKKworDAogLyogZ2VvbWV0cnkgKi8KIHN0YXRpYyBpbnQKIGdl
b21ldHJ5X2Z1bmMgKGNoYXIgKmFyZywgaW50IGZsYWdzKQpAQCAtMTgzNCw3ICsxODc2LDEyIEBA
IGluc3RhbGxfZnVuYyAoY2hhciAqYXJnLCBpbnQgZmxhZ3MpCiAgIC8qIEZpcnN0LCBjaGVjayB0
aGUgR05VLXN0eWxlIGxvbmcgb3B0aW9uLiAgKi8KICAgd2hpbGUgKDEpCiAgICAgewotICAgICAg
aWYgKGdydWJfbWVtY21wICgiLS1mb3JjZS1sYmEiLCBhcmcsIHNpemVvZiAoIi0tZm9yY2UtbGJh
IikgLSAxKSA9PSAwKQorICAgICAgaWYgKGdydWJfbWVtY21wICgiLS1mb3JjZS1sYmE9b2ZmIiwg
YXJnLCBzaXplb2YgKCItLWZvcmNlLWxiYT1vZmYiKSAtIDEpID09IDApCisJeworCSAgaXNfZm9y
Y2VfbGJhID0gMHhmZjsKKwkgIGFyZyA9IHNraXBfdG8gKDAsIGFyZyk7CisJfQorICAgICAgZWxz
ZSBpZiAoZ3J1Yl9tZW1jbXAgKCItLWZvcmNlLWxiYSIsIGFyZywgc2l6ZW9mICgiLS1mb3JjZS1s
YmEiKSAtIDEpID09IDApCiAJewogCSAgaXNfZm9yY2VfbGJhID0gMTsKIAkgIGFyZyA9IHNraXBf
dG8gKDAsIGFyZyk7CkBAIC0xODQyLDkgKzE4ODksMjMgQEAgaW5zdGFsbF9mdW5jIChjaGFyICph
cmcsIGludCBmbGFncykKICNpZmRlZiBHUlVCX1VUSUwKICAgICAgIGVsc2UgaWYgKGdydWJfbWVt
Y21wICgiLS1zdGFnZTI9IiwgYXJnLCBzaXplb2YgKCItLXN0YWdlMj0iKSAtIDEpID09IDApCiAJ
eworCSAgaW50IGZkOwogCSAgc3RhZ2UyX29zX2ZpbGUgPSBhcmcgKyBzaXplb2YgKCItLXN0YWdl
Mj0iKSAtIDE7CiAJICBhcmcgPSBza2lwX3RvICgwLCBhcmcpOwogCSAgbnVsX3Rlcm1pbmF0ZSAo
c3RhZ2UyX29zX2ZpbGUpOworCisjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmIGRlZmluZWQgKEZT
WVNfUkVJU0VSRlMpCisJICBpZiAoKGZkPW9wZW4oc3RhZ2UyX29zX2ZpbGUsIE9fUkRPTkxZKSkg
Pj0gMCkKKwkgICAgeworCSAgICAgIHN0cnVjdCBzdGF0ZnMgYnVmOworCSAgICAgIC8qIHNlZSBp
ZiB0aGUgZmlsZSBzaXRzIG9uIGEgcmVpc2VyZnMsCisJCSBhbmQgdHJ5IGRvIGRlZnJhZ21lbnQg
aXQgaWYgc28uICovCisJICAgICAgZnN0YXRmcyhmZCwgJmJ1Zik7CisJICAgICAgaWYgKGJ1Zi5m
X3R5cGUgPT0gUkVJU0VSRlNfU1VQRVJfTUFHSUMpCisJCWlvY3RsIChmZCwgUkVJU0VSRlNfSU9D
X1VOUEFDSywgMSk7CisJICAgIH0KKyNlbmRpZgkvKiBfX2xpbnV4X18gJiYgRlNZU19SRUlTRVJG
UyAqLworCiAJfQogI2VuZGlmIC8qIEdSVUJfVVRJTCAqLwogICAgICAgZWxzZQpAQCAtMjI2Myw3
ICsyMzI0LDcgQEAgc3RhdGljIHN0cnVjdCBidWlsdGluIGJ1aWx0aW5faW5zdGFsbCA9CiAgICJp
bnN0YWxsIiwKICAgaW5zdGFsbF9mdW5jLAogICBCVUlMVElOX0NNRExJTkUsCi0gICJpbnN0YWxs
IFstLXN0YWdlMj1TVEFHRTJfRklMRV0gWy0tZm9yY2UtbGJhXSBTVEFHRTEgW2RdIERFVklDRSBT
VEFHRTIgW0FERFJdIFtwXSBbQ09ORklHX0ZJTEVdIFtSRUFMX0NPTkZJR19GSUxFXSIsCisgICJp
bnN0YWxsIFstLXN0YWdlMj1TVEFHRTJfRklMRV0gWy0tZm9yY2UtbGJhWz1vZmZdXSBTVEFHRTEg
W2RdIERFVklDRSBTVEFHRTIgW0FERFJdIFtwXSBbQ09ORklHX0ZJTEVdIFtSRUFMX0NPTkZJR19G
SUxFXSIsCiAgICJJbnN0YWxsIFNUQUdFMSBvbiBERVZJQ0UsIGFuZCBpbnN0YWxsIGEgYmxvY2ts
aXN0IGZvciBsb2FkaW5nIFNUQUdFMiIKICAgIiBhcyBhIFN0YWdlIDIuIElmIHRoZSBvcHRpb24g
YGQnIGlzIHByZXNlbnQsIHRoZSBTdGFnZSAxIHdpbGwgYWx3YXlzIgogICAiIGxvb2sgZm9yIHRo
ZSBkaXNrIHdoZXJlIFNUQUdFMiB3YXMgaW5zdGFsbGVkLCByYXRoZXIgdGhhbiB1c2luZyIKQEAg
LTIyNzYsOCArMjMzNyw5IEBAIHN0YXRpYyBzdHJ1Y3QgYnVpbHRpbiBidWlsdGluX2luc3RhbGwg
PQogICAiIDEuNSBhbmQgUkVBTF9DT05GSUdfRklMRSBpcyBwcmVzZW50LCB0aGVuIHRoZSBTdGFn
ZSAyIENPTkZJR19GSUxFIGlzIgogICAiIHBhdGNoZWQgd2l0aCB0aGUgY29uZmlndXJhdGlvbiBm
aWxlbmFtZSBSRUFMX0NPTkZJR19GSUxFLiIKICAgIiBJZiB0aGUgb3B0aW9uIGAtLWZvcmNlLWxi
YScgaXMgc3BlY2lmaWVkLCBkaXNhYmxlIHNvbWUgc2FuaXR5IGNoZWNrcyIKLSAgIiBmb3IgTEJB
IG1vZGUuIElmIHRoZSBvcHRpb24gYC0tc3RhZ2UyJyBpcyBzcGVjaWZpZWQsIHJld3JpdGUgdGhl
IFN0YWdlIgotICAiIDIgdmlhIHlvdXIgT1MncyBmaWxlc3lzdGVtIGluc3RlYWQgb2YgdGhlIHJh
dyBkZXZpY2UuIgorICAiIGZvciBMQkEgbW9kZSwgYC0tZm9yY2UtbGJhPW9mZicgd2lsbCBkaXNh
YmxlIGl0IGNvbXBsZXRlbHkuIElmIHRoZSIKKyAgIiBvcHRpb24gYC0tc3RhZ2UyJyBpcyBzcGVj
aWZpZWQsIHJld3JpdGUgdGhlIFN0YWdlIDIgdmlhIHlvdXIgT1MncyIKKyAgIiBmaWxlc3lzdGVt
IGluc3RlYWQgb2YgdGhlIHJhdyBkZXZpY2UuIgogfTsKIAogDApAQCAtMzg5MCw3ICszOTUyLDEy
IEBAIHNldHVwX2Z1bmMgKGNoYXIgKmFyZywgaW50IGZsYWdzKQogICAvKiBDaGVjayBpZiB0aGUg
dXNlciBzcGVjaWZpZXMgLS1mb3JjZS1sYmEuICAqLwogICB3aGlsZSAoMSkKICAgICB7Ci0gICAg
ICBpZiAoZ3J1Yl9tZW1jbXAgKCItLWZvcmNlLWxiYSIsIGFyZywgc2l6ZW9mICgiLS1mb3JjZS1s
YmEiKSAtIDEpID09IDApCisgICAgICBpZiAoZ3J1Yl9tZW1jbXAgKCItLWZvcmNlLWxiYT1vZmYi
LCBhcmcsIHNpemVvZiAoIi0tZm9yY2UtbGJhPW9mZiIpIC0gMSkgPT0gMCkKKwl7CisJICBpc19m
b3JjZV9sYmEgPSAweGZmOworCSAgYXJnID0gc2tpcF90byAoMCwgYXJnKTsKKwl9CisgICAgICBl
bHNlIGlmIChncnViX21lbWNtcCAoIi0tZm9yY2UtbGJhIiwgYXJnLCBzaXplb2YgKCItLWZvcmNl
LWxiYSIpIC0gMSkgPT0gMCkKIAl7CiAJICBpc19mb3JjZV9sYmEgPSAxOwogCSAgYXJnID0gc2tp
cF90byAoMCwgYXJnKTsKQEAgLTQwMTEsNiArNDA3OCw5IEBAIHNldHVwX2Z1bmMgKGNoYXIgKmFy
ZywgaW50IGZsYWdzKQogCX0KICAgfQogCisgIC8qIGZvcmNlIGJ1ZmZlciBjYWNoZSBpbnZhbGlk
YXRpb24gYWZ0ZXIgZW1iZWRkaW5nICovCisgIGJ1Zl9kcml2ZSA9IC0xOworCiAgIC8qIENvbnN0
cnVjdCBhIHN0cmluZyB0aGF0IGlzIHVzZWQgYnkgdGhlIGNvbW1hbmQgImluc3RhbGwiIGFzIGl0
cwogICAgICBhcmd1bWVudHMuICAqLwogICBzcHJpbnRfZGV2aWNlIChpbnN0YWxsZWRfZHJpdmUs
IGluc3RhbGxlZF9wYXJ0aXRpb24pOwpAQCAtNDAxOCw3ICs0MDg4LDkgQEAgc2V0dXBfZnVuYyAo
Y2hhciAqYXJnLCBpbnQgZmxhZ3MpCiAjaWYgMQogICAvKiBEb24ndCBlbWJlZCBhIGRyaXZlIG51
bWJlciB1bm5lY2Vzc2FyaWx5LiAgKi8KICAgZ3J1Yl9zcHJpbnRmIChjbWRfYXJnLCAiJXMlcyVz
JXMgJXMlcyAlcyBwICVzICVzIiwKLQkJaXNfZm9yY2VfbGJhPyAiLS1mb3JjZS1sYmEgIiA6ICIi
LAorCQlpc19mb3JjZV9sYmEgPworCQkgKGlzX2ZvcmNlX2xiYSA9PSAweGZmID8gIi0tZm9yY2Ut
bGJhPW9mZiAiIDogIi0tZm9yY2UtbGJhICIpCisJCSA6ICIiLAogCQlzdGFnZTJfYXJnPyBzdGFn
ZTJfYXJnIDogIiIsCiAJCXN0YWdlMl9hcmc/ICIgIiA6ICIiLAogCQlzdGFnZTEsCkBAIC00MDcx
LDE3ICs0MTQzLDE4IEBAIHN0YXRpYyBzdHJ1Y3QgYnVpbHRpbiBidWlsdGluX3NldHVwID0KICAg
InNldHVwIiwKICAgc2V0dXBfZnVuYywKICAgQlVJTFRJTl9DTURMSU5FIHwgQlVJTFRJTl9IRUxQ
X0xJU1QsCi0gICJzZXR1cCBbLS1wcmVmaXg9RElSXSBbLS1zdGFnZTI9U1RBR0UyX0ZJTEVdIFst
LWZvcmNlLWxiYV0gSU5TVEFMTF9ERVZJQ0UgW0lNQUdFX0RFVklDRV0iLAorICAic2V0dXAgWy0t
cHJlZml4PURJUl0gWy0tc3RhZ2UyPVNUQUdFMl9GSUxFXSBbLS1mb3JjZS1sYmFbPW9mZl1dIElO
U1RBTExfREVWSUNFIFtJTUFHRV9ERVZJQ0VdIiwKICAgIlNldCB1cCB0aGUgaW5zdGFsbGF0aW9u
IG9mIEdSVUIgYXV0b21hdGljYWxseS4gVGhpcyBjb21tYW5kIHVzZXMiCiAgICIgdGhlIG1vcmUg
ZmxleGlibGUgY29tbWFuZCBcImluc3RhbGxcIiBpbiB0aGUgYmFja2VuZCBhbmQgaW5zdGFsbHMi
CiAgICIgR1JVQiBpbnRvIHRoZSBkZXZpY2UgSU5TVEFMTF9ERVZJQ0UuIElmIElNQUdFX0RFVklD
RSBpcyBzcGVjaWZpZWQsIgogICAiIHRoZW4gZmluZCB0aGUgR1JVQiBpbWFnZXMgaW4gdGhlIGRl
dmljZSBJTUFHRV9ERVZJQ0UsIG90aGVyd2lzZSIKICAgIiB1c2UgdGhlIGN1cnJlbnQgXCJyb290
IGRldmljZVwiLCB3aGljaCBjYW4gYmUgc2V0IGJ5IHRoZSBjb21tYW5kIgogICAiIFwicm9vdFwi
LiBJZiB5b3Uga25vdyB0aGF0IHlvdXIgQklPUyBzaG91bGQgc3VwcG9ydCBMQkEgYnV0IEdSVUIi
Ci0gICIgZG9lc24ndCB3b3JrIGluIExCQSBtb2RlLCBzcGVjaWZ5IHRoZSBvcHRpb24gYC0tZm9y
Y2UtbGJhJy4iCi0gICIgSWYgeW91IGluc3RhbGwgR1JVQiB1bmRlciB0aGUgZ3J1YiBzaGVsbCBh
bmQgeW91IGNhbm5vdCB1bm1vdW50IHRoZSIKLSAgIiBwYXJ0aXRpb24gd2hlcmUgR1JVQiBpbWFn
ZXMgcmVzaWRlLCBzcGVjaWZ5IHRoZSBvcHRpb24gYC0tc3RhZ2UyJyIKLSAgIiB0byB0ZWxsIEdS
VUIgdGhlIGZpbGUgbmFtZSB1bmRlciB5b3VyIE9TLiIKKyAgIiBkb2Vzbid0IHdvcmsgaW4gTEJB
IG1vZGUsIHNwZWNpZnkgdGhlIG9wdGlvbiBgLS1mb3JjZS1sYmEnLiBJZiB0aGUiCisgICIgQklP
UyBjbGFpbXMgdG8gc3VwcG9ydCBMQkEgbW9kZSBidXQgcmVhbGx5IGRvZXNuJ3QsIHVzZSIKKyAg
IiBgLS1mb3JjZS1sYmE9b2ZmJy4gSWYgeW91IGluc3RhbGwgR1JVQiB1bmRlciB0aGUgZ3J1YiBz
aGVsbCBhbmQiCisgICIgeW91IGNhbm5vdCB1bm1vdW50IHRoZSBwYXJ0aXRpb24gd2hlcmUgR1JV
QiBpbWFnZXMgcmVzaWRlLCBzcGVjaWZ5IgorICAiIHRoZSBvcHRpb24gYC0tc3RhZ2UyJyB0byB0
ZWxsIEdSVUIgdGhlIGZpbGUgbmFtZSB1bmRlciB5b3VyIE9TLiIKIH07CiAKIAwKQEAgLTQxODYs
NyArNDI1OSw3IEBAIHRlcm1pbmFsX2Z1bmMgKGNoYXIgKmFyZywgaW50IGZsYWdzKQogCiAgIC8q
IElmIG11bHRpcGxlIHRlcm1pbmFscyBhcmUgc3BlY2lmaWVkLCB3YWl0IHVudGlsIHRoZSB1c2Vy
IHB1c2hlcyBhbnkKICAgICAga2V5IG9uIG9uZSBvZiB0aGUgdGVybWluYWxzLiAgKi8KLSAgaWYg
KHRlcm1fYml0bWFwICYgfigxIDw8IGRlZmF1bHRfdGVybSkpCisgIGlmICgodGVybV9iaXRtYXAg
JiB+KDEgPDwgZGVmYXVsdF90ZXJtKSkgJiYgIShzYXZlZF9lbnRyeW5vICYgMHg0MDAwKSkKICAg
ICB7CiAgICAgICBpbnQgdGltZTEsIHRpbWUyID0gLTE7CiAKQEAgLTQ3OTIsNiArNDg2NSw0OSBA
QCBzdGF0aWMgc3RydWN0IGJ1aWx0aW4gYnVpbHRpbl92YmVwcm9iZSA9CiB9OwogICAKIAwKKy8q
IHdpbGRjYXJkICovCisgc3RhdGljIGludAord2lsZGNhcmRfZnVuYyAoY2hhciAqYXJnLCBpbnQg
ZmxhZ3MpCit7CisjaWZkZWYgREVCVUdfV0lMRENBUkQKKyAgY2hhciAqdyA9IHdpbGRjYXJkIChh
cmcpOworCisgIGlmICh3KQorICAgIHsKKyAgICAgIHdoaWxlICgqdykKKyAgICAgICB7CisgICAg
ICAgICBncnViX3ByaW50ZigiJXMgICIsIHcpOworICAgICAgICAgdyArPSBzdHJsZW4gKHcpICsg
MTsKKyAgICAgICAgfQorICAgICAgZ3J1Yl9wcmludGYoIlxuIik7CisgICAgICByZXR1cm4gMTsK
KyAgICB9CisgIGVsc2UKKyAgICBwcmludF9lcnJvcigpOworI2VuZGlmCisKKyAgLyogVGhpcyBz
cGVjaWFsIGNvbW1hbmQgaXMgaW50ZXJwcmV0ZWQgaW4gdGhlIGNvbmZpZyBmaWxlIHBhcnNlci4g
Ki8KKyAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgYnVpbHRpbiBidWlsdGluX3dpbGRj
YXJkID0KKyB7CisgICJ3aWxkY2FyZCIsCisgIHdpbGRjYXJkX2Z1bmMsCisjaWZuZGVmIERFQlVH
X1dJTERDQVJECisgIEJVSUxUSU5fTUVOVSwKKyNlbHNlCisgIEJVSUxUSU5fQ01ETElORSB8IEJV
SUxUSU5fTUVOVSB8IEJVSUxUSU5fSEVMUF9MSVNULAorICAid2lsZGNhcmQgR0xPQiIsCisgICJE
ZWNsYXJlIHRoaXMgbWVudSBlbnRyeSBhcyBhIHdpbGRjYXJkIGVudHJ5LiBHTE9CIGlzIGEgcGF0
aCBjb250YWluaW5nIgorICAiIG9uZSBhc3Rlcmlzay4gQWxsIGZpbGVzIG1hdGNoaW5nIHRoaXMg
ZXhwcmVzc2lvbiBhcmUgbG9va2VkIHVwOyB0aGUiCisgICIgbWVudSBlbnRyeSBpcyBkdXBsaWNh
dGVkIGZvciBlYWNoIG1hdGNoIHdpdGggYXN0ZXJpc2tzIGluIG90aGVyIgorICAiIGNvbW1hbmRz
IHJlcGxhY2VkIGJ5IHRoZSBzdHJpbmcgbWF0Y2hpbmcgdGhlIGFzdGVyaXNrIGluIHRoZSB3aWxk
Y2FyZCIKKyAgIiBjb21tYW5kLiIKKyNlbmRpZgorfTsKKworDAogLyogVGhlIHRhYmxlIG9mIGJ1
aWx0aW4gY29tbWFuZHMuIFNvcnRlZCBpbiBkaWN0aW9uYXJ5IG9yZGVyLiAgKi8KIHN0cnVjdCBi
dWlsdGluICpidWlsdGluX3RhYmxlW10gPQogewpAQCAtNDgyMyw2ICs0OTM5LDcgQEAgc3RydWN0
IGJ1aWx0aW4gKmJ1aWx0aW5fdGFibGVbXSA9CiAgICZidWlsdGluX2ZpbmQsCiAgICZidWlsdGlu
X2ZzdGVzdCwKICAgJmJ1aWx0aW5fZ2VvbWV0cnksCisgICZidWlsdGluX2dmeG1lbnUsCiAgICZi
dWlsdGluX2hhbHQsCiAgICZidWlsdGluX2hlbHAsCiAgICZidWlsdGluX2hpZGRlbm1lbnUsCkBA
IC00ODgwLDUgKzQ5OTcsNiBAQCBzdHJ1Y3QgYnVpbHRpbiAqYnVpbHRpbl90YWJsZVtdID0KICAg
JmJ1aWx0aW5fdW5oaWRlLAogICAmYnVpbHRpbl91cHBlcm1lbSwKICAgJmJ1aWx0aW5fdmJlcHJv
YmUsCisgICZidWlsdGluX3dpbGRjYXJkLAogICAwCiB9OwpkaWZmIC0tZ2l0IGEvc3RhZ2UyL2Rp
c2tfaW8uYyBiL3N0YWdlMi9kaXNrX2lvLmMKaW5kZXggYjliYzUyNi4uNjA1YzIxMyAxMDA2NDQK
LS0tIGEvc3RhZ2UyL2Rpc2tfaW8uYworKysgYi9zdGFnZTIvZGlza19pby5jCkBAIC0zNiw3ICsz
Niw2IEBAIHZvaWQgKCpkaXNrX3JlYWRfaG9vaykgKGludCwgaW50LCBpbnQpID0gTlVMTDsKIHZv
aWQgKCpkaXNrX3JlYWRfZnVuYykgKGludCwgaW50LCBpbnQpID0gTlVMTDsKIAogI2lmbmRlZiBT
VEFHRTFfNQotaW50IHByaW50X3Bvc3NpYmlsaXRpZXM7CiAKIHN0YXRpYyBpbnQgZG9fY29tcGxl
dGlvbjsKIHN0YXRpYyBpbnQgdW5pcXVlOwpAQCAtMTI4LDcgKzEyNyw3IEBAIGludCBmaWxlcG9z
OwogaW50IGZpbGVtYXg7CiAKIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwotbG9nMiAodW5z
aWduZWQgbG9uZyB3b3JkKQorZ3J1Yl9sb2cyICh1bnNpZ25lZCBsb25nIHdvcmQpCiB7CiAgIGFz
bSB2b2xhdGlsZSAoImJzZmwgJTEsJTAiCiAJCTogIj1yIiAod29yZCkKQEAgLTE0MCw3ICsxMzks
NyBAQCBpbnQKIHJhd3JlYWQgKGludCBkcml2ZSwgaW50IHNlY3RvciwgaW50IGJ5dGVfb2Zmc2V0
LCBpbnQgYnl0ZV9sZW4sIGNoYXIgKmJ1ZikKIHsKICAgaW50IHNsZW4sIHNlY3RvcnNfcGVyX3Z0
cmFjazsKLSAgaW50IHNlY3Rvcl9zaXplX2JpdHMgPSBsb2cyIChidWZfZ2VvbS5zZWN0b3Jfc2l6
ZSk7CisgIGludCBzZWN0b3Jfc2l6ZV9iaXRzID0gZ3J1Yl9sb2cyIChidWZfZ2VvbS5zZWN0b3Jf
c2l6ZSk7CiAKICAgaWYgKGJ5dGVfbGVuIDw9IDApCiAgICAgcmV0dXJuIDE7CkBAIC0xNjMsNyAr
MTYyLDcgQEAgcmF3cmVhZCAoaW50IGRyaXZlLCBpbnQgc2VjdG9yLCBpbnQgYnl0ZV9vZmZzZXQs
IGludCBieXRlX2xlbiwgY2hhciAqYnVmKQogCSAgICB9CiAJICBidWZfZHJpdmUgPSBkcml2ZTsK
IAkgIGJ1Zl90cmFjayA9IC0xOwotCSAgc2VjdG9yX3NpemVfYml0cyA9IGxvZzIgKGJ1Zl9nZW9t
LnNlY3Rvcl9zaXplKTsKKwkgIHNlY3Rvcl9zaXplX2JpdHMgPSBncnViX2xvZzIgKGJ1Zl9nZW9t
LnNlY3Rvcl9zaXplKTsKIAl9CiAKICAgICAgIC8qIE1ha2Ugc3VyZSB0aGF0IFNFQ1RPUiBpcyB2
YWxpZC4gICovCkBAIC0xNDc5LDcgKzE0NzgsNyBAQCBwcmludF9jb21wbGV0aW9ucyAoaW50IGlz
X2ZpbGVuYW1lLCBpbnQgaXNfY29tcGxldGlvbikKIAkgIGlmICghIGlzX2NvbXBsZXRpb24pCiAJ
ICAgIGdydWJfcHJpbnRmICgiIFBvc3NpYmxlIGZpbGVzIGFyZToiKTsKIAkgIAotCSAgZGlyIChi
dWYpOworCSAgZGlyIChidWYsIHByaW50X2FfY29tcGxldGlvbik7CiAJICAKIAkgIGlmIChpc19j
b21wbGV0aW9uICYmICp1bmlxdWVfc3RyaW5nKQogCSAgICB7CkBAIC0xNDk4LDcgKzE0OTcsNyBA
QCBwcmludF9jb21wbGV0aW9ucyAoaW50IGlzX2ZpbGVuYW1lLCBpbnQgaXNfY29tcGxldGlvbikK
IAkJICAqcHRyID0gJy8nOwogCQkgICoocHRyICsgMSkgPSAwOwogCQkgIAotCQkgIGRpciAoYnVm
KTsKKwkJICBkaXIgKGJ1ZiwgcHJpbnRfYV9jb21wbGV0aW9uKTsKIAkJICAKIAkJICAvKiBSZXN0
b3JlIHRoZSBvcmlnaW5hbCB1bmlxdWUgdmFsdWUuICAqLwogCQkgIHVuaXF1ZSA9IDE7CkBAIC0x
NjI2LDEyICsxNjI1LDcgQEAgZ3J1Yl9vcGVuIChjaGFyICpmaWxlbmFtZSkKICAgaWYgKCFlcnJu
dW0gJiYgZnN5c190eXBlID09IE5VTV9GU1lTKQogICAgIGVycm51bSA9IEVSUl9GU1lTX01PVU5U
OwogCi0jIGlmbmRlZiBTVEFHRTFfNQotICAvKiBzZXQgImRpciIgZnVuY3Rpb24gdG8gb3BlbiBh
IGZpbGUgKi8KLSAgcHJpbnRfcG9zc2liaWxpdGllcyA9IDA7Ci0jIGVuZGlmCi0KLSAgaWYgKCFl
cnJudW0gJiYgKCooZnN5c190YWJsZVtmc3lzX3R5cGVdLmRpcl9mdW5jKSkgKGZpbGVuYW1lKSkK
KyAgaWYgKCFlcnJudW0gJiYgKCooZnN5c190YWJsZVtmc3lzX3R5cGVdLmRpcl9mdW5jKSkgKGZp
bGVuYW1lLCBOVUxMKSkKICAgICB7CiAjaWZuZGVmIE5PX0RFQ09NUFJFU1NJT04KICAgICAgIHJl
dHVybiBndW56aXBfdGVzdF9oZWFkZXIgKCk7CkBAIC0xNzUyLDcgKzE3NDYsNyBAQCBncnViX3Nl
ZWsgKGludCBvZmZzZXQpCiB9CiAKIGludAotZGlyIChjaGFyICpkaXJuYW1lKQorZGlyIChjaGFy
ICpkaXJuYW1lLCB2b2lkICgqaGFuZGxlKShjaGFyICopKQogewogI2lmbmRlZiBOT19ERUNPTVBS
RVNTSU9OCiAgIGNvbXByZXNzZWRfZmlsZSA9IDA7CkBAIC0xNzYxLDE5ICsxNzU1LDE4IEBAIGRp
ciAoY2hhciAqZGlybmFtZSkKICAgaWYgKCEoZGlybmFtZSA9IHNldHVwX3BhcnQgKGRpcm5hbWUp
KSkKICAgICByZXR1cm4gMDsKIAorICBlcnJudW0gPSAwOwogICBpZiAoKmRpcm5hbWUgIT0gJy8n
KQogICAgIGVycm51bSA9IEVSUl9CQURfRklMRU5BTUU7Ci0KLSAgaWYgKGZzeXNfdHlwZSA9PSBO
VU1fRlNZUykKKyAgZWxzZSBpZiAoZnN5c190eXBlID09IE5VTV9GU1lTKQogICAgIGVycm51bSA9
IEVSUl9GU1lTX01PVU5UOwotCi0gIGlmIChlcnJudW0pCi0gICAgcmV0dXJuIDA7Ci0KLSAgLyog
c2V0ICJkaXIiIGZ1bmN0aW9uIHRvIGxpc3QgY29tcGxldGlvbnMgKi8KLSAgcHJpbnRfcG9zc2li
aWxpdGllcyA9IDE7Ci0KLSAgcmV0dXJuICgqKGZzeXNfdGFibGVbZnN5c190eXBlXS5kaXJfZnVu
YykpIChkaXJuYW1lKTsKKyAgZWxzZQorICAgIHsKKyAgICAgIGZzeXNfdGFibGVbZnN5c190eXBl
XS5kaXJfZnVuYyAoZGlybmFtZSwgaGFuZGxlKTsKKyAgICAgIGlmIChlcnJudW0gPT0gRVJSX0ZJ
TEVfTk9UX0ZPVU5EKQorCWVycm51bSA9IDA7CisgICAgfQorICByZXR1cm4gZXJybnVtID09IDA7
CiB9CiAjZW5kaWYgLyogU1RBR0UxXzUgKi8KIApkaWZmIC0tZ2l0IGEvc3RhZ2UyL2ZpbGVzeXMu
aCBiL3N0YWdlMi9maWxlc3lzLmgKaW5kZXggYmJhZDhiOS4uOTI0MTEwMyAxMDA2NDQKLS0tIGEv
c3RhZ2UyL2ZpbGVzeXMuaAorKysgYi9zdGFnZTIvZmlsZXN5cy5oCkBAIC0yNCw3ICsyNCw3IEBA
CiAjZGVmaW5lIEZTWVNfRkZTX05VTSAxCiBpbnQgZmZzX21vdW50ICh2b2lkKTsKIGludCBmZnNf
cmVhZCAoY2hhciAqYnVmLCBpbnQgbGVuKTsKLWludCBmZnNfZGlyIChjaGFyICpkaXJuYW1lKTsK
K2ludCBmZnNfZGlyIChjaGFyICpkaXJuYW1lLCB2b2lkICgqaGFuZGxlKShjaGFyICopKTsKIGlu
dCBmZnNfZW1iZWQgKGludCAqc3RhcnRfc2VjdG9yLCBpbnQgbmVlZGVkX3NlY3RvcnMpOwogI2Vs
c2UKICNkZWZpbmUgRlNZU19GRlNfTlVNIDAKQEAgLTM0LDcgKzM0LDcgQEAgaW50IGZmc19lbWJl
ZCAoaW50ICpzdGFydF9zZWN0b3IsIGludCBuZWVkZWRfc2VjdG9ycyk7CiAjZGVmaW5lIEZTWVNf
VUZTMl9OVU0gMQogaW50IHVmczJfbW91bnQgKHZvaWQpOwogaW50IHVmczJfcmVhZCAoY2hhciAq
YnVmLCBpbnQgbGVuKTsKLWludCB1ZnMyX2RpciAoY2hhciAqZGlybmFtZSk7CitpbnQgdWZzMl9k
aXIgKGNoYXIgKmRpcm5hbWUsIHZvaWQgKCpoYW5kbGUpKGNoYXIgKikpOwogaW50IHVmczJfZW1i
ZWQgKGludCAqc3RhcnRfc2VjdG9yLCBpbnQgbmVlZGVkX3NlY3RvcnMpOwogI2Vsc2UKICNkZWZp
bmUgRlNZU19VRlMyX05VTSAwCkBAIC00NCw3ICs0NCw3IEBAIGludCB1ZnMyX2VtYmVkIChpbnQg
KnN0YXJ0X3NlY3RvciwgaW50IG5lZWRlZF9zZWN0b3JzKTsKICNkZWZpbmUgRlNZU19GQVRfTlVN
IDEKIGludCBmYXRfbW91bnQgKHZvaWQpOwogaW50IGZhdF9yZWFkIChjaGFyICpidWYsIGludCBs
ZW4pOwotaW50IGZhdF9kaXIgKGNoYXIgKmRpcm5hbWUpOworaW50IGZhdF9kaXIgKGNoYXIgKmRp
cm5hbWUsIHZvaWQgKCpoYW5kbGUpKGNoYXIgKikpOwogI2Vsc2UKICNkZWZpbmUgRlNZU19GQVRf
TlVNIDAKICNlbmRpZgpAQCAtNTMsNyArNTMsNyBAQCBpbnQgZmF0X2RpciAoY2hhciAqZGlybmFt
ZSk7CiAjZGVmaW5lIEZTWVNfRVhUMkZTX05VTSAxCiBpbnQgZXh0MmZzX21vdW50ICh2b2lkKTsK
IGludCBleHQyZnNfcmVhZCAoY2hhciAqYnVmLCBpbnQgbGVuKTsKLWludCBleHQyZnNfZGlyIChj
aGFyICpkaXJuYW1lKTsKK2ludCBleHQyZnNfZGlyIChjaGFyICpkaXJuYW1lLCB2b2lkICgqaGFu
ZGxlKShjaGFyICopKTsKICNlbHNlCiAjZGVmaW5lIEZTWVNfRVhUMkZTX05VTSAwCiAjZW5kaWYK
QEAgLTYyLDcgKzYyLDcgQEAgaW50IGV4dDJmc19kaXIgKGNoYXIgKmRpcm5hbWUpOwogI2RlZmlu
ZSBGU1lTX01JTklYX05VTSAxCiBpbnQgbWluaXhfbW91bnQgKHZvaWQpOwogaW50IG1pbml4X3Jl
YWQgKGNoYXIgKmJ1ZiwgaW50IGxlbik7Ci1pbnQgbWluaXhfZGlyIChjaGFyICpkaXJuYW1lKTsK
K2ludCBtaW5peF9kaXIgKGNoYXIgKmRpcm5hbWUsIHZvaWQgKCpoYW5kbGUpKGNoYXIgKikpOwog
I2Vsc2UKICNkZWZpbmUgRlNZU19NSU5JWF9OVU0gMAogI2VuZGlmCkBAIC03MSw4ICs3MSwxOCBA
QCBpbnQgbWluaXhfZGlyIChjaGFyICpkaXJuYW1lKTsKICNkZWZpbmUgRlNZU19SRUlTRVJGU19O
VU0gMQogaW50IHJlaXNlcmZzX21vdW50ICh2b2lkKTsKIGludCByZWlzZXJmc19yZWFkIChjaGFy
ICpidWYsIGludCBsZW4pOwotaW50IHJlaXNlcmZzX2RpciAoY2hhciAqZGlybmFtZSk7CitpbnQg
cmVpc2VyZnNfZGlyIChjaGFyICpkaXJuYW1lLCB2b2lkICgqaGFuZGxlKShjaGFyICopKTsKIGlu
dCByZWlzZXJmc19lbWJlZCAoaW50ICpzdGFydF9zZWN0b3IsIGludCBuZWVkZWRfc2VjdG9ycyk7
CisjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmIGRlZmluZWQgKEdSVUJfVVRJTCkKKyNpbmNsdWRl
IDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy9pb2N0
bC5oPgorI2luY2x1ZGUgPHN5cy9zdGF0ZnMuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorLyogZnJv
bSA8bGludXgvcmVpc2VyZnNfZnMuaD4gKi8KKyNkZWZpbmUgUkVJU0VSRlNfU1VQRVJfTUFHSUMg
MHg1MjY1NDk3MworI2RlZmluZSBSRUlTRVJGU19JT0NfVU5QQUNLICBfSU9XKDB4Q0QsMSxsb25n
KQorI2VuZGlmCiAjZWxzZQogI2RlZmluZSBGU1lTX1JFSVNFUkZTX05VTSAwCiAjZW5kaWYKQEAg
LTgxLDcgKzkxLDcgQEAgaW50IHJlaXNlcmZzX2VtYmVkIChpbnQgKnN0YXJ0X3NlY3RvciwgaW50
IG5lZWRlZF9zZWN0b3JzKTsKICNkZWZpbmUgRlNZU19WU1RBRlNfTlVNIDEKIGludCB2c3RhZnNf
bW91bnQgKHZvaWQpOwogaW50IHZzdGFmc19yZWFkIChjaGFyICpidWYsIGludCBsZW4pOwotaW50
IHZzdGFmc19kaXIgKGNoYXIgKmRpcm5hbWUpOworaW50IHZzdGFmc19kaXIgKGNoYXIgKmRpcm5h
bWUsIHZvaWQgKCpoYW5kbGUpKGNoYXIgKikpOwogI2Vsc2UKICNkZWZpbmUgRlNZU19WU1RBRlNf
TlVNIDAKICNlbmRpZgpAQCAtOTAsNyArMTAwLDcgQEAgaW50IHZzdGFmc19kaXIgKGNoYXIgKmRp
cm5hbWUpOwogI2RlZmluZSBGU1lTX0pGU19OVU0gMQogaW50IGpmc19tb3VudCAodm9pZCk7CiBp
bnQgamZzX3JlYWQgKGNoYXIgKmJ1ZiwgaW50IGxlbik7Ci1pbnQgamZzX2RpciAoY2hhciAqZGly
bmFtZSk7CitpbnQgamZzX2RpciAoY2hhciAqZGlybmFtZSwgdm9pZCAoKmhhbmRsZSkoY2hhciAq
KSk7CiBpbnQgamZzX2VtYmVkIChpbnQgKnN0YXJ0X3NlY3RvciwgaW50IG5lZWRlZF9zZWN0b3Jz
KTsKICNlbHNlCiAjZGVmaW5lIEZTWVNfSkZTX05VTSAwCkBAIC0xMDAsNyArMTEwLDcgQEAgaW50
IGpmc19lbWJlZCAoaW50ICpzdGFydF9zZWN0b3IsIGludCBuZWVkZWRfc2VjdG9ycyk7CiAjZGVm
aW5lIEZTWVNfWEZTX05VTSAxCiBpbnQgeGZzX21vdW50ICh2b2lkKTsKIGludCB4ZnNfcmVhZCAo
Y2hhciAqYnVmLCBpbnQgbGVuKTsKLWludCB4ZnNfZGlyIChjaGFyICpkaXJuYW1lKTsKK2ludCB4
ZnNfZGlyIChjaGFyICpkaXJuYW1lLCB2b2lkICgqaGFuZGxlKShjaGFyICopKTsKICNlbHNlCiAj
ZGVmaW5lIEZTWVNfWEZTX05VTSAwCiAjZW5kaWYKQEAgLTEwOSw3ICsxMTksNyBAQCBpbnQgeGZz
X2RpciAoY2hhciAqZGlybmFtZSk7CiAjZGVmaW5lIEZTWVNfVEZUUF9OVU0gMQogaW50IHRmdHBf
bW91bnQgKHZvaWQpOwogaW50IHRmdHBfcmVhZCAoY2hhciAqYnVmLCBpbnQgbGVuKTsKLWludCB0
ZnRwX2RpciAoY2hhciAqZGlybmFtZSk7CitpbnQgdGZ0cF9kaXIgKGNoYXIgKmRpcm5hbWUsIHZv
aWQgKCpoYW5kbGUpKGNoYXIgKikpOwogdm9pZCB0ZnRwX2Nsb3NlICh2b2lkKTsKICNlbHNlCiAj
ZGVmaW5lIEZTWVNfVEZUUF9OVU0gMApAQCAtMTE5LDcgKzEyOSw3IEBAIHZvaWQgdGZ0cF9jbG9z
ZSAodm9pZCk7CiAjZGVmaW5lIEZTWVNfSVNPOTY2MF9OVU0gMQogaW50IGlzbzk2NjBfbW91bnQg
KHZvaWQpOwogaW50IGlzbzk2NjBfcmVhZCAoY2hhciAqYnVmLCBpbnQgbGVuKTsKLWludCBpc285
NjYwX2RpciAoY2hhciAqZGlybmFtZSk7CitpbnQgaXNvOTY2MF9kaXIgKGNoYXIgKmRpcm5hbWUs
IHZvaWQgKCpoYW5kbGUpKGNoYXIgKikpOwogI2Vsc2UKICNkZWZpbmUgRlNZU19JU085NjYwX05V
TSAwCiAjZW5kaWYKQEAgLTE1MCwxNiArMTYwLDEwIEBAIHN0cnVjdCBmc3lzX2VudHJ5CiAgIGNo
YXIgKm5hbWU7CiAgIGludCAoKm1vdW50X2Z1bmMpICh2b2lkKTsKICAgaW50ICgqcmVhZF9mdW5j
KSAoY2hhciAqYnVmLCBpbnQgbGVuKTsKLSAgaW50ICgqZGlyX2Z1bmMpIChjaGFyICpkaXJuYW1l
KTsKKyAgaW50ICgqZGlyX2Z1bmMpIChjaGFyICpkaXJuYW1lLCB2b2lkICgqcHJpbnRfb25lKShj
aGFyICopKTsKICAgdm9pZCAoKmNsb3NlX2Z1bmMpICh2b2lkKTsKICAgaW50ICgqZW1iZWRfZnVu
YykgKGludCAqc3RhcnRfc2VjdG9yLCBpbnQgbmVlZGVkX3NlY3RvcnMpOwogfTsKIAotI2lmZGVm
IFNUQUdFMV81Ci0jIGRlZmluZSBwcmludF9wb3NzaWJpbGl0aWVzIDAKLSNlbHNlCi1leHRlcm4g
aW50IHByaW50X3Bvc3NpYmlsaXRpZXM7Ci0jZW5kaWYKLQogZXh0ZXJuIGludCBmc21heDsKIGV4
dGVybiBzdHJ1Y3QgZnN5c19lbnRyeSBmc3lzX3RhYmxlW05VTV9GU1lTICsgMV07CmRpZmYgLS1n
aXQgYS9zdGFnZTIvZnN5c19leHQyZnMuYyBiL3N0YWdlMi9mc3lzX2V4dDJmcy5jCmluZGV4IDU2
MDA0OGYuLjZkNDZmOGYgMTAwNjQ0Ci0tLSBhL3N0YWdlMi9mc3lzX2V4dDJmcy5jCisrKyBiL3N0
YWdlMi9mc3lzX2V4dDJmcy5jCkBAIC0xOTMsNyArMTkzLDcgQEAgc3RydWN0IGV4dDJfZGlyX2Vu
dHJ5CiAKIAogLyogZXh0Mi9zdXBlci5jICovCi0jZGVmaW5lIGxvZzIobikgZmZ6KH4obikpCisj
ZGVmaW5lIGdydWJfbG9nMihuKSBmZnoofihuKSkKIAogI2RlZmluZSBFWFQyX1NVUEVSX01BR0lD
ICAgICAgMHhFRjUzCS8qIGluY2x1ZGUvbGludXgvZXh0Ml9mcy5oICovCiAjZGVmaW5lIEVYVDJf
Uk9PVF9JTk8gICAgICAgICAgICAgIDIJLyogaW5jbHVkZS9saW51eC9leHQyX2ZzLmggKi8KQEAg
LTIxNiw3ICsyMTYsNyBAQCBzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkKIAogLyogbGludXgvZXh0Ml9m
cy5oICovCiAjZGVmaW5lIEVYVDJfQUREUl9QRVJfQkxPQ0socykgICAgICAgICAgKEVYVDJfQkxP
Q0tfU0laRShzKSAvIHNpemVvZiAoX191MzIpKQotI2RlZmluZSBFWFQyX0FERFJfUEVSX0JMT0NL
X0JJVFMocykJCShsb2cyKEVYVDJfQUREUl9QRVJfQkxPQ0socykpKQorI2RlZmluZSBFWFQyX0FE
RFJfUEVSX0JMT0NLX0JJVFMocykJCShncnViX2xvZzIoRVhUMl9BRERSX1BFUl9CTE9DSyhzKSkp
CiAKIC8qIGxpbnV4L2V4dDJfZnMuaCAqLwogI2RlZmluZSBFWFQyX0JMT0NLX1NJWkVfQklUUyhz
KSAgICAgICAgKChzKS0+c19sb2dfYmxvY2tfc2l6ZSArIDEwKQpAQCAtMjU3LDYgKzI1Nyw4IEBA
IGV4dDJmc19tb3VudCAodm9pZCkKICAgaWYgKCgoKGN1cnJlbnRfZHJpdmUgJiAweDgwKSB8fCAo
Y3VycmVudF9zbGljZSAhPSAwKSkKICAgICAgICAmJiAoY3VycmVudF9zbGljZSAhPSBQQ19TTElD
RV9UWVBFX0VYVDJGUykKICAgICAgICAmJiAoY3VycmVudF9zbGljZSAhPSBQQ19TTElDRV9UWVBF
X0xJTlVYX1JBSUQpCisgICAgICAgJiYgKGN1cnJlbnRfc2xpY2UgIT0gUENfU0xJQ0VfVFlQRV9a
RU4pCisgICAgICAgJiYgKGN1cnJlbnRfc2xpY2UgIT0gUENfU0xJQ0VfVFlQRV9aRU5fRElTQUJM
RUQpCiAgICAgICAgJiYgKCEgSVNfUENfU0xJQ0VfVFlQRV9CU0RfV0lUSF9GUyAoY3VycmVudF9z
bGljZSwgRlNfRVhUMkZTKSkKICAgICAgICAmJiAoISBJU19QQ19TTElDRV9UWVBFX0JTRF9XSVRI
X0ZTIChjdXJyZW50X3NsaWNlLCBGU19PVEhFUikpKQogICAgICAgfHwgcGFydF9sZW5ndGggPCAo
U0JMT0NLICsgKHNpemVvZiAoc3RydWN0IGV4dDJfc3VwZXJfYmxvY2spIC8gREVWX0JTSVpFKSkK
QEAgLTQ5NSw3ICs0OTcsNyBAQCBpbnQgZXh0Ml9pc19mYXN0X3N5bWxpbmsgKHZvaWQpCiAgKiBz
aWRlIGVmZmVjdHM6IG1lc3NlcyB1cCBHUk9VUF9ERVNDIGJ1ZmZlciBhcmVhCiAgKi8KIGludAot
ZXh0MmZzX2RpciAoY2hhciAqZGlybmFtZSkKK2V4dDJmc19kaXIgKGNoYXIgKmRpcm5hbWUsIHZv
aWQgKCpoYW5kbGUpKGNoYXIgKikpCiB7CiAgIGludCBjdXJyZW50X2lubyA9IEVYVDJfUk9PVF9J
Tk87CS8qIHN0YXJ0IGF0IHRoZSByb290ICovCiAgIGludCB1cGRpcl9pbm8gPSBjdXJyZW50X2lu
bzsJLyogdGhlIHBhcmVudCBvZiB0aGUgY3VycmVudCBkaXJlY3RvcnkgKi8KQEAgLTUyMSw3ICs1
MjMsNiBAQCBleHQyZnNfZGlyIChjaGFyICpkaXJuYW1lKQogI2lmZGVmIEUyREVCVUcKICAgdW5z
aWduZWQgY2hhciAqaTsKICNlbmRpZgkvKiBFMkRFQlVHICovCi0KICAgLyogbG9vcCBpbnZhcmlh
bnRzOgogICAgICBjdXJyZW50X2lubyA9IGlub2RlIHRvIGxvb2t1cAogICAgICBkaXJuYW1lID0g
cG9pbnRlciB0byBmaWxlbmFtZSBjb21wb25lbnQgd2UgYXJlIGN1ciBsb29raW5nIHVwIHdpdGhp
bgpAQCAtNTM3LDcgKzUzOCw3IEBAIGV4dDJmc19kaXIgKGNoYXIgKmRpcm5hbWUpCiAKICAgICAg
IC8qIGxvb2sgdXAgYW4gaW5vZGUgKi8KICAgICAgIGdyb3VwX2lkID0gKGN1cnJlbnRfaW5vIC0g
MSkgLyAoU1VQRVJCTE9DSy0+c19pbm9kZXNfcGVyX2dyb3VwKTsKLSAgICAgIGdyb3VwX2Rlc2Mg
PSBncm91cF9pZCA+PiBsb2cyIChFWFQyX0RFU0NfUEVSX0JMT0NLIChTVVBFUkJMT0NLKSk7Cisg
ICAgICBncm91cF9kZXNjID0gZ3JvdXBfaWQgPj4gZ3J1Yl9sb2cyIChFWFQyX0RFU0NfUEVSX0JM
T0NLIChTVVBFUkJMT0NLKSk7CiAgICAgICBkZXNjID0gZ3JvdXBfaWQgJiAoRVhUMl9ERVNDX1BF
Ul9CTE9DSyAoU1VQRVJCTE9DSykgLSAxKTsKICNpZmRlZiBFMkRFQlVHCiAgICAgICBwcmludGYg
KCJpcGc9JWQsIGRwYj0lZFxuIiwgU1VQRVJCTE9DSy0+c19pbm9kZXNfcGVyX2dyb3VwLApAQCAt
NTUzLDcgKzU1NCw3IEBAIGV4dDJmc19kaXIgKGNoYXIgKmRpcm5hbWUpCiAgICAgICBnZHAgPSBH
Uk9VUF9ERVNDOwogICAgICAgaW5vX2JsayA9IGdkcFtkZXNjXS5iZ19pbm9kZV90YWJsZSArCiAJ
KCgoY3VycmVudF9pbm8gLSAxKSAlIChTVVBFUkJMT0NLLT5zX2lub2Rlc19wZXJfZ3JvdXApKQot
CSA+PiBsb2cyIChFWFQyX0JMT0NLX1NJWkUgKFNVUEVSQkxPQ0spIC8gc2l6ZW9mIChzdHJ1Y3Qg
ZXh0Ml9pbm9kZSkpKTsKKwkgPj4gZ3J1Yl9sb2cyIChFWFQyX0JMT0NLX1NJWkUgKFNVUEVSQkxP
Q0spIC8gc2l6ZW9mIChzdHJ1Y3QgZXh0Ml9pbm9kZSkpKTsKICNpZmRlZiBFMkRFQlVHCiAgICAg
ICBwcmludGYgKCJpbm9kZSB0YWJsZSBmc2Jsb2NrPSVkXG4iLCBpbm9fYmxrKTsKICNlbmRpZiAv
KiBFMkRFQlVHICovCkBAIC03MTMsMTggKzcxNCw5IEBAIGV4dDJmc19kaXIgKGNoYXIgKmRpcm5h
bWUpCiAJICAgICBnaXZlIHVwICovCiAJICBpZiAobG9jID49IElOT0RFLT5pX3NpemUpCiAJICAg
IHsKLQkgICAgICBpZiAocHJpbnRfcG9zc2liaWxpdGllcyA8IDApCi0JCXsKLSMgaWYgMAotCQkg
IHB1dGNoYXIgKCdcbicpOwotIyBlbmRpZgotCQl9Ci0JICAgICAgZWxzZQotCQl7Ci0JCSAgZXJy
bnVtID0gRVJSX0ZJTEVfTk9UX0ZPVU5EOwotCQkgICpyZXN0ID0gY2g7Ci0JCX0KLQkgICAgICBy
ZXR1cm4gKHByaW50X3Bvc3NpYmlsaXRpZXMgPCAwKTsKKwkgICAgICBlcnJudW0gPSBFUlJfRklM
RV9OT1RfRk9VTkQ7CisJICAgICAgKnJlc3QgPSBjaDsKKwkgICAgICByZXR1cm4gMDsKIAkgICAg
fQogCiAJICAvKiBlbHNlLCBmaW5kIHRoZSAobG9naWNhbCkgYmxvY2sgY29tcG9uZW50IG9mIG91
ciBsb2NhdGlvbiAqLwpAQCAtNzY1LDIwICs3NTcsMTUgQEAgZXh0MmZzX2RpciAoY2hhciAqZGly
bmFtZSkKIAkgICAgICBzdHJfY2hrID0gc3Vic3RyaW5nIChkaXJuYW1lLCBkcC0+bmFtZSk7CiAK
ICMgaWZuZGVmIFNUQUdFMV81Ci0JICAgICAgaWYgKHByaW50X3Bvc3NpYmlsaXRpZXMgJiYgY2gg
IT0gJy8nCi0JCSAgJiYgKCEqZGlybmFtZSB8fCBzdHJfY2hrIDw9IDApKQotCQl7Ci0JCSAgaWYg
KHByaW50X3Bvc3NpYmlsaXRpZXMgPiAwKQotCQkgICAgcHJpbnRfcG9zc2liaWxpdGllcyA9IC1w
cmludF9wb3NzaWJpbGl0aWVzOwotCQkgIHByaW50X2FfY29tcGxldGlvbiAoZHAtPm5hbWUpOwot
CQl9CisJICAgICAgaWYgKGhhbmRsZSAmJiBjaCAhPSAnLycgJiYgKCEqZGlybmFtZSB8fCBzdHJf
Y2hrIDw9IDApKQorCQloYW5kbGUgKGRwLT5uYW1lKTsKICMgZW5kaWYKIAogCSAgICAgIGRwLT5u
YW1lW2RwLT5uYW1lX2xlbl0gPSBzYXZlZF9jOwogCSAgICB9CiAKIAl9Ci0gICAgICB3aGlsZSAo
IWRwLT5pbm9kZSB8fCAoc3RyX2NoayB8fCAocHJpbnRfcG9zc2liaWxpdGllcyAmJiBjaCAhPSAn
LycpKSk7CisgICAgICB3aGlsZSAoIWRwLT5pbm9kZSB8fCAoc3RyX2NoayB8fCAoaGFuZGxlICYm
IGNoICE9ICcvJykpKTsKIAogICAgICAgY3VycmVudF9pbm8gPSBkcC0+aW5vZGU7CiAgICAgICAq
KGRpcm5hbWUgPSByZXN0KSA9IGNoOwpkaWZmIC0tZ2l0IGEvc3RhZ2UyL2ZzeXNfZmF0LmMgYi9z
dGFnZTIvZnN5c19mYXQuYwppbmRleCBmNDBlNjU4Li4xYTYyZmNmIDEwMDY0NAotLS0gYS9zdGFn
ZTIvZnN5c19mYXQuYworKysgYi9zdGFnZTIvZnN5c19mYXQuYwpAQCAtNTUsNyArNTUsNyBAQCBz
dHJ1Y3QgZmF0X3N1cGVyYmxvY2sKICNkZWZpbmUgRkFUX0NBQ0hFX1NJWkUgMjA0OAogCiBzdGF0
aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nCi1sb2cyICh1bnNpZ25lZCBsb25nIHdvcmQpCitn
cnViX2xvZzIgKHVuc2lnbmVkIGxvbmcgd29yZCkKIHsKICAgX19hc21fXyAoImJzZmwgJTEsJTAi
CiAJICAgOiAiPXIiICh3b3JkKQpAQCAtODQsOSArODQsOSBAQCBmYXRfbW91bnQgKHZvaWQpCiAg
IGlmIChicGIuc2VjdHNfcGVyX2NsdXN0ID09IDApCiAgICAgcmV0dXJuIDA7CiAgIAotICBGQVRf
U1VQRVItPnNlY3RzaXplX2JpdHMgPSBsb2cyIChGQVRfQ1ZUX1UxNiAoYnBiLmJ5dGVzX3Blcl9z
ZWN0KSk7CisgIEZBVF9TVVBFUi0+c2VjdHNpemVfYml0cyA9IGdydWJfbG9nMiAoRkFUX0NWVF9V
MTYgKGJwYi5ieXRlc19wZXJfc2VjdCkpOwogICBGQVRfU1VQRVItPmNsdXN0c2l6ZV9iaXRzCi0g
ICAgPSBGQVRfU1VQRVItPnNlY3RzaXplX2JpdHMgKyBsb2cyIChicGIuc2VjdHNfcGVyX2NsdXN0
KTsKKyAgICA9IEZBVF9TVVBFUi0+c2VjdHNpemVfYml0cyArIGdydWJfbG9nMiAoYnBiLnNlY3Rz
X3Blcl9jbHVzdCk7CiAgIAogICAvKiBGaWxsIGluIGluZm8gYWJvdXQgc3VwZXIgYmxvY2sgKi8K
ICAgRkFUX1NVUEVSLT5udW1fc2VjdG9ycyA9IEZBVF9DVlRfVTE2IChicGIuc2hvcnRfc2VjdG9y
cykgCkBAIC0yODksNyArMjg5LDcgQEAgZmF0X3JlYWQgKGNoYXIgKmJ1ZiwgaW50IGxlbikKIH0K
IAogaW50Ci1mYXRfZGlyIChjaGFyICpkaXJuYW1lKQorZmF0X2RpciAoY2hhciAqZGlybmFtZSwg
dm9pZCAoKmhhbmRsZSkoY2hhciAqKSkKIHsKICAgY2hhciAqcmVzdCwgY2gsIGRpcl9idWZbRkFU
X0RJUkVOVFJZX0xFTkdUSF07CiAgIGNoYXIgKmZpbGVuYW1lID0gKGNoYXIgKikgTkFNRV9CVUY7
CkBAIC0zNDUsNyArMzQ1LDcgQEAgZmF0X2RpciAoY2hhciAqZGlybmFtZSkKICAgKnJlc3QgPSAw
OwogICAKICMgaWZuZGVmIFNUQUdFMV81Ci0gIGlmIChwcmludF9wb3NzaWJpbGl0aWVzICYmIGNo
ICE9ICcvJykKKyAgaWYgKGhhbmRsZSAmJiBjaCAhPSAnLycpCiAgICAgZG9fcG9zc2liaWxpdGll
cyA9IDE7CiAjIGVuZGlmCiAgIApAQCAtMzU2LDE2ICszNTYsNiBAQCBmYXRfZGlyIChjaGFyICpk
aXJuYW1lKQogCXsKIAkgIGlmICghZXJybnVtKQogCSAgICB7Ci0jIGlmbmRlZiBTVEFHRTFfNQot
CSAgICAgIGlmIChwcmludF9wb3NzaWJpbGl0aWVzIDwgMCkKLQkJewotI2lmIDAKLQkJICBwdXRj
aGFyICgnXG4nKTsKLSNlbmRpZgotCQkgIHJldHVybiAxOwotCQl9Ci0jIGVuZGlmIC8qIFNUQUdF
MV81ICovCi0JICAgICAgCiAJICAgICAgZXJybnVtID0gRVJSX0ZJTEVfTk9UX0ZPVU5EOwogCSAg
ICAgICpyZXN0ID0gY2g7CiAJICAgIH0KQEAgLTQ2MCwxMSArNDUwLDcgQEAgZmF0X2RpciAoY2hh
ciAqZGlybmFtZSkKIAl7CiAJcHJpbnRfZmlsZW5hbWU6CiAJICBpZiAoc3Vic3RyaW5nIChkaXJu
YW1lLCBmaWxlbmFtZSkgPD0gMCkKLQkgICAgewotCSAgICAgIGlmIChwcmludF9wb3NzaWJpbGl0
aWVzID4gMCkKLQkJcHJpbnRfcG9zc2liaWxpdGllcyA9IC1wcmludF9wb3NzaWJpbGl0aWVzOwot
CSAgICAgIHByaW50X2FfY29tcGxldGlvbiAoZmlsZW5hbWUpOwotCSAgICB9CisJICAgIGhhbmRs
ZSAoZmlsZW5hbWUpOwogCSAgY29udGludWU7CiAJfQogIyBlbmRpZiAvKiBTVEFHRTFfNSAqLwpk
aWZmIC0tZ2l0IGEvc3RhZ2UyL2ZzeXNfZmZzLmMgYi9zdGFnZTIvZnN5c19mZnMuYwppbmRleCA2
ZTIzMDBmLi5jMGQwZmE2IDEwMDY0NAotLS0gYS9zdGFnZTIvZnN5c19mZnMuYworKysgYi9zdGFn
ZTIvZnN5c19mZnMuYwpAQCAtMTgwLDcgKzE4MCw3IEBAIGZmc19yZWFkIChjaGFyICpidWYsIGlu
dCBsZW4pCiAKIAogaW50Ci1mZnNfZGlyIChjaGFyICpkaXJuYW1lKQorZmZzX2RpciAoY2hhciAq
ZGlybmFtZSwgdm9pZCAoKmhhbmRsZSkoY2hhciAqKSkKIHsKICAgY2hhciAqcmVzdCwgY2g7CiAg
IGludCBibG9jaywgb2ZmLCBsb2MsIG1hcCwgaW5vID0gUk9PVElOTzsKQEAgLTIzNiwxMyArMjM2
LDYgQEAgbG9vcDoKICAgICB7CiAgICAgICBpZiAobG9jID49IElOT0RFLT5pX3NpemUpCiAJewot
I2lmIDAKLQkgIHB1dGNoYXIgKCdcbicpOwotI2VuZGlmCi0KLQkgIGlmIChwcmludF9wb3NzaWJp
bGl0aWVzIDwgMCkKLQkgICAgcmV0dXJuIDE7Ci0KIAkgIGVycm51bSA9IEVSUl9GSUxFX05PVF9G
T1VORDsKIAkgICpyZXN0ID0gY2g7CiAJICByZXR1cm4gMDsKQEAgLTI2NywxOCArMjYwLDEzIEBA
IGxvb3A6CiAgICAgICBsb2MgKz0gZHAtPmRfcmVjbGVuOwogCiAjaWZuZGVmIFNUQUdFMV81Ci0g
ICAgICBpZiAoZHAtPmRfaW5vICYmIHByaW50X3Bvc3NpYmlsaXRpZXMgJiYgY2ggIT0gJy8nCisg
ICAgICBpZiAoZHAtPmRfaW5vICYmIGhhbmRsZSAmJiBjaCAhPSAnLycKIAkgICYmICghKmRpcm5h
bWUgfHwgc3Vic3RyaW5nIChkaXJuYW1lLCBkcC0+ZF9uYW1lKSA8PSAwKSkKLQl7Ci0JICBpZiAo
cHJpbnRfcG9zc2liaWxpdGllcyA+IDApCi0JICAgIHByaW50X3Bvc3NpYmlsaXRpZXMgPSAtcHJp
bnRfcG9zc2liaWxpdGllczsKLQotCSAgcHJpbnRfYV9jb21wbGV0aW9uIChkcC0+ZF9uYW1lKTsK
LQl9CisJaGFuZGxlIChkcC0+ZF9uYW1lKTsKICNlbmRpZiAvKiBTVEFHRTFfNSAqLwogICAgIH0K
ICAgd2hpbGUgKCFkcC0+ZF9pbm8gfHwgKHN1YnN0cmluZyAoZGlybmFtZSwgZHAtPmRfbmFtZSkg
IT0gMAotCQkJfHwgKHByaW50X3Bvc3NpYmlsaXRpZXMgJiYgY2ggIT0gJy8nKSkpOworCQkJfHwg
KGhhbmRsZSAmJiBjaCAhPSAnLycpKSk7CiAKICAgLyogb25seSBnZXQgaGVyZSBpZiB3ZSBoYXZl
IGEgbWF0Y2hpbmcgZGlyZWN0b3J5IGVudHJ5ICovCiAKZGlmZiAtLWdpdCBhL3N0YWdlMi9mc3lz
X2lzbzk2NjAuYyBiL3N0YWdlMi9mc3lzX2lzbzk2NjAuYwppbmRleCA5MGU0YWE4Li5lMzE0ZjI4
IDEwMDY0NAotLS0gYS9zdGFnZTIvZnN5c19pc285NjYwLmMKKysrIGIvc3RhZ2UyL2ZzeXNfaXNv
OTY2MC5jCkBAIC01Nyw3ICs1Nyw3IEBAIHN0cnVjdCBpc29faW5vZGVfaW5mbyB7CiAKIAogc3Rh
dGljIGlubGluZSB1bnNpZ25lZCBsb25nCi1sb2cyICh1bnNpZ25lZCBsb25nIHdvcmQpCitncnVi
X2xvZzIgKHVuc2lnbmVkIGxvbmcgd29yZCkKIHsKICAgYXNtIHZvbGF0aWxlICgiYnNmbCAlMSwl
MCIKIAkJOiAgICAgICAgICAiPXIiICh3b3JkKQpAQCAtNjgsNyArNjgsNyBAQCBsb2cyICh1bnNp
Z25lZCBsb25nIHdvcmQpCiBzdGF0aWMgaW50CiBpc285NjYwX2RldnJlYWQgKGludCBzZWN0b3Is
IGludCBieXRlX29mZnNldCwgaW50IGJ5dGVfbGVuLCBjaGFyICpidWYpCiB7Ci0gIHVuc2lnbmVk
IHNob3J0IHNlY3Rvcl9zaXplX2xnMiA9IGxvZzIoYnVmX2dlb20uc2VjdG9yX3NpemUpOworICB1
bnNpZ25lZCBzaG9ydCBzZWN0b3Jfc2l6ZV9sZzIgPSBncnViX2xvZzIoYnVmX2dlb20uc2VjdG9y
X3NpemUpOwogCiAgIC8qCiAgICAqIFdlIGhhdmUgdG8gdXNlIG93biBkZXZyZWFkKCkgZnVuY3Rp
b24gc2luY2UgQklPUyByZXR1cm4gd3JvbmcgZ2VvbWV0cnkKQEAgLTEzMyw3ICsxMzMsNyBAQCBp
c285NjYwX21vdW50ICh2b2lkKQogfQogCiBpbnQKLWlzbzk2NjBfZGlyIChjaGFyICpkaXJuYW1l
KQoraXNvOTY2MF9kaXIgKGNoYXIgKmRpcm5hbWUsIHZvaWQgKCpoYW5kbGUpKGNoYXIgKikpCiB7
CiAgIHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCAqaWRyOwogICBSUl9wdHJfdCBycl9wdHI7
CkBAIC0zNDYsNyArMzQ2LDcgQEAgaXNvOTY2MF9kaXIgKGNoYXIgKmRpcm5hbWUpCiAJICAgICAg
aWYgKG5hbWVfbGVuID49IHBhdGhsZW4KIAkJICAmJiAhbWVtY21wKG5hbWUsIGRpcm5hbWUsIHBh
dGhsZW4pKQogCQl7Ci0JCSAgaWYgKGRpcm5hbWVbcGF0aGxlbl0gPT0gJy8nIHx8ICFwcmludF9w
b3NzaWJpbGl0aWVzKQorCQkgIGlmIChkaXJuYW1lW3BhdGhsZW5dID09ICcvJyB8fCAhaGFuZGxl
KQogCQkgICAgewogCQkgICAgICAvKgogCQkgICAgICAgKiAgRElSTkFNRSBpcyBkaXJlY3Rvcnkg
Y29tcG9uZW50IG9mIHBhdGhuYW1lLApAQCAtMzc3LDExICszNzcsOSBAQCBpc285NjYwX2RpciAo
Y2hhciAqZGlybmFtZSkKIAkJICBlbHNlCS8qIENvbXBsZXRpb24gKi8KIAkJICAgIHsKICNpZm5k
ZWYgU1RBR0UxXzUKLQkJICAgICAgaWYgKHByaW50X3Bvc3NpYmlsaXRpZXMgPiAwKQotCQkJcHJp
bnRfcG9zc2liaWxpdGllcyA9IC1wcmludF9wb3NzaWJpbGl0aWVzOwogCQkgICAgICBtZW1jcHko
TkFNRV9CVUYsIG5hbWUsIG5hbWVfbGVuKTsKIAkJICAgICAgTkFNRV9CVUZbbmFtZV9sZW5dID0g
J1wwJzsKLQkJICAgICAgcHJpbnRfYV9jb21wbGV0aW9uIChOQU1FX0JVRik7CisJCSAgICAgIGhh
bmRsZSAoTkFNRV9CVUYpOwogI2VuZGlmCiAJCSAgICB9CiAJCX0KQEAgLTM5MCw3ICszODgsNyBA
QCBpc285NjYwX2RpciAoY2hhciAqZGlybmFtZSkKIAkgIHNpemUgLT0gSVNPX1NFQ1RPUl9TSVpF
OwogCX0gLyogc2l6ZT4wICovCiAKLSAgICAgIGlmIChkaXJuYW1lW3BhdGhsZW5dID09ICcvJyB8
fCBwcmludF9wb3NzaWJpbGl0aWVzID49IDApCisgICAgICBpZiAoZGlybmFtZVtwYXRobGVuXSA9
PSAnLycgfHwgaGFuZGxlKQogCXsKIAkgIGVycm51bSA9IEVSUl9GSUxFX05PVF9GT1VORDsKIAkg
IHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvc3RhZ2UyL2ZzeXNfamZzLmMgYi9zdGFnZTIvZnN5c19q
ZnMuYwppbmRleCAzMDdmODM2Li4xNjE5ZDI5IDEwMDY0NAotLS0gYS9zdGFnZTIvZnN5c19qZnMu
YworKysgYi9zdGFnZTIvZnN5c19qZnMuYwpAQCAtMjcwLDcgKzI3MCw3IEBAIGpmc19yZWFkIChj
aGFyICpidWYsIGludCBsZW4pCiB9CiAKIGludAotamZzX2RpciAoY2hhciAqZGlybmFtZSkKK2pm
c19kaXIgKGNoYXIgKmRpcm5hbWUsIHZvaWQgKCpoYW5kbGUpKGNoYXIgKikpCiB7CiAJY2hhciAq
cHRyLCAqcmVzdCwgY2g7CiAJbGR0ZW50cnlfdCAqZGU7CkBAIC0zNTcsMTIgKzM1Nyw5IEBAIGpm
c19kaXIgKGNoYXIgKmRpcm5hbWUpCiAKIAkJCWNtcCA9ICghKmRpcm5hbWUpID8gLTEgOiBzdWJz
dHJpbmcgKGRpcm5hbWUsIG5hbWVidWYpOwogI2lmbmRlZiBTVEFHRTFfNQotCQkJaWYgKHByaW50
X3Bvc3NpYmlsaXRpZXMgJiYgY2ggIT0gJy8nCi0JCQkgICAgJiYgY21wIDw9IDApIHsKLQkJCQlp
ZiAocHJpbnRfcG9zc2liaWxpdGllcyA+IDApCi0JCQkJCXByaW50X3Bvc3NpYmlsaXRpZXMgPSAt
cHJpbnRfcG9zc2liaWxpdGllczsKLQkJCQlwcmludF9hX2NvbXBsZXRpb24gKG5hbWVidWYpOwot
CQkJfSBlbHNlCisJCQlpZiAoaGFuZGxlICYmIGNoICE9ICcvJyAmJiBjbXAgPD0gMCkKKwkJCQlo
YW5kbGUgKG5hbWVidWYpOworCQkJZWxzZQogI2VuZGlmCiAJCQlpZiAoY21wID09IDApIHsKIAkJ
CQlwYXJlbnRfaW51bSA9IGludW07CkBAIC0zNzIsOSArMzY5LDYgQEAgamZzX2RpciAoY2hhciAq
ZGlybmFtZSkKIAkJCX0KIAkJCWRlID0gbmV4dF9kZW50cnkgKCk7CiAJCQlpZiAoZGUgPT0gTlVM
TCkgewotCQkJCWlmIChwcmludF9wb3NzaWJpbGl0aWVzIDwgMCkKLQkJCQkJcmV0dXJuIDE7Ci0K
IAkJCQllcnJudW0gPSBFUlJfRklMRV9OT1RfRk9VTkQ7CiAJCQkJKnJlc3QgPSBjaDsKIAkJCQly
ZXR1cm4gMDsKZGlmZiAtLWdpdCBhL3N0YWdlMi9mc3lzX21pbml4LmMgYi9zdGFnZTIvZnN5c19t
aW5peC5jCmluZGV4IDVjNzY3OTYuLmI4NmIyYjQgMTAwNjQ0Ci0tLSBhL3N0YWdlMi9mc3lzX21p
bml4LmMKKysrIGIvc3RhZ2UyL2ZzeXNfbWluaXguYwpAQCAtMjk0LDcgKzI5NCw3IEBAIG1pbml4
X3JlYWQgKGNoYXIgKmJ1ZiwgaW50IGxlbikKICAgICAgaW5vZGUgb2YgdGhlIGZpbGUgd2Ugd2Vy
ZSB0cnlpbmcgdG8gbG9vayB1cAogICAgc2lkZSBlZmZlY3RzOiBub25lIHlldCAgKi8KIGludAot
bWluaXhfZGlyIChjaGFyICpkaXJuYW1lKQorbWluaXhfZGlyIChjaGFyICpkaXJuYW1lLCB2b2lk
ICgqaGFuZGxlKShjaGFyICopKQogewogICBpbnQgY3VycmVudF9pbm8gPSBNSU5JWF9ST09UX0lO
TzsgIC8qIHN0YXJ0IGF0IHRoZSByb290ICovCiAgIGludCB1cGRpcl9pbm8gPSBjdXJyZW50X2lu
bzsJICAgICAvKiB0aGUgcGFyZW50IG9mIHRoZSBjdXJyZW50IGRpcmVjdG9yeSAqLwpAQCAtNDU3
LDE4ICs0NTcsOSBAQCBtaW5peF9kaXIgKGNoYXIgKmRpcm5hbWUpCiAJICAgICBnaXZlIHVwICov
CiAJICBpZiAobG9jID49IElOT0RFLT5pX3NpemUpCiAJICAgIHsKLQkgICAgICBpZiAocHJpbnRf
cG9zc2liaWxpdGllcyA8IDApCi0JCXsKLSNpZiAwCi0JCSAgcHV0Y2hhciAoJ1xuJyk7Ci0jZW5k
aWYKLQkJfQotCSAgICAgIGVsc2UKLQkJewotCQkgIGVycm51bSA9IEVSUl9GSUxFX05PVF9GT1VO
RDsKLQkJICAqcmVzdCA9IGNoOwotCQl9Ci0JICAgICAgcmV0dXJuIChwcmludF9wb3NzaWJpbGl0
aWVzIDwgMCk7CisJICAgICAgZXJybnVtID0gRVJSX0ZJTEVfTk9UX0ZPVU5EOworCSAgICAgICpy
ZXN0ID0gY2g7CisJICAgICAgcmV0dXJuIDA7CiAJICAgIH0KIAogCSAgLyogZWxzZSwgZmluZCB0
aGUgKGxvZ2ljYWwpIGJsb2NrIGNvbXBvbmVudCBvZiBvdXIgbG9jYXRpb24gKi8KQEAgLTUxMCwy
MCArNTAxLDE1IEBAIG1pbml4X2RpciAoY2hhciAqZGlybmFtZSkKIAkgICAgICBzdHJfY2hrID0g
c3Vic3RyaW5nIChkaXJuYW1lLCBkcC0+bmFtZSk7CiAKICMgaWZuZGVmIFNUQUdFMV81Ci0JICAg
ICAgaWYgKHByaW50X3Bvc3NpYmlsaXRpZXMgJiYgY2ggIT0gJy8nCi0JCSAgJiYgKCEqZGlybmFt
ZSB8fCBzdHJfY2hrIDw9IDApKQotCQl7Ci0JCSAgaWYgKHByaW50X3Bvc3NpYmlsaXRpZXMgPiAw
KQotCQkgICAgcHJpbnRfcG9zc2liaWxpdGllcyA9IC1wcmludF9wb3NzaWJpbGl0aWVzOwotCQkg
IHByaW50X2FfY29tcGxldGlvbiAoZHAtPm5hbWUpOwotCQl9CisJICAgICAgaWYgKGhhbmRsZSAm
JiBjaCAhPSAnLycgJiYgKCEqZGlybmFtZSB8fCBzdHJfY2hrIDw9IDApKQorCQloYW5kbGUgKGRw
LT5uYW1lKTsKICMgZW5kaWYKIAogCSAgICAgIGRwLT5uYW1lW25hbWVsZW5dID0gc2F2ZWRfYzsK
IAkgICAgfQogCiAJfQotICAgICAgd2hpbGUgKCFkcC0+aW5vZGUgfHwgKHN0cl9jaGsgfHwgKHBy
aW50X3Bvc3NpYmlsaXRpZXMgJiYgY2ggIT0gJy8nKSkpOworICAgICAgd2hpbGUgKCFkcC0+aW5v
ZGUgfHwgKHN0cl9jaGsgfHwgKGhhbmRsZSAmJiBjaCAhPSAnLycpKSk7CiAKICAgICAgIGN1cnJl
bnRfaW5vID0gZHAtPmlub2RlOwogICAgICAgKihkaXJuYW1lID0gcmVzdCkgPSBjaDsKZGlmZiAt
LWdpdCBhL3N0YWdlMi9mc3lzX3JlaXNlcmZzLmMgYi9zdGFnZTIvZnN5c19yZWlzZXJmcy5jCmlu
ZGV4IDkzZWM1ZjguLjdhNmY4ZmMgMTAwNjQ0Ci0tLSBhL3N0YWdlMi9mc3lzX3JlaXNlcmZzLmMK
KysrIGIvc3RhZ2UyL2ZzeXNfcmVpc2VyZnMuYwpAQCAtMzY3LDcgKzM2Nyw3IEBAIHN0cnVjdCBm
c3lzX3JlaXNlcl9pbmZvCiAKIAogc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZwotbG9n
MiAodW5zaWduZWQgbG9uZyB3b3JkKQorZ3J1Yl9sb2cyICh1bnNpZ25lZCBsb25nIHdvcmQpCiB7
CiAgIF9fYXNtX18gKCJic2ZsICUxLCUwIgogCSAgIDogIj1yIiAod29yZCkKQEAgLTYwOSw3ICs2
MDksNyBAQCByZWlzZXJmc19tb3VudCAodm9pZCkKICAgCiAgIElORk8tPnZlcnNpb24gPSBzdXBl
ci5zX3ZlcnNpb247CiAgIElORk8tPmJsb2Nrc2l6ZSA9IHN1cGVyLnNfYmxvY2tzaXplOwotICBJ
TkZPLT5mdWxsYmxvY2tzaXplX3NoaWZ0ID0gbG9nMiAoc3VwZXIuc19ibG9ja3NpemUpOworICBJ
TkZPLT5mdWxsYmxvY2tzaXplX3NoaWZ0ID0gZ3J1Yl9sb2cyIChzdXBlci5zX2Jsb2Nrc2l6ZSk7
CiAgIElORk8tPmJsb2Nrc2l6ZV9zaGlmdCA9IElORk8tPmZ1bGxibG9ja3NpemVfc2hpZnQgLSBT
RUNUT1JfQklUUzsKICAgSU5GTy0+Y2FjaGVkX3Nsb3RzID0gCiAgICAgKEZTWVNSRUlTRVJfQ0FD
SEVfU0laRSA+PiBJTkZPLT5mdWxsYmxvY2tzaXplX3NoaWZ0KSAtIDE7CkBAIC05OTEsNyArOTkx
LDcgQEAgcmVpc2VyZnNfcmVhZCAoY2hhciAqYnVmLCBpbnQgbGVuKQogICogICB0aGUgc2l6ZSBv
ZiB0aGUgZmlsZS4KICAqLwogaW50Ci1yZWlzZXJmc19kaXIgKGNoYXIgKmRpcm5hbWUpCityZWlz
ZXJmc19kaXIgKGNoYXIgKmRpcm5hbWUsIHZvaWQgKCpoYW5kbGUpKGNoYXIgKikpCiB7CiAgIHN0
cnVjdCByZWlzZXJmc19kZV9oZWFkICpkZV9oZWFkOwogICBjaGFyICpyZXN0LCBjaDsKQEAgLTEx
MjMsNyArMTEyMyw3IEBAIHJlaXNlcmZzX2RpciAoY2hhciAqZGlybmFtZSkKICAgICAgICpyZXN0
ID0gMDsKICAgICAgIAogIyBpZm5kZWYgU1RBR0UxXzUKLSAgICAgIGlmIChwcmludF9wb3NzaWJp
bGl0aWVzICYmIGNoICE9ICcvJykKKyAgICAgIGlmIChoYW5kbGUgJiYgY2ggIT0gJy8nKQogCWRv
X3Bvc3NpYmlsaXRpZXMgPSAxOwogIyBlbmRpZiAvKiAhIFNUQUdFMV81ICovCiAgICAgICAKQEAg
LTExNzAsMTAgKzExNzAsOCBAQCByZWlzZXJmc19kaXIgKGNoYXIgKmRpcm5hbWUpCiAJCSAgICB7
CiAJCSAgICAgIGlmIChjbXAgPD0gMCkKIAkJCXsKLQkJCSAgaWYgKHByaW50X3Bvc3NpYmlsaXRp
ZXMgPiAwKQotCQkJICAgIHByaW50X3Bvc3NpYmlsaXRpZXMgPSAtcHJpbnRfcG9zc2liaWxpdGll
czsKIAkJCSAgKm5hbWVfZW5kID0gMDsKLQkJCSAgcHJpbnRfYV9jb21wbGV0aW9uIChmaWxlbmFt
ZSk7CisJCQkgIGhhbmRsZSAoZmlsZW5hbWUpOwogCQkJICAqbmFtZV9lbmQgPSB0bXA7CiAJCQl9
CiAJCSAgICB9CkBAIC0xMTg5LDEyICsxMTg3LDYgQEAgcmVpc2VyZnNfZGlyIChjaGFyICpkaXJu
YW1lKQogCSAgICAgIG51bV9lbnRyaWVzLS07CiAJICAgIH0KIAl9Ci0gICAgICAKLSMgaWZuZGVm
IFNUQUdFMV81Ci0gICAgICBpZiAocHJpbnRfcG9zc2liaWxpdGllcyA8IDApCi0JcmV0dXJuIDE7
Ci0jIGVuZGlmIC8qICEgU1RBR0UxXzUgKi8KLSAgICAgIAogICAgICAgZXJybnVtID0gRVJSX0ZJ
TEVfTk9UX0ZPVU5EOwogICAgICAgKnJlc3QgPSBjaDsKICAgICAgIHJldHVybiAwOwpkaWZmIC0t
Z2l0IGEvc3RhZ2UyL2ZzeXNfdWZzMi5jIGIvc3RhZ2UyL2ZzeXNfdWZzMi5jCmluZGV4IDNiNjQz
MTMuLmZmYjhhNzkgMTAwNjQ0Ci0tLSBhL3N0YWdlMi9mc3lzX3VmczIuYworKysgYi9zdGFnZTIv
ZnN5c191ZnMyLmMKQEAgLTIwNCw3ICsyMDQsNyBAQCB1ZnMyX3JlYWQgKGNoYXIgKmJ1ZiwgaW50
IGxlbikKIH0KIAogaW50Ci11ZnMyX2RpciAoY2hhciAqZGlybmFtZSkKK3VmczJfZGlyIChjaGFy
ICpkaXJuYW1lLCB2b2lkICgqaGFuZGxlKShjaGFyICopKQogewogICBjaGFyICpyZXN0LCBjaDsK
ICAgaW50IGJsb2NrLCBvZmYsIGxvYywgaW5vID0gUk9PVElOTzsKQEAgLTI2MSw5ICsyNjEsNiBA
QCBsb29wOgogICAgIHsKICAgICAgIGlmIChsb2MgPj0gSU5PREVfVUZTMi0+ZGlfc2l6ZSkKIAl7
Ci0JICBpZiAocHJpbnRfcG9zc2liaWxpdGllcyA8IDApCi0JICAgIHJldHVybiAxOwotCiAJICBl
cnJudW0gPSBFUlJfRklMRV9OT1RfRk9VTkQ7CiAJICAqcmVzdCA9IGNoOwogCSAgcmV0dXJuIDA7
CkBAIC0yODgsMTggKzI4NSwxMyBAQCBsb29wOgogICAgICAgbG9jICs9IGRwLT5kX3JlY2xlbjsK
IAogI2lmbmRlZiBTVEFHRTFfNQotICAgICAgaWYgKGRwLT5kX2lubyAmJiBwcmludF9wb3NzaWJp
bGl0aWVzICYmIGNoICE9ICcvJworICAgICAgaWYgKGRwLT5kX2lubyAmJiBoYW5kbGUgJiYgY2gg
IT0gJy8nCiAJICAmJiAoISpkaXJuYW1lIHx8IHN1YnN0cmluZyAoZGlybmFtZSwgZHAtPmRfbmFt
ZSkgPD0gMCkpCi0JewotCSAgaWYgKHByaW50X3Bvc3NpYmlsaXRpZXMgPiAwKQotCSAgICBwcmlu
dF9wb3NzaWJpbGl0aWVzID0gLXByaW50X3Bvc3NpYmlsaXRpZXM7Ci0KLQkgIHByaW50X2FfY29t
cGxldGlvbiAoZHAtPmRfbmFtZSk7Ci0JfQorCWhhbmRsZSAoZHAtPmRfbmFtZSk7CiAjZW5kaWYg
LyogU1RBR0UxXzUgKi8KICAgICB9CiAgIHdoaWxlICghZHAtPmRfaW5vIHx8IChzdWJzdHJpbmcg
KGRpcm5hbWUsIGRwLT5kX25hbWUpICE9IDAKLQkJCXx8IChwcmludF9wb3NzaWJpbGl0aWVzICYm
IGNoICE9ICcvJykpKTsKKwkJCXx8IChoYW5kbGUgJiYgY2ggIT0gJy8nKSkpOwogCiAgIC8qIG9u
bHkgZ2V0IGhlcmUgaWYgd2UgaGF2ZSBhIG1hdGNoaW5nIGRpcmVjdG9yeSBlbnRyeSAqLwogCmRp
ZmYgLS1naXQgYS9zdGFnZTIvZnN5c192c3RhZnMuYyBiL3N0YWdlMi9mc3lzX3ZzdGFmcy5jCmlu
ZGV4IGExMTY3MTcuLjgzNDg0OWIgMTAwNjQ0Ci0tLSBhL3N0YWdlMi9mc3lzX3ZzdGFmcy5jCisr
KyBiL3N0YWdlMi9mc3lzX3ZzdGFmcy5jCkBAIC0xMTUsNyArMTE1LDcgQEAgdnN0YWZzX25leHRk
aXIgKHZvaWQpCiB9CiAKIGludCAKLXZzdGFmc19kaXIgKGNoYXIgKmRpcm5hbWUpCit2c3RhZnNf
ZGlyIChjaGFyICpkaXJuYW1lLCB2b2lkICgqaGFuZGxlKShjaGFyICopKQogewogICBjaGFyICpm
biwgY2g7CiAgIHN0cnVjdCBkaXJfZW50cnkgKmQ7CkBAIC0xNDYsMTQgKzE0Niw5IEBAIHZzdGFm
c19kaXIgKGNoYXIgKmRpcm5hbWUpCiAJICAgIGNvbnRpbnVlOwogCSAgCiAjaWZuZGVmIFNUQUdF
MV81Ci0JICBpZiAocHJpbnRfcG9zc2liaWxpdGllcyAmJiBjaCAhPSAnLycKKwkgIGlmIChoYW5k
bGUgJiYgY2ggIT0gJy8nCiAJICAgICAgJiYgKCEgKmRpcm5hbWUgfHwgc3RyY21wIChkaXJuYW1l
LCBkLT5uYW1lKSA8PSAwKSkKLQkgICAgewotCSAgICAgIGlmIChwcmludF9wb3NzaWJpbGl0aWVz
ID4gMCkKLQkJcHJpbnRfcG9zc2liaWxpdGllcyA9IC1wcmludF9wb3NzaWJpbGl0aWVzOwotCSAg
ICAgIAotCSAgICAgIHByaW50ZiAoIiAgJXMiLCBkLT5uYW1lKTsKLQkgICAgfQorCSAgICBoYW5k
bGUoZC0+bmFtZSk7CiAjZW5kaWYKIAkgIGlmICghIGdydWJfc3RyY21wIChkaXJuYW1lLCBkLT5u
YW1lKSkKIAkgICAgewpAQCAtMTY4LDEyICsxNjMsNiBAQCB2c3RhZnNfZGlyIChjaGFyICpkaXJu
YW1lKQogICAgICAgKihkaXJuYW1lID0gZm4pID0gY2g7CiAgICAgICBpZiAoISBkKQogCXsKLQkg
IGlmIChwcmludF9wb3NzaWJpbGl0aWVzIDwgMCkKLQkgICAgewotCSAgICAgIHB1dGNoYXIgKCdc
bicpOwotCSAgICAgIHJldHVybiAxOwotCSAgICB9Ci0JICAKIAkgIGVycm51bSA9IEVSUl9GSUxF
X05PVF9GT1VORDsKIAkgIHJldHVybiAwOwogCX0KZGlmZiAtLWdpdCBhL3N0YWdlMi9mc3lzX3hm
cy5jIGIvc3RhZ2UyL2ZzeXNfeGZzLmMKaW5kZXggNzZjNGMxMy4uMjY2ZmNhYSAxMDA2NDQKLS0t
IGEvc3RhZ2UyL2ZzeXNfeGZzLmMKKysrIGIvc3RhZ2UyL2ZzeXNfeGZzLmMKQEAgLTUzNCw3ICs1
MzQsNyBAQCB4ZnNfcmVhZCAoY2hhciAqYnVmLCBpbnQgbGVuKQogfQogCiBpbnQKLXhmc19kaXIg
KGNoYXIgKmRpcm5hbWUpCit4ZnNfZGlyIChjaGFyICpkaXJuYW1lLCB2b2lkICgqaGFuZGxlKShj
aGFyICopKQogewogCXhmc19pbm9fdCBpbm8sIHBhcmVudF9pbm8sIG5ld19pbm87CiAJeGZzX2Zz
aXplX3QgZGlfc2l6ZTsKQEAgLTU5NSwxMSArNTk1LDkgQEAgeGZzX2RpciAoY2hhciAqZGlybmFt
ZSkKIAkJZm9yICg7OykgewogCQkJY21wID0gKCEqZGlybmFtZSkgPyAtMSA6IHN1YnN0cmluZyAo
ZGlybmFtZSwgbmFtZSk7CiAjaWZuZGVmIFNUQUdFMV81Ci0JCQlpZiAocHJpbnRfcG9zc2liaWxp
dGllcyAmJiBjaCAhPSAnLycgJiYgY21wIDw9IDApIHsKLQkJCQlpZiAocHJpbnRfcG9zc2liaWxp
dGllcyA+IDApCi0JCQkJCXByaW50X3Bvc3NpYmlsaXRpZXMgPSAtcHJpbnRfcG9zc2liaWxpdGll
czsKLQkJCQlwcmludF9hX2NvbXBsZXRpb24gKG5hbWUpOwotCQkJfSBlbHNlCisJCQlpZiAoaGFu
ZGxlICYmIGNoICE9ICcvJyAmJiBjbXAgPD0gMCkKKwkJCQloYW5kbGUgKG5hbWUpOworCQkJZWxz
ZQogI2VuZGlmCiAJCQlpZiAoY21wID09IDApIHsKIAkJCQlwYXJlbnRfaW5vID0gaW5vOwpAQCAt
NjEwLDkgKzYwOCw2IEBAIHhmc19kaXIgKGNoYXIgKmRpcm5hbWUpCiAJCQl9CiAJCQluYW1lID0g
bmV4dF9kZW50cnkgKCZuZXdfaW5vKTsKIAkJCWlmIChuYW1lID09IE5VTEwpIHsKLQkJCQlpZiAo
cHJpbnRfcG9zc2liaWxpdGllcyA8IDApCi0JCQkJCXJldHVybiAxOwotCiAJCQkJZXJybnVtID0g
RVJSX0ZJTEVfTk9UX0ZPVU5EOwogCQkJCSpyZXN0ID0gY2g7CiAJCQkJcmV0dXJuIDA7CmRpZmYg
LS1naXQgYS9zdGFnZTIvaXNvOTY2MC5oIGIvc3RhZ2UyL2lzbzk2NjAuaAppbmRleCA0YTZhOGNj
Li5jMzExZWNmIDEwMDY0NAotLS0gYS9zdGFnZTIvaXNvOTY2MC5oCisrKyBiL3N0YWdlMi9pc285
NjYwLmgKQEAgLTczLDExICs3MywxMSBAQCB0eXBlZGVmCXVuaW9uIHsKIAogdHlwZWRlZglzdHJ1
Y3QgX19pc29fMTZiaXQgewogICB1X2ludDE2X3QgbCwgYjsKLX0gaXNvXzE2Yml0X3QgX19hdHRy
aWJ1dGVfXyAoKHBhY2tlZCkpOworfSBpc29fMTZiaXRfdDsKIAogdHlwZWRlZglzdHJ1Y3QgX19p
c29fMzJiaXQgewogICB1X2ludDMyX3QgbCwgYjsKLX0gaXNvXzMyYml0X3QgX19hdHRyaWJ1dGVf
XyAoKHBhY2tlZCkpOworfSBpc29fMzJiaXRfdDsKIAogdHlwZWRlZiB1X2ludDhfdAkJaXNvX2Rh
dGVfdFs3XTsKIApkaWZmIC0tZ2l0IGEvc3RhZ2UyL3BjX3NsaWNlLmggYi9zdGFnZTIvcGNfc2xp
Y2UuaAppbmRleCBhMzhkOTdmLi45ZmIwZGY4IDEwMDY0NAotLS0gYS9zdGFnZTIvcGNfc2xpY2Uu
aAorKysgYi9zdGFnZTIvcGNfc2xpY2UuaApAQCAtMTE0LDYgKzExNCw4IEBACiAjZGVmaW5lIFBD
X1NMSUNFX1RZUEVfRVhUMkZTICAgICAgIAkweDgzCiAjZGVmaW5lIFBDX1NMSUNFX1RZUEVfTElO
VVhfRVhURU5ERUQJMHg4NQogI2RlZmluZSBQQ19TTElDRV9UWVBFX1ZTVEFGUwkJMHg5ZQorI2Rl
ZmluZSBQQ19TTElDRV9UWVBFX1pFTgkJMHhiYworI2RlZmluZSBQQ19TTElDRV9UWVBFX1pFTl9E
SVNBQkxFRAkweGJkCiAjZGVmaW5lIFBDX1NMSUNFX1RZUEVfREVMTF9VVElMCQkweGRlCiAjZGVm
aW5lIFBDX1NMSUNFX1RZUEVfTElOVVhfUkFJRAkweGZkCiAKZGlmZiAtLWdpdCBhL3N0YWdlMi9z
aGFyZWQuaCBiL3N0YWdlMi9zaGFyZWQuaAppbmRleCA3N2VlZjExLi40ZGVhNGI3IDEwMDY0NAot
LS0gYS9zdGFnZTIvc2hhcmVkLmgKKysrIGIvc3RhZ2UyL3NoYXJlZC5oCkBAIC0xNzQsOCArMTc0
LDggQEAgZXh0ZXJuIGNoYXIgKmdydWJfc2NyYXRjaF9tZW07CiAKICNkZWZpbmUgQk9PVFNFQ19M
T0NBVElPTgkJUkFXX0FERFIgKDB4N0MwMCkKICNkZWZpbmUgQk9PVFNFQ19TSUdOQVRVUkUJCTB4
QUE1NQotI2RlZmluZSBCT09UU0VDX0JQQl9PRkZTRVQJCTB4MwotI2RlZmluZSBCT09UU0VDX0JQ
Ql9MRU5HVEgJCTB4M0IKKyNkZWZpbmUgQk9PVFNFQ19CUEJfT0ZGU0VUCQkweEEKKyNkZWZpbmUg
Qk9PVFNFQ19CUEJfTEVOR1RICQkweDM0CiAjZGVmaW5lIEJPT1RTRUNfQlBCX1NZU1RFTV9JRAkJ
MHgzCiAjZGVmaW5lIEJPT1RTRUNfQlBCX0hJRERFTl9TRUNUT1JTCTB4MUMKICNkZWZpbmUgQk9P
VFNFQ19QQVJUX09GRlNFVAkJMHgxQkUKQEAgLTM3NCw2ICszNzQsMjIgQEAgZXh0ZXJuIGNoYXIg
KmdydWJfc2NyYXRjaF9tZW07CiAjZW5kaWYgLyogV0lUSE9VVF9MSUJDX1NUVUJTICovCiAKIAor
Lyogc2VlIHR5cGVkZWYgZ2Z4X2RhdGFfdCBiZWxvdyAqLworI2RlZmluZSBnZnhfb2ZzX29rCQkJ
MHgwMAorI2RlZmluZSBnZnhfb2ZzX2NvZGVfc2VnCQkweDA0CisjZGVmaW5lIGdmeF9vZnNfam1w
X3RhYmxlCQkweDA4CisjZGVmaW5lIGdmeF9vZnNfc3lzX2NmZwkJCTB4MzgKKyNkZWZpbmUgZ2Z4
X29mc19jbWRsaW5lCQkJMHg2YworI2RlZmluZSBnZnhfb2ZzX2NtZGxpbmVfbGVuCQkweDcwCisj
ZGVmaW5lIGdmeF9vZnNfbWVudV9saXN0CQkweDc0CisjZGVmaW5lIGdmeF9vZnNfbWVudV9kZWZh
dWx0X2VudHJ5CTB4NzgKKyNkZWZpbmUgZ2Z4X29mc19tZW51X2VudHJpZXMJCTB4N2MKKyNkZWZp
bmUgZ2Z4X29mc19tZW51X2VudHJ5X2xlbgkJMHg4MAorI2RlZmluZSBnZnhfb2ZzX2FyZ3NfbGlz
dAkJMHg4NAorI2RlZmluZSBnZnhfb2ZzX2FyZ3NfZW50cnlfbGVuCQkweDg4CisjZGVmaW5lIGdm
eF9vZnNfdGltZW91dAkJCTB4OGMKKworCiAjaWZuZGVmIEFTTV9GSUxFCiAvKgogICogIEJlbG93
IHRoaXMgc2hvdWxkIGJlIE9OTFkgZGVmaW5lcyBhbmQgb3RoZXIgY29uc3RydWN0cyBmb3IgQyBj
b2RlLgpAQCAtNTk1LDYgKzYxMSwzOCBAQCBleHRlcm4gaW50IGZhbGxiYWNrX2VudHJ5bm87CiBl
eHRlcm4gaW50IGRlZmF1bHRfZW50cnk7CiBleHRlcm4gaW50IGN1cnJlbnRfZW50cnlubzsKIAor
CisvKgorICogZ3JhcGhpY3MgbWVudSBzdHVmZgorICoKKyAqIE5vdGU6IGdmeF9kYXRhIGFuZCBh
bGwgZGF0YSByZWZlcnJlZCB0byBpbiBpdCBtdXN0IGxpZSB3aXRoaW4gYSA2NGsgYXJlYS4KKyAq
LwordHlwZWRlZiBzdHJ1Y3QgeworICB1bnNpZ25lZCBvazsJCQkvKiBzZXQgd2hpbGUgd2UncmUg
aW4gZ3JhcGhpY3MgbW9kZSAqLworICB1bnNpZ25lZCBjb2RlX3NlZzsJCS8qIGNvZGUgc2VnbWVu
dCBvZiBiaW5hcnkgZ3JhcGhpY3MgY29kZSAqLworICB1bnNpZ25lZCBqbXBfdGFibGVbMTJdOwkv
KiBsaW5rIHRvIGdyYXBoaWNzIGZ1bmN0aW9ucyAqLworICB1bnNpZ25lZCBjaGFyIHN5c19jZmdb
NTJdOwkvKiBzeXNfY2ZnWzBdOiBpZGVudGlmaWVzIGJvb3QgbG9hZGVyIChncnViID09IDIpICov
CisgIGNoYXIgKmNtZGxpbmU7CQkvKiBjb21tYW5kIGxpbmUgcmV0dXJuZWQgYnkgZ2Z4X2lucHV0
KCkgKi8KKyAgdW5zaWduZWQgY21kbGluZV9sZW47CQkvKiBsZW5ndGggb2YgdGhlIGFib3ZlICov
CisgIGNoYXIgKm1lbnVfbGlzdDsJCS8qIGxpc3Qgb2YgbWVudSBlbnRyaWVzLCBlYWNoIG9mIGZp
eGVkIGxlbmd0aCAobWVudV9lbnRyeV9sZW4pICovCisgIGNoYXIgKm1lbnVfZGVmYXVsdF9lbnRy
eTsJLyogdGhlIGRlZmF1bHQgZW50cnkgKi8KKyAgdW5zaWduZWQgbWVudV9lbnRyaWVzOwkvKiBu
dW1iZXIgb2YgZW50cmllcyBpbiBtZW51X2xpc3QgKi8KKyAgdW5zaWduZWQgbWVudV9lbnRyeV9s
ZW47CS8qIG9uZSBlbnRyeSAqLworICBjaGFyICphcmdzX2xpc3Q7CQkvKiBzYW1lIHN0cnVjdHVy
ZSBhcyBtZW51X2xpc3QsIG1lbnVfZW50cmllcyBlbnRyaWVzICovCisgIHVuc2lnbmVkIGFyZ3Nf
ZW50cnlfbGVuOwkvKiBvbmUgZW50cnkgKi8KKyAgdW5zaWduZWQgdGltZW91dDsJCS8qIGluIHNl
Y29uZHMgKDA6IG5vIHRpbWVvdXQpICovCit9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSBnZnhf
ZGF0YV90OworCitleHRlcm4gZ2Z4X2RhdGFfdCAqZ3JhcGhpY3NfZGF0YTsKKworLyogcG9pbnRl
ciB0byBncmFwaGljcyBpbWFnZSBkYXRhICovCitleHRlcm4gY2hhciBncmFwaGljc19maWxlWzY0
XTsKKworaW50IGdmeF9pbml0KGdmeF9kYXRhX3QgKmdmeF9kYXRhKTsKK2ludCBnZnhfZG9uZShn
ZnhfZGF0YV90ICpnZnhfZGF0YSk7CitpbnQgZ2Z4X2lucHV0KGdmeF9kYXRhX3QgKmdmeF9kYXRh
LCBpbnQgKm1lbnVfZW50cnkpOworaW50IGdmeF9zZXR1cF9tZW51KGdmeF9kYXRhX3QgKmdmeF9k
YXRhKTsKKwogLyogVGhlIGNvbnN0YW50cyBmb3IgcGFzc3dvcmQgdHlwZXMuICAqLwogdHlwZWRl
ZiBlbnVtCiB7CkBAIC05NTYsOSArMTAwNCwxMSBAQCBpbnQgZ3J1Yl9zZWVrIChpbnQgb2Zmc2V0
KTsKIC8qIENsb3NlIGEgZmlsZS4gICovCiB2b2lkIGdydWJfY2xvc2UgKHZvaWQpOwogCi0vKiBM
aXN0IHRoZSBjb250ZW50cyBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgd2FzIG9wZW5lZCB3aXRoIEdS
VUJfT1BFTiwKLSAgIHByaW50aW5nIGFsbCBjb21wbGV0aW9ucy4gKi8KLWludCBkaXIgKGNoYXIg
KmRpcm5hbWUpOworLyogTGlzdCB0aGUgY29udGVudHMgb2YgRElSRUNUT1JZLiAqLworaW50IGRp
ciAoY2hhciAqZGlybmFtZSwgdm9pZCAoKmhhbmRsZSkoY2hhciAqKSk7CisgCisvKiBXaWxkY2Fy
ZCBleHBhbmQgdGhlIGxhc3QgcGF0aG5hbWUgY29tcG9uZW50IG9mIEdMT0IuICovCitjaGFyICp3
aWxkY2FyZCAoY2hhciAqZ2xvYiwgaW50ICpsZW4pOwogCiBpbnQgc2V0X2Jvb3RkZXYgKGludCBo
ZGJpYXMpOwogCmRpZmYgLS1naXQgYS9zdGFnZTIvc3RhZ2UyLmMgYi9zdGFnZTIvc3RhZ2UyLmMK
aW5kZXggNGRiZjZmNS4uMTI4YzA0NCAxMDA2NDQKLS0tIGEvc3RhZ2UyL3N0YWdlMi5jCisrKyBi
L3N0YWdlMi9zdGFnZTIuYwpAQCAtMjIsNiArMjIsOCBAQAogCiBncnViX2ptcF9idWYgcmVzdGFy
dF9lbnY7CiAKK2dmeF9kYXRhX3QgKmdyYXBoaWNzX2RhdGE7CisKICNpZiBkZWZpbmVkKFBSRVNF
VF9NRU5VX1NUUklORykgfHwgZGVmaW5lZChTVVBQT1JUX0RJU0tMRVNTKQogCiAjIGlmIGRlZmlu
ZWQoUFJFU0VUX01FTlVfU1RSSU5HKQpAQCAtMjM0LDYgKzIzNiw4IEBAIHJ1bl9tZW51IChjaGFy
ICptZW51X2VudHJpZXMsIGNoYXIgKmNvbmZpZ19lbnRyaWVzLCBpbnQgbnVtX2VudHJpZXMsCiAg
IGludCBjLCB0aW1lMSwgdGltZTIgPSAtMSwgZmlyc3RfZW50cnkgPSAwOwogICBjaGFyICpjdXJf
ZW50cnkgPSAwOwogCisgIGNscygpOworCiAgIC8qCiAgICAqICBNYWluIGxvb3AgZm9yIG1lbnUg
VUkuCiAgICAqLwpAQCAtMjYxLDE0ICsyNjUsMTYgQEAgcmVzdGFydDoKICAgICAgIC8qIEdldCBj
dXJyZW50IHRpbWUuICAqLwogICAgICAgd2hpbGUgKCh0aW1lMSA9IGdldHJ0c2VjcyAoKSkgPT0g
MHhGRikKIAk7CisgICAgICBncnViX3ByaW50ZigiXHJQcmVzcyBhbnkga2V5IHRvIGVudGVyIHRo
ZSBtZW51XG5cblxuIik7CiAKICAgICAgIHdoaWxlICgxKQogCXsKIAkgIC8qIENoZWNrIGlmIEVT
QyBpcyBwcmVzc2VkLiAgKi8KLQkgIGlmIChjaGVja2tleSAoKSAhPSAtMSAmJiBBU0NJSV9DSEFS
IChnZXRrZXkgKCkpID09ICdcZScpCisJICBpZiAoY2hlY2trZXkgKCkgIT0gLTEpCiAJICAgIHsK
IAkgICAgICBncnViX3RpbWVvdXQgPSAtMTsKIAkgICAgICBzaG93X21lbnUgPSAxOworCSAgICAg
IGdldGtleSAoKTsKIAkgICAgICBicmVhazsKIAkgICAgfQogCkBAIC0yODcsNyArMjkzLDggQEAg
cmVzdGFydDoKIAkgICAgICBncnViX3RpbWVvdXQtLTsKIAkgICAgICAKIAkgICAgICAvKiBQcmlu
dCBhIG1lc3NhZ2UuICAqLwotCSAgICAgIGdydWJfcHJpbnRmICgiXHJQcmVzcyBgRVNDJyB0byBl
bnRlciB0aGUgbWVudS4uLiAlZCAgICIsCisJICAgICAgZ3J1Yl9wcmludGYgKCJcckJvb3Rpbmcg
JXMgaW4gJWQgc2Vjb25kcy4uLiIsCisJCQkgICBnZXRfZW50cnkobWVudV9lbnRyaWVzLCBmaXJz
dF9lbnRyeSArIGVudHJ5bm8sIDApLAogCQkJICAgZ3J1Yl90aW1lb3V0KTsKIAkgICAgfQogCX0K
QEAgLTMxMCw2ICszMTcsMTIgQEAgcmVzdGFydDoKICAgICAgIAogICAgICAgaWYgKCEgYXV0aCAm
JiBwYXNzd29yZCkKIAl7CisJICBpZiAoKmdyYXBoaWNzX2ZpbGUpCisJICAgIHsKKwkgICAgICBw
cmludGYgKCJcCisJV0FSTklORzogZ3JhcGhpY2FsIG1lbnUgZG9lc25cJ3Qgd29ya1wKKwlpbiBj
b25qdW5jdGlvbiB3aXRoIHRoZSBwYXNzd29yZCBmZWF0dXJlXG4iICk7CisJICAgIH0KIAkgIHBy
aW50ZiAoIlwKICAgICAgIFByZXNzIGVudGVyIHRvIGJvb3QgdGhlIHNlbGVjdGVkIE9TIG9yIFwn
cFwnIHRvIGVudGVyIGFcblwKICAgICAgIHBhc3N3b3JkIHRvIHVubG9jayB0aGUgbmV4dCBzZXQg
b2YgZmVhdHVyZXMuIik7CkBAIC0zMTksNyArMzMyLDggQEAgcmVzdGFydDoKIAkgIGlmIChjb25m
aWdfZW50cmllcykKIAkgICAgcHJpbnRmICgiXAogICAgICAgUHJlc3MgZW50ZXIgdG8gYm9vdCB0
aGUgc2VsZWN0ZWQgT1MsIFwnZVwnIHRvIGVkaXQgdGhlXG5cCi0gICAgICBjb21tYW5kcyBiZWZv
cmUgYm9vdGluZywgb3IgXCdjXCcgZm9yIGEgY29tbWFuZC1saW5lLiIpOworICAgICAgY29tbWFu
ZHMgYmVmb3JlIGJvb3RpbmcsIFwnYVwnIHRvIG1vZGlmeSB0aGUga2VybmVsIGFyZ3VtZW50c1xu
XAorICAgICAgYmVmb3JlIGJvb3RpbmcsIG9yIFwnY1wnIGZvciBhIGNvbW1hbmQtbGluZS4iKTsK
IAkgIGVsc2UKIAkgICAgcHJpbnRmICgiXAogICAgICAgUHJlc3MgXCdiXCcgdG8gYm9vdCwgXCdl
XCcgdG8gZWRpdCB0aGUgc2VsZWN0ZWQgY29tbWFuZCBpbiB0aGVcblwKQEAgLTY5Nyw2ICs3MTEs
ODcgQEAgcmVzdGFydDoKIAkJICBlbnRlcl9jbWRsaW5lIChoZWFwLCAwKTsKIAkJICBnb3RvIHJl
c3RhcnQ7CiAJCX0KKwkgICAgICBpZiAoY29uZmlnX2VudHJpZXMgJiYgYyA9PSAnYScpCisJCXsK
KwkJICBpbnQgbmV3X251bV9lbnRyaWVzID0gMCwgaSA9IDAsIGo7CisJCSAgY2hhciAqbmV3X2hl
YXA7CisJCSAgY2hhciAqIGVudHJpZXM7CisJCSAgY2hhciAqIGVudHJ5X2NvcHk7CisJCSAgY2hh
ciAqIGFwcGVuZF9saW5lOworCQkgIGNoYXIgKiBzdGFydDsKKworCQkgIGVudHJ5X2NvcHkgPSBu
ZXdfaGVhcCA9IGhlYXA7CisJCSAgY3VyX2VudHJ5ID0gZ2V0X2VudHJ5IChjb25maWdfZW50cmll
cywgZmlyc3RfZW50cnkgKyBlbnRyeW5vLAorCQkJCQkgMSk7CisJCSAgCisJCSAgZG8KKwkJICAg
IHsKKwkJICAgICAgd2hpbGUgKCgqKG5ld19oZWFwKyspID0gY3VyX2VudHJ5W2krK10pICE9IDAp
OworCQkgICAgICBuZXdfbnVtX2VudHJpZXMrKzsKKwkJICAgIH0KKwkJICB3aGlsZSAoY29uZmln
X2VudHJpZXMgJiYgY3VyX2VudHJ5W2ldKTsKKworCQkgIC8qIHRoaXMgb25seSBuZWVkcyB0byBi
ZSBkb25lIGlmIGNvbmZpZ19lbnRyaWVzIGlzIG5vbi1OVUxMLAorCQkgICAgIGJ1dCBpdCBkb2Vz
bid0IGh1cnQgdG8gZG8gaXQgYWx3YXlzICovCisJCSAgKihuZXdfaGVhcCsrKSA9IDA7CisKKwkJ
ICBuZXdfaGVhcCA9IGhlYXAgKyBORVdfSEVBUFNJWkUgKyAxOworCisJCSAgZW50cmllcyA9IGVu
dHJ5X2NvcHk7CisJCSAgd2hpbGUgKCplbnRyaWVzKSAKKwkJICAgIHsKKwkJICAgICAgaWYgKChz
dHJzdHIoZW50cmllcywgImtlcm5lbCIpID09IGVudHJpZXMpICYmCisJCQkgIGlzc3BhY2UoZW50
cmllc1s2XSkpIAorCQkJICBicmVhazsKKworCQkgICAgICB3aGlsZSAoKmVudHJpZXMpIGVudHJp
ZXMrKzsKKwkJICAgICAgZW50cmllcysrOworCQkgICAgfQorCisJCSAgaWYgKCEqZW50cmllcykK
KwkJICAgICAgZ290byByZXN0YXJ0OworCisJCSAgc3RhcnQgPSBlbnRyaWVzICsgNjsKKworCQkg
IC8qIHNraXAgdGhlIHdoaXRlIHNwYWNlICovCisJCSAgd2hpbGUgKCpzdGFydCAmJiBpc3NwYWNl
KCpzdGFydCkpIHN0YXJ0Kys7CisJCSAgLyogc2tpcCB0aGUga2VybmVsIG5hbWUgKi8KKwkJICB3
aGlsZSAoKnN0YXJ0ICYmICFpc3NwYWNlKCpzdGFydCkpIHN0YXJ0Kys7CisJCSAgLyogc2tpcCB0
aGUgd2hpdGUgc3BhY2UgKi8KKwkJICB3aGlsZSAoKnN0YXJ0ICYmIGlzc3BhY2UoKnN0YXJ0KSkg
c3RhcnQrKzsKKworCQkgIGFwcGVuZF9saW5lID0gbmV3X2hlYXA7CisJCSAgZ3J1Yl9zdHJjcHko
YXBwZW5kX2xpbmUsIHN0YXJ0KTsKKworCQkgIGNscygpOworCQkgIHByaW50X2NtZGxpbmVfbWVz
c2FnZSAoMCk7CisKKwkJICBpZiAoZ2V0X2NtZGxpbmUoUEFDS0FHRSAiIGFwcGVuZD4gIiwgCisJ
CQkJICAgIGFwcGVuZF9saW5lLCBORVdfSEVBUFNJWkUgKyAxLCAKKwkJCQkgICAgMCwgMSkpCisJ
CSAgICAgIGdvdG8gcmVzdGFydDsKKworCQkgIC8qIGhhdmUgbmV3IGFyZ3M7IGFwcGVuZF9saW5l
IHBvaW50cyB0byB0aGUKKwkJICAgICBuZXcgYXJncyBhbmQgc3RhcnQgcG9pbnRzIHRvIHRoZSBv
bGQKKwkJICAgICBhcmdzICovCisKKwkJICBpID0gZ3J1Yl9zdHJsZW4oc3RhcnQpOworCQkgIGog
PSBncnViX3N0cmxlbihhcHBlbmRfbGluZSk7CisJICAgICAgCisJCSAgLyogYWxpZ24gcmVzdCBv
ZiBjb21tYW5kcyBwcm9wZXJseSAqLworCQkgIG1lbW1vdmUgKHN0YXJ0ICsgaiwgc3RhcnQgKyBp
LAorCQkgICAgICAgKChpbnQpIGFwcGVuZF9saW5lKSAtICgoaW50KSBzdGFydCkgLSAoaSA+IGog
PyBpIDogaikpOworCisJCSAgLyogY29weSBjb21tYW5kIHRvIGNvcnJlY3QgYXJlYSAqLworCQkg
IG1lbW1vdmUgKHN0YXJ0LCBhcHBlbmRfbGluZSwgaik7CisKKwkJICAvKiBzZXQgdXAgdGhpcyBl
bnRyeSB0byBib290ICovCisJCSAgY29uZmlnX2VudHJpZXMgPSBOVUxMOworCQkgIGN1cl9lbnRy
eSA9IGVudHJ5X2NvcHk7CisJCSAgaGVhcCA9IG5ld19oZWFwOworCisJCSAgYnJlYWs7CisJCX0K
ICNpZmRlZiBHUlVCX1VUSUwKIAkgICAgICBpZiAoYyA9PSAncScpCiAJCXsKQEAgLTc1Myw2ICs4
NDgsNDk2IEBAIHJlc3RhcnQ6CiB9CiAKIAorCisjaWYgMAorLyogZm9yIGRlYnVnZ2luZyAqLwor
c3RhdGljIHZvaWQgaGV4ZHVtcCh1bnNpZ25lZCBjaGFyICpidWYsIHVuc2lnbmVkIGxlbikKK3sK
KyAgaW50IGksIGogPSAwOworICBjaGFyIHNbMTddOworICB1bnNpZ25lZCBhZGRyID0gKHVuc2ln
bmVkKSBidWY7CisKKyAgc1sxNl0gPSAwOworICB3aGlsZShsZW4tLSkgeworICAgIGkgPSBidWZb
al07CisgICAgaSA9IGkgJiAweGZmOworICAgIHNbaiAmIDE1XSA9IChpID49IDB4MjAgJiYgaSA8
PSAweDdlKSA/IGkgOiAnLic7CisgICAgaWYoIShqICYgMTUpKSB7CisgICAgICBwcmludGYoIiV4
ICAiLCBqICsgYWRkcik7CisgICAgfQorICAgIGlmKCEoaiAmIDcpICYmIChqICYgMTUpKSBwcmlu
dGYoIiAiKTsKKyAgICAvKiBzdHVwaWQgZ3J1Yl9wcmludGYgKi8KKyAgICBwcmludGYoIiV4Iiwg
KGkgPj4gNCkgJiAweDBmKTsKKyAgICBwcmludGYoIiV4ICIsIGkgJiAweDBmKTsKKyAgICBpZigh
KCsraiAmIDE1KSkgeworICAgICAgcHJpbnRmKCIgJXNcbiIsIHMpOworICAgIH0KKyAgfQorCisg
IGlmKGogJiAxNSkgeworICAgIHNbaiAmIDE1XSA9IDA7CisgICAgaWYoIShqICYgOCkpIHByaW50
ZigiICIpOworICAgIGkgPSAxICsgMyAqICgxNiAtIChqICYgMTUpKTsKKyAgICB3aGlsZShpLS0p
IHByaW50ZigiICIpOworICAgIHByaW50ZigiJXNcbiIsIHMpOworICB9Cit9CisjZW5kaWYKKwor
CisvKiBrZXJuZWwgKyAoZ3J1Yi0pbW9kdWxlIG9wdGlvbnMgKi8KKyNkZWZpbmUgR0ZYX0NNRF9C
VUZfU0laRSA1MTIKKworLyogY29tbWFuZCBsaW5lIHNlcGFyYXRvciBjaGFyICovCisjZGVmaW5l
IEdGWF9DTURfU0VQIDEKKworLyoKKyAqIEdvIHRocm91Z2ggY29uZmlnIGVudHJ5IGFuZCBmaW5k
IGtlcm5lbCBhcmdzLCBpZiBhbnkuCisgKiBQdXQgdGhpbmdzIGludG8gYnVmIGFuZCByZXR1cm4g
aXQuCisgKi8KK3N0YXRpYyBjaGFyICpnZXRfa2VybmVsX2FyZ3MoY2hhciAqY2ZnLCBjaGFyICpi
dWYpCit7CisgIGludCBpLCBqOworICBjaGFyICpzLCAqdCA9ICIiLCAqcCwgKnQyOworCisgICoo
cCA9IGJ1ZikgPSAwOworCisgIGZvcihqID0gMDsgOyBqKyspIHsKKyAgICBzID0gZ2V0X2VudHJ5
KGNmZywgaiwgMCk7CisgICAgaWYoISpzKSBicmVhazsKKyAgICBpZigKKyAgICAgICghbWVtY21w
KHMsICJrZXJuZWwiLCA2KSB8fCAhbWVtY21wKHMsICJtb2R1bGUiLCA2KSkgJiYKKyAgICAgIChz
WzZdID09ICcgJyB8fCBzWzZdID09ICdcdCcpCisgICAgKSB7CisgICAgICB0ID0gc2tpcF90bygw
LCBzKTsKKyAgICAgIHQyID0gc1swXSA9PSAnbScgPyBzdHJzdHIodCwgImluaXRyZCIpIDogTlVM
TDsKKyAgICAgIGlmKCp0KSB0ID0gc2tpcF90bygwLCB0KTsKKyAgICAgIGlmKHQyICYmIHQyIDwg
dCkgYnJlYWs7CS8qIG1vZHVsZSBpcyBsaWtlbHkgYSBub3JtYWwgaW5pdHJkIC0+IHNraXAgKi8K
KyAgICAgIGkgPSBzdHJsZW4odCk7CisgICAgICBpZihwIC0gYnVmICsgaSA+IEdGWF9DTURfQlVG
X1NJWkUgLSAyKSBicmVhazsKKyAgICAgICpwKysgPSBHRlhfQ01EX1NFUDsKKyAgICAgIHN0cmNw
eShwLCB0KTsKKyAgICAgIHAgKz0gaTsKKworICAgICAgY29udGludWU7CisgICAgfQorICB9CisK
KyAgaWYoKmJ1ZikgYnVmKys7CS8qIHNraXAgaW5pdGlhbCBzZXBhcmF0b3IgY2hhciAqLworCisg
IHJldHVybiBidWY7Cit9CisKKworLyoKKyAqIENoZWNrIGhlYWRlciBhbmQgcmV0dXJuIGNvZGUg
c3RhcnQgb2Zmc2V0LgorICovCitzdGF0aWMgdW5zaWduZWQgbWFnaWNfb2sodW5zaWduZWQgY2hh
ciAqYnVmKQoreworICBpZigKKyAgICAqKHVuc2lnbmVkICopIGJ1ZiA9PSAweDBiMmQ5N2YwMCAm
JgkJLyogbWFnaWMgaWQgKi8KKyAgICAoYnVmWzRdID09IDgpCQkJCS8qIHZlcnNpb24gOCAqLwor
ICApIHsKKyAgICByZXR1cm4gKih1bnNpZ25lZCAqKSAoYnVmICsgOCk7CisgIH0KKworICByZXR1
cm4gMDsKK30KKworCisvKgorICogU2VhcmNoIGNwaW8gYXJjaGl2ZSBmb3IgZ2Z4IGZpbGUuCisg
Ki8KK3N0YXRpYyB1bnNpZ25lZCBmaW5kX2ZpbGUodW5zaWduZWQgY2hhciAqYnVmLCB1bnNpZ25l
ZCBsZW4sIHVuc2lnbmVkICpnZnhfZmlsZV9zdGFydCwgdW5zaWduZWQgKmZpbGVfbGVuKQorewor
ICB1bnNpZ25lZCBpLCBmbmFtZV9sZW4sIGNvZGVfc3RhcnQgPSAwOworCisgICpnZnhfZmlsZV9z
dGFydCA9IDA7CisKKyAgZm9yKGkgPSAwOyBpIDwgbGVuOykgeworICAgIGlmKChsZW4gLSBpKSA+
PSAweDFhICYmIChidWZbaV0gKyAoYnVmW2kgKyAxXSA8PCA4KSkgPT0gMHg3MWM3KSB7CisgICAg
ICBmbmFtZV9sZW4gPSAqKHVuc2lnbmVkIHNob3J0ICopIChidWYgKyBpICsgMjApOworICAgICAg
KmZpbGVfbGVuID0gKih1bnNpZ25lZCBzaG9ydCAqKSAoYnVmICsgaSArIDI0KSArICgqKHVuc2ln
bmVkIHNob3J0ICopIChidWYgKyBpICsgMjIpIDw8IDE2KTsKKyAgICAgIGkgKz0gMjYgKyBmbmFt
ZV9sZW47CisgICAgICBpID0gKChpICsgMSkgJiB+MSk7CisgICAgICBpZigoY29kZV9zdGFydCA9
IG1hZ2ljX29rKGJ1ZiArIGkpKSkgeworICAgICAgICAqZ2Z4X2ZpbGVfc3RhcnQgPSBpOworICAg
ICAgICByZXR1cm4gY29kZV9zdGFydDsKKyAgICAgIH0KKyAgICAgIGkgKz0gKmZpbGVfbGVuOwor
ICAgICAgaSA9ICgoaSArIDEpICYgfjEpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIGJyZWFr
OworICAgIH0KKyAgfQorCisgIHJldHVybiBjb2RlX3N0YXJ0OworfQorCitzdGF0aWMgaW5saW5l
IHVuc2lnbmVkIGNoYXIgKiBzdGFja19wdHIodm9pZCkKK3sKKyAgdW5zaWduZWQgY2hhciAqIHU7
CisKKyAgYXNtKCJtb3ZsICUlZXNwLCAlMCIgOiAiPXIiICh1KSk7CisKKyAgcmV0dXJuIHU7Cit9
CisKK3N0YXRpYyB2b2lkIHNsZWVwKGludCBkZWxheSkKK3sKKyAgaW50IHRpY2ssIGxhc3RfdGlj
ayA9IGN1cnJ0aWNrcygpOworCisgIGRlbGF5ICo9IDE4OworCisgIHdoaWxlKGRlbGF5LS0pIHsK
KyAgICB3aGlsZSgodGljayA9IGN1cnJ0aWNrcygpKSA9PSBsYXN0X3RpY2spIHsgfQorICAgIGxh
c3RfdGljayA9IHRpY2s7CisgIH0KK30gIAorCitzdGF0aWMgdm9pZCB3YWl0X2Zvcl9rZXkoKQor
eworICBwcmludGYoIlByZXNzIGEga2V5IHRvIGNvbnRpbnVlLi4uIik7CisgIGdldGtleSgpOwor
ICBwcmludGYoIlxyICAgICAgICAgICAgICAgICAgICAgICAgICBcciIpOworfQorCisKKy8qCisg
KiBMZWF2ZSB0aGF0IG11Y2ggc3BhY2Ugb24gdGhlIGhlYXAuIEV2ZXJ5dGhpbmcgZWxzZSBnb2Vz
IHRvIHRoZSBncmFwaGljcworICogZnVuY3Rpb25zLgorICoKKyAqIDB4MjAwMCBpcyBfbm90XyBl
bm91Z2gKKyAqLworI2RlZmluZSBNSU5fSEVBUF9TSVpFCTB4NDAwMAorI2RlZmluZSBNSU5fR0ZY
X0ZSRUUJMHgxMDAwCisKKyNkZWZpbmUgU0NfQk9PVExPQURFUgkJMAorI2RlZmluZSBTQ19GQUlM
U0FGRQkJMworI2RlZmluZSBTQ19TWVNDT05GSUdfU0laRQk0CisjZGVmaW5lIFNDX0JPT1RMT0FE
RVJfU0VHCTgKKyNkZWZpbmUgU0NfWE1FTV8wCQkyNAorI2RlZmluZSBTQ19YTUVNXzEJCTI2Cisj
ZGVmaW5lIFNDX1hNRU1fMgkJMjgKKyNkZWZpbmUgU0NfWE1FTV8zCQkzMAorI2RlZmluZSBTQ19G
SUxFCQkJMzIKKyNkZWZpbmUgU0NfQVJDSElWRV9TVEFSVAkzNgorI2RlZmluZSBTQ19BUkNISVZF
X0VORAkJNDAKKyNkZWZpbmUgU0NfTUVNMF9TVEFSVAkJNDQKKyNkZWZpbmUgU0NfTUVNMF9FTkQJ
CTQ4CisKKy8qCisgKiBEb2VzIG5vcm1hbGx5IG5vdCByZXR1cm4uCisgKi8KK3N0YXRpYyB2b2lk
CitydW5fZ3JhcGhpY3NfbWVudSAoY2hhciAqbWVudV9lbnRyaWVzLCBjaGFyICpjb25maWdfZW50
cmllcywgaW50IG51bV9lbnRyaWVzLAorCSAgY2hhciAqaGVhcCwgaW50IGVudHJ5bm8pCit7Cisg
IHVuc2lnbmVkIGNoYXIgKmJ1ZiwgKmJ1Zl9leHQ7CisgIHVuc2lnbmVkIGJ1Zl9zaXplLCBidWZf
ZXh0X3NpemUsIGNvZGVfc3RhcnQsIGZpbGVfc3RhcnQ7CisgIGNoYXIgKnMsICp0LCAqdDIsICpj
ZmcsICpuZXdfY29uZmlnLCAqcDsKKyAgY2hhciAqc2F2ZWRfaGVhcDsKKyAgaW50IGksIGosIG1h
eF9sZW4sIGdmeF9maWxlX3NpemUsIHZlcmJvc2U7CisgIGludCBzZWxlY3RlZF9lbnRyeTsKKyAg
Z2Z4X2RhdGFfdCAqZ2Z4X2RhdGE7CisgIGNoYXIgKmNtZF9idWY7CisgIHVuc2lnbmVkIG1lbTBf
c3RhcnQsIG1lbTBfZW5kLCBmaWxlX2xlbjsKKworICAvKgorICAgKiBjaGVjayBnZnhfZGF0YV90
IHN0cnVjdCBvZmZzZXRzIGZvciBjb25zaXN0ZW5jeTsgZ2NjIHdpbGwgb3B0aW1pemUgYXdheQor
ICAgKiB0aGUgd2hvbGUgYmxvY2sKKyAgICovCisKKyAgLyogZHVtbXkgZnVuY3Rpb24gdG8gbWFr
ZSBsZCBmYWlsICovCisgIHsKKyAgICBleHRlcm4gdm9pZCB3cm9uZ19zdHJ1Y3Rfc2l6ZSh2b2lk
KTsKKyAgICAjZGVmaW5lIGdmeF9vZnNfY2hlY2soYSkgaWYoZ2Z4X29mc18jI2EgIT0gKGNoYXIg
KikgJmdmeF9kYXRhLT5hIC0gKGNoYXIgKikgZ2Z4X2RhdGEpIHdyb25nX3N0cnVjdF9zaXplKCk7
CisgICAgZ2Z4X29mc19jaGVjayhvayk7CisgICAgZ2Z4X29mc19jaGVjayhjb2RlX3NlZyk7Cisg
ICAgZ2Z4X29mc19jaGVjayhqbXBfdGFibGUpOworICAgIGdmeF9vZnNfY2hlY2soc3lzX2NmZyk7
CisgICAgZ2Z4X29mc19jaGVjayhjbWRsaW5lKTsKKyAgICBnZnhfb2ZzX2NoZWNrKGNtZGxpbmVf
bGVuKTsKKyAgICBnZnhfb2ZzX2NoZWNrKG1lbnVfbGlzdCk7CisgICAgZ2Z4X29mc19jaGVjayht
ZW51X2RlZmF1bHRfZW50cnkpOworICAgIGdmeF9vZnNfY2hlY2sobWVudV9lbnRyaWVzKTsKKyAg
ICBnZnhfb2ZzX2NoZWNrKG1lbnVfZW50cnlfbGVuKTsKKyAgICBnZnhfb2ZzX2NoZWNrKGFyZ3Nf
bGlzdCk7CisgICAgZ2Z4X29mc19jaGVjayhhcmdzX2VudHJ5X2xlbik7CisgICAgZ2Z4X29mc19j
aGVjayh0aW1lb3V0KTsKKyAgICAjdW5kZWYgZ2Z4X29mc19jaGVjaworICB9CisKKyAgaWYoIW51
bV9lbnRyaWVzKSByZXR1cm47CisKKyAgZ3JhcGhpY3NfZGF0YSA9IGdmeF9kYXRhID0gKGdmeF9k
YXRhX3QgKikgaGVhcDsKKyAgaGVhcCArPSBzaXplb2YgKmdmeF9kYXRhOworICBtZW1zZXQoZ2Z4
X2RhdGEsIDAsIHNpemVvZiAqZ2Z4X2RhdGEpOworCisgIGdmeF9kYXRhLT5zeXNfY2ZnW1NDX0JP
T1RMT0FERVJdID0gMjsJCQkvKiBib290bG9hZGVyOiBncnViICovCisgIGdmeF9kYXRhLT5zeXNf
Y2ZnW1NDX1NZU0NPTkZJR19TSVpFXSA9IDUyOwkJLyogY29uZmlnIGRhdGEgc2l6ZSAqLworICAq
KHVuc2lnbmVkIHNob3J0ICopIChnZnhfZGF0YS0+c3lzX2NmZyArIFNDX0JPT1RMT0FERVJfU0VH
KSA9ICh1bnNpZ25lZCkgZ2Z4X2RhdGEgPj4gNDsJLyogc2VnbWVudCAqLworICBnZnhfZGF0YS0+
c3lzX2NmZ1tTQ19YTUVNXzBdID0gMHgyMTsJCQkvKiAxTUIgQCAyTUIgKi8KKyAgZ2Z4X2RhdGEt
PnN5c19jZmdbU0NfWE1FTV8xXSA9IDB4NDE7CQkJLyogMU1CIEAgNE1CICovCisgIHZlcmJvc2Ug
PSAoKih1bnNpZ25lZCBjaGFyICopIDB4NDE3KSAmIDMgPyAxIDogMDsJLyogU0hJRlQgcHJlc3Nl
ZCAqLworICBnZnhfZGF0YS0+c3lzX2NmZ1tTQ19GQUlMU0FGRV0gPSB2ZXJib3NlOworCisgIGdm
eF9kYXRhLT50aW1lb3V0ID0gZ3J1Yl90aW1lb3V0ID49IDAgPyBncnViX3RpbWVvdXQgOiAwOwor
CisKKyAgLyogc2V0dXAgY29tbWFuZCBsaW5lIGVkaXQgYnVmZmVyICovCisKKyAgZ2Z4X2RhdGEt
PmNtZGxpbmVfbGVuID0gMjU2OworCisgIGdmeF9kYXRhLT5jbWRsaW5lID0gaGVhcDsKKyAgaGVh
cCArPSBnZnhfZGF0YS0+Y21kbGluZV9sZW47CisgIG1lbXNldChnZnhfZGF0YS0+Y21kbGluZSwg
MCwgZ2Z4X2RhdGEtPmNtZGxpbmVfbGVuKTsKKworICBjbWRfYnVmID0gaGVhcDsKKyAgaGVhcCAr
PSBHRlhfQ01EX0JVRl9TSVpFOworCisgIC8qIHNldHVwIG1lbnUgZW50cmllcyAqLworCisgIGZv
cihpID0gbWF4X2xlbiA9IDA7IGkgPCBudW1fZW50cmllczsgaSsrKSB7CisgICAgaiA9IHN0cmxl
bihnZXRfZW50cnkobWVudV9lbnRyaWVzLCBpLCAwKSk7CisgICAgaWYoaiA+IG1heF9sZW4pIG1h
eF9sZW4gPSBqOworICB9CisKKyAgaWYoIW1heF9sZW4pIHJldHVybjsKKworICBnZnhfZGF0YS0+
bWVudV9lbnRyeV9sZW4gPSBtYXhfbGVuICsgMTsKKyAgZ2Z4X2RhdGEtPm1lbnVfZW50cmllcyA9
IG51bV9lbnRyaWVzOworCisgIGdmeF9kYXRhLT5tZW51X2xpc3QgPSBoZWFwOworICBoZWFwICs9
IGdmeF9kYXRhLT5tZW51X2VudHJ5X2xlbiAqIGdmeF9kYXRhLT5tZW51X2VudHJpZXM7CisKKyAg
bWVtc2V0KGdmeF9kYXRhLT5tZW51X2xpc3QsIDAsIGdmeF9kYXRhLT5tZW51X2VudHJ5X2xlbiAq
IGdmeF9kYXRhLT5tZW51X2VudHJpZXMpOworCisgIGZvcihpID0gMDsgaSA8IChpbnQpIGdmeF9k
YXRhLT5tZW51X2VudHJpZXM7IGkrKykgeworICAgIHN0cmNweShnZnhfZGF0YS0+bWVudV9saXN0
ICsgaSAqIGdmeF9kYXRhLT5tZW51X2VudHJ5X2xlbiwgZ2V0X2VudHJ5KG1lbnVfZW50cmllcywg
aSwgMCkpOworICB9CisKKyAgZ2Z4X2RhdGEtPm1lbnVfZGVmYXVsdF9lbnRyeSA9IGdmeF9kYXRh
LT5tZW51X2xpc3QgKyBlbnRyeW5vICogZ2Z4X2RhdGEtPm1lbnVfZW50cnlfbGVuOworCisKKyAg
Lyogc2V0dXAgbGlzdCBvZiBrZXJuZWwgYXJncyAqLworCisgIGZvcihpID0gbWF4X2xlbiA9IDA7
IGkgPCBudW1fZW50cmllczsgaSsrKSB7CisgICAgcyA9IGdldF9rZXJuZWxfYXJncyhnZXRfZW50
cnkoY29uZmlnX2VudHJpZXMsIGksIDEpLCBjbWRfYnVmKTsKKyAgICBqID0gc3RybGVuKHMpOwor
ICAgIGlmKGogPiBtYXhfbGVuKSBtYXhfbGVuID0gajsKKyAgfQorCisgIGdmeF9kYXRhLT5hcmdz
X2VudHJ5X2xlbiA9IG1heF9sZW4gKyAxOworCisgIGdmeF9kYXRhLT5hcmdzX2xpc3QgPSBoZWFw
OworICBoZWFwICs9IGdmeF9kYXRhLT5hcmdzX2VudHJ5X2xlbiAqIGdmeF9kYXRhLT5tZW51X2Vu
dHJpZXM7CisKKyAgbWVtc2V0KGdmeF9kYXRhLT5hcmdzX2xpc3QsIDAsIGdmeF9kYXRhLT5hcmdz
X2VudHJ5X2xlbiAqIGdmeF9kYXRhLT5tZW51X2VudHJpZXMpOworCisgIGZvcihpID0gMDsgaSA8
IChpbnQpIGdmeF9kYXRhLT5tZW51X2VudHJpZXM7IGkrKykgeworICAgIHN0cmNweShnZnhfZGF0
YS0+YXJnc19saXN0ICsgaSogZ2Z4X2RhdGEtPmFyZ3NfZW50cnlfbGVuLCBnZXRfa2VybmVsX2Fy
Z3MoZ2V0X2VudHJ5KGNvbmZpZ19lbnRyaWVzLCBpLCAxKSwgY21kX2J1ZikpOworICB9CisKKwor
ICAvKiBnbyBiYWNrIGhlcmUgd2hlbiB3ZSBubyBsb25nZXIgbmVlZCB0aGUgZ3JhcGhpY3MgZGF0
YSAqLworICBzYXZlZF9oZWFwID0gaGVhcDsKKworCisgIC8qIGdldCBtZW1vcnkgYXJlYSB0byBi
ZSB1c2VkIGJ5IGdyYXBoaWNzIGZ1bmN0aW9ucyAqLworCisgIC8qIHVzZSAxTUIgc3RhcnRpbmcg
YXQgMk1CIGFzIGZpbGUgYnVmZmVyICovCisgIGJ1Zl9leHQgPSAodW5zaWduZWQgY2hhciAqKSAo
MiA8PCAyMCk7CisgIGJ1Zl9leHRfc2l6ZSA9IDEgPDwgMjA7CisKKyAgLyogbXVzdCBiZSAxNi1i
eXRlIGFsaWduZWQgKi8KKyAgYnVmID0gKHVuc2lnbmVkIGNoYXIgKikgKCgodW5zaWduZWQpIGhl
YXAgKyAweGYpICYgfjB4Zik7CisKKyAgYnVmX3NpemUgPSBzdGFja19wdHIoKSAtIGJ1ZiAtIE1J
Tl9IRUFQX1NJWkU7CisgIGJ1Zl9zaXplICY9IH4weGY7CisKKyAgbWVtMF9zdGFydCA9ICh1bnNp
Z25lZCkgYnVmOworICBtZW0wX2VuZCA9IG1lbTBfc3RhcnQgKyBidWZfc2l6ZTsKKworICBpZih2
ZXJib3NlKSB7CisgICAgcHJpbnRmKCJsb3cgbWVtb3J5IDB4JXggLSAweCV4ICglZCBieXRlcylc
biIsIG1lbTBfc3RhcnQsIG1lbTBfZW5kLCBidWZfc2l6ZSk7CisgICAgd2FpdF9mb3Jfa2V5KCk7
CisgIH0KKworICBoZWFwICs9IGJ1Zl9zaXplOworCisgIC8qIHJlYWQgdGhlIGZpbGUgKi8KKwor
ICBpZighZ3J1Yl9vcGVuKGdyYXBoaWNzX2ZpbGUpKSB7CisgICAgcHJpbnRmKCIlczogZmlsZSBu
b3QgZm91bmRcbiIsIGdyYXBoaWNzX2ZpbGUpOworICAgIHNsZWVwKDUpOworICAgIGhlYXAgPSBz
YXZlZF9oZWFwOworICAgIHJldHVybjsKKyAgfQorCisgIGdmeF9maWxlX3NpemUgPSBncnViX3Jl
YWQoYnVmX2V4dCwgYnVmX2V4dF9zaXplKTsKKworICBncnViX2Nsb3NlKCk7CisKKyAgaWYoZ2Z4
X2ZpbGVfc2l6ZSA8PSAwKSB7CisgICAgcHJpbnRmKCIlczogcmVhZCBlcnJvclxuIiwgZ3JhcGhp
Y3NfZmlsZSk7CisgICAgc2xlZXAoNSk7CisgICAgaGVhcCA9IHNhdmVkX2hlYXA7CisgICAgcmV0
dXJuOworICB9CisKKyAgaWYodmVyYm9zZSkgeworICAgIHByaW50ZigiJXM6ICVkIGJ5dGVzICgl
ZCBieXRlcyBsZWZ0KVxuIiwgZ3JhcGhpY3NfZmlsZSwgZ2Z4X2ZpbGVfc2l6ZSwgYnVmX2V4dF9z
aXplIC0gZ2Z4X2ZpbGVfc2l6ZSk7CisgICAgd2FpdF9mb3Jfa2V5KCk7CisgIH0KKworICAvKiBs
b2NhdGUgZmlsZSBpbnNpZGUgY3BpbyBhcmNoaXZlICovCisgIGlmKCEoY29kZV9zdGFydCA9IGZp
bmRfZmlsZShidWZfZXh0LCBnZnhfZmlsZV9zaXplLCAmZmlsZV9zdGFydCwgJmZpbGVfbGVuKSkp
IHsKKyAgICBwcmludGYoIiVzOiBpbnZhbGlkIGZpbGUgZm9ybWF0XG4iLCBncmFwaGljc19maWxl
KTsKKyAgICBzbGVlcCg1KTsKKyAgICBoZWFwID0gc2F2ZWRfaGVhcDsKKyAgICByZXR1cm47Cisg
IH0KKworICBpZih2ZXJib3NlKSB7CisgICAgcHJpbnRmKCJpbml0OiBzdGFydCAweCV4LCBsZW4g
JWQ7IGNvZGUgb2Zmc2V0IDB4JXhcbiIsIGZpbGVfc3RhcnQsIGZpbGVfbGVuLCBjb2RlX3N0YXJ0
KTsKKyAgICB3YWl0X2Zvcl9rZXkoKTsKKyAgfQorCisgIGlmKGZpbGVfbGVuIC0gY29kZV9zdGFy
dCArIE1JTl9HRlhfRlJFRSA+IGJ1Zl9zaXplKSB7CisgICAgcHJpbnRmKCJub3QgZW5vdWdoIGZy
ZWUgbWVtb3J5OiAlZCBleHRyYSBieXRlcyBuZWVkXG4iLCBmaWxlX2xlbiAtIGNvZGVfc3RhcnQg
KyBNSU5fR0ZYX0ZSRUUgLSBidWZfc2l6ZSk7CisgICAgc2xlZXAoNSk7CisgICAgaGVhcCA9IHNh
dmVkX2hlYXA7CisgICAgcmV0dXJuOworICB9CisKKyAgbWVtY3B5KCh2b2lkICopIGJ1ZiwgKHZv
aWQgKikgKGJ1Zl9leHQgKyBmaWxlX3N0YXJ0ICsgY29kZV9zdGFydCksIGZpbGVfbGVuIC0gY29k
ZV9zdGFydCk7CisKKyAgbWVtMF9zdGFydCArPSBmaWxlX2xlbiAtIGNvZGVfc3RhcnQ7CisgIG1l
bTBfc3RhcnQgPSAobWVtMF9zdGFydCArIDMpICYgfjM7CQkvKiBhbGlnbiAqLworCisgIC8qIGlu
aXQgaW50ZXJmYWNlIHRvIGdyYXBoaWNzIGZ1bmN0aW9ucyAqLworCisgICoodW5zaWduZWQgKikg
KGdmeF9kYXRhLT5zeXNfY2ZnICsgU0NfRklMRSkgPSAodW5zaWduZWQpIGJ1Zl9leHQgKyBmaWxl
X3N0YXJ0OworICAqKHVuc2lnbmVkICopIChnZnhfZGF0YS0+c3lzX2NmZyArIFNDX0FSQ0hJVkVf
U1RBUlQpID0gKHVuc2lnbmVkKSBidWZfZXh0OworICAqKHVuc2lnbmVkICopIChnZnhfZGF0YS0+
c3lzX2NmZyArIFNDX0FSQ0hJVkVfRU5EKSA9ICh1bnNpZ25lZCkgYnVmX2V4dCArIGdmeF9maWxl
X3NpemU7CisgICoodW5zaWduZWQgKikgKGdmeF9kYXRhLT5zeXNfY2ZnICsgU0NfTUVNMF9TVEFS
VCkgPSBtZW0wX3N0YXJ0OworICAqKHVuc2lnbmVkICopIChnZnhfZGF0YS0+c3lzX2NmZyArIFND
X01FTTBfRU5EKSA9IG1lbTBfZW5kOworCisgIGdmeF9kYXRhLT5jb2RlX3NlZyA9ICh1bnNpZ25l
ZCkgYnVmID4+IDQ7CisKKyAgaWYodmVyYm9zZSkgeworICAgIHByaW50ZigiaW5pdCAweCV4LCBh
cmNoaXZlIDB4JXggLSAweCV4LCBsb3cgbWVtIDB4JXggLSAweCV4XG5jb2RlIHNlZyAweCV4XG4i
LAorICAgICAgKHVuc2lnbmVkKSBidWZfZXh0ICsgZmlsZV9zdGFydCwKKyAgICAgICh1bnNpZ25l
ZCkgYnVmX2V4dCwgKHVuc2lnbmVkKSBidWZfZXh0ICsgZ2Z4X2ZpbGVfc2l6ZSwKKyAgICAgIG1l
bTBfc3RhcnQsIG1lbTBfZW5kLCBnZnhfZGF0YS0+Y29kZV9zZWcKKyAgICApOworICAgIHdhaXRf
Zm9yX2tleSgpOworICB9CisKKyAgZm9yKGkgPSAwOyAodW5zaWduZWQpIGkgPCBzaXplb2YgZ2Z4
X2RhdGEtPmptcF90YWJsZSAvIHNpemVvZiAqZ2Z4X2RhdGEtPmptcF90YWJsZTsgaSsrKSB7Cisg
ICAgZ2Z4X2RhdGEtPmptcF90YWJsZVtpXSA9IChnZnhfZGF0YS0+Y29kZV9zZWcgPDwgMTYpICsg
KCh1bnNpZ25lZCBzaG9ydCAqKSBidWYpW2ldOworICB9CisKKyAgaWYodmVyYm9zZSkgeworICAg
IGZvcihpID0gMDsgaSA8IDEyOyBpKyspIHsKKyAgICAgIHByaW50ZigiJWQ6IDB4JXhcbiIsIGks
IGdmeF9kYXRhLT5qbXBfdGFibGVbaV0pOworICAgIH0KKworICAgIGZvcihpID0gMDsgaSA8IGdm
eF9kYXRhLT5tZW51X2VudHJpZXM7IGkrKykgeworICAgICAgcHJpbnRmKCJcIiVzXCIgIC0tICBc
IiVzXCJcbiIsCisgICAgICAgIGdmeF9kYXRhLT5tZW51X2xpc3QgKyBpICogZ2Z4X2RhdGEtPm1l
bnVfZW50cnlfbGVuLAorICAgICAgICBnZnhfZGF0YS0+YXJnc19saXN0ICsgaSAqIGdmeF9kYXRh
LT5hcmdzX2VudHJ5X2xlbgorICAgICAgKTsKKyAgICB9CisKKyAgICBwcmludGYoImRlZmF1bHQ6
IFwiJXNcIlxuIiwgZ2Z4X2RhdGEtPm1lbnVfZGVmYXVsdF9lbnRyeSk7CisgICAgd2FpdF9mb3Jf
a2V5KCk7CisgIH0KKworICAvKiBzd2l0Y2ggdG8gZ3JhcGhpY3MgbW9kZSAqLworCisgIGlmKGdm
eF9pbml0KGdmeF9kYXRhKSkgeworICAgIHByaW50ZigiZ3JhcGhpY3MgaW5pdGlhbGl6YXRpb24g
ZmFpbGVkXG4iKTsKKyAgICBzbGVlcCg1KTsKKyAgICBoZWFwID0gc2F2ZWRfaGVhcDsKKyAgICBy
ZXR1cm47CisgIH0KKworICBnZnhfc2V0dXBfbWVudShnZnhfZGF0YSk7CisKKyAgaSA9IGdmeF9p
bnB1dChnZnhfZGF0YSwgJnNlbGVjdGVkX2VudHJ5KTsKKworICAvKiBFU0MgLT4gc2hvdyB0ZXh0
IG1lbnUgKi8KKyAgaWYoaSA9PSAxKSB7CisgICAgZ2Z4X2RvbmUoZ2Z4X2RhdGEpOworICAgIGdy
dWJfdGltZW91dCA9IC0xOworCisgICAgaGVhcCA9IHNhdmVkX2hlYXA7CisgICAgcmV0dXJuOwor
ICB9CisKKyAgZ2Z4X2RvbmUoZ2Z4X2RhdGEpOworCisgIGhlYXAgPSBzYXZlZF9oZWFwOwkvKiBm
cmVlIG1vc3Qgb2YgdGhlIGdyYXBoaWNzIGRhdGEgKi8KKworICAvLyBwcmludGYoImNtZGxpbmU6
ID4lczwsIGVudHJ5ID0gJWRcbiIsIGdmeF9kYXRhLT5jbWRsaW5lLCBzZWxlY3RlZF9lbnRyeSk7
CisKKyAgaWYoc2VsZWN0ZWRfZW50cnkgPCAwIHx8IHNlbGVjdGVkX2VudHJ5ID4gbnVtX2VudHJp
ZXMpIHJldHVybjsKKworICAvKiBmb3IgJ3NhdmVkZWZhdWx0JyAqLworICBjdXJyZW50X2VudHJ5
bm8gPSBzZWxlY3RlZF9lbnRyeTsKKworCisgIC8qIGNyZWF0ZSBuZXcgY29uZmlnIHdpdGggbW9k
aWZpZWQga2VybmVsIG9wdGlvbiAqLworCisgIGNmZyA9IGdldF9lbnRyeShjb25maWdfZW50cmll
cywgc2VsZWN0ZWRfZW50cnksIDEpOworCisgIG5ld19jb25maWcgPSBoZWFwOworCisgIGZvcihw
ID0gZ2Z4X2RhdGEtPmNtZGxpbmUsIGkgPSAwOyA7IGkrKykgeworICAgIHMgPSBnZXRfZW50cnko
Y2ZnLCBpLCAwKTsKKyAgICBpZighKnMpIHsKKyAgICAgIGlmKCFpKSAqaGVhcCsrID0gMDsKKyAg
ICAgICpoZWFwKysgPSAwOworICAgICAgYnJlYWs7CisgICAgfQorICAgIC8qIG5vdGU6IG11c3Qg
bWF0Y2ggZ2V0X2tlcm5lbF9hcmdzKCkgKi8KKyAgICBpZigKKyAgICAgICghbWVtY21wKHMsICJr
ZXJuZWwiLCA2KSB8fCAhbWVtY21wKHMsICJtb2R1bGUiLCA2KSkgJiYKKyAgICAgIChzWzZdID09
ICcgJyB8fCBzWzZdID09ICdcdCcpCisgICAgKSB7CisgICAgICB0ID0gc2tpcF90bygwLCBzKTsK
KyAgICAgIHQyID0gc1swXSA9PSAnbScgPyBzdHJzdHIodCwgImluaXRyZCIpIDogTlVMTDsKKyAg
ICAgIGlmKCp0KSB0ID0gc2tpcF90bygwLCB0KTsKKyAgICAgIGlmKHQyICYmIHQyIDwgdCkgewkv
KiBtb2R1bGUgaXMgbGlrZWx5IGEgbm9ybWFsIGluaXRyZCAtPiBza2lwICovCisgICAgICAgIHN0
cmNweShoZWFwLCBzKTsKKyAgICAgICAgaGVhcCArPSBzdHJsZW4ocykgKyAxOworICAgICAgICBj
b250aW51ZTsKKyAgICAgIH0KKyAgICAgIG1lbW1vdmUoaGVhcCwgcywgdCAtIHMpOworICAgICAg
aGVhcCArPSB0IC0gczsKKyAgICAgICpoZWFwKysgPSAnICc7CisgICAgICB3aGlsZSgqcCAmJiAq
cCAhPSBHRlhfQ01EX1NFUCkgKmhlYXArKyA9ICpwKys7CisgICAgICAqaGVhcCsrID0gMDsKKyAg
ICAgIGlmKCpwID09IEdGWF9DTURfU0VQKSBwKys7CisgICAgfQorICAgIGVsc2UgeworICAgICAg
c3RyY3B5KGhlYXAsIHMpOworICAgICAgaGVhcCArPSBzdHJsZW4ocykgKyAxOworICAgIH0KKyAg
fQorCisgICpoZWFwKysgPSAwOworCisgIC8vIGhleGR1bXAobmV3X2NvbmZpZywgaGVhcCAtIG5l
d19jb25maWcpOworICAvLyBnZXRrZXkoKTsKKworICBydW5fc2NyaXB0KG5ld19jb25maWcsIGhl
YXApOworfQorCisKIHN0YXRpYyBpbnQKIGdldF9saW5lX2Zyb21fY29uZmlnIChjaGFyICpjbWRs
aW5lLCBpbnQgbWF4bGVuLCBpbnQgcmVhZF9mcm9tX2ZpbGUpCiB7CkBAIC04MjcsNiArMTQxMiwx
OTUgQEAgZ2V0X2xpbmVfZnJvbV9jb25maWcgKGNoYXIgKmNtZGxpbmUsIGludCBtYXhsZW4sIGlu
dCByZWFkX2Zyb21fZmlsZSkKICAgcmV0dXJuIHBvczsKIH0KIAorZXh0ZXJuIHZvaWQgX19zYXZl
ZGVmYXVsdF9vbmNlX3Jlc2V0KCk7CisKK2NoYXIgKndpbGRjYXJkX3ByZWZpeCwgKndpbGRjYXJk
X3N1ZmZpeDsKK2NoYXIgd2lsZGNhcmRfbWF0Y2hlc1sxMDI0XSwgKmVuZF93aWxkY2FyZF9tYXRj
aGVzOworCitzdGF0aWMgdm9pZCB3aWxkY2FyZF9oYW5kbGVyKGNoYXIgKm5hbWUpOworCisvKiBN
YXRjaCBvbmUgZGlyZWN0b3J5IGVudHJ5IGFnYWluc3QgdGhlIGN1cnJlbnQgd2lsZGNhcmQuIElm
IHRoZSBlbnRyeQorICAgbWF0Y2hlcywgc3RvcmUgaXQgaW4gV0lMRENBUkRfTUFUQ0hFUy4gU2ls
ZW50bHkgaWdub3JlIGVudHJpZXMgdGhhdAorICAgZG9uJ3QgZml0IGludG8gV0lMRENBUkRfTUFU
Q0hFUyBhbnltb3JlLiAqLworc3RhdGljIHZvaWQKK3dpbGRjYXJkX2hhbmRsZXIoY2hhciAqbmFt
ZSkKK3sKKyAgY2hhciAqbiA9IG5hbWUsICpwID0gd2lsZGNhcmRfcHJlZml4OworCisgIHdoaWxl
ICgqcCAmJiAqcCA9PSAqbikKKyAgICB7CisgICAgICBwKys7CisgICAgICBuKys7CisgICAgfQor
ICBpZiAoKnApCisgICAgcmV0dXJuOyAvKiBwcmVmaXggbWlzbWF0Y2ggKi8KKworICBwID0gbmFt
ZSArIGdydWJfc3RybGVuIChuYW1lKSAtIGdydWJfc3RybGVuICh3aWxkY2FyZF9zdWZmaXgpOwor
ICAvKiBbbiAuLiBwKSBpcyB0aGUgcGFydCBtYXRjaGluZyB0aGUgYXN0ZXJpc2sgKi8KKworICBp
ZiAocCA8IG4gfHwgZ3J1Yl9zdHJjbXAgKHAsIHdpbGRjYXJkX3N1ZmZpeCkgIT0gMCkKKyAgICBy
ZXR1cm47IC8qIHN1ZmZpeCBtaXNtYXRjaCAqLworCisgIC8qIHN0b3JlIHRoaXMgbWF0Y2ggKi8K
KyAgaWYgKHAgLSBuICsgMSA+IHNpemVvZiAod2lsZGNhcmRfbWF0Y2hlcykgLQorCQkgIChlbmRf
d2lsZGNhcmRfbWF0Y2hlcyAtIHdpbGRjYXJkX21hdGNoZXMpKQorICAgIHJldHVybjsgLyogb3V0
IG9mIHNwYWNlICovCisgIHdoaWxlIChuIDwgcCkKKyAgICAqZW5kX3dpbGRjYXJkX21hdGNoZXMr
KyA9ICpuKys7CisgICplbmRfd2lsZGNhcmRfbWF0Y2hlcysrID0gMDsKK30KKworLyogV2lsZGNh
cmQgZXhwYW5kIHRoZSBHTE9CIGFyZ3VtZW50LiBSZXR1cm4gTlVMTCB1cG9uIGZhaWx1cmUsIG9y
CisgICBhIGxpc3Qgb2YgMC10ZXJtaW5hdGVkIGV4cGFuc2lvbnMsIHRlcm1pbmF0ZWQgYnkgYSB6
ZXJvLWxlbmd0aCBzdHJpbmcuICovCitjaGFyICoKK3dpbGRjYXJkIChjaGFyICpnbG9iLCBpbnQg
KmxlbikKK3sKKyAgY2hhciBwYXRoWzEyOF0sICpwOworICBpbnQgcmV0OworCisgIGVuZF93aWxk
Y2FyZF9tYXRjaGVzID0gd2lsZGNhcmRfbWF0Y2hlczsKKyAgaWYgKGdydWJfc3RybGVuIChnbG9i
KSArIDEgPiBzaXplb2YgKHBhdGgpKSB7CisgICAgZXJybnVtID0gRVJSX0ZJTEVMRU5HVEg7Cisg
ICAgcmV0dXJuIE5VTEw7ICAvKiBjYW5ub3QgaGFuZGxlIHBhdGhuYW1lcyB0aGlzIGxvbmcgKi8K
KyAgfQorICBncnViX3N0cmNweSAocGF0aCwgZ2xvYik7CisgIHAgPSBwYXRoOworICB3aGlsZSAo
KnApCisgICAgcCsrOworICB3aWxkY2FyZF9zdWZmaXggPSBwOworICB3aGlsZSAocCA+IHBhdGgg
JiYgKnAgIT0gJy8nKQorICAgIHAtLTsKKyAgaWYgKCpwICE9ICcvJykKKyAgICB7CisgICAgICBl
cnJudW0gPSBFUlJfQkFEX0ZJTEVUWVBFOworICAgICAgcmV0dXJuIE5VTEw7IC8qIENhbm5vdCB3
aWxkY2FyZCBkZXZpY2UgbmFtZXMgKi8KKyAgICB9CisgICooKytwKSA9IDA7CisgIHdpbGRjYXJk
X3ByZWZpeCA9IGdsb2IgKyAocCAtIHBhdGgpOworICBmb3IgKHAgPSB3aWxkY2FyZF9wcmVmaXg7
OyBwKyspCisgICAgeworICAgICAgaWYgKCpwID09IDApCisJeworCSAgLyogV2UgY2Fubm90IGRv
IGV4YWN0IG1hdGNoZXM6IHRoaXMgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIHRoZQorCSAgICAg
cmVzdWx0IGxpc3QuICovCisJICByZXR1cm4gTlVMTDsKKwl9CisgICAgICBlbHNlIGlmICgqcCA9
PSAnKicpCisJeworCSAgKnArKyA9IDA7CisJICB3aWxkY2FyZF9zdWZmaXggPSBwOworCSAgYnJl
YWs7CisJfQorICAgIH0KKworICByZXQgPSBkaXIgKHBhdGgsIHdpbGRjYXJkX2hhbmRsZXIpOwor
ICAvKiByZXN0b3JlIG9yaWdpbmFsIGFyZ3VtZW50ICovCisgIHdpbGRjYXJkX3ByZWZpeFtncnVi
X3N0cmxlbiAod2lsZGNhcmRfcHJlZml4KV0gPSAnKic7CisgIGlmICghcmV0KQorICAgIHJldHVy
biBOVUxMOworICAqbGVuID0gZW5kX3dpbGRjYXJkX21hdGNoZXMgLSB3aWxkY2FyZF9tYXRjaGVz
OworICByZXR1cm4gd2lsZGNhcmRfbWF0Y2hlczsKK30KKworI2RlZmluZSBza2lwKHN0cikgKChz
dHIpICsgZ3J1Yl9zdHJsZW4gKHN0cikgKyAxKQorCitzdGF0aWMgdm9pZCBpbnBsYWNlX3NvcnQg
KGNoYXIgKnN0ciwgaW50IGxlbik7CisKK3N0YXRpYyB2b2lkCitpbnBsYWNlX3NvcnQgKGNoYXIg
KnN0ciwgaW50IGxlbikKK3sKKyAgaW50IG0sIG4gPSAwOworICBjaGFyICpzLCAqdDsKKworICAv
KiB3ZSB1c2UgeCBhcyB0ZW1wb3Jhcnkgc3RvcmFnZSAqLworICBjaGFyICp4ID0gc3RyICsgbGVu
OworCisgIGZvciAocyA9IHN0cjsgcyA8IHg7IHMgPSBza2lwIChzKSkKKyAgICBuKys7CisKKyAg
Zm9yICg7IG4gPj0gMjsgbi0tKQorICAgIHsKKyAgICAgIHMgPSBzdHI7CisgICAgICB0ID0gc2tp
cCAocyk7CisKKyAgICAgIGZvciAobSA9IG47IG0gPj0gMjsgbS0tKQorCXsKKwkgIGlmIChncnVi
X3N0cmNtcCAocywgdCkgPiAwKQorCSAgICB7CisJICAgICAgaW50IGxzID0gc2tpcCAocykgLSBz
OworCSAgICAgIGludCBsdCA9IHNraXAgKHQpIC0gdDsKKworCSAgICAgIG1lbWNweSAoeCwgcywg
bHMpOworCSAgICAgIGdydWJfbWVtbW92ZSAocyArIGxzLCBzICsgbHQsIHQgLSAocyArIGxzKSk7
CisJICAgICAgbWVtY3B5IChzLCB0LCBsdCk7CisJICAgICAgdCA9IHQgKyBsdCAtIGxzOworCSAg
ICAgIG1lbWNweSAodCwgeCwgbHMpOworCSAgICB9CisJICBzID0gdDsKKwkgIHQgPSBza2lwICh0
KTsKKwl9CisgICAgfQorfQorCisjdW5kZWYgc2tpcAorCitzdGF0aWMgaW50IHRoaXNfY29uZmln
X2xlbiAoY29uc3QgY2hhciAqY29uZmlnKTsKK3N0YXRpYyBpbnQKK3RoaXNfY29uZmlnX2xlbiAo
Y29uc3QgY2hhciAqY29uZmlnKQoreworICBjb25zdCBjaGFyICpjID0gY29uZmlnOworICB3aGls
ZSAoKmMpCisgICAgeworICAgICAgd2hpbGUgKCpjKQorCWMrKzsKKyAgICAgIGMrKzsKKyAgICB9
CisgIGMrKzsKKyAgcmV0dXJuIGMgLSBjb25maWc7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICog
ZXhwYW5kX2FzdGVyaXNrcyAoY29uc3QgY2hhciAqc3RyLCBpbnQgKmxlbiwKKwkJCQkgICAgICBj
b25zdCBjaGFyICpzdWJzdCk7CisKKy8qIEV4cGFuZCBhbGwgYXN0ZXJpc2tzICgqKSBpbiBhIG1l
bnUgZW50cnkgb3IgY29tbWFuZHMgc2VjdGlvbiB3aXRoIGl0cworICAgc3Vic3RpdHV0aW9uLiBV
c2UgYSBiYWNrc2xhc2ggYXMgZXNjYXBlIGNoYXJhY3Rlci4gKi8KK3N0YXRpYyBjb25zdCBjaGFy
ICoKK2V4cGFuZF9hc3Rlcmlza3MgKGNvbnN0IGNoYXIgKnN0ciwgaW50ICpsZW4sIGNvbnN0IGNo
YXIgKnN1YnN0KQoreworICBzdGF0aWMgY2hhciBidWZmZXJbMTAyNF07CisgIGNoYXIgKmIgPSBi
dWZmZXIsIGVzY2FwZWQgPSAwOworICBjb25zdCBjaGFyICplbmQgPSBzdHIgKyAqbGVuOworCisg
IHdoaWxlIChzdHIgPCBlbmQpCisgICAgeworICAgICAgaWYgKCpzdHIgPT0gJyonICYmICFlc2Nh
cGVkKQorICAgICAgICB7CisJICBpZiAoYiAtIGJ1ZmZlciArIGdydWJfc3RybGVuIChzdWJzdCkg
PiBzaXplb2YgKGJ1ZmZlcikpCisJICAgIHsKKwkgICAgICBlcnJudW0gPSBFUlJfRklMRUxFTkdU
SDsKKwkgICAgICByZXR1cm4gTlVMTDsKKwkgICAgfQorCSAgZ3J1Yl9zdHJjcHkgKGIsIHN1YnN0
KTsKKwkgIGIgKz0gZ3J1Yl9zdHJsZW4gKHN1YnN0KTsKKwl9CisgICAgICBlbHNlIGlmICgqc3Ry
ID09ICdcXCcgJiYgIWVzY2FwZWQpCisJZXNjYXBlZCA9IDE7CisgICAgICBlbHNlCisgICAgICAg
IHsKKwkgIGVzY2FwZWQgPSAwOworCSAgaWYgKGIgLSBidWZmZXIgKyAxID4gc2l6ZW9mIChidWZm
ZXIpKQorCSAgICB7CisJICAgICAgZXJybnVtID0gRVJSX0ZJTEVMRU5HVEg7CisJICAgICAgcmV0
dXJuIE5VTEw7CisJICAgIH0KKwkgICpiKysgPSAqc3RyOworCX0KKyAgICAgIHN0cisrOworICAg
IH0KKyAgICAqbGVuID0gYiAtIGJ1ZmZlcjsKKworICAgIHJldHVybiBidWZmZXI7Cit9CiAKIC8q
IFRoaXMgaXMgdGhlIHN0YXJ0aW5nIGZ1bmN0aW9uIGluIEMuICAqLwogdm9pZApAQCAtODQ4LDYg
KzE2MjIsOTcgQEAgY21haW4gKHZvaWQpCiAgICAgICBpbml0X2NvbmZpZyAoKTsKICAgICB9CiAg
IAorICBhdXRvIHZvaWQgZXhwYW5kX3dpbGRjYXJkX2VudHJpZXMgKHZvaWQpOworICB2b2lkIGV4
cGFuZF93aWxkY2FyZF9lbnRyaWVzICh2b2lkKQorICAgIHsKKyAgICAgIGNoYXIgKmNvbmZpZ19l
bnRyeSA9IGNvbmZpZ19lbnRyaWVzOworICAgICAgY2hhciAqbWVudV9lbnRyeSA9IG1lbnVfZW50
cmllczsKKworICAgICAgd2hpbGUgKCptZW51X2VudHJ5KQorICAgICAgICB7CisJICBjaGFyICpj
b21tYW5kID0gY29uZmlnX2VudHJ5OworCisJICBkbworCSAgICB7CisJICAgICAgY2hhciAqYyA9
IGNvbW1hbmQ7CisJICAgICAgY29uc3QgY2hhciAqdyA9ICJ3aWxkY2FyZCI7CisKKwkgICAgICB3
aGlsZSAoKncgJiYgKmMgPT0gKncpCisJCXsKKwkJICBjKys7CisJCSAgdysrOworCQl9CisJICAg
ICAgaWYgKCp3ID09IDAgJiYgKCpjID09ICcgJyB8fCAqYyA9PSAnXHQnIHx8ICpjID09ICc9Jykp
CisJCXsKKwkJICBpbnQgbGVuLCB3bGVuOworCisJCSAgLyogVGhpcyBpcyBhIHdpbGRjYXJkIGNv
bW1hbmQuIEFkdmFuY2UgdG8gdGhlIGFyZ3VtZW50LiAqLworCQkgIHdoaWxlICgqYyA9PSAnICcg
fHwgKmMgPT0gJ1x0JyB8fCAqYyA9PSAnPScpCisJCSAgICBjKys7CisKKwkJICAvKiBFeHBhbmQg
d2lsZGNhcmQgZW50cnkuICovCisJCSAgdyA9IHdpbGRjYXJkIChjLCAmd2xlbik7CisJCSAgaWYg
KHcpCisJCSAgICBpbnBsYWNlX3NvcnQgKHcsIHdsZW4pOworCisJCSAgLyogUmVtb3ZlIHRoZSB3
aWxkY2FyZCBjb21tYW5kIGZyb20gdGhlIGNvbW1hbmQgc2VjdGlvbjsKKwkJICAgICBpdCBoYXMg
bm8gbWVhbmluZyBiZXlvbmQgdGhlIHdpbGRjYXJkIGV4cGFuc2lvbiBqdXN0CisJCSAgICAgcGVy
Zm9ybWVkLiAqLworCQkgIGxlbiA9IGdydWJfc3RybGVuIChjb21tYW5kKSArIDE7CisJCSAgZ3J1
Yl9tZW1tb3ZlIChjb21tYW5kLCBjb21tYW5kICsgbGVuLAorCQkgIAkJY29uZmlnX2xlbiAtIChj
b21tYW5kIC0gY29uZmlnX2VudHJpZXMpKTsKKwkJICBjb25maWdfbGVuIC09IGxlbjsKKworCQkg
IHdoaWxlICh3ICYmIHdsZW4pCisJCSAgICB7CisJCSAgICAgIC8qIEluc2VydCBleHBhbnNpb24g
YmVmb3JlIHRoZSB3aWxkY2FyZCBlbnRyeSBpbiB0aGUKKwkJICAgICAgICAgbGlzdCBvZiBlbnRy
eSBuYW1lcy4gKi8KKwkJICAgICAgbGVuID0gZ3J1Yl9zdHJsZW4gKG1lbnVfZW50cnkpICsgMTsK
KwkJICAgICAgY29uc3QgY2hhciAqeCA9IGV4cGFuZF9hc3Rlcmlza3MgKG1lbnVfZW50cnksICZs
ZW4sIHcpOworCQkgICAgICBncnViX21lbW1vdmUgKG1lbnVfZW50cnkgKyBsZW4sIG1lbnVfZW50
cnksCisJCSAgICAgIAkJICAgIG1lbnVfbGVuIC0gKG1lbnVfZW50cnkgLSBtZW51X2VudHJpZXMp
KTsKKwkJICAgICAgbWVtY3B5IChtZW51X2VudHJ5LCB4LCBsZW4pOworCQkgICAgICBtZW51X2Vu
dHJ5ICs9IGxlbjsKKwkJICAgICAgbWVudV9sZW4gKz0gbGVuOworCQkgICAgICAKKwkJICAgICAg
LyogSW5zZXJ0IGV4cGFuc2lvbiBiZWZvcmUgdGhlIHdpbGRjYXJkIGNvbW1hbmQgc2VjdGlvbgor
CQkgICAgICAgICBpbiB0aGUgbGlzdCBvZiBjb21tYW5kIHNlY3Rpb25zLiAqLworCQkgICAgICBs
ZW4gPSB0aGlzX2NvbmZpZ19sZW4gKGNvbmZpZ19lbnRyeSk7CisJCSAgICAgIHggPSBleHBhbmRf
YXN0ZXJpc2tzIChjb25maWdfZW50cnksICZsZW4sIHcpOworCQkgICAgICBncnViX21lbW1vdmUg
KGNvbmZpZ19lbnRyeSArIGxlbiwgY29uZmlnX2VudHJ5LAorCQkgICAgICAJCSAgICBjb25maWdf
bGVuIC0gKGNvbmZpZ19lbnRyeSAtCisJCQkJICAgIAkJICBjb25maWdfZW50cmllcykpOworCQkg
ICAgICBtZW1jcHkgKGNvbmZpZ19lbnRyeSwgeCwgbGVuKTsKKwkJICAgICAgY29uZmlnX2VudHJ5
ICs9IGxlbjsKKwkJICAgICAgY29uZmlnX2xlbiArPSBsZW47CisKKwkJICAgICAgbnVtX2VudHJp
ZXMrKzsKKwkJICAgICAgd2xlbiAtPSBncnViX3N0cmxlbiAodykgKyAxOworCQkgICAgICB3ICs9
IGdydWJfc3RybGVuICh3KSArIDE7CisJCSAgICB9CisKKwkJICAvKiBSZW1vdmUgdGhlIHdpbGRj
YXJkIGNvbW1hbmQgc2VjdGlvbjsgaXQgaGFzIGp1c3QKKwkJICAgICBiZWVuIGV4cGFuZGVkLiAq
LworCQkgIGxlbiA9IGdydWJfc3RybGVuIChtZW51X2VudHJ5KSArIDE7CisJCSAgZ3J1Yl9tZW1t
b3ZlIChtZW51X2VudHJ5LCBtZW51X2VudHJ5ICsgbGVuLAorCQkgIAkJbWVudV9sZW4gLSAobWVu
dV9lbnRyeSAtIG1lbnVfZW50cmllcykpOworCQkgIG1lbnVfbGVuIC09IGxlbjsKKworCQkgIGxl
biA9IHRoaXNfY29uZmlnX2xlbihjb25maWdfZW50cnkpOworCQkgIGdydWJfbWVtbW92ZSAoY29u
ZmlnX2VudHJ5LCBjb25maWdfZW50cnkgKyBsZW4sCisJCSAgCQljb25maWdfbGVuIC0gKGNvbmZp
Z19lbnRyeSAtIGNvbmZpZ19lbnRyaWVzKSk7CisJCSAgY29uZmlnX2xlbiAtPSBsZW47CisKKwkJ
ICBudW1fZW50cmllcy0tOworCQl9CisJICAgICAgY29tbWFuZCArPSBncnViX3N0cmxlbiAoY29t
bWFuZCkgKyAxOworCSAgICB9CisJICB3aGlsZSAoKmNvbW1hbmQpOworCSAgbWVudV9lbnRyeSAr
PSBncnViX3N0cmxlbiAobWVudV9lbnRyeSkgKyAxOworCSAgY29uZmlnX2VudHJ5ICs9IHRoaXNf
Y29uZmlnX2xlbihjb25maWdfZW50cnkpOworCX0KKyAgICB9CisKICAgLyogSW5pdGlhbGl6ZSB0
aGUgZW52aXJvbm1lbnQgZm9yIHJlc3RhcnRpbmcgU3RhZ2UgMi4gICovCiAgIGdydWJfc2V0am1w
IChyZXN0YXJ0X2Vudik7CiAgIApAQCAtOTk5LDggKzE4NjQsMTYgQEAgY21haW4gKHZvaWQpCiAJ
CSAgY29uZmlnX2xlbiA9IHByZXZfY29uZmlnX2xlbjsKIAkJfQogCSAgICAgIAorCSAgICAgIGlm
IChpc19wcmVzZXQpCisJCWNsb3NlX3ByZXNldF9tZW51ICgpOworCSAgICAgIGVsc2UKKwkJZ3J1
Yl9jbG9zZSAoKTsKKwkgICAgICAKIAkgICAgICBtZW51X2VudHJpZXNbbWVudV9sZW4rK10gPSAw
OwogCSAgICAgIGNvbmZpZ19lbnRyaWVzW2NvbmZpZ19sZW4rK10gPSAwOworCisJICAgICAgZXhw
YW5kX3dpbGRjYXJkX2VudHJpZXMoKTsKKwogCSAgICAgIGdydWJfbWVtbW92ZSAoY29uZmlnX2Vu
dHJpZXMgKyBjb25maWdfbGVuLCBtZW51X2VudHJpZXMsCiAJCQkgICAgbWVudV9sZW4pOwogCSAg
ICAgIG1lbnVfZW50cmllcyA9IGNvbmZpZ19lbnRyaWVzICsgY29uZmlnX2xlbjsKQEAgLTEwNDIs
MTQgKzE5MTUsMTIgQEAgY21haW4gKHZvaWQpCiAJCSAgICBkZWZhdWx0X2VudHJ5ID0gMDsKIAkJ
fQogCSAgICAgIAotCSAgICAgIGlmIChpc19wcmVzZXQpCi0JCWNsb3NlX3ByZXNldF9tZW51ICgp
OwotCSAgICAgIGVsc2UKLQkJZ3J1Yl9jbG9zZSAoKTsKIAkgICAgfQogCSAgd2hpbGUgKGlzX3By
ZXNldCk7CiAJfQotCisjaWZuZGVmIFNVUFBPUlRfRElTS0xFU1MKKyAgICAgIF9fc2F2ZWRlZmF1
bHRfb25jZV9yZXNldCgpOworI2VuZGlmCiAgICAgICBpZiAoISBudW1fZW50cmllcykKIAl7CiAJ
ICAvKiBJZiBubyBhY2NlcHRhYmxlIGNvbmZpZyBmaWxlLCBnb3RvIGNvbW1hbmQtbGluZSwgc3Rh
cnRpbmcKQEAgLTEwNTksOSArMTkzMCwxMiBAQCBjbWFpbiAodm9pZCkKIAl9CiAgICAgICBlbHNl
CiAJewotCSAgLyogUnVuIG1lbnUgaW50ZXJmYWNlLiAgKi8KLQkgIHJ1bl9tZW51IChtZW51X2Vu
dHJpZXMsIGNvbmZpZ19lbnRyaWVzLCBudW1fZW50cmllcywKLQkJICAgIG1lbnVfZW50cmllcyAr
IG1lbnVfbGVuLCBkZWZhdWx0X2VudHJ5KTsKKwkgIGlmICgqZ3JhcGhpY3NfZmlsZSAmJiAhcGFz
c3dvcmQgJiYgc2hvd19tZW51ICYmIGdydWJfdGltZW91dCkKKwkgICAgeworCSAgICAgIHJ1bl9n
cmFwaGljc19tZW51KG1lbnVfZW50cmllcywgY29uZmlnX2VudHJpZXMsIG51bV9lbnRyaWVzLG1l
bnVfZW50cmllcyArIG1lbnVfbGVuLCBkZWZhdWx0X2VudHJ5KTsKKwkgICAgfQorCSAgICAvKiBS
dW4gbWVudSBpbnRlcmZhY2UuICAqLworICAgICAgICAgICAgcnVuX21lbnUgKG1lbnVfZW50cmll
cywgY29uZmlnX2VudHJpZXMsIG51bV9lbnRyaWVzLCBtZW51X2VudHJpZXMgKyBtZW51X2xlbiwg
ZGVmYXVsdF9lbnRyeSk7CiAJfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL3V0aWwvZ3J1Yi1pbnN0
YWxsLmluIGIvdXRpbC9ncnViLWluc3RhbGwuaW4KaW5kZXggMmU1OThiMC4uZmZhOWY5MCAxMDA2
NDQKLS0tIGEvdXRpbC9ncnViLWluc3RhbGwuaW4KKysrIGIvdXRpbC9ncnViLWluc3RhbGwuaW4K
QEAgLTI3LDE1ICsyNywxNyBAQCBWRVJTSU9OPUBWRVJTSU9OQAogaG9zdF9jcHU9QGhvc3RfY3B1
QAogaG9zdF9vcz1AaG9zdF9vc0AKIGhvc3RfdmVuZG9yPUBob3N0X3ZlbmRvckAKLXBrZ2xpYmRp
cj0ke2xpYmRpcn0vJHtQQUNLQUdFfS8ke2hvc3RfY3B1fS0ke2hvc3RfdmVuZG9yfQorcGtnbGli
ZGlyPSR7bGliZGlyfS8ke1BBQ0tBR0V9LwogCiBncnViX3NoZWxsPSR7c2JpbmRpcn0vZ3J1Ygor
bWRhZG09JHtzYmluZGlyfS9tZGFkbQogZ3J1Yl9zZXRfZGVmYXVsdD0ke3NiaW5kaXJ9L2dydWIt
c2V0LWRlZmF1bHQKIGxvZ19maWxlPS90bXAvZ3J1Yi1pbnN0YWxsLmxvZy4kJAogaW1nX2ZpbGU9
L3RtcC9ncnViLWluc3RhbGwuaW1nLiQkCiByb290ZGlyPQogZ3J1Yl9wcmVmaXg9L2Jvb3QvZ3J1
YgogCitpbnN0YWxsX2RyaXZlcz0KIGluc3RhbGxfZGV2aWNlPQogbm9fZmxvcHB5PQogZm9yY2Vf
bGJhPQpAQCAtNzAsNiArNzIsOCBAQCBJbnN0YWxsIEdSVUIgb24geW91ciBkcml2ZS4KICAgLS1m
b3JjZS1sYmEgICAgICAgICAgICAgZm9yY2UgR1JVQiB0byB1c2UgTEJBIG1vZGUgZXZlbiBmb3Ig
YSBidWdneQogICAgICAgICAgICAgICAgICAgICAgICAgICBCSU9TCiAgIC0tcmVjaGVjayAgICAg
ICAgICAgICAgIHByb2JlIGEgZGV2aWNlIG1hcCBldmVuIGlmIGl0IGFscmVhZHkgZXhpc3RzCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmxhZyBpcyB1bnJlbGlhYmxlIGFuZCBpdHMg
dXNlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9uZ2x5IGRpc2NvdXJhZ2VkLgog
CiBJTlNUQUxMX0RFVklDRSBjYW4gYmUgYSBHUlVCIGRldmljZSBuYW1lIG9yIGEgc3lzdGVtIGRl
dmljZSBmaWxlbmFtZS4KIApAQCAtOTYsMTcgKzEwMCwyNiBAQCBjb252ZXJ0ICgpIHsKICAgICAj
IEJyZWFrIHRoZSBkZXZpY2UgbmFtZSBpbnRvIHRoZSBkaXNrIHBhcnQgYW5kIHRoZSBwYXJ0aXRp
b24gcGFydC4KICAgICBjYXNlICIkaG9zdF9vcyIgaW4KICAgICBsaW51eCopCi0JdG1wX2Rpc2s9
YGVjaG8gIiQxIiB8IHNlZCAtZSAncyVcKFtzaF1kW2Etel1cKVswLTldKiQlXDElJyBcCisJdG1w
X2Rpc2s9YGVjaG8gIiQxIiB8IGdyZXAgLXYgJy9tYXBwZXIvY29udHJvbCQnIHwKKwkJZ3JlcCAt
diAnL21hcHBlci9bWzphbG51bTpdXVwrLVtbOmFsbnVtOl1dXCskJyB8IHVuaXEgfAorCQlzZWQg
LWUgJ3MlXChbc2hdZFthLXpdXClbMC05XSokJVwxJScgXAogCQkJCSAgLWUgJ3MlXChkWzAtOV0q
XClwWzAtOV0qJCVcMSUnIFwKIAkJCQkgIC1lICdzJVwoZmRbMC05XSpcKSQlXDElJyBcCiAJCQkJ
ICAtZSAncyUvcGFydFswLTldKiQlL2Rpc2MlJyBcCi0JCQkJICAtZSAncyVcKGNbMC03XWRbMC05
XSpcKS4qJCVcMSUnYAotCXRtcF9wYXJ0PWBlY2hvICIkMSIgfCBzZWQgLWUgJ3MlLiovW3NoXWRb
YS16XVwoWzAtOV0qXCkkJVwxJScgXAorCQkJCSAgLWUgJ3MlXChjWzAtN11kWzAtOV0qXCkuKiQl
XDElJyBcCisJICAtZSAncyVcKC9tYXBwZXIvW1s6YWxwaGE6XV1cK1tbOmRpZ2l0Ol1dXCtcKXBb
WzpkaWdpdDpdXVwrJCVcMSUnIFwKKwkgIC1lICdzJVwoL21hcHBlci9bWzphbHBoYTpdXVwrX1tb
OmFscGhhOl1dXCtcKVtbOmRpZ2l0Ol1dXCskJVwxJSdgCisJdG1wX3BhcnQ9YGVjaG8gIiQxIiB8
IGdyZXAgLXYgJy9tYXBwZXIvY29udHJvbCQnIHwKKwkJZ3JlcCAtdiAnL21hcHBlci9bWzphbG51
bTpdXVwrLVtbOmFsbnVtOl1dXCskJyB8IHVuaXEgfAorCQlzZWQgLWUgJ3MlLiovW3NoXWRbYS16
XVwoWzAtOV0qXCkkJVwxJScgXAogCQkJCSAgLWUgJ3MlLipkWzAtOV0qcCUlJyBcCiAJCQkJICAt
ZSAncyUuKi9mZFswLTldKiQlJScgXAogCQkJCSAgLWUgJ3MlLiovZmxvcHB5L1swLTldKiQlJScg
XAogCQkJCSAgLWUgJ3MlLiovXChkaXNjXHxwYXJ0XChbMC05XSpcKVwpJCVcMiUnIFwKLQkJCQkg
IC1lICdzJS4qY1swLTddZFswLTldKnAlJSdgCisJCQkJICAtZSAncyUuKmNbMC03XWRbMC05XSpw
JSUnIFwKKwkgIC1lICdzJS4qL21hcHBlci9bWzphbHBoYTpdXVwrW1s6ZGlnaXQ6XV1cK3BcKFtb
OmRpZ2l0Ol1dXCtcKSQlXDElJyBcCisJICAtZSAncyUuKi9tYXBwZXIvW1s6YWxwaGE6XV1cK19b
WzphbHBoYTpdXVwrXChbWzpkaWdpdDpdXVwrXCkkJVwxJScgfAorCQlncmVwIC12ICcuKi9tYXBw
ZXIvLionYAogCTs7CiAgICAgZ251KikKIAl0bXBfZGlzaz1gZWNobyAiJDEiIHwgc2VkICdzJVwo
W3NoXWRbMC05XSpcKS4qJVwxJSdgCkBAIC0yMTEsMjMgKzIyNCwxMzUgQEAgcmVzb2x2ZV9zeW1s
aW5rICgpIHsKIAllY2hvICIkdG1wX2ZuYW1lIgogfQogCisjIFVzYWdlOiBpc19yYWlkMV9kZXZp
Y2UgZGV2aWNlbmFtZQorIyBSZXR1cm5zIDAgaWYgZGV2aWNlbmFtZSBpcyBhIHJhaWQxIG1kIGRl
dmljZSwgMSBpZiBpdCBpcyBub3QuCitpc19yYWlkMV9kZXZpY2UgKCkgeworICAgIGNhc2UgIiRo
b3N0X29zIiBpbgorICAgIGxpbnV4KikKKwlsZXZlbD1gJG1kYWRtIC0tcXVlcnkgLS1kZXRhaWwg
JDEgMj4vZGV2L251bGwgfCBcCisJCWF3ayAnL1JhaWQgTGV2ZWwgOi8ge3ByaW50ICQ0fSdgIAor
CWlmIFsgIiRsZXZlbCIgPSAicmFpZDEiIF07IHRoZW4KKwkgICAgcmV0dXJuIDAKKwlmaQorICAg
IDs7CisgICAgZXNhYworICAgIHJldHVybiAxCit9CisKKyMgVXNhZ2U6IGZpbmRfcmVhbF9kZXZz
IGRldmljZQorIyBSZXR1cm5zIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mIGRldmljZXMgZm9yIGxp
bnV4IGlmIGRldmljZSBpcyAKKyMgYSByYWlkMSBkZXZpY2UuIEluIGFsbCBvdGhlciBjYXNlcywg
dGhlIHByb3ZpZGVkIHZhbHVlIGlzIHJldHVybmVkLgorZmluZF9yZWFsX2RldnMgKCkgeworICAg
IHNvdXJjZV9kZXZpY2U9JDEKKyAgICBjYXNlICIkaG9zdF9vcyIgaW4KKyAgICBsaW51eCopCisJ
aWYgaXNfcmFpZDFfZGV2aWNlICRzb3VyY2VfZGV2aWNlIDsgdGhlbgorCSAgICBsaXN0PSIiCisJ
ICAgIGZvciBkZXZpY2UgaW4gYCRtZGFkbSAtLXF1ZXJ5IC0tZGV0YWlsICIke3NvdXJjZV9kZXZp
Y2V9IiB8IFwKKwkJICAgIGF3ayAnL1wvZGV2XC9bXihtZCldLyB7cHJpbnQgJDd9J2AgOyBkbwor
CQlsaXN0PSIkbGlzdCAkZGV2aWNlIgorCSAgICBkb25lCisJICAgIGVjaG8gJGxpc3QKKwkgICAg
cmV0dXJuIDAKKwlmaQorICAgIDs7CisgICAgZXNhYworICAgIGVjaG8gJHNvdXJjZV9kZXZpY2UK
KyAgICByZXR1cm4gMAorfQorCisjIFVzYWdlOiBzdGF0X2RldmljZSBmaWxlCisjIEZpbmQgbWFq
b3I6bWlub3Igb2YgYSBkZXZpY2Ugbm9kZS4KK3N0YXRfZGV2aWNlKCkgeworICAgIG1ham1pbj1g
c3RhdCAtYyAiJXQ6JVQiICIkMSIgMj4vZGV2L251bGxgCisgICAgaWYgdGVzdCAteiAiJG1ham1p
biI7IHRoZW4KKwllY2hvICJDb3VsZCBub3QgZmluZCBkZXZpY2UgZm9yICQxIiAyPiYxCisJZXhp
dCAxCisgICAgZmkKKworICAgIGVjaG8gIiRtYWptaW4iCit9CisKKyMgVXNhZ2U6IGZpbmRfbWFw
cGVyX2RldmljZSBmaWxlCisjIEZpbmQgYSBmaWxlIGluIC9kZXYvbWFwcGVyIHdpdGggdGhlIHNh
bWUgbWFqb3I6bWlub3IgYXMgdGhlIHNwZWNpZmllZCBub2RlLgorZmluZF9tYXBwZXJfZGV2aWNl
KCkgeworICAgIGlmIFsgLWIgIiQxIiBdOyB0aGVuCisJZGV2PSIkMSIKKyAgICBlbHNlCisJbW50
cG50PWBlY2hvICIkMSIgfCBzZWQgJ3MsLyxcXFxcLyxnJ2AKKwlkZXY9YGF3ayAnKCQyIH4gLyck
bW50cG50Jy8pIHsgcHJpbnQgJDEgfScgL2V0Yy9tdGFiYAorICAgIGZpCisgICAgaWYgdGVzdCAt
eiAiJGRldiI7IHRoZW4KKwllY2hvICJDb3VsZCBub3QgZmluZCBkZXZpY2UgZm9yICQxIiAyPiYx
CisJZXhpdCAxCisgICAgZmkKKwkKKyAgICBtYWptaW49YHN0YXRfZGV2aWNlICRkZXZgCisgICAg
Zm9yIHggaW4gL2Rldi9tYXBwZXIvKiA7IGRvCisJZGV2bWFqbWluPWBzdGF0X2RldmljZSAiJHgi
YAorCWlmIFsgIiRtYWptaW4iID09ICIkZGV2bWFqbWluIiBdOyB0aGVuCisJICAgIGVjaG8gIiR4
IgorCSAgICByZXR1cm4gMAorCWZpCisgICAgZG9uZQorICAgIHJldHVybiAxCit9CisKICMgVXNh
Z2U6IGZpbmRfZGV2aWNlIGZpbGUKICMgRmluZCBibG9jayBkZXZpY2Ugb24gd2hpY2ggdGhlIGZp
bGUgcmVzaWRlcy4KIGZpbmRfZGV2aWNlICgpIHsKICAgICAjIEZvciBub3csIHRoaXMgdXNlcyB0
aGUgcHJvZ3JhbSBgZGYnIHRvIGdldCB0aGUgZGV2aWNlIG5hbWUsIGJ1dCBpcwogICAgICMgdGhp
cyByZWFsbHkgcG9ydGFibGU/Ci0gICAgdG1wX2ZuYW1lPWBkZiAkMS8gfCBzZWQgLW4gJ3MlLipc
KC9kZXYvW14gCV0qXCkuKiVcMSVwJ2AKKyAgICB0bXBfZm5hbWU9YGRmICQxLyB8IGF3ayAnL1wv
ZGV2XC98TEFCRUw9fFVVSUQ9L3sgcHJpbnQgJDEgfSdgCisKKyAgICBpZiBlY2hvICIkdG1wX2Zu
YW1lIiB8IGdyZXAgLXEgTEFCRUw9IDsgdGhlbgorCWxhYmVsPWBlY2hvICIkdG1wX2ZuYW1lIiB8
IHNlZCAtZSBzLy4qPS8vYAorCXRtcF9mbmFtZT1gcmVhZGxpbmsgLWYgL2Rldi9kaXNrL2J5LWxh
YmVsLyRsYWJlbGAKKyAgICBmaQkKKyAgICBpZiBlY2hvICIkdG1wX2ZuYW1lIiB8IGdyZXAgLXEg
VVVJRD0gOyB0aGVuCisJdXVpZD1gZWNobyAiJHRtcF9mbmFtZSIgfCBzZWQgLWUgcy8uKj0vL2AK
Kwl0bXBfZm5hbWU9YHJlYWRsaW5rIC1mIC9kZXYvZGlzay9ieS11dWlkLyR1dWlkYAorICAgIGZp
CiAKICAgICBpZiB0ZXN0IC16ICIkdG1wX2ZuYW1lIjsgdGhlbgogCWVjaG8gIkNvdWxkIG5vdCBm
aW5kIGRldmljZSBmb3IgJDEiIDI+JjEKIAlleGl0IDEKICAgICBmaQogCi0JdG1wX2ZuYW1lPWBy
ZXNvbHZlX3N5bWxpbmsgJHRtcF9mbmFtZWAKKyAgICByZXRfZm5hbWU9YHJlc29sdmVfc3ltbGlu
ayAkdG1wX2ZuYW1lYAorICAgIHRtcF9mbmFtZT1gZmluZF9tYXBwZXJfZGV2aWNlICRyZXRfZm5h
bWVgCisgICAgaWYgdGVzdCAtbiAiJHRtcF9mbmFtZSI7IHRoZW4KKwlyZXRfZm5hbWU9IiR0bXBf
Zm5hbWUiCisgICAgZmkKIAotICAgIGVjaG8gIiR0bXBfZm5hbWUiCisgICAgZWNobyAiJHJldF9m
bmFtZSIKKyAgICByZXR1cm4gMAogfQogCisKK2R1bXBfYm9vdF9ibG9jayAoKSB7CisgICAgc3lu
YworICAgICRncnViX3NoZWxsIC0tYmF0Y2ggJG5vX2Zsb3BweSAtLWRldmljZS1tYXA9JGRldmlj
ZV9tYXAgPDxFT0YgPiRsb2dfZmlsZQorZHVtcCAke3Jvb3RfZHJpdmV9JHt0bXB9ICR7aW1nX2Zp
bGV9CitxdWl0CitFT0YKK30KKworCitpbnN0YWxsX2Jvb3RfYmxvY2sgKCkgeworICAgICMgQmVm
b3JlIGFsbCBpbnZvY2F0aW9ucyBvZiB0aGUgZ3J1YiBzaGVsbCwgY2FsbCBzeW5jIHRvIG1ha2Ug
c3VyZQorICAgICMgdGhlIHJhdyBkZXZpY2UgaXMgaW4gc3luYyB3aXRoIGFueSBidWZmZXJyaW5n
IGluIGZpbGVzeXN0ZW1zLgorICAgIHN5bmMKKworICAgICMgTm93IHBlcmZvcm0gdGhlIGluc3Rh
bGxhdGlvbi4KKyAgICAkZ3J1Yl9zaGVsbCAtLWJhdGNoICRub19mbG9wcHkgLS1kZXZpY2UtbWFw
PSRkZXZpY2VfbWFwIDw8RU9GID4+JGxvZ19maWxlCityb290ICQxCitzZXR1cCAkZm9yY2VfbGJh
IC0tc3RhZ2UyPSRncnViZGlyL3N0YWdlMiAtLXByZWZpeD0kZ3J1Yl9wcmVmaXggJDIKK3F1aXQK
K0VPRgorfQorCisKICMgQ2hlY2sgdGhlIGFyZ3VtZW50cy4KIGZvciBvcHRpb24gaW4gIiRAIjsg
ZG8KICAgICBjYXNlICIkb3B0aW9uIiBpbgpAQCAtMjkzLDYgKzQxOCwxNCBAQCBlc2FjCiBncnVi
ZGlyPSR7Ym9vdGRpcn0vZ3J1YgogZGV2aWNlX21hcD0ke2dydWJkaXJ9L2RldmljZS5tYXAKIAor
aWYgWyAiJHJlY2hlY2siID09ICJ5ZXMiIF07IHRoZW4KKyAgICBpZiBncmVwICdtYXBwZXInICR7
ZGV2aWNlX21hcH0gPi9kZXYvbnVsbDsgdGhlbgorCWVjaG8gJ2dydWItaW5zdGFsbCBkb2VzIG5v
dCBzdXBwb3J0IHJlcHJvYmluZyBvZiBkZXZpY2UubWFwIHdoZW4nIDE+JjIKKwllY2hvICd1c2lu
ZyBhIGRldmljZS1tYXBwZXIgYmFzZWQgYm9vdCBkZXZpY2UuJyAxPiYyCisJZXhpdCAxCisgICAg
ZmkKK2ZpCisKICMgQ2hlY2sgaWYgR1JVQiBpcyBpbnN0YWxsZWQuCiAjIFRoaXMgaXMgbmVjZXNz
YXJ5LCBiZWNhdXNlIHRoZSB1c2VyIGNhbiBzcGVjaWZ5ICJncnViIC0tcmVhZC1vbmx5Ii4KIHNl
dCAkZ3J1Yl9zaGVsbCBkdW1teQpAQCAtMzI2LDcgKzQ1OSw3IEBAIHRlc3QgLWQgIiRncnViZGly
IiB8fCBta2RpciAiJGdydWJkaXIiIHx8IGV4aXQgMQogCiAjIElmIC0tcmVjaGVjayBpcyBzcGVj
aWZpZWQsIHJlbW92ZSB0aGUgZGV2aWNlIG1hcCwgaWYgcHJlc2VudC4KIGlmIHRlc3QgJHJlY2hl
Y2sgPSB5ZXM7IHRoZW4KLSAgICBybSAtZiAkZGV2aWNlX21hcAorICAgIG12ICRkZXZpY2VfbWFw
ICR7ZGV2aWNlX21hcH0uYmFja3VwCiBmaQogCiAjIENyZWF0ZSB0aGUgZGV2aWNlIG1hcCBmaWxl
IGlmIGl0IGlzIG5vdCBwcmVzZW50LgpAQCAtMzM2LDYgKzQ2OSwxMCBAQCBlbHNlCiAgICAgIyBD
cmVhdGUgYSBzYWZlIHRlbXBvcmFyeSBmaWxlLgogICAgIHRlc3QgLW4gIiRta2xvZyIgJiYgbG9n
X2ZpbGU9YCRta2xvZ2AKIAorICAgICMgQmVmb3JlIGFsbCBpbnZvY2F0aW9ucyBvZiB0aGUgZ3J1
YiBzaGVsbCwgY2FsbCBzeW5jIHRvIG1ha2Ugc3VyZQorICAgICMgdGhlIHJhdyBkZXZpY2UgaXMg
aW4gc3luYyB3aXRoIGFueSBidWZmZXJyaW5nIGluIGZpbGVzeXN0ZW1zLgorICAgIHN5bmMKKyAK
ICAgICAkZ3J1Yl9zaGVsbCAtLWJhdGNoICRub19mbG9wcHkgLS1kZXZpY2UtbWFwPSRkZXZpY2Vf
bWFwIDw8RU9GID4kbG9nX2ZpbGUKIHF1aXQKIEVPRgpAQCAtMzUxLDcgKzQ4OCwyMiBAQCBmaQog
dG1wPWBzZWQgLW4gJy9eKFtmaF1kWzAtOV0qKS9zL1woXiguKilcKS4qL1wxL3AnICRkZXZpY2Vf
bWFwIFwKICAgICB8IHNvcnQgfCB1bmlxIC1kIHwgc2VkIC1uIDFwYAogaWYgdGVzdCAtbiAiJHRt
cCI7IHRoZW4KLSAgICBlY2hvICJUaGUgZHJpdmUgJHRtcCBpcyBkZWZpbmVkIG11bHRpcGxlIHRp
bWVzIGluIHRoZSBkZXZpY2UgbWFwICRkZXZpY2VfbWFwIiAxPiYyCisgICAgZWNobyAiVGhlIGRy
aXZlICR0bXAgaXMgZGVmaW5lZCBtdWx0aXBsZSB0aW1lcyBpbiB0aGUgbmV3IGRldmljZSBtYXAu
IiAxPiYyCisgICAgaWYgdGVzdCAkcmVjaGVjayA9IHllczsgdGhlbgorICAgICAgICBlY2hvICJS
ZXZlcnRpbmcgdG8gYmFja2VkIHVwIGNvcHkuIiAxPiYyCisgICAgICAgIG12ICR7ZGV2aWNlX21h
cH0uYmFja3VwICRkZXZpY2VfbWFwCisgICAgZmkKKyAgICBleGl0IDEKK2ZpCisKKyMgTWFrZSBz
dXJlIGRldmljZS5tYXAgaGFzIGF0IGxlYXN0IG9uZSBoZCBkZXZpY2UKK2dyZXAgLXEgIl4oaGRb
MC05XVwrKSIgJGRldmljZV9tYXAKK2lmIFsgIngkPyIgIT0gIngwIiBdOyB0aGVuCisgICAgZWNo
byAiTm8gc3VpdGFibGUgZHJpdmUgd2FzIGZvdW5kIGluIHRoZSBnZW5lcmF0ZWQgZGV2aWNlIG1h
cC4iIDE+JjIKKyAgICBpZiB0ZXN0ICRyZWNoZWNrID0geWVzOyB0aGVuCisgICAgICAgIGVjaG8g
IlJldmVydGluZyB0byBiYWNrZWQgdXAgY29weS4iIDE+JjIKKyAgICAgICAgbXYgJHtkZXZpY2Vf
bWFwfS5iYWNrdXAgJGRldmljZV9tYXAKKyAgICBmaQogICAgIGV4aXQgMQogZmkKIApAQCAtMzU5
LDIzICs1MTEsMzQgQEAgZmkKIGNhc2UgIiRpbnN0YWxsX2RldmljZSIgaW4KIC9kZXYvKikKICAg
ICBpbnN0YWxsX2RldmljZT1gcmVzb2x2ZV9zeW1saW5rICIkaW5zdGFsbF9kZXZpY2UiYAotICAg
IGluc3RhbGxfZHJpdmU9YGNvbnZlcnQgIiRpbnN0YWxsX2RldmljZSJgCi0gICAgIyBJIGRvbid0
IGtub3cgd2h5LCBidXQgc29tZSBzaGVsbHMgd291bGRuJ3QgZGllIGlmIGV4aXQgaXMKLSAgICAj
IGNhbGxlZCBpbiBhIGZ1bmN0aW9uLgotICAgIGlmIHRlc3QgIngkaW5zdGFsbF9kcml2ZSIgPSB4
OyB0aGVuCisgICAgZm9yIGluc3RhbGxfZHJpdmUgaW4gYGZpbmRfcmVhbF9kZXZzICRpbnN0YWxs
X2RldmljZWAgOyBkbworCWluc3RhbGxfZHJpdmU9YGNvbnZlcnQgJGluc3RhbGxfZHJpdmVgCisJ
aWYgaXNfcmFpZDFfZGV2aWNlICRpbnN0YWxsX2RldmljZTsgdGhlbgorCQlpbnN0YWxsX2RyaXZl
PWBlY2hvICRpbnN0YWxsX2RyaXZlIHwgc2VkICdzLyxbMC05XSopLykvJ2AKKwlmaQorCWlmIFsg
IngkaW5zdGFsbF9kcml2ZSIgPSAieCIgXTsgdGhlbgorCSAgICBleGl0IDEKKwlmaQorCWluc3Rh
bGxfZHJpdmVzPSIke2luc3RhbGxfZHJpdmVzfSAke2luc3RhbGxfZHJpdmV9IgorICAgIGRvbmUK
KyAgICB1bnNldCBpbnN0YWxsX2RyaXZlCisJCisgICAgaWYgdGVzdCAieCRpbnN0YWxsX2RyaXZl
cyIgPSB4IDsgdGhlbgogCWV4aXQgMQogICAgIGZpIDs7CiBcKFtoZl1kWzAtOV0qXCkpCi0gICAg
aW5zdGFsbF9kcml2ZT0iJGluc3RhbGxfZGV2aWNlIiA7OworICAgIGluc3RhbGxfZHJpdmVzPSIk
aW5zdGFsbF9kZXZpY2UiIDs7CiBbaGZdZFswLTldKikKICAgICAjIFRoZSBHUlVCIGZvcm1hdCB3
aXRoIG5vIHBhcmVudGhlc2lzLgotICAgIGluc3RhbGxfZHJpdmU9IigkaW5zdGFsbF9kZXZpY2Up
IiA7OworICAgIGluc3RhbGxfZHJpdmVzPSIoJGluc3RhbGxfZGV2aWNlKSIgOzsKICopCiAgICAg
ZWNobyAiRm9ybWF0IG9mIGluc3RhbGxfZGV2aWNlIG5vdCByZWNvZ25pemVkLiIgMT4mMgogICAg
IHVzYWdlCiAgICAgZXhpdCAxIDs7CiBlc2FjCiAKK3Vuc2V0IGluc3RhbGxfZGV2aWNlCisKICMg
R2V0IHRoZSByb290IGRyaXZlLgogcm9vdF9kZXZpY2U9YGZpbmRfZGV2aWNlICR7cm9vdGRpcn1g
CiBib290ZGlyX2RldmljZT1gZmluZF9kZXZpY2UgJHtib290ZGlyfWAKQEAgLTM4NywxNCArNTUw
LDcgQEAgaWYgdGVzdCAieCRyb290X2RldmljZSIgIT0gIngkYm9vdGRpcl9kZXZpY2UiOyB0aGVu
CiAgICAgZ3J1Yl9wcmVmaXg9Ii9ncnViIgogZmkKIAotIyBDb252ZXJ0IHRoZSByb290IGRldmlj
ZSB0byBhIEdSVUIgZHJpdmUuCi1yb290X2RyaXZlPWBjb252ZXJ0ICIkcm9vdF9kZXZpY2UiYAot
aWYgdGVzdCAieCRyb290X2RyaXZlIiA9IHg7IHRoZW4KLSAgICBleGl0IDEKLWZpCi0KLSMgQ2hl
Y2sgaWYgdGhlIHJvb3QgZGlyZWN0b3J5IGV4aXN0cyBpbiB0aGUgc2FtZSBkZXZpY2UgYXMgdGhl
IGdydWIKLSMgZGlyZWN0b3J5LgorIyBDaGVjayBpZiB0aGUgcm9vdCBkaXJlY3RvcnkgZXhpc3Rz
IGluIHRoZSBzYW1lIGRldmljZSBhcyB0aGUgZ3J1YiBkaXJlY3RvcnkuCiBncnViZGlyX2Rldmlj
ZT1gZmluZF9kZXZpY2UgJHtncnViZGlyfWAKIAogaWYgdGVzdCAieCRncnViZGlyX2RldmljZSIg
IT0gIngkcm9vdF9kZXZpY2UiOyB0aGVuCkBAIC00MDYsMTQgKzU2MiwxOSBAQCBFT0YKICAgICBl
eGl0IDEKIGZpCiAKLSMgQ29weSB0aGUgR1JVQiBpbWFnZXMgdG8gdGhlIEdSVUIgZGlyZWN0b3J5
LgotZm9yIGZpbGUgaW4gJHtncnViZGlyfS9zdGFnZTEgJHtncnViZGlyfS9zdGFnZTIgJHtncnVi
ZGlyfS8qc3RhZ2UxXzU7IGRvCi0gICAgcm0gLWYgJGZpbGUgfHwgZXhpdCAxCi1kb25lCi1mb3Ig
ZmlsZSBpbiBcCi0gICAgJHtwa2dsaWJkaXJ9L3N0YWdlMSAke3BrZ2xpYmRpcn0vc3RhZ2UyICR7
cGtnbGliZGlyfS8qc3RhZ2UxXzU7IGRvCi0gICAgY3AgLWYgJGZpbGUgJHtncnViZGlyfSB8fCBl
eGl0IDEKLWRvbmUKKyMgRkhTIHNheXMgdGhhdCAvdXNyL3NoYXJlIGlzIHVzZWQgZm9yIGFyY2hp
dGVjdHVyZSBpbmRlcGVuZGVudCBkYXRhLAorIyBzbyBhbGwgc3RhZ2UtZmlsZXMgYXJlIGRpcmVj
dGx5IGluc3RhbGxlZCB0byAvdXNyL2xpYi9ncnViLgorIyBUaGVyZWZvciB0aGlzIHBhcnQgaXMg
bm8gbG9uZ2VyIG5lZWRlZC4KKyMgPC0tY3V0X2hlcmUtLT4gCisjIyBDb3B5IHRoZSBHUlVCIGlt
YWdlcyB0byB0aGUgR1JVQiBkaXJlY3RvcnkuCisjZm9yIGZpbGUgaW4gJHtncnViZGlyfS9zdGFn
ZTEgJHtncnViZGlyfS9zdGFnZTIgJHtncnViZGlyfS8qc3RhZ2UxXzU7IGRvCisjICAgIHJtIC1m
ICRmaWxlIHx8IGV4aXQgMQorI2RvbmUKKyNmb3IgZmlsZSBpbiBcCisjICAgICR7cGtnbGliZGly
fS9zdGFnZTEgJHtwa2dsaWJkaXJ9L3N0YWdlMiAke3BrZ2xpYmRpcn0vKnN0YWdlMV81OyBkbwor
IyAgICBjcCAtZiAkZmlsZSAke2dydWJkaXJ9IHx8IGV4aXQgMQorI2RvbmUKKyMgPC0tdW5jdXQt
LT4KIAogIyBNYWtlIGEgZGVmYXVsdCBmaWxlLgogJHtncnViX3NldF9kZWZhdWx0fSAtLXJvb3Qt
ZGlyZWN0b3J5PSR7cm9vdGRpcn0gZGVmYXVsdApAQCAtNDIyLDI1ICs1ODMsMzMgQEAgJHtncnVi
X3NldF9kZWZhdWx0fSAtLXJvb3QtZGlyZWN0b3J5PSR7cm9vdGRpcn0gZGVmYXVsdAogdGVzdCAt
biAiJG1raW1nIiAmJiBpbWdfZmlsZT1gJG1raW1nYAogdGVzdCAtbiAiJG1rbG9nIiAmJiBsb2df
ZmlsZT1gJG1rbG9nYAogCisjIFRoZXJlJ3Mgbm90IGEgcmVhbCByb290IGRldmljZSwgc28ganVz
dCBwaWNrIHRoZSBmaXJzdAoraWYgaXNfcmFpZDFfZGV2aWNlICRyb290X2RldmljZSA7IHRoZW4K
KyAgICByb290X2RldmljZT1gZmluZF9yZWFsX2RldnMgJHJvb3RfZGV2aWNlIHwgYXdrICd7cHJp
bnQgJDF9J2AKK2ZpCisKKyMgQ29udmVydCB0aGUgcm9vdCBkZXZpY2V0byBhIEdSVUIgZHJpdmUu
Cityb290X2RyaXZlPWBjb252ZXJ0ICIkcm9vdF9kZXZpY2UiYAoraWYgWyAieCRyb290X2RyaXZl
IiA9IHggXTsgdGhlbgorICAgIGV4aXQgMQorZmkKKwogZm9yIGZpbGUgaW4gJHtncnViZGlyfS9z
dGFnZTEgJHtncnViZGlyfS9zdGFnZTIgJHtncnViZGlyfS8qc3RhZ2UxXzU7IGRvCiAgICAgY291
bnQ9NQogICAgIHRtcD1gZWNobyAkZmlsZSB8IHNlZCAic3xeJHtncnViZGlyfXwke2dydWJfcHJl
Zml4fXwiYAogICAgIHdoaWxlIHRlc3QgJGNvdW50IC1ndCAwOyBkbwotCSRncnViX3NoZWxsIC0t
YmF0Y2ggJG5vX2Zsb3BweSAtLWRldmljZS1tYXA9JGRldmljZV9tYXAgPDxFT0YgPiRsb2dfZmls
ZQotZHVtcCAke3Jvb3RfZHJpdmV9JHt0bXB9ICR7aW1nX2ZpbGV9Ci1xdWl0Ci1FT0YKLQlpZiBn
cmVwICJFcnJvciBbMC05XSo6ICIgJGxvZ19maWxlID4vZGV2L251bGw7IHRoZW4KLQkgICAgOgot
CWVsaWYgY21wICRmaWxlICRpbWdfZmlsZSA+L2Rldi9udWxsOyB0aGVuCi0JICAgIGJyZWFrCi0J
ZmkKLQlzbGVlcCAxCi0JY291bnQ9YGV4cHIgJGNvdW50IC0gMWAgICAgCisgICAgICAgIGR1bXBf
Ym9vdF9ibG9jayAkcm9vdF9kcml2ZSAkaW1nX2ZpbGUKKyAgICAgICAgaWYgZ3JlcCAiRXJyb3Ig
WzAtOV0qOiAiICRsb2dfZmlsZSA+L2Rldi9udWxsOyB0aGVuCisgICAgCToKKyAgICAgICAgZWxp
ZiBjbXAgJGZpbGUgJGltZ19maWxlID4vZGV2L251bGw7IHRoZW4KKyAgICAJYnJlYWsKKyAgICAg
ICAgZmkKKyAgICAgICAgc2xlZXAgMQorICAgICAgICBjb3VudD1gZXhwciAkY291bnQgLSAxYCAg
ICAKICAgICBkb25lCiAgICAgaWYgdGVzdCAkY291bnQgLWVxIDA7IHRoZW4KLQllY2hvICJUaGUg
ZmlsZSAkZmlsZSBub3QgcmVhZCBjb3JyZWN0bHkuIiAxPiYyCi0JZXhpdCAxCisgICAgICAgIGVj
aG8gIlRoZSBmaWxlICRmaWxlIG5vdCByZWFkIGNvcnJlY3RseS4iIDE+JjIKKyAgICAgICAgZXhp
dCAxCiAgICAgZmkKIGRvbmUKIApAQCAtNDUwLDE3ICs2MTksMjIgQEAgcm0gLWYgJGxvZ19maWxl
CiAjIENyZWF0ZSBhIHNhZmUgdGVtcG9yYXJ5IGZpbGUuCiB0ZXN0IC1uICIkbWtsb2ciICYmIGxv
Z19maWxlPWAkbWtsb2dgCiAKLSMgTm93IHBlcmZvcm0gdGhlIGluc3RhbGxhdGlvbi4KLSRncnVi
X3NoZWxsIC0tYmF0Y2ggJG5vX2Zsb3BweSAtLWRldmljZS1tYXA9JGRldmljZV9tYXAgPDxFT0Yg
PiRsb2dfZmlsZQotcm9vdCAkcm9vdF9kcml2ZQotc2V0dXAgJGZvcmNlX2xiYSAtLXN0YWdlMj0k
Z3J1YmRpci9zdGFnZTIgLS1wcmVmaXg9JGdydWJfcHJlZml4ICRpbnN0YWxsX2RyaXZlCi1xdWl0
Ci1FT0YKK2ZvciBpbnN0YWxsX2RyaXZlIGluICRpbnN0YWxsX2RyaXZlczsgZG8gCisgICAgIyBD
b252ZXJ0IHRoZSByb290IGRldmljZXRvIGEgR1JVQiBkcml2ZS4KKyAgICByb290X2RyaXZlPWBj
b252ZXJ0ICIkcm9vdF9kZXZpY2UiYAorICAgIGlmIFsgIngkcm9vdF9kcml2ZSIgPSB4IF07IHRo
ZW4KKwlleGl0IDEKKyAgICBmaQorICAgIGluc3RhbGxfYm9vdF9ibG9jayAkcm9vdF9kcml2ZSAk
aW5zdGFsbF9kcml2ZQorZG9uZQogCi1pZiBncmVwICJFcnJvciBbMC05XSo6ICIgJGxvZ19maWxl
ID4vZGV2L251bGwgfHwgdGVzdCAkZGVidWcgPSB5ZXM7IHRoZW4KK2lmIGdyZXAgIkVycm9yIFsw
LTldKjogIiAkbG9nX2ZpbGUgPi9kZXYvbnVsbCA7IHRoZW4KICAgICBjYXQgJGxvZ19maWxlIDE+
JjIKICAgICBleGl0IDEKIGZpCitpZiB0ZXN0ICRkZWJ1ZyA9IHllczsgdGhlbgorICAgIGNhdCAk
bG9nX2ZpbGUgMT4mMgorZmkKIAogcm0gLWYgJGxvZ19maWxlCiAKZGlmZiAtLWdpdCBhL3V0aWwv
Z3J1Yi1tZDUtY3J5cHQuaW4gYi91dGlsL2dydWItbWQ1LWNyeXB0LmluCmluZGV4IGMwMzBjODcu
LmUzMjc2NzYgMTAwNjQ0Ci0tLSBhL3V0aWwvZ3J1Yi1tZDUtY3J5cHQuaW4KKysrIGIvdXRpbC9n
cnViLW1kNS1jcnlwdC5pbgpAQCAtODgsNyArODgsNyBAQCBpZiB0ZXN0ICJ4JHBhc3N3b3JkIiAh
PSAieCRwYXNzd29yZDIiOyB0aGVuCiBmaQogCiAjIFJ1biB0aGUgZ3J1YiBzaGVsbC4KLSRncnVi
X3NoZWxsIC0tYmF0Y2ggLS1kZXZpY2UtbWFwPS9kZXYvbnVsbCA8PEVPRiBcCiskZ3J1Yl9zaGVs
bCAtLWJhdGNoIDw8RU9GIFwKICAgICB8IGdyZXAgIl5FbmNyeXB0ZWQ6ICIgfCBzZWQgJ3MvXkVu
Y3J5cHRlZDogLy8nCiBtZDVjcnlwdAogJHBhc3N3b3JkCmRpZmYgLS1naXQgYS91dGlsL21iY2hr
LmMgYi91dGlsL21iY2hrLmMKaW5kZXggZmQ3MTg1OC4uNDE1NzJmYyAxMDA2NDQKLS0tIGEvdXRp
bC9tYmNoay5jCisrKyBiL3V0aWwvbWJjaGsuYwpAQCAtNTksNyArNTksOSBAQCBjaGVja19tdWx0
aWJvb3QgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBGSUxFICpmcCkKICAgaW50IGk7CiAgIGNoYXIg
YnVmWzgxOTJdOwogCi0gIGlmIChmcmVhZCAoYnVmLCAxLCA4MTkyLCBmcCkgPCAwKQorICBmcmVh
ZCAoYnVmLCAxLCA4MTkyLCBmcCk7CisgIAorICBpZiAoZmVycm9yKGZwKSkKICAgICB7CiAgICAg
ICBmcHJpbnRmIChzdGRlcnIsICIlczogUmVhZCBlcnJvci5cbiIsIGZpbGVuYW1lKTsKICAgICAg
IHJldHVybiAwOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>