RnJvbTogR2lvdmFubmkgQ2FtcGFnbmEgPGdjYW1wYWduYUBzcmMuZ25vbWUub3JnPgoKQWRkIGEg bmV3IHdpbnN5cyBhbmQgdGFyZ2V0IHRoYXQgY2FuIGJlIHVzZWQgd2l0aCBhIGRyaTIgc3RhdGUg dHJhY2tlciBhbmQKbG9hZGVyIGluc3RlYWQgb2YgZHJpc3cuIFRoaXMgYWxsb3dzIHRvIHVzZSBn Ym0gYXMgYSBkcmkyL2ltYWdlIGxvYWRlcgphbmQgYXZvaWQgdGhlIGV4dHJhIGNvcHkgZnJvbSB0 aGUgYmFja2J1ZmZlciB0byB0aGUgc2hhZG93IGZyb250YnVmZmVyLgotLS0KIGNvbmZpZ3VyZS5h YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9nYWxs aXVtL3RhcmdldHMvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9n YWxsaXVtL3RhcmdldHMvZHJpLXN3cmFzdDIvTWFrZWZpbGUuYW0gICAgICAgfCAgNzIgKysrKysK IHNyYy9nYWxsaXVtL3RhcmdldHMvZHJpLXN3cmFzdDIvc3dyYXN0Ml9kcm1fYXBpLmMgfCAgNjUg KysrKysKIHNyYy9nYWxsaXVtL3dpbnN5cy9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAg fCAgIDIgKy0KIHNyYy9nYWxsaXVtL3dpbnN5cy9zdy9rbXMtZHJpL01ha2VmaWxlLmFtICAgICAg ICAgfCAgMzMgKysrCiBzcmMvZ2FsbGl1bS93aW5zeXMvc3cva21zLWRyaS9rbXNfZHJpX3N3X3dp bnN5cy5jIHwgMzEwICsrKysrKysrKysrKysrKysrKysrKysKIHNyYy9nYWxsaXVtL3dpbnN5cy9z dy9rbXMtZHJpL2ttc19kcmlfc3dfd2luc3lzLmggfCAgMzcgKysrCiA4IGZpbGVzIGNoYW5nZWQs IDUyMiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy9nYWxsaXVtL3RhcmdldHMvZHJpLXN3cmFzdDIvTWFrZWZpbGUuYW0KIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvZ2FsbGl1bS90YXJnZXRzL2RyaS1zd3Jhc3QyL3N3cmFzdDJfZHJtX2FwaS5jCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL2dhbGxpdW0vd2luc3lzL3N3L2ttcy1kcmkvTWFrZWZpbGUu YW0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvZ2FsbGl1bS93aW5zeXMvc3cva21zLWRyaS9rbXNf ZHJpX3N3X3dpbnN5cy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2dhbGxpdW0vd2luc3lzL3N3 L2ttcy1kcmkva21zX2RyaV9zd193aW5zeXMuaAoKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBi L2NvbmZpZ3VyZS5hYwppbmRleCBjNzFmYTI2Li43MTc5YWJkIDEwMDY0NAotLS0gYS9jb25maWd1 cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0xODU3LDcgKzE4NTcsNyBAQCBpZiB0ZXN0IC1u ICIkd2l0aF9nYWxsaXVtX2RyaXZlcnMiOyB0aGVuCiAgICAgICAgICAgICBmaQogCiAgICAgICAg ICAgICBpZiB0ZXN0ICJ4JGVuYWJsZV9kcmkiID0geHllczsgdGhlbgotICAgICAgICAgICAgICAg IEdBTExJVU1fVEFSR0VUX0RJUlM9IiRHQUxMSVVNX1RBUkdFVF9ESVJTIGRyaS1zd3Jhc3QiCisg ICAgICAgICAgICAgICAgR0FMTElVTV9UQVJHRVRfRElSUz0iJEdBTExJVU1fVEFSR0VUX0RJUlMg ZHJpLXN3cmFzdCBkcmktc3dyYXN0MiIKICAgICAgICAgICAgIGZpCiAgICAgICAgICAgICA7Owog ICAgICAgICAqKQpAQCAtMjA3Myw2ICsyMDczLDcgQEAgQUNfQ09ORklHX0ZJTEVTKFtNYWtlZmls ZQogCQlzcmMvZ2FsbGl1bS90YXJnZXRzL2RyaS1pbG8vTWFrZWZpbGUKIAkJc3JjL2dhbGxpdW0v dGFyZ2V0cy9kcmktbm91dmVhdS9NYWtlZmlsZQogCQlzcmMvZ2FsbGl1bS90YXJnZXRzL2RyaS1z d3Jhc3QvTWFrZWZpbGUKKwkJc3JjL2dhbGxpdW0vdGFyZ2V0cy9kcmktc3dyYXN0Mi9NYWtlZmls ZQogCQlzcmMvZ2FsbGl1bS90YXJnZXRzL2RyaS12bXdnZngvTWFrZWZpbGUKIAkJc3JjL2dhbGxp dW0vdGFyZ2V0cy9lZ2wtc3RhdGljL01ha2VmaWxlCiAJCXNyYy9nYWxsaXVtL3RhcmdldHMvZ2Jt L01ha2VmaWxlCkBAIC0yMTAzLDYgKzIxMDQsNyBAQCBBQ19DT05GSUdfRklMRVMoW01ha2VmaWxl CiAJCXNyYy9nYWxsaXVtL3dpbnN5cy9ub3V2ZWF1L2RybS9NYWtlZmlsZQogCQlzcmMvZ2FsbGl1 bS93aW5zeXMvcmFkZW9uL2RybS9NYWtlZmlsZQogCQlzcmMvZ2FsbGl1bS93aW5zeXMvc3ZnYS9k cm0vTWFrZWZpbGUKKwkJc3JjL2dhbGxpdW0vd2luc3lzL3N3L2ttcy1kcmkvTWFrZWZpbGUKIAkJ c3JjL2dhbGxpdW0vd2luc3lzL3N3L2RyaS9NYWtlZmlsZQogCQlzcmMvZ2FsbGl1bS93aW5zeXMv c3cvZmJkZXYvTWFrZWZpbGUKIAkJc3JjL2dhbGxpdW0vd2luc3lzL3N3L251bGwvTWFrZWZpbGUK ZGlmZiAtLWdpdCBhL3NyYy9nYWxsaXVtL3RhcmdldHMvTWFrZWZpbGUuYW0gYi9zcmMvZ2FsbGl1 bS90YXJnZXRzL01ha2VmaWxlLmFtCmluZGV4IDg3MWIzMWQuLjQ3NTk2MmIgMTAwNjQ0Ci0tLSBh L3NyYy9nYWxsaXVtL3RhcmdldHMvTWFrZWZpbGUuYW0KKysrIGIvc3JjL2dhbGxpdW0vdGFyZ2V0 cy9NYWtlZmlsZS5hbQpAQCAtMTIwLDcgKzEyMCw3IEBAIGVuZGlmCiAKIGlmIEhBVkVfR0FMTElV TV9TT0ZUUElQRQogaWYgSEFWRV9EUkkKLVNVQkRJUlMgKz0gZHJpLXN3cmFzdAorU1VCRElSUyAr PSBkcmktc3dyYXN0IGRyaS1zd3Jhc3QyCiBlbmRpZgogZW5kaWYKIApkaWZmIC0tZ2l0IGEvc3Jj L2dhbGxpdW0vdGFyZ2V0cy9kcmktc3dyYXN0Mi9NYWtlZmlsZS5hbSBiL3NyYy9nYWxsaXVtL3Rh cmdldHMvZHJpLXN3cmFzdDIvTWFrZWZpbGUuYW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uZDIyZWM4MgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9nYWxsaXVtL3RhcmdldHMv ZHJpLXN3cmFzdDIvTWFrZWZpbGUuYW0KQEAgLTAsMCArMSw3MiBAQAorIyBDb3B5cmlnaHQgwqkg MjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgorIworIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVk LCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorIyBjb3B5IG9mIHRo aXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0 d2FyZSIpLAorIyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBp bmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisjIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBt b2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorIyBhbmQvb3Ig c2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hv bSB0aGUKKyMgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBm b2xsb3dpbmcgY29uZGl0aW9uczoKKyMKKyMgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5k IHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorIyBwYXJhZ3JhcGgp IHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMg b2YgdGhlCisjIFNvZnR3YXJlLgorIworIyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElT IiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKyMgRVhQUkVTUyBPUiBJTVBMSUVELCBJ TkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCisjIE1FUkNIQU5U QUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECisjIE5PTklORlJJ TkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVAorIyBI T0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElU WSwKKyMgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNF LCBBUklTSU5HIEZST00sCisjIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRX QVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyMgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorCitp bmNsdWRlICQodG9wX3NyY2Rpcikvc3JjL2dhbGxpdW0vQXV0b21ha2UuaW5jCisKK0FNX0NGTEFH UyA9IFwKKwkkKEdBTExJVU1fQ0ZMQUdTKSBcCisJJChQVEhSRUFEX0NGTEFHUykgXAorCSQoTElC RFJNX0NGTEFHUykKK0FNX0NQUEZMQUdTID0gXAorCS1JJCh0b3Bfc3JjZGlyKS9zcmMvZ2FsbGl1 bS93aW5zeXMvc3cva21zLWRyaSBcCisJLUkkKHRvcF9zcmNkaXIpL3NyYy9nYWxsaXVtL2RyaXZl cnMgXAorCS1JJCh0b3Bfc3JjZGlyKS9zcmMvZ2FsbGl1bS93aW5zeXMgXAorCS1JJCh0b3Bfc3Jj ZGlyKS9zcmMvbWVzYSBcCisJLUkkKHRvcF9zcmNkaXIpL3NyYy9tYXBpIFwKKwktREdBTExJVU1f UkJVRyBcCisJLURHQUxMSVVNX1RSQUNFIFwKKwktREdBTExJVU1fU09GVFBJUEUKKworZHJpZGly ID0gJChEUklfRFJJVkVSX0lOU1RBTExfRElSKQorZHJpX0xUTElCUkFSSUVTID0gc3dyYXN0X2Ry aTJfZHJpLmxhCisKK3N3cmFzdF9kcmkyX2RyaV9sYV9TT1VSQ0VTID0gXAorCXN3cmFzdDJfZHJt X2FwaS5jIFwKKwkkKHRvcF9zcmNkaXIpL3NyYy9tZXNhL2RyaXZlcnMvZHJpL2NvbW1vbi91dGls cy5jIFwKKwkkKHRvcF9zcmNkaXIpL3NyYy9tZXNhL2RyaXZlcnMvZHJpL2NvbW1vbi9kcmlfdXRp bC5jIFwKKwkkKHRvcF9zcmNkaXIpL3NyYy9tZXNhL2RyaXZlcnMvZHJpL2NvbW1vbi94bWxjb25m aWcuYworCitzd3Jhc3RfZHJpMl9kcmlfbGFfTERGTEFHUyA9IC1tb2R1bGUgLWF2b2lkLXZlcnNp b24gLXNoYXJlZCAtbm8tdW5kZWZpbmVkCisKK3N3cmFzdF9kcmkyX2RyaV9sYV9MSUJBREQgPSBc CisJJCh0b3BfYnVpbGRkaXIpL3NyYy9tZXNhL2xpYm1lc2FnYWxsaXVtLmxhIFwKKwkkKHRvcF9i dWlsZGRpcikvc3JjL2dhbGxpdW0vYXV4aWxpYXJ5L2xpYmdhbGxpdW0ubGEgXAorCSQodG9wX2J1 aWxkZGlyKS9zcmMvZ2FsbGl1bS9zdGF0ZV90cmFja2Vycy9kcmkvZHJtL2xpYmRyaWRybS5sYSBc CisJJCh0b3BfYnVpbGRkaXIpL3NyYy9nYWxsaXVtL3dpbnN5cy9zdy9rbXMtZHJpL2xpYnN3a21z ZHJpLmxhIFwKKwkkKHRvcF9idWlsZGRpcikvc3JjL2dhbGxpdW0vZHJpdmVycy9zb2Z0cGlwZS9s aWJzb2Z0cGlwZS5sYSBcCisJJCh0b3BfYnVpbGRkaXIpL3NyYy9nYWxsaXVtL2RyaXZlcnMvdHJh Y2UvbGlidHJhY2UubGEgXAorCSQodG9wX2J1aWxkZGlyKS9zcmMvZ2FsbGl1bS9kcml2ZXJzL3Ji dWcvbGlicmJ1Zy5sYSBcCisJJChHQUxMSVVNX0RSSV9MSUJfREVQUykKKworbm9kaXN0X0VYVFJB X3N3cmFzdF9kcmkyX2RyaV9sYV9TT1VSQ0VTID0gZHVtbXkuY3BwCisKK2lmIEhBVkVfTUVTQV9M TFZNCitBTV9DUFBGTEFHUyArPSAtREdBTExJVU1fTExWTVBJUEUKK3N3cmFzdF9kcmkyX2RyaV9s YV9MREZMQUdTICs9ICQoTExWTV9MREZMQUdTKQorc3dyYXN0X2RyaTJfZHJpX2xhX0xJQkFERCAr PSAkKHRvcF9idWlsZGRpcikvc3JjL2dhbGxpdW0vZHJpdmVycy9sbHZtcGlwZS9saWJsbHZtcGlw ZS5sYSAkKExMVk1fTElCUykKK2VuZGlmCisKKyMgUHJvdmlkZSBjb21wYXRpYmlsaXR5IHdpdGgg c2NyaXB0cyBmb3IgdGhlIG9sZCBNZXNhIGJ1aWxkIHN5c3RlbSBmb3IKKyMgYSB3aGlsZSBieSBw dXR0aW5nIGEgbGluayB0byB0aGUgZHJpdmVyIGludG8gL2xpYiBvZiB0aGUgYnVpbGQgdHJlZS4K K2FsbC1sb2NhbDogc3dyYXN0X2RyaTJfZHJpLmxhCisJJChNS0RJUl9QKSAkKHRvcF9idWlsZGRp cikvJChMSUJfRElSKS9nYWxsaXVtCisJbG4gLWYgLmxpYnMvc3dyYXN0X2RyaTJfZHJpLnNvICQo dG9wX2J1aWxkZGlyKS8kKExJQl9ESVIpL2dhbGxpdW0vc3dyYXN0X2RyaTJfZHJpLnNvCmRpZmYg LS1naXQgYS9zcmMvZ2FsbGl1bS90YXJnZXRzL2RyaS1zd3Jhc3QyL3N3cmFzdDJfZHJtX2FwaS5j IGIvc3JjL2dhbGxpdW0vdGFyZ2V0cy9kcmktc3dyYXN0Mi9zd3Jhc3QyX2RybV9hcGkuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMGY4OTFiCi0tLSAvZGV2L251bGwKKysr IGIvc3JjL2dhbGxpdW0vdGFyZ2V0cy9kcmktc3dyYXN0Mi9zd3Jhc3QyX2RybV9hcGkuYwpAQCAt MCwwICsxLDY1IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBDb3B5cmlnaHQgMjAwOSwg Vk13YXJlLCBJbmMuCisgKiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IDIwMTAg R2VvcmdlIFNhcG91bnR6aXMgPGdzYXBvdW50emlzQGdtYWlsLmNvbT4KKyAqCisgKiBQZXJtaXNz aW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRh aW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50 YXRpb24gZmlsZXMgKHRoZQorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJl IHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZworICogd2l0aG91dCBsaW1pdGF0aW9uIHRo ZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAorICogZGlzdHJp YnV0ZSwgc3ViIGxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFu ZCB0bworICogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVk IHRvIGRvIHNvLCBzdWJqZWN0IHRvCisgKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgor ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ug KGluY2x1ZGluZyB0aGUKKyAqIG5leHQgcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBh bGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zCisgKiBvZiB0aGUgU29mdHdhcmUuCisg KgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkg T0YgQU5ZIEtJTkQsIEVYUFJFU1MKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJ TUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuCisgKiBJTiBOTyBF VkVOVCBTSEFMTCBWTVdBUkUgQU5EL09SIElUUyBTVVBQTElFUlMgQkUgTElBQkxFIEZPUgorICog QU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJ T04gT0YgQ09OVFJBQ1QsCisgKiBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQg T0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRQorICogU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBP VEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwor CisjaW5jbHVkZSAicGlwZS9wX2NvbXBpbGVyLmgiCisjaW5jbHVkZSAidXRpbC91X21lbW9yeS5o IgorI2luY2x1ZGUgImttc19kcmlfc3dfd2luc3lzLmgiCisKKyNpbmNsdWRlICJ0YXJnZXQtaGVs cGVycy9pbmxpbmVfZGVidWdfaGVscGVyLmgiCisjaW5jbHVkZSAidGFyZ2V0LWhlbHBlcnMvaW5s aW5lX3N3X2hlbHBlci5oIgorCisjaW5jbHVkZSAic3RhdGVfdHJhY2tlci9kcm1fZHJpdmVyLmgi CisKK3N0YXRpYyBzdHJ1Y3QgcGlwZV9zY3JlZW4gKgorZHJpc3dfY3JlYXRlX2RyaTJfc2NyZWVu KGludCBmZCkKK3sKKyAgIHN0cnVjdCBzd193aW5zeXMgKndpbnN5cyA9IE5VTEw7CisgICBzdHJ1 Y3QgcGlwZV9zY3JlZW4gKnNjcmVlbiA9IE5VTEw7CisKKyAgIHdpbnN5cyA9IGttc19kcmlfY3Jl YXRlX3dpbnN5cyhmZCk7CisgICBpZiAod2luc3lzID09IE5VTEwpCisgICAgICByZXR1cm4gTlVM TDsKKworICAgc2NyZWVuID0gc3dfc2NyZWVuX2NyZWF0ZSh3aW5zeXMpOworICAgaWYgKCFzY3Jl ZW4pCisgICAgICBnb3RvIGZhaWw7CisKKyAgIHNjcmVlbiA9IGRlYnVnX3NjcmVlbl93cmFwKHNj cmVlbik7CisKKyAgIHJldHVybiBzY3JlZW47CisKK2ZhaWw6CisgICBpZiAod2luc3lzKQorICAg ICAgd2luc3lzLT5kZXN0cm95KHdpbnN5cyk7CisKKyAgIHJldHVybiBOVUxMOworfQorCitEUk1f RFJJVkVSX0RFU0NSSVBUT1IoInN3cmFzdCIsIE5VTEwsIGRyaXN3X2NyZWF0ZV9kcmkyX3NjcmVl biwgTlVMTCk7CisKKy8qIHZpbTogc2V0IHN3PTMgdHM9OCBzdHM9MyBleHBhbmR0YWI6ICovCmRp ZmYgLS1naXQgYS9zcmMvZ2FsbGl1bS93aW5zeXMvTWFrZWZpbGUuYW0gYi9zcmMvZ2FsbGl1bS93 aW5zeXMvTWFrZWZpbGUuYW0KaW5kZXggYWIxYWNjMy4uZDJmNTBiMyAxMDA2NDQKLS0tIGEvc3Jj L2dhbGxpdW0vd2luc3lzL01ha2VmaWxlLmFtCisrKyBiL3NyYy9nYWxsaXVtL3dpbnN5cy9NYWtl ZmlsZS5hbQpAQCAtMjcsNyArMjcsNyBAQCBTVUJESVJTICs9IHN3L3hsaWIKIGVuZGlmCiAKIGlm IEhBVkVfRFJJCi1TVUJESVJTICs9IHN3L2RyaQorU1VCRElSUyArPSBzdy9kcmkgc3cva21zLWRy aQogZW5kaWYKIAogaWYgSEFWRV9FR0xfUExBVEZPUk1fRkJERVYKZGlmZiAtLWdpdCBhL3NyYy9n YWxsaXVtL3dpbnN5cy9zdy9rbXMtZHJpL01ha2VmaWxlLmFtIGIvc3JjL2dhbGxpdW0vd2luc3lz L3N3L2ttcy1kcmkvTWFrZWZpbGUuYW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uMzIwZTlkYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9nYWxsaXVtL3dpbnN5cy9zdy9rbXMt ZHJpL01ha2VmaWxlLmFtCkBAIC0wLDAgKzEsMzMgQEAKKyMgQ29weXJpZ2h0IMKpIDIwMTIgSW50 ZWwgQ29ycG9yYXRpb24KKyMgICAgICAgICAgICAgMjAxMyBSZWQgSGF0LCBJbmMuCisjCisjIFBl cm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29u IG9idGFpbmluZyBhCisjIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1 bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisjIHRvIGRlYWwgaW4gdGhlIFNvZnR3 YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyMg dGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1 dGUsIHN1YmxpY2Vuc2UsCisjIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFu ZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorIyBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQg dG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorIworIyBUaGUg YWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVk aW5nIHRoZSBuZXh0CisjIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGll cyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyMgU29mdHdhcmUuCisjCisjIFRIRSBT T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5E LAorIyBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhF IFdBUlJBTlRJRVMgT0YKKyMgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRSBBTkQKKyMgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhF IEFVVEhPUlMgT1IgQ09QWVJJR0hUCisjIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0s IERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLAorIyBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBD T05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKyMgT1VUIE9GIE9SIElO IENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorIyBERUFM SU5HUyBJTiBUSEUgU09GVFdBUkUuCisKK2luY2x1ZGUgJCh0b3Bfc3JjZGlyKS9zcmMvZ2FsbGl1 bS9BdXRvbWFrZS5pbmMKKworQU1fQ1BQRkxBR1MgPSBcCisJJChHQUxMSVVNX0NGTEFHUykgXAor ICAgICAgICAkKExJQkRSTV9DRkxBR1MpCisKK25vaW5zdF9MVExJQlJBUklFUyA9IGxpYnN3a21z ZHJpLmxhCisKK2xpYnN3a21zZHJpX2xhX1NPVVJDRVMgPSBrbXNfZHJpX3N3X3dpbnN5cy5jCits aWJzd2ttc2RyaV9sYV9MSUJBREQgPSAkKExJQkRSTV9MSUJTKQpkaWZmIC0tZ2l0IGEvc3JjL2dh bGxpdW0vd2luc3lzL3N3L2ttcy1kcmkva21zX2RyaV9zd193aW5zeXMuYyBiL3NyYy9nYWxsaXVt L3dpbnN5cy9zdy9rbXMtZHJpL2ttc19kcmlfc3dfd2luc3lzLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uNzQ1Yjg1NwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9nYWxsaXVt L3dpbnN5cy9zdy9rbXMtZHJpL2ttc19kcmlfc3dfd2luc3lzLmMKQEAgLTAsMCArMSwzMTAgQEAK Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgorICoKKyAqIENvcHlyaWdodCAyMDA5LCBWTXdhcmUsIEluYy4K KyAqIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgMjAxMCBHZW9yZ2UgU2Fwb3Vu dHppcyA8Z3NhcG91bnR6aXNAZ21haWwuY29tPgorICogICAgICAgICAgIDIwMTMgUmVkIEhhdCwg SW5jLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdl LCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5k IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCisgKiAiU29mdHdhcmUiKSwgdG8g ZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCisgKiB3 aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2Us IHB1Ymxpc2gsCisgKiBkaXN0cmlidXRlLCBzdWIgbGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVz IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCisgKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBT b2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KKyAqIHRoZSBmb2xsb3dp bmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhp cyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZQorICogbmV4dCBwYXJhZ3JhcGgpIHNo YWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMKKyAq IG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElT IiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUworICogT1IgSU1QTElFRCwg SU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgorICogTUVSQ0hB TlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJ TkdFTUVOVC4KKyAqIElOIE5PIEVWRU5UIFNIQUxMIFZNV0FSRSBBTkQvT1IgSVRTIFNVUFBMSUVS UyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZ LCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwKKyAqIFRPUlQgT1IgT1RIRVJXSVNF LCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFCisgKiBTT0ZU V0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisg KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxp Yi5oPgorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUg PHN0cmluZy5oPgorI2luY2x1ZGUgPGxpbWl0cy5oPgorCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+ CisjaW5jbHVkZSA8c3lzL21tYW4uaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxk bGZjbi5oPgorI2luY2x1ZGUgPHhmODZkcm0uaD4KKworI2luY2x1ZGUgInBpcGUvcF9jb21waWxl ci5oIgorI2luY2x1ZGUgInBpcGUvcF9mb3JtYXQuaCIKKyNpbmNsdWRlICJ1dGlsL3VfaW5saW5l cy5oIgorI2luY2x1ZGUgInV0aWwvdV9mb3JtYXQuaCIKKyNpbmNsdWRlICJ1dGlsL3VfbWF0aC5o IgorI2luY2x1ZGUgInV0aWwvdV9tZW1vcnkuaCIKKyNpbmNsdWRlICJ1dGlsL3VfZG91YmxlX2xp c3QuaCIKKworI2luY2x1ZGUgInN0YXRlX3RyYWNrZXIvc3dfd2luc3lzLmgiCisjaW5jbHVkZSAi c3RhdGVfdHJhY2tlci9kcm1fZHJpdmVyLmgiCisKKyNpZiAwCisjZGVmaW5lIERFQlVHKG1zZywg Li4uKSBmcHJpbnRmKHN0ZGVyciwgbXNnLCBfX1ZBX0FSR1NfXykKKyNlbHNlCisjZGVmaW5lIERF QlVHKG1zZywgLi4uKQorI2VuZGlmCisKK3N0cnVjdCBzd193aW5zeXM7CisKK3N0cnVjdCBzd193 aW5zeXMgKmttc19kcmlfY3JlYXRlX3dpbnN5cyhpbnQgZmQpOworCitzdHJ1Y3Qga21zX3N3X2Rp c3BsYXl0YXJnZXQKK3sKKyAgIGVudW0gcGlwZV9mb3JtYXQgZm9ybWF0OworICAgdW5zaWduZWQg d2lkdGg7CisgICB1bnNpZ25lZCBoZWlnaHQ7CisgICB1bnNpZ25lZCBzdHJpZGU7CisgICB1bnNp Z25lZCBzaXplOworCisgICB1aW50MzJfdCBoYW5kbGU7CisgICB2b2lkICptYXBwZWQ7CisKKyAg IGludCByZWZfY291bnQ7CisgICBzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7Cit9OworCitzdHJ1Y3Qg a21zX3N3X3dpbnN5cworeworICAgc3RydWN0IHN3X3dpbnN5cyBiYXNlOworCisgICBpbnQgZmQ7 CisgICBzdHJ1Y3QgbGlzdF9oZWFkIGJvX2xpc3Q7Cit9OworCitzdGF0aWMgSU5MSU5FIHN0cnVj dCBrbXNfc3dfZGlzcGxheXRhcmdldCAqCitrbXNfc3dfZGlzcGxheXRhcmdldCggc3RydWN0IHN3 X2Rpc3BsYXl0YXJnZXQgKmR0ICkKK3sKKyAgIHJldHVybiAoc3RydWN0IGttc19zd19kaXNwbGF5 dGFyZ2V0ICopZHQ7Cit9CisKK3N0YXRpYyBJTkxJTkUgc3RydWN0IGttc19zd193aW5zeXMgKgor a21zX3N3X3dpbnN5cyggc3RydWN0IHN3X3dpbnN5cyAqd3MgKQoreworICAgcmV0dXJuIChzdHJ1 Y3Qga21zX3N3X3dpbnN5cyAqKXdzOworfQorCisKK3N0YXRpYyBib29sZWFuCitrbXNfc3dfaXNf ZGlzcGxheXRhcmdldF9mb3JtYXRfc3VwcG9ydGVkKCBzdHJ1Y3Qgc3dfd2luc3lzICp3cywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRleF91c2Fn ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gcGlwZV9m b3JtYXQgZm9ybWF0ICkKK3sKKyAgIC8qIFRPRE86IGNoZWNrIHZpc3VhbHMgb3Igb3RoZXIgc2Vu c2libGUgdGhpbmcgaGVyZSAqLworICAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qg c3dfZGlzcGxheXRhcmdldCAqCitrbXNfc3dfZGlzcGxheXRhcmdldF9jcmVhdGUoc3RydWN0IHN3 X3dpbnN5cyAqd3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgdGV4X3Vz YWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gcGlwZV9mb3JtYXQgZm9ybWF0 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBo ZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYWxpZ25tZW50LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkICpzdHJpZGUpCit7CisgICBzdHJ1 Y3Qga21zX3N3X3dpbnN5cyAqa21zX3N3ID0ga21zX3N3X3dpbnN5cyh3cyk7CisgICBzdHJ1Y3Qg a21zX3N3X2Rpc3BsYXl0YXJnZXQgKmttc19zd19kdDsKKyAgIHN0cnVjdCBkcm1fbW9kZV9jcmVh dGVfZHVtYiBjcmVhdGVfcmVxOworICAgc3RydWN0IGRybV9tb2RlX2Rlc3Ryb3lfZHVtYiBkZXN0 cm95X3JlcTsKKyAgIGludCByZXQ7CisKKyAgIGttc19zd19kdCA9IENBTExPQ19TVFJVQ1Qoa21z X3N3X2Rpc3BsYXl0YXJnZXQpOworICAgaWYoIWttc19zd19kdCkKKyAgICAgIGdvdG8gbm9fZHQ7 CisKKyAgIGttc19zd19kdC0+cmVmX2NvdW50ID0gMTsKKworICAga21zX3N3X2R0LT5mb3JtYXQg PSBmb3JtYXQ7CisgICBrbXNfc3dfZHQtPndpZHRoID0gd2lkdGg7CisgICBrbXNfc3dfZHQtPmhl aWdodCA9IGhlaWdodDsKKworICAgY3JlYXRlX3JlcS5icHAgPSAzMjsKKyAgIGNyZWF0ZV9yZXEu d2lkdGggPSB3aWR0aDsKKyAgIGNyZWF0ZV9yZXEuaGVpZ2h0ID0gaGVpZ2h0OworICAgcmV0ID0g ZHJtSW9jdGwoa21zX3N3LT5mZCwgRFJNX0lPQ1RMX01PREVfQ1JFQVRFX0RVTUIsICZjcmVhdGVf cmVxKTsKKyAgIGlmIChyZXQpCisgICAgICBnb3RvIGZyZWVfYm87CisKKyAgIGttc19zd19kdC0+ c3RyaWRlID0gY3JlYXRlX3JlcS5waXRjaDsKKyAgIGttc19zd19kdC0+c2l6ZSA9IGNyZWF0ZV9y ZXEuc2l6ZTsKKyAgIGttc19zd19kdC0+aGFuZGxlID0gY3JlYXRlX3JlcS5oYW5kbGU7CisKKyAg IGxpc3RfYWRkKCZrbXNfc3dfZHQtPmxpbmssICZrbXNfc3ctPmJvX2xpc3QpOworCisgICBERUJV RygiS01TLURFQlVHOiBjcmVhdGVkIGJ1ZmZlciAldSAoc2l6ZSAldSlcbiIsIGttc19zd19kdC0+ aGFuZGxlLCBrbXNfc3dfZHQtPnNpemUpOworCisgICAqc3RyaWRlID0ga21zX3N3X2R0LT5zdHJp ZGU7CisgICByZXR1cm4gKHN0cnVjdCBzd19kaXNwbGF5dGFyZ2V0ICopa21zX3N3X2R0OworCisg ZnJlZV9ibzoKKyAgIG1lbXNldCgmZGVzdHJveV9yZXEsIDAsIHNpemVvZiBkZXN0cm95X3JlcSk7 CisgICBkZXN0cm95X3JlcS5oYW5kbGUgPSBjcmVhdGVfcmVxLmhhbmRsZTsKKyAgIGRybUlvY3Rs KGttc19zdy0+ZmQsIERSTV9JT0NUTF9NT0RFX0RFU1RST1lfRFVNQiwgJmRlc3Ryb3lfcmVxKTsK KyAgIEZSRUUoa21zX3N3X2R0KTsKKyBub19kdDoKKyAgIHJldHVybiBOVUxMOworfQorCitzdGF0 aWMgdm9pZAora21zX3N3X2Rpc3BsYXl0YXJnZXRfZGVzdHJveShzdHJ1Y3Qgc3dfd2luc3lzICp3 cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN3X2Rpc3BsYXl0YXJnZXQg KmR0KQoreworICAgc3RydWN0IGttc19zd193aW5zeXMgKmttc19zdyA9IGttc19zd193aW5zeXMo d3MpOworICAgc3RydWN0IGttc19zd19kaXNwbGF5dGFyZ2V0ICprbXNfc3dfZHQgPSBrbXNfc3df ZGlzcGxheXRhcmdldChkdCk7CisgICBzdHJ1Y3QgZHJtX21vZGVfZGVzdHJveV9kdW1iIGRlc3Ry b3lfcmVxOworCisgICBrbXNfc3dfZHQtPnJlZl9jb3VudCAtLTsKKyAgIGlmIChrbXNfc3dfZHQt PnJlZl9jb3VudCA+IDApCisgICAgICByZXR1cm47CisKKyAgIG1lbXNldCgmZGVzdHJveV9yZXEs IDAsIHNpemVvZiBkZXN0cm95X3JlcSk7CisgICBkZXN0cm95X3JlcS5oYW5kbGUgPSBrbXNfc3df ZHQtPmhhbmRsZTsKKyAgIGRybUlvY3RsKGttc19zdy0+ZmQsIERSTV9JT0NUTF9NT0RFX0RFU1RS T1lfRFVNQiwgJmRlc3Ryb3lfcmVxKTsKKworICAgbGlzdF9kZWwoJmttc19zd19kdC0+bGluayk7 CisKKyAgIERFQlVHKCJLTVMtREVCVUc6IGRlc3Ryb3llZCBidWZmZXIgJXVcbiIsIGttc19zd19k dC0+aGFuZGxlKTsKKworICAgRlJFRShrbXNfc3dfZHQpOworfQorCitzdGF0aWMgdm9pZCAqCitr bXNfc3dfZGlzcGxheXRhcmdldF9tYXAoc3RydWN0IHN3X3dpbnN5cyAqd3MsCisgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IHN3X2Rpc3BsYXl0YXJnZXQgKmR0LAorICAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGZsYWdzKQoreworICAgc3RydWN0IGttc19zd193aW5zeXMg Kmttc19zdyA9IGttc19zd193aW5zeXMod3MpOworICAgc3RydWN0IGttc19zd19kaXNwbGF5dGFy Z2V0ICprbXNfc3dfZHQgPSBrbXNfc3dfZGlzcGxheXRhcmdldChkdCk7CisgICBzdHJ1Y3QgZHJt X21vZGVfbWFwX2R1bWIgbWFwX3JlcTsKKyAgIGludCByZXQ7CisKKyAgIG1lbXNldCgmbWFwX3Jl cSwgMCwgc2l6ZW9mIG1hcF9yZXEpOworICAgbWFwX3JlcS5oYW5kbGUgPSBrbXNfc3dfZHQtPmhh bmRsZTsKKyAgIHJldCA9IGRybUlvY3RsKGttc19zdy0+ZmQsIERSTV9JT0NUTF9NT0RFX01BUF9E VU1CLCAmbWFwX3JlcSk7CisgICBpZiAocmV0KQorICAgICAgcmV0dXJuIE5VTEw7CisKKyAgIGlm IChmbGFncyA9PSBQSVBFX1RSQU5TRkVSX1JFQUQpCisgICAgICBrbXNfc3dfZHQtPm1hcHBlZCA9 IG1tYXAoMCwga21zX3N3X2R0LT5zaXplLCBQUk9UX1JFQUQsIE1BUF9TSEFSRUQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAga21zX3N3LT5mZCwgbWFwX3JlcS5vZmZzZXQpOworICAg ZWxzZQorICAgICAga21zX3N3X2R0LT5tYXBwZWQgPSBtbWFwKDAsIGttc19zd19kdC0+c2l6ZSwg UFJPVF9SRUFEIHwgUFJPVF9XUklURSwgTUFQX1NIQVJFRCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBrbXNfc3ctPmZkLCBtYXBfcmVxLm9mZnNldCk7CisKKyAgIERFQlVHKCJLTVMt REVCVUc6IG1hcHBlZCBidWZmZXIgJXUgKHNpemUgJXUpIGF0ICVwXG4iLAorICAgICAgICAga21z X3N3X2R0LT5oYW5kbGUsIGttc19zd19kdC0+c2l6ZSwga21zX3N3X2R0LT5tYXBwZWQpOworCisg ICByZXR1cm4ga21zX3N3X2R0LT5tYXBwZWQ7Cit9CisKK3N0YXRpYyB2b2lkCitrbXNfc3dfZGlz cGxheXRhcmdldF91bm1hcChzdHJ1Y3Qgc3dfd2luc3lzICp3cywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBzd19kaXNwbGF5dGFyZ2V0ICpkdCkKK3sKKyAgIHN0cnVjdCBrbXNf c3dfZGlzcGxheXRhcmdldCAqa21zX3N3X2R0ID0ga21zX3N3X2Rpc3BsYXl0YXJnZXQoZHQpOwor CisgICBERUJVRygiS01TLURFQlVHOiB1bm1hcHBlZCBidWZmZXIgJXUgKHdhcyAlcClcbiIsIGtt c19zd19kdC0+aGFuZGxlLCBrbXNfc3dfZHQtPm1hcHBlZCk7CisKKyAgIG11bm1hcChrbXNfc3df ZHQtPm1hcHBlZCwga21zX3N3X2R0LT5zaXplKTsKKyAgIGttc19zd19kdC0+bWFwcGVkID0gTlVM TDsKK30KKworc3RhdGljIHN0cnVjdCBzd19kaXNwbGF5dGFyZ2V0ICoKK2ttc19zd19kaXNwbGF5 dGFyZ2V0X2Zyb21faGFuZGxlKHN0cnVjdCBzd193aW5zeXMgKndzLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHBpcGVfcmVzb3VyY2UgKnRlbXBsLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHdpbnN5c19oYW5kbGUgKndoYW5k bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCAqc3RyaWRlKQor eworICAgc3RydWN0IGttc19zd193aW5zeXMgKmttc19zdyA9IGttc19zd193aW5zeXMod3MpOwor ICAgc3RydWN0IGttc19zd19kaXNwbGF5dGFyZ2V0ICprbXNfc3dfZHQ7CisKKyAgIExJU1RfRk9S X0VBQ0hfRU5UUlkoa21zX3N3X2R0LCAma21zX3N3LT5ib19saXN0LCBsaW5rKSB7CisgICAgICBp ZiAoa21zX3N3X2R0LT5oYW5kbGUgPT0gd2hhbmRsZS0+aGFuZGxlKSB7CisgICAgICAgICBrbXNf c3dfZHQtPnJlZl9jb3VudCsrOworCisgICAgICAgICBERUJVRygiS01TLURFQlVHOiBpbXBvcnRl ZCBidWZmZXIgJXUgKHNpemUgJXUpXG4iLCBrbXNfc3dfZHQtPmhhbmRsZSwga21zX3N3X2R0LT5z aXplKTsKKworICAgICAgICAgKnN0cmlkZSA9IGttc19zd19kdC0+c3RyaWRlOworICAgICAgICAg cmV0dXJuIChzdHJ1Y3Qgc3dfZGlzcGxheXRhcmdldCAqKWttc19zd19kdDsKKyAgICAgIH0KKyAg IH0KKworICAgYXNzZXJ0KDApOworICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBib29sZWFu CitrbXNfc3dfZGlzcGxheXRhcmdldF9nZXRfaGFuZGxlKHN0cnVjdCBzd193aW5zeXMgKndpbnN5 cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN3X2Rpc3BsYXl0YXJn ZXQgKmR0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgd2luc3lzX2hh bmRsZSAqd2hhbmRsZSkKK3sKKyAgIHN0cnVjdCBrbXNfc3dfZGlzcGxheXRhcmdldCAqa21zX3N3 X2R0ID0ga21zX3N3X2Rpc3BsYXl0YXJnZXQoZHQpOworCisgICBhc3NlcnQod2hhbmRsZS0+dHlw ZSA9PSBEUk1fQVBJX0hBTkRMRV9UWVBFX1NIQVJFRCk7CisgICB3aGFuZGxlLT5oYW5kbGUgPSBr bXNfc3dfZHQtPmhhbmRsZTsKKyAgIHdoYW5kbGUtPnN0cmlkZSA9IGttc19zd19kdC0+c3RyaWRl OworICAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyB2b2lkCitrbXNfc3dfZGlzcGxheXRhcmdl dF9kaXNwbGF5KHN0cnVjdCBzd193aW5zeXMgKndzLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3Qgc3dfZGlzcGxheXRhcmdldCAqZHQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHZvaWQgKmNvbnRleHRfcHJpdmF0ZSkKK3sKKyAgIC8qIFRoaXMgZnVuY3Rpb24gc2hv dWxkIG5vdCBiZSBjYWxsZWQsIGluc3RlYWQgdGhlIGRyaTIgbG9hZGVyIHNob3VsZAorICAgICAg aGFuZGxlIHN3YXAgYnVmZmVycyBpbnRlcm5hbGx5LgorICAgKi8KKyAgIGFzc2VydCgwKTsKK30K KworCitzdGF0aWMgdm9pZAora21zX2Rlc3Ryb3lfc3dfd2luc3lzKHN0cnVjdCBzd193aW5zeXMg KndpbnN5cykKK3sKKyAgIEZSRUUod2luc3lzKTsKK30KKworc3RydWN0IHN3X3dpbnN5cyAqCitr bXNfZHJpX2NyZWF0ZV93aW5zeXMoaW50IGZkKQoreworICAgc3RydWN0IGttc19zd193aW5zeXMg KndzOworCisgICB3cyA9IENBTExPQ19TVFJVQ1Qoa21zX3N3X3dpbnN5cyk7CisgICBpZiAoIXdz KQorICAgICAgcmV0dXJuIE5VTEw7CisKKyAgIHdzLT5mZCA9IGZkOworICAgbGlzdF9pbml0aGVh ZCgmd3MtPmJvX2xpc3QpOworCisgICB3cy0+YmFzZS5kZXN0cm95ID0ga21zX2Rlc3Ryb3lfc3df d2luc3lzOworCisgICB3cy0+YmFzZS5pc19kaXNwbGF5dGFyZ2V0X2Zvcm1hdF9zdXBwb3J0ZWQg PSBrbXNfc3dfaXNfZGlzcGxheXRhcmdldF9mb3JtYXRfc3VwcG9ydGVkOworCisgICAvKiBzY3Jl ZW4gdGV4dHVyZSBmdW5jdGlvbnMgKi8KKyAgIHdzLT5iYXNlLmRpc3BsYXl0YXJnZXRfY3JlYXRl ID0ga21zX3N3X2Rpc3BsYXl0YXJnZXRfY3JlYXRlOworICAgd3MtPmJhc2UuZGlzcGxheXRhcmdl dF9kZXN0cm95ID0ga21zX3N3X2Rpc3BsYXl0YXJnZXRfZGVzdHJveTsKKyAgIHdzLT5iYXNlLmRp c3BsYXl0YXJnZXRfZnJvbV9oYW5kbGUgPSBrbXNfc3dfZGlzcGxheXRhcmdldF9mcm9tX2hhbmRs ZTsKKyAgIHdzLT5iYXNlLmRpc3BsYXl0YXJnZXRfZ2V0X2hhbmRsZSA9IGttc19zd19kaXNwbGF5 dGFyZ2V0X2dldF9oYW5kbGU7CisKKyAgIC8qIHRleHR1cmUgZnVuY3Rpb25zICovCisgICB3cy0+ YmFzZS5kaXNwbGF5dGFyZ2V0X21hcCA9IGttc19zd19kaXNwbGF5dGFyZ2V0X21hcDsKKyAgIHdz LT5iYXNlLmRpc3BsYXl0YXJnZXRfdW5tYXAgPSBrbXNfc3dfZGlzcGxheXRhcmdldF91bm1hcDsK KworICAgd3MtPmJhc2UuZGlzcGxheXRhcmdldF9kaXNwbGF5ID0ga21zX3N3X2Rpc3BsYXl0YXJn ZXRfZGlzcGxheTsKKworICAgcmV0dXJuICZ3cy0+YmFzZTsKK30KKworLyogdmltOiBzZXQgc3c9 MyB0cz04IHN0cz0zIGV4cGFuZHRhYjogKi8KZGlmZiAtLWdpdCBhL3NyYy9nYWxsaXVtL3dpbnN5 cy9zdy9rbXMtZHJpL2ttc19kcmlfc3dfd2luc3lzLmggYi9zcmMvZ2FsbGl1bS93aW5zeXMvc3cv a21zLWRyaS9rbXNfZHJpX3N3X3dpbnN5cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLmUyNzZhNzIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvZ2FsbGl1bS93aW5zeXMvc3cv a21zLWRyaS9rbXNfZHJpX3N3X3dpbnN5cy5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgorICoKKyAqIENvcHlyaWdodCAyMDA5LCBWTXdhcmUsIEluYy4KKyAqIEFsbCBSaWdo dHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgMjAxMCBHZW9yZ2UgU2Fwb3VudHppcyA8Z3NhcG91 bnR6aXNAZ21haWwuY29tPgorICogICAgICAgICAgIDIwMTMgUmVkIEhhdCwgSW5jLgorICoKKyAq IFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVy c29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQg ZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUg U29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCisgKiB3aXRob3V0IGxpbWl0 YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCisg KiBkaXN0cmlidXRlLCBzdWIgbGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0 d2FyZSwgYW5kIHRvCisgKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBm dXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KKyAqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u czoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u IG5vdGljZSAoaW5jbHVkaW5nIHRoZQorICogbmV4dCBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1 ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMKKyAqIG9mIHRoZSBTb2Z0 d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBX QVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUworICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJV VCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZLCBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4KKyAq IElOIE5PIEVWRU5UIFNIQUxMIFZNV0FSRSBBTkQvT1IgSVRTIFNVUFBMSUVSUyBCRSBMSUFCTEUg Rk9SCisgKiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElO IEFOIEFDVElPTiBPRiBDT05UUkFDVCwKKyAqIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZS T00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFCisgKiBTT0ZUV0FSRSBPUiBUSEUg VVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCisKKyNpZm5kZWYgS01TX0RSSV9TV19XSU5TWVMKKyNkZWZpbmUgS01TX0RSSV9TV19X SU5TWVMKKworc3RydWN0IHN3X3dpbnN5czsKKworc3RydWN0IHN3X3dpbnN5cyAqa21zX2RyaV9j cmVhdGVfd2luc3lzKGludCBmZCk7CisKKyNlbmRpZgotLSAKMS45LjAKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCm1lc2EtZGV2IG1haWxpbmcgbGlzdApt ZXNhLWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL21lc2EtZGV2Cg==