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] autotool: Delete upstreamed ibus-HEAD.patch Date: Sun, 31 May 2026 02:08:40 GMT Message-ID: <178019332078.1.7564135766380726412.rpms-ibus-8e894714961b@fedoraproject.org> List-ID: X-Git-Repo: rpms/ibus X-Git-Branch: autotool X-Git-Rev: 8e894714961b83c1b7128d3e38bb412683422532 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvaWJ1cwpCcmFuY2gg OiBhdXRvdG9vbApDb21taXQgOiA4ZTg5NDcxNDk2MWI4M2MxYjcxMjhkM2UzOGJiNDEyNjgzNDIy NTMyCkF1dGhvciA6IFRha2FvIEZ1aml3YXJhIDx0ZnVqaXdhckByZWRoYXQuY29tPgpEYXRlICAg OiAyMDI0LTA4LTI1VDA5OjA5OjU0KzA5OjAwClN0YXRzICA6ICswLy00MDExIGluIDEgZmlsZShz KQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2lidXMvYy84ZTg5 NDcxNDk2MWI4M2MxYjcxMjhkM2UzOGJiNDEyNjgzNDIyNTMyP2JyYW5jaD1hdXRvdG9vbAoKTG9n OgpEZWxldGUgdXBzdHJlYW1lZCBpYnVzLUhFQUQucGF0Y2gKCi0tLQpkaWZmIC0tZ2l0IGEvaWJ1 cy1IRUFELnBhdGNoIGIvaWJ1cy1IRUFELnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCA2ZTYyNGRlLi4wMDAwMDAwCi0tLSBhL2lidXMtSEVBRC5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDQwMTEgKzAsMCBAQAotRnJvbSBhMWEyZmU1ZDEzYWQ3Njk1NmE5NGMwNjk1YWYxNWQ3 NmUzZWRmZGNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZnVqaXdhcmF0IDx0YWth by5mdWppd2FyYTFAZ21haWwuY29tPgotRGF0ZTogVGh1LCAxOCBKdWwgMjAyNCAwMToyNTo0MSAr MDkwMAotU3ViamVjdDogW1BBVENIXSBGaXggbWVtb3J5IGxlYWtzIGluIGVycm9yIGhhbmRsaW5n cwotCi0tIGJ1cy9pYnVzaW1wbDogRnJlZSBrZXlzIG5vdCBpbiBjYXNlIG9mIFRZUEVfSU1FX1NX SVRDSEVSCi0tIHNyYy9pYnVzY29tcG9zZXRhYmxlOiBDb3JyZWN0IGhhbmRsaW5nIEdfTUFYU0la RSAqIEdfTUFYU0laRQotLSBzcmMvaWJ1c2NvbXBvc2V0YWJsZTogRmVlIGlidXNfY29tcG9zZV9z ZXFzIGluIGVycm9yIGhhbmRsaW5ncwotLS0tCi0gYnVzL2lidXNpbXBsLmMgICAgICAgICB8IDMg KystCi0gc3JjL2lidXNjb21wb3NldGFibGUuYyB8IDYgKysrKystCi0gMiBmaWxlcyBjaGFuZ2Vk LCA3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9idXMvaWJ1 c2ltcGwuYyBiL2J1cy9pYnVzaW1wbC5jCi1pbmRleCAzMWEwOTVmMy4uNDQ1YzA2MmIgMTAwNjQ0 Ci0tLS0gYS9idXMvaWJ1c2ltcGwuYwotKysrIGIvYnVzL2lidXNpbXBsLmMKLUBAIC0xOTg2LDcg KzE5ODYsOCBAQCBfaWJ1c19zZXRfZ2xvYmFsX3Nob3J0Y3V0X2tleXMgKEJ1c0lCdXNJbXBsICAg ICAqaWJ1cywKLSAgICAgICAgIH0KLSAgICAgICAgIGlidXMtPmltZV9zd2l0Y2hlcl9rZXlzID0g a2V5czsKLSAgICAgICAgIGJyZWFrOwotLSAgICBkZWZhdWx0OjsKLSsgICAgZGVmYXVsdDoKLSsg ICAgICAgIGdfc2xpY2VfZnJlZTEgKHNpemVvZiAoSUJ1c1Byb2Nlc3NLZXlFdmVudERhdGEpICog KHNpemUgKyAxKSwga2V5cyk7Ci0gICAgIH0KLSAgICAgcmV0dXJuIFRSVUU7Ci0gfQotZGlmZiAt LWdpdCBhL3NyYy9pYnVzY29tcG9zZXRhYmxlLmMgYi9zcmMvaWJ1c2NvbXBvc2V0YWJsZS5jCi1p bmRleCA3NTMxYTRiMi4uYThlNDFhMzMgMTAwNjQ0Ci0tLS0gYS9zcmMvaWJ1c2NvbXBvc2V0YWJs ZS5jCi0rKysgYi9zcmMvaWJ1c2NvbXBvc2V0YWJsZS5jCi1AQCAtODQ5LDcgKzg0OSw3IEBAIGNv bXBvc2VfZGF0YV90b192YXJpYW50IChnY29uc3Rwb2ludGVyIGNvbXBvc2VfZGF0YSwKLSAgICAg Z19hc3NlcnQgKGNvbXBvc2VfZGF0YSk7Ci0gICAgIGlmIChlcnJvcikKLSAgICAgICAgICplcnJv ciA9IE5VTEw7Ci0tICAgIGlmICgoaW5kZXhfc3RyaWRlICogbl9zZXFzKSA+IEdfTUFYVUlOVDY0 KSB7Ci0rICAgIGlmIChuX3NlcXMgPT0gMCB8fCBpbmRleF9zdHJpZGUgPiAoR19NQVhTSVpFIC8g bl9zZXFzKSkgewotICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICAgZ19zZXRfZXJy b3IgKGVycm9yLCBJQlVTX0VSUk9SLCBJQlVTX0VSUk9SX0ZBSUxFRCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgIkxlbmd0aCAldSB4ICVsdSBpcyB0b28gbG9uZyIsCi1AQCAtMTQwNCw2ICsx NDA0LDcgQEAgaWJ1c19jb21wb3NlX3RhYmxlX25ld193aXRoX2xpc3QgKEdMaXN0ICAgKmNvbXBv c2VfbGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAoR19NQVhTSVpFIC8gc2l6ZW9mIChn dWludDE2KSkpKSB7Ci0gICAgICAgICAgICAgZ193YXJuaW5nICgiVG9vIGxvbmcgYWxsb2NhdGlv biAlbHUgeCAldSIsCi0gICAgICAgICAgICAgICAgICAgICAgICBzX3NpemVfdG90YWwgLSBzX3Np emVfMTZiaXQsIG5faW5kZXhfc3RyaWRlKTsKLSsgICAgICAgICAgICBnX2ZyZWUgKGlidXNfY29t cG9zZV9zZXFzKTsKLSAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgIH0KLSAgICAg ICAgIHJhd2RhdGEgPSAoZ3BvaW50ZXIpZ19uZXcgKAotQEAgLTE0MTYsNiArMTQxNyw4IEBAIGli dXNfY29tcG9zZV90YWJsZV9uZXdfd2l0aF9saXN0IChHTGlzdCAgICpjb21wb3NlX2xpc3QsCi0g ICAgICAgICAgICAgICAgICAgICAgICBzX3NpemVfdG90YWwgLSBzX3NpemVfMTZiaXQsCi0gICAg ICAgICAgICAgICAgICAgICAgICBuX2luZGV4X3N0cmlkZSwKLSAgICAgICAgICAgICAgICAgICAg ICAgIHZfc2l6ZV8zMmJpdCk7Ci0rICAgICAgICAgICAgZ19mcmVlIChpYnVzX2NvbXBvc2Vfc2Vx cyk7Ci0rICAgICAgICAgICAgZ19mcmVlIChyYXdkYXRhKTsKLSAgICAgICAgICAgICByZXR1cm4g TlVMTDsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmIChHX0xJS0VMWSAocmF3ZGF0YSkpIHsKLUBA IC0xNDMyLDYgKzE0MzUsNyBAQCBpYnVzX2NvbXBvc2VfdGFibGVfbmV3X3dpdGhfbGlzdCAoR0xp c3QgICAqY29tcG9zZV9saXN0LAotICAgICAgICAgfQotICAgICAgICAgaWYgKCFpYnVzX2NvbXBv c2Vfc2Vxc18zMmJpdF9maXJzdCB8fCAhaWJ1c19jb21wb3NlX3NlcXNfMzJiaXRfc2Vjb25kKSB7 Ci0gICAgICAgICAgICAgZ193YXJuaW5nICgiRmFpbGVkIGdfbmV3Iik7Ci0rICAgICAgICAgICAg Z19mcmVlIChpYnVzX2NvbXBvc2Vfc2Vxcyk7Ci0gICAgICAgICAgICAgZ19mcmVlIChyYXdkYXRh KTsKLSAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgIH0KLS0tIAotMi40NS4wCi0K LUZyb20gYTUyODYxMzg1YmI1ZDE1NTk4ZjZjM2MzZDg2YzdhOWVlMTlmMTQwYSBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKLUZyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNv bT4KLURhdGU6IFNhdCwgMjcgSnVsIDIwMjQgMTk6MDA6NTMgKzA5MDAKLVN1YmplY3Q6IFtQQVRD SCAxLzZdIHNyYy90ZXN0czogRW5hYmxlIENJIGluIEdOT01FIFdheWxhbmQKLQotLSBJbXBsZW1l bnQgaGVhZGxlc3MgZGVza3RvcCB0byB0ZXN0IFdheWxhbmQgc2Vzc2lvbnMKLS0gSW1wbGVtZW50 IGlidXMtZGVza3RvcC10ZXN0aW5nLWF1dG9zdGFydCB0byBiZSBleGVjdXRlZCBpbiBYREcKLSAg YXV0b3N0YXJ0IGluIEdOT01FIFdheWxhbmQKLS0gTW92ZSBzaGFyZWQgY29kZXMgdG8gaWJ1cy1k ZXNrdG9wLXRlc3RpbmctbW9kdWxlIGJldHdlZW4KLSAgaWJ1cy1kZXNrdG9wLXRlc3RpbmctcnVu bmVyIGFuZCBpYnVzLWRlc2t0b3AtdGVzdGluZy1hdXRvc3RhcnQKLS0gQWRkIC0tbm8tc3lzdGVt ZCBvcHRpb24gdG8gZW5hYmxlIHRoZSBwcmV2aW91cyB0ZXN0aW5nIGZyYW1lIHdpdGggcnVubmlu ZwotICBnbm9tZS1zZXNzaW9uIGRpcmVjdGx5Ci0tIFJlbmFtZSAtLWRlc2t0b3Agb3B0aW9uIHRv IC0tc2Vzc2lvbgotLSBNb3ZlIHNhdmVfc2NyZWVuKCkgZnJvbSBydW5uZXIgdG8gbW9kdWxlCi0t IENvcHkgZ25vbWUtc2hlbGwgc2VydmljZSBmaWxlIHRvIHVzZXIgaG9tZSBmb3IgaGVhZGxlc3Mg JiB2aXJ0dWFsLW1vbml0b3IKLS0gQWRkIC0tZGVsZXRlLXRlc3RzIG9wdGlvbiB0byBjbGVhbiB1 cCB0ZXN0cwotLSBBZGQgQXV0b3N0YXJ0Q29uZGl0aW9uPWlmLWV4aXN0cyBpbiBYREcgYXV0b3N0 YXJ0IGRlc2t0b3AgZmlsZQotLSBBZGQgNjAgc2VjcyBpbiBpYnVzLWNvbXBvc2UtbG9jYWxlcyBm b3Igc3lzdGVtZCBkZXNrdG9wIHNlc3Npb25zCi0tIFF1b3RlIGZpbGUgbmFtZXMgYXMgbXVjaCBh cyBwb3NzaWJsZS4KLS0gQ2hlY2sgZmlsZSBleGlzdGFudCBhbmQgbm90IHRvIHVzZSAicm0gLWYi IGFzIG11Y2ggYXMgcG9zc2libGUKLS0gRG8gbm90IHNldCBHVEtfSU1fTU9EVUxFPWlidXMgZm9y IFdheWxhbmQKLQotQlVHPWh0dHBzOi8vZ2l0aHViLmNvbS9pYnVzL2lidXMvcHVsbC8yNjU3Ci0t LS0KLSBzcmMvdGVzdHMvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgIHwgIDIzICst Ci0gc3JjL3Rlc3RzL2lidXMtY29tcG9zZS1sb2NhbGVzLmluICAgICAgICAgICB8ICAxNiArLQot IHNyYy90ZXN0cy9pYnVzLWRlc2t0b3AtdGVzdGluZy1hdXRvc3RhcnQgICAgfCAgNTcgLS0KLSBz cmMvdGVzdHMvaWJ1cy1kZXNrdG9wLXRlc3RpbmctYXV0b3N0YXJ0LmluIHwgIDgzICsrCi0gc3Jj L3Rlc3RzL2lidXMtZGVza3RvcC10ZXN0aW5nLW1vZHVsZSAgICAgICB8IDg3NiArKysrKysrKysr KysrKysrKysrKwotIHNyYy90ZXN0cy9pYnVzLWRlc2t0b3AtdGVzdGluZy1ydW5uZXIuaW4gICAg fCA0OTUgKy0tLS0tLS0tLS0KLSBzcmMvdGVzdHMvaWJ1cy1kZXNrdG9wLXRlc3RpbmcuZGVza3Rv cC5pbiAgIHwgICAyICstCi0gNyBmaWxlcyBjaGFuZ2VkLCAxMDM0IGluc2VydGlvbnMoKyksIDUx OCBkZWxldGlvbnMoLSkKLSBkZWxldGUgbW9kZSAxMDA3NTUgc3JjL3Rlc3RzL2lidXMtZGVza3Rv cC10ZXN0aW5nLWF1dG9zdGFydAotIGNyZWF0ZSBtb2RlIDEwMDc1NSBzcmMvdGVzdHMvaWJ1cy1k ZXNrdG9wLXRlc3RpbmctYXV0b3N0YXJ0LmluCi0gY3JlYXRlIG1vZGUgMTAwNzU1IHNyYy90ZXN0 cy9pYnVzLWRlc2t0b3AtdGVzdGluZy1tb2R1bGUKLQotZGlmZiAtLWdpdCBhL3NyYy90ZXN0cy9N YWtlZmlsZS5hbSBiL3NyYy90ZXN0cy9NYWtlZmlsZS5hbQotaW5kZXggYjMwYTM5ZmIuLjZjNGM4 NmNmIDEwMDY0NAotLS0tIGEvc3JjL3Rlc3RzL01ha2VmaWxlLmFtCi0rKysgYi9zcmMvdGVzdHMv TWFrZWZpbGUuYW0KLUBAIC0xMDYsNiArMTA2LDcgQEAgdGVzdF9zb3VyY2VzZGlyID0gJChkYXRh ZGlyKS9pbnN0YWxsZWQtdGVzdHMvaWJ1cwotIAotIENMRUFORklMRVMgKz0gXAotICAgICAkKHRl c3RfbWV0YXMpIFwKLSsgICAgaWJ1cy1kZXNrdG9wLXRlc3RpbmctYXV0b3N0YXJ0IFwKLSAgICAg aWJ1cy1kZXNrdG9wLXRlc3RpbmctcnVubmVyIFwKLSAgICAgb3JnLmZyZWVkZXNrdG9wLklCdXMu RGVza3RvcC5UZXN0aW5nLmRlc2t0b3AgXAotICAgICAkKE5VTEwpCi1AQCAtMTE5LDcgKzEyMCwx MCBAQCBDTEVBTkZJTEVTICs9IFwKLSAgICAgJChOVUxMKQotIGVuZGlmCi0gdGVzdF9leGVjc2Rp ciA9ICQobGliZXhlY2RpcikvaW5zdGFsbGVkLXRlc3RzL2lidXMKLS1saWJleGVjX1NDUklQVFMg PSBpYnVzLWRlc2t0b3AtdGVzdGluZy1hdXRvc3RhcnQKLStsaWJleGVjX1NDUklQVFMgPSBcCi0r ICBpYnVzLWRlc2t0b3AtdGVzdGluZy1hdXRvc3RhcnQgXAotKyAgaWJ1cy1kZXNrdG9wLXRlc3Rp bmctbW9kdWxlIFwKLSsgICQoTlVMTCkKLSAKLSB0ZXN0X2ZyYW1lX0RBVEEgPSBvcmcuZnJlZWRl c2t0b3AuSUJ1cy5EZXNrdG9wLlRlc3RpbmcuZGVza3RvcAotIHRlc3RfZnJhbWVkaXIgPSAkKHBr Z2RhdGFkaXIpL3Rlc3RzCi1AQCAtMTQyLDkgKzE0NiwyMSBAQCBpYnVzLWNvbXBvc2UtbG9jYWxl czogaWJ1cy1jb21wb3NlLWxvY2FsZXMuaW4KLSAJbXYgJEAudG1wICRAOyBcCi0gCSQoTlVMTCkK LSAKLStpYnVzLWRlc2t0b3AtdGVzdGluZy1hdXRvc3RhcnQ6IGlidXMtZGVza3RvcC10ZXN0aW5n LWF1dG9zdGFydC5pbgotKwlJTlNUQUxMRURESVI9JChkYXRhZGlyKS9pbnN0YWxsZWQtdGVzdHM7 IFwKLSsJc2VkIC1lICJzfEBEQVRBRElSW0BdfCQoZGF0YWRpcil8ZyIgXAotKwkgICAgLWUgInN8 QElOU1RBTExFRERJUltAXXwkJElOU1RBTExFRERJUnxnIiBcCi0rCSAgICAtZSAic3xATElCRVhF Q0RJUltAXXwkKGxpYmV4ZWNkaXIpfGciIFwKLSsJICAgICQ8ID4gJEAudG1wOyBcCi0rCW12ICRA LnRtcCAkQDsgXAotKwkkKE5VTEwpCi0rCi0gaWJ1cy1kZXNrdG9wLXRlc3RpbmctcnVubmVyOiBp YnVzLWRlc2t0b3AtdGVzdGluZy1ydW5uZXIuaW4KLSAJSU5TVEFMTEVERElSPSQoZGF0YWRpcikv aW5zdGFsbGVkLXRlc3RzOyBcCi0tCXNlZCAtZSAic3xASU5TVEFMTEVERElSW0BdfCQkSU5TVEFM TEVERElSfGciICQ8ID4gJEAudG1wOyBcCi0rCXNlZCAtZSAic3xAREFUQURJUltAXXwkKGRhdGFk aXIpfGciIFwKLSsJICAgIC1lICJzfEBJTlNUQUxMRURESVJbQF18JCRJTlNUQUxMRURESVJ8ZyIg XAotKwkgICAgLWUgInN8QExJQkVYRUNESVJbQF18JChsaWJleGVjZGlyKXxnIiBcCi0rCSAgICAk PCA+ICRALnRtcDsgXAotIAltdiAkQC50bXAgJEA7IFwKLSAJJChOVUxMKQotIAotQEAgLTE1Nyw3 ICsxNzMsOCBAQCBFWFRSQV9ESVNUID0gXAotICAgICBpYnVzLWNvbXBvc2UuZW52IFwKLSAgICAg aWJ1cy1jb21wb3NlLWxvY2FsZXMuaW4gXAotICAgICBpYnVzLWRlc2t0b3AtdGVzdGluZy5kZXNr dG9wLmluIFwKLS0gICAgaWJ1cy1kZXNrdG9wLXRlc3RpbmctYXV0b3N0YXJ0IFwKLSsgICAgaWJ1 cy1kZXNrdG9wLXRlc3RpbmctYXV0b3N0YXJ0LmluIFwKLSsgICAgaWJ1cy1kZXNrdG9wLXRlc3Rp bmctbW9kdWxlIFwKLSAgICAgaWJ1cy1kZXNrdG9wLXRlc3RpbmctcnVubmVyLmluIFwKLSAgICAg JChOVUxMKQotIAotZGlmZiAtLWdpdCBhL3NyYy90ZXN0cy9pYnVzLWNvbXBvc2UtbG9jYWxlcy5p biBiL3NyYy90ZXN0cy9pYnVzLWNvbXBvc2UtbG9jYWxlcy5pbgotaW5kZXggYjM2MTY1ZmUuLjdh MTMzY2UwIDEwMDc1NQotLS0tIGEvc3JjL3Rlc3RzL2lidXMtY29tcG9zZS1sb2NhbGVzLmluCi0r KysgYi9zcmMvdGVzdHMvaWJ1cy1jb21wb3NlLWxvY2FsZXMuaW4KLUBAIC02LDcgKzYsOCBAQCBC VUlMRERJUj1gZGlybmFtZSAkMGAKLSAKLSBleHBvcnQgSUJVU19DT01QT1NFX0NBQ0hFX0RJUj0k UFdECi0gCi0tcmV0dmFsPTAKLStSRVRWQUw9MAotK0lOSVRFRD0wCi0gIyBEZWxldGVkIGZvciB2 YXIgaW4gYGNhdCAqLmVudmAgYmVjYXVzZSBJRlM9JCdcbicgaXMgbm90IHN1cHBvcnRlZCBpbiBQ T1NJWCBzaAotIHdoaWxlIHJlYWQgdmFyCi0gZG8KLUBAIC0xNCwxOSArMTUsMjYgQEAgZG8KLSAg ICAgaWYgWyAieCRJU19DT01NRU5UIiAhPSB4IF0gOyB0aGVuCi0gICAgICAgICBjb250aW51ZQot ICAgICBmaQotKyAgICB3aGlsZSBbIHgiJElCVVNfREFFTU9OX1dJVEhfU1lTVEVNRCIgIT0geCBd ICYmIFsgJElOSVRFRCAtbHQgNiBdIDsgZG8KLSsgICAgICAgIGVjaG8gIldhaXRpbmcgZm9yICR7 SU5JVEVEfTAgc2VjcyB0aWxsIDYwIHNlY3MiCi0rICAgICAgICBzbGVlcCAxMAotKyAgICAgICAg SU5JVEVEPWBleHByICRJTklURUQgKyAxYAotKyAgICBkb25lCi0gICAgICMgVXNlICQqIGluc3Rl YWQgb2YgJEAgbm90IHRvIG1peCBzdHJpbmdzIGFuZCBpbnRlZ2VycwotICAgICBlY2hvICIjIFN0 YXJ0aW5nICR2YXIgJEJVSUxERElSL2lidXMtY29tcG9zZSAkU1JDRElSICQqIgotICAgICAjIE5l ZWQgdG8gZW5jbG9zZSAkQCB3aXRoIGRvdWJsZSBxdW90ZXMgbm90IHRvIHNwbGl0IHRoZSBhcnJh eS4KLSAgICAgZW52ICR2YXIgJEJVSUxERElSL2lidXMtY29tcG9zZSAkU1JDRElSICIkQCIKLS0g ICAgcmV0dmFsPWBleHByICRyZXR2YWwgKyAkP2AKLS0gICAgZWNobyAiIyBGaW5pc2hlZCAkdmFy ICRCVUlMRERJUi9pYnVzLWNvbXBvc2UgJFNSQ0RJUiAkKiB3aXRoICRyZXR2YWwiCi0rICAgIFJF VFZBTD1gZXhwciAkUkVUVkFMICsgJD9gCi0rICAgIGVjaG8gIiMgRmluaXNoZWQgJHZhciAkQlVJ TERESVIvaWJ1cy1jb21wb3NlICRTUkNESVIgJCogd2l0aCAkUkVUVkFMIgotIAotICAgICBDQUNI RV9GSUxFUz1gbHMgKi5jYWNoZWAKLSAgICAgaWYgWyB4IiRDQUNIRV9GSUxFUyIgIT0geCBdIDsg dGhlbgotICAgICAgICAgZWNobyAiQ2xlYW4gJENBQ0hFX0ZJTEVTIgotICAgICAgICAgcm0gJENB Q0hFX0ZJTEVTCi0gICAgIGZpCi0rICAgICMgTmVlZCB0byB3YWl0IGZvciAxIHNlYyBub3QgdG8g YmUgZnJlZXplZCB3aXRoIGdub21lLXNoZWxsIGluIFdheWxhbmQKLSsgICAgc2xlZXAgMQotIGRv bmUgPDwgRU9GX0VOVlMKLSBgY2F0ICRTUkNESVIvaWJ1cy1jb21wb3NlLmVudmAKLSBFT0ZfRU5W UwotLWV4aXQgJHJldHZhbAotK2V4aXQgJFJFVFZBTAotZGlmZiAtLWdpdCBhL3NyYy90ZXN0cy9p YnVzLWRlc2t0b3AtdGVzdGluZy1hdXRvc3RhcnQgYi9zcmMvdGVzdHMvaWJ1cy1kZXNrdG9wLXRl c3RpbmctYXV0b3N0YXJ0Ci1kZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKLWluZGV4IDFlMWViMTgw Li4wMDAwMDAwMAotLS0tIGEvc3JjL3Rlc3RzL2lidXMtZGVza3RvcC10ZXN0aW5nLWF1dG9zdGFy dAotKysrIC9kZXYvbnVsbAotQEAgLTEsNTcgKzAsMCBAQAotLSMhL2Jpbi9zaAotLSMgLSotIG1v ZGU6IEM7IGMtYmFzaWMtb2Zmc2V0OiA0OyBpbmRlbnQtdGFicy1tb2RlOiBuaWw7IC0qLQotLSMg dmltOnNldCBub2V0IHRzPTQ6Ci0tIwotLSMgaWJ1cyAtIFRoZSBJbnB1dCBCdXMKLS0jCi0tIyBD b3B5cmlnaHQgKGMpIDIwMjEgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5j b20+Ci0tIyBDb3B5cmlnaHQgKGMpIDIwMjEgUmVkIEhhdCwgSW5jLgotLSMKLS0jIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5Ci0tIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQotLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLS0jIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCi0tIwotLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0tIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSMgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSMgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLS0jCi0tIyBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhbG9uZwotLSMgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKLS0jIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg Rmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCi0tCi0tVEVTVF9MT0c9Ci0tQ09NTUFO RFM9JwotLWlkCi0tZWNobyAkRElTUExBWQotLXB3ZAotLXBzdHJlZSAtYXNwICQkCi0tZ3NldHRp bmdzIGxpc3QtcmVjdXJzaXZlbHkgb3JnLmdub21lLnNoZWxsCi0tcnBtIC1xIGdub21lLXNoZWxs LWV4dGVuc2lvbi1uby1vdmVydmlldyBnbm9tZS1zaGVsbCBnbm9tZS1zZXNzaW9uCi0tcHMgLWVm IHwgZ3JlcCBpYnVzIHwgZ3JlcCAtdiBncmVwCi0taWJ1cyBhZGRyZXNzCi0tJwotLQotLWlmIFsg JCMgLWd0IDAgXSA7IHRoZW4KLS0gICAgVEVTVF9MT0c9JDEKLS1maQotLQotLXJ1bl90ZXN0KCkK LS17Ci0td2hpbGUgcmVhZCBjbWQgOyBkbwotLSAgICBpZiBbIHgiJGNtZCIgPSB4IF0gOyB0aGVu Ci0tICAgICAgICBjb250aW51ZQotLSAgICBmaQotLSAgICBlY2hvICIjICRjbWQiCi0tICAgIGV2 YWwgIiRjbWQiCi0tZG9uZSA8PCBFT0ZfQ09NTUFORFMKLS1gZWNobyAiJENPTU1BTkRTImAKLS1F T0ZfQ09NTUFORFMKLS19Ci0tCi0taWYgWyB4IiRURVNUX0xPRyIgPSB4IF0gOyB0aGVuCi0tICAg IHJ1bl90ZXN0Ci0tZWxzZQotLSAgICBydW5fdGVzdCAyPj4kVEVTVF9MT0cgMT4+JFRFU1RfTE9H Ci0tZmkKLWRpZmYgLS1naXQgYS9zcmMvdGVzdHMvaWJ1cy1kZXNrdG9wLXRlc3RpbmctYXV0b3N0 YXJ0LmluIGIvc3JjL3Rlc3RzL2lidXMtZGVza3RvcC10ZXN0aW5nLWF1dG9zdGFydC5pbgotbmV3 IGZpbGUgbW9kZSAxMDA3NTUKLWluZGV4IDAwMDAwMDAwLi5kNTAzNTRkZgotLS0tIC9kZXYvbnVs bAotKysrIGIvc3JjL3Rlc3RzL2lidXMtZGVza3RvcC10ZXN0aW5nLWF1dG9zdGFydC5pbgotQEAg LTAsMCArMSw4MyBAQAotKyMhL2Jpbi9zaAotKyMgLSotIG1vZGU6IEM7IGMtYmFzaWMtb2Zmc2V0 OiA0OyBpbmRlbnQtdGFicy1tb2RlOiBuaWw7IC0qLQotKyMgdmltOnNldCBub2V0IHRzPTQ6Ci0r IwotKyMgaWJ1cyAtIFRoZSBJbnB1dCBCdXMKLSsjCi0rIyBDb3B5cmlnaHQgKGMpIDIwMjEtMjAy NCBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSsjIENvcHlyaWdo dCAoYykgMjAyMSBSZWQgSGF0LCBJbmMuCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9m IHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K LSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rIyB3aXRo IHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuLAotKyMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBN QSAwMjExMC0xMzAxIFVTQS4KLSsKLSsKLStQUk9HTkFNRT1gYmFzZW5hbWUgJDBgCi0rVEVTVF9D QVNFX0RJUj0iQElOU1RBTExFRERJUkAiCi0rTU9EVUxFX1NIPSdpYnVzLWRlc2t0b3AtdGVzdGlu Zy1tb2R1bGUnCi0rTU9EVUxFX1NIX1BBVEg9IkBMSUJFWEVDRElSQC8kTU9EVUxFX1NIIgotK1RF U1RfTE9HPSJ0ZXN0LWF1dG9zdGFydC5sb2ciCi0rVEVTVElOR19SVU5ORVI9IiIKLSsKLSsKLStp ZiB0ZXN0IC1mICRNT0RVTEVfU0hfUEFUSCA7IHRoZW4KLSsgIC4gJE1PRFVMRV9TSF9QQVRICi0r ZWxpZiB0ZXN0IC1mICQoZGlybmFtZSAkMCkvJE1PRFVMRV9TSCA7IHRoZW4KLSsgIC4gJChkaXJu YW1lICQwKS8kTU9EVUxFX1NICi0rZWxzZQotKyAgZWNobyAiTm90IGZvdW5kICRNT0RVTEVfU0gi Ci0rICBleGl0IDEKLStmaQotKwotKwotK3VzYWdlKCkKLSt7Ci0rICAgICRFQ0hPIC1lIFwKLSsi VGhpcyB0ZXN0IHN1aXRlIGlzIGNhbGxlZCBmcm9tIC9ldGMveGRnL2F1dG9zdGFydCBmb3Igc3lz dGVtZCBzZXNzaW9uc1xuIiAgICAgXAotKyIkUFJPR05BTUUgW09QVElPTlPigKZdXG4iICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsiXG4i ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAotKyJPUFRJT05TOlxuIiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rIi1oLCAtLWhl bHAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaGVscFxuIiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSsiLXYsIC0tdmVyc2lvbiAgICAgICAgICAgICAgICAgICAgU2hvdyB2 ZXJzaW9uXG4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyItYiwgLS1idWlsZGRp cj1CVUlMRERJUiAgICAgICAgICBTZXQgdGhlIEJVSUxERElSXG4iICAgICAgICAgICAgICAgICAg ICAgICAgICBcCi0rIi1zLCAtLXNyY2Rpcj1TT1VSQ0VESVIgICAgICAgICAgIFNldCB0aGUgU09V UkNFRElSXG4iICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsiLVYsIC0tdmVyYm9zZSAgICAg ICAgICAgICAgICAgICAgVmVyYm9zZSBsb2cgZm9yIGlidXMtZGFlbW9uXG4iICAgICAgICAgICAg ICAgXAotKyItdCwgLS10ZXN0cz1cIlRFU1RTLi4uXCIgICAgICAgICAgIFJ1biBURVNUUyBwcm9n cmFtcyB3aGljaCBpcyBzZXBhcmF0ZWQgYnkgc3BhY2VcbiIgXAotKyItciwgLS1ydW5uZXI9UlVO TkVSICAgICAgICAgICAgICBSdW4gVEVTVFMgcHJvZ3JhbXMgd2l0aCBhIHRlc3QgUlVOTkVSLlxu IiAgICBcCi0rIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJVTk5ERVIgPSAnZ25v bWUnLCAnZGVmYXVsdCcgb3IgJycuXG4iICAgICAgIFwKLSsiICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJ2RlZmF1bHQnIGlzIGFuIGVtYmVkZGVkIHJ1bm5lci5cbiIgICAgICAgICAg XAotKyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJyBpcyBubyB0ZXN0cy5cbiIg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rIi1ULCAtLXRpbWVvdXQ9VElNRU9VVCAgICAg ICAgICAgIFNldCB0aW1lb3V0IChkZWZhdWx0IFRJTUVPVVQgaXMgMzAwIHNlYykuXG4iIFwKLSsi LW8sIC0tb3V0cHV0PU9VVFBVVF9GSUxFICAgICAgICAgT3V0cHV0IHRoZSBsb2cgdG8gT1VUUFVU X0ZJTEVcbiIgICAgICAgICAgICAgXAotKyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkZWZhdWx0IGlzICRURVNUX0xPR1xuIiAgICAgICAgICAgICAgICAgICAgICBcCi0rIi1PLCAt LXJlc3VsdD1SRVNVTFRfRklMRSAgICAgICAgIE91dHB1dCB0aGUgcmVzdWx0IHRvIFJFU1VMVF9G SUxFXG4iICAgICAgICAgIFwKLSsiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVm YXVsdCBpcyBzdGRvdXRcbiIgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyItUywgLS1zY3Jl ZW5kdW1wPURVTVBfRklMRSAgICAgICBPdXRwdXQgdGhlIHNjcmVlbiB0byBEVU1QX0ZJTEUgKCdT VERPVVQnIGNhbiBiZSBzdGRvdXQpXG4iIFwKLSsiLWUsIC0tZW52Y2hlY2sgICAgICAgICAgICAg ICAgICAgUmV0cmlldmUgZW52aXJvbm1lbnQgdmFyaWFibGVzXG4iICAgICAgICAgICAgXAotKyIi Ci0rfQotKwotKwotK21haW4oKQotK3sKLSsgICAgcGFyc2VfYXJncyAiJEAiCi0rICAgIGluaXRf c2Vzc2lvbgotKyAgICBjaGVja19lbnYKLSsgICAgc2F2ZV9zY3JlZW4KLSsgICAgcnVuX3Rlc3Rf c3VpdGUKLSsgICAgZmluaXQKLSt9Ci0rCi0rCi0rIyBOZWVkIHRvIGVuY2xvc2UgJEAgd2l0aCBk b3VibGUgcXVvdGVzIG5vdCB0byBzcGxpdCB0aGUgYXJyYXkuCi0rbWFpbiAiJEAiCi1kaWZmIC0t Z2l0IGEvc3JjL3Rlc3RzL2lidXMtZGVza3RvcC10ZXN0aW5nLW1vZHVsZSBiL3NyYy90ZXN0cy9p YnVzLWRlc2t0b3AtdGVzdGluZy1tb2R1bGUKLW5ldyBmaWxlIG1vZGUgMTAwNzU1Ci1pbmRleCAw MDAwMDAwMC4uMmQ2ODY4MTMKLS0tLSAvZGV2L251bGwKLSsrKyBiL3NyYy90ZXN0cy9pYnVzLWRl c2t0b3AtdGVzdGluZy1tb2R1bGUKLUBAIC0wLDAgKzEsODc2IEBACi0rIyEvYmluL3NoCi0rIyAt Ki0gbW9kZTogQzsgYy1iYXNpYy1vZmZzZXQ6IDQ7IGluZGVudC10YWJzLW1vZGU6IG5pbDsgLSot Ci0rIyB2aW06c2V0IG5vZXQgdHM9NDoKLSsjCi0rIyBpYnVzIC0gVGhlIElucHV0IEJ1cwotKyMK LSsjIENvcHlyaWdodCAoYykgMjAxOC0yMDI0IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2Fy YTFAZ21haWwuY29tPgotKyMgQ29weXJpZ2h0IChjKSAyMDE4IFJlZCBIYXQsIEluYy4KLSsjCi0r IyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwot KyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYWxvbmcKLSsjIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRv IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCi0rIyA1MSBGcmFua2xpbiBTdHJl ZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgotKwotKwotKyMgUE9T SVggc2ggaGFzIG5vICdlY2hvIC1lJwotKzogJHtFQ0hPOj0nL3Vzci9iaW4vZWNobyd9Ci0rIyBQ T1NJWCBzaCBoYXMgJFVJRAotKyMgREFTSCBzYXZlcyB0aGUgZ3JhdmVzIGluICdgYCcgYXMgY2hh cmFjdGVycyBub3QgdG8gYmUgZXh0cmFjdGVkCi0rOiAke1VJRDo9YGlkIC11YH0KLSs6ICR7VEVT VF9DQVNFX0RJUj0nL3Vzci9zaGFyZS9pbnN0YWxsZWQtdGVzdHMnfQotKzogJHtBVVRPU1RBUlRf REVTS1RPUF9ESVI9Jy91c3Ivc2hhcmUvaWJ1cy90ZXN0cyd9Ci0rCi0rCi0rVkVSU0lPTj0wLjQK LStCVUlMRERJUj0iLiIKLStTUkNESVI9Ii4iCi0rVEVTVF9MT0dfU1RET1VUPTAKLStSRVNVTFRf TE9HPSIiCi0rU0NSRUVOX0xPRz0iIgotK0hBVkVfR1JBUEhJQ1M9MQotK1ZFUkJPU0U9MAotK1NF U1NJT05fQ09NTUFORD0iZGJ1cy1sYXVuY2ggLS1leGl0LXdpdGgtc2Vzc2lvbiBnbm9tZS1zZXNz aW9uIgotK1NFU1NJT05fTEFORz0KLStTRVNTSU9OX0lTX0dOT01FPTEKLStHTk9NRV9TSEVMTF9X QVlMQU5EX0NPTU1BTkQ9Imdub21lLXNoZWxsIC0td2F5bGFuZCAtLWhlYWRsZXNzIC0tdmlydHVh bC1tb25pdG9yIDEwMjR4NzY4IgotK1NZU1RFTURfU1lTVEVNX0RJUj0iL3Vzci9saWIvc3lzdGVt ZC91c2VyIgotK1BJRF9YT1JHPTAKLStQSURfR05PTUVfU0VTU0lPTj0wCi0rRU5BQkxFRF9TWVNU RU1EPTEKLStURVNUX1VTRVI9aXRlc3R1c2VyCi0rVEVTVF9VU0VSX0hPTUU9L2V4cG9ydC9ob21l LyRURVNUX1VTRVIKLStHRE1fQ09ORj0vcnVuL2dkbS9jdXN0b20uY29uZgotK0FVVE9TVEFSVF9E RVNLVE9QX0ZJTEU9Im9yZy5mcmVlZGVza3RvcC5JQnVzLkRlc2t0b3AuVGVzdGluZy5kZXNrdG9w IgotK1RFU1RTPSIiCi0rVElNRU9VVD0zMDAKLStHUkVFTj0nXDAzM1swOzMybScKLStSRUQ9J1ww MzNbMDszMW0nCi0rTkM9J1wwMzNbMG0nCi0rRU5WX0NIRUNLPTAKLStFTlZfQ09NTUFORFM9Jwot K2lkCi0rcHdkCi0rcHN0cmVlIC1hc3AgJCQKLStnc2V0dGluZ3MgbGlzdC1yZWN1cnNpdmVseSBv cmcuZ25vbWUuc2hlbGwKLStycG0gLXEgZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLW5vLW92ZXJ2aWV3 IGdub21lLXNoZWxsIGdub21lLXNlc3Npb24KLStwcyAtZWYgfCBncmVwIGlidXMgfCBncmVwIC12 IGdyZXAKLStpYnVzIGFkZHJlc3MKLStlbnYKLSsjZGJ1cy1zZW5kIC0tc2Vzc2lvbiAtLXByaW50 LXJlcGx5IC0tZGVzdD1vcmcuZ25vbWUuU2hlbGwuSW50cm9zcGVjdCAvb3JnL2dub21lL1NoZWxs L0ludHJvc3BlY3Qgb3JnLmdub21lLlNoZWxsLkludHJvc3BlY3QuR2V0V2luZG93cwotKycKLSsK LSsKLStwcmludF9sb2coKQotK3sKLSsgICAgaWYgWyB4IiRSRVNVTFRfTE9HIiAhPSB4IF0gOyB0 aGVuCi0rICAgICAgICAjIGF2b2lkICdlY2hvIC1lJyBiZWZvcmUgY2FsbCAnc2VkJy4KLSsgICAg ICAgIGlmIFsgeCIkMSIgPSB4Jy1lJyBdIDsgdGhlbgotKyAgICAgICAgICAgIHNoaWZ0Ci0rICAg ICAgICBmaQotKyAgICAgICAgTk9fRVNDQVBFPWBlY2hvICIkQCIgfCBzZWQgLWUgJ3MvXFxcMDMz XFxbMDszLm0vL2cnIC1lICdzL1xcXDAzM1xcWzBtLy9nJ2AKLSsgICAgICAgICRFQ0hPICROT19F U0NBUEUgPj4gJFJFU1VMVF9MT0cKLSsgICAgZWxzZQotKyAgICAgICAgJEVDSE8gIiRAIgotKyAg ICBmaQotK30KLSsKLSsKLStwYXJzZV9hcmdzKCkKLSt7Ci0rICAgICMgVGhpcyBpcyBHTlUgZ2V0 b3B0LiAic3VkbyBwb3J0IGdldG9wdCIgaW4gQlNEPwotKyAgICBBUkdTPWBnZXRvcHQgLW8gaHZi OnM6Y1ZkOnQ6cjppVDpvOk86UzplbDpEIC0tbG9uZyBcCi0raGVscCx2ZXJzaW9uLGJ1aWxkZGly OixzcmNkaXI6LG5vLWdyYXBoaWNzLHZlcmJvc2UsZGVza3RvcDosc2Vzc2lvbjosdGVzdHM6LFwK LStydW5uZXI6LG5vLXN5c3RlbWQsdGltZW91dDosb3V0cHV0OixyZXN1bHQ6LHNjcmVlbmR1bXA6 LGVudmNoZWNrLGxhbmc6LFwKLStkZWxldGUtdGVzdHNcCi0rICAgICAgICAtLSAiJEAiYDsKLSsg ICAgZXZhbCBzZXQgLS0gIiRBUkdTIgotKyAgICB3aGlsZSBbIDEgXSA7IGRvCi0rICAgICAgICBj YXNlICIkMSIgaW4KLSsgICAgICAgIC1oIHwgLS1oZWxwICkgICAgICAgIHVzYWdlOyBleGl0IDA7 OwotKyAgICAgICAgLXYgfCAtLXZlcnNpb24gKSAgICAgJEVDSE8gLWUgIiRWRVJTSU9OIjsgZXhp dCAwOzsKLSsgICAgICAgIC1iIHwgLS1idWlsZGRpciApICAgIEJVSUxERElSPSIkMiI7IHNoaWZ0 IDI7OwotKyAgICAgICAgLXMgfCAtLXNyY2RpciApICAgICAgU1JDRElSPSIkMiI7IHNoaWZ0IDI7 OwotKyAgICAgICAgLWMgfCAtLW5vLWdyYXBoaWNzICkgSEFWRV9HUkFQSElDUz0wOyBzaGlmdDs7 Ci0rICAgICAgICAtViB8IC0tdmVyYm9zZSApICAgICBWRVJCT1NFPTE7IHNoaWZ0OzsKLSsgICAg ICAgIC0tZGVza3RvcCApICAgICAgICAgIFNFU1NJT05fQ09NTUFORD0iJDIiCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwcmludF9sb2cgLWUgIi0tZGVza3RvcCBpcyBkZXByZWNhdGVk LiBVc2UgLS1zZXNzaW9uIGluc3RlYWQiCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz aGlmdCAyOzsKLSsgICAgICAgIC1kIHwgLS1zZXNzaW9uICkgICAgIFNFU1NJT05fQ09NTUFORD0i JDIiOyBzaGlmdCAyOzsKLSsgICAgICAgIC10IHwgLS10ZXN0cyApICAgICAgIFRFU1RTPSIkMiI7 IHNoaWZ0IDI7OwotKyAgICAgICAgLXIgfCAtLXJ1bm5lciApICAgICAgVEVTVElOR19SVU5ORVI9 IiQyIjsgc2hpZnQgMjs7Ci0rICAgICAgICAtaSB8IC0tbm8tc3lzdGVtZCApICBFTkFCTEVEX1NZ U1RFTUQ9MDsgc2hpZnQ7OwotKyAgICAgICAgLVQgfCAtLXRpbWVvdXQgKSAgICAgVElNRU9VVD0i JDIiOyBzaGlmdCAyOzsKLSsgICAgICAgIC1vIHwgLS1vdXRwdXQgKSAgICAgIFRFU1RfTE9HPSIk MiI7IHNoaWZ0IDI7OwotKyAgICAgICAgLU8gfCAtLXJlc3VsdCApICAgICAgUkVTVUxUX0xPRz0i JDIiOyBzaGlmdCAyOzsKLSsgICAgICAgIC1TIHwgLS1zY3JlZW5kdW1wICkgIFNDUkVFTl9MT0c9 IiQyIjsgc2hpZnQgMjs7Ci0rICAgICAgICAtZSB8IC0tZW52Y2hlY2sgKSAgICBFTlZfQ0hFQ0s9 MTsgc2hpZnQ7OwotKyAgICAgICAgLWwgfCAtLWxhbmcgKSAgICAgICAgU0VTU0lPTl9MQU5HPSIk MiI7IHNoaWZ0IDI7OwotKyAgICAgICAgLUQgfCAtLWRlbGV0ZS10ZXN0cyApIGRlbGV0ZV90ZXN0 X3VzZXI7IGV4aXQgMDs7Ci0rICAgICAgICAtLSApICAgICAgICAgICAgICAgICBzaGlmdDsgYnJl YWs7OwotKyAgICAgICAgKiApICAgICAgICAgICAgICAgICAgdXNhZ2U7IGV4aXQgMTs7Ci0rICAg ICAgICBlc2FjCi0rICAgIGRvbmUKLSsgICAgREw9JyQnCi0rICAgIGlmIGVjaG8gIiRTRVNTSU9O X0NPTU1BTkQiIHwgZ3JlcCAtcSAtRSAiLiotd2l0aC1kYnVzJERMIiA7IHRoZW4KLSsgICAgICAg IFNFU1NJT05fQ09NTUFORD1gZWNobyAiJFNFU1NJT05fQ09NTUFORCIgfCBzZWQgLWUgJ3MvLXdp dGgtZGJ1cyQvLydgCi0rICAgICAgICBTRVNTSU9OX0NPTU1BTkQ9ImRidXMtbGF1bmNoIC0tZXhp dC13aXRoLXNlc3Npb24gJFNFU1NJT05fQ09NTUFORCIKLSsgICAgZmkKLSt9Ci0rCi0rCi0rY2hl Y2tfdHR5KCkKLSt7Ci0rICAgIFRUWT1gdHR5YAotKyAgICBpZiBlY2hvICRQUk9HTkFNRSB8IGdy ZXAgLXEgcnVubmVyIDsgdGhlbgotKyAgICAgICAgaWYgWyAkRU5BQkxFRF9TWVNURU1EIC1lcSAx IF0gJiYgWyAgJFNFU1NJT05fSVNfR05PTUUgLWVxIDEgXSA7IHRoZW4KLSsgICAgICAgICAgICBp ZiBlY2hvICIkVFRZIiB8IGdyZXAgLUUgJ3R0eXxjb25zb2xlJyA7IHRoZW4KLSsgICAgICAgICAg ICAgICBwcmludF9sb2cgLWUgIiR7UkVEfUZBSUwke05DfTogJHtSRUR9RVJST1Ike05DfTogQ2hh bmdpbmcgcnVubGV2ZWwgZG9lcyBub3Qgc3VwcG9ydCBjb25zb2xlLiBQbGVhc2UgbG9nIGludG8g dGhlIGhvc3Qgd2l0aCBzc2guIgotKyAgICAgICAgICAgICAgIGV4aXQgMQotKyAgICAgICAgICAg IGZpCi0rICAgICAgICBmaQotKyAgICAgICAgaWYgWyAkRU5BQkxFRF9TWVNURU1EIC1lcSAwIF0g OyB0aGVuCi0rICAgICAgICAgICAgaWYgZWNobyAiJFRUWSIgfCBncmVwIC1FICdwdHMnIDsgdGhl bgotKyAgICAgICAgICAgICAgIHByaW50X2xvZyAtZSAiUnVubmluZyBzZXNzaW9uIHdpdGggc3No LiBJdCBtaWdodCBiZSBnb29kIHRvIHVzZSBjb25zb2xlIGluc3RlYWQuIgotKyAgICAgICAgICAg IGZpCi0rICAgICAgICBmaQotKyAgICAgICAgU0VTU0lPTj1gcHMgLWVmIHwgZ3JlcCBzZXNzaW9u IHwgZ3JlcCAtdiBncmVwYAotKyAgICAgICAgaWYgWyB4IiRTRVNTSU9OIiAhPSB4IF0gOyB0aGVu Ci0rICAgICAgICAgICAgICAgcHJpbnRfbG9nIC1lICIke1JFRH1GQUlMJHtOQ306ICR7UkVEfUVS Uk9SJHtOQ306IFNlc3Npb24gaXMgcnVubmluZzogJFNFU1NJT04iCi0rICAgICAgICAgICAgICAg ZXhpdCAxCi0rICAgICAgICBmaQotKyAgICBmaQotK30KLSsKLSsKLStjaGVja19lbnYoKQotK3sK LSsgICAgaWYgdGVzdCAkRU5WX0NIRUNLIC1lcSAwIDsgdGhlbgotKyAgICAgICAgcmV0dXJuCi0r ICAgIGZpCi0rICAgIHdoaWxlIHJlYWQgY21kIDsgZG8KLSsgICAgICAgIGlmIHRlc3QgeCIkY21k IiA9IHggOyB0aGVuCi0rICAgICAgICAgICAgY29udGludWUKLSsgICAgICAgIGZpCi0rICAgICAg ICBpZiBlY2hvICIkY21kIiB8IGdyZXAgLXEgIl4jIjsgdGhlbgotKyAgICAgICAgICAgIGNvbnRp bnVlCi0rICAgICAgICBmaQotKyAgICAgICAgZWNobyAiIyAkY21kIiAyPj4kVEVTVF9MT0cgMT4+ JFRFU1RfTE9HCi0rICAgICAgICBldmFsICIkY21kIiAyPj4kVEVTVF9MT0cgMT4+JFRFU1RfTE9H Ci0rICAgIGRvbmUgPDwgRU9GX0VOVl9DT01NQU5EUwotK2BlY2hvICIkRU5WX0NPTU1BTkRTImAK LStFT0ZfRU5WX0NPTU1BTkRTCi0rfQotKwotKwotK3NhdmVfc2NyZWVuX3JlYWwoKQotK3sKLSsg ICAgU0NSRUVOX1BORz0iYGRhdGUgJyslWSVtJWQlSCVNJVMnYC5wbmciCi0rICAgIGdub21lLXNj cmVlbnNob3QgLS1maWxlPSRTQ1JFRU5fUE5HCi0rICAgIGlmIHRlc3QgeCIkU0NSRUVOX0xPRyIg PSB4U1RET1VUIDsgdGhlbgotKyAgICAgICAgYmFzZTY0ICRTQ1JFRU5fUE5HCi0rICAgICAgICB0 b3VjaCAvdmFyL3RtcC9TVERPVVQubG9nCi0rICAgIGVsc2UKLSsgICAgICAgIGJhc2U2NCAkU0NS RUVOX1BORyA+ICRTQ1JFRU5fTE9HCi0rICAgIGZpCi0rfQotKwotKwotK3NhdmVfc2NyZWVuKCkK LSt7Ci0rICAgIGlmIHRlc3QgeCIkU0NSRUVOX0xPRyIgPSB4IDsgdGhlbgotKyAgICAgICAgcmV0 dXJuCi0rICAgIGZpCi0rICAgIGlmIHRlc3QgeCIkU0NSRUVOX0xPRyIgPSB4U1RET1VUIDsgdGhl bgotKyAgICAgICAgaWYgdGVzdCAtZiAvdmFyL3RtcC9TVERPVVQubG9nIDsgdGhlbgotKyAgICAg ICAgICAgIHJtIC92YXIvdG1wL1NURE9VVC5sb2cKLSsgICAgICAgIGZpCi0rICAgIGVsc2UKLSsg ICAgICAgIGlmIHRlc3QgLWYgIiRTQ1JFRU5fTE9HIiA7IHRoZW4KLSsgICAgICAgICAgICBybSAi JFNDUkVFTl9MT0ciCi0rICAgICAgICBmaQotKyAgICBmaQotKyAgICBzYXZlX3NjcmVlbl9yZWFs ICYKLSsgICAgd2hpbGUgdGVzdCAxIDsgZG8KLSsgICAgICAgIGlmIHRlc3QgeCIkU0NSRUVOX0xP RyIgPSB4U1RET1VUIDsgdGhlbgotKyAgICAgICAgICAgIGlmIHRlc3QgLWYgL3Zhci90bXAvU1RE T1VULmxvZyA7IHRoZW4KLSsgICAgICAgICAgICAgICAgYnJlYWsKLSsgICAgICAgICAgICBmaQot KyAgICAgICAgZWxzZQotKyAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRTQ1JFRU5fTE9HIiA7IHRo ZW4KLSsgICAgICAgICAgICAgICAgYnJlYWsKLSsgICAgICAgICAgICBmaQotKyAgICAgICAgZmkK LSsgICAgICAgIHNsZWVwIDEKLSsgICAgZG9uZQotK30KLSsKLSsKLStjcmVhdGVfdGVzdF91c2Vy KCkKLSt7Ci0rICAgIGlmIGdyZXAgLXEgJFRFU1RfVVNFUiAvZXRjL3Bhc3N3ZDsgdGhlbgotKyAg ICAgICAgcmV0dXJuOwotKyAgICBmaQotKyAgICB1c2VyYWRkIC1kICRURVNUX1VTRVJfSE9NRSAt bSAtcyAvYmluL2Jhc2ggJFRFU1RfVVNFUgotKyAgICBwd2NvbnYKLSsgICAgcGFzc3dkIC1kICRU RVNUX1VTRVIKLSt9Ci0rCi0rCi0rY3JlYXRlX2F1dG9sb2dpbl9nZG0oKQotK3sKLSsgICAgaWYg dGVzdCAtZiAkR0RNX0NPTkYgJiYgZ3JlcCAtcSAkVEVTVF9VU0VSICRHRE1fQ09ORjsgdGhlbgot KyAgICAgICAgcmV0dXJuOwotKyAgICBmaQotKyAgICBjYXQgPiAkR0RNX0NPTkYgPDwgX0VPRl9H RE1fQ09ORgotK1tkYWVtb25dCi0rQXV0b21hdGljTG9naW5FbmFibGU9dHJ1ZQotK0F1dG9tYXRp Y0xvZ2luPSRURVNUX1VTRVIKLStfRU9GX0dETV9DT05GCi0rfQotKwotKwotK2NyZWF0ZV94ZGdf YXV0b3N0YXJ0KCkKLSt7Ci0rICAgIGlmIHRlc3QgLWYgIiRURVNUX1VTRVJfSE9NRS8uY29uZmln L2F1dG9zdGFydC8kQVVUT1NUQVJUX0RFU0tUT1BfRklMRSIgOyB0aGVuCi0rICAgICAgICByZXR1 cm4KLSsgICAgZmkKLSsgICAgaWYgdGVzdCAhIC1kICIkVEVTVF9VU0VSX0hPTUUiIDsgdGhlbgot KyAgICAgICAgcHJpbnRfbG9nIC1lICIke1JFRH1GQUlMJHtOQ306ICR7UkVEfUVSUk9SJHtOQ306 IE5vICRURVNUX1VTRVJfSE9NRSIKLSsgICAgICAgIGV4aXQgMQotKyAgICBmaQotKyAgICBkZXNr dG9wX2ZpbGU9IiRBVVRPU1RBUlRfREVTS1RPUF9ESVIvJEFVVE9TVEFSVF9ERVNLVE9QX0ZJTEUi Ci0rICAgIGlmIHRlc3QgISAtZiAkZGVza3RvcF9maWxlIDsgdGhlbgotKyAgICAgICAgcHJpbnRf bG9nIC1lICIke1JFRH1GQUlMJHtOQ306ICR7UkVEfUVSUk9SJHtOQ306IE5vICRkZXNrdG9wX2Zp bGUiCi0rICAgICAgICBleGl0IDEKLSsgICAgZmkKLSsgICAgbWtkaXIgLXAgIiRURVNUX1VTRVJf SE9NRS8uY29uZmlnL2F1dG9zdGFydCIKLSsgICAgY3AgIiRkZXNrdG9wX2ZpbGUiICIkVEVTVF9V U0VSX0hPTUUvLmNvbmZpZy9hdXRvc3RhcnQiCi0rICAgIExJTkU9IkF1dG9zdGFydENvbmRpdGlv bj1pZi1leGlzdHMgJFRFU1RfVVNFUl9IT01FLy5jb25maWcvYXV0b3N0YXJ0LyRBVVRPU1RBUlRf REVTS1RPUF9GSUxFIgotKyAgICBlY2hvICIkTElORSIgPj4gIiRURVNUX1VTRVJfSE9NRS8uY29u ZmlnL2F1dG9zdGFydC8kQVVUT1NUQVJUX0RFU0tUT1BfRklMRSIKLSsgICAgY2hvd24gLVIgIiRU RVNUX1VTRVIiICIkVEVTVF9VU0VSX0hPTUUvLmNvbmZpZyIKLSt9Ci0rCi0rCi0rZGVsZXRlX3Rl c3RfdXNlcigpCi0rewotKyAgICBwcmludF9sb2cgIkRlbGV0aW5nICRURVNUX1VTRVIiCi0rICAg IHBraWxsIC11ICRURVNUX1VTRVIKLSsgICAgaWYgZ3JlcCAtcSAkVEVTVF9VU0VSIC9ldGMvcGFz c3dkOyB0aGVuCi0rICAgICAgICB1c2VyZGVsIC1yICRURVNUX1VTRVIKLSsgICAgZmkKLSsgICAg aWYgdGVzdCAtZiAkR0RNX0NPTkYgJiYgZ3JlcCAtcSAkVEVTVF9VU0VSICRHRE1fQ09ORjsgdGhl bgotKyAgICAgICAgcm0gJEdETV9DT05GCi0rICAgIGZpCi0rCi0rICAgIGlmIGVjaG8gIiRTRVNT SU9OX0NPTU1BTkQiIHwgZ3JlcCAtcSBnbm9tZS1zZXNzaW9uIDsgdGhlbgotKyAgICAgICAgU0VT U0lPTl9JU19HTk9NRT0xCi0rICAgIGVsc2UKLSsgICAgICAgIFNFU1NJT05fSVNfR05PTUU9MAot KyAgICBmaQotKwotKyAgICBMT0dJTl9VU0VSPSRVU0VSCi0rICAgIExPR0lOX0hPTUU9JEhPTUUK LSsgICAgaWYgWyAkRU5BQkxFRF9TWVNURU1EIC1lcSAxIF0gJiYgWyAgJFNFU1NJT05fSVNfR05P TUUgLWVxIDEgXSA7IHRoZW4KLSsgICAgICAgIExPR0lOX1VTRVI9JFRFU1RfVVNFUgotKyAgICAg ICAgTE9HSU5fSE9NRT0kVEVTVF9VU0VSX0hPTUUKLSsgICAgZmkKLSsKLSsgICAgcHJpbnRfbG9n ICJEZWxldGluZyAkTE9HSU5fVVNFUiBlbnZpcm9ubWVudHMiCi0rICAgIGlmIHRlc3QgLWYgIiRM T0dJTl9IT01FLy5jb25maWcvZ25vbWUtaW5pdGlhbC1zZXR1cC1kb25lIiA7IHRoZW4KLSsgICAg ICAgIHJtICIkTE9HSU5fSE9NRS8uY29uZmlnL2dub21lLWluaXRpYWwtc2V0dXAtZG9uZSIKLSsg ICAgZmkKLSsgICAgaWYgdGVzdCAtZiAiJExPR0lOX0hPTUUvLmNvbmZpZy91c2VyLWRpcnMubG9j YWxlIiA7IHRoZW4KLSsgICAgICAgIHJtICIkTE9HSU5fSE9NRS8uY29uZmlnL3VzZXItZGlycy5s b2NhbGUiCi0rICAgIGZpCi0rICAgIGlmIHRlc3QgLWYgL3Zhci9saWIvQWNjb3VudHNTZXJ2aWNl L3VzZXJzLyRMT0dJTl9VU0VSIDsgdGhlbgotKyAgICAgICAgcm0gL3Zhci9saWIvQWNjb3VudHNT ZXJ2aWNlL3VzZXJzLyRMT0dJTl9VU0VSCi0rICAgIGZpCi0rICAgIHN5bmMKLSt9Ci0rCi0rCi0r aW5pdF9zZXNzaW9uKCkKLSt7Ci0rICAgIGlmIFsgIiRSRVNVTFRfTE9HIiAhPSAiIiBdIDsgdGhl bgotKyAgICAgICAgaWYgWyAtZiAkUkVTVUxUX0xPRyBdIDsgdGhlbgotKyAgICAgICAgICAgIHJt ICRSRVNVTFRfTE9HCi0rICAgICAgICBmaQotKyAgICBmaQotKyAgICBlY2hvICIkVEVTVF9MT0ci IHwgZ3JlcCAnOnN0ZG91dCcgPiAvZGV2L251bGwKLSsgICAgSEFTX1NURE9VVD0kPwotKyAgICBp ZiBbICRIQVNfU1RET1VUIC1lcSAwIF0gOyB0aGVuCi0rICAgICAgICBURVNUX0xPRz1gZWNobyAi JFRFU1RfTE9HIiB8IHNlZCAtZSAnc3w6c3Rkb3V0fHwnYAotKyAgICAgICAgVEVTVF9MT0dfU1RE T1VUPTEKLSsgICAgZmkKLSsgICAgaWYgWyAiJFRFU1RfTE9HIiA9ICIiIF0gOyB0aGVuCi0rICAg ICAgICBwcmludF9sb2cgLWUgIiR7UkVEfUZBSUwke05DfTogJHtSRUR9RVJST1Ike05DfTogYSBs b2cgZmlsZSBpcyByZXF1aXJlZCB0byBnZXQgcmV0dXJuIHZhbHVlIHdpdGggJ3JlYWQnIGNvbW1h bmQiCi0rICAgICAgICBleGl0IDEKLSsgICAgZWxpZiBbIC1mICRURVNUX0xPRyBdIDsgdGhlbgot KyAgICAgICAgcm0gJFRFU1RfTE9HCi0rICAgIGZpCi0rCi0rICAgIGlmIGVjaG8gIiRTRVNTSU9O X0NPTU1BTkQiIHwgZ3JlcCAtcSBnbm9tZS1zZXNzaW9uIDsgdGhlbgotKyAgICAgICAgU0VTU0lP Tl9JU19HTk9NRT0xCi0rICAgIGVsc2UKLSsgICAgICAgIFNFU1NJT05fSVNfR05PTUU9MAotKyAg ICBmaQotKwotKyAgICBMT0dJTl9VU0VSPSRVU0VSCi0rICAgIExPR0lOX0hPTUU9JEhPTUUKLSsg ICAgY2hlY2tfdHR5Ci0rICAgIGlmIFsgJEVOQUJMRURfU1lTVEVNRCAtZXEgMSBdICYmIFsgICRT RVNTSU9OX0lTX0dOT01FIC1lcSAxIF0gOyB0aGVuCi0rICAgICAgICBTRVNTSU9OX0ZJTEUxPSIv dXNyL2xpYi9zeXN0ZW1kL3N5c3RlbS9nbm9tZS1oZWFkbGVzcy1zZXNzaW9uQC5zZXJ2aWNlIgot KyAgICAgICAgU0VTU0lPTl9GSUxFMj0iL3Vzci9saWIvc3lzdGVtZC9zeXN0ZW0vZ3JhcGhpY2Fs LnRhcmdldCIKLSsgICAgICAgIGlmIFsgJEhBVkVfR1JBUEhJQ1MgLWVxIDAgXSAmJiBbICEgLWYg IiRTRVNTSU9OX0ZJTEUxIiBdIDsgdGhlbgotKyAgICAgICAgICAgIHByaW50X2xvZyAtZSAiJHtS RUR9RkFJTCR7TkN9OiAke1JFRH1FUlJPUiR7TkN9OiBObyAkU0VTU0lPTl9GSUxFMTogWW91IG5l ZWQgdG8gaW5zdGFsbCAnZ2RtJyBhbmQgJ3N5c3RlbWQnIHBhY2thZ2UiCi0rICAgICAgICAgICAg ZXhpdCAxCi0rICAgICAgICBmaQotKyAgICAgICAgaWYgWyAkSEFWRV9HUkFQSElDUyAtZXEgMSBd IDsgdGhlbgotKyAgICAgICAgICAgIGlmIFsgISAtZiAiJFNFU1NJT05fRklMRTIiIF0gOyB0aGVu Ci0rICAgICAgICAgICAgICAgIHByaW50X2xvZyAtZSAiJHtSRUR9RkFJTCR7TkN9OiAke1JFRH1F UlJPUiR7TkN9OiBObyAkU0VTU0lPTl9GSUxFMjogWW91IG5lZWQgdG8gaW5zdGFsbCAnc3lzdGVt ZCcgcGFja2FnZSIKLSsgICAgICAgICAgICAgICAgZXhpdCAxCi0rICAgICAgICAgICAgZmkKLSsg ICAgICAgICAgICBpZiBbICEgLWYgL3Vzci9zYmluL2dkbSBdIDsgdGhlbgotKyAgICAgICAgICAg ICAgICBwcmludF9sb2cgLWUgIiR7UkVEfUZBSUwke05DfTogJHtSRUR9RVJST1Ike05DfTogTm8g L3Vzci9zYmluL2dkbTogQ3VycmVudGx5IG9ubHkgZ2RtIGlzIHN1cHBvcnRlZCBmb3IgYXV0byBs b2dpbi4iCi0rICAgICAgICAgICAgICAgIGV4aXQgMQotKyAgICAgICAgICAgIGZpCi0rICAgICAg ICBmaQotKyAgICAgICAgY3JlYXRlX3Rlc3RfdXNlcgotKyAgICAgICAgY3JlYXRlX2F1dG9sb2dp bl9nZG0KLSsgICAgICAgIGNyZWF0ZV94ZGdfYXV0b3N0YXJ0Ci0rICAgICAgICBMT0dJTl9VU0VS PSRURVNUX1VTRVIKLSsgICAgICAgIExPR0lOX0hPTUU9JFRFU1RfVVNFUl9IT01FCi0rICAgIGVs c2UKLSsgICAgICAgIHJtIC1mICRURVNUX1VTRVJfSE9NRS8uY29uZmlnL2F1dG9zdGFydC8kQVVU T1NUQVJUX0RFU0tUT1BfRklMRQotKyAgICBmaQotKwotKyAgICBpZiBbICEgLWYgJExPR0lOX0hP TUUvLmNvbmZpZy9nbm9tZS1pbml0aWFsLXNldHVwLWRvbmUgXSA7IHRoZW4KLSsgICAgICAgIG1r ZGlyIC1wICRMT0dJTl9IT01FLy5jb25maWcKLSsgICAgICAgIHRvdWNoICRMT0dJTl9IT01FLy5j b25maWcvZ25vbWUtaW5pdGlhbC1zZXR1cC1kb25lCi0rICAgICAgICBjaG93biAtUiAkTE9HSU5f VVNFUiAkTE9HSU5fSE9NRS8uY29uZmlnCi0rICAgIGZpCi0rICAgIElTX1NZU1RFTV9BQ0NPVU5U PWZhbHNlCi0rICAgIGlmIFsgIiRMT0dJTl9VU0VSIiA9ICJyb290IiBdIDsgdGhlbgotKyAgICAg ICAgICAgIElTX1NZU1RFTV9BQ0NPVU5UPXRydWUKLSsgICAgZmkKLSsgICAgaWYgdGVzdCB4IiRT RVNTSU9OX0xBTkciID0geCA7IHRoZW4KLSsgICAgICAgIFNFU1NJT05fTEFORz0kTEFORwotKyAg ICBmaQotKyAgICBpZiB0ZXN0IC1mIC92YXIvbGliL0FjY291bnRzU2VydmljZS91c2Vycy8kTE9H SU5fVVNFUjsgdGhlbgotKyAgICAgICAgc2VkIC1pIC1lICJzL1woTGFuZ3VhZ2U9XCkuKi9cMSRT RVNTSU9OX0xBTkcvIiBcCi0rICAgICAgICAgICAgICAgIC92YXIvbGliL0FjY291bnRzU2Vydmlj ZS91c2Vycy8kTE9HSU5fVVNFUgotKyAgICBlbHNlCi0rICAgICAgICBta2RpciAtcCAvdmFyL2xp Yi9BY2NvdW50c1NlcnZpY2UvdXNlcnMKLSsgICAgICAgIGNhdCA+IC92YXIvbGliL0FjY291bnRz U2VydmljZS91c2Vycy8kTE9HSU5fVVNFUiA8PCBfRU9GX0FTX0NPTkYKLStbVXNlcl0KLStMYW5n dWFnZT0kU0VTU0lPTl9MQU5HCi0rWFNlc3Npb249Z25vbWUKLStTeXN0ZW1BY2NvdW50PSRJU19T WVNURU1fQUNDT1VOVAotK19FT0ZfQVNfQ09ORgotKyAgICBmaQotKwotKyAgICAjIFByZXZlbnQg ZnJvbSBsYXVuY2hpbmcgYSBYREcgZGlhbG9nCi0rICAgIFhER19MT0NBTEVfRklMRT0iJExPR0lO X0hPTUUvLmNvbmZpZy91c2VyLWRpcnMubG9jYWxlIgotKyAgICBpZiBbIC1mICRYREdfTE9DQUxF X0ZJTEUgXSA7IHRoZW4KLSsgICAgICAgIFhER19MQU5HX09SSUc9YGNhdCAkWERHX0xPQ0FMRV9G SUxFYAotKyAgICAgICAgWERHX0xBTkdfTkVXPWBlY2hvICRTRVNTSU9OX0xBTkcgfCBzZWQgLWUg J3MvXCguKlwpXC4uKi9cMS8nYAotKyAgICAgICAgaWYgWyAiJFhER19MQU5HX09SSUciICE9ICIk WERHX0xBTkdfTkVXIiBdIDsgdGhlbgotKyAgICAgICAgICAgIGVjaG8gIiMgT3ZlcnJpZGluZyBY REcgbG9jYWxlICRYREdfTEFOR19PUklHIHdpdGggJFhER19MQU5HX05FVyIKLSsgICAgICAgICAg ICBlY2hvICIkWERHX0xBTkdfTkVXIiA+ICRYREdfTE9DQUxFX0ZJTEUKLSsgICAgICAgIGZpCi0r ICAgIGZpCi0rCi0rICAgIGlmIFsgJEVOQUJMRURfU1lTVEVNRCAtZXEgMSBdICYmIFsgICRTRVNT SU9OX0lTX0dOT01FIC1lcSAxIF0gOyB0aGVuCi0rICAgICAgICByZXR1cm4KLSsgICAgZmkKLSsg ICAgIyBgc3VgIGNvbW1hbmQgZG9lcyBub3QgcnVuIGxvZ2luY3RsCi0rICAgIGV4cG9ydCBYREdf U0VTU0lPTl9UWVBFPSd4MTEnCi0rICAgIGV4cG9ydCBYREdfU0VTU0lPTl9DTEFTUz11c2VyCi0r ICAgICMgYHN1YCBjb21tYW5kIGRvZXMgbm90IGdldCBmb2N1cyBpbiBldmVudHMgd2l0aG91dCB0 aGlzIHZhcmlhYmxlLgotKyAgICAjIE5lZWQgdG8gcmVzdGFydCBzc2hkIGFmdGVyIHNldCAiUGVy bWl0Um9vdExvZ2luIHllcyIgaW4gc3NoZF9jb25maWcKLSsgICAgaWYgWyAieCRYREdfUlVOVElN RV9ESVIiID0geCBdIDsgdGhlbgotKyAgICAgICAgZXhwb3J0IFhER19SVU5USU1FX0RJUj0iL3J1 bi91c2VyLyRVSUQiCi0rICAgICAgICBpc19yb290X2xvZ2luPWBncmVwICJeUGVybWl0Um9vdExv Z2luIiAvZXRjL3NzaC9zc2hkX2NvbmZpZyB8IGdyZXAgeWVzYAotKyAgICAgICAgaWYgWyAieCRB TlNJQkxFIiAhPSB4IF0gJiYgWyAieCRpc19yb290X2xvZ2luIiA9IHggXSA7IHRoZW4KLSsgICAg ICAgICAgICBwcmludF9sb2cgLWUgIiR7UkVEfUZBSUwke05DfTogTm8gcGVybWlzc2lvbiB0byBn ZXQgZm9jdXMtaW4gZXZlbnRzIGluIEd0a1dpbmRvdyB3aXRoIGFuc2libGUiCi0rICAgICAgICAg ICAgZWNobyAic3UgY29tbWFuZCBkb2VzIG5vdCBjb25maWd1cmUgbmVjZXNzYXJ5IGxvZ2luIGlu Zm8gIiAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICJ3aXRoIHN5c3RlbWQgYW5kIEd0a1dp bmRvdyBjYW5ub3QgcmVjZWl2ZSBmb2N1cy1ldmVudHMgIiAgICAgXAotKyAgICAgICAgICAgICAg ICAgIndoZW4gaWJ1cy1kZXNrdG9wLXRlc3RpbmctcnVubmVyIGlzIGV4ZWN1dGVkIGJ5ICIgICAg ICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAiYW5zaWJsZS1wbGF5Ym9vay4iID4+ICRURVNU X0xPRwotKyAgICAgICAgICAgIGVjaG8gIkVuYWJsaW5nIHJvb3QgbG9naW4gdmlhIHNzaGQsIHJl c3RhcnRpbmcgc3NoZCwgc2V0ICIgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAiWERHX1JV TlRJTUVfRElSIGNhbiByZXNvbHZlIHRoZSBwcm9ibGVtIHVuZGVyICIgICAgICAgICAgICAgIFwK LSsgICAgICAgICAgICAgICAgICJhbnNpYmxlLXBsYXlib29rLiIgPj4gJFRFU1RfTE9HCi0rICAg ICAgICAgICAgZXhpdCAxCi0rICAgICAgICBmaQotKyAgICBmaQotKyAgICAjICBEbyB3ZSBuZWVk IFhER19TRVNTSU9OX0lEIGFuZCBYREdfU0VBVD8KLSsgICAgI2V4cG9ydCBYREdfQ09ORklHX0RJ UlM9L2V0Yy94ZGcKLSsgICAgI2V4cG9ydCBYREdfU0VTU0lPTl9JRD0xMAotKyAgICAjZXhwb3J0 IFhER19TRVNTSU9OX0RFU0tUT1A9Z25vbWUKLSsgICAgI2V4cG9ydCBYREdfU0VBVD1zZWF0MAot K30KLSsKLSsKLStydW5fZGJ1c19kYWVtb24oKQotK3sKLSsgICAgaWYgWyAkRU5BQkxFRF9TWVNU RU1EIC1lcSAxIF0gJiYgWyAgJFNFU1NJT05fSVNfR05PTUUgLWVxIDEgXSA7IHRoZW4KLSsgICAg ICAgIHJldHVybgotKyAgICBmaQotKyAgICAjIFVzZSBkYnVzLWxhdW5jaCAtLWV4aXQtd2l0aC1z ZXNzaW9uIGxhdGVyIGluc3RlYWQgb2YgLS1zaC1zeW50YXgKLSsgICAgIyBHTk9NRSB1c2VzIGEg dW5peDphYnN0cmFjdCBhZGRyZXNzIGFuZCBpdCBlZmZlY3RzIGdzZXR0aW5ncyBzZXQgdmFsdWVz Ci0rICAgICMgaW4gZWFjaCB0ZXN0IGNhc2UuCi0rICAgICMgVE9ETzogU2hvdWxkIHdlIGNvbW1l bnQgb3V0IHRoaXMgbGluZT8KLSsgICAgZXhwb3J0IERCVVNfU0VTU0lPTl9CVVNfQUREUkVTUz0i dW5peDpwYXRoPS9ydW4vdXNlci8kVUlEL2J1cyIKLSt9Ci0rCi0rCi0raW5pdF9nbm9tZSgpCi0r ewotKyAgICBpZiB0ZXN0ICRTRVNTSU9OX0lTX0dOT01FIC1uZSAxIDsgdGhlbgotKyAgICAgICAg cHJpbnRfbG9nIC1lICIke1JFRH1GQUlMJHtOQ306ICR7UkVEfUVSUk9SJHtOQ306IFNob3VsZCBu b3QgYmUgY2FsbGVkIgotKyAgICAgICAgZXhpdCAxCi0rICAgIGZpCi0rICAgIExPR0lOX1VTRVI9 JFVTRVIKLSsgICAgaWYgdGVzdCAkRU5BQkxFRF9TWVNURU1EIC1lcSAxIDsgdGhlbgotKyAgICAg ICAgTE9HSU5fVVNFUj0kVEVTVF9VU0VSCi0rICAgIGZpCi0rICAgICMgZ3NldHRpbmdzIHNldCBj b21tYW5kIG5lZWRzIGRjb25mLXNlcnZpY2Ugd2l0aCB0aGUgc2FtZSAkRElTUExBWQotKyAgICBw a2lsbCBkY29uZi1zZXJ2aWNlCi0rICAgICMgR19NRVNTQUdFU19ERUJVRz1hbGwgb3IgR19NRVNT QUdFU19ERUJVRz1HTGliLUdJTy1ERUJVRyB3b3VsZCBhcHBlbmQKLSsgICAgIyBkZWJ1ZyBtZXNz YWdlcyB0byBnc2V0dGluZ3Mgb3V0cHV0IGFuZCBjb3VsZCBub3QgZ2V0IHRoZSByZXN1bHQgY29y cmVjdGx5LgotKyAgICBiYWNrdXBfR19NRVNTQUdFU19ERUJVRz0iJEdfTUVTU0FHRVNfREVCVUci Ci0rICAgIHVuc2V0IEdfTUVTU0FHRVNfREVCVUcKLSsgICAgIyBEaXNhYmxlIFRvdXIgZGlhbG9n IHRvIGdldCBmb2N1cwotKyAgICBHRVRfV0VMQ09NRV9ESUFMT0c9ImdzZXR0aW5ncyBnZXQgb3Jn Lmdub21lLnNoZWxsIHdlbGNvbWUtZGlhbG9nLWxhc3Qtc2hvd24tdmVyc2lvbiIKLSsgICAgaWYg dGVzdCAkTE9HSU5fVVNFUiA9ICRVU0VSIDsgdGhlbgotKyAgICAgICAgVj1gZGJ1cy1ydW4tc2Vz c2lvbiAkR0VUX1dFTENPTUVfRElBTE9HYAotKyAgICBlbHNlCi0rICAgICAgICBWPWBzdWRvIC11 ICRMT0dJTl9VU0VSIGRidXMtcnVuLXNlc3Npb24gJEdFVF9XRUxDT01FX0RJQUxPR2AKLSsgICAg ZmkKLSsgICAgaWYgWyB4IiRWIiA9IHgiJyciIF0gOyB0aGVuCi0rICAgICAgICBTRVRfV0VMQ09N RV9ESUFMT0c9ImdzZXR0aW5ncyBzZXQgb3JnLmdub21lLnNoZWxsIHdlbGNvbWUtZGlhbG9nLWxh c3Qtc2hvd24tdmVyc2lvbiAnMTAwJyIKLSsgICAgICAgIGlmIHRlc3QgJExPR0lOX1VTRVIgPSAk VVNFUiA7IHRoZW4KLSsgICAgICAgICAgICBkYnVzLXJ1bi1zZXNzaW9uICRTRVRfV0VMQ09NRV9E SUFMT0cKLSsgICAgICAgIGVsc2UKLSsgICAgICAgICAgICBzdWRvIC11ICRMT0dJTl9VU0VSIGRi dXMtcnVuLXNlc3Npb24gJFNFVF9XRUxDT01FX0RJQUxPRwotKyAgICAgICAgZmkKLSsgICAgZmkK LSsgICAgIyBnbm9tZS1zaGVsbCBub3cgc3RhcnRzIG92ZXJ2aWV3IG1vZGUgYnkgbG9naW4uCi0r ICAgICMgaHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vNDA5OS9uby1vdmVy dmlldy8KLSsgICAgTk9fU1lTX0RJUj0vdXNyL3NoYXJlL2dub21lLXNoZWxsL2V4dGVuc2lvbnMv bm8tb3ZlcnZpZXdAZnRoeAotKyAgICBpZiB0ZXN0ICRMT0dJTl9VU0VSID0gJFVTRVIgOyB0aGVu Ci0rICAgICAgICBOT19VU0VSX0RJUj0kSE9NRS8ubG9jYWwvc2hhcmUvZ25vbWUtc2hlbGwvZXh0 ZW5zaW9ucy9uby1vdmVydmlld0BmdGh4Ci0rICAgIGVsc2UKLSsgICAgICAgIE5PX1VTRVJfRElS PSRURVNUX1VTRVJfSE9NRS8ubG9jYWwvc2hhcmUvZ25vbWUtc2hlbGwvZXh0ZW5zaW9ucy9uby1v dmVydmlld0BmdGh4Ci0rICAgIGZpCi0rICAgIGlmIFsgISAtZCAkTk9fU1lTX0RJUiBdICYmIFsg ISAtZCAkTk9fVVNFUl9ESVIgXSA7IHRoZW4KLSsgICAgICAgIG1rZGlyIC1wICJgZGlybmFtZSAk Tk9fVVNFUl9ESVJgIgotKyAgICAgICAgY3AgLVIgIm5vLW92ZXJ2aWV3QGZ0aHgiICJgZGlybmFt ZSAkTk9fVVNFUl9ESVJgIgotKyAgICAgICAgaWYgdGVzdCAkTE9HSU5fVVNFUiA9ICRVU0VSIDsg dGhlbgotKyAgICAgICAgICAgIGNob3duIC1SICRMT0dJTl9VU0VSICRIT01FLy5sb2NhbAotKyAg ICAgICAgZWxzZQotKyAgICAgICAgICAgIGNob3duIC1SICRMT0dJTl9VU0VSICRURVNUX1VTRVJf SE9NRS8ubG9jYWwKLSsgICAgICAgIGZpCi0rICAgIGZpCi0rICAgIGlmIFsgJExPR0lOX1VTRVIg IT0gJFVTRVIgXSA7IHRoZW4KLSsgICAgICAgIFNIRUxMX1NFUlZJQ0VfRklMRT0ib3JnLmdub21l LlNoZWxsQHdheWxhbmQuc2VydmljZSIKLSsgICAgICAgIFNZU1RFTURfVVNFUl9ESVI9IiRURVNU X1VTRVJfSE9NRS8uY29uZmlnL3N5c3RlbWQvdXNlciIKLSsgICAgICAgIGlmIHRlc3QgJEhBVkVf R1JBUEhJQ1MgLW5lIDEgOyB0aGVuCi0rICAgICAgICAgICAgaWYgdGVzdCAhIC1mICIkU1lTVEVN RF9VU0VSX0RJUi8kU0hFTExfU0VSVklDRV9GSUxFIiA7IHRoZW4KLSsgICAgICAgICAgICAgICAg bWtkaXIgLXAgIiRTWVNURU1EX1VTRVJfRElSIgotKyAgICAgICAgICAgICAgICBwdXNoZCAiJFNZ U1RFTURfVVNFUl9ESVIiCi0rICAgICAgICAgICAgICAgIHNlZCAtZSAic3xeRXhlY1N0YXJ0PS4q fEV4ZWNTdGFydD0kR05PTUVfU0hFTExfV0FZTEFORF9DT01NQU5EfCIgXAotKyAgICAgICAgICAg ICAgICAgICAgJFNZU1RFTURfU1lTVEVNX0RJUi8kU0hFTExfU0VSVklDRV9GSUxFIFwKLSsgICAg ICAgICAgICAgICAgICAgID4gJFNIRUxMX1NFUlZJQ0VfRklMRQotKyAgICAgICAgICAgICAgICBk aWZmICRTWVNURU1EX1NZU1RFTV9ESVIvJFNIRUxMX1NFUlZJQ0VfRklMRSAkU0hFTExfU0VSVklD RV9GSUxFCi0rICAgICAgICAgICAgICAgIHBvcGQKLSsgICAgICAgICAgICAgICAgY2hvd24gLVIg JExPR0lOX1VTRVIgIiRURVNUX1VTRVJfSE9NRS8uY29uZmlnIgotKyAgICAgICAgICAgIGZpCi0r ICAgICAgICBlbHNlCi0rICAgICAgICAgICAgaWYgdGVzdCAtZiAiJFNZU1RFTURfVVNFUl9ESVIv JFNIRUxMX1NFUlZJQ0VfRklMRSIgOyB0aGVuCi0rICAgICAgICAgICAgICAgIHJtICIkU1lTVEVN RF9VU0VSX0RJUi8kU0hFTExfU0VSVklDRV9GSUxFIgotKyAgICAgICAgICAgIGZpCi0rICAgICAg ICBmaQotKyAgICBmaQotKyAgICBHRVRfRElTQUJMRV9VU0VSX0VYPSJnc2V0dGluZ3MgZ2V0IG9y Zy5nbm9tZS5zaGVsbCBkaXNhYmxlLXVzZXItZXh0ZW5zaW9ucyIKLSsgICAgaWYgdGVzdCAkTE9H SU5fVVNFUiA9ICRVU0VSIDsgdGhlbgotKyAgICAgICAgVj1gZGJ1cy1ydW4tc2Vzc2lvbiAkR0VU X0RJU0FCTEVfVVNFUl9FWGAKLSsgICAgZWxzZQotKyAgICAgICAgVj1gc3VkbyAtdSAkTE9HSU5f VVNFUiBkYnVzLXJ1bi1zZXNzaW9uICRHRVRfRElTQUJMRV9VU0VSX0VYYAotKyAgICBmaQotKyAg ICBpZiBbIHgiJFYiID0geCJ0cnVlIiBdIDsgdGhlbgotKyAgICAgICAgU0VUX0RJU0FCTEVfVVNF Ul9FWD0iZ3NldHRpbmdzIHNldCBvcmcuZ25vbWUuc2hlbGwgZGlzYWJsZS11c2VyLWV4dGVuc2lv bnMgZmFsc2UiCi0rICAgICAgICBpZiB0ZXN0ICRMT0dJTl9VU0VSID0gJFVTRVIgOyB0aGVuCi0r ICAgICAgICAgICAgZGJ1cy1ydW4tc2Vzc2lvbiAkU0VUX0RJU0FCTEVfVVNFUl9FWAotKyAgICAg ICAgZWxzZQotKyAgICAgICAgICAgIHN1ZG8gLXUgJExPR0lOX1VTRVIgZGJ1cy1ydW4tc2Vzc2lv biAkU0VUX0RJU0FCTEVfVVNFUl9FWAotKyAgICAgICAgZmkKLSsgICAgZmkKLSsgICAgR0VUX0VO QUJMRURfRVhTPSJnc2V0dGluZ3MgZ2V0IG9yZy5nbm9tZS5zaGVsbCBlbmFibGVkLWV4dGVuc2lv bnMiCi0rICAgIGlmIHRlc3QgJExPR0lOX1VTRVIgPSAkVVNFUiA7IHRoZW4KLSsgICAgICAgIFY9 YGRidXMtcnVuLXNlc3Npb24gJEdFVF9FTkFCTEVEX0VYU2AKLSsgICAgZWxzZQotKyAgICAgICAg Vj1gc3VkbyAtdSAkTE9HSU5fVVNFUiBkYnVzLXJ1bi1zZXNzaW9uICRHRVRfRU5BQkxFRF9FWFNg Ci0rICAgIGZpCi0rICAgIGVjaG8gIiRWIiB8IGdyZXAgIm5vLW92ZXJ2aWV3IiA+IC9kZXYvbnVs bAotKyAgICBWMj0kPwotKyAgICBpZiBbICRWMiAtbmUgMCBdIDsgdGhlbgotKyAgICAgICAgVjM9 YGVjaG8gIiRWIiB8IHNlZCAtZSAncy9AYXMgLy8nIC1lICdzL1xbLy8nIC1lICdzL1xdLy8nYAot KyAgICAgICAgaWYgWyB4IiRWMyIgPSB4IicnIiBdIHx8IFsgeCIkVjMiID0geCIiIF07IHRoZW4K LSsgICAgICAgICAgICBWND0iWyduby1vdmVydmlld0BmdGh4J10iCi0rICAgICAgICBlbHNlCi0r ICAgICAgICAgICAgVjQ9IlskVjMsJ25vLW92ZXJ2aWV3QGZ0aHgnXSIKLSsgICAgICAgIGZpCi0r ICAgICAgICBTRVRfRU5BQkxFRF9FWFM9ImdzZXR0aW5ncyBzZXQgb3JnLmdub21lLnNoZWxsIGVu YWJsZWQtZXh0ZW5zaW9ucyBcIiRWNFwiIgotKyAgICAgICAgaWYgdGVzdCAkTE9HSU5fVVNFUiA9 ICRVU0VSIDsgdGhlbgotKyAgICAgICAgICAgIGV2YWwgZGJ1cy1ydW4tc2Vzc2lvbiAkU0VUX0VO QUJMRURfRVhTCi0rICAgICAgICBlbHNlCi0rICAgICAgICAgICAgZXZhbCBzdWRvIC11ICRMT0dJ Tl9VU0VSIGRidXMtcnVuLXNlc3Npb24gJFNFVF9FTkFCTEVEX0VYUwotKyAgICAgICAgZmkKLSsg ICAgZmkKLSsgICAgIyBEaXNhYmxlIG5vdGlmeSBkaWFsb2cgd2hlbiB0aGUgZGlzayB1c2FnZSBp cyBsb3cuCi0rICAgIFNFVF9OT1RJRllfRElTSz0iZ3NldHRpbmdzIHNldCBvcmcuZ25vbWUuc2V0 dGluZ3MtZGFlbW9uLnBsdWdpbnMuaG91c2VrZWVwaW5nIGZyZWUtc2l6ZS1nYi1uby1ub3RpZnkg MCIKLSsgICAgaWYgdGVzdCAkTE9HSU5fVVNFUiA9ICRVU0VSIDsgdGhlbgotKyAgICAgICAgICAg IGV2YWwgZGJ1cy1ydW4tc2Vzc2lvbiAkU0VUX05PVElGWV9ESVNLCi0rICAgIGVsc2UKLSsgICAg ICAgICAgICBldmFsIHN1ZG8gLXUgJExPR0lOX1VTRVIgZGJ1cy1ydW4tc2Vzc2lvbiAkU0VUX05P VElGWV9ESVNLCi0rICAgIGZpCi0rICAgIGlmIFsgeCIkYmFja3VwX0dfTUVTU0FHRVNfREVCVUci ICE9IHggXSA7IHRoZW4KLSsgICAgICAgIGV4cG9ydCBHX01FU1NBR0VTX0RFQlVHPSIkYmFja3Vw X0dfTUVTU0FHRVNfREVCVUciCi0rICAgIGZpCi0rfQotKwotKwotK29wZXJhdGVfZGVza3RvcF93 aXRoX3N5c3RlbWQoKQotK3sKLSsgICAgU0VTU0lPTj1nbm9tZS1oZWFkbGVzcy1zZXNzaW9uCi0r ICAgIENPTU1BTkQ9IiQxIgotKwotKyAgICAjaWYgdGVzdCAkSEFWRV9HUkFQSElDUyAtZXEgMSA7 IHRoZW4KLSsgICAgICAgIGNhc2UgIiRDT01NQU5EIiBpbgotKyAgICAgICAgInN0YXJ0Iikgc3lz dGVtY3RsIGlzb2xhdGUgZ3JhcGhpY2FsLnRhcmdldAotKyAgICAgICAgICAgICAgICAgZWNobyAi IgotKyAgICAgICAgICAgICAgICAgOzsKLSsgICAgICAgICJzdG9wIikgIGluaXQgMzs7Ci0rICAg ICAgICAiIikgICAgICBwcmludF9sb2cgLWUgIiR7UkVEfUZBSUwke05DfTogJHtSRUR9RVJST1Ik e05DfTogV3JvbmcgY29tbWFuZCAkQ09NTUFORCIKLSsgICAgICAgICAgICAgICAgIGV4aXQgMTs7 Ci0rICAgICAgICBlc2FjCi0rICAgICNlbHNlCi0rICAgICMgICAgc2V0ZW5mb3JjZSAwCi0rICAg ICMgICAgc3lzdGVtY3RsICRDT01NQU5EICR7U0VTU0lPTn1AJHtURVNUX1VTRVJ9Ci0rICAgICNm aQotKyAgICBjYXNlICIkQ09NTUFORCIgaW4KLSsgICAgInN0YXJ0Iikgc2xlZXAgMzA7OwotKyAg ICAiIikgOzsKLSsgICAgZXNhYwotKyAgICAjaWYgdGVzdCAkSEFWRV9HUkFQSElDUyAtZXEgMSA7 IHRoZW4KLSsgICAgICAgIHN5c3RlbWN0bCBzdGF0dXMgLS1uby1wYWdlciBncmFwaGljYWwudGFy Z2V0Ci0rICAgICNlbHNlCi0rICAgICMgICAgc3lzdGVtY3RsIHN0YXR1cyAtLW5vLXBhZ2VyICR7 U0VTU0lPTn1AJHtURVNUX1VTRVJ9Ci0rICAgICNmaQotKyAgICBwcyAtZWYgfCBncmVwIFgKLSsg ICAgcHMgLWVmIHwgZ3JlcCBzZXNzaW9uCi0rICAgIHBzIC1lZiB8IGdyZXAgaWJ1cwotK30KLSsK LSsKLStydW5fc2Vzc2lvbigpCi0rewotKyAgICBpZiBbICRFTkFCTEVEX1NZU1RFTUQgLWVxIDEg XSAmJiBbICAkU0VTU0lPTl9JU19HTk9NRSAtZXEgMSBdIDsgdGhlbgotKyAgICAgICAgaW5pdF9n bm9tZQotKyAgICAgICAgb3BlcmF0ZV9kZXNrdG9wX3dpdGhfc3lzdGVtZCAic3RhcnQiCi0rICAg ICAgICByZXR1cm4KLSsgICAgZmkKLSsgICAgZXhwb3J0IERJU1BMQVk9Ojk5LjAKLSsgICAgaWYg dGVzdCAkSEFWRV9HUkFQSElDUyAtZXEgMSA7IHRoZW4KLSsgICAgICAgIC91c3IvbGliZXhlYy9Y b3JnLndyYXAgLW5vcmVzZXQgK2V4dGVuc2lvbiBHTFggK2V4dGVuc2lvbiBSQU5EUiArZXh0ZW5z aW9uIFJFTkRFUiAtbG9nZmlsZSAuL3hvcmcubG9nIC1jb25maWcgLi94b3JnLmNvbmYgLWNvbmZp Z2RpciAuICRESVNQTEFZICYKLSsgICAgZWxzZQotKyAgICAgICAgL3Vzci9iaW4vWHZmYiAkRElT UExBWSAtbm9yZXNldCArZXh0ZW5zaW9uIEdMWCArZXh0ZW5zaW9uIFJBTkRSICtleHRlbnNpb24g UkVOREVSIC1zY3JlZW4gMCAxMjgweDEwMjR4MjQgJgotKyAgICBmaQotKyAgICBQSURfWE9SRz0k IQotKyAgICBzbGVlcCAxCi0rICAgICMgaW5pdF9nbm9tZSBuZWVkIHRvIGJlIGNhbGxlZCB3aXRo ICRESVNQTEFZIGJlZm9yZSBnbm9tZS1zZXNzaW9uIGlzIGNhbGxlZAotKyAgICBpZiBbICAkU0VT U0lPTl9JU19HTk9NRSAtZXEgMSBdIDsgdGhlbgotKyAgICAgICAgaW5pdF9nbm9tZQotKyAgICBm aQotKyAgICBlY2hvICJSdW5uaW5nICRTRVNTSU9OX0NPTU1BTkQgd2l0aCAkVVNFUiBhbmQgTEFO Rz0kU0VTU0lPTl9MQU5HIGluIGB0dHlgIgotKyAgICBpZiB0ZXN0IHgiJFNFU1NJT05fTEFORyIg PSB4IDsgdGhlbgotKyAgICAgICAgJFNFU1NJT05fQ09NTUFORCAmCi0rICAgIGVsc2UKLSsgICAg ICAgIGVudiBMQU5HPSRTRVNTSU9OX0xBTkcgJFNFU1NJT05fQ09NTUFORCAmCi0rICAgIGZpCi0r ICAgIFBJRF9HTk9NRV9TRVNTSU9OPSQhCi0rICAgIHNsZWVwIDMwCi0rCi0rICAgIElCVVNfQVJH Uz0iLS12ZXJib3NlIC0tcGFuZWwgZGlzYWJsZSIKLSsgICAgIyBnbm9tZS1zaGVsbCA0MiBjaGVj a3MgaWYgb3JnLmZyZWVkZXNrdG9wLklCdXMuc2Vzc2lvbi5HTk9NRS5zZXJ2aWNlCi0rICAgICMg c3lzdGVtZCBmaWxlIGlzIGF2YWlsYWJsZSB3aXRoIG9yZy5mcmVlZGVza3RvcC5zeXN0ZW1kMS5N YW5hZ2VyLkdldFVuaXQKLSsgICAgIyBELUJ1cyBtZXRob2QsIHdoaWNoIGlzIHByb3ZpZGVkIGJ5 IElCdXMgMS41LjI2LCBhbmQgaWYgdGhlIGZpbGUKLSsgICAgIyBpcyBhdmFpbGFibGUsIGdub21l LXNoZWxsIG5vIGxvbmdlciBsYXVuY2ggaWJ1cy1kYWVtb24KLSsgICAgIyBiZWNhdXNlIGdub21l LXNoZWxsIGFzc3VtZXMgZ25vbWUtc2Vzc2lvbiB3b3VsZCBsYXVuY2ggaWJ1cy1kYWVtb24KLSsg ICAgIyB3aXRoIG9yZy5mcmVlZGVza3RvcC5zeXN0ZW1kMS5NYW5hZ2VyLlN0YXJ0VW5pdCBELUJ1 cyBtZXRob2QuCi0rICAgICMgQnV0IGFjdHVhbGx5IGdub21lLXNlc3Npb24gZmFpbGVkIHRvIGxh dW5jaCBpYnVzLWRhZW1vbgotKyAgICAjIGJlY2F1c2UgdGhlIElCdXMgc3lzdGVtZCBmaWxlIGRl cGVuZHMgb24gZ25vbWUtc2Vzc2lvbi50YXJnZXQKLSsgICAgIyBidXQgdGhpcyBDSSBsYXVuY2hl cyBnbm9tZS1zZXNzaW9uIGRpcmVjdGx5LgotKyAgICAjCi0rICAgICMgU28gaWJ1cy1kYW1lb24g aXMgbm93IGFsd2F5cyBjYWxsZWQgaGVyZSBhZnRlciBnbm9tZS1zaGVsbCBmYWlscyB0bwotKyAg ICAjIGxhdW5jaCBpYnVzLWRhZW1vbi4KLSsgICAgIyBJdCBtYXkgYmUgYmV0dGVyIHRoaXMgQ0kg bGF1bmNoZXMgR0RNIGF1dG9sb2dpbiB0byBydW4gZ25vbWUtc2Vzc2lvbgotKyAgICAjIHdpdGgg Z25vbWUtc2Vzc2lvbi50YXJnZXQgc3lzdGVtZCBmaWxlLgotKyAgICAjIEJ1dCBgc3lzdGVtY3Rs IHN0YXJ0IGdkbWAgdGVybWluYXRlcyB0aGUgcGFyZW50IHNjcmlwdCBmb3JjaWJseQotKyAgICAj IGFuZCB0aGUgc2NyaXB0IGNhbm5vdCBnZXQgdGhlIENJIHJlc3VsdC4KLSsgICAgaWYgdGVzdCAk VkVSQk9TRSAtZXEgMSA7IHRoZW4KLSsgICAgICAgIGlidXMtZGFlbW9uICRJQlVTX0FSR1MgJgot KyAgICBlbHNlCi0rICAgICAgICBpYnVzLWRhZW1vbiAkSUJVU19BUkdTIC0tZGFlbW9uaXplCi0r ICAgIGZpCi0rICAgIHNsZWVwIDMKLSsgICAgcHMgLWVmIHwgZ3JlcCBpYnVzCi0rfQotKwotKwot K2NvdW50X2Nhc2VfcmVzdWx0KCkKLSt7Ci0rICAgIHJldHZhbD0kMQotKyAgICBwYXNzPSQyCi0r ICAgIGZhaWw9JDMKLSsKLSsgICAgaWYgdGVzdCAkcmV0dmFsIC1lcSAgMCA7IHRoZW4KLSsgICAg ICAgIHBhc3M9YGV4cHIgJHBhc3MgKyAxYAotKyAgICBlbHNlCi0rICAgICAgICBmYWlsPWBleHBy ICRmYWlsICsgMWAKLSsgICAgZmkKLSsgICAgZWNobyAkcGFzcyAkZmFpbAotK30KLSsKLSsKLStl Y2hvX2Nhc2VfcmVzdWx0KCkKLSt7Ci0rICAgIHJldHZhbD0kMQotKyAgICB0c3Q9JDIKLSsgICAg c3VidHN0PSR7MzotJyd9Ci0rCi0rICAgIGlmIHRlc3QgJHJldHZhbCAtZXEgIDAgOyB0aGVuCi0r ICAgICAgICBlY2hvICJQQVNTOiAkdHN0ICRzdWJ0c3QiID4+JFRFU1RfTE9HCi0rICAgIGVsc2UK LSsgICAgICAgIGVjaG8gIkZBSUw6ICR0c3QgJHN1YnRzdCIgPj4kVEVTVF9MT0cKLSsgICAgZmkK LSt9Ci0rCi0rCi0rd2FpdF9mb3Jfc3lzdGVtZF9hdXRvc3RhcnQoKQotK3sKLSsgICAgUFNfSUJV Uz0icHMgLWVmIHwgZ3JlcCBpYnVzLWRlc2t0b3AtdGVzdGluZyB8IGdyZXAgYXV0b3N0YXJ0IHwg Z3JlcCAtdiBncmVwIgotKyAgICBpPTAKLSsgICAgd2hpbGUgdGVzdCAxIDsgZG8KLSsgICAgICAg IFI9YGV2YWwgIiRQU19JQlVTImAKLSsgICAgICAgIGlmIHRlc3QgeCIkUiIgIT0geCA7IHRoZW4K LSsgICAgICAgICAgICBicmVhazsKLSsgICAgICAgIGZpCi0rICAgICAgICBpZiB0ZXN0ICRpIC1n ZSAxMiA7IHRoZW4KLSsgICAgICAgICAgICBwcmludF9sb2cgLWUgIiR7UkVEfUZBSUwke05DfTog VGltZW91dCB0byBydW4gaWJ1cy1kZXNrdG9wLXRlc3RpbmctYXV0b3N0YXJ0IgotKyAgICAgICAg ICAgIHJldHVybgotKyAgICAgICAgZmkKLSsgICAgICAgIGk9YGV4cHIgJGkgKyAxYAotKyAgICAg ICAgc2xlZXAgNQotKyAgICBkb25lCi0rICAgIHByaW50X2xvZyAtZSAiU3RhcnQgaWJ1cy1kZXNr dG9wLXRlc3RpbmctYXV0b3N0YXJ0IgotKyAgICBpPTAKLSsgICAgd2hpbGUgdGVzdCAxIDsgZG8K LSsgICAgICAgIFI9YGV2YWwgIiRQU19JQlVTImAKLSsgICAgICAgIGlmIHRlc3QgeCIkUiIgPSB4 IDsgdGhlbgotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgZmkKLSsgICAgICAgIGlmIHRl c3QgJGkgLWdlICRUSU1FT1VUIDsgdGhlbgotKyAgICAgICAgICAgIHByaW50X2xvZyAtZSAiJHtS RUR9RkFJTCR7TkN9OiBUaW1lb3V0IHRvIGV4aXQgaWJ1cy1kZXNrdG9wLXRlc3RpbmctYXV0b3N0 YXJ0IgotKyAgICAgICAgICAgIHJldHVybgotKyAgICAgICAgZmkKLSsgICAgICAgIGk9YGV4cHIg JGkgKyAxYAotKyAgICAgICAgc2xlZXAgNQotKyAgICBkb25lCi0rICAgIHByaW50X2xvZyAtZSAi RXhpdCBpYnVzLWRlc2t0b3AtdGVzdGluZy1hdXRvc3RhcnQiCi0rfQotKwotK3J1bl9kaXJlY3Rf dGVzdF9jYXNlcygpCi0rewotKyAgICBwYXNzPTAKLSsgICAgZmFpbD0wCi0rICAgIGZvciB0c3Qg aW4gJFRFU1RTOyBkbwotKyAgICAgICAgRU5WUz0KLSsgICAgICAgIGlmIHRlc3QgLWYgJFNSQ0RJ Ui8ke3RzdH0uZW52IDsgdGhlbgotKyAgICAgICAgICAgIEVOVlM9ImBjYXQgJFNSQ0RJUi8ke3Rz dH0uZW52YCIKLSsgICAgICAgIGZpCi0rICAgICAgICBpZiB0ZXN0IHgiJEVOVlMiID0geCA7IHRo ZW4KLSsgICAgICAgICAgICAkQlVJTERESVIvJHRzdCAkU1JDRElSIDI+PiRURVNUX0xPRyAxPj4k VEVTVF9MT0cKLSsgICAgICAgICAgICByZXR2YWw9JD8KLSsgICAgICAgICAgICByZWFkIHBhc3Mg ZmFpbCA8PCBFT0ZfQ09VTlQKLSsgICAgICAgICAgICBgY291bnRfY2FzZV9yZXN1bHQgJHJldHZh bCAkcGFzcyAkZmFpbGAKLStFT0ZfQ09VTlQKLSsgICAgICAgICAgICBlY2hvX2Nhc2VfcmVzdWx0 ICRyZXR2YWwgJHRzdAotKyAgICAgICAgICAgIENBQ0hFX0ZJTEVTPWBscyAqLmNhY2hlYAotKyAg ICAgICAgICAgIGlmIFsgeCIkQ0FDSEVfRklMRVMiICE9IHggXSA7IHRoZW4KLSsgICAgICAgICAg ICAgICAgZWNobyAiIyBDbGVhbiAkQ0FDSEVfRklMRVMiID4+JFRFU1RfTE9HCi0rICAgICAgICAg ICAgICAgIHJtICRDQUNIRV9GSUxFUwotKyAgICAgICAgICAgIGZpCi0rICAgICAgICBlbHNlCi0r ICAgICAgICAgICAgaT0xCi0rICAgICAgICAgICAgIyBEZWxldGVkIGZvciB2YXIgaW4gIiRFTlZT IiBiZWNhdXNlIElGUz0kJ1xuJyBpcyBub3Qgc3VwcG9ydGVkCi0rICAgICAgICAgICAgIyBpbiBQ T1NJWCBzaAotKyAgICAgICAgICAgIHdoaWxlIHJlYWQgZSA7IGRvCi0rICAgICAgICAgICAgICAg IGZpcnN0PWBlY2hvICIkZSIgfCBncmVwICdeIydgCi0rICAgICAgICAgICAgICAgIGlmIHRlc3Qg eCIkZmlyc3QiID0geCIjIiA7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0r ICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgIGVjaG8gIiMgU3RhcnRpbmcgJGUg JEJVSUxERElSLyR0c3QgJFNSQ0RJUiIgPj4kVEVTVF9MT0cKLSsgICAgICAgICAgICAgICAgZW52 ICRlICRCVUlMRERJUi8kdHN0ICRTUkNESVIgMj4+JFRFU1RfTE9HIDE+PiRURVNUX0xPRwotKyAg ICAgICAgICAgICAgICByZXR2YWw9JD8KLSsgICAgICAgICAgICAgICAgZWNobyAiIyBGaW5pc2hl ZCAkZSAkQlVJTERESVIvJHRzdCAkU1JDRElSIHdpdGggJHJldHZhbCIgPj4kVEVTVF9MT0cKLSsg ICAgICAgICAgICAgICAgcmVhZCBwYXNzIGZhaWwgPDwgRU9GX0NPVU5UCi0rICAgICAgICAgICAg ICAgIGBjb3VudF9jYXNlX3Jlc3VsdCAkcmV0dmFsICRwYXNzICRmYWlsYAotK0VPRl9DT1VOVAot KyAgICAgICAgICAgICAgICBlY2hvX2Nhc2VfcmVzdWx0ICRyZXR2YWwgJHRzdCAkZQotKyAgICAg ICAgICAgICAgICBDQUNIRV9GSUxFUz1gbHMgKi5jYWNoZWAKLSsgICAgICAgICAgICAgICAgaWYg WyB4IiRDQUNIRV9GSUxFUyIgIT0geCBdIDsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgZWNo byAiIyBDbGVhbiAkQ0FDSEVfRklMRVMiID4+JFRFU1RfTE9HCi0rICAgICAgICAgICAgICAgICAg ICBybSAkQ0FDSEVfRklMRVMKLSsgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAg aT1gZXhwciAkaSArIDFgCi0rICAgICAgICAgICAgZG9uZSA8PCBFT0ZfRU5WUwotKyAgICAgICAg ICAgIGBlY2hvICIkRU5WUyJgCi0rRU9GX0VOVlMKLSsgICAgICAgIGZpCi0rICAgIGRvbmUKLSsg ICAgZWNobyAkcGFzcyAkZmFpbAotK30KLSsKLSsKLStydW5fZ25vbWVfZGVza3RvcF90ZXN0aW5n X3J1bm5lcigpCi0rewotKyAgICBwYXNzPTAKLSsgICAgZmFpbD0wCi0rICAgIGlmIFsgeCIkVEVT VFMiID0geCBdIDsgdGhlbgotKyAgICAgICAgVEVTVFM9J2lidXMnCi0rICAgIGZpCi0rICAgIGlm IGVjaG8gJFBST0dOQU1FIHwgZ3JlcCAtcSBhdXRvc3RhcnQgOyB0aGVuCi0rICAgICAgICBleHBv cnQgSUJVU19EQUVNT05fV0lUSF9TWVNURU1EPTEKLSsgICAgZmkKLSsgICAgZm9yIHRzdCBpbiAk VEVTVFM7IGRvCi0rICAgICAgICB0c3RfZGlyPSIkVEVTVF9DQVNFX0RJUi8kdHN0IgotKyAgICAg ICAgaWYgWyAhIC1kICIkdHN0X2RpciIgXSA7IHRoZW4KLSsgICAgICAgICAgICBwcmludF9sb2cg LWUgIiR7UkVEfUZBSUwke05DfTogTm90IGZvdW5kICV0c3RfZGlyIgotKyAgICAgICAgICAgIGZh aWw9MQotKyAgICAgICAgICAgIGNvbnRpbnVlCi0rICAgICAgICBmaQotKyAgICAgICAgZ25vbWUt ZGVza3RvcC10ZXN0aW5nLXJ1bm5lciAtLXRpbWVvdXQ9JFRJTUVPVVQgJHRzdCBcCi0rICAgICAg ICAgICAgICAgIDI+PiRURVNUX0xPRyAxPj4kVEVTVF9MT0cKLSsgICAgICAgIHJldHZhbD0kPwot KyAgICAgICAgcmVhZCBwYXNzIGZhaWwgPDwgRU9GCi0rICAgICAgICBgY291bnRfY2FzZV9yZXN1 bHQgJHJldHZhbCAkcGFzcyAkZmFpbGAKLStFT0YKLSsgICAgZG9uZQotKyAgICBjaGlsZF9wYXNz PWBncmVwICdeUEFTUzonICRURVNUX0xPRyB8IHdjIC1sYAotKyAgICBjaGlsZF9mYWlsPWBncmVw ICdeRkFJTDonICRURVNUX0xPRyB8IHdjIC1sYAotKyAgICBpZiBbICRjaGlsZF9wYXNzIC1uZSAw IF0gfHwgWyAkY2hpbGRfZmFpbCAtbmUgMCBdIDsgdGhlbgotKyAgICAgICAgcGFzcz0kY2hpbGRf cGFzcwotKyAgICAgICAgaWYgWyAkY2hpbGRfZmFpbCAtbmUgMCBdIDsgdGhlbgotKyAgICAgICAg ICAgIGZhaWw9YGV4cHIgJGNoaWxkX2ZhaWwgLyAyYAotKyAgICAgICAgZWxzZQotKyAgICAgICAg ICAgIGZhaWw9MAotKyAgICAgICAgZmkKLSsgICAgZmkKLSsgICAgZWNobyAkcGFzcyAkZmFpbAot K30KLSsKLSsKLStydW5fdGVzdF9zdWl0ZSgpCi0rewotKyAgICBwcmludF9sb2cgLWUgIlN0YXJ0 IHRlc3Qgc3VpdGUgYGRhdGUgJyslRiAlSDolTTolUzolTidgIgotKyAgICBpZiBlY2hvICRQUk9H TkFNRSB8IGdyZXAgLXEgcnVubmVyIDsgdGhlbgotKyAgICAgICAgaWYgWyAkRU5BQkxFRF9TWVNU RU1EIC1lcSAxIF0gJiYgWyAgJFNFU1NJT05fSVNfR05PTUUgLWVxIDEgXSA7IHRoZW4KLSsgICAg ICAgICAgICB3YWl0X2Zvcl9zeXN0ZW1kX2F1dG9zdGFydAotKyAgICAgICAgICAgIHJldHVybgot KyAgICAgICAgZmkKLSsgICAgICAgIGlmIHBzIC1lZiB8IGdyZXAgWCB8IGdyZXAgLXEgd2F5bGFu ZCA7IHRoZW4KLSsgICAgICAgICAgICAjIEV4cGVjdCBHVEtfSU1fTU9EVUxFPXdheWxhbmQgYnkg ZGVmYXVsdAotKyAgICAgICAgICAgIDoKLSsgICAgICAgIGVsc2UKLSsgICAgICAgICAgICBleHBv cnQgR1RLX0lNX01PRFVMRT1pYnVzCi0rICAgICAgICBmaQotKyAgICBlbHNlCi0rICAgICAgICBp ZiB0ZXN0IHgiJFhER19TRVNTSU9OX1RZUEUiID0geHdheWxhbmQgOyB0aGVuCi0rICAgICAgICAg ICAgOgotKyAgICAgICAgZWxzZQotKyAgICAgICAgICAgIGV4cG9ydCBHVEtfSU1fTU9EVUxFPWli dXMKLSsgICAgICAgIGZpCi0rICAgIGZpCi0rICAgIHBhc3M9MAotKyAgICBmYWlsPTAKLSsgICAg ZXhwb3J0IElCVVNfQ09NUE9TRV9DQUNIRV9ESVI9JFBXRAotKyAgICBpZiB0ZXN0IHgiJFRFU1RJ TkdfUlVOTkVSIiA9IHggOyB0aGVuCi0rICAgICAgICByZXR1cm4KLSsgICAgZmkKLSsgICAgY2Fz ZSAkVEVTVElOR19SVU5ORVIgaW4KLSsgICAgZGVmYXVsdCkKLSsgICAgICAgICMgR2V0IG9ubHkg dGhlIGxhc3QgdmFsdWUgd2l0aCBkby13aGlsZS4KLSsgICAgICAgIHJlYWQgcGFzcyBmYWlsIDw8 IEVPRl9SVU5ORVIKLSsgICAgICAgIGBydW5fZGlyZWN0X3Rlc3RfY2FzZXNgCi0rRU9GX1JVTk5F UgotKyAgICAgICAgOzsKLSsgICAgZ25vbWUpCi0rICAgICAgICByZWFkIHBhc3MgZmFpbCA8PCBF T0ZfUlVOTkVSCi0rICAgICAgICBgcnVuX2dub21lX2Rlc2t0b3BfdGVzdGluZ19ydW5uZXJgCi0r RU9GX1JVTk5FUgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICBlY2hvICIiCi0rICAgIHBy aW50X2xvZyAtZSAiRW5kIHRlc3Qgc3VpdGUgYGRhdGUgJyslRiAlSDolTTolUzolTidgIgotKyAg ICAjIEZlZG9yYSBDSSBhc3N1bWVzIHRoZSB0ZXN0IGlzIGZhaWxlZCBldmVuIGlmICRmYWlsIGlz IDAuCi0rICAgIGlmIFsgJHBhc3MgLW5lIDAgXSA7IHRoZW4KLSsgICAgICAgIHByaW50X2xvZyAt ZSAiJHtHUkVFTn1QQVNTJHtOQ306ICRwYXNzIgotKyAgICBmaQotKyAgICBpZiBbICRmYWlsIC1u ZSAwIF0gOyB0aGVuCi0rICAgICAgICBwcmludF9sb2cgLWUgIiR7UkVEfUZBSUwke05DfTogJGZh aWwiCi0rICAgIGZpCi0rfQotKwotKwotK2Zpbml0KCkKLSt7Ci0rICAgIGlmIHRlc3QgJFBJRF9Y T1JHIC1uZSAwIDsgdGhlbgotKyAgICAgICAgZWNobyAiIyBLaWxsaW5nIGxlZnQgZ25vbWUtc2Vz c2lvbiBhbmQgWG9yZyIKLSsgICAgICAgIGtpbGwgJFBJRF9HTk9NRV9TRVNTSU9OICRQSURfWE9S RwotKyAgICAgICAgaWJ1cyBleGl0Ci0rICAgICAgICBTVVNFUj1gZWNobyAiJFVTRVIiIHwgY3V0 IC1jIDEtN2AKLSsgICAgICAgIExFRlRfQ0FMRU5EQVI9YHBzIC1lZiB8IGdyZXAgZ25vbWUtc2hl bGwtY2FsZW5kYXItc2VydmVyIHwgZ3JlcCAkU1VTRVIgfCBncmVwIC12IGdyZXBgCi0rICAgICAg ICBpZiB0ZXN0IHgiJExFRlRfQ0FMRU5EQVIiICE9IHggOyB0aGVuCi0rICAgICAgICAgICAgZWNo byAiIyBLaWxsaW5nIGxlZnQgZ25vbWUtc2hlbGwtY2FsZW5kYXItc2VydmVyIgotKyAgICAgICAg ICAgIGVjaG8gIiRMRUZUX0NBTEVOREFSIgotKyAgICAgICAgICAgIGVjaG8gIiRMRUZUX0NBTEVO REFSIiB8IGF3ayAne3ByaW50ICQyfScgfCB4YXJncyBraWxsCi0rICAgICAgICBmaQotKyAgICBm aQotKyAgICBpZiBlY2hvICRQUk9HTkFNRSB8IGdyZXAgLXEgcnVubmVyIDsgdGhlbgotKyAgICAg ICAgaWYgWyAkRU5BQkxFRF9TWVNURU1EIC1lcSAxIF0gJiYgWyAgJFNFU1NJT05fSVNfR05PTUUg LWVxIDEgXSA7IHRoZW4KLSsgICAgICAgICAgICBvcGVyYXRlX2Rlc2t0b3Bfd2l0aF9zeXN0ZW1k ICJzdG9wIgotKyAgICAgICAgZmkKLSsgICAgZmkKLSsKLSsgICAgZWNobyAiIgotKyAgICBpZiB0 ZXN0IC1mICRURVNUX0xPRyA7IHRoZW4KLSsgICAgICAgIGlmIFsgJFRFU1RfTE9HX1NURE9VVCAt ZXEgMSBdIDsgdGhlbgotKyAgICAgICAgICAgIGNhdCAkVEVTVF9MT0cKLSsgICAgICAgIGVsc2UK LSsgICAgICAgICAgICBlY2hvICIjIFNlZSAkVEVTVF9MT0ciCi0rICAgICAgICBmaQotKyAgICBm aQotKyAgICBlY2hvICIjIEZpbmlzaGVkICRQUk9HTkFNRSB0ZXN0aW5nIgotK30KLWRpZmYgLS1n aXQgYS9zcmMvdGVzdHMvaWJ1cy1kZXNrdG9wLXRlc3RpbmctcnVubmVyLmluIGIvc3JjL3Rlc3Rz L2lidXMtZGVza3RvcC10ZXN0aW5nLXJ1bm5lci5pbgotaW5kZXggMWFjMmRmYzguLjFkODJiYzc2 IDEwMDc1NQotLS0tIGEvc3JjL3Rlc3RzL2lidXMtZGVza3RvcC10ZXN0aW5nLXJ1bm5lci5pbgot KysrIGIvc3JjL3Rlc3RzL2lidXMtZGVza3RvcC10ZXN0aW5nLXJ1bm5lci5pbgotQEAgLTQsNyAr NCw3IEBACi0gIwotICMgaWJ1cyAtIFRoZSBJbnB1dCBCdXMKLSAjCi0tIyBDb3B5cmlnaHQgKGMp IDIwMTgtMjAyMSBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSsj IENvcHlyaWdodCAoYykgMjAxOC0yMDI0IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFA Z21haWwuY29tPgotICMgQ29weXJpZ2h0IChjKSAyMDE4IFJlZCBIYXQsIEluYy4KLSAjCi0gIyBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQotQEAgLTIyLDU4ICsyMiwzOSBAQAotICMgNTEgRnJhbmtsaW4gU3RyZWV0LCBG aWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KLSAKLSAjIFRoaXMgdGVzdCBy dW5zIC91c3IvYmluL2lidXMtZGFlbW9uIGFmdGVyIGluc3RhbGwgaWJ1cwotLSMKLS0jICMgaW5p dCAzCi0tIyBMb2dpbiBhcyByb290Ci0tIyAjIC9yb290L2lidXMvdGVzdHMvdGVzdC1jb25zb2xl LnNoIC0tdGVzdHMgaWJ1cy1jb21wb3NlIFwKLS0jICAgLS1idWlsZGRpciAvcm9vdC9pYnVzL3Ny Yy90ZXN0cyAtLXNyY2RpciAvcm9vdC9pYnVzL3NyYy90ZXN0cwotLQotLSMgUE9TSVggc2ggaGFz IG5vICdlY2hvIC1lJwotLTogJHtFQ0hPOj0nL3Vzci9iaW4vZWNobyd9Ci0tIyBQT1NJWCBzaCBo YXMgJFVJRAotLSMgREFTSCBzYXZlcyB0aGUgZ3JhdmVzIGluICdgYCcgYXMgY2hhcmFjdGVycyBu b3QgdG8gYmUgZXh0cmFjdGVkCi0tOiAke1VJRDo9YGlkIC11YH0KLSAKLSAKLSBQUk9HTkFNRT1g YmFzZW5hbWUgJDBgCi0tVkVSU0lPTj0wLjMKLS1ESVNQTEFZPTo5OS4wCi0tQlVJTERESVI9Ii4i Ci0tU1JDRElSPSIuIgotK1RFU1RfQ0FTRV9ESVI9IkBJTlNUQUxMRURESVJAIgotK01PRFVMRV9T SD0naWJ1cy1kZXNrdG9wLXRlc3RpbmctbW9kdWxlJwotK01PRFVMRV9TSF9QQVRIPSJATElCRVhF Q0RJUkAvJE1PRFVMRV9TSCIKLStBVVRPU1RBUlRfREVTS1RPUF9ESVI9IkBEQVRBRElSQC9pYnVz L3Rlc3RzIgotIFRFU1RfTE9HPSJ0ZXN0LXN1aXRlLmxvZyIKLS1URVNUX0xPR19TVERPVVQ9MAot LVJFU1VMVF9MT0c9IiIKLS1TQ1JFRU5fTE9HPSIiCi0tSEFWRV9HUkFQSElDUz0xCi0tVkVSQk9T RT0wCi0tREVTS1RPUF9DT01NQU5EPSJkYnVzLWxhdW5jaCAtLWV4aXQtd2l0aC1zZXNzaW9uIGdu b21lLXNlc3Npb24iCi0tUElEX1hPUkc9MAotLVBJRF9HTk9NRV9TRVNTSU9OPTAKLSBURVNUSU5H X1JVTk5FUj0iZGVmYXVsdCIKLS1URVNUUz0iIgotLVRJTUVPVVQ9MzAwCi0tR1JFRU49J1wwMzNb MDszMm0nCi0tUkVEPSdcMDMzWzA7MzFtJwotLU5DPSdcMDMzWzBtJwotIAotIAotLXByaW50X2xv ZygpCi0tewotLSAgICBpZiBbIHgiJFJFU1VMVF9MT0ciICE9IHggXSA7IHRoZW4KLS0gICAgICAg ICMgYXZvaWQgJ2VjaG8gLWUnIGJlZm9yZSBjYWxsICdzZWQnLgotLSAgICAgICAgaWYgWyB4IiQx IiA9IHgnLWUnIF0gOyB0aGVuCi0tICAgICAgICAgICAgc2hpZnQKLS0gICAgICAgIGZpCi0tICAg ICAgICBOT19FU0NBUEU9YGVjaG8gIiRAIiB8IHNlZCAtZSAncy9cXFwwMzNcXFswOzMubS8vZycg LWUgJ3MvXFxcMDMzXFxbMG0vL2cnYAotLSAgICAgICAgJEVDSE8gJE5PX0VTQ0FQRSA+PiAkUkVT VUxUX0xPRwotLSAgICBlbHNlCi0tICAgICAgICAkRUNITyAiJEAiCi0tICAgIGZpCi0tfQotK2lm IHRlc3QgLWYgJE1PRFVMRV9TSF9QQVRIIDsgdGhlbgotKyAgLiAkTU9EVUxFX1NIX1BBVEgKLStl bGlmIHRlc3QgLWYgJChkaXJuYW1lICQwKS8kTU9EVUxFX1NIIDsgdGhlbgotKyAgLiAkKGRpcm5h bWUgJDApLyRNT0RVTEVfU0gKLStlbHNlCi0rICBlY2hvICJOb3QgZm91bmQgJE1PRFVMRV9TSCIK LSsgIGV4aXQgMQotK2ZpCi0gCi0gCi0gdXNhZ2UoKQotIHsKLSsgICAgY29tbWFuZD0iIgotKyAg ICBmb3IgZWxlbWVudCBpbiAkU0VTU0lPTl9DT01NQU5EOyBkbwotKyAgICAgICAgaWYgdGVzdCB4 IiRlbGVtZW50IiA9IHg7IHRoZW4KLSsgICAgICAgICAgICBjb250aW51ZQotKyAgICAgICAgZmkK LSsgICAgICAgIGlmIGVjaG8gIiRlbGVtZW50IiB8IGdyZXAgLXEgLUUgIl4tIiA7IHRoZW4KLSsg ICAgICAgICAgICBjb250aW51ZQotKyAgICAgICAgZmkKLSsgICAgICAgIGNvbW1hbmQ9IiRlbGVt ZW50IgotKyAgICBkb25lCi0gICAgICRFQ0hPIC1lIFwKLSAiVGhpcyB0ZXN0IHJ1bnMgL3Vzci9i aW4vaWJ1cy1kYWVtb24gYWZ0ZXIgaW5zdGFsbCBpYnVzXG4iICAgICAgICAgICAgICAgICAgICAg XAotICIkUFJPR05BTUUgW09QVElPTlPigKZdXG4iICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLUBAIC04Myw0MjkgKzY0LDM3IEBAIHVzYWdl KCkKLSAiLXYsIC0tdmVyc2lvbiAgICAgICAgICAgICAgICAgICAgU2hvdyB2ZXJzaW9uXG4iICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICItYiwgLS1idWlsZGRpcj1CVUlMRERJUiAg ICAgICAgICBTZXQgdGhlIEJVSUxERElSXG4iICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g Ii1zLCAtLXNyY2Rpcj1TT1VSQ0VESVIgICAgICAgICAgIFNldCB0aGUgU09VUkNFRElSXG4iICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLS0iLWMsIC0tbm8tZ3JhcGhpY3MgICAgICAgICAgICAg ICAgVXNlIFh2ZmIgaW5zdGVhZCBvZiBYb3JnXG4iICAgICAgICAgICAgICAgICAgXAotKyItYywg LS1uby1ncmFwaGljcyAgICAgICAgICAgICAgICBVc2UgWHZmYiBpbnN0ZWFkIG9mIFhvcmcgb3Ig V2F5bGFuZFxuIiAgICAgICBcCi0gIi1WLCAtLXZlcmJvc2UgICAgICAgICAgICAgICAgICAgIFZl cmJvc2UgbG9nIGZvciBpYnVzLWRhZW1vblxuIiAgICAgICAgICAgICAgIFwKLS0iLWQsIC0tZGVz a3RvcD1ERVNLVE9QICAgICAgICAgICAgUnVuIERFU1RLVE9QLiBUaGUgZGVmYXVsdCBpcyBnbm9t ZS1zZXNzaW9uLlxuIiBcCi0tIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1ZmZp eCAnLXdpdGgtZGJ1cycgY2FuIHJ1biBERVNLVE9QIHdpdGggZGJ1cyBzZXNzaW9uLiIgXAotLSIg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFLmcuIC0tZGVza3RvcD1tdXR0ZXItd2l0 aC1kYnVzIiAgICAgICAgICAgICBcCi0rIi1kLCAtLXNlc3Npb249U0VTU0lPTiAgICAgICAgICAg IFJ1biBTRVNTSU9OLiBUaGUgZGVmYXVsdCBpcyAke2NvbW1hbmR9LlxuIiAgIFwKLSsiICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VmZml4ICctd2l0aC1kYnVzJyBjYW4gcnVuIFNF U1NJT04gd2l0aCBkYnVzIHNlc3Npb24uXG4iIFwKLSsiICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRS5nLiAtLXNlc3Npb249JHtjb21tYW5kfS13aXRoLWRidXNcbiIgICAgICAgXAot KyItbCwgLS1sYW5nPUxBTkcgICAgICAgICAgICAgICAgICBSdW4gU0VTU0lPTiB3aXRoIExBTkdc biIgICAgICAgICAgICAgICAgICAgICBcCi0gIi10LCAtLXRlc3RzPVwiVEVTVFMuLi5cIiAgICAg ICAgICAgUnVuIFRFU1RTIHByb2dyYW1zIHdoaWNoIGlzIHNlcGFyYXRlZCBieSBzcGFjZVxuIiBc Ci0gIi1yLCAtLXJ1bm5lcj1SVU5ORVIgICAgICAgICAgICAgIFJ1biBURVNUUyBwcm9ncmFtcyB3 aXRoIGEgdGVzdCBSVU5ORVIuXG4iICAgIFwKLS0iICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUlVOTkRFUiA9IGdub21lIG9yIGRlZmF1bHQuXG4iICAgICAgICAgICAgICAgXAotLSIg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IGlzIGFuIGVtYmVkZGVkIHJ1 bm5lci5cbiIgICAgICAgICAgICBcCi0rIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFJVTk5ERVIgPSAnZ25vbWUnIG9yICdkZWZhdWx0Jy5cbiIgICAgICAgICAgIFwKLSsiICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmF1bHQnIGlzIGFuIGVtYmVkZGVkIHJ1bm5l ci5cbiIgICAgICAgICAgXAotKyItaSwgLS1uby1zeXN0ZW1kICAgICAgICAgICAgICAgICBSdW4g Z25vbWUtc2Vlc2lvbiBkaXJlY3RseSB3aXRob291dCBzeXN0ZW1kXG4iIFwKLSsiICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGxvZ2luIG1hbmFnZXIgZm9yIGxlZ2FjeSBHTk9N RSBhbmQgdGhpc1xuIiBcCi0rIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGUg ZG9lcyBub3Qgc3VwcG9ydCBXYXlsYW5kLlxuIiBcCi0gIi1ULCAtLXRpbWVvdXQ9VElNRU9VVCAg ICAgICAgICAgIFNldCB0aW1lb3V0IChkZWZhdWx0IFRJTUVPVVQgaXMgMzAwIHNlYykuXG4iIFwK LS0iLW8sIC0tb3V0cHV0PU9VVFBVVF9GSUxFICAgICAgICAgT1V0cHV0IHRoZSBsb2cgdG8gT1VU UFVUX0ZJTEVcbiIgICAgICAgICAgICAgXAotLSItTywgLS1yZXN1bHQ9UkVTVUxUX0ZJTEUgICAg ICAgICBPVXRwdXQgdGhlIHJlc3VsdCB0byBSRVNVTFRfRklMRVxuIiAgICAgICAgICBcCi0tIi1T LCAtLXNjcmVlbmR1bXA9RFVNUF9GSUxFICAgICAgIE9VdHB1dCB0aGUgc2NyZWVuIHRvIERVTVBf RklMRSAoJ1NURE9VVCcgY2FuIGJlIHN0ZG91dClcbiIgXAotKyItbywgLS1vdXRwdXQ9T1VUUFVU X0ZJTEUgICAgICAgICBPdXRwdXQgdGhlIGxvZyB0byBPVVRQVVRfRklMRVxuIiAgICAgICAgICAg ICBcCi0rIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgaXMgJFRFU1Rf TE9HXG4iICAgICAgICAgICAgICAgICAgICAgIFwKLSsiLU8sIC0tcmVzdWx0PVJFU1VMVF9GSUxF ICAgICAgICAgT3V0cHV0IHRoZSByZXN1bHQgdG8gUkVTVUxUX0ZJTEVcbiIgICAgICAgICAgXAot KyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IGlzIHN0ZG91dFxuIiAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0rIi1TLCAtLXNjcmVlbmR1bXA9RFVNUF9GSUxFICAg ICAgIE91dHB1dCB0aGUgc2NyZWVuIHRvIERVTVBfRklMRSAoJ1NURE9VVCcgY2FuIGJlIHN0ZG91 dClcbiIgXAotKyItRCwgLS1kZWxldGUtdGVzdHMgICAgICAgICAgICAgICBEZWxldGUgdGVzdCBl bnZpcm9tZW50cyBhbmQgdXNlciAkVEVTVF9VU0VSXG4iIFwKLSAiIgotIH0KLSAKLSAKLS1wYXJz ZV9hcmdzKCkKLS17Ci0tICAgICMgVGhpcyBpcyBHTlUgZ2V0b3B0LiAic3VkbyBwb3J0IGdldG9w dCIgaW4gQlNEPwotLSAgICBBUkdTPWBnZXRvcHQgLW8gaHZiOnM6Y1ZkOnQ6cjpUOm86TzpTOiAt LWxvbmcgXAotLSAgICAgICAgICBoZWxwLHZlcnNpb24sYnVpbGRkaXI6LHNyY2Rpcjosbm8tZ3Jh cGhpY3MsdmVyYm9zZSxkZXNrdG9wOix0ZXN0czoscnVubmVyOix0aW1lb3V0OixvdXRwdXQ6LHJl c3VsdDosc2NyZWVuZHVtcDpcCi0tICAgICAgICAtLSAiJEAiYDsKLS0gICAgZXZhbCBzZXQgLS0g IiRBUkdTIgotLSAgICB3aGlsZSBbIDEgXSA7IGRvCi0tICAgICAgICBjYXNlICIkMSIgaW4KLS0g ICAgICAgIC1oIHwgLS1oZWxwICkgICAgICAgIHVzYWdlOyBleGl0IDA7OwotLSAgICAgICAgLXYg fCAtLXZlcnNpb24gKSAgICAgJEVDSE8gLWUgIiRWRVJTSU9OIjsgZXhpdCAwOzsKLS0gICAgICAg IC1iIHwgLS1idWlsZGRpciApICAgIEJVSUxERElSPSIkMiI7IHNoaWZ0IDI7OwotLSAgICAgICAg LXMgfCAtLXNyY2RpciApICAgICAgU1JDRElSPSIkMiI7IHNoaWZ0IDI7OwotLSAgICAgICAgLWMg fCAtLW5vLWdyYXBoaWNzICkgSEFWRV9HUkFQSElDUz0wOyBzaGlmdDs7Ci0tICAgICAgICAtViB8 IC0tdmVyYm9zZSApICAgICBWRVJCT1NFPTE7IHNoaWZ0OzsKLS0gICAgICAgIC1kIHwgLS1kZXNr dG9wICkgICAgIERFU0tUT1BfQ09NTUFORD0iJDIiOyBzaGlmdCAyOzsKLS0gICAgICAgIC10IHwg LS10ZXN0cyApICAgICAgIFRFU1RTPSIkMiI7IHNoaWZ0IDI7OwotLSAgICAgICAgLXIgfCAtLXJ1 bm5lciApICAgICAgVEVTVElOR19SVU5ORVI9IiQyIjsgc2hpZnQgMjs7Ci0tICAgICAgICAtVCB8 IC0tdGltZW91dCApICAgICBUSU1FT1VUPSIkMiI7IHNoaWZ0IDI7OwotLSAgICAgICAgLW8gfCAt LW91dHB1dCApICAgICAgVEVTVF9MT0c9IiQyIjsgc2hpZnQgMjs7Ci0tICAgICAgICAtTyB8IC0t cmVzdWx0ICkgICAgICBSRVNVTFRfTE9HPSIkMiI7IHNoaWZ0IDI7OwotLSAgICAgICAgLVMgfCAt LXNjcmVlbmR1bXAgKSAgU0NSRUVOX0xPRz0iJDIiOyBzaGlmdCAyOzsKLS0gICAgICAgIC0tICkg ICAgICAgICAgICAgICAgIHNoaWZ0OyBicmVhazs7Ci0tICAgICAgICAqICkgICAgICAgICAgICAg ICAgICB1c2FnZTsgZXhpdCAxOzsKLS0gICAgICAgIGVzYWMKLS0gICAgZG9uZQotLSAgICBETD0n JCcKLS0gICAgZWNobyAiJERFU0tUT1BfQ09NTUFORCIgfCBncmVwICJcLXdpdGhcLWRidXMkREwi ID4gL2Rldi9udWxsCi0tICAgIEhBU19EQlVTX1NVRkZJWD0kPwotLSAgICBpZiBbICRIQVNfREJV U19TVUZGSVggLWVxIDAgXSA7IHRoZW4KLS0gICAgICAgIERFU0tUT1BfQ09NTUFORD1gZWNobyAi JERFU0tUT1BfQ09NTUFORCIgfCBzZWQgLWUgJ3MvLXdpdGgtZGJ1cyQvLydgCi0tICAgICAgICBE RVNLVE9QX0NPTU1BTkQ9ImRidXMtbGF1bmNoIC0tZXhpdC13aXRoLXNlc3Npb24gJERFU0tUT1Bf Q09NTUFORCIKLS0gICAgZmkKLS19Ci0tCi0tCi0taW5pdF9kZXNrdG9wKCkKLS17Ci0tICAgIGlm IFsgIiRSRVNVTFRfTE9HIiAhPSAiIiBdIDsgdGhlbgotLSAgICAgICAgaWYgWyAtZiAkUkVTVUxU X0xPRyBdIDsgdGhlbgotLSAgICAgICAgICAgIHJtICRSRVNVTFRfTE9HCi0tICAgICAgICBmaQot LSAgICBmaQotLSAgICBlY2hvICIkVEVTVF9MT0ciIHwgZ3JlcCAnOnN0ZG91dCcgPiAvZGV2L251 bGwKLS0gICAgSEFTX1NURE9VVD0kPwotLSAgICBpZiBbICRIQVNfU1RET1VUIC1lcSAwIF0gOyB0 aGVuCi0tICAgICAgICBURVNUX0xPRz1gZWNobyAiJFRFU1RfTE9HIiB8IHNlZCAtZSAnc3w6c3Rk b3V0fHwnYAotLSAgICAgICAgVEVTVF9MT0dfU1RET1VUPTEKLS0gICAgZmkKLS0gICAgaWYgWyAi JFRFU1RfTE9HIiA9ICIiIF0gOyB0aGVuCi0tICAgICAgICBwcmludF9sb2cgLWUgIiR7UkVEfUZB SUwke05DfTogJHtSRUR9RVJST1Ike05DfTogYSBsb2cgZmlsZSBpcyByZXF1aXJlZCB0byBnZXQg cmV0dXJuIHZhbHVlIHdpdGggJ3JlYWQnIGNvbW1hbmQiCi0tICAgICAgICBleGl0IDI1NQotLSAg ICBlbGlmIFsgLWYgJFRFU1RfTE9HIF0gOyB0aGVuCi0tICAgICAgICBybSAkVEVTVF9MT0cKLS0g ICAgZmkKLS0gICAgaWYgWyB4JEZPUkNFX1RFU1QgIT0geCBdIDsgdGhlbgotLSAgICAgICAgUlVO X0FSR1M9IiRSVU5fQVJHUyAtLWZvcmNlIgotLSAgICBmaQotLQotLSAgICBpZiBbICEgLWYgJEhP TUUvLmNvbmZpZy9nbm9tZS1pbml0aWFsLXNldHVwLWRvbmUgXSA7IHRoZW4KLS0gICAgICAgIElT X1NZU1RFTV9BQ0NPVU5UPWZhbHNlCi0tICAgICAgICBpZiBbICIkVVNFUiIgPSAicm9vdCIgXSA7 IHRoZW4KLS0gICAgICAgICAgICBJU19TWVNURU1fQUNDT1VOVD10cnVlCi0tICAgICAgICBmaQot LSAgICAgICAgaWYgdGVzdCAhIC1mIC92YXIvbGliL0FjY291bnRzU2VydmljZS91c2Vycy8kVVNF UiA7IHRoZW4KLS0gICAgICAgICAgICBta2RpciAtcCAvdmFyL2xpYi9BY2NvdW50c1NlcnZpY2Uv dXNlcnMKLS0gICAgICAgICAgICBjYXQgPj4gL3Zhci9saWIvQWNjb3VudHNTZXJ2aWNlL3VzZXJz LyRVU0VSIDw8IF9FT0YKLS1bVXNlcl0KLS1MYW5ndWFnZT1qYV9KUC5VVEYtOAotLVhTZXNzaW9u PWdub21lCi0tU3lzdGVtQWNjb3VudD0kSVNfU1lTVEVNX0FDQ09VTlQKLS1fRU9GCi0tICAgICAg ICBmaQotLSAgICAgICAgbWtkaXIgLXAgJEhPTUUvLmNvbmZpZwotLSAgICAgICAgdG91Y2ggJEhP TUUvLmNvbmZpZy9nbm9tZS1pbml0aWFsLXNldHVwLWRvbmUKLS0gICAgZmkKLS0KLS0gICAgIyBQ cmV2ZW50IGZyb20gbGF1bmNoaW5nIGEgWERHIGRpYWxvZwotLSAgICBYREdfTE9DQUxFX0ZJTEU9 IiRIT01FLy5jb25maWcvdXNlci1kaXJzLmxvY2FsZSIKLS0gICAgaWYgWyAtZiAkWERHX0xPQ0FM RV9GSUxFIF0gOyB0aGVuCi0tICAgICAgICBYREdfTEFOR19PUklHPWBjYXQgJFhER19MT0NBTEVf RklMRWAKLS0gICAgICAgIFhER19MQU5HX05FVz1gZWNobyAkTEFORyB8IHNlZCAtZSAncy9cKC4q XClcLi4qL1wxLydgCi0tICAgICAgICBpZiBbICIkWERHX0xBTkdfT1JJRyIgIT0gIiRYREdfTEFO R19ORVciIF0gOyB0aGVuCi0tICAgICAgICAgICAgZWNobyAiIyBPdmVycmlkaW5nIFhERyBsb2Nh bGUgJFhER19MQU5HX09SSUcgd2l0aCAkWERHX0xBTkdfTkVXIgotLSAgICAgICAgICAgIGVjaG8g IiRYREdfTEFOR19ORVciID4gJFhER19MT0NBTEVfRklMRQotLSAgICAgICAgZmkKLS0gICAgZmkK LS0gICAgIyBgc3VgIGNvbW1hbmQgZG9lcyBub3QgcnVuIGxvZ2luY3RsCi0tICAgIGV4cG9ydCBY REdfU0VTU0lPTl9UWVBFPSd4MTEnCi0tICAgIGV4cG9ydCBYREdfU0VTU0lPTl9DTEFTUz11c2Vy Ci0tICAgICMgYHN1YCBjb21tYW5kIGRvZXMgbm90IGdldCBmb2N1cyBpbiBldmVudHMgd2l0aG91 dCB0aGlzIHZhcmlhYmxlLgotLSAgICAjIE5lZWQgdG8gcmVzdGFydCBzc2hkIGFmdGVyIHNldCAi UGVybWl0Um9vdExvZ2luIHllcyIgaW4gc3NoZF9jb25maWcKLS0gICAgaWYgWyAieCRYREdfUlVO VElNRV9ESVIiID0geCBdIDsgdGhlbgotLSAgICAgICAgZXhwb3J0IFhER19SVU5USU1FX0RJUj0i L3J1bi91c2VyLyRVSUQiCi0tICAgICAgICBpc19yb290X2xvZ2luPWBncmVwICJeUGVybWl0Um9v dExvZ2luIiAvZXRjL3NzaC9zc2hkX2NvbmZpZyB8IGdyZXAgeWVzYAotLSAgICAgICAgaWYgWyAi eCRBTlNJQkxFIiAhPSB4IF0gJiYgWyAieCRpc19yb290X2xvZ2luIiA9IHggXSA7IHRoZW4KLS0g ICAgICAgICAgICBwcmludF9sb2cgLWUgIiR7UkVEfUZBSUwke05DfTogTm8gcGVybWlzc2lvbiB0 byBnZXQgZm9jdXMtaW4gZXZlbnRzIGluIEd0a1dpbmRvdyB3aXRoIGFuc2libGUiCi0tICAgICAg ICAgICAgZWNobyAic3UgY29tbWFuZCBkb2VzIG5vdCBjb25maWd1cmUgbmVjZXNzYXJ5IGxvZ2lu IGluZm8gIiAgICAgICAgIFwKLS0gICAgICAgICAgICAgICAgICJ3aXRoIHN5c3RlbWQgYW5kIEd0 a1dpbmRvdyBjYW5ub3QgcmVjZWl2ZSBmb2N1cy1ldmVudHMgIiAgICAgXAotLSAgICAgICAgICAg ICAgICAgIndoZW4gaWJ1cy1kZXNrdG9wLXRlc3RpbmctcnVubmVyIGlzIGV4ZWN1dGVkIGJ5ICIg ICAgICAgICAgICBcCi0tICAgICAgICAgICAgICAgICAiYW5zaWJsZS1wbGF5Ym9vay4iID4+ICRU RVNUX0xPRwotLSAgICAgICAgICAgIGVjaG8gIkVuYWJsaW5nIHJvb3QgbG9naW4gdmlhIHNzaGQs IHJlc3RhcnRpbmcgc3NoZCwgc2V0ICIgICAgICAgICBcCi0tICAgICAgICAgICAgICAgICAiWERH X1JVTlRJTUVfRElSIGNhbiByZXNvbHZlIHRoZSBwcm9ibGVtIHVuZGVyICIgICAgICAgICAgICAg IFwKLS0gICAgICAgICAgICAgICAgICJhbnNpYmxlLXBsYXlib29rLiIgPj4gJFRFU1RfTE9HCi0t ICAgICAgICAgICAgZXhpdCAyNTUKLS0gICAgICAgIGZpCi0tICAgIGZpCi0tICAgICMgIERvIHdl IG5lZWQgWERHX1NFU1NJT05fSUQgYW5kIFhER19TRUFUPwotLSAgICAjZXhwb3J0IFhER19DT05G SUdfRElSUz0vZXRjL3hkZwotLSAgICAjZXhwb3J0IFhER19TRVNTSU9OX0lEPTEwCi0tICAgICNl eHBvcnQgWERHX1NFU1NJT05fREVTS1RPUD1nbm9tZQotLSAgICAjZXhwb3J0IFhER19TRUFUPXNl YXQwCi0tfQotLQotLQotLXJ1bl9kYnVzX2RhZW1vbigpCi0tewotLSAgICAjIFVzZSBkYnVzLWxh dW5jaCAtLWV4aXQtd2l0aC1zZXNzaW9uIGxhdGVyIGluc3RlYWQgb2YgLS1zaC1zeW50YXgKLS0g ICAgIyBHTk9NRSB1c2VzIGEgdW5peDphYnN0cmFjdCBhZGRyZXNzIGFuZCBpdCBlZmZlY3RzIGdz ZXR0aW5ncyBzZXQgdmFsdWVzCi0tICAgICMgaW4gZWFjaCB0ZXN0IGNhc2UuCi0tICAgICMgVE9E TzogU2hvdWxkIHdlIGNvbW1lbnQgb3V0IHRoaXMgbGluZT8KLS0gICAgZXhwb3J0IERCVVNfU0VT U0lPTl9CVVNfQUREUkVTUz0idW5peDpwYXRoPS9ydW4vdXNlci8kVUlEL2J1cyIKLS19Ci0tCi0t Ci0taW5pdF9nbm9tZSgpCi0tewotLSAgICAjIGdzZXR0aW5ncyBzZXQgY29tbWFuZCBuZWVkcyBk Y29uZi1zZXJ2aWNlIHdpdGggdGhlIHNhbWUgJERJU1BMQVkKLS0gICAgcGtpbGwgZGNvbmYtc2Vy dmljZQotLSAgICAjIEdfTUVTU0FHRVNfREVCVUc9YWxsIG9yIEdfTUVTU0FHRVNfREVCVUc9R0xp Yi1HSU8tREVCVUcgd291bGQgYXBwZW5kCi0tICAgICMgZGVidWcgbWVzc2FnZXMgdG8gZ3NldHRp bmdzIG91dHB1dCBhbmQgY291bGQgbm90IGdldCB0aGUgcmVzdWx0IGNvcnJlY3RseS4KLS0gICAg YmFja3VwX0dfTUVTU0FHRVNfREVCVUc9IiRHX01FU1NBR0VTX0RFQlVHIgotLSAgICB1bnNldCBH X01FU1NBR0VTX0RFQlVHCi0tICAgICMgRGlzYWJsZSBUb3VyIGRpYWxvZyB0byBnZXQgZm9jdXMK LS0gICAgVj1gZ3NldHRpbmdzIGdldCBvcmcuZ25vbWUuc2hlbGwgd2VsY29tZS1kaWFsb2ctbGFz dC1zaG93bi12ZXJzaW9uYAotLSAgICBpZiBbIHgiJFYiID0geCInJyIgXSA7IHRoZW4KLS0gICAg ICAgIGdzZXR0aW5ncyBzZXQgb3JnLmdub21lLnNoZWxsIHdlbGNvbWUtZGlhbG9nLWxhc3Qtc2hv d24tdmVyc2lvbiAnMTAwJwotLSAgICBmaQotLSAgICAjIGdub21lLXNoZWxsIG5vdyBzdGFydHMg b3ZlcnZpZXcgbW9kZSBieSBsb2dpbi4KLS0gICAgIyBodHRwczovL2V4dGVuc2lvbnMuZ25vbWUu b3JnL2V4dGVuc2lvbi80MDk5L25vLW92ZXJ2aWV3LwotLSAgICBOT19TWVNfRElSPS91c3Ivc2hh cmUvZ25vbWUtc2hlbGwvZXh0ZW5zaW9ucy9uby1vdmVydmlld0BmdGh4Ci0tICAgIE5PX1VTRVJf RElSPSRIT01FLy5sb2NhbC9zaGFyZS9nbm9tZS1zaGVsbC9leHRlbnNpb25zL25vLW92ZXJ2aWV3 QGZ0aHgKLS0gICAgaWYgWyAhIC1kICROT19TWVNfRElSIF0gJiYgWyAhIC1kICROT19VU0VSX0RJ UiBdIDsgdGhlbgotLSAgICAgICAgbWtkaXIgLXAgImBkaXJuYW1lICROT19VU0VSX0RJUmAiCi0t ICAgICAgICBjcCAtUiAibm8tb3ZlcnZpZXdAZnRoeCIgImBkaXJuYW1lICROT19VU0VSX0RJUmAi Ci0tICAgIGZpCi0tICAgIFY9YGdzZXR0aW5ncyBnZXQgb3JnLmdub21lLnNoZWxsIGRpc2FibGUt dXNlci1leHRlbnNpb25zYAotLSAgICBpZiBbIHgiJFYiID0geCJ0cnVlIiBdIDsgdGhlbgotLSAg ICAgICAgZ3NldHRpbmdzIHNldCBvcmcuZ25vbWUuc2hlbGwgZGlzYWJsZS11c2VyLWV4dGVuc2lv bnMgZmFsc2UKLS0gICAgZmkKLS0gICAgVj1gZ3NldHRpbmdzIGdldCBvcmcuZ25vbWUuc2hlbGwg ZW5hYmxlZC1leHRlbnNpb25zYAotLSAgICBlY2hvICIkViIgfCBncmVwICJuby1vdmVydmlldyIg PiAvZGV2L251bGwKLS0gICAgVjI9JD8KLS0gICAgaWYgWyAkVjIgLW5lIDAgXSA7IHRoZW4KLS0g ICAgICAgIFYzPWBlY2hvICIkViIgfCBzZWQgLWUgJ3MvQGFzIC8vJyAtZSAncy9cWy8vJyAtZSAn cy9cXS8vJ2AKLS0gICAgICAgIGlmIFsgeCIkVjMiID0geCInJyIgXSB8fCBbIHgiJFYzIiA9IHgi IiBdOyB0aGVuCi0tICAgICAgICAgICAgVjQ9Ilsnbm8tb3ZlcnZpZXdAZnRoeCddIgotLSAgICAg ICAgZWxzZQotLSAgICAgICAgICAgIFY0PSJbJFYzLCAnbm8tb3ZlcnZpZXdAZnRoeCddIgotLSAg ICAgICAgZmkKLS0gICAgICAgIGdzZXR0aW5ncyBzZXQgb3JnLmdub21lLnNoZWxsIGVuYWJsZWQt ZXh0ZW5zaW9ucyAiJFY0IgotLSAgICBmaQotLSAgICBpZiBbIHgiJGJhY2t1cF9HX01FU1NBR0VT X0RFQlVHIiAhPSB4IF0gOyB0aGVuCi0tICAgICAgICBleHBvcnQgR19NRVNTQUdFU19ERUJVRz0i JGJhY2t1cF9HX01FU1NBR0VTX0RFQlVHIgotLSAgICBmaQotLX0KLS0KLS0KLS1ydW5fZGVza3Rv cCgpCi0tewotLSAgICBlY2hvICIkREVTS1RPUF9DT01NQU5EIiB8IGdyZXAgZ25vbWUtc2Vzc2lv biA+IC9kZXYvbnVsbAotLSAgICBIQVNfR05PTUU9JD8KLS0gICAgZXhwb3J0IERJU1BMQVk9JERJ U1BMQVkKLS0gICAgaWYgdGVzdCAkSEFWRV9HUkFQSElDUyAtZXEgMSA7IHRoZW4KLS0gICAgICAg IC91c3IvbGliZXhlYy9Yb3JnLndyYXAgLW5vcmVzZXQgK2V4dGVuc2lvbiBHTFggK2V4dGVuc2lv biBSQU5EUiArZXh0ZW5zaW9uIFJFTkRFUiAtbG9nZmlsZSAuL3hvcmcubG9nIC1jb25maWcgLi94 b3JnLmNvbmYgLWNvbmZpZ2RpciAuICRESVNQTEFZICYKLS0gICAgZWxzZQotLSAgICAgICAgL3Vz ci9iaW4vWHZmYiAkRElTUExBWSAtbm9yZXNldCArZXh0ZW5zaW9uIEdMWCArZXh0ZW5zaW9uIFJB TkRSICtleHRlbnNpb24gUkVOREVSIC1zY3JlZW4gMCAxMjgweDEwMjR4MjQgJgotLSAgICBmaQot LSAgICBQSURfWE9SRz0kIQotLSAgICBzbGVlcCAxCi0tICAgICMgaW5pdF9nbm9tZSBuZWVkIHRv IGJlIGNhbGxlZCB3aXRoICRESVNQTEFZIGJlZm9yZSBnbm9tZS1zZXNzaW9uIGlzIGNhbGxlZAot LSAgICBpZiBbICAkSEFTX0dOT01FIC1lcSAwIF0gOyB0aGVuCi0tICAgICAgICBpbml0X2dub21l Ci0tICAgIGZpCi0tICAgIGVjaG8gIlJ1bm5pbmcgJERFU0tUT1BfQ09NTUFORCB3aXRoICRVU0VS IGluIGB0dHlgIgotLSAgICAkREVTS1RPUF9DT01NQU5EICYKLS0gICAgUElEX0dOT01FX1NFU1NJ T049JCEKLS0gICAgc2xlZXAgMzAKLS0KLS0gICAgSUJVU19BUkdTPSItLXZlcmJvc2UgLS1wYW5l bCBkaXNhYmxlIgotLSAgICAjIGdub21lLXNoZWxsIDQyIGNoZWNrcyBpZiBvcmcuZnJlZWRlc2t0 b3AuSUJ1cy5zZXNzaW9uLkdOT01FLnNlcnZpY2UKLS0gICAgIyBzeXN0ZW1kIGZpbGUgaXMgYXZh aWxhYmxlIHdpdGggb3JnLmZyZWVkZXNrdG9wLnN5c3RlbWQxLk1hbmFnZXIuR2V0VW5pdAotLSAg ICAjIEQtQnVzIG1ldGhvZCwgd2hpY2ggaXMgcHJvdmlkZWQgYnkgSUJ1cyAxLjUuMjYsIGFuZCBp ZiB0aGUgZmlsZQotLSAgICAjIGlzIGF2YWlsYWJsZSwgZ25vbWUtc2hlbGwgbm8gbG9uZ2VyIGxh dW5jaCBpYnVzLWRhZW1vbgotLSAgICAjIGJlY2F1c2UgZ25vbWUtc2hlbGwgYXNzdW1lcyBnbm9t ZS1zZXNzaW9uIHdvdWxkIGxhdW5jaCBpYnVzLWRhZW1vbgotLSAgICAjIHdpdGggb3JnLmZyZWVk ZXNrdG9wLnN5c3RlbWQxLk1hbmFnZXIuU3RhcnRVbml0IEQtQnVzIG1ldGhvZC4KLS0gICAgIyBC dXQgYWN0dWFsbHkgZ25vbWUtc2Vzc2lvbiBmYWlsZWQgdG8gbGF1bmNoIGlidXMtZGFlbW9uCi0t ICAgICMgYmVjYXVzZSB0aGUgSUJ1cyBzeXN0ZW1kIGZpbGUgZGVwZW5kcyBvbiBnbm9tZS1zZXNz aW9uLnRhcmdldAotLSAgICAjIGJ1dCB0aGlzIENJIGxhdW5jaGVzIGdub21lLXNlc3Npb24gZGly ZWN0bHkuCi0tICAgICMKLS0gICAgIyBTbyBpYnVzLWRhbWVvbiBpcyBub3cgYWx3YXlzIGNhbGxl ZCBoZXJlIGFmdGVyIGdub21lLXNoZWxsIGZhaWxzIHRvCi0tICAgICMgbGF1bmNoIGlidXMtZGFl bW9uLgotLSAgICAjIEl0IG1heSBiZSBiZXR0ZXIgdGhpcyBDSSBsYXVuY2hlcyBHRE0gYXV0b2xv Z2luIHRvIHJ1biBnbm9tZS1zZXNzaW9uCi0tICAgICMgd2l0aCBnbm9tZS1zZXNzaW9uLnRhcmdl dCBzeXN0ZW1kIGZpbGUuCi0tICAgICMgQnV0IGBzeXN0ZW1jdGwgc3RhcnQgZ2RtYCB0ZXJtaW5h dGVzIHRoZSBwYXJlbnQgc2NyaXB0IGZvcmNpYmx5Ci0tICAgICMgYW5kIHRoZSBzY3JpcHQgY2Fu bm90IGdldCB0aGUgQ0kgcmVzdWx0LgotLSAgICBpZiB0ZXN0ICRWRVJCT1NFIC1lcSAxIDsgdGhl bgotLSAgICAgICAgaWJ1cy1kYWVtb24gJElCVVNfQVJHUyAmCi0tICAgIGVsc2UKLS0gICAgICAg IGlidXMtZGFlbW9uICRJQlVTX0FSR1MgLS1kYWVtb25pemUKLS0gICAgZmkKLS0gICAgc2xlZXAg MwotLSAgICBpZiB0ZXN0ICRWRVJCT1NFIC1lcSAxIDsgdGhlbgotLSAgICAgICAgcHMgLWVmIHwg Z3JlcCBpYnVzCi0tICAgIGZpCi0tfQotLQotLQotLWNvdW50X2Nhc2VfcmVzdWx0KCkKLS17Ci0t ICAgIHJldHZhbD0kMQotLSAgICBwYXNzPSQyCi0tICAgIGZhaWw9JDMKLS0KLS0gICAgaWYgdGVz dCAkcmV0dmFsIC1lcSAgMCA7IHRoZW4KLS0gICAgICAgIHBhc3M9YGV4cHIgJHBhc3MgKyAxYAot LSAgICBlbHNlCi0tICAgICAgICBmYWlsPWBleHByICRmYWlsICsgMWAKLS0gICAgZmkKLS0gICAg ZWNobyAkcGFzcyAkZmFpbAotLX0KLS0KLS0KLS1lY2hvX2Nhc2VfcmVzdWx0KCkKLS17Ci0tICAg IHJldHZhbD0kMQotLSAgICB0c3Q9JDIKLS0gICAgc3VidHN0PSR7MzotJyd9Ci0tCi0tICAgIGlm IHRlc3QgJHJldHZhbCAtZXEgIDAgOyB0aGVuCi0tICAgICAgICBlY2hvICJQQVNTOiAkdHN0ICRz dWJ0c3QiID4+JFRFU1RfTE9HCi0tICAgIGVsc2UKLS0gICAgICAgIGVjaG8gIkZBSUw6ICR0c3Qg JHN1YnRzdCIgPj4kVEVTVF9MT0cKLS0gICAgZmkKLS19Ci0tCi0tCi0tcnVuX2RpcmVjdF90ZXN0 X2Nhc2VzKCkKLS17Ci0tICAgIHBhc3M9MAotLSAgICBmYWlsPTAKLS0gICAgZm9yIHRzdCBpbiAk VEVTVFM7IGRvCi0tICAgICAgICBFTlZTPQotLSAgICAgICAgaWYgdGVzdCAtZiAkU1JDRElSLyR7 dHN0fS5lbnYgOyB0aGVuCi0tICAgICAgICAgICAgRU5WUz0iYGNhdCAkU1JDRElSLyR7dHN0fS5l bnZgIgotLSAgICAgICAgZmkKLS0gICAgICAgIGlmIHRlc3QgeCIkRU5WUyIgPSB4IDsgdGhlbgot LSAgICAgICAgICAgICRCVUlMRERJUi8kdHN0ICRTUkNESVIgMj4+JFRFU1RfTE9HIDE+PiRURVNU X0xPRwotLSAgICAgICAgICAgIHJldHZhbD0kPwotLSAgICAgICAgICAgIHJlYWQgcGFzcyBmYWls IDw8IEVPRl9DT1VOVAotLSAgICAgICAgICAgIGBjb3VudF9jYXNlX3Jlc3VsdCAkcmV0dmFsICRw YXNzICRmYWlsYAotLUVPRl9DT1VOVAotLSAgICAgICAgICAgIGVjaG9fY2FzZV9yZXN1bHQgJHJl dHZhbCAkdHN0Ci0tICAgICAgICAgICAgQ0FDSEVfRklMRVM9YGxzICouY2FjaGVgCi0tICAgICAg ICAgICAgaWYgWyB4IiRDQUNIRV9GSUxFUyIgIT0geCBdIDsgdGhlbgotLSAgICAgICAgICAgICAg ICBlY2hvICIjIENsZWFuICRDQUNIRV9GSUxFUyIgPj4kVEVTVF9MT0cKLS0gICAgICAgICAgICAg ICAgcm0gJENBQ0hFX0ZJTEVTCi0tICAgICAgICAgICAgZmkKLS0gICAgICAgIGVsc2UKLS0gICAg ICAgICAgICBpPTEKLS0gICAgICAgICAgICAjIERlbGV0ZWQgZm9yIHZhciBpbiAiJEVOVlMiIGJl Y2F1c2UgSUZTPSQnXG4nIGlzIG5vdCBzdXBwb3J0ZWQKLS0gICAgICAgICAgICAjIGluIFBPU0lY IHNoCi0tICAgICAgICAgICAgd2hpbGUgcmVhZCBlIDsgZG8KLS0gICAgICAgICAgICAgICAgZmly c3Q9YGVjaG8gIiRlIiB8IGdyZXAgJ14jJ2AKLS0gICAgICAgICAgICAgICAgaWYgdGVzdCB4IiRm aXJzdCIgPSB4IiMiIDsgdGhlbgotLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLS0gICAg ICAgICAgICAgICAgZmkKLS0gICAgICAgICAgICAgICAgZWNobyAiIyBTdGFydGluZyAkZSAkQlVJ TERESVIvJHRzdCAkU1JDRElSIiA+PiRURVNUX0xPRwotLSAgICAgICAgICAgICAgICBlbnYgJGUg JEJVSUxERElSLyR0c3QgJFNSQ0RJUiAyPj4kVEVTVF9MT0cgMT4+JFRFU1RfTE9HCi0tICAgICAg ICAgICAgICAgIHJldHZhbD0kPwotLSAgICAgICAgICAgICAgICBlY2hvICIjIEZpbmlzaGVkICRl ICRCVUlMRERJUi8kdHN0ICRTUkNESVIgd2l0aCAkcmV0dmFsIiA+PiRURVNUX0xPRwotLSAgICAg ICAgICAgICAgICByZWFkIHBhc3MgZmFpbCA8PCBFT0ZfQ09VTlQKLS0gICAgICAgICAgICAgICAg YGNvdW50X2Nhc2VfcmVzdWx0ICRyZXR2YWwgJHBhc3MgJGZhaWxgCi0tRU9GX0NPVU5UCi0tICAg ICAgICAgICAgICAgIGVjaG9fY2FzZV9yZXN1bHQgJHJldHZhbCAkdHN0ICRlCi0tICAgICAgICAg ICAgICAgIENBQ0hFX0ZJTEVTPWBscyAqLmNhY2hlYAotLSAgICAgICAgICAgICAgICBpZiBbIHgi JENBQ0hFX0ZJTEVTIiAhPSB4IF0gOyB0aGVuCi0tICAgICAgICAgICAgICAgICAgICBlY2hvICIj IENsZWFuICRDQUNIRV9GSUxFUyIgPj4kVEVTVF9MT0cKLS0gICAgICAgICAgICAgICAgICAgIHJt ICRDQUNIRV9GSUxFUwotLSAgICAgICAgICAgICAgICBmaQotLSAgICAgICAgICAgICAgICBpPWBl eHByICRpICsgMWAKLS0gICAgICAgICAgICBkb25lIDw8IEVPRl9FTlZTCi0tICAgICAgICAgICAg YGVjaG8gIiRFTlZTImAKLS1FT0ZfRU5WUwotLSAgICAgICAgZmkKLS0gICAgZG9uZQotLSAgICBl Y2hvICRwYXNzICRmYWlsCi0tfQotLQotLQotLXJ1bl9nbm9tZV9kZXNrdG9wX3Rlc3RpbmdfcnVu bmVyKCkKLS17Ci0tICAgIHBhc3M9MAotLSAgICBmYWlsPTAKLS0gICAgaWYgWyB4IiRURVNUUyIg PSB4IF0gOyB0aGVuCi0tICAgICAgICBURVNUUz0naWJ1cycKLS0gICAgZmkKLS0gICAgZm9yIHRz dCBpbiAkVEVTVFM7IGRvCi0tICAgICAgICB0c3RfZGlyPSJASU5TVEFMTEVERElSQC8kdHN0Igot LSAgICAgICAgaWYgWyAhIC1kICIkdHN0X2RpciIgXSA7IHRoZW4KLS0gICAgICAgICAgICBwcmlu dF9sb2cgLWUgIiR7UkVEfUZBSUwke05DfTogTm90IGZvdW5kICV0c3RfZGlyIgotLSAgICAgICAg ICAgIGZhaWw9MQotLSAgICAgICAgICAgIGNvbnRpbnVlCi0tICAgICAgICBmaQotLSAgICAgICAg Z25vbWUtZGVza3RvcC10ZXN0aW5nLXJ1bm5lciAtLXRpbWVvdXQ9JFRJTUVPVVQgJHRzdCBcCi0t ICAgICAgICAgICAgICAgIDI+PiRURVNUX0xPRyAxPj4kVEVTVF9MT0cKLS0gICAgICAgIHJldHZh bD0kPwotLSAgICAgICAgcmVhZCBwYXNzIGZhaWwgPDwgRU9GCi0tICAgICAgICBgY291bnRfY2Fz ZV9yZXN1bHQgJHJldHZhbCAkcGFzcyAkZmFpbGAKLS1FT0YKLS0gICAgZG9uZQotLSAgICBjaGls ZF9wYXNzPWBncmVwICdeUEFTUzonICRURVNUX0xPRyB8IHdjIC1sYAotLSAgICBjaGlsZF9mYWls PWBncmVwICdeRkFJTDonICRURVNUX0xPRyB8IHdjIC1sYAotLSAgICBpZiBbICRjaGlsZF9wYXNz IC1uZSAwIF0gfHwgWyAkY2hpbGRfZmFpbCAtbmUgMCBdIDsgdGhlbgotLSAgICAgICAgcGFzcz0k Y2hpbGRfcGFzcwotLSAgICAgICAgaWYgWyAkY2hpbGRfZmFpbCAtbmUgMCBdIDsgdGhlbgotLSAg ICAgICAgICAgIGZhaWw9YGV4cHIgJGNoaWxkX2ZhaWwgLyAyYAotLSAgICAgICAgZWxzZQotLSAg ICAgICAgICAgIGZhaWw9MAotLSAgICAgICAgZmkKLS0gICAgZmkKLS0gICAgZWNobyAkcGFzcyAk ZmFpbAotLX0KLS0KLS0KLS1ydW5fdGVzdF9zdWl0ZSgpCi0tewotLSAgICBwYXNzPTAKLS0gICAg ZmFpbD0wCi0tICAgIGV4cG9ydCBHVEtfSU1fTU9EVUxFPWlidXMKLS0gICAgZXhwb3J0IElCVVNf Q09NUE9TRV9DQUNIRV9ESVI9JFBXRAotLSAgICBpZiBbIHgiJFRFU1RJTkdfUlVOTkVSIiA9IHgg XSA7IHRoZW4KLS0gICAgICAgIFRFU1RJTkdfUlVOTkVSPSJkZWZhdWx0IgotLSAgICBmaQotLSAg ICBjYXNlICRURVNUSU5HX1JVTk5FUiBpbgotLSAgICBkZWZhdWx0KQotLSAgICAgICAgIyBHZXQg b25seSB0aGUgbGFzdCB2YWx1ZSB3aXRoIGRvLXdoaWxlLgotLSAgICAgICAgcmVhZCBwYXNzIGZh aWwgPDwgRU9GX1JVTk5FUgotLSAgICAgICAgYHJ1bl9kaXJlY3RfdGVzdF9jYXNlc2AKLS1FT0Zf UlVOTkVSCi0tICAgICAgICA7OwotLSAgICBnbm9tZSkKLS0gICAgICAgIHJlYWQgcGFzcyBmYWls IDw8IEVPRl9SVU5ORVIKLS0gICAgICAgIGBydW5fZ25vbWVfZGVza3RvcF90ZXN0aW5nX3J1bm5l cmAKLS1FT0ZfUlVOTkVSCi0tICAgICAgICA7OwotLSAgICBlc2FjCi0tICAgIGVjaG8gIiIKLS0g ICAgIyBGZWRvcmEgQ0kgYXNzdW1lcyB0aGUgdGVzdCBpcyBmYWlsZWQgZXZlbiBpZiAkZmFpbCBp cyAwLgotLSAgICBpZiBbICRwYXNzIC1uZSAwIF0gOyB0aGVuCi0tICAgICAgICBwcmludF9sb2cg LWUgIiR7R1JFRU59UEFTUyR7TkN9OiAkcGFzcyIKLS0gICAgZmkKLS0gICAgaWYgWyAkZmFpbCAt bmUgMCBdIDsgdGhlbgotLSAgICAgICAgcHJpbnRfbG9nIC1lICIke1JFRH1GQUlMJHtOQ306ICRm YWlsIgotLSAgICBmaQotLSAgICBlY2hvICIiCi0tICAgIGlmIFsgJFRFU1RfTE9HX1NURE9VVCAt ZXEgMSBdIDsgdGhlbgotLSAgICAgICAgY2F0ICRURVNUX0xPRwotLSAgICBlbHNlCi0tICAgICAg ICBlY2hvICIjIFNlZSAkVEVTVF9MT0ciCi0tICAgIGZpCi0tfQotLQotLQotLWZpbml0KCkKLS17 Ci0tICAgIGVjaG8gIiMgS2lsbGluZyBsZWZ0IGdub21lLXNlc3Npb24gYW5kIFhvcmciCi0tICAg IGtpbGwgJFBJRF9HTk9NRV9TRVNTSU9OICRQSURfWE9SRwotLSAgICBpYnVzIGV4aXQKLS0gICAg U1VTRVI9YGVjaG8gIiRVU0VSIiB8IGN1dCAtYyAxLTdgCi0tICAgIExFRlRfQ0FMRU5EQVI9YHBz IC1lZiB8IGdyZXAgZ25vbWUtc2hlbGwtY2FsZW5kYXItc2VydmVyIHwgZ3JlcCAkU1VTRVIgfCBn cmVwIC12IGdyZXBgCi0tICAgIGlmIFsgeCIkTEVGVF9DQUxFTkRBUiIgIT0geCBdIDsgdGhlbgot LSAgICAgICAgZWNobyAiIyBLaWxsaW5nIGxlZnQgZ25vbWUtc2hlbGwtY2FsZW5kYXItc2VydmVy IgotLSAgICAgICAgZWNobyAiJExFRlRfQ0FMRU5EQVIiCi0tICAgICAgICBlY2hvICIkTEVGVF9D QUxFTkRBUiIgfCBhd2sgJ3twcmludCAkMn0nIHwgeGFyZ3Mga2lsbAotLSAgICBmaQotLQotLSAg ICBlY2hvICIjIEZpbmlzaGVkICRQUk9HTkFNRSB0ZXN0aW5nIgotLX0KLS0KLS0KLSBtYWluKCkK LSB7Ci0gICAgIHBhcnNlX2FyZ3MgIiRAIgotLSAgICBpbml0X2Rlc2t0b3AKLSsgICAgaW5pdF9z ZXNzaW9uCi0gICAgIHJ1bl9kYnVzX2RhZW1vbiAyPj4kVEVTVF9MT0cgMT4+JFRFU1RfTE9HCi0t ICAgIHJ1bl9kZXNrdG9wIDI+PiRURVNUX0xPRyAxPj4kVEVTVF9MT0cKLS0gICAgaWYgWyB4IiRT Q1JFRU5fTE9HIiAhPSB4IF0gOyB0aGVuCi0tICAgICAgICBTQ1JFRU5fUE5HPSJgZGF0ZSAnKyVZ JW0lZCVIJU0lUydgLnBuZyIKLS0gICAgICAgIGdub21lLXNjcmVlbnNob3QgLS1maWxlPSRTQ1JF RU5fUE5HCi0tICAgICAgICBpZiBbIHgiJFNDUkVFTl9MT0ciID0geFNURE9VVCBdIDsgdGhlbgot LSAgICAgICAgICAgIGJhc2U2NCAkU0NSRUVOX1BORwotLSAgICAgICAgZWxzZQotLSAgICAgICAg ICAgIGJhc2U2NCAkU0NSRUVOX1BORyA+ICRTQ1JFRU5fTE9HCi0tICAgICAgICBmaQotLSAgICBm aQotKyAgICBydW5fc2Vzc2lvbiAyPj4kVEVTVF9MT0cgMT4+JFRFU1RfTE9HCi0rICAgIHNhdmVf c2NyZWVuCi0gICAgIHJ1bl90ZXN0X3N1aXRlCi0gICAgIGZpbml0Ci0gfQotZGlmZiAtLWdpdCBh L3NyYy90ZXN0cy9pYnVzLWRlc2t0b3AtdGVzdGluZy5kZXNrdG9wLmluIGIvc3JjL3Rlc3RzL2li dXMtZGVza3RvcC10ZXN0aW5nLmRlc2t0b3AuaW4KLWluZGV4IDFiODE1MzQ1Li5lOTE5MDBlZCAx MDA2NDQKLS0tLSBhL3NyYy90ZXN0cy9pYnVzLWRlc2t0b3AtdGVzdGluZy5kZXNrdG9wLmluCi0r KysgYi9zcmMvdGVzdHMvaWJ1cy1kZXNrdG9wLXRlc3RpbmcuZGVza3RvcC5pbgotQEAgLTIsNyAr Miw3IEBACi0gTmFtZT1JQnVzIERlc2t0b3AgVGVzdGluZyBSdW5uZXIKLSBHZW5lcmljTmFtZT1J bnB1dCBNZXRob2QgRGVza3RvcCBUZXN0aW5nIFJ1bm5lcgotIENvbW1lbnQ9VGVzdCBwbHVnaW4g Zm9yIElCdXMgRGVza3RvcCBUZXN0aW5nCi0tRXhlYz1AbGliZXhlY2RpckAvaWJ1cy1kZXNrdG9w LXRlc3RpbmctYXV0b3N0YXJ0IC92YXIvdG1wL2lidXMtY2ktYXV0b3N0YXJ0LmxvZwotK0V4ZWM9 c2ggLWMgJ2V4ZWMgQGxpYmV4ZWNkaXJAL2lidXMtZGVza3RvcC10ZXN0aW5nLWF1dG9zdGFydCAt LWVudmNoZWNrIC0tb3V0cHV0ICRIT01FL3Rlc3QtYXV0b3N0YXJ0LmxvZyAtLXJlc3VsdCAkSE9N RS90ZXN0LmxvZyAtLXJ1bm5lciBnbm9tZSAtLXNjcmVlbmR1bXAgJEhPTUUvc2NyZWVuLmxvZyAt LXRlc3RzIGlidXMnCi0gVGVybWluYWw9ZmFsc2UKLSBUeXBlPUFwcGxpY2F0aW9uCi0gRW5jb2Rp bmc9VVRGLTgKLS0tIAotMi40NS4wCi0KLUZyb20gMDM5ZmNiMTZmMThkMzQxYTI0NDM2MmMzZTc5 N2VlYWE1YzUxMDEwZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGZ1aml3YXJhdCA8 dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMjcgSnVsIDIwMjQgMTk6MDI6 MDkgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzZdIEZpeCB0ZXN0cyBjYXNlcyB0byBiZSBydW4g aW4gV2F5bGFuZAotCi0tIEZpeCBpYnVzLWJ1cyBzaW5jZSBpYnVzX2J1c19leGl0X2FzeW5jKCkg ZG9lcyBub3Qgd29yayBpYnVzLWRhZW1vbgotICB3aXRoIHN5c3RlbWQgYW5kIHJ1biBgaWJ1cyBy ZXN0YXJ0YCBpbnN0ZWFkLgotLSBGaXggaWJ1cy1jb21wb3NlLWxvY2FsZXMgdG8gd2FpdCBmb3Ig MSBzZWMgYmV0d2VlbiBrZXkgZXZlbnQgdGVzdCBjYXNlcwotICB0byByZXNldCBnbm9tZS1zaGVs bC9tdXR0ZXIuCi0tIEZpeCBpYnVzLWNvbXBvc2UgdG8gd2FpdCBmb3IgY29tbWl0LXRleHQgZXZl bnQgc2luY2UgdGhlIGdub21lLXNoZWxsL211dHRlcgotICBwcm9jZXNzIGlzIGEgYml0IHNsb3cg YW5kIGNhbiByZXNldCB0aGUgcHJldmlvdXMgY29tbWl0LXRleHQgZXZlbnRzCi0gIGJlZm9yZSB0 aGUgcHJldmlvdXMgZXZlbnRzIGFyZSBub3QgY29tbWl0dGVkLgotLSBGaXggY291bnRzIGluIGli dXMtZW5naW5lLXN3aXRjaC4KLS0gVW5yZWYgSUJ1c0VuZ2luZURlc2MgaW4gaWJ1cy1lbmdpbmUt c3dpdGNoLgotLSBGaXggaWJ1c2ltcGwgbm90IHRvIGNoYW5nZSB0aGUgZW5naW5lIG9mIHRoZSBj b250ZXh0IHdoZW4gZ2xvYmFsLWVuZ2luZQotICBpcyBlbmFibGVkLgotLSBDaGVjayBESVNQTEFZ IGFuZCBzZXR4a2JtYXAgaW4geGtiLWxhdGluLWxheW91dHMgZm9yIFdheWxhbmQKLQotQlVHPWh0 dHBzOi8vZ2l0aHViLmNvbS9pYnVzL2lidXMvcHVsbC8yNjU3Ci0tLS0KLSBidXMvaWJ1c2ltcGwu YyAgICAgICAgICAgICAgICAgfCAgIDggKysKLSBidXMvaWJ1c2ltcGwuaCAgICAgICAgICAgICAg ICAgfCAgIDMgKy0KLSBidXMvaW5wdXRjb250ZXh0LmMgICAgICAgICAgICAgfCAgIDkgKysrCi0g c3JjL2lidXNzaGFyZS5jICAgICAgICAgICAgICAgIHwgICAyICstCi0gc3JjL3Rlc3RzL2lidXMt YnVzLmMgICAgICAgICAgIHwgIDkyICsrKysrKysrKysrKysrKysrKystLS0KLSBzcmMvdGVzdHMv aWJ1cy1jb21wb3NlLmMgICAgICAgfCAxMzkgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tCi0gc3JjL3Rlc3RzL2lidXMtZW5naW5lLXN3aXRjaC5jIHwgIDQ1ICsrKysrKysrKystCi0g c3JjL3Rlc3RzL3hrYi1sYXRpbi1sYXlvdXRzICAgIHwgICA5ICsrKwotIDggZmlsZXMgY2hhbmdl ZCwgMjU0IGluc2VydGlvbnMoKyksIDUzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYnVz L2lidXNpbXBsLmMgYi9idXMvaWJ1c2ltcGwuYwotaW5kZXggNDQ1YzA2MmIuLjRiZWQ5YmMwIDEw MDY0NAotLS0tIGEvYnVzL2lidXNpbXBsLmMKLSsrKyBiL2J1cy9pYnVzaW1wbC5jCi1AQCAtMjQ2 Myw2ICsyNDYzLDE0IEBAIGJ1c19pYnVzX2ltcGxfaXNfZW1iZWRfcHJlZWRpdF90ZXh0IChCdXNJ QnVzSW1wbCAqaWJ1cykKLSAgICAgcmV0dXJuIGlidXMtPmVtYmVkX3ByZWVkaXRfdGV4dDsKLSB9 Ci0gCi0rZ2Jvb2xlYW4KLStidXNfaWJ1c19pbXBsX2lzX3VzZV9nbG9iYWxfZW5naW5lIChCdXNJ QnVzSW1wbCAqaWJ1cykKLSt7Ci0rICAgIGdfYXNzZXJ0IChCVVNfSVNfSUJVU19JTVBMIChpYnVz KSk7Ci0rCi0rICAgIHJldHVybiBpYnVzLT51c2VfZ2xvYmFsX2VuZ2luZTsKLSt9Ci0rCi0gQnVz SW5wdXRDb250ZXh0ICoKLSBidXNfaWJ1c19pbXBsX2dldF9mb2N1c2VkX2lucHV0X2NvbnRleHQg KEJ1c0lCdXNJbXBsICppYnVzKQotIHsKLWRpZmYgLS1naXQgYS9idXMvaWJ1c2ltcGwuaCBiL2J1 cy9pYnVzaW1wbC5oCi1pbmRleCBlM2I0M2Y4Ny4uNDI4Yjc3M2IgMTAwNjQ0Ci0tLS0gYS9idXMv aWJ1c2ltcGwuaAotKysrIGIvYnVzL2lidXNpbXBsLmgKLUBAIC0yLDcgKzIsNyBAQAotIC8qIHZp bTpzZXQgZXQgc3RzPTQ6ICovCi0gLyogYnVzIC0gVGhlIElucHV0IEJ1cwotICAqIENvcHlyaWdo dCAoQykgMjAwOC0yMDEzIFBlbmcgSHVhbmcgPHNoYXduLnAuaHVhbmdAZ21haWwuY29tPgotLSAq IENvcHlyaWdodCAoQykgMjAyMi0yMDIzIFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFA Z21haWwuY29tPgotKyAqIENvcHlyaWdodCAoQykgMjAyMi0yMDI0IFRha2FvIEZ1aml3YXJhIDx0 YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotICAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIyIFJl ZCBIYXQsIEluYy4KLSAgKgotICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLUBAIC05NCw2ICs5NCw3IEBAIEJ1c0NvbXBvbmVu dCAgICAqYnVzX2lidXNfaW1wbF9sb29rdXBfY29tcG9uZW50X2J5X25hbWUKLSBnYm9vbGVhbiAg ICAgICAgIGJ1c19pYnVzX2ltcGxfaXNfdXNlX3N5c19sYXlvdXQgICAgKEJ1c0lCdXNJbXBsICAg ICAgICAqaWJ1cyk7Ci0gZ2Jvb2xlYW4gICAgICAgICBidXNfaWJ1c19pbXBsX2lzX2VtYmVkX3By ZWVkaXRfdGV4dAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoQnVzSUJ1c0ltcGwgICAgICAgICppYnVzKTsKLStnYm9vbGVhbiAgICAgICAgIGJ1 c19pYnVzX2ltcGxfaXNfdXNlX2dsb2JhbF9lbmdpbmUgKEJ1c0lCdXNJbXBsICAgICAgICAqaWJ1 cyk7Ci0gQnVzSW5wdXRDb250ZXh0ICpidXNfaWJ1c19pbXBsX2dldF9mb2N1c2VkX2lucHV0X2Nv bnRleHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKEJ1c0lCdXNJbXBsICAgICAgICAqaWJ1cyk7Ci0gR0hhc2hUYWJsZSAgICAgICpidXNfaWJ1 c19pbXBsX2dldF9lbmdpbmVfZm9jdXNfaWRfdGFibGUKLWRpZmYgLS1naXQgYS9idXMvaW5wdXRj b250ZXh0LmMgYi9idXMvaW5wdXRjb250ZXh0LmMKLWluZGV4IDFlNzk1NzMzLi44NTM1ODI0MSAx MDA2NDQKLS0tLSBhL2J1cy9pbnB1dGNvbnRleHQuYwotKysrIGIvYnVzL2lucHV0Y29udGV4dC5j Ci1AQCAtMTI4OSw2ICsxMjg5LDE1IEBAIF9pY19zZXRfZW5naW5lIChCdXNJbnB1dENvbnRleHQg ICAgICAgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgIEdEQnVzTWV0aG9kSW52b2NhdGlvbiAq aW52b2NhdGlvbikKLSB7Ci0gICAgIGdjaGFyICplbmdpbmVfbmFtZSA9IE5VTEw7Ci0rICAgIEJ1 c0lCdXNJbXBsICppYnVzID0gYnVzX2lidXNfaW1wbF9nZXRfZGVmYXVsdCAoKTsKLSsKLSsgICAg aWYgKGJ1c19pYnVzX2ltcGxfaXNfdXNlX2dsb2JhbF9lbmdpbmUgKGlidXMpKSB7Ci0rICAgICAg ICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX2Vycm9yIChpbnZvY2F0aW9uLAotKyAg ICAgICAgICAgICAgICBHX0RCVVNfRVJST1IsIEdfREJVU19FUlJPUl9GQUlMRUQsCi0rICAgICAg ICAgICAgICAgICJDYW5ub3Qgc2V0IGVuZ2luZXMgd2hlbiB1c2UtZ2xvYmFsLWVuZ2luZSBpcyBl bmFibGVkLiIpOwotKyAgICAgICAgcmV0dXJuOwotKyAgICB9Ci0rCi0gICAgIGdfdmFyaWFudF9n ZXQgKHBhcmFtZXRlcnMsICIoJnMpIiwgJmVuZ2luZV9uYW1lKTsKLSAKLSAgICAgaWYgKCFidXNf aW5wdXRfY29udGV4dF9oYXNfZm9jdXMgKGNvbnRleHQpKSB7Ci1kaWZmIC0tZ2l0IGEvc3JjL2li dXNzaGFyZS5jIGIvc3JjL2lidXNzaGFyZS5jCi1pbmRleCA1YWI2ZTg4OS4uNTdlM2VmMTQgMTAw NjQ0Ci0tLS0gYS9zcmMvaWJ1c3NoYXJlLmMKLSsrKyBiL3NyYy9pYnVzc2hhcmUuYwotQEAgLTIs NyArMiw3IEBACi0gLyogdmltOnNldCBldCBzdHM9NDogKi8KLSAvKiBpYnVzIC0gVGhlIElucHV0 IEJ1cwotICAqIENvcHlyaWdodCAoQykgMjAwOC0yMDEwIFBlbmcgSHVhbmcgPHNoYXduLnAuaHVh bmdAZ21haWwuY29tPgotLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIzIFRha2FvIEZ1aml3YXJh IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDI0 IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotICAqIENvcHlyaWdo dCAoQykgMjAwOC0yMDE4IFJlZCBIYXQsIEluYy4KLSAgKgotICAqIFRoaXMgbGlicmFyeSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLWRpZmYgLS1naXQg YS9zcmMvdGVzdHMvaWJ1cy1idXMuYyBiL3NyYy90ZXN0cy9pYnVzLWJ1cy5jCi1pbmRleCBkNmIx MDVjZi4uNzYxMjAzNTQgMTAwNjQ0Ci0tLS0gYS9zcmMvdGVzdHMvaWJ1cy1idXMuYwotKysrIGIv c3JjL3Rlc3RzL2lidXMtYnVzLmMKLUBAIC04MDIsMjAgKzgwMiwyOSBAQCBzdGFydF9zZXRfcHJl bG9hZF9lbmdpbmVzX2FzeW5jICh2b2lkKQotICAgICAgICAgICAgIE5VTEwpOyAvKiB1c2VyX2Rh dGEgKi8KLSB9Ci0gCi0rdHlwZWRlZiBzdHJ1Y3QgX0V4aXRBc3luY0RhdGEgewotKyAgICBnYm9v bGVhbiBoYXNfc29ja2V0X3BhdGg7Ci0rICAgIGdib29sZWFuIGV4aXRlZDsKLSsgICAgZ3VpbnQg ICAgdGltZW91dF9pZDsKLSt9IEV4aXRBc3luY0RhdGE7Ci0rCi0gc3RhdGljIHZvaWQKLSBfc29j a2V0X2NoYW5nZWRfY2IgKEdGaWxlTW9uaXRvciAgICAgICAqbW9uaXRvciwKLSAgICAgICAgICAg ICAgICAgICAgIEdGaWxlICAgICAgICAgICAgICAqZmlsZSwKLSAgICAgICAgICAgICAgICAgICAg IEdGaWxlICAgICAgICAgICAgICAqb3RoZXJfZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgIEdG aWxlTW9uaXRvckV2ZW50ICAgZXZlbnRfdHlwZSwKLS0gICAgICAgICAgICAgICAgICAgIElCdXNC dXMgICAgICAgICAgICAqYnVzKQotKyAgICAgICAgICAgICAgICAgICAgRXhpdEFzeW5jRGF0YSAg ICAgICpkYXRhKQotIHsKLSAgICAgc3dpdGNoIChldmVudF90eXBlKSB7Ci0gICAgIGNhc2UgR19G SUxFX01PTklUT1JfRVZFTlRfQ0hBTkdFRDoKLSAgICAgICAgIGdfZGVidWcgKCJJQnVzIHNvY2tl dCBmaWxlIGlzIGNoYW5nZWQiKTsKLSAgICAgICAgIGNhbGxfbmV4dF9hc3luY19mdW5jdGlvbiAo KTsKLSsgICAgICAgIGRhdGEtPmV4aXRlZCA9IFRSVUU7Ci0gICAgICAgICBnX3NpZ25hbF9oYW5k bGVyc19kaXNjb25uZWN0X2J5X2Z1bmMgKG1vbml0b3IsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKF9zb2NrZXRfY2hhbmdlZF9jYiks Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhKTsKLSsg ICAgICAgIGlmIChkYXRhLT50aW1lb3V0X2lkKQotKyAgICAgICAgICAgIGdfc291cmNlX3JlbW92 ZSAoZGF0YS0+dGltZW91dF9pZCk7Ci0gICAgICAgICBnX29iamVjdF91bnJlZiAobW9uaXRvcik7 Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBHX0ZJTEVfTU9OSVRPUl9FVkVOVF9DUkVBVEVE OgotQEAgLTgyOSw2ICs4MzgsMzMgQEAgX3NvY2tldF9jaGFuZ2VkX2NiIChHRmlsZU1vbml0b3Ig ICAgICAgKm1vbml0b3IsCi0gICAgIH0KLSB9Ci0gCi0rc3RhdGljIGdib29sZWFuCi0rX2V4aXRf dGltZW91dCAoZ3BvaW50ZXIgdXNlcl9kYXRhKQotK3sKLSsgICAgZ19lcnJvciAoInN0YXJ0X2V4 aXRfYXN5bmMoKSBpcyB0aW1lb3V0LiBZb3UgbWlnaHQgcnVuIGlidXMtZGFlbW9uICIgXAotKyAg ICAgICAgICAgICAid2l0aCBzeXN0ZW1kIHVuZGVyIEdOT01FIGFuZCB0aGUgZXhpdCBBUEkgZG9l cyBub3Qgd29yay4gIiBcCi0rICAgICAgICAgICAgICJZb3UgbmVlZCB0byBleHBvcnQgSUJVU19E QUVNT05fV0lUSF9TWVNURU1EPTEgLlxuIik7Ci0rICAgIHJldHVybiBHX1NPVVJDRV9SRU1PVkU7 Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rZmluaXNoX2lidXNfcmVzdGFydF9hc3luYyAoR1BpZCAg ICAgIHBpZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50ICAgICAgc3RhdHVzLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICp1c2VyX2RhdGEpCi0rewotKyAg ICBFeGl0QXN5bmNEYXRhICpkYXRhID0gKEV4aXRBc3luY0RhdGEgKil1c2VyX2RhdGE7Ci0rICAg IGdfc3Bhd25fY2xvc2VfcGlkIChwaWQpOwotKyAgICBpZiAoZGF0YS0+aGFzX3NvY2tldF9wYXRo ID09IEZBTFNFKSB7Ci0rICAgICAgICBnX2RlYnVnICgiaWJ1c19idXNfZXhpdF9maW5pc2g6IE9L IHNvY2tldCBmaWxlOiBub25lIik7Ci0rICAgICAgICBnX3VzbGVlcCAoR19VU0VDX1BFUl9TRUMp OwotKyAgICAgICAgY2FsbF9uZXh0X2FzeW5jX2Z1bmN0aW9uICgpOwotKyAgICB9IGVsc2Ugewot KyAgICAgICAgZ19kZWJ1ZyAoImlidXNfYnVzX2V4aXRfZmluaXNoOiBPSyBzb2NrZXQgZmlsZTog bW9uaXRvcmVkIik7Ci0rICAgICAgICBpZiAoIWRhdGEtPmV4aXRlZCkKLSsgICAgICAgICAgICBk YXRhLT50aW1lb3V0X2lkID0gZ190aW1lb3V0X2FkZF9zZWNvbmRzICgxMCwgX2V4aXRfdGltZW91 dCwgTlVMTCk7Ci0rICAgIH0KLSt9Ci0rCi0gc3RhdGljIHZvaWQKLSBmaW5pc2hfZXhpdF9hc3lu YyAoR09iamVjdCAqc291cmNlX29iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVz dWx0ICpyZXMsCi1AQCAtODM4LDI1ICs4NzQsMzIgQEAgZmluaXNoX2V4aXRfYXN5bmMgKEdPYmpl Y3QgKnNvdXJjZV9vYmplY3QsCi0gICAgIGdib29sZWFuIHJlc3VsdCA9IGlidXNfYnVzX2V4aXRf YXN5bmNfZmluaXNoIChidXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmZXJyb3IpOwotLSAgICBnYm9vbGVhbiBoYXNfc29ja2V0X3BhdGggPSBH UE9JTlRFUl9UT19JTlQgKHVzZXJfZGF0YSk7Ci0rICAgIEV4aXRBc3luY0RhdGEgKmRhdGEgPSAo RXhpdEFzeW5jRGF0YSAqKXVzZXJfZGF0YTsKLSAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICBn X3dhcm5pbmcgKCJGYWlsZWQgdG8gaWJ1c19idXNfZXhpdCgpOiAlcyIsIGVycm9yLT5tZXNzYWdl KTsKLSAgICAgICAgIGdfZXJyb3JfZnJlZSAoZXJyb3IpOwotICAgICB9Ci0gICAgIGdfYXNzZXJ0 IChyZXN1bHQpOwotLSAgICBpZiAoaGFzX3NvY2tldF9wYXRoID09IEZBTFNFKSB7Ci0rICAgIGdf YXNzZXJ0IChkYXRhKTsKLSsgICAgaWYgKGRhdGEtPmhhc19zb2NrZXRfcGF0aCA9PSBGQUxTRSkg ewotICAgICAgICAgZ19kZWJ1ZyAoImlidXNfYnVzX2V4aXRfZmluaXNoOiBPSyBzb2NrZXQgZmls ZTogbm9uZSIpOwotICAgICAgICAgZ191c2xlZXAgKEdfVVNFQ19QRVJfU0VDKTsKLSAgICAgICAg IGNhbGxfbmV4dF9hc3luY19mdW5jdGlvbiAoKTsKLSAgICAgfSBlbHNlIHsKLSAgICAgICAgIGdf ZGVidWcgKCJpYnVzX2J1c19leGl0X2ZpbmlzaDogT0sgc29ja2V0IGZpbGU6IG1vbml0b3JlZCIp OwotKyAgICAgICAgaWYgKCFkYXRhLT5leGl0ZWQpCi0rICAgICAgICAgICAgZGF0YS0+dGltZW91 dF9pZCA9IGdfdGltZW91dF9hZGRfc2Vjb25kcyAoMTAsIF9leGl0X3RpbWVvdXQsIE5VTEwpOwot ICAgICB9Ci0gfQotIAotIHN0YXRpYyB2b2lkCi0gc3RhcnRfZXhpdF9hc3luYyAodm9pZCkKLSB7 Ci0tICAgIGdib29sZWFuIGhhc19zb2NrZXRfcGF0aCA9IEZBTFNFOwotKyAgICBzdGF0aWMgRXhp dEFzeW5jRGF0YSBkYXRhID0gewotKyAgICAgICAgLmhhc19zb2NrZXRfcGF0aCA9IEZBTFNFLAot KyAgICAgICAgLmV4aXRlZCAgICAgICAgICA9IEZBTFNFLAotKyAgICAgICAgLnRpbWVvdXRfaWQg ICAgICA9IDAKLSsgICAgfTsKLSAgICAgLyogV2hlbiBgLi9ydW50ZXN0IGlidXMtYnVzYCBydW5z LCBpYnVzLWRhZW1vbiBzb21ldGltZXMgZmFpbGVkIHRvCi0gICAgICAqIHJlc3RhcnQgYmVjYXVz ZSBjbG9zaW5nIGEgZmlsZSBkZXNjcmlwdG9yIHdhcyBmYWlsZWQgaW4KLSAgICAgICogYnVzL3Nl cnZlci5jOl9yZXN0YXJ0X3NlcnZlcigpIHdpdGggYSBmb2xsb3dpbmcgZXJyb3I6Ci1AQCAtODc5 LDcgKzkyMiw3IEBAIHN0YXJ0X2V4aXRfYXN5bmMgKHZvaWQpCi0gICAgICAgICBnX2Fzc2VydCAo YWRkcmVzc19wYXRoKTsKLSAgICAgICAgIGZpbGUgPSBnX2ZpbGVfbmV3X2Zvcl9wYXRoIChhZGRy ZXNzX3BhdGgpOwotICAgICAgICAgZ19hc3NlcnQgKGZpbGUpOwotLSAgICAgICAgaGFzX3NvY2tl dF9wYXRoID0gVFJVRTsKLSsgICAgICAgIGRhdGEuaGFzX3NvY2tldF9wYXRoID0gVFJVRTsKLSAg ICAgICAgIG1vbml0b3IgPSBnX2ZpbGVfbW9uaXRvciAoZmlsZSwgR19GSUxFX01PTklUT1JfTk9O RSwgTlVMTCwgJmVycm9yKTsKLSAgICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgIGdf d2FybmluZyAoIkZhaWxlZCB0byBtb25pdG9yIHNvY2tldCBmaWxlOiAlcyIsIGVycm9yLT5tZXNz YWdlKTsKLUBAIC04ODcsMTUgKzkzMCwzOCBAQCBzdGFydF9leGl0X2FzeW5jICh2b2lkKQotICAg ICAgICAgfQotICAgICAgICAgZ19hc3NlcnQgKG1vbml0b3IpOwotICAgICAgICAgZ19zaWduYWxf Y29ubmVjdCAobW9uaXRvciwgImNoYW5nZWQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAg R19DQUxMQkFDSyAoX3NvY2tldF9jaGFuZ2VkX2NiKSwgTlVMTCk7Ci0rICAgICAgICAgICAgICAg ICAgICAgICAgICBHX0NBTExCQUNLIChfc29ja2V0X2NoYW5nZWRfY2IpLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgJmRhdGEpOwotICAgICAgICAgZ19vYmplY3RfdW5yZWYgKGZpbGUpOwot ICAgICB9Ci0tICAgIGlidXNfYnVzX2V4aXRfYXN5bmMgKGJ1cywKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgVFJVRSwgLyogcmVzdGFydCAqLwotLSAgICAgICAgICAgICAgICAgICAgICAgICAt MSwgLyogdGltZW91dCAqLwotLSAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAvKiBjYW5j ZWxsYWJsZSAqLwotLSAgICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hfZXhpdF9hc3luYywK LS0gICAgICAgICAgICAgICAgICAgICAgICAgR0lOVF9UT19QT0lOVEVSIChoYXNfc29ja2V0X3Bh dGgpKTsgLyogdXNlcl9kYXRhICovCi0rICAgIC8qIFdoZW4gaWJ1cy1kYWVtb24gcnVucyB3aXRo IHN5c3RlbWQsIHJlc3RhcnRpbmcgdGhlIGRhZW1vbiB3aXRoCi0rICAgICAqIGlidXNfYnVzX2V4 aXRfYXN5bmMoKSBkb2VzIG5vdCB3b3JrIHNvIHJ1bnMgYGlidXMgcmVzdGFydGAgY29tbWFuZAot KyAgICAgKiB3aXRoIElCVVNfREFFTU9OX1dJVEhfU1lTVEVNRCB2YXJpYWJsZSBpbnN0ZWFkLgot KyAgICAgKi8KLSsgICAgaWYgKGdfZ2V0ZW52ICgiSUJVU19EQUVNT05fV0lUSF9TWVNURU1EIikp IHsKLSsgICAgICAgIGdjaGFyICphcmd2W10gPSB7ICJpYnVzIiwgInJlc3RhcnQiLCBOVUxMIH07 Ci0rICAgICAgICBHU3Bhd25GbGFncyBmbGFncyA9IEdfU1BBV05fRE9fTk9UX1JFQVBfQ0hJTEQg XAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEdfU1BBV05fU0VBUkNIX1BBVEggXAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEdfU1BBV05fU1RET1VUX1RPX0RFVl9OVUxM IFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBHX1NQQVdOX1NUREVSUl9UT19ERVZf TlVMTDsKLSsgICAgICAgIEdQaWQgcGlkID0gMDsKLSsgICAgICAgIEdFcnJvciAqZXJyb3IgPSBO VUxMOwotKyAgICAgICAgZ19zcGF3bl9hc3luYyAoTlVMTCwgYXJndiwgTlVMTCwgZmxhZ3MsIE5V TEwsIE5VTEwsICZwaWQsICZlcnJvcik7Ci0rICAgICAgICBpZiAoZXJyb3IpIHsKLSsgICAgICAg ICAgICBnX3dhcm5pbmcgKCJGYWlsZWQgdG8gY2FsbCBpYnVzIHJlc3RhcnQ6ICVzIiwgZXJyb3It Pm1lc3NhZ2UpOwotKyAgICAgICAgICAgIGdfZXJyb3JfZnJlZSAoZXJyb3IpOwotKyAgICAgICAg fQotKyAgICAgICAgZ19jaGlsZF93YXRjaF9hZGQgKHBpZCwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAoR0NoaWxkV2F0Y2hGdW5jKWZpbmlzaF9pYnVzX3Jlc3RhcnRfYXN5bmMsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGEpOwotKyAgICB9IGVsc2UgewotKyAgICAgICAg aWJ1c19idXNfZXhpdF9hc3luYyAoYnVzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg VFJVRSwgLyogcmVzdGFydCAqLwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsIC8q IHRpbWVvdXQgKi8KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIC8qIGNhbmNl bGxhYmxlICovCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hfZXhpdF9hc3lu YywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRhKTsgLyogdXNlcl9kYXRhICov Ci0rICAgIH0KLSB9Ci0gCi0gc3RhdGljIGdib29sZWFuCi1kaWZmIC0tZ2l0IGEvc3JjL3Rlc3Rz L2lidXMtY29tcG9zZS5jIGIvc3JjL3Rlc3RzL2lidXMtY29tcG9zZS5jCi1pbmRleCAyMWRlN2Ey Mi4uNjYwYWVlN2YgMTAwNjQ0Ci0tLS0gYS9zcmMvdGVzdHMvaWJ1cy1jb21wb3NlLmMKLSsrKyBi L3NyYy90ZXN0cy9pYnVzLWNvbXBvc2UuYwotQEAgLTcsMTkgKzcsMjggQEAKLSAjZGVmaW5lIFJF RCAgICJcMDMzWzA7MzFtIgotICNkZWZpbmUgTkMgICAgIlwwMzNbMG0iCi0gCi0tSUJ1c0J1cyAq bV9idXM7Ci0tZ2NoYXIgKm1fY29tcG9zZV9maWxlOwotLUlCdXNDb21wb3NlVGFibGVFeCAqbV9j b21wb3NlX3RhYmxlOwotLUlCdXNFbmdpbmUgKm1fZW5naW5lOwotLWdjaGFyICptX3NyY2RpcjsK LS0KLS1ndWludCBpYnVzX2NvbXBvc2Vfa2V5X2ZsYWcgKGd1aW50IGtleSk7Ci0tCi0rc3RhdGlj IElCdXNCdXMgKm1fYnVzOwotK3N0YXRpYyBnY2hhciAqbV9jb21wb3NlX2ZpbGU7Ci0rc3RhdGlj IElCdXNDb21wb3NlVGFibGVFeCAqbV9jb21wb3NlX3RhYmxlOwotK3N0YXRpYyBJQnVzRW5naW5l ICptX2VuZ2luZTsKLStzdGF0aWMgZ2NoYXIgKm1fc3JjZGlyOwotK3N0YXRpYyBHTWFpbkxvb3Ag Km1fbG9vcDsKLSsKLSt0eXBlZGVmIGVudW0gewotKyAgICBURVNUX0NSRUFURV9FTkdJTkUsCi0r ICAgIFRFU1RfQ09NTUlUX1RFWFQKLSt9IFRlc3RJRGxlQ2F0ZWdvcnk7Ci0rCi0rdHlwZWRlZiBz dHJ1Y3QgX1Rlc3RJZGxlRGF0YSB7Ci0rICAgIFRlc3RJRGxlQ2F0ZWdvcnkgY2F0ZWdvcnk7Ci0r ICAgIGd1aW50ICAgICAgICAgICAgaWRsZV9pZDsKLSt9IFRlc3RJZGxlRGF0YTsKLSsKLStleHRl cm4gZ3VpbnQgaWJ1c19jb21wb3NlX2tleV9mbGFnIChndWludCBrZXkpOwotIHN0YXRpYyBnYm9v bGVhbiB3aW5kb3dfZm9jdXNfaW5fZXZlbnRfY2IgKEd0a1dpZGdldCAgICAgKmVudHJ5LAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdka0V2ZW50Rm9jdXMgKmV2 ZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVy ICAgICAgIGRhdGEpOwotIAotLQotIHN0YXRpYyBnY2hhciAqCi0gZ2V0X2NvbXBvc2VfcGF0aCAo KQotIHsKLUBAIC01MSwxNyArNjAsNTAgQEAgZ2V0X2NvbXBvc2VfcGF0aCAoKQotIH0KLSAKLSAK LStnYm9vbGVhbgotK2lkbGVfY2IgKGdwb2ludGVyIHVzZXJfZGF0YSkKLSt7Ci0rICAgIFRlc3RJ ZGxlRGF0YSAqZGF0YSA9IChUZXN0SWRsZURhdGEgKil1c2VyX2RhdGE7Ci0rICAgIGdfYXNzZXJ0 IChkYXRhKTsKLSsgICAgc3dpdGNoIChkYXRhLT5jYXRlZ29yeSkgewotKyAgICBjYXNlIFRFU1Rf Q1JFQVRFX0VOR0lORToKLSsgICAgICAgIGdfdGVzdF9mYWlsX3ByaW50ZiAoIlwiY3JlYXRlLWVu Z2luZVwiIHNpZ25hbCBpcyB0aW1lb3V0LiIpOwotKyAgICAgICAgYnJlYWs7Ci0rICAgIGNhc2Ug VEVTVF9DT01NSVRfVEVYVDoKLSsgICAgICAgIGlmIChkYXRhLT5pZGxlX2lkKQotKyAgICAgICAg ICAgIGdfdGVzdF9mYWlsX3ByaW50ZiAoIkNvbW1pdGluZyBjb21wb3NlZCBjaGFycyBpcyB0aW1l b3V0LiIpOwotKyAgICAgICAgaWYgKG1fbG9vcCkgewotKyAgICAgICAgICAgIGlmIChnX21haW5f bG9vcF9pc19ydW5uaW5nIChtX2xvb3ApKQotKyAgICAgICAgICAgICAgICBnX21haW5fbG9vcF9x dWl0IChtX2xvb3ApOwotKyAgICAgICAgICAgIGdfY2xlYXJfcG9pbnRlciAoJm1fbG9vcCwgZ19t YWluX2xvb3BfdW5yZWYpOwotKyAgICAgICAgICAgIGd0a19tYWluX3F1aXQgKCk7Ci0rICAgICAg ICB9Ci0rICAgICAgICBkYXRhLT5pZGxlX2lkID0gMDsKLSsgICAgICAgIGJyZWFrOwotKyAgICBk ZWZhdWx0OgotKyAgICAgICAgZ190ZXN0X2ZhaWxfcHJpbnRmICgiSWRsZSBmdW5jIGlzIGNhbGxl ZCBieSB3cm9uZyBjYXRlZ29yeTolZC4iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBk YXRhLT5jYXRlZ29yeSk7Ci0rICAgICAgICBicmVhazsKLSsgICAgfQotKyAgICByZXR1cm4gR19T T1VSQ0VfUkVNT1ZFOwotK30KLSsKLSsKLSBzdGF0aWMgSUJ1c0VuZ2luZSAqCi0gY3JlYXRlX2Vu Z2luZV9jYiAoSUJ1c0ZhY3RvcnkgKmZhY3RvcnksCi0gICAgICAgICAgICAgICAgICAgY29uc3Qg Z2NoYXIgKm5hbWUsCi0tICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgIGRhdGEpCi0rICAg ICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgIHVzZXJfZGF0YSkKLSB7Ci0gICAgIHN0YXRpYyBp bnQgaSA9IDE7Ci0gICAgIGdjaGFyICplbmdpbmVfcGF0aCA9Ci0gICAgICAgICAgICAgZ19zdHJk dXBfcHJpbnRmICgiL29yZy9mcmVlZGVza3RvcC9JQnVzL2VuZ2luZS9zaW1wbGV0ZXN0LyVkIiwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkrKyk7Ci0gICAgIGdjaGFyICpjb21wb3Nl X3BhdGg7Ci0rICAgIFRlc3RJZGxlRGF0YSAqZGF0YSA9IChUZXN0SWRsZURhdGEgKil1c2VyX2Rh dGE7Ci0gCi0rICAgIGdfYXNzZXJ0IChkYXRhKTsKLSsgICAgLyogRG9uJ3QgcmVzZXQgaWRsZV9p ZCB0byBhdm9pZCBkdXBsaWNhdGVkIHJlZ2lzdGVyX2lidXNfZW5naW5lKCkuICovCi0rICAgIGdf c291cmNlX3JlbW92ZSAoZGF0YS0+aWRsZV9pZCk7Ci0gICAgIG1fZW5naW5lID0gaWJ1c19lbmdp bmVfbmV3X3dpdGhfdHlwZSAoSUJVU19UWVBFX0VOR0lORV9TSU1QTEUsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBlbmdpbmVfcGF0aCwKLUBAIC03NSwyOCArMTE3LDMzIEBA IGNyZWF0ZV9lbmdpbmVfY2IgKElCdXNGYWN0b3J5ICpmYWN0b3J5LAotICAgICAgICAgaWJ1c19l bmdpbmVfc2ltcGxlX2FkZF9jb21wb3NlX2ZpbGUgKElCVVNfRU5HSU5FX1NJTVBMRSAobV9lbmdp bmUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBv c2VfcGF0aCk7Ci0gICAgICAgICBtX2NvbXBvc2VfdGFibGUgPSBpYnVzX2NvbXBvc2VfdGFibGVf bG9hZF9jYWNoZSAoY29tcG9zZV9wYXRoKTsKLS0gICAgICAgIGlmIChtX2NvbXBvc2VfdGFibGUg PT0gTlVMTCkKLS0gICAgICAgICAgICBnX3dhcm5pbmcgKCJZb3VyIGxvY2FsZSB1c2VzIGVuX1VT IGNvbXBvc2UgdGFibGUuIik7Ci0gICAgIH0KLSAgICAgZ19mcmVlIChjb21wb3NlX3BhdGgpOwot ICAgICByZXR1cm4gbV9lbmdpbmU7Ci0gfQotIAotKwotIHN0YXRpYyBnYm9vbGVhbgotIHJlZ2lz dGVyX2lidXNfZW5naW5lICgpCi0gewotKyAgICBzdGF0aWMgVGVzdElkbGVEYXRhIGRhdGEgPSB7 IC5jYXRlZ29yeSA9IFRFU1RfQ1JFQVRFX0VOR0lORSwgLmlkbGVfaWQgPSAwIH07Ci0gICAgIElC dXNGYWN0b3J5ICpmYWN0b3J5OwotICAgICBJQnVzQ29tcG9uZW50ICpjb21wb25lbnQ7Ci0gICAg IElCdXNFbmdpbmVEZXNjICpkZXNjOwotIAotKyAgICBpZiAoZGF0YS5pZGxlX2lkKSB7Ci0rICAg ICAgICBnX3Rlc3RfaW5jb21wbGV0ZSAoIlRlc3QgaXMgY2FsbGVkIHR3aWNlIGR1ZSB0byBhIHRp bWVvdXQuIik7Ci0rICAgICAgICByZXR1cm4gVFJVRTsKLSsgICAgfQotICAgICBtX2J1cyA9IGli dXNfYnVzX25ldyAoKTsKLSAgICAgaWYgKCFpYnVzX2J1c19pc19jb25uZWN0ZWQgKG1fYnVzKSkg ewotLSAgICAgICAgZ19jcml0aWNhbCAoImlidXMtZGFlbW9uIGlzIG5vdCBydW5uaW5nLiIpOwot KyAgICAgICAgZ190ZXN0X2ZhaWxfcHJpbnRmICgiaWJ1cy1kYWVtb24gaXMgbm90IHJ1bm5pbmcu Iik7Ci0gICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgIH0KLSAgICAgZmFjdG9yeSA9IGlidXNf ZmFjdG9yeV9uZXcgKGlidXNfYnVzX2dldF9jb25uZWN0aW9uIChtX2J1cykpOwotKyAgICBkYXRh LmlkbGVfaWQgPSBnX3RpbWVvdXRfYWRkX3NlY29uZHMgKDIwLCBpZGxlX2NiLCAmZGF0YSk7Ci0g ICAgIGdfc2lnbmFsX2Nvbm5lY3QgKGZhY3RvcnksICJjcmVhdGUtZW5naW5lIiwKLS0gICAgICAg ICAgICAgICAgICAgICAgR19DQUxMQkFDSyAoY3JlYXRlX2VuZ2luZV9jYiksIE5VTEwpOwotKyAg ICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChjcmVhdGVfZW5naW5lX2NiKSwgJmRhdGEp OwotIAotICAgICBjb21wb25lbnQgPSBpYnVzX2NvbXBvbmVudF9uZXcgKAotICAgICAgICAgICAg ICJvcmcuZnJlZWRlc2t0b3AuSUJ1cy5TaW1wbGVUZXN0IiwKLUBAIC0xMjIsMzQgKzE2OSwyOSBA QCByZWdpc3Rlcl9pYnVzX2VuZ2luZSAoKQotICAgICByZXR1cm4gVFJVRTsKLSB9Ci0gCi0tc3Rh dGljIGdib29sZWFuCi0tZmluaXQgKGdwb2ludGVyIGRhdGEpCi0tewotLSAgICBnX3Rlc3RfaW5j b21wbGV0ZSAoInRpbWUgb3V0Iik7Ci0tICAgIGd0a19tYWluX3F1aXQgKCk7Ci0tICAgIHJldHVy biBGQUxTRTsKLS19Ci0gCi0gc3RhdGljIHZvaWQKLS1zZXRfZW5naW5lX2NiIChHT2JqZWN0ICpv YmplY3QsIEdBc3luY1Jlc3VsdCAqcmVzLCBncG9pbnRlciBkYXRhKQotK3NldF9lbmdpbmVfY2Ig KEdPYmplY3QgICAgICAqb2JqZWN0LAotKyAgICAgICAgICAgICAgIEdBc3luY1Jlc3VsdCAqcmVz LAotKyAgICAgICAgICAgICAgIGdwb2ludGVyICAgICAgdXNlcl9kYXRhKQotIHsKLSAgICAgSUJ1 c0J1cyAqYnVzID0gSUJVU19CVVMgKG9iamVjdCk7Ci0tICAgIEd0a1dpZGdldCAqZW50cnkgPSBH VEtfV0lER0VUIChkYXRhKTsKLSsgICAgR3RrV2lkZ2V0ICplbnRyeSA9IEdUS19XSURHRVQgKHVz ZXJfZGF0YSk7Ci0gICAgIEdFcnJvciAqZXJyb3IgPSBOVUxMOwotKyAgICBzdGF0aWMgVGVzdElk bGVEYXRhIGRhdGEgPSB7IC5jYXRlZ29yeSA9IFRFU1RfQ09NTUlUX1RFWFQsIC5pZGxlX2lkID0g MCB9OwotICAgICBpbnQgaSwgajsKLSAgICAgaW50IGluZGV4X3N0cmlkZTsKLSAgICAgSUJ1c0Nv bXBvc2VUYWJsZVByaXZhdGUgKnByaXY7Ci0gCi0gICAgIGlmICghaWJ1c19idXNfc2V0X2dsb2Jh bF9lbmdpbmVfYXN5bmNfZmluaXNoIChidXMsIHJlcywgJmVycm9yKSkgewotLSAgICAgICAgZ2No YXIgKm1zZyA9IGdfc3RyZHVwX3ByaW50ZiAoInNldCBlbmdpbmUgZmFpbGVkOiAlcyIsIGVycm9y LT5tZXNzYWdlKTsKLS0gICAgICAgIGdfdGVzdF9pbmNvbXBsZXRlIChtc2cpOwotLSAgICAgICAg Z19mcmVlIChtc2cpOwotKyAgICAgICAgZ190ZXN0X2ZhaWxfcHJpbnRmICgic2V0IGVuZ2luZSBm YWlsZWQ6ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOwotICAgICAgICAgZ19lcnJvcl9mcmVlIChlcnJv cik7Ci0gICAgICAgICByZXR1cm47Ci0gICAgIH0KLSAKLSAgICAgaWYgKG1fY29tcG9zZV90YWJs ZSA9PSBOVUxMKSB7Ci0tICAgICAgICBndGtfbWFpbl9xdWl0ICgpOwotKyAgICAgICAgZ190ZXN0 X3NraXAgKCJZb3VyIGxvY2FsZSB1c2VzIGVuX1VTIGNvbXBvc2UgdGFibGUuIik7Ci0rICAgICAg ICBpZGxlX2NiICgmZGF0YSk7Ci0gICAgICAgICByZXR1cm47Ci0gICAgIH0KLSAKLUBAIC0xNTcs NiArMTk5LDcgQEAgc2V0X2VuZ2luZV9jYiAoR09iamVjdCAqb2JqZWN0LCBHQXN5bmNSZXN1bHQg KnJlcywgZ3BvaW50ZXIgZGF0YSkKLSAgICAgZm9yIChpID0gMDsKLSAgICAgICAgICBpIDwgKG1f Y29tcG9zZV90YWJsZS0+bl9zZXFzICogaW5kZXhfc3RyaWRlKTsKLSAgICAgICAgICBpICs9IGlu ZGV4X3N0cmlkZSkgewotKyAgICAgICAgZGF0YS5pZGxlX2lkID0gZ190aW1lb3V0X2FkZF9zZWNv bmRzICgyMCwgaWRsZV9jYiwgJmRhdGEpOwotICAgICAgICAgZm9yIChqID0gaTsgaiA8IGkgKyAo aW5kZXhfc3RyaWRlIC0gMik7IGorKykgewotICAgICAgICAgICAgIGd1aW50IGtleXZhbCA9IG1f Y29tcG9zZV90YWJsZS0+ZGF0YVtqXTsKLSAgICAgICAgICAgICBndWludCBrZXljb2RlID0gMDsK LUBAIC0xNzIsMTIgKzIxNSwyMiBAQCBzZXRfZW5naW5lX2NiIChHT2JqZWN0ICpvYmplY3QsIEdB c3luY1Jlc3VsdCAqcmVzLCBncG9pbnRlciBkYXRhKQotICAgICAgICAgICAgIGdfc2lnbmFsX2Vt aXRfYnlfbmFtZSAobV9lbmdpbmUsICJwcm9jZXNzLWtleS1ldmVudCIsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBrZXl2YWwsIGtleWNvZGUsIG1vZGlmaWVycywgJnJldHZh bCk7Ci0gICAgICAgICB9Ci0rICAgICAgICAvKiBOZWVkIHRvIHdhaXQgZm9yIGNhbGxpbmcgd2lu ZG93X2luc2VydGVkX3RleHRfY2IoKSB3aXRoCi0rICAgICAgICAgKiBnX21haW5fbG9vcF9ydW4o KSBiZWNhdXNlIHRoZSBjb21taXQtdGV4dCBldmVudCBjb3VsZCBiZSBjYW5jZWxsZWQKLSsgICAg ICAgICAqIGJ5IHRoZSBuZXh0IGNvbW1pdC10ZXh0IGV2ZW50IHdpdGggZ25vbWUtc2hlbGwgaW4g V2F5bGFuZC4KLSsgICAgICAgICAqLwotKyAgICAgICAgZ19tYWluX2xvb3BfcnVuIChtX2xvb3Ap OwotKyAgICAgICAgaWYgKGRhdGEuaWRsZV9pZCkgewotKyAgICAgICAgICAgIGdfc291cmNlX3Jl bW92ZSAoZGF0YS5pZGxlX2lkKTsKLSsgICAgICAgICAgICBkYXRhLmlkbGVfaWQgPSAwOwotKyAg ICAgICAgfQotICAgICB9Ci0gICAgIHByaXYgPSBtX2NvbXBvc2VfdGFibGUtPnByaXY7Ci0gICAg IGlmIChwcml2KSB7Ci0gICAgICAgICBmb3IgKGkgPSAwOwotICAgICAgICAgICAgICBpIDwgKHBy aXYtPmZpcnN0X25fc2VxcyAqIGluZGV4X3N0cmlkZSk7Ci0gICAgICAgICAgICAgIGkgKz0gaW5k ZXhfc3RyaWRlKSB7Ci0rICAgICAgICAgICAgZGF0YS5pZGxlX2lkID0gZ190aW1lb3V0X2FkZF9z ZWNvbmRzICgyMCwgaWRsZV9jYiwgJmRhdGEpOwotICAgICAgICAgICAgIGZvciAoaiA9IGk7IGog PCBpICsgKGluZGV4X3N0cmlkZSAtIDIpOyBqKyspIHsKLSAgICAgICAgICAgICAgICAgZ3VpbnQg a2V5dmFsID0gcHJpdi0+ZGF0YV9maXJzdFtqXTsKLSAgICAgICAgICAgICAgICAgZ3VpbnQga2V5 Y29kZSA9IDA7Ci1AQCAtMTkzLDEzICsyNDYsMTggQEAgc2V0X2VuZ2luZV9jYiAoR09iamVjdCAq b2JqZWN0LCBHQXN5bmNSZXN1bHQgKnJlcywgZ3BvaW50ZXIgZGF0YSkKLSAgICAgICAgICAgICAg ICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lIChtX2VuZ2luZSwgInByb2Nlc3Mta2V5LWV2ZW50IiwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXl2YWwsIGtleWNvZGUs IG1vZGlmaWVycywgJnJldHZhbCk7Ci0gICAgICAgICAgICAgfQotKyAgICAgICAgICAgIGdfbWFp bl9sb29wX3J1biAobV9sb29wKTsKLSsgICAgICAgICAgICBpZiAoZGF0YS5pZGxlX2lkKSB7Ci0r ICAgICAgICAgICAgICAgIGdfc291cmNlX3JlbW92ZSAoZGF0YS5pZGxlX2lkKTsKLSsgICAgICAg ICAgICAgICAgZGF0YS5pZGxlX2lkID0gMDsKLSsgICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0g ICAgIH0KLSAKLSAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jIChlbnRy eSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFD SyAod2luZG93X2ZvY3VzX2luX2V2ZW50X2NiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBOVUxMKTsKLS0gICAgZ190aW1lb3V0X2FkZF9zZWNvbmRzICgxMCwg ZmluaXQsIE5VTEwpOwotKyAgICBkYXRhLmlkbGVfaWQgPSBnX3RpbWVvdXRfYWRkX3NlY29uZHMg KDEwLCBpZGxlX2NiLCAmZGF0YSk7Ci0gfQotIAotIHN0YXRpYyBnYm9vbGVhbgotQEAgLTIxNSwx MiArMjczLDEzIEBAIHdpbmRvd19mb2N1c19pbl9ldmVudF9jYiAoR3RrV2lkZ2V0ICplbnRyeSwg R2RrRXZlbnRGb2N1cyAqZXZlbnQsIGdwb2ludGVyIGRhdGEpCi0gICAgIHJldHVybiBGQUxTRTsK LSB9Ci0gCi0rCi0gc3RhdGljIHZvaWQKLSB3aW5kb3dfaW5zZXJ0ZWRfdGV4dF9jYiAoR3RrRW50 cnlCdWZmZXIgKmJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAg ICAgIHBvc2l0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAq Y2hhcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICBuY2hhcnMs Ci0tICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICAgICAgICBkYXRhKQotKyAgICAg ICAgICAgICAgICAgICAgICAgICBncG9pbnRlciAgICAgICAgdXNlcl9kYXRhKQotIHsKLSAvKiBo dHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ3RrL2NvbW1pdC85OTgxZjQ2ZTBiCi0gICog VGhlIGxhdGVzdCBHVEsgZG9lcyBub3QgZW1pdCAiaW5zZXJ0ZWQtdGV4dCIgd2hlbiB0aGUgdGV4 dCBpcyAiIi4KLUBAIC0yMzQsOCArMjkzLDkgQEAgd2luZG93X2luc2VydGVkX3RleHRfY2IgKEd0 a0VudHJ5QnVmZmVyICpidWZmZXIsCi0gICAgIGludCBzZXE7Ci0gICAgIGd1bmljaGFyIGNvZGUg PSBnX3V0ZjhfZ2V0X2NoYXIgKGNoYXJzKTsKLSAgICAgY29uc3QgZ2NoYXIgKnRlc3Q7Ci0tICAg IEd0a0VudHJ5ICplbnRyeSA9IEdUS19FTlRSWSAoZGF0YSk7Ci0rICAgIEd0a0VudHJ5ICplbnRy eSA9IEdUS19FTlRSWSAodXNlcl9kYXRhKTsKLSAgICAgSUJ1c0NvbXBvc2VUYWJsZVByaXZhdGUg KnByaXY7Ci0rICAgIHN0YXRpYyBUZXN0SWRsZURhdGEgZGF0YSA9IHsgLmNhdGVnb3J5ID0gVEVT VF9DT01NSVRfVEVYVCwgLmlkbGVfaWQgPSAwIH07Ci0gCi0gICAgIGdfYXNzZXJ0IChtX2NvbXBv c2VfdGFibGUgIT0gTlVMTCk7Ci0gCi1AQCAtMzAyLDIxICszNjIsMjYgQEAgd2luZG93X2luc2Vy dGVkX3RleHRfY2IgKEd0a0VudHJ5QnVmZmVyICpidWZmZXIsCi0gICAgICAgICAgICAgc3RyaWRl ID0gMDsKLSAgICAgICAgICAgICBzZXEgPSAwOwotICAgICAgICAgfSBlbHNlIHsKLS0gICAgICAg ICAgICBndGtfbWFpbl9xdWl0ICgpOwotKyAgICAgICAgICAgIC8qIEZpbmlzaCB0ZXN0cyAqLwot KyAgICAgICAgICAgIGlkbGVfY2IgKCZkYXRhKTsKLSAgICAgICAgICAgICByZXR1cm47Ci0gICAg ICAgICB9Ci0gICAgIH0KLSAgICAgaWYgKGVuYWJsZV8zMmJpdCAmJiBzZXEgPT0gcHJpdi0+Zmly c3Rfbl9zZXFzKSB7Ci0tICAgICAgICBndGtfbWFpbl9xdWl0ICgpOwotKyAgICAgICAgLyogRmlu aXNoIHRlc3RzICovCi0rICAgICAgICBpZGxlX2NiICgmZGF0YSk7Ci0gICAgICAgICByZXR1cm47 Ci0gICAgIH0KLSAKLSAjaWYgIUdUS19DSEVDS19WRVJTSU9OICgzLCAyMiwgMTYpCi0gICAgIG5f bG9vcCsrOwotICNlbmRpZgotKwotICAgICBndGtfZW50cnlfc2V0X3RleHQgKGVudHJ5LCAiIik7 Ci0rICAgIGdfbWFpbl9sb29wX3F1aXQgKG1fbG9vcCk7Ci0gfQotIAotKwotIHN0YXRpYyB2b2lk Ci0gY3JlYXRlX3dpbmRvdyAoKQotIHsKLUBAIC0zMzUsMTQgKzQwMCwxMyBAQCBjcmVhdGVfd2lu ZG93ICgpCi0gICAgIGd0a193aWRnZXRfc2hvd19hbGwgKHdpbmRvdyk7Ci0gfQotIAotKwotIHN0 YXRpYyB2b2lkCi0gdGVzdF9jb21wb3NlICh2b2lkKQotIHsKLSAgICAgR0xvZ0xldmVsRmxhZ3Mg ZmxhZ3M7Ci0tICAgIGlmICghcmVnaXN0ZXJfaWJ1c19lbmdpbmUgKCkpIHsKLS0gICAgICAgIGdf dGVzdF9mYWlsICgpOwotKyAgICBpZiAoIXJlZ2lzdGVyX2lidXNfZW5naW5lICgpKQotICAgICAg ICAgcmV0dXJuOwotLSAgICB9Ci0gCi0gICAgIGNyZWF0ZV93aW5kb3cgKCk7Ci0gICAgIC8qIEZJ WE1FOgotQEAgLTM1Nyw2ICs0MjEsNyBAQCB0ZXN0X2NvbXBvc2UgKHZvaWQpCi0gICAgIGdfbG9n X3NldF9hbHdheXNfZmF0YWwgKGZsYWdzKTsKLSB9Ci0gCi0rCi0gaW50Ci0gbWFpbiAoaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSkKLSB7Ci1AQCAtMzgwLDEwICs0NDUsMTIgQEAgbWFpbiAoaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSkKLSAjZWxzZQotICAgICB0ZXN0X25hbWUgPSBnX3N0cmR1cCAoZ19n ZXRlbnYgKCJMQU5HIikpOwotICNlbmRpZgotLSAgICBpZiAoIXRlc3RfbmFtZSB8fCAhZ19hc2Np aV9zdHJuY2FzZWNtcCAodGVzdF9uYW1lLCAiZW5fVVMiLCA1KSkgewotKyAgICBpZiAobV9jb21w b3NlX2ZpbGUgJiYKLSsgICAgICAgICghdGVzdF9uYW1lIHx8ICFnX2FzY2lpX3N0cm5jYXNlY21w ICh0ZXN0X25hbWUsICJlbl9VUyIsIDUpKSkgewotICAgICAgICAgZ19mcmVlICh0ZXN0X25hbWUp OwotICAgICAgICAgdGVzdF9uYW1lID0gZ19wYXRoX2dldF9iYXNlbmFtZSAobV9jb21wb3NlX2Zp bGUpOwotICAgICB9Ci0rICAgIG1fbG9vcCA9IGdfbWFpbl9sb29wX25ldyAoTlVMTCwgVFJVRSk7 Ci0gICAgIHRlc3RfcGF0aCA9IGdfYnVpbGRfZmlsZW5hbWUgKCIvaWJ1cy1jb21wb3NlIiwgdGVz dF9uYW1lLCBOVUxMKTsKLSAgICAgZ190ZXN0X2FkZF9mdW5jICh0ZXN0X3BhdGgsIHRlc3RfY29t cG9zZSk7Ci0gICAgIGdfZnJlZSAodGVzdF9wYXRoKTsKLWRpZmYgLS1naXQgYS9zcmMvdGVzdHMv aWJ1cy1lbmdpbmUtc3dpdGNoLmMgYi9zcmMvdGVzdHMvaWJ1cy1lbmdpbmUtc3dpdGNoLmMKLWlu ZGV4IGExZWViYTJhLi5iNTBiYWM1OSAxMDA2NDQKLS0tLSBhL3NyYy90ZXN0cy9pYnVzLWVuZ2lu ZS1zd2l0Y2guYwotKysrIGIvc3JjL3Rlc3RzL2lidXMtZW5naW5lLXN3aXRjaC5jCi1AQCAtMSw2 ICsxLDcgQEAKLSAvKiAtKi0gbW9kZTogQzsgYy1iYXNpYy1vZmZzZXQ6IDQ7IGluZGVudC10YWJz LW1vZGU6IG5pbDsgLSotICovCi0gCi0gI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDx1 bmlzdGQuaD4KLSAjaW5jbHVkZSAiaWJ1cy5oIgotIAotIHN0YXRpYyBJQnVzQnVzICpidXM7Ci1A QCAtNDcsNiArNDgsNyBAQCBjaGFuZ2VfY29udGV4dF9lbmdpbmUgKElCdXNJbnB1dENvbnRleHQg KmNvbnRleHQpCi0gICAgICAgICBnX2Fzc2VydF9jbXBzdHIgKGlidXNfZW5naW5lX2Rlc2NfZ2V0 X25hbWUgKGVuZ2luZV9kZXNjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPT0sCi0gICAg ICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZV9uYW1lc1tpXSk7Ci0rICAgICAgICBnX29iamVj dF91bnJlZiAoZW5naW5lX2Rlc2MpOwotICAgICB9Ci0gfQotIAotQEAgLTYxLDcgKzYzLDcgQEAg c3RhdGljIHZvaWQKLSBnbG9iYWxfZW5naW5lX2NoYW5nZWRfY2IgKElCdXNCdXMgKmJ1cywgZ2No YXIgKm5hbWUsIGdwb2ludGVyIHVzZXJfZGF0YSkKLSB7Ci0gICAgIEdsb2JhbEVuZ2luZUNoYW5n ZWREYXRhICpkYXRhID0gKEdsb2JhbEVuZ2luZUNoYW5nZWREYXRhICopIHVzZXJfZGF0YTsKLS0g ICAgaWYgKGRhdGEtPmNvdW50KysgPT0gMCkKLSsgICAgaWYgKGRhdGEtPmNvdW50KysgPT0gMSkK LSAgICAgICAgIGlidXNfcXVpdCAoKTsKLSB9Ci0gCi1AQCAtODQsNiArODYsMzUgQEAgY2hhbmdl X2dsb2JhbF9lbmdpbmVfY2IgKGdwb2ludGVyIHVzZXJfZGF0YSkKLSAgICAgcmV0dXJuIEZBTFNF OwotIH0KLSAKLStnYm9vbGVhbgotK193YWl0X2Zvcl9rZXlfcmVsZWFzZV9jYiAoZ3BvaW50ZXIg dXNlcl9kYXRhKQotK3sKLSsgICAgR01haW5Mb29wICpsb29wID0gKEdNYWluTG9vcCAqKXVzZXJf ZGF0YTsKLSsgICAgLyogSWYgdGhpcyBwcm9ncmFtIGlzIGludm9rZWQgYnkgbWFudWFsIHdpdGgg RW50ZXIga2V5IGluIEdOT01FCi0rICAgICAqIFdheWxhbmQgc2Vzc2lvbiwgaWJ1c19pbnB1dF9j b250ZXh0X2ZvY3VzX2luKCkgY2FuIGJlIGNhbGxlZCBpbgotKyAgICAgKiB0ZXN0X2NvbnRleHRf ZW5naW5lX3NldF9ieV9nbG9iYWwoKSBiZWZvcmUgdGhlIGtleSByZWxlYXNlIG9mCi0rICAgICAq IHRoZSBFbnRlciBrZXkgc28gaWJ1cy9idXMvaW5wdXRjb250ZXh0LmM6X2ljX3Byb2Nlc3Nfa2V5 X2V2ZW50KCkKLSsgICAgICogY291bGQgY2FsbCBhbm90aGVyIGJ1c19pbnB1dF9jb250ZXh0X2Zv Y3VzX2luKCkgaW4gdGhhdCB0ZXN0IGNhc2UKLSsgICAgICogYW5kIGZhaWwuCi0rICAgICAqLwot KyAgICBnX3Rlc3RfbWVzc2FnZSAoIldhaXQgZm9yIDMgc2Vjb25kcyBmb3Iga2V5IHJlbGVhc2Ug ZXZlbnQiKTsKLSsgICAgZ19tYWluX2xvb3BfcXVpdCAobG9vcCk7Ci0rICAgIHJldHVybiBHX1NP VVJDRV9SRU1PVkU7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rdGVzdF9pbml0ICh2b2lkKQotK3sK LSsgICAgY2hhciAqdHR5X25hbWUgPSB0dHluYW1lIChTVERJTl9GSUxFTk8pOwotKyAgICBHTWFp bkxvb3AgKmxvb3AgPSBnX21haW5fbG9vcF9uZXcgKE5VTEwsIFRSVUUpOwotKyAgICBnX3Rlc3Rf bWVzc2FnZSAoIlRlc3Qgb24gJXMiLCB0dHlfbmFtZSA/IHR0eV9uYW1lIDogIihudWxsKSIpOwot KyAgICBpZiAodHR5X25hbWUgJiYgZ19zdHJzdHJfbGVuICh0dHlfbmFtZSwgLTEsICJwdHMiKSkg ewotKyAgICAgICAgZ190aW1lb3V0X2FkZF9zZWNvbmRzICgzLCBfd2FpdF9mb3Jfa2V5X3JlbGVh c2VfY2IsIGxvb3ApOwotKyAgICAgICAgZ19tYWluX2xvb3BfcnVuIChsb29wKTsKLSsgICAgfQot KyAgICBnX21haW5fbG9vcF91bnJlZiAobG9vcCk7Ci0rfQotKwotIHN0YXRpYyB2b2lkCi0gdGVz dF9nbG9iYWxfZW5naW5lICh2b2lkKQotIHsKLUBAIC0xMDUsNiArMTM2LDEwIEBAIHRlc3RfZ2xv YmFsX2VuZ2luZSAodm9pZCkKLSAgICAgfSBlbHNlIHsKLSAgICAgICAgIGRhdGEucmV2ZXJzZSA9 IEZBTFNFOwotICAgICB9Ci0rICAgIGdfdGVzdF9tZXNzYWdlICgiSW5pdGlhbCBlbmdpbmUgbmFt ZTogJXMiLAotKyAgICAgICAgICAgICAgICAgICAgZGVzYyA/IGlidXNfZW5naW5lX2Rlc2NfZ2V0 X25hbWUgKGRlc2MpIDogIihudWxsKSIpOwotKyAgICBpZiAoZGVzYykKLSsgICAgICAgIGdfb2Jq ZWN0X3VucmVmIChkZXNjKTsKLSAKLSAgICAgZGF0YS5jb3VudCA9IDA7Ci0gCi1AQCAtMTEyLDcg KzE0Nyw3IEBAIHRlc3RfZ2xvYmFsX2VuZ2luZSAodm9pZCkKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJnbG9iYWwtZW5naW5lLWNoYW5nZWQiLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAoZ2xvYmFsX2VuZ2luZV9jaGFuZ2VkX2Ni KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRhKTsKLS0gICAgZGF0 YS50aW1lb3V0X2lkID0gZ190aW1lb3V0X2FkZF9zZWNvbmRzICgxLCB0aW1lb3V0X2NiLCAmZGF0 YSk7Ci0rICAgIGRhdGEudGltZW91dF9pZCA9IGdfdGltZW91dF9hZGRfc2Vjb25kcyAoMywgdGlt ZW91dF9jYiwgJmRhdGEpOwotICAgICBkYXRhLmlkbGVfaWQgPSBnX2lkbGVfYWRkICgoR1NvdXJj ZUZ1bmMpIGNoYW5nZV9nbG9iYWxfZW5naW5lX2NiLCAmZGF0YSk7Ci0gCi0gICAgIGlidXNfbWFp biAoKTsKLUBAIC0xNDQsNiArMTc5LDcgQEAgdGVzdF9jb250ZXh0X2VuZ2luZSAodm9pZCkKLSAg ICAgY2hhbmdlX2NvbnRleHRfZW5naW5lIChjb250ZXh0KTsKLSAgICAgZW5naW5lX2Rlc2MgPSBp YnVzX2lucHV0X2NvbnRleHRfZ2V0X2VuZ2luZSAoY29udGV4dCk7Ci0gICAgIGdfYXNzZXJ0X2Nt cHN0ciAoaWJ1c19lbmdpbmVfZGVzY19nZXRfbmFtZSAoZW5naW5lX2Rlc2MpLCA9PSwgQUZURVJf RU5HSU5FKTsKLSsgICAgZ19vYmplY3RfdW5yZWYgKGVuZ2luZV9kZXNjKTsKLSAKLSAgICAgZ19v YmplY3RfdW5yZWYgKGNvbnRleHQpOwotIH0KLUBAIC0xNzEsNiArMjA3LDcgQEAgdGVzdF9jb250 ZXh0X2VuZ2luZV9zZXRfYnlfZ2xvYmFsICh2b2lkKQotIAotICAgICBlbmdpbmVfZGVzYyA9IGli dXNfaW5wdXRfY29udGV4dF9nZXRfZW5naW5lIChjb250ZXh0KTsKLSAgICAgZ19hc3NlcnRfY21w c3RyIChpYnVzX2VuZ2luZV9kZXNjX2dldF9uYW1lIChlbmdpbmVfZGVzYyksID09LCBBRlRFUl9F TkdJTkUpOwotKyAgICBnX29iamVjdF91bnJlZiAoZW5naW5lX2Rlc2MpOwotIAotICAgICBnX29i amVjdF91bnJlZiAoY29udGV4dCk7Ci0gfQotQEAgLTE5OSw5ICsyMzYsMTEgQEAgdGVzdF9jb250 ZXh0X2VuZ2luZV9zZXRfYnlfZm9jdXMgKHZvaWQpCi0gCi0gICAgIGVuZ2luZV9kZXNjID0gaWJ1 c19pbnB1dF9jb250ZXh0X2dldF9lbmdpbmUgKGNvbnRleHQpOwotICAgICBnX2Fzc2VydF9jbXBz dHIgKGlidXNfZW5naW5lX2Rlc2NfZ2V0X25hbWUgKGVuZ2luZV9kZXNjKSwgPT0sICJkdW1teSIp OwotKyAgICBnX29iamVjdF91bnJlZiAoZW5naW5lX2Rlc2MpOwotIAotICAgICBlbmdpbmVfZGVz YyA9IGlidXNfaW5wdXRfY29udGV4dF9nZXRfZW5naW5lIChhbm90aGVyX2NvbnRleHQpOwotICAg ICBnX2Fzc2VydF9jbXBzdHIgKGlidXNfZW5naW5lX2Rlc2NfZ2V0X25hbWUgKGVuZ2luZV9kZXNj KSwgPT0sIEFGVEVSX0VOR0lORSk7Ci0rICAgIGdfb2JqZWN0X3VucmVmIChlbmdpbmVfZGVzYyk7 Ci0gCi0gICAgIGdfb2JqZWN0X3VucmVmIChjb250ZXh0KTsKLSAgICAgZ19vYmplY3RfdW5yZWYg KGFub3RoZXJfY29udGV4dCk7Ci1AQCAtMjIwLDYgKzI1OSw4IEBAIG1haW4gKGdpbnQgICAgYXJn YywKLSAKLSAgICAgaWJ1c19idXNfc2V0X3dhdGNoX2lidXNfc2lnbmFsIChidXMsIFRSVUUpOwot IAotKyAgICBnX3Rlc3RfYWRkX2Z1bmMgKCIvaWJ1cy9lbmdpbmUtc3dpdGNoL3Rlc3QtaW5pdCIs Ci0rICAgICAgICAgICAgICAgICAgICAgdGVzdF9pbml0KTsKLSAgICAgZ190ZXN0X2FkZF9mdW5j ICgiL2lidXMvZW5naW5lLXN3aXRjaC9nbG9iYWwtZW5naW5lIiwKLSAgICAgICAgICAgICAgICAg ICAgICB0ZXN0X2dsb2JhbF9lbmdpbmUpOwotICAgICBnX3Rlc3RfYWRkX2Z1bmMgKCIvaWJ1cy9l bmdpbmUtc3dpdGNoL2NvbnRleHQtZW5naW5lIiwKLWRpZmYgLS1naXQgYS9zcmMvdGVzdHMveGti LWxhdGluLWxheW91dHMgYi9zcmMvdGVzdHMveGtiLWxhdGluLWxheW91dHMKLWluZGV4IDkyNDY0 MjM0Li40NWM5OTM1OCAxMDA3NTUKLS0tLSBhL3NyYy90ZXN0cy94a2ItbGF0aW4tbGF5b3V0cwot KysrIGIvc3JjL3Rlc3RzL3hrYi1sYXRpbi1sYXlvdXRzCi1AQCAtMTIwLDYgKzEyMCwxNSBAQCBF T0ZfUkVBRF9YS0IKLSAKLSBtYWluKCkKLSB7Ci0rICAgIGlmIFsgeCIkRElTUExBWSIgPSB4IF0g OyB0aGVuCi0rICAgICAgICBlY2hvICJza2lwOiBObyBkaXNwbGF5LiBNYXliZSBoZWFkbGVzcyBt b2RlLiIKLSsgICAgICAgIGV4aXQgNzcKLSsgICAgZmkKLSsgICAgaWYgISB3aGljaCBzZXR4a2Jt YXAgPiAvZGV2L251bGwgOyB0aGVuCi0rICAgICAgICBlY2hvICJza2lwOiBObyBzZXR4a2JtYXAi Ci0rICAgICAgICBleGl0IDc3Ci0rICAgIGZpCi0rCi0gICAgIHBhcnNlX2FyZ3MgIiRAIgotIAot ICAgICBpZiBbIHgiJElOU1RBTExFRF9TQ0hFTUFTX0RJUiIgIT0geCBdIDsgdGhlbgotLS0gCi0y LjQ1LjAKLQotRnJvbSA0NGY5YTU5NTdlNGM1M2I0YTZlNmIzZjQyYjU2ZjJkMjBkNThhMjFjIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZnVqaXdhcmF0IDx0YWthby5mdWppd2FyYTFA Z21haWwuY29tPgotRGF0ZTogU2F0LCAyNyBKdWwgMjAyNCAxOTowNDozOSArMDkwMAotU3ViamVj dDogW1BBVENIIDMvNl0gc3JjL3Rlc3RzOiBFbmFibGUgR1RLNAotCi1TZWVtcyBHVEszIGRvZXMg bm90IHdvcmsgaW4gR05PTUUgV2F5bGFuZCBoZWFkbGVzcyBzZXNzaW9uIHRvIGdldAotR2RrTW9u aXRvciBpbiBndGtfaW5pdCgpIGFuZCB0cnlpbmcgdG8gbWlncmF0ZSB0aGUgdGVzdCBjYXNlcyB0 bwotR1RLNC4KLUNhbGxpbmcgaWJ1c19pbml0KCkgdHdpY2Ugd2l0aCBnX3N0YXRpY19yZXNvdXJj ZV9pbml0KCkgY2F1c2VzIGEKLW1lbW9yeSBlcnJvciBhbmQgZml4IGl0LgotCi1CVUc9aHR0cHM6 Ly9naXRodWIuY29tL2lidXMvaWJ1cy9wdWxsLzI2NTcKLS0tLQotIHNyYy90ZXN0cy9NYWtlZmls ZS5hbSAgICAgfCAgIDggKy0tCi0gc3JjL3Rlc3RzL2lidXMtY29tcG9zZS5jICB8IDE0NyArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQotIHNyYy90ZXN0cy9pYnVzLWtleXBy ZXNzLmMgfCAxNDYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLQotIDMgZmls ZXMgY2hhbmdlZCwgMjUxIGluc2VydGlvbnMoKyksIDUwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0t Z2l0IGEvc3JjL3Rlc3RzL01ha2VmaWxlLmFtIGIvc3JjL3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRl eCA2YzRjODZjZi4uMTBhY2QwYTcgMTAwNjQ0Ci0tLS0gYS9zcmMvdGVzdHMvTWFrZWZpbGUuYW0K LSsrKyBiL3NyYy90ZXN0cy9NYWtlZmlsZS5hbQotQEAgLTE4Miw4ICsxODIsOCBAQCBpYnVzX2J1 c19TT1VSQ0VTID0gaWJ1cy1idXMuYwotIGlidXNfYnVzX0xEQUREID0gJChwcm9nX2xkYWRkKQot IAotIGlidXNfY29tcG9zZV9TT1VSQ0VTID0gaWJ1cy1jb21wb3NlLmMKLS1pYnVzX2NvbXBvc2Vf Q0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAotLWlidXNfY29tcG9zZV9MREFERCA9ICQocHJvZ19sZGFk ZCkgQEdUSzNfTElCU0AKLStpYnVzX2NvbXBvc2VfQ0ZMQUdTID0gQEdUSzRfQ0ZMQUdTQAotK2li dXNfY29tcG9zZV9MREFERCA9ICQocHJvZ19sZGFkZCkgQEdUSzRfTElCU0AKLSAKLSBpYnVzX2Nv bmZpZ19TT1VSQ0VTID0gaWJ1cy1jb25maWcuYwotIGlidXNfY29uZmlnX0xEQUREID0gJChwcm9n X2xkYWRkKQotQEAgLTIwNyw4ICsyMDcsOCBAQCBpYnVzX2tleW5hbWVzX1NPVVJDRVMgPSBpYnVz LWtleW5hbWVzLmMKLSBpYnVzX2tleW5hbWVzX0xEQUREID0gJChwcm9nX2xkYWRkKQotIAotIGli dXNfa2V5cHJlc3NfU09VUkNFUyA9IGlidXMta2V5cHJlc3MuYwotLWlidXNfa2V5cHJlc3NfQ0ZM QUdTID0gQEdUSzNfQ0ZMQUdTQCBAWFRFU1RfQ0ZMQUdTQAotLWlidXNfa2V5cHJlc3NfTERBREQg PSAkKHByb2dfbGRhZGQpIEBHVEszX0xJQlNAIEBYVEVTVF9MSUJTQAotK2lidXNfa2V5cHJlc3Nf Q0ZMQUdTID0gQEdUSzRfQ0ZMQUdTQCBAWFRFU1RfQ0ZMQUdTQAotK2lidXNfa2V5cHJlc3NfTERB REQgPSAkKHByb2dfbGRhZGQpIEBHVEs0X0xJQlNAIEBYVEVTVF9MSUJTQAotIAotIGlidXNfcmVn aXN0cnlfU09VUkNFUyA9IGlidXMtcmVnaXN0cnkuYwotIGlidXNfcmVnaXN0cnlfTERBREQgPSAk KHByb2dfbGRhZGQpCi1kaWZmIC0tZ2l0IGEvc3JjL3Rlc3RzL2lidXMtY29tcG9zZS5jIGIvc3Jj L3Rlc3RzL2lidXMtY29tcG9zZS5jCi1pbmRleCA2NjBhZWU3Zi4uNTc4NTFiMGEgMTAwNjQ0Ci0t LS0gYS9zcmMvdGVzdHMvaWJ1cy1jb21wb3NlLmMKLSsrKyBiL3NyYy90ZXN0cy9pYnVzLWNvbXBv c2UuYwotQEAgLTEzLDYgKzEzLDkgQEAgc3RhdGljIElCdXNDb21wb3NlVGFibGVFeCAqbV9jb21w b3NlX3RhYmxlOwotIHN0YXRpYyBJQnVzRW5naW5lICptX2VuZ2luZTsKLSBzdGF0aWMgZ2NoYXIg Km1fc3JjZGlyOwotIHN0YXRpYyBHTWFpbkxvb3AgKm1fbG9vcDsKLSsjaWYgR1RLX0NIRUNLX1ZF UlNJT04gKDQsIDAsIDApCi0rc3RhdGljIGdib29sZWFuIG1fbGlzdF90b3BsZXZlbDsKLSsjZW5k aWYKLSAKLSB0eXBlZGVmIGVudW0gewotICAgICBURVNUX0NSRUFURV9FTkdJTkUsCi1AQCAtMjUs OSArMjgsMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgX1Rlc3RJZGxlRGF0YSB7Ci0gfSBUZXN0SWRsZURh dGE7Ci0gCi0gZXh0ZXJuIGd1aW50IGlidXNfY29tcG9zZV9rZXlfZmxhZyAoZ3VpbnQga2V5KTsK LSsKLSsjaWYgR1RLX0NIRUNLX1ZFUlNJT04gKDQsIDAsIDApCi0rc3RhdGljIHZvaWQgICAgIGV2 ZW50X2NvbnRyb2xsZXJfZW50ZXJfY2IgKEd0a0V2ZW50Q29udHJvbGxlciAqY29udHJvbGxlciwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAg ICAgICAgICB1c2VyX2RhdGEpOwotKyNlbHNlCi0gc3RhdGljIGdib29sZWFuIHdpbmRvd19mb2N1 c19pbl9ldmVudF9jYiAoR3RrV2lkZ2V0ICAgICAqZW50cnksCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR2RrRXZlbnRGb2N1cyAqZXZlbnQsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgZGF0YSk7Ci0r I2VuZGlmCi0rCi0gCi0gc3RhdGljIGdjaGFyICoKLSBnZXRfY29tcG9zZV9wYXRoICgpCi1AQCAt NzYsNyArODYsMTEgQEAgaWRsZV9jYiAoZ3BvaW50ZXIgdXNlcl9kYXRhKQotICAgICAgICAgICAg IGlmIChnX21haW5fbG9vcF9pc19ydW5uaW5nIChtX2xvb3ApKQotICAgICAgICAgICAgICAgICBn X21haW5fbG9vcF9xdWl0IChtX2xvb3ApOwotICAgICAgICAgICAgIGdfY2xlYXJfcG9pbnRlciAo Jm1fbG9vcCwgZ19tYWluX2xvb3BfdW5yZWYpOwotKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTiAoNCwg MCwgMCkKLSsgICAgICAgICAgICBtX2xpc3RfdG9wbGV2ZWwgPSBGQUxTRTsKLSsjZWxzZQotICAg ICAgICAgICAgIGd0a19tYWluX3F1aXQgKCk7Ci0rI2VuZGlmCi0gICAgICAgICB9Ci0gICAgICAg ICBkYXRhLT5pZGxlX2lkID0gMDsKLSAgICAgICAgIGJyZWFrOwotQEAgLTE3MCwxMyArMTg0LDI4 IEBAIHJlZ2lzdGVyX2lidXNfZW5naW5lICgpCi0gfQotIAotIAotK3N0YXRpYyB2b2lkCi0rd2lu ZG93X2Rlc3Ryb3lfY2IgKHZvaWQpCi0rewotKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTiAoNCwgMCwg MCkKLSsgICAgbV9saXN0X3RvcGxldmVsID0gRkFMU0U7Ci0rI2Vsc2UKLSsgICAgZ3RrX21haW5f cXVpdCAoKTsKLSsjZW5kaWYKLSt9Ci0rCi0rCi0gc3RhdGljIHZvaWQKLSBzZXRfZW5naW5lX2Ni IChHT2JqZWN0ICAgICAgKm9iamVjdCwKLSAgICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQgKnJl cywKLSAgICAgICAgICAgICAgICBncG9pbnRlciAgICAgIHVzZXJfZGF0YSkKLSB7Ci0gICAgIElC dXNCdXMgKmJ1cyA9IElCVVNfQlVTIChvYmplY3QpOwotKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTiAo NCwgMCwgMCkKLSsgICAgR3RrRXZlbnRDb250cm9sbGVyICpjb250cm9sbGVyID0gR1RLX0VWRU5U X0NPTlRST0xMRVIgKHVzZXJfZGF0YSk7Ci0rI2Vsc2UKLSAgICAgR3RrV2lkZ2V0ICplbnRyeSA9 IEdUS19XSURHRVQgKHVzZXJfZGF0YSk7Ci0rI2VuZGlmCi0gICAgIEdFcnJvciAqZXJyb3IgPSBO VUxMOwotICAgICBzdGF0aWMgVGVzdElkbGVEYXRhIGRhdGEgPSB7IC5jYXRlZ29yeSA9IFRFU1Rf Q09NTUlUX1RFWFQsIC5pZGxlX2lkID0gMCB9OwotICAgICBpbnQgaSwgajsKLUBAIC0yNTQsMjQg KzI4Myw1NSBAQCBzZXRfZW5naW5lX2NiIChHT2JqZWN0ICAgICAgKm9iamVjdCwKLSAgICAgICAg IH0KLSAgICAgfQotIAotKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTiAoNCwgMCwgMCkKLSsgICAgZ19z aWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jICgKLSsgICAgICAgICAgICBjb250cm9s bGVyLAotKyAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKGV2ZW50X2NvbnRyb2xsZXJfZW50ZXJfY2Ip LAotKyAgICAgICAgICAgIE5VTEwpOwotKyNlbHNlCi0gICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rp c2Nvbm5lY3RfYnlfZnVuYyAoZW50cnksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKHdpbmRvd19mb2N1c19pbl9ldmVudF9jYiksCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0rI2VuZGlmCi0g ICAgIGRhdGEuaWRsZV9pZCA9IGdfdGltZW91dF9hZGRfc2Vjb25kcyAoMTAsIGlkbGVfY2IsICZk YXRhKTsKLSB9Ci0gCi0tc3RhdGljIGdib29sZWFuCi0td2luZG93X2ZvY3VzX2luX2V2ZW50X2Ni IChHdGtXaWRnZXQgKmVudHJ5LCBHZGtFdmVudEZvY3VzICpldmVudCwgZ3BvaW50ZXIgZGF0YSkK LSsKLStzdGF0aWMgdm9pZAotK3NldF9lbmdpbmUgKGdwb2ludGVyIHVzZXJfZGF0YSkKLSB7Ci0r ICAgIGdfdGVzdF9tZXNzYWdlICgic2V0X2VuZ2luZSgpIGlzIGNhbGxpbmciKTsKLSAgICAgZ19h c3NlcnQgKG1fYnVzICE9IE5VTEwpOwotICAgICBpYnVzX2J1c19zZXRfZ2xvYmFsX2VuZ2luZV9h c3luYyAobV9idXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieGti dGVzdDp1czo6ZW5nIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0x LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldF9lbmdpbmVfY2IsCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeSk7Ci0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1c2VyX2RhdGEpOwotK30KLSsKLSsKLSsjaWYgR1RLX0NIRUNL X1ZFUlNJT04gKDQsIDAsIDApCi0rc3RhdGljIHZvaWQKLStldmVudF9jb250cm9sbGVyX2VudGVy X2NiIChHdGtFdmVudENvbnRyb2xsZXIgKmNvbnRyb2xsZXIsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgZ3BvaW50ZXIgICAgICAgICAgICB1c2VyX2RhdGEpCi0rewotKyAgICBnX3Rlc3Rf bWVzc2FnZSAoIkV2ZW50Q29udHJvbGxlciBlbWl0cyBcImVudGVyXCIgc2lnbmFsIik7Ci0rICAg IHNldF9lbmdpbmUgKGNvbnRyb2xsZXIpOwotK30KLSsKLSsjZWxzZQotKwotK3N0YXRpYyBnYm9v bGVhbgotK3dpbmRvd19mb2N1c19pbl9ldmVudF9jYiAoR3RrV2lkZ2V0ICAgICAqZW50cnksCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtFdmVudEZvY3VzICpldmVudCwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICAgICAgIGRhdGEpCi0rewotKyAgICBnX3Rlc3Rf bWVzc2FnZSAoIkVudHJ5IGVtaXRzIFwiZm9jdXMtaW4tZXZlbnRcIiBzaWduYWwiKTsKLSsgICAg c2V0X2VuZ2luZSAoZW50cnkpOwotICAgICByZXR1cm4gRkFMU0U7Ci0gfQotKyNlbmRpZgotIAot IAotIHN0YXRpYyB2b2lkCi1AQCAtMjkzLDcgKzM1Myw5IEBAIHdpbmRvd19pbnNlcnRlZF90ZXh0 X2NiIChHdGtFbnRyeUJ1ZmZlciAqYnVmZmVyLAotICAgICBpbnQgc2VxOwotICAgICBndW5pY2hh ciBjb2RlID0gZ191dGY4X2dldF9jaGFyIChjaGFycyk7Ci0gICAgIGNvbnN0IGdjaGFyICp0ZXN0 OwotKyNpZiAhIEdUS19DSEVDS19WRVJTSU9OICg0LCAwLCAwKQotICAgICBHdGtFbnRyeSAqZW50 cnkgPSBHVEtfRU5UUlkgKHVzZXJfZGF0YSk7Ci0rI2VuZGlmCi0gICAgIElCdXNDb21wb3NlVGFi bGVQcml2YXRlICpwcml2OwotICAgICBzdGF0aWMgVGVzdElkbGVEYXRhIGRhdGEgPSB7IC5jYXRl Z29yeSA9IFRFU1RfQ09NTUlUX1RFWFQsIC5pZGxlX2lkID0gMCB9OwotIAotQEAgLTMwNiw2ICsz NjgsMTAgQEAgd2luZG93X2luc2VydGVkX3RleHRfY2IgKEd0a0VudHJ5QnVmZmVyICpidWZmZXIs Ci0gICAgICAgICBuX2xvb3AgPSAwOwotICAgICAgICAgcmV0dXJuOwotICAgICB9Ci0rI2VuZGlm Ci0rI2lmIEdUS19DSEVDS19WRVJTSU9OICg0LCAwLCAwKQotKyAgICBpZiAoY29kZSA9PSAwKQot KyAgICAgICAgcmV0dXJuOwotICNlbmRpZgotICAgICBpID0gc3RyaWRlICsgKG1fY29tcG9zZV90 YWJsZS0+bWF4X3NlcV9sZW4gKyAyKSAtIDI7Ci0gICAgIHNlcSA9IChpICsgMikgLyAobV9jb21w b3NlX3RhYmxlLT5tYXhfc2VxX2xlbiArIDIpOwotQEAgLTMxOCwxMiArMzg0LDEyIEBAIHdpbmRv d19pbnNlcnRlZF90ZXh0X2NiIChHdGtFbnRyeUJ1ZmZlciAqYnVmZmVyLAotICAgICAgICAgICAg IHRlc3QgPSBSRUQgIkZBSUwiIE5DOwotICAgICAgICAgICAgIGdfdGVzdF9mYWlsICgpOwotICAg ICAgICAgfQotLSAgICAgICAgZ19wcmludCAoIiUwNWQvJTA1ZCAlcyBleHBlY3RlZDogJTA0WCB0 eXBlZDogJTA0WFxuIiwKLS0gICAgICAgICAgICAgICAgIHNlcSwKLS0gICAgICAgICAgICAgICAg IG1fY29tcG9zZV90YWJsZS0+bl9zZXFzLAotLSAgICAgICAgICAgICAgICAgdGVzdCwKLS0gICAg ICAgICAgICAgICAgIG1fY29tcG9zZV90YWJsZS0+ZGF0YVtpXSwKLS0gICAgICAgICAgICAgICAg IGNvZGUpOwotKyAgICAgICAgZ190ZXN0X21lc3NhZ2UgKCIlMDVkLyUwNWQgJXMgZXhwZWN0ZWQ6 ICUwNFggdHlwZWQ6ICUwNFgiLAotKyAgICAgICAgICAgICAgICAgICAgICAgIHNlcSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICBtX2NvbXBvc2VfdGFibGUtPm5fc2VxcywKLSsgICAgICAgICAg ICAgICAgICAgICAgICB0ZXN0LAotKyAgICAgICAgICAgICAgICAgICAgICAgIG1fY29tcG9zZV90 YWJsZS0+ZGF0YVtpXSwKLSsgICAgICAgICAgICAgICAgICAgICAgICBjb2RlKTsKLSAgICAgfSBl bHNlIHsKLSAgICAgICAgIGNvbnN0IGdjaGFyICpwID0gY2hhcnM7Ci0gICAgICAgICBndWludCBu dW0gPSBwcml2LT5kYXRhX2ZpcnN0W2ldOwotQEAgLTM0NCwxNCArNDEwLDE0IEBAIHdpbmRvd19p bnNlcnRlZF90ZXh0X2NiIChHdGtFbnRyeUJ1ZmZlciAqYnVmZmVyLAotICAgICAgICAgICAgIHRl c3QgPSBSRUQgIkZBSUwiIE5DOwotICAgICAgICAgICAgIGdfdGVzdF9mYWlsICgpOwotICAgICAg ICAgfQotLSAgICAgICAgZ19wcmludCAoIiUwNWQvJTA1bGQgJXMgZXhwZWN0ZWQ6ICUwNFhbJWRd IHR5cGVkOiAlMDRYXG4iLAotLSAgICAgICAgICAgICAgICAgc2VxLAotLSAgICAgICAgICAgICAg ICAgcHJpdi0+Zmlyc3Rfbl9zZXFzLAotLSAgICAgICAgICAgICAgICAgdGVzdCwKLS0gICAgICAg ICAgICAgICAgIHZhbGlkX291dHB1dCA/IHByaXYtPmRhdGFfc2Vjb25kW2luZGV4XQotLSAgICAg ICAgICAgICAgICAgICAgICAgICA6IHByaXYtPmRhdGFfc2Vjb25kW2luZGV4ICsgal0sCi0tICAg ICAgICAgICAgICAgICB2YWxpZF9vdXRwdXQgPyBpbmRleCArIG51bSA6IGluZGV4ICsgaiwKLS0g ICAgICAgICAgICAgICAgIHZhbGlkX291dHB1dCA/IGdfdXRmOF9nZXRfY2hhciAoY2hhcnMpIDog Y29kZSk7Ci0rICAgICAgICBnX3Rlc3RfbWVzc2FnZSAoIiUwNWQvJTA1bGQgJXMgZXhwZWN0ZWQ6 ICUwNFhbJWRdIHR5cGVkOiAlMDRYIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICBzZXEsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+Zmlyc3Rfbl9zZXFzLAotKyAgICAgICAgICAg ICAgICAgICAgICAgIHRlc3QsCi0rICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfb3V0cHV0 ID8gcHJpdi0+ZGF0YV9zZWNvbmRbaW5kZXhdCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA6IHByaXYtPmRhdGFfc2Vjb25kW2luZGV4ICsgal0sCi0rICAgICAgICAgICAgICAgICAg ICAgICAgdmFsaWRfb3V0cHV0ID8gaW5kZXggKyBudW0gOiBpbmRleCArIGosCi0rICAgICAgICAg ICAgICAgICAgICAgICAgdmFsaWRfb3V0cHV0ID8gZ191dGY4X2dldF9jaGFyIChjaGFycykgOiBj b2RlKTsKLSAgICAgfQotIAotICAgICBzdHJpZGUgKz0gbV9jb21wb3NlX3RhYmxlLT5tYXhfc2Vx X2xlbiArIDI7Ci1AQCAtMzc3LDcgKzQ0MywxMSBAQCB3aW5kb3dfaW5zZXJ0ZWRfdGV4dF9jYiAo R3RrRW50cnlCdWZmZXIgKmJ1ZmZlciwKLSAgICAgbl9sb29wKys7Ci0gI2VuZGlmCi0gCi0rI2lm IEdUS19DSEVDS19WRVJTSU9OICg0LCAwLCAwKQotKyAgICBndGtfZW50cnlfYnVmZmVyX3NldF90 ZXh0IChidWZmZXIsICIiLCAwKTsKLSsjZWxzZQotICAgICBndGtfZW50cnlfc2V0X3RleHQgKGVu dHJ5LCAiIik7Ci0rI2VuZGlmCi0gICAgIGdfbWFpbl9sb29wX3F1aXQgKG1fbG9vcCk7Ci0gfQot IAotQEAgLTM4NSwxOSArNDU1LDQzIEBAIHdpbmRvd19pbnNlcnRlZF90ZXh0X2NiIChHdGtFbnRy eUJ1ZmZlciAqYnVmZmVyLAotIHN0YXRpYyB2b2lkCi0gY3JlYXRlX3dpbmRvdyAoKQotIHsKLS0g ICAgR3RrV2lkZ2V0ICp3aW5kb3cgPSBndGtfd2luZG93X25ldyAoR1RLX1dJTkRPV19UT1BMRVZF TCk7Ci0tICAgIEd0a1dpZGdldCAqZW50cnkgPSBndGtfZW50cnlfbmV3ICgpOwotKyAgICBHdGtX aWRnZXQgKndpbmRvdzsKLSsgICAgR3RrV2lkZ2V0ICplbnRyeTsKLSAgICAgR3RrRW50cnlCdWZm ZXIgKmJ1ZmZlcjsKLSsjaWYgR1RLX0NIRUNLX1ZFUlNJT04gKDQsIDAsIDApCi0rICAgIEd0a0V2 ZW50Q29udHJvbGxlciAqY29udHJvbGxlcjsKLSsgICAgR3RrRWRpdGFibGUgKnRleHQ7Ci0rCi0r ICAgIHdpbmRvdyA9IGd0a193aW5kb3dfbmV3ICgpOwotKyNlbHNlCi0rICAgIHdpbmRvdyA9IGd0 a193aW5kb3dfbmV3IChHVEtfV0lORE9XX1RPUExFVkVMKTsKLSsjZW5kaWYKLSsgICAgZW50cnkg PSBndGtfZW50cnlfbmV3ICgpOwotIAotICAgICBnX3NpZ25hbF9jb25uZWN0ICh3aW5kb3csICJk ZXN0cm95IiwKLS0gICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAoZ3RrX21haW5fcXVp dCksIE5VTEwpOwotKyAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLICh3aW5kb3dfZGVz dHJveV9jYiksIE5VTEwpOwotKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTiAoNCwgMCwgMCkKLSsgICAg Y29udHJvbGxlciA9IGd0a19ldmVudF9jb250cm9sbGVyX2ZvY3VzX25ldyAoKTsKLSsgICAgdGV4 dCA9IGd0a19lZGl0YWJsZV9nZXRfZGVsZWdhdGUgKEdUS19FRElUQUJMRSAoZW50cnkpKTsKLSsg ICAgZ19zaWduYWxfY29ubmVjdCAoY29udHJvbGxlciwgImVudGVyIiwKLSsgICAgICAgICAgICAg ICAgICAgICAgR19DQUxMQkFDSyAoZXZlbnRfY29udHJvbGxlcl9lbnRlcl9jYiksIE5VTEwpOwot KyAgICBndGtfd2lkZ2V0X2FkZF9jb250cm9sbGVyIChHVEtfV0lER0VUICh0ZXh0KSwgY29udHJv bGxlcik7Ci0rI2Vsc2UKLSAgICAgZ19zaWduYWxfY29ubmVjdCAoZW50cnksICJmb2N1cy1pbi1l dmVudCIsCi0gICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKHdpbmRvd19mb2N1c19p bl9ldmVudF9jYiksIE5VTEwpOwotKyNlbmRpZgotICAgICBidWZmZXIgPSBndGtfZW50cnlfZ2V0 X2J1ZmZlciAoR1RLX0VOVFJZIChlbnRyeSkpOwotICAgICBnX3NpZ25hbF9jb25uZWN0IChidWZm ZXIsICJpbnNlcnRlZC10ZXh0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAo d2luZG93X2luc2VydGVkX3RleHRfY2IpLCBlbnRyeSk7Ci0rCi0rI2lmIEdUS19DSEVDS19WRVJT SU9OICg0LCAwLCAwKQotKyAgICBndGtfd2luZG93X3NldF9jaGlsZCAoR1RLX1dJTkRPVyAod2lu ZG93KSwgZW50cnkpOwotKyAgICBndGtfd2luZG93X3NldF9mb2N1cyAoR1RLX1dJTkRPVyAod2lu ZG93KSwgZW50cnkpOwotKyAgICBndGtfd2luZG93X3ByZXNlbnQgKEdUS19XSU5ET1cgKHdpbmRv dykpOwotKyNlbHNlCi0gICAgIGd0a19jb250YWluZXJfYWRkIChHVEtfQ09OVEFJTkVSICh3aW5k b3cpLCBlbnRyeSk7Ci0gICAgIGd0a193aWRnZXRfc2hvd19hbGwgKHdpbmRvdyk7Ci0rI2VuZGlm Ci0gfQotIAotIAotQEAgLTQwOCw2ICs1MDIsOSBAQCB0ZXN0X2NvbXBvc2UgKHZvaWQpCi0gICAg IGlmICghcmVnaXN0ZXJfaWJ1c19lbmdpbmUgKCkpCi0gICAgICAgICByZXR1cm47Ci0gCi0rI2lm IEdUS19DSEVDS19WRVJTSU9OICg0LCAwLCAwKQotKyAgICBtX2xpc3RfdG9wbGV2ZWwgPSBUUlVF OwotKyNlbmRpZgotICAgICBjcmVhdGVfd2luZG93ICgpOwotICAgICAvKiBGSVhNRToKLSAgICAg ICogSUJ1c0lNQ29udGV4dCBvcGVucyBHdGtJTUNvbnRleHRTaW1wbGUgYXMgdGhlIHNsYXZlIGFu ZAotQEAgLTQxNyw3ICs1MTQsMTMgQEAgdGVzdF9jb21wb3NlICh2b2lkKQotICAgICAgIiAiR1RL KyBzdXBwb3J0cyB0byBvdXRwdXQgb25lIGNoYXIgb25seTogIgotICAgICAgKi8KLSAgICAgZmxh Z3MgPSBnX2xvZ19zZXRfYWx3YXlzX2ZhdGFsIChHX0xPR19MRVZFTF9DUklUSUNBTCk7Ci0rI2lm IEdUS19DSEVDS19WRVJTSU9OICg0LCAwLCAwKQotKyAgICBndGtfd2luZG93X2xpc3RfdG9wbGV2 ZWxzICgpOwotKyAgICB3aGlsZSAobV9saXN0X3RvcGxldmVsKQotKyAgICAgICAgZ19tYWluX2Nv bnRleHRfaXRlcmF0aW9uIChOVUxMLCBUUlVFKTsKLSsjZWxzZQotICAgICBndGtfbWFpbiAoKTsK LSsjZW5kaWYKLSAgICAgZ19sb2dfc2V0X2Fsd2F5c19mYXRhbCAoZmxhZ3MpOwotIH0KLSAKLUBA IC00MzUsNyArNTM4LDExIEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gICAgIGlm ICghZ19zZXRlbnYgKCJOT19BVF9CUklER0UiLCAiMSIsIFRSVUUpKQotICAgICAgICAgZ19tZXNz YWdlICgiRmFpbGVkIHNldGVudiBOT19BVF9CUklER0VcbiIpOwotICAgICBnX3Rlc3RfaW5pdCAo JmFyZ2MsICZhcmd2LCBOVUxMKTsKLSsjaWYgR1RLX0NIRUNLX1ZFUlNJT04gKDQsIDAsIDApCi0r ICAgIGd0a19pbml0ICgpOwotKyNlbHNlCi0gICAgIGd0a19pbml0ICgmYXJnYywgJmFyZ3YpOwot KyNlbmRpZgotIAotICAgICBtX3NyY2RpciA9IChhcmdjID4gMSAmJiBzdHJsZW4gKGFyZ3ZbMV0p IDwgRklMRU5BTUVfTUFYKQotICAgICAgICAgICAgID8gZ19zdHJkdXAgKGFyZ3ZbMV0pIDogZ19z dHJkdXAgKCIuIik7Ci1kaWZmIC0tZ2l0IGEvc3JjL3Rlc3RzL2lidXMta2V5cHJlc3MuYyBiL3Ny Yy90ZXN0cy9pYnVzLWtleXByZXNzLmMKLWluZGV4IGQ0NGYzOWIyLi5hOTI4ODI2MCAxMDA2NDQK LS0tLSBhL3NyYy90ZXN0cy9pYnVzLWtleXByZXNzLmMKLSsrKyBiL3NyYy90ZXN0cy9pYnVzLWtl eXByZXNzLmMKLUBAIC0xLDEyICsxLDE2IEBACi0gI2luY2x1ZGUgPGd0ay9ndGsuaD4KLSsjaWYg R1RLX0NIRUNLX1ZFUlNJT04gKDQsIDAsIDApCi0rI2luY2x1ZGUgPGdkay94MTEvZ2RreC5oPgot KyNlbHNlCi0gI2luY2x1ZGUgPGdkay9nZGt4Lmg+Ci0rI2VuZGlmCi0gI2luY2x1ZGUgImlidXMu aCIKLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPFgxMS9YbGliLmg+Ci0gI2luY2x1 ZGUgPFgxMS9leHRlbnNpb25zL1hUZXN0Lmg+Ci0gCi0gI2lmZGVmIEdES19XSU5ET1dJTkdfV0FZ TEFORAotLSNpZiBHVEtfQ0hFQ0tfVkVSU0lPTiAoMywgOTgsIDQpCi0rI2lmIEdUS19DSEVDS19W RVJTSU9OICg0LCAwLCAwKQotICNpbmNsdWRlIDxnZGsvd2F5bGFuZC9nZGt3YXlsYW5kLmg+Ci0g I2Vsc2UKLSAjaW5jbHVkZSA8Z2RrL2dka3dheWxhbmQuaD4KLUBAIC01MSwxMiArNTUsMTggQEAg c3RhdGljIGNvbnN0IGd1bmljaGFyIHRlc3RfcmVzdWx0c1tdWzYwXSA9IHsKLSB9OwotIAotIAot LUlCdXNCdXMgKm1fYnVzOwotLUlCdXNFbmdpbmUgKm1fZW5naW5lOwotK3N0YXRpYyBJQnVzQnVz ICptX2J1czsKLStzdGF0aWMgSUJ1c0VuZ2luZSAqbV9lbmdpbmU7Ci0rI2lmIEdUS19DSEVDS19W RVJTSU9OICg0LCAwLCAwKQotK3N0YXRpYyBnYm9vbGVhbiBtX2xpc3RfdG9wbGV2ZWw7Ci0gCi0r c3RhdGljIGdib29sZWFuIGV2ZW50X2NvbnRyb2xsZXJfZW50ZXJfY2IgKEd0a0V2ZW50Q29udHJv bGxlciAqY29udHJvbGxlciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ3BvaW50ZXIgICAgICAgICAgICB1c2VyX2RhdGEpOwotKyNlbHNlCi0gc3RhdGljIGdi b29sZWFuIHdpbmRvd19mb2N1c19pbl9ldmVudF9jYiAoR3RrV2lkZ2V0ICAgICAqZW50cnksCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RrRXZlbnRGb2N1cyAq ZXZlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50 ZXIgICAgICAgZGF0YSk7Ci0rI2VuZGlmCi0gCi0gc3RhdGljIElCdXNFbmdpbmUgKgotIGNyZWF0 ZV9lbmdpbmVfY2IgKElCdXNGYWN0b3J5ICpmYWN0b3J5LCBjb25zdCBnY2hhciAqbmFtZSwgZ3Bv aW50ZXIgZGF0YSkKLUBAIC0xMTgsNyArMTI4LDExIEBAIHN0YXRpYyBnYm9vbGVhbgotIGZpbml0 IChncG9pbnRlciBkYXRhKQotIHsKLSAgICAgZ19jcml0aWNhbCAoInRpbWUgb3V0Iik7Ci0rI2lm IEdUS19DSEVDS19WRVJTSU9OICg0LCAwLCAwKQotKyAgICBtX2xpc3RfdG9wbGV2ZWwgPSBGQUxT RTsKLSsjZWxzZQotICAgICBndGtfbWFpbl9xdWl0ICgpOwotKyNlbmRpZgotICAgICByZXR1cm4g RkFMU0U7Ci0gfQotIAotQEAgLTE3MywyNyArMTg3LDQxIEBAIHNlbmRfa2V5X2V2ZW50IChEaXNw bGF5ICp4ZGlzcGxheSwKLSAgICAgfQotIH0KLSAKLStzdGF0aWMgdm9pZAotK3dpbmRvd19kZXN0 cm95X2NiICh2b2lkKQotK3sKLSsjaWYgR1RLX0NIRUNLX1ZFUlNJT04gKDQsIDAsIDApCi0rICAg IG1fbGlzdF90b3BsZXZlbCA9IEZBTFNFOwotKyNlbHNlCi0rICAgIGd0a19tYWluX3F1aXQgKCk7 Ci0rI2VuZGlmCi0rfQotKwotIHN0YXRpYyB2b2lkCi0gc2V0X2VuZ2luZV9jYiAoR09iamVjdCAg ICAgICpvYmplY3QsCi0gICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0ICpyZXMsCi0tICAgICAg ICAgICAgICAgZ3BvaW50ZXIgICAgICBkYXRhKQotKyAgICAgICAgICAgICAgIGdwb2ludGVyICAg ICAgdXNlcl9kYXRhKQotIHsKLSAgICAgSUJ1c0J1cyAqYnVzID0gSUJVU19CVVMgKG9iamVjdCk7 Ci0tICAgIEd0a1dpZGdldCAqZW50cnkgPSBHVEtfV0lER0VUIChkYXRhKTsKLSsjaWYgISBHVEtf Q0hFQ0tfVkVSU0lPTiAoNCwgMCwgMCkKLSsgICAgR3RrV2lkZ2V0ICplbnRyeSA9IEdUS19XSURH RVQgKHVzZXJfZGF0YSk7Ci0rI2VuZGlmCi0gICAgIEdka0Rpc3BsYXkgKmRpc3BsYXk7Ci0gICAg IERpc3BsYXkgKnhkaXNwbGF5ID0gTlVMTDsKLSAgICAgR0Vycm9yICplcnJvciA9IE5VTEw7Ci0g ICAgIGludCBpLCBqOwotIAotLSAgICBnX2Fzc2VydCAoR1RLX0lTX0VOVFJZIChlbnRyeSkpOwot LQotICAgICBpZiAoIWlidXNfYnVzX3NldF9nbG9iYWxfZW5naW5lX2FzeW5jX2ZpbmlzaCAoYnVz LCByZXMsICZlcnJvcikpIHsKLSAgICAgICAgIGdfY3JpdGljYWwgKCJzZXQgZW5naW5lIGZhaWxl ZDogJXMiLCBlcnJvci0+bWVzc2FnZSk7Ci0gICAgICAgICBnX2Vycm9yX2ZyZWUgKGVycm9yKTsK LSAgICAgICAgIHJldHVybjsKLSAgICAgfQotIAotKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTiAoNCwg MCwgMCkKLSsgICAgZGlzcGxheSA9IGdka19kaXNwbGF5X2dldF9kZWZhdWx0ICgpOwotKyNlbHNl Ci0gICAgIGRpc3BsYXkgPSBndGtfd2lkZ2V0X2dldF9kaXNwbGF5IChlbnRyeSk7Ci0rI2VuZGlm Ci0gICAgIGdfYXNzZXJ0IChHREtfSVNfWDExX0RJU1BMQVkgKGRpc3BsYXkpKTsKLSAgICAgeGRp c3BsYXkgPSBnZGtfeDExX2Rpc3BsYXlfZ2V0X3hkaXNwbGF5IChkaXNwbGF5KTsKLSAgICAgZ19y ZXR1cm5faWZfZmFpbCAoeGRpc3BsYXkpOwotQEAgLTIxMCw4ICsyMzgsOCBAQCBzZXRfZW5naW5l X2NiIChHT2JqZWN0ICAgICAgKm9iamVjdCwKLSAgICAgZ190aW1lb3V0X2FkZF9zZWNvbmRzICgx MCwgZmluaXQsIE5VTEwpOwotIH0KLSAKLS1zdGF0aWMgZ2Jvb2xlYW4KLS13aW5kb3dfZm9jdXNf aW5fZXZlbnRfY2IgKEd0a1dpZGdldCAqZW50cnksIEdka0V2ZW50Rm9jdXMgKmV2ZW50LCBncG9p bnRlciBkYXRhKQotK3N0YXRpYyB2b2lkCi0rc2V0X2VuZ2luZSAoZ3BvaW50ZXIgdXNlcl9kYXRh KQotIHsKLSAgICAgZ19hc3NlcnQgKG1fYnVzICE9IE5VTEwpOwotICAgICBpYnVzX2J1c19zZXRf Z2xvYmFsX2VuZ2luZV9hc3luYyAobV9idXMsCi1AQCAtMjE5LDE4ICsyNDcsNDAgQEAgd2luZG93 X2ZvY3VzX2luX2V2ZW50X2NiIChHdGtXaWRnZXQgKmVudHJ5LCBHZGtFdmVudEZvY3VzICpldmVu dCwgZ3BvaW50ZXIgZGF0YSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0xLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldF9lbmdpbmVfY2IsCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeSk7Ci0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2RhdGEpOwotK30KLSsKLSsjaWYgR1RLX0NIRUNL X1ZFUlNJT04gKDQsIDAsIDApCi0rc3RhdGljIGdib29sZWFuCi0rZXZlbnRfY29udHJvbGxlcl9l bnRlcl9jYiAoR3RrRXZlbnRDb250cm9sbGVyICpjb250cm9sbGVyLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIGdwb2ludGVyICAgICAgICAgICAgdXNlcl9kYXRhKQotK3sKLSsgICAgc2V0 X2VuZ2luZSAoY29udHJvbGxlcik7Ci0rICAgIHJldHVybiBGQUxTRTsKLSt9Ci0rCi0rI2Vsc2UK LSsKLStzdGF0aWMgZ2Jvb2xlYW4KLSt3aW5kb3dfZm9jdXNfaW5fZXZlbnRfY2IgKEd0a1dpZGdl dCAgICAgKmVudHJ5LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgR2RrRXZlbnRGb2N1cyAq ZXZlbnQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciAgICAgICB1c2VyX2Rh dGEpCi0rewotKyAgICBzZXRfZW5naW5lIChlbnRyeSk7Ci0gICAgIHJldHVybiBGQUxTRTsKLSB9 Ci0rI2VuZGlmCi0gCi0gc3RhdGljIHZvaWQKLSB3aW5kb3dfaW5zZXJ0ZWRfdGV4dF9jYiAoR3Rr RW50cnlCdWZmZXIgKmJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAg ICAgICAgIHBvc2l0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAg ICAqY2hhcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICBuY2hh cnMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICAgICAgICBkYXRhKQotKyAg ICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciAgICAgICAgdXNlcl9kYXRhKQotIHsKLS0g ICAgR3RrV2lkZ2V0ICplbnRyeSA9IGRhdGE7Ci0rI2lmICEgR1RLX0NIRUNLX1ZFUlNJT04gKDQs IDAsIDApCi0rICAgIEd0a1dpZGdldCAqZW50cnkgPSB1c2VyX2RhdGE7Ci0rI2VuZGlmCi0gICAg IHN0YXRpYyBpbnQgaSA9IDA7Ci0gICAgIHN0YXRpYyBpbnQgaiA9IDA7Ci0gCi1AQCAtMjQyLDEw ICsyOTIsMTkgQEAgd2luZG93X2luc2VydGVkX3RleHRfY2IgKEd0a0VudHJ5QnVmZmVyICpidWZm ZXIsCi0gICAgICAgICBnX3ByaW50ICgiXG4iKTsKLSAgICAgICAgIGkrKzsKLSAgICAgICAgIGog PSAwOwotLSAgICAgICAgaWYgKHRlc3RfcmVzdWx0c1tpXVswXSA9PSAwKQotKyAgICAgICAgaWYg KHRlc3RfcmVzdWx0c1tpXVswXSA9PSAwKSB7Ci0rI2lmIEdUS19DSEVDS19WRVJTSU9OICg0LCAw LCAwKQotKyAgICAgICAgICAgIG1fbGlzdF90b3BsZXZlbCA9IEZBTFNFOwotKyNlbHNlCi0gICAg ICAgICAgICAgZ3RrX21haW5fcXVpdCAoKTsKLS0gICAgICAgIGVsc2UKLSsjZW5kaWYKLSsgICAg ICAgIH0gZWxzZSB7Ci0rI2lmIEdUS19DSEVDS19WRVJTSU9OICg0LCAwLCAwKQotKyAgICAgICAg ICAgIGd0a19lbnRyeV9idWZmZXJfc2V0X3RleHQgKGJ1ZmZlciwgIiIsIDEpOwotKyNlbHNlCi0g ICAgICAgICAgICAgZ3RrX2VudHJ5X3NldF90ZXh0IChHVEtfRU5UUlkgKGVudHJ5KSwgIiIpOwot KyNlbmRpZgotKyAgICAgICAgfQotICAgICAgICAgcmV0dXJuOwotICAgICB9Ci0gICAgIGdfYXNz ZXJ0IChnX3V0ZjhfZ2V0X2NoYXIgKGNoYXJzKSA9PSB0ZXN0X3Jlc3VsdHNbaV1bal0pOwotQEAg LTI1NSwxOSArMzE0LDM5IEBAIHdpbmRvd19pbnNlcnRlZF90ZXh0X2NiIChHdGtFbnRyeUJ1ZmZl ciAqYnVmZmVyLAotIHN0YXRpYyB2b2lkCi0gY3JlYXRlX3dpbmRvdyAoKQotIHsKLS0gICAgR3Rr V2lkZ2V0ICp3aW5kb3cgPSBndGtfd2luZG93X25ldyAoR1RLX1dJTkRPV19UT1BMRVZFTCk7Ci0r ICAgIEd0a1dpZGdldCAqd2luZG93OwotICAgICBHdGtXaWRnZXQgKmVudHJ5ID0gZ3RrX2VudHJ5 X25ldyAoKTsKLSAgICAgR3RrRW50cnlCdWZmZXIgKmJ1ZmZlcjsKLSsjaWYgR1RLX0NIRUNLX1ZF UlNJT04gKDQsIDAsIDApCi0rICAgIEd0a0V2ZW50Q29udHJvbGxlciAqY29udHJvbGxlcjsKLSsK LSsgICAgd2luZG93ID0gZ3RrX3dpbmRvd19uZXcgKCk7Ci0rI2Vsc2UKLSsgICAgd2luZG93ID0g Z3RrX3dpbmRvd19uZXcgKEdUS19XSU5ET1dfVE9QTEVWRUwpOwotKyNlbmRpZgotIAotICAgICBn X3NpZ25hbF9jb25uZWN0ICh3aW5kb3csICJkZXN0cm95IiwKLS0gICAgICAgICAgICAgICAgICAg ICAgR19DQUxMQkFDSyAoZ3RrX21haW5fcXVpdCksIE5VTEwpOwotKyAgICAgICAgICAgICAgICAg ICAgICBHX0NBTExCQUNLICh3aW5kb3dfZGVzdHJveV9jYiksIE5VTEwpOwotKyNpZiBHVEtfQ0hF Q0tfVkVSU0lPTiAoNCwgMCwgMCkKLSsgICAgY29udHJvbGxlciA9IGd0a19ldmVudF9jb250cm9s bGVyX2ZvY3VzX25ldyAoKTsKLSsgICAgZ19zaWduYWxfY29ubmVjdCAoY29udHJvbGxlciwgImVu dGVyIiwKLSsgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAoZXZlbnRfY29udHJvbGxl cl9lbnRlcl9jYiksIE5VTEwpOwotKyAgICBndGtfd2lkZ2V0X2FkZF9jb250cm9sbGVyICh3aW5k b3csIGNvbnRyb2xsZXIpOwotKyNlbHNlCi0gICAgIGdfc2lnbmFsX2Nvbm5lY3QgKGVudHJ5LCAi Zm9jdXMtaW4tZXZlbnQiLAotICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLICh3aW5k b3dfZm9jdXNfaW5fZXZlbnRfY2IpLCBOVUxMKTsKLSsjZW5kaWYKLSAgICAgYnVmZmVyID0gZ3Rr X2VudHJ5X2dldF9idWZmZXIgKEdUS19FTlRSWSAoZW50cnkpKTsKLSAgICAgZ19zaWduYWxfY29u bmVjdCAoYnVmZmVyLCAiaW5zZXJ0ZWQtdGV4dCIsCi0gICAgICAgICAgICAgICAgICAgICAgIEdf Q0FMTEJBQ0sgKHdpbmRvd19pbnNlcnRlZF90ZXh0X2NiKSwgZW50cnkpOwotKyNpZiBHVEtfQ0hF Q0tfVkVSU0lPTiAoNCwgMCwgMCkKLSsgICAgZ3RrX3dpbmRvd19zZXRfY2hpbGQgKEdUS19XSU5E T1cgKHdpbmRvdyksIGVudHJ5KTsKLSsgICAgZ3RrX3dpbmRvd19zZXRfZm9jdXMgKEdUS19XSU5E T1cgKHdpbmRvdyksIGVudHJ5KTsKLSsgICAgZ3RrX3dpbmRvd19wcmVzZW50IChHVEtfV0lORE9X ICh3aW5kb3cpKTsKLSsjZWxzZQotICAgICBndGtfY29udGFpbmVyX2FkZCAoR1RLX0NPTlRBSU5F UiAod2luZG93KSwgZW50cnkpOwotICAgICBndGtfd2lkZ2V0X3Nob3dfYWxsICh3aW5kb3cpOwot KyNlbmRpZgotIH0KLSAKLSBzdGF0aWMgdm9pZAotQEAgLTI3Nyw2ICszNTYsMTYgQEAgdGVzdF9r ZXlwcmVzcyAodm9pZCkKLSAgICAgaW50IHN0YXR1cyA9IDA7Ci0gICAgIEdFcnJvciAqZXJyb3Ig PSBOVUxMOwotIAotKyNpZmRlZiBHREtfV0lORE9XSU5HX1dBWUxBTkQKLSsgICAgewotKyAgICAg ICAgR2RrRGlzcGxheSAqZGlzcGxheSA9IGdka19kaXNwbGF5X2dldF9kZWZhdWx0ICgpOwotKyAg ICAgICAgaWYgKEdES19JU19XQVlMQU5EX0RJU1BMQVkgKGRpc3BsYXkpKSB7Ci0rICAgICAgICAg ICAgZ190ZXN0X3NraXBfcHJpbnRmICgic2V0eGtibWFwIGFuZCBYVEVTVCBkbyBub3Qgd29yayBp biBXYXlsYW5kLiIpOwotKyAgICAgICAgICAgIHJldHVybjsKLSsgICAgICAgIH0KLSsgICAgfQot KyNlbmRpZgotKwotICAgICAvKiBsb2NhbGVjdGwgZG9lcyBub3QgY2hhbmdlIHRoZSBzZXNzaW9u IGtleW1hcC4gKi8KLSAgICAgcGF0aCA9IGdfZmluZF9wcm9ncmFtX2luX3BhdGggKCJzZXR4a2Jt YXAiKTsKLSAgICAgaWYgKHBhdGgpIHsKLUBAIC0yODcsMzMgKzM3NiwzOCBAQCB0ZXN0X2tleXBy ZXNzICh2b2lkKQotICAgICBnX2ZyZWUgKHBhdGgpOwotICAgICBnX2Fzc2VydCAocmVnaXN0ZXJf aWJ1c19lbmdpbmUgKCkpOwotIAotKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTiAoNCwgMCwgMCkKLSsg ICAgbV9saXN0X3RvcGxldmVsID0gVFJVRTsKLSsjZW5kaWYKLSAgICAgY3JlYXRlX3dpbmRvdyAo KTsKLSsjaWYgR1RLX0NIRUNLX1ZFUlNJT04gKDQsIDAsIDApCi0rICAgIHdoaWxlIChtX2xpc3Rf dG9wbGV2ZWwpCi0rICAgICAgICBnX21haW5fY29udGV4dF9pdGVyYXRpb24gKE5VTEwsIFRSVUUp OwotKyNlbHNlCi0gICAgIGd0a19tYWluICgpOwotKyNlbmRpZgotIH0KLSAKLSBpbnQKLSBtYWlu IChpbnQgYXJnYywgY2hhciAqYXJndltdKQotIHsKLS0gICAgaWJ1c19pbml0ICgpOwotKyAgICAv KiBpYnVzX2luaXQoKSBzaG91bGQgbm90IGJlIGNhbGxlZCBoZXJlIGJlY2F1c2UKLSsgICAgICog aWJ1c19pbml0KCkgaXMgY2FsbGVkIGZyb20gSUJ1cyBHdGs0IElNIG1vZHVsZSBldmVuIGlmCi0r ICAgICAqIEdUS19JTV9NT0RVTEU9d2F5bGFuZCBpcyBleHBvcnRlZC4KLSsgICAgICovCi0gICAg IC8qIEF2b2lkIGEgd2FybmluZyBvZiAiQVQtU1BJOiBDb3VsZCBub3Qgb2J0YWluIGRlc2t0b3Ag cGF0aCBvciBuYW1lIgotICAgICAgKiB3aXRoIGd0a19tYWluKCkuCi0gICAgICAqLwotICAgICBp ZiAoIWdfc2V0ZW52ICgiTk9fQVRfQlJJREdFIiwgIjEiLCBUUlVFKSkKLSAgICAgICAgIGdfbWVz c2FnZSAoIkZhaWxlZCBzZXRlbnYgTk9fQVRfQlJJREdFXG4iKTsKLSAgICAgZ190ZXN0X2luaXQg KCZhcmdjLCAmYXJndiwgTlVMTCk7Ci0rI2lmIEdUS19DSEVDS19WRVJTSU9OICg0LCAwLCAwKQot KyAgICBndGtfaW5pdCAoKTsKLSsjZWxzZQotICAgICBndGtfaW5pdCAoJmFyZ2MsICZhcmd2KTsK LS0jaWZkZWYgR0RLX1dJTkRPV0lOR19XQVlMQU5ECi0tICAgIHsKLS0gICAgICAgIEdka0Rpc3Bs YXkgKmRpc3BsYXkgPSBnZGtfZGlzcGxheV9nZXRfZGVmYXVsdCAoKTsKLS0gICAgICAgIGlmIChH REtfSVNfV0FZTEFORF9ESVNQTEFZIChkaXNwbGF5KSkgewotLSAgICAgICAgICAgIGdfcHJpbnQg KCJzZXR4a2JtYXAgYW5kIFhURVNUIGRvIG5vdCB3b3JrIGluIFdheWxhbmQuXG4iKTsKLS0gICAg ICAgICAgICByZXR1cm4gMDsKLS0gICAgICAgIH0KLS0gICAgfQotICNlbmRpZgotIAotICAgICBn X3Rlc3RfYWRkX2Z1bmMgKCIvaWJ1cy9rZXlyZXBzcyIsIHRlc3Rfa2V5cHJlc3MpOwotIAotLQot ICAgICByZXR1cm4gZ190ZXN0X3J1biAoKTsKLSB9Ci0tLSAKLTIuNDUuMAotCi1Gcm9tIGEyNjg5 YzRkNjZkMWY1YWU3M2QyZGRiYmI5NDM3NGM5ODkxNGEwMjkgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCi1Gcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci1EYXRlOiBT YXQsIDI3IEp1bCAyMDI0IDE5OjA3OjU4ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0ggNC82XSBzcmMv dGVzdHM6IEZpeCB0ZXN0IGNhc2VzIGluIEdOT01FIFhvcmcgaW4gaWJ1cy1jb21wb3NlCi0KLSJm b2N1cy1pbiIgc2lnbmFsIGlzIHNlbnQgdG8gSUJ1cyBHdGtJTU1vZHVsZSB3aXRoIGEgZGVsYXkg aW4gR05PTUUKLWRlc2t0b3Agc2Vzc2lvbiBhbmQgdGhlIHNpZ25hbCBvcmRlciBpcyBub3QgZml4 ZWQgd2l0aCBHVEtfUEhBU0VfVEFSR0VUCi1hbHNvICJmb2N1cy1pbiIgc2lnbmFsIGlzIGFsc28g c2VudCB3aXRoIEd0a1RleHQgInJlYWxpemUiJyBzaWduYWwuCi1Ob3cgdGhlIHRlc3QgY2FzZXMg d2FpdCBmb3IgR3RrVGV4dCAncmVhbGl6ZScgc2lnbmFsLgotVGhpcyBmaXhlcyB0aGUgdGVzdCBj YXNlcyBpbiBHTk9NRSBYb3JnIGJ1dCB0aGVyZSBhcmUgc3RpbGwgc29uZSBpc3N1ZXMKLWluIEdO T01FIFdheWxhbmQuCi0KLUJVRz1odHRwczovL2dpdGh1Yi5jb20vaWJ1cy9pYnVzL3B1bGwvMjY1 NwotLS0tCi0gc3JjL3Rlc3RzL2lidXMtY29tcG9zZS5jIHwgNzEgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCA2OCBpbnNlcnRpb25zKCsp LCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3Rlc3RzL2lidXMtY29tcG9zZS5j IGIvc3JjL3Rlc3RzL2lidXMtY29tcG9zZS5jCi1pbmRleCA1Nzg1MWIwYS4uZTlmMTAyYTEgMTAw NjQ0Ci0tLS0gYS9zcmMvdGVzdHMvaWJ1cy1jb21wb3NlLmMKLSsrKyBiL3NyYy90ZXN0cy9pYnVz LWNvbXBvc2UuYwotQEAgLTM5LDYgKzM5LDIzIEBAIHN0YXRpYyBnYm9vbGVhbiB3aW5kb3dfZm9j dXNfaW5fZXZlbnRfY2IgKEd0a1dpZGdldCAgICAgKmVudHJ5LAotICNlbmRpZgotIAotIAotK2di b29sZWFuCi0rX3dhaXRfZm9yX2tleV9yZWxlYXNlX2NiIChncG9pbnRlciB1c2VyX2RhdGEpCi0r ewotKyAgICBHTWFpbkxvb3AgKmxvb3AgPSAoR01haW5Mb29wICopdXNlcl9kYXRhOwotKyAgICAv KiBJZiB0aGlzIHByb2dyYW0gaXMgaW52b2tlZCBieSBtYW51YWwgd2l0aCBFbnRlciBrZXkgaW4g R05PTUUKLSsgICAgICogV2F5bGFuZCBzZXNzaW9uLCBpYnVzX2lucHV0X2NvbnRleHRfZm9jdXNf aW4oKSBjYW4gYmUgY2FsbGVkIGluCi0rICAgICAqIHRlc3RfY29udGV4dF9lbmdpbmVfc2V0X2J5 X2dsb2JhbCgpIGJlZm9yZSB0aGUga2V5IHJlbGVhc2Ugb2YKLSsgICAgICogdGhlIEVudGVyIGtl eSBzbyBpYnVzL2J1cy9pbnB1dGNvbnRleHQuYzpfaWNfcHJvY2Vzc19rZXlfZXZlbnQoKQotKyAg ICAgKiBjb3VsZCBjYWxsIGFub3RoZXIgYnVzX2lucHV0X2NvbnRleHRfZm9jdXNfaW4oKSBpbiB0 aGF0IHRlc3QgY2FzZQotKyAgICAgKiBhbmQgZmFpbC4KLSsgICAgICovCi0rICAgIGdfdGVzdF9t ZXNzYWdlICgiV2FpdCBmb3IgMyBzZWNvbmRzIGZvciBrZXkgcmVsZWFzZSBldmVudCIpOwotKyAg ICBnX21haW5fbG9vcF9xdWl0IChsb29wKTsKLSsgICAgcmV0dXJuIEdfU09VUkNFX1JFTU9WRTsK LSt9Ci0rCi0rCi0gc3RhdGljIGdjaGFyICoKLSBnZXRfY29tcG9zZV9wYXRoICgpCi0gewotQEAg LTMxMiwxMiArMzI5LDQ1IEBAIHNldF9lbmdpbmUgKGdwb2ludGVyIHVzZXJfZGF0YSkKLSAKLSAK LSAjaWYgR1RLX0NIRUNLX1ZFUlNJT04gKDQsIDAsIDApCi0rc3RhdGljIGdib29sZWFuCi0rZXZl bnRfY29udHJvbGxlcl9lbnRlcl9kZWxheSAoZ3BvaW50ZXIgdXNlcl9kYXRhKQotK3sKLSsgICAg R3RrRXZlbnRDb250cm9sbGVyICpjb250cm9sbGVyID0gKEd0a0V2ZW50Q29udHJvbGxlciAqKXVz ZXJfZGF0YTsKLSsgICAgR3RrV2lkZ2V0ICp0ZXh0ID0gZ3RrX2V2ZW50X2NvbnRyb2xsZXJfZ2V0 X3dpZGdldCAoY29udHJvbGxlcik7Ci0rICAgIHN0YXRpYyBpbnQgaSA9IDA7Ci0rCi0rICAgIC8q IFdhaXQgZm9yIGd0a190ZXh0X3JlYWxpemUoKSB3aGljaCBjYWxscyBndGtfdGV4dF9pbV9zZXRf Zm9jdXNfaW4oKQotKyAgICAgKiB3aGlsZSBndGtfdGV4dF9mb2N1c19jaGFuZ2VkKCkgYWxzbyBj YWxscyBndGtfdGV4dF9pbV9zZXRfZm9jdXNfaW4oKQotKyAgICAgKiBpbiBHTk9NRSBYb3JnLgot KyAgICAgKi8KLSsgICAgaWYgKGd0a193aWRnZXRfZ2V0X3JlYWxpemVkICh0ZXh0KSkgewotKyAg ICAgICAgc2V0X2VuZ2luZSAodXNlcl9kYXRhKTsKLSsgICAgICAgIHJldHVybiBHX1NPVVJDRV9S RU1PVkU7Ci0rICAgIH0KLSsgICAgaWYgKGkrKyA9PSAxMCkgewotKyAgICAgICAgZ190ZXN0X2Zh aWxfcHJpbnRmICgiV2luZG93IGlzIG5vdCByZWFsaXplZCB3aXRoICVkIHRpbWVzIiwgaSk7Ci0r ICAgICAgICByZXR1cm4gR19TT1VSQ0VfUkVNT1ZFOwotKyAgICB9Ci0rICAgIGdfdGVzdF9tZXNz YWdlICgiZXZlbnRfY29udHJvbGxlcl9lbnRlcl9kZWxheSAlZCIsIGkpOwotKyAgICByZXR1cm4g R19TT1VSQ0VfQ09OVElOVUU7Ci0rfQotKwotKwotIHN0YXRpYyB2b2lkCi0gZXZlbnRfY29udHJv bGxlcl9lbnRlcl9jYiAoR3RrRXZlbnRDb250cm9sbGVyICpjb250cm9sbGVyLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICAgICAgICAgICAgdXNlcl9kYXRhKQotIHsKLSsg ICAgc3RhdGljIGd1aW50IGlkID0gMDsKLSsKLSAgICAgZ190ZXN0X21lc3NhZ2UgKCJFdmVudENv bnRyb2xsZXIgZW1pdHMgXCJlbnRlclwiIHNpZ25hbCIpOwotLSAgICBzZXRfZW5naW5lIChjb250 cm9sbGVyKTsKLSsgICAgLyogQ2FsbCBhbiBpZGxlIGZ1bmN0aW9uIGJlY2F1c2UgZ3RrX3dpZGdl dF9hZGRfY29udHJvbGxlcigpCi0rICAgICAqIGNhbGxzIGdfbGlzdF9wcmVwZW5kKCkgZm9yIGV2 ZW50X2NvbnRyb2xsZXJzIGFuZCB0aGlzIGNvbnRyb2xsZXIgaXMKLSsgICAgICogYWx3YXlzIGNh bGxlZCBiZWZvcmUgImd0ay10ZXh0LWZvY3VzLWNvbnRyb2xsZXIiCi0rICAgICAqIGlzIGNhbGVs ZCBhbmQgdGhlIElNIGNvbnRleHQgZG9lcyBub3QgcmVjZWl2ZSB0aGUgZm9jdXMtaW4geWV0Lgot KyAgICAgKi8KLSsgICAgaWYgKGlkKQotKyAgICAgICAgcmV0dXJuOwotKyAgICBpZCA9IGdfaWRs ZV9hZGQgKGV2ZW50X2NvbnRyb2xsZXJfZW50ZXJfZGVsYXksIGNvbnRyb2xsZXIpOwotIH0KLSAK LSAjZWxzZQotQEAgLTQ3Myw4ICs1MjMsOSBAQCBjcmVhdGVfd2luZG93ICgpCi0gI2lmIEdUS19D SEVDS19WRVJTSU9OICg0LCAwLCAwKQotICAgICBjb250cm9sbGVyID0gZ3RrX2V2ZW50X2NvbnRy b2xsZXJfZm9jdXNfbmV3ICgpOwotICAgICB0ZXh0ID0gZ3RrX2VkaXRhYmxlX2dldF9kZWxlZ2F0 ZSAoR1RLX0VESVRBQkxFIChlbnRyeSkpOwotLSAgICBnX3NpZ25hbF9jb25uZWN0IChjb250cm9s bGVyLCAiZW50ZXIiLAotLSAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChldmVudF9j b250cm9sbGVyX2VudGVyX2NiKSwgTlVMTCk7Ci0rICAgIGd0a19ldmVudF9jb250cm9sbGVyX3Nl dF9wcm9wYWdhdGlvbl9waGFzZSAoY29udHJvbGxlciwgR1RLX1BIQVNFX0JVQkJMRSk7Ci0rICAg IGdfc2lnbmFsX2Nvbm5lY3RfYWZ0ZXIgKGNvbnRyb2xsZXIsICJlbnRlciIsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKGV2ZW50X2NvbnRyb2xsZXJfZW50ZXJfY2Ip LCBOVUxMKTsKLSAgICAgZ3RrX3dpZGdldF9hZGRfY29udHJvbGxlciAoR1RLX1dJREdFVCAodGV4 dCksIGNvbnRyb2xsZXIpOwotICNlbHNlCi0gICAgIGdfc2lnbmFsX2Nvbm5lY3QgKGVudHJ5LCAi Zm9jdXMtaW4tZXZlbnQiLAotQEAgLTQ5NSw2ICs1NDYsMTkgQEAgY3JlYXRlX3dpbmRvdyAoKQot IH0KLSAKLSAKLStzdGF0aWMgdm9pZAotK3Rlc3RfaW5pdCAodm9pZCkKLSt7Ci0rICAgIGNoYXIg KnR0eV9uYW1lID0gdHR5bmFtZSAoU1RESU5fRklMRU5PKTsKLSsgICAgR01haW5Mb29wICpsb29w ID0gZ19tYWluX2xvb3BfbmV3IChOVUxMLCBUUlVFKTsKLSsgICAgZ190ZXN0X21lc3NhZ2UgKCJU ZXN0IG9uICVzIiwgdHR5X25hbWUgPyB0dHlfbmFtZSA6ICIobnVsbCkiKTsKLSsgICAgaWYgKHR0 eV9uYW1lICYmIGdfc3Ryc3RyX2xlbiAodHR5X25hbWUsIC0xLCAicHRzIikpIHsKLSsgICAgICAg IGdfdGltZW91dF9hZGRfc2Vjb25kcyAoMywgX3dhaXRfZm9yX2tleV9yZWxlYXNlX2NiLCBsb29w KTsKLSsgICAgICAgIGdfbWFpbl9sb29wX3J1biAobG9vcCk7Ci0rICAgIH0KLSsgICAgZ19tYWlu X2xvb3BfdW5yZWYgKGxvb3ApOwotK30KLSsKLSBzdGF0aWMgdm9pZAotIHRlc3RfY29tcG9zZSAo dm9pZCkKLSB7Ci1AQCAtNTU3LDYgKzYyMSw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2 W10pCi0gICAgICAgICBnX2ZyZWUgKHRlc3RfbmFtZSk7Ci0gICAgICAgICB0ZXN0X25hbWUgPSBn X3BhdGhfZ2V0X2Jhc2VuYW1lIChtX2NvbXBvc2VfZmlsZSk7Ci0gICAgIH0KLSsgICAgZ190ZXN0 X2FkZF9mdW5jICgiL2lidXMtY29tcG9zZS90ZXN0LWluaXQiLCB0ZXN0X2luaXQpOwotICAgICBt X2xvb3AgPSBnX21haW5fbG9vcF9uZXcgKE5VTEwsIFRSVUUpOwotICAgICB0ZXN0X3BhdGggPSBn X2J1aWxkX2ZpbGVuYW1lICgiL2lidXMtY29tcG9zZSIsIHRlc3RfbmFtZSwgTlVMTCk7Ci0gICAg IGdfdGVzdF9hZGRfZnVuYyAodGVzdF9wYXRoLCB0ZXN0X2NvbXBvc2UpOwotLS0gCi0yLjQ1LjAK LQotRnJvbSBlNjUxMTBhOWJlZDAzYzk4MTg4NGUyOGZmNDRlMmFjMWY2MzlkZjQ1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZnVqaXdhcmF0IDx0YWthby5mdWppd2FyYTFAZ21haWwu Y29tPgotRGF0ZTogU2F0LCAyNyBKdWwgMjAyNCAxOTowOToxMCArMDkwMAotU3ViamVjdDogW1BB VENIIDUvNl0gc3JjL3Rlc3RzOiBGaXggaWJ1cy1jb21wb3NlIGZvciBHTk9NRSBXYXlsYW5kCi0K LW11dHRlciBjYWxscyBtZXRhX3dheWxhbmRfdGV4dF9pbnB1dF9zZXRfZm9jdXMoKSBhZnRlciBt ZXRhX3dpbmRvd19zaG93KCkKLWFuZCB0aGUgZGVsYXllZCBmb2N1cy1pbi9vdXQgZXZlbnRzIGFy ZSBzZW50IHRvIElCdXNFbmdpbmUuCi1Ob3cgc2xlZXAoKSBpcyBhZGRlZCBpbiBpYnVzLWNvbXBv c2UgYmVjYXVzZSBNZXRhV2F5bGFuZElucHV0TWV0aG9kCi1jYW5ub3Qga25vdyB0aGUgYXBwbGlj YXRpb24gc3RhdHVzIHdoaWxlIEdUSyBhcHBsaWNhdGlvbiBpcyBhbHJlYWR5Ci1yZWFsaXplZC4K LQotQWxzbyBHVEs0IGNvbXBvc2UgdGFibGUgc3VwcG9ydHMgMTZiaXQgY29tcG9zZSBrZXlzIG9u bHkgYW5kIGl0Ci1jYXVzZXMgYSB3YXJuaW5nIHdpdGggcHQtQlIgYW5kIGZpLUZJIGNvbXBvc2Ug dGFibGVzIGJ1dCB0aGUgd2FybmluZwotaXMgdHJlYXRlZCBhcyBhIGZhaWx1cmUgd2l0aCBnX3Rl c3RfaW5pdCgpLgotU2V0IExBTkc9ZW5fVVMuVVRGLTggZm9yIHRodyB3b3JrYXJvdW5kIHRvIHRl c3QgcHQtQlIgYW5kIGZpLUZJIElCdXMKLWNvbXBvc2UgdGFibGVzLgotCi1CVUc9aHR0cHM6Ly9n aXRodWIuY29tL2lidXMvaWJ1cy9wdWxsLzI2NTcKLS0tLQotIHNyYy90ZXN0cy9pYnVzLWNvbXBv c2UuYyB8IDIyMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KLSAxIGZp bGUgY2hhbmdlZCwgMTk1IGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0t Z2l0IGEvc3JjL3Rlc3RzL2lidXMtY29tcG9zZS5jIGIvc3JjL3Rlc3RzL2lidXMtY29tcG9zZS5j Ci1pbmRleCBlOWYxMDJhMS4uMDY3OWMyNTkgMTAwNjQ0Ci0tLS0gYS9zcmMvdGVzdHMvaWJ1cy1j b21wb3NlLmMKLSsrKyBiL3NyYy90ZXN0cy9pYnVzLWNvbXBvc2UuYwotQEAgLTcsMTkgKzcsMjQg QEAKLSAjZGVmaW5lIFJFRCAgICJcMDMzWzA7MzFtIgotICNkZWZpbmUgTkMgICAgIlwwMzNbMG0i Ci0gCi0rc3RhdGljIGdjaGFyICptX3Rlc3RfbmFtZTsKLStzdGF0aWMgZ2NoYXIgKm1fc2Vzc2lv bl9uYW1lOwotIHN0YXRpYyBJQnVzQnVzICptX2J1czsKLSBzdGF0aWMgZ2NoYXIgKm1fY29tcG9z ZV9maWxlOwotIHN0YXRpYyBJQnVzQ29tcG9zZVRhYmxlRXggKm1fY29tcG9zZV90YWJsZTsKLSBz dGF0aWMgSUJ1c0VuZ2luZSAqbV9lbmdpbmU7Ci0gc3RhdGljIGdjaGFyICptX3NyY2RpcjsKLStz dGF0aWMgZ2Jvb2xlYW4gbV9pc19ndGtfMzJiaXRfY29tcG9zZV9lcnJvcjsKLSBzdGF0aWMgR01h aW5Mb29wICptX2xvb3A7Ci0rc3RhdGljIGNoYXIgKm1fZW5naW5lX2lzX2ZvY3VzZWQ7Ci0gI2lm IEdUS19DSEVDS19WRVJTSU9OICg0LCAwLCAwKQotIHN0YXRpYyBnYm9vbGVhbiBtX2xpc3RfdG9w bGV2ZWw7Ci0gI2VuZGlmCi0gCi0gdHlwZWRlZiBlbnVtIHsKLSsgICAgVEVTVF9DT01NSVRfVEVY VCwKLSAgICAgVEVTVF9DUkVBVEVfRU5HSU5FLAotLSAgICBURVNUX0NPTU1JVF9URVhUCi0rICAg IFRFU1RfREVMQVlFRF9GT0NVU19JTgotIH0gVGVzdElEbGVDYXRlZ29yeTsKLSAKLSB0eXBlZGVm IHN0cnVjdCBfVGVzdElkbGVEYXRhIHsKLUBAIC0zOSw2ICs0NCwxOSBAQCBzdGF0aWMgZ2Jvb2xl YW4gd2luZG93X2ZvY3VzX2luX2V2ZW50X2NiIChHdGtXaWRnZXQgICAgICplbnRyeSwKLSAjZW5k aWYKLSAKLSAKLStnYm9vbGVhbgotK2lzX2ludGVncmF0ZWRfZGVza3RvcCAoKQotK3sKLSsgICAg aWYgKCFtX3Nlc3Npb25fbmFtZSkKLSsgICAgICAgIG1fc2Vzc2lvbl9uYW1lID0gZ19zdHJkdXAg KGdfZ2V0ZW52ICgiWERHX1NFU1NJT05fREVTS1RPUCIpKTsKLSsgICAgaWYgKCFtX3Nlc3Npb25f bmFtZSkKLSsgICAgICAgIHJldHVybiBGQUxTRTsKLSsgICAgaWYgKCFnX2FzY2lpX3N0cm5jYXNl Y21wIChtX3Nlc3Npb25fbmFtZSwgImdub21lIiwgc3RybGVuICgiZ25vbWUiKSkpCi0rICAgICAg IHJldHVybiBUUlVFOwotKyAgICByZXR1cm4gRkFMU0U7Ci0rfQotKwotKwotIGdib29sZWFuCi0g X3dhaXRfZm9yX2tleV9yZWxlYXNlX2NiIChncG9pbnRlciB1c2VyX2RhdGEpCi0gewotQEAgLTYz LDExICs4MSwxNSBAQCBnZXRfY29tcG9zZV9wYXRoICgpCi0gICAgIGNvbnN0IGdjaGFyICogY29u c3QgKmw7Ci0gICAgIGdjaGFyICpjb21wb3NlX3BhdGggPSBOVUxMOwotIAotKyAgICBpZiAobV9p c19ndGtfMzJiaXRfY29tcG9zZV9lcnJvcikKLSsgICAgICAgIGdfYXNzZXJ0IChnX3NldGVudiAo IkxBTkciLCBtX3Rlc3RfbmFtZSwgVFJVRSkpOwotICNpZiBHTElCX0NIRUNLX1ZFUlNJT04gKDIs IDU4LCAwKQotICAgICBsYW5ncyA9IGdfZ2V0X2xhbmd1YWdlX25hbWVzX3dpdGhfY2F0ZWdvcnkg KCJMQ19DVFlQRSIpOwotICNlbHNlCi0gICAgIGxhbmdzID0gZ19nZXRfbGFuZ3VhZ2VfbmFtZXMg KCk7Ci0gI2VuZGlmCi0rICAgIGlmIChtX2lzX2d0a18zMmJpdF9jb21wb3NlX2Vycm9yKQotKyAg ICAgICAgZ19hc3NlcnQgKGdfc2V0ZW52ICgiTEFORyIsICJlbl9VUy5VVEYtOCIsIFRSVUUpKTsK LSAgICAgZm9yIChsID0gbGFuZ3M7ICpsOyBsKyspIHsKLSAgICAgICAgIGlmIChnX3N0cl9oYXNf cHJlZml4ICgqbCwgImVuX1VTIikpCi0gICAgICAgICAgICAgYnJlYWs7Ci1AQCAtOTEsNiArMTEz LDkgQEAgZ2Jvb2xlYW4KLSBpZGxlX2NiIChncG9pbnRlciB1c2VyX2RhdGEpCi0gewotICAgICBU ZXN0SWRsZURhdGEgKmRhdGEgPSAoVGVzdElkbGVEYXRhICopdXNlcl9kYXRhOwotKyAgICBzdGF0 aWMgaW50IG4gPSAwOwotKyAgICBnYm9vbGVhbiB0ZXJtaW5hdGVfcHJvZ3JhbSA9IEZBTFNFOwot KwotICAgICBnX2Fzc2VydCAoZGF0YSk7Ci0gICAgIHN3aXRjaCAoZGF0YS0+Y2F0ZWdvcnkpIHsK LSAgICAgY2FzZSBURVNUX0NSRUFURV9FTkdJTkU6Ci1AQCAtMTAzLDIzICsxMjgsNzUgQEAgaWRs ZV9jYiAoZ3BvaW50ZXIgdXNlcl9kYXRhKQotICAgICAgICAgICAgIGlmIChnX21haW5fbG9vcF9p c19ydW5uaW5nIChtX2xvb3ApKQotICAgICAgICAgICAgICAgICBnX21haW5fbG9vcF9xdWl0ICht X2xvb3ApOwotICAgICAgICAgICAgIGdfY2xlYXJfcG9pbnRlciAoJm1fbG9vcCwgZ19tYWluX2xv b3BfdW5yZWYpOwotLSNpZiBHVEtfQ0hFQ0tfVkVSU0lPTiAoNCwgMCwgMCkKLS0gICAgICAgICAg ICBtX2xpc3RfdG9wbGV2ZWwgPSBGQUxTRTsKLS0jZWxzZQotLSAgICAgICAgICAgIGd0a19tYWlu X3F1aXQgKCk7Ci0tI2VuZGlmCi0rICAgICAgICAgICAgdGVybWluYXRlX3Byb2dyYW0gPSBUUlVF OwotICAgICAgICAgfQotICAgICAgICAgZGF0YS0+aWRsZV9pZCA9IDA7Ci0gICAgICAgICBicmVh azsKLSsgICAgY2FzZSBURVNUX0RFTEFZRURfRk9DVVNfSU46Ci0rICAgICAgICBpZiAobV9lbmdp bmVfaXNfZm9jdXNlZCkgewotKyAgICAgICAgICAgIGRhdGEtPmlkbGVfaWQgPSAwOwotKyAgICAg ICAgICAgIG4gPSAwOwotKyAgICAgICAgICAgIGdfbWFpbl9sb29wX3F1aXQgKG1fbG9vcCk7Ci0r ICAgICAgICAgICAgcmV0dXJuIEdfU09VUkNFX1JFTU9WRTsKLSsgICAgICAgIH0KLSsgICAgICAg IGlmIChuKysgPCAxMCkgewotKyAgICAgICAgICAgIGdfdGVzdF9tZXNzYWdlICgiV2FpdGluZyBm b3IgXCJmb2N1cy1pblwiIHNpZ25hbCAlZHRoIHRpbWVzIiwgbik7Ci0rICAgICAgICAgICAgcmV0 dXJuIEdfU09VUkNFX0NPTlRJTlVFOwotKyAgICAgICAgfQotKyAgICAgICAgZ190ZXN0X2ZhaWxf cHJpbnRmICgiXCJmb2N1cy1pblwiIHNpZ25hbCBpcyB0aW1lb3V0LiIpOwotKyAgICAgICAgZ19t YWluX2xvb3BfcXVpdCAobV9sb29wKTsKLSsgICAgICAgIHRlcm1pbmF0ZV9wcm9ncmFtID0gVFJV RTsKLSsgICAgICAgIG4gPSAwOwotKyAgICAgICAgYnJlYWs7Ci0gICAgIGRlZmF1bHQ6Ci0gICAg ICAgICBnX3Rlc3RfZmFpbF9wcmludGYgKCJJZGxlIGZ1bmMgaXMgY2FsbGVkIGJ5IHdyb25nIGNh dGVnb3J5OiVkLiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPmNhdGVnb3J5 KTsKLSAgICAgICAgIGJyZWFrOwotICAgICB9Ci0rICAgIGlmICh0ZXJtaW5hdGVfcHJvZ3JhbSkg ewotKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTiAoNCwgMCwgMCkKLSsgICAgICAgIG1fbGlzdF90b3Bs ZXZlbCA9IEZBTFNFOwotKyNlbHNlCi0rICAgICAgICBndGtfbWFpbl9xdWl0ICgpOwotKyNlbmRp ZgotKyAgICB9Ci0gICAgIHJldHVybiBHX1NPVVJDRV9SRU1PVkU7Ci0gfQotIAotIAotK3N0YXRp YyB2b2lkCi0rZW5naW5lX2ZvY3VzX2luX2NiIChJQnVzRW5naW5lICplbmdpbmUsCi0rI2lmZGVm IElCVVNfRk9DVVNfSU5fSUQKLSsgICAgICAgICAgICAgICAgICAgIGdjaGFyICAgICAgKm9iamVj dF9wYXRoLAotKyAgICAgICAgICAgICAgICAgICAgZ2NoYXIgICAgICAqY2xpZW50LAotKyNlbmRp ZgotKyAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgdXNlcl9kYXRhKQotK3sKLSsjaWZk ZWYgSUJVU19GT0NVU19JTl9JRAotKyAgICBnX3Rlc3RfbWVzc2FnZSAoImVuZ2luZV9mb2N1c19p bl9jYiAlcyAlcyIsIG9iamVjdF9wYXRoLCBjbGllbnQpOwotKyAgICBtX2VuZ2luZV9pc19mb2N1 c2VkID0gZ19zdHJkdXAgKGNsaWVudCk7Ci0rI2Vsc2UKLSsgICAgZ190ZXN0X21lc3NhZ2UgKCJl bmdpbmVfZm9jdXNfaW5fY2IiKTsKLSsgICAgbV9lbmdpbmVfaXNfZm9jdXNlZCA9IGdfc3RyZHVw ICgiTm8gbmFtZWQiKTsKLSsjZW5kaWYKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStlbmdpbmVfZm9j dXNfb3V0X2NiIChJQnVzRW5naW5lICplbmdpbmUsCi0rI2lmZGVmIElCVVNfRk9DVVNfSU5fSUQK LSsgICAgICAgICAgICAgICAgICAgICBnY2hhciAgICAgICpvYmplY3RfcGF0aCwKLSsjZW5kaWYK LSsgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciAgICB1c2VyX2RhdGEpCi0rewotKyNpZmRl ZiBJQlVTX0ZPQ1VTX0lOX0lECi0rICAgIGdfdGVzdF9tZXNzYWdlICgiZW5naW5lX2ZvY3VzX291 dF9jYiAlcyIsIG9iamVjdF9wYXRoKTsKLSsjZWxzZQotKyAgICBnX3Rlc3RfbWVzc2FnZSAoImVu Z2luZV9mb2N1c19vdXRfY2IiKTsKLSsjZW5kaWYKLSsgICAgZ19jbGVhcl9wb2ludGVyICgmbV9l bmdpbmVfaXNfZm9jdXNlZCwgZ19mcmVlKTsKLSt9Ci0rCi0rCi0gc3RhdGljIElCdXNFbmdpbmUg KgotIGNyZWF0ZV9lbmdpbmVfY2IgKElCdXNGYWN0b3J5ICpmYWN0b3J5LAotICAgICAgICAgICAg ICAgICAgIGNvbnN0IGdjaGFyICpuYW1lLAotQEAgLTEzNSwxMSArMjEyLDMwIEBAIGNyZWF0ZV9l bmdpbmVfY2IgKElCdXNGYWN0b3J5ICpmYWN0b3J5LAotICAgICBnX2Fzc2VydCAoZGF0YSk7Ci0g ICAgIC8qIERvbid0IHJlc2V0IGlkbGVfaWQgdG8gYXZvaWQgZHVwbGljYXRlZCByZWdpc3Rlcl9p YnVzX2VuZ2luZSgpLiAqLwotICAgICBnX3NvdXJjZV9yZW1vdmUgKGRhdGEtPmlkbGVfaWQpOwot LSAgICBtX2VuZ2luZSA9IGlidXNfZW5naW5lX25ld193aXRoX3R5cGUgKElCVVNfVFlQRV9FTkdJ TkVfU0lNUExFLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5h bWUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lX3Bh dGgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWJ1c19idXNf Z2V0X2Nvbm5lY3Rpb24gKG1fYnVzKSk7Ci0rICAgIG1fZW5naW5lID0gKElCdXNFbmdpbmUgKiln X29iamVjdF9uZXcgKAotKyAgICAgICAgICAgIElCVVNfVFlQRV9FTkdJTkVfU0lNUExFLAotKyAg ICAgICAgICAgICJlbmdpbmUtbmFtZSIsICAgICAgbmFtZSwKLSsgICAgICAgICAgICAib2JqZWN0 LXBhdGgiLCAgICAgIGVuZ2luZV9wYXRoLAotKyAgICAgICAgICAgICJjb25uZWN0aW9uIiwgICAg ICAgaWJ1c19idXNfZ2V0X2Nvbm5lY3Rpb24gKG1fYnVzKSwKLSsjaWZkZWYgSUJVU19GT0NVU19J Tl9JRAotKyAgICAgICAgICAgICJoYXMtZm9jdXMtaWQiLCAgICAgVFJVRSwKLSsjZW5kaWYKLSsg ICAgICAgICAgICBOVUxMKTsKLSAgICAgZ19mcmVlIChlbmdpbmVfcGF0aCk7Ci0rCi0rICAgIG1f ZW5naW5lX2lzX2ZvY3VzZWQgPSBOVUxMOwotKyNpZmRlZiBJQlVTX0ZPQ1VTX0lOX0lECi0rICAg IGdfc2lnbmFsX2Nvbm5lY3QgKG1fZW5naW5lLCAiZm9jdXMtaW4taWQiLAotKyNlbHNlCi0rICAg IGdfc2lnbmFsX2Nvbm5lY3QgKG1fZW5naW5lLCAiZm9jdXMtaW4iLAotKyNlbmRpZgotKyAgICAg ICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChlbmdpbmVfZm9jdXNfaW5fY2IpLCBOVUxMKTsK LSsjaWZkZWYgSUJVU19GT0NVU19JTl9JRAotKyAgICBnX3NpZ25hbF9jb25uZWN0IChtX2VuZ2lu ZSwgImZvY3VzLW91dC1pZCIsCi0rI2Vsc2UKLSsgICAgZ19zaWduYWxfY29ubmVjdCAobV9lbmdp bmUsICJmb2N1cy1vdXQiLAotKyNlbmRpZgotKyAgICAgICAgICAgICAgICAgICAgICBHX0NBTExC QUNLIChlbmdpbmVfZm9jdXNfb3V0X2NiKSwgTlVMTCk7Ci0gICAgIGlmIChtX2NvbXBvc2VfZmls ZSkKLSAgICAgICAgIGNvbXBvc2VfcGF0aCA9IGdfYnVpbGRfZmlsZW5hbWUgKG1fc3JjZGlyLCBt X2NvbXBvc2VfZmlsZSwgTlVMTCk7Ci0gICAgIGVsc2UKLUBAIC0yMzUsNiArMzMxLDEzIEBAIHNl dF9lbmdpbmVfY2IgKEdPYmplY3QgICAgICAqb2JqZWN0LAotICAgICAgICAgcmV0dXJuOwotICAg ICB9Ci0gCi0rICAgIC8qIGlidXNfaW1fY29udGV4dF9mb2N1c19pbigpIGlzIGNhbGxlZCBhZnRl ciBHbGJvYWxFbmdpbmUgaXMgc2V0LiAqLwotKyAgICBpZiAoaXNfaW50ZWdyYXRlZF9kZXNrdG9w ICgpICYmICFtX2VuZ2luZV9pc19mb2N1c2VkKSB7Ci0rICAgICAgICBkYXRhLmNhdGVnb3J5ID0g VEVTVF9ERUxBWUVEX0ZPQ1VTX0lOOwotKyAgICAgICAgZGF0YS5pZGxlX2lkID0gZ190aW1lb3V0 X2FkZF9zZWNvbmRzICgxLCBpZGxlX2NiLCAmZGF0YSk7Ci0rICAgICAgICBnX21haW5fbG9vcF9y dW4gKG1fbG9vcCk7Ci0rICAgICAgICBpZiAoZGF0YS5pZGxlX2lkICE9IDApCi0rICAgICAgICAg ICAgcmV0dXJuOwotICAgICBpZiAobV9jb21wb3NlX3RhYmxlID09IE5VTEwpIHsKLSAgICAgICAg IGdfdGVzdF9za2lwICgiWW91ciBsb2NhbGUgdXNlcyBlbl9VUyBjb21wb3NlIHRhYmxlLiIpOwot ICAgICAgICAgaWRsZV9jYiAoJmRhdGEpOwotQEAgLTMxOSw2ICs0MjIsNyBAQCBzZXRfZW5naW5l IChncG9pbnRlciB1c2VyX2RhdGEpCi0gewotICAgICBnX3Rlc3RfbWVzc2FnZSAoInNldF9lbmdp bmUoKSBpcyBjYWxsaW5nIik7Ci0gICAgIGdfYXNzZXJ0IChtX2J1cyAhPSBOVUxMKTsKLSsKLSAg ICAgaWJ1c19idXNfc2V0X2dsb2JhbF9lbmdpbmVfYXN5bmMgKG1fYnVzLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgInhrYnRlc3Q6dXM6OmVuZyIsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwKLUBAIC0zNDYsNiArNDUwLDExIEBAIGV2 ZW50X2NvbnRyb2xsZXJfZW50ZXJfZGVsYXkgKGdwb2ludGVyIHVzZXJfZGF0YSkKLSAgICAgfQot ICAgICBpZiAoaSsrID09IDEwKSB7Ci0gICAgICAgICBnX3Rlc3RfZmFpbF9wcmludGYgKCJXaW5k b3cgaXMgbm90IHJlYWxpemVkIHdpdGggJWQgdGltZXMiLCBpKTsKLSsjaWYgR1RLX0NIRUNLX1ZF UlNJT04gKDQsIDAsIDApCi0rICAgICAgICBtX2xpc3RfdG9wbGV2ZWwgPSBGQUxTRTsKLSsjZWxz ZQotKyAgICAgICAgZ3RrX21haW5fcXVpdCAoKTsKLSsjZW5kaWYKLSAgICAgICAgIHJldHVybiBH X1NPVVJDRV9SRU1PVkU7Ci0gICAgIH0KLSAgICAgZ190ZXN0X21lc3NhZ2UgKCJldmVudF9jb250 cm9sbGVyX2VudGVyX2RlbGF5ICVkIiwgaSk7Ci1AQCAtMzYwLDE2ICs0NjksNDMgQEAgZXZlbnRf Y29udHJvbGxlcl9lbnRlcl9jYiAoR3RrRXZlbnRDb250cm9sbGVyICpjb250cm9sbGVyLAotICAg ICBzdGF0aWMgZ3VpbnQgaWQgPSAwOwotIAotICAgICBnX3Rlc3RfbWVzc2FnZSAoIkV2ZW50Q29u dHJvbGxlciBlbWl0cyBcImVudGVyXCIgc2lnbmFsIik7Ci0tICAgIC8qIENhbGwgYW4gaWRsZSBm dW5jdGlvbiBiZWNhdXNlIGd0a193aWRnZXRfYWRkX2NvbnRyb2xsZXIoKQotLSAgICAgKiBjYWxs cyBnX2xpc3RfcHJlcGVuZCgpIGZvciBldmVudF9jb250cm9sbGVycyBhbmQgdGhpcyBjb250cm9s bGVyIGlzCi0tICAgICAqIGFsd2F5cyBjYWxsZWQgYmVmb3JlICJndGstdGV4dC1mb2N1cy1jb250 cm9sbGVyIgotLSAgICAgKiBpcyBjYWxlbGQgYW5kIHRoZSBJTSBjb250ZXh0IGRvZXMgbm90IHJl Y2VpdmUgdGhlIGZvY3VzLWluIHlldC4KLS0gICAgICovCi0gICAgIGlmIChpZCkKLSAgICAgICAg IHJldHVybjsKLS0gICAgaWQgPSBnX2lkbGVfYWRkIChldmVudF9jb250cm9sbGVyX2VudGVyX2Rl bGF5LCBjb250cm9sbGVyKTsKLSsgICAgaWYgKGlzX2ludGVncmF0ZWRfZGVza3RvcCAoKSkgewot KyAgICAgICAgLyogV2FpdCBmb3IgMyBzZWNvbmRzIGluIEdOT01FIFdheWxhbmQgYmVjYXVzZSB0 aGVyZSBpcyBhIGxvbmcgdGltZSBsYWcKLSsgICAgICAgICAqIGJldHdlZW4gdGhlICJlbnRlciIg c2lnbmFsIG9uIHRoZSBldmVudCBjb250cm9sbGVyIGluIEd0a1RleHQKLSsgICAgICAgICAqIGFu ZCB0aGUgIkZvY3VzSW4iIEQtQnVzIHNpZ25hbCBpbiBCdXNJbnB1dENvbnRleHQgb2YgaWJ1cy1k YWVtb24KLSsgICAgICAgICAqIGJlY2F1c2UgbXV0dGVyL2NvcmUvd2luZG93LmM6bWV0YV93aW5k b3dfc2hvdygpIGNhbGxzCi0rICAgICAgICAgKiBtdXR0ZXIvY29yZS93aW5kb3cuYzptZXRhX3dp bmRvd19mb2N1cygpIC0+Ci0rICAgICAgICAgKiBtdXR0ZXIvd2F5bGFuZC9tZXRhLXdheWxhbmQt dGV4dC1pbnB1dC5jOgotKyAgICAgICAgICogICBtZXRhX3dheWxhbmRfdGV4dF9pbnB1dF9zZXRf Zm9jdXMoKSAtPgotKyAgICAgICAgICogbXV0dGVyL2NsdXR0ZXIvY2x1dHRlci9jbHV0dGVyLWlu cHV0LW1ldGhvZC5jOgotKyAgICAgICAgICogICBjbHV0dGVyX2lucHV0X21ldGhvZF9mb2N1c19v dXQoKQotKyAgICAgICAgICogSS5lLiAiRm9jdXNPdXQiIGFuZCAiRm9jdXNJbiIgRC1CdXMgbWV0 aG9kcyBhcmUgYWx3YXlzIGRlbGF5ZWQKLSsgICAgICAgICAqIGFnYWluc3QgdGhlIHdpbmRvdyBw cmVzZW50IGluIEdOT01FIFdheWxhbmQuCi0rICAgICAgICAgKiBJZiAiRm9jdXNPdXQiIGFuZCAi Rm9jdXNJbiIgRC1CdXMgc2lnbmFscyB3b3VsZCBiZSBjYWxsZWQgYWZ0ZXIKLSsgICAgICAgICAq ICJTZXRHbG9iYWxFbmdpbmUiIEQtQlVzIHNpZ25hbCB3YXMgY2FsbGVkIGluIGlidXMtZGFlbW9u LAotKyAgICAgICAgICogdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgY291bGQgYmUgY2FsbGVkOgot KyAgICAgICAgICogICBlbmdpbmVfZm9jdXNfb3V0X2NiKCkgZm9yIHRoZSAiZ25vbWUtc2hlbGwi IGNvbnRleHQKLSsgICAgICAgICAqICAgZW5naW5lX2ZvY3VzX2luX2NiKCkgZm9yIHRoZSAiZmFr ZSIgY29udGV4dAotKyAgICAgICAgICogICBlbmdpbmVfZm9jdXNfb3V0X2NiKCkgZm9yIHRoZSAi ZmFrZSIgY29udGV4dAotKyAgICAgICAgICogICBlbmdpbmVfZm9jdXNfaW5fY2IoKSBmb3IgdGhl ICJnbm9tZS1zaGVsbCIgY29udGV4dAotKyAgICAgICAgICogYW5kIGlidXNfZW5naW5lX2NvbW1p dF90ZXh0KCkgd291bGQgbm90IHdvcmsuCi0rICAgICAgICAgKiBUaGlzIGFzc3VtZSB0aGUgZm9j dXMtaW4vb3V0IHNpZ25hbHMgYXJlIGNhbGxlZCB3aXRoaW4gdGhlIHRpbWVvdXQKLSsgICAgICAg ICAqIHNlY29uZHMuCi0rICAgICAgICAgKi8KLSsgICAgICAgIGlkID0gZ190aW1lb3V0X2FkZF9z ZWNvbmRzICgzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50X2Nv bnRyb2xsZXJfZW50ZXJfZGVsYXksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29udHJvbGxlcik7Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgICAvKiBDYWxsIGFuIGlkbGUg ZnVuY3Rpb24gaW4gWG9yZyBiZWNhdXNlIGd0a193aWRnZXRfYWRkX2NvbnRyb2xsZXIoKQotKyAg ICAgICAgICogY2FsbHMgZ19saXN0X3ByZXBlbmQoKSBmb3IgZXZlbnRfY29udHJvbGxlcnMgYW5k IHRoaXMgY29udHJvbGxlciBpcwotKyAgICAgICAgICogYWx3YXlzIGNhbGxlZCBiZWZvcmUgImd0 ay10ZXh0LWZvY3VzLWNvbnRyb2xsZXIiCi0rICAgICAgICAgKiBpcyBjYWxlbGQgYW5kIHRoZSBJ TSBjb250ZXh0IGRvZXMgbm90IHJlY2VpdmUgdGhlIGZvY3VzLWluIHlldC4KLSsgICAgICAgICAq LwotKyAgICAgICAgaWQgPSBnX2lkbGVfYWRkIChldmVudF9jb250cm9sbGVyX2VudGVyX2RlbGF5 LCBjb250cm9sbGVyKTsKLSsgICAgfQotIH0KLS0KLSAjZWxzZQotIAotIHN0YXRpYyBnYm9vbGVh bgotQEAgLTU1MCwxMCArNjg2LDE4IEBAIHN0YXRpYyB2b2lkCi0gdGVzdF9pbml0ICh2b2lkKQot IHsKLSAgICAgY2hhciAqdHR5X25hbWUgPSB0dHluYW1lIChTVERJTl9GSUxFTk8pOwotLSAgICBH TWFpbkxvb3AgKmxvb3AgPSBnX21haW5fbG9vcF9uZXcgKE5VTEwsIFRSVUUpOwotKyAgICBHTWFp bkxvb3AgKmxvb3A7Ci0rICAgIHN0YXRpYyBndWludCBpZGxlX2lkID0gMDsKLSsKLSsgICAgaWYg KGlkbGVfaWQpIHsKLSsgICAgICAgIGdfdGVzdF9pbmNvbXBsZXRlICgiVGVzdCBpcyBjYWxsZWQg dHdpY2UgZHVlIHRvIGEgdGltZW91dC4iKTsKLSsgICAgICAgIHJldHVybjsKLSsgICAgfQotKwot KyAgICBsb29wID0gZ19tYWluX2xvb3BfbmV3IChOVUxMLCBUUlVFKTsKLSAgICAgZ190ZXN0X21l c3NhZ2UgKCJUZXN0IG9uICVzIiwgdHR5X25hbWUgPyB0dHlfbmFtZSA6ICIobnVsbCkiKTsKLSAg ICAgaWYgKHR0eV9uYW1lICYmIGdfc3Ryc3RyX2xlbiAodHR5X25hbWUsIC0xLCAicHRzIikpIHsK LS0gICAgICAgIGdfdGltZW91dF9hZGRfc2Vjb25kcyAoMywgX3dhaXRfZm9yX2tleV9yZWxlYXNl X2NiLCBsb29wKTsKLSsgICAgICAgIGlkbGVfaWQgPSBnX3RpbWVvdXRfYWRkX3NlY29uZHMgKDMs IF93YWl0X2Zvcl9rZXlfcmVsZWFzZV9jYiwgbG9vcCk7Ci0gICAgICAgICBnX21haW5fbG9vcF9y dW4gKGxvb3ApOwotICAgICB9Ci0gICAgIGdfbWFpbl9sb29wX3VucmVmIChsb29wKTsKLUBAIC01 ODYsMTQgKzczMCwxNiBAQCB0ZXN0X2NvbXBvc2UgKHZvaWQpCi0gICAgIGd0a19tYWluICgpOwot ICNlbmRpZgotICAgICBnX2xvZ19zZXRfYWx3YXlzX2ZhdGFsIChmbGFncyk7Ci0rICAgIGdfY2xl YXJfcG9pbnRlciAoJm1fZW5naW5lX2lzX2ZvY3VzZWQsIGdfZnJlZSk7Ci0rICAgIGdfY2xlYXJf cG9pbnRlciAoJm1fc2Vzc2lvbl9uYW1lLCBnX2ZyZWUpOwotIH0KLSAKLSAKLSBpbnQKLSBtYWlu IChpbnQgYXJnYywgY2hhciAqYXJndltdKQotIHsKLS0gICAgZ2NoYXIgKnRlc3RfbmFtZTsKLSAg ICAgZ2NoYXIgKnRlc3RfcGF0aDsKLSsgICAgaW50IHJldHZhbDsKLSAKLSAgICAgaWJ1c19pbml0 ICgpOwotICAgICAvKiBBdm9pZCBhIHdhcm5pbmcgb2YgIkFULVNQSTogQ291bGQgbm90IG9idGFp biBkZXNrdG9wIHBhdGggb3IgbmFtZSIKLUBAIC02MTIsMjEgKzc1OCw0MiBAQCBtYWluIChpbnQg YXJnYywgY2hhciAqYXJndltdKQotICAgICAgICAgICAgID8gZ19zdHJkdXAgKGFyZ3ZbMV0pIDog Z19zdHJkdXAgKCIuIik7Ci0gICAgIG1fY29tcG9zZV9maWxlID0gZ19zdHJkdXAgKGdfZ2V0ZW52 ICgiQ09NUE9TRV9GSUxFIikpOwotICNpZiBHTElCX0NIRUNLX1ZFUlNJT04gKDIsIDU4LCAwKQot LSAgICB0ZXN0X25hbWUgPSBnX3N0cmR1cCAoZ19nZXRfbGFuZ3VhZ2VfbmFtZXNfd2l0aF9jYXRl Z29yeSAoIkxDX0NUWVBFIilbMF0pOwotKyAgICBtX3Rlc3RfbmFtZSA9IGdfc3RyZHVwIChnX2dl dF9sYW5ndWFnZV9uYW1lc193aXRoX2NhdGVnb3J5ICgiTENfQ1RZUEUiKVswXSk7Ci0gI2Vsc2UK LS0gICAgdGVzdF9uYW1lID0gZ19zdHJkdXAgKGdfZ2V0ZW52ICgiTEFORyIpKTsKLSsgICAgbV90 ZXN0X25hbWUgPSBnX3N0cmR1cCAoZ19nZXRlbnYgKCJMQU5HIikpOwotICNlbmRpZgotICAgICBp ZiAobV9jb21wb3NlX2ZpbGUgJiYKLS0gICAgICAgICghdGVzdF9uYW1lIHx8ICFnX2FzY2lpX3N0 cm5jYXNlY21wICh0ZXN0X25hbWUsICJlbl9VUyIsIDUpKSkgewotLSAgICAgICAgZ19mcmVlICh0 ZXN0X25hbWUpOwotLSAgICAgICAgdGVzdF9uYW1lID0gZ19wYXRoX2dldF9iYXNlbmFtZSAobV9j b21wb3NlX2ZpbGUpOwotKyAgICAgICAgKCFtX3Rlc3RfbmFtZSB8fCAhZ19hc2NpaV9zdHJuY2Fz ZWNtcCAobV90ZXN0X25hbWUsICJlbl9VUyIsIDUpKSkgewotKyAgICAgICAgZ19mcmVlIChtX3Rl c3RfbmFtZSk7Ci0rICAgICAgICBtX3Rlc3RfbmFtZSA9IGdfcGF0aF9nZXRfYmFzZW5hbWUgKG1f Y29tcG9zZV9maWxlKTsKLSsgICAgfQotKyAgICAvKiBUaGUgcGFyZW50IG9mIEd0a0lNQ29udGV4 dFdheWxhbmQgaXMgR3RrSU1Db250ZXh0U2ltcGxlIGFuZAotKyAgICAgKiBpdCBvdXRwdXRzIGEg d2FybmluZyBvZiAiQ2FuJ3QgaGFuZGxlID4xNmJpdCBrZXl2YWxzIiBpbgotKyAgICAgKiBndGsv Z3RrY29tcG9zZXRhYmxlLmM6cGFyc2VfY29tcG9zZV9zZXF1ZW5jZSgpIGluIHB0LUJSIGxvY2Fs ZXMKLSsgICAgICogYW5kIGFueSB3YXJuaW5ncyBhcmUgdHJlYXRlZCBhcyBlcnJvcnMgd2l0aCBn X3Rlc3RfcnVuKCkKLSsgICAgICogU28gZXhwb3J0IExBTkc9ZW5fVVMuVVRGLTggZm9yIEdOT01F IFdheWxhbmQgYXMgYSB3b3JrYXJvdW5kLgotKyAgICAgKi8KLSsgICAgaWYgKG1fdGVzdF9uYW1l ICYmICghZ19hc2NpaV9zdHJuY2FzZWNtcCAobV90ZXN0X25hbWUsICJwdF9CUiIsIDUpIHx8Ci0r ICAgICAgICAgICAgICAgICAgICAgICAgIWdfYXNjaWlfc3RybmNhc2VjbXAgKG1fdGVzdF9uYW1l LCAiZmlfRkkiLCA1KQotKyAgICAgICAgICAgICAgICAgICAgICAgKSkgewotKyAgICAgICAgbV9p c19ndGtfMzJiaXRfY29tcG9zZV9lcnJvciA9IFRSVUU7Ci0rICAgIH0KLSsgICAgaWYgKG1faXNf Z3RrXzMyYml0X2NvbXBvc2VfZXJyb3IpIHsKLSsjaWYgMQotKyAgICAgICAgZ19hc3NlcnQgKGdf c2V0ZW52ICgiTEFORyIsICJlbl9VUy5VVEYtOCIsIFRSVUUpKTsKLSsjZWxzZQotKyAgICAgICAg LyogRklYTUU6IFVzZSBleHBlY3RlZF9tZXNzYWdlcyBpbiBnX2xvZ19zdHJ1Y3R1cmVkKCkgKi8K LSsgICAgICAgIGdfdGVzdF9leHBlY3RfbWVzc2FnZSAoIkd0ayIsIEdfTE9HX0xFVkVMX1dBUk5J TkcsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBoYW5kbGUgPjE2Yml0 IGtleXZhbHMiKTsKLSsjZW5kaWYKLSAgICAgfQotICAgICBnX3Rlc3RfYWRkX2Z1bmMgKCIvaWJ1 cy1jb21wb3NlL3Rlc3QtaW5pdCIsIHRlc3RfaW5pdCk7Ci0gICAgIG1fbG9vcCA9IGdfbWFpbl9s b29wX25ldyAoTlVMTCwgVFJVRSk7Ci0tICAgIHRlc3RfcGF0aCA9IGdfYnVpbGRfZmlsZW5hbWUg KCIvaWJ1cy1jb21wb3NlIiwgdGVzdF9uYW1lLCBOVUxMKTsKLSsgICAgdGVzdF9wYXRoID0gZ19i dWlsZF9maWxlbmFtZSAoIi9pYnVzLWNvbXBvc2UiLCBtX3Rlc3RfbmFtZSwgTlVMTCk7Ci0gICAg IGdfdGVzdF9hZGRfZnVuYyAodGVzdF9wYXRoLCB0ZXN0X2NvbXBvc2UpOwotICAgICBnX2ZyZWUg KHRlc3RfcGF0aCk7Ci0tICAgIGdfZnJlZSAodGVzdF9uYW1lKTsKLSAKLS0gICAgcmV0dXJuIGdf dGVzdF9ydW4gKCk7Ci0rICAgIHJldHZhbCA9IGdfdGVzdF9ydW4gKCk7Ci0rICAgIGdfZnJlZSAo bV90ZXN0X25hbWUpOwotKyAgICByZXR1cm4gcmV0dmFsOwotIH0KLS0tIAotMi40NS4wCi0KLUZy b20gMjM3ODVlNmM4MTUwYWNlZGE3Zjk2NjVhMzMzNWYxZTRiYWVjZDFjYyBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKLUZyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4K LURhdGU6IFRodSwgMSBBdWcgMjAyNCAwODoyMzowOSArMDkwMAotU3ViamVjdDogW1BBVENIIDYv Nl0gc3JjL3Rlc3RzOiBGaXggc29tZSBDSSBpc3N1ZXMgd2l0aCBidXN5IFRNVCB2aXJ0dWFsIHNl c3Npb24KLQotLSBJbmNyZWFzZSB3YWl0aW5nIHRpbWUgaW4gaWJ1cy1jb21wb3NlLWxvY2FsZXMu Ci0tIFdhaXQgZm9yIDMgc2VjcyBhZnRlciBzZXQtZW5naW5lIGluIGlidXMtY29tcG9zZSB0byB3 YWl0IGZvciB0aGUgZGVsYXllZAotICBmb2N1cy1pbi9vdXQgZXZlbnRzLgotLSBkZWxldGUgc2Ny ZWVuZHVtcCBvcHRpb24gaW4gaWJ1cy1kZXNrdG9wLXRlc3RpbmcuZGVza3RvcCBub3QgdG8KLSAg c3VwcG9ydCBubyBkaXNwbGF5LgotLSBzZXRsb2NhbGUgaW4gaWJ1cy1lbmdpbmUtc3dpdGNoIHRv IGdldCBVVEYtOCB3YXJuaW5ncy4KLS0gUXVvdGUgZmlsZSBuYW1lcyBhcyBzaGVsbCBzeW50YXgg YXMgbXVjaCBhcyBwb3NzaWJsZS4KLS0gQ2hlY2sgZmlsZSBleGlzdGVudCBhbmQgZG8gbm90IHVz ZSAicm0gLWYiIGFzIG11Y2ggYXMgcG9zc2libGUuCi0tIERvIG5vdCBzZXQgR1RLX0lNX01PRFVM RT1pYnVzIGZvciBXYXlsYW5kLgotLSBFeGNsdWRlIHNzaGQtc2Vzc2lvbiB0byBjaGVjayBleGlz dGVudCBzZXNzaW9ucy4KLQotQlVHPWh0dHBzOi8vZ2l0aHViLmNvbS9pYnVzL2lidXMvcHVsbC8y NjU3Ci0tLS0KLSBzcmMvdGVzdHMvaWJ1cy1jb21wb3NlLWxvY2FsZXMuaW4gICAgICAgICAgIHwg IDQgKy0KLSBzcmMvdGVzdHMvaWJ1cy1jb21wb3NlLmMgICAgICAgICAgICAgICAgICAgIHwgMjMg KysrKy0tCi0gc3JjL3Rlc3RzL2lidXMtZGVza3RvcC10ZXN0aW5nLWF1dG9zdGFydC5pbiB8ICAx ICsKLSBzcmMvdGVzdHMvaWJ1cy1kZXNrdG9wLXRlc3RpbmctbW9kdWxlICAgICAgIHwgNzkgKysr KysrKysrKysrKysrKy0tLS0tCi0gc3JjL3Rlc3RzL2lidXMtZGVza3RvcC10ZXN0aW5nLmRlc2t0 b3AuaW4gICB8ICAyICstCi0gc3JjL3Rlc3RzL2lidXMtZW5naW5lLXN3aXRjaC5jICAgICAgICAg ICAgICB8ICAzICsKLSA2IGZpbGVzIGNoYW5nZWQsIDg1IGluc2VydGlvbnMoKyksIDI3IGRlbGV0 aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3Rlc3RzL2lidXMtY29tcG9zZS1sb2NhbGVzLmlu IGIvc3JjL3Rlc3RzL2lidXMtY29tcG9zZS1sb2NhbGVzLmluCi1pbmRleCA3YTEzM2NlMC4uNDg1 MjA0YzAgMTAwNzU1Ci0tLS0gYS9zcmMvdGVzdHMvaWJ1cy1jb21wb3NlLWxvY2FsZXMuaW4KLSsr KyBiL3NyYy90ZXN0cy9pYnVzLWNvbXBvc2UtbG9jYWxlcy5pbgotQEAgLTE1LDggKzE1LDggQEAg ZG8KLSAgICAgaWYgWyAieCRJU19DT01NRU5UIiAhPSB4IF0gOyB0aGVuCi0gICAgICAgICBjb250 aW51ZQotICAgICBmaQotLSAgICB3aGlsZSBbIHgiJElCVVNfREFFTU9OX1dJVEhfU1lTVEVNRCIg IT0geCBdICYmIFsgJElOSVRFRCAtbHQgNiBdIDsgZG8KLS0gICAgICAgIGVjaG8gIldhaXRpbmcg Zm9yICR7SU5JVEVEfTAgc2VjcyB0aWxsIDYwIHNlY3MiCi0rICAgIHdoaWxlIFsgeCIkSUJVU19E QUVNT05fV0lUSF9TWVNURU1EIiAhPSB4IF0gJiYgWyAkSU5JVEVEIC1sdCAxMiBdIDsgZG8KLSsg ICAgICAgIGVjaG8gIldhaXRpbmcgZm9yICR7SU5JVEVEfTAgc2VjcyB0aWxsIDEyMCBzZWNzIgot ICAgICAgICAgc2xlZXAgMTAKLSAgICAgICAgIElOSVRFRD1gZXhwciAkSU5JVEVEICsgMWAKLSAg ICAgZG9uZQotZGlmZiAtLWdpdCBhL3NyYy90ZXN0cy9pYnVzLWNvbXBvc2UuYyBiL3NyYy90ZXN0 cy9pYnVzLWNvbXBvc2UuYwotaW5kZXggMDY3OWMyNTkuLjMyNmQzYjkwIDEwMDY0NAotLS0tIGEv c3JjL3Rlc3RzL2lidXMtY29tcG9zZS5jCi0rKysgYi9zcmMvdGVzdHMvaWJ1cy1jb21wb3NlLmMK LUBAIC0zMzEsMTMgKzMzMSwyMiBAQCBzZXRfZW5naW5lX2NiIChHT2JqZWN0ICAgICAgKm9iamVj dCwKLSAgICAgICAgIHJldHVybjsKLSAgICAgfQotIAotLSAgICAvKiBpYnVzX2ltX2NvbnRleHRf Zm9jdXNfaW4oKSBpcyBjYWxsZWQgYWZ0ZXIgR2xib2FsRW5naW5lIGlzIHNldC4gKi8KLS0gICAg aWYgKGlzX2ludGVncmF0ZWRfZGVza3RvcCAoKSAmJiAhbV9lbmdpbmVfaXNfZm9jdXNlZCkgewot LSAgICAgICAgZGF0YS5jYXRlZ29yeSA9IFRFU1RfREVMQVlFRF9GT0NVU19JTjsKLS0gICAgICAg IGRhdGEuaWRsZV9pZCA9IGdfdGltZW91dF9hZGRfc2Vjb25kcyAoMSwgaWRsZV9jYiwgJmRhdGEp OwotLSAgICAgICAgZ19tYWluX2xvb3BfcnVuIChtX2xvb3ApOwotLSAgICAgICAgaWYgKGRhdGEu aWRsZV9pZCAhPSAwKQotLSAgICAgICAgICAgIHJldHVybjsKLSsgICAgLyogaWJ1c19pbV9jb250 ZXh0X2ZvY3VzX2luKCkgaXMgY2FsbGVkIGFmdGVyIEdsYm9hbEVuZ2luZSBpcyBzZXQuCi0rICAg ICAqIFRoZSBmb2N1cy1pbi9vdXQgZXZlbnRzIGhhcHBlbiBtb3JlIHNsb3dseSBpbiBhIGJ1c3kg c3lzdGVtCi0rICAgICAqIGxpa2VzIHdpdGggYSBUTVQgdG9vbC4KLSsgICAgICovCi0rICAgIGlm IChpc19pbnRlZ3JhdGVkX2Rlc2t0b3AgKCkgJiYgZ19nZXRlbnYgKCJJQlVTX0RBRU1PTl9XSVRI X1NZU1RFTUQiKSkgewotKyAgICAgICAgZ190ZXN0X21lc3NhZ2UgKCJTdGFydCB0aW55IFwiZm9j dXMtaW5cIiBzaWduYWwgdGVzdCIpOwotKyAgICAgICAgZm9yIChpID0gMDsgaSA8IDM7IGkrKykg ewotKyAgICAgICAgICAgIGRhdGEuY2F0ZWdvcnkgPSBURVNUX0RFTEFZRURfRk9DVVNfSU47Ci0r ICAgICAgICAgICAgZGF0YS5pZGxlX2lkID0gZ190aW1lb3V0X2FkZF9zZWNvbmRzICgxLCBpZGxl X2NiLCAmZGF0YSk7Ci0rICAgICAgICAgICAgZ19tYWluX2xvb3BfcnVuIChtX2xvb3ApOwotKyAg ICAgICAgICAgIGlmIChkYXRhLmlkbGVfaWQgIT0gMCkKLSsgICAgICAgICAgICAgICAgcmV0dXJu OwotKyAgICAgICAgfQotKyAgICAgICAgZ190ZXN0X21lc3NhZ2UgKCJFbmQgdGlueSBcImZvY3Vz LWluXCIgc2lnbmFsIHRlc3QiKTsKLSsgICAgICAgIGRhdGEuY2F0ZWdvcnkgPSBURVNUX0NPTU1J VF9URVhUOwotKyAgICB9Ci0gICAgIGlmIChtX2NvbXBvc2VfdGFibGUgPT0gTlVMTCkgewotICAg ICAgICAgZ190ZXN0X3NraXAgKCJZb3VyIGxvY2FsZSB1c2VzIGVuX1VTIGNvbXBvc2UgdGFibGUu Iik7Ci0gICAgICAgICBpZGxlX2NiICgmZGF0YSk7Ci1kaWZmIC0tZ2l0IGEvc3JjL3Rlc3RzL2li dXMtZGVza3RvcC10ZXN0aW5nLWF1dG9zdGFydC5pbiBiL3NyYy90ZXN0cy9pYnVzLWRlc2t0b3At dGVzdGluZy1hdXRvc3RhcnQuaW4KLWluZGV4IGQ1MDM1NGRmLi45ZWNjOGMyNyAxMDA3NTUKLS0t LSBhL3NyYy90ZXN0cy9pYnVzLWRlc2t0b3AtdGVzdGluZy1hdXRvc3RhcnQuaW4KLSsrKyBiL3Ny Yy90ZXN0cy9pYnVzLWRlc2t0b3AtdGVzdGluZy1hdXRvc3RhcnQuaW4KLUBAIC03Myw2ICs3Myw3 IEBAIG1haW4oKQotICAgICBwYXJzZV9hcmdzICIkQCIKLSAgICAgaW5pdF9zZXNzaW9uCi0gICAg IGNoZWNrX2VudgotKyAgICAjcnVuX21vbml0b3IKLSAgICAgc2F2ZV9zY3JlZW4KLSAgICAgcnVu X3Rlc3Rfc3VpdGUKLSAgICAgZmluaXQKLWRpZmYgLS1naXQgYS9zcmMvdGVzdHMvaWJ1cy1kZXNr dG9wLXRlc3RpbmctbW9kdWxlIGIvc3JjL3Rlc3RzL2lidXMtZGVza3RvcC10ZXN0aW5nLW1vZHVs ZQotaW5kZXggMmQ2ODY4MTMuLjU1ZWIyNDhlIDEwMDc1NQotLS0tIGEvc3JjL3Rlc3RzL2lidXMt ZGVza3RvcC10ZXN0aW5nLW1vZHVsZQotKysrIGIvc3JjL3Rlc3RzL2lidXMtZGVza3RvcC10ZXN0 aW5nLW1vZHVsZQotQEAgLTYzLDggKzYzLDkgQEAgcHdkCi0gcHN0cmVlIC1hc3AgJCQKLSBnc2V0 dGluZ3MgbGlzdC1yZWN1cnNpdmVseSBvcmcuZ25vbWUuc2hlbGwKLSBycG0gLXEgZ25vbWUtc2hl bGwtZXh0ZW5zaW9uLW5vLW92ZXJ2aWV3IGdub21lLXNoZWxsIGdub21lLXNlc3Npb24KLS1wcyAt ZWYgfCBncmVwIGlidXMgfCBncmVwIC12IGdyZXAKLStwcyAtZWYgfCBncmVwIGlidXMgfCBncmVw IC12IFRNVCB8IGdyZXAgLXYgZ3JlcAotIGlidXMgYWRkcmVzcwotK2xvY2FsZQotIGVudgotICNk YnVzLXNlbmQgLS1zZXNzaW9uIC0tcHJpbnQtcmVwbHkgLS1kZXN0PW9yZy5nbm9tZS5TaGVsbC5J bnRyb3NwZWN0IC9vcmcvZ25vbWUvU2hlbGwvSW50cm9zcGVjdCBvcmcuZ25vbWUuU2hlbGwuSW50 cm9zcGVjdC5HZXRXaW5kb3dzCi0gJwotQEAgLTEzMyw3ICsxMzQsOCBAQCBjaGVja190dHkoKQot ICAgICBUVFk9YHR0eWAKLSAgICAgaWYgZWNobyAkUFJPR05BTUUgfCBncmVwIC1xIHJ1bm5lciA7 IHRoZW4KLSAgICAgICAgIGlmIFsgJEVOQUJMRURfU1lTVEVNRCAtZXEgMSBdICYmIFsgICRTRVNT SU9OX0lTX0dOT01FIC1lcSAxIF0gOyB0aGVuCi0tICAgICAgICAgICAgaWYgZWNobyAiJFRUWSIg fCBncmVwIC1FICd0dHl8Y29uc29sZScgOyB0aGVuCi0rICAgICAgICAgICAgIyAibm90IGEgdHR5 IiBpcyBjb3JyZWN0IHdpdGggVE1UIHRvb2wKLSsgICAgICAgICAgICBpZiBlY2hvICIkVFRZIiB8 IGdyZXAgLUUgJ3R0eXxjb25zb2xlJyB8IGdyZXAgLXYgIm5vdCBhIHR0eSIgOyB0aGVuCi0gICAg ICAgICAgICAgICAgcHJpbnRfbG9nIC1lICIke1JFRH1GQUlMJHtOQ306ICR7UkVEfUVSUk9SJHtO Q306IENoYW5naW5nIHJ1bmxldmVsIGRvZXMgbm90IHN1cHBvcnQgY29uc29sZS4gUGxlYXNlIGxv ZyBpbnRvIHRoZSBob3N0IHdpdGggc3NoLiIKLSAgICAgICAgICAgICAgICBleGl0IDEKLSAgICAg ICAgICAgICBmaQotQEAgLTE0Myw3ICsxNDUsNyBAQCBjaGVja190dHkoKQotICAgICAgICAgICAg ICAgIHByaW50X2xvZyAtZSAiUnVubmluZyBzZXNzaW9uIHdpdGggc3NoLiBJdCBtaWdodCBiZSBn b29kIHRvIHVzZSBjb25zb2xlIGluc3RlYWQuIgotICAgICAgICAgICAgIGZpCi0gICAgICAgICBm aQotLSAgICAgICAgU0VTU0lPTj1gcHMgLWVmIHwgZ3JlcCBzZXNzaW9uIHwgZ3JlcCAtdiBncmVw YAotKyAgICAgICAgU0VTU0lPTj1gcHMgLWVmIHwgZ3JlcCBzZXNzaW9uIHwgZ3JlcCAtdiBUTVQg fCBncmVwIC12IHNzaGQtc2Vzc2lvbiB8IGdyZXAgLXYgZ3JlcGAKLSAgICAgICAgIGlmIFsgeCIk U0VTU0lPTiIgIT0geCBdIDsgdGhlbgotICAgICAgICAgICAgICAgIHByaW50X2xvZyAtZSAiJHtS RUR9RkFJTCR7TkN9OiAke1JFRH1FUlJPUiR7TkN9OiBTZXNzaW9uIGlzIHJ1bm5pbmc6ICRTRVNT SU9OIgotICAgICAgICAgICAgICAgIGV4aXQgMQotQEAgLTI1NCw3ICsyNTYsOCBAQCBjcmVhdGVf eGRnX2F1dG9zdGFydCgpCi0gICAgICAgICBleGl0IDEKLSAgICAgZmkKLSAgICAgbWtkaXIgLXAg IiRURVNUX1VTRVJfSE9NRS8uY29uZmlnL2F1dG9zdGFydCIKLS0gICAgY3AgIiRkZXNrdG9wX2Zp bGUiICIkVEVTVF9VU0VSX0hPTUUvLmNvbmZpZy9hdXRvc3RhcnQiCi0rICAgIHNlZCAtZSAicy9c KF5FeGVjPS4qXCl0ZXN0cyBpYnVzXCguKlwpL1wxdGVzdHMgJFRFU1RTXDIvIiAiJGRlc2t0b3Bf ZmlsZSIgXAotKyAgICAgICAgPiAiJFRFU1RfVVNFUl9IT01FLy5jb25maWcvYXV0b3N0YXJ0LyRB VVRPU1RBUlRfREVTS1RPUF9GSUxFIgotICAgICBMSU5FPSJBdXRvc3RhcnRDb25kaXRpb249aWYt ZXhpc3RzICRURVNUX1VTRVJfSE9NRS8uY29uZmlnL2F1dG9zdGFydC8kQVVUT1NUQVJUX0RFU0tU T1BfRklMRSIKLSAgICAgZWNobyAiJExJTkUiID4+ICIkVEVTVF9VU0VSX0hPTUUvLmNvbmZpZy9h dXRvc3RhcnQvJEFVVE9TVEFSVF9ERVNLVE9QX0ZJTEUiCi0gICAgIGNob3duIC1SICIkVEVTVF9V U0VSIiAiJFRFU1RfVVNFUl9IT01FLy5jb25maWciCi1AQCAtMzI3LDYgKzMzMCw5IEBAIGluaXRf c2Vzc2lvbigpCi0gCi0gICAgIExPR0lOX1VTRVI9JFVTRVIKLSAgICAgTE9HSU5fSE9NRT0kSE9N RQotKyAgICBpZiBbIHgiJFRFU1RTIiA9IHggXSA7IHRoZW4KLSsgICAgICAgIFRFU1RTPSdpYnVz JwotKyAgICBmaQotICAgICBjaGVja190dHkKLSAgICAgaWYgWyAkRU5BQkxFRF9TWVNURU1EIC1l cSAxIF0gJiYgWyAgJFNFU1NJT05fSVNfR05PTUUgLWVxIDEgXSA7IHRoZW4KLSAgICAgICAgIFNF U1NJT05fRklMRTE9Ii91c3IvbGliL3N5c3RlbWQvc3lzdGVtL2dub21lLWhlYWRsZXNzLXNlc3Np b25ALnNlcnZpY2UiCi1AQCAtNDgyLDkgKzQ4OCwyNSBAQCBpbml0X2dub21lKCkKLSAgICAgICAg ICAgICBjaG93biAtUiAkTE9HSU5fVVNFUiAkVEVTVF9VU0VSX0hPTUUvLmxvY2FsCi0gICAgICAg ICBmaQotICAgICBmaQotKwotKyAgICAjIyBVc2UgZ25vbWUtaGVhZGxlc3Mtc2Vzc2lvbiBmb3Ig dGhlIG5vLWdyYXBoaWNzIG9wdGlvbiBiZWNhdXNlIGN1cnJlbnRseQotKyAgICAjIyBHRE0gaXRz ZWxmIGNhbm5vdCBydW4gdGhlIGxvZ2luIHNjcmVlbihncmVldGVyKSB3aXRob3V0IGEgZGlzcGxh eSBzbwotKyAgICAjIyB0aGUgbm8tZ3JhcGhpY3Mgb3B0aW9uIGRvZXMgbm90IHdvcmsgd2l0aCBH RE0gYW5kIHRoZSBUTVQgdG9vbAotKyAgICAjIyB3aGlsZSBHRE0gY2FuIGludm9rZSB0aGUgaGVh ZGxlc3MgR05PTUUgV2F5bGFuZCBzZXNzaW9ucy4KLSsgICAgIyMKLSsgICAgIyMgVXNlIEdOT01F X1NIRUxMX1dBWUxBTkRfQ09NTUFORCBmb3IgdGhlIG5vLWdyYXBoaWNzIG9wdGlvbiB0byBhZGQg YQotKyAgICAjIyB2aXJ0dWFsIG1vbml0b3Igc2luY2UgZ25vbWUtaGVhZGxlc3Mtc2Vzc2lvbiBw cm92aWRlcyBhIGhlYWRsZXNzIG1vZGUKLSsgICAgIyMgYnV0IG5vIG1vbml0b3IgYW5kIElCdXMg Zm9jdXMtaW4vb3V0IGV2ZW50cyBkb2VzIG5vdCB3b3JrIHdpdGhvdXQKLSsgICAgIyMgYW55IG1v bml0b3JzLgotKyAgICAjIwotKyAgICAjIyBVc2UgdGhlIHN5c3RlbWQgbG9jYWxlIGNvbmZpZ3Vy YXRpb24gZm9yIHRoZSBuby1ncmFwaGNpcyBtb2RlIHNpbmNlCi0rICAgICMjIGdub21lLWhlYWRs ZXNzLXNlc3Npb24gZG9lcyBub3QgcHVsbCBMQU5HIGZyb20gQWNjb3VudHNTZXJ2aWNlLgotKyAg ICAjIwotICAgICBpZiBbICRMT0dJTl9VU0VSICE9ICRVU0VSIF0gOyB0aGVuCi0gICAgICAgICBT SEVMTF9TRVJWSUNFX0ZJTEU9Im9yZy5nbm9tZS5TaGVsbEB3YXlsYW5kLnNlcnZpY2UiCi0gICAg ICAgICBTWVNURU1EX1VTRVJfRElSPSIkVEVTVF9VU0VSX0hPTUUvLmNvbmZpZy9zeXN0ZW1kL3Vz ZXIiCi0rICAgICAgICBFTlZfVVNFUl9ESVI9IiRURVNUX1VTRVJfSE9NRS8uY29uZmlnL2Vudmly b25tZW50LmQiCi0rICAgICAgICBMT0NBTEVfQ09ORj0iJEVOVl9VU0VSX0RJUi9pYnVzLmNvbmYi Ci0gICAgICAgICBpZiB0ZXN0ICRIQVZFX0dSQVBISUNTIC1uZSAxIDsgdGhlbgotICAgICAgICAg ICAgIGlmIHRlc3QgISAtZiAiJFNZU1RFTURfVVNFUl9ESVIvJFNIRUxMX1NFUlZJQ0VfRklMRSIg OyB0aGVuCi0gICAgICAgICAgICAgICAgIG1rZGlyIC1wICIkU1lTVEVNRF9VU0VSX0RJUiIKLUBA IC00OTQsMTIgKzUxNiwxOSBAQCBpbml0X2dub21lKCkKLSAgICAgICAgICAgICAgICAgICAgID4g JFNIRUxMX1NFUlZJQ0VfRklMRQotICAgICAgICAgICAgICAgICBkaWZmICRTWVNURU1EX1NZU1RF TV9ESVIvJFNIRUxMX1NFUlZJQ0VfRklMRSAkU0hFTExfU0VSVklDRV9GSUxFCi0gICAgICAgICAg ICAgICAgIHBvcGQKLS0gICAgICAgICAgICAgICAgY2hvd24gLVIgJExPR0lOX1VTRVIgIiRURVNU X1VTRVJfSE9NRS8uY29uZmlnIgotICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgbWtkaXIg LXAgIiRFTlZfVVNFUl9ESVIiCi0rICAgICAgICAgICAgY2F0ID4gIiRMT0NBTEVfQ09ORiIgPDwg X0VPRl9MT0NBTEVfQ09ORgotK0xBTkc9JFNFU1NJT05fTEFORwotK19FT0ZfTE9DQUxFX0NPTkYK LSsgICAgICAgICAgICBjaG93biAtUiAkTE9HSU5fVVNFUiAiJFRFU1RfVVNFUl9IT01FLy5jb25m aWciCi0gICAgICAgICBlbHNlCi0gICAgICAgICAgICAgaWYgdGVzdCAtZiAiJFNZU1RFTURfVVNF Ul9ESVIvJFNIRUxMX1NFUlZJQ0VfRklMRSIgOyB0aGVuCi0gICAgICAgICAgICAgICAgIHJtICIk U1lTVEVNRF9VU0VSX0RJUi8kU0hFTExfU0VSVklDRV9GSUxFIgotICAgICAgICAgICAgIGZpCi0r ICAgICAgICAgICAgaWYgdGVzdCAtZiAiJExPQ0FMRV9DT05GIiA7IHRoZW4KLSsgICAgICAgICAg ICAgICAgcm0gIiRMT0NBTEVfQ09ORiIKLSsgICAgICAgICAgICBmaQotICAgICAgICAgZmkKLSAg ICAgZmkKLSAgICAgR0VUX0RJU0FCTEVfVVNFUl9FWD0iZ3NldHRpbmdzIGdldCBvcmcuZ25vbWUu c2hlbGwgZGlzYWJsZS11c2VyLWV4dGVuc2lvbnMiCi1AQCAtNTU2LDcgKzU4NSw3IEBAIG9wZXJh dGVfZGVza3RvcF93aXRoX3N5c3RlbWQoKQotICAgICBTRVNTSU9OPWdub21lLWhlYWRsZXNzLXNl c3Npb24KLSAgICAgQ09NTUFORD0iJDEiCi0gCi0tICAgICNpZiB0ZXN0ICRIQVZFX0dSQVBISUNT IC1lcSAxIDsgdGhlbgotKyAgICBpZiB0ZXN0ICRIQVZFX0dSQVBISUNTIC1lcSAxIDsgdGhlbgot ICAgICAgICAgY2FzZSAiJENPTU1BTkQiIGluCi0gICAgICAgICAic3RhcnQiKSBzeXN0ZW1jdGwg aXNvbGF0ZSBncmFwaGljYWwudGFyZ2V0Ci0gICAgICAgICAgICAgICAgICBlY2hvICIiCi1AQCAt NTY1LDIyICs1OTQsMjQgQEAgb3BlcmF0ZV9kZXNrdG9wX3dpdGhfc3lzdGVtZCgpCi0gICAgICAg ICAiIikgICAgICBwcmludF9sb2cgLWUgIiR7UkVEfUZBSUwke05DfTogJHtSRUR9RVJST1Ike05D fTogV3JvbmcgY29tbWFuZCAkQ09NTUFORCIKLSAgICAgICAgICAgICAgICAgIGV4aXQgMTs7Ci0g ICAgICAgICBlc2FjCi0tICAgICNlbHNlCi0tICAgICMgICAgc2V0ZW5mb3JjZSAwCi0tICAgICMg ICAgc3lzdGVtY3RsICRDT01NQU5EICR7U0VTU0lPTn1AJHtURVNUX1VTRVJ9Ci0tICAgICNmaQot KyAgICBlbHNlCi0rICAgICAgICBzZXRlbmZvcmNlIDAKLSsgICAgICAgIHN5c3RlbWN0bCAkQ09N TUFORCAke1NFU1NJT059QCR7VEVTVF9VU0VSfQotKyAgICBmaQotICAgICBjYXNlICIkQ09NTUFO RCIgaW4KLSAgICAgInN0YXJ0Iikgc2xlZXAgMzA7OwotICAgICAiIikgOzsKLSAgICAgZXNhYwot LSAgICAjaWYgdGVzdCAkSEFWRV9HUkFQSElDUyAtZXEgMSA7IHRoZW4KLSsgICAgaWYgdGVzdCAk SEFWRV9HUkFQSElDUyAtZXEgMSA7IHRoZW4KLSAgICAgICAgIHN5c3RlbWN0bCBzdGF0dXMgLS1u by1wYWdlciBncmFwaGljYWwudGFyZ2V0Ci0tICAgICNlbHNlCi0tICAgICMgICAgc3lzdGVtY3Rs IHN0YXR1cyAtLW5vLXBhZ2VyICR7U0VTU0lPTn1AJHtURVNUX1VTRVJ9Ci0tICAgICNmaQotKyAg ICBlbHNlCi0rICAgICAgICBzeXN0ZW1jdGwgc3RhdHVzIC0tbm8tcGFnZXIgJHtTRVNTSU9OfUAk e1RFU1RfVVNFUn0KLSsgICAgZmkKLSAgICAgcHMgLWVmIHwgZ3JlcCBYCi0gICAgIHBzIC1lZiB8 IGdyZXAgc2Vzc2lvbgotICAgICBwcyAtZWYgfCBncmVwIGlidXMKLSsgICAgU1VTRVI9YGVjaG8g IiRMT0dJTl9VU0VSIiB8IGN1dCAtYyAxLTdgCi0rICAgIHBzIC1lZiB8IGdyZXAgJFNVU0VSCi0g fQotIAotIAotQEAgLTYzOSw2ICs2NzAsMjMgQEAgcnVuX3Nlc3Npb24oKQotIH0KLSAKLSAKLSty dW5fbW9uaXRvcigpCi0rewotKyAgICBpZiAhIHdoaWNoIGdub21lLW1vbml0b3ItY29uZmlnID4g L2Rldi9udWxsIDsgdGhlbgotKyAgICAgICAgcHJpbnRfbG9nIC1lICIke1JFRH1GQUlMJHtOQ306 IE5vIGdub21lLW1vbml0b3ItY29uZmlnIgotKyAgICAgICAgcmV0dXJuCi0rICAgIGZpCi0rICAg IGlmIFsgJEVOQUJMRURfU1lTVEVNRCAtbmUgMSBdIHx8IFsgICRTRVNTSU9OX0lTX0dOT01FIC1u ZSAxIF0gXAotKyAgICAgICB8fCBbICRIQVZFX0dSQVBISUNTIC1uZSAxIF0gOyB0aGVuCi0rICAg ICAgICByZXR1cm4KLSsgICAgZmkKLSsgICAgL3Vzci9saWJleGVjL2dub21lLXNjcmVlbi1jYXN0 LnB5IC12IDEwMjQgNzY4ICYKLSsgICAgc2xlZXAgMwotKyAgICBnbm9tZS1tb25pdG9yLWNvbmZp ZyBsaXN0Ci0rICAgICNnbm9tZS1tb25pdG9yLWNvbmZpZyBzZXQgLUxwTSBWaXJ0dWFsLTEgLXQg bm9ybWFsIC1tIDEwMjR4NzY4QDYwLjAwNAotK30KLSsKLSsKLSBjb3VudF9jYXNlX3Jlc3VsdCgp Ci0gewotICAgICByZXR2YWw9JDEKLUBAIC03NTgsOSArODA2LDYgQEAgcnVuX2dub21lX2Rlc2t0 b3BfdGVzdGluZ19ydW5uZXIoKQotIHsKLSAgICAgcGFzcz0wCi0gICAgIGZhaWw9MAotLSAgICBp ZiBbIHgiJFRFU1RTIiA9IHggXSA7IHRoZW4KLS0gICAgICAgIFRFU1RTPSdpYnVzJwotLSAgICBm aQotICAgICBpZiBlY2hvICRQUk9HTkFNRSB8IGdyZXAgLXEgYXV0b3N0YXJ0IDsgdGhlbgotICAg ICAgICAgZXhwb3J0IElCVVNfREFFTU9OX1dJVEhfU1lTVEVNRD0xCi0gICAgIGZpCi1kaWZmIC0t Z2l0IGEvc3JjL3Rlc3RzL2lidXMtZGVza3RvcC10ZXN0aW5nLmRlc2t0b3AuaW4gYi9zcmMvdGVz dHMvaWJ1cy1kZXNrdG9wLXRlc3RpbmcuZGVza3RvcC5pbgotaW5kZXggZTkxOTAwZWQuLmZlOTM1 NmFkIDEwMDY0NAotLS0tIGEvc3JjL3Rlc3RzL2lidXMtZGVza3RvcC10ZXN0aW5nLmRlc2t0b3Au aW4KLSsrKyBiL3NyYy90ZXN0cy9pYnVzLWRlc2t0b3AtdGVzdGluZy5kZXNrdG9wLmluCi1AQCAt Miw3ICsyLDcgQEAKLSBOYW1lPUlCdXMgRGVza3RvcCBUZXN0aW5nIFJ1bm5lcgotIEdlbmVyaWNO YW1lPUlucHV0IE1ldGhvZCBEZXNrdG9wIFRlc3RpbmcgUnVubmVyCi0gQ29tbWVudD1UZXN0IHBs dWdpbiBmb3IgSUJ1cyBEZXNrdG9wIFRlc3RpbmcKLS1FeGVjPXNoIC1jICdleGVjIEBsaWJleGVj ZGlyQC9pYnVzLWRlc2t0b3AtdGVzdGluZy1hdXRvc3RhcnQgLS1lbnZjaGVjayAtLW91dHB1dCAk SE9NRS90ZXN0LWF1dG9zdGFydC5sb2cgLS1yZXN1bHQgJEhPTUUvdGVzdC5sb2cgLS1ydW5uZXIg Z25vbWUgLS1zY3JlZW5kdW1wICRIT01FL3NjcmVlbi5sb2cgLS10ZXN0cyBpYnVzJwotK0V4ZWM9 c2ggLWMgJ2V4ZWMgQGxpYmV4ZWNkaXJAL2lidXMtZGVza3RvcC10ZXN0aW5nLWF1dG9zdGFydCAt LWVudmNoZWNrIC0tb3V0cHV0ICRIT01FL3Rlc3QtYXV0b3N0YXJ0LmxvZyAtLXJlc3VsdCAkSE9N RS90ZXN0LmxvZyAtLXJ1bm5lciBnbm9tZSAtLXRlc3RzIGlidXMnCi0gVGVybWluYWw9ZmFsc2UK LSBUeXBlPUFwcGxpY2F0aW9uCi0gRW5jb2Rpbmc9VVRGLTgKLWRpZmYgLS1naXQgYS9zcmMvdGVz dHMvaWJ1cy1lbmdpbmUtc3dpdGNoLmMgYi9zcmMvdGVzdHMvaWJ1cy1lbmdpbmUtc3dpdGNoLmMK LWluZGV4IGI1MGJhYzU5Li43MzU5ZTEyNSAxMDA2NDQKLS0tLSBhL3NyYy90ZXN0cy9pYnVzLWVu Z2luZS1zd2l0Y2guYwotKysrIGIvc3JjL3Rlc3RzL2lidXMtZW5naW5lLXN3aXRjaC5jCi1AQCAt MSw1ICsxLDYgQEAKLSAvKiAtKi0gbW9kZTogQzsgYy1iYXNpYy1vZmZzZXQ6IDQ7IGluZGVudC10 YWJzLW1vZGU6IG5pbDsgLSotICovCi0gCi0rI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRl IDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgImlidXMuaCIKLUBA IC0yNTEsNiArMjUyLDggQEAgbWFpbiAoZ2ludCAgICBhcmdjLAotICAgICAgIGdjaGFyICoqYXJn dikKLSB7Ci0gICAgIGdpbnQgcmVzdWx0OwotKyAgICAvKiBUbyBnZXQgVVRGLTggZXJyb3IgbWVz c2FnZXMgd2l0aCBnbGliMiAqLwotKyAgICBzZXRsb2NhbGUgKExDX0FMTCwgIiIpOwotICAgICBp YnVzX2luaXQgKCk7Ci0gICAgIGdfdGVzdF9pbml0ICgmYXJnYywgJmFyZ3YsIE5VTEwpOwotICAg ICBidXMgPSBpYnVzX2J1c19uZXcgKCk7Ci0tLSAKLTIuNDUuMAotCi1Gcm9tIDgwM2I3MWZiY2My ZGU2ZmFhYWYzYjIwZTJiYzA4ZmVhMmUxYWJiZTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1G cm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE0 IEF1ZyAyMDI0IDA5OjEyOjU4ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHV0aWwvSU1ka2l0OiBS ZXZlcnQgdG8gZml4IHR5cGluZyBmcmVlemUgd2l0aCBiYXJjb2RlIHJlYWRlcgotCi1UaGUgb3Jp Z2luYWwgYmFyY29kZSByZWFkZXIgaXNzdWUgaXMgZml4ZWQgd2l0aCBsaWJYMTEgMS44LjEwIGFu ZAotaXQncyBub3cgYXZhaWxhYmxlIGluIEZlZG9yYS4KLVRoZSB0eXBpbmcgZnJlZXppbmcgaXNz dWUgaXMgbm8gbG9uZ2VyIHJlcHJvZHVjaWJsZSB3aXRoIHRoZSBsYXRlc3QKLWxpYlgxMSBpbiBG ZWRvcmEgNDAuCi0KLU5vdyB0aGUgcHJldmlvdXMgY2hhbmdlKGI0OWYzYTQ3MzY1NDBmM2NmMmY3 ZTdiM2FjN2Y5NjU5NzAzOTNjNzQpIGlzCi1yZXZlcnRlZCBhbmQgSSBjb250aW51ZSB0byB0cmFj ZSB0aGUgaXNzdWUuCi0KLUZpeGVzOiBodHRwczovL2dpdGh1Yi5jb20vaWJ1cy9pYnVzL2NvbW1p dC9iNDlmM2E0Ci1CVUc9aHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL3hvcmcvbGliL2xp YngxMS8tL2lzc3Vlcy8xOTgKLUJVRz1odHRwczovL2dpdGh1Yi5jb20vaWJ1cy9pYnVzL2lzc3Vl cy8yNTYwCi0tLS0KLSB1dGlsL0lNZGtpdC9pMThuUHRIZHIuYyB8IDEgLQotIDEgZmlsZSBjaGFu Z2VkLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS91dGlsL0lNZGtpdC9pMThuUHRIZHIu YyBiL3V0aWwvSU1ka2l0L2kxOG5QdEhkci5jCi1pbmRleCAwN2FlY2JiMS4uZWMyMGUzMjIgMTAw NjQ0Ci0tLS0gYS91dGlsL0lNZGtpdC9pMThuUHRIZHIuYwotKysrIGIvdXRpbC9JTWRraXQvaTE4 blB0SGRyLmMKLUBAIC0xNzU3LDcgKzE3NTcsNiBAQCBzdGF0aWMgdm9pZCBQcm9jZXNzUXVldWUg KFhJTVMgaW1zLCBDQVJEMTYgY29ubmVjdF9pZCkKLSAgICAgICAgIHN3aXRjaCAoaGRyLT5tYWpv cl9vcGNvZGUpCi0gICAgICAgICB7Ci0gICAgICAgICBjYXNlIFhJTV9GT1JXQVJEX0VWRU5UOgot LSAgICAgICAgICAgIHN5bmMoKTsKLSAgICAgICAgICAgICBGb3J3YXJkRXZlbnRNZXNzYWdlUHJv YyhpbXMsICZjYWxsX2RhdGEsIHAxKTsKLSAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0K LS0tIAotMi40NS4yCi0K