Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 16 Apr 2003 23:55:50 -0700 (PDT)
From:      Julian Elischer <julian@elischer.org>
To:        Jeff Roberson <jroberson@chesapeake.net>
Cc:        freebsd-threads@freebsd.org
Subject:   Re: Patches for threads/scheduler abstraction.
Message-ID:  <Pine.BSF.4.21.0304162233240.94222-101000@InterJet.elischer.org>
In-Reply-To: <20030416221535.B76635-100000@mail.chesapeake.net>

next in thread | previous in thread | raw e-mail | index | archive | help
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

--0-499056429-1050562550=:94222
Content-Type: TEXT/PLAIN; charset=US-ASCII



On Wed, 16 Apr 2003, Jeff Roberson wrote:

> 
> On Wed, 16 Apr 2003, Julian Elischer wrote:
> 
> >
> > OK I will send them shortly.
> >
> > These patches are NOT CLEAN
> > by which I mean I have not done any tidying up yet.
> >
> > It is still in the "cat dragged this over the fence" state.
> > However it does compile cleanly with only four files knowing what a kse
> > is (Not counting ULE, I have not touched ULE yet) (and I would actualy
> > rather that you did.. you understand it better).
> >
> > !!!!!!I have not tried to RUN this yet!!!!!!
> > The files that know what a kse is are:
> > ref3# grep ksevar.h kern/*
> > kern/kern_switch.c:#include <sys/ksevar.h>
> > kern/kern_thread.c:#include <sys/ksevar.h>
> > kern/sched_4bsd.c:#include <sys/ksevar.h>
> > kern/sched_4bsd_kse.c:#include <sys/ksevar.h>
> > (note that kern_thr.c is not one of them)
> >
> > My plan is:
> > eventually, sched_4bsd.c will only do the original BSD
> > scheduling (except with threads instead of procsses)
> > i.e. unfair, but simple and easy to benchmark on non-threaded apps.
> > (or on threaded apps with no competing processes)
> >
> > sched_4bsd_kse.c will suck in the current contents of kern_switch.c
> > and the KSE'd version of sched_4bsd.c.
> >
> > this will act like the current 4bsd scheduler WITH KSEs
> >
> 
> There is a better way to do this.  If you would listen to my tiered
> approach you could end up with one copy of sched_4bsd and not two.
>  The kse specific logic could just sit in kern_kse which would not
> tell sched_4bsd about threads until they owned the KSE.  We could
> even do this without the kse structure as a go between.

I think that is an overcomplication.
the two BSD based files would be very different.
For a start the simple one would be queueing threads on the run queues.
A system compiled with that scheduelr would have no KSEs anywhere
in the entire kernel.
The kse one would be queueing KSEs. I don't see how you can do this
with a shared file.

Anyhow, the following hack (totaly unoptimised.... notice the 
existance of sched_td_exit, sched_exit_thread, and sched_thr_exit..
I just haven't got to cleaning it) is not so advanced that
the question of tiered schedulers is relevant yet..
this patch just shows that it is possible to get the KSEs
out of the rst of the system.

> 
> > switch.c will go away (unless you want it as part of ULE).
> >
> > kern_thread.c will forget all about KSEs
> > (but its not there yet).
> >
> > I'll send the patches in an hour or so..
> > My wife's calling :-/
> >
> >
> >
> >
> >
> >
> > >
> > > >
> > > > Julian
> > > >
> > > >
> > >
> > >
> >
> 
> 

--0-499056429-1050562550=:94222
Content-Type: APPLICATION/octet-stream; name="hack.tgz"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.BSF.4.21.0304162355490.94222@InterJet.elischer.org>
Content-Description: 
Content-Disposition: attachment; filename="hack.tgz"

dW4ta3NlLmRpZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAADAxMDA2NDQAMDAwMDAwMAAwMDAwMDAwADAwMDAwMDc1MTUz
ADA3NjQ3NDQ2MDAwADAxMTc1NAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHJvb3QA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd2hlZWwAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAA/IHN5cy9scy5nbW9uCj8gc3lzL2NvbmYvbHMu
Z21vbgo/IHN5cy9pMzg2L2NvbmYvUkVGMwo/IHN5cy9pMzg2L2NvbmYvbHMu
Z21vbgo/IHN5cy9rZXJuL3NjaGVkXzRic2Rfa3NlLmMKPyBzeXMvc3lzL2tz
ZXZhci5oCj8gc3lzL3N5cy9scy5nbW9uCkluZGV4OiBzeXMvY29uZi9maWxl
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvcmVwb3MvcHJv
amVjdHMvbWlycm9yZWQvZnJlZWJzZC9zcmMvc3lzL2NvbmYvZmlsZXMsdgpy
ZXRyaWV2aW5nIHJldmlzaW9uIDEuNzgyCmRpZmYgLXUgLXIxLjc4MiBmaWxl
cwotLS0gc3lzL2NvbmYvZmlsZXMJMjAwMy8wNC8xNSAwNDowODowMQkxLjc4
MgorKysgc3lzL2NvbmYvZmlsZXMJMjAwMy8wNC8xNyAwNjozNDo1MApAQCAt
MTA1Myw2ICsxMDUzLDcgQEAKIGtlcm4vbWQ0Yy5jCQlvcHRpb25hbCBuZXRz
bWIKIGtlcm4vbWQ1Yy5jCQlzdGFuZGFyZAoga2Vybi9zY2hlZF80YnNkLmMJ
b3B0aW9uYWwgc2NoZWRfNGJzZAora2Vybi9zY2hlZF80YnNkX2tzZS5jCW9w
dGlvbmFsIHNjaGVkXzRic2QKIGtlcm4vc2NoZWRfdWxlLmMJb3B0aW9uYWwg
c2NoZWRfdWxlCiBrZXJuL3N1YnJfYXV0b2NvbmYuYwlzdGFuZGFyZAoga2Vy
bi9zdWJyX2JsaXN0LmMJc3RhbmRhcmQKSW5kZXg6IHN5cy9pMzg2L2kzODYv
bWFjaGRlcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9y
ZXBvcy9wcm9qZWN0cy9taXJyb3JlZC9mcmVlYnNkL3NyYy9zeXMvaTM4Ni9p
Mzg2L21hY2hkZXAuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41NjEKZGlm
ZiAtdSAtcjEuNTYxIG1hY2hkZXAuYwotLS0gc3lzL2kzODYvaTM4Ni9tYWNo
ZGVwLmMJMjAwMy8wNC8wMiAyMzo1MzoyOAkxLjU2MQorKysgc3lzL2kzODYv
aTM4Ni9tYWNoZGVwLmMJMjAwMy8wNC8xNyAwNjozNDo1NApAQCAtMTkzMSwx
MSArMTkzMSw3IEBACiAJICAgKHRocmVhZDAudGRfa3N0YWNrICsgS1NUQUNL
X1BBR0VTICogUEFHRV9TSVpFKSAtIDE7CiAJYXRkZXZiYXNlID0gSVNBX0hP
TEVfU1RBUlQgKyBLRVJOQkFTRTsKIAotCS8qCi0gCSAqIFRoaXMgbWF5IGJl
IGRvbmUgYmV0dGVyIGxhdGVyIGlmIGl0IGdldHMgbW9yZSBoaWdoIGxldmVs
Ci0gCSAqIGNvbXBvbmVudHMgaW4gaXQuIElmIHNvIGp1c3QgbGluayB0ZC0+
dGRfcHJvYyBoZXJlLgotCSAqLwotCXByb2NfbGlua3VwKCZwcm9jMCwgJmtz
ZWdycDAsICZrc2UwLCAmdGhyZWFkMCk7CisJdGhyZWFkMC50ZF9wcm9jID0g
JnByb2MwOyAvKiBzb21lIHN0dWZmIGFzc3VtZXMgdGhpcyBpcyBhbHJlYWR5
IGRvbmUgKi8KIAogCW1ldGFkYXRhX21pc3NpbmcgPSAwOwogCWlmIChib290
aW5mby5iaV9tb2R1bGVwKSB7CkluZGV4OiBzeXMva2Vybi9pbml0X21haW4u
Ywo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvcmVwb3MvcHJv
amVjdHMvbWlycm9yZWQvZnJlZWJzZC9zcmMvc3lzL2tlcm4vaW5pdF9tYWlu
LmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjI5CmRpZmYgLXUgLXIxLjIy
OSBpbml0X21haW4uYwotLS0gc3lzL2tlcm4vaW5pdF9tYWluLmMJMjAwMy8w
NC8xMyAyMToyOToxMAkxLjIyOQorKysgc3lzL2tlcm4vaW5pdF9tYWluLmMJ
MjAwMy8wNC8xNyAwNjozNDo1NQpAQCAtODgsNyArODgsNiBAQAogc3RhdGlj
IHN0cnVjdCBwZ3JwIHBncnAwOwogc3RydWN0CXByb2MgcHJvYzA7CiBzdHJ1
Y3QJdGhyZWFkIHRocmVhZDA7Ci1zdHJ1Y3QJa3NlIGtzZTA7CiBzdHJ1Y3QJ
a3NlZ3JwIGtzZWdycDA7CiBzdGF0aWMgc3RydWN0IHByb2NzaWcgcHJvY3Np
ZzA7CiBzdGF0aWMgc3RydWN0IGZpbGVkZXNjMCBmaWxlZGVzYzA7CkBAIC0z
MDgsMTggKzMwNywxMiBAQAogCXJlZ2lzdGVyIHVuc2lnbmVkIGk7CiAJc3Ry
dWN0IHRocmVhZCAqdGQ7CiAJc3RydWN0IGtzZWdycCAqa2c7Ci0Jc3RydWN0
IGtzZSAqa2U7CiAKIAlHSUFOVF9SRVFVSVJFRDsKIAlwID0gJnByb2MwOwog
CXRkID0gJnRocmVhZDA7Ci0Ja2UgPSAma3NlMDsKIAlrZyA9ICZrc2VncnAw
OwogCi0Ja2UtPmtlX3NjaGVkID0ga3NlMF9zY2hlZDsKLQlrZy0+a2dfc2No
ZWQgPSBrc2VncnAwX3NjaGVkOwotCXAtPnBfc2NoZWQgPSBwcm9jMF9zY2hl
ZDsKLQl0ZC0+dGRfc2NoZWQgPSB0aHJlYWQwX3NjaGVkOwogCiAJLyoKIAkg
KiBJbml0aWFsaXplIG1hZ2ljIG51bWJlci4KQEAgLTMyOSw5ICszMjIsMTEg
QEAKIAkvKgogCSAqIEluaXRpYWxpemUgdGhyZWFkLCBwcm9jZXNzIGFuZCBw
Z3JwIHN0cnVjdHVyZXMuCiAJICovCi0JcHJvY2luaXQoKTsKLQl0aHJlYWRp
bml0KCk7CisJcHJvY2luaXQoKTsJCS8qIHNldCB1cCBwcm9jIHpvbmUgKi8K
Kwl0aHJlYWRpbml0KCk7CQkvKiBzZXQgdXAgdGhyZWFkLCB1cGNhbGwgYW5k
IEtTRUdSUCB6b25lcyAqLworCXNjaGVkaW5pdCgpOwkJLyogc2V0IHVwIHpv
bmVzIGV0Yy4gZm9yIHRoZSBzY2hlZHVsZXIgKi8KIAorCiAJLyoKIAkgKiBJ
bml0aWFsaXplIHNsZWVwIHF1ZXVlIGhhc2ggdGFibGUKIAkgKi8KQEAgLTM2
MCwxMiArMzU1LDcgQEAKIAogCXAtPnBfc3lzZW50ID0gJm51bGxfc3lzdmVj
OwogCi0JLyoKLQkgKiBwcm9jX2xpbmt1cCB3YXMgYWxyZWFkeSBkb25lIGlu
IGluaXRfaTM4NigpIG9yIGFscGhhaW5pdCgpIGV0Yy4KLQkgKiBiZWNhdXNl
IHRoZSBlYXJsaWVyIGNvZGUgbmVlZGVkIHRvIGZvbGxvdyB0ZC0+dGRfcHJv
Yy4gT3RoZXJ3aXNlCi0JICogSSB3b3VsZCBoYXZlIGRvbmUgaXQgaGVyZS4u
IG1heWJlIHRoaXMgbWVhbnMgdGhpcyBzaG91bGQgYmUKLQkgKiBkb25lIGVh
cmxpZXIgdG9vLgotCSAqLworCXByb2NfbGlua3VwKCZwcm9jMCwgJmtzZWdy
cDAsICZ0aHJlYWQwKTsKIAlwLT5wX2ZsYWcgPSBQX1NZU1RFTTsKIAlwLT5w
X3NmbGFnID0gUFNfSU5NRU07CiAJcC0+cF9zdGF0ZSA9IFBSU19OT1JNQUw7
CkBAIC0zNzUsMTAgKzM2NSw3IEBACiAJa2ctPmtnX3VzZXJfcHJpID0gUFVT
RVI7CiAJdGQtPnRkX3ByaW9yaXR5ID0gUFZNOwogCXRkLT50ZF9iYXNlX3By
aSA9IFBVU0VSOwotCXRkLT50ZF9rc2UgPSBrZTsgLyogWFhYS1NFICovCiAJ
dGQtPnRkX29uY3B1ID0gMDsKLQlrZS0+a2Vfc3RhdGUgPSBLRVNfVEhSRUFE
OwotCWtlLT5rZV90aHJlYWQgPSB0ZDsKIAlwLT5wX3BlZXJzID0gMDsKIAlw
LT5wX2xlYWRlciA9IHA7CiAKSW5kZXg6IHN5cy9rZXJuL2tlcm5fY2xvY2su
Ywo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvcmVwb3MvcHJv
amVjdHMvbWlycm9yZWQvZnJlZWJzZC9zcmMvc3lzL2tlcm4va2Vybl9jbG9j
ay5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE1NgpkaWZmIC11IC1yMS4x
NTYga2Vybl9jbG9jay5jCi0tLSBzeXMva2Vybi9rZXJuX2Nsb2NrLmMJMjAw
My8wNC8xMSAwMzozOTowNwkxLjE1NgorKysgc3lzL2tlcm4va2Vybl9jbG9j
ay5jCTIwMDMvMDQvMTcgMDY6MzQ6NTUKQEAgLTM1Nyw3ICszNTcsNiBAQAog
CXN0cnVjdCBydXNhZ2UgKnJ1OwogCXN0cnVjdCB2bXNwYWNlICp2bTsKIAlz
dHJ1Y3QgdGhyZWFkICp0ZDsKLQlzdHJ1Y3Qga3NlICprZTsKIAlzdHJ1Y3Qg
cHJvYyAqcDsKIAlsb25nIHJzczsKIApAQCAtMzY1LDcgKzM2NCw2IEBACiAJ
cCA9IHRkLT50ZF9wcm9jOwogCiAJbXR4X2xvY2tfc3Bpbl9mbGFncygmc2No
ZWRfbG9jaywgTVRYX1FVSUVUKTsKLQlrZSA9IHRkLT50ZF9rc2U7CiAJaWYg
KENMS0ZfVVNFUk1PREUoZnJhbWUpKSB7CiAJCS8qCiAJCSAqIENoYXJnZSB0
aGUgdGltZSBhcyBhcHByb3ByaWF0ZS4KQEAgLTM3Myw3ICszNzEsNyBAQAog
CQlpZiAocC0+cF9mbGFnICYgUF9USFJFQURFRCkKIAkJCXRocmVhZF9zdGF0
Y2xvY2soMSk7CiAJCXAtPnBfdXRpY2tzKys7Ci0JCWlmIChrZS0+a2Vfa3Nl
Z3JwLT5rZ19uaWNlID4gTlpFUk8pCisJCWlmICh0ZC0+dGRfa3NlZ3JwLT5r
Z19uaWNlID4gTlpFUk8pCiAJCQljcF90aW1lW0NQX05JQ0VdKys7CiAJCWVs
c2UKIAkJCWNwX3RpbWVbQ1BfVVNFUl0rKzsKQEAgLTQwNSw3ICs0MDMsNyBA
QAogCQl9CiAJfQogCi0Jc2NoZWRfY2xvY2soa2UpOworCXNjaGVkX2Nsb2Nr
KHRkKTsKIAogCS8qIFVwZGF0ZSByZXNvdXJjZSB1c2FnZSBpbnRlZ3JhbHMg
YW5kIG1heGltdW1zLiAqLwogCWlmICgocHN0YXRzID0gcC0+cF9zdGF0cykg
IT0gTlVMTCAmJgpJbmRleDogc3lzL2tlcm4va2Vybl9mb3JrLmMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3JlcG9zL3Byb2plY3RzL21p
cnJvcmVkL2ZyZWVic2Qvc3JjL3N5cy9rZXJuL2tlcm5fZm9yay5jLHYKcmV0
cmlldmluZyByZXZpc2lvbiAxLjE5MQpkaWZmIC11IC1yMS4xOTEga2Vybl9m
b3JrLmMKLS0tIHN5cy9rZXJuL2tlcm5fZm9yay5jCTIwMDMvMDQvMTEgMDM6
Mzk6MDcJMS4xOTEKKysrIHN5cy9rZXJuL2tlcm5fZm9yay5jCTIwMDMvMDQv
MTcgMDY6MzQ6NTUKQEAgLTIxNyw3ICsyMTcsNiBAQAogCXN0cnVjdCBmaWxl
ZGVzYyAqZmQ7CiAJc3RydWN0IHByb2MgKnAxID0gdGQtPnRkX3Byb2M7CiAJ
c3RydWN0IHRocmVhZCAqdGQyOwotCXN0cnVjdCBrc2UgKmtlMjsKIAlzdHJ1
Y3Qga3NlZ3JwICprZzI7CiAJc3RydWN0IHNpZ2FjdHMgKm5ld3NpZ2FjdHM7
CiAJc3RydWN0IHByb2NzaWcgKm5ld3Byb2NzaWc7CkBAIC00NDgsNyArNDQ3
LDYgQEAKIAkgKi8KIAl0ZDIgPSBGSVJTVF9USFJFQURfSU5fUFJPQyhwMik7
CiAJa2cyID0gRklSU1RfS1NFR1JQX0lOX1BST0MocDIpOwotCWtlMiA9IEZJ
UlNUX0tTRV9JTl9LU0VHUlAoa2cyKTsKIAogCS8qIEFsbG9jYXRlIGFuZCBz
d2l0Y2ggdG8gYW4gYWx0ZXJuYXRlIGtzdGFjayBpZiBzcGVjaWZpZWQgKi8K
IAlpZiAocGFnZXMgIT0gMCkKQEAgLTQ1OCw4ICs0NTYsNiBAQAogCiAJYnpl
cm8oJnAyLT5wX3N0YXJ0emVybywKIAkgICAgKHVuc2lnbmVkKSBSQU5HRU9G
KHN0cnVjdCBwcm9jLCBwX3N0YXJ0emVybywgcF9lbmR6ZXJvKSk7Ci0JYnpl
cm8oJmtlMi0+a2Vfc3RhcnR6ZXJvLAotCSAgICAodW5zaWduZWQpIFJBTkdF
T0Yoc3RydWN0IGtzZSwga2Vfc3RhcnR6ZXJvLCBrZV9lbmR6ZXJvKSk7CiAJ
Ynplcm8oJnRkMi0+dGRfc3RhcnR6ZXJvLAogCSAgICAodW5zaWduZWQpIFJB
TkdFT0Yoc3RydWN0IHRocmVhZCwgdGRfc3RhcnR6ZXJvLCB0ZF9lbmR6ZXJv
KSk7CiAJYnplcm8oJmtnMi0+a2dfc3RhcnR6ZXJvLApAQCAtNDc3LDExICs0
NzMsNiBAQAogCSAgICAodW5zaWduZWQpIFJBTkdFT0Yoc3RydWN0IGtzZWdy
cCwga2dfc3RhcnRjb3B5LCBrZ19lbmRjb3B5KSk7CiAjdW5kZWYgUkFOR0VP
RgogCi0JLyogU2V0IHVwIHRoZSB0aHJlYWQgYXMgYW4gYWN0aXZlIHRocmVh
ZCAoYXMgaWYgcnVubmFibGUpLiAqLwotCWtlMi0+a2Vfc3RhdGUgPSBLRVNf
VEhSRUFEOwotCWtlMi0+a2VfdGhyZWFkID0gdGQyOwotCXRkMi0+dGRfa3Nl
ID0ga2UyOwotCiAJLyoKIAkgKiBEdXBsaWNhdGUgc3ViLXN0cnVjdHVyZXMg
YXMgbmVlZGVkLgogCSAqIEluY3JlYXNlIHJlZmVyZW5jZSBjb3VudHMgb24g
c2hhcmVkIG9iamVjdHMuCkBAIC00OTYsNyArNDg3LDcgQEAKIAkgKiBBbGxv
dyB0aGUgc2NoZWR1bGVyIHRvIGFkanVzdCB0aGUgcHJpb3JpdHkgb2YgdGhl
IGNoaWxkIGFuZAogCSAqIHBhcmVudCB3aGlsZSB3ZSBob2xkIHRoZSBzY2hl
ZF9sb2NrLgogCSAqLwotCXNjaGVkX2ZvcmsocDEsIHAyKTsKKwlzY2hlZF9m
b3JrKHRkLCBwMik7CiAKIAltdHhfdW5sb2NrX3NwaW4oJnNjaGVkX2xvY2sp
OwogCXAyLT5wX3VjcmVkID0gY3Job2xkKHRkLT50ZF91Y3JlZCk7CkluZGV4
OiBzeXMva2Vybi9rZXJuX2lkbGUuYwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
ClJDUyBmaWxlOiAvcmVwb3MvcHJvamVjdHMvbWlycm9yZWQvZnJlZWJzZC9z
cmMvc3lzL2tlcm4va2Vybl9pZGxlLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9u
IDEuMjkKZGlmZiAtdSAtcjEuMjkga2Vybl9pZGxlLmMKLS0tIHN5cy9rZXJu
L2tlcm5faWRsZS5jCTIwMDIvMTAvMTIgMDU6MzI6MjMJMS4yOQorKysgc3lz
L2tlcm4va2Vybl9pZGxlLmMJMjAwMy8wNC8xNyAwNjozNDo1NQpAQCAtNjUs
NyArNjUsNyBAQAogCQlwLT5wX3N0YXRlID0gUFJTX05PUk1BTDsKIAkJdGQg
PSBGSVJTVF9USFJFQURfSU5fUFJPQyhwKTsKIAkJdGQtPnRkX3N0YXRlID0g
VERTX0NBTl9SVU47Ci0JCXRkLT50ZF9rc2UtPmtlX2ZsYWdzIHw9IEtFRl9J
RExFS1NFOyAKKwkJdGQtPnRkX2ZsYWdzIHw9IFRERl9JRExFVEQ7IAogI2lm
ZGVmIFNNUAogCX0KICNlbmRpZgpJbmRleDogc3lzL2tlcm4va2Vybl9pbnRy
LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3JlcG9zL3By
b2plY3RzL21pcnJvcmVkL2ZyZWVic2Qvc3JjL3N5cy9rZXJuL2tlcm5faW50
ci5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjkxCmRpZmYgLXUgLXIxLjkx
IGtlcm5faW50ci5jCi0tLSBzeXMva2Vybi9rZXJuX2ludHIuYwkyMDAzLzAz
LzA0IDIxOjAxOjQyCTEuOTEKKysrIHN5cy9rZXJuL2tlcm5faW50ci5jCTIw
MDMvMDQvMTcgMDY6MzQ6NTUKQEAgLTM5Niw3ICszOTYsNyBAQAogCQkJS0FT
U0VSVCgoVERfSVNfUlVOTklORyhjdGQpKSwKIAkJCSAgICAoIml0aHJlYWRf
c2NoZWR1bGU6IEJhZCBzdGF0ZSBmb3IgY3VydGhyZWFkLiIpKTsKIAkJCWN0
ZC0+dGRfcHJvYy0+cF9zdGF0cy0+cF9ydS5ydV9uaXZjc3crKzsKLQkJCWlm
IChjdGQtPnRkX2tzZS0+a2VfZmxhZ3MgJiBLRUZfSURMRUtTRSkKKwkJCWlm
IChjdGQtPnRkX2ZsYWdzICYgVERGX0lETEVURCkKIAkJCQljdGQtPnRkX3N0
YXRlID0gVERTX0NBTl9SVU47IC8qIFhYWEtTRSAqLwogCQkJbWlfc3dpdGNo
KCk7CiAJCX0gZWxzZSB7CkluZGV4OiBzeXMva2Vybi9rZXJuX2t0ci5jCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9yZXBvcy9wcm9qZWN0
cy9taXJyb3JlZC9mcmVlYnNkL3NyYy9zeXMva2Vybi9rZXJuX2t0ci5jLHYK
cmV0cmlldmluZyByZXZpc2lvbiAxLjM1CmRpZmYgLXUgLXIxLjM1IGtlcm5f
a3RyLmMKLS0tIHN5cy9rZXJuL2tlcm5fa3RyLmMJMjAwMy8wMy8xMSAxOTo1
NjoxNgkxLjM1CisrKyBzeXMva2Vybi9rZXJuX2t0ci5jCTIwMDMvMDQvMTcg
MDY6MzQ6NTUKQEAgLTE5NSw3ICsxOTUsNyBAQAogI2lmZGVmIEtUUl9BTFEK
IAlpZiAoa3RyX2FscV9lbmFibGVkICYmCiAJICAgIHRkLT50ZF9jcml0bmVz
dCA9PSAwICYmCi0JICAgICh0ZC0+dGRfa3NlLT5rZV9mbGFncyAmIEtFRl9J
RExFS1NFKSA9PSAwICYmCisJICAgICh0ZC0+dGRfZmxhZ3MgJiBUREZfSURM
RVREKSA9PSAwICYmCiAJICAgIHRkICE9IGFsZF90aHJlYWQpIHsKIAkJaWYg
KGt0cl9hbHFfbWF4ICYmIGt0cl9hbHFfY250ID4ga3RyX2FscV9tYXgpCiAJ
CQlnb3RvIGRvbmU7CkluZGV4OiBzeXMva2Vybi9rZXJuX3Byb2MuYwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvcmVwb3MvcHJvamVjdHMv
bWlycm9yZWQvZnJlZWJzZC9zcmMvc3lzL2tlcm4va2Vybl9wcm9jLmMsdgpy
ZXRyaWV2aW5nIHJldmlzaW9uIDEuMTc4CmRpZmYgLXUgLXIxLjE3OCBrZXJu
X3Byb2MuYwotLS0gc3lzL2tlcm4va2Vybl9wcm9jLmMJMjAwMy8wNC8xMCAx
NzozNTo0NAkxLjE3OAorKysgc3lzL2tlcm4va2Vybl9wcm9jLmMJMjAwMy8w
NC8xNyAwNjozNDo1NQpAQCAtMTQ4LDE4ICsxNDgsMTcgQEAKIAlzdHJ1Y3Qg
cHJvYyAqcDsKIAlzdHJ1Y3QgdGhyZWFkICp0ZDsKIAlzdHJ1Y3Qga3NlZ3Jw
ICprZzsKLQlzdHJ1Y3Qga3NlICprZTsKIAogCS8qIElOVkFSSUFOVFMgY2hl
Y2tzIGdvIGhlcmUgKi8KIAlwID0gKHN0cnVjdCBwcm9jICopbWVtOworCXRk
ID0gRklSU1RfVEhSRUFEX0lOX1BST0MocCk7CiAJS0FTU0VSVCgocC0+cF9u
dW10aHJlYWRzID09IDEpLAogCSAgICAoImJhZCBudW1iZXIgb2YgdGhyZWFk
cyBpbiBleGl0aW5nIHByb2Nlc3MiKSk7Ci0gICAgICAgIHRkID0gRklSU1Rf
VEhSRUFEX0lOX1BST0MocCk7CisjaWZkZWYgSU5WQVJJQU5UUwogCUtBU1NF
UlQoKHRkICE9IE5VTEwpLCAoInByb2NfZHRvcjogYmFkIHRocmVhZCBwb2lu
dGVyIikpOwogICAgICAgICBrZyA9IEZJUlNUX0tTRUdSUF9JTl9QUk9DKHAp
OwogCUtBU1NFUlQoKGtnICE9IE5VTEwpLCAoInByb2NfZHRvcjogYmFkIGtn
IHBvaW50ZXIiKSk7Ci0gICAgICAgIGtlID0gRklSU1RfS1NFX0lOX0tTRUdS
UChrZyk7Ci0JS0FTU0VSVCgoa2UgIT0gTlVMTCksICgicHJvY19kdG9yOiBi
YWQga2UgcG9pbnRlciIpKTsKKyNlbmRpZgogCiAJLyogRGlzcG9zZSBvZiBh
biBhbHRlcm5hdGUga3N0YWNrLCBpZiBpdCBleGlzdHMuCiAJICogWFhYIFdo
YXQgaWYgdGhlcmUgYXJlIG1vcmUgdGhhbiBvbmUgdGhyZWFkIGluIHRoZSBw
cm9jPwpAQCAtMTY4LDE0ICsxNjcsNiBAQAogCSAqLwogCWlmICgoKHAtPnBf
ZmxhZyAmIFBfS1RIUkVBRCkgIT0gMCkgJiYgKHRkLT50ZF9hbHRrc3RhY2sg
IT0gMCkpCiAJCXBtYXBfZGlzcG9zZV9hbHRrc3RhY2sodGQpOwotCi0JLyoK
LQkgKiBXZSB3YW50IHRvIG1ha2Ugc3VyZSB3ZSBrbm93IHRoZSBpbml0aWFs
IGxpbmthZ2VzLgotCSAqIHNvIGZvciBub3cgdGVhciB0aGVtIGRvd24gYW5k
IHJlbWFrZSB0aGVtLgotCSAqIFRoaXMgaXMgcHJvYmFibHkgdW4tbmVlZGVk
IGFzIHdlIGNhbiBwcm9iYWJseSByZWx5Ci0JICogb24gdGhlIHN0YXRlIGNv
bWluZyBpbiBoZXJlIGZyb20gd2FpdDQoKS4KLQkgKi8KLQlwcm9jX2xpbmt1
cChwLCBrZywga2UsIHRkKTsKIH0KIAogLyoKQEAgLTE4NywxNSArMTc4LDE0
IEBACiAJc3RydWN0IHByb2MgKnA7CiAJc3RydWN0IHRocmVhZCAqdGQ7CiAJ
c3RydWN0IGtzZWdycCAqa2c7Ci0Jc3RydWN0IGtzZSAqa2U7CiAKIAlwID0g
KHN0cnVjdCBwcm9jICopbWVtOwogCXAtPnBfc2NoZWQgPSAoc3RydWN0IHBf
c2NoZWQgKikmcFsxXTsKIAl2bV9wcm9jX25ldyhwKTsKIAl0ZCA9IHRocmVh
ZF9hbGxvYygpOwotCWtlID0ga3NlX2FsbG9jKCk7CiAJa2cgPSBrc2VncnBf
YWxsb2MoKTsKLQlwcm9jX2xpbmt1cChwLCBrZywga2UsIHRkKTsKKwlwcm9j
X2xpbmt1cChwLCBrZywgdGQpOworCXNjaGVkX25ld3Byb2MocCwga2csIHRk
KTsKIH0KIAogLyoKQEAgLTIwNyw3ICsxOTcsNiBAQAogCXN0cnVjdCBwcm9j
ICpwOwogCXN0cnVjdCB0aHJlYWQgKnRkOwogCXN0cnVjdCBrc2VncnAgKmtn
OwotCXN0cnVjdCBrc2UgKmtlOwogCiAJcCA9IChzdHJ1Y3QgcHJvYyAqKW1l
bTsKIAlLQVNTRVJUKChwLT5wX251bXRocmVhZHMgPT0gMSksCkBAIC0yMTYs
MTIgKzIwNSwxMCBAQAogCUtBU1NFUlQoKHRkICE9IE5VTEwpLCAoInByb2Nf
ZHRvcjogYmFkIHRocmVhZCBwb2ludGVyIikpOwogICAgICAgICBrZyA9IEZJ
UlNUX0tTRUdSUF9JTl9QUk9DKHApOwogCUtBU1NFUlQoKGtnICE9IE5VTEwp
LCAoInByb2NfZHRvcjogYmFkIGtnIHBvaW50ZXIiKSk7Ci0gICAgICAgIGtl
ID0gRklSU1RfS1NFX0lOX0tTRUdSUChrZyk7Ci0JS0FTU0VSVCgoa2UgIT0g
TlVMTCksICgicHJvY19kdG9yOiBiYWQga2UgcG9pbnRlciIpKTsKIAl2bV9w
cm9jX2Rpc3Bvc2UocCk7CisJc2NoZWRfZGVzdHJveXByb2MocCwga2csIHRk
KTsKIAl0aHJlYWRfZnJlZSh0ZCk7CiAJa3NlZ3JwX2ZyZWUoa2cpOwotCWtz
ZV9mcmVlKGtlKTsKIH0KIAogLyoKQEAgLTYxMSw3ICs1OTgsNiBAQAogewog
CXN0cnVjdCB0aHJlYWQgKnRkOwogCXN0cnVjdCB0aHJlYWQgKnRkMDsKLQlz
dHJ1Y3Qga3NlICprZTsKIAlzdHJ1Y3Qga3NlZ3JwICprZzsKIAlzdHJ1Y3Qg
dHR5ICp0cDsKIAlzdHJ1Y3Qgc2Vzc2lvbiAqc3A7CkBAIC03MTksOCArNzA1
LDYgQEAKIAkJLyogdnZ2IFhYWEtTRSAqLwogCQlpZiAoIShwLT5wX2ZsYWcg
JiBQX1RIUkVBREVEKSkgewogCQkJa2cgPSB0ZC0+dGRfa3NlZ3JwOwotCQkJ
a2UgPSB0ZC0+dGRfa3NlOwotCQkJS0FTU0VSVCgoa2UgIT0gTlVMTCksICgi
ZmlsbF9raW5mb19wcm9jOiBOdWxsIEtTRSIpKTsKIAkJCWJpbnRpbWUydGlt
ZXZhbCgmcC0+cF9ydW50aW1lLCAmdHYpOwogCQkJa3AtPmtpX3J1bnRpbWUg
PQogCQkJICAgIHR2LnR2X3NlYyAqICh1X2ludDY0X3QpMTAwMDAwMCArIHR2
LnR2X3VzZWM7CkBAIC03NDIsOSArNzI2LDggQEAKIAkJCWtwLT5raV9wY2Ig
PSB0ZC0+dGRfcGNiOwogCQkJa3AtPmtpX2tzdGFjayA9ICh2b2lkICopdGQt
PnRkX2tzdGFjazsKIAotCQkJLyogVGhpbmdzIGluIHRoZSBrc2UgKi8KLQkJ
CWtwLT5raV9ycWluZGV4ID0ga2UtPmtlX3JxaW5kZXg7Ci0JCQlrcC0+a2lf
cGN0Y3B1ID0gc2NoZWRfcGN0Y3B1KGtlKTsKKwkJCWtwLT5raV9ycWluZGV4
ID0gMDsgLyogY2FuJ3QgZ2V0IHRoaXMgbm93ICovCisJCQlrcC0+a2lfcGN0
Y3B1ID0gc2NoZWRfcGN0Y3B1KHRkKTsKIAkJfSBlbHNlIHsKIAkJCWtwLT5r
aV9vbmNwdSA9IC0xOwogCQkJa3AtPmtpX2xhc3RjcHUgPSAtMTsKSW5kZXg6
IHN5cy9rZXJuL2tlcm5fc3dpdGNoLmMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpSQ1MgZmlsZTogL3JlcG9zL3Byb2plY3RzL21pcnJvcmVkL2ZyZWVic2Qv
c3JjL3N5cy9rZXJuL2tlcm5fc3dpdGNoLmMsdgpyZXRyaWV2aW5nIHJldmlz
aW9uIDEuNTcKZGlmZiAtdSAtcjEuNTcga2Vybl9zd2l0Y2guYwotLS0gc3lz
L2tlcm4va2Vybl9zd2l0Y2guYwkyMDAzLzA0LzAyIDIzOjUzOjI5CTEuNTcK
KysrIHN5cy9rZXJuL2tlcm5fc3dpdGNoLmMJMjAwMy8wNC8xNyAwNjozNDo1
NQpAQCAtOTUsNiArOTUsNyBAQAogI2luY2x1ZGUgPHN5cy9rdHIuaD4KICNp
bmNsdWRlIDxzeXMvbG9jay5oPgogI2luY2x1ZGUgPHN5cy9tdXRleC5oPgor
I2luY2x1ZGUgPHN5cy9rc2V2YXIuaD4KICNpbmNsdWRlIDxzeXMvcHJvYy5o
PgogI2luY2x1ZGUgPHN5cy9xdWV1ZS5oPgogI2luY2x1ZGUgPHN5cy9zY2hl
ZC5oPgpJbmRleDogc3lzL2tlcm4va2Vybl90aHIuYwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09ClJDUyBmaWxlOiAvcmVwb3MvcHJvamVjdHMvbWlycm9yZWQv
ZnJlZWJzZC9zcmMvc3lzL2tlcm4va2Vybl90aHIuYyx2CnJldHJpZXZpbmcg
cmV2aXNpb24gMS41CmRpZmYgLXUgLXIxLjUga2Vybl90aHIuYwotLS0gc3lz
L2tlcm4va2Vybl90aHIuYwkyMDAzLzA0LzExIDE5OjI0OjM3CTEuNQorKysg
c3lzL2tlcm4va2Vybl90aHIuYwkyMDAzLzA0LzE3IDA2OjM0OjU1CkBAIC01
MiwxMyArNTIsMTEgQEAKIHsKIAlzdHJ1Y3Qga3NlZ3JwICprZzsKIAlzdHJ1
Y3QgdGhyZWFkICp0ZDsKLQlzdHJ1Y3Qga3NlICprZTsKIAlzdHJ1Y3QgcHJv
YyAqcDsKIAogCXRkID0gY3VydGhyZWFkOwogCXAgPSB0ZC0+dGRfcHJvYzsK
IAlrZyA9IHRkLT50ZF9rc2VncnA7Ci0Ja2UgPSB0ZC0+dGRfa3NlOwogCiAJ
bXR4X2Fzc2VydCgmc2NoZWRfbG9jaywgTUFfT1dORUQpOwogCVBST0NfTE9D
S19BU1NFUlQocCwgTUFfT1dORUQpOwpAQCAtODAsMTggKzc4LDkgQEAKIAog
CS8qIENsZWFuIHVwIGNwdSByZXNvdXJjZXMuICovCiAJY3B1X3RocmVhZF9l
eGl0KHRkKTsKKwl0aHJlYWRfdW5saW5rKHRkKTsKKwlzY2hlZF90aHJfZXhp
dCh0ZCk7CiAKLQkvKiBYWFggbWFrZSB0aHJlYWRfdW5saW5rKCkgKi8KLQlU
QUlMUV9SRU1PVkUoJnAtPnBfdGhyZWFkcywgdGQsIHRkX3BsaXN0KTsKLQlw
LT5wX251bXRocmVhZHMtLTsKLQlUQUlMUV9SRU1PVkUoJmtnLT5rZ190aHJl
YWRzLCB0ZCwgdGRfa2dsaXN0KTsKLQlrZy0+a2dfbnVtdGhyZWFkcy0tOwot
Ci0Ja2UtPmtlX3N0YXRlID0gS0VTX1VOUVVFVUVEOwotCWtlLT5rZV90aHJl
YWQgPSBOVUxMOwotCWtzZV91bmxpbmsoa2UpOwotCXNjaGVkX2V4aXRfa3Nl
KFRBSUxRX05FWFQoa2UsIGtlX2tnbGlzdCksIGtlKTsKLQogCS8qCiAJICog
SWYgd2Ugd2VyZSBzdG9wcGVkIHdoaWxlIHdhaXRpbmcgZm9yIGFsbCB0aHJl
YWRzIHRvIGV4aXQgYW5kIHRoaXMKIAkgKiBpcyB0aGUgbGFzdCB0aHJlYWQg
d2FrZXVwIHRoZSBleGl0aW5nIHRocmVhZC4KQEAgLTEwMSw3ICs5MCw2IEBA
CiAJCQl0aHJlYWRfdW5zdXNwZW5kX29uZShwLT5wX3NpbmdsZXRocmVhZCk7
CiAKIAlQUk9DX1VOTE9DSyhwKTsKLQl0ZC0+dGRfa3NlID0gTlVMTDsKIAl0
ZC0+dGRfc3RhdGUgPSBURFNfSU5BQ1RJVkU7CiAjaWYgMAogCXRkLT50ZF9w
cm9jID0gTlVMTDsKQEAgLTEyNyw3ICsxMTUsNiBAQAogdGhyX2NyZWF0ZShz
dHJ1Y3QgdGhyZWFkICp0ZCwgc3RydWN0IHRocl9jcmVhdGVfYXJncyAqdWFw
KQogICAgIC8qIHVjb250ZXh0X3QgKmN0eCwgdGhyX2lkX3QgKmlkLCBpbnQg
ZmxhZ3MgKi8KIHsKLQlzdHJ1Y3Qga3NlICprZTA7CiAJc3RydWN0IHRocmVh
ZCAqdGQwOwogCXVjb250ZXh0X3QgY3R4OwogCWludCBlcnJvcjsKQEAgLTE1
NywzMiArMTQ0LDI3IEBACiAJYmNvcHkodGQtPnRkX2ZyYW1lLCB0ZDAtPnRk
X2ZyYW1lLCBzaXplb2Yoc3RydWN0IHRyYXBmcmFtZSkpOwogCXRkMC0+dGRf
dWNyZWQgPSBjcmhvbGQodGQtPnRkX3VjcmVkKTsKIAotCS8qIEluaXRpYWxp
emUgb3VyIGtzZSBzdHJ1Y3R1cmUuICovCi0Ja2UwID0ga3NlX2FsbG9jKCk7
Ci0JYnplcm8oJmtlMC0+a2Vfc3RhcnR6ZXJvLAotCSAgICBSQU5HRU9GKHN0
cnVjdCBrc2UsIGtlX3N0YXJ0emVybywga2VfZW5kemVybykpOwogCiAJLyog
U2V0IHVwIG91ciBtYWNoaW5lIGNvbnRleHQuICovCiAJY3B1X3NldF91cGNh
bGwodGQwLCB0ZC0+dGRfcGNiKTsKIAllcnJvciA9IHNldF9tY29udGV4dCh0
ZDAsICZjdHgudWNfbWNvbnRleHQpOwogCWlmIChlcnJvciAhPSAwKSB7Ci0J
CWtzZV9mcmVlKGtlMCk7CiAJCXRocmVhZF9mcmVlKHRkMCk7CiAJCWdvdG8g
b3V0OwogCX0gCiAKLQkvKiBMaW5rIHRoZSB0aHJlYWQgYW5kIGtzZSBpbnRv
IHRoZSBrc2VncnAgYW5kIG1ha2UgaXQgcnVubmFibGUuICovCiAJbXR4X2xv
Y2tfc3Bpbigmc2NoZWRfbG9jayk7CiAKIAl0aHJlYWRfbGluayh0ZDAsIHRk
LT50ZF9rc2VncnApOwotCWtzZV9saW5rKGtlMCwgdGQtPnRkX2tzZWdycCk7
Ci0KLQkvKiBCaW5kIHRoaXMgdGhyZWFkIGFuZCBrc2UgdG9nZXRoZXIuICov
Ci0JdGQwLT50ZF9rc2UgPSBrZTA7Ci0Ja2UwLT5rZV90aHJlYWQgPSB0ZDA7
CiAKLQlzY2hlZF9mb3JrX2tzZSh0ZC0+dGRfa3NlLCBrZTApOwotCXNjaGVk
X2ZvcmtfdGhyZWFkKHRkLCB0ZDApOworCS8qIERvIHdoYXRldmVyIGlzIG5l
ZWRlZCBmb3IgdGhlIHNjaGVkdWxlciAqLworCWVycm9yID0gc2NoZWRfdGhy
ZWFkX2ZvcmsodGQsIHRkMCk7CisJaWYgKGVycm9yICE9IDApIHsKKwkJdGhy
ZWFkX3VubGluayh0ZCk7CisJCW10eF91bmxvY2tfc3Bpbigmc2NoZWRfbG9j
ayk7CisJCXRocmVhZF9mcmVlKHRkMCk7CisJCWdvdG8gb3V0OworCX0KIAog
CVREX1NFVF9DQU5fUlVOKHRkMCk7CiAJaWYgKCh1YXAtPmZsYWdzICYgVEhS
X1NVU1BFTkRFRCkgPT0gMCkKSW5kZXg6IHN5cy9rZXJuL2tlcm5fdGhyZWFk
LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3JlcG9zL3By
b2plY3RzL21pcnJvcmVkL2ZyZWVic2Qvc3JjL3N5cy9rZXJuL2tlcm5fdGhy
ZWFkLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTE0CmRpZmYgLXUgLXIx
LjExNCBrZXJuX3RocmVhZC5jCi0tLSBzeXMva2Vybi9rZXJuX3RocmVhZC5j
CTIwMDMvMDQvMTAgMTc6MzU6NDQJMS4xMTQKKysrIHN5cy9rZXJuL2tlcm5f
dGhyZWFkLmMJMjAwMy8wNC8xNyAwNjozNDo1NQpAQCAtMzQsNiArMzQsNyBA
QAogI2luY2x1ZGUgPHN5cy9sb2NrLmg+CiAjaW5jbHVkZSA8c3lzL21hbGxv
Yy5oPgogI2luY2x1ZGUgPHN5cy9tdXRleC5oPgorI2luY2x1ZGUgPHN5cy9r
c2V2YXIuaD4KICNpbmNsdWRlIDxzeXMvcHJvYy5oPgogI2luY2x1ZGUgPHN5
cy9zbXAuaD4KICNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CkBAIC02MSw3ICs2
Miw2IEBACiAgKiBLU0VHUlAgcmVsYXRlZCBzdG9yYWdlLgogICovCiBzdGF0
aWMgdW1hX3pvbmVfdCBrc2VncnBfem9uZTsKLXN0YXRpYyB1bWFfem9uZV90
IGtzZV96b25lOwogc3RhdGljIHVtYV96b25lX3QgdGhyZWFkX3pvbmU7CiBz
dGF0aWMgdW1hX3pvbmVfdCB1cGNhbGxfem9uZTsKIApAQCAtMjAzLDE4ICsy
MDMsNiBAQAogfQogCiAvKgotICogSW5pdGlhbGl6ZSB0eXBlLXN0YWJsZSBw
YXJ0cyBvZiBhIGtzZSAod2hlbiBuZXdseSBjcmVhdGVkKS4KLSAqLwotc3Rh
dGljIHZvaWQKLWtzZV9pbml0KHZvaWQgKm1lbSwgaW50IHNpemUpCi17Ci0J
c3RydWN0IGtzZQkqa2U7Ci0KLQlrZSA9IChzdHJ1Y3Qga3NlICopbWVtOwot
CWtlLT5rZV9zY2hlZCA9IChzdHJ1Y3Qga2Vfc2NoZWQgKikma2VbMV07Ci19
Ci0KLS8qCiAgKiBJbml0aWFsaXplIHR5cGUtc3RhYmxlIHBhcnRzIG9mIGEg
a3NlZ3JwICh3aGVuIG5ld2x5IGNyZWF0ZWQpLgogICovCiBzdGF0aWMgdm9p
ZApAQCAtMjI2LDQ0ICsyMTQsNiBAQAogCWtnLT5rZ19zY2hlZCA9IChzdHJ1
Y3Qga2dfc2NoZWQgKikma2dbMV07CiB9CiAKLS8qIAotICogS1NFIGlzIGxp
bmtlZCBpbnRvIGtzZSBncm91cC4KLSAqLwotdm9pZAota3NlX2xpbmsoc3Ry
dWN0IGtzZSAqa2UsIHN0cnVjdCBrc2VncnAgKmtnKQotewotCXN0cnVjdCBw
cm9jICpwID0ga2ctPmtnX3Byb2M7Ci0KLQlUQUlMUV9JTlNFUlRfSEVBRCgm
a2ctPmtnX2tzZXEsIGtlLCBrZV9rZ2xpc3QpOwotCWtnLT5rZ19rc2VzKys7
Ci0Ja2UtPmtlX3N0YXRlCT0gS0VTX1VOUVVFVUVEOwotCWtlLT5rZV9wcm9j
CT0gcDsKLQlrZS0+a2Vfa3NlZ3JwCT0ga2c7Ci0Ja2UtPmtlX3RocmVhZAk9
IE5VTEw7Ci0Ja2UtPmtlX29uY3B1CT0gTk9DUFU7Ci0Ja2UtPmtlX2ZsYWdz
CT0gMDsKLX0KLQotdm9pZAota3NlX3VubGluayhzdHJ1Y3Qga3NlICprZSkK
LXsKLQlzdHJ1Y3Qga3NlZ3JwICprZzsKLQotCW10eF9hc3NlcnQoJnNjaGVk
X2xvY2ssIE1BX09XTkVEKTsKLQlrZyA9IGtlLT5rZV9rc2VncnA7Ci0JVEFJ
TFFfUkVNT1ZFKCZrZy0+a2dfa3NlcSwga2UsIGtlX2tnbGlzdCk7Ci0JaWYg
KGtlLT5rZV9zdGF0ZSA9PSBLRVNfSURMRSkgewotCQlUQUlMUV9SRU1PVkUo
JmtnLT5rZ19pcSwga2UsIGtlX2tncmxpc3QpOwotCQlrZy0+a2dfaWRsZV9r
c2VzLS07Ci0JfQotCWlmICgtLWtnLT5rZ19rc2VzID09IDApCi0JCWtzZWdy
cF91bmxpbmsoa2cpOwotCS8qCi0JICogQWdncmVnYXRlIHN0YXRzIGZyb20g
dGhlIEtTRQotCSAqLwotCWtzZV9zdGFzaChrZSk7Ci19Ci0KIHZvaWQKIGtz
ZWdycF9saW5rKHN0cnVjdCBrc2VncnAgKmtnLCBzdHJ1Y3QgcHJvYyAqcCkK
IHsKQEAgLTM2NCw4ICszMTQsNyBAQAogICogbGluayB1cCBhbGwgdGhlIHN0
cnVjdHVyZXMgYW5kIGl0cyBpbml0aWFsIHRocmVhZHMgZXRjLgogICovCiB2
b2lkCi1wcm9jX2xpbmt1cChzdHJ1Y3QgcHJvYyAqcCwgc3RydWN0IGtzZWdy
cCAqa2csCi0JICAgIHN0cnVjdCBrc2UgKmtlLCBzdHJ1Y3QgdGhyZWFkICp0
ZCkKK3Byb2NfbGlua3VwKHN0cnVjdCBwcm9jICpwLCBzdHJ1Y3Qga3NlZ3Jw
ICprZywgc3RydWN0IHRocmVhZCAqdGQpCiB7CiAKIAlUQUlMUV9JTklUKCZw
LT5wX2tzZWdycHMpOwkgICAgIC8qIGFsbCBrc2VncnBzIGluIHByb2MgKi8K
QEAgLTM3NSw3ICszMjQsNiBAQAogCXAtPnBfbnVtdGhyZWFkcyA9IDA7CiAK
IAlrc2VncnBfbGluayhrZywgcCk7Ci0Ja3NlX2xpbmsoa2UsIGtnKTsKIAl0
aHJlYWRfbGluayh0ZCwga2cpOwogfQogCkBAIC04MDUsOSArNzUzLDYgQEAK
IAlrc2VncnBfem9uZSA9IHVtYV96Y3JlYXRlKCJLU0VHUlAiLCBzY2hlZF9z
aXplb2Zfa3NlZ3JwKCksCiAJICAgIE5VTEwsIE5VTEwsIGtzZWdycF9pbml0
LCBOVUxMLAogCSAgICBVTUFfQUxJR05fQ0FDSEUsIDApOwotCWtzZV96b25l
ID0gdW1hX3pjcmVhdGUoIktTRSIsIHNjaGVkX3NpemVvZl9rc2UoKSwKLQkg
ICAgTlVMTCwgTlVMTCwga3NlX2luaXQsIE5VTEwsCi0JICAgIFVNQV9BTElH
Tl9DQUNIRSwgMCk7CiAJdXBjYWxsX3pvbmUgPSB1bWFfemNyZWF0ZSgiVVBD
QUxMIiwgc2l6ZW9mKHN0cnVjdCBrc2VfdXBjYWxsKSwKIAkgICAgTlVMTCwg
TlVMTCwgTlVMTCwgTlVMTCwgVU1BX0FMSUdOX0NBQ0hFLCAwKTsKIH0KQEAg
LTkyNSwxNSArODcwLDYgQEAKIH0KIAogLyoKLSAqIEFsbG9jYXRlIGEga3Nl
LgotICovCi1zdHJ1Y3Qga3NlICoKLWtzZV9hbGxvYyh2b2lkKQotewotCXJl
dHVybiAodW1hX3phbGxvYyhrc2Vfem9uZSwgTV9XQUlUT0spKTsKLX0KLQot
LyoKICAqIEFsbG9jYXRlIGEgdGhyZWFkLgogICovCiBzdHJ1Y3QgdGhyZWFk
ICoKQEAgLTk1MywxNSArODg5LDYgQEAKIH0KIAogLyoKLSAqIERlYWxsb2Nh
dGUgYSBrc2UuCi0gKi8KLXZvaWQKLWtzZV9mcmVlKHN0cnVjdCBrc2UgKnRk
KQotewotCXVtYV96ZnJlZShrc2Vfem9uZSwgdGQpOwotfQotCi0vKgogICog
RGVhbGxvY2F0ZSBhIHRocmVhZC4KICAqLwogdm9pZApAQCAtMTIwMywxMCAr
MTEzMCw3IEBACiAJCSAqIHdvdWxkIG9ubHkgYmUgY2FsbGVkIGZyb20gaGVy
ZSAoSSB0aGluaykgc28gaXQgd291bGQKIAkJICogYmUgYSB3YXN0ZS4gKG1p
Z2h0IGJlIHVzZWZ1bCBmb3IgcHJvY19maW5pKCkgYXMgd2VsbC4pCiAgCQkg
Ki8KLQkJVEFJTFFfUkVNT1ZFKCZwLT5wX3RocmVhZHMsIHRkLCB0ZF9wbGlz
dCk7Ci0JCXAtPnBfbnVtdGhyZWFkcy0tOwotCQlUQUlMUV9SRU1PVkUoJmtn
LT5rZ190aHJlYWRzLCB0ZCwgdGRfa2dsaXN0KTsKLQkJa2ctPmtnX251bXRo
cmVhZHMtLTsKKwkJdGhyZWFkX3VubGluayh0ZCk7CiAJCWlmIChwLT5wX21h
eHRocndhaXRzKQogCQkJd2FrZXVwKCZwLT5wX251bXRocmVhZHMpOwogCQkv
KgpAQCAtMTIzMSwxNSArMTE1NSwxMSBAQAogCQlpZiAodGQtPnRkX3VwY2Fs
bCkKIAkJCXVwY2FsbF9yZW1vdmUodGQpOwogCQotCQlrZS0+a2Vfc3RhdGUg
PSBLRVNfVU5RVUVVRUQ7Ci0JCWtlLT5rZV90aHJlYWQgPSBOVUxMOwogCQkv
KiAKLQkJICogRGVjaWRlIHdoYXQgdG8gZG8gd2l0aCB0aGUgS1NFIGF0dGFj
aGVkIHRvIHRoaXMgdGhyZWFkLgorCQkgKiBMZXQgdGhlIHNjaGVkdWxlciBk
byBhbnl0aGluZyBpdCBuZWVkcyB0byBjbGVhbiB1cC4KIAkJICovCi0JCWlm
IChrZS0+a2VfZmxhZ3MgJiBLRUZfRVhJVCkKLQkJCWtzZV91bmxpbmsoa2Up
OwotCQllbHNlCi0JCQlrc2VfcmVhc3NpZ24oa2UpOworCQlzY2hlZF90ZGV4
aXQodGQpOworCiAJCVBST0NfVU5MT0NLKHApOwogCQl0ZC0+dGRfa3NlCT0g
TlVMTDsKIAkJdGQtPnRkX3N0YXRlCT0gVERTX0lOQUNUSVZFOwpAQCAtMTI0
Nyw3ICsxMTY3LDYgQEAKIAkJdGQtPnRkX3Byb2MJPSBOVUxMOwogI2VuZGlm
CiAJCXRkLT50ZF9rc2VncnAJPSBOVUxMOwotCQl0ZC0+dGRfbGFzdF9rc2UJ
PSBOVUxMOwogCQlQQ1BVX1NFVChkZWFkdGhyZWFkLCB0ZCk7CiAJfSBlbHNl
IHsKIAkJUFJPQ19VTkxPQ0socCk7CkBAIC0xMzExLDYgKzEyMzAsMTggQEAK
IAlUQUlMUV9JTlNFUlRfSEVBRCgma2ctPmtnX3RocmVhZHMsIHRkLCB0ZF9r
Z2xpc3QpOwogCXAtPnBfbnVtdGhyZWFkcysrOwogCWtnLT5rZ19udW10aHJl
YWRzKys7Cit9CisKK3ZvaWQKK3RocmVhZF91bmxpbmsoc3RydWN0IHRocmVh
ZCAqdGQpCit7CisJCXN0cnVjdCBwcm9jICpwID0gdGQtPnRkX3Byb2M7CisJ
CXN0cnVjdCBrc2VncnAgKmtnID0gdGQtPnRkX2tzZWdycDsKKworCQlUQUlM
UV9SRU1PVkUoJnAtPnBfdGhyZWFkcywgdGQsIHRkX3BsaXN0KTsKKwkJcC0+
cF9udW10aHJlYWRzLS07CisJCVRBSUxRX1JFTU9WRSgma2ctPmtnX3RocmVh
ZHMsIHRkLCB0ZF9rZ2xpc3QpOworCQlrZy0+a2dfbnVtdGhyZWFkcy0tOwog
fQogCiAvKgpJbmRleDogc3lzL2tlcm4vc2NoZWRfNGJzZC5jCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9yZXBvcy9wcm9qZWN0cy9taXJy
b3JlZC9mcmVlYnNkL3NyYy9zeXMva2Vybi9zY2hlZF80YnNkLmMsdgpyZXRy
aWV2aW5nIHJldmlzaW9uIDEuMTUKZGlmZiAtdSAtcjEuMTUgc2NoZWRfNGJz
ZC5jCi0tLSBzeXMva2Vybi9zY2hlZF80YnNkLmMJMjAwMy8wNC8xMSAwMzoz
OTo0OAkxLjE1CisrKyBzeXMva2Vybi9zY2hlZF80YnNkLmMJMjAwMy8wNC8x
NyAwNjozNDo1NQpAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgPHN5cy9r
dHIuaD4KICNpbmNsdWRlIDxzeXMvbG9jay5oPgogI2luY2x1ZGUgPHN5cy9t
dXRleC5oPgorI2luY2x1ZGUgPHN5cy9rc2V2YXIuaD4KICNpbmNsdWRlIDxz
eXMvcHJvYy5oPgogI2luY2x1ZGUgPHN5cy9yZXNvdXJjZXZhci5oPgogI2lu
Y2x1ZGUgPHN5cy9zY2hlZC5oPgpAQCAtNDM4LDEzICs0MzksMTMgQEAKICAq
IHJ1biBtdWNoIHJlY2VudGx5LCBhbmQgdG8gcm91bmQtcm9iaW4gYW1vbmcg
b3RoZXIgcHJvY2Vzc2VzLgogICovCiB2b2lkCi1zY2hlZF9jbG9jayhzdHJ1
Y3Qga3NlICprZSkKK3NjaGVkX2Nsb2NrKHN0cnVjdCB0aHJlYWQgKnRkKQog
ewogCXN0cnVjdCBrc2VncnAgKmtnOwotCXN0cnVjdCB0aHJlYWQgKnRkOwor
CXN0cnVjdCBrc2UgKmtlOwogCi0Ja2cgPSBrZS0+a2Vfa3NlZ3JwOwotCXRk
ID0ga2UtPmtlX3RocmVhZDsKKwlrZyA9IHRkLT50ZF9rc2VncnA7CisJa2Ug
PSB0ZC0+dGRfa3NlOwogCiAJa2UtPmtlX3NjaGVkLT5za2VfY3B0aWNrcysr
OwogCWtnLT5rZ19lc3RjcHUgPSBFU1RDUFVMSU0oa2ctPmtnX2VzdGNwdSAr
IDEpOwpAQCAtNDg3LDMxICs0ODgsNiBAQAogfQogCiB2b2lkCi1zY2hlZF9m
b3JrKHN0cnVjdCBwcm9jICpwLCBzdHJ1Y3QgcHJvYyAqcDEpCi17Ci0Jc2No
ZWRfZm9ya19rc2UoRklSU1RfS1NFX0lOX1BST0MocCksIEZJUlNUX0tTRV9J
Tl9QUk9DKHAxKSk7Ci0Jc2NoZWRfZm9ya19rc2VncnAoRklSU1RfS1NFR1JQ
X0lOX1BST0MocCksIEZJUlNUX0tTRUdSUF9JTl9QUk9DKHAxKSk7Ci0Jc2No
ZWRfZm9ya190aHJlYWQoRklSU1RfVEhSRUFEX0lOX1BST0MocCksIEZJUlNU
X1RIUkVBRF9JTl9QUk9DKHAxKSk7Ci19Ci0KLXZvaWQKLXNjaGVkX2Zvcmtf
a3NlKHN0cnVjdCBrc2UgKmtlLCBzdHJ1Y3Qga3NlICpjaGlsZCkKLXsKLQlj
aGlsZC0+a2Vfc2NoZWQtPnNrZV9jcHRpY2tzID0gMDsKLX0KLQotdm9pZAot
c2NoZWRfZm9ya19rc2VncnAoc3RydWN0IGtzZWdycCAqa2csIHN0cnVjdCBr
c2VncnAgKmNoaWxkKQotewotCWNoaWxkLT5rZ19lc3RjcHUgPSBrZy0+a2df
ZXN0Y3B1OwotfQotCi12b2lkCi1zY2hlZF9mb3JrX3RocmVhZChzdHJ1Y3Qg
dGhyZWFkICp0ZCwgc3RydWN0IHRocmVhZCAqY2hpbGQpCi17Ci19Ci0KLXZv
aWQKIHNjaGVkX25pY2Uoc3RydWN0IGtzZWdycCAqa2csIGludCBuaWNlKQog
ewogCWtnLT5rZ19uaWNlID0gbmljZTsKQEAgLTY5NSw3ICs2NzEsMTMgQEAK
IH0KIAogZml4cHRfdAotc2NoZWRfcGN0Y3B1KHN0cnVjdCBrc2UgKmtlKQor
c2NoZWRfcGN0Y3B1KHN0cnVjdCB0aHJlYWQgKnRkKQogewotCXJldHVybiAo
a2UtPmtlX3BjdGNwdSk7CisJc3RydWN0IGtzZSAqa2U7CisKKwlrZSA9IHRk
LT50ZF9rc2U7CisJaWYgKGtlKQorCQlyZXR1cm4gKGtlLT5rZV9wY3RjcHUp
OworCWVsc2UKKwkJcmV0dXJuICgoZml4cHRfdCkwKTsKIH0KSW5kZXg6IHN5
cy9rZXJuL3NjaGVkX3VsZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT
IGZpbGU6IC9yZXBvcy9wcm9qZWN0cy9taXJyb3JlZC9mcmVlYnNkL3NyYy9z
eXMva2Vybi9zY2hlZF91bGUuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4y
OApkaWZmIC11IC1yMS4yOCBzY2hlZF91bGUuYwotLS0gc3lzL2tlcm4vc2No
ZWRfdWxlLmMJMjAwMy8wNC8xMiAyMjozMzoyNAkxLjI4CisrKyBzeXMva2Vy
bi9zY2hlZF91bGUuYwkyMDAzLzA0LzE3IDA2OjM0OjU1CkBAIC04NTUsMTEg
Kzg1NSwxMSBAQAogfQogCiB2b2lkCi1zY2hlZF9jbG9jayhzdHJ1Y3Qga3Nl
ICprZSkKK3NjaGVkX2Nsb2NrKHN0cnVjdCB0aHJlYWQgKnRkKQogewogCXN0
cnVjdCBrc2VxICprc2VxOwogCXN0cnVjdCBrc2VncnAgKmtnOwotCXN0cnVj
dCB0aHJlYWQgKnRkOworCXN0cnVjdCBrc2UgKmtlCiAjaWYgMAogCXN0cnVj
dCBrc2UgKm5rZTsKICNlbmRpZgpAQCAtODgwLDggKzg4MCw4IEBACiAJCQl0
aWNraW5jciA9IDE7CiAJfQogCi0JdGQgPSBrZS0+a2VfdGhyZWFkOwotCWtn
ID0ga2UtPmtlX2tzZWdycDsKKwlrZSA9IHRkLT50ZF9rc2U7CisJa2cgPSB0
ZC0+dGRfa3NlZ3JwOwogCiAJbXR4X2Fzc2VydCgmc2NoZWRfbG9jaywgTUFf
T1dORUQpOwogCUtBU1NFUlQoKHRkICE9IE5VTEwpLCAoInNjaGVkY2xvY2s6
IG51bGwgdGhyZWFkIHBvaW50ZXIiKSk7CkBAIC04OTQsNyArODk0LDcgQEAK
IAlpZiAoa2UtPmtlX2Z0aWNrICsgU0NIRURfQ1BVX1RJQ0tTICsgaHogPCBr
ZS0+a2VfbHRpY2spCiAJCXNjaGVkX3BjdGNwdV91cGRhdGUoa2UpOwogCi0J
aWYgKHRkLT50ZF9rc2UtPmtlX2ZsYWdzICYgS0VGX0lETEVLU0UpCisJaWYg
KHRkLT50ZF9mbGFncyAmIFREX0lETEVURCkKIAkJcmV0dXJuOwogCiAJQ1RS
NChLVFJfVUxFLCAiVGljayBrc2UgJXAgKHNsaWNlOiAlZCwgc2xwdGltZTog
JWQsIHJ1bnRpbWU6ICVkKSIsCkluZGV4OiBzeXMva2Vybi9zdWJyX3RyYXAu
Ywo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvcmVwb3MvcHJv
amVjdHMvbWlycm9yZWQvZnJlZWJzZC9zcmMvc3lzL2tlcm4vc3Vicl90cmFw
LmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjUwCmRpZmYgLXUgLXIxLjI1
MCBzdWJyX3RyYXAuYwotLS0gc3lzL2tlcm4vc3Vicl90cmFwLmMJMjAwMy8w
My8zMSAyMjo0OToxNgkxLjI1MAorKysgc3lzL2tlcm4vc3Vicl90cmFwLmMJ
MjAwMy8wNC8xNyAwNjozNDo1NwpAQCAtMTM5LDcgKzEzOSw2IEBACiB7CiAJ
c3RydWN0IHRocmVhZCAqdGQ7CiAJc3RydWN0IHByb2MgKnA7Ci0Jc3RydWN0
IGtzZSAqa2U7CiAJc3RydWN0IGtzZWdycCAqa2c7CiAJc3RydWN0IHJsaW1p
dCAqcmxpbTsKIAl1X2ludCBwcnRpY2tzLCBzdGlja3M7CkBAIC0xNzAsNyAr
MTY5LDYgQEAKIAkgKiBhc3QoKSB3aWxsIGJlIGNhbGxlZCBhZ2Fpbi4KIAkg
Ki8KIAltdHhfbG9ja19zcGluKCZzY2hlZF9sb2NrKTsKLQlrZSA9IHRkLT50
ZF9rc2U7CiAJc3RpY2tzID0gdGQtPnRkX3N0aWNrczsKIAlmbGFncyA9IHRk
LT50ZF9mbGFnczsKIAlzZmxhZyA9IHAtPnBfc2ZsYWc7CkluZGV4OiBzeXMv
c3lzL3Byb2MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAv
cmVwb3MvcHJvamVjdHMvbWlycm9yZWQvZnJlZWJzZC9zcmMvc3lzL3N5cy9w
cm9jLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMzEzCmRpZmYgLXUgLXIx
LjMxMyBwcm9jLmgKLS0tIHN5cy9zeXMvcHJvYy5oCTIwMDMvMDQvMTMgMjE6
Mjk6MTEJMS4zMTMKKysrIHN5cy9zeXMvcHJvYy5oCTIwMDMvMDQvMTcgMDY6
MzU6MDEKQEAgLTIwMCwyMCArMjAwLDYgQEAKIHN0cnVjdCB0aHJlYWQ7CiAK
IC8qCi0gKiBUaGUgc2Vjb25kIHN0cnVjdHVyZSBpcyB0aGUgS2VybmVsIFNj
aGVkdWxhYmxlIEVudGl0eS4gKEtTRSkKLSAqIEl0IHJlcHJlc2VudHMgdGhl
IGFiaWxpdHkgdG8gdGFrZSBhIHNsb3QgaW4gdGhlIHNjaGVkdWxlciBxdWV1
ZS4KLSAqIEFzIGxvbmcgYXMgdGhpcyBpcyBzY2hlZHVsZWQsIGl0IGNvdWxk
IGNvbnRpbnVlIHRvIHJ1biBhbnkgdGhyZWFkcyB0aGF0Ci0gKiBhcmUgYXNz
aWduZWQgdG8gdGhlIEtTRUdSUCAoc2VlIGxhdGVyKSB1bnRpbCBlaXRoZXIg
aXQgcnVucyBvdXQKLSAqIG9mIHJ1bm5hYmxlIHRocmVhZHMgb2YgaGlnaCBl
bm91Z2ggcHJpb3JpdHksIG9yIENQVS4KLSAqIEl0IHJ1bnMgb24gb25lIENQ
VSBhbmQgaXMgYXNzaWduZWQgYSBxdWFudHVtIG9mIHRpbWUuIFdoZW4gYSB0
aHJlYWQgaXMKLSAqIGJsb2NrZWQsIFRoZSBLU0UgY29udGludWVzIHRvIHJ1
biBhbmQgd2lsbCBzZWFyY2ggZm9yIGFub3RoZXIgdGhyZWFkCi0gKiBpbiBh
IHJ1bm5hYmxlIHN0YXRlIGFtb25nc3QgdGhvc2UgaXQgaGFzLiBJdCBNYXkg
ZGVjaWRlIHRvIHJldHVybiB0byB1c2VyCi0gKiBtb2RlIHdpdGggYSBuZXcg
J2VtcHR5JyB0aHJlYWQgaWYgdGhlcmUgYXJlIG5vIHJ1bm5hYmxlIHRocmVh
ZHMuCi0gKiBUaHJlYWRzIGFyZSB0ZW1wb3JhcmlseSBhc3NvY2lhdGVkIHdp
dGggYSBLU0UgZm9yIHNjaGVkdWxpbmcgcmVhc29ucy4KLSAqLwotc3RydWN0
IGtzZTsKLQotLyoKICAqIFRoZSBLU0VHUlAgaXMgYWxsb2NhdGVkIHJlc291
cmNlcyBhY3Jvc3MgYSBudW1iZXIgb2YgQ1BVcy4KICAqIChJbmNsdWRpbmcg
YSBudW1iZXIgb2YgQ1BVeFFVQU5UQS4gSXQgcGFyY2VscyB0aGVzZSBRVUFO
VEEgdXAgYW1vbmcKICAqIGl0cyBLU0VzLCBlYWNoIG9mIHdoaWNoIHNob3Vs
ZCBiZSBydW5uaW5nIGluIGEgZGlmZmVyZW50IENQVS4KQEAgLTIzMywyNSAr
MjE5LDEzIEBACiAgKiBmb3JrZWQgcHJvY2VzcyBjbHVzdGVyIGJ5IHNwYXdu
aW5nIHNldmVyYWwgS1NFR1JQcy4KICAqLwogc3RydWN0IHByb2M7Ci0KLS8q
KioqKioqKioqKioqKioKLSAqIEluIHBpY3R1cmVzOgotIFdpdGggYSBzaW5n
bGUgcnVuIHF1ZXVlIHVzZWQgYnkgYWxsIHByb2Nlc3NvcnM6Ci0KLSBSVU5R
OiAtLS0+S1NFLS0tS1NFLS0uLi4gICAgICAgICAgICAgICBTTEVFUFE6W10t
LS1USFJFQUQtLS1USFJFQUQtLS1USFJFQUQKLQkgICB8ICAgLyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbXS0tLVRIUkVBRAotCSAgIEtTRUct
LS1USFJFQUQtLVRIUkVBRC0tVEhSRUFEICAgICAgIFtdCi0JCQkJCSAgICAg
ICBbXS0tLVRIUkVBRC0tLVRIUkVBRAotCi0gIChwcm9jZXNzb3JzIHJ1biBU
SFJFQURzIGZyb20gdGhlIEtTRUcgdW50aWwgdGhleSBhcmUgZXhoYXVzdGVk
IG9yCi0gIHRoZSBLU0VHIGV4aGF1c3RzIGl0cyBxdWFudHVtKQotCi1XaXRo
IFBFUi1DUFUgcnVuIHF1ZXVlczoKLUtTRXMgb24gdGhlIHNlcGFyYXRlIHJ1
biBxdWV1ZXMgZGlyZWN0bHkKLVRoZXkgd291bGQgYmUgZ2l2ZW4gcHJpb3Jp
dGllcyBjYWxjdWxhdGVkIGZyb20gdGhlIEtTRUcuCiAKLSAqCi0gKioqKioq
KioqKioqKioqKiovCitzdHJ1Y3QgZHVtbXkxIAoreworfTsKKyNpZm5kZWYg
X1NZU19LU0VWQVJfSF8KKyNkZWZpbmUgS1NFREVGIGR1bW15MQorI2VuZGlm
CiAKIC8qCiAgKiBLZXJuZWwgcnVubmFibGUgY29udGV4dCAodGhyZWFkKS4K
QEAgLTI3OSw4ICsyNTMsOCBAQAogI2RlZmluZQl0ZF9zdGFydHplcm8gdGRf
ZmxhZ3MKIAlpbnQJCXRkX2ZsYWdzOwkvKiAoaikgVERGXyogZmxhZ3MuICov
CiAJaW50CQl0ZF9pbmhpYml0b3JzOwkvKiAoaikgV2h5IGNhbiBub3QgcnVu
ICovCi0Jc3RydWN0IGtzZQkqdGRfbGFzdF9rc2U7CS8qIChqKSBQcmV2aW91
cyB2YWx1ZSBvZiB0ZF9rc2UgKi8KLQlzdHJ1Y3Qga3NlCSp0ZF9rc2U7CS8q
IChqKSBDdXJyZW50IEtTRSBpZiBydW5uaW5nLiAqLworCXN0cnVjdCBLU0VE
RUYJKnRkX2xhc3Rfa3NlOwkvKiAoaikgUHJldmlvdXMgdmFsdWUgb2YgdGRf
a3NlICovCisJc3RydWN0IEtTRURFRgkqdGRfa3NlOwkvKiAoaikgQ3VycmVu
dCBLU0UgaWYgcnVubmluZy4gKi8KIAlpbnQJCXRkX2R1cGZkOwkvKiAoaykg
UmV0IHZhbHVlIGZyb20gZmRvcGVuLiBYWFggKi8KIAl2b2lkCQkqdGRfd2No
YW47CS8qIChqKSBTbGVlcCBhZGRyZXNzLiAqLwogCWNvbnN0IGNoYXIJKnRk
X3dtZXNnOwkvKiAoaikgUmVhc29uIGZvciBzbGVlcC4gKi8KQEAgLTM0OSw2
ICszMjMsNyBAQAogI2RlZmluZQlUREZfQ0FOX1VOQklORAkweDAwMDAwNCAv
KiBPbmx5IHRlbXBvcmFyaWx5IGJvdW5kLiAqLwogI2RlZmluZQlUREZfU0lO
VFIJMHgwMDAwMDggLyogU2xlZXAgaXMgaW50ZXJydXB0aWJsZS4gKi8KICNk
ZWZpbmUJVERGX1RJTUVPVVQJMHgwMDAwMTAgLyogVGltaW5nIG91dCBkdXJp
bmcgc2xlZXAuICovCisjZGVmaW5lCVRERl9JRExFVEQJMHgwMDAwNDAgLyog
VGhpcyBpcyBhbiBpZGxlIHRocmVhZCAqLwogI2RlZmluZQlUREZfU0VMRUNU
CTB4MDAwMDQwIC8qIFNlbGVjdGluZzsgd2FrZXVwL3dhaXRpbmcgZGFuZ2Vy
LiAqLwogI2RlZmluZQlUREZfQ1ZXQUlUUQkweDAwMDA4MCAvKiBUaHJlYWQg
aXMgb24gYSBjdl93YWl0cSAobm90IHNscHEpLiAqLwogI2RlZmluZQlUREZf
VVBDQUxMSU5HCTB4MDAwMTAwIC8qIFRoaXMgdGhyZWFkIGlzIGRvaW5nIGFu
IHVwY2FsbC4gKi8KQEAgLTQxOCw0MyArMzkzLDYgQEAKIH0gd2hpbGUgKDAp
CiAKIC8qCi0gKiBUaGUgc2NoZWR1bGFibGUgZW50aXR5IHRoYXQgY2FuIGJl
IGdpdmVuIGEgY29udGV4dCB0byBydW4uCi0gKiBBIHByb2Nlc3MgbWF5IGhh
dmUgc2V2ZXJhbCBvZiB0aGVzZS4gUHJvYmFibHkgb25lIHBlciBwcm9jZXNz
b3IKLSAqIGJ1dCBwb3NpYmx5IGEgZmV3IG1vcmUuIEluIHRoaXMgdW5pdmVy
c2UgdGhleSBhcmUgZ3JvdXBlZAotICogd2l0aCBhIEtTRUcgdGhhdCBjb250
YWlucyB0aGUgcHJpb3JpdHkgYW5kIG5pY2VuZXNzCi0gKiBmb3IgdGhlIGdy
b3VwLgotICovCi1zdHJ1Y3Qga3NlIHsKLQlzdHJ1Y3QgcHJvYwkqa2VfcHJv
YzsJLyogQXNzb2NpYXRlZCBwcm9jZXNzLiAqLwotCXN0cnVjdCBrc2VncnAJ
KmtlX2tzZWdycDsJLyogQXNzb2NpYXRlZCBLU0VHLiAqLwotCVRBSUxRX0VO
VFJZKGtzZSkga2Vfa2dsaXN0OwkvKiBRdWV1ZSBvZiBhbGwgS1NFcyBpbiBr
ZV9rc2VncnAuICovCi0JVEFJTFFfRU5UUlkoa3NlKSBrZV9rZ3JsaXN0Owkv
KiBRdWV1ZSBvZiBhbGwgS1NFcyBpbiB0aGlzIHN0YXRlLiAqLwotCVRBSUxR
X0VOVFJZKGtzZSkga2VfcHJvY3E7CS8qIChqKSBSdW4gcXVldWUuICovCi0K
LSNkZWZpbmUJa2Vfc3RhcnR6ZXJvIGtlX2ZsYWdzCi0JaW50CQlrZV9mbGFn
czsJLyogKGopIEtFRl8qIGZsYWdzLiAqLwotCXN0cnVjdCB0aHJlYWQJKmtl
X3RocmVhZDsJLyogQWN0aXZlIGFzc29jaWF0ZWQgdGhyZWFkLiAqLwotCWZp
eHB0X3QJCWtlX3BjdGNwdTsgICAgIC8qIChqKSAlY3B1IGR1cmluZyBwX3N3
dGltZS4gKi8KLQl1X2NoYXIJCWtlX29uY3B1OwkvKiAoaikgV2hpY2ggY3B1
IHdlIGFyZSBvbi4gKi8KLQljaGFyCQlrZV9ycWluZGV4OwkvKiAoaikgUnVu
IHF1ZXVlIGluZGV4LiAqLwotCWVudW0gewotCQlLRVNfVU5VU0VEID0gMHgw
LAotCQlLRVNfSURMRSwKLQkJS0VTX09OUlVOUSwKLQkJS0VTX1VOUVVFVUVE
LAkJLyogaW4gdHJhbnNpdCAqLwotCQlLRVNfVEhSRUFECQkvKiBzbGF2ZWQg
dG8gdGhyZWFkIHN0YXRlICovCi0JfSBrZV9zdGF0ZTsJCQkvKiAoaikgUyog
cHJvY2VzcyBzdGF0dXMuICovCi0jZGVmaW5lCWtlX2VuZHplcm8ga2VfZHVt
bXkKLQl1X2NoYXIJCWtlX2R1bW15OwotCXN0cnVjdCBrZV9zY2hlZAkqa2Vf
c2NoZWQ7CS8qIFNjaGVkdWxlciBzcGVjaWZpYyBkYXRhICovCi19OwotCi0v
KiBmbGFncyBrZXB0IGluIGtlX2ZsYWdzICovCi0jZGVmaW5lCUtFRl9JRExF
S1NFCTB4MDAwMDQJLyogQSAnUGVyIENQVSBpZGxlIHByb2Nlc3MnLi4gaGFz
IG9uZSB0aHJlYWQgKi8KLSNkZWZpbmUJS0VGX0RJRFJVTgkweDAyMDAwCS8q
IEtTRSBhY3R1YWxseSByYW4uICovCi0jZGVmaW5lCUtFRl9FWElUCTB4MDQw
MDAJLyogS1NFIGlzIGJlaW5nIGtpbGxlZC4gKi8KLQotLyoKICAqIFRoZSB1
cGNhbGwgbWFuYWdlbWVudCBzdHJ1Y3R1cmUuCiAgKiBUaGUgdXBjYWxsIGlz
IHVzZWQgd2hlbiByZXR1cm5pbmcgdG8gdXNlcmxhbmQuICBJZiBhIHRocmVh
ZCBkb2VzIG5vdCBoYXZlCiAgKiBhbiB1cGNhbGwgb24gcmV0dXJuIHRvIHVz
ZXJsYW5kIHRoZSB0aHJlYWQgZXhwb3J0cyBpdHMgY29udGV4dCBhbmQgZXhp
dHMuCkBAIC00NzksOCArNDE3LDggQEAKIHN0cnVjdCBrc2VncnAgewogCXN0
cnVjdCBwcm9jCSprZ19wcm9jOwkvKiBQcm9jZXNzIHRoYXQgY29udGFpbnMg
dGhpcyBLU0VHLiAqLwogCVRBSUxRX0VOVFJZKGtzZWdycCkga2dfa3NlZ3Jw
OwkvKiBRdWV1ZSBvZiBLU0VHcyBpbiBrZ19wcm9jLiAqLwotCVRBSUxRX0hF
QUQoLCBrc2UpIGtnX2tzZXE7CS8qIChrZV9rZ2xpc3QpIEFsbCBLU0VzLiAq
LwotCVRBSUxRX0hFQUQoLCBrc2UpIGtnX2lxOwkvKiAoa2Vfa2dybGlzdCkg
QWxsIGlkbGUgS1NFcy4gKi8KKwlUQUlMUV9IRUFEKCwgS1NFREVGKSBrZ19r
c2VxOwkvKiAoa2Vfa2dsaXN0KSBBbGwgS1NFcy4gKi8KKwlUQUlMUV9IRUFE
KCwgS1NFREVGKSBrZ19pcTsJLyogKGtlX2tncmxpc3QpIEFsbCBpZGxlIEtT
RXMuICovCiAJVEFJTFFfSEVBRCgsIHRocmVhZCkga2dfdGhyZWFkczsvKiAo
dGRfa2dsaXN0KSBBbGwgdGhyZWFkcy4gKi8KIAlUQUlMUV9IRUFEKCwgdGhy
ZWFkKSBrZ19ydW5xOwkvKiAodGRfcnVucSkgd2FpdGluZyBSVU5OQUJMRSB0
aHJlYWRzICovCiAJVEFJTFFfSEVBRCgsIHRocmVhZCkga2dfc2xwcTsJLyog
KHRkX3J1bnEpIE5PTlJVTk5BQkxFIHRocmVhZHMuICovCkBAIC01MjYsOSAr
NDY0LDYgQEAKIAlzdHJ1Y3Qgdm1fb2JqZWN0ICpwX3VwYWdlc19vYmo7IC8q
IChhKSBVcGFnZXMgb2JqZWN0LiAqLwogCXN0cnVjdCBwcm9jc2lnCSpwX3By
b2NzaWc7CS8qIChjKSBTaWduYWwgYWN0aW9ucywgc3RhdGUgKENQVSkuICov
CiAKLQkvKnN0cnVjdCBrc2VncnAJcF9rc2VncnA7Ci0Jc3RydWN0IGtzZQlw
X2tzZTsgKi8KLQogCS8qCiAJICogVGhlIGZvbGxvd2luZyBkb24ndCBtYWtl
IHRvbyBtdWNoIHNlbnNlLi4KIAkgKiBTZWUgdGhlIHRkXyBvciBrZV8gdmVy
c2lvbnMgb2YgdGhlIHNhbWUgZmxhZ3MKQEAgLTgyOSw3ICs3NjQsNiBAQAog
ZXh0ZXJuIHN0cnVjdCBwcm9jIHByb2MwOwkJLyogUHJvY2VzcyBzbG90IGZv
ciBzd2FwcGVyLiAqLwogZXh0ZXJuIHN0cnVjdCB0aHJlYWQgdGhyZWFkMDsJ
CS8qIFByaW1hcnkgdGhyZWFkIGluIHByb2MwICovCiBleHRlcm4gc3RydWN0
IGtzZWdycCBrc2VncnAwOwkJLyogUHJpbWFyeSBrc2VncnAgaW4gcHJvYzAg
Ki8KLWV4dGVybiBzdHJ1Y3Qga3NlIGtzZTA7CQkJLyogUHJpbWFyeSBrc2Ug
aW4gcHJvYzAgKi8KIGV4dGVybiBzdHJ1Y3Qgdm1zcGFjZSB2bXNwYWNlMDsJ
CS8qIFZNIHNwYWNlIGZvciBwcm9jMC4gKi8KIGV4dGVybiBpbnQgaG9ndGlj
a3M7CQkJLyogTGltaXQgb24ga2VybmVsIGNwdSBob2dzLiAqLwogZXh0ZXJu
IGludCBucHJvY3MsIG1heHByb2M7CQkvKiBDdXJyZW50IGFuZCBtYXggbnVt
YmVyIG9mIHByb2NzLiAqLwpAQCAtODgwLDggKzgxNCw3IEBACiB2b2lkCXBh
cmdzX2hvbGQoc3RydWN0IHBhcmdzICpwYSk7CiB2b2lkCXByb2Npbml0KHZv
aWQpOwogdm9pZAl0aHJlYWRpbml0KHZvaWQpOwotdm9pZAlwcm9jX2xpbmt1
cChzdHJ1Y3QgcHJvYyAqcCwgc3RydWN0IGtzZWdycCAqa2csCi0JICAgIHN0
cnVjdCBrc2UgKmtlLCBzdHJ1Y3QgdGhyZWFkICp0ZCk7Cit2b2lkCXByb2Nf
bGlua3VwKHN0cnVjdCBwcm9jICpwLCBzdHJ1Y3Qga3NlZ3JwICprZywgc3Ry
dWN0IHRocmVhZCAqdGQpOwogdm9pZAlwcm9jX3JlcGFyZW50KHN0cnVjdCBw
cm9jICpjaGlsZCwgc3RydWN0IHByb2MgKm5ld3BhcmVudCk7CiBpbnQJc2Vj
dXJlbGV2ZWxfZ2Uoc3RydWN0IHVjcmVkICpjciwgaW50IGxldmVsKTsKIGlu
dAlzZWN1cmVsZXZlbF9ndChzdHJ1Y3QgdWNyZWQgKmNyLCBpbnQgbGV2ZWwp
OwpAQCAtOTEyLDE3ICs4NDUsMTEgQEAKIHN0cnVjdAlrc2VncnAgKmtzZWdy
cF9hbGxvYyh2b2lkKTsKIHZvaWQJa3NlZ3JwX2ZyZWUoc3RydWN0IGtzZWdy
cCAqa2cpOwogdm9pZAlrc2VncnBfc3Rhc2goc3RydWN0IGtzZWdycCAqa2cp
Owotc3RydWN0CWtzZSAqa3NlX2FsbG9jKHZvaWQpOwotdm9pZAlrc2VfZnJl
ZShzdHJ1Y3Qga3NlICprZSk7Ci12b2lkCWtzZV9zdGFzaChzdHJ1Y3Qga3Nl
ICprZSk7CiB2b2lkCWNwdV9zZXRfdXBjYWxsKHN0cnVjdCB0aHJlYWQgKnRk
LCB2b2lkICpwY2IpOwogdm9pZAljcHVfc2V0X3VwY2FsbF9rc2Uoc3RydWN0
IHRocmVhZCAqdGQsIHN0cnVjdCBrc2VfdXBjYWxsICprdSk7CiB2b2lkCWNw
dV90aHJlYWRfY2xlYW4oc3RydWN0IHRocmVhZCAqKTsKIHZvaWQJY3B1X3Ro
cmVhZF9leGl0KHN0cnVjdCB0aHJlYWQgKik7CiB2b2lkCWNwdV90aHJlYWRf
c2V0dXAoc3RydWN0IHRocmVhZCAqdGQpOwotdm9pZAlrc2VfcmVhc3NpZ24o
c3RydWN0IGtzZSAqa2UpOwotdm9pZAlrc2VfbGluayhzdHJ1Y3Qga3NlICpr
ZSwgc3RydWN0IGtzZWdycCAqa2cpOwotdm9pZAlrc2VfdW5saW5rKHN0cnVj
dCBrc2UgKmtlKTsKIHZvaWQJa3NlZ3JwX2xpbmsoc3RydWN0IGtzZWdycCAq
a2csIHN0cnVjdCBwcm9jICpwKTsKIHZvaWQJa3NlZ3JwX3VubGluayhzdHJ1
Y3Qga3NlZ3JwICprZyk7CiB2b2lkCXRocmVhZF9zaWduYWxfYWRkKHN0cnVj
dCB0aHJlYWQgKnRkLCBpbnQgc2lnKTsKQEAgLTk0Myw2ICs4NzAsNyBAQAog
dm9pZAl0aHJlYWRfc3Rhc2goc3RydWN0IHRocmVhZCAqdGQpOwogaW50CXRo
cmVhZF9zdXNwZW5kX2NoZWNrKGludCBob3cpOwogdm9pZAl0aHJlYWRfc3Vz
cGVuZF9vbmUoc3RydWN0IHRocmVhZCAqdGQpOwordm9pZAl0aHJlYWRfdW5s
aW5rKHN0cnVjdCB0aHJlYWQgKnRkKTsKIHZvaWQJdGhyZWFkX3Vuc3VzcGVu
ZChzdHJ1Y3QgcHJvYyAqcCk7CiB2b2lkCXRocmVhZF91bnN1c3BlbmRfb25l
KHN0cnVjdCB0aHJlYWQgKnRkKTsKIGludAl0aHJlYWRfdXNlcnJldChzdHJ1
Y3QgdGhyZWFkICp0ZCwgc3RydWN0IHRyYXBmcmFtZSAqZnJhbWUpOwpAQCAt
OTU0LDcgKzg4Miw3IEBACiB2b2lkCXVwY2FsbF9saW5rKHN0cnVjdCBrc2Vf
dXBjYWxsICprdSwgc3RydWN0IGtzZWdycCAqa2cpOwogdm9pZAl1cGNhbGxf
dW5saW5rKHN0cnVjdCBrc2VfdXBjYWxsICprdSk7CiB2b2lkCXVwY2FsbF9y
ZW1vdmUoc3RydWN0IHRocmVhZCAqdGQpOwotdm9pZAl1cGNhbGxfc3Rhc2go
c3RydWN0IGtzZV91cGNhbGwgKmtlKTsKK3ZvaWQJdXBjYWxsX3N0YXNoKHN0
cnVjdCBrc2VfdXBjYWxsICprdSk7CiB2b2lkCXRocmVhZF9zYW5pdHlfY2hl
Y2soc3RydWN0IHRocmVhZCAqdGQsIGNoYXIgKik7CiB2b2lkCXRocmVhZF9z
dG9wcGVkKHN0cnVjdCBwcm9jICpwKTsKIHZvaWQJdGhyZWFkX3N3aXRjaG91
dChzdHJ1Y3QgdGhyZWFkICp0ZCk7CkluZGV4OiBzeXMvc3lzL3NjaGVkLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3JlcG9zL3Byb2pl
Y3RzL21pcnJvcmVkL2ZyZWVic2Qvc3JjL3N5cy9zeXMvc2NoZWQuaCx2CnJl
dHJpZXZpbmcgcmV2aXNpb24gMS40CmRpZmYgLXUgLXIxLjQgc2NoZWQuaAot
LS0gc3lzL3N5cy9zY2hlZC5oCTIwMDMvMDQvMTEgMDM6Mzk6MDYJMS40Cisr
KyBzeXMvc3lzL3NjaGVkLmgJMjAwMy8wNC8xNyAwNjozNTowMQpAQCAtMzks
NyArMzksNyBAQAogICogUHJvYyByZWxhdGVkIHNjaGVkdWxpbmcgaG9va3Mu
CiAgKi8KIHZvaWQJc2NoZWRfZXhpdChzdHJ1Y3QgcHJvYyAqcCwgc3RydWN0
IHByb2MgKmNoaWxkKTsKLXZvaWQJc2NoZWRfZm9yayhzdHJ1Y3QgcHJvYyAq
cCwgc3RydWN0IHByb2MgKmNoaWxkKTsKK3ZvaWQJc2NoZWRfZm9yayhzdHJ1
Y3QgdGhyZWFkICp0ZCwgc3RydWN0IHByb2MgKmNoaWxkKTsKIAogLyoKICAq
IEtTRSBHcm91cHMgY29udGFpbiBzY2hlZHVsaW5nIHByaW9yaXR5IGluZm9y
bWF0aW9uLiAgVGhleSByZWNvcmQgdGhlCkBAIC02MywxMiArNjMsMTUgQEAK
IHZvaWQJc2NoZWRfdXNlcnJldChzdHJ1Y3QgdGhyZWFkICp0ZCk7CiB2b2lk
CXNjaGVkX3dha2V1cChzdHJ1Y3QgdGhyZWFkICp0ZCk7CiAKK2ludAlzY2hl
ZF90aHJlYWRfZm9yayhzdHJ1Y3QgdGhyZWFkICp0ZDEsIHN0cnVjdCB0aHJl
YWQgKnRkMik7CiAvKgogICogS1NFcyBhcmUgbW92ZWQgb24gYW5kIG9mZiBv
ZiBydW4gcXVldWVzLgogICovCitzdHJ1Y3Qga3NlOworCiB2b2lkCXNjaGVk
X2FkZChzdHJ1Y3Qga3NlICprZSk7CiBzdHJ1Y3Qga3NlICpzY2hlZF9jaG9v
c2Uodm9pZCk7Ci12b2lkCXNjaGVkX2Nsb2NrKHN0cnVjdCBrc2UgKmtlKTsK
K3ZvaWQJc2NoZWRfY2xvY2soc3RydWN0IHRocmVhZCAqdGQpOwogdm9pZAlz
Y2hlZF9leGl0X2tzZShzdHJ1Y3Qga3NlICprZSwgc3RydWN0IGtzZSAqY2hp
bGQpOwogdm9pZAlzY2hlZF9mb3JrX2tzZShzdHJ1Y3Qga3NlICprZSwgc3Ry
dWN0IGtzZSAqY2hpbGQpOwogdm9pZAlzY2hlZF9yZW0oc3RydWN0IGtzZSAq
a2UpOwpAQCAtNzYsNyArNzksNyBAQAogLyoKICAqIGFuZCB0aGV5IHVzZSB1
cCBjcHUgdGltZS4KICAqLwotZml4cHRfdAlzY2hlZF9wY3RjcHUoc3RydWN0
IGtzZSAqa2UpOworZml4cHRfdAlzY2hlZF9wY3RjcHUoc3RydWN0IHRocmVh
ZCAqdGQpOwogCiAvKgogICogVGhlc2UgcHJvY2VkdXJlcyB0ZWxsIHRoZSBw
cm9jZXNzIGRhdGEgc3RydWN0dXJlIGFsbG9jYXRpb24gY29kZSBob3cKQEAg
LTkyLDQgKzk1LDEyIEBACiBleHRlcm4gc3RydWN0IHBfc2NoZWQgKnByb2Mw
X3NjaGVkOwogZXh0ZXJuIHN0cnVjdCB0ZF9zY2hlZCAqdGhyZWFkMF9zY2hl
ZDsKIAorCisvKiB0ZW1wIGhhY2tzICovCitpbnQJc2NoZWRfbmV3cHJvYyhz
dHJ1Y3QgcHJvYyAqcCwgc3RydWN0IGtzZWdycCAqa2csIHN0cnVjdCB0aHJl
YWQgKnRkKTsKK3ZvaWQJc2NoZWRfZGJfcHJpbnQoc3RydWN0IHRocmVhZCAq
dGQpOwordm9pZAlzY2hlZGluaXQodm9pZCk7Cit2b2lkCXNjaGVkX3RkZXhp
dChzdHJ1Y3QgdGhyZWFkICp0ZCk7Cit2b2lkCXNjaGVkX3Rocl9leGl0KHN0
cnVjdCB0aHJlYWQgKnRkKTsKK3ZvaWQJc2NoZWRfZGVzdHJveXByb2Moc3Ry
dWN0IHByb2MgKnAsIHN0cnVjdCBrc2VncnAgKmtnLCBzdHJ1Y3QgdGhyZWFk
ICp0ZCk7CiAjZW5kaWYgLyogIV9TWVNfU0NIRURfSF8gKi8KAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAc3lzL2tlcm4v
c2NoZWRfNGJzZF9rc2UuYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
ADAxMDA2NDQAMDAwMDAwMAAwMDAwMDAwADAwMDAwMDA3Njc2ADA3NjQ3Mzc2
MTQzADAxNDUyNAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHJvb3QAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAd2hlZWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAKI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgoKI2luY2x1ZGUgPHN5
cy9zeXN0bS5oPgojaW5jbHVkZSA8c3lzL2tlcm5lbC5oPgojaW5jbHVkZSA8
c3lzL2xvY2suaD4KI2luY2x1ZGUgPHN5cy9tYWxsb2MuaD4KI2luY2x1ZGUg
PHN5cy9tdXRleC5oPgojaW5jbHVkZSA8c3lzL2tzZXZhci5oPgojaW5jbHVk
ZSA8c3lzL3Byb2MuaD4KI2luY2x1ZGUgPHN5cy9zbXAuaD4KI2luY2x1ZGUg
PHN5cy9zeXNjdGwuaD4KI2luY2x1ZGUgPHN5cy9zeXNwcm90by5oPgojaW5j
bHVkZSA8c3lzL2ZpbGVkZXNjLmg+CiNpbmNsdWRlIDxzeXMvc2NoZWQuaD4K
I2luY2x1ZGUgPHN5cy9zaWduYWx2YXIuaD4KI2luY2x1ZGUgPHN5cy9zeC5o
PgojaW5jbHVkZSA8c3lzL3R0eS5oPgojaW5jbHVkZSA8c3lzL3VzZXIuaD4K
I2luY2x1ZGUgPHN5cy9qYWlsLmg+CiNpbmNsdWRlIDxzeXMva3NlLmg+CiNp
bmNsdWRlIDxzeXMva3RyLmg+CiNpbmNsdWRlIDxzeXMvdWNvbnRleHQuaD4K
CiNpbmNsdWRlIDx2bS92bS5oPgojaW5jbHVkZSA8dm0vdm1fb2JqZWN0Lmg+
CiNpbmNsdWRlIDx2bS9wbWFwLmg+CiNpbmNsdWRlIDx2bS91bWEuaD4KI2lu
Y2x1ZGUgPHZtL3ZtX21hcC5oPgoKCnN0cnVjdCAga3NlIGtzZTA7CnN0YXRp
YyB1bWFfem9uZV90IGtzZV96b25lOwpzdGF0aWMgdm9pZCBrc2VfaW5pdCh2
b2lkICptZW0sIGludCBzaXplKTsKCnZvaWQKc2NoZWRpbml0KHZvaWQpCnsK
CS8qCgkgKiBTZXQgdXAgdGhlIHNjaGVkdWxlciBzcGVjaWZpYyBwYXJ0cyBv
ZiBwcm9jMC4KCSAqLwoJa3NlX2xpbmsoJmtzZTAsICZrc2VncnAwKTsKCWtz
ZTAua2Vfc2NoZWQgPSBrc2UwX3NjaGVkOwoJa3NlZ3JwMC5rZ19zY2hlZCA9
IGtzZWdycDBfc2NoZWQ7Cglwcm9jMC5wX3NjaGVkID0gcHJvYzBfc2NoZWQ7
Cgl0aHJlYWQwLnRkX3NjaGVkID0gdGhyZWFkMF9zY2hlZDsKCWtzZTAua2Vf
c3RhdGUgPSBLRVNfVEhSRUFEOwoJa3NlMC5rZV90aHJlYWQgPSAmdGhyZWFk
MDsKCXRocmVhZDAudGRfa3NlID0gJmtzZTA7IC8qIHdlIGFyZSBydW5uaW5n
ICovCgoKCWtzZV96b25lID0gdW1hX3pjcmVhdGUoIktTRSIsIHNjaGVkX3Np
emVvZl9rc2UoKSwKCSAgICBOVUxMLCBOVUxMLCBrc2VfaW5pdCwgTlVMTCwg
VU1BX0FMSUdOX0NBQ0hFLCAwKTsKfQoKLyoKICogSW5pdGlhbGl6ZSB0eXBl
LXN0YWJsZSBwYXJ0cyBvZiBhIGtzZSAod2hlbiBuZXdseSBjcmVhdGVkKS4K
ICovCnN0YXRpYyB2b2lkCmtzZV9pbml0KHZvaWQgKm1lbSwgaW50IHNpemUp
CnsKCXN0cnVjdCBrc2UgICAgICAqa2U7CgoJa2UgPSAoc3RydWN0IGtzZSAq
KW1lbTsKCWtlLT5rZV9zY2hlZCA9IChzdHJ1Y3Qga2Vfc2NoZWQgKikma2Vb
MV07Cn0KCi8qCiAqIEtTRSBpcyBsaW5rZWQgaW50byBrc2UgZ3JvdXAuICAg
CiAqLwp2b2lkCmtzZV9saW5rKHN0cnVjdCBrc2UgKmtlLCBzdHJ1Y3Qga3Nl
Z3JwICprZykKewoJc3RydWN0IHByb2MgKnAgPSBrZy0+a2dfcHJvYzsKCQoJ
VEFJTFFfSU5TRVJUX0hFQUQoJmtnLT5rZ19rc2VxLCBrZSwga2Vfa2dsaXN0
KTsKCWtnLT5rZ19rc2VzKys7CglrZS0+a2Vfc3RhdGUgICAgPSBLRVNfVU5R
VUVVRUQ7CglrZS0+a2VfcHJvYyAgICAgPSBwOwoJa2UtPmtlX2tzZWdycCAg
ID0ga2c7CglrZS0+a2VfdGhyZWFkICAgPSBOVUxMOwoJa2UtPmtlX29uY3B1
ICAgID0gTk9DUFU7CglrZS0+a2VfZmxhZ3MgICAgPSAwOwp9CgovKgogKiBB
bGxvY2F0ZSBhIGtzZS4KICovCnN0cnVjdCBrc2UgKgprc2VfYWxsb2Modm9p
ZCkKewoJcmV0dXJuICh1bWFfemFsbG9jKGtzZV96b25lLCBNX1dBSVRPSykp
Owp9CgovKgogKiBEZWFsbG9jYXRlIGEga3NlLgogKi8Kdm9pZAprc2VfZnJl
ZShzdHJ1Y3Qga3NlICp0ZCkKewoJdW1hX3pmcmVlKGtzZV96b25lLCB0ZCk7
Cn0KCmludApzY2hlZF9uZXdwcm9jKHN0cnVjdCBwcm9jICpwLCBzdHJ1Y3Qg
a3NlZ3JwICprZywgc3RydWN0IHRocmVhZCAqdGQpCnsKCXN0cnVjdCBrc2Ug
KmtlOwoKCWtlID0ga3NlX2FsbG9jKCk7CglpZiAoa2UpIHsKCQlrc2VfbGlu
ayhrZSwga2cpOwoJCXJldHVybiAoMCk7Cgl9CglyZXR1cm4gKEVOT01FTSk7
Cn0KCnZvaWQKc2NoZWRfZGVzdHJveXByb2Moc3RydWN0IHByb2MgKnAsIHN0
cnVjdCBrc2VncnAgKmtnLCBzdHJ1Y3QgdGhyZWFkICp0ZCkKewoJc3RydWN0
IGtzZSAqa2U7CgoJa2UgPSB0ZC0+dGRfa3NlOwoJaWYgKGtlKQoJCWtzZV9m
cmVlKGtlKTsKfQoKdm9pZAprc2VfdW5saW5rKHN0cnVjdCBrc2UgKmtlKQp7
CglzdHJ1Y3Qga3NlZ3JwICprZzsKCgltdHhfYXNzZXJ0KCZzY2hlZF9sb2Nr
LCBNQV9PV05FRCk7CglrZyA9IGtlLT5rZV9rc2VncnA7CglUQUlMUV9SRU1P
VkUoJmtnLT5rZ19rc2VxLCBrZSwga2Vfa2dsaXN0KTsKCWlmIChrZS0+a2Vf
c3RhdGUgPT0gS0VTX0lETEUpIHsKCQlUQUlMUV9SRU1PVkUoJmtnLT5rZ19p
cSwga2UsIGtlX2tncmxpc3QpOwoJCWtnLT5rZ19pZGxlX2tzZXMtLTsKCX0K
CWlmICgtLWtnLT5rZ19rc2VzID09IDApCgkJa3NlZ3JwX3VubGluayhrZyk7
CgkvKgoJICogQWdncmVnYXRlIHN0YXRzIGZyb20gdGhlIEtTRQoJICovCglr
c2Vfc3Rhc2goa2UpOwp9CgoKCiNkZWZpbmUgUkFOR0VPRih0eXBlLCBzdGFy
dCwgZW5kKSAob2Zmc2V0b2YodHlwZSwgZW5kKSAtIG9mZnNldG9mKHR5cGUs
IHN0YXJ0KSkKCi8qIG5ldyB2ZXJzaW9uIG9mIHNjaGVkLWZvcmsoKSAqLwp2
b2lkCnNjaGVkX2Zvcmsoc3RydWN0IHRocmVhZCAqdGQsIHN0cnVjdCBwcm9j
ICpwMikKewoJc3RydWN0IGtzZSAqa2UyOwoJc3RydWN0IGtzZWdycCAqa2cy
OwoJc3RydWN0IHRocmVhZCAqdGQyOwoKICAgICAgICBrZTIgPSBGSVJTVF9L
U0VfSU5fUFJPQyhwMik7CiAgICAgICAgdGQyID0gRklSU1RfVEhSRUFEX0lO
X1BST0MocDIpOwogICAgICAgIGtnMiA9IEZJUlNUX0tTRUdSUF9JTl9QUk9D
KHAyKTsKICAgICAgICBiemVybygma2UyLT5rZV9zdGFydHplcm8sCiAgICAg
ICAgICAgICh1bnNpZ25lZCkgUkFOR0VPRihzdHJ1Y3Qga3NlLCBrZV9zdGFy
dHplcm8sIGtlX2VuZHplcm8pKTsKICAgICAgICBrZTItPmtlX3N0YXRlID0g
S0VTX1RIUkVBRDsKICAgICAgICBrZTItPmtlX3RocmVhZCA9IHRkMjsKCXRk
Mi0+dGRfa3NlID0ga2UyOwogICAgICAgIC8qa2UyLT5rZV9zY2hlZC0+c2tl
X2NwdGlja3MgPSAwOyAqLyAvKiBYWFggRklYISAqLwogICAgICAgIGtnMi0+
a2dfZXN0Y3B1ID0gdGQtPnRkX2tzZWdycC0+a2dfZXN0Y3B1Owp9CgppbnQK
c2NoZWRfdGhyZWFkX2Zvcmsoc3RydWN0IHRocmVhZCAqdGQxLCBzdHJ1Y3Qg
dGhyZWFkICp0ZDIpCnsKCXN0cnVjdCBrc2UgKmtlMjsKCS8qIEluaXRpYWxp
emUgb3VyIGtzZSBzdHJ1Y3R1cmUuICovCglrZTIgPSBrc2VfYWxsb2MoKTsK
CWlmIChrZTIgPT0gTlVMTCkKCQlyZXR1cm4gKEVOT01FTSk7CgliemVybygm
a2UyLT5rZV9zdGFydHplcm8sCgkgICAgUkFOR0VPRihzdHJ1Y3Qga3NlLCBr
ZV9zdGFydHplcm8sIGtlX2VuZHplcm8pKTsKCWtzZV9saW5rKGtlMiwgdGQy
LT50ZF9rc2VncnApOwoJdGQyLT50ZF9rc2UgPSBrZTI7CiAgICAgICAga2Uy
LT5rZV90aHJlYWQgPSB0ZDI7CglyZXR1cm4gKDApOwp9Cgp2b2lkCnNjaGVk
X3RkZXhpdChzdHJ1Y3QgdGhyZWFkICp0ZCkKewoJc3RydWN0IGtzZSAqa2U7
CgoJa2UgPSB0ZC0+dGRfa3NlOwoJa2UtPmtlX3N0YXRlID0gS0VTX1VOUVVF
VUVEOwoJa2UtPmtlX3RocmVhZCA9IE5VTEw7CglpZiAoa2UtPmtlX2ZsYWdz
ICYgS0VGX0VYSVQpCgkJa3NlX3VubGluayhrZSk7CgllbHNlCgkJa3NlX3Jl
YXNzaWduKGtlKTsKCXRkLT50ZF9rc2UJPSBOVUxMOwoJdGQtPnRkX2xhc3Rf
a3NlCT0gTlVMTDsKfQoKdm9pZApzY2hlZF90aHJfZXhpdChzdHJ1Y3QgdGhy
ZWFkICp0ZCkKewoJc3RydWN0IGtzZSAqa2U7CgoJa2UgPSB0ZC0+dGRfa3Nl
OwoJa2UtPmtlX3N0YXRlID0gS0VTX1VOUVVFVUVEOwoJa2UtPmtlX3RocmVh
ZCA9IE5VTEw7Cglrc2VfdW5saW5rKGtlKTsKCXNjaGVkX2V4aXRfa3NlKFRB
SUxRX05FWFQoa2UsIGtlX2tnbGlzdCksIGtlKTsKfQoKAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAc3lzL3N5cy9rc2V2YXIuaAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAADAxMDA2NDQAMDAwMDAwMAAwMDAwMDAwADAw
MDAwMDExNzA1ADA3NjQ3MzY3MDc3ADAxMzAzMQAgMAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3Rh
ciAgAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd2hlZWwAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvKgogKiBDb3B5cmlnaHQgKEMp
IDIwMDEgSnVsaWFuIEVsaXNjaGVyIDxqdWxpYW5AZnJlZWJzZC5vcmc+CiAq
IGZvciB0aGUgRnJlZUJTRCBGb3VuZGF0aW9uLgogKgogKiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICoKICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwogKiBhcmUgbWV0OgogKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAogKiAgICBub3RpY2UocyksIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgYXMKICogICAg
dGhlIGZpcnN0IGxpbmVzIG9mIHRoaXMgZmlsZSB1bm1vZGlmaWVkIG90aGVy
IHRoYW4gdGhlIHBvc3NpYmxlIAogKiAgICBhZGRpdGlvbiBvZiBvbmUgb3Ig
bW9yZSBjb3B5cmlnaHQgbm90aWNlcy4KICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKICogICAgbm90aWNlKHMpLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogKgogKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSKFMpIGBgQVMgSVMn
JyBBTkQgQU5ZCiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQogKiBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIoUykgQkUgTElB
QkxFIEZPUiBBTlkKICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCiAqIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCiAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAogKiBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCiAqIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSAogKiBEQU1BR0UuCiAqCiAqICRGcmVlQlNEOiBzcmMv
c3lzL3N5cy9rc2UuaCx2IDEuMTIgMjAwMy8wMy8xOSAwNTo0OTozNyBkYXZp
ZHh1IEV4cCAkCiAqLwoKI2lmbmRlZiBfU1lTX0tTRVZBUl9IXwojZGVmaW5l
IF9TWVNfS1NFVkFSX0hfCiNpZm5kZWYgX0tFUk5FTAojZXJyb3IgIk5vdCBm
b3IgdXNlIG91dHNpZGUgdGhlIGtlcm5lbCIKI2Vsc2UKI2RlZmluZSBLU0VE
RUYga3NlCi8qCiAqIFRoZSBzZWNvbmQgc3RydWN0dXJlIGlzIHRoZSBLZXJu
ZWwgU2NoZWR1bGFibGUgRW50aXR5LiAoS1NFKQogKiBJdCByZXByZXNlbnRz
IHRoZSBhYmlsaXR5IHRvIHRha2UgYSBzbG90IGluIHRoZSBzY2hlZHVsZXIg
cXVldWUuCiAqIEFzIGxvbmcgYXMgdGhpcyBpcyBzY2hlZHVsZWQsIGl0IGNv
dWxkIGNvbnRpbnVlIHRvIHJ1biBhbnkgdGhyZWFkcyB0aGF0CiAqIGFyZSBh
c3NpZ25lZCB0byB0aGUgS1NFR1JQIChzZWUgbGF0ZXIpIHVudGlsIGVpdGhl
ciBpdCBydW5zIG91dAogKiBvZiBydW5uYWJsZSB0aHJlYWRzIG9mIGhpZ2gg
ZW5vdWdoIHByaW9yaXR5LCBvciBDUFUuCiAqIEl0IHJ1bnMgb24gb25lIENQ
VSBhbmQgaXMgYXNzaWduZWQgYSBxdWFudHVtIG9mIHRpbWUuIFdoZW4gYSB0
aHJlYWQgaXMKICogYmxvY2tlZCwgVGhlIEtTRSBjb250aW51ZXMgdG8gcnVu
IGFuZCB3aWxsIHNlYXJjaCBmb3IgYW5vdGhlciB0aHJlYWQKICogaW4gYSBy
dW5uYWJsZSBzdGF0ZSBhbW9uZ3N0IHRob3NlIGl0IGhhcy4gSXQgTWF5IGRl
Y2lkZSB0byByZXR1cm4gdG8gdXNlcgogKiBtb2RlIHdpdGggYSBuZXcgJ2Vt
cHR5JyB0aHJlYWQgaWYgdGhlcmUgYXJlIG5vIHJ1bm5hYmxlIHRocmVhZHMu
CiAqIFRocmVhZHMgYXJlIHRlbXBvcmFyaWx5IGFzc29jaWF0ZWQgd2l0aCBh
IEtTRSBmb3Igc2NoZWR1bGluZyByZWFzb25zLgogKi8Kc3RydWN0IGtzZTsK
Ci8qKioqKioqKioqKioqKioKICogSW4gcGljdHVyZXM6CiBXaXRoIGEgc2lu
Z2xlIHJ1biBxdWV1ZSB1c2VkIGJ5IGFsbCBwcm9jZXNzb3JzOgoKIFJVTlE6
IC0tLT5LU0UtLS1LU0UtLS4uLiAgICAgICAgICAgICAgIFNMRUVQUTpbXS0t
LVRIUkVBRC0tLVRIUkVBRC0tLVRIUkVBRAoJICAgfCAgIC8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgW10tLS1USFJFQUQKCSAgIEtTRUctLS1U
SFJFQUQtLVRIUkVBRC0tVEhSRUFEICAgICAgIFtdCgkJCQkJICAgICAgIFtd
LS0tVEhSRUFELS0tVEhSRUFECgogIChwcm9jZXNzb3JzIHJ1biBUSFJFQURz
IGZyb20gdGhlIEtTRUcgdW50aWwgdGhleSBhcmUgZXhoYXVzdGVkIG9yCiAg
dGhlIEtTRUcgZXhoYXVzdHMgaXRzIHF1YW50dW0pCgpXaXRoIFBFUi1DUFUg
cnVuIHF1ZXVlczoKS1NFcyBvbiB0aGUgc2VwYXJhdGUgcnVuIHF1ZXVlcyBk
aXJlY3RseQpUaGV5IHdvdWxkIGJlIGdpdmVuIHByaW9yaXRpZXMgY2FsY3Vs
YXRlZCBmcm9tIHRoZSBLU0VHLgoKICoKICoqKioqKioqKioqKioqKioqLwoK
LyoKICogVGhlIHNjaGVkdWxhYmxlIGVudGl0eSB0aGF0IGNhbiBiZSBnaXZl
biBhIGNvbnRleHQgdG8gcnVuLgogKiBBIHByb2Nlc3MgbWF5IGhhdmUgc2V2
ZXJhbCBvZiB0aGVzZS4gUHJvYmFibHkgb25lIHBlciBwcm9jZXNzb3IKICog
YnV0IHBvc2libHkgYSBmZXcgbW9yZS4gSW4gdGhpcyB1bml2ZXJzZSB0aGV5
IGFyZSBncm91cGVkCiAqIHdpdGggYSBLU0VHIHRoYXQgY29udGFpbnMgdGhl
IHByaW9yaXR5IGFuZCBuaWNlbmVzcwogKiBmb3IgdGhlIGdyb3VwLgogKi8K
c3RydWN0IGtzZSB7CglzdHJ1Y3QgcHJvYwkqa2VfcHJvYzsJLyogQXNzb2Np
YXRlZCBwcm9jZXNzLiAqLwoJc3RydWN0IGtzZWdycAkqa2Vfa3NlZ3JwOwkv
KiBBc3NvY2lhdGVkIEtTRUcuICovCglUQUlMUV9FTlRSWShrc2UpIGtlX2tn
bGlzdDsJLyogUXVldWUgb2YgYWxsIEtTRXMgaW4ga2Vfa3NlZ3JwLiAqLwoJ
VEFJTFFfRU5UUlkoa3NlKSBrZV9rZ3JsaXN0OwkvKiBRdWV1ZSBvZiBhbGwg
S1NFcyBpbiB0aGlzIHN0YXRlLiAqLwoJVEFJTFFfRU5UUlkoa3NlKSBrZV9w
cm9jcTsJLyogKGopIFJ1biBxdWV1ZS4gKi8KCiNkZWZpbmUJa2Vfc3RhcnR6
ZXJvIGtlX2ZsYWdzCglpbnQJCWtlX2ZsYWdzOwkvKiAoaikgS0VGXyogZmxh
Z3MuICovCglzdHJ1Y3QgdGhyZWFkCSprZV90aHJlYWQ7CS8qIEFjdGl2ZSBh
c3NvY2lhdGVkIHRocmVhZC4gKi8KCWZpeHB0X3QJCWtlX3BjdGNwdTsgICAg
IC8qIChqKSAlY3B1IGR1cmluZyBwX3N3dGltZS4gKi8KCXVfY2hhcgkJa2Vf
b25jcHU7CS8qIChqKSBXaGljaCBjcHUgd2UgYXJlIG9uLiAqLwoJY2hhcgkJ
a2VfcnFpbmRleDsJLyogKGopIFJ1biBxdWV1ZSBpbmRleC4gKi8KCWVudW0g
ewoJCUtFU19VTlVTRUQgPSAweDAsCgkJS0VTX0lETEUsCgkJS0VTX09OUlVO
USwKCQlLRVNfVU5RVUVVRUQsCQkvKiBpbiB0cmFuc2l0ICovCgkJS0VTX1RI
UkVBRAkJLyogc2xhdmVkIHRvIHRocmVhZCBzdGF0ZSAqLwoJfSBrZV9zdGF0
ZTsJCQkvKiAoaikgUyogcHJvY2VzcyBzdGF0dXMuICovCiNkZWZpbmUJa2Vf
ZW5kemVybyBrZV9kdW1teQoJdV9jaGFyCQlrZV9kdW1teTsKCXN0cnVjdCBr
ZV9zY2hlZAkqa2Vfc2NoZWQ7CS8qIFNjaGVkdWxlciBzcGVjaWZpYyBkYXRh
ICovCn07CgovKiBmbGFncyBrZXB0IGluIGtlX2ZsYWdzICovCiNkZWZpbmUJ
S0VGX0lETEVLU0UJMHgwMDAwNAkvKiBBICdQZXIgQ1BVIGlkbGUgcHJvY2Vz
cycuLiBoYXMgb25lIHRocmVhZCAqLwojZGVmaW5lCUtFRl9ESURSVU4JMHgw
MjAwMAkvKiBLU0UgYWN0dWFsbHkgcmFuLiAqLwojZGVmaW5lCUtFRl9FWElU
CTB4MDQwMDAJLyogS1NFIGlzIGJlaW5nIGtpbGxlZC4gKi8KCiNkZWZpbmUJ
Rk9SRUFDSF9LU0VfSU5fR1JPVVAoa2csIGtlKQkJCQkJXAoJVEFJTFFfRk9S
RUFDSCgoa2UpLCAmKGtnKS0+a2dfa3NlcSwga2Vfa2dsaXN0KQoKLyogWFhY
S1NFIHRoZSBsaW5lcyBiZWxvdyBzaG91bGQgcHJvYmFibHkgb25seSBiZSB1
c2VkIGluIDE6MSBjb2RlICovCiNkZWZpbmUJRklSU1RfS1NFX0lOX0tTRUdS
UChrZykgVEFJTFFfRklSU1QoJmtnLT5rZ19rc2VxKQojZGVmaW5lCUZJUlNU
X0tTRV9JTl9QUk9DKHApIEZJUlNUX0tTRV9JTl9LU0VHUlAoRklSU1RfS1NF
R1JQX0lOX1BST0MocCkpCgpleHRlcm4gc3RydWN0IGtzZSBrc2UwOwkJCS8q
IFByaW1hcnkga3NlIGluIHByb2MwICovCgovKiB2b2lkCXByb2NfbGlua3Vw
KHN0cnVjdCBwcm9jICpwLCBzdHJ1Y3Qga3NlZ3JwICprZywKCSAgICBzdHJ1
Y3Qga3NlICprZSwgc3RydWN0IHRocmVhZCAqdGQpOyAqLwoKLyogTmV3IGlu
IEtTRS4gKi8Kc3RydWN0CWtzZSAqa3NlX2FsbG9jKHZvaWQpOwp2b2lkCWtz
ZV9mcmVlKHN0cnVjdCBrc2UgKmtlKTsKdm9pZAlrc2Vfc3Rhc2goc3RydWN0
IGtzZSAqa2UpOwp2b2lkCWtzZV9yZWFzc2lnbihzdHJ1Y3Qga3NlICprZSk7
CnZvaWQJa3NlX2xpbmsoc3RydWN0IGtzZSAqa2UsIHN0cnVjdCBrc2VncnAg
KmtnKTsKdm9pZAlrc2VfdW5saW5rKHN0cnVjdCBrc2UgKmtlKTsKCiNlbmRp
ZgkvKiAhX0tFUk5FTCAqLwoKI2VuZGlmCS8qICFfU1lTX0tTRVZBUl9IXyAq
LwoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
--0-499056429-1050562550=:94222--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0304162233240.94222-101000>