Date: Fri, 15 Jan 2010 21:40:03 GMT From: "Pedro F. Giffuni" <giffunip@tutopia.com> To: freebsd-bugs@FreeBSD.org Subject: Re: bin/142384: [patch] sync fsck_msdosfs(8) with OpenBSD Message-ID: <201001152140.o0FLe3rk029080@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR bin/142384; it has been noted by GNATS.
From: "Pedro F. Giffuni" <giffunip@tutopia.com>
To: bug-followup@FreeBSD.org
Cc:
Subject: Re: bin/142384: [patch] sync fsck_msdosfs(8) with OpenBSD
Date: Fri, 15 Jan 2010 13:35:59 -0800 (PST)
--0-1059020741-1263591359=:76287
Content-Type: text/plain; charset=us-ascii
In addition to the NetBSD fixes, this patch renames the fields in
the bootblock struct in preparation for a header unification patch
based on the msdosfs headers.
At least I am sure we are not ruining filesystems:
mogwai# fsck -t msdosfs /dev/da0s1
** /dev/da0s1
** Phase 1 - Read and Compare FATs
** Phase 2 - Check Cluster Chains
** Phase 3 - Checking Directories
** Phase 4 - Checking for Lost Files
2310 files, 2306176 free (576544 clusters)
--0-1059020741-1263591359=:76287
Content-Type: application/octet-stream; name=patch-fsck_msdosfs
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=patch-fsck_msdosfs
ZGlmZiAtcnUgZnNja19tc2Rvc2ZzLm9yaWcvYm9vdC5jIGZzY2tfbXNkb3Nm
cy9ib290LmMKLS0tIGZzY2tfbXNkb3Nmcy5vcmlnL2Jvb3QuYwkyMDEwLTAx
LTA2IDExOjA3OjI0LjAwMDAwMDAwMCArMDAwMAorKysgZnNja19tc2Rvc2Zz
L2Jvb3QuYwkyMDEwLTAxLTE1IDE2OjIyOjA3LjAwMDAwMDAwMCArMDAwMApA
QCAtMTAsMTMgKzEwLDYgQEAKICAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CiAgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVy
aWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNvZnR3
YXJlCi0gKiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3ds
ZWRnZW1lbnQ6Ci0gKglUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUg
ZGV2ZWxvcGVkIGJ5IE1hcnRpbiBIdXNlbWFubgotICoJYW5kIFdvbGZnYW5n
IFNvbGZyYW5rLgotICogNC4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgVW5p
dmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKLSAq
ICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotICogICAgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgogICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SUyBgYEFTIElT
JycgQU5EIEFOWSBFWFBSRVNTIE9SCiAgKiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTCkBAIC00MCw3ICszMyw2IEBACiAKICNpbmNsdWRlIDxzdGRs
aWIuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDxjdHlwZS5o
PgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAK
QEAgLTQ4LDE2ICs0MCwxNSBAQAogI2luY2x1ZGUgImZzdXRpbC5oIgogCiBp
bnQKLXJlYWRib290KGRvc2ZzLCBib290KQotCWludCBkb3NmczsKLQlzdHJ1
Y3QgYm9vdGJsb2NrICpib290OworcmVhZGJvb3QoaW50IGRvc2ZzLCBzdHJ1
Y3QgYm9vdGJsb2NrICpib290KQogewogCXVfY2hhciBibG9ja1tET1NCT09U
QkxPQ0tTSVpFXTsKIAl1X2NoYXIgZnNpbmZvWzIgKiBET1NCT09UQkxPQ0tT
SVpFXTsKIAl1X2NoYXIgYmFja3VwW0RPU0JPT1RCTE9DS1NJWkVdOwogCWlu
dCByZXQgPSBGU09LOworCWludCBpOwogCQotCWlmIChyZWFkKGRvc2ZzLCBi
bG9jaywgc2l6ZW9mIGJsb2NrKSA8IHNpemVvZiBibG9jaykgeworCWlmICgo
c2l6ZV90KXJlYWQoZG9zZnMsIGJsb2NrLCBzaXplb2YgYmxvY2spICE9IHNp
emVvZiBibG9jaykgewogCQlwZXJyb3IoImNvdWxkIG5vdCByZWFkIGJvb3Qg
YmxvY2siKTsKIAkJcmV0dXJuIEZTRkFUQUw7CiAJfQpAQCAtNzEsMjIgKzYy
LDIyIEBACiAJYm9vdC0+VmFsaWRGYXQgPSAtMTsKIAogCS8qIGRlY29kZSBi
aW9zIHBhcmFtZXRlciBibG9jayAqLwotCWJvb3QtPkJ5dGVzUGVyU2VjID0g
YmxvY2tbMTFdICsgKGJsb2NrWzEyXSA8PCA4KTsKLQlib290LT5TZWNQZXJD
bHVzdCA9IGJsb2NrWzEzXTsKLQlib290LT5SZXNTZWN0b3JzID0gYmxvY2tb
MTRdICsgKGJsb2NrWzE1XSA8PCA4KTsKLQlib290LT5GQVRzID0gYmxvY2tb
MTZdOwotCWJvb3QtPlJvb3REaXJFbnRzID0gYmxvY2tbMTddICsgKGJsb2Nr
WzE4XSA8PCA4KTsKLQlib290LT5TZWN0b3JzID0gYmxvY2tbMTldICsgKGJs
b2NrWzIwXSA8PCA4KTsKLQlib290LT5NZWRpYSA9IGJsb2NrWzIxXTsKLQli
b290LT5GQVRzbWFsbCA9IGJsb2NrWzIyXSArIChibG9ja1syM10gPDwgOCk7
CisJYm9vdC0+YnBiQnl0ZXNQZXJTZWMgPSBibG9ja1sxMV0gKyAoYmxvY2tb
MTJdIDw8IDgpOworCWJvb3QtPmJwYlNlY1BlckNsdXN0ID0gYmxvY2tbMTNd
OworCWJvb3QtPmJwYlJlc1NlY3RvcnMgPSBibG9ja1sxNF0gKyAoYmxvY2tb
MTVdIDw8IDgpOworCWJvb3QtPmJwYkZBVHMgPSBibG9ja1sxNl07CisJYm9v
dC0+YnBiUm9vdERpckVudHMgPSBibG9ja1sxN10gKyAoYmxvY2tbMThdIDw8
IDgpOworCWJvb3QtPmJwYlNlY3RvcnMgPSBibG9ja1sxOV0gKyAoYmxvY2tb
MjBdIDw8IDgpOworCWJvb3QtPmJwYk1lZGlhID0gYmxvY2tbMjFdOworCWJv
b3QtPmJwYkZBVHNtYWxsID0gYmxvY2tbMjJdICsgKGJsb2NrWzIzXSA8PCA4
KTsKIAlib290LT5TZWNQZXJUcmFjayA9IGJsb2NrWzI0XSArIChibG9ja1sy
NV0gPDwgOCk7Ci0JYm9vdC0+SGVhZHMgPSBibG9ja1syNl0gKyAoYmxvY2tb
MjddIDw8IDgpOwotCWJvb3QtPkhpZGRlblNlY3MgPSBibG9ja1syOF0gKyAo
YmxvY2tbMjldIDw8IDgpICsgKGJsb2NrWzMwXSA8PCAxNikgKyAoYmxvY2tb
MzFdIDw8IDI0KTsKLQlib290LT5IdWdlU2VjdG9ycyA9IGJsb2NrWzMyXSAr
IChibG9ja1szM10gPDwgOCkgKyAoYmxvY2tbMzRdIDw8IDE2KSArIChibG9j
a1szNV0gPDwgMjQpOworCWJvb3QtPmJwYkhlYWRzID0gYmxvY2tbMjZdICsg
KGJsb2NrWzI3XSA8PCA4KTsKKwlib290LT5icGJIaWRkZW5TZWNzID0gYmxv
Y2tbMjhdICsgKGJsb2NrWzI5XSA8PCA4KSArIChibG9ja1szMF0gPDwgMTYp
ICsgKGJsb2NrWzMxXSA8PCAyNCk7CisJYm9vdC0+YnBiSHVnZVNlY3RvcnMg
PSBibG9ja1szMl0gKyAoYmxvY2tbMzNdIDw8IDgpICsgKGJsb2NrWzM0XSA8
PCAxNikgKyAoYmxvY2tbMzVdIDw8IDI0KTsKIAotCWJvb3QtPkZBVHNlY3Mg
PSBib290LT5GQVRzbWFsbDsKKwlib290LT5GQVRzZWNzID0gYm9vdC0+YnBi
RkFUc21hbGw7CiAKLQlpZiAoIWJvb3QtPlJvb3REaXJFbnRzKQorCWlmICgh
Ym9vdC0+YnBiUm9vdERpckVudHMpCiAJCWJvb3QtPmZsYWdzIHw9IEZBVDMy
OwogCWlmIChib290LT5mbGFncyAmIEZBVDMyKSB7CiAJCWJvb3QtPkZBVHNl
Y3MgPSBibG9ja1szNl0gKyAoYmxvY2tbMzddIDw8IDgpCkBAIC0xMDEsMTMg
KzkyLDEzIEBACiAJCQkgICAgICAgYmxvY2tbNDNdLCBibG9ja1s0Ml0pOwog
CQkJcmV0dXJuIEZTRkFUQUw7CiAJCX0KLQkJYm9vdC0+Um9vdENsID0gYmxv
Y2tbNDRdICsgKGJsb2NrWzQ1XSA8PCA4KQorCQlib290LT5icGJSb290Q2x1
c3QgPSBibG9ja1s0NF0gKyAoYmxvY2tbNDVdIDw8IDgpCiAJCQkgICAgICAg
KyAoYmxvY2tbNDZdIDw8IDE2KSArIChibG9ja1s0N10gPDwgMjQpOwotCQli
b290LT5GU0luZm8gPSBibG9ja1s0OF0gKyAoYmxvY2tbNDldIDw8IDgpOwot
CQlib290LT5CYWNrdXAgPSBibG9ja1s1MF0gKyAoYmxvY2tbNTFdIDw8IDgp
OworCQlib290LT5icGJGU0luZm8gPSBibG9ja1s0OF0gKyAoYmxvY2tbNDld
IDw8IDgpOworCQlib290LT5icGJCYWNrdXAgPSBibG9ja1s1MF0gKyAoYmxv
Y2tbNTFdIDw8IDgpOwogCi0JCWlmIChsc2Vlayhkb3NmcywgYm9vdC0+RlNJ
bmZvICogYm9vdC0+Qnl0ZXNQZXJTZWMsIFNFRUtfU0VUKQotCQkgICAgIT0g
Ym9vdC0+RlNJbmZvICogYm9vdC0+Qnl0ZXNQZXJTZWMKKwkJaWYgKGxzZWVr
KGRvc2ZzLCBib290LT5icGJGU0luZm8gKiBib290LT5icGJCeXRlc1BlclNl
YywgU0VFS19TRVQpCisJCSAgICAhPSBib290LT5icGJGU0luZm8gKiBib290
LT5icGJCeXRlc1BlclNlYwogCQkgICAgfHwgcmVhZChkb3NmcywgZnNpbmZv
LCBzaXplb2YgZnNpbmZvKQogCQkgICAgIT0gc2l6ZW9mIGZzaW5mbykgewog
CQkJcGVycm9yKCJjb3VsZCBub3QgcmVhZCBmc2luZm8gYmxvY2siKTsKQEAg
LTEzMywxOCArMTI0LDE4IEBACiAJCQkJZnNpbmZvWzB4M2ZjXSA9IGZzaW5m
b1sweDNmZF0gPSAwOwogCQkJCWZzaW5mb1sweDNmZV0gPSAweDU1OwogCQkJ
CWZzaW5mb1sweDNmZl0gPSAweGFhOwotCQkJCWlmIChsc2Vlayhkb3Nmcywg
Ym9vdC0+RlNJbmZvICogYm9vdC0+Qnl0ZXNQZXJTZWMsIFNFRUtfU0VUKQot
CQkJCSAgICAhPSBib290LT5GU0luZm8gKiBib290LT5CeXRlc1BlclNlYwor
CQkJCWlmIChsc2Vlayhkb3NmcywgYm9vdC0+YnBiRlNJbmZvICogYm9vdC0+
YnBiQnl0ZXNQZXJTZWMsIFNFRUtfU0VUKQorCQkJCSAgICAhPSBib290LT5i
cGJGU0luZm8gKiBib290LT5icGJCeXRlc1BlclNlYwogCQkJCSAgICB8fCB3
cml0ZShkb3NmcywgZnNpbmZvLCBzaXplb2YgZnNpbmZvKQogCQkJCSAgICAh
PSBzaXplb2YgZnNpbmZvKSB7Ci0JCQkJCXBlcnJvcigiVW5hYmxlIHRvIHdy
aXRlIEZTSW5mbyIpOworCQkJCQlwZXJyb3IoIlVuYWJsZSB0byB3cml0ZSBi
cGJGU0luZm8iKTsKIAkJCQkJcmV0dXJuIEZTRkFUQUw7CiAJCQkJfQogCQkJ
CXJldCA9IEZTQk9PVE1PRDsKIAkJCX0gZWxzZQotCQkJCWJvb3QtPkZTSW5m
byA9IDA7CisJCQkJYm9vdC0+YnBiRlNJbmZvID0gMDsKIAkJfQotCQlpZiAo
Ym9vdC0+RlNJbmZvKSB7CisJCWlmIChib290LT5icGJGU0luZm8pIHsKIAkJ
CWJvb3QtPkZTRnJlZSA9IGZzaW5mb1sweDFlOF0gKyAoZnNpbmZvWzB4MWU5
XSA8PCA4KQogCQkJCSAgICAgICArIChmc2luZm9bMHgxZWFdIDw8IDE2KQog
CQkJCSAgICAgICArIChmc2luZm9bMHgxZWJdIDw8IDI0KTsKQEAgLTE1Myw0
NCArMTQ0LDU0IEBACiAJCQkJICAgICAgICsgKGZzaW5mb1sweDFlZl0gPDwg
MjQpOwogCQl9CiAKLQkJaWYgKGxzZWVrKGRvc2ZzLCBib290LT5CYWNrdXAg
KiBib290LT5CeXRlc1BlclNlYywgU0VFS19TRVQpCi0JCSAgICAhPSBib290
LT5CYWNrdXAgKiBib290LT5CeXRlc1BlclNlYworCQlpZiAobHNlZWsoZG9z
ZnMsIGJvb3QtPmJwYkJhY2t1cCAqIGJvb3QtPmJwYkJ5dGVzUGVyU2VjLCBT
RUVLX1NFVCkKKwkJICAgICE9IGJvb3QtPmJwYkJhY2t1cCAqIGJvb3QtPmJw
YkJ5dGVzUGVyU2VjCiAJCSAgICB8fCByZWFkKGRvc2ZzLCBiYWNrdXAsIHNp
emVvZiBiYWNrdXApICE9IHNpemVvZiAgYmFja3VwKSB7CiAJCQlwZXJyb3Io
ImNvdWxkIG5vdCByZWFkIGJhY2t1cCBib290YmxvY2siKTsKIAkJCXJldHVy
biBGU0ZBVEFMOwogCQl9CiAJCWJhY2t1cFs2NV0gPSBibG9ja1s2NV07CQkJ
CS8qIFhYWCAqLwogCQlpZiAobWVtY21wKGJsb2NrICsgMTEsIGJhY2t1cCAr
IDExLCA3OSkpIHsKLQkJCS8qIENvcnJlY3Q/CQkJCQlYWFggKi8KLQkJCXBm
YXRhbCgiYmFja3VwIGRvZXNuJ3QgY29tcGFyZSB0byBwcmltYXJ5IGJvb3Ri
bG9jayIpOwotCQkJaWYgKGFsd2F5c25vKQotCQkJCXBmYXRhbCgiXG4iKTsK
LQkJCWVsc2UKLQkJCQlyZXR1cm4gRlNGQVRBTDsKKwkJCS8qCisJCQkgKiBY
WFggV2UgcmVxdWlyZSBhIHJlZmVyZW5jZSB0aGF0IGV4cGxhaW5zCisJCQkg
KiB0aGF0IHRoZXNlIGJ5dGVzIG5lZWQgdG8gbWF0Y2gsIG9yIHNob3VsZAor
CQkJICogZHJvcCB0aGUgY2hlY2suICBnZHRATmV0QlNEIGhhcyBvYnNlcnZl
ZAorCQkJICogZmlsZXN5c3RlbXMgdGhhdCB3b3JrIGZpbmUgdW5kZXIgV2lu
ZG93cyBYUAorCQkJICogYW5kIE5ldEJTRCB0aGF0IGRvIG5vdCBtYXRjaCwg
c28gdGhlCisJCQkgKiByZXF1aXJlbWVudCBpcyBzdXNwZWN0LiAgRm9yIG5v
dywganVzdAorCQkJICogcHJpbnQgb3V0IHVzZWZ1bCBpbmZvcm1hdGlvbiBh
bmQgY29udGludWUuCisJCQkgKi8KKwkJCXBmYXRhbCgiYmFja3VwIChibG9j
ayAlZCkgbWlzbWF0Y2ggd2l0aCBwcmltYXJ5IGJvb3RibG9jazpcbiIsCisJ
CQkgICAgICAgIGJvb3QtPmJwYkJhY2t1cCk7CisJCQlmb3IgKGkgPSAxMTsg
aSA8IDExICsgOTA7IGkrKykgeworCQkJCWlmIChibG9ja1tpXSAhPSBiYWNr
dXBbaV0pCisJCQkJCXBmYXRhbCgiXHRpPSVkXHRwcmltYXJ5IDB4JTAyeFx0
YmFja3VwIDB4JTAyeFxuIiwKKwkJCQkJICAgICAgIGksIGJsb2NrW2ldLCBi
YWNrdXBbaV0pOworCQkJfQogCQl9Ci0JCS8qIENoZWNrIGJhY2t1cCBGU0lu
Zm8/CQkJCQlYWFggKi8KKwkJLyogQ2hlY2sgYmFja3VwIGJwYkZTSW5mbz8J
CQkJCVhYWCAqLwogCX0KIAotCWJvb3QtPkNsdXN0ZXJPZmZzZXQgPSAoYm9v
dC0+Um9vdERpckVudHMgKiAzMiArIGJvb3QtPkJ5dGVzUGVyU2VjIC0gMSkK
LQkgICAgLyBib290LT5CeXRlc1BlclNlYwotCSAgICArIGJvb3QtPlJlc1Nl
Y3RvcnMKLQkgICAgKyBib290LT5GQVRzICogYm9vdC0+RkFUc2VjcwotCSAg
ICAtIENMVVNUX0ZJUlNUICogYm9vdC0+U2VjUGVyQ2x1c3Q7CisJYm9vdC0+
Q2x1c3Rlck9mZnNldCA9IChib290LT5icGJSb290RGlyRW50cyAqIDMyICsg
Ym9vdC0+YnBiQnl0ZXNQZXJTZWMgLSAxKQorCSAgICAvIGJvb3QtPmJwYkJ5
dGVzUGVyU2VjCisJICAgICsgYm9vdC0+YnBiUmVzU2VjdG9ycworCSAgICAr
IGJvb3QtPmJwYkZBVHMgKiBib290LT5GQVRzZWNzCisJICAgIC0gQ0xVU1Rf
RklSU1QgKiBib290LT5icGJTZWNQZXJDbHVzdDsKIAotCWlmIChib290LT5C
eXRlc1BlclNlYyAlIERPU0JPT1RCTE9DS1NJWkUgIT0gMCkgewotCQlwZmF0
YWwoIkludmFsaWQgc2VjdG9yIHNpemU6ICV1IiwgYm9vdC0+Qnl0ZXNQZXJT
ZWMpOworCWlmIChib290LT5icGJCeXRlc1BlclNlYyAlIERPU0JPT1RCTE9D
S1NJWkUgIT0gMCkgeworCQlwZmF0YWwoIkludmFsaWQgc2VjdG9yIHNpemU6
ICV1IiwgYm9vdC0+YnBiQnl0ZXNQZXJTZWMpOwogCQlyZXR1cm4gRlNGQVRB
TDsKIAl9Ci0JaWYgKGJvb3QtPlNlY1BlckNsdXN0ID09IDApIHsKLQkJcGZh
dGFsKCJJbnZhbGlkIGNsdXN0ZXIgc2l6ZTogJXUiLCBib290LT5TZWNQZXJD
bHVzdCk7CisJaWYgKGJvb3QtPmJwYlNlY1BlckNsdXN0ID09IDApIHsKKwkJ
cGZhdGFsKCJJbnZhbGlkIGNsdXN0ZXIgc2l6ZTogJXUiLCBib290LT5icGJT
ZWNQZXJDbHVzdCk7CiAJCXJldHVybiBGU0ZBVEFMOwogCX0KLQlpZiAoYm9v
dC0+U2VjdG9ycykgewotCQlib290LT5IdWdlU2VjdG9ycyA9IDA7Ci0JCWJv
b3QtPk51bVNlY3RvcnMgPSBib290LT5TZWN0b3JzOworCWlmIChib290LT5i
cGJTZWN0b3JzKSB7CisJCWJvb3QtPmJwYkh1Z2VTZWN0b3JzID0gMDsKKwkJ
Ym9vdC0+TnVtU2VjdG9ycyA9IGJvb3QtPmJwYlNlY3RvcnM7CiAJfSBlbHNl
Ci0JCWJvb3QtPk51bVNlY3RvcnMgPSBib290LT5IdWdlU2VjdG9yczsKLQli
b290LT5OdW1DbHVzdGVycyA9IChib290LT5OdW1TZWN0b3JzIC0gYm9vdC0+
Q2x1c3Rlck9mZnNldCkgLyBib290LT5TZWNQZXJDbHVzdDsKKwkJYm9vdC0+
TnVtU2VjdG9ycyA9IGJvb3QtPmJwYkh1Z2VTZWN0b3JzOworCWJvb3QtPk51
bUNsdXN0ZXJzID0gKGJvb3QtPk51bVNlY3RvcnMgLSBib290LT5DbHVzdGVy
T2Zmc2V0KSAvIGJvb3QtPmJwYlNlY1BlckNsdXN0OwogCiAJaWYgKGJvb3Qt
PmZsYWdzJkZBVDMyKQogCQlib290LT5DbHVzdE1hc2sgPSBDTFVTVDMyX01B
U0s7CkBAIC0yMDYsMTMgKzIwNywxMyBAQAogCiAJc3dpdGNoIChib290LT5D
bHVzdE1hc2spIHsKIAljYXNlIENMVVNUMzJfTUFTSzoKLQkJYm9vdC0+TnVt
RmF0RW50cmllcyA9IChib290LT5GQVRzZWNzICogYm9vdC0+Qnl0ZXNQZXJT
ZWMpIC8gNDsKKwkJYm9vdC0+TnVtRmF0RW50cmllcyA9IChib290LT5GQVRz
ZWNzICogYm9vdC0+YnBiQnl0ZXNQZXJTZWMpIC8gNDsKIAkJYnJlYWs7CiAJ
Y2FzZSBDTFVTVDE2X01BU0s6Ci0JCWJvb3QtPk51bUZhdEVudHJpZXMgPSAo
Ym9vdC0+RkFUc2VjcyAqIGJvb3QtPkJ5dGVzUGVyU2VjKSAvIDI7CisJCWJv
b3QtPk51bUZhdEVudHJpZXMgPSAoYm9vdC0+RkFUc2VjcyAqIGJvb3QtPmJw
YkJ5dGVzUGVyU2VjKSAvIDI7CiAJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCWJv
b3QtPk51bUZhdEVudHJpZXMgPSAoYm9vdC0+RkFUc2VjcyAqIGJvb3QtPkJ5
dGVzUGVyU2VjICogMikgLyAzOworCQlib290LT5OdW1GYXRFbnRyaWVzID0g
KGJvb3QtPkZBVHNlY3MgKiBib290LT5icGJCeXRlc1BlclNlYyAqIDIpIC8g
MzsKIAkJYnJlYWs7CiAJfQogCkBAIC0yMjEsNyArMjIyLDcgQEAKIAkJICAg
ICAgIGJvb3QtPk51bUNsdXN0ZXJzLCBib290LT5GQVRzZWNzKTsKIAkJcmV0
dXJuIEZTRkFUQUw7CiAJfQotCWJvb3QtPkNsdXN0ZXJTaXplID0gYm9vdC0+
Qnl0ZXNQZXJTZWMgKiBib290LT5TZWNQZXJDbHVzdDsKKwlib290LT5DbHVz
dGVyU2l6ZSA9IGJvb3QtPmJwYkJ5dGVzUGVyU2VjICogYm9vdC0+YnBiU2Vj
UGVyQ2x1c3Q7CiAKIAlib290LT5OdW1GaWxlcyA9IDE7CiAJYm9vdC0+TnVt
RnJlZSA9IDA7CkBAIC0yMzAsMTQgKzIzMSwxMiBAQAogfQogCiBpbnQKLXdy
aXRlZnNpbmZvKGRvc2ZzLCBib290KQotCWludCBkb3NmczsKLQlzdHJ1Y3Qg
Ym9vdGJsb2NrICpib290Oword3JpdGVmc2luZm8oaW50IGRvc2ZzLCBzdHJ1
Y3QgYm9vdGJsb2NrICpib290KQogewogCXVfY2hhciBmc2luZm9bMiAqIERP
U0JPT1RCTE9DS1NJWkVdOwogCi0JaWYgKGxzZWVrKGRvc2ZzLCBib290LT5G
U0luZm8gKiBib290LT5CeXRlc1BlclNlYywgU0VFS19TRVQpCi0JICAgICE9
IGJvb3QtPkZTSW5mbyAqIGJvb3QtPkJ5dGVzUGVyU2VjCisJaWYgKGxzZWVr
KGRvc2ZzLCBib290LT5icGJGU0luZm8gKiBib290LT5icGJCeXRlc1BlclNl
YywgU0VFS19TRVQpCisJICAgICE9IGJvb3QtPmJwYkZTSW5mbyAqIGJvb3Qt
PmJwYkJ5dGVzUGVyU2VjCiAJICAgIHx8IHJlYWQoZG9zZnMsIGZzaW5mbywg
c2l6ZW9mIGZzaW5mbykgIT0gc2l6ZW9mIGZzaW5mbykgewogCQlwZXJyb3Io
ImNvdWxkIG5vdCByZWFkIGZzaW5mbyBibG9jayIpOwogCQlyZXR1cm4gRlNG
QVRBTDsKQEAgLTI1MCwxMSArMjQ5LDExIEBACiAJZnNpbmZvWzB4MWVkXSA9
ICh1X2NoYXIpKGJvb3QtPkZTTmV4dCA+PiA4KTsKIAlmc2luZm9bMHgxZWVd
ID0gKHVfY2hhcikoYm9vdC0+RlNOZXh0ID4+IDE2KTsKIAlmc2luZm9bMHgx
ZWZdID0gKHVfY2hhcikoYm9vdC0+RlNOZXh0ID4+IDI0KTsKLQlpZiAobHNl
ZWsoZG9zZnMsIGJvb3QtPkZTSW5mbyAqIGJvb3QtPkJ5dGVzUGVyU2VjLCBT
RUVLX1NFVCkKLQkgICAgIT0gYm9vdC0+RlNJbmZvICogYm9vdC0+Qnl0ZXNQ
ZXJTZWMKKwlpZiAobHNlZWsoZG9zZnMsIGJvb3QtPmJwYkZTSW5mbyAqIGJv
b3QtPmJwYkJ5dGVzUGVyU2VjLCBTRUVLX1NFVCkKKwkgICAgIT0gYm9vdC0+
YnBiRlNJbmZvICogYm9vdC0+YnBiQnl0ZXNQZXJTZWMKIAkgICAgfHwgd3Jp
dGUoZG9zZnMsIGZzaW5mbywgc2l6ZW9mIGZzaW5mbykKIAkgICAgIT0gc2l6
ZW9mIGZzaW5mbykgewotCQlwZXJyb3IoIlVuYWJsZSB0byB3cml0ZSBGU0lu
Zm8iKTsKKwkJcGVycm9yKCJVbmFibGUgdG8gd3JpdGUgYnBiRlNJbmZvIik7
CiAJCXJldHVybiBGU0ZBVEFMOwogCX0KIAkvKgpkaWZmIC1ydSBmc2NrX21z
ZG9zZnMub3JpZy9jaGVjay5jIGZzY2tfbXNkb3Nmcy9jaGVjay5jCi0tLSBm
c2NrX21zZG9zZnMub3JpZy9jaGVjay5jCTIwMTAtMDEtMDYgMTE6MDc6MjQu
MDAwMDAwMDAwICswMDAwCisrKyBmc2NrX21zZG9zZnMvY2hlY2suYwkyMDEw
LTAxLTE1IDE2OjE3OjUyLjAwMDAwMDAwMCArMDAwMApAQCAtMTAsMTMgKzEw
LDYgQEAKICAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCiAgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9u
aW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNvZnR3YXJlCi0gKiAgICBt
dXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnZW1lbnQ6Ci0g
KglUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5
IE1hcnRpbiBIdXNlbWFubgotICoJYW5kIFdvbGZnYW5nIFNvbGZyYW5rLgot
ICogNC4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBub3Ig
dGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKLSAqICAgIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20gdGhpcyBzb2Z0d2FyZQotICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgogICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SUyBgYEFTIElTJycgQU5EIEFOWSBF
WFBSRVNTIE9SCiAgKiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTCkBA
IC00MCw3ICszMyw2IEBACiAKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNs
dWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDxjdHlwZS5oPgogI2luY2x1ZGUg
PHN0ZGlvLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSA8ZmNu
dGwuaD4KQEAgLTU0LDcgKzQ2LDggQEAKIAlpbnQgZG9zZnM7CiAJc3RydWN0
IGJvb3RibG9jayBib290OwogCXN0cnVjdCBmYXRFbnRyeSAqZmF0ID0gTlVM
TDsKLQlpbnQgaSwgZmluaXNoX2Rvc2RpcnNlY3Rpb249MDsKKwlpbnQgZmlu
aXNoX2Rvc2RpcnNlY3Rpb249MDsKKwl1X2ludCBpOwogCWludCBtb2QgPSAw
OwogCWludCByZXQgPSA4OwogCkBAIC0xMDUsNyArOTgsNyBAQAogCX0KIAog
CWlmIChib290LlZhbGlkRmF0IDwgMCkKLQkJZm9yIChpID0gMTsgaSA8IChp
bnQpYm9vdC5GQVRzOyBpKyspIHsKKwkJZm9yIChpID0gMTsgaSA8IChpbnQp
Ym9vdC5icGJGQVRzOyBpKyspIHsKIAkJCXN0cnVjdCBmYXRFbnRyeSAqY3Vy
cmVudEZhdDsKIAogCQkJbW9kIHw9IHJlYWRmYXQoZG9zZnMsICZib290LCBp
LCAmY3VycmVudEZhdCk7CmRpZmYgLXJ1IGZzY2tfbXNkb3Nmcy5vcmlnL2Rp
ci5jIGZzY2tfbXNkb3Nmcy9kaXIuYwotLS0gZnNja19tc2Rvc2ZzLm9yaWcv
ZGlyLmMJMjAxMC0wMS0wNiAxMTowNzoyNC4wMDAwMDAwMDAgKzAwMDAKKysr
IGZzY2tfbXNkb3Nmcy9kaXIuYwkyMDEwLTAxLTE1IDE2OjIyOjAwLjAwMDAw
MDAwMCArMDAwMApAQCAtMTIsMTMgKzEyLDYgQEAKICAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CiAgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gQWxsIGFkdmVy
dGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBv
ZiB0aGlzIHNvZnR3YXJlCi0gKiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxv
d2luZyBhY2tub3dsZWRnZW1lbnQ6Ci0gKglUaGlzIHByb2R1Y3QgaW5jbHVk
ZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IE1hcnRpbiBIdXNlbWFubgotICoJ
YW5kIFdvbGZnYW5nIFNvbGZyYW5rLgotICogNC4gTmVpdGhlciB0aGUgbmFt
ZSBvZiB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250
cmlidXRvcnMKLSAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotICog
ICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CiAgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVU
SE9SUyBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SCiAgKiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTCkBAIC00NCw3ICszNyw2IEBACiAjaW5j
bHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVk
ZSA8Y3R5cGUuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHVu
aXN0ZC5oPgogI2luY2x1ZGUgPHRpbWUuaD4KIApAQCAtMjI3LDI2ICsyMTks
MzggQEAKIAljbF90IGNsOwogCWludCByZXQgPSBGU09LOwogCi0JYjEgPSBi
b290LT5Sb290RGlyRW50cyAqIDMyOwotCWIyID0gYm9vdC0+U2VjUGVyQ2x1
c3QgKiBib290LT5CeXRlc1BlclNlYzsKKwliMSA9IGJvb3QtPmJwYlJvb3RE
aXJFbnRzICogMzI7CisJYjIgPSBib290LT5icGJTZWNQZXJDbHVzdCAqIGJv
b3QtPmJwYkJ5dGVzUGVyU2VjOwogCi0JaWYgKCEoYnVmZmVyID0gbWFsbG9j
KGIxID4gYjIgPyBiMSA6IGIyKSkKLQkgICAgfHwgIShkZWxidWYgPSBtYWxs
b2MoYjIpKQotCSAgICB8fCAhKHJvb3REaXIgPSBuZXdEb3NEaXJFbnRyeSgp
KSkgewotCQlwZXJyb3IoIk5vIHNwYWNlIGZvciBkaXJlY3RvcnkiKTsKKwlp
ZiAoKGJ1ZmZlciA9IG1hbGxvYyggYjEgPiBiMiA/IGIxIDogYjIpKSA9PSBO
VUxMKSB7CisJCXBlcnJvcigiTm8gc3BhY2UgZm9yIGRpcmVjdG9yeSBidWZm
ZXIiKTsKIAkJcmV0dXJuIEZTRkFUQUw7CiAJfQorCisJaWYgKChkZWxidWYg
PSBtYWxsb2MoYjIpKSA9PSBOVUxMKSB7CisJCWZyZWUoYnVmZmVyKTsKKwkJ
cGVycm9yKCJObyBzcGFjZSBmb3IgZGlyZWN0b3J5IGRlbGJ1ZiIpOworCQly
ZXR1cm4gRlNGQVRBTDsKKwl9CisKKwlpZiAoKHJvb3REaXIgPSBuZXdEb3NE
aXJFbnRyeSgpKSA9PSBOVUxMKSB7CisJCWZyZWUoYnVmZmVyKTsKKwkJZnJl
ZShkZWxidWYpOworCQlwZXJyb3IoIk5vIHNwYWNlIGZvciBkaXJlY3Rvcnkg
ZW50cnkiKTsKKwkJcmV0dXJuIEZTRkFUQUw7CisJfQorCiAJbWVtc2V0KHJv
b3REaXIsIDAsIHNpemVvZiAqcm9vdERpcik7CiAJaWYgKGJvb3QtPmZsYWdz
ICYgRkFUMzIpIHsKLQkJaWYgKGJvb3QtPlJvb3RDbCA8IENMVVNUX0ZJUlNU
IHx8IGJvb3QtPlJvb3RDbCA+PSBib290LT5OdW1DbHVzdGVycykgeworCQlp
ZiAoYm9vdC0+YnBiUm9vdENsdXN0IDwgQ0xVU1RfRklSU1QgfHwgYm9vdC0+
YnBiUm9vdENsdXN0ID49IGJvb3QtPk51bUNsdXN0ZXJzKSB7CiAJCQlwZmF0
YWwoIlJvb3QgZGlyZWN0b3J5IHN0YXJ0cyB3aXRoIGNsdXN0ZXIgb3V0IG9m
IHJhbmdlKCV1KSIsCi0JCQkgICAgICAgYm9vdC0+Um9vdENsKTsKKwkJCSAg
ICAgICBib290LT5icGJSb290Q2x1c3QpOwogCQkJcmV0dXJuIEZTRkFUQUw7
CiAJCX0KLQkJY2wgPSBmYXRbYm9vdC0+Um9vdENsXS5uZXh0OworCQljbCA9
IGZhdFtib290LT5icGJSb290Q2x1c3RdLm5leHQ7CiAJCWlmIChjbCA8IENM
VVNUX0ZJUlNUCiAJCSAgICB8fCAoY2wgPj0gQ0xVU1RfUlNSVkQgJiYgY2w8
IENMVVNUX0VPRlMpCi0JCSAgICB8fCBmYXRbYm9vdC0+Um9vdENsXS5oZWFk
ICE9IGJvb3QtPlJvb3RDbCkgeworCQkgICAgfHwgZmF0W2Jvb3QtPmJwYlJv
b3RDbHVzdF0uaGVhZCAhPSBib290LT5icGJSb290Q2x1c3QpIHsKIAkJCWlm
IChjbCA9PSBDTFVTVF9GUkVFKQogCQkJCXB3YXJuKCJSb290IGRpcmVjdG9y
eSBzdGFydHMgd2l0aCBmcmVlIGNsdXN0ZXJcbiIpOwogCQkJZWxzZSBpZiAo
Y2wgPj0gQ0xVU1RfUlNSVkQpCkBAIC0yNTcsMTQgKzI2MSwxNCBAQAogCQkJ
CXJldHVybiBGU0ZBVEFMOwogCQkJfQogCQkJaWYgKGFzaygxLCAiRml4Iikp
IHsKLQkJCQlmYXRbYm9vdC0+Um9vdENsXS5uZXh0ID0gQ0xVU1RfRlJFRTsK
KwkJCQlmYXRbYm9vdC0+YnBiUm9vdENsdXN0XS5uZXh0ID0gQ0xVU1RfRlJF
RTsKIAkJCQlyZXQgPSBGU0ZBVE1PRDsKIAkJCX0gZWxzZQogCQkJCXJldCA9
IEZTRkFUQUw7CiAJCX0KIAotCQlmYXRbYm9vdC0+Um9vdENsXS5mbGFncyB8
PSBGQVRfVVNFRDsKLQkJcm9vdERpci0+aGVhZCA9IGJvb3QtPlJvb3RDbDsK
KwkJZmF0W2Jvb3QtPmJwYlJvb3RDbHVzdF0uZmxhZ3MgfD0gRkFUX1VTRUQ7
CisJCXJvb3REaXItPmhlYWQgPSBib290LT5icGJSb290Q2x1c3Q7CiAJfQog
CiAJcmV0dXJuIHJldDsKQEAgLTMwOSw3ICszMTMsNyBAQAogewogCXVfY2hh
ciAqcywgKmU7CiAJb2ZmX3Qgb2ZmOwotCWludCBjbHN6ID0gYm9vdC0+U2Vj
UGVyQ2x1c3QgKiBib290LT5CeXRlc1BlclNlYzsKKwlpbnQgY2xzeiA9IGJv
b3QtPmJwYlNlY1BlckNsdXN0ICogYm9vdC0+YnBiQnl0ZXNQZXJTZWM7CiAK
IAlzID0gZGVsYnVmICsgc3RhcnRvZmY7CiAJZSA9IGRlbGJ1ZiArIGNsc3o7
CkBAIC0zMTksOCArMzIzLDggQEAKIAkJCQlicmVhazsKIAkJCWUgPSBkZWxi
dWYgKyBlbmRvZmY7CiAJCX0KLQkJb2ZmID0gc3RhcnRjbCAqIGJvb3QtPlNl
Y1BlckNsdXN0ICsgYm9vdC0+Q2x1c3Rlck9mZnNldDsKLQkJb2ZmICo9IGJv
b3QtPkJ5dGVzUGVyU2VjOworCQlvZmYgPSBzdGFydGNsICogYm9vdC0+YnBi
U2VjUGVyQ2x1c3QgKyBib290LT5DbHVzdGVyT2Zmc2V0OworCQlvZmYgKj0g
Ym9vdC0+YnBiQnl0ZXNQZXJTZWM7CiAJCWlmIChsc2VlayhmLCBvZmYsIFNF
RUtfU0VUKSAhPSBvZmYKIAkJICAgIHx8IHJlYWQoZiwgZGVsYnVmLCBjbHN6
KSAhPSBjbHN6KSB7CiAJCQlwZXJyb3IoIlVuYWJsZSB0byByZWFkIGRpcmVj
dG9yeSIpOwpAQCAtMzY3LDcgKzM3MSw4IEBACiAJCQkJcmV0dXJuIEZTRkFU
QUw7CiAJCQlzdGFydCA9IGJ1ZmZlcjsKIAkJfQotCQlpZiAoZW5kY2wgPT0g
Y3VyY2wpCisJCS8qIHN0YXJ0Y2wgaXMgPCBDTFVTVF9GSVJTVCBmb3IgIWZh
dDMyIHJvb3QgKi8KKwkJaWYgKChlbmRjbCA9PSBjdXJjbCkgfHwgKHN0YXJ0
Y2wgPCBDTFVTVF9GSVJTVCkpCiAJCQlmb3IgKDsgc3RhcnQgPCBlbmQ7IHN0
YXJ0ICs9IDMyKQogCQkJCSpzdGFydCA9IFNMT1RfREVMRVRFRDsKIAkJcmV0
dXJuIEZTRElSTU9EOwpAQCAtMzg1LDcgKzM5MCw3IEBACiAJLyoKIAkgKiBD
aGVjayBzaXplIG9uIG9yZGluYXJ5IGZpbGVzCiAJICovCi0JaW50MzJfdCBw
aHlzaWNhbFNpemU7CisJdV9pbnQzMl90IHBoeXNpY2FsU2l6ZTsKIAogCWlm
IChkaXItPmhlYWQgPT0gQ0xVU1RfRlJFRSkKIAkJcGh5c2ljYWxTaXplID0g
MDsKQEAgLTQ1NiwxNCArNDYxLDE0IEBACiAJdmFsbGZuID0gaW52bGZuID0g
ZW1wdHkgPSBOVUxMOwogCWRvIHsKIAkJaWYgKCEoYm9vdC0+ZmxhZ3MgJiBG
QVQzMikgJiYgIWRpci0+cGFyZW50KSB7Ci0JCQlsYXN0ID0gYm9vdC0+Um9v
dERpckVudHMgKiAzMjsKLQkJCW9mZiA9IGJvb3QtPlJlc1NlY3RvcnMgKyBi
b290LT5GQVRzICogYm9vdC0+RkFUc2VjczsKKwkJCWxhc3QgPSBib290LT5i
cGJSb290RGlyRW50cyAqIDMyOworCQkJb2ZmID0gYm9vdC0+YnBiUmVzU2Vj
dG9ycyArIGJvb3QtPmJwYkZBVHMgKiBib290LT5GQVRzZWNzOwogCQl9IGVs
c2UgewotCQkJbGFzdCA9IGJvb3QtPlNlY1BlckNsdXN0ICogYm9vdC0+Qnl0
ZXNQZXJTZWM7Ci0JCQlvZmYgPSBjbCAqIGJvb3QtPlNlY1BlckNsdXN0ICsg
Ym9vdC0+Q2x1c3Rlck9mZnNldDsKKwkJCWxhc3QgPSBib290LT5icGJTZWNQ
ZXJDbHVzdCAqIGJvb3QtPmJwYkJ5dGVzUGVyU2VjOworCQkJb2ZmID0gY2wg
KiBib290LT5icGJTZWNQZXJDbHVzdCArIGJvb3QtPkNsdXN0ZXJPZmZzZXQ7
CiAJCX0KIAotCQlvZmYgKj0gYm9vdC0+Qnl0ZXNQZXJTZWM7CisJCW9mZiAq
PSBib290LT5icGJCeXRlc1BlclNlYzsKIAkJaWYgKGxzZWVrKGYsIG9mZiwg
U0VFS19TRVQpICE9IG9mZgogCQkgICAgfHwgcmVhZChmLCBidWZmZXIsIGxh
c3QpICE9IGxhc3QpIHsKIAkJCXBlcnJvcigiVW5hYmxlIHRvIHJlYWQgZGly
ZWN0b3J5Iik7CkBAIC02NDQsNyArNjQ5LDggQEAKIAkJCQlkaXJlbnQuaGVh
ZCB8PSAocFsyMF0gPDwgMTYpIHwgKHBbMjFdIDw8IDI0KTsKIAkJCWRpcmVu
dC5zaXplID0gcFsyOF0gfCAocFsyOV0gPDwgOCkgfCAocFszMF0gPDwgMTYp
IHwgKHBbMzFdIDw8IDI0KTsKIAkJCWlmICh2YWxsZm4pIHsKLQkJCQlzdHJj
cHkoZGlyZW50LmxuYW1lLCBsb25nTmFtZSk7CisJCQkJc3RybGNweShkaXJl
bnQubG5hbWUsIGxvbmdOYW1lLAorCQkJCSAgICBzaXplb2YoZGlyZW50Lmxu
YW1lKSk7CiAJCQkJbG9uZ05hbWVbMF0gPSAnXDAnOwogCQkJCXNob3J0U3Vt
ID0gLTE7CiAJCQl9CkBAIC04MzIsNiArODM4LDEwIEBACiAJCQl9CiAJCQli
b290LT5OdW1GaWxlcysrOwogCQl9CisKKwkJaWYgKCEoYm9vdC0+ZmxhZ3Mg
JiBGQVQzMikgJiYgIWRpci0+cGFyZW50KQorCQkJYnJlYWs7CisKIAkJaWYg
KG1vZCAmIFRISVNNT0QpIHsKIAkJCWxhc3QgKj0gMzI7CiAJCQlpZiAobHNl
ZWsoZiwgb2ZmLCBTRUVLX1NFVCkgIT0gb2ZmCkBAIC04NDcsNiArODU3LDE5
IEBACiAJCQkJaW52bGZuID8gaW52bGZuIDogdmFsbGZuLCBwLAogCQkJCWlu
dmxmbiA/IGludmNsIDogdmFsY2wsIC0xLCAwLAogCQkJCWZ1bGxwYXRoKGRp
ciksIDEpOworCisJLyogVGhlIHJvb3QgZGlyZWN0b3J5IG9mIG5vbiBmYXQz
MiBmaWxlc3lzdGVtcyBpcyBpbiBhIHNwZWNpYWwKKwkgKiBhcmVhIGFuZCBt
YXkgaGF2ZSBiZWVuIG1vZGlmaWVkIGFib3ZlIHdpdGhvdXQgYmVpbmcgd3Jp
dHRlbiBvdXQuCisJICovCisJaWYgKChtb2QgJiBGU0RJUk1PRCkgJiYgIShi
b290LT5mbGFncyAmIEZBVDMyKSAmJiAhZGlyLT5wYXJlbnQpIHsKKwkJbGFz
dCAqPSAzMjsKKwkJaWYgKGxzZWVrKGYsIG9mZiwgU0VFS19TRVQpICE9IG9m
ZgorCQkgICAgfHwgd3JpdGUoZiwgYnVmZmVyLCBsYXN0KSAhPSBsYXN0KSB7
CisJCQlwZXJyb3IoIlVuYWJsZSB0byB3cml0ZSBkaXJlY3RvcnkiKTsKKwkJ
CXJldHVybiBGU0ZBVEFMOworCQl9CisJCW1vZCAmPSB+VEhJU01PRDsKKwl9
CiAJcmV0dXJuIG1vZCAmIH5USElTTU9EOwogfQogCkBAIC05MzQsOSArOTU3
LDkgQEAKIAkJCXJldHVybiBGU0VSUk9SOwogCQl9CiAJCWxmb2ZmID0gbGZj
bCAqIGJvb3QtPkNsdXN0ZXJTaXplCi0JCSAgICArIGJvb3QtPkNsdXN0ZXJP
ZmZzZXQgKiBib290LT5CeXRlc1BlclNlYzsKKwkJICAgICsgYm9vdC0+Q2x1
c3Rlck9mZnNldCAqIGJvb3QtPmJwYkJ5dGVzUGVyU2VjOwogCQlpZiAobHNl
ZWsoZG9zZnMsIGxmb2ZmLCBTRUVLX1NFVCkgIT0gbGZvZmYKLQkJICAgIHx8
IHJlYWQoZG9zZnMsIGxmYnVmLCBib290LT5DbHVzdGVyU2l6ZSkgIT0gYm9v
dC0+Q2x1c3RlclNpemUpIHsKKwkJICAgIHx8IChzaXplX3QpcmVhZChkb3Nm
cywgbGZidWYsIGJvb3QtPkNsdXN0ZXJTaXplKSAhPSBib290LT5DbHVzdGVy
U2l6ZSkgewogCQkJcGVycm9yKCJjb3VsZCBub3QgcmVhZCBMT1NULkRJUiIp
OwogCQkJcmV0dXJuIEZTRkFUQUw7CiAJCX0KQEAgLTk2Niw3ICs5ODksNyBA
QAogCXBbMzFdID0gKHVfY2hhcikoZC5zaXplID4+IDI0KTsKIAlmYXRbaGVh
ZF0uZmxhZ3MgfD0gRkFUX1VTRUQ7CiAJaWYgKGxzZWVrKGRvc2ZzLCBsZm9m
ZiwgU0VFS19TRVQpICE9IGxmb2ZmCi0JICAgIHx8IHdyaXRlKGRvc2ZzLCBs
ZmJ1ZiwgYm9vdC0+Q2x1c3RlclNpemUpICE9IGJvb3QtPkNsdXN0ZXJTaXpl
KSB7CisJICAgIHx8IChzaXplX3Qpd3JpdGUoZG9zZnMsIGxmYnVmLCBib290
LT5DbHVzdGVyU2l6ZSkgIT0gYm9vdC0+Q2x1c3RlclNpemUpIHsKIAkJcGVy
cm9yKCJjb3VsZCBub3Qgd3JpdGUgTE9TVC5ESVIiKTsKIAkJcmV0dXJuIEZT
RkFUQUw7CiAJfQpkaWZmIC1ydSBmc2NrX21zZG9zZnMub3JpZy9kb3Nmcy5o
IGZzY2tfbXNkb3Nmcy9kb3Nmcy5oCi0tLSBmc2NrX21zZG9zZnMub3JpZy9k
b3Nmcy5oCTIwMTAtMDEtMDYgMTE6MDc6MjQuMDAwMDAwMDAwICswMDAwCisr
KyBmc2NrX21zZG9zZnMvZG9zZnMuaAkyMDEwLTAxLTE1IDE2OjIxOjQ2LjAw
MDAwMDAwMCArMDAwMApAQCAtMTIsMTMgKzEyLDYgQEAKICAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CiAgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CiAgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gQWxsIGFk
dmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVz
ZSBvZiB0aGlzIHNvZnR3YXJlCi0gKiAgICBtdXN0IGRpc3BsYXkgdGhlIGZv
bGxvd2luZyBhY2tub3dsZWRnZW1lbnQ6Ci0gKglUaGlzIHByb2R1Y3QgaW5j
bHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IE1hcnRpbiBIdXNlbWFubgot
ICoJYW5kIFdvbGZnYW5nIFNvbGZyYW5rLgotICogNC4gTmVpdGhlciB0aGUg
bmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBj
b250cmlidXRvcnMKLSAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQot
ICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCiAgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
QVVUSE9SUyBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SCiAgKiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTCkBAIC00NiwyMSArMzksMjEgQEAK
ICAqIEZBVCBib290IGJsb2NrLgogICovCiBzdHJ1Y3QgYm9vdGJsb2NrIHsK
LQl1X2ludAlCeXRlc1BlclNlYzsJCS8qIGJ5dGVzIHBlciBzZWN0b3IgKi8K
LQl1X2ludAlTZWNQZXJDbHVzdDsJCS8qIHNlY3RvcnMgcGVyIGNsdXN0ZXIg
Ki8KLQl1X2ludAlSZXNTZWN0b3JzOwkJLyogbnVtYmVyIG9mIHJlc2VydmVk
IHNlY3RvcnMgKi8KLQl1X2ludAlGQVRzOwkJCS8qIG51bWJlciBvZiBGQVRz
ICovCi0JdV9pbnQJUm9vdERpckVudHM7CQkvKiBudW1iZXIgb2Ygcm9vdCBk
aXJlY3RvcnkgZW50cmllcyAqLwotCXVfaW50CU1lZGlhOwkJCS8qIG1lZGlh
IGRlc2NyaXB0b3IgKi8KLQl1X2ludAlGQVRzbWFsbDsJCS8qIG51bWJlciBv
ZiBzZWN0b3JzIHBlciBGQVQgKi8KKwl1X2ludAlicGJCeXRlc1BlclNlYzsJ
CS8qIGJ5dGVzIHBlciBzZWN0b3IgKi8KKwl1X2ludAlicGJTZWNQZXJDbHVz
dDsJCS8qIHNlY3RvcnMgcGVyIGNsdXN0ZXIgKi8KKwl1X2ludAlicGJSZXNT
ZWN0b3JzOwkJLyogbnVtYmVyIG9mIHJlc2VydmVkIHNlY3RvcnMgKi8KKwl1
X2ludAlicGJGQVRzOwkJLyogbnVtYmVyIG9mIGJwYkZBVHMgKi8KKwl1X2lu
dAlicGJSb290RGlyRW50czsJCS8qIG51bWJlciBvZiByb290IGRpcmVjdG9y
eSBlbnRyaWVzICovCisJdV9pbnQzMl90IGJwYlNlY3RvcnM7CQkvKiB0b3Rh
bCBudW1iZXIgb2Ygc2VjdG9ycyAqLworCXVfaW50CWJwYk1lZGlhOwkJLyog
bWVkaWEgZGVzY3JpcHRvciAqLworCXVfaW50CWJwYkZBVHNtYWxsOwkJLyog
bnVtYmVyIG9mIHNlY3RvcnMgcGVyIEZBVCAqLwogCXVfaW50CVNlY1BlclRy
YWNrOwkJLyogc2VjdG9ycyBwZXIgdHJhY2sgKi8KLQl1X2ludAlIZWFkczsJ
CQkvKiBudW1iZXIgb2YgaGVhZHMgKi8KLQl1X2ludDMyX3QgU2VjdG9yczsJ
CS8qIHRvdGFsIG51bWJlciBvZiBzZWN0b3JzICovCi0JdV9pbnQzMl90IEhp
ZGRlblNlY3M7CQkvKiAjIG9mIGhpZGRlbiBzZWN0b3JzICovCi0JdV9pbnQz
Ml90IEh1Z2VTZWN0b3JzOwkJLyogIyBvZiBzZWN0b3JzIGlmIGJwYlNlY3Rv
cnMgPT0gMCAqLwotCXVfaW50CUZTSW5mbzsJCQkvKiBGU0luZm8gc2VjdG9y
ICovCi0JdV9pbnQJQmFja3VwOwkJCS8qIEJhY2t1cCBvZiBCb290YmxvY2tz
ICovCi0JY2xfdAlSb290Q2w7CQkJLyogU3RhcnQgb2YgUm9vdCBEaXJlY3Rv
cnkgKi8KKwl1X2ludAlicGJIZWFkczsJCS8qIG51bWJlciBvZiBoZWFkcyAq
LworCXVfaW50MzJfdCBicGJIaWRkZW5TZWNzOwkvKiAjIG9mIGhpZGRlbiBz
ZWN0b3JzICovCisJdV9pbnQzMl90IGJwYkh1Z2VTZWN0b3JzOwkvKiAjIG9m
IHNlY3RvcnMgaWYgYnBiYnBiU2VjdG9ycyA9PSAwICovCisJY2xfdAlicGJS
b290Q2x1c3Q7CQkvKiBTdGFydCBvZiBSb290IERpcmVjdG9yeSAqLworCXVf
aW50CWJwYkZTSW5mbzsJCS8qIEZTSW5mbyBzZWN0b3IgKi8KKwl1X2ludAli
cGJCYWNrdXA7CQkvKiBCYWNrdXAgb2YgQm9vdGJsb2NrcyAqLwogCWNsX3QJ
RlNGcmVlOwkJCS8qIE51bWJlciBvZiBmcmVlIGNsdXN0ZXJzIGFjYy4gRlNJ
bmZvICovCiAJY2xfdAlGU05leHQ7CQkJLyogTmV4dCBmcmVlIGNsdXN0ZXIg
YWNjLiBGU0luZm8gKi8KIApkaWZmIC1ydSBmc2NrX21zZG9zZnMub3JpZy9l
eHQuaCBmc2NrX21zZG9zZnMvZXh0LmgKLS0tIGZzY2tfbXNkb3Nmcy5vcmln
L2V4dC5oCTIwMTAtMDEtMDYgMTE6MDc6MjQuMDAwMDAwMDAwICswMDAwCisr
KyBmc2NrX21zZG9zZnMvZXh0LmgJMjAxMC0wMS0xNSAxNjoxMDowNi4wMDAw
MDAwMDAgKzAwMDAKQEAgLTEwLDEzICsxMCw2IEBACiAgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAogICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQog
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuIEFsbCBhZHZl
cnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ug
b2YgdGhpcyBzb2Z0d2FyZQotICogICAgbXVzdCBkaXNwbGF5IHRoZSBmb2xs
b3dpbmcgYWNrbm93bGVkZ2VtZW50OgotICoJVGhpcyBwcm9kdWN0IGluY2x1
ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSBNYXJ0aW4gSHVzZW1hbm4KLSAq
CWFuZCBXb2xmZ2FuZyBTb2xmcmFuay4KLSAqIDQuIE5laXRoZXIgdGhlIG5h
bWUgb2YgdGhlIFVuaXZlcnNpdHkgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29u
dHJpYnV0b3JzCi0gKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKLSAq
ICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgogICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFV
VEhPUlMgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUgogICogSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUwpAQCAtNzcsMTIgKzcwLDEyIEBACiAj
ZGVmaW5lCUZTRElSTU9ECTIJCS8qIFNvbWUgZGlyZWN0b3J5IHdhcyBtb2Rp
ZmllZCAqLwogI2RlZmluZQlGU0ZBVE1PRAk0CQkvKiBUaGUgRkFUIHdhcyBt
b2RpZmllZCAqLwogI2RlZmluZQlGU0VSUk9SCQk4CQkvKiBTb21lIHVucmVj
b3ZlcmVkIGVycm9yIHJlbWFpbnMgKi8KLSNkZWZpbmUJRlNGQVRBTAkJMTYJ
CS8qIFNvbWUgdW5yZWNvdmVyYWJsZSBlcnJvciBvY2N1cmVkICovCisjZGVm
aW5lCUZTRkFUQUwJCTE2CQkvKiBTb21lIHVucmVjb3ZlcmFibGUgZXJyb3Ig
b2NjdXJyZWQgKi8KICNkZWZpbmUgRlNESVJUWQkJMzIJCS8qIEZpbGUgc3lz
dGVtIGlzIGRpcnR5ICovCiAjZGVmaW5lIEZTRklYRkFUCTY0CQkvKiBGaXgg
ZmlsZSBzeXN0ZW0gRkFUICovCiAKIC8qCi0gKiByZWFkIGEgYm9vdCBibG9j
ayBpbiBhIG1hY2hpbmUgaW5kZXBlbmRlbmQgZmFzaGlvbiBhbmQgdHJhbnNs
YXRlCisgKiByZWFkIGEgYm9vdCBibG9jayBpbiBhIG1hY2hpbmUgaW5kZXBl
bmRlbnQgZmFzaGlvbiBhbmQgdHJhbnNsYXRlCiAgKiBpdCBpbnRvIG91ciBz
dHJ1Y3QgYm9vdGJsb2NrLgogICovCiBpbnQgcmVhZGJvb3QoaW50LCBzdHJ1
Y3QgYm9vdGJsb2NrICopOwpAQCAtOTYsMTMgKzg5LDEzIEBACiAgKiBSZWFk
IG9uZSBvZiB0aGUgRkFUIGNvcGllcyBhbmQgcmV0dXJuIGEgcG9pbnRlciB0
byB0aGUgbmV3CiAgKiBhbGxvY2F0ZWQgYXJyYXkgaG9sZGluZyBvdXIgZGVz
Y3JpcHRpb24gb2YgaXQuCiAgKi8KLWludCByZWFkZmF0KGludCwgc3RydWN0
IGJvb3RibG9jayAqLCBpbnQsIHN0cnVjdCBmYXRFbnRyeSAqKik7CitpbnQg
cmVhZGZhdChpbnQsIHN0cnVjdCBib290YmxvY2sgKiwgdV9pbnQsIHN0cnVj
dCBmYXRFbnRyeSAqKik7CiAKIC8qCiAgKiBDaGVjayB0d28gRkFUIGNvcGll
cyBmb3IgY29uc2lzdGVuY3kgYW5kIG1lcmdlIGNoYW5nZXMgaW50byB0aGUK
LSAqIGZpcnN0IGlmIG5lY2Nlc3NhcnkuCisgKiBmaXJzdCBpZiBuZWNlc3Nh
cnkuCiAgKi8KLWludCBjb21wYXJlZmF0KHN0cnVjdCBib290YmxvY2sgKiwg
c3RydWN0IGZhdEVudHJ5ICosIHN0cnVjdCBmYXRFbnRyeSAqLCBpbnQpOwor
aW50IGNvbXBhcmVmYXQoc3RydWN0IGJvb3RibG9jayAqLCBzdHJ1Y3QgZmF0
RW50cnkgKiwgc3RydWN0IGZhdEVudHJ5ICosIHVfaW50KTsKIAogLyoKICAq
IENoZWNrIGEgRkFUCmRpZmYgLXJ1IGZzY2tfbXNkb3Nmcy5vcmlnL2ZhdC5j
IGZzY2tfbXNkb3Nmcy9mYXQuYwotLS0gZnNja19tc2Rvc2ZzLm9yaWcvZmF0
LmMJMjAxMC0wMS0wNiAxMTowNzoyNC4wMDAwMDAwMDAgKzAwMDAKKysrIGZz
Y2tfbXNkb3Nmcy9mYXQuYwkyMDEwLTAxLTE1IDE2OjIxOjU1LjAwMDAwMDAw
MCArMDAwMApAQCAtMTAsMTMgKzEwLDYgQEAKICAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CiAgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gQWxsIGFkdmVydGlz
aW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0
aGlzIHNvZnR3YXJlCi0gKiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2lu
ZyBhY2tub3dsZWRnZW1lbnQ6Ci0gKglUaGlzIHByb2R1Y3QgaW5jbHVkZXMg
c29mdHdhcmUgZGV2ZWxvcGVkIGJ5IE1hcnRpbiBIdXNlbWFubgotICoJYW5k
IFdvbGZnYW5nIFNvbGZyYW5rLgotICogNC4gTmVpdGhlciB0aGUgbmFtZSBv
ZiB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmli
dXRvcnMKLSAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotICogICAg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAg
KgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9S
UyBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SCiAgKiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTCkBAIC00NywxMCArNDAsMTAgQEAKICNpbmNs
dWRlICJleHQuaCIKICNpbmNsdWRlICJmc3V0aWwuaCIKIAotc3RhdGljIGlu
dCBjaGVja2NsbnVtKHN0cnVjdCBib290YmxvY2sgKiwgaW50LCBjbF90LCBj
bF90ICopOwotc3RhdGljIGludCBjbHVzdGRpZmZlcihjbF90LCBjbF90ICos
IGNsX3QgKiwgaW50KTsKK3N0YXRpYyBpbnQgY2hlY2tjbG51bShzdHJ1Y3Qg
Ym9vdGJsb2NrICosIHVfaW50LCBjbF90LCBjbF90ICopOworc3RhdGljIGlu
dCBjbHVzdGRpZmZlcihjbF90LCBjbF90ICosIGNsX3QgKiwgdV9pbnQpOwog
c3RhdGljIGludCB0cnljbGVhcihzdHJ1Y3QgYm9vdGJsb2NrICosIHN0cnVj
dCBmYXRFbnRyeSAqLCBjbF90LCBjbF90ICopOwotc3RhdGljIGludCBfcmVh
ZGZhdChpbnQsIHN0cnVjdCBib290YmxvY2sgKiwgaW50LCB1X2NoYXIgKiop
Oworc3RhdGljIGludCBfcmVhZGZhdChpbnQsIHN0cnVjdCBib290YmxvY2sg
KiwgdV9pbnQsIHVfY2hhciAqKik7CiAKIC8qLQogICogVGhlIGZpcnN0IDIg
RkFUIGVudHJpZXMgY29udGFpbiBwc2V1ZG8tY2x1c3RlciBudW1iZXJzIHdp
dGggdGhlIGZvbGxvd2luZwpAQCAtODAsMTAgKzczLDEwIEBACiAJaWYgKGJv
b3QtPkNsdXN0TWFzayAhPSBDTFVTVDE2X01BU0sgJiYgYm9vdC0+Q2x1c3RN
YXNrICE9IENMVVNUMzJfTUFTSykKIAkJcmV0dXJuIDA7CiAKLQlvZmYgPSBi
b290LT5SZXNTZWN0b3JzOwotCW9mZiAqPSBib290LT5CeXRlc1BlclNlYzsK
KwlvZmYgPSBib290LT5icGJSZXNTZWN0b3JzOworCW9mZiAqPSBib290LT5i
cGJCeXRlc1BlclNlYzsKIAotCWJ1ZmZlciA9IG1hbGxvYyhib290LT5CeXRl
c1BlclNlYyk7CisJYnVmZmVyID0gbWFsbG9jKGJvb3QtPmJwYkJ5dGVzUGVy
U2VjKTsKIAlpZiAoYnVmZmVyID09IE5VTEwpIHsKIAkJcGVycm9yKCJObyBz
cGFjZSBmb3IgRkFUIik7CiAJCXJldHVybiAxOwpAQCAtOTQsNyArODcsNyBA
QAogCQlnb3RvIGVycjsKIAl9CiAKLQlpZiAocmVhZChmcywgYnVmZmVyLCBi
b290LT5CeXRlc1BlclNlYykgIT0gYm9vdC0+Qnl0ZXNQZXJTZWMpIHsKKwlp
ZiAocmVhZChmcywgYnVmZmVyLCBib290LT5icGJCeXRlc1BlclNlYykgIT0g
Ym9vdC0+YnBiQnl0ZXNQZXJTZWMpIHsKIAkJcGVycm9yKCJVbmFibGUgdG8g
cmVhZCBGQVQiKTsKIAkJZ290byBlcnI7CiAJfQpAQCAtMTAzLDcgKzk2LDcg
QEAKIAkgKiBJZiB3ZSBkb24ndCB1bmRlcnN0YW5kIHRoZSBGQVQsIHRoZW4g
dGhlIGZpbGUgc3lzdGVtIG11c3QgYmUKIAkgKiBhc3N1bWVkIHRvIGJlIHVu
Y2xlYW4uCiAJICovCi0JaWYgKGJ1ZmZlclswXSAhPSBib290LT5NZWRpYSB8
fCBidWZmZXJbMV0gIT0gMHhmZikKKwlpZiAoYnVmZmVyWzBdICE9IGJvb3Qt
PmJwYk1lZGlhIHx8IGJ1ZmZlclsxXSAhPSAweGZmKQogCQlnb3RvIGVycjsK
IAlpZiAoYm9vdC0+Q2x1c3RNYXNrID09IENMVVNUMTZfTUFTSykgewogCQlp
ZiAoKGJ1ZmZlclsyXSAmIDB4ZjgpICE9IDB4ZjggfHwgKGJ1ZmZlclszXSAm
IDB4M2YpICE9IDB4M2YpCkBAIC0xMzUsNyArMTI4LDcgQEAKICAqIENoZWNr
IGEgY2x1c3RlciBudW1iZXIgZm9yIHZhbGlkIHZhbHVlCiAgKi8KIHN0YXRp
YyBpbnQKLWNoZWNrY2xudW0oc3RydWN0IGJvb3RibG9jayAqYm9vdCwgaW50
IGZhdCwgY2xfdCBjbCwgY2xfdCAqbmV4dCkKK2NoZWNrY2xudW0oc3RydWN0
IGJvb3RibG9jayAqYm9vdCwgdV9pbnQgZmF0LCBjbF90IGNsLCBjbF90ICpu
ZXh0KQogewogCWlmICgqbmV4dCA+PSAoQ0xVU1RfUlNSVkQmYm9vdC0+Q2x1
c3RNYXNrKSkKIAkJKm5leHQgfD0gfmJvb3QtPkNsdXN0TWFzazsKQEAgLTE2
NiwyNiArMTU5LDI2IEBACiAgKiBSZWFkIGEgRkFUIGZyb20gZGlzay4gUmV0
dXJucyAxIGlmIHN1Y2Nlc3NmdWwsIDAgb3RoZXJ3aXNlLgogICovCiBzdGF0
aWMgaW50Ci1fcmVhZGZhdChpbnQgZnMsIHN0cnVjdCBib290YmxvY2sgKmJv
b3QsIGludCBubywgdV9jaGFyICoqYnVmZmVyKQorX3JlYWRmYXQoaW50IGZz
LCBzdHJ1Y3QgYm9vdGJsb2NrICpib290LCB1X2ludCBubywgdV9jaGFyICoq
YnVmZmVyKQogewogCW9mZl90IG9mZjsKIAotCSpidWZmZXIgPSBtYWxsb2Mo
Ym9vdC0+RkFUc2VjcyAqIGJvb3QtPkJ5dGVzUGVyU2VjKTsKKwkqYnVmZmVy
ID0gbWFsbG9jKGJvb3QtPkZBVHNlY3MgKiBib290LT5icGJCeXRlc1BlclNl
Yyk7CiAJaWYgKCpidWZmZXIgPT0gTlVMTCkgewogCQlwZXJyb3IoIk5vIHNw
YWNlIGZvciBGQVQiKTsKIAkJcmV0dXJuIDA7CiAJfQogCi0Jb2ZmID0gYm9v
dC0+UmVzU2VjdG9ycyArIG5vICogYm9vdC0+RkFUc2VjczsKLQlvZmYgKj0g
Ym9vdC0+Qnl0ZXNQZXJTZWM7CisJb2ZmID0gYm9vdC0+YnBiUmVzU2VjdG9y
cyArIG5vICogYm9vdC0+RkFUc2VjczsKKwlvZmYgKj0gYm9vdC0+YnBiQnl0
ZXNQZXJTZWM7CiAKIAlpZiAobHNlZWsoZnMsIG9mZiwgU0VFS19TRVQpICE9
IG9mZikgewogCQlwZXJyb3IoIlVuYWJsZSB0byByZWFkIEZBVCIpOwogCQln
b3RvIGVycjsKIAl9CiAKLQlpZiAocmVhZChmcywgKmJ1ZmZlciwgYm9vdC0+
RkFUc2VjcyAqIGJvb3QtPkJ5dGVzUGVyU2VjKQotCSAgICAhPSBib290LT5G
QVRzZWNzICogYm9vdC0+Qnl0ZXNQZXJTZWMpIHsKKwlpZiAoKHNpemVfdCly
ZWFkKGZzLCAqYnVmZmVyLCBib290LT5GQVRzZWNzICogYm9vdC0+YnBiQnl0
ZXNQZXJTZWMpCisJICAgICE9IGJvb3QtPkZBVHNlY3MgKiBib290LT5icGJC
eXRlc1BlclNlYykgewogCQlwZXJyb3IoIlVuYWJsZSB0byByZWFkIEZBVCIp
OwogCQlnb3RvIGVycjsKIAl9CkBAIC0yMDEsMjYgKzE5NCwyOCBAQAogICog
UmVhZCBhIEZBVCBhbmQgZGVjb2RlIGl0IGludG8gaW50ZXJuYWwgZm9ybWF0
CiAgKi8KIGludAotcmVhZGZhdChpbnQgZnMsIHN0cnVjdCBib290YmxvY2sg
KmJvb3QsIGludCBubywgc3RydWN0IGZhdEVudHJ5ICoqZnApCityZWFkZmF0
KGludCBmcywgc3RydWN0IGJvb3RibG9jayAqYm9vdCwgdV9pbnQgbm8sIHN0
cnVjdCBmYXRFbnRyeSAqKmZwKQogewogCXN0cnVjdCBmYXRFbnRyeSAqZmF0
OwogCXVfY2hhciAqYnVmZmVyLCAqcDsKIAljbF90IGNsOwogCWludCByZXQg
PSBGU09LOworCXNpemVfdCBsZW47CiAKIAlib290LT5OdW1GcmVlID0gYm9v
dC0+TnVtQmFkID0gMDsKIAogCWlmICghX3JlYWRmYXQoZnMsIGJvb3QsIG5v
LCAmYnVmZmVyKSkKIAkJcmV0dXJuIEZTRkFUQUw7CiAJCQotCWZhdCA9IGNh
bGxvYyhib290LT5OdW1DbHVzdGVycywgc2l6ZW9mKHN0cnVjdCBmYXRFbnRy
eSkpOworCWZhdCA9IG1hbGxvYyhsZW4gPSBib290LT5OdW1DbHVzdGVycyAq
IHNpemVvZihzdHJ1Y3QgZmF0RW50cnkpKTsKIAlpZiAoZmF0ID09IE5VTEwp
IHsKIAkJcGVycm9yKCJObyBzcGFjZSBmb3IgRkFUIik7CiAJCWZyZWUoYnVm
ZmVyKTsKIAkJcmV0dXJuIEZTRkFUQUw7CiAJfQorCSh2b2lkKW1lbXNldChm
YXQsIDAsIGxlbik7CiAKLQlpZiAoYnVmZmVyWzBdICE9IGJvb3QtPk1lZGlh
CisJaWYgKGJ1ZmZlclswXSAhPSBib290LT5icGJNZWRpYQogCSAgICB8fCBi
dWZmZXJbMV0gIT0gMHhmZiB8fCBidWZmZXJbMl0gIT0gMHhmZgogCSAgICB8
fCAoYm9vdC0+Q2x1c3RNYXNrID09IENMVVNUMTZfTUFTSyAmJiBidWZmZXJb
M10gIT0gMHhmZikKIAkgICAgfHwgKGJvb3QtPkNsdXN0TWFzayA9PSBDTFVT
VDMyX01BU0sKQEAgLTIzNCw3ICsyMjksNyBAQAogCQkgKiBmaWxlIHN5c3Rl
bSBpcyBkaXJ0eSBpZiBpdCBkb2Vzbid0IHJlYm9vdCBjbGVhbmx5LgogCQkg
KiBDaGVjayB0aGlzIHNwZWNpYWwgY29uZGl0aW9uIGJlZm9yZSBlcnJvcnJp
bmcgb3V0LgogCQkgKi8KLQkJaWYgKGJ1ZmZlclswXSA9PSBib290LT5NZWRp
YSAmJiBidWZmZXJbMV0gPT0gMHhmZgorCQlpZiAoYnVmZmVyWzBdID09IGJv
b3QtPmJwYk1lZGlhICYmIGJ1ZmZlclsxXSA9PSAweGZmCiAJCSAgICAmJiBi
dWZmZXJbMl0gPT0gMHhmZgogCQkgICAgJiYgKChib290LT5DbHVzdE1hc2sg
PT0gQ0xVU1QxNl9NQVNLICYmIGJ1ZmZlclszXSA9PSAweDdmKQogCQkJfHwg
KGJvb3QtPkNsdXN0TWFzayA9PSBDTFVTVDMyX01BU0sKQEAgLTMxMSw3ICsz
MDYsMTEgQEAKIAl9CiAKIAlmcmVlKGJ1ZmZlcik7Ci0JKmZwID0gZmF0Owor
CWlmIChyZXQgJiBGU0ZBVEFMKSB7CisJCWZyZWUoZmF0KTsKKwkJKmZwID0g
TlVMTDsKKwl9IGVsc2UKKwkJKmZwID0gZmF0OwogCXJldHVybiByZXQ7CiB9
CiAKQEAgLTMzMSw3ICszMzAsNyBAQAogfQogCiBzdGF0aWMgaW50Ci1jbHVz
dGRpZmZlcihjbF90IGNsLCBjbF90ICpjcDEsIGNsX3QgKmNwMiwgaW50IGZh
dG51bSkKK2NsdXN0ZGlmZmVyKGNsX3QgY2wsIGNsX3QgKmNwMSwgY2xfdCAq
Y3AyLCB1X2ludCBmYXRudW0pCiB7CiAJaWYgKCpjcDEgPT0gQ0xVU1RfRlJF
RSB8fCAqY3AxID49IENMVVNUX1JTUlZEKSB7CiAJCWlmICgqY3AyID09IENM
VVNUX0ZSRUUgfHwgKmNwMiA+PSBDTFVTVF9SU1JWRCkgewpAQCAtMzQ2LDEz
ICszNDUsMTMgQEAKIAkJCQl9CiAJCQkJcmV0dXJuIEZTRkFUQUw7CiAJCQl9
Ci0JCQlwd2FybigiQ2x1c3RlciAldSBpcyBtYXJrZWQgJXMgaW4gRkFUIDAs
ICVzIGluIEZBVCAlZFxuIiwKKwkJCXB3YXJuKCJDbHVzdGVyICV1IGlzIG1h
cmtlZCAlcyBpbiBGQVQgMCwgJXMgaW4gRkFUICV1XG4iLAogCQkJICAgICAg
Y2wsIHJzcnZkY2x0eXBlKCpjcDEpLCByc3J2ZGNsdHlwZSgqY3AyKSwgZmF0
bnVtKTsKIAkJCWlmIChhc2soMCwgIlVzZSBGQVQgMCdzIGVudHJ5IikpIHsK
IAkJCQkqY3AyID0gKmNwMTsKIAkJCQlyZXR1cm4gRlNGQVRNT0Q7CiAJCQl9
Ci0JCQlpZiAoYXNrKDAsICJVc2UgRkFUICVkJ3MgZW50cnkiLCBmYXRudW0p
KSB7CisJCQlpZiAoYXNrKDAsICJVc2UgRkFUICV1J3MgZW50cnkiLCBmYXRu
dW0pKSB7CiAJCQkJKmNwMSA9ICpjcDI7CiAJCQkJcmV0dXJuIEZTRkFUTU9E
OwogCQkJfQpAQCAtMzYwLDcgKzM1OSw3IEBACiAJCX0KIAkJcHdhcm4oIkNs
dXN0ZXIgJXUgaXMgbWFya2VkICVzIGluIEZBVCAwLCBidXQgY29udGludWVz
IHdpdGggY2x1c3RlciAldSBpbiBGQVQgJWRcbiIsCiAJCSAgICAgIGNsLCBy
c3J2ZGNsdHlwZSgqY3AxKSwgKmNwMiwgZmF0bnVtKTsKLQkJaWYgKGFzaygw
LCAiVXNlIGNvbnRpbnVhdGlvbiBmcm9tIEZBVCAlZCIsIGZhdG51bSkpIHsK
KwkJaWYgKGFzaygwLCAiVXNlIGNvbnRpbnVhdGlvbiBmcm9tIEZBVCAldSIs
IGZhdG51bSkpIHsKIAkJCSpjcDEgPSAqY3AyOwogCQkJcmV0dXJuIEZTRkFU
TU9EOwogCQl9CkBAIC0zNzEsNyArMzcwLDcgQEAKIAkJcmV0dXJuIEZTRkFU
QUw7CiAJfQogCWlmICgqY3AyID09IENMVVNUX0ZSRUUgfHwgKmNwMiA+PSBD
TFVTVF9SU1JWRCkgewotCQlwd2FybigiQ2x1c3RlciAldSBjb250aW51ZXMg
d2l0aCBjbHVzdGVyICV1IGluIEZBVCAwLCBidXQgaXMgbWFya2VkICVzIGlu
IEZBVCAlZFxuIiwKKwkJcHdhcm4oIkNsdXN0ZXIgJXUgY29udGludWVzIHdp
dGggY2x1c3RlciAldSBpbiBGQVQgMCwgYnV0IGlzIG1hcmtlZCAlcyBpbiBG
QVQgJXVcbiIsCiAJCSAgICAgIGNsLCAqY3AxLCByc3J2ZGNsdHlwZSgqY3Ay
KSwgZmF0bnVtKTsKIAkJaWYgKGFzaygwLCAiVXNlIGNvbnRpbnVhdGlvbiBm
cm9tIEZBVCAwIikpIHsKIAkJCSpjcDIgPSAqY3AxOwpAQCAtMzgzLDEzICsz
ODIsMTMgQEAKIAkJfQogCQlyZXR1cm4gRlNFUlJPUjsKIAl9Ci0JcHdhcm4o
IkNsdXN0ZXIgJXUgY29udGludWVzIHdpdGggY2x1c3RlciAldSBpbiBGQVQg
MCwgYnV0IHdpdGggY2x1c3RlciAldSBpbiBGQVQgJWRcbiIsCisJcHdhcm4o
IkNsdXN0ZXIgJXUgY29udGludWVzIHdpdGggY2x1c3RlciAldSBpbiBGQVQg
MCwgYnV0IHdpdGggY2x1c3RlciAldSBpbiBGQVQgJXVcbiIsCiAJICAgICAg
Y2wsICpjcDEsICpjcDIsIGZhdG51bSk7CiAJaWYgKGFzaygwLCAiVXNlIGNv
bnRpbnVhdGlvbiBmcm9tIEZBVCAwIikpIHsKIAkJKmNwMiA9ICpjcDE7CiAJ
CXJldHVybiBGU0ZBVE1PRDsKIAl9Ci0JaWYgKGFzaygwLCAiVXNlIGNvbnRp
bnVhdGlvbiBmcm9tIEZBVCAlZCIsIGZhdG51bSkpIHsKKwlpZiAoYXNrKDAs
ICJVc2UgY29udGludWF0aW9uIGZyb20gRkFUICV1IiwgZmF0bnVtKSkgewog
CQkqY3AxID0gKmNwMjsKIAkJcmV0dXJuIEZTRkFUTU9EOwogCX0KQEAgLTQw
MSw4ICs0MDAsOCBAQAogICogaW50byB0aGUgZmlyc3Qgb25lLgogICovCiBp
bnQKLWNvbXBhcmVmYXQoc3RydWN0IGJvb3RibG9jayAqYm9vdCwgc3RydWN0
IGZhdEVudHJ5ICpmaXJzdCwgCi0gICAgc3RydWN0IGZhdEVudHJ5ICpzZWNv
bmQsIGludCBmYXRudW0pCitjb21wYXJlZmF0KHN0cnVjdCBib290YmxvY2sg
KmJvb3QsIHN0cnVjdCBmYXRFbnRyeSAqZmlyc3QsCisgICAgc3RydWN0IGZh
dEVudHJ5ICpzZWNvbmQsIHVfaW50IGZhdG51bSkKIHsKIAljbF90IGNsOwog
CWludCByZXQgPSBGU09LOwpAQCAtNTQyLDEyICs1NDEsMTIgQEAKIHsKIAl1
X2NoYXIgKmJ1ZmZlciwgKnA7CiAJY2xfdCBjbDsKLQlpbnQgaTsKLQl1X2lu
dDMyX3QgZmF0c3o7CisJdV9pbnQgaTsKKwlzaXplX3QgZmF0c3o7CiAJb2Zm
X3Qgb2ZmOwogCWludCByZXQgPSBGU09LOwogCi0JYnVmZmVyID0gbWFsbG9j
KGZhdHN6ID0gYm9vdC0+RkFUc2VjcyAqIGJvb3QtPkJ5dGVzUGVyU2VjKTsK
KwlidWZmZXIgPSBtYWxsb2MoZmF0c3ogPSBib290LT5GQVRzZWNzICogYm9v
dC0+YnBiQnl0ZXNQZXJTZWMpOwogCWlmIChidWZmZXIgPT0gTlVMTCkgewog
CQlwZXJyb3IoIk5vIHNwYWNlIGZvciBGQVQiKTsKIAkJcmV0dXJuIEZTRkFU
QUw7CkBAIC01NTYsNyArNTU1LDcgQEAKIAlib290LT5OdW1GcmVlID0gMDsK
IAlwID0gYnVmZmVyOwogCWlmIChjb3JyZWN0X2ZhdCkgewotCQkqcCsrID0g
KHVfY2hhcilib290LT5NZWRpYTsKKwkJKnArKyA9ICh1X2NoYXIpYm9vdC0+
YnBiTWVkaWE7CiAJCSpwKysgPSAweGZmOwogCQkqcCsrID0gMHhmZjsKIAkJ
c3dpdGNoIChib290LT5DbHVzdE1hc2spIHsKQEAgLTYyOSwxMSArNjI4LDEx
IEBACiAJCQlicmVhazsKIAkJfQogCX0KLQlmb3IgKGkgPSAwOyBpIDwgYm9v
dC0+RkFUczsgaSsrKSB7Ci0JCW9mZiA9IGJvb3QtPlJlc1NlY3RvcnMgKyBp
ICogYm9vdC0+RkFUc2VjczsKLQkJb2ZmICo9IGJvb3QtPkJ5dGVzUGVyU2Vj
OworCWZvciAoaSA9IDA7IGkgPCBib290LT5icGJGQVRzOyBpKyspIHsKKwkJ
b2ZmID0gYm9vdC0+YnBiUmVzU2VjdG9ycyArIGkgKiBib290LT5GQVRzZWNz
OworCQlvZmYgKj0gYm9vdC0+YnBiQnl0ZXNQZXJTZWM7CiAJCWlmIChsc2Vl
ayhmcywgb2ZmLCBTRUVLX1NFVCkgIT0gb2ZmCi0JCSAgICB8fCB3cml0ZShm
cywgYnVmZmVyLCBmYXRzeikgIT0gZmF0c3opIHsKKwkJICAgIHx8IChzaXpl
X3Qpd3JpdGUoZnMsIGJ1ZmZlciwgZmF0c3opICE9IGZhdHN6KSB7CiAJCQlw
ZXJyb3IoIlVuYWJsZSB0byB3cml0ZSBGQVQiKTsKIAkJCXJldCA9IEZTRkFU
QUw7IC8qIFJldHVybiBpbW1lZGlhdGVseT8JCVhYWCAqLwogCQl9CkBAIC02
NzMsNyArNjcyLDcgQEAKIAl9CiAJZmluaXNobGYoKTsKIAotCWlmIChib290
LT5GU0luZm8pIHsKKwlpZiAoYm9vdC0+YnBiRlNJbmZvKSB7CiAJCXJldCA9
IDA7CiAJCWlmIChib290LT5GU0ZyZWUgIT0gYm9vdC0+TnVtRnJlZSkgewog
CQkJcHdhcm4oIkZyZWUgc3BhY2UgaW4gRlNJbmZvIGJsb2NrICglZCkgbm90
IGNvcnJlY3QgKCVkKVxuIiwKQEAgLTY4MywxNyArNjgyLDYgQEAKIAkJCQly
ZXQgPSAxOwogCQkJfQogCQl9Ci0JCWlmIChib290LT5OdW1GcmVlICYmIGZh
dFtib290LT5GU05leHRdLm5leHQgIT0gQ0xVU1RfRlJFRSkgewotCQkJcHdh
cm4oIk5leHQgZnJlZSBjbHVzdGVyIGluIEZTSW5mbyBibG9jayAoJXUpIG5v
dCBmcmVlXG4iLAotCQkJICAgICAgYm9vdC0+RlNOZXh0KTsKLQkJCWlmIChh
c2soMSwgIkZpeCIpKQotCQkJCWZvciAoaGVhZCA9IENMVVNUX0ZJUlNUOyBo
ZWFkIDwgYm9vdC0+TnVtQ2x1c3RlcnM7IGhlYWQrKykKLQkJCQkJaWYgKGZh
dFtoZWFkXS5uZXh0ID09IENMVVNUX0ZSRUUpIHsKLQkJCQkJCWJvb3QtPkZT
TmV4dCA9IGhlYWQ7Ci0JCQkJCQlyZXQgPSAxOwotCQkJCQkJYnJlYWs7Ci0J
CQkJCX0KLQkJfQogCQlpZiAocmV0KQogCQkJbW9kIHw9IHdyaXRlZnNpbmZv
KGRvc2ZzLCBib290KTsKIAl9CmRpZmYgLXJ1IGZzY2tfbXNkb3Nmcy5vcmln
L2ZzY2tfbXNkb3Nmcy44IGZzY2tfbXNkb3Nmcy9mc2NrX21zZG9zZnMuOAot
LS0gZnNja19tc2Rvc2ZzLm9yaWcvZnNja19tc2Rvc2ZzLjgJMjAxMC0wMS0w
NiAxMTowNzoyNC4wMDAwMDAwMDAgKzAwMDAKKysrIGZzY2tfbXNkb3Nmcy9m
c2NrX21zZG9zZnMuOAkyMDEwLTAxLTE0IDIzOjExOjQyLjAwMDAwMDAwMCAr
MDAwMApAQCAtMTEsMTMgKzExLDYgQEAKIC5cIiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAogLlwiICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKIC5cIiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotLlwiIDMuIEFsbCBhZHZlcnRp
c2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2Yg
dGhpcyBzb2Z0d2FyZQotLlwiICAgIG11c3QgZGlzcGxheSB0aGUgZm9sbG93
aW5nIGFja25vd2xlZGdlbWVudDoKLS5cIglUaGlzIHByb2R1Y3QgaW5jbHVk
ZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IE1hcnRpbiBIdXNlbWFubgotLlwi
CWFuZCBXb2xmZ2FuZyBTb2xmcmFuay4KLS5cIiA0LiBOZWl0aGVyIHRoZSBu
YW1lIG9mIHRoZSBVbml2ZXJzaXR5IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNv
bnRyaWJ1dG9ycwotLlwiICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQot
LlwiICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgogLlwiCiAuXCIgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQVVUSE9SUyBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SCiAuXCIg
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUwpkaWZmIC1ydSBmc2NrX21z
ZG9zZnMub3JpZy9tYWluLmMgZnNja19tc2Rvc2ZzL21haW4uYwotLS0gZnNj
a19tc2Rvc2ZzLm9yaWcvbWFpbi5jCTIwMTAtMDEtMDYgMTE6MDc6MjQuMDAw
MDAwMDAwICswMDAwCisrKyBmc2NrX21zZG9zZnMvbWFpbi5jCTIwMTAtMDEt
MTQgMjM6MTE6NDIuMDAwMDAwMDAwICswMDAwCkBAIC0xMCwxMyArMTAsNiBA
QAogICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKICAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcg
ZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMgc29mdHdhcmUKLSAqICAgIG11c3Qg
ZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdlbWVudDoKLSAqCVRo
aXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgTWFy
dGluIEh1c2VtYW5uCi0gKglhbmQgV29sZmdhbmcgU29sZnJhbmsuCi0gKiA0
LiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG5vciB0aGUg
bmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotICogICAgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0
aGlzIHNvZnR3YXJlCi0gKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KICAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBBVVRIT1JTIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJF
U1MgT1IKICAqIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKQEAgLTQw
LDcgKzMzLDYgQEAKIAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUg
PHN0cmluZy5oPgotI2luY2x1ZGUgPGN0eXBlLmg+CiAjaW5jbHVkZSA8c3Rk
aW8uaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDxlcnJuby5o
Pgo=
--0-1059020741-1263591359=:76287--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201001152140.o0FLe3rk029080>
