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: Kevin Wright To: git-commits@fedoraproject.org Subject: [rpms/jss] pqc: Bugzilla Bug #734590 - Refactor JNI libraries for Fedora 16+ . . . Date: Tue, 28 Jul 2026 16:48:17 GMT Message-ID: <178525729745.1.16206124841865121080.rpms-jss-35a6b620b3c4@fedoraproject.org> List-ID: X-Git-Repo: rpms/jss X-Git-Branch: pqc X-Git-Rev: 35a6b620b3c4d2f08ee3addd146eb6ccff6ac9e8 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvanNzCkJyYW5jaCA6 IHBxYwpDb21taXQgOiAzNWE2YjYyMGIzYzRkMmYwOGVlM2FkZGQxNDZlYjZjY2ZmNmFjOWU4CkF1 dGhvciA6IEtldmluIFdyaWdodCA8a3dyaWdodEByZWRoYXQuY29tPgpEYXRlICAgOiAyMDExLTA5 LTEzVDAwOjUzOjA3LTA3OjAwClN0YXRzICA6ICsxMzcxLy0zIGluIDUgZmlsZShzKQpVUkwgICAg OiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2pzcy9jLzM1YTZiNjIwYjNjNGQy ZjA4ZWUzYWRkZDE0NmViNmNjZmY2YWM5ZTg/YnJhbmNoPXBxYwoKTG9nOgpCdWd6aWxsYSBCdWcg IzczNDU5MCAtIFJlZmFjdG9yIEpOSSBsaWJyYXJpZXMgZm9yIEZlZG9yYSAxNisgLiAuIC4KCi0t LQpkaWZmIC0tZ2l0IGEvY2xvZyBiL2Nsb2cKaW5kZXggNjkwM2M3Zi4uMzljZThiMiAxMDA2NDQK LS0tIGEvY2xvZworKysgYi9jbG9nCkBAIC0xLDIgKzEgQEAKLUJ1ZyA2NzA5ODAgLSBDYW5ub3Qg Y3JlYXRlIHN5c3RlbSBjZXJ0cyB3aGVuIHVzaW5nIEx1bmFTQSBIU00gaW4gRklQUyBNb2RlCi1h bmQgRUNDIGFsZ29yaXRobXMgKHN1cHBvcnQgdG9rZW5zIHRoYXQgZG9uJ3QgZG8gRUNESCkKK0J1 Z3ppbGxhIEJ1ZyAjNzM0NTkwIC0gUmVmYWN0b3IgSk5JIGxpYnJhcmllcyBmb3IgRmVkb3JhIDE2 KyAuIC4gLgoKZGlmZiAtLWdpdCBhL2pzcy1QS0NTMTItRklQUy5wYXRjaCBiL2pzcy1QS0NTMTIt RklQUy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMmFhODU0Ci0t LSAvZGV2L251bGwKKysrIGIvanNzLVBLQ1MxMi1GSVBTLnBhdGNoCkBAIC0wLDAgKzEsODAgQEAK K2RpZmYgLXVwIGpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3Mv cGtjczExL1BLMTFLZXlHZW5lcmF0b3IuYy5maXgganNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkv anNzL29yZy9tb3ppbGxhL2pzcy9wa2NzMTEvUEsxMUtleUdlbmVyYXRvci5jCistLS0ganNzLTQu Mi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy9wa2NzMTEvUEsxMUtleUdl bmVyYXRvci5jLmZpeAkyMDExLTA4LTE1IDE1OjM5OjU2LjYzMzE1ODAwMCAtMDcwMAorKysrIGpz cy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3MvcGtjczExL1BLMTFL ZXlHZW5lcmF0b3IuYwkyMDExLTA4LTE1IDIwOjQzOjM0Ljk0Nzc0OTAwMCAtMDcwMAorQEAgLTIz OSw0MCArMjM5LDQ3IEBAIHByaW50X3NlY2l0ZW0oU0VDSXRlbSAqaXRlbSkgeworICAqICAgICAg VG9rZW5FeGNlcHRpb24gaWYgYW4gZXJyb3Igb2NjdXJzLgorICAqLworIHN0YXRpYyBQSzExU3lt S2V5KgorLWNvbnN0cnVjdFNIQTFQQkFLZXkoSk5JRW52ICplbnYsIFNFQ0l0ZW0gKnB3aXRlbSwg U0VDSXRlbSAqc2FsdCwKKytjb25zdHJ1Y3RTSEExUEJBS2V5KEpOSUVudiAqZW52LCBQSzExU2xv dEluZm8gKnNsb3QsIFNFQ0l0ZW0gKnB3aXRlbSwgU0VDSXRlbSAqc2FsdCwKKyAgICAgICAgIGlu dCBpdGVyYXRpb25Db3VudCkKKyB7CistICAgIFBCRUJpdEdlbkNvbnRleHQqIHBiZUN0eHQ9TlVM TDsKKy0gICAgU0VDSXRlbSAqa2V5Qml0cz1OVUxMOworICAgICBQSzExU3ltS2V5ICprZXk9TlVM TDsKKyAKKy0gICAgcGJlQ3R4dCA9IFBCRV9DcmVhdGVDb250ZXh0KCBTRUNfT0lEX1NIQTEsIHBi ZUJpdEdlbkludGVncml0eUtleSwKKy0gICAgICAgICAgICAgICAgICAgIHB3aXRlbSwgc2FsdCwg MTYwIC8qIFNIQTEga2V5IGxlbmd0aCAqLywgaXRlcmF0aW9uQ291bnQpOworLSAgICBpZiggcGJl Q3R4dCA9PSBOVUxMICkgeworLSAgICAgICAgSlNTX3Rocm93TXNnKGVudiwgVE9LRU5fRVhDRVBU SU9OLCAiRmFpbGVkIHRvIGNyZWF0ZSBQQkUgY29udGV4dCIpOworKyAgICB1bnNpZ25lZCBjaGFy IGl2RGF0YVs4XTsKKysgICAgU0VDSXRlbSBtZWNoSXRlbTsKKysgICAgQ0tfUEJFX1BBUkFNUyBw YmVfcGFyYW1zOworKworKyAgICBpZiggcHdpdGVtID09IE5VTEwgKSB7CisrICAgICAgICBKU1Nf dGhyb3dNc2coZW52LCBUT0tFTl9FWENFUFRJT04sCisrICAgICAgICAgICAgImNvbnN0cnVjdFNI QTFQQUtleToiCisrICAgICAgICAgICAgIiBwd2l0ZW0gTlVMTCIpOworICAgICAgICAgZ290byBm aW5pc2g7CisgICAgIH0KKy0KKy0gICAga2V5Qml0cyA9IFBCRV9HZW5lcmF0ZUJpdHMocGJlQ3R4 dCk7CistICAgIGlmKCBrZXlCaXRzID09IE5VTEwgKSB7CistICAgICAgICBKU1NfdGhyb3dNc2co ZW52LCBUT0tFTl9FWENFUFRJT04sICJGYWlsZWQgdG8gZ2VuZXJhdGUgYml0cyBmcm9tIgorLSAg ICAgICAgICAgICAgICAiUEJFIGNvbnRleHQiKTsKKysgICAgaWYoIHNhbHQgPT0gTlVMTCApIHsK KysgICAgICAgIEpTU190aHJvd01zZyhlbnYsIFRPS0VOX0VYQ0VQVElPTiwKKysgICAgICAgICAg ICAiY29uc3RydWN0U0hBMVBBS2V5OiIKKysgICAgICAgICAgICAiIHNhbHQgTlVMTCIpOworICAg ICAgICAgZ290byBmaW5pc2g7CisgICAgIH0KKyAKKy0gICAga2V5ID0gUEsxMV9JbXBvcnRTeW1L ZXkoIFBLMTFfR2V0SW50ZXJuYWxTbG90KCksIENLTV9TSEFfMSwKKy0gICAgICAgICAgICAgICAg UEsxMV9PcmlnaW5HZW5lcmF0ZWQsIENLQV9TSUdOLCBrZXlCaXRzLCBOVUxMKTsKKysgICAgcGJl X3BhcmFtcy5wSW5pdFZlY3RvciA9IGl2RGF0YTsKKysgICAgcGJlX3BhcmFtcy5wUGFzc3dvcmQg PSBwd2l0ZW0tPmRhdGE7CisrICAgIHBiZV9wYXJhbXMudWxQYXNzd29yZExlbiA9IHB3aXRlbS0+ bGVuOworKyAgICBwYmVfcGFyYW1zLnBTYWx0ID0gc2FsdC0+ZGF0YTsKKysgICAgcGJlX3BhcmFt cy51bFNhbHRMZW4gPSBzYWx0LT5sZW47CisrICAgIHBiZV9wYXJhbXMudWxJdGVyYXRpb24gPSBp dGVyYXRpb25Db3VudDsKKysgICAgbWVjaEl0ZW0uZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopICZw YmVfcGFyYW1zOworKyAgICBtZWNoSXRlbS5sZW4gPSBzaXplb2YocGJlX3BhcmFtcyk7CisrCisr ICAgIGtleSA9IFBLMTFfUmF3UEJFS2V5R2VuKHNsb3QsIENLTV9QQkFfU0hBMV9XSVRIX1NIQTFf SE1BQywgJm1lY2hJdGVtLCBwd2l0ZW0sIFBSX0ZBTFNFLCBOVUxMKTsKKysKKyAgICAgaWYoIGtl eSA9PSBOVUxMICkgeworLSAgICAgICAgSlNTX3Rocm93TXNnKGVudiwgVE9LRU5fRVhDRVBUSU9O LCAiRmFpbGVkIHRvIGltcG9ydCBQQkEga2V5IGZyb20iCistICAgICAgICAgICAgIiBQQkEtZ2Vu ZXJhdGVkIGJpdHMiKTsKKysgICAgICAgIEpTU190aHJvd01zZyhlbnYsIFRPS0VOX0VYQ0VQVElP TiwKKysgICAgICAgICAgICAiUEsxMV9SYXdQQkVLZXlHZW46IgorKyAgICAgICAgICAgICIgZmFp bGVkIHRvIGdlbmVyYXRlIGtleSIpOworICAgICAgICAgZ290byBmaW5pc2g7CisgICAgIH0KKyAK KyBmaW5pc2g6CistICAgIGlmKCBwYmVDdHh0ICkgeworLSAgICAgICAgUEJFX0Rlc3Ryb3lDb250 ZXh0KHBiZUN0eHQpOworLSAgICB9CistICAgIC8qIGtleUJpdHMgPT0gcGJlQ3R4dCwgc28gd2Ug ZG9uJ3QgbmVlZCB0byBmcmVlIGl0ICovCisgICAgIHJldHVybiBrZXk7CisgfQorIAorQEAgLTMy NCw3ICszMzEsNyBAQCBKYXZhX29yZ19tb3ppbGxhX2pzc19wa2NzMTFfUEsxMUtleUdlbmVyCisg CisgICAgICAgICAvKiBzcGVjaWFsIGNhc2UsIGNvbnN0cnVjdCBrZXkgYnkgaGFuZC4gQnVnICMz MzY1ODcgKi8KKyAKKy0gICAgICAgIHNrZXkgPSBjb25zdHJ1Y3RTSEExUEJBS2V5KGVudiwgcHdp dGVtLCBzYWx0LCBpdGVyYXRpb25Db3VudCk7CisrICAgICAgICBza2V5ID0gY29uc3RydWN0U0hB MVBCQUtleShlbnYsIHNsb3QsIHB3aXRlbSwgc2FsdCwgaXRlcmF0aW9uQ291bnQpOworICAgICAg ICAgaWYoIHNrZXk9PU5VTEwgKSB7CisgICAgICAgICAgICAgLyogZXhjZXB0aW9uIHdhcyB0aHJv d24gKi8KKyAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKCmRpZmYgLS1naXQgYS9qc3MtZWxpbWlu YXRlLWphdmEtY29tcGlsZXItd2FybmluZ3MucGF0Y2ggYi9qc3MtZWxpbWluYXRlLWphdmEtY29t cGlsZXItd2FybmluZ3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u MWRmOTlkMwotLS0gL2Rldi9udWxsCisrKyBiL2pzcy1lbGltaW5hdGUtamF2YS1jb21waWxlci13 YXJuaW5ncy5wYXRjaApAQCAtMCwwICsxLDY0MSBAQAorZGlmZiAtcnVwTiBhbHQtanNzLTQuMi42 L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy9DcnlwdG9NYW5hZ2VyLmphdmEg amF2YS1qc3MtNC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemlsbGEvanNzL0NyeXB0 b01hbmFnZXIuamF2YQorLS0tIGFsdC1qc3MtNC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3Jn L21vemlsbGEvanNzL0NyeXB0b01hbmFnZXIuamF2YQkyMDExLTA4LTEwIDE2OjIxOjMwLjgzNzc2 NTAwMCAtMDcwMAorKysrIGphdmEtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9t b3ppbGxhL2pzcy9DcnlwdG9NYW5hZ2VyLmphdmEJMjAxMS0wOC0xMiAxMzoxMzozNC40NDk2NjQw MDAgLTA3MDAKK0BAIC0xMTI1LDcgKzExMjUsNyBAQCBwdWJsaWMgZmluYWwgY2xhc3MgQ3J5cHRv TWFuYWdlciBpbXBsZW1lCisgICAgICAqIEltcG9ydHMgYSBzaW5nbGUgY2VydGlmaWNhdGUgaW50 byB0aGUgcGVybWFuZW50IGNlcnRpZmljYXRlCisgICAgICAqIGRhdGFiYXNlLgorICAgICAgKgor LSAgICAgKiBAcGFyYW0gZGVyQ2VydCB0aGUgY2VydGlmaWNhdGUgeW91IHdhbnQgdG8gYWRkCisr ICAgICAqIEBwYXJhbSBjZXJ0IHRoZSBjZXJ0aWZpY2F0ZSB5b3Ugd2FudCB0byBhZGQKKyAgICAg ICogQHBhcmFtIG5pY2tuYW1lIHRoZSBuaWNrbmFtZSB5b3Ugd2FudCB0byByZWZlciB0byB0aGUg Y2VydGlmaWNhdGUgYXMKKyAgICAgICogICAgICAgIChtdXN0IG5vdCBiZSBudWxsKQorICAgICAg Ki8KK0BAIC0xMzkxLDExICsxMzkxLDExIEBAIHB1YmxpYyBmaW5hbCBjbGFzcyBDcnlwdG9NYW5h Z2VyIGltcGxlbWUKKyAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcKKyAgICAgSkFSX0pE S19WRVJTSU9OICAgICA9ICJKREtfVkVSU0lPTiA9IE4vQSI7CisgICAgIHB1YmxpYyBzdGF0aWMg ZmluYWwgU3RyaW5nCistICAgIEpBUl9OU1NfVkVSU0lPTiAgICAgPSAiTlNTX1ZFUlNJT04gPSBO U1NfM18xMV85X1JUTSI7CisrICAgIEpBUl9OU1NfVkVSU0lPTiAgICAgPSAiTlNTX1ZFUlNJT04g PSBOL0EiOworICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZworICAgICBKQVJfREJNX1ZF UlNJT04gICAgID0gIkRCTV9WRVJTSU9OID0gTi9BIjsKKyAgICAgcHVibGljIHN0YXRpYyBmaW5h bCBTdHJpbmcKKy0gICAgSkFSX05TUFJfVkVSU0lPTiAgICA9ICJOU1BSX1ZFUlNJT04gPSBOU1BS XzRfN19SVE0iOworKyAgICBKQVJfTlNQUl9WRVJTSU9OICAgID0gIk5TUFJfVkVSU0lPTiA9IE4v QSI7CisgCisgICAgIC8qKgorICAgICAgKiBMb2FkcyB0aGUgSlNTIGR5bmFtaWMgbGlicmFyeSBp ZiBuZWNlc3NhcnkuCitAQCAtMTQzMyw4ICsxNDMzLDggQEAgcHVibGljIGZpbmFsIGNsYXNzIENy eXB0b01hbmFnZXIgaW1wbGVtZQorICAgICAgKiB0aGlzIHRocmVhZCdzIHRva2VuIHRvIDx0dD5u dWxsPC90dD4gd2lsbCBhbHNvIGNhdXNlIHRoZQorICAgICAgKiBJbnRlcm5hbEtleVN0b3JhZ2VU b2tlbiB0byBiZSB1c2VkLgorICAgICAgKgorLSAgICAgKiBAcGFyYW0gVGhlIHRva2VuIHRvIHVz ZSBmb3IgY3J5cHRvIG9wZXJhdGlvbnMuIFNwZWNpZnlpbmcgPHR0Pm51bGw8L3R0PgorLSAgICAg KiB3aWxsIGNhdXNlIHRoZSBJbnRlcm5hbEtleVN0b3JhZ2VUb2tlbiB0byBiZSB1c2VkLgorKyAg ICAgKiBAcGFyYW0gdG9rZW4gVGhlIHRva2VuIHRvIHVzZSBmb3IgY3J5cHRvIG9wZXJhdGlvbnMu IFNwZWNpZnlpbmcKKysgICAgICogPHR0Pm51bGw8L3R0PiB3aWxsIGNhdXNlIHRoZSBJbnRlcm5h bEtleVN0b3JhZ2VUb2tlbiB0byBiZSB1c2VkLgorICAgICAgKi8KKyAgICAgcHVibGljIHZvaWQg c2V0VGhyZWFkVG9rZW4oQ3J5cHRvVG9rZW4gdG9rZW4pIHsKKyAgICAgICAgIGlmKCB0b2tlbiAh PSBudWxsICkgeworQEAgLTE1NzksNyArMTU3OSw3IEBAIHB1YmxpYyBmaW5hbCBjbGFzcyBDcnlw dG9NYW5hZ2VyIGltcGxlbWUKKyAgICAgICogVmVyaWZ5IGEgY2VydGlmaWNhdGUgaW4gbWVtb3J5 LiBDaGVjayBpZgorICAgICAgKiB2YWxpZCBhbmQgdGhhdCB3ZSB0cnVzdCB0aGUgaXNzdWVyLiBW ZXJpZnkgdGltZQorICAgICAgKiBhZ2FpbnN0IE5vdy4KKy0gICAgICogQHBhcmFtIGNlcnRpZmlj YXRlIGluIG1lbW9yeQorKyAgICAgKiBAcGFyYW0gY2VydFBhY2thZ2UgY2VydGlmaWNhdGUgaW4g bWVtb3J5CisgICAgICAqIEBwYXJhbSBjaGVja1NpZyB2ZXJpZnkgdGhlIHNpZ25hdHVyZSBvZiB0 aGUgY2VydGlmaWNhdGUKKyAgICAgICogQHBhcmFtIGNlcnRVc2FnZSBzZWUgZXhwb3NlZCBjZXJ0 VXNhZ2UgZGVmaW5lcyB0byB2ZXJpZnkgQ2VydGlmaWNhdGUKKyAgICAgICogQHJldHVybiB0cnVl IGZvciBzdWNjZXNzOyBmYWxzZSBvdGhlcndpc2UKK2RpZmYgLXJ1cE4gYWx0LWpzcy00LjIuNi9t b3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3MvSlNTUHJvdmlkZXIuamF2YSBqYXZh LWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3MvSlNTUHJvdmlk ZXIuamF2YQorLS0tIGFsdC1qc3MtNC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemls bGEvanNzL0pTU1Byb3ZpZGVyLmphdmEJMjAxMS0wOC0xMCAxNzoyOTozMy40NzY2NjEwMDAgLTA3 MDAKKysrKyBqYXZhLWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9q c3MvSlNTUHJvdmlkZXIuamF2YQkyMDExLTA4LTEyIDExOjAwOjI2LjQ1Njg1MjAwMCAtMDcwMAor QEAgLTUxLDcgKzUxLDcgQEAgcHVibGljIGZpbmFsIGNsYXNzIEpTU1Byb3ZpZGVyIGV4dGVuZHMg agorIAorICAgICBwcml2YXRlIHN0YXRpYyBpbnQgSlNTX01BSk9SX1ZFUlNJT04gID0gNDsKKyAg ICAgcHJpdmF0ZSBzdGF0aWMgaW50IEpTU19NSU5PUl9WRVJTSU9OICA9IDI7CistICAgIHByaXZh dGUgc3RhdGljIGludCBKU1NfUEFUQ0hfVkVSU0lPTiAgPSA1OworKyAgICBwcml2YXRlIHN0YXRp YyBpbnQgSlNTX1BBVENIX1ZFUlNJT04gID0gNjsKKyAgICAgcHJpdmF0ZSBzdGF0aWMgZG91Ymxl IEpTU19WRVJTSU9OICAgICA9IEpTU19NQUpPUl9WRVJTSU9OICsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKEpTU19NSU5PUl9WRVJTSU9OICogMTAwICsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTU19QQVRDSF9WRVJT SU9OKS8xMDAwMC4wOworZGlmZiAtcnVwTiBhbHQtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkv anNzL29yZy9tb3ppbGxhL2pzcy9jcnlwdG8vQ2lwaGVyLmphdmEgamF2YS1qc3MtNC4yLjYvbW96 aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemlsbGEvanNzL2NyeXB0by9DaXBoZXIuamF2YQorLS0t IGFsdC1qc3MtNC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemlsbGEvanNzL2NyeXB0 by9DaXBoZXIuamF2YQkyMDA0LTA0LTI1IDA4OjAyOjIxLjAwMDAwMDAwMCAtMDcwMAorKysrIGph dmEtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy9jcnlwdG8v Q2lwaGVyLmphdmEJMjAxMS0wOC0xMiAxMzoxMDo1MC43ODE4MjcwMDAgLTA3MDAKK0BAIC0xNDQs OCArMTQ0LDggQEAgcHVibGljIGFic3RyYWN0IGNsYXNzIENpcGhlciB7CisgICAgICAqICA8aT5C PC9pPiBpcyB0aGUgYmxvY2sgc2l6ZSwgdGhlIHBhZGRpbmcgc3RyaW5nIGNvbnNpc3RzIG9mCisg ICAgICAqICA8aT5CPC9pPiAtICg8aT5NPC9pPiBtb2QgPGk+QjwvaT4pIG9jdGV0cywgZWFjaCBo YXZpbmcgdGhlIHZhbHVlCisgICAgICAqICA8aT5CPC9pPiAtICg8aT5NPC9pPiBtb2QgPGk+Qjwv aT4pLgorLSAgICAgKiBAcGFyYW0gVGhlIGJsb2NrIHNpemUgb2YgdGhlIGVuY3J5cHRpb24gYWxn b3JpdGhtLiAgTXVzdCBiZSBncmVhdGVyCistICAgICAqICB0aGFuIHplcm8uCisrICAgICAqIEBw YXJhbSBibG9ja1NpemUgVGhlIGJsb2NrIHNpemUgb2YgdGhlIGVuY3J5cHRpb24gYWxnb3JpdGht LgorKyAgICAgKiAgTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4KKyAgICAgICogQHNlZSAjdW5Q YWQKKyAgICAgICovCisgICAgIHB1YmxpYyBzdGF0aWMgYnl0ZVtdCitkaWZmIC1ydXBOIGFsdC1q c3MtNC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemlsbGEvanNzL2NyeXB0by9Dcnlw dG9Ub2tlbi5qYXZhIGphdmEtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3pp bGxhL2pzcy9jcnlwdG8vQ3J5cHRvVG9rZW4uamF2YQorLS0tIGFsdC1qc3MtNC4yLjYvbW96aWxs YS9zZWN1cml0eS9qc3Mvb3JnL21vemlsbGEvanNzL2NyeXB0by9DcnlwdG9Ub2tlbi5qYXZhCTIw MDctMTEtMDkgMTY6Mzc6NTYuMDAwMDAwMDAwIC0wODAwCisrKysgamF2YS1qc3MtNC4yLjYvbW96 aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemlsbGEvanNzL2NyeXB0by9DcnlwdG9Ub2tlbi5qYXZh CTIwMTEtMDgtMTIgMTE6MDc6MjAuMzI2NDM4MDAwIC0wNzAwCitAQCAtMTk0LDcgKzE5NCw3IEBA IHB1YmxpYyBpbnRlcmZhY2UgQ3J5cHRvVG9rZW4geworICAgICAgKiBMb2dpbiB0byB0aGUgdG9r ZW4uIElmIGEgdG9rZW4gaXMgbG9nZ2VkIGluLCBpdCB3aWxsIG5vdCB0cmlnZ2VyCisgICAgICAq IHBhc3N3b3JkIGNhbGxiYWNrcy4KKyAgICAgICoKKy0gICAgICogQHBhcmFtIHBhc3N3b3JkIFRo ZSBwYXNzd29yZCBmb3IgdGhpcyB0b2tlbi4KKysgICAgICogQHBhcmFtIHB3Y2IgVGhlIHBhc3N3 b3JkIGNhbGxiYWNrIGZvciB0aGlzIHRva2VuLgorICAgICAgKiBAZXhjZXB0aW9uIEluY29ycmVj dFBhc3N3b3JkRXhjZXB0aW9uIElmIHRoZSBzdXBwbGllZCBwYXNzd29yZCBpcworICAgICAgKiAg aW5jb3JyZWN0LgorICAgICAgKiBAc2VlICNzZXRMb2dpbk1vZGUKK2RpZmYgLXJ1cE4gYWx0LWpz cy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3MvY3J5cHRvL0pTU01l c3NhZ2VEaWdlc3QuamF2YSBqYXZhLWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcv bW96aWxsYS9qc3MvY3J5cHRvL0pTU01lc3NhZ2VEaWdlc3QuamF2YQorLS0tIGFsdC1qc3MtNC4y LjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemlsbGEvanNzL2NyeXB0by9KU1NNZXNzYWdl RGlnZXN0LmphdmEJMjAwNC0wNC0yNSAwODowMjoyMS4wMDAwMDAwMDAgLTA3MDAKKysrKyBqYXZh LWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3MvY3J5cHRvL0pT U01lc3NhZ2VEaWdlc3QuamF2YQkyMDExLTA4LTEyIDExOjA4OjM3Ljc0NzM2MDAwMCAtMDcwMAor QEAgLTg4LDcgKzg4LDcgQEAgcHVibGljIGFic3RyYWN0IGNsYXNzIEpTU01lc3NhZ2VEaWdlc3Qg eworICAgICAgKiBDb21wbGV0ZXMgZGlnZXN0aW9uLgorICAgICAgKiAKKyAgICAgICogQHJldHVy biBUaGUsIGFoZW0sIG91dHB1dCBvZiB0aGUgZGlnZXN0IG9wZXJhdGlvbi4KKy0gICAgICogQHBh cmFtIElmIGFuIGVycm9yIG9jY3VycyB3aGlsZSBkaWdlc3RpbmcuCisrICAgICAqIEBleGNlcHRp b24gRGlnZXN0RXhjZXB0aW9uIElmIGFuIGVycm9yIG9jY3VycyB3aGlsZSBkaWdlc3RpbmcuCisg ICAgICAqLworICAgICBwdWJsaWMgYnl0ZVtdIGRpZ2VzdCgpIHRocm93cyBEaWdlc3RFeGNlcHRp b24geworICAgICAgICAgYnl0ZVtdIG91dHB1dCA9IG5ldyBieXRlW2dldE91dHB1dFNpemUoKV07 CitkaWZmIC1ydXBOIGFsdC1qc3MtNC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemls bGEvanNzL2NyeXB0by9QQkVLZXlHZW5QYXJhbXMuamF2YSBqYXZhLWpzcy00LjIuNi9tb3ppbGxh L3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3MvY3J5cHRvL1BCRUtleUdlblBhcmFtcy5qYXZh CistLS0gYWx0LWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3Mv Y3J5cHRvL1BCRUtleUdlblBhcmFtcy5qYXZhCTIwMDQtMDQtMjUgMDg6MDI6MjEuMDAwMDAwMDAw IC0wNzAwCisrKysgamF2YS1qc3MtNC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemls bGEvanNzL2NyeXB0by9QQkVLZXlHZW5QYXJhbXMuamF2YQkyMDExLTA4LTEyIDExOjA5OjQxLjM0 NTI5NjAwMCAtMDcwMAorQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljIGNsYXNzIFBCRUtleUdlblBh cmFtcyBpbXBsZW1lbnRzIAorICAgICAgKiAgICAgIE11c3Qgbm90IGJlIG51bGwuIEl0IGlzIHRo ZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgY2FsbGVyIHRvCisgICAgICAqICAgICAgdXNlIHRoZSBy aWdodCBzYWx0IGxlbmd0aCBmb3IgdGhlIGFsZ29yaXRobS4gTW9zdCBhbGdvcml0aG1zCisgICAg ICAqICAgICAgdXNlIDggYnl0ZXMgb2Ygc2FsdC4KKy0gICAgICogQHBhcmFtIFRoZSBpdGVyYXRp b24gY291bnQgZm9yIHRoZSBQQkUgYWxnb3JpdGhtLgorKyAgICAgKiBAcGFyYW0gaXRlcmF0aW9u cyBUaGUgaXRlcmF0aW9uIGNvdW50IGZvciB0aGUgUEJFIGFsZ29yaXRobS4KKyAgICAgICovCisg ICAgIHB1YmxpYyBQQkVLZXlHZW5QYXJhbXMoUGFzc3dvcmQgcGFzcywgYnl0ZVtdIHNhbHQsIGlu dCBpdGVyYXRpb25zKSB7CisgICAgICAgICBpZihwYXNzPT1udWxsIHx8IHNhbHQ9PW51bGwpIHsK K0BAIC04MCw3ICs4MCw3IEBAIHB1YmxpYyBjbGFzcyBQQkVLZXlHZW5QYXJhbXMgaW1wbGVtZW50 cyAKKyAgICAgICogICAgICBNdXN0IG5vdCBiZSBudWxsLiBJdCBpcyB0aGUgcmVzcG9uc2liaWxp dHkgb2YgdGhlIGNhbGxlciB0bworICAgICAgKiAgICAgIHVzZSB0aGUgcmlnaHQgc2FsdCBsZW5n dGggZm9yIHRoZSBhbGdvcml0aG0uIE1vc3QgYWxnb3JpdGhtcworICAgICAgKiAgICAgIHVzZSA4 IGJ5dGVzIG9mIHNhbHQuCistICAgICAqIEBwYXJhbSBUaGUgaXRlcmF0aW9uIGNvdW50IGZvciB0 aGUgUEJFIGFsZ29yaXRobS4KKysgICAgICogQHBhcmFtIGl0ZXJhdGlvbnMgVGhlIGl0ZXJhdGlv biBjb3VudCBmb3IgdGhlIFBCRSBhbGdvcml0aG0uCisgICAgICAqLworICAgICBwdWJsaWMgUEJF S2V5R2VuUGFyYW1zKGNoYXJbXSBwYXNzLCBieXRlW10gc2FsdCwgaW50IGl0ZXJhdGlvbnMpIHsK KyAgICAgICAgIGlmKHBhc3M9PW51bGwgfHwgc2FsdD09bnVsbCkgeworZGlmZiAtcnVwTiBhbHQt anNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy9wa2NzMTEvUEsx MVRva2VuLmphdmEgamF2YS1qc3MtNC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemls bGEvanNzL3BrY3MxMS9QSzExVG9rZW4uamF2YQorLS0tIGFsdC1qc3MtNC4yLjYvbW96aWxsYS9z ZWN1cml0eS9qc3Mvb3JnL21vemlsbGEvanNzL3BrY3MxMS9QSzExVG9rZW4uamF2YQkyMDA3LTEx LTA5IDE2OjM3OjU3LjAwMDAwMDAwMCAtMDgwMAorKysrIGphdmEtanNzLTQuMi42L21vemlsbGEv c2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy9wa2NzMTEvUEsxMVRva2VuLmphdmEJMjAxMS0w OC0xMiAxMToxMzo1MS44MDcwNDcwMDAgLTA3MDAKK0BAIC0yMjgsOCArMjI4LDggQEAgcHVibGlj IGZpbmFsIGNsYXNzIFBLMTFUb2tlbiBpbXBsZW1lbnRzIAorICAgICAgKiBJbml0aWFsaXplIFBJ Ti4gIFRoaXMgc2V0cyB0aGUgdXNlcidzIG5ldyBQSU4sIHVzaW5nIHRoZSBjdXJyZW50CisgICAg ICAqIHNlY3VyaXR5IG9mZmljZXIgUElOIGZvciBhdXRoZW50aWNhdGlvbi4KKyAgICAgICoKKy0g ICAgICogQHBhcmFtIHNzb3B3IFRoZSBzZWN1cml0eSBvZmZpY2VyJ3MgY3VycmVudCBwYXNzd29y ZC4KKy0gICAgICogQHBhcmFtIHVzZXJwdyBUaGUgdXNlcidzIG5ldyBwYXNzd29yZC4KKysgICAg ICogQHBhcmFtIHNzb3B3Y2IgVGhlIHNlY3VyaXR5IG9mZmljZXIncyBjdXJyZW50IHBhc3N3b3Jk IGNhbGxiYWNrLgorKyAgICAgKiBAcGFyYW0gdXNlcnB3Y2IgVGhlIHVzZXIncyBuZXcgcGFzc3dv cmQgY2FsbGJhY2suCisgICAgICAqIEBleGNlcHRpb24gSW5jb3JyZWN0UGluRXhjZXB0aW9uIElm IHRoZSBzZWN1cml0eSBvZmZpY2VyIFBJTiBpcworICAgICAgKiAgaW5jb3JyZWN0LgorICAgICAg KiBAZXhjZXB0aW9uIFRva2VuRXhjZXB0aW9uIElmIHRoZSBQSU4gd2FzIGFscmVhZHkgaW5pdGlh bGl6ZWQsCitAQCAtMzIyLDggKzMyMiw4IEBAIHB1YmxpYyBmaW5hbCBjbGFzcyBQSzExVG9rZW4g aW1wbGVtZW50cyAKKyAgICAgICogQ2hhbmdlIHBhc3N3b3JkLiAgVGhpcyBjaGFuZ2VzIHRoZSB1 c2VyJ3MgUElOIGFmdGVyIGl0IGhhcyBhbHJlYWR5CisgICAgICAqIGJlZW4gaW5pdGlhbGl6ZWQu CisgICAgICAqCistICAgICAqIEBwYXJhbSBvbGRQSU4gVGhlIHVzZXIncyBvbGQgUElOLgorLSAg ICAgKiBAcGFyYW0gbmV3UElOIFRoZSBuZXcgUElOLgorKyAgICAgKiBAcGFyYW0gb2xkUElOY2Ig VGhlIHVzZXIncyBvbGQgUElOIGNhbGxiYWNrLgorKyAgICAgKiBAcGFyYW0gbmV3UElOY2IgVGhl IG5ldyBQSU4gY2FsbGJhY2suCisgICAgICAqIEBleGNlcHRpb24gSW5jb3JyZWN0UGFzc3dvcmRF eGNlcHRpb24gSWYgdGhlIG9sZCBQSU4gaXMgaW5jb3JyZWN0LgorICAgICAgKiBAZXhjZXB0aW9u IFRva2VuRXhjZXB0aW9uIElmIHNvbWUgb3RoZXIgZXJyb3Igb2NjdXJzIG9uIHRoZSB0b2tlbi4K KyAgICAgICoKK2RpZmYgLXJ1cE4gYWx0LWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9v cmcvbW96aWxsYS9qc3MvcGtjczEyL1NhZmVCYWcuamF2YSBqYXZhLWpzcy00LjIuNi9tb3ppbGxh L3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3MvcGtjczEyL1NhZmVCYWcuamF2YQorLS0tIGFs dC1qc3MtNC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemlsbGEvanNzL3BrY3MxMi9T YWZlQmFnLmphdmEJMjAwNS0wOS0yMiAxMDo1ODozNS4wMDAwMDAwMDAgLTA3MDAKKysrKyBqYXZh LWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3MvcGtjczEyL1Nh ZmVCYWcuamF2YQkyMDExLTA4LTEyIDExOjE0OjQ0LjAxMTk5NTAwMCAtMDcwMAorQEAgLTI4OCw3 ICsyODgsNyBAQCBwdWJsaWMgZmluYWwgY2xhc3MgU2FmZUJhZyBpbXBsZW1lbnRzIEFTCisgICAg ICAqICAgICAgYXMgdGhlIG5pY2tuYW1lIG9mIHRoZSBhc3NvY2lhdGVkIGNlcnQuCisgICAgICAq IEBwYXJhbSBsb2NhbEtleUlEIFRoZSBsb2NhbEtleUlEIGZvciB0aGUga2V5OyBzaG91bGQgYmUg dGhlIHNhbWUgYXMKKyAgICAgICogICAgICB0aGUgbG9jYWxLZXlJRCBvZiB0aGUgYXNzb2NpYXRl ZCBjZXJ0LgorLSAgICAgKiBAcGFyYW0gVGhlIHBhc3N3b3JkIHVzZWQgdG8gZW5jcnlwdCB0aGUg cHJpdmF0ZSBrZXkuCisrICAgICAqIEBwYXJhbSBwYXNzd29yZCBUaGUgcGFzc3dvcmQgdXNlZCB0 byBlbmNyeXB0IHRoZSBwcml2YXRlIGtleS4KKyAgICAgICovCisgICAgIHB1YmxpYyBzdGF0aWMg U2FmZUJhZworICAgICBjcmVhdGVFbmNyeXB0ZWRQcml2YXRlS2V5QmFnKFByaXZhdGVLZXlJbmZv IHByaXZrLCBTdHJpbmcgZnJpZW5kbHlOYW1lLAorZGlmZiAtcnVwTiBhbHQtanNzLTQuMi42L21v emlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy9wa2NzNy9TaWduZXJJbmZvLmphdmEg amF2YS1qc3MtNC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemlsbGEvanNzL3BrY3M3 L1NpZ25lckluZm8uamF2YQorLS0tIGFsdC1qc3MtNC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mv b3JnL21vemlsbGEvanNzL3BrY3M3L1NpZ25lckluZm8uamF2YQkyMDA0LTA0LTI1IDA4OjAyOjIz LjAwMDAwMDAwMCAtMDcwMAorKysrIGphdmEtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNz L29yZy9tb3ppbGxhL2pzcy9wa2NzNy9TaWduZXJJbmZvLmphdmEJMjAxMS0wOC0xMiAxMToxMjox My45NTcxNDUwMDAgLTA3MDAKK0BAIC00MzAsNyArNDMwLDYgQEAgcHVibGljIGNsYXNzIFNpZ25l ckluZm8gaW1wbGVtZW50cyBBU04xVgorICAgICAgKiAgU2lnbmVySW5mby4KKyAgICAgICogQHBh cmFtIGNvbnRlbnRUeXBlIFRoZSB0eXBlIG9mIHRoZSBjb250ZW50IHRoYXQgaXMgc2lnbmVkIGJ5 IHRoaXMKKyAgICAgICogIFNpZ25lckluZm8uCistICAgICAqIEBwYXJhbSBwdWJrZXkgVGhlIHB1 YmxpYyBrZXkgdG8gdXNlIHRvIHZlcmlmeSB0aGUgc2lnbmF0dXJlLgorICAgICAgKiBAZXhjZXB0 aW9uIE5vU3VjaE9iamVjdEV4Y2VwdGlvbiBJZiBubyBjZXJ0aWZpY2F0ZSBtYXRjaGluZyB0aGUK KyAgICAgICogICAgICB0aGUgaXNzdWVyIG5hbWUgYW5kIHNlcmlhbCBudW1iZXIgY2FuIGJlIGZv dW5kLgorICAgICAgKi8KK2RpZmYgLXJ1cE4gYWx0LWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5 L2pzcy9vcmcvbW96aWxsYS9qc3MvcGtpeC9jbWMvQ01DU3RhdHVzSW5mby5qYXZhIGphdmEtanNz LTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy9wa2l4L2NtYy9DTUNT dGF0dXNJbmZvLmphdmEKKy0tLSBhbHQtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29y Zy9tb3ppbGxhL2pzcy9wa2l4L2NtYy9DTUNTdGF0dXNJbmZvLmphdmEJMjAwNC0xMS0xOCAxNDo1 NjoxMS4wMDAwMDAwMDAgLTA4MDAKKysrKyBqYXZhLWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5 L2pzcy9vcmcvbW96aWxsYS9qc3MvcGtpeC9jbWMvQ01DU3RhdHVzSW5mby5qYXZhCTIwMTEtMDgt MTIgMTE6MjA6MzkuMjQwNjM5MDAwIC0wNzAwCitAQCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYyBj bGFzcyBDTUNTdGF0dXNJbmZvIGltcGxlbWVudHMgQVMKKyAgICAgICogQHBhcmFtIHN0YXR1cyBB IENNQ1N0YXR1cyBjb25zdGFudC4KKyAgICAgICogQHBhcmFtIGJvZHlMaXN0IFRoZSBzZXF1ZW5j ZSBvZiBib2R5UGFydElELgorICAgICAgKiBAcGFyYW0gc3RhdHVzU3RyaW5nIEEgU3RyaW5nLgor LSAgICAgKiBAcGFyYW0gT3RoZXJJbmZvIFRoZSBPdGhlckluZm8gY2hvaWNlLgorKyAgICAgKiBA cGFyYW0gb3RoZXJJbmZvIFRoZSBPdGhlckluZm8gY2hvaWNlLgorICAgICAgKi8KKyAgICAgcHVi bGljIENNQ1N0YXR1c0luZm8oaW50IHN0YXR1cywgU0VRVUVOQ0UgYm9keUxpc3QsIFN0cmluZwor IAkJCQkJCSBzdGF0dXNTdHJpbmcsIE90aGVySW5mbyBvdGhlckluZm8pIHsKK2RpZmYgLXJ1cE4g YWx0LWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3MvcGtpeC9j bW1mL1BLSVN0YXR1c0luZm8uamF2YSBqYXZhLWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pz cy9vcmcvbW96aWxsYS9qc3MvcGtpeC9jbW1mL1BLSVN0YXR1c0luZm8uamF2YQorLS0tIGFsdC1q c3MtNC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemlsbGEvanNzL3BraXgvY21tZi9Q S0lTdGF0dXNJbmZvLmphdmEJMjAwNi0wNS0yMyAyMDoxODoxNy4wMDAwMDAwMDAgLTA3MDAKKysr KyBqYXZhLWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3MvcGtp eC9jbW1mL1BLSVN0YXR1c0luZm8uamF2YQkyMDExLTA4LTEyIDExOjIxOjI3LjM4OTU5MTAwMCAt MDcwMAorQEAgLTg4LDcgKzg4LDYgQEAgcHVibGljIGNsYXNzIFBLSVN0YXR1c0luZm8gaW1wbGVt ZW50cyBBUworICAgICAvKioKKyAgICAgICogQ3JlYXRlIGEgUEtJU3RhdHVzSW5mbyB3aXRoIG5v IGZhaWx1cmUgaW5mby4KKyAgICAgICogQHBhcmFtIHN0YXR1cyBBIFBLSVN0YXR1cyBjb25zdGFu dC4KKy0gICAgICogQHBhcmFtIGZhaWxJbmZvIFRoZSBiaXR3aXNlIEFORCBvZiB0aGUgUEtJRmFp bHVyZUluZm8gY29uc3RhbnRzLgorICAgICAgKi8KKyAgICAgcHVibGljIFBLSVN0YXR1c0luZm8o aW50IHN0YXR1cykgeworICAgICAgICAgdGhpcy5zdGF0dXMgPSBuZXcgSU5URUdFUihzdGF0dXMp OworZGlmZiAtcnVwTiBhbHQtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3pp bGxhL2pzcy9wa2l4L3ByaW1pdGl2ZS9EaXJlY3RvcnlTdHJpbmcuamF2YSBqYXZhLWpzcy00LjIu Ni9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3MvcGtpeC9wcmltaXRpdmUvRGly ZWN0b3J5U3RyaW5nLmphdmEKKy0tLSBhbHQtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNz L29yZy9tb3ppbGxhL2pzcy9wa2l4L3ByaW1pdGl2ZS9EaXJlY3RvcnlTdHJpbmcuamF2YQkyMDA0 LTA0LTI1IDA4OjAyOjI2LjAwMDAwMDAwMCAtMDcwMAorKysrIGphdmEtanNzLTQuMi42L21vemls bGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy9wa2l4L3ByaW1pdGl2ZS9EaXJlY3RvcnlT dHJpbmcuamF2YQkyMDExLTA4LTEyIDExOjIwOjExLjE5NDY2NzAwMCAtMDcwMAorQEAgLTExNSwx MCArMTE1LDYgQEAgcHVibGljIGNsYXNzIERpcmVjdG9yeVN0cmluZyBpbXBsZW1lbnRzIAorIAor ICAgICAvKioKKyAgICAgICogQ29udmVydHMgYW4gQVNOLjEgRGlyZWN0b3J5U3RyaW5nIHRvIGEg SmF2YSBzdHJpbmcuCistICAgICAqCistICAgICAqIEBwYXJhbSBkaXJzdHIgQW4gQU5ZIGNvbnRh aW5pbmcgYSBCRVItZW5jb2RlZCBEaXJlY3RvcnlTdHJpbmcuCistICAgICAqIEBleGNlcHRpb24g SW52YWxpZEJFUkV4Y2VwdGlvbiBJZiB0aGUgZW5jb2RpbmcgZG9lcyBub3QgY29udGFpbiBhCist ICAgICAqICAgICAgdmFsaWQgRGlyZWN0b3J5U3RyaW5nLgorICAgICAgKi8KKyAgICAgcHVibGlj IFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgIHJldHVybiBhc24xU3RyaW5nLnRvU3RyaW5n KCk7CitAQCAtMTc2LDYgKzE3Miw4IEBAIHB1YmxpYyBjbGFzcyBEaXJlY3RvcnlTdHJpbmcgaW1w bGVtZW50cyAKKyAgICAgICAgIC8qKgorICAgICAgICAgICogQHBhcmFtIGltcGxpY2l0VGFnIDxi PlRoaXMgcGFyYW10ZXIgaXMgaWdub3JlZDwvYj4sIGJlY2F1c2UKKyAgICAgICAgICAqICAgICAg RGlyZWN0b3J5U3RyaW5ncyAoYmVpbmcgQ0hPSUNFcykgY2Fubm90IGhhdmUgaW1wbGljaXQgdGFn cy4KKysgICAgICAgICAqIEBleGNlcHRpb24gSW52YWxpZEJFUkV4Y2VwdGlvbiBJZiB0aGUgZW5j b2RpbmcgZG9lcyBub3QgY29udGFpbiBhCisrICAgICAgICAgKiAgICAgIHZhbGlkIERpcmVjdG9y eVN0cmluZy4KKyAgICAgICAgICAqLworICAgICAgICAgcHVibGljIEFTTjFWYWx1ZSBkZWNvZGUo VGFnIGltcGxpY2l0VGFnLCBJbnB1dFN0cmVhbSBpc3RyZWFtKQorICAgICAgICAgICAgIHRocm93 cyBJT0V4Y2VwdGlvbiwgSW52YWxpZEJFUkV4Y2VwdGlvbgorZGlmZiAtcnVwTiBhbHQtanNzLTQu Mi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy9wcm92aWRlci9qYXZheC9j cnlwdG8vSlNTU2VjcmV0S2V5RmFjdG9yeVNwaS5qYXZhIGphdmEtanNzLTQuMi42L21vemlsbGEv c2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy9wcm92aWRlci9qYXZheC9jcnlwdG8vSlNTU2Vj cmV0S2V5RmFjdG9yeVNwaS5qYXZhCistLS0gYWx0LWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5 L2pzcy9vcmcvbW96aWxsYS9qc3MvcHJvdmlkZXIvamF2YXgvY3J5cHRvL0pTU1NlY3JldEtleUZh Y3RvcnlTcGkuamF2YQkyMDAzLTA0LTI4IDE0OjQ4OjMzLjAwMDAwMDAwMCAtMDcwMAorKysrIGph dmEtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy9wcm92aWRl ci9qYXZheC9jcnlwdG8vSlNTU2VjcmV0S2V5RmFjdG9yeVNwaS5qYXZhCTIwMTEtMDgtMTIgMTA6 NTg6MzkuNTg5OTU4MDAwIC0wNzAwCitAQCAtOTEsMTQgKzkxLDE4IEBAIGNsYXNzIEpTU1NlY3Jl dEtleUZhY3RvcnlTcGkgZXh0ZW5kcyBTZWMKKyAgICAgICAgIC8vIHZlcnNpb25zIGlzIHRvIHVz ZSB0aGUgcmVmbGVjdGlvbiBBUEkuCisgICAgICAgICBDbGFzcyBzcGVjQ2xhc3MgPSBzcGVjLmdl dENsYXNzKCk7CisgICAgICAgICB0cnkgeworLSAgICAgICAgICAgIE1ldGhvZCBnZXRTYWx0TWV0 aG9kID0gc3BlY0NsYXNzLmdldE1ldGhvZCgiZ2V0U2FsdCIsIG51bGwpOworKyAgICAgICAgICAg IE1ldGhvZCBnZXRTYWx0TWV0aG9kID0gc3BlY0NsYXNzLmdldE1ldGhvZCgiZ2V0U2FsdCIsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGphdmEubGFuZy5DbGFzcykg bnVsbCk7CisgICAgICAgICAgICAgTWV0aG9kIGdldEl0ZXJhdGlvbk1ldGhvZCA9CistICAgICAg ICAgICAgICAgIHNwZWNDbGFzcy5nZXRNZXRob2QoImdldEl0ZXJhdGlvbkNvdW50IiwgbnVsbCk7 CisrICAgICAgICAgICAgICAgIHNwZWNDbGFzcy5nZXRNZXRob2QoImdldEl0ZXJhdGlvbkNvdW50 IiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoamF2YS5sYW5nLkNsYXNz KSBudWxsKTsKKyAKKy0gICAgICAgICAgICBieXRlW10gc2FsdCA9IChieXRlW10pIGdldFNhbHRN ZXRob2QuaW52b2tlKHNwZWMsIG51bGwpOworKyAgICAgICAgICAgIGJ5dGVbXSBzYWx0ID0gKGJ5 dGVbXSkgZ2V0U2FsdE1ldGhvZC5pbnZva2Uoc3BlYywKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoamF2YS5sYW5nLkNsYXNzKSBudWxsKTsKKyAgICAgICAgICAgICAK KyAgICAgICAgICAgICBJbnRlZ2VyIGl0Q291bnRPYmogPQorLSAgICAgICAgICAgICAgICAoSW50 ZWdlcikgZ2V0SXRlcmF0aW9uTWV0aG9kLmludm9rZShzcGVjLG51bGwpOworKyAgICAgICAgICAg ICAgICAoSW50ZWdlcikgZ2V0SXRlcmF0aW9uTWV0aG9kLmludm9rZShzcGVjLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoamF2YS5sYW5nLkNs YXNzKSBudWxsKTsKKyAgICAgICAgICAgICBpbnQgaXRlcmF0aW9uQ291bnQgPSBpdENvdW50T2Jq LmludFZhbHVlKCk7CisgCisgICAgICAgICAgICAgUGFzc3dvcmQgcGFzcyA9IG5ldyBQYXNzd29y ZChzcGVjLmdldFBhc3N3b3JkKCkpOworZGlmZiAtcnVwTiBhbHQtanNzLTQuMi42L21vemlsbGEv c2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy9zc2wvU1NMU29ja2V0LmphdmEgamF2YS1qc3Mt NC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemlsbGEvanNzL3NzbC9TU0xTb2NrZXQu amF2YQorLS0tIGFsdC1qc3MtNC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemlsbGEv anNzL3NzbC9TU0xTb2NrZXQuamF2YQkyMDExLTA4LTEwIDE2OjIxOjMwLjQxMjc2NTAwMCAtMDcw MAorKysrIGphdmEtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pz cy9zc2wvU1NMU29ja2V0LmphdmEJMjAxMS0wOC0xMiAxMTo0NzozOC4zODUwMjEwMDAgLTA3MDAK K0BAIC0xODIsMTEgKzE4MiwxMSBAQCBwdWJsaWMgY2xhc3MgU1NMU29ja2V0IGV4dGVuZHMgamF2 YS5uZXQuCisgICAgIH0KKyAKKyAgICAgLyoqCistICAgICAqIENyZWF0ZXMgYW4gU1NMIGNsaWVu dCBzb2NrZXQgYW5kIGNvbm5lY3RzIHRvIHRoZSBzcGVjaWZpZWQgaG9zdCBhbmQKKysgICAgICog Q3JlYXRlcyBhbiBTU0wgY2xpZW50IHNvY2tldCBhbmQgY29ubmVjdHMgdG8gdGhlIHNwZWNpZmll ZCBhZGRyZXNzIGFuZAorICAgICAgKiAgcG9ydC4gQmluZHMgdG8gdGhlIGdpdmVuIGxvY2FsIGFk ZHJlc3MgYW5kIHBvcnQuIEluc3RhbGxzIHRoZSBnaXZlbgorICAgICAgKiAgY2FsbGJhY2tzIGZv ciBjZXJ0aWZpY2F0ZSBhcHByb3ZhbCBhbmQgY2xpZW50IGNlcnRpZmljYXRlIHNlbGVjdGlvbi4K KyAgICAgICoKKy0gICAgICogQHBhcmFtIGhvc3QgVGhlIGhvc3RuYW1lIHRvIGNvbm5lY3QgdG8u CisrICAgICAqIEBwYXJhbSBhZGRyZXNzIFRoZSBJUCBhZGRyZXNzIHRvIGNvbm5lY3QgdG8uCisg ICAgICAqIEBwYXJhbSBwb3J0IFRoZSBwb3J0IHRvIGNvbm5lY3QgdG8uCisgICAgICAqIEBwYXJh bSBsb2NhbEFkZHIgVGhlIGxvY2FsIGFkZHJlc3MgdG8gYmluZCB0by4gSXQgY2FuIGJlIG51bGws IGluIHdoaWNoCisgICAgICAqICAgICAgY2FzZSBhbiB1bnNwZWNpZmllZCBsb2NhbCBhZGRyZXNz IHdpbGwgYmUgY2hvc2VuLgorZGlmZiAtcnVwTiBhbHQtanNzLTQuMi42L21vemlsbGEvc2VjdXJp dHkvanNzL29yZy9tb3ppbGxhL2pzcy90ZXN0cy9ITUFDVGVzdC5qYXZhIGphdmEtanNzLTQuMi42 L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy90ZXN0cy9ITUFDVGVzdC5qYXZh CistLS0gYWx0LWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3Mv dGVzdHMvSE1BQ1Rlc3QuamF2YQkyMDA2LTAyLTIzIDA4OjQ3OjE3LjAwMDAwMDAwMCAtMDgwMAor KysrIGphdmEtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy90 ZXN0cy9ITUFDVGVzdC5qYXZhCTIwMTEtMDgtMTIgMTM6MTE6MTEuNzkwODA1MDAwIC0wNzAwCitA QCAtOTYsNyArOTYsNyBAQCBwdWJsaWMgY2xhc3MgSE1BQ1Rlc3QgeworIAorICAgICAvKioKKyAg ICAgICogTWFpbiB0ZXN0IG1ldGhvZC4KKy0gICAgICogQHBhcmFtcyBhcmdzW10KKysgICAgICog QHBhcmFtIGFyZ3YKKyAgICAgICovCisgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmlu ZyBbXWFyZ3YpIHsKKyAKK2RpZmYgLXJ1cE4gYWx0LWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5 L2pzcy9vcmcvbW96aWxsYS9qc3MvdGVzdHMvSkNBU3ltS2V5R2VuLmphdmEgamF2YS1qc3MtNC4y LjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemlsbGEvanNzL3Rlc3RzL0pDQVN5bUtleUdl bi5qYXZhCistLS0gYWx0LWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxs YS9qc3MvdGVzdHMvSkNBU3ltS2V5R2VuLmphdmEJMjAxMS0wOC0xMCAxNjoyMTozMC4zMzc3NjYw MDAgLTA3MDAKKysrKyBqYXZhLWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96 aWxsYS9qc3MvdGVzdHMvSkNBU3ltS2V5R2VuLmphdmEJMjAxMS0wOC0xMiAxMTo1Mzo1Ni4xOTI2 NDQwMDAgLTA3MDAKK0BAIC0xMTYsOSArMTE2LDkgQEAgcHVibGljIGNsYXNzIEpDQVN5bUtleUdl biB7CisgICAgIH0KKyAgICAgLyoqCisgICAgICAqIAorLSAgICAgKiBAcGFyYW0ga2V5CistICAg ICAqIEBwYXJhbSBrZworLSAgICAgKiBAcmV0dXJuCisrICAgICAqIEBwYXJhbSBrZXlUeXBlCisr ICAgICAqIEBwYXJhbSBwcm92aWRlcgorKyAgICAgKiBAcmV0dXJuIGphdmF4LmNyeXB0by5TZWNy ZXRLZXkga2V5CisgICAgICAqLworICAgICBwdWJsaWMgamF2YXguY3J5cHRvLlNlY3JldEtleSBn ZW5TZWNyZXRLZXkoU3RyaW5nIGtleVR5cGUsIFN0cmluZyBwcm92aWRlcil7CisgICAgICAgICBq YXZheC5jcnlwdG8uU2VjcmV0S2V5IGtleSA9IG51bGw7CitAQCAtMTU1LDcgKzE1NSw3IEBAIHB1 YmxpYyBjbGFzcyBKQ0FTeW1LZXlHZW4geworICAgICAgKiAKKyAgICAgICogQHBhcmFtIGtleVR5 cGUgCisgICAgICAqIEBwYXJhbSBwcm92aWRlciAKKy0gICAgICogQHJldHVybiAKKysgICAgICog QHJldHVybiBqYXZheC5jcnlwdG8uU2VjcmV0S2V5IGtleQorICAgICAgKi8KKyAgICAgcHVibGlj IGphdmF4LmNyeXB0by5TZWNyZXRLZXkgZ2VuUEJFU2VjcmV0S2V5KFN0cmluZyBrZXlUeXBlLAor ICAgICAgICAgICAgIFN0cmluZyBwcm92aWRlcil7CitAQCAtMTk3LDggKzE5NywxMCBAQCBwdWJs aWMgY2xhc3MgSkNBU3ltS2V5R2VuIHsKKyAgICAgLyoqCisgICAgICAqCisgICAgICAqIEBwYXJh bSBzS2V5CistICAgICAqIEBwYXJhbSBBbGdUeXBlCistICAgICAqIEBwYXJhbSBwcm92aWRlcgor KyAgICAgKiBAcGFyYW0gYWxnRmFtaWx5CisrICAgICAqIEBwYXJhbSBhbGdUeXBlCisrICAgICAq IEBwYXJhbSBwcm92aWRlckZvckVuY3J5cHQKKysgICAgICogQHBhcmFtIHByb3ZpZGVyRm9yRGVj cnlwdAorICAgICAgKi8KKyAgICAgcHVibGljIHZvaWQgdGVzdENpcGhlcihqYXZheC5jcnlwdG8u U2VjcmV0S2V5IHNLZXksIFN0cmluZyBhbGdGYW1pbHksCisgICAgICAgICAgICAgU3RyaW5nIGFs Z1R5cGUsIFN0cmluZyBwcm92aWRlckZvckVuY3J5cHQsIFN0cmluZyBwcm92aWRlckZvckRlY3J5 cHQpCitAQCAtMzA0LDggKzMwNiwxMCBAQCBwdWJsaWMgY2xhc3MgSkNBU3ltS2V5R2VuIHsKKyAg ICAgLyoqCisgICAgICAqCisgICAgICAqIEBwYXJhbSBzS2V5CistICAgICAqIEBwYXJhbSBBbGdU eXBlCistICAgICAqIEBwYXJhbSBwcm92aWRlcgorKyAgICAgKiBAcGFyYW0gYWxnRmFtaWx5Cisr ICAgICAqIEBwYXJhbSBhbGdUeXBlCisrICAgICAqIEBwYXJhbSBwcm92aWRlckZvckVuY3J5cHQK KysgICAgICogQHBhcmFtIHByb3ZpZGVyRm9yRGVjcnlwdAorICAgICAgKi8KKyAgICAgcHVibGlj IHZvaWQgdGVzdE11bHRpUGFydENpcGhlcihqYXZheC5jcnlwdG8uU2VjcmV0S2V5IHNLZXksIFN0 cmluZyBhbGdGYW1pbHksCisgICAgICAgICAgICAgU3RyaW5nIGFsZ1R5cGUsIFN0cmluZyBwcm92 aWRlckZvckVuY3J5cHQsIFN0cmluZyBwcm92aWRlckZvckRlY3J5cHQpCitkaWZmIC1ydXBOIGFs dC1qc3MtNC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemlsbGEvanNzL3Rlc3RzL0pT U0VfU1NMQ2xpZW50LmphdmEgamF2YS1qc3MtNC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3Jn L21vemlsbGEvanNzL3Rlc3RzL0pTU0VfU1NMQ2xpZW50LmphdmEKKy0tLSBhbHQtanNzLTQuMi42 L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy90ZXN0cy9KU1NFX1NTTENsaWVu dC5qYXZhCTIwMDctMTEtMTUgMTM6MzA6MTkuMDAwMDAwMDAwIC0wODAwCisrKysgamF2YS1qc3Mt NC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemlsbGEvanNzL3Rlc3RzL0pTU0VfU1NM Q2xpZW50LmphdmEJMjAxMS0wOC0xMiAxMjo1NjoxNS40ODA3MDEwMDAgLTA3MDAKK0BAIC03OCw3 ICs3OCw3IEBAIHB1YmxpYyBjbGFzcyBKU1NFX1NTTENsaWVudCB7CisgICAgIAorICAgICAvKioK KyAgICAgICogU2V0IHRoZSBwcm90b2NvbCB0eXBlIGFuZCByZXZpc2lvbgorLSAgICAgKiBAcGFy YW0gU3RyaW5nIHNzbFJldmlzaW9uCisrICAgICAqIEBwYXJhbSBmU3NsUmV2aXNpb24KKyAgICAg ICovCisgICAgIHB1YmxpYyB2b2lkIHNldFNzbFJldmlzaW9uKFN0cmluZyBmU3NsUmV2aXNpb24p IHsKKyAgICAgICAgIAorQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljIGNsYXNzIEpTU0VfU1NMQ2xp ZW50IHsKKyAgICAgCisgICAgIC8qKgorICAgICAgKiBTZXQgdGhlIGhvc3QgbmFtZSB0byBjb25u ZWN0IHRvLgorLSAgICAgKiBAcGFyYW0gU3RyaW5nIGhvc3RuYW1lCisrICAgICAqIEBwYXJhbSBm SG9zdAorICAgICAgKi8KKyAgICAgcHVibGljIHZvaWQgc2V0SG9zdChTdHJpbmcgZkhvc3QpIHsK KyAgICAgICAgIHRoaXMuaG9zdCA9IGZIb3N0OworQEAgLTk5LDcgKzk5LDcgQEAgcHVibGljIGNs YXNzIEpTU0VfU1NMQ2xpZW50IHsKKyAgICAgCisgICAgIC8qKgorICAgICAgKiBTZXQgdGhlIHBv cnQgbnVtYmVyIHRvIGNvbm5lY3QgdG8uCistICAgICAqIEBwYXJhbSBpbnQgcG9ydG51bWJlcgor KyAgICAgKiBAcGFyYW0gZlBvcnQKKyAgICAgICovCisgICAgIHB1YmxpYyB2b2lkIHNldFBvcnQo aW50IGZQb3J0KSB7CisgICAgICAgICB0aGlzLnBvcnQgPSBmUG9ydDsKK0BAIC0xMDcsNyArMTA3 LDcgQEAgcHVibGljIGNsYXNzIEpTU0VfU1NMQ2xpZW50IHsKKyAgICAgCisgICAgIC8qKgorICAg ICAgKiBTZXQgdGhlIGNpcGhlciBzdWl0ZSBuYW1lIHRvIHVzZS4KKy0gICAgICogQHBhcmFtIFN0 cmluZyBjaXBoZXJTdWl0ZU5hbWUKKysgICAgICogQHBhcmFtIGZDaXBoZXJTdWl0ZQorICAgICAg Ki8KKyAgICAgcHVibGljIHZvaWQgc2V0Q2lwaGVyU3VpdGUoU3RyaW5nIGZDaXBoZXJTdWl0ZSkg eworICAgICAgICAgdGhpcy5jaXBoZXJOYW1lID0gZkNpcGhlclN1aXRlOworQEAgLTExNSw3ICsx MTUsNyBAQCBwdWJsaWMgY2xhc3MgSlNTRV9TU0xDbGllbnQgeworICAgICAKKyAgICAgLyoqCisg ICAgICAqIFNldCB0aGUgbG9jYXRpb24gb2YgcnNhLnBmeAorLSAgICAgKiBAcGFyYW0gU3RyaW5n IGZLZXlzdG9yZUxvYworKyAgICAgKiBAcGFyYW0gZktleXN0b3JlTG9jCisgICAgICAqLworICAg ICBwdWJsaWMgdm9pZCBzZXRLZXlzdG9yZUxvYyhTdHJpbmcgZktleXN0b3JlTG9jKSB7CisgICAg ICAgICBrZXlzdG9yZUxvYyA9IGZLZXlzdG9yZUxvYyArICIvIiArIGtleXN0b3JlTG9jOworZGlm ZiAtcnVwTiBhbHQtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pz cy90ZXN0cy9KU1NFX1NTTFNlcnZlci5qYXZhIGphdmEtanNzLTQuMi42L21vemlsbGEvc2VjdXJp dHkvanNzL29yZy9tb3ppbGxhL2pzcy90ZXN0cy9KU1NFX1NTTFNlcnZlci5qYXZhCistLS0gYWx0 LWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3MvdGVzdHMvSlNT RV9TU0xTZXJ2ZXIuamF2YQkyMDA3LTExLTE1IDEzOjMwOjE5LjAwMDAwMDAwMCAtMDgwMAorKysr IGphdmEtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy90ZXN0 cy9KU1NFX1NTTFNlcnZlci5qYXZhCTIwMTEtMDgtMTIgMTI6NTc6MTguOTg3NjM3MDAwIC0wNzAw CitAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWMgY2xhc3MgSlNTRV9TU0xTZXJ2ZXIgeworICAgICAK KyAgICAgICAgLyoqCisgICAgICAqIFNldCB0aGUgcHJvdmlkZXIgdG8gdXNlLgorLSAgICAgKiBA cGFyYW0gU3RyaW5nIHAKKysgICAgICogQHBhcmFtIHAKKyAgICAgICovCisgICAgIHB1YmxpYyB2 b2lkIHNldFByb3ZpZGVyKFN0cmluZyBwKSB7CisgICAgICAgICBwcm92aWRlciA9IHA7CitAQCAt OTAsNyArOTAsNyBAQCBwdWJsaWMgY2xhc3MgSlNTRV9TU0xTZXJ2ZXIgeworICAgICB9CisgICAg IC8qKgorICAgICAgKiBTZXQgdGhlIGxvY2F0aW9uIG9mIGtleXN0b3JlIGZpbGUuCistICAgICAq IEBwYXJhbSBTdHJpbmcgZmNvbmZpZ0RpcgorKyAgICAgKiBAcGFyYW0gZmNvbmZpZ0RpcgorICAg ICAgKi8KKyAgICAgcHVibGljIHZvaWQgc2V0S2V5c3RvcmUoU3RyaW5nIGZjb25maWdEaXIpIHsK KyAgICAgICAgIGNvbmZpZ0RpciA9IGZjb25maWdEaXI7CitAQCAtMTE3LDcgKzExNyw3IEBAIHB1 YmxpYyBjbGFzcyBKU1NFX1NTTFNlcnZlciB7CisgICAgIAorICAgICAvKioKKyAgICAgICogU3Rh cnQgU1NMU2VydmVyIGFuZCBhY2NlcHQgY29ubmVjdGlvbnMuCistICAgICAqIEBwYXJhbSBhcmdz W10KKysgICAgICogQHBhcmFtIGFyZ3MKKyAgICAgICovCisgICAgIHB1YmxpYyB2b2lkIHN0YXJ0 U1NMU2VydmVyKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICAgU3Ry aW5nIGNvbmZpZ0RpciA9ICIiOworZGlmZiAtcnVwTiBhbHQtanNzLTQuMi42L21vemlsbGEvc2Vj dXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy90ZXN0cy9KU1NfRmlsZVVwbG9hZENsaWVudC5qYXZh IGphdmEtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy90ZXN0 cy9KU1NfRmlsZVVwbG9hZENsaWVudC5qYXZhCistLS0gYWx0LWpzcy00LjIuNi9tb3ppbGxhL3Nl Y3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3MvdGVzdHMvSlNTX0ZpbGVVcGxvYWRDbGllbnQuamF2 YQkyMDA1LTA4LTExIDExOjI4OjU5LjAwMDAwMDAwMCAtMDcwMAorKysrIGphdmEtanNzLTQuMi42 L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy90ZXN0cy9KU1NfRmlsZVVwbG9h ZENsaWVudC5qYXZhCTIwMTEtMDgtMTIgMTI6NTA6NDUuOTQ2MjM5MDAwIC0wNzAwCitAQCAtNzks NyArNzksNyBAQCBwdWJsaWMgY2xhc3MgSlNTX0ZpbGVVcGxvYWRDbGllbnQgeworICAgICAvKioK KyAgICAgICogSW5pdGlhbGl6ZSB0aGUgZGVzaXJlZCBjaXBoZXIgdG8gYmUgc2V0CisgICAgICAq IG9uIHRoZSBzb2NrZXQuCistICAgICAqIEBwYXJhbSBpbnQgQ2lwaGVyCisrICAgICAqIEBwYXJh bSBhQ2lwaGVyCisgICAgICAqLworICAgICBwdWJsaWMgdm9pZCBzZXRDaXBoZXIoaW50IGFDaXBo ZXIpIHsKKyAgICAgICAgIGZDaXBoZXIgPSBhQ2lwaGVyOworQEAgLTg3LDcgKzg3LDcgQEAgcHVi bGljIGNsYXNzIEpTU19GaWxlVXBsb2FkQ2xpZW50IHsKKyAgICAgCisgICAgIC8qKgorICAgICAg KiBJbml0aWFsaXplIHRoZSBob3N0bmFtZSB0byBydW4gdGhlIHNlcnZlcgorLSAgICAgKiBAcGFy YW0gU3RyaW5nIFNlcnZlck5hbWUKKysgICAgICogQHBhcmFtIGFIb3N0TmFtZQorICAgICAgKi8K KyAgICAgcHVibGljIHZvaWQgc2V0SG9zdE5hbWUoU3RyaW5nIGFIb3N0TmFtZSkgeworICAgICAg ICAgc2VydmVySG9zdCA9IGFIb3N0TmFtZTsKK0BAIC05NSw3ICs5NSw3IEBAIHB1YmxpYyBjbGFz cyBKU1NfRmlsZVVwbG9hZENsaWVudCB7CisgICAgIAorICAgICAvKioKKyAgICAgICogSW5pdGlh bGl6ZSB0aGUgcG9ydCB0byBydW4gdGhlIHNlcnZlcgorLSAgICAgKiBAcGFyYW0gaW50IHBvcnQK KysgICAgICogQHBhcmFtIGFQb3J0CisgICAgICAqLworICAgICBwdWJsaWMgdm9pZCBzZXRQb3J0 KGludCBhUG9ydCkgeworICAgICAgICAgcG9ydCA9IGFQb3J0OworQEAgLTEwMyw3ICsxMDMsNyBA QCBwdWJsaWMgY2xhc3MgSlNTX0ZpbGVVcGxvYWRDbGllbnQgeworICAgICAKKyAgICAgLyoqCisg ICAgICAqIEluaXRpYWxpemUgdGhlIHBhc3N3b3JkcyBmaWxlIG5hbWUKKy0gICAgICogQHBhcmFt IFN0cmluZyBwYXNzd29yZHMKKysgICAgICogQHBhcmFtIGFQYXNzd29yZEZpbGUKKyAgICAgICov CisgICAgIHB1YmxpYyB2b2lkIHNldFBhc3N3b3JkRmlsZShTdHJpbmcgYVBhc3N3b3JkRmlsZSkg eworICAgICAgICAgZlBhc3N3b3JkRmlsZSA9IGFQYXNzd29yZEZpbGU7CitAQCAtMTExLDcgKzEx MSw3IEBAIHB1YmxpYyBjbGFzcyBKU1NfRmlsZVVwbG9hZENsaWVudCB7CisgICAgIAorICAgICAv KioKKyAgICAgICogSW5pdGlhbGl6ZSB0aGUgY2VydCBkYiBwYXRoIG5hbWUKKy0gICAgICogQHBh cmFtIFN0cmluZyBDZXJ0RGJQYXRoCisrICAgICAqIEBwYXJhbSBhQ2VydERiUGF0aAorICAgICAg Ki8KKyAgICAgcHVibGljIHZvaWQgc2V0Q2VydERiUGF0aChTdHJpbmcgYUNlcnREYlBhdGgpIHsK KyAgICAgICAgIGZDZXJ0RGJQYXRoID0gYUNlcnREYlBhdGg7CitAQCAtMTIwLDcgKzEyMCw3IEBA IHB1YmxpYyBjbGFzcyBKU1NfRmlsZVVwbG9hZENsaWVudCB7CisgICAgIC8qKgorICAgICAgKiBJ bml0aWFsaXplIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvCisgICAgICAqIGJlIHVzZWQgZm9yIHRl c3RpbmcgYWxvbmcgd2l0aCBmdWxsIHBhdGguCistICAgICAqIEBwYXJhbSBTdHJpbmcgVXBsb2Fk RmlsZQorKyAgICAgKiBAcGFyYW0gYVVwbG9hZEZpbGUKKyAgICAgICovCisgICAgIHB1YmxpYyB2 b2lkIHNldFVwbG9hZEZpbGUoU3RyaW5nIGFVcGxvYWRGaWxlKSB7CisgICAgICAgICBmVXBsb2Fk RmlsZSA9IGFVcGxvYWRGaWxlOworQEAgLTEyOCw3ICsxMjgsNyBAQCBwdWJsaWMgY2xhc3MgSlNT X0ZpbGVVcGxvYWRDbGllbnQgeworICAgICAKKyAgICAgLyoqCisgICAgICAqIEVuYWJsZS9kaXNh YmxlIFRlc3QgQ2VydCBDYWxsYmFjay4KKy0gICAgICogQHBhcmFtIGJvb2xlYW4KKysgICAgICog QHBhcmFtIGFUZXN0Q2VydENhbGxiYWNrCisgICAgICAqLworICAgICBwdWJsaWMgdm9pZCBzZXRU ZXN0Q2VydENhbGxiYWNrKGJvb2xlYW4gYVRlc3RDZXJ0Q2FsbGJhY2spIHsKKyAgICAgICAgIFRl c3RDZXJ0Q2FsbEJhY2sgPSBhVGVzdENlcnRDYWxsYmFjazsKK0BAIC0xMzYsNyArMTM2LDcgQEAg cHVibGljIGNsYXNzIEpTU19GaWxlVXBsb2FkQ2xpZW50IHsKKyAgICAgCisgICAgIC8qKgorICAg ICAgKiBTZXQgY2xpZW50IGNlcnRpZmljYXRlCistICAgICAqIEBwYXJhbSBTdHJpbmcgQ2VydGlm aWNhdGUgTmljayBOYW1lCisrICAgICAqIEBwYXJhbSBhQ2xpZW50Q2VydE5pY2sgQ2VydGlmaWNh dGUgTmljayBOYW1lCisgICAgICAqLworICAgICBwdWJsaWMgdm9pZCBzZXRDbGllbnRDZXJ0Tmlj ayhTdHJpbmcgYUNsaWVudENlcnROaWNrKSB7CisgICAgICAgICBjbGllbnRDZXJ0TmljayA9IGFD bGllbnRDZXJ0TmljazsKK0BAIC0xNzAsNyArMTcwLDcgQEAgcHVibGljIGNsYXNzIEpTU19GaWxl VXBsb2FkQ2xpZW50IHsKKyAgICAgCisgICAgIC8qKgorICAgICAgKiBTZXQgRU9GIGZvciBjbG9z aW5uZyBzZXJ2ZXIgc29ja2V0CistICAgICAqIEBwYXJhbSBudWxsIGZvciBjbG9zaW5nIHNlcnZl ciBzb2NrZXQKKysgICAgICogQHBhcmFtIGZFb2YgbnVsbCBmb3IgY2xvc2luZyBzZXJ2ZXIgc29j a2V0CisgICAgICAqLworICAgICBwdWJsaWMgdm9pZCBzZXRFT0YoU3RyaW5nIGZFb2YpIHsKKyAg ICAgICAgIHRoaXMuRU9GID0gZkVvZjsKK2RpZmYgLXJ1cE4gYWx0LWpzcy00LjIuNi9tb3ppbGxh L3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3MvdGVzdHMvSlNTX1NTTENsaWVudC5qYXZhIGph dmEtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy90ZXN0cy9K U1NfU1NMQ2xpZW50LmphdmEKKy0tLSBhbHQtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNz L29yZy9tb3ppbGxhL2pzcy90ZXN0cy9KU1NfU1NMQ2xpZW50LmphdmEJMjAwNy0wOC0yMCAxNzow Nzo1OC4wMDAwMDAwMDAgLTA3MDAKKysrKyBqYXZhLWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5 L2pzcy9vcmcvbW96aWxsYS9qc3MvdGVzdHMvSlNTX1NTTENsaWVudC5qYXZhCTIwMTEtMDgtMTIg MTI6NTQ6NDYuOTc4Nzg5MDAwIC0wNzAwCitAQCAtOTksNyArOTksNyBAQCBwdWJsaWMgY2xhc3Mg SlNTX1NTTENsaWVudCB7CisgICAgIC8qKgorICAgICAgKiBJbml0aWFsaXplIHRoZSBkZXNpcmVk IGNpcGhlciB0byBiZSBzZXQKKyAgICAgICogb24gdGhlIHNvY2tldC4KKy0gICAgICogQHBhcmFt IGludCBDaXBoZXIKKysgICAgICogQHBhcmFtIGFDaXBoZXIKKyAgICAgICovCisgICAgIHB1Ymxp YyB2b2lkIHNldENpcGhlcihpbnQgYUNpcGhlcikgeworICAgICAgICAgZkNpcGhlciA9IGFDaXBo ZXI7CitAQCAtMTA3LDcgKzEwNyw3IEBAIHB1YmxpYyBjbGFzcyBKU1NfU1NMQ2xpZW50IHsKKyAg ICAgCisgICAgIC8qKgorICAgICAgKiBJbml0aWFsaXplIHRoZSBob3N0bmFtZSB0byBydW4gdGhl IHNlcnZlcgorLSAgICAgKiBAcGFyYW0gU3RyaW5nIFNlcnZlck5hbWUKKysgICAgICogQHBhcmFt IGFIb3N0TmFtZQorICAgICAgKi8KKyAgICAgcHVibGljIHZvaWQgc2V0SG9zdE5hbWUoU3RyaW5n IGFIb3N0TmFtZSkgeworICAgICAgICAgc2VydmVySG9zdCA9IGFIb3N0TmFtZTsKK0BAIC0xMTUs NyArMTE1LDcgQEAgcHVibGljIGNsYXNzIEpTU19TU0xDbGllbnQgeworICAgICAKKyAgICAgLyoq CisgICAgICAqIEluaXRpYWxpemUgdGhlIHBvcnQgdG8gcnVuIHRoZSBzZXJ2ZXIKKy0gICAgICog QHBhcmFtIGludCBwb3J0CisrICAgICAqIEBwYXJhbSBhUG9ydAorICAgICAgKi8KKyAgICAgcHVi bGljIHZvaWQgc2V0UG9ydChpbnQgYVBvcnQpIHsKKyAgICAgICAgIHBvcnQgPSBhUG9ydDsKK0BA IC0xMjMsNyArMTIzLDcgQEAgcHVibGljIGNsYXNzIEpTU19TU0xDbGllbnQgeworICAgICAKKyAg ICAgLyoqCisgICAgICAqIEluaXRpYWxpemUgdGhlIHBhc3N3b3JkcyBmaWxlIG5hbWUKKy0gICAg ICogQHBhcmFtIFN0cmluZyBwYXNzd29yZHMKKysgICAgICogQHBhcmFtIGFQYXNzd29yZEZpbGUK KyAgICAgICovCisgICAgIHB1YmxpYyB2b2lkIHNldFBhc3N3b3JkRmlsZShTdHJpbmcgYVBhc3N3 b3JkRmlsZSkgeworICAgICAgICAgZlBhc3N3b3JkRmlsZSA9IGFQYXNzd29yZEZpbGU7CitAQCAt MTMxLDcgKzEzMSw3IEBAIHB1YmxpYyBjbGFzcyBKU1NfU1NMQ2xpZW50IHsKKyAgICAgCisgICAg IC8qKgorICAgICAgKiBJbml0aWFsaXplIHRoZSBjZXJ0IGRiIHBhdGggbmFtZQorLSAgICAgKiBA cGFyYW0gU3RyaW5nIENlcnREYlBhdGgKKysgICAgICogQHBhcmFtIGFDZXJ0RGJQYXRoCisgICAg ICAqLworICAgICBwdWJsaWMgc3RhdGljIHZvaWQgc2V0Q2VydERiUGF0aChTdHJpbmcgYUNlcnRE YlBhdGgpIHsKKyAgICAgICAgIGZDZXJ0RGJQYXRoID0gYUNlcnREYlBhdGg7CitAQCAtMTQ3LDcg KzE0Nyw3IEBAIHB1YmxpYyBjbGFzcyBKU1NfU1NMQ2xpZW50IHsKKyAgICAgCisgICAgIC8qKgor ICAgICAgKiBFbmFibGUvZGlzYWJsZSBUZXN0IENlcnQgQ2FsbGJhY2suCistICAgICAqIEBwYXJh bSBib29sZWFuCisrICAgICAqIEBwYXJhbSBieXBhc3MKKyAgICAgICovCisgICAgIHB1YmxpYyB2 b2lkIHNldEJ5cGFzcyhib29sZWFuIGJ5cGFzcykgeworICAgICAgICAgdGVzdEJ5cGFzcyA9IGJ5 cGFzczsKK0BAIC0xNTUsNyArMTU1LDcgQEAgcHVibGljIGNsYXNzIEpTU19TU0xDbGllbnQgewor IAorICAgICAvKioKKyAgICAgICogRW5hYmxlL2Rpc2FibGUgVGVzdCBDZXJ0IENhbGxiYWNrLgor LSAgICAgKiBAcGFyYW0gYm9vbGVhbgorKyAgICAgKiBAcGFyYW0gYVRlc3RDZXJ0Q2FsbGJhY2sK KyAgICAgICovCisgICAgIHB1YmxpYyB2b2lkIHNldFRlc3RDZXJ0Q2FsbGJhY2soYm9vbGVhbiBh VGVzdENlcnRDYWxsYmFjaykgeworICAgICAgICAgVGVzdENlcnRDYWxsQmFjayA9IGFUZXN0Q2Vy dENhbGxiYWNrOworQEAgLTE2Myw3ICsxNjMsNyBAQCBwdWJsaWMgY2xhc3MgSlNTX1NTTENsaWVu dCB7CisgICAgIAorICAgICAvKioKKyAgICAgICogU2V0IGNsaWVudCBjZXJ0aWZpY2F0ZQorLSAg ICAgKiBAcGFyYW0gU3RyaW5nIENlcnRpZmljYXRlIE5pY2sgTmFtZQorKyAgICAgKiBAcGFyYW0g YUNsaWVudENlcnROaWNrIENlcnRpZmljYXRlIE5pY2sgTmFtZQorICAgICAgKi8KKyAgICAgcHVi bGljIHZvaWQgc2V0Q2xpZW50Q2VydE5pY2soU3RyaW5nIGFDbGllbnRDZXJ0TmljaykgeworICAg ICAgICAgY2xpZW50Q2VydE5pY2sgPSBhQ2xpZW50Q2VydE5pY2s7CitAQCAtMTk3LDcgKzE5Nyw3 IEBAIHB1YmxpYyBjbGFzcyBKU1NfU1NMQ2xpZW50IHsKKyAgICAgCisgICAgIC8qKgorICAgICAg KiBTZXQgRU9GIGZvciBjbG9zaW5uZyBzZXJ2ZXIgc29ja2V0CistICAgICAqIEBwYXJhbSBudWxs IGZvciBjbG9zaW5nIHNlcnZlciBzb2NrZXQKKysgICAgICogQHBhcmFtIGZFb2YgbnVsbCBmb3Ig Y2xvc2luZyBzZXJ2ZXIgc29ja2V0CisgICAgICAqLworICAgICBwdWJsaWMgdm9pZCBzZXRFT0Yo U3RyaW5nIGZFb2YpIHsKKyAgICAgICAgIHRoaXMuRU9GID0gZkVvZjsKK2RpZmYgLXJ1cE4gYWx0 LWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3MvdGVzdHMvSlNT X1NlbGZTZXJ2Q2xpZW50LmphdmEgamF2YS1qc3MtNC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mv b3JnL21vemlsbGEvanNzL3Rlc3RzL0pTU19TZWxmU2VydkNsaWVudC5qYXZhCistLS0gYWx0LWpz cy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3MvdGVzdHMvSlNTX1Nl bGZTZXJ2Q2xpZW50LmphdmEJMjAwNy0xMS0xNSAxMzozMDoxOS4wMDAwMDAwMDAgLTA4MDAKKysr KyBqYXZhLWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3MvdGVz dHMvSlNTX1NlbGZTZXJ2Q2xpZW50LmphdmEJMjAxMS0wOC0xMiAxMjo1Mjo0My42NDQ5MTMwMDAg LTA3MDAKK0BAIC0zMjYsNyArMzI2LDcgQEAgcHVibGljIGNsYXNzIEpTU19TZWxmU2VydkNsaWVu dCBpbXBsZW1lbgorICAgICAvKioKKyAgICAgICogSW5pdGlhbGl6ZSB0aGUgZGVzaXJlZCBjaXBo ZXJzdWl0ZSB0byBiZSBzZXQKKyAgICAgICogb24gdGhlIHNvY2tldC4KKy0gICAgICogQHBhcmFt IGludCBDaXBoZXIKKysgICAgICogQHBhcmFtIGFDaXBoZXIKKyAgICAgICovCisgICAgIHB1Ymxp YyB2b2lkIHNldENpcGhlcihpbnQgYUNpcGhlcikgeworICAgICAgICAgCitAQCAtMzc4LDcgKzM3 OCw3IEBAIHB1YmxpYyBjbGFzcyBKU1NfU2VsZlNlcnZDbGllbnQgaW1wbGVtZW4KKyAgICAgCisg ICAgIC8qKgorICAgICAgKiBJbml0aWFsaXplIHRoZSBob3N0bmFtZSB0byBydW4gdGhlIHNlcnZl cgorLSAgICAgKiBAcGFyYW0gU3RyaW5nIFNlcnZlck5hbWUKKysgICAgICogQHBhcmFtIGFIb3N0 TmFtZQorICAgICAgKi8KKyAgICAgcHVibGljIHZvaWQgc2V0SG9zdE5hbWUoU3RyaW5nIGFIb3N0 TmFtZSkgeworICAgICAgICAgc2VydmVySG9zdCA9IGFIb3N0TmFtZTsKK0BAIC0zODYsNyArMzg2 LDcgQEAgcHVibGljIGNsYXNzIEpTU19TZWxmU2VydkNsaWVudCBpbXBsZW1lbgorICAgICAKKyAg ICAgLyoqCisgICAgICAqIEluaXRpYWxpemUgdGhlIHBvcnQgdG8gcnVuIHRoZSBzZXJ2ZXIKKy0g ICAgICogQHBhcmFtIGludCBwb3J0CisrICAgICAqIEBwYXJhbSBhUG9ydAorICAgICAgKi8KKyAg ICAgcHVibGljIHZvaWQgc2V0UG9ydChpbnQgYVBvcnQpIHsKKyAgICAgICAgIHBvcnQgPSBhUG9y dDsKK0BAIC0zOTQsNyArMzk0LDcgQEAgcHVibGljIGNsYXNzIEpTU19TZWxmU2VydkNsaWVudCBp bXBsZW1lbgorICAgICAKKyAgICAgLyoqCisgICAgICAqIEluaXRpYWxpemUgdGhlIHBhc3N3b3Jk cyBmaWxlIG5hbWUKKy0gICAgICogQHBhcmFtIFN0cmluZyBwYXNzd29yZHMKKysgICAgICogQHBh cmFtIGFQYXNzd29yZEZpbGUKKyAgICAgICovCisgICAgIHB1YmxpYyB2b2lkIHNldFBhc3N3b3Jk RmlsZShTdHJpbmcgYVBhc3N3b3JkRmlsZSkgeworICAgICAgICAgZlBhc3N3b3JkRmlsZSA9IGFQ YXNzd29yZEZpbGU7CitAQCAtNDAyLDcgKzQwMiw3IEBAIHB1YmxpYyBjbGFzcyBKU1NfU2VsZlNl cnZDbGllbnQgaW1wbGVtZW4KKyAgICAgCisgICAgIC8qKgorICAgICAgKiBJbml0aWFsaXplIHRo ZSBjZXJ0IGRiIHBhdGggbmFtZQorLSAgICAgKiBAcGFyYW0gU3RyaW5nIENlcnREYlBhdGgKKysg ICAgICogQHBhcmFtIGFDZXJ0RGJQYXRoCisgICAgICAqLworICAgICBwdWJsaWMgdm9pZCBzZXRD ZXJ0RGJQYXRoKFN0cmluZyBhQ2VydERiUGF0aCkgeworICAgICAgICAgZkNlcnREYlBhdGggPSBh Q2VydERiUGF0aDsKK0BAIC00MTAsNyArNDEwLDcgQEAgcHVibGljIGNsYXNzIEpTU19TZWxmU2Vy dkNsaWVudCBpbXBsZW1lbgorICAgICAKKyAgICAgLyoqCisgICAgICAqIEVuYWJsZS9kaXNhYmxl IFRlc3QgQ2VydCBDYWxsYmFjay4KKy0gICAgICogQHBhcmFtIGJvb2xlYW4KKysgICAgICogQHBh cmFtIGFUZXN0Q2VydENhbGxiYWNrCisgICAgICAqLworICAgICBwdWJsaWMgdm9pZCBzZXRUZXN0 Q2VydENhbGxiYWNrKGJvb2xlYW4gYVRlc3RDZXJ0Q2FsbGJhY2spIHsKKyAgICAgICAgIFRlc3RD ZXJ0Q2FsbEJhY2sgPSBhVGVzdENlcnRDYWxsYmFjazsKK0BAIC00MTgsNyArNDE4LDcgQEAgcHVi bGljIGNsYXNzIEpTU19TZWxmU2VydkNsaWVudCBpbXBsZW1lbgorICAgICAKKyAgICAgLyoqCisg ICAgICAqIFNldCBjbGllbnQgY2VydGlmaWNhdGUKKy0gICAgICogQHBhcmFtIFN0cmluZyBDZXJ0 aWZpY2F0ZSBOaWNrIE5hbWUKKysgICAgICogQHBhcmFtIGFDbGllbnRDZXJ0TmljayBDZXJ0aWZp Y2F0ZSBOaWNrIE5hbWUKKyAgICAgICovCisgICAgIHB1YmxpYyB2b2lkIHNldENsaWVudENlcnRO aWNrKFN0cmluZyBhQ2xpZW50Q2VydE5pY2spIHsKKyAgICAgICAgIGNsaWVudENlcnROaWNrID0g YUNsaWVudENlcnROaWNrOworZGlmZiAtcnVwTiBhbHQtanNzLTQuMi42L21vemlsbGEvc2VjdXJp dHkvanNzL29yZy9tb3ppbGxhL2pzcy90ZXN0cy9TU0xDbGllbnRBdXRoLmphdmEgamF2YS1qc3Mt NC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemlsbGEvanNzL3Rlc3RzL1NTTENsaWVu dEF1dGguamF2YQorLS0tIGFsdC1qc3MtNC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21v emlsbGEvanNzL3Rlc3RzL1NTTENsaWVudEF1dGguamF2YQkyMDA3LTA4LTIzIDE2OjIxOjEzLjAw MDAwMDAwMCAtMDcwMAorKysrIGphdmEtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29y Zy9tb3ppbGxhL2pzcy90ZXN0cy9TU0xDbGllbnRBdXRoLmphdmEJMjAxMS0wOC0xMiAxMjo1ODoy Ny45MjU1NjkwMDAgLTA3MDAKK0BAIC03OCw3ICs3OCw3IEBAIHB1YmxpYyBjbGFzcyBTU0xDbGll bnRBdXRoIGltcGxlbWVudHMgUnUKKyAgICAgICogQHBhcmFtIHJhbmQKKyAgICAgICogQHBhcmFt IGV4dGVuc2lvbnMKKyAgICAgICogQHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCistICAgICAq IEByZXR1cm4KKysgICAgICogQHJldHVybiBDZXJ0aWZpY2F0ZQorICAgICAgKi8KKyAgICAgcHVi bGljIHN0YXRpYyBDZXJ0aWZpY2F0ZSBtYWtlQ2VydChTdHJpbmcgaXNzdWVyTmFtZSwgU3RyaW5n IHN1YmplY3ROYW1lLAorICAgICAgICAgICAgIGludCBzZXJpYWxOdW1iZXIsIFByaXZhdGVLZXkg cHJpdktleSwgUHVibGljS2V5IHB1YktleSwgaW50IHJhbmQsCgpkaWZmIC0tZ2l0IGEvanNzLWVs aW1pbmF0ZS1uYXRpdmUtY29tcGlsZXItd2FybmluZ3MucGF0Y2ggYi9qc3MtZWxpbWluYXRlLW5h dGl2ZS1jb21waWxlci13YXJuaW5ncy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5kOTgxZWI3Ci0tLSAvZGV2L251bGwKKysrIGIvanNzLWVsaW1pbmF0ZS1uYXRpdmUt Y29tcGlsZXItd2FybmluZ3MucGF0Y2gKQEAgLTAsMCArMSw2MjEgQEAKK2RpZmYgLXJ1cE4gcGF0 Y2hlZC1qc3MtNC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemlsbGEvanNzL0NyeXB0 b01hbmFnZXIuYyBhbHQtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxh L2pzcy9DcnlwdG9NYW5hZ2VyLmMKKy0tLSBwYXRjaGVkLWpzcy00LjIuNi9tb3ppbGxhL3NlY3Vy aXR5L2pzcy9vcmcvbW96aWxsYS9qc3MvQ3J5cHRvTWFuYWdlci5jCTIwMTEtMDgtMTAgMTY6MjE6 MzAuNjA5NzY1MDAwIC0wNzAwCisrKysgYWx0LWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pz cy9vcmcvbW96aWxsYS9qc3MvQ3J5cHRvTWFuYWdlci5jCTIwMTEtMDgtMTEgMTc6NTQ6NTcuMjU1 MTc2MDAwIC0wNzAwCitAQCAtNTUsNyArNTUsNyBAQAorIAorICNpbmNsdWRlICJwazExdXRpbC5o IgorIAorLSNpZiBkZWZpbmVkKEFJWCkgfHwgZGVmaW5lZChIUFVYKSB8fCBkZWZpbmVkKExJTlVY KQorKyNpZiBkZWZpbmVkKEFJWCkgfHwgZGVmaW5lZChIUFVYKQorICNpbmNsdWRlIDxzaWduYWwu aD4KKyAjZW5kaWYKKyAKK0BAIC05MCwxMSArOTAsMTEgQEAgY29uc3QgY2hhciAqIGpzc19zY2Nz aWQoKSB7CisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworIAorIC8qIEpTU19WRVJTSU9OIGZyb20gIG1vemlsbGEv c2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy91dGlsL2pzc3Zlci5oICovCistc3RhdGljIGNv bnN0IGNoYXIqIERMTF9KU1NfVkVSU0lPTiAgICAgPSAiSlNTX1ZFUlNJT04gPSAiIEpTU19WRVJT SU9OOworK3N0YXRpYyBjb25zdCBjaGFyKiBWQVJJQUJMRV9NQVlfTk9UX0JFX1VTRUQgRExMX0pT U19WRVJTSU9OICAgICA9ICJKU1NfVkVSU0lPTiA9ICIgSlNTX1ZFUlNJT047CisgLyogTlNTX1ZF UlNJT04gZnJvbSBtb3ppbGxhL3NlY3VyaXR5L25zcy9saWIvbnNzL25zcy5oICovCistc3RhdGlj IGNvbnN0IGNoYXIqIERMTF9OU1NfVkVSU0lPTiAgICAgPSAiTlNTX1ZFUlNJT04gPSAiIE5TU19W RVJTSU9OOworK3N0YXRpYyBjb25zdCBjaGFyKiBWQVJJQUJMRV9NQVlfTk9UX0JFX1VTRUQgRExM X05TU19WRVJTSU9OICAgICA9ICJOU1NfVkVSU0lPTiA9ICIgTlNTX1ZFUlNJT047CisgLyogTlNQ Ul92ZXJzaW9uIGZyb20gbW96aWxsYS9uc3BycHViL3ByL2luY2x1ZGUvcHJpbml0LmggKi8KKy1z dGF0aWMgY29uc3QgY2hhciogRExMX05TUFJfVkVSU0lPTiAgICA9ICJOU1BSX1ZFUlNJT04gPSAi IFBSX1ZFUlNJT047Cisrc3RhdGljIGNvbnN0IGNoYXIqIFZBUklBQkxFX01BWV9OT1RfQkVfVVNF RCBETExfTlNQUl9WRVJTSU9OICAgID0gIk5TUFJfVkVSU0lPTiA9ICIgUFJfVkVSU0lPTjsKKyAK KyAKKyAKK0BAIC0xMDYsMTMgKzEwNiwxMyBAQCBzdGF0aWMgY2hhcioKKyBnZXRQV0Zyb21DYWxs YmFjayhQSzExU2xvdEluZm8gKnNsb3QsIFBSQm9vbCByZXRyeSwgdm9pZCAqYXJnKTsKKyAKKyAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgorLSAqIEFJWCwgSFAsIGFuZCBMaW51eCBzaWduYWwgaGFuZGxpbmcgbWFkbmVzcworKyAq IEFJWCBhbmQgSFAgc2lnbmFsIGhhbmRsaW5nIG1hZG5lc3MKKyAgKgorICAqIEluIG9yZGVyIGZv ciB0aGUgSlZNLCBrZXJuZWwsIGFuZCBOU1BSIHRvIHdvcmsgdG9nZXRoZXIsIHdlIHNldHVwCisg ICogYSBzaWduYWwgaGFuZGxlciBmb3IgU0lHQ0hMRCB0aGF0IGRvZXMgbm90aGluZy4gIFRoaXMg aXMgb25seSBkb25lCistICogb24gQUlYLCBIUCwgYW5kIExpbnV4LgorKyAqIG9uIEFJWCBhbmQg SFAuCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovCistI2lmIGRlZmluZWQoQUlYKSB8fCBkZWZpbmVkKEhQVVgpIHx8IGRlZmlu ZWQoTElOVVgpCisrI2lmIGRlZmluZWQoQUlYKSB8fCBkZWZpbmVkKEhQVVgpCisgCisgc3RhdGlj IFBSU3RhdHVzCisgaGFuZGxlU2lnQ2hpbGQoSk5JRW52ICplbnYpIHsKK0BAIC0zMzMsOCArMzMz LDYgQEAgSmF2YV9vcmdfbW96aWxsYV9qc3NfQ3J5cHRvTWFuYWdlcl9pbml0aQorICAgICAgICAg amJvb2xlYW4gaW5pdGlhbGl6ZUphdmFPbmx5ICkKKyB7CisgICAgIFNFQ1N0YXR1cyBydiA9IFNF Q0ZhaWx1cmU7CistICAgIEphdmFWTSAqVk1zWzVdOworLSAgICBqaW50IG51bVZNczsKKyAgICAg Y2hhciAqc3pDb25maWdEaXIgPSBOVUxMOworICAgICBjaGFyICpzekNlcnRQcmVmaXggPSBOVUxM OworICAgICBjaGFyICpzektleVByZWZpeCA9IE5VTEw7CitkaWZmIC1ydXBOIHBhdGNoZWQtanNz LTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy9QSzExRmluZGVyLmMg YWx0LWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3MvUEsxMUZp bmRlci5jCistLS0gcGF0Y2hlZC1qc3MtNC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21v emlsbGEvanNzL1BLMTFGaW5kZXIuYwkyMDExLTA4LTEwIDE2OjIxOjMwLjg0OTc2NzAwMCAtMDcw MAorKysrIGFsdC1qc3MtNC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemlsbGEvanNz L1BLMTFGaW5kZXIuYwkyMDExLTA4LTEwIDE4OjIyOjM3Ljg4NzA3NzAwMCAtMDcwMAorQEAgLTI2 Myw3ICsyNjMsNyBAQCBKTklFWFBPUlQgam9iamVjdCBKTklDQUxMCisgSmF2YV9vcmdfbW96aWxs YV9qc3NfQ3J5cHRvTWFuYWdlcl9maW5kUHJpdktleUJ5Q2VydE5hdGl2ZQorICAgKEpOSUVudiAq ZW52LCBqb2JqZWN0IHRoaXMsIGpvYmplY3QgQ2VydCkKKyB7CistICAgIFBSVGhyZWFkICpwVGhy ZWFkOworKyAgICBQUlRocmVhZCAqIFZBUklBQkxFX01BWV9OT1RfQkVfVVNFRCBwVGhyZWFkPU5V TEw7CisgICAgIENFUlRDZXJ0aWZpY2F0ZSAqY2VydDsKKyAgICAgUEsxMVNsb3RJbmZvICpzbG90 OworICAgICBTRUNLRVlQcml2YXRlS2V5ICpwcml2S2V5PU5VTEw7CitAQCAtNDU4LDcgKzQ1OCw3 IEBAIEpOSUVYUE9SVCBqb2JqZWN0QXJyYXkgSk5JQ0FMTAorIEphdmFfb3JnX21vemlsbGFfanNz X0NyeXB0b01hbmFnZXJfYnVpbGRDZXJ0aWZpY2F0ZUNoYWluTmF0aXZlCisgICAgIChKTklFbnYg KmVudiwgam9iamVjdCB0aGlzLCBqb2JqZWN0IGxlYWZDZXJ0KQorIHsKKy0gICAgUFJUaHJlYWQg KnBUaHJlYWQ7CisrICAgIFBSVGhyZWFkICogVkFSSUFCTEVfTUFZX05PVF9CRV9VU0VEIHBUaHJl YWQ9TlVMTDsKKyAgICAgQ0VSVENlcnRpZmljYXRlICpsZWFmOworICAgICBqb2JqZWN0QXJyYXkg Y2hhaW5BcnJheT1OVUxMOworICAgICBDRVJUQ2VydERCSGFuZGxlICpjZXJ0ZGI7CitAQCAtODEy LDcgKzgxMiw3IEBAIEphdmFfb3JnX21vemlsbGFfanNzX0NyeXB0b01hbmFnZXJfaW1wb3IKKyAg ICAgU0VDSXRlbSAqZGVyQ2VydHM9TlVMTDsKKyAgICAgaW50IGNlcnRpPSAtMTsKKyAgICAgU0VD SXRlbSB0aGVEZXJDZXJ0OworLSAgICBpbnQgbnVtQ2VydHM7CisrICAgIGludCBudW1DZXJ0cyA9 IDA7CisgICAgIGpieXRlICpwYWNrYWdlQnl0ZXM9TlVMTDsKKyAgICAganNpemUgcGFja2FnZUxl bjsKKyAgICAgU0VDU3RhdHVzIHN0YXR1czsKK0BAIC0xNDg2LDcgKzE0ODYsNyBAQCBKYXZhX29y Z19tb3ppbGxhX2pzc19DcnlwdG9NYW5hZ2VyX2ltcG9yCisgICAgIENFUlRTaWduZWRDcmwgKmNy bCA9IE5VTEw7CisgICAgIFNFQ0l0ZW0gKnBhY2thZ2VJdGVtID0gTlVMTDsKKyAgICAgaW50IHN0 YXR1cyA9IFNFQ0ZhaWx1cmU7CistICAgIGNoYXIgKnVybDsKKysgICAgY2hhciAqdXJsID0gTlVM TDsKKyAgICAgY2hhciAqZXJybXNnID0gTlVMTDsKKyAKKyAgICAgLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorQEAgLTE2NTEsNyArMTY1MSw3IEBA IEpOSUVYUE9SVCBqaW50IEpOSUNBTEwKKyBKYXZhX29yZ19tb3ppbGxhX2pzc19DcnlwdG9NYW5h Z2VyX3ZlcmlmeUNlcnRpZmljYXRlTm93Q1VOYXRpdmUoSk5JRW52ICplbnYsCisgICAgICAgICBq b2JqZWN0IHNlbGYsIGpzdHJpbmcgbmlja1N0cmluZywgamJvb2xlYW4gY2hlY2tTaWcpCisgewor LSAgICBTRUNTdGF0dXMgICAgICAgICBydiAgICA9IFNFQ0ZhaWx1cmU7CisrICAgIFNFQ1N0YXR1 cyBWQVJJQUJMRV9NQVlfTk9UX0JFX1VTRUQgcnYgICAgPSBTRUNGYWlsdXJlOworICAgICBTRUND ZXJ0aWZpY2F0ZVVzYWdlICAgICAgY3VyclVzYWdlID0gMHgwMDAwOworIAorICAgICBydiA9IHZl cmlmeUNlcnRpZmljYXRlTm93KGVudiwgc2VsZiwgbmlja1N0cmluZywgY2hlY2tTaWcsIDAsICZj dXJyVXNhZ2UpOworQEAgLTE3MzYsNyArMTczNiw2IEBAIEphdmFfb3JnX21vemlsbGFfanNzX0Ny eXB0b01hbmFnZXJfdmVyaWYKKyAgICAgU0VDU3RhdHVzICAgICAgICAgcnYgICAgPSBTRUNGYWls dXJlOworICAgICBTRUNDZXJ0VXNhZ2UgICAgICBjZXJ0VXNhZ2U7CisgICAgIFNFQ0l0ZW0gKmRl ckNlcnRzWzJdOworLSAgICBTRUNTdGF0dXMgc3RhdHVzOworICAgICBDRVJUQ2VydGlmaWNhdGUg KipjZXJ0QXJyYXkgPSBOVUxMOworICAgICBDRVJUQ2VydERCSGFuZGxlICpjZXJ0ZGIgPSBDRVJU X0dldERlZmF1bHRDZXJ0REIoKTsKKyAKK2RpZmYgLXJ1cE4gcGF0Y2hlZC1qc3MtNC4yLjYvbW96 aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemlsbGEvanNzL1NlY3JldERlY29kZXJSaW5nL0tleU1h bmFnZXIuYyBhbHQtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pz cy9TZWNyZXREZWNvZGVyUmluZy9LZXlNYW5hZ2VyLmMKKy0tLSBwYXRjaGVkLWpzcy00LjIuNi9t b3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3MvU2VjcmV0RGVjb2RlclJpbmcvS2V5 TWFuYWdlci5jCTIwMDMtMTItMTkgMTE6MzY6MzAuMDAwMDAwMDAwIC0wODAwCisrKysgYWx0LWpz cy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3MvU2VjcmV0RGVjb2Rl clJpbmcvS2V5TWFuYWdlci5jCTIwMTEtMDgtMTAgMTY6NTg6NTIuNTI3NTAxMDAwIC0wNzAwCitA QCAtMzU4LDcgKzM1OCw2IEBAIEphdmFfb3JnX21vemlsbGFfanNzX1NlY3JldERlY29kZXJSaW5n X0sKKyB7CisgICAgIFBLMTFTbG90SW5mbyAqc2xvdCA9IE5VTEw7CisgICAgIFBLMTFTeW1LZXkg KnN5bWsgPSBOVUxMOworLSAgICBTRUNTdGF0dXMgc3RhdHVzOworIAorICAgICAvKiBnZXQgdGhl IHNsb3QgKi8KKyAgICAgaWYoIEpTU19QSzExX2dldFRva2VuU2xvdFB0cihlbnYsIHRva2VuT2Jq LCAmc2xvdCkgIT0gUFJfU1VDQ0VTUyApIHsKK2RpZmYgLXJ1cE4gcGF0Y2hlZC1qc3MtNC4yLjYv bW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemlsbGEvanNzL2NyeXB0by9QUUdQYXJhbXMuYyBh bHQtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy9jcnlwdG8v UFFHUGFyYW1zLmMKKy0tLSBwYXRjaGVkLWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9v cmcvbW96aWxsYS9qc3MvY3J5cHRvL1BRR1BhcmFtcy5jCTIwMDQtMDQtMjUgMDg6MDI6MjEuMDAw MDAwMDAwIC0wNzAwCisrKysgYWx0LWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcv bW96aWxsYS9qc3MvY3J5cHRvL1BRR1BhcmFtcy5jCTIwMTEtMDgtMTEgMDk6NDA6MzQuMDAxNDIx MDAwIC0wNzAwCitAQCAtMzcxLDcgKzM3MSw3IEBAIEphdmFfb3JnX21vemlsbGFfanNzX2NyeXB0 b19QUUdQYXJhbXNfcGEKKyAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICAqIFBlcmZvcm0gdGhl IHZlcmlmaWNhdGlvbi4KKyAgICAgICovCistICAgIGlmKCBQSzExX1BRR19WZXJpZnlQYXJhbXMo cFBhcmFtcywgcFZmeSwgJnZlcmlmeVJlc3VsdCkgIT0gUFJfU1VDQ0VTUykgeworKyAgICBpZigg UEsxMV9QUUdfVmVyaWZ5UGFyYW1zKHBQYXJhbXMsIHBWZnksICZ2ZXJpZnlSZXN1bHQpICE9IFNF Q1N1Y2Nlc3MpIHsKKyAgICAgICAgIEpTU190aHJvdyhlbnYsIE9VVF9PRl9NRU1PUllfRVJST1Ip OworICAgICAgICAgZ290byBmaW5pc2g7CisgICAgIH0KK2RpZmYgLXJ1cE4gcGF0Y2hlZC1qc3Mt NC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemlsbGEvanNzL3BrY3MxMS9QSzExQ2Vy dC5jIGFsdC1qc3MtNC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemlsbGEvanNzL3Br Y3MxMS9QSzExQ2VydC5jCistLS0gcGF0Y2hlZC1qc3MtNC4yLjYvbW96aWxsYS9zZWN1cml0eS9q c3Mvb3JnL21vemlsbGEvanNzL3BrY3MxMS9QSzExQ2VydC5jCTIwMDQtMDQtMjUgMDg6MDI6MjIu MDAwMDAwMDAwIC0wNzAwCisrKysgYWx0LWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9v cmcvbW96aWxsYS9qc3MvcGtjczExL1BLMTFDZXJ0LmMJMjAxMS0wOC0xMCAxODozMDowNy45NDI2 MjkwMDAgLTA3MDAKK0BAIC02Miw3ICs2Miw3IEBACisgSk5JRVhQT1JUIGpieXRlQXJyYXkgSk5J Q0FMTCBKYXZhX29yZ19tb3ppbGxhX2pzc19wa2NzMTFfUEsxMUNlcnRfZ2V0RW5jb2RlZAorICAg KEpOSUVudiAqZW52LCBqb2JqZWN0IHRoaXMpCisgeworLQlQUlRocmVhZCAqcFRocmVhZDsKKysJ UFJUaHJlYWQgKiBWQVJJQUJMRV9NQVlfTk9UX0JFX1VTRUQgcFRocmVhZDsKKyAJQ0VSVENlcnRp ZmljYXRlICpjZXJ0OworIAlTRUNJdGVtICpkZXJDZXJ0OworIAlqYnl0ZUFycmF5IGRlckFycmF5 PU5VTEw7CitAQCAtMTE4LDkgKzExOCw5IEBAIGZpbmlzaDoKKyBKTklFWFBPUlQgamludCBKTklD QUxMIEphdmFfb3JnX21vemlsbGFfanNzX3BrY3MxMV9QSzExQ2VydF9nZXRWZXJzaW9uCisgICAo Sk5JRW52ICplbnYsIGpvYmplY3QgdGhpcykKKyB7CistCVBSVGhyZWFkICpwVGhyZWFkOworKwlQ UlRocmVhZCAqIFZBUklBQkxFX01BWV9OT1RfQkVfVVNFRCBwVGhyZWFkOworIAlDRVJUQ2VydGlm aWNhdGUgKmNlcnQ7CistCWxvbmcgbFZlcnNpb247CisrCWxvbmcgbFZlcnNpb24gPSAwOworIAor IAlwVGhyZWFkID0gUFJfQXR0YWNoVGhyZWFkKFBSX1NZU1RFTV9USFJFQUQsIDAsIE5VTEwpOwor IAlQUl9BU1NFUlQocFRocmVhZCAhPSBOVUxMKTsKK0BAIC0xNjUsNyArMTY1LDcgQEAgSmF2YV9v cmdfbW96aWxsYV9qc3NfcGtjczExX1BLMTFDZXJ0X2dldAorIHsKKyAJQ0VSVENlcnRpZmljYXRl ICpjZXJ0OworIAlTRUNLRVlQdWJsaWNLZXkgKnB1Yms9TlVMTDsKKy0JUFJUaHJlYWQgKnBUaHJl YWQ7CisrCVBSVGhyZWFkICogVkFSSUFCTEVfTUFZX05PVF9CRV9VU0VEIHBUaHJlYWQ7CisgCWpv YmplY3QgcHViS2V5PU5VTEw7CisgCisgCVBSX0FTU0VSVChlbnYhPU5VTEwgJiYgdGhpcyE9TlVM TCk7CitAQCAtMjEwLDcgKzIxMCw3IEBAIEphdmFfb3JnX21vemlsbGFfanNzX3BrY3MxMV9DZXJ0 UHJveHlfcmUKKyAgIChKTklFbnYgKmVudiwgam9iamVjdCB0aGlzKQorIHsKKyAJQ0VSVENlcnRp ZmljYXRlICpjZXJ0OworLQlQUlRocmVhZCAqcFRocmVhZDsKKysJUFJUaHJlYWQgKiBWQVJJQUJM RV9NQVlfTk9UX0JFX1VTRUQgcFRocmVhZDsKKyAKKyAJUFJfQVNTRVJUKGVudiE9TlVMTCAmJiB0 aGlzIT1OVUxMKTsKKyAKK2RpZmYgLXJ1cE4gcGF0Y2hlZC1qc3MtNC4yLjYvbW96aWxsYS9zZWN1 cml0eS9qc3Mvb3JnL21vemlsbGEvanNzL3BrY3MxMS9QSzExQ2lwaGVyLmMgYWx0LWpzcy00LjIu Ni9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3MvcGtjczExL1BLMTFDaXBoZXIu YworLS0tIHBhdGNoZWQtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxh L2pzcy9wa2NzMTEvUEsxMUNpcGhlci5jCTIwMDQtMDQtMjUgMDg6MDI6MjIuMDAwMDAwMDAwIC0w NzAwCisrKysgYWx0LWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9q c3MvcGtjczExL1BLMTFDaXBoZXIuYwkyMDExLTA4LTEwIDE2OjQyOjQzLjgyMjQ5NDAwMCAtMDcw MAorQEAgLTczLDcgKzczLDcgQEAgSmF2YV9vcmdfbW96aWxsYV9qc3NfcGtjczExX1BLMTFDaXBo ZXJfaQorICAgICBTRUNJdGVtICppdj1OVUxMOworICAgICBQSzExQ29udGV4dCAqY29udGV4dD1O VUxMOworICAgICBDS19BVFRSSUJVVEVfVFlQRSBvcDsKKy0gICAgam9iamVjdCBjb250ZXh0T2Jq OworKyAgICBqb2JqZWN0IGNvbnRleHRPYmogPSBOVUxMOworIAorICAgICBQUl9BU1NFUlQoZW52 IT1OVUxMICYmIGNsYXp6IT1OVUxMICYmIGtleU9iaiE9TlVMTCAmJiBhbGdPYmohPU5VTEwpOwor IAorZGlmZiAtcnVwTiBwYXRjaGVkLWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcv bW96aWxsYS9qc3MvcGtjczExL1BLMTFLZXlHZW5lcmF0b3IuYyBhbHQtanNzLTQuMi42L21vemls bGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy9wa2NzMTEvUEsxMUtleUdlbmVyYXRvci5j CistLS0gcGF0Y2hlZC1qc3MtNC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemlsbGEv anNzL3BrY3MxMS9QSzExS2V5R2VuZXJhdG9yLmMJMjAwNS0xMS0xNCAxNDoxNTowNi4wMDAwMDAw MDAgLTA4MDAKKysrKyBhbHQtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3pp bGxhL2pzcy9wa2NzMTEvUEsxMUtleUdlbmVyYXRvci5jCTIwMTEtMDgtMTEgMDk6MjM6MDMuMjIw NDcwMDAwIC0wNzAwCitAQCAtMjA3LDcgKzIwNyw3IEBAIGZpbmlzaDoKKyB9CisgI2VuZGlmCisg Cistc3RhdGljIHZvaWQKKytzdGF0aWMgdm9pZCBGVU5DVElPTl9NQVlfTk9UX0JFX1VTRUQKKyBw cmludF9zZWNpdGVtKFNFQ0l0ZW0gKml0ZW0pIHsKKyAgICAgaW50IGk7CisgICAgIGludCBvbmxp bmU7CitkaWZmIC1ydXBOIHBhdGNoZWQtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29y Zy9tb3ppbGxhL2pzcy9wa2NzMTEvUEsxMUtleVBhaXJHZW5lcmF0b3IuYyBhbHQtanNzLTQuMi42 L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy9wa2NzMTEvUEsxMUtleVBhaXJH ZW5lcmF0b3IuYworLS0tIHBhdGNoZWQtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29y Zy9tb3ppbGxhL2pzcy9wa2NzMTEvUEsxMUtleVBhaXJHZW5lcmF0b3IuYwkyMDExLTA4LTEwIDE2 OjIxOjMwLjI3MDc2NzAwMCAtMDcwMAorKysrIGFsdC1qc3MtNC4yLjYvbW96aWxsYS9zZWN1cml0 eS9qc3Mvb3JnL21vemlsbGEvanNzL3BrY3MxMS9QSzExS2V5UGFpckdlbmVyYXRvci5jCTIwMTEt MDgtMTAgMTg6MzM6MTEuNzczNDQ1MDAwIC0wNzAwCitAQCAtNDUwLDcgKzQ1MCw3IEBAIER1bXBJ dGVtKFNFQ0l0ZW0gKml0ZW0pCisgICBmb3IgKGk9MDsgaSA8IGl0ZW0tPmxlbjsgaSsrKSB7Cisg ICAgIHByaW50ZigiICUwMngiLGRhdGFbaV0pOworICAgfQorLSAgcHJpbnRmKCIgOiAweCUwOHgg JWRcbiIsIGRhdGEsIGl0ZW0tPmxlbik7CisrICBwcmludGYoIiA6ICU4cCAlZFxuIiwgZGF0YSwg aXRlbS0+bGVuKTsKKyB9CisgCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK2RpZmYgLXJ1cE4gcGF0Y2hlZC1q c3MtNC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemlsbGEvanNzL3BrY3MxMS9QSzEx S2V5V3JhcHBlci5jIGFsdC1qc3MtNC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemls bGEvanNzL3BrY3MxMS9QSzExS2V5V3JhcHBlci5jCistLS0gcGF0Y2hlZC1qc3MtNC4yLjYvbW96 aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemlsbGEvanNzL3BrY3MxMS9QSzExS2V5V3JhcHBlci5j CTIwMDYtMDItMjIgMTc6MjE6NDIuMDAwMDAwMDAwIC0wODAwCisrKysgYWx0LWpzcy00LjIuNi9t b3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3MvcGtjczExL1BLMTFLZXlXcmFwcGVy LmMJMjAxMS0wOC0xMCAxNjo1MjowMy4wNTI5MTAwMDAgLTA3MDAKK0BAIC01NjIsNyArNTYyLDcg QEAgSmF2YV9vcmdfbW96aWxsYV9qc3NfcGtjczExX1BLMTFLZXlXcmFwcAorICAgICAgICAgamlu dCBrZXlMZW4sIGpieXRlQXJyYXkgaXZCQSwgamludCB1c2FnZUVudW0pCisgeworICAgICBQSzEx U3ltS2V5ICpzeW1LZXk9TlVMTDsKKy0gICAgQ0tfTUVDSEFOSVNNX1RZUEUgd3JhcHBpbmdNZWNo LCBrZXlUeXBlTWVjaDsKKysgICAgQ0tfTUVDSEFOSVNNX1RZUEUgd3JhcHBpbmdNZWNoPTAsIGtl eVR5cGVNZWNoPTA7CisgICAgIFNFQ0l0ZW0gKndyYXBwZWRLZXk9TlVMTCwgKml2PU5VTEwsICpw YXJhbT1OVUxMOworICAgICBqb2JqZWN0IGtleU9iaj1OVUxMOworICAgICBTRUNLRVlQcml2YXRl S2V5ICp3cmFwcGluZ0tleT1OVUxMOworZGlmZiAtcnVwTiBwYXRjaGVkLWpzcy00LjIuNi9tb3pp bGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3MvcGtjczExL1BLMTFNZXNzYWdlRGlnZXN0 LmMgYWx0LWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3MvcGtj czExL1BLMTFNZXNzYWdlRGlnZXN0LmMKKy0tLSBwYXRjaGVkLWpzcy00LjIuNi9tb3ppbGxhL3Nl Y3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3MvcGtjczExL1BLMTFNZXNzYWdlRGlnZXN0LmMJMjAw NC0wNC0yNSAwODowMjoyMi4wMDAwMDAwMDAgLTA3MDAKKysrKyBhbHQtanNzLTQuMi42L21vemls bGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy9wa2NzMTEvUEsxMU1lc3NhZ2VEaWdlc3Qu YwkyMDExLTA4LTEwIDE2OjUyOjU0Ljk1MTg1NzAwMCAtMDcwMAorQEAgLTg4LDcgKzg4LDYgQEAg SmF2YV9vcmdfbW96aWxsYV9qc3NfcGtjczExX1BLMTFNZXNzYWdlRAorICAgICBQSzExQ29udGV4 dCAqY29udGV4dCA9IE5VTEw7CisgICAgIENLX01FQ0hBTklTTV9UWVBFIG1lY2g7CisgICAgIFNF Q0l0ZW0gcGFyYW07CistICAgIFBLMTFTbG90SW5mbyAqc2xvdD1OVUxMOworICAgICBqb2JqZWN0 IGNvbnRleHRPYmo9TlVMTDsKKyAKKyAgICAgbWVjaCA9IEpTU19nZXRQSzExTWVjaEZyb21BbGco ZW52LCBhbGdPYmopOworZGlmZiAtcnVwTiBwYXRjaGVkLWpzcy00LjIuNi9tb3ppbGxhL3NlY3Vy aXR5L2pzcy9vcmcvbW96aWxsYS9qc3MvcGtjczExL1BLMTFNb2R1bGUuYyBhbHQtanNzLTQuMi42 L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy9wa2NzMTEvUEsxMU1vZHVsZS5j CistLS0gcGF0Y2hlZC1qc3MtNC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemlsbGEv anNzL3BrY3MxMS9QSzExTW9kdWxlLmMJMjAwNy0wMi0yMyAwOTo0MDoyMS4wMDAwMDAwMDAgLTA4 MDAKKysrKyBhbHQtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pz cy9wa2NzMTEvUEsxMU1vZHVsZS5jCTIwMTEtMDgtMTAgMTY6NTM6MjguNzg4ODIzMDAwIC0wNzAw CitAQCAtMjU0LDcgKzI1NCw3IEBAIEphdmFfb3JnX21vemlsbGFfanNzX3BrY3MxMV9Nb2R1bGVQ cm94eV8KKyB7CisgICAgIFNFQ01PRE1vZHVsZSAqbW9kdWxlOworIAorLSAgICBpZiAoSlNTX2dl dFB0ckZyb21Qcm94eShlbnYsIHRoaXMsICZtb2R1bGUpICE9IFBSX1NVQ0NFU1MpIHsKKysgICAg aWYgKEpTU19nZXRQdHJGcm9tUHJveHkoZW52LCB0aGlzLCAodm9pZCAqKikmbW9kdWxlKSAhPSBQ Ul9TVUNDRVNTKSB7CisgICAgICAgICBBU1NFUlRfT1VUT0ZNRU0oZW52KTsKKyAgICAgICAgIGdv dG8gZmluaXNoOworICAgICB9CitkaWZmIC1ydXBOIHBhdGNoZWQtanNzLTQuMi42L21vemlsbGEv c2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy9wa2NzMTEvUEsxMVByaXZLZXkuYyBhbHQtanNz LTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy9wa2NzMTEvUEsxMVBy aXZLZXkuYworLS0tIHBhdGNoZWQtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9t b3ppbGxhL2pzcy9wa2NzMTEvUEsxMVByaXZLZXkuYwkyMDA2LTA0LTI0IDE4OjI2OjQyLjAwMDAw MDAwMCAtMDcwMAorKysrIGFsdC1qc3MtNC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21v emlsbGEvanNzL3BrY3MxMS9QSzExUHJpdktleS5jCTIwMTEtMDgtMTAgMTg6MzQ6MjAuOTU0Mzc2 MDAwIC0wNzAwCitAQCAtMTc0LDcgKzE3NCw3IEBAIEpOSUVYUE9SVCBqb2JqZWN0IEpOSUNBTEwK KyBKYXZhX29yZ19tb3ppbGxhX2pzc19wa2NzMTFfUEsxMVByaXZLZXlfZ2V0S2V5VHlwZQorICAg KEpOSUVudiAqZW52LCBqb2JqZWN0IHRoaXMpCisgeworLSAgICBQUlRocmVhZCAqcFRocmVhZDsK KysgICAgUFJUaHJlYWQgKiBWQVJJQUJMRV9NQVlfTk9UX0JFX1VTRUQgcFRocmVhZDsKKyAgICAg U0VDS0VZUHJpdmF0ZUtleSAqcHJpdms7CisgICAgIEtleVR5cGUga2V5VHlwZTsKKyAgICAgY2hh cioga2V5VHlwZUZpZWxkTmFtZTsKK0BAIC0yNTksNyArMjU5LDcgQEAgSmF2YV9vcmdfbW96aWxs YV9qc3NfcGtjczExX1ByaXZhdGVLZXlQcgorICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IHRoaXMp CisgeworICAgICBTRUNLRVlQcml2YXRlS2V5ICpwcml2azsKKy0gICAgUFJUaHJlYWQgKnBUaHJl YWQ7CisrICAgIFBSVGhyZWFkICogVkFSSUFCTEVfTUFZX05PVF9CRV9VU0VEIHBUaHJlYWQ7Cisg CisgICAgIFBSX0FTU0VSVChlbnYhPU5VTEwgJiYgdGhpcyE9TlVMTCk7CisgCitAQCAtMzU4LDcg KzM1OCw2IEBAIEphdmFfb3JnX21vemlsbGFfanNzX3BrY3MxMV9QSzExUHJpdktleV8KKyAgICAg KEpOSUVudiAqZW52LCBqb2JqZWN0IHRoaXMpCisgeworICAgICBTRUNLRVlQcml2YXRlS2V5ICpr ZXkgPSBOVUxMOworLSAgICBQSzExU2xvdEluZm8gKnNsb3QgPSBOVUxMOworICAgICBTRUNJdGVt ICppZEl0ZW0gPSBOVUxMOworICAgICBqYnl0ZUFycmF5IGJ5dGVBcnJheSA9IE5VTEw7CisgCitk aWZmIC1ydXBOIHBhdGNoZWQtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3pp bGxhL2pzcy9wa2NzMTEvUEsxMVB1YktleS5jIGFsdC1qc3MtNC4yLjYvbW96aWxsYS9zZWN1cml0 eS9qc3Mvb3JnL21vemlsbGEvanNzL3BrY3MxMS9QSzExUHViS2V5LmMKKy0tLSBwYXRjaGVkLWpz cy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3MvcGtjczExL1BLMTFQ dWJLZXkuYwkyMDA2LTAyLTIyIDE3OjIxOjQyLjAwMDAwMDAwMCAtMDgwMAorKysrIGFsdC1qc3Mt NC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemlsbGEvanNzL3BrY3MxMS9QSzExUHVi S2V5LmMJMjAxMS0wOC0xMCAxODozNTowNC4zOTAzMzMwMDAgLTA3MDAKK0BAIC02Miw3ICs2Miw3 IEBAIEpOSUVYUE9SVCB2b2lkIEpOSUNBTEwgSmF2YV9vcmdfbW96aWxsYV8KKyAgIChKTklFbnYg KmVudiwgam9iamVjdCB0aGlzKQorIHsKKyAgICAgU0VDS0VZUHVibGljS2V5ICpwdWJrOworLSAg ICBQUlRocmVhZCAqcFRocmVhZDsKKysgICAgUFJUaHJlYWQgKiBWQVJJQUJMRV9NQVlfTk9UX0JF X1VTRUQgcFRocmVhZDsKKyAKKyAgICAgUFJfQVNTRVJUKGVudiE9TlVMTCAmJiB0aGlzIT1OVUxM KTsKKyAKK0BAIC0xNzksNyArMTc5LDcgQEAgSk5JRVhQT1JUIHZvaWQgSk5JQ0FMTAorIEphdmFf b3JnX21vemlsbGFfanNzX3BrY3MxMV9QSzExUHViS2V5X3ZlcmlmeUtleUlzT25Ub2tlbgorICAg KEpOSUVudiAqZW52LCBqb2JqZWN0IHRoaXMsIGpvYmplY3QgdG9rZW4pCisgeworLQlQUlRocmVh ZCAqcFRocmVhZDsKKysgICAgUFJUaHJlYWQgKiBWQVJJQUJMRV9NQVlfTk9UX0JFX1VTRUQgcFRo cmVhZDsKKyAJU0VDS0VZUHVibGljS2V5ICprZXkgPSBOVUxMOworIAlQSzExU2xvdEluZm8gKnNs b3QgPSBOVUxMOworIAlQSzExU2xvdEluZm8gKmtleVNsb3QgPSBOVUxMOworQEAgLTIzMSw3ICsy MzEsNyBAQCBKTklFWFBPUlQgam9iamVjdCBKTklDQUxMCisgSmF2YV9vcmdfbW96aWxsYV9qc3Nf cGtjczExX1BLMTFQdWJLZXlfZ2V0S2V5VHlwZQorICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IHRo aXMpCisgeworLSAgICBQUlRocmVhZCAqcFRocmVhZDsKKysgICAgUFJUaHJlYWQgKiBWQVJJQUJM RV9NQVlfTk9UX0JFX1VTRUQgcFRocmVhZDsKKyAgICAgU0VDS0VZUHVibGljS2V5ICpwdWJrOwor ICAgICBLZXlUeXBlIGtleVR5cGU7CisgICAgIGNoYXIqIGtleVR5cGVGaWVsZE5hbWU7CitAQCAt NDU0LDcgKzQ1NCw3IEBAIGdldF9wdWJsaWNfa2V5X2luZm8KKyB7CisgICAgIFNFQ0tFWVB1Ymxp Y0tleSAqcHViazsKKyAgICAgamJ5dGVBcnJheSBieXRlQXJyYXk9TlVMTDsKKy0gICAgU0VDSXRl bSAqaXRlbTsKKysgICAgU0VDSXRlbSAqaXRlbT1OVUxMOworIAorICAgICBQUl9BU1NFUlQoZW52 IT1OVUxMICYmIHRoaXMhPU5VTEwpOworIAorQEAgLTUyNiw3ICs1MjYsNiBAQCBwdWJrRnJvbVJh dyhKTklFbnYgKmVudiwgQ0tfS0VZX1RZUEUgdHlwCisgeworICAgICBqb2JqZWN0IHB1YmtPYmo9 TlVMTDsKKyAgICAgU0VDS0VZUHVibGljS2V5ICpwdWJrPU5VTEw7CistICAgIFNFQ1N0YXR1cyBy djsKKyAgICAgU0VDSXRlbSAqcHVia0RFUj1OVUxMOworIAorICAgICAvKiB2YWxpZGF0ZSBhcmdz ICovCitkaWZmIC1ydXBOIHBhdGNoZWQtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29y Zy9tb3ppbGxhL2pzcy9wa2NzMTEvUEsxMVNlY3VyZVJhbmRvbS5jIGFsdC1qc3MtNC4yLjYvbW96 aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemlsbGEvanNzL3BrY3MxMS9QSzExU2VjdXJlUmFuZG9t LmMKKy0tLSBwYXRjaGVkLWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxs YS9qc3MvcGtjczExL1BLMTFTZWN1cmVSYW5kb20uYwkyMDA1LTAxLTI4IDExOjE2OjExLjAwMDAw MDAwMCAtMDgwMAorKysrIGFsdC1qc3MtNC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21v emlsbGEvanNzL3BrY3MxMS9QSzExU2VjdXJlUmFuZG9tLmMJMjAxMS0wOC0xMCAxODozNjowNS4y NTIyNzEwMDAgLTA3MDAKK0BAIC0xMTIsNyArMTEyLDcgQEAgSmF2YV9vcmdfbW96aWxsYV9qc3Nf cGtjczExX1BLMTFTZWN1cmVSYQorICAgICAgKiAiQyIgZGF0YSBtZW1iZXJzCisgICAgICAqLwor IAorLSAgICBQUlRocmVhZCogICAgIHBUaHJlYWQgPSBOVUxMOworKyAgICBQUlRocmVhZCogICAg IFZBUklBQkxFX01BWV9OT1RfQkVfVVNFRCBwVGhyZWFkID0gTlVMTDsKKyAgICAgU0VDU3RhdHVz ICAgICBzdGF0dXMgID0gUFJfRkFMU0U7CisgICAgIFBLMTFTbG90SW5mbyogc2xvdCAgICA9IE5V TEw7CisgCitAQCAtMjYyLDcgKzI2Miw3IEBAIEphdmFfb3JnX21vemlsbGFfanNzX3BrY3MxMV9Q SzExU2VjdXJlUmEKKyAgICAgICogIkMiIGRhdGEgbWVtYmVycworICAgICAgKi8KKyAKKy0gICAg UFJUaHJlYWQqICAgICBwVGhyZWFkID0gTlVMTDsKKysgICAgUFJUaHJlYWQqICAgICBWQVJJQUJM RV9NQVlfTk9UX0JFX1VTRUQgcFRocmVhZCA9IE5VTEw7CisgICAgIFNFQ1N0YXR1cyAgICAgc3Rh dHVzICA9IFBSX0ZBTFNFOworIAorIAorZGlmZiAtcnVwTiBwYXRjaGVkLWpzcy00LjIuNi9tb3pp bGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3MvcGtjczExL1BLMTFTdG9yZS5jIGFsdC1q c3MtNC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemlsbGEvanNzL3BrY3MxMS9QSzEx U3RvcmUuYworLS0tIHBhdGNoZWQtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9t b3ppbGxhL2pzcy9wa2NzMTEvUEsxMVN0b3JlLmMJMjAwNi0wNC0wMyAxNjowOTo0OS4wMDAwMDAw MDAgLTA3MDAKKysrKyBhbHQtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3pp bGxhL2pzcy9wa2NzMTEvUEsxMVN0b3JlLmMJMjAxMS0wOC0xMCAxODozODoxMi4zNjUxNDUwMDAg LTA3MDAKK0BAIC0zMTksNyArMzE5LDcgQEAgSmF2YV9vcmdfbW96aWxsYV9qc3NfcGtjczExX1BL MTFTdG9yZV9kZQorICAgICAoSk5JRW52ICplbnYsIGpvYmplY3QgdGhpcywgam9iamVjdCBjZXJ0 T2JqZWN0KQorIHsKKyAgICAgQ0VSVENlcnRpZmljYXRlICpjZXJ0OworLSAgICBTRUNTdGF0dXMg c3RhdHVzOworKyAgICBTRUNTdGF0dXMgVkFSSUFCTEVfTUFZX05PVF9CRV9VU0VEIHN0YXR1czsK KyAKKyAgICAgUFJfQVNTRVJUKGVudiE9TlVMTCAmJiB0aGlzIT1OVUxMKTsKKyAgICAgaWYoY2Vy dE9iamVjdCA9PSBOVUxMKSB7CitAQCAtMzQ5LDcgKzM0OSw3IEBAIEphdmFfb3JnX21vemlsbGFf anNzX3BrY3MxMV9QSzExU3RvcmVfZGUKKyAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IHRoaXMs IGpvYmplY3QgY2VydE9iamVjdCkKKyB7CisgICAgIENFUlRDZXJ0aWZpY2F0ZSAqY2VydDsKKy0g ICAgU0VDU3RhdHVzIHN0YXR1czsKKysgICAgU0VDU3RhdHVzIFZBUklBQkxFX01BWV9OT1RfQkVf VVNFRCBzdGF0dXM7CisgCisgICAgIFBSX0FTU0VSVChlbnYhPU5VTEwgJiYgdGhpcyE9TlVMTCk7 CisgICAgIGlmKGNlcnRPYmplY3QgPT0gTlVMTCkgeworZGlmZiAtcnVwTiBwYXRjaGVkLWpzcy00 LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3MvcGtjczExL1BLMTFTeW1L ZXkuYyBhbHQtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy9w a2NzMTEvUEsxMVN5bUtleS5jCistLS0gcGF0Y2hlZC1qc3MtNC4yLjYvbW96aWxsYS9zZWN1cml0 eS9qc3Mvb3JnL21vemlsbGEvanNzL3BrY3MxMS9QSzExU3ltS2V5LmMJMjAwNC0wNC0yNSAwODow MjoyMi4wMDAwMDAwMDAgLTA3MDAKKysrKyBhbHQtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkv anNzL29yZy9tb3ppbGxhL2pzcy9wa2NzMTEvUEsxMVN5bUtleS5jCTIwMTEtMDgtMTEgMDk6NDI6 NTIuOTY3MjgyMDAwIC0wNzAwCitAQCAtMjMzLDcgKzIzMyw3IEBAIEphdmFfb3JnX21vemlsbGFf anNzX3BrY3MxMV9QSzExU3ltS2V5X2cKKyAgICAgamZpZWxkSUQgdHlwZUZpZWxkPU5VTEw7Cisg ICAgIGpvYmplY3QgdHlwZU9iamVjdD1OVUxMOworIAorLSAgICBpZiggSlNTX1BLMTFfZ2V0U3lt S2V5UHRyKGVudiwgdGhpcywgJmtleSkgIT0gU0VDU3VjY2VzcyApIHsKKysgICAgaWYoIEpTU19Q SzExX2dldFN5bUtleVB0cihlbnYsIHRoaXMsICZrZXkpICE9IFBSX1NVQ0NFU1MgKSB7CisgICAg ICAgICBBU1NFUlRfT1VUT0ZNRU0oZW52KTsKKyAgICAgICAgIGdvdG8gZmluaXNoOworICAgICB9 CitkaWZmIC1ydXBOIHBhdGNoZWQtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9t b3ppbGxhL2pzcy9wa2NzMTEvUEsxMVRva2VuLmMgYWx0LWpzcy00LjIuNi9tb3ppbGxhL3NlY3Vy aXR5L2pzcy9vcmcvbW96aWxsYS9qc3MvcGtjczExL1BLMTFUb2tlbi5jCistLS0gcGF0Y2hlZC1q c3MtNC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemlsbGEvanNzL3BrY3MxMS9QSzEx VG9rZW4uYwkyMDA3LTExLTA5IDE2OjM3OjU3LjAwMDAwMDAwMCAtMDgwMAorKysrIGFsdC1qc3Mt NC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemlsbGEvanNzL3BrY3MxMS9QSzExVG9r ZW4uYwkyMDExLTA4LTEwIDE4OjM4OjUyLjQyMTEwNDAwMCAtMDcwMAorQEAgLTk2MSw5ICs5NjEs OSBAQCBKTklFWFBPUlQganN0cmluZyBKTklDQUxMIEphdmFfb3JnX21vemlsCisgICAganN0cmlu ZyBrZXlUeXBlLCBqYnl0ZUFycmF5IFAsIGpieXRlQXJyYXkgUSwgamJ5dGVBcnJheSBHKQorIHsK KyAgICAgUEsxMVNsb3RJbmZvICpzbG90OworLSAgICBjb25zdCBjaGFyKiBjX3N1YmplY3Q7Cisr ICAgIGNvbnN0IGNoYXIqIGNfc3ViamVjdD1OVUxMOworICAgICBqYm9vbGVhbiBpc0NvcHk7Cist ICAgIHVuc2lnbmVkIGNoYXIgKmI2NHJlcXVlc3Q7CisrICAgIHVuc2lnbmVkIGNoYXIgKmI2NHJl cXVlc3Q9TlVMTDsKKyAgICAgU0VDSXRlbSBwLCBxLCBnOworICAgICBQUUdQYXJhbXMgKmRzYVBh cmFtcz1OVUxMOworICAgICBjb25zdCBjaGFyKiBjX2tleVR5cGU7CitAQCAtMTA4MCw3ICsxMDgw LDcgQEAgR2VuZXJhdGVDZXJ0UmVxdWVzdChKTklFbnYgKmVudiwgCisgCVNFQ1N0YXR1cyBydjsK KyAJUFJBcmVuYVBvb2wgKmFyZW5hOworIAlTRUNJdGVtIHJlc3VsdF9kZXIsIHJlc3VsdDsKKy0J U0VDSXRlbSAqYmxvYjsKKysJU0VDSXRlbSAqIFZBUklBQkxFX01BWV9OT1RfQkVfVVNFRCBibG9i OworIAlDS19NRUNIQU5JU01fVFlQRSBzaWduTWVjaDsKKyAJQ0tfTUVDSEFOSVNNX1RZUEUga2V5 Z2VuTWVjaDsKKyAKK2RpZmYgLXJ1cE4gcGF0Y2hlZC1qc3MtNC4yLjYvbW96aWxsYS9zZWN1cml0 eS9qc3Mvb3JnL21vemlsbGEvanNzL3Byb3ZpZGVyL2phdmEvc2VjdXJpdHkvSlNTS2V5U3RvcmVT cGkuYyBhbHQtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy9w cm92aWRlci9qYXZhL3NlY3VyaXR5L0pTU0tleVN0b3JlU3BpLmMKKy0tLSBwYXRjaGVkLWpzcy00 LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3MvcHJvdmlkZXIvamF2YS9z ZWN1cml0eS9KU1NLZXlTdG9yZVNwaS5jCTIwMDMtMDktMjQgMTU6MjA6MDUuMDAwMDAwMDAwIC0w NzAwCisrKysgYWx0LWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9q c3MvcHJvdmlkZXIvamF2YS9zZWN1cml0eS9KU1NLZXlTdG9yZVNwaS5jCTIwMTEtMDgtMTAgMTY6 NTc6NDIuOTkxNTcwMDAwIC0wNzAwCitAQCAtODksNyArODksNiBAQCB0cmF2ZXJzZVRva2VuT2Jq ZWN0cworICAgICBTRUNLRVlQdWJsaWNLZXlMaXN0KiBwdWJrTGlzdCA9IE5VTEw7CisgICAgIFBL MTFTeW1LZXkgKnN5bUtleSA9IE5VTEw7CisgICAgIENFUlRDZXJ0TGlzdCAqY2VydExpc3QgPSBO VUxMOworLSAgICBTRUNTdGF0dXMgc2Vjc3RhdDsKKyAKKyAgICAgLyoKKyAgICAgICogR2V0IGFs bCBwcml2YXRlIGtleXMKK0BAIC01MDgsNyArNTA3LDYgQEAgbG9va3VwQ2VydEJ5Tmlja25hbWUo Sk5JRW52ICplbnYsIGpvYmplYworIHsKKyAgICAgUEsxMVNsb3RJbmZvICpzbG90OworICAgICBF bmdpbmVHZXRDZXJ0aWZpY2F0ZUNCSW5mbyBjYmluZm8gPSB7TlVMTCxOVUxMfTsKKy0gICAgamJ5 dGVBcnJheSBkZXJDZXJ0QkEgPSBOVUxMOworICAgICBQUlN0YXR1cyBzdGF0dXMgPSBQUl9GQUlM VVJFOworIAorICAgICBpZiggYWxpYXMgPT0gTlVMTCApIGdvdG8gZmluaXNoOworQEAgLTgxMyw3 ICs4MTEsNiBAQCBKYXZhX29yZ19tb3ppbGxhX2pzc19wcm92aWRlcl9qYXZhX3NlY3VyCisgICAg IFBLMTFTbG90SW5mbyAqc2xvdDsKKyAgICAgRW5naW5lR2V0Q2VydGlmaWNhdGVDQkluZm8gY2Jp bmZvID0ge05VTEwsTlVMTH07CisgICAgIGpib29sZWFuIHJldFZhbCA9IEpOSV9GQUxTRTsKKy0g ICAgU0VDS0VZUHJpdmF0ZUtleSAqcHJpdmsgPSBOVUxMOworIAorICAgICBpZiggYWxpYXMgPT0g TlVMTCApIGdvdG8gZmluaXNoOworIAorZGlmZiAtcnVwTiBwYXRjaGVkLWpzcy00LjIuNi9tb3pp bGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3Mvc3NsL1NTTFNvY2tldC5jIGFsdC1qc3Mt NC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemlsbGEvanNzL3NzbC9TU0xTb2NrZXQu YworLS0tIHBhdGNoZWQtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxh L2pzcy9zc2wvU1NMU29ja2V0LmMJMjAxMS0wOC0xMCAxNjoyMTozMC4zOTU3NjUwMDAgLTA3MDAK KysrKyBhbHQtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy9z c2wvU1NMU29ja2V0LmMJMjAxMS0wOC0xMCAxNzowNToxNS4zNjMxMTcwMDAgLTA3MDAKK0BAIC0z OTcsNyArMzk3LDcgQEAgSmF2YV9vcmdfbW96aWxsYV9qc3Nfc3NsX1NTTFNvY2tldF9nZXRTbwor IHsKKyAgICAgUFJTb2NrZXRPcHRpb25EYXRhIHNvY2tPcHRpb25zOworICAgICBKU1NMX1NvY2tl dERhdGEgKnNvY2sgPSBOVUxMOworLSAgICBqaW50IHJldHZhbDsKKysgICAgamludCByZXR2YWw9 LTE7CisgICAgIFBSU3RhdHVzIHN0YXR1czsKKyAKKyAgICAgaWYoIEpTU0xfZ2V0U29ja0RhdGEo ZW52LCBzZWxmLCAmc29jaykgIT0gUFJfU1VDQ0VTUyApIHsKK0BAIC04NzQsNyArODc0LDcgQEAg Sk5JRVhQT1JUIGppbnQgSk5JQ0FMTAorIEphdmFfb3JnX21vemlsbGFfanNzX3NzbF9TU0xTb2Nr ZXRfc29ja2V0QXZhaWxhYmxlKAorICAgICBKTklFbnYgKmVudiwgam9iamVjdCBzZWxmKQorIHsK Ky0gICAgamludCBhdmFpbGFibGU7CisrICAgIGppbnQgYXZhaWxhYmxlPTA7CisgICAgIEpTU0xf U29ja2V0RGF0YSAqc29jayA9IE5VTEw7CisgCisgICAgIGlmKCBKU1NMX2dldFNvY2tEYXRhKGVu diwgc2VsZiwgJnNvY2spICE9IFBSX1NVQ0NFU1MgKSB7CitkaWZmIC1ydXBOIHBhdGNoZWQtanNz LTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy9zc2wvY29tbW9uLmMg YWx0LWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3Mvc3NsL2Nv bW1vbi5jCistLS0gcGF0Y2hlZC1qc3MtNC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21v emlsbGEvanNzL3NzbC9jb21tb24uYwkyMDExLTA4LTEwIDE2OjIxOjMwLjQzNDc2NjAwMCAtMDcw MAorKysrIGFsdC1qc3MtNC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemlsbGEvanNz L3NzbC9jb21tb24uYwkyMDExLTA4LTExIDA5OjQ0OjEyLjMxMDIwMjAwMCAtMDcwMAorQEAgLTY0 LDcgKzY0LDcgQEAgSlNTTF90aHJvd1NTTFNvY2tldEV4Y2VwdGlvbihKTklFbnYgKmVudgorICAg ICBqbWV0aG9kSUQgZXhjZXBDb25zOworICAgICBqb2JqZWN0IGV4Y2VwT2JqOworICAgICBqc3Ry aW5nIG1zZ1N0cmluZzsKKy0gICAgamludCByZXN1bHQ7CisrICAgIGppbnQgVkFSSUFCTEVfTUFZ X05PVF9CRV9VU0VEIHJlc3VsdDsKKyAKKyAgICAgLyoKKyAgICAgICogZ2V0IHRoZSBlcnJvciBj b2RlIGFuZCBlcnJvciBzdHJpbmcKK0BAIC0xNDksOCArMTQ5LDggQEAgSmF2YV9vcmdfbW96aWxs YV9qc3Nfc3NsX1NvY2tldEJhc2Vfc29jaworICAgICBqYnl0ZUFycmF5IHNkQXJyYXkgPSBOVUxM OworICAgICBKU1NMX1NvY2tldERhdGEgKnNvY2tkYXRhID0gTlVMTDsKKyAgICAgU0VDU3RhdHVz IHN0YXR1czsKKy0gICAgUFJGaWxlRGVzYyAqbmV3RkQ7CistICAgIFBSRmlsZURlc2MgKnRtcEZE OworKyAgICBQUkZpbGVEZXNjICpuZXdGRCA9IE5VTEw7CisrICAgIFBSRmlsZURlc2MgKnRtcEZE ID0gTlVMTDsKKyAgICAgUFJGaWxlUHJpdmF0ZSAqcHJpdiA9IE5VTEw7CisgICAgIGludCBzb2Nr ZXRGYW1pbHkgPSAwOworIAorQEAgLTYyNyw3ICs2MjcsNyBAQCBKYXZhX29yZ19tb3ppbGxhX2pz c19zc2xfU29ja2V0QmFzZV9nZXRTCisgICAgIFNFQ1N0YXR1cyBzdGF0dXMgPSBTRUNTdWNjZXNz OworICAgICBQUkJvb2wgYk9wdGlvbiA9IFBSX0ZBTFNFOworIAorLSAgICBpZiggSlNTTF9nZXRT b2NrRGF0YShlbnYsIHNlbGYsICZzb2NrKSAhPSBTRUNTdWNjZXNzICkgeworKyAgICBpZiggSlNT TF9nZXRTb2NrRGF0YShlbnYsIHNlbGYsICZzb2NrKSAhPSBQUl9TVUNDRVNTICkgeworICAgICAg ICAgZ290byBmaW5pc2g7CisgICAgIH0KKyAKK0BAIC02NDksNyArNjQ5LDcgQEAgSlNTTF9nZXRT b2NrQWRkcgorICAgICAoSk5JRW52ICplbnYsIGpvYmplY3Qgc2VsZiwgUFJOZXRBZGRyICphZGRy LCBMb2NhbE9yUGVlciBsb2NhbE9yUGVlcikKKyB7CisgICAgIEpTU0xfU29ja2V0RGF0YSAqc29j ayA9IE5VTEw7CistICAgIFBSU3RhdHVzIHN0YXR1czsKKysgICAgUFJTdGF0dXMgc3RhdHVzPVBS X0ZBSUxVUkU7CisgCisgICAgIC8qIGdldCBteSBmZCAqLworICAgICBpZiggSlNTTF9nZXRTb2Nr RGF0YShlbnYsIHNlbGYsICZzb2NrKSAhPSBQUl9TVUNDRVNTICkgeworQEAgLTg5Myw3ICs4OTMs NyBAQCBKU1NfU1NMX3Byb2Nlc3NFeGNlcHRpb25zKEpOSUVudiAqZW52LCBQCisgCisgZmluaXNo OgorICAgICBpZiggY3VycmVudEV4Y2VwICE9IE5VTEwgJiYgKCplbnYpLT5FeGNlcHRpb25PY2N1 cnJlZChlbnYpID09IE5VTEwpIHsKKy0gICAgICAgIGludCByZXQgPSAoKmVudiktPlRocm93KGVu diwgY3VycmVudEV4Y2VwKTsKKysgICAgICAgIGludCBWQVJJQUJMRV9NQVlfTk9UX0JFX1VTRUQg cmV0ID0gKCplbnYpLT5UaHJvdyhlbnYsIGN1cnJlbnRFeGNlcCk7CisgICAgICAgICBQUl9BU1NF UlQocmV0ID09IDApOworICAgICB9CisgfQorZGlmZiAtcnVwTiBwYXRjaGVkLWpzcy00LjIuNi9t b3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3Mvc3NsL2phdmFzb2NrLmMgYWx0LWpz cy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3Mvc3NsL2phdmFzb2Nr LmMKKy0tLSBwYXRjaGVkLWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxs YS9qc3Mvc3NsL2phdmFzb2NrLmMJMjAxMS0wOC0xMCAxNjoyMTozMC40NDY3NjUwMDAgLTA3MDAK KysrKyBhbHQtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy9z c2wvamF2YXNvY2suYwkyMDExLTA4LTEwIDE3OjAzOjQ4Ljc2OTIwNjAwMCAtMDcwMAorQEAgLTky LDcgKzkyLDcgQEAgd3JpdGVidWYoSk5JRW52ICplbnYsIFBSRmlsZURlc2MgKmZkLCBqbworICAg ICBqbWV0aG9kSUQgZ2V0T3V0cHV0U3RyZWFtLCB3cml0ZU1ldGhvZDsKKyAgICAgamNsYXNzIHNv Y2tDbGFzcywgb3NDbGFzczsKKyAgICAgam9iamVjdCBvdXRwdXRTdHJlYW07CistICAgIGppbnQg YXJyYXlMZW47CisrICAgIGppbnQgYXJyYXlMZW49LTE7CisgICAgIFBSSW50MzIgcmV0dmFsOwor IAorICAgICAvKgorQEAgLTIxMSw3ICsyMTEsNyBAQCBqc29ja193cml0ZShQUkZpbGVEZXNjICpm ZCwgY29uc3QgUFJJT1ZlCisgICAgIGpvYmplY3Qgc29ja09iajsKKyAgICAgSk5JRW52ICplbnY7 CisgICAgIGpieXRlQXJyYXkgb3V0YnVmQXJyYXk7CistICAgIFBSSW50MzIgcmV0dmFsOworKyAg ICBQUkludDMyIHJldHZhbD0tMTsKKyAKKyAgICAgaWYoIEdFVF9FTlYoZmQtPnNlY3JldC0+amF2 YVZNLCBlbnYpICkgZ290byBmaW5pc2g7CisgCitAQCAtNTAwLDcgKzUwMCw3IEBAIHN0YXRpYyBQ UkludDMyCisganNvY2tfcmVjdihQUkZpbGVEZXNjICpmZCwgdm9pZCAqYnVmLCBQUkludDMyIGFt b3VudCwKKyAgICAgUFJJbnRuIGZsYWdzLCBQUkludGVydmFsVGltZSB0aW1lb3V0KQorIHsKKy0g ICAgUFJJbnQzMiByZXR2YWw7CisrICAgIFBSSW50MzIgcmV0dmFsPS0xOworICAgICBKTklFbnYg KmVudjsKKyAgICAgam9iamVjdCBzb2NrT2JqOworICAgICBqYnl0ZUFycmF5IGJ5dGVBcnJheTsK K0BAIC02MzcsNyArNjM3LDcgQEAgZ2V0SW50UHJvcGVydHkoSk5JRW52ICplbnYsIGpvYmplY3Qg c29jaworIHsKKyAgICAgamNsYXNzIHNvY2tDbGFzczsKKyAgICAgam1ldGhvZElEIG1ldGhvZDsK Ky0gICAgamludCByZXR2YWw7CisrICAgIGppbnQgcmV0dmFsPTA7CisgCisgICAgIHNvY2tDbGFz cyA9ICgqZW52KS0+R2V0T2JqZWN0Q2xhc3MoZW52LCBzb2NrKTsKKyAgICAgaWYoIHNvY2tDbGFz cyA9PSBOVUxMICkgZ290byBmaW5pc2g7CitAQCAtMTAwMSwxMiArMTAwMSw2IEBAIHN0YXRpYyBj b25zdCBQUklPTWV0aG9kcyBqc29ja01ldGhvZHMgPSAKKyAgICAgKFBSUmVzZXJ2ZWRGTikgaW52 YWxpZEludAorIH07CisgCistc3RhdGljIGNvbnN0IFBSSU9NZXRob2RzKgorLWdldEpzb2NrTWV0 aG9kcygpCisteworLSAgICByZXR1cm4gJmpzb2NrTWV0aG9kczsKKy19CistCisgc3RhdGljIHZv aWQKKyBqc29ja0Rlc3RydWN0b3IoUFJGaWxlRGVzYyAqZmQpCisgeworZGlmZiAtcnVwTiBwYXRj aGVkLWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9qc3MvdXRpbC9q c3N1dGlsLmMgYWx0LWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5L2pzcy9vcmcvbW96aWxsYS9q c3MvdXRpbC9qc3N1dGlsLmMKKy0tLSBwYXRjaGVkLWpzcy00LjIuNi9tb3ppbGxhL3NlY3VyaXR5 L2pzcy9vcmcvbW96aWxsYS9qc3MvdXRpbC9qc3N1dGlsLmMJMjAwNC0wNC0yNSAwODowMjoyOS4w MDAwMDAwMDAgLTA3MDAKKysrKyBhbHQtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29y Zy9tb3ppbGxhL2pzcy91dGlsL2pzc3V0aWwuYwkyMDExLTA4LTEwIDE4OjI0OjU4LjQ3MDkzNzAw MCAtMDcwMAorQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkCisgSlNTX3Rocm93TXNnKEpOSUVudiAq ZW52LCBjaGFyICp0aHJvd2FibGVDbGFzc05hbWUsIGNoYXIgKm1lc3NhZ2UpIHsKKyAKKyAgICAg amNsYXNzIHRocm93YWJsZUNsYXNzOworLSAgICBqaW50IHJlc3VsdDsKKysgICAgamludCBWQVJJ QUJMRV9NQVlfTk9UX0JFX1VTRUQgcmVzdWx0OworIAorICAgICAvKiB2YWxpZGF0ZSBhcmd1bWVu dHMgKi8KKyAgICAgUFJfQVNTRVJUKGVudiE9TlVMTCAmJiB0aHJvd2FibGVDbGFzc05hbWUhPU5V TEwgJiYgbWVzc2FnZSE9TlVMTCk7CitAQCAtMTU2LDcgKzE1Niw3IEBAIEpTU190aHJvdyhKTklF bnYgKmVudiwgY2hhciAqdGhyb3dhYmxlQ2wKKyAgICAgamNsYXNzIHRocm93YWJsZUNsYXNzOwor ICAgICBqb2JqZWN0IHRocm93YWJsZTsKKyAgICAgam1ldGhvZElEIGNvbnN0cnVjdG9yOworLSAg ICBqaW50IHJlc3VsdDsKKysgICAgamludCBWQVJJQUJMRV9NQVlfTk9UX0JFX1VTRUQgcmVzdWx0 OworICAgICAKKyAgICAgUFJfQVNTRVJUKCAoKmVudiktPkV4Y2VwdGlvbk9jY3VycmVkKGVudikg PT0gTlVMTCApOworIAorQEAgLTIyMiw3ICsyMjIsOSBAQCBKU1NfdGhyb3coSk5JRW52ICplbnYs IGNoYXIgKnRocm93YWJsZUNsCisgUFJTdGF0dXMKKyBKU1NfZ2V0UHRyRnJvbVByb3h5KEpOSUVu diAqZW52LCBqb2JqZWN0IG5hdGl2ZVByb3h5LCB2b2lkICoqcHRyKQorIHsKKysjaWZkZWYgREVC VUcKKyAgICAgamNsYXNzIG5hdGl2ZVByb3h5Q2xhc3M7CisrI2VuZGlmCisgCWpjbGFzcyBwcm94 eUNsYXNzOworICAgICBqZmllbGRJRCBieXRlQXJyYXlGaWVsZDsKKyAgICAgamJ5dGVBcnJheSBi eXRlQXJyYXk7CitAQCAtNzQ1LDcgKzc0Nyw3IEBAIEpTU190cmFjZShKTklFbnYgKmVudiwgamlu dCBsZXZlbCwgY2hhciAKKyB2b2lkCisgSlNTX2Fzc2VydE91dE9mTWVtKEpOSUVudiAqZW52KQor IHsKKy0gICAgamNsYXNzIG1lbUVyckNsYXNzOworKyAgICBqY2xhc3MgVkFSSUFCTEVfTUFZX05P VF9CRV9VU0VEIG1lbUVyckNsYXNzOworICAgICBqdGhyb3dhYmxlIGV4Y2VwOworIAorICAgICBQ Ul9BU1NFUlQoZW52ICE9IE5VTEwpOworQEAgLTgwNCw3ICs4MDYsNyBAQCBKU1NfU0VDSXRlbVRv Qnl0ZUFycmF5KEpOSUVudiAqZW52LCBTRUNJCisgICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICAg fQorIAorLSAgICAoKmVudiktPlNldEJ5dGVBcnJheVJlZ2lvbihlbnYsIGFycmF5LCAwLCBpdGVt LT5sZW4sIGl0ZW0tPmRhdGEpOworKyAgICAoKmVudiktPlNldEJ5dGVBcnJheVJlZ2lvbihlbnYs IGFycmF5LCAwLCBpdGVtLT5sZW4sIChqYnl0ZSopaXRlbS0+ZGF0YSk7CisgCisgZmluaXNoOgor ICAgICByZXR1cm4gYXJyYXk7CitkaWZmIC1ydXBOIHBhdGNoZWQtanNzLTQuMi42L21vemlsbGEv c2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy91dGlsL2pzc3V0aWwuaCBhbHQtanNzLTQuMi42 L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy91dGlsL2pzc3V0aWwuaAorLS0t IHBhdGNoZWQtanNzLTQuMi42L21vemlsbGEvc2VjdXJpdHkvanNzL29yZy9tb3ppbGxhL2pzcy91 dGlsL2pzc3V0aWwuaAkyMDA0LTA0LTI1IDA4OjAyOjI5LjAwMDAwMDAwMCAtMDcwMAorKysrIGFs dC1qc3MtNC4yLjYvbW96aWxsYS9zZWN1cml0eS9qc3Mvb3JnL21vemlsbGEvanNzL3V0aWwvanNz dXRpbC5oCTIwMTEtMDgtMTEgMTg6MTI6NTYuOTI2MDk4MDAwIC0wNzAwCitAQCAtMzYsNiArMzYs MTkgQEAKKyAjaWZuZGVmIEpTU19OQVRJVkVfVVRJTF9ICisgI2RlZmluZSBKU1NfTkFUSVZFX1VU SUxfSAorIAorKy8qIFRoZSBmb2xsb3dpbmcgI2RlZmluZXMgYXJlIHVzZWQgdG8gc3VwcHJlc3Mg dW5kZXNpcmVkIGNvbXBpbGVyIHdhcm5pbmdzCisrICogdGhhdCBoYXZlIGJlZW4gZGVlbWVkIGlu YXBwcm9wcmlhdGUuCisrICoKKysgKiBJTVBPUlRBTlQ6ICBUaGVzZSBhcmUgT05MWSB1c2VkIG9u IGFuICJhcy1uZWVkZWQiIGJhc2lzIQorKyAqLworKyNpZmRlZiBfX0dOVUNfXworKyNkZWZpbmUg RlVOQ1RJT05fTUFZX05PVF9CRV9VU0VEIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKQorKyNkZWZp bmUgVkFSSUFCTEVfTUFZX05PVF9CRV9VU0VEIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKQorKyNl bHNlCisrI2RlZmluZSBGVU5DVElPTl9NQVlfTk9UX0JFX1VTRUQKKysjZGVmaW5lIFZBUklBQkxF X01BWV9OT1RfQkVfVVNFRAorKyNlbmRpZgorKworIC8qIE5lZWQgdG8gaW5jbHVkZSB0aGVzZSBm aXJzdC4KKyAgKiAjaW5jbHVkZSA8bnNwci5oPgorICAqICNpbmNsdWRlIDxqbmkuaD4KCmRpZmYg LS1naXQgYS9qc3Muc3BlYyBiL2pzcy5zcGVjCmluZGV4IGQ2OWU2YTAuLjEzYjI5YzAgMTAwNjQ0 Ci0tLSBhL2pzcy5zcGVjCisrKyBiL2pzcy5zcGVjCkBAIC0xLDYgKzEsNiBAQAogTmFtZTogICAg ICAgICAgIGpzcwogVmVyc2lvbjogICAgICAgIDQuMi42Ci1SZWxlYXNlOiAgICAgICAgMTclez9k aXN0fQorUmVsZWFzZTogICAgICAgIDE5LjElez9kaXN0fQogU3VtbWFyeTogICAgICAgIEphdmEg U2VjdXJpdHkgU2VydmljZXMgKEpTUykKIAogR3JvdXA6ICAgICAgICAgIFN5c3RlbSBFbnZpcm9u bWVudC9MaWJyYXJpZXMKQEAgLTM0LDYgKzM0LDkgQEAgUGF0Y2g5OiAgICAgICAgIGpzcy1iYWQt ZXJyb3Itc3RyaW5nLXBvaW50ZXIucGF0Y2gKIFBhdGNoMTA6ICAgICAgICBqc3MtVmVyaWZ5Q2Vy dGlmaWNhdGVSZXR1cm5DVS5wYXRjaAogI1BhdGNoMTE6ICAgICAgICBqc3Mtc2xvdHMtbm90LWZy ZWVkLnBhdGNoCiBQYXRjaDEyOiAgICAgICAganNzLUVDQy1IU00tRklQUy5wYXRjaAorUGF0Y2gx MzogICAgICAgIGpzcy1lbGltaW5hdGUtbmF0aXZlLWNvbXBpbGVyLXdhcm5pbmdzLnBhdGNoCitQ YXRjaDE0OiAgICAgICAganNzLWVsaW1pbmF0ZS1qYXZhLWNvbXBpbGVyLXdhcm5pbmdzLnBhdGNo CitQYXRjaDE1OiAgICAgICAganNzLVBLQ1MxMi1GSVBTLnBhdGNoCiAKIAogJWRlc2NyaXB0aW9u CkBAIC02Myw2ICs2Niw5IEBAIFRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgQVBJIGRvY3VtZW50 YXRpb24gZm9yIEpTUy4KICVwYXRjaDEwIC1wMQogIyVwYXRjaDExIC1wMQogJXBhdGNoMTIgLXAx CislcGF0Y2gxMyAtcDEKKyVwYXRjaDE0IC1wMQorJXBhdGNoMTUgLXAxCiAKICVidWlsZAogWyAt eiAiJEpBVkFfSE9NRSIgXSAmJiBleHBvcnQgSkFWQV9IT01FPSV7X2p2bWRpcn0vamF2YQpAQCAt OTcsNiArMTAzLDExIEBAIFVTRV82ND0xCiBleHBvcnQgVVNFXzY0CiAlZW5kaWYKIAorJWlmIDAl ez9mZWRvcmF9ID49IDE2CitjcCAtcCBtb3ppbGxhL3NlY3VyaXR5L2NvcmVjb25mL0xpbnV4Mi42 Lm1rIG1vemlsbGEvc2VjdXJpdHkvY29yZWNvbmYvTGludXgzLjEubWsgCitzZWQgLWkgLWUgJ3M7 TElOVVgyXzE7TElOVVgzXzE7JyBtb3ppbGxhL3NlY3VyaXR5L2NvcmVjb25mL0xpbnV4My4xLm1r CislZW5kaWYKKwogIyBUaGUgTWFrZWZpbGUgaXMgbm90IHRocmVhZC1zYWZlCiBtYWtlIC1DIG1v emlsbGEvc2VjdXJpdHkvY29yZWNvbmYKIG1ha2UgLUMgbW96aWxsYS9zZWN1cml0eS9qc3MKQEAg LTExMywxMiArMTI0LDE3IEBAIGNwIC1wICV7U09VUkNFM30gLgogIyBUaGVyZSBpcyBubyBpbnN0 YWxsIHRhcmdldCBzbyB3ZSdsbCBkbyBpdCBieSBoYW5kCiAKICMgamFycworJWlmIDAlez9mZWRv cmF9ID49IDE2CitpbnN0YWxsIC1kIC1tIDA3NTUgJFJQTV9CVUlMRF9ST09UJXtfam5pZGlyfQor aW5zdGFsbCAtbSA2NDQgbW96aWxsYS9kaXN0L3hwY2xhc3MuamFyICR7UlBNX0JVSUxEX1JPT1R9 JXtfam5pZGlyfS9qc3M0LmphcgorJWVsc2UKIGluc3RhbGwgLWQgLW0gMDc1NSAkUlBNX0JVSUxE X1JPT1Qle19saWJkaXJ9L2pzcwogaW5zdGFsbCAtbSA2NDQgbW96aWxsYS9kaXN0L3hwY2xhc3Mu amFyICR7UlBNX0JVSUxEX1JPT1R9JXtfbGliZGlyfS9qc3MvanNzNC0le3ZlcnNpb259Lmphcgog bG4gLWZzIGpzczQtJXt2ZXJzaW9ufS5qYXIgJFJQTV9CVUlMRF9ST09UJXtfbGliZGlyfS9qc3Mv anNzNC5qYXIKIAogaW5zdGFsbCAtZCAtbSAwNzU1ICRSUE1fQlVJTERfUk9PVCV7X2puaWRpcn0K IGxuIC1mcyAle19saWJkaXJ9L2pzcy9qc3M0LmphciAkUlBNX0JVSUxEX1JPT1Qle19qbmlkaXJ9 L2pzczQuamFyCislZW5kaWYKIAogIyBXZSBoYXZlIHRvIHVzZSB0aGUgbmFtZSBsaWJqc3M0LnNv IGJlY2F1c2UgdGhpcyBpcyBkeW5hbWljYWxseQogIyBsb2FkZWQgYnkgdGhlIGphciBmaWxlLgpA QCAtMTQ2LDYgKzE2MiwxNyBAQCBybSAtcmYgJFJQTV9CVUlMRF9ST09UCiAKIAogJWNoYW5nZWxv ZworKiBXZWQgQXVnIDMxIDIwMTEgTWF0dGhldyBIYXJtc2VuIDxtaGFybXNlbkByZWRoYXQuY29t PiAtIDQuMi42LTE5LjEKKy0gQnVnemlsbGEgQnVnICM3MzQ1OTAgLSBSZWZhY3RvciBKTkkgbGli cmFyaWVzIGZvciBGZWRvcmEgMTYrIC4gLiAuCisKKyogTW9uIEF1ZyAxNSAyMDExIENocmlzdGlu YSBGdSA8Y2Z1QHJlZGhhdC5jb20+IC0gNC4yLjYtMTkKKy0gQnVnemlsbGEgQnVnIDczMzU1MCAt IERSTSBmYWlsZWQgdG8gcmVjb3Zlcnkga2V5cyB3aGVuIGluIEZJUFMgbW9kZQorICAoSFNNICsg TlNTKQorCisqIEZyaSBBdWcgMTIgMjAxMSBNYXR0aGV3IEhhcm1zZW4gPG1oYXJtc2VuQHJlZGhh dC5jb20+IC0gNC4yLjYtMTgKKy0gQnVnemlsbGEgQnVnICM2NjA0MzYgLSBXYXJuaW5ncyBzaG91 bGQgYmUgY2xlYW5lZCB1cCBpbiBKU1MgYnVpbGQKKyAgKGpkZW5uaXMsIG1oYXJtc2VuKQorCiAq IFdlZCBNYXkgMTggMjAxMSBDaHJpc3RpbmEgRnUgPGNmdUByZWRoYXQuY29tPiAtIDQuMi42LTE3 CiAtIEJ1ZyA2NzA5ODAgLSBDYW5ub3QgY3JlYXRlIHN5c3RlbSBjZXJ0cyB3aGVuIHVzaW5nIEx1 bmFTQSBIU00gaW4gRklQUyBNb2RlCiAgIGFuZCBFQ0MgYWxnb3JpdGhtcyAoc3VwcG9ydCB0b2tl bnMgdGhhdCBkb24ndCBkbyBFQ0RIKQo=