ZGlmZiAtLWdpdCBhL2RvY3MvZ2V0dGluZ19zdGFydGVkL3ByZXJlcXVpc2l0ZXMucnN0IGIvZG9jcy9nZXR0aW5nX3N0YXJ0ZWQvcHJlcmVxdWlzaXRlcy5yc3QKaW5kZXggM2UwYzhmZi4uMTNlMjVjZCAxMDA2NDQKLS0tIGEvZG9jcy9nZXR0aW5nX3N0YXJ0ZWQvcHJlcmVxdWlzaXRlcy5yc3QKKysrIGIvZG9jcy9nZXR0aW5nX3N0YXJ0ZWQvcHJlcmVxdWlzaXRlcy5yc3QKQEAgLTYwLDcgKzYwLDcgQEAKIAogVGhlIGZvbGxvd2luZyBsaWJyYXJpZXMgYXJlIHJlcXVpcmVkIGZvciBUcnVzdGVkIEJvYXJkIEJvb3Qgc3VwcG9ydDoKIAotLSBtYmVkIFRMUyA9PSAyLjE2LjIgKHRhZzogYGBtYmVkdGxzLTIuMTYuMmBgKQorLSBtYmVkIFRMUyA9PSAyLjE4LjAgKHRhZzogYGBtYmVkdGxzLTIuMTguMGBgKQogCiBUaGVzZSB0b29scyBhcmUgb3B0aW9uYWw6CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXV0aC9jcnlwdG9jZWxsLzcxMi9jcnlwdG9jZWxsX2NyeXB0by5jIGIvZHJpdmVycy9hdXRoL2NyeXB0b2NlbGwvNzEyL2NyeXB0b2NlbGxfY3J5cHRvLmMKaW5kZXggY2Y0MzE3NS4uYzdlZTM2ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdXRoL2NyeXB0b2NlbGwvNzEyL2NyeXB0b2NlbGxfY3J5cHRvLmMKKysrIGIvZHJpdmVycy9hdXRoL2NyeXB0b2NlbGwvNzEyL2NyeXB0b2NlbGxfY3J5cHRvLmMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChjKSAyMDE3LTIwMTksIEFSTSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMCwgQVJNIExpbWl0ZWQgYW5kIENvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlCiAgKi8KQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlIDxsaWIvdXRpbHMuaD4KIAogI2luY2x1ZGUgPG1iZWR0bHMvb2lkLmg+CisjaW5jbHVkZSA8bWJlZHRscy94NTA5Lmg+CiAKICNkZWZpbmUgTElCX05BTUUJCSJDcnlwdG9DZWxsIDcxMiBTQlJPTSIKICNkZWZpbmUgUlNBX1NBTFRfTEVOCQkzMgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdXRoL2R1YWxyb290L2NvdC5jIGIvZHJpdmVycy9hdXRoL2R1YWxyb290L2NvdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViMGIwMjAKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2F1dGgvZHVhbHJvb3QvY290LmMKQEAgLTAsMCArMSw4MTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjAsIEFybSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UKKyAqLworCisjaW5jbHVkZSA8c3RkZGVmLmg+CisKKyNpbmNsdWRlIDxwbGF0Zm9ybV9kZWYuaD4KKworI2luY2x1ZGUgPGRyaXZlcnMvYXV0aC9tYmVkdGxzL21iZWR0bHNfY29uZmlnLmg+CisjaW5jbHVkZSA8ZHJpdmVycy9hdXRoL2F1dGhfbW9kLmg+CisjaW5jbHVkZSA8dG9vbHNfc2hhcmUvZHVhbHJvb3Rfb2lkLmg+CisKKy8qCisgKiBUT0RPOiBSZW1vdmUgZGVwZW5kZW5jeSBvbiBtYmVkVExTLiBUaGUgY2hhaW4gb2YgdHJ1c3Qgc2hvdWxkIGJlIGFnbm9zdGljIG9mCisgKiB0aGUgc3BlY2lmaWMgY3J5cHRvZ3JhcGhpYyBsaWJyYXJ5IGluIHVzZS4KKyovCisvKgorICogTWF4aW11bSBrZXkgYW5kIGhhc2ggc2l6ZXMgKGluIERFUiBmb3JtYXQpLgorICoKKyAqIEJvdGggUlNBIGFuZCBFQ0RTQSBrZXlzIG1heSBiZSB1c2VkIGF0IHRoZSBzYW1lIHRpbWUuIEluIHRoaXMgY2FzZSwgdGhlIGtleQorICogYnVmZmVycyBtdXN0IGJlIGJpZyBlbm91Z2ggdG8gaG9sZCBlaXRoZXIuIEFzIFJTQSBrZXlzIGFyZSBiaWdnZXIgdGhhbiBFQ0RTQQorICogb25lcyBmb3IgYWxsIGtleSBzaXplcyB3ZSBzdXBwb3J0LCB0aGV5IGltcG9zZSB0aGUgbWluaW11bSBzaXplIG9mIHRoZXNlCisgKiBidWZmZXJzLgorICovCisjaWYgVEZfTUJFRFRMU19VU0VfUlNBCisjaWYgVEZfTUJFRFRMU19LRVlfU0laRSA9PSAxMDI0CisjZGVmaW5lIFBLX0RFUl9MRU4JCQkxNjIKKyNlbGlmIFRGX01CRURUTFNfS0VZX1NJWkUgPT0gMjA0OAorI2RlZmluZSBQS19ERVJfTEVOCQkJMjk0CisjZWxpZiBURl9NQkVEVExTX0tFWV9TSVpFID09IDMwNzIKKyNkZWZpbmUgUEtfREVSX0xFTgkJCTQyMgorI2VsaWYgVEZfTUJFRFRMU19LRVlfU0laRSA9PSA0MDk2CisjZGVmaW5lIFBLX0RFUl9MRU4JCQk1NTAKKyNlbHNlCisjZXJyb3IgIkludmFsaWQgdmFsdWUgZm9yIFRGX01CRURUTFNfS0VZX1NJWkUiCisjZW5kaWYKKyNlbHNlIC8qIE9ubHkgdXNpbmcgRUNEU0Ega2V5cy4gKi8KKyNkZWZpbmUgUEtfREVSX0xFTgkJCTkxCisjZW5kaWYKKworI2lmIFRGX01CRURUTFNfSEFTSF9BTEdfSUQgPT0gVEZfTUJFRFRMU19TSEEyNTYKKyNkZWZpbmUgSEFTSF9ERVJfTEVOCQkJNTEKKyNlbGlmIFRGX01CRURUTFNfSEFTSF9BTEdfSUQgPT0gVEZfTUJFRFRMU19TSEEzODQKKyNkZWZpbmUgSEFTSF9ERVJfTEVOCQkJNjcKKyNlbGlmIFRGX01CRURUTFNfSEFTSF9BTEdfSUQgPT0gVEZfTUJFRFRMU19TSEE1MTIKKyNkZWZpbmUgSEFTSF9ERVJfTEVOCQkJODMKKyNlbHNlCisjZXJyb3IgIkludmFsaWQgdmFsdWUgZm9yIFRGX01CRURUTFNfSEFTSF9BTEdfSUQiCisjZW5kaWYKKworLyoKKyAqIEFsbG9jYXRlIHN0YXRpYyBidWZmZXJzIHRvIHN0b3JlIHRoZSBhdXRoZW50aWNhdGlvbiBwYXJhbWV0ZXJzIGV4dHJhY3RlZCBmcm9tCisgKiB0aGUgY2VydGlmaWNhdGVzLgorICovCitzdGF0aWMgdW5zaWduZWQgY2hhciB0Yl9md19oYXNoX2J1ZltIQVNIX0RFUl9MRU5dOworc3RhdGljIHVuc2lnbmVkIGNoYXIgdGJfZndfY29uZmlnX2hhc2hfYnVmW0hBU0hfREVSX0xFTl07CitzdGF0aWMgdW5zaWduZWQgY2hhciBod19jb25maWdfaGFzaF9idWZbSEFTSF9ERVJfTEVOXTsKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIHNjcF9md19oYXNoX2J1ZltIQVNIX0RFUl9MRU5dOworc3RhdGljIHVuc2lnbmVkIGNoYXIgbnRfd29ybGRfYmxfaGFzaF9idWZbSEFTSF9ERVJfTEVOXTsKKworI2lmZGVmIElNQUdFX0JMMgorc3RhdGljIHVuc2lnbmVkIGNoYXIgc29jX2Z3X2hhc2hfYnVmW0hBU0hfREVSX0xFTl07CitzdGF0aWMgdW5zaWduZWQgY2hhciB0b3NfZndfaGFzaF9idWZbSEFTSF9ERVJfTEVOXTsKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIHRvc19md19leHRyYTFfaGFzaF9idWZbSEFTSF9ERVJfTEVOXTsKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIHRvc19md19leHRyYTJfaGFzaF9idWZbSEFTSF9ERVJfTEVOXTsKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIHNvY19md19jb25maWdfaGFzaF9idWZbSEFTSF9ERVJfTEVOXTsKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIHRvc19md19jb25maWdfaGFzaF9idWZbSEFTSF9ERVJfTEVOXTsKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIG50X2Z3X2NvbmZpZ19oYXNoX2J1ZltIQVNIX0RFUl9MRU5dOworCitzdGF0aWMgdW5zaWduZWQgY2hhciB0cnVzdGVkX3dvcmxkX3BrX2J1ZltQS19ERVJfTEVOXTsKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIGNvbnRlbnRfcGtfYnVmW1BLX0RFUl9MRU5dOworI2VuZGlmCisKKy8qCisgKiBQYXJhbWV0ZXIgdHlwZSBkZXNjcmlwdG9ycy4KKyAqLworc3RhdGljIGF1dGhfcGFyYW1fdHlwZV9kZXNjX3QgdHJ1c3RlZF9udl9jdHIgPSBBVVRIX1BBUkFNX1RZUEVfREVTQygKKwkJQVVUSF9QQVJBTV9OVl9DVFIsIFRSVVNURURfRldfTlZDT1VOVEVSX09JRCk7CitzdGF0aWMgYXV0aF9wYXJhbV90eXBlX2Rlc2NfdCBzdWJqZWN0X3BrID0gQVVUSF9QQVJBTV9UWVBFX0RFU0MoCisJCUFVVEhfUEFSQU1fUFVCX0tFWSwgMCk7CitzdGF0aWMgYXV0aF9wYXJhbV90eXBlX2Rlc2NfdCBzaWcgPSBBVVRIX1BBUkFNX1RZUEVfREVTQygKKwkJQVVUSF9QQVJBTV9TSUcsIDApOworc3RhdGljIGF1dGhfcGFyYW1fdHlwZV9kZXNjX3Qgc2lnX2FsZyA9IEFVVEhfUEFSQU1fVFlQRV9ERVNDKAorCQlBVVRIX1BBUkFNX1NJR19BTEcsIDApOworc3RhdGljIGF1dGhfcGFyYW1fdHlwZV9kZXNjX3QgcmF3X2RhdGEgPSBBVVRIX1BBUkFNX1RZUEVfREVTQygKKwkJQVVUSF9QQVJBTV9SQVdfREFUQSwgMCk7CisKK3N0YXRpYyBhdXRoX3BhcmFtX3R5cGVfZGVzY190IHRiX2Z3X2hhc2ggPSBBVVRIX1BBUkFNX1RZUEVfREVTQygKKwkJQVVUSF9QQVJBTV9IQVNILCBUUlVTVEVEX0JPT1RfRldfSEFTSF9PSUQpOworc3RhdGljIGF1dGhfcGFyYW1fdHlwZV9kZXNjX3QgdGJfZndfY29uZmlnX2hhc2ggPSBBVVRIX1BBUkFNX1RZUEVfREVTQygKKwkJQVVUSF9QQVJBTV9IQVNILCBUUlVTVEVEX0JPT1RfRldfQ09ORklHX0hBU0hfT0lEKTsKK3N0YXRpYyBhdXRoX3BhcmFtX3R5cGVfZGVzY190IGh3X2NvbmZpZ19oYXNoID0gQVVUSF9QQVJBTV9UWVBFX0RFU0MoCisJCUFVVEhfUEFSQU1fSEFTSCwgSFdfQ09ORklHX0hBU0hfT0lEKTsKKyNpZmRlZiBJTUFHRV9CTDEKK3N0YXRpYyBhdXRoX3BhcmFtX3R5cGVfZGVzY190IHNjcF9ibDJ1X2hhc2ggPSBBVVRIX1BBUkFNX1RZUEVfREVTQygKKwkJQVVUSF9QQVJBTV9IQVNILCBTQ1BfRldVX0NGR19IQVNIX09JRCk7CitzdGF0aWMgYXV0aF9wYXJhbV90eXBlX2Rlc2NfdCBibDJ1X2hhc2ggPSBBVVRIX1BBUkFNX1RZUEVfREVTQygKKwkJQVVUSF9QQVJBTV9IQVNILCBBUF9GV1VfQ0ZHX0hBU0hfT0lEKTsKK3N0YXRpYyBhdXRoX3BhcmFtX3R5cGVfZGVzY190IG5zX2JsMnVfaGFzaCA9IEFVVEhfUEFSQU1fVFlQRV9ERVNDKAorCQlBVVRIX1BBUkFNX0hBU0gsIEZXVV9IQVNIX09JRCk7CisjZW5kaWYgLyogSU1BR0VfQkwxICovCisKKyNpZmRlZiBJTUFHRV9CTDIKK3N0YXRpYyBhdXRoX3BhcmFtX3R5cGVfZGVzY190IG5vbl90cnVzdGVkX252X2N0ciA9IEFVVEhfUEFSQU1fVFlQRV9ERVNDKAorCQlBVVRIX1BBUkFNX05WX0NUUiwgTk9OX1RSVVNURURfRldfTlZDT1VOVEVSX09JRCk7CisKK3N0YXRpYyBhdXRoX3BhcmFtX3R5cGVfZGVzY190IHRydXN0ZWRfd29ybGRfcGsgPSBBVVRIX1BBUkFNX1RZUEVfREVTQygKKwkJQVVUSF9QQVJBTV9QVUJfS0VZLCBUUlVTVEVEX1dPUkxEX1BLX09JRCk7CitzdGF0aWMgYXV0aF9wYXJhbV90eXBlX2Rlc2NfdCBzY3BfZndfY29udGVudF9wayA9IEFVVEhfUEFSQU1fVFlQRV9ERVNDKAorCQlBVVRIX1BBUkFNX1BVQl9LRVksIFNDUF9GV19DT05URU5UX0NFUlRfUEtfT0lEKTsKK3N0YXRpYyBhdXRoX3BhcmFtX3R5cGVfZGVzY190IHNvY19md19jb250ZW50X3BrID0gQVVUSF9QQVJBTV9UWVBFX0RFU0MoCisJCUFVVEhfUEFSQU1fUFVCX0tFWSwgU09DX0ZXX0NPTlRFTlRfQ0VSVF9QS19PSUQpOworc3RhdGljIGF1dGhfcGFyYW1fdHlwZV9kZXNjX3QgdG9zX2Z3X2NvbnRlbnRfcGsgPSBBVVRIX1BBUkFNX1RZUEVfREVTQygKKwkJQVVUSF9QQVJBTV9QVUJfS0VZLCBUUlVTVEVEX09TX0ZXX0NPTlRFTlRfQ0VSVF9QS19PSUQpOworc3RhdGljIGF1dGhfcGFyYW1fdHlwZV9kZXNjX3QgcHJvdF9wayA9IEFVVEhfUEFSQU1fVFlQRV9ERVNDKAorCQlBVVRIX1BBUkFNX1BVQl9LRVksIFBST1RfUEtfT0lEKTsKKworc3RhdGljIGF1dGhfcGFyYW1fdHlwZV9kZXNjX3Qgc2NwX2Z3X2hhc2ggPSBBVVRIX1BBUkFNX1RZUEVfREVTQygKKwkJQVVUSF9QQVJBTV9IQVNILCBTQ1BfRldfSEFTSF9PSUQpOworc3RhdGljIGF1dGhfcGFyYW1fdHlwZV9kZXNjX3Qgc29jX2Z3X2hhc2ggPSBBVVRIX1BBUkFNX1RZUEVfREVTQygKKwkJQVVUSF9QQVJBTV9IQVNILCBTT0NfQVBfRldfSEFTSF9PSUQpOworc3RhdGljIGF1dGhfcGFyYW1fdHlwZV9kZXNjX3Qgc29jX2Z3X2NvbmZpZ19oYXNoID0gQVVUSF9QQVJBTV9UWVBFX0RFU0MoCisJCUFVVEhfUEFSQU1fSEFTSCwgU09DX0ZXX0NPTkZJR19IQVNIX09JRCk7CitzdGF0aWMgYXV0aF9wYXJhbV90eXBlX2Rlc2NfdCB0b3NfZndfaGFzaCA9IEFVVEhfUEFSQU1fVFlQRV9ERVNDKAorCQlBVVRIX1BBUkFNX0hBU0gsIFRSVVNURURfT1NfRldfSEFTSF9PSUQpOworc3RhdGljIGF1dGhfcGFyYW1fdHlwZV9kZXNjX3QgdG9zX2Z3X2NvbmZpZ19oYXNoID0gQVVUSF9QQVJBTV9UWVBFX0RFU0MoCisJCUFVVEhfUEFSQU1fSEFTSCwgVFJVU1RFRF9PU19GV19DT05GSUdfSEFTSF9PSUQpOworc3RhdGljIGF1dGhfcGFyYW1fdHlwZV9kZXNjX3QgdG9zX2Z3X2V4dHJhMV9oYXNoID0gQVVUSF9QQVJBTV9UWVBFX0RFU0MoCisJCUFVVEhfUEFSQU1fSEFTSCwgVFJVU1RFRF9PU19GV19FWFRSQTFfSEFTSF9PSUQpOworc3RhdGljIGF1dGhfcGFyYW1fdHlwZV9kZXNjX3QgdG9zX2Z3X2V4dHJhMl9oYXNoID0gQVVUSF9QQVJBTV9UWVBFX0RFU0MoCisJCUFVVEhfUEFSQU1fSEFTSCwgVFJVU1RFRF9PU19GV19FWFRSQTJfSEFTSF9PSUQpOworc3RhdGljIGF1dGhfcGFyYW1fdHlwZV9kZXNjX3QgbnRfd29ybGRfYmxfaGFzaCA9IEFVVEhfUEFSQU1fVFlQRV9ERVNDKAorCQlBVVRIX1BBUkFNX0hBU0gsIE5PTl9UUlVTVEVEX1dPUkxEX0JPT1RMT0FERVJfSEFTSF9PSUQpOworc3RhdGljIGF1dGhfcGFyYW1fdHlwZV9kZXNjX3QgbnRfZndfY29uZmlnX2hhc2ggPSBBVVRIX1BBUkFNX1RZUEVfREVTQygKKwkJQVVUSF9QQVJBTV9IQVNILCBOT05fVFJVU1RFRF9GV19DT05GSUdfSEFTSF9PSUQpOworI2VuZGlmIC8qIElNQUdFX0JMMiAqLworCisKKy8qIEJMMiAqLworc3RhdGljIGNvbnN0IGF1dGhfaW1nX2Rlc2NfdCB0cnVzdGVkX2Jvb3RfZndfY2VydCA9IHsKKwkuaW1nX2lkID0gVFJVU1RFRF9CT09UX0ZXX0NFUlRfSUQsCisJLmltZ190eXBlID0gSU1HX0NFUlQsCisJLnBhcmVudCA9IE5VTEwsCisJLmltZ19hdXRoX21ldGhvZHMgPSAoY29uc3QgYXV0aF9tZXRob2RfZGVzY190W0FVVEhfTUVUSE9EX05VTV0pIHsKKwkJWzBdID0geworCQkJLnR5cGUgPSBBVVRIX01FVEhPRF9TSUcsCisJCQkucGFyYW0uc2lnID0geworCQkJCS5wayA9ICZzdWJqZWN0X3BrLAorCQkJCS5zaWcgPSAmc2lnLAorCQkJCS5hbGcgPSAmc2lnX2FsZywKKwkJCQkuZGF0YSA9ICZyYXdfZGF0YQorCQkJfQorCQl9LAorCQlbMV0gPSB7CisJCQkudHlwZSA9IEFVVEhfTUVUSE9EX05WX0NUUiwKKwkJCS5wYXJhbS5udl9jdHIgPSB7CisJCQkJLmNlcnRfbnZfY3RyID0gJnRydXN0ZWRfbnZfY3RyLAorCQkJCS5wbGF0X252X2N0ciA9ICZ0cnVzdGVkX252X2N0cgorCQkJfQorCQl9CisJfSwKKwkuYXV0aGVudGljYXRlZF9kYXRhID0gKGNvbnN0IGF1dGhfcGFyYW1fZGVzY190W0NPVF9NQVhfVkVSSUZJRURfUEFSQU1TXSkgeworCQlbMF0gPSB7CisJCQkudHlwZV9kZXNjID0gJnRiX2Z3X2hhc2gsCisJCQkuZGF0YSA9IHsKKwkJCQkucHRyID0gKHZvaWQgKil0Yl9md19oYXNoX2J1ZiwKKwkJCQkubGVuID0gKHVuc2lnbmVkIGludClIQVNIX0RFUl9MRU4KKwkJCX0KKwkJfSwKKwkJWzFdID0geworCQkJLnR5cGVfZGVzYyA9ICZ0Yl9md19jb25maWdfaGFzaCwKKwkJCS5kYXRhID0geworCQkJCS5wdHIgPSAodm9pZCAqKXRiX2Z3X2NvbmZpZ19oYXNoX2J1ZiwKKwkJCQkubGVuID0gKHVuc2lnbmVkIGludClIQVNIX0RFUl9MRU4KKwkJCX0KKwkJfSwKKwkJWzJdID0geworCQkJLnR5cGVfZGVzYyA9ICZod19jb25maWdfaGFzaCwKKwkJCS5kYXRhID0geworCQkJCS5wdHIgPSAodm9pZCAqKWh3X2NvbmZpZ19oYXNoX2J1ZiwKKwkJCQkubGVuID0gKHVuc2lnbmVkIGludClIQVNIX0RFUl9MRU4KKwkJCX0KKwkJfQorCX0KK307CisKKyNpZmRlZiBJTUFHRV9CTDEKK3N0YXRpYyBjb25zdCBhdXRoX2ltZ19kZXNjX3QgYmwyX2ltYWdlID0geworCS5pbWdfaWQgPSBCTDJfSU1BR0VfSUQsCisJLmltZ190eXBlID0gSU1HX1JBVywKKwkucGFyZW50ID0gJnRydXN0ZWRfYm9vdF9md19jZXJ0LAorCS5pbWdfYXV0aF9tZXRob2RzID0gKGNvbnN0IGF1dGhfbWV0aG9kX2Rlc2NfdFtBVVRIX01FVEhPRF9OVU1dKSB7CisJCVswXSA9IHsKKwkJCS50eXBlID0gQVVUSF9NRVRIT0RfSEFTSCwKKwkJCS5wYXJhbS5oYXNoID0geworCQkJCS5kYXRhID0gJnJhd19kYXRhLAorCQkJCS5oYXNoID0gJnRiX2Z3X2hhc2gKKwkJCX0KKwkJfQorCX0KK307CisjZW5kaWYgLyogSU1BR0VfQkwxICovCisKKy8qIEhXIENvbmZpZyAqLworc3RhdGljIGNvbnN0IGF1dGhfaW1nX2Rlc2NfdCBod19jb25maWcgPSB7CisJLmltZ19pZCA9IEhXX0NPTkZJR19JRCwKKwkuaW1nX3R5cGUgPSBJTUdfUkFXLAorCS5wYXJlbnQgPSAmdHJ1c3RlZF9ib290X2Z3X2NlcnQsCisJLmltZ19hdXRoX21ldGhvZHMgPSAoY29uc3QgYXV0aF9tZXRob2RfZGVzY190W0FVVEhfTUVUSE9EX05VTV0pIHsKKwkJWzBdID0geworCQkJLnR5cGUgPSBBVVRIX01FVEhPRF9IQVNILAorCQkJLnBhcmFtLmhhc2ggPSB7CisJCQkJLmRhdGEgPSAmcmF3X2RhdGEsCisJCQkJLmhhc2ggPSAmaHdfY29uZmlnX2hhc2gKKwkJCX0KKwkJfQorCX0KK307CisKKy8qIFRCIEZXIENvbmZpZyAqLworI2lmZGVmIElNQUdFX0JMMQorc3RhdGljIGNvbnN0IGF1dGhfaW1nX2Rlc2NfdCB0Yl9md19jb25maWcgPSB7CisJLmltZ19pZCA9IFRCX0ZXX0NPTkZJR19JRCwKKwkuaW1nX3R5cGUgPSBJTUdfUkFXLAorCS5wYXJlbnQgPSAmdHJ1c3RlZF9ib290X2Z3X2NlcnQsCisJLmltZ19hdXRoX21ldGhvZHMgPSAoY29uc3QgYXV0aF9tZXRob2RfZGVzY190W0FVVEhfTUVUSE9EX05VTV0pIHsKKwkJWzBdID0geworCQkJLnR5cGUgPSBBVVRIX01FVEhPRF9IQVNILAorCQkJLnBhcmFtLmhhc2ggPSB7CisJCQkJLmRhdGEgPSAmcmF3X2RhdGEsCisJCQkJLmhhc2ggPSAmdGJfZndfY29uZmlnX2hhc2gKKwkJCX0KKwkJfQorCX0KK307CisjZW5kaWYgLyogSU1BR0VfQkwxICovCisKKyNpZmRlZiBJTUFHRV9CTDIKKy8qIFRydXN0ZWQga2V5IGNlcnRpZmljYXRlICovCitzdGF0aWMgY29uc3QgYXV0aF9pbWdfZGVzY190IHRydXN0ZWRfa2V5X2NlcnQgPSB7CisJLmltZ19pZCA9IFRSVVNURURfS0VZX0NFUlRfSUQsCisJLmltZ190eXBlID0gSU1HX0NFUlQsCisJLnBhcmVudCA9IE5VTEwsCisJLmltZ19hdXRoX21ldGhvZHMgPSAoY29uc3QgYXV0aF9tZXRob2RfZGVzY190W0FVVEhfTUVUSE9EX05VTV0pIHsKKwkJWzBdID0geworCQkJLnR5cGUgPSBBVVRIX01FVEhPRF9TSUcsCisJCQkucGFyYW0uc2lnID0geworCQkJCS5wayA9ICZzdWJqZWN0X3BrLAorCQkJCS5zaWcgPSAmc2lnLAorCQkJCS5hbGcgPSAmc2lnX2FsZywKKwkJCQkuZGF0YSA9ICZyYXdfZGF0YQorCQkJfQorCQl9LAorCQlbMV0gPSB7CisJCQkudHlwZSA9IEFVVEhfTUVUSE9EX05WX0NUUiwKKwkJCS5wYXJhbS5udl9jdHIgPSB7CisJCQkJLmNlcnRfbnZfY3RyID0gJnRydXN0ZWRfbnZfY3RyLAorCQkJCS5wbGF0X252X2N0ciA9ICZ0cnVzdGVkX252X2N0cgorCQkJfQorCQl9CisJfSwKKwkuYXV0aGVudGljYXRlZF9kYXRhID0gKGNvbnN0IGF1dGhfcGFyYW1fZGVzY190W0NPVF9NQVhfVkVSSUZJRURfUEFSQU1TXSkgeworCQlbMF0gPSB7CisJCQkudHlwZV9kZXNjID0gJnRydXN0ZWRfd29ybGRfcGssCisJCQkuZGF0YSA9IHsKKwkJCQkucHRyID0gKHZvaWQgKil0cnVzdGVkX3dvcmxkX3BrX2J1ZiwKKwkJCQkubGVuID0gKHVuc2lnbmVkIGludClQS19ERVJfTEVOCisJCQl9CisJCX0sCisJfQorfTsKKworLyogU0NQIEZpcm13YXJlICovCitzdGF0aWMgY29uc3QgYXV0aF9pbWdfZGVzY190IHNjcF9md19rZXlfY2VydCA9IHsKKwkuaW1nX2lkID0gU0NQX0ZXX0tFWV9DRVJUX0lELAorCS5pbWdfdHlwZSA9IElNR19DRVJULAorCS5wYXJlbnQgPSAmdHJ1c3RlZF9rZXlfY2VydCwKKwkuaW1nX2F1dGhfbWV0aG9kcyA9IChjb25zdCBhdXRoX21ldGhvZF9kZXNjX3RbQVVUSF9NRVRIT0RfTlVNXSkgeworCQlbMF0gPSB7CisJCQkudHlwZSA9IEFVVEhfTUVUSE9EX1NJRywKKwkJCS5wYXJhbS5zaWcgPSB7CisJCQkJLnBrID0gJnRydXN0ZWRfd29ybGRfcGssCisJCQkJLnNpZyA9ICZzaWcsCisJCQkJLmFsZyA9ICZzaWdfYWxnLAorCQkJCS5kYXRhID0gJnJhd19kYXRhCisJCQl9CisJCX0sCisJCVsxXSA9IHsKKwkJCS50eXBlID0gQVVUSF9NRVRIT0RfTlZfQ1RSLAorCQkJLnBhcmFtLm52X2N0ciA9IHsKKwkJCQkuY2VydF9udl9jdHIgPSAmdHJ1c3RlZF9udl9jdHIsCisJCQkJLnBsYXRfbnZfY3RyID0gJnRydXN0ZWRfbnZfY3RyCisJCQl9CisJCX0KKwl9LAorCS5hdXRoZW50aWNhdGVkX2RhdGEgPSAoY29uc3QgYXV0aF9wYXJhbV9kZXNjX3RbQ09UX01BWF9WRVJJRklFRF9QQVJBTVNdKSB7CisJCVswXSA9IHsKKwkJCS50eXBlX2Rlc2MgPSAmc2NwX2Z3X2NvbnRlbnRfcGssCisJCQkuZGF0YSA9IHsKKwkJCQkucHRyID0gKHZvaWQgKiljb250ZW50X3BrX2J1ZiwKKwkJCQkubGVuID0gKHVuc2lnbmVkIGludClQS19ERVJfTEVOCisJCQl9CisJCX0KKwl9Cit9OworCitzdGF0aWMgY29uc3QgYXV0aF9pbWdfZGVzY190IHNjcF9md19jb250ZW50X2NlcnQgPSB7CisJLmltZ19pZCA9IFNDUF9GV19DT05URU5UX0NFUlRfSUQsCisJLmltZ190eXBlID0gSU1HX0NFUlQsCisJLnBhcmVudCA9ICZzY3BfZndfa2V5X2NlcnQsCisJLmltZ19hdXRoX21ldGhvZHMgPSAoY29uc3QgYXV0aF9tZXRob2RfZGVzY190W0FVVEhfTUVUSE9EX05VTV0pIHsKKwkJWzBdID0geworCQkJLnR5cGUgPSBBVVRIX01FVEhPRF9TSUcsCisJCQkucGFyYW0uc2lnID0geworCQkJCS5wayA9ICZzY3BfZndfY29udGVudF9waywKKwkJCQkuc2lnID0gJnNpZywKKwkJCQkuYWxnID0gJnNpZ19hbGcsCisJCQkJLmRhdGEgPSAmcmF3X2RhdGEKKwkJCX0KKwkJfSwKKwkJWzFdID0geworCQkJLnR5cGUgPSBBVVRIX01FVEhPRF9OVl9DVFIsCisJCQkucGFyYW0ubnZfY3RyID0geworCQkJCS5jZXJ0X252X2N0ciA9ICZ0cnVzdGVkX252X2N0ciwKKwkJCQkucGxhdF9udl9jdHIgPSAmdHJ1c3RlZF9udl9jdHIKKwkJCX0KKwkJfQorCX0sCisJLmF1dGhlbnRpY2F0ZWRfZGF0YSA9IChjb25zdCBhdXRoX3BhcmFtX2Rlc2NfdFtDT1RfTUFYX1ZFUklGSUVEX1BBUkFNU10pIHsKKwkJWzBdID0geworCQkJLnR5cGVfZGVzYyA9ICZzY3BfZndfaGFzaCwKKwkJCS5kYXRhID0geworCQkJCS5wdHIgPSAodm9pZCAqKXNjcF9md19oYXNoX2J1ZiwKKwkJCQkubGVuID0gKHVuc2lnbmVkIGludClIQVNIX0RFUl9MRU4KKwkJCX0KKwkJfQorCX0KK307CisKK3N0YXRpYyBjb25zdCBhdXRoX2ltZ19kZXNjX3Qgc2NwX2JsMl9pbWFnZSA9IHsKKwkuaW1nX2lkID0gU0NQX0JMMl9JTUFHRV9JRCwKKwkuaW1nX3R5cGUgPSBJTUdfUkFXLAorCS5wYXJlbnQgPSAmc2NwX2Z3X2NvbnRlbnRfY2VydCwKKwkuaW1nX2F1dGhfbWV0aG9kcyA9IChjb25zdCBhdXRoX21ldGhvZF9kZXNjX3RbQVVUSF9NRVRIT0RfTlVNXSkgeworCQlbMF0gPSB7CisJCQkudHlwZSA9IEFVVEhfTUVUSE9EX0hBU0gsCisJCQkucGFyYW0uaGFzaCA9IHsKKwkJCQkuZGF0YSA9ICZyYXdfZGF0YSwKKwkJCQkuaGFzaCA9ICZzY3BfZndfaGFzaAorCQkJfQorCQl9CisJfQorfTsKKworLyogU29DIEZpcm13YXJlICovCitzdGF0aWMgY29uc3QgYXV0aF9pbWdfZGVzY190IHNvY19md19rZXlfY2VydCA9IHsKKwkuaW1nX2lkID0gU09DX0ZXX0tFWV9DRVJUX0lELAorCS5pbWdfdHlwZSA9IElNR19DRVJULAorCS5wYXJlbnQgPSAmdHJ1c3RlZF9rZXlfY2VydCwKKwkuaW1nX2F1dGhfbWV0aG9kcyA9IChjb25zdCBhdXRoX21ldGhvZF9kZXNjX3RbQVVUSF9NRVRIT0RfTlVNXSkgeworCQlbMF0gPSB7CisJCQkudHlwZSA9IEFVVEhfTUVUSE9EX1NJRywKKwkJCS5wYXJhbS5zaWcgPSB7CisJCQkJLnBrID0gJnRydXN0ZWRfd29ybGRfcGssCisJCQkJLnNpZyA9ICZzaWcsCisJCQkJLmFsZyA9ICZzaWdfYWxnLAorCQkJCS5kYXRhID0gJnJhd19kYXRhCisJCQl9CisJCX0sCisJCVsxXSA9IHsKKwkJCS50eXBlID0gQVVUSF9NRVRIT0RfTlZfQ1RSLAorCQkJLnBhcmFtLm52X2N0ciA9IHsKKwkJCQkuY2VydF9udl9jdHIgPSAmdHJ1c3RlZF9udl9jdHIsCisJCQkJLnBsYXRfbnZfY3RyID0gJnRydXN0ZWRfbnZfY3RyCisJCQl9CisJCX0KKwl9LAorCS5hdXRoZW50aWNhdGVkX2RhdGEgPSAoY29uc3QgYXV0aF9wYXJhbV9kZXNjX3RbQ09UX01BWF9WRVJJRklFRF9QQVJBTVNdKSB7CisJCVswXSA9IHsKKwkJCS50eXBlX2Rlc2MgPSAmc29jX2Z3X2NvbnRlbnRfcGssCisJCQkuZGF0YSA9IHsKKwkJCQkucHRyID0gKHZvaWQgKiljb250ZW50X3BrX2J1ZiwKKwkJCQkubGVuID0gKHVuc2lnbmVkIGludClQS19ERVJfTEVOCisJCQl9CisJCX0KKwl9Cit9OworCitzdGF0aWMgY29uc3QgYXV0aF9pbWdfZGVzY190IHNvY19md19jb250ZW50X2NlcnQgPSB7CisJLmltZ19pZCA9IFNPQ19GV19DT05URU5UX0NFUlRfSUQsCisJLmltZ190eXBlID0gSU1HX0NFUlQsCisJLnBhcmVudCA9ICZzb2NfZndfa2V5X2NlcnQsCisJLmltZ19hdXRoX21ldGhvZHMgPSAoY29uc3QgYXV0aF9tZXRob2RfZGVzY190W0FVVEhfTUVUSE9EX05VTV0pIHsKKwkJWzBdID0geworCQkJLnR5cGUgPSBBVVRIX01FVEhPRF9TSUcsCisJCQkucGFyYW0uc2lnID0geworCQkJCS5wayA9ICZzb2NfZndfY29udGVudF9waywKKwkJCQkuc2lnID0gJnNpZywKKwkJCQkuYWxnID0gJnNpZ19hbGcsCisJCQkJLmRhdGEgPSAmcmF3X2RhdGEKKwkJCX0KKwkJfSwKKwkJWzFdID0geworCQkJLnR5cGUgPSBBVVRIX01FVEhPRF9OVl9DVFIsCisJCQkucGFyYW0ubnZfY3RyID0geworCQkJCS5jZXJ0X252X2N0ciA9ICZ0cnVzdGVkX252X2N0ciwKKwkJCQkucGxhdF9udl9jdHIgPSAmdHJ1c3RlZF9udl9jdHIKKwkJCX0KKwkJfQorCX0sCisJLmF1dGhlbnRpY2F0ZWRfZGF0YSA9IChjb25zdCBhdXRoX3BhcmFtX2Rlc2NfdFtDT1RfTUFYX1ZFUklGSUVEX1BBUkFNU10pIHsKKwkJWzBdID0geworCQkJLnR5cGVfZGVzYyA9ICZzb2NfZndfaGFzaCwKKwkJCS5kYXRhID0geworCQkJCS5wdHIgPSAodm9pZCAqKXNvY19md19oYXNoX2J1ZiwKKwkJCQkubGVuID0gKHVuc2lnbmVkIGludClIQVNIX0RFUl9MRU4KKwkJCX0KKwkJfSwKKwkJWzFdID0geworCQkJLnR5cGVfZGVzYyA9ICZzb2NfZndfY29uZmlnX2hhc2gsCisJCQkuZGF0YSA9IHsKKwkJCQkucHRyID0gKHZvaWQgKilzb2NfZndfY29uZmlnX2hhc2hfYnVmLAorCQkJCS5sZW4gPSAodW5zaWduZWQgaW50KUhBU0hfREVSX0xFTgorCQkJfQorCQl9CisJfQorfTsKKworc3RhdGljIGNvbnN0IGF1dGhfaW1nX2Rlc2NfdCBibDMxX2ltYWdlID0geworCS5pbWdfaWQgPSBCTDMxX0lNQUdFX0lELAorCS5pbWdfdHlwZSA9IElNR19SQVcsCisJLnBhcmVudCA9ICZzb2NfZndfY29udGVudF9jZXJ0LAorCS5pbWdfYXV0aF9tZXRob2RzID0gKGNvbnN0IGF1dGhfbWV0aG9kX2Rlc2NfdFtBVVRIX01FVEhPRF9OVU1dKSB7CisJCVswXSA9IHsKKwkJCS50eXBlID0gQVVUSF9NRVRIT0RfSEFTSCwKKwkJCS5wYXJhbS5oYXNoID0geworCQkJCS5kYXRhID0gJnJhd19kYXRhLAorCQkJCS5oYXNoID0gJnNvY19md19oYXNoCisJCQl9CisJCX0KKwl9Cit9OworCisvKiBTT0MgRlcgQ29uZmlnICovCitzdGF0aWMgY29uc3QgYXV0aF9pbWdfZGVzY190IHNvY19md19jb25maWcgPSB7CisJLmltZ19pZCA9IFNPQ19GV19DT05GSUdfSUQsCisJLmltZ190eXBlID0gSU1HX1JBVywKKwkucGFyZW50ID0gJnNvY19md19jb250ZW50X2NlcnQsCisJLmltZ19hdXRoX21ldGhvZHMgPSAoY29uc3QgYXV0aF9tZXRob2RfZGVzY190W0FVVEhfTUVUSE9EX05VTV0pIHsKKwkJWzBdID0geworCQkJLnR5cGUgPSBBVVRIX01FVEhPRF9IQVNILAorCQkJLnBhcmFtLmhhc2ggPSB7CisJCQkJLmRhdGEgPSAmcmF3X2RhdGEsCisJCQkJLmhhc2ggPSAmc29jX2Z3X2NvbmZpZ19oYXNoCisJCQl9CisJCX0KKwl9Cit9OworCisvKiBUcnVzdGVkIE9TIEZpcm13YXJlICovCitzdGF0aWMgY29uc3QgYXV0aF9pbWdfZGVzY190IHRydXN0ZWRfb3NfZndfa2V5X2NlcnQgPSB7CisJLmltZ19pZCA9IFRSVVNURURfT1NfRldfS0VZX0NFUlRfSUQsCisJLmltZ190eXBlID0gSU1HX0NFUlQsCisJLnBhcmVudCA9ICZ0cnVzdGVkX2tleV9jZXJ0LAorCS5pbWdfYXV0aF9tZXRob2RzID0gKGNvbnN0IGF1dGhfbWV0aG9kX2Rlc2NfdFtBVVRIX01FVEhPRF9OVU1dKSB7CisJCVswXSA9IHsKKwkJCS50eXBlID0gQVVUSF9NRVRIT0RfU0lHLAorCQkJLnBhcmFtLnNpZyA9IHsKKwkJCQkucGsgPSAmdHJ1c3RlZF93b3JsZF9waywKKwkJCQkuc2lnID0gJnNpZywKKwkJCQkuYWxnID0gJnNpZ19hbGcsCisJCQkJLmRhdGEgPSAmcmF3X2RhdGEKKwkJCX0KKwkJfSwKKwkJWzFdID0geworCQkJLnR5cGUgPSBBVVRIX01FVEhPRF9OVl9DVFIsCisJCQkucGFyYW0ubnZfY3RyID0geworCQkJCS5jZXJ0X252X2N0ciA9ICZ0cnVzdGVkX252X2N0ciwKKwkJCQkucGxhdF9udl9jdHIgPSAmdHJ1c3RlZF9udl9jdHIKKwkJCX0KKwkJfQorCX0sCisJLmF1dGhlbnRpY2F0ZWRfZGF0YSA9IChjb25zdCBhdXRoX3BhcmFtX2Rlc2NfdFtDT1RfTUFYX1ZFUklGSUVEX1BBUkFNU10pIHsKKwkJWzBdID0geworCQkJLnR5cGVfZGVzYyA9ICZ0b3NfZndfY29udGVudF9waywKKwkJCS5kYXRhID0geworCQkJCS5wdHIgPSAodm9pZCAqKWNvbnRlbnRfcGtfYnVmLAorCQkJCS5sZW4gPSAodW5zaWduZWQgaW50KVBLX0RFUl9MRU4KKwkJCX0KKwkJfQorCX0KK307CisKK3N0YXRpYyBjb25zdCBhdXRoX2ltZ19kZXNjX3QgdHJ1c3RlZF9vc19md19jb250ZW50X2NlcnQgPSB7CisJLmltZ19pZCA9IFRSVVNURURfT1NfRldfQ09OVEVOVF9DRVJUX0lELAorCS5pbWdfdHlwZSA9IElNR19DRVJULAorCS5wYXJlbnQgPSAmdHJ1c3RlZF9vc19md19rZXlfY2VydCwKKwkuaW1nX2F1dGhfbWV0aG9kcyA9IChjb25zdCBhdXRoX21ldGhvZF9kZXNjX3RbQVVUSF9NRVRIT0RfTlVNXSkgeworCQlbMF0gPSB7CisJCQkudHlwZSA9IEFVVEhfTUVUSE9EX1NJRywKKwkJCS5wYXJhbS5zaWcgPSB7CisJCQkJLnBrID0gJnRvc19md19jb250ZW50X3BrLAorCQkJCS5zaWcgPSAmc2lnLAorCQkJCS5hbGcgPSAmc2lnX2FsZywKKwkJCQkuZGF0YSA9ICZyYXdfZGF0YQorCQkJfQorCQl9LAorCQlbMV0gPSB7CisJCQkudHlwZSA9IEFVVEhfTUVUSE9EX05WX0NUUiwKKwkJCS5wYXJhbS5udl9jdHIgPSB7CisJCQkJLmNlcnRfbnZfY3RyID0gJnRydXN0ZWRfbnZfY3RyLAorCQkJCS5wbGF0X252X2N0ciA9ICZ0cnVzdGVkX252X2N0cgorCQkJfQorCQl9CisJfSwKKwkuYXV0aGVudGljYXRlZF9kYXRhID0gKGNvbnN0IGF1dGhfcGFyYW1fZGVzY190W0NPVF9NQVhfVkVSSUZJRURfUEFSQU1TXSkgeworCQlbMF0gPSB7CisJCQkudHlwZV9kZXNjID0gJnRvc19md19oYXNoLAorCQkJLmRhdGEgPSB7CisJCQkJLnB0ciA9ICh2b2lkICopdG9zX2Z3X2hhc2hfYnVmLAorCQkJCS5sZW4gPSAodW5zaWduZWQgaW50KUhBU0hfREVSX0xFTgorCQkJfQorCQl9LAorCQlbMV0gPSB7CisJCQkudHlwZV9kZXNjID0gJnRvc19md19leHRyYTFfaGFzaCwKKwkJCS5kYXRhID0geworCQkJCS5wdHIgPSAodm9pZCAqKXRvc19md19leHRyYTFfaGFzaF9idWYsCisJCQkJLmxlbiA9ICh1bnNpZ25lZCBpbnQpSEFTSF9ERVJfTEVOCisJCQl9CisJCX0sCisJCVsyXSA9IHsKKwkJCS50eXBlX2Rlc2MgPSAmdG9zX2Z3X2V4dHJhMl9oYXNoLAorCQkJLmRhdGEgPSB7CisJCQkJLnB0ciA9ICh2b2lkICopdG9zX2Z3X2V4dHJhMl9oYXNoX2J1ZiwKKwkJCQkubGVuID0gKHVuc2lnbmVkIGludClIQVNIX0RFUl9MRU4KKwkJCX0KKwkJfSwKKwkJWzNdID0geworCQkJLnR5cGVfZGVzYyA9ICZ0b3NfZndfY29uZmlnX2hhc2gsCisJCQkuZGF0YSA9IHsKKwkJCQkucHRyID0gKHZvaWQgKil0b3NfZndfY29uZmlnX2hhc2hfYnVmLAorCQkJCS5sZW4gPSAodW5zaWduZWQgaW50KUhBU0hfREVSX0xFTgorCQkJfQorCQl9CisJfQorfTsKKworc3RhdGljIGNvbnN0IGF1dGhfaW1nX2Rlc2NfdCBibDMyX2ltYWdlID0geworCS5pbWdfaWQgPSBCTDMyX0lNQUdFX0lELAorCS5pbWdfdHlwZSA9IElNR19SQVcsCisJLnBhcmVudCA9ICZ0cnVzdGVkX29zX2Z3X2NvbnRlbnRfY2VydCwKKwkuaW1nX2F1dGhfbWV0aG9kcyA9IChjb25zdCBhdXRoX21ldGhvZF9kZXNjX3RbQVVUSF9NRVRIT0RfTlVNXSkgeworCQlbMF0gPSB7CisJCQkudHlwZSA9IEFVVEhfTUVUSE9EX0hBU0gsCisJCQkucGFyYW0uaGFzaCA9IHsKKwkJCQkuZGF0YSA9ICZyYXdfZGF0YSwKKwkJCQkuaGFzaCA9ICZ0b3NfZndfaGFzaAorCQkJfQorCQl9CisJfQorfTsKKworc3RhdGljIGNvbnN0IGF1dGhfaW1nX2Rlc2NfdCBibDMyX2V4dHJhMV9pbWFnZSA9IHsKKwkuaW1nX2lkID0gQkwzMl9FWFRSQTFfSU1BR0VfSUQsCisJLmltZ190eXBlID0gSU1HX1JBVywKKwkucGFyZW50ID0gJnRydXN0ZWRfb3NfZndfY29udGVudF9jZXJ0LAorCS5pbWdfYXV0aF9tZXRob2RzID0gKGNvbnN0IGF1dGhfbWV0aG9kX2Rlc2NfdFtBVVRIX01FVEhPRF9OVU1dKSB7CisJCVswXSA9IHsKKwkJCS50eXBlID0gQVVUSF9NRVRIT0RfSEFTSCwKKwkJCS5wYXJhbS5oYXNoID0geworCQkJCS5kYXRhID0gJnJhd19kYXRhLAorCQkJCS5oYXNoID0gJnRvc19md19leHRyYTFfaGFzaAorCQkJfQorCQl9CisJfQorfTsKKworc3RhdGljIGNvbnN0IGF1dGhfaW1nX2Rlc2NfdCBibDMyX2V4dHJhMl9pbWFnZSA9IHsKKwkuaW1nX2lkID0gQkwzMl9FWFRSQTJfSU1BR0VfSUQsCisJLmltZ190eXBlID0gSU1HX1JBVywKKwkucGFyZW50ID0gJnRydXN0ZWRfb3NfZndfY29udGVudF9jZXJ0LAorCS5pbWdfYXV0aF9tZXRob2RzID0gKGNvbnN0IGF1dGhfbWV0aG9kX2Rlc2NfdFtBVVRIX01FVEhPRF9OVU1dKSB7CisJCVswXSA9IHsKKwkJCS50eXBlID0gQVVUSF9NRVRIT0RfSEFTSCwKKwkJCS5wYXJhbS5oYXNoID0geworCQkJCS5kYXRhID0gJnJhd19kYXRhLAorCQkJCS5oYXNoID0gJnRvc19md19leHRyYTJfaGFzaAorCQkJfQorCQl9CisJfQorfTsKKworLyogVE9TIEZXIENvbmZpZyAqLworc3RhdGljIGNvbnN0IGF1dGhfaW1nX2Rlc2NfdCB0b3NfZndfY29uZmlnID0geworCS5pbWdfaWQgPSBUT1NfRldfQ09ORklHX0lELAorCS5pbWdfdHlwZSA9IElNR19SQVcsCisJLnBhcmVudCA9ICZ0cnVzdGVkX29zX2Z3X2NvbnRlbnRfY2VydCwKKwkuaW1nX2F1dGhfbWV0aG9kcyA9IChjb25zdCBhdXRoX21ldGhvZF9kZXNjX3RbQVVUSF9NRVRIT0RfTlVNXSkgeworCQlbMF0gPSB7CisJCQkudHlwZSA9IEFVVEhfTUVUSE9EX0hBU0gsCisJCQkucGFyYW0uaGFzaCA9IHsKKwkJCQkuZGF0YSA9ICZyYXdfZGF0YSwKKwkJCQkuaGFzaCA9ICZ0b3NfZndfY29uZmlnX2hhc2gKKwkJCX0KKwkJfQorCX0KK307CisKKy8qIE5vbi1UcnVzdGVkIEZpcm13YXJlICovCitzdGF0aWMgY29uc3QgYXV0aF9pbWdfZGVzY190IG5vbl90cnVzdGVkX2Z3X2NvbnRlbnRfY2VydCA9IHsKKwkuaW1nX2lkID0gTk9OX1RSVVNURURfRldfQ09OVEVOVF9DRVJUX0lELAorCS5pbWdfdHlwZSA9IElNR19DRVJULAorCS5wYXJlbnQgPSBOVUxMLCAvKiBSb290IGNlcnRpZmljYXRlLiAgKi8KKwkuaW1nX2F1dGhfbWV0aG9kcyA9IChjb25zdCBhdXRoX21ldGhvZF9kZXNjX3RbQVVUSF9NRVRIT0RfTlVNXSkgeworCQlbMF0gPSB7CisJCQkudHlwZSA9IEFVVEhfTUVUSE9EX1NJRywKKwkJCS5wYXJhbS5zaWcgPSB7CisJCQkJLnBrID0gJnByb3RfcGssCisJCQkJLnNpZyA9ICZzaWcsCisJCQkJLmFsZyA9ICZzaWdfYWxnLAorCQkJCS5kYXRhID0gJnJhd19kYXRhCisJCQl9CisJCX0sCisJCVsxXSA9IHsKKwkJCS50eXBlID0gQVVUSF9NRVRIT0RfTlZfQ1RSLAorCQkJLnBhcmFtLm52X2N0ciA9IHsKKwkJCQkuY2VydF9udl9jdHIgPSAmbm9uX3RydXN0ZWRfbnZfY3RyLAorCQkJCS5wbGF0X252X2N0ciA9ICZub25fdHJ1c3RlZF9udl9jdHIKKwkJCX0KKwkJfQorCX0sCisJLmF1dGhlbnRpY2F0ZWRfZGF0YSA9IChjb25zdCBhdXRoX3BhcmFtX2Rlc2NfdFtDT1RfTUFYX1ZFUklGSUVEX1BBUkFNU10pIHsKKwkJWzBdID0geworCQkJLnR5cGVfZGVzYyA9ICZudF93b3JsZF9ibF9oYXNoLAorCQkJLmRhdGEgPSB7CisJCQkJLnB0ciA9ICh2b2lkICopbnRfd29ybGRfYmxfaGFzaF9idWYsCisJCQkJLmxlbiA9ICh1bnNpZ25lZCBpbnQpSEFTSF9ERVJfTEVOCisJCQl9CisJCX0sCisJCVsxXSA9IHsKKwkJCS50eXBlX2Rlc2MgPSAmbnRfZndfY29uZmlnX2hhc2gsCisJCQkuZGF0YSA9IHsKKwkJCQkucHRyID0gKHZvaWQgKiludF9md19jb25maWdfaGFzaF9idWYsCisJCQkJLmxlbiA9ICh1bnNpZ25lZCBpbnQpSEFTSF9ERVJfTEVOCisJCQl9CisJCX0KKwl9Cit9OworCitzdGF0aWMgY29uc3QgYXV0aF9pbWdfZGVzY190IGJsMzNfaW1hZ2UgPSB7CisJLmltZ19pZCA9IEJMMzNfSU1BR0VfSUQsCisJLmltZ190eXBlID0gSU1HX1JBVywKKwkucGFyZW50ID0gJm5vbl90cnVzdGVkX2Z3X2NvbnRlbnRfY2VydCwKKwkuaW1nX2F1dGhfbWV0aG9kcyA9IChjb25zdCBhdXRoX21ldGhvZF9kZXNjX3RbQVVUSF9NRVRIT0RfTlVNXSkgeworCQlbMF0gPSB7CisJCQkudHlwZSA9IEFVVEhfTUVUSE9EX0hBU0gsCisJCQkucGFyYW0uaGFzaCA9IHsKKwkJCQkuZGF0YSA9ICZyYXdfZGF0YSwKKwkJCQkuaGFzaCA9ICZudF93b3JsZF9ibF9oYXNoCisJCQl9CisJCX0KKwl9Cit9OworCisvKiBOVCBGVyBDb25maWcgKi8KK3N0YXRpYyBjb25zdCBhdXRoX2ltZ19kZXNjX3QgbnRfZndfY29uZmlnID0geworCS5pbWdfaWQgPSBOVF9GV19DT05GSUdfSUQsCisJLmltZ190eXBlID0gSU1HX1JBVywKKwkucGFyZW50ID0gJm5vbl90cnVzdGVkX2Z3X2NvbnRlbnRfY2VydCwKKwkuaW1nX2F1dGhfbWV0aG9kcyA9IChjb25zdCBhdXRoX21ldGhvZF9kZXNjX3RbQVVUSF9NRVRIT0RfTlVNXSkgeworCQlbMF0gPSB7CisJCQkudHlwZSA9IEFVVEhfTUVUSE9EX0hBU0gsCisJCQkucGFyYW0uaGFzaCA9IHsKKwkJCQkuZGF0YSA9ICZyYXdfZGF0YSwKKwkJCQkuaGFzaCA9ICZudF9md19jb25maWdfaGFzaAorCQkJfQorCQl9CisJfQorfTsKKworI2Vsc2UgIC8qIElNQUdFX0JMMiAqLworCisvKiBGV1UgYXV0aCBkZXNjcmlwdG9yICovCitzdGF0aWMgY29uc3QgYXV0aF9pbWdfZGVzY190IGZ3dV9jZXJ0ID0geworCS5pbWdfaWQgPSBGV1VfQ0VSVF9JRCwKKwkuaW1nX3R5cGUgPSBJTUdfQ0VSVCwKKwkucGFyZW50ID0gTlVMTCwKKwkuaW1nX2F1dGhfbWV0aG9kcyA9IChjb25zdCBhdXRoX21ldGhvZF9kZXNjX3RbQVVUSF9NRVRIT0RfTlVNXSkgeworCQlbMF0gPSB7CisJCQkudHlwZSA9IEFVVEhfTUVUSE9EX1NJRywKKwkJCS5wYXJhbS5zaWcgPSB7CisJCQkJLnBrID0gJnN1YmplY3RfcGssCisJCQkJLnNpZyA9ICZzaWcsCisJCQkJLmFsZyA9ICZzaWdfYWxnLAorCQkJCS5kYXRhID0gJnJhd19kYXRhCisJCQl9CisJCX0KKwl9LAorCS5hdXRoZW50aWNhdGVkX2RhdGEgPSAoY29uc3QgYXV0aF9wYXJhbV9kZXNjX3RbQ09UX01BWF9WRVJJRklFRF9QQVJBTVNdKSB7CisJCVswXSA9IHsKKwkJCS50eXBlX2Rlc2MgPSAmc2NwX2JsMnVfaGFzaCwKKwkJCS5kYXRhID0geworCQkJCS5wdHIgPSAodm9pZCAqKXNjcF9md19oYXNoX2J1ZiwKKwkJCQkubGVuID0gKHVuc2lnbmVkIGludClIQVNIX0RFUl9MRU4KKwkJCX0KKwkJfSwKKwkJWzFdID0geworCQkJLnR5cGVfZGVzYyA9ICZibDJ1X2hhc2gsCisJCQkuZGF0YSA9IHsKKwkJCQkucHRyID0gKHZvaWQgKil0Yl9md19oYXNoX2J1ZiwKKwkJCQkubGVuID0gKHVuc2lnbmVkIGludClIQVNIX0RFUl9MRU4KKwkJCX0KKwkJfSwKKwkJWzJdID0geworCQkJLnR5cGVfZGVzYyA9ICZuc19ibDJ1X2hhc2gsCisJCQkuZGF0YSA9IHsKKwkJCQkucHRyID0gKHZvaWQgKiludF93b3JsZF9ibF9oYXNoX2J1ZiwKKwkJCQkubGVuID0gKHVuc2lnbmVkIGludClIQVNIX0RFUl9MRU4KKwkJCX0KKwkJfQorCX0KK307CisKKy8qIFNDUF9CTDJVICovCitzdGF0aWMgY29uc3QgYXV0aF9pbWdfZGVzY190IHNjcF9ibDJ1X2ltYWdlID0geworCS5pbWdfaWQgPSBTQ1BfQkwyVV9JTUFHRV9JRCwKKwkuaW1nX3R5cGUgPSBJTUdfUkFXLAorCS5wYXJlbnQgPSAmZnd1X2NlcnQsCisJLmltZ19hdXRoX21ldGhvZHMgPSAoY29uc3QgYXV0aF9tZXRob2RfZGVzY190W0FVVEhfTUVUSE9EX05VTV0pIHsKKwkJWzBdID0geworCQkJLnR5cGUgPSBBVVRIX01FVEhPRF9IQVNILAorCQkJLnBhcmFtLmhhc2ggPSB7CisJCQkJLmRhdGEgPSAmcmF3X2RhdGEsCisJCQkJLmhhc2ggPSAmc2NwX2JsMnVfaGFzaAorCQkJfQorCQl9CisJfQorfTsKKworLyogQkwyVSAqLworc3RhdGljIGNvbnN0IGF1dGhfaW1nX2Rlc2NfdCBibDJ1X2ltYWdlID0geworCS5pbWdfaWQgPSBCTDJVX0lNQUdFX0lELAorCS5pbWdfdHlwZSA9IElNR19SQVcsCisJLnBhcmVudCA9ICZmd3VfY2VydCwKKwkuaW1nX2F1dGhfbWV0aG9kcyA9IChjb25zdCBhdXRoX21ldGhvZF9kZXNjX3RbQVVUSF9NRVRIT0RfTlVNXSkgeworCQlbMF0gPSB7CisJCQkudHlwZSA9IEFVVEhfTUVUSE9EX0hBU0gsCisJCQkucGFyYW0uaGFzaCA9IHsKKwkJCQkuZGF0YSA9ICZyYXdfZGF0YSwKKwkJCQkuaGFzaCA9ICZibDJ1X2hhc2gKKwkJCX0KKwkJfQorCX0KK307CisKKy8qIE5TX0JMMlUgKi8KK3N0YXRpYyBjb25zdCBhdXRoX2ltZ19kZXNjX3QgbnNfYmwydV9pbWFnZSA9IHsKKwkuaW1nX2lkID0gTlNfQkwyVV9JTUFHRV9JRCwKKwkuaW1nX3R5cGUgPSBJTUdfUkFXLAorCS5wYXJlbnQgPSAmZnd1X2NlcnQsCisJLmltZ19hdXRoX21ldGhvZHMgPSAoY29uc3QgYXV0aF9tZXRob2RfZGVzY190W0FVVEhfTUVUSE9EX05VTV0pIHsKKwkJWzBdID0geworCQkJLnR5cGUgPSBBVVRIX01FVEhPRF9IQVNILAorCQkJLnBhcmFtLmhhc2ggPSB7CisJCQkJLmRhdGEgPSAmcmF3X2RhdGEsCisJCQkJLmhhc2ggPSAmbnNfYmwydV9oYXNoCisJCQl9CisJCX0KKwl9Cit9OworI2VuZGlmIC8qIElNQUdFX0JMMiAqLworCisvKgorICogQ2hhaW4gb2YgdHJ1c3QgZGVmaW5pdGlvbgorICovCisjaWZkZWYgSU1BR0VfQkwxCitzdGF0aWMgY29uc3QgYXV0aF9pbWdfZGVzY190ICogY29uc3QgY290X2Rlc2NbXSA9IHsKKwlbVFJVU1RFRF9CT09UX0ZXX0NFUlRfSURdCQk9CSZ0cnVzdGVkX2Jvb3RfZndfY2VydCwKKwlbQkwyX0lNQUdFX0lEXQkJCQk9CSZibDJfaW1hZ2UsCisJW0hXX0NPTkZJR19JRF0JCQkJPQkmaHdfY29uZmlnLAorCVtUQl9GV19DT05GSUdfSURdCQkJPQkmdGJfZndfY29uZmlnLAorCVtGV1VfQ0VSVF9JRF0JCQkJPQkmZnd1X2NlcnQsCisJW1NDUF9CTDJVX0lNQUdFX0lEXQkJCT0JJnNjcF9ibDJ1X2ltYWdlLAorCVtCTDJVX0lNQUdFX0lEXQkJCQk9CSZibDJ1X2ltYWdlLAorCVtOU19CTDJVX0lNQUdFX0lEXQkJCT0JJm5zX2JsMnVfaW1hZ2UKK307CisjZWxzZSAvKiBJTUFHRV9CTDIgKi8KK3N0YXRpYyBjb25zdCBhdXRoX2ltZ19kZXNjX3QgKiBjb25zdCBjb3RfZGVzY1tdID0geworCVtUUlVTVEVEX0JPT1RfRldfQ0VSVF9JRF0JCT0JJnRydXN0ZWRfYm9vdF9md19jZXJ0LAorCVtIV19DT05GSUdfSURdCQkJCT0JJmh3X2NvbmZpZywKKwlbVFJVU1RFRF9LRVlfQ0VSVF9JRF0JCQk9CSZ0cnVzdGVkX2tleV9jZXJ0LAorCVtTQ1BfRldfS0VZX0NFUlRfSURdCQkJPQkmc2NwX2Z3X2tleV9jZXJ0LAorCVtTQ1BfRldfQ09OVEVOVF9DRVJUX0lEXQkJPQkmc2NwX2Z3X2NvbnRlbnRfY2VydCwKKwlbU0NQX0JMMl9JTUFHRV9JRF0JCQk9CSZzY3BfYmwyX2ltYWdlLAorCVtTT0NfRldfS0VZX0NFUlRfSURdCQkJPQkmc29jX2Z3X2tleV9jZXJ0LAorCVtTT0NfRldfQ09OVEVOVF9DRVJUX0lEXQkJPQkmc29jX2Z3X2NvbnRlbnRfY2VydCwKKwlbQkwzMV9JTUFHRV9JRF0JCQkJPQkmYmwzMV9pbWFnZSwKKwlbU09DX0ZXX0NPTkZJR19JRF0JCQk9CSZzb2NfZndfY29uZmlnLAorCVtUUlVTVEVEX09TX0ZXX0tFWV9DRVJUX0lEXQkJPQkmdHJ1c3RlZF9vc19md19rZXlfY2VydCwKKwlbVFJVU1RFRF9PU19GV19DT05URU5UX0NFUlRfSURdCQk9CSZ0cnVzdGVkX29zX2Z3X2NvbnRlbnRfY2VydCwKKwlbQkwzMl9JTUFHRV9JRF0JCQkJPQkmYmwzMl9pbWFnZSwKKwlbQkwzMl9FWFRSQTFfSU1BR0VfSURdCQkJPQkmYmwzMl9leHRyYTFfaW1hZ2UsCisJW0JMMzJfRVhUUkEyX0lNQUdFX0lEXQkJCT0JJmJsMzJfZXh0cmEyX2ltYWdlLAorCVtUT1NfRldfQ09ORklHX0lEXQkJCT0JJnRvc19md19jb25maWcsCisJW05PTl9UUlVTVEVEX0ZXX0NPTlRFTlRfQ0VSVF9JRF0JPQkmbm9uX3RydXN0ZWRfZndfY29udGVudF9jZXJ0LAorCVtCTDMzX0lNQUdFX0lEXQkJCQk9CSZibDMzX2ltYWdlLAorCVtOVF9GV19DT05GSUdfSURdCQkJPQkmbnRfZndfY29uZmlnLAorfTsKKyNlbmRpZgorCisvKiBSZWdpc3RlciB0aGUgQ29UIGluIHRoZSBhdXRoZW50aWNhdGlvbiBtb2R1bGUgKi8KK1JFR0lTVEVSX0NPVChjb3RfZGVzYyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2F1dGgvbWJlZHRscy9tYmVkdGxzX2NyeXB0by5jIGIvZHJpdmVycy9hdXRoL21iZWR0bHMvbWJlZHRsc19jcnlwdG8uYwppbmRleCAyYTk4MDE0Li42ZDZlZmI1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2F1dGgvbWJlZHRscy9tYmVkdGxzX2NyeXB0by5jCisrKyBiL2RyaXZlcnMvYXV0aC9tYmVkdGxzL21iZWR0bHNfY3J5cHRvLmMKQEAgLTE0LDYgKzE0LDcgQEAKICNpbmNsdWRlIDxtYmVkdGxzL21lbW9yeV9idWZmZXJfYWxsb2MuaD4KICNpbmNsdWRlIDxtYmVkdGxzL29pZC5oPgogI2luY2x1ZGUgPG1iZWR0bHMvcGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxtYmVkdGxzL3g1MDkuaD4KIAogI2luY2x1ZGUgPGNvbW1vbi9kZWJ1Zy5oPgogI2luY2x1ZGUgPGRyaXZlcnMvYXV0aC9jcnlwdG9fbW9kLmg+CmRpZmYgLS1naXQgYS9pbmNsdWRlL3BsYXQvYXJtL2NvbW1vbi9wbGF0X2FybS5oIGIvaW5jbHVkZS9wbGF0L2FybS9jb21tb24vcGxhdF9hcm0uaAppbmRleCBmZjFiOTc5Li5iYWJkZTQxIDEwMDY0NAotLS0gYS9pbmNsdWRlL3BsYXQvYXJtL2NvbW1vbi9wbGF0X2FybS5oCisrKyBiL2luY2x1ZGUvcGxhdC9hcm0vY29tbW9uL3BsYXRfYXJtLmgKQEAgLTI2OCw3ICsyNjgsNyBAQAogICogT3B0aW9uYWwgZnVuY3Rpb25zIGluIEFSTSBzdGFuZGFyZCBwbGF0Zm9ybXMKICAqLwogdm9pZCBwbGF0X2FybV9vdmVycmlkZV9naWNyX2ZyYW1lcyhjb25zdCB1aW50cHRyX3QgKnBsYXRfZ2ljcl9mcmFtZXMpOwotaW50IGFybV9nZXRfcm90cGtfaW5mbyh2b2lkICoqa2V5X3B0ciwgdW5zaWduZWQgaW50ICprZXlfbGVuLAoraW50IGFybV9nZXRfcm90cGtfaW5mbyh2b2lkICpjb29raWUsIHZvaWQgKiprZXlfcHRyLCB1bnNpZ25lZCBpbnQgKmtleV9sZW4sCiAJdW5zaWduZWQgaW50ICpmbGFncyk7CiBpbnQgYXJtX2dldF9yb3Rwa19pbmZvX3JlZ3Modm9pZCAqKmtleV9wdHIsIHVuc2lnbmVkIGludCAqa2V5X2xlbiwKIAl1bnNpZ25lZCBpbnQgKmZsYWdzKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdG9vbHNfc2hhcmUvZHVhbHJvb3Rfb2lkLmggYi9pbmNsdWRlL3Rvb2xzX3NoYXJlL2R1YWxyb290X29pZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlODhhNmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL3Rvb2xzX3NoYXJlL2R1YWxyb290X29pZC5oCkBAIC0wLDAgKzEsMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjAsIEFybSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UKKyAqLworCisjaWZuZGVmIERVQUxST09UX09JRF9ICisjZGVmaW5lIERVQUxST09UX09JRF9ICisKKy8qIFJldXNlIHRoZSBPYmplY3QgSURzIGRlZmluZWQgYnkgVEJCUiBmb3IgY2VydGlmaWNhdGUgZXh0ZW5zaW9ucy4gKi8KKyNpbmNsdWRlICJ0YmJyX29pZC5oIgorCisvKgorICogUGxhdGZvcm0gcm9vdC1vZi10cnVzdCBwdWJsaWMga2V5LgorICogQXJiaXRyYXJ5IHZhbHVlIHRoYXQgZG9lcyBub3QgY29uZmxpY3Qgd2l0aCBhbnkgb2YgdGhlIFRCQlIgcmVzZXJ2ZWQgT0lEcy4KKyAqLworI2RlZmluZSBQUk9UX1BLX09JRAkJCQkiMS4zLjYuMS40LjEuNDEyOC4yMTAwLjExMDIiCisKKyNlbmRpZiAvKiBEVUFMUk9PVF9PSURfSCAqLwpkaWZmIC0tZ2l0IGEvbWFrZV9oZWxwZXJzL3RiYnIvdGJicl90b29scy5tayBiL21ha2VfaGVscGVycy90YmJyL3RiYnJfdG9vbHMubWsKaW5kZXggOWM0N2NjNy4uZjBhZGZlMSAxMDA2NDQKLS0tIGEvbWFrZV9oZWxwZXJzL3RiYnIvdGJicl90b29scy5taworKysgYi9tYWtlX2hlbHBlcnMvdGJici90YmJyX3Rvb2xzLm1rCkBAIC0xLDUgKzEsNSBAQAogIwotIyBDb3B5cmlnaHQgKGMpIDIwMTUtMjAxOSwgQVJNIExpbWl0ZWQgYW5kIENvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDE1LTIwMjAsIEFSTSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UKICMKQEAgLTIzLDYgKzIzLDcgQEAKICMgICBLRVlfQUxHCiAjICAgS0VZX1NJWkUKICMgICBST1RfS0VZCisjICAgUFJPVF9LRVkKICMgICBUUlVTVEVEX1dPUkxEX0tFWQogIyAgIE5PTl9UUlVTVEVEX1dPUkxEX0tFWQogIyAgIFNDUF9CTDJfS0VZCkBAIC01Nyw2ICs1OCw3IEBACiAkKGlmICR7SEFTSF9BTEd9LCQoZXZhbCAkKGNhbGwgQ0VSVF9BRERfQ01EX09QVCwke0hBU0hfQUxHfSwtLWhhc2gtYWxnKSkpCiAkKGlmICR7Uk9UX0tFWX0sJChldmFsICQoY2FsbCBDRVJUX0FERF9DTURfT1BULCR7Uk9UX0tFWX0sLS1yb3Qta2V5KSkpCiAkKGlmICR7Uk9UX0tFWX0sJChldmFsICQoY2FsbCBDRVJUX0FERF9DTURfT1BULCR7Uk9UX0tFWX0sLS1yb3Qta2V5LEZXVV8pKSkKKyQoaWYgJHtQUk9UX0tFWX0sJChldmFsICQoY2FsbCBDRVJUX0FERF9DTURfT1BULCR7UFJPVF9LRVl9LC0tcHJvdC1rZXkpKSkKICQoaWYgJHtUUlVTVEVEX1dPUkxEX0tFWX0sJChldmFsICQoY2FsbCBDRVJUX0FERF9DTURfT1BULCR7VFJVU1RFRF9XT1JMRF9LRVl9LC0tdHJ1c3RlZC13b3JsZC1rZXkpKSkKICQoaWYgJHtOT05fVFJVU1RFRF9XT1JMRF9LRVl9LCQoZXZhbCAkKGNhbGwgQ0VSVF9BRERfQ01EX09QVCwke05PTl9UUlVTVEVEX1dPUkxEX0tFWX0sLS1ub24tdHJ1c3RlZC13b3JsZC1rZXkpKSkKIApAQCAtOTMsNSArOTUsNyBAQAogaWZuZXEgKCR7QkwzM30sKQogICAgICQoaWYgJHtCTDMzX0tFWX0sJChldmFsICQoY2FsbCBDRVJUX0FERF9DTURfT1BULCR7QkwzM19LRVl9LC0tbnQtZncta2V5KSkpCiAgICAgJChldmFsICQoY2FsbCBUT09MX0FERF9QQVlMT0FELCR7QlVJTERfUExBVH0vbnRfZndfY29udGVudC5jcnQsLS1udC1mdy1jZXJ0KSkKK2lmbmVxICgke0NPVH0sZHVhbHJvb3QpCiAgICAgJChldmFsICQoY2FsbCBUT09MX0FERF9QQVlMT0FELCR7QlVJTERfUExBVH0vbnRfZndfa2V5LmNydCwtLW50LWZ3LWtleS1jZXJ0KSkKIGVuZGlmCitlbmRpZgpkaWZmIC0tZ2l0IGEvcGxhdC9hcm0vYm9hcmQvY29tbW9uL2JvYXJkX2FybV90cnVzdGVkX2Jvb3QuYyBiL3BsYXQvYXJtL2JvYXJkL2NvbW1vbi9ib2FyZF9hcm1fdHJ1c3RlZF9ib290LmMKaW5kZXggM2MxOTIzMC4uMzhjYmJhOSAxMDA2NDQKLS0tIGEvcGxhdC9hcm0vYm9hcmQvY29tbW9uL2JvYXJkX2FybV90cnVzdGVkX2Jvb3QuYworKysgYi9wbGF0L2FybS9ib2FyZC9jb21tb24vYm9hcmRfYXJtX3RydXN0ZWRfYm9vdC5jCkBAIC0xNiw4ICsxNiwxMiBAQAogI2luY2x1ZGUgPHBsYXQvY29tbW9uL2NvbW1vbl9kZWYuaD4KICNpbmNsdWRlIDxwbGF0L2NvbW1vbi9wbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHBsYXRmb3JtX2RlZi5oPgotI2luY2x1ZGUgPHRvb2xzX3NoYXJlL3RiYnJfb2lkLmg+CiAKKyNpZiBkZWZpbmVkKEFSTV9DT1RfdGJicikKKyNpbmNsdWRlIDx0b29sc19zaGFyZS90YmJyX29pZC5oPgorI2VsaWYgZGVmaW5lZChBUk1fQ09UX2R1YWxyb290KQorI2luY2x1ZGUgPHRvb2xzX3NoYXJlL2R1YWxyb290X29pZC5oPgorI2VuZGlmCiAKICNpZiAhQVJNX0NSWVBUT0NFTExfSU5URUcKICNpZiAhQVJNX1JPVFBLX0xPQ0FUSU9OX0lECkBAIC0xMDgsMTAgKzExMiwxMCBAQAogI2VuZGlmCiAKIC8qCi0gKiBXcmFwZXIgZnVuY3Rpb24gZm9yIG1vc3QgQXJtIHBsYXRmb3JtcyB0byBnZXQgUk9UUEsgaGFzaC4KKyAqIFdyYXBwZXIgZnVuY3Rpb24gZm9yIG1vc3QgQXJtIHBsYXRmb3JtcyB0byBnZXQgUk9UUEsgaGFzaC4KICAqLwotaW50IGFybV9nZXRfcm90cGtfaW5mbyh2b2lkICoqa2V5X3B0ciwgdW5zaWduZWQgaW50ICprZXlfbGVuLAotCQkJdW5zaWduZWQgaW50ICpmbGFncykKK3N0YXRpYyBpbnQgZ2V0X3JvdHBrX2luZm8odm9pZCAqKmtleV9wdHIsIHVuc2lnbmVkIGludCAqa2V5X2xlbiwKKwkJCQl1bnNpZ25lZCBpbnQgKmZsYWdzKQogewogI2lmIEFSTV9DUllQVE9DRUxMX0lOVEVHCiAJcmV0dXJuIGFybV9nZXRfcm90cGtfaW5mb19jYyhrZXlfcHRyLCBrZXlfbGVuLCBmbGFncyk7CkBAIC0xMjUsMTAgKzEyOSw0NCBAQAogI2Vsc2UKIAlyZXR1cm4gMTsKICNlbmRpZgotCiAjZW5kaWYgLyogQVJNX0NSWVBUT0NFTExfSU5URUcgKi8KIH0KIAorI2lmIGRlZmluZWQoQVJNX0NPVF90YmJyKQorCitpbnQgYXJtX2dldF9yb3Rwa19pbmZvKHZvaWQgKmNvb2tpZSBfX3VudXNlZCwgdm9pZCAqKmtleV9wdHIsCisJCSAgICAgICB1bnNpZ25lZCBpbnQgKmtleV9sZW4sIHVuc2lnbmVkIGludCAqZmxhZ3MpCit7CisJcmV0dXJuIGdldF9yb3Rwa19pbmZvKGtleV9wdHIsIGtleV9sZW4sIGZsYWdzKTsKK30KKworI2VsaWYgZGVmaW5lZChBUk1fQ09UX2R1YWxyb290KQorCitpbnQgYXJtX2dldF9yb3Rwa19pbmZvKHZvaWQgKmNvb2tpZSwgdm9pZCAqKmtleV9wdHIsIHVuc2lnbmVkIGludCAqa2V5X2xlbiwKKwkJICAgICAgIHVuc2lnbmVkIGludCAqZmxhZ3MpCit7CisJLyoKKwkgKiBSZXR1cm4gdGhlIHJpZ2h0IHJvb3Qgb2YgdHJ1c3Qga2V5IGhhc2ggYmFzZWQgb24gdGhlIGNvb2tpZSB2YWx1ZToKKwkgKiAgLSBOVUxMIG1lYW5zIHRoZSBwcmltYXJ5IFJPVFBLLgorCSAqICAtIE90aGVyd2lzZSwgaW50ZXJwcmV0IGNvb2tpZSBhcyB0aGUgT0lEIG9mIHRoZSBjZXJ0aWZpY2F0ZQorCSAqICAgIGV4dGVuc2lvbiBjb250YWluaW5nIHRoZSBrZXkuCisJICovCisJaWYgKGNvb2tpZSA9PSBOVUxMKSB7CisJCXJldHVybiBnZXRfcm90cGtfaW5mbyhrZXlfcHRyLCBrZXlfbGVuLCBmbGFncyk7CisJfSBlbHNlIGlmIChzdHJjbXAoY29va2llLCBQUk9UX1BLX09JRCkgPT0gMCkgeworCQlleHRlcm4gdW5zaWduZWQgY2hhciBhcm1fcHJvdHBrX2hhc2hbXTsKKwkJZXh0ZXJuIHVuc2lnbmVkIGNoYXIgYXJtX3Byb3Rwa19oYXNoX2VuZFtdOworCQkqa2V5X3B0ciA9IGFybV9wcm90cGtfaGFzaDsKKwkJKmtleV9sZW4gPSBhcm1fcHJvdHBrX2hhc2hfZW5kIC0gYXJtX3Byb3Rwa19oYXNoOworCQkqZmxhZ3MgPSBST1RQS19JU19IQVNIOworCQlyZXR1cm4gMDsKKwl9IGVsc2UgeworCQkvKiBJbnZhbGlkIGtleSBJRC4gKi8KKwkJcmV0dXJuIDE7CisJfQorfQorI2VuZGlmCisKIC8qCiAgKiBSZXR1cm4gdGhlIG5vbi12b2xhdGlsZSBjb3VudGVyIHZhbHVlIHN0b3JlZCBpbiB0aGUgcGxhdGZvcm0uIFRoZSBjb29raWUKICAqIHdpbGwgY29udGFpbiB0aGUgT0lEIG9mIHRoZSBjb3VudGVyIGluIHRoZSBjZXJ0aWZpY2F0ZS4KZGlmZiAtLWdpdCBhL3BsYXQvYXJtL2JvYXJkL2NvbW1vbi9ib2FyZF9jb21tb24ubWsgYi9wbGF0L2FybS9ib2FyZC9jb21tb24vYm9hcmRfY29tbW9uLm1rCmluZGV4IDQ1OTE1NmIuLjE4ODVhNjAgMTAwNjQ0Ci0tLSBhL3BsYXQvYXJtL2JvYXJkL2NvbW1vbi9ib2FyZF9jb21tb24ubWsKKysrIGIvcGxhdC9hcm0vYm9hcmQvY29tbW9uL2JvYXJkX2NvbW1vbi5tawpAQCAtNjgsNCArNjgsMjUgQEAKIEJMMl9TT1VSQ0VTCQkrPQlwbGF0L2FybS9ib2FyZC9jb21tb24vYm9hcmRfYXJtX3RydXN0ZWRfYm9vdC5jIFwKIAkJCQlwbGF0L2FybS9ib2FyZC9jb21tb24vcm90cGsvYXJtX2Rldl9yb3Rway5TCiAKKyMgQWxsb3dzIHBsYXRmb3JtIGNvZGUgdG8gcHJvdmlkZSBpbXBsZW1lbnRhdGlvbiB2YXJpYW50cyBkZXBlbmRpbmcgb24gdGhlCisjIHNlbGVjdGVkIGNoYWluIG9mIHRydXN0LgorJChldmFsICQoY2FsbCBhZGRfZGVmaW5lLEFSTV9DT1RfJHtDT1R9KSkKKworaWZlcSAoJHtDT1R9LGR1YWxyb290KQorIyBQbGF0Zm9ybSBSb290IG9mIFRydXN0IGtleSBmaWxlcy4KK0FSTV9QUk9UX0tFWQkJOj0JcGxhdC9hcm0vYm9hcmQvY29tbW9uL3Byb3Rway9hcm1fcHJvdHByaXZrX3JzYS5wZW0KK0FSTV9QUk9UUEtfSEFTSAkJOj0JcGxhdC9hcm0vYm9hcmQvY29tbW9uL3Byb3Rway9hcm1fcHJvdHBrX3JzYV9zaGEyNTYuYmluCisKKyMgUHJvdmlkZSB0aGUgcHJpdmF0ZSBrZXkgdG8gY2VydF9jcmVhdGUgdG9vbC4gSXQgbmVlZHMgaXQgdG8gc2lnbiB0aGUgaW1hZ2VzLgorUFJPVF9LRVkJCTo9CSR7QVJNX1BST1RfS0VZfQorCiskKGV2YWwgJChjYWxsIGFkZF9kZWZpbmVfdmFsLEFSTV9QUk9UUEtfSEFTSCwnIiQoQVJNX1BST1RQS19IQVNIKSInKSkKKworQkwxX1NPVVJDRVMJCSs9CXBsYXQvYXJtL2JvYXJkL2NvbW1vbi9wcm90cGsvYXJtX2Rldl9wcm90cGsuUworQkwyX1NPVVJDRVMJCSs9CXBsYXQvYXJtL2JvYXJkL2NvbW1vbi9wcm90cGsvYXJtX2Rldl9wcm90cGsuUworCiskKEJVSUxEX1BMQVQpL2JsMS9hcm1fZGV2X3Byb3Rway5vOiAkKEFSTV9QUk9UUEtfSEFTSCkKKyQoQlVJTERfUExBVCkvYmwyL2FybV9kZXZfcHJvdHBrLm86ICQoQVJNX1BST1RQS19IQVNIKQorZW5kaWYKKwogZW5kaWYKZGlmZiAtLWdpdCBhL3BsYXQvYXJtL2JvYXJkL2NvbW1vbi9wcm90cGsvUkVBRE1FIGIvcGxhdC9hcm0vYm9hcmQvY29tbW9uL3Byb3Rway9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2FjYTE4MAotLS0gL2Rldi9udWxsCisrKyBiL3BsYXQvYXJtL2JvYXJkL2NvbW1vbi9wcm90cGsvUkVBRE1FCkBAIC0wLDAgKzEsMTQgQEAKK1RoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIHNvbWUgZGV2ZWxvcG1lbnQga2V5cyB0byBiZSB1c2VkIGFzIHRoZSBwbGF0Zm9ybQorcm9vdC1vZi10cnVzdCBrZXkuCisKKyogYXJtX3Byb3Rwcml2a19yc2EucGVtIGlzIGEgMksgUlNBIHByaXZhdGUga2V5IGluIFBFTSBmb3JtYXQuIEl0IGhhcyBiZWVuCisgIGdlbmVyYXRlZCB1c2luZyB0aGUgb3BlbnNzbCBjb21tYW5kIGxpbmUgdG9vbDoKKworICBvcGVuc3NsIGdlbnJzYSAyMDQ4ID4gYXJtX3Byb3Rwcml2a19yc2EucGVtCisKKyogYXJtX3Byb3Rwa19yc2Ffc2hhMjU2LmJpbiBpcyB0aGUgU0hBLTI1NiBoYXNoIG9mIHRoZSBERVItZW5jb2RlZCBwdWJsaWMga2V5CisgIGFzc29jaWF0ZWQgd2l0aCB0aGUgYWJvdmUgcHJpdmF0ZSBrZXkuIEl0IGhhcyBiZWVuIGdlbmVyYXRlZCB1c2luZyB0aGUgb3BlbnNzbAorICBjb21tYW5kIGxpbmUgdG9vbDoKKworICBvcGVuc3NsIHJzYSAtaW4gYXJtX3Byb3Rwcml2a19yc2EucGVtIC1wdWJvdXQgLW91dGZvcm0gREVSIHwgXAorICAgIG9wZW5zc2wgZGdzdCAtc2hhMjU2IC1iaW5hcnkgPiBhcm1fcHJvdHBrX3JzYV9zaGEyNTYuYmluCmRpZmYgLS1naXQgYS9wbGF0L2FybS9ib2FyZC9jb21tb24vcHJvdHBrL2FybV9kZXZfcHJvdHBrLlMgYi9wbGF0L2FybS9ib2FyZC9jb21tb24vcHJvdHBrL2FybV9kZXZfcHJvdHBrLlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY4OGNiYgotLS0gL2Rldi9udWxsCisrKyBiL3BsYXQvYXJtL2JvYXJkL2NvbW1vbi9wcm90cGsvYXJtX2Rldl9wcm90cGsuUwpAQCAtMCwwICsxLDE4IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDIwLCBBcm0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlCisgKi8KKworCS5nbG9iYWwgYXJtX3Byb3Rwa19oYXNoCisJLmdsb2JhbCBhcm1fcHJvdHBrX2hhc2hfZW5kCisKKwkuc2VjdGlvbiAucm9kYXRhLmFybV9wcm90cGtfaGFzaCwgImEiCisKK2FybV9wcm90cGtfaGFzaDoKKwkvKiBERVIgaGVhZGVyLiAqLworCS5ieXRlIDB4MzAsIDB4MzEsIDB4MzAsIDB4MEQsIDB4MDYsIDB4MDksIDB4NjAsIDB4ODYsIDB4NDgKKwkuYnl0ZSAweDAxLCAweDY1LCAweDAzLCAweDA0LCAweDAyLCAweDAxLCAweDA1LCAweDAwLCAweDA0LCAweDIwCisJLyogS2V5IGhhc2guICovCisJLmluY2JpbiBBUk1fUFJPVFBLX0hBU0gKK2FybV9wcm90cGtfaGFzaF9lbmQ6CmRpZmYgLS1naXQgYS9wbGF0L2FybS9ib2FyZC9jb21tb24vcHJvdHBrL2FybV9wcm90cGtfcnNhX3NoYTI1Ni5iaW4gYi9wbGF0L2FybS9ib2FyZC9jb21tb24vcHJvdHBrL2FybV9wcm90cGtfcnNhX3NoYTI1Ni5iaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg3ZGE2NgotLS0gL2Rldi9udWxsCisrKyBiL3BsYXQvYXJtL2JvYXJkL2NvbW1vbi9wcm90cGsvYXJtX3Byb3Rwa19yc2Ffc2hhMjU2LmJpbgpAQCAtMCwwICsxIEBACiucG/M2HxF7VyqFYAafdO12Zde3p+ijHQmAvlCexkt7OQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3BsYXQvYXJtL2JvYXJkL2NvbW1vbi9wcm90cGsvYXJtX3Byb3Rwcml2a19yc2EucGVtIGIvcGxhdC9hcm0vYm9hcmQvY29tbW9uL3Byb3Rway9hcm1fcHJvdHByaXZrX3JzYS5wZW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWVhYWQ5ZQotLS0gL2Rldi9udWxsCisrKyBiL3BsYXQvYXJtL2JvYXJkL2NvbW1vbi9wcm90cGsvYXJtX3Byb3Rwcml2a19yc2EucGVtCkBAIC0wLDAgKzEsMjcgQEAKKy0tLS0tQkVHSU4gUlNBIFBSSVZBVEUgS0VZLS0tLS0KK01JSUVvd0lCQUFLQ0FRRUF6UjBoL1o0VXAxN3dmdVJsWXJVV3NlR0RtbEdLcGwxUGZsR2lZYnlWbUk3UHdUVHAKK3kvVDc3RWlsakdwNTJzdUxXbnRIc2MwbGVlNTBwVzE2RFUyYzViVmZteW9mYXUzR2pKMVlxdzVYRkFhaHI2ZU0KKy8wbWtOOHV0cmV2dmNSVDlDUDA3RCt6ZGhiL1dsUlVBbmVkcXIvQVVIVThCWFMrQnhlOFAwWjBaNytES2pZWnAKK3Roelh4c2pLTTAyQkZGek53eVZybHlCRkRrVy81M0E0TStkcG11V0RqQUdDSkg4OFcvdTBMZG1MY2lpMTFJekQKKy9PZno4SnhjL1pocUwrOUZGSzRxVStBSnA4eVhBbkFDU0I0NkRsTmx0SnJvZGUweTV0bVBodFMzN1pGN0VGYjgKK1VaV3daVmd0dVF5dXl6OVJZVVM2anRpR3VxNnM4R2xSd2pUZTd3SURBUUFCQW9JQkFGb1dJWWV5bG4rc1F4UjQKK1c4OHVtZmttZ3hhVUdjRlgya0l3dUpFVXN0OStXZUVSekYyNEM2MkxlcXBoV1lPdlFsVkxNQUgzaUM0MWZTWHIKK0gyQVlab0M5V0hCZDM4Nm5BRDFpSGorQzNOdit6YVRJZ2pUZHN6S09Vb25BeGpsMGJtNDBTbXlFTEFkQ2FveXYKKzNNVjlqbTRYazc0THBSMjRiOWJ2V0pOSDNNeHR0SDloaVlTK24wSXplVFhEZk84R3JOdkhoOTJ6eCtqbzh5TW0KK0toaHUrVERDOWpBMnBIcEpjRi8wRVh4WU1od1lpUVQxNm5uSGIreE1nUzRKcGFsUWh2VkswMXM0VllHSFJvRmsKK0s2eGg0VElTMzM2TERMeWFsckdzUGxmTmZFZHgrRGltU2hESWZCVXg5SnAzUHAxMVRVUVV6NHJoSUhCOVdkZkcKK2I2YlY0d0VDZ1lFQStjZ1BTMlRRN1hRMVJKcTFTN09HZVB0Qlh2bm9IMjI2S3dHUzZGZXk4ODM4dEx4YmJsaW0KK01VK0VPWXMzTzY2VjZVMllwem1JYWtYbzgwMzBrOHRoWStqS2JabDNsMG0vaE11UE9HNjZoZkU1aTdkWXNpUDQKK2F0b2s1d0ZpTmVOWVlqSE1FYXl6azUzTWhHOEVPaDM2bXNBTzdvaEttZW5PTlVCQTdwazZ5VGtDZ1lFQTBqaGsKK0hQc2h3aSt3S2t4K0pMVG51b0VneDQwdGtSZ1NGMnhCcUtzc01UYXNhUW1YOHFHK3c5Q0VzMFI4blpDSTcwVmMKK3RYU0ZjaWRqZGtIVVZFMldzeWdJRnVTMXRic0FucGF4dG4zRTZyamllMzBYL1oyODArVFYwSGpSMEVNRVRtd2wKK1NoQzVsWjBvUDNMcEVaZmpiUjVxczJrRlc0TU94QTd0alFWYU1XY0NnWUVBNVpiVk1CaWZ6ZE1sNzBSQTVpOUMKK3FFdFNRQWwzS2dSQ3ZhcjVyS1NIc1graUMwS2l5OStpQ3VzcS8zV09ORVo2TnZNRElKcEtZRnlZRGFPVzdvNWYKK20yVHJSQ2h1KzFsbk41bWZzR0JmQkNUQkgwSk12WmxBaW42dXNzTGIwZXFCWCtpanlZOHpsTGpUdHRzUVNKY3IKK3RUaFp3VGozVVZmT0diWlF1TCtSZ0VrQ2dZQlhPM1UzblhJOXZVSXgyem9CQzF5WlJOb1FWR0lUTWxUWGlXR1oKK2x5WW9hZEtUWjVxNDRTdGk0QlVndW91bmFvR1lJRVUvT3RIaE03MFBKblB3WTUza1MvbEhYcktVYmJ2dEV3VTkKK2YrVUZyYUMxczR3UC9yT0xqZ3EzamxzcU81VCs0ZHQ3WjROTE5VS3RTWWF6ZVQ2eldnclcxZjZXSWNVdjBDMzgKKzlicWVnd0tCZ0ZDSzNPYTVpYkw1c1BhUFEvMVVmZGVXNEpWdXU2QTRKaEhTN3IrY1ZMc21jcnZFMVF2N1djdncKK0I1YXFYZXFMdTJkdElOOC9mKyszdHpjY3M5TFhLWS9maDcyRDRUVmpmcnFPU1Nab0dUSDlsNFU1TlhicVdNM0kKK3Nra0FZYjJiTVNUL2QxcVN5WWVzZ1hWTkFsYVFIUmgzdkV6OHg4NTNuSjN2OU9GajgvclcKKy0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCmRpZmYgLS1naXQgYS9wbGF0L2FybS9ib2FyZC9mdnAvZnZwX3RydXN0ZWRfYm9vdC5jIGIvcGxhdC9hcm0vYm9hcmQvZnZwL2Z2cF90cnVzdGVkX2Jvb3QuYwppbmRleCBhMDliODBlLi44ODI1MTk4IDEwMDY0NAotLS0gYS9wbGF0L2FybS9ib2FyZC9mdnAvZnZwX3RydXN0ZWRfYm9vdC5jCisrKyBiL3BsYXQvYXJtL2JvYXJkL2Z2cC9mdnBfdHJ1c3RlZF9ib290LmMKQEAgLTMwLDcgKzMwLDcgQEAKIGludCBwbGF0X2dldF9yb3Rwa19pbmZvKHZvaWQgKmNvb2tpZSwgdm9pZCAqKmtleV9wdHIsIHVuc2lnbmVkIGludCAqa2V5X2xlbiwKIAkJCXVuc2lnbmVkIGludCAqZmxhZ3MpCiB7Ci0JcmV0dXJuIGFybV9nZXRfcm90cGtfaW5mbyhrZXlfcHRyLCBrZXlfbGVuLCBmbGFncyk7CisJcmV0dXJuIGFybV9nZXRfcm90cGtfaW5mbyhjb29raWUsIGtleV9wdHIsIGtleV9sZW4sIGZsYWdzKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3BsYXQvYXJtL2JvYXJkL3JkZTFlZGdlL3JkZTFlZGdlX3RydXN0ZWRfYm9vdC5jIGIvcGxhdC9hcm0vYm9hcmQvcmRlMWVkZ2UvcmRlMWVkZ2VfdHJ1c3RlZF9ib290LmMKaW5kZXggYzI3MWY3Zi4uNDU5MmI4ZiAxMDA2NDQKLS0tIGEvcGxhdC9hcm0vYm9hcmQvcmRlMWVkZ2UvcmRlMWVkZ2VfdHJ1c3RlZF9ib290LmMKKysrIGIvcGxhdC9hcm0vYm9hcmQvcmRlMWVkZ2UvcmRlMWVkZ2VfdHJ1c3RlZF9ib290LmMKQEAgLTIyLDUgKzIyLDUgQEAKIGludCBwbGF0X2dldF9yb3Rwa19pbmZvKHZvaWQgKmNvb2tpZSwgdm9pZCAqKmtleV9wdHIsIHVuc2lnbmVkIGludCAqa2V5X2xlbiwKIAkJCXVuc2lnbmVkIGludCAqZmxhZ3MpCiB7Ci0JcmV0dXJuIGFybV9nZXRfcm90cGtfaW5mbyhrZXlfcHRyLCBrZXlfbGVuLCBmbGFncyk7CisJcmV0dXJuIGFybV9nZXRfcm90cGtfaW5mbyhjb29raWUsIGtleV9wdHIsIGtleV9sZW4sIGZsYWdzKTsKIH0KZGlmZiAtLWdpdCBhL3BsYXQvYXJtL2JvYXJkL3JkbjFlZGdlL3JkbjFlZGdlX3RydXN0ZWRfYm9vdC5jIGIvcGxhdC9hcm0vYm9hcmQvcmRuMWVkZ2UvcmRuMWVkZ2VfdHJ1c3RlZF9ib290LmMKaW5kZXggYzI3MWY3Zi4uNDU5MmI4ZiAxMDA2NDQKLS0tIGEvcGxhdC9hcm0vYm9hcmQvcmRuMWVkZ2UvcmRuMWVkZ2VfdHJ1c3RlZF9ib290LmMKKysrIGIvcGxhdC9hcm0vYm9hcmQvcmRuMWVkZ2UvcmRuMWVkZ2VfdHJ1c3RlZF9ib290LmMKQEAgLTIyLDUgKzIyLDUgQEAKIGludCBwbGF0X2dldF9yb3Rwa19pbmZvKHZvaWQgKmNvb2tpZSwgdm9pZCAqKmtleV9wdHIsIHVuc2lnbmVkIGludCAqa2V5X2xlbiwKIAkJCXVuc2lnbmVkIGludCAqZmxhZ3MpCiB7Ci0JcmV0dXJuIGFybV9nZXRfcm90cGtfaW5mbyhrZXlfcHRyLCBrZXlfbGVuLCBmbGFncyk7CisJcmV0dXJuIGFybV9nZXRfcm90cGtfaW5mbyhjb29raWUsIGtleV9wdHIsIGtleV9sZW4sIGZsYWdzKTsKIH0KZGlmZiAtLWdpdCBhL3BsYXQvYXJtL2JvYXJkL3NnaTU3NS9zZ2k1NzVfdHJ1c3RlZF9ib290LmMgYi9wbGF0L2FybS9ib2FyZC9zZ2k1NzUvc2dpNTc1X3RydXN0ZWRfYm9vdC5jCmluZGV4IGMyNzFmN2YuLjQ1OTJiOGYgMTAwNjQ0Ci0tLSBhL3BsYXQvYXJtL2JvYXJkL3NnaTU3NS9zZ2k1NzVfdHJ1c3RlZF9ib290LmMKKysrIGIvcGxhdC9hcm0vYm9hcmQvc2dpNTc1L3NnaTU3NV90cnVzdGVkX2Jvb3QuYwpAQCAtMjIsNSArMjIsNSBAQAogaW50IHBsYXRfZ2V0X3JvdHBrX2luZm8odm9pZCAqY29va2llLCB2b2lkICoqa2V5X3B0ciwgdW5zaWduZWQgaW50ICprZXlfbGVuLAogCQkJdW5zaWduZWQgaW50ICpmbGFncykKIHsKLQlyZXR1cm4gYXJtX2dldF9yb3Rwa19pbmZvKGtleV9wdHIsIGtleV9sZW4sIGZsYWdzKTsKKwlyZXR1cm4gYXJtX2dldF9yb3Rwa19pbmZvKGNvb2tpZSwga2V5X3B0ciwga2V5X2xlbiwgZmxhZ3MpOwogfQpkaWZmIC0tZ2l0IGEvcGxhdC9hcm0vYm9hcmQvc2dtNzc1L3NnbTc3NV90cnVzdGVkX2Jvb3QuYyBiL3BsYXQvYXJtL2JvYXJkL3NnbTc3NS9zZ203NzVfdHJ1c3RlZF9ib290LmMKaW5kZXggYzI3MWY3Zi4uNDU5MmI4ZiAxMDA2NDQKLS0tIGEvcGxhdC9hcm0vYm9hcmQvc2dtNzc1L3NnbTc3NV90cnVzdGVkX2Jvb3QuYworKysgYi9wbGF0L2FybS9ib2FyZC9zZ203NzUvc2dtNzc1X3RydXN0ZWRfYm9vdC5jCkBAIC0yMiw1ICsyMiw1IEBACiBpbnQgcGxhdF9nZXRfcm90cGtfaW5mbyh2b2lkICpjb29raWUsIHZvaWQgKiprZXlfcHRyLCB1bnNpZ25lZCBpbnQgKmtleV9sZW4sCiAJCQl1bnNpZ25lZCBpbnQgKmZsYWdzKQogewotCXJldHVybiBhcm1fZ2V0X3JvdHBrX2luZm8oa2V5X3B0ciwga2V5X2xlbiwgZmxhZ3MpOworCXJldHVybiBhcm1fZ2V0X3JvdHBrX2luZm8oY29va2llLCBrZXlfcHRyLCBrZXlfbGVuLCBmbGFncyk7CiB9CmRpZmYgLS1naXQgYS9wbGF0L2FybS9jb21tb24vYXJtX2NvbW1vbi5tayBiL3BsYXQvYXJtL2NvbW1vbi9hcm1fY29tbW9uLm1rCmluZGV4IDRmYjg1ZmIuLjY1ZjZiZjMgMTAwNjQ0Ci0tLSBhL3BsYXQvYXJtL2NvbW1vbi9hcm1fY29tbW9uLm1rCisrKyBiL3BsYXQvYXJtL2NvbW1vbi9hcm1fY29tbW9uLm1rCkBAIC0yOTcsNiArMjk3LDggQEAKICAgICAjIEluY2x1ZGUgdGhlIHNlbGVjdGVkIGNoYWluIG9mIHRydXN0IHNvdXJjZXMuCiAgICAgaWZlcSAoJHtDT1R9LHRiYnIpCiAgICAgICAgIEFVVEhfU09VUkNFUwkrPQlkcml2ZXJzL2F1dGgvdGJici90YmJyX2NvdC5jCisgICAgZWxzZSBpZmVxICgke0NPVH0sZHVhbHJvb3QpCisgICAgICAgIEFVVEhfU09VUkNFUwkrPQlkcml2ZXJzL2F1dGgvZHVhbHJvb3QvY290LmMKICAgICBlbHNlCiAgICAgICAgICQoZXJyb3IgVW5rbm93biBjaGFpbiBvZiB0cnVzdCAke0NPVH0pCiAgICAgZW5kaWYKZGlmZiAtLWdpdCBhL3Rvb2xzL2NlcnRfY3JlYXRlL01ha2VmaWxlIGIvdG9vbHMvY2VydF9jcmVhdGUvTWFrZWZpbGUKaW5kZXggZWZmOTI5ZS4uMTlmNzM2ZiAxMDA2NDQKLS0tIGEvdG9vbHMvY2VydF9jcmVhdGUvTWFrZWZpbGUKKysrIGIvdG9vbHMvY2VydF9jcmVhdGUvTWFrZWZpbGUKQEAgLTI3LDYgKzI3LDggQEAKICMgQ2hhaW4gb2YgdHJ1c3QuCiBpZmVxICgke0NPVH0sdGJicikKICAgaW5jbHVkZSBzcmMvdGJici90YmJyLm1rCitlbHNlIGlmZXEgKCR7Q09UfSxkdWFscm9vdCkKKyAgaW5jbHVkZSBzcmMvZHVhbHJvb3QvY290Lm1rCiBlbHNlCiAgICQoZXJyb3IgVW5rbm93biBjaGFpbiBvZiB0cnVzdCAke0NPVH0pCiBlbmRpZgpkaWZmIC0tZ2l0IGEvdG9vbHMvY2VydF9jcmVhdGUvaW5jbHVkZS9kdWFscm9vdC9jb3QuaCBiL3Rvb2xzL2NlcnRfY3JlYXRlL2luY2x1ZGUvZHVhbHJvb3QvY290LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTcwMTIwNgotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL2NlcnRfY3JlYXRlL2luY2x1ZGUvZHVhbHJvb3QvY290LmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMCwgQXJtIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQorICovCisKKyNpZm5kZWYgRFVBTFJPT1RfQ09UX0gKKyNkZWZpbmUgRFVBTFJPT1RfQ09UX0gKKworLyogQ2VydGlmaWNhdGVzLiAqLworZW51bSB7CisJLyogQ2VydGlmaWNhdGVzIG93bmVkIGJ5IHRoZSBzaWxpY29uIHByb3ZpZGVyLiAqLworCVRSVVNURURfQk9PVF9GV19DRVJULAorCVRSVVNURURfS0VZX0NFUlQsCisJU0NQX0ZXX0tFWV9DRVJULAorCVNDUF9GV19DT05URU5UX0NFUlQsCisJU09DX0ZXX0tFWV9DRVJULAorCVNPQ19GV19DT05URU5UX0NFUlQsCisJVFJVU1RFRF9PU19GV19LRVlfQ0VSVCwKKwlUUlVTVEVEX09TX0ZXX0NPTlRFTlRfQ0VSVCwKKwlGV1VfQ0VSVCwKKworCS8qIENlcnRpZmljYXRlcyBvd25lZCBieSB0aGUgcGxhdGZvcm0gb3duZXIuICovCisJTk9OX1RSVVNURURfRldfQ09OVEVOVF9DRVJULAorfTsKKworLyogQ2VydGlmaWNhdGUgZXh0ZW5zaW9ucy4gKi8KK2VudW0geworCS8qIEV4dGVuc2lvbnMgdXNlZCBpbiBjZXJ0aWZpY2F0ZXMgb3duZWQgYnkgdGhlIHNpbGljb24gcHJvdmlkZXIuICovCisJVFJVU1RFRF9GV19OVkNPVU5URVJfRVhULAorCVRSVVNURURfQk9PVF9GV19IQVNIX0VYVCwKKwlUUlVTVEVEX0JPT1RfRldfQ09ORklHX0hBU0hfRVhULAorCUhXX0NPTkZJR19IQVNIX0VYVCwKKwlUUlVTVEVEX1dPUkxEX1BLX0VYVCwKKwlTQ1BfRldfQ09OVEVOVF9DRVJUX1BLX0VYVCwKKwlTQ1BfRldfSEFTSF9FWFQsCisJU09DX0ZXX0NPTlRFTlRfQ0VSVF9QS19FWFQsCisJU09DX0FQX0ZXX0hBU0hfRVhULAorCVNPQ19GV19DT05GSUdfSEFTSF9FWFQsCisJVFJVU1RFRF9PU19GV19DT05URU5UX0NFUlRfUEtfRVhULAorCVRSVVNURURfT1NfRldfSEFTSF9FWFQsCisJVFJVU1RFRF9PU19GV19FWFRSQTFfSEFTSF9FWFQsCisJVFJVU1RFRF9PU19GV19FWFRSQTJfSEFTSF9FWFQsCisJVFJVU1RFRF9PU19GV19DT05GSUdfSEFTSF9FWFQsCisJU0NQX0ZXVV9DRkdfSEFTSF9FWFQsCisJQVBfRldVX0NGR19IQVNIX0VYVCwKKwlGV1VfSEFTSF9FWFQsCisKKwkvKiBFeHRlbnNpb25zIHVzZWQgaW4gY2VydGlmaWNhdGVzIG93bmVkIGJ5IHRoZSBwbGF0Zm9ybSBvd25lci4gKi8KKwlQUk9UX1BLX0VYVCwKKwlOT05fVFJVU1RFRF9GV19OVkNPVU5URVJfRVhULAorCU5PTl9UUlVTVEVEX0ZXX0NPTlRFTlRfQ0VSVF9QS19FWFQsCisJTk9OX1RSVVNURURfV09STERfQk9PVExPQURFUl9IQVNIX0VYVCwKKwlOT05fVFJVU1RFRF9GV19DT05GSUdfSEFTSF9FWFQsCit9OworCisvKiBLZXlzLiAqLworZW51bSB7CisJLyogS2V5cyBvd25lZCBieSB0aGUgc2lsaWNvbiBwcm92aWRlci4gKi8KKwlST1RfS0VZLAorCVRSVVNURURfV09STERfS0VZLAorCVNDUF9GV19DT05URU5UX0NFUlRfS0VZLAorCVNPQ19GV19DT05URU5UX0NFUlRfS0VZLAorCVRSVVNURURfT1NfRldfQ09OVEVOVF9DRVJUX0tFWSwKKworCS8qIEtleXMgb3duZWQgYnkgdGhlIHBsYXRmb3JtIG93bmVyLiAqLworCVBST1RfS0VZLAorfTsKKworI2VuZGlmIC8qIERVQUxST09UX0NPVF9IICovCmRpZmYgLS1naXQgYS90b29scy9jZXJ0X2NyZWF0ZS9zcmMvZHVhbHJvb3QvY290LmMgYi90b29scy9jZXJ0X2NyZWF0ZS9zcmMvZHVhbHJvb3QvY290LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODExN2ZmYwotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL2NlcnRfY3JlYXRlL3NyYy9kdWFscm9vdC9jb3QuYwpAQCAtMCwwICsxLDQ1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMCwgQXJtIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQorICovCisKKyNpbmNsdWRlIDxkdWFscm9vdF9vaWQuaD4KKworI2luY2x1ZGUgImNlcnQuaCIKKyNpbmNsdWRlICJleHQuaCIKKyNpbmNsdWRlICJrZXkuaCIKKworI2luY2x1ZGUgImR1YWxyb290L2NvdC5oIgorCisvKgorICogQ2VydGlmaWNhdGVzIHVzZWQgaW4gdGhlIGNoYWluIG9mIHRydXN0LgorICoKKyAqIEFsbCBjZXJ0aWZpY2F0ZXMgYXJlIHNlbGYtc2lnbmVkIHNvIHRoZSBpc3N1ZXIgY2VydGlmaWNhdGUgZmllbGQgcG9pbnRzIHRvCisgKiBpdHNlbGYuCisgKi8KK3N0YXRpYyBjZXJ0X3QgY290X2NlcnRzW10gPSB7CisJW1RSVVNURURfQk9PVF9GV19DRVJUXSA9IHsKKwkJLmlkID0gVFJVU1RFRF9CT09UX0ZXX0NFUlQsCisJCS5vcHQgPSAidGItZnctY2VydCIsCisJCS5oZWxwX21zZyA9ICJUcnVzdGVkIEJvb3QgRlcgQ2VydGlmaWNhdGUgKG91dHB1dCBmaWxlKSIsCisJCS5jbiA9ICJUcnVzdGVkIEJvb3QgRlcgQ2VydGlmaWNhdGUiLAorCQkua2V5ID0gUk9UX0tFWSwKKwkJLmlzc3VlciA9IFRSVVNURURfQk9PVF9GV19DRVJULAorCQkuZXh0ID0geworCQkJVFJVU1RFRF9GV19OVkNPVU5URVJfRVhULAorCQkJVFJVU1RFRF9CT09UX0ZXX0hBU0hfRVhULAorCQkJVFJVU1RFRF9CT09UX0ZXX0NPTkZJR19IQVNIX0VYVCwKKwkJCUhXX0NPTkZJR19IQVNIX0VYVAorCQl9LAorCQkubnVtX2V4dCA9IDQKKwl9LAorCisJW1RSVVNURURfS0VZX0NFUlRdID0geworCQkuaWQgPSBUUlVTVEVEX0tFWV9DRVJULAorCQkub3B0ID0gInRydXN0ZWQta2V5LWNlcnQiLAorCQkuaGVscF9tc2cgPSAiVHJ1c3RlZCBLZXkgQ2VydGlmaWNhdGUgKG91dHB1dCBmaWxlKSIsCisJCS5jbiA9ICJUcnVzdGVkIEtleSBDZXJ0aWZpY2F0ZSIsCisJCS5rZXkgPSBST1RfS0VZLAorCQkuaXNzdWVyID0gVFJVU1RFRF9LRVlfQ0VSVCwKKwkJLmV4dCA9IHsKKwkJCVRSVVNURURfRldfTlZDT1VOVEVSX0VYVCwKKwkJCVRSVVNURURfV09STERfUEtfRVhULAorCQl9LAorCQkubnVtX2V4dCA9IDIKKwl9LAorCisJW1NDUF9GV19LRVlfQ0VSVF0gPSB7CisJCS5pZCA9IFNDUF9GV19LRVlfQ0VSVCwKKwkJLm9wdCA9ICJzY3AtZncta2V5LWNlcnQiLAorCQkuaGVscF9tc2cgPSAiU0NQIEZpcm13YXJlIEtleSBDZXJ0aWZpY2F0ZSAob3V0cHV0IGZpbGUpIiwKKwkJLmNuID0gIlNDUCBGaXJtd2FyZSBLZXkgQ2VydGlmaWNhdGUiLAorCQkua2V5ID0gVFJVU1RFRF9XT1JMRF9LRVksCisJCS5pc3N1ZXIgPSBTQ1BfRldfS0VZX0NFUlQsCisJCS5leHQgPSB7CisJCQlUUlVTVEVEX0ZXX05WQ09VTlRFUl9FWFQsCisJCQlTQ1BfRldfQ09OVEVOVF9DRVJUX1BLX0VYVAorCQl9LAorCQkubnVtX2V4dCA9IDIKKwl9LAorCisJW1NDUF9GV19DT05URU5UX0NFUlRdID0geworCQkuaWQgPSBTQ1BfRldfQ09OVEVOVF9DRVJULAorCQkub3B0ID0gInNjcC1mdy1jZXJ0IiwKKwkJLmhlbHBfbXNnID0gIlNDUCBGaXJtd2FyZSBDb250ZW50IENlcnRpZmljYXRlIChvdXRwdXQgZmlsZSkiLAorCQkuY24gPSAiU0NQIEZpcm13YXJlIENvbnRlbnQgQ2VydGlmaWNhdGUiLAorCQkua2V5ID0gU0NQX0ZXX0NPTlRFTlRfQ0VSVF9LRVksCisJCS5pc3N1ZXIgPSBTQ1BfRldfQ09OVEVOVF9DRVJULAorCQkuZXh0ID0geworCQkJVFJVU1RFRF9GV19OVkNPVU5URVJfRVhULAorCQkJU0NQX0ZXX0hBU0hfRVhUCisJCX0sCisJCS5udW1fZXh0ID0gMgorCX0sCisKKwlbU09DX0ZXX0tFWV9DRVJUXSA9IHsKKwkJLmlkID0gU09DX0ZXX0tFWV9DRVJULAorCQkub3B0ID0gInNvYy1mdy1rZXktY2VydCIsCisJCS5oZWxwX21zZyA9ICJTb0MgRmlybXdhcmUgS2V5IENlcnRpZmljYXRlIChvdXRwdXQgZmlsZSkiLAorCQkuY24gPSAiU29DIEZpcm13YXJlIEtleSBDZXJ0aWZpY2F0ZSIsCisJCS5rZXkgPSBUUlVTVEVEX1dPUkxEX0tFWSwKKwkJLmlzc3VlciA9IFNPQ19GV19LRVlfQ0VSVCwKKwkJLmV4dCA9IHsKKwkJCVRSVVNURURfRldfTlZDT1VOVEVSX0VYVCwKKwkJCVNPQ19GV19DT05URU5UX0NFUlRfUEtfRVhUCisJCX0sCisJCS5udW1fZXh0ID0gMgorCX0sCisKKwlbU09DX0ZXX0NPTlRFTlRfQ0VSVF0gPSB7CisJCS5pZCA9IFNPQ19GV19DT05URU5UX0NFUlQsCisJCS5vcHQgPSAic29jLWZ3LWNlcnQiLAorCQkuaGVscF9tc2cgPSAiU29DIEZpcm13YXJlIENvbnRlbnQgQ2VydGlmaWNhdGUgKG91dHB1dCBmaWxlKSIsCisJCS5jbiA9ICJTb0MgRmlybXdhcmUgQ29udGVudCBDZXJ0aWZpY2F0ZSIsCisJCS5rZXkgPSBTT0NfRldfQ09OVEVOVF9DRVJUX0tFWSwKKwkJLmlzc3VlciA9IFNPQ19GV19DT05URU5UX0NFUlQsCisJCS5leHQgPSB7CisJCQlUUlVTVEVEX0ZXX05WQ09VTlRFUl9FWFQsCisJCQlTT0NfQVBfRldfSEFTSF9FWFQsCisJCQlTT0NfRldfQ09ORklHX0hBU0hfRVhULAorCQl9LAorCQkubnVtX2V4dCA9IDMKKwl9LAorCisJW1RSVVNURURfT1NfRldfS0VZX0NFUlRdID0geworCQkuaWQgPSBUUlVTVEVEX09TX0ZXX0tFWV9DRVJULAorCQkub3B0ID0gInRvcy1mdy1rZXktY2VydCIsCisJCS5oZWxwX21zZyA9ICJUcnVzdGVkIE9TIEZpcm13YXJlIEtleSBDZXJ0aWZpY2F0ZSAob3V0cHV0IGZpbGUpIiwKKwkJLmNuID0gIlRydXN0ZWQgT1MgRmlybXdhcmUgS2V5IENlcnRpZmljYXRlIiwKKwkJLmtleSA9IFRSVVNURURfV09STERfS0VZLAorCQkuaXNzdWVyID0gVFJVU1RFRF9PU19GV19LRVlfQ0VSVCwKKwkJLmV4dCA9IHsKKwkJCVRSVVNURURfRldfTlZDT1VOVEVSX0VYVCwKKwkJCVRSVVNURURfT1NfRldfQ09OVEVOVF9DRVJUX1BLX0VYVAorCQl9LAorCQkubnVtX2V4dCA9IDIKKwl9LAorCisJW1RSVVNURURfT1NfRldfQ09OVEVOVF9DRVJUXSA9IHsKKwkJLmlkID0gVFJVU1RFRF9PU19GV19DT05URU5UX0NFUlQsCisJCS5vcHQgPSAidG9zLWZ3LWNlcnQiLAorCQkuaGVscF9tc2cgPSAiVHJ1c3RlZCBPUyBGaXJtd2FyZSBDb250ZW50IENlcnRpZmljYXRlIChvdXRwdXQgZmlsZSkiLAorCQkuY24gPSAiVHJ1c3RlZCBPUyBGaXJtd2FyZSBDb250ZW50IENlcnRpZmljYXRlIiwKKwkJLmtleSA9IFRSVVNURURfT1NfRldfQ09OVEVOVF9DRVJUX0tFWSwKKwkJLmlzc3VlciA9IFRSVVNURURfT1NfRldfQ09OVEVOVF9DRVJULAorCQkuZXh0ID0geworCQkJVFJVU1RFRF9GV19OVkNPVU5URVJfRVhULAorCQkJVFJVU1RFRF9PU19GV19IQVNIX0VYVCwKKwkJCVRSVVNURURfT1NfRldfRVhUUkExX0hBU0hfRVhULAorCQkJVFJVU1RFRF9PU19GV19FWFRSQTJfSEFTSF9FWFQsCisJCQlUUlVTVEVEX09TX0ZXX0NPTkZJR19IQVNIX0VYVCwKKwkJfSwKKwkJLm51bV9leHQgPSA1CisJfSwKKworCVtGV1VfQ0VSVF0gPSB7CisJCS5pZCA9IEZXVV9DRVJULAorCQkub3B0ID0gImZ3dS1jZXJ0IiwKKwkJLmhlbHBfbXNnID0gIkZpcm13YXJlIFVwZGF0ZSBDZXJ0aWZpY2F0ZSAob3V0cHV0IGZpbGUpIiwKKwkJLmNuID0gIkZpcm13YXJlIFVwZGF0ZSBDZXJ0aWZpY2F0ZSIsCisJCS5rZXkgPSBST1RfS0VZLAorCQkuaXNzdWVyID0gRldVX0NFUlQsCisJCS5leHQgPSB7CisJCQlTQ1BfRldVX0NGR19IQVNIX0VYVCwKKwkJCUFQX0ZXVV9DRkdfSEFTSF9FWFQsCisJCQlGV1VfSEFTSF9FWFQKKwkJfSwKKwkJLm51bV9leHQgPSAzCisJfSwKKworCVtOT05fVFJVU1RFRF9GV19DT05URU5UX0NFUlRdID0geworCQkuaWQgPSBOT05fVFJVU1RFRF9GV19DT05URU5UX0NFUlQsCisJCS5vcHQgPSAibnQtZnctY2VydCIsCisJCS5oZWxwX21zZyA9ICJOb24tVHJ1c3RlZCBGaXJtd2FyZSBDb250ZW50IENlcnRpZmljYXRlIChvdXRwdXQgZmlsZSkiLAorCQkuY24gPSAiTm9uLVRydXN0ZWQgRmlybXdhcmUgQ29udGVudCBDZXJ0aWZpY2F0ZSIsCisJCS5rZXkgPSBQUk9UX0tFWSwKKwkJLmlzc3VlciA9IE5PTl9UUlVTVEVEX0ZXX0NPTlRFTlRfQ0VSVCwKKwkJLmV4dCA9IHsKKwkJCU5PTl9UUlVTVEVEX0ZXX05WQ09VTlRFUl9FWFQsCisJCQlOT05fVFJVU1RFRF9XT1JMRF9CT09UTE9BREVSX0hBU0hfRVhULAorCQkJTk9OX1RSVVNURURfRldfQ09ORklHX0hBU0hfRVhULAorCQkJUFJPVF9QS19FWFQsCisJCX0sCisJCS5udW1fZXh0ID0gNAorCX0sCit9OworCitSRUdJU1RFUl9DT1QoY290X2NlcnRzKTsKKworCisvKiBDZXJ0aWZpY2F0ZSBleHRlbnNpb25zLiAqLworc3RhdGljIGV4dF90IGNvdF9leHRbXSA9IHsKKwlbVFJVU1RFRF9GV19OVkNPVU5URVJfRVhUXSA9IHsKKwkJLm9pZCA9IFRSVVNURURfRldfTlZDT1VOVEVSX09JRCwKKwkJLm9wdCA9ICJ0ZnctbnZjdHIiLAorCQkuaGVscF9tc2cgPSAiVHJ1c3RlZCBGaXJtd2FyZSBOb24tVm9sYXRpbGUgY291bnRlciB2YWx1ZSIsCisJCS5zbiA9ICJUcnVzdGVkV29ybGROVkNvdW50ZXIiLAorCQkubG4gPSAiVHJ1c3RlZCBXb3JsZCBOb24tVm9sYXRpbGUgY291bnRlciIsCisJCS5hc24xX3R5cGUgPSBWX0FTTjFfSU5URUdFUiwKKwkJLnR5cGUgPSBFWFRfVFlQRV9OVkNPVU5URVIsCisJCS5hdHRyLm52Y3RyX3R5cGUgPSBOVkNUUl9UWVBFX1RGVworCX0sCisKKwlbVFJVU1RFRF9CT09UX0ZXX0hBU0hfRVhUXSA9IHsKKwkJLm9pZCA9IFRSVVNURURfQk9PVF9GV19IQVNIX09JRCwKKwkJLm9wdCA9ICJ0Yi1mdyIsCisJCS5oZWxwX21zZyA9ICJUcnVzdGVkIEJvb3QgRmlybXdhcmUgaW1hZ2UgZmlsZSIsCisJCS5zbiA9ICJUcnVzdGVkQm9vdEZpcm13YXJlSGFzaCIsCisJCS5sbiA9ICJUcnVzdGVkIEJvb3QgRmlybXdhcmUgaGFzaCAoU0hBMjU2KSIsCisJCS5hc24xX3R5cGUgPSBWX0FTTjFfT0NURVRfU1RSSU5HLAorCQkudHlwZSA9IEVYVF9UWVBFX0hBU0gKKwl9LAorCisJW1RSVVNURURfQk9PVF9GV19DT05GSUdfSEFTSF9FWFRdID0geworCQkub2lkID0gVFJVU1RFRF9CT09UX0ZXX0NPTkZJR19IQVNIX09JRCwKKwkJLm9wdCA9ICJ0Yi1mdy1jb25maWciLAorCQkuaGVscF9tc2cgPSAiVHJ1c3RlZCBCb290IEZpcm13YXJlIENvbmZpZyBmaWxlIiwKKwkJLnNuID0gIlRydXN0ZWRCb290RmlybXdhcmVDb25maWdIYXNoIiwKKwkJLmxuID0gIlRydXN0ZWQgQm9vdCBGaXJtd2FyZSBDb25maWcgaGFzaCIsCisJCS5hc24xX3R5cGUgPSBWX0FTTjFfT0NURVRfU1RSSU5HLAorCQkudHlwZSA9IEVYVF9UWVBFX0hBU0gsCisJCS5vcHRpb25hbCA9IDEKKwl9LAorCisJW0hXX0NPTkZJR19IQVNIX0VYVF0gPSB7CisJCS5vaWQgPSBIV19DT05GSUdfSEFTSF9PSUQsCisJCS5vcHQgPSAiaHctY29uZmlnIiwKKwkJLmhlbHBfbXNnID0gIkhXIENvbmZpZyBmaWxlIiwKKwkJLnNuID0gIkhXQ29uZmlnSGFzaCIsCisJCS5sbiA9ICJIVyBDb25maWcgaGFzaCIsCisJCS5hc24xX3R5cGUgPSBWX0FTTjFfT0NURVRfU1RSSU5HLAorCQkudHlwZSA9IEVYVF9UWVBFX0hBU0gsCisJCS5vcHRpb25hbCA9IDEKKwl9LAorCisJW1RSVVNURURfV09STERfUEtfRVhUXSA9IHsKKwkJLm9pZCA9IFRSVVNURURfV09STERfUEtfT0lELAorCQkuc24gPSAiVHJ1c3RlZFdvcmxkUHVibGljS2V5IiwKKwkJLmxuID0gIlRydXN0ZWQgV29ybGQgUHVibGljIEtleSIsCisJCS5hc24xX3R5cGUgPSBWX0FTTjFfT0NURVRfU1RSSU5HLAorCQkudHlwZSA9IEVYVF9UWVBFX1BLRVksCisJCS5hdHRyLmtleSA9IFRSVVNURURfV09STERfS0VZCisJfSwKKworCVtTQ1BfRldfQ09OVEVOVF9DRVJUX1BLX0VYVF0gPSB7CisJCS5vaWQgPSBTQ1BfRldfQ09OVEVOVF9DRVJUX1BLX09JRCwKKwkJLnNuID0gIlNDUEZpcm13YXJlQ29udGVudENlcnRQSyIsCisJCS5sbiA9ICJTQ1AgRmlybXdhcmUgY29udGVudCBjZXJ0aWZpY2F0ZSBwdWJsaWMga2V5IiwKKwkJLmFzbjFfdHlwZSA9IFZfQVNOMV9PQ1RFVF9TVFJJTkcsCisJCS50eXBlID0gRVhUX1RZUEVfUEtFWSwKKwkJLmF0dHIua2V5ID0gU0NQX0ZXX0NPTlRFTlRfQ0VSVF9LRVkKKwl9LAorCisJW1NDUF9GV19IQVNIX0VYVF0gPSB7CisJCS5vaWQgPSBTQ1BfRldfSEFTSF9PSUQsCisJCS5vcHQgPSAic2NwLWZ3IiwKKwkJLmhlbHBfbXNnID0gIlNDUCBGaXJtd2FyZSBpbWFnZSBmaWxlIiwKKwkJLnNuID0gIlNDUEZpcm13YXJlSGFzaCIsCisJCS5sbiA9ICJTQ1AgRmlybXdhcmUgaGFzaCAoU0hBMjU2KSIsCisJCS5hc24xX3R5cGUgPSBWX0FTTjFfT0NURVRfU1RSSU5HLAorCQkudHlwZSA9IEVYVF9UWVBFX0hBU0gKKwl9LAorCisJW1NPQ19GV19DT05URU5UX0NFUlRfUEtfRVhUXSA9IHsKKwkJLm9pZCA9IFNPQ19GV19DT05URU5UX0NFUlRfUEtfT0lELAorCQkuc24gPSAiU29DRmlybXdhcmVDb250ZW50Q2VydFBLIiwKKwkJLmxuID0gIlNvQyBGaXJtd2FyZSBjb250ZW50IGNlcnRpZmljYXRlIHB1YmxpYyBrZXkiLAorCQkuYXNuMV90eXBlID0gVl9BU04xX09DVEVUX1NUUklORywKKwkJLnR5cGUgPSBFWFRfVFlQRV9QS0VZLAorCQkuYXR0ci5rZXkgPSBTT0NfRldfQ09OVEVOVF9DRVJUX0tFWQorCX0sCisKKwlbU09DX0FQX0ZXX0hBU0hfRVhUXSA9IHsKKwkJLm9pZCA9IFNPQ19BUF9GV19IQVNIX09JRCwKKwkJLm9wdCA9ICJzb2MtZnciLAorCQkuaGVscF9tc2cgPSAiU29DIEFQIEZpcm13YXJlIGltYWdlIGZpbGUiLAorCQkuc24gPSAiU29DQVBGaXJtd2FyZUhhc2giLAorCQkubG4gPSAiU29DIEFQIEZpcm13YXJlIGhhc2ggKFNIQTI1NikiLAorCQkuYXNuMV90eXBlID0gVl9BU04xX09DVEVUX1NUUklORywKKwkJLnR5cGUgPSBFWFRfVFlQRV9IQVNICisJfSwKKworCVtTT0NfRldfQ09ORklHX0hBU0hfRVhUXSA9IHsKKwkJLm9pZCA9IFNPQ19GV19DT05GSUdfSEFTSF9PSUQsCisJCS5vcHQgPSAic29jLWZ3LWNvbmZpZyIsCisJCS5oZWxwX21zZyA9ICJTb0MgRmlybXdhcmUgQ29uZmlnIGZpbGUiLAorCQkuc24gPSAiU29jRmlybXdhcmVDb25maWdIYXNoIiwKKwkJLmxuID0gIlNvQyBGaXJtd2FyZSBDb25maWcgaGFzaCIsCisJCS5hc24xX3R5cGUgPSBWX0FTTjFfT0NURVRfU1RSSU5HLAorCQkudHlwZSA9IEVYVF9UWVBFX0hBU0gsCisJCS5vcHRpb25hbCA9IDEKKwl9LAorCisJW1RSVVNURURfT1NfRldfQ09OVEVOVF9DRVJUX1BLX0VYVF0gPSB7CisJCS5vaWQgPSBUUlVTVEVEX09TX0ZXX0NPTlRFTlRfQ0VSVF9QS19PSUQsCisJCS5zbiA9ICJUcnVzdGVkT1NGaXJtd2FyZUNvbnRlbnRDZXJ0UEsiLAorCQkubG4gPSAiVHJ1c3RlZCBPUyBGaXJtd2FyZSBjb250ZW50IGNlcnRpZmljYXRlIHB1YmxpYyBrZXkiLAorCQkuYXNuMV90eXBlID0gVl9BU04xX09DVEVUX1NUUklORywKKwkJLnR5cGUgPSBFWFRfVFlQRV9QS0VZLAorCQkuYXR0ci5rZXkgPSBUUlVTVEVEX09TX0ZXX0NPTlRFTlRfQ0VSVF9LRVkKKwl9LAorCisJW1RSVVNURURfT1NfRldfSEFTSF9FWFRdID0geworCQkub2lkID0gVFJVU1RFRF9PU19GV19IQVNIX09JRCwKKwkJLm9wdCA9ICJ0b3MtZnciLAorCQkuaGVscF9tc2cgPSAiVHJ1c3RlZCBPUyBpbWFnZSBmaWxlIiwKKwkJLnNuID0gIlRydXN0ZWRPU0hhc2giLAorCQkubG4gPSAiVHJ1c3RlZCBPUyBoYXNoIChTSEEyNTYpIiwKKwkJLmFzbjFfdHlwZSA9IFZfQVNOMV9PQ1RFVF9TVFJJTkcsCisJCS50eXBlID0gRVhUX1RZUEVfSEFTSAorCX0sCisKKwlbVFJVU1RFRF9PU19GV19FWFRSQTFfSEFTSF9FWFRdID0geworCQkub2lkID0gVFJVU1RFRF9PU19GV19FWFRSQTFfSEFTSF9PSUQsCisJCS5vcHQgPSAidG9zLWZ3LWV4dHJhMSIsCisJCS5oZWxwX21zZyA9ICJUcnVzdGVkIE9TIEV4dHJhMSBpbWFnZSBmaWxlIiwKKwkJLnNuID0gIlRydXN0ZWRPU0V4dHJhMUhhc2giLAorCQkubG4gPSAiVHJ1c3RlZCBPUyBFeHRyYTEgaGFzaCAoU0hBMjU2KSIsCisJCS5hc24xX3R5cGUgPSBWX0FTTjFfT0NURVRfU1RSSU5HLAorCQkudHlwZSA9IEVYVF9UWVBFX0hBU0gsCisJCS5vcHRpb25hbCA9IDEKKwl9LAorCisJW1RSVVNURURfT1NfRldfRVhUUkEyX0hBU0hfRVhUXSA9IHsKKwkJLm9pZCA9IFRSVVNURURfT1NfRldfRVhUUkEyX0hBU0hfT0lELAorCQkub3B0ID0gInRvcy1mdy1leHRyYTIiLAorCQkuaGVscF9tc2cgPSAiVHJ1c3RlZCBPUyBFeHRyYTIgaW1hZ2UgZmlsZSIsCisJCS5zbiA9ICJUcnVzdGVkT1NFeHRyYTJIYXNoIiwKKwkJLmxuID0gIlRydXN0ZWQgT1MgRXh0cmEyIGhhc2ggKFNIQTI1NikiLAorCQkuYXNuMV90eXBlID0gVl9BU04xX09DVEVUX1NUUklORywKKwkJLnR5cGUgPSBFWFRfVFlQRV9IQVNILAorCQkub3B0aW9uYWwgPSAxCisJfSwKKworCVtUUlVTVEVEX09TX0ZXX0NPTkZJR19IQVNIX0VYVF0gPSB7CisJCS5vaWQgPSBUUlVTVEVEX09TX0ZXX0NPTkZJR19IQVNIX09JRCwKKwkJLm9wdCA9ICJ0b3MtZnctY29uZmlnIiwKKwkJLmhlbHBfbXNnID0gIlRydXN0ZWQgT1MgRmlybXdhcmUgQ29uZmlnIGZpbGUiLAorCQkuc24gPSAiVHJ1c3RlZE9TRmlybXdhcmVDb25maWdIYXNoIiwKKwkJLmxuID0gIlRydXN0ZWQgT1MgRmlybXdhcmUgQ29uZmlnIGhhc2giLAorCQkuYXNuMV90eXBlID0gVl9BU04xX09DVEVUX1NUUklORywKKwkJLnR5cGUgPSBFWFRfVFlQRV9IQVNILAorCQkub3B0aW9uYWwgPSAxCisJfSwKKworCVtTQ1BfRldVX0NGR19IQVNIX0VYVF0gPSB7CisJCS5vaWQgPSBTQ1BfRldVX0NGR19IQVNIX09JRCwKKwkJLm9wdCA9ICJzY3AtZnd1LWNmZyIsCisJCS5oZWxwX21zZyA9ICJTQ1AgRmlybXdhcmUgVXBkYXRlIENvbmZpZyBpbWFnZSBmaWxlIiwKKwkJLnNuID0gIlNDUEZXVXBkYXRlQ29uZmlnIiwKKwkJLmxuID0gIlNDUCBGaXJtd2FyZSBVcGRhdGUgQ29uZmlnIGhhc2ggKFNIQTI1NikiLAorCQkuYXNuMV90eXBlID0gVl9BU04xX09DVEVUX1NUUklORywKKwkJLnR5cGUgPSBFWFRfVFlQRV9IQVNILAorCQkub3B0aW9uYWwgPSAxCisJfSwKKworCVtBUF9GV1VfQ0ZHX0hBU0hfRVhUXSA9IHsKKwkJLm9pZCA9IEFQX0ZXVV9DRkdfSEFTSF9PSUQsCisJCS5vcHQgPSAiYXAtZnd1LWNmZyIsCisJCS5oZWxwX21zZyA9ICJBUCBGaXJtd2FyZSBVcGRhdGUgQ29uZmlnIGltYWdlIGZpbGUiLAorCQkuc24gPSAiQVBGV1VwZGF0ZUNvbmZpZyIsCisJCS5sbiA9ICJBUCBGaXJtd2FyZSBVcGRhdGUgQ29uZmlnIGhhc2ggKFNIQTI1NikiLAorCQkuYXNuMV90eXBlID0gVl9BU04xX09DVEVUX1NUUklORywKKwkJLnR5cGUgPSBFWFRfVFlQRV9IQVNILAorCQkub3B0aW9uYWwgPSAxCisJfSwKKworCVtGV1VfSEFTSF9FWFRdID0geworCQkub2lkID0gRldVX0hBU0hfT0lELAorCQkub3B0ID0gImZ3dSIsCisJCS5oZWxwX21zZyA9ICJGaXJtd2FyZSBVcGRhdGVyIGltYWdlIGZpbGUiLAorCQkuc24gPSAiRldVcGRhdGVySGFzaCIsCisJCS5sbiA9ICJGaXJtd2FyZSBVcGRhdGVyIGhhc2ggKFNIQTI1NikiLAorCQkuYXNuMV90eXBlID0gVl9BU04xX09DVEVUX1NUUklORywKKwkJLnR5cGUgPSBFWFRfVFlQRV9IQVNILAorCQkub3B0aW9uYWwgPSAxCisJfSwKKworCVtQUk9UX1BLX0VYVF0gPSB7CisJCS5vaWQgPSBQUk9UX1BLX09JRCwKKwkJLnNuID0gIlBsYXRmb3JtUm9US2V5IiwKKwkJLmxuID0gIlBsYXRmb3JtIFJvb3Qgb2YgVHJ1c3QgUHVibGljIEtleSIsCisJCS5hc24xX3R5cGUgPSBWX0FTTjFfT0NURVRfU1RSSU5HLAorCQkudHlwZSA9IEVYVF9UWVBFX1BLRVksCisJCS5hdHRyLmtleSA9IFBST1RfS0VZCisJfSwKKworCVtOT05fVFJVU1RFRF9GV19OVkNPVU5URVJfRVhUXSA9IHsKKwkJLm9pZCA9IE5PTl9UUlVTVEVEX0ZXX05WQ09VTlRFUl9PSUQsCisJCS5vcHQgPSAibnRmdy1udmN0ciIsCisJCS5oZWxwX21zZyA9ICJOb24tVHJ1c3RlZCBGaXJtd2FyZSBOb24tVm9sYXRpbGUgY291bnRlciB2YWx1ZSIsCisJCS5zbiA9ICJOb3JtYWxXb3JsZE5WQ291bnRlciIsCisJCS5sbiA9ICJOb24tVHJ1c3RlZCBGaXJtd2FyZSBOb24tVm9sYXRpbGUgY291bnRlciIsCisJCS5hc24xX3R5cGUgPSBWX0FTTjFfSU5URUdFUiwKKwkJLnR5cGUgPSBFWFRfVFlQRV9OVkNPVU5URVIsCisJCS5hdHRyLm52Y3RyX3R5cGUgPSBOVkNUUl9UWVBFX05URlcKKwl9LAorCisJW05PTl9UUlVTVEVEX1dPUkxEX0JPT1RMT0FERVJfSEFTSF9FWFRdID0geworCQkub2lkID0gTk9OX1RSVVNURURfV09STERfQk9PVExPQURFUl9IQVNIX09JRCwKKwkJLm9wdCA9ICJudC1mdyIsCisJCS5oZWxwX21zZyA9ICJOb24tVHJ1c3RlZCBXb3JsZCBCb290bG9hZGVyIGltYWdlIGZpbGUiLAorCQkuc24gPSAiTm9uVHJ1c3RlZFdvcmxkQm9vdGxvYWRlckhhc2giLAorCQkubG4gPSAiTm9uLVRydXN0ZWQgV29ybGQgaGFzaCAoU0hBMjU2KSIsCisJCS5hc24xX3R5cGUgPSBWX0FTTjFfT0NURVRfU1RSSU5HLAorCQkudHlwZSA9IEVYVF9UWVBFX0hBU0gKKwl9LAorCisJW05PTl9UUlVTVEVEX0ZXX0NPTkZJR19IQVNIX0VYVF0gPSB7CisJCS5vaWQgPSBOT05fVFJVU1RFRF9GV19DT05GSUdfSEFTSF9PSUQsCisJCS5vcHQgPSAibnQtZnctY29uZmlnIiwKKwkJLmhlbHBfbXNnID0gIk5vbiBUcnVzdGVkIE9TIEZpcm13YXJlIENvbmZpZyBmaWxlIiwKKwkJLnNuID0gIk5vblRydXN0ZWRPU0Zpcm13YXJlQ29uZmlnSGFzaCIsCisJCS5sbiA9ICJOb24tVHJ1c3RlZCBPUyBGaXJtd2FyZSBDb25maWcgaGFzaCIsCisJCS5hc24xX3R5cGUgPSBWX0FTTjFfT0NURVRfU1RSSU5HLAorCQkudHlwZSA9IEVYVF9UWVBFX0hBU0gsCisJCS5vcHRpb25hbCA9IDEKKwl9LAorfTsKKworUkVHSVNURVJfRVhURU5TSU9OUyhjb3RfZXh0KTsKKworCisvKiBLZXlzIHVzZWQgdG8gZXN0YWJsaXNoIHRoZSBjaGFpbiBvZiB0cnVzdC4gKi8KK3N0YXRpYyBrZXlfdCBjb3Rfa2V5c1tdID0geworCVtST1RfS0VZXSA9IHsKKwkJLmlkID0gUk9UX0tFWSwKKwkJLm9wdCA9ICJyb3Qta2V5IiwKKwkJLmhlbHBfbXNnID0gIlJvb3QgT2YgVHJ1c3Qga2V5IChpbnB1dC9vdXRwdXQgZmlsZSkiLAorCQkuZGVzYyA9ICJSb290IE9mIFRydXN0IGtleSIKKwl9LAorCisJW1RSVVNURURfV09STERfS0VZXSA9IHsKKwkJLmlkID0gVFJVU1RFRF9XT1JMRF9LRVksCisJCS5vcHQgPSAidHJ1c3RlZC13b3JsZC1rZXkiLAorCQkuaGVscF9tc2cgPSAiVHJ1c3RlZCBXb3JsZCBrZXkgKGlucHV0L291dHB1dCBmaWxlKSIsCisJCS5kZXNjID0gIlRydXN0ZWQgV29ybGQga2V5IgorCX0sCisKKwlbU0NQX0ZXX0NPTlRFTlRfQ0VSVF9LRVldID0geworCQkuaWQgPSBTQ1BfRldfQ09OVEVOVF9DRVJUX0tFWSwKKwkJLm9wdCA9ICJzY3AtZncta2V5IiwKKwkJLmhlbHBfbXNnID0gIlNDUCBGaXJtd2FyZSBDb250ZW50IENlcnRpZmljYXRlIGtleSAoaW5wdXQvb3V0cHV0IGZpbGUpIiwKKwkJLmRlc2MgPSAiU0NQIEZpcm13YXJlIENvbnRlbnQgQ2VydGlmaWNhdGUga2V5IgorCX0sCisKKwlbU09DX0ZXX0NPTlRFTlRfQ0VSVF9LRVldID0geworCQkuaWQgPSBTT0NfRldfQ09OVEVOVF9DRVJUX0tFWSwKKwkJLm9wdCA9ICJzb2MtZncta2V5IiwKKwkJLmhlbHBfbXNnID0gIlNvQyBGaXJtd2FyZSBDb250ZW50IENlcnRpZmljYXRlIGtleSAoaW5wdXQvb3V0cHV0IGZpbGUpIiwKKwkJLmRlc2MgPSAiU29DIEZpcm13YXJlIENvbnRlbnQgQ2VydGlmaWNhdGUga2V5IgorCX0sCisKKwlbVFJVU1RFRF9PU19GV19DT05URU5UX0NFUlRfS0VZXSA9IHsKKwkJLmlkID0gVFJVU1RFRF9PU19GV19DT05URU5UX0NFUlRfS0VZLAorCQkub3B0ID0gInRvcy1mdy1rZXkiLAorCQkuaGVscF9tc2cgPSAiVHJ1c3RlZCBPUyBGaXJtd2FyZSBDb250ZW50IENlcnRpZmljYXRlIGtleSAoaW5wdXQvb3V0cHV0IGZpbGUpIiwKKwkJLmRlc2MgPSAiVHJ1c3RlZCBPUyBGaXJtd2FyZSBDb250ZW50IENlcnRpZmljYXRlIGtleSIKKwl9LAorCisJW1BST1RfS0VZXSA9IHsKKwkJLmlkID0gUFJPVF9LRVksCisJCS5vcHQgPSAicHJvdC1rZXkiLAorCQkuaGVscF9tc2cgPSAiUGxhdGZvcm0gUm9vdCBvZiBUcnVzdCBrZXkiLAorCQkuZGVzYyA9ICJQbGF0Zm9ybSBSb290IG9mIFRydXN0IGtleSIKKwl9LAorfTsKKworUkVHSVNURVJfS0VZUyhjb3Rfa2V5cyk7CmRpZmYgLS1naXQgYS90b29scy9jZXJ0X2NyZWF0ZS9zcmMvZHVhbHJvb3QvY290Lm1rIGIvdG9vbHMvY2VydF9jcmVhdGUvc3JjL2R1YWxyb290L2NvdC5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTcyNDg0Ci0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvY2VydF9jcmVhdGUvc3JjL2R1YWxyb290L2NvdC5tawpAQCAtMCwwICsxLDEwIEBACisjCisjIENvcHlyaWdodCAoYykgMjAyMCwgQXJtIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UKKyMKKworUExBVF9NU0cJCTo9CUR1YWwgcm9vdCBvZiB0cnVzdAorUExBVF9JTkNMVURFCQk6PQkuLi8uLi9pbmNsdWRlL3Rvb2xzX3NoYXJlCisKK09CSkVDVFMgKz0gc3JjL2R1YWxyb290L2NvdC5vCg==