[Bf-committers] Rotational Limits constraint v.5

bf-committers@blender.org bf-committers@blender.org
Sun, 09 May 2004 18:26:24 -0500


--Message-Boundary-6618
Content-type: text/plain; charset=US-ASCII
Content-transfer-encoding: 7BIT
Content-description: Mail message body

I fixed the problem with the constraint not applying when using the 
RKEY. Now when your finished rotating the bone it will snap back to 
within the limits. The patch seems to be completely useable on both 
bones and objects now.

Enjoy this "previously curiously missing" feature in Blender.

Jeremy



--Message-Boundary-6618
Content-type: text/plain; charset=US-ASCII
Content-disposition: inline
Content-description: Attachment information.

The following section of this message contains a file attachment
prepared for transmission using the Internet MIME message format.
If you are using Pegasus Mail, or any other MIME-compliant system,
you should be able to save it or view it from within your mailer.
If you cannot, please ask your system administrator for assistance.

   ---- File information -----------
     File:  constraintpatch.txt
     Date:  9 May 2004, 18:20
     Size:  18171 bytes.
     Type:  Text

--Message-Boundary-6618
Content-type: Application/Octet-stream; name="constraintpatch.txt"; type=Text
Content-disposition: attachment; filename="constraintpatch.txt"
Content-transfer-encoding: BASE64

SW5kZXg6IHNvdXJjZS9ibGVuZGVyL2JsZW5rZXJuZWwvaW50ZXJuL2NvbnN0cmFpbnQuYw0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnNyb290L2JmLWJsZW5kZXIvYmxlbmRlci9z
b3VyY2UvYmxlbmRlci9ibGVua2VybmVsL2ludGVybi9jb25zdHJhaW50LmMsdg0KcmV0cmll
dmluZyByZXZpc2lvbiAxLjE0DQpkaWZmIC11IC1yMS4xNCBjb25zdHJhaW50LmMNCi0tLSBz
b3VyY2UvYmxlbmRlci9ibGVua2VybmVsL2ludGVybi9jb25zdHJhaW50LmMJNCBBcHIgMjAw
NCAxNzoxMzozNSAtMDAwMAkxLjE0DQorKysgc291cmNlL2JsZW5kZXIvYmxlbmtlcm5lbC9p
bnRlcm4vY29uc3RyYWludC5jCTkgTWF5IDIwMDQgMjM6MjE6MDcgLTAwMDANCkBAIC0yMTQs
NiArMjE0LDMxIEBADQogCQkJcmVzdWx0ID0gZGF0YTsNCiAJCX0NCiAJCWJyZWFrOw0KKwlj
YXNlIENPTlNUUkFJTlRfVFlQRV9ST1RMSU1JVDoNCisJCXsNCisJCQliUm90YXRpb25MaW1p
dENvbnN0cmFpbnQgKmRhdGE7DQorCQkJZGF0YSA9IE1FTV9jYWxsb2NOKHNpemVvZihiUm90
YXRpb25MaW1pdENvbnN0cmFpbnQpLCAicm90bGltaXRDb25zdHJhaW50Iik7DQorCQkJDQor
CQkJDQorCQkJZGF0YS0+eG1pbiA9IDAuMDsNCisJCQlkYXRhLT54bWF4ID0gMzYwLjA7DQor
CQkJZGF0YS0+eW1pbiA9IDAuMDsNCisJCQlkYXRhLT55bWF4ID0gMzYwLjA7DQorCQkJZGF0
YS0+em1pbiA9IDAuMDsNCisJCQlkYXRhLT56bWF4ID0gMzYwLjA7DQorCQkJDQorCQkJZGF0
YS0+eHFtaW4gPSAtMTAwOw0KKwkJCWRhdGEtPnhxbWF4ID0gMTAwOw0KKwkJCWRhdGEtPnlx
bWluID0gLTEwMDsNCisJCQlkYXRhLT55cW1heCA9IDEwMDsNCisJCQlkYXRhLT56cW1pbiA9
IC0xMDA7DQorCQkJZGF0YS0+enFtYXggPSAxMDA7DQorCQkJZGF0YS0+d3FtaW4gPSAtMTAw
Ow0KKwkJCWRhdGEtPndxbWF4ID0gMTAwOw0KKwkJCQ0KKwkJCXJlc3VsdCA9IGRhdGE7DQor
CQl9DQorCQlicmVhazsNCiAJY2FzZSBDT05TVFJBSU5UX1RZUEVfTE9DTElLRToNCiAJCXsN
CiAJCQliTG9jYXRlTGlrZUNvbnN0cmFpbnQgKmRhdGE7DQpAQCAtNzk5LDYgKzgyNCwxNCBA
QA0KIAkJCQlkYXRhID0gKGJSb3RhdGVMaWtlQ29uc3RyYWludCopIGNvbi0+ZGF0YTsNCiAJ
CQl9DQogCQkJYnJlYWs7DQorCQljYXNlIENPTlNUUkFJTlRfVFlQRV9ST1RMSU1JVDoNCisJ
CQl7DQorCQkJCWJSb3RhdGlvbkxpbWl0Q29uc3RyYWludCAqZGF0YTsNCisJCQkJDQorCQkJ
CWNvbi0+ZGF0YSA9IE1FTV9kdXBhbGxvY04gKGNvbi0+ZGF0YSk7DQorCQkJCWRhdGEgPSAo
YlJvdGF0aW9uTGltaXRDb25zdHJhaW50KikgY29uLT5kYXRhOw0KKwkJCX0NCisJCQlicmVh
azsNCiAJCWNhc2UgQ09OU1RSQUlOVF9UWVBFX05VTEw6DQogCQkJew0KIAkJCQljb24tPmRh
dGEgPSBOVUxMOw0KQEAgLTgyNyw2ICs4NjAsOTcgQEANCiAJfQ0KIH0NCiANCit2b2lkIGV2
YWx1YXRlX3JvdGxpbWl0cyAoT2JqZWN0ICpvYiwgc2hvcnQgdHlwZSwgdm9pZCAqb3duZXJk
YXRhLCBiUm90YXRpb25MaW1pdENvbnN0cmFpbnQgKmRhdGEpIHsNCisJZmxvYXQJcm90TGlt
aXRzTWluWzNdOw0KKwlmbG9hdAlyb3RMaW1pdHNNYXhbM107DQorCWZsb2F0CXF1YXRMaW1p
dHNNaW5bNF07DQorCWZsb2F0CXF1YXRMaW1pdHNNYXhbNF07DQorCWZsb2F0CW5ld01hdFs0
XVs0XTsNCisJZmxvYXQJc2l6ZVszXTsNCisJYlBvc2VDaGFubmVsICpjaGFuOw0KKwkJDQor
CWlmICh0eXBlID09IFRBUkdFVF9CT05FICYmIG93bmVyZGF0YSkgew0KKwkJLyogaGFuZGxl
IGNvbnN0cmFpbnRzIG9uIGJvbmVzIGhlcmUgKi8NCisJCUJvbmUgKmN1cmJvbmUgPSAoQm9u
ZSogKW93bmVyZGF0YTsNCisJCQ0KKwkJaWYgKGN1cmJvbmUpIHsNCisJCQlwcmludGYgKCJ3
ZSBlbnRlcmVkIHRoZSBib25lIHNlY3Rpb24gXG4iKTsNCisJCQkvKiByZXRyaWV2ZSBvdXIg
bGltaXRzIGZyb20gdGhlIGNvbnN0cmFpbnQgZGF0YSAqLw0KKwkJCXF1YXRMaW1pdHNNaW5b
MF0gPSBkYXRhLT54cW1pbjsNCisJCQlxdWF0TGltaXRzTWluWzFdID0gZGF0YS0+eXFtaW47
DQorCQkJcXVhdExpbWl0c01pblsyXSA9IGRhdGEtPnpxbWluOw0KKwkJCXF1YXRMaW1pdHNN
aW5bM10gPSBkYXRhLT53cW1pbjsNCisJCQkNCisJCQlxdWF0TGltaXRzTWF4WzBdID0gZGF0
YS0+eHFtYXg7DQorCQkJcXVhdExpbWl0c01heFsxXSA9IGRhdGEtPnlxbWF4Ow0KKwkJCXF1
YXRMaW1pdHNNYXhbMl0gPSBkYXRhLT56cW1heDsNCisJCQlxdWF0TGltaXRzTWF4WzNdID0g
ZGF0YS0+d3FtYXg7DQorCQkJDQorCQkJLyogZG8gb3VyIGNvbXBhcmlzb25zIGFuZCBhcHBs
eSBjb25zdHJhaW50cyAqLw0KKwkJCWlmIChjdXJib25lLT5xdWF0WzBdIDwgcXVhdExpbWl0
c01pblswXSkgDQorCQkJCWN1cmJvbmUtPnF1YXRbMF0gPSBxdWF0TGltaXRzTWluWzBdOw0K
KwkJCWlmIChjdXJib25lLT5xdWF0WzFdIDwgcXVhdExpbWl0c01pblsxXSkNCisJCQkJY3Vy
Ym9uZS0+cXVhdFsxXSA9IHF1YXRMaW1pdHNNaW5bMV07DQorCQkJaWYgKGN1cmJvbmUtPnF1
YXRbMl0gPCBxdWF0TGltaXRzTWluWzJdKQ0KKwkJCQljdXJib25lLT5xdWF0WzJdID0gcXVh
dExpbWl0c01pblsyXTsNCisJCQlpZiAoY3VyYm9uZS0+cXVhdFszXSA8IHF1YXRMaW1pdHNN
aW5bM10pDQorCQkJCWN1cmJvbmUtPnF1YXRbM10gPSBxdWF0TGltaXRzTWluWzNdOw0KKwkJ
CQ0KKwkJCWlmIChjdXJib25lLT5xdWF0WzBdID4gcXVhdExpbWl0c01heFswXSkNCisJCQkJ
Y3VyYm9uZS0+cXVhdFswXSA9IHF1YXRMaW1pdHNNYXhbMF07DQorCQkJaWYgKGN1cmJvbmUt
PnF1YXRbMV0gPiBxdWF0TGltaXRzTWF4WzFdKQ0KKwkJCQljdXJib25lLT5xdWF0WzFdID0g
cXVhdExpbWl0c01heFsxXTsNCisJCQlpZiAoY3VyYm9uZS0+cXVhdFsyXSA+IHF1YXRMaW1p
dHNNYXhbMl0pDQorCQkJCWN1cmJvbmUtPnF1YXRbMl0gPSBxdWF0TGltaXRzTWF4WzJdOw0K
KwkJCWlmIChjdXJib25lLT5xdWF0WzNdID4gcXVhdExpbWl0c01heFszXSkNCisJCQkJY3Vy
Ym9uZS0+cXVhdFszXSA9IHF1YXRMaW1pdHNNYXhbM107DQorCQkJDQorCQkJaWYgKEcub2Jw
b3NlKSB7IC8qIHJlcXVpcmVkIGNoZWNrIGZvciB3aGVuIHJlYWRpbmcgZnJvbSBmaWxlIGVy
cm9yLiAqLw0KKwkJCQljaGFuID0gTUVNX2NhbGxvY04gKHNpemVvZiAoYlBvc2VDaGFubmVs
KSwgInRyYW5zUG9zZUNoYW5uZWwiKTsNCisJCQkJY2hhbi0+ZmxhZyB8PSBQT1NFX1JPVDsN
CisJCQkJbWVtY3B5IChjaGFuLT5xdWF0LCBjdXJib25lLT5xdWF0LCBzaXplb2YgKGNoYW4t
PnF1YXQpKTsNCisJCQkJc3RyY3B5IChjaGFuLT5uYW1lLCBjdXJib25lLT5uYW1lKTsNCisJ
CQkJaWYgKCFHLm9icG9zZS0+cG9zZSkgRy5vYnBvc2UtPnBvc2U9IE1FTV9jYWxsb2NOKHNp
emVvZihiUG9zZSksICJwb3NlIik7DQorCQkJCXNldF9wb3NlX2NoYW5uZWwgKEcub2Jwb3Nl
LT5wb3NlLCBjaGFuKTsNCisJCQl9DQorCQkJDQorCQkJcHJpbnRmICgiY3VyYm9uZSBbMF06
ICVmIFsxXTogJWYgWzJdOiAlZiBbM106ICVmIFxuIiwgY3VyYm9uZS0+cXVhdFswXSwgY3Vy
Ym9uZS0+cXVhdFsxXSwgY3VyYm9uZS0+cXVhdFsyXSwgY3VyYm9uZS0+cXVhdFszXSk7DQor
CQkJcHJpbnRmICgibWluIFswXTogJWYgWzFdOiAlZiBbMl06ICVmIFszXTogJWYgXG4iLCBx
dWF0TGltaXRzTWluWzBdLCBxdWF0TGltaXRzTWluWzFdLCBxdWF0TGltaXRzTWluWzJdLCBx
dWF0TGltaXRzTWluWzNdKTsNCisJCQlwcmludGYgKCJtYXggWzBdOiAlZiBbMV06ICVmIFsy
XTogJWYgWzNdOiAlZiBcbiIsIHF1YXRMaW1pdHNNYXhbMF0sIHF1YXRMaW1pdHNNYXhbMV0s
IHF1YXRMaW1pdHNNYXhbMl0sIHF1YXRMaW1pdHNNYXhbM10pOw0KKwkJCXByaW50ZiAoIm91
ciBib25lcyBuYW1lIGlzOiAlcyBcbiIsIGN1cmJvbmUtPm5hbWUpOw0KKwkJfQ0KKwkJCQkJ
DQorCX0gZWxzZSB7DQorCQkvKiBoYW5kbGUgY29uc3RyYWludHMgb24gb2JqZWN0cyBoZXJl
ICovDQorCQkvKiByZXRyaWV2ZSBvdXIgbGltaXRzIGZyb20gdGhlIGNvbnN0cmFpbnQgZGF0
YSAqLw0KKwkJLyogY29udmVydCBvdXIgbGltaXRzIHRvIHZhbHVlcyBvYi0+cm90IGNhbg0K
KwkJICogdW5kZXJzdGFuZCAqLw0KKwkJcm90TGltaXRzTWluWzBdID0gZGF0YS0+eG1pbioo
ZmxvYXQpKE1fUEkvMTgwLjApOw0KKwkJcm90TGltaXRzTWluWzFdID0gZGF0YS0+eW1pbioo
ZmxvYXQpKE1fUEkvMTgwLjApOw0KKwkJcm90TGltaXRzTWluWzJdID0gZGF0YS0+em1pbioo
ZmxvYXQpKE1fUEkvMTgwLjApOw0KKwkJDQorCQlyb3RMaW1pdHNNYXhbMF0gPSBkYXRhLT54
bWF4KihmbG9hdCkoTV9QSS8xODAuMCk7DQorCQlyb3RMaW1pdHNNYXhbMV0gPSBkYXRhLT55
bWF4KihmbG9hdCkoTV9QSS8xODAuMCk7DQorCQlyb3RMaW1pdHNNYXhbMl0gPSBkYXRhLT56
bWF4KihmbG9hdCkoTV9QSS8xODAuMCk7DQorCQkNCisJCWlmIChvYi0+cm90WzBdIDwgcm90
TGltaXRzTWluWzBdKQ0KKwkJCW9iLT5yb3RbMF0gPSByb3RMaW1pdHNNaW5bMF07DQorCQlp
ZiAob2ItPnJvdFswXSA+IHJvdExpbWl0c01heFswXSkNCisJCQlvYi0+cm90WzBdID0gcm90
TGltaXRzTWF4WzBdOw0KKwkJDQorCQlpZiAob2ItPnJvdFsxXSA8IHJvdExpbWl0c01pblsx
XSkNCisJCQlvYi0+cm90WzFdID0gcm90TGltaXRzTWluWzFdOw0KKwkJaWYgKG9iLT5yb3Rb
MV0gPiByb3RMaW1pdHNNYXhbMV0pDQorCQkJb2ItPnJvdFsxXSA9IHJvdExpbWl0c01heFsx
XTsNCisJCQ0KKwkJaWYgKG9iLT5yb3RbMl0gPCByb3RMaW1pdHNNaW5bMl0pDQorCQkJb2It
PnJvdFsyXSA9IHJvdExpbWl0c01pblsyXTsNCisJCWlmIChvYi0+cm90WzJdID4gcm90TGlt
aXRzTWF4WzJdKQ0KKwkJCW9iLT5yb3RbMl0gPSByb3RMaW1pdHNNYXhbMl07DQorCQkNCisJ
fQ0KK30NCisNCiB2b2lkIGV2YWx1YXRlX2NvbnN0cmFpbnQgKGJDb25zdHJhaW50ICpjb25z
dHJhaW50LCBPYmplY3QgKm9iLCBzaG9ydCBvd25lcnR5cGUsIHZvaWQgKm93bmVyZGF0YSwg
ZmxvYXQgdGFyZ2V0bWF0W11bNF0pDQogLyogb2IgaXMgbGlrZWx5IHRvIGJlIGEgd29ya29i
ICovDQogew0KQEAgLTg5MCw2ICsxMDE0LDE0IEBADQogCQlvYi0+b2JtYXRbMl1bMF0gPSB0
bWF0WzJdWzBdKnNpemVbMF07DQogCQlvYi0+b2JtYXRbMl1bMV0gPSB0bWF0WzJdWzFdKnNp
emVbMV07DQogCQlvYi0+b2JtYXRbMl1bMl0gPSB0bWF0WzJdWzJdKnNpemVbMl07DQorCQl9
DQorCQlicmVhazsNCisJY2FzZSBDT05TVFJBSU5UX1RZUEVfUk9UTElNSVQ6DQorCQl7DQor
CQkJYlJvdGF0aW9uTGltaXRDb25zdHJhaW50ICpkYXRhOw0KKwkJCWRhdGEgPSBjb25zdHJh
aW50LT5kYXRhOw0KKwkJCQ0KKwkJCWV2YWx1YXRlX3JvdGxpbWl0cyhvYiwgb3duZXJ0eXBl
LCBvd25lcmRhdGEsIGRhdGEpOw0KIAkJfQ0KIAkJYnJlYWs7DQogCWNhc2UgQ09OU1RSQUlO
VF9UWVBFX05VTEw6DQpJbmRleDogc291cmNlL2JsZW5kZXIvYmxlbmxvYWRlci9pbnRlcm4v
cmVhZGZpbGUuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnNyb290L2JmLWJsZW5k
ZXIvYmxlbmRlci9zb3VyY2UvYmxlbmRlci9ibGVubG9hZGVyL2ludGVybi9yZWFkZmlsZS5j
LHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS41Nw0KZGlmZiAtdSAtcjEuNTcgcmVhZGZpbGUu
Yw0KLS0tIHNvdXJjZS9ibGVuZGVyL2JsZW5sb2FkZXIvaW50ZXJuL3JlYWRmaWxlLmMJMjgg
QXByIDIwMDQgMTg6MDg6MzMgLTAwMDAJMS41Nw0KKysrIHNvdXJjZS9ibGVuZGVyL2JsZW5s
b2FkZXIvaW50ZXJuL3JlYWRmaWxlLmMJOSBNYXkgMjAwNCAyMzoyMToyNSAtMDAwMA0KQEAg
LTEyMTksNiArMTIxOSwxMyBAQA0KIAkJCQlkYXRhLT50YXIgPSBuZXdsaWJhZHIoZmQsIGlk
LT5saWIsIGRhdGEtPnRhcik7DQogCQkJfTsNCiAJCQlicmVhazsNCisvLwkJY2FzZSBDT05T
VFJBSU5UX1RZUEVfUk9UTElNSVQ6DQorLy8JCQl7DQorLy8JCQkJYlJvdGF0aW9uTGltaXRD
b25zdHJhaW50ICpkYXRhOw0KKy8vCQkJCWRhdGE9KGJSb3RhdGlvbkxpbWl0Q29uc3RyYWlu
dCopY29uLT5kYXRhOw0KKy8vCQkJCQ0KKy8vCQkJfTsNCisvLwkJCWJyZWFrOw0KIAkJY2Fz
ZSBDT05TVFJBSU5UX1RZUEVfS0lORU1BVElDOg0KIAkJCXsNCiAJCQkJYktpbmVtYXRpY0Nv
bnN0cmFpbnQgKmRhdGE7DQpAQCAtNDU2MCw2ICs0NTY3LDExIEBADQogCQkJCWV4cGFuZF9k
b2l0KGZkLCBtYWludmFyLCBkYXRhLT50YXIpOw0KIAkJCQlicmVhazsNCiAJCQl9DQorLy8J
CWNhc2UgQ09OU1RSQUlOVF9UWVBFX1JPVExJTUlUOg0KKy8vCQkJew0KKy8vCQkJCWJSb3Rh
dGlvbkxpbWl0Q29uc3RyYWludCAqZGF0YSA9IChiUm90YXRpb25MaW1pdENvbnN0cmFpbnQq
KWN1cmNvbi0+ZGF0YTsNCisvLwkJCQlicmVhazsNCisvLwkJCX0NCiAJCWNhc2UgQ09OU1RS
QUlOVF9UWVBFX0tJTkVNQVRJQzoNCiAJCQl7DQogCQkJCWJLaW5lbWF0aWNDb25zdHJhaW50
ICpkYXRhID0gKGJLaW5lbWF0aWNDb25zdHJhaW50KiljdXJjb24tPmRhdGE7DQpJbmRleDog
c291cmNlL2JsZW5kZXIvYmxlbmxvYWRlci9pbnRlcm4vd3JpdGVmaWxlLmMNCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NClJDUyBmaWxlOiAvY3Zzcm9vdC9iZi1ibGVuZGVyL2JsZW5kZXIvc291cmNlL2Js
ZW5kZXIvYmxlbmxvYWRlci9pbnRlcm4vd3JpdGVmaWxlLmMsdg0KcmV0cmlldmluZyByZXZp
c2lvbiAxLjE5DQpkaWZmIC11IC1yMS4xOSB3cml0ZWZpbGUuYw0KLS0tIHNvdXJjZS9ibGVu
ZGVyL2JsZW5sb2FkZXIvaW50ZXJuL3dyaXRlZmlsZS5jCTIwIEFwciAyMDA0IDE5OjEyOjQ4
IC0wMDAwCTEuMTkNCisrKyBzb3VyY2UvYmxlbmRlci9ibGVubG9hZGVyL2ludGVybi93cml0
ZWZpbGUuYwk5IE1heSAyMDA0IDIzOjIxOjMwIC0wMDAwDQpAQCAtNTcwLDYgKzU3MCw5IEBA
DQogCQljYXNlIENPTlNUUkFJTlRfVFlQRV9ST1RMSUtFOg0KIAkJCXdyaXRlc3RydWN0KHdk
LCBEQVRBLCAiYlJvdGF0ZUxpa2VDb25zdHJhaW50IiwgMSwgY29uLT5kYXRhKTsNCiAJCQli
cmVhazsNCisJCWNhc2UgQ09OU1RSQUlOVF9UWVBFX1JPVExJTUlUOg0KKwkJCXdyaXRlc3Ry
dWN0KHdkLCBEQVRBLCAiYlJvdGF0aW9uTGltaXRDb25zdHJhaW50IiwgMSwgY29uLT5kYXRh
KTsNCisJCQlicmVhazsNCiAJCWNhc2UgQ09OU1RSQUlOVF9UWVBFX0xPQ0xJS0U6DQogCQkJ
d3JpdGVzdHJ1Y3Qod2QsIERBVEEsICJiTG9jYXRlTGlrZUNvbnN0cmFpbnQiLCAxLCBjb24t
PmRhdGEpOw0KIAkJCWJyZWFrOw0KSW5kZXg6IHNvdXJjZS9ibGVuZGVyL2luY2x1ZGUvYnV0
c3BhY2UuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnNyb290L2JmLWJsZW5kZXIv
YmxlbmRlci9zb3VyY2UvYmxlbmRlci9pbmNsdWRlL2J1dHNwYWNlLmgsdg0KcmV0cmlldmlu
ZyByZXZpc2lvbiAxLjIxDQpkaWZmIC11IC1yMS4yMSBidXRzcGFjZS5oDQotLS0gc291cmNl
L2JsZW5kZXIvaW5jbHVkZS9idXRzcGFjZS5oCTYgQXByIDIwMDQgMTk6MTY6MTQgLTAwMDAJ
MS4yMQ0KKysrIHNvdXJjZS9ibGVuZGVyL2luY2x1ZGUvYnV0c3BhY2UuaAk5IE1heSAyMDA0
IDIzOjIxOjM0IC0wMDAwDQpAQCAtNTE0LDIwICs1MTQsMjEgQEANCiAjZGVmaW5lIEJfQ09O
U1RSQUlOVEJVVFMJMzMwMA0KIGVudW0gew0KIAlCX0NPTlNUUkFJTlRfUkVEUkFXID0gMzIw
MSwNCi0JQl9DT05TVFJBSU5UX0RFTCwNCi0JQl9DT05TVFJBSU5UX1RFU1QsDQotCUJfQ09O
U1RSQUlOVF9DSEFOR0VUWVBFLA0KLQlCX0NPTlNUUkFJTlRfQ0hBTkdFTkFNRSwNCi0JQl9D
T05TVFJBSU5UX0NIQU5HRVRBUkdFVCwNCi0JQl9DT05TVFJBSU5UX0FERF9OVUxMLA0KLQlC
X0NPTlNUUkFJTlRfQUREX0tJTkVNQVRJQywNCi0JQl9DT05TVFJBSU5UX0FERF9UUkFDS1RP
LA0KLQlCX0NPTlNUUkFJTlRfQUREX1JPVExJS0UsDQotCUJfQ09OU1RSQUlOVF9BRERfTE9D
TElLRSwNCi0JQl9DT05TVFJBSU5UX0FERF9BQ1RJT04sDQotCUJfQ09OU1RSQUlOVF9BRERf
TE9DS1RSQUNLLA0KLQlCX0NPTlNUUkFJTlRfQUREX0ZPTExPV1BBVEgsDQotCUJfQ09OU1RS
QUlOVF9BRERfRElTVEFOQ0VMSU1JVA0KKwlCX0NPTlNUUkFJTlRfREVMLCAvKjMyMDIgKi8N
CisJQl9DT05TVFJBSU5UX1RFU1QsIC8qMzIwMyAqLw0KKwlCX0NPTlNUUkFJTlRfQ0hBTkdF
VFlQRSwgLyozMjA0ICovDQorCUJfQ09OU1RSQUlOVF9DSEFOR0VOQU1FLCAvKjMyMDUgKi8N
CisJQl9DT05TVFJBSU5UX0NIQU5HRVRBUkdFVCwgLyozMjA2ICovDQorCUJfQ09OU1RSQUlO
VF9BRERfTlVMTCwgLyozMjA3ICovDQorCUJfQ09OU1RSQUlOVF9BRERfS0lORU1BVElDLCAv
KjMyMDggKi8NCisJQl9DT05TVFJBSU5UX0FERF9UUkFDS1RPLCAvKjMyMDkgKi8NCisJQl9D
T05TVFJBSU5UX0FERF9ST1RMSUtFLCAvKjMyMTAgKi8NCisJQl9DT05TVFJBSU5UX0FERF9M
T0NMSUtFLCAvKjMyMTEgKi8NCisJQl9DT05TVFJBSU5UX0FERF9BQ1RJT04sIC8qMzIxMiAq
Lw0KKwlCX0NPTlNUUkFJTlRfQUREX0xPQ0tUUkFDSywgLyozMjEzICovDQorCUJfQ09OU1RS
QUlOVF9BRERfRk9MTE9XUEFUSCwgLyozMjE0ICovDQorCUJfQ09OU1RSQUlOVF9BRERfRElT
VEFOQ0VMSU1JVCwgLyozMjE1ICovDQorCUJfQ09OU1RSQUlOVF9BRERfUk9UTElNSVQgLyoz
MjE2ICovDQogfTsNCiANCiAvKiAqKioqKioqKioqKioqKioqKioqKioqKiAqLw0KSW5kZXg6
IHNvdXJjZS9ibGVuZGVyL21ha2VzZG5hL0ROQV9jb25zdHJhaW50X3R5cGVzLmgNCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NClJDUyBmaWxlOiAvY3Zzcm9vdC9iZi1ibGVuZGVyL2JsZW5kZXIvc291cmNl
L2JsZW5kZXIvbWFrZXNkbmEvRE5BX2NvbnN0cmFpbnRfdHlwZXMuaCx2DQpyZXRyaWV2aW5n
IHJldmlzaW9uIDEuOA0KZGlmZiAtdSAtcjEuOCBETkFfY29uc3RyYWludF90eXBlcy5oDQot
LS0gc291cmNlL2JsZW5kZXIvbWFrZXNkbmEvRE5BX2NvbnN0cmFpbnRfdHlwZXMuaAkyMiBN
YXIgMjAwNCAyMjowMToyMSAtMDAwMAkxLjgNCisrKyBzb3VyY2UvYmxlbmRlci9tYWtlc2Ru
YS9ETkFfY29uc3RyYWludF90eXBlcy5oCTkgTWF5IDIwMDQgMjM6MjE6MzUgLTAwMDANCkBA
IC0xMzgsMTEgKzEzOCwxNiBAQA0KIA0KIA0KIC8qIFplcm8tdGFyZ2V0IGNvbnN0cmFpbnRz
ICovDQotdHlwZWRlZiBzdHJ1Y3QgYlJvdGF0aW9uQ29uc3RyYWludHsNCit0eXBlZGVmIHN0
cnVjdCBiUm90YXRpb25MaW1pdENvbnN0cmFpbnR7DQogCWZsb2F0IHhtaW4sIHhtYXg7DQog
CWZsb2F0IHltaW4sIHltYXg7DQogCWZsb2F0IHptaW4sIHptYXg7DQotfSBiUm90YXRpb25D
b25zdHJhaW50Ow0KKwkNCisJZmxvYXQgeHFtaW4sIHhxbWF4Ow0KKwlmbG9hdCB5cW1pbiwg
eXFtYXg7DQorCWZsb2F0IHpxbWluLCB6cW1heDsNCisJZmxvYXQgd3FtaW4sIHdxbWF4Ow0K
K30gYlJvdGF0aW9uTGltaXRDb25zdHJhaW50Ow0KIA0KIA0KIA0KSW5kZXg6IHNvdXJjZS9i
bGVuZGVyL3NyYy9idXR0b25zX29iamVjdC5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTog
L2N2c3Jvb3QvYmYtYmxlbmRlci9ibGVuZGVyL3NvdXJjZS9ibGVuZGVyL3NyYy9idXR0b25z
X29iamVjdC5jLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4yOA0KZGlmZiAtdSAtcjEuMjgg
YnV0dG9uc19vYmplY3QuYw0KLS0tIHNvdXJjZS9ibGVuZGVyL3NyYy9idXR0b25zX29iamVj
dC5jCTE2IEFwciAyMDA0IDA2OjA3OjA5IC0wMDAwCTEuMjgNCisrKyBzb3VyY2UvYmxlbmRl
ci9zcmMvYnV0dG9uc19vYmplY3QuYwk5IE1heSAyMDA0IDIzOjIxOjQ1IC0wMDAwDQpAQCAt
Mjc4LDYgKzI3OCw5IEBADQogCWNhc2UgQ09OU1RSQUlOVF9UWVBFX1JPVExJS0U6DQogCQlz
dHJjcHkgKHN0ciwgIkNvcHkgUm90YXRpb24iKTsNCiAJCXJldHVybjsNCisJY2FzZSBDT05T
VFJBSU5UX1RZUEVfUk9UTElNSVQ6DQorCQlzdHJjcHkgKHN0ciwgIkxpbWl0IFJvdGF0aW9u
Iik7DQorCQlyZXR1cm47DQogCWNhc2UgQ09OU1RSQUlOVF9UWVBFX0xPQ0xJS0U6DQogCQlz
dHJjcHkgKHN0ciwgIkNvcHkgTG9jYXRpb24iKTsNCiAJCXJldHVybjsNCkBAIC0zMDcsNiAr
MzEwLDggQEANCiAJCXJldHVybiBUSF9CVVRfU0VUVElORzsNCiAJY2FzZSBDT05TVFJBSU5U
X1RZUEVfUk9UTElLRToNCiAJCXJldHVybiBUSF9CVVRfU0VUVElORzE7DQorCWNhc2UgQ09O
U1RSQUlOVF9UWVBFX1JPVExJTUlUOg0KKwkJcmV0dXJuIFRIX0JVVF9TRVRUSU5HMTsNCiAJ
Y2FzZSBDT05TVFJBSU5UX1RZUEVfTE9DTElLRToNCiAJCXJldHVybiBUSF9CVVRfUE9QVVA7
DQogCWNhc2UgQ09OU1RSQUlOVF9UWVBFX0FDVElPTjoNCkBAIC01MDAsNiArNTA1LDY0IEBA
DQogCQkJCXVpQmxvY2tFbmRBbGlnbihibG9jayk7DQogCQkJfQ0KIAkJCWJyZWFrOw0KKwkJ
Y2FzZSBDT05TVFJBSU5UX1RZUEVfUk9UTElNSVQ6DQorCQkJew0KKwkJCQlzaG9ydCBvYmpl
Y3RUeXBlOw0KKwkJCQl2b2lkICpvYmplY3REYXRhPU5VTEw7DQorCQkJCWJSb3RhdGlvbkxp
bWl0Q29uc3RyYWludCAqZGF0YSA9IGNvbi0+ZGF0YTsNCisJCQkJDQorCQkJCS8qZmluZCBv
dXQgd2hldGhlciBpdHMgZm9yIGEgYm9uZSBvciBub3QNCisJCQkJICogd2Ugd2lsbCBiZSB1
c2luZyBhIGRpZmZlcmVudCBHVUkgZm9yIA0KKwkJCQkgKiBCb25lcyB0byByZXByZXNlbnQg
cXVhdGVybmlvbiBsaW1pdHMNCisJCQkJICogaW5zdGVhZCBvZiBFdWxlciBsaWtlIGZvciBP
YmplY3QgQ29uc3RyYWludHMgKi8NCisJCQkJDQorCQkJCWdldF9jb25zdHJhaW50X2NsaWVu
dChOVUxMLCAmb2JqZWN0VHlwZSwgJm9iamVjdERhdGEpOw0KKwkJCQkNCisJCQkJaWYgKG9i
amVjdERhdGEgJiYgb2JqZWN0VHlwZT09VEFSR0VUX0JPTkUpew0KKwkJCQkJaGVpZ2h0ID0g
MjI1Ow0KKwkJCQkJDQorCQkJCQlCSUZfVGhlbWVDb2xvcihjdXJDb2wpOw0KKwkJCQkJZ2xS
ZWN0cygqeGNvKzMsICp5Y28taGVpZ2h0LTM5LCAqeGNvK3dpZHRoKzMwLCAqeWNvLTE4KTsN
CisJCQkJCQ0KKwkJCQkJLyogVGhlIHggcXVhdCByb3RhdGlvbiBsaW1pdHMgKi8NCisJCQkJ
CXVpRGVmQnV0RihibG9jaywgTlVNLCBCX0NPTlNUUkFJTlRfUkVEUkFXLCAiTWluWDoiLCAq
eGNvKzUsICp5Y28tNDQsIDExMywgMTgsICZkYXRhLT54cW1pbiwgLTEwMCwgMTAwLCAwLCAw
LCAiTG93ZXIgbGltaXQgZm9yIHJvdGF0aW9uIG9uIFggYXhpcyIpOw0KKwkJCQkJdWlEZWZC
dXRGKGJsb2NrLCBOVU0sIEJfQ09OU1RSQUlOVF9SRURSQVcsICJNYXhYOiIsICp4Y28rNSwg
Knljby02NCwgMTEzLCAxOCwgJmRhdGEtPnhxbWF4LCAtMTAwLCAxMDAsIDAsIDAsICJVcHBl
ciBsaW1pdCBmb3Igcm90YXRpb24gb24gWCBheGlzIik7DQorCQkJCQkNCisJCQkJCS8qIFRo
ZSB5IHF1YXQgcm90YXRpb24gbGltaXRzICovDQorCQkJCQl1aURlZkJ1dEYoYmxvY2ssIE5V
TSwgQl9DT05TVFJBSU5UX1JFRFJBVywgIk1pblk6IiwgKnhjbys1LCAqeWNvLTg5LCAxMTMs
IDE4LCAmZGF0YS0+eXFtaW4sIC0xMDAsIDEwMCwgMCwgMCwgIkxvd2VyIGxpbWl0IGZvciBy
b3RhdGlvbiBvbiBZIGF4aXMiKTsNCisJCQkJCXVpRGVmQnV0RihibG9jaywgTlVNLCBCX0NP
TlNUUkFJTlRfUkVEUkFXLCAiTWF4WToiLCAqeGNvKzUsICp5Y28tMTA5LCAxMTMsIDE4LCAm
ZGF0YS0+eXFtYXgsIC0xMDAsIDEwMCwgMCwgMCwgIlVwcGVyIGxpbWl0IGZvciByb3RhdGlv
biBvbiBZIGF4aXMiKTsNCisJCQkJCQ0KKwkJCQkJLyogVGhlIHogcXVhdCByb3RhdGlvbiBs
aW1pdHMgKi8NCisJCQkJCXVpRGVmQnV0RihibG9jaywgTlVNLCBCX0NPTlNUUkFJTlRfUkVE
UkFXLCAiTWluWjoiLCAqeGNvKzUsICp5Y28tMTM0LCAxMTMsIDE4LCAmZGF0YS0+enFtaW4s
IC0xMDAsIDEwMCwgMCwgMCwgIkxvd2VyIGxpbWl0IGZvciByb3RhdGlvbiBvbiBaIGF4aXMi
KTsNCisJCQkJCXVpRGVmQnV0RihibG9jaywgTlVNLCBCX0NPTlNUUkFJTlRfUkVEUkFXLCAi
TWF4WjoiLCAqeGNvKzUsICp5Y28tMTU0LCAxMTMsIDE4LCAmZGF0YS0+enFtYXgsIC0xMDAs
IDEwMCwgMCwgMCwgIlVwcGVyIGxpbWl0IGZvciByb3RhdGlvbiBvbiBaIGF4aXMiKTsNCisJ
CQkJCQ0KKwkJCQkJLyogVGhlIHcgcXVhdCByb3RhdGlvbiBsaW1pdHMgKi8NCisJCQkJCXVp
RGVmQnV0RihibG9jaywgTlVNLCBCX0NPTlNUUkFJTlRfUkVEUkFXLCAiTWluVzoiLCAqeGNv
KzUsICp5Y28tMTc5LCAxMTMsIDE4LCAmZGF0YS0+d3FtaW4sIC0xMDAsIDEwMCwgMCwgMCwg
Ikxvd2VyIGxpbWl0IGZvciByb3RhdGlvbiBvbiBZIGF4aXMiKTsNCisJCQkJCXVpRGVmQnV0
RihibG9jaywgTlVNLCBCX0NPTlNUUkFJTlRfUkVEUkFXLCAiTWF4VzoiLCAqeGNvKzUsICp5
Y28tMTk5LCAxMTMsIDE4LCAmZGF0YS0+d3FtYXgsIC0xMDAsIDEwMCwgMCwgMCwgIlVwcGVy
IGxpbWl0IGZvciByb3RhdGlvbiBvbiBZIGF4aXMiKTsNCisJCQkJCQ0KKwkJCQkJYnJlYWs7
DQorCQkJCX0NCisJCQkJaGVpZ2h0ID0gMTY1Ow0KKwkJCQkNCisJCQkJQklGX1RoZW1lQ29s
b3IoY3VyQ29sKTsNCisJCQkJZ2xSZWN0cygqeGNvKzMsICp5Y28taGVpZ2h0LTM5LCAqeGNv
K3dpZHRoKzMwLCAqeWNvLTE4KTsNCisJCQkJCQ0KKwkJCQkvKiBUaGUgeCByb3RhdGlvbiBs
aW1pdHMgKi8NCisJCQkJdWlEZWZCdXRGKGJsb2NrLCBOVU0sIEJfQ09OU1RSQUlOVF9SRURS
QVcsICJNaW5YOiIsICp4Y28rNSwgKnljby00NCwgMTEzLCAxOCwgJmRhdGEtPnhtaW4sIDAs
IDM2MCwgMCwgMCwgIkxvd2VyIGxpbWl0IGZvciByb3RhdGlvbiBvbiBYIGF4aXMiKTsNCisJ
CQkJdWlEZWZCdXRGKGJsb2NrLCBOVU0sIEJfQ09OU1RSQUlOVF9SRURSQVcsICJNYXhYOiIs
ICp4Y28rNSwgKnljby02NCwgMTEzLCAxOCwgJmRhdGEtPnhtYXgsIDAsIDM2MCwgMCwgMCwg
IlVwcGVyIGxpbWl0IGZvciByb3RhdGlvbiBvbiBYIGF4aXMiKTsNCisJCQkJDQorCQkJDQor
CQkJCS8qIFRoZSB5IHJvdGF0aW9uIGxpbWl0cyAqLw0KKwkJCQl1aURlZkJ1dEYoYmxvY2ss
IE5VTSwgQl9DT05TVFJBSU5UX1JFRFJBVywgIk1pblk6IiwgKnhjbys1LCAqeWNvLTg5LCAx
MTMsIDE4LCAmZGF0YS0+eW1pbiwgMCwgMzYwLCAwLCAwLCAiTG93ZXIgbGltaXQgZm9yIHJv
dGF0aW9uIG9uIFkgYXhpcyIpOw0KKwkJCQl1aURlZkJ1dEYoYmxvY2ssIE5VTSwgQl9DT05T
VFJBSU5UX1JFRFJBVywgIk1heFk6IiwgKnhjbys1LCAqeWNvLTEwOSwgMTEzLCAxOCwgJmRh
dGEtPnltYXgsIDAsIDM2MCwgMCwgMCwgIlVwcGVyIGxpbWl0IGZvciByb3RhdGlvbiBvbiBZ
IGF4aXMiKTsNCisJCQkJDQorCQkJCQ0KKwkJCQkvKiBUaGUgeiByb3RhdGlvbiBsaW1pdHMg
Ki8NCisJCQkJdWlEZWZCdXRGKGJsb2NrLCBOVU0sIEJfQ09OU1RSQUlOVF9SRURSQVcsICJN
aW5aOiIsICp4Y28rNSwgKnljby0xMzQsIDExMywgMTgsICZkYXRhLT56bWluLCAwLCAzNjAs
IDAsIDAsICJMb3dlciBsaW1pdCBmb3Igcm90YXRpb24gb24gWiBheGlzIik7DQorCQkJCXVp
RGVmQnV0RihibG9jaywgTlVNLCBCX0NPTlNUUkFJTlRfUkVEUkFXLCAiTWF4WjoiLCAqeGNv
KzUsICp5Y28tMTU0LCAxMTMsIDE4LCAmZGF0YS0+em1heCwgMCwgMzYwLCAwLCAwLCAiVXBw
ZXIgbGltaXQgZm9yIHJvdGF0aW9uIG9uIFogYXhpcyIpOw0KKwkJCQkNCisJCQl9DQorCQkJ
YnJlYWs7DQogCQljYXNlIENPTlNUUkFJTlRfVFlQRV9LSU5FTUFUSUM6DQogCQkJew0KIAkJ
CQliS2luZW1hdGljQ29uc3RyYWludCAqZGF0YSA9IGNvbi0+ZGF0YTsNCkBAIC03MDQsNiAr
NzY3LDcgQEANCiANCiAJdWlEZWZCdXQoYmxvY2ssIEJVVE0sIEJfQ09OU1RSQUlOVF9BRERf
TE9DTElLRSwiQ29weSBMb2NhdGlvbiIsCQkwLCB5Y28tPTIwLCAxNjAsIDE5LCBOVUxMLCAw
LjAsIDAuMCwgMSwgMCwgIiIpOw0KIAl1aURlZkJ1dChibG9jaywgQlVUTSwgQl9DT05TVFJB
SU5UX0FERF9ST1RMSUtFLCJDb3B5IFJvdGF0aW9uIiwJCTAsIHljby09MjAsIDE2MCwgMTks
IE5VTEwsIDAuMCwgMC4wLCAxLCAwLCAiIik7DQorCXVpRGVmQnV0KGJsb2NrLCBCVVRNLCBC
X0NPTlNUUkFJTlRfQUREX1JPVExJTUlULCJMaW1pdCBSb3RhdGlvbiIsCQkwLCB5Y28tPTIw
LCAxNjAsIDE5LCBOVUxMLCAwLjAsIDAuMCwgMSwgMCwgIkxpbWl0IHRoZSB0aGUgdGhyZWUg
YXhlcyBvZiBSb3RhdGlvbiBmb3Igb3VyIG9iamVjdCIpOw0KIAkNCiAJdWlEZWZCdXQoYmxv
Y2ssIFNFUFIsIDAsICIiLAkJCQkJMCwgeWNvLT02LCAxMjAsIDYsIE5VTEwsIDAuMCwgMC4w
LCAwLCAwLCAiIik7DQogCQ0KQEAgLTczMywyOSArNzk3LDI5IEBADQogdm9pZCBkb19jb25z
dHJhaW50YnV0cyh1bnNpZ25lZCBzaG9ydCBldmVudCkNCiB7DQogCXN3aXRjaChldmVudCkg
ew0KLQljYXNlIEJfQ09OU1RSQUlOVF9DSEFOR0VOQU1FOg0KKwljYXNlIEJfQ09OU1RSQUlO
VF9DSEFOR0VOQU1FOi8qMzIwNSAqLw0KIAkJYnJlYWs7DQotCWNhc2UgQl9DT05TVFJBSU5U
X1RFU1Q6DQorCWNhc2UgQl9DT05TVFJBSU5UX1RFU1Q6IC8qMzIwMyAqLw0KIAkJdGVzdF9z
Y2VuZV9jb25zdHJhaW50cygpOw0KIAkJYWxscXVldWUgKFJFRFJBV1ZJRVczRCwgMCk7DQog
CQlhbGxxdWV1ZSAoUkVEUkFXQlVUU09CSkVDVCwgMCk7DQogCQlicmVhazsNCi0JY2FzZSBC
X0NPTlNUUkFJTlRfUkVEUkFXOg0KKwljYXNlIEJfQ09OU1RSQUlOVF9SRURSQVc6IC8qMzIw
MSAqLw0KIAkJdGVzdF9zY2VuZV9jb25zdHJhaW50cygpOw0KIAkJYWxscXVldWUgKFJFRFJB
V1ZJRVczRCwgMCk7DQogCQlhbGxxdWV1ZSAoUkVEUkFXQlVUU09CSkVDVCwgMCk7DQogCQli
cmVhazsNCi0JY2FzZSBCX0NPTlNUUkFJTlRfQ0hBTkdFVEFSR0VUOg0KKwljYXNlIEJfQ09O
U1RSQUlOVF9DSEFOR0VUQVJHRVQ6IC8qMzIwNiAqLw0KIAkJdGVzdF9zY2VuZV9jb25zdHJh
aW50cygpOw0KIAkJYWxscXVldWUgKFJFRFJBV1ZJRVczRCwgMCk7DQogCQlhbGxxdWV1ZSAo
UkVEUkFXQlVUU09CSkVDVCwgMCk7DQogCQlicmVhazsNCi0JY2FzZSBCX0NPTlNUUkFJTlRf
Q0hBTkdFVFlQRToNCisJY2FzZSBCX0NPTlNUUkFJTlRfQ0hBTkdFVFlQRTogLyozMjA0ICov
DQogCQl0ZXN0X3NjZW5lX2NvbnN0cmFpbnRzKCk7DQogCQlhbGxxdWV1ZSAoUkVEUkFXVklF
VzNELCAwKTsNCiAJCWFsbHF1ZXVlIChSRURSQVdCVVRTT0JKRUNULCAwKTsNCiAJCWJyZWFr
Ow0KLQljYXNlIEJfQ09OU1RSQUlOVF9BRERfTlVMTDoNCisJY2FzZSBCX0NPTlNUUkFJTlRf
QUREX05VTEw6IC8qMzIwNyAqLw0KIAkJew0KIAkJCWJDb25zdHJhaW50ICpjb247DQogCQkJ
DQpAQCAtNzY3LDcgKzgzMSw3IEBADQogCQkJYWxscXVldWUgKFJFRFJBV0JVVFNPQkpFQ1Qs
IDApOw0KIAkJfQ0KIAkJYnJlYWs7DQotCWNhc2UgQl9DT05TVFJBSU5UX0FERF9LSU5FTUFU
SUM6DQorCWNhc2UgQl9DT05TVFJBSU5UX0FERF9LSU5FTUFUSUM6IC8qMzIwOCAqLw0KIAkJ
ew0KIAkJCWJDb25zdHJhaW50ICpjb247DQogCQkJDQpAQCAtNzc5LDcgKzg0Myw3IEBADQog
CQkJYWxscXVldWUgKFJFRFJBV0JVVFNPQkpFQ1QsIDApOw0KIAkJfQ0KIAkJYnJlYWs7DQot
CWNhc2UgQl9DT05TVFJBSU5UX0FERF9UUkFDS1RPOg0KKwljYXNlIEJfQ09OU1RSQUlOVF9B
RERfVFJBQ0tUTzogLyozMjA5ICovDQogCQl7DQogCQkJYkNvbnN0cmFpbnQgKmNvbjsNCiAN
CkBAIC03OTEsNyArODU1LDcgQEANCiAJCQlhbGxxdWV1ZSAoUkVEUkFXQlVUU09CSkVDVCwg
MCk7DQogCQl9DQogCQlicmVhazsNCi0JY2FzZSBCX0NPTlNUUkFJTlRfQUREX1JPVExJS0U6
DQorCWNhc2UgQl9DT05TVFJBSU5UX0FERF9ST1RMSUtFOiAvKjMyMTAgKi8NCiAJCXsNCiAJ
CQliQ29uc3RyYWludCAqY29uOw0KIA0KQEAgLTgwMyw3ICs4NjcsNyBAQA0KIAkJCWFsbHF1
ZXVlIChSRURSQVdCVVRTT0JKRUNULCAwKTsNCiAJCX0NCiAJCWJyZWFrOw0KLQljYXNlIEJf
Q09OU1RSQUlOVF9BRERfTE9DTElLRToNCisJY2FzZSBCX0NPTlNUUkFJTlRfQUREX0xPQ0xJ
S0U6IC8qMzIxMSAqLw0KIAkJew0KIAkJCWJDb25zdHJhaW50ICpjb247DQogDQpAQCAtODE1
LDcgKzg3OSw3IEBADQogCQkJYWxscXVldWUgKFJFRFJBV0JVVFNPQkpFQ1QsIDApOw0KIAkJ
fQ0KIAkJYnJlYWs7DQotCWNhc2UgQl9DT05TVFJBSU5UX0FERF9BQ1RJT046DQorCWNhc2Ug
Ql9DT05TVFJBSU5UX0FERF9BQ1RJT046IC8qMzIxMiAqLw0KIAkJew0KIAkJCWJDb25zdHJh
aW50ICpjb247DQogDQpAQCAtODI3LDcgKzg5MSw3IEBADQogCQkJYWxscXVldWUgKFJFRFJB
V0JVVFNPQkpFQ1QsIDApOw0KIAkJfQ0KIAkJYnJlYWs7DQotCWNhc2UgQl9DT05TVFJBSU5U
X0FERF9MT0NLVFJBQ0s6DQorCWNhc2UgQl9DT05TVFJBSU5UX0FERF9MT0NLVFJBQ0s6IC8q
MzIxMyAqLw0KIAkJew0KIAkJCWJDb25zdHJhaW50ICpjb247DQogDQpAQCAtODM5LDcgKzkw
Myw3IEBADQogCQkJYWxscXVldWUgKFJFRFJBV0JVVFNPQkpFQ1QsIDApOw0KIAkJfQ0KIAkJ
YnJlYWs7DQotCWNhc2UgQl9DT05TVFJBSU5UX0FERF9GT0xMT1dQQVRIOg0KKwljYXNlIEJf
Q09OU1RSQUlOVF9BRERfRk9MTE9XUEFUSDogLyozMjE0ICovDQogCQl7DQogCQkJYkNvbnN0
cmFpbnQgKmNvbjsNCiANCkBAIC04NTEsMTAgKzkxNSwyMiBAQA0KIAkJCWFsbHF1ZXVlIChS
RURSQVdCVVRTT0JKRUNULCAwKTsNCiAJCX0NCiAJCWJyZWFrOw0KLQljYXNlIEJfQ09OU1RS
QUlOVF9ERUw6DQorCWNhc2UgQl9DT05TVFJBSU5UX0RFTDogLyozMjAyICovDQogCQl0ZXN0
X3NjZW5lX2NvbnN0cmFpbnRzKCk7DQogCQlhbGxxdWV1ZSAoUkVEUkFXVklFVzNELCAwKTsN
CiAJCWFsbHF1ZXVlIChSRURSQVdCVVRTT0JKRUNULCAwKTsNCisJCWJyZWFrOw0KKwljYXNl
IEJfQ09OU1RSQUlOVF9BRERfUk9UTElNSVQ6IC8qMzIxNiAqLw0KKwkJew0KKwkJCWJDb25z
dHJhaW50ICpjb247DQorDQorCQkJY29uID0gYWRkX25ld19jb25zdHJhaW50KENPTlNUUkFJ
TlRfVFlQRV9ST1RMSU1JVCk7DQorCQkJYWRkX2NvbnN0cmFpbnRfdG9fY2xpZW50KGNvbik7
DQorDQorCQkJdGVzdF9zY2VuZV9jb25zdHJhaW50cygpOw0KKwkJCWFsbHF1ZXVlIChSRURS
QVdWSUVXM0QsIDApOw0KKwkJCWFsbHF1ZXVlIChSRURSQVdCVVRTT0JKRUNULCAwKTsNCisJ
CX0NCiAJCWJyZWFrOw0KIAlkZWZhdWx0Og0KIAkJYnJlYWs7DQpJbmRleDogc291cmNlL2Js
ZW5kZXIvc3JjL2VkaXRvYmplY3QuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnNy
b290L2JmLWJsZW5kZXIvYmxlbmRlci9zb3VyY2UvYmxlbmRlci9zcmMvZWRpdG9iamVjdC5j
LHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS44NQ0KZGlmZiAtdSAtcjEuODUgZWRpdG9iamVj
dC5jDQotLS0gc291cmNlL2JsZW5kZXIvc3JjL2VkaXRvYmplY3QuYwkyNCBBcHIgMjAwNCAy
MTowOTowNiAtMDAwMAkxLjg1DQorKysgc291cmNlL2JsZW5kZXIvc3JjL2VkaXRvYmplY3Qu
Ywk5IE1heSAyMDA0IDIzOjIyOjA5IC0wMDAwDQpAQCAtNjAwMyw2ICs2MDAzLDEzIEBADQog
CXRyYW5zdm1haW49IDA7DQogDQogCXRvdHRyYW5zPSAwOw0KKwkvKiBoYWNrIHRvIG1ha2Ug
cm90YXRpb25hbCBsaW1pdHMgZnVuY3Rpb24gY29ycmVjdGx5IA0KKwkgKiBmb3IgYm9uZXMg
d2hlbiB1c2luZyBya2V5LiAqLw0KKwlpZiAoRy5vYnBvc2UgJiYgRy5vYnBvc2UtPnR5cGUg
PT0gT0JfQVJNQVRVUkUpDQorCWNsZWFyX3Bvc2VfY29uc3RyYWludF9zdGF0dXMoRy5vYnBv
c2UpOw0KKw0KKwlpZiAoIWlzX2RlbGF5X2RlZm9ybSgpKSBtYWtlX2Rpc3BsaXN0c19ieV9h
cm1hdHVyZShHLm9icG9zZSk7DQorCQ0KIH0NCiANCiB2b2lkIHN0ZF9ybW91c2VfdHJhbnNm
b3JtKHZvaWQgKCp4Zl9mdW5jKShpbnQpKQ0K

--Message-Boundary-6618--