From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Takao Fujiwara To: git-commits@fedoraproject.org Subject: [rpms/ibus] rawhide: Delete upstreamed patches Date: Wed, 12 Aug 2026 03:33:32 GMT Message-ID: <178650561244.1.7653892918845798900.rpms-ibus-d3bddab90644@fedoraproject.org> List-ID: X-Git-Repo: rpms/ibus X-Git-Branch: rawhide X-Git-Rev: d3bddab90644a1c1aa1452a1a3c86e8316db01b0 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvaWJ1cwpCcmFuY2gg OiByYXdoaWRlCkNvbW1pdCA6IGQzYmRkYWI5MDY0NGExYzFhYTE0NTJhMWEzYzg2ZTgzMTZkYjAx YjAKQXV0aG9yIDogVGFrYW8gRnVqaXdhcmEgPHRmdWppd2FyQHJlZGhhdC5jb20+CkRhdGUgICA6 IDIwMjYtMDgtMTJUMTI6Mjc6MDUrMDk6MDAKU3RhdHMgIDogKzAvLTI1NDYgaW4gMSBmaWxlKHMp ClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvaWJ1cy9jL2QzYmRk YWI5MDY0NGExYzFhYTE0NTJhMWEzYzg2ZTgzMTZkYjAxYjA/YnJhbmNoPXJhd2hpZGUKCkxvZzoK RGVsZXRlIHVwc3RyZWFtZWQgcGF0Y2hlcwoKLS0tCmRpZmYgLS1naXQgYS9pYnVzLUhFQUQucGF0 Y2ggYi9pYnVzLUhFQUQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlMzRk NTQuLjAwMDAwMDAKLS0tIGEvaWJ1cy1IRUFELnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjU0 NiArMCwwIEBACi1Gcm9tIDQ0ZTIyZTVlNzYwMmJjNzkwNDBkZjQyY2JmYTgzNmJhMzJkYTAxZWYg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJh MUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDE2IEp1bCAyMDI2IDEyOjM3OjI4ICswOTAwCi1TdWJq ZWN0OiBbUEFUQ0ggMS8yXSBzcmMvdGVzdHM6IEZpeCBDSSBpc3N1ZXMgaW4gR05PTUUgNTAKLQot LSAxMDAtaWJ1cy1jaS5ydWxlczogRGlzYWJsZSBhdXRoZW50aWNhdGlvbiBkaWFsb2dzIGluIGdu b21lLXNoZWxsCi0tIGlidXMtY29tcG9zZToKLSAgbyBBZGQgdGFraW5nIHNjcmVlbnNob3RzIHdp dGggSUJVU19URVNUX1NDUkVFTlNIT1QKLSAgbyBEZWZpbmUgaWJ1c19icmVha19pZl9mYWlsKCkg ZnJvbSBnX3JldHVybl9pZl9mYWlsKCkKLS0gaWJ1cy1kZXNrdG9wLXRlc3RpbmctYXV0b3N0YXJ0 OiBDYWxsIGR1bXBfc2NyZWVuX29mX3Rlc3RfY2FzZXMoKQotLSBpYnVzLWRlc2t0b3AtdGVzdGlu Zy1tb2R1bGU6Ci0gIG8gVXBkYXRlIHRoZSBsYXRlc3QgZ25vbWUtc2hlbGwgc2VydmljZSBmaWxl IGZvciBHTk9NRSA1MC4KLSAgbyBSZXBsYWNlIGluaXQgd2l0aCBzeXN0ZW1jdGwgaW4gaWJ1cy1k ZXNrdG9wLXRlc3RpbmctbW9kdWxlCi0gIG8gU2V0IGxvY2FsZSBmb3IgZ25vbWUtc2hlbGwgd2hp bGUgdGhlIHVzZXIgc3lzdGVtZCBydW5zIGluIEMgbG9jYWxlCi0gIG8gSW1wbGVtZW50IGR1bXBf c2NyZWVuX29mX3Rlc3RfY2FzZXMoKSB0byBkdW1wIHNjcmVlbnNob3RzIG9mIHRlc3QgY2FzZXMK LSAgbyBleHBvcnQgSUJVU19URVNUX1NDUkVFTlNIT1QgdG8gZWFjaCB0ZXN0IGNhc2UgdG8gdGFr ZSBzY3JlZW5zaG90cwotICBvIEluc3RhbGwgcG9sa2l0IHJ1bGUgZmlsZQotICBvIGZvcndhcmQg LS1zY3JlZW5kdW1wIG9wdGlvbiB0byBhdXRvc3RhcnQgc2NyaXB0Ci0tIHJ1bnRlc3Q6IFNldCB0 c3RkaXIgZm9yIFB5dGhvbiB0ZXN0IGNhc2VzCi0KLS0gc3JjL21lc29uOiBSZWR1Y2UgdGltZSB0 byBidWlsZCBlbW9qaSBkaWN0cwotLSBzcmMvdGVzdHMvW01ha2VmaWxlfG1lc29uXTogSW5zdGFs bCAxMDAtaWJ1cy1jaS5ydWxlcwotCi1DbG9zZXMgIzI5MjEKLS0tLQotIHNyYy9tZXNvbi5idWls ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDEgKysrKy0tLQotIHNyYy90ZXN0cy8x MDAtaWJ1cy1jaS5ydWxlcyAgICAgICAgICAgICAgICAgfCAgIDggKysKLSBzcmMvdGVzdHMvTWFr ZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgIHwgIDEyICstCi0gc3JjL3Rlc3RzL2lidXMt Y29tcG9zZS5jICAgICAgICAgICAgICAgICAgICB8ICA3NiArKysrKysrKysrKysKLSBzcmMvdGVz dHMvaWJ1cy1kZXNrdG9wLXRlc3RpbmctYXV0b3N0YXJ0LmluIHwgICAxICsKLSBzcmMvdGVzdHMv aWJ1cy1kZXNrdG9wLXRlc3RpbmctbW9kdWxlICAgICAgIHwgMTIyICsrKysrKysrKysrKysrKyst LS0tCi0gc3JjL3Rlc3RzL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgICB8ICAgNSAr Ci0gc3JjL3Rlc3RzL3J1bnRlc3QgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA4MSArKysr KystLS0tLS0tCi0gOCBmaWxlcyBjaGFuZ2VkLCAyNjYgaW5zZXJ0aW9ucygrKSwgODAgZGVsZXRp b25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0cy8xMDAtaWJ1cy1jaS5ydWxlcwot Ci1kaWZmIC0tZ2l0IGEvc3JjL21lc29uLmJ1aWxkIGIvc3JjL21lc29uLmJ1aWxkCi1pbmRleCAx ZmIwNzg2Yi4uMzRkYTEzMzQgMTAwNjQ0Ci0tLS0gYS9zcmMvbWVzb24uYnVpbGQKLSsrKyBiL3Ny Yy9tZXNvbi5idWlsZAotQEAgLTMwMSwyMyArMzAxLDMwIEBAIGlmIGdldF9vcHRpb24oJ2Vtb2pp LWRpY3QnKQotICAgICAgIF0KLSAgICAgZW5kaWYKLSAKLS0gICAgZW1vamlfcGFyc2VyX2dlbiA9 IGN1c3RvbV90YXJnZXQoZ2VuX2Vtb2ppX2RpY3QsCi0tICAgICAgaW5wdXQ6IGVtb2ppX3htbCwK LS0gICAgICBvdXRwdXQ6IGdlbl9lbW9qaV9kaWN0LAotLSAgICAgIGNvbW1hbmQ6IFsKLS0gICAg ICAgIGVtb2ppX3BhcnNlciwKLS0gICAgICAgICctLXVuaWNvZGUtZW1vamktZGlyJywgZ2V0X29w dGlvbigndW5pY29kZS1lbW9qaS1kaXInKSwKLS0gICAgICAgICctLXhtbCcsIGVtb2ppX3htbCwK LS0gICAgICAgICctLW91dCcsICdAT1VUUFVUQCcsCi0tICAgICAgICBlbW9qaV9wYXJzZXJfZXh0 cmFfb3B0cywKLS0gICAgICBdLAotLSAgICAgIGluc3RhbGxfZGlyOiBwa2dkYXRhZGlyIC8gJ2Rp Y3RzJywKLS0gICAgICAjIFRoZSBjb25kaXRpb25hbCBpbnN0YWxsYXRpb24gZG9lcyBub3Qgd29y ayBzbyB1c2UKLS0gICAgICAjIG1lc29uLmFkZF9pbnN0YWxsX3NjcmlwdCgpCi0tICAgICAgIyBp bnN0YWxsOiBmcy5leGlzdHMoJ0BPVVRQVVRAJykgYW5kIGZzLnNpemUoJ0BPVVRQVVRAJykgPiAw LAotLSAgICAgIGluc3RhbGw6IHRydWUsCi0tICAgICAgYnVpbGRfYnlfZGVmYXVsdDogdHJ1ZSwK LS0gICAgKQotKyAgICBpZiBmcy5leGlzdHMobWVzb24uY3VycmVudF9idWlsZF9kaXIoKSAvIGdl bl9lbW9qaV9kaWN0KQotKyAgICAgIGluc3RhbGxfZGF0YSgKLSsgICAgICAgIG1lc29uLmN1cnJl bnRfYnVpbGRfZGlyKCkgLyBnZW5fZW1vamlfZGljdCwKLSsgICAgICAgIGluc3RhbGxfZGlyOiBw a2dkYXRhZGlyIC8gJ2RpY3RzJywKLSsgICAgICApCi0rICAgIGVsc2UKLSsgICAgICBlbW9qaV9w YXJzZXJfZ2VuID0gY3VzdG9tX3RhcmdldChnZW5fZW1vamlfZGljdCwKLSsgICAgICAgIGlucHV0 OiBlbW9qaV94bWwsCi0rICAgICAgICBvdXRwdXQ6IGdlbl9lbW9qaV9kaWN0LAotKyAgICAgICAg Y29tbWFuZDogWwotKyAgICAgICAgICBlbW9qaV9wYXJzZXIsCi0rICAgICAgICAgICctLXVuaWNv ZGUtZW1vamktZGlyJywgZ2V0X29wdGlvbigndW5pY29kZS1lbW9qaS1kaXInKSwKLSsgICAgICAg ICAgJy0teG1sJywgZW1vamlfeG1sLAotKyAgICAgICAgICAnLS1vdXQnLCAnQE9VVFBVVEAnLAot KyAgICAgICAgICBlbW9qaV9wYXJzZXJfZXh0cmFfb3B0cywKLSsgICAgICAgIF0sCi0rICAgICAg ICBpbnN0YWxsX2RpcjogcGtnZGF0YWRpciAvICdkaWN0cycsCi0rICAgICAgICAjIFRoZSBjb25k aXRpb25hbCBpbnN0YWxsYXRpb24gZG9lcyBub3Qgd29yayBzbyB1c2UKLSsgICAgICAgICMgbWVz b24uYWRkX2luc3RhbGxfc2NyaXB0KCkKLSsgICAgICAgICMgaW5zdGFsbDogZnMuZXhpc3RzKCdA T1VUUFVUQCcpIGFuZCBmcy5zaXplKCdAT1VUUFVUQCcpID4gMCwKLSsgICAgICAgIGluc3RhbGw6 IHRydWUsCi0rICAgICAgICBidWlsZF9ieV9kZWZhdWx0OiB0cnVlLAotKyAgICAgICkKLSsgICAg ZW5kaWYKLSAgIGVuZGZvcmVhY2gKLSAKLSAgICMgVGhlcmUgYXJlIGNhc2VzIHdoZXJlIHRoZXJl IHdhcyBubyAuZGljdCBmaWxlIHRvIG91dHB1dAotZGlmZiAtLWdpdCBhL3NyYy90ZXN0cy8xMDAt aWJ1cy1jaS5ydWxlcyBiL3NyYy90ZXN0cy8xMDAtaWJ1cy1jaS5ydWxlcwotbmV3IGZpbGUgbW9k ZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwLi5kNmQyZjdjMAotLS0tIC9kZXYvbnVsbAotKysrIGIv c3JjL3Rlc3RzLzEwMC1pYnVzLWNpLnJ1bGVzCi1AQCAtMCwwICsxLDggQEAKLStwb2xraXQuYWRk UnVsZShmdW5jdGlvbihhY3Rpb24sIHN1YmplY3QpIHsKLSsgICAgaWYgKChhY3Rpb24uaWQgPT0g Im9yZy5mcmVlZGVza3RvcC5GbGF0cGFrLm1ldGFkYXRhLXVwZGF0ZSIgfHwKLSsgICAgICAgICBh Y3Rpb24uaWQgPT0gIm9yZy5mcmVlZGVza3RvcC5GbGF0cGFrLm1vZGlmeS1yZXBvIiB8fAotKyAg ICAgICAgIGFjdGlvbi5pZCA9PSAib3JnLmZyZWVkZXNrdG9wLmZ3dXBkLnJlZnJlc2gtcmVtb3Rl IiApICYmCi0rICAgICAgICBzdWJqZWN0LmlzSW5Hcm91cCgiaXRlc3R1c2VyIikpIHsKLSsgICAg ICAgIHJldHVybiBwb2xraXQuUmVzdWx0LllFUzsKLSsgICAgfQotK30pOwotZGlmZiAtLWdpdCBh L3NyYy90ZXN0cy9NYWtlZmlsZS5hbSBiL3NyYy90ZXN0cy9NYWtlZmlsZS5hbQotaW5kZXggNzVj YWFiNTcuLjQ3Y2QzZGIxIDEwMDY0NAotLS0tIGEvc3JjL3Rlc3RzL01ha2VmaWxlLmFtCi0rKysg Yi9zcmMvdGVzdHMvTWFrZWZpbGUuYW0KLUBAIC0xMzEsMTEgKzEzMSwxNCBAQCBDTEVBTkZJTEVT ICs9IGlidXMtY29tcG9zZS1sb2NhbGVzCi0gZW5kaWYKLSB0ZXN0X2V4ZWNzZGlyID0gJChsaWJl eGVjZGlyKS9pbnN0YWxsZWQtdGVzdHMvaWJ1cwotIGxpYmV4ZWNfU0NSSVBUUyA9IFwKLS0gIGli dXMtZGVza3RvcC10ZXN0aW5nLWF1dG9zdGFydCBcCi0tICBpYnVzLWRlc2t0b3AtdGVzdGluZy1t b2R1bGUgXAotLSAgJChOVUxMKQotKyAgICBpYnVzLWRlc2t0b3AtdGVzdGluZy1hdXRvc3RhcnQg XAotKyAgICBpYnVzLWRlc2t0b3AtdGVzdGluZy1tb2R1bGUgXAotKyAgICAkKE5VTEwpCi0gCi0t dGVzdF9mcmFtZV9EQVRBID0gb3JnLmZyZWVkZXNrdG9wLklCdXMuRGVza3RvcC5UZXN0aW5nLmRl c2t0b3AKLSt0ZXN0X2ZyYW1lX0RBVEEgPSBcCi0rICAgIDEwMC1pYnVzLWNpLnJ1bGVzIFwKLSsg ICAgb3JnLmZyZWVkZXNrdG9wLklCdXMuRGVza3RvcC5UZXN0aW5nLmRlc2t0b3AgXAotKyAgICAk KE5VTEwpCi0gdGVzdF9mcmFtZWRpciA9ICQocGtnZGF0YWRpcikvdGVzdHMKLSBvcmcuZnJlZWRl c2t0b3AuSUJ1cy5EZXNrdG9wLlRlc3RpbmcuZGVza3RvcDogaWJ1cy1kZXNrdG9wLXRlc3Rpbmcu ZGVza3RvcC5pbgotIAkkKEFNX1ZfR0VOKSBzZWQgLWUgInN8XEBsaWJleGVjZGlyXEB8JChsaWJl eGVjZGlyKXxnIiBcCi1AQCAtMTk0LDYgKzE5Nyw3IEBAIGlidXMtZGVza3RvcC10ZXN0aW5nLXJ1 bm5lcjogaWJ1cy1kZXNrdG9wLXRlc3RpbmctcnVubmVyLmluCi0gRVhUUkFfRElTVCA9IFwKLSAg ICAgJCh0ZXN0X21ldGFzX2luKSBcCi0gICAgICQoVEVTVFNfU0NSSVBUKSBcCi0rICAgIDEwMC1p YnVzLWNpLnJ1bGVzIFwKLSAgICAgcnVudGVzdCBcCi0gICAgIGlidXMtY29tcG9zZS5iYXNpYyBc Ci0gICAgIGlidXMtY29tcG9zZS5iYXNpYzIgXAotZGlmZiAtLWdpdCBhL3NyYy90ZXN0cy9pYnVz LWNvbXBvc2UuYyBiL3NyYy90ZXN0cy9pYnVzLWNvbXBvc2UuYwotaW5kZXggNjlmODQ0YjIuLmMz NmI0YzgxIDEwMDY0NAotLS0tIGEvc3JjL3Rlc3RzL2lidXMtY29tcG9zZS5jCi0rKysgYi9zcmMv dGVzdHMvaWJ1cy1jb21wb3NlLmMKLUBAIC03LDYgKzcsMTcgQEAKLSAjZGVmaW5lIFJFRCAgICJc MDMzWzA7MzFtIgotICNkZWZpbmUgTkMgICAgIlwwMzNbMG0iCi0gCi0rI2RlZmluZSBpYnVzX2Jy ZWFrX2lmX2ZhaWwoZXhwcikgXAotKyAgICBHX1NUTVRfU1RBUlQgeyBcCi0rICAgICAgICBpZiAo R19MSUtFTFkgKGV4cHIpKSB7IFwKLSsgICAgICAgIH0gZWxzZSB7IFwKLSsgICAgICAgICAgICBn X3JldHVybl9pZl9mYWlsX3dhcm5pbmcgKEdfTE9HX0RPTUFJTiwgXAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR19TVFJGVU5DLCBcCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAjZXhwcik7IFwKLSsgICAgICAgICAgICBicmVhazsgXAotKyAg ICAgICAgfSBcCi0rICAgIH0gR19TVE1UX0VORAotKwotIHN0YXRpYyBnY2hhciAqbV90ZXN0X2xv Y2FsZTsKLSBzdGF0aWMgZ2NoYXIgKm1fdGVzdF9uYW1lOwotIHN0YXRpYyBnY2hhciAqbV9zZXNz aW9uX25hbWU7Ci1AQCAtMTEzLDYgKzEyNCw2NyBAQCBnZXRfY29tcG9zZV9wYXRoICgpCi0gfQot IAotIAotK3N0YXRpYyB2b2lkCi0rdGFrZV9zY3JlZW5zaG90ICh2b2lkKQotK3sKLSsgICAgZ2lu dDY0IHQ7Ci0rICAgIEdEYXRlVGltZSAqZHQ7Ci0rICAgIGdjaGFyICpwcmduYW1lID0gTlVMTDsK LSsgICAgZ2NoYXIgKmNhc2VuYW1lID0gTlVMTDsKLSsgICAgZ2NoYXIgKmZpbGVuYW1lID0gTlVM TDsKLSsgICAgZ2NoYXIgKnBhdGggPSBOVUxMOwotKyAgICBnY2hhciAqYXJnc1s0XSA9IHsgImdu b21lLXNjcmVlbnNob3QiLCAiLS1maWxlIiwgMCwgMCB9OwotKyAgICBHU3Bhd25GbGFncyBmbGFn cyA9IEdfU1BBV05fU0VBUkNIX1BBVEg7Ci0rICAgIGdjaGFyICpzdGRfb3V0cHV0ID0gTlVMTDsK LSsgICAgZ2NoYXIgKnN0ZF9lcnJvciA9IE5VTEw7Ci0rICAgIEdFcnJvciAqZXJyb3IgPSBOVUxM OwotKwotKyAgICB0ID0gZ19nZXRfcmVhbF90aW1lICgpOwotKyAgICB0ID0gdCAvIEdfVVNFQ19Q RVJfU0VDOwotKyAgICBkdCA9IGdfZGF0ZV90aW1lX25ld19mcm9tX3VuaXhfdXRjICh0KTsKLSsg ICAgZ19yZXR1cm5faWZfZmFpbCAoZHQpOwotKwotKyAgICB3aGlsZSAoRkFMU0UpIHsKLSsgICAg ICAgIHByZ25hbWUgPSBnX3BhdGhfZ2V0X2Jhc2VuYW1lIChnX2dldF9wcmduYW1lICgpKTsKLSsg ICAgICAgIGNhc2VuYW1lID0gZ19wYXRoX2dldF9iYXNlbmFtZSAoZ190ZXN0X2dldF9wYXRoICgp KTsKLSsgICAgICAgIGlidXNfYnJlYWtfaWZfZmFpbCAocHJnbmFtZSk7Ci0rICAgICAgICBpYnVz X2JyZWFrX2lmX2ZhaWwgKGNhc2VuYW1lKTsKLSsgICAgICAgIGZpbGVuYW1lID0gZ19zdHJkdXBf cHJpbnRmICgiJXMlcy0lMDJkJTAyZCUwMmQucG5nIiwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwcmduYW1lLCBjYXNlbmFtZSwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBnX2RhdGVfdGltZV9nZXRfaG91ciAoZHQpLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdfZGF0ZV90aW1lX2dldF9taW51dGUgKGR0KSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX2RhdGVfdGltZV9nZXRfc2Vjb25kIChk dCkpOwotKyAgICAgICAgaWJ1c19icmVha19pZl9mYWlsIChmaWxlbmFtZSk7Ci0rICAgICAgICAv KiBUaGUgaWJ1cy1jb21wb3NlLWxvY2FsZXMgcnVucyBpbiBhIHRlbXAgZGlyLiAqLwotKyAgICAg ICAgcGF0aCA9IGdfYnVpbGRfZmlsZW5hbWUgKGdfZ2V0X2hvbWVfZGlyICgpLCBmaWxlbmFtZSwg TlVMTCk7Ci0rICAgICAgICBpYnVzX2JyZWFrX2lmX2ZhaWwgKHBhdGgpOwotKyAgICAgICAgYXJn c1syXSA9IHBhdGg7Ci0rICAgICAgICBpZiAoIWdfc3Bhd25fc3luYyAoTlVMTCwgYXJncywgTlVM TCwgZmxhZ3MsIE5VTEwsIE5VTEwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0ZF9v dXRwdXQsICZzdGRfZXJyb3IsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAmZXJyb3IpKSB7Ci0rICAgICAgICAgICAgZ193YXJu aW5nICgiRmFpbGVkIHRvIHRha2UgYSBzY3JlZW5zaG90OiAlczogJXM6ICVzIiwKLSsgICAgICAg ICAgICAgICAgICAgICAgIGVycm9yLT5tZXNzYWdlLAotKyAgICAgICAgICAgICAgICAgICAgICAg c3RkX291dHB1dCA/IHN0ZF9vdXRwdXQgOiAiIiwKLSsgICAgICAgICAgICAgICAgICAgICAgIHN0 ZF9lcnJvciA/IHN0ZF9lcnJvciA6ICIiKTsKLSsgICAgICAgICAgICBnX2Vycm9yX2ZyZWUgKGVy cm9yKTsKLSsgICAgICAgIH0gZWxzZSBpZiAoc3RkX2Vycm9yICYmICpzdGRfZXJyb3IpIHsKLSsg ICAgICAgICAgICBnX3dhcm5pbmcgKCJGYWlsZWQgdG8gdGFrZSBhIHNjcmVlbnNob3Q6ICVzOiAl cyIsCi0rICAgICAgICAgICAgICAgICAgICAgICBzdGRfb3V0cHV0ID8gc3RkX291dHB1dCA6ICIi LAotKyAgICAgICAgICAgICAgICAgICAgICAgc3RkX2Vycm9yKTsKLSsgICAgICAgIH0KLSsgICAg fQotKwotKyAgICBnX2ZyZWUgKHByZ25hbWUpOwotKyAgICBnX2ZyZWUgKGNhc2VuYW1lKTsKLSsg ICAgZ19kYXRlX3RpbWVfdW5yZWYgKGR0KTsKLSsgICAgZ19mcmVlIChmaWxlbmFtZSk7Ci0rICAg IGdfZnJlZSAocGF0aCk7Ci0rICAgIGdfZnJlZSAoc3RkX291dHB1dCk7Ci0rICAgIGdfZnJlZSAo c3RkX2Vycm9yKTsKLSt9Ci0rCi0rCi0gZ2Jvb2xlYW4KLSBpZGxlX2NiIChncG9pbnRlciB1c2Vy X2RhdGEpCi0gewotQEAgLTQzNiw5ICs1MDgsMTMgQEAgc2V0X2VuZ2luZV9jYiAoR09iamVjdCAg ICAgICpvYmplY3QsCi0gICAgICAgICByZXR1cm47Ci0gICAgIH0KLSAKLSsgICAgaWYgKGdfZ2V0 ZW52ICgiSUJVU19URVNUX1NDUkVFTlNIT1QiKSkKLSsgICAgICAgIHRha2Vfc2NyZWVuc2hvdCAo KTsKLSAgICAgc2VuZF9rZXlfZXZlbnQgKG1fY29tcG9zZV90YWJsZSk7Ci0gICAgIGlmIChtX25v X2xvYWRfY29tcG9zZV90YWJsZSkKLSAgICAgICAgIHNlbmRfa2V5X2V2ZW50IChtX25vX2xvYWRf Y29tcG9zZV90YWJsZSk7Ci0rICAgIGlmIChnX2dldGVudiAoIklCVVNfVEVTVF9TQ1JFRU5TSE9U IikpCi0rICAgICAgICB0YWtlX3NjcmVlbnNob3QgKCk7Ci0gCi0gI2lmIEdUS19DSEVDS19WRVJT SU9OICg0LCAwLCAwKQotICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMg KAotZGlmZiAtLWdpdCBhL3NyYy90ZXN0cy9pYnVzLWRlc2t0b3AtdGVzdGluZy1hdXRvc3RhcnQu aW4gYi9zcmMvdGVzdHMvaWJ1cy1kZXNrdG9wLXRlc3RpbmctYXV0b3N0YXJ0LmluCi1pbmRleCA5 ZWNjOGMyNy4uYTlhNTdiZWQgMTAwNzU1Ci0tLS0gYS9zcmMvdGVzdHMvaWJ1cy1kZXNrdG9wLXRl c3RpbmctYXV0b3N0YXJ0LmluCi0rKysgYi9zcmMvdGVzdHMvaWJ1cy1kZXNrdG9wLXRlc3Rpbmct YXV0b3N0YXJ0LmluCi1AQCAtNzYsNiArNzYsNyBAQCBtYWluKCkKLSAgICAgI3J1bl9tb25pdG9y Ci0gICAgIHNhdmVfc2NyZWVuCi0gICAgIHJ1bl90ZXN0X3N1aXRlCi0rICAgIGR1bXBfc2NyZWVu X29mX3Rlc3RfY2FzZXMKLSAgICAgZmluaXQKLSB9Ci0gCi1kaWZmIC0tZ2l0IGEvc3JjL3Rlc3Rz L2lidXMtZGVza3RvcC10ZXN0aW5nLW1vZHVsZSBiL3NyYy90ZXN0cy9pYnVzLWRlc2t0b3AtdGVz dGluZy1tb2R1bGUKLWluZGV4IDU1ZWIyNDhlLi5iNzFkNzNhOSAxMDA3NTUKLS0tLSBhL3NyYy90 ZXN0cy9pYnVzLWRlc2t0b3AtdGVzdGluZy1tb2R1bGUKLSsrKyBiL3NyYy90ZXN0cy9pYnVzLWRl c2t0b3AtdGVzdGluZy1tb2R1bGUKLUBAIC01MSwxNiArNTEsMTkgQEAgVEVTVF9VU0VSPWl0ZXN0 dXNlcgotIFRFU1RfVVNFUl9IT01FPS9leHBvcnQvaG9tZS8kVEVTVF9VU0VSCi0gR0RNX0NPTkY9 L3J1bi9nZG0vY3VzdG9tLmNvbmYKLSBBVVRPU1RBUlRfREVTS1RPUF9GSUxFPSJvcmcuZnJlZWRl c2t0b3AuSUJ1cy5EZXNrdG9wLlRlc3RpbmcuZGVza3RvcCIKLStQT0xLSVRfQ1VTVE9NX1JVTEVf RklMRT0iMTAwLWlidXMtY2kucnVsZXMiCi0gVEVTVFM9IiIKLSBUSU1FT1VUPTMwMAotIEdSRUVO PSdcMDMzWzA7MzJtJwotIFJFRD0nXDAzM1swOzMxbScKLSBOQz0nXDAzM1swbScKLStEUT0nIicK LSBFTlZfQ0hFQ0s9MAotIEVOVl9DT01NQU5EUz0nCi0gaWQKLSBwd2QKLSBwc3RyZWUgLWFzcCAk JAotK3RyICJcXDAiICJcXG4iIDwgL3Byb2MvJCQvZW52aXJvbgotIGdzZXR0aW5ncyBsaXN0LXJl Y3Vyc2l2ZWx5IG9yZy5nbm9tZS5zaGVsbAotIHJwbSAtcSBnbm9tZS1zaGVsbC1leHRlbnNpb24t bm8tb3ZlcnZpZXcgZ25vbWUtc2hlbGwgZ25vbWUtc2Vzc2lvbgotIHBzIC1lZiB8IGdyZXAgaWJ1 cyB8IGdyZXAgLXYgVE1UIHwgZ3JlcCAtdiBncmVwCi1AQCAtMTMyLDcgKzEzNSw3IEBAIGRlbGV0 ZS10ZXN0c1wKLSBjaGVja190dHkoKQotIHsKLSAgICAgVFRZPWB0dHlgCi0tICAgIGlmIGVjaG8g JFBST0dOQU1FIHwgZ3JlcCAtcSBydW5uZXIgOyB0aGVuCi0rICAgIGlmIGVjaG8gIiRQUk9HTkFN RSIgfCBncmVwIC1xIHJ1bm5lciA7IHRoZW4KLSAgICAgICAgIGlmIFsgJEVOQUJMRURfU1lTVEVN RCAtZXEgMSBdICYmIFsgICRTRVNTSU9OX0lTX0dOT01FIC1lcSAxIF0gOyB0aGVuCi0gICAgICAg ICAgICAgIyAibm90IGEgdHR5IiBpcyBjb3JyZWN0IHdpdGggVE1UIHRvb2wKLSAgICAgICAgICAg ICBpZiBlY2hvICIkVFRZIiB8IGdyZXAgLUUgJ3R0eXxjb25zb2xlJyB8IGdyZXAgLXYgIm5vdCBh IHR0eSIgOyB0aGVuCi1AQCAtMjE3LDYgKzIyMCwyMCBAQCBzYXZlX3NjcmVlbigpCi0gfQotIAot IAotK2R1bXBfc2NyZWVuX29mX3Rlc3RfY2FzZXMoKQotK3sKLSsgICAgaWYgdGVzdCB4IiRTQ1JF RU5fTE9HIiAhPSB4U1RET1VUIDsgdGhlbgotKyAgICAgICAgcmV0dXJuCi0rICAgIGZpCi0rICAg IGZvciBwbmcgaW4gIiRURVNUX1VTRVJfSE9NRSIvKi5wbmcgOyBkbwotKyAgICAgICAgdGVzdCAt ZiAiJHBuZyIgfHwgY29udGludWUKLSsgICAgICAgIGVjaG8gIiMjIER1bXAgc3RhcnQgJHBuZyIg Mj4+JFRFU1RfTE9HIDE+PiRURVNUX0xPRwotKyAgICAgICAgYmFzZTY0ICIkcG5nIiAgICAgICAg ICAgICAyPj4kVEVTVF9MT0cgMT4+JFRFU1RfTE9HCi0rICAgICAgICBlY2hvICIjIyBEdW1wIGVu ZCAkcG5nIiAgIDI+PiRURVNUX0xPRyAxPj4kVEVTVF9MT0cKLSsgICAgZG9uZQotK30KLSsKLSsK LSBjcmVhdGVfdGVzdF91c2VyKCkKLSB7Ci0gICAgIGlmIGdyZXAgLXEgJFRFU1RfVVNFUiAvZXRj L3Bhc3N3ZDsgdGhlbgotQEAgLTIzMCwxMCArMjQ3LDExIEBAIGNyZWF0ZV90ZXN0X3VzZXIoKQot IAotIGNyZWF0ZV9hdXRvbG9naW5fZ2RtKCkKLSB7Ci0tICAgIGlmIHRlc3QgLWYgJEdETV9DT05G ICYmIGdyZXAgLXEgJFRFU1RfVVNFUiAkR0RNX0NPTkY7IHRoZW4KLSsgICAgbWtkaXIgLXAgIGBk aXJuYW1lICIkR0RNX0NPTkYiYAotKyAgICBpZiB0ZXN0IC1mICIkR0RNX0NPTkYiICYmIGdyZXAg LXEgIiRURVNUX1VTRVIiICIkR0RNX0NPTkYiOyB0aGVuCi0gICAgICAgICByZXR1cm47Ci0gICAg IGZpCi0tICAgIGNhdCA+ICRHRE1fQ09ORiA8PCBfRU9GX0dETV9DT05GCi0rICAgIGNhdCA+ICIk R0RNX0NPTkYiIDw8IF9FT0ZfR0RNX0NPTkYKLSBbZGFlbW9uXQotIEF1dG9tYXRpY0xvZ2luRW5h YmxlPXRydWUKLSBBdXRvbWF0aWNMb2dpbj0kVEVTVF9VU0VSCi1AQCAtMjU2LDcgKzI3NCwxMiBA QCBjcmVhdGVfeGRnX2F1dG9zdGFydCgpCi0gICAgICAgICBleGl0IDEKLSAgICAgZmkKLSAgICAg bWtkaXIgLXAgIiRURVNUX1VTRVJfSE9NRS8uY29uZmlnL2F1dG9zdGFydCIKLS0gICAgc2VkIC1l ICJzL1woXkV4ZWM9LipcKXRlc3RzIGlidXNcKC4qXCkvXDF0ZXN0cyAkVEVTVFNcMi8iICIkZGVz a3RvcF9maWxlIiBcCi0rICAgIEFSR1NfUExVUz0iIgotKyAgICBpZiB0ZXN0IHgiJFNDUkVFTl9M T0ciICE9IHggOyB0aGVuCi0rICAgICAgICBBUkdTX1BMVVM9IiRBUkdTX1BMVVMgLS1zY3JlZW5k dW1wICRTQ1JFRU5fTE9HIgotKyAgICBmaQotKyAgICBzZWQgLWUgInMvXCheRXhlYz0uKlwpdGVz dHMgaWJ1c1woLipcKS9cMXRlc3RzICRURVNUUyAkQVJHU19QTFVTXDIvIiBcCi0rICAgICAgICAi JGRlc2t0b3BfZmlsZSIgXAotICAgICAgICAgPiAiJFRFU1RfVVNFUl9IT01FLy5jb25maWcvYXV0 b3N0YXJ0LyRBVVRPU1RBUlRfREVTS1RPUF9GSUxFIgotICAgICBMSU5FPSJBdXRvc3RhcnRDb25k aXRpb249aWYtZXhpc3RzICRURVNUX1VTRVJfSE9NRS8uY29uZmlnL2F1dG9zdGFydC8kQVVUT1NU QVJUX0RFU0tUT1BfRklMRSIKLSAgICAgZWNobyAiJExJTkUiID4+ICIkVEVTVF9VU0VSX0hPTUUv LmNvbmZpZy9hdXRvc3RhcnQvJEFVVE9TVEFSVF9ERVNLVE9QX0ZJTEUiCi1AQCAtMzM0LDYgKzM1 NywyMSBAQCBpbml0X3Nlc3Npb24oKQotICAgICAgICAgVEVTVFM9J2lidXMnCi0gICAgIGZpCi0g ICAgIGNoZWNrX3R0eQotKyAgICBJU19TWVNURU1fQUNDT1VOVD1mYWxzZQotKyAgICBpZiBbICIk TE9HSU5fVVNFUiIgPSAicm9vdCIgXSA7IHRoZW4KLSsgICAgICAgICAgICBJU19TWVNURU1fQUND T1VOVD10cnVlCi0rICAgIGZpCi0rICAgIGlmIHRlc3QgeCIkU0VTU0lPTl9MQU5HIiA9IHggOyB0 aGVuCi0rICAgICAgICBTRVNTSU9OX0xBTkc9JExBTkcKLSsgICAgZmkKLSsgICAgaWYgdGVzdCB4 IiRTQ1JFRU5fTE9HIiAhPSB4IDsgdGhlbgotKyAgICAgICAgZXhwb3J0IElCVVNfVEVTVF9TQ1JF RU5TSE9UPTEKLSsgICAgZmkKLSsKLSsgICAgaWYgISBlY2hvICIkUFJPR05BTUUiIHwgZ3JlcCAt cSBydW5uZXIgOyB0aGVuCi0rICAgICAgICByZXR1cm4KLSsgICAgZmkKLSsKLSAgICAgaWYgWyAk RU5BQkxFRF9TWVNURU1EIC1lcSAxIF0gJiYgWyAgJFNFU1NJT05fSVNfR05PTUUgLWVxIDEgXSA7 IHRoZW4KLSAgICAgICAgIFNFU1NJT05fRklMRTE9Ii91c3IvbGliL3N5c3RlbWQvc3lzdGVtL2du b21lLWhlYWRsZXNzLXNlc3Npb25ALnNlcnZpY2UiCi0gICAgICAgICBTRVNTSU9OX0ZJTEUyPSIv dXNyL2xpYi9zeXN0ZW1kL3N5c3RlbS9ncmFwaGljYWwudGFyZ2V0IgotQEAgLTM2NSwxMyArNDAz LDYgQEAgaW5pdF9zZXNzaW9uKCkKLSAgICAgICAgIHRvdWNoICRMT0dJTl9IT01FLy5jb25maWcv Z25vbWUtaW5pdGlhbC1zZXR1cC1kb25lCi0gICAgICAgICBjaG93biAtUiAkTE9HSU5fVVNFUiAk TE9HSU5fSE9NRS8uY29uZmlnCi0gICAgIGZpCi0tICAgIElTX1NZU1RFTV9BQ0NPVU5UPWZhbHNl Ci0tICAgIGlmIFsgIiRMT0dJTl9VU0VSIiA9ICJyb290IiBdIDsgdGhlbgotLSAgICAgICAgICAg IElTX1NZU1RFTV9BQ0NPVU5UPXRydWUKLS0gICAgZmkKLS0gICAgaWYgdGVzdCB4IiRTRVNTSU9O X0xBTkciID0geCA7IHRoZW4KLS0gICAgICAgIFNFU1NJT05fTEFORz0kTEFORwotLSAgICBmaQot ICAgICBpZiB0ZXN0IC1mIC92YXIvbGliL0FjY291bnRzU2VydmljZS91c2Vycy8kTE9HSU5fVVNF UjsgdGhlbgotICAgICAgICAgc2VkIC1pIC1lICJzL1woTGFuZ3VhZ2U9XCkuKi9cMSRTRVNTSU9O X0xBTkcvIiBcCi0gICAgICAgICAgICAgICAgIC92YXIvbGliL0FjY291bnRzU2VydmljZS91c2Vy cy8kTE9HSU5fVVNFUgotQEAgLTM4NCw2ICs0MTUsMzUgQEAgWFNlc3Npb249Z25vbWUKLSBTeXN0 ZW1BY2NvdW50PSRJU19TWVNURU1fQUNDT1VOVAotIF9FT0ZfQVNfQ09ORgotICAgICBmaQotKyAg ICAjIGZvciBpYnVzLWtleXByZXNzCi0rICAgIGxzIC1sIC9kZXYvdWlucHV0IDI+PiRURVNUX0xP RyAxPj4kVEVTVF9MT0cKLSsgICAgY2hncnAgaXRlc3R1c2VyIC9kZXYvdWlucHV0Ci0rICAgIGNo bW9kIGcrcncgL2Rldi91aW5wdXQKLSsgICAgbHMgLWwgL2Rldi91aW5wdXQgMj4+JFRFU1RfTE9H IDE+PiRURVNUX0xPRwotKwotKyAgICAjIGFjaXRvbi5pZCAnb3JnLmZyZWVkZXNrdG9wLmZ3dXBk LnJlZnJlc2gtcmVtb3RlJyBhbmQKLSsgICAgIyBhY2l0b24ubWVzc2FnZSAiQXV0aGVudGljYXRp b24gaXMgcmVxdWlyZWQgdG8gdXBkYXRlIHRoZSBtZXRhZGF0YSBmb3IgYSAiCi0rICAgICMgImNv bmZpZ3VyZWQgcmVtb3RlIHVzZWQgZm9yIGZpcm13YXJlIHVwZGF0ZXMiIGlzIGRlZmluZWQgaW4K LSsgICAgIyAvdXNyL3NoYXJlL3BvbGtpdC0xL2FjdGlvbnMvb3JnLmZyZWVkZXNrdG9wLmZ3dXBk LnBvbGljeSBmaWxlCi0rICAgICMgYW5kIHRoYXQgbWVzc2FnZSBpcyBzaG93biBpbiAiQXV0aGVu dGljYXRpb24gUmVxdWlyZWQiIGRpYWxvZyBpbgotKyAgICAjIGdub21lLXNoZWxsIGhlYWRsZXNz IHNlc3Npb24gaW4gR05PTUUgNTAuCi0rICAgICMgYWN0aW9uLmlkICdvcmcuZnJlZWRlc2t0b3Au RmxhdHBhay5tZXRhZGF0YS11cGRhdGUnIGFuZAotKyAgICAjIGFjdGlvbi5pZCAnb3JnLmZyZWVk ZXNrdG9wLkZsYXRwYWsubW9kaWZ5LXJlcG8nIGFyZSBhbHNvIHNob3duLgotKyAgICBydWxlX2Zp bGU9IiRBVVRPU1RBUlRfREVTS1RPUF9ESVIvJFBPTEtJVF9DVVNUT01fUlVMRV9GSUxFIgotKyAg ICBpZiB0ZXN0ICEgLWYgIiRydWxlX2ZpbGUiIDsgdGhlbgotKyAgICAgICAgcHJpbnRfbG9nIC1l ICIke1JFRH1GQUlMJHtOQ306ICR7UkVEfUVSUk9SJHtOQ306IE5vICRydWxlX2ZpbGUiCi0rICAg ICAgICBleGl0IDEKLSsgICAgZmkKLSsgICAgUE9MS0lUX0NVU1RPTV9SVUxFX0RJUj0iL2V0Yy9w b2xraXQtMS9ydWxlcy5kIgotKyAgICBpZiB0ZXN0ICEgLWQgIiRQT0xLSVRfQ1VTVE9NX1JVTEVf RElSIiA7IHRoZW4KLSsgICAgICAgIG1rZGlyIC1wICAiJFBPTEtJVF9DVVNUT01fUlVMRV9ESVIi Ci0rICAgICAgICBjaG1vZCA3NTUgIiRQT0xLSVRfQ1VTVE9NX1JVTEVfRElSIgotKyAgICBmaQot KyAgICBpZiB0ZXN0ICEgLWYgIiRQT0xLSVRfQ1VTVE9NX1JVTEVfRElSLyRQT0xLSVRfQ1VTVE9N X1JVTEVfRklMRSIgOyB0aGVuCi0rICAgICAgICBjcCAiJHJ1bGVfZmlsZSIgIiRQT0xLSVRfQ1VT VE9NX1JVTEVfRElSLyRQT0xLSVRfQ1VTVE9NX1JVTEVfRklMRSIKLSsgICAgICAgIGNobW9kIDY0 NCAiJFBPTEtJVF9DVVNUT01fUlVMRV9ESVIvJFBPTEtJVF9DVVNUT01fUlVMRV9GSUxFIgotKyAg ICAgICAgc3lzdGVtY3RsIHJlc3RhcnQgcG9sa2l0Ci0rICAgIGZpCi0gCi0gICAgICMgUHJldmVu dCBmcm9tIGxhdW5jaGluZyBhIFhERyBkaWFsb2cKLSAgICAgWERHX0xPQ0FMRV9GSUxFPSIkTE9H SU5fSE9NRS8uY29uZmlnL3VzZXItZGlycy5sb2NhbGUiCi1AQCAtNTAzLDE5ICs1NjMsMzkgQEAg aW5pdF9nbm9tZSgpCi0gICAgICMjIGdub21lLWhlYWRsZXNzLXNlc3Npb24gZG9lcyBub3QgcHVs bCBMQU5HIGZyb20gQWNjb3VudHNTZXJ2aWNlLgotICAgICAjIwotICAgICBpZiBbICRMT0dJTl9V U0VSICE9ICRVU0VSIF0gOyB0aGVuCi0tICAgICAgICBTSEVMTF9TRVJWSUNFX0ZJTEU9Im9yZy5n bm9tZS5TaGVsbEB3YXlsYW5kLnNlcnZpY2UiCi0rICAgICAgICBTSEVMTF9TRVJWSUNFX0ZJTEU9 Im9yZy5nbm9tZS5TaGVsbEAuc2VydmljZSIKLSsgICAgICAgIFNIRUxMX1NFUlZJQ0VfREVTVF9G SUxFPSJvcmcuZ25vbWUuU2hlbGxAdXNlci5zZXJ2aWNlIgotICAgICAgICAgU1lTVEVNRF9VU0VS X0RJUj0iJFRFU1RfVVNFUl9IT01FLy5jb25maWcvc3lzdGVtZC91c2VyIgotICAgICAgICAgRU5W X1VTRVJfRElSPSIkVEVTVF9VU0VSX0hPTUUvLmNvbmZpZy9lbnZpcm9ubWVudC5kIgotICAgICAg ICAgTE9DQUxFX0NPTkY9IiRFTlZfVVNFUl9ESVIvaWJ1cy5jb25mIgotKyAgICAgICAgIyBJZiBH Tk9NRSB2ZXJzaW9uIDwgNTAKLSsgICAgICAgIGlmIHRlc3QgISAtZiAiJFNZU1RFTURfU1lTVEVN X0RJUi8kU0hFTExfU0VSVklDRV9GSUxFIiA7IHRoZW4KLSsgICAgICAgICAgICBTSEVMTF9TRVJW SUNFX0ZJTEU9Im9yZy5nbm9tZS5TaGVsbEB3YXlsYW5kLnNlcnZpY2UiCi0rICAgICAgICAgICAg U0hFTExfU0VSVklDRV9ERVNUX0ZJTEU9IiRTSEVMTF9TRVJWSUNFX0ZJTEUiCi0rICAgICAgICBl bHNlCi0rICAgICAgICAgICAgR05PTUVfU0hFTExfV0FZTEFORF9DT01NQU5EPSIkR05PTUVfU0hF TExfV0FZTEFORF9DT01NQU5EIC0tbW9kZT0laSIKLSsgICAgICAgIGZpCi0rICAgICAgICBpZiB0 ZXN0IHgiJFNDUkVFTl9MT0ciICE9IHggOyB0aGVuCi0rICAgICAgICAgICAgR05PTUVfU0hFTExf V0FZTEFORF9DT01NQU5EPSIkR05PTUVfU0hFTExfV0FZTEFORF9DT01NQU5EIC0tdW5zYWZlLW1v ZGUiCi0rICAgICAgICBmaQotICAgICAgICAgaWYgdGVzdCAkSEFWRV9HUkFQSElDUyAtbmUgMSA7 IHRoZW4KLSAgICAgICAgICAgICBpZiB0ZXN0ICEgLWYgIiRTWVNURU1EX1VTRVJfRElSLyRTSEVM TF9TRVJWSUNFX0ZJTEUiIDsgdGhlbgotKyAgICAgICAgICAgICAgICBQUkVWX0RJUj0iJFBXRCIK LSAgICAgICAgICAgICAgICAgbWtkaXIgLXAgIiRTWVNURU1EX1VTRVJfRElSIgotLSAgICAgICAg ICAgICAgICBwdXNoZCAiJFNZU1RFTURfVVNFUl9ESVIiCi0rICAgICAgICAgICAgICAgIGNkICIk U1lTVEVNRF9VU0VSX0RJUiIKLSsgICAgICAgICAgICAgICAgIyBUaGUgdXNlciBzeXN0ZW1kIGFu ZCAkR05PTUVfU0hFTExfV0FZTEFORF9DT01NQU5EIG5vIGxvbmdlcgotKyAgICAgICAgICAgICAg ICAjIGxvYWRzICRMT0NBTEVfQ09ORiBmaWxlCi0rICAgICAgICAgICAgICAgICMgU28gc2V0cyBF bnZpcm9ubWVudCBpbiB0aGUgc2VydmljZSBmaWxlLgotICAgICAgICAgICAgICAgICBzZWQgLWUg InN8XkV4ZWNTdGFydD0uKnxFeGVjU3RhcnQ9JEdOT01FX1NIRUxMX1dBWUxBTkRfQ09NTUFORHwi IFwKLS0gICAgICAgICAgICAgICAgICAgICRTWVNURU1EX1NZU1RFTV9ESVIvJFNIRUxMX1NFUlZJ Q0VfRklMRSBcCi0tICAgICAgICAgICAgICAgICAgICA+ICRTSEVMTF9TRVJWSUNFX0ZJTEUKLS0g ICAgICAgICAgICAgICAgZGlmZiAkU1lTVEVNRF9TWVNURU1fRElSLyRTSEVMTF9TRVJWSUNFX0ZJ TEUgJFNIRUxMX1NFUlZJQ0VfRklMRQotLSAgICAgICAgICAgICAgICBwb3BkCi0rICAgICAgICAg ICAgICAgICAgICAkU1lTVEVNRF9TWVNURU1fRElSLyRTSEVMTF9TRVJWSUNFX0ZJTEUgfCBcCi0r ICAgICAgICAgICAgICAgIHNlZCAtZSAiL15FeGVjU3RhcnQ9L2lcXAotK0Vudmlyb25tZW50PUxB Tkc9JERRJFNFU1NJT05fTEFORyREUSIgXAotKyAgICAgICAgICAgICAgICAgICAgPiAiJFNIRUxM X1NFUlZJQ0VfREVTVF9GSUxFIgotKyAgICAgICAgICAgICAgICBlY2hvICIjIGRpZmYgJFNZU1RF TURfU1lTVEVNX0RJUi8kU0hFTExfU0VSVklDRV9GSUxFIiBcCi0rICAgICAgICAgICAgICAgICAg ICAgIiRTSEVMTF9TRVJWSUNFX0RFU1RfRklMRSIgMj4+JFRFU1RfTE9HIDE+PiRURVNUX0xPRwot KyAgICAgICAgICAgICAgICBkaWZmICIkU1lTVEVNRF9TWVNURU1fRElSLyRTSEVMTF9TRVJWSUNF X0ZJTEUiIFwKLSsgICAgICAgICAgICAgICAgICAgICAiJFNIRUxMX1NFUlZJQ0VfREVTVF9GSUxF IiAyPj4kVEVTVF9MT0cgMT4+JFRFU1RfTE9HCi0rICAgICAgICAgICAgICAgIGNkICIkUFJFVl9E SVIiCi0gICAgICAgICAgICAgZmkKLSAgICAgICAgICAgICBta2RpciAtcCAiJEVOVl9VU0VSX0RJ UiIKLSAgICAgICAgICAgICBjYXQgPiAiJExPQ0FMRV9DT05GIiA8PCBfRU9GX0xPQ0FMRV9DT05G Ci1AQCAtNTkwLDcgKzY3MCw3IEBAIG9wZXJhdGVfZGVza3RvcF93aXRoX3N5c3RlbWQoKQotICAg ICAgICAgInN0YXJ0Iikgc3lzdGVtY3RsIGlzb2xhdGUgZ3JhcGhpY2FsLnRhcmdldAotICAgICAg ICAgICAgICAgICAgZWNobyAiIgotICAgICAgICAgICAgICAgICAgOzsKLS0gICAgICAgICJzdG9w IikgIGluaXQgMzs7Ci0rICAgICAgICAic3RvcCIpICBzeXN0ZW1jdGwgaXNvbGF0ZSBtdWx0aS11 c2VyLnRhcmdldDs7Ci0gICAgICAgICAiIikgICAgICBwcmludF9sb2cgLWUgIiR7UkVEfUZBSUwk e05DfTogJHtSRUR9RVJST1Ike05DfTogV3JvbmcgY29tbWFuZCAkQ09NTUFORCIKLSAgICAgICAg ICAgICAgICAgIGV4aXQgMTs7Ci0gICAgICAgICBlc2FjCi1AQCAtODA4LDYgKzg4OCw4IEBAIHJ1 bl9nbm9tZV9kZXNrdG9wX3Rlc3RpbmdfcnVubmVyKCkKLSAgICAgZmFpbD0wCi0gICAgIGlmIGVj aG8gJFBST0dOQU1FIHwgZ3JlcCAtcSBhdXRvc3RhcnQgOyB0aGVuCi0gICAgICAgICBleHBvcnQg SUJVU19EQUVNT05fV0lUSF9TWVNURU1EPTEKLSsgICAgICAgICNleHBvcnQgR1NLX1JFTkRFUkVS PWNhaXJvCi0rICAgICAgICBleHBvcnQgVktfSUNEX0ZJTEVOQU1FUz0vdXNyL3NoYXJlL3Z1bGth bi9pY2QuZC9sdnBfaWNkLmB1bmFtZSAtbWAuanNvbgotICAgICBmaQotICAgICBmb3IgdHN0IGlu ICRURVNUUzsgZG8KLSAgICAgICAgIHRzdF9kaXI9IiRURVNUX0NBU0VfRElSLyR0c3QiCi1AQCAt ODQwLDcgKzkyMiw3IEBAIEVPRgotIHJ1bl90ZXN0X3N1aXRlKCkKLSB7Ci0gICAgIHByaW50X2xv ZyAtZSAiU3RhcnQgdGVzdCBzdWl0ZSBgZGF0ZSAnKyVGICVIOiVNOiVTOiVOJ2AiCi0tICAgIGlm IGVjaG8gJFBST0dOQU1FIHwgZ3JlcCAtcSBydW5uZXIgOyB0aGVuCi0rICAgIGlmIGVjaG8gIiRQ Uk9HTkFNRSIgfCBncmVwIC1xIHJ1bm5lciA7IHRoZW4KLSAgICAgICAgIGlmIFsgJEVOQUJMRURf U1lTVEVNRCAtZXEgMSBdICYmIFsgICRTRVNTSU9OX0lTX0dOT01FIC1lcSAxIF0gOyB0aGVuCi0g ICAgICAgICAgICAgd2FpdF9mb3Jfc3lzdGVtZF9hdXRvc3RhcnQKLSAgICAgICAgICAgICByZXR1 cm4KLUBAIC05MDMsNyArOTg1LDcgQEAgZmluaXQoKQotICAgICAgICAgICAgIGVjaG8gIiRMRUZU X0NBTEVOREFSIiB8IGF3ayAne3ByaW50ICQyfScgfCB4YXJncyBraWxsCi0gICAgICAgICBmaQot ICAgICBmaQotLSAgICBpZiBlY2hvICRQUk9HTkFNRSB8IGdyZXAgLXEgcnVubmVyIDsgdGhlbgot KyAgICBpZiBlY2hvICIkUFJPR05BTUUiIHwgZ3JlcCAtcSBydW5uZXIgOyB0aGVuCi0gICAgICAg ICBpZiBbICRFTkFCTEVEX1NZU1RFTUQgLWVxIDEgXSAmJiBbICAkU0VTU0lPTl9JU19HTk9NRSAt ZXEgMSBdIDsgdGhlbgotICAgICAgICAgICAgIG9wZXJhdGVfZGVza3RvcF93aXRoX3N5c3RlbWQg InN0b3AiCi0gICAgICAgICBmaQotZGlmZiAtLWdpdCBhL3NyYy90ZXN0cy9tZXNvbi5idWlsZCBi L3NyYy90ZXN0cy9tZXNvbi5idWlsZAotaW5kZXggOTRhYzAzZTAuLjBiYWE2YzhmIDEwMDY0NAot LS0tIGEvc3JjL3Rlc3RzL21lc29uLmJ1aWxkCi0rKysgYi9zcmMvdGVzdHMvbWVzb24uYnVpbGQK LUBAIC0xOTMsNCArMTkzLDkgQEAgaWYgZ2V0X29wdGlvbignaW5zdGFsbC10ZXN0cycpCi0gICAg IH0sCi0gICAgIGluc3RhbGxfZGlyOiBwa2dkYXRhZGlyIC8gJ3Rlc3RzJywKLSAgICkKLSsKLSsg IGluc3RhbGxfZGF0YSgKLSsgICAgJzEwMC1pYnVzLWNpLnJ1bGVzJywKLSsgICAgaW5zdGFsbF9k aXI6IHBrZ2RhdGFkaXIgLyAndGVzdHMnLAotKyAgKQotIGVuZGlmCi1kaWZmIC0tZ2l0IGEvc3Jj L3Rlc3RzL3J1bnRlc3QgYi9zcmMvdGVzdHMvcnVudGVzdAotaW5kZXggNGU1NDQyMGYuLmRlZTY3 NWNiIDEwMDc1NQotLS0tIGEvc3JjL3Rlc3RzL3J1bnRlc3QKLSsrKyBiL3NyYy90ZXN0cy9ydW50 ZXN0Ci1AQCAtOTQsMTIgKzk0LDEyIEBAIGZ1bmNfZGlybmFtZSAoKSB7Ci0gCi0gIyBLaWxsIGli dXMtZGFlbW9uIHByb2Nlc3MgYW5kIHJlbW92ZSB0ZW1wb3JhcnkgZmlsZXMuCi0gZnVuY19jbGVh bnVwICgpIHsKLS0gICAgdHN0ZGlyPSQxCi0tICAgIGlmIHRlc3QgLWYgJHRzdGRpci9pYnVzLWRh ZW1vbi5waWQ7IHRoZW4KLS0gICAgICAgIC4gJHRzdGRpci9pYnVzLWRhZW1vbi5waWQKLSsgICAg dHN0ZGlyPSIkMSIKLSsgICAgaWYgdGVzdCAtZiAiJHRzdGRpci9pYnVzLWRhZW1vbi5waWQiOyB0 aGVuCi0rICAgICAgICAuICIkdHN0ZGlyL2lidXMtZGFlbW9uLnBpZCIKLSAgICAgICAgIGtpbGwg JElCVVNfREFFTU9OX1BJRCA+IC9kZXYvbnVsbCAyPiYxCi0gICAgIGZpCi0tICAgIHJtIC1mciAk dHN0ZGlyCi0rICAgIHJtIC1mciAiJHRzdGRpciIKLSB9Ci0gCi0gIyBQcmVwYXJlIGNvbXBvbmVu dCBmaWxlcyBuZWNlc3NhcnkgZm9yIHRlc3RpbmcsIHVuZGVyIGNvbXBvbmVudHMvLgotQEAgLTEx NSwxMyArMTE1LDE4IEBAIGZ1bmNfY29weV9jb21wb25lbnQgKCkgewotICAgICBmaQotIH0KLSAK LS10cmFwICdmdW5jX2NsZWFudXAgJHRzdGRpcicgMSAyIDMgMTUKLSt0cmFwICdmdW5jX2NsZWFu dXAgIiR0c3RkaXIiJyAxIDIgMyAxNQotIAotLXRzdD0kMTsgc2hpZnQKLS10c3RkaXI9dG1wLWBm dW5jX2Jhc2VuYW1lICR0c3RgCi0rdHN0PSIkMSI7IHNoaWZ0Ci0rcmVhbF90c3Q9IiR0c3QiCi0r aWYgZWNobyAiJHRzdCIgfCBncmVwIC1xICdweXRob24nIDsgdGhlbgotKyAgICByZWFsX3RzdD0i JDEiCi0rZmkKLStyZWFsX3RzdF9uYW1lPWBmdW5jX2Jhc2VuYW1lICIkcmVhbF90c3QiYAotK3Rz dGRpcj0idG1wLSRyZWFsX3RzdF9uYW1lIgotIAotIGZvciB0IGluICRESVNBQkxFX0dVSV9URVNU UzsgZG8KLS0gICAgaWYgdGVzdCAkdCA9IGBmdW5jX2Jhc2VuYW1lICR0c3RgOyB0aGVuCi0rICAg IGlmIHRlc3QgIiR0IiA9ICIkcmVhbF90c3RfbmFtZSI7IHRoZW4KLSAgICAgICAgIGV4aXQgNzcK LSAgICAgZmkKLSBkb25lCi1AQCAtMTM0LDI0ICsxMzksMjIgQEAgZmkKLSAKLSBydW5fdGVzdF9j YXNlKCkKLSB7Ci0tICAgIHRlc3QgLWQgJHRzdGRpciB8fCBta2RpciAkdHN0ZGlyCi0tICAgIGJh Y2t1cF9kaXI9JFBXRAotLSAgICBjZCAkdHN0ZGlyCi0tCi0gICAgIGlmIGVjaG8gIiR0c3QiIHwg Z3JlcCAtcSAncHl0aG9uJyA7IHRoZW4KLSAgICAgICAgICMgQ29udmVydCB0aGUgcmVsYXRpdmUg cGF0aCB0byB0aGUgYWJzb2x1dGUgcGF0aC4KLSAgICAgICAgIGlmIGVjaG8gIiR0c3QiIHwgZ3Jl cCAtcSAiXC4vIiA7IHRoZW4KLS0gICAgICAgICAgICB0c3Q9YHJlYWxwYXRoICR0c3RgCi0rICAg ICAgICAgICAgdHN0PWByZWFscGF0aCAiJHRzdCJgCi0gICAgICAgICBlbGlmICEgZWNobyAiJHRz dCIgfCBncmVwIC1xICIvIiA7IHRoZW4KLS0gICAgICAgICAgICB0c3Q9YGNvbW1hbmQgLXYgJHRz dGAKLSsgICAgICAgICAgICB0c3Q9YGNvbW1hbmQgLXYgIiR0c3QiYAotICAgICAgICAgZmkKLS0g ICAgICAgIG5hbWU9YGZ1bmNfYmFzZW5hbWUgIiQxImAKLS0gICAgZWxzZQotLSAgICAgICAgbmFt ZT1gZnVuY19iYXNlbmFtZSAiJHRzdCJgCi0gICAgIGZpCi0rCi0rICAgIHRlc3QgLWQgIiR0c3Rk aXIiIHx8IG1rZGlyICIkdHN0ZGlyIgotKyAgICBiYWNrdXBfZGlyPSIkUFdEIgotKyAgICBjZCAi JHRzdGRpciIKLSsKLSAgICAgbmVlZF9idXM9bm8KLSAgICAgZm9yIHQgaW4gJEJVU19SRVFVSVJF RF9URVNUUzsgZG8KLS0gICAgICAgIGlmIHRlc3QgIiR0IiA9ICIkbmFtZSI7IHRoZW4KLSsgICAg ICAgIGlmIHRlc3QgIiR0IiA9ICIkcmVhbF90c3RfbmFtZSI7IHRoZW4KLSAgICAgICAgICAgICBu ZWVkX2J1cz15ZXMKLSAgICAgICAgIGZpCi0gICAgIGRvbmUKLUBAIC0xNjUsMTAgKzE2OCwxMCBA QCBydW5fdGVzdF9jYXNlKCkKLSAgICAgICAgIGZ1bmNfY29weV9jb21wb25lbnQgIiR0ZXN0X3Rv cF9zcmNkaXIvZW5naW5lL3NpbXBsZS54bWwiCi0gICAgICAgICBmdW5jX2NvcHlfY29tcG9uZW50 ICIkdGVzdF90b3Bfc3JjZGlyL2NvbmYvbWVtY29uZi9tZW1jb25mLnhtbCIKLSAKLS0gICAgICAg IElCVVNfQ09NUE9ORU5UX1BBVEg9JFBXRC9jb21wb25lbnRzCi0rICAgICAgICBJQlVTX0NPTVBP TkVOVF9QQVRIPSIkUFdEL2NvbXBvbmVudHMiCi0gICAgICAgICBleHBvcnQgSUJVU19DT01QT05F TlRfUEFUSAotIAotLSAgICAgICAgSUJVU19BRERSRVNTX0ZJTEU9JFBXRC9pYnVzLWRhZW1vbi5w aWQKLSsgICAgICAgIElCVVNfQUREUkVTU19GSUxFPSIkUFdEL2lidXMtZGFlbW9uLnBpZCIKLSAg ICAgICAgIGV4cG9ydCBJQlVTX0FERFJFU1NfRklMRQotIAotICAgICAgICAgdGVzdCAkVEVTVF9H VEsgLWVxIDEgJiYgY2FzZSAkVEVTVF9HVEtfVkVSU0lPTiBpbgotQEAgLTE5NCw5ICsxOTcsOSBA QCBydW5fdGVzdF9jYXNlKCkKLSAgICAgICAgICAgICAgICAgZWNobyAiTk9UIEZPVU5EICR0b3Bf YnVpbGRkaXIvY2xpZW50L2d0azMvaW0taWJ1cy5zbyIKLSAgICAgICAgICAgICAgICAgZXhpdCAx Ci0gICAgICAgICAgICAgZmkKLS0gICAgICAgICAgICBHVEtfSU1fTU9EVUxFX0ZJTEU9JFBXRC9p bWNhY2hlCi0rICAgICAgICAgICAgR1RLX0lNX01PRFVMRV9GSUxFPSIkUFdEL2ltY2FjaGUiCi0g ICAgICAgICAgICAgZXhwb3J0IEdUS19JTV9NT0RVTEVfRklMRQotLSAgICAgICAgICAgICRHVEtf UVVFUllfTU9EVUxFICIkSU1fSUJVU19TTyIgPiAkR1RLX0lNX01PRFVMRV9GSUxFCi0rICAgICAg ICAgICAgJEdUS19RVUVSWV9NT0RVTEUgIiRJTV9JQlVTX1NPIiA+ICIkR1RLX0lNX01PRFVMRV9G SUxFIgotICAgICAgICAgICAgIDs7Ci0gICAgICAgICAqKQotICAgICAgICAgICAgIGVjaG8gIk5P VCBTVVBQT1JUIEdUS19WRVJTSU9OICRURVNUX0dUS19WRVJTSU9OIgotQEAgLTIwNCwxOSArMjA3 LDE5IEBAIHJ1bl90ZXN0X2Nhc2UoKQotICAgICAgICAgICAgIDs7Ci0gICAgICAgICBlc2FjIHx8 IDoKLSAKLS0gICAgICAgIGNwICIkdGVzdF90b3Bfc3JjZGlyL2RhdGEvZGNvbmYvJElCVVNfU0NI RU1BX0ZJTEUiICRQV0QKLS0gICAgICAgIGdsaWItY29tcGlsZS1zY2hlbWFzICRQV0QgMj4vZGV2 L251bGwKLSsgICAgICAgIGNwICIkdGVzdF90b3Bfc3JjZGlyL2RhdGEvZGNvbmYvJElCVVNfU0NI RU1BX0ZJTEUiICIkUFdEIgotKyAgICAgICAgZ2xpYi1jb21waWxlLXNjaGVtYXMgIiRQV0QiIDI+ L2Rldi9udWxsCi0gICAgICAgICBpZiB0ZXN0ICQ/IC1uZSAwIDsgdGhlbgotICAgICAgICAgICAg IGVjaG8gIkZBSUxFRCBnbGliLWNvbXBpbGUtc2NoZW1hcyIKLSAgICAgICAgICAgICByZXR2YWw9 MQotICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgZmkKLS0gICAgICAgIGlmIHRlc3QgISAt ZiAkUFdEL2dzY2hlbWFzLmNvbXBpbGVkIDsgdGhlbgotKyAgICAgICAgaWYgdGVzdCAhIC1mICIk UFdEL2dzY2hlbWFzLmNvbXBpbGVkIiA7IHRoZW4KLSAgICAgICAgICAgICBlY2hvICJOT1QgRk9V TkQgJFBXRC9nc2NoZW1hcy5jb21waWxlZCIKLSAgICAgICAgICAgICByZXR2YWw9MQotICAgICAg ICAgICAgIHJldHVybgotICAgICAgICAgZmkKLS0gICAgICAgIGV4cG9ydCBHU0VUVElOR1NfU0NI RU1BX0RJUj0kUFdECi0rICAgICAgICBleHBvcnQgR1NFVFRJTkdTX1NDSEVNQV9ESVI9IiRQV0Qi Ci0gCi0gICAgICAgICAjIFN0YXJ0IGlidXMtZGFlbW9uLgotICAgICAgICAgREFFTU9OX0FSR1M9 JwotQEAgLTIyNywxMCArMjMwLDEwIEBAIHJ1bl90ZXN0X2Nhc2UoKQotICAgICAgICAgICAgIC0t dmVyYm9zZQotICAgICAgICAgJwotICAgICAgICAgaWYgdGVzdCB4IiRESVNBQkxFX0RBRU1PTkla RV9JTl9URVNUUyIgPSB4IDsgdGhlbgotLSAgICAgICAgICAgICR0ZXN0X3RvcF9idWlsZGRpci9i dXMvaWJ1cy1kYWVtb24gXAotKyAgICAgICAgICAgICIkdGVzdF90b3BfYnVpbGRkaXIvYnVzL2li dXMtZGFlbW9uIiBcCi0gICAgICAgICAgICAgICAgICREQUVNT05fQVJHUyAtLWRhZW1vbml6ZTsK LSAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICAkdGVzdF90b3BfYnVpbGRkaXIvYnVzL2lidXMt ZGFlbW9uIFwKLSsgICAgICAgICAgICAiJHRlc3RfdG9wX2J1aWxkZGlyL2J1cy9pYnVzLWRhZW1v biIgXAotICAgICAgICAgICAgICAgICAkREFFTU9OX0FSR1MgJgotICAgICAgICAgZmkKLSAKLUBA IC0yNTAsOCArMjUzLDggQEAgcnVuX3Rlc3RfY2FzZSgpCi0gCi0gICAgIGlmIGVjaG8gIiR0c3Qi IHwgZ3JlcCAtcSAnXi8nIDsgdGhlbgotICAgICAgICAgaWYgZWNobyAiJHRzdCIgfCBncmVwIC1x ICdweXRob24nIDsgdGhlbgotLSAgICAgICAgICAgIGludGVycHJldGVyPSR0c3QKLS0gICAgICAg ICAgICB0c3Q9JDEKLSsgICAgICAgICAgICBpbnRlcnByZXRlcj0iJHRzdCIKLSsgICAgICAgICAg ICB0c3Q9IiQxIgotICAgICAgICAgICAgIHNoaWZ0Ci0gICAgICAgICAgICAgaWYgZWNobyAiJHRz dCIgfCBncmVwIC1xICdeLycgOyB0aGVuCi0gICAgICAgICAgICAgICAgICMgYWJzb2x1dGUgcGF0 aCBmb3IgTWVzb24KLUBAIC0yNjIsMjggKzI2NSwyOCBAQCBydW5fdGVzdF9jYXNlKCkKLSAgICAg ICAgICAgICBmaQotICAgICAgICAgZWxzZQotICAgICAgICAgICAgICMgYWJzb2x1dGUgcGF0aCBm b3IgTWVzb24KLS0gICAgICAgICAgICAiJHRzdCIgJHRlc3RfdG9wX3NyY2Rpci9zcmMvdGVzdHMg JHsxKyIkQCJ9Ci0rICAgICAgICAgICAgIiR0c3QiICIkdGVzdF90b3Bfc3JjZGlyL3NyYy90ZXN0 cyIgJHsxKyIkQCJ9Ci0gICAgICAgICBmaQotICAgICBlbHNlCi0gICAgICAgICAjIHJlbGF0aXZl IHBhdGggZm9yIGVhY2ggZXhlY3V0aW9uCi0tICAgICAgICAiLi4vJHRzdCIgJHRlc3RfdG9wX3Ny Y2Rpci9zcmMvdGVzdHMgJHsxKyIkQCJ9Ci0rICAgICAgICAiLi4vJHRzdCIgIiR0ZXN0X3RvcF9z cmNkaXIvc3JjL3Rlc3RzIiAkezErIiRAIn0KLSAgICAgZmkKLSAKLSAgICAgcmV0dmFsPWBleHBy ICRyZXR2YWwgXHwgJD9gCi0gCi0tICAgIGNkICRiYWNrdXBfZGlyCi0rICAgIGNkICIkYmFja3Vw X2RpciIKLSAKLS0gICAgZnVuY19jbGVhbnVwICR0c3RkaXIKLSsgICAgZnVuY19jbGVhbnVwICIk dHN0ZGlyIgotIH0KLSAKLS1lbnZmaWxlPSRzcmNkaXIvYGZ1bmNfYmFzZW5hbWUgJHRzdGAuZW52 Ci0taWYgdGVzdCAtZiAkZW52ZmlsZSA7IHRoZW4KLStlbnZmaWxlPSIkc3JjZGlyLyRyZWFsX3Rz dF9uYW1lIi5lbnYKLStpZiB0ZXN0IC1mICIkZW52ZmlsZSIgOyB0aGVuCi0gICAgIEVOVlM9ImBj YXQgJGVudmZpbGVgIgotIGZpOwotIGlmIHRlc3QgeCIkRU5WUyIgPSB4IDsgdGhlbgotICAgICBy dW5fdGVzdF9jYXNlICRACi0gZWxzZQotLSAgICBMQU5HX2JhY2t1cD0kTEFORwotKyAgICBMQU5H X2JhY2t1cD0iJExBTkciCi0gICAgIGk9MQotICAgICAjIG1lc29uYnVpbGQvbXRlc3QucHk6VEFQ UGFyc2VyLnBhcnNlX2xpbmUoKSBzYXlzOgotICAgICAjICd2ZXJzaW9uIG51bWJlciBtdXN0IGJl IG9uIHRoZSBmaXJzdCBsaW5lJwotQEAgLTMwNyw3ICszMTAsNyBAQCBlbHNlCi0gICAgICAgICB1 bnNldCBDT01QT1NFX0ZJTEUKLSAgICAgICAgIGV4cG9ydCAkZQotICAgICAgICAgIyBUQVAgaW5m byBzaG91bGQgc3RhcnQgd2l0aCAiIyAiLgotLSAgICAgICAgZWNobyAiIyBSdW4gYGZ1bmNfYmFz ZW5hbWUgJHRzdGAgb24gJGUiCi0rICAgICAgICBlY2hvICIjIFJ1biAkcmVhbF90c3RfbmFtZSBv biAkZSIKLSAgICAgICAgIGVjaG8gIiMgPT09PT09PT09PT09PT09PT09PT09PT0iCi0gICAgICAg ICBydW5fdGVzdF9jYXNlICRACi0gICAgICAgICBuYW1lPSIvImBiYXNlbmFtZSAiJDEiYCI6JExB Tkc6JENPTVBPU0VfRklMRTokTk9fTE9BRF9DT01QT1NFX0ZJTEUiCi1AQCAtMzI1LDcgKzMyOCw3 IEBAIGVsc2UKLSAgICAgYGVjaG8gIiRFTlZTImAKLSBFT0ZfRU5WUwotICAgICB1bnNldCBHX1RF U1RfUk9PVF9QUk9DRVNTCi0tICAgIGV4cG9ydCBMQU5HPSRMQU5HX2JhY2t1cAotKyAgICBleHBv cnQgTEFORz0iJExBTkdfYmFja3VwIgotIGZpCi0gCi0gZXhpdCAkcmV0dmFsCi0tLSAKLTIuNTQu MAotCi1Gcm9tIDFhMGQ5YTZiYzNhZmUyNDE4MzhjOTdjYTM4MWUxYmQwYjM3NmEyYjUgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFp bC5jb20+Ci1EYXRlOiBTdW4sIDE5IEp1bCAyMDI2IDE4OjEwOjAxICswOTAwCi1TdWJqZWN0OiBb UEFUQ0ggMi8yXSBzcmMvdGVzdHMvaWJ1cy1jb21wb3NlOiBGaXggdHlwbwotCi1GaXhlczogNDRl MjJlNWUKLS0tLQotIG1lc29uLmJ1aWxkICAgICAgICAgICAgICB8IDEgKwotIHNyYy90ZXN0cy9p YnVzLWNvbXBvc2UuYyB8IDQgKystLQotIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCsp LCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWls ZAotaW5kZXggN2NkOTA2ZDcuLmM1N2IwMDJkIDEwMDY0NAotLS0tIGEvbWVzb24uYnVpbGQKLSsr KyBiL21lc29uLmJ1aWxkCi1AQCAtMzkxLDYgKzM5MSw3IEBAIGluc3RhbGxfZW1wdHlkaXIoZ2V0 X29wdGlvbignZGF0YWRpcicpIC8gJ2lidXMnIC8gJ2VuZ2luZScpCi0gc3VtbWFyeSh7Ci0gICAn SW5zdGFsbCBwcmVmaXgnOiAgICAgICAgICAgICAgICBnZXRfb3B0aW9uKCdwcmVmaXgnKSwKLSAg ICdDRkxBR1MnOiAgICAgICAgICAgICAgICAgICAgICAgIGdldF9vcHRpb24oJ2NfYXJncycpLAot KyAgJ0xERkxBR1MnOiAgICAgICAgICAgICAgICAgICAgICAgZ2V0X29wdGlvbignY19saW5rX2Fy Z3MnKSwKLSAgICdCdWlsZCBlbmRpYW5uZXNzJzogICAgICAgICAgICAgIGVuZGlhbiwKLSAgICdQ WVRIT04nOiAgICAgICAgICAgICAgICAgICAgICAgIHB5dGhvbi5mdWxsX3BhdGgoKSwKLSAgICdC dWlsZCBQeUdPYmplY3QnOiAgICAgICAgICAgICAgIGVuYWJsZV9weWdvYmplY3QsCi1kaWZmIC0t Z2l0IGEvc3JjL3Rlc3RzL2lidXMtY29tcG9zZS5jIGIvc3JjL3Rlc3RzL2lidXMtY29tcG9zZS5j Ci1pbmRleCBjMzZiNGM4MS4uZDBjNTczZTUgMTAwNjQ0Ci0tLS0gYS9zcmMvdGVzdHMvaWJ1cy1j b21wb3NlLmMKLSsrKyBiL3NyYy90ZXN0cy9pYnVzLWNvbXBvc2UuYwotQEAgLTE0NCw3ICsxNDQs NyBAQCB0YWtlX3NjcmVlbnNob3QgKHZvaWQpCi0gICAgIGR0ID0gZ19kYXRlX3RpbWVfbmV3X2Zy b21fdW5peF91dGMgKHQpOwotICAgICBnX3JldHVybl9pZl9mYWlsIChkdCk7Ci0gCi0tICAgIHdo aWxlIChGQUxTRSkgewotKyAgICBkbyB7Ci0gICAgICAgICBwcmduYW1lID0gZ19wYXRoX2dldF9i YXNlbmFtZSAoZ19nZXRfcHJnbmFtZSAoKSk7Ci0gICAgICAgICBjYXNlbmFtZSA9IGdfcGF0aF9n ZXRfYmFzZW5hbWUgKGdfdGVzdF9nZXRfcGF0aCAoKSk7Ci0gICAgICAgICBpYnVzX2JyZWFrX2lm X2ZhaWwgKHByZ25hbWUpOwotQEAgLTE3Myw3ICsxNzMsNyBAQCB0YWtlX3NjcmVlbnNob3QgKHZv aWQpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGRfb3V0cHV0ID8gc3RkX291dHB1dCA6ICIi LAotICAgICAgICAgICAgICAgICAgICAgICAgc3RkX2Vycm9yKTsKLSAgICAgICAgIH0KLS0gICAg fQotKyAgICB9IHdoaWxlIChGQUxTRSk7Ci0gCi0gICAgIGdfZnJlZSAocHJnbmFtZSk7Ci0gICAg IGdfZnJlZSAoY2FzZW5hbWUpOwotLS0gCi0yLjU0LjAKLQotRnJvbSA4NGFhZjYxZmM1NjczNWM2 NWViOWM0Njg2YWE3NzNjYjNiMDVmYWEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTog ZnVqaXdhcmF0IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotRGF0ZTogTW9uLCAyOSBKdW4g MjAyNiAxMjo1MDo1NiArMDkwMAotU3ViamVjdDogW1BBVENIIDEvNV0gY2xpZW50L3dheWxhbmQ6 IEZpeCBsYXRjaCBrZXkgaW4gTGF0dmlhbih0aWxkZSkga2V5bWFwCi0KLSJsdih0aWxkZSkiIGtl eW1hcCBoYXMgYElTT19MZXZlbDNfTGF0Y2hgIGFuZCB0aGVyZSBhcmUgc2V2ZXJhbCBpc3N1ZXMu Ci0xLiBLREUgV2F5bGFuZCBkb2VzIG5vdCBoYW5kbGUgYElTT19MZXZlbDNfTGF0Y2hgIGtleXN5 bSBidXQgb3V0cHV0cyB0aGUKLSAgIHRpbGRlIGV2ZW4gaWYgdGhlIHN5c3RlbSBrZXltYXAgaXMg Imx2KHRpbGRlKSIuIFRoZSBwcmV2aW91cyBjaGFuZ2UKLSAgIDAxMDQ0ODYgZml4ZXMgdGhhdCBp c3N1ZSBpbiBJQnVzIHNpZGUuCi0yLiBUaGVyZSBpcyBhIHJhY2Ugd2hlbiBASUJ1c1dheWxhbmRJ TSByZWNlaXZlcyB0aGUgc3lzdGVtIGtleW1hcCBmcm9tCi0gICB0aGUgV2F5bGFuZCBjb21wb3Np dG9yIGFuZCB0aGUgdXNlciBrZXltYXAgZnJvbSB0aGUgSUJ1cyBYS0IKLSAgIGVuZ2luZSBhbmQg dGhlIHVzZXIga2V5bWFwIHNob3VsZCBub3QgYmUgb3ZlcnJpZGRlbiBieSB0aGUgc3lzdGVtIG9u ZS4KLTMuIEBJQnVzV2F5bGFuZElNIGNhbiBoYW5kbGUgdGhlIGNvbXBvc2Uga2V5cyBvbmx5IGlm IGBJU09fTGV2ZWwzX0xhdGNoYAotICAgaXMgaGVsZCBwcmVzc2luZyBhdCBwcmVzZW50LiBCdXQg dGhlIGxhdGNoIHN0YXRlIHNob3VsZCBiZSBoZWxkIHdoZW4KLSAgIHRoZSBsYXRjaCBrZXkgaXMg cmVsZWFzZWQgYnV0IGNsZWFyZWQgd2hlbiBvdGhlciBrZXlzIGFyZSBwcmVzc2VkLgotNC4gSW4g Y2FzZSB0aGUgc3lzdGVtIGtleW1hcCBpcyBub3QgImx2KHRpbGRlKSIsIEUuZy4gInVzIiwgdGhl IHJlbGVhc2UKLSAgIGV2ZW50IG9mIHRoZSB2aXJ0dWFsIGBJU09fTGV2ZWwzX0xhdGNoYCBrZXks IHRoZSBXYXlsYW5kIGNvbXBvc2l0b3IKLSAgIGltbWVkaWF0ZWx5IHNlbmRzIHRvIHplcm8gbW9k aWZpZXIgc3RhdGUgdG8gY2xlYXIgdGhlIGxhdGNoIHN0YXRlLgotICAgU28gcHJvYmFibHkgQElC dXNXYXlsYW5kSU0gc2hvdWxkIG5vdCBzZW5kIHRoZSByZWxlYXNlIGV2ZW50IG9mIHRoZQotICAg bGF0Y2gga2V5LgotNS4gWEtCIGdyb3VwIElEIGNhbiBiZSBzd2l0Y2hlZCBieSBYS0Igb3B0aW9u IGtleSBsaWtlcyBgZ3JwOnRvZ2dsZWAKLSAgIGJ1dCBjbGlja2luZyBrZXlib2FyZCBpY29uIGlu IEtERSBwYW5lbCBkb2VzIG5vdCB3b3JrIGFuZCBtYXliZQotICAgaXQncyBhIGJ1ZyBpbiBLREUg Y29tcG9zaXRvci4KLTYuIEZpeCB0byBjbGVhciBtb2RpZmllcnMgd2l0aCB0aGUga2V5IHJlbGVh c2Ugb2YgU2hpZnQgKyBMYXRjaCBrZXkuCi03LiBTYXZlIENhcHNMb2NrIHN0YXRlCi0KLUZpeGVz OiAwMTA0NDg2Ci1GaXhlczogIzI4NjkKLUNsb3NlczogcmhieiMyNDQ0MDA5Ci0tLS0KLSBjbGll bnQvd2F5bGFuZC9pYnVzd2F5bGFuZGltLmMgfCAzNjAgKysrKysrKysrKysrKysrKysrKysrKysr KystLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDI4NSBpbnNlcnRpb25zKCspLCA3NSBkZWxldGlv bnMoLSkKLQotZGlmZiAtLWdpdCBhL2NsaWVudC93YXlsYW5kL2lidXN3YXlsYW5kaW0uYyBiL2Ns aWVudC93YXlsYW5kL2lidXN3YXlsYW5kaW0uYwotaW5kZXggZDdkMTJkMDUuLjk1YjMzMGY4IDEw MDY0NAotLS0tIGEvY2xpZW50L3dheWxhbmQvaWJ1c3dheWxhbmRpbS5jCi0rKysgYi9jbGllbnQv d2F5bGFuZC9pYnVzd2F5bGFuZGltLmMKLUBAIC00MCw2ICs0MCw5IEBACi0gI2luY2x1ZGUgInZp cnR1YWwta2V5Ym9hcmQtdW5zdGFibGUtdjEtY2xpZW50LXByb3RvY29sLmgiCi0gI2luY2x1ZGUg ImlidXN3YXlsYW5kaW0uaCIKLSAKLSsvKiBrZXlzeW0gJiBrZXljb2RlIHNob3VsZCBub3QgYmUg bG9nZ2VkIGZvciB0aGUgc2VjdXJpdHkgaXNzdWUuICovCi0rLyogI2RlZmluZSBJQlVTX0xPR19T SE9XX0tFWVNZTSAqLwotKwotIGVudW0gewotICAgICBQUk9QXzAgPSAwLAotICAgICBQUk9QX0JV UywKLUBAIC0xNDYsNiArMTQ5LDcgQEAgc3RydWN0IF9JQnVzV2F5bGFuZElNUHJpdmF0ZQotICAg ICBndWludCBwcmVlZGl0X2N1cnNvcl9wb3M7Ci0gICAgIGd1aW50IHByZWVkaXRfbW9kZTsKLSAg ICAgSUJ1c01vZGlmaWVyVHlwZSBtb2RpZmllcnM7Ci0rICAgIGdib29sZWFuIGlzX3ZpcnR1YWxf bGF0Y2hfc3RhdGU7Ci0gICAgIGdib29sZWFuIGhpZGluZ19wcmVlZGl0X3RleHQ7Ci0gICAgIElC dXNJbnB1dEhpbnRzIGlidXNfaGludHM7Ci0gICAgIElCdXNJbnB1dFB1cnBvc2UgaWJ1c19wdXJw b3NlOwotQEAgLTIwMywxMCArMjA3LDYgQEAgc3RhdGljIGNoYXIgX3VzZV9zeW5jX21vZGUgPSAx OwotIAotIHN0YXRpYyBndWludCB3YXlsYW5kX2ltX3NpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAw IH07Ci0gCi0tc3RhdGljIHZvaWQgICAgICAgICBpbnB1dF9tZXRob2RfZGVhY3RpdmF0ZQotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICpkYXRhLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgendw X2lucHV0X21ldGhvZF91bmlvbiAgICAgICppbnB1dF9tZXRob2QsCi0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCB6d3BfaW5wdXRfbWV0aG9kX2NvbnRleHRfdjEgKmNvbnRl eHQpOwotIHN0YXRpYyBHT2JqZWN0ICAgICAqaWJ1c193YXlsYW5kX2ltX2NvbnN0cnVjdG9yICAg ICAgICAoR1R5cGUgICAgICAgICAgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgIG5fcGFyYW1zLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR09i amVjdENvbnN0cnVjdFBhcmFtCi1AQCAtMjI4LDYgKzIyOCwxOSBAQCBzdGF0aWMgZ2Jvb2xlYW4g ICAgIGlidXNfd2F5bGFuZF9pbV9wb3N0X2tleSAgICAgICAgICAgKElCdXNXYXlsYW5kSU0gKnds aW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB4a2Jfa2V5c3ltX3QgICBzeW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbgotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJl ZCk7Ci0rc3RhdGljIHZvaWQgICAgICAgICBpbnB1dF9tZXRob2RfZGVhY3RpdmF0ZQotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICpkYXRhLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgendwX2lu cHV0X21ldGhvZF91bmlvbiAgICAgICppbnB1dF9tZXRob2QsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCB6d3BfaW5wdXRfbWV0aG9kX2NvbnRleHRfdjEgKmNvbnRleHQp OwotK3N0YXRpYyB2b2lkICAgICAgICAgaW5wdXRfbWV0aG9kX2tleWJvYXJkX21vZGlmaWVycwot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICpkYXRhLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg endwX2tleWJvYXJkX3VuaW9uICAgICAgICAgICprZXlib2FyZCwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5X3Nl cmlhbCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG1vZHNfZGVwcmVzc2VkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf dCAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RzX2xhdGNoZWQsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1v ZHNfbG9ja2VkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAgICAg ICAgICAgICAgICAgICAgICAgICAgICBncm91cCk7Ci0gCi0gCi0gc3RhdGljIGNoYXIKLUBAIC0x MDc5LDcgKzEwOTIsNyBAQCBpYnVzX3hrYl9rZXltYXBfdXBkYXRlX3dpdGhfa2V5bWFwIChJQnVz WGtiS2V5bWFwICAgICAqaWJ1c19rZXltYXAsCi0gICAgICAgICB4a2Jfc3RhdGVfdW5yZWYgKGli dXNfa2V5bWFwLT5zdGF0ZSk7Ci0gICAgIGlmIChpYnVzX2tleW1hcC0+a2V5bWFwKQotICAgICAg ICAgeGtiX2tleW1hcF91bnJlZiAoaWJ1c19rZXltYXAtPmtleW1hcCk7Ci0tICAgIGlidXNfa2V5 bWFwLT5rZXltYXAgPSBrZXltYXA7Ci0rICAgIGlidXNfa2V5bWFwLT5rZXltYXAgPSB4a2Jfa2V5 bWFwX3JlZiAoa2V5bWFwKTsKLSAgICAgaWJ1c19rZXltYXAtPnN0YXRlID0gc3RhdGU7Ci0gCi0g ICAgIC8qIHhrYl9tYXBfbW9kX2dldF9pbmRleCgpIGNhbiByZXR1cm4gYW55IHhrYl9tb2RfaW5k ZXhfdCB2YWx1ZSwgaW5jbHVkaW5nCi1AQCAtMTExNSw2ICsxMTI4LDcgQEAgX2J1c19nbG9iYWxf ZW5naW5lX2NoYW5nZWRfY2IgKElCdXNCdXMgICAgICAgKmJ1cywKLSAgICAgSUJ1c1dheWxhbmRJ TVByaXZhdGUgKnByaXY7Ci0gICAgIElCdXNFbmdpbmVEZXNjICpkZXNjOwotICAgICBzdHJ1Y3Qg eGtiX2tleW1hcCAqa2V5bWFwOwotKyAgICBnYm9vbGVhbiBoYXNfa2V5bWFwID0gRkFMU0U7Ci0g Ci0gICAgIGdfcmV0dXJuX2lmX2ZhaWwgKElCVVNfSVNfQlVTIChidXMpKTsKLSAgICAgZ19yZXR1 cm5faWZfZmFpbCAoSUJVU19JU19XQVlMQU5EX0lNICh3bGltKSk7Ci1AQCAtMTEyNywxMCArMTE0 MSwxOCBAQCBfYnVzX2dsb2JhbF9lbmdpbmVfY2hhbmdlZF9jYiAoSUJ1c0J1cyAgICAgICAqYnVz LAotICAgICAgKiBpbW1lZGlhdGVseSB3aXRob3V0IGNoZWNraW5nIHRoZSBHc2V0dGluZ3MuCi0g ICAgICAqLwotICAgICBrZXltYXAgPSBjcmVhdGVfdXNlcl94a2Jfa2V5bWFwIChwcml2LT54a2Jf Y29udGV4dCwgZGVzYyk7Ci0tICAgIGlmIChrZXltYXAgJiYgIWlidXNfeGtiX2tleW1hcF91cGRh dGVfd2l0aF9rZXltYXAgKCZwcml2LT5rZXlfdXNlciwKLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5bWFwKSkgewotKyAgICBpZiAoa2V5 bWFwKSB7Ci0rICAgICAgICBoYXNfa2V5bWFwID0gaWJ1c194a2Jfa2V5bWFwX3VwZGF0ZV93aXRo X2tleW1hcCAoJnByaXYtPmtleV91c2VyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleW1hcCk7Ci0gICAgICAgICB4a2Jfa2V5bWFw X3VucmVmIChrZXltYXApOwotICAgICB9Ci0rICAgIGlmIChwcml2LT52ZXJib3NlKSB7Ci0rICAg ICAgICBmcHJpbnRmIChwcml2LT5sb2csICJOZXcgZW5naW5lOiVzIGtleW1hcDolcyBzdGF0ZTol c1xuIiwKLSsgICAgICAgICAgICAgICAgIGlidXNfZW5naW5lX2Rlc2NfZ2V0X25hbWUgKGRlc2Mp LAotKyAgICAgICAgICAgICAgICAgaGFzX2tleW1hcCA/ICJUUlVFIiA6ICJGQUxTRSIsCi0rICAg ICAgICAgICAgICAgICBwcml2LT5rZXlfdXNlci5zdGF0ZSA/ICJUUlVFIiA6ICJGQUxTRSIpOwot KyAgICAgICAgZmZsdXNoIChwcml2LT5sb2cpOwotKyAgICB9Ci0gICAgIGdfb2JqZWN0X3VucmVm IChkZXNjKTsKLSB9Ci0gCi1AQCAtMTE0NSw2ICsxMTY3LDcgQEAgaW5wdXRfbWV0aG9kX2tleWJv YXJkX2tleW1hcCAodm9pZCAgICAgICAgICAgICAgICAgICAgICAqZGF0YSwKLSAgICAgSUJ1c1dh eWxhbmRJTSAqd2xpbSA9IGRhdGE7Ci0gICAgIElCdXNXYXlsYW5kSU1Qcml2YXRlICpwcml2Owot ICAgICBzdHJ1Y3QgeGtiX2tleW1hcCAqa2V5bWFwOwotKyAgICBnYm9vbGVhbiBoYXNfa2V5bWFw ID0gRkFMU0U7Ci0gCi0gICAgIGlmICghSUJVU19JU19XQVlMQU5EX0lNICh3bGltKSkgewotICAg ICAgICAgY2xvc2UgKGZkKTsKLUBAIC0xMTk0LDI1ICsxMjE3LDI1IEBAIGlucHV0X21ldGhvZF9r ZXlib2FyZF9rZXltYXAgKHZvaWQgICAgICAgICAgICAgICAgICAgICAgKmRhdGEsCi0gICAgICAg ICByZXR1cm47Ci0gICAgIH0KLSAgICAga2V5bWFwID0gY3JlYXRlX3N5c3RlbV94a2Jfa2V5bWFw IChwcml2LT54a2JfY29udGV4dCwgZm9ybWF0LCBmZCwgc2l6ZSk7Ci0tICAgIGlmIChrZXltYXAg JiYKLS0gICAgICAgICFpYnVzX3hrYl9rZXltYXBfdXBkYXRlX3dpdGhfa2V5bWFwICgmcHJpdi0+ a2V5X3N5cywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4 a2Jfa2V5bWFwX3JlZiAoa2V5bWFwKSkpIHsKLS0gICAgICAgIHhrYl9rZXltYXBfdW5yZWYgKGtl eW1hcCk7Ci0tICAgICAgICBnX2NsZWFyX3BvaW50ZXIgKCZrZXltYXAsIHhrYl9rZXltYXBfdW5y ZWYpOwotLSAgICB9Ci0tICAgIGlmIChrZXltYXAgJiYgIXByaXYtPmtleV91c2VyLnN0YXRlICYm Ci0tICAgICAgICAhaWJ1c194a2Jfa2V5bWFwX3VwZGF0ZV93aXRoX2tleW1hcCAoJnByaXYtPmtl eV91c2VyLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhr Yl9rZXltYXBfcmVmIChrZXltYXApKSkgewotLSAgICAgICAgeGtiX2tleW1hcF91bnJlZiAoa2V5 bWFwKTsKLS0gICAgICAgIGdfY2xlYXJfcG9pbnRlciAoJmtleW1hcCwgeGtiX2tleW1hcF91bnJl Zik7Ci0tICAgIH0KLS0gICAgaWYgKGtleW1hcCkKLSsgICAgaWYgKGtleW1hcCkgewotKyAgICAg ICAgaGFzX2tleW1hcCA9IGlidXNfeGtiX2tleW1hcF91cGRhdGVfd2l0aF9rZXltYXAgKCZwcml2 LT5rZXlfc3lzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGtleW1hcCk7Ci0rICAgICAgICBpZiAoIWhhc19rZXltYXApCi0rICAgICAg ICAgICAgZ19jbGVhcl9wb2ludGVyICgma2V5bWFwLCB4a2Jfa2V5bWFwX3VucmVmKTsKLSsgICAg fQotKyAgICBpZiAoaGFzX2tleW1hcCAmJiAhcHJpdi0+a2V5X3VzZXIuc3RhdGUpIHsKLSsgICAg ICAgIGhhc19rZXltYXAgPSBpYnVzX3hrYl9rZXltYXBfdXBkYXRlX3dpdGhfa2V5bWFwICgmcHJp di0+a2V5X3VzZXIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAga2V5bWFwKTsKLSsgICAgICAgIGlmICghaGFzX2tleW1hcCkKLSsgICAg ICAgICAgICBnX2NsZWFyX3BvaW50ZXIgKCZrZXltYXAsIHhrYl9rZXltYXBfdW5yZWYpOwotKyAg ICB9Ci0rICAgIGlmIChoYXNfa2V5bWFwKQotICAgICAgICAgeGtiX2tleW1hcF91bnJlZiAoa2V5 bWFwKTsKLSAgICAgaWYgKHByaXYtPnZlcmJvc2UpIHsKLSAgICAgICAgIGZwcmludGYgKHByaXYt PmxvZywgIlN5c3RlbSBrZXltYXAgZm9ybWF0OiV1IGZkOiVkIHNpemU6JXUgIgotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAia2V5bWFwOiVzIHN0YXRlOiVzXG4iLAotICAgICAgICAgICAg ICAgICAgZm9ybWF0LCBmZCwgc2l6ZSwKLS0gICAgICAgICAgICAgICAgIGtleW1hcCA/ICJUUlVF IiA6ICJGQUxTRSIsCi0rICAgICAgICAgICAgICAgICBoYXNfa2V5bWFwID8gIlRSVUUiIDogIkZB TFNFIiwKLSAgICAgICAgICAgICAgICAgIHByaXYtPmtleV9zeXMuc3RhdGUgPyAiVFJVRSIgOiAi RkFMU0UiKTsKLSAgICAgICAgIGZmbHVzaCAocHJpdi0+bG9nKTsKLSAgICAgfQotQEAgLTEyNTMs NiArMTI3Niw3IEBAIF9nZXRfc2VhdF93aXRoX25hbWUgKEdQdHJBcnJheSAqc2VhdHMsCi0gICAg IHJldHVybiBOVUxMOwotIH0KLSAKLSsKLSBzdGF0aWMgZ2Jvb2xlYW4KLSBpYnVzX3dheWxhbmRf aW1fcG9zdF9rZXkgKElCdXNXYXlsYW5kSU0gKndsaW0sCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICB1aW50MzJfdCAgICAgICBrZXksCi1AQCAtMTI2Myw4ICsxMjg3LDEzIEBAIGlidXNfd2F5 bGFuZF9pbV9wb3N0X2tleSAoSUJ1c1dheWxhbmRJTSAqd2xpbSwKLSB7Ci0gICAgIElCdXNXYXls YW5kSU1Qcml2YXRlICpwcml2OwotICAgICBJQnVzWGtiS2V5bWFwICphY3RpdmVfa2V5OwotKyAg ICB4a2JfbW9kX21hc2tfdCBtb2RzX2RlcHJlc3NlZCA9IDAsIG5ld19tb2RzX2RlcHJlc3NlZCA9 IDA7Ci0rICAgIHhrYl9tb2RfbWFza190IG1vZHNfbG9ja2VkOwotKyAgICB4a2JfbGF5b3V0X2lu ZGV4X3QgIGdyb3VwID0gMDsKLSsgICAgeGtiX2tleXN5bV90IHN5c3RlbV9zeW0gPSBzeW07Ci0g ICAgIHVpbnQzMl90IGNvZGUgPSBrZXkgKyA4OwotICAgICB1aW50MzJfdCBjaDsKLSsgICAgZ2Jv b2xlYW4gY2xlYXJfdmlydHVhbF9zdGF0ZSA9IEZBTFNFOwotIAotICAgICBnX3JldHVybl92YWxf aWZfZmFpbCAoSUJVU19JU19XQVlMQU5EX0lNICh3bGltKSwgRkFMU0UpOwotICAgICBwcml2ID0g aWJ1c193YXlsYW5kX2ltX2dldF9pbnN0YW5jZV9wcml2YXRlICh3bGltKTsKLUBAIC0xMjg4LDQ5 ICsxMzE3LDEzNSBAQCBpYnVzX3dheWxhbmRfaW1fcG9zdF9rZXkgKElCdXNXYXlsYW5kSU0gKnds aW0sCi0gICAgICAgICBhY3RpdmVfa2V5ID0gJnByaXYtPmtleV91c2VyOwotICAgICBpZiAoIWFj dGl2ZV9rZXktPnN0YXRlKQotICAgICAgICAgcmV0dXJuIEZBTFNFOwotKyAgICBtb2RzX2RlcHJl c3NlZCA9IHhrYl9zdGF0ZV9zZXJpYWxpemVfbW9kcyAoYWN0aXZlX2tleS0+c3RhdGUsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYS0JfU1RBVEVfREVQ UkVTU0VEIHwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFhLQl9TVEFURV9MQVRDSEVEKTsKLSsgICAgbmV3X21vZHNfZGVwcmVzc2VkID0gbW9kc19kZXBy ZXNzZWQ7Ci0rICAgIG1vZHNfbG9ja2VkID0geGtiX3N0YXRlX3NlcmlhbGl6ZV9tb2RzIChhY3Rp dmVfa2V5LT5zdGF0ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFhLQl9TVEFURV9NT0RTX0xPQ0tFRCk7Ci0rICAgIC8qIFhLQiBncm91cCBsYXlvdXQgaXMg Y29uZmlndXJlZCBpbiB0aGUgc3lzdGVtIGtleW1hcCBidXQgbm90IHRoZQotKyAgICAgKiB1c2Vy IGtleW1hcCB3aGljaCBhbHdheXMgaW5jbHVkZXMgYSBzaW5nbGUgbGF5b3V0LgotKyAgICAgKi8K LSsgICAgaWYgKHByaXYtPmtleV9zeXMuc3RhdGUpIHsKLSsgICAgICAgIGdyb3VwID0geGtiX3N0 YXRlX3NlcmlhbGl6ZV9sYXlvdXQgKHByaXYtPmtleV9zeXMuc3RhdGUsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYS0JfU1RBVEVfTEFZT1VUX0xPQ0tFRCk7 Ci0rICAgIH0KLSAgICAgaWYgKCFmaWx0ZXJlZCkgewotLSNpZiAwCi0tICAgICAgICAvKiBGSVhN RTogTmVlZCB0byBjb25maXJtIGFueSBtb2RpZmllcnMgc2hvdWxkIGJlIGlnbm9yZWQuICovCi0t ICAgICAgICBpZiAoIWlidXNfYWNjZWxlcmF0b3JfdmFsaWQgKAotLSAgICAgICAgICAgICAgICAg ICAgc3ltLAotLSAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzICYgSUJVU19NT0RJRklFUl9N QVNLICYgfklCVVNfU0hJRlRfTUFTSykpIHsKLS0gICAgICAgICAgICBmaWx0ZXJlZCA9IFRSVUU7 Ci0tICAgICAgICB9Ci0tI2Vsc2UKLSsgICAgICAgIGlmIChwcml2LT5rZXlfc3lzLnN0YXRlKQot KyAgICAgICAgICAgIHN5c3RlbV9zeW0gPSB4a2Jfc3RhdGVfa2V5X2dldF9vbmVfc3ltIChwcml2 LT5rZXlfc3lzLnN0YXRlLCBjb2RlKTsKLSAgICAgICAgIHN3aXRjaCAoc3ltKSB7Ci0tICAgICAg ICBjYXNlIElCVVNfSVNPX0xldmVsMl9MYXRjaDoKLS0gICAgICAgIGNhc2UgSUJVU19JU09fTGV2 ZWwzX0xhdGNoOgotLSAgICAgICAgY2FzZSBJQlVTX0lTT19MZXZlbDVfTGF0Y2g6Ci0rICAgICAg ICBjYXNlIElCVVNfS0VZX0lTT19MZXZlbDJfTGF0Y2g6Ci0gICAgICAgICAgICAgZmlsdGVyZWQg PSBUUlVFOwotICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgLyogTGV2ZWwzX2xhdGNoIGlz IGNhdXNlZCBieSBUTERFIGtleSBpbiBsdih0aWxkZSkga2V5bWFwLgotKyAgICAgICAgICogTGV2 ZWwzX1NoaWZ0IGlzIGNhdXNlZCBieSBBbHQga2V5IGluIGx2KHRpbGRlKSBrZXltYXAuCi0rICAg ICAgICAgKi8KLSsgICAgICAgIGNhc2UgSUJVU19LRVlfSVNPX0xldmVsM19MYXRjaDoKLSsgICAg ICAgIGNhc2UgSUJVU19LRVlfSVNPX0xldmVsM19TaGlmdDoKLSsgICAgICAgICAgICBpZiAoc3Rh dGUgPT0gV0xfS0VZQk9BUkRfS0VZX1NUQVRFX1BSRVNTRUQpIHsKLSsgICAgICAgICAgICAgICAg bmV3X21vZHNfZGVwcmVzc2VkIHw9IGFjdGl2ZV9rZXktPm1vZDVfbWFzazsKLSsgICAgICAgICAg ICAgICAgaWYgKHN5bSAhPSBzeXN0ZW1fc3ltKQotKyAgICAgICAgICAgICAgICAgICAgcHJpdi0+ aXNfdmlydHVhbF9sYXRjaF9zdGF0ZSA9IFRSVUU7Ci0rICAgICAgICAgICAgICAgIGZpbHRlcmVk ID0gVFJVRTsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAv KiBMZXZlbDVfTGF0Y2ggaXMgY2F1c2VkIGJ5IFNoaWZ0K0FsdCBrZXkgaW4gZGUoVDMpIGtleW1h cC4KLSsgICAgICAgICAqLwotKyAgICAgICAgY2FzZSBJQlVTX0tFWV9JU09fTGV2ZWw1X0xhdGNo OgotKyAgICAgICAgY2FzZSBJQlVTX0tFWV9JU09fTGV2ZWw1X1NoaWZ0OgotKyAgICAgICAgICAg IGlmIChzdGF0ZSA9PSBXTF9LRVlCT0FSRF9LRVlfU1RBVEVfUFJFU1NFRCkgewotKyAgICAgICAg ICAgICAgICBuZXdfbW9kc19kZXByZXNzZWQgfD0gYWN0aXZlX2tleS0+bW9kM19tYXNrOwotKyAg ICAgICAgICAgICAgICBpZiAoc3ltICE9IHN5c3RlbV9zeW0pCi0rICAgICAgICAgICAgICAgICAg ICBwcml2LT5pc192aXJ0dWFsX2xhdGNoX3N0YXRlID0gVFJVRTsKLSsgICAgICAgICAgICAgICAg ZmlsdGVyZWQgPSBUUlVFOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgICBicmVhazsKLSsg ICAgICAgIGNhc2UgSUJVU19LRVlfU2hpZnRfTDoKLSsgICAgICAgIGNhc2UgSUJVU19LRVlfU2hp ZnRfUjoKLSsgICAgICAgICAgICBpZiAoc3RhdGUgPT0gV0xfS0VZQk9BUkRfS0VZX1NUQVRFX1BS RVNTRUQpCi0rICAgICAgICAgICAgICAgIG5ld19tb2RzX2RlcHJlc3NlZCB8PSBhY3RpdmVfa2V5 LT5zaGlmdF9tYXNrOwotKyAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgICAgbmV3X21v ZHNfZGVwcmVzc2VkICY9IH5hY3RpdmVfa2V5LT5zaGlmdF9tYXNrOwotKyAgICAgICAgICAgIGJy ZWFrOwotICAgICAgICAgZGVmYXVsdDo7Ci0gICAgICAgICB9Ci0rI2lmZGVmIElCVVNfTE9HX1NI T1dfS0VZU1lNCi0rICAgICAgICBpZiAocHJpdi0+dmVyYm9zZSkgewotKyAgICAgICAgICAgIGZw cmludGYgKHByaXYtPmxvZywgIiVzIGtleToldSBzeW06JXggc3lzdGVtX3N5bToleCBtb2RpZmll cnM6JXggIgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YXRlOiVzIGZpbHRl cmVkOiVkXG4iLAotKyAgICAgICAgICAgICAgICAgICAgIEdfU1RSRlVOQywKLSsgICAgICAgICAg ICAgICAgICAgICBrZXksIHN5bSwgc3lzdGVtX3N5bSwgbW9kaWZpZXJzLAotKyAgICAgICAgICAg ICAgICAgICAgIHN0YXRlID8gInByZXNzIiA6ICJyZWxlYXNlIiwKLSsgICAgICAgICAgICAgICAg ICAgICBmaWx0ZXJlZCk7Ci0rICAgICAgICAgICAgZmZsdXNoIChwcml2LT5sb2cpOwotKyAgICAg ICAgfQotICNlbmRpZgotICAgICB9Ci0tICAgIC8qIEluIGNhc2UgYHVzZV9zeXNfa2V5bWFwYCBp cyAlVFJVRSwgSUJ1cyBkb2VzIG5vdCBjb21taXQgQVNDSUkgY2hhcnMKLS0gICAgICogYnV0IGZv cndhcmRzIHRoZSBrZXkgZXZlbnRzIHRvIHRoZSBmb2N1c2VkIGFwcGxpY2F0aW9uIGhlcmUuCi0t ICAgICAqIEJlY2F1c2Ugc29tZSBhcHBsaWNhdGlvbnMgdHJlYXQgdGhlIHByaW50YWJsZSBrZXlz IGFzIGNvbnRyb2wga2V5cywKLS0gICAgICogRS5nLiBnYW1lIGFwcHMgImhqa2wiIHVzZSB0aGUg Y3Vyc29yIG1vdmUgbGlrZSBWSSBtb2RlLgotLSAgICAgKiBVbmZvcnR1bmF0ZWx5IHRoZSBXYXls YW5kIGlucHV0LW1ldGhvZCBwcm90b2NvbCBkb2VzIG5vdCBwcm92aWRlCi0tICAgICAqIHRoZSBm YWxsYmFjayBsb2dpYyBhZnRlciBhcHBzIGhhbmRsZSB0aGUga2V5IGV2ZW50cyBsaWtlIEdUSzMv MgotLSAgICAgKiBJTSBtb2R1bGVzLiBCdXQgVGhlIGlucHV0LW1ldGhvZCBhbHdheXMgc2hvdWxk IGhhbmRsZXMga2V5IGV2ZW50cwotLSAgICAgKiBwcmlvciB0byBhcHBzLgotLSAgICAgKi8KLS0g ICAgaWYgKCFmaWx0ZXJlZCAmJiAoc3RhdGUgIT0gV0xfS0VZQk9BUkRfS0VZX1NUQVRFX1JFTEVB U0VEKSAmJgotLSAgICAgICAgIXByaXYtPnVzZV9zeXNfa2V5bWFwKSB7Ci0tICAgICAgICBjaCA9 IHhrYl9zdGF0ZV9rZXlfZ2V0X3V0ZjMyIChhY3RpdmVfa2V5LT5zdGF0ZSwgY29kZSk7Ci0tICAg ICAgICBpZiAoIShtb2RpZmllcnMgJiBJQlVTX01PRElGSUVSX01BU0sgJiB+SUJVU19TSElGVF9N QVNLKSAmJgotLSAgICAgICAgICAgIGNoICYmIGNoICE9ICdcbicgJiYgY2ggIT0gJ1xiJyAmJiBj aCAhPSAnXHInICYmIGNoICE9ICdcdCcgJiYKLS0gICAgICAgICAgICBjaCAhPSAnXDAzMycgJiYg Y2ggIT0gJ1x4N2YnKSB7Ci0tICAgICAgICAgICAgZ2NoYXIgYnVmZls4XSA9IHsgMCwgfTsKLS0g ICAgICAgICAgICBidWZmW2dfdW5pY2hhcl90b191dGY4IChjaCwgYnVmZildID0gJ1wwJzsKLS0g ICAgICAgICAgICBpYnVzX3dheWxhbmRfaW1fY29tbWl0X3RleHQgKHdsaW0sIGJ1ZmYpOwotLSAg ICAgICAgICAgIGZpbHRlcmVkID0gVFJVRTsKLSsgICAgaWYgKHN0YXRlICE9IFdMX0tFWUJPQVJE X0tFWV9TVEFURV9SRUxFQVNFRCkgewotKyAgICAgICAgY2ggPSBpYnVzX2tleXZhbF90b191bmlj b2RlIChzeW0pOwotKyAgICAgICAgaWYgKGNoID09IDAgfHwgZ191bmljaGFyX2lzY250cmwgKGNo KSkKLSsgICAgICAgICAgICBjaCA9IHhrYl9zdGF0ZV9rZXlfZ2V0X3V0ZjMyIChhY3RpdmVfa2V5 LT5zdGF0ZSwgY29kZSk7Ci0rLyogTm8gdGV4dCB3aXRoIENvbnRyb2wgJiBBbHQgJiBTdXBlciBr ZXlzICovCi0rI2lmbmRlZiBHREtfV0lORE9XSU5HX1FVQVJUWgotKyMgIGRlZmluZSBfSUJVU19O T19URVhUX0lOUFVUX01PRF9NQVNLIChcCi0rICAgIElCVVNfQ09OVFJPTF9NQVNLIHwgSUJVU19N T0QxX01BU0sgfCBJQlVTX01PRDRfTUFTSykKLSsjZWxzZQotKyMgIGRlZmluZSBfSUJVU19OT19U RVhUX0lOUFVUX01PRF9NQVNLIChcCi0rICAgIElCVVNfQ09OVFJPTF9NQVNLIHwgSUJVU19NT0Qy X01BU0sgfCBJQlVTX01PRDRfTUFTSykKLSsjZW5kaWYKLSsgICAgICAgIGlmICgoIWZpbHRlcmVk ICYmICEobW9kaWZpZXJzICYgX0lCVVNfTk9fVEVYVF9JTlBVVF9NT0RfTUFTSykgJiYKLSsgICAg ICAgICAgICAgIWdfdW5pY2hhcl9pc2NudHJsIChjaCkpIHx8IGZpbHRlcmVkKSB7Ci0rICAgICAg ICAvKiBJbiBjYXNlIGB1c2Vfc3lzX2tleW1hcGAgaXMgJVRSVUUsIElCdXMgZG9lcyBub3QgY29t bWl0IEFTQ0lJIGNoYXJzCi0rICAgICAgICAgKiBidXQgZm9yd2FyZHMgdGhlIGtleSBldmVudHMg dG8gdGhlIGZvY3VzZWQgYXBwbGljYXRpb24gaGVyZS4KLSsgICAgICAgICAqIEJlY2F1c2Ugc29t ZSBhcHBsaWNhdGlvbnMgdHJlYXQgdGhlIHByaW50YWJsZSBrZXlzIGFzIGNvbnRyb2wga2V5cywK LSsgICAgICAgICAqIEUuZy4gZ2FtZSBhcHBzICJoamtsIiB1c2UgdGhlIGN1cnNvciBtb3ZlIGxp a2UgVkkgbW9kZS4KLSsgICAgICAgICAqIFVuZm9ydHVuYXRlbHkgdGhlIFdheWxhbmQgaW5wdXQt bWV0aG9kIHByb3RvY29sIGRvZXMgbm90IHByb3ZpZGUKLSsgICAgICAgICAqIHRoZSBmYWxsYmFj ayBsb2dpYyBhZnRlciBhcHBzIGhhbmRsZSB0aGUga2V5IGV2ZW50cyBsaWtlIEdUSzMvMgotKyAg ICAgICAgICogSU0gbW9kdWxlcy4gQnV0IHRoZSBpbnB1dC1tZXRob2QgYWx3YXlzIHNob3VsZCBo YW5kbGUga2V5IGV2ZW50cwotKyAgICAgICAgICogcHJpb3IgdG8gYXBwcy4KLSsgICAgICAgICAq LwotKyAgICAgICAgICAgIGlmICghZmlsdGVyZWQgJiYgIXByaXYtPnVzZV9zeXNfa2V5bWFwKSB7 Ci0rICAgICAgICAgICAgICAgIGdjaGFyIGJ1ZmZbOF0gPSB7IDAsIH07Ci0rICAgICAgICAgICAg ICAgIGdfdW5pY2hhcl90b191dGY4IChjaCwgYnVmZik7Ci0rICAgICAgICAgICAgICAgIGlidXNf d2F5bGFuZF9pbV9jb21taXRfdGV4dCAod2xpbSwgYnVmZik7Ci0rICAgICAgICAgICAgICAgIGZp bHRlcmVkID0gVFJVRTsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgLyogSWYgYGZpbHRl cmVkYCBpcyAlVFJVRSwgdGhlIGtleXN5bSBjYW4gYmUgZWF0ZW4gZm9yIHRoZSBjb21wb3NlCi0r ICAgICAgICAgICAgICogcHJlZWRpdCBieSBJQnVzIFhLQiBlbmdpbmUuIEUuZy4gQWx0R3ItU2hp ZnQtViBrZXkgcHJvZHVjZXMKLSsgICAgICAgICAgICAgKiBgTGV2ZWwzX1NoaWZ0JyBhbmQgYEdy ZWVrX09NRUdBYCBrZXlzeW0gd2l0aCAidXMoc3ltYm9saWMpIgotKyAgICAgICAgICAgICAqIGtl eW1hcC4gSG93ZXZlciBpZiB5b3UgY29uZmlndXJlIG11bHRpcGxlIGtleW1hcHMsIEFsdEdyLVNo aWZ0Ci0rICAgICAgICAgICAgICogbWF5IHByb2R1Y2UgdGhlIGtleW1hcCBzd2l0Y2ggYWx0aG91 Z2ggQWx0R3ItU2hpZnQtViBwcm9kdWNlcwotKyAgICAgICAgICAgICAqIGBHcmVla19PTUVHQWAu Ci0rICAgICAgICAgICAgICogSSdtIG5vdCBjbGFyaWZpZWQgd2l0aCAibGV2ZWwzKHJhbHRfc3dp dGNoKSIgaW4gdXMgWEtCIGtleW1hcHMuCi0rICAgICAgICAgICAgICovCi0rICAgICAgICAgICAg aWYgKG1vZGlmaWVycyAmIElCVVNfTU9EM19NQVNLKSB7Ci0rICAgICAgICAgICAgICAgIG5ld19t b2RzX2RlcHJlc3NlZCAmPSB+YWN0aXZlX2tleS0+bW9kM19tYXNrOwotKyAgICAgICAgICAgICAg ICBjbGVhcl92aXJ0dWFsX3N0YXRlID0gVFJVRTsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAg ICAgaWYgKG1vZGlmaWVycyAmIElCVVNfTU9ENV9NQVNLKSB7Ci0rICAgICAgICAgICAgICAgIG5l d19tb2RzX2RlcHJlc3NlZCAmPSB+YWN0aXZlX2tleS0+bW9kNV9tYXNrOwotKyAgICAgICAgICAg ICAgICBjbGVhcl92aXJ0dWFsX3N0YXRlID0gVFJVRTsKLSsgICAgICAgICAgICB9Ci0gICAgICAg ICB9Ci0rI3VuZGVmIF9JQlVTX05PX1RFWFRfSU5QVVRfTU9EX01BU0sKLSsgICAgfQotKyAgICBp ZiAocHJpdi0+aXNfdmlydHVhbF9sYXRjaF9zdGF0ZSkgewotKyAgICAgICAgaWYgKG5ld19tb2Rz X2RlcHJlc3NlZCAhPSBtb2RzX2RlcHJlc3NlZCkgewotKyAgICAgICAgICAgIGlucHV0X21ldGhv ZF9rZXlib2FyZF9tb2RpZmllcnMgKHdsaW0sIE5VTEwsIDAsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X21vZHNfZGVwcmVzc2VkLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kc19sb2NrZWQsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXApOwotKyAgICAgICAgfQotKyAg ICAgICAgaWYgKGNsZWFyX3ZpcnR1YWxfc3RhdGUpCi0rICAgICAgICAgICAgcHJpdi0+aXNfdmly dHVhbF9sYXRjaF9zdGF0ZSA9IEZBTFNFOwotKyAgICB9Ci0rICAgIGlmICghcHJpdi0+aXNfdmly dHVhbF9sYXRjaF9zdGF0ZSB8fAotKyAgICAgICAgKHN0YXRlICE9IFdMX0tFWUJPQVJEX0tFWV9T VEFURV9SRUxFQVNFRCkpIHsKLSsgICAgICAgIHhrYl9zdGF0ZV91cGRhdGVfa2V5IChhY3RpdmVf a2V5LT5zdGF0ZSwgY29kZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RhdGUg PT0gV0xfS0VZQk9BUkRfS0VZX1NUQVRFX1JFTEVBU0VEKQotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgID8gWEtCX0tFWV9VUCA6IFhLQl9LRVlfRE9XTik7Ci0gICAgIH0KLS0gICAgeGti X3N0YXRlX3VwZGF0ZV9rZXkgKGFjdGl2ZV9rZXktPnN0YXRlLCBjb2RlLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgKHN0YXRlID09IFdMX0tFWUJPQVJEX0tFWV9TVEFURV9SRUxFQVNFRCkK LS0gICAgICAgICAgICAgICAgICAgICAgICAgID8gWEtCX0tFWV9VUCA6IFhLQl9LRVlfRE9XTik7 Ci0gICAgIHJldHVybiBmaWx0ZXJlZDsKLSB9Ci0gCi1AQCAtMTc3NywxMiArMTg5MiwzNiBAQCBp bnB1dF9tZXRob2Rfa2V5Ym9hcmRfa2V5ICh2b2lkICAgICAgICAgICAgICAgICAgICAgICpkYXRh LAotICAgICAvKiB4a2Jfa2V5X2dldF9zeW1zKCkgZG9lcyBub3QgcmV0dXJuIHRoZSBjYXBpdGFs IHN5bXMgd2l0aCBTaGlmdCBrZXkuICovCi0gICAgIGlmIChwcml2LT5rZXlfc3lzLnN0YXRlKQot ICAgICAgICAgZXZlbnQuc3ltID0geGtiX3N0YXRlX2tleV9nZXRfb25lX3N5bSAocHJpdi0+a2V5 X3N5cy5zdGF0ZSwgY29kZSk7Ci0tICAgIGlmIChldmVudC5zeW0gIT0gSUJVU19LRVlfTXVsdGlf a2V5ICYmIHByaXYtPmtleV91c2VyLnN0YXRlKQotLSAgICAgICAgZXZlbnQuc3ltID0geGtiX3N0 YXRlX2tleV9nZXRfb25lX3N5bSAocHJpdi0+a2V5X3VzZXIuc3RhdGUsIGNvZGUpOwotKyAgICBz d2l0Y2ggKGV2ZW50LnN5bSkgewotKyAgICBjYXNlIElCVVNfS0VZX011bHRpX2tleToKLSsgICAg Y2FzZSBJQlVTX0tFWV9JU09fTmV4dF9Hcm91cDoKLSsgICAgICAgIGJyZWFrOwotKyAgICBkZWZh dWx0OgotKyAgICAgICAgaWYgKHByaXYtPmtleV91c2VyLnN0YXRlKQotKyAgICAgICAgICAgIGV2 ZW50LnN5bSA9IHhrYl9zdGF0ZV9rZXlfZ2V0X29uZV9zeW0gKHByaXYtPmtleV91c2VyLnN0YXRl LCBjb2RlKTsKLSsgICAgfQotICAgICBldmVudC5tb2RpZmllcnMgPSBwcml2LT5tb2RpZmllcnM7 Ci0gICAgIGlmIChzdGF0ZSA9PSBXTF9LRVlCT0FSRF9LRVlfU1RBVEVfUkVMRUFTRUQpCi0gICAg ICAgICBldmVudC5tb2RpZmllcnMgfD0gSUJVU19SRUxFQVNFX01BU0s7Ci0gICAgIGV2ZW50Lnds aW0gPSB3bGltOwotKyNpZmRlZiBJQlVTX0xPR19TSE9XX0tFWVNZTQotKyAgICBpZiAocHJpdi0+ dmVyYm9zZSkgewotKyAgICAgICAgZnByaW50ZiAocHJpdi0+bG9nLCAiJXMgc2VyaWFsOiV1IHRp bWU6JXUga2V5OiV1ICIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN5bToleCBzeXN0 ZW1fdXNlcjoleCBzeXN0ZW1fc3ltOiV4ICIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg Im1vZGlmaWVyczoleCBzdGF0ZTolc1xuIiwKLSsgICAgICAgICAgICAgICAgIEdfU1RSRlVOQywK LSsgICAgICAgICAgICAgICAgIGtleV9zZXJpYWwsIHRpbWUsIGtleSwKLSsgICAgICAgICAgICAg ICAgIGV2ZW50LnN5bSwKLSsgICAgICAgICAgICAgICAgIHByaXYtPmtleV91c2VyLnN0YXRlID8K LSsgICAgICAgICAgICAgICAgICAgICB4a2Jfc3RhdGVfa2V5X2dldF9vbmVfc3ltIChwcml2LT5r ZXlfdXNlci5zdGF0ZSwgY29kZSkgOgotKyAgICAgICAgICAgICAgICAgICAgIDAsCi0rICAgICAg ICAgICAgICAgICBwcml2LT5rZXlfc3lzLnN0YXRlID8KLSsgICAgICAgICAgICAgICAgICAgICB4 a2Jfc3RhdGVfa2V5X2dldF9vbmVfc3ltIChwcml2LT5rZXlfc3lzLnN0YXRlLCBjb2RlKSA6Ci0r ICAgICAgICAgICAgICAgICAgICAgMCwKLSsgICAgICAgICAgICAgICAgIGV2ZW50Lm1vZGlmaWVy cywgc3RhdGUgPyAicHJlc3MiIDogInJlbGVhc2UiKTsKLSsgICAgICAgIGZmbHVzaCAocHJpdi0+ bG9nKTsKLSsgICAgfQotKyNlbmRpZgotIAotICAgICBrZXlfZXZlbnRfY2hlY2tfcmVwZWF0ICh3 bGltLCAmZXZlbnQpOwotICAgICBzd2l0Y2ggKF91c2Vfc3luY19tb2RlKSB7Ci1AQCAtMTc5Niw2 ICsxOTM1LDI5IEBAIGlucHV0X21ldGhvZF9rZXlib2FyZF9rZXkgKHZvaWQgICAgICAgICAgICAg ICAgICAgICAgKmRhdGEsCi0gfQotIAotIAotKy8qKgotKyAqIGlucHV0X21ldGhvZF9rZXlib2Fy ZF9tb2RpZmllcnM6Ci0rICoKLSsgKiBUaGlzIGlzIGEgY29tbW9uIEFQSSBvZiBpbnB1dF9tZXRo b2Rfa2V5Ym9hcmRfbW9kaWZpZXJzX3YxKCkgYW5kCi0rICogaW5wdXRfbWV0aG9kX2tleWJvYXJk X21vZGlmaWVyc192MigpLgotKyAqIElmIHlvdSBjb25maWd1cmUgbXVsdGlwbGUgWEtCIGxheW91 dHMgaW4gdGhlIHN5c3RlbSB3aXRoCi0rICogL2V0Yy92Y29uc29sZS5jb25mIGZpbGUsIHlvdSBj YW4gc3dpdGNoIHRoZSBhY3RpdmUgbGF5b3V0IHdpdGgKLSsgKiB0aGUgWEtCIG9wdGlvbnMgYW5k IEBncm91cCBpcyBjaGFuZ2VkIHdpdGggdGhlIHNob3J0Y3V0IGtleSBsaWtlCi0rICogImdycDps YWx0X2xzaGlmdF90b2dnbGUiIGJ1dCBJZiB5b3UgY2xpY2sgdGhlIGtleWJvYXJkIGljb24gaW4K LSsgKiBQbGFzbWEgS0RFIGFuZCBjaGFuZ2UgdGhlIGFjdGl2ZSBsYXlvdXQgd2l0aCBHVUksIEBn cm91cCBpcyBub3QKLSsgKiBjaGFuZ2VkIGFuZCBJIGFzc3VtZSBpdCdzIGEgYnVnIFsxXS4KLSsg KiBDdXJyZW50bHkgdGhlcmUgYXJlIHR3byBjYXNlcyBvZiB0aGUgY29tYmluYXRpb25zIG9mIHRo ZSBJQnVzIGtleW1hcCBhbmQKLSsgKiB0aGUgc3lzdGVtIGtleW1hcCBzdXBwb3J0ZWQgYnkgSUJ1 czoKLSsgKiAxLiBBbHdheXMgU2FtZSBrZXltYXBzCi0rICogICAgRS5nLiBJQnVzIGtleW1hcCBp cyAibHYodGlsZGUpIiBhbmQgc3lzdGVtIG9uZSBpcyAibHYodGlsZGUpIgotKyAqIDIuIFN5c3Rl bSBrZXltYXAgaXMgIlVTIiBhbmQgc3dpdGNoIElCdXMga2V5bWFwcyB3aXRoIFN1cGVyLXNwYWNl IGtleQotKyAqICAgIEUuZy4gSUJ1cyBrZXltYXAgaXMgImx2KHRpbGRlKSIgYW5kIHN5c3RlbSBv bmUgaXMgInVzIgotKyAqIFNvIHlvdSBzaG91bGQgdXNlIGJvdGggWEtCIG9wdGlvbiBrZXlzIGFu ZCBJQnVzIHNob3J0Y3V0a2V5cyB0byBzd2l0Y2ggdGhlCi0rICoga2V5bWFwcyB0byBjaGFuZ2Ug Ym90aCBYS0Iga2V5bWFwcyBhbmQgSUJ1cyBrZXltYXBzIGJ1dCB5b3Ugc2hvdWxkIG5vdAotKyAq IGNsaWNrIHRoZSBrZXlib2FyZCBpY29uIGluIEtERS4KLSsgKgotKyAqIFsxXSBodHRwczovL2J1 Z3Mua2RlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTE4MzcxCi0rICovCi0gc3RhdGljIHZvaWQKLSBp bnB1dF9tZXRob2Rfa2V5Ym9hcmRfbW9kaWZpZXJzICh2b2lkICAgICAgICAgICAgICAgICAgICAg ICpkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB6d3Bfa2V5 Ym9hcmRfdW5pb24gKmtleWJvYXJkLAotQEAgLTE4MTYsMjcgKzE5NzgsNTkgQEAgaW5wdXRfbWV0 aG9kX2tleWJvYXJkX21vZGlmaWVycyAodm9pZCAgICAgICAgICAgICAgICAgICAgICAqZGF0YSwK LSAgICAgICAgIGFjdGl2ZV9rZXkgPSAmcHJpdi0+a2V5X3N5czsKLSAgICAgZWxzZQotICAgICAg ICAgYWN0aXZlX2tleSA9ICZwcml2LT5rZXlfdXNlcjsKLS0gICAgaWYgKHByaXYtPmtleV91c2Vy LnN0YXRlKSB7Ci0tICAgICAgICB4a2Jfc3RhdGVfdXBkYXRlX21hc2sgKHByaXYtPmtleV91c2Vy LnN0YXRlLCBtb2RzX2RlcHJlc3NlZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bW9kc19sYXRjaGVkLCBtb2RzX2xvY2tlZCwgMCwgMCwgZ3JvdXApOwotLSAgICB9Ci0tICAgIC8q IFByZXNzaW5nIFhLQiBncm91cCBrZXkgbGlrZXMgQWx0X1Igd2l0aCBncnA6dG9nZ2xlIGNhbGxz Ci0tICAgICAqIGlucHV0X21ldGhvZF9rZXlib2FyZF9tb2RpZmllcnMoKSB3aXRoIHRoZSB1cGRh dGVkIGBncm91cGAKLS0gICAgICogYW5kIG5lZWQgdG8gdXBkYXRlIHByaXYtPmtleV9zeXMuc3Rh dGUgdG8gc3dpdGNoIHRoZSBYS0IgZ3JvdXAKLS0gICAgICogaW4gdGhlIHN5c3RlbSBrZXltYXAu Ci0tICAgICAqCi0tICAgICAqIFhLQiBncm91cCBrZXkgY2FuIHN3aXRjaCBgZ3JvdXBgIGJ1dCBj bGlja2luZyB0aGUga2V5Ym9hcmQgaWNvbgotLSAgICAgKiBvZiBLREUgZG9lcyBub3QgY2hhbmdl IGBncm91cGAgYXQgcHJlc2VudC4gTWF5YmUgYSBidWcgaW4gdGhlCi0tICAgICAqIEtERSBXYXls YW5kIGNvbXBvc2l0b3IuCi0rICAgIC8qIERvIG5vdCByZXNldCBMYXRjaCBtb2RpZmllcnMgYnkg c3lzdGVtIGluIGNhc2UgdGhlIHN5c3RlbSBrZXltYXAKLSsgICAgICogaGFzIG5vIHRoZSBMYXRj aCBrZXkuCi0rICAgICAqIEluIGNhc2UgdGhlIHVzZXIga2V5bWFwIGlzICJsdih0aWxkZSkiIGFu ZCB0aGUgc3lzdGVtIG9uZSBpcyAidXMiLAotKyAgICAgKiBpbnB1dF9tZXRob2Rfa2V5Ym9hcmRf bW9kaWZpZXJzKCkgY2xlYXJzIHN0YXRlIG9mIExldmVsM19MYXRjaCBrZXkKLSsgICAgICogaW1t ZWRpYXRlbHkgYWZ0ZXIgdGhlIExldmVsM19MYXRjaCBrZXkgaXMgcmVsZWFzZWQgYmVjYXVzZSB0 aGUgInVzIgotKyAgICAgKiBrZXltYXAgZG9lcyBub3QgaGF2ZSB0aGUgbGF0Y2gga2V5cy4KLSsg ICAgICogVGhlIGJlaGF2aW9yIGlzIGRpZmZlcmVudCBpbiBjYXNlIGJvdGggdXNlciBhbmQgc3lz dGVtIGtleW1hcHMgYXJlCi0rICAgICAqICJsdih0aWxkZSkiLgotKyAgICAgKiBTbyBgaXNfdmly dHVhbF9sYXRjaF9zdGF0ZWAga2VlcHMgdGhlIHZpcnR1YWwgc3RhdGUgb2YgdGhlIGxhdGNoIGtl eXMKLSsgICAgICogbm90IHRvIG92ZXJyaWRlIHRoZSBzdGF0ZSBvZiB0aGUgInVzIiBrZXltYXAu Ci0gICAgICAqLwotLSAgICBpZiAocHJpdi0+a2V5X3N5cy5zdGF0ZSkgewotLSAgICAgICAgeGti X3N0YXRlX3VwZGF0ZV9tYXNrIChwcml2LT5rZXlfc3lzLnN0YXRlLCBtb2RzX2RlcHJlc3NlZCwK LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kc19sYXRjaGVkLCBtb2RzX2xvY2tl ZCwgMCwgMCwgZ3JvdXApOwotKyAgICBpZiAoIXByaXYtPmlzX3ZpcnR1YWxfbGF0Y2hfc3RhdGUg fHwga2V5X3NlcmlhbCA9PSAwKSB7Ci0rICAgICAgICBpZiAocHJpdi0+a2V5X3VzZXIuc3RhdGUp IHsKLSsgICAgICAgICAgICB4a2Jfc3RhdGVfdXBkYXRlX21hc2sgKHByaXYtPmtleV91c2VyLnN0 YXRlLCBtb2RzX2RlcHJlc3NlZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG1vZHNfbGF0Y2hlZCwgbW9kc19sb2NrZWQsIDAsIDAsIGdyb3VwKTsKLSsgICAgICAgIH0KLSsg ICAgICAgIC8qIFByZXNzaW5nIFhLQiBncm91cCBrZXkgbGlrZXMgQWx0X1Igd2l0aCBncnA6dG9n Z2xlIGNhbGxzCi0rICAgICAgICAgKiBpbnB1dF9tZXRob2Rfa2V5Ym9hcmRfbW9kaWZpZXJzKCkg d2l0aCB0aGUgdXBkYXRlZCBgZ3JvdXBgCi0rICAgICAgICAgKiBhbmQgbmVlZCB0byB1cGRhdGUg cHJpdi0+a2V5X3N5cy5zdGF0ZSB0byBzd2l0Y2ggdGhlIFhLQiBncm91cAotKyAgICAgICAgICog aW4gdGhlIHN5c3RlbSBrZXltYXAuCi0rICAgICAgICAgKgotKyAgICAgICAgICogWEtCIGdyb3Vw IGtleSBjYW4gc3dpdGNoIGBncm91cGAgYnV0IGNsaWNraW5nIHRoZSBrZXlib2FyZCBpY29uCi0r ICAgICAgICAgKiBvZiBLREUgZG9lcyBub3QgY2hhbmdlIGBncm91cGAgYXQgcHJlc2VudC4gTWF5 YmUgYSBidWcgaW4gdGhlCi0rICAgICAgICAgKiBLREUgV2F5bGFuZCBjb21wb3NpdG9yLgotKyAg ICAgICAgICovCi0rICAgICAgICBpZiAocHJpdi0+a2V5X3N5cy5zdGF0ZSkgewotKyAgICAgICAg ICAgIHhrYl9zdGF0ZV91cGRhdGVfbWFzayAocHJpdi0+a2V5X3N5cy5zdGF0ZSwgbW9kc19kZXBy ZXNzZWQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RzX2xhdGNoZWQs IG1vZHNfbG9ja2VkLCAwLCAwLCBncm91cCk7Ci0rICAgICAgICB9Ci0gICAgIH0KLSAgICAgaWYg KGFjdGl2ZV9rZXktPnN0YXRlKSB7Ci0rICAgICAgICAvKiBDYXBzTG9jayBuZWVkcyBYS0JfU1RB VEVfTU9EU19MT0NLRUQgKi8KLSAgICAgICAgIG1hc2sgPSB4a2Jfc3RhdGVfc2VyaWFsaXplX21v ZHMgKGFjdGl2ZV9rZXktPnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgWEtCX1NUQVRFX0RFUFJFU1NFRCB8Ci0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBYS0JfU1RBVEVfTEFUQ0hFRCk7Ci0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBYS0JfU1RBVEVfTEFUQ0hFRCB8Ci0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYS0JfU1RBVEVfTU9EU19MT0NLRUQpOwotKyAg ICB9Ci0rICAgIGlmIChwcml2LT52ZXJib3NlKSB7Ci0rICAgICAgICBzdHJ1Y3QgeGtiX3N0YXRl ICpzdGF0ZSA9IGFjdGl2ZV9rZXktPnN0YXRlOwotKyAgICAgICAgZnByaW50ZiAocHJpdi0+bG9n LCAiVXBkYXRlIG1vZGlmaWVycyBzZXJpYWw6JXUgZGVwcmVzczolWCBsYXRjaDolWCAiCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAibG9jazolWCBncm91cDolWCBvcmlnX2RlcHJlOiVY IG9yaWdfbGF0Y2g6JVggIgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yaWdfbG9j azolWFxuIiwKLSsgICAgICAgICAgICAgICAgIGtleV9zZXJpYWwsIG1vZHNfZGVwcmVzc2VkLCBt b2RzX2xhdGNoZWQsIG1vZHNfbG9ja2VkLCBncm91cCwKLSsgICAgICAgICAgICAgICAgIHN0YXRl ID8KLSsgICAgICAgICAgICAgICAgICAgICB4a2Jfc3RhdGVfc2VyaWFsaXplX21vZHMgKHN0YXRl LCBYS0JfU1RBVEVfREVQUkVTU0VEKSA6Ci0rICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZG RiwKLSsgICAgICAgICAgICAgICAgIHN0YXRlID8KLSsgICAgICAgICAgICAgICAgICAgICB4a2Jf c3RhdGVfc2VyaWFsaXplX21vZHMgKHN0YXRlLCBYS0JfU1RBVEVfTEFUQ0hFRCkgOgotKyAgICAg ICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYsCi0rICAgICAgICAgICAgICAgICBzdGF0ZSA/Ci0r ICAgICAgICAgICAgICAgICAgICAgeGtiX3N0YXRlX3NlcmlhbGl6ZV9tb2RzIChzdGF0ZSwgWEtC X1NUQVRFX01PRFNfTE9DS0VEKSA6Ci0rICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRik7 Ci0rICAgICAgICBmZmx1c2ggKHByaXYtPmxvZyk7Ci0gICAgIH0KLSAKLSAgICAgcHJpdi0+bW9k aWZpZXJzID0gMDsKLUBAIC0xODYzLDYgKzIwNTcsOSBAQCBpbnB1dF9tZXRob2Rfa2V5Ym9hcmRf bW9kaWZpZXJzICh2b2lkICAgICAgICAgICAgICAgICAgICAgICpkYXRhLAotICAgICBpZiAobWFz ayAmIGFjdGl2ZV9rZXktPm1ldGFfbWFzaykKLSAgICAgICAgIHByaXYtPm1vZGlmaWVycyB8PSBJ QlVTX01FVEFfTUFTSzsKLSAKLSsgICAgaWYgKCFrZXlfc2VyaWFsKQotKyAgICAgICAgcmV0dXJu OwotKwotICAgICBzd2l0Y2ggKHByaXYtPnZlcnNpb24pIHsKLSAgICAgY2FzZSBJTlBVVF9NRVRI T0RfVjE6Ci0gICAgICAgICB6d3BfaW5wdXRfbWV0aG9kX2NvbnRleHRfdjFfbW9kaWZpZXJzIChw cml2LT5jb250ZXh0LCBrZXlfc2VyaWFsLAotQEAgLTI4MzQsNiArMzAzMSw3IEBAIGlidXNfd2F5 bGFuZF9pbV9jb25zdHJ1Y3RvciAoR1R5cGUgICAgICAgICAgICAgICAgICB0eXBlLAotICAgICBJ QnVzV2F5bGFuZFNlYXQgKnNlYXQgPSBOVUxMOwotICAgICBJQnVzRW5naW5lRGVzYyAqZGVzYzsK LSAgICAgc3RydWN0IHhrYl9rZXltYXAgKmtleW1hcCA9IE5VTEw7Ci0rICAgIGdib29sZWFuIGhh c19rZXltYXAgPSBGQUxTRTsKLSAKLSAgICAgb2JqZWN0ID0gR19PQkpFQ1RfQ0xBU1MgKGlidXNf d2F5bGFuZF9pbV9wYXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3RvciAoCi0gICAgICAgICAgICAgdHlw ZSwgbl9wYXJhbXMsIHBhcmFtcyk7Ci1AQCAtMjg4Miw5ICszMDgwLDIxIEBAIGlidXNfd2F5bGFu ZF9pbV9jb25zdHJ1Y3RvciAoR1R5cGUgICAgICAgICAgICAgICAgICB0eXBlLAotICAgICBkZXNj ID0gaWJ1c19idXNfZ2V0X2dsb2JhbF9lbmdpbmUgKHByaXYtPmlidXNidXMpOwotICAgICBpZiAo ZGVzYykKLSAgICAgICAgIGtleW1hcCA9IGNyZWF0ZV91c2VyX3hrYl9rZXltYXAgKHByaXYtPnhr Yl9jb250ZXh0LCBkZXNjKTsKLS0gICAgaWYgKGtleW1hcCAmJiAhaWJ1c194a2Jfa2V5bWFwX3Vw ZGF0ZV93aXRoX2tleW1hcCAoJnByaXYtPmtleV91c2VyLAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXltYXApKSB7Ci0tICAgICAgICBn X2NsZWFyX3BvaW50ZXIgKCZrZXltYXAsIHhrYl9rZXltYXBfdW5yZWYpOwotKyAgICBpZiAoa2V5 bWFwKSB7Ci0rICAgICAgICBoYXNfa2V5bWFwID0gaWJ1c194a2Jfa2V5bWFwX3VwZGF0ZV93aXRo X2tleW1hcCAoJnByaXYtPmtleV91c2VyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleW1hcCk7Ci0rICAgICAgICB4a2Jfa2V5bWFw X3VucmVmIChrZXltYXApOwotKyAgICB9Ci0rICAgIGlmIChwcml2LT52ZXJib3NlKSB7Ci0rICAg ICAgICBpZiAoIWRlc2MpIHsKLSsgICAgICAgICAgICBmcHJpbnRmIChwcml2LT5sb2csICJDb25z dHJ1Y3RvciBoYXMgbm8gZ2xvYmFsIGVuZ2luZVxuIik7Ci0rICAgICAgICB9IGVsc2UgewotKyAg ICAgICAgICAgIGZwcmludGYgKHByaXYtPmxvZywgIkNvbnN0cnVjdG9yIGVuZ2luZSAlcyBrZXlt YXA6JXMgc3RhdGU6JXNcbiIsCi0rICAgICAgICAgICAgICAgICAgICAgaWJ1c19lbmdpbmVfZGVz Y19nZXRfbmFtZSAoZGVzYyksCi0rICAgICAgICAgICAgICAgICAgICAgaGFzX2tleW1hcCA/ICJU UlVFIiA6ICJGQUxTRSIsCi0rICAgICAgICAgICAgICAgICAgICAgcHJpdi0+a2V5X3VzZXIuc3Rh dGUgPyAiVFJVRSIgOiAiRkFMU0UiKTsKLSsgICAgICAgIH0KLSsgICAgICAgIGZmbHVzaCAocHJp di0+bG9nKTsKLSAgICAgfQotICAgICBpYnVzX2J1c19zZXRfd2F0Y2hfaWJ1c19zaWduYWwgKHBy aXYtPmlidXNidXMsIFRSVUUpOwotICAgICBnX3NpZ25hbF9jb25uZWN0IChwcml2LT5pYnVzYnVz LCAiZ2xvYmFsLWVuZ2luZS1jaGFuZ2VkIiwKLS0tIAotMi41NC4wCi0KLUZyb20gZGY4MjMwZmY5 MGVjM2FhZmZmZTEwYWY3NjlhZDY2YWE5NDhhYzM0OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK LUZyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwg MjkgSnVuIDIwMjYgMTI6NTE6MDcgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzVdIGNsaWVudC93 YXlsYW5kOiBSZWZhY3RvciBpYnVzX3dheWxhbmRfaW1fcG9zdF9rZXkoKQotCi1TZXBhcmF0ZSAz IGZ1bmN0aW9ucy4KLQotRml4ZXM6ICMyODY5Ci1DbG9zZXM6IHJoYnojMjQ0NDAwOQotLS0tCi0g Y2xpZW50L3dheWxhbmQvaWJ1c3dheWxhbmRpbS5jIHwgMzc3ICsrKysrKysrKysrKysrKysrKysr Ky0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyNDYgaW5zZXJ0aW9ucygrKSwgMTMxIGRl bGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY2xpZW50L3dheWxhbmQvaWJ1c3dheWxhbmRpbS5j IGIvY2xpZW50L3dheWxhbmQvaWJ1c3dheWxhbmRpbS5jCi1pbmRleCA5NWIzMzBmOC4uYjE2ZmY1 MjEgMTAwNjQ0Ci0tLS0gYS9jbGllbnQvd2F5bGFuZC9pYnVzd2F5bGFuZGltLmMKLSsrKyBiL2Ns aWVudC93YXlsYW5kL2lidXN3YXlsYW5kaW0uYwotQEAgLTM2Nyw2ICszNjcsODEgQEAgaWJ1c193 YXlsYW5kX2ltX2NvbW1pdF90ZXh0IChJQnVzV2F5bGFuZElNICp3bGltLAotIH0KLSAKLSAKLStz dGF0aWMgZ2Jvb2xlYW4KLStpYnVzX3dheWxhbmRfaW1fY29tbWl0X2tleV9ldmVudCAoSUJ1c1dh eWxhbmRJTSAgKndsaW0sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz Ml90ICAgICAgICBrZXksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz Ml90ICAgICAgICBtb2RpZmllcnMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVpbnQzMl90ICAgICAgICBzdGF0ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgeGtiX2tleXN5bV90ICAgIHN5bSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgSUJ1c1hrYktleW1hcCAgKmFjdGl2ZV9rZXksCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGdib29sZWFuICAgICAgICBmaWx0ZXJlZCwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgeGtiX21vZF9tYXNrX3QgKm5ld19tb2RzX2RlcHJlc3NlZCwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgKmNsZWFyX3ZpcnR1 YWxfc3RhdGUpCi0rewotKyAgICBJQnVzV2F5bGFuZElNUHJpdmF0ZSAqcHJpdjsKLSsgICAgdWlu dDMyX3QgY29kZSA9IGtleSArIDg7Ci0rICAgIHVpbnQzMl90IGNoOwotKwotKyAgICBnX3JldHVy bl92YWxfaWZfZmFpbCAoSUJVU19JU19XQVlMQU5EX0lNICh3bGltKSwgZmlsdGVyZWQpOwotKyAg ICBwcml2ID0gaWJ1c193YXlsYW5kX2ltX2dldF9pbnN0YW5jZV9wcml2YXRlICh3bGltKTsKLSsK LSsgICAgaWYgKHN0YXRlID09IFdMX0tFWUJPQVJEX0tFWV9TVEFURV9SRUxFQVNFRCkKLSsgICAg ICAgIHJldHVybiBmaWx0ZXJlZDsKLSsKLSsgICAgY2ggPSBpYnVzX2tleXZhbF90b191bmljb2Rl IChzeW0pOwotKyAgICBpZiAoY2ggPT0gMCB8fCBnX3VuaWNoYXJfaXNjbnRybCAoY2gpKQotKyAg ICAgICAgY2ggPSB4a2Jfc3RhdGVfa2V5X2dldF91dGYzMiAoYWN0aXZlX2tleS0+c3RhdGUsIGNv ZGUpOwotKwotKy8qIE5vIHRleHQgd2l0aCBDb250cm9sICYgQWx0ICYgU3VwZXIga2V5cyAqLwot KyNpZm5kZWYgR0RLX1dJTkRPV0lOR19RVUFSVFoKLSsjICBkZWZpbmUgX0lCVVNfTk9fVEVYVF9J TlBVVF9NT0RfTUFTSyAoXAotKyAgICBJQlVTX0NPTlRST0xfTUFTSyB8IElCVVNfTU9EMV9NQVNL IHwgSUJVU19NT0Q0X01BU0spCi0rI2Vsc2UKLSsjICBkZWZpbmUgX0lCVVNfTk9fVEVYVF9JTlBV VF9NT0RfTUFTSyAoXAotKyAgICBJQlVTX0NPTlRST0xfTUFTSyB8IElCVVNfTU9EMl9NQVNLIHwg SUJVU19NT0Q0X01BU0spCi0rI2VuZGlmCi0rICAgIGlmICgoIWZpbHRlcmVkICYmICEobW9kaWZp ZXJzICYgX0lCVVNfTk9fVEVYVF9JTlBVVF9NT0RfTUFTSykgJiYKLSsgICAgICAgICAhZ191bmlj aGFyX2lzY250cmwgKGNoKSkgfHwgZmlsdGVyZWQpIHsKLSsgICAgICAgIC8qIEluIGNhc2UgYHVz ZV9zeXNfa2V5bWFwYCBpcyAlVFJVRSwgSUJ1cyBkb2VzIG5vdCBjb21taXQgQVNDSUkgY2hhcnMK LSsgICAgICAgICAqIGJ1dCBmb3J3YXJkcyB0aGUga2V5IGV2ZW50cyB0byB0aGUgZm9jdXNlZCBh cHBsaWNhdGlvbiBoZXJlLgotKyAgICAgICAgICogQmVjYXVzZSBzb21lIGFwcGxpY2F0aW9ucyB0 cmVhdCB0aGUgcHJpbnRhYmxlIGtleXMgYXMgY29udHJvbCBrZXlzLAotKyAgICAgICAgICogRS5n LiBnYW1lIGFwcHMgImhqa2wiIHVzZSB0aGUgY3Vyc29yIG1vdmUgbGlrZSBWSSBtb2RlLgotKyAg ICAgICAgICogVW5mb3J0dW5hdGVseSB0aGUgV2F5bGFuZCBpbnB1dC1tZXRob2QgcHJvdG9jb2wg ZG9lcyBub3QgcHJvdmlkZQotKyAgICAgICAgICogdGhlIGZhbGxiYWNrIGxvZ2ljIGFmdGVyIGFw cHMgaGFuZGxlIHRoZSBrZXkgZXZlbnRzIGxpa2UgR1RLMy8yCi0rICAgICAgICAgKiBJTSBtb2R1 bGVzLiBCdXQgdGhlIGlucHV0LW1ldGhvZCBhbHdheXMgc2hvdWxkIGhhbmRsZSBrZXkgZXZlbnRz Ci0rICAgICAgICAgKiBwcmlvciB0byBhcHBzLgotKyAgICAgICAgICovCi0rICAgICAgICBpZiAo IWZpbHRlcmVkICYmICFwcml2LT51c2Vfc3lzX2tleW1hcCkgewotKyAgICAgICAgICAgIGdjaGFy IGJ1ZmZbOF0gPSB7IDAsIH07Ci0rICAgICAgICAgICAgZ191bmljaGFyX3RvX3V0ZjggKGNoLCBi dWZmKTsKLSsgICAgICAgICAgICBpYnVzX3dheWxhbmRfaW1fY29tbWl0X3RleHQgKHdsaW0sIGJ1 ZmYpOwotKyAgICAgICAgICAgIGZpbHRlcmVkID0gVFJVRTsKLSsgICAgICAgIH0KLSsgICAgICAg IC8qIElmIGBmaWx0ZXJlZGAgaXMgJVRSVUUsIHRoZSBrZXlzeW0gY2FuIGJlIGVhdGVuIGZvciB0 aGUgY29tcG9zZQotKyAgICAgICAgICogcHJlZWRpdCBieSBJQnVzIFhLQiBlbmdpbmUuIEUuZy4g QWx0R3ItU2hpZnQtViBrZXkgcHJvZHVjZXMKLSsgICAgICAgICAqIGBMZXZlbDNfU2hpZnQnIGFu ZCBgR3JlZWtfT01FR0FgIGtleXN5bSB3aXRoICJ1cyhzeW1ib2xpYykiIGtleW1hcC4KLSsgICAg ICAgICAqIEhvd2V2ZXIgaWYgeW91IGNvbmZpZ3VyZSBtdWx0aXBsZSBrZXltYXBzLCBBbHRHci1T aGlmdCBtYXkgcHJvZHVjZQotKyAgICAgICAgICogdGhlIGtleW1hcCBzd2l0Y2ggYWx0aG91Z2gg QWx0R3ItU2hpZnQtViBwcm9kdWNlcyBgR3JlZWtfT01FR0FgLgotKyAgICAgICAgICogSSdtIG5v dCBjbGFyaWZpZWQgd2l0aCAibGV2ZWwzKHJhbHRfc3dpdGNoKSIgaW4gdXMgWEtCIGtleW1hcHMu Ci0rICAgICAgICAgKi8KLSsgICAgICAgIGlmIChtb2RpZmllcnMgJiBJQlVTX01PRDNfTUFTSykg ewotKyAgICAgICAgICAgIGlmIChuZXdfbW9kc19kZXByZXNzZWQpCi0rICAgICAgICAgICAgICAg ICpuZXdfbW9kc19kZXByZXNzZWQgJj0gfmFjdGl2ZV9rZXktPm1vZDNfbWFzazsKLSsgICAgICAg ICAgICBpZiAoY2xlYXJfdmlydHVhbF9zdGF0ZSkKLSsgICAgICAgICAgICAgICAgKmNsZWFyX3Zp cnR1YWxfc3RhdGUgPSBUUlVFOwotKyAgICAgICAgfQotKyAgICAgICAgaWYgKG1vZGlmaWVycyAm IElCVVNfTU9ENV9NQVNLKSB7Ci0rICAgICAgICAgICAgaWYgKG5ld19tb2RzX2RlcHJlc3NlZCkK LSsgICAgICAgICAgICAgICAgKm5ld19tb2RzX2RlcHJlc3NlZCAmPSB+YWN0aXZlX2tleS0+bW9k NV9tYXNrOwotKyAgICAgICAgICAgIGlmIChjbGVhcl92aXJ0dWFsX3N0YXRlKQotKyAgICAgICAg ICAgICAgICAqY2xlYXJfdmlydHVhbF9zdGF0ZSA9IFRSVUU7Ci0rICAgICAgICB9Ci0rICAgIH0K LSsjdW5kZWYgX0lCVVNfTk9fVEVYVF9JTlBVVF9NT0RfTUFTSwotKyAgICByZXR1cm4gZmlsdGVy ZWQ7Ci0rfQotKwotKwotIHN0YXRpYyB2b2lkCi0gaWJ1c193YXlsYW5kX2ltX2tleSAoSUJ1c1dh eWxhbmRJTSAqd2xpbSwKLSAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAgICAgICBrZXlf c2VyaWFsLAotQEAgLTQzMSw2ICs1MDYsMTUyIEBAIGlidXNfd2F5bGFuZF9pbV9rZXlzeW0gKElC dXNXYXlsYW5kSU0gKndsaW0sCi0gfQotIAotIAotKy8qKgotKyAqIGlidXNfd2F5bGFuZF9pbV91 cGRhdGVfdmlydHVhbF9kZXByZXNzZWQ6Ci0rICoKLSsgKiBJZiB0aGUgSUJ1cyBrZXltYXAgaXMg ZGlmZmVyZW50IGZyb20gdGhlIGNvbXBvc2l0b3Iga2V5bWFwLAotKyAqIElCdXMgbmVlZHMgdG8g bWFpbnRhaW4gdGhlIG1vZGlmaWVycyBzdGF0ZSBieSBpdHNlbGYgdG8gY2FsbAotKyAqIHhrYl9z dGF0ZV91cGRhdGVfbWFzaygpLCBFLmcuIElCdXMga2V5bWFwIGlzICJsdih0aWxkZSkiIGFuZCB0 aGUgc3lzdGVtCi0rICogb25lIGlzICJ1cyIsIGJlY2F1c2UgaW5wdXRfbWV0aG9kX2tleWJvYXJk X21vZGlmaWVycygpCi0rICogaXMgbm90IGNhbGxlZCBieSB0aGUgV2F5bGFuZCBjb21wb3NpdG9y IGluIHRoYXQgY2FzZS4KLSsgKiBTbyB0aGlzIEFQSSB1cGRhdGVzIEBtb2RzX2RlcHJlc3NlZCB3 aXRoIElTTyBsZXZlbDMgYW5kIGxldmVsNQotKyAqIGxhdGNoIGFuZCBzaGlmdCBzdGF0ZXMsIGFu ZCBzZW5kIGl0IHRvCi0rICogaWJ1c193YXlsYW5kX2ltX3VwZGF0ZV92aXJ0dWFsX3hrYl9zdGF0 ZSgpLgotKyAqLwotK3N0YXRpYyBnYm9vbGVhbgotK2lidXNfd2F5bGFuZF9pbV91cGRhdGVfdmly dHVhbF9kZXByZXNzZWQgKElCdXNXYXlsYW5kSU0gICp3bGltLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgICAgICBrZXksCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgICAgICAgIG1vZGlmaWVy cywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAg ICAgICAgc3RhdGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg eGtiX2tleXN5bV90ICAgIHN5bSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJQnVzWGtiS2V5bWFwICAqYWN0aXZlX2tleSwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgZmlsdGVyZWQsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGtiX21vZF9tYXNrX3QgKm1vZHNf ZGVwcmVzc2VkKQotK3sKLSsgICAgSUJ1c1dheWxhbmRJTVByaXZhdGUgKnByaXY7Ci0rICAgIHVp bnQzMl90IGNvZGUgPSBrZXkgKyA4OwotKyAgICB4a2JfbW9kX21hc2tfdCBuZXdfbW9kc19kZXBy ZXNzZWQ7Ci0rICAgIHhrYl9rZXlzeW1fdCBzeXN0ZW1fc3ltID0gc3ltOwotKwotKyAgICBpZiAo ZmlsdGVyZWQpCi0rICAgICAgICByZXR1cm4gZmlsdGVyZWQ7Ci0rCi0rICAgIGdfYXNzZXJ0IChJ QlVTX0lTX1dBWUxBTkRfSU0gKHdsaW0pKTsKLSsgICAgZ19hc3NlcnQgKGFjdGl2ZV9rZXkpOwot KyAgICBnX2Fzc2VydCAobW9kc19kZXByZXNzZWQpOwotKwotKyAgICBwcml2ID0gaWJ1c193YXls YW5kX2ltX2dldF9pbnN0YW5jZV9wcml2YXRlICh3bGltKTsKLSsgICAgbmV3X21vZHNfZGVwcmVz c2VkID0gKm1vZHNfZGVwcmVzc2VkOwotKwotKyAgICBpZiAoKG1vZGlmaWVycyAmIH5JQlVTX1JF TEVBU0VfTUFTSyApICE9IG5ld19tb2RzX2RlcHJlc3NlZCkgewotKyAgICAgICAgZ193YXJuaW5n ICgiSUJ1cyBtb2RpZmllcnMgJVggaXMgZGlmZmVyZW50IGZyb20gWEtCIGRlcHJlc3NlZCAlWCIs Ci0rICAgICAgICAgICAgICAgICAgIG1vZGlmaWVycywgbmV3X21vZHNfZGVwcmVzc2VkKTsKLSsg ICAgfQotKyAgICBpZiAocHJpdi0+a2V5X3N5cy5zdGF0ZSkKLSsgICAgICAgIHN5c3RlbV9zeW0g PSB4a2Jfc3RhdGVfa2V5X2dldF9vbmVfc3ltIChwcml2LT5rZXlfc3lzLnN0YXRlLCBjb2RlKTsK LSsgICAgc3dpdGNoIChzeW0pIHsKLSsgICAgY2FzZSBJQlVTX0tFWV9JU09fTGV2ZWwyX0xhdGNo OgotKyAgICAgICAgZmlsdGVyZWQgPSBUUlVFOwotKyAgICAgICAgYnJlYWs7Ci0rICAgIC8qIExl dmVsM19sYXRjaCBpcyBjYXVzZWQgYnkgVExERSBrZXkgaW4gbHYodGlsZGUpIGtleW1hcC4KLSsg ICAgICogTGV2ZWwzX1NoaWZ0IGlzIGNhdXNlZCBieSBBbHQga2V5IGluIGx2KHRpbGRlKSBrZXlt YXAuCi0rICAgICAqLwotKyAgICBjYXNlIElCVVNfS0VZX0lTT19MZXZlbDNfTGF0Y2g6Ci0rICAg IGNhc2UgSUJVU19LRVlfSVNPX0xldmVsM19TaGlmdDoKLSsgICAgICAgIGlmIChzdGF0ZSA9PSBX TF9LRVlCT0FSRF9LRVlfU1RBVEVfUFJFU1NFRCkgewotKyAgICAgICAgICAgIG5ld19tb2RzX2Rl cHJlc3NlZCB8PSBhY3RpdmVfa2V5LT5tb2Q1X21hc2s7Ci0rICAgICAgICAgICAgaWYgKHN5bSAh PSBzeXN0ZW1fc3ltKQotKyAgICAgICAgICAgICAgICBwcml2LT5pc192aXJ0dWFsX2xhdGNoX3N0 YXRlID0gVFJVRTsKLSsgICAgICAgICAgICBmaWx0ZXJlZCA9IFRSVUU7Ci0rICAgICAgICB9Ci0r ICAgICAgICBicmVhazsKLSsgICAgLyogTGV2ZWw1X0xhdGNoIGlzIGNhdXNlZCBieSBTaGlmdCtB bHQga2V5IGluIGRlKFQzKSBrZXltYXAuCi0rICAgICAqLwotKyAgICBjYXNlIElCVVNfS0VZX0lT T19MZXZlbDVfTGF0Y2g6Ci0rICAgIGNhc2UgSUJVU19LRVlfSVNPX0xldmVsNV9TaGlmdDoKLSsg ICAgICAgIGlmIChzdGF0ZSA9PSBXTF9LRVlCT0FSRF9LRVlfU1RBVEVfUFJFU1NFRCkgewotKyAg ICAgICAgICAgIG5ld19tb2RzX2RlcHJlc3NlZCB8PSBhY3RpdmVfa2V5LT5tb2QzX21hc2s7Ci0r ICAgICAgICAgICAgaWYgKHN5bSAhPSBzeXN0ZW1fc3ltKQotKyAgICAgICAgICAgICAgICBwcml2 LT5pc192aXJ0dWFsX2xhdGNoX3N0YXRlID0gVFJVRTsKLSsgICAgICAgICAgICBmaWx0ZXJlZCA9 IFRSVUU7Ci0rICAgICAgICB9Ci0rICAgICAgICBicmVhazsKLSsgICAgY2FzZSBJQlVTX0tFWV9T aGlmdF9MOgotKyAgICBjYXNlIElCVVNfS0VZX1NoaWZ0X1I6Ci0rICAgICAgICBpZiAoc3RhdGUg PT0gV0xfS0VZQk9BUkRfS0VZX1NUQVRFX1BSRVNTRUQpCi0rICAgICAgICAgICAgbmV3X21vZHNf ZGVwcmVzc2VkIHw9IGFjdGl2ZV9rZXktPnNoaWZ0X21hc2s7Ci0rICAgICAgICBlbHNlCi0rICAg ICAgICAgICAgbmV3X21vZHNfZGVwcmVzc2VkICY9IH5hY3RpdmVfa2V5LT5zaGlmdF9tYXNrOwot KyAgICAgICAgYnJlYWs7Ci0rICAgIGRlZmF1bHQ6OwotKyAgICB9Ci0rI2lmZGVmIElCVVNfTE9H X1NIT1dfS0VZU1lNCi0rICAgIGlmIChwcml2LT52ZXJib3NlKSB7Ci0rICAgICAgICBmcHJpbnRm IChwcml2LT5sb2csICIlcyBrZXk6JXUgc3ltOiV4IHN5c3RlbV9zeW06JXggbW9kaWZpZXJzOiV4 ICIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YXRlOiVzIGZpbHRlcmVkOiVkXG4i LAotKyAgICAgICAgICAgICAgICAgR19TVFJGVU5DLAotKyAgICAgICAgICAgICAgICAga2V5LCBz eW0sIHN5c3RlbV9zeW0sIG1vZGlmaWVycywgc3RhdGUgPyAicHJlc3MiIDogInJlbGVhc2UiLAot KyAgICAgICAgICAgICAgICAgZmlsdGVyZWQpOwotKyAgICAgICAgZmZsdXNoIChwcml2LT5sb2cp OwotKyAgICB9Ci0rI2VuZGlmCi0rICAgICptb2RzX2RlcHJlc3NlZCA9IG5ld19tb2RzX2RlcHJl c3NlZDsKLSsgICAgcmV0dXJuIGZpbHRlcmVkOwotK30KLSsKLSsKLSsvKioKLSsgKiBpYnVzX3dh eWxhbmRfaW1fdXBkYXRlX3ZpcnR1YWxfeGtiX3N0YXRlOgotKyAqCi0rICogVXBkYXRlIHZpcnR1 YWwgSUJ1cyB4a2Jfc3RhdGUgYnkgS2V5UHJlc3MgYW5kIEtleVJlbGVhc2UuCi0rICovCi0rc3Rh dGljIHZvaWQKLStpYnVzX3dheWxhbmRfaW1fdXBkYXRlX3ZpcnR1YWxfeGtiX3N0YXRlIChJQnVz V2F5bGFuZElNICp3bGltLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVpbnQzMl90ICAgICAgIGtleSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1aW50MzJfdCAgICAgICBzdGF0ZSwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBJQnVzWGtiS2V5bWFwICphY3RpdmVfa2V5LAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhrYl9tb2RfbWFza190IG1vZHNfZGVw cmVzc2VkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhrYl9t b2RfbWFza190IG5ld19tb2RzX2RlcHJlc3NlZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICBjbGVhcl92aXJ0dWFsX3N0YXRlKQotK3sK LSsgICAgSUJ1c1dheWxhbmRJTVByaXZhdGUgKnByaXY7Ci0rICAgIHVpbnQzMl90IGNvZGUgPSBr ZXkgKyA4OwotKyAgICB4a2JfbW9kX21hc2tfdCBtb2RzX2xvY2tlZDsKLSsgICAgeGtiX2xheW91 dF9pbmRleF90ICBncm91cCA9IDA7Ci0rCi0rICAgIGdfYXNzZXJ0IChJQlVTX0lTX1dBWUxBTkRf SU0gKHdsaW0pKTsKLSsKLSsgICAgcHJpdiA9IGlidXNfd2F5bGFuZF9pbV9nZXRfaW5zdGFuY2Vf cHJpdmF0ZSAod2xpbSk7Ci0rICAgIG1vZHNfbG9ja2VkID0geGtiX3N0YXRlX3NlcmlhbGl6ZV9t b2RzIChhY3RpdmVfa2V5LT5zdGF0ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFhLQl9TVEFURV9NT0RTX0xPQ0tFRCk7Ci0rICAgIC8qIFhLQiBncm91cCBs YXlvdXQgaXMgY29uZmlndXJlZCBpbiB0aGUgc3lzdGVtIGtleW1hcCBidXQgbm90IHRoZQotKyAg ICAgKiB1c2VyIGtleW1hcCB3aGljaCBhbHdheXMgaW5jbHVkZXMgYSBzaW5nbGUgbGF5b3V0Lgot KyAgICAgKi8KLSsgICAgaWYgKHByaXYtPmtleV9zeXMuc3RhdGUpIHsKLSsgICAgICAgIGdyb3Vw ID0geGtiX3N0YXRlX3NlcmlhbGl6ZV9sYXlvdXQgKHByaXYtPmtleV9zeXMuc3RhdGUsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYS0JfU1RBVEVfTEFZT1VU X0xPQ0tFRCk7Ci0rICAgIH0KLSsKLSsgICAgaWYgKHByaXYtPmlzX3ZpcnR1YWxfbGF0Y2hfc3Rh dGUpIHsKLSsgICAgICAgIGlmIChuZXdfbW9kc19kZXByZXNzZWQgIT0gbW9kc19kZXByZXNzZWQp IHsKLSsgICAgICAgICAgICBpbnB1dF9tZXRob2Rfa2V5Ym9hcmRfbW9kaWZpZXJzICh3bGltLCBO VUxMLCAwLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5l d19tb2RzX2RlcHJlc3NlZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAwLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG1vZHNfbG9ja2VkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGdyb3VwKTsKLSsgICAgICAgIH0KLSsgICAgICAgIGlmIChjbGVhcl92aXJ0dWFsX3N0YXRl KQotKyAgICAgICAgICAgIHByaXYtPmlzX3ZpcnR1YWxfbGF0Y2hfc3RhdGUgPSBGQUxTRTsKLSsg ICAgfQotKyAgICBpZiAoIXByaXYtPmlzX3ZpcnR1YWxfbGF0Y2hfc3RhdGUgfHwKLSsgICAgICAg IChzdGF0ZSAhPSBXTF9LRVlCT0FSRF9LRVlfU1RBVEVfUkVMRUFTRUQpKSB7Ci0rICAgICAgICB4 a2Jfc3RhdGVfdXBkYXRlX2tleSAoYWN0aXZlX2tleS0+c3RhdGUsIGNvZGUsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHN0YXRlID09IFdMX0tFWUJPQVJEX0tFWV9TVEFURV9SRUxF QVNFRCkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFhLQl9LRVlfVVAgOiBYS0Jf S0VZX0RPV04pOwotKyAgICB9Ci0rfQotKwotKwotIHN0YXRpYyB2b2lkCi0gX2NvbnRleHRfY29t bWl0X3RleHRfY2IgKElCdXNJbnB1dENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgIElCdXNUZXh0ICAgICAgICAgKnRleHQsCi1AQCAtMTI4NywxMiArMTUwOCw3IEBA IGlidXNfd2F5bGFuZF9pbV9wb3N0X2tleSAoSUJ1c1dheWxhbmRJTSAqd2xpbSwKLSB7Ci0gICAg IElCdXNXYXlsYW5kSU1Qcml2YXRlICpwcml2OwotICAgICBJQnVzWGtiS2V5bWFwICphY3RpdmVf a2V5OwotLSAgICB4a2JfbW9kX21hc2tfdCBtb2RzX2RlcHJlc3NlZCA9IDAsIG5ld19tb2RzX2Rl cHJlc3NlZCA9IDA7Ci0tICAgIHhrYl9tb2RfbWFza190IG1vZHNfbG9ja2VkOwotLSAgICB4a2Jf bGF5b3V0X2luZGV4X3QgIGdyb3VwID0gMDsKLS0gICAgeGtiX2tleXN5bV90IHN5c3RlbV9zeW0g PSBzeW07Ci0tICAgIHVpbnQzMl90IGNvZGUgPSBrZXkgKyA4OwotLSAgICB1aW50MzJfdCBjaDsK LSsgICAgeGtiX21vZF9tYXNrX3QgbW9kc19kZXByZXNzZWQsIG5ld19tb2RzX2RlcHJlc3NlZDsK LSAgICAgZ2Jvb2xlYW4gY2xlYXJfdmlydHVhbF9zdGF0ZSA9IEZBTFNFOwotIAotICAgICBnX3Jl dHVybl92YWxfaWZfZmFpbCAoSUJVU19JU19XQVlMQU5EX0lNICh3bGltKSwgRkFMU0UpOwotQEAg LTEzMjEsMTMxICsxNTM3LDMwIEBAIGlidXNfd2F5bGFuZF9pbV9wb3N0X2tleSAoSUJ1c1dheWxh bmRJTSAqd2xpbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFhLQl9TVEFURV9ERVBSRVNTRUQgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgWEtCX1NUQVRFX0xBVENIRUQpOwotICAgICBuZXdfbW9kc19kZXBy ZXNzZWQgPSBtb2RzX2RlcHJlc3NlZDsKLS0gICAgbW9kc19sb2NrZWQgPSB4a2Jfc3RhdGVfc2Vy aWFsaXplX21vZHMgKGFjdGl2ZV9rZXktPnN0YXRlLAotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgWEtCX1NUQVRFX01PRFNfTE9DS0VEKTsKLS0gICAgLyogWEtC IGdyb3VwIGxheW91dCBpcyBjb25maWd1cmVkIGluIHRoZSBzeXN0ZW0ga2V5bWFwIGJ1dCBub3Qg dGhlCi0tICAgICAqIHVzZXIga2V5bWFwIHdoaWNoIGFsd2F5cyBpbmNsdWRlcyBhIHNpbmdsZSBs YXlvdXQuCi0tICAgICAqLwotLSAgICBpZiAocHJpdi0+a2V5X3N5cy5zdGF0ZSkgewotLSAgICAg ICAgZ3JvdXAgPSB4a2Jfc3RhdGVfc2VyaWFsaXplX2xheW91dCAocHJpdi0+a2V5X3N5cy5zdGF0 ZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhLQl9TVEFU RV9MQVlPVVRfTE9DS0VEKTsKLS0gICAgfQotLSAgICBpZiAoIWZpbHRlcmVkKSB7Ci0tICAgICAg ICBpZiAocHJpdi0+a2V5X3N5cy5zdGF0ZSkKLS0gICAgICAgICAgICBzeXN0ZW1fc3ltID0geGti X3N0YXRlX2tleV9nZXRfb25lX3N5bSAocHJpdi0+a2V5X3N5cy5zdGF0ZSwgY29kZSk7Ci0tICAg ICAgICBzd2l0Y2ggKHN5bSkgewotLSAgICAgICAgY2FzZSBJQlVTX0tFWV9JU09fTGV2ZWwyX0xh dGNoOgotLSAgICAgICAgICAgIGZpbHRlcmVkID0gVFJVRTsKLS0gICAgICAgICAgICBicmVhazsK LS0gICAgICAgIC8qIExldmVsM19sYXRjaCBpcyBjYXVzZWQgYnkgVExERSBrZXkgaW4gbHYodGls ZGUpIGtleW1hcC4KLS0gICAgICAgICAqIExldmVsM19TaGlmdCBpcyBjYXVzZWQgYnkgQWx0IGtl eSBpbiBsdih0aWxkZSkga2V5bWFwLgotLSAgICAgICAgICovCi0tICAgICAgICBjYXNlIElCVVNf S0VZX0lTT19MZXZlbDNfTGF0Y2g6Ci0tICAgICAgICBjYXNlIElCVVNfS0VZX0lTT19MZXZlbDNf U2hpZnQ6Ci0tICAgICAgICAgICAgaWYgKHN0YXRlID09IFdMX0tFWUJPQVJEX0tFWV9TVEFURV9Q UkVTU0VEKSB7Ci0tICAgICAgICAgICAgICAgIG5ld19tb2RzX2RlcHJlc3NlZCB8PSBhY3RpdmVf a2V5LT5tb2Q1X21hc2s7Ci0tICAgICAgICAgICAgICAgIGlmIChzeW0gIT0gc3lzdGVtX3N5bSkK LS0gICAgICAgICAgICAgICAgICAgIHByaXYtPmlzX3ZpcnR1YWxfbGF0Y2hfc3RhdGUgPSBUUlVF OwotLSAgICAgICAgICAgICAgICBmaWx0ZXJlZCA9IFRSVUU7Ci0tICAgICAgICAgICAgfQotLSAg ICAgICAgICAgIGJyZWFrOwotLSAgICAgICAgLyogTGV2ZWw1X0xhdGNoIGlzIGNhdXNlZCBieSBT aGlmdCtBbHQga2V5IGluIGRlKFQzKSBrZXltYXAuCi0tICAgICAgICAgKi8KLS0gICAgICAgIGNh c2UgSUJVU19LRVlfSVNPX0xldmVsNV9MYXRjaDoKLS0gICAgICAgIGNhc2UgSUJVU19LRVlfSVNP X0xldmVsNV9TaGlmdDoKLS0gICAgICAgICAgICBpZiAoc3RhdGUgPT0gV0xfS0VZQk9BUkRfS0VZ X1NUQVRFX1BSRVNTRUQpIHsKLS0gICAgICAgICAgICAgICAgbmV3X21vZHNfZGVwcmVzc2VkIHw9 IGFjdGl2ZV9rZXktPm1vZDNfbWFzazsKLS0gICAgICAgICAgICAgICAgaWYgKHN5bSAhPSBzeXN0 ZW1fc3ltKQotLSAgICAgICAgICAgICAgICAgICAgcHJpdi0+aXNfdmlydHVhbF9sYXRjaF9zdGF0 ZSA9IFRSVUU7Ci0tICAgICAgICAgICAgICAgIGZpbHRlcmVkID0gVFJVRTsKLS0gICAgICAgICAg ICB9Ci0tICAgICAgICAgICAgYnJlYWs7Ci0tICAgICAgICBjYXNlIElCVVNfS0VZX1NoaWZ0X0w6 Ci0tICAgICAgICBjYXNlIElCVVNfS0VZX1NoaWZ0X1I6Ci0tICAgICAgICAgICAgaWYgKHN0YXRl ID09IFdMX0tFWUJPQVJEX0tFWV9TVEFURV9QUkVTU0VEKQotLSAgICAgICAgICAgICAgICBuZXdf bW9kc19kZXByZXNzZWQgfD0gYWN0aXZlX2tleS0+c2hpZnRfbWFzazsKLS0gICAgICAgICAgICBl bHNlCi0tICAgICAgICAgICAgICAgIG5ld19tb2RzX2RlcHJlc3NlZCAmPSB+YWN0aXZlX2tleS0+ c2hpZnRfbWFzazsKLS0gICAgICAgICAgICBicmVhazsKLS0gICAgICAgIGRlZmF1bHQ6OwotLSAg ICAgICAgfQotLSNpZmRlZiBJQlVTX0xPR19TSE9XX0tFWVNZTQotLSAgICAgICAgaWYgKHByaXYt PnZlcmJvc2UpIHsKLS0gICAgICAgICAgICBmcHJpbnRmIChwcml2LT5sb2csICIlcyBrZXk6JXUg c3ltOiV4IHN5c3RlbV9zeW06JXggbW9kaWZpZXJzOiV4ICIKLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJzdGF0ZTolcyBmaWx0ZXJlZDolZFxuIiwKLS0gICAgICAgICAgICAgICAg ICAgICBHX1NUUkZVTkMsCi0tICAgICAgICAgICAgICAgICAgICAga2V5LCBzeW0sIHN5c3RlbV9z eW0sIG1vZGlmaWVycywKLS0gICAgICAgICAgICAgICAgICAgICBzdGF0ZSA/ICJwcmVzcyIgOiAi cmVsZWFzZSIsCi0tICAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWQpOwotLSAgICAgICAgICAg IGZmbHVzaCAocHJpdi0+bG9nKTsKLS0gICAgICAgIH0KLS0jZW5kaWYKLS0gICAgfQotLSAgICBp ZiAoc3RhdGUgIT0gV0xfS0VZQk9BUkRfS0VZX1NUQVRFX1JFTEVBU0VEKSB7Ci0tICAgICAgICBj aCA9IGlidXNfa2V5dmFsX3RvX3VuaWNvZGUgKHN5bSk7Ci0tICAgICAgICBpZiAoY2ggPT0gMCB8 fCBnX3VuaWNoYXJfaXNjbnRybCAoY2gpKQotLSAgICAgICAgICAgIGNoID0geGtiX3N0YXRlX2tl eV9nZXRfdXRmMzIgKGFjdGl2ZV9rZXktPnN0YXRlLCBjb2RlKTsKLS0vKiBObyB0ZXh0IHdpdGgg Q29udHJvbCAmIEFsdCAmIFN1cGVyIGtleXMgKi8KLS0jaWZuZGVmIEdES19XSU5ET1dJTkdfUVVB UlRaCi0tIyAgZGVmaW5lIF9JQlVTX05PX1RFWFRfSU5QVVRfTU9EX01BU0sgKFwKLS0gICAgSUJV U19DT05UUk9MX01BU0sgfCBJQlVTX01PRDFfTUFTSyB8IElCVVNfTU9ENF9NQVNLKQotLSNlbHNl Ci0tIyAgZGVmaW5lIF9JQlVTX05PX1RFWFRfSU5QVVRfTU9EX01BU0sgKFwKLS0gICAgSUJVU19D T05UUk9MX01BU0sgfCBJQlVTX01PRDJfTUFTSyB8IElCVVNfTU9ENF9NQVNLKQotLSNlbmRpZgot LSAgICAgICAgaWYgKCghZmlsdGVyZWQgJiYgIShtb2RpZmllcnMgJiBfSUJVU19OT19URVhUX0lO UFVUX01PRF9NQVNLKSAmJgotLSAgICAgICAgICAgICAhZ191bmljaGFyX2lzY250cmwgKGNoKSkg fHwgZmlsdGVyZWQpIHsKLS0gICAgICAgIC8qIEluIGNhc2UgYHVzZV9zeXNfa2V5bWFwYCBpcyAl VFJVRSwgSUJ1cyBkb2VzIG5vdCBjb21taXQgQVNDSUkgY2hhcnMKLS0gICAgICAgICAqIGJ1dCBm b3J3YXJkcyB0aGUga2V5IGV2ZW50cyB0byB0aGUgZm9jdXNlZCBhcHBsaWNhdGlvbiBoZXJlLgot LSAgICAgICAgICogQmVjYXVzZSBzb21lIGFwcGxpY2F0aW9ucyB0cmVhdCB0aGUgcHJpbnRhYmxl IGtleXMgYXMgY29udHJvbCBrZXlzLAotLSAgICAgICAgICogRS5nLiBnYW1lIGFwcHMgImhqa2wi IHVzZSB0aGUgY3Vyc29yIG1vdmUgbGlrZSBWSSBtb2RlLgotLSAgICAgICAgICogVW5mb3J0dW5h dGVseSB0aGUgV2F5bGFuZCBpbnB1dC1tZXRob2QgcHJvdG9jb2wgZG9lcyBub3QgcHJvdmlkZQot LSAgICAgICAgICogdGhlIGZhbGxiYWNrIGxvZ2ljIGFmdGVyIGFwcHMgaGFuZGxlIHRoZSBrZXkg ZXZlbnRzIGxpa2UgR1RLMy8yCi0tICAgICAgICAgKiBJTSBtb2R1bGVzLiBCdXQgdGhlIGlucHV0 LW1ldGhvZCBhbHdheXMgc2hvdWxkIGhhbmRsZSBrZXkgZXZlbnRzCi0tICAgICAgICAgKiBwcmlv ciB0byBhcHBzLgotLSAgICAgICAgICovCi0tICAgICAgICAgICAgaWYgKCFmaWx0ZXJlZCAmJiAh cHJpdi0+dXNlX3N5c19rZXltYXApIHsKLS0gICAgICAgICAgICAgICAgZ2NoYXIgYnVmZls4XSA9 IHsgMCwgfTsKLS0gICAgICAgICAgICAgICAgZ191bmljaGFyX3RvX3V0ZjggKGNoLCBidWZmKTsK LS0gICAgICAgICAgICAgICAgaWJ1c193YXlsYW5kX2ltX2NvbW1pdF90ZXh0ICh3bGltLCBidWZm KTsKLS0gICAgICAgICAgICAgICAgZmlsdGVyZWQgPSBUUlVFOwotLSAgICAgICAgICAgIH0KLS0g ICAgICAgICAgICAvKiBJZiBgZmlsdGVyZWRgIGlzICVUUlVFLCB0aGUga2V5c3ltIGNhbiBiZSBl YXRlbiBmb3IgdGhlIGNvbXBvc2UKLS0gICAgICAgICAgICAgKiBwcmVlZGl0IGJ5IElCdXMgWEtC IGVuZ2luZS4gRS5nLiBBbHRHci1TaGlmdC1WIGtleSBwcm9kdWNlcwotLSAgICAgICAgICAgICAq IGBMZXZlbDNfU2hpZnQnIGFuZCBgR3JlZWtfT01FR0FgIGtleXN5bSB3aXRoICJ1cyhzeW1ib2xp YykiCi0tICAgICAgICAgICAgICoga2V5bWFwLiBIb3dldmVyIGlmIHlvdSBjb25maWd1cmUgbXVs dGlwbGUga2V5bWFwcywgQWx0R3ItU2hpZnQKLS0gICAgICAgICAgICAgKiBtYXkgcHJvZHVjZSB0 aGUga2V5bWFwIHN3aXRjaCBhbHRob3VnaCBBbHRHci1TaGlmdC1WIHByb2R1Y2VzCi0tICAgICAg ICAgICAgICogYEdyZWVrX09NRUdBYC4KLS0gICAgICAgICAgICAgKiBJJ20gbm90IGNsYXJpZmll ZCB3aXRoICJsZXZlbDMocmFsdF9zd2l0Y2gpIiBpbiB1cyBYS0Iga2V5bWFwcy4KLS0gICAgICAg ICAgICAgKi8KLS0gICAgICAgICAgICBpZiAobW9kaWZpZXJzICYgSUJVU19NT0QzX01BU0spIHsK LS0gICAgICAgICAgICAgICAgbmV3X21vZHNfZGVwcmVzc2VkICY9IH5hY3RpdmVfa2V5LT5tb2Qz X21hc2s7Ci0tICAgICAgICAgICAgICAgIGNsZWFyX3ZpcnR1YWxfc3RhdGUgPSBUUlVFOwotLSAg ICAgICAgICAgIH0KLS0gICAgICAgICAgICBpZiAobW9kaWZpZXJzICYgSUJVU19NT0Q1X01BU0sp IHsKLS0gICAgICAgICAgICAgICAgbmV3X21vZHNfZGVwcmVzc2VkICY9IH5hY3RpdmVfa2V5LT5t b2Q1X21hc2s7Ci0tICAgICAgICAgICAgICAgIGNsZWFyX3ZpcnR1YWxfc3RhdGUgPSBUUlVFOwot LSAgICAgICAgICAgIH0KLS0gICAgICAgIH0KLS0jdW5kZWYgX0lCVVNfTk9fVEVYVF9JTlBVVF9N T0RfTUFTSwotLSAgICB9Ci0tICAgIGlmIChwcml2LT5pc192aXJ0dWFsX2xhdGNoX3N0YXRlKSB7 Ci0tICAgICAgICBpZiAobmV3X21vZHNfZGVwcmVzc2VkICE9IG1vZHNfZGVwcmVzc2VkKSB7Ci0t ICAgICAgICAgICAgaW5wdXRfbWV0aG9kX2tleWJvYXJkX21vZGlmaWVycyAod2xpbSwgTlVMTCwg MCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfbW9k c19kZXByZXNzZWQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2Rz X2xvY2tlZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn cm91cCk7Ci0tICAgICAgICB9Ci0tICAgICAgICBpZiAoY2xlYXJfdmlydHVhbF9zdGF0ZSkKLS0g ICAgICAgICAgICBwcml2LT5pc192aXJ0dWFsX2xhdGNoX3N0YXRlID0gRkFMU0U7Ci0tICAgIH0K LS0gICAgaWYgKCFwcml2LT5pc192aXJ0dWFsX2xhdGNoX3N0YXRlIHx8Ci0tICAgICAgICAoc3Rh dGUgIT0gV0xfS0VZQk9BUkRfS0VZX1NUQVRFX1JFTEVBU0VEKSkgewotLSAgICAgICAgeGtiX3N0 YXRlX3VwZGF0ZV9rZXkgKGFjdGl2ZV9rZXktPnN0YXRlLCBjb2RlLAotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChzdGF0ZSA9PSBXTF9LRVlCT0FSRF9LRVlfU1RBVEVfUkVMRUFTRUQp Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBYS0JfS0VZX1VQIDogWEtCX0tFWV9E T1dOKTsKLS0gICAgfQotKyAgICBmaWx0ZXJlZCA9IGlidXNfd2F5bGFuZF9pbV91cGRhdGVfdmly dHVhbF9kZXByZXNzZWQgKHdsaW0sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAga2V5LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVycywKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW0s Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYWN0aXZlX2tleSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmaWx0ZXJlZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmV3X21vZHNfZGVwcmVzc2VkKTsKLSsgICAg ZmlsdGVyZWQgPSBpYnVzX3dheWxhbmRfaW1fY29tbWl0X2tleV9ldmVudCAod2xpbSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5LAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW0sCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZV9r ZXksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZp bHRlcmVkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmbmV3X21vZHNfZGVwcmVzc2VkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmY2xlYXJfdmlydHVhbF9zdGF0ZSk7Ci0rICAgIGlidXNfd2F5bGFu ZF9pbV91cGRhdGVfdmlydHVhbF94a2Jfc3RhdGUgKHdsaW0sCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZV9rZXksCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHNfZGVwcmVzc2VkLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfbW9kc19kZXByZXNzZWQsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyX3ZpcnR1YWxf c3RhdGUpOwotICAgICByZXR1cm4gZmlsdGVyZWQ7Ci0gfQotIAotLS0gCi0yLjU0LjAKLQotRnJv bSAwNTZiM2U1OWNjOTFiZGQ5N2VmYzhiMjg4NjBiZjIxZTM2NDE2YWZkIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQotRnJvbTogZnVqaXdhcmF0IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgot RGF0ZTogV2VkLCAxNyBKdW4gMjAyNiAxOTo1MTowOCArMDkwMAotU3ViamVjdDogW1BBVENIIDMv NV0gY2xpZW50L3dheWxhbmQ6IFJlZmFjdG9yIElTT19MZXZlbFszfDVdX1NoaWZ0IHN0YXRlCi0K LVRoZSBzdGF0ZXMgb2YgSVNPIFNoaWZ0IGtleXMgc2hvdWxkIGJlIGNsZWFyZWQgd2hlbiB0aGUg a2V5IGlzIHJlbGVhc2VkCi1hZ2FpbnN0IElTTyBMYXRjaCBrZXlzLiBFLmcuICJSQUxUIiBrZXkg aW4gImx2KHRpbGRlKSIga2V5bWFwLgotCi1UaGUgc3RhdGUgb2YgdGhlICJSQUxUIiBrZXkgaXMg c3RyYW5nZSBpbiAiZGUoVDMpIiBrZXltYXAsIGkuZS4KLSJJU09fTGV2ZWwzX1NoaWZ0IiBrZXlz eW0gZm9yIHRoZSBrZXlwcmVzcyBhbmQgSVNPX0xldmVsNV9MYXRjaCBrZXlzbQotZm9yIGtleXJl bGVhc2UgYW5kIElCdXMgY291bGQgbm90IGdldCB0aGUgY29ycmVjdCBkZWFkIGtleXMgYW5kCi1j bGVhciB0aGUgc3RhdGUuIE5vdyB0aGUgImlzX3ByZXNzZWRfbW9kNSIgZmxhZyBjaGVja3MgaWYg dGhlCi1rZXkgaXMgcHJlc3NlZCBhbmQgYWRkIGEgd29ya2Fyb3VuZC4KLQotRml4ZXM6ICMyODY5 Ci1DbG9zZXM6IHJoYnojMjQ0NDAwOQotLS0tCi0gY2xpZW50L3dheWxhbmQvaWJ1c3dheWxhbmRp bS5jIHwgMTM5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQotIDEgZmlsZSBjaGFu Z2VkLCAxMjcgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9j bGllbnQvd2F5bGFuZC9pYnVzd2F5bGFuZGltLmMgYi9jbGllbnQvd2F5bGFuZC9pYnVzd2F5bGFu ZGltLmMKLWluZGV4IGIxNmZmNTIxLi45N2UzY2UzOCAxMDA2NDQKLS0tLSBhL2NsaWVudC93YXls YW5kL2lidXN3YXlsYW5kaW0uYwotKysrIGIvY2xpZW50L3dheWxhbmQvaWJ1c3dheWxhbmRpbS5j Ci1AQCAtNjQsNiArNjQsMTMgQEAgdHlwZWRlZiBlbnVtCi0gICAgIElOUFVUX01FVEhPRF9WMiwK LSB9IElNUHJvdG9jb2xWZXJzaW9uOwotIAotK3R5cGVkZWYgZW51bSB7Ci0rICAgIElCVVNfS0VZ X0lTT19MRVZFTF9JTlZBTElELAotKyAgICBJQlVTX0tFWV9JU09fTEVWRUxfMiwKLSsgICAgSUJV U19LRVlfSVNPX0xFVkVMXzMsCi0rICAgIElCVVNfS0VZX0lTT19MRVZFTF81Ci0rfSBJQnVzS2V5 SXNvTGV2ZWxWYWx1ZTsKLSsKLSBzdHJ1Y3QgendwX2lucHV0X21ldGhvZF9jb250ZXh0X3VuaW9u IHsKLSAgICAgdW5pb24gewotICAgICAgICAgc3RydWN0IHp3cF9pbnB1dF9tZXRob2RfY29udGV4 dF92MSAqY29udGV4dF92MTsKLUBAIC0xNjMsNiArMTcwLDggQEAgc3RydWN0IF9JQnVzV2F5bGFu ZElNUHJpdmF0ZQotIAotICAgICBJQnVzWGtiS2V5bWFwIGtleV91c2VyOwotICAgICBJQnVzWGti S2V5bWFwIGtleV9zeXM7Ci0rICAgIGdib29sZWFuIGlzX3ByZXNzZWRfbW9kMzsKLSsgICAgZ2Jv b2xlYW4gaXNfcHJlc3NlZF9tb2Q1OwotIAotICAgICB1aW50MzJfdCBpbV9zZXJpYWw7Ci0gICAg IGludDMyX3QgcmVwZWF0X3JhdGU7Ci1AQCAtMzQxLDYgKzM1MCwyOCBAQCBpYnVzX3dheWxhbmRf c291cmNlX25ldyAoc3RydWN0IHdsX2Rpc3BsYXkgKmRpc3BsYXkpCi0gfQotIAotIAotK3N0YXRp YyB2b2lkCi0raWJ1c193YXlsYW5kX2ltX3Jlc2V0X21vZGlmaWVycyAoSUJ1c1dheWxhbmRJTSAq d2xpbSkKLSt7Ci0rICAgIElCdXNXYXlsYW5kSU1Qcml2YXRlICpwcml2OwotKyAgICB4a2JfbGF5 b3V0X2luZGV4X3QgIGdyb3VwID0gMDsKLSsKLSsgICAgZ19hc3NlcnQgKElCVVNfSVNfV0FZTEFO RF9JTSAod2xpbSkpOwotKwotKyAgICBwcml2ID0gaWJ1c193YXlsYW5kX2ltX2dldF9pbnN0YW5j ZV9wcml2YXRlICh3bGltKTsKLSsgICAgcHJpdi0+aXNfdmlydHVhbF9sYXRjaF9zdGF0ZSA9IEZB TFNFOwotKyAgICBwcml2LT5pc19wcmVzc2VkX21vZDMgPSBGQUxTRTsKLSsgICAgcHJpdi0+aXNf cHJlc3NlZF9tb2Q1ID0gRkFMU0U7Ci0rICAgIGlmIChwcml2LT5rZXlfdXNlci5zdGF0ZSAmJiBw cml2LT5rZXlfc3lzLnN0YXRlKSB7Ci0rICAgICAgICBncm91cCA9IHhrYl9zdGF0ZV9zZXJpYWxp emVfbGF5b3V0IChwcml2LT5rZXlfc3lzLnN0YXRlLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgWEtCX1NUQVRFX0xBWU9VVF9MT0NLRUQpOwotKyAgICAgICAg aW5wdXRfbWV0aG9kX2tleWJvYXJkX21vZGlmaWVycyAod2xpbSwgTlVMTCwgMCwgMCwgMCwgMCwg Z3JvdXApOwotKyAgICB9IGVsc2UgewotKyAgICAgICAgcHJpdi0+bW9kaWZpZXJzID0gMDsKLSsg ICAgfQotK30KLSsKLSsKLSBzdGF0aWMgdm9pZAotIGlidXNfd2F5bGFuZF9pbV9jb21taXRfdGV4 dCAoSUJ1c1dheWxhbmRJTSAqd2xpbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IGNoYXIgICAgKnN0cikKLUBAIC01MjYsNyArNTU3LDggQEAgaWJ1c193YXlsYW5kX2ltX3Vw ZGF0ZV92aXJ0dWFsX2RlcHJlc3NlZCAoSUJ1c1dheWxhbmRJTSAgKndsaW0sCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGtiX2tleXN5bV90ICAgIHN5bSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzWGtiS2V5bWFwICAq YWN0aXZlX2tleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn Ym9vbGVhbiAgICAgICAgZmlsdGVyZWQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgeGtiX21vZF9tYXNrX3QgKm1vZHNfZGVwcmVzc2VkKQotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhrYl9tb2RfbWFza190ICptb2RzX2RlcHJl c3NlZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVh biAgICAgICAqY2xlYXJfdmlydHVhbF9zdGF0ZSkKLSB7Ci0gICAgIElCdXNXYXlsYW5kSU1Qcml2 YXRlICpwcml2OwotICAgICB1aW50MzJfdCBjb2RlID0ga2V5ICsgODsKLUBAIC01MzksNiArNTcx LDcgQEAgaWJ1c193YXlsYW5kX2ltX3VwZGF0ZV92aXJ0dWFsX2RlcHJlc3NlZCAoSUJ1c1dheWxh bmRJTSAgKndsaW0sCi0gICAgIGdfYXNzZXJ0IChJQlVTX0lTX1dBWUxBTkRfSU0gKHdsaW0pKTsK LSAgICAgZ19hc3NlcnQgKGFjdGl2ZV9rZXkpOwotICAgICBnX2Fzc2VydCAobW9kc19kZXByZXNz ZWQpOwotKyAgICBnX2Fzc2VydCAoY2xlYXJfdmlydHVhbF9zdGF0ZSk7Ci0gCi0gICAgIHByaXYg PSBpYnVzX3dheWxhbmRfaW1fZ2V0X2luc3RhbmNlX3ByaXZhdGUgKHdsaW0pOwotICAgICBuZXdf bW9kc19kZXByZXNzZWQgPSAqbW9kc19kZXByZXNzZWQ7Ci1AQCAtNTU1LDI1ICs1ODgsODcgQEAg aWJ1c193YXlsYW5kX2ltX3VwZGF0ZV92aXJ0dWFsX2RlcHJlc3NlZCAoSUJ1c1dheWxhbmRJTSAg KndsaW0sCi0gICAgICAgICBicmVhazsKLSAgICAgLyogTGV2ZWwzX2xhdGNoIGlzIGNhdXNlZCBi eSBUTERFIGtleSBpbiBsdih0aWxkZSkga2V5bWFwLgotICAgICAgKiBMZXZlbDNfU2hpZnQgaXMg Y2F1c2VkIGJ5IEFsdCBrZXkgaW4gbHYodGlsZGUpIGtleW1hcC4KLSsgICAgICogTGV2ZWw1X0xh dGNoIGlzIGNhdXNlZCBieSBTaGlmdCtBbHQga2V5IGluIGRlKFQzKSBrZXltYXAuCi0gICAgICAq LwotICAgICBjYXNlIElCVVNfS0VZX0lTT19MZXZlbDNfTGF0Y2g6Ci0gICAgIGNhc2UgSUJVU19L RVlfSVNPX0xldmVsM19TaGlmdDoKLS0gICAgICAgIGlmIChzdGF0ZSA9PSBXTF9LRVlCT0FSRF9L RVlfU1RBVEVfUFJFU1NFRCkgewotLSAgICAgICAgICAgIG5ld19tb2RzX2RlcHJlc3NlZCB8PSBh Y3RpdmVfa2V5LT5tb2Q1X21hc2s7Ci0tICAgICAgICAgICAgaWYgKHN5bSAhPSBzeXN0ZW1fc3lt KQotLSAgICAgICAgICAgICAgICBwcml2LT5pc192aXJ0dWFsX2xhdGNoX3N0YXRlID0gVFJVRTsK LS0gICAgICAgICAgICBmaWx0ZXJlZCA9IFRSVUU7Ci0tICAgICAgICB9Ci0tICAgICAgICBicmVh azsKLS0gICAgLyogTGV2ZWw1X0xhdGNoIGlzIGNhdXNlZCBieSBTaGlmdCtBbHQga2V5IGluIGRl KFQzKSBrZXltYXAuCi0tICAgICAqLwotICAgICBjYXNlIElCVVNfS0VZX0lTT19MZXZlbDVfTGF0 Y2g6Ci0gICAgIGNhc2UgSUJVU19LRVlfSVNPX0xldmVsNV9TaGlmdDoKLSAgICAgICAgIGlmIChz dGF0ZSA9PSBXTF9LRVlCT0FSRF9LRVlfU1RBVEVfUFJFU1NFRCkgewotLSAgICAgICAgICAgIG5l d19tb2RzX2RlcHJlc3NlZCB8PSBhY3RpdmVfa2V5LT5tb2QzX21hc2s7Ci0rICAgICAgICAgICAg c3dpdGNoIChzeW0pIHsKLSsgICAgICAgICAgICBjYXNlIElCVVNfS0VZX0lTT19MZXZlbDNfTGF0 Y2g6Ci0rICAgICAgICAgICAgY2FzZSBJQlVTX0tFWV9JU09fTGV2ZWwzX1NoaWZ0OgotKyAgICAg ICAgICAgICAgICBwcml2LT5pc19wcmVzc2VkX21vZDUgPSBUUlVFOwotKyAgICAgICAgICAgICAg ICBuZXdfbW9kc19kZXByZXNzZWQgfD0gYWN0aXZlX2tleS0+bW9kNV9tYXNrOwotKyAgICAgICAg ICAgICAgICBicmVhazsKLSsgICAgICAgICAgICBjYXNlIElCVVNfS0VZX0lTT19MZXZlbDVfTGF0 Y2g6Ci0rICAgICAgICAgICAgY2FzZSBJQlVTX0tFWV9JU09fTGV2ZWw1X1NoaWZ0OgotKyAgICAg ICAgICAgICAgICBwcml2LT5pc19wcmVzc2VkX21vZDMgPSBUUlVFOwotKyAgICAgICAgICAgICAg ICBuZXdfbW9kc19kZXByZXNzZWQgfD0gYWN0aXZlX2tleS0+bW9kM19tYXNrOwotKyAgICAgICAg ICAgICAgICBicmVhazsKLSsgICAgICAgICAgICBkZWZhdWx0OgotKyAgICAgICAgICAgICAgICBn X2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKLSsgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgaWYg KHN5bSAhPSBzeXN0ZW1fc3ltKQotICAgICAgICAgICAgICAgICBwcml2LT5pc192aXJ0dWFsX2xh dGNoX3N0YXRlID0gVFJVRTsKLSAgICAgICAgICAgICBmaWx0ZXJlZCA9IFRSVUU7Ci0rICAgICAg ICB9IGVsc2UgewotKyAgICAgICAgICAgIElCdXNLZXlJc29MZXZlbFZhbHVlIGN1cnJlbnRfbGV2 ZWwgPSBJQlVTX0tFWV9JU09fTEVWRUxfSU5WQUxJRDsKLSsgICAgICAgICAgICBnYm9vbGVhbiAq aXNfcHJlc3NlZF9jdXJyZW50X21vZCA9IE5VTEw7Ci0rICAgICAgICAgICAgZ2Jvb2xlYW4gKmlz X3ByZXNzZWRfcmV2ZXJzZV9tb2QgPSBOVUxMOwotKyAgICAgICAgICAgIHhrYl9tb2RfbWFza190 IGN1cnJlbnRfbW9kZV9tYXNrID0gMDsKLSsgICAgICAgICAgICB4a2JfbW9kX21hc2tfdCByZXZl cnNlX21vZGVfbWFzayA9IDA7Ci0rICAgICAgICAgICAgc3dpdGNoIChzeW0pIHsKLSsgICAgICAg ICAgICBjYXNlIElCVVNfS0VZX0lTT19MZXZlbDNfTGF0Y2g6Ci0rICAgICAgICAgICAgY2FzZSBJ QlVTX0tFWV9JU09fTGV2ZWwzX1NoaWZ0OgotKyAgICAgICAgICAgICAgICBjdXJyZW50X2xldmVs ID0gSUJVU19LRVlfSVNPX0xFVkVMXzM7Ci0rICAgICAgICAgICAgICAgIGlzX3ByZXNzZWRfY3Vy cmVudF9tb2QgPSAmcHJpdi0+aXNfcHJlc3NlZF9tb2Q1OwotKyAgICAgICAgICAgICAgICBpc19w cmVzc2VkX3JldmVyc2VfbW9kID0gJnByaXYtPmlzX3ByZXNzZWRfbW9kMzsKLSsgICAgICAgICAg ICAgICAgY3VycmVudF9tb2RlX21hc2sgPSBhY3RpdmVfa2V5LT5tb2Q1X21hc2s7Ci0rICAgICAg ICAgICAgICAgIHJldmVyc2VfbW9kZV9tYXNrID0gYWN0aXZlX2tleS0+bW9kM19tYXNrOwotKyAg ICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgICBjYXNlIElCVVNfS0VZX0lTT19MZXZl bDVfTGF0Y2g6Ci0rICAgICAgICAgICAgY2FzZSBJQlVTX0tFWV9JU09fTGV2ZWw1X1NoaWZ0Ogot KyAgICAgICAgICAgICAgICBjdXJyZW50X2xldmVsID0gSUJVU19LRVlfSVNPX0xFVkVMXzU7Ci0r ICAgICAgICAgICAgICAgIGlzX3ByZXNzZWRfY3VycmVudF9tb2QgPSAmcHJpdi0+aXNfcHJlc3Nl ZF9tb2QzOwotKyAgICAgICAgICAgICAgICBpc19wcmVzc2VkX3JldmVyc2VfbW9kID0gJnByaXYt PmlzX3ByZXNzZWRfbW9kNTsKLSsgICAgICAgICAgICAgICAgY3VycmVudF9tb2RlX21hc2sgPSBh Y3RpdmVfa2V5LT5tb2QzX21hc2s7Ci0rICAgICAgICAgICAgICAgIHJldmVyc2VfbW9kZV9tYXNr ID0gYWN0aXZlX2tleS0+bW9kNV9tYXNrOwotKyAgICAgICAgICAgICAgICBicmVhazsKLSsgICAg ICAgICAgICBkZWZhdWx0OjsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgZ19hc3NlcnQg KGN1cnJlbnRfbGV2ZWwgIT0gSUJVU19LRVlfSVNPX0xFVkVMX0lOVkFMSUQpOwotKyAgICAgICAg ICAgIGdfYXNzZXJ0IChpc19wcmVzc2VkX2N1cnJlbnRfbW9kICYmIGlzX3ByZXNzZWRfcmV2ZXJz ZV9tb2QpOwotKyAgICAgICAgICAgIGlmIChHX0xJS0VMWSAoKmlzX3ByZXNzZWRfY3VycmVudF9t b2QpKSB7Ci0rICAgICAgICAgICAgICAgICppc19wcmVzc2VkX2N1cnJlbnRfbW9kID0gRkFMU0U7 Ci0rICAgICAgICAgICAgfSBlbHNlIGlmICgqaXNfcHJlc3NlZF9yZXZlcnNlX21vZCAmJgotKyAg ICAgICAgICAgICAgICAgICAgICAgKG5ld19tb2RzX2RlcHJlc3NlZCAmIGFjdGl2ZV9rZXktPm1v ZDNfbWFzaykpIHsKLSsgICAgICAgICAgICAgICAgLyogVGhlIHVubGlrZWx5IGNhc2UgIXByaXYt PmlzX3ByZXNzZWRfbW9kMyBhbmQKLSsgICAgICAgICAgICAgICAgICogcHJpdi0+aXNfcHJlc3Nl ZF9tb2Q1IG1lYW5zIHRoYXQgImRlKFQzKSIga2V5bWFwIGdpdmVzCi0rICAgICAgICAgICAgICAg ICAqIHRoZSBwcmVzc2VkICJMZXZlbDNfU2hpZnQiIGtleXN5bSBhbmQKLSsgICAgICAgICAgICAg ICAgICogdGhlIHJlbGVhc2VkICJMZXZlbDVfTGF0Y2giIGtleXN5bSBmb3IgdGhlIGtleSA8UkFM VD4uCi0rICAgICAgICAgICAgICAgICAqIE1heWJlIGEgYnVnIGluICJkZShUMykiIHNvIG5lZWQg dG8gY2xlYXIgdGhlIE1PRDUgc3RhdGUKLSsgICAgICAgICAgICAgICAgICogYnkgdGhlIHByZXNz ZWQgIkxldmVsM19TaGlmdCIga2V5c3ltLgotKyAgICAgICAgICAgICAgICAgKi8KLSsgICAgICAg ICAgICAgICAgKmlzX3ByZXNzZWRfcmV2ZXJzZV9tb2QgPSBGQUxTRTsKLSsgICAgICAgICAgICAg ICAgbmV3X21vZHNfZGVwcmVzc2VkICY9IH5yZXZlcnNlX21vZGVfbWFzazsKLSsgICAgICAgICAg ICAgICAgKmNsZWFyX3ZpcnR1YWxfc3RhdGUgPSBUUlVFOwotKyAgICAgICAgICAgICAgICBnX2Rl YnVnICgiR290IGEgd3JvbmcgcmVsZWFzZWQgJXMga2V5IHdpdGhvdXQgdGhlICIKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgInByZXNzZWQgb25lLiBNYXliZSBhIGJ1ZyBpbiBYS0IuIiwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9sZXZlbCA9PSBJQlVTX0tFWV9JU09fTEVW RUxfMyA/Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxldmVsMyIgOiAiTGV2 ZWw1Iik7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICAgIC8qIFRoZSAibHYodGlsZGUpIiBr ZXltYXAgZ2l2ZXMgdGhlICJMZXZlbDNfU2hpZnQiIGtleXN5bQotKyAgICAgICAgICAgICAqIHdp dGggdGhlIGtleSA8UkFMVD4uCi0rICAgICAgICAgICAgICovCi0rICAgICAgICAgICAgaWYgKChj dXJyZW50X2xldmVsID09IElCVVNfS0VZX0lTT19MRVZFTF8zICYmCi0rICAgICAgICAgICAgICAg ICBzeW0gPT0gSUJVU19LRVlfSVNPX0xldmVsM19TaGlmdCkgfHwKLSsgICAgICAgICAgICAgICAg KGN1cnJlbnRfbGV2ZWwgPT0gSUJVU19LRVlfSVNPX0xFVkVMXzUgJiYKLSsgICAgICAgICAgICAg ICAgIHN5bSA9PSBJQlVTX0tFWV9JU09fTGV2ZWw1X1NoaWZ0KSkgewotKyAgICAgICAgICAgICAg ICBuZXdfbW9kc19kZXByZXNzZWQgJj0gfmN1cnJlbnRfbW9kZV9tYXNrOwotKyAgICAgICAgICAg ICAgICBpZiAoc3ltICE9IHN5c3RlbV9zeW0pCi0rICAgICAgICAgICAgICAgICAgICBjbGVhcl92 aXJ0dWFsX3N0YXRlID0gVFJVRTsKLSsgICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAg ICBicmVhazsKLSAgICAgY2FzZSBJQlVTX0tFWV9TaGlmdF9MOgotQEAgLTY0OSw2ICs3NDQsMjMg QEAgaWJ1c193YXlsYW5kX2ltX3VwZGF0ZV92aXJ0dWFsX3hrYl9zdGF0ZSAoSUJ1c1dheWxhbmRJ TSAqd2xpbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RhdGUgPT0gV0xfS0VZ Qk9BUkRfS0VZX1NUQVRFX1JFTEVBU0VEKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ID8gWEtCX0tFWV9VUCA6IFhLQl9LRVlfRE9XTik7Ci0gICAgIH0KLSsgICAgaWYgKHByaXYtPmlz X3ZpcnR1YWxfbGF0Y2hfc3RhdGUgJiYKLSsgICAgICAgIChuZXdfbW9kc19kZXByZXNzZWQgIT0g bW9kc19kZXByZXNzZWQpICYmCi0rICAgICAgICAoc3RhdGUgIT0gV0xfS0VZQk9BUkRfS0VZX1NU QVRFX1JFTEVBU0VEKSkgewotKyAgICAgICAgeGtiX21vZF9tYXNrX3QgbmV3Ml9tb2RzX2RlcHJl c3NlZDsKLSsgICAgICAgIG5ldzJfbW9kc19kZXByZXNzZWQgPSB4a2Jfc3RhdGVfc2VyaWFsaXpl X21vZHMgKGFjdGl2ZV9rZXktPnN0YXRlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgWEtCX1NUQVRFX0RFUFJFU1NFRCB8Ci0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYS0JfU1RB VEVfTEFUQ0hFRCk7Ci0rICAgICAgICAvKiAiZGUoVDMpIiBrZXltYXAgZ2l2ZXMgdGhlIHByZXNz ZWQgIkxldmVsM19TaGlmdCIga2V5c3ltIGFuZAotKyAgICAgICAgICogc2V0cyBib3RoIE1PRDMo TGV2ZWw1KSBhbmQgTU9ENShMZXZlbDMpIHN0YXRlcyBhZnRlcgotKyAgICAgICAgICogeGtiX3N0 YXRlX3VwZGF0ZV9rZXkoKSBpcyBjYWxsZWQgd2l0aCB0aGUga2V5cHJlc3MuCi0rICAgICAgICAg KiBNYXliZSBhIGJ1ZyBpbiAiZGUoVDMpIiBhbmQgc2V0cyBNT0Q1KExldmVsMykgYWdhaW4gaGVy ZS4KLSsgICAgICAgICAqLwotKyAgICAgICAgaWYgKEdfVU5MSUtFTFkgKG5ld19tb2RzX2RlcHJl c3NlZCAhPSBuZXcyX21vZHNfZGVwcmVzc2VkKSkgewotKyAgICAgICAgICAgIHhrYl9zdGF0ZV91 cGRhdGVfbWFzayAoYWN0aXZlX2tleS0+c3RhdGUsIG5ld19tb2RzX2RlcHJlc3NlZCwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIG1vZHNfbG9ja2VkLCAwLCAwLCBncm91 cCk7Ci0rICAgICAgICB9Ci0rICAgIH0KLSB9Ci0gCi0gCi1AQCAtMTM1NSw2ICsxNDY3LDcgQEAg X2J1c19nbG9iYWxfZW5naW5lX2NoYW5nZWRfY2IgKElCdXNCdXMgICAgICAgKmJ1cywKLSAgICAg Z19yZXR1cm5faWZfZmFpbCAoSUJVU19JU19XQVlMQU5EX0lNICh3bGltKSk7Ci0gICAgIHByaXYg PSBpYnVzX3dheWxhbmRfaW1fZ2V0X2luc3RhbmNlX3ByaXZhdGUgKHdsaW0pOwotICAgICBkZXNj ID0gaWJ1c19idXNfZ2V0X2dsb2JhbF9lbmdpbmUgKGJ1cyk7Ci0rICAgIGlidXNfd2F5bGFuZF9p bV9yZXNldF9tb2RpZmllcnMgKHdsaW0pOwotICAgICBnX2Fzc2VydCAoZGVzYyk7Ci0gICAgIGdf YXNzZXJ0ICghZ19zdHJjbXAwIChpYnVzX2VuZ2luZV9kZXNjX2dldF9uYW1lIChkZXNjKSwgZW5n aW5lX25hbWUpKTsKLSAgICAgLyogQWx3YXlzIHVwZGF0ZSBwcml2LT5rZXlfdXNlciBldmVuIGlm IHByaXYtPnVzZV9zeXNfa2V5bWFwIGlzICVGQUxTRQotQEAgLTE1NDQsNyArMTY1Nyw4IEBAIGli dXNfd2F5bGFuZF9pbV9wb3N0X2tleSAoSUJ1c1dheWxhbmRJTSAqd2xpbSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW0sCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0 aXZlX2tleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmaWx0ZXJlZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmbmV3X21vZHNfZGVwcmVzc2VkKTsKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmV3X21vZHNf ZGVwcmVzc2VkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZjbGVhcl92aXJ0dWFsX3N0YXRlKTsKLSAgICAgZmlsdGVyZWQgPSBpYnVz X3dheWxhbmRfaW1fY29tbWl0X2tleV9ldmVudCAod2xpbSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5LAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMsCi1AQCAtMjQyNyw2ICsyNTQx LDcgQEAgX2NyZWF0ZV9pbnB1dF9jb250ZXh0X2RvbmUgKEdPYmplY3QgICAgICAqb2JqZWN0LAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgVFJVRSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBpYnVzX2lucHV0X2NvbnRleHRfZm9jdXNf aW4gKHByaXYtPmlidXNjb250ZXh0KTsKLSsgICAgICAgIGlidXNfd2F5bGFuZF9pbV9yZXNldF9t b2RpZmllcnMgKHdsaW0pOwotICAgICAgICAgZ19zaWduYWxfZW1pdCAod2xpbSwKLSAgICAgICAg ICAgICAgICAgICAgICAgIHdheWxhbmRfaW1fc2lnbmFsc1tJQlVTX0ZPQ1VTX0lOXSwKLSAgICAg ICAgICAgICAgICAgICAgICAgIDAsCi0tLSAKLTIuNTQuMAotCi1Gcm9tIDIyY2EzN2E1ZDQzYWM3 Y2YwNDk3ODBkYTVlMTQ1MjUwNTQwNmMwNzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9t OiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDI1IEp1 biAyMDI2IDIyOjE2OjQyICswOTAwCi1TdWJqZWN0OiBbUEFUQ0ggNC81XSBjbGllbnQvd2F5bGFu ZDogRml4IGluZmluaXRlIGRlYWRfZGlhZXJlc2lzIHdpdGggZnIoZXJnb2wpIGtleW1hcAotCi1U eXBpbmcgdGhlIGtleSA8QUQwOT4gdHdpY2UgZ2l2ZXMgZGlmZmVyZW50IGtleXN5bXMgYmV0d2Vl biBLZXlQcmVzcwotYW5kIEtleVJlbGVhc2UgZXZlbnRzIGFuZCBjYXVzZXMgdGhlIHJldmVyc2Ug b3JkZXIgb2YgS2V5UHJlc3MgYW5kCi1LZXlSZWxlYXNlIG9mIHRoZSAiZGVhZF9kaWFlcmVzaXMi IGtleXN5bS4KLU5vdyBpYnVzLXdheWxhbmQgY2hlY2tzIHRoZSBzcGVjaWFsIG9yZGVyIG5vdCB0 byBjYXVzZSB0aGUga2V5IHJlcGVhdGluZy4KLUFsc28gaWJ1cy13YXlsYW5kIHJlbGVhc2VzIHRo ZSBzdGF0ZSBvZiAiSVNPX0xldmVsNV9MYXRjaCIgd2l0aCB0eXBpbmcKLXRoZSBrZXkgPEFEMDk+ IHR3aWNlLgotCi1GaXhlczogIzI4NjkKLUNsb3NlczogIzI4OTQKLS0tLQotIGNsaWVudC93YXls YW5kL2lidXN3YXlsYW5kaW0uYyB8IDI0NSArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0KLSAxIGZpbGUgY2hhbmdlZCwgMTcyIGluc2VydGlvbnMoKyksIDczIGRlbGV0aW9ucygtKQot Ci1kaWZmIC0tZ2l0IGEvY2xpZW50L3dheWxhbmQvaWJ1c3dheWxhbmRpbS5jIGIvY2xpZW50L3dh eWxhbmQvaWJ1c3dheWxhbmRpbS5jCi1pbmRleCA5N2UzY2UzOC4uZWZlYjY3ODMgMTAwNjQ0Ci0t LS0gYS9jbGllbnQvd2F5bGFuZC9pYnVzd2F5bGFuZGltLmMKLSsrKyBiL2NsaWVudC93YXlsYW5k L2lidXN3YXlsYW5kaW0uYwotQEAgLTcxLDYgKzcxLDEyIEBAIHR5cGVkZWYgZW51bSB7Ci0gICAg IElCVVNfS0VZX0lTT19MRVZFTF81Ci0gfSBJQnVzS2V5SXNvTGV2ZWxWYWx1ZTsKLSAKLSt0eXBl ZGVmIGVudW0gewotKyAgICBJQlVTX0tFWV9JU09fTEVWRUxfU1RBVEVfUkVMRUFTRSwKLSsgICAg SUJVU19LRVlfSVNPX0xFVkVMX1NUQVRFX1NISUZULAotKyAgICBJQlVTX0tFWV9JU09fTEVWRUxf U1RBVEVfTEFUQ0gKLSt9IElCdXNLZXlJc29MZXZlbFN0YXRlOwotKwotIHN0cnVjdCB6d3BfaW5w dXRfbWV0aG9kX2NvbnRleHRfdW5pb24gewotICAgICB1bmlvbiB7Ci0gICAgICAgICBzdHJ1Y3Qg endwX2lucHV0X21ldGhvZF9jb250ZXh0X3YxICpjb250ZXh0X3YxOwotQEAgLTE3MCwxMiArMTc2 LDE0IEBAIHN0cnVjdCBfSUJ1c1dheWxhbmRJTVByaXZhdGUKLSAKLSAgICAgSUJ1c1hrYktleW1h cCBrZXlfdXNlcjsKLSAgICAgSUJ1c1hrYktleW1hcCBrZXlfc3lzOwotLSAgICBnYm9vbGVhbiBp c19wcmVzc2VkX21vZDM7Ci0tICAgIGdib29sZWFuIGlzX3ByZXNzZWRfbW9kNTsKLSsgICAgSUJ1 c0tleUlzb0xldmVsU3RhdGUgaXNvX2xldmVsM19zdGF0ZTsKLSsgICAgSUJ1c0tleUlzb0xldmVs U3RhdGUgaXNvX2xldmVsNV9zdGF0ZTsKLSAKLSAgICAgdWludDMyX3QgaW1fc2VyaWFsOwotICAg ICBpbnQzMl90IHJlcGVhdF9yYXRlOwotICAgICBpbnQzMl90IHJlcGVhdF9kZWxheTsKLSsgICAg eGtiX2tleXN5bV90IHByZXNzZWRfZGVhZF9rZXk7Ci0rICAgIHhrYl9rZXlzeW1fdCByZWxlYXNl ZF9kZWFkX2tleV93b19wcmVzczsKLSAKLSAgICAgR0NhbmNlbGxhYmxlICpjYW5jZWxsYWJsZTsK LSB9OwotQEAgLTM2MCw4ICszNjgsMTAgQEAgaWJ1c193YXlsYW5kX2ltX3Jlc2V0X21vZGlmaWVy cyAoSUJ1c1dheWxhbmRJTSAqd2xpbSkKLSAKLSAgICAgcHJpdiA9IGlidXNfd2F5bGFuZF9pbV9n ZXRfaW5zdGFuY2VfcHJpdmF0ZSAod2xpbSk7Ci0gICAgIHByaXYtPmlzX3ZpcnR1YWxfbGF0Y2hf c3RhdGUgPSBGQUxTRTsKLS0gICAgcHJpdi0+aXNfcHJlc3NlZF9tb2QzID0gRkFMU0U7Ci0tICAg IHByaXYtPmlzX3ByZXNzZWRfbW9kNSA9IEZBTFNFOwotKyAgICBwcml2LT5pc29fbGV2ZWwzX3N0 YXRlID0gSUJVU19LRVlfSVNPX0xFVkVMX1NUQVRFX1JFTEVBU0U7Ci0rICAgIHByaXYtPmlzb19s ZXZlbDVfc3RhdGUgPSBJQlVTX0tFWV9JU09fTEVWRUxfU1RBVEVfUkVMRUFTRTsKLSsgICAgcHJp di0+cHJlc3NlZF9kZWFkX2tleSA9IDA7Ci0rICAgIHByaXYtPnJlbGVhc2VkX2RlYWRfa2V5X3dv X3ByZXNzID0gMDsKLSAgICAgaWYgKHByaXYtPmtleV91c2VyLnN0YXRlICYmIHByaXYtPmtleV9z eXMuc3RhdGUpIHsKLSAgICAgICAgIGdyb3VwID0geGtiX3N0YXRlX3NlcmlhbGl6ZV9sYXlvdXQg KHByaXYtPmtleV9zeXMuc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBYS0JfU1RBVEVfTEFZT1VUX0xPQ0tFRCk7Ci1AQCAtNDA3LDcgKzQxNyw4IEBA IGlidXNfd2F5bGFuZF9pbV9jb21taXRfa2V5X2V2ZW50IChJQnVzV2F5bGFuZElNICAqd2xpbSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c1hrYktleW1hcCAgKmFjdGl2 ZV9rZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAg ICBmaWx0ZXJlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGtiX21vZF9t YXNrX3QgKm5ld19tb2RzX2RlcHJlc3NlZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ2Jvb2xlYW4gICAgICAgKmNsZWFyX3ZpcnR1YWxfc3RhdGUpCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICpjbGVhcl92aXJ0dWFsX3N0YXRl LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAqaXNf aW52YWxpZF9rZXkpCi0gewotICAgICBJQnVzV2F5bGFuZElNUHJpdmF0ZSAqcHJpdjsKLSAgICAg dWludDMyX3QgY29kZSA9IGtleSArIDg7Ci1AQCAtNDE2LDkgKzQyNyw2IEBAIGlidXNfd2F5bGFu ZF9pbV9jb21taXRfa2V5X2V2ZW50IChJQnVzV2F5bGFuZElNICAqd2xpbSwKLSAgICAgZ19yZXR1 cm5fdmFsX2lmX2ZhaWwgKElCVVNfSVNfV0FZTEFORF9JTSAod2xpbSksIGZpbHRlcmVkKTsKLSAg ICAgcHJpdiA9IGlidXNfd2F5bGFuZF9pbV9nZXRfaW5zdGFuY2VfcHJpdmF0ZSAod2xpbSk7Ci0g Ci0tICAgIGlmIChzdGF0ZSA9PSBXTF9LRVlCT0FSRF9LRVlfU1RBVEVfUkVMRUFTRUQpCi0tICAg ICAgICByZXR1cm4gZmlsdGVyZWQ7Ci0tCi0gICAgIGNoID0gaWJ1c19rZXl2YWxfdG9fdW5pY29k ZSAoc3ltKTsKLSAgICAgaWYgKGNoID09IDAgfHwgZ191bmljaGFyX2lzY250cmwgKGNoKSkKLSAg ICAgICAgIGNoID0geGtiX3N0YXRlX2tleV9nZXRfdXRmMzIgKGFjdGl2ZV9rZXktPnN0YXRlLCBj b2RlKTsKLUBAIC00MzEsMjMgKzQzOSwyOCBAQCBpYnVzX3dheWxhbmRfaW1fY29tbWl0X2tleV9l dmVudCAoSUJ1c1dheWxhbmRJTSAgKndsaW0sCi0gIyAgZGVmaW5lIF9JQlVTX05PX1RFWFRfSU5Q VVRfTU9EX01BU0sgKFwKLSAgICAgSUJVU19DT05UUk9MX01BU0sgfCBJQlVTX01PRDJfTUFTSyB8 IElCVVNfTU9ENF9NQVNLKQotICNlbmRpZgotLSAgICBpZiAoKCFmaWx0ZXJlZCAmJiAhKG1vZGlm aWVycyAmIF9JQlVTX05PX1RFWFRfSU5QVVRfTU9EX01BU0spICYmCi0tICAgICAgICAgIWdfdW5p Y2hhcl9pc2NudHJsIChjaCkpIHx8IGZpbHRlcmVkKSB7Ci0tICAgICAgICAvKiBJbiBjYXNlIGB1 c2Vfc3lzX2tleW1hcGAgaXMgJVRSVUUsIElCdXMgZG9lcyBub3QgY29tbWl0IEFTQ0lJIGNoYXJz Ci0tICAgICAgICAgKiBidXQgZm9yd2FyZHMgdGhlIGtleSBldmVudHMgdG8gdGhlIGZvY3VzZWQg YXBwbGljYXRpb24gaGVyZS4KLS0gICAgICAgICAqIEJlY2F1c2Ugc29tZSBhcHBsaWNhdGlvbnMg dHJlYXQgdGhlIHByaW50YWJsZSBrZXlzIGFzIGNvbnRyb2wga2V5cywKLS0gICAgICAgICAqIEUu Zy4gZ2FtZSBhcHBzICJoamtsIiB1c2UgdGhlIGN1cnNvciBtb3ZlIGxpa2UgVkkgbW9kZS4KLS0g ICAgICAgICAqIFVuZm9ydHVuYXRlbHkgdGhlIFdheWxhbmQgaW5wdXQtbWV0aG9kIHByb3RvY29s IGRvZXMgbm90IHByb3ZpZGUKLS0gICAgICAgICAqIHRoZSBmYWxsYmFjayBsb2dpYyBhZnRlciBh cHBzIGhhbmRsZSB0aGUga2V5IGV2ZW50cyBsaWtlIEdUSzMvMgotLSAgICAgICAgICogSU0gbW9k dWxlcy4gQnV0IHRoZSBpbnB1dC1tZXRob2QgYWx3YXlzIHNob3VsZCBoYW5kbGUga2V5IGV2ZW50 cwotLSAgICAgICAgICogcHJpb3IgdG8gYXBwcy4KLS0gICAgICAgICAqLwotLSAgICAgICAgaWYg KCFmaWx0ZXJlZCAmJiAhcHJpdi0+dXNlX3N5c19rZXltYXApIHsKLS0gICAgICAgICAgICBnY2hh ciBidWZmWzhdID0geyAwLCB9OwotLSAgICAgICAgICAgIGdfdW5pY2hhcl90b191dGY4IChjaCwg YnVmZik7Ci0tICAgICAgICAgICAgaWJ1c193YXlsYW5kX2ltX2NvbW1pdF90ZXh0ICh3bGltLCBi dWZmKTsKLS0gICAgICAgICAgICBmaWx0ZXJlZCA9IFRSVUU7Ci0tICAgICAgICB9Ci0rICAgIGlm ICgoc3RhdGUgPT0gV0xfS0VZQk9BUkRfS0VZX1NUQVRFX1JFTEVBU0VEKSB8fAotKyAgICAgICAg KG1vZGlmaWVycyAmIF9JQlVTX05PX1RFWFRfSU5QVVRfTU9EX01BU0spKSB7Ci0rICAgICAgICBy ZXR1cm4gZmlsdGVyZWQ7Ci0rICAgIH0KLSsjdW5kZWYgX0lCVVNfTk9fVEVYVF9JTlBVVF9NT0Rf TUFTSwotKwotKyAgICAvKiBJbiBjYXNlIGB1c2Vfc3lzX2tleW1hcGAgaXMgJVRSVUUsIElCdXMg ZG9lcyBub3QgY29tbWl0IEFTQ0lJIGNoYXJzCi0rICAgICAqIGJ1dCBmb3J3YXJkcyB0aGUga2V5 IGV2ZW50cyB0byB0aGUgZm9jdXNlZCBhcHBsaWNhdGlvbiBoZXJlLgotKyAgICAgKiBCZWNhdXNl IHNvbWUgYXBwbGljYXRpb25zIHRyZWF0IHRoZSBwcmludGFibGUga2V5cyBhcyBjb250cm9sIGtl eXMsCi0rICAgICAqIEUuZy4gZ2FtZSBhcHBzICJoamtsIiB1c2UgdGhlIGN1cnNvciBtb3ZlIGxp a2UgVkkgbW9kZS4KLSsgICAgICogVW5mb3J0dW5hdGVseSB0aGUgV2F5bGFuZCBpbnB1dC1tZXRo b2QgcHJvdG9jb2wgZG9lcyBub3QgcHJvdmlkZQotKyAgICAgKiB0aGUgZmFsbGJhY2sgbG9naWMg YWZ0ZXIgYXBwcyBoYW5kbGUgdGhlIGtleSBldmVudHMgbGlrZSBHVEszLzIKLSsgICAgICogSU0g bW9kdWxlcy4gQnV0IHRoZSBpbnB1dC1tZXRob2QgYWx3YXlzIHNob3VsZCBoYW5kbGUga2V5IGV2 ZW50cwotKyAgICAgKiBwcmlvciB0byBhcHBzLgotKyAgICAgKi8KLSsgICAgaWYgKCFmaWx0ZXJl ZCAmJiAhZ191bmljaGFyX2lzY250cmwgKGNoKSAmJiAhcHJpdi0+dXNlX3N5c19rZXltYXApIHsK LSsgICAgICAgIGdjaGFyIGJ1ZmZbOF0gPSB7IDAsIH07Ci0rICAgICAgICBnX3VuaWNoYXJfdG9f dXRmOCAoY2gsIGJ1ZmYpOwotKyAgICAgICAgaWJ1c193YXlsYW5kX2ltX2NvbW1pdF90ZXh0ICh3 bGltLCBidWZmKTsKLSsgICAgICAgIGZpbHRlcmVkID0gVFJVRTsKLSsgICAgfQotKyAgICBpZiAo IWdfdW5pY2hhcl9pc2NudHJsIChjaCkgfHwgSVNfREVBRF9LRVkgKHN5bSkpIHsKLSAgICAgICAg IC8qIElmIGBmaWx0ZXJlZGAgaXMgJVRSVUUsIHRoZSBrZXlzeW0gY2FuIGJlIGVhdGVuIGZvciB0 aGUgY29tcG9zZQotICAgICAgICAgICogcHJlZWRpdCBieSBJQnVzIFhLQiBlbmdpbmUuIEUuZy4g QWx0R3ItU2hpZnQtViBrZXkgcHJvZHVjZXMKLSAgICAgICAgICAqIGBMZXZlbDNfU2hpZnQnIGFu ZCBgR3JlZWtfT01FR0FgIGtleXN5bSB3aXRoICJ1cyhzeW1ib2xpYykiIGtleW1hcC4KLUBAIC00 NTYsMTkgKzQ2OSw0MiBAQCBpYnVzX3dheWxhbmRfaW1fY29tbWl0X2tleV9ldmVudCAoSUJ1c1dh eWxhbmRJTSAgKndsaW0sCi0gICAgICAgICAgKiBJJ20gbm90IGNsYXJpZmllZCB3aXRoICJsZXZl bDMocmFsdF9zd2l0Y2gpIiBpbiB1cyBYS0Iga2V5bWFwcy4KLSAgICAgICAgICAqLwotICAgICAg ICAgaWYgKG1vZGlmaWVycyAmIElCVVNfTU9EM19NQVNLKSB7Ci0rICAgICAgICAgICAgLyogV2l0 aCB0aGUgImZyKGVyZ29sKSIga2V5bWFwLCBUeXBpbmcgdGhlIGtleSA8QUQwOT4gdHdpY2UKLSsg ICAgICAgICAgICAgKiBwcm9kdWNlcyB0aGUgIklTT19MZXZlbDVfTGF0Y2giIGtleXN5bSBmb3Ig dGhlIGZpcnN0IEtleVByZXNzCi0rICAgICAgICAgICAgICogYW5kIHRoZSAiZGVhZF9kaWFlcmVz aXMiIGtleXN5bSBmb3IgdGhlIGZpcnN0IEtleVJlbGVlYXNlCi0rICAgICAgICAgICAgICogYmVj YXVzZSB0aGUgcmVsZWFzZSBrZXkgZXZlbnQgaGFzIE1PRDMobGV2ZWw1KSBzdGF0ZS4KLSsgICAg ICAgICAgICAgKiBBbmQgdGhlIHNlY29uZCBLZXlQcmVzcyBoYXMgdGhlICJkZWFkX2RpYWVyZXNp cyIga2V5c3ltIGFuZAotKyAgICAgICAgICAgICAqIHRoZSBzZWNvbmQgS2V5UmVsZWFzZSBoYXMg dGhlICJJU09fTGV2ZWw1X0xhdGNoIiBrZXlzeW0uCi0rICAgICAgICAgICAgICogVGhlIGxhdGNo IHN0YXRlIHNob3VsZCBiZSBjbGVhcmVkIHdpdGggdGhlIGRlYWQga2V5cy4KLSsgICAgICAgICAg ICAgKiBJIGRvd25ncmFkZSB0aGUgbGF0Y2ggc3RhdGUgdG8gdGhlIHNoaWZ0IHN0YXRlIGhlcmUg YW5kCi0rICAgICAgICAgICAgICogdGhlIHNoaWZ0IHN0YXRlIHdpbGwgYmUgY2xlYXJlZCBieSB0 aGUgcmVsZWFzZWQKLSsgICAgICAgICAgICAgKiAiSVNPX0xldmVsNV9MYXRjaCIga2V5c3ltIGJ1 dCBub3QgdGhlIHByZXNzZWQgZGVhZCBrZXlzCi0rICAgICAgICAgICAgICogYmVjYXVzZSB4a2Jf c3RhdGVfdXBkYXRlX2tleSgpIHdpbGwgcmV2ZXJ0IHRoZSBNT0QzKGxldmVsNSkKLSsgICAgICAg ICAgICAgKiBzdGF0ZSBvZiB0aGUgZGVwcmVzc2VkIHhrYl9zdGF0ZV9zZXJpYWxpemVfbW9kcygp Ci0rICAgICAgICAgICAgICogd2l0aCB0aGUgZGVhZCBrZXlzLgotKyAgICAgICAgICAgICAqLwot KyAgICAgICAgICAgIGlmIChwcml2LT5pc29fbGV2ZWw1X3N0YXRlID09IElCVVNfS0VZX0lTT19M RVZFTF9TVEFURV9MQVRDSCkgewotKyAgICAgICAgICAgICAgICBwcml2LT5pc29fbGV2ZWw1X3N0 YXRlID0gSUJVU19LRVlfSVNPX0xFVkVMX1NUQVRFX1NISUZUOwotKyAgICAgICAgICAgICAgICBp ZiAoaXNfaW52YWxpZF9rZXkpCi0rICAgICAgICAgICAgICAgICAgICAqaXNfaW52YWxpZF9rZXkg PSBUUlVFOwotKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2xlYXJfdmlydHVhbF9zdGF0ZSkgewot KyAgICAgICAgICAgICAgICAqY2xlYXJfdmlydHVhbF9zdGF0ZSA9IFRSVUU7Ci0rICAgICAgICAg ICAgfQotICAgICAgICAgICAgIGlmIChuZXdfbW9kc19kZXByZXNzZWQpCi0gICAgICAgICAgICAg ICAgICpuZXdfbW9kc19kZXByZXNzZWQgJj0gfmFjdGl2ZV9rZXktPm1vZDNfbWFzazsKLS0gICAg ICAgICAgICBpZiAoY2xlYXJfdmlydHVhbF9zdGF0ZSkKLS0gICAgICAgICAgICAgICAgKmNsZWFy X3ZpcnR1YWxfc3RhdGUgPSBUUlVFOwotICAgICAgICAgfQotICAgICAgICAgaWYgKG1vZGlmaWVy cyAmIElCVVNfTU9ENV9NQVNLKSB7Ci0rICAgICAgICAgICAgaWYgKHByaXYtPmlzb19sZXZlbDNf c3RhdGUgPT0gSUJVU19LRVlfSVNPX0xFVkVMX1NUQVRFX0xBVENIKSB7Ci0rICAgICAgICAgICAg ICAgIHByaXYtPmlzb19sZXZlbDNfc3RhdGUgPSBJQlVTX0tFWV9JU09fTEVWRUxfU1RBVEVfU0hJ RlQ7Ci0rICAgICAgICAgICAgICAgIGlmIChpc19pbnZhbGlkX2tleSkKLSsgICAgICAgICAgICAg ICAgICAgICppc19pbnZhbGlkX2tleSA9IFRSVUU7Ci0rICAgICAgICAgICAgfSBlbHNlIGlmIChj bGVhcl92aXJ0dWFsX3N0YXRlKSB7Ci0rICAgICAgICAgICAgICAgICpjbGVhcl92aXJ0dWFsX3N0 YXRlID0gVFJVRTsKLSsgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgaWYgKG5ld19tb2RzX2Rl cHJlc3NlZCkKLSAgICAgICAgICAgICAgICAgKm5ld19tb2RzX2RlcHJlc3NlZCAmPSB+YWN0aXZl X2tleS0+bW9kNV9tYXNrOwotLSAgICAgICAgICAgIGlmIChjbGVhcl92aXJ0dWFsX3N0YXRlKQot LSAgICAgICAgICAgICAgICAqY2xlYXJfdmlydHVhbF9zdGF0ZSA9IFRSVUU7Ci0gICAgICAgICB9 Ci0gICAgIH0KLS0jdW5kZWYgX0lCVVNfTk9fVEVYVF9JTlBVVF9NT0RfTUFTSwotICAgICByZXR1 cm4gZmlsdGVyZWQ7Ci0gfQotIAotQEAgLTU1OCw3ICs1OTQsOCBAQCBpYnVzX3dheWxhbmRfaW1f dXBkYXRlX3ZpcnR1YWxfZGVwcmVzc2VkIChJQnVzV2F5bGFuZElNICAqd2xpbSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzWGtiS2V5bWFwICAqYWN0aXZl X2tleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVh biAgICAgICAgZmlsdGVyZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgeGtiX21vZF9tYXNrX3QgKm1vZHNfZGVwcmVzc2VkLAotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICpjbGVhcl92aXJ0dWFsX3N0 YXRlKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFu ICAgICAgICpjbGVhcl92aXJ0dWFsX3N0YXRlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICppc19pbnZhbGlkX2tleSkKLSB7Ci0gICAg IElCdXNXYXlsYW5kSU1Qcml2YXRlICpwcml2OwotICAgICB1aW50MzJfdCBjb2RlID0ga2V5ICsg ODsKLUBAIC01NzIsNiArNjA5LDcgQEAgaWJ1c193YXlsYW5kX2ltX3VwZGF0ZV92aXJ0dWFsX2Rl cHJlc3NlZCAoSUJ1c1dheWxhbmRJTSAgKndsaW0sCi0gICAgIGdfYXNzZXJ0IChhY3RpdmVfa2V5 KTsKLSAgICAgZ19hc3NlcnQgKG1vZHNfZGVwcmVzc2VkKTsKLSAgICAgZ19hc3NlcnQgKGNsZWFy X3ZpcnR1YWxfc3RhdGUpOwotKyAgICBnX2Fzc2VydCAoaXNfaW52YWxpZF9rZXkpOwotIAotICAg ICBwcml2ID0gaWJ1c193YXlsYW5kX2ltX2dldF9pbnN0YW5jZV9wcml2YXRlICh3bGltKTsKLSAg ICAgbmV3X21vZHNfZGVwcmVzc2VkID0gKm1vZHNfZGVwcmVzc2VkOwotQEAgLTU5NywxMyArNjM1 LDE5IEBAIGlidXNfd2F5bGFuZF9pbV91cGRhdGVfdmlydHVhbF9kZXByZXNzZWQgKElCdXNXYXls YW5kSU0gICp3bGltLAotICAgICAgICAgaWYgKHN0YXRlID09IFdMX0tFWUJPQVJEX0tFWV9TVEFU RV9QUkVTU0VEKSB7Ci0gICAgICAgICAgICAgc3dpdGNoIChzeW0pIHsKLSAgICAgICAgICAgICBj YXNlIElCVVNfS0VZX0lTT19MZXZlbDNfTGF0Y2g6Ci0rICAgICAgICAgICAgICAgIHByaXYtPmlz b19sZXZlbDNfc3RhdGUgPSBJQlVTX0tFWV9JU09fTEVWRUxfU1RBVEVfTEFUQ0g7Ci0rICAgICAg ICAgICAgICAgIG5ld19tb2RzX2RlcHJlc3NlZCB8PSBhY3RpdmVfa2V5LT5tb2Q1X21hc2s7Ci0r ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgIGNhc2UgSUJVU19LRVlfSVNPX0xl dmVsM19TaGlmdDoKLS0gICAgICAgICAgICAgICAgcHJpdi0+aXNfcHJlc3NlZF9tb2Q1ID0gVFJV RTsKLSsgICAgICAgICAgICAgICAgcHJpdi0+aXNvX2xldmVsM19zdGF0ZSA9IElCVVNfS0VZX0lT T19MRVZFTF9TVEFURV9TSElGVDsKLSAgICAgICAgICAgICAgICAgbmV3X21vZHNfZGVwcmVzc2Vk IHw9IGFjdGl2ZV9rZXktPm1vZDVfbWFzazsKLSAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg ICAgICAgICAgY2FzZSBJQlVTX0tFWV9JU09fTGV2ZWw1X0xhdGNoOgotKyAgICAgICAgICAgICAg ICBwcml2LT5pc29fbGV2ZWw1X3N0YXRlID0gSUJVU19LRVlfSVNPX0xFVkVMX1NUQVRFX0xBVENI OwotKyAgICAgICAgICAgICAgICBuZXdfbW9kc19kZXByZXNzZWQgfD0gYWN0aXZlX2tleS0+bW9k M19tYXNrOwotKyAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICBjYXNlIElCVVNf S0VZX0lTT19MZXZlbDVfU2hpZnQ6Ci0tICAgICAgICAgICAgICAgIHByaXYtPmlzX3ByZXNzZWRf bW9kMyA9IFRSVUU7Ci0rICAgICAgICAgICAgICAgIHByaXYtPmlzb19sZXZlbDVfc3RhdGUgPSBJ QlVTX0tFWV9JU09fTEVWRUxfU1RBVEVfU0hJRlQ7Ci0gICAgICAgICAgICAgICAgIG5ld19tb2Rz X2RlcHJlc3NlZCB8PSBhY3RpdmVfa2V5LT5tb2QzX21hc2s7Ci0gICAgICAgICAgICAgICAgIGJy ZWFrOwotICAgICAgICAgICAgIGRlZmF1bHQ6Ci1AQCAtNjE0LDYxICs2NTgsNzAgQEAgaWJ1c193 YXlsYW5kX2ltX3VwZGF0ZV92aXJ0dWFsX2RlcHJlc3NlZCAoSUJ1c1dheWxhbmRJTSAgKndsaW0s Ci0gICAgICAgICAgICAgZmlsdGVyZWQgPSBUUlVFOwotICAgICAgICAgfSBlbHNlIHsKLSAgICAg ICAgICAgICBJQnVzS2V5SXNvTGV2ZWxWYWx1ZSBjdXJyZW50X2xldmVsID0gSUJVU19LRVlfSVNP X0xFVkVMX0lOVkFMSUQ7Ci0tICAgICAgICAgICAgZ2Jvb2xlYW4gKmlzX3ByZXNzZWRfY3VycmVu dF9tb2QgPSBOVUxMOwotLSAgICAgICAgICAgIGdib29sZWFuICppc19wcmVzc2VkX3JldmVyc2Vf bW9kID0gTlVMTDsKLS0gICAgICAgICAgICB4a2JfbW9kX21hc2tfdCBjdXJyZW50X21vZGVfbWFz ayA9IDA7Ci0tICAgICAgICAgICAgeGtiX21vZF9tYXNrX3QgcmV2ZXJzZV9tb2RlX21hc2sgPSAw OwotKyAgICAgICAgICAgIElCdXNLZXlJc29MZXZlbFN0YXRlICpjdXJyZW50X3N0YXRlID0gTlVM TDsKLSsgICAgICAgICAgICBJQnVzS2V5SXNvTGV2ZWxTdGF0ZSAqcmV2ZXJzZV9zdGF0ZSA9IE5V TEw7Ci0gICAgICAgICAgICAgc3dpdGNoIChzeW0pIHsKLSAgICAgICAgICAgICBjYXNlIElCVVNf S0VZX0lTT19MZXZlbDNfTGF0Y2g6Ci0gICAgICAgICAgICAgY2FzZSBJQlVTX0tFWV9JU09fTGV2 ZWwzX1NoaWZ0OgotICAgICAgICAgICAgICAgICBjdXJyZW50X2xldmVsID0gSUJVU19LRVlfSVNP X0xFVkVMXzM7Ci0tICAgICAgICAgICAgICAgIGlzX3ByZXNzZWRfY3VycmVudF9tb2QgPSAmcHJp di0+aXNfcHJlc3NlZF9tb2Q1OwotLSAgICAgICAgICAgICAgICBpc19wcmVzc2VkX3JldmVyc2Vf bW9kID0gJnByaXYtPmlzX3ByZXNzZWRfbW9kMzsKLS0gICAgICAgICAgICAgICAgY3VycmVudF9t b2RlX21hc2sgPSBhY3RpdmVfa2V5LT5tb2Q1X21hc2s7Ci0tICAgICAgICAgICAgICAgIHJldmVy c2VfbW9kZV9tYXNrID0gYWN0aXZlX2tleS0+bW9kM19tYXNrOwotKyAgICAgICAgICAgICAgICBj dXJyZW50X3N0YXRlID0gJnByaXYtPmlzb19sZXZlbDNfc3RhdGU7Ci0rICAgICAgICAgICAgICAg IHJldmVyc2Vfc3RhdGUgPSAmcHJpdi0+aXNvX2xldmVsNV9zdGF0ZTsKLSAgICAgICAgICAgICAg ICAgYnJlYWs7Ci0gICAgICAgICAgICAgY2FzZSBJQlVTX0tFWV9JU09fTGV2ZWw1X0xhdGNoOgot ICAgICAgICAgICAgIGNhc2UgSUJVU19LRVlfSVNPX0xldmVsNV9TaGlmdDoKLSAgICAgICAgICAg ICAgICAgY3VycmVudF9sZXZlbCA9IElCVVNfS0VZX0lTT19MRVZFTF81OwotLSAgICAgICAgICAg ICAgICBpc19wcmVzc2VkX2N1cnJlbnRfbW9kID0gJnByaXYtPmlzX3ByZXNzZWRfbW9kMzsKLS0g ICAgICAgICAgICAgICAgaXNfcHJlc3NlZF9yZXZlcnNlX21vZCA9ICZwcml2LT5pc19wcmVzc2Vk X21vZDU7Ci0tICAgICAgICAgICAgICAgIGN1cnJlbnRfbW9kZV9tYXNrID0gYWN0aXZlX2tleS0+ bW9kM19tYXNrOwotLSAgICAgICAgICAgICAgICByZXZlcnNlX21vZGVfbWFzayA9IGFjdGl2ZV9r ZXktPm1vZDVfbWFzazsKLSsgICAgICAgICAgICAgICAgY3VycmVudF9zdGF0ZSA9ICZwcml2LT5p c29fbGV2ZWw1X3N0YXRlOwotKyAgICAgICAgICAgICAgICByZXZlcnNlX3N0YXRlID0gJnByaXYt Pmlzb19sZXZlbDNfc3RhdGU7Ci0gICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg IGRlZmF1bHQ6OwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBnX2Fzc2VydCAoY3VycmVu dF9sZXZlbCAhPSBJQlVTX0tFWV9JU09fTEVWRUxfSU5WQUxJRCk7Ci0tICAgICAgICAgICAgZ19h c3NlcnQgKGlzX3ByZXNzZWRfY3VycmVudF9tb2QgJiYgaXNfcHJlc3NlZF9yZXZlcnNlX21vZCk7 Ci0tICAgICAgICAgICAgaWYgKEdfTElLRUxZICgqaXNfcHJlc3NlZF9jdXJyZW50X21vZCkpIHsK LS0gICAgICAgICAgICAgICAgKmlzX3ByZXNzZWRfY3VycmVudF9tb2QgPSBGQUxTRTsKLS0gICAg ICAgICAgICB9IGVsc2UgaWYgKCppc19wcmVzc2VkX3JldmVyc2VfbW9kICYmCi0tICAgICAgICAg ICAgICAgICAgICAgICAobmV3X21vZHNfZGVwcmVzc2VkICYgYWN0aXZlX2tleS0+bW9kM19tYXNr KSkgewotKyAgICAgICAgICAgIGdfYXNzZXJ0IChjdXJyZW50X3N0YXRlICYmIHJldmVyc2Vfc3Rh dGUpOwotKyAgICAgICAgICAgIC8qIFRoZSAibHYodGlsZGUpIiBrZXltYXAgZ2l2ZXMgdGhlICJM ZXZlbDNfU2hpZnQiIGtleXN5bQotKyAgICAgICAgICAgICAqIHdpdGggdGhlIGtleSA8UkFMVD4u Ci0rICAgICAgICAgICAgICoKLSsgICAgICAgICAgICAgKiBIYW5kbGUgdGhlICJJU09fTGV2ZWw1 X0xhdGNoIiBrZXlzeW0gaW4gdGhlICJmcihlcmdvbCkiIGtleW1hcC4KLSsgICAgICAgICAgICAg KiBEbyBub3QgdXNlIGtleXN5bSBidXQgYGN1cnJlbnRfc3RhdGVgIGJlY2F1c2UgdGhlIGxhdGNo IHN0YXRlCi0rICAgICAgICAgICAgICogY2FuIGJlIGNoYW5nZWQgdG8gdGhlIHNoaWZ0IHN0YXRl IHdpdGggc29tZSBrZXkgY29uZGl0aW9ucy4KLSsgICAgICAgICAgICAgKi8KLSsgICAgICAgICAg ICBpZiAoKmN1cnJlbnRfc3RhdGUgPT0gSUJVU19LRVlfSVNPX0xFVkVMX1NUQVRFX1NISUZUKSB7 Ci0rICAgICAgICAgICAgICAgICpjdXJyZW50X3N0YXRlID0gSUJVU19LRVlfSVNPX0xFVkVMX1NU QVRFX1JFTEVBU0U7Ci0rICAgICAgICAgICAgICAgIGlmIChjdXJyZW50X2xldmVsID09IElCVVNf S0VZX0lTT19MRVZFTF8zKQotKyAgICAgICAgICAgICAgICAgICAgbmV3X21vZHNfZGVwcmVzc2Vk ICY9IH5hY3RpdmVfa2V5LT5tb2Q1X21hc2s7Ci0rICAgICAgICAgICAgICAgIGVsc2UgaWYgKGN1 cnJlbnRfbGV2ZWwgPT0gSUJVU19LRVlfSVNPX0xFVkVMXzUpCi0rICAgICAgICAgICAgICAgICAg ICBuZXdfbW9kc19kZXByZXNzZWQgJj0gfmFjdGl2ZV9rZXktPm1vZDNfbWFzazsKLSsgICAgICAg ICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQg KCk7Ci0rICAgICAgICAgICAgICAgIGlmIChzeW0gIT0gc3lzdGVtX3N5bSkKLSsgICAgICAgICAg ICAgICAgICAgICpjbGVhcl92aXJ0dWFsX3N0YXRlID0gVFJVRTsKLSsgICAgICAgICAgICB9IGVs c2UgaWYgKCEqY3VycmVudF9zdGF0ZSAmJiAqcmV2ZXJzZV9zdGF0ZSAmJgotKyAgICAgICAgICAg ICAgICAgICAgICAgKCgoY3VycmVudF9sZXZlbCA9PSBJQlVTX0tFWV9JU09fTEVWRUxfMykgJiYK LSsgICAgICAgICAgICAgICAgICAgICAgICAgKG5ld19tb2RzX2RlcHJlc3NlZCAmIGFjdGl2ZV9r ZXktPm1vZDNfbWFzaykpIHx8Ci0rICAgICAgICAgICAgICAgICAgICAgICAgKChjdXJyZW50X2xl dmVsID09IElCVVNfS0VZX0lTT19MRVZFTF81KSAmJgotKyAgICAgICAgICAgICAgICAgICAgICAg ICAobmV3X21vZHNfZGVwcmVzc2VkICYgYWN0aXZlX2tleS0+bW9kNV9tYXNrKSkKLSsgICAgICAg ICAgICAgICAgICAgICAgICkpIHsKLSAgICAgICAgICAgICAgICAgLyogVGhlIHVubGlrZWx5IGNh c2UgIXByaXYtPmlzX3ByZXNzZWRfbW9kMyBhbmQKLSAgICAgICAgICAgICAgICAgICogcHJpdi0+ aXNfcHJlc3NlZF9tb2Q1IG1lYW5zIHRoYXQgImRlKFQzKSIga2V5bWFwIGdpdmVzCi0gICAgICAg ICAgICAgICAgICAqIHRoZSBwcmVzc2VkICJMZXZlbDNfU2hpZnQiIGtleXN5bSBhbmQKLSAgICAg ICAgICAgICAgICAgICogdGhlIHJlbGVhc2VkICJMZXZlbDVfTGF0Y2giIGtleXN5bSBmb3IgdGhl IGtleSA8UkFMVD4uCi0tICAgICAgICAgICAgICAgICAqIE1heWJlIGEgYnVnIGluICJkZShUMyki IHNvIG5lZWQgdG8gY2xlYXIgdGhlIE1PRDUgc3RhdGUKLS0gICAgICAgICAgICAgICAgICogYnkg dGhlIHByZXNzZWQgIkxldmVsM19TaGlmdCIga2V5c3ltLgotKyAgICAgICAgICAgICAgICAgKiBU aGlzIGNhc2UgY2FuIGhhcHBlbiBpZiB0aGUgbm9ybWFsIGtleXN5bSBhbmQgc2hpZnQga2V5c3lt Ci0rICAgICAgICAgICAgICAgICAqIGFyZSBkaWZmZXJlbnQuCi0gICAgICAgICAgICAgICAgICAq LwotLSAgICAgICAgICAgICAgICAqaXNfcHJlc3NlZF9yZXZlcnNlX21vZCA9IEZBTFNFOwotLSAg ICAgICAgICAgICAgICBuZXdfbW9kc19kZXByZXNzZWQgJj0gfnJldmVyc2VfbW9kZV9tYXNrOwot KyAgICAgICAgICAgICAgICAqcmV2ZXJzZV9zdGF0ZSA9IElCVVNfS0VZX0lTT19MRVZFTF9TVEFU RV9SRUxFQVNFOwotKyAgICAgICAgICAgICAgICAqaXNfaW52YWxpZF9rZXkgPSBUUlVFOwotKyAg ICAgICAgICAgICAgICBpZiAoY3VycmVudF9sZXZlbCA9PSBJQlVTX0tFWV9JU09fTEVWRUxfMykK LSsgICAgICAgICAgICAgICAgICAgIG5ld19tb2RzX2RlcHJlc3NlZCAmPSB+YWN0aXZlX2tleS0+ bW9kM19tYXNrOwotKyAgICAgICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50X2xldmVsID09IElC VVNfS0VZX0lTT19MRVZFTF81KQotKyAgICAgICAgICAgICAgICAgICAgbmV3X21vZHNfZGVwcmVz c2VkICY9IH5hY3RpdmVfa2V5LT5tb2Q1X21hc2s7Ci0rICAgICAgICAgICAgICAgIGVsc2UKLSsg ICAgICAgICAgICAgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOwotICAgICAgICAgICAg ICAgICAqY2xlYXJfdmlydHVhbF9zdGF0ZSA9IFRSVUU7Ci0gICAgICAgICAgICAgICAgIGdfZGVi dWcgKCJHb3QgYSB3cm9uZyByZWxlYXNlZCAlcyBrZXkgd2l0aG91dCB0aGUgIgotLSAgICAgICAg ICAgICAgICAgICAgICAgICAicHJlc3NlZCBvbmUuIE1heWJlIGEgYnVnIGluIFhLQi4iLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAicHJlc3NlZCBvbmUuIE1heWJlIHRoZSBuZXh0IFNoaWZ0 IHN0YXRlIHdpbGwgIgotKyAgICAgICAgICAgICAgICAgICAgICAgICAicHJvZHVjZSB0aGUgZGVs YXllZCBwcmVzc2VkIG9uZS4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2xl dmVsID09IElCVVNfS0VZX0lTT19MRVZFTF8zID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiTGV2ZWwzIiA6ICJMZXZlbDUiKTsKLSAgICAgICAgICAgICB9Ci0tICAgICAgICAg ICAgLyogVGhlICJsdih0aWxkZSkiIGtleW1hcCBnaXZlcyB0aGUgIkxldmVsM19TaGlmdCIga2V5 c3ltCi0tICAgICAgICAgICAgICogd2l0aCB0aGUga2V5IDxSQUxUPi4KLS0gICAgICAgICAgICAg Ki8KLS0gICAgICAgICAgICBpZiAoKGN1cnJlbnRfbGV2ZWwgPT0gSUJVU19LRVlfSVNPX0xFVkVM XzMgJiYKLS0gICAgICAgICAgICAgICAgIHN5bSA9PSBJQlVTX0tFWV9JU09fTGV2ZWwzX1NoaWZ0 KSB8fAotLSAgICAgICAgICAgICAgICAoY3VycmVudF9sZXZlbCA9PSBJQlVTX0tFWV9JU09fTEVW RUxfNSAmJgotLSAgICAgICAgICAgICAgICAgc3ltID09IElCVVNfS0VZX0lTT19MZXZlbDVfU2hp ZnQpKSB7Ci0tICAgICAgICAgICAgICAgIG5ld19tb2RzX2RlcHJlc3NlZCAmPSB+Y3VycmVudF9t b2RlX21hc2s7Ci0tICAgICAgICAgICAgICAgIGlmIChzeW0gIT0gc3lzdGVtX3N5bSkKLS0gICAg ICAgICAgICAgICAgICAgIGNsZWFyX3ZpcnR1YWxfc3RhdGUgPSBUUlVFOwotLSAgICAgICAgICAg IH0KLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIElCVVNfS0VZX1NoaWZ0 X0w6Ci1AQCAtNzA3LDcgKzc2MCw4IEBAIGlidXNfd2F5bGFuZF9pbV91cGRhdGVfdmlydHVhbF94 a2Jfc3RhdGUgKElCdXNXYXlsYW5kSU0gKndsaW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgSUJ1c1hrYktleW1hcCAqYWN0aXZlX2tleSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4a2JfbW9kX21hc2tfdCBtb2RzX2RlcHJl c3NlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4a2JfbW9k X21hc2tfdCBuZXdfbW9kc19kZXByZXNzZWQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgY2xlYXJfdmlydHVhbF9zdGF0ZSkKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICBjbGVh cl92aXJ0dWFsX3N0YXRlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGdib29sZWFuICAgICAgIGlzX2ludmFsaWRfa2V5KQotIHsKLSAgICAgSUJ1c1dheWxhbmRJ TVByaXZhdGUgKnByaXY7Ci0gICAgIHVpbnQzMl90IGNvZGUgPSBrZXkgKyA4OwotQEAgLTczOCw4 ICs3OTIsOSBAQCBpYnVzX3dheWxhbmRfaW1fdXBkYXRlX3ZpcnR1YWxfeGtiX3N0YXRlIChJQnVz V2F5bGFuZElNICp3bGltLAotICAgICAgICAgaWYgKGNsZWFyX3ZpcnR1YWxfc3RhdGUpCi0gICAg ICAgICAgICAgcHJpdi0+aXNfdmlydHVhbF9sYXRjaF9zdGF0ZSA9IEZBTFNFOwotICAgICB9Ci0t ICAgIGlmICghcHJpdi0+aXNfdmlydHVhbF9sYXRjaF9zdGF0ZSB8fAotLSAgICAgICAgKHN0YXRl ICE9IFdMX0tFWUJPQVJEX0tFWV9TVEFURV9SRUxFQVNFRCkpIHsKLSsgICAgaWYgKEdfTElLRUxZ ICghaXNfaW52YWxpZF9rZXkpICYmCi0rICAgICAgICAoIXByaXYtPmlzX3ZpcnR1YWxfbGF0Y2hf c3RhdGUgfHwKLSsgICAgICAgICAoc3RhdGUgIT0gV0xfS0VZQk9BUkRfS0VZX1NUQVRFX1JFTEVB U0VEKSkpIHsKLSAgICAgICAgIHhrYl9zdGF0ZV91cGRhdGVfa2V5IChhY3RpdmVfa2V5LT5zdGF0 ZSwgY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RhdGUgPT0gV0xfS0VZ Qk9BUkRfS0VZX1NUQVRFX1JFTEVBU0VEKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ID8gWEtCX0tFWV9VUCA6IFhLQl9LRVlfRE9XTik7Ci1AQCAtNzU0LDcgKzgwOSw4IEBAIGlidXNf d2F5bGFuZF9pbV91cGRhdGVfdmlydHVhbF94a2Jfc3RhdGUgKElCdXNXYXlsYW5kSU0gKndsaW0s Ci0gICAgICAgICAvKiAiZGUoVDMpIiBrZXltYXAgZ2l2ZXMgdGhlIHByZXNzZWQgIkxldmVsM19T aGlmdCIga2V5c3ltIGFuZAotICAgICAgICAgICogc2V0cyBib3RoIE1PRDMoTGV2ZWw1KSBhbmQg TU9ENShMZXZlbDMpIHN0YXRlcyBhZnRlcgotICAgICAgICAgICogeGtiX3N0YXRlX3VwZGF0ZV9r ZXkoKSBpcyBjYWxsZWQgd2l0aCB0aGUga2V5cHJlc3MuCi0tICAgICAgICAgKiBNYXliZSBhIGJ1 ZyBpbiAiZGUoVDMpIiBhbmQgc2V0cyBNT0Q1KExldmVsMykgYWdhaW4gaGVyZS4KLSsgICAgICAg ICAqIEZJWE1FOiBTaG91bGQgc2V0IGBpc19pbnZhbGlkX2tleWAgaW4gdGhpcyBjYXNlIG9mIHRo ZSAiZGUoVDMpIgotKyAgICAgICAgICoga2V5bWFwIHRvbyBub3QgdG8gY2FsbCB4a2Jfc3RhdGVf dXBkYXRlX2tleSgpIGhlcmU/Ci0gICAgICAgICAgKi8KLSAgICAgICAgIGlmIChHX1VOTElLRUxZ IChuZXdfbW9kc19kZXByZXNzZWQgIT0gbmV3Ml9tb2RzX2RlcHJlc3NlZCkpIHsKLSAgICAgICAg ICAgICB4a2Jfc3RhdGVfdXBkYXRlX21hc2sgKGFjdGl2ZV9rZXktPnN0YXRlLCBuZXdfbW9kc19k ZXByZXNzZWQsCi1AQCAtMTYyMyw2ICsxNjc5LDcgQEAgaWJ1c193YXlsYW5kX2ltX3Bvc3Rfa2V5 IChJQnVzV2F5bGFuZElNICp3bGltLAotICAgICBJQnVzWGtiS2V5bWFwICphY3RpdmVfa2V5Owot ICAgICB4a2JfbW9kX21hc2tfdCBtb2RzX2RlcHJlc3NlZCwgbmV3X21vZHNfZGVwcmVzc2VkOwot ICAgICBnYm9vbGVhbiBjbGVhcl92aXJ0dWFsX3N0YXRlID0gRkFMU0U7Ci0rICAgIGdib29sZWFu IGlzX2ludmFsaWRfa2V5ID0gRkFMU0U7Ci0gCi0gICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJ QlVTX0lTX1dBWUxBTkRfSU0gKHdsaW0pLCBGQUxTRSk7Ci0gICAgIHByaXYgPSBpYnVzX3dheWxh bmRfaW1fZ2V0X2luc3RhbmNlX3ByaXZhdGUgKHdsaW0pOwotQEAgLTE2NTgsNyArMTcxNSw4IEBA IGlidXNfd2F5bGFuZF9pbV9wb3N0X2tleSAoSUJ1c1dheWxhbmRJTSAqd2xpbSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVf a2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGZpbHRlcmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZuZXdfbW9kc19kZXByZXNzZWQsCi0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNsZWFyX3ZpcnR1YWxf c3RhdGUpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZjbGVhcl92aXJ0dWFsX3N0YXRlLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpc19pbnZhbGlkX2tleSk7Ci0gICAg IGZpbHRlcmVkID0gaWJ1c193YXlsYW5kX2ltX2NvbW1pdF9rZXlfZXZlbnQgKHdsaW0sCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzLAot QEAgLTE2NjcsMTQgKzE3MjUsMTYgQEAgaWJ1c193YXlsYW5kX2ltX3Bvc3Rfa2V5IChJQnVzV2F5 bGFuZElNICp3bGltLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBhY3RpdmVfa2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBmaWx0ZXJlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJm5ld19tb2RzX2RlcHJlc3NlZCwKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNsZWFyX3ZpcnR1YWxfc3RhdGUpOwot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2xlYXJf dmlydHVhbF9zdGF0ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJmlzX2ludmFsaWRfa2V5KTsKLSAgICAgaWJ1c193YXlsYW5kX2ltX3VwZGF0ZV92 aXJ0dWFsX3hrYl9zdGF0ZSAod2xpbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAga2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYWN0aXZlX2tleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbW9kc19kZXByZXNzZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG5ld19tb2RzX2RlcHJlc3NlZCwKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJfdmlydHVhbF9zdGF0ZSk7Ci0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyX3ZpcnR1YWxf c3RhdGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlz X2ludmFsaWRfa2V5KTsKLSAgICAgcmV0dXJuIGZpbHRlcmVkOwotIH0KLSAKLUBAIC0yMDUzLDYg KzIxMTMsMjEgQEAga2V5X2V2ZW50X2NoZWNrX3JlcGVhdCAoSUJ1c1dheWxhbmRJTSAgICAgICAq d2xpbSwKLSAgICAgICAgIGdfY2xlYXJfcG9pbnRlciAoJnJlcGVhdGluZ19ldmVudC5pYnVzX29i amVjdF9wYXRoLCBnX2ZyZWUpOwotICAgICAgICAgaWYgKCFwcml2LT5pYnVzY29udGV4dCkKLSAg ICAgICAgICAgICByZXR1cm4gRkFMU0U7Ci0rICAgICAgICBpZiAoSVNfREVBRF9LRVkgKGV2ZW50 LT5zeW0pKSB7Ci0rICAgICAgICAgICAgLyogV2l0aCAiZnIoZXJnb2wpIiBrZXltYXAsIGluIGNh c2UgdGhhdCBrZXkgPEFEMDk+IGlzIHR5cGVkCi0rICAgICAgICAgICAgICogdHdpY2UsIHRoZSBz ZWNvbmQgcHJlc3NlZCBrZXlzeW0gaXMgImRlYWRfZGlhZXJlc2lzIiBhbmQKLSsgICAgICAgICAg ICAgKiB0aGUgc2Vjb25kIHJlbGVhc2VkIGtleXN5bSBpcyAiSVNPX0xldmVsNV9MYXRjaCIuCi0r ICAgICAgICAgICAgICogVGhlIGtleXN5bSAiZGVhZF9kaWFlcmVzaXMiIHNob3VsZCBub3QgYmUg YXV0by1yZXBlYXRlZAotKyAgICAgICAgICAgICAqIGluIHRoaXMgY2FzZS4KLSsgICAgICAgICAg ICAgKi8KLSsgICAgICAgICAgICBpZiAocHJpdi0+cmVsZWFzZWRfZGVhZF9rZXlfd29fcHJlc3Mg PT0gZXZlbnQtPnN5bSkgewotKyAgICAgICAgICAgICAgICBwcml2LT5yZWxlYXNlZF9kZWFkX2tl eV93b19wcmVzcyA9IDA7Ci0rICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOwotKyAgICAgICAg ICAgIH0KLSsgICAgICAgICAgICBwcml2LT5wcmVzc2VkX2RlYWRfa2V5ID0gZXZlbnQtPnN5bTsK LSsgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgcHJpdi0+cmVsZWFzZWRfZGVhZF9rZXlf d29fcHJlc3MgPSAwOwotKyAgICAgICAgfQotICAgICAgICAgc291cmNlID0gZ190aW1lb3V0X3Nv dXJjZV9uZXcgKHByaXYtPnJlcGVhdF9kZWxheSk7Ci0gICAgICAgICBnX3NvdXJjZV9hdHRhY2gg KHNvdXJjZSwgTlVMTCk7Ci0gICAgICAgICBnX3NvdXJjZV91bnJlZiAoc291cmNlKTsKLUBAIC0y MDY2LDYgKzIxNDEsMzAgQEAga2V5X2V2ZW50X2NoZWNrX3JlcGVhdCAoSUJ1c1dheWxhbmRJTSAg ICAgICAqd2xpbSwKLSAgICAgICAgIGdfc291cmNlX3NldF9jYWxsYmFjayAoc291cmNlLCBfcHJv Y2Vzc19rZXlfZXZlbnRfcmVwZWF0X2RlbGF5X2NiLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmcmVwZWF0aW5nX2V2ZW50LCBOVUxMKTsKLSAgICAgfSBlbHNlIHsKLSsgICAgICAg IGlmIChldmVudC0+c3ltICE9IHJlcGVhdGluZ19ldmVudC5zeW0pIHsKLSsgICAgICAgICAgICBp ZiAoSVNfREVBRF9LRVkgKGV2ZW50LT5zeW0pKSB7Ci0rICAgICAgICAgICAgICAgIGlmIChldmVu dC0+c3ltID09IHByaXYtPnByZXNzZWRfZGVhZF9rZXkpIHsKLSsgICAgICAgICAgICAgICAgICAg IHByaXYtPnByZXNzZWRfZGVhZF9rZXkgPSAwOwotKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYg KCFwcml2LT5wcmVzc2VkX2RlYWRfa2V5KSB7Ci0rICAgICAgICAgICAgICAgICAgICAvKiBXaXRo ICJmcihlcmdvbCkiIGtleW1hcCwgaW4gY2FzZSB0aGF0IGtleSA8QUQwOT4gaXMKLSsgICAgICAg ICAgICAgICAgICAgICAqIHR5cGVkIHR3aWNlLCB0aGUgZmlyc3QgcHJlc3NlZCBrZXlzeW0gaXMK LSsgICAgICAgICAgICAgICAgICAgICAqICJJU09fTGV2ZWw1X0xhdGNoIiBhbmQgdGhlIGZpcnN0 IHJlbGVhc2VkIGtleXN5bSBpcwotKyAgICAgICAgICAgICAgICAgICAgICogImRlYWRfZGlhZXJl c2lzIiB3aXRoIHRoZSBNT0QzKHRoZSBsZXZlbDUpIG1hc2ssCi0rICAgICAgICAgICAgICAgICAg ICAgKiB0aGUgc2Vjb25kIHByZXNzZWQga2V5c3ltIGlzICJkZWFkX2RpYWVyZXNpcyIgYW5kCi0r ICAgICAgICAgICAgICAgICAgICAgKiB0aGUgc2Vjb25kIHJlbGVhc2VkIGtleXN5bSBpcyAiSVNP X0xldmVsNV9MYXRjaCIuCi0rICAgICAgICAgICAgICAgICAgICAgKiBTbyB0aGUgZmlyc3QgcmVs ZWFzZWQgImRlYWRfZGlhZXJlc2lzIiBpcyBpbnZhbGlkIGFuZAotKyAgICAgICAgICAgICAgICAg ICAgICogdGhlIHNlY29uZCBwcmVzc2VkICJkZWFkX2RpYWVyZXNpcyIgc2hvdWxkIGJlIHJlbGVh c2VkCi0rICAgICAgICAgICAgICAgICAgICAgKiBpbW1lZGlhdGVseS4KLSsgICAgICAgICAgICAg ICAgICAgICAqLwotKyAgICAgICAgICAgICAgICAgICAgcHJpdi0+cmVsZWFzZWRfZGVhZF9rZXlf d29fcHJlc3MgPSBldmVudC0+c3ltOwotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAg fQotKyAgICAgICAgfSBlbHNlIGlmIChJU19ERUFEX0tFWSAocmVwZWF0aW5nX2V2ZW50LnN5bSkp IHsKLSsgICAgICAgICAgICBpZiAocmVwZWF0aW5nX2V2ZW50LnN5bSA9PSBwcml2LT5wcmVzc2Vk X2RlYWRfa2V5KQotKyAgICAgICAgICAgICAgICBwcml2LT5wcmVzc2VkX2RlYWRfa2V5ID0gMDsK LSsgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgcHJpdi0+cmVsZWFzZWRfZGVhZF9rZXlf d29fcHJlc3MgPSAwOwotKyAgICAgICAgfQotICAgICAgICAgaWYgKHJlcGVhdGluZ19ldmVudC5y ZXBlYXRfcmF0ZV9pZCkgewotICAgICAgICAgICAgIGdfc291cmNlX3JlbW92ZSAocmVwZWF0aW5n X2V2ZW50LnJlcGVhdF9yYXRlX2lkKTsKLSAgICAgICAgICAgICByZXBlYXRpbmdfZXZlbnQucmVw ZWF0X3JhdGVfaWQgPSAwOwotLS0gCi0yLjU0LjAKLQotRnJvbSBiNjBiNTQwNDQ0MDZmZjUwOGZk MDI1ZGUzMmMxMGQ3ODgyOWZmMmEzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZnVq aXdhcmF0IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotRGF0ZTogU3VuLCAxOSBKdWwgMjAy NiAxODoxNTo0MiArMDkwMAotU3ViamVjdDogW1BBVENIIDUvNV0gY2xpZW50L3dheWxhbmQ6IEZp eCBDYXBzTG9jayBiZXR3ZWVuIGZvY3VzIGNoYW5nZXMKLQotaWJ1c193YXlsYW5kX2ltX3Jlc2V0 X21vZGlmaWVycygpIHNob3VsZCBub3QgcmVzZXQgdGhlIHN0YXRlIG9mIENhcHNMb2NrCi1hbmQg aWJ1c193YXlsYW5kX2ltX3VwZGF0ZV92aXJ0dWFsX2RlcHJlc3NlZCgpIHNob3VsZCBjb21wYXJl Ci1gcHJpdi0+bW9kaWZpZXJzYCBhbmQgYChtb2RzX2RlcHJlc3NlZCAmIG1vZHNfbG9ja2VkKWAu Ci0KLUZpeGVzOiAjMjg2OQotLS0tCi0gY2xpZW50L3dheWxhbmQvaWJ1c3dheWxhbmRpbS5jIHwg MzMgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDI0 IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jbGllbnQvd2F5 bGFuZC9pYnVzd2F5bGFuZGltLmMgYi9jbGllbnQvd2F5bGFuZC9pYnVzd2F5bGFuZGltLmMKLWlu ZGV4IGVmZWI2NzgzLi44YjFlN2I1MyAxMDA2NDQKLS0tLSBhL2NsaWVudC93YXlsYW5kL2lidXN3 YXlsYW5kaW0uYwotKysrIGIvY2xpZW50L3dheWxhbmQvaWJ1c3dheWxhbmRpbS5jCi1AQCAtMzYy LDYgKzM2Miw3IEBAIHN0YXRpYyB2b2lkCi0gaWJ1c193YXlsYW5kX2ltX3Jlc2V0X21vZGlmaWVy cyAoSUJ1c1dheWxhbmRJTSAqd2xpbSkKLSB7Ci0gICAgIElCdXNXYXlsYW5kSU1Qcml2YXRlICpw cml2OwotKyAgICB4a2JfbW9kX21hc2tfdCBtb2RzX2xvY2tlZCA9IDA7Ci0gICAgIHhrYl9sYXlv dXRfaW5kZXhfdCAgZ3JvdXAgPSAwOwotIAotICAgICBnX2Fzc2VydCAoSUJVU19JU19XQVlMQU5E X0lNICh3bGltKSk7Ci1AQCAtMzczLDExICszNzQsMTUgQEAgaWJ1c193YXlsYW5kX2ltX3Jlc2V0 X21vZGlmaWVycyAoSUJ1c1dheWxhbmRJTSAqd2xpbSkKLSAgICAgcHJpdi0+cHJlc3NlZF9kZWFk X2tleSA9IDA7Ci0gICAgIHByaXYtPnJlbGVhc2VkX2RlYWRfa2V5X3dvX3ByZXNzID0gMDsKLSAg ICAgaWYgKHByaXYtPmtleV91c2VyLnN0YXRlICYmIHByaXYtPmtleV9zeXMuc3RhdGUpIHsKLSsg ICAgICAgIG1vZHNfbG9ja2VkID0geGtiX3N0YXRlX3NlcmlhbGl6ZV9tb2RzIChwcml2LT5rZXlf c3lzLnN0YXRlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFhLQl9TVEFURV9MT0NLRUQpOwotICAgICAgICAgZ3JvdXAgPSB4a2Jfc3RhdGVfc2VyaWFs aXplX2xheW91dCAocHJpdi0+a2V5X3N5cy5zdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFhLQl9TVEFURV9MQVlPVVRfTE9DS0VEKTsKLS0gICAgICAg IGlucHV0X21ldGhvZF9rZXlib2FyZF9tb2RpZmllcnMgKHdsaW0sIE5VTEwsIDAsIDAsIDAsIDAs IGdyb3VwKTsKLSsgICAgICAgIGlucHV0X21ldGhvZF9rZXlib2FyZF9tb2RpZmllcnMgKHdsaW0s IE5VTEwsIDAsIDAsIDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBtb2RzX2xvY2tlZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGdyb3VwKTsKLSAgICAgfSBlbHNlIHsKLS0gICAgICAgIHByaXYtPm1vZGlmaWVycyA9IDA7Ci0r ICAgICAgICBwcml2LT5tb2RpZmllcnMgJj0gSUJVU19MT0NLX01BU0s7Ci0gICAgIH0KLSB9Ci0g Ci1AQCAtNjAwLDYgKzYwNSw3IEBAIGlidXNfd2F5bGFuZF9pbV91cGRhdGVfdmlydHVhbF9kZXBy ZXNzZWQgKElCdXNXYXlsYW5kSU0gICp3bGltLAotICAgICBJQnVzV2F5bGFuZElNUHJpdmF0ZSAq cHJpdjsKLSAgICAgdWludDMyX3QgY29kZSA9IGtleSArIDg7Ci0gICAgIHhrYl9tb2RfbWFza190 IG5ld19tb2RzX2RlcHJlc3NlZDsKLSsgICAgeGtiX21vZF9tYXNrX3QgbW9kc19sb2NrZWQ7Ci0g ICAgIHhrYl9rZXlzeW1fdCBzeXN0ZW1fc3ltID0gc3ltOwotIAotICAgICBpZiAoZmlsdGVyZWQp Ci1AQCAtNjEzLDEwICs2MTksMTMgQEAgaWJ1c193YXlsYW5kX2ltX3VwZGF0ZV92aXJ0dWFsX2Rl cHJlc3NlZCAoSUJ1c1dheWxhbmRJTSAgKndsaW0sCi0gCi0gICAgIHByaXYgPSBpYnVzX3dheWxh bmRfaW1fZ2V0X2luc3RhbmNlX3ByaXZhdGUgKHdsaW0pOwotICAgICBuZXdfbW9kc19kZXByZXNz ZWQgPSAqbW9kc19kZXByZXNzZWQ7Ci0rICAgIG1vZHNfbG9ja2VkID0geGtiX3N0YXRlX3Nlcmlh bGl6ZV9tb2RzIChhY3RpdmVfa2V5LT5zdGF0ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFhLQl9TVEFURV9MT0NLRUQpOwotIAotLSAgICBpZiAoKG1vZGlm aWVycyAmIH5JQlVTX1JFTEVBU0VfTUFTSyApICE9IG5ld19tb2RzX2RlcHJlc3NlZCkgewotKyAg ICBpZiAoKG1vZGlmaWVycyAmIH5JQlVTX1JFTEVBU0VfTUFTSyApICE9Ci0rICAgICAgICAobmV3 X21vZHNfZGVwcmVzc2VkIHwgbW9kc19sb2NrZWQpKSB7Ci0gICAgICAgICBnX3dhcm5pbmcgKCJJ QnVzIG1vZGlmaWVycyAlWCBpcyBkaWZmZXJlbnQgZnJvbSBYS0IgZGVwcmVzc2VkICVYIiwKLS0g ICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzLCBuZXdfbW9kc19kZXByZXNzZWQpOwotKyAgICAg ICAgICAgICAgICAgICBtb2RpZmllcnMsIG5ld19tb2RzX2RlcHJlc3NlZCB8IG1vZHNfbG9ja2Vk KTsKLSAgICAgfQotICAgICBpZiAocHJpdi0+a2V5X3N5cy5zdGF0ZSkKLSAgICAgICAgIHN5c3Rl bV9zeW0gPSB4a2Jfc3RhdGVfa2V5X2dldF9vbmVfc3ltIChwcml2LT5rZXlfc3lzLnN0YXRlLCBj b2RlKTsKLUBAIC03NzIsNyArNzgxLDcgQEAgaWJ1c193YXlsYW5kX2ltX3VwZGF0ZV92aXJ0dWFs X3hrYl9zdGF0ZSAoSUJ1c1dheWxhbmRJTSAqd2xpbSwKLSAKLSAgICAgcHJpdiA9IGlidXNfd2F5 bGFuZF9pbV9nZXRfaW5zdGFuY2VfcHJpdmF0ZSAod2xpbSk7Ci0gICAgIG1vZHNfbG9ja2VkID0g eGtiX3N0YXRlX3NlcmlhbGl6ZV9tb2RzIChhY3RpdmVfa2V5LT5zdGF0ZSwKLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhLQl9TVEFURV9NT0RTX0xPQ0tFRCk7 Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYS0JfU1RBVEVf TE9DS0VEKTsKLSAgICAgLyogWEtCIGdyb3VwIGxheW91dCBpcyBjb25maWd1cmVkIGluIHRoZSBz eXN0ZW0ga2V5bWFwIGJ1dCBub3QgdGhlCi0gICAgICAqIHVzZXIga2V5bWFwIHdoaWNoIGFsd2F5 cyBpbmNsdWRlcyBhIHNpbmdsZSBsYXlvdXQuCi0gICAgICAqLwotQEAgLTIyMjAsOSArMjIyOSwx NSBAQCBpbnB1dF9tZXRob2Rfa2V5Ym9hcmRfa2V5ICh2b2lkICAgICAgICAgICAgICAgICAgICAg ICpkYXRhLAotICAgICAvKiB4a2Jfa2V5X2dldF9zeW1zKCkgZG9lcyBub3QgcmV0dXJuIHRoZSBj YXBpdGFsIHN5bXMgd2l0aCBTaGlmdCBrZXkuICovCi0gICAgIGlmIChwcml2LT5rZXlfc3lzLnN0 YXRlKQotICAgICAgICAgZXZlbnQuc3ltID0geGtiX3N0YXRlX2tleV9nZXRfb25lX3N5bSAocHJp di0+a2V5X3N5cy5zdGF0ZSwgY29kZSk7Ci0rICAgIC8qIFRoZSBwb3NpdGlvbiBvZiBDYXBzX0xv Y2ssIENvbnRyb2wsIElTT19OZXh0X0dyb3VwLCBNdWx0aV9rZXkga2V5c3ltcwotKyAgICAgKiBj YW4gYmUgY3VzdG9temllZCBieSBlYWNoIGRlc2t0b3AgY29uZmlndXJhdGlvbi4KLSsgICAgICov Ci0gICAgIHN3aXRjaCAoZXZlbnQuc3ltKSB7Ci0tICAgIGNhc2UgSUJVU19LRVlfTXVsdGlfa2V5 OgotKyAgICBjYXNlIElCVVNfS0VZX0NhcHNfTG9jazoKLSsgICAgY2FzZSBJQlVTX0tFWV9Db250 cm9sX0w6Ci0rICAgIGNhc2UgSUJVU19LRVlfQ29udHJvbF9SOgotICAgICBjYXNlIElCVVNfS0VZ X0lTT19OZXh0X0dyb3VwOgotKyAgICBjYXNlIElCVVNfS0VZX011bHRpX2tleToKLSAgICAgICAg IGJyZWFrOwotICAgICBkZWZhdWx0OgotICAgICAgICAgaWYgKHByaXYtPmtleV91c2VyLnN0YXRl KQotQEAgLTIzMzcsMTEgKzIzNTIsMTEgQEAgaW5wdXRfbWV0aG9kX2tleWJvYXJkX21vZGlmaWVy cyAodm9pZCAgICAgICAgICAgICAgICAgICAgICAqZGF0YSwKLSAgICAgICAgIH0KLSAgICAgfQot ICAgICBpZiAoYWN0aXZlX2tleS0+c3RhdGUpIHsKLS0gICAgICAgIC8qIENhcHNMb2NrIG5lZWRz IFhLQl9TVEFURV9NT0RTX0xPQ0tFRCAqLwotKyAgICAgICAgLyogQ2Fwc0xvY2sgbmVlZHMgWEtC X1NUQVRFX0xPQ0tFRCAqLwotICAgICAgICAgbWFzayA9IHhrYl9zdGF0ZV9zZXJpYWxpemVfbW9k cyAoYWN0aXZlX2tleS0+c3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBYS0JfU1RBVEVfREVQUkVTU0VEIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFhLQl9TVEFURV9MQVRDSEVEIHwKLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFhLQl9TVEFURV9NT0RTX0xPQ0tFRCk7Ci0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYS0JfU1RBVEVfTE9DS0VEKTsKLSAgICAg fQotICAgICBpZiAocHJpdi0+dmVyYm9zZSkgewotICAgICAgICAgc3RydWN0IHhrYl9zdGF0ZSAq c3RhdGUgPSBhY3RpdmVfa2V5LT5zdGF0ZTsKLUBAIC0yMzU2LDcgKzIzNzEsNyBAQCBpbnB1dF9t ZXRob2Rfa2V5Ym9hcmRfbW9kaWZpZXJzICh2b2lkICAgICAgICAgICAgICAgICAgICAgICpkYXRh LAotICAgICAgICAgICAgICAgICAgICAgIHhrYl9zdGF0ZV9zZXJpYWxpemVfbW9kcyAoc3RhdGUs IFhLQl9TVEFURV9MQVRDSEVEKSA6Ci0gICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiwK LSAgICAgICAgICAgICAgICAgIHN0YXRlID8KLS0gICAgICAgICAgICAgICAgICAgICB4a2Jfc3Rh dGVfc2VyaWFsaXplX21vZHMgKHN0YXRlLCBYS0JfU1RBVEVfTU9EU19MT0NLRUQpIDoKLSsgICAg ICAgICAgICAgICAgICAgICB4a2Jfc3RhdGVfc2VyaWFsaXplX21vZHMgKHN0YXRlLCBYS0JfU1RB VEVfTE9DS0VEKSA6Ci0gICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRik7Ci0gICAgICAg ICBmZmx1c2ggKHByaXYtPmxvZyk7Ci0gICAgIH0KLS0tIAotMi41NC4wCi0K