[Lcdproc] ShuttleVFD driver

Thien Vu thien.vu@gmail.com
Tue Jul 3 23:07:01 2007


------=_Part_66026_23310398.1183503973746
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Hi,

I've written a basic LCDproc driver for the VFDs found on many of the
Shuttle XPC machines. Specifically I've been testing with the VFD
found on the Shuttle M1000.

I've attached the file below and was hoping this could be put into the
mainline trunk.

Feedback would be greatly appreciated. This is based on the work from
the text driver,
http://jeremy.infogami.com/SetVFD and http://www.linuxowl.com/software

The patch can also be downloaded from
http://www.thien-vu.dyndns.org/~thien/lcdproc-cvs-shuttleVFD.patch

Thanks,

Thien

-- 
http://www.thien-vu.dyndns.org/~thien

------=_Part_66026_23310398.1183503973746
Content-Type: text/x-patch; name=lcdproc-cvs-shuttleVFD.patch; 
	charset=ANSI_X3.4-1968
Content-Transfer-Encoding: base64
X-Attachment-Id: f_f3ozo5nf
Content-Disposition: attachment; filename="lcdproc-cvs-shuttleVFD.patch"

ZGlmZiAtTmF1ciBsY2Rwcm9jLWN2cy5vcmlnL0xDRGQuY29uZiBsY2Rwcm9jLWN2cy9MQ0RkLmNv
bmYKLS0tIGxjZHByb2MtY3ZzLm9yaWcvTENEZC5jb25mCTIwMDctMDYtMTcgMDU6MDc6MzcuMDAw
MDAwMDAwIC0wNzAwCisrKyBsY2Rwcm9jLWN2cy9MQ0RkLmNvbmYJMjAwNy0wNy0wMyAxNTo1Njow
Ny4wMDAwMDAwMDAgLTA3MDAKQEAgLTQ4LDcgKzQ4LDggQEAKICMgICBFeWVib3hPbmUsIGcxNSwg
Z2xjZGxpYiwgZ2xrLCBoZDQ0NzgwLCBpY3BfYTEwNiwgaW1vbiwgSU9XYXJyaW9yLAogIyAgIGly
bWFuLCBqb3ksIGxiMjE2LCBsY2RtMDAxLCBsY3Rlcm0sIGxpcmMsIE1EODgwMCwgbXM2OTMxLCBt
dGNfczE2MjA5eCwKICMgICBNdHhPcmIsIE5vcml0YWtlVkZELCBwaWNvbGNkLCBweXJhbWlkLCBz
ZWQxMzMwLCBzZWQxNTIwLCBzZXJpYWxQT1MsCi0jICAgc2VyaWFsVkZELCBzbGksIHN0djU3MzAs
IHN2Z2EsIHQ2OTYzLCB0ZXh0LCB0eWFuLCB1bGEyMDAsIHhvc2QKKyMgICBzZXJpYWxWRkQsIHNo
dXR0bGVWRkQsIHNsaSwgc3R2NTczMCwgc3ZnYSwgdDY5NjMsIHRleHQsIHR5YW4sIHVsYTIwMCwK
KyMgICB4b3NkCiBEcml2ZXI9Y3Vyc2VzCiAKICMgVGVsbHMgdGhlIGRyaXZlciB0byBiaW5kIHRv
IHRoZSBnaXZlbiBpbnRlcmZhY2UKQEAgLTg3MCw3ICs4NzEsOSBAQAogIyBlbmFibGUgSVNPIDg4
NTkgMSBjb21wYXRpYmlsaXR5IFtkZWZhdWx0OiB5ZXM7IGxlZ2FsOiB5ZXMsIG5vXQogI0lTT184
ODU5XzE9eWVzCiAKLQorIyMgc2h1dHRsZVZGRCBkcml2ZXIgIyMKK1tzaHV0dGxlVkZEXQorIyBO
byBvcHRpb25zCiAKICMjIHN0djU3MzAgZHJpdmVyICMjCiBbc3R2NTczMF0KZGlmZiAtTmF1ciBs
Y2Rwcm9jLWN2cy5vcmlnL2FjaW5jbHVkZS5tNCBsY2Rwcm9jLWN2cy9hY2luY2x1ZGUubTQKLS0t
IGxjZHByb2MtY3ZzLm9yaWcvYWNpbmNsdWRlLm00CTIwMDctMDUtMTcgMDU6MDg6MTUuMDAwMDAw
MDAwIC0wNzAwCisrKyBsY2Rwcm9jLWN2cy9hY2luY2x1ZGUubTQJMjAwNy0wNy0wMyAxNTo1NTo0
OS4wMDAwMDAwMDAgLTA3MDAKQEAgLTksMTQgKzksMTQgQEAKIAlbICAgICAgICAgICAgICAgICAg
ICBFeWVib3hPbmUsZzE1LGdsY2RsaWIsZ2xrLGhkNDQ3ODAsaWNwX2ExMDYsaW1vbixJT1dhcnJp
b3IsXQogCVsgICAgICAgICAgICAgICAgICAgIGlybWFuLGpveSxsYjIxNixsY2RtMDAxLGxjdGVy
bSxsaXJjLGxpcyxNRDg4MDAsbXM2OTMxLF0KIAlbICAgICAgICAgICAgICAgICAgICBtdGNfczE2
MjA5eCxNdHhPcmIsTm9yaXRha2VWRkQscGljb2xjZCxweXJhbWlkLHNlZDEzMzBdCi0JWyAgICAg
ICAgICAgICAgICAgICAgc2VkMTUyMCxzZXJpYWxQT1Msc2VyaWFsVkZELHNsaSxzdHY1NzMwLHN2
Z2EsdDY5NjMsdGV4dCxdCi0JWyAgICAgICAgICAgICAgICAgICAgdHlhbix1bGEyMDAseG9zZF0K
KwlbICAgICAgICAgICAgICAgICAgICBzZWQxNTIwLHNlcmlhbFBPUyxzZXJpYWxWRkQsc2h1dHRs
ZVZGRCxzbGksc3R2NTczMCxzdmdhXQorCVsgICAgICAgICAgICAgICAgICAgIHQ2OTYzLHRleHQs
dHlhbix1bGEyMDAseG9zZF0KIAlbICAgICAgICAgICAgICAgICAgJ2FsbCcgY29tcGlsZXMgYWxs
IGRyaXZlcnM7XQogCVsgICAgICAgICAgICAgICAgICAnYWxsLCF4eHgsIXl5eScgZGUtc2VsZWN0
cyBwcmV2aW91c2x5IHNlbGVjdGVkIGRyaXZlcnNdLAogCWRyaXZlcnM9IiRlbmFibGV2YWwiLAog
CWRyaXZlcnM9W2JheXJhZCxDRm9udHosQ0ZvbnR6NjMzLGN1cnNlcyxDd0xueCxnbGssbGIyMTYs
bGNkbTAwMSxNdHhPcmIscHlyYW1pZCx0ZXh0XSkKIAotYWxsRHJpdmVycz1bYmF5cmFkLENGb250
eixDRm9udHo2MzMsQ0ZvbnR6UGFja2V0LGN1cnNlcyxDd0xueCxlYTY1LEV5ZWJveE9uZSxnMTUs
Z2xjZGxpYixnbGssaGQ0NDc4MCxpY3BfYTEwNixpbW9uLElPV2Fycmlvcixpcm1hbixqb3ksbGIy
MTYsbGNkbTAwMSxsY3Rlcm0sbGlyYyxsaXMsTUQ4ODAwLG1zNjkzMSxtdGNfczE2MjA5eCxNdHhP
cmIsTm9yaXRha2VWRkQscGljb2xjZCxweXJhbWlkLHNlZDEzMzAsc2VkMTUyMCxzZXJpYWxQT1Ms
c2VyaWFsVkZELHNsaSxzdHY1NzMwLHN2Z2EsdDY5NjMsdGV4dCx0eWFuLHVsYTIwMCx4b3NkXQor
YWxsRHJpdmVycz1bYmF5cmFkLENGb250eixDRm9udHo2MzMsQ0ZvbnR6UGFja2V0LGN1cnNlcyxD
d0xueCxlYTY1LEV5ZWJveE9uZSxnMTUsZ2xjZGxpYixnbGssaGQ0NDc4MCxpY3BfYTEwNixpbW9u
LElPV2Fycmlvcixpcm1hbixqb3ksbGIyMTYsbGNkbTAwMSxsY3Rlcm0sbGlyYyxsaXMsTUQ4ODAw
LG1zNjkzMSxtdGNfczE2MjA5eCxNdHhPcmIsTm9yaXRha2VWRkQscGljb2xjZCxweXJhbWlkLHNl
ZDEzMzAsc2VkMTUyMCxzZXJpYWxQT1Msc2VyaWFsVkZELHNodXR0bGVWRkQsc2xpLHN0djU3MzAs
c3ZnYSx0Njk2Myx0ZXh0LHR5YW4sdWxhMjAwLHhvc2RdCiAKIGRyaXZlcnM9YGVjaG8gJGRyaXZl
cnMgfCBzZWQgLWUgJ3MvLC8gL2cnYAogCkBAIC0zMzgsNiArMzM4LDE0IEBACiAJCQlEUklWRVJT
PSIkRFJJVkVSUyBzZXJpYWxWRkQke1NPfSIKIAkJCWFjdGRyaXZlcnM9WyIkYWN0ZHJpdmVycyBz
ZXJpYWxWRkQiXQogCQkJOzsKKwkJc2h1dHRsZVZGRCkKKwkJCWlmIHRlc3QgIiRlbmFibGVfbGli
dXNiIiA9IHllcyA7IHRoZW4KKwkJCQlEUklWRVJTPSIkRFJJVkVSUyBzaHV0dGxlVkZEJHtTT30i
CisJCQkJYWN0ZHJpdmVycz1bIiRhY3Rkcml2ZXJzIHNodXR0bGVWRkQiXQorCQkJZWxzZQorCQkJ
CUFDX01TR19XQVJOKFtUaGUgc2h1dHRsZVZGRCBkcml2ZXIgbmVlZHMgdGhlIGxpYnVzYiBsaWJy
YXJ5Ll0pCisJCQlmaQorCQkJOzsKIAkJc2xpKQogCQkJRFJJVkVSUz0iJERSSVZFUlMgc2xpJHtT
T30iCiAJCQlhY3Rkcml2ZXJzPVsiJGFjdGRyaXZlcnMgc2xpIl0KZGlmZiAtTmF1ciBsY2Rwcm9j
LWN2cy5vcmlnL2NvbmZpZ3VyZSBsY2Rwcm9jLWN2cy9jb25maWd1cmUKLS0tIGxjZHByb2MtY3Zz
Lm9yaWcvY29uZmlndXJlCTIwMDctMDctMDMgMDQ6NDE6NTYuMDAwMDAwMDAwIC0wNzAwCisrKyBs
Y2Rwcm9jLWN2cy9jb25maWd1cmUJMjAwNy0wNy0wMyAxNTo1NTo0OS4wMDAwMDAwMDAgLTA3MDAK
QEAgLTEzMzEsOCArMTMzMSw4IEBACiAJICAgICAgICAgICAgICAgICAgICBFeWVib3hPbmUsZzE1
LGdsY2RsaWIsZ2xrLGhkNDQ3ODAsaWNwX2ExMDYsaW1vbixJT1dhcnJpb3IsCiAJICAgICAgICAg
ICAgICAgICAgICBpcm1hbixqb3ksbGIyMTYsbGNkbTAwMSxsY3Rlcm0sbGlyYyxsaXMsTUQ4ODAw
LG1zNjkzMSwKIAkgICAgICAgICAgICAgICAgICAgIG10Y19zMTYyMDl4LE10eE9yYixOb3JpdGFr
ZVZGRCxwaWNvbGNkLHB5cmFtaWQsc2VkMTMzMAotCSAgICAgICAgICAgICAgICAgICAgc2VkMTUy
MCxzZXJpYWxQT1Msc2VyaWFsVkZELHNsaSxzdHY1NzMwLHN2Z2EsdDY5NjMsdGV4dCwKLQkgICAg
ICAgICAgICAgICAgICAgIHR5YW4sdWxhMjAwLHhvc2QKKwkgICAgICAgICAgICAgICAgICAgIHNl
ZDE1MjAsc2VyaWFsUE9TLHNlcmlhbFZGRCxzaHV0dGxlVkZELHNsaSxzdHY1NzMwLHN2Z2EKKwkg
ICAgICAgICAgICAgICAgICAgIHQ2OTYzLHRleHQsdHlhbix1bGEyMDAseG9zZAogCSAgICAgICAg
ICAgICAgICAgICdhbGwnIGNvbXBpbGVzIGFsbCBkcml2ZXJzOwogCSAgICAgICAgICAgICAgICAg
ICdhbGwsIXh4eCwheXl5JyBkZS1zZWxlY3RzIHByZXZpb3VzbHkgc2VsZWN0ZWQgZHJpdmVycwog
ICAtLWVuYWJsZS1zZWFtbGVzcy1oYmFycyBubyBnYXBzIGluIGhvcml6b250YWwgYmFyIGdyYXBo
cyAoaWYgSFcgc3VwcG9ydHMgaXQpCkBAIC05NzE0LDcgKzk3MTQsNyBAQAogZmkKIAogCi1hbGxE
cml2ZXJzPWJheXJhZCxDRm9udHosQ0ZvbnR6NjMzLENGb250elBhY2tldCxjdXJzZXMsQ3dMbngs
ZWE2NSxFeWVib3hPbmUsZzE1LGdsY2RsaWIsZ2xrLGhkNDQ3ODAsaWNwX2ExMDYsaW1vbixJT1dh
cnJpb3IsaXJtYW4sam95LGxiMjE2LGxjZG0wMDEsbGN0ZXJtLGxpcmMsbGlzLE1EODgwMCxtczY5
MzEsbXRjX3MxNjIwOXgsTXR4T3JiLE5vcml0YWtlVkZELHBpY29sY2QscHlyYW1pZCxzZWQxMzMw
LHNlZDE1MjAsc2VyaWFsUE9TLHNlcmlhbFZGRCxzbGksc3R2NTczMCxzdmdhLHQ2OTYzLHRleHQs
dHlhbix1bGEyMDAseG9zZAorYWxsRHJpdmVycz1iYXlyYWQsQ0ZvbnR6LENGb250ejYzMyxDRm9u
dHpQYWNrZXQsY3Vyc2VzLEN3TG54LGVhNjUsRXllYm94T25lLGcxNSxnbGNkbGliLGdsayxoZDQ0
NzgwLGljcF9hMTA2LGltb24sSU9XYXJyaW9yLGlybWFuLGpveSxsYjIxNixsY2RtMDAxLGxjdGVy
bSxsaXJjLGxpcyxNRDg4MDAsbXM2OTMxLG10Y19zMTYyMDl4LE10eE9yYixOb3JpdGFrZVZGRCxw
aWNvbGNkLHB5cmFtaWQsc2VkMTMzMCxzZWQxNTIwLHNlcmlhbFBPUyxzZXJpYWxWRkQsc2h1dHRs
ZVZGRCxzbGksc3R2NTczMCxzdmdhLHQ2OTYzLHRleHQsdHlhbix1bGEyMDAseG9zZAogCiBkcml2
ZXJzPWBlY2hvICRkcml2ZXJzIHwgc2VkIC1lICdzLywvIC9nJ2AKIApAQCAtMTI1NzIsNiArMTI1
NzIsMTUgQEAKIAkJCURSSVZFUlM9IiREUklWRVJTIHNlcmlhbFZGRCR7U099IgogCQkJYWN0ZHJp
dmVycz0iJGFjdGRyaXZlcnMgc2VyaWFsVkZEIgogCQkJOzsKKwkJc2h1dHRsZVZGRCkKKwkJCWlm
IHRlc3QgIiRlbmFibGVfbGlidXNiIiA9IHllcyA7IHRoZW4KKwkJCQlEUklWRVJTPSIkRFJJVkVS
UyBzaHV0dGxlVkZEJHtTT30iCisJCQkJYWN0ZHJpdmVycz0iJGFjdGRyaXZlcnMgc2h1dHRsZVZG
RCIKKwkJCWVsc2UKKwkJCQl7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiBUaGUgc2h1
dHRsZVZGRCBkcml2ZXIgbmVlZHMgdGhlIGxpYnVzYiBsaWJyYXJ5LiIgPiY1CitlY2hvICIkYXNf
bWU6IFdBUk5JTkc6IFRoZSBzaHV0dGxlVkZEIGRyaXZlciBuZWVkcyB0aGUgbGlidXNiIGxpYnJh
cnkuIiA+JjI7fQorCQkJZmkKKwkJCTs7CiAJCXNsaSkKIAkJCURSSVZFUlM9IiREUklWRVJTIHNs
aSR7U099IgogCQkJYWN0ZHJpdmVycz0iJGFjdGRyaXZlcnMgc2xpIgpkaWZmIC1OYXVyIGxjZHBy
b2MtY3ZzLm9yaWcvZG9jcy9MQ0RkLjguaW4gbGNkcHJvYy1jdnMvZG9jcy9MQ0RkLjguaW4KLS0t
IGxjZHByb2MtY3ZzLm9yaWcvZG9jcy9MQ0RkLjguaW4JMjAwNy0wNS0xNyAwNTowODoxNS4wMDAw
MDAwMDAgLTA3MDAKKysrIGxjZHByb2MtY3ZzL2RvY3MvTENEZC44LmluCTIwMDctMDctMDMgMTU6
NTU6NDkuMDAwMDAwMDAwIC0wNzAwCkBAIC0yMjIsNiArMjIyLDkgQEAKIC5CIHNlcmlhbFZGRAog
TkVDIChGSVBDODM2NyBiYXNlZCkgYW5kIEZVVEFCQSBWRkRzCiAuVFAKKy5CIHNodXR0bGVWRkQK
K1NodXR0bGUgVkZEIChVU0ItYmFzZWQpCisuVFAKIC5CIHNsaQogV2lyeiBTTEkgZHJpdmVyICh1
bmtub3duKQogLlRQCmRpZmYgLU5hdXIgbGNkcHJvYy1jdnMub3JpZy9kb2NzL2xjZHByb2MtdXNl
ci9kcml2ZXJzL3NodXR0bGVWRkQuZG9jYm9vayBsY2Rwcm9jLWN2cy9kb2NzL2xjZHByb2MtdXNl
ci9kcml2ZXJzL3NodXR0bGVWRkQuZG9jYm9vawotLS0gbGNkcHJvYy1jdnMub3JpZy9kb2NzL2xj
ZHByb2MtdXNlci9kcml2ZXJzL3NodXR0bGVWRkQuZG9jYm9vawkxOTY5LTEyLTMxIDE2OjAwOjAw
LjAwMDAwMDAwMCAtMDgwMAorKysgbGNkcHJvYy1jdnMvZG9jcy9sY2Rwcm9jLXVzZXIvZHJpdmVy
cy9zaHV0dGxlVkZELmRvY2Jvb2sJMjAwNy0wNy0wMyAxNTo1NTo0OS4wMDAwMDAwMDAgLTA3MDAK
QEAgLTAsMCArMSwxMCBAQAorPHNlY3QxIGlkPSJzaHV0dGxlVkZELWhvd3RvIj4KKzx0aXRsZT5U
aGUgc2h1dHRsZVZGRCBEcml2ZXI8L3RpdGxlPgorCis8cGFyYT4KK1RoaXMgc2VjdGlvbiB0YWxr
cyBhYm91dCB1c2luZyBMQ0Rwcm9jIHdpdGggTENEIGRpc3BsYXlzIHRoYXQgdXNlIHRoZQorU2h1
dHRsZVZGRCBkaXNwbGF5LgorCitUaGVyZSBhcmUgbm8gY29uZmlndXJhdGlvbiBvcHRpb25zIGF2
YWlsYWJsZSBmb3IgdGhpcyBkaXNwbGF5LgorPC9wYXJhPgorPC9zZWN0MT4KZGlmZiAtTmF1ciBs
Y2Rwcm9jLWN2cy5vcmlnL2RvY3MvbGNkcHJvYy11c2VyL2RyaXZlcnMuZG9jYm9vayBsY2Rwcm9j
LWN2cy9kb2NzL2xjZHByb2MtdXNlci9kcml2ZXJzLmRvY2Jvb2sKLS0tIGxjZHByb2MtY3ZzLm9y
aWcvZG9jcy9sY2Rwcm9jLXVzZXIvZHJpdmVycy5kb2Nib29rCTIwMDctMDUtMTcgMDU6MDg6MTUu
MDAwMDAwMDAwIC0wNzAwCisrKyBsY2Rwcm9jLWN2cy9kb2NzL2xjZHByb2MtdXNlci9kcml2ZXJz
LmRvY2Jvb2sJMjAwNy0wNy0wMyAxNTo1NTo0OS4wMDAwMDAwMDAgLTA3MDAKQEAgLTQwLDYgKzQw
LDcgQEAKICZzZWQxNTIwOwogJnNlcmlhbFBPUzsKICZzZXJpYWxWRkQ7Cismc2h1dHRsZVZGRDsK
ICZzbGk7CiAmc3R2NTczMDsKICZzdmdhOwpkaWZmIC1OYXVyIGxjZHByb2MtY3ZzLm9yaWcvZG9j
cy9sY2Rwcm9jLXVzZXIvbGNkcHJvYy11c2VyLmRvY2Jvb2sgbGNkcHJvYy1jdnMvZG9jcy9sY2Rw
cm9jLXVzZXIvbGNkcHJvYy11c2VyLmRvY2Jvb2sKLS0tIGxjZHByb2MtY3ZzLm9yaWcvZG9jcy9s
Y2Rwcm9jLXVzZXIvbGNkcHJvYy11c2VyLmRvY2Jvb2sJMjAwNy0wNS0xNyAwNTowODoxNS4wMDAw
MDAwMDAgLTA3MDAKKysrIGxjZHByb2MtY3ZzL2RvY3MvbGNkcHJvYy11c2VyL2xjZHByb2MtdXNl
ci5kb2Nib29rCTIwMDctMDctMDMgMTU6NTU6NDkuMDAwMDAwMDAwIC0wNzAwCkBAIC00Niw2ICs0
Niw3IEBACiAgIDwhRU5USVRZIHNlZDE1MjAgU1lTVEVNICJkcml2ZXJzL3NlZDE1MjAuZG9jYm9v
ayI+CiAgIDwhRU5USVRZIHNlcmlhbFBPUyBTWVNURU0gImRyaXZlcnMvc2VyaWFsUE9TLmRvY2Jv
b2siPgogICA8IUVOVElUWSBzZXJpYWxWRkQgU1lTVEVNICJkcml2ZXJzL3NlcmlhbFZGRC5kb2Ni
b29rIj4KKyAgPCFFTlRJVFkgc2h1dHRsZVZGRCBTWVNURU0gImRyaXZlcnMvc2h1dHRsZVZGRC5k
b2Nib29rIj4KICAgPCFFTlRJVFkgc2xpIFNZU1RFTSAiZHJpdmVycy9zbGkuZG9jYm9vayI+CiAg
IDwhRU5USVRZIHN0djU3MzAgU1lTVEVNICJkcml2ZXJzL3N0djU3MzAuZG9jYm9vayI+CiAgIDwh
RU5USVRZIHN2Z2EgU1lTVEVNICJkcml2ZXJzL3N2Z2EuZG9jYm9vayI+CmRpZmYgLU5hdXIgbGNk
cHJvYy1jdnMub3JpZy9zZXJ2ZXIvZHJpdmVycy9NYWtlZmlsZS5hbSBsY2Rwcm9jLWN2cy9zZXJ2
ZXIvZHJpdmVycy9NYWtlZmlsZS5hbQotLS0gbGNkcHJvYy1jdnMub3JpZy9zZXJ2ZXIvZHJpdmVy
cy9NYWtlZmlsZS5hbQkyMDA3LTA2LTE3IDA1OjA3OjM3LjAwMDAwMDAwMCAtMDcwMAorKysgbGNk
cHJvYy1jdnMvc2VydmVyL2RyaXZlcnMvTWFrZWZpbGUuYW0JMjAwNy0wNy0wMyAxNTo1NTo0OS4w
MDAwMDAwMDAgLTA3MDAKQEAgLTE5LDEzICsxOSwxNCBAQAogI0xJQlMgPQogCiBwa2dsaWJfUFJP
R1JBTVMgPSBARFJJVkVSU0AKLUVYVFJBX1BST0dSQU1TID0gYmF5cmFkIENGb250eiBDRm9udHo2
MzMgQ0ZvbnR6UGFja2V0IGN1cnNlcyBDd0xueCBlYTY1IEV5ZWJveE9uZSBnMTUgZ2xjZGxpYiBn
bGsgaGQ0NDc4MCBpY3BfYTEwNiBpbW9uIElPV2FycmlvciBpcm1hbiBqb3kgbGIyMTYgbGNkbTAw
MSBsY3Rlcm0gbGlyYyBsaXMgTUQ4ODAwIG1zNjkzMSBtdGNfczE2MjA5eCBNdHhPcmIgTm9yaXRh
a2VWRkQgcGljb2xjZCBweXJhbWlkIHNlZDEzMzAgc2VkMTUyMCBzZXJpYWxQT1Mgc2VyaWFsVkZE
IHN0djU3MzAgc3ZnYSB0Njk2MyB0ZXh0IHR5YW4gc2xpIHVsYTIwMCB4b3NkCitFWFRSQV9QUk9H
UkFNUyA9IGJheXJhZCBDRm9udHogQ0ZvbnR6NjMzIENGb250elBhY2tldCBjdXJzZXMgQ3dMbngg
ZWE2NSBFeWVib3hPbmUgZzE1IGdsY2RsaWIgZ2xrIGhkNDQ3ODAgaWNwX2ExMDYgaW1vbiBJT1dh
cnJpb3IgaXJtYW4gam95IGxiMjE2IGxjZG0wMDEgbGN0ZXJtIGxpcmMgbGlzIE1EODgwMCBtczY5
MzEgbXRjX3MxNjIwOXggTXR4T3JiIE5vcml0YWtlVkZEIHBpY29sY2QgcHlyYW1pZCBzZWQxMzMw
IHNlZDE1MjAgc2VyaWFsUE9TIHNlcmlhbFZGRCBzaHV0dGxlVkZEIHN0djU3MzAgc3ZnYSB0Njk2
MyB0ZXh0IHR5YW4gc2xpIHVsYTIwMCB4b3NkCiBub2luc3RfTElCUkFSSUVTID0gbGliTENELmEg
bGliYmlnbnVtLmEKIAogSU9XYXJyaW9yX0NGTEFHUyA9ICAgQGxpYnVzYl9jZmxhZ3NAICQoQU1f
Q0ZMQUdTKQogaGQ0NDc4MF9DRkxBR1MgPSAgICAgQGxpYnVzYl9jZmxhZ3NAICQoQU1fQ0ZMQUdT
KQogZzE1X0NGTEFHUyA9ICAgICAgICAgQGxpYnVzYl9jZmxhZ3NAICQoQU1fQ0ZMQUdTKQogcGlj
b2xjZF9DRkxBR1MgPSAgICAgQGxpYnVzYl9jZmxhZ3NAICQoQU1fQ0ZMQUdTKQkKK3NodXR0bGVW
RkRfQ0ZMQUdTID0gIEBsaWJ1c2JfY2ZsYWdzQCAkKEFNX0NGTEFHUykKIAogQ0ZvbnR6X0xEQURE
ID0gICAgICAgbGliTENELmEgbGliYmlnbnVtLmEKIENGb250ejYzM19MREFERCA9ICAgIGxpYkxD
RC5hIGxpYmJpZ251bS5hCkBAIC01MSw2ICs1Miw3IEBACiBweXJhbWlkX0xEQUREID0gICAgICBs
aWJMQ0QuYQogc2VyaWFsUE9TX0xEQUREID0gICAgbGliTENELmEgbGliYmlnbnVtLmEKIHNlcmlh
bFZGRF9MREFERCA9ICAgIGxpYkxDRC5hIGxpYmJpZ251bS5hCitzaHV0dGxlVkZEX0xEQUREID0g
ICBAbGlidXNiX2xpYnNAIGxpYkxDRC5hIGxpYmJpZ251bS5hCiBzdmdhX0xEQUREID0gICAgICAg
ICBATElCU1ZHQUAKIHQ2OTYzX0xEQUREID0gICAgICAgIGxpYkxDRC5hCiB0eWFuX0xEQUREID0g
ICAgICAgICBsaWJMQ0QuYSBsaWJiaWdudW0uYQpAQCAtOTYsNiArOTgsNyBAQAogc2VkMTUyMF9T
T1VSQ0VTID0gICAgbGNkLmggc2VkMTUyMC5jIHNlZDE1MjAuaCBzZWQxNTIwZm0uYyBzZWQxNTIw
Zm0uaCBwb3J0LmggcmVwb3J0LmgKIHNlcmlhbFBPU19TT1VSQ0VTID0gIGxjZC5oIGxjZF9saWIu
aCBzZXJpYWxQT1MuYyBzZXJpYWxQT1MuaCByZXBvcnQuaCBhZHZfYmlnbnVtLmgKIHNlcmlhbFZG
RF9TT1VSQ0VTID0gIGxjZC5oIGxjZF9saWIuaCBzZXJpYWxWRkQuYyBzZXJpYWxWRkQuaCByZXBv
cnQuaCBhZHZfYmlnbnVtLmggc2VyaWFsVkZEX2Rpc3BsYXlzLmMgc2VyaWFsVkZEX2Rpc3BsYXlz
Lmggc2VyaWFsVkZEX2lvLmMgc2VyaWFsVkZEX2lvLmgKK3NodXR0bGVWRkRfU09VUkNFUyA9IGxj
ZC5oIHNodXR0bGVWRkQuYyBzaHV0dGxlVkZELmggcmVwb3J0LmgKIHN0djU3MzBfU09VUkNFUyA9
ICAgIGxjZC5oIHN0djU3MzAuYyBzdHY1NzMwLmggcmVwb3J0LmgKIHN2Z2FfU09VUkNFUyA9ICAg
ICAgIGxjZC5oIHN2Z2FsaWJfZHJ2LmMgc3ZnYWxpYl9kcnYuaCByZXBvcnQuaAogdDY5NjNfU09V
UkNFUyA9ICAgICAgbGNkLmggbGNkX2xpYi5oIHQ2OTYzLmMgdDY5NjMuaCB0Njk2M19mb250Lmgg
cmVwb3J0LmgKZGlmZiAtTmF1ciBsY2Rwcm9jLWN2cy5vcmlnL3NlcnZlci9kcml2ZXJzL01ha2Vm
aWxlLmluIGxjZHByb2MtY3ZzL3NlcnZlci9kcml2ZXJzL01ha2VmaWxlLmluCi0tLSBsY2Rwcm9j
LWN2cy5vcmlnL3NlcnZlci9kcml2ZXJzL01ha2VmaWxlLmluCTIwMDctMDctMDMgMDQ6NDE6NTQu
MDAwMDAwMDAwIC0wNzAwCisrKyBsY2Rwcm9jLWN2cy9zZXJ2ZXIvZHJpdmVycy9NYWtlZmlsZS5p
bgkyMDA3LTA3LTAzIDE1OjU1OjQ5LjAwMDAwMDAwMCAtMDcwMApAQCAtNDIsOSArNDIsOSBAQAog
CU1EODgwMCQoRVhFRVhUKSBtczY5MzEkKEVYRUVYVCkgbXRjX3MxNjIwOXgkKEVYRUVYVCkgXAog
CU10eE9yYiQoRVhFRVhUKSBOb3JpdGFrZVZGRCQoRVhFRVhUKSBwaWNvbGNkJChFWEVFWFQpIFwK
IAlweXJhbWlkJChFWEVFWFQpIHNlZDEzMzAkKEVYRUVYVCkgc2VkMTUyMCQoRVhFRVhUKSBcCi0J
c2VyaWFsUE9TJChFWEVFWFQpIHNlcmlhbFZGRCQoRVhFRVhUKSBzdHY1NzMwJChFWEVFWFQpIFwK
LQlzdmdhJChFWEVFWFQpIHQ2OTYzJChFWEVFWFQpIHRleHQkKEVYRUVYVCkgdHlhbiQoRVhFRVhU
KSBcCi0Jc2xpJChFWEVFWFQpIHVsYTIwMCQoRVhFRVhUKSB4b3NkJChFWEVFWFQpCisJc2VyaWFs
UE9TJChFWEVFWFQpIHNlcmlhbFZGRCQoRVhFRVhUKSBzaHV0dGxlVkZEJChFWEVFWFQpIFwKKwlz
dHY1NzMwJChFWEVFWFQpIHN2Z2EkKEVYRUVYVCkgdDY5NjMkKEVYRUVYVCkgdGV4dCQoRVhFRVhU
KSBcCisJdHlhbiQoRVhFRVhUKSBzbGkkKEVYRUVYVCkgdWxhMjAwJChFWEVFWFQpIHhvc2QkKEVY
RUVYVCkKIHN1YmRpciA9IHNlcnZlci9kcml2ZXJzCiBESVNUX0NPTU1PTiA9IFJFQURNRSAkKHNy
Y2RpcikvTWFrZWZpbGUuYW0gJChzcmNkaXIpL01ha2VmaWxlLmluCiBBQ0xPQ0FMX000ID0gJCh0
b3Bfc3JjZGlyKS9hY2xvY2FsLm00CkBAIC0xNzYsNiArMTc2LDExIEBACiAJc2VyaWFsVkZEX2Rp
c3BsYXlzLiQoT0JKRVhUKSBzZXJpYWxWRkRfaW8uJChPQkpFWFQpCiBzZXJpYWxWRkRfT0JKRUNU
UyA9ICQoYW1fc2VyaWFsVkZEX09CSkVDVFMpCiBzZXJpYWxWRkRfREVQRU5ERU5DSUVTID0gbGli
TENELmEgbGliYmlnbnVtLmEKK2FtX3NodXR0bGVWRkRfT0JKRUNUUyA9IHNodXR0bGVWRkQtc2h1
dHRsZVZGRC4kKE9CSkVYVCkKK3NodXR0bGVWRkRfT0JKRUNUUyA9ICQoYW1fc2h1dHRsZVZGRF9P
QkpFQ1RTKQorc2h1dHRsZVZGRF9ERVBFTkRFTkNJRVMgPSBsaWJMQ0QuYSBsaWJiaWdudW0uYQor
c2h1dHRsZVZGRF9MSU5LID0gJChDQ0xEKSAkKHNodXR0bGVWRkRfQ0ZMQUdTKSAkKENGTEFHUykg
JChBTV9MREZMQUdTKSBcCisJJChMREZMQUdTKSAtbyAkQAogYW1fc2xpX09CSkVDVFMgPSB3aXJ6
LXNsaS4kKE9CSkVYVCkKIHNsaV9PQkpFQ1RTID0gJChhbV9zbGlfT0JKRUNUUykKIHNsaV9ERVBF
TkRFTkNJRVMgPSBsaWJMQ0QuYQpAQCAtMjE5LDkgKzIyNCw5IEBACiAJJChsaXNfU09VUkNFUykg
JChtczY5MzFfU09VUkNFUykgJChtdGNfczE2MjA5eF9TT1VSQ0VTKSBcCiAJJChwaWNvbGNkX1NP
VVJDRVMpICQocHlyYW1pZF9TT1VSQ0VTKSAkKHNlZDEzMzBfU09VUkNFUykgXAogCSQoc2VkMTUy
MF9TT1VSQ0VTKSAkKHNlcmlhbFBPU19TT1VSQ0VTKSAkKHNlcmlhbFZGRF9TT1VSQ0VTKSBcCi0J
JChzbGlfU09VUkNFUykgJChzdHY1NzMwX1NPVVJDRVMpICQoc3ZnYV9TT1VSQ0VTKSBcCi0JJCh0
Njk2M19TT1VSQ0VTKSAkKHRleHRfU09VUkNFUykgJCh0eWFuX1NPVVJDRVMpIFwKLQkkKHVsYTIw
MF9TT1VSQ0VTKSAkKHhvc2RfU09VUkNFUykKKwkkKHNodXR0bGVWRkRfU09VUkNFUykgJChzbGlf
U09VUkNFUykgJChzdHY1NzMwX1NPVVJDRVMpIFwKKwkkKHN2Z2FfU09VUkNFUykgJCh0Njk2M19T
T1VSQ0VTKSAkKHRleHRfU09VUkNFUykgXAorCSQodHlhbl9TT1VSQ0VTKSAkKHVsYTIwMF9TT1VS
Q0VTKSAkKHhvc2RfU09VUkNFUykKIERJU1RfU09VUkNFUyA9ICQobGliTENEX2FfU09VUkNFUykg
JChsaWJiaWdudW1fYV9TT1VSQ0VTKSBcCiAJJChDRm9udHpfU09VUkNFUykgJChDRm9udHo2MzNf
U09VUkNFUykgJChDRm9udHpQYWNrZXRfU09VUkNFUykgXAogCSQoQ3dMbnhfU09VUkNFUykgJChF
eWVib3hPbmVfU09VUkNFUykgJChJT1dhcnJpb3JfU09VUkNFUykgXApAQCAtMjM0LDEwICsyMzks
MTAgQEAKIAkkKGxjdGVybV9TT1VSQ0VTKSAkKGxpcmNfU09VUkNFUykgJChsaXNfU09VUkNFUykg
XAogCSQobXM2OTMxX1NPVVJDRVMpICQobXRjX3MxNjIwOXhfU09VUkNFUykgJChwaWNvbGNkX1NP
VVJDRVMpIFwKIAkkKHB5cmFtaWRfU09VUkNFUykgJChzZWQxMzMwX1NPVVJDRVMpICQoc2VkMTUy
MF9TT1VSQ0VTKSBcCi0JJChzZXJpYWxQT1NfU09VUkNFUykgJChzZXJpYWxWRkRfU09VUkNFUykg
JChzbGlfU09VUkNFUykgXAotCSQoc3R2NTczMF9TT1VSQ0VTKSAkKHN2Z2FfU09VUkNFUykgJCh0
Njk2M19TT1VSQ0VTKSBcCi0JJCh0ZXh0X1NPVVJDRVMpICQodHlhbl9TT1VSQ0VTKSAkKHVsYTIw
MF9TT1VSQ0VTKSBcCi0JJCh4b3NkX1NPVVJDRVMpCisJJChzZXJpYWxQT1NfU09VUkNFUykgJChz
ZXJpYWxWRkRfU09VUkNFUykgXAorCSQoc2h1dHRsZVZGRF9TT1VSQ0VTKSAkKHNsaV9TT1VSQ0VT
KSAkKHN0djU3MzBfU09VUkNFUykgXAorCSQoc3ZnYV9TT1VSQ0VTKSAkKHQ2OTYzX1NPVVJDRVMp
ICQodGV4dF9TT1VSQ0VTKSBcCisJJCh0eWFuX1NPVVJDRVMpICQodWxhMjAwX1NPVVJDRVMpICQo
eG9zZF9TT1VSQ0VTKQogRVRBR1MgPSBldGFncwogQ1RBR1MgPSBjdGFncwogRElTVEZJTEVTID0g
JChESVNUX0NPTU1PTikgJChESVNUX1NPVVJDRVMpICQoVEVYSU5GT1MpICQoRVhUUkFfRElTVCkK
QEAgLTM2Niw2ICszNzEsNyBAQAogaGQ0NDc4MF9DRkxBR1MgPSBAbGlidXNiX2NmbGFnc0AgJChB
TV9DRkxBR1MpCiBnMTVfQ0ZMQUdTID0gQGxpYnVzYl9jZmxhZ3NAICQoQU1fQ0ZMQUdTKQogcGlj
b2xjZF9DRkxBR1MgPSBAbGlidXNiX2NmbGFnc0AgJChBTV9DRkxBR1MpCQorc2h1dHRsZVZGRF9D
RkxBR1MgPSBAbGlidXNiX2NmbGFnc0AgJChBTV9DRkxBR1MpCiBDRm9udHpfTERBREQgPSBsaWJM
Q0QuYSBsaWJiaWdudW0uYQogQ0ZvbnR6NjMzX0xEQUREID0gbGliTENELmEgbGliYmlnbnVtLmEK
IENGb250elBhY2tldF9MREFERCA9IGxpYkxDRC5hIGxpYmJpZ251bS5hCkBAIC0zOTAsNiArMzk2
LDcgQEAKIHB5cmFtaWRfTERBREQgPSBsaWJMQ0QuYQogc2VyaWFsUE9TX0xEQUREID0gbGliTENE
LmEgbGliYmlnbnVtLmEKIHNlcmlhbFZGRF9MREFERCA9IGxpYkxDRC5hIGxpYmJpZ251bS5hCitz
aHV0dGxlVkZEX0xEQUREID0gQGxpYnVzYl9saWJzQCBsaWJMQ0QuYSBsaWJiaWdudW0uYQogc3Zn
YV9MREFERCA9IEBMSUJTVkdBQAogdDY5NjNfTERBREQgPSBsaWJMQ0QuYQogdHlhbl9MREFERCA9
IGxpYkxDRC5hIGxpYmJpZ251bS5hCkBAIC00MzIsNiArNDM5LDcgQEAKIHNlZDE1MjBfU09VUkNF
UyA9IGxjZC5oIHNlZDE1MjAuYyBzZWQxNTIwLmggc2VkMTUyMGZtLmMgc2VkMTUyMGZtLmggcG9y
dC5oIHJlcG9ydC5oCiBzZXJpYWxQT1NfU09VUkNFUyA9IGxjZC5oIGxjZF9saWIuaCBzZXJpYWxQ
T1MuYyBzZXJpYWxQT1MuaCByZXBvcnQuaCBhZHZfYmlnbnVtLmgKIHNlcmlhbFZGRF9TT1VSQ0VT
ID0gbGNkLmggbGNkX2xpYi5oIHNlcmlhbFZGRC5jIHNlcmlhbFZGRC5oIHJlcG9ydC5oIGFkdl9i
aWdudW0uaCBzZXJpYWxWRkRfZGlzcGxheXMuYyBzZXJpYWxWRkRfZGlzcGxheXMuaCBzZXJpYWxW
RkRfaW8uYyBzZXJpYWxWRkRfaW8uaAorc2h1dHRsZVZGRF9TT1VSQ0VTID0gbGNkLmggc2h1dHRs
ZVZGRC5jIHNodXR0bGVWRkQuaCByZXBvcnQuaAogc3R2NTczMF9TT1VSQ0VTID0gbGNkLmggc3R2
NTczMC5jIHN0djU3MzAuaCByZXBvcnQuaAogc3ZnYV9TT1VSQ0VTID0gbGNkLmggc3ZnYWxpYl9k
cnYuYyBzdmdhbGliX2Rydi5oIHJlcG9ydC5oCiB0Njk2M19TT1VSQ0VTID0gbGNkLmggbGNkX2xp
Yi5oIHQ2OTYzLmMgdDY5NjMuaCB0Njk2M19mb250LmggcmVwb3J0LmgKQEAgLTYwNyw2ICs2MTUs
OSBAQAogc2VyaWFsVkZEJChFWEVFWFQpOiAkKHNlcmlhbFZGRF9PQkpFQ1RTKSAkKHNlcmlhbFZG
RF9ERVBFTkRFTkNJRVMpIAogCUBybSAtZiBzZXJpYWxWRkQkKEVYRUVYVCkKIAkkKExJTkspICQo
c2VyaWFsVkZEX09CSkVDVFMpICQoc2VyaWFsVkZEX0xEQUREKSAkKExJQlMpCitzaHV0dGxlVkZE
JChFWEVFWFQpOiAkKHNodXR0bGVWRkRfT0JKRUNUUykgJChzaHV0dGxlVkZEX0RFUEVOREVOQ0lF
UykgCisJQHJtIC1mIHNodXR0bGVWRkQkKEVYRUVYVCkKKwkkKHNodXR0bGVWRkRfTElOSykgJChz
aHV0dGxlVkZEX09CSkVDVFMpICQoc2h1dHRsZVZGRF9MREFERCkgJChMSUJTKQogc2xpJChFWEVF
WFQpOiAkKHNsaV9PQkpFQ1RTKSAkKHNsaV9ERVBFTkRFTkNJRVMpIAogCUBybSAtZiBzbGkkKEVY
RUVYVCkKIAkkKExJTkspICQoc2xpX09CSkVDVFMpICQoc2xpX0xEQUREKSAkKExJQlMpCkBAIC02
ODksNiArNzAwLDcgQEAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQo
REVQRElSKS9zZXJpYWxWRkQuUG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRl
QCBAYW1fX3F1b3RlQC4vJChERVBESVIpL3NlcmlhbFZGRF9kaXNwbGF5cy5Qb0BhbV9fcXVvdGVA
CiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvc2VyaWFs
VkZEX2lvLlBvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90
ZUAuLyQoREVQRElSKS9zaHV0dGxlVkZELXNodXR0bGVWRkQuUG9AYW1fX3F1b3RlQAogQEFNREVQ
X1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL3N0djU3MzAuUG9AYW1f
X3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIp
L3N2Z2FsaWJfZHJ2LlBvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFt
X19xdW90ZUAuLyQoREVQRElSKS90Njk2My5Qb0BhbV9fcXVvdGVACkBAIC05MjIsNiArOTM0LDIw
IEBACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAk
KENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACiBAYW1fX2Zhc3RkZXBDQ19G
QUxTRUAJJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1f
Q1BQRkxBR1MpICQoQ1BQRkxBR1MpICQocGljb2xjZF9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBw
aWNvbGNkLXBpY29sY2Qub2JqIGBpZiB0ZXN0IC1mICdwaWNvbGNkLmMnOyB0aGVuICQoQ1lHUEFU
SF9XKSAncGljb2xjZC5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9waWNvbGNkLmMn
OyBmaWAKIAorc2h1dHRsZVZGRC1zaHV0dGxlVkZELm86IHNodXR0bGVWRkQuYworQGFtX19mYXN0
ZGVwQ0NfVFJVRUAJJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMp
ICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoc2h1dHRsZVZGRF9DRkxBR1MpICQoQ0ZMQUdT
KSAtTVQgc2h1dHRsZVZGRC1zaHV0dGxlVkZELm8gLU1EIC1NUCAtTUYgJChERVBESVIpL3NodXR0
bGVWRkQtc2h1dHRsZVZGRC5UcG8gLWMgLW8gc2h1dHRsZVZGRC1zaHV0dGxlVkZELm8gYHRlc3Qg
LWYgJ3NodXR0bGVWRkQuYycgfHwgZWNobyAnJChzcmNkaXIpLydgc2h1dHRsZVZGRC5jCitAYW1f
X2Zhc3RkZXBDQ19UUlVFQAltdiAtZiAkKERFUERJUikvc2h1dHRsZVZGRC1zaHV0dGxlVkZELlRw
byAkKERFUERJUikvc2h1dHRsZVZGRC1zaHV0dGxlVkZELlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zh
c3RkZXBDQ19GQUxTRUAJc291cmNlPSdzaHV0dGxlVkZELmMnIG9iamVjdD0nc2h1dHRsZVZGRC1z
aHV0dGxlVkZELm8nIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFt
X19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29t
cCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQ0MpICQoREVGUykg
JChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdT
KSAkKHNodXR0bGVWRkRfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gc2h1dHRsZVZGRC1zaHV0dGxl
VkZELm8gYHRlc3QgLWYgJ3NodXR0bGVWRkQuYycgfHwgZWNobyAnJChzcmNkaXIpLydgc2h1dHRs
ZVZGRC5jCisKK3NodXR0bGVWRkQtc2h1dHRsZVZGRC5vYmo6IHNodXR0bGVWRkQuYworQGFtX19m
YXN0ZGVwQ0NfVFJVRUAJJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVE
RVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoc2h1dHRsZVZGRF9DRkxBR1MpICQoQ0ZM
QUdTKSAtTVQgc2h1dHRsZVZGRC1zaHV0dGxlVkZELm9iaiAtTUQgLU1QIC1NRiAkKERFUERJUikv
c2h1dHRsZVZGRC1zaHV0dGxlVkZELlRwbyAtYyAtbyBzaHV0dGxlVkZELXNodXR0bGVWRkQub2Jq
IGBpZiB0ZXN0IC1mICdzaHV0dGxlVkZELmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnc2h1dHRsZVZG
RC5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9zaHV0dGxlVkZELmMnOyBmaWAKK0Bh
bV9fZmFzdGRlcENDX1RSVUVACW12IC1mICQoREVQRElSKS9zaHV0dGxlVkZELXNodXR0bGVWRkQu
VHBvICQoREVQRElSKS9zaHV0dGxlVkZELXNodXR0bGVWRkQuUG8KK0BBTURFUF9UUlVFQEBhbV9f
ZmFzdGRlcENDX0ZBTFNFQAlzb3VyY2U9J3NodXR0bGVWRkQuYycgb2JqZWN0PSdzaHV0dGxlVkZE
LXNodXR0bGVWRkQub2JqJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVF
QEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRl
cGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKENDKSAkKERF
RlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBG
TEFHUykgJChzaHV0dGxlVkZEX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIHNodXR0bGVWRkQtc2h1
dHRsZVZGRC5vYmogYGlmIHRlc3QgLWYgJ3NodXR0bGVWRkQuYyc7IHRoZW4gJChDWUdQQVRIX1cp
ICdzaHV0dGxlVkZELmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL3NodXR0bGVWRkQu
Yyc7IGZpYAorCiBJRDogJChIRUFERVJTKSAkKFNPVVJDRVMpICQoTElTUCkgJChUQUdTX0ZJTEVT
KQogCWxpc3Q9JyQoU09VUkNFUykgJChIRUFERVJTKSAkKExJU1ApICQoVEFHU19GSUxFUyknOyBc
CiAJdW5pcXVlPWBmb3IgaSBpbiAkJGxpc3Q7IGRvIFwKZGlmZiAtTmF1ciBsY2Rwcm9jLWN2cy5v
cmlnL3NlcnZlci9kcml2ZXJzL3NodXR0bGVWRkQuYyBsY2Rwcm9jLWN2cy9zZXJ2ZXIvZHJpdmVy
cy9zaHV0dGxlVkZELmMKLS0tIGxjZHByb2MtY3ZzLm9yaWcvc2VydmVyL2RyaXZlcnMvc2h1dHRs
ZVZGRC5jCTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwCisrKyBsY2Rwcm9jLWN2
cy9zZXJ2ZXIvZHJpdmVycy9zaHV0dGxlVkZELmMJMjAwNy0wNy0wMyAxNTo1NTo0OS4wMDAwMDAw
MDAgLTA3MDAKQEAgLTAsMCArMSwyMjcgQEAKKy8qCisgKiBTaHV0dGxlVkZEIGRyaXZlcgorICoK
KyAqIENvcHlyaWdodCAoQykgMjAwNyBUaGllbiBWdQorICogCisgKiBUaGlzIHByb2dyYW0gaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICog
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZS4KKyAqIAorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05V
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqIAorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl
IFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEKKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdf
SAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNp
bmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDx1c2IuaD4K
KworI2luY2x1ZGUgImxjZC5oIgorI2luY2x1ZGUgInNodXR0bGVWRkQuaCIKKyNpbmNsdWRlICJy
ZXBvcnQuaCIKKworCisvLyBWYXJpYWJsZXMgaW4gdGhlIGRyaXZlciBtb2R1bGUKK01PRFVMRV9F
WFBPUlQgY2hhciAqYXBpX3ZlcnNpb24gPSBBUElfVkVSU0lPTjsKK01PRFVMRV9FWFBPUlQgaW50
IHN0YXlfaW5fZm9yZWdyb3VuZCA9IDA7CitNT0RVTEVfRVhQT1JUIGludCBzdXBwb3J0c19tdWx0
aXBsZSA9IDA7CitNT0RVTEVfRVhQT1JUIGNoYXIgKnN5bWJvbF9wcmVmaXggPSAic2h1dHRsZVZG
RF8iOworCisKKy8vIFByaXZhdGUgZGF0YQordHlwZWRlZiBzdHJ1Y3QgZHJpdmVyX3ByaXZhdGVf
ZGF0YSB7CisgIHVzYl9kZXZfaGFuZGxlICpkZXY7CisgIGludCB3aWR0aDsKKyAgaW50IGhlaWdo
dDsKKyAgY2hhciAqZnJhbWVidWY7Cit9IFByaXZhdGVEYXRhOworCisKKy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLyBGb3IgU2h1dHRsZVZGRCBPdXRwdXQgLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKwordm9pZCBzZW5kX3Bh
Y2tldChEcml2ZXIgKmRydnRoaXMsIGNoYXIqIHBhY2tldCkgeworICBQcml2YXRlRGF0YSAqcCA9
IGRydnRoaXMtPnByaXZhdGVfZGF0YTsKKworICBpbnQgaTsKKyAgZm9yIChpID0gMDsgaSA8IFNI
VVRUTEVfVkZEX1dSSVRFX0FUVEVNUFRTOyArK2kpIHsKKyAgICBpZiAodXNiX2NvbnRyb2xfbXNn
KHAtPmRldiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDB4MjEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAweDA5LAorICAgICAgICAgICAgICAgICAgICAgICAgMHgwMjAwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgMHgwMDAxLAorICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgU0hVVFRMRV9WRkRfUEFDS0VUX1NJWkUsIDEwMCkgPT0K
KwlTSFVUVExFX1ZGRF9QQUNLRVRfU0laRSkgeworICAgICAgdXNsZWVwKFNIVVRUTEVfVkZEX1NV
Q0NFU1NfU0xFRVBfVVNFQyk7CisgICAgICBicmVhazsKKyAgICB9CisgICAgcmVwb3J0KFJQVF9F
UlIsICIlczogd3JpdGUgZmFpbGVkIHJldHJ5aW5nLi4uIiwgZHJ2dGhpcy0+bmFtZSk7CisgICAg
dXNsZWVwKFNIVVRUTEVfVkZEX1JFVFJZX1NMRUVQX1VTRUMpOworICB9Cit9CisKKworTU9EVUxF
X0VYUE9SVCBpbnQgIHNodXR0bGVWRkRfaW5pdChEcml2ZXIgKmRydnRoaXMpIHsKKyAgUHJpdmF0
ZURhdGEgKnA7CisKKyAgLy8gYWxsb2NhdGUgYW5kIHN0b3JlIHByaXZhdGUgZGF0YQorICBwID0g
KFByaXZhdGVEYXRhICopY2FsbG9jKDEsIHNpemVvZihQcml2YXRlRGF0YSkpOworICBpZiAocCA9
PSBOVUxMKSB7CisgICAgcmVwb3J0KFJQVF9FUlIsICIlczogdW5hYmxlIHRvIGFsbG9jYXRlIHBy
aXZhdGUgZGF0YSIsIGRydnRoaXMtPm5hbWUpOworICAgIHJldHVybiAtMTsKKyAgfQorICBpZiAo
ZHJ2dGhpcy0+c3RvcmVfcHJpdmF0ZV9wdHIoZHJ2dGhpcywgcCkgPCAwKSB7CisgICAgcmVwb3J0
KFJQVF9FUlIsICIlczogdW5hYmxlIHRvIHN0b3JlIHByaXZhdGUgZGF0YSIsIGRydnRoaXMtPm5h
bWUpOworICAgIHJldHVybiAtMTsKKyAgfQorCisgIC8vIGluaXRpYWxpemUgcHJpdmF0ZSBkYXRh
CisgIHAtPmRldiA9IE5VTEw7CisgIHAtPndpZHRoID0gU0hVVFRMRV9WRkRfV0lEVEg7CisgIHAt
PmhlaWdodCA9IFNIVVRUTEVfVkZEX0hFSUdIVDsKKyAgcC0+ZnJhbWVidWYgPSAoY2hhciAqKW1h
bGxvYyhwLT53aWR0aCAqIHAtPmhlaWdodCk7CisgIGlmIChwLT5mcmFtZWJ1ZiA9PSBOVUxMKSB7
CisgICAgcmVwb3J0KFJQVF9FUlIsICIlczogdW5hYmxlIHRvIGNyZWF0ZSBmcmFtZWJ1ZmZlciIs
IGRydnRoaXMtPm5hbWUpOworICAgIHJldHVybiAtMTsKKyAgfQorICBtZW1zZXQocC0+ZnJhbWVi
dWYsICcgJywgcC0+d2lkdGggKiBwLT5oZWlnaHQpOworCisgIC8vIGZpbmQgVkZECisgIHVzYl9p
bml0KCk7CisgIHVzYl9maW5kX2J1c3NlcygpOworICB1c2JfZmluZF9kZXZpY2VzKCk7CisgIHN0
cnVjdCB1c2JfYnVzICpidXM7CisgIGZvciAoYnVzID0gdXNiX2dldF9idXNzZXMoKTsgYnVzICE9
IE5VTEw7IGJ1cyA9IGJ1cy0+bmV4dCkgeworICAgIHN0cnVjdCB1c2JfZGV2aWNlICpkZXY7Cisg
ICAgZm9yIChkZXYgPSBidXMtPmRldmljZXM7IGRldiAhPSBOVUxMOyBkZXYgPSBkZXYtPm5leHQp
IHsKKyAgICAgIGlmIChkZXYtPmRlc2NyaXB0b3IuaWRWZW5kb3IgPT0gU0hVVFRMRV9WRkRfVkVO
RE9SX0lEICYmCisgICAgICAgICAgZGV2LT5kZXNjcmlwdG9yLmlkUHJvZHVjdCA9PSBTSFVUVExF
X1ZGRF9QUk9EVUNUX0lEKSB7CisgICAgICAgIHAtPmRldiA9IHVzYl9vcGVuKGRldik7CisgICAg
ICB9CisgICAgfQorICB9CisgIGlmIChwLT5kZXYgPT0gTlVMTCkgeworICAgIHJlcG9ydChSUFRf
RVJSLCAiJXM6IHVuYWJsZSB0byBmaW5kIFNodXR0bGUgVkZEIiwgZHJ2dGhpcy0+bmFtZSk7Cisg
ICAgcmV0dXJuIC0xOworICB9CisgIGludCBjbGFpbV9yYyA9IHVzYl9jbGFpbV9pbnRlcmZhY2Uo
cC0+ZGV2LCBTSFVUVExFX1ZGRF9JTlRFUkZBQ0VfTlVNKTsKKyAgaWYgKGNsYWltX3JjIDwgMCkg
eworICAgIHJlcG9ydChSUFRfRVJSLAorICAgICAgICAgICAiJXM6IHVuYWJsZSB0byBjbGFpbSBp
bnRlcmZhY2U6ICVzIiwKKwkgICBkcnZ0aGlzLT5uYW1lLCBzdHJlcnJvcihjbGFpbV9yYykpOwor
ICAgIHJldHVybiAtMTsKKyAgfQorCisgIHJlcG9ydChSUFRfREVCVUcsICIlczogaW5pdCgpIGRv
bmUiLCBkcnZ0aGlzLT5uYW1lKTsKKyAgcmV0dXJuIDE7Cit9CisKKworTU9EVUxFX0VYUE9SVCB2
b2lkIHNodXR0bGVWRkRfY2xvc2UoRHJpdmVyICpkcnZ0aGlzKSB7CisgIFByaXZhdGVEYXRhICpw
ID0gZHJ2dGhpcy0+cHJpdmF0ZV9kYXRhOworICBpZiAocCAhPSBOVUxMKSB7CisgICAgaWYgKHAt
PmRldiAhPSBOVUxMKSB7CisgICAgICBpZiAodXNiX3JlbGVhc2VfaW50ZXJmYWNlKHAtPmRldiwg
U0hVVFRMRV9WRkRfSU5URVJGQUNFX05VTSkgPCAwKSB7CisgICAgICAgIHJlcG9ydChSUFRfRVJS
LCAiJXM6IHVuYWJsZSB0byByZWxlYXNlIGludGVyZmFjZSIsIGRydnRoaXMtPm5hbWUpOworICAg
ICAgfQorICAgICAgaWYgKHVzYl9jbG9zZShwLT5kZXYpIDwgMCkgeworICAgICAgICByZXBvcnQo
UlBUX0VSUiwgIiVzOiB1bmFibGUgdG8gY2xvc2UgZGV2aWNlIiwgZHJ2dGhpcy0+bmFtZSk7Cisg
ICAgICB9CisgICAgICBwLT5kZXYgPSBOVUxMOworICAgIH0KKyAgICBpZiAocC0+ZnJhbWVidWYg
IT0gTlVMTCkgeworICAgICAgZnJlZShwLT5mcmFtZWJ1Zik7CisgICAgfQorICAgIGZyZWUocCk7
CisgIH0KKyAgZHJ2dGhpcy0+c3RvcmVfcHJpdmF0ZV9wdHIoZHJ2dGhpcywgTlVMTCk7Cit9CisK
KworTU9EVUxFX0VYUE9SVCBpbnQgIHNodXR0bGVWRkRfd2lkdGgoRHJpdmVyICpkcnZ0aGlzKSB7
CisgIFByaXZhdGVEYXRhICpwID0gZHJ2dGhpcy0+cHJpdmF0ZV9kYXRhOworICByZXR1cm4gcC0+
d2lkdGg7Cit9CisKKworTU9EVUxFX0VYUE9SVCBpbnQgIHNodXR0bGVWRkRfaGVpZ2h0KERyaXZl
ciAqZHJ2dGhpcykgeworICBQcml2YXRlRGF0YSAqcCA9IGRydnRoaXMtPnByaXZhdGVfZGF0YTsK
KyAgcmV0dXJuIHAtPmhlaWdodDsKK30KKworCitNT0RVTEVfRVhQT1JUIHZvaWQgc2h1dHRsZVZG
RF9jbGVhcihEcml2ZXIgKmRydnRoaXMpIHsKKyAgUHJpdmF0ZURhdGEgKnAgPSBkcnZ0aGlzLT5w
cml2YXRlX2RhdGE7CisgIG1lbXNldChwLT5mcmFtZWJ1ZiwgJyAnLCBwLT53aWR0aCAqIHAtPmhl
aWdodCk7Cit9CisKKworTU9EVUxFX0VYUE9SVCB2b2lkIHNodXR0bGVWRkRfZmx1c2goRHJpdmVy
ICpkcnZ0aGlzKSB7CisgIFByaXZhdGVEYXRhICpwID0gZHJ2dGhpcy0+cHJpdmF0ZV9kYXRhOwor
ICBjaGFyIHBhY2tldFtTSFVUVExFX1ZGRF9QQUNLRVRfU0laRV07CisKKyAgLy8gbW92ZSBjdXJz
b3IgdG8gZnJvbnQKKyAgbWVtc2V0KHBhY2tldCwgMCwgU0hVVFRMRV9WRkRfUEFDS0VUX1NJWkUp
OworICBwYWNrZXRbMF0gPSAoMSA8PCA0KSArIDE7CisgIHBhY2tldFsxXSA9IDI7CisgIHNlbmRf
cGFja2V0KGRydnRoaXMsIHBhY2tldCk7CisKKyAgLy8gd3JpdGUgZnJhbWVidWZbMC02XQorICBt
ZW1zZXQocGFja2V0LCAwLCBTSFVUVExFX1ZGRF9QQUNLRVRfU0laRSk7CisgIHBhY2tldFswXSA9
ICg5IDw8IDQpICsgNzsKKyAgc3RybmNweSgmcGFja2V0WzFdLCAmcC0+ZnJhbWVidWZbMF0sIDcp
OworICBzZW5kX3BhY2tldChkcnZ0aGlzLCBwYWNrZXQpOworCisgIC8vIHdyaXRlIGZyYW1lYnVm
WzctMTNdCisgIG1lbXNldChwYWNrZXQsIDAsIFNIVVRUTEVfVkZEX1BBQ0tFVF9TSVpFKTsKKyAg
cGFja2V0WzBdID0gKDkgPDwgNCkgKyA3OworICBzdHJuY3B5KCZwYWNrZXRbMV0sICZwLT5mcmFt
ZWJ1Zls3XSwgNyk7CisgIHNlbmRfcGFja2V0KGRydnRoaXMsIHBhY2tldCk7CisKKyAgLy8gd3Jp
dGUgZnJhbWVidWZbMTQtMjBdCisgIG1lbXNldChwYWNrZXQsIDAsIFNIVVRUTEVfVkZEX1BBQ0tF
VF9TSVpFKTsKKyAgcGFja2V0WzBdID0gKDkgPDwgNCkgKyA2OworICBzdHJuY3B5KCZwYWNrZXRb
MV0sICZwLT5mcmFtZWJ1ZlsxNF0sIDYpOworICBzZW5kX3BhY2tldChkcnZ0aGlzLCBwYWNrZXQp
OworfQorCitNT0RVTEVfRVhQT1JUIHZvaWQgc2h1dHRsZVZGRF9zdHJpbmcoCisgICAgRHJpdmVy
ICpkcnZ0aGlzLCBpbnQgeCwgaW50IHksIGNvbnN0IGNoYXIgc3RyaW5nW10pIHsKKyAgUHJpdmF0
ZURhdGEgKnAgPSBkcnZ0aGlzLT5wcml2YXRlX2RhdGE7CisKKyAgLS14OyAtLXk7CisgIGlmICh5
IDwgMCB8fCB5ID49IHAtPmhlaWdodCkKKyAgICByZXR1cm47CisKKyAgaW50IGk7CisgIGZvciAo
aSA9IDA7IChzdHJpbmdbaV0gIT0gJ1wwJykgJiYgKHggPCBwLT53aWR0aCk7ICsraSwgKyt4KSB7
CisgICAgaWYgKHggPj0gMCkgeyAgICAvLyBubyB3cml0ZSBsZWZ0IG9mIGxlZnQgYm9yZGVyCisg
ICAgICBwLT5mcmFtZWJ1ZlsoeSAqIHAtPndpZHRoKSArIHhdID0gc3RyaW5nW2ldOworICAgIH0K
KyAgfQorfQorCisKK01PRFVMRV9FWFBPUlQgdm9pZCBzaHV0dGxlVkZEX2NocihEcml2ZXIgKmRy
dnRoaXMsIGludCB4LCBpbnQgeSwgY2hhciBjKSB7CisgIFByaXZhdGVEYXRhICpwID0gZHJ2dGhp
cy0+cHJpdmF0ZV9kYXRhOworCisgIC0teDsgLS15OworICBpZiAoeCA+PSAwICYmIHggPCBwLT53
aWR0aCAmJiB5ID49IDAgJiYgeSA8IHAtPmhlaWdodCkgeworICAgIHAtPmZyYW1lYnVmWyh5ICog
cC0+d2lkdGgpICsgeF0gPSBjOworICB9Cit9CisKKworCmRpZmYgLU5hdXIgbGNkcHJvYy1jdnMu
b3JpZy9zZXJ2ZXIvZHJpdmVycy9zaHV0dGxlVkZELmggbGNkcHJvYy1jdnMvc2VydmVyL2RyaXZl
cnMvc2h1dHRsZVZGRC5oCi0tLSBsY2Rwcm9jLWN2cy5vcmlnL3NlcnZlci9kcml2ZXJzL3NodXR0
bGVWRkQuaAkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAorKysgbGNkcHJvYy1j
dnMvc2VydmVyL2RyaXZlcnMvc2h1dHRsZVZGRC5oCTIwMDctMDctMDMgMTU6NTU6NDkuMDAwMDAw
MDAwIC0wNzAwCkBAIC0wLDAgKzEsMzQgQEAKKyNpZm5kZWYgU0hVVFRMRV9WRkRfSAorI2RlZmlu
ZSBTSFVUVExFX1ZGRF9ICisKKyNpbmNsdWRlICJsY2QuaCIKKworLy8gbWFuZGF0b3J5IGZ1bmN0
aW9ucyAobmVjZXNzYXJ5IGZvciBhbGwgZHJpdmVycykKK01PRFVMRV9FWFBPUlQgaW50ICBzaHV0
dGxlVkZEX2luaXQoRHJpdmVyICpkcnZ0aGlzKTsKK01PRFVMRV9FWFBPUlQgdm9pZCBzaHV0dGxl
VkZEX2Nsb3NlKERyaXZlciAqZHJ2dGhpcyk7CisKKy8vIGVzc2VudGlhbCBvdXRwdXQgZnVuY3Rp
b25zIChuZWNlc3NhcnkgZm9yIG91dHB1dCBkcml2ZXJzKQorTU9EVUxFX0VYUE9SVCBpbnQgIHNo
dXR0bGVWRkRfd2lkdGgoRHJpdmVyICpkcnZ0aGlzKTsKK01PRFVMRV9FWFBPUlQgaW50ICBzaHV0
dGxlVkZEX2hlaWdodChEcml2ZXIgKmRydnRoaXMpOworTU9EVUxFX0VYUE9SVCB2b2lkIHNodXR0
bGVWRkRfY2xlYXIoRHJpdmVyICpkcnZ0aGlzKTsKK01PRFVMRV9FWFBPUlQgdm9pZCBzaHV0dGxl
VkZEX2ZsdXNoKERyaXZlciAqZHJ2dGhpcyk7CitNT0RVTEVfRVhQT1JUIHZvaWQgc2h1dHRsZVZG
RF9zdHJpbmcoCisgICAgRHJpdmVyICpkcnZ0aGlzLCBpbnQgeCwgaW50IHksIGNvbnN0IGNoYXIg
c3RyaW5nW10pOworTU9EVUxFX0VYUE9SVCB2b2lkIHNodXR0bGVWRkRfY2hyKERyaXZlciAqZHJ2
dGhpcywgaW50IHgsIGludCB5LCBjaGFyIGMpOworCisvLyBWRkQgcGh5c2ljYWwgZGltZW5zaW9u
cworI2RlZmluZSBTSFVUVExFX1ZGRF9XSURUSCAgICAgMjAKKyNkZWZpbmUgU0hVVFRMRV9WRkRf
SEVJR0hUICAgIDEKKworLy8gVkZEIFVTQiBwcm9wZXJ0aWVzCisjZGVmaW5lIFNIVVRUTEVfVkZE
X1ZFTkRPUl9JRCAgICAgICAweDEzMDgKKyNkZWZpbmUgU0hVVFRMRV9WRkRfUFJPRFVDVF9JRCAg
ICAgIDB4MDAwMworI2RlZmluZSBTSFVUVExFX1ZGRF9JTlRFUkZBQ0VfTlVNICAgMQorCisvLyBW
RkQgVVNCIGNvbnRyb2wgbWVzc2FnZQorI2RlZmluZSBTSFVUVExFX1ZGRF9QQUNLRVRfU0laRSAg
ICAgICAgICA4CisjZGVmaW5lIFNIVVRUTEVfVkZEX1dSSVRFX0FUVEVNUFRTICAgICAgIDMKKyNk
ZWZpbmUgU0hVVFRMRV9WRkRfU1VDQ0VTU19TTEVFUF9VU0VDICAgNjQwMAorI2RlZmluZSBTSFVU
VExFX1ZGRF9SRVRSWV9TTEVFUF9VU0VDICAgICAxMDAwMAorCisjZW5kaWYK
------=_Part_66026_23310398.1183503973746--