[Lcdproc] Re: ShuttleVFD driver
Thien Vu
thien.vu@gmail.com
Sat Jul 28 19:13:02 2007
------=_Part_10336_18013591.1185649908863
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Done. Attached.
Thien
On 7/28/07, Peter Marschall <peter@adpm.de> wrote:
> Hi Thien,
>
> On Sunday, 8. July 2007 03:43, Thien Vu wrote:
> > I've updated the driver to support all the icons and volume displays.
> >
> > Attached below.
> >
> > It's been several days since I submitted my last patch, is this the
> > correct forum to do this? I haven't heard anything back from anyone on
> > this stuff so I'm hoping I don't have to maintain this outside the
> > source tree forever.
>
> I have had only a short look at your driver, when the
> restriction to version 2 of the GPL stopped me cold.
>
> I make some checks on the other parts of the LCDproc code
> and it looks like it is locensed under a "GPL version 2 or
> any later version" locense.
>
> If possible, I'd like to keep it that way.
>
> Would you mind to re-license your driver to that license ?
> Peter
> --
> Peter Marschall
> peter@adpm.de
> _______________________________________________
> LCDproc mailing list
> LCDproc@lists.omnipotent.net
> http://lists.omnipotent.net/mailman/listinfo/lcdproc
>
--
http://www.thien-vu.dyndns.org/~thien
------=_Part_10336_18013591.1185649908863
Content-Type: text/x-patch; name="lcdproc-cvs-shuttleVFD-patch.diff"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="lcdproc-cvs-shuttleVFD-patch.diff"
X-Attachment-Id: f_f4ohc5dx
ZGlmZiAtTmF1ciBsY2Rwcm9jLWN2cy9MQ0RkLmNvbmYgbGNkcHJvYy9MQ0RkLmNvbmYKLS0tIGxj
ZHByb2MtY3ZzL0xDRGQuY29uZgkyMDA3LTA2LTE3IDA1OjA3OjM3LjAwMDAwMDAwMCAtMDcwMAor
KysgbGNkcHJvYy9MQ0RkLmNvbmYJMjAwNy0wNy0yOCAxMjowMzo1OC4wMDAwMDAwMDAgLTA3MDAK
QEAgLTQ4LDcgKzQ4LDggQEAKICMgICBFeWVib3hPbmUsIGcxNSwgZ2xjZGxpYiwgZ2xrLCBoZDQ0
NzgwLCBpY3BfYTEwNiwgaW1vbiwgSU9XYXJyaW9yLAogIyAgIGlybWFuLCBqb3ksIGxiMjE2LCBs
Y2RtMDAxLCBsY3Rlcm0sIGxpcmMsIE1EODgwMCwgbXM2OTMxLCBtdGNfczE2MjA5eCwKICMgICBN
dHhPcmIsIE5vcml0YWtlVkZELCBwaWNvbGNkLCBweXJhbWlkLCBzZWQxMzMwLCBzZWQxNTIwLCBz
ZXJpYWxQT1MsCi0jICAgc2VyaWFsVkZELCBzbGksIHN0djU3MzAsIHN2Z2EsIHQ2OTYzLCB0ZXh0
LCB0eWFuLCB1bGEyMDAsIHhvc2QKKyMgICBzZXJpYWxWRkQsIHNodXR0bGVWRkQsIHNsaSwgc3R2
NTczMCwgc3ZnYSwgdDY5NjMsIHRleHQsIHR5YW4sIHVsYTIwMCwKKyMgICB4b3NkCiBEcml2ZXI9
Y3Vyc2VzCiAKICMgVGVsbHMgdGhlIGRyaXZlciB0byBiaW5kIHRvIHRoZSBnaXZlbiBpbnRlcmZh
Y2UKQEAgLTg3MCw3ICs4NzEsOSBAQAogIyBlbmFibGUgSVNPIDg4NTkgMSBjb21wYXRpYmlsaXR5
IFtkZWZhdWx0OiB5ZXM7IGxlZ2FsOiB5ZXMsIG5vXQogI0lTT184ODU5XzE9eWVzCiAKLQorIyMg
c2h1dHRsZVZGRCBkcml2ZXIgIyMKK1tzaHV0dGxlVkZEXQorIyBObyBvcHRpb25zCiAKICMjIHN0
djU3MzAgZHJpdmVyICMjCiBbc3R2NTczMF0KZGlmZiAtTmF1ciBsY2Rwcm9jLWN2cy9hY2luY2x1
ZGUubTQgbGNkcHJvYy9hY2luY2x1ZGUubTQKLS0tIGxjZHByb2MtY3ZzL2FjaW5jbHVkZS5tNAky
MDA3LTA1LTE3IDA1OjA4OjE1LjAwMDAwMDAwMCAtMDcwMAorKysgbGNkcHJvYy9hY2luY2x1ZGUu
bTQJMjAwNy0wNy0yOCAxMjowMzo1OC4wMDAwMDAwMDAgLTA3MDAKQEAgLTksMTQgKzksMTQgQEAK
IAlbICAgICAgICAgICAgICAgICAgICBFeWVib3hPbmUsZzE1LGdsY2RsaWIsZ2xrLGhkNDQ3ODAs
aWNwX2ExMDYsaW1vbixJT1dhcnJpb3IsXQogCVsgICAgICAgICAgICAgICAgICAgIGlybWFuLGpv
eSxsYjIxNixsY2RtMDAxLGxjdGVybSxsaXJjLGxpcyxNRDg4MDAsbXM2OTMxLF0KIAlbICAgICAg
ICAgICAgICAgICAgICBtdGNfczE2MjA5eCxNdHhPcmIsTm9yaXRha2VWRkQscGljb2xjZCxweXJh
bWlkLHNlZDEzMzBdCi0JWyAgICAgICAgICAgICAgICAgICAgc2VkMTUyMCxzZXJpYWxQT1Msc2Vy
aWFsVkZELHNsaSxzdHY1NzMwLHN2Z2EsdDY5NjMsdGV4dCxdCi0JWyAgICAgICAgICAgICAgICAg
ICAgdHlhbix1bGEyMDAseG9zZF0KKwlbICAgICAgICAgICAgICAgICAgICBzZWQxNTIwLHNlcmlh
bFBPUyxzZXJpYWxWRkQsc2h1dHRsZVZGRCxzbGksc3R2NTczMCxzdmdhXQorCVsgICAgICAgICAg
ICAgICAgICAgIHQ2OTYzLHRleHQsdHlhbix1bGEyMDAseG9zZF0KIAlbICAgICAgICAgICAgICAg
ICAgJ2FsbCcgY29tcGlsZXMgYWxsIGRyaXZlcnM7XQogCVsgICAgICAgICAgICAgICAgICAnYWxs
LCF4eHgsIXl5eScgZGUtc2VsZWN0cyBwcmV2aW91c2x5IHNlbGVjdGVkIGRyaXZlcnNdLAogCWRy
aXZlcnM9IiRlbmFibGV2YWwiLAogCWRyaXZlcnM9W2JheXJhZCxDRm9udHosQ0ZvbnR6NjMzLGN1
cnNlcyxDd0xueCxnbGssbGIyMTYsbGNkbTAwMSxNdHhPcmIscHlyYW1pZCx0ZXh0XSkKIAotYWxs
RHJpdmVycz1bYmF5cmFkLENGb250eixDRm9udHo2MzMsQ0ZvbnR6UGFja2V0LGN1cnNlcyxDd0xu
eCxlYTY1LEV5ZWJveE9uZSxnMTUsZ2xjZGxpYixnbGssaGQ0NDc4MCxpY3BfYTEwNixpbW9uLElP
V2Fycmlvcixpcm1hbixqb3ksbGIyMTYsbGNkbTAwMSxsY3Rlcm0sbGlyYyxsaXMsTUQ4ODAwLG1z
NjkzMSxtdGNfczE2MjA5eCxNdHhPcmIsTm9yaXRha2VWRkQscGljb2xjZCxweXJhbWlkLHNlZDEz
MzAsc2VkMTUyMCxzZXJpYWxQT1Msc2VyaWFsVkZELHNsaSxzdHY1NzMwLHN2Z2EsdDY5NjMsdGV4
dCx0eWFuLHVsYTIwMCx4b3NkXQorYWxsRHJpdmVycz1bYmF5cmFkLENGb250eixDRm9udHo2MzMs
Q0ZvbnR6UGFja2V0LGN1cnNlcyxDd0xueCxlYTY1LEV5ZWJveE9uZSxnMTUsZ2xjZGxpYixnbGss
aGQ0NDc4MCxpY3BfYTEwNixpbW9uLElPV2Fycmlvcixpcm1hbixqb3ksbGIyMTYsbGNkbTAwMSxs
Y3Rlcm0sbGlyYyxsaXMsTUQ4ODAwLG1zNjkzMSxtdGNfczE2MjA5eCxNdHhPcmIsTm9yaXRha2VW
RkQscGljb2xjZCxweXJhbWlkLHNlZDEzMzAsc2VkMTUyMCxzZXJpYWxQT1Msc2VyaWFsVkZELHNo
dXR0bGVWRkQsc2xpLHN0djU3MzAsc3ZnYSx0Njk2Myx0ZXh0LHR5YW4sdWxhMjAwLHhvc2RdCiAK
IGRyaXZlcnM9YGVjaG8gJGRyaXZlcnMgfCBzZWQgLWUgJ3MvLC8gL2cnYAogCkBAIC0zMzgsNiAr
MzM4LDE0IEBACiAJCQlEUklWRVJTPSIkRFJJVkVSUyBzZXJpYWxWRkQke1NPfSIKIAkJCWFjdGRy
aXZlcnM9WyIkYWN0ZHJpdmVycyBzZXJpYWxWRkQiXQogCQkJOzsKKwkJc2h1dHRsZVZGRCkKKwkJ
CWlmIHRlc3QgIiRlbmFibGVfbGlidXNiIiA9IHllcyA7IHRoZW4KKwkJCQlEUklWRVJTPSIkRFJJ
VkVSUyBzaHV0dGxlVkZEJHtTT30iCisJCQkJYWN0ZHJpdmVycz1bIiRhY3Rkcml2ZXJzIHNodXR0
bGVWRkQiXQorCQkJZWxzZQorCQkJCUFDX01TR19XQVJOKFtUaGUgc2h1dHRsZVZGRCBkcml2ZXIg
bmVlZHMgdGhlIGxpYnVzYiBsaWJyYXJ5Ll0pCisJCQlmaQorCQkJOzsKIAkJc2xpKQogCQkJRFJJ
VkVSUz0iJERSSVZFUlMgc2xpJHtTT30iCiAJCQlhY3Rkcml2ZXJzPVsiJGFjdGRyaXZlcnMgc2xp
Il0KZGlmZiAtTmF1ciBsY2Rwcm9jLWN2cy9kb2NzL0xDRGQuOC5pbiBsY2Rwcm9jL2RvY3MvTENE
ZC44LmluCi0tLSBsY2Rwcm9jLWN2cy9kb2NzL0xDRGQuOC5pbgkyMDA3LTA1LTE3IDA1OjA4OjE1
LjAwMDAwMDAwMCAtMDcwMAorKysgbGNkcHJvYy9kb2NzL0xDRGQuOC5pbgkyMDA3LTA3LTI4IDEy
OjA0OjAxLjAwMDAwMDAwMCAtMDcwMApAQCAtMjIyLDYgKzIyMiw5IEBACiAuQiBzZXJpYWxWRkQK
IE5FQyAoRklQQzgzNjcgYmFzZWQpIGFuZCBGVVRBQkEgVkZEcwogLlRQCisuQiBzaHV0dGxlVkZE
CitTaHV0dGxlIFZGRCAoVVNCLWJhc2VkKQorLlRQCiAuQiBzbGkKIFdpcnogU0xJIGRyaXZlciAo
dW5rbm93bikKIC5UUApkaWZmIC1OYXVyIGxjZHByb2MtY3ZzL2RvY3MvbGNkcHJvYy11c2VyL2Ry
aXZlcnMvc2h1dHRsZVZGRC5kb2Nib29rIGxjZHByb2MvZG9jcy9sY2Rwcm9jLXVzZXIvZHJpdmVy
cy9zaHV0dGxlVkZELmRvY2Jvb2sKLS0tIGxjZHByb2MtY3ZzL2RvY3MvbGNkcHJvYy11c2VyL2Ry
aXZlcnMvc2h1dHRsZVZGRC5kb2Nib29rCTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0w
ODAwCisrKyBsY2Rwcm9jL2RvY3MvbGNkcHJvYy11c2VyL2RyaXZlcnMvc2h1dHRsZVZGRC5kb2Ni
b29rCTIwMDctMDctMjggMTI6MDQ6MDEuMDAwMDAwMDAwIC0wNzAwCkBAIC0wLDAgKzEsMTAgQEAK
KzxzZWN0MSBpZD0ic2h1dHRsZVZGRC1ob3d0byI+Cis8dGl0bGU+VGhlIHNodXR0bGVWRkQgRHJp
dmVyPC90aXRsZT4KKworPHBhcmE+CitUaGlzIHNlY3Rpb24gdGFsa3MgYWJvdXQgdXNpbmcgTENE
cHJvYyB3aXRoIExDRCBkaXNwbGF5cyB0aGF0IHVzZSB0aGUKK1NodXR0bGVWRkQgZGlzcGxheS4K
KworVGhlcmUgYXJlIG5vIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhdmFpbGFibGUgZm9yIHRoaXMg
ZGlzcGxheS4KKzwvcGFyYT4KKzwvc2VjdDE+CmRpZmYgLU5hdXIgbGNkcHJvYy1jdnMvZG9jcy9s
Y2Rwcm9jLXVzZXIvZHJpdmVycy5kb2Nib29rIGxjZHByb2MvZG9jcy9sY2Rwcm9jLXVzZXIvZHJp
dmVycy5kb2Nib29rCi0tLSBsY2Rwcm9jLWN2cy9kb2NzL2xjZHByb2MtdXNlci9kcml2ZXJzLmRv
Y2Jvb2sJMjAwNy0wNS0xNyAwNTowODoxNS4wMDAwMDAwMDAgLTA3MDAKKysrIGxjZHByb2MvZG9j
cy9sY2Rwcm9jLXVzZXIvZHJpdmVycy5kb2Nib29rCTIwMDctMDctMjggMTI6MDQ6MDEuMDAwMDAw
MDAwIC0wNzAwCkBAIC00MCw2ICs0MCw3IEBACiAmc2VkMTUyMDsKICZzZXJpYWxQT1M7CiAmc2Vy
aWFsVkZEOworJnNodXR0bGVWRkQ7CiAmc2xpOwogJnN0djU3MzA7CiAmc3ZnYTsKZGlmZiAtTmF1
ciBsY2Rwcm9jLWN2cy9kb2NzL2xjZHByb2MtdXNlci9sY2Rwcm9jLXVzZXIuZG9jYm9vayBsY2Rw
cm9jL2RvY3MvbGNkcHJvYy11c2VyL2xjZHByb2MtdXNlci5kb2Nib29rCi0tLSBsY2Rwcm9jLWN2
cy9kb2NzL2xjZHByb2MtdXNlci9sY2Rwcm9jLXVzZXIuZG9jYm9vawkyMDA3LTA1LTE3IDA1OjA4
OjE1LjAwMDAwMDAwMCAtMDcwMAorKysgbGNkcHJvYy9kb2NzL2xjZHByb2MtdXNlci9sY2Rwcm9j
LXVzZXIuZG9jYm9vawkyMDA3LTA3LTI4IDEyOjA0OjAxLjAwMDAwMDAwMCAtMDcwMApAQCAtNDYs
NiArNDYsNyBAQAogICA8IUVOVElUWSBzZWQxNTIwIFNZU1RFTSAiZHJpdmVycy9zZWQxNTIwLmRv
Y2Jvb2siPgogICA8IUVOVElUWSBzZXJpYWxQT1MgU1lTVEVNICJkcml2ZXJzL3NlcmlhbFBPUy5k
b2Nib29rIj4KICAgPCFFTlRJVFkgc2VyaWFsVkZEIFNZU1RFTSAiZHJpdmVycy9zZXJpYWxWRkQu
ZG9jYm9vayI+CisgIDwhRU5USVRZIHNodXR0bGVWRkQgU1lTVEVNICJkcml2ZXJzL3NodXR0bGVW
RkQuZG9jYm9vayI+CiAgIDwhRU5USVRZIHNsaSBTWVNURU0gImRyaXZlcnMvc2xpLmRvY2Jvb2si
PgogICA8IUVOVElUWSBzdHY1NzMwIFNZU1RFTSAiZHJpdmVycy9zdHY1NzMwLmRvY2Jvb2siPgog
ICA8IUVOVElUWSBzdmdhIFNZU1RFTSAiZHJpdmVycy9zdmdhLmRvY2Jvb2siPgpkaWZmIC1OYXVy
IGxjZHByb2MtY3ZzL3NlcnZlci9kcml2ZXJzL01ha2VmaWxlLmFtIGxjZHByb2Mvc2VydmVyL2Ry
aXZlcnMvTWFrZWZpbGUuYW0KLS0tIGxjZHByb2MtY3ZzL3NlcnZlci9kcml2ZXJzL01ha2VmaWxl
LmFtCTIwMDctMDYtMTcgMDU6MDc6MzcuMDAwMDAwMDAwIC0wNzAwCisrKyBsY2Rwcm9jL3NlcnZl
ci9kcml2ZXJzL01ha2VmaWxlLmFtCTIwMDctMDctMjggMTI6MDQ6MDEuMDAwMDAwMDAwIC0wNzAw
CkBAIC0xOSwxMyArMTksMTQgQEAKICNMSUJTID0KIAogcGtnbGliX1BST0dSQU1TID0gQERSSVZF
UlNACi1FWFRSQV9QUk9HUkFNUyA9IGJheXJhZCBDRm9udHogQ0ZvbnR6NjMzIENGb250elBhY2tl
dCBjdXJzZXMgQ3dMbnggZWE2NSBFeWVib3hPbmUgZzE1IGdsY2RsaWIgZ2xrIGhkNDQ3ODAgaWNw
X2ExMDYgaW1vbiBJT1dhcnJpb3IgaXJtYW4gam95IGxiMjE2IGxjZG0wMDEgbGN0ZXJtIGxpcmMg
bGlzIE1EODgwMCBtczY5MzEgbXRjX3MxNjIwOXggTXR4T3JiIE5vcml0YWtlVkZEIHBpY29sY2Qg
cHlyYW1pZCBzZWQxMzMwIHNlZDE1MjAgc2VyaWFsUE9TIHNlcmlhbFZGRCBzdHY1NzMwIHN2Z2Eg
dDY5NjMgdGV4dCB0eWFuIHNsaSB1bGEyMDAgeG9zZAorRVhUUkFfUFJPR1JBTVMgPSBiYXlyYWQg
Q0ZvbnR6IENGb250ejYzMyBDRm9udHpQYWNrZXQgY3Vyc2VzIEN3TG54IGVhNjUgRXllYm94T25l
IGcxNSBnbGNkbGliIGdsayBoZDQ0NzgwIGljcF9hMTA2IGltb24gSU9XYXJyaW9yIGlybWFuIGpv
eSBsYjIxNiBsY2RtMDAxIGxjdGVybSBsaXJjIGxpcyBNRDg4MDAgbXM2OTMxIG10Y19zMTYyMDl4
IE10eE9yYiBOb3JpdGFrZVZGRCBwaWNvbGNkIHB5cmFtaWQgc2VkMTMzMCBzZWQxNTIwIHNlcmlh
bFBPUyBzZXJpYWxWRkQgc2h1dHRsZVZGRCBzdHY1NzMwIHN2Z2EgdDY5NjMgdGV4dCB0eWFuIHNs
aSB1bGEyMDAgeG9zZAogbm9pbnN0X0xJQlJBUklFUyA9IGxpYkxDRC5hIGxpYmJpZ251bS5hCiAK
IElPV2Fycmlvcl9DRkxBR1MgPSAgIEBsaWJ1c2JfY2ZsYWdzQCAkKEFNX0NGTEFHUykKIGhkNDQ3
ODBfQ0ZMQUdTID0gICAgIEBsaWJ1c2JfY2ZsYWdzQCAkKEFNX0NGTEFHUykKIGcxNV9DRkxBR1Mg
PSAgICAgICAgIEBsaWJ1c2JfY2ZsYWdzQCAkKEFNX0NGTEFHUykKIHBpY29sY2RfQ0ZMQUdTID0g
ICAgIEBsaWJ1c2JfY2ZsYWdzQCAkKEFNX0NGTEFHUykJCitzaHV0dGxlVkZEX0NGTEFHUyA9ICBA
bGlidXNiX2NmbGFnc0AgJChBTV9DRkxBR1MpCiAKIENGb250el9MREFERCA9ICAgICAgIGxpYkxD
RC5hIGxpYmJpZ251bS5hCiBDRm9udHo2MzNfTERBREQgPSAgICBsaWJMQ0QuYSBsaWJiaWdudW0u
YQpAQCAtNTEsNiArNTIsNyBAQAogcHlyYW1pZF9MREFERCA9ICAgICAgbGliTENELmEKIHNlcmlh
bFBPU19MREFERCA9ICAgIGxpYkxDRC5hIGxpYmJpZ251bS5hCiBzZXJpYWxWRkRfTERBREQgPSAg
ICBsaWJMQ0QuYSBsaWJiaWdudW0uYQorc2h1dHRsZVZGRF9MREFERCA9ICAgQGxpYnVzYl9saWJz
QCBsaWJMQ0QuYSBsaWJiaWdudW0uYQogc3ZnYV9MREFERCA9ICAgICAgICAgQExJQlNWR0FACiB0
Njk2M19MREFERCA9ICAgICAgICBsaWJMQ0QuYQogdHlhbl9MREFERCA9ICAgICAgICAgbGliTENE
LmEgbGliYmlnbnVtLmEKQEAgLTk2LDYgKzk4LDcgQEAKIHNlZDE1MjBfU09VUkNFUyA9ICAgIGxj
ZC5oIHNlZDE1MjAuYyBzZWQxNTIwLmggc2VkMTUyMGZtLmMgc2VkMTUyMGZtLmggcG9ydC5oIHJl
cG9ydC5oCiBzZXJpYWxQT1NfU09VUkNFUyA9ICBsY2QuaCBsY2RfbGliLmggc2VyaWFsUE9TLmMg
c2VyaWFsUE9TLmggcmVwb3J0LmggYWR2X2JpZ251bS5oCiBzZXJpYWxWRkRfU09VUkNFUyA9ICBs
Y2QuaCBsY2RfbGliLmggc2VyaWFsVkZELmMgc2VyaWFsVkZELmggcmVwb3J0LmggYWR2X2JpZ251
bS5oIHNlcmlhbFZGRF9kaXNwbGF5cy5jIHNlcmlhbFZGRF9kaXNwbGF5cy5oIHNlcmlhbFZGRF9p
by5jIHNlcmlhbFZGRF9pby5oCitzaHV0dGxlVkZEX1NPVVJDRVMgPSBsY2QuaCBzaHV0dGxlVkZE
LmMgc2h1dHRsZVZGRC5oIHJlcG9ydC5oCiBzdHY1NzMwX1NPVVJDRVMgPSAgICBsY2QuaCBzdHY1
NzMwLmMgc3R2NTczMC5oIHJlcG9ydC5oCiBzdmdhX1NPVVJDRVMgPSAgICAgICBsY2QuaCBzdmdh
bGliX2Rydi5jIHN2Z2FsaWJfZHJ2LmggcmVwb3J0LmgKIHQ2OTYzX1NPVVJDRVMgPSAgICAgIGxj
ZC5oIGxjZF9saWIuaCB0Njk2My5jIHQ2OTYzLmggdDY5NjNfZm9udC5oIHJlcG9ydC5oCmRpZmYg
LU5hdXIgbGNkcHJvYy1jdnMvc2VydmVyL2RyaXZlcnMvc2h1dHRsZVZGRC5jIGxjZHByb2Mvc2Vy
dmVyL2RyaXZlcnMvc2h1dHRsZVZGRC5jCi0tLSBsY2Rwcm9jLWN2cy9zZXJ2ZXIvZHJpdmVycy9z
aHV0dGxlVkZELmMJMTk2OS0xMi0zMSAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDAKKysrIGxjZHBy
b2Mvc2VydmVyL2RyaXZlcnMvc2h1dHRsZVZGRC5jCTIwMDctMDctMjggMTI6MDQ6MzEuMDAwMDAw
MDAwIC0wNzAwCkBAIC0wLDAgKzEsMzExIEBACisvKgorICogU2h1dHRsZVZGRCBkcml2ZXIKKyAq
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhpZW4gVnUKKyAqIAorICogVGhpcyBwcm9ncmFtIGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAq
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogYW55IGxhdGVyIHZlcnNpb24uCisgKiAKKyAq
IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKiAKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
cHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxCisgKgorICogQmFzZWQgb24gd29yayBmcm9tOgorICogICBMQ0Rwcm9jIHRleHQgZHJp
dmVyCisgKiAgIHNldHZmZCBmcm9tIGh0dHA6Ly9qZXJlbXkuaW5mb2dhbWkuY29tL1NldFZGRAor
ICogICB2ZmQgZnJvbSBodHRwOi8vd3d3LmxpbnV4b3dsLmNvbS9zb2Z0d2FyZS8KKyAqLworCisK
KyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2lu
Y2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5o
PgorI2luY2x1ZGUgPHVzYi5oPgorCisjaW5jbHVkZSAibGNkLmgiCisjaW5jbHVkZSAic2h1dHRs
ZVZGRC5oIgorI2luY2x1ZGUgInJlcG9ydC5oIgorCisKKy8vIFZhcmlhYmxlcyBpbiB0aGUgZHJp
dmVyIG1vZHVsZQorTU9EVUxFX0VYUE9SVCBjaGFyICphcGlfdmVyc2lvbiA9IEFQSV9WRVJTSU9O
OworTU9EVUxFX0VYUE9SVCBpbnQgc3RheV9pbl9mb3JlZ3JvdW5kID0gMDsKK01PRFVMRV9FWFBP
UlQgaW50IHN1cHBvcnRzX211bHRpcGxlID0gMDsKK01PRFVMRV9FWFBPUlQgY2hhciAqc3ltYm9s
X3ByZWZpeCA9ICJzaHV0dGxlVkZEXyI7CisKKworLy8gUHJpdmF0ZSBkYXRhCit0eXBlZGVmIHN0
cnVjdCBkcml2ZXJfcHJpdmF0ZV9kYXRhIHsKKyAgdXNiX2Rldl9oYW5kbGUgKmRldjsKKyAgaW50
IHdpZHRoOworICBpbnQgaGVpZ2h0OworICBpbnQgY2VsbHdpZHRoOworICBpbnQgY2VsbGhlaWdo
dDsKKyAgY2hhciAqZnJhbWVidWY7CisgIGNoYXIgKmxhc3RfZnJhbWVidWY7CisgIHVuc2lnbmVk
IGxvbmcgaWNvbnM7CisgIHVuc2lnbmVkIGxvbmcgbGFzdF9pY29uczsKK30gUHJpdmF0ZURhdGE7
CisKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vIEZvciBTaHV0dGxl
VkZEIE91dHB1dCAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLworCit2b2lkIHNlbmRfcGFja2V0KERyaXZlciAqZHJ2dGhpcywgY2hhciogcGFja2V0KSB7
CisgIFByaXZhdGVEYXRhICpwID0gZHJ2dGhpcy0+cHJpdmF0ZV9kYXRhOworCisgIGludCBpOwor
ICBmb3IgKGkgPSAwOyBpIDwgU0hVVFRMRV9WRkRfV1JJVEVfQVRURU1QVFM7ICsraSkgeworICAg
IGlmICh1c2JfY29udHJvbF9tc2cocC0+ZGV2LAorICAgICAgICAgICAgICAgICAgICAgICAgMHgy
MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIDB4MDksCisgICAgICAgICAgICAgICAgICAgICAg
ICAweDAyMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEsCisgICAgICAgICAgICAg
ICAgICAgICAgICBwYWNrZXQsCisgICAgICAgICAgICAgICAgICAgICAgICBTSFVUVExFX1ZGRF9Q
QUNLRVRfU0laRSwgMTAwKSA9PQorCVNIVVRUTEVfVkZEX1BBQ0tFVF9TSVpFKSB7CisgICAgICB1
c2xlZXAoU0hVVFRMRV9WRkRfU1VDQ0VTU19TTEVFUF9VU0VDKTsKKyAgICAgIGJyZWFrOworICAg
IH0KKyAgICByZXBvcnQoUlBUX0VSUiwgIiVzOiB3cml0ZSBmYWlsZWQgcmV0cnlpbmcuLi4iLCBk
cnZ0aGlzLT5uYW1lKTsKKyAgICB1c2xlZXAoU0hVVFRMRV9WRkRfUkVUUllfU0xFRVBfVVNFQyk7
CisgIH0KK30KKworCitNT0RVTEVfRVhQT1JUIGludCBzaHV0dGxlVkZEX2luaXQoRHJpdmVyICpk
cnZ0aGlzKSB7CisgIFByaXZhdGVEYXRhICpwOworCisgIC8vIGFsbG9jYXRlIGFuZCBzdG9yZSBw
cml2YXRlIGRhdGEKKyAgcCA9IChQcml2YXRlRGF0YSAqKWNhbGxvYygxLCBzaXplb2YoUHJpdmF0
ZURhdGEpKTsKKyAgaWYgKHAgPT0gTlVMTCkgeworICAgIHJlcG9ydChSUFRfRVJSLCAiJXM6IHVu
YWJsZSB0byBhbGxvY2F0ZSBwcml2YXRlIGRhdGEiLCBkcnZ0aGlzLT5uYW1lKTsKKyAgICByZXR1
cm4gLTE7CisgIH0KKyAgaWYgKGRydnRoaXMtPnN0b3JlX3ByaXZhdGVfcHRyKGRydnRoaXMsIHAp
IDwgMCkgeworICAgIHJlcG9ydChSUFRfRVJSLCAiJXM6IHVuYWJsZSB0byBzdG9yZSBwcml2YXRl
IGRhdGEiLCBkcnZ0aGlzLT5uYW1lKTsKKyAgICByZXR1cm4gLTE7CisgIH0KKworICAvLyBpbml0
aWFsaXplIHByaXZhdGUgZGF0YQorICBwLT5kZXYgPSBOVUxMOworICBwLT53aWR0aCA9IFNIVVRU
TEVfVkZEX1dJRFRIOworICBwLT5oZWlnaHQgPSBTSFVUVExFX1ZGRF9IRUlHSFQ7CisgIHAtPmNl
bGx3aWR0aCA9IFNIVVRUTEVfVkZEX0NFTExXSURUSDsKKyAgcC0+Y2VsbGhlaWdodCA9IFNIVVRU
TEVfVkZEX0NFTExIRUlHSFQ7CisgIHAtPmZyYW1lYnVmID0gKGNoYXIgKiltYWxsb2MocC0+d2lk
dGggKiBwLT5oZWlnaHQpOworICBpZiAocC0+ZnJhbWVidWYgPT0gTlVMTCkgeworICAgIHJlcG9y
dChSUFRfRVJSLCAiJXM6IHVuYWJsZSB0byBjcmVhdGUgZnJhbWVidWZmZXIiLCBkcnZ0aGlzLT5u
YW1lKTsKKyAgICByZXR1cm4gLTE7CisgIH0KKyAgbWVtc2V0KHAtPmZyYW1lYnVmLCAnICcsIHAt
PndpZHRoICogcC0+aGVpZ2h0KTsKKyAgcC0+bGFzdF9mcmFtZWJ1ZiA9IChjaGFyICopbWFsbG9j
KHAtPndpZHRoICogcC0+aGVpZ2h0KTsKKyAgaWYgKHAtPmxhc3RfZnJhbWVidWYgPT0gTlVMTCkg
eworICAgIHJlcG9ydChSUFRfRVJSLCAiJXM6IHVuYWJsZSB0byBjcmVhdGUgc2Vjb25kIGZyYW1l
YnVmZmVyIiwgZHJ2dGhpcy0+bmFtZSk7CisgICAgcmV0dXJuIC0xOworICB9CisgIG1lbXNldChw
LT5sYXN0X2ZyYW1lYnVmLCAwLCBwLT53aWR0aCAqIHAtPmhlaWdodCk7CisgIHAtPmljb25zID0g
MDsKKyAgcC0+bGFzdF9pY29ucyA9IDA7CisKKyAgLy8gZmluZCBWRkQKKyAgdXNiX2luaXQoKTsK
KyAgdXNiX2ZpbmRfYnVzc2VzKCk7CisgIHVzYl9maW5kX2RldmljZXMoKTsKKyAgc3RydWN0IHVz
Yl9idXMgKmJ1czsKKyAgZm9yIChidXMgPSB1c2JfZ2V0X2J1c3NlcygpOyBidXMgIT0gTlVMTDsg
YnVzID0gYnVzLT5uZXh0KSB7CisgICAgc3RydWN0IHVzYl9kZXZpY2UgKmRldjsKKyAgICBmb3Ig
KGRldiA9IGJ1cy0+ZGV2aWNlczsgZGV2ICE9IE5VTEw7IGRldiA9IGRldi0+bmV4dCkgeworICAg
ICAgaWYgKGRldi0+ZGVzY3JpcHRvci5pZFZlbmRvciA9PSBTSFVUVExFX1ZGRF9WRU5ET1JfSUQg
JiYKKyAgICAgICAgICBkZXYtPmRlc2NyaXB0b3IuaWRQcm9kdWN0ID09IFNIVVRUTEVfVkZEX1BS
T0RVQ1RfSUQpIHsKKyAgICAgICAgcC0+ZGV2ID0gdXNiX29wZW4oZGV2KTsKKyAgICAgIH0KKyAg
ICB9CisgIH0KKyAgaWYgKHAtPmRldiA9PSBOVUxMKSB7CisgICAgcmVwb3J0KFJQVF9FUlIsICIl
czogdW5hYmxlIHRvIGZpbmQgU2h1dHRsZSBWRkQiLCBkcnZ0aGlzLT5uYW1lKTsKKyAgICByZXR1
cm4gLTE7CisgIH0KKyAgaW50IGNsYWltX3JjID0gdXNiX2NsYWltX2ludGVyZmFjZShwLT5kZXYs
IFNIVVRUTEVfVkZEX0lOVEVSRkFDRV9OVU0pOworICBpZiAoY2xhaW1fcmMgPCAwKSB7CisgICAg
cmVwb3J0KFJQVF9FUlIsCisgICAgICAgICAgICIlczogdW5hYmxlIHRvIGNsYWltIGludGVyZmFj
ZTogJXMiLAorCSAgIGRydnRoaXMtPm5hbWUsIHN0cmVycm9yKGNsYWltX3JjKSk7CisgICAgcmV0
dXJuIC0xOworICB9CisKKyAgcmVwb3J0KFJQVF9ERUJVRywgIiVzOiBpbml0KCkgZG9uZSIsIGRy
dnRoaXMtPm5hbWUpOworICByZXR1cm4gMDsKK30KKworCitNT0RVTEVfRVhQT1JUIHZvaWQgc2h1
dHRsZVZGRF9jbG9zZShEcml2ZXIgKmRydnRoaXMpIHsKKyAgUHJpdmF0ZURhdGEgKnAgPSBkcnZ0
aGlzLT5wcml2YXRlX2RhdGE7CisgIGlmIChwICE9IE5VTEwpIHsKKyAgICBpZiAocC0+ZGV2ICE9
IE5VTEwpIHsKKyAgICAgIGlmICh1c2JfcmVsZWFzZV9pbnRlcmZhY2UocC0+ZGV2LCBTSFVUVExF
X1ZGRF9JTlRFUkZBQ0VfTlVNKSA8IDApIHsKKyAgICAgICAgcmVwb3J0KFJQVF9FUlIsICIlczog
dW5hYmxlIHRvIHJlbGVhc2UgaW50ZXJmYWNlIiwgZHJ2dGhpcy0+bmFtZSk7CisgICAgICB9Cisg
ICAgICBpZiAodXNiX2Nsb3NlKHAtPmRldikgPCAwKSB7CisgICAgICAgIHJlcG9ydChSUFRfRVJS
LCAiJXM6IHVuYWJsZSB0byBjbG9zZSBkZXZpY2UiLCBkcnZ0aGlzLT5uYW1lKTsKKyAgICAgIH0K
KyAgICAgIHAtPmRldiA9IE5VTEw7CisgICAgfQorICAgIGlmIChwLT5mcmFtZWJ1ZiAhPSBOVUxM
KSB7CisgICAgICBmcmVlKHAtPmZyYW1lYnVmKTsKKyAgICB9CisgICAgaWYgKHAtPmxhc3RfZnJh
bWVidWYgIT0gTlVMTCkgeworICAgICAgZnJlZShwLT5sYXN0X2ZyYW1lYnVmKTsKKyAgICB9Cisg
ICAgZnJlZShwKTsKKyAgfQorICBkcnZ0aGlzLT5zdG9yZV9wcml2YXRlX3B0cihkcnZ0aGlzLCBO
VUxMKTsKK30KKworCitNT0RVTEVfRVhQT1JUIGludCBzaHV0dGxlVkZEX3dpZHRoKERyaXZlciAq
ZHJ2dGhpcykgeworICBQcml2YXRlRGF0YSAqcCA9IGRydnRoaXMtPnByaXZhdGVfZGF0YTsKKyAg
cmV0dXJuIHAtPndpZHRoOworfQorCisKK01PRFVMRV9FWFBPUlQgaW50IHNodXR0bGVWRkRfaGVp
Z2h0KERyaXZlciAqZHJ2dGhpcykgeworICBQcml2YXRlRGF0YSAqcCA9IGRydnRoaXMtPnByaXZh
dGVfZGF0YTsKKyAgcmV0dXJuIHAtPmhlaWdodDsKK30KKworCitNT0RVTEVfRVhQT1JUIHZvaWQg
c2h1dHRsZVZGRF9jbGVhcihEcml2ZXIgKmRydnRoaXMpIHsKKyAgUHJpdmF0ZURhdGEgKnAgPSBk
cnZ0aGlzLT5wcml2YXRlX2RhdGE7CisgIG1lbXNldChwLT5mcmFtZWJ1ZiwgJyAnLCBwLT53aWR0
aCAqIHAtPmhlaWdodCk7CisgIHAtPmljb25zID0gMDsKK30KKworCitNT0RVTEVfRVhQT1JUIHZv
aWQgc2h1dHRsZVZGRF9mbHVzaChEcml2ZXIgKmRydnRoaXMpIHsKKyAgUHJpdmF0ZURhdGEgKnAg
PSBkcnZ0aGlzLT5wcml2YXRlX2RhdGE7CisgIGNoYXIgcGFja2V0W1NIVVRUTEVfVkZEX1BBQ0tF
VF9TSVpFXTsKKworICAvLyBzZXQgdGV4dAorICBpZiAoc3RybmNtcChwLT5sYXN0X2ZyYW1lYnVm
LCBwLT5mcmFtZWJ1ZiwgcC0+d2lkdGggKiBwLT5oZWlnaHQpICE9IDApIHsKKyAgICAvLyBtb3Zl
IGN1cnNvciB0byBmcm9udAorICAgIG1lbXNldChwYWNrZXQsIDAsIFNIVVRUTEVfVkZEX1BBQ0tF
VF9TSVpFKTsKKyAgICBwYWNrZXRbMF0gPSAoMSA8PCA0KSArIDE7CisgICAgcGFja2V0WzFdID0g
MjsKKyAgICBzZW5kX3BhY2tldChkcnZ0aGlzLCBwYWNrZXQpOworICAKKyAgICAvLyB3cml0ZSBm
cmFtZWJ1ZlswLTZdCisgICAgbWVtc2V0KHBhY2tldCwgMCwgU0hVVFRMRV9WRkRfUEFDS0VUX1NJ
WkUpOworICAgIHBhY2tldFswXSA9ICg5IDw8IDQpICsgNzsKKyAgICBzdHJuY3B5KCZwYWNrZXRb
MV0sICZwLT5mcmFtZWJ1ZlswXSwgNyk7CisgICAgc2VuZF9wYWNrZXQoZHJ2dGhpcywgcGFja2V0
KTsKKyAgCisgICAgLy8gd3JpdGUgZnJhbWVidWZbNy0xM10KKyAgICBtZW1zZXQocGFja2V0LCAw
LCBTSFVUVExFX1ZGRF9QQUNLRVRfU0laRSk7CisgICAgcGFja2V0WzBdID0gKDkgPDwgNCkgKyA3
OworICAgIHN0cm5jcHkoJnBhY2tldFsxXSwgJnAtPmZyYW1lYnVmWzddLCA3KTsKKyAgICBzZW5k
X3BhY2tldChkcnZ0aGlzLCBwYWNrZXQpOworICAKKyAgICAvLyB3cml0ZSBmcmFtZWJ1ZlsxNC0y
MF0KKyAgICBtZW1zZXQocGFja2V0LCAwLCBTSFVUVExFX1ZGRF9QQUNLRVRfU0laRSk7CisgICAg
cGFja2V0WzBdID0gKDkgPDwgNCkgKyA2OworICAgIHN0cm5jcHkoJnBhY2tldFsxXSwgJnAtPmZy
YW1lYnVmWzE0XSwgNik7CisgICAgc2VuZF9wYWNrZXQoZHJ2dGhpcywgcGFja2V0KTsKKworICAg
IHN0cm5jcHkocC0+bGFzdF9mcmFtZWJ1ZiwgcC0+ZnJhbWVidWYsIHAtPndpZHRoICogcC0+aGVp
Z2h0KTsKKyAgfQorCisgIC8vIHNldCBpY29ucworICBpZiAocC0+bGFzdF9pY29ucyAhPSBwLT5p
Y29ucykgeworICAgIG1lbXNldChwYWNrZXQsIDAsIFNIVVRUTEVfVkZEX1BBQ0tFVF9TSVpFKTsK
KyAgICBwYWNrZXRbMF0gPSAoNyA8PCA0KSArIDQ7CisgICAgcGFja2V0WzFdID0gKHAtPmljb25z
ID4+IDE1KSAmIDB4MWY7CisgICAgcGFja2V0WzJdID0gKHAtPmljb25zID4+IDEwKSAmIDB4MWY7
CisgICAgcGFja2V0WzNdID0gKHAtPmljb25zID4+IDUpICYgMHgxZjsKKyAgICBwYWNrZXRbNF0g
PSBwLT5pY29ucyAmIDB4MWY7CisgICAgc2VuZF9wYWNrZXQoZHJ2dGhpcywgcGFja2V0KTsKKwor
ICAgIHAtPmxhc3RfaWNvbnMgPSBwLT5pY29uczsKKyAgfQorfQorCitNT0RVTEVfRVhQT1JUIHZv
aWQgc2h1dHRsZVZGRF9zdHJpbmcoCisgICAgRHJpdmVyICpkcnZ0aGlzLCBpbnQgeCwgaW50IHks
IGNvbnN0IGNoYXIgc3RyaW5nW10pIHsKKyAgUHJpdmF0ZURhdGEgKnAgPSBkcnZ0aGlzLT5wcml2
YXRlX2RhdGE7CisKKyAgLS14OyAtLXk7CisgIGlmICh5IDwgMCB8fCB5ID49IHAtPmhlaWdodCkK
KyAgICByZXR1cm47CisKKyAgaW50IGk7CisgIGZvciAoaSA9IDA7IChzdHJpbmdbaV0gIT0gJ1ww
JykgJiYgKHggPCBwLT53aWR0aCk7ICsraSwgKyt4KSB7CisgICAgaWYgKHggPj0gMCkgeyAgICAv
LyBubyB3cml0ZSBsZWZ0IG9mIGxlZnQgYm9yZGVyCisgICAgICBwLT5mcmFtZWJ1ZlsoeSAqIHAt
PndpZHRoKSArIHhdID0gc3RyaW5nW2ldOworICAgIH0KKyAgfQorfQorCisKK01PRFVMRV9FWFBP
UlQgdm9pZCBzaHV0dGxlVkZEX2NocihEcml2ZXIgKmRydnRoaXMsIGludCB4LCBpbnQgeSwgY2hh
ciBjKSB7CisgIFByaXZhdGVEYXRhICpwID0gZHJ2dGhpcy0+cHJpdmF0ZV9kYXRhOworCisgIC0t
eDsgLS15OworICBpZiAoeCA+PSAwICYmIHggPCBwLT53aWR0aCAmJiB5ID49IDAgJiYgeSA8IHAt
PmhlaWdodCkgeworICAgIHAtPmZyYW1lYnVmWyh5ICogcC0+d2lkdGgpICsgeF0gPSBjOworICB9
Cit9CisKKworTU9EVUxFX0VYUE9SVCBpbnQgc2h1dHRsZVZGRF9pY29uKERyaXZlciAqZHJ2dGhp
cywgaW50IHgsIGludCB5LCBpbnQgaWNvbikgeworICBQcml2YXRlRGF0YSAqcCA9IGRydnRoaXMt
PnByaXZhdGVfZGF0YTsKKworICBzd2l0Y2ggKGljb24pIHsKKyAgICBjYXNlIElDT05fU1RPUDoK
KyAgICAgIHAtPmljb25zID0gU0hVVFRMRV9WRkRfSUNPTl9TVE9QOworICAgICAgcmV0dXJuIDA7
CisgICAgY2FzZSBJQ09OX1BBVVNFOgorICAgICAgcC0+aWNvbnMgPSBTSFVUVExFX1ZGRF9JQ09O
X1BBVVNFOworICAgICAgcmV0dXJuIDA7CisgICAgY2FzZSBJQ09OX1BMQVk6CisgICAgICBwLT5p
Y29ucyA9IFNIVVRUTEVfVkZEX0lDT05fUExBWTsKKyAgICAgIHJldHVybiAwOworICAgIGNhc2Ug
SUNPTl9QTEFZUjoKKyAgICAgIHAtPmljb25zID0gU0hVVFRMRV9WRkRfSUNPTl9SRVZFUlNFOwor
ICAgICAgcmV0dXJuIDA7CisgICAgY2FzZSBJQ09OX0ZGOgorICAgICAgcC0+aWNvbnMgPSBTSFVU
VExFX1ZGRF9JQ09OX0ZBU1RGT1JXQVJEOworICAgICAgcmV0dXJuIDA7CisgICAgY2FzZSBJQ09O
X0ZSOgorICAgICAgcC0+aWNvbnMgPSBTSFVUVExFX1ZGRF9JQ09OX1JFV0lORDsKKyAgICAgIHJl
dHVybiAwOworICAgIGNhc2UgSUNPTl9SRUM6CisgICAgICBwLT5pY29ucyA9IFNIVVRUTEVfVkZE
X0lDT05fUkVDT1JEOworICAgICAgcmV0dXJuIDA7CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVy
biAtMTsKKyAgfQorfQorCisKK01PRFVMRV9FWFBPUlQgaW50IHNodXR0bGVWRkRfY2VsbHdpZHRo
KERyaXZlciAqZHJ2dGhpcykgeworICBQcml2YXRlRGF0YSAqcCA9IGRydnRoaXMtPnByaXZhdGVf
ZGF0YTsKKyAgcmV0dXJuIHAtPmNlbGx3aWR0aDsKK30KKworCitNT0RVTEVfRVhQT1JUIGludCBz
aHV0dGxlVkZEX2NlbGxoZWlnaHQoRHJpdmVyICpkcnZ0aGlzKSB7CisgIFByaXZhdGVEYXRhICpw
ID0gZHJ2dGhpcy0+cHJpdmF0ZV9kYXRhOworICByZXR1cm4gcC0+Y2VsbGhlaWdodDsKK30KZGlm
ZiAtTmF1ciBsY2Rwcm9jLWN2cy9zZXJ2ZXIvZHJpdmVycy9zaHV0dGxlVkZELmggbGNkcHJvYy9z
ZXJ2ZXIvZHJpdmVycy9zaHV0dGxlVkZELmgKLS0tIGxjZHByb2MtY3ZzL3NlcnZlci9kcml2ZXJz
L3NodXR0bGVWRkQuaAkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAorKysgbGNk
cHJvYy9zZXJ2ZXIvZHJpdmVycy9zaHV0dGxlVkZELmgJMjAwNy0wNy0yOCAxMjowNDo0Mi4wMDAw
MDAwMDAgLTA3MDAKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIFNodXR0bGVWRkQgZHJpdmVyCisg
KgorICogQ29weXJpZ2h0IChDKSAyMDA3IFRoaWVuIFZ1CisgKiAKKyAqIFRoaXMgcHJvZ3JhbSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisg
KiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIGFueSBsYXRlciB2ZXJzaW9uLgorICogCisg
KiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICogCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlz
IHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMQorICoKKyAqIEJhc2VkIG9uIHdvcmsgZnJvbToKKyAqICAgTENEcHJvYyB0ZXh0IGRy
aXZlcgorICogICBzZXR2ZmQgZnJvbSBodHRwOi8vamVyZW15LmluZm9nYW1pLmNvbS9TZXRWRkQK
KyAqICAgdmZkIGZyb20gaHR0cDovL3d3dy5saW51eG93bC5jb20vc29mdHdhcmUvCisgKi8KKwor
I2lmbmRlZiBTSFVUVExFX1ZGRF9ICisjZGVmaW5lIFNIVVRUTEVfVkZEX0gKKworI2luY2x1ZGUg
ImxjZC5oIgorCisvLyBtYW5kYXRvcnkgZnVuY3Rpb25zIChuZWNlc3NhcnkgZm9yIGFsbCBkcml2
ZXJzKQorTU9EVUxFX0VYUE9SVCBpbnQgc2h1dHRsZVZGRF9pbml0KERyaXZlciAqZHJ2dGhpcyk7
CitNT0RVTEVfRVhQT1JUIHZvaWQgc2h1dHRsZVZGRF9jbG9zZShEcml2ZXIgKmRydnRoaXMpOwor
CisvLyBlc3NlbnRpYWwgb3V0cHV0IGZ1bmN0aW9ucyAobmVjZXNzYXJ5IGZvciBvdXRwdXQgZHJp
dmVycykKK01PRFVMRV9FWFBPUlQgaW50IHNodXR0bGVWRkRfd2lkdGgoRHJpdmVyICpkcnZ0aGlz
KTsKK01PRFVMRV9FWFBPUlQgaW50IHNodXR0bGVWRkRfaGVpZ2h0KERyaXZlciAqZHJ2dGhpcyk7
CitNT0RVTEVfRVhQT1JUIHZvaWQgc2h1dHRsZVZGRF9jbGVhcihEcml2ZXIgKmRydnRoaXMpOwor
TU9EVUxFX0VYUE9SVCB2b2lkIHNodXR0bGVWRkRfZmx1c2goRHJpdmVyICpkcnZ0aGlzKTsKK01P
RFVMRV9FWFBPUlQgdm9pZCBzaHV0dGxlVkZEX3N0cmluZygKKyAgICBEcml2ZXIgKmRydnRoaXMs
IGludCB4LCBpbnQgeSwgY29uc3QgY2hhciBzdHJpbmdbXSk7CitNT0RVTEVfRVhQT1JUIHZvaWQg
c2h1dHRsZVZGRF9jaHIoRHJpdmVyICpkcnZ0aGlzLCBpbnQgeCwgaW50IHksIGNoYXIgYyk7CisK
Ky8vIGV4dGVuZGVkIG91dHB1dCBmdW5jdGlvbnMKK01PRFVMRV9FWFBPUlQgaW50IHNodXR0bGVW
RkRfaWNvbihEcml2ZXIgKmRydnRoaXMsIGludCB4LCBpbnQgeSwgaW50IGljb24pOworCisvLyB1
c2VyLWRlZmluZWQgY2hhcmFjdGVyIGZ1bmN0aW9ucworTU9EVUxFX0VYUE9SVCBpbnQgc2h1dHRs
ZVZGRF9jZWxsd2lkdGgoRHJpdmVyICpkcnZ0aGlzKTsKK01PRFVMRV9FWFBPUlQgaW50IHNodXR0
bGVWRkRfY2VsbGhlaWdodChEcml2ZXIgKmRydnRoaXMpOworCisKKy8vIFZGRCBwaHlzaWNhbCBk
aW1lbnNpb25zCisjZGVmaW5lIFNIVVRUTEVfVkZEX1dJRFRIICAgICAgICAgMjAKKyNkZWZpbmUg
U0hVVFRMRV9WRkRfSEVJR0hUICAgICAgICAxCisjZGVmaW5lIFNIVVRUTEVfVkZEX0NFTExXSURU
SCAgICAgNQorI2RlZmluZSBTSFVUVExFX1ZGRF9DRUxMSEVJR0hUICAgIDgKKworLy8gVkZEIFVT
QiBwcm9wZXJ0aWVzCisjZGVmaW5lIFNIVVRUTEVfVkZEX1ZFTkRPUl9JRCAgICAgICAweDEzMDgK
KyNkZWZpbmUgU0hVVFRMRV9WRkRfUFJPRFVDVF9JRCAgICAgIDB4MDAwMworI2RlZmluZSBTSFVU
VExFX1ZGRF9JTlRFUkZBQ0VfTlVNICAgMQorCisvLyBWRkQgVVNCIGNvbnRyb2wgbWVzc2FnZQor
I2RlZmluZSBTSFVUVExFX1ZGRF9QQUNLRVRfU0laRSAgICAgICAgICA4CisjZGVmaW5lIFNIVVRU
TEVfVkZEX1dSSVRFX0FUVEVNUFRTICAgICAgIDMKKyNkZWZpbmUgU0hVVFRMRV9WRkRfU1VDQ0VT
U19TTEVFUF9VU0VDICAgMjU2MDAKKyNkZWZpbmUgU0hVVFRMRV9WRkRfUkVUUllfU0xFRVBfVVNF
QyAgICAgMjU2MDAKKworLy8gVkZEIEljb25zCisjZGVmaW5lIFNIVVRUTEVfVkZEX0lDT05fQ0xP
Q0sgICAgICAgICAgKDEgPDwgNCkKKyNkZWZpbmUgU0hVVFRMRV9WRkRfSUNPTl9SQURJTyAgICAg
ICAgICAoMSA8PCAzKQorI2RlZmluZSBTSFVUVExFX1ZGRF9JQ09OX01VU0lDICAgICAgICAgICgx
IDw8IDIpCisjZGVmaW5lIFNIVVRUTEVfVkZEX0lDT05fQ0RfRFZEICAgICAgICAgKDEgPDwgMSkK
KyNkZWZpbmUgU0hVVFRMRV9WRkRfSUNPTl9URUxFVklTSU9OICAgICAoMSA8PCAwKQorI2RlZmlu
ZSBTSFVUVExFX1ZGRF9JQ09OX0NBTUVSQSAgICAgICAgICgxIDw8IDkpCisjZGVmaW5lIFNIVVRU
TEVfVkZEX0lDT05fUkVXSU5EICAgICAgICAgKDEgPDwgOCkKKyNkZWZpbmUgU0hVVFRMRV9WRkRf
SUNPTl9SRUNPUkQgICAgICAgICAoMSA8PCA3KQorI2RlZmluZSBTSFVUVExFX1ZGRF9JQ09OX1BM
QVkgICAgICAgICAgICgxIDw8IDYpCisjZGVmaW5lIFNIVVRUTEVfVkZEX0lDT05fUEFVU0UgICAg
ICAgICAgKDEgPDwgNSkKKyNkZWZpbmUgU0hVVFRMRV9WRkRfSUNPTl9TVE9QICAgICAgICAgICAo
MSA8PCAxNCkKKyNkZWZpbmUgU0hVVFRMRV9WRkRfSUNPTl9GQVNURk9SV0FSRCAgICAoMSA8PCAx
MykKKyNkZWZpbmUgU0hVVFRMRV9WRkRfSUNPTl9SRVZFUlNFICAgICAgICAoMSA8PCAxMikKKyNk
ZWZpbmUgU0hVVFRMRV9WRkRfSUNPTl9SRVBFQVQgICAgICAgICAoMSA8PCAxMSkKKyNkZWZpbmUg
U0hVVFRMRV9WRkRfSUNPTl9NVVRFICAgICAgICAgICAoMSA8PCAxMCkKKyNkZWZpbmUgU0hVVFRM
RV9WRkRfSUNPTl9WT0xfMDEgICAgICAgICAoMSA8PCAxNSkKKyNkZWZpbmUgU0hVVFRMRV9WRkRf
SUNPTl9WT0xfMDIgICAgICAgICAoMiA8PCAxNSkKKyNkZWZpbmUgU0hVVFRMRV9WRkRfSUNPTl9W
T0xfMDMgICAgICAgICAoMyA8PCAxNSkKKyNkZWZpbmUgU0hVVFRMRV9WRkRfSUNPTl9WT0xfMDQg
ICAgICAgICAoNCA8PCAxNSkKKyNkZWZpbmUgU0hVVFRMRV9WRkRfSUNPTl9WT0xfMDUgICAgICAg
ICAoNSA8PCAxNSkKKyNkZWZpbmUgU0hVVFRMRV9WRkRfSUNPTl9WT0xfMDYgICAgICAgICAoNiA8
PCAxNSkKKyNkZWZpbmUgU0hVVFRMRV9WRkRfSUNPTl9WT0xfMDcgICAgICAgICAoNyA8PCAxNSkK
KyNkZWZpbmUgU0hVVFRMRV9WRkRfSUNPTl9WT0xfMDggICAgICAgICAoOCA8PCAxNSkKKyNkZWZp
bmUgU0hVVFRMRV9WRkRfSUNPTl9WT0xfMDkgICAgICAgICAoOSA8PCAxNSkKKyNkZWZpbmUgU0hV
VFRMRV9WRkRfSUNPTl9WT0xfMTAgICAgICAgICAoMTAgPDwgMTUpCisjZGVmaW5lIFNIVVRUTEVf
VkZEX0lDT05fVk9MXzExICAgICAgICAgKDExIDw8IDE1KQorI2RlZmluZSBTSFVUVExFX1ZGRF9J
Q09OX1ZPTF8xMiAgICAgICAgICgxMiA8PCAxNSkKKworI2VuZGlmCg==
------=_Part_10336_18013591.1185649908863--