<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>158907</bug_id>
          
          <creation_ts>2016-06-18 14:05:38 -0700</creation_ts>
          <short_desc>Update Brotli to version 0.4.0</short_desc>
          <delta_ts>2016-06-19 23:56:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugzilla.mozilla.org/show_bug.cgi?id=1280047</see_also>
          <bug_file_loc>https://github.com/google/brotli/releases/tag/v0.4.0</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Frédéric Wang Nélar">fred.wang</reporter>
          <assigned_to name="Frédéric Wang Nélar">fred.wang</assigned_to>
          <cc>bugs-noreply</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1203595</commentid>
    <comment_count>0</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-06-18 14:05:38 -0700</bug_when>
    <thetext>A new version of Brotli was released this week:

https://github.com/google/brotli/releases/tag/v0.4.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203596</commentid>
    <comment_count>1</comment_count>
      <attachid>281619</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-06-18 14:16:44 -0700</bug_when>
    <thetext>Created attachment 281619
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203706</commentid>
    <comment_count>2</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-06-19 23:56:35 -0700</bug_when>
    <thetext>Committed r202225: &lt;http://trac.webkit.org/changeset/202225&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281619</attachid>
            <date>2016-06-18 14:16:44 -0700</date>
            <delta_ts>2016-06-18 17:36:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158907-20160618231638.patch</filename>
            <type>text/plain</type>
            <size>74457</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9DaGFuZ2VMb2cKaW5kZXggYmE4NTQ3Y2Nh
Mzg1MTJiZjc3ZTAzZjRmYmYwMmE4NTU4YjAwZmUzMi4uMjhhYzIzMTc3N2VkMDBlMDZlYmM1Yzhl
NGZmM2QwY2Y5NjBmNDNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE2
LTA2LTE4ICBGcmVkZXJpYyBXYW5nICA8ZnJlZC53YW5nQGZyZWUuZnI+CisKKyAgICAgICAgVXBk
YXRlIEJyb3RsaSB0byB2ZXJzaW9uIDAuNC4wCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg5MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGJyb3RsaS9SRUFETUUud2Via2l0OgorICAgICAgICAqIGJy
b3RsaS9kZWMvYml0X3JlYWRlci5oOgorICAgICAgICAqIGJyb3RsaS9kZWMvZGVjb2RlLmM6Cisg
ICAgICAgICogYnJvdGxpL2RlYy9kZWNvZGUuaDoKKyAgICAgICAgKiBicm90bGkvZGVjL2h1ZmZt
YW4uYzoKKyAgICAgICAgKiBicm90bGkvZGVjL2h1ZmZtYW4uaDoKKyAgICAgICAgKiBicm90bGkv
ZGVjL3BvcnQuaDoKKyAgICAgICAgKEJyb3RsaUR1bXApOgorICAgICAgICAqIGJyb3RsaS9kZWMv
c3RhdGUuYzoKKyAgICAgICAgKiBicm90bGkvZGVjL3N0YXRlLmg6CisKIDIwMTYtMDUtMjMgIE1p
Y2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIHdvZmYy
X2RlYy5jYyB0cmlnZ2VycyAtV3NpZ24tY29tcGFyZSwgLVd1bnVzZWQtYnV0LXNldC12YXJpYWJs
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvYnJvdGxpL1JFQURNRS53ZWJraXQgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9icm90bGkvUkVBRE1FLndlYmtpdAppbmRleCBmOGQ0NGU1N2YxZTMz
ZWZlODljZDMyM2ExYzMzODM5MDI2ZGFiM2ViLi40NzRhZmEyZTQwMTFhMDgxOGJiMmY2ZTIyZTYw
MjkwMzhkNGFmOGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9icm90bGkvUkVBRE1F
LndlYmtpdAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9icm90bGkvUkVBRE1FLndlYmtpdApAQCAt
MTQsNCArMTQsNCBAQCBUaGUgaW4tdHJlZSBjb3B5IGlzIHVwZGF0ZWQgYnkgcnVubmluZwogICBz
aCB1cGRhdGUuc2gKIGZyb20gd2l0aGluIHRoZSBtb2R1bGVzL2Jyb3RsaSBkaXJlY3RvcnkuCiAK
LUN1cnJlbnQgdmVyc2lvbjogW2NvbW1pdCBjZmJhMmRiN2IzZjc4ZDYxMDhkMjIyOGE1MzVlZjRm
OTZhYjA4NmZiXS4KK0N1cnJlbnQgdmVyc2lvbjogW2NvbW1pdCAyOWQzMWQ1OTIxYjBhMmIzMjNh
YzI0ZTdmN2QwY2RjOWEzYzBkZDA4XS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2Jy
b3RsaS9kZWMvYml0X3JlYWRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvYnJvdGxpL2RlYy9iaXRf
cmVhZGVyLmgKaW5kZXggZTc3ZDExNDMzMjY2MGEwM2YyNTRkYTY4ZjM2Y2NkMDkxMjVhNzM5MC4u
NzA5NmFmYWEzZjc3Y2Q0YjgzNDAxMjhiMjJlNjRlZmMzNGZiZjFjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvYnJvdGxpL2RlYy9iaXRfcmVhZGVyLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvYnJvdGxpL2RlYy9iaXRfcmVhZGVyLmgKQEAgLTE0LDEwICsxNCw2IEBACiAjaW5jbHVk
ZSAiLi9wb3J0LmgiCiAjaW5jbHVkZSAiLi90eXBlcy5oIgogCi0jaWZkZWYgQlJPVExJX0RFQ09E
RV9ERUJVRwotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jZW5kaWYKLQogI2lmIGRlZmluZWQoX19jcGx1
c3BsdXMpIHx8IGRlZmluZWQoY19wbHVzcGx1cykKIGV4dGVybiAiQyIgewogI2VuZGlmCkBAIC02
NiwxMyArNjIsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgewogfSBCcm90bGlCaXRSZWFkZXJTdGF0ZTsK
IAogLyogSW5pdGlhbGl6ZXMgdGhlIGJpdHJlYWRlciBmaWVsZHMuICovCi12b2lkIEJyb3RsaUlu
aXRCaXRSZWFkZXIoQnJvdGxpQml0UmVhZGVyKiBjb25zdCBicik7CitCUk9UTElfSU5URVJOQUwg
dm9pZCBCcm90bGlJbml0Qml0UmVhZGVyKEJyb3RsaUJpdFJlYWRlciogY29uc3QgYnIpOwogCiAv
KiBFbnN1cmVzIHRoYXQgYWNjdW11bGF0b3IgaXMgbm90IGVtcHR5LiBNYXkgY29uc3VtZSBvbmUg
Ynl0ZSBvZiBpbnB1dC4KICAgIFJldHVybnMgMCBpZiBkYXRhIGlzIHJlcXVpcmVkIGJ1dCB0aGVy
ZSBpcyBubyBpbnB1dCBhdmFpbGFibGUuCiAgICBGb3IgQlJPVExJX0FMSUdORURfUkVBRCB0aGlz
IGZ1bmN0aW9uIGFsc28gcHJlcGFyZXMgYml0IHJlYWRlciBmb3IgYWxpZ25lZAogICAgcmVhZGlu
Zy4gKi8KLWludCBCcm90bGlXYXJtdXBCaXRSZWFkZXIoQnJvdGxpQml0UmVhZGVyKiBjb25zdCBi
cik7CitCUk9UTElfSU5URVJOQUwgaW50IEJyb3RsaVdhcm11cEJpdFJlYWRlcihCcm90bGlCaXRS
ZWFkZXIqIGNvbnN0IGJyKTsKIAogc3RhdGljIEJST1RMSV9JTkxJTkUgdm9pZCBCcm90bGlCaXRS
ZWFkZXJTYXZlU3RhdGUoCiAgICAgQnJvdGxpQml0UmVhZGVyKiBjb25zdCBmcm9tLCBCcm90bGlC
aXRSZWFkZXJTdGF0ZSogdG8pIHsKQEAgLTI5OCwxMCArMjk0LDggQEAgc3RhdGljIEJST1RMSV9J
TkxJTkUgdm9pZCBCcm90bGlCaXRSZWFkZXJVbmxvYWQoQnJvdGxpQml0UmVhZGVyKiBicikgewog
c3RhdGljIEJST1RMSV9JTkxJTkUgdm9pZCBCcm90bGlUYWtlQml0cygKICAgQnJvdGxpQml0UmVh
ZGVyKiBjb25zdCBiciwgdWludDMyX3Qgbl9iaXRzLCB1aW50MzJfdCogdmFsKSB7CiAgICp2YWwg
PSAodWludDMyX3QpQnJvdGxpR2V0Qml0c1VubWFza2VkKGJyKSAmIEJpdE1hc2sobl9iaXRzKTsK
LSNpZmRlZiBCUk9UTElfREVDT0RFX0RFQlVHCi0gIHByaW50ZigiW0Jyb3RsaVJlYWRCaXRzXSAg
JWQgJWQgJWQgdmFsOiAlNnhcbiIsCi0gICAgICAgICAoaW50KWJyLT5hdmFpbF9pbiwgKGludCli
ci0+Yml0X3Bvc18sIG5fYml0cywgKGludCkqdmFsKTsKLSNlbmRpZgorICBCUk9UTElfTE9HKCgi
W0Jyb3RsaVJlYWRCaXRzXSAgJWQgJWQgJWQgdmFsOiAlNnhcbiIsCisgICAgICAoaW50KWJyLT5h
dmFpbF9pbiwgKGludClici0+Yml0X3Bvc18sIG5fYml0cywgKGludCkqdmFsKSk7CiAgIEJyb3Rs
aURyb3BCaXRzKGJyLCBuX2JpdHMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9icm90bGkvZGVjL2RlY29kZS5jIGIvU291cmNlL1RoaXJkUGFydHkvYnJvdGxpL2RlYy9kZWNv
ZGUuYwppbmRleCBhODE3MDZiMDRkMGViMzllMjUxYjhmZGNlYzc4NmU0M2Q5M2UzNzNkLi5kMTg0
ZjI0Y2JhNWJjYTgwZjFlY2Q4MDg3YzlhYzJkM2YyMjgyNDRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9icm90bGkvZGVjL2RlY29kZS5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2Jy
b3RsaS9kZWMvZGVjb2RlLmMKQEAgLTEwLDcgKzEwLDYgQEAKICNpbmNsdWRlIDxhcm1fbmVvbi5o
PgogI2VuZGlmCiAKLSNpbmNsdWRlIDxzdGRpby5oPiAgLyogcHJpbnRmIChkZWJ1ZyBvdXRwdXQp
ICovCiAjaW5jbHVkZSA8c3RkbGliLmg+ICAvKiBmcmVlLCBtYWxsb2MgKi8KICNpbmNsdWRlIDxz
dHJpbmcuaD4gIC8qIG1lbWNweSwgbWVtc2V0ICovCiAKQEAgLTIwLDM4ICsxOSwyMCBAQAogI2lu
Y2x1ZGUgIi4vaHVmZm1hbi5oIgogI2luY2x1ZGUgIi4vcG9ydC5oIgogI2luY2x1ZGUgIi4vcHJl
Zml4LmgiCisjaW5jbHVkZSAiLi9zdGF0ZS5oIgogI2luY2x1ZGUgIi4vdHJhbnNmb3JtLmgiCiAK
ICNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKSB8fCBkZWZpbmVkKGNfcGx1c3BsdXMpCiBleHRlcm4g
IkMiIHsKICNlbmRpZgogCi0vKiBCUk9UTElfRkFJTFVSRSBtYWNybyB1bndyYXBzIHRvIEJST1RM
SV9SRVNVTFRfRVJST1IgaW4gbm9uLWRlYnVnIGJ1aWxkLiAqLwotLyogSW4gZGVidWcgYnVpbGQg
aXQgZHVtcHMgZmlsZSBuYW1lLCBsaW5lIGFuZCBwcmV0dHkgZnVuY3Rpb24gbmFtZS4gKi8KLSNp
ZiBkZWZpbmVkKF9NU0NfVkVSKSB8fCBcCi0gICghZGVmaW5lZChCUk9UTElfREVCVUcpICYmICFk
ZWZpbmVkKEJST1RMSV9ERUNPREVfREVCVUcpKQotI2RlZmluZSBCUk9UTElfRkFJTFVSRSgpIEJS
T1RMSV9SRVNVTFRfRVJST1IKLSNlbHNlCi0jZGVmaW5lIEJST1RMSV9GQUlMVVJFKCkgQnJvdGxp
RmFpbHVyZShfX0ZJTEVfXywgX19MSU5FX18sIF9fUFJFVFRZX0ZVTkNUSU9OX18pCi1zdGF0aWMg
aW5saW5lIEJyb3RsaVJlc3VsdCBCcm90bGlGYWlsdXJlKGNvbnN0IGNoYXIqIGYsIGludCBsLCBj
b25zdCBjaGFyKiBmbikgewotICBmcHJpbnRmKHN0ZGVyciwgIkVSUk9SIGF0ICVzOiVkICglcylc
biIsIGYsIGwsIGZuKTsKLSAgZmZsdXNoKHN0ZGVycik7Ci0gIHJldHVybiBCUk9UTElfUkVTVUxU
X0VSUk9SOwotfQotI2VuZGlmCisjZGVmaW5lIEJST1RMSV9GQUlMVVJFKENPREUpIChCUk9UTElf
RFVNUCgpLCBDT0RFKQogCi0jaWZkZWYgQlJPVExJX0RFQ09ERV9ERUJVRwogI2RlZmluZSBCUk9U
TElfTE9HX1VJTlQobmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gIHByaW50ZigiWyVzXSAlcyA9ICVsdVxuIiwgX19mdW5jX18sICNuYW1lLCAodW5zaWduZWQg
bG9uZykobmFtZSkpCisgIEJST1RMSV9MT0coKCJbJXNdICVzID0gJWx1XG4iLCBfX2Z1bmNfXywg
I25hbWUsICh1bnNpZ25lZCBsb25nKShuYW1lKSkpCiAjZGVmaW5lIEJST1RMSV9MT0dfQVJSQVlf
SU5ERVgoYXJyYXlfbmFtZSwgaWR4KSAgICAgICAgICAgICAgICAgICAgIFwKLSAgcHJpbnRmKCJb
JXNdICVzWyVsdV0gPSAlbHVcbiIsIF9fZnVuY19fLCAjYXJyYXlfbmFtZSwgICAgICAgICAgICAg
XAotICAgICAgICAgKHVuc2lnbmVkIGxvbmcpKGlkeCksICh1bnNpZ25lZCBsb25nKWFycmF5X25h
bWVbaWR4XSkKLSNkZWZpbmUgQlJPVExJX0xPRyh4KSBwcmludGYgeAotI2Vsc2UKLSNkZWZpbmUg
QlJPVExJX0xPR19VSU5UKG5hbWUpCi0jZGVmaW5lIEJST1RMSV9MT0dfQVJSQVlfSU5ERVgoYXJy
YXlfbmFtZSwgaWR4KQotI2RlZmluZSBCUk9UTElfTE9HKHgpCi0jZW5kaWYKKyAgQlJPVExJX0xP
RygoIlslc10gJXNbJWx1XSA9ICVsdVxuIiwgX19mdW5jX18sICNhcnJheV9uYW1lLCAgICAgICAg
XAorICAgICAgICAgKHVuc2lnbmVkIGxvbmcpKGlkeCksICh1bnNpZ25lZCBsb25nKWFycmF5X25h
bWVbaWR4XSkpCiAKIHN0YXRpYyBjb25zdCB1aW50MzJfdCBrRGVmYXVsdENvZGVMZW5ndGggPSA4
Owogc3RhdGljIGNvbnN0IHVpbnQzMl90IGtDb2RlTGVuZ3RoUmVwZWF0Q29kZSA9IDE2OwpAQCAt
ODksMTAgKzcwLDExIEBAIEJyb3RsaVN0YXRlKiBCcm90bGlDcmVhdGVTdGF0ZSgKICAgICBzdGF0
ZSA9IChCcm90bGlTdGF0ZSopYWxsb2NfZnVuYyhvcGFxdWUsIHNpemVvZihCcm90bGlTdGF0ZSkp
OwogICB9CiAgIGlmIChzdGF0ZSA9PSAwKSB7Ci0gICAgKHZvaWQpQlJPVExJX0ZBSUxVUkUoKTsK
KyAgICBCUk9UTElfRFVNUCgpOwogICAgIHJldHVybiAwOwogICB9CiAgIEJyb3RsaVN0YXRlSW5p
dFdpdGhDdXN0b21BbGxvY2F0b3JzKHN0YXRlLCBhbGxvY19mdW5jLCBmcmVlX2Z1bmMsIG9wYXF1
ZSk7CisgIHN0YXRlLT5lcnJvcl9jb2RlID0gQlJPVExJX05PX0VSUk9SOwogICByZXR1cm4gc3Rh
dGU7CiB9CiAKQEAgLTEwOCw2ICs5MCwxOCBAQCB2b2lkIEJyb3RsaURlc3Ryb3lTdGF0ZShCcm90
bGlTdGF0ZSogc3RhdGUpIHsKICAgfQogfQogCisvKiBTYXZlcyBlcnJvciBjb2RlIGFuZCBjb252
ZXJ0cyBpdCB0byBCcm90bGlSZXN1bHQgKi8KK3N0YXRpYyBCUk9UTElfTk9JTkxJTkUgQnJvdGxp
UmVzdWx0IFNhdmVFcnJvckNvZGUoCisgICAgQnJvdGxpU3RhdGUqIHMsIEJyb3RsaUVycm9yQ29k
ZSBlKSB7CisgIHMtPmVycm9yX2NvZGUgPSAoaW50KWU7CisgIHN3aXRjaCAoZSkgeworICAgIGNh
c2UgQlJPVExJX1NVQ0NFU1M6IHJldHVybiBCUk9UTElfUkVTVUxUX1NVQ0NFU1M7CisgICAgY2Fz
ZSBCUk9UTElfTkVFRFNfTU9SRV9JTlBVVDogcmV0dXJuIEJST1RMSV9SRVNVTFRfTkVFRFNfTU9S
RV9JTlBVVDsKKyAgICBjYXNlIEJST1RMSV9ORUVEU19NT1JFX09VVFBVVDogcmV0dXJuIEJST1RM
SV9SRVNVTFRfTkVFRFNfTU9SRV9PVVRQVVQ7CisgICAgZGVmYXVsdDogcmV0dXJuIEJST1RMSV9S
RVNVTFRfRVJST1I7CisgIH0KK30KKwogLyogRGVjb2RlcyBhIG51bWJlciBpbiB0aGUgcmFuZ2Ug
WzkuLjI0XSwgYnkgcmVhZGluZyAxIC0gNyBiaXRzLgogICAgUHJlY29uZGl0aW9uOiBiaXQtcmVh
ZGVyIGFjY3VtdWxhdG9yIGhhcyBhdCBsZWFzdCA3IGJpdHMuICovCiBzdGF0aWMgdWludDMyX3Qg
RGVjb2RlV2luZG93Qml0cyhCcm90bGlCaXRSZWFkZXIqIGJyKSB7CkBAIC0xMzgsMjkgKzEzMiwy
OSBAQCBzdGF0aWMgQlJPVExJX0lOTElORSB2b2lkIG1lbW1vdmUxNih1aW50OF90KiBkc3QsIHVp
bnQ4X3QqIHNyYykgewogfQogCiAvKiBEZWNvZGVzIGEgbnVtYmVyIGluIHRoZSByYW5nZSBbMC4u
MjU1XSwgYnkgcmVhZGluZyAxIC0gMTEgYml0cy4gKi8KLXN0YXRpYyBCUk9UTElfTk9JTkxJTkUg
QnJvdGxpUmVzdWx0IERlY29kZVZhckxlblVpbnQ4KEJyb3RsaVN0YXRlKiBzLAorc3RhdGljIEJS
T1RMSV9OT0lOTElORSBCcm90bGlFcnJvckNvZGUgRGVjb2RlVmFyTGVuVWludDgoQnJvdGxpU3Rh
dGUqIHMsCiAgICAgQnJvdGxpQml0UmVhZGVyKiBiciwgdWludDMyX3QqIHZhbHVlKSB7CiAgIHVp
bnQzMl90IGJpdHM7CiAgIHN3aXRjaCAocy0+c3Vic3RhdGVfZGVjb2RlX3VpbnQ4KSB7CiAgICAg
Y2FzZSBCUk9UTElfU1RBVEVfREVDT0RFX1VJTlQ4X05PTkU6CiAgICAgICBpZiAoUFJFRElDVF9G
QUxTRSghQnJvdGxpU2FmZVJlYWRCaXRzKGJyLCAxLCAmYml0cykpKSB7Ci0gICAgICAgIHJldHVy
biBCUk9UTElfUkVTVUxUX05FRURTX01PUkVfSU5QVVQ7CisgICAgICAgIHJldHVybiBCUk9UTElf
TkVFRFNfTU9SRV9JTlBVVDsKICAgICAgIH0KICAgICAgIGlmIChiaXRzID09IDApIHsKICAgICAg
ICAgKnZhbHVlID0gMDsKLSAgICAgICAgcmV0dXJuIEJST1RMSV9SRVNVTFRfU1VDQ0VTUzsKKyAg
ICAgICAgcmV0dXJuIEJST1RMSV9TVUNDRVNTOwogICAgICAgfQogICAgICAgLyogTm8gYnJlYWss
IHRyYW5zaXQgdG8gdGhlIG5leHQgc3RhdGUuICovCiAKICAgICBjYXNlIEJST1RMSV9TVEFURV9E
RUNPREVfVUlOVDhfU0hPUlQ6CiAgICAgICBpZiAoUFJFRElDVF9GQUxTRSghQnJvdGxpU2FmZVJl
YWRCaXRzKGJyLCAzLCAmYml0cykpKSB7CiAgICAgICAgIHMtPnN1YnN0YXRlX2RlY29kZV91aW50
OCA9IEJST1RMSV9TVEFURV9ERUNPREVfVUlOVDhfU0hPUlQ7Ci0gICAgICAgIHJldHVybiBCUk9U
TElfUkVTVUxUX05FRURTX01PUkVfSU5QVVQ7CisgICAgICAgIHJldHVybiBCUk9UTElfTkVFRFNf
TU9SRV9JTlBVVDsKICAgICAgIH0KICAgICAgIGlmIChiaXRzID09IDApIHsKICAgICAgICAgKnZh
bHVlID0gMTsKICAgICAgICAgcy0+c3Vic3RhdGVfZGVjb2RlX3VpbnQ4ID0gQlJPVExJX1NUQVRF
X0RFQ09ERV9VSU5UOF9OT05FOwotICAgICAgICByZXR1cm4gQlJPVExJX1JFU1VMVF9TVUNDRVNT
OworICAgICAgICByZXR1cm4gQlJPVExJX1NVQ0NFU1M7CiAgICAgICB9CiAgICAgICAvKiBVc2Ug
b3V0cHV0IHZhbHVlIGFzIGEgdGVtcG9yYXJ5IHN0b3JhZ2UuIEl0IE1VU1QgYmUgcGVyc2lzdGVk
LiAqLwogICAgICAgKnZhbHVlID0gYml0czsKQEAgLTE2OSwyNyArMTYzLDI3IEBAIHN0YXRpYyBC
Uk9UTElfTk9JTkxJTkUgQnJvdGxpUmVzdWx0IERlY29kZVZhckxlblVpbnQ4KEJyb3RsaVN0YXRl
KiBzLAogICAgIGNhc2UgQlJPVExJX1NUQVRFX0RFQ09ERV9VSU5UOF9MT05HOgogICAgICAgaWYg
KFBSRURJQ1RfRkFMU0UoIUJyb3RsaVNhZmVSZWFkQml0cyhiciwgKnZhbHVlLCAmYml0cykpKSB7
CiAgICAgICAgIHMtPnN1YnN0YXRlX2RlY29kZV91aW50OCA9IEJST1RMSV9TVEFURV9ERUNPREVf
VUlOVDhfTE9ORzsKLSAgICAgICAgcmV0dXJuIEJST1RMSV9SRVNVTFRfTkVFRFNfTU9SRV9JTlBV
VDsKKyAgICAgICAgcmV0dXJuIEJST1RMSV9ORUVEU19NT1JFX0lOUFVUOwogICAgICAgfQogICAg
ICAgKnZhbHVlID0gKDFVIDw8ICp2YWx1ZSkgKyBiaXRzOwogICAgICAgcy0+c3Vic3RhdGVfZGVj
b2RlX3VpbnQ4ID0gQlJPVExJX1NUQVRFX0RFQ09ERV9VSU5UOF9OT05FOwotICAgICAgcmV0dXJu
IEJST1RMSV9SRVNVTFRfU1VDQ0VTUzsKKyAgICAgIHJldHVybiBCUk9UTElfU1VDQ0VTUzsKIAog
ICAgIGRlZmF1bHQ6Ci0gICAgICByZXR1cm4gQlJPVExJX0ZBSUxVUkUoKTsKKyAgICAgIHJldHVy
biBCUk9UTElfRkFJTFVSRShCUk9UTElfRVJST1JfVU5SRUFDSEFCTEUpOwogICB9CiB9CiAKIC8q
IERlY29kZXMgYSBtZXRhYmxvY2sgbGVuZ3RoIGFuZCBmbGFncyBieSByZWFkaW5nIDIgLSAzMSBi
aXRzLiAqLwotc3RhdGljIEJyb3RsaVJlc3VsdCBCUk9UTElfTk9JTkxJTkUgRGVjb2RlTWV0YUJs
b2NrTGVuZ3RoKEJyb3RsaVN0YXRlKiBzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJyb3RsaUJpdFJlYWRlciogYnIpIHsKK3N0YXRp
YyBCcm90bGlFcnJvckNvZGUgQlJPVExJX05PSU5MSU5FIERlY29kZU1ldGFCbG9ja0xlbmd0aCgK
KyAgICBCcm90bGlTdGF0ZSogcywgQnJvdGxpQml0UmVhZGVyKiBicikgewogICB1aW50MzJfdCBi
aXRzOwogICBpbnQgaTsKICAgZm9yICg7OykgewogICAgIHN3aXRjaCAocy0+c3Vic3RhdGVfbWV0
YWJsb2NrX2hlYWRlcikgewogICAgICAgY2FzZSBCUk9UTElfU1RBVEVfTUVUQUJMT0NLX0hFQURF
Ul9OT05FOgogICAgICAgICBpZiAoIUJyb3RsaVNhZmVSZWFkQml0cyhiciwgMSwgJmJpdHMpKSB7
Ci0gICAgICAgICAgcmV0dXJuIEJST1RMSV9SRVNVTFRfTkVFRFNfTU9SRV9JTlBVVDsKKyAgICAg
ICAgICByZXR1cm4gQlJPVExJX05FRURTX01PUkVfSU5QVVQ7CiAgICAgICAgIH0KICAgICAgICAg
cy0+aXNfbGFzdF9tZXRhYmxvY2sgPSAodWludDhfdCliaXRzOwogICAgICAgICBzLT5tZXRhX2Js
b2NrX3JlbWFpbmluZ19sZW4gPSAwOwpAQCAtMjA0LDE4ICsxOTgsMTggQEAgc3RhdGljIEJyb3Rs
aVJlc3VsdCBCUk9UTElfTk9JTkxJTkUgRGVjb2RlTWV0YUJsb2NrTGVuZ3RoKEJyb3RsaVN0YXRl
KiBzLAogCiAgICAgICBjYXNlIEJST1RMSV9TVEFURV9NRVRBQkxPQ0tfSEVBREVSX0VNUFRZOgog
ICAgICAgICBpZiAoIUJyb3RsaVNhZmVSZWFkQml0cyhiciwgMSwgJmJpdHMpKSB7Ci0gICAgICAg
ICAgcmV0dXJuIEJST1RMSV9SRVNVTFRfTkVFRFNfTU9SRV9JTlBVVDsKKyAgICAgICAgICByZXR1
cm4gQlJPVExJX05FRURTX01PUkVfSU5QVVQ7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGJpdHMp
IHsKICAgICAgICAgICBzLT5zdWJzdGF0ZV9tZXRhYmxvY2tfaGVhZGVyID0gQlJPVExJX1NUQVRF
X01FVEFCTE9DS19IRUFERVJfTk9ORTsKLSAgICAgICAgICByZXR1cm4gQlJPVExJX1JFU1VMVF9T
VUNDRVNTOworICAgICAgICAgIHJldHVybiBCUk9UTElfU1VDQ0VTUzsKICAgICAgICAgfQogICAg
ICAgICBzLT5zdWJzdGF0ZV9tZXRhYmxvY2tfaGVhZGVyID0gQlJPVExJX1NUQVRFX01FVEFCTE9D
S19IRUFERVJfTklCQkxFUzsKICAgICAgICAgLyogTm8gYnJlYWssIHRyYW5zaXQgdG8gdGhlIG5l
eHQgc3RhdGUuICovCiAKICAgICAgIGNhc2UgQlJPVExJX1NUQVRFX01FVEFCTE9DS19IRUFERVJf
TklCQkxFUzoKICAgICAgICAgaWYgKCFCcm90bGlTYWZlUmVhZEJpdHMoYnIsIDIsICZiaXRzKSkg
ewotICAgICAgICAgIHJldHVybiBCUk9UTElfUkVTVUxUX05FRURTX01PUkVfSU5QVVQ7CisgICAg
ICAgICAgcmV0dXJuIEJST1RMSV9ORUVEU19NT1JFX0lOUFVUOwogICAgICAgICB9CiAgICAgICAg
IHMtPnNpemVfbmliYmxlcyA9ICh1aW50OF90KShiaXRzICsgNCk7CiAgICAgICAgIHMtPmxvb3Bf
Y291bnRlciA9IDA7CkBAIC0yMzIsMTAgKzIyNiwxMCBAQCBzdGF0aWMgQnJvdGxpUmVzdWx0IEJS
T1RMSV9OT0lOTElORSBEZWNvZGVNZXRhQmxvY2tMZW5ndGgoQnJvdGxpU3RhdGUqIHMsCiAgICAg
ICAgIGZvciAoOyBpIDwgcy0+c2l6ZV9uaWJibGVzOyArK2kpIHsKICAgICAgICAgICBpZiAoIUJy
b3RsaVNhZmVSZWFkQml0cyhiciwgNCwgJmJpdHMpKSB7CiAgICAgICAgICAgICBzLT5sb29wX2Nv
dW50ZXIgPSBpOwotICAgICAgICAgICAgcmV0dXJuIEJST1RMSV9SRVNVTFRfTkVFRFNfTU9SRV9J
TlBVVDsKKyAgICAgICAgICAgIHJldHVybiBCUk9UTElfTkVFRFNfTU9SRV9JTlBVVDsKICAgICAg
ICAgICB9CiAgICAgICAgICAgaWYgKGkgKyAxID09IHMtPnNpemVfbmliYmxlcyAmJiBzLT5zaXpl
X25pYmJsZXMgPiA0ICYmIGJpdHMgPT0gMCkgewotICAgICAgICAgICAgcmV0dXJuIEJST1RMSV9G
QUlMVVJFKCk7CisgICAgICAgICAgICByZXR1cm4gQlJPVExJX0ZBSUxVUkUoQlJPVExJX0VSUk9S
X0ZPUk1BVF9FWFVCRVJBTlRfTklCQkxFKTsKICAgICAgICAgICB9CiAgICAgICAgICAgcy0+bWV0
YV9ibG9ja19yZW1haW5pbmdfbGVuIHw9IChpbnQpKGJpdHMgPDwgKGkgKiA0KSk7CiAgICAgICAg
IH0KQEAgLTI0NiwzMSArMjQwLDMxIEBAIHN0YXRpYyBCcm90bGlSZXN1bHQgQlJPVExJX05PSU5M
SU5FIERlY29kZU1ldGFCbG9ja0xlbmd0aChCcm90bGlTdGF0ZSogcywKICAgICAgIGNhc2UgQlJP
VExJX1NUQVRFX01FVEFCTE9DS19IRUFERVJfVU5DT01QUkVTU0VEOgogICAgICAgICBpZiAoIXMt
PmlzX2xhc3RfbWV0YWJsb2NrKSB7CiAgICAgICAgICAgaWYgKCFCcm90bGlTYWZlUmVhZEJpdHMo
YnIsIDEsICZiaXRzKSkgewotICAgICAgICAgICAgcmV0dXJuIEJST1RMSV9SRVNVTFRfTkVFRFNf
TU9SRV9JTlBVVDsKKyAgICAgICAgICAgIHJldHVybiBCUk9UTElfTkVFRFNfTU9SRV9JTlBVVDsK
ICAgICAgICAgICB9CiAgICAgICAgICAgcy0+aXNfdW5jb21wcmVzc2VkID0gKHVpbnQ4X3QpYml0
czsKICAgICAgICAgfQogICAgICAgICArK3MtPm1ldGFfYmxvY2tfcmVtYWluaW5nX2xlbjsKICAg
ICAgICAgcy0+c3Vic3RhdGVfbWV0YWJsb2NrX2hlYWRlciA9IEJST1RMSV9TVEFURV9NRVRBQkxP
Q0tfSEVBREVSX05PTkU7Ci0gICAgICAgIHJldHVybiBCUk9UTElfUkVTVUxUX1NVQ0NFU1M7Cisg
ICAgICAgIHJldHVybiBCUk9UTElfU1VDQ0VTUzsKIAogICAgICAgY2FzZSBCUk9UTElfU1RBVEVf
TUVUQUJMT0NLX0hFQURFUl9SRVNFUlZFRDoKICAgICAgICAgaWYgKCFCcm90bGlTYWZlUmVhZEJp
dHMoYnIsIDEsICZiaXRzKSkgewotICAgICAgICAgIHJldHVybiBCUk9UTElfUkVTVUxUX05FRURT
X01PUkVfSU5QVVQ7CisgICAgICAgICAgcmV0dXJuIEJST1RMSV9ORUVEU19NT1JFX0lOUFVUOwog
ICAgICAgICB9CiAgICAgICAgIGlmIChiaXRzICE9IDApIHsKLSAgICAgICAgICByZXR1cm4gQlJP
VExJX0ZBSUxVUkUoKTsKKyAgICAgICAgICByZXR1cm4gQlJPVExJX0ZBSUxVUkUoQlJPVExJX0VS
Uk9SX0ZPUk1BVF9SRVNFUlZFRCk7CiAgICAgICAgIH0KICAgICAgICAgcy0+c3Vic3RhdGVfbWV0
YWJsb2NrX2hlYWRlciA9IEJST1RMSV9TVEFURV9NRVRBQkxPQ0tfSEVBREVSX0JZVEVTOwogICAg
ICAgICAvKiBObyBicmVhaywgdHJhbnNpdCB0byB0aGUgbmV4dCBzdGF0ZS4gKi8KIAogICAgICAg
Y2FzZSBCUk9UTElfU1RBVEVfTUVUQUJMT0NLX0hFQURFUl9CWVRFUzoKICAgICAgICAgaWYgKCFC
cm90bGlTYWZlUmVhZEJpdHMoYnIsIDIsICZiaXRzKSkgewotICAgICAgICAgIHJldHVybiBCUk9U
TElfUkVTVUxUX05FRURTX01PUkVfSU5QVVQ7CisgICAgICAgICAgcmV0dXJuIEJST1RMSV9ORUVE
U19NT1JFX0lOUFVUOwogICAgICAgICB9CiAgICAgICAgIGlmIChiaXRzID09IDApIHsKICAgICAg
ICAgICBzLT5zdWJzdGF0ZV9tZXRhYmxvY2tfaGVhZGVyID0gQlJPVExJX1NUQVRFX01FVEFCTE9D
S19IRUFERVJfTk9ORTsKLSAgICAgICAgICByZXR1cm4gQlJPVExJX1JFU1VMVF9TVUNDRVNTOwor
ICAgICAgICAgIHJldHVybiBCUk9UTElfU1VDQ0VTUzsKICAgICAgICAgfQogICAgICAgICBzLT5z
aXplX25pYmJsZXMgPSAodWludDhfdCliaXRzOwogICAgICAgICBzLT5zdWJzdGF0ZV9tZXRhYmxv
Y2tfaGVhZGVyID0gQlJPVExJX1NUQVRFX01FVEFCTE9DS19IRUFERVJfTUVUQURBVEE7CkBAIC0y
ODEsMTkgKzI3NSwxOSBAQCBzdGF0aWMgQnJvdGxpUmVzdWx0IEJST1RMSV9OT0lOTElORSBEZWNv
ZGVNZXRhQmxvY2tMZW5ndGgoQnJvdGxpU3RhdGUqIHMsCiAgICAgICAgIGZvciAoOyBpIDwgcy0+
c2l6ZV9uaWJibGVzOyArK2kpIHsKICAgICAgICAgICBpZiAoIUJyb3RsaVNhZmVSZWFkQml0cyhi
ciwgOCwgJmJpdHMpKSB7CiAgICAgICAgICAgICBzLT5sb29wX2NvdW50ZXIgPSBpOwotICAgICAg
ICAgICAgcmV0dXJuIEJST1RMSV9SRVNVTFRfTkVFRFNfTU9SRV9JTlBVVDsKKyAgICAgICAgICAg
IHJldHVybiBCUk9UTElfTkVFRFNfTU9SRV9JTlBVVDsKICAgICAgICAgICB9CiAgICAgICAgICAg
aWYgKGkgKyAxID09IHMtPnNpemVfbmliYmxlcyAmJiBzLT5zaXplX25pYmJsZXMgPiAxICYmIGJp
dHMgPT0gMCkgewotICAgICAgICAgICAgcmV0dXJuIEJST1RMSV9GQUlMVVJFKCk7CisgICAgICAg
ICAgICByZXR1cm4gQlJPVExJX0ZBSUxVUkUoQlJPVExJX0VSUk9SX0ZPUk1BVF9FWFVCRVJBTlRf
TUVUQV9OSUJCTEUpOwogICAgICAgICAgIH0KICAgICAgICAgICBzLT5tZXRhX2Jsb2NrX3JlbWFp
bmluZ19sZW4gfD0gKGludCkoYml0cyA8PCAoaSAqIDgpKTsKICAgICAgICAgfQogICAgICAgICAr
K3MtPm1ldGFfYmxvY2tfcmVtYWluaW5nX2xlbjsKICAgICAgICAgcy0+c3Vic3RhdGVfbWV0YWJs
b2NrX2hlYWRlciA9IEJST1RMSV9TVEFURV9NRVRBQkxPQ0tfSEVBREVSX05PTkU7Ci0gICAgICAg
IHJldHVybiBCUk9UTElfUkVTVUxUX1NVQ0NFU1M7CisgICAgICAgIHJldHVybiBCUk9UTElfU1VD
Q0VTUzsKIAogICAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIEJST1RMSV9GQUlMVVJFKCk7
CisgICAgICAgIHJldHVybiBCUk9UTElfRkFJTFVSRShCUk9UTElfRVJST1JfVU5SRUFDSEFCTEUp
OwogICAgIH0KICAgfQogfQpAQCAtMzc2LDcgKzM3MCw2IEBAIHN0YXRpYyBCUk9UTElfSU5MSU5F
IGludCBTYWZlUmVhZFN5bWJvbChjb25zdCBIdWZmbWFuQ29kZSogdGFibGUsCiAgIHJldHVybiBT
YWZlRGVjb2RlU3ltYm9sKHRhYmxlLCBiciwgcmVzdWx0KTsKIH0KIAotCiAvKiBNYWtlcyBhIGxv
b2stdXAgaW4gZmlyc3QgbGV2ZWwgSHVmZm1hbiB0YWJsZS4gUGVla3MgOCBiaXRzLiAqLwogc3Rh
dGljIEJST1RMSV9JTkxJTkUgdm9pZCBQcmVsb2FkU3ltYm9sKGludCBzYWZlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEh1ZmZtYW5Db2RlKiB0YWJsZSwK
QEAgLTQyNiw4ICs0MTksOCBAQCBzdGF0aWMgQlJPVExJX0lOTElORSB1aW50MzJfdCBMb2cyRmxv
b3IodWludDMyX3QgeCkgewogICAgVG90YWxseSAxLi40IHN5bWJvbHMgYXJlIHJlYWQsIDEuLjEw
IGJpdHMgZWFjaC4KICAgIFRoZSBsaXN0IG9mIHN5bWJvbHMgTVVTVCBOT1QgY29udGFpbiBkdXBs
aWNhdGVzLgogICovCi1zdGF0aWMgQnJvdGxpUmVzdWx0IFJlYWRTaW1wbGVIdWZmbWFuU3ltYm9s
cyh1aW50MzJfdCBhbHBoYWJldF9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQnJvdGxpU3RhdGUqIHMpIHsKK3N0YXRpYyBCcm90bGlFcnJvckNvZGUg
UmVhZFNpbXBsZUh1ZmZtYW5TeW1ib2xzKHVpbnQzMl90IGFscGhhYmV0X3NpemUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCcm90bGlTdGF0ZSogcykg
ewogICAvKiBtYXhfYml0cyA9PSAxLi4xMDsgc3ltYm9sID09IDAuLjM7IDEuLjQwIGJpdHMgd2ls
bCBiZSByZWFkLiAqLwogICBCcm90bGlCaXRSZWFkZXIqIGJyID0gJnMtPmJyOwogICB1aW50MzJf
dCBtYXhfYml0cyA9IExvZzJGbG9vcihhbHBoYWJldF9zaXplIC0gMSk7CkBAIC00MzgsMTAgKzQz
MSwxMCBAQCBzdGF0aWMgQnJvdGxpUmVzdWx0IFJlYWRTaW1wbGVIdWZmbWFuU3ltYm9scyh1aW50
MzJfdCBhbHBoYWJldF9zaXplLAogICAgIGlmIChQUkVESUNUX0ZBTFNFKCFCcm90bGlTYWZlUmVh
ZEJpdHMoYnIsIG1heF9iaXRzLCAmdikpKSB7CiAgICAgICBzLT5zdWJfbG9vcF9jb3VudGVyID0g
aTsKICAgICAgIHMtPnN1YnN0YXRlX2h1ZmZtYW4gPSBCUk9UTElfU1RBVEVfSFVGRk1BTl9TSU1Q
TEVfUkVBRDsKLSAgICAgIHJldHVybiBCUk9UTElfUkVTVUxUX05FRURTX01PUkVfSU5QVVQ7Cisg
ICAgICByZXR1cm4gQlJPVExJX05FRURTX01PUkVfSU5QVVQ7CiAgICAgfQogICAgIGlmICh2ID49
IGFscGhhYmV0X3NpemUpIHsKLSAgICAgIHJldHVybiBCUk9UTElfRkFJTFVSRSgpOworICAgICAg
cmV0dXJuIEJST1RMSV9GQUlMVVJFKEJST1RMSV9FUlJPUl9GT1JNQVRfU0lNUExFX0hVRkZNQU5f
QUxQSEFCRVQpOwogICAgIH0KICAgICBzLT5zeW1ib2xzX2xpc3RzX2FycmF5W2ldID0gKHVpbnQx
Nl90KXY7CiAgICAgQlJPVExJX0xPR19VSU5UKHMtPnN5bWJvbHNfbGlzdHNfYXJyYXlbaV0pOwpA
QCAtNDUyLDEyICs0NDUsMTIgQEAgc3RhdGljIEJyb3RsaVJlc3VsdCBSZWFkU2ltcGxlSHVmZm1h
blN5bWJvbHModWludDMyX3QgYWxwaGFiZXRfc2l6ZSwKICAgICB1aW50MzJfdCBrID0gaSArIDE7
CiAgICAgZm9yICg7IGsgPD0gbnVtX3N5bWJvbHM7ICsraykgewogICAgICAgaWYgKHMtPnN5bWJv
bHNfbGlzdHNfYXJyYXlbaV0gPT0gcy0+c3ltYm9sc19saXN0c19hcnJheVtrXSkgewotICAgICAg
ICByZXR1cm4gQlJPVExJX0ZBSUxVUkUoKTsKKyAgICAgICAgcmV0dXJuIEJST1RMSV9GQUlMVVJF
KEJST1RMSV9FUlJPUl9GT1JNQVRfU0lNUExFX0hVRkZNQU5fU0FNRSk7CiAgICAgICB9CiAgICAg
fQogICB9CiAKLSAgcmV0dXJuIEJST1RMSV9SRVNVTFRfU1VDQ0VTUzsKKyAgcmV0dXJuIEJST1RM
SV9TVUNDRVNTOwogfQogCiAvKiBQcm9jZXNzIHNpbmdsZSBkZWNvZGVkIHN5bWJvbCBjb2RlIGxl
bmd0aDoKQEAgLTUxNCw3ICs1MDcsNyBAQCBzdGF0aWMgQlJPVExJX0lOTElORSB2b2lkIFByb2Nl
c3NSZXBlYXRlZENvZGVMZW5ndGgodWludDMyX3QgY29kZV9sZW4sCiAgICpyZXBlYXQgKz0gcmVw
ZWF0X2RlbHRhICsgM1U7CiAgIHJlcGVhdF9kZWx0YSA9ICpyZXBlYXQgLSBvbGRfcmVwZWF0Owog
ICBpZiAoKnN5bWJvbCArIHJlcGVhdF9kZWx0YSA+IGFscGhhYmV0X3NpemUpIHsKLSAgICAodm9p
ZClCUk9UTElfRkFJTFVSRSgpOworICAgIEJST1RMSV9EVU1QKCk7CiAgICAgKnN5bWJvbCA9IGFs
cGhhYmV0X3NpemU7CiAgICAgKnNwYWNlID0gMHhGRkZGRjsKICAgICByZXR1cm47CkBAIC01Mzgs
NyArNTMxLDcgQEAgc3RhdGljIEJST1RMSV9JTkxJTkUgdm9pZCBQcm9jZXNzUmVwZWF0ZWRDb2Rl
TGVuZ3RoKHVpbnQzMl90IGNvZGVfbGVuLAogfQogCiAvKiBSZWFkcyBhbmQgZGVjb2RlcyBzeW1i
b2wgY29kZWxlbmd0aHMuICovCi1zdGF0aWMgQnJvdGxpUmVzdWx0IFJlYWRTeW1ib2xDb2RlTGVu
Z3RocygKK3N0YXRpYyBCcm90bGlFcnJvckNvZGUgUmVhZFN5bWJvbENvZGVMZW5ndGhzKAogICAg
IHVpbnQzMl90IGFscGhhYmV0X3NpemUsIEJyb3RsaVN0YXRlKiBzKSB7CiAgIEJyb3RsaUJpdFJl
YWRlciogYnIgPSAmcy0+YnI7CiAgIHVpbnQzMl90IHN5bWJvbCA9IHMtPnN5bWJvbDsKQEAgLTU1
MCw3ICs1NDMsNyBAQCBzdGF0aWMgQnJvdGxpUmVzdWx0IFJlYWRTeW1ib2xDb2RlTGVuZ3RocygK
ICAgdWludDE2X3QqIGNvZGVfbGVuZ3RoX2hpc3RvID0gcy0+Y29kZV9sZW5ndGhfaGlzdG87CiAg
IGludCogbmV4dF9zeW1ib2wgPSBzLT5uZXh0X3N5bWJvbDsKICAgaWYgKCFCcm90bGlXYXJtdXBC
aXRSZWFkZXIoYnIpKSB7Ci0gICAgcmV0dXJuIEJST1RMSV9SRVNVTFRfTkVFRFNfTU9SRV9JTlBV
VDsKKyAgICByZXR1cm4gQlJPVExJX05FRURTX01PUkVfSU5QVVQ7CiAgIH0KICAgd2hpbGUgKHN5
bWJvbCA8IGFscGhhYmV0X3NpemUgJiYgc3BhY2UgPiAwKSB7CiAgICAgY29uc3QgSHVmZm1hbkNv
ZGUqIHAgPSBzLT50YWJsZTsKQEAgLTU2MSw3ICs1NTQsNyBAQCBzdGF0aWMgQnJvdGxpUmVzdWx0
IFJlYWRTeW1ib2xDb2RlTGVuZ3RocygKICAgICAgIHMtPnByZXZfY29kZV9sZW4gPSBwcmV2X2Nv
ZGVfbGVuOwogICAgICAgcy0+cmVwZWF0X2NvZGVfbGVuID0gcmVwZWF0X2NvZGVfbGVuOwogICAg
ICAgcy0+c3BhY2UgPSBzcGFjZTsKLSAgICAgIHJldHVybiBCUk9UTElfUkVTVUxUX05FRURTX01P
UkVfSU5QVVQ7CisgICAgICByZXR1cm4gQlJPVExJX05FRURTX01PUkVfSU5QVVQ7CiAgICAgfQog
ICAgIEJyb3RsaUZpbGxCaXRXaW5kb3cxNihicik7CiAgICAgcCArPSBCcm90bGlHZXRCaXRzVW5t
YXNrZWQoYnIpICYKQEAgLTU4MSwxMCArNTc0LDEwIEBAIHN0YXRpYyBCcm90bGlSZXN1bHQgUmVh
ZFN5bWJvbENvZGVMZW5ndGhzKAogICAgIH0KICAgfQogICBzLT5zcGFjZSA9IHNwYWNlOwotICBy
ZXR1cm4gQlJPVExJX1JFU1VMVF9TVUNDRVNTOworICByZXR1cm4gQlJPVExJX1NVQ0NFU1M7CiB9
CiAKLXN0YXRpYyBCcm90bGlSZXN1bHQgU2FmZVJlYWRTeW1ib2xDb2RlTGVuZ3RocygKK3N0YXRp
YyBCcm90bGlFcnJvckNvZGUgU2FmZVJlYWRTeW1ib2xDb2RlTGVuZ3RocygKICAgICB1aW50MzJf
dCBhbHBoYWJldF9zaXplLCBCcm90bGlTdGF0ZSogcykgewogICBCcm90bGlCaXRSZWFkZXIqIGJy
ID0gJnMtPmJyOwogICB3aGlsZSAocy0+c3ltYm9sIDwgYWxwaGFiZXRfc2l6ZSAmJiBzLT5zcGFj
ZSA+IDApIHsKQEAgLTYxNywxNSArNjEwLDE1IEBAIHN0YXRpYyBCcm90bGlSZXN1bHQgU2FmZVJl
YWRTeW1ib2xDb2RlTGVuZ3RocygKIAogcHVsbE1vcmVJbnB1dDoKICAgICBpZiAoIUJyb3RsaVB1
bGxCeXRlKGJyKSkgewotICAgICAgcmV0dXJuIEJST1RMSV9SRVNVTFRfTkVFRFNfTU9SRV9JTlBV
VDsKKyAgICAgIHJldHVybiBCUk9UTElfTkVFRFNfTU9SRV9JTlBVVDsKICAgICB9CiAgIH0KLSAg
cmV0dXJuIEJST1RMSV9SRVNVTFRfU1VDQ0VTUzsKKyAgcmV0dXJuIEJST1RMSV9TVUNDRVNTOwog
fQogCiAvKiBSZWFkcyBhbmQgZGVjb2RlcyAxNS4uMTggY29kZXMgdXNpbmcgc3RhdGljIHByZWZp
eCBjb2RlLgogICAgRWFjaCBjb2RlIGlzIDIuLjQgYml0cyBsb25nLiBJbiB0b3RhbCAzMC4uNzIg
Yml0cyBhcmUgdXNlZC4gKi8KLXN0YXRpYyBCcm90bGlSZXN1bHQgUmVhZENvZGVMZW5ndGhDb2Rl
TGVuZ3RocyhCcm90bGlTdGF0ZSogcykgeworc3RhdGljIEJyb3RsaUVycm9yQ29kZSBSZWFkQ29k
ZUxlbmd0aENvZGVMZW5ndGhzKEJyb3RsaVN0YXRlKiBzKSB7CiAgIEJyb3RsaUJpdFJlYWRlciog
YnIgPSAmcy0+YnI7CiAgIHVpbnQzMl90IG51bV9jb2RlcyA9IHMtPnJlcGVhdDsKICAgdW5zaWdu
ZWQgc3BhY2UgPSBzLT5zcGFjZTsKQEAgLTY0Niw3ICs2MzksNyBAQCBzdGF0aWMgQnJvdGxpUmVz
dWx0IFJlYWRDb2RlTGVuZ3RoQ29kZUxlbmd0aHMoQnJvdGxpU3RhdGUqIHMpIHsKICAgICAgICAg
cy0+cmVwZWF0ID0gbnVtX2NvZGVzOwogICAgICAgICBzLT5zcGFjZSA9IHNwYWNlOwogICAgICAg
ICBzLT5zdWJzdGF0ZV9odWZmbWFuID0gQlJPVExJX1NUQVRFX0hVRkZNQU5fQ09NUExFWDsKLSAg
ICAgICAgcmV0dXJuIEJST1RMSV9SRVNVTFRfTkVFRFNfTU9SRV9JTlBVVDsKKyAgICAgICAgcmV0
dXJuIEJST1RMSV9ORUVEU19NT1JFX0lOUFVUOwogICAgICAgfQogICAgIH0KICAgICB2ID0ga0Nv
ZGVMZW5ndGhQcmVmaXhWYWx1ZVtpeF07CkBAIC02NjQsOSArNjU3LDkgQEAgc3RhdGljIEJyb3Rs
aVJlc3VsdCBSZWFkQ29kZUxlbmd0aENvZGVMZW5ndGhzKEJyb3RsaVN0YXRlKiBzKSB7CiAgICAg
fQogICB9CiAgIGlmICghKG51bV9jb2RlcyA9PSAxIHx8IHNwYWNlID09IDApKSB7Ci0gICAgcmV0
dXJuIEJST1RMSV9GQUlMVVJFKCk7CisgICAgcmV0dXJuIEJST1RMSV9GQUlMVVJFKEJST1RMSV9F
UlJPUl9GT1JNQVRfQ0xfU1BBQ0UpOwogICB9Ci0gIHJldHVybiBCUk9UTElfUkVTVUxUX1NVQ0NF
U1M7CisgIHJldHVybiBCUk9UTElfU1VDQ0VTUzsKIH0KIAogLyogRGVjb2RlcyB0aGUgSHVmZm1h
biB0YWJsZXMuCkBAIC02ODEsMTAgKzY3NCwxMCBAQCBzdGF0aWMgQnJvdGxpUmVzdWx0IFJlYWRD
b2RlTGVuZ3RoQ29kZUxlbmd0aHMoQnJvdGxpU3RhdGUqIHMpIHsKICAgICBCLjIpIERlY29kZWQg
dGFibGUgaXMgdXNlZCB0byBkZWNvZGUgY29kZSBsZW5ndGhzIG9mIHN5bWJvbHMgaW4gcmVzdWx0
aW5nCiAgICAgICAgICBIdWZmbWFuIHRhYmxlLiBJbiB3b3JzdCBjYXNlIDM1MjAgYml0cyBhcmUg
cmVhZC4KICovCi1zdGF0aWMgQnJvdGxpUmVzdWx0IFJlYWRIdWZmbWFuQ29kZSh1aW50MzJfdCBh
bHBoYWJldF9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSHVmZm1h
bkNvZGUqIHRhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy
X3QqIG9wdF90YWJsZV9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QnJvdGxpU3RhdGUqIHMpIHsKK3N0YXRpYyBCcm90bGlFcnJvckNvZGUgUmVhZEh1ZmZtYW5Db2Rl
KHVpbnQzMl90IGFscGhhYmV0X3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBIdWZmbWFuQ29kZSogdGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50MzJfdCogb3B0X3RhYmxlX3NpemUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBCcm90bGlTdGF0ZSogcykgewogICBCcm90bGlCaXRSZWFkZXIq
IGJyID0gJnMtPmJyOwogICAvKiBVbm5lY2Vzc2FyeSBtYXNraW5nLCBidXQgbWlnaHQgYmUgZ29v
ZCBmb3Igc2FmZXR5LiAqLwogICBhbHBoYWJldF9zaXplICY9IDB4M2ZmOwpAQCAtNjkyLDcgKzY4
NSw3IEBAIHN0YXRpYyBCcm90bGlSZXN1bHQgUmVhZEh1ZmZtYW5Db2RlKHVpbnQzMl90IGFscGhh
YmV0X3NpemUsCiAgIHN3aXRjaCAocy0+c3Vic3RhdGVfaHVmZm1hbikgewogICAgIGNhc2UgQlJP
VExJX1NUQVRFX0hVRkZNQU5fTk9ORToKICAgICAgIGlmICghQnJvdGxpU2FmZVJlYWRCaXRzKGJy
LCAyLCAmcy0+c3ViX2xvb3BfY291bnRlcikpIHsKLSAgICAgICAgcmV0dXJuIEJST1RMSV9SRVNV
TFRfTkVFRFNfTU9SRV9JTlBVVDsKKyAgICAgICAgcmV0dXJuIEJST1RMSV9ORUVEU19NT1JFX0lO
UFVUOwogICAgICAgfQogICAgICAgQlJPVExJX0xPR19VSU5UKHMtPnN1Yl9sb29wX2NvdW50ZXIp
OwogICAgICAgLyogVGhlIHZhbHVlIGlzIHVzZWQgYXMgZm9sbG93czoKQEAgLTcxNCwxMyArNzA3
LDEzIEBAIHN0YXRpYyBCcm90bGlSZXN1bHQgUmVhZEh1ZmZtYW5Db2RlKHVpbnQzMl90IGFscGhh
YmV0X3NpemUsCiAgICAgICAvKiBSZWFkIHN5bWJvbHMsIGNvZGVzICYgY29kZSBsZW5ndGhzIGRp
cmVjdGx5LiAqLwogICAgICAgaWYgKCFCcm90bGlTYWZlUmVhZEJpdHMoYnIsIDIsICZzLT5zeW1i
b2wpKSB7IC8qIG51bV9zeW1ib2xzICovCiAgICAgICAgIHMtPnN1YnN0YXRlX2h1ZmZtYW4gPSBC
Uk9UTElfU1RBVEVfSFVGRk1BTl9TSU1QTEVfU0laRTsKLSAgICAgICAgcmV0dXJuIEJST1RMSV9S
RVNVTFRfTkVFRFNfTU9SRV9JTlBVVDsKKyAgICAgICAgcmV0dXJuIEJST1RMSV9ORUVEU19NT1JF
X0lOUFVUOwogICAgICAgfQogICAgICAgcy0+c3ViX2xvb3BfY291bnRlciA9IDA7CiAgICAgICAv
KiBObyBicmVhaywgdHJhbnNpdCB0byB0aGUgbmV4dCBzdGF0ZS4gKi8KICAgICBjYXNlIEJST1RM
SV9TVEFURV9IVUZGTUFOX1NJTVBMRV9SRUFEOiB7Ci0gICAgICBCcm90bGlSZXN1bHQgcmVzdWx0
ID0gUmVhZFNpbXBsZUh1ZmZtYW5TeW1ib2xzKGFscGhhYmV0X3NpemUsIHMpOwotICAgICAgaWYg
KHJlc3VsdCAhPSBCUk9UTElfUkVTVUxUX1NVQ0NFU1MpIHsKKyAgICAgIEJyb3RsaUVycm9yQ29k
ZSByZXN1bHQgPSBSZWFkU2ltcGxlSHVmZm1hblN5bWJvbHMoYWxwaGFiZXRfc2l6ZSwgcyk7Cisg
ICAgICBpZiAocmVzdWx0ICE9IEJST1RMSV9TVUNDRVNTKSB7CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgICB9CiAgICAgICAvKiBObyBicmVhaywgdHJhbnNpdCB0byB0aGUgbmV4dCBzdGF0
ZS4gKi8KQEAgLTczMSw3ICs3MjQsNyBAQCBzdGF0aWMgQnJvdGxpUmVzdWx0IFJlYWRIdWZmbWFu
Q29kZSh1aW50MzJfdCBhbHBoYWJldF9zaXplLAogICAgICAgICB1aW50MzJfdCBiaXRzOwogICAg
ICAgICBpZiAoIUJyb3RsaVNhZmVSZWFkQml0cyhiciwgMSwgJmJpdHMpKSB7CiAgICAgICAgICAg
cy0+c3Vic3RhdGVfaHVmZm1hbiA9IEJST1RMSV9TVEFURV9IVUZGTUFOX1NJTVBMRV9CVUlMRDsK
LSAgICAgICAgICByZXR1cm4gQlJPVExJX1JFU1VMVF9ORUVEU19NT1JFX0lOUFVUOworICAgICAg
ICAgIHJldHVybiBCUk9UTElfTkVFRFNfTU9SRV9JTlBVVDsKICAgICAgICAgfQogICAgICAgICBz
LT5zeW1ib2wgKz0gYml0czsKICAgICAgIH0KQEAgLTc0MiwxNCArNzM1LDE0IEBAIHN0YXRpYyBC
cm90bGlSZXN1bHQgUmVhZEh1ZmZtYW5Db2RlKHVpbnQzMl90IGFscGhhYmV0X3NpemUsCiAgICAg
ICAgICpvcHRfdGFibGVfc2l6ZSA9IHRhYmxlX3NpemU7CiAgICAgICB9CiAgICAgICBzLT5zdWJz
dGF0ZV9odWZmbWFuID0gQlJPVExJX1NUQVRFX0hVRkZNQU5fTk9ORTsKLSAgICAgIHJldHVybiBC
Uk9UTElfUkVTVUxUX1NVQ0NFU1M7CisgICAgICByZXR1cm4gQlJPVExJX1NVQ0NFU1M7CiAgICAg
fQogCiBDb21wbGV4OiAvKiBEZWNvZGUgSHVmZm1hbi1jb2RlZCBjb2RlIGxlbmd0aHMuICovCiAg
ICAgY2FzZSBCUk9UTElfU1RBVEVfSFVGRk1BTl9DT01QTEVYOiB7CiAgICAgICB1aW50MzJfdCBp
OwotICAgICAgQnJvdGxpUmVzdWx0IHJlc3VsdCA9IFJlYWRDb2RlTGVuZ3RoQ29kZUxlbmd0aHMo
cyk7Ci0gICAgICBpZiAocmVzdWx0ICE9IEJST1RMSV9SRVNVTFRfU1VDQ0VTUykgeworICAgICAg
QnJvdGxpRXJyb3JDb2RlIHJlc3VsdCA9IFJlYWRDb2RlTGVuZ3RoQ29kZUxlbmd0aHMocyk7Cisg
ICAgICBpZiAocmVzdWx0ICE9IEJST1RMSV9TVUNDRVNTKSB7CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgICB9CiAgICAgICBCcm90bGlCdWlsZENvZGVMZW5ndGhzSHVmZm1hblRhYmxlKHMt
PnRhYmxlLApAQCAtNzcxLDE3ICs3NjQsMTcgQEAgQ29tcGxleDogLyogRGVjb2RlIEh1ZmZtYW4t
Y29kZWQgY29kZSBsZW5ndGhzLiAqLwogICAgIH0KICAgICBjYXNlIEJST1RMSV9TVEFURV9IVUZG
TUFOX0xFTkdUSF9TWU1CT0xTOiB7CiAgICAgICB1aW50MzJfdCB0YWJsZV9zaXplOwotICAgICAg
QnJvdGxpUmVzdWx0IHJlc3VsdCA9IFJlYWRTeW1ib2xDb2RlTGVuZ3RocyhhbHBoYWJldF9zaXpl
LCBzKTsKLSAgICAgIGlmIChyZXN1bHQgPT0gQlJPVExJX1JFU1VMVF9ORUVEU19NT1JFX0lOUFVU
KSB7CisgICAgICBCcm90bGlFcnJvckNvZGUgcmVzdWx0ID0gUmVhZFN5bWJvbENvZGVMZW5ndGhz
KGFscGhhYmV0X3NpemUsIHMpOworICAgICAgaWYgKHJlc3VsdCA9PSBCUk9UTElfTkVFRFNfTU9S
RV9JTlBVVCkgewogICAgICAgICByZXN1bHQgPSBTYWZlUmVhZFN5bWJvbENvZGVMZW5ndGhzKGFs
cGhhYmV0X3NpemUsIHMpOwogICAgICAgfQotICAgICAgaWYgKHJlc3VsdCAhPSBCUk9UTElfUkVT
VUxUX1NVQ0NFU1MpIHsKKyAgICAgIGlmIChyZXN1bHQgIT0gQlJPVExJX1NVQ0NFU1MpIHsKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgIH0KIAogICAgICAgaWYgKHMtPnNwYWNlICE9IDAp
IHsKICAgICAgICAgQlJPVExJX0xPRygoIltSZWFkSHVmZm1hbkNvZGVdIHNwYWNlID0gJWRcbiIs
IHMtPnNwYWNlKSk7Ci0gICAgICAgIHJldHVybiBCUk9UTElfRkFJTFVSRSgpOworICAgICAgICBy
ZXR1cm4gQlJPVExJX0ZBSUxVUkUoQlJPVExJX0VSUk9SX0ZPUk1BVF9IVUZGTUFOX1NQQUNFKTsK
ICAgICAgIH0KICAgICAgIHRhYmxlX3NpemUgPSBCcm90bGlCdWlsZEh1ZmZtYW5UYWJsZSgKICAg
ICAgICAgICB0YWJsZSwgSFVGRk1BTl9UQUJMRV9CSVRTLCBzLT5zeW1ib2xfbGlzdHMsIHMtPmNv
ZGVfbGVuZ3RoX2hpc3RvKTsKQEAgLTc4OSwxMSArNzgyLDExIEBAIENvbXBsZXg6IC8qIERlY29k
ZSBIdWZmbWFuLWNvZGVkIGNvZGUgbGVuZ3Rocy4gKi8KICAgICAgICAgKm9wdF90YWJsZV9zaXpl
ID0gdGFibGVfc2l6ZTsKICAgICAgIH0KICAgICAgIHMtPnN1YnN0YXRlX2h1ZmZtYW4gPSBCUk9U
TElfU1RBVEVfSFVGRk1BTl9OT05FOwotICAgICAgcmV0dXJuIEJST1RMSV9SRVNVTFRfU1VDQ0VT
UzsKKyAgICAgIHJldHVybiBCUk9UTElfU1VDQ0VTUzsKICAgICB9CiAKICAgICBkZWZhdWx0Ogot
ICAgICAgcmV0dXJuIEJST1RMSV9GQUlMVVJFKCk7CisgICAgICByZXR1cm4gQlJPVExJX0ZBSUxV
UkUoQlJPVExJX0VSUk9SX1VOUkVBQ0hBQkxFKTsKICAgfQogfQogCkBAIC04NTUsNyArODQ4LDcg
QEAgc3RhdGljIEJST1RMSV9OT0lOTElORSB2b2lkIEludmVyc2VNb3ZlVG9Gcm9udFRyYW5zZm9y
bSh1aW50OF90KiB2LAogICAvKiBSZWluaXRpYWxpemUgZWxlbWVudHMgdGhhdCBjb3VsZCBoYXZl
IGJlZW4gY2hhbmdlZC4gKi8KICAgdWludDMyX3QgaSA9IDQ7CiAgIHVpbnQzMl90IHVwcGVyX2Jv
dW5kID0gc3RhdGUtPm10Zl91cHBlcl9ib3VuZDsKLSAgdWludDhfdCogbXRmID0gc3RhdGUtPm10
ZjsKKyAgdWludDhfdCogbXRmID0gJnN0YXRlLT5tdGZbNF07ICAvKiBNYWtlIG10ZlstMV0gYWRk
cmVzc2FibGUuICovCiAgIC8qIExvYWQgZW5kaWFuLWF3YXJlIGNvbnN0YW50LiAqLwogICBjb25z
dCB1aW50OF90IGIwMTIzWzRdID0gezAsIDEsIDIsIDN9OwogICB1aW50MzJfdCBwYXR0ZXJuOwpA
QCAtODc2LDIwICs4NjksMTkgQEAgc3RhdGljIEJST1RMSV9OT0lOTElORSB2b2lkIEludmVyc2VN
b3ZlVG9Gcm9udFRyYW5zZm9ybSh1aW50OF90KiB2LAogICAgIHVpbnQ4X3QgdmFsdWUgPSBtdGZb
aW5kZXhdOwogICAgIHVwcGVyX2JvdW5kIHw9IHZbaV07CiAgICAgdltpXSA9IHZhbHVlOworICAg
IG10ZlstMV0gPSB2YWx1ZTsKICAgICBkbyB7CiAgICAgICBpbmRleC0tOwogICAgICAgbXRmW2lu
ZGV4ICsgMV0gPSBtdGZbaW5kZXhdOwotICAgIH0gd2hpbGUgKGluZGV4ID4gMCk7Ci0gICAgbXRm
WzBdID0gdmFsdWU7CisgICAgfSB3aGlsZSAoaW5kZXggPj0gMCk7CiAgIH0KICAgLyogUmVtZW1i
ZXIgYW1vdW50IG9mIGVsZW1lbnRzIHRvIGJlIHJlaW5pdGlhbGl6ZWQuICovCiAgIHN0YXRlLT5t
dGZfdXBwZXJfYm91bmQgPSB1cHBlcl9ib3VuZDsKIH0KIAotCiAvKiBEZWNvZGVzIGEgc2VyaWVz
IG9mIEh1ZmZtYW4gdGFibGUgdXNpbmcgUmVhZEh1ZmZtYW5Db2RlIGZ1bmN0aW9uLiAqLwotc3Rh
dGljIEJyb3RsaVJlc3VsdCBIdWZmbWFuVHJlZUdyb3VwRGVjb2RlKEh1ZmZtYW5UcmVlR3JvdXAq
IGdyb3VwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJyb3Rs
aVN0YXRlKiBzKSB7CitzdGF0aWMgQnJvdGxpRXJyb3JDb2RlIEh1ZmZtYW5UcmVlR3JvdXBEZWNv
ZGUoSHVmZm1hblRyZWVHcm91cCogZ3JvdXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQnJvdGxpU3RhdGUqIHMpIHsKICAgaWYgKHMtPnN1YnN0YXRlX3Ry
ZWVfZ3JvdXAgIT0gQlJPVExJX1NUQVRFX1RSRUVfR1JPVVBfTE9PUCkgewogICAgIHMtPm5leHQg
PSBncm91cC0+Y29kZXM7CiAgICAgcy0+aHRyZWVfaW5kZXggPSAwOwpAQCAtODk3LDE1ICs4ODks
MTUgQEAgc3RhdGljIEJyb3RsaVJlc3VsdCBIdWZmbWFuVHJlZUdyb3VwRGVjb2RlKEh1ZmZtYW5U
cmVlR3JvdXAqIGdyb3VwLAogICB9CiAgIHdoaWxlIChzLT5odHJlZV9pbmRleCA8IGdyb3VwLT5u
dW1faHRyZWVzKSB7CiAgICAgdWludDMyX3QgdGFibGVfc2l6ZTsKLSAgICBCcm90bGlSZXN1bHQg
cmVzdWx0ID0KKyAgICBCcm90bGlFcnJvckNvZGUgcmVzdWx0ID0KICAgICAgICAgUmVhZEh1ZmZt
YW5Db2RlKGdyb3VwLT5hbHBoYWJldF9zaXplLCBzLT5uZXh0LCAmdGFibGVfc2l6ZSwgcyk7Ci0g
ICAgaWYgKHJlc3VsdCAhPSBCUk9UTElfUkVTVUxUX1NVQ0NFU1MpIHJldHVybiByZXN1bHQ7Cisg
ICAgaWYgKHJlc3VsdCAhPSBCUk9UTElfU1VDQ0VTUykgcmV0dXJuIHJlc3VsdDsKICAgICBncm91
cC0+aHRyZWVzW3MtPmh0cmVlX2luZGV4XSA9IHMtPm5leHQ7CiAgICAgcy0+bmV4dCArPSB0YWJs
ZV9zaXplOwogICAgICsrcy0+aHRyZWVfaW5kZXg7CiAgIH0KICAgcy0+c3Vic3RhdGVfdHJlZV9n
cm91cCA9IEJST1RMSV9TVEFURV9UUkVFX0dST1VQX05PTkU7Ci0gIHJldHVybiBCUk9UTElfUkVT
VUxUX1NVQ0NFU1M7CisgIHJldHVybiBCUk9UTElfU1VDQ0VTUzsKIH0KIAogLyogRGVjb2RlcyBh
IGNvbnRleHQgbWFwLgpAQCAtOTE3LDE3ICs5MDksMTcgQEAgc3RhdGljIEJyb3RsaVJlc3VsdCBI
dWZmbWFuVHJlZUdyb3VwRGVjb2RlKEh1ZmZtYW5UcmVlR3JvdXAqIGdyb3VwLAogICAgIDMpIFJl
YWQgY29udGV4dCBtYXAgaXRlbXM7ICIwIiB2YWx1ZXMgY291bGQgYmUgcnVuLWxlbmd0aCBlbmNv
ZGVkLgogICAgIDQpIE9wdGlvbmFsbHksIGFwcGx5IEludmVyc2VNb3ZlVG9Gcm9udCB0cmFuc2Zv
cm0gdG8gdGhlIHJlc3VsdGluZyBtYXAuCiAgKi8KLXN0YXRpYyBCcm90bGlSZXN1bHQgRGVjb2Rl
Q29udGV4dE1hcCh1aW50MzJfdCBjb250ZXh0X21hcF9zaXplLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90KiBudW1faHRyZWVzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QqKiBjb250ZXh0X21hcF9hcmcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnJvdGxpU3RhdGUqIHMpIHsKK3N0YXRpYyBC
cm90bGlFcnJvckNvZGUgRGVjb2RlQ29udGV4dE1hcCh1aW50MzJfdCBjb250ZXh0X21hcF9zaXpl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90KiBudW1f
aHRyZWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qq
KiBjb250ZXh0X21hcF9hcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQnJvdGxpU3RhdGUqIHMpIHsKICAgQnJvdGxpQml0UmVhZGVyKiBiciA9ICZzLT5icjsKLSAg
QnJvdGxpUmVzdWx0IHJlc3VsdCA9IEJST1RMSV9SRVNVTFRfU1VDQ0VTUzsKKyAgQnJvdGxpRXJy
b3JDb2RlIHJlc3VsdCA9IEJST1RMSV9TVUNDRVNTOwogCiAgIHN3aXRjaCAoKGludClzLT5zdWJz
dGF0ZV9jb250ZXh0X21hcCkgewogICAgIGNhc2UgQlJPVExJX1NUQVRFX0NPTlRFWFRfTUFQX05P
TkU6CiAgICAgICByZXN1bHQgPSBEZWNvZGVWYXJMZW5VaW50OChzLCBiciwgbnVtX2h0cmVlcyk7
Ci0gICAgICBpZiAocmVzdWx0ICE9IEJST1RMSV9SRVNVTFRfU1VDQ0VTUykgeworICAgICAgaWYg
KHJlc3VsdCAhPSBCUk9UTElfU1VDQ0VTUykgewogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
ICAgfQogICAgICAgKCpudW1faHRyZWVzKSsrOwpAQCAtOTM2LDExICs5MjgsMTEgQEAgc3RhdGlj
IEJyb3RsaVJlc3VsdCBEZWNvZGVDb250ZXh0TWFwKHVpbnQzMl90IGNvbnRleHRfbWFwX3NpemUs
CiAgICAgICBCUk9UTElfTE9HX1VJTlQoKm51bV9odHJlZXMpOwogICAgICAgKmNvbnRleHRfbWFw
X2FyZyA9ICh1aW50OF90KilCUk9UTElfQUxMT0MocywgKHNpemVfdCljb250ZXh0X21hcF9zaXpl
KTsKICAgICAgIGlmICgqY29udGV4dF9tYXBfYXJnID09IDApIHsKLSAgICAgICAgcmV0dXJuIEJS
T1RMSV9GQUlMVVJFKCk7CisgICAgICAgIHJldHVybiBCUk9UTElfRkFJTFVSRShCUk9UTElfRVJS
T1JfQUxMT0NfQ09OVEVYVF9NQVApOwogICAgICAgfQogICAgICAgaWYgKCpudW1faHRyZWVzIDw9
IDEpIHsKICAgICAgICAgbWVtc2V0KCpjb250ZXh0X21hcF9hcmcsIDAsIChzaXplX3QpY29udGV4
dF9tYXBfc2l6ZSk7Ci0gICAgICAgIHJldHVybiBCUk9UTElfUkVTVUxUX1NVQ0NFU1M7CisgICAg
ICAgIHJldHVybiBCUk9UTElfU1VDQ0VTUzsKICAgICAgIH0KICAgICAgIHMtPnN1YnN0YXRlX2Nv
bnRleHRfbWFwID0gQlJPVExJX1NUQVRFX0NPTlRFWFRfTUFQX1JFQURfUFJFRklYOwogICAgICAg
LyogTm8gYnJlYWssIGNvbnRpbnVlIHRvIG5leHQgc3RhdGUuICovCkBAIC05NDksNyArOTQxLDcg
QEAgc3RhdGljIEJyb3RsaVJlc3VsdCBEZWNvZGVDb250ZXh0TWFwKHVpbnQzMl90IGNvbnRleHRf
bWFwX3NpemUsCiAgICAgICAvKiBJbiBuZXh0IHN0YWdlIFJlYWRIdWZmbWFuQ29kZSB1c2VzIGF0
IGxlYXN0IDQgYml0cywgc28gaXQgaXMgc2FmZQogICAgICAgICAgdG8gcGVlayA0IGJpdHMgYWhl
YWQuICovCiAgICAgICBpZiAoIUJyb3RsaVNhZmVHZXRCaXRzKGJyLCA1LCAmYml0cykpIHsKLSAg
ICAgICAgcmV0dXJuIEJST1RMSV9SRVNVTFRfTkVFRFNfTU9SRV9JTlBVVDsKKyAgICAgICAgcmV0
dXJuIEJST1RMSV9ORUVEU19NT1JFX0lOUFVUOwogICAgICAgfQogICAgICAgaWYgKChiaXRzICYg
MSkgIT0gMCkgeyAvKiBVc2UgUkxFIGZvciB6ZXJvZXMuICovCiAgICAgICAgIHMtPm1heF9ydW5f
bGVuZ3RoX3ByZWZpeCA9IChiaXRzID4+IDEpICsgMTsKQEAgLTk2NSw3ICs5NTcsNyBAQCBzdGF0
aWMgQnJvdGxpUmVzdWx0IERlY29kZUNvbnRleHRNYXAodWludDMyX3QgY29udGV4dF9tYXBfc2l6
ZSwKICAgICBjYXNlIEJST1RMSV9TVEFURV9DT05URVhUX01BUF9IVUZGTUFOOgogICAgICAgcmVz
dWx0ID0gUmVhZEh1ZmZtYW5Db2RlKCpudW1faHRyZWVzICsgcy0+bWF4X3J1bl9sZW5ndGhfcHJl
Zml4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmNvbnRleHRfbWFwX3RhYmxl
LCBOVUxMLCBzKTsKLSAgICAgIGlmIChyZXN1bHQgIT0gQlJPVExJX1JFU1VMVF9TVUNDRVNTKSBy
ZXR1cm4gcmVzdWx0OworICAgICAgaWYgKHJlc3VsdCAhPSBCUk9UTElfU1VDQ0VTUykgcmV0dXJu
IHJlc3VsdDsKICAgICAgIHMtPmNvZGUgPSAweEZGRkY7CiAgICAgICBzLT5zdWJzdGF0ZV9jb250
ZXh0X21hcCA9IEJST1RMSV9TVEFURV9DT05URVhUX01BUF9ERUNPREU7CiAgICAgICAvKiBObyBi
cmVhaywgY29udGludWUgdG8gbmV4dCBzdGF0ZS4gKi8KQEAgLTk4MSw3ICs5NzMsNyBAQCBzdGF0
aWMgQnJvdGxpUmVzdWx0IERlY29kZUNvbnRleHRNYXAodWludDMyX3QgY29udGV4dF9tYXBfc2l6
ZSwKICAgICAgICAgaWYgKCFTYWZlUmVhZFN5bWJvbChzLT5jb250ZXh0X21hcF90YWJsZSwgYnIs
ICZjb2RlKSkgewogICAgICAgICAgIHMtPmNvZGUgPSAweEZGRkY7CiAgICAgICAgICAgcy0+Y29u
dGV4dF9pbmRleCA9IGNvbnRleHRfaW5kZXg7Ci0gICAgICAgICAgcmV0dXJuIEJST1RMSV9SRVNV
TFRfTkVFRFNfTU9SRV9JTlBVVDsKKyAgICAgICAgICByZXR1cm4gQlJPVExJX05FRURTX01PUkVf
SU5QVVQ7CiAgICAgICAgIH0KICAgICAgICAgQlJPVExJX0xPR19VSU5UKGNvZGUpOwogCkBAIC0x
MDAwLDEyICs5OTIsMTIgQEAgcmxlQ29kZToKICAgICAgICAgICBpZiAoIUJyb3RsaVNhZmVSZWFk
Qml0cyhiciwgY29kZSwgJnJlcHMpKSB7CiAgICAgICAgICAgICBzLT5jb2RlID0gY29kZTsKICAg
ICAgICAgICAgIHMtPmNvbnRleHRfaW5kZXggPSBjb250ZXh0X2luZGV4OwotICAgICAgICAgICAg
cmV0dXJuIEJST1RMSV9SRVNVTFRfTkVFRFNfTU9SRV9JTlBVVDsKKyAgICAgICAgICAgIHJldHVy
biBCUk9UTElfTkVFRFNfTU9SRV9JTlBVVDsKICAgICAgICAgICB9CiAgICAgICAgICAgcmVwcyAr
PSAxVSA8PCBjb2RlOwogICAgICAgICAgIEJST1RMSV9MT0dfVUlOVChyZXBzKTsKICAgICAgICAg
ICBpZiAoY29udGV4dF9pbmRleCArIHJlcHMgPiBjb250ZXh0X21hcF9zaXplKSB7Ci0gICAgICAg
ICAgICByZXR1cm4gQlJPVExJX0ZBSUxVUkUoKTsKKyAgICAgICAgICAgIHJldHVybiBCUk9UTElf
RkFJTFVSRShCUk9UTElfRVJST1JfRk9STUFUX0NPTlRFWFRfTUFQX1JFUEVBVCk7CiAgICAgICAg
ICAgfQogICAgICAgICAgIGRvIHsKICAgICAgICAgICAgIGNvbnRleHRfbWFwW2NvbnRleHRfaW5k
ZXgrK10gPSAwOwpAQCAtMTAxOCwxNiArMTAxMCwxNiBAQCBybGVDb2RlOgogICAgICAgdWludDMy
X3QgYml0czsKICAgICAgIGlmICghQnJvdGxpU2FmZVJlYWRCaXRzKGJyLCAxLCAmYml0cykpIHsK
ICAgICAgICAgcy0+c3Vic3RhdGVfY29udGV4dF9tYXAgPSBCUk9UTElfU1RBVEVfQ09OVEVYVF9N
QVBfVFJBTlNGT1JNOwotICAgICAgICByZXR1cm4gQlJPVExJX1JFU1VMVF9ORUVEU19NT1JFX0lO
UFVUOworICAgICAgICByZXR1cm4gQlJPVExJX05FRURTX01PUkVfSU5QVVQ7CiAgICAgICB9CiAg
ICAgICBpZiAoYml0cyAhPSAwKSB7CiAgICAgICAgIEludmVyc2VNb3ZlVG9Gcm9udFRyYW5zZm9y
bSgqY29udGV4dF9tYXBfYXJnLCBjb250ZXh0X21hcF9zaXplLCBzKTsKICAgICAgIH0KICAgICAg
IHMtPnN1YnN0YXRlX2NvbnRleHRfbWFwID0gQlJPVExJX1NUQVRFX0NPTlRFWFRfTUFQX05PTkU7
Ci0gICAgICByZXR1cm4gQlJPVExJX1JFU1VMVF9TVUNDRVNTOworICAgICAgcmV0dXJuIEJST1RM
SV9TVUNDRVNTOwogICAgIH0KICAgICBkZWZhdWx0OgotICAgICAgcmV0dXJuIEJST1RMSV9GQUlM
VVJFKCk7CisgICAgICByZXR1cm4gQlJPVExJX0ZBSUxVUkUoQlJPVExJX0VSUk9SX1VOUkVBQ0hB
QkxFKTsKICAgfQogfQogCkBAIC0xMDc0LDIyICsxMDY2LDQ1IEBAIHN0YXRpYyBCUk9UTElfSU5M
SU5FIGludCBEZWNvZGVCbG9ja1R5cGVBbmRMZW5ndGgoaW50IHNhZmUsCiAgIHJldHVybiAxOwog
fQogCitzdGF0aWMgQlJPVExJX0lOTElORSB2b2lkIERldGVjdFRyaXZpYWxMaXRlcmFsQmxvY2tU
eXBlcyhCcm90bGlTdGF0ZSogcykgeworICBzaXplX3QgaTsKKyAgZm9yIChpID0gMDsgaSA8IDg7
ICsraSkgcy0+dHJpdmlhbF9saXRlcmFsX2NvbnRleHRzW2ldID0gMDsKKyAgZm9yIChpID0gMDsg
aSA8IHMtPm51bV9ibG9ja190eXBlc1swXTsgaSsrKSB7CisgICAgc2l6ZV90IG9mZnNldCA9IGkg
PDwga0xpdGVyYWxDb250ZXh0Qml0czsKKyAgICBzaXplX3QgZXJyb3IgPSAwOworICAgIHNpemVf
dCBzYW1wbGUgPSBzLT5jb250ZXh0X21hcFtvZmZzZXRdOworICAgIHNpemVfdCBqOworICAgIGZv
ciAoaiA9IDA7IGogPCAoMXUgPDwga0xpdGVyYWxDb250ZXh0Qml0cyk7KSB7CisgICAgICBCUk9U
TElfUkVQRUFUKDQsIGVycm9yIHw9IHMtPmNvbnRleHRfbWFwW29mZnNldCArIGorK10gXiBzYW1w
bGU7KQorICAgIH0KKyAgICBpZiAoZXJyb3IgPT0gMCkgeworICAgICAgcy0+dHJpdmlhbF9saXRl
cmFsX2NvbnRleHRzW2kgPj4gNV0gfD0gMXUgPDwgKGkgJiAzMSk7CisgICAgfQorICB9Cit9CisK
K3N0YXRpYyBCUk9UTElfSU5MSU5FIHZvaWQgUHJlcGFyZUxpdGVyYWxEZWNvZGluZyhCcm90bGlT
dGF0ZSogcykgeworICB1aW50OF90IGNvbnRleHRfbW9kZTsKKyAgc2l6ZV90IHRyaXZpYWw7Cisg
IHVpbnQzMl90IGJsb2NrX3R5cGUgPSBzLT5ibG9ja190eXBlX3JiWzFdOworICB1aW50MzJfdCBj
b250ZXh0X29mZnNldCA9IGJsb2NrX3R5cGUgPDwga0xpdGVyYWxDb250ZXh0Qml0czsKKyAgcy0+
Y29udGV4dF9tYXBfc2xpY2UgPSBzLT5jb250ZXh0X21hcCArIGNvbnRleHRfb2Zmc2V0OworICB0
cml2aWFsID0gcy0+dHJpdmlhbF9saXRlcmFsX2NvbnRleHRzW2Jsb2NrX3R5cGUgPj4gNV07Cisg
IHMtPnRyaXZpYWxfbGl0ZXJhbF9jb250ZXh0ID0gKHRyaXZpYWwgPj4gKGJsb2NrX3R5cGUgJiAz
MSkpICYgMTsKKyAgcy0+bGl0ZXJhbF9odHJlZSA9IHMtPmxpdGVyYWxfaGdyb3VwLmh0cmVlc1tz
LT5jb250ZXh0X21hcF9zbGljZVswXV07CisgIGNvbnRleHRfbW9kZSA9IHMtPmNvbnRleHRfbW9k
ZXNbYmxvY2tfdHlwZV07CisgIHMtPmNvbnRleHRfbG9va3VwMSA9ICZrQ29udGV4dExvb2t1cFtr
Q29udGV4dExvb2t1cE9mZnNldHNbY29udGV4dF9tb2RlXV07CisgIHMtPmNvbnRleHRfbG9va3Vw
MiA9ICZrQ29udGV4dExvb2t1cFtrQ29udGV4dExvb2t1cE9mZnNldHNbY29udGV4dF9tb2RlICsg
MV1dOworfQorCiAvKiBEZWNvZGVzIHRoZSBibG9jayB0eXBlIGFuZCB1cGRhdGVzIHRoZSBzdGF0
ZSBmb3IgbGl0ZXJhbCBjb250ZXh0LgogICAgUmVhZHMgMy4uNTQgYml0cy4gKi8KIHN0YXRpYyBC
Uk9UTElfSU5MSU5FIGludCBEZWNvZGVMaXRlcmFsQmxvY2tTd2l0Y2hJbnRlcm5hbChpbnQgc2Fm
ZSwKICAgICBCcm90bGlTdGF0ZSogcykgewotICB1aW50OF90IGNvbnRleHRfbW9kZTsKLSAgdWlu
dDMyX3QgY29udGV4dF9vZmZzZXQ7CiAgIGlmICghRGVjb2RlQmxvY2tUeXBlQW5kTGVuZ3RoKHNh
ZmUsIHMsIDApKSB7CiAgICAgcmV0dXJuIDA7CiAgIH0KLSAgY29udGV4dF9vZmZzZXQgPSBzLT5i
bG9ja190eXBlX3JiWzFdIDw8IGtMaXRlcmFsQ29udGV4dEJpdHM7Ci0gIHMtPmNvbnRleHRfbWFw
X3NsaWNlID0gcy0+Y29udGV4dF9tYXAgKyBjb250ZXh0X29mZnNldDsKLSAgcy0+bGl0ZXJhbF9o
dHJlZV9pbmRleCA9IHMtPmNvbnRleHRfbWFwX3NsaWNlWzBdOwotICBzLT5saXRlcmFsX2h0cmVl
ID0gcy0+bGl0ZXJhbF9oZ3JvdXAuaHRyZWVzW3MtPmxpdGVyYWxfaHRyZWVfaW5kZXhdOwotICBj
b250ZXh0X21vZGUgPSBzLT5jb250ZXh0X21vZGVzW3MtPmJsb2NrX3R5cGVfcmJbMV1dOwotICBz
LT5jb250ZXh0X2xvb2t1cDEgPSAma0NvbnRleHRMb29rdXBba0NvbnRleHRMb29rdXBPZmZzZXRz
W2NvbnRleHRfbW9kZV1dOwotICBzLT5jb250ZXh0X2xvb2t1cDIgPSAma0NvbnRleHRMb29rdXBb
a0NvbnRleHRMb29rdXBPZmZzZXRzW2NvbnRleHRfbW9kZSArIDFdXTsKKyAgUHJlcGFyZUxpdGVy
YWxEZWNvZGluZyhzKTsKICAgcmV0dXJuIDE7CiB9CiAKQEAgLTExNDAsOCArMTE1NSw4IEBAIHN0
YXRpYyBpbnQgQlJPVExJX05PSU5MSU5FIFNhZmVEZWNvZGVEaXN0YW5jZUJsb2NrU3dpdGNoKEJy
b3RsaVN0YXRlKiBzKSB7CiAgIHJldHVybiBEZWNvZGVEaXN0YW5jZUJsb2NrU3dpdGNoSW50ZXJu
YWwoMSwgcyk7CiB9CiAKLXN0YXRpYyBCcm90bGlSZXN1bHQgV3JpdGVSaW5nQnVmZmVyKHNpemVf
dCogYXZhaWxhYmxlX291dCwgdWludDhfdCoqIG5leHRfb3V0LAotICAgIHNpemVfdCogdG90YWxf
b3V0LCBCcm90bGlTdGF0ZSogcykgeworc3RhdGljIEJyb3RsaUVycm9yQ29kZSBCUk9UTElfTk9J
TkxJTkUgV3JpdGVSaW5nQnVmZmVyKHNpemVfdCogYXZhaWxhYmxlX291dCwKKyAgICB1aW50OF90
KiogbmV4dF9vdXQsIHNpemVfdCogdG90YWxfb3V0LCBCcm90bGlTdGF0ZSogcykgewogICBzaXpl
X3QgcG9zID0gKHMtPnBvcyA+IHMtPnJpbmdidWZmZXJfc2l6ZSkgPyAoc2l6ZV90KXMtPnJpbmdi
dWZmZXJfc2l6ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OiAoc2l6ZV90KShzLT5wb3MpOwogICB1aW50OF90KiBzdGFydCA9CkBAIC0xMTUzLDcgKzExNjgs
NyBAQCBzdGF0aWMgQnJvdGxpUmVzdWx0IFdyaXRlUmluZ0J1ZmZlcihzaXplX3QqIGF2YWlsYWJs
ZV9vdXQsIHVpbnQ4X3QqKiBuZXh0X291dCwKICAgICBudW1fd3JpdHRlbiA9IHRvX3dyaXRlOwog
ICB9CiAgIGlmIChzLT5tZXRhX2Jsb2NrX3JlbWFpbmluZ19sZW4gPCAwKSB7Ci0gICAgcmV0dXJu
IEJST1RMSV9GQUlMVVJFKCk7CisgICAgcmV0dXJuIEJST1RMSV9GQUlMVVJFKEJST1RMSV9FUlJP
Ul9GT1JNQVRfQkxPQ0tfTEVOR1RIXzEpOwogICB9CiAgIG1lbWNweSgqbmV4dF9vdXQsIHN0YXJ0
LCBudW1fd3JpdHRlbik7CiAgICpuZXh0X291dCArPSBudW1fd3JpdHRlbjsKQEAgLTExNjEsMTEg
KzExNzYsMTYgQEAgc3RhdGljIEJyb3RsaVJlc3VsdCBXcml0ZVJpbmdCdWZmZXIoc2l6ZV90KiBh
dmFpbGFibGVfb3V0LCB1aW50OF90KiogbmV4dF9vdXQsCiAgIEJST1RMSV9MT0dfVUlOVCh0b193
cml0ZSk7CiAgIEJST1RMSV9MT0dfVUlOVChudW1fd3JpdHRlbik7CiAgIHMtPnBhcnRpYWxfcG9z
X291dCArPSBudW1fd3JpdHRlbjsKLSAgKnRvdGFsX291dCA9IHMtPnBhcnRpYWxfcG9zX291dDsK
KyAgaWYgKHRvdGFsX291dCkgKnRvdGFsX291dCA9IHMtPnBhcnRpYWxfcG9zX291dDsKICAgaWYg
KG51bV93cml0dGVuIDwgdG9fd3JpdGUpIHsKLSAgICByZXR1cm4gQlJPVExJX1JFU1VMVF9ORUVE
U19NT1JFX09VVFBVVDsKKyAgICByZXR1cm4gQlJPVExJX05FRURTX01PUkVfT1VUUFVUOworICB9
CisKKyAgaWYgKHMtPnBvcyA+PSBzLT5yaW5nYnVmZmVyX3NpemUpIHsKKyAgICBzLT5wb3MgLT0g
cy0+cmluZ2J1ZmZlcl9zaXplOworICAgIHMtPnJiX3JvdW5kdHJpcHMrKzsKICAgfQotICByZXR1
cm4gQlJPVExJX1JFU1VMVF9TVUNDRVNTOworICByZXR1cm4gQlJPVExJX1NVQ0NFU1M7CiB9CiAK
IC8qIEFsbG9jYXRlcyByaW5nYnVmZmVyLgpAQCAtMTIwMiwxMiArMTIyMiwxMiBAQCBzdGF0aWMg
aW50IEJST1RMSV9OT0lOTElORSBCcm90bGlBbGxvY2F0ZVJpbmdCdWZmZXIoQnJvdGxpU3RhdGUq
IHMpIHsKICAgcmV0dXJuIDE7CiB9CiAKLXN0YXRpYyBCcm90bGlSZXN1bHQgQlJPVExJX05PSU5M
SU5FIENvcHlVbmNvbXByZXNzZWRCbG9ja1RvT3V0cHV0KAorc3RhdGljIEJyb3RsaUVycm9yQ29k
ZSBCUk9UTElfTk9JTkxJTkUgQ29weVVuY29tcHJlc3NlZEJsb2NrVG9PdXRwdXQoCiAgICAgc2l6
ZV90KiBhdmFpbGFibGVfb3V0LCB1aW50OF90KiogbmV4dF9vdXQsIHNpemVfdCogdG90YWxfb3V0
LAogICAgIEJyb3RsaVN0YXRlKiBzKSB7CiAgIC8qIFRPRE86IGF2b2lkIGFsbG9jYXRpb24gZm9y
IHNpbmdsZSB1bmNvbXByZXNzZWQgYmxvY2suICovCiAgIGlmICghcy0+cmluZ2J1ZmZlciAmJiAh
QnJvdGxpQWxsb2NhdGVSaW5nQnVmZmVyKHMpKSB7Ci0gICAgcmV0dXJuIEJST1RMSV9GQUlMVVJF
KCk7CisgICAgcmV0dXJuIEJST1RMSV9GQUlMVVJFKEJST1RMSV9FUlJPUl9BTExPQ19SSU5HX0JV
RkZFUl8xKTsKICAgfQogCiAgIC8qIFN0YXRlIG1hY2hpbmUgKi8KQEAgLTEyMjcsMjggKzEyNDcs
MjYgQEAgc3RhdGljIEJyb3RsaVJlc3VsdCBCUk9UTElfTk9JTkxJTkUgQ29weVVuY29tcHJlc3Nl
ZEJsb2NrVG9PdXRwdXQoCiAgICAgICAgIHMtPm1ldGFfYmxvY2tfcmVtYWluaW5nX2xlbiAtPSBu
Ynl0ZXM7CiAgICAgICAgIGlmIChzLT5wb3MgPCBzLT5yaW5nYnVmZmVyX3NpemUpIHsKICAgICAg
ICAgICBpZiAocy0+bWV0YV9ibG9ja19yZW1haW5pbmdfbGVuID09IDApIHsKLSAgICAgICAgICAg
IHJldHVybiBCUk9UTElfUkVTVUxUX1NVQ0NFU1M7CisgICAgICAgICAgICByZXR1cm4gQlJPVExJ
X1NVQ0NFU1M7CiAgICAgICAgICAgfQotICAgICAgICAgIHJldHVybiBCUk9UTElfUkVTVUxUX05F
RURTX01PUkVfSU5QVVQ7CisgICAgICAgICAgcmV0dXJuIEJST1RMSV9ORUVEU19NT1JFX0lOUFVU
OwogICAgICAgICB9CiAgICAgICAgIHMtPnN1YnN0YXRlX3VuY29tcHJlc3NlZCA9IEJST1RMSV9T
VEFURV9VTkNPTVBSRVNTRURfV1JJVEU7CiAgICAgICAgIC8qIE5vIGJyZWFrLCBjb250aW51ZSB0
byBuZXh0IHN0YXRlICovCiAgICAgICB9CiAgICAgICBjYXNlIEJST1RMSV9TVEFURV9VTkNPTVBS
RVNTRURfV1JJVEU6IHsKLSAgICAgICAgQnJvdGxpUmVzdWx0IHJlc3VsdCA9CisgICAgICAgIEJy
b3RsaUVycm9yQ29kZSByZXN1bHQgPQogICAgICAgICAgICAgV3JpdGVSaW5nQnVmZmVyKGF2YWls
YWJsZV9vdXQsIG5leHRfb3V0LCB0b3RhbF9vdXQsIHMpOwotICAgICAgICBpZiAocmVzdWx0ICE9
IEJST1RMSV9SRVNVTFRfU1VDQ0VTUykgeworICAgICAgICBpZiAocmVzdWx0ICE9IEJST1RMSV9T
VUNDRVNTKSB7CiAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQotICAgICAgICBz
LT5wb3MgPSAwOwotICAgICAgICBzLT5yYl9yb3VuZHRyaXBzKys7CiAgICAgICAgIHMtPm1heF9k
aXN0YW5jZSA9IHMtPm1heF9iYWNrd2FyZF9kaXN0YW5jZTsKICAgICAgICAgcy0+c3Vic3RhdGVf
dW5jb21wcmVzc2VkID0gQlJPVExJX1NUQVRFX1VOQ09NUFJFU1NFRF9OT05FOwogICAgICAgICBi
cmVhazsKICAgICAgIH0KICAgICB9CiAgIH0KLSAgcmV0dXJuIEJST1RMSV9GQUlMVVJFKCk7Cisg
IEJST1RMSV9EQ0hFQ0soMCk7ICAvKiBVbnJlYWNoYWJsZSAqLwogfQogCiBpbnQgQnJvdGxpRGVj
b21wcmVzc2VkU2l6ZShzaXplX3QgZW5jb2RlZF9zaXplLApAQCAtMTI2Myw3ICsxMjgxLDcgQEAg
aW50IEJyb3RsaURlY29tcHJlc3NlZFNpemUoc2l6ZV90IGVuY29kZWRfc2l6ZSwKICAgICByZXR1
cm4gMDsKICAgfQogICBEZWNvZGVXaW5kb3dCaXRzKCZzLmJyKTsKLSAgaWYgKERlY29kZU1ldGFC
bG9ja0xlbmd0aCgmcywgJnMuYnIpICE9IEJST1RMSV9SRVNVTFRfU1VDQ0VTUykgeworICBpZiAo
RGVjb2RlTWV0YUJsb2NrTGVuZ3RoKCZzLCAmcy5icikgIT0gQlJPVExJX1NVQ0NFU1MpIHsKICAg
ICByZXR1cm4gMDsKICAgfQogICAqZGVjb2RlZF9zaXplID0gKHNpemVfdClzLm1ldGFfYmxvY2tf
cmVtYWluaW5nX2xlbjsKQEAgLTEyODcsNyArMTMwNSw4IEBAIGludCBCcm90bGlEZWNvbXByZXNz
ZWRTaXplKHNpemVfdCBlbmNvZGVkX3NpemUsCiBzdGF0aWMgdm9pZCBCUk9UTElfTk9JTkxJTkUg
QnJvdGxpQ2FsY3VsYXRlUmluZ0J1ZmZlclNpemUoQnJvdGxpU3RhdGUqIHMsCiAgICAgQnJvdGxp
Qml0UmVhZGVyKiBicikgewogICBpbnQgaXNfbGFzdCA9IHMtPmlzX2xhc3RfbWV0YWJsb2NrOwot
ICBzLT5yaW5nYnVmZmVyX3NpemUgPSAxIDw8IHMtPndpbmRvd19iaXRzOworICBpbnQgd2luZG93
X3NpemUgPSAxIDw8IHMtPndpbmRvd19iaXRzOworICBzLT5yaW5nYnVmZmVyX3NpemUgPSB3aW5k
b3dfc2l6ZTsKIAogICBpZiAocy0+aXNfdW5jb21wcmVzc2VkKSB7CiAgICAgaW50IG5leHRfYmxv
Y2tfaGVhZGVyID0KQEAgLTEzMDIsMjIgKzEzMjEsMTcgQEAgc3RhdGljIHZvaWQgQlJPVExJX05P
SU5MSU5FIEJyb3RsaUNhbGN1bGF0ZVJpbmdCdWZmZXJTaXplKEJyb3RsaVN0YXRlKiBzLAogICAv
KiBXZSBuZWVkIGF0IGxlYXN0IDIgYnl0ZXMgb2YgcmluZyBidWZmZXIgc2l6ZSB0byBnZXQgdGhl
IGxhc3QgdHdvCiAgICAgIGJ5dGVzIGZvciBjb250ZXh0IGZyb20gdGhlcmUgKi8KICAgaWYgKGlz
X2xhc3QpIHsKLSAgICB3aGlsZSAocy0+cmluZ2J1ZmZlcl9zaXplID49IHMtPm1ldGFfYmxvY2tf
cmVtYWluaW5nX2xlbiAqIDIgJiYKLSAgICAgICAgICAgcy0+cmluZ2J1ZmZlcl9zaXplID4gMzIp
IHsKKyAgICBpbnQgbWluX3NpemVfeDIgPSAocy0+bWV0YV9ibG9ja19yZW1haW5pbmdfbGVuICsg
cy0+Y3VzdG9tX2RpY3Rfc2l6ZSkgKiAyOworICAgIHdoaWxlIChzLT5yaW5nYnVmZmVyX3NpemUg
Pj0gbWluX3NpemVfeDIgJiYgcy0+cmluZ2J1ZmZlcl9zaXplID4gMzIpIHsKICAgICAgIHMtPnJp
bmdidWZmZXJfc2l6ZSA+Pj0gMTsKICAgICB9CiAgIH0KIAotICAvKiBCdXQgbWFrZSBpdCBmaXQg
dGhlIGN1c3RvbSBkaWN0aW9uYXJ5IGlmIHRoZXJlIGlzIG9uZS4gKi8KLSAgd2hpbGUgKHMtPnJp
bmdidWZmZXJfc2l6ZSA8IHMtPmN1c3RvbV9kaWN0X3NpemUpIHsKLSAgICBzLT5yaW5nYnVmZmVy
X3NpemUgPDw9IDE7Ci0gIH0KLQogICBzLT5yaW5nYnVmZmVyX21hc2sgPSBzLT5yaW5nYnVmZmVy
X3NpemUgLSAxOwogfQogCiAvKiBSZWFkcyAxLi4yNTYgMi1iaXQgY29udGV4dCBtb2Rlcy4gKi8K
LXN0YXRpYyBCcm90bGlSZXN1bHQgUmVhZENvbnRleHRNb2RlcyhCcm90bGlTdGF0ZSogcykgewor
c3RhdGljIEJyb3RsaUVycm9yQ29kZSBSZWFkQ29udGV4dE1vZGVzKEJyb3RsaVN0YXRlKiBzKSB7
CiAgIEJyb3RsaUJpdFJlYWRlciogYnIgPSAmcy0+YnI7CiAgIGludCBpID0gcy0+bG9vcF9jb3Vu
dGVyOwogCkBAIC0xMzI1LDEzICsxMzM5LDEzIEBAIHN0YXRpYyBCcm90bGlSZXN1bHQgUmVhZENv
bnRleHRNb2RlcyhCcm90bGlTdGF0ZSogcykgewogICAgIHVpbnQzMl90IGJpdHM7CiAgICAgaWYg
KCFCcm90bGlTYWZlUmVhZEJpdHMoYnIsIDIsICZiaXRzKSkgewogICAgICAgcy0+bG9vcF9jb3Vu
dGVyID0gaTsKLSAgICAgIHJldHVybiBCUk9UTElfUkVTVUxUX05FRURTX01PUkVfSU5QVVQ7Cisg
ICAgICByZXR1cm4gQlJPVExJX05FRURTX01PUkVfSU5QVVQ7CiAgICAgfQogICAgIHMtPmNvbnRl
eHRfbW9kZXNbaV0gPSAodWludDhfdCkoYml0cyA8PCAxKTsKICAgICBCUk9UTElfTE9HX0FSUkFZ
X0lOREVYKHMtPmNvbnRleHRfbW9kZXMsIGkpOwogICAgIGkrKzsKICAgfQotICByZXR1cm4gQlJP
VExJX1JFU1VMVF9TVUNDRVNTOworICByZXR1cm4gQlJPVExJX1NVQ0NFU1M7CiB9CiAKIHN0YXRp
YyBCUk9UTElfSU5MSU5FIHZvaWQgVGFrZURpc3RhbmNlRnJvbVJpbmdCdWZmZXIoQnJvdGxpU3Rh
dGUqIHMpIHsKQEAgLTE0OTUsMjcgKzE1MDksMjcgQEAgc3RhdGljIEJST1RMSV9JTkxJTkUgaW50
IENoZWNrSW5wdXRBbW91bnQoaW50IHNhZmUsCiAgIHJldHVybiBCcm90bGlDaGVja0lucHV0QW1v
dW50KGJyLCBudW0pOwogfQogCi0jZGVmaW5lIEJST1RMSV9TQUZFKE1FVEhPRCkgICAgICAgICAg
ICAgICAgICAgICAgXAotICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICBpZiAoc2FmZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgICBpZiAoIVNhZmUjI01FVEhPRCkgeyAgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgICAgICByZXN1bHQgPSBCUk9UTElfUkVTVUxUX05FRURTX01PUkVfSU5QVVQ7IFwKLSAgICAg
ICAgZ290byBzYXZlU3RhdGVBbmRSZXR1cm47ICAgICAgICAgICAgICAgICBcCi0gICAgICB9ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gZWxzZSB7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIE1FVEhPRDsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBCUk9UTElfU0FGRShNRVRIT0QpICAg
ICAgICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIGlmIChzYWZlKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgaWYg
KCFTYWZlIyNNRVRIT0QpIHsgICAgICAgICAgICAgICAgXAorICAgICAgICByZXN1bHQgPSBCUk9U
TElfTkVFRFNfTU9SRV9JTlBVVDsgXAorICAgICAgICBnb3RvIHNhdmVTdGF0ZUFuZFJldHVybjsg
ICAgICAgICAgXAorICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgTUVUSE9E
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAogICB9CiAKLXN0YXRpYyBCUk9UTElfSU5MSU5FIEJyb3RsaVJl
c3VsdCBQcm9jZXNzQ29tbWFuZHNJbnRlcm5hbChpbnQgc2FmZSwKK3N0YXRpYyBCUk9UTElfSU5M
SU5FIEJyb3RsaUVycm9yQ29kZSBQcm9jZXNzQ29tbWFuZHNJbnRlcm5hbChpbnQgc2FmZSwKICAg
ICBCcm90bGlTdGF0ZSogcykgewogICBpbnQgcG9zID0gcy0+cG9zOwogICBpbnQgaSA9IHMtPmxv
b3BfY291bnRlcjsKLSAgQnJvdGxpUmVzdWx0IHJlc3VsdCA9IEJST1RMSV9SRVNVTFRfU1VDQ0VT
UzsKKyAgQnJvdGxpRXJyb3JDb2RlIHJlc3VsdCA9IEJST1RMSV9TVUNDRVNTOwogICBCcm90bGlC
aXRSZWFkZXIqIGJyID0gJnMtPmJyOwogCiAgIGlmICghQ2hlY2tJbnB1dEFtb3VudChzYWZlLCBi
ciwgMjgpKSB7Ci0gICAgcmVzdWx0ID0gQlJPVExJX1JFU1VMVF9ORUVEU19NT1JFX0lOUFVUOwor
ICAgIHJlc3VsdCA9IEJST1RMSV9ORUVEU19NT1JFX0lOUFVUOwogICAgIGdvdG8gc2F2ZVN0YXRl
QW5kUmV0dXJuOwogICB9CiAgIGlmICghc2FmZSkgewpAQCAtMTUzMiw3ICsxNTQ2LDcgQEAgc3Rh
dGljIEJST1RMSV9JTkxJTkUgQnJvdGxpUmVzdWx0IFByb2Nlc3NDb21tYW5kc0ludGVybmFsKGlu
dCBzYWZlLAogICB9IGVsc2UgaWYgKHMtPnN0YXRlID09IEJST1RMSV9TVEFURV9DT01NQU5EX1BP
U1RfV1JBUF9DT1BZKSB7CiAgICAgZ290byBDb21tYW5kUG9zdFdyYXBDb3B5OwogICB9IGVsc2Ug
ewotICAgIHJldHVybiBCUk9UTElfRkFJTFVSRSgpOworICAgIHJldHVybiBCUk9UTElfRkFJTFVS
RShCUk9UTElfRVJST1JfVU5SRUFDSEFCTEUpOwogICB9CiAKIENvbW1hbmRCZWdpbjoKQEAgLTE1
NDEsNyArMTU1NSw3IEBAIENvbW1hbmRCZWdpbjoKICAgfQogICBpZiAoIUNoZWNrSW5wdXRBbW91
bnQoc2FmZSwgYnIsIDI4KSkgeyAvKiAxNTYgYml0cyArIDcgYnl0ZXMgKi8KICAgICBzLT5zdGF0
ZSA9IEJST1RMSV9TVEFURV9DT01NQU5EX0JFR0lOOwotICAgIHJlc3VsdCA9IEJST1RMSV9SRVNV
TFRfTkVFRFNfTU9SRV9JTlBVVDsKKyAgICByZXN1bHQgPSBCUk9UTElfTkVFRFNfTU9SRV9JTlBV
VDsKICAgICBnb3RvIHNhdmVTdGF0ZUFuZFJldHVybjsKICAgfQogICBpZiAoUFJFRElDVF9GQUxT
RShzLT5ibG9ja19sZW5ndGhbMV0gPT0gMCkpIHsKQEAgLTE1NjksMTIgKzE1ODMsMTMgQEAgQ29t
bWFuZElubmVyOgogICAgIGRvIHsKICAgICAgIGlmICghQ2hlY2tJbnB1dEFtb3VudChzYWZlLCBi
ciwgMjgpKSB7IC8qIDE2MiBiaXRzICsgNyBieXRlcyAqLwogICAgICAgICBzLT5zdGF0ZSA9IEJS
T1RMSV9TVEFURV9DT01NQU5EX0lOTkVSOwotICAgICAgICByZXN1bHQgPSBCUk9UTElfUkVTVUxU
X05FRURTX01PUkVfSU5QVVQ7CisgICAgICAgIHJlc3VsdCA9IEJST1RMSV9ORUVEU19NT1JFX0lO
UFVUOwogICAgICAgICBnb3RvIHNhdmVTdGF0ZUFuZFJldHVybjsKICAgICAgIH0KICAgICAgIGlm
IChQUkVESUNUX0ZBTFNFKHMtPmJsb2NrX2xlbmd0aFswXSA9PSAwKSkgewogICAgICAgICBCUk9U
TElfU0FGRShEZWNvZGVMaXRlcmFsQmxvY2tTd2l0Y2gocykpOwogICAgICAgICBQcmVsb2FkU3lt
Ym9sKHNhZmUsIHMtPmxpdGVyYWxfaHRyZWUsIGJyLCAmYml0cywgJnZhbHVlKTsKKyAgICAgICAg
aWYgKCFzLT50cml2aWFsX2xpdGVyYWxfY29udGV4dCkgZ290byBDb21tYW5kSW5uZXI7CiAgICAg
ICB9CiAgICAgICBpZiAoIXNhZmUpIHsKICAgICAgICAgcy0+cmluZ2J1ZmZlcltwb3NdID0KQEAg
LTE1ODIsMTMgKzE1OTcsMTIgQEAgQ29tbWFuZElubmVyOgogICAgICAgfSBlbHNlIHsKICAgICAg
ICAgdWludDMyX3QgbGl0ZXJhbDsKICAgICAgICAgaWYgKCFTYWZlUmVhZFN5bWJvbChzLT5saXRl
cmFsX2h0cmVlLCBiciwgJmxpdGVyYWwpKSB7Ci0gICAgICAgICAgcmVzdWx0ID0gQlJPVExJX1JF
U1VMVF9ORUVEU19NT1JFX0lOUFVUOworICAgICAgICAgIHJlc3VsdCA9IEJST1RMSV9ORUVEU19N
T1JFX0lOUFVUOwogICAgICAgICAgIGdvdG8gc2F2ZVN0YXRlQW5kUmV0dXJuOwogICAgICAgICB9
CiAgICAgICAgIHMtPnJpbmdidWZmZXJbcG9zXSA9ICh1aW50OF90KWxpdGVyYWw7CiAgICAgICB9
CiAgICAgICAtLXMtPmJsb2NrX2xlbmd0aFswXTsKLSAgICAgIEJST1RMSV9MT0dfVUlOVChzLT5s
aXRlcmFsX2h0cmVlX2luZGV4KTsKICAgICAgIEJST1RMSV9MT0dfQVJSQVlfSU5ERVgocy0+cmlu
Z2J1ZmZlciwgcG9zKTsKICAgICAgICsrcG9zOwogICAgICAgaWYgKFBSRURJQ1RfRkFMU0UocG9z
ID09IHMtPnJpbmdidWZmZXJfc2l6ZSkpIHsKQEAgLTE2MDUsMTEgKzE2MTksMTIgQEAgQ29tbWFu
ZElubmVyOgogICAgICAgdWludDhfdCBjb250ZXh0OwogICAgICAgaWYgKCFDaGVja0lucHV0QW1v
dW50KHNhZmUsIGJyLCAyOCkpIHsgLyogMTYyIGJpdHMgKyA3IGJ5dGVzICovCiAgICAgICAgIHMt
PnN0YXRlID0gQlJPVExJX1NUQVRFX0NPTU1BTkRfSU5ORVI7Ci0gICAgICAgIHJlc3VsdCA9IEJS
T1RMSV9SRVNVTFRfTkVFRFNfTU9SRV9JTlBVVDsKKyAgICAgICAgcmVzdWx0ID0gQlJPVExJX05F
RURTX01PUkVfSU5QVVQ7CiAgICAgICAgIGdvdG8gc2F2ZVN0YXRlQW5kUmV0dXJuOwogICAgICAg
fQogICAgICAgaWYgKFBSRURJQ1RfRkFMU0Uocy0+YmxvY2tfbGVuZ3RoWzBdID09IDApKSB7CiAg
ICAgICAgIEJST1RMSV9TQUZFKERlY29kZUxpdGVyYWxCbG9ja1N3aXRjaChzKSk7CisgICAgICAg
IGlmIChzLT50cml2aWFsX2xpdGVyYWxfY29udGV4dCkgZ290byBDb21tYW5kSW5uZXI7CiAgICAg
ICB9CiAgICAgICBjb250ZXh0ID0gcy0+Y29udGV4dF9sb29rdXAxW3AxXSB8IHMtPmNvbnRleHRf
bG9va3VwMltwMl07CiAgICAgICBCUk9UTElfTE9HX1VJTlQoY29udGV4dCk7CkBAIC0xNjIwLDcg
KzE2MzUsNyBAQCBDb21tYW5kSW5uZXI6CiAgICAgICB9IGVsc2UgewogICAgICAgICB1aW50MzJf
dCBsaXRlcmFsOwogICAgICAgICBpZiAoIVNhZmVSZWFkU3ltYm9sKGhjLCBiciwgJmxpdGVyYWwp
KSB7Ci0gICAgICAgICAgcmVzdWx0ID0gQlJPVExJX1JFU1VMVF9ORUVEU19NT1JFX0lOUFVUOwor
ICAgICAgICAgIHJlc3VsdCA9IEJST1RMSV9ORUVEU19NT1JFX0lOUFVUOwogICAgICAgICAgIGdv
dG8gc2F2ZVN0YXRlQW5kUmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHAxID0gKHVpbnQ4X3Qp
bGl0ZXJhbDsKQEAgLTE2MzgsNyArMTY1Myw3IEBAIENvbW1hbmRJbm5lcjoKICAgICB9IHdoaWxl
ICgtLWkgIT0gMCk7CiAgIH0KICAgQlJPVExJX0xPR19VSU5UKHMtPm1ldGFfYmxvY2tfcmVtYWlu
aW5nX2xlbik7Ci0gIGlmIChzLT5tZXRhX2Jsb2NrX3JlbWFpbmluZ19sZW4gPD0gMCkgeworICBp
ZiAoUFJFRElDVF9GQUxTRShzLT5tZXRhX2Jsb2NrX3JlbWFpbmluZ19sZW4gPD0gMCkpIHsKICAg
ICBzLT5zdGF0ZSA9IEJST1RMSV9TVEFURV9NRVRBQkxPQ0tfRE9ORTsKICAgICBnb3RvIHNhdmVT
dGF0ZUFuZFJldHVybjsKICAgfQpAQCAtMTcwMCwxMyArMTcxNSwxMyBAQCBwb3N0UmVhZERpc3Rh
bmNlOgogICAgICAgICBCUk9UTElfTE9HKCgiSW52YWxpZCBiYWNrd2FyZCByZWZlcmVuY2UuIHBv
czogJWQgZGlzdGFuY2U6ICVkICIKICAgICAgICAgICAgICJsZW46ICVkIGJ5dGVzIGxlZnQ6ICVk
XG4iLAogICAgICAgICAgICAgcG9zLCBzLT5kaXN0YW5jZV9jb2RlLCBpLCBzLT5tZXRhX2Jsb2Nr
X3JlbWFpbmluZ19sZW4pKTsKLSAgICAgICAgcmV0dXJuIEJST1RMSV9GQUlMVVJFKCk7CisgICAg
ICAgIHJldHVybiBCUk9UTElfRkFJTFVSRShCUk9UTElfRVJST1JfRk9STUFUX1RSQU5TRk9STSk7
CiAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgIEJST1RMSV9MT0coKCJJbnZhbGlkIGJhY2t3
YXJkIHJlZmVyZW5jZS4gcG9zOiAlZCBkaXN0YW5jZTogJWQgIgogICAgICAgICAgICJsZW46ICVk
IGJ5dGVzIGxlZnQ6ICVkXG4iLAogICAgICAgICAgIHBvcywgcy0+ZGlzdGFuY2VfY29kZSwgaSwg
cy0+bWV0YV9ibG9ja19yZW1haW5pbmdfbGVuKSk7Ci0gICAgICByZXR1cm4gQlJPVExJX0ZBSUxV
UkUoKTsKKyAgICAgIHJldHVybiBCUk9UTElfRkFJTFVSRShCUk9UTElfRVJST1JfRk9STUFUX0RJ
Q1RJT05BUlkpOwogICAgIH0KICAgfSBlbHNlIHsKICAgICBpbnQgc3JjX3N0YXJ0ID0gKHBvcyAt
IHMtPmRpc3RhbmNlX2NvZGUpICYgcy0+cmluZ2J1ZmZlcl9tYXNrOwpAQCAtMTcxOCwxMiArMTcz
Myw2IEBAIHBvc3RSZWFkRGlzdGFuY2U6CiAgICAgcy0+ZGlzdF9yYltzLT5kaXN0X3JiX2lkeCAm
IDNdID0gcy0+ZGlzdGFuY2VfY29kZTsKICAgICArK3MtPmRpc3RfcmJfaWR4OwogICAgIHMtPm1l
dGFfYmxvY2tfcmVtYWluaW5nX2xlbiAtPSBpOwotICAgIGlmIChQUkVESUNUX0ZBTFNFKHMtPm1l
dGFfYmxvY2tfcmVtYWluaW5nX2xlbiA8IDApKSB7Ci0gICAgICBCUk9UTElfTE9HKCgiSW52YWxp
ZCBiYWNrd2FyZCByZWZlcmVuY2UuIHBvczogJWQgZGlzdGFuY2U6ICVkICIKLSAgICAgICAgICAi
bGVuOiAlZCBieXRlcyBsZWZ0OiAlZFxuIiwKLSAgICAgICAgICBwb3MsIHMtPmRpc3RhbmNlX2Nv
ZGUsIGksIHMtPm1ldGFfYmxvY2tfcmVtYWluaW5nX2xlbikpOwotICAgICAgcmV0dXJuIEJST1RM
SV9GQUlMVVJFKCk7Ci0gICAgfQogICAgIC8qIFRoZXJlIGFyZSAzMisgYnl0ZXMgb2Ygc2xhY2sg
aW4gdGhlIHJpbmdidWZmZXIgYWxsb2NhdGlvbi4KICAgICAgICBBbHNvLCB3ZSBoYXZlIDE2IHNo
b3J0IGNvZGVzLCB0aGF0IG1ha2UgdGhlc2UgMTYgYnl0ZXMgaXJyZWxldmFudAogICAgICAgIGlu
IHRoZSByaW5nYnVmZmVyLiBMZXQncyBjb3B5IG92ZXIgdGhlbSBhcyBhIGZpcnN0IGd1ZXNzLgpA
QCAtMTc4NSwxMSArMTc5NCwxMSBAQCBzYXZlU3RhdGVBbmRSZXR1cm46CiAKICN1bmRlZiBCUk9U
TElfU0FGRQogCi1zdGF0aWMgQlJPVExJX05PSU5MSU5FIEJyb3RsaVJlc3VsdCBQcm9jZXNzQ29t
bWFuZHMoQnJvdGxpU3RhdGUqIHMpIHsKK3N0YXRpYyBCUk9UTElfTk9JTkxJTkUgQnJvdGxpRXJy
b3JDb2RlIFByb2Nlc3NDb21tYW5kcyhCcm90bGlTdGF0ZSogcykgewogICByZXR1cm4gUHJvY2Vz
c0NvbW1hbmRzSW50ZXJuYWwoMCwgcyk7CiB9CiAKLXN0YXRpYyBCUk9UTElfTk9JTkxJTkUgQnJv
dGxpUmVzdWx0IFNhZmVQcm9jZXNzQ29tbWFuZHMoQnJvdGxpU3RhdGUqIHMpIHsKK3N0YXRpYyBC
Uk9UTElfTk9JTkxJTkUgQnJvdGxpRXJyb3JDb2RlIFNhZmVQcm9jZXNzQ29tbWFuZHMoQnJvdGxp
U3RhdGUqIHMpIHsKICAgcmV0dXJuIFByb2Nlc3NDb21tYW5kc0ludGVybmFsKDEsIHMpOwogfQog
CkBAIC0xODMwLDcgKzE4MzksNyBAQCBCcm90bGlSZXN1bHQgQnJvdGxpRGVjb21wcmVzc0J1ZmZl
cihzaXplX3QgZW5jb2RlZF9zaXplLAogQnJvdGxpUmVzdWx0IEJyb3RsaURlY29tcHJlc3NTdHJl
YW0oc2l6ZV90KiBhdmFpbGFibGVfaW4sCiAgICAgY29uc3QgdWludDhfdCoqIG5leHRfaW4sIHNp
emVfdCogYXZhaWxhYmxlX291dCwgdWludDhfdCoqIG5leHRfb3V0LAogICAgIHNpemVfdCogdG90
YWxfb3V0LCBCcm90bGlTdGF0ZSogcykgewotICBCcm90bGlSZXN1bHQgcmVzdWx0ID0gQlJPVExJ
X1JFU1VMVF9TVUNDRVNTOworICBCcm90bGlFcnJvckNvZGUgcmVzdWx0ID0gQlJPVExJX1NVQ0NF
U1M7CiAgIEJyb3RsaUJpdFJlYWRlciogYnIgPSAmcy0+YnI7CiAgIGlmIChzLT5idWZmZXJfbGVu
Z3RoID09IDApIHsgLyogSnVzdCBjb25uZWN0IGJpdCByZWFkZXIgdG8gaW5wdXQgc3RyZWFtLiAq
LwogICAgIGJyLT5hdmFpbF9pbiA9ICphdmFpbGFibGVfaW47CkBAIC0xODM5LDEzICsxODQ4LDEz
IEBAIEJyb3RsaVJlc3VsdCBCcm90bGlEZWNvbXByZXNzU3RyZWFtKHNpemVfdCogYXZhaWxhYmxl
X2luLAogICAgIC8qIEF0IGxlYXN0IG9uZSBieXRlIG9mIGlucHV0IGlzIHJlcXVpcmVkLiBNb3Jl
IHRoYW4gb25lIGJ5dGUgb2YgaW5wdXQgbWF5CiAgICAgICAgYmUgcmVxdWlyZWQgdG8gY29tcGxl
dGUgdGhlIHRyYW5zYWN0aW9uIC0+IHJlYWRpbmcgbW9yZSBkYXRhIG11c3QgYmUKICAgICAgICBk
b25lIGluIGEgbG9vcCAtPiBkbyBpdCBpbiBhIG1haW4gbG9vcC4gKi8KLSAgICByZXN1bHQgPSBC
Uk9UTElfUkVTVUxUX05FRURTX01PUkVfSU5QVVQ7CisgICAgcmVzdWx0ID0gQlJPVExJX05FRURT
X01PUkVfSU5QVVQ7CiAgICAgYnItPm5leHRfaW4gPSAmcy0+YnVmZmVyLnU4WzBdOwogICB9CiAg
IC8qIFN0YXRlIG1hY2hpbmUgKi8KICAgZm9yICg7OykgewotICAgIGlmIChyZXN1bHQgIT0gQlJP
VExJX1JFU1VMVF9TVUNDRVNTKSB7IC8qIEVycm9yIHwgbmVlZHMgbW9yZSBpbnB1dC9vdXRwdXQg
Ki8KLSAgICAgIGlmIChyZXN1bHQgPT0gQlJPVExJX1JFU1VMVF9ORUVEU19NT1JFX0lOUFVUKSB7
CisgICAgaWYgKHJlc3VsdCAhPSBCUk9UTElfU1VDQ0VTUykgeyAvKiBFcnJvciB8IG5lZWRzIG1v
cmUgaW5wdXQvb3V0cHV0ICovCisgICAgICBpZiAocmVzdWx0ID09IEJST1RMSV9ORUVEU19NT1JF
X0lOUFVUKSB7CiAgICAgICAgIGlmIChzLT5yaW5nYnVmZmVyICE9IDApIHsgLyogUHJvYWN0aXZl
bHkgcHVzaCBvdXRwdXQuICovCiAgICAgICAgICAgV3JpdGVSaW5nQnVmZmVyKGF2YWlsYWJsZV9v
dXQsIG5leHRfb3V0LCB0b3RhbF9vdXQsIHMpOwogICAgICAgICB9CkBAIC0xODU1LDE0ICsxODY0
LDE0IEBAIEJyb3RsaVJlc3VsdCBCcm90bGlEZWNvbXByZXNzU3RyZWFtKHNpemVfdCogYXZhaWxh
YmxlX2luLAogICAgICAgICAgICAgICAgaXMgZXhwYW5kZWQgYnl0ZS1ieS1ieXRlIHVudGlsIGl0
IGlzIGVub3VnaCB0byBjb21wbGV0ZSByZWFkLiAqLwogICAgICAgICAgICAgcy0+YnVmZmVyX2xl
bmd0aCA9IDA7CiAgICAgICAgICAgICAvKiBTd2l0Y2ggdG8gaW5wdXQgc3RyZWFtIGFuZCByZXN0
YXJ0LiAqLwotICAgICAgICAgICAgcmVzdWx0ID0gQlJPVExJX1JFU1VMVF9TVUNDRVNTOworICAg
ICAgICAgICAgcmVzdWx0ID0gQlJPVExJX1NVQ0NFU1M7CiAgICAgICAgICAgICBici0+YXZhaWxf
aW4gPSAqYXZhaWxhYmxlX2luOwogICAgICAgICAgICAgYnItPm5leHRfaW4gPSAqbmV4dF9pbjsK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgIH0gZWxzZSBpZiAoKmF2YWlsYWJsZV9p
biAhPSAwKSB7CiAgICAgICAgICAgICAvKiBOb3QgZW5vdWdoIGRhdGEgaW4gYnVmZmVyLCBidXQg
Y2FuIHRha2Ugb25lIG1vcmUgYnl0ZSBmcm9tCiAgICAgICAgICAgICAgICBpbnB1dCBzdHJlYW0u
ICovCi0gICAgICAgICAgICByZXN1bHQgPSBCUk9UTElfUkVTVUxUX1NVQ0NFU1M7CisgICAgICAg
ICAgICByZXN1bHQgPSBCUk9UTElfU1VDQ0VTUzsKICAgICAgICAgICAgIHMtPmJ1ZmZlci51OFtz
LT5idWZmZXJfbGVuZ3RoXSA9ICoqbmV4dF9pbjsKICAgICAgICAgICAgIHMtPmJ1ZmZlcl9sZW5n
dGgrKzsKICAgICAgICAgICAgIGJyLT5hdmFpbF9pbiA9IHMtPmJ1ZmZlcl9sZW5ndGg7CkBAIC0x
OTA4LDcgKzE5MTcsNyBAQCBCcm90bGlSZXN1bHQgQnJvdGxpRGVjb21wcmVzc1N0cmVhbShzaXpl
X3QqIGF2YWlsYWJsZV9pbiwKICAgICAgIGNhc2UgQlJPVExJX1NUQVRFX1VOSU5JVEVEOgogICAg
ICAgICAvKiBQcmVwYXJlIHRvIHRoZSBmaXJzdCByZWFkLiAqLwogICAgICAgICBpZiAoIUJyb3Rs
aVdhcm11cEJpdFJlYWRlcihicikpIHsKLSAgICAgICAgICByZXN1bHQgPSBCUk9UTElfUkVTVUxU
X05FRURTX01PUkVfSU5QVVQ7CisgICAgICAgICAgcmVzdWx0ID0gQlJPVExJX05FRURTX01PUkVf
SU5QVVQ7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgLyogRGVjb2RlIHdp
bmRvdyBzaXplLiAqLwpAQCAtMTkxNiwxMCArMTkyNSwxNiBAQCBCcm90bGlSZXN1bHQgQnJvdGxp
RGVjb21wcmVzc1N0cmVhbShzaXplX3QqIGF2YWlsYWJsZV9pbiwKICAgICAgICAgQlJPVExJX0xP
R19VSU5UKHMtPndpbmRvd19iaXRzKTsKICAgICAgICAgaWYgKHMtPndpbmRvd19iaXRzID09IDkp
IHsKICAgICAgICAgICAvKiBWYWx1ZSA5IGlzIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlLiAqLwot
ICAgICAgICAgIHJlc3VsdCA9IEJST1RMSV9GQUlMVVJFKCk7CisgICAgICAgICAgcmVzdWx0ID0g
QlJPVExJX0ZBSUxVUkUoQlJPVExJX0VSUk9SX0ZPUk1BVF9XSU5ET1dfQklUUyk7CiAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgLyogTWF4aW11bSBkaXN0YW5jZSwgc2VlIHNl
Y3Rpb24gOS4xLiBvZiB0aGUgc3BlYy4gKi8KICAgICAgICAgcy0+bWF4X2JhY2t3YXJkX2Rpc3Rh
bmNlID0gKDEgPDwgcy0+d2luZG93X2JpdHMpIC0gMTY7CisgICAgICAgIC8qIExpbWl0IGN1c3Rv
bSBkaWN0aW9uYXJ5IHNpemUuICovCisgICAgICAgIGlmIChzLT5jdXN0b21fZGljdF9zaXplID49
IHMtPm1heF9iYWNrd2FyZF9kaXN0YW5jZSkgeworICAgICAgICAgIHMtPmN1c3RvbV9kaWN0ICs9
IHMtPmN1c3RvbV9kaWN0X3NpemUgLSBzLT5tYXhfYmFja3dhcmRfZGlzdGFuY2U7CisgICAgICAg
ICAgcy0+Y3VzdG9tX2RpY3Rfc2l6ZSA9IHMtPm1heF9iYWNrd2FyZF9kaXN0YW5jZTsKKyAgICAg
ICAgfQogICAgICAgICBzLT5tYXhfYmFja3dhcmRfZGlzdGFuY2VfbWludXNfY3VzdG9tX2RpY3Rf
c2l6ZSA9CiAgICAgICAgICAgICBzLT5tYXhfYmFja3dhcmRfZGlzdGFuY2UgLSBzLT5jdXN0b21f
ZGljdF9zaXplOwogCkBAIC0xOTI4LDcgKzE5NDMsNyBAQCBCcm90bGlSZXN1bHQgQnJvdGxpRGVj
b21wcmVzc1N0cmVhbShzaXplX3QqIGF2YWlsYWJsZV9pbiwKICAgICAgICAgICAgIHNpemVvZihI
dWZmbWFuQ29kZSkgKiAzICoKICAgICAgICAgICAgICAgICAoQlJPVExJX0hVRkZNQU5fTUFYX1NJ
WkVfMjU4ICsgQlJPVExJX0hVRkZNQU5fTUFYX1NJWkVfMjYpKTsKICAgICAgICAgaWYgKHMtPmJs
b2NrX3R5cGVfdHJlZXMgPT0gMCkgewotICAgICAgICAgIHJlc3VsdCA9IEJST1RMSV9GQUlMVVJF
KCk7CisgICAgICAgICAgcmVzdWx0ID0gQlJPVExJX0ZBSUxVUkUoQlJPVExJX0VSUk9SX0FMTE9D
X0JMT0NLX1RZUEVfVFJFRVMpOwogICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IHMtPmJsb2NrX2xlbl90cmVlcyA9CkBAIC0xOTQzLDcgKzE5NTgsNyBAQCBCcm90bGlSZXN1bHQg
QnJvdGxpRGVjb21wcmVzc1N0cmVhbShzaXplX3QqIGF2YWlsYWJsZV9pbiwKICAgICAgICAgLyog
Tm8gYnJlYWssIGNvbnRpbnVlIHRvIG5leHQgc3RhdGUgKi8KICAgICAgIGNhc2UgQlJPVExJX1NU
QVRFX01FVEFCTE9DS19IRUFERVI6CiAgICAgICAgIHJlc3VsdCA9IERlY29kZU1ldGFCbG9ja0xl
bmd0aChzLCBicik7IC8qIFJlYWRzIDIgLSAzMSBiaXRzLiAqLwotICAgICAgICBpZiAocmVzdWx0
ICE9IEJST1RMSV9SRVNVTFRfU1VDQ0VTUykgeworICAgICAgICBpZiAocmVzdWx0ICE9IEJST1RM
SV9TVUNDRVNTKSB7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgQlJPVExJ
X0xPR19VSU5UKHMtPmlzX2xhc3RfbWV0YWJsb2NrKTsKQEAgLTE5NTIsNyArMTk2Nyw3IEBAIEJy
b3RsaVJlc3VsdCBCcm90bGlEZWNvbXByZXNzU3RyZWFtKHNpemVfdCogYXZhaWxhYmxlX2luLAog
ICAgICAgICBCUk9UTElfTE9HX1VJTlQocy0+aXNfdW5jb21wcmVzc2VkKTsKICAgICAgICAgaWYg
KHMtPmlzX21ldGFkYXRhIHx8IHMtPmlzX3VuY29tcHJlc3NlZCkgewogICAgICAgICAgIGlmICgh
QnJvdGxpSnVtcFRvQnl0ZUJvdW5kYXJ5KGJyKSkgewotICAgICAgICAgICAgcmVzdWx0ID0gQlJP
VExJX0ZBSUxVUkUoKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IEJST1RMSV9GQUlMVVJFKEJST1RM
SV9FUlJPUl9GT1JNQVRfUEFERElOR18xKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
IH0KICAgICAgICAgfQpAQCAtMTk3OSw3ICsxOTk0LDcgQEAgQnJvdGxpUmVzdWx0IEJyb3RsaURl
Y29tcHJlc3NTdHJlYW0oc2l6ZV90KiBhdmFpbGFibGVfaW4sCiAgICAgICAgIHJlc3VsdCA9IENv
cHlVbmNvbXByZXNzZWRCbG9ja1RvT3V0cHV0KAogICAgICAgICAgICAgYXZhaWxhYmxlX291dCwg
bmV4dF9vdXQsIHRvdGFsX291dCwgcyk7CiAgICAgICAgIGJ5dGVzX2NvcGllZCAtPSBzLT5tZXRh
X2Jsb2NrX3JlbWFpbmluZ19sZW47Ci0gICAgICAgIGlmIChyZXN1bHQgIT0gQlJPVExJX1JFU1VM
VF9TVUNDRVNTKSB7CisgICAgICAgIGlmIChyZXN1bHQgIT0gQlJPVExJX1NVQ0NFU1MpIHsKICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBzLT5zdGF0ZSA9IEJST1RMSV9TVEFU
RV9NRVRBQkxPQ0tfRE9ORTsKQEAgLTE5OTAsMTEgKzIwMDUsMTEgQEAgQnJvdGxpUmVzdWx0IEJy
b3RsaURlY29tcHJlc3NTdHJlYW0oc2l6ZV90KiBhdmFpbGFibGVfaW4sCiAgICAgICAgICAgdWlu
dDMyX3QgYml0czsKICAgICAgICAgICAvKiBSZWFkIG9uZSBieXRlIGFuZCBpZ25vcmUgaXQuICov
CiAgICAgICAgICAgaWYgKCFCcm90bGlTYWZlUmVhZEJpdHMoYnIsIDgsICZiaXRzKSkgewotICAg
ICAgICAgICAgcmVzdWx0ID0gQlJPVExJX1JFU1VMVF9ORUVEU19NT1JFX0lOUFVUOworICAgICAg
ICAgICAgcmVzdWx0ID0gQlJPVExJX05FRURTX01PUkVfSU5QVVQ7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHJlc3VsdCA9PSBCUk9UTElf
UkVTVUxUX1NVQ0NFU1MpIHsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBCUk9UTElfU1VDQ0VTUykg
ewogICAgICAgICAgIHMtPnN0YXRlID0gQlJPVExJX1NUQVRFX01FVEFCTE9DS19ET05FOwogICAg
ICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtMjAwNSw3ICsyMDIwLDcgQEAgQnJvdGxpUmVzdWx0
IEJyb3RsaURlY29tcHJlc3NTdHJlYW0oc2l6ZV90KiBhdmFpbGFibGVfaW4sCiAgICAgICAgIH0K
ICAgICAgICAgLyogUmVhZHMgMS4uMTEgYml0cy4gKi8KICAgICAgICAgcmVzdWx0ID0gRGVjb2Rl
VmFyTGVuVWludDgocywgYnIsICZzLT5udW1fYmxvY2tfdHlwZXNbcy0+bG9vcF9jb3VudGVyXSk7
Ci0gICAgICAgIGlmIChyZXN1bHQgIT0gQlJPVExJX1JFU1VMVF9TVUNDRVNTKSB7CisgICAgICAg
IGlmIChyZXN1bHQgIT0gQlJPVExJX1NVQ0NFU1MpIHsKICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBzLT5udW1fYmxvY2tfdHlwZXNbcy0+bG9vcF9jb3VudGVyXSsrOwpAQCAt
MjAyMCw3ICsyMDM1LDcgQEAgQnJvdGxpUmVzdWx0IEJyb3RsaURlY29tcHJlc3NTdHJlYW0oc2l6
ZV90KiBhdmFpbGFibGVfaW4sCiAgICAgICAgIGludCB0cmVlX29mZnNldCA9IHMtPmxvb3BfY291
bnRlciAqIEJST1RMSV9IVUZGTUFOX01BWF9TSVpFXzI1ODsKICAgICAgICAgcmVzdWx0ID0gUmVh
ZEh1ZmZtYW5Db2RlKHMtPm51bV9ibG9ja190eXBlc1tzLT5sb29wX2NvdW50ZXJdICsgMiwKICAg
ICAgICAgICAgICZzLT5ibG9ja190eXBlX3RyZWVzW3RyZWVfb2Zmc2V0XSwgTlVMTCwgcyk7Ci0g
ICAgICAgIGlmIChyZXN1bHQgIT0gQlJPVExJX1JFU1VMVF9TVUNDRVNTKSBicmVhazsKKyAgICAg
ICAgaWYgKHJlc3VsdCAhPSBCUk9UTElfU1VDQ0VTUykgYnJlYWs7CiAgICAgICAgIHMtPnN0YXRl
ID0gQlJPVExJX1NUQVRFX0hVRkZNQU5fQ09ERV8yOwogICAgICAgICAvKiBObyBicmVhaywgY29u
dGludWUgdG8gbmV4dCBzdGF0ZSAqLwogICAgICAgfQpAQCAtMjAyOCw3ICsyMDQzLDcgQEAgQnJv
dGxpUmVzdWx0IEJyb3RsaURlY29tcHJlc3NTdHJlYW0oc2l6ZV90KiBhdmFpbGFibGVfaW4sCiAg
ICAgICAgIGludCB0cmVlX29mZnNldCA9IHMtPmxvb3BfY291bnRlciAqIEJST1RMSV9IVUZGTUFO
X01BWF9TSVpFXzI2OwogICAgICAgICByZXN1bHQgPSBSZWFkSHVmZm1hbkNvZGUoa051bUJsb2Nr
TGVuZ3RoQ29kZXMsCiAgICAgICAgICAgICAmcy0+YmxvY2tfbGVuX3RyZWVzW3RyZWVfb2Zmc2V0
XSwgTlVMTCwgcyk7Ci0gICAgICAgIGlmIChyZXN1bHQgIT0gQlJPVExJX1JFU1VMVF9TVUNDRVNT
KSBicmVhazsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSBCUk9UTElfU1VDQ0VTUykgYnJlYWs7CiAg
ICAgICAgIHMtPnN0YXRlID0gQlJPVExJX1NUQVRFX0hVRkZNQU5fQ09ERV8zOwogICAgICAgICAv
KiBObyBicmVhaywgY29udGludWUgdG8gbmV4dCBzdGF0ZSAqLwogICAgICAgfQpAQCAtMjAzNiw3
ICsyMDUxLDcgQEAgQnJvdGxpUmVzdWx0IEJyb3RsaURlY29tcHJlc3NTdHJlYW0oc2l6ZV90KiBh
dmFpbGFibGVfaW4sCiAgICAgICAgIGludCB0cmVlX29mZnNldCA9IHMtPmxvb3BfY291bnRlciAq
IEJST1RMSV9IVUZGTUFOX01BWF9TSVpFXzI2OwogICAgICAgICBpZiAoIVNhZmVSZWFkQmxvY2tM
ZW5ndGgocywgJnMtPmJsb2NrX2xlbmd0aFtzLT5sb29wX2NvdW50ZXJdLAogICAgICAgICAgICAg
JnMtPmJsb2NrX2xlbl90cmVlc1t0cmVlX29mZnNldF0sIGJyKSkgewotICAgICAgICAgIHJlc3Vs
dCA9IEJST1RMSV9SRVNVTFRfTkVFRFNfTU9SRV9JTlBVVDsKKyAgICAgICAgICByZXN1bHQgPSBC
Uk9UTElfTkVFRFNfTU9SRV9JTlBVVDsKICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBCUk9UTElfTE9HX1VJTlQocy0+YmxvY2tfbGVuZ3RoW3MtPmxvb3BfY291bnRlcl0pOwpA
QCAtMjA0Nyw3ICsyMDYyLDcgQEAgQnJvdGxpUmVzdWx0IEJyb3RsaURlY29tcHJlc3NTdHJlYW0o
c2l6ZV90KiBhdmFpbGFibGVfaW4sCiAgICAgICBjYXNlIEJST1RMSV9TVEFURV9NRVRBQkxPQ0tf
SEVBREVSXzI6IHsKICAgICAgICAgdWludDMyX3QgYml0czsKICAgICAgICAgaWYgKCFCcm90bGlT
YWZlUmVhZEJpdHMoYnIsIDYsICZiaXRzKSkgewotICAgICAgICAgIHJlc3VsdCA9IEJST1RMSV9S
RVNVTFRfTkVFRFNfTU9SRV9JTlBVVDsKKyAgICAgICAgICByZXN1bHQgPSBCUk9UTElfTkVFRFNf
TU9SRV9JTlBVVDsKICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBzLT5kaXN0
YW5jZV9wb3N0Zml4X2JpdHMgPSBiaXRzICYgQml0TWFzaygyKTsKQEAgLTIwNjAsNyArMjA3NSw3
IEBAIEJyb3RsaVJlc3VsdCBCcm90bGlEZWNvbXByZXNzU3RyZWFtKHNpemVfdCogYXZhaWxhYmxl
X2luLAogICAgICAgICBzLT5jb250ZXh0X21vZGVzID0KICAgICAgICAgICAgICh1aW50OF90KilC
Uk9UTElfQUxMT0MocywgKHNpemVfdClzLT5udW1fYmxvY2tfdHlwZXNbMF0pOwogICAgICAgICBp
ZiAocy0+Y29udGV4dF9tb2RlcyA9PSAwKSB7Ci0gICAgICAgICAgcmVzdWx0ID0gQlJPVExJX0ZB
SUxVUkUoKTsKKyAgICAgICAgICByZXN1bHQgPSBCUk9UTElfRkFJTFVSRShCUk9UTElfRVJST1Jf
QUxMT0NfQ09OVEVYVF9NT0RFUyk7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgcy0+bG9vcF9jb3VudGVyID0gMDsKQEAgLTIwNjksMjggKzIwODQsMjEgQEAgQnJvdGxpUmVz
dWx0IEJyb3RsaURlY29tcHJlc3NTdHJlYW0oc2l6ZV90KiBhdmFpbGFibGVfaW4sCiAgICAgICB9
CiAgICAgICBjYXNlIEJST1RMSV9TVEFURV9DT05URVhUX01PREVTOgogICAgICAgICByZXN1bHQg
PSBSZWFkQ29udGV4dE1vZGVzKHMpOwotICAgICAgICBpZiAocmVzdWx0ICE9IEJST1RMSV9SRVNV
TFRfU1VDQ0VTUykgeworICAgICAgICBpZiAocmVzdWx0ICE9IEJST1RMSV9TVUNDRVNTKSB7CiAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgcy0+c3RhdGUgPSBCUk9UTElfU1RB
VEVfQ09OVEVYVF9NQVBfMTsKICAgICAgICAgLyogTm8gYnJlYWssIGNvbnRpbnVlIHRvIG5leHQg
c3RhdGUgKi8KLSAgICAgIGNhc2UgQlJPVExJX1NUQVRFX0NPTlRFWFRfTUFQXzE6IHsKLSAgICAg
ICAgdWludDMyX3QgajsKLSAgICAgICAgcmVzdWx0ID0gRGVjb2RlQ29udGV4dE1hcChzLT5udW1f
YmxvY2tfdHlwZXNbMF0gPDwga0xpdGVyYWxDb250ZXh0Qml0cywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmcy0+bnVtX2xpdGVyYWxfaHRyZWVzLCAmcy0+Y29udGV4dF9tYXAs
IHMpOwotICAgICAgICBpZiAocmVzdWx0ICE9IEJST1RMSV9SRVNVTFRfU1VDQ0VTUykgeworICAg
ICAgY2FzZSBCUk9UTElfU1RBVEVfQ09OVEVYVF9NQVBfMToKKyAgICAgICAgcmVzdWx0ID0gRGVj
b2RlQ29udGV4dE1hcCgKKyAgICAgICAgICAgIHMtPm51bV9ibG9ja190eXBlc1swXSA8PCBrTGl0
ZXJhbENvbnRleHRCaXRzLAorICAgICAgICAgICAgJnMtPm51bV9saXRlcmFsX2h0cmVlcywgJnMt
PmNvbnRleHRfbWFwLCBzKTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSBCUk9UTElfU1VDQ0VTUykg
ewogICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIHMtPnRyaXZpYWxfbGl0ZXJh
bF9jb250ZXh0ID0gMTsKLSAgICAgICAgZm9yIChqID0gMDsgaiA8IHMtPm51bV9ibG9ja190eXBl
c1swXSA8PCBrTGl0ZXJhbENvbnRleHRCaXRzOyBqKyspIHsKLSAgICAgICAgICBpZiAocy0+Y29u
dGV4dF9tYXBbal0gIT0gaiA+PiBrTGl0ZXJhbENvbnRleHRCaXRzKSB7Ci0gICAgICAgICAgICBz
LT50cml2aWFsX2xpdGVyYWxfY29udGV4dCA9IDA7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgRGV0ZWN0VHJpdmlhbExpdGVyYWxCbG9ja1R5cGVz
KHMpOwogICAgICAgICBzLT5zdGF0ZSA9IEJST1RMSV9TVEFURV9DT05URVhUX01BUF8yOwogICAg
ICAgICAvKiBObyBicmVhaywgY29udGludWUgdG8gbmV4dCBzdGF0ZSAqLwotICAgICAgfQogICAg
ICAgY2FzZSBCUk9UTElfU1RBVEVfQ09OVEVYVF9NQVBfMjoKICAgICAgICAgewogICAgICAgICAg
IHVpbnQzMl90IG51bV9kaXN0YW5jZV9jb2RlcyA9CkBAIC0yMDk4LDcgKzIxMDYsNyBAQCBCcm90
bGlSZXN1bHQgQnJvdGxpRGVjb21wcmVzc1N0cmVhbShzaXplX3QqIGF2YWlsYWJsZV9pbiwKICAg
ICAgICAgICByZXN1bHQgPSBEZWNvZGVDb250ZXh0TWFwKAogICAgICAgICAgICAgICBzLT5udW1f
YmxvY2tfdHlwZXNbMl0gPDwga0Rpc3RhbmNlQ29udGV4dEJpdHMsCiAgICAgICAgICAgICAgICZz
LT5udW1fZGlzdF9odHJlZXMsICZzLT5kaXN0X2NvbnRleHRfbWFwLCBzKTsKLSAgICAgICAgICBp
ZiAocmVzdWx0ICE9IEJST1RMSV9SRVNVTFRfU1VDQ0VTUykgeworICAgICAgICAgIGlmIChyZXN1
bHQgIT0gQlJPVExJX1NVQ0NFU1MpIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgIH0K
ICAgICAgICAgICBCcm90bGlIdWZmbWFuVHJlZUdyb3VwSW5pdChzLCAmcy0+bGl0ZXJhbF9oZ3Jv
dXAsIGtOdW1MaXRlcmFsQ29kZXMsCkBAIC0yMTExLDcgKzIxMTksOCBAQCBCcm90bGlSZXN1bHQg
QnJvdGxpRGVjb21wcmVzc1N0cmVhbShzaXplX3QqIGF2YWlsYWJsZV9pbiwKICAgICAgICAgICBp
ZiAocy0+bGl0ZXJhbF9oZ3JvdXAuY29kZXMgPT0gMCB8fAogICAgICAgICAgICAgICBzLT5pbnNl
cnRfY29weV9oZ3JvdXAuY29kZXMgPT0gMCB8fAogICAgICAgICAgICAgICBzLT5kaXN0YW5jZV9o
Z3JvdXAuY29kZXMgPT0gMCkgewotICAgICAgICAgICAgcmV0dXJuIEJST1RMSV9GQUlMVVJFKCk7
CisgICAgICAgICAgICByZXR1cm4gU2F2ZUVycm9yQ29kZShzLAorICAgICAgICAgICAgICAgIEJS
T1RMSV9GQUlMVVJFKEJST1RMSV9FUlJPUl9BTExPQ19UUkVFX0dST1VQUykpOwogICAgICAgICAg
IH0KICAgICAgICAgfQogICAgICAgICBzLT5sb29wX2NvdW50ZXIgPSAwOwpAQCAtMjEzMSwyNCAr
MjE0MCwxOSBAQCBCcm90bGlSZXN1bHQgQnJvdGxpRGVjb21wcmVzc1N0cmVhbShzaXplX3QqIGF2
YWlsYWJsZV9pbiwKICAgICAgICAgICAgICAgaGdyb3VwID0gJnMtPmRpc3RhbmNlX2hncm91cDsK
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
ICByZXR1cm4gQlJPVExJX0ZBSUxVUkUoKTsKKyAgICAgICAgICAgICAgcmV0dXJuIFNhdmVFcnJv
ckNvZGUocywKKyAgICAgICAgICAgICAgICAgIEJST1RMSV9GQUlMVVJFKEJST1RMSV9FUlJPUl9V
TlJFQUNIQUJMRSkpOwogICAgICAgICAgIH0KICAgICAgICAgICByZXN1bHQgPSBIdWZmbWFuVHJl
ZUdyb3VwRGVjb2RlKGhncm91cCwgcyk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHJlc3VsdCAh
PSBCUk9UTElfUkVTVUxUX1NVQ0NFU1MpIGJyZWFrOworICAgICAgICBpZiAocmVzdWx0ICE9IEJS
T1RMSV9TVUNDRVNTKSBicmVhazsKICAgICAgICAgcy0+bG9vcF9jb3VudGVyKys7CiAgICAgICAg
IGlmIChzLT5sb29wX2NvdW50ZXIgPj0gMykgewotICAgICAgICAgIHVpbnQ4X3QgY29udGV4dF9t
b2RlID0gcy0+Y29udGV4dF9tb2Rlc1tzLT5ibG9ja190eXBlX3JiWzFdXTsKLSAgICAgICAgICBz
LT5jb250ZXh0X21hcF9zbGljZSA9IHMtPmNvbnRleHRfbWFwOworICAgICAgICAgIFByZXBhcmVM
aXRlcmFsRGVjb2Rpbmcocyk7CiAgICAgICAgICAgcy0+ZGlzdF9jb250ZXh0X21hcF9zbGljZSA9
IHMtPmRpc3RfY29udGV4dF9tYXA7Ci0gICAgICAgICAgcy0+Y29udGV4dF9sb29rdXAxID0KLSAg
ICAgICAgICAgICAgJmtDb250ZXh0TG9va3VwW2tDb250ZXh0TG9va3VwT2Zmc2V0c1tjb250ZXh0
X21vZGVdXTsKLSAgICAgICAgICBzLT5jb250ZXh0X2xvb2t1cDIgPQotICAgICAgICAgICAgICAm
a0NvbnRleHRMb29rdXBba0NvbnRleHRMb29rdXBPZmZzZXRzW2NvbnRleHRfbW9kZSArIDFdXTsK
ICAgICAgICAgICBzLT5odHJlZV9jb21tYW5kID0gcy0+aW5zZXJ0X2NvcHlfaGdyb3VwLmh0cmVl
c1swXTsKLSAgICAgICAgICBzLT5saXRlcmFsX2h0cmVlID0gcy0+bGl0ZXJhbF9oZ3JvdXAuaHRy
ZWVzW3MtPmxpdGVyYWxfaHRyZWVfaW5kZXhdOwogICAgICAgICAgIGlmICghcy0+cmluZ2J1ZmZl
ciAmJiAhQnJvdGxpQWxsb2NhdGVSaW5nQnVmZmVyKHMpKSB7Ci0gICAgICAgICAgICByZXN1bHQg
PSBCUk9UTElfRkFJTFVSRSgpOworICAgICAgICAgICAgcmVzdWx0ID0gQlJPVExJX0ZBSUxVUkUo
QlJPVExJX0VSUk9SX0FMTE9DX1JJTkdfQlVGRkVSXzIpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgfQogICAgICAgICAgIHMtPnN0YXRlID0gQlJPVExJX1NUQVRFX0NPTU1BTkRfQkVH
SU47CkBAIC0yMTU5LDcgKzIxNjMsNyBAQCBCcm90bGlSZXN1bHQgQnJvdGxpRGVjb21wcmVzc1N0
cmVhbShzaXplX3QqIGF2YWlsYWJsZV9pbiwKICAgICAgIGNhc2UgQlJPVExJX1NUQVRFX0NPTU1B
TkRfUE9TVF9ERUNPREVfTElURVJBTFM6CiAgICAgICBjYXNlIEJST1RMSV9TVEFURV9DT01NQU5E
X1BPU1RfV1JBUF9DT1BZOgogICAgICAgICByZXN1bHQgPSBQcm9jZXNzQ29tbWFuZHMocyk7Ci0g
ICAgICAgIGlmIChyZXN1bHQgPT0gQlJPVExJX1JFU1VMVF9ORUVEU19NT1JFX0lOUFVUKSB7Cisg
ICAgICAgIGlmIChyZXN1bHQgPT0gQlJPVExJX05FRURTX01PUkVfSU5QVVQpIHsKICAgICAgICAg
ICByZXN1bHQgPSBTYWZlUHJvY2Vzc0NvbW1hbmRzKHMpOwogICAgICAgICB9CiAgICAgICAgIGJy
ZWFrOwpAQCAtMjE2NywxMSArMjE3MSw5IEBAIEJyb3RsaVJlc3VsdCBCcm90bGlEZWNvbXByZXNz
U3RyZWFtKHNpemVfdCogYXZhaWxhYmxlX2luLAogICAgICAgY2FzZSBCUk9UTElfU1RBVEVfQ09N
TUFORF9QT1NUX1dSSVRFXzE6CiAgICAgICBjYXNlIEJST1RMSV9TVEFURV9DT01NQU5EX1BPU1Rf
V1JJVEVfMjoKICAgICAgICAgcmVzdWx0ID0gV3JpdGVSaW5nQnVmZmVyKGF2YWlsYWJsZV9vdXQs
IG5leHRfb3V0LCB0b3RhbF9vdXQsIHMpOwotICAgICAgICBpZiAocmVzdWx0ICE9IEJST1RMSV9S
RVNVTFRfU1VDQ0VTUykgeworICAgICAgICBpZiAocmVzdWx0ICE9IEJST1RMSV9TVUNDRVNTKSB7
CiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgcy0+cG9zIC09IHMtPnJpbmdi
dWZmZXJfc2l6ZTsKLSAgICAgICAgcy0+cmJfcm91bmR0cmlwcysrOwogICAgICAgICBzLT5tYXhf
ZGlzdGFuY2UgPSBzLT5tYXhfYmFja3dhcmRfZGlzdGFuY2U7CiAgICAgICAgIGlmIChzLT5zdGF0
ZSA9PSBCUk9UTElfU1RBVEVfQ09NTUFORF9QT1NUX1dSSVRFXzEpIHsKICAgICAgICAgICBtZW1j
cHkocy0+cmluZ2J1ZmZlciwgcy0+cmluZ2J1ZmZlcl9lbmQsIChzaXplX3Qpcy0+cG9zKTsKQEAg
LTIxOTcsMTMgKzIxOTksMTggQEAgQnJvdGxpUmVzdWx0IEJyb3RsaURlY29tcHJlc3NTdHJlYW0o
c2l6ZV90KiBhdmFpbGFibGVfaW4sCiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgICBj
YXNlIEJST1RMSV9TVEFURV9NRVRBQkxPQ0tfRE9ORToKKyAgICAgICAgaWYgKHMtPm1ldGFfYmxv
Y2tfcmVtYWluaW5nX2xlbiA8IDApIHsKKyAgICAgICAgICByZXN1bHQgPSBCUk9UTElfRkFJTFVS
RShCUk9UTElfRVJST1JfRk9STUFUX0JMT0NLX0xFTkdUSF8yKTsKKyAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQogICAgICAgICBCcm90bGlTdGF0ZUNsZWFudXBBZnRlck1ldGFibG9jayhzKTsK
ICAgICAgICAgaWYgKCFzLT5pc19sYXN0X21ldGFibG9jaykgewogICAgICAgICAgIHMtPnN0YXRl
ID0gQlJPVExJX1NUQVRFX01FVEFCTE9DS19CRUdJTjsKICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBpZiAoIUJyb3RsaUp1bXBUb0J5dGVCb3VuZGFyeShicikpIHsKLSAgICAg
ICAgICByZXN1bHQgPSBCUk9UTElfRkFJTFVSRSgpOworICAgICAgICAgIHJlc3VsdCA9IEJST1RM
SV9GQUlMVVJFKEJST1RMSV9FUlJPUl9GT1JNQVRfUEFERElOR18yKTsKKyAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBpZiAocy0+YnVmZmVyX2xlbmd0aCA9PSAwKSB7CiAgICAg
ICAgICAgQnJvdGxpQml0UmVhZGVyVW5sb2FkKGJyKTsKQEAgLTIyMTUsMjIgKzIyMjIsNDAgQEAg
QnJvdGxpUmVzdWx0IEJyb3RsaURlY29tcHJlc3NTdHJlYW0oc2l6ZV90KiBhdmFpbGFibGVfaW4s
CiAgICAgICBjYXNlIEJST1RMSV9TVEFURV9ET05FOgogICAgICAgICBpZiAocy0+cmluZ2J1ZmZl
ciAhPSAwKSB7CiAgICAgICAgICAgcmVzdWx0ID0gV3JpdGVSaW5nQnVmZmVyKGF2YWlsYWJsZV9v
dXQsIG5leHRfb3V0LCB0b3RhbF9vdXQsIHMpOwotICAgICAgICAgIGlmIChyZXN1bHQgIT0gQlJP
VExJX1JFU1VMVF9TVUNDRVNTKSB7CisgICAgICAgICAgaWYgKHJlc3VsdCAhPSBCUk9UTElfU1VD
Q0VTUykgewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiBTYXZlRXJyb3JDb2RlKHMsIHJlc3Vs
dCk7CiAgICAgfQogICB9Ci0gIHJldHVybiByZXN1bHQ7CisgIHJldHVybiBTYXZlRXJyb3JDb2Rl
KHMsIHJlc3VsdCk7CiB9CiAKIHZvaWQgQnJvdGxpU2V0Q3VzdG9tRGljdGlvbmFyeSgKICAgICBz
aXplX3Qgc2l6ZSwgY29uc3QgdWludDhfdCogZGljdCwgQnJvdGxpU3RhdGUqIHMpIHsKKyAgaWYg
KHNpemUgPiAoMXUgPDwgMjQpKSB7CisgICAgcmV0dXJuOworICB9CiAgIHMtPmN1c3RvbV9kaWN0
ID0gZGljdDsKICAgcy0+Y3VzdG9tX2RpY3Rfc2l6ZSA9IChpbnQpc2l6ZTsKIH0KIAorQnJvdGxp
RXJyb3JDb2RlIEJyb3RsaUdldEVycm9yQ29kZShjb25zdCBCcm90bGlTdGF0ZSogcykgeworICBy
ZXR1cm4gKEJyb3RsaUVycm9yQ29kZSlzLT5lcnJvcl9jb2RlOworfQorCitjb25zdCBjaGFyKiBC
cm90bGlFcnJvclN0cmluZyhCcm90bGlFcnJvckNvZGUgYykgeworICBzd2l0Y2ggKGMpIHsKKyNk
ZWZpbmUgX0JST1RMSV9FUlJPUl9DT0RFX0NBU0UoUFJFRklYLCBOQU1FLCBDT0RFKSBcCisgICAg
Y2FzZSBCUk9UTEkgIyMgUFJFRklYICMjIE5BTUU6IHJldHVybiAjTkFNRTsKKyNkZWZpbmUgX0JS
T1RMSV9OT1RISU5HCisgICAgQlJPVExJX0VSUk9SX0NPREVTX0xJU1QoX0JST1RMSV9FUlJPUl9D
T0RFX0NBU0UsIF9CUk9UTElfTk9USElORykKKyN1bmRlZiBfQlJPVExJX0VSUk9SX0NPREVfQ0FT
RQorI3VuZGVmIF9CUk9UTElfTk9USElORworICAgIGRlZmF1bHQ6IHJldHVybiAiSU5WQUxJRCI7
CisgIH0KK30KIAogI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpIHx8IGRlZmluZWQoY19wbHVzcGx1
cykKIH0gIC8qIGV4dGVybiAiQyIgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2Jy
b3RsaS9kZWMvZGVjb2RlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9icm90bGkvZGVjL2RlY29kZS5o
CmluZGV4IDA3NGIyZjU4YjU3MDkwZjkwMWFhZjg0NmE5ZWI0NWU4YjQzODdhOTQuLjA1NmE4YjU0
ODNhMDNjMzZhOWMyYTBhYzZhZTlkNDIyYzcxYmNjZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2Jyb3RsaS9kZWMvZGVjb2RlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvYnJvdGxp
L2RlYy9kZWNvZGUuaApAQCAtOSwxMyArOSwxNCBAQAogI2lmbmRlZiBCUk9UTElfREVDX0RFQ09E
RV9IXwogI2RlZmluZSBCUk9UTElfREVDX0RFQ09ERV9IXwogCi0jaW5jbHVkZSAiLi9zdGF0ZS5o
IgogI2luY2x1ZGUgIi4vdHlwZXMuaCIKIAogI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpIHx8IGRl
ZmluZWQoY19wbHVzcGx1cykKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKK3R5cGVkZWYgc3RydWN0
IEJyb3RsaVN0YXRlU3RydWN0IEJyb3RsaVN0YXRlOworCiB0eXBlZGVmIGVudW0gewogICAvKiBE
ZWNvZGluZyBlcnJvciwgZS5nLiBjb3JydXB0IGlucHV0IG9yIG1lbW9yeSBhbGxvY2F0aW9uIHBy
b2JsZW0gKi8KICAgQlJPVExJX1JFU1VMVF9FUlJPUiA9IDAsCkBAIC0yNyw2ICsyOCw1NyBAQCB0
eXBlZGVmIGVudW0gewogICBCUk9UTElfUkVTVUxUX05FRURTX01PUkVfT1VUUFVUID0gMwogfSBC
cm90bGlSZXN1bHQ7CiAKKyNkZWZpbmUgQlJPVExJX0VSUk9SX0NPREVTX0xJU1QoQlJPVExJX0VS
Uk9SX0NPREUsIFNFUEFSQVRPUikgICAgICAgICAgICAgIFwKKyAgQlJPVExJX0VSUk9SX0NPREUo
XywgTk9fRVJST1IsIDApIFNFUEFSQVRPUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgLyogU2FtZSBhcyBCcm90bGlSZXN1bHQgdmFsdWVzICovICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgQlJPVExJX0VSUk9SX0NPREUoXywgU1VDQ0VTUywgMSkg
U0VQQVJBVE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgQlJPVExJX0VSUk9S
X0NPREUoXywgTkVFRFNfTU9SRV9JTlBVVCwgMikgU0VQQVJBVE9SICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgQlJPVExJX0VSUk9SX0NPREUoXywgTkVFRFNfTU9SRV9PVVRQVVQsIDMpIFNFUEFS
QVRPUiAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgLyogRXJy
b3JzIGNhdXNlZCBieSBpbnZhbGlkIGlucHV0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgQlJPVExJX0VSUk9SX0NPREUoX0VSUk9SX0ZPUk1BVF8sIEVYVUJFUkFO
VF9OSUJCTEUsIC0xKSBTRVBBUkFUT1IgICAgICAgIFwKKyAgQlJPVExJX0VSUk9SX0NPREUoX0VS
Uk9SX0ZPUk1BVF8sIFJFU0VSVkVELCAtMikgU0VQQVJBVE9SICAgICAgICAgICAgICAgIFwKKyAg
QlJPVExJX0VSUk9SX0NPREUoX0VSUk9SX0ZPUk1BVF8sIEVYVUJFUkFOVF9NRVRBX05JQkJMRSwg
LTMpIFNFUEFSQVRPUiAgIFwKKyAgQlJPVExJX0VSUk9SX0NPREUoX0VSUk9SX0ZPUk1BVF8sIFNJ
TVBMRV9IVUZGTUFOX0FMUEhBQkVULCAtNCkgU0VQQVJBVE9SIFwKKyAgQlJPVExJX0VSUk9SX0NP
REUoX0VSUk9SX0ZPUk1BVF8sIFNJTVBMRV9IVUZGTUFOX1NBTUUsIC01KSBTRVBBUkFUT1IgICAg
IFwKKyAgQlJPVExJX0VSUk9SX0NPREUoX0VSUk9SX0ZPUk1BVF8sIENMX1NQQUNFLCAtNikgU0VQ
QVJBVE9SICAgICAgICAgICAgICAgIFwKKyAgQlJPVExJX0VSUk9SX0NPREUoX0VSUk9SX0ZPUk1B
VF8sIEhVRkZNQU5fU1BBQ0UsIC03KSBTRVBBUkFUT1IgICAgICAgICAgIFwKKyAgQlJPVExJX0VS
Uk9SX0NPREUoX0VSUk9SX0ZPUk1BVF8sIENPTlRFWFRfTUFQX1JFUEVBVCwgLTgpIFNFUEFSQVRP
UiAgICAgIFwKKyAgQlJPVExJX0VSUk9SX0NPREUoX0VSUk9SX0ZPUk1BVF8sIEJMT0NLX0xFTkdU
SF8xLCAtOSkgU0VQQVJBVE9SICAgICAgICAgIFwKKyAgQlJPVExJX0VSUk9SX0NPREUoX0VSUk9S
X0ZPUk1BVF8sIEJMT0NLX0xFTkdUSF8yLCAtMTApIFNFUEFSQVRPUiAgICAgICAgIFwKKyAgQlJP
VExJX0VSUk9SX0NPREUoX0VSUk9SX0ZPUk1BVF8sIFRSQU5TRk9STSwgLTExKSBTRVBBUkFUT1Ig
ICAgICAgICAgICAgIFwKKyAgQlJPVExJX0VSUk9SX0NPREUoX0VSUk9SX0ZPUk1BVF8sIERJQ1RJ
T05BUlksIC0xMikgU0VQQVJBVE9SICAgICAgICAgICAgIFwKKyAgQlJPVExJX0VSUk9SX0NPREUo
X0VSUk9SX0ZPUk1BVF8sIFdJTkRPV19CSVRTLCAtMTMpIFNFUEFSQVRPUiAgICAgICAgICAgIFwK
KyAgQlJPVExJX0VSUk9SX0NPREUoX0VSUk9SX0ZPUk1BVF8sIFBBRERJTkdfMSwgLTE0KSBTRVBB
UkFUT1IgICAgICAgICAgICAgIFwKKyAgQlJPVExJX0VSUk9SX0NPREUoX0VSUk9SX0ZPUk1BVF8s
IFBBRERJTkdfMiwgLTE1KSBTRVBBUkFUT1IgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgLyogLTE2Li4tMjAgY29kZXMgYXJlIHJlc2VydmVkICovICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgLyogTWVt
b3J5IGFsbG9jYXRpb24gcHJvYmxlbXMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgQlJPVExJX0VSUk9SX0NPREUoX0VSUk9SX0FMTE9DXywgQ09OVEVYVF9N
T0RFUywgLTIxKSBTRVBBUkFUT1IgICAgICAgICAgIFwKKyAgLyogTGl0ZXJhbCwgaW5zZXJ0IGFu
ZCBkaXN0YW5jZSB0cmVlcyB0b2dldGhlciAqLyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
QlJPVExJX0VSUk9SX0NPREUoX0VSUk9SX0FMTE9DXywgVFJFRV9HUk9VUFMsIC0yMikgU0VQQVJB
VE9SICAgICAgICAgICAgIFwKKyAgLyogLTIzLi4tMjQgY29kZXMgYXJlIHJlc2VydmVkIGZvciBk
aXN0aW5jdCB0cmVlIGdyb3VwcyAqLyAgICAgICAgICAgICAgIFwKKyAgQlJPVExJX0VSUk9SX0NP
REUoX0VSUk9SX0FMTE9DXywgQ09OVEVYVF9NQVAsIC0yNSkgU0VQQVJBVE9SICAgICAgICAgICAg
IFwKKyAgQlJPVExJX0VSUk9SX0NPREUoX0VSUk9SX0FMTE9DXywgUklOR19CVUZGRVJfMSwgLTI2
KSBTRVBBUkFUT1IgICAgICAgICAgIFwKKyAgQlJPVExJX0VSUk9SX0NPREUoX0VSUk9SX0FMTE9D
XywgUklOR19CVUZGRVJfMiwgLTI3KSBTRVBBUkFUT1IgICAgICAgICAgIFwKKyAgLyogLTI4Li4t
MjkgY29kZXMgYXJlIHJlc2VydmVkIGZvciBkeW5hbWljIHJpbmdidWZmZXIgYWxsb2NhdGlvbiAq
LyAgICAgIFwKKyAgQlJPVExJX0VSUk9SX0NPREUoX0VSUk9SX0FMTE9DXywgQkxPQ0tfVFlQRV9U
UkVFUywgLTMwKSBTRVBBUkFUT1IgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgLyog
IkltcG9zc2libGUiIHN0YXRlcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgQlJPVExJX0VSUk9SX0NPREUoX0VSUk9SXywgVU5SRUFDSEFCTEUs
IC0zMSkKKwordHlwZWRlZiBlbnVtIHsKKyNkZWZpbmUgX0JST1RMSV9DT01NQSAsCisjZGVmaW5l
IF9CUk9UTElfRVJST1JfQ09ERV9FTlVNX0lURU0oUFJFRklYLCBOQU1FLCBDT0RFKSBcCisgICAg
QlJPVExJICMjIFBSRUZJWCAjIyBOQU1FID0gQ09ERQorICBCUk9UTElfRVJST1JfQ09ERVNfTElT
VChfQlJPVExJX0VSUk9SX0NPREVfRU5VTV9JVEVNLCBfQlJPVExJX0NPTU1BKQorI3VuZGVmIF9C
Uk9UTElfRVJST1JfQ09ERV9FTlVNX0lURU0KKyN1bmRlZiBfQlJPVExJX0NPTU1BCit9IEJyb3Rs
aUVycm9yQ29kZTsKKworI2RlZmluZSBCUk9UTElfTEFTVF9FUlJPUl9DT0RFIEJST1RMSV9FUlJP
Ul9VTlJFQUNIQUJMRQorCiAvKiBDcmVhdGVzIHRoZSBpbnN0YW5jZSBvZiBCcm90bGlTdGF0ZSBh
bmQgaW5pdGlhbGl6ZXMgaXQuIHxhbGxvY19mdW5jfCBhbmQKICAgIHxmcmVlX2Z1bmN8IE1VU1Qg
YmUgYm90aCB6ZXJvIG9yIGJvdGggbm9uLXplcm8uIEluIHRoZSBjYXNlIHRoZXkgYXJlIGJvdGgK
ICAgIHplcm8sIGRlZmF1bHQgbWVtb3J5IGFsbG9jYXRvcnMgYXJlIHVzZWQuIHxvcGFxdWV8IGlz
IHBhc3NlZCB0byB8YWxsb2NfZnVuY3wKQEAgLTYzLDggKzExNSw4IEBAIEJyb3RsaVJlc3VsdCBC
cm90bGlEZWNvbXByZXNzQnVmZmVyKHNpemVfdCBlbmNvZGVkX3NpemUsCiAgICBieXRlcyBjb25z
dW1lZCwgYW5kIHRoZSB8Km5leHRfaW58IHBvaW50ZXIgd2lsbCBiZSBpbmNyZW1lbnRlZCBieSB0
aGF0CiAgICBhbW91bnQuIFNpbWlsYXJseSwgfCphdmFpbGFibGVfb3V0fCB3aWxsIGJlIGRlY3Jl
bWVudGVkIGJ5IHRoZSBhbW91bnQgb2YKICAgIG91dHB1dCBieXRlcyB3cml0dGVuLCBhbmQgdGhl
IHwqbmV4dF9vdXR8IHBvaW50ZXIgd2lsbCBiZSBpbmNyZW1lbnRlZCBieSB0aGF0Ci0gICBhbW91
bnQuIHx0b3RhbF9vdXR8IHdpbGwgYmUgc2V0IHRvIHRoZSBudW1iZXIgb2YgYnl0ZXMgZGVjb21w
cmVzc2VkIHNpbmNlCi0gICBsYXN0IHN0YXRlIGluaXRpYWxpemF0aW9uLgorICAgYW1vdW50LiB8
dG90YWxfb3V0fCwgaWYgaXQgaXMgbm90IGEgbnVsbC1wb2ludGVyLCB3aWxsIGJlIHNldCB0byB0
aGUgbnVtYmVyCisgICBvZiBieXRlcyBkZWNvbXByZXNzZWQgc2luY2UgdGhlIGxhc3Qgc3RhdGUg
aW5pdGlhbGl6YXRpb24uCiAKICAgIElucHV0IGlzIG5ldmVyIG92ZXJjb25zdW1lZCwgc28gfG5l
eHRfaW58IGFuZCB8YXZhaWxhYmxlX2lufCBjb3VsZCBiZSBwYXNzZWQKICAgIHRvIHRoZSBuZXh0
IGNvbnN1bWVyIGFmdGVyIGRlY29kaW5nIGlzIGNvbXBsZXRlLiAqLwpAQCAtNzgsMTYgKzEzMCwz
MCBAQCBCcm90bGlSZXN1bHQgQnJvdGxpRGVjb21wcmVzc1N0cmVhbShzaXplX3QqIGF2YWlsYWJs
ZV9pbiwKIC8qIEZpbGxzIHRoZSBuZXcgc3RhdGUgd2l0aCBhIGRpY3Rpb25hcnkgZm9yIExaNzcs
IHdhcm1pbmcgdXAgdGhlIHJpbmdidWZmZXIsCiAgICBlLmcuIGZvciBjdXN0b20gc3RhdGljIGRp
Y3Rpb25hcmllcyBmb3IgZGF0YSBmb3JtYXRzLgogICAgTm90IHRvIGJlIGNvbmZ1c2VkIHdpdGgg
dGhlIGJ1aWx0LWluIHRyYW5zZm9ybWFibGUgZGljdGlvbmFyeSBvZiBCcm90bGkuCi0gICBUaGUg
ZGljdGlvbmFyeSBtdXN0IGV4aXN0IGluIG1lbW9yeSB1bnRpbCBkZWNvZGluZyBpcyBkb25lIGFu
ZCBpcyBvd25lZCBieQotICAgdGhlIGNhbGxlci4gVG8gdXNlOgotICAgIDEpIGluaXRpYWxpemUg
c3RhdGUgd2l0aCBCcm90bGlTdGF0ZUluaXQKLSAgICAyKSB1c2UgQnJvdGxpU2V0Q3VzdG9tRGlj
dGlvbmFyeQotICAgIDMpIHVzZSBCcm90bGlEZWNvbXByZXNzU3RyZWFtCi0gICAgNCkgY2xlYW4g
dXAgd2l0aCBCcm90bGlTdGF0ZUNsZWFudXAKKyAgIHxzaXplfCBzaG91bGQgYmUgbGVzcyBvciBl
cXVhbCB0byAyXjI0ICgxNk1pQiksIG90aGVyd2lzZSB0aGUgZGljdGlvbmFyeSB3aWxsCisgICBi
ZSBpZ25vcmVkLiBUaGUgZGljdGlvbmFyeSBtdXN0IGV4aXN0IGluIG1lbW9yeSB1bnRpbCBkZWNv
ZGluZyBpcyBkb25lIGFuZAorICAgaXMgb3duZWQgYnkgdGhlIGNhbGxlci4gVG8gdXNlOgorICAg
IDEpIEFsbG9jYXRlIGFuZCBpbml0aWFsaXplIHN0YXRlIHdpdGggQnJvdGxpQ3JlYXRlU3RhdGUK
KyAgICAyKSBVc2UgQnJvdGxpU2V0Q3VzdG9tRGljdGlvbmFyeQorICAgIDMpIFVzZSBCcm90bGlE
ZWNvbXByZXNzU3RyZWFtCisgICAgNCkgQ2xlYW4gdXAgYW5kIGZyZWUgc3RhdGUgd2l0aCBCcm90
bGlEZXN0cm95U3RhdGUKICovCiB2b2lkIEJyb3RsaVNldEN1c3RvbURpY3Rpb25hcnkoCiAgICAg
c2l6ZV90IHNpemUsIGNvbnN0IHVpbnQ4X3QqIGRpY3QsIEJyb3RsaVN0YXRlKiBzKTsKIAorLyog
UmV0dXJucyAxLCBpZiBzIGlzIGluIGEgc3RhdGUgd2hlcmUgd2UgaGF2ZSBub3QgcmVhZCBhbnkg
aW5wdXQgYnl0ZXMgeWV0LAorICAgYW5kIDAgb3RoZXJ3aXNlICovCitpbnQgQnJvdGxpU3RhdGVJ
c1N0cmVhbVN0YXJ0KGNvbnN0IEJyb3RsaVN0YXRlKiBzKTsKKworLyogUmV0dXJucyAxLCBpZiBz
IGlzIGluIGEgc3RhdGUgd2hlcmUgd2UgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBpbnB1dCBhbmQK
KyAgIHByb2R1Y2VkIGFsbCBvZiB0aGUgb3V0cHV0LCBhbmQgMCBvdGhlcndpc2UuICovCitpbnQg
QnJvdGxpU3RhdGVJc1N0cmVhbUVuZChjb25zdCBCcm90bGlTdGF0ZSogcyk7CisKKy8qIFJldHVy
bnMgZGV0YWlsZWQgZXJyb3IgY29kZSBhZnRlciBCcm90bGlEZWNvbXByZXNzU3RyZWFtIHJldHVy
bnMKKyAgIEJST1RMSV9SRVNVTFRfRVJST1IuICovCitCcm90bGlFcnJvckNvZGUgQnJvdGxpR2V0
RXJyb3JDb2RlKGNvbnN0IEJyb3RsaVN0YXRlKiBzKTsKKworY29uc3QgY2hhciogQnJvdGxpRXJy
b3JTdHJpbmcoQnJvdGxpRXJyb3JDb2RlIGMpOwogCiAjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykg
fHwgZGVmaW5lZChjX3BsdXNwbHVzKQogfSAvKiBleHRlcm4gIkMiICovCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9icm90bGkvZGVjL2h1ZmZtYW4uYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2Jyb3RsaS9kZWMvaHVmZm1hbi5jCmluZGV4IDE1OWFjMWM3Y2I1NjI2NGExYzgzODkwZTNjNDhi
NjNlNDg0MDhlNTQuLjM3NzVmZmU3ZTkyMGY0Y2YxZTFhNWU5NWQxZGZjN2ZiM2Q4MDE4MmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2Jyb3RsaS9kZWMvaHVmZm1hbi5jCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2Jyb3RsaS9kZWMvaHVmZm1hbi5jCkBAIC05OSw3ICs5OSw2IEBAIHN0
YXRpYyBCUk9UTElfSU5MSU5FIGludCBOZXh0VGFibGVCaXRTaXplKGNvbnN0IHVpbnQxNl90KiBj
b25zdCBjb3VudCwKICAgcmV0dXJuIGxlbiAtIHJvb3RfYml0czsKIH0KIAotCiB2b2lkIEJyb3Rs
aUJ1aWxkQ29kZUxlbmd0aHNIdWZmbWFuVGFibGUoSHVmZm1hbkNvZGUqIHRhYmxlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGNvbnN0IGNv
ZGVfbGVuZ3RocywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
MTZfdCogY291bnQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2Jyb3RsaS9kZWMv
aHVmZm1hbi5oIGIvU291cmNlL1RoaXJkUGFydHkvYnJvdGxpL2RlYy9odWZmbWFuLmgKaW5kZXgg
N2NiZWM4MGQ0MjliN2U4MmQ3ZjkxYjA2YzMxNjdlOWI2ZTFlYTk5Zi4uZmM4ODA4MTBjNjY2NThk
N2JiZTczNTIwOGRkMDQ1YzYxMTcwOTkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
YnJvdGxpL2RlYy9odWZmbWFuLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvYnJvdGxpL2RlYy9o
dWZmbWFuLmgKQEAgLTEwLDYgKzEwLDcgQEAKICNkZWZpbmUgQlJPVExJX0RFQ19IVUZGTUFOX0hf
CiAKICNpbmNsdWRlICIuL3R5cGVzLmgiCisjaW5jbHVkZSAiLi9wb3J0LmgiCiAKICNpZiBkZWZp
bmVkKF9fY3BsdXNwbHVzKSB8fCBkZWZpbmVkKGNfcGx1c3BsdXMpCiBleHRlcm4gIkMiIHsKQEAg
LTM2LDI3ICszNywyMSBAQCB0eXBlZGVmIHN0cnVjdCB7CiAgIHVpbnQxNl90IHZhbHVlOyAgLyog
c3ltYm9sIHZhbHVlIG9yIHRhYmxlIG9mZnNldCAqLwogfSBIdWZmbWFuQ29kZTsKIAotCiAvKiBC
dWlsZHMgSHVmZm1hbiBsb29rdXAgdGFibGUgYXNzdW1pbmcgY29kZSBsZW5ndGhzIGFyZSBpbiBz
eW1ib2wgb3JkZXIuICovCi12b2lkIEJyb3RsaUJ1aWxkQ29kZUxlbmd0aHNIdWZmbWFuVGFibGUo
SHVmZm1hbkNvZGUqIHJvb3RfdGFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgdWludDhfdCogY29uc3QgY29kZV9sZW5ndGhzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90KiBjb3VudCk7CitCUk9UTElfSU5U
RVJOQUwgdm9pZCBCcm90bGlCdWlsZENvZGVMZW5ndGhzSHVmZm1hblRhYmxlKEh1ZmZtYW5Db2Rl
KiByb290X3RhYmxlLAorICAgIGNvbnN0IHVpbnQ4X3QqIGNvbnN0IGNvZGVfbGVuZ3RocywgdWlu
dDE2X3QqIGNvdW50KTsKIAogLyogQnVpbGRzIEh1ZmZtYW4gbG9va3VwIHRhYmxlIGFzc3VtaW5n
IGNvZGUgbGVuZ3RocyBhcmUgaW4gc3ltYm9sIG9yZGVyLiAqLwogLyogUmV0dXJucyBzaXplIG9m
IHJlc3VsdGluZyB0YWJsZS4gKi8KLXVpbnQzMl90IEJyb3RsaUJ1aWxkSHVmZm1hblRhYmxlKEh1
ZmZtYW5Db2RlKiByb290X3RhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IHJvb3RfYml0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVp
bnQxNl90KiBjb25zdCBzeW1ib2xfbGlzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1aW50MTZfdCogY291bnRfYXJnKTsKK0JST1RMSV9JTlRFUk5BTCB1aW50MzJfdCBCcm90
bGlCdWlsZEh1ZmZtYW5UYWJsZShIdWZmbWFuQ29kZSogcm9vdF90YWJsZSwKKyAgICBpbnQgcm9v
dF9iaXRzLCBjb25zdCB1aW50MTZfdCogY29uc3Qgc3ltYm9sX2xpc3RzLCB1aW50MTZfdCogY291
bnRfYXJnKTsKIAogLyogQnVpbGRzIGEgc2ltcGxlIEh1ZmZtYW4gdGFibGUuIFRoZSBudW1fc3lt
Ym9scyBwYXJhbWV0ZXIgaXMgdG8gYmUgKi8KIC8qIGludGVycHJldGVkIGFzIGZvbGxvd3M6IDAg
bWVhbnMgMSBzeW1ib2wsIDEgbWVhbnMgMiBzeW1ib2xzLCAyIG1lYW5zIDMgKi8KIC8qIHN5bWJv
bHMsIDMgbWVhbnMgNCBzeW1ib2xzIHdpdGggbGVuZ3RocyAyLDIsMiwyLCA0IG1lYW5zIDQgc3lt
Ym9scyB3aXRoICovCiAvKiBsZW5ndGhzIDEsMiwzLDMuICovCi11aW50MzJfdCBCcm90bGlCdWls
ZFNpbXBsZUh1ZmZtYW5UYWJsZShIdWZmbWFuQ29kZSogdGFibGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgcm9vdF9iaXRzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QqIHN5bWJvbHMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBudW1fc3ltYm9scyk7CitCUk9UTElfSU5U
RVJOQUwgdWludDMyX3QgQnJvdGxpQnVpbGRTaW1wbGVIdWZmbWFuVGFibGUoSHVmZm1hbkNvZGUq
IHRhYmxlLAorICAgIGludCByb290X2JpdHMsIHVpbnQxNl90KiBzeW1ib2xzLCB1aW50MzJfdCBu
dW1fc3ltYm9scyk7CiAKIC8qIENvbnRhaW5zIGEgY29sbGVjdGlvbiBvZiBIdWZmbWFuIHRyZWVz
IHdpdGggdGhlIHNhbWUgYWxwaGFiZXQgc2l6ZS4gKi8KIHR5cGVkZWYgc3RydWN0IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2Jyb3RsaS9kZWMvcG9ydC5oIGIvU291cmNlL1RoaXJk
UGFydHkvYnJvdGxpL2RlYy9wb3J0LmgKaW5kZXggZmUwOTEyMjc4ZjkxYzk0YTQ3ODRjNjkxNWQ4
ODBkMzI5M2Y0NWQ5Mi4uMTliNDU3Yzc1Yjc3YjRjOGZjNjQ0OTY1YWRlZDlhMWM1YWQyYmE1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvYnJvdGxpL2RlYy9wb3J0LmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvYnJvdGxpL2RlYy9wb3J0LmgKQEAgLTE4LDEzICsxOCwxNiBAQAogICAg
ICAgcmVhZCBhbmQgb3ZlcmxhcHBpbmcgbWVtY3B5OyB0aGlzIHJlZHVjZXMgZGVjb21wcmVzc2lv
biBzcGVlZCBieSA1JQogICAgICogQlJPVExJX0RFQlVHIGR1bXBzIGZpbGUgbmFtZSBhbmQgbGlu
ZSBudW1iZXIgd2hlbiBkZWNvZGVyIGRldGVjdHMgc3RyZWFtCiAgICAgICBvciBtZW1vcnkgZXJy
b3IKLSAgICAqIEJST1RMSV9ERUNPREVfREVCVUcgZW5hYmxlcyBhc3NlcnRzIGFuZCBkdW1wcyB2
YXJpb3VzIHN0YXRlIGluZm9ybWF0aW9uCisgICAgKiBCUk9UTElfRU5BQkxFX0xPRyBlbmFibGVz
IGFzc2VydHMgYW5kIGR1bXBzIHZhcmlvdXMgc3RhdGUgaW5mb3JtYXRpb24KICAqLwogCiAjaWZu
ZGVmIEJST1RMSV9ERUNfUE9SVF9IXwogI2RlZmluZSBCUk9UTElfREVDX1BPUlRfSF8KIAorI2lm
IGRlZmluZWQoQlJPVExJX0VOQUJMRV9MT0cpIHx8IGRlZmluZWQoQlJPVExJX0RFQlVHKQogI2lu
Y2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjZW5kaWYKIAogLyogQ29tcGF0
aWJpbGl0eSB3aXRoIG5vbi1jbGFuZyBjb21waWxlcnMuICovCiAjaWZuZGVmIF9faGFzX2J1aWx0
aW4KQEAgLTg0LDEyICs4NywxMyBAQAogI2VuZGlmCiAKICNpZmRlZiBCUk9UTElfQlVJTERfUE9S
VEFCTEUKLSNkZWZpbmUgQlJPVExJX0FMSUdORURfUkVBRCAxCisjZGVmaW5lIEJST1RMSV9BTElH
TkVEX1JFQUQgKCEhMSkKICNlbGlmIGRlZmluZWQoQlJPVExJX1RBUkdFVF9YODYpIHx8IGRlZmlu
ZWQoQlJPVExJX1RBUkdFVF9YNjQpIHx8IFwKICAgICAgZGVmaW5lZChCUk9UTElfVEFSR0VUX0FS
TVY3KSB8fCBkZWZpbmVkKEJST1RMSV9UQVJHRVRfQVJNVjgpCi0jZGVmaW5lIEJST1RMSV9BTElH
TkVEX1JFQUQgMCAgLyogQWxsb3cgdW5hbGlnbmVkIGFjY2VzcyBvbiB3aGl0ZWxpc3RlZCBDUFVz
LiAqLworLyogQWxsb3cgdW5hbGlnbmVkIHJlYWQgb25seSBmb3Igd2hpdGVsaXN0ZWQgQ1BVcy4g
Ki8KKyNkZWZpbmUgQlJPVExJX0FMSUdORURfUkVBRCAoISEwKQogI2Vsc2UKLSNkZWZpbmUgQlJP
VExJX0FMSUdORURfUkVBRCAxCisjZGVmaW5lIEJST1RMSV9BTElHTkVEX1JFQUQgKCEhMSkKICNl
bmRpZgogCiAvKiBEZWZpbmUgIlBSRURJQ1RfVFJVRSIgYW5kICJQUkVESUNUX0ZBTFNFIiBtYWNy
b3MgZm9yIGNhcGFibGUgY29tcGlsZXJzLgpAQCAtMTMwLDYgKzEzNCwxOCBAQCBPUjoKICNkZWZp
bmUgQVRUUklCVVRFX0FMV0FZU19JTkxJTkUKICNlbmRpZgogCisjaWYgZGVmaW5lZChfV0lOMzIp
IHx8IGRlZmluZWQoX19DWUdXSU5fXykKKyNkZWZpbmUgQVRUUklCVVRFX1ZJU0lCSUxJVFlfSElE
REVOCisjZWxpZiBCUk9UTElfTU9ERVJOX0NPTVBJTEVSIHx8IF9faGFzX2F0dHJpYnV0ZSh2aXNp
YmlsaXR5KQorI2RlZmluZSBBVFRSSUJVVEVfVklTSUJJTElUWV9ISURERU4gX19hdHRyaWJ1dGVf
XyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpCisjZWxzZQorI2RlZmluZSBBVFRSSUJVVEVfVklT
SUJJTElUWV9ISURERU4KKyNlbmRpZgorCisjaWZuZGVmIEJST1RMSV9JTlRFUk5BTAorI2RlZmlu
ZSBCUk9UTElfSU5URVJOQUwgQVRUUklCVVRFX1ZJU0lCSUxJVFlfSElEREVOCisjZW5kaWYKKwog
I2lmbmRlZiBfTVNDX1ZFUgogI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpIHx8ICFkZWZpbmVkKF9f
U1RSSUNUX0FOU0lfXykgfHwgXAogICAgIF9fU1REQ19WRVJTSU9OX18gPj0gMTk5OTAxTApAQCAt
MTQxLDEwICsxNTcsMjIgQEAgT1I6CiAjZGVmaW5lIEJST1RMSV9JTkxJTkUgX19mb3JjZWlubGlu
ZQogI2VuZGlmICAvKiBfTVNDX1ZFUiAqLwogCi0jaWZkZWYgQlJPVExJX0RFQ09ERV9ERUJVRwor
I2lmZGVmIEJST1RMSV9FTkFCTEVfTE9HCiAjZGVmaW5lIEJST1RMSV9EQ0hFQ0soeCkgYXNzZXJ0
KHgpCisjZGVmaW5lIEJST1RMSV9MT0coeCkgcHJpbnRmIHgKICNlbHNlCiAjZGVmaW5lIEJST1RM
SV9EQ0hFQ0soeCkKKyNkZWZpbmUgQlJPVExJX0xPRyh4KQorI2VuZGlmCisKKyNpZiBkZWZpbmVk
KEJST1RMSV9ERUJVRykgfHwgZGVmaW5lZChCUk9UTElfRU5BQkxFX0xPRykKK3N0YXRpYyBpbmxp
bmUgdm9pZCBCcm90bGlEdW1wKGNvbnN0IGNoYXIqIGYsIGludCBsLCBjb25zdCBjaGFyKiBmbikg
eworICBmcHJpbnRmKHN0ZGVyciwgIiVzOiVkICglcylcbiIsIGYsIGwsIGZuKTsKKyAgZmZsdXNo
KHN0ZGVycik7Cit9CisjZGVmaW5lIEJST1RMSV9EVU1QKCkgQnJvdGxpRHVtcChfX0ZJTEVfXywg
X19MSU5FX18sIF9fRlVOQ1RJT05fXykKKyNlbHNlCisjZGVmaW5lIEJST1RMSV9EVU1QKCkgKHZv
aWQpKDApCiAjZW5kaWYKIAogI2lmIGRlZmluZWQoQlJPVExJX0JVSUxEXzY0X0JJVCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2Jyb3RsaS9kZWMvc3RhdGUuYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2Jyb3RsaS9kZWMvc3RhdGUuYwppbmRleCA1MmMwZTZjOGY4ZDQ1NDJkYWJhMmJkZDZj
MWU1MDQ1ZTFmM2RlMzFiLi4zNThlMDhkM2Q2MTU0ZTg4NjBjZDg2Y2Q2ZWU1N2UwNWU0YThiOTE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9icm90bGkvZGVjL3N0YXRlLmMKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvYnJvdGxpL2RlYy9zdGF0ZS5jCkBAIC0xNSw2ICsxNSwxMCBAQAog
ZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorLyogRGVjbGFyZWQgaW4gZGVjb2RlLmggKi8KK2ludCBC
cm90bGlTdGF0ZUlzU3RyZWFtU3RhcnQoY29uc3QgQnJvdGxpU3RhdGUqIHMpOworaW50IEJyb3Rs
aVN0YXRlSXNTdHJlYW1FbmQoY29uc3QgQnJvdGxpU3RhdGUqIHMpOworCiBzdGF0aWMgdm9pZCog
RGVmYXVsdEFsbG9jRnVuYyh2b2lkKiBvcGFxdWUsIHNpemVfdCBzaXplKSB7CiAgIEJST1RMSV9V
TlVTRUQob3BhcXVlKTsKICAgcmV0dXJuIG1hbGxvYyhzaXplKTsKQEAgLTc2LDcgKzgwLDYgQEAg
dm9pZCBCcm90bGlTdGF0ZUluaXRXaXRoQ3VzdG9tQWxsb2NhdG9ycyhCcm90bGlTdGF0ZSogcywK
ICAgcy0+ZGlzdGFuY2VfaGdyb3VwLmNvZGVzID0gTlVMTDsKICAgcy0+ZGlzdGFuY2VfaGdyb3Vw
Lmh0cmVlcyA9IE5VTEw7CiAKLQogICBzLT5jdXN0b21fZGljdCA9IE5VTEw7CiAgIHMtPmN1c3Rv
bV9kaWN0X3NpemUgPSAwOwogCkBAIC0xMTUsNyArMTE4LDYgQEAgdm9pZCBCcm90bGlTdGF0ZU1l
dGFibG9ja0JlZ2luKEJyb3RsaVN0YXRlKiBzKSB7CiAgIHMtPmNvbnRleHRfbW9kZXMgPSBOVUxM
OwogICBzLT5kaXN0X2NvbnRleHRfbWFwID0gTlVMTDsKICAgcy0+Y29udGV4dF9tYXBfc2xpY2Ug
PSBOVUxMOwotICBzLT5saXRlcmFsX2h0cmVlX2luZGV4ID0gMDsKICAgcy0+bGl0ZXJhbF9odHJl
ZSA9IE5VTEw7CiAgIHMtPmRpc3RfY29udGV4dF9tYXBfc2xpY2UgPSBOVUxMOwogICBzLT5kaXN0
X2h0cmVlX2luZGV4ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2Jyb3RsaS9k
ZWMvc3RhdGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2Jyb3RsaS9kZWMvc3RhdGUuaAppbmRleCA5
MjVmYTE0OWM4NTI4NTQyNzM1MTAyODVhNmM0NDhjYWMwY2E3NTc4Li42MzY0N2VmMmJjYjljZTM1
MmE2YTdmYjMxOTE3NjZlMjg5YjJhY2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9i
cm90bGkvZGVjL3N0YXRlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvYnJvdGxpL2RlYy9zdGF0
ZS5oCkBAIC0xMiw2ICsxMiw3IEBACiAjaW5jbHVkZSAiLi9iaXRfcmVhZGVyLmgiCiAjaW5jbHVk
ZSAiLi9odWZmbWFuLmgiCiAjaW5jbHVkZSAiLi90eXBlcy5oIgorI2luY2x1ZGUgIi4vcG9ydC5o
IgogCiAjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykgfHwgZGVmaW5lZChjX3BsdXNwbHVzKQogZXh0
ZXJuICJDIiB7CkBAIC0xMTksNiArMTIwLDggQEAgc3RydWN0IEJyb3RsaVN0YXRlU3RydWN0IHsK
ICAgaW50IHJpbmdidWZmZXJfbWFzazsKICAgaW50IGRpc3RfcmJfaWR4OwogICBpbnQgZGlzdF9y
Yls0XTsKKyAgaW50IGVycm9yX2NvZGU7CisgIHVpbnQzMl90IHN1Yl9sb29wX2NvdW50ZXI7CiAg
IHVpbnQ4X3QqIHJpbmdidWZmZXI7CiAgIHVpbnQ4X3QqIHJpbmdidWZmZXJfZW5kOwogICBIdWZm
bWFuQ29kZSogaHRyZWVfY29tbWFuZDsKQEAgLTEyNyw4ICsxMzAsNiBAQCBzdHJ1Y3QgQnJvdGxp
U3RhdGVTdHJ1Y3QgewogICB1aW50OF90KiBjb250ZXh0X21hcF9zbGljZTsKICAgdWludDhfdCog
ZGlzdF9jb250ZXh0X21hcF9zbGljZTsKIAotICB1aW50MzJfdCBzdWJfbG9vcF9jb3VudGVyOwot
CiAgIC8qIFRoaXMgcmluZyBidWZmZXIgaG9sZHMgYSBmZXcgcGFzdCBjb3B5IGRpc3RhbmNlcyB0
aGF0IHdpbGwgYmUgdXNlZCBieSAqLwogICAvKiBzb21lIHNwZWNpYWwgZGlzdGFuY2UgY29kZXMu
ICovCiAgIEh1ZmZtYW5UcmVlR3JvdXAgbGl0ZXJhbF9oZ3JvdXA7CkBAIC0xNTEsMTIgKzE1Miwx
MCBAQCBzdHJ1Y3QgQnJvdGxpU3RhdGVTdHJ1Y3QgewogICB1aW50MzJfdCBudW1fZGlzdF9odHJl
ZXM7CiAgIHVpbnQ4X3QqIGRpc3RfY29udGV4dF9tYXA7CiAgIEh1ZmZtYW5Db2RlKiBsaXRlcmFs
X2h0cmVlOwotICB1aW50OF90IGxpdGVyYWxfaHRyZWVfaW5kZXg7CiAgIHVpbnQ4X3QgZGlzdF9o
dHJlZV9pbmRleDsKICAgdWludDMyX3QgcmVwZWF0X2NvZGVfbGVuOwogICB1aW50MzJfdCBwcmV2
X2NvZGVfbGVuOwogCi0KICAgaW50IGNvcHlfbGVuZ3RoOwogICBpbnQgZGlzdGFuY2VfY29kZTsK
IApAQCAtMTkzLDcgKzE5Miw3IEBAIHN0cnVjdCBCcm90bGlTdGF0ZVN0cnVjdCB7CiAKICAgLyog
Rm9yIEludmVyc2VNb3ZlVG9Gcm9udFRyYW5zZm9ybSAqLwogICB1aW50MzJfdCBtdGZfdXBwZXJf
Ym91bmQ7Ci0gIHVpbnQ4X3QgbXRmWzI1Nl07CisgIHVpbnQ4X3QgbXRmWzI1NiArIDRdOwogCiAg
IC8qIEZvciBjdXN0b20gZGljdGlvbmFyaWVzICovCiAgIGNvbnN0IHVpbnQ4X3QqIGN1c3RvbV9k
aWN0OwpAQCAtMjE4LDI5ICsyMTcsMjMgQEAgc3RydWN0IEJyb3RsaVN0YXRlU3RydWN0IHsKICAg
dWludDMyX3QgbnVtX2xpdGVyYWxfaHRyZWVzOwogICB1aW50OF90KiBjb250ZXh0X21hcDsKICAg
dWludDhfdCogY29udGV4dF9tb2RlczsKKworICB1aW50MzJfdCB0cml2aWFsX2xpdGVyYWxfY29u
dGV4dHNbOF07ICAvKiAyNTYgYml0cyAqLwogfTsKIAotdHlwZWRlZiBzdHJ1Y3QgQnJvdGxpU3Rh
dGVTdHJ1Y3QgQnJvdGxpU3RhdGU7Ci0KLXZvaWQgQnJvdGxpU3RhdGVJbml0KEJyb3RsaVN0YXRl
KiBzKTsKLXZvaWQgQnJvdGxpU3RhdGVJbml0V2l0aEN1c3RvbUFsbG9jYXRvcnMoQnJvdGxpU3Rh
dGUqIHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyb3RsaV9h
bGxvY19mdW5jIGFsbG9jX2Z1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyb3RsaV9mcmVlX2Z1bmMgZnJlZV9mdW5jLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2b2lkKiBvcGFxdWUpOwotdm9pZCBCcm90bGlTdGF0ZUNsZWFu
dXAoQnJvdGxpU3RhdGUqIHMpOwotdm9pZCBCcm90bGlTdGF0ZU1ldGFibG9ja0JlZ2luKEJyb3Rs
aVN0YXRlKiBzKTsKLXZvaWQgQnJvdGxpU3RhdGVDbGVhbnVwQWZ0ZXJNZXRhYmxvY2soQnJvdGxp
U3RhdGUqIHMpOwotdm9pZCBCcm90bGlIdWZmbWFuVHJlZUdyb3VwSW5pdChCcm90bGlTdGF0ZSog
cywgSHVmZm1hblRyZWVHcm91cCogZ3JvdXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQzMl90IGFscGhhYmV0X3NpemUsIHVpbnQzMl90IG50cmVlcyk7Ci12b2lkIEJyb3Rs
aUh1ZmZtYW5UcmVlR3JvdXBSZWxlYXNlKEJyb3RsaVN0YXRlKiBzLCBIdWZmbWFuVHJlZUdyb3Vw
KiBncm91cCk7Ci0KLS8qIFJldHVybnMgMSwgaWYgcyBpcyBpbiBhIHN0YXRlIHdoZXJlIHdlIGhh
dmUgbm90IHJlYWQgYW55IGlucHV0IGJ5dGVzIHlldCwKLSAgIGFuZCAwIG90aGVyd2lzZSAqLwot
aW50IEJyb3RsaVN0YXRlSXNTdHJlYW1TdGFydChjb25zdCBCcm90bGlTdGF0ZSogcyk7Ci0KLS8q
IFJldHVybnMgMSwgaWYgcyBpcyBpbiBhIHN0YXRlIHdoZXJlIHdlIHJlYWNoZWQgdGhlIGVuZCBv
ZiB0aGUgaW5wdXQgYW5kCi0gICBwcm9kdWNlZCBhbGwgb2YgdGhlIG91dHB1dCwgYW5kIDAgb3Ro
ZXJ3aXNlLiAqLwotaW50IEJyb3RsaVN0YXRlSXNTdHJlYW1FbmQoY29uc3QgQnJvdGxpU3RhdGUq
IHMpOwordHlwZWRlZiBzdHJ1Y3QgQnJvdGxpU3RhdGVTdHJ1Y3QgQnJvdGxpU3RhdGVJbnRlcm5h
bDsKKyNkZWZpbmUgQnJvdGxpU3RhdGUgQnJvdGxpU3RhdGVJbnRlcm5hbAorCitCUk9UTElfSU5U
RVJOQUwgdm9pZCBCcm90bGlTdGF0ZUluaXQoQnJvdGxpU3RhdGUqIHMpOworQlJPVExJX0lOVEVS
TkFMIHZvaWQgQnJvdGxpU3RhdGVJbml0V2l0aEN1c3RvbUFsbG9jYXRvcnMoQnJvdGxpU3RhdGUq
IHMsCisgICAgYnJvdGxpX2FsbG9jX2Z1bmMgYWxsb2NfZnVuYywgYnJvdGxpX2ZyZWVfZnVuYyBm
cmVlX2Z1bmMsIHZvaWQqIG9wYXF1ZSk7CitCUk9UTElfSU5URVJOQUwgdm9pZCBCcm90bGlTdGF0
ZUNsZWFudXAoQnJvdGxpU3RhdGUqIHMpOworQlJPVExJX0lOVEVSTkFMIHZvaWQgQnJvdGxpU3Rh
dGVNZXRhYmxvY2tCZWdpbihCcm90bGlTdGF0ZSogcyk7CitCUk9UTElfSU5URVJOQUwgdm9pZCBC
cm90bGlTdGF0ZUNsZWFudXBBZnRlck1ldGFibG9jayhCcm90bGlTdGF0ZSogcyk7CitCUk9UTElf
SU5URVJOQUwgdm9pZCBCcm90bGlIdWZmbWFuVHJlZUdyb3VwSW5pdChCcm90bGlTdGF0ZSogcywK
KyAgICBIdWZmbWFuVHJlZUdyb3VwKiBncm91cCwgdWludDMyX3QgYWxwaGFiZXRfc2l6ZSwgdWlu
dDMyX3QgbnRyZWVzKTsKK0JST1RMSV9JTlRFUk5BTCB2b2lkIEJyb3RsaUh1ZmZtYW5UcmVlR3Jv
dXBSZWxlYXNlKEJyb3RsaVN0YXRlKiBzLAorICAgIEh1ZmZtYW5UcmVlR3JvdXAqIGdyb3VwKTsK
IAogI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpIHx8IGRlZmluZWQoY19wbHVzcGx1cykKIH0gIC8q
IGV4dGVybiAiQyIgKi8K
</data>
<flag name="review"
          id="305444"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>