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: Deleted upstreamed patches Date: Sun, 31 May 2026 02:06:57 GMT Message-ID: <178019321700.1.14459109162438851166.rpms-ibus-3032216b57aa@fedoraproject.org> List-ID: X-Git-Repo: rpms/ibus X-Git-Branch: autotool X-Git-Rev: 3032216b57aac3d11c9d6323228d7a58a8b309aa QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvaWJ1cwpCcmFuY2gg OiBhdXRvdG9vbApDb21taXQgOiAzMDMyMjE2YjU3YWFjM2QxMWM5ZDYzMjMyMjhkN2E1OGE4YjMw OWFhCkF1dGhvciA6IFRha2FvIEZ1aml3YXJhIDx0ZnVqaXdhckByZWRoYXQuY29tPgpEYXRlICAg OiAyMDE4LTA4LTA4VDIwOjA3OjM5KzA5OjAwClN0YXRzICA6ICswLy0xMTI0MSBpbiAxIGZpbGUo cykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9pYnVzL2MvMzAz MjIxNmI1N2FhYzNkMTFjOWQ2MzIzMjI4ZDdhNThhOGIzMDlhYT9icmFuY2g9YXV0b3Rvb2wKCkxv ZzoKRGVsZXRlZCB1cHN0cmVhbWVkIHBhdGNoZXMKCi0tLQpkaWZmIC0tZ2l0IGEvaWJ1cy1IRUFE LnBhdGNoIGIvaWJ1cy1IRUFELnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw ZjlhNWM4Li4wMDAwMDAwCi0tLSBhL2lidXMtSEVBRC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDExMjQxICswLDAgQEAKLUZyb20gYzY0MzlkNzRkNTQ3MmM5NWRlNGQ1YzJjZGM2NDg3YmZkNTA4 ZTNkOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVq aXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMTUgTWFyIDIwMTggMTY6NTc6MDIgKzA5MDAK LVN1YmplY3Q6IFtQQVRDSF0gdWkvZ3RrMzogQWRkIG51bSBwYWQgRW50ZXIsIERvd24sIFVwLCBM ZWZ0LCBSaWdodCBvbiBFbW9qaWVyCi0KLUJVRz1yaGJ6IzE1NTQ4MTMKLVI9U2hhd24uUC5IdWFu Z0BnbWFpbC5jb20KLQotUmV2aWV3IFVSTDogaHR0cHM6Ly9jb2RlcmV2aWV3LmFwcHNwb3QuY29t LzMzNzY5MDA0MwotLS0tCi0gdWkvZ3RrMy9lbW9qaWVyLnZhbGEgfCAyNSArKysrKysrKysrKysr KysrKy0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDggZGVsZXRp b25zKC0pCi0KLWRpZmYgLS1naXQgYS91aS9ndGszL2Vtb2ppZXIudmFsYSBiL3VpL2d0azMvZW1v amllci52YWxhCi1pbmRleCA4NzA3ZTQzMi4uMjQwMjk3MDMgMTAwNjQ0Ci0tLS0gYS91aS9ndGsz L2Vtb2ppZXIudmFsYQotKysrIGIvdWkvZ3RrMy9lbW9qaWVyLnZhbGEKLUBAIC0xOTE4LDYgKzE5 MTgsNyBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cg ewotICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICBicmVhazsKLSAg ICAgICAgIGNhc2UgR2RrLktleS5SZXR1cm46Ci0rICAgICAgICBjYXNlIEdkay5LZXkuS1BfRW50 ZXI6Ci0gICAgICAgICAgICAga2V5X3ByZXNzX2VudGVyKCk7Ci0gICAgICAgICAgICAgcmV0dXJu IHRydWU7Ci0gICAgICAgICBjYXNlIEdkay5LZXkuQmFja1NwYWNlOgotQEAgLTE5NTksMjkgKzE5 NjAsMzcgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93 IHsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICBj YXNlIEdkay5LZXkuUmlnaHQ6Ci0tICAgICAgICAgICAga2V5X3ByZXNzX2N1cnNvcl9ob3Jpem9u dGFsKGtleXZhbCwgbW9kaWZpZXJzKTsKLSsgICAgICAgIGNhc2UgR2RrLktleS5LUF9SaWdodDoK LSsgICAgICAgICAgICBrZXlfcHJlc3NfY3Vyc29yX2hvcml6b250YWwoR2RrLktleS5SaWdodCwg bW9kaWZpZXJzKTsKLSAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgIGNhc2UgR2Rr LktleS5MZWZ0OgotLSAgICAgICAgICAgIGtleV9wcmVzc19jdXJzb3JfaG9yaXpvbnRhbChrZXl2 YWwsIG1vZGlmaWVycyk7Ci0rICAgICAgICBjYXNlIEdkay5LZXkuS1BfTGVmdDoKLSsgICAgICAg ICAgICBrZXlfcHJlc3NfY3Vyc29yX2hvcml6b250YWwoR2RrLktleS5MZWZ0LCBtb2RpZmllcnMp OwotICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgY2FzZSBHZGsuS2V5LkRvd246 Ci0tICAgICAgICAgICAga2V5X3ByZXNzX2N1cnNvcl92ZXJ0aWNhbChrZXl2YWwsIG1vZGlmaWVy cyk7Ci0rICAgICAgICBjYXNlIEdkay5LZXkuS1BfRG93bjoKLSsgICAgICAgICAgICBrZXlfcHJl c3NfY3Vyc29yX3ZlcnRpY2FsKEdkay5LZXkuRG93biwgbW9kaWZpZXJzKTsKLSAgICAgICAgICAg ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgIGNhc2UgR2RrLktleS5VcDoKLS0gICAgICAgICAgICBr ZXlfcHJlc3NfY3Vyc29yX3ZlcnRpY2FsKGtleXZhbCwgbW9kaWZpZXJzKTsKLSsgICAgICAgIGNh c2UgR2RrLktleS5LUF9VcDoKLSsgICAgICAgICAgICBrZXlfcHJlc3NfY3Vyc29yX3ZlcnRpY2Fs KEdkay5LZXkuVXAsIG1vZGlmaWVycyk7Ci0gICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg ICAgICBjYXNlIEdkay5LZXkuUGFnZV9Eb3duOgotLSAgICAgICAgICAgIGtleV9wcmVzc19jdXJz b3JfdmVydGljYWwoa2V5dmFsLCBtb2RpZmllcnMpOwotKyAgICAgICAgY2FzZSBHZGsuS2V5LktQ X1BhZ2VfRG93bjoKLSsgICAgICAgICAgICBrZXlfcHJlc3NfY3Vyc29yX3ZlcnRpY2FsKEdkay5L ZXkuUGFnZV9Eb3duLCBtb2RpZmllcnMpOwotICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg ICAgICAgY2FzZSBHZGsuS2V5LlBhZ2VfVXA6Ci0tICAgICAgICAgICAga2V5X3ByZXNzX2N1cnNv cl92ZXJ0aWNhbChrZXl2YWwsIG1vZGlmaWVycyk7Ci0rICAgICAgICBjYXNlIEdkay5LZXkuS1Bf UGFnZV9VcDoKLSsgICAgICAgICAgICBrZXlfcHJlc3NfY3Vyc29yX3ZlcnRpY2FsKEdkay5LZXku UGFnZV9VcCwgbW9kaWZpZXJzKTsKLSAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg IGNhc2UgR2RrLktleS5Ib21lOgotLSAgICAgICAgICAgIGlmIChrZXlfcHJlc3NfY3Vyc29yX2hv bWVfZW5kKGtleXZhbCwgbW9kaWZpZXJzKSkKLSsgICAgICAgIGNhc2UgR2RrLktleS5LUF9Ib21l OgotKyAgICAgICAgICAgIGlmIChrZXlfcHJlc3NfY3Vyc29yX2hvbWVfZW5kKEdkay5LZXkuSG9t ZSwgbW9kaWZpZXJzKSkKLSAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAg ICAgYnJlYWs7Ci0gICAgICAgICBjYXNlIEdkay5LZXkuRW5kOgotLSAgICAgICAgICAgIGlmIChr ZXlfcHJlc3NfY3Vyc29yX2hvbWVfZW5kKGtleXZhbCwgbW9kaWZpZXJzKSkKLSsgICAgICAgIGNh c2UgR2RrLktleS5LUF9FbmQ6Ci0rICAgICAgICAgICAgaWYgKGtleV9wcmVzc19jdXJzb3JfaG9t ZV9lbmQoR2RrLktleS5FbmQsIG1vZGlmaWVycykpCi0gICAgICAgICAgICAgICAgIHJldHVybiB0 cnVlOwotICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgY2FzZSBHZGsuS2V5Lkluc2VydDoK LS0tIAotMi4xNC4zCi0KLUZyb20gYjE4NDg2MTM5NjI3OWQ5MDNlNjJiZjZhYWQyNzFhMjIwNWE3 OTgzMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVq aXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMzAgTWFyIDIwMTggMTI6MzM6NTkgKzA5MDAK LVN1YmplY3Q6IFtQQVRDSF0gdWkvZ3RrMzogU29ydCBVbmljb2RlIGNhbmRpZGF0ZXMKLQotQlVH PXJoYnojMTU1NDcxNAotUj1TaGF3bi5QLkh1YW5nQGdtYWlsLmNvbQotCi1SZXZpZXcgVVJMOiBo dHRwczovL2NvZGVyZXZpZXcuYXBwc3BvdC5jb20vMzM5NDMwMDQzCi0tLS0KLSB1aS9ndGszL2Vt b2ppZXIudmFsYSB8IDI2ICsrKysrKysrKysrKysrKysrKysrKysrLS0tCi0gMSBmaWxlIGNoYW5n ZWQsIDIzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS91aS9n dGszL2Vtb2ppZXIudmFsYSBiL3VpL2d0azMvZW1vamllci52YWxhCi1pbmRleCAyNDAyOTcwMy4u MGMwODY1ZjEgMTAwNjQ0Ci0tLS0gYS91aS9ndGszL2Vtb2ppZXIudmFsYQotKysrIGIvdWkvZ3Rr My9lbW9qaWVyLnZhbGEKLUBAIC0xMTQ0LDkgKzExNDQsMTEgQEAgcHVibGljIGNsYXNzIElCdXNF bW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKLSAgICAgbG9va3VwX2Vtb2ppc19mcm9t X2Fubm90YXRpb24oc3RyaW5nIGFubm90YXRpb24pIHsKLSAgICAgICAgIEdMaWIuU0xpc3Q8c3Ry aW5nPj8gdG90YWxfZW1vamlzID0gbnVsbDsKLSAgICAgICAgIHVub3duZWQgR0xpYi5TTGlzdDxz dHJpbmc+PyBzdWJfZW1vamlzID0gbnVsbDsKLSsgICAgICAgIHVub3duZWQgR0xpYi5TTGlzdDx1 bmljaGFyPj8gc3ViX2V4YWN0X3VuaWNvZGVzID0gbnVsbDsKLSAgICAgICAgIHVub3duZWQgR0xp Yi5TTGlzdDx1bmljaGFyPj8gc3ViX3VuaWNvZGVzID0gbnVsbDsKLSAgICAgICAgIGludCBsZW5n dGggPSBhbm5vdGF0aW9uLmxlbmd0aDsKLSAgICAgICAgIGlmIChtX2hhc19wYXJ0aWFsX21hdGNo ICYmIGxlbmd0aCA+PSBtX3BhcnRpYWxfbWF0Y2hfbGVuZ3RoKSB7Ci0rICAgICAgICAgICAgR0xp Yi5TTGlzdDxzdHJpbmc+PyBzb3J0ZWRfZW1vamlzID0gbnVsbDsKLSAgICAgICAgICAgICBmb3Jl YWNoICh1bm93bmVkIHN0cmluZyBrZXkgaW4KLSAgICAgICAgICAgICAgICAgICAgICBtX2Fubm90 YXRpb25fdG9fZW1vamlzX2RpY3QuZ2V0X2tleXMoKSkgewotICAgICAgICAgICAgICAgICBpZiAo a2V5Lmxlbmd0aCA8IGxlbmd0aCkKLUBAIC0xMTczLDE2ICsxMTc1LDI5IEBAIHB1YmxpYyBjbGFz cyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7Ci0gICAgICAgICAgICAgICAg IHN1Yl9lbW9qaXMgPSBtX2Fubm90YXRpb25fdG9fZW1vamlzX2RpY3QubG9va3VwKGtleSk7Ci0g ICAgICAgICAgICAgICAgIGZvcmVhY2ggKHVub3duZWQgc3RyaW5nIGVtb2ppIGluIHN1Yl9lbW9q aXMpIHsKLSAgICAgICAgICAgICAgICAgICAgIGlmICh0b3RhbF9lbW9qaXMuZmluZF9jdXN0b20o ZW1vamksIEdMaWIuc3RyY21wKSA9PSBudWxsKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAg dG90YWxfZW1vamlzLmFwcGVuZChlbW9qaSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgc29y dGVkX2Vtb2ppcy5pbnNlcnRfc29ydGVkKGVtb2ppLCBHTGliLnN0cmNtcCk7Ci0gICAgICAgICAg ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICB9Ci0rICAgICAg ICAgICAgZm9yZWFjaCAoc3RyaW5nIGVtb2ppIGluIHNvcnRlZF9lbW9qaXMpIHsKLSsgICAgICAg ICAgICAgICAgaWYgKHRvdGFsX2Vtb2ppcy5maW5kX2N1c3RvbShlbW9qaSwgR0xpYi5zdHJjbXAp ID09IG51bGwpIHsKLSsgICAgICAgICAgICAgICAgICAgIHRvdGFsX2Vtb2ppcy5hcHBlbmQoZW1v amkpOwotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgfQotICAgICAgICAgfSBlbHNl IHsKLSAgICAgICAgICAgICBzdWJfZW1vamlzID0gbV9hbm5vdGF0aW9uX3RvX2Vtb2ppc19kaWN0 Lmxvb2t1cChhbm5vdGF0aW9uKTsKLSAgICAgICAgICAgICBmb3JlYWNoICh1bm93bmVkIHN0cmlu ZyBlbW9qaSBpbiBzdWJfZW1vamlzKQotICAgICAgICAgICAgICAgICB0b3RhbF9lbW9qaXMuYXBw ZW5kKGVtb2ppKTsKLSAgICAgICAgIH0KLSsgICAgICAgIHN1Yl9leGFjdF91bmljb2RlcyA9IG1f bmFtZV90b191bmljb2Rlc19kaWN0Lmxvb2t1cChhbm5vdGF0aW9uKTsKLSsgICAgICAgIGZvcmVh Y2ggKHVuaWNoYXIgY29kZSBpbiBzdWJfZXhhY3RfdW5pY29kZXMpIHsKLSsgICAgICAgICAgICBz dHJpbmcgY2ggPSBjb2RlLnRvX3N0cmluZygpOwotKyAgICAgICAgICAgIGlmICh0b3RhbF9lbW9q aXMuZmluZF9jdXN0b20oY2gsIEdMaWIuc3RyY21wKSA9PSBudWxsKSB7Ci0rICAgICAgICAgICAg ICAgIHRvdGFsX2Vtb2ppcy5hcHBlbmQoY2gpOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgIH0K LSAgICAgICAgIGlmIChsZW5ndGggPj0gbV9wYXJ0aWFsX21hdGNoX2xlbmd0aCkgewotKyAgICAg ICAgICAgIEdMaWIuU0xpc3Q8c3RyaW5nPj8gc29ydGVkX3VuaWNvZGVzID0gbnVsbDsKLSAgICAg ICAgICAgICBmb3JlYWNoICh1bm93bmVkIHN0cmluZyBrZXkgaW4gbV9uYW1lX3RvX3VuaWNvZGVz X2RpY3QuZ2V0X2tleXMoKSkgewotICAgICAgICAgICAgICAgICBib29sIG1hdGNoZWQgPSBmYWxz ZTsKLSAgICAgICAgICAgICAgICAgaWYgKGtleS5pbmRleF9vZihhbm5vdGF0aW9uKSA+PSAwKQot QEAgLTExOTIsMTEgKzEyMDcsMTYgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFw cGxpY2F0aW9uV2luZG93IHsKLSAgICAgICAgICAgICAgICAgc3ViX3VuaWNvZGVzID0gbV9uYW1l X3RvX3VuaWNvZGVzX2RpY3QubG9va3VwKGtleSk7Ci0gICAgICAgICAgICAgICAgIGZvcmVhY2gg KHVuaWNoYXIgY29kZSBpbiBzdWJfdW5pY29kZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgIHN0 cmluZyBjaCA9IGNvZGUudG9fc3RyaW5nKCk7Ci0tICAgICAgICAgICAgICAgICAgICBpZiAodG90 YWxfZW1vamlzLmZpbmRfY3VzdG9tKGNoLCBHTGliLnN0cmNtcCkgPT0gbnVsbCkgewotLSAgICAg ICAgICAgICAgICAgICAgICAgIHRvdGFsX2Vtb2ppcy5hcHBlbmQoY2gpOwotKyAgICAgICAgICAg ICAgICAgICAgaWYgKHNvcnRlZF91bmljb2Rlcy5maW5kX2N1c3RvbShjaCwgR0xpYi5zdHJjbXAp ID09IG51bGwpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWRfdW5pY29kZXMuaW5z ZXJ0X3NvcnRlZChjaCwgR0xpYi5zdHJjbXApOwotICAgICAgICAgICAgICAgICAgICAgfQotICAg ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgfQotKyAgICAgICAgICAgIGZvcmVhY2ggKHN0 cmluZyBjaCBpbiBzb3J0ZWRfdW5pY29kZXMpIHsKLSsgICAgICAgICAgICAgICAgaWYgKHRvdGFs X2Vtb2ppcy5maW5kX2N1c3RvbShjaCwgR0xpYi5zdHJjbXApID09IG51bGwpIHsKLSsgICAgICAg ICAgICAgICAgICAgIHRvdGFsX2Vtb2ppcy5hcHBlbmQoY2gpOwotKyAgICAgICAgICAgICAgICB9 Ci0rICAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgICAgcmV0dXJuIHRvdGFsX2Vtb2pp czsKLSAgICAgfQotLS0gCi0yLjE0LjMKLQotRnJvbSA1Nzg4YmU4MDY4NWYzOTdjM2RiM2JkZjRl NjcyZDY3Y2ZiOWIzNDMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmVyZW15IEJp Y2hhIDxqYmljaGFAdWJ1bnR1LmNvbT4KLURhdGU6IEZyaSwgMzAgTWFyIDIwMTggMTI6Mzc6Mjcg KzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IHVjZCBkaXJlY3Rvcnkgb3ZlcnJpZGUKLQotQlVH PWh0dHBzOi8vZ2l0aHViLmNvbS9pYnVzL2lidXMvcHVsbC8xOTk1Ci1SPVNoYXduLlAuSHVhbmdA Z21haWwuY29tCi0KLVJldmlldyBVUkw6IGh0dHBzOi8vY29kZXJldmlldy5hcHBzcG90LmNvbS8z Mzk0NTAwNDMKLQotUGF0Y2ggZnJvbSBKZXJlbXkgQmljaGEgPGpiaWNoYUB1YnVudHUuY29tPi4K LS0tLQotIGNvbmZpZ3VyZS5hYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3Vy ZS5hYwotaW5kZXggNmMwMDgwM2YuLmQxOWFhODc0IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFj Ci0rKysgYi9jb25maWd1cmUuYWMKLUBAIC02NjYsNyArNjY2LDcgQEAgQUNfQVJHX1dJVEgodWNk LWRpciwKLSAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC11Y2QtZGlyWz1ESVJdXSwKLSAgICAg ICAgIFtTZXQgdGhlIGRpcmVjdG9yeSBvZiBVQ0QgKFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNl KSBmaWxlcy4KLSAgICAgICAgICAoZGVmYXVsdDogIi91c3Ivc2hhcmUvdW5pY29kZS91Y2QiKV0p LAotLSAgICBVQ0RfRElSPSR3aXRoX2Vtb2ppX2Fubm90YXRpb25fZGlyLAotKyAgICBVQ0RfRElS PSR3aXRoX3VjZF9kaXIsCi0gICAgIFVDRF9ESVI9Ii91c3Ivc2hhcmUvdW5pY29kZS91Y2QiCi0g KQotIEFDX1NVQlNUKFVDRF9ESVIpCi0tLSAKLTIuMTQuMwotCi1Gcm9tIDc1YTY2NjdiNmFkOGM4 Y2I4MDFjYjE2MGI3YjA0NjI1MzM0ZjkwOTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9t OiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDUgQXBy IDIwMTggMTY6NTQ6NDEgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gc3JjL3Rlc3RzOiBGaXggaWJ1 cy1jb21wb3NlIGZvciB0aGUgbGF0ZXN0IEdUSwotCi0tLS0KLSBzcmMvdGVzdHMvaWJ1cy1jb21w b3NlLmMgfCAxNyArKysrKysrKysrKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCAxNSBpbnNlcnRp b25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3Rlc3RzL2lidXMtY29t cG9zZS5jIGIvc3JjL3Rlc3RzL2lidXMtY29tcG9zZS5jCi1pbmRleCBlYjdiOWYxOS4uYWFiYjM2 YWMgMTAwNjQ0Ci0tLS0gYS9zcmMvdGVzdHMvaWJ1cy1jb21wb3NlLmMKLSsrKyBiL3NyYy90ZXN0 cy9pYnVzLWNvbXBvc2UuYwotQEAgLTIsNiArMiwxMCBAQAotICNpbmNsdWRlICJpYnVzLmgiCi0g I2luY2x1ZGUgImlidXNjb21wb3NldGFibGUuaCIKLSAKLSsjZGVmaW5lIEdSRUVOICJcMDMzWzA7 MzJtIgotKyNkZWZpbmUgUkVEICAgIlwwMzNbMDszMW0iCi0rI2RlZmluZSBOQyAgICAiXDAzM1sw bSIKLSsKLSBJQnVzQnVzICptX2J1czsKLSBJQnVzQ29tcG9zZVRhYmxlICptX2NvbXBvc2VfdGFi bGU7Ci0gSUJ1c0VuZ2luZSAqbV9lbmdpbmU7Ci1AQCAtMTcyLDcgKzE3NiwxMiBAQCB3aW5kb3df aW5zZXJ0ZWRfdGV4dF9jYiAoR3RrRW50cnlCdWZmZXIgKmJ1ZmZlciwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgIG5jaGFycywKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgZ3BvaW50ZXIgICAgICAgIGRhdGEpCi0gewotKy8qIGh0dHBzOi8vZ2l0bGFiLmdub21l Lm9yZy9HTk9NRS9ndGsvY29tbWl0Lzk5ODFmNDZlMGIKLSsgKiBUaGUgbGF0ZXN0IEdUSyBkb2Vz IG5vdCBlbWl0ICJpbnNlcnRlZC10ZXh0IiB3aGVuIHRoZSB0ZXh0IGlzICIiLgotKyAqLwotKyNp ZiAhR1RLX0NIRUNLX1ZFUlNJT04gKDMsIDIyLCAxNikKLSAgICAgc3RhdGljIGludCBuX2xvb3Ag PSAwOwotKyNlbmRpZgotICAgICBzdGF0aWMgZ3VpbnQgc3RyaWRlID0gMDsKLSAgICAgZ3VpbnQg aTsKLSAgICAgaW50IHNlcTsKLUBAIC0xODIsMTYgKzE5MSwxOCBAQCB3aW5kb3dfaW5zZXJ0ZWRf dGV4dF9jYiAoR3RrRW50cnlCdWZmZXIgKmJ1ZmZlciwKLSAKLSAgICAgZ19hc3NlcnQgKG1fY29t cG9zZV90YWJsZSAhPSBOVUxMKTsKLSAKLSsjaWYgIUdUS19DSEVDS19WRVJTSU9OICgzLCAyMiwg MTYpCi0gICAgIGlmIChuX2xvb3AgJSAyID09IDEpIHsKLSAgICAgICAgIG5fbG9vcCA9IDA7Ci0g ICAgICAgICByZXR1cm47Ci0gICAgIH0KLSsjZW5kaWYKLSAgICAgaSA9IHN0cmlkZSArIChtX2Nv bXBvc2VfdGFibGUtPm1heF9zZXFfbGVuICsgMikgLSAxOwotICAgICBzZXEgPSAoaSArIDEpIC8g KG1fY29tcG9zZV90YWJsZS0+bWF4X3NlcV9sZW4gKyAyKTsKLSAgICAgaWYgKG1fY29tcG9zZV90 YWJsZS0+ZGF0YVtpXSA9PSBjb2RlKSB7Ci0tICAgICAgICB0ZXN0ID0gIk9LIjsKLSsgICAgICAg IHRlc3QgPSBHUkVFTiAiUEFTUyIgTkM7Ci0gICAgIH0gZWxzZSB7Ci0tICAgICAgICB0ZXN0ID0g Ik5HIjsKLSsgICAgICAgIHRlc3QgPSBSRUQgIkZBSUwiIE5DOwotICAgICAgICAgbV9yZXR2YWwg PSAtMTsKLSAgICAgfQotICAgICBnX3ByaW50ICgiJTA1ZC8lMDVkICVzIGV4cGVjdGVkOiAlMDRY IHR5cGVkOiAlMDRYXG4iLAotQEAgLTIwNyw3ICsyMTgsOSBAQCB3aW5kb3dfaW5zZXJ0ZWRfdGV4 dF9jYiAoR3RrRW50cnlCdWZmZXIgKmJ1ZmZlciwKLSAgICAgfQotIAotICAgICBzdHJpZGUgKz0g bV9jb21wb3NlX3RhYmxlLT5tYXhfc2VxX2xlbiArIDI7Ci0rI2lmICFHVEtfQ0hFQ0tfVkVSU0lP TiAoMywgMjIsIDE2KQotICAgICBuX2xvb3ArKzsKLSsjZW5kaWYKLSAgICAgZ3RrX2VudHJ5X3Nl dF90ZXh0IChlbnRyeSwgIiIpOwotIH0KLSAKLS0tIAotMi4xNC4zCi0KLUZyb20gMjhkMGMxZDRi YzQ3YmViMzg5OTVkODRjYzRiYjFkNTM5YzA4YTA3MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK LUZyb206IE9saXZpZXIgVGlsbG95IDxvbGl2aWVyLnRpbGxveUBjYW5vbmljYWwuY29tPgotRGF0 ZTogRnJpLCA2IEFwciAyMDE4IDE2OjAyOjExICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNyYzog TWFrZSB0aGUgY2FsbCB0byBjaG1vZCBpbiBpYnVzX2J1c19pbml0IGNvbmRpdGlvbmFsCi0KLUJV Rz1odHRwczovL2dpdGh1Yi5jb20vaWJ1cy9pYnVzL2lzc3Vlcy8xOTk2Ci0tLS0KLSBzcmMvaWJ1 c2J1cy5jIHwgNCArKystCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxl dGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2lidXNidXMuYyBiL3NyYy9pYnVzYnVzLmMKLWlu ZGV4IDExNjU5YzQxLi45ODgyMGU4YSAxMDA2NDQKLS0tLSBhL3NyYy9pYnVzYnVzLmMKLSsrKyBi L3NyYy9pYnVzYnVzLmMKLUBAIC01NTcsNyArNTU3LDYgQEAgaWJ1c19idXNfaW5pdCAoSUJ1c0J1 cyAqYnVzKQotICAgICBwYXRoID0gZ19wYXRoX2dldF9kaXJuYW1lIChpYnVzX2dldF9zb2NrZXRf cGF0aCAoKSk7Ci0gCi0gICAgIGdfbWtkaXJfd2l0aF9wYXJlbnRzIChwYXRoLCAwNzAwKTsKLS0g ICAgZ19jaG1vZCAocGF0aCwgMDcwMCk7Ci0gCi0gICAgIGlmIChzdGF0IChwYXRoLCAmYnVmKSA9 PSAwKSB7Ci0gICAgICAgICBpZiAoYnVmLnN0X3VpZCAhPSBnZXR1aWQgKCkpIHsKLUBAIC01NjUs NiArNTY0LDkgQEAgaWJ1c19idXNfaW5pdCAoSUJ1c0J1cyAqYnVzKQotICAgICAgICAgICAgICAg ICAgICAgICAgcGF0aCwgaWJ1c19nZXRfdXNlcl9uYW1lICgpKTsKLSAgICAgICAgICAgICByZXR1 cm47Ci0gICAgICAgICB9Ci0rICAgICAgICBpZiAoYnVmLnN0X21vZGUgIT0gKFNfSUZESVIgfCBT X0lSV1hVKSkgewotKyAgICAgICAgICAgIGdfY2htb2QgKHBhdGgsIDA3MDApOwotKyAgICAgICAg fQotICAgICB9Ci0gCi0gICAgIGdfZnJlZSAocGF0aCk7Ci0tLSAKLTIuMTQuMwotCi1Gcm9tIDMy ZjJmMmJhYjE0OWFkNzY2Njc0ZTc0MjFmNzA0NGViZTk4YmIwYjYgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCi1Gcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci1EYXRl OiBGcmksIDYgQXByIDIwMTggMjA6MjQ6MDggKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gdGVzdHM6 IEFkZGVkIGFuIGF1dG9tYXRpb24gdGVzdGluZyBvbiBjb25zb2xlCi0KLXRlc3QtY29uc29sZS5z aCBydW5zIC91c3IvYmluL2lidXMtZGFlbW9uIG9uIGNvbnNvbGUgYWZ0ZXIgaW5zdGFsbCBpYnVz LgotCi1Mb2dpbiBhcyByb290Ci0gIC0tYnVpbGRkaXIgL3Jvb3QvaWJ1cy9zcmMvdGVzdHMgLS1z cmNkaXIgL3Jvb3QvaWJ1cy9zcmMvdGVzdHMKLQotQWxzbyBhZGRlZCBESVNBQkxFX0dVSV9URVNU UyBwYXJhbWV0ZXJzIGZvciBtYWtlIGNoZWNrLgotLS0tCi0gYnVzL01ha2VmaWxlLmFtICAgICAg IHwgICAxICsKLSBzcmMvdGVzdHMvTWFrZWZpbGUuYW0gfCAgIDUgKy0KLSBzcmMvdGVzdHMvcnVu dGVzdCAgICAgfCAxNTEgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQotIHRlc3QvdGVz dC1jb25zb2xlLnNoICB8IDI0MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwotIDQgZmlsZXMgY2hhbmdlZCwgMzQzIGluc2VydGlvbnMoKyksIDU2IGRl bGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDc1NSB0ZXN0L3Rlc3QtY29uc29sZS5zaAotCi1k aWZmIC0tZ2l0IGEvYnVzL01ha2VmaWxlLmFtIGIvYnVzL01ha2VmaWxlLmFtCi1pbmRleCA4YmNj OGUxNi4uNzYxNjZhMGYgMTAwNjQ0Ci0tLS0gYS9idXMvTWFrZWZpbGUuYW0KLSsrKyBiL2J1cy9N YWtlZmlsZS5hbQotQEAgLTEyMiw2ICsxMjIsNyBAQCBURVNUU19FTlZJUk9OTUVOVCA9IFwKLSAg ICAgdG9wX2J1aWxkZGlyPSQodG9wX2J1aWxkZGlyKSBcCi0gICAgIHRvcF9zcmNkaXI9JCh0b3Bf c3JjZGlyKSBcCi0gICAgIGJ1aWxkZGlyPSQoYnVpbGRkaXIpIFwKLSsgICAgc3JjZGlyPSQoc3Jj ZGlyKSBcCi0gICAgICQoTlVMTCkKLSAKLSBMT0dfQ09NUElMRVIgPSAkKHRvcF9zcmNkaXIpL3Ny Yy90ZXN0cy9ydW50ZXN0Ci1kaWZmIC0tZ2l0IGEvc3JjL3Rlc3RzL01ha2VmaWxlLmFtIGIvc3Jj L3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCAxMjViZTNmYy4uOGJjYWM4ZjIgMTAwNjQ0Ci0tLS0g YS9zcmMvdGVzdHMvTWFrZWZpbGUuYW0KLSsrKyBiL3NyYy90ZXN0cy9NYWtlZmlsZS5hbQotQEAg LTMsNyArMyw4IEBACi0gIyBpYnVzIC0gVGhlIElucHV0IEJ1cwotICMKLSAjIENvcHlyaWdodCAo YykgMjAwNy0yMDE1IFBlbmcgSHVhbmcgPHNoYXduLnAuaHVhbmdAZ21haWwuY29tPgotLSMgQ29w eXJpZ2h0IChjKSAyMDA3LTIwMTUgUmVkIEhhdCwgSW5jLgotKyMgQ29weXJpZ2h0IChjKSAyMDE1 LTIwMTggVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0rIyBDb3B5 cmlnaHQgKGMpIDIwMDctMjAxOCBSZWQgSGF0LCBJbmMuCi0gIwotICMgVGhpcyBsaWJyYXJ5IGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICMgbW9kaWZ5 IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotQEAg LTY2LDYgKzY3LDggQEAgVEVTVFNfRU5WSVJPTk1FTlQgPSBcCi0gCXRvcF9idWlsZGRpcj0kKHRv cF9idWlsZGRpcikgXAotIAl0b3Bfc3JjZGlyPSQodG9wX3NyY2RpcikgXAotIAlidWlsZGRpcj0k KGJ1aWxkZGlyKSBcCi0rCXNyY2Rpcj0kKHNyY2RpcikgXAotKwlESVNBQkxFX0dVSV9URVNUUz0k KERJU0FCTEVfR1VJX1RFU1RTKSBcCi0gCSQoTlVMTCkKLSAKLSBMT0dfQ09NUElMRVIgPSAkKHNy Y2RpcikvcnVudGVzdAotZGlmZiAtLWdpdCBhL3NyYy90ZXN0cy9ydW50ZXN0IGIvc3JjL3Rlc3Rz L3J1bnRlc3QKLWluZGV4IDBlNDNmZWU1Li5iM2IyYTFjZSAxMDA3NTUKLS0tLSBhL3NyYy90ZXN0 cy9ydW50ZXN0Ci0rKysgYi9zcmMvdGVzdHMvcnVudGVzdAotQEAgLTEsNSArMSw4IEBACi0gIyEv YmluL3NoCi0gCi0rIyAtKi0gbW9kZTogQzsgYy1iYXNpYy1vZmZzZXQ6IDQ7IGluZGVudC10YWJz LW1vZGU6IG5pbDsgLSotCi0rIyB2aW06c2V0IGV0IHN0cz00OgotKwotICMgUnVuIGEgdGVzdCBj YXNlIGdpdmVuIGJ5IHRoZSBmaXJzdCBhcmd1bWVudCBpbiBhIHNlcGFyYXRlIGRpcmVjdG9yeS4K LSAjIFRoaXMgc2NyaXB0IG1heSBhbHNvIGxhdW5jaCAkdG9wX2J1aWxkZGlyL2J1cy9pYnVzLWRh ZW1vbiBmb3IgdGVzdGluZy4KLSAKLUBAIC0xNyw2ICsyMCw4IEBACi0gOiAke3RvcF9idWlsZGRp cjo9Li4vLi59Ci0gOiAke3RvcF9zcmNkaXI6PS4uLy4ufQotIDogJHtidWlsZGRpcjo9Ln0KLSs6 ICR7c3JjZGlyOj0ufQotKzogJHtESVNBQkxFX0dVSV9URVNUUzo9Jyd9Ci0gCi0gQlVTX1JFUVVJ UkVEX1RFU1RTPSIKLSBpYnVzLWJ1cwotQEAgLTI5LDUwICszNCw1MSBAQCBpYnVzLWVuZ2luZS1z d2l0Y2gKLSBpYnVzLWNvbXBvc2UKLSB0ZXN0LXN0cmVzcwotICIKLStyZXR2YWw9MAotIAotICMg UG9ydGFibGUgcmVwbGFjZW1lbnQgb2YgYmFzZW5hbWUuCi0gZnVuY19iYXNlbmFtZSAoKSB7Ci0t ICBjYXNlICIkMSIgaW4KLSsgICAgY2FzZSAiJDEiIGluCi0gICAgICovKikKLS0gICAgICBleHBy ICIkMSIgOiAnLiovXCguKlwpJwotLSAgICAgIDs7Ci0rICAgICAgICBleHByICIkMSIgOiAnLiov XCguKlwpJwotKyAgICAgICAgOzsKLSAgICAgKikKLS0gICAgICBlY2hvICIkMSIKLS0gIGVzYWMK LSsgICAgICAgIGVjaG8gIiQxIgotKyAgICBlc2FjCi0gfQotIAotICMgUG9ydGFibGUgcmVwbGFj ZW1lbnQgb2YgZGlybmFtZS4KLSBmdW5jX2Rpcm5hbWUgKCkgewotLSAgY2FzZSAiJDEiIGluCi0r ICAgIGNhc2UgIiQxIiBpbgotICAgICAqLyopCi0tICAgICAgZXhwciAiJDEiIDogJ1woLipcKS8u KicKLS0gICAgICA7OwotKyAgICAgICAgZXhwciAiJDEiIDogJ1woLipcKS8uKicKLSsgICAgICAg IDs7Ci0gICAgICopCi0tICAgICAgZWNobyAuCi0tICBlc2FjCi0rICAgICAgICBlY2hvIC4KLSsg ICAgZXNhYwotIH0KLSAKLSAjIEtpbGwgaWJ1cy1kYWVtb24gcHJvY2VzcyBhbmQgcmVtb3ZlIHRl bXBvcmFyeSBmaWxlcy4KLSBmdW5jX2NsZWFudXAgKCkgewotLSAgdHN0ZGlyPSQxCi0tICBpZiB0 ZXN0IC1mICR0c3RkaXIvaWJ1cy1kYWVtb24ucGlkOyB0aGVuCi0tICAgIC4gJHRzdGRpci9pYnVz LWRhZW1vbi5waWQKLS0gICAga2lsbCAkSUJVU19EQUVNT05fUElEICY+IC9kZXYvbnVsbAotLSAg ZmkKLS0gIHJtIC1mciAkdHN0ZGlyCi0rICAgIHRzdGRpcj0kMQotKyAgICBpZiB0ZXN0IC1mICR0 c3RkaXIvaWJ1cy1kYWVtb24ucGlkOyB0aGVuCi0rICAgICAgICAuICR0c3RkaXIvaWJ1cy1kYWVt b24ucGlkCi0rICAgICAgICBraWxsICRJQlVTX0RBRU1PTl9QSUQgJj4gL2Rldi9udWxsCi0rICAg IGZpCi0rICAgIHJtIC1mciAkdHN0ZGlyCi0gfQotIAotICMgUHJlcGFyZSBjb21wb25lbnQgZmls ZXMgbmVjZXNzYXJ5IGZvciB0ZXN0aW5nLCB1bmRlciBjb21wb25lbnRzLy4KLSBmdW5jX2NvcHlf Y29tcG9uZW50ICgpIHsKLS0gIGZpbGU9JDEKLS0gIGJhc2U9YGZ1bmNfYmFzZW5hbWUgJGZpbGVg Ci0tICBsaWJleGVjZGlyPWBmdW5jX2Rpcm5hbWUgJGZpbGVgCi0tICAjIHRvcF9zcmNkaXIgIT0g dG9wX2J1aWxkZGlyIGluIG1ha2UgZGlzdAotLSAgbGliZXhlY2Rpcj1gZWNobyAiJGxpYmV4ZWNk aXIiIHwgc2VkIC1lICJzfCR0b3Bfc3JjZGlyfCR0b3BfYnVpbGRkaXJ8ImAKLS0gIGlmIHRlc3Qg LWYgJGZpbGUuaW47IHRoZW4KLS0gICAgbWtkaXIgLXAgY29tcG9uZW50cwotLSAgICBzZWQgInN8 QGxpYmV4ZWNkaXJAfCRsaWJleGVjZGlyfGciIDwgJGZpbGUuaW4gPiBjb21wb25lbnRzLyRiYXNl Ci0tICBmaQotKyAgICBmaWxlPSQxCi0rICAgIGJhc2U9YGZ1bmNfYmFzZW5hbWUgJGZpbGVgCi0r ICAgIGxpYmV4ZWNkaXI9YGZ1bmNfZGlybmFtZSAkZmlsZWAKLSsgICAgIyB0b3Bfc3JjZGlyICE9 IHRvcF9idWlsZGRpciBpbiBtYWtlIGRpc3QKLSsgICAgbGliZXhlY2Rpcj1gZWNobyAiJGxpYmV4 ZWNkaXIiIHwgc2VkIC1lICJzfCR0b3Bfc3JjZGlyfCR0b3BfYnVpbGRkaXJ8ImAKLSsgICAgaWYg dGVzdCAtZiAkZmlsZS5pbjsgdGhlbgotKyAgICAgICAgbWtkaXIgLXAgY29tcG9uZW50cwotKyAg ICAgICAgc2VkICJzfEBsaWJleGVjZGlyQHwkbGliZXhlY2RpcnxnIiA8ICRmaWxlLmluID4gY29t cG9uZW50cy8kYmFzZQotKyAgICBmaQotIH0KLSAKLSB0cmFwICdmdW5jX2NsZWFudXAgJHRzdGRp cicgMSAyIDMgMTUKLUBAIC04MCw0NCArODYsNzkgQEAgdHJhcCAnZnVuY19jbGVhbnVwICR0c3Rk aXInIDEgMiAzIDE1Ci0gdHN0PSQxOyBzaGlmdAotIHRzdGRpcj10bXAtYGZ1bmNfYmFzZW5hbWUg JHRzdGAKLSAKLS10ZXN0IC1kICR0c3RkaXIgfHwgbWtkaXIgJHRzdGRpcgotLQotLSggY2QgJHRz dGRpcgotLQotLSAgbmVlZF9idXM9bm8KLS0gIGZvciB0IGluICRCVVNfUkVRVUlSRURfVEVTVFM7 IGRvCi0rZm9yIHQgaW4gJERJU0FCTEVfR1VJX1RFU1RTOyBkbwotICAgICBpZiB0ZXN0ICR0ID0g YGZ1bmNfYmFzZW5hbWUgJHRzdGA7IHRoZW4KLS0gICAgICBuZWVkX2J1cz15ZXMKLSsgICAgICAg IGV4aXQgNzcKLSAgICAgZmkKLS0gIGRvbmUKLS0KLS0gIGlmIHRlc3QgJG5lZWRfYnVzID0geWVz OyB0aGVuCi0tICAgIGZ1bmNfY29weV9jb21wb25lbnQgIi4uLyR0b3Bfc3JjZGlyL2VuZ2luZS9z aW1wbGUueG1sIgotLSAgICBmdW5jX2NvcHlfY29tcG9uZW50ICIuLi8kdG9wX3NyY2Rpci9jb25m L21lbWNvbmYvbWVtY29uZi54bWwiCi0rZG9uZQotIAotLSAgICBJQlVTX0NPTVBPTkVOVF9QQVRI PSRQV0QvY29tcG9uZW50cwotLSAgICBleHBvcnQgSUJVU19DT01QT05FTlRfUEFUSAotK3Rlc3Qg LWQgJHRzdGRpciB8fCBta2RpciAkdHN0ZGlyCi0gCi0tICAgIElCVVNfQUREUkVTU19GSUxFPSRQ V0QvaWJ1cy1kYWVtb24ucGlkCi0tICAgIGV4cG9ydCBJQlVTX0FERFJFU1NfRklMRQotK3J1bl90 ZXN0X2Nhc2UoKQotK3sKLSsgICAgcHVzaGQgJHRzdGRpcgotKwotKyAgICBuZWVkX2J1cz1ubwot KyAgICBmb3IgdCBpbiAkQlVTX1JFUVVJUkVEX1RFU1RTOyBkbwotKyAgICAgICAgaWYgdGVzdCAk dCA9IGBmdW5jX2Jhc2VuYW1lICR0c3RgOyB0aGVuCi0rICAgICAgICAgICAgbmVlZF9idXM9eWVz Ci0rICAgICAgICBmaQotKyAgICBkb25lCi0rCi0rICAgIGlmIHRlc3QgJG5lZWRfYnVzID0geWVz OyB0aGVuCi0rICAgICAgICBmdW5jX2NvcHlfY29tcG9uZW50ICIuLi8kdG9wX3NyY2Rpci9lbmdp bmUvc2ltcGxlLnhtbCIKLSsgICAgICAgIGZ1bmNfY29weV9jb21wb25lbnQgIi4uLyR0b3Bfc3Jj ZGlyL2NvbmYvbWVtY29uZi9tZW1jb25mLnhtbCIKLSsKLSsgICAgICAgIElCVVNfQ09NUE9ORU5U X1BBVEg9JFBXRC9jb21wb25lbnRzCi0rICAgICAgICBleHBvcnQgSUJVU19DT01QT05FTlRfUEFU SAotKwotKyAgICAgICAgSUJVU19BRERSRVNTX0ZJTEU9JFBXRC9pYnVzLWRhZW1vbi5waWQKLSsg ICAgICAgIGV4cG9ydCBJQlVTX0FERFJFU1NfRklMRQotKwotKyAgICAgICAgIyBTdGFydCBpYnVz LWRhZW1vbi4KLSsgICAgICAgIC4uLyR0b3BfYnVpbGRkaXIvYnVzL2lidXMtZGFlbW9uIFwKLSsg ICAgICAgIC0tZGFlbW9uaXplIFwKLSsgICAgICAgIC0tY2FjaGU9bm9uZSBcCi0rICAgICAgICAt LXBhbmVsPWRpc2FibGUgXAotKyAgICAgICAgLS1wYW5lbC1leHRlbnNpb249ZGlzYWJsZSBcCi0r ICAgICAgICAtLWNvbmZpZz1kZWZhdWx0IFwKLSsgICAgICAgIC0tdmVyYm9zZTsKLSsKLSsgICAg ICAgICMgV2FpdCB1bnRpbCBhbGwgbmVjZXNzYXJ5IGNvbXBvbmVudHMgYXJlIHVwLgotKyAgICAg ICAgc2xlZXAgMQotKyAgICBmaQotIAotLSAgICAjIFN0YXJ0IGlidXMtZGFlbW9uLgotLSAgICAu Li8kdG9wX2J1aWxkZGlyL2J1cy9pYnVzLWRhZW1vbiBcCi0tICAgIC0tZGFlbW9uaXplIFwKLS0g ICAgLS1jYWNoZT1ub25lIFwKLS0gICAgLS1wYW5lbD1kaXNhYmxlIFwKLS0gICAgLS1wYW5lbC1l eHRlbnNpb249ZGlzYWJsZSBcCi0tICAgIC0tY29uZmlnPWRlZmF1bHQgXAotLSAgICAtLXZlcmJv c2U7Ci0rICAgICIuLi8kdHN0IiAkezErIiRAIn0KLSAKLS0gICAgIyBXYWl0IHVudGlsIGFsbCBu ZWNlc3NhcnkgY29tcG9uZW50cyBhcmUgdXAuCi0tICAgIHNsZWVwIDEKLS0gIGZpCi0rICAgIHJl dHZhbD1gZXhwciAkcmV0dmFsIFx8ICQ/YAotIAotLSAgZXhlYyAiLi4vJHRzdCIgJHsxKyIkQCJ9 ICkKLSsgICAgJHBvcGQKLSAKLS1yZXR2YWw9JD8KLSsgICAgZnVuY19jbGVhbnVwICR0c3RkaXIK LSt9Ci0gCi0tZnVuY19jbGVhbnVwICR0c3RkaXIKLStlbnZmaWxlPSRzcmNkaXIvYGZ1bmNfYmFz ZW5hbWUgJHRzdGAuZW52Ci0raWYgdGVzdCAtZiAkZW52ZmlsZSA7IHRoZW4KLSsgICAgRU5WUz0i YGNhdCAkZW52ZmlsZWAiCi0rZmk7Ci0raWYgdGVzdCB4IiRFTlZTIiA9IHggOyB0aGVuCi0rICAg IHJ1bl90ZXN0X2Nhc2UKLStlbHNlCi0rICAgIExBTkdfYmFja3VwPSRMQU5HCi0rICAgIGk9MQot KyAgICBmb3IgZSBpbiAkRU5WUzsgZG8KLSsgICAgICAgIGZpcnN0PWBlY2hvICIkZSIgfCBjdXQg LWMxLTFgCi0rICAgICAgICBpZiB0ZXN0IHgiJGZpcnN0IiA9IHgiIyIgOyB0aGVuCi0rICAgICAg ICAgICAgY29udGludWUKLSsgICAgICAgIGZpCi0rICAgICAgICBleHBvcnQgJGUKLSsgICAgICAg IGVjaG8gIlJ1biBgZnVuY19iYXNlbmFtZSAkdHN0YCBvbiAkZSIKLSsgICAgICAgIGVjaG8gIj09 PT09PT09PT09PT09PT09PT09PT09IgotKyAgICAgICAgcnVuX3Rlc3RfY2FzZQotKyAgICAgICAg ZWNobyAiIgotKyAgICAgICAgaT1gZXhwciAkaSArIDFgCi0rICAgIGRvbmUKLSsgICAgZXhwb3J0 IExBTkc9JExBTkdfYmFja3VwCi0rZmkKLSAKLSBleGl0ICRyZXR2YWwKLWRpZmYgLS1naXQgYS90 ZXN0L3Rlc3QtY29uc29sZS5zaCBiL3Rlc3QvdGVzdC1jb25zb2xlLnNoCi1uZXcgZmlsZSBtb2Rl IDEwMDc1NQotaW5kZXggMDAwMDAwMDAuLjcxOTlmN2E3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi90 ZXN0L3Rlc3QtY29uc29sZS5zaAotQEAgLTAsMCArMSwyNDIgQEAKLSsjIS9iaW4vc2gKLSsjIC0q LSBtb2RlOiBDOyBjLWJhc2ljLW9mZnNldDogNDsgaW5kZW50LXRhYnMtbW9kZTogbmlsOyAtKi0K LSsjIHZpbTpzZXQgbm9ldCB0cz00OgotKyMKLSsjIGlidXMtYW50aHkgLSBUaGUgQW50aHkgZW5n aW5lIGZvciBJQnVzCi0rIwotKyMgQ29weXJpZ2h0IChjKSAyMDE4IFRha2FvIEZ1aml3YXJhIDx0 YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotKyMgQ29weXJpZ2h0IChjKSAyMDE4IFJlZCBIYXQs IEluYy4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0r IyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsjIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBu b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCi0rIyA1MSBG cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgot KwotKyMgVGhpcyB0ZXN0IHJ1bnMgL3Vzci9iaW4vaWJ1cy1kYWVtb24gYWZ0ZXIgaW5zdGFsbCBp YnVzCi0rIwotKyMgIyBpbml0IDMKLSsjIExvZ2luIGFzIHJvb3QKLSsjICMgL3Jvb3QvaWJ1cy90 ZXN0cy90ZXN0LWNvbnNvbGUuc2ggLS10ZXN0cyBpYnVzLWNvbXBvc2UgXAotKyMgICAtLWJ1aWxk ZGlyIC9yb290L2lidXMvc3JjL3Rlc3RzIC0tc3JjZGlyIC9yb290L2lidXMvc3JjL3Rlc3RzCi0r Ci0rUFJPR05BTUU9YGJhc2VuYW1lICQwYAotK1ZFUlNJT049MC4xCi0rRElTUExBWT06OTkuMAot K0JVSUxERElSPSIuIgotK1NSQ0RJUj0iLiIKLStURVNUX0xPRz10ZXN0LXN1aXRlLmxvZwotK0hB VkVfR1JBUEhJQ1M9MQotK0RFU0tUT1BfQ09NTUFORD0iZ25vbWUtc2Vzc2lvbiIKLStQSURfWE9S Rz0wCi0rUElEX0dOT01FX1NFU1NJT049MAotK1RFU1RTPSIiCi0rR1JFRU49J1wwMzNbMDszMm0n Ci0rUkVEPSdcMDMzWzA7MzFtJwotK05DPSdcMDMzWzBtJwotKwotK3VzYWdlKCkKLSt7Ci0rICAg IGVjaG8gLWUgXAotKyJUaGlzIHRlc3QgcnVucyAvdXNyL2Jpbi9pYnVzLWRhZW1vbiBhZnRlciBp bnN0YWxsIGlidXNcbiIgICAgICAgICAgICAgICAgICAgICBcCi0rIiRQUk9HTkFNRSBbT1BUSU9O U+KApl1cbiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAotKyJcbiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rIk9QVElPTlM6XG4iICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSsiLWgsIC0taGVscCAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBoZWxwXG4iICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyItdiwgLS12ZXJzaW9uICAgICAgICAgICAg ICAgICAgICBTaG93IHZlcnNpb25cbiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0r Ii1iLCAtLWJ1aWxkZGlyPUJVSUxERElSICAgICAgICAgIFNldCB0aGUgQlVJTERESVJcbiIgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLSsiLXMsIC0tc3JjZGlyPVNPVVJDRURJUiAgICAgICAg ICAgU2V0IHRoZSBTT1VSQ0VESVJcbiIgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyItYywg LS1uby1ncmFwaGljcyAgICAgICAgICAgICAgICBVc2UgWHZmYiBpbnN0ZWFkIG9mIFhvcmdcbiIg ICAgICAgICAgICAgICAgICBcCi0rIi1kLCAtLWRlc2t0b3A9REVTS1RPUCAgICAgICAgICAgIFJ1 biBERVNUS1RPUC4gVGhlIGRlZmF1bHQgaXMgZ25vbWUtc2Vzc2lvblxuIiBcCi0rIi10LCAtLXRl c3RzPVwiVEVTVFMuLi5cIiAgICAgICAgICAgUnVuIFRFU1RTIHByb2dyYW1zIHdoaWNoIGlzIHNl cGFyYXRlZCBieSBzcGFjZVxuIiBcCi0rIiIKLSt9Ci0rCi0rcGFyc2VfYXJncygpCi0rewotKyAg ICAjIFRoaXMgaXMgR05VIGdldG9wdC4gInN1ZG8gcG9ydCBnZXRvcHQiIGluIEJTRD8KLSsgICAg QVJHUz1gZ2V0b3B0IC1vIGh2YjpzOmNkOnQ6IC0tbG9uZyBoZWxwLHZlcnNpb24sYnVpbGRkaXI6 LHNyY2Rpcjosbm8tZ3JhcGhpY3MsZGVza3RvcDosdGVzdHM6XAotKyAgICAgICAgLS0gIiRAImA7 Ci0rICAgIGV2YWwgc2V0IC0tICIkQVJHUyIKLSsgICAgd2hpbGUgWyAxIF0gOyBkbwotKyAgICAg ICAgY2FzZSAiJDEiIGluCi0rICAgICAgICAtaCB8IC0taGVscCApICAgICAgICB1c2FnZTsgZXhp dCAwOzsKLSsgICAgICAgIC12IHwgLS12ZXJzaW9uICkgICAgIGVjaG8gLWUgIiRWRVJTSU9OIjsg ZXhpdCAwOzsKLSsgICAgICAgIC1iIHwgLS1idWlsZGRpciApICAgIEJVSUxERElSPSIkMiI7IHNo aWZ0IDI7OwotKyAgICAgICAgLXMgfCAtLXNyY2RpciApICAgICAgU1JDRElSPSIkMiI7IHNoaWZ0 IDI7OwotKyAgICAgICAgLWMgfCAtLW5vLWdyYXBoaWNzICkgSEFWRV9HUkFQSElDUz0wOyBzaGlm dDs7Ci0rICAgICAgICAtZCB8IC0tZGVza3RvcCApICAgICBERVNLVE9QX0NPTU1BTkQ9IiQyIjsg c2hpZnQgMjs7Ci0rICAgICAgICAtdCB8IC0tdGVzdHMgKSAgICAgICBURVNUUz0iJDIiOyBzaGlm dCAyOzsKLSsgICAgICAgIC0tICkgICAgICAgICAgICAgICAgIHNoaWZ0OyBicmVhazs7Ci0rICAg ICAgICAqICkgICAgICAgICAgICAgICAgICB1c2FnZTsgZXhpdCAxOzsKLSsgICAgICAgIGVzYWMK LSsgICAgZG9uZQotK30KLSsKLStpbml0X2Rlc2t0b3AoKQotK3sKLSsgICAgaWYgdGVzdCB4JEZP UkNFX1RFU1QgIT0geCA7IHRoZW4KLSsgICAgICAgIFJVTl9BUkdTPSIkUlVOX0FSR1MgLS1mb3Jj ZSIKLSsgICAgZmkKLSsKLSsgICAgaWYgdGVzdCAhIC1mICRIT01FLy5jb25maWcvZ25vbWUtaW5p dGlhbC1zZXR1cC1kb25lIDsgdGhlbgotKyAgICAgICAgaWYgdGVzdCAhIC1mIC92YXIvbGliL0Fj Y291bnRzU2VydmljZS91c2Vycy8kVVNFUiA7IHRoZW4KLSsgICAgICAgICAgICBta2RpciAtcCAv dmFyL2xpYi9BY2NvdW50c1NlcnZpY2UvdXNlcnMKLSsgICAgICAgICAgICBjYXQgPj4gL3Zhci9s aWIvQWNjb3VudHNTZXJ2aWNlL3VzZXJzLyRVU0VSIDw8IF9FT0YKLStbVXNlcl0KLStMYW5ndWFn ZT1qYV9KUC5VVEYtOAotK1hTZXNzaW9uPWdub21lCi0rU3lzdGVtQWNjb3VudD1mYWxzZQotK19F T0YKLSsgICAgICAgIGZpCi0rICAgICAgICBta2RpciAtcCAkSE9NRS8uY29uZmlnCi0rICAgICAg ICB0b3VjaCAkSE9NRS8uY29uZmlnL2dub21lLWluaXRpYWwtc2V0dXAtZG9uZQotKyAgICBmaQot K30KLSsKLStydW5fZGJ1c19kYWVtb24oKQotK3sKLSsgICAgYT1gcHMgLWVmIHwgZ3JlcCBkYnVz LWRhZW1vbiB8IGdyZXAgIlwtXC1zeXN0ZW0iIHwgZ3JlcCAtdiBzZXNzaW9uIHwgZ3JlcCAtdiBn cmVwYAotKyAgICBpZiB0ZXN0IHgiJGEiID0geCA7IHRoZW4KLSsgICAgICAgIGV2YWwgYGRidXMt bGF1bmNoIC0tc2gtc3ludGF4YAotKyAgICBmaQotKyAgICBTVVNFUj1gZWNobyAiJFVTRVIiIHwg Y3V0IC1jIDEtN2AKLSsgICAgYT1gcHMgLWVmIHwgZ3JlcCBkYnVzLWRhZW1vbiB8IGdyZXAgIiRT VVNFUiIgfCBncmVwIC12IGdkbSB8IGdyZXAgc2Vzc2lvbiB8IGdyZXAgLXYgZ3JlcGAKLSsgICAg aWYgdGVzdCB4IiRhIiA9IHggOyB0aGVuCi0rICAgICAgICBzeXN0ZW1jdGwgLS11c2VyIHN0YXJ0 IGRidXMKLSsgICAgICAgIGV4cG9ydCBEQlVTX1NFU1NJT05fQlVTX0FERFJFU1M9dW5peDpwYXRo PS9ydW4vdXNlci8kVUlEL2J1cwotKyAgICBmaQotKyAgICBzeXN0ZW1jdGwgLS11c2VyIHN0YXR1 cyBkYnVzIHwgY29sIC1iCi0rICAgIHBzIC1lZiB8IGdyZXAgZGJ1cy1kYWVtb24gfCBncmVwICIk U1VTRVIiIHwgZ3JlcCAtdiBnZG0gfCBlZ3JlcCAnc2Vzc2lvbnxzeXN0ZW0nIHwgZ3JlcCAtdiBn cmVwCi0rICAgIHN5c3RlbWN0bCAtLXVzZXIgc2hvdy1lbnZpcm9ubWVudCB8IGNvbCAtYgotK30K LSsKLStydW5fZGVza3RvcCgpCi0rewotKyAgICBpZiB0ZXN0ICRIQVZFX0dSQVBISUNTIC1lcSAx IDsgdGhlbgotKyAgICAgICAgL3Vzci9saWJleGVjL1hvcmcud3JhcCAtbm9yZXNldCArZXh0ZW5z aW9uIEdMWCArZXh0ZW5zaW9uIFJBTkRSICtleHRlbnNpb24gUkVOREVSIC1sb2dmaWxlIC4veG9y Zy5sb2cgLWNvbmZpZyAuL3hvcmcuY29uZiAtY29uZmlnZGlyIC4gJERJU1BMQVkgJgotKyAgICBl bHNlCi0rICAgICAgICAvdXNyL2Jpbi9YdmZiICRESVNQTEFZIC1ub3Jlc2V0ICtleHRlbnNpb24g R0xYICtleHRlbnNpb24gUkFORFIgK2V4dGVuc2lvbiBSRU5ERVIgLXNjcmVlbiAwIDEyODB4MTAy NHgyNCAmCi0rICAgIGZpCi0rICAgIFBJRF9YT1JHPSQhCi0rICAgIHNsZWVwIDEKLSsgICAgZXhw b3J0IERJU1BMQVk9JERJU1BMQVkKLSsgICAgJERFU0tUT1BfQ09NTUFORCAmCi0rICAgIFBJRF9H Tk9NRV9TRVNTSU9OPSQhCi0rICAgIHNsZWVwIDMwCi0rICAgIGlmIHRlc3QgIiRERVNLVE9QX0NP TU1BTkQiICE9ICJnbm9tZS1zZXNzaW9uIiA7IHRoZW4KLSsgICAgICAgIGlidXMtZGFlbW9uIC0t ZGFlbW9uaXplIC0tdmVyYm9zZQotKyAgICAgICAgc2xlZXAgMQotKyAgICBmaQotK30KLSsKLStj b3VudF9jYXNlX3Jlc3VsdCgpCi0rewotKyAgICByZXR2YWw9JDEKLSsgICAgcGFzcz0kMgotKyAg ICBmYWlsPSQzCi0rCi0rICAgIGlmIHRlc3QgJHJldHZhbCAtZXEgIDAgOyB0aGVuCi0rICAgICAg ICBwYXNzPWBleHByICRwYXNzICsgMWAKLSsgICAgZWxzZQotKyAgICAgICAgZmFpbD1gZXhwciAk ZmFpbCArIDFgCi0rICAgIGZpCi0rICAgIGVjaG8gJHBhc3MgJGZhaWwKLSt9Ci0rCi0rZWNob19j YXNlX3Jlc3VsdCgpCi0rewotKyAgICByZXR2YWw9JDEKLSsgICAgdHN0PSQyCi0rICAgIGxvZz0k MwotKyAgICBzdWJ0c3Q9JHs0Oi0nJ30KLSsKLSsgICAgaWYgdGVzdCAkcmV0dmFsIC1lcSAgMCA7 IHRoZW4KLSsgICAgICAgIGVjaG8gLWUgIiR7R1JFRU59UEFTUyR7TkN9OiAkdHN0ICRzdWJ0c3Qi Ci0rICAgIGVsc2UKLSsgICAgICAgIGVjaG8gLWUgIiR7UkVEfUZBSUwke05DfTogJHRzdCAkc3Vi dHN0IgotKyAgICAgICAgZWNobyAiRkFJTDogJHRzdCAkc3VidHN0IiA+PiAkVEVTVF9MT0cKLSsg ICAgICAgIGVjaG8gIj09PT09PT09PT09PT09PT09PT09PT0iID4+ICRURVNUX0xPRwotKyAgICAg ICAgZWNobyAiIiA+PiAkVEVTVF9MT0cKLSsgICAgICAgIGNhdCAiJGxvZyIgPj4gJFRFU1RfTE9H Ci0rICAgICAgICBlY2hvICIiID4+ICRURVNUX0xPRwotKyAgICBmaQotK30KLSsKLStydW5fdGVz dF9zdWl0ZSgpCi0rewotKyAgICBjZCBgZGlybmFtZSAkMGAKLSsgICAgcGFzcz0wCi0rICAgIGZh aWw9MAotKwotKyAgICBpZiB0ZXN0IC1mICRURVNUX0xPRyA7IHRoZW4KLSsgICAgICAgIHJtICRU RVNUX0xPRwotKyAgICBmaQotKyAgICBmb3IgdHN0IGluICRURVNUUzsgZG8KLSsgICAgICAgIEVO VlM9Ci0rICAgICAgICBpZiB0ZXN0IC1mICRTUkNESVIvJHt0c3R9LmVudiA7IHRoZW4KLSsgICAg ICAgICAgICBFTlZTPSJgY2F0ICRTUkNESVIvJHt0c3R9LmVudmAiCi0rICAgICAgICBmaQotKyAg ICAgICAgaWYgdGVzdCB4IiRFTlZTIiA9IHggOyB0aGVuCi0rICAgICAgICAgICAgJEJVSUxERElS LyR0c3QgPiYke3RzdH0ubG9nCi0rICAgICAgICAgICAgcmV0dmFsPSQ/Ci0rICAgICAgICAgICAg cmVhZCBwYXNzIGZhaWwgPDwgRU9GCi0rICAgICAgICAgICAgYGNvdW50X2Nhc2VfcmVzdWx0ICRy ZXR2YWwgJHBhc3MgJGZhaWxgCi0rRU9GCi0rICAgICAgICAgICAgZWNob19jYXNlX3Jlc3VsdCAk cmV0dmFsICR0c3QgJHt0c3R9LmxvZwotKyAgICAgICAgZWxzZQotKyAgICAgICAgICAgIExBTkdf YmFja3VwPSRMQU5HCi0rICAgICAgICAgICAgaT0xCi0rICAgICAgICAgICAgZm9yIGUgaW4gJEVO VlM7IGRvCi0rICAgICAgICAgICAgICAgIGZpcnN0PWBlY2hvICIkZSIgfCBjdXQgLWMxLTFgCi0r ICAgICAgICAgICAgICAgIGlmIHRlc3QgeCIkZmlyc3QiID0geCIjIiA7IHRoZW4KLSsgICAgICAg ICAgICAgICAgICAgIGNvbnRpbnVlCi0rICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAg ICAgIGV4cG9ydCAkZQotKyAgICAgICAgICAgICAgICAkQlVJTERESVIvJHRzdCA+JiR7dHN0fS4k e2l9LmxvZwotKyAgICAgICAgICAgICAgICByZXR2YWw9JD8KLSsgICAgICAgICAgICAgICAgcmVh ZCBwYXNzIGZhaWwgPDwgRU9GCi0rICAgICAgICAgICAgICAgIGBjb3VudF9jYXNlX3Jlc3VsdCAk cmV0dmFsICRwYXNzICRmYWlsYAotK0VPRgotKyAgICAgICAgICAgICAgICBlY2hvX2Nhc2VfcmVz dWx0ICRyZXR2YWwgJHRzdCAke3RzdH0uJHtpfS5sb2cgJGUKLSsgICAgICAgICAgICAgICAgaT1g ZXhwciAkaSArIDFgCi0rICAgICAgICAgICAgZG9uZQotKyAgICAgICAgICAgIGV4cG9ydCBMQU5H PSRMQU5HX2JhY2t1cAotKyAgICAgICAgZmkKLSsgICAgZG9uZQotKyAgICBlY2hvICIiCi0rICAg IGVjaG8gLWUgIiMgJHtHUkVFTn1QQVNTJHtOQ306ICRwYXNzIgotKyAgICBlY2hvIC1lICIjICR7 UkVEfUZBSUwke05DfTogJGZhaWwiCi0rICAgIGlmIHRlc3QgLWYgJHtURVNUX0xPR30gOyB0aGVu Ci0rICAgICAgICBlY2hvICIiCi0rICAgICAgICBlY2hvIC1lICIke1JFRH1TZWUgJHtURVNUX0xP R30kTkMiCi0rICAgIGZpCi0rfQotKwotK2Zpbml0KCkKLSt7Ci0rICAgIGlmIHRlc3QgIiRERVNL VE9QX0NPTU1BTkQiICE9ICJnbm9tZS1zZXNzaW9uIiA7IHRoZW4KLSsgICAgICAgIGlidXMgZXhp dAotKyAgICBmaQotKyAgICBraWxsICRQSURfR05PTUVfU0VTU0lPTiAkUElEX1hPUkcKLSt9Ci0r Ci0rbWFpbigpCi0rewotKyAgICBwYXJzZV9hcmdzICRACi0rICAgIGluaXRfZGVza3RvcAotKyAg ICBydW5fZGJ1c19kYWVtb24KLSsgICAgcnVuX2Rlc2t0b3AKLSsgICAgcnVuX3Rlc3Rfc3VpdGUK LSsgICAgZmluaXQKLSt9Ci0rCi0rbWFpbiAkQAotLS0gCi0yLjE0LjMKLQotRnJvbSA2OGUxNjJh NTljNzk0M2VlNjIwN2ZmN2QyMWY5YTc1ZDFlNmYyZjc5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQotRnJvbTogZnVqaXdhcmF0IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotRGF0ZTogRnJp LCA2IEFwciAyMDE4IDIwOjM1OjUwICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNyYy90ZXN0czog Rml4IGEgdHlwbyBpbiBydW50ZXN0Ci0KLS0tLQotIHNyYy90ZXN0cy9ydW50ZXN0IHwgNSArKy0t LQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRp ZmYgLS1naXQgYS9zcmMvdGVzdHMvcnVudGVzdCBiL3NyYy90ZXN0cy9ydW50ZXN0Ci1pbmRleCBi M2IyYTFjZS4uMDkwMjZiZTAgMTAwNzU1Ci0tLS0gYS9zcmMvdGVzdHMvcnVudGVzdAotKysrIGIv c3JjL3Rlc3RzL3J1bnRlc3QKLUBAIC05MiwxMCArOTIsOSBAQCBmb3IgdCBpbiAkRElTQUJMRV9H VUlfVEVTVFM7IGRvCi0gICAgIGZpCi0gZG9uZQotIAotLXRlc3QgLWQgJHRzdGRpciB8fCBta2Rp ciAkdHN0ZGlyCi0tCi0gcnVuX3Rlc3RfY2FzZSgpCi0gewotKyAgICB0ZXN0IC1kICR0c3RkaXIg fHwgbWtkaXIgJHRzdGRpcgotICAgICBwdXNoZCAkdHN0ZGlyCi0gCi0gICAgIG5lZWRfYnVzPW5v Ci1AQCAtMTMyLDcgKzEzMSw3IEBAIHJ1bl90ZXN0X2Nhc2UoKQotIAotICAgICByZXR2YWw9YGV4 cHIgJHJldHZhbCBcfCAkP2AKLSAKLS0gICAgJHBvcGQKLSsgICAgcG9wZAotIAotICAgICBmdW5j X2NsZWFudXAgJHRzdGRpcgotIH0KLS0tIAotMi4xNC4zCi0KLUZyb20gYzM2MGNiZDgzMDk0M2E0 YmZiMGVjZTljYzA3Yjk5YTQyNmRjMjEyMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206 IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgOSBBcHIg MjAxOCAxMTo1NzowOSArMDkwMAotU3ViamVjdDogW1BBVENIXSBzcmMvdGVzdHM6IEFkZCBpYnVz LWNvbXBvc2UuZW52Ci0KLS0tLQotIHNyYy90ZXN0cy9pYnVzLWNvbXBvc2UuZW52IHwgMyArKysK LSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy90ZXN0cy9pYnVzLWNvbXBvc2UuZW52Ci0KLWRpZmYgLS1naXQgYS9zcmMvdGVzdHMvaWJ1cy1j b21wb3NlLmVudiBiL3NyYy90ZXN0cy9pYnVzLWNvbXBvc2UuZW52Ci1uZXcgZmlsZSBtb2RlIDEw MDY0NAotaW5kZXggMDAwMDAwMDAuLjczNGFiOGZhCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMv dGVzdHMvaWJ1cy1jb21wb3NlLmVudgotQEAgLTAsMCArMSwzIEBACi0rTEFORz1lbF9HUi5VVEYt OAotK0xBTkc9ZmlfRkkuVVRGLTgKLStMQU5HPXB0X0JSLlVURi04Ci0tLSAKLTIuMTQuMwotCi1G cm9tIDY4YmQyNjk1YzRjYzZhMDZjYjhhNTVhNTVmZWQyMDU0ZDI5ZjA5OTUgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCi1Gcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+ Ci1EYXRlOiBGcmksIDEzIEFwciAyMDE4IDE2OjMxOjI5ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hd IHNyYy90ZXN0czogRml4IGEgdHlwbwotCi0tLS0KLSBzcmMvdGVzdHMvTWFrZWZpbGUuYW0gfCAy ICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRp ZmYgLS1naXQgYS9zcmMvdGVzdHMvTWFrZWZpbGUuYW0gYi9zcmMvdGVzdHMvTWFrZWZpbGUuYW0K LWluZGV4IDhiY2FjOGYyLi4xMWViYjUzMSAxMDA2NDQKLS0tLSBhL3NyYy90ZXN0cy9NYWtlZmls ZS5hbQotKysrIGIvc3JjL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtNjgsNyArNjgsNyBAQCBURVNU U19FTlZJUk9OTUVOVCA9IFwKLSAJdG9wX3NyY2Rpcj0kKHRvcF9zcmNkaXIpIFwKLSAJYnVpbGRk aXI9JChidWlsZGRpcikgXAotIAlzcmNkaXI9JChzcmNkaXIpIFwKLS0JRElTQUJMRV9HVUlfVEVT VFM9JChESVNBQkxFX0dVSV9URVNUUykgXAotKwlESVNBQkxFX0dVSV9URVNUUz0iJChESVNBQkxF X0dVSV9URVNUUykiIFwKLSAJJChOVUxMKQotIAotIExPR19DT01QSUxFUiA9ICQoc3JjZGlyKS9y dW50ZXN0Ci0tLSAKLTIuMTQuMwotCi1Gcm9tIDhkNGM0NzM4ZDA3YjY4NTBlNTZhZTc0ZDQ2Yjdi MTNiNzM4MmY4NjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBmdWppd2FyYXQgPHRh a2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDEzIEFwciAyMDE4IDE3OjMzOjUw ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogQWRkIC0tZGlzYWJsZS1weXRob24y IG9wdGlvbgotCi0tLS0KLSBiaW5kaW5ncy9weWdvYmplY3QvTWFrZWZpbGUuYW0gfCAgNiArKysr KysKLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgfCAzNyArKysrKysrKysrKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCsp LCA5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYmluZGluZ3MvcHlnb2JqZWN0L01ha2Vm aWxlLmFtIGIvYmluZGluZ3MvcHlnb2JqZWN0L01ha2VmaWxlLmFtCi1pbmRleCAyMzhhNTM3YS4u ZmIyZTJhN2EgMTAwNjQ0Ci0tLS0gYS9iaW5kaW5ncy9weWdvYmplY3QvTWFrZWZpbGUuYW0KLSsr KyBiL2JpbmRpbmdzL3B5Z29iamVjdC9NYWtlZmlsZS5hbQotQEAgLTQsNiArNCw4IEBACi0gIwot ICMgQ29weXJpZ2h0IChjKSAyMDEyIERhaWtpIFVlbm8gPHVlbm9AdW5peHVzZXIub3JnPgotICMg Q29weXJpZ2h0IChjKSAyMDE0LTIwMTYgUGVuZyBIdWFuZyA8c2hhd24ucC5odWFuZ0BnbWFpbC5j b20+Ci0rIyBDb3B5cmlnaHQgKGMpIDIwMTggVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJh MUBnbWFpbC5jb20+Ci0rIyBDb3B5cmlnaHQgKGMpIDIwMTItMjAxOCBSZWQgSGF0LCBJbmMuCi0g IwotICMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vcgotICMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYwotQEAgLTIyLDExICsyNCwxMyBAQAotIAotIE5VTEwgPQotIAotK2lm IEVOQUJMRV9QWVRIT04yCi0gcHkyX2NvbXBpbGUgPSBQWVRIT049JChQWVRIT04yKSAkKFNIRUxM KSAkKHB5X2NvbXBpbGUpCi0gb3ZlcnJpZGVzMmRpciA9ICQocHkyb3ZlcnJpZGVzZGlyKQotIG92 ZXJyaWRlczJfREFUQSA9CQkJCVwKLSAJZ2kvb3ZlcnJpZGVzL0lCdXMucHkJCQlcCi0gCSQoTlVM TCkKLStlbmRpZgotIAotIG92ZXJyaWRlc2RpciA9ICQocHlvdmVycmlkZXNkaXIpCi0gb3ZlcnJp ZGVzX1BZVEhPTiA9CQkJCVwKLUBAIC01Niw2ICs2MCw3IEBAIEVYVFJBX0RJU1QgPQkJCQkJXAot IAkkKE5VTEwpCi0gCi0gaW5zdGFsbC1kYXRhLWhvb2s6Ci0raWYgRU5BQkxFX1BZVEhPTjIKLSAJ QGZvciBkYXRhIGluICQob3ZlcnJpZGVzMl9EQVRBKTsgZG8gXAotIAkgICAgZmlsZT1gZWNobyAk JGRhdGEgfCBzZWQgLWUgJ3N8Xi4qL3x8J2A7IFwKLSAJICAgIGRsaXN0PSIkJGRsaXN0ICQkZmls ZSI7IFwKLUBAIC02Myw2ICs2OCw3IEBAIGluc3RhbGwtZGF0YS1ob29rOgotIAkkKHB5Ml9jb21w aWxlKSAtLWRlc3RkaXIgIiQoREVTVERJUikiIFwKLSAJICAgICAgICAgICAgICAgLS1iYXNlZGly ICIkKG92ZXJyaWRlczJkaXIpIiBcCi0gCSAgICAgICAgICAgICAgICQkZGxpc3QKLStlbmRpZgot IAkkKE5VTEwpCi0gCi0gLWluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9naXQubWsKLWRpZmYgLS1naXQg YS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGQxOWFhODc0Li4wODVjZWNiOCAx MDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzkxLDYg KzM5MSwxNCBAQCBmaQotIEFDX1BBVEhfUFJPRyhFTlZfSUJVU19URVNULCBlbnYpCi0gQUNfU1VC U1QoRU5WX0lCVVNfVEVTVCkKLSAKLStBQ19BUkdfRU5BQkxFKHB5dGhvbjIsCi0rICAgIEFTX0hF TFBfU1RSSU5HKFstLWRpc2FibGUtcHl0aG9uMl0sCi0rICAgICAgICAgICAgICAgICAgIFtEbyBu b3QgaW5zdGFsbCBiaW5kaW5ncy9weWdvYmplY3QvZ2kgYW5kIGlidXMgZm9yIHB5dGhvbjIuCi0r ICAgICAgICAgICAgICAgICAgICAnLS1kaXNhYmxlLXB5dGhvbjInIGJyaW5nICctLWRpc2FibGUt cHl0aG9uLWxpYnJhcnknLl0pLAotKyAgICBbZW5hYmxlX3B5dGhvbjI9JGVuYWJsZXZhbF0sCi0r ICAgIFtlbmFibGVfcHl0aG9uMj15ZXNdCi0rKQotKwotIEFDX0FSR19FTkFCTEUocHl0aG9uLWxp YnJhcnksCi0gICAgIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1weXRob24tbGlicmFyeV0sCi0g ICAgICAgICAgICAgICAgICAgIFtVc2UgaWJ1cyBweXRob24gbGlicmFyeV0pLAotQEAgLTQwNSwx MCArNDEzLDYgQEAgQUNfQVJHX0VOQUJMRShzZXR1cCwKLSAgICAgW2VuYWJsZV9zZXR1cD15ZXNd Ci0gKQotIAotLUFNX0NPTkRJVElPTkFMKFtFTkFCTEVfUFlUSE9OX0xJQlJBUlldLCBbdGVzdCB4 IiRlbmFibGVfcHl0aG9uX2xpYnJhcnkiID0geCJ5ZXMiXSkKLS1BTV9DT05ESVRJT05BTChbRU5B QkxFX1NFVFVQXSwgW3Rlc3QgeCIkZW5hYmxlX3NldHVwIiA9IHgieWVzIl0pCi0tQU1fQ09ORElU SU9OQUwoW0VOQUJMRV9EQUVNT05dLCBbdHJ1ZV0pCi0tCi0gIyBEZWZpbmUgcHl0aG9uIHZlcnNp b24KLSBBQ19BUkdfV0lUSChweXRob24sCi0gICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtcHl0 aG9uWz1QQVRIXV0sCi1AQCAtNDE3LDEyICs0MjEsMjQgQEAgQUNfQVJHX1dJVEgocHl0aG9uLAot ICkKLSAKLSBBTV9QQVRIX1BZVEhPTihbMi41XSkKLS1BQ19QQVRIX1BST0coUFlUSE9OMiwgcHl0 aG9uMikKLSAKLS1pZiB0ZXN0IHgiJFBZVEhPTjIiID0geCIiOyB0aGVuCi0tICAgIFBZVEhPTjI9 JFBZVEhPTgotK2lmIHRlc3QgeCIkZW5hYmxlX3B5dGhvbjIiICE9IHgieWVzIjsgdGhlbgotKyAg ICBlbmFibGVfcHl0aG9uX2xpYnJhcnk9bm8KLSsgICAgUFlUSE9OMj0KLSsgICAgZW5hYmxlX3B5 dGhvbjI9Im5vIChkaXNhYmxlZCwgdXNlIC0tZW5hYmxlLXB5dGhvbjIgdG8gZW5hYmxlKSIKLStl bHNlCi0rICAgIEFDX1BBVEhfUFJPRyhQWVRIT04yLCBweXRob24yKQotKwotKyAgICBpZiB0ZXN0 IHgiJFBZVEhPTjIiID0geCIiOyB0aGVuCi0rICAgICAgICBQWVRIT04yPSRQWVRIT04KLSsgICAg ZmkKLSBmaQotIAotK0FNX0NPTkRJVElPTkFMKFtFTkFCTEVfUFlUSE9OMl0sIFt0ZXN0IHgiJGVu YWJsZV9weXRob24yIiA9IHgieWVzIl0pCi0rQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9QWVRIT05f TElCUkFSWV0sIFt0ZXN0IHgiJGVuYWJsZV9weXRob25fbGlicmFyeSIgPSB4InllcyJdKQotK0FN X0NPTkRJVElPTkFMKFtFTkFCTEVfU0VUVVBdLCBbdGVzdCB4IiRlbmFibGVfc2V0dXAiID0geCJ5 ZXMiXSkKLStBTV9DT05ESVRJT05BTChbRU5BQkxFX0RBRU1PTl0sIFt0cnVlXSkKLSsKLSBQWUdP QkpFQ1RfUkVRVUlSRUQ9My4wLjAKLSAKLSBQS0dfQ0hFQ0tfRVhJU1RTKFtweWdvYmplY3QtMy4w ID49ICRQWUdPQkpFQ1RfUkVRVUlSRURdLAotQEAgLTQzNCw4ICs0NTAsMTAgQEAgaWYgdGVzdCAi eCRlbmFibGVfcHlnb2JqZWN0IiA9ICJ4eWVzIjsgdGhlbgotICAgICBweW92ZXJyaWRlc2Rpcj1g JFBZVEhPTiAtYyAiaW1wb3J0IGdpOyBwcmludChnaS5fb3ZlcnJpZGVzZGlyKSJgCi0gICAgIEFD X1NVQlNUKHB5b3ZlcnJpZGVzZGlyKQotIAotLSAgICBweTJvdmVycmlkZXNkaXI9YCRQWVRIT04y IC1jICJpbXBvcnQgZ2k7IHByaW50KGdpLl9vdmVycmlkZXNkaXIpImAKLS0gICAgQUNfU1VCU1Qo cHkyb3ZlcnJpZGVzZGlyKQotKyAgICBpZiB0ZXN0IHgiJGVuYWJsZV9weXRob24yIiA9IHgieWVz IjsgdGhlbgotKyAgICAgICAgcHkyb3ZlcnJpZGVzZGlyPWAkUFlUSE9OMiAtYyAiaW1wb3J0IGdp OyBwcmludChnaS5fb3ZlcnJpZGVzZGlyKSJgCi0rICAgICAgICBBQ19TVUJTVChweTJvdmVycmlk ZXNkaXIpCi0rICAgIGZpCi0gZmkKLSAKLSBBTV9DT05ESVRJT05BTChFTkFCTEVfUFlHT0JKRUNU LCB0ZXN0IHgiJGVuYWJsZV9weWdvYmplY3QiID0gInh5ZXMiKQotQEAgLTc1Miw2ICs3NzAsNyBA QCBCdWlsZCBvcHRpb25zOgotICAgQ0ZMQUdTICAgICAgICAgICAgICAgICAgICAgICAgJENGTEFH UwotICAgUFlUSE9OICAgICAgICAgICAgICAgICAgICAgICAgJFBZVEhPTgotICAgUFlUSE9OMiAg ICAgICAgICAgICAgICAgICAgICAgJFBZVEhPTjIKLSsgIEVuYWJsZSBweXRob24yICAgICAgICAg ICAgICAgICRlbmFibGVfcHl0aG9uMgotICAgR3RrMiBpbW1vZHVsZSBkaXIgICAgICAgICAgICAg JEdUSzJfSU1fTU9EVUxFRElSCi0gICBHdGszIGltbW9kdWxlIGRpciAgICAgICAgICAgICAkR1RL M19JTV9NT0RVTEVESVIKLSAgIEJ1aWxkIGd0azIgaW1tb2R1bGUgICAgICAgICAgICRlbmFibGVf Z3RrMgotLS0gCi0yLjE0LjMKLQotRnJvbSA3YmMxNjBmMjEzOTc5OWI4NTM2NzgyNjRjNmIwMTI3 N2YwNzIxMzM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZnVqaXdhcmF0IDx0YWth by5mdWppd2FyYTFAZ21haWwuY29tPgotRGF0ZTogRnJpLCAxMyBBcHIgMjAxOCAxOTozOTowOSAr MDkwMAotU3ViamVjdDogW1BBVENIXSBidXM6IEFkZCBESVNBQkxFX0dVSV9URVNUUyBmb3IgdGVz dC1zdHJlc3MKLQotLS0tCi0gYnVzL01ha2VmaWxlLmFtIHwgMiArLQotIDEgZmlsZSBjaGFuZ2Vk LCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYnVzL01ha2Vm aWxlLmFtIGIvYnVzL01ha2VmaWxlLmFtCi1pbmRleCA3NjE2NmEwZi4uZGRhNzllYWMgMTAwNjQ0 Ci0tLS0gYS9idXMvTWFrZWZpbGUuYW0KLSsrKyBiL2J1cy9NYWtlZmlsZS5hbQotQEAgLTExMCw3 ICsxMTAsNiBAQCBpZiBFTkFCTEVfRU1PSklfRElDVAotIEFNX0NGTEFHUyArPSAtREVNT0pJX0RJ Q1QKLSBlbmRpZgotIAotLQotIGlmIEVOQUJMRV9URVNUUwotIFRFU1RTID0gXAotIAl0ZXN0LW1h dGNocnVsZSBcCi1AQCAtMTIzLDYgKzEyMiw3IEBAIFRFU1RTX0VOVklST05NRU5UID0gXAotICAg ICB0b3Bfc3JjZGlyPSQodG9wX3NyY2RpcikgXAotICAgICBidWlsZGRpcj0kKGJ1aWxkZGlyKSBc Ci0gICAgIHNyY2Rpcj0kKHNyY2RpcikgXAotKyAgICBESVNBQkxFX0dVSV9URVNUUz0iJChESVNB QkxFX0dVSV9URVNUUykiIFwKLSAgICAgJChOVUxMKQotIAotIExPR19DT01QSUxFUiA9ICQodG9w X3NyY2Rpcikvc3JjL3Rlc3RzL3J1bnRlc3QKLS0tIAotMi4xNC4zCi0KLUZyb20gMTBjYzMwZWFj MjAwZDEwYjU4MWQ5ZDIxMjJkNWE3MzJmNDg4MDk0MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK LUZyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwg MTcgQXByIDIwMTggMTQ6MDA6MjAgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gc3JjL3Rlc3RzOiBF bmFibGUgR1NldHRpbmdzIGluIHJ1bnRlc3QKLQotLS0tCi0gc3JjL3Rlc3RzL3J1bnRlc3QgfCAy MiArKysrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDIyIGluc2VydGlvbnMo KykKLQotZGlmZiAtLWdpdCBhL3NyYy90ZXN0cy9ydW50ZXN0IGIvc3JjL3Rlc3RzL3J1bnRlc3QK LWluZGV4IDA5MDI2YmUwLi4zNTgyNWIxYiAxMDA3NTUKLS0tLSBhL3NyYy90ZXN0cy9ydW50ZXN0 Ci0rKysgYi9zcmMvdGVzdHMvcnVudGVzdAotQEAgLTM0LDYgKzM0LDggQEAgaWJ1cy1lbmdpbmUt c3dpdGNoCi0gaWJ1cy1jb21wb3NlCi0gdGVzdC1zdHJlc3MKLSAiCi0rSUJVU19TQ0hFTUFfRklM RT0nb3JnLmZyZWVkZXNrdG9wLmlidXMuZ3NjaGVtYS54bWwnCi0rCi0gcmV0dmFsPTAKLSAKLSAj IFBvcnRhYmxlIHJlcGxhY2VtZW50IG9mIGJhc2VuYW1lLgotQEAgLTkyLDYgKzk0LDEyIEBAIGZv ciB0IGluICRESVNBQkxFX0dVSV9URVNUUzsgZG8KLSAgICAgZmkKLSBkb25lCi0gCi0rIyBJQnVz RW5naW5lIGhhcyBHU2V0dGluZ3MKLStpZiB0ZXN0ICEgLWYgIiR0b3BfYnVpbGRkaXIvZGF0YS9k Y29uZi8kSUJVU19TQ0hFTUFfRklMRSIgOyB0aGVuCi0rICAgIGVjaG8gIk5PVCBGT1VORCAkdG9w X2J1aWxkZGlyL2RhdGEvZGNvbmYvJElCVVNfU0NIRU1BX0ZJTEUiCi0rICAgIGV4aXQgLTEKLStm aQotKwotIHJ1bl90ZXN0X2Nhc2UoKQotIHsKLSAgICAgdGVzdCAtZCAkdHN0ZGlyIHx8IG1rZGly ICR0c3RkaXIKLUBAIC0xMTQsNiArMTIyLDIwIEBAIHJ1bl90ZXN0X2Nhc2UoKQotICAgICAgICAg SUJVU19BRERSRVNTX0ZJTEU9JFBXRC9pYnVzLWRhZW1vbi5waWQKLSAgICAgICAgIGV4cG9ydCBJ QlVTX0FERFJFU1NfRklMRQotIAotKyAgICAgICAgY3AgIi4uLyR0b3BfYnVpbGRkaXIvZGF0YS9k Y29uZi8kSUJVU19TQ0hFTUFfRklMRSIgJFBXRAotKyAgICAgICAgZ2xpYi1jb21waWxlLXNjaGVt YXMgJFBXRAotKyAgICAgICAgaWYgdGVzdCAkPyAtbmUgMCA7IHRoZW4KLSsgICAgICAgICAgICBl Y2hvICJGQUlMRUQgZ2xpYi1jb21waWxlLXNjaGVtYXMiCi0rICAgICAgICAgICAgcmV0dmFsPTEK LSsgICAgICAgICAgICByZXR1cm4KLSsgICAgICAgIGZpCi0rICAgICAgICBpZiB0ZXN0ICEgLWYg JFBXRC9nc2NoZW1hcy5jb21waWxlZCA7IHRoZW4KLSsgICAgICAgICAgICBlY2hvICJOT1QgRk9V TkQgJFBXRC9nc2NoZW1hcy5jb21waWxlZCIKLSsgICAgICAgICAgICByZXR2YWw9MQotKyAgICAg ICAgICAgIHJldHVybgotKyAgICAgICAgZmkKLSsgICAgICAgIGV4cG9ydCBHU0VUVElOR1NfU0NI RU1BX0RJUj0kUFdECi0rCi0gICAgICAgICAjIFN0YXJ0IGlidXMtZGFlbW9uLgotICAgICAgICAg Li4vJHRvcF9idWlsZGRpci9idXMvaWJ1cy1kYWVtb24gXAotICAgICAgICAgLS1kYWVtb25pemUg XAotLS0gCi0yLjE0LjMKLQotRnJvbSAzMjgwODQ4YjQyYjA3YWZiYWMzZDU5MDY2NDc0YzVmNDI5 ZGU5MTgyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZnVqaXdhcmF0IDx0YWthby5m dWppd2FyYTFAZ21haWwuY29tPgotRGF0ZTogVHVlLCAxNyBBcHIgMjAxOCAxNDo0MzowMiArMDkw MAotU3ViamVjdDogW1BBVENIXSBidXM6IEVuYWJsZSBzdWIgcGFja2FnZSBvZiBndGtleHRlbnNp b24ueG1sIGFuZAotIGlidXMtZXh0ZW5zaW9uLWd0azMKLQotR05PTUUgZGVzdGtvcCBhc2tlZCBu b3QgdG8gaW5zdGFsbCBpYnVzLWV4dGVuc2lvbi1ndGszIGJ5IGRlZmF1bHQKLXNpbmNlIHRoZSBV SSBpcyBub3QgY2FsbGVkIGJ5IGdub21lLXNoZWxsLgotCi1CVUc9cmhieiMxNTY3Njg5Ci0tLS0K LSBidXMvbWFpbi5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBk ZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYnVzL21haW4uYyBiL2J1cy9tYWluLmMKLWluZGV4 IDdhYTg5ZmM0Li5lMWNjNDIzYiAxMDA2NDQKLS0tLSBhL2J1cy9tYWluLmMKLSsrKyBiL2J1cy9t YWluLmMKLUBAIC0yOTMsNyArMjkzLDcgQEAgbWFpbiAoZ2ludCBhcmdjLCBnY2hhciAqKmFyZ3Yp Ci0gICAgICAgICBpZiAoY29tcG9uZW50KSB7Ci0gICAgICAgICAgICAgYnVzX2NvbXBvbmVudF9z ZXRfcmVzdGFydCAoY29tcG9uZW50LCByZXN0YXJ0KTsKLSAgICAgICAgIH0KLS0gICAgICAgIGlm IChjb21wb25lbnQgPT0gTlVMTCB8fAotKyAgICAgICAgaWYgKGNvbXBvbmVudCAhPSBOVUxMICYm Ci0gICAgICAgICAgICAgIWJ1c19jb21wb25lbnRfc3RhcnQgKGNvbXBvbmVudCwgZ192ZXJib3Nl KSkgewotICAgICAgICAgICAgIGdfcHJpbnRlcnIgKCJDYW4gbm90IGV4ZWN1dGUgZGVmYXVsdCBw YW5lbCBwcm9ncmFtXG4iKTsKLSAgICAgICAgICAgICBleGl0ICgtMSk7Ci0tLSAKLTIuMTQuMwot Ci1Gcm9tIGQ4ZjkwMWY4NTZkZGQ3NWJhYmE1ODI2MDM4ZDEzNDZjNWE0M2QwNDggTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCi1Gcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5j b20+Ci1EYXRlOiBGcmksIDIwIEFwciAyMDE4IDE1OjU4OjA2ICswOTAwCi1TdWJqZWN0OiBbUEFU Q0hdIFJlcGxhY2UgT25seVNob3dJbj0gd2l0aCBOb0Rpc3BsYXk9dHJ1ZQotCi1CVUc9cmhieiMx NTY3Njg5Ci0tLS0KLSB1aS9ndGszL2lidXMtZXh0ZW5zaW9uLWd0azMuZGVza3RvcC5pbi5pbiB8 IDIgKy0KLSB1aS9ndGszL2lidXMtdWktZW1vamllci5kZXNrdG9wLmluLmluICAgICB8IDIgKy0K LSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlm ZiAtLWdpdCBhL3VpL2d0azMvaWJ1cy1leHRlbnNpb24tZ3RrMy5kZXNrdG9wLmluLmluIGIvdWkv Z3RrMy9pYnVzLWV4dGVuc2lvbi1ndGszLmRlc2t0b3AuaW4uaW4KLWluZGV4IDZlYzU1ODVmLi5h MTE5ZWM4ZSAxMDA2NDQKLS0tLSBhL3VpL2d0azMvaWJ1cy1leHRlbnNpb24tZ3RrMy5kZXNrdG9w LmluLmluCi0rKysgYi91aS9ndGszL2lidXMtZXh0ZW5zaW9uLWd0azMuZGVza3RvcC5pbi5pbgot QEAgLTMsNCArMyw0IEBAIF9OYW1lPUVtb2ppIENob2ljZQotIEljb249aWJ1cwotIEV4ZWM9QGxp YmV4ZWNkaXJAL2lidXMtZXh0ZW5zaW9uLWd0azMKLSBUeXBlPUFwcGxpY2F0aW9uCi0tT25seVNo b3dJbj0KLStOb0Rpc3BsYXk9dHJ1ZQotZGlmZiAtLWdpdCBhL3VpL2d0azMvaWJ1cy11aS1lbW9q aWVyLmRlc2t0b3AuaW4uaW4gYi91aS9ndGszL2lidXMtdWktZW1vamllci5kZXNrdG9wLmluLmlu Ci1pbmRleCBmNGI3NTBhOC4uNmQ5NDIyZDUgMTAwNjQ0Ci0tLS0gYS91aS9ndGszL2lidXMtdWkt ZW1vamllci5kZXNrdG9wLmluLmluCi0rKysgYi91aS9ndGszL2lidXMtdWktZW1vamllci5kZXNr dG9wLmluLmluCi1AQCAtMyw0ICszLDQgQEAgX05hbWU9RW1vamkgQ2hvaWNlCi0gSWNvbj1pYnVz Ci0gRXhlYz1pYnVzIGVtb2ppCi0gVHlwZT1BcHBsaWNhdGlvbgotLU9ubHlTaG93SW49Ci0rTm9E aXNwbGF5PXRydWUKLS0tIAotMi4xNC4zCi0KLUZyb20gODg2YWQzNjUxZDE2ZGQ4MjFlMjUyNmU4 NjAxYzY5NzM4NTMzYTdlOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGZ1aml3YXJh dCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgNyBNYXkgMjAxOCAxMjoz NTowMyArMDkwMAotU3ViamVjdDogW1BBVENIXSBzcmM6IEZpeCBTRUdWIGluIElCdXNFbmdpbmUg aWYgbm8gZW1vamkgc2hvcnRjdXQga2V5cwotCi1CVUc9aHR0cHM6Ly9naXRodWIuY29tL2lidXMv aWJ1cy9pc3N1ZXMvMjAwNQotLS0tCi0gc3JjL2lidXNlbmdpbmUuYyB8IDMgKysrCi0gMSBmaWxl IGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2lidXNlbmdpbmUu YyBiL3NyYy9pYnVzZW5naW5lLmMKLWluZGV4IDlhMGIxYThhLi5mZDYxMTAyYSAxMDA2NDQKLS0t LSBhL3NyYy9pYnVzZW5naW5lLmMKLSsrKyBiL3NyYy9pYnVzZW5naW5lLmMKLUBAIC05MjUsNiAr OTI1LDkgQEAgaWJ1c19lbmdpbmVfZmlsdGVyX2tleV9ldmVudCAoSUJ1c0VuZ2luZSAqZW5naW5l LAotICAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoSUJVU19JU19FTkdJTkUgKGVuZ2luZSksIEZB TFNFKTsKLSAKLSAgICAgcHJpdiA9IGVuZ2luZS0+cHJpdjsKLSsgICAgaWYgKCFwcml2LT5lbW9q aV9rZXliaW5kaW5ncykKLSsgICAgICAgIHJldHVybiBGQUxTRTsKLSsKLSAgICAgbW9kaWZpZXJz ID0gc3RhdGUgJiBJQlVTX01PRElGSUVSX0ZJTFRFUjsKLSAgICAgaWYgKGtleXZhbCA+PSBJQlVT X0tFWV9BICYmIGtleXZhbCA8PSBJQlVTX0tFWV9aICYmCi0gICAgICAgICAobW9kaWZpZXJzICYg SUJVU19TSElGVF9NQVNLKSAhPSAwKSB7Ci0tLSAKLTIuMTQuMwotCi1Gcm9tIDE5NjIxNmE4OWE5 MTY3NDI1ZGQ5YjQxZjRmMWQ4YTQ5NGQzNzAyNDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1G cm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDEx IE1heSAyMDE4IDE5OjEzOjAzICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNyYzogQWRkIGlidXMt a2V5cHJlc3MKLQotLS0tCi0gY29uZmlndXJlLmFjICAgICAgICAgICAgICB8ICAgOCArKwotIHNy Yy90ZXN0cy9NYWtlZmlsZS5hbSAgICAgfCAgIDcgKysKLSBzcmMvdGVzdHMvaWJ1cy1rZXlwcmVz cy5jIHwgMjk4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK LSBzcmMvdGVzdHMvcnVudGVzdCAgICAgICAgIHwgICAxICsKLSA0IGZpbGVzIGNoYW5nZWQsIDMx NCBpbnNlcnRpb25zKCspCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0cy9pYnVzLWtleXBy ZXNzLmMKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXgg MDg1Y2VjYjguLmYzMzJhNzc1IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25m aWd1cmUuYWMKLUBAIC02MjEsNiArNjIxLDE0IEBAIGlmIHRlc3QgeCIkZW5hYmxlX2xpYm5vdGlm eSIgPSB4InllcyI7IHRoZW4KLSAgICAgZW5hYmxlX2xpYm5vdGlmeT0ieWVzIChlbmFibGVkLCB1 c2UgLS1kaXNhYmxlLWxpYm5vdGlmeSB0byBkaXNhYmxlKSIKLSBmaQotIAotK1BLR19DSEVDS19N T0RVTEVTKFhURVNULAotKyAgICBbeDExIHh0c3RdLAotKyAgICBbZW5hYmxlX3h0ZXN0PXllc10s Ci0rICAgIFtlbmFibGVfeHRlc3Q9bm9dCi0rKQotK0FNX0NPTkRJVElPTkFMKFtFTkFCTEVfWFRF U1RdLCBbdGVzdCB4IiRlbmFibGVfeHRlc3QiID0geCJ5ZXMiXSkKLSsKLSsKLSAjIC0tZGlzYWJs ZS1lbW9qaS1kaWN0IG9wdGlvbi4KLSBBQ19BUkdfRU5BQkxFKGVtb2ppLWRpY3QsCi0gICAgIEFT X0hFTFBfU1RSSU5HKFstLWRpc2FibGUtZW1vamktZGljdF0sCi1kaWZmIC0tZ2l0IGEvc3JjL3Rl c3RzL01ha2VmaWxlLmFtIGIvc3JjL3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCAxMWViYjUzMS4u NWYyMWViY2QgMTAwNjQ0Ci0tLS0gYS9zcmMvdGVzdHMvTWFrZWZpbGUuYW0KLSsrKyBiL3NyYy90 ZXN0cy9NYWtlZmlsZS5hbQotQEAgLTYxLDYgKzYxLDkgQEAgZW5kaWYKLSAKLSBpZiBFTkFCTEVf R1RLMwotIFRFU1RTICs9IGlidXMtY29tcG9zZQotK2lmIEVOQUJMRV9YVEVTVAotK1RFU1RTICs9 IGlidXMta2V5cHJlc3MKLStlbmRpZgotIGVuZGlmCi0gCi0gVEVTVFNfRU5WSVJPTk1FTlQgPSBc Ci1AQCAtMTAzLDYgKzEwNiwxMCBAQCBpYnVzX2lucHV0Y29udGV4dF9jcmVhdGVfTERBREQgPSAk KHByb2dfbGRhZGQpCi0gaWJ1c19rZXluYW1lc19TT1VSQ0VTID0gaWJ1cy1rZXluYW1lcy5jCi0g aWJ1c19rZXluYW1lc19MREFERCA9ICQocHJvZ19sZGFkZCkKLSAKLStpYnVzX2tleXByZXNzX1NP VVJDRVMgPSBpYnVzLWtleXByZXNzLmMKLStpYnVzX2tleXByZXNzX0NGTEFHUyA9IEBHVEszX0NG TEFHU0AgQFhURVNUX0NGTEFHU0AKLStpYnVzX2tleXByZXNzX0xEQUREID0gJChwcm9nX2xkYWRk KSBAR1RLM19MSUJTQCBAWFRFU1RfTElCU0AKLSsKLSBpYnVzX3JlZ2lzdHJ5X1NPVVJDRVMgPSBp YnVzLXJlZ2lzdHJ5LmMKLSBpYnVzX3JlZ2lzdHJ5X0xEQUREID0gJChwcm9nX2xkYWRkKQotIAot ZGlmZiAtLWdpdCBhL3NyYy90ZXN0cy9pYnVzLWtleXByZXNzLmMgYi9zcmMvdGVzdHMvaWJ1cy1r ZXlwcmVzcy5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAuLjM0ODY1MjNi Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvdGVzdHMvaWJ1cy1rZXlwcmVzcy5jCi1AQCAtMCww ICsxLDI5OCBAQAotKyNpbmNsdWRlIDxndGsvZ3RrLmg+Ci0rI2luY2x1ZGUgPGdkay9nZGt4Lmg+ Ci0rI2luY2x1ZGUgImlidXMuaCIKLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPFgx MS9YbGliLmg+Ci0rI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hUZXN0Lmg+Ci0rCi0rI2RlZmlu ZSBHUkVFTiAiXDAzM1swOzMybSIKLSsjZGVmaW5lIFJFRCAgICJcMDMzWzA7MzFtIgotKyNkZWZp bmUgTkMgICAgIlwwMzNbMG0iCi0rCi0rdHlwZWRlZiBzdHJ1Y3QgX0tleURhdGEgewotKyAgICBn dWludCBrZXl2YWw7Ci0rICAgIGd1aW50IG1vZGlmaWVyczsKLSt9IEtleURhdGE7Ci0rCi0rc3Rh dGljIGNvbnN0IEtleURhdGEgdGVzdF9jYXNlc1tdWzMwXSA9IHsKLSsgICB7IHsgSUJVU19LRVlf YSwgMCB9LCB7IElCVVNfS0VZX2NvbW1hLCBJQlVTX1NISUZUX01BU0sgfSwKLSsgICAgIHsgSUJV U19LRVlfYiwgMCB9LCB7IElCVVNfS0VZX3BlcmlvZCwgSUJVU19TSElGVF9NQVNLIH0sCi0rICAg ICB7IElCVVNfS0VZX2MsIDAgfSwgeyBJQlVTX0tFWV9zbGFzaCwgSUJVU19TSElGVF9NQVNLIH0s Ci0rICAgICB7IElCVVNfS0VZX2QsIDAgfSwgeyBJQlVTX0tFWV9zZW1pY29sb24sIElCVVNfU0hJ RlRfTUFTSyB9LAotKyAgICAgeyBJQlVTX0tFWV9lLCAwIH0sIHsgSUJVU19LRVlfYXBvc3Ryb3Bo ZSwgSUJVU19TSElGVF9NQVNLIH0sCi0rICAgICB7IElCVVNfS0VZX2YsIDAgfSwgeyBJQlVTX0tF WV9icmFja2V0bGVmdCwgSUJVU19TSElGVF9NQVNLIH0sCi0rICAgICB7IElCVVNfS0VZX2csIDAg fSwgeyBJQlVTX0tFWV9iYWNrc2xhc2gsIElCVVNfU0hJRlRfTUFTSyB9LAotKyAgICAgeyAwLCAw IH0gfSwKLSsgICB7IHsgSUJVU19LRVlfZ3JhdmUsIElCVVNfU0hJRlRfTUFTSyB9LCB7IElCVVNf S0VZX2EsIElCVVNfU0hJRlRfTUFTSyB9LAotKyAgICAgeyBJQlVTX0tFWV8xLCBJQlVTX1NISUZU X01BU0sgfSwgeyBJQlVTX0tFWV9iLCBJQlVTX1NISUZUX01BU0sgIH0sCi0rICAgICB7IElCVVNf S0VZXzIsIElCVVNfU0hJRlRfTUFTSyB9LCB7IElCVVNfS0VZX2MsIElCVVNfU0hJRlRfTUFTSyAg fSwKLSsgICAgIHsgSUJVU19LRVlfMywgSUJVU19TSElGVF9NQVNLIH0sIHsgSUJVU19LRVlfZCwg SUJVU19TSElGVF9NQVNLIH0sCi0rICAgICB7IElCVVNfS0VZXzksIElCVVNfU0hJRlRfTUFTSyB9 LCB7IElCVVNfS0VZX2UsIElCVVNfU0hJRlRfTUFTSyB9LAotKyAgICAgeyBJQlVTX0tFWV8wLCBJ QlVTX1NISUZUX01BU0sgfSwgeyBJQlVTX0tFWV9mLCBJQlVTX1NISUZUX01BU0sgfSwKLSsgICAg IHsgSUJVU19LRVlfZXF1YWwsIElCVVNfU0hJRlRfTUFTSyB9LCB7IElCVVNfS0VZX2csIElCVVNf U0hJRlRfTUFTSyB9LAotKyAgICAgeyAwLCAwIH0gfSwKLSsgICB7IHsgMCwgMCB9IH0KLSt9Owot KwotK0tleURhdGEgdGVzdF9lbmRfa2V5ID0geyBJQlVTX0tFWV96LCBJQlVTX1NISUZUX01BU0sg fTsKLSsKLStzdGF0aWMgY29uc3QgZ3VuaWNoYXIgdGVzdF9yZXN1bHRzW11bNjBdID0gewotKyAg IHsgJ2EnLCAnPCcsICdiJywgJz4nLCAnYycsICc/JywgJ2QnLCAnOicsICdlJywgJyInLCAnZics ICd7JywgJ2cnLCAnfCcsIDAgfSwKLSsgICB7ICd+JywgJ0EnLCAnIScsICdCJywgJ0AnLCAnQycs ICcjJywgJ0QnLCAnKCcsICdFJywgJyknLCAnRicsICcrJywgJ0cnLCAwIH0sCi0rICAgeyAwIH0K LSt9OwotKwotKwotK0lCdXNCdXMgKm1fYnVzOwotK0lCdXNFbmdpbmUgKm1fZW5naW5lOwotKwot K3N0YXRpYyBnYm9vbGVhbiB3aW5kb3dfZm9jdXNfaW5fZXZlbnRfY2IgKEd0a1dpZGdldCAgICAg KmVudHJ5LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdka0V2 ZW50Rm9jdXMgKmV2ZW50LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGdwb2ludGVyICAgICAgIGRhdGEpOwotKwotK3N0YXRpYyBJQnVzRW5naW5lICoKLStjcmVh dGVfZW5naW5lX2NiIChJQnVzRmFjdG9yeSAqZmFjdG9yeSwgY29uc3QgZ2NoYXIgKm5hbWUsIGdw b2ludGVyIGRhdGEpCi0rewotKyAgICBzdGF0aWMgaW50IGkgPSAxOwotKyAgICBnY2hhciAqZW5n aW5lX3BhdGggPQotKyAgICAgICAgICAgIGdfc3RyZHVwX3ByaW50ZiAoIi9vcmcvZnJlZWRlc2t0 b3AvSUJ1cy9lbmdpbmUvc2ltcGxldGVzdC8lZCIsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpKyspOwotKwotKyAgICBtX2VuZ2luZSA9IGlidXNfZW5naW5lX25ld193aXRoX3R5cGUg KElCVVNfVFlQRV9FTkdJTkVfU0lNUExFLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG5hbWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZW5naW5lX3BhdGgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaWJ1c19idXNfZ2V0X2Nvbm5lY3Rpb24gKG1fYnVzKSk7Ci0rICAgIGdfZnJlZSAoZW5n aW5lX3BhdGgpOwotKyAgICByZXR1cm4gbV9lbmdpbmU7Ci0rfQotKwotK3N0YXRpYyBnYm9vbGVh bgotK3JlZ2lzdGVyX2lidXNfZW5naW5lICgpCi0rewotKyAgICBJQnVzRmFjdG9yeSAqZmFjdG9y eTsKLSsgICAgSUJ1c0NvbXBvbmVudCAqY29tcG9uZW50OwotKyAgICBJQnVzRW5naW5lRGVzYyAq ZGVzYzsKLSsKLSsgICAgbV9idXMgPSBpYnVzX2J1c19uZXcgKCk7Ci0rICAgIGlmICghaWJ1c19i dXNfaXNfY29ubmVjdGVkIChtX2J1cykpIHsKLSsgICAgICAgIGdfY3JpdGljYWwgKCJpYnVzLWRh ZW1vbiBpcyBub3QgcnVubmluZy4iKTsKLSsgICAgICAgIHJldHVybiBGQUxTRTsKLSsgICAgfQot KyAgICBmYWN0b3J5ID0gaWJ1c19mYWN0b3J5X25ldyAoaWJ1c19idXNfZ2V0X2Nvbm5lY3Rpb24g KG1fYnVzKSk7Ci0rICAgIGdfc2lnbmFsX2Nvbm5lY3QgKGZhY3RvcnksICJjcmVhdGUtZW5naW5l IiwKLSsgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAoY3JlYXRlX2VuZ2luZV9jYiks IE5VTEwpOwotKwotKyAgICBjb21wb25lbnQgPSBpYnVzX2NvbXBvbmVudF9uZXcgKAotKyAgICAg ICAgICAgICJvcmcuZnJlZWRlc2t0b3AuSUJ1cy5TaW1wbGVUZXN0IiwKLSsgICAgICAgICAgICAi U2ltcGxlIEVuZ2luZSBUZXN0IiwKLSsgICAgICAgICAgICAiMC4wLjEiLAotKyAgICAgICAgICAg ICJHUEwiLAotKyAgICAgICAgICAgICJUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdt YWlsLmNvbT4iLAotKyAgICAgICAgICAgICJodHRwczovL2dpdGh1Yi5jb20vaWJ1cy9pYnVzL3dp a2kiLAotKyAgICAgICAgICAgICIiLAotKyAgICAgICAgICAgICJpYnVzIik7Ci0rICAgIGRlc2Mg PSBpYnVzX2VuZ2luZV9kZXNjX25ldyAoCi0rICAgICAgICAgICAgInhrYnRlc3Q6dXM6OmVuZyIs Ci0rICAgICAgICAgICAgIlhLQiBUZXN0IiwKLSsgICAgICAgICAgICAiWEtCIFRlc3QiLAotKyAg ICAgICAgICAgICJlbiIsCi0rICAgICAgICAgICAgIkdQTCIsCi0rICAgICAgICAgICAgIlRha2Fv IEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPiIsCi0rICAgICAgICAgICAgImli dXMtZW5naW5lIiwKLSsgICAgICAgICAgICAidXMiKTsKLSsgICAgaWJ1c19jb21wb25lbnRfYWRk X2VuZ2luZSAoY29tcG9uZW50LCBkZXNjKTsKLSsgICAgaWJ1c19idXNfcmVnaXN0ZXJfY29tcG9u ZW50IChtX2J1cywgY29tcG9uZW50KTsKLSsKLSsgICAgcmV0dXJuIFRSVUU7Ci0rfQotKwotK3N0 YXRpYyBnYm9vbGVhbgotK2Zpbml0IChncG9pbnRlciBkYXRhKQotK3sKLSsgICAgZ19jcml0aWNh bCAoInRpbWUgb3V0Iik7Ci0rICAgIGd0a19tYWluX3F1aXQgKCk7Ci0rICAgIHJldHVybiBGQUxT RTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStzZW5kX2tleV9ldmVudCAoRGlzcGxheSAqeGRpc3Bs YXksCi0rICAgICAgICAgICAgICAgIGd1aW50ICAgIGtleXZhbCwKLSsgICAgICAgICAgICAgICAg Z3VpbnQgICAgbW9kaWZpZXJzKQotK3sKLSsgICAgc3RhdGljIHN0cnVjdCB7Ci0rICAgICAgICBn dWludCAgIHN0YXRlOwotKyAgICAgICAgS2V5U3ltICBrZXlzeW07Ci0rICAgIH0gc3RhdGUya2V5 c3ltW10gPSB7Ci0rICAgICAgICB7IElCVVNfQ09OVFJPTF9NQVNLLCBYS19Db250cm9sX0wgfSAs Ci0rICAgICAgICB7IElCVVNfTU9EMV9NQVNLLCAgICBYS19BbHRfTCB9LAotKyAgICAgICAgeyBJ QlVTX01PRDRfTUFTSywgICAgWEtfU3VwZXJfTCB9LAotKyAgICAgICAgeyBJQlVTX1NISUZUX01B U0ssICAgWEtfU2hpZnRfTCB9LAotKyAgICAgICAgeyBJQlVTX0xPQ0tfTUFTSywgICAgWEtfQ2Fw c19Mb2NrIH0sCi0rICAgICAgICB7IDAsICAgICAgICAgICAwTCB9Ci0rICAgIH07Ci0rICAgIGlu dCBpOwotKyAgICBndWludCBrZXljb2RlOwotKyAgICBndWludCBzdGF0ZSA9IG1vZGlmaWVyczsK LSsKLSsgICAgd2hpbGUgKHN0YXRlKSB7Ci0rICAgICAgICBmb3IgKGkgPSAwOyBzdGF0ZTJrZXlz eW1baV0uc3RhdGU7IGkrKykgewotKyAgICAgICAgICAgIGlmICgoc3RhdGUya2V5c3ltW2ldLnN0 YXRlICYgc3RhdGUpICE9IDApIHsKLSsgICAgICAgICAgICAgICAga2V5Y29kZSA9IFhLZXlzeW1U b0tleWNvZGUgKHhkaXNwbGF5LCBzdGF0ZTJrZXlzeW1baV0ua2V5c3ltKTsKLSsgICAgICAgICAg ICAgICAgWFRlc3RGYWtlS2V5RXZlbnQgKHhkaXNwbGF5LCBrZXljb2RlLCBUcnVlLCBDdXJyZW50 VGltZSk7Ci0rICAgICAgICAgICAgICAgIFhTeW5jICh4ZGlzcGxheSwgRmFsc2UpOwotKyAgICAg ICAgICAgICAgICBzdGF0ZSBePSBzdGF0ZTJrZXlzeW1baV0uc3RhdGU7Ci0rICAgICAgICAgICAg ICAgIGJyZWFrOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgIH0KLSsgICAgfQotKyAgICBrZXlj b2RlID0gWEtleXN5bVRvS2V5Y29kZSAoeGRpc3BsYXksIGtleXZhbCk7Ci0rICAgIFhUZXN0RmFr ZUtleUV2ZW50ICh4ZGlzcGxheSwga2V5Y29kZSwgVHJ1ZSwgQ3VycmVudFRpbWUpOwotKyAgICBY U3luYyAoeGRpc3BsYXksIEZhbHNlKTsKLSsgICAgWFRlc3RGYWtlS2V5RXZlbnQgKHhkaXNwbGF5 LCBrZXljb2RlLCBGYWxzZSwgQ3VycmVudFRpbWUpOwotKyAgICBYU3luYyAoeGRpc3BsYXksIEZh bHNlKTsKLSsKLSsgICAgc3RhdGUgPSBtb2RpZmllcnM7Ci0rICAgIHdoaWxlIChzdGF0ZSkgewot KyAgICAgICAgZm9yIChpID0gR19OX0VMRU1FTlRTIChzdGF0ZTJrZXlzeW0pIC0gMTsgaSA+PSAw OyBpLS0pIHsKLSsgICAgICAgICAgICBpZiAoKHN0YXRlMmtleXN5bVtpXS5zdGF0ZSAmIHN0YXRl KSAhPSAwKSB7Ci0rICAgICAgICAgICAgICAgIGtleWNvZGUgPSBYS2V5c3ltVG9LZXljb2RlICh4 ZGlzcGxheSwgc3RhdGUya2V5c3ltW2ldLmtleXN5bSk7Ci0rICAgICAgICAgICAgICAgIFhUZXN0 RmFrZUtleUV2ZW50ICh4ZGlzcGxheSwga2V5Y29kZSwgRmFsc2UsIEN1cnJlbnRUaW1lKTsKLSsg ICAgICAgICAgICAgICAgWFN5bmMgKHhkaXNwbGF5LCBGYWxzZSk7Ci0rICAgICAgICAgICAgICAg IHN0YXRlIF49IHN0YXRlMmtleXN5bVtpXS5zdGF0ZTsKLSsgICAgICAgICAgICAgICAgYnJlYWs7 Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgfQotKyAgICB9Ci0rfQotKwotK3N0YXRpYyB2b2lk Ci0rc2V0X2VuZ2luZV9jYiAoR09iamVjdCAgICAgICpvYmplY3QsCi0rICAgICAgICAgICAgICAg R0FzeW5jUmVzdWx0ICpyZXMsCi0rICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICBkYXRhKQot K3sKLSsgICAgSUJ1c0J1cyAqYnVzID0gSUJVU19CVVMgKG9iamVjdCk7Ci0rICAgIEd0a1dpZGdl dCAqZW50cnkgPSBHVEtfV0lER0VUIChkYXRhKTsKLSsgICAgR2RrRGlzcGxheSAqZGlzcGxheTsK LSsgICAgRGlzcGxheSAqeGRpc3BsYXk7Ci0rICAgIEdFcnJvciAqZXJyb3IgPSBOVUxMOwotKyAg ICBpbnQgaSwgajsKLSsKLSsgICAgZ19hc3NlcnQgKEdUS19JU19FTlRSWSAoZW50cnkpKTsKLSsK LSsgICAgaWYgKCFpYnVzX2J1c19zZXRfZ2xvYmFsX2VuZ2luZV9hc3luY19maW5pc2ggKGJ1cywg cmVzLCAmZXJyb3IpKSB7Ci0rICAgICAgICBnX2NyaXRpY2FsICgic2V0IGVuZ2luZSBmYWlsZWQ6 ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOwotKyAgICAgICAgZ19lcnJvcl9mcmVlIChlcnJvcik7Ci0r ICAgICAgICByZXR1cm47Ci0rICAgIH0KLSsKLSsgICAgZGlzcGxheSA9IGd0a193aWRnZXRfZ2V0 X2Rpc3BsYXkgKGVudHJ5KTsKLSsgICAgaWYgKEdES19JU19YMTFfRElTUExBWSAoZGlzcGxheSkp IHsKLSsgICAgICAgIHhkaXNwbGF5ID0gZ2RrX3gxMV9kaXNwbGF5X2dldF94ZGlzcGxheSAoZGlz cGxheSk7Ci0rICAgIH0gZWxzZSB7Ci0rI2lmIDAKLSsgICAgICAgIHhkaXNwbGF5ID0gWE9wZW5E aXNwbGF5IChOVUxMKTsKLSsjZWxzZQotKyAgICAgICAgZ19jcml0aWNhbCAoIk5vIGlkZWEgdG8g c2ltdWxhdGUga2V5IGV2ZW50cyBpbiBXYXlsYW5kXG4iKTsKLSsjZW5kaWYKLSsgICAgfQotKyAg ICBnX3JldHVybl9pZl9mYWlsICh4ZGlzcGxheSk7Ci0rCi0rICAgIGZvciAoaSA9IDA7IHRlc3Rf Y2FzZXNbaV1bMF0ua2V5dmFsOyBpKyspIHsKLSsgICAgICAgIGZvciAoaiA9IDA7IHRlc3RfY2Fz ZXNbaV1bal0ua2V5dmFsOyBqKyspIHsKLSsgICAgICAgICAgICBzZW5kX2tleV9ldmVudCAoeGRp c3BsYXksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY2FzZXNbaV1bal0ua2V5 dmFsLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2Nhc2VzW2ldW2pdLm1vZGlm aWVycyk7Ci0rICAgICAgICB9Ci0rICAgICAgICBzZW5kX2tleV9ldmVudCAoeGRpc3BsYXksIHRl c3RfZW5kX2tleS5rZXl2YWwsIHRlc3RfZW5kX2tleS5tb2RpZmllcnMpOwotKyAgICB9Ci0rCi0r ICAgIGdfdGltZW91dF9hZGRfc2Vjb25kcyAoMTAsIGZpbml0LCBOVUxMKTsKLSt9Ci0rCi0rc3Rh dGljIGdib29sZWFuCi0rd2luZG93X2ZvY3VzX2luX2V2ZW50X2NiIChHdGtXaWRnZXQgKmVudHJ5 LCBHZGtFdmVudEZvY3VzICpldmVudCwgZ3BvaW50ZXIgZGF0YSkKLSt7Ci0rICAgIGdfYXNzZXJ0 IChtX2J1cyAhPSBOVUxMKTsKLSsgICAgaWJ1c19idXNfc2V0X2dsb2JhbF9lbmdpbmVfYXN5bmMg KG1fYnVzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInhrYnRlc3Q6 dXM6OmVuZyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfZW5naW5lX2NiLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZW50cnkpOwotKyAgICByZXR1cm4gRkFMU0U7Ci0rfQot KwotK3N0YXRpYyB2b2lkCi0rd2luZG93X2luc2VydGVkX3RleHRfY2IgKEd0a0VudHJ5QnVmZmVy ICpidWZmZXIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICBwb3Np dGlvbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgKmNoYXJzLAot KyAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgbmNoYXJzLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICBncG9pbnRlciAgICAgICAgZGF0YSkKLSt7Ci0rICAgIEd0a1dp ZGdldCAqZW50cnkgPSBkYXRhOwotKyAgICBzdGF0aWMgaW50IGkgPSAwOwotKyAgICBzdGF0aWMg aW50IGogPSAwOwotKwotKyAgICBpZiAoZ191dGY4X2dldF9jaGFyIChjaGFycykgPT0gJ1onKSB7 Ci0rICAgICAgICBpbnQgazsKLSsgICAgICAgIGdfcHJpbnQgKCJcbiIgR1JFRU4gIlBBU1MiIE5D ICI6ICIpOwotKyAgICAgICAgZm9yIChrID0gMDsgayA8IGo7IGsrKykKLSsgICAgICAgICAgICBn X3ByaW50ICgiJWxjKCVYKSAiLCB0ZXN0X3Jlc3VsdHNbaV1ba10sIHRlc3RfcmVzdWx0c1tpXVtr XSk7Ci0rICAgICAgICBnX3ByaW50ICgiXG4iKTsKLSsgICAgICAgIGkrKzsKLSsgICAgICAgIGog PSAwOwotKyAgICAgICAgaWYgKHRlc3RfcmVzdWx0c1tpXVswXSA9PSAwKQotKyAgICAgICAgICAg IGd0a19tYWluX3F1aXQgKCk7Ci0rICAgICAgICBlbHNlCi0rICAgICAgICAgICAgZ3RrX2VudHJ5 X3NldF90ZXh0IChHVEtfRU5UUlkgKGVudHJ5KSwgIiIpOwotKyAgICAgICAgcmV0dXJuOwotKyAg ICB9Ci0rICAgIGdfYXNzZXJ0IChnX3V0ZjhfZ2V0X2NoYXIgKGNoYXJzKSA9PSB0ZXN0X3Jlc3Vs dHNbaV1bal0pOwotKyAgICBqKys7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rY3JlYXRlX3dpbmRv dyAoKQotK3sKLSsgICAgR3RrV2lkZ2V0ICp3aW5kb3cgPSBndGtfd2luZG93X25ldyAoR1RLX1dJ TkRPV19UT1BMRVZFTCk7Ci0rICAgIEd0a1dpZGdldCAqZW50cnkgPSBndGtfZW50cnlfbmV3ICgp OwotKyAgICBHdGtFbnRyeUJ1ZmZlciAqYnVmZmVyOwotKwotKyAgICBnX3NpZ25hbF9jb25uZWN0 ICh3aW5kb3csICJkZXN0cm95IiwKLSsgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAo Z3RrX21haW5fcXVpdCksIE5VTEwpOwotKyAgICBnX3NpZ25hbF9jb25uZWN0IChlbnRyeSwgImZv Y3VzLWluLWV2ZW50IiwKLSsgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAod2luZG93 X2ZvY3VzX2luX2V2ZW50X2NiKSwgTlVMTCk7Ci0rICAgIGJ1ZmZlciA9IGd0a19lbnRyeV9nZXRf YnVmZmVyIChHVEtfRU5UUlkgKGVudHJ5KSk7Ci0rICAgIGdfc2lnbmFsX2Nvbm5lY3QgKGJ1ZmZl ciwgImluc2VydGVkLXRleHQiLAotKyAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLICh3 aW5kb3dfaW5zZXJ0ZWRfdGV4dF9jYiksIGVudHJ5KTsKLSsgICAgZ3RrX2NvbnRhaW5lcl9hZGQg KEdUS19DT05UQUlORVIgKHdpbmRvdyksIGVudHJ5KTsKLSsgICAgZ3RrX3dpZGdldF9zaG93X2Fs bCAod2luZG93KTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLSt0ZXN0X2tleXByZXNzICh2b2lkKQot K3sKLSsgICAgaW50IHN0YXR1cyA9IDA7Ci0rICAgIEdFcnJvciAqZXJyb3IgPSBOVUxMOwotKwot KyAgICBnX3NwYXduX2NvbW1hbmRfbGluZV9zeW5jICgic2V0eGtibWFwIC1sYXlvdXQgdXMiLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmc3RhdHVzLCAmZXJyb3IpOwotKyAgICBnX2Fzc2VydCAocmVn aXN0ZXJfaWJ1c19lbmdpbmUgKCkpOwotKwotKyAgICBjcmVhdGVfd2luZG93ICgpOwotKyAgICBn dGtfbWFpbiAoKTsKLSt9Ci0rCi0raW50Ci0rbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK LSt7Ci0rICAgIGlidXNfaW5pdCAoKTsKLSsgICAgZ190ZXN0X2luaXQgKCZhcmdjLCAmYXJndiwg TlVMTCk7Ci0rICAgIGd0a19pbml0ICgmYXJnYywgJmFyZ3YpOwotKwotKyAgICBnX3Rlc3RfYWRk X2Z1bmMgKCIvaWJ1cy9rZXlyZXBzcyIsIHRlc3Rfa2V5cHJlc3MpOwotKwotKwotKyAgICByZXR1 cm4gZ190ZXN0X3J1biAoKTsKLSt9Ci1kaWZmIC0tZ2l0IGEvc3JjL3Rlc3RzL3J1bnRlc3QgYi9z cmMvdGVzdHMvcnVudGVzdAotaW5kZXggMzU4MjViMWIuLmI2Yjg0NWQ2IDEwMDc1NQotLS0tIGEv c3JjL3Rlc3RzL3J1bnRlc3QKLSsrKyBiL3NyYy90ZXN0cy9ydW50ZXN0Ci1AQCAtMzIsNiArMzIs NyBAQCBpYnVzLWlucHV0Y29udGV4dAotIGlidXMtaW5wdXRjb250ZXh0LWNyZWF0ZQotIGlidXMt ZW5naW5lLXN3aXRjaAotIGlidXMtY29tcG9zZQotK2lidXMta2V5cHJlc3MKLSB0ZXN0LXN0cmVz cwotICIKLSBJQlVTX1NDSEVNQV9GSUxFPSdvcmcuZnJlZWRlc2t0b3AuaWJ1cy5nc2NoZW1hLnht bCcKLS0tIAotMi4xNC4zCi0KLUZyb20gOGFiMGI2MDNiYTFjZDg3MDE1ODNhZWU0NmM3MTI4OThk NTIwMDVmMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGZ1aml3YXJhdCA8dGFrYW8u ZnVqaXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjMgTWF5IDIwMTggMTk6MjA6MTAgKzA5 MDAKLVN1YmplY3Q6IFtQQVRDSF0gYnVzOiBGaXggYSBTRUdWIGluIGJ1c19pbnB1dF9jb250ZXh0 X2VtaXRfc2lnbmFsCi0KLUlCdXMgZW5naW5lcyBjYW4gY2FsbCAnUmVxdWlyZVN1cnJvdW5kaW5n VGV4dCcgZm9yIGEgZmFrZSBpbnB1dCBjb250ZXh0Ci1pZiB0aGVyZSBpcyBubyBpbnB1dCBmb2N1 cy4KLS0tLQotIGJ1cy9pbnB1dGNvbnRleHQuYyB8IDQgKysrLQotIDEgZmlsZSBjaGFuZ2VkLCAz IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2J1cy9pbnB1dGNv bnRleHQuYyBiL2J1cy9pbnB1dGNvbnRleHQuYwotaW5kZXggYTk1N2QxMDcuLmRmYjk4YzM2IDEw MDY0NAotLS0tIGEvYnVzL2lucHV0Y29udGV4dC5jCi0rKysgYi9idXMvaW5wdXRjb250ZXh0LmMK LUBAIC03MTYsNyArNzE2LDkgQEAgYnVzX2lucHV0X2NvbnRleHRfZW1pdF9zaWduYWwgKEJ1c0lu cHV0Q29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vy cm9yICAgICAgICAgKiplcnJvcikKLSB7Ci0gICAgIGlmIChjb250ZXh0LT5jb25uZWN0aW9uID09 IE5VTEwpIHsKLS0gICAgICAgIGdfdmFyaWFudF91bnJlZiAocGFyYW1ldGVycyk7Ci0rICAgICAg ICAvKiBmYWtlIGNvbnRleHQgaGFzIG5vIGNvbm5lY3Rpb25zLiAqLwotKyAgICAgICAgaWYgKHBh cmFtZXRlcnMpCi0rICAgICAgICAgICAgZ192YXJpYW50X3VucmVmIChwYXJhbWV0ZXJzKTsKLSAg ICAgICAgIHJldHVybiBUUlVFOwotICAgICB9Ci0gCi0tLSAKLTIuMTQuMwotCi1Gcm9tIGExZjkx YjI3MTQ1YjA0NmExMTJiYjVlYmEyNTYxODgwZGFlNWQ2YTIgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCi1Gcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci1EYXRlOiBN b24sIDQgSnVuIDIwMTggMTc6NDQ6MTcgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gdWkvZ3RrMzog R2V0IFBhbmdvQXR0ckxpc3Qgb2YgYXV4aWxpYXJ5IHRleHQgZnJvbQotIElCdXNUZXh0Ci0KLVNp bmNlIElCdXMgYXV4aWxpYXJ5IHRleHQgd291bGQgYmUgb25lIGxpbmUsIGl0J3MgYmV0dGVyIHRv IHNob3cgdGhlCi1jaGFyYWN0ZXIgYXR0cmlidXRlcyBsaWtlcyBjb2xvciwgaXRhbGljLCBib2xk LCBvbiB0aGUgYXV4aWxpYXJ5IHRleHQuCi0KLUFsc28gZGVsZXRlZCB0aGUgY3Vyc29yIHdpZHRo IGZyb20gdGhlIFggcG9zaXRpb24gb2YgQ2FuZGlkYXRlUGFuZWwKLWJlY2F1c2UgSUJ1cyBwcmVl ZGl0IG92ZXJyaWRlcyB0aGUgb3JpZ2luYWwgY3Vyc29yIG9mIHRoZSBhcHBsaWNhdGlvbnMuCi0t LS0KLSB1aS9ndGszL2NhbmRpZGF0ZXBhbmVsLnZhbGEgfCA2ICsrKystLQotIDEgZmlsZSBjaGFu Z2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS91aS9n dGszL2NhbmRpZGF0ZXBhbmVsLnZhbGEgYi91aS9ndGszL2NhbmRpZGF0ZXBhbmVsLnZhbGEKLWlu ZGV4IGVjMmQzZGI0Li5kNDA0YzY1OSAxMDA2NDQKLS0tLSBhL3VpL2d0azMvY2FuZGlkYXRlcGFu ZWwudmFsYQotKysrIGIvdWkvZ3RrMy9jYW5kaWRhdGVwYW5lbC52YWxhCi1AQCAtMyw3ICszLDcg QEAKLSAgKiBpYnVzIC0gVGhlIElucHV0IEJ1cwotICAqCi0gICogQ29weXJpZ2h0KGMpIDIwMTEt MjAxNSBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1YW5nQGdtYWlsLmNvbT4KLS0gKiBDb3B5cmlnaHQo YykgMjAxNS0yMDE3IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgot KyAqIENvcHlyaWdodChjKSAyMDE1LTIwMTggVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJh MUBnbWFpbC5jb20+Ci0gICoKLSAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotQEAgLTE1Myw2ICsxNTMsOCBAQCBw dWJsaWMgY2xhc3MgQ2FuZGlkYXRlUGFuZWwgOiBHdGsuQm94ewotICAgICBwdWJsaWMgdm9pZCBz ZXRfYXV4aWxpYXJ5X3RleHQoSUJ1cy5UZXh0PyB0ZXh0KSB7Ci0gICAgICAgICBpZiAodGV4dCAh PSBudWxsKSB7Ci0gICAgICAgICAgICAgbV9hdXhfbGFiZWwuc2V0X3RleHQodGV4dC5nZXRfdGV4 dCgpKTsKLSsgICAgICAgICAgICBQYW5nby5BdHRyTGlzdCBhdHRycyA9IGdldF9wYW5nb19hdHRy X2xpc3RfZnJvbV9pYnVzX3RleHQodGV4dCk7Ci0rICAgICAgICAgICAgbV9hdXhfbGFiZWwuc2V0 X2F0dHJpYnV0ZXMoYXR0cnMpOwotICAgICAgICAgICAgIG1fYXV4X2xhYmVsLnNob3coKTsKLSAg ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgbV9hdXhfbGFiZWwuc2V0X3RleHQoIiIpOwot QEAgLTMxNCw3ICszMTYsNyBAQCBwdWJsaWMgY2xhc3MgQ2FuZGlkYXRlUGFuZWwgOiBHdGsuQm94 ewotIAotICAgICBwcml2YXRlIHZvaWQgYWRqdXN0X3dpbmRvd19wb3NpdGlvbl9ob3Jpem9udGFs KCkgewotICAgICAgICAgR2RrLlBvaW50IGN1cnNvcl9yaWdodF9ib3R0b20gPSB7Ci0tICAgICAg ICAgICAgICAgIG1fY3Vyc29yX2xvY2F0aW9uLnggKyBtX2N1cnNvcl9sb2NhdGlvbi53aWR0aCwK LSsgICAgICAgICAgICAgICAgbV9jdXJzb3JfbG9jYXRpb24ueCwKLSAgICAgICAgICAgICAgICAg bV9jdXJzb3JfbG9jYXRpb24ueSArIG1fY3Vyc29yX2xvY2F0aW9uLmhlaWdodAotICAgICAgICAg fTsKLSAKLS0tIAotMi4xNC4zCi0KLUZyb20gY2Y0ZTJmMWQ4MTViNzAwYjA0NzAzODBlMGZmNDI4 ZmYyNjZjYzE4YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGZ1aml3YXJhdCA8dGFr YW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMTQgSnVuIDIwMTggMTc6Mjk6MDYg KzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gYnVzOiBSZW5hbWUgcGFuZWwtZXh0ZW5zaW9uIHRvIGVt b2ppLWV4dGVuc2lvbiBmb3IgQ0xJCi0KLS0tLQotIGJ1cy9tYWluLmMgfCAxNCArKysrKysrLS0t LS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0K LWRpZmYgLS1naXQgYS9idXMvbWFpbi5jIGIvYnVzL21haW4uYwotaW5kZXggZTFjYzQyM2IuLjJm YjM3YjY5IDEwMDY0NAotLS0tIGEvYnVzL21haW4uYwotKysrIGIvYnVzL21haW4uYwotQEAgLTQz LDcgKzQzLDcgQEAgc3RhdGljIGdib29sZWFuIHhpbSA9IEZBTFNFOwotIHN0YXRpYyBnYm9vbGVh biByZXBsYWNlID0gRkFMU0U7Ci0gc3RhdGljIGdib29sZWFuIHJlc3RhcnQgPSBGQUxTRTsKLSBz dGF0aWMgZ2NoYXIgKnBhbmVsID0gImRlZmF1bHQiOwotLXN0YXRpYyBnY2hhciAqcGFuZWxfZXh0 ZW5zaW9uID0gImRlZmF1bHQiOwotK3N0YXRpYyBnY2hhciAqZW1vamlfZXh0ZW5zaW9uID0gImRl ZmF1bHQiOwotIHN0YXRpYyBnY2hhciAqY29uZmlnID0gImRlZmF1bHQiOwotIHN0YXRpYyBnY2hh ciAqZGVza3RvcCA9ICJnbm9tZSI7Ci0gCi1AQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgY29uc3Qg R09wdGlvbkVudHJ5IGVudHJpZXNbXSA9Ci0gICAgIHsgInhpbSIsICAgICAgICd4JywgMCwgR19P UFRJT05fQVJHX05PTkUsICAgJnhpbSwgICAgICAgImV4ZWN1dGUgaWJ1cyBYSU0gc2VydmVyLiIs IE5VTEwgfSwKLSAgICAgeyAiZGVza3RvcCIsICAgJ24nLCAwLCBHX09QVElPTl9BUkdfU1RSSU5H LCAmZGVza3RvcCwgICAic3BlY2lmeSB0aGUgbmFtZSBvZiBkZXNrdG9wIHNlc3Npb24uIFtkZWZh dWx0PWdub21lXSIsICJuYW1lIiB9LAotICAgICB7ICJwYW5lbCIsICAgICAncCcsIDAsIEdfT1BU SU9OX0FSR19TVFJJTkcsICZwYW5lbCwgICAgICJzcGVjaWZ5IHRoZSBjbWRsaW5lIG9mIHBhbmVs IHByb2dyYW0uIHBhc3MgJ2Rpc2FibGUnIG5vdCB0byBzdGFydCBhIHBhbmVsIHByb2dyYW0uIiwg ImNtZGxpbmUiIH0sCi0tICAgIHsgInBhbmVsLWV4dGVuc2lvbiIsICdFJywgMCwgR19PUFRJT05f QVJHX1NUUklORywgJnBhbmVsX2V4dGVuc2lvbiwgInNwZWNpZnkgdGhlIGNtZGxpbmUgb2YgcGFu ZWwgZXh0ZW5zaW9uIHByb2dyYW0uIHBhc3MgJ2Rpc2FibGUnIG5vdCB0byBzdGFydCBhbiBleHRl bnNpb24gcHJvZ3JhbS4iLCAiY21kbGluZSIgfSwKLSsgICAgeyAiZW1vamktZXh0ZW5zaW9uIiwg J0UnLCAwLCBHX09QVElPTl9BUkdfU1RSSU5HLCAmZW1vamlfZXh0ZW5zaW9uLCAic3BlY2lmeSB0 aGUgY21kbGluZSBvZiBlbW9qaSBleHRlbnNpb24gcHJvZ3JhbS4gcGFzcyAnZGlzYWJsZScgbm90 IHRvIHN0YXJ0IGFuIGV4dGVuc2lvbiBwcm9ncmFtLiIsICJjbWRsaW5lIiB9LAotICAgICB7ICJj b25maWciLCAgICAnYycsIDAsIEdfT1BUSU9OX0FSR19TVFJJTkcsICZjb25maWcsICAgICJzcGVj aWZ5IHRoZSBjbWRsaW5lIG9mIGNvbmZpZyBwcm9ncmFtLiBwYXNzICdkaXNhYmxlJyBub3QgdG8g c3RhcnQgYSBjb25maWcgcHJvZ3JhbS4iLCAiY21kbGluZSIgfSwKLSAgICAgeyAiYWRkcmVzcyIs ICAgJ2EnLCAwLCBHX09QVElPTl9BUkdfU1RSSU5HLCAmZ19hZGRyZXNzLCAgICJzcGVjaWZ5IHRo ZSBhZGRyZXNzIG9mIGlidXMgZGFlbW9uLiIsICJhZGRyZXNzIiB9LAotICAgICB7ICJyZXBsYWNl IiwgICAncicsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAgICZyZXBsYWNlLCAgICJpZiB0aGVyZSBp cyBhbiBvbGQgaWJ1cy1kYWVtb24gaXMgcnVubmluZywgaXQgd2lsbCBiZSByZXBsYWNlZC4iLCBO VUxMIH0sCi1AQCAtMjQ1LDcgKzI0NSw3IEBAIG1haW4gKGdpbnQgYXJnYywgZ2NoYXIgKiphcmd2 KQotICAgICBidXNfc2VydmVyX2luaXQgKCk7Ci0gICAgIGZvciAoaSA9IDA7IGkgPCBHX05fRUxF TUVOVFMocGFuZWxfZXh0ZW5zaW9uX2Rpc2FibGVfdXNlcnMpOyBpKyspIHsKLSAgICAgICAgIGlm ICghZ19zdHJjbXAwICh1c2VybmFtZSwgcGFuZWxfZXh0ZW5zaW9uX2Rpc2FibGVfdXNlcnNbaV0p ICE9IDApIHsKLS0gICAgICAgICAgICBwYW5lbF9leHRlbnNpb24gPSAiZGlzYWJsZSI7Ci0rICAg ICAgICAgICAgZW1vamlfZXh0ZW5zaW9uID0gImRpc2FibGUiOwotICAgICAgICAgICAgIGJyZWFr OwotICAgICAgICAgfQotICAgICB9Ci1AQCAtMjg2LDcgKzI4Niw3IEBAIG1haW4gKGdpbnQgYXJn YywgZ2NoYXIgKiphcmd2KQotICAgICB9Ci0gCi0gI2lmZGVmIEVNT0pJX0RJQ1QKLS0gICAgaWYg KGdfc3RyY21wMCAocGFuZWxfZXh0ZW5zaW9uLCAiZGVmYXVsdCIpID09IDApIHsKLSsgICAgaWYg KGdfc3RyY21wMCAoZW1vamlfZXh0ZW5zaW9uLCAiZGVmYXVsdCIpID09IDApIHsKLSAgICAgICAg IEJ1c0NvbXBvbmVudCAqY29tcG9uZW50OwotICAgICAgICAgY29tcG9uZW50ID0gYnVzX2lidXNf aW1wbF9sb29rdXBfY29tcG9uZW50X2J5X25hbWUgKAotICAgICAgICAgICAgICAgICBCVVNfREVG QVVMVF9JQlVTLCBJQlVTX1NFUlZJQ0VfUEFORUxfRVhURU5TSU9OKTsKLUBAIC0yOTgsOSArMjk4 LDkgQEAgbWFpbiAoZ2ludCBhcmdjLCBnY2hhciAqKmFyZ3YpCi0gICAgICAgICAgICAgZ19wcmlu dGVyciAoIkNhbiBub3QgZXhlY3V0ZSBkZWZhdWx0IHBhbmVsIHByb2dyYW1cbiIpOwotICAgICAg ICAgICAgIGV4aXQgKC0xKTsKLSAgICAgICAgIH0KLS0gICAgfSBlbHNlIGlmIChnX3N0cmNtcDAg KHBhbmVsX2V4dGVuc2lvbiwgImRpc2FibGUiKSAhPSAwICYmCi0tICAgICAgICAgICAgICAgZ19z dHJjbXAwIChwYW5lbF9leHRlbnNpb24sICIiKSAhPSAwKSB7Ci0tICAgICAgICBpZiAoIWV4ZWN1 dGVfY21kbGluZSAocGFuZWxfZXh0ZW5zaW9uKSkKLSsgICAgfSBlbHNlIGlmIChnX3N0cmNtcDAg KGVtb2ppX2V4dGVuc2lvbiwgImRpc2FibGUiKSAhPSAwICYmCi0rICAgICAgICAgICAgICAgZ19z dHJjbXAwIChlbW9qaV9leHRlbnNpb24sICIiKSAhPSAwKSB7Ci0rICAgICAgICBpZiAoIWV4ZWN1 dGVfY21kbGluZSAoZW1vamlfZXh0ZW5zaW9uKSkKLSAgICAgICAgICAgICBleGl0ICgtMSk7Ci0g ICAgIH0KLSAjZW5kaWYKLS0tIAotMi4xNC4zCi0KLUZyb20gZGRjMjI4NDIwMDk3MTE0MTk0N2Ez NzA1NzM1NmI0YmJkODRiZTdjZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGZ1aml3 YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMTQgSnVuIDIwMTgg MTg6MzA6NDYgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gdG9vbHM6IEFkZCBpYnVzIHJlYWQtY29u ZmlnIC0tZW5naW5lLWlkIG9wdGlvbiBmb3IgZW5naW5lCi0gc2NoZW1hcwotCi1GaXhlZCBpYnVz IHJlYWQtY29uZmlnIGFuZCByZXNldC1jb25maWcgb3B0aW9ucyBhbmQgYWxzbyBhZGRlZCAtLWVu Z2luZS1pZAotc3ViIG9wdGlvbiBmb3IgZW5naW5lIHNjaGVtYXMuCi1FLmcuCi0lIGlidXMgcmVh ZC1jb25maWcgLS1lbmdpbmUtaWQgYW50aHkKLSUgaWJ1cyByZWFkLWNvbmZpZyAtLWVuZ2luZS1p ZCBjb20uZ2l0aHViLmxpYnBpbnlpbi5pYnVzLWxpYnBpbnlpbi5saWJwaW55aW4KLS0tLQotIHRv b2xzL21haW4udmFsYSB8IDk5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKystLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA4NSBpbnNlcnRpb25zKCspLCAx NCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3Rvb2xzL21haW4udmFsYSBiL3Rvb2xzL21h aW4udmFsYQotaW5kZXggOGMwYjY0ZDMuLjZlMjAxZjMwIDEwMDY0NAotLS0tIGEvdG9vbHMvbWFp bi52YWxhCi0rKysgYi90b29scy9tYWluLnZhbGEKLUBAIC0zLDcgKzMsNyBAQAotICAqIGlidXMg LSBUaGUgSW5wdXQgQnVzCi0gICoKLSAgKiBDb3B5cmlnaHQoYykgMjAxMyBQZW5nIEh1YW5nIDxz aGF3bi5wLmh1YW5nQGdtYWlsLmNvbT4KLS0gKiBDb3B5cmlnaHQoYykgMjAxNS0yMDE3IFRha2Fv IEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotKyAqIENvcHlyaWdodChjKSAy MDE1LTIwMTggVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0gICoK LSAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yCi0gICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYwotQEAgLTIyLDIwICsyMiwxNyBAQAotICAqLwotIAotIHByaXZhdGUg Y29uc3Qgc3RyaW5nIElCVVNfU0NIRU1BU19HRU5FUkFMID0gIm9yZy5mcmVlZGVza3RvcC5pYnVz LmdlbmVyYWwiOwotLXByaXZhdGUgY29uc3Qgc3RyaW5nIElCVVNfU0NIRU1BU19HRU5FUkFMX1BB TkVMID0KLS0gICAgICAgICJvcmcuZnJlZWRlc2t0b3AuaWJ1cy5nZW5lcmFsLnBhbmVsIjsKLStw cml2YXRlIGNvbnN0IHN0cmluZyBJQlVTX1NDSEVNQVNfR0VORVJBTF9IT1RLRVkgPQotKyAgICAg ICAgIm9yZy5mcmVlZGVza3RvcC5pYnVzLmdlbmVyYWwuaG90a2V5IjsKLSBwcml2YXRlIGNvbnN0 IHN0cmluZyBJQlVTX1NDSEVNQVNfUEFORUwgPSAib3JnLmZyZWVkZXNrdG9wLmlidXMucGFuZWwi OwotLQotLXByaXZhdGUgY29uc3Qgc3RyaW5nW10gSUJVU19TQ0hFTUFTID0gewotLSAgICBJQlVT X1NDSEVNQVNfR0VORVJBTCwKLS0gICAgSUJVU19TQ0hFTUFTX0dFTkVSQUxfUEFORUwsCi0tICAg IElCVVNfU0NIRU1BU19QQU5FTCwKLS19OwotK3ByaXZhdGUgY29uc3Qgc3RyaW5nIElCVVNfU0NI RU1BU19QQU5FTF9FTU9KSSA9Ci0rICAgICAgICAib3JnLmZyZWVkZXNrdG9wLmlidXMucGFuZWwu ZW1vamkiOwotIAotIGJvb2wgbmFtZV9vbmx5ID0gZmFsc2U7Ci0gLyogc3lzdGVtKCkgZXhpc3Rz IGFzIGEgcHVibGljIEFQSS4gKi8KLSBib29sIGlzX3N5c3RlbSA9IGZhbHNlOwotIHN0cmluZyBj YWNoZV9maWxlID0gbnVsbDsKLStzdHJpbmcgZW5naW5lX2lkID0gbnVsbDsKLSAKLSBjbGFzcyBF bmdpbmVMaXN0IHsKLSAgICAgcHVibGljIElCdXMuRW5naW5lRGVzY1tdIGRhdGEgPSB7fTsKLUBA IC0yOTIsMTUgKzI4OSw3OCBAQCBpbnQgcHJpbnRfYWRkcmVzcyhzdHJpbmdbXSBhcmd2KSB7Ci0g ICAgIHJldHVybiBQb3NpeC5FWElUX1NVQ0NFU1M7Ci0gfQotIAotK3ByaXZhdGUgaW50IHJlYWRf Y29uZmlnX29wdGlvbnMoc3RyaW5nW10gYXJndikgewotKyAgICBjb25zdCBPcHRpb25FbnRyeVtd IG9wdGlvbnMgPSB7Ci0rICAgICAgICB7ICJlbmdpbmUtaWQiLCAwLCAwLCBPcHRpb25BcmcuU1RS SU5HLCBvdXQgZW5naW5lX2lkLAotKyAgICAgICAgICBOXygiVXNlIGVuZ2luZSBzY2hlbWEgcGF0 aHMgaW5zdGVhZCBvZiBpYnVzIGNvcmUsICIgKwotKyAgICAgICAgICAgICAid2hpY2ggY2FuIGJl IGNvbW1hLXNlcGFyYXRlZCB2YWx1ZXMuIiksICJFTkdJTkVfSUQiIH0sCi0rICAgICAgICB7IG51 bGwgfQotKyAgICB9OwotKwotKyAgICB2YXIgb3B0aW9uID0gbmV3IE9wdGlvbkNvbnRleHQoKTsK LSsgICAgb3B0aW9uLmFkZF9tYWluX2VudHJpZXMob3B0aW9ucywgQ29uZmlnLkdFVFRFWFRfUEFD S0FHRSk7Ci0rCi0rICAgIHRyeSB7Ci0rICAgICAgICBvcHRpb24ucGFyc2UocmVmIGFyZ3YpOwot KyAgICB9IGNhdGNoIChPcHRpb25FcnJvciBlKSB7Ci0rICAgICAgICBzdGRlcnIucHJpbnRmKCIl c1xuIiwgZS5tZXNzYWdlKTsKLSsgICAgICAgIHJldHVybiBQb3NpeC5FWElUX0ZBSUxVUkU7Ci0r ICAgIH0KLSsgICAgcmV0dXJuIFBvc2l4LkVYSVRfU1VDQ0VTUzsKLSt9Ci0rCi0rcHJpdmF0ZSBH TGliLlNMaXN0PHN0cmluZz4gZ2V0X2lidXNfc2NoZW1hcygpIHsKLSsgICAgc3RyaW5nW10gaWRz ID0ge307Ci0rICAgIGlmIChlbmdpbmVfaWQgIT0gbnVsbCkgewotKyAgICAgICAgaWRzID0gZW5n aW5lX2lkLnNwbGl0KCIsIik7Ci0rICAgIH0KLSsgICAgR0xpYi5TTGlzdDxzdHJpbmc+IGlidXNf c2NoZW1hcyA9IG5ldyBHTGliLlNMaXN0PHN0cmluZz4oKTsKLSsgICAgR0xpYi5TZXR0aW5nc1Nj aGVtYVNvdXJjZSBzY2hlbWFfc291cmNlID0KLSsgICAgICAgICAgICBHTGliLlNldHRpbmdzU2No ZW1hU291cmNlLmdldF9kZWZhdWx0KCk7Ci0rICAgIHN0cmluZ1tdIGxpc3Rfc2NoZW1hcyA9IHt9 OwotKyAgICBzY2hlbWFfc291cmNlLmxpc3Rfc2NoZW1hcyh0cnVlLCBvdXQgbGlzdF9zY2hlbWFz LCBudWxsKTsKLSsgICAgZm9yZWFjaCAoc3RyaW5nIHNjaGVtYSBpbiBsaXN0X3NjaGVtYXMpIHsK LSsgICAgICAgIGlmIChpZHMubGVuZ3RoICE9IDApIHsKLSsgICAgICAgICAgICBmb3JlYWNoICh1 bm93bmVkIHN0cmluZyBpZCBpbiBpZHMpIHsKLSsgICAgICAgICAgICAgICAgaWYgKGlkID09IHNj aGVtYSB8fAotKyAgICAgICAgICAgICAgICAgICAgc2NoZW1hLmhhc19wcmVmaXgoIm9yZy5mcmVl ZGVza3RvcC5pYnVzLmVuZ2luZS4iICsgaWQpKSB7Ci0rICAgICAgICAgICAgICAgICAgICBpYnVz X3NjaGVtYXMucHJlcGVuZChzY2hlbWEpOwotKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0r ICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICB9Ci0rICAgICAgICB9IGVsc2UgaWYgKHNj aGVtYS5oYXNfcHJlZml4KCJvcmcuZnJlZWRlc2t0b3AuaWJ1cyIpICYmCi0rICAgICAgICAgICAg IXNjaGVtYS5oYXNfcHJlZml4KCJvcmcuZnJlZWRlc2t0b3AuaWJ1cy5lbmdpbmUiKSkgewotKyAg ICAgICAgICAgIGlidXNfc2NoZW1hcy5wcmVwZW5kKHNjaGVtYSk7Ci0rICAgICAgICB9Ci0rICAg IH0KLSsgICAgaWYgKGlidXNfc2NoZW1hcy5sZW5ndGgoKSA9PSAwKSB7Ci0rICAgICAgICBwcmlu dGVycigiTm90IGZvdW5kIHNjaGVtYXMgb2YgXCJvcmcuZnJlZWRlc2t0b3AuaWJ1c1wiXG4iKTsK LSsgICAgICAgIHJldHVybiBpYnVzX3NjaGVtYXM7Ci0rICAgIH0KLSsgICAgaWJ1c19zY2hlbWFz LnNvcnQoR0xpYi5zdHJjbXApOwotKwotKyAgICByZXR1cm4gaWJ1c19zY2hlbWFzOwotK30KLSsK LSBpbnQgcmVhZF9jb25maWcoc3RyaW5nW10gYXJndikgewotLSAgICB2YXIgb3V0cHV0ID0gbmV3 IEdMaWIuU3RyaW5nQnVpbGRlcigpOwotKyAgICBpZiAocmVhZF9jb25maWdfb3B0aW9ucyhhcmd2 KSA9PSBQb3NpeC5FWElUX0ZBSUxVUkUpCi0rICAgICAgICByZXR1cm4gUG9zaXguRVhJVF9GQUlM VVJFOwotKwotKyAgICBHTGliLlNMaXN0PHN0cmluZz4gaWJ1c19zY2hlbWFzID0gZ2V0X2lidXNf c2NoZW1hcygpOwotKyAgICBpZiAoaWJ1c19zY2hlbWFzLmxlbmd0aCgpID09IDApCi0rICAgICAg ICByZXR1cm4gUG9zaXguRVhJVF9GQUlMVVJFOwotIAotLSAgICBmb3JlYWNoIChzdHJpbmcgc2No ZW1hIGluIElCVVNfU0NIRU1BUykgewotKyAgICBHTGliLlNldHRpbmdzU2NoZW1hU291cmNlIHNj aGVtYV9zb3VyY2UgPQotKyAgICAgICAgICAgIEdMaWIuU2V0dGluZ3NTY2hlbWFTb3VyY2UuZ2V0 X2RlZmF1bHQoKTsKLSsgICAgdmFyIG91dHB1dCA9IG5ldyBHTGliLlN0cmluZ0J1aWxkZXIoKTsK LSsgICAgZm9yZWFjaCAoc3RyaW5nIHNjaGVtYSBpbiBpYnVzX3NjaGVtYXMpIHsKLSsgICAgICAg IEdMaWIuU2V0dGluZ3NTY2hlbWEgc2V0dGluZ3Nfc2NoZW1hID0gc2NoZW1hX3NvdXJjZS5sb29r dXAoc2NoZW1hLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSk7Ci0gICAgICAgICBHTGliLlNldHRpbmdzIHNl dHRpbmdzID0gbmV3IEdMaWIuU2V0dGluZ3Moc2NoZW1hKTsKLSAKLSAgICAgICAgIG91dHB1dC5h cHBlbmRfcHJpbnRmKCJTQ0hFTUE6ICVzXG4iLCBzY2hlbWEpOwotIAotLSAgICAgICAgZm9yZWFj aCAoc3RyaW5nIGtleSBpbiBzZXR0aW5ncy5saXN0X2tleXMoKSkgewotKyAgICAgICAgZm9yZWFj aCAoc3RyaW5nIGtleSBpbiBzZXR0aW5nc19zY2hlbWEubGlzdF9rZXlzKCkpIHsKLSAgICAgICAg ICAgICBHTGliLlZhcmlhbnQgdmFyaWFudCA9IHNldHRpbmdzLmdldF92YWx1ZShrZXkpOwotICAg ICAgICAgICAgIG91dHB1dC5hcHBlbmRfcHJpbnRmKCIgICVzOiAlc1xuIiwga2V5LCB2YXJpYW50 LnByaW50KHRydWUpKTsKLSAgICAgICAgIH0KLUBAIC0zMTEsMTQgKzM3MSwyNSBAQCBpbnQgcmVh ZF9jb25maWcoc3RyaW5nW10gYXJndikgewotIH0KLSAKLSBpbnQgcmVzZXRfY29uZmlnKHN0cmlu Z1tdIGFyZ3YpIHsKLSsgICAgaWYgKHJlYWRfY29uZmlnX29wdGlvbnMoYXJndikgPT0gUG9zaXgu RVhJVF9GQUlMVVJFKQotKyAgICAgICAgcmV0dXJuIFBvc2l4LkVYSVRfRkFJTFVSRTsKLSsKLSsg ICAgR0xpYi5TTGlzdDxzdHJpbmc+IGlidXNfc2NoZW1hcyA9IGdldF9pYnVzX3NjaGVtYXMoKTsK LSsgICAgaWYgKGlidXNfc2NoZW1hcy5sZW5ndGgoKSA9PSAwKQotKyAgICAgICAgcmV0dXJuIFBv c2l4LkVYSVRfRkFJTFVSRTsKLSsKLSAgICAgcHJpbnQoIiVzXG4iLCBfKCJSZXNldHRpbmfigKYi KSk7Ci0gCi0tICAgIGZvcmVhY2ggKHN0cmluZyBzY2hlbWEgaW4gSUJVU19TQ0hFTUFTKSB7Ci0r ICAgIEdMaWIuU2V0dGluZ3NTY2hlbWFTb3VyY2Ugc2NoZW1hX3NvdXJjZSA9Ci0rICAgICAgICAg ICAgR0xpYi5TZXR0aW5nc1NjaGVtYVNvdXJjZS5nZXRfZGVmYXVsdCgpOwotKyAgICBmb3JlYWNo IChzdHJpbmcgc2NoZW1hIGluIGlidXNfc2NoZW1hcykgewotKyAgICAgICAgR0xpYi5TZXR0aW5n c1NjaGVtYSBzZXR0aW5nc19zY2hlbWEgPSBzY2hlbWFfc291cmNlLmxvb2t1cChzY2hlbWEsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGZhbHNlKTsKLSAgICAgICAgIEdMaWIuU2V0dGluZ3Mgc2V0dGluZ3MgPSBuZXcg R0xpYi5TZXR0aW5ncyhzY2hlbWEpOwotIAotICAgICAgICAgcHJpbnQoIlNDSEVNQTogJXNcbiIs IHNjaGVtYSk7Ci0gCi0tICAgICAgICBmb3JlYWNoIChzdHJpbmcga2V5IGluIHNldHRpbmdzLmxp c3Rfa2V5cygpKSB7Ci0rICAgICAgICBmb3JlYWNoIChzdHJpbmcga2V5IGluIHNldHRpbmdzX3Nj aGVtYS5saXN0X2tleXMoKSkgewotICAgICAgICAgICAgIHByaW50KCIgICVzXG4iLCBrZXkpOwot ICAgICAgICAgICAgIHNldHRpbmdzLnJlc2V0KGtleSk7Ci0gICAgICAgICB9Ci0tLSAKLTIuMTQu MwotCi1Gcm9tIDM3YWE5NWYxYWRjZGRlODJlZjQ3MzkzNmNhZGMwZmEzZmU4YTRlNDQgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFp bC5jb20+Ci1EYXRlOiBGcmksIDE1IEp1biAyMDE4IDE5OjIzOjI3ICswOTAwCi1TdWJqZWN0OiBb UEFUQ0hdIHNldHVwOiBSZXBsYWNlIEd0a1RhYmxlIC93IEd0a0dyaWQKLQotLS0tCi0gc2V0dXAv c2V0dXAudWkgfCAxMTMgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQxIGluc2VydGlvbnMoKyksIDcyIGRl bGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc2V0dXAvc2V0dXAudWkgYi9zZXR1cC9zZXR1cC51 aQotaW5kZXggMzIyZjUxNDYuLmU2NGIxMDQ2IDEwMDY0NAotLS0tIGEvc2V0dXAvc2V0dXAudWkK LSsrKyBiL3NldHVwL3NldHVwLnVpCi1AQCAtOTksMTEgKzk5LDkgQEAKLSAgICAgICAgICAgICAg ICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYWJlbF94YWxpZ24iPjA8L3Byb3BlcnR5PgotICAgICAg ICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNoYWRvd190eXBlIj5ub25lPC9wcm9wZXJ0 eT4KLSAgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KLS0gICAgICAgICAgICAgICAgICAgICAg PG9iamVjdCBjbGFzcz0iR3RrVGFibGUiIGlkPSJ0YWJsZTEiPgotKyAgICAgICAgICAgICAgICAg ICAgICA8b2JqZWN0IGNsYXNzPSJHdGtHcmlkIiBpZD0idGFibGUxIj4KLSAgICAgICAgICAgICAg ICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNhbl9mb2N1cyI+RmFsc2U8L3By b3BlcnR5PgotLSAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJuX3Jvd3Mi PjU8L3Byb3BlcnR5PgotLSAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJu X2NvbHVtbnMiPjI8L3Byb3BlcnR5PgotICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0 eSBuYW1lPSJjb2x1bW5fc3BhY2luZyI+MTI8L3Byb3BlcnR5PgotICAgICAgICAgICAgICAgICAg ICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJyb3dfc3BhY2luZyI+NjwvcHJvcGVydHk+Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Im1hcmdpbl90b3AiPjY8L3Byb3BlcnR5 PgotQEAgLTExNyw4ICsxMTUsOCBAQAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJv cGVydHkgbmFtZT0ibGFiZWwiIHRyYW5zbGF0YWJsZT0ieWVzIj5OZXh0IGlucHV0IG1ldGhvZDo8 L3Byb3BlcnR5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgICA8cGFja2luZz4KLS0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgPHByb3BlcnR5IG5hbWU9Inhfb3B0aW9ucyI+R1RLX0ZJTEw8L3Byb3BlcnR5PgotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ieV9vcHRpb25zIj5HVEtfRklM TDwvcHJvcGVydHk+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1l PSJsZWZ0X2F0dGFjaCI+MDwvcHJvcGVydHk+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAg IDxwcm9wZXJ0eSBuYW1lPSJ0b3BfYXR0YWNoIj4wPC9wcm9wZXJ0eT4KLSAgICAgICAgICAgICAg ICAgICAgICAgICAgIDwvcGFja2luZz4KLSAgICAgICAgICAgICAgICAgICAgICAgICA8L2NoaWxk PgotICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KLUBAIC0xMzEsMTAgKzEyOSw4IEBA Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYWJlbCIgdHJh bnNsYXRhYmxlPSJ5ZXMiPlByZXZpb3VzIGlucHV0IG1ldGhvZDo8L3Byb3BlcnR5PgotICAgICAg ICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg ICA8cGFja2luZz4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9 ImxlZnRfYXR0YWNoIj4wPC9wcm9wZXJ0eT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PHByb3BlcnR5IG5hbWU9InRvcF9hdHRhY2giPjE8L3Byb3BlcnR5PgotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iYm90dG9tX2F0dGFjaCI+MjwvcHJvcGVydHk+ Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ4X29wdGlvbnMi PkdUS19GSUxMPC9wcm9wZXJ0eT4KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3Bl cnR5IG5hbWU9Inlfb3B0aW9ucyI+R1RLX0ZJTEw8L3Byb3BlcnR5PgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgPC9wYWNraW5nPgotICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+ Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgotQEAgLTE0Myw2ICsxMzksNyBAQAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1 ZTwvcHJvcGVydHk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1l PSJjYW5fZm9jdXMiPkZhbHNlPC9wcm9wZXJ0eT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPHByb3BlcnR5IG5hbWU9InNwYWNpbmciPjY8L3Byb3BlcnR5PgotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iaGV4cGFuZCI+VHJ1ZTwvcHJvcGVydHk+Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtFbnRyeSIgaWQ9ImVudHJ5X3N3aXRjaF9lbmdp bmUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZp c2libGUiPlRydWU8L3Byb3BlcnR5PgotQEAgLTE3NCw4ICsxNzEsNyBAQAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgPC9vYmplY3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFj a2luZz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImxlZnRf YXR0YWNoIj4xPC9wcm9wZXJ0eT4KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3Bl cnR5IG5hbWU9InJpZ2h0X2F0dGFjaCI+MjwvcHJvcGVydHk+Ci0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ5X29wdGlvbnMiPkdUS19GSUxMPC9wcm9wZXJ0eT4K LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRvcF9hdHRhY2gi PjA8L3Byb3BlcnR5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYWNraW5nPgotICAg ICAgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg PGNoaWxkPgotQEAgLTE4NCw2ICsxODAsNyBAQAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8cHJvcGVydHkgbmFtZT0ibm9fc2hvd19hbGwiPlRydWU8L3Byb3BlcnR5PgotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5GYWxzZTwvcHJv cGVydHk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzcGFj aW5nIj42PC9wcm9wZXJ0eT4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5 IG5hbWU9ImhleHBhbmQiPlRydWU8L3Byb3BlcnR5PgotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8Y2hpbGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFz cz0iR3RrRW50cnkiIGlkPSJlbnRyeV9wcmV2X2VuZ2luZSI+Ci0gICA+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJub19zaG93X2FsbCI+VHJ1ZTwv cHJvcGVydHk+Ci1AQCAtMjE3LDEwICsyMTQsNyBAQAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgPC9vYmplY3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFja2luZz4KLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImxlZnRfYXR0YWNoIj4xPC9w cm9wZXJ0eT4KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InJp Z2h0X2F0dGFjaCI+MjwvcHJvcGVydHk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxw cm9wZXJ0eSBuYW1lPSJ0b3BfYXR0YWNoIj4xPC9wcm9wZXJ0eT4KLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImJvdHRvbV9hdHRhY2giPjI8L3Byb3BlcnR5Pgot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ieV9vcHRpb25zIj5H VEtfRklMTDwvcHJvcGVydHk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhY2tpbmc+ Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KLSAgICAgICAgICAgICAgICAgICAg ICAgICA8Y2hpbGQ+Ci1AQCAtMjMyLDEwICsyMjYsOCBAQAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8cHJvcGVydHkgbmFtZT0ibGFiZWwiIHRyYW5zbGF0YWJsZT0ieWVzIj5FbmFibGUg b3IgZGlzYWJsZTo8L3Byb3BlcnR5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vYmpl Y3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFja2luZz4KLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImxlZnRfYXR0YWNoIj4wPC9wcm9wZXJ0eT4K LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRvcF9hdHRhY2gi PjI8L3Byb3BlcnR5PgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFt ZT0iYm90dG9tX2F0dGFjaCI+MzwvcHJvcGVydHk+Ci0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxwcm9wZXJ0eSBuYW1lPSJ4X29wdGlvbnMiPkdUS19GSUxMPC9wcm9wZXJ0eT4KLS0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Inlfb3B0aW9ucyI+R1RLX0ZJ TEw8L3Byb3BlcnR5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYWNraW5nPgotICAg ICAgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg PGNoaWxkPgotQEAgLTI0NiwxMCArMjM4LDggQEAKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPHByb3BlcnR5IG5hbWU9ImxhYmVsIiB0cmFuc2xhdGFibGU9InllcyI+RW5hYmxlOjwvcHJv cGVydHk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICA8L29iamVjdD4KLSAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxwYWNraW5nPgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 cHJvcGVydHkgbmFtZT0ibGVmdF9hdHRhY2giPjA8L3Byb3BlcnR5PgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idG9wX2F0dGFjaCI+MzwvcHJvcGVydHk+Ci0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJib3R0b21fYXR0YWNo Ij40PC9wcm9wZXJ0eT4KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5h bWU9Inhfb3B0aW9ucyI+R1RLX0ZJTEw8L3Byb3BlcnR5PgotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8cHJvcGVydHkgbmFtZT0ieV9vcHRpb25zIj5HVEtfRklMTDwvcHJvcGVydHk+Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhY2tpbmc+Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgPC9jaGlsZD4KLSAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+Ci1AQCAtMjU4 LDYgKzI0OCw3IEBACi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1l PSJub19zaG93X2FsbCI+VHJ1ZTwvcHJvcGVydHk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPkZhbHNlPC9wcm9wZXJ0eT4KLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNwYWNpbmciPjY8L3Byb3BlcnR5 PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iaGV4cGFuZCI+ VHJ1ZTwvcHJvcGVydHk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtFbnRyeSIgaWQ9 ImVudHJ5X2VuYWJsZV91bmNvbmRpdGlvbmFsIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KLUBAIC0yODks MTAgKzI4MCw3IEBACi0gICAgICAgICAgICAgICAgICAgICAgICAgICA8L29iamVjdD4KLSAgICAg ICAgICAgICAgICAgICAgICAgICAgIDxwYWNraW5nPgotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8cHJvcGVydHkgbmFtZT0ibGVmdF9hdHRhY2giPjE8L3Byb3BlcnR5PgotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icmlnaHRfYXR0YWNoIj4yPC9wcm9w ZXJ0eT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRvcF9h dHRhY2giPjM8L3Byb3BlcnR5PgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVy dHkgbmFtZT0iYm90dG9tX2F0dGFjaCI+NDwvcHJvcGVydHk+Ci0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ5X29wdGlvbnMiPkdUS19GSUxMPC9wcm9wZXJ0eT4K LSAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFja2luZz4KLSAgICAgICAgICAgICAgICAg ICAgICAgICA8L2NoaWxkPgotICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KLUBAIC0z MDMsMTAgKzI5MSw4IEBACi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBu YW1lPSJsYWJlbCIgdHJhbnNsYXRhYmxlPSJ5ZXMiPkRpc2FibGU6PC9wcm9wZXJ0eT4KLSAgICAg ICAgICAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgotICAgICAgICAgICAgICAgICAgICAgICAg ICAgPHBhY2tpbmc+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1l PSJsZWZ0X2F0dGFjaCI+MDwvcHJvcGVydHk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg IDxwcm9wZXJ0eSBuYW1lPSJ0b3BfYXR0YWNoIj40PC9wcm9wZXJ0eT4KLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImJvdHRvbV9hdHRhY2giPjU8L3Byb3BlcnR5 PgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ieF9vcHRpb25z Ij5HVEtfRklMTDwvcHJvcGVydHk+Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9w ZXJ0eSBuYW1lPSJ5X29wdGlvbnMiPkdUS19GSUxMPC9wcm9wZXJ0eT4KLSAgICAgICAgICAgICAg ICAgICAgICAgICAgIDwvcGFja2luZz4KLSAgICAgICAgICAgICAgICAgICAgICAgICA8L2NoaWxk PgotICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KLUBAIC0zMTUsNiArMzAxLDcgQEAK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Im5vX3Nob3dfYWxs Ij5UcnVlPC9wcm9wZXJ0eT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5 IG5hbWU9ImNhbl9mb2N1cyI+RmFsc2U8L3Byb3BlcnR5PgotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8cHJvcGVydHkgbmFtZT0ic3BhY2luZyI+NjwvcHJvcGVydHk+Ci0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJoZXhwYW5kIj5UcnVlPC9wcm9wZXJ0 eT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a0VudHJ5IiBpZD0iZW50cnlfZGlzYWJs ZV91bmNvbmRpdGlvbmFsIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9w ZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KLUBAIC0zNDYsMTAgKzMzMyw3IEBA Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICA8L29iamVjdD4KLSAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxwYWNraW5nPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVy dHkgbmFtZT0ibGVmdF9hdHRhY2giPjE8L3Byb3BlcnR5PgotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8cHJvcGVydHkgbmFtZT0icmlnaHRfYXR0YWNoIj4yPC9wcm9wZXJ0eT4KLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRvcF9hdHRhY2giPjQ8L3By b3BlcnR5PgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iYm90 dG9tX2F0dGFjaCI+NTwvcHJvcGVydHk+Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxw cm9wZXJ0eSBuYW1lPSJ5X29wdGlvbnMiPkdUS19GSUxMPC9wcm9wZXJ0eT4KLSAgICAgICAgICAg ICAgICAgICAgICAgICAgIDwvcGFja2luZz4KLSAgICAgICAgICAgICAgICAgICAgICAgICA8L2No aWxkPgotICAgICAgICAgICAgICAgICAgICAgICA8L29iamVjdD4KLUBAIC0zNzYsMTEgKzM2MCw5 IEBACi0gICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibGFiZWxfeGFsaWduIj4w PC9wcm9wZXJ0eT4KLSAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzaGFkb3df dHlwZSI+bm9uZTwvcHJvcGVydHk+Ci0gICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+Ci0tICAg ICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a1RhYmxlIiBpZD0idGFibGUyIj4K LSsgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrR3JpZCIgaWQ9InRhYmxl MiI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRy dWU8L3Byb3BlcnR5PgotICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJj YW5fZm9jdXMiPkZhbHNlPC9wcm9wZXJ0eT4KLS0gICAgICAgICAgICAgICAgICAgICAgICA8cHJv cGVydHkgbmFtZT0ibl9yb3dzIj43PC9wcm9wZXJ0eT4KLS0gICAgICAgICAgICAgICAgICAgICAg ICA8cHJvcGVydHkgbmFtZT0ibl9jb2x1bW5zIj4yPC9wcm9wZXJ0eT4KLSAgICAgICAgICAgICAg ICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY29sdW1uX3NwYWNpbmciPjEyPC9wcm9wZXJ0eT4K LSAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icm93X3NwYWNpbmciPjY8 L3Byb3BlcnR5PgotICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJtYXJn aW5fdG9wIj42PC9wcm9wZXJ0eT4KLUBAIC0zOTMsMTAgKzM3NSwxMSBAQAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iaGFsaWduIj5zdGFydDwvcHJvcGVydHk+ Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYWJlbCIgdHJh bnNsYXRhYmxlPSJ5ZXMiPkNhbmRpZGF0ZXMgb3JpZW50YXRpb246PC9wcm9wZXJ0eT4KLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Imp1c3RpZnkiPnJpZ2h0PC9w cm9wZXJ0eT4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Imhl eHBhbmQiPlRydWU8L3Byb3BlcnR5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vYmpl Y3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFja2luZz4KLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Inhfb3B0aW9ucyI+R1RLX0ZJTEw8L3Byb3Bl cnR5PgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ieV9vcHRp b25zIj5HVEtfRklMTDwvcHJvcGVydHk+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxw cm9wZXJ0eSBuYW1lPSJsZWZ0X2F0dGFjaCI+MDwvcHJvcGVydHk+Ci0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0b3BfYXR0YWNoIj4wPC9wcm9wZXJ0eT4KLSAg ICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFja2luZz4KLSAgICAgICAgICAgICAgICAgICAg ICAgICA8L2NoaWxkPgotICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KLUBAIC00MDQs NiArMzg3LDcgQEAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9 InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5GYWxzZTwvcHJvcGVydHk+Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJtb2RlbCI+bW9kZWxfY2FuZGlkYXRlc19v cmllbnRhdGlvbjwvcHJvcGVydHk+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9w ZXJ0eSBuYW1lPSJoZXhwYW5kIj5UcnVlPC9wcm9wZXJ0eT4KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPGNoaWxkPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3Qg Y2xhc3M9Ikd0a0NlbGxSZW5kZXJlclRleHQiIGlkPSJyZW5kZXJlcjEiLz4KLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8YXR0cmlidXRlcz4KLUBAIC00MTMsOCArMzk3LDcgQEAKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgotICAgICAgICAgICAgICAgICAgICAg ICAgICAgPHBhY2tpbmc+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBu YW1lPSJsZWZ0X2F0dGFjaCI+MTwvcHJvcGVydHk+Ci0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxwcm9wZXJ0eSBuYW1lPSJyaWdodF9hdHRhY2giPjI8L3Byb3BlcnR5PgotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ieV9vcHRpb25zIj5HVEtfRklMTDwv cHJvcGVydHk+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0 b3BfYXR0YWNoIj4wPC9wcm9wZXJ0eT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFj a2luZz4KLSAgICAgICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgotICAgICAgICAgICAgICAg ICAgICAgICAgIDxjaGlsZD4KLUBAIC00MjUsMTIgKzQwOCwxMSBAQAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iaGFsaWduIj5zdGFydDwvcHJvcGVydHk+Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYWJlbCIgdHJhbnNs YXRhYmxlPSJ5ZXMiPlNob3cgcHJvcGVydHkgcGFuZWw6PC9wcm9wZXJ0eT4KLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Imp1c3RpZnkiPnJpZ2h0PC9wcm9wZXJ0 eT4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImhleHBhbmQi PlRydWU8L3Byb3BlcnR5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFja2luZz4KLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImxlZnRfYXR0YWNoIj4wPC9wcm9wZXJ0eT4KLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRvcF9hdHRhY2giPjE8L3By b3BlcnR5PgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iYm90 dG9tX2F0dGFjaCI+MjwvcHJvcGVydHk+Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxw cm9wZXJ0eSBuYW1lPSJ4X29wdGlvbnMiPkdUS19GSUxMPC9wcm9wZXJ0eT4KLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Inlfb3B0aW9ucyI+R1RLX0ZJTEw8L3By b3BlcnR5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYWNraW5nPgotICAgICAgICAg ICAgICAgICAgICAgICAgIDwvY2hpbGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPGNoaWxk PgotQEAgLTQ0MCwxMiArNDIyLDExIEBACi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxw cm9wZXJ0eSBuYW1lPSJoYWxpZ24iPnN0YXJ0PC9wcm9wZXJ0eT4KLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImxhYmVsIiB0cmFuc2xhdGFibGU9InllcyI+TGFu Z3VhZ2UgcGFuZWwgcG9zaXRpb246PC9wcm9wZXJ0eT4KLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPHByb3BlcnR5IG5hbWU9Imp1c3RpZnkiPnJpZ2h0PC9wcm9wZXJ0eT4KLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImhleHBhbmQiPlRydWU8L3Byb3Bl cnR5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICA8cGFja2luZz4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBy b3BlcnR5IG5hbWU9ImxlZnRfYXR0YWNoIj4wPC9wcm9wZXJ0eT4KLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRvcF9hdHRhY2giPjI8L3Byb3BlcnR5PgotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iYm90dG9tX2F0dGFjaCI+ MzwvcHJvcGVydHk+Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1l PSJ4X29wdGlvbnMiPkdUS19GSUxMPC9wcm9wZXJ0eT4KLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgPHByb3BlcnR5IG5hbWU9Inlfb3B0aW9ucyI+R1RLX0ZJTEw8L3Byb3BlcnR5PgotICAg ICAgICAgICAgICAgICAgICAgICAgICAgPC9wYWNraW5nPgotICAgICAgICAgICAgICAgICAgICAg ICAgIDwvY2hpbGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgotQEAgLTQ1Myw2 ICs0MzQsNyBAQAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0i dmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxw cm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPkZhbHNlPC9wcm9wZXJ0eT4KLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Im1vZGVsIj5tb2RlbF9wYW5lbF9zaG93X21v ZGU8L3Byb3BlcnR5PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFt ZT0iaGV4cGFuZCI+VHJ1ZTwvcHJvcGVydHk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg IDxjaGlsZD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJH dGtDZWxsUmVuZGVyZXJUZXh0IiBpZD0icmVuZGVyZXIyIi8+Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPGF0dHJpYnV0ZXM+Ci1AQCAtNDYyLDEwICs0NDQsNyBAQAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICA8 cGFja2luZz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Imxl ZnRfYXR0YWNoIj4xPC9wcm9wZXJ0eT4KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBy b3BlcnR5IG5hbWU9InJpZ2h0X2F0dGFjaCI+MjwvcHJvcGVydHk+Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0b3BfYXR0YWNoIj4xPC9wcm9wZXJ0eT4KLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImJvdHRvbV9hdHRhY2gi PjI8L3Byb3BlcnR5PgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFt ZT0ieV9vcHRpb25zIj5HVEtfRklMTDwvcHJvcGVydHk+Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICA8L3BhY2tpbmc+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KLSAgICAg ICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+Ci1AQCAtNDczLDYgKzQ1Miw3IEBACi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPkZhbHNlPC9w cm9wZXJ0eT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Im5v X3Nob3dfYWxsIj5UcnVlPC9wcm9wZXJ0eT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PHByb3BlcnR5IG5hbWU9Im1vZGVsIj5tb2RlbF9wYW5lbF9wb3NpdGlvbjwvcHJvcGVydHk+Ci0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJoZXhwYW5kIj5UcnVl PC9wcm9wZXJ0eT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a0NlbGxSZW5kZXJlclRl eHQiIGlkPSJyZW5kZXJlcjMiLz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXR0 cmlidXRlcz4KLUBAIC00ODIsMTAgKzQ2Miw3IEBACi0gICAgICAgICAgICAgICAgICAgICAgICAg ICA8L29iamVjdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYWNraW5nPgotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibGVmdF9hdHRhY2giPjE8L3By b3BlcnR5PgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icmln aHRfYXR0YWNoIj4yPC9wcm9wZXJ0eT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBy b3BlcnR5IG5hbWU9InRvcF9hdHRhY2giPjI8L3Byb3BlcnR5PgotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iYm90dG9tX2F0dGFjaCI+MzwvcHJvcGVydHk+Ci0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ5X29wdGlvbnMiPkdU S19GSUxMPC9wcm9wZXJ0eT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFja2luZz4K LSAgICAgICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgotICAgICAgICAgICAgICAgICAgICAg ICAgIDxjaGlsZD4KLUBAIC00OTksMTMgKzQ3NiwxMiBAQAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8cHJvcGVydHkgbmFtZT0idXNlX2FjdGlvbl9hcHBlYXJhbmNlIj5GYWxzZTwvcHJv cGVydHk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJoYWxp Z24iPnN0YXJ0PC9wcm9wZXJ0eT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3Bl cnR5IG5hbWU9ImRyYXdfaW5kaWNhdG9yIj5UcnVlPC9wcm9wZXJ0eT4KLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImhleHBhbmQiPlRydWU8L3Byb3BlcnR5Pgot ICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgICA8cGFja2luZz4KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5 IG5hbWU9InJpZ2h0X2F0dGFjaCI+MjwvcHJvcGVydHk+Ci0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsZWZ0X2F0dGFjaCI+MDwvcHJvcGVydHk+Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0b3BfYXR0YWNoIj4zPC9wcm9w ZXJ0eT4KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImJvdHRv bV9hdHRhY2giPjQ8L3Byb3BlcnR5PgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJv cGVydHkgbmFtZT0ieF9vcHRpb25zIj5HVEtfRklMTDwvcHJvcGVydHk+Ci0tICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ5X29wdGlvbnMiPkdUS19GSUxMPC9wcm9w ZXJ0eT4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IndpZHRo Ij4yPC9wcm9wZXJ0eT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFja2luZz4KLSAg ICAgICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgotICAgICAgICAgICAgICAgICAgICAgICAg IDxjaGlsZD4KLUBAIC01MTksMTMgKzQ5NSwxMiBAQAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8cHJvcGVydHkgbmFtZT0idXNlX2FjdGlvbl9hcHBlYXJhbmNlIj5GYWxzZTwvcHJvcGVy dHk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJoYWxpZ24i PnN0YXJ0PC9wcm9wZXJ0eT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5 IG5hbWU9ImRyYXdfaW5kaWNhdG9yIj5UcnVlPC9wcm9wZXJ0eT4KLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImhleHBhbmQiPlRydWU8L3Byb3BlcnR5PgotICAg ICAgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICA8cGFja2luZz4KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5h bWU9InJpZ2h0X2F0dGFjaCI+MjwvcHJvcGVydHk+Ci0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxwcm9wZXJ0eSBuYW1lPSJsZWZ0X2F0dGFjaCI+MDwvcHJvcGVydHk+Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0b3BfYXR0YWNoIj40PC9wcm9wZXJ0 eT4KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImJvdHRvbV9h dHRhY2giPjU8L3Byb3BlcnR5PgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVy dHkgbmFtZT0ieF9vcHRpb25zIj5HVEtfRklMTDwvcHJvcGVydHk+Ci0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ5X29wdGlvbnMiPkdUS19GSUxMPC9wcm9wZXJ0 eT4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IndpZHRoIj4y PC9wcm9wZXJ0eT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFja2luZz4KLSAgICAg ICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgotICAgICAgICAgICAgICAgICAgICAgICAgIDxj aGlsZD4KLUBAIC01MzksMTMgKzUxNCwxMiBAQAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8cHJvcGVydHkgbmFtZT0idXNlX2FjdGlvbl9hcHBlYXJhbmNlIj5GYWxzZTwvcHJvcGVydHk+ Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJoYWxpZ24iPnN0 YXJ0PC9wcm9wZXJ0eT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5h bWU9ImRyYXdfaW5kaWNhdG9yIj5UcnVlPC9wcm9wZXJ0eT4KLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImhleHBhbmQiPlRydWU8L3Byb3BlcnR5PgotICAgICAg ICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg ICA8cGFja2luZz4KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9 InJpZ2h0X2F0dGFjaCI+MjwvcHJvcGVydHk+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAg IDxwcm9wZXJ0eSBuYW1lPSJsZWZ0X2F0dGFjaCI+MDwvcHJvcGVydHk+Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0b3BfYXR0YWNoIj41PC9wcm9wZXJ0eT4K LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImJvdHRvbV9hdHRh Y2giPjY8L3Byb3BlcnR5PgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkg bmFtZT0ieF9vcHRpb25zIj5HVEtfRklMTDwvcHJvcGVydHk+Ci0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ5X29wdGlvbnMiPkdUS19GSUxMPC9wcm9wZXJ0eT4K LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IndpZHRoIj4yPC9w cm9wZXJ0eT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFja2luZz4KLSAgICAgICAg ICAgICAgICAgICAgICAgICA8L2NoaWxkPgotICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGls ZD4KLUBAIC01NTksMTIgKzUzMywxMSBAQAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 cHJvcGVydHkgbmFtZT0idXNlX3VuZGVybGluZSI+VHJ1ZTwvcHJvcGVydHk+Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJoYWxpZ24iPnN0YXJ0PC9wcm9wZXJ0 eT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImRyYXdfaW5k aWNhdG9yIj5UcnVlPC9wcm9wZXJ0eT4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBy b3BlcnR5IG5hbWU9ImhleHBhbmQiPlRydWU8L3Byb3BlcnR5PgotICAgICAgICAgICAgICAgICAg ICAgICAgICAgPC9vYmplY3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFja2luZz4K LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImxlZnRfYXR0YWNo Ij4wPC9wcm9wZXJ0eT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5h bWU9InRvcF9hdHRhY2giPjY8L3Byb3BlcnR5PgotLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8cHJvcGVydHkgbmFtZT0iYm90dG9tX2F0dGFjaCI+NzwvcHJvcGVydHk+Ci0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ4X29wdGlvbnMiPkdUS19GSUxMPC9w cm9wZXJ0eT4KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Inlf b3B0aW9ucyI+R1RLX0ZJTEw8L3Byb3BlcnR5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAg PC9wYWNraW5nPgotICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgPGNoaWxkPgotQEAgLTU3MywxMyArNTQ2LDExIEBACi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPlRydWU8L3Byb3Bl cnR5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icmVjZWl2 ZXNfZGVmYXVsdCI+VHJ1ZTwvcHJvcGVydHk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg IDxwcm9wZXJ0eSBuYW1lPSJ1c2VfYWN0aW9uX2FwcGVhcmFuY2UiPkZhbHNlPC9wcm9wZXJ0eT4K LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImhleHBhbmQiPlRy dWU8L3Byb3BlcnR5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICA8cGFja2luZz4KLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPHByb3BlcnR5IG5hbWU9ImxlZnRfYXR0YWNoIj4xPC9wcm9wZXJ0eT4KLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InJpZ2h0X2F0dGFjaCI+MjwvcHJv cGVydHk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0b3Bf YXR0YWNoIj42PC9wcm9wZXJ0eT4KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3Bl cnR5IG5hbWU9ImJvdHRvbV9hdHRhY2giPjc8L3Byb3BlcnR5PgotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ieV9vcHRpb25zIj5HVEtfRklMTDwvcHJvcGVydHk+ Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhY2tpbmc+Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgPC9jaGlsZD4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+Ci1AQCAt ODg4LDExICs4NTksOSBAQAotICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Imxh YmVsX3hhbGlnbiI+MDwvcHJvcGVydHk+Ci0gICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkg bmFtZT0ic2hhZG93X3R5cGUiPm5vbmU8L3Byb3BlcnR5PgotICAgICAgICAgICAgICAgICAgICAg PGNoaWxkPgotLSAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtUYWJsZSIg aWQ9InRhYmxlX2Vtb2ppMSI+Ci0rICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9 Ikd0a0dyaWQiIGlkPSJ0YWJsZV9lbW9qaTEiPgotICAgICAgICAgICAgICAgICAgICAgICAgIDxw cm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KLSAgICAgICAgICAgICAgICAg ICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5GYWxzZTwvcHJvcGVydHk+Ci0tICAg ICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Im5fcm93cyI+NTwvcHJvcGVydHk+ Ci0tICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Im5fY29sdW1ucyI+Mjwv cHJvcGVydHk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNvbHVt bl9zcGFjaW5nIj4xMjwvcHJvcGVydHk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPHByb3Bl cnR5IG5hbWU9InJvd19zcGFjaW5nIj42PC9wcm9wZXJ0eT4KLSAgICAgICAgICAgICAgICAgICAg ICAgICA8cHJvcGVydHkgbmFtZT0ibWFyZ2luX3RvcCI+NjwvcHJvcGVydHk+Ci1AQCAtOTA2LDgg Kzg3NSw4IEBACi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJs YWJlbCIgdHJhbnNsYXRhYmxlPSJ5ZXMiPkVtb2ppIGNob2ljZTo8L3Byb3BlcnR5PgotICAgICAg ICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg ICA8cGFja2luZz4KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9 Inhfb3B0aW9ucyI+R1RLX0ZJTEw8L3Byb3BlcnR5PgotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8cHJvcGVydHkgbmFtZT0ieV9vcHRpb25zIj5HVEtfRklMTDwvcHJvcGVydHk+Ci0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsZWZ0X2F0dGFjaCI+MDwv cHJvcGVydHk+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0 b3BfYXR0YWNoIj4wPC9wcm9wZXJ0eT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFj a2luZz4KLSAgICAgICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgotICAgICAgICAgICAgICAg ICAgICAgICAgIDxjaGlsZD4KLUBAIC05MTYsNiArODg1LDcgQEAKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5GYWxz ZTwvcHJvcGVydHk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1l PSJzcGFjaW5nIj42PC9wcm9wZXJ0eT4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBy b3BlcnR5IG5hbWU9ImhleHBhbmQiPnRydWU8L3Byb3BlcnR5PgotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8Y2hpbGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9iamVj dCBjbGFzcz0iR3RrRW50cnkiIGlkPSJlbnRyeV9lbW9qaV9kaWFsb2ciPgotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3Bl cnR5PgotQEAgLTk0Nyw4ICs5MTcsNyBAQAotICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9v YmplY3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFja2luZz4KLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImxlZnRfYXR0YWNoIj4xPC9wcm9wZXJ0 eT4KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InJpZ2h0X2F0 dGFjaCI+MjwvcHJvcGVydHk+Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0 eSBuYW1lPSJ5X29wdGlvbnMiPkdUS19GSUxMPC9wcm9wZXJ0eT4KLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRvcF9hdHRhY2giPjA8L3Byb3BlcnR5PgotICAg ICAgICAgICAgICAgICAgICAgICAgICAgPC9wYWNraW5nPgotICAgICAgICAgICAgICAgICAgICAg ICAgIDwvY2hpbGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgotLS0gCi0yLjE0 LjMKLQotRnJvbSA1ZWUzZjQ4MDQ5ZWNmMTI4MzkxZGE2NDQ4YWU3ZTc0Nzg2YmQxNzFiIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZnVqaXdhcmF0IDx0YWthby5mdWppd2FyYTFAZ21h aWwuY29tPgotRGF0ZTogTW9uLCAxOCBKdW4gMjAxOCAxMjo0NjoxMSArMDkwMAotU3ViamVjdDog W1BBVENIXSBNb3ZlIGlucHV0IGZvY3VzIG9uIEVtb2ppZXIgdG8gZW5naW5lcycgcHJlZWRpdAot Ci0tLS0KLSBiaW5kaW5ncy92YWxhL0lCdXMtMS4wLWN1c3RvbS52YWxhIHwgICA3ICsKLSBiaW5k aW5ncy92YWxhL01ha2VmaWxlLmFtICAgICAgICAgIHwgICAzICstCi0gYmluZGluZ3MvdmFsYS9n ZGstd2F5bGFuZC52YXBpICAgICB8ICAgNyArCi0gYnVzL2VuZ2luZXByb3h5LmMgICAgICAgICAg ICAgICAgICB8ICA1MyArLQotIGJ1cy9lbmdpbmVwcm94eS5oICAgICAgICAgICAgICAgICAgfCAg MjUgKy0KLSBidXMvaWJ1c2ltcGwuYyAgICAgICAgICAgICAgICAgICAgIHwgMjQ3ICsrKysrKyst LQotIGJ1cy9pbnB1dGNvbnRleHQuYyAgICAgICAgICAgICAgICAgfCAzOTkgKysrKysrKysrKyst LS0tCi0gYnVzL2lucHV0Y29udGV4dC5oICAgICAgICAgICAgICAgICB8IDExMCArKystCi0gYnVz L3BhbmVscHJveHkuYyAgICAgICAgICAgICAgICAgICB8IDIxMCArKysrKysrLQotIGJ1cy9wYW5l bHByb3h5LmggICAgICAgICAgICAgICAgICAgfCAgMjMgKy0KLSBkYXRhL2lidXMuc2NoZW1hcy5p biAgICAgICAgICAgICAgIHwgIDEyICsKLSBzZXR1cC9tYWluLnB5ICAgICAgICAgICAgICAgICAg ICAgIHwgIDEwICstCi0gc2V0dXAvc2V0dXAudWkgICAgICAgICAgICAgICAgICAgICB8ICA1OCAr Ky0KLSBzcmMvaWJ1c2VuZ2luZS5jICAgICAgICAgICAgICAgICAgIHwgMzA1ICsrKysrKysrLS0t LQotIHNyYy9pYnVzcGFuZWxzZXJ2aWNlLmMgICAgICAgICAgICAgfCAzMTggKysrKysrKysrKyst Ci0gc3JjL2lidXNwYW5lbHNlcnZpY2UuaCAgICAgICAgICAgICB8IDExNyArKysrLQotIHNyYy9p YnVzc2hhcmUuaCAgICAgICAgICAgICAgICAgICAgfCAgMTcgKy0KLSBzcmMvaWJ1c3hldmVudC5j ICAgICAgICAgICAgICAgICAgIHwgMzc1ICsrKysrKysrKysrKystCi0gc3JjL2lidXN4ZXZlbnQu aCAgICAgICAgICAgICAgICAgICB8IDE0MyArKysrKy0KLSB1aS9ndGszL01ha2VmaWxlLmFtICAg ICAgICAgICAgICAgIHwgICAzICsKLSB1aS9ndGszL2Vtb2ppZXIudmFsYSAgICAgICAgICAgICAg IHwgOTkxICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KLSB1aS9ndGszL2Vt b2ppZXJhcHAudmFsYSAgICAgICAgICAgIHwgIDc0ICsrLQotIHVpL2d0azMvZXh0ZW5zaW9uLnZh bGEgICAgICAgICAgICAgfCAgIDYgKy0KLSB1aS9ndGszL3BhbmVsLnZhbGEgICAgICAgICAgICAg ICAgIHwgIDIzICstCi0gdWkvZ3RrMy9wYW5lbGJpbmRpbmcudmFsYSAgICAgICAgICB8IDg1OSAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQotIDI1IGZpbGVzIGNoYW5nZWQsIDM2OTUg aW5zZXJ0aW9ucygrKSwgNzAwIGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBiaW5k aW5ncy92YWxhL2dkay13YXlsYW5kLnZhcGkKLQotZGlmZiAtLWdpdCBhL2JpbmRpbmdzL3ZhbGEv SUJ1cy0xLjAtY3VzdG9tLnZhbGEgYi9iaW5kaW5ncy92YWxhL0lCdXMtMS4wLWN1c3RvbS52YWxh Ci1pbmRleCBjZjFmYzNmYS4uN2QzNGE4YmQgMTAwNjQ0Ci0tLS0gYS9iaW5kaW5ncy92YWxhL0lC dXMtMS4wLWN1c3RvbS52YWxhCi0rKysgYi9iaW5kaW5ncy92YWxhL0lCdXMtMS4wLWN1c3RvbS52 YWxhCi1AQCAtNiw4ICs2LDE1IEBAIG5hbWVzcGFjZSBJQnVzIHsKLSAJCVtDQ29kZSAoY25hbWUg PSAiaWJ1c190ZXh0X25ld19mcm9tX3N0YXRpY19zdHJpbmciLCBoYXNfY29uc3RydWN0X2Z1bmN0 aW9uID0gZmFsc2UpXQotIAkJcHVibGljIFRleHQuZnJvbV9zdGF0aWNfc3RyaW5nIChzdHJpbmcg c3RyKTsKLSAJfQotKwlwdWJsaWMgY2xhc3MgRXh0ZW5zaW9uRXZlbnQgOiBJQnVzLlNlcmlhbGl6 YWJsZSB7Ci0rCQlbQ0NvZGUgKGNuYW1lID0gImlidXNfZXh0ZW5zaW9uX2V2ZW50X25ldyIsIGhh c19jb25zdHJ1Y3RfZnVuY3Rpb24gPSB0cnVlKV0KLSsJCXB1YmxpYyBFeHRlbnNpb25FdmVudCAo c3RyaW5nIGZpcnN0X3Byb3BlcnR5X25hbWUsIC4uLik7Ci0rCX0KLSAJcHVibGljIGNsYXNzIFhF dmVudCA6IElCdXMuU2VyaWFsaXphYmxlIHsKLSAJCVtDQ29kZSAoY25hbWUgPSAiaWJ1c194X2V2 ZW50X25ldyIsIGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSB0cnVlKV0KLSAJCXB1YmxpYyBYRXZl bnQgKHN0cmluZyBmaXJzdF9wcm9wZXJ0eV9uYW1lLCAuLi4pOwotIAl9Ci0rCXB1YmxpYyBjbGFz cyBQYW5lbFNlcnZpY2UgOiBJQnVzLlNlcnZpY2UgewotKyAgICAgICAgICAgICAgICBwdWJsaWMg dm9pZCBwYW5lbF9leHRlbnNpb25fcmVnaXN0ZXJfa2V5cyhzdHJpbmcgZmlyc3RfcHJvcGVydHlf bmFtZSwgLi4uKTsKLSsJfQotIH0KLWRpZmYgLS1naXQgYS9iaW5kaW5ncy92YWxhL01ha2VmaWxl LmFtIGIvYmluZGluZ3MvdmFsYS9NYWtlZmlsZS5hbQotaW5kZXggZmM4ZTJmMDEuLmU0ZWNhYjk3 IDEwMDY0NAotLS0tIGEvYmluZGluZ3MvdmFsYS9NYWtlZmlsZS5hbQotKysrIGIvYmluZGluZ3Mv dmFsYS9NYWtlZmlsZS5hbQotQEAgLTMsNyArMyw3IEBACi0gIyBpYnVzIC0gVGhlIElucHV0IEJ1 cwotICMKLSAjIENvcHlyaWdodCAoYykgMjAwNy0yMDE2IFBlbmcgSHVhbmcgPHNoYXduLnAuaHVh bmdAZ21haWwuY29tPgotLSMgQ29weXJpZ2h0IChjKSAyMDE3IFRha2FvIEZ1aml3YXJhIDx0YWth by5mdWppd2FyYTFAZ21haWwuY29tPgotKyMgQ29weXJpZ2h0IChjKSAyMDE3LTIwMTggVGFrYW8g RnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0gIyBDb3B5cmlnaHQgKGMpIDIw MDctMjAxNyBSZWQgSGF0LCBJbmMuCi0gIwotICMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotQEAgLTg2LDYgKzg2LDcgQEAgRVhU UkFfRElTVCA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICBpYnVz LTEuMC5kZXBzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgaWJ1cy1lbW9q aS1kaWFsb2ctMS4wLmRlcHMgICAgICAgICAgICAgICAgICBcCi0gICAgIGNvbmZpZy52YXBpICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBnZGstd2F5bGFuZC52YXBpICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgeGkudmFwaSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICQoTlVMTCkKLSAKLWRpZmYgLS1naXQgYS9iaW5k aW5ncy92YWxhL2dkay13YXlsYW5kLnZhcGkgYi9iaW5kaW5ncy92YWxhL2dkay13YXlsYW5kLnZh cGkKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMC4uYzY1ZjJiZTQKLS0tLSAv ZGV2L251bGwKLSsrKyBiL2JpbmRpbmdzL3ZhbGEvZ2RrLXdheWxhbmQudmFwaQotQEAgLTAsMCAr MSw3IEBACi0rW0NDb2RlIChjcHJlZml4ID0gIiIsIGxvd2VyX2Nhc2VfY3ByZWZpeCA9ICIiLCBj aGVhZGVyX2ZpbGVuYW1lID0gImdkay9nZGt3YXlsYW5kLmgiKV0KLStuYW1lc3BhY2UgR2RrV2F5 bGFuZAotK3sKLSsgICAgW0NDb2RlICh0eXBlX2lkID0gImdka193YXlsYW5kX2Rpc3BsYXlfZ2V0 X3R5cGUgKCkiKV0KLSsgICAgcHVibGljIGNsYXNzIERpc3BsYXkgOiBHZGsuRGlzcGxheSB7Ci0r ICAgIH0KLSt9Ci1kaWZmIC0tZ2l0IGEvYnVzL2VuZ2luZXByb3h5LmMgYi9idXMvZW5naW5lcHJv eHkuYwotaW5kZXggMTc1YWVjNTYuLjJkOTg5OTVjIDEwMDY0NAotLS0tIGEvYnVzL2VuZ2luZXBy b3h5LmMKLSsrKyBiL2J1cy9lbmdpbmVwcm94eS5jCi1AQCAtMzc3LDEwICszNzcsMTAgQEAgYnVz X2VuZ2luZV9wcm94eV9jbGFzc19pbml0IChCdXNFbmdpbmVQcm94eUNsYXNzICpjbGFzcykKLSAg ICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKLSAgICAgICAgICAgICAwLAotICAgICAgICAg ICAgIE5VTEwsIE5VTEwsCi0tICAgICAgICAgICAgYnVzX21hcnNoYWxfVk9JRF9fVkFSSUFOVCwK LSsgICAgICAgICAgICBidXNfbWFyc2hhbF9WT0lEX19PQkpFQ1QsCi0gICAgICAgICAgICAgR19U WVBFX05PTkUsCi0gICAgICAgICAgICAgMSwKLS0gICAgICAgICAgICBHX1RZUEVfVkFSSUFOVCk7 Ci0rICAgICAgICAgICAgSUJVU19UWVBFX0VYVEVOU0lPTl9FVkVOVCk7Ci0gCi0gICAgIHRleHRf ZW1wdHkgPSBpYnVzX3RleHRfbmV3X2Zyb21fc3RhdGljX3N0cmluZyAoIiIpOwotICAgICBnX29i amVjdF9yZWZfc2luayAodGV4dF9lbXB0eSk7Ci1AQCAtNjQ0LDcgKzY0NCwxNiBAQCBidXNfZW5n aW5lX3Byb3h5X2dfc2lnbmFsIChHREJ1c1Byb3h5ICAqcHJveHksCi0gICAgIH0KLSAKLSAgICAg aWYgKGdfc3RyY21wMCAoc2lnbmFsX25hbWUsICJQYW5lbEV4dGVuc2lvbiIpID09IDApIHsKLS0g ICAgICAgIGdfc2lnbmFsX2VtaXQgKGVuZ2luZSwgZW5naW5lX3NpZ25hbHNbUEFORUxfRVhURU5T SU9OXSwgMCwgcGFyYW1ldGVycyk7Ci0rICAgICAgICBHVmFyaWFudCAqYXJnMCA9IE5VTEw7Ci0r ICAgICAgICBnX3ZhcmlhbnRfZ2V0IChwYXJhbWV0ZXJzLCAiKHYpIiwgJmFyZzApOwotKyAgICAg ICAgZ19yZXR1cm5faWZfZmFpbCAoYXJnMCAhPSBOVUxMKTsKLSsKLSsgICAgICAgIElCdXNFeHRl bnNpb25FdmVudCAqZXZlbnQgPSBJQlVTX0VYVEVOU0lPTl9FVkVOVCAoCi0rICAgICAgICAgICAg ICAgIGlidXNfc2VyaWFsaXphYmxlX2Rlc2VyaWFsaXplIChhcmcwKSk7Ci0rICAgICAgICBnX3Zh cmlhbnRfdW5yZWYgKGFyZzApOwotKyAgICAgICAgZ19yZXR1cm5faWZfZmFpbCAoZXZlbnQgIT0g TlVMTCk7Ci0rICAgICAgICBnX3NpZ25hbF9lbWl0IChlbmdpbmUsIGVuZ2luZV9zaWduYWxzW1BB TkVMX0VYVEVOU0lPTl0sIDAsIGV2ZW50KTsKLSsgICAgICAgIF9nX29iamVjdF91bnJlZl9pZl9m bG9hdGluZyAoZXZlbnQpOwotICAgICAgICAgcmV0dXJuOwotICAgICB9Ci0gCi1AQCAtMTMyMyw2 ICsxMzMyLDQ0IEBAIGJ1c19lbmdpbmVfcHJveHlfaXNfZW5hYmxlZCAoQnVzRW5naW5lUHJveHkg KmVuZ2luZSkKLSAgICAgcmV0dXJuIGVuZ2luZS0+ZW5hYmxlZDsKLSB9Ci0gCi0rdm9pZAotK2J1 c19lbmdpbmVfcHJveHlfcGFuZWxfZXh0ZW5zaW9uX3JlY2VpdmVkIChCdXNFbmdpbmVQcm94eSAg ICAgKmVuZ2luZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg SUJ1c0V4dGVuc2lvbkV2ZW50ICpldmVudCkKLSt7Ci0rICAgIEdWYXJpYW50ICp2YXJpYW50Owot KyAgICBnX2Fzc2VydCAoQlVTX0lTX0VOR0lORV9QUk9YWSAoZW5naW5lKSk7Ci0rICAgIGdfYXNz ZXJ0IChJQlVTX0lTX0VYVEVOU0lPTl9FVkVOVCAoZXZlbnQpKTsKLSsKLSsgICAgdmFyaWFudCA9 IGlidXNfc2VyaWFsaXphYmxlX3NlcmlhbGl6ZV9vYmplY3QgKAotKyAgICAgICAgICAgIElCVVNf U0VSSUFMSVpBQkxFIChldmVudCkpOwotKyAgICBnX3JldHVybl9pZl9mYWlsICh2YXJpYW50ICE9 IE5VTEwpOwotKyAgICBnX2RidXNfcHJveHlfY2FsbCAoKEdEQnVzUHJveHkgKillbmdpbmUsCi0r ICAgICAgICAgICAgICAgICAgICAgICAiUGFuZWxFeHRlbnNpb25SZWNlaXZlZCIsCi0rICAgICAg ICAgICAgICAgICAgICAgICBnX3ZhcmlhbnRfbmV3ICgiKHYpIiwgdmFyaWFudCksCi0rICAgICAg ICAgICAgICAgICAgICAgICBHX0RCVVNfQ0FMTF9GTEFHU19OT05FLAotKyAgICAgICAgICAgICAg ICAgICAgICAgLTEsCi0rICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotKyAgICAgICAgICAg ICAgICAgICAgICAgTlVMTCwKLSsgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotK30KLSsK LSt2b2lkCi0rYnVzX2VuZ2luZV9wcm94eV9wYW5lbF9leHRlbnNpb25fcmVnaXN0ZXJfa2V5cyAo QnVzRW5naW5lUHJveHkgKmVuZ2luZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBHVmFyaWFudCAgICAgICAqcGFyYW1ldGVycykKLSt7Ci0rICAgIGdf YXNzZXJ0IChCVVNfSVNfRU5HSU5FX1BST1hZIChlbmdpbmUpKTsKLSsgICAgZ19hc3NlcnQgKHBh cmFtZXRlcnMpOwotKwotKyAgICBnX2RidXNfcHJveHlfY2FsbCAoKEdEQnVzUHJveHkgKillbmdp bmUsCi0rICAgICAgICAgICAgICAgICAgICAgICAiUGFuZWxFeHRlbnNpb25SZWdpc3RlcktleXMi LAotKyAgICAgICAgICAgICAgICAgICAgICAgZ192YXJpYW50X25ldyAoIih2KSIsIGdfdmFyaWFu dF9yZWYgKHBhcmFtZXRlcnMpKSwKLSsgICAgICAgICAgICAgICAgICAgICAgIEdfREJVU19DQUxM X0ZMQUdTX05PTkUsCi0rICAgICAgICAgICAgICAgICAgICAgICAtMSwKLSsgICAgICAgICAgICAg ICAgICAgICAgIE5VTEwsCi0rICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotKyAgICAgICAg ICAgICAgICAgICAgICAgTlVMTCk7Ci0rfQotKwotIHN0YXRpYyBnYm9vbGVhbgotIGluaXRhYmxl X2luaXQgKEdJbml0YWJsZSAgICAgKmluaXRhYmxlLAotICAgICAgICAgICAgICAgIEdDYW5jZWxs YWJsZSAgKmNhbmNlbGxhYmxlLAotZGlmZiAtLWdpdCBhL2J1cy9lbmdpbmVwcm94eS5oIGIvYnVz L2VuZ2luZXByb3h5LmgKLWluZGV4IDUyOGU2MWI3Li5hMzAwNmI0NyAxMDA2NDQKLS0tLSBhL2J1 cy9lbmdpbmVwcm94eS5oCi0rKysgYi9idXMvZW5naW5lcHJveHkuaAotQEAgLTIsNyArMiw4IEBA Ci0gLyogdmltOnNldCBldCBzdHM9NDogKi8KLSAvKiBpYnVzIC0gVGhlIElucHV0IEJ1cwotICAq IENvcHlyaWdodCAoQykgMjAwOC0yMDEzIFBlbmcgSHVhbmcgPHNoYXduLnAuaHVhbmdAZ21haWwu Y29tPgotLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDEzIFJlZCBIYXQsIEluYy4KLSsgKiBDb3B5 cmlnaHQgKEMpIDIwMTggVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhQGdtYWlsLmNvbT4K LSsgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOCBSZWQgSGF0LCBJbmMuCi0gICoKLSAgKiBUaGlz IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y Ci0gICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs IFB1YmxpYwotQEAgLTMyNSw1ICszMjYsMjcgQEAgdm9pZCAgICAgICAgICAgIGJ1c19lbmdpbmVf cHJveHlfc2V0X2NvbnRlbnRfdHlwZQotIElCdXNQcm9wTGlzdCAgICpidXNfZW5naW5lX3Byb3h5 X2dldF9wcm9wZXJ0aWVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKEJ1c0VuZ2luZVByb3h5ICAgICAqZW5naW5lKTsKLSAKLSsvKioKLSsgKiBidXNfZW5n aW5lX3Byb3h5X3BhbmVsX2V4dGVuc2lvbl9yZWNlaXZlZDoKLSsgKiBAZW5naW5lOiBBICNCdXNF bmdpbmVQcm94eS4KLSsgKiBAZXZlbnQ6IEFuICNJQnVzRXh0ZW5zaW9uRXZlbnQuCi0rICoKLSsg KiBTZW5kIGFuICNJQnVzRXh0ZW5zaW9uRXZlbnQgdG8gdGhlIGVuZ2luZS4KLSsgKi8KLSt2b2lk ICAgICAgICAgICAgYnVzX2VuZ2luZV9wcm94eV9wYW5lbF9leHRlbnNpb25fcmVjZWl2ZWQKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQnVzRW5naW5lUHJv eHkgICAgICplbmdpbmUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIElCdXNFeHRlbnNpb25FdmVudCAqZXZlbnQpOwotKwotKy8qKgotKyAqIGJ1c19lbmdp bmVfcHJveHlfcGFuZWxfZXh0ZW5zaW9uX3JlZ2lzdGVyX2tleXM6Ci0rICogQGVuZ2luZTogQSAj QnVzRW5naW5lUHJveHkuCi0rICogQHBhcmFtZXRlcnM6IEEgI0dWYXJpYW50IGFycmF5IHdoaWNo IGluY2x1ZGVzIHRoZSBuYW1lIGFuZCBzaG9ydGN1dCBrZXlzLgotKyAqCi0rICogU2VuZCBzaG9y dGN1dCBrZXlzIHRvIHRoZSBlbmdpbmUgdG8gZW5hYmxlIHRoZSBleHRlbnNpb24uCi0rICovCi0r dm9pZCAgICAgICAgICAgIGJ1c19lbmdpbmVfcHJveHlfcGFuZWxfZXh0ZW5zaW9uX3JlZ2lzdGVy X2tleXMKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQnVz RW5naW5lUHJveHkgICAgICplbmdpbmUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdWYXJpYW50ICAgICAgICAgICAqcGFyYW1ldGVycyk7Ci0rCi0gR19F TkRfREVDTFMKLSAjZW5kaWYKLWRpZmYgLS1naXQgYS9idXMvaWJ1c2ltcGwuYyBiL2J1cy9pYnVz aW1wbC5jCi1pbmRleCBhNGNlM2Q5ZC4uZWMxY2FlYTggMTAwNjQ0Ci0tLS0gYS9idXMvaWJ1c2lt cGwuYwotKysrIGIvYnVzL2lidXNpbXBsLmMKLUBAIC03NCw3ICs3NCw4IEBAIHN0cnVjdCBfQnVz SUJ1c0ltcGwgewotIAotICAgICBCdXNJbnB1dENvbnRleHQgKmZvY3VzZWRfY29udGV4dDsKLSAg ICAgQnVzUGFuZWxQcm94eSAgICpwYW5lbDsKLS0gICAgQnVzUGFuZWxQcm94eSAgICpleHRlbnNp b247Ci0rICAgIEJ1c1BhbmVsUHJveHkgICAqZW1vamlfZXh0ZW5zaW9uOwotKyAgICBnYm9vbGVh biAgICAgICAgIGVuYWJsZV9lbW9qaV9leHRlbnNpb247Ci0gCi0gICAgIC8qIGEgZGVmYXVsdCBr ZXltYXAgb2YgaWJ1cy1kYWVtb24gKHVzdWFsbHkgInVzIikgd2hpY2ggaXMgdXNlZCBvbmx5Ci0g ICAgICAqIHdoZW4gdXNlX3N5c19sYXlvdXQgaXMgRkFMU0UuICovCi1AQCAtODMsNiArODQsNyBA QCBzdHJ1Y3QgX0J1c0lCdXNJbXBsIHsKLSAgICAgZ2Jvb2xlYW4gdXNlX2dsb2JhbF9lbmdpbmU7 Ci0gICAgIGdjaGFyICpnbG9iYWxfZW5naW5lX25hbWU7Ci0gICAgIGdjaGFyICpnbG9iYWxfcHJl dmlvdXNfZW5naW5lX25hbWU7Ci0rICAgIEdWYXJpYW50ICpleHRlbnNpb25fcmVnaXN0ZXJfa2V5 czsKLSB9OwotIAotIHN0cnVjdCBfQnVzSUJ1c0ltcGxDbGFzcyB7Ci1AQCAtMjk0LDQwICsyOTYs MTU4IEBAIF9wYW5lbF9kZXN0cm95X2NiIChCdXNQYW5lbFByb3h5ICpwYW5lbCwKLSAKLSAgICAg aWYgKGlidXMtPnBhbmVsID09IHBhbmVsKQotICAgICAgICAgaWJ1cy0+cGFuZWwgPSBOVUxMOwot LSAgICBlbHNlIGlmIChpYnVzLT5leHRlbnNpb24gPT0gcGFuZWwpCi0tICAgICAgICBpYnVzLT5l eHRlbnNpb24gPSBOVUxMOwotKyAgICBlbHNlIGlmIChpYnVzLT5lbW9qaV9leHRlbnNpb24gPT0g cGFuZWwpCi0rICAgICAgICBpYnVzLT5lbW9qaV9leHRlbnNpb24gPSBOVUxMOwotICAgICBlbHNl Ci0gICAgICAgICBnX3JldHVybl9pZl9yZWFjaGVkICgpOwotICAgICBnX29iamVjdF91bnJlZiAo cGFuZWwpOwotIH0KLSAKLSBzdGF0aWMgdm9pZAotLWJ1c19pYnVzX2ltcGxfcGFuZWxfZXh0ZW5z aW9uX3JlY2VpdmVkIChCdXNJQnVzSW1wbCAqaWJ1cywKLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgR1ZhcmlhbnQgICAgKnBhcmFtZXRlcnMpCi0rYnVzX2lidXNfaW1w bF9zZXRfcGFuZWxfZXh0ZW5zaW9uX21vZGUgKEJ1c0lCdXNJbXBsICAgICAgICAqaWJ1cywKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c0V4dGVuc2lvbkV2ZW50 ICpldmVudCkKLSB7Ci0tICAgIGlmICghaWJ1cy0+ZXh0ZW5zaW9uKSB7Ci0rICAgIGdib29sZWFu IGlzX2V4dGVuc2lvbiA9IEZBTFNFOwotKyAgICBnX3JldHVybl9pZl9mYWlsIChCVVNfSVNfSUJV U19JTVBMIChpYnVzKSk7Ci0rICAgIGdfcmV0dXJuX2lmX2ZhaWwgKElCVVNfSVNfRVhURU5TSU9O X0VWRU5UIChldmVudCkpOwotKwotKyAgICBpZiAoIWlidXMtPmVtb2ppX2V4dGVuc2lvbikgewot ICAgICAgICAgZ193YXJuaW5nICgiUGFuZWwgZXh0ZW5zaW9uIGlzIG5vdCBydW5uaW5nLiIpOwot ICAgICAgICAgcmV0dXJuOwotICAgICB9Ci0gCi0tICAgIGdfcmV0dXJuX2lmX2ZhaWwgKEJVU19J U19JQlVTX0lNUEwgKGlidXMpKTsKLS0gICAgZ19yZXR1cm5faWZfZmFpbCAoQlVTX0lTX1BBTkVM X1BST1hZIChpYnVzLT5leHRlbnNpb24pKTsKLSsgICAgZ19yZXR1cm5faWZfZmFpbCAoQlVTX0lT X1BBTkVMX1BST1hZIChpYnVzLT5lbW9qaV9leHRlbnNpb24pKTsKLSsKLSsgICAgaWJ1cy0+ZW5h YmxlX2Vtb2ppX2V4dGVuc2lvbiA9IGlidXNfZXh0ZW5zaW9uX2V2ZW50X2lzX2VuYWJsZWQgKGV2 ZW50KTsKLSsgICAgaXNfZXh0ZW5zaW9uID0gaWJ1c19leHRlbnNpb25fZXZlbnRfaXNfZXh0ZW5z aW9uIChldmVudCk7Ci0rICAgIGlmIChpYnVzLT5mb2N1c2VkX2NvbnRleHQgIT0gTlVMTCkgewot KyAgICAgICAgaWYgKGlidXMtPmVuYWJsZV9lbW9qaV9leHRlbnNpb24pIHsKLSsgICAgICAgICAg ICBidXNfaW5wdXRfY29udGV4dF9zZXRfZW1vamlfZXh0ZW5zaW9uIChpYnVzLT5mb2N1c2VkX2Nv bnRleHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaWJ1cy0+ZW1vamlfZXh0ZW5zaW9uKTsKLSsgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAg ICAgYnVzX2lucHV0X2NvbnRleHRfc2V0X2Vtb2ppX2V4dGVuc2lvbiAoaWJ1cy0+Zm9jdXNlZF9j b250ZXh0LCBOVUxMKTsKLSsgICAgICAgIH0KLSsgICAgICAgIGlmIChpc19leHRlbnNpb24pCi0r ICAgICAgICAgICAgYnVzX2lucHV0X2NvbnRleHRfcGFuZWxfZXh0ZW5zaW9uX3JlY2VpdmVkIChp YnVzLT5mb2N1c2VkX2NvbnRleHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBldmVudCk7Ci0rICAgIH0KLSsgICAgaWYgKGlzX2V4dGVu c2lvbikKLSsgICAgICAgIHJldHVybjsKLSAKLSAgICAgLyogVXNlIHRoZSBEQnVzIG1ldGhvZCBi ZWNhdXNlIGl0IHNlZW1zIGFueSBEQnVzIHNpZ25hbCwKLSAgICAgICogZ19kYnVzX21lc3NhZ2Vf bmV3X3NpZ25hbCgpLCBjYW5ub3QgYmUgcmVhY2hlZCB0byB0aGUgc2VydmVyLiAqLwotLSAgICBn X2RidXNfcHJveHlfY2FsbCAoR19EQlVTX1BST1hZIChpYnVzLT5leHRlbnNpb24pLAotLSAgICAg ICAgICAgICAgICAgICAgICAgIlBhbmVsRXh0ZW5zaW9uUmVjZWl2ZWQiLAotLSAgICAgICAgICAg ICAgICAgICAgICAgcGFyYW1ldGVycywKLS0gICAgICAgICAgICAgICAgICAgICAgIEdfREJVU19D QUxMX0ZMQUdTX05PTkUsCi0tICAgICAgICAgICAgICAgICAgICAgICAtMSwgTlVMTCwgTlVMTCwg TlVMTCk7Ci0rICAgIGJ1c19wYW5lbF9wcm94eV9wYW5lbF9leHRlbnNpb25fcmVjZWl2ZWQgKGli dXMtPmVtb2ppX2V4dGVuc2lvbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZXZlbnQpOwotK30KLSsKLStzdGF0aWMgdm9pZAotK2J1c19pYnVzX2ltcGxf c2V0X3BhbmVsX2V4dGVuc2lvbl9rZXlzIChCdXNJQnVzSW1wbCAqaWJ1cywKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1ZhcmlhbnQgICAgKnBhcmFtZXRlcnMpCi0r ewotKyAgICBCdXNFbmdpbmVQcm94eSAqZW5naW5lID0gTlVMTDsKLSsKLSsgICAgZ19yZXR1cm5f aWZfZmFpbCAoQlVTX0lTX0lCVVNfSU1QTCAoaWJ1cykpOwotKyAgICBnX3JldHVybl9pZl9mYWls IChwYXJhbWV0ZXJzKTsKLSsKLSsgICAgaWYgKCFpYnVzLT5lbW9qaV9leHRlbnNpb24pIHsKLSsg ICAgICAgIGdfd2FybmluZyAoIlBhbmVsIGV4dGVuc2lvbiBpcyBub3QgcnVubmluZy4iKTsKLSsg ICAgICAgIHJldHVybjsKLSsgICAgfQotKwotKyAgICBpZiAoaWJ1cy0+ZXh0ZW5zaW9uX3JlZ2lz dGVyX2tleXMpCi0rICAgICAgICBnX3ZhcmlhbnRfdW5yZWYgKGlidXMtPmV4dGVuc2lvbl9yZWdp c3Rlcl9rZXlzKTsKLSsgICAgaWJ1cy0+ZXh0ZW5zaW9uX3JlZ2lzdGVyX2tleXMgPSBnX3Zhcmlh bnRfcmVmX3NpbmsgKHBhcmFtZXRlcnMpOwotKyAgICBpZiAoaWJ1cy0+Zm9jdXNlZF9jb250ZXh0 ICE9IE5VTEwpIHsKLSsgICAgICAgICAgICBlbmdpbmUgPSBidXNfaW5wdXRfY29udGV4dF9nZXRf ZW5naW5lIChpYnVzLT5mb2N1c2VkX2NvbnRleHQpOwotKyAgICB9Ci0rICAgIGlmICghZW5naW5l KQotKyAgICAgICAgcmV0dXJuOwotKyAgICBidXNfZW5naW5lX3Byb3h5X3BhbmVsX2V4dGVuc2lv bl9yZWdpc3Rlcl9rZXlzIChlbmdpbmUsIHBhcmFtZXRlcnMpOwotIH0KLSAKLSBzdGF0aWMgdm9p ZAotLV9wYW5lbF9wYW5lbF9leHRlbnNpb25fY2IgKEJ1c1BhbmVsUHJveHkgKnBhbmVsLAotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50ICAgICAgKnBhcmFtZXRlcnMsCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgQnVzSUJ1c0ltcGwgICppYnVzKQotK19wYW5lbF9wYW5l bF9leHRlbnNpb25fY2IgKEJ1c1BhbmVsUHJveHkgICAgICAqcGFuZWwsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgSUJ1c0V4dGVuc2lvbkV2ZW50ICpldmVudCwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICBCdXNJQnVzSW1wbCAgICAgICAgKmlidXMpCi0gewotLSAgICBidXNfaWJ1 c19pbXBsX3BhbmVsX2V4dGVuc2lvbl9yZWNlaXZlZCAoaWJ1cywgcGFyYW1ldGVycyk7Ci0rICAg IGJ1c19pYnVzX2ltcGxfc2V0X3BhbmVsX2V4dGVuc2lvbl9tb2RlIChpYnVzLCBldmVudCk7Ci0r fQotKwotK3N0YXRpYyB2b2lkCi0rX3BhbmVsX3BhbmVsX2V4dGVuc2lvbl9yZWdpc3Rlcl9rZXlz X2NiIChCdXNJbnB1dENvbnRleHQgKmNvbnRleHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBHVmFyaWFudCAgICAgICAgKnBhcmFtZXRlcnMsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdXNJQnVzSW1wbCAgICAgKmlidXMpCi0r ewotKyAgICBidXNfaWJ1c19pbXBsX3NldF9wYW5lbF9leHRlbnNpb25fa2V5cyAoaWJ1cywgcGFy YW1ldGVycyk7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rX3BhbmVsX3VwZGF0ZV9wcmVlZGl0X3Rl eHRfcmVjZWl2ZWRfY2IgKEJ1c1BhbmVsUHJveHkgKnBhbmVsLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBJQnVzVGV4dCAgICAgICp0ZXh0LAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICBjdXJzb3JfcG9zLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICB2 aXNpYmxlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdXNJQnVz SW1wbCAgICppYnVzKQotK3sKLSsgICAgZ19yZXR1cm5faWZfZmFpbCAoQlVTX0lTX0lCVVNfSU1Q TCAoaWJ1cykpOwotKwotKyAgICBpZiAoIWlidXMtPmZvY3VzZWRfY29udGV4dCkKLSsgICAgICAg IHJldHVybjsKLSsgICAgYnVzX2lucHV0X2NvbnRleHRfdXBkYXRlX3ByZWVkaXRfdGV4dCAoaWJ1 cy0+Zm9jdXNlZF9jb250ZXh0LAotKyAgICAgICAgdGV4dCwgY3Vyc29yX3BvcywgdmlzaWJsZSwg SUJVU19FTkdJTkVfUFJFRURJVF9DTEVBUiwgRkFMU0UpOwotK30KLSsKLStzdGF0aWMgdm9pZAot K19wYW5lbF91cGRhdGVfbG9va3VwX3RhYmxlX3JlY2VpdmVkX2NiIChCdXNQYW5lbFByb3h5ICAg KnBhbmVsLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzTG9v a3VwVGFibGUgKnRhYmxlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBnYm9vbGVhbiAgICAgICAgIHZpc2libGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEJ1c0lCdXNJbXBsICAgICAqaWJ1cykKLSt7Ci0rICAgIGdfcmV0dXJuX2lm X2ZhaWwgKEJVU19JU19JQlVTX0lNUEwgKGlidXMpKTsKLSsgICAgZ19yZXR1cm5faWZfZmFpbCAo SUJVU19JU19MT09LVVBfVEFCTEUgKHRhYmxlKSk7Ci0rCi0rICAgIGlmICghaWJ1cy0+Zm9jdXNl ZF9jb250ZXh0KQotKyAgICAgICAgcmV0dXJuOwotKyAgICAvKiBDYWxsIGJ1c19pbnB1dF9jb250 ZXh0X3VwZGF0ZV9sb29rdXBfdGFibGUoKSBpbnN0ZWFkIG9mCi0rICAgICAqIGJ1c19wYW5lbF9w cm94eV91cGRhdGVfbG9va3VwX3RhYmxlKCkgZm9yIHBhbmVsIGV4dGVuc2lvbnMgYmVjYXVzZQot KyAgICAgKiBidXNfaW5wdXRfY29udGV4dF9wYWdlX3VwKCkgY2FuIGNhbGwgYnVzX3BhbmVsX3By b3h5X3BhZ2VfdXBfcmVjZWl2ZWQoKS4KLSsgICAgICovCi0rICAgIGJ1c19pbnB1dF9jb250ZXh0 X3VwZGF0ZV9sb29rdXBfdGFibGUgKAotKyAgICAgICAgICAgIGlidXMtPmZvY3VzZWRfY29udGV4 dCwgdGFibGUsIHZpc2libGUsIFRSVUUpOwotK30KLSsKLStzdGF0aWMgdm9pZAotK19wYW5lbF91 cGRhdGVfYXV4aWxpYXJ5X3RleHRfcmVjZWl2ZWRfY2IgKEJ1c1BhbmVsUHJveHkgKnBhbmVsLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCdXNUZXh0ICAgICAg KnRleHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xl YW4gICAgICAgdmlzaWJsZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBCdXNJQnVzSW1wbCAgICppYnVzKQotK3sKLSsgICAgZ19yZXR1cm5faWZfZmFpbCAoQlVT X0lTX0lCVVNfSU1QTCAoaWJ1cykpOwotKyAgICBnX3JldHVybl9pZl9mYWlsIChJQlVTX0lTX1RF WFQgKHRleHQpKTsKLSsKLSsgICAgaWYgKCFpYnVzLT5wYW5lbCkKLSsgICAgICAgIHJldHVybjsK LSsgICAgYnVzX3BhbmVsX3Byb3h5X3VwZGF0ZV9hdXhpbGlhcnlfdGV4dCAoCi0rICAgICAgICAg ICAgaWJ1cy0+cGFuZWwsIHRleHQsIHZpc2libGUpOwotK30KLSsKLStzdGF0aWMgdm9pZAotK19w YW5lbF9zaG93X2xvb2t1cF90YWJsZV9yZWNlaXZlZF9jYiAoQnVzUGFuZWxQcm94eSAqcGFuZWws Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdXNJQnVzSW1wbCAgICpp YnVzKQotK3sKLSsgICAgZ19yZXR1cm5faWZfZmFpbCAoQlVTX0lTX0lCVVNfSU1QTCAoaWJ1cykp OwotKwotKyAgICBpZiAoaWJ1cy0+cGFuZWwpCi0rICAgICAgICBidXNfcGFuZWxfcHJveHlfc2hv d19sb29rdXBfdGFibGUgKGlidXMtPnBhbmVsKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStfcGFu ZWxfaGlkZV9sb29rdXBfdGFibGVfcmVjZWl2ZWRfY2IgKEJ1c1BhbmVsUHJveHkgKnBhbmVsLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVzSUJ1c0ltcGwgICAqaWJ1 cykKLSt7Ci0rICAgIGdfcmV0dXJuX2lmX2ZhaWwgKEJVU19JU19JQlVTX0lNUEwgKGlidXMpKTsK LSsKLSsgICAgaWYgKGlidXMtPnBhbmVsKQotKyAgICAgICAgYnVzX3BhbmVsX3Byb3h5X2hpZGVf bG9va3VwX3RhYmxlIChpYnVzLT5wYW5lbCk7Ci0gfQotIAotIHN0YXRpYyB2b2lkCi1AQCAtMzYx LDggKzQ4MSw4IEBAIF9kYnVzX25hbWVfb3duZXJfY2hhbmdlZF9jYiAoQnVzREJ1c0ltcGwgICAq ZGJ1cywKLSAKLSAgICAgaWYgKCFnX3N0cmNtcDAgKG5hbWUsIElCVVNfU0VSVklDRV9QQU5FTCkp Ci0gICAgICAgICBwYW5lbF90eXBlID0gUEFORUxfVFlQRV9QQU5FTDsKLS0gICAgZWxzZSBpZiAo IWdfc3RyY21wMCAobmFtZSwgSUJVU19TRVJWSUNFX1BBTkVMX0VYVEVOU0lPTikpCi0tICAgICAg ICBwYW5lbF90eXBlID0gUEFORUxfVFlQRV9FWFRFTlNJT047Ci0rICAgIGVsc2UgaWYgKCFnX3N0 cmNtcDAgKG5hbWUsIElCVVNfU0VSVklDRV9QQU5FTF9FWFRFTlNJT05fRU1PSkkpKQotKyAgICAg ICAgcGFuZWxfdHlwZSA9IFBBTkVMX1RZUEVfRVhURU5TSU9OX0VNT0pJOwotIAotICAgICBpZiAo cGFuZWxfdHlwZSAhPSBQQU5FTF9UWVBFX05PTkUpIHsKLSAgICAgICAgIGlmIChnX3N0cmNtcDAg KG5ld19uYW1lLCAiIikgIT0gMCkgewotQEAgLTM3MCw3ICs0OTAsNyBAQCBfZGJ1c19uYW1lX293 bmVyX2NoYW5nZWRfY2IgKEJ1c0RCdXNJbXBsICAgKmRidXMsCi0gICAgICAgICAgICAgQnVzQ29u bmVjdGlvbiAqY29ubmVjdGlvbjsKLSAgICAgICAgICAgICBCdXNJbnB1dENvbnRleHQgKmNvbnRl eHQgPSBOVUxMOwotICAgICAgICAgICAgIEJ1c1BhbmVsUHJveHkgICAqKnBhbmVsID0gKHBhbmVs X3R5cGUgPT0gUEFORUxfVFlQRV9QQU5FTCkgPwotLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZpYnVzLT5wYW5lbCA6ICZpYnVzLT5leHRlbnNpb247Ci0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaWJ1cy0+cGFuZWwgOiAmaWJ1cy0+ZW1vamlf ZXh0ZW5zaW9uOwotIAotICAgICAgICAgICAgIGlmICgqcGFuZWwgIT0gTlVMTCkgewotICAgICAg ICAgICAgICAgICBpYnVzX3Byb3h5X2Rlc3Ryb3kgKChJQnVzUHJveHkgKikoKnBhbmVsKSk7Ci1A QCAtMzgzLDYgKzUwMyw4IEBAIF9kYnVzX25hbWVfb3duZXJfY2hhbmdlZF9jYiAoQnVzREJ1c0lt cGwgICAqZGJ1cywKLSAgICAgICAgICAgICBnX3JldHVybl9pZl9mYWlsIChjb25uZWN0aW9uICE9 IE5VTEwpOwotIAotICAgICAgICAgICAgICpwYW5lbCA9IGJ1c19wYW5lbF9wcm94eV9uZXcgKGNv bm5lY3Rpb24sIHBhbmVsX3R5cGUpOwotKyAgICAgICAgICAgIGlmIChwYW5lbF90eXBlID09IFBB TkVMX1RZUEVfRVhURU5TSU9OX0VNT0pJKQotKyAgICAgICAgICAgICAgICBpYnVzLT5lbmFibGVf ZW1vamlfZXh0ZW5zaW9uID0gRkFMU0U7Ci0gCi0gICAgICAgICAgICAgZ19zaWduYWxfY29ubmVj dCAoKnBhbmVsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXN0cm95IiwKLUBA IC0zOTIsNiArNTE0LDI2IEBAIF9kYnVzX25hbWVfb3duZXJfY2hhbmdlZF9jYiAoQnVzREJ1c0lt cGwgICAqZGJ1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFuZWwtZXh0ZW5z aW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChfcGFuZWxf cGFuZWxfZXh0ZW5zaW9uX2NiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYnVz KTsKLSsgICAgICAgICAgICBnX3NpZ25hbF9jb25uZWN0ICgqcGFuZWwsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgInBhbmVsLWV4dGVuc2lvbi1yZWdpc3Rlci1rZXlzIiwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLICgKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF9wYW5lbF9wYW5lbF9leHRlbnNpb25fcmVnaXN0ZXJfa2V5 c19jYiksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWJ1cyk7Ci0rICAgICAgICAg ICAgZ19zaWduYWxfY29ubmVjdCAoCi0rICAgICAgICAgICAgICAgICAgICAqcGFuZWwsCi0rICAg ICAgICAgICAgICAgICAgICAidXBkYXRlLXByZWVkaXQtdGV4dC1yZWNlaXZlZCIsCi0rICAgICAg ICAgICAgICAgICAgICBHX0NBTExCQUNLIChfcGFuZWxfdXBkYXRlX3ByZWVkaXRfdGV4dF9yZWNl aXZlZF9jYiksCi0rICAgICAgICAgICAgICAgICAgICBpYnVzKTsKLSsgICAgICAgICAgICBnX3Np Z25hbF9jb25uZWN0ICgKLSsgICAgICAgICAgICAgICAgICAgICpwYW5lbCwKLSsgICAgICAgICAg ICAgICAgICAgICJ1cGRhdGUtbG9va3VwLXRhYmxlLXJlY2VpdmVkIiwKLSsgICAgICAgICAgICAg ICAgICAgIEdfQ0FMTEJBQ0sgKF9wYW5lbF91cGRhdGVfbG9va3VwX3RhYmxlX3JlY2VpdmVkX2Ni KSwKLSsgICAgICAgICAgICAgICAgICAgIGlidXMpOwotKyAgICAgICAgICAgIGdfc2lnbmFsX2Nv bm5lY3QgKAotKyAgICAgICAgICAgICAgICAgICAgKnBhbmVsLAotKyAgICAgICAgICAgICAgICAg ICAgInVwZGF0ZS1hdXhpbGlhcnktdGV4dC1yZWNlaXZlZCIsCi0rICAgICAgICAgICAgICAgICAg ICBHX0NBTExCQUNLIChfcGFuZWxfdXBkYXRlX2F1eGlsaWFyeV90ZXh0X3JlY2VpdmVkX2NiKSwK LSsgICAgICAgICAgICAgICAgICAgIGlidXMpOwotIAotICAgICAgICAgICAgIGlmIChpYnVzLT5m b2N1c2VkX2NvbnRleHQgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgICBjb250ZXh0ID0gaWJ1 cy0+Zm9jdXNlZF9jb250ZXh0OwotQEAgLTQ1MCw3ICs1OTIsNyBAQCBidXNfaWJ1c19pbXBsX2lu aXQgKEJ1c0lCdXNJbXBsICppYnVzKQotICAgICBpYnVzLT5jb250ZXh0cyA9IE5VTEw7Ci0gICAg IGlidXMtPmZvY3VzZWRfY29udGV4dCA9IE5VTEw7Ci0gICAgIGlidXMtPnBhbmVsID0gTlVMTDsK LS0gICAgaWJ1cy0+ZXh0ZW5zaW9uID0gTlVMTDsKLSsgICAgaWJ1cy0+ZW1vamlfZXh0ZW5zaW9u ID0gTlVMTDsKLSAKLSAgICAgaWJ1cy0+a2V5bWFwID0gaWJ1c19rZXltYXBfZ2V0ICgidXMiKTsK LSAKLUBAIC02NTAsMTEgKzc5MiwxMSBAQCBidXNfaWJ1c19pbXBsX3NldF9jb250ZXh0X2VuZ2lu ZV9mcm9tX2Rlc2MgKEJ1c0lCdXNJbXBsICAgICAqaWJ1cywKLSB9Ci0gCi0gc3RhdGljIHZvaWQK LS1fY29udGV4dF9wYW5lbF9leHRlbnNpb25fY2IgKEJ1c0lucHV0Q29udGV4dCAqY29udGV4dCwK LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50ICAgICAgICAqcGFyYW1ldGVy cywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1c0lCdXNJbXBsICAgICAqaWJ1cykK LStfY29udGV4dF9wYW5lbF9leHRlbnNpb25fY2IgKEJ1c0lucHV0Q29udGV4dCAgICAqY29udGV4 dCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCdXNFeHRlbnNpb25FdmVudCAqZXZl bnQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdXNJQnVzSW1wbCAgICAgICAgKmli dXMpCi0gewotLSAgICBidXNfaWJ1c19pbXBsX3BhbmVsX2V4dGVuc2lvbl9yZWNlaXZlZCAoaWJ1 cywgcGFyYW1ldGVycyk7Ci0rICAgIGJ1c19pYnVzX2ltcGxfc2V0X3BhbmVsX2V4dGVuc2lvbl9t b2RlIChpYnVzLCBldmVudCk7Ci0gfQotIAotIGNvbnN0IHN0YXRpYyBzdHJ1Y3QgewotQEAgLTY5 NCwxMyArODM2LDE4IEBAIGJ1c19pYnVzX2ltcGxfc2V0X2ZvY3VzZWRfY29udGV4dCAoQnVzSUJ1 c0ltcGwgICAgICppYnVzLAotICAgICAgICAgICAgIGlmIChlbmdpbmUpIHsKLSAgICAgICAgICAg ICAgICAgZ19vYmplY3RfcmVmIChlbmdpbmUpOwotICAgICAgICAgICAgICAgICBidXNfaW5wdXRf Y29udGV4dF9zZXRfZW5naW5lIChpYnVzLT5mb2N1c2VkX2NvbnRleHQsIE5VTEwpOwotKyAgICAg ICAgICAgICAgICBidXNfaW5wdXRfY29udGV4dF9zZXRfZW1vamlfZXh0ZW5zaW9uIChpYnVzLT5m b2N1c2VkX2NvbnRleHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE5VTEwpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAKLSAg ICAgICAgIGlmIChpYnVzLT5wYW5lbCAhPSBOVUxMKQotICAgICAgICAgICAgIGJ1c19wYW5lbF9w cm94eV9mb2N1c19vdXQgKGlidXMtPnBhbmVsLCBpYnVzLT5mb2N1c2VkX2NvbnRleHQpOwotLSAg ICAgICAgaWYgKGlidXMtPmV4dGVuc2lvbiAhPSBOVUxMKQotLSAgICAgICAgICAgIGJ1c19wYW5l bF9wcm94eV9mb2N1c19vdXQgKGlidXMtPmV4dGVuc2lvbiwgaWJ1cy0+Zm9jdXNlZF9jb250ZXh0 KTsKLSsgICAgICAgIGlmIChpYnVzLT5lbW9qaV9leHRlbnNpb24gIT0gTlVMTCkgewotKyAgICAg ICAgICAgIGJ1c19wYW5lbF9wcm94eV9mb2N1c19vdXQgKGlidXMtPmVtb2ppX2V4dGVuc2lvbiwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYnVzLT5mb2N1c2VkX2Nv bnRleHQpOwotKyAgICAgICAgfQotKyAgICAgICAgYnVzX2lucHV0X2NvbnRleHRfc2V0X2Vtb2pp X2V4dGVuc2lvbiAoaWJ1cy0+Zm9jdXNlZF9jb250ZXh0LCBOVUxMKTsKLSAKLSAgICAgICAgIGJ1 c19pbnB1dF9jb250ZXh0X2dldF9jb250ZW50X3R5cGUgKGlidXMtPmZvY3VzZWRfY29udGV4dCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwdXJwb3NlLCAm aGludHMpOwotQEAgLTcyNCw2ICs4NzEsMTIgQEAgYnVzX2lidXNfaW1wbF9zZXRfZm9jdXNlZF9j b250ZXh0IChCdXNJQnVzSW1wbCAgICAgKmlidXMsCi0gICAgICAgICBpZiAoZW5naW5lICE9IE5V TEwpIHsKLSAgICAgICAgICAgICBidXNfaW5wdXRfY29udGV4dF9zZXRfZW5naW5lIChjb250ZXh0 LCBlbmdpbmUpOwotICAgICAgICAgICAgIGJ1c19pbnB1dF9jb250ZXh0X2VuYWJsZSAoY29udGV4 dCk7Ci0rICAgICAgICAgICAgaWYgKGlidXMtPmVuYWJsZV9lbW9qaV9leHRlbnNpb24pIHsKLSsg ICAgICAgICAgICAgICAgYnVzX2lucHV0X2NvbnRleHRfc2V0X2Vtb2ppX2V4dGVuc2lvbiAoY29u dGV4dCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaWJ1cy0+ZW1vamlfZXh0ZW5zaW9uKTsKLSsgICAgICAgICAgICB9IGVsc2UgewotKyAg ICAgICAgICAgICAgICBidXNfaW5wdXRfY29udGV4dF9zZXRfZW1vamlfZXh0ZW5zaW9uIChjb250 ZXh0LCBOVUxMKTsKLSsgICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAgICBmb3IgKGkg PSAwOyBpIDwgR19OX0VMRU1FTlRTKGNvbnRleHRfc2lnbmFscyk7IGkrKykgewotICAgICAgICAg ICAgIGdfc2lnbmFsX2Nvbm5lY3QgKGlidXMtPmZvY3VzZWRfY29udGV4dCwKLUBAIC03MzQsOCAr ODg3LDggQEAgYnVzX2lidXNfaW1wbF9zZXRfZm9jdXNlZF9jb250ZXh0IChCdXNJQnVzSW1wbCAg ICAgKmlidXMsCi0gCi0gICAgICAgICBpZiAoaWJ1cy0+cGFuZWwgIT0gTlVMTCkKLSAgICAgICAg ICAgICBidXNfcGFuZWxfcHJveHlfZm9jdXNfaW4gKGlidXMtPnBhbmVsLCBjb250ZXh0KTsKLS0g ICAgICAgIGlmIChpYnVzLT5leHRlbnNpb24gIT0gTlVMTCkKLS0gICAgICAgICAgICBidXNfcGFu ZWxfcHJveHlfZm9jdXNfaW4gKGlidXMtPmV4dGVuc2lvbiwgY29udGV4dCk7Ci0rICAgICAgICBp ZiAoaWJ1cy0+ZW1vamlfZXh0ZW5zaW9uICE9IE5VTEwpCi0rICAgICAgICAgICAgYnVzX3BhbmVs X3Byb3h5X2ZvY3VzX2luIChpYnVzLT5lbW9qaV9leHRlbnNpb24sIGNvbnRleHQpOwotICAgICB9 Ci0gCi0gICAgIGlmIChlbmdpbmUgIT0gTlVMTCkKLUBAIC03NTEsNiArOTA0LDEyIEBAIGJ1c19p YnVzX2ltcGxfc2V0X2dsb2JhbF9lbmdpbmUgKEJ1c0lCdXNJbXBsICAgICppYnVzLAotIAotICAg ICBpZiAoaWJ1cy0+Zm9jdXNlZF9jb250ZXh0KSB7Ci0gICAgICAgICBidXNfaW5wdXRfY29udGV4 dF9zZXRfZW5naW5lIChpYnVzLT5mb2N1c2VkX2NvbnRleHQsIGVuZ2luZSk7Ci0rICAgICAgICBp ZiAoaWJ1cy0+ZW5hYmxlX2Vtb2ppX2V4dGVuc2lvbikgewotKyAgICAgICAgICAgIGJ1c19pbnB1 dF9jb250ZXh0X3NldF9lbW9qaV9leHRlbnNpb24gKGlidXMtPmZvY3VzZWRfY29udGV4dCwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYnVzLT5l bW9qaV9leHRlbnNpb24pOwotKyAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICBidXNfaW5w dXRfY29udGV4dF9zZXRfZW1vamlfZXh0ZW5zaW9uIChpYnVzLT5mb2N1c2VkX2NvbnRleHQsIE5V TEwpOwotKyAgICAgICAgfQotICAgICB9IGVsc2UgaWYgKGlidXMtPmZha2VfY29udGV4dCkgewot ICAgICAgICAgYnVzX2lucHV0X2NvbnRleHRfc2V0X2VuZ2luZSAoaWJ1cy0+ZmFrZV9jb250ZXh0 LCBlbmdpbmUpOwotICAgICB9Ci1AQCAtOTI3LDkgKzEwODYsOSBAQCBfY29udGV4dF9kZXN0cm95 X2NiIChCdXNJbnB1dENvbnRleHQgICAgKmNvbnRleHQsCi0gICAgICAgICBidXNfaW5wdXRfY29u dGV4dF9nZXRfY2FwYWJpbGl0aWVzIChjb250ZXh0KSAmIElCVVNfQ0FQX0ZPQ1VTKSB7Ci0gICAg ICAgICBidXNfcGFuZWxfcHJveHlfZGVzdHJveV9jb250ZXh0IChpYnVzLT5wYW5lbCwgY29udGV4 dCk7Ci0gICAgIH0KLS0gICAgaWYgKGlidXMtPmV4dGVuc2lvbiAmJgotKyAgICBpZiAoaWJ1cy0+ ZW1vamlfZXh0ZW5zaW9uICYmCi0gICAgICAgICBidXNfaW5wdXRfY29udGV4dF9nZXRfY2FwYWJp bGl0aWVzIChjb250ZXh0KSAmIElCVVNfQ0FQX0ZPQ1VTKSB7Ci0tICAgICAgICBidXNfcGFuZWxf cHJveHlfZGVzdHJveV9jb250ZXh0IChpYnVzLT5leHRlbnNpb24sIGNvbnRleHQpOwotKyAgICAg ICAgYnVzX3BhbmVsX3Byb3h5X2Rlc3Ryb3lfY29udGV4dCAoaWJ1cy0+ZW1vamlfZXh0ZW5zaW9u LCBjb250ZXh0KTsKLSAgICAgfQotIAotICAgICBpYnVzLT5jb250ZXh0cyA9IGdfbGlzdF9yZW1v dmUgKGlidXMtPmNvbnRleHRzLCBjb250ZXh0KTsKLUBAIC0xNDg5LDYgKzE2NDgsNyBAQCBfaWJ1 c19zZXRfZ2xvYmFsX2VuZ2luZV9yZWFkeV9jYiAoQnVzSW5wdXRDb250ZXh0ICAgICAgICpjb250 ZXh0LAotICAgICBlbHNlIHsKLSAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1 cm5fdmFsdWUgKGRhdGEtPmludm9jYXRpb24sIE5VTEwpOwotIAotKyAgICAgICAgQnVzRW5naW5l UHJveHkgKmVuZ2luZSA9IGJ1c19pbnB1dF9jb250ZXh0X2dldF9lbmdpbmUgKGNvbnRleHQpOwot ICAgICAgICAgaWYgKGlidXMtPnVzZV9nbG9iYWxfZW5naW5lICYmIChjb250ZXh0ICE9IGlidXMt PmZvY3VzZWRfY29udGV4dCkpIHsKLSAgICAgICAgICAgICAvKiBjb250ZXh0IGFuZCBpYnVzLT5m b2N1c2VkX2NvbnRleHQgZG9uJ3QgbWF0Y2guIFRoaXMgbWVhbnMgdGhhdAotICAgICAgICAgICAg ICAqIHRoZSBmb2N1cyBpcyBtb3ZlZCBiZWZvcmUgX2lidXNfc2V0X2dsb2JhbF9lbmdpbmUoKSBh c3luY2hyb25vdXMKLUBAIC0xNDk2LDE0ICsxNjU2LDI4IEBAIF9pYnVzX3NldF9nbG9iYWxfZW5n aW5lX3JlYWR5X2NiIChCdXNJbnB1dENvbnRleHQgICAgICAgKmNvbnRleHQsCi0gICAgICAgICAg ICAgICogYmVpbmcgZm9jdXNlZCBoYXNuJ3QgYmVlbiB1cGRhdGVkLiBVcGRhdGUgdGhlIGVuZ2lu ZSBoZXJlIHNvIHRoYXQKLSAgICAgICAgICAgICAgKiBzdWJzZXF1ZW50IF9pYnVzX2dldF9nbG9i YWxfZW5naW5lKCkgY2FsbCBjb3VsZCByZXR1cm4gYQotICAgICAgICAgICAgICAqIGNvbnNpc3Rl bnQgZW5naW5lIG5hbWUuICovCi0tICAgICAgICAgICAgQnVzRW5naW5lUHJveHkgKmVuZ2luZSA9 IGJ1c19pbnB1dF9jb250ZXh0X2dldF9lbmdpbmUgKGNvbnRleHQpOwotICAgICAgICAgICAgIGlm IChlbmdpbmUgJiYgaWJ1cy0+Zm9jdXNlZF9jb250ZXh0ICE9IE5VTEwpIHsKLSAgICAgICAgICAg ICAgICAgZ19vYmplY3RfcmVmIChlbmdpbmUpOwotICAgICAgICAgICAgICAgICBidXNfaW5wdXRf Y29udGV4dF9zZXRfZW5naW5lIChjb250ZXh0LCBOVUxMKTsKLSsgICAgICAgICAgICAgICAgYnVz X2lucHV0X2NvbnRleHRfc2V0X2Vtb2ppX2V4dGVuc2lvbiAoY29udGV4dCwgTlVMTCk7Ci0gICAg ICAgICAgICAgICAgIGJ1c19pbnB1dF9jb250ZXh0X3NldF9lbmdpbmUgKGlidXMtPmZvY3VzZWRf Y29udGV4dCwgZW5naW5lKTsKLSsgICAgICAgICAgICAgICAgaWYgKGlidXMtPmVuYWJsZV9lbW9q aV9leHRlbnNpb24pIHsKLSsgICAgICAgICAgICAgICAgICAgIGJ1c19pbnB1dF9jb250ZXh0X3Nl dF9lbW9qaV9leHRlbnNpb24gKAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYnVzLT5m b2N1c2VkX2NvbnRleHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlidXMtPmVtb2pp X2V4dGVuc2lvbik7Ci0rICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgICAg ICAgICBidXNfaW5wdXRfY29udGV4dF9zZXRfZW1vamlfZXh0ZW5zaW9uICgKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaWJ1cy0+Zm9jdXNlZF9jb250ZXh0LAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBOVUxMKTsKLSsgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg ICBnX29iamVjdF91bnJlZiAoZW5naW5lKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0r ICAgICAgICBpZiAoZW5naW5lICYmIGlidXMtPmV4dGVuc2lvbl9yZWdpc3Rlcl9rZXlzKSB7Ci0r ICAgICAgICAgICAgYnVzX2VuZ2luZV9wcm94eV9wYW5lbF9leHRlbnNpb25fcmVnaXN0ZXJfa2V5 cyAoCi0rICAgICAgICAgICAgICAgICAgICBlbmdpbmUsCi0rICAgICAgICAgICAgICAgICAgICBp YnVzLT5leHRlbnNpb25fcmVnaXN0ZXJfa2V5cyk7Ci0rICAgICAgICB9Ci0gICAgIH0KLSAKLSAg ICAgZ19vYmplY3RfdW5yZWYgKGlidXMpOwotQEAgLTIwMTMsMTEgKzIxODcsMTIgQEAgYnVzX2li dXNfaW1wbF9yZWdpc3RyeV9kZXN0cm95IChCdXNJQnVzSW1wbCAqaWJ1cykKLSAgICAgZ19saXN0 X2ZyZWVfZnVsbCAoaWJ1cy0+Y29tcG9uZW50cywgZ19vYmplY3RfdW5yZWYpOwotICAgICBpYnVz LT5jb21wb25lbnRzID0gTlVMTDsKLSAKLS0gICAgZ19oYXNoX3RhYmxlX2Rlc3Ryb3kgKGlidXMt PmVuZ2luZV90YWJsZSk7Ci0tICAgIGlidXMtPmVuZ2luZV90YWJsZSA9IE5VTEw7Ci0rICAgIGdf Y2xlYXJfcG9pbnRlciAoJmlidXMtPmVuZ2luZV90YWJsZSwgZ19oYXNoX3RhYmxlX2Rlc3Ryb3kp OwotIAotLSAgICBpYnVzX29iamVjdF9kZXN0cm95IChJQlVTX09CSkVDVCAoaWJ1cy0+cmVnaXN0 cnkpKTsKLS0gICAgaWJ1cy0+cmVnaXN0cnkgPSBOVUxMOwotKyAgICBnX2NsZWFyX3BvaW50ZXIg KCZpYnVzLT5yZWdpc3RyeSwgaWJ1c19vYmplY3RfZGVzdHJveSk7Ci0rCi0rICAgIGlmIChpYnVz LT5leHRlbnNpb25fcmVnaXN0ZXJfa2V5cykKLSsgICAgICAgIGdfY2xlYXJfcG9pbnRlciAoJmli dXMtPmV4dGVuc2lvbl9yZWdpc3Rlcl9rZXlzLCBnX3ZhcmlhbnRfdW5yZWYpOwotIH0KLSAKLSBz dGF0aWMgZ2ludAotZGlmZiAtLWdpdCBhL2J1cy9pbnB1dGNvbnRleHQuYyBiL2J1cy9pbnB1dGNv bnRleHQuYwotaW5kZXggZGZiOThjMzYuLmJmOWVhZmNmIDEwMDY0NAotLS0tIGEvYnVzL2lucHV0 Y29udGV4dC5jCi0rKysgYi9idXMvaW5wdXRjb250ZXh0LmMKLUBAIC05NCw2ICs5NCw5IEBAIHN0 cnVjdCBfQnVzSW5wdXRDb250ZXh0IHsKLSAgICAgLyogY29udGVudC10eXBlIChwcmltYXJ5IHB1 cnBvc2UgYW5kIGhpbnRzKSAqLwotICAgICBndWludCAgICBwdXJwb3NlOwotICAgICBndWludCAg ICBoaW50czsKLSsKLSsgICAgQnVzUGFuZWxQcm94eSAqZW1vamlfZXh0ZW5zaW9uOwotKyAgICBn Ym9vbGVhbiBpc19leHRlbnNpb25fbG9va3VwX3RhYmxlOwotIH07Ci0gCi0gc3RydWN0IF9CdXNJ bnB1dENvbnRleHRDbGFzcyB7Ci1AQCAtMTYyLDE2ICsxNjUsMTIgQEAgc3RhdGljIGdib29sZWFu IGJ1c19pbnB1dF9jb250ZXh0X3NlcnZpY2Vfc2V0X3Byb3BlcnR5Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAgICAgICAgKiplcnJvcik7Ci0gc3Rh dGljIHZvaWQgICAgIGJ1c19pbnB1dF9jb250ZXh0X3Vuc2V0X2VuZ2luZQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKEJ1c0lucHV0Q29udGV4dCAgICAgICAqY29udGV4dCk7 Ci0tc3RhdGljIHZvaWQgICAgIGJ1c19pbnB1dF9jb250ZXh0X3VwZGF0ZV9wcmVlZGl0X3RleHQK LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCdXNJbnB1dENvbnRleHQgICAg ICAgKmNvbnRleHQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c1Rl eHQgICAgICAgICAgICAgICp0ZXh0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGd1aW50ICAgICAgICAgICAgICAgICAgY3Vyc29yX3BvcywKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgICAgICAgIHZpc2libGUsCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICAgICBt b2RlKTsKLSBzdGF0aWMgdm9pZCAgICAgYnVzX2lucHV0X2NvbnRleHRfc2hvd19wcmVlZGl0X3Rl eHQKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCdXNJbnB1dENvbnRleHQg ICAgICAgKmNvbnRleHQpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJ1 c0lucHV0Q29udGV4dCAgICAgICAqY29udGV4dCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgICAgICAgIGlzX2V4dGVuc2lvbik7Ci0gc3RhdGlj IHZvaWQgICAgIGJ1c19pbnB1dF9jb250ZXh0X2hpZGVfcHJlZWRpdF90ZXh0Ci0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoQnVzSW5wdXRDb250ZXh0ICAgICAgICpjb250ZXh0 KTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCdXNJbnB1dENvbnRleHQg ICAgICAgKmNvbnRleHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jv b2xlYW4gICAgICAgICAgICAgICBpc19leHRlbnNpb24pOwotIHN0YXRpYyB2b2lkICAgICBidXNf aW5wdXRfY29udGV4dF91cGRhdGVfYXV4aWxpYXJ5X3RleHQKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChCdXNJbnB1dENvbnRleHQgICAgICAgKmNvbnRleHQsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c1RleHQgICAgICAgICAgICAgICp0ZXh0 LAotQEAgLTE4MCwxMCArMTc5LDYgQEAgc3RhdGljIHZvaWQgICAgIGJ1c19pbnB1dF9jb250ZXh0 X3Nob3dfYXV4aWxpYXJ5X3RleHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChCdXNJbnB1dENvbnRleHQgICAgICAgKmNvbnRleHQpOwotIHN0YXRpYyB2b2lkICAgICBidXNf aW5wdXRfY29udGV4dF9oaWRlX2F1eGlsaWFyeV90ZXh0Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoQnVzSW5wdXRDb250ZXh0ICAgICAgICpjb250ZXh0KTsKLS1zdGF0aWMg dm9pZCAgICAgYnVzX2lucHV0X2NvbnRleHRfdXBkYXRlX2xvb2t1cF90YWJsZQotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJ1c0lucHV0Q29udGV4dCAgICAgICAqY29udGV4 dCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzTG9va3VwVGFibGUg ICAgICAgKnRhYmxlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29s ZWFuICAgICAgICAgICAgICAgdmlzaWJsZSk7Ci0gc3RhdGljIHZvaWQgICAgIGJ1c19pbnB1dF9j b250ZXh0X3Nob3dfbG9va3VwX3RhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoQnVzSW5wdXRDb250ZXh0ICAgICAgICpjb250ZXh0KTsKLSBzdGF0aWMgdm9pZCAgICAg YnVzX2lucHV0X2NvbnRleHRfaGlkZV9sb29rdXBfdGFibGUKLUBAIC02MDUsMTAgKzYwMCwxMCBA QCBidXNfaW5wdXRfY29udGV4dF9jbGFzc19pbml0IChCdXNJbnB1dENvbnRleHRDbGFzcyAqY2xh c3MpCi0gICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCi0gICAgICAgICAgICAgMCwKLSAg ICAgICAgICAgICBOVUxMLCBOVUxMLAotLSAgICAgICAgICAgIGJ1c19tYXJzaGFsX1ZPSURfX1ZB UklBTlQsCi0rICAgICAgICAgICAgYnVzX21hcnNoYWxfVk9JRF9fT0JKRUNULAotICAgICAgICAg ICAgIEdfVFlQRV9OT05FLAotICAgICAgICAgICAgIDEsCi0tICAgICAgICAgICAgR19UWVBFX1ZB UklBTlQpOwotKyAgICAgICAgICAgIElCVVNfVFlQRV9FWFRFTlNJT05fRVZFTlQpOwotIAotICAg ICB0ZXh0X2VtcHR5ID0gaWJ1c190ZXh0X25ld19mcm9tX3N0cmluZyAoIiIpOwotICAgICBnX29i amVjdF9yZWZfc2luayAodGV4dF9lbXB0eSk7Ci1AQCAtNzYwLDI4ICs3NTUsODUgQEAgYnVzX2lu cHV0X2NvbnRleHRfcHJvcGVydHlfY2hhbmdlZCAoQnVzSW5wdXRDb250ZXh0ICpjb250ZXh0LAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKTsKLSB9Ci0g Ci0rCi0rLyoqCi0rICogX3BhbmVsX3Byb2Nlc3Nfa2V5X2V2ZW50X2NiOgotKyAqCi0rICogQSBH QXN5bmNSZWFkeUNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuCi0rICogYnVzX3Bh bmVsX3Byb3h5X3Byb2Nlc3Nfa2V5X2V2ZW50KCkgaXMgZmluaXNoZWQuCi0rICovCi0rc3RhdGlj IHZvaWQKLStfcGFuZWxfcHJvY2Vzc19rZXlfZXZlbnRfY2IgKEdPYmplY3QgICAgICAgICAgICAg ICAqc291cmNlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0ICAg ICAgICAgICpyZXMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJ1c01ldGhvZElu dm9jYXRpb24gKmludm9jYXRpb24pCi0rewotKyAgICBHRXJyb3IgKmVycm9yID0gTlVMTDsKLSsg ICAgR1ZhcmlhbnQgKnZhbHVlID0gZ19kYnVzX3Byb3h5X2NhbGxfZmluaXNoICgoR0RCdXNQcm94 eSAqKXNvdXJjZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmVzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmZXJyb3IpOwotKyAgICBpZiAodmFsdWUgIT0gTlVMTCkgewotKyAgICAgICAgZ19kYnVz X21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZSAoaW52b2NhdGlvbiwgdmFsdWUpOwotKyAg ICAgICAgZ192YXJpYW50X3VucmVmICh2YWx1ZSk7Ci0rICAgIH0KLSsgICAgZWxzZSB7Ci0rICAg ICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX2dlcnJvciAoaW52b2NhdGlvbiwg ZXJyb3IpOwotKyAgICAgICAgZ19lcnJvcl9mcmVlIChlcnJvcik7Ci0rICAgIH0KLSt9Ci0rCi0r dHlwZWRlZiBzdHJ1Y3QgX1Byb2Nlc3NLZXlFdmVudERhdGEgUHJvY2Vzc0tleUV2ZW50RGF0YTsK LStzdHJ1Y3QgX1Byb2Nlc3NLZXlFdmVudERhdGEgewotKyAgICBHREJ1c01ldGhvZEludm9jYXRp b24gKmludm9jYXRpb247Ci0rICAgIEJ1c0lucHV0Q29udGV4dCAgICAgICAqY29udGV4dDsKLSsg ICAgZ3VpbnQga2V5dmFsOwotKyAgICBndWludCBrZXljb2RlOwotKyAgICBndWludCBtb2RpZmll cnM7Ci0rfTsKLSsKLSAvKioKLSAgKiBfaWNfcHJvY2Vzc19rZXlfZXZlbnRfcmVwbHlfY2I6Ci0g ICoKLS0gKiBBIEdBc3luY1JlYWR5Q2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4g YnVzX2VuZ2luZV9wcm94eV9wcm9jZXNzX2tleV9ldmVudCgpIGlzIGZpbmlzaGVkLgotKyAqIEEg R0FzeW5jUmVhZHlDYWxsYmFjayBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbgotKyAqIGJ1c19l bmdpbmVfcHJveHlfcHJvY2Vzc19rZXlfZXZlbnQoKSBpcyBmaW5pc2hlZC4KLSAgKi8KLSBzdGF0 aWMgdm9pZAotIF9pY19wcm9jZXNzX2tleV9ldmVudF9yZXBseV9jYiAoR09iamVjdCAgICAgICAg ICAgICAgICpzb3VyY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNS ZXN1bHQgICAgICAgICAgKnJlcywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdE QnVzTWV0aG9kSW52b2NhdGlvbiAqaW52b2NhdGlvbikKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFByb2Nlc3NLZXlFdmVudERhdGEgICAqZGF0YSkKLSB7Ci0rICAgIEdEQnVzTWV0 aG9kSW52b2NhdGlvbiAqaW52b2NhdGlvbiA9IGRhdGEtPmludm9jYXRpb247Ci0rICAgIEJ1c0lu cHV0Q29udGV4dCAqY29udGV4dCA9IGRhdGEtPmNvbnRleHQ7Ci0rICAgIGd1aW50IGtleXZhbCA9 IGRhdGEtPmtleXZhbDsKLSsgICAgZ3VpbnQga2V5Y29kZSA9IGRhdGEtPmtleWNvZGU7Ci0rICAg IGd1aW50IG1vZGlmaWVycyA9IGRhdGEtPm1vZGlmaWVyczsKLSAgICAgR0Vycm9yICplcnJvciA9 IE5VTEw7Ci0gICAgIEdWYXJpYW50ICp2YWx1ZSA9IGdfZGJ1c19wcm94eV9jYWxsX2ZpbmlzaCAo KEdEQnVzUHJveHkgKilzb3VyY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJmVycm9yKTsKLSsKLSAgICAgaWYgKHZhbHVlICE9IE5VTEwpIHsKLS0g ICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUgKGludm9jYXRpb24s IHZhbHVlKTsKLSsgICAgICAgIGdib29sZWFuIHJldHZhbCA9IEZBTFNFOwotKyAgICAgICAgZ192 YXJpYW50X2dldCAodmFsdWUsICIoYikiLCAmcmV0dmFsKTsKLSsgICAgICAgIGlmIChjb250ZXh0 LT5lbW9qaV9leHRlbnNpb24gJiYgIXJldHZhbCkgewotKyAgICAgICAgICAgIGJ1c19wYW5lbF9w cm94eV9wcm9jZXNzX2tleV9ldmVudCAoY29udGV4dC0+ZW1vamlfZXh0ZW5zaW9uLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5dmFsLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5Y29kZSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVycywKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHQXN5bmNSZWFk eUNhbGxiYWNrKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBfcGFuZWxfcHJvY2Vzc19rZXlfZXZlbnRfY2IsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZvY2F0aW9uKTsKLSsgICAgICAgIH0gZWxz ZSB7Ci0rICAgICAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZSAo aW52b2NhdGlvbiwgdmFsdWUpOwotKyAgICAgICAgfQotICAgICAgICAgZ192YXJpYW50X3VucmVm ICh2YWx1ZSk7Ci0gICAgIH0KLSAgICAgZWxzZSB7Ci0gICAgICAgICBnX2RidXNfbWV0aG9kX2lu dm9jYXRpb25fcmV0dXJuX2dlcnJvciAoaW52b2NhdGlvbiwgZXJyb3IpOwotICAgICAgICAgZ19l cnJvcl9mcmVlIChlcnJvcik7Ci0gICAgIH0KLSsKLSsgICAgZ19vYmplY3RfdW5yZWYgKGNvbnRl eHQpOwotKyAgICBnX3NsaWNlX2ZyZWUgKFByb2Nlc3NLZXlFdmVudERhdGEsIGRhdGEpOwotIH0K LSAKLSAvKioKLUBAIC04NDAsMTIgKzg5MiwxOSBAQCBfaWNfcHJvY2Vzc19rZXlfZXZlbnQgIChC dXNJbnB1dENvbnRleHQgICAgICAgKmNvbnRleHQsCi0gCi0gICAgIC8qIGlnbm9yZSBrZXkgZXZl bnRzLCBpZiBpdCBpcyBhIGZha2UgaW5wdXQgY29udGV4dCAqLwotICAgICBpZiAoY29udGV4dC0+ aGFzX2ZvY3VzICYmIGNvbnRleHQtPmVuZ2luZSAmJiBjb250ZXh0LT5mYWtlID09IEZBTFNFKSB7 Ci0rICAgICAgICBQcm9jZXNzS2V5RXZlbnREYXRhICpkYXRhID0gZ19zbGljZV9uZXcwIChQcm9j ZXNzS2V5RXZlbnREYXRhKTsKLSsgICAgICAgIGRhdGEtPmludm9jYXRpb24gPSBpbnZvY2F0aW9u OwotKyAgICAgICAgZGF0YS0+Y29udGV4dCA9IGdfb2JqZWN0X3JlZiAoY29udGV4dCk7Ci0rICAg ICAgICBkYXRhLT5rZXl2YWwgPSBrZXl2YWw7Ci0rICAgICAgICBkYXRhLT5rZXljb2RlID0ga2V5 Y29kZTsKLSsgICAgICAgIGRhdGEtPm1vZGlmaWVycyA9IG1vZGlmaWVyczsKLSAgICAgICAgIGJ1 c19lbmdpbmVfcHJveHlfcHJvY2Vzc19rZXlfZXZlbnQgKGNvbnRleHQtPmVuZ2luZSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXZhbCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleWNvZGUsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMsCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR0FzeW5jUmVhZHlDYWxsYmFjaykg X2ljX3Byb2Nlc3Nfa2V5X2V2ZW50X3JlcGx5X2NiLAotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW52b2NhdGlvbik7Ci0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoR0FzeW5jUmVhZHlDYWxsYmFjaykKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaWNfcHJvY2Vzc19rZXlfZXZl bnRfcmVwbHlfY2IsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkYXRhKTsKLSAgICAgfQotICAgICBlbHNlIHsKLSAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52 b2NhdGlvbl9yZXR1cm5fdmFsdWUgKGludm9jYXRpb24sIGdfdmFyaWFudF9uZXcgKCIoYikiLCBG QUxTRSkpOwotQEAgLTg4MCw2ICs5MzksMTMgQEAgX2ljX3NldF9jdXJzb3JfbG9jYXRpb24gKEJ1 c0lucHV0Q29udGV4dCAgICAgICAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNv bnRleHQtPnksCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT53LAotICAgICAgICAg ICAgICAgICAgICAgICAgY29udGV4dC0+aCk7Ci0rICAgICAgICBpZiAoY29udGV4dC0+ZW1vamlf ZXh0ZW5zaW9uKSB7Ci0rICAgICAgICAgICAgYnVzX3BhbmVsX3Byb3h5X3NldF9jdXJzb3JfbG9j YXRpb24gKGNvbnRleHQtPmVtb2ppX2V4dGVuc2lvbiwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+eCwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+eSwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+dywKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aCk7 Ci0rICAgICAgICB9Ci0gICAgIH0KLSB9Ci0gCi1AQCAtOTEyLDYgKzk3OCwxNCBAQCBfaWNfc2V0 X2N1cnNvcl9sb2NhdGlvbl9yZWxhdGl2ZSAoQnVzSW5wdXRDb250ZXh0ICAgICAgICpjb250ZXh0 LAotICAgICAgICAgICAgICAgICAgICAgICAgeSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHcs Ci0gICAgICAgICAgICAgICAgICAgICAgICBoKTsKLSsgICAgICAgIGlmIChjb250ZXh0LT5lbW9q aV9leHRlbnNpb24pIHsKLSsgICAgICAgICAgICBidXNfcGFuZWxfcHJveHlfc2V0X2N1cnNvcl9s b2NhdGlvbl9yZWxhdGl2ZSAoCi0rICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lbW9qaV9l eHRlbnNpb24sCi0rICAgICAgICAgICAgICAgICAgICB4LAotKyAgICAgICAgICAgICAgICAgICAg eSwKLSsgICAgICAgICAgICAgICAgICAgIHcsCi0rICAgICAgICAgICAgICAgICAgICBoKTsKLSsg ICAgICAgIH0KLSAgICAgfQotIH0KLSAKLUBAIC0xMzk0LDcgKzE0NjgsNyBAQCBidXNfaW5wdXRf Y29udGV4dF9jbGVhcl9wcmVlZGl0X3RleHQgKEJ1c0lucHV0Q29udGV4dCAqY29udGV4dCkKLSAK LSAgICAgLyogYWx3YXlzIGNsZWFyIHByZWVkaXQgdGV4dCAqLwotICAgICBidXNfaW5wdXRfY29u dGV4dF91cGRhdGVfcHJlZWRpdF90ZXh0IChjb250ZXh0LAotLSAgICAgICAgdGV4dF9lbXB0eSwg MCwgRkFMU0UsIElCVVNfRU5HSU5FX1BSRUVESVRfQ0xFQVIpOwotKyAgICAgICAgdGV4dF9lbXB0 eSwgMCwgRkFMU0UsIElCVVNfRU5HSU5FX1BSRUVESVRfQ0xFQVIsIFRSVUUpOwotIH0KLSAKLSB2 b2lkCi1AQCAtMTQwNyw3ICsxNDgxLDEwIEBAIGJ1c19pbnB1dF9jb250ZXh0X2ZvY3VzX291dCAo QnVzSW5wdXRDb250ZXh0ICpjb250ZXh0KQotIAotICAgICBidXNfaW5wdXRfY29udGV4dF9jbGVh cl9wcmVlZGl0X3RleHQgKGNvbnRleHQpOwotICAgICBidXNfaW5wdXRfY29udGV4dF91cGRhdGVf YXV4aWxpYXJ5X3RleHQgKGNvbnRleHQsIHRleHRfZW1wdHksIEZBTFNFKTsKLS0gICAgYnVzX2lu cHV0X2NvbnRleHRfdXBkYXRlX2xvb2t1cF90YWJsZSAoY29udGV4dCwgbG9va3VwX3RhYmxlX2Vt cHR5LCBGQUxTRSk7Ci0rICAgIGJ1c19pbnB1dF9jb250ZXh0X3VwZGF0ZV9sb29rdXBfdGFibGUg KGNvbnRleHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxv b2t1cF90YWJsZV9lbXB0eSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRkFMU0UsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEZBTFNFKTsKLSAgICAgYnVzX2lucHV0X2NvbnRleHRfcmVnaXN0ZXJfcHJvcGVydGllcyAoY29u dGV4dCwgcHJvcHNfZW1wdHkpOwotIAotICAgICBpZiAoY29udGV4dC0+ZW5naW5lKSB7Ci1AQCAt MTQyNyw3ICsxNTA0LDEyIEBAIGJ1c19pbnB1dF9jb250ZXh0X2ZvY3VzX291dCAoQnVzSW5wdXRD b250ZXh0ICpjb250ZXh0KQotICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICBnX2Fzc2Vy dCAoQlVTX0lTX0lOUFVUX0NPTlRFWFQgKGNvbnRleHQpKTsgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgaWYgKGNvbnRleHQtPmhhc19m b2N1cyAmJiBjb250ZXh0LT5lbmdpbmUpIHsgICAgXAotKyAgICAgICAgaWYgKGNvbnRleHQtPmlz X2V4dGVuc2lvbl9sb29rdXBfdGFibGUgJiYgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0r ICAgICAgICAgICAgY29udGV4dC0+ZW1vamlfZXh0ZW5zaW9uKSB7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICBidXNfcGFuZWxfcHJveHlfIyNuYW1l IyNfbG9va3VwX3RhYmxlIChjb250ZXh0LT5lbW9qaV9leHRlbnNpb24pOyBcCi0rICAgICAgICAg ICAgcmV0dXJuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSsgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgaWYgKGNvbnRleHQt Pmhhc19mb2N1cyAmJiBjb250ZXh0LT5lbmdpbmUpIHsgICAgICAgICAgICAgICAgICAgICAgICBc Ci0gICAgICAgICAgICAgYnVzX2VuZ2luZV9wcm94eV8jI25hbWUgKGNvbnRleHQtPmVuZ2luZSk7 ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICB9Ci1A QCAtMTQ0Nyw2ICsxNTI5LDE0IEBAIGJ1c19pbnB1dF9jb250ZXh0X2NhbmRpZGF0ZV9jbGlja2Vk IChCdXNJbnB1dENvbnRleHQgKmNvbnRleHQsCi0gewotICAgICBnX2Fzc2VydCAoQlVTX0lTX0lO UFVUX0NPTlRFWFQgKGNvbnRleHQpKTsKLSAKLSsgICAgaWYgKGNvbnRleHQtPmlzX2V4dGVuc2lv bl9sb29rdXBfdGFibGUgJiYgY29udGV4dC0+ZW1vamlfZXh0ZW5zaW9uKSB7Ci0rICAgICAgICBi dXNfcGFuZWxfcHJveHlfY2FuZGlkYXRlX2NsaWNrZWRfbG9va3VwX3RhYmxlICgKLSsgICAgICAg ICAgICAgICAgY29udGV4dC0+ZW1vamlfZXh0ZW5zaW9uLAotKyAgICAgICAgICAgICAgICBpbmRl eCwKLSsgICAgICAgICAgICAgICAgYnV0dG9uLAotKyAgICAgICAgICAgICAgICBzdGF0ZSk7Ci0r ICAgICAgICAgICAgcmV0dXJuOwotKyAgICB9Ci0gICAgIGlmIChjb250ZXh0LT5lbmdpbmUpIHsK LSAgICAgICAgIGJ1c19lbmdpbmVfcHJveHlfY2FuZGlkYXRlX2NsaWNrZWQgKGNvbnRleHQtPmVu Z2luZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4 LAotQEAgLTE0NjcsNjEgKzE1NTcsMzMgQEAgYnVzX2lucHV0X2NvbnRleHRfcHJvcGVydHlfYWN0 aXZhdGUgKEJ1c0lucHV0Q29udGV4dCAqY29udGV4dCwKLSAgICAgfQotIH0KLSAKLS0vKioKLS0g KiBidXNfaW5wdXRfY29udGV4dF91cGRhdGVfcHJlZWRpdF90ZXh0OgotLSAqCi0tICogVXBkYXRl IGEgcHJlZWRpdCB0ZXh0LiBTZW5kIEQtQnVzIHNpZ25hbCB0byB1cGRhdGUgc3RhdHVzIG9mIGNs aWVudCBvciBzZW5kIGdsaWIgc2lnbmFsIHRvIHRoZSBwYW5lbCwgZGVwZW5kaW5nIG9uIGNhcGFi aWxpdGllcyBvZiB0aGUgY2xpZW50LgotLSAqLwotLXN0YXRpYyB2b2lkCi0tYnVzX2lucHV0X2Nv bnRleHRfdXBkYXRlX3ByZWVkaXRfdGV4dCAoQnVzSW5wdXRDb250ZXh0ICpjb250ZXh0LAotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCdXNUZXh0ICAgICAgICAqdGV4 dCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAg ICAgIGN1cnNvcl9wb3MsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Z2Jvb2xlYW4gICAgICAgICB2aXNpYmxlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGd1aW50ICAgICAgICAgICAgbW9kZSkKLS17Ci0tICAgIGdfYXNzZXJ0IChCVVNf SVNfSU5QVVRfQ09OVEVYVCAoY29udGV4dCkpOwotLQotLSAgICBpZiAoY29udGV4dC0+cHJlZWRp dF90ZXh0KSB7Ci0tICAgICAgICBnX29iamVjdF91bnJlZiAoY29udGV4dC0+cHJlZWRpdF90ZXh0 KTsKLS0gICAgfQotLQotLSAgICBjb250ZXh0LT5wcmVlZGl0X3RleHQgPSAoSUJ1c1RleHQgKikg Z19vYmplY3RfcmVmX3NpbmsgKHRleHQgPyB0ZXh0IDogdGV4dF9lbXB0eSk7Ci0tICAgIGNvbnRl eHQtPnByZWVkaXRfY3Vyc29yX3BvcyA9IGN1cnNvcl9wb3M7Ci0tICAgIGNvbnRleHQtPnByZWVk aXRfdmlzaWJsZSA9IHZpc2libGU7Ci0tICAgIGNvbnRleHQtPnByZWVkaXRfbW9kZSA9IG1vZGU7 Ci0tCi0tICAgIGlmIChQUkVFRElUX0NPTkRJVElPTikgewotLSAgICAgICAgR1ZhcmlhbnQgKnZh cmlhbnQgPSBpYnVzX3NlcmlhbGl6YWJsZV9zZXJpYWxpemUgKChJQnVzU2VyaWFsaXphYmxlICop Y29udGV4dC0+cHJlZWRpdF90ZXh0KTsKLS0gICAgICAgIGJ1c19pbnB1dF9jb250ZXh0X2VtaXRf c2lnbmFsIChjb250ZXh0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJVcGRhdGVQcmVlZGl0VGV4dCIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ192YXJpYW50X25ldyAoIih2dWIpIiwgdmFyaWFudCwgY29udGV4dC0+cHJlZWRpdF9j dXJzb3JfcG9zLCBjb250ZXh0LT5wcmVlZGl0X3Zpc2libGUpLAotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotLSAgICB9Ci0tICAgIGVsc2UgewotLSAgICAg ICAgZ19zaWduYWxfZW1pdCAoY29udGV4dCwKLS0gICAgICAgICAgICAgICAgICAgICAgIGNvbnRl eHRfc2lnbmFsc1tVUERBVEVfUFJFRURJVF9URVhUXSwKLS0gICAgICAgICAgICAgICAgICAgICAg IDAsCi0tICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5wcmVlZGl0X3RleHQsCi0tICAg ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5wcmVlZGl0X2N1cnNvcl9wb3MsCi0tICAgICAg ICAgICAgICAgICAgICAgICBjb250ZXh0LT5wcmVlZGl0X3Zpc2libGUpOwotLSAgICB9Ci0tfQot LQotIC8qKgotICAqIGJ1c19pbnB1dF9jb250ZXh0X3Nob3dfcHJlZWRpdF90ZXh0OgotICAqCi0g ICogU2hvdyBhIHByZWVkaXQgdGV4dC4gU2VuZCBELUJ1cyBzaWduYWwgdG8gdXBkYXRlIHN0YXR1 cyBvZiBjbGllbnQgb3Igc2VuZCBnbGliIHNpZ25hbCB0byB0aGUgcGFuZWwsIGRlcGVuZGluZyBv biBjYXBhYmlsaXRpZXMgb2YgdGhlIGNsaWVudC4KLSAgKi8KLSBzdGF0aWMgdm9pZAotLWJ1c19p bnB1dF9jb250ZXh0X3Nob3dfcHJlZWRpdF90ZXh0IChCdXNJbnB1dENvbnRleHQgKmNvbnRleHQp Ci0rYnVzX2lucHV0X2NvbnRleHRfc2hvd19wcmVlZGl0X3RleHQgKEJ1c0lucHV0Q29udGV4dCAq Y29udGV4dCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4g ICAgICAgICBpc19leHRlbnNpb24pCi0gewotICAgICBnX2Fzc2VydCAoQlVTX0lTX0lOUFVUX0NP TlRFWFQgKGNvbnRleHQpKTsKLSAKLS0gICAgaWYgKGNvbnRleHQtPnByZWVkaXRfdmlzaWJsZSkg ewotKyAgICBpZiAoY29udGV4dC0+cHJlZWRpdF92aXNpYmxlKQotICAgICAgICAgcmV0dXJuOwot LSAgICB9Ci0rICAgIGlmICghaXNfZXh0ZW5zaW9uICYmIGNvbnRleHQtPmVtb2ppX2V4dGVuc2lv bikKLSsgICAgICAgIHJldHVybjsKLSsKLSsgICAgaWYgKCFpc19leHRlbnNpb24pCi0rICAgICAg ICBjb250ZXh0LT5wcmVlZGl0X3Zpc2libGUgPSBUUlVFOwotIAotLSAgICBjb250ZXh0LT5wcmVl ZGl0X3Zpc2libGUgPSBUUlVFOwotKyAgICBpZiAoY29udGV4dC0+ZW1vamlfZXh0ZW5zaW9uICYm ICFpc19leHRlbnNpb24pIHsKLSsgICAgICAgIC8qIERvIG5vdCB1c2UgSElERV9QUkVFRElUX1RF WFQgc2lnbmFsIGJlbG93IGJ1dCBjYWxsCi0rICAgICAgICAgKiBidXNfcGFuZWxfcHJveHlfaGlk ZV9wcmVlZGl0X3RleHQoKSBkaXJlY3RseSBmb3IgdGhlIGV4dGVuc2lvbiBvbmx5Ci0rICAgICAg ICAgKiBidXQgbm90IGZvciB0aGUgbm9ybWFsIHBhbmVsLgotKyAgICAgICAgICovCi0rICAgICAg ICBidXNfcGFuZWxfcHJveHlfc2hvd19wcmVlZGl0X3RleHQgKGNvbnRleHQtPmVtb2ppX2V4dGVu c2lvbik7Ci0rICAgICAgICByZXR1cm47Ci0rICAgIH0KLSAKLSAgICAgaWYgKFBSRUVESVRfQ09O RElUSU9OKSB7Ci0gICAgICAgICBidXNfaW5wdXRfY29udGV4dF9lbWl0X3NpZ25hbCAoY29udGV4 dCwKLUBAIC0xNTQyLDE1ICsxNjA0LDI1IEBAIGJ1c19pbnB1dF9jb250ZXh0X3Nob3dfcHJlZWRp dF90ZXh0IChCdXNJbnB1dENvbnRleHQgKmNvbnRleHQpCi0gICogSGlkZSBhIHByZWVkaXQgdGV4 dC4gU2VuZCBELUJ1cyBzaWduYWwgdG8gdXBkYXRlIHN0YXR1cyBvZiBjbGllbnQgb3Igc2VuZCBn bGliIHNpZ25hbCB0byB0aGUgcGFuZWwsIGRlcGVuZGluZyBvbiBjYXBhYmlsaXRpZXMgb2YgdGhl IGNsaWVudC4KLSAgKi8KLSBzdGF0aWMgdm9pZAotLWJ1c19pbnB1dF9jb250ZXh0X2hpZGVfcHJl ZWRpdF90ZXh0IChCdXNJbnB1dENvbnRleHQgKmNvbnRleHQpCi0rYnVzX2lucHV0X2NvbnRleHRf aGlkZV9wcmVlZGl0X3RleHQgKEJ1c0lucHV0Q29udGV4dCAqY29udGV4dCwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgICBpc19leHRlbnNpb24p Ci0gewotICAgICBnX2Fzc2VydCAoQlVTX0lTX0lOUFVUX0NPTlRFWFQgKGNvbnRleHQpKTsKLSAK LS0gICAgaWYgKCFjb250ZXh0LT5wcmVlZGl0X3Zpc2libGUpIHsKLSsgICAgaWYgKCFpc19leHRl bnNpb24gJiYgIWNvbnRleHQtPnByZWVkaXRfdmlzaWJsZSkKLSAgICAgICAgIHJldHVybjsKLS0g ICAgfQotIAotLSAgICBjb250ZXh0LT5wcmVlZGl0X3Zpc2libGUgPSBGQUxTRTsKLSsgICAgaWYg KCFpc19leHRlbnNpb24pCi0rICAgICAgICBjb250ZXh0LT5wcmVlZGl0X3Zpc2libGUgPSBGQUxT RTsKLSsKLSsgICAgaWYgKGNvbnRleHQtPmVtb2ppX2V4dGVuc2lvbiAmJiAhaXNfZXh0ZW5zaW9u KSB7Ci0rICAgICAgICAvKiBEbyBub3QgdXNlIEhJREVfUFJFRURJVF9URVhUIHNpZ25hbCBiZWxv dyBidXQgY2FsbAotKyAgICAgICAgICogYnVzX3BhbmVsX3Byb3h5X2hpZGVfcHJlZWRpdF90ZXh0 KCkgZGlyZWN0bHkgZm9yIHRoZSBleHRlbnNpb24gb25seQotKyAgICAgICAgICogYnV0IG5vdCBm b3IgdGhlIG5vcm1hbCBwYW5lbC4KLSsgICAgICAgICAqLwotKyAgICAgICAgYnVzX3BhbmVsX3By b3h5X2hpZGVfcHJlZWRpdF90ZXh0IChjb250ZXh0LT5lbW9qaV9leHRlbnNpb24pOwotKyAgICAg ICAgcmV0dXJuOwotKyAgICB9Ci0gCi0gICAgIGlmIChQUkVFRElUX0NPTkRJVElPTikgewotICAg ICAgICAgYnVzX2lucHV0X2NvbnRleHRfZW1pdF9zaWduYWwgKGNvbnRleHQsCi1AQCAtMTY1OCwx OSArMTczMCwxNSBAQCBidXNfaW5wdXRfY29udGV4dF9oaWRlX2F1eGlsaWFyeV90ZXh0IChCdXNJ bnB1dENvbnRleHQgKmNvbnRleHQpCi0gICAgIH0KLSB9Ci0gCi0tLyoqCi0tICogYnVzX2lucHV0 X2NvbnRleHRfdXBkYXRlX2xvb2t1cF90YWJsZToKLS0gKgotLSAqIFVwZGF0ZSBjb250ZW50cyBp biB0aGUgbG9va3VwIHRhYmxlLgotLSAqIFNlbmQgRC1CdXMgc2lnbmFsIHRvIHVwZGF0ZSBzdGF0 dXMgb2YgY2xpZW50IG9yIHNlbmQgZ2xpYiBzaWduYWwgdG8gdGhlIHBhbmVsLCBkZXBlbmRpbmcg b24gY2FwYWJpbGl0aWVzIG9mIHRoZSBjbGllbnQuCi0tICovCi0tc3RhdGljIHZvaWQKLSt2b2lk Ci0gYnVzX2lucHV0X2NvbnRleHRfdXBkYXRlX2xvb2t1cF90YWJsZSAoQnVzSW5wdXRDb250ZXh0 ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCdXNM b29rdXBUYWJsZSAqdGFibGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ2Jvb2xlYW4gICAgICAgICB2aXNpYmxlKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGdib29sZWFuICAgICAgICAgdmlzaWJsZSwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgIGlzX2V4dGVuc2lvbikKLSB7 Ci0gICAgIGdfYXNzZXJ0IChCVVNfSVNfSU5QVVRfQ09OVEVYVCAoY29udGV4dCkpOwotIAotKyAg ICBjb250ZXh0LT5pc19leHRlbnNpb25fbG9va3VwX3RhYmxlID0gaXNfZXh0ZW5zaW9uOwotICAg ICBpZiAoY29udGV4dC0+bG9va3VwX3RhYmxlKSB7Ci0gICAgICAgICBnX29iamVjdF91bnJlZiAo Y29udGV4dC0+bG9va3VwX3RhYmxlKTsKLSAgICAgfQotQEAgLTIwMzUsNyArMjEwMyw5IEBAIF9l bmdpbmVfdXBkYXRlX3ByZWVkaXRfdGV4dF9jYiAoQnVzRW5naW5lUHJveHkgICplbmdpbmUsCi0g Ci0gICAgIGdfYXNzZXJ0IChjb250ZXh0LT5lbmdpbmUgPT0gZW5naW5lKTsKLSAKLS0gICAgYnVz X2lucHV0X2NvbnRleHRfdXBkYXRlX3ByZWVkaXRfdGV4dCAoY29udGV4dCwgdGV4dCwgY3Vyc29y X3BvcywgdmlzaWJsZSwgbW9kZSk7Ci0rICAgIGJ1c19pbnB1dF9jb250ZXh0X3VwZGF0ZV9wcmVl ZGl0X3RleHQgKGNvbnRleHQsIHRleHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGN1cnNvcl9wb3MsIHZpc2libGUsIG1vZGUsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUpOwotIH0KLSAKLSAvKioKLUBAIC0yMDc1 LDcgKzIxNDUsNyBAQCBfZW5naW5lX3VwZGF0ZV9sb29rdXBfdGFibGVfY2IgKEJ1c0VuZ2luZVBy b3h5ICAgKmVuZ2luZSwKLSAKLSAgICAgZ19hc3NlcnQgKGNvbnRleHQtPmVuZ2luZSA9PSBlbmdp bmUpOwotIAotLSAgICBidXNfaW5wdXRfY29udGV4dF91cGRhdGVfbG9va3VwX3RhYmxlIChjb250 ZXh0LCB0YWJsZSwgdmlzaWJsZSk7Ci0rICAgIGJ1c19pbnB1dF9jb250ZXh0X3VwZGF0ZV9sb29r dXBfdGFibGUgKGNvbnRleHQsIHRhYmxlLCB2aXNpYmxlLCBGQUxTRSk7Ci0gfQotIAotIC8qKgot QEAgLTIxMjMsMTEgKzIxOTMsMzUgQEAgX2VuZ2luZV91cGRhdGVfcHJvcGVydHlfY2IgKEJ1c0Vu Z2luZVByb3h5ICAqZW5naW5lLAotICAqIGZyb20gdGhlIGVuZ2luZSBvYmplY3QuCi0gICovCi0g c3RhdGljIHZvaWQKLS1fZW5naW5lX3BhbmVsX2V4dGVuc2lvbl9jYiAoQnVzRW5naW5lUHJveHkg ICplbmdpbmUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50ICAgICAgICAq cGFyYW1ldGVycywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVzSW5wdXRDb250ZXh0 ICpjb250ZXh0KQotK19lbmdpbmVfcGFuZWxfZXh0ZW5zaW9uX2NiIChCdXNFbmdpbmVQcm94eSAg ICAgKmVuZ2luZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c0V4dGVuc2lvbkV2 ZW50ICpldmVudCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVzSW5wdXRDb250ZXh0 ICAgICpjb250ZXh0KQotIHsKLS0gICAgZ19zaWduYWxfZW1pdCAoY29udGV4dCwgY29udGV4dF9z aWduYWxzW1BBTkVMX0VYVEVOU0lPTl0sIDAsIHBhcmFtZXRlcnMpOwotKyAgICBnX3NpZ25hbF9l bWl0IChjb250ZXh0LCBjb250ZXh0X3NpZ25hbHNbUEFORUxfRVhURU5TSU9OXSwgMCwgZXZlbnQp OwotK30KLSsKLStzdGF0aWMgdm9pZAotK19lbmdpbmVfc2hvd19wcmVlZGl0X3RleHRfY2IgKEJ1 c0VuZ2luZVByb3h5ICAqZW5naW5lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1 c0lucHV0Q29udGV4dCAqY29udGV4dCkKLSt7Ci0rICAgIGdfYXNzZXJ0IChCVVNfSVNfRU5HSU5F X1BST1hZIChlbmdpbmUpKTsKLSsgICAgZ19hc3NlcnQgKEJVU19JU19JTlBVVF9DT05URVhUIChj b250ZXh0KSk7Ci0rCi0rICAgIGdfYXNzZXJ0IChjb250ZXh0LT5lbmdpbmUgPT0gZW5naW5lKTsK LSsKLSsgICAgYnVzX2lucHV0X2NvbnRleHRfc2hvd19wcmVlZGl0X3RleHQgKGNvbnRleHQsIEZB TFNFKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStfZW5naW5lX2hpZGVfcHJlZWRpdF90ZXh0X2Ni IChCdXNFbmdpbmVQcm94eSAgKmVuZ2luZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBCdXNJbnB1dENvbnRleHQgKmNvbnRleHQpCi0rewotKyAgICBnX2Fzc2VydCAoQlVTX0lTX0VO R0lORV9QUk9YWSAoZW5naW5lKSk7Ci0rICAgIGdfYXNzZXJ0IChCVVNfSVNfSU5QVVRfQ09OVEVY VCAoY29udGV4dCkpOwotKwotKyAgICBnX2Fzc2VydCAoY29udGV4dC0+ZW5naW5lID09IGVuZ2lu ZSk7Ci0rCi0rICAgIGJ1c19pbnB1dF9jb250ZXh0X2hpZGVfcHJlZWRpdF90ZXh0IChjb250ZXh0 LCBGQUxTRSk7Ci0gfQotIAotICNkZWZpbmUgREVGSU5FX0ZVTkNUSU9OKG5hbWUpICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1AQCAtMjE0Myw4ICsyMjM3LDYgQEAgX2VuZ2lu ZV9wYW5lbF9leHRlbnNpb25fY2IgKEJ1c0VuZ2luZVByb3h5ICAqZW5naW5lLAotICAgICAgICAg YnVzX2lucHV0X2NvbnRleHRfIyNuYW1lIChjb250ZXh0KTsgICAgICAgICAgICAgICAgICAgICBc Ci0gICAgIH0KLSAKLS1ERUZJTkVfRlVOQ1RJT04gKHNob3dfcHJlZWRpdF90ZXh0KQotLURFRklO RV9GVU5DVElPTiAoaGlkZV9wcmVlZGl0X3RleHQpCi0gREVGSU5FX0ZVTkNUSU9OIChzaG93X2F1 eGlsaWFyeV90ZXh0KQotIERFRklORV9GVU5DVElPTiAoaGlkZV9hdXhpbGlhcnlfdGV4dCkKLSBE RUZJTkVfRlVOQ1RJT04gKHNob3dfbG9va3VwX3RhYmxlKQotQEAgLTIyMzksNyArMjMzMSwxMCBA QCBidXNfaW5wdXRfY29udGV4dF9kaXNhYmxlIChCdXNJbnB1dENvbnRleHQgKmNvbnRleHQpCi0g Ci0gICAgIGJ1c19pbnB1dF9jb250ZXh0X2NsZWFyX3ByZWVkaXRfdGV4dCAoY29udGV4dCk7Ci0g ICAgIGJ1c19pbnB1dF9jb250ZXh0X3VwZGF0ZV9hdXhpbGlhcnlfdGV4dCAoY29udGV4dCwgdGV4 dF9lbXB0eSwgRkFMU0UpOwotLSAgICBidXNfaW5wdXRfY29udGV4dF91cGRhdGVfbG9va3VwX3Rh YmxlIChjb250ZXh0LCBsb29rdXBfdGFibGVfZW1wdHksIEZBTFNFKTsKLSsgICAgYnVzX2lucHV0 X2NvbnRleHRfdXBkYXRlX2xvb2t1cF90YWJsZSAoY29udGV4dCwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9va3VwX3RhYmxlX2VtcHR5LAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UpOwotICAgICBidXNfaW5wdXRfY29u dGV4dF9yZWdpc3Rlcl9wcm9wZXJ0aWVzIChjb250ZXh0LCBwcm9wc19lbXB0eSk7Ci0gCi0gICAg IGlmIChjb250ZXh0LT5lbmdpbmUpIHsKLUBAIC0yMjgzLDcgKzIzNzgsMTAgQEAgYnVzX2lucHV0 X2NvbnRleHRfdW5zZXRfZW5naW5lIChCdXNJbnB1dENvbnRleHQgKmNvbnRleHQpCi0gCi0gICAg IGJ1c19pbnB1dF9jb250ZXh0X2NsZWFyX3ByZWVkaXRfdGV4dCAoY29udGV4dCk7Ci0gICAgIGJ1 c19pbnB1dF9jb250ZXh0X3VwZGF0ZV9hdXhpbGlhcnlfdGV4dCAoY29udGV4dCwgdGV4dF9lbXB0 eSwgRkFMU0UpOwotLSAgICBidXNfaW5wdXRfY29udGV4dF91cGRhdGVfbG9va3VwX3RhYmxlIChj b250ZXh0LCBsb29rdXBfdGFibGVfZW1wdHksIEZBTFNFKTsKLSsgICAgYnVzX2lucHV0X2NvbnRl eHRfdXBkYXRlX2xvb2t1cF90YWJsZSAoY29udGV4dCwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbG9va3VwX3RhYmxlX2VtcHR5LAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UpOwotICAgICBidXNfaW5wdXRfY29udGV4dF9y ZWdpc3Rlcl9wcm9wZXJ0aWVzIChjb250ZXh0LCBwcm9wc19lbXB0eSk7Ci0gCi0gICAgIGlmIChj b250ZXh0LT5lbmdpbmUpIHsKLUBAIC0yNjM5LDE3ICsyNzM3LDEyOCBAQCBidXNfaW5wdXRfY29u dGV4dF9zZXRfY29udGVudF90eXBlIChCdXNJbnB1dENvbnRleHQgKmNvbnRleHQsCi0gfQotIAot IHZvaWQKLS1idXNfaW5wdXRfY29udGV4dF9jb21taXRfdGV4dCAoQnVzSW5wdXRDb250ZXh0ICpj b250ZXh0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzVGV4dCAgICAgICAg KnRleHQpCi0rYnVzX2lucHV0X2NvbnRleHRfY29tbWl0X3RleHRfdXNlX2V4dGVuc2lvbiAoQnVz SW5wdXRDb250ZXh0ICpjb250ZXh0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIElCdXNUZXh0ICAgICAgICAqdGV4dCwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgIHVzZV9leHRlbnNpb24p Ci0gewotICAgICBnX2Fzc2VydCAoQlVTX0lTX0lOUFVUX0NPTlRFWFQgKGNvbnRleHQpKTsKLSAK LSAgICAgaWYgKHRleHQgPT0gdGV4dF9lbXB0eSB8fCB0ZXh0ID09IE5VTEwpCi0gICAgICAgICBy ZXR1cm47Ci0gCi0tICAgIEdWYXJpYW50ICp2YXJpYW50ID0gaWJ1c19zZXJpYWxpemFibGVfc2Vy aWFsaXplICgoSUJ1c1NlcmlhbGl6YWJsZSAqKXRleHQpOwotLSAgICBidXNfaW5wdXRfY29udGV4 dF9lbWl0X3NpZ25hbCAoY29udGV4dCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJDb21taXRUZXh0IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdf dmFyaWFudF9uZXcgKCIodikiLCB2YXJpYW50KSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE5VTEwpOwotKyAgICBpZiAodXNlX2V4dGVuc2lvbiAmJiBjb250ZXh0LT5lbW9q aV9leHRlbnNpb24pIHsKLSsgICAgICAgIGJ1c19wYW5lbF9wcm94eV9jb21taXRfdGV4dF9yZWNl aXZlZCAoY29udGV4dC0+ZW1vamlfZXh0ZW5zaW9uLCB0ZXh0KTsKLSsgICAgfSBlbHNlIHsKLSsg ICAgICAgIEdWYXJpYW50ICp2YXJpYW50ID0gaWJ1c19zZXJpYWxpemFibGVfc2VyaWFsaXplICgK LSsgICAgICAgICAgICAgICAgKElCdXNTZXJpYWxpemFibGUgKil0ZXh0KTsKLSsgICAgICAgIGJ1 c19pbnB1dF9jb250ZXh0X2VtaXRfc2lnbmFsIChjb250ZXh0LAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJDb21taXRUZXh0IiwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBnX3ZhcmlhbnRfbmV3ICgiKHYpIiwgdmFyaWFudCksCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0rICAgIH0KLSt9Ci0r Ci0rdm9pZAotK2J1c19pbnB1dF9jb250ZXh0X2NvbW1pdF90ZXh0IChCdXNJbnB1dENvbnRleHQg KmNvbnRleHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCdXNUZXh0ICAgICAg ICAqdGV4dCkKLSt7Ci0rICAgIGJ1c19pbnB1dF9jb250ZXh0X2NvbW1pdF90ZXh0X3VzZV9leHRl bnNpb24gKGNvbnRleHQsIHRleHQsIFRSVUUpOwotK30KLSsKLSt2b2lkCi0rYnVzX2lucHV0X2Nv bnRleHRfdXBkYXRlX3ByZWVkaXRfdGV4dCAoQnVzSW5wdXRDb250ZXh0ICpjb250ZXh0LAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCdXNUZXh0ICAgICAgICAqdGV4 dCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAg ICAgIGN1cnNvcl9wb3MsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Z2Jvb2xlYW4gICAgICAgICB2aXNpYmxlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGd1aW50ICAgICAgICAgICAgbW9kZSwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgIHVzZV9leHRlbnNpb24pCi0rewotKyAg ICBnYm9vbGVhbiBleHRlbnNpb25fdmlzaWJsZSA9IEZBTFNFOwotKyAgICBnX2Fzc2VydCAoQlVT X0lTX0lOUFVUX0NPTlRFWFQgKGNvbnRleHQpKTsKLSsKLSsgICAgaWYgKGNvbnRleHQtPnByZWVk aXRfdGV4dCkgewotKyAgICAgICAgZ19vYmplY3RfdW5yZWYgKGNvbnRleHQtPnByZWVkaXRfdGV4 dCk7Ci0rICAgIH0KLSsKLSsgICAgY29udGV4dC0+cHJlZWRpdF90ZXh0ID0gKElCdXNUZXh0ICop IGdfb2JqZWN0X3JlZl9zaW5rICh0ZXh0ID8gdGV4dCA6Ci0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dF9lbXB0eSk7Ci0rICAg IGNvbnRleHQtPnByZWVkaXRfY3Vyc29yX3BvcyA9IGN1cnNvcl9wb3M7Ci0rICAgIGlmICh1c2Vf ZXh0ZW5zaW9uKQotKyAgICAgICAgY29udGV4dC0+cHJlZWRpdF92aXNpYmxlID0gdmlzaWJsZTsK LSsgICAgaWYgKHVzZV9leHRlbnNpb24pCi0rICAgICAgICBjb250ZXh0LT5wcmVlZGl0X21vZGUg PSBtb2RlOwotKyAgICBleHRlbnNpb25fdmlzaWJsZSA9IGNvbnRleHQtPnByZWVkaXRfdmlzaWJs ZSB8Ci0rICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnRleHQtPmVtb2ppX2V4dGVuc2lvbiAh PSBOVUxMKTsKLSsKLSsgICAgaWYgKHVzZV9leHRlbnNpb24gJiYgY29udGV4dC0+ZW1vamlfZXh0 ZW5zaW9uKSB7Ci0rICAgICAgICBidXNfcGFuZWxfcHJveHlfdXBkYXRlX3ByZWVkaXRfdGV4dCAo Y29udGV4dC0+ZW1vamlfZXh0ZW5zaW9uLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnRleHQtPnByZWVkaXRfdGV4dCwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5wcmVlZGl0X2N1cnNvcl9wb3Ms Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ cHJlZWRpdF92aXNpYmxlKTsKLSsgICAgfSBlbHNlIGlmIChQUkVFRElUX0NPTkRJVElPTikgewot KyAgICAgICAgR1ZhcmlhbnQgKnZhcmlhbnQgPSBpYnVzX3NlcmlhbGl6YWJsZV9zZXJpYWxpemUg KAotKyAgICAgICAgICAgICAgICAoSUJ1c1NlcmlhbGl6YWJsZSAqKWNvbnRleHQtPnByZWVkaXRf dGV4dCk7Ci0rICAgICAgICBidXNfaW5wdXRfY29udGV4dF9lbWl0X3NpZ25hbCAoY29udGV4dCwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVXBkYXRlUHJlZWRpdFRl eHQiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfdmFyaWFudF9u ZXcgKAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIih2 dWIpIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh cmlhbnQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b250ZXh0LT5wcmVlZGl0X2N1cnNvcl9wb3MsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25fdmlzaWJsZSksCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgICBn X3NpZ25hbF9lbWl0IChjb250ZXh0LAotKyAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dF9z aWduYWxzW1VQREFURV9QUkVFRElUX1RFWFRdLAotKyAgICAgICAgICAgICAgICAgICAgICAgMCwK LSsgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnByZWVkaXRfdGV4dCwKLSsgICAgICAg ICAgICAgICAgICAgICAgIGNvbnRleHQtPnByZWVkaXRfY3Vyc29yX3BvcywKLSsgICAgICAgICAg ICAgICAgICAgICAgIGV4dGVuc2lvbl92aXNpYmxlKTsKLSsgICAgfQotK30KLSsKLSt2b2lkCi0r YnVzX2lucHV0X2NvbnRleHRfc2V0X2Vtb2ppX2V4dGVuc2lvbiAoQnVzSW5wdXRDb250ZXh0ICpj b250ZXh0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1c1BhbmVs UHJveHkgICAqZW1vamlfZXh0ZW5zaW9uKQotK3sKLSsgICAgZ19hc3NlcnQgKEJVU19JU19JTlBV VF9DT05URVhUIChjb250ZXh0KSk7Ci0rCi0rICAgIGlmIChjb250ZXh0LT5lbW9qaV9leHRlbnNp b24pCi0rICAgICAgICBnX29iamVjdF91bnJlZiAoY29udGV4dC0+ZW1vamlfZXh0ZW5zaW9uKTsK LSsgICAgY29udGV4dC0+ZW1vamlfZXh0ZW5zaW9uID0gZW1vamlfZXh0ZW5zaW9uOwotKyAgICBp ZiAoZW1vamlfZXh0ZW5zaW9uKSB7Ci0rICAgICAgICBnX29iamVjdF9yZWYgKGNvbnRleHQtPmVt b2ppX2V4dGVuc2lvbik7Ci0rICAgICAgICBpZiAoIWNvbnRleHQtPmNvbm5lY3Rpb24pCi0rICAg ICAgICAgICAgcmV0dXJuOwotKyAgICAgICAgYnVzX2lucHV0X2NvbnRleHRfc2hvd19wcmVlZGl0 X3RleHQgKGNvbnRleHQsIFRSVUUpOwotKyAgICAgICAgYnVzX3BhbmVsX3Byb3h5X3NldF9jdXJz b3JfbG9jYXRpb24gKGNvbnRleHQtPmVtb2ppX2V4dGVuc2lvbiwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT54LAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnksCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+dywKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oKTsKLSsgICAgfSBl bHNlIHsKLSsgICAgICAgIGlmICghY29udGV4dC0+Y29ubmVjdGlvbikKLSsgICAgICAgICAgICBy ZXR1cm47Ci0rICAgICAgICAvKiBodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ25vbWUt c2hlbGwvbWVyZ2VfcmVxdWVzdHMvMTEzCi0rICAgICAgICAgKiBDYW5ub3QgdXNlIGJ1c19pbnB1 dF9jb250ZXh0X2hpZGVfcHJlZWRpdF90ZXh0ICgpIHlldC4KLSsgICAgICAgICAqLwotKyAgICAg ICAgaWYgKCFjb250ZXh0LT5wcmVlZGl0X3Zpc2libGUpIHsKLSsgICAgICAgICAgICBidXNfaW5w dXRfY29udGV4dF91cGRhdGVfcHJlZWRpdF90ZXh0IChjb250ZXh0LAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRfZW1wdHksCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQlVTX0VOR0lO RV9QUkVFRElUX0NMRUFSLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEZBTFNFKTsKLSsgICAgICAgIH0KLSsgICAgfQotK30KLSsKLSt2b2lkCi0r YnVzX2lucHV0X2NvbnRleHRfcGFuZWxfZXh0ZW5zaW9uX3JlY2VpdmVkIChCdXNJbnB1dENvbnRl eHQgICAgKmNvbnRleHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJQnVzRXh0ZW5zaW9uRXZlbnQgKmV2ZW50KQotK3sKLSsgICAgZ19hc3NlcnQgKEJVU19J U19JTlBVVF9DT05URVhUIChjb250ZXh0KSk7Ci0rCi0rICAgIGlmICghY29udGV4dC0+ZW5naW5l KQotKyAgICAgICAgcmV0dXJuOwotKyAgICBidXNfZW5naW5lX3Byb3h5X3BhbmVsX2V4dGVuc2lv bl9yZWNlaXZlZCAoY29udGV4dC0+ZW5naW5lLCBldmVudCk7Ci0gfQotZGlmZiAtLWdpdCBhL2J1 cy9pbnB1dGNvbnRleHQuaCBiL2J1cy9pbnB1dGNvbnRleHQuaAotaW5kZXggNzY3NGFiZDguLmE0 NmQ1YzA2IDEwMDY0NAotLS0tIGEvYnVzL2lucHV0Y29udGV4dC5oCi0rKysgYi9idXMvaW5wdXRj b250ZXh0LmgKLUBAIC0yOCw2ICsyOCwxMSBAQAotICNpbmNsdWRlICJjb25uZWN0aW9uLmgiCi0g I2luY2x1ZGUgImZhY3Rvcnlwcm94eS5oIgotIAotKyNpZm5kZWYgX19CVVNfUEFORUxfUFJPWFlf REVGSU5FRAotKyNkZWZpbmUgX19CVVNfUEFORUxfUFJPWFlfREVGSU5FRAotK3R5cGVkZWYgc3Ry dWN0IF9CdXNQYW5lbFByb3h5IEJ1c1BhbmVsUHJveHk7Ci0rI2VuZGlmCi0rCi0gLyoKLSAgKiBU eXBlIG1hY3Jvcy4KLSAgKi8KLUBAIC02Myw2ICs2OCw3IEBAIEJ1c0lucHV0Q29udGV4dCAgICAg KmJ1c19pbnB1dF9jb250ZXh0X25ldyAgICAgIChCdXNDb25uZWN0aW9uICAgICAgKmNvbm5lY3Rp b24sCi0gCi0gLyoqCi0gICogYnVzX2lucHV0X2NvbnRleHRfZm9jdXNfaW46Ci0rICogQGNvbnRl eHQ6IEEgI0J1c0lucHV0Q29udGV4dC4KLSAgKgotICAqIEdpdmUgYSBmb2N1cyB0byB0aGUgY29u dGV4dC4gQ2FsbCBGb2N1c0luLCBFbmFibGUsIFNldENhcGFiaWxpdGllcywKLSAgKiBhbmQgU2V0 Q3Vyc29yTG9jYXRpb24gbWV0aG9kcyBvZiB0aGUgZW5naW5lIGZvciB0aGUgY29udGV4dCwKLUBA IC03Myw2ICs3OSw3IEBAIHZvaWQgICAgICAgICAgICAgICAgIGJ1c19pbnB1dF9jb250ZXh0X2Zv Y3VzX2luIChCdXNJbnB1dENvbnRleHQgICAgKmNvbnRleHQpOwotIAotIC8qKgotICAqIGJ1c19p bnB1dF9jb250ZXh0X2ZvY3VzX291dDoKLSsgKiBAY29udGV4dDogQSAjQnVzSW5wdXRDb250ZXh0 LgotICAqCi0gICogUmVtb3ZlIGEgZm9jdXMgZnJvbSB0aGUgY29udGV4dC4gQ2FsbCBGb2N1c091 dCBtZXRob2Qgb2YgdGhlIGVuZ2luZSBmb3IKLSAgKiB0aGUgY29udGV4dC4KLUBAIC04Myw2ICs5 MCw3IEBAIHZvaWQgICAgICAgICAgICAgICAgIGJ1c19pbnB1dF9jb250ZXh0X2ZvY3VzX291dAot IAotIC8qKgotICAqIGJ1c19pbnB1dF9jb250ZXh0X2hhc19mb2N1czoKLSsgKiBAY29udGV4dDog QSAjQnVzSW5wdXRDb250ZXh0LgotICAqIEByZXR1cm5zOiBjb250ZXh0LT5oYXNfZm9jdXMuCi0g ICovCi0gZ2Jvb2xlYW4gICAgICAgICAgICAgYnVzX2lucHV0X2NvbnRleHRfaGFzX2ZvY3VzCi1A QCAtOTAsNiArOTgsNyBAQCBnYm9vbGVhbiAgICAgICAgICAgICBidXNfaW5wdXRfY29udGV4dF9o YXNfZm9jdXMKLSAKLSAvKioKLSAgKiBidXNfaW5wdXRfY29udGV4dF9lbmFibGU6Ci0rICogQGNv bnRleHQ6IEEgI0J1c0lucHV0Q29udGV4dC4KLSAgKgotICAqIEVuYWJsZSB0aGUgY3VycmVudCBl bmdpbmUgZm9yIHRoZSBjb250ZXh0LiBSZXF1ZXN0IGFuIGVuZ2luZSAoaWYgbmVlZGVkKSwKLSAg KiBjYWxsIEZvY3VzSW4sIEVuYWJsZSwgU2V0Q2FwYWJpbGl0aWVzLCBhbmQgU2V0Q3Vyc29yTG9j YXRpb24gbWV0aG9kcwotQEAgLTEwMCw2ICsxMDksNyBAQCB2b2lkICAgICAgICAgICAgICAgICBi dXNfaW5wdXRfY29udGV4dF9lbmFibGUgICAoQnVzSW5wdXRDb250ZXh0ICAgICpjb250ZXh0KTsK LSAKLSAvKioKLSAgKiBidXNfaW5wdXRfY29udGV4dF9kaXNhYmxlOgotKyAqIEBjb250ZXh0OiBB ICNCdXNJbnB1dENvbnRleHQuCi0gICoKLSAgKiBEaXNhYmxlIHRoZSBjdXJyZW50IGVuZ2luZSBm b3IgdGhlIGNvbnRleHQuIFJlcXVlc3QgYW4gZW5naW5lIChpZiBuZWVkZWQpLAotICAqIGNhbGwg Rm9jdXNJbiwgRW5hYmxlLCBTZXRDYXBhYmlsaXRpZXMsIGFuZCBTZXRDdXJzb3JMb2NhdGlvbiBt ZXRob2RzCi1AQCAtMTEwLDYgKzEyMCw3IEBAIHZvaWQgICAgICAgICAgICAgICAgIGJ1c19pbnB1 dF9jb250ZXh0X2Rpc2FibGUgIChCdXNJbnB1dENvbnRleHQgICAgKmNvbnRleHQpOwotIAotIC8q KgotICAqIGJ1c19pbnB1dF9jb250ZXh0X3BhZ2VfdXA6Ci0rICogQGNvbnRleHQ6IEEgI0J1c0lu cHV0Q29udGV4dC4KLSAgKgotICAqIENhbGwgcGFnZV91cCBtZXRob2Qgb2YgdGhlIGN1cnJlbnQg ZW5naW5lIHByb3h5LgotICAqLwotQEAgLTExNyw2ICsxMjgsNyBAQCB2b2lkICAgICAgICAgICAg ICAgICBidXNfaW5wdXRfY29udGV4dF9wYWdlX3VwICAoQnVzSW5wdXRDb250ZXh0ICAgICpjb250 ZXh0KTsKLSAKLSAvKioKLSAgKiBidXNfaW5wdXRfY29udGV4dF9wYWdlX2Rvd246Ci0rICogQGNv bnRleHQ6IEEgI0J1c0lucHV0Q29udGV4dC4KLSAgKgotICAqIENhbGwgcGFnZV9kb3duIG1ldGhv ZCBvZiB0aGUgY3VycmVudCBlbmdpbmUgcHJveHkuCi0gICovCi1AQCAtMTI1LDYgKzEzNyw3IEBA IHZvaWQgICAgICAgICAgICAgICAgIGJ1c19pbnB1dF9jb250ZXh0X3BhZ2VfZG93bgotIAotIC8q KgotICAqIGJ1c19pbnB1dF9jb250ZXh0X2N1cnNvcl91cDoKLSsgKiBAY29udGV4dDogQSAjQnVz SW5wdXRDb250ZXh0LgotICAqCi0gICogQ2FsbCBjdXJzb3JfdXAgbWV0aG9kIG9mIHRoZSBjdXJy ZW50IGVuZ2luZSBwcm94eS4KLSAgKi8KLUBAIC0xMzMsNiArMTQ2LDcgQEAgdm9pZCAgICAgICAg ICAgICAgICAgYnVzX2lucHV0X2NvbnRleHRfY3Vyc29yX3VwCi0gCi0gLyoqCi0gICogYnVzX2lu cHV0X2NvbnRleHRfY3Vyc29yX2Rvd246Ci0rICogQGNvbnRleHQ6IEEgI0J1c0lucHV0Q29udGV4 dC4KLSAgKgotICAqIENhbGwgY3Vyc29yX2Rvd24gbWV0aG9kIG9mIHRoZSBjdXJyZW50IGVuZ2lu ZSBwcm94eS4KLSAgKi8KLUBAIC0xNDEsNiArMTU1LDEwIEBAIHZvaWQgICAgICAgICAgICAgICAg IGJ1c19pbnB1dF9jb250ZXh0X2N1cnNvcl9kb3duCi0gCi0gLyoqCi0gICogYnVzX2lucHV0X2Nv bnRleHRfY2FuZGlkYXRlX2NsaWNrZWQ6Ci0rICogQGNvbnRleHQ6IEEgI0J1c0lucHV0Q29udGV4 dC4KLSsgKiBAaW5kZXg6IEFuIGluZGV4LgotKyAqIEBidXR0b246IEEgYnV0dG9uIG51bWJlci4K LSsgKiBAc3RhdGU6IEEgYnV0dG9uIHN0YXRlLgotICAqCi0gICogQ2FsbCBjYW5kaWRhdGVfY2xp Y2tlZCBtZXRob2Qgb2YgdGhlIGN1cnJlbnQgZW5naW5lIHByb3h5LgotICAqLwotQEAgLTE1Miw2 ICsxNzAsOCBAQCB2b2lkICAgICAgICAgICAgICAgICBidXNfaW5wdXRfY29udGV4dF9jYW5kaWRh dGVfY2xpY2tlZAotIAotIC8qKgotICAqIGJ1c19pbnB1dF9jb250ZXh0X3NldF9lbmdpbmU6Ci0r ICogQGNvbnRleHQ6IEEgI0J1c0lucHV0Q29udGV4dC4KLSsgKiBAZW5naW5lOiBBICNCdXNFbmdp bmVQcm94eS4KLSAgKgotICAqIFVzZSB0aGUgZW5naW5lIG9uIHRoZSBjb250ZXh0LgotICAqLwot QEAgLTE2MSwxMiArMTgxLDE0IEBAIHZvaWQgICAgICAgICAgICAgICAgIGJ1c19pbnB1dF9jb250 ZXh0X3NldF9lbmdpbmUKLSAKLSAvKioKLSAgKiBidXNfaW5wdXRfY29udGV4dF9zZXRfZW5naW5l X2J5X2Rlc2M6Ci0rICogQGNvbnRleHQ6IEEgI0J1c0lucHV0Q29udGV4dC4KLSAgKiBAZGVzYzog dGhlIGVuZ2luZSB0byB1c2Ugb24gdGhlIGNvbnRleHQuCi0gICogQHRpbWVvdXQ6IHRpbWVvdXQg KGluIG1zKSBmb3IgRC1CdXMgY2FsbHMuCi0gICogQGNhbGxiYWNrOiBhIGZ1bmN0aW9uIHRvIGJl IGNhbGxlZCB3aGVuIGJ1c19pbnB1dF9jb250ZXh0X3NldF9lbmdpbmVfYnlfZGVzYwotICAqICAg ICAgICAgICAgaXMgZmluaXNoZWQuIGlmIE5VTEwsIHRoZSBkZWZhdWx0IGNhbGxiYWNrCi0gICog ICAgICAgICAgICBmdW5jdGlvbiwgd2hpY2gganVzdCBjYWxscwotICAqICAgICAgICAgICAgYnVz X2lucHV0X2NvbnRleHRfc2V0X2VuZ2luZV9ieV9kZXNjX2ZpbmlzaCwgaXMgdXNlZC4KLSsgKiBA dXNlcl9kYXRhOiBhbiBhcmd1bWVudCBvZiBAY2FsbGJhY2suCi0gICoKLSAgKiBDcmVhdGUgYSBu ZXcgQnVzRW5naW5lUHJveHkgb2JqZWN0IGFuZCB1c2UgaXQgb24gdGhlIGNvbnRleHQuCi0gICov Ci1AQCAtMTgxLDYgKzIwMyw5IEBAIHZvaWQgICAgICAgICAgICAgICAgIGJ1c19pbnB1dF9jb250 ZXh0X3NldF9lbmdpbmVfYnlfZGVzYwotIAotIC8qKgotICAqIGJ1c19pbnB1dF9jb250ZXh0X3Nl dF9lbmdpbmVfYnlfZGVzY19maW5pc2g6Ci0rICogQGNvbnRleHQ6IEEgI0J1c0lucHV0Q29udGV4 dC4KLSsgKiBAcmVzOiBBICNHQXN5bmNSZXN1bHQuCi0rICogQGVycm9yOiBBICNHRXJyb3IuCi0g ICoKLSAgKiBBIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBieSB0aGUgR0FzeW5jUmVhZHlDYWxsYmFj ayBmdW5jdGlvbiBmb3IKLSAgKiBidXNfaW5wdXRfY29udGV4dF9zZXRfZW5naW5lX2J5X2Rlc2Mu Ci1AQCAtMTkyLDYgKzIxNyw3IEBAIGdib29sZWFuICAgICAgICAgICAgIGJ1c19pbnB1dF9jb250 ZXh0X3NldF9lbmdpbmVfYnlfZGVzY19maW5pc2gKLSAKLSAvKioKLSAgKiBidXNfaW5wdXRfY29u dGV4dF9nZXRfZW5naW5lOgotKyAqIEBjb250ZXh0OiBBICNCdXNJbnB1dENvbnRleHQuCi0gICoK LSAgKiBHZXQgYSBCdXNFbmdpbmVQcm94eSBvYmplY3Qgb2YgdGhlIGN1cnJlbnQgZW5naW5lLgot ICAqLwotQEAgLTIwMCw2ICsyMjYsNyBAQCBCdXNFbmdpbmVQcm94eSAgICAgICpidXNfaW5wdXRf Y29udGV4dF9nZXRfZW5naW5lCi0gCi0gLyoqCi0gICogYnVzX2lucHV0X2NvbnRleHRfZ2V0X2Vu Z2luZV9kZXNjOgotKyAqIEBjb250ZXh0OiBBICNCdXNJbnB1dENvbnRleHQuCi0gICoKLSAgKiBH ZXQgYW4gSUJ1c0VuZ2luZURlc2Mgb2JqZWN0IG9mIHRoZSBjdXJyZW50IGVuZ2luZS4KLSAgKi8K LUBAIC0yMDgsNiArMjM1LDkgQEAgSUJ1c0VuZ2luZURlc2MgICAgICAqYnVzX2lucHV0X2NvbnRl eHRfZ2V0X2VuZ2luZV9kZXNjCi0gCi0gLyoqCi0gICogYnVzX2lucHV0X2NvbnRleHRfcHJvcGVy dHlfYWN0aXZhdGU6Ci0rICogQGNvbnRleHQ6IEEgI0J1c0lucHV0Q29udGV4dC4KLSsgKiBAcHJv cF9uYW1lOiBBIHByb3BlcnR5IG5hbWUuCi0rICogQHByb3Bfc3RhdGU6IEEgcHJvcGVydHkgc3Rh dGUuCi0gICoKLSAgKiBDYWxsIHByb3BlcnR5X2FjdGl2YXRlIG1ldGhvZCBvZiB0aGUgY3VycmVu dCBlbmdpbmUgcHJveHkuCi0gICovCi1AQCAtMjE5LDYgKzI0OSw3IEBAIHZvaWQgICAgICAgICAg ICAgICAgIGJ1c19pbnB1dF9jb250ZXh0X3Byb3BlcnR5X2FjdGl2YXRlCi0gCi0gLyoqCi0gICog YnVzX2lucHV0X2NvbnRleHRfZ2V0X2NhcGFiaWxpdGllczoKLSsgKiBAY29udGV4dDogQSAjQnVz SW5wdXRDb250ZXh0LgotICAqIEByZXR1cm5zOiBjb250ZXh0LT5jYXBhYmlsaXRpZXMuCi0gICov Ci0gZ3VpbnQgICAgICAgICAgICAgICAgYnVzX2lucHV0X2NvbnRleHRfZ2V0X2NhcGFiaWxpdGll cwotQEAgLTIyNiw2ICsyNTcsOCBAQCBndWludCAgICAgICAgICAgICAgICBidXNfaW5wdXRfY29u dGV4dF9nZXRfY2FwYWJpbGl0aWVzCi0gCi0gLyoqCi0gICogYnVzX2lucHV0X2NvbnRleHRfc2V0 X2NhcGFiaWxpdGllczoKLSsgKiBAY29udGV4dDogQSAjQnVzSW5wdXRDb250ZXh0LgotKyAqIEBj YXBhYmlsaXRpZXM6IGNhcGFiaWxpdGllcy4KLSAgKgotICAqIENhbGwgc2V0X2NhcGFiaWxpdGll cyBtZXRob2Qgb2YgdGhlIGN1cnJlbnQgZW5naW5lIHByb3h5LgotICAqLwotQEAgLTIzNiw2ICsy NjksNyBAQCB2b2lkICAgICAgICAgICAgICAgICBidXNfaW5wdXRfY29udGV4dF9zZXRfY2FwYWJp bGl0aWVzCi0gCi0gLyoqCi0gICogYnVzX2lucHV0X2NvbnRleHRfZ2V0X2NsaWVudDoKLSsgKiBA Y29udGV4dDogQSAjQnVzSW5wdXRDb250ZXh0LgotICAqIEByZXR1cm5zOiBjb250ZXh0LT5jbGll bnQuCi0gICovCi0gY29uc3QgZ2NoYXIgICAgICAgICAqYnVzX2lucHV0X2NvbnRleHRfZ2V0X2Ns aWVudAotQEAgLTI0Myw2ICsyNzcsNyBAQCBjb25zdCBnY2hhciAgICAgICAgICpidXNfaW5wdXRf Y29udGV4dF9nZXRfY2xpZW50Ci0gCi0gLyoqCi0gICogYnVzX2lucHV0X2NvbnRleHRfZ2V0X2Nv bnRlbnRfdHlwZToKLSsgKiBAY29udGV4dDogQSAjQnVzSW5wdXRDb250ZXh0LgotICAqIEBwdXJw b3NlOiBJbnB1dCBwdXJwb3NlLgotICAqIEBoaW50czogSW5wdXQgaGludHMuCi0gICovCi1AQCAt MjUzLDYgKzI4OCw3IEBAIHZvaWQgICAgICAgICAgICAgICAgIGJ1c19pbnB1dF9jb250ZXh0X2dl dF9jb250ZW50X3R5cGUKLSAKLSAvKioKLSAgKiBidXNfaW5wdXRfY29udGV4dF9zZXRfY29udGVu dF90eXBlOgotKyAqIEBjb250ZXh0OiBBICNCdXNJbnB1dENvbnRleHQuCi0gICogQHB1cnBvc2U6 IElucHV0IHB1cnBvc2UuCi0gICogQGhpbnRzOiBJbnB1dCBoaW50cy4KLSAgKi8KLUBAIC0yNjMs MTEgKzI5OSw4MyBAQCB2b2lkICAgICAgICAgICAgICAgICBidXNfaW5wdXRfY29udGV4dF9zZXRf Y29udGVudF90eXBlCi0gCi0gLyoqCi0gICogYnVzX2lucHV0X2NvbnRleHRfY29tbWl0X3RleHQ6 Ci0tICogQHRleHQ6IGEgY29tbWl0ZWQgdGV4dC4KLSsgKiBAY29udGV4dDogQSAjQnVzSW5wdXRD b250ZXh0LgotKyAqIEB0ZXh0OiBBIGNvbW1pdHRlZCB0ZXh0LgotICAqLwotIHZvaWQgICAgICAg ICAgICAgICAgIGJ1c19pbnB1dF9jb250ZXh0X2NvbW1pdF90ZXh0Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJ1c0lucHV0Q29udGV4dCAqY29udGV4 dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1 c1RleHQgICAgICAgICp0ZXh0KTsKLSAKLSsvKioKLSsgKiBidXNfaW5wdXRfY29udGV4dF9jb21t aXRfdGV4dDoKLSsgKiBAY29udGV4dDogQSAjQnVzSW5wdXRDb250ZXh0LgotKyAqIEB0ZXh0OiBB IGNvbW1pdHRlZCB0ZXh0LgotKyAqIEB1c2VfZXh0ZW5zaW9uOiBVc2UgYW4gZXh0ZW5zaW9uIGlm IGl0J3MgJVRSVUUgYW5kIHRoZSBleHRlbnNpb24gaXMKLSsgKiAgICAgICAgICAgICAgICAgYXZh aWxhYmxlLgotKyAqLwotK3ZvaWQgICAgICAgICAgICAgICAgIGJ1c19pbnB1dF9jb250ZXh0X2Nv bW1pdF90ZXh0X3VzZV9leHRlbnNpb24KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChCdXNJbnB1dENvbnRleHQgKmNvbnRleHQsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c1RleHQgICAgICAgICp0ZXh0 LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29s ZWFuICAgICAgICAgdXNlX2V4dGVuc2lvbik7Ci0rCi0rLyoqCi0rICogYnVzX2lucHV0X2NvbnRl eHRfc2V0X2Vtb2ppX2V4dGVuc2lvbjoKLSsgKiBAY29udGV4dDogQSAjQnVzSW5wdXRDb250ZXh0 LgotKyAqIEBleHRlbnNpb246IEEgI0J1c1BhbmVsUHJveHkuCi0rICovCi0rdm9pZCAgICAgICAg ICAgICAgICAgYnVzX2lucHV0X2NvbnRleHRfc2V0X2Vtb2ppX2V4dGVuc2lvbgotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCdXNJbnB1dENvbnRleHQg KmNvbnRleHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEJ1c1BhbmVsUHJveHkgICAqZXh0ZW5zaW9uKTsKLSsKLSsvKioKLSsgKiBidXNfaW5wdXRf Y29udGV4dF91cGRhdGVfcHJlZWRpdF90ZXh0OgotKyAqIEBjb250ZXh0OiBBICNCdXNJbnB1dENv bnRleHQuCi0rICogQHRleHQ6IEFuICNJQnVzVGV4dC4KLSsgKiBAY3Vyc29yX3BvczogVGhlIGN1 cnNvciBwb3NpdGlvbi4KLSsgKiBAdmlzaWJsZTogJVRSVUUgaWYgdGhlIHByZWVkaXQgaXMgdmlz aWJsZS4gT3RoZXJ3aXNlICVGQUxTRS4KLSsgKiBAbW9kZTogVGhlIHByZWVkaXQgY29tbWl0IG1v ZGUuCi0rICogQHVzZV9leHRlbnNpb246ICVUUlVFIGlmIHByZWVkaXQgdGV4dCBpcyBzZW50IHRv IHRoZSBleHRlc2lvbiBhdCBmaXJzdC4KLSsgKgotKyAqIFVwZGF0ZSBhIHByZWVkaXQgdGV4dC4g U2VuZCBELUJ1cyBzaWduYWwgdG8gdXBkYXRlIHN0YXR1cyBvZiBjbGllbnQgb3IKLSsgKiBzZW5k IGdsaWIgc2lnbmFsIHRvIHRoZSBwYW5lbCwgZGVwZW5kaW5nIG9uIGNhcGFiaWxpdGllcyBvZiB0 aGUgY2xpZW50LgotKyAqLwotK3ZvaWQgICAgICAgICAgICAgICAgIGJ1c19pbnB1dF9jb250ZXh0 X3VwZGF0ZV9wcmVlZGl0X3RleHQKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoQnVzSW5wdXRDb250ZXh0ICAgICpjb250ZXh0LAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzVGV4dCAgICAgICAgICAg KnRleHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGd1aW50ICAgICAgICAgICAgICAgY3Vyc29yX3BvcywKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgICAgICB2aXNpYmxlLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAg ICAgICAgICAgICAgIG1vZGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGdib29sZWFuCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VfZXh0ZW5zaW9uKTsKLSsKLSsvKioK LSsgKiBidXNfaW5wdXRfY29udGV4dF91cGRhdGVfbG9va3VwX3RhYmxlOgotKyAqIEBjb250ZXh0 OiBBICNCdXNJbnB1dENvbnRleHQuCi0rICogQHRhYmxlOiBBbiAjSUJ1c1RhYmxlLgotKyAqIEB2 aXNpYmxlOiAlVFJVRSBpZiB0aGUgbG9va3VwIHRhYmxlIGlzIHZpc2libGUuIE90aGVyd2lzZSAl RkFMU0UuCi0rICogQGlzX2V4dGVuc2lvbjogJVRSVUUgaWYgdGhlIGxvb2t1cCB0YWJsZSBpcyBj cmVhdGVkIGJ5IHBhbmVsIGV4dGVuc2lvbnMuCi0rICoKLSsgKiBVcGRhdGUgY29udGVudHMgaW4g dGhlIGxvb2t1cCB0YWJsZS4KLSsgKiBTZW5kIEQtQnVzIHNpZ25hbCB0byB1cGRhdGUgc3RhdHVz IG9mIGNsaWVudCBvciBzZW5kIGdsaWIgc2lnbmFsIHRvIHRoZQotKyAqIHBhbmVsLCBkZXBlbmRp bmcgb24gY2FwYWJpbGl0aWVzIG9mIHRoZSBjbGllbnQuCi0rICovCi0rdm9pZCAgICAgICAgICAg ICAgICAgYnVzX2lucHV0X2NvbnRleHRfdXBkYXRlX2xvb2t1cF90YWJsZQotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCdXNJbnB1dENvbnRleHQgICAg KmNvbnRleHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIElCdXNMb29rdXBUYWJsZSAgICAqdGFibGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICAgICAgdmlzaWJsZSwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4K LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpc19leHRlbnNpb24pOwotKwotKwotKy8qKgotKyAqIGJ1c19pbnB1dF9jb250 ZXh0X3BhbmVsX2V4dGVuc2lvbl9yZWNlaXZlZDoKLSsgKiBAY29udGV4dDogQSAjQnVzSW5wdXRD b250ZXh0LgotKyAqIEBldmVudDogQW4gI0lCdXNFeHRlbnNpb25FdmVudC4KLSsgKgotKyAqIFNl bmQgQW4gI0lCdXNFeHRlbnNpb25FdmVudCBjYWxsYmFjayBmcm9tIGFuIGV4dGVuc2lvbi4KLSsg Ki8KLSt2b2lkICAgICAgICAgICAgICAgICBidXNfaW5wdXRfY29udGV4dF9wYW5lbF9leHRlbnNp b25fcmVjZWl2ZWQKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoQnVzSW5wdXRDb250ZXh0ICAgICpjb250ZXh0LAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzRXh0ZW5zaW9uRXZlbnQgKmV2ZW50KTsK LSBHX0VORF9ERUNMUwotICNlbmRpZgotZGlmZiAtLWdpdCBhL2J1cy9wYW5lbHByb3h5LmMgYi9i dXMvcGFuZWxwcm94eS5jCi1pbmRleCBjMzkwOGZjZi4uMWMwZmNjYTIgMTAwNjQ0Ci0tLS0gYS9i dXMvcGFuZWxwcm94eS5jCi0rKysgYi9idXMvcGFuZWxwcm94eS5jCi1AQCAtNTIsNiArNTIsMTAg QEAgZW51bSB7Ci0gICAgIFBST1BFUlRZX0hJREUsCi0gICAgIENPTU1JVF9URVhULAotICAgICBQ QU5FTF9FWFRFTlNJT04sCi0rICAgIFBBTkVMX0VYVEVOU0lPTl9SRUdJU1RFUl9LRVlTLAotKyAg ICBVUERBVEVfUFJFRURJVF9URVhUX1JFQ0VJVkVELAotKyAgICBVUERBVEVfTE9PS1VQX1RBQkxF X1JFQ0VJVkVELAotKyAgICBVUERBVEVfQVVYSUxJQVJZX1RFWFRfUkVDRUlWRUQsCi0gICAgIExB U1RfU0lHTkFMLAotIH07Ci0gCi1AQCAtMTI1LDggKzEyOSw4IEBAIGJ1c19wYW5lbF9wcm94eV9u ZXcgKEJ1c0Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sCi0gICAgIGNhc2UgUEFORUxfVFlQRV9QQU5F TDoKLSAgICAgICAgIHBhdGggPSBJQlVTX1BBVEhfUEFORUw7Ci0gICAgICAgICBicmVhazsKLS0g ICAgY2FzZSBQQU5FTF9UWVBFX0VYVEVOU0lPTjoKLS0gICAgICAgIHBhdGggPSBJQlVTX1BBVEhf UEFORUxfRVhURU5TSU9OOwotKyAgICBjYXNlIFBBTkVMX1RZUEVfRVhURU5TSU9OX0VNT0pJOgot KyAgICAgICAgcGF0aCA9IElCVVNfUEFUSF9QQU5FTF9FWFRFTlNJT05fRU1PSkk7Ci0gICAgICAg ICBicmVhazsKLSAgICAgZGVmYXVsdDoKLSAgICAgICAgIGdfcmV0dXJuX3ZhbF9pZl9yZWFjaGVk IChOVUxMKTsKLUBAIC0yNTMsNiArMjU3LDE2IEBAIGJ1c19wYW5lbF9wcm94eV9jbGFzc19pbml0 IChCdXNQYW5lbFByb3h5Q2xhc3MgKmNsYXNzKQotIAotICAgICBwYW5lbF9zaWduYWxzW1BBTkVM X0VYVEVOU0lPTl0gPQotICAgICAgICAgZ19zaWduYWxfbmV3IChJXygicGFuZWwtZXh0ZW5zaW9u IiksCi0rICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1MgKGNsYXNzKSwKLSsgICAgICAgICAg ICBHX1NJR05BTF9SVU5fTEFTVCwKLSsgICAgICAgICAgICAwLAotKyAgICAgICAgICAgIE5VTEws IE5VTEwsCi0rICAgICAgICAgICAgYnVzX21hcnNoYWxfVk9JRF9fT0JKRUNULAotKyAgICAgICAg ICAgIEdfVFlQRV9OT05FLCAxLAotKyAgICAgICAgICAgIElCVVNfVFlQRV9FWFRFTlNJT05fRVZF TlQpOwotKwotKyAgICBwYW5lbF9zaWduYWxzW1BBTkVMX0VYVEVOU0lPTl9SRUdJU1RFUl9LRVlT XSA9Ci0rICAgICAgICBnX3NpZ25hbF9uZXcgKElfKCJwYW5lbC1leHRlbnNpb24tcmVnaXN0ZXIt a2V5cyIpLAotICAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTIChjbGFzcyksCi0gICAgICAg ICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCi0gICAgICAgICAgICAgMCwKLUBAIC0yNjAsNiArMjc0 LDQwIEBAIGJ1c19wYW5lbF9wcm94eV9jbGFzc19pbml0IChCdXNQYW5lbFByb3h5Q2xhc3MgKmNs YXNzKQotICAgICAgICAgICAgIGJ1c19tYXJzaGFsX1ZPSURfX1ZBUklBTlQsCi0gICAgICAgICAg ICAgR19UWVBFX05PTkUsIDEsCi0gICAgICAgICAgICAgR19UWVBFX1ZBUklBTlQpOwotKwotKyAg ICBwYW5lbF9zaWduYWxzW1VQREFURV9QUkVFRElUX1RFWFRfUkVDRUlWRURdID0KLSsgICAgICAg IGdfc2lnbmFsX25ldyAoSV8oInVwZGF0ZS1wcmVlZGl0LXRleHQtcmVjZWl2ZWQiKSwKLSsgICAg ICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyAoY2xhc3MpLAotKyAgICAgICAgICAgIEdfU0lHTkFM X1JVTl9MQVNULAotKyAgICAgICAgICAgIDAsCi0rICAgICAgICAgICAgTlVMTCwgTlVMTCwKLSsg ICAgICAgICAgICBidXNfbWFyc2hhbF9WT0lEX19PQkpFQ1RfVUlOVF9CT09MRUFOLAotKyAgICAg ICAgICAgIEdfVFlQRV9OT05FLCAzLAotKyAgICAgICAgICAgIElCVVNfVFlQRV9URVhULAotKyAg ICAgICAgICAgIEdfVFlQRV9VSU5ULAotKyAgICAgICAgICAgIEdfVFlQRV9CT09MRUFOKTsKLSsK LSsgICAgcGFuZWxfc2lnbmFsc1tVUERBVEVfTE9PS1VQX1RBQkxFX1JFQ0VJVkVEXSA9Ci0rICAg ICAgICBnX3NpZ25hbF9uZXcgKElfKCJ1cGRhdGUtbG9va3VwLXRhYmxlLXJlY2VpdmVkIiksCi0r ICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1MgKGNsYXNzKSwKLSsgICAgICAgICAgICBHX1NJ R05BTF9SVU5fTEFTVCwKLSsgICAgICAgICAgICAwLAotKyAgICAgICAgICAgIE5VTEwsIE5VTEws Ci0rICAgICAgICAgICAgYnVzX21hcnNoYWxfVk9JRF9fT0JKRUNUX0JPT0xFQU4sCi0rICAgICAg ICAgICAgR19UWVBFX05PTkUsIDIsCi0rICAgICAgICAgICAgSUJVU19UWVBFX0xPT0tVUF9UQUJM RSwKLSsgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTik7Ci0rCi0rICAgIHBhbmVsX3NpZ25hbHNb VVBEQVRFX0FVWElMSUFSWV9URVhUX1JFQ0VJVkVEXSA9Ci0rICAgICAgICBnX3NpZ25hbF9uZXcg KElfKCJ1cGRhdGUtYXV4aWxpYXJ5LXRleHQtcmVjZWl2ZWQiKSwKLSsgICAgICAgICAgICBHX1RZ UEVfRlJPTV9DTEFTUyAoY2xhc3MpLAotKyAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAot KyAgICAgICAgICAgIDAsCi0rICAgICAgICAgICAgTlVMTCwgTlVMTCwKLSsgICAgICAgICAgICBi dXNfbWFyc2hhbF9WT0lEX19PQkpFQ1RfQk9PTEVBTiwKLSsgICAgICAgICAgICBHX1RZUEVfTk9O RSwgMiwKLSsgICAgICAgICAgICBJQlVTX1RZUEVfVEVYVCwKLSsgICAgICAgICAgICBHX1RZUEVf Qk9PTEVBTik7Ci0gfQotIAotIHN0YXRpYyB2b2lkCi1AQCAtMzU1LDIzICs0MDMsODMgQEAgYnVz X3BhbmVsX3Byb3h5X2dfc2lnbmFsIChHREJ1c1Byb3h5ICAqcHJveHksCi0gCi0gICAgIGlmIChn X3N0cmNtcDAgKCJDb21taXRUZXh0Iiwgc2lnbmFsX25hbWUpID09IDApIHsKLSAgICAgICAgIEdW YXJpYW50ICphcmcwID0gTlVMTDsKLS0gICAgICAgIGdfdmFyaWFudF9nZXQgKHBhcmFtZXRlcnMs ICIodikiLCAmYXJnMCk7Ci0tICAgICAgICBnX3JldHVybl9pZl9mYWlsIChhcmcwICE9IE5VTEwp OwotIAotKyAgICAgICAgZ192YXJpYW50X2dldCAocGFyYW1ldGVycywgIih2KSIsICZhcmcwKTsK LSsgICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwgKGFyZzApOwotICAgICAgICAgSUJ1c1RleHQgKnRl eHQgPSBJQlVTX1RFWFQgKGlidXNfc2VyaWFsaXphYmxlX2Rlc2VyaWFsaXplIChhcmcwKSk7Ci0g ICAgICAgICBnX3ZhcmlhbnRfdW5yZWYgKGFyZzApOwotLSAgICAgICAgZ19yZXR1cm5faWZfZmFp bCAodGV4dCAhPSBOVUxMKTsKLSsgICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwgKHRleHQpOwotICAg ICAgICAgZ19zaWduYWxfZW1pdCAocGFuZWwsIHBhbmVsX3NpZ25hbHNbQ09NTUlUX1RFWFRdLCAw LCB0ZXh0KTsKLSAgICAgICAgIF9nX29iamVjdF91bnJlZl9pZl9mbG9hdGluZyAodGV4dCk7Ci0g ICAgICAgICByZXR1cm47Ci0gICAgIH0KLSAKLSAgICAgaWYgKGdfc3RyY21wMCAoIlBhbmVsRXh0 ZW5zaW9uIiwgc2lnbmFsX25hbWUpID09IDApIHsKLS0gICAgICAgIGlmIChwYW5lbC0+cGFuZWxf dHlwZSAhPSBQQU5FTF9UWVBFX1BBTkVMKSB7Ci0tICAgICAgICAgICAgZ193YXJuaW5nICgiV3Jv bmcgc2lnbmFsIik7Ci0tICAgICAgICAgICAgcmV0dXJuOwotLSAgICAgICAgfQotLSAgICAgICAg Z19zaWduYWxfZW1pdCAocGFuZWwsIHBhbmVsX3NpZ25hbHNbUEFORUxfRVhURU5TSU9OXSwgMCwg cGFyYW1ldGVycyk7Ci0rICAgICAgICBHVmFyaWFudCAqYXJnMCA9IE5VTEw7Ci0rCi0rICAgICAg ICBnX3ZhcmlhbnRfZ2V0IChwYXJhbWV0ZXJzLCAiKHYpIiwgJmFyZzApOwotKyAgICAgICAgZ19y ZXR1cm5faWZfZmFpbCAoYXJnMCk7Ci0rICAgICAgICBJQnVzRXh0ZW5zaW9uRXZlbnQgKmV2ZW50 ID0gSUJVU19FWFRFTlNJT05fRVZFTlQgKAotKyAgICAgICAgICAgICAgICBpYnVzX3NlcmlhbGl6 YWJsZV9kZXNlcmlhbGl6ZSAoYXJnMCkpOwotKyAgICAgICAgZ192YXJpYW50X3VucmVmIChhcmcw KTsKLSsgICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwgKGV2ZW50KTsKLSsgICAgICAgIGdfc2lnbmFs X2VtaXQgKHBhbmVsLCBwYW5lbF9zaWduYWxzW1BBTkVMX0VYVEVOU0lPTl0sIDAsIGV2ZW50KTsK LSsgICAgICAgIF9nX29iamVjdF91bnJlZl9pZl9mbG9hdGluZyAoZXZlbnQpOwotKyAgICAgICAg cmV0dXJuOwotKyAgICB9Ci0rCi0rICAgIGlmIChnX3N0cmNtcDAgKCJQYW5lbEV4dGVuc2lvblJl Z2lzdGVyS2V5cyIsIHNpZ25hbF9uYW1lKSA9PSAwKSB7Ci0rICAgICAgICBnX3NpZ25hbF9lbWl0 IChwYW5lbCwgcGFuZWxfc2lnbmFsc1tQQU5FTF9FWFRFTlNJT05fUkVHSVNURVJfS0VZU10sIDAs Ci0rICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzKTsKLSsgICAgICAgIHJldHVybjsK LSsgICAgfQotKwotKyAgICBpZiAoZ19zdHJjbXAwICgiVXBkYXRlUHJlZWRpdFRleHRSZWNlaXZl ZCIsIHNpZ25hbF9uYW1lKSA9PSAwKSB7Ci0rICAgICAgICBHVmFyaWFudCAqdmFyaWFudCA9IE5V TEw7Ci0rICAgICAgICBndWludCBjdXJzb3JfcG9zID0gMDsKLSsgICAgICAgIGdib29sZWFuIHZp c2libGUgPSBGQUxTRTsKLSsgICAgICAgIElCdXNUZXh0ICp0ZXh0ID0gTlVMTDsKLSsKLSsgICAg ICAgIGdfdmFyaWFudF9nZXQgKHBhcmFtZXRlcnMsICIodnViKSIsICZ2YXJpYW50LCAmY3Vyc29y X3BvcywgJnZpc2libGUpOwotKyAgICAgICAgZ19yZXR1cm5faWZfZmFpbCAodmFyaWFudCk7Ci0r ICAgICAgICB0ZXh0ID0gKElCdXNUZXh0ICopIGlidXNfc2VyaWFsaXphYmxlX2Rlc2VyaWFsaXpl ICh2YXJpYW50KTsKLSsgICAgICAgIGdfdmFyaWFudF91bnJlZiAodmFyaWFudCk7Ci0rICAgICAg ICBnX3JldHVybl9pZl9mYWlsICh0ZXh0KTsKLSsgICAgICAgIGdfc2lnbmFsX2VtaXQgKHBhbmVs LCBwYW5lbF9zaWduYWxzW1VQREFURV9QUkVFRElUX1RFWFRfUkVDRUlWRURdLCAwLAotKyAgICAg ICAgICAgICAgICAgICAgICAgdGV4dCwgY3Vyc29yX3BvcywgdmlzaWJsZSk7Ci0rICAgICAgICBf Z19vYmplY3RfdW5yZWZfaWZfZmxvYXRpbmcgKHRleHQpOwotKyAgICAgICAgcmV0dXJuOwotKyAg ICB9Ci0rCi0rICAgIGlmIChnX3N0cmNtcDAgKCJVcGRhdGVMb29rdXBUYWJsZVJlY2VpdmVkIiwg c2lnbmFsX25hbWUpID09IDApIHsKLSsgICAgICAgIEdWYXJpYW50ICp2YXJpYW50ID0gTlVMTDsK LSsgICAgICAgIGdib29sZWFuIHZpc2libGUgPSBGQUxTRTsKLSsgICAgICAgIElCdXNMb29rdXBU YWJsZSAqdGFibGUgPSBOVUxMOwotKwotKyAgICAgICAgZ192YXJpYW50X2dldCAocGFyYW1ldGVy cywgIih2YikiLCAmdmFyaWFudCwgJnZpc2libGUpOwotKyAgICAgICAgZ19yZXR1cm5faWZfZmFp bCAodmFyaWFudCk7Ci0rICAgICAgICB0YWJsZSA9IChJQnVzTG9va3VwVGFibGUgKikgaWJ1c19z ZXJpYWxpemFibGVfZGVzZXJpYWxpemUgKHZhcmlhbnQpOwotKyAgICAgICAgZ192YXJpYW50X3Vu cmVmICh2YXJpYW50KTsKLSsgICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwgKHRhYmxlKTsKLSsgICAg ICAgIGdfc2lnbmFsX2VtaXQgKHBhbmVsLCBwYW5lbF9zaWduYWxzW1VQREFURV9MT09LVVBfVEFC TEVfUkVDRUlWRURdLCAwLAotKyAgICAgICAgICAgICAgICAgICAgICAgdGFibGUsIHZpc2libGUp OwotKyAgICAgICAgX2dfb2JqZWN0X3VucmVmX2lmX2Zsb2F0aW5nICh0YWJsZSk7Ci0rICAgICAg ICByZXR1cm47Ci0rICAgIH0KLSsKLSsgICAgaWYgKGdfc3RyY21wMCAoIlVwZGF0ZUF1eGlsaWFy eVRleHRSZWNlaXZlZCIsIHNpZ25hbF9uYW1lKSA9PSAwKSB7Ci0rICAgICAgICBHVmFyaWFudCAq dmFyaWFudCA9IE5VTEw7Ci0rICAgICAgICBnYm9vbGVhbiB2aXNpYmxlID0gRkFMU0U7Ci0rICAg ICAgICBJQnVzVGV4dCAqdGV4dCA9IE5VTEw7Ci0rCi0rICAgICAgICBnX3ZhcmlhbnRfZ2V0IChw YXJhbWV0ZXJzLCAiKHZiKSIsICZ2YXJpYW50LCAmdmlzaWJsZSk7Ci0rICAgICAgICBnX3JldHVy bl9pZl9mYWlsICh2YXJpYW50KTsKLSsgICAgICAgIHRleHQgPSAoSUJ1c1RleHQgKikgaWJ1c19z ZXJpYWxpemFibGVfZGVzZXJpYWxpemUgKHZhcmlhbnQpOwotKyAgICAgICAgZ192YXJpYW50X3Vu cmVmICh2YXJpYW50KTsKLSsgICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwgKHRleHQpOwotKyAgICAg ICAgZ19zaWduYWxfZW1pdCAocGFuZWwsIHBhbmVsX3NpZ25hbHNbVVBEQVRFX0FVWElMSUFSWV9U RVhUX1JFQ0VJVkVEXSwgMCwKLSsgICAgICAgICAgICAgICAgICAgICAgIHRleHQsIHZpc2libGUp OwotKyAgICAgICAgX2dfb2JqZWN0X3VucmVmX2lmX2Zsb2F0aW5nICh0ZXh0KTsKLSAgICAgICAg IHJldHVybjsKLSAgICAgfQotIAotQEAgLTU1MiwxMiArNjYwLDE3IEBAIHN0YXRpYyB2b2lkCi0g YnVzX3BhbmVsX3Byb3h5X2NvbW1pdF90ZXh0IChCdXNQYW5lbFByb3h5ICpwYW5lbCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIElCdXNUZXh0ICAgICAgKnRleHQpCi0gewotKyAgICBn Ym9vbGVhbiB1c2VfZXh0ZW5zaW9uID0gVFJVRTsKLSAgICAgZ19hc3NlcnQgKEJVU19JU19QQU5F TF9QUk9YWSAocGFuZWwpKTsKLSAgICAgZ19hc3NlcnQgKHRleHQgIT0gTlVMTCk7Ci0gCi0tICAg IGlmIChwYW5lbC0+Zm9jdXNlZF9jb250ZXh0KSB7Ci0tICAgICAgICBidXNfaW5wdXRfY29udGV4 dF9jb21taXRfdGV4dCAocGFuZWwtPmZvY3VzZWRfY29udGV4dCwgdGV4dCk7Ci0tICAgIH0KLSsg ICAgaWYgKCFwYW5lbC0+Zm9jdXNlZF9jb250ZXh0KQotKyAgICAgICAgcmV0dXJuOwotKyAgICBp ZiAocGFuZWwtPnBhbmVsX3R5cGUgIT0gUEFORUxfVFlQRV9QQU5FTCkKLSsgICAgICAgIHVzZV9l eHRlbnNpb24gPSBGQUxTRTsKLSsgICAgYnVzX2lucHV0X2NvbnRleHRfY29tbWl0X3RleHRfdXNl X2V4dGVuc2lvbiAocGFuZWwtPmZvY3VzZWRfY29udGV4dCwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX2V4dGVuc2lvbik7Ci0gfQotIAotICNk ZWZpbmUgREVGSU5FX0ZVTkNUSU9OKE5hbWUsIG5hbWUpICAgICAgICAgICAgICAgICAgICAgXAot QEAgLTg3NywzICs5OTAsNzQgQEAgYnVzX3BhbmVsX3Byb3h5X2dldF9wYW5lbF90eXBlIChCdXNQ YW5lbFByb3h5ICAgICpwYW5lbCkKLSAgICAgZ19hc3NlcnQgKEJVU19JU19QQU5FTF9QUk9YWSAo cGFuZWwpKTsKLSAgICAgcmV0dXJuIHBhbmVsLT5wYW5lbF90eXBlOwotIH0KLSsKLSt2b2lkCi0r YnVzX3BhbmVsX3Byb3h5X3BhbmVsX2V4dGVuc2lvbl9yZWNlaXZlZCAoQnVzUGFuZWxQcm94eSAg ICAgICpwYW5lbCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ QnVzRXh0ZW5zaW9uRXZlbnQgKmV2ZW50KQotK3sKLSsgICAgR1ZhcmlhbnQgKmRhdGE7Ci0rCi0r ICAgIGdfYXNzZXJ0IChCVVNfSVNfUEFORUxfUFJPWFkgKHBhbmVsKSk7Ci0rICAgIGdfYXNzZXJ0 IChldmVudCk7Ci0rCi0rICAgIGRhdGEgPSBpYnVzX3NlcmlhbGl6YWJsZV9zZXJpYWxpemUgKElC VVNfU0VSSUFMSVpBQkxFIChldmVudCkpOwotKyAgICBnX3JldHVybl9pZl9mYWlsIChkYXRhKTsK LSsgICAgZ19kYnVzX3Byb3h5X2NhbGwgKChHREJ1c1Byb3h5ICopcGFuZWwsCi0rICAgICAgICAg ICAgICAgICAgICAgICAiUGFuZWxFeHRlbnNpb25SZWNlaXZlZCIsCi0rICAgICAgICAgICAgICAg ICAgICAgICBnX3ZhcmlhbnRfbmV3ICgiKHYpIiwgZGF0YSksCi0rICAgICAgICAgICAgICAgICAg ICAgICBHX0RCVVNfQ0FMTF9GTEFHU19OT05FLAotKyAgICAgICAgICAgICAgICAgICAgICAgLTEs IE5VTEwsIE5VTEwsIE5VTEwpOwotK30KLSsKLSt2b2lkCi0rYnVzX3BhbmVsX3Byb3h5X3Byb2Nl c3Nfa2V5X2V2ZW50IChCdXNQYW5lbFByb3h5ICAgICAgICpwYW5lbCwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgIGtleXZhbCwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgIGtleWNv ZGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAg ICAgICBzdGF0ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1Jl YWR5Q2FsbGJhY2sgIGNhbGxiYWNrLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ3BvaW50ZXIgICAgICAgICAgICAgdXNlcl9kYXRhKQotK3sKLSsgICAgZ19hc3NlcnQgKEJV U19JU19QQU5FTF9QUk9YWSAocGFuZWwpKTsKLSsKLSsgICAgZ19kYnVzX3Byb3h5X2NhbGwgKChH REJ1c1Byb3h5ICopcGFuZWwsCi0rICAgICAgICAgICAgICAgICAgICAgICAiUHJvY2Vzc0tleUV2 ZW50IiwKLSsgICAgICAgICAgICAgICAgICAgICAgIGdfdmFyaWFudF9uZXcgKCIodXV1KSIsIGtl eXZhbCwga2V5Y29kZSwgc3RhdGUpLAotKyAgICAgICAgICAgICAgICAgICAgICAgR19EQlVTX0NB TExfRkxBR1NfTk9ORSwKLSsgICAgICAgICAgICAgICAgICAgICAgIC0xLAotKyAgICAgICAgICAg ICAgICAgICAgICAgTlVMTCwKLSsgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLAotKyAg ICAgICAgICAgICAgICAgICAgICAgdXNlcl9kYXRhKTsKLSt9Ci0rCi0rdm9pZAotK2J1c19wYW5l bF9wcm94eV9jb21taXRfdGV4dF9yZWNlaXZlZCAoQnVzUGFuZWxQcm94eSAqcGFuZWwsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzVGV4dCAgICAgICp0ZXh0KQot K3sKLSsgICAgR1ZhcmlhbnQgKnZhcmlhbnQ7Ci0rCi0rICAgIGdfYXNzZXJ0IChCVVNfSVNfUEFO RUxfUFJPWFkgKHBhbmVsKSk7Ci0rICAgIGdfYXNzZXJ0IChJQlVTX0lTX1RFWFQgKHRleHQpKTsK LSsKLSsgICAgdmFyaWFudCA9IGlidXNfc2VyaWFsaXphYmxlX3NlcmlhbGl6ZSAoSUJVU19TRVJJ QUxJWkFCTEUgKHRleHQpKTsKLSsgICAgZ19kYnVzX3Byb3h5X2NhbGwgKChHREJ1c1Byb3h5ICop cGFuZWwsCi0rICAgICAgICAgICAgICAgICAgICAgICAiQ29tbWl0VGV4dFJlY2VpdmVkIiwKLSsg ICAgICAgICAgICAgICAgICAgICAgIGdfdmFyaWFudF9uZXcgKCIodikiLCB2YXJpYW50KSwKLSsg ICAgICAgICAgICAgICAgICAgICAgIEdfREJVU19DQUxMX0ZMQUdTX05PTkUsCi0rICAgICAgICAg ICAgICAgICAgICAgICAtMSwgTlVMTCwgTlVMTCwgTlVMTCk7Ci0rfQotKwotK3ZvaWQKLStidXNf cGFuZWxfcHJveHlfY2FuZGlkYXRlX2NsaWNrZWRfbG9va3VwX3RhYmxlIChCdXNQYW5lbFByb3h5 ICpwYW5lbCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBndWludCAgICAgICAgICBpbmRleCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICBidXR0b24sCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgc3RhdGUpCi0r ewotKyAgICBnYm9vbGVhbiB1c2VfZXh0ZW5zaW9uID0gVFJVRTsKLSsgICAgZ19hc3NlcnQgKEJV U19JU19QQU5FTF9QUk9YWSAocGFuZWwpKTsKLSsKLSsgICAgZ19kYnVzX3Byb3h5X2NhbGwgKChH REJ1c1Byb3h5ICopcGFuZWwsCi0rICAgICAgICAgICAgICAgICAgICAgICAiQ2FuZGlkYXRlQ2xp Y2tlZExvb2t1cFRhYmxlIiwKLSsgICAgICAgICAgICAgICAgICAgICAgIGdfdmFyaWFudF9uZXcg KCIodXV1KSIsIGluZGV4LCBidXR0b24sIHN0YXRlKSwKLSsgICAgICAgICAgICAgICAgICAgICAg IEdfREJVU19DQUxMX0ZMQUdTX05PTkUsCi0rICAgICAgICAgICAgICAgICAgICAgICAtMSwgTlVM TCwgTlVMTCwgTlVMTCk7Ci0rfQotZGlmZiAtLWdpdCBhL2J1cy9wYW5lbHByb3h5LmggYi9idXMv cGFuZWxwcm94eS5oCi1pbmRleCBiNWE3YWYxNy4uNGQ4YWZiOTggMTAwNjQ0Ci0tLS0gYS9idXMv cGFuZWxwcm94eS5oCi0rKysgYi9idXMvcGFuZWxwcm94eS5oCi1AQCAtNTUsNyArNTUsNyBAQCB0 eXBlZGVmIGVudW0KLSB7Ci0gICAgIFBBTkVMX1RZUEVfTk9ORSwKLSAgICAgUEFORUxfVFlQRV9Q QU5FTCwKLS0gICAgUEFORUxfVFlQRV9FWFRFTlNJT04KLSsgICAgUEFORUxfVFlQRV9FWFRFTlNJ T05fRU1PSkkKLSB9IFBhbmVsVHlwZTsKLSAKLSB0eXBlZGVmIHN0cnVjdCBfQnVzUGFuZWxQcm94 eSBCdXNQYW5lbFByb3h5OwotQEAgLTEzNSw2ICsxMzUsMjcgQEAgdm9pZCAgICAgICAgICAgICBi dXNfcGFuZWxfcHJveHlfc2V0X2NvbnRlbnRfdHlwZQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICBoaW50cyk7Ci0gUGFu ZWxUeXBlICAgICAgICBidXNfcGFuZWxfcHJveHlfZ2V0X3BhbmVsX3R5cGUKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCdXNQYW5lbFByb3h5ICAgICAq cGFuZWwpOwotK3ZvaWQgICAgICAgICAgICAgYnVzX3BhbmVsX3Byb3h5X3BhbmVsX2V4dGVuc2lv bl9yZWNlaXZlZAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKEJ1c1BhbmVsUHJveHkgICAgICpwYW5lbCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBJQnVzRXh0ZW5zaW9uRXZlbnQKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZXZl bnQpOwotK3ZvaWQgICAgICAgICAgICAgYnVzX3BhbmVsX3Byb3h5X3Byb2Nlc3Nfa2V5X2V2ZW50 Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQnVzUGFu ZWxQcm94eSAgICAgKnBhbmVsLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICBrZXl2YWwsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgIGtleWNv ZGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Vp bnQgICAgICAgICAgICAgIHN0YXRlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdBc3luY1JlYWR5Q2FsbGJhY2sKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2ss Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50 ZXIgICAgICAgICAgIHVzZXJfZGF0YSk7Ci0rdm9pZCAgICAgICAgICAgICBidXNfcGFuZWxfcHJv eHlfY29tbWl0X3RleHRfcmVjZWl2ZWQKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChCdXNQYW5lbFByb3h5ICAgICAqcGFuZWwsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c1RleHQgICAgICAgICAgKnRl eHQpOwotK3ZvaWQgICAgICAgICAgICAgYnVzX3BhbmVsX3Byb3h5X2NhbmRpZGF0ZV9jbGlja2Vk X2xvb2t1cF90YWJsZQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKEJ1c1BhbmVsUHJveHkgICAgICpwYW5lbCwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICAgaW5kZXgsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAg ICAgICAgIGJ1dHRvbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBndWludCAgICAgICAgICAgICAgc3RhdGUpOwotKwotIEdfRU5EX0RFQ0xTCi0gI2Vu ZGlmCi0gCi1kaWZmIC0tZ2l0IGEvZGF0YS9pYnVzLnNjaGVtYXMuaW4gYi9kYXRhL2lidXMuc2No ZW1hcy5pbgotaW5kZXggM2M2YjZmNjkuLmY0YTAxOWQwIDEwMDY0NAotLS0tIGEvZGF0YS9pYnVz LnNjaGVtYXMuaW4KLSsrKyBiL2RhdGEvaWJ1cy5zY2hlbWFzLmluCi1AQCAtMzUzLDYgKzM1Mywx OCBAQAotIAkgICAgPGxvbmc+Q3VzdG9tIGZvbnQgbmFtZSBmb3IgbGFuZ3VhZ2UgcGFuZWw8L2xv bmc+Ci0gICAgICAgPC9sb2NhbGU+Ci0gICAgIDwvc2NoZW1hPgotKyAgICA8c2NoZW1hPgotKyAg ICAgIDxrZXk+L3NjaGVtYXMvZGVza3RvcC9pYnVzL3BhbmVsL2Vtb2ppL3VuaWNvZGUtaG90a2V5 PC9rZXk+Ci0rICAgICAgPGFwcGx5dG8+L2Rlc2t0b3AvaWJ1cy9wYW5lbC9lbW9qaS91bmljb2Rl LWhvdGtleTwvYXBwbHl0bz4KLSsgICAgICA8b3duZXI+aWJ1czwvb3duZXI+Ci0rICAgICAgPHR5 cGU+bGlzdDwvdHlwZT4KLSsgICAgICA8bGlzdF90eXBlPnN0cmluZzwvbGlzdF90eXBlPgotKyAg ICAgIDxkZWZhdWx0PlsmbHQ7Q29udHJvbCZndDsmbHQ7U2hpZnQmZ3Q7dV08L2RlZmF1bHQ+Ci0r ICAgICAgPGxvY2FsZSBuYW1lPSJDIj4KLSsgICAgICAgIDxzaG9ydD5Vbmljb2RlIHNob3J0Y3V0 IGtleXMgZm9yIGd0a19hY2NlbGVyYXRvcl9wYXJzZTwvc2hvcnQ+Ci0rICAgICAgICAgIDxsb25n PlRoZSBzaG9ydGN1dCBrZXlzIGZvciB0dXJuaW5nIFVuaWNvZGUgdHlwaW5nIG9uIG9yIG9mZjwv bG9uZz4KLSsgICAgICA8L2xvY2FsZT4KLSsgICAgPC9zY2hlbWE+Ci0gICAgIDxzY2hlbWE+Ci0g ICAgICAgPGtleT4vc2NoZW1hcy9kZXNrdG9wL2lidXMvcGFuZWwvZW1vamkvaG90a2V5PC9rZXk+ Ci0gICAgICAgPGFwcGx5dG8+L2Rlc2t0b3AvaWJ1cy9wYW5lbC9lbW9qaS9ob3RrZXk8L2FwcGx5 dG8+Ci1kaWZmIC0tZ2l0IGEvc2V0dXAvbWFpbi5weSBiL3NldHVwL21haW4ucHkKLWluZGV4IGYw ZWVlOTk2Li5mNmFkYjA5OCAxMDA2NDQKLS0tLSBhL3NldHVwL21haW4ucHkKLSsrKyBiL3NldHVw L21haW4ucHkKLUBAIC00LDcgKzQsNyBAQAotICMgaWJ1cyAtIFRoZSBJbnB1dCBCdXMKLSAjCi0g IyBDb3B5cmlnaHQgKGMpIDIwMDctMjAxNiBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1YW5nQGdtYWls LmNvbT4KLS0jIENvcHlyaWdodCAoYykgMjAxMC0yMDE3IFRha2FvIEZ1aml3YXJhIDx0YWthby5m dWppd2FyYTFAZ21haWwuY29tPgotKyMgQ29weXJpZ2h0IChjKSAyMDEwLTIwMTggVGFrYW8gRnVq aXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0gIyBDb3B5cmlnaHQgKGMpIDIwMDct MjAxNiBSZWQgSGF0LCBJbmMuCi0gIwotICMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotQEAgLTEyMywxMCArMTIzLDE1IEBAIGNs YXNzIFNldHVwKG9iamVjdCk6Ci0gICAgICAgICBuYW1lID0gJ2Vtb2ppJwotICAgICAgICAgbGFi ZWwgPSAnZW1vamlfZGlhbG9nJwotICAgICAgICAgc2VsZi5fX2luaXRfaG90a2V5KG5hbWUsIGxh YmVsKQotKyAgICAgICAgbmFtZSA9ICd1bmljb2RlJwotKyAgICAgICAgbGFiZWwgPSAndW5pY29k ZV9kaWFsb2cnCi0rICAgICAgICBzZWxmLl9faW5pdF9ob3RrZXkobmFtZSwgbGFiZWwpCi0gCi0g ICAgIGRlZiBfX2luaXRfaG90a2V5KHNlbGYsIG5hbWUsIGxhYmVsLCBjb21tZW50PU5vbmUpOgot ICAgICAgICAgaWYgbmFtZSA9PSAnZW1vamknOgotICAgICAgICAgICAgIHNob3J0Y3V0cyA9IHNl bGYuX19zZXR0aW5nc19lbW9qaS5nZXRfc3RydignaG90a2V5JykKLSsgICAgICAgIGVsaWYgbmFt ZSA9PSAndW5pY29kZSc6Ci0rICAgICAgICAgICAgc2hvcnRjdXRzID0gc2VsZi5fX3NldHRpbmdz X2Vtb2ppLmdldF9zdHJ2KCd1bmljb2RlLWhvdGtleScpCi0gICAgICAgICBlbHNlOgotICAgICAg ICAgICAgIHNob3J0Y3V0cyA9IHNlbGYuX19zZXR0aW5nc19ob3RrZXkuZ2V0X3N0cnYobmFtZSkK LSAgICAgICAgIGJ1dHRvbiA9IHNlbGYuX19idWlsZGVyLmdldF9vYmplY3QoImJ1dHRvbl8lcyIg JSBsYWJlbCkKLUBAIC0xMzksNiArMTQ0LDkgQEAgY2xhc3MgU2V0dXAob2JqZWN0KToKLSAgICAg ICAgIGlmIG5hbWUgPT0gJ2Vtb2ppJzoKLSAgICAgICAgICAgICBidXR0b24uY29ubmVjdCgiY2xp Y2tlZCIsIHNlbGYuX19zaG9ydGN1dF9idXR0b25fY2xpY2tlZF9jYiwKLSAgICAgICAgICAgICAg ICAgICAgICdob3RrZXknLCAncGFuZWwvJyArIG5hbWUsIGxhYmVsLCBlbnRyeSkKLSsgICAgICAg IGVsaWYgbmFtZSA9PSAndW5pY29kZSc6Ci0rICAgICAgICAgICAgYnV0dG9uLmNvbm5lY3QoImNs aWNrZWQiLCBzZWxmLl9fc2hvcnRjdXRfYnV0dG9uX2NsaWNrZWRfY2IsCi0rICAgICAgICAgICAg ICAgICAgICAndW5pY29kZS1ob3RrZXknLCAncGFuZWwvZW1vamknLCBsYWJlbCwgZW50cnkpCi0g ICAgICAgICBlbHNlOgotICAgICAgICAgICAgIGJ1dHRvbi5jb25uZWN0KCJjbGlja2VkIiwgc2Vs Zi5fX3Nob3J0Y3V0X2J1dHRvbl9jbGlja2VkX2NiLAotICAgICAgICAgICAgICAgICAgICAgbmFt ZSwgImdlbmVyYWwvaG90a2V5IiwgbGFiZWwsIGVudHJ5KQotZGlmZiAtLWdpdCBhL3NldHVwL3Nl dHVwLnVpIGIvc2V0dXAvc2V0dXAudWkKLWluZGV4IGU2NGIxMDQ2Li5mMWJlYjFkZSAxMDA2NDQK LS0tLSBhL3NldHVwL3NldHVwLnVpCi0rKysgYi9zZXR1cC9zZXR1cC51aQotQEAgLTg3MCw5ICs4 NzAsOSBAQAotICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrTGFi ZWwiIGlkPSJsYWJlbF9lbW9qaTEiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJv cGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPkZhbHNlPC9wcm9wZXJ0eT4KLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRvb2x0aXBfdGV4dCIg dHJhbnNsYXRhYmxlPSJ5ZXMiPlRoZSBzaG9ydGN1dCBrZXlzIGZvciBzaG93aW5nIGVtb2ppIGRp YWxvZzwvcHJvcGVydHk+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBu YW1lPSJ0b29sdGlwX3RleHQiIHRyYW5zbGF0YWJsZT0ieWVzIj5UaGUgc2hvcnRjdXQga2V5cyB0 byBlbmFibGUgY29udmVyc2lvbnMgb2YgZW1vamkgYW5ub3RhdGlvbnMgb3IgVW5pY29kZSBuYW1l czwvcHJvcGVydHk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1l PSJoYWxpZ24iPnN0YXJ0PC9wcm9wZXJ0eT4KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg PHByb3BlcnR5IG5hbWU9ImxhYmVsIiB0cmFuc2xhdGFibGU9InllcyI+RW1vamkgY2hvaWNlOjwv cHJvcGVydHk+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJs YWJlbCIgdHJhbnNsYXRhYmxlPSJ5ZXMiPkVtb2ppIGFubm90YXRpb246PC9wcm9wZXJ0eT4KLSAg ICAgICAgICAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgotICAgICAgICAgICAgICAgICAgICAg ICAgICAgPHBhY2tpbmc+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBu YW1lPSJsZWZ0X2F0dGFjaCI+MDwvcHJvcGVydHk+Ci1AQCAtOTIwLDYgKzkyMCw2MCBAQAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idG9wX2F0dGFjaCI+MDwv cHJvcGVydHk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhY2tpbmc+Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KLSsgICAgICAgICAgICAgICAgICAgICAgICA8Y2hp bGQ+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtMYWJlbCIg aWQ9ImxhYmVsX3VuaWNvZGUxIj4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3Bl cnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5GYWxzZTwvcHJvcGVydHk+Ci0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0b29sdGlwX3RleHQiIHRy YW5zbGF0YWJsZT0ieWVzIj5UaGUgc2hvcnRjdXQga2V5cyB0byBlbmFibGUgVW5pY29kZSBjb2Rl IHBvaW50IGNvbnZlcnNpb25zPC9wcm9wZXJ0eT4KLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPHByb3BlcnR5IG5hbWU9ImhhbGlnbiI+c3RhcnQ8L3Byb3BlcnR5PgotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibGFiZWwiIHRyYW5zbGF0YWJsZT0ieWVz Ij5Vbmljb2RlIGNvZGUgcG9pbnQ6PC9wcm9wZXJ0eT4KLSsgICAgICAgICAgICAgICAgICAgICAg ICAgIDwvb2JqZWN0PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhY2tpbmc+Ci0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsZWZ0X2F0dGFjaCI+MDwv cHJvcGVydHk+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0 b3BfYXR0YWNoIj4xPC9wcm9wZXJ0eT4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFj a2luZz4KLSsgICAgICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgotKyAgICAgICAgICAgICAg ICAgICAgICAgIDxjaGlsZD4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xh c3M9Ikd0a0JveCIgaWQ9Imhib3hfdW5pY29kZTEiPgotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8cHJvcGVydHkgbmFtZT0ib3JpZW50YXRpb24iPmhvcml6b250YWw8L3Byb3BlcnR5Pgot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1 ZTwvcHJvcGVydHk+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1l PSJjYW5fZm9jdXMiPkZhbHNlPC9wcm9wZXJ0eT4KLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPHByb3BlcnR5IG5hbWU9InNwYWNpbmciPjY8L3Byb3BlcnR5PgotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iaGV4cGFuZCI+dHJ1ZTwvcHJvcGVydHk+Ci0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtFbnRyeSIgaWQ9ImVudHJ5X3VuaWNvZGVfZGlh bG9nIj4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2 aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPlRydWU8L3Byb3BlcnR5PgotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImVkaXRhYmxlIj5GYWxzZTwvcHJv cGVydHk+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+Ci0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPHBhY2tpbmc+Ci0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZXhwYW5kIj5UcnVlPC9wcm9wZXJ0eT4KLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJmaWxsIj5UcnVlPC9w cm9wZXJ0eT4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1l PSJwb3NpdGlvbiI+MDwvcHJvcGVydHk+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PC9wYWNraW5nPgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+Ci0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPG9iamVjdCBjbGFzcz0iR3RrQnV0dG9uIiBpZD0iYnV0dG9uX3VuaWNvZGVfZGlhbG9n Ij4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYWJl bCIgdHJhbnNsYXRhYmxlPSJ5ZXMiPi4uLjwvcHJvcGVydHk+Ci0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idXNlX2FjdGlvbl9hcHBlYXJhbmNlIj5GYWxz ZTwvcHJvcGVydHk+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkg bmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+Ci0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5UcnVlPC9wcm9wZXJ0eT4KLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJyZWNlaXZlc19kZWZh dWx0Ij5GYWxzZTwvcHJvcGVydHk+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 cHJvcGVydHkgbmFtZT0idXNlX2FjdGlvbl9hcHBlYXJhbmNlIj5GYWxzZTwvcHJvcGVydHk+Ci0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idXNlX3VuZGVy bGluZSI+VHJ1ZTwvcHJvcGVydHk+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9v YmplY3Q+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhY2tpbmc+Ci0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZXhwYW5kIj5GYWxzZTwv cHJvcGVydHk+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFt ZT0iZmlsbCI+VHJ1ZTwvcHJvcGVydHk+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8cHJvcGVydHkgbmFtZT0icG9zaXRpb24iPjE8L3Byb3BlcnR5PgotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDwvcGFja2luZz4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg PC9jaGlsZD4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgPHBhY2tpbmc+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAg IDxwcm9wZXJ0eSBuYW1lPSJsZWZ0X2F0dGFjaCI+MTwvcHJvcGVydHk+Ci0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0b3BfYXR0YWNoIj4xPC9wcm9wZXJ0eT4K LSsgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFja2luZz4KLSsgICAgICAgICAgICAgICAg ICAgICAgICA8L2NoaWxkPgotICAgICAgICAgICAgICAgICAgICAgICA8L29iamVjdD4KLSAgICAg ICAgICAgICAgICAgICAgIDwvY2hpbGQ+Ci0gICAgICAgICAgICAgICAgICAgICA8Y2hpbGQgdHlw ZT0ibGFiZWwiPgotZGlmZiAtLWdpdCBhL3NyYy9pYnVzZW5naW5lLmMgYi9zcmMvaWJ1c2VuZ2lu ZS5jCi1pbmRleCBmZDYxMTAyYS4uYTNjY2Q3ZGQgMTAwNjQ0Ci0tLS0gYS9zcmMvaWJ1c2VuZ2lu ZS5jCi0rKysgYi9zcmMvaWJ1c2VuZ2luZS5jCi1AQCAtNjQsOCArNjQsNiBAQCBlbnVtIHsKLSB9 OwotIAotIAotLXR5cGVkZWYgc3RydWN0IF9JQnVzRW5naW5lS2V5YmluZGluZyBJQnVzRW5naW5l S2V5YmluZGluZzsKLS0KLSAvKiBJQnVzRW5naW5lUHJpdiAqLwotIHN0cnVjdCBfSUJ1c0VuZ2lu ZVByaXZhdGUgewotICAgICBnY2hhciAqZW5naW5lX25hbWU7Ci1AQCAtODEsMTQgKzc5LDExIEBA IHN0cnVjdCBfSUJ1c0VuZ2luZVByaXZhdGUgewotICAgICBndWludCBjb250ZW50X3B1cnBvc2U7 Ci0gICAgIGd1aW50IGNvbnRlbnRfaGludHM7Ci0gCi0tICAgIEdTZXR0aW5ncyAgICAgICAgICAg ICAqc2V0dGluZ3NfZW1vamk7Ci0tICAgIElCdXNFbmdpbmVLZXliaW5kaW5nICoqZW1vamlfa2V5 YmluZGluZ3M7Ci0rICAgIEdIYXNoVGFibGUgICAgICAgICAgICAqZXh0ZW5zaW9uX2tleWJpbmRp bmdzOwotKyAgICBnYm9vbGVhbiAgICAgICAgICAgICAgIGVuYWJsZV9leHRlbnNpb247Ci0rICAg IGdjaGFyICAgICAgICAgICAgICAgICAqY3VycmVudF9leHRlbnNpb25fbmFtZTsKLSB9OwotIAot LXN0cnVjdCBfSUJ1c0VuZ2luZUtleWJpbmRpbmcgewotLSAgICBndWludCAgICAgICAgICAgIGtl eXZhbDsKLS0gICAgSUJ1c01vZGlmaWVyVHlwZSBtb2RpZmllcnM7Ci0tfTsKLSAKLSBzdGF0aWMg Z3VpbnQgICAgICAgICAgICBlbmdpbmVfc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAgfTsKLSAK LUBAIC0xOTEsMTAgKzE4Niw2IEBAIHN0YXRpYyB2b2lkICAgICAgaWJ1c19lbmdpbmVfZGJ1c19w cm9wZXJ0eV9jaGFuZ2VkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAqcHJvcGVydHlfbmFtZSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1ZhcmlhbnQgICAgICAgICAgICp2YWx1 ZSk7Ci0gc3RhdGljIHZvaWQgICAgICBpYnVzX2VuZ2luZV9rZXliaW5kaW5nX2ZyZWUgKElCdXNF bmdpbmUgICAgICAgICAqZW5naW5lKTsKLS1zdGF0aWMgdm9pZCAgICAgIHNldHRpbmdzX2Vtb2pp X2hvdGtleV9jaGFuZ2VkX2NiIAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChHU2V0dGluZ3MgICAgICAgICAgKnNldHRpbmdzLAotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgKmtleSwK LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIg ICAgICAgICAgICBkYXRhKTsKLSAKLSAKLSBHX0RFRklORV9UWVBFIChJQnVzRW5naW5lLCBpYnVz X2VuZ2luZSwgSUJVU19UWVBFX1NFUlZJQ0UpCi1AQCAtMjUzLDYgKzI0NCwxMiBAQCBzdGF0aWMg Y29uc3QgZ2NoYXIgaW50cm9zcGVjdGlvbl94bWxbXSA9Ci0gICAgICIgICAgICA8YXJnIGRpcmVj dGlvbj0naW4nICB0eXBlPSd1JyBuYW1lPSdjdXJzb3JfcG9zJyAvPiIKLSAgICAgIiAgICAgIDxh cmcgZGlyZWN0aW9uPSdpbicgIHR5cGU9J3UnIG5hbWU9J2FuY2hvcl9wb3MnIC8+IgotICAgICAi ICAgIDwvbWV0aG9kPiIKLSsgICAgIiAgICA8bWV0aG9kIG5hbWU9J1BhbmVsRXh0ZW5zaW9uUmVj ZWl2ZWQnPiIKLSsgICAgIiAgICAgIDxhcmcgZGlyZWN0aW9uPSdpbicgIHR5cGU9J3YnIG5hbWU9 J2V2ZW50JyAvPiIKLSsgICAgIiAgICA8L21ldGhvZD4iCi0rICAgICIgICAgPG1ldGhvZCBuYW1l PSdQYW5lbEV4dGVuc2lvblJlZ2lzdGVyS2V5cyc+IgotKyAgICAiICAgICAgPGFyZyBkaXJlY3Rp b249J2luJyAgdHlwZT0ndicgbmFtZT0nZGF0YScgLz4iCi0rICAgICIgICAgPC9tZXRob2Q+Igot ICAgICAvKiBGSVhNRSBzaWduYWxzICovCi0gICAgICIgICAgPHNpZ25hbCBuYW1lPSdDb21taXRU ZXh0Jz4iCi0gICAgICIgICAgICA8YXJnIHR5cGU9J3YnIG5hbWU9J3RleHQnIC8+IgotQEAgLTMw OSwxNiArMzA2LDIyIEBAIGlidXNfZW5naW5lX2NsYXNzX2luaXQgKElCdXNFbmdpbmVDbGFzcyAq Y2xhc3MpCi0gICAgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzcyA9IEdfT0JKRUNUX0NMQVNT IChjbGFzcyk7Ci0gICAgIElCdXNPYmplY3RDbGFzcyAqaWJ1c19vYmplY3RfY2xhc3MgPSBJQlVT X09CSkVDVF9DTEFTUyAoY2xhc3MpOwotIAotLSAgICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVy dHkgPSAoR09iamVjdFNldFByb3BlcnR5RnVuYykgaWJ1c19lbmdpbmVfc2V0X3Byb3BlcnR5Owot LSAgICBnb2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPSAoR09iamVjdEdldFByb3BlcnR5RnVu YykgaWJ1c19lbmdpbmVfZ2V0X3Byb3BlcnR5OwotKyAgICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJv cGVydHkgPQotKyAgICAgICAgICAgIChHT2JqZWN0U2V0UHJvcGVydHlGdW5jKSBpYnVzX2VuZ2lu ZV9zZXRfcHJvcGVydHk7Ci0rICAgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9Ci0rICAg ICAgICAgICAgKEdPYmplY3RHZXRQcm9wZXJ0eUZ1bmMpIGlidXNfZW5naW5lX2dldF9wcm9wZXJ0 eTsKLSAKLSAgICAgaWJ1c19vYmplY3RfY2xhc3MtPmRlc3Ryb3kgPSAoSUJ1c09iamVjdERlc3Ry b3lGdW5jKSBpYnVzX2VuZ2luZV9kZXN0cm95OwotIAotLSAgICBJQlVTX1NFUlZJQ0VfQ0xBU1Mg KGNsYXNzKS0+c2VydmljZV9tZXRob2RfY2FsbCAgPSBpYnVzX2VuZ2luZV9zZXJ2aWNlX21ldGhv ZF9jYWxsOwotLSAgICBJQlVTX1NFUlZJQ0VfQ0xBU1MgKGNsYXNzKS0+c2VydmljZV9nZXRfcHJv cGVydHkgPSBpYnVzX2VuZ2luZV9zZXJ2aWNlX2dldF9wcm9wZXJ0eTsKLS0gICAgSUJVU19TRVJW SUNFX0NMQVNTIChjbGFzcyktPnNlcnZpY2Vfc2V0X3Byb3BlcnR5ID0gaWJ1c19lbmdpbmVfc2Vy dmljZV9zZXRfcHJvcGVydHk7Ci0rICAgIElCVVNfU0VSVklDRV9DTEFTUyAoY2xhc3MpLT5zZXJ2 aWNlX21ldGhvZF9jYWxsICA9Ci0rICAgICAgICAgICAgaWJ1c19lbmdpbmVfc2VydmljZV9tZXRo b2RfY2FsbDsKLSsgICAgSUJVU19TRVJWSUNFX0NMQVNTIChjbGFzcyktPnNlcnZpY2VfZ2V0X3By b3BlcnR5ID0KLSsgICAgICAgICAgICBpYnVzX2VuZ2luZV9zZXJ2aWNlX2dldF9wcm9wZXJ0eTsK LSsgICAgSUJVU19TRVJWSUNFX0NMQVNTIChjbGFzcyktPnNlcnZpY2Vfc2V0X3Byb3BlcnR5ID0K LSsgICAgICAgICAgICBpYnVzX2VuZ2luZV9zZXJ2aWNlX3NldF9wcm9wZXJ0eTsKLSAKLS0gICAg aWJ1c19zZXJ2aWNlX2NsYXNzX2FkZF9pbnRlcmZhY2VzIChJQlVTX1NFUlZJQ0VfQ0xBU1MgKGNs YXNzKSwgaW50cm9zcGVjdGlvbl94bWwpOwotKyAgICBpYnVzX3NlcnZpY2VfY2xhc3NfYWRkX2lu dGVyZmFjZXMgKElCVVNfU0VSVklDRV9DTEFTUyAoY2xhc3MpLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludHJvc3BlY3Rpb25feG1sKTsKLSAKLSAgICAgY2xhc3Mt PnByb2Nlc3Nfa2V5X2V2ZW50ID0gaWJ1c19lbmdpbmVfcHJvY2Vzc19rZXlfZXZlbnQ7Ci0gICAg IGNsYXNzLT5mb2N1c19pbiAgICAgPSBpYnVzX2VuZ2luZV9mb2N1c19pbjsKLUBAIC04MzksMjYg Kzg0MiwyNSBAQCBpYnVzX2VuZ2luZV9pbml0IChJQnVzRW5naW5lICplbmdpbmUpCi0gewotICAg ICBJQnVzRW5naW5lUHJpdmF0ZSAqcHJpdjsKLSAgICAgZW5naW5lLT5wcml2ID0gcHJpdiA9IElC VVNfRU5HSU5FX0dFVF9QUklWQVRFIChlbmdpbmUpOwotLQotICAgICBwcml2LT5zdXJyb3VuZGlu Z190ZXh0ID0gZ19vYmplY3RfcmVmX3NpbmsgKHRleHRfZW1wdHkpOwotLSAgICBwcml2LT5zZXR0 aW5nc19lbW9qaSA9Ci0tICAgICAgICAgICAgZ19zZXR0aW5nc19uZXcgKCJvcmcuZnJlZWRlc2t0 b3AuaWJ1cy5wYW5lbC5lbW9qaSIpOwotLSAgICBzZXR0aW5nc19lbW9qaV9ob3RrZXlfY2hhbmdl ZF9jYiAocHJpdi0+c2V0dGluZ3NfZW1vamksICJob3RrZXkiLCBlbmdpbmUpOwotLSAgICBnX3Np Z25hbF9jb25uZWN0IChwcml2LT5zZXR0aW5nc19lbW9qaSwgImNoYW5nZWQ6OmhvdGtleSIsCi0t ICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKHNldHRpbmdzX2Vtb2ppX2hvdGtleV9j aGFuZ2VkX2NiKSwgZW5naW5lKTsKLSsgICAgcHJpdi0+ZXh0ZW5zaW9uX2tleWJpbmRpbmdzID0g Z19oYXNoX3RhYmxlX25ld19mdWxsICgKLSsgICAgICAgICAgICBnX3N0cl9oYXNoLAotKyAgICAg ICAgICAgIGdfc3RyX2VxdWFsLAotKyAgICAgICAgICAgIGdfZnJlZSwKLSsgICAgICAgICAgICBn X2ZyZWUpOwotIH0KLSAKLSBzdGF0aWMgdm9pZAotIGlidXNfZW5naW5lX2Rlc3Ryb3kgKElCdXNF bmdpbmUgKmVuZ2luZSkKLSB7Ci0tICAgIGdfZnJlZSAoZW5naW5lLT5wcml2LT5lbmdpbmVfbmFt ZSk7Ci0tICAgIGVuZ2luZS0+cHJpdi0+ZW5naW5lX25hbWUgPSBOVUxMOwotKyAgICBJQnVzRW5n aW5lUHJpdmF0ZSAqcHJpdiA9IGVuZ2luZS0+cHJpdjsKLSAKLS0gICAgaWYgKGVuZ2luZS0+cHJp di0+c3Vycm91bmRpbmdfdGV4dCkgewotLSAgICAgICAgZ19vYmplY3RfdW5yZWYgKGVuZ2luZS0+ cHJpdi0+c3Vycm91bmRpbmdfdGV4dCk7Ci0tICAgICAgICBlbmdpbmUtPnByaXYtPnN1cnJvdW5k aW5nX3RleHQgPSBOVUxMOwotLSAgICB9Ci0tICAgIGlidXNfZW5naW5lX2tleWJpbmRpbmdfZnJl ZSAoZW5naW5lKTsKLSsgICAgZ19jbGVhcl9wb2ludGVyICgmcHJpdi0+ZW5naW5lX25hbWUsIGdf ZnJlZSk7Ci0rICAgIGdfY2xlYXJfcG9pbnRlciAoJnByaXYtPmN1cnJlbnRfZXh0ZW5zaW9uX25h bWUsIGdfZnJlZSk7Ci0rICAgIGlmIChwcml2LT5zdXJyb3VuZGluZ190ZXh0KQotKyAgICAgICAg Z19jbGVhcl9vYmplY3QgKCZwcml2LT5zdXJyb3VuZGluZ190ZXh0KTsKLSsgICAgaWYgKHByaXYt PmV4dGVuc2lvbl9rZXliaW5kaW5ncykKLSsgICAgICAgIGdfY2xlYXJfcG9pbnRlciAoJnByaXYt PmV4dGVuc2lvbl9rZXliaW5kaW5ncywgZ19oYXNoX3RhYmxlX2Rlc3Ryb3kpOwotIAotICAgICBJ QlVTX09CSkVDVF9DTEFTUyhpYnVzX2VuZ2luZV9wYXJlbnRfY2xhc3MpLT5kZXN0cm95IChJQlVT X09CSkVDVCAoZW5naW5lKSk7Ci0gfQotQEAgLTg5NSwxOSArODk3LDM4IEBAIGlidXNfZW5naW5l X2dldF9wcm9wZXJ0eSAoSUJ1c0VuZ2luZSAqZW5naW5lLAotIH0KLSAKLSBzdGF0aWMgdm9pZAot LWlidXNfZW5naW5lX3BhbmVsX2V4dGVuc2lvbiAoSUJ1c0VuZ2luZSAqZW5naW5lKQotK2lidXNf ZW5naW5lX3BhbmVsX2V4dGVuc2lvbiAoSUJ1c0VuZ2luZSAgKmVuZ2luZSwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICpuYW1lKQotIHsKLS0gICAgSUJ1c1hFdmVu dCAqeGV2ZW50ID0gaWJ1c194X2V2ZW50X25ldyAoCi0tICAgICAgICAgICAgImV2ZW50LXR5cGUi LCBJQlVTX1hfRVZFTlRfS0VZX1BSRVNTLAotLSAgICAgICAgICAgICJwdXJwb3NlIiwgImVtb2pp IiwKLSsgICAgSUJ1c0VuZ2luZVByaXZhdGUgKnByaXY7Ci0rICAgIElCdXNFeHRlbnNpb25FdmVu dCAqZXZlbnQ7Ci0rICAgIEdWYXJpYW50ICpkYXRhOwotKwotKyAgICBnX2Fzc2VydCAoSUJVU19J U19FTkdJTkUgKGVuZ2luZSkpOwotKyAgICBnX2Fzc2VydCAobmFtZSk7Ci0rCi0rICAgIHByaXYg PSBlbmdpbmUtPnByaXY7Ci0rICAgIGlmICghZ19zdHJjbXAwIChuYW1lLCBwcml2LT5jdXJyZW50 X2V4dGVuc2lvbl9uYW1lKSkKLSsgICAgICAgIHByaXYtPmVuYWJsZV9leHRlbnNpb24gPSAhcHJp di0+ZW5hYmxlX2V4dGVuc2lvbjsKLSsgICAgZWxzZQotKyAgICAgICAgcHJpdi0+ZW5hYmxlX2V4 dGVuc2lvbiA9IFRSVUU7Ci0rICAgIGlmIChwcml2LT5lbmFibGVfZXh0ZW5zaW9uKSB7Ci0rICAg ICAgICBnX2ZyZWUgKHByaXYtPmN1cnJlbnRfZXh0ZW5zaW9uX25hbWUpOwotKyAgICAgICAgcHJp di0+Y3VycmVudF9leHRlbnNpb25fbmFtZSA9IGdfc3RyZHVwIChuYW1lKTsKLSsgICAgfQotKyAg ICBldmVudCA9IGlidXNfZXh0ZW5zaW9uX2V2ZW50X25ldyAoCi0rICAgICAgICAgICAgIm5hbWUi LCBuYW1lLAotKyAgICAgICAgICAgICJpcy1lbmFibGVkIiwgcHJpdi0+ZW5hYmxlX2V4dGVuc2lv biwKLSAgICAgICAgICAgICBOVUxMKTsKLS0gICAgR1ZhcmlhbnQgKmRhdGEgPSBpYnVzX3Nlcmlh bGl6YWJsZV9zZXJpYWxpemVfb2JqZWN0ICgKLS0gICAgICAgICAgICBJQlVTX1NFUklBTElaQUJM RSAoeGV2ZW50KSk7Ci0rICAgIGdfYXNzZXJ0IChJQlVTX0lTX0VYVEVOU0lPTl9FVkVOVCAoZXZl bnQpKTsKLSsgICAgZGF0YSA9IGlidXNfc2VyaWFsaXphYmxlX3NlcmlhbGl6ZV9vYmplY3QgKAot KyAgICAgICAgICAgIElCVVNfU0VSSUFMSVpBQkxFIChldmVudCkpOwotIAotICAgICBnX2Fzc2Vy dCAoZGF0YSAhPSBOVUxMKTsKLSAgICAgaWJ1c19lbmdpbmVfZW1pdF9zaWduYWwgKGVuZ2luZSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQYW5lbEV4dGVuc2lvbiIsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBnX3ZhcmlhbnRfbmV3ICgiKHYpIiwgZGF0YSkpOwotKyAg ICBnX29iamVjdF91bnJlZiAoZXZlbnQpOwotIH0KLSAKLSBzdGF0aWMgZ2Jvb2xlYW4KLUBAIC05 MTcsNyArOTM4LDggQEAgaWJ1c19lbmdpbmVfZmlsdGVyX2tleV9ldmVudCAoSUJ1c0VuZ2luZSAq ZW5naW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgIHN0YXRl KQotIHsKLSAgICAgSUJ1c0VuZ2luZVByaXZhdGUgKnByaXY7Ci0tICAgIGludCBpOwotKyAgICBH TGlzdCAqbmFtZXMsICpuOwotKyAgICBJQnVzUHJvY2Vzc0tleUV2ZW50RGF0YSAqa2V5czsKLSAg ICAgZ3VpbnQgbW9kaWZpZXJzOwotIAotICAgICBpZiAoKHN0YXRlICYgSUJVU19SRUxFQVNFX01B U0spICE9IDApCi1AQCAtOTI1LDIyICs5NDcsMjkgQEAgaWJ1c19lbmdpbmVfZmlsdGVyX2tleV9l dmVudCAoSUJ1c0VuZ2luZSAqZW5naW5lLAotICAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoSUJV U19JU19FTkdJTkUgKGVuZ2luZSksIEZBTFNFKTsKLSAKLSAgICAgcHJpdiA9IGVuZ2luZS0+cHJp djsKLS0gICAgaWYgKCFwcml2LT5lbW9qaV9rZXliaW5kaW5ncykKLS0gICAgICAgIHJldHVybiBG QUxTRTsKLS0KLSAgICAgbW9kaWZpZXJzID0gc3RhdGUgJiBJQlVTX01PRElGSUVSX0ZJTFRFUjsK LSAgICAgaWYgKGtleXZhbCA+PSBJQlVTX0tFWV9BICYmIGtleXZhbCA8PSBJQlVTX0tFWV9aICYm Ci0gICAgICAgICAobW9kaWZpZXJzICYgSUJVU19TSElGVF9NQVNLKSAhPSAwKSB7Ci0gICAgICAg ICBrZXl2YWwgPSBrZXl2YWwgLSBJQlVTX0tFWV9BICsgSUJVU19LRVlfYTsKLSAgICAgfQotLSAg ICBmb3IgKGkgPSAwOyBwcml2LT5lbW9qaV9rZXliaW5kaW5nc1tpXTsgaSsrKSB7Ci0tICAgICAg ICBJQnVzRW5naW5lS2V5YmluZGluZyAqYmluZGluZyA9IHByaXYtPmVtb2ppX2tleWJpbmRpbmdz W2ldOwotLSAgICAgICAgaWYgKGJpbmRpbmctPmtleXZhbCA9PSBrZXl2YWwgJiYKLS0gICAgICAg ICAgICBiaW5kaW5nLT5tb2RpZmllcnMgPT0gbW9kaWZpZXJzKSB7Ci0tICAgICAgICAgICAgaWJ1 c19lbmdpbmVfcGFuZWxfZXh0ZW5zaW9uIChlbmdpbmUpOwotLSAgICAgICAgICAgIHJldHVybiBU UlVFOwotKyAgICBuYW1lcyA9IGdfaGFzaF90YWJsZV9nZXRfa2V5cyAocHJpdi0+ZXh0ZW5zaW9u X2tleWJpbmRpbmdzKTsKLSsgICAgaWYgKCFuYW1lcykKLSsgICAgICAgIHJldHVybiBGQUxTRTsK LSsgICAgZm9yIChuID0gbmFtZXM7IG47IG4gPSBuLT5uZXh0KSB7Ci0rICAgICAgICBjb25zdCBn Y2hhciAqbmFtZSA9IChjb25zdCBnY2hhciAqKW4tPmRhdGE7Ci0rICAgICAgICBrZXlzID0gZ19o YXNoX3RhYmxlX2xvb2t1cCAocHJpdi0+ZXh0ZW5zaW9uX2tleWJpbmRpbmdzLCBuYW1lKTsKLSsg ICAgICAgIGZvciAoOyBrZXlzOyBrZXlzKyspIHsKLSsgICAgICAgICAgICBpZiAoa2V5cy0+a2V5 dmFsID09IDAgJiYga2V5cy0+a2V5Y29kZSA9PSAwICYmIGtleXMtPnN0YXRlID09IDApCi0rICAg ICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICAgIGlmIChrZXlzLT5rZXl2YWwgPT0ga2V5 dmFsICYmCi0rICAgICAgICAgICAgICAgIGtleXMtPnN0YXRlID09IG1vZGlmaWVycyAmJgotKyAg ICAgICAgICAgICAgICAoa2V5cy0+a2V5Y29kZSA9PSAwIHx8IGtleXMtPmtleWNvZGUgPT0ga2V5 Y29kZSkpIHsKLSsgICAgICAgICAgICAgICAgaWJ1c19lbmdpbmVfcGFuZWxfZXh0ZW5zaW9uIChl bmdpbmUsIG5hbWUpOwotKyAgICAgICAgICAgICAgICByZXR1cm4gVFJVRTsKLSsgICAgICAgICAg ICB9Ci0gICAgICAgICB9Ci0gICAgIH0KLSsgICAgZ19saXN0X2ZyZWUgKG5hbWVzKTsKLSAgICAg cmV0dXJuIEZBTFNFOwotIH0KLSAKLUBAIC05NTMsNiArOTgyLDk3IEBAIGlidXNfZW5naW5lX3Nl cnZpY2VfYXV0aG9yaXplZF9tZXRob2QgKElCdXNTZXJ2aWNlICAgICAqc2VydmljZSwKLSAgICAg cmV0dXJuIEZBTFNFOwotIH0KLSAKLStzdGF0aWMgdm9pZAotK2lidXNfZW5naW5lX3NlcnZpY2Vf cGFuZWxfZXh0ZW5zaW9uX3JlZ2lzdGVyX2tleXMgKElCdXNFbmdpbmUgICAgICAqZW5naW5lLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJp YW50ICAgICAgICAqcGFyYW1ldGVycywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHREJ1c01ldGhvZEludm9jYXRpb24KLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmlu dm9jYXRpb24pCi0rewotKyAgICBJQnVzRW5naW5lUHJpdmF0ZSAqcHJpdiA9IGVuZ2luZS0+cHJp djsKLSsgICAgR1ZhcmlhbnQgKnYxID0gTlVMTDsKLSsgICAgR1ZhcmlhbnQgKnYyID0gTlVMTDsK LSsgICAgR1ZhcmlhbnQgKnYzID0gTlVMTDsKLSsgICAgR1ZhcmlhbnQgKnZrZXlzID0gTlVMTDsK LSsgICAgR1ZhcmlhbnRJdGVyICppdGVyMSA9IE5VTEw7Ci0rICAgIEdWYXJpYW50SXRlciAqaXRl cjIgPSBOVUxMOwotKyAgICBjb25zdCBnY2hhciAqbmFtZSA9IE5VTEw7Ci0rICAgIGd1aW50IGZh aWx1cmVfaWQgPSAwOwotKwotKyAgICBnX3ZhcmlhbnRfZ2V0IChwYXJhbWV0ZXJzLCAiKHYpIiwg JnYxKTsKLSsgICAgaWYgKHYxKQotKyAgICAgICAgZ192YXJpYW50X2dldCAodjEsICIodikiLCAm djIpOwotKyAgICBlbHNlCi0rICAgICAgICBmYWlsdXJlX2lkID0gMTsKLSsgICAgaWYgKHYyKQot KyAgICAgICAgZ192YXJpYW50X2dldCAodjIsICJhe3N2fSIsICZpdGVyMSk7Ci0rICAgIGVsc2UK LSsgICAgICAgIGZhaWx1cmVfaWQgPSAyOwotKyAgICBpZiAoaXRlcjEpIHsKLSsgICAgICAgIHdo aWxlIChnX3ZhcmlhbnRfaXRlcl9sb29wIChpdGVyMSwgInsmc3Z9IiwgJm5hbWUsICZ2a2V5cykp IHsKLSsgICAgICAgICAgICBpZiAodmtleXMpCi0rICAgICAgICAgICAgICAgIGdfdmFyaWFudF9n ZXQgKHZrZXlzLCAiYXYiLCAmaXRlcjIpOwotKyAgICAgICAgICAgIGlmIChuYW1lICYmIGl0ZXIy KSB7Ci0rICAgICAgICAgICAgICAgIElCdXNQcm9jZXNzS2V5RXZlbnREYXRhICprZXlzID0gTlVM TDsKLSsgICAgICAgICAgICAgICAgZ2ludCBudW0gPSAwOwotKyAgICAgICAgICAgICAgICB3aGls ZSAoZ192YXJpYW50X2l0ZXJfbG9vcCAoaXRlcjIsICJ2IiwgJnYzKSkgewotKyAgICAgICAgICAg ICAgICAgICAgaWYgKHYzKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQga2V5dmFs ID0gMDsKLSsgICAgICAgICAgICAgICAgICAgICAgICBndWludCBrZXljb2RlID0gMDsKLSsgICAg ICAgICAgICAgICAgICAgICAgICBndWludCBzdGF0ZSA9IDA7Ci0rICAgICAgICAgICAgICAgICAg ICAgICAgZ192YXJpYW50X2dldCAodjMsICIoaWlpKSIsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJmtleXZhbCwgJmtleWNvZGUsICZzdGF0ZSk7Ci0rICAgICAgICAg ICAgICAgICAgICAgICAgaWYgKCFrZXlzKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBr ZXlzID0gZ19uZXcwIChJQnVzUHJvY2Vzc0tleUV2ZW50RGF0YSwgMik7Ci0rICAgICAgICAgICAg ICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlzID0gZ19y ZW5ldyAoSUJ1c1Byb2Nlc3NLZXlFdmVudERhdGEsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBrZXlzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbnVtICsgMik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAga2V5c1tu dW1dLmtleXZhbCA9IGtleXZhbDsKLSsgICAgICAgICAgICAgICAgICAgICAgICBrZXlzW251bV0u a2V5Y29kZSA9IGtleWNvZGU7Ci0rICAgICAgICAgICAgICAgICAgICAgICAga2V5c1tudW1dLnN0 YXRlID0gc3RhdGU7Ci0rICAgICAgICAgICAgICAgICAgICAgICAga2V5c1tudW0gKyAxXS5rZXl2 YWwgPSAwOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGtleXNbbnVtICsgMV0ua2V5Y29kZSA9 IDA7Ci0rICAgICAgICAgICAgICAgICAgICAgICAga2V5c1tudW0gKyAxXS5zdGF0ZSA9IDA7Ci0r ICAgICAgICAgICAgICAgICAgICAgICAgZ19jbGVhcl9wb2ludGVyICgmdjMsIGdfdmFyaWFudF91 bnJlZik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgbnVtKys7Ci0rICAgICAgICAgICAgICAg ICAgICB9IGVsc2UgewotKyAgICAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmVfaWQgPSA1Owot KyAgICAgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAg ICAgIGlmIChudW0gPiAwKSB7Ci0rICAgICAgICAgICAgICAgICAgICBnX2hhc2hfdGFibGVfcmVw bGFjZSAocHJpdi0+ZXh0ZW5zaW9uX2tleWJpbmRpbmdzLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdfc3RyZHVwIChuYW1lKSwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlzKTsKLSsgICAgICAgICAgICAgICAgfSBlbHNl IHsKLSsgICAgICAgICAgICAgICAgICAgIGdfaGFzaF90YWJsZV9yZW1vdmUgKHByaXYtPmV4dGVu c2lvbl9rZXliaW5kaW5ncywgbmFtZSk7Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAg ICAgICAgZ19jbGVhcl9wb2ludGVyICgmaXRlcjIsIGdfdmFyaWFudF9pdGVyX2ZyZWUpOwotKyAg ICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgICAgIGZhaWx1cmVfaWQgPSA0OwotKyAg ICAgICAgICAgIH0KLSsgICAgICAgICAgICBnX2NsZWFyX3BvaW50ZXIgKCZ2a2V5cywgZ192YXJp YW50X3VucmVmKTsKLSsgICAgICAgICAgICBuYW1lID0gTlVMTDsKLSsgICAgICAgIH0KLSsgICAg ICAgIGdfdmFyaWFudF9pdGVyX2ZyZWUgKGl0ZXIxKTsKLSsgICAgfSBlbHNlIHsKLSsgICAgICAg IGZhaWx1cmVfaWQgPSAzOwotKyAgICB9Ci0rICAgIGlmIChmYWlsdXJlX2lkID09IDApIHsKLSsg ICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUgKGludm9jYXRpb24s IE5VTEwpOwotKyAgICB9IGVsc2UgewotKyAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9u X3JldHVybl9lcnJvciAoCi0rICAgICAgICAgICAgICAgIGludm9jYXRpb24sCi0rICAgICAgICAg ICAgICAgIEdfREJVU19FUlJPUiwKLSsgICAgICAgICAgICAgICAgR19EQlVTX0VSUk9SX0ZBSUxF RCwKLSsgICAgICAgICAgICAgICAgIlBhbmVsRXh0ZW5zaW9uUmVnaXN0ZXJLZXlzIG1ldGhvZCBn aXZlcyBOVUxMOiAlZCIsCi0rICAgICAgICAgICAgICAgIGZhaWx1cmVfaWQpOwotKyAgICB9Ci0r ICAgIGlmICh2MikKLSsgICAgICAgIGdfdmFyaWFudF91bnJlZiAodjIpOwotKyAgICBpZiAodjEp Ci0rICAgICAgICBnX3ZhcmlhbnRfdW5yZWYgKHYxKTsKLSt9Ci0rCi0gc3RhdGljIHZvaWQKLSBp YnVzX2VuZ2luZV9zZXJ2aWNlX21ldGhvZF9jYWxsIChJQnVzU2VydmljZSAgICAgICAgICAgKnNl cnZpY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCdXNDb25uZWN0aW9u ICAgICAgICpjb25uZWN0aW9uLAotQEAgLTk2NCw2ICsxMDg0LDcgQEAgaWJ1c19lbmdpbmVfc2Vy dmljZV9tZXRob2RfY2FsbCAoSUJ1c1NlcnZpY2UgICAgICAgICAgICpzZXJ2aWNlLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQnVzTWV0aG9kSW52b2NhdGlvbiAqaW52b2Nh dGlvbikKLSB7Ci0gICAgIElCdXNFbmdpbmUgKmVuZ2luZSA9IElCVVNfRU5HSU5FIChzZXJ2aWNl KTsKLSsgICAgSUJ1c0VuZ2luZVByaXZhdGUgKnByaXYgPSBlbmdpbmUtPnByaXY7Ci0gCi0gICAg IGlmIChnX3N0cmNtcDAgKGludGVyZmFjZV9uYW1lLCBJQlVTX0lOVEVSRkFDRV9FTkdJTkUpICE9 IDApIHsKLSAgICAgICAgIElCVVNfU0VSVklDRV9DTEFTUyAoaWJ1c19lbmdpbmVfcGFyZW50X2Ns YXNzKS0+Ci1AQCAtMTAwMiw2ICsxMTIzLDMzIEBAIGlidXNfZW5naW5lX3NlcnZpY2VfbWV0aG9k X2NhbGwgKElCdXNTZXJ2aWNlICAgICAgICAgICAqc2VydmljZSwKLSAgICAgICAgIGdfZGJ1c19t ZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUgKGludm9jYXRpb24sIGdfdmFyaWFudF9uZXcg KCIoYikiLCByZXR2YWwpKTsKLSAgICAgICAgIHJldHVybjsKLSAgICAgfQotKyAgICBpZiAoZ19z dHJjbXAwIChtZXRob2RfbmFtZSwgIlBhbmVsRXh0ZW5zaW9uUmVjZWl2ZWQiKSA9PSAwKSB7Ci0r ICAgICAgICBHVmFyaWFudCAqYXJnMCA9IE5VTEw7Ci0rICAgICAgICBJQnVzRXh0ZW5zaW9uRXZl bnQgKmV2ZW50ID0gTlVMTDsKLSsKLSsgICAgICAgIGdfdmFyaWFudF9nZXQgKHBhcmFtZXRlcnMs ICIodikiLCAmYXJnMCk7Ci0rICAgICAgICBpZiAoYXJnMCkgewotKyAgICAgICAgICAgIGV2ZW50 ID0gKElCdXNFeHRlbnNpb25FdmVudCAqKWlidXNfc2VyaWFsaXphYmxlX2Rlc2VyaWFsaXplX29i amVjdCAoCi0rICAgICAgICAgICAgICAgICAgICBhcmcwKTsKLSsgICAgICAgIH0KLSsgICAgICAg IGlmICghZXZlbnQpIHsKLSsgICAgICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0 dXJuX2Vycm9yICgKLSsgICAgICAgICAgICAgICAgICAgIGludm9jYXRpb24sCi0rICAgICAgICAg ICAgICAgICAgICBHX0RCVVNfRVJST1IsCi0rICAgICAgICAgICAgICAgICAgICBHX0RCVVNfRVJS T1JfRkFJTEVELAotKyAgICAgICAgICAgICAgICAgICAgIlBhbmVsRXh0ZW5zaW9uUmVjZWl2ZWQg bWV0aG9kIGdpdmVzIE5VTEwiKTsKLSsgICAgICAgICAgICByZXR1cm47Ci0rICAgICAgICB9Ci0r ICAgICAgICBwcml2LT5lbmFibGVfZXh0ZW5zaW9uID0gaWJ1c19leHRlbnNpb25fZXZlbnRfaXNf ZW5hYmxlZCAoZXZlbnQpOwotKyAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVy bl92YWx1ZSAoaW52b2NhdGlvbiwgTlVMTCk7Ci0rICAgICAgICByZXR1cm47Ci0rICAgIH0KLSsg ICAgaWYgKGdfc3RyY21wMCAobWV0aG9kX25hbWUsICJQYW5lbEV4dGVuc2lvblJlZ2lzdGVyS2V5 cyIpID09IDApIHsKLSsgICAgICAgIGlidXNfZW5naW5lX3NlcnZpY2VfcGFuZWxfZXh0ZW5zaW9u X3JlZ2lzdGVyX2tleXMgKGVuZ2luZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZvY2F0aW9uKTsK LSsgICAgICAgIHJldHVybjsKLSsgICAgfQotIAotICAgICBzdGF0aWMgY29uc3Qgc3RydWN0IHsK LSAgICAgICAgIGdjaGFyICptZW1iZXI7Ci1AQCAtMTQ0MSw3MyArMTU4OSwxMCBAQCBzdGF0aWMg dm9pZAotIGlidXNfZW5naW5lX2tleWJpbmRpbmdfZnJlZSAoSUJ1c0VuZ2luZSAqZW5naW5lKQot IHsKLSAgICAgSUJ1c0VuZ2luZVByaXZhdGUgKnByaXY7Ci0tICAgIGludCBpOwotIAotICAgICBn X3JldHVybl9pZl9mYWlsIChJQlVTX0lTX0VOR0lORSAoZW5naW5lKSk7Ci0gCi0gICAgIHByaXYg PSBlbmdpbmUtPnByaXY7Ci0tICAgIGlmIChwcml2LT5lbW9qaV9rZXliaW5kaW5ncykgewotLSAg ICAgICAgZm9yIChpID0gMDsgcHJpdi0+ZW1vamlfa2V5YmluZGluZ3NbaV07IGkrKykKLS0gICAg ICAgICAgICBnX3NsaWNlX2ZyZWUgKElCdXNFbmdpbmVLZXliaW5kaW5nLCBwcml2LT5lbW9qaV9r ZXliaW5kaW5nc1tpXSk7Ci0tICAgICAgICBnX2NsZWFyX3BvaW50ZXIgKCZwcml2LT5lbW9qaV9r ZXliaW5kaW5ncywgZ19mcmVlKTsKLS0gICAgfQotLX0KLS0KLS1zdGF0aWMgSUJ1c0VuZ2luZUtl eWJpbmRpbmcgKgotLWlidXNfZW5naW5lX2tleWJpbmRpbmdfbmV3IChJQnVzRW5naW5lICAqZW5n aW5lLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAqYWNjZWxlcmF0 b3IpCi0tewotLSAgICBndWludCBrZXl2YWwgPSAwVTsKLS0gICAgSUJ1c01vZGlmaWVyVHlwZSBt b2RpZmllcnMgPSAwOwotLSAgICBJQnVzRW5naW5lS2V5YmluZGluZyAqYmluZGluZyA9IE5VTEw7 Ci0tCi0tICAgIGlidXNfYWNjZWxlcmF0b3JfcGFyc2UgKGFjY2VsZXJhdG9yLCAma2V5dmFsLCAm bW9kaWZpZXJzKTsKLS0gICAgaWYgKGtleXZhbCA9PSAwVSAmJiBtb2RpZmllcnMgPT0gMCkgewot LSAgICAgICAgZ193YXJuaW5nICgiRmFpbGVkIHRvIHBhcnNlIHNob3J0Y3V0IGtleSAnJXMnIiwg YWNjZWxlcmF0b3IpOwotLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0tICAgIH0KLS0gICAgaWYgKG1v ZGlmaWVycyAmIElCVVNfU1VQRVJfTUFTSykgewotLSAgICAgICAgbW9kaWZpZXJzXj1JQlVTX1NV UEVSX01BU0s7Ci0tICAgICAgICBtb2RpZmllcnN8PUlCVVNfTU9ENF9NQVNLOwotLSAgICB9Ci0t Ci0tICAgIGJpbmRpbmcgPSBnX3NsaWNlX25ldzAgKElCdXNFbmdpbmVLZXliaW5kaW5nKTsKLS0g ICAgYmluZGluZy0+a2V5dmFsID0ga2V5dmFsOwotLSAgICBiaW5kaW5nLT5tb2RpZmllcnMgPSBt b2RpZmllcnM7Ci0tICAgIHJldHVybiBiaW5kaW5nOwotLX0KLS0KLS1zdGF0aWMgdm9pZAotLXNl dHRpbmdzX2Vtb2ppX2hvdGtleV9jaGFuZ2VkX2NiIChHU2V0dGluZ3MgICAqc2V0dGluZ3MsCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICprZXksCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICAgICBkYXRhKQotLXsKLS0g ICAgSUJ1c0VuZ2luZSAqZW5naW5lOwotLSAgICBJQnVzRW5naW5lUHJpdmF0ZSAqcHJpdjsKLS0g ICAgZ2NoYXIgKiphY2NlbGVyYXRvcnM7Ci0tICAgIGludCBpLCBqLCBsZW5ndGg7Ci0tICAgIGdf cmV0dXJuX2lmX2ZhaWwgKElCVVNfSVNfRU5HSU5FIChkYXRhKSk7Ci0tICAgIGVuZ2luZSA9IElC VVNfRU5HSU5FIChkYXRhKTsKLS0gICAgcHJpdiA9IGVuZ2luZS0+cHJpdjsKLS0KLS0gICAgaWYg KGdfc3RyY21wMCAoa2V5LCAiaG90a2V5IikgIT0gMCkKLS0gICAgICAgIHJldHVybjsKLS0gICAg YWNjZWxlcmF0b3JzID0gZ19zZXR0aW5nc19nZXRfc3RydiAoc2V0dGluZ3MsIGtleSk7Ci0tICAg IGxlbmd0aCA9IGdfc3Rydl9sZW5ndGggKGFjY2VsZXJhdG9ycyk7Ci0tICAgIGlidXNfZW5naW5l X2tleWJpbmRpbmdfZnJlZSAoZW5naW5lKTsKLS0gICAgaWYgKGxlbmd0aCA9PSAwKSB7Ci0tICAg ICAgICBnX3N0cmZyZWV2IChhY2NlbGVyYXRvcnMpOwotLSAgICAgICAgcmV0dXJuOwotLSAgICB9 Ci0tICAgIHByaXYtPmVtb2ppX2tleWJpbmRpbmdzID0gZ19uZXcwIChJQnVzRW5naW5lS2V5Ymlu ZGluZyosIGxlbmd0aCArIDEpOwotLSAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8IGxlbmd0aDsg aSsrKSB7Ci0tICAgICAgICBJQnVzRW5naW5lS2V5YmluZGluZyAqYmluZGluZyA9Ci0tICAgICAg ICAgICAgICAgIGlidXNfZW5naW5lX2tleWJpbmRpbmdfbmV3IChlbmdpbmUsIGFjY2VsZXJhdG9y c1tpXSk7Ci0tICAgICAgICBpZiAoIWJpbmRpbmcpCi0tICAgICAgICAgICAgY29udGludWU7Ci0t ICAgICAgICBwcml2LT5lbW9qaV9rZXliaW5kaW5nc1tqKytdID0gYmluZGluZzsKLS0gICAgfQot LSAgICBnX3N0cmZyZWV2IChhY2NlbGVyYXRvcnMpOwotIH0KLSAKLSBJQnVzRW5naW5lICoKLWRp ZmYgLS1naXQgYS9zcmMvaWJ1c3BhbmVsc2VydmljZS5jIGIvc3JjL2lidXNwYW5lbHNlcnZpY2Uu YwotaW5kZXggZjM3YjkxYzMuLjcxMDI4ZWJmIDEwMDY0NAotLS0tIGEvc3JjL2lidXNwYW5lbHNl cnZpY2UuYwotKysrIGIvc3JjL2lidXNwYW5lbHNlcnZpY2UuYwotQEAgLTU3LDYgKzU3LDkgQEAg ZW51bSB7Ci0gICAgIERFU1RST1lfQ09OVEVYVCwKLSAgICAgU0VUX0NPTlRFTlRfVFlQRSwKLSAg ICAgUEFORUxfRVhURU5TSU9OX1JFQ0VJVkVELAotKyAgICBQUk9DRVNTX0tFWV9FVkVOVCwKLSsg ICAgQ09NTUlUX1RFWFRfUkVDRUlWRUQsCi0rICAgIENBTkRJREFURV9DTElDS0VEX0xPT0tVUF9U QUJMRSwKLSAgICAgTEFTVF9TSUdOQUwsCi0gfTsKLSAKLUBAIC0xNTMsNyArMTU2LDcgQEAgc3Rh dGljIHZvaWQgICAgICBpYnVzX3BhbmVsX3NlcnZpY2Vfc2V0X2NvbnRlbnRfdHlwZQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgICAgIGhp bnRzKTsKLSBzdGF0aWMgdm9pZCAgICAgIGlidXNfcGFuZWxfc2VydmljZV9wYW5lbF9leHRlbnNp b25fcmVjZWl2ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJQnVzUGFu ZWxTZXJ2aWNlICAgICAgICpwYW5lbCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHVmFyaWFudCAgICAgICAgICAgICAgICpkYXRhKTsKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBJQnVzRXh0ZW5zaW9uRXZlbnQgICAgICpldmVudCk7Ci0gCi0gR19E RUZJTkVfVFlQRSAoSUJ1c1BhbmVsU2VydmljZSwgaWJ1c19wYW5lbF9zZXJ2aWNlLCBJQlVTX1RZ UEVfU0VSVklDRSkKLSAKLUBAIC0xODQsNiArMTg3LDExIEBAIHN0YXRpYyBjb25zdCBnY2hhciBp bnRyb3NwZWN0aW9uX3htbFtdID0KLSAgICAgIiAgICA8bWV0aG9kIG5hbWU9J0N1cnNvckRvd25M b29rdXBUYWJsZScgLz4iCi0gICAgICIgICAgPG1ldGhvZCBuYW1lPSdQYWdlVXBMb29rdXBUYWJs ZScgLz4iCi0gICAgICIgICAgPG1ldGhvZCBuYW1lPSdQYWdlRG93bkxvb2t1cFRhYmxlJyAvPiIK LSsgICAgIiAgICA8bWV0aG9kIG5hbWU9J0NhbmRpZGF0ZUNsaWNrZWRMb29rdXBUYWJsZSc+Igot KyAgICAiICAgICAgPGFyZyBkaXJlY3Rpb249J2luJyB0eXBlPSd1JyBuYW1lPSdpbmRleCcgLz4i Ci0rICAgICIgICAgICA8YXJnIGRpcmVjdGlvbj0naW4nIHR5cGU9J3UnIG5hbWU9J2J1dHRvbicg Lz4iCi0rICAgICIgICAgICA8YXJnIGRpcmVjdGlvbj0naW4nIHR5cGU9J3UnIG5hbWU9J3N0YXRl JyAvPiIKLSsgICAgIiAgICA8L21ldGhvZD4iCi0gICAgICIgICAgPG1ldGhvZCBuYW1lPSdSZWdp c3RlclByb3BlcnRpZXMnPiIKLSAgICAgIiAgICAgIDxhcmcgZGlyZWN0aW9uPSdpbicgIHR5cGU9 J3YnIG5hbWU9J3Byb3BzJyAvPiIKLSAgICAgIiAgICA8L21ldGhvZD4iCi1AQCAtMjIxLDcgKzIy OSwxNiBAQCBzdGF0aWMgY29uc3QgZ2NoYXIgaW50cm9zcGVjdGlvbl94bWxbXSA9Ci0gICAgICIg ICAgICA8YXJnIGRpcmVjdGlvbj0naW4nICB0eXBlPSd1JyBuYW1lPSdoaW50cycgLz4iCi0gICAg ICIgICAgPC9tZXRob2Q+IgotICAgICAiICAgIDxtZXRob2QgbmFtZT0nUGFuZWxFeHRlbnNpb25S ZWNlaXZlZCc+IgotLSAgICAiICAgICAgPGFyZyBkaXJlY3Rpb249J2luJyB0eXBlPSd2JyBuYW1l PSdkYXRhJyAvPiIKLSsgICAgIiAgICAgIDxhcmcgZGlyZWN0aW9uPSdpbicgdHlwZT0ndicgbmFt ZT0nZXZlbnQnIC8+IgotKyAgICAiICAgIDwvbWV0aG9kPiIKLSsgICAgIiAgICA8bWV0aG9kIG5h bWU9J1Byb2Nlc3NLZXlFdmVudCc+IgotKyAgICAiICAgICAgPGFyZyBkaXJlY3Rpb249J2luJyAg dHlwZT0ndScgbmFtZT0na2V5dmFsJyAvPiIKLSsgICAgIiAgICAgIDxhcmcgZGlyZWN0aW9uPSdp bicgIHR5cGU9J3UnIG5hbWU9J2tleWNvZGUnIC8+IgotKyAgICAiICAgICAgPGFyZyBkaXJlY3Rp b249J2luJyAgdHlwZT0ndScgbmFtZT0nc3RhdGUnIC8+IgotKyAgICAiICAgICAgPGFyZyBkaXJl Y3Rpb249J291dCcgdHlwZT0nYicgLz4iCi0rICAgICIgICAgPC9tZXRob2Q+IgotKyAgICAiICAg IDxtZXRob2QgbmFtZT0nQ29tbWl0VGV4dFJlY2VpdmVkJz4iCi0rICAgICIgICAgICA8YXJnIGRp cmVjdGlvbj0naW4nIHR5cGU9J3YnIG5hbWU9J3RleHQnIC8+IgotICAgICAiICAgIDwvbWV0aG9k PiIKLSAgICAgLyogU2lnbmFscyAqLwotICAgICAiICAgIDxzaWduYWwgbmFtZT0nQ3Vyc29yVXAn IC8+IgotQEAgLTI0Nyw3ICsyNjQsMjMgQEAgc3RhdGljIGNvbnN0IGdjaGFyIGludHJvc3BlY3Rp b25feG1sW10gPQotICAgICAiICAgICAgPGFyZyB0eXBlPSd2JyBuYW1lPSd0ZXh0JyAvPiIKLSAg ICAgIiAgICA8L3NpZ25hbD4iCi0gICAgICIgICAgPHNpZ25hbCBuYW1lPSdQYW5lbEV4dGVuc2lv bic+IgotKyAgICAiICAgICAgPGFyZyB0eXBlPSd2JyBuYW1lPSdldmVudCcgLz4iCi0rICAgICIg ICAgPC9zaWduYWw+IgotKyAgICAiICAgIDxtZXRob2QgbmFtZT0nUGFuZWxFeHRlbnNpb25SZWdp c3RlcktleXMnPiIKLSAgICAgIiAgICAgIDxhcmcgdHlwZT0ndicgbmFtZT0nZGF0YScgLz4iCi0r ICAgICIgICAgPC9tZXRob2Q+IgotKyAgICAiICAgIDxzaWduYWwgbmFtZT0nVXBkYXRlUHJlZWRp dFRleHRSZWNlaXZlZCc+IgotKyAgICAiICAgICAgPGFyZyB0eXBlPSd2JyBuYW1lPSd0ZXh0JyAv PiIKLSsgICAgIiAgICAgIDxhcmcgdHlwZT0ndScgbmFtZT0nY3Vyc29yX3BvcycgLz4iCi0rICAg ICIgICAgICA8YXJnIHR5cGU9J2InIG5hbWU9J3Zpc2libGUnIC8+IgotKyAgICAiICAgIDwvc2ln bmFsPiIKLSsgICAgIiAgICA8c2lnbmFsIG5hbWU9J1VwZGF0ZUF1eGlsaWFyeVRleHRSZWNlaXZl ZCc+IgotKyAgICAiICAgICAgPGFyZyB0eXBlPSd2JyBuYW1lPSd0ZXh0JyAvPiIKLSsgICAgIiAg ICAgIDxhcmcgdHlwZT0nYicgbmFtZT0ndmlzaWJsZScgLz4iCi0rICAgICIgICAgPC9zaWduYWw+ IgotKyAgICAiICAgIDxzaWduYWwgbmFtZT0nVXBkYXRlTG9va3VwVGFibGVSZWNlaXZlZCc+Igot KyAgICAiICAgICAgPGFyZyB0eXBlPSd2JyBuYW1lPSd0YWJsZScgLz4iCi0rICAgICIgICAgICA8 YXJnIHR5cGU9J2InIG5hbWU9J3Zpc2libGUnIC8+IgotICAgICAiICAgIDwvc2lnbmFsPiIKLSAg ICAgIiAgPC9pbnRlcmZhY2U+IgotICAgICAiPC9ub2RlPiI7Ci1AQCAtOTI3LDEwICs5NjAsODEg QEAgaWJ1c19wYW5lbF9zZXJ2aWNlX2NsYXNzX2luaXQgKElCdXNQYW5lbFNlcnZpY2VDbGFzcyAq Y2xhc3MpCi0gICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCi0gICAgICAgICAgICAgR19T VFJVQ1RfT0ZGU0VUIChJQnVzUGFuZWxTZXJ2aWNlQ2xhc3MsIHBhbmVsX2V4dGVuc2lvbl9yZWNl aXZlZCksCi0gICAgICAgICAgICAgTlVMTCwgTlVMTCwKLS0gICAgICAgICAgICBfaWJ1c19tYXJz aGFsX1ZPSURfX1ZBUklBTlQsCi0rICAgICAgICAgICAgX2lidXNfbWFyc2hhbF9WT0lEX19PQkpF Q1QsCi0rICAgICAgICAgICAgR19UWVBFX05PTkUsCi0rICAgICAgICAgICAgMSwKLSsgICAgICAg ICAgICBJQlVTX1RZUEVfRVhURU5TSU9OX0VWRU5UKTsKLSsKLSsgICAgLyoqCi0rICAgICAqIElC dXNQYW5lbFNlcnZpY2U6OnByb2Nlc3Mta2V5LWV2ZW50OgotKyAgICAgKiBAcGFuZWw6IEFuICNJ QnVzUGFuZWxTZXJ2aWNlCi0rICAgICAqIEBrZXl2YWw6IEtleSBzeW1ib2wgb2YgdGhlIGtleSBw cmVzcy4KLSsgICAgICogQGtleWNvZGU6IEtleUNvZGUgb2YgdGhlIGtleSBwcmVzcy4KLSsgICAg ICogQHN0YXRlOiBLZXkgbW9kaWZpZXIgZmxhZ3MuCi0rICAgICAqCi0rICAgICAqIEVtaXR0ZWQg d2hlbiBhIGtleSBldmVudCBpcyByZWNlaXZlZC4KLSsgICAgICogSW1wbGVtZW50IHRoZSBtZW1i ZXIgZnVuY3Rpb24gSUJ1c1BhbmVsU2VydmljZUNsYXNzOjpwcm9jZXNzX2tleV9ldmVudAotKyAg ICAgKiBpbiBleHRlbmRlZCBjbGFzcyB0byByZWNlaXZlIHRoaXMgc2lnbmFsLgotKyAgICAgKiBC b3RoIHRoZSBrZXkgc3ltYm9sIGFuZCBrZXljb2RlIGFyZSBwYXNzZWQgdG8gdGhlIG1lbWJlciBm dW5jdGlvbi4KLSsgICAgICogU2VlIGlidXNfaW5wdXRfY29udGV4dF9wcm9jZXNzX2tleV9ldmVu dCgpIGZvciBmdXJ0aGVyIGV4cGxhbmF0aW9uIG9mCi0rICAgICAqIGtleSBzeW1ib2wsIGtleWNv ZGUgYW5kIHdoaWNoIHRvIHVzZS4KLSsgICAgICoKLSsgICAgICogUmV0dXJuczogJVRSVUUgZm9y IHN1Y2Nlc3NmdWxseSBwcm9jZXNzIHRoZSBrZXk7ICVGQUxTRSBvdGhlcndpc2UuCi0rICAgICAq IFNlZSBhbHNvOiAgaWJ1c19pbnB1dF9jb250ZXh0X3Byb2Nlc3Nfa2V5X2V2ZW50KCkuCi0rICAg ICAqCi0rICAgICAqIDxub3RlPjxwYXJhPkFyZ3VtZW50IEB1c2VyX2RhdGEgaXMgaWdub3JlZCBp biB0aGlzIGZ1bmN0aW9uLjwvcGFyYT4KLSsgICAgICogPC9ub3RlPgotKyAgICAgKi8KLSsgICAg cGFuZWxfc2lnbmFsc1tQUk9DRVNTX0tFWV9FVkVOVF0gPQotKyAgICAgICAgZ19zaWduYWxfbmV3 IChJXygicHJvY2Vzcy1rZXktZXZlbnQiKSwKLSsgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFT UyAoZ29iamVjdF9jbGFzcyksCi0rICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCi0rICAg ICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUIChJQnVzUGFuZWxTZXJ2aWNlQ2xhc3MsIHByb2Nlc3Nf a2V5X2V2ZW50KSwKLSsgICAgICAgICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRs ZWQsIE5VTEwsCi0rICAgICAgICAgICAgX2lidXNfbWFyc2hhbF9CT09MX19VSU5UX1VJTlRfVUlO VCwKLSsgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwKLSsgICAgICAgICAgICAzLAotKyAgICAg ICAgICAgIEdfVFlQRV9VSU5ULAotKyAgICAgICAgICAgIEdfVFlQRV9VSU5ULAotKyAgICAgICAg ICAgIEdfVFlQRV9VSU5UKTsKLSsKLSsgICAgLyoqCi0rICAgICAqIElCdXNQYW5lbFNlcnZpY2U6 OmNvbW1pdC10ZXh0LXJlY2VpdmVkOgotKyAgICAgKiBAcGFuZWw6IEFuICNJQnVzUGFuZWxTZXJ2 aWNlCi0rICAgICAqIEB0ZXh0OiBBICNJQnVzVGV4dAotKyAgICAgKgotKyAgICAgKiBFbWl0dGVk IHdoZW4gdGhlIGNsaWVudCBhcHBsaWNhdGlvbiBnZXQgdGhlIDo6Y29tbWl0LXRleHQtcmVjZWl2 ZWQuCi0rICAgICAqIEltcGxlbWVudCB0aGUgbWVtYmVyIGZ1bmN0aW9uCi0rICAgICAqIElCdXNQ YW5lbFNlcnZpY2VDbGFzczo6Y29tbWl0X3RleHRfcmVjZWl2ZWQgaW4gZXh0ZW5kZWQgY2xhc3Mg dG8KLSsgICAgICogcmVjZWl2ZSB0aGlzIHNpZ25hbC4KLSsgICAgICoKLSsgICAgICogPG5vdGU+ PHBhcmE+QXJndW1lbnQgQHVzZXJfZGF0YSBpcyBpZ25vcmVkIGluIHRoaXMgZnVuY3Rpb24uPC9w YXJhPgotKyAgICAgKiA8L25vdGU+Ci0rICAgICAqLwotKyAgICBwYW5lbF9zaWduYWxzW0NPTU1J VF9URVhUX1JFQ0VJVkVEXSA9Ci0rICAgICAgICBnX3NpZ25hbF9uZXcgKElfKCJjb21taXQtdGV4 dC1yZWNlaXZlZCIpLAotKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTIChnb2JqZWN0X2Ns YXNzKSwKLSsgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKLSsgICAgICAgICAgICBHX1NU UlVDVF9PRkZTRVQgKElCdXNQYW5lbFNlcnZpY2VDbGFzcywgY29tbWl0X3RleHRfcmVjZWl2ZWQp LAotKyAgICAgICAgICAgIE5VTEwsIE5VTEwsCi0rICAgICAgICAgICAgX2lidXNfbWFyc2hhbF9W T0lEX19PQkpFQ1QsCi0gICAgICAgICAgICAgR19UWVBFX05PTkUsCi0gICAgICAgICAgICAgMSwK LS0gICAgICAgICAgICBHX1RZUEVfVkFSSUFOVCk7Ci0rICAgICAgICAgICAgSUJVU19UWVBFX1RF WFQpOwotKwotKyAgICBwYW5lbF9zaWduYWxzW0NBTkRJREFURV9DTElDS0VEX0xPT0tVUF9UQUJM RV0gPQotKyAgICAgICAgZ19zaWduYWxfbmV3IChJXygiY2FuZGlkYXRlLWNsaWNrZWQtbG9va3Vw LXRhYmxlIiksCi0rICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1MgKGdvYmplY3RfY2xhc3Mp LAotKyAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAotKyAgICAgICAgICAgIEdfU1RSVUNU X09GRlNFVCAoSUJ1c1BhbmVsU2VydmljZUNsYXNzLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY2FuZGlkYXRlX2NsaWNrZWRfbG9va3VwX3RhYmxlKSwKLSsgICAgICAgICAgICBOVUxM LCBOVUxMLAotKyAgICAgICAgICAgIF9pYnVzX21hcnNoYWxfVk9JRF9fVUlOVF9VSU5UX1VJTlQs Ci0rICAgICAgICAgICAgR19UWVBFX05PTkUsCi0rICAgICAgICAgICAgMywKLSsgICAgICAgICAg ICBHX1RZUEVfVUlOVCwKLSsgICAgICAgICAgICBHX1RZUEVfVUlOVCwKLSsgICAgICAgICAgICBH X1RZUEVfVUlOVCk7Ci0gfQotIAotIHN0YXRpYyB2b2lkCi1AQCAtMTEyOSw5ICsxMjMzLDE0IEBA IGlidXNfcGFuZWxfc2VydmljZV9zZXJ2aWNlX21ldGhvZF9jYWxsIChJQnVzU2VydmljZSAgICAg ICAgICAgKnNlcnZpY2UsCi0gICAgIH0KLSAKLSAgICAgaWYgKGdfc3RyY21wMCAobWV0aG9kX25h bWUsICJQYW5lbEV4dGVuc2lvblJlY2VpdmVkIikgPT0gMCkgewotLSAgICAgICAgR1ZhcmlhbnQg KnZhcmlhbnQgPSBOVUxMOwotLSAgICAgICAgZ192YXJpYW50X2dldCAocGFyYW1ldGVycywgIih2 KSIsICZ2YXJpYW50KTsKLS0gICAgICAgIGlmICh2YXJpYW50ID09IE5VTEwpIHsKLSsgICAgICAg IEdWYXJpYW50ICphcmcwID0gTlVMTDsKLSsgICAgICAgIElCdXNFeHRlbnNpb25FdmVudCAqZXZl bnQgPSBOVUxMOwotKyAgICAgICAgZ192YXJpYW50X2dldCAocGFyYW1ldGVycywgIih2KSIsICZh cmcwKTsKLSsgICAgICAgIGlmIChhcmcwKSB7Ci0rICAgICAgICAgICAgZXZlbnQgPSBJQlVTX0VY VEVOU0lPTl9FVkVOVCAoaWJ1c19zZXJpYWxpemFibGVfZGVzZXJpYWxpemUgKGFyZzApKTsKLSsg ICAgICAgICAgICBnX3ZhcmlhbnRfdW5yZWYgKGFyZzApOwotKyAgICAgICAgfQotKyAgICAgICAg aWYgKCFldmVudCkgewotICAgICAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1 cm5fZXJyb3IgKAotICAgICAgICAgICAgICAgICAgICAgaW52b2NhdGlvbiwKLSAgICAgICAgICAg ICAgICAgICAgIEdfREJVU19FUlJPUiwKLUBAIC0xMTQwLDExICsxMjQ5LDYzIEBAIGlidXNfcGFu ZWxfc2VydmljZV9zZXJ2aWNlX21ldGhvZF9jYWxsIChJQnVzU2VydmljZSAgICAgICAgICAgKnNl cnZpY2UsCi0gICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgfQotICAgICAgICAgZ19zaWdu YWxfZW1pdCAocGFuZWwsIHBhbmVsX3NpZ25hbHNbUEFORUxfRVhURU5TSU9OX1JFQ0VJVkVEXSwg MCwKLS0gICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQpOwotLSAgICAgICAgZ192YXJpYW50 X3VucmVmICh2YXJpYW50KTsKLSsgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50KTsKLSsgICAg ICAgIF9nX29iamVjdF91bnJlZl9pZl9mbG9hdGluZyAoZXZlbnQpOwotICAgICAgICAgZ19kYnVz X21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZSAoaW52b2NhdGlvbiwgTlVMTCk7Ci0gICAg ICAgICByZXR1cm47Ci0gICAgIH0KLSsgICAgaWYgKGdfc3RyY21wMCAobWV0aG9kX25hbWUsICJQ cm9jZXNzS2V5RXZlbnQiKSA9PSAwKSB7Ci0rICAgICAgICBndWludCBrZXl2YWwsIGtleWNvZGUs IHN0YXRlOwotKyAgICAgICAgZ2Jvb2xlYW4gcmV0dmFsID0gRkFMU0U7Ci0rCi0rICAgICAgICBn X3ZhcmlhbnRfZ2V0IChwYXJhbWV0ZXJzLCAiKHV1dSkiLCAma2V5dmFsLCAma2V5Y29kZSwgJnN0 YXRlKTsKLSsgICAgICAgIGdfc2lnbmFsX2VtaXQgKHBhbmVsLAotKyAgICAgICAgICAgICAgICAg ICAgICAgcGFuZWxfc2lnbmFsc1tQUk9DRVNTX0tFWV9FVkVOVF0sCi0rICAgICAgICAgICAgICAg ICAgICAgICAwLAotKyAgICAgICAgICAgICAgICAgICAgICAga2V5dmFsLAotKyAgICAgICAgICAg ICAgICAgICAgICAga2V5Y29kZSwKLSsgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLAotKyAg ICAgICAgICAgICAgICAgICAgICAgJnJldHZhbCk7Ci0rICAgICAgICBnX2RidXNfbWV0aG9kX2lu dm9jYXRpb25fcmV0dXJuX3ZhbHVlIChpbnZvY2F0aW9uLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ192YXJpYW50X25ldyAoIihiKSIsIHJldHZhbCkp OwotKyAgICAgICAgcmV0dXJuOwotKyAgICB9Ci0rICAgIGlmIChnX3N0cmNtcDAgKG1ldGhvZF9u YW1lLCAiQ29tbWl0VGV4dFJlY2VpdmVkIikgPT0gMCkgewotKyAgICAgICAgR1ZhcmlhbnQgKmFy ZzAgPSBOVUxMOwotKyAgICAgICAgSUJ1c1RleHQgKnRleHQgPSBOVUxMOwotKwotKyAgICAgICAg Z192YXJpYW50X2dldCAocGFyYW1ldGVycywgIih2KSIsICZhcmcwKTsKLSsgICAgICAgIGlmIChh cmcwKSB7Ci0rICAgICAgICAgICAgdGV4dCA9IChJQnVzVGV4dCAqKSBpYnVzX3NlcmlhbGl6YWJs ZV9kZXNlcmlhbGl6ZSAoYXJnMCk7Ci0rICAgICAgICAgICAgZ192YXJpYW50X3VucmVmIChhcmcw KTsKLSsgICAgICAgIH0KLSsgICAgICAgIGlmICghdGV4dCkgewotKyAgICAgICAgICAgIGdfZGJ1 c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fZXJyb3IgKAotKyAgICAgICAgICAgICAgICAgICAg aW52b2NhdGlvbiwKLSsgICAgICAgICAgICAgICAgICAgIEdfREJVU19FUlJPUiwKLSsgICAgICAg ICAgICAgICAgICAgIEdfREJVU19FUlJPUl9GQUlMRUQsCi0rICAgICAgICAgICAgICAgICAgICAi Q29tbWl0VGV4dFJlY2VpdmVkIG1ldGhvZCBnaXZlcyBOVUxMIik7Ci0rICAgICAgICAgICAgcmV0 dXJuOwotKyAgICAgICAgfQotKyAgICAgICAgZ19zaWduYWxfZW1pdCAocGFuZWwsCi0rICAgICAg ICAgICAgICAgICAgICAgICBwYW5lbF9zaWduYWxzW0NPTU1JVF9URVhUX1JFQ0VJVkVEXSwKLSsg ICAgICAgICAgICAgICAgICAgICAgIDAsCi0rICAgICAgICAgICAgICAgICAgICAgICB0ZXh0KTsK LSsgICAgICAgIF9nX29iamVjdF91bnJlZl9pZl9mbG9hdGluZyAodGV4dCk7Ci0rICAgICAgICBy ZXR1cm47Ci0rICAgIH0KLSsgICAgaWYgKGdfc3RyY21wMCAobWV0aG9kX25hbWUsICJDYW5kaWRh dGVDbGlja2VkTG9va3VwVGFibGUiKSA9PSAwKSB7Ci0rICAgICAgICBndWludCBpbmRleCA9IDA7 Ci0rICAgICAgICBndWludCBidXR0b24gPSAwOwotKyAgICAgICAgZ3VpbnQgc3RhdGUgPSAwOwot KyAgICAgICAgZ192YXJpYW50X2dldCAocGFyYW1ldGVycywgIih1dXUpIiwgJmluZGV4LCAmYnV0 dG9uLCAmc3RhdGUpOwotKyAgICAgICAgZ19zaWduYWxfZW1pdCAocGFuZWwsCi0rICAgICAgICAg ICAgICAgICAgICAgICBwYW5lbF9zaWduYWxzW0NBTkRJREFURV9DTElDS0VEX0xPT0tVUF9UQUJM RV0sCi0rICAgICAgICAgICAgICAgICAgICAgICAwLAotKyAgICAgICAgICAgICAgICAgICAgICAg aW5kZXgsIGJ1dHRvbiwgc3RhdGUpOwotKyAgICAgICAgcmV0dXJuOwotKyAgICB9Ci0rCi0gCi0g ICAgIGNvbnN0IHN0YXRpYyBzdHJ1Y3QgewotICAgICAgICAgY29uc3QgZ2NoYXIgKm5hbWU7Ci1A QCAtMTMxOCw4ICsxNDc5LDggQEAgaWJ1c19wYW5lbF9zZXJ2aWNlX3NldF9jb250ZW50X3R5cGUg KElCdXNQYW5lbFNlcnZpY2UgKnBhbmVsLAotIH0KLSAKLSBzdGF0aWMgdm9pZAotLWlidXNfcGFu ZWxfc2VydmljZV9wYW5lbF9leHRlbnNpb25fcmVjZWl2ZWQgKElCdXNQYW5lbFNlcnZpY2UgKnBh bmVsLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJp YW50ICAgICAgICAgKmRhdGEpCi0raWJ1c19wYW5lbF9zZXJ2aWNlX3BhbmVsX2V4dGVuc2lvbl9y ZWNlaXZlZCAoSUJ1c1BhbmVsU2VydmljZSAgICpwYW5lbCwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzRXh0ZW5zaW9uRXZlbnQgKmV2ZW50KQotIHsK LSAgICAgaWJ1c19wYW5lbF9zZXJ2aWNlX25vdF9pbXBsZW1lbnRlZChwYW5lbCk7Ci0gfQotQEAg LTEzOTYsMTAgKzE1NTcsMTEgQEAgdm9pZAotIGlidXNfcGFuZWxfc2VydmljZV9jb21taXRfdGV4 dCAoSUJ1c1BhbmVsU2VydmljZSAqcGFuZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJQnVzVGV4dCAgICAgICAgICp0ZXh0KQotIHsKLSsgICAgR1ZhcmlhbnQgKnZhcmlhbnQ7 Ci0gICAgIGdfcmV0dXJuX2lmX2ZhaWwgKElCVVNfSVNfUEFORUxfU0VSVklDRSAocGFuZWwpKTsK LSAgICAgZ19yZXR1cm5faWZfZmFpbCAoSUJVU19JU19URVhUICh0ZXh0KSk7Ci0gCi0tICAgIEdW YXJpYW50ICp2YXJpYW50ID0gaWJ1c19zZXJpYWxpemFibGVfc2VyaWFsaXplICgoSUJ1c1Nlcmlh bGl6YWJsZSAqKXRleHQpOwotKyAgICB2YXJpYW50ID0gaWJ1c19zZXJpYWxpemFibGVfc2VyaWFs aXplICgoSUJ1c1NlcmlhbGl6YWJsZSAqKXRleHQpOwotICAgICBpYnVzX3NlcnZpY2VfZW1pdF9z aWduYWwgKChJQnVzU2VydmljZSAqKSBwYW5lbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCVVNfSU5URVJGQUNF X1BBTkVMLAotQEAgLTE0MTMsMTggKzE1NzUsMTQ0IEBAIGlidXNfcGFuZWxfc2VydmljZV9jb21t aXRfdGV4dCAoSUJ1c1BhbmVsU2VydmljZSAqcGFuZWwsCi0gfQotIAotIHZvaWQKLS1pYnVzX3Bh bmVsX3NlcnZpY2VfcGFuZWxfZXh0ZW5zaW9uIChJQnVzUGFuZWxTZXJ2aWNlICpwYW5lbCwKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVmFyaWFudCAgICAgICAgICp2YXJp YW50KQotK2lidXNfcGFuZWxfc2VydmljZV9wYW5lbF9leHRlbnNpb24gKElCdXNQYW5lbFNlcnZp Y2UgICAqcGFuZWwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c0V4 dGVuc2lvbkV2ZW50ICpldmVudCkKLSB7Ci0rICAgIEdWYXJpYW50ICp2YXJpYW50OwotICAgICBn X3JldHVybl9pZl9mYWlsIChJQlVTX0lTX1BBTkVMX1NFUlZJQ0UgKHBhbmVsKSk7Ci0tICAgIGdf cmV0dXJuX2lmX2ZhaWwgKHZhcmlhbnQpOwotKyAgICBnX3JldHVybl9pZl9mYWlsIChJQlVTX0lT X0VYVEVOU0lPTl9FVkVOVCAoZXZlbnQpKTsKLSAKLSsgICAgdmFyaWFudCA9IGlidXNfc2VyaWFs aXphYmxlX3NlcmlhbGl6ZSAoKElCdXNTZXJpYWxpemFibGUgKilldmVudCk7Ci0gICAgIGlidXNf c2VydmljZV9lbWl0X3NpZ25hbCAoKElCdXNTZXJ2aWNlICopIHBhbmVsLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg SUJVU19JTlRFUkZBQ0VfUEFORUwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBh bmVsRXh0ZW5zaW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3ZhcmlhbnRf bmV3ICgiKHYpIiwgdmFyaWFudCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVM TCk7Ci0rCi0rICAgIGlmIChnX29iamVjdF9pc19mbG9hdGluZyAoZXZlbnQpKSB7Ci0rICAgICAg ICBnX29iamVjdF91bnJlZiAoZXZlbnQpOwotKyAgICB9Ci0rfQotKwotK3ZvaWQKLStpYnVzX3Bh bmVsX3NlcnZpY2VfcGFuZWxfZXh0ZW5zaW9uX3JlZ2lzdGVyX2tleXMgKElCdXNQYW5lbFNlcnZp Y2UgICAqcGFuZWwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBnY2hhcgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKmZpcnN0X3Byb3BlcnR5X25hbWUsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pCi0rewotKyAgICBH VmFyaWFudEJ1aWxkZXIgYnVpbGRlcjsKLSsgICAgR1ZhcmlhbnRCdWlsZGVyIGNoaWxkOwotKyAg ICBjb25zdCBnY2hhciAqbmFtZTsKLSsgICAgdmFfbGlzdCB2YXJfYXJnczsKLSsgICAgSUJ1c1By b2Nlc3NLZXlFdmVudERhdGEgKmtleXM7Ci0rCi0rICAgIGdfcmV0dXJuX2lmX2ZhaWwgKGZpcnN0 X3Byb3BlcnR5X25hbWUpOwotKwotKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9pbml0ICgmYnVpbGRl ciwgR19WQVJJQU5UX1RZUEUgKCJhe3N2fSIpKTsKLSsgICAgbmFtZSA9IGZpcnN0X3Byb3BlcnR5 X25hbWU7Ci0rCi0rICAgIHZhX3N0YXJ0ICh2YXJfYXJncywgZmlyc3RfcHJvcGVydHlfbmFtZSk7 Ci0rICAgIGRvIHsKLSsgICAgICAgIGtleXMgPSB2YV9hcmcgKHZhcl9hcmdzLCBJQnVzUHJvY2Vz c0tleUV2ZW50RGF0YSAqKTsKLSsgICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwgKGtleXMgIT0gTlVM TCk7Ci0rICAgICAgICBnX3ZhcmlhbnRfYnVpbGRlcl9pbml0ICgmY2hpbGQsIEdfVkFSSUFOVF9U WVBFICgiYXYiKSk7Ci0rICAgICAgICBmb3IgKDsga2V5czsga2V5cysrKSB7Ci0rICAgICAgICAg ICAgaWYgKGtleXMtPmtleXZhbCA9PSAwICYmIGtleXMtPmtleWNvZGUgPT0gMCAmJiBrZXlzLT5z dGF0ZSA9PSAwKQotKyAgICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgICBnX3Zhcmlh bnRfYnVpbGRlcl9hZGQgKCZjaGlsZCwgInYiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZ192YXJpYW50X25ldyAoIihpaWkpIiwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXMtPmtleXZhbCwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXMtPmtleWNvZGUsIAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5cy0+c3Rh dGUpKTsKLSsgICAgICAgIH0KLSsgICAgICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZCAoJmJ1aWxk ZXIsICJ7c3Z9IiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19zdHJkdXAgKG5h bWUpLCBnX3ZhcmlhbnRfYnVpbGRlcl9lbmQgKCZjaGlsZCkpOwotKyAgICB9IHdoaWxlICgobmFt ZSA9IHZhX2FyZyAodmFyX2FyZ3MsIGNvbnN0IGdjaGFyICopKSk7Ci0rICAgIHZhX2VuZCAodmFy X2FyZ3MpOwotKwotKyAgICBpYnVzX3NlcnZpY2VfZW1pdF9zaWduYWwgKChJQnVzU2VydmljZSAq KSBwYW5lbCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIElCVVNfSU5URVJGQUNFX1BBTkVMLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJQYW5lbEV4dGVuc2lvblJlZ2lzdGVyS2V5cyIsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ192YXJpYW50X25ldyAoIih2KSIsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ192YXJpYW50X2J1aWxkZXJfZW5k ICgmYnVpbGRlcikpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotK30K LSsKLSt2b2lkCi0raWJ1c19wYW5lbF9zZXJ2aWNlX3VwZGF0ZV9wcmVlZGl0X3RleHRfcmVjZWl2 ZWQgKElCdXNQYW5lbFNlcnZpY2UgKnBhbmVsLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBJQnVzVGV4dCAgICAgICAgICp0ZXh0LAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAg ICBjdXJzb3JfcG9zLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBnYm9vbGVhbiAgICAgICAgICB2aXNpYmxlKQotK3sKLSsgICAgR1ZhcmlhbnQgKnZh cmlhbnQ7Ci0rCi0rICAgIGdfcmV0dXJuX2lmX2ZhaWwgKElCVVNfSVNfUEFORUxfU0VSVklDRSAo cGFuZWwpKTsKLSsgICAgZ19yZXR1cm5faWZfZmFpbCAoSUJVU19JU19URVhUICh0ZXh0KSk7Ci0r Ci0rICAgIHZhcmlhbnQgPSBpYnVzX3NlcmlhbGl6YWJsZV9zZXJpYWxpemUgKChJQnVzU2VyaWFs aXphYmxlICopdGV4dCk7Ci0rICAgIGdfcmV0dXJuX2lmX2ZhaWwgKHZhcmlhbnQpOwotKyAgICBp YnVzX3NlcnZpY2VfZW1pdF9zaWduYWwgKChJQnVzU2VydmljZSAqKSBwYW5lbCwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIElCVVNfSU5URVJGQUNFX1BBTkVMLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJVcGRhdGVQcmVlZGl0VGV4dFJlY2VpdmVkIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBnX3ZhcmlhbnRfbmV3ICgiKHZ1YikiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHZhcmlhbnQsIGN1cnNvcl9wb3MsIHZpc2libGUpLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotKwotKyAgICBpZiAoZ19vYmplY3RfaXNf ZmxvYXRpbmcgKHRleHQpKSB7Ci0rICAgICAgICBnX29iamVjdF91bnJlZiAodGV4dCk7Ci0rICAg IH0KLSt9Ci0rCi0rdm9pZAotK2lidXNfcGFuZWxfc2VydmljZV91cGRhdGVfYXV4aWxpYXJ5X3Rl eHRfcmVjZWl2ZWQgKElCdXNQYW5lbFNlcnZpY2UgKnBhbmVsLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCdXNUZXh0ICAgICAgICAgKnRleHQs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jv b2xlYW4gICAgICAgICAgdmlzaWJsZSkKLSt7Ci0rICAgIEdWYXJpYW50ICp2YXJpYW50OwotKyAg ICBnX3JldHVybl9pZl9mYWlsIChJQlVTX0lTX1BBTkVMX1NFUlZJQ0UgKHBhbmVsKSk7Ci0rICAg IGdfcmV0dXJuX2lmX2ZhaWwgKElCVVNfSVNfVEVYVCAodGV4dCkpOwotKwotKyAgICB2YXJpYW50 ID0gaWJ1c19zZXJpYWxpemFibGVfc2VyaWFsaXplICgoSUJ1c1NlcmlhbGl6YWJsZSAqKXRleHQp OwotKyAgICBnX3JldHVybl9pZl9mYWlsICh2YXJpYW50KTsKLSsgICAgaWJ1c19zZXJ2aWNlX2Vt aXRfc2lnbmFsICgoSUJ1c1NlcnZpY2UgKikgcGFuZWwsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTlVMTCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQlVTX0lOVEVS RkFDRV9QQU5FTCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVXBkYXRlQXV4aWxp YXJ5VGV4dFJlY2VpdmVkIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3Zhcmlh bnRfbmV3ICgiKHZiKSIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdmFyaWFudCwgdmlzaWJsZSksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TlVMTCk7Ci0rCi0rICAgIGlmIChnX29iamVjdF9pc19mbG9hdGluZyAodGV4dCkpIHsKLSsgICAg ICAgIGdfb2JqZWN0X3VucmVmICh0ZXh0KTsKLSsgICAgfQotK30KLSsKLSt2b2lkCi0raWJ1c19w YW5lbF9zZXJ2aWNlX3VwZGF0ZV9sb29rdXBfdGFibGVfcmVjZWl2ZWQgKElCdXNQYW5lbFNlcnZp Y2UgKnBhbmVsLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJQnVzTG9va3VwVGFibGUgICp0YWJsZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgICAgdmlzaWJsZSkKLSt7Ci0r ICAgIEdWYXJpYW50ICp2YXJpYW50OwotKwotKyAgICBnX3JldHVybl9pZl9mYWlsIChJQlVTX0lT X1BBTkVMX1NFUlZJQ0UgKHBhbmVsKSk7Ci0rICAgIGdfcmV0dXJuX2lmX2ZhaWwgKElCVVNfSVNf TE9PS1VQX1RBQkxFICh0YWJsZSkpOwotKwotKyAgICB2YXJpYW50ID0gaWJ1c19zZXJpYWxpemFi bGVfc2VyaWFsaXplICgoSUJ1c1NlcmlhbGl6YWJsZSAqKXRhYmxlKTsKLSsgICAgZ19yZXR1cm5f aWZfZmFpbCAodmFyaWFudCk7Ci0rICAgIGlidXNfc2VydmljZV9lbWl0X3NpZ25hbCAoKElCdXNT ZXJ2aWNlICopIHBhbmVsLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJVU19JTlRFUkZBQ0VfUEFORUwsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVwZGF0ZUxvb2t1cFRhYmxlUmVjZWl2ZWQiLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfdmFyaWFudF9uZXcgKCIodmIpIiwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50LCB2aXNp YmxlKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSsKLSsgICAgaWYg KGdfb2JqZWN0X2lzX2Zsb2F0aW5nICh0YWJsZSkpIHsKLSsgICAgICAgIGdfb2JqZWN0X3VucmVm ICh0YWJsZSk7Ci0rICAgIH0KLSB9Ci0gCi0gI2RlZmluZSBERUZJTkVfRlVOQyhuYW1lLCBOYW1l KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotZGlmZiAtLWdpdCBhL3NyYy9pYnVzcGFu ZWxzZXJ2aWNlLmggYi9zcmMvaWJ1c3BhbmVsc2VydmljZS5oCi1pbmRleCA2MGVmODQyYi4uZDkx ZjIzMDkgMTAwNjQ0Ci0tLS0gYS9zcmMvaWJ1c3BhbmVsc2VydmljZS5oCi0rKysgYi9zcmMvaWJ1 c3BhbmVsc2VydmljZS5oCi1AQCAtMzgsNiArMzgsNyBAQAotICNpbmNsdWRlICJpYnVzbG9va3Vw dGFibGUuaCIKLSAjaW5jbHVkZSAiaWJ1c3NlcnZpY2UuaCIKLSAjaW5jbHVkZSAiaWJ1c3Byb3Bs aXN0LmgiCi0rI2luY2x1ZGUgImlidXN4ZXZlbnQuaCIKLSAKLSAvKgotICAqIFR5cGUgbWFjcm9z LgotQEAgLTEzMCwxMSArMTMxLDI0IEBAIHN0cnVjdCBfSUJ1c1BhbmVsU2VydmljZUNsYXNzIHsK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgICAgICAg ICAgICAgICAgICAgIGgpOwotICAgICB2b2lkICAgICAoKiBwYW5lbF9leHRlbnNpb25fcmVjZWl2 ZWQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJQnVzUGFu ZWxTZXJ2aWNlICAgICAgICpwYW5lbCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEdWYXJpYW50ICAgICAgICAgICAgICAgKmRhdGEpOwotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c0V4dGVuc2lvbkV2ZW50ICAgICAq ZXZlbnQpOwotKyAgICBnYm9vbGVhbiAoKiBwcm9jZXNzX2tleV9ldmVudCkKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKElCdXNQYW5lbFNlcnZpY2UgICAgICAg KnBhbmVsLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Vp bnQgICAgICAgICAgICAgICAgICAga2V5dmFsLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICAgICAga2V5Y29kZSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAg ICAgICAgIHN0YXRlKTsKLSsgICAgdm9pZCAgICAgKCogY29tbWl0X3RleHRfcmVjZWl2ZWQpCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJQnVzUGFuZWxTZXJ2 aWNlICAgICAgICpwYW5lbCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIElCdXNUZXh0ICAgICAgICAgICAgICAgKnRleHQpOwotKyAgICB2b2lkICAgICAoKiBj YW5kaWRhdGVfY2xpY2tlZF9sb29rdXBfdGFibGUpCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChJQnVzUGFuZWxTZXJ2aWNlICAgICAgICpwYW5lbCwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAg ICAgICAgIGluZGV4LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ3VpbnQgICAgICAgICAgICAgICAgICAgYnV0dG9uLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICAgICAgc3RhdGUpOwot IAotICAgICAvKjwgcHJpdmF0ZSA+Ki8KLSAgICAgLyogcGFkZGluZyAqLwotLSAgICBncG9pbnRl ciBwZHVtbXlbNV07ICAvLyBXZSBjYW4gYWRkIDggcG9pbnRlcnMgd2l0aG91dCBicmVha2luZyB0 aGUgQUJJLgotKyAgICBncG9pbnRlciBwZHVtbXlbMl07ICAvLyBXZSBjYW4gYWRkIDggcG9pbnRl cnMgd2l0aG91dCBicmVha2luZyB0aGUgQUJJLgotIH07Ci0gCi0gR1R5cGUgICAgICAgICAgICBp YnVzX3BhbmVsX3NlcnZpY2VfZ2V0X3R5cGUgICh2b2lkKTsKLUBAIC0yNDgsMTIgKzI2MiwxMDUg QEAgdm9pZCBpYnVzX3BhbmVsX3NlcnZpY2VfY29tbWl0X3RleHQgICAgICAgKElCdXNQYW5lbFNl cnZpY2UgKnBhbmVsLAotIC8qKgotICAqIGlidXNfcGFuZWxfc2VydmljZV9wYW5lbF9leHRlbnNp b246Ci0gICogQHBhbmVsOiBBbiAjSUJ1c1BhbmVsU2VydmljZQotLSAqIEBkYXRhOiAodHJhbnNm ZXIgZnVsbCk6IEEgI0dWYXJpYW50IGRhdGEgd2hpY2ggaXMgc2VudCB0byBhIHBhbmVsIGV4dGVu c2lvbi4gCi0rICogQGV2ZW50OiAodHJhbnNmZXIgZnVsbCk6IEEgI1BhbmVsRXh0ZW5zaW9uRXZl bnQgd2hpY2ggaXMgc2VudCB0byBhCi0rICogICAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVs IGV4dGVuc2lvbi4gCi0gICoKLSsgKiBFbmFibGUgb3IgZGlzYWJsZSBhIHBhbmVsIGV4dGVuc2lv biB3aXRoICNJQnVzRXh0ZW5zaW9uRXZlbnQuCi0gICogTm90aWZ5IHRoYXQgYSBkYXRhIGlzIHNl bnQKLSAgKiBieSBzZW5kaW5nIGEgIlBhbmVsRXh0ZW5zaW9uIiBtZXNzYWdlIHRvIElCdXMgcGFu ZWwgZXh0ZW5zaW9uIHNlcnZpY2UuCi0gICovCi0tdm9pZCBpYnVzX3BhbmVsX3NlcnZpY2VfcGFu ZWxfZXh0ZW5zaW9uICAgKElCdXNQYW5lbFNlcnZpY2UgKnBhbmVsLAotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVmFyaWFudCAgICAgICAgICpkYXRhKTsKLSt2 b2lkIGlidXNfcGFuZWxfc2VydmljZV9wYW5lbF9leHRlbnNpb24gICAoSUJ1c1BhbmVsU2Vydmlj ZSAgICpwYW5lbCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg SUJ1c0V4dGVuc2lvbkV2ZW50ICpldmVudCk7Ci0rCi0rLyoqCi0rICogaWJ1c19wYW5lbF9zZXJ2 aWNlX3BhbmVsX2V4dGVuc2lvbl9yZWdpc3Rlcl9rZXlzOgotKyAqIEBwYW5lbDogQW4gI0lCdXNQ YW5lbFNlcnZpY2UKLSsgKiBAZmlyc3RfcHJvcGVydHlfbmFtZTogdGhlIGZpcnN0IG5hbWUgb2Yg dGhlIHNob3J0Y3V0IGtleXMuIFRoaXMgaXMgJU5VTEwKLSsgIiB0ZXJtaW5hdGVkLgotKyAqCi0r ICogUmVnaXN0ZXIgc2hvcnRjdXQga2V5cyB0byBlbmFibGUgcGFuZWwgZXh0ZW5zaW9ucyB3aXRo ICNJQnVzRXh0ZW5zaW9uRXZlbnQuCi0rICogTm90aWZ5IHRoYXQgYSBkYXRhIGlzIHNlbnQKLSsg KiBieSBzZW5kaW5nIGEgIlBhbmVsRXh0ZW5zaW9uUmVnaXN0ZXJLZXlzIiBtZXNzYWdlIHRvIElC dXMgcGFuZWwgZXh0ZW5zaW9uCi0rICogc2VydmljZS4gU2VlbXMgVmFsYSBkb2VzIG5vdCBzdXBw b3J0IHVpbnRbXVszXSBhbmQgdXNlCi0rICogSUJ1c1Byb2Nlc3NLZXlFdmVudERhdGFbXS4gRS5n LgotKyAqIElCdXNQcm9jZXNzS2V5RXZlbnREYXRhW10ga2V5cyA9IHt7Ci0rICogICAgICAgICBJ QlVTX0tFWV9lLCAwLCBJQlVTX1NISUZUX01BU0sgfCBJQlVTX1NVUEVSX01BU0sgfX07Ci0rICog aWJ1c19wYW5lbF9zZXJ2aWNlX3BhbmVsX2V4dGVuc2lvbl9yZWdpc3Rlcl9rZXlzKHBhbmVsLCAi ZW1vamkiLCBrZXlzLCBOVUxMKTsKLSsgKi8KLSt2b2lkIGlidXNfcGFuZWxfc2VydmljZV9wYW5l bF9leHRlbnNpb25fcmVnaXN0ZXJfa2V5cwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoSUJ1c1BhbmVsU2VydmljZSAgKnBhbmVsLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgKmZpcnN0X3By b3BlcnR5X25hbWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAuLi4pOwotKwotKy8qKgotKyAqIGlidXNfcGFuZWxfc2VydmljZV91cGRhdGVfcHJlZWRpdF90 ZXh0X3JlY2VpdmVkOgotKyAqIEBwYW5lbDogQW4gI0lCdXNQYW5lbFNlcnZpY2UKLSsgKiBAdGV4 dDogVXBkYXRlIGNvbnRlbnQuCi0rICogQGN1cnNvcl9wb3M6IEN1cnJlbnQgcG9zaXRpb24gb2Yg Y3Vyc29yCi0rICogQHZpc2libGU6IFdoZXRoZXIgdGhlIHByZS1lZGl0IGJ1ZmZlciBpcyB2aXNp YmxlLgotKyAqCi0rICogTm90aWZ5IHRoYXQgdGhlIHByZWVkaXQgaXMgdXBkYXRlZCBieSB0aGUg cGFuZWwgZXh0ZW5zaW9uCi0rICoKLSsgKiAoTm90ZTogVGhlIHRhYmxlIG9iamVjdCB3aWxsIGJl IHJlbGVhc2VkLCBpZiBpdCBpcyBmbG9hdGluZy4KLSsgKiAgSWYgY2FsbGVyIHdhbnQgdG8ga2Vl cCB0aGUgb2JqZWN0LCBjYWxsZXIgc2hvdWxkIG1ha2UgdGhlIG9iamVjdAotKyAqICBzaW5rIGJ5 IGdfb2JqZWN0X3JlZl9zaW5rLikKLSsgKi8KLSt2b2lkIGlidXNfcGFuZWxfc2VydmljZV91cGRh dGVfcHJlZWRpdF90ZXh0X3JlY2VpdmVkCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKElCdXNQYW5lbFNlcnZpY2UgKnBhbmVsLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzVGV4dCAgICAgICAgICp0ZXh0LAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICBj dXJzb3JfcG9zLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn Ym9vbGVhbiAgICAgICAgICB2aXNpYmxlKTsKLSsKLSsvKioKLSsgKiBpYnVzX3BhbmVsX3NlcnZp Y2Vfc2hvd19wcmVlZGl0X3RleHRfcmVjZWl2ZWQ6Ci0rICogQHBhbmVsOiBBbiBJQnVzUGFuZWxT ZXJ2aWNlCi0rICoKLSsgKiBOb3RpZnkgdGhhdCB0aGUgcHJlZWRpdCBpcyBzaG93biBieSB0aGUg cGFuZWwgZXh0ZW5zaW9uCi0rICovCi0rdm9pZCBpYnVzX3BhbmVsX3NlcnZpY2Vfc2hvd19wcmVl ZGl0X3RleHRfcmVjZWl2ZWQKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoSUJ1c1BhbmVsU2VydmljZSAqcGFuZWwpOwotKwotKy8qKgotKyAqIGlidXNfcGFuZWxf c2VydmljZV9oaWRlX3ByZWVkaXRfdGV4dF9yZWNlaXZlZDoKLSsgKiBAcGFuZWw6IEFuIElCdXNQ YW5lbFNlcnZpY2UKLSsgKgotKyAqIE5vdGlmeSB0aGF0IHRoZSBwcmVlZGl0IGlzIGhpZGRlbiBi eSB0aGUgcGFuZWwgZXh0ZW5zaW9uCi0rICovCi0rdm9pZCBpYnVzX3BhbmVsX3NlcnZpY2VfaGlk ZV9wcmVlZGl0X3RleHRfcmVjZWl2ZWQKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoSUJ1c1BhbmVsU2VydmljZSAqcGFuZWwpOwotKwotKy8qKgotKyAqIGlidXNf cGFuZWxfc2VydmljZV91cGRhdGVfYXV4aWxpYXJ5X3RleHRfcmVjZWl2ZWQ6Ci0rICogQHBhbmVs OiBBbiAjSUJ1c1BhbmVsU2VydmljZQotKyAqIEB0ZXh0OiBBbiAjSUJ1c1RleHQKLSsgKiBAdmlz aWJsZTogV2hldGhlciB0aGUgYXV4aWxpcmFyeSB0ZXh0IGlzIHZpc2libGUuCi0rICoKLSsgKiBO b3RpZnkgdGhhdCB0aGUgYXV4aWxpcmFyeSBpcyB1cGRhdGVkIGJ5IHRoZSBwYW5lbCBleHRlbnNp b24uCi0rICoKLSsgKiAoTm90ZTogVGhlIHRhYmxlIG9iamVjdCB3aWxsIGJlIHJlbGVhc2VkLCBp ZiBpdCBpcyBmbG9hdGluZy4KLSsgKiAgSWYgY2FsbGVyIHdhbnQgdG8ga2VlcCB0aGUgb2JqZWN0 LCBjYWxsZXIgc2hvdWxkIG1ha2UgdGhlIG9iamVjdAotKyAqICBzaW5rIGJ5IGdfb2JqZWN0X3Jl Zl9zaW5rLikKLSsgKi8KLSt2b2lkIGlidXNfcGFuZWxfc2VydmljZV91cGRhdGVfYXV4aWxpYXJ5 X3RleHRfcmVjZWl2ZWQKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoSUJ1c1BhbmVsU2VydmljZSAqcGFuZWwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIElCdXNUZXh0ICAgICAgICAgKnRleHQsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICAgIHZpc2libGUpOwot KwotKy8qKgotKyAqIGlidXNfcGFuZWxfc2VydmljZV91cGRhdGVfbG9va3VwX3RhYmxlX3JlY2Vp dmVkOgotKyAqIEBwYW5lbDogQW4gI0lCdXNQYW5lbFNlcnZpY2UKLSsgKiBAdGFibGU6IEFuICNJ QnVzTG9va3VwVGFibGUKLSsgKiBAdmlzaWJsZTogV2hldGhlciB0aGUgbG9va3VwIHRhYmxlIGlz IHZpc2libGUuCi0rICoKLSsgKiBOb3RpZnkgdGhhdCB0aGUgbG9va3VwIHRhYmxlIGlzIHVwZGF0 ZWQgYnkgdGhlIHBhbmVsIGV4dGVuc2lvbi4KLSsgKgotKyAqIChOb3RlOiBUaGUgdGFibGUgb2Jq ZWN0IHdpbGwgYmUgcmVsZWFzZWQsIGlmIGl0IGlzIGZsb2F0aW5nLgotKyAqICBJZiBjYWxsZXIg d2FudCB0byBrZWVwIHRoZSBvYmplY3QsIGNhbGxlciBzaG91bGQgbWFrZSB0aGUgb2JqZWN0Ci0r ICogIHNpbmsgYnkgZ19vYmplY3RfcmVmX3NpbmsuKQotKyAqLwotK3ZvaWQgaWJ1c19wYW5lbF9z ZXJ2aWNlX3VwZGF0ZV9sb29rdXBfdGFibGVfcmVjZWl2ZWQKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoSUJ1c1BhbmVsU2VydmljZSAqcGFuZWwsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCdXNMb29rdXBUYWJsZSAgKnRh YmxlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVh biAgICAgICAgICB2aXNpYmxlKTsKLSBHX0VORF9ERUNMUwotICNlbmRpZgotZGlmZiAtLWdpdCBh L3NyYy9pYnVzc2hhcmUuaCBiL3NyYy9pYnVzc2hhcmUuaAotaW5kZXggNzU3ZDkxNWIuLjRmNWEz MDZiIDEwMDY0NAotLS0tIGEvc3JjL2lidXNzaGFyZS5oCi0rKysgYi9zcmMvaWJ1c3NoYXJlLmgK LUBAIC03Myw2ICs3MywxNSBAQAotICAqLwotICNkZWZpbmUgSUJVU19TRVJWSUNFX1BBTkVMX0VY VEVOU0lPTiAib3JnLmZyZWVkZXNrdG9wLklCdXMuUGFuZWwuRXh0ZW5zaW9uIgotIAotKy8qKgot KyAqIElCVVNfU0VSVklDRV9QQU5FTF9FWFRFTlNJT05fRU1PSkk6Ci0rICoKLSsgKiBBZGRyZXNz IG9mIElCdXMgcGFuZWwgZXh0ZW5zaW9uIHNlcnZpY2UgZm9yIGVtb2ppLgotKyAqIFRoaXMgc2Vy dmljZSBwcm92aWRlcyBlbW9qaSwgVW5pY29kZSBjb2RlIHBvaW50LCBVbmljb2RlIG5hbWUgZmVh dHVyZXMuCi0rICovCi0rI2RlZmluZSBJQlVTX1NFUlZJQ0VfUEFORUxfRVhURU5TSU9OX0VNT0pJ IFwKLSsgICAgICAgICJvcmcuZnJlZWRlc2t0b3AuSUJ1cy5QYW5lbC5FeHRlbnNpb24uRW1vamki Ci0rCi0gLyoqCi0gICogSUJVU19TRVJWSUNFX0NPTkZJRzoKLSAgKgotQEAgLTEwOSwxMSArMTE4 LDEzIEBACi0gI2RlZmluZSBJQlVTX1BBVEhfUEFORUwgICAgICAgICAiL29yZy9mcmVlZGVza3Rv cC9JQnVzL1BhbmVsIgotIAotIC8qKgotLSAqIElCVVNfUEFUSF9QQU5FTF9FWFRFTlNJT046Ci0r ICogSUJVU19QQVRIX1BBTkVMX0VYVEVOU0lPTl9FTU9KSToKLSAgKgotLSAqIEQtQnVzIHBhdGgg Zm9yIElCdXMgcGFuZWwuCi0rICogRC1CdXMgcGF0aCBmb3IgSUJ1cyBleHRlbnNpb24gcGFuZWwg Zm9yIGVtb2ppLgotKyAqIFRoaXMgc2VydmljZSBwcm92aWRlcyBlbW9qaSwgVW5pY29kZSBjb2Rl IHBvaW50LCBVbmljb2RlIG5hbWUgZmVhdHVyZXMuCi0gICovCi0tI2RlZmluZSBJQlVTX1BBVEhf UEFORUxfRVhURU5TSU9OICIvb3JnL2ZyZWVkZXNrdG9wL0lCdXMvUGFuZWwvRXh0ZW5zaW9uIgot KyNkZWZpbmUgSUJVU19QQVRIX1BBTkVMX0VYVEVOU0lPTl9FTU9KSSBcCi0rICAgICAgICAiL29y Zy9mcmVlZGVza3RvcC9JQnVzL1BhbmVsL0V4dGVuc2lvbi9FbW9qaSIKLSAKLSAvKioKLSAgKiBJ QlVTX1BBVEhfQ09ORklHOgotZGlmZiAtLWdpdCBhL3NyYy9pYnVzeGV2ZW50LmMgYi9zcmMvaWJ1 c3hldmVudC5jCi1pbmRleCBkZWE4MDI3Mi4uMjg3YmI5OWIgMTAwNjQ0Ci0tLS0gYS9zcmMvaWJ1 c3hldmVudC5jCi0rKysgYi9zcmMvaWJ1c3hldmVudC5jCi1AQCAtMjIsMTMgKzIyLDIzIEBACi0g I2luY2x1ZGUgImlidXNpbnRlcm5hbC5oIgotICNpbmNsdWRlICJpYnVzeGV2ZW50LmgiCi0gCi0r I2RlZmluZSBJQlVTX0VYVEVOU0lPTl9FVkVOVF9WRVJTSU9OIDEKLSsjZGVmaW5lIElCVVNfRVhU RU5TSU9OX0VWRU5UX0dFVF9QUklWQVRFKG8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0rICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSAoKG8pLCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElC VVNfVFlQRV9FWFRFTlNJT05fRVZFTlQsICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBJQnVzRXh0ZW5zaW9uRXZlbnRQcml2YXRlKSkKLSsKLSAjZGVmaW5l IElCVVNfWF9FVkVOVF9WRVJTSU9OIDEKLS0jZGVmaW5lIElCVVNfWF9FVkVOVF9HRVRfUFJJVkFU RShvKSAgXAotKyNkZWZpbmUgSUJVU19YX0VWRU5UX0dFVF9QUklWQVRFKG8pICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklW QVRFICgobyksIElCVVNfVFlQRV9YX0VWRU5ULCBJQnVzWEV2ZW50UHJpdmF0ZSkpCi0gCi0gZW51 bSB7Ci0gICAgIFBST1BfMCwKLSAgICAgUFJPUF9WRVJTSU9OLAotKyAgICBQUk9QX05BTUUsCi0r ICAgIFBST1BfSVNfRU5BQkxFRCwKLSsgICAgUFJPUF9JU19FWFRFTlNJT04sCi0rICAgIFBST1Bf UEFSQU1TLAotICAgICBQUk9QX0VWRU5UX1RZUEUsCi0gICAgIFBST1BfV0lORE9XLAotICAgICBQ Uk9QX1NFTkRfRVZFTlQsCi1AQCAtNTIsNiArNjIsMTQgQEAgZW51bSB7Ci0gfTsKLSAKLSAKLStz dHJ1Y3QgX0lCdXNFeHRlbnNpb25FdmVudFByaXZhdGUgewotKyAgICBndWludCAgICAgdmVyc2lv bjsKLSsgICAgZ2NoYXIgICAgKm5hbWU7Ci0rICAgIGdib29sZWFuICBpc19lbmFibGVkOwotKyAg ICBnYm9vbGVhbiAgaXNfZXh0ZW5zaW9uOwotKyAgICBnY2hhciAgICAqcGFyYW1zOwotK307Ci0r Ci0gc3RydWN0IF9JQnVzWEV2ZW50UHJpdmF0ZSB7Ci0gICAgIGd1aW50ICAgIHZlcnNpb247Ci0g ICAgIGd1aW50MzIgIHRpbWU7Ci1AQCAtNzMsMjQgKzkxLDM0NiBAQCBzdHJ1Y3QgX0lCdXNYRXZl bnRQcml2YXRlIHsKLSB9OwotIAotIC8qIGZ1bmN0aW9ucyBwcm90b3R5cGUgKi8KLS1zdGF0aWMg dm9pZCAgICAgIGlidXNfeF9ldmVudF9kZXN0cm95ICAgICAgICAoSUJ1c1hFdmVudCAgICAgICAg ICpldmVudCk7Ci0tc3RhdGljIHZvaWQgICAgICBpYnVzX3hfZXZlbnRfc2V0X3Byb3BlcnR5ICAg KElCdXNYRXZlbnQgICAgICAgICAqZXZlbnQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgcHJvcF9pZCwKLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR1ZhbHVlICAgICAg ICp2YWx1ZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg R1BhcmFtU3BlYyAgICAgICAgICpwc3BlYyk7Ci0tc3RhdGljIHZvaWQgICAgICBpYnVzX3hfZXZl bnRfZ2V0X3Byb3BlcnR5ICAgKElCdXNYRXZlbnQgICAgICAgICAqZXZlbnQsCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAg cHJvcF9pZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg R1ZhbHVlICAgICAgICAgICAgICp2YWx1ZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgR1BhcmFtU3BlYyAgICAgICAgICpwc3BlYyk7Ci0tc3RhdGljIGdi b29sZWFuICBpYnVzX3hfZXZlbnRfc2VyaWFsaXplICAgICAgKElCdXNYRXZlbnQgICAgICAgICAq ZXZlbnQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdW YXJpYW50QnVpbGRlciAgICAqYnVpbGRlcik7Ci0tc3RhdGljIGdpbnQgICAgICBpYnVzX3hfZXZl bnRfZGVzZXJpYWxpemUgICAgKElCdXNYRXZlbnQgICAgICAgICAqZXZlbnQsCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50ICAgICAgICAgICAq dmFyaWFudCk7Ci0tc3RhdGljIGdib29sZWFuICBpYnVzX3hfZXZlbnRfY29weSAgICAgICAgICAg KElCdXNYRXZlbnQgICAgICAgICAqZGVzdCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgSUJ1c1hFdmVudCAgICpzcmMpOwotLQotK3N0YXRpYyB2 b2lkICAgICAgaWJ1c19leHRlbnNpb25fZXZlbnRfZGVzdHJveSAgICAgIChJQnVzRXh0ZW5zaW9u RXZlbnQgKmV2ZW50KTsKLStzdGF0aWMgdm9pZCAgICAgIGlidXNfZXh0ZW5zaW9uX2V2ZW50X3Nl dF9wcm9wZXJ0eSAoSUJ1c0V4dGVuc2lvbkV2ZW50ICpldmVudCwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICBw cm9wX2lkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBHVmFsdWUgICAgICAgKnZhbHVlLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUGFyYW1TcGVjICAgICAgICAgKnBzcGVjKTsK LStzdGF0aWMgdm9pZCAgICAgIGlidXNfZXh0ZW5zaW9uX2V2ZW50X2dldF9wcm9wZXJ0eSAoSUJ1 c0V4dGVuc2lvbkV2ZW50ICpldmVudCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICBwcm9wX2lkLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVmFsdWUgICAg ICAgICAgICAgKnZhbHVlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBHUGFyYW1TcGVjICAgICAgICAgKnBzcGVjKTsKLStzdGF0aWMgZ2Jvb2xl YW4gIGlidXNfZXh0ZW5zaW9uX2V2ZW50X3NlcmlhbGl6ZSAgICAoSUJ1c0V4dGVuc2lvbkV2ZW50 ICpldmVudCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgR1ZhcmlhbnRCdWlsZGVyCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpidWlsZGVyKTsKLStzdGF0aWMg Z2ludCAgICAgIGlidXNfZXh0ZW5zaW9uX2V2ZW50X2Rlc2VyaWFsaXplICAoSUJ1c0V4dGVuc2lv bkV2ZW50ICpldmVudCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR1ZhcmlhbnQKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnZhcmlhbnQpOwotK3N0YXRpYyBn Ym9vbGVhbiAgaWJ1c19leHRlbnNpb25fZXZlbnRfY29weSAgICAgICAgIChJQnVzRXh0ZW5zaW9u RXZlbnQKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0LAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJQnVzRXh0ZW5zaW9uRXZlbnQKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICpzcmMpOwotK3N0YXRpYyB2b2lkICAgICAgaWJ1c194X2V2ZW50X2Rl c3Ryb3kgICAgICAgICAgICAgIChJQnVzWEV2ZW50ICAgICAgICAgKmV2ZW50KTsKLStzdGF0aWMg dm9pZCAgICAgIGlidXNfeF9ldmVudF9zZXRfcHJvcGVydHkgICAgICAgICAoSUJ1c1hFdmVudCAg ICAgICAgICpldmVudCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICBwcm9wX2lkLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHVmFsdWUgICAgICAg KnZhbHVlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHUGFyYW1TcGVjICAgICAgICAgKnBzcGVjKTsKLStzdGF0aWMgdm9pZCAgICAgIGlidXNf eF9ldmVudF9nZXRfcHJvcGVydHkgICAgICAgICAoSUJ1c1hFdmVudCAgICAgICAgICpldmVudCwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Vp bnQgICAgICAgICAgICAgICBwcm9wX2lkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHVmFsdWUgICAgICAgICAgICAgKnZhbHVlLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUGFyYW1TcGVj ICAgICAgICAgKnBzcGVjKTsKLStzdGF0aWMgZ2Jvb2xlYW4gIGlidXNfeF9ldmVudF9zZXJpYWxp emUgICAgICAgICAgICAoSUJ1c1hFdmVudCAgICAgICAgICpldmVudCwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1ZhcmlhbnRCdWlsZGVyCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICpidWlsZGVyKTsKLStzdGF0aWMgZ2ludCAgICAgIGlidXNfeF9ldmVudF9k ZXNlcmlhbGl6ZSAgICAgICAgICAoSUJ1c1hFdmVudCAgICAgICAgICpldmVudCwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1ZhcmlhbnQKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKnZhcmlhbnQpOwotK3N0YXRpYyBnYm9vbGVhbiAgaWJ1c194X2V2ZW50X2Nv cHkgICAgICAgICAgICAgICAgIChJQnVzWEV2ZW50ICAgICAgICAgKmRlc3QsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElCdXNYRXZl bnQgICAqc3JjKTsKLSsKLStHX0RFRklORV9UWVBFIChJQnVzRXh0ZW5zaW9uRXZlbnQsIGlidXNf ZXh0ZW5zaW9uX2V2ZW50LCBJQlVTX1RZUEVfU0VSSUFMSVpBQkxFKQotIEdfREVGSU5FX1RZUEUg KElCdXNYRXZlbnQsIGlidXNfeF9ldmVudCwgSUJVU19UWVBFX1NFUklBTElaQUJMRSkKLSAKLStz dGF0aWMgdm9pZAotK2lidXNfZXh0ZW5zaW9uX2V2ZW50X2NsYXNzX2luaXQgKElCdXNFeHRlbnNp b25FdmVudENsYXNzICpjbGFzcykKLSt7Ci0rICAgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFz cyA9IEdfT0JKRUNUX0NMQVNTIChjbGFzcyk7Ci0rICAgIElCdXNPYmplY3RDbGFzcyAqb2JqZWN0 X2NsYXNzID0gSUJVU19PQkpFQ1RfQ0xBU1MgKGNsYXNzKTsKLSsgICAgSUJ1c1NlcmlhbGl6YWJs ZUNsYXNzICpzZXJpYWxpemFibGVfY2xhc3MgPSBJQlVTX1NFUklBTElaQUJMRV9DTEFTUyAoY2xh c3MpOwotKwotKyAgICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPQotKyAgICAgICAgICAg IChHT2JqZWN0U2V0UHJvcGVydHlGdW5jKSBpYnVzX2V4dGVuc2lvbl9ldmVudF9zZXRfcHJvcGVy dHk7Ci0rICAgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9Ci0rICAgICAgICAgICAgKEdP YmplY3RHZXRQcm9wZXJ0eUZ1bmMpIGlidXNfZXh0ZW5zaW9uX2V2ZW50X2dldF9wcm9wZXJ0eTsK LSsKLSsgICAgb2JqZWN0X2NsYXNzLT5kZXN0cm95ID0KLSsgICAgICAgICAgICAoSUJ1c09iamVj dERlc3Ryb3lGdW5jKSBpYnVzX2V4dGVuc2lvbl9ldmVudF9kZXN0cm95OwotKwotKyAgICBzZXJp YWxpemFibGVfY2xhc3MtPnNlcmlhbGl6ZSAgID0KLSsgICAgICAgICAgICAoSUJ1c1NlcmlhbGl6 YWJsZVNlcmlhbGl6ZUZ1bmMpIGlidXNfZXh0ZW5zaW9uX2V2ZW50X3NlcmlhbGl6ZTsKLSsgICAg c2VyaWFsaXphYmxlX2NsYXNzLT5kZXNlcmlhbGl6ZSA9Ci0rICAgICAgICAgICAgKElCdXNTZXJp YWxpemFibGVEZXNlcmlhbGl6ZUZ1bmMpIGlidXNfZXh0ZW5zaW9uX2V2ZW50X2Rlc2VyaWFsaXpl OwotKyAgICBzZXJpYWxpemFibGVfY2xhc3MtPmNvcHkgICAgICAgID0KLSsgICAgICAgICAgICAo SUJ1c1NlcmlhbGl6YWJsZUNvcHlGdW5jKSBpYnVzX2V4dGVuc2lvbl9ldmVudF9jb3B5OwotKwot KyAgICAvKiBpbnN0YWxsIHByb3BlcnRpZXMgKi8KLSsgICAgLyoqCi0rICAgICAqIElCdXNFeHRl bnNpb25FdmVudDp2ZXJzaW9uOgotKyAgICAgKgotKyAgICAgKiBWZXJzaW9uIG9mIHRoZSAjSUJ1 c0V4dGVuc2lvbkV2ZW50LgotKyAgICAgKi8KLSsgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w cm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKLSsgICAgICAgICAgICAgICAgICAgIFBST1BfVkVSU0lP TiwKLSsgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY191aW50ICgidmVyc2lvbiIsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgInZlcnNpb24iLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICJ2ZXJzaW9uIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAwLAotKyAgICAgICAgICAg ICAgICAgICAgICAgIEdfTUFYVUlOVDMyLAotKyAgICAgICAgICAgICAgICAgICAgICAgIElCVVNf RVhURU5TSU9OX0VWRU5UX1ZFUlNJT04sCi0rICAgICAgICAgICAgICAgICAgICAgICAgR19QQVJB TV9SRUFEQUJMRSkpOwotKwotKyAgICAvKioKLSsgICAgICogSUJ1c0V4dGVuc2lvbkV2ZW50Om5h bWU6Ci0rICAgICAqCi0rICAgICAqIE5hbWUgb2YgdGhlIGV4dGVuc2lvbiBpbiB0aGUgI0lCdXNF eHRlbnNpb25FdmVudC4KLSsgICAgICovCi0rICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJv cGVydHkgKGdvYmplY3RfY2xhc3MsCi0rICAgICAgICAgICAgICAgICAgICBQUk9QX05BTUUsCi0r ICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nICgibmFtZSIsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgIm5hbWUiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICJuYW1l IG9mIHRoZSBleHRlbnNpb24iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICIiLAotKyAgICAg ICAgICAgICAgICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwKLSsgICAgICAgICAgICAgICAg ICAgICAgICBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSk7Ci0rCi0rICAgIC8qKgotKyAgICAgKiBJ QnVzRXh0ZW5zaW9uRXZlbnQ6aXMtZW5hYmxlZDoKLSsgICAgICoKLSsgICAgICogJVRSVUUgaWYg dGhlIGV4dGVuc2lvbiBpcyBlbmFibGVkIGluIHRoZSAjSUJ1c0V4dGVuc2lvbkV2ZW50LgotKyAg ICAgKi8KLSsgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFz cywKLSsgICAgICAgICAgICAgICAgICAgIFBST1BfSVNfRU5BQkxFRCwKLSsgICAgICAgICAgICAg ICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuICgiaXMtZW5hYmxlZCIsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgImlzIGVuYWJsZWQiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICJpZiB0 aGUgZXh0ZW5zaW9uIGlzIGVuYWJsZWQiLAotKyAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNF LAotKyAgICAgICAgICAgICAgICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwKLSsgICAgICAg ICAgICAgICAgICAgICAgICBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSk7Ci0rCi0rICAgIC8qKgot KyAgICAgKiBJQnVzRXh0ZW5zaW9uRXZlbnQ6aXMtZXh0ZW5zaW9uOgotKyAgICAgKgotKyAgICAg KiAlVFJVRSBpZiB0aGUgI0lCdXNFeHRlbnNpb25FdmVudCBpcyBjYWxsZWQgYnkgYW4gZXh0ZW5z aW9uLgotKyAgICAgKiAlRkFMU0UgaWYgdGhlICNJQnVzRXh0ZW5zaW9uRXZlbnQgaXMgY2FsbGVk IGJ5IGFuIGFjdGl2ZSBlbmdpbmUgb3IKLSsgICAgICogcGFuZWwuCi0rICAgICAqIElmIHRoaXMg dmFsdWUgaXMgJVRSVUUsIHRoZSBldmVudCBpcyBzZW5kIHRvIGlidXMtZGFlbW9uLCBhbiBhY3Rp dmUKLSsgICAgICogZW5naW5lLiBJZiBpdCdzICVGQUxTRSwgdGhlIGV2ZW50IGlzIHNuZWQgdG8g aWJ1cy1kYWVtb24sIHBhbmVscy4KLSsgICAgICovCi0rICAgIGdfb2JqZWN0X2NsYXNzX2luc3Rh bGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCi0rICAgICAgICAgICAgICAgICAgICBQUk9QX0lT X0VYVEVOU0lPTiwKLSsgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuICgi aXMtZXh0ZW5zaW9uIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAiaXMgZXh0ZW5zaW9uIiwK LSsgICAgICAgICAgICAgICAgICAgICAgICAiaWYgdGhlIGV2ZW50IGlzIGNhbGxlZCBieSBhbiBl eHRlbnNpb24iLAotKyAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAotKyAgICAgICAgICAg ICAgICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwKLSsgICAgICAgICAgICAgICAgICAgICAg ICBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSk7Ci0rCi0rICAgIC8qKgotKyAgICAgKiBJQnVzRXh0 ZW5zaW9uRXZlbnQ6cGFyYW1zOgotKyAgICAgKgotKyAgICAgKiBQYXJhbWV0ZXJzIHRvIGVuYWJs ZSB0aGUgZXh0ZW5zaW9uIGluIHRoZSAjSUJ1c0V4dGVuc2lvbkV2ZW50LgotKyAgICAgKi8KLSsg ICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKLSsgICAg ICAgICAgICAgICAgICAgIFBST1BfUEFSQU1TLAotKyAgICAgICAgICAgICAgICAgICAgZ19wYXJh bV9zcGVjX3N0cmluZyAoInBhcmFtcyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFt cyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIlBhcmFtZXRlcnMgdG8gZW5hYmxlIHRoZSBl eHRlbnNpb24iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICIiLAotKyAgICAgICAgICAgICAg ICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwKLSsgICAgICAgICAgICAgICAgICAgICAgICBH X1BBUkFNX0NPTlNUUlVDVF9PTkxZKSk7Ci0rCi0rICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0 ZSAoY2xhc3MsIHNpemVvZiAoSUJ1c0V4dGVuc2lvbkV2ZW50UHJpdmF0ZSkpOwotK30KLSsKLStz dGF0aWMgdm9pZAotK2lidXNfZXh0ZW5zaW9uX2V2ZW50X2luaXQgKElCdXNFeHRlbnNpb25FdmVu dCAqZXZlbnQpCi0rewotKyAgICBldmVudC0+cHJpdiA9IElCVVNfRVhURU5TSU9OX0VWRU5UX0dF VF9QUklWQVRFIChldmVudCk7Ci0rICAgIGV2ZW50LT5wcml2LT52ZXJzaW9uID0gSUJVU19FWFRF TlNJT05fRVZFTlRfVkVSU0lPTjsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStpYnVzX2V4dGVuc2lv bl9ldmVudF9kZXN0cm95IChJQnVzRXh0ZW5zaW9uRXZlbnQgKmV2ZW50KQotK3sKLSsgICAgZ19j bGVhcl9wb2ludGVyICgmZXZlbnQtPnByaXYtPm5hbWUsIGdfZnJlZSk7Ci0rCi0rICAgIElCVVNf T0JKRUNUX0NMQVNTKGlidXNfZXh0ZW5zaW9uX2V2ZW50X3BhcmVudF9jbGFzcyktPgotKyAgICAg ICAgICAgIGRlc3Ryb3kgKElCVVNfT0JKRUNUIChldmVudCkpOwotK30KLSsKLStzdGF0aWMgdm9p ZAotK2lidXNfZXh0ZW5zaW9uX2V2ZW50X3NldF9wcm9wZXJ0eSAoSUJ1c0V4dGVuc2lvbkV2ZW50 ICAgKmV2ZW50LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAg ICAgICBwcm9wX2lkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg R1ZhbHVlICp2YWx1ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdQYXJh bVNwZWMgICAqcHNwZWMpCi0rewotKyAgICBJQnVzRXh0ZW5zaW9uRXZlbnRQcml2YXRlICpwcml2 ID0gZXZlbnQtPnByaXY7Ci0rCi0rICAgIHN3aXRjaCAocHJvcF9pZCkgewotKyAgICBjYXNlIFBS T1BfTkFNRToKLSsgICAgICAgIGdfZnJlZSAocHJpdi0+bmFtZSk7Ci0rICAgICAgICBwcml2LT5u YW1lID0gZ192YWx1ZV9kdXBfc3RyaW5nICh2YWx1ZSk7Ci0rICAgICAgICBicmVhazsKLSsgICAg Y2FzZSBQUk9QX0lTX0VOQUJMRUQ6Ci0rICAgICAgICBwcml2LT5pc19lbmFibGVkID0gZ192YWx1 ZV9nZXRfYm9vbGVhbiAodmFsdWUpOwotKyAgICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgUFJPUF9J U19FWFRFTlNJT046Ci0rICAgICAgICBwcml2LT5pc19leHRlbnNpb24gPSBnX3ZhbHVlX2dldF9i b29sZWFuICh2YWx1ZSk7Ci0rICAgICAgICBicmVhazsKLSsgICAgY2FzZSBQUk9QX1BBUkFNUzoK LSsgICAgICAgIHByaXYtPnBhcmFtcyA9IGdfdmFsdWVfZHVwX3N0cmluZyAodmFsdWUpOwotKyAg ICAgICAgYnJlYWs7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFM SURfUFJPUEVSVFlfSUQgKGV2ZW50LCBwcm9wX2lkLCBwc3BlYyk7Ci0rICAgIH0KLSt9Ci0rCi0r c3RhdGljIHZvaWQKLStpYnVzX2V4dGVuc2lvbl9ldmVudF9nZXRfcHJvcGVydHkgKElCdXNFeHRl bnNpb25FdmVudCAqZXZlbnQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn dWludCAgICAgICAgICAgICAgIHByb3BfaWQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBHVmFsdWUgICAgICAgICAgICAgKnZhbHVlLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgR1BhcmFtU3BlYyAgICAgICAgICpwc3BlYykKLSt7Ci0rICAgIElCdXNF eHRlbnNpb25FdmVudFByaXZhdGUgKnByaXYgPSBldmVudC0+cHJpdjsKLSsgICAgc3dpdGNoIChw cm9wX2lkKSB7Ci0rICAgIGNhc2UgUFJPUF9WRVJTSU9OOgotKyAgICAgICAgZ192YWx1ZV9zZXRf dWludCAodmFsdWUsIHByaXYtPnZlcnNpb24pOwotKyAgICAgICAgYnJlYWs7Ci0rICAgIGNhc2Ug UFJPUF9OQU1FOgotKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nICh2YWx1ZSwgcHJpdi0+bmFt ZSk7Ci0rICAgICAgICBicmVhazsKLSsgICAgY2FzZSBQUk9QX0lTX0VOQUJMRUQ6Ci0rICAgICAg ICBnX3ZhbHVlX3NldF9ib29sZWFuICh2YWx1ZSwgcHJpdi0+aXNfZW5hYmxlZCk7Ci0rICAgICAg ICBicmVhazsKLSsgICAgY2FzZSBQUk9QX0lTX0VYVEVOU0lPTjoKLSsgICAgICAgIGdfdmFsdWVf c2V0X2Jvb2xlYW4gKHZhbHVlLCBwcml2LT5pc19leHRlbnNpb24pOwotKyAgICAgICAgYnJlYWs7 Ci0rICAgIGNhc2UgUFJPUF9QQVJBTVM6Ci0rICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcgKHZh bHVlLCBwcml2LT5wYXJhbXMpOwotKyAgICAgICAgYnJlYWs7Ci0rICAgIGRlZmF1bHQ6Ci0rICAg ICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKGV2ZW50LCBwcm9wX2lkLCBw c3BlYyk7Ci0rICAgIH0KLSt9Ci0rCi0rc3RhdGljIGdib29sZWFuCi0raWJ1c19leHRlbnNpb25f ZXZlbnRfc2VyaWFsaXplIChJQnVzRXh0ZW5zaW9uRXZlbnQgKmV2ZW50LAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR1ZhcmlhbnRCdWlsZGVyICAgICpidWlsZGVyKQotK3sKLSsg ICAgZ2Jvb2xlYW4gcmV0dmFsOwotKyAgICBJQnVzRXh0ZW5zaW9uRXZlbnRQcml2YXRlICpwcml2 OwotKwotKyAgICByZXR2YWwgPSBJQlVTX1NFUklBTElaQUJMRV9DTEFTUyAoaWJ1c19leHRlbnNp b25fZXZlbnRfcGFyZW50X2NsYXNzKS0+Ci0rICAgICAgICAgICAgc2VyaWFsaXplICgoSUJ1c1Nl cmlhbGl6YWJsZSAqKWV2ZW50LCBidWlsZGVyKTsKLSsgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwg KHJldHZhbCwgRkFMU0UpOwotKyAgICAvKiBFbmQgZGljdCBpdGVyICovCi0rCi0rICAgIHByaXYg PSBldmVudC0+cHJpdjsKLSsjZGVmaW5lIE5PVE5VTEwocykgKChzKSAhPSBOVUxMID8gKHMpIDog IiIpCi0rICAgIC8qIElmIHlvdSB3aWxsIGFkZCBhIG5ldyBwcm9wZXJ0eSwgeW91IGNhbiBhcHBl bmQgaXQgYXQgdGhlIGVuZCBhbmQKLSsgICAgICogeW91IHNob3VsZCBub3QgY2hhbmdlIHRoZSBz ZXJpYWxpemVkIG9yZGVyIG9mIG5hbWUsIGxvbmduYW1lLAotKyAgICAgKiBkZXNjcmlwdGlvbiwg Li4uIGJlY2F1c2UgdGhlIG9yZGVyIGlzIGFsc28gdXNlZCBpbiBvdGhlciBhcHBsaWNhdGlvbnMK LSsgICAgICogbGlrZXMgaWJ1cy1xdC4gKi8KLSsgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkIChi dWlsZGVyLCAidSIsIHByaXYtPnZlcnNpb24pOwotKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQg KGJ1aWxkZXIsICJzIiwgTk9UTlVMTCAocHJpdi0+bmFtZSkpOwotKyAgICBnX3ZhcmlhbnRfYnVp bGRlcl9hZGQgKGJ1aWxkZXIsICJiIiwgcHJpdi0+aXNfZW5hYmxlZCk7Ci0rICAgIGdfdmFyaWFu dF9idWlsZGVyX2FkZCAoYnVpbGRlciwgImIiLCBwcml2LT5pc19leHRlbnNpb24pOwotKyAgICBn X3ZhcmlhbnRfYnVpbGRlcl9hZGQgKGJ1aWxkZXIsICJzIiwgTk9UTlVMTCAocHJpdi0+cGFyYW1z KSk7Ci0rI3VuZGVmIE5PVE5VTEwKLSsKLSsgICAgcmV0dXJuIFRSVUU7Ci0rfQotKwotK3N0YXRp YyBnaW50Ci0raWJ1c19leHRlbnNpb25fZXZlbnRfZGVzZXJpYWxpemUgKElCdXNFeHRlbnNpb25F dmVudCAqZXZlbnQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50 ICAgICAgICAgICAqdmFyaWFudCkKLSt7Ci0rICAgIGdpbnQgcmV0dmFsOwotKyAgICBJQnVzRXh0 ZW5zaW9uRXZlbnRQcml2YXRlICpwcml2OwotKwotKyAgICByZXR2YWwgPSBJQlVTX1NFUklBTEla QUJMRV9DTEFTUyAoaWJ1c19leHRlbnNpb25fZXZlbnRfcGFyZW50X2NsYXNzKS0+Ci0rICAgICAg ICAgICAgZGVzZXJpYWxpemUgKChJQnVzU2VyaWFsaXphYmxlICopZXZlbnQsIHZhcmlhbnQpOwot KyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAocmV0dmFsLCAwKTsKLSsKLSsgICAgcHJpdiA9IGV2 ZW50LT5wcml2OwotKyAgICAvKiBJZiB5b3Ugd2lsbCBhZGQgYSBuZXcgcHJvcGVydHksIHlvdSBj YW4gYXBwZW5kIGl0IGF0IHRoZSBlbmQgYW5kCi0rICAgICAqIHlvdSBzaG91bGQgbm90IGNoYW5n ZSB0aGUgc2VyaWFsaXplZCBvcmRlciBvZiBuYW1lLCBsb25nbmFtZSwKLSsgICAgICogZGVzY3Jp cHRpb24sIC4uLiBiZWNhdXNlIHRoZSBvcmRlciBpcyBhbHNvIHVzZWQgaW4gb3RoZXIgYXBwbGlj YXRpb25zCi0rICAgICAqIGxpa2VzIGlidXMtcXQuICovCi0rICAgIGdfdmFyaWFudF9nZXRfY2hp bGQgKHZhcmlhbnQsIHJldHZhbCsrLCAidSIsICZwcml2LT52ZXJzaW9uKTsKLSsgICAgaWJ1c19n X3ZhcmlhbnRfZ2V0X2NoaWxkX3N0cmluZyAodmFyaWFudCwgcmV0dmFsKyssCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwcml2LT5uYW1lKTsKLSsgICAgZ192YXJpYW50 X2dldF9jaGlsZCAodmFyaWFudCwgcmV0dmFsKyssICJiIiwgJnByaXYtPmlzX2VuYWJsZWQpOwot KyAgICBnX3ZhcmlhbnRfZ2V0X2NoaWxkICh2YXJpYW50LCByZXR2YWwrKywgImIiLCAmcHJpdi0+ aXNfZXh0ZW5zaW9uKTsKLSsgICAgaWJ1c19nX3ZhcmlhbnRfZ2V0X2NoaWxkX3N0cmluZyAodmFy aWFudCwgcmV0dmFsKyssCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZw cml2LT5wYXJhbXMpOwotKwotKyAgICByZXR1cm4gcmV0dmFsOwotK30KLSsKLStzdGF0aWMgZ2Jv b2xlYW4KLStpYnVzX2V4dGVuc2lvbl9ldmVudF9jb3B5IChJQnVzRXh0ZW5zaW9uRXZlbnQgICAg ICAgKmRlc3QsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSUJ1c0V4dGVuc2lv bkV2ZW50ICpzcmMpCi0rewotKyAgICBnYm9vbGVhbiByZXR2YWw7Ci0rICAgIElCdXNFeHRlbnNp b25FdmVudFByaXZhdGUgKmRlc3RfcHJpdiA9IGRlc3QtPnByaXY7Ci0rICAgIElCdXNFeHRlbnNp b25FdmVudFByaXZhdGUgKnNyY19wcml2ID0gc3JjLT5wcml2OwotKwotKyAgICByZXR2YWwgPSBJ QlVTX1NFUklBTElaQUJMRV9DTEFTUyAoaWJ1c19leHRlbnNpb25fZXZlbnRfcGFyZW50X2NsYXNz KS0+Ci0rICAgICAgICAgICAgY29weSAoKElCdXNTZXJpYWxpemFibGUgKilkZXN0LCAoSUJ1c1Nl cmlhbGl6YWJsZSAqKXNyYyk7Ci0rICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChyZXR2YWwsIEZB TFNFKTsKLSsKLSsgICAgZGVzdF9wcml2LT52ZXJzaW9uICAgICAgICAgICA9IHNyY19wcml2LT52 ZXJzaW9uOwotKyAgICBkZXN0X3ByaXYtPm5hbWUgICAgICAgICAgICAgID0gZ19zdHJkdXAgKHNy Y19wcml2LT5uYW1lKTsKLSsgICAgZGVzdF9wcml2LT5pc19lbmFibGVkICAgICAgICA9IHNyY19w cml2LT5pc19lbmFibGVkOwotKyAgICBkZXN0X3ByaXYtPmlzX2V4dGVuc2lvbiAgICAgID0gc3Jj X3ByaXYtPmlzX2V4dGVuc2lvbjsKLSsgICAgZGVzdF9wcml2LT5wYXJhbXMgICAgICAgICAgICA9 IGdfc3RyZHVwIChzcmNfcHJpdi0+cGFyYW1zKTsKLSsgICAgcmV0dXJuIFRSVUU7Ci0rfQotKwot K0lCdXNFeHRlbnNpb25FdmVudCAqCi0raWJ1c19leHRlbnNpb25fZXZlbnRfbmV3IChjb25zdCBn Y2hhciAgICpmaXJzdF9wcm9wZXJ0eV9uYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg Li4uKQotK3sKLSsgICAgdmFfbGlzdCB2YXJfYXJnczsKLSsgICAgSUJ1c0V4dGVuc2lvbkV2ZW50 ICpldmVudDsKLSsKLSsgICAgdmFfc3RhcnQgKHZhcl9hcmdzLCBmaXJzdF9wcm9wZXJ0eV9uYW1l KTsKLSsgICAgZXZlbnQgPSAoSUJ1c0V4dGVuc2lvbkV2ZW50ICopIGdfb2JqZWN0X25ld192YWxp c3QgKAotKyAgICAgICAgICAgIElCVVNfVFlQRV9FWFRFTlNJT05fRVZFTlQsCi0rICAgICAgICAg ICAgZmlyc3RfcHJvcGVydHlfbmFtZSwKLSsgICAgICAgICAgICB2YXJfYXJncyk7Ci0rICAgIHZh X2VuZCAodmFyX2FyZ3MpOwotKyAgICBnX2Fzc2VydCAoZXZlbnQtPnByaXYtPnZlcnNpb24gIT0g MCk7Ci0rICAgIHJldHVybiBldmVudDsKLSt9Ci0rCi0rZ3VpbnQKLStpYnVzX2V4dGVuc2lvbl9l dmVudF9nZXRfdmVyc2lvbiAoSUJ1c0V4dGVuc2lvbkV2ZW50ICpldmVudCkKLSt7Ci0rICAgIGdf cmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lTX0VYVEVOU0lPTl9FVkVOVCAoZXZlbnQpLCAwKTsK LSsgICAgcmV0dXJuIGV2ZW50LT5wcml2LT52ZXJzaW9uOwotK30KLSsKLStjb25zdCBnY2hhciAq Ci0raWJ1c19leHRlbnNpb25fZXZlbnRfZ2V0X25hbWUgKElCdXNFeHRlbnNpb25FdmVudCAqZXZl bnQpCi0rewotKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoSUJVU19JU19FWFRFTlNJT05fRVZF TlQgKGV2ZW50KSwgIiIpOwotKyAgICByZXR1cm4gZXZlbnQtPnByaXYtPm5hbWU7Ci0rfQotKwot K2dib29sZWFuCi0raWJ1c19leHRlbnNpb25fZXZlbnRfaXNfZW5hYmxlZCAoSUJ1c0V4dGVuc2lv bkV2ZW50ICpldmVudCkKLSt7Ci0rICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lTX0VY VEVOU0lPTl9FVkVOVCAoZXZlbnQpLCBGQUxTRSk7Ci0rICAgIHJldHVybiBldmVudC0+cHJpdi0+ aXNfZW5hYmxlZDsKLSt9Ci0rCi0rZ2Jvb2xlYW4KLStpYnVzX2V4dGVuc2lvbl9ldmVudF9pc19l eHRlbnNpb24gKElCdXNFeHRlbnNpb25FdmVudCAqZXZlbnQpCi0rewotKyAgICBnX3JldHVybl92 YWxfaWZfZmFpbCAoSUJVU19JU19FWFRFTlNJT05fRVZFTlQgKGV2ZW50KSwgRkFMU0UpOwotKyAg ICByZXR1cm4gZXZlbnQtPnByaXYtPmlzX2V4dGVuc2lvbjsKLSt9Ci0rCi0rY29uc3QgZ2NoYXIg KgotK2lidXNfZXh0ZW5zaW9uX2V2ZW50X2dldF9wYXJhbXMgKElCdXNFeHRlbnNpb25FdmVudCAq ZXZlbnQpCi0rewotKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoSUJVU19JU19FWFRFTlNJT05f RVZFTlQgKGV2ZW50KSwgIiIpOwotKyAgICByZXR1cm4gZXZlbnQtPnByaXYtPnBhcmFtczsKLSt9 Ci0rCi0rCi0gc3RhdGljIHZvaWQKLSBpYnVzX3hfZXZlbnRfY2xhc3NfaW5pdCAoSUJ1c1hFdmVu dENsYXNzICpjbGFzcykKLSB7Ci1AQCAtNDU0LDYgKzc5NCw3IEBAIHN0YXRpYyB2b2lkCi0gaWJ1 c194X2V2ZW50X2Rlc3Ryb3kgKElCdXNYRXZlbnQgKmV2ZW50KQotIHsKLSAgICAgZ19jbGVhcl9w b2ludGVyICgmZXZlbnQtPnByaXYtPnN0cmluZywgZ19mcmVlKTsKLSsgICAgZ19jbGVhcl9wb2lu dGVyICgmZXZlbnQtPnByaXYtPnB1cnBvc2UsIGdfZnJlZSk7Ci0gCi0gICAgIElCVVNfT0JKRUNU X0NMQVNTKGlidXNfeF9ldmVudF9wYXJlbnRfY2xhc3MpLT5kZXN0cm95IChJQlVTX09CSkVDVCAo ZXZlbnQpKTsKLSB9Ci1kaWZmIC0tZ2l0IGEvc3JjL2lidXN4ZXZlbnQuaCBiL3NyYy9pYnVzeGV2 ZW50LmgKLWluZGV4IGYzNWYxNGU0Li5kNDRjYzhmNCAxMDA2NDQKLS0tLSBhL3NyYy9pYnVzeGV2 ZW50LmgKLSsrKyBiL3NyYy9pYnVzeGV2ZW50LmgKLUBAIC0yOSw4ICsyOSw4IEBACi0gCi0gLyoq Ci0gICogU0VDVElPTjogaWJ1c3hldmVudAotLSAqIEBzaG9ydF9kZXNjcmlwdGlvbjogWEV2ZW50 IHdyYXBwZXIgb2JqZWN0Ci0tICogQHRpdGxlOiBJQnVzWEV2ZW50Ci0rICogQHNob3J0X2Rlc2Ny aXB0aW9uOiBFeHRlbnNpb24gRXZlbnQgd3JhcHBlciBvYmplY3QKLSsgKiBAdGl0bGU6IElCdXNF eHRlbnNpb25FdmVudAotICAqIEBzdGFiaWxpdHk6IFVuc3RhYmxlCi0gICoKLSAgKiBBbiBJQnVz WEV2ZW50IHByb3ZpZGVzIGEgd3JhcHBlciBvZiBYRXZlbnQuCi1AQCAtNDUsMjUgKzQ1LDE1MCBA QAotICAqLwotIAotIC8qIGRlZmluZSBHT0JKRUNUIG1hY3JvcyAqLwotLSNkZWZpbmUgSUJVU19U WVBFX1hfRVZFTlQgICAgICAgICAgICBcCi0rI2RlZmluZSBJQlVTX1RZUEVfRVhURU5TSU9OX0VW RU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAoaWJ1c19l eHRlbnNpb25fZXZlbnRfZ2V0X3R5cGUgKCkpCi0rI2RlZmluZSBJQlVTX0VYVEVOU0lPTl9FVkVO VChvYmopICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAoR19U WVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QgKChvYmopLCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQlVTX1RZUEVfRVhU RU5TSU9OX0VWRU5ULCAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgSUJ1c0V4dGVuc2lvbkV2ZW50KSkKLSsjZGVmaW5lIElCVVNfRVhURU5TSU9OX0VWRU5U X0NMQVNTKGtsYXNzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIChHX1RZ UEVfQ0hFQ0tfQ0xBU1NfQ0FTVCAoKGtsYXNzKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCVVNfVFlQRV9FWFRFTlNJ T05fRVZFTlQsICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBJQnVzRXh0ZW5zaW9uRXZlbnRDbGFzcykpCi0rI2RlZmluZSBJQlVTX0lTX0VYVEVOU0lPTl9F VkVOVChvYmopICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAoR19U WVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUgKChvYmopLCBJQlVTX1RZUEVfRVhURU5TSU9OX0VWRU5U KSkKLSsjZGVmaW5lIElCVVNfSVNfRVhURU5TSU9OX0VWRU5UX0NMQVNTKGtsYXNzKSAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0rICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSAoKGts YXNzKSwgSUJVU19UWVBFX0VYVEVOU0lPTl9FVkVOVCkpCi0rI2RlZmluZSBJQlVTX0VYVEVOU0lP Tl9FVkVOVF9HRVRfQ0xBU1Mob2JqKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAg ICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUyAoKG9iaiksICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCVVNfVFlQ RV9FWFRFTlNJT05fRVZFTlQsICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBJQnVzRXh0ZW5zaW9uRXZlbnRDbGFzcykpCi0rCi0rI2RlZmluZSBJQlVTX1RZ UEVfWF9FVkVOVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotICAgICAoaWJ1c194X2V2ZW50X2dldF90eXBlICgpKQotLSNkZWZpbmUgSUJVU19YX0VWRU5U KG9iaikgICAgICAgICAgICBcCi0rI2RlZmluZSBJQlVTX1hfRVZFTlQob2JqKSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAoR19UWVBFX0NIRUNL X0lOU1RBTkNFX0NBU1QgKChvYmopLCBJQlVTX1RZUEVfWF9FVkVOVCwgSUJ1c1hFdmVudCkpCi0t I2RlZmluZSBJQlVTX1hfRVZFTlRfQ0xBU1Moa2xhc3MpICAgIFwKLSsjZGVmaW5lIElCVVNfWF9F VkVOVF9DTEFTUyhrbGFzcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0gICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCAoKGtsYXNzKSwgSUJVU19UWVBFX1hfRVZF TlQsIElCdXNYRXZlbnRDbGFzcykpCi0tI2RlZmluZSBJQlVTX0lTX1hfRVZFTlQob2JqKSAgICAg ICAgIFwKLSsjZGVmaW5lIElCVVNfSVNfWF9FVkVOVChvYmopICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQ RSAoKG9iaiksIElCVVNfVFlQRV9YX0VWRU5UKSkKLS0jZGVmaW5lIElCVVNfSVNfWF9FVkVOVF9D TEFTUyhrbGFzcykgXAotKyNkZWZpbmUgSUJVU19JU19YX0VWRU5UX0NMQVNTKGtsYXNzKSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgKEdfVFlQRV9DSEVDS19DTEFT U19UWVBFICgoa2xhc3MpLCBJQlVTX1RZUEVfWF9FVkVOVCkpCi0tI2RlZmluZSBJQlVTX1hfRVZF TlRfR0VUX0NMQVNTKG9iaikgIFwKLSsjZGVmaW5lIElCVVNfWF9FVkVOVF9HRVRfQ0xBU1Mob2Jq KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIChHX1RZUEVfSU5T VEFOQ0VfR0VUX0NMQVNTICgob2JqKSwgSUJVU19UWVBFX1hfRVZFTlQsIElCdXNYRXZlbnRDbGFz cykpCi0gCi0gR19CRUdJTl9ERUNMUwotIAotK3R5cGVkZWYgc3RydWN0IF9JQnVzUHJvY2Vzc0tl eUV2ZW50RGF0YSBJQnVzUHJvY2Vzc0tleUV2ZW50RGF0YTsKLSt0eXBlZGVmIHN0cnVjdCBfSUJ1 c0V4dGVuc2lvbkV2ZW50IElCdXNFeHRlbnNpb25FdmVudDsKLSt0eXBlZGVmIHN0cnVjdCBfSUJ1 c0V4dGVuc2lvbkV2ZW50Q2xhc3MgSUJ1c0V4dGVuc2lvbkV2ZW50Q2xhc3M7Ci0rdHlwZWRlZiBz dHJ1Y3QgX0lCdXNFeHRlbnNpb25FdmVudFByaXZhdGUgSUJ1c0V4dGVuc2lvbkV2ZW50UHJpdmF0 ZTsKLSB0eXBlZGVmIHN0cnVjdCBfSUJ1c1hFdmVudCBJQnVzWEV2ZW50OwotIHR5cGVkZWYgc3Ry dWN0IF9JQnVzWEV2ZW50Q2xhc3MgSUJ1c1hFdmVudENsYXNzOwotIHR5cGVkZWYgc3RydWN0IF9J QnVzWEV2ZW50UHJpdmF0ZSBJQnVzWEV2ZW50UHJpdmF0ZTsKLSAKLSsvKioKLSsgKiBJQnVzUHJv Y2Vzc0tleUV2ZW50RGF0YToKLSsgKgotKyAqIElCdVByb2Nlc3NLZXlFdmVudERhdGEgcHJvcGVy dGllcy4KLSsgKi8KLStzdHJ1Y3QgX0lCdXNQcm9jZXNzS2V5RXZlbnREYXRhIHsKLSsgICAgLyo8 IHB1YmxpYyA+Ki8KLSsgICAgZ3VpbnQga2V5dmFsOwotKyAgICBndWludCBrZXljb2RlOwotKyAg ICBndWludCBzdGF0ZTsKLSt9OwotKwotKy8qKgotKyAqIElCdXNFeHRlbnNpb25FdmVudDoKLSsg KgotKyAqIElCdXNFeHRlbnNpb25FdmVudCBwcm9wZXJ0aWVzLgotKyAqLwotK3N0cnVjdCBfSUJ1 c0V4dGVuc2lvbkV2ZW50IHsKLSsgICAgLyo8IHByaXZhdGUgPiovCi0rICAgIElCdXNTZXJpYWxp emFibGUgcGFyZW50OwotKyAgICBJQnVzRXh0ZW5zaW9uRXZlbnRQcml2YXRlICpwcml2OwotKwot KyAgICAvKiBpbnN0YW5jZSBtZW1iZXJzICovCi0rICAgIC8qPCBwdWJsaWMgPiovCi0rfTsKLSsK LStzdHJ1Y3QgX0lCdXNFeHRlbnNpb25FdmVudENsYXNzIHsKLSsgICAgLyo8IHByaXZhdGUgPiov Ci0rICAgIElCdXNTZXJpYWxpemFibGVDbGFzcyBwYXJlbnQ7Ci0rCi0rICAgIC8qIGNsYXNzIG1l bWJlcnMgKi8KLSsgICAgLyo8IHB1YmxpYyA+Ki8KLSsKLSsgICAgLyo8IHByaXZhdGUgPiovCi0r ICAgIC8qIHBhZGRpbmcgKi8KLSsgICAgZ3BvaW50ZXIgcGR1bW15WzEwXTsKLSt9OwotKwotKwot K0dUeXBlICAgICAgICAgICAgICBpYnVzX2V4dGVuc2lvbl9ldmVudF9nZXRfdHlwZSAgICAodm9p ZCk7Ci0rCi0rLyoqCi0rICogaWJ1c19leHRlbnNpb25fZXZlbnRfbmV3OgotKyAqIEBmaXJzdF9w cm9wZXJ0eV9uYW1lOiBOYW1lIG9mIHRoZSBmaXJzdCBwcm9wZXJ0eS4KLSsgKiBALi4uOiB0aGUg TlVMTC10ZXJtaW5hdGVkIGFyZ3VtZW50cyBvZiB0aGUgcHJvcGVydGllcyBhbmQgdmFsdWVzLgot KyAqCi0rICogQ3JlYXRlIGEgbmV3ICNJQnVzRXh0ZW5zaW9uRXZlbnQuCi0rICoKLSsgKiBSZXR1 cm5zOiBBIG5ld2x5IGFsbG9jYXRlZCAjSUJ1c0V4dGVuc2lvbkV2ZW50LiBFLmcuCi0rICogaWJ1 c19leHRlbnNpb25fZXZlbnRfbmV3ICgibmFtZSIsICJlbW9qaSIsICJpcy1lbmFibGVkIiwgVFJV RSwgTlVMTCk7Ci0rICovCi0rSUJ1c0V4dGVuc2lvbkV2ZW50ICppYnVzX2V4dGVuc2lvbl9ldmVu dF9uZXcgICAgICAgIChjb25zdCBnY2hhcgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmZpcnN0X3Byb3BlcnR5X25hbWUsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pOwot KwotKy8qKgotKyAqIGlidXNfZXh0ZW5zaW9uX2V2ZW50X2dldF92ZXJzaW9uOgotKyAqIEBldmVu dDogQW4gI0lCdXNFeHRlbnNpb25FdmVudC4KLSsgKgotKyAqIFJldHVybnM6IFZlcnNpb24gb2Yg I0lCdXNFeHRlbnNpb25FdmVudAotKyAqLwotK2d1aW50ICAgICAgICAgICAgICBpYnVzX2V4dGVu c2lvbl9ldmVudF9nZXRfdmVyc2lvbiAoSUJ1c0V4dGVuc2lvbkV2ZW50ICpldmVudCk7Ci0rCi0r LyoqCi0rICogaWJ1c19leHRlbnNpb25fZXZlbnRfZ2V0X3B1cnBvc2U6Ci0rICogQGV2ZW50OiBB biAjSUJ1c0V4dGVuc2lvbkV2ZW50LgotKyAqCi0rICogUmV0dXJuczogbmFtZSBvZiB0aGUgZXh0 ZW5zaW9uIGZvciAjSUJ1c1hFdmVudAotKyAqLwotK2NvbnN0IGdjaGFyICogICAgICBpYnVzX2V4 dGVuc2lvbl9ldmVudF9nZXRfbmFtZSAgICAoSUJ1c0V4dGVuc2lvbkV2ZW50ICpldmVudCk7Ci0r Ci0rLyoqCi0rICogaWJ1c19leHRlbnNpb25fZXZlbnRfaXNfZW5hYmxlZDoKLSsgKiBAZXZlbnQ6 IEFuICNJQnVzRXh0ZW5zaW9uRXZlbnQuCi0rICoKLSsgKiBSZXR1cm5zOiAlVFJVRSBpZiB0aGUg ZXh0ZW5zaW9uIGlzIGVuYWJsZWQgZm9yICNJQnVzRXh0ZW5zaW9uRXZlbnQKLSsgKi8KLStnYm9v bGVhbiAgICAgICAgICAgaWJ1c19leHRlbnNpb25fZXZlbnRfaXNfZW5hYmxlZCAgKElCdXNFeHRl bnNpb25FdmVudCAqZXZlbnQpOwotKwotKy8qKgotKyAqIGlidXNfZXh0ZW5zaW9uX2V2ZW50X2lz X2V4dGVuc2lvbjoKLSsgKiBAZXZlbnQ6IEFuICNJQnVzRXh0ZW5zaW9uRXZlbnQuCi0rICoKLSsg KiBSZXR1cm5zOiAlVFJVRSBpZiB0aGUgI0lCdXNFeHRlbnNpb25FdmVudCBpcyBjYWxsZWQgYnkg YW4gZXh0ZW5zaW9uLgotKyAqICVGQUxTRSBpZiB0aGUgI0lCdXNFeHRlbnNpb25FdmVudCBpcyBj YWxsZWQgYnkgYW4gYWN0aXZlIGVuZ2luZSBvcgotKyAqIHBhbmVsLgotKyAqIElmIHRoaXMgdmFs dWUgaXMgJVRSVUUsIHRoZSBldmVudCBpcyBzZW5kIHRvIGlidXMtZGFlbW9uLCBhbiBhY3RpdmUK LSsgKiBlbmdpbmUuIElmIGl0J3MgJUZBTFNFLCB0aGUgZXZlbnQgaXMgc25lZCB0byBpYnVzLWRh ZW1vbiwgcGFuZWxzLgotKyAqLwotK2dib29sZWFuICAgICAgICAgICBpYnVzX2V4dGVuc2lvbl9l dmVudF9pc19leHRlbnNpb24KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKElCdXNFeHRlbnNpb25FdmVudCAqZXZlbnQpOwotKwotKy8qKgotKyAq IGlidXNfZXh0ZW5zaW9uX2V2ZW50X2dldF9wYXJhbXM6Ci0rICogQGV2ZW50OiBBbiAjSUJ1c0V4 dGVuc2lvbkV2ZW50LgotKyAqCi0rICogUmV0dXJuczogUGFyYW1ldGVycyB0byBlbmFibGUgdGhl IGV4dGVuc2lvbiBmb3IgI0lCdXNYRXZlbnQKLSsgKi8KLStjb25zdCBnY2hhciAqICAgICAgaWJ1 c19leHRlbnNpb25fZXZlbnRfZ2V0X3BhcmFtcyAgKElCdXNFeHRlbnNpb25FdmVudCAqZXZlbnQp OwotKwotKwotKwotIHR5cGVkZWYgZW51bSB7Ci0gICAgIElCVVNfWF9FVkVOVF9OT1RISU5HICAg ICAgICAgICA9IC0xLAotICAgICBJQlVTX1hfRVZFTlRfS0VZX1BSRVNTICAgICAgICAgPSAwLAot QEAgLTc2LDcgKzIwMSw3IEBAIHR5cGVkZWYgZW51bSB7Ci0gICogSUJ1c1hFdmVudDoKLSAgKiBA dHlwZTogZXZlbnQgdHlwZQotICAqCi0tICogSUJ1c0VuZ2luZSBwcm9wZXJ0aWVzLgotKyAqIElC dXNYRXZlbnQgcHJvcGVydGllcy4KLSAgKi8KLSBzdHJ1Y3QgX0lCdXNYRXZlbnQgewotICAgICAv KjwgcHJpdmF0ZSA+Ki8KLWRpZmYgLS1naXQgYS91aS9ndGszL01ha2VmaWxlLmFtIGIvdWkvZ3Rr My9NYWtlZmlsZS5hbQotaW5kZXggYmY5Zjk4ZDcuLmFhYmE3YTRkIDEwMDY0NAotLS0tIGEvdWkv Z3RrMy9NYWtlZmlsZS5hbQotKysrIGIvdWkvZ3RrMy9NYWtlZmlsZS5hbQotQEAgLTc4LDYgKzc4 LDcgQEAgQU1fVkFMQUZMQUdTID0gXAotIAktLXBrZz1pYnVzLTEuMCBcCi0gCS0tcGtnPWNvbmZp ZyBcCi0gCS0tcGtnPXhpIFwKLSsJLS1wa2c9Z2RrLXdheWxhbmQgXAotIAktLXRhcmdldC1nbGli PSIkKFZBTEFfVEFSR0VUX0dMSUJfVkVSU0lPTikiIFwKLSAJJChOVUxMKQotIAotQEAgLTE3Niw2 ICsxNzcsNyBAQCBpYnVzX3VpX2Vtb2ppZXJfVkFMQVNPVVJDRVMgPSAgICAgICAgICAgICAgICAg ICBcCi0gICAgIGVtb2ppZXIudmFsYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot ICAgICBpY29ud2lkZ2V0LnZhbGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg c2VwYXJhdG9yLnZhbGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIHBhbmdv LnZhbGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAkKE5VTEwpCi0g aWJ1c191aV9lbW9qaWVyX1NPVVJDRVMgPSAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAk KGlidXNfdWlfZW1vamllcl9WQUxBU09VUkNFUzoudmFsYT0uYykgICAgIFwKLUBAIC0yMTMsNiAr MjE1LDcgQEAgaWJ1c19leHRlbnNpb25fZ3RrM19WQUxBU09VUkNFUyA9ICAgICAgICAgICAgICAg XAotICAgICBpY29ud2lkZ2V0LnZhbGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg ICAga2V5YmluZGluZ21hbmFnZXIudmFsYSAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIHBh bmVsYmluZGluZy52YWxhICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBwYW5nby52 YWxhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgJChOVUxMKQotIGli dXNfZXh0ZW5zaW9uX2d0azNfU09VUkNFUyA9ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgJChp YnVzX2V4dGVuc2lvbl9ndGszX1ZBTEFTT1VSQ0VTOi52YWxhPS5jKSBcCi1kaWZmIC0tZ2l0IGEv dWkvZ3RrMy9lbW9qaWVyLnZhbGEgYi91aS9ndGszL2Vtb2ppZXIudmFsYQotaW5kZXggMGMwODY1 ZjEuLmNkOThjOWQ3IDEwMDY0NAotLS0tIGEvdWkvZ3RrMy9lbW9qaWVyLnZhbGEKLSsrKyBiL3Vp L2d0azMvZW1vamllci52YWxhCi1AQCAtMjI2LDQzICsyMjYsNiBAQCBwdWJsaWMgY2xhc3MgSUJ1 c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICAgICAgICAgIH0KLSAgICAg ICAgIH0KLSAgICAgfQotLSAgICBwcml2YXRlIGNsYXNzIEVUaXRsZUxhYmVsQm94IDogR3RrLkhl YWRlckJhciB7Ci0tICAgICAgICBwcml2YXRlIEd0ay5MYWJlbCBtX2xhbmdfbGFiZWw7Ci0tICAg ICAgICBwcml2YXRlIEd0ay5MYWJlbCBtX3RpdGxlX2xhYmVsOwotLQotLSAgICAgICAgcHVibGlj IEVUaXRsZUxhYmVsQm94KHN0cmluZyB0aXRsZSkgewotLSAgICAgICAgICAgIEdMaWIuT2JqZWN0 KAotLSAgICAgICAgICAgICAgICBuYW1lIDogIklCdXNFbW9qaWVyVGl0bGVMYWJlbEJveCIsCi0t ICAgICAgICAgICAgICAgIHNob3dfY2xvc2VfYnV0dG9uOiB0cnVlLAotLSAgICAgICAgICAgICAg ICBkZWNvcmF0aW9uX2xheW91dDogIjpjbG9zZSIsCi0tICAgICAgICAgICAgICAgIHRpdGxlOiB0 aXRsZQotLSAgICAgICAgICAgICk7Ci0tICAgICAgICAgICAgdmFyIHZib3ggPSBuZXcgR3RrLkJv eChHdGsuT3JpZW50YXRpb24uVkVSVElDQUwsIDApOwotLSAgICAgICAgICAgIHNldF9jdXN0b21f dGl0bGUodmJveCk7Ci0tICAgICAgICAgICAgbV90aXRsZV9sYWJlbCA9IG5ldyBHdGsuTGFiZWwo dGl0bGUpOwotLSAgICAgICAgICAgIG1fdGl0bGVfbGFiZWwuZ2V0X3N0eWxlX2NvbnRleHQoKS5h ZGRfY2xhc3MoR3RrLlNUWUxFX0NMQVNTX1RJVExFKTsKLS0gICAgICAgICAgICB2Ym94LnBhY2tf c3RhcnQobV90aXRsZV9sYWJlbCwgdHJ1ZSwgZmFsc2UsIDApOwotLSAgICAgICAgICAgIG1fbGFu Z19sYWJlbCA9IG5ldyBHdGsuTGFiZWwobnVsbCk7Ci0tICAgICAgICAgICAgbV9sYW5nX2xhYmVs LmdldF9zdHlsZV9jb250ZXh0KCkuYWRkX2NsYXNzKAotLSAgICAgICAgICAgICAgICAgICAgR3Rr LlNUWUxFX0NMQVNTX1NVQlRJVExFKTsKLS0gICAgICAgICAgICB2Ym94LnBhY2tfc3RhcnQobV9s YW5nX2xhYmVsLCB0cnVlLCBmYWxzZSwgMCk7Ci0tCi0tICAgICAgICAgICAgdmFyIG1lbnUgPSBu ZXcgR0xpYi5NZW51KCk7Ci0tICAgICAgICAgICAgbWVudS5hcHBlbmQoXygiU2hvdyBlbW9qaSB2 YXJpYW50cyIpLCAid2luLnZhcmlhbnQiKTsKLS0gICAgICAgICAgICB2YXIgbWVudV9idXR0b24g PSBuZXcgR3RrLk1lbnVCdXR0b24oKTsKLS0gICAgICAgICAgICBtZW51X2J1dHRvbi5zZXRfZGly ZWN0aW9uKEd0ay5BcnJvd1R5cGUuTk9ORSk7Ci0tICAgICAgICAgICAgbWVudV9idXR0b24uc2V0 X3ZhbGlnbihHdGsuQWxpZ24uQ0VOVEVSKTsKLS0gICAgICAgICAgICBtZW51X2J1dHRvbi5zZXRf bWVudV9tb2RlbChtZW51KTsKLS0gICAgICAgICAgICBtZW51X2J1dHRvbi5zZXRfdG9vbHRpcF90 ZXh0KF8oIk1lbnUiKSk7Ci0tICAgICAgICAgICAgcGFja19lbmQobWVudV9idXR0b24pOwotLSAg ICAgICAgfQotLSAgICAgICAgcHVibGljIG5ldyB2b2lkIHNldF90aXRsZShzdHJpbmcgdGl0bGUp IHsKLS0gICAgICAgICAgICBtX3RpdGxlX2xhYmVsLnNldF90ZXh0KHRpdGxlKTsKLS0gICAgICAg IH0KLS0gICAgICAgIHB1YmxpYyB2b2lkIHNldF9sYW5nX2xhYmVsKHN0cmluZyBzdHIpIHsKLS0g ICAgICAgICAgICBtX2xhbmdfbGFiZWwuc2V0X3RleHQoc3RyKTsKLS0gICAgICAgIH0KLS0gICAg fQotICAgICBwcml2YXRlIGNsYXNzIExvYWRQcm9ncmVzc09iamVjdCA6IEdMaWIuT2JqZWN0IHsK LSAgICAgICAgIHB1YmxpYyBMb2FkUHJvZ3Jlc3NPYmplY3QoKSB7Ci0gICAgICAgICB9Ci1AQCAt Mjc1LDYgKzIzOCw4IEBAIHB1YmxpYyBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlv bldpbmRvdyB7Ci0gICAgICAgICBCQUNLV0FSRCwKLSAgICAgfQotIAotKyAgICBwdWJsaWMgY29u c3QgdWludCBCVVRUT05fQ0xPU0VfQlVUVE9OID0gMTAwMDsKLSsKLSAgICAgcHJpdmF0ZSBjb25z dCB1aW50IEVNT0pJX0dSSURfUEFHRSA9IDEwOwotICAgICBwcml2YXRlIGNvbnN0IHN0cmluZyBF TU9KSV9DQVRFR09SWV9GQVZPUklURVMgPSBOXygiRmF2b3JpdGVzIik7Ci0gICAgIHByaXZhdGUg Y29uc3Qgc3RyaW5nIEVNT0pJX0NBVEVHT1JZX09USEVSUyA9IE5fKCJPdGhlcnMiKTsKLUBAIC0z MTMsMTEgKzI3OCwxOSBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRp b25XaW5kb3cgewotICAgICBwcml2YXRlIHN0YXRpYyBib29sIG1fc2hvd191bmljb2RlID0gZmFs c2U7Ci0gICAgIHByaXZhdGUgc3RhdGljIExvYWRQcm9ncmVzc09iamVjdCBtX3VuaWNvZGVfcHJv Z3Jlc3Nfb2JqZWN0OwotICAgICBwcml2YXRlIHN0YXRpYyBib29sIG1fbG9hZGVkX3VuaWNvZGUg PSBmYWxzZTsKLSsgICAgcHJpdmF0ZSBzdGF0aWMgc3RyaW5nIG1fd2FybmluZ19tZXNzYWdlID0g IiI7Ci0gCi0gICAgIHByaXZhdGUgVGhlbWVkUkdCQSBtX3JnYmE7Ci0gICAgIHByaXZhdGUgR3Rr LkJveCBtX3Zib3g7Ci0tICAgIHByaXZhdGUgRVRpdGxlTGFiZWxCb3ggbV90aXRsZTsKLSAgICAg cHJpdmF0ZSBFRW50cnkgbV9lbnRyeTsKLSsgICAgLyogSWYgZW1vamllciBpcyBlbW9qaSBjYXRl Z29yeSBsaXN0IG9yIFVuaWNvZGUgY2F0ZWdvcnkgbGlzdCwKLSsgICAgICogbV9hbm5vdGF0aW9u IGlzICIiIGFuZCBwcmVlZGl0IGlzIGFsc28gIiIuCi0rICAgICAqIElmIGVtb2ppZXIgaXMgY2Fu ZGlkYXRlIG1vZGUsIG1fYW5ub3RhdGlvbiBpcyBhbiBhbm5vdGF0aW9uIGFuZAotKyAgICAgKiBn ZXRfY3VycmVudF9jYW5kaWRhdGUoKSByZXR1cm5zIHRoZSBjdXJyZW50IGVtb2ppLgotKyAgICAg KiBCdXQgdGhlIGN1cnJlbnQgcHJlZWRpdCBjYW4gYmUgIiIgaW4gY2FuZGlkYXRlIG1vZGUgaW4g Y2FzZSB0aGF0Ci0rICAgICAqIFVuaWNvZGUgY2FuZGlkYXRlIHdpbmRvdyBoYXMgVSswMDAwLgot KyAgICAgKi8KLSsgICAgcHJpdmF0ZSBzdHJpbmcgbV9hbm5vdGF0aW9uID0gIiI7Ci0gICAgIHBy aXZhdGUgc3RyaW5nPyBtX2JhY2t3YXJkOwotICAgICBwcml2YXRlIGludCBtX2JhY2t3YXJkX2lu ZGV4ID0gLTE7Ci0gICAgIHByaXZhdGUgRVNjcm9sbGVkV2luZG93PyBtX3Njcm9sbGVkX3dpbmRv dyA9IG51bGw7Ci1AQCAtMzI2LDggKzI5OSwyMCBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIg OiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICBwcml2YXRlIHN0cmluZyBtX2lucHV0X2Nv bnRleHRfcGF0aCA9ICIiOwotICAgICBwcml2YXRlIEdMaWIuTWFpbkxvb3A/IG1fbG9vcDsKLSAg ICAgcHJpdmF0ZSBzdHJpbmc/IG1fcmVzdWx0OwotLSAgICBwcml2YXRlIHN0cmluZz8gbV91bmlj b2RlX3BvaW50ID0gbnVsbDsKLSsgICAgLyogSWYgbV9jYW5kaWRhdGVfcGFuZWxfaXNfdmlzaWJs ZSBpcyB0cnVlLCBlbW9qaWVyIGlzIGNhbmRpZGF0ZSBtb2RlIGFuZAotKyAgICAgKiB0aGUgZW1v amkgbG9va3VwIHdpbmRvdyBpcyB2aXNpYmxlLgotKyAgICAgKiBJZiBtX2NhbmRpZGF0ZV9wYW5l bF9pc192aXNpYmxlIGlzIGZhbHNlLCB0aGUgZW1vamkgbG9va3VwIHdpbmRvdyBpcwotKyAgICAg KiBub3QgdmlzaWJsZSBidXQgdGhlIG1vZGUgaXMgbm90IGNsZWFyLgotKyAgICAgKi8KLSAgICAg cHJpdmF0ZSBib29sIG1fY2FuZGlkYXRlX3BhbmVsX2lzX3Zpc2libGU7Ci0rICAgIC8qIElmIG1f Y2FuZGlkYXRlX3BhbmVsX21vZGUgaXMgdHJ1ZSwgZW1vamllciBpcyBjYW5kaWRhdGUgbW9kZSBh bmQKLSsgICAgICogaXQgZG9lcyBub3QgZGVwZW5kIG9uIHdoZXRoZXIgdGhlIHdpbmRvdyBpcyB2 aXNpYmxlIG9yIG5vdC4KLSsgICAgICogSS5FLiB0aGUgZmlyc3QgY2FuZGlkYXRlIGRvZXMgbm90 IHNob3cgdGhlIGxvb2t1cCB3aW5kb3cgYW5kIHRoZQotKyAgICAgKiBzZWNvbmQgb25lIHNob3dz IHRoZSB3aW5kb3cuCi0rICAgICAqIElmIG1fY2FuZGlkYXRlX3BhbmVsX21vZGUgaXMgZmFsc2Us IGVtb2ppZXIgaXMgZW1vamkgY2F0ZWdvcnkgbGlzdCBvcgotKyAgICAgKiBVbmljb2RlIGNhdGVn b3J5IGxpc3QuCi0rICAgICAqLwotKyAgICBwcml2YXRlIGJvb2wgbV9jYW5kaWRhdGVfcGFuZWxf bW9kZTsKLSAgICAgcHJpdmF0ZSBpbnQgbV9jYXRlZ29yeV9hY3RpdmVfaW5kZXggPSAtMTsKLSAg ICAgcHJpdmF0ZSBJQnVzLkxvb2t1cFRhYmxlIG1fbG9va3VwX3RhYmxlOwotICAgICBwcml2YXRl IEd0ay5MYWJlbFtdIG1fY2FuZGlkYXRlczsKLUBAIC0zMzcsMjMgKzMyMiwxOCBAQCBwdWJsaWMg Y2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICBwcm90ZWN0 ZWQgc3RhdGljIGRvdWJsZSBtX21vdXNlX3g7Ci0gICAgIHByb3RlY3RlZCBzdGF0aWMgZG91Ymxl IG1fbW91c2VfeTsKLSAgICAgcHJpdmF0ZSBHdGsuUHJvZ3Jlc3NCYXIgbV91bmljb2RlX3Byb2dy ZXNzX2JhcjsKLSsgICAgcHJpdmF0ZSB1aW50IG1fdW5pY29kZV9wcm9ncmVzc19pZDsKLSAgICAg cHJpdmF0ZSBHdGsuTGFiZWwgbV91bmljb2RlX3BlcmNlbnRfbGFiZWw7Ci0gICAgIHByaXZhdGUg ZG91YmxlIG1fdW5pY29kZV9wZXJjZW50OwotKyAgICBwcml2YXRlIEdkay5SZWN0YW5nbGUgbV9j dXJzb3JfbG9jYXRpb247Ci0rICAgIHByaXZhdGUgYm9vbCBtX2lzX3VwX3NpZGVfZG93biA9IGZh bHNlOwotKyAgICBwcml2YXRlIHVpbnQgbV9yZWRyYXdfd2luZG93X2lkOwotIAotICAgICBwdWJs aWMgc2lnbmFsIHZvaWQgY2FuZGlkYXRlX2NsaWNrZWQodWludCBpbmRleCwgdWludCBidXR0b24s IHVpbnQgc3RhdGUpOwotIAotICAgICBwdWJsaWMgSUJ1c0Vtb2ppZXIoKSB7Ci0gICAgICAgICBH TGliLk9iamVjdCgKLS0gICAgICAgICAgICB0eXBlIDogR3RrLldpbmRvd1R5cGUuVE9QTEVWRUws Ci0tICAgICAgICAgICAgZXZlbnRzIDogR2RrLkV2ZW50TWFzay5LRVlfUFJFU1NfTUFTSyB8Ci0t ICAgICAgICAgICAgICAgICAgICAgR2RrLkV2ZW50TWFzay5LRVlfUkVMRUFTRV9NQVNLIHwKLS0g ICAgICAgICAgICAgICAgICAgICBHZGsuRXZlbnRNYXNrLkJVVFRPTl9QUkVTU19NQVNLIHwKLS0g ICAgICAgICAgICAgICAgICAgICBHZGsuRXZlbnRNYXNrLkJVVFRPTl9SRUxFQVNFX01BU0ssCi0t ICAgICAgICAgICAgd2luZG93X3Bvc2l0aW9uIDogR3RrLldpbmRvd1Bvc2l0aW9uLkNFTlRFUiwK LS0gICAgICAgICAgICBpY29uX25hbWU6ICJpYnVzLXNldHVwIiwKLS0gICAgICAgICAgICBhY2Nl cHRfZm9jdXMgOiB0cnVlLAotLSAgICAgICAgICAgIHJlc2l6YWJsZSA6IHRydWUsCi0tICAgICAg ICAgICAgZm9jdXNfdmlzaWJsZSA6IHRydWUKLSsgICAgICAgICAgICB0eXBlIDogR3RrLldpbmRv d1R5cGUuUE9QVVAKLSAgICAgICAgICk7Ci0gCi0gICAgICAgICAvLyBHTGliLkFjdGlvbkVudHJ5 IGFjY2VwdHMgY29uc3QgdmFyaWFibGVzIG9ubHkuCi1AQCAtMzYzLDYgKzM0Myw5IEBAIHB1Ymxp YyBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7Ci0gICAgICAgICAg ICAgICAgIG5ldyBHTGliLlZhcmlhbnQuYm9vbGVhbihtX3Nob3dfZW1vamlfdmFyaWFudCkpOwot ICAgICAgICAgYWN0aW9uLmFjdGl2YXRlLmNvbm5lY3QoY2hlY2tfYWN0aW9uX3ZhcmlhbnRfY2Ip OwotICAgICAgICAgYWRkX2FjdGlvbihhY3Rpb24pOwotKyAgICAgICAgYWN0aW9uID0gbmV3IEdM aWIuU2ltcGxlQWN0aW9uKCJjbG9zZSIsIG51bGwpOwotKyAgICAgICAgYWN0aW9uLmFjdGl2YXRl LmNvbm5lY3QoYWN0aW9uX2Nsb3NlX2NiKTsKLSsgICAgICAgIGFkZF9hY3Rpb24oYWN0aW9uKTsK LSAgICAgICAgIGlmIChtX2N1cnJlbnRfbGFuZ19pZCA9PSBudWxsKQotICAgICAgICAgICAgIG1f Y3VycmVudF9sYW5nX2lkID0gImVuIjsKLSAgICAgICAgIGlmIChtX2Vtb2ppX2ZvbnRfZmFtaWx5 ID09IG51bGwpCi1AQCAtNDQ4LDE0ICs0MzEsMTIgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVy IDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKLSAgICAgICAgICAgICAgICAgY3NzX3Byb3ZpZGVy LAotICAgICAgICAgICAgICAgICBHdGsuU1RZTEVfUFJPVklERVJfUFJJT1JJVFlfQVBQTElDQVRJ T04pOwotIAotLSAgICAgICAgbV90aXRsZSA9IG5ldyBFVGl0bGVMYWJlbEJveChfKCJFbW9qaSBD aG9pY2UiKSk7Ci0tICAgICAgICBzZXRfdGl0bGViYXIobV90aXRsZSk7Ci0gICAgICAgICBtX3Zi b3ggPSBuZXcgR3RrLkJveChHdGsuT3JpZW50YXRpb24uVkVSVElDQUwsIDApOwotICAgICAgICAg YWRkKG1fdmJveCk7Ci0gCi0gICAgICAgICBtX2VudHJ5ID0gbmV3IEVFbnRyeSgpOwotICAgICAg ICAgbV9lbnRyeS5zZXRfcGxhY2Vob2xkZXJfdGV4dChfKCJUeXBlIGFubm90YXRpb24gb3IgY2hv b3NlIGVtb2ppIikpOwotLSAgICAgICAgbV92Ym94LmFkZChtX2VudHJ5KTsKLSsgICAgICAgIC8v bV92Ym94LmFkZChtX2VudHJ5KTsKLSAgICAgICAgIG1fZW50cnkuY2hhbmdlZC5jb25uZWN0KCgp ID0+IHsKLSAgICAgICAgICAgICB1cGRhdGVfY2FuZGlkYXRlX3dpbmRvdygpOwotICAgICAgICAg fSk7Ci1AQCAtNDgwLDEwICs0NjEsMTYgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3Rr LkFwcGxpY2F0aW9uV2luZG93IHsKLSAgICAgICAgICAgICAgICAgbV9sb29wLnF1aXQoKTsKLSAg ICAgICAgIH0pOwotIAotKyAgICAgICAgc2l6ZV9hbGxvY2F0ZS5jb25uZWN0KCh3LCBhKSA9PiB7 Ci0rICAgICAgICAgICAgYWRqdXN0X3dpbmRvd19wb3NpdGlvbigpOwotKyAgICAgICAgfSk7Ci0r Ci0gICAgICAgICBjYW5kaWRhdGVfY2xpY2tlZC5jb25uZWN0KChpLCBiLCBzKSA9PiB7Ci0tICAg ICAgICAgICAgY2FuZGlkYXRlX3BhbmVsX3NlbGVjdF9pbmRleChpKTsKLSsgICAgICAgICAgICBp ZiAobV9pbnB1dF9jb250ZXh0X3BhdGggIT0gIiIpCi0rICAgICAgICAgICAgICAgIGNhbmRpZGF0 ZV9wYW5lbF9zZWxlY3RfaW5kZXgoaSwgYik7Ci0gICAgICAgICB9KTsKLSAKLSsKLSAgICAgICAg IGlmIChtX2Fubm90YXRpb25fdG9fZW1vamlzX2RpY3QgPT0gbnVsbCkgewotICAgICAgICAgICAg IHJlbG9hZF9lbW9qaV9kaWN0KCk7Ci0gICAgICAgICB9Ci1AQCAtODE0LDYgKzgwMSwxMiBAQCBw dWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotIAotIAot ICAgICBwcml2YXRlIHZvaWQgcmVtb3ZlX2FsbF9jaGlsZHJlbigpIHsKLSsgICAgICAgIGlmICht X2xpc3RfYm94ICE9IG51bGwpIHsKLSsgICAgICAgICAgICBmb3JlYWNoIChHdGsuV2lkZ2V0IHcg aW4gbV9saXN0X2JveC5nZXRfY2hpbGRyZW4oKSkgewotKyAgICAgICAgICAgICAgICB3LmRlc3Ry b3koKTsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgbV9saXN0X2JveCA9IG51bGw7Ci0r ICAgICAgICB9Ci0gICAgICAgICBmb3JlYWNoIChHdGsuV2lkZ2V0IHcgaW4gbV92Ym94LmdldF9j aGlsZHJlbigpKSB7Ci0gICAgICAgICAgICAgaWYgKHcubmFtZSA9PSAiSUJ1c0Vtb2ppZXJFbnRy eSIgfHwKLSAgICAgICAgICAgICAgICAgdy5uYW1lID09ICJJQnVzRW1vamllclRpdGxlTGFiZWxC b3giKSB7Ci1AQCAtODI0LDE1ICs4MTcsNDAgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDog R3RrLkFwcGxpY2F0aW9uV2luZG93IHsKLSAgICAgfQotIAotIAotKyAgICBwcml2YXRlIHZvaWQg Y2xhbXBfcGFnZSgpIHsKLSsgICAgICAgIEd0ay5MaXN0Qm94Um93IHJvdzsKLSsgICAgICAgIGlm IChtX2NhdGVnb3J5X2FjdGl2ZV9pbmRleCA+PSAwKSB7Ci0rICAgICAgICAgICAgcm93ID0gbV9s aXN0X2JveC5nZXRfcm93X2F0X2luZGV4KG1fY2F0ZWdvcnlfYWN0aXZlX2luZGV4KTsKLSsgICAg ICAgICAgICBtX2xpc3RfYm94LnNlbGVjdF9yb3cocm93KTsKLSsgICAgICAgIH0gZWxzZSB7Ci0r ICAgICAgICAgICAgcm93ID0gbV9saXN0X2JveC5nZXRfcm93X2F0X2luZGV4KDApOwotKyAgICAg ICAgfQotKyAgICAgICAgR3RrLkFsbG9jYXRpb24gYWxsb2MgPSB7IDAsIDAsIDAsIDAgfTsKLSsg ICAgICAgIHJvdy5nZXRfYWxsb2NhdGlvbihvdXQgYWxsb2MpOwotKyAgICAgICAgdmFyIGFkanVz dG1lbnQgPSBtX3Njcm9sbGVkX3dpbmRvdy5nZXRfdmFkanVzdG1lbnQoKTsKLSsgICAgICAgIGFk anVzdG1lbnQuY2xhbXBfcGFnZShhbGxvYy55LCBhbGxvYy55ICsgYWxsb2MuaGVpZ2h0KTsKLSsg ICAgICAgIHJldHVybl92YWxfaWZfZmFpbChtX2NhdGVnb3J5X2FjdGl2ZV9pbmRleCA+PSAwLCBm YWxzZSk7Ci0rICAgICAgICBtX2xvb2t1cF90YWJsZS5zZXRfY3Vyc29yX3BvcygodWludCltX2Nh dGVnb3J5X2FjdGl2ZV9pbmRleCk7Ci0rICAgIH0KLSsKLSsKLSAgICAgcHJpdmF0ZSB2b2lkIHNo b3dfY2F0ZWdvcnlfbGlzdCgpIHsKLSsgICAgICAgIC8vIERvIG5vdCBjYWxsIHJlbW92ZV9hbGxf Y2hpbGRyZW4oKSB0byB3b3JrIGFkanVzdG1lbnQuY2xhbXBfcGFnZSgpCi0rICAgICAgICAvLyB3 aXRoIFBhZ2VVcC9Eb3duLgotKyAgICAgICAgLy8gQWZ0ZXIgc2hvd19jYW5kaWRhdGVfcGFuZWwo KSBpcyBjYWxsZWQsIG1fY2F0ZWdvcnlfYWN0aXZlX2luZGV4Ci0rICAgICAgICAvLyBpcyBzYXZl ZCBmb3IgRXNjYXBlIGtleSBidXQgbV9saXN0X2JveCBpcyBudWxsIGJ5Ci0rICAgICAgICAvLyBy ZW1vdmVfYWxsX2NoaWxkcmVuKCkuCi0rICAgICAgICBpZiAobV9jYXRlZ29yeV9hY3RpdmVfaW5k ZXggPj0gMCAmJiBtX2xpc3RfYm94ICE9IG51bGwpIHsKLSsgICAgICAgICAgICB2YXIgcm93ID0g bV9saXN0X2JveC5nZXRfcm93X2F0X2luZGV4KG1fY2F0ZWdvcnlfYWN0aXZlX2luZGV4KTsKLSsg ICAgICAgICAgICBtX2xpc3RfYm94LnNlbGVjdF9yb3cocm93KTsKLSsgICAgICAgICAgICByZXR1 cm47Ci0rICAgICAgICB9Ci0rICAgICAgICBpZiAobV9jYXRlZ29yeV9hY3RpdmVfaW5kZXggPCAw KQotKyAgICAgICAgICAgIG1fY2F0ZWdvcnlfYWN0aXZlX2luZGV4ID0gMDsKLSAgICAgICAgIHJl bW92ZV9hbGxfY2hpbGRyZW4oKTsKLSAgICAgICAgIG1fc2Nyb2xsZWRfd2luZG93ID0gbmV3IEVT Y3JvbGxlZFdpbmRvdygpOwotICAgICAgICAgc2V0X2ZpeGVkX3NpemUoKTsKLSAKLS0gICAgICAg IG1fdGl0bGUuc2V0X3RpdGxlKF8oIkVtb2ppIENob2ljZSIpKTsKLS0gICAgICAgIHN0cmluZyBs YW5ndWFnZSA9Ci0tICAgICAgICAgICAgSUJ1cy5nZXRfbGFuZ3VhZ2VfbmFtZShtX2N1cnJlbnRf bGFuZ19pZCk7Ci0tICAgICAgICBtX3RpdGxlLnNldF9sYW5nX2xhYmVsKGxhbmd1YWdlKTsKLSAg ICAgICAgIG1fdmJveC5hZGQobV9zY3JvbGxlZF93aW5kb3cpOwotICAgICAgICAgR3RrLlZpZXdw b3J0IHZpZXdwb3J0ID0gbmV3IEd0ay5WaWV3cG9ydChudWxsLCBudWxsKTsKLSAgICAgICAgIG1f c2Nyb2xsZWRfd2luZG93LmFkZCh2aWV3cG9ydCk7Ci1AQCAtODQyLDUzICs4NjAsMjEgQEAgcHVi bGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKLSAgICAgICAg IEd0ay5BZGp1c3RtZW50IGFkanVzdG1lbnQgPSBtX3Njcm9sbGVkX3dpbmRvdy5nZXRfdmFkanVz dG1lbnQoKTsKLSAgICAgICAgIG1fbGlzdF9ib3guc2V0X2FkanVzdG1lbnQoYWRqdXN0bWVudCk7 Ci0gICAgICAgICBtX2xpc3RfYm94LnJvd19hY3RpdmF0ZWQuY29ubmVjdCgoYm94LCBndGtyb3cp ID0+IHsKLS0gICAgICAgICAgICBtX2NhdGVnb3J5X2FjdGl2ZV9pbmRleCA9IC0xOwotKyAgICAg ICAgICAgIG1fY2F0ZWdvcnlfYWN0aXZlX2luZGV4ID0gZ3Rrcm93LmdldF9pbmRleCgpOwotICAg ICAgICAgICAgIEVCb3hSb3cgcm93ID0gZ3Rrcm93IGFzIEVCb3hSb3c7Ci0gICAgICAgICAgICAg c2hvd19lbW9qaV9mb3JfY2F0ZWdvcnkocm93LnRleHQpOwotKyAgICAgICAgICAgIHNob3dfYWxs KCk7Ci0gICAgICAgICB9KTsKLSAKLS0gICAgICAgIHVpbnQgbiA9IDA7Ci0tICAgICAgICBpZiAo bV9mYXZvcml0ZXMubGVuZ3RoID4gMCkgewotLSAgICAgICAgICAgIEVCb3hSb3cgcm93ID0gbmV3 IEVCb3hSb3coRU1PSklfQ0FURUdPUllfRkFWT1JJVEVTKTsKLS0gICAgICAgICAgICBFUGFkZGVk TGFiZWxCb3ggd2lkZ2V0ID0KLS0gICAgICAgICAgICAgICAgICAgIG5ldyBFUGFkZGVkTGFiZWxC b3goXyhFTU9KSV9DQVRFR09SWV9GQVZPUklURVMpLAotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBHdGsuQWxpZ24uQ0VOVEVSKTsKLS0gICAgICAgICAgICByb3cuYWRk KHdpZGdldCk7Ci0tICAgICAgICAgICAgbV9saXN0X2JveC5hZGQocm93KTsKLS0gICAgICAgICAg ICBpZiAobisrID09IG1fY2F0ZWdvcnlfYWN0aXZlX2luZGV4KQotLSAgICAgICAgICAgICAgICBt X2xpc3RfYm94LnNlbGVjdF9yb3cocm93KTsKLS0gICAgICAgIH0KLS0gICAgICAgIEdMaWIuTGlz dDx1bm93bmVkIHN0cmluZz4gY2F0ZWdvcmllcyA9Ci0tICAgICAgICAgICAgICAgIG1fY2F0ZWdv cnlfdG9fZW1vamlzX2RpY3QuZ2V0X2tleXMoKTsKLS0gICAgICAgIC8vIEZJWE1FOiBIb3cgdG8g Y2FzdCBHTGliLkNvbXBhcmVGdW5jPHN0cmluZz4gdG8gc3RyY21wPwotLSAgICAgICAgY2F0ZWdv cmllcy5zb3J0KChhLCBiKSA9PiB7Ci0tICAgICAgICAgICAgaWYgKGEgPT0gRU1PSklfQ0FURUdP UllfT1RIRVJTICYmIGIgIT0gRU1PSklfQ0FURUdPUllfT1RIRVJTKQotLSAgICAgICAgICAgICAg ICByZXR1cm4gMTsKLS0gICAgICAgICAgICBlbHNlIGlmIChhICE9IEVNT0pJX0NBVEVHT1JZX09U SEVSUyAmJiBiID09IEVNT0pJX0NBVEVHT1JZX09USEVSUykKLS0gICAgICAgICAgICAgICAgcmV0 dXJuIC0xOwotLSAgICAgICAgICAgIHJldHVybiBHTGliLnN0cmNtcChfKGEpLCBfKGIpKTsKLS0g ICAgICAgIH0pOwotLSAgICAgICAgZm9yZWFjaCAodW5vd25lZCBzdHJpbmcgY2F0ZWdvcnkgaW4g Y2F0ZWdvcmllcykgewotLSAgICAgICAgICAgIC8vICJPdGhlcnMiIGNhdGVnb3J5IGluY2x1ZGVz IG5leHQgdW5pY29kZSBjaGFycyBhbmQgZm9udHMgZG8gbm90IHN1cHBvcnQKLS0gICAgICAgICAg ICAvLyB0aGUgYmFzZSBhbmQgdmFyaW50cyB5ZXQuCi0tICAgICAgICAgICAgaWYgKGNhdGVnb3J5 ID09IEVNT0pJX0NBVEVHT1JZX09USEVSUykKLS0gICAgICAgICAgICAgICBjb250aW51ZTsKLSsg ICAgICAgIHVpbnQgbmNhbmRpZGF0ZXMgPSBtX2xvb2t1cF90YWJsZS5nZXRfbnVtYmVyX29mX2Nh bmRpZGF0ZXMoKTsKLSsgICAgICAgIGZvciAodWludCBpID0gMDsgaSA8IG5jYW5kaWRhdGVzOyBp KyspIHsKLSsgICAgICAgICAgICBzdHJpbmcgY2F0ZWdvcnkgPSBtX2xvb2t1cF90YWJsZS5nZXRf Y2FuZGlkYXRlKGkpLnRleHQ7Ci0gICAgICAgICAgICAgRUJveFJvdyByb3cgPSBuZXcgRUJveFJv dyhjYXRlZ29yeSk7Ci0gICAgICAgICAgICAgRVBhZGRlZExhYmVsQm94IHdpZGdldCA9Ci0gICAg ICAgICAgICAgICAgICAgICBuZXcgRVBhZGRlZExhYmVsQm94KF8oY2F0ZWdvcnkpLCBHdGsuQWxp Z24uQ0VOVEVSKTsKLSAgICAgICAgICAgICByb3cuYWRkKHdpZGdldCk7Ci0gICAgICAgICAgICAg bV9saXN0X2JveC5hZGQocm93KTsKLS0gICAgICAgICAgICBpZiAobisrID09IG1fY2F0ZWdvcnlf YWN0aXZlX2luZGV4KQotLSAgICAgICAgICAgICAgICBtX2xpc3RfYm94LnNlbGVjdF9yb3cocm93 KTsKLS0gICAgICAgIH0KLS0gICAgICAgIGlmIChtX3VuaWNvZGVfYmxvY2tfbGlzdC5sZW5ndGgo KSA+IDApIHsKLS0gICAgICAgICAgICBFQm94Um93IHJvdyA9IG5ldyBFQm94Um93KEVNT0pJX0NB VEVHT1JZX1VOSUNPREUpOwotLSAgICAgICAgICAgIEVQYWRkZWRMYWJlbEJveCB3aWRnZXQgPQot LSAgICAgICAgICAgICAgICAgICAgbmV3IEVQYWRkZWRMYWJlbEJveChfKEVNT0pJX0NBVEVHT1JZ X1VOSUNPREUpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHdGsu QWxpZ24uQ0VOVEVSKTsKLS0gICAgICAgICAgICByb3cuYWRkKHdpZGdldCk7Ci0tICAgICAgICAg ICAgbV9saXN0X2JveC5hZGQocm93KTsKLS0gICAgICAgICAgICBpZiAobisrID09IG1fY2F0ZWdv cnlfYWN0aXZlX2luZGV4KQotKyAgICAgICAgICAgIGlmIChpID09IG1fY2F0ZWdvcnlfYWN0aXZl X2luZGV4KQotICAgICAgICAgICAgICAgICBtX2xpc3RfYm94LnNlbGVjdF9yb3cocm93KTsKLSAg ICAgICAgIH0KLSAKLUBAIC05MDMsNiArODg5LDcgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVy IDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKLSAgICAgcHJpdmF0ZSB2b2lkIHNob3dfZW1vamlf Zm9yX2NhdGVnb3J5KHN0cmluZyBjYXRlZ29yeSkgewotICAgICAgICAgaWYgKGNhdGVnb3J5ID09 IEVNT0pJX0NBVEVHT1JZX0ZBVk9SSVRFUykgewotICAgICAgICAgICAgIG1fbG9va3VwX3RhYmxl LmNsZWFyKCk7Ci0rICAgICAgICAgICAgbV9jYW5kaWRhdGVfcGFuZWxfbW9kZSA9IHRydWU7Ci0g ICAgICAgICAgICAgZm9yZWFjaCAodW5vd25lZCBzdHJpbmcgZmF2b3JhdGUgaW4gbV9mYXZvcml0 ZXMpIHsKLSAgICAgICAgICAgICAgICAgSUJ1cy5UZXh0IHRleHQgPSBuZXcgSUJ1cy5UZXh0LmZy b21fc3RyaW5nKGZhdm9yYXRlKTsKLSAgICAgICAgICAgICAgICAgbV9sb29rdXBfdGFibGUuYXBw ZW5kX2NhbmRpZGF0ZSh0ZXh0KTsKLUBAIC05MTEsMjUgKzg5OCwyNiBAQCBwdWJsaWMgY2xhc3Mg SUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICAgICAgfSBlbHNlIGlm IChjYXRlZ29yeSA9PSBFTU9KSV9DQVRFR09SWV9VTklDT0RFKSB7Ci0gICAgICAgICAgICAgbV9j YXRlZ29yeV9hY3RpdmVfaW5kZXggPSAtMTsKLSAgICAgICAgICAgICBtX3Nob3dfdW5pY29kZSA9 IHRydWU7Ci0tICAgICAgICAgICAgc2hvd191bmljb2RlX2Jsb2NrcygpOwotKyAgICAgICAgICAg IHVwZGF0ZV91bmljb2RlX2Jsb2NrcygpOwotICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg IH0gZWxzZSB7Ci0gICAgICAgICAgICAgdW5vd25lZCBHTGliLlNMaXN0PHVub3duZWQgc3RyaW5n PiBlbW9qaXMgPQotICAgICAgICAgICAgICAgICAgICAgbV9jYXRlZ29yeV90b19lbW9qaXNfZGlj dC5sb29rdXAoY2F0ZWdvcnkpOwotICAgICAgICAgICAgIG1fbG9va3VwX3RhYmxlLmNsZWFyKCk7 Ci0rICAgICAgICAgICAgbV9jYW5kaWRhdGVfcGFuZWxfbW9kZSA9IHRydWU7Ci0gICAgICAgICAg ICAgZm9yZWFjaCAodW5vd25lZCBzdHJpbmcgZW1vamkgaW4gZW1vamlzKSB7Ci0gICAgICAgICAg ICAgICAgIElCdXMuVGV4dCB0ZXh0ID0gbmV3IElCdXMuVGV4dC5mcm9tX3N0cmluZyhlbW9qaSk7 Ci0gICAgICAgICAgICAgICAgIG1fbG9va3VwX3RhYmxlLmFwcGVuZF9jYW5kaWRhdGUodGV4dCk7 Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIG1fYmFja3dhcmQgPSBjYXRlZ29yeTsKLSAg ICAgICAgIH0KLSsgICAgICAgIG1fYW5ub3RhdGlvbiA9IG1fbG9va3VwX3RhYmxlLmdldF9jYW5k aWRhdGUoMCkudGV4dDsKLSAgICAgICAgIC8vIFJlc3RvcmUgdGhlIGN1cnNvciBwb3NpdGlvbiBi ZWZvcmUgdGhlIHNwZWNpYWwgdGFibGUgb2YKLSAgICAgICAgIC8vIGVtb2ppIHZhcmlhbnRzIGlz IHNob3duLgotICAgICAgICAgaWYgKG1fYmFja3dhcmRfaW5kZXggPj0gMCkgewotICAgICAgICAg ICAgIG1fbG9va3VwX3RhYmxlLnNldF9jdXJzb3JfcG9zKCh1aW50KW1fYmFja3dhcmRfaW5kZXgp OwotICAgICAgICAgICAgIG1fYmFja3dhcmRfaW5kZXggPSAtMTsKLSAgICAgICAgIH0KLS0gICAg ICAgIHNob3dfY2FuZGlkYXRlX3BhbmVsKCk7Ci0gICAgIH0KLSAKLSAKLUBAIC05NDAsMTggKzky OCwyOCBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cg ewotICAgICAgICAgICAgIElCdXMuVGV4dCB0ZXh0ID0gbmV3IElCdXMuVGV4dC5mcm9tX3N0cmlu ZyhlbW9qaSk7Ci0gICAgICAgICAgICAgbV9sb29rdXBfdGFibGUuYXBwZW5kX2NhbmRpZGF0ZSh0 ZXh0KTsKLSAgICAgICAgIH0KLS0gICAgICAgIHNob3dfY2FuZGlkYXRlX3BhbmVsKCk7Ci0gICAg IH0KLSAKLSAKLSAgICAgcHJpdmF0ZSB2b2lkIHNob3dfdW5pY29kZV9ibG9ja3MoKSB7Ci0rICAg ICAgICAvLyBEbyBub3QgY2FsbCByZW1vdmVfYWxsX2NoaWxkcmVuKCkgdG8gd29yayBhZGp1c3Rt ZW50LmNsYW1wX3BhZ2UoKQotKyAgICAgICAgLy8gd2l0aCBQYWdlVXAvRG93bi4KLSsgICAgICAg IC8vIEFmdGVyIHNob3dfY2FuZGlkYXRlX3BhbmVsKCkgaXMgY2FsbGVkLCBtX2NhdGVnb3J5X2Fj dGl2ZV9pbmRleAotKyAgICAgICAgLy8gaXMgc2F2ZWQgZm9yIEVzY2FwZSBrZXkgYnV0IG1fbGlz dF9ib3ggaXMgbnVsbCBieQotKyAgICAgICAgLy8gcmVtb3ZlX2FsbF9jaGlsZHJlbigpLgotKyAg ICAgICAgaWYgKG1fY2F0ZWdvcnlfYWN0aXZlX2luZGV4ID49IDAgJiYgbV9saXN0X2JveCAhPSBu dWxsKSB7Ci0rICAgICAgICAgICAgdmFyIHJvdyA9IG1fbGlzdF9ib3guZ2V0X3Jvd19hdF9pbmRl eChtX2NhdGVnb3J5X2FjdGl2ZV9pbmRleCk7Ci0rICAgICAgICAgICAgbV9saXN0X2JveC5zZWxl Y3Rfcm93KHJvdyk7Ci0rICAgICAgICAgICAgcmV0dXJuOwotKyAgICAgICAgfQotKyAgICAgICAg aWYgKG1fY2F0ZWdvcnlfYWN0aXZlX2luZGV4IDwgMCkKLSsgICAgICAgICAgICBtX2NhdGVnb3J5 X2FjdGl2ZV9pbmRleCA9IDA7Ci0gICAgICAgICBtX3Nob3dfdW5pY29kZSA9IHRydWU7Ci0gICAg ICAgICBpZiAobV9kZWZhdWx0X3dpbmRvd193aWR0aCA9PSAwICYmIG1fZGVmYXVsdF93aW5kb3df aGVpZ2h0ID09IDApCi0gICAgICAgICAgICAgZ2V0X3NpemUob3V0IG1fZGVmYXVsdF93aW5kb3df d2lkdGgsIG91dCBtX2RlZmF1bHRfd2luZG93X2hlaWdodCk7Ci0gICAgICAgICByZW1vdmVfYWxs X2NoaWxkcmVuKCk7Ci0gICAgICAgICBzZXRfZml4ZWRfc2l6ZSgpOwotIAotLSAgICAgICAgbV90 aXRsZS5zZXRfdGl0bGUoXygiVW5pY29kZSBDaG9pY2UiKSk7Ci0gICAgICAgICBFUGFkZGVkTGFi ZWxCb3ggbGFiZWwgPQotICAgICAgICAgICAgICAgICBuZXcgRVBhZGRlZExhYmVsQm94KF8oIkJy aW5nIGJhY2sgZW1vamkgY2hvaWNlIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgR3RrLkFsaWduLkNFTlRFUiwKLUBAIC05NjQsMTAgKzk2MiwxMCBAQCBwdWJsaWMgY2xh c3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICAgICAgICAgIG1f Y2F0ZWdvcnlfYWN0aXZlX2luZGV4ID0gLTE7Ci0gICAgICAgICAgICAgbV9zaG93X3VuaWNvZGUg PSBmYWxzZTsKLSAgICAgICAgICAgICBoaWRlX2NhbmRpZGF0ZV9wYW5lbCgpOwotKyAgICAgICAg ICAgIHNob3dfYWxsKCk7Ci0gICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICB9KTsK LSAgICAgICAgIG1fc2Nyb2xsZWRfd2luZG93ID0gbmV3IEVTY3JvbGxlZFdpbmRvdygpOwotLSAg ICAgICAgbV90aXRsZS5zZXRfbGFuZ19sYWJlbCgiIik7Ci0gICAgICAgICBtX3Zib3guYWRkKG1f c2Nyb2xsZWRfd2luZG93KTsKLSAgICAgICAgIEd0ay5WaWV3cG9ydCB2aWV3cG9ydCA9IG5ldyBH dGsuVmlld3BvcnQobnVsbCwgbnVsbCk7Ci0gICAgICAgICBtX3Njcm9sbGVkX3dpbmRvdy5hZGQo dmlld3BvcnQpOwotQEAgLTk3Nyw5ICs5NzUsMTAgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVy IDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKLSAgICAgICAgIEd0ay5BZGp1c3RtZW50IGFkanVz dG1lbnQgPSBtX3Njcm9sbGVkX3dpbmRvdy5nZXRfdmFkanVzdG1lbnQoKTsKLSAgICAgICAgIG1f bGlzdF9ib3guc2V0X2FkanVzdG1lbnQoYWRqdXN0bWVudCk7Ci0gICAgICAgICBtX2xpc3RfYm94 LnJvd19hY3RpdmF0ZWQuY29ubmVjdCgoYm94LCBndGtyb3cpID0+IHsKLS0gICAgICAgICAgICBt X2NhdGVnb3J5X2FjdGl2ZV9pbmRleCA9IC0xOwotKyAgICAgICAgICAgIG1fY2F0ZWdvcnlfYWN0 aXZlX2luZGV4ID0gZ3Rrcm93LmdldF9pbmRleCgpOwotICAgICAgICAgICAgIEVCb3hSb3cgcm93 ID0gZ3Rrcm93IGFzIEVCb3hSb3c7Ci0gICAgICAgICAgICAgc2hvd191bmljb2RlX2Zvcl9ibG9j ayhyb3cudGV4dCk7Ci0rICAgICAgICAgICAgc2hvd19jYW5kaWRhdGVfcGFuZWwoKTsKLSAgICAg ICAgIH0pOwotIAotICAgICAgICAgdWludCBuID0gMDsKLUBAIC0xMDA3LDQ0ICsxMDA2LDE4IEBA IHB1YmxpYyBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7Ci0gICAg ICAgICAgICAgbV9saXN0X2JveC51bnNlbGVjdF9hbGwoKTsKLSAgICAgICAgIG1fbGlzdF9ib3gu aW52YWxpZGF0ZV9maWx0ZXIoKTsKLSAgICAgICAgIG1fbGlzdF9ib3guc2V0X3NlbGVjdGlvbl9t b2RlKEd0ay5TZWxlY3Rpb25Nb2RlLlNJTkdMRSk7Ci0rICAgICAgICBHdGsuTGlzdEJveFJvdyBy b3cgPSBtX2xpc3RfYm94LmdldF9yb3dfYXRfaW5kZXgoKGludCluIC0gMSk7Ci0rCi0rICAgICAg ICAvLyBJZiBjbGFtcF9wYWdlKCkgd291bGQgYmUgY2FsbGVkIHdpdGhvdXQgdGhlIGFsbG9jYXRp b24gc2lnbmFsLAotKyAgICAgICAgLy8gdGhlIGp1bXBpbmcgcGFnZSBjb3VsZCBiZSBmYWlsZWQg d2hlbiByZXR1cm5zIGZyb20gCi0rICAgICAgICAvLyBzaG93X3VuaWNvZGVfZm9yX2Jsb2NrKCkg d2l0aCBFc2NhcGUga2V5LgotKyAgICAgICAgcm93LnNpemVfYWxsb2NhdGUuY29ubmVjdCgodywg YSkgPT4gewotKyAgICAgICAgICAgIGNsYW1wX3BhZ2UoKTsKLSsgICAgICAgIH0pOwotICAgICB9 Ci0gCi0rCi0gICAgIHByaXZhdGUgdm9pZCBzaG93X3VuaWNvZGVfZm9yX2Jsb2NrKHN0cmluZyBi bG9ja19uYW1lKSB7Ci0tICAgICAgICBpZiAoIW1fbG9hZGVkX3VuaWNvZGUpIHsKLS0gICAgICAg ICAgICByZW1vdmVfYWxsX2NoaWxkcmVuKCk7Ci0tICAgICAgICAgICAgc2V0X2ZpeGVkX3NpemUo KTsKLS0gICAgICAgICAgICBtX3VuaWNvZGVfcHJvZ3Jlc3NfYmFyID0gbmV3IEd0ay5Qcm9ncmVz c0JhcigpOwotLSAgICAgICAgICAgIG1fdW5pY29kZV9wcm9ncmVzc19iYXIuc2V0X2VsbGlwc2l6 ZShQYW5nby5FbGxpcHNpemVNb2RlLk1JRERMRSk7Ci0tICAgICAgICAgICAgbV91bmljb2RlX3By b2dyZXNzX2Jhci5zZXRfaGFsaWduKEd0ay5BbGlnbi5DRU5URVIpOwotLSAgICAgICAgICAgIG1f dW5pY29kZV9wcm9ncmVzc19iYXIuc2V0X3ZhbGlnbihHdGsuQWxpZ24uQ0VOVEVSKTsKLS0gICAg ICAgICAgICBtX3Zib3guYWRkKG1fdW5pY29kZV9wcm9ncmVzc19iYXIpOwotLSAgICAgICAgICAg IG1fdW5pY29kZV9wcm9ncmVzc19iYXIuc2hvdygpOwotLSAgICAgICAgICAgIHZhciBoYm94ID0g bmV3IEd0ay5Cb3goR3RrLk9yaWVudGF0aW9uLkhPUklaT05UQUwsIDUpOwotLSAgICAgICAgICAg IGhib3guc2V0X2hhbGlnbihHdGsuQWxpZ24uQ0VOVEVSKTsKLS0gICAgICAgICAgICBoYm94LnNl dF92YWxpZ24oR3RrLkFsaWduLkNFTlRFUik7Ci0tICAgICAgICAgICAgbV92Ym94LmFkZChoYm94 KTsKLS0gICAgICAgICAgICB2YXIgbGFiZWwgPSBuZXcgR3RrLkxhYmVsKF8oIkxvYWRpbmcgYSBV bmljb2RlIGRpY3Rpb25hcnk6IikpOwotLSAgICAgICAgICAgIGhib3gucGFja19zdGFydChsYWJl bCwgZmFsc2UsIHRydWUsIDApOwotLSAgICAgICAgICAgIG1fdW5pY29kZV9wZXJjZW50X2xhYmVs ID0gbmV3IEd0ay5MYWJlbCgiIik7Ci0tICAgICAgICAgICAgaGJveC5wYWNrX3N0YXJ0KG1fdW5p Y29kZV9wZXJjZW50X2xhYmVsLCBmYWxzZSwgdHJ1ZSwgMCk7Ci0tICAgICAgICAgICAgaGJveC5z aG93X2FsbCgpOwotLQotLSAgICAgICAgICAgIG1fdW5pY29kZV9wcm9ncmVzc19vYmplY3QuZGVz ZXJpYWxpemVfdW5pY29kZS5jb25uZWN0KChpLCBuKSA9PiB7Ci0tICAgICAgICAgICAgICAgIG1f dW5pY29kZV9wZXJjZW50ID0gKGRvdWJsZSlpIC8gbjsKLS0gICAgICAgICAgICB9KTsKLS0gICAg ICAgICAgICBHTGliLlRpbWVvdXQuYWRkKDEwMCwgKCkgPT4gewotLSAgICAgICAgICAgICAgICBt X3VuaWNvZGVfcHJvZ3Jlc3NfYmFyLnNldF9mcmFjdGlvbihtX3VuaWNvZGVfcGVyY2VudCk7Ci0t ICAgICAgICAgICAgICAgIG1fdW5pY29kZV9wZXJjZW50X2xhYmVsLnNldF90ZXh0KAotLSAgICAg ICAgICAgICAgICAgICAgICAgICIlLjBmJSVcbiIucHJpbnRmKG1fdW5pY29kZV9wZXJjZW50ICog MTAwKSk7Ci0tICAgICAgICAgICAgICAgIG1fdW5pY29kZV9wcm9ncmVzc19iYXIuc2hvdygpOwot LSAgICAgICAgICAgICAgICBtX3VuaWNvZGVfcGVyY2VudF9sYWJlbC5zaG93KCk7Ci0tICAgICAg ICAgICAgICAgIGlmIChtX2xvYWRlZF91bmljb2RlKSB7Ci0tICAgICAgICAgICAgICAgICAgICBz aG93X3VuaWNvZGVfZm9yX2Jsb2NrKGJsb2NrX25hbWUpOwotLSAgICAgICAgICAgICAgICB9Ci0t ICAgICAgICAgICAgICAgIHJldHVybiAhbV9sb2FkZWRfdW5pY29kZTsKLS0gICAgICAgICAgICB9 KTsKLS0gICAgICAgICAgICByZXR1cm47Ci0tICAgICAgICB9Ci0gICAgICAgICB1bmljaGFyIHN0 YXJ0ID0gMDsKLSAgICAgICAgIHVuaWNoYXIgZW5kID0gMDsKLSAgICAgICAgIGZvcmVhY2ggKHVu b3duZWQgSUJ1cy5Vbmljb2RlQmxvY2sgYmxvY2sgaW4gbV91bmljb2RlX2Jsb2NrX2xpc3QpIHsK LUBAIC0xMDU1LDYgKzEwMjgsNyBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBw bGljYXRpb25XaW5kb3cgewotICAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgICAgIG1f bG9va3VwX3RhYmxlLmNsZWFyKCk7Ci0rICAgICAgICBtX2NhbmRpZGF0ZV9wYW5lbF9tb2RlID0g dHJ1ZTsKLSAgICAgICAgIGZvciAodW5pY2hhciBjaCA9IHN0YXJ0OyBjaCA8IGVuZDsgY2grKykg ewotICAgICAgICAgICAgIHVub3duZWQgSUJ1cy5Vbmljb2RlRGF0YT8gZGF0YSA9Ci0gICAgICAg ICAgICAgICAgICAgICBtX3VuaWNvZGVfdG9fZGF0YV9kaWN0Lmxvb2t1cChjaCk7Ci1AQCAtMTA2 NCw3ICsxMDM4LDcgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9u V2luZG93IHsKLSAgICAgICAgICAgICBtX2xvb2t1cF90YWJsZS5hcHBlbmRfY2FuZGlkYXRlKHRl eHQpOwotICAgICAgICAgfQotICAgICAgICAgbV9iYWNrd2FyZCA9IGJsb2NrX25hbWU7Ci0tICAg ICAgICBzaG93X2NhbmRpZGF0ZV9wYW5lbCgpOwotKyAgICAgICAgbV9hbm5vdGF0aW9uID0gbV9s b29rdXBfdGFibGUuZ2V0X2NhbmRpZGF0ZSgwKS50ZXh0OwotICAgICB9Ci0gCi0gCi1AQCAtMTA5 MSw2ICsxMDY1LDQxIEBAIHB1YmxpYyBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlv bldpbmRvdyB7Ci0gICAgICAgICBwcmV2X2J1dHRvbi5zZXRfcmVsaWVmKEd0ay5SZWxpZWZTdHls ZS5OT05FKTsKLSAgICAgICAgIHByZXZfYnV0dG9uLnNldF90b29sdGlwX3RleHQoXygiUGFnZSBV cCIpKTsKLSAKLSsgICAgICAgIHZhciBtZW51ID0gbmV3IEdMaWIuTWVudSgpOwotKyAgICAgICAg bWVudS5hcHBlbmQoXygiU2hvdyBlbW9qaSB2YXJpYW50cyIpLCAid2luLnZhcmlhbnQiKTsKLSsg ICAgICAgIG1lbnUuYXBwZW5kKF8oIkNsb3NlIiksICJ3aW4uY2xvc2UiKTsKLSsgICAgICAgIHZh ciBtZW51X2J1dHRvbiA9IG5ldyBHdGsuTWVudUJ1dHRvbigpOwotKyAgICAgICAgbWVudV9idXR0 b24uc2V0X2RpcmVjdGlvbihHdGsuQXJyb3dUeXBlLk5PTkUpOwotKyAgICAgICAgbWVudV9idXR0 b24uc2V0X3ZhbGlnbihHdGsuQWxpZ24uQ0VOVEVSKTsKLSsgICAgICAgIG1lbnVfYnV0dG9uLnNl dF9tZW51X21vZGVsKG1lbnUpOwotKyAgICAgICAgbWVudV9idXR0b24uc2V0X3JlbGllZihHdGsu UmVsaWVmU3R5bGUuTk9ORSk7Ci0rICAgICAgICBtZW51X2J1dHRvbi5zZXRfdG9vbHRpcF90ZXh0 KF8oIk1lbnUiKSk7Ci0rCi0rICAgICAgICBJQnVzLlRleHQgdGV4dCA9IHRoaXMuZ2V0X3RpdGxl X3RleHQoKTsKLSsgICAgICAgIFBhbmdvLkF0dHJMaXN0IGF0dHJzID0gZ2V0X3BhbmdvX2F0dHJf bGlzdF9mcm9tX2lidXNfdGV4dCh0ZXh0KTsKLSsgICAgICAgIEd0ay5MYWJlbCB0aXRsZV9sYWJl bCA9IG5ldyBHdGsuTGFiZWwodGV4dC5nZXRfdGV4dCgpKTsKLSsgICAgICAgIHRpdGxlX2xhYmVs LnNldF9hdHRyaWJ1dGVzKGF0dHJzKTsKLSsKLSsgICAgICAgIEd0ay5CdXR0b24/IHdhcm5pbmdf YnV0dG9uID0gbnVsbDsKLSsgICAgICAgIGlmIChtX3dhcm5pbmdfbWVzc2FnZSAhPSAiIikgeyAK LSsgICAgICAgICAgICB3YXJuaW5nX2J1dHRvbiA9IG5ldyBHdGsuQnV0dG9uKCk7Ci0rICAgICAg ICAgICAgd2FybmluZ19idXR0b24uc2V0X3Rvb2x0aXBfdGV4dCgKLSsgICAgICAgICAgICAgICAg ICAgIF8oIkNsaWNrIHRvIHZpZXcgYSB3YXJuaW5nIG1lc3NhZ2UiKSk7Ci0rICAgICAgICAgICAg d2FybmluZ19idXR0b24uc2V0X2ltYWdlKG5ldyBHdGsuSW1hZ2UuZnJvbV9pY29uX25hbWUoCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaWFsb2ctd2FybmluZyIsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEd0ay5JY29uU2l6ZS5NRU5VKSk7Ci0rICAg ICAgICAgICAgd2FybmluZ19idXR0b24uc2V0X3JlbGllZihHdGsuUmVsaWVmU3R5bGUuTk9ORSk7 Ci0rICAgICAgICAgICAgd2FybmluZ19idXR0b24uY2xpY2tlZC5jb25uZWN0KCgpID0+IHsKLSsg ICAgICAgICAgICAgICAgR3RrLkxhYmVsIHdhcm5pbmdfbGFiZWwgPSBuZXcgR3RrLkxhYmVsKG1f d2FybmluZ19tZXNzYWdlKTsKLSsgICAgICAgICAgICAgICAgd2FybmluZ19sYWJlbC5zZXRfbGlu ZV93cmFwKHRydWUpOwotKyAgICAgICAgICAgICAgICB3YXJuaW5nX2xhYmVsLnNldF9tYXhfd2lk dGhfY2hhcnMoNDApOwotKyAgICAgICAgICAgICAgICBHdGsuUG9wb3ZlciBwb3BvdmVyID0gbmV3 IEd0ay5Qb3BvdmVyKHdhcm5pbmdfYnV0dG9uKTsKLSsgICAgICAgICAgICAgICAgcG9wb3Zlci5h ZGQod2FybmluZ19sYWJlbCk7Ci0rICAgICAgICAgICAgICAgIHBvcG92ZXIuc2hvd19hbGwoKTsK LSsgICAgICAgICAgICAgICAgcG9wb3Zlci5wb3B1cCgpOwotKyAgICAgICAgICAgIH0pOwotKyAg ICAgICAgfQotKwotICAgICAgICAgR3RrLkJveCBidXR0b25zX2hib3ggPSBuZXcgR3RrLkJveChH dGsuT3JpZW50YXRpb24uSE9SSVpPTlRBTCwgMCk7Ci0gICAgICAgICBHdGsuTGFiZWwgc3RhdGVf bGFiZWwgPSBuZXcgR3RrLkxhYmVsKG51bGwpOwotICAgICAgICAgc3RhdGVfbGFiZWwuc2V0X3Np emVfcmVxdWVzdCgxMCwgLTEpOwotQEAgLTEwOTksMTQgKzExMDgsNTUgQEAgcHVibGljIGNsYXNz IElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKLSAgICAgICAgIGJ1dHRvbnNf aGJveC5wYWNrX3N0YXJ0KHN0YXRlX2xhYmVsLCBmYWxzZSwgdHJ1ZSwgMCk7Ci0gICAgICAgICBi dXR0b25zX2hib3gucGFja19zdGFydChwcmV2X2J1dHRvbiwgZmFsc2UsIGZhbHNlLCAwKTsKLSAg ICAgICAgIGJ1dHRvbnNfaGJveC5wYWNrX3N0YXJ0KG5leHRfYnV0dG9uLCBmYWxzZSwgZmFsc2Us IDApOwotKyAgICAgICAgYnV0dG9uc19oYm94LnBhY2tfc3RhcnQodGl0bGVfbGFiZWwsIGZhbHNl LCBmYWxzZSwgMCk7Ci0rICAgICAgICBpZiAod2FybmluZ19idXR0b24gIT0gbnVsbCkKLSsgICAg ICAgICAgICBidXR0b25zX2hib3gucGFja19zdGFydCh3YXJuaW5nX2J1dHRvbiwgZmFsc2UsIGZh bHNlLCAwKTsKLSsgICAgICAgIGJ1dHRvbnNfaGJveC5wYWNrX2VuZChtZW51X2J1dHRvbiwgZmFs c2UsIGZhbHNlLCAwKTsKLSAgICAgICAgIG1fdmJveC5wYWNrX3N0YXJ0KGJ1dHRvbnNfaGJveCwg ZmFsc2UsIGZhbHNlLCAwKTsKLSAgICAgICAgIGJ1dHRvbnNfaGJveC5zaG93X2FsbCgpOwotICAg ICB9Ci0gCi0gCi0tICAgIHByaXZhdGUgYm9vbCBjaGVja191bmljb2RlX3BvaW50KCkgewotLSAg ICAgICAgc3RyaW5nIGFubm90YXRpb24gPSBtX2VudHJ5LmdldF90ZXh0KCk7Ci0tICAgICAgICBt X3VuaWNvZGVfcG9pbnQgPSBudWxsOwotKyAgICBwcml2YXRlIHZvaWQgc2hvd191bmljb2RlX3By b2dyZXNzX2JhcigpIHsKLSsgICAgICAgIG1fdW5pY29kZV9wcm9ncmVzc19iYXIgPSBuZXcgR3Rr LlByb2dyZXNzQmFyKCk7Ci0rICAgICAgICBtX3VuaWNvZGVfcHJvZ3Jlc3NfYmFyLnNldF9lbGxp cHNpemUoUGFuZ28uRWxsaXBzaXplTW9kZS5NSURETEUpOwotKyAgICAgICAgbV91bmljb2RlX3By b2dyZXNzX2Jhci5zZXRfaGFsaWduKEd0ay5BbGlnbi5DRU5URVIpOwotKyAgICAgICAgbV91bmlj b2RlX3Byb2dyZXNzX2Jhci5zZXRfdmFsaWduKEd0ay5BbGlnbi5DRU5URVIpOwotKyAgICAgICAg bV92Ym94LmFkZChtX3VuaWNvZGVfcHJvZ3Jlc3NfYmFyKTsKLSsgICAgICAgIG1fdW5pY29kZV9w cm9ncmVzc19iYXIuc2hvdygpOwotKyAgICAgICAgdmFyIGhib3ggPSBuZXcgR3RrLkJveChHdGsu T3JpZW50YXRpb24uSE9SSVpPTlRBTCwgNSk7Ci0rICAgICAgICBoYm94LnNldF9oYWxpZ24oR3Rr LkFsaWduLkNFTlRFUik7Ci0rICAgICAgICBoYm94LnNldF92YWxpZ24oR3RrLkFsaWduLkNFTlRF Uik7Ci0rICAgICAgICBtX3Zib3guYWRkKGhib3gpOwotKyAgICAgICAgdmFyIGxhYmVsID0gbmV3 IEd0ay5MYWJlbChfKCJMb2FkaW5nIGEgVW5pY29kZSBkaWN0aW9uYXJ5OiIpKTsKLSsgICAgICAg IGhib3gucGFja19zdGFydChsYWJlbCwgZmFsc2UsIHRydWUsIDApOwotKyAgICAgICAgbV91bmlj b2RlX3BlcmNlbnRfbGFiZWwgPSBuZXcgR3RrLkxhYmVsKCIiKTsKLSsgICAgICAgIGhib3gucGFj a19zdGFydChtX3VuaWNvZGVfcGVyY2VudF9sYWJlbCwgZmFsc2UsIHRydWUsIDApOwotKyAgICAg ICAgaGJveC5zaG93X2FsbCgpOwotKwotKyAgICAgICAgbV91bmljb2RlX3Byb2dyZXNzX29iamVj dC5kZXNlcmlhbGl6ZV91bmljb2RlLmNvbm5lY3QoKGksIG4pID0+IHsKLSsgICAgICAgICAgICBt X3VuaWNvZGVfcGVyY2VudCA9IChkb3VibGUpaSAvIG47Ci0rICAgICAgICB9KTsKLSsgICAgICAg IGlmIChtX3VuaWNvZGVfcHJvZ3Jlc3NfaWQgPiAwKSB7Ci0rICAgICAgICAgICAgR0xpYi5Tb3Vy Y2UucmVtb3ZlKG1fdW5pY29kZV9wcm9ncmVzc19pZCk7Ci0rICAgICAgICB9Ci0rICAgICAgICBt X3VuaWNvZGVfcHJvZ3Jlc3NfaWQgPSBHTGliLlRpbWVvdXQuYWRkKDEwMCwgKCkgPT4gewotKyAg ICAgICAgICAgIG1fdW5pY29kZV9wcm9ncmVzc19pZCA9IDA7Ci0rICAgICAgICAgICAgbV91bmlj b2RlX3Byb2dyZXNzX2Jhci5zZXRfZnJhY3Rpb24obV91bmljb2RlX3BlcmNlbnQpOwotKyAgICAg ICAgICAgIG1fdW5pY29kZV9wZXJjZW50X2xhYmVsLnNldF90ZXh0KAotKyAgICAgICAgICAgICAg ICAgICAgIiUuMGYlJVxuIi5wcmludGYobV91bmljb2RlX3BlcmNlbnQgKiAxMDApKTsKLSsgICAg ICAgICAgICBtX3VuaWNvZGVfcHJvZ3Jlc3NfYmFyLnNob3coKTsKLSsgICAgICAgICAgICBtX3Vu aWNvZGVfcGVyY2VudF9sYWJlbC5zaG93KCk7Ci0rICAgICAgICAgICAgaWYgKG1fbG9hZGVkX3Vu aWNvZGUpIHsKLSsgICAgICAgICAgICAgICAgc2hvd19jYW5kaWRhdGVfcGFuZWwoKTsKLSsgICAg ICAgICAgICB9Ci0rICAgICAgICAgICAgcmV0dXJuICFtX2xvYWRlZF91bmljb2RlOwotKyAgICAg ICAgfSk7Ci0rICAgIH0KLSsKLSsKLSsgICAgcHJpdmF0ZSBzdGF0aWMgc3RyaW5nPyBjaGVja191 bmljb2RlX3BvaW50KHN0cmluZyBhbm5vdGF0aW9uKSB7Ci0rICAgICAgICBzdHJpbmcgdW5pY29k ZV9wb2ludCA9IG51bGw7Ci0gICAgICAgICAvLyBBZGQgIjB4IiBiZWNhdXNlIHVpbnQ2NC5hc2Np aV9zdHJ0b3VsbCgpIGlzIG5vdCBhY2Nlc3NpYmxlCi0gICAgICAgICAvLyBhbmQgbmVlZCB0byB1 c2UgdWludDY0LnBhcnNlKCkKLSAgICAgICAgIHZhciBidWZmID0gbmV3IEdMaWIuU3RyaW5nQnVp bGRlcigiMHgiKTsKLUBAIC0xMTE0LDMzICsxMTY0LDMxIEBAIHB1YmxpYyBjbGFzcyBJQnVzRW1v amllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7Ci0gICAgICAgICBmb3IgKGludCBpID0gMDsg aSA8IGFubm90YXRpb24uY2hhcl9jb3VudCgpOyBpKyspIHsKLSAgICAgICAgICAgICB1bmljaGFy IGNoID0gYW5ub3RhdGlvbi5nZXRfY2hhcihpKTsKLSAgICAgICAgICAgICBpZiAoY2ggPT0gMCkK LS0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotKyAgICAgICAgICAgICAgICByZXR1cm4g bnVsbDsKLSAgICAgICAgICAgICBpZiAoY2guaXNzcGFjZSgpKSB7Ci0gICAgICAgICAgICAgICAg IHVuaWNoYXIgY29kZSA9ICh1bmljaGFyKXVpbnQ2NC5wYXJzZShidWZmLnN0cik7Ci0gICAgICAg ICAgICAgICAgIGJ1ZmYuYXNzaWduKCIweCIpOwotICAgICAgICAgICAgICAgICBpZiAoIWNvZGUu dmFsaWRhdGUoKSkKLS0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSsgICAgICAg ICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAgICAgICAgICByZXR2YWwuYXBwZW5k KGNvZGUudG9fc3RyaW5nKCkpOwotICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg ICAgICB9Ci0gICAgICAgICAgICAgaWYgKCFjaC5pc3hkaWdpdCgpKQotLSAgICAgICAgICAgICAg ICByZXR1cm4gZmFsc2U7Ci0rICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAg ICAgIGJ1ZmYuYXBwZW5kX3VuaWNoYXIoY2gpOwotICAgICAgICAgfQotICAgICAgICAgdW5pY2hh ciBjb2RlID0gKHVuaWNoYXIpdWludDY0LnBhcnNlKGJ1ZmYuc3RyKTsKLSAgICAgICAgIGlmICgh Y29kZS52YWxpZGF0ZSgpKQotLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSsgICAgICAgICAg ICByZXR1cm4gbnVsbDsKLSAgICAgICAgIHJldHZhbC5hcHBlbmQoY29kZS50b19zdHJpbmcoKSk7 Ci0tICAgICAgICBtX3VuaWNvZGVfcG9pbnQgPSByZXR2YWwuc3RyOwotLSAgICAgICAgaWYgKG1f dW5pY29kZV9wb2ludCA9PSBudWxsKQotLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotLSAgICAg ICAgSUJ1cy5UZXh0IHRleHQgPSBuZXcgSUJ1cy5UZXh0LmZyb21fc3RyaW5nKG1fdW5pY29kZV9w b2ludCk7Ci0tICAgICAgICBtX2xvb2t1cF90YWJsZS5hcHBlbmRfY2FuZGlkYXRlKHRleHQpOwot LSAgICAgICAgcmV0dXJuIHRydWU7Ci0rICAgICAgICB1bmljb2RlX3BvaW50ID0gcmV0dmFsLnN0 cjsKLSsgICAgICAgIGlmICh1bmljb2RlX3BvaW50ID09IG51bGwpCi0rICAgICAgICAgICAgcmV0 dXJuIG51bGw7Ci0rICAgICAgICByZXR1cm4gdW5pY29kZV9wb2ludDsKLSAgICAgfQotIAotIAot LSAgICBwcml2YXRlIEdMaWIuU0xpc3Q8c3RyaW5nPj8KLSsgICAgcHJpdmF0ZSBzdGF0aWMgR0xp Yi5TTGlzdDxzdHJpbmc+PwotICAgICBsb29rdXBfZW1vamlzX2Zyb21fYW5ub3RhdGlvbihzdHJp bmcgYW5ub3RhdGlvbikgewotICAgICAgICAgR0xpYi5TTGlzdDxzdHJpbmc+PyB0b3RhbF9lbW9q aXMgPSBudWxsOwotICAgICAgICAgdW5vd25lZCBHTGliLlNMaXN0PHN0cmluZz4/IHN1Yl9lbW9q aXMgPSBudWxsOwotQEAgLTEyMjEsMTkgKzEyNjksMTkgQEAgcHVibGljIGNsYXNzIElCdXNFbW9q aWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKLSAgICAgICAgIHJldHVybiB0b3RhbF9lbW9q aXM7Ci0gICAgIH0KLSAKLSsKLSAgICAgcHJpdmF0ZSB2b2lkIHVwZGF0ZV9jYW5kaWRhdGVfd2lu ZG93KCkgewotLSAgICAgICAgc3RyaW5nIGFubm90YXRpb24gPSBtX2VudHJ5LmdldF90ZXh0KCk7 Ci0rICAgICAgICBzdHJpbmcgYW5ub3RhdGlvbiA9IG1fYW5ub3RhdGlvbjsKLSAgICAgICAgIGlm IChhbm5vdGF0aW9uLmxlbmd0aCA9PSAwKSB7Ci0tICAgICAgICAgICAgaGlkZV9jYW5kaWRhdGVf cGFuZWwoKTsKLSAgICAgICAgICAgICBtX2JhY2t3YXJkID0gbnVsbDsKLSAgICAgICAgICAgICBy ZXR1cm47Ci0gICAgICAgICB9Ci0rICAgICAgICBtX2xvb2t1cF90YWJsZS5jbGVhcigpOwotKyAg ICAgICAgbV9jYXRlZ29yeV9hY3RpdmVfaW5kZXggPSAtMTsKLSAgICAgICAgIGlmIChhbm5vdGF0 aW9uLmxlbmd0aCA+IG1fZW1vamlfbWF4X3NlcV9sZW4pIHsKLS0gICAgICAgICAgICBoaWRlX2Nh bmRpZGF0ZV9wYW5lbCgpOwotICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgIH0KLS0gICAg ICAgIC8vIENhbGwgY2hlY2tfdW5pY29kZV9wb2ludCgpIHRvIGdldCBtX3VuaWNvZGVfcG9pbnQK LS0gICAgICAgIGNoZWNrX3VuaWNvZGVfcG9pbnQoKTsKLSsgICAgICAgIHN0cmluZz8gdW5pY29k ZV9wb2ludCA9IGNoZWNrX3VuaWNvZGVfcG9pbnQoYW5ub3RhdGlvbik7Ci0gICAgICAgICBHTGli LlNMaXN0PHN0cmluZz4/IHRvdGFsX2Vtb2ppcyA9Ci0gICAgICAgICAgICAgbG9va3VwX2Vtb2pp c19mcm9tX2Fubm90YXRpb24oYW5ub3RhdGlvbik7Ci0gICAgICAgICBpZiAodG90YWxfZW1vamlz ID09IG51bGwpIHsKLUBAIC0xMjQ2LDE4ICsxMjk0LDc1IEBAIHB1YmxpYyBjbGFzcyBJQnVzRW1v amllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7Ci0gICAgICAgICAgICAgYW5ub3RhdGlvbiA9 IGFubm90YXRpb24uZG93bigpOwotICAgICAgICAgICAgIHRvdGFsX2Vtb2ppcyA9IGxvb2t1cF9l bW9qaXNfZnJvbV9hbm5vdGF0aW9uKGFubm90YXRpb24pOwotICAgICAgICAgfQotLSAgICAgICAg aWYgKHRvdGFsX2Vtb2ppcyA9PSBudWxsICYmIG1fdW5pY29kZV9wb2ludCA9PSBudWxsKSB7Ci0t ICAgICAgICAgICAgaGlkZV9jYW5kaWRhdGVfcGFuZWwoKTsKLSsgICAgICAgIGlmICh0b3RhbF9l bW9qaXMgPT0gbnVsbCAmJiB1bmljb2RlX3BvaW50ID09IG51bGwpIHsKLSAgICAgICAgICAgICBy ZXR1cm47Ci0gICAgICAgICB9Ci0tICAgICAgICBtX2xvb2t1cF90YWJsZS5jbGVhcigpOwotLSAg ICAgICAgLy8gQ2FsbCBjaGVja191bmljb2RlX3BvaW50KCkgdG8gdXBkYXRlIG1fbG9va3VwX3Rh YmxlCi0tICAgICAgICBjaGVja191bmljb2RlX3BvaW50KCk7Ci0rICAgICAgICBpZiAodW5pY29k ZV9wb2ludCAhPSBudWxsKSB7Ci0rICAgICAgICAgICAgSUJ1cy5UZXh0IHRleHQgPSBuZXcgSUJ1 cy5UZXh0LmZyb21fc3RyaW5nKHVuaWNvZGVfcG9pbnQpOwotKyAgICAgICAgICAgIG1fbG9va3Vw X3RhYmxlLmFwcGVuZF9jYW5kaWRhdGUodGV4dCk7Ci0rICAgICAgICB9Ci0gICAgICAgICBmb3Jl YWNoICh1bm93bmVkIHN0cmluZyBlbW9qaSBpbiB0b3RhbF9lbW9qaXMpIHsKLSAgICAgICAgICAg ICBJQnVzLlRleHQgdGV4dCA9IG5ldyBJQnVzLlRleHQuZnJvbV9zdHJpbmcoZW1vamkpOwotICAg ICAgICAgICAgIG1fbG9va3VwX3RhYmxlLmFwcGVuZF9jYW5kaWRhdGUodGV4dCk7Ci0gICAgICAg ICB9Ci0tICAgICAgICBzaG93X2NhbmRpZGF0ZV9wYW5lbCgpOwotKyAgICAgICAgbV9jYW5kaWRh dGVfcGFuZWxfaXNfdmlzaWJsZSA9Ci0rICAgICAgICAgICAgKG1fbG9va3VwX3RhYmxlLmdldF9u dW1iZXJfb2ZfY2FuZGlkYXRlcygpID4gMCkgPyB0cnVlIDogZmFsc2U7Ci0rICAgICAgICBtX2Nh bmRpZGF0ZV9wYW5lbF9tb2RlID0gdHJ1ZTsKLSsgICAgfQotKwotKwotKyAgICBwcml2YXRlIHZv aWQgdXBkYXRlX2NhdGVnb3J5X2xpc3QoKSB7Ci0rICAgICAgICAvLyBBbHdheXMgdXBkYXRlIG1f bG9va3VwX3RhYmxlIGV2ZW4gaWYgdGhlIGNvbnRlbnRzIGFyZSBzYW1lCi0rICAgICAgICAvLyBi ZWNhdXNlIG1fY2F0ZWdvcnlfYWN0aXZlX2luZGV4IG5lZWRzIHRvIGJlIGtlcHQgYWZ0ZXIKLSsg ICAgICAgIC8vIGJyaW5nIGJhY2sgdGhpcyBBUEkgZnJvbSBzaG93X2Vtb2ppX2Zvcl9jYXRlZ29y eSgpLgotKyAgICAgICAgcmVzZXRfd2luZG93X21vZGUoKTsKLSsgICAgICAgIG1fbG9va3VwX3Rh YmxlLmNsZWFyKCk7Ci0rICAgICAgICBJQnVzLlRleHQgdGV4dDsKLSsgICAgICAgIGlmIChtX2Zh dm9yaXRlcy5sZW5ndGggPiAwKSB7Ci0rICAgICAgICAgICAgdGV4dCA9IG5ldyBJQnVzLlRleHQu ZnJvbV9zdHJpbmcoRU1PSklfQ0FURUdPUllfRkFWT1JJVEVTKTsKLSsgICAgICAgICAgICBtX2xv b2t1cF90YWJsZS5hcHBlbmRfY2FuZGlkYXRlKHRleHQpOwotKyAgICAgICAgfQotKyAgICAgICAg R0xpYi5MaXN0PHVub3duZWQgc3RyaW5nPiBjYXRlZ29yaWVzID0KLSsgICAgICAgICAgICAgICAg bV9jYXRlZ29yeV90b19lbW9qaXNfZGljdC5nZXRfa2V5cygpOwotKyAgICAgICAgLy8gRklYTUU6 IEhvdyB0byBjYXN0IEdMaWIuQ29tcGFyZUZ1bmM8c3RyaW5nPiB0byBzdHJjbXA/Ci0rICAgICAg ICBjYXRlZ29yaWVzLnNvcnQoKGEsIGIpID0+IHsKLSsgICAgICAgICAgICBpZiAoYSA9PSBFTU9K SV9DQVRFR09SWV9PVEhFUlMgJiYgYiAhPSBFTU9KSV9DQVRFR09SWV9PVEhFUlMpCi0rICAgICAg ICAgICAgICAgIHJldHVybiAxOwotKyAgICAgICAgICAgIGVsc2UgaWYgKGEgIT0gRU1PSklfQ0FU RUdPUllfT1RIRVJTICYmIGIgPT0gRU1PSklfQ0FURUdPUllfT1RIRVJTKQotKyAgICAgICAgICAg ICAgICByZXR1cm4gLTE7Ci0rICAgICAgICAgICAgcmV0dXJuIEdMaWIuc3RyY21wKF8oYSksIF8o YikpOwotKyAgICAgICAgfSk7Ci0rICAgICAgICBmb3JlYWNoICh1bm93bmVkIHN0cmluZyBjYXRl Z29yeSBpbiBjYXRlZ29yaWVzKSB7Ci0rICAgICAgICAgICAgLy8gIk90aGVycyIgY2F0ZWdvcnkg aW5jbHVkZXMgbmV4dCB1bmljb2RlIGNoYXJzIGFuZCBmb250cyBkbyBub3QKLSsgICAgICAgICAg ICAvLyBzdXBwb3J0IHRoZSBiYXNlIGFuZCB2YXJpbnRzIHlldC4KLSsgICAgICAgICAgICBpZiAo Y2F0ZWdvcnkgPT0gRU1PSklfQ0FURUdPUllfT1RIRVJTKQotKyAgICAgICAgICAgICAgIGNvbnRp bnVlOwotKyAgICAgICAgICAgIHRleHQgPSBuZXcgSUJ1cy5UZXh0LmZyb21fc3RyaW5nKGNhdGVn b3J5KTsKLSsgICAgICAgICAgICBtX2xvb2t1cF90YWJsZS5hcHBlbmRfY2FuZGlkYXRlKHRleHQp OwotKyAgICAgICAgfQotKyAgICAgICAgaWYgKG1fdW5pY29kZV9ibG9ja19saXN0Lmxlbmd0aCgp ID4gMCkgewotKyAgICAgICAgICAgIHRleHQgPSBuZXcgSUJ1cy5UZXh0LmZyb21fc3RyaW5nKEVN T0pJX0NBVEVHT1JZX1VOSUNPREUpOwotKyAgICAgICAgICAgIG1fbG9va3VwX3RhYmxlLmFwcGVu ZF9jYW5kaWRhdGUodGV4dCk7Ci0rICAgICAgICB9Ci0rICAgICAgICAvLyBEbyBub3Qgc2V0IG1f Y2F0ZWdvcnlfYWN0aXZlX2luZGV4IHRvIDAgaGVyZSBzbyB0aGF0Ci0rICAgICAgICAvLyBzaG93 X2NhdGVnb3J5X2xpc3QoKSBoYW5kbGVzIGl0LgotKyAgICB9Ci0rCi0rCi0rICAgIHByaXZhdGUg dm9pZCB1cGRhdGVfdW5pY29kZV9ibG9ja3MoKSB7Ci0rICAgICAgICAvLyBBbHdheXMgdXBkYXRl IG1fbG9va3VwX3RhYmxlIGV2ZW4gaWYgdGhlIGNvbnRlbnRzIGFyZSBzYW1lCi0rICAgICAgICAv LyBiZWNhdXNlIG1fY2F0ZWdvcnlfYWN0aXZlX2luZGV4IG5lZWRzIHRvIGJlIGtlcHQgYWZ0ZXIK LSsgICAgICAgIC8vIGJyaW5nIGJhY2sgdGhpcyBBUEkgZnJvbSBzaG93X2Vtb2ppX2Zvcl9jYXRl Z29yeSgpLgotKyAgICAgICAgcmVzZXRfd2luZG93X21vZGUoKTsKLSsgICAgICAgIG1fbG9va3Vw X3RhYmxlLmNsZWFyKCk7Ci0rICAgICAgICBtX3Nob3dfdW5pY29kZSA9IHRydWU7Ci0rICAgICAg ICBmb3JlYWNoICh1bm93bmVkIElCdXMuVW5pY29kZUJsb2NrIGJsb2NrIGluIG1fdW5pY29kZV9i bG9ja19saXN0KSB7Ci0rICAgICAgICAgICAgc3RyaW5nIG5hbWUgPSBibG9jay5nZXRfbmFtZSgp OwotKyAgICAgICAgICAgIElCdXMuVGV4dCB0ZXh0ID0gbmV3IElCdXMuVGV4dC5mcm9tX3N0cmlu ZyhuYW1lKTsKLSsgICAgICAgICAgICBtX2xvb2t1cF90YWJsZS5hcHBlbmRfY2FuZGlkYXRlKHRl eHQpOwotKyAgICAgICAgfQotKyAgICAgICAgLy8gRG8gbm90IHNldCBtX2NhdGVnb3J5X2FjdGl2 ZV9pbmRleCB0byAwIGhlcmUgc28gdGhhdAotKyAgICAgICAgLy8gc2hvd191bmljb2RlX2Jsb2Nr cygpIGhhbmRsZXMgaXQuCi0gICAgIH0KLSAKLSAKLUBAIC0xMjgzLDI3ICsxMzg4LDI3IEBAIHB1 YmxpYyBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7Ci0gICAgICAg ICB1aW50IHBhZ2Vfc2l6ZSA9IG1fbG9va3VwX3RhYmxlLmdldF9wYWdlX3NpemUoKTsKLSAgICAg ICAgIHVpbnQgbmNhbmRpZGF0ZXMgPSBtX2xvb2t1cF90YWJsZS5nZXRfbnVtYmVyX29mX2NhbmRp ZGF0ZXMoKTsKLSAgICAgICAgIHVpbnQgY3Vyc29yID0gbV9sb29rdXBfdGFibGUuZ2V0X2N1cnNv cl9wb3MoKTsKLS0KLSAgICAgICAgIHVpbnQgcGFnZV9zdGFydF9wb3MgPSBjdXJzb3IgLyBwYWdl X3NpemUgKiBwYWdlX3NpemU7Ci0gICAgICAgICB1aW50IHBhZ2VfZW5kX3BvcyA9IHVpbnQubWlu KHBhZ2Vfc3RhcnRfcG9zICsgcGFnZV9zaXplLCBuY2FuZGlkYXRlcyk7Ci0rICAgICAgICBHdGsu QnV0dG9uPyBiYWNrd2FyZF9idXR0b24gPSBudWxsOwotICAgICAgICAgaWYgKG1fYmFja3dhcmQg IT0gbnVsbCkgewotLSAgICAgICAgICAgIHN0cmluZyBiYWNrd2FyZF9kZXNjID0KLS0gICAgICAg ICAgICAgICAgICAgICIlcyAoJXUgLyAldSkiLnByaW50ZihfKG1fYmFja3dhcmQpLCBjdXJzb3Is IG5jYW5kaWRhdGVzIC0gMSk7Ci0rICAgICAgICAgICAgc3RyaW5nIGJhY2t3YXJkX2Rlc2MgPSBf KG1fYmFja3dhcmQpOwotICAgICAgICAgICAgIEVQYWRkZWRMYWJlbEJveCBsYWJlbCA9Ci0gICAg ICAgICAgICAgICAgICAgICBuZXcgRVBhZGRlZExhYmVsQm94KGJhY2t3YXJkX2Rlc2MsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEd0ay5BbGlnbi5DRU5URVIsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYXZlbERpcmVjdGlvbi5C QUNLV0FSRCk7Ci0tICAgICAgICAgICAgR3RrLkJ1dHRvbiBidXR0b24gPSBuZXcgR3RrLkJ1dHRv bigpOwotLSAgICAgICAgICAgIGJ1dHRvbi5hZGQobGFiZWwpOwotLSAgICAgICAgICAgIG1fdmJv eC5hZGQoYnV0dG9uKTsKLS0gICAgICAgICAgICBidXR0b24uc2hvd19hbGwoKTsKLS0gICAgICAg ICAgICBidXR0b24uYnV0dG9uX3ByZXNzX2V2ZW50LmNvbm5lY3QoKHcsIGUpID0+IHsKLSsgICAg ICAgICAgICBiYWNrd2FyZF9idXR0b24gPSBuZXcgR3RrLkJ1dHRvbigpOwotKyAgICAgICAgICAg IGJhY2t3YXJkX2J1dHRvbi5hZGQobGFiZWwpOwotKyAgICAgICAgICAgIGJhY2t3YXJkX2J1dHRv bi5idXR0b25fcHJlc3NfZXZlbnQuY29ubmVjdCgodywgZSkgPT4gewotICAgICAgICAgICAgICAg ICAvLyBCcmluZyBiYWNrIHRvIGVtb2ppIGNhbmRpZGF0ZSBwYW5lbCBpbiBjYXNlCi0gICAgICAg ICAgICAgICAgIC8vIG1fc2hvd19lbW9qaV92YXJpYW50IGlzIGVuYWJsZWQgYW5kIHNob3dzIHZh cmlhbnRzLgotLSAgICAgICAgICAgICAgICBpZiAobV9iYWNrd2FyZF9pbmRleCA+PSAwICYmIG1f YmFja3dhcmQgIT0gbnVsbCkKLSsgICAgICAgICAgICAgICAgaWYgKG1fYmFja3dhcmRfaW5kZXgg Pj0gMCAmJiBtX2JhY2t3YXJkICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgIHNob3df ZW1vamlfZm9yX2NhdGVnb3J5KG1fYmFja3dhcmQpOwotLSAgICAgICAgICAgICAgICBlbHNlCi0r ICAgICAgICAgICAgICAgICAgICBzaG93X2NhbmRpZGF0ZV9wYW5lbCgpOwotKyAgICAgICAgICAg ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgaGlkZV9jYW5kaWRhdGVfcGFuZWwo KTsKLSsgICAgICAgICAgICAgICAgICAgIHNob3dfYWxsKCk7Ci0rICAgICAgICAgICAgICAgIH0K LSAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgfSk7Ci0gICAgICAg ICB9Ci1AQCAtMTM4NSwzNCArMTQ5MCw2MCBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBH dGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICAgICAgfQotICAgICAgICAgaWYgKG4gPiAwKSB7 Ci0gICAgICAgICAgICAgbV9jYW5kaWRhdGVfcGFuZWxfaXNfdmlzaWJsZSA9IHRydWU7Ci0tICAg ICAgICAgICAgc2hvd19hcnJvd19idXR0b25zKCk7Ci0tICAgICAgICAgICAgbV92Ym94LmFkZChn cmlkKTsKLS0gICAgICAgICAgICBncmlkLnNob3dfYWxsKCk7Ci0tICAgICAgICAgICAgc3RyaW5n IHRleHQgPSBtX2xvb2t1cF90YWJsZS5nZXRfY2FuZGlkYXRlKGN1cnNvcikudGV4dDsKLS0gICAg ICAgICAgICB1bm93bmVkIElCdXMuRW1vamlEYXRhPyBkYXRhID0gbV9lbW9qaV90b19kYXRhX2Rp Y3QubG9va3VwKHRleHQpOwotLSAgICAgICAgICAgIGlmIChkYXRhICE9IG51bGwpIHsKLS0gICAg ICAgICAgICAgICAgc2hvd19lbW9qaV9kZXNjcmlwdGlvbihkYXRhLCB0ZXh0KTsKLS0gICAgICAg ICAgICAgICAgcmV0dXJuOwotKyAgICAgICAgICAgIGlmICghbV9pc191cF9zaWRlX2Rvd24pIHsK LSsgICAgICAgICAgICAgICAgc2hvd19hcnJvd19idXR0b25zKCk7Ci0rICAgICAgICAgICAgICAg IGlmIChiYWNrd2FyZF9idXR0b24gIT0gbnVsbCkgewotKyAgICAgICAgICAgICAgICAgICAgbV92 Ym94LmFkZChiYWNrd2FyZF9idXR0b24pOwotKyAgICAgICAgICAgICAgICAgICAgYmFja3dhcmRf YnV0dG9uLnNob3dfYWxsKCk7Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAg bV92Ym94LmFkZChncmlkKTsKLSsgICAgICAgICAgICAgICAgZ3JpZC5zaG93X2FsbCgpOwotKyAg ICAgICAgICAgICAgICBzaG93X2Rlc2NyaXB0aW9uKCk7Ci0rICAgICAgICAgICAgICAgIGlmICgh bV9sb2FkZWRfdW5pY29kZSkKLSsgICAgICAgICAgICAgICAgICAgIHNob3dfdW5pY29kZV9wcm9n cmVzc19iYXIoKTsKLSAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgaWYgKHRleHQuY2hhcl9j b3VudCgpIDw9IDEpIHsKLS0gICAgICAgICAgICAgICAgdW5pY2hhciBjb2RlID0gdGV4dC5nZXRf Y2hhcigpOwotLSAgICAgICAgICAgICAgICB1bm93bmVkIElCdXMuVW5pY29kZURhdGE/IHVkYXRh ID0KLS0gICAgICAgICAgICAgICAgICAgICAgICBtX3VuaWNvZGVfdG9fZGF0YV9kaWN0Lmxvb2t1 cChjb2RlKTsKLS0gICAgICAgICAgICAgICAgaWYgKHVkYXRhICE9IG51bGwpIHsKLS0gICAgICAg ICAgICAgICAgICAgIHNob3dfdW5pY29kZV9kZXNjcmlwdGlvbih1ZGF0YSwgdGV4dCk7Ci0tICAg ICAgICAgICAgICAgICAgICByZXR1cm47Ci0rICAgICAgICAgICAgaWYgKG1faXNfdXBfc2lkZV9k b3duKSB7Ci0rICAgICAgICAgICAgICAgIGlmICghbV9sb2FkZWRfdW5pY29kZSkKLSsgICAgICAg ICAgICAgICAgICAgIHNob3dfdW5pY29kZV9wcm9ncmVzc19iYXIoKTsKLSsgICAgICAgICAgICAg ICAgc2hvd19kZXNjcmlwdGlvbigpOwotKyAgICAgICAgICAgICAgICBtX3Zib3guYWRkKGdyaWQp OwotKyAgICAgICAgICAgICAgICBncmlkLnNob3dfYWxsKCk7Ci0rICAgICAgICAgICAgICAgIGlm IChiYWNrd2FyZF9idXR0b24gIT0gbnVsbCkgewotKyAgICAgICAgICAgICAgICAgICAgbV92Ym94 LmFkZChiYWNrd2FyZF9idXR0b24pOwotKyAgICAgICAgICAgICAgICAgICAgYmFja3dhcmRfYnV0 dG9uLnNob3dfYWxsKCk7Ci0gICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgc2hv d19hcnJvd19idXR0b25zKCk7Ci0gICAgICAgICAgICAgfQotLSAgICAgICAgICAgIEVQYWRkZWRM YWJlbEJveCB3aWRnZXQgPSBuZXcgRVBhZGRlZExhYmVsQm94KAotLSAgICAgICAgICAgICAgICAg ICAgICAgIF8oIkRlc2NyaXB0aW9uOiAlcyIpLnByaW50ZihfKCJOb25lIikpLAotLSAgICAgICAg ICAgICAgICAgICAgICAgIEd0ay5BbGlnbi5TVEFSVCk7Ci0tICAgICAgICAgICAgbV92Ym94LmFk ZCh3aWRnZXQpOwotLSAgICAgICAgICAgIHdpZGdldC5zaG93X2FsbCgpOwotLSAgICAgICAgICAg IHNob3dfY29kZV9wb2ludF9kZXNjcmlwdGlvbih0ZXh0KTsKLSAgICAgICAgIH0KLSAgICAgfQot IAotIAotKyAgICBwcml2YXRlIHZvaWQgc2hvd19kZXNjcmlwdGlvbigpIHsKLSsgICAgICAgIHVp bnQgY3Vyc29yID0gbV9sb29rdXBfdGFibGUuZ2V0X2N1cnNvcl9wb3MoKTsKLSsgICAgICAgIHN0 cmluZyB0ZXh0ID0gbV9sb29rdXBfdGFibGUuZ2V0X2NhbmRpZGF0ZShjdXJzb3IpLnRleHQ7Ci0r ICAgICAgICB1bm93bmVkIElCdXMuRW1vamlEYXRhPyBkYXRhID0gbV9lbW9qaV90b19kYXRhX2Rp Y3QubG9va3VwKHRleHQpOwotKyAgICAgICAgaWYgKGRhdGEgIT0gbnVsbCkgewotKyAgICAgICAg ICAgIHNob3dfZW1vamlfZGVzY3JpcHRpb24oZGF0YSwgdGV4dCk7Ci0rICAgICAgICAgICAgcmV0 dXJuOwotKyAgICAgICAgfQotKyAgICAgICAgaWYgKHRleHQuY2hhcl9jb3VudCgpIDw9IDEpIHsK LSsgICAgICAgICAgICB1bmljaGFyIGNvZGUgPSB0ZXh0LmdldF9jaGFyKCk7Ci0rICAgICAgICAg ICAgdW5vd25lZCBJQnVzLlVuaWNvZGVEYXRhPyB1ZGF0YSA9Ci0rICAgICAgICAgICAgICAgICAg ICBtX3VuaWNvZGVfdG9fZGF0YV9kaWN0Lmxvb2t1cChjb2RlKTsKLSsgICAgICAgICAgICBpZiAo dWRhdGEgIT0gbnVsbCkgewotKyAgICAgICAgICAgICAgICBzaG93X3VuaWNvZGVfZGVzY3JpcHRp b24odWRhdGEsIHRleHQpOwotKyAgICAgICAgICAgICAgICByZXR1cm47Ci0rICAgICAgICAgICAg fQotKyAgICAgICAgfQotKyAgICAgICAgRVBhZGRlZExhYmVsQm94IHdpZGdldCA9IG5ldyBFUGFk ZGVkTGFiZWxCb3goCi0rICAgICAgICAgICAgICAgIF8oIkRlc2NyaXB0aW9uOiAlcyIpLnByaW50 ZihfKCJOb25lIikpLAotKyAgICAgICAgICAgICAgICBHdGsuQWxpZ24uU1RBUlQpOwotKyAgICAg ICAgbV92Ym94LmFkZCh3aWRnZXQpOwotKyAgICAgICAgd2lkZ2V0LnNob3dfYWxsKCk7Ci0rICAg ICAgICBzaG93X2NvZGVfcG9pbnRfZGVzY3JpcHRpb24odGV4dCk7Ci0rICAgIH0KLSsKLSsKLSAg ICAgcHJpdmF0ZSB2b2lkIHNob3dfZW1vamlfZGVzY3JpcHRpb24oSUJ1cy5FbW9qaURhdGEgZGF0 YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nICAgICAg ICAgdGV4dCkgewotICAgICAgICAgdW5vd25lZCBzdHJpbmcgZGVzY3JpcHRpb24gPSBkYXRhLmdl dF9kZXNjcmlwdGlvbigpOwotQEAgLTE0NzMsMTQgKzE2MDQsMTcgQEAgcHVibGljIGNsYXNzIElC dXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKLSAKLSAKLSAgICAgcHJpdmF0ZSB2 b2lkIGhpZGVfY2FuZGlkYXRlX3BhbmVsKCkgewotKyAgICAgICAgaGlkZSgpOwotICAgICAgICAg bV9lbnRlcl9ub3RpZnlfZW5hYmxlID0gdHJ1ZTsKLS0gICAgICAgIG1fY2FuZGlkYXRlX3BhbmVs X2lzX3Zpc2libGUgPSBmYWxzZTsKLS0gICAgICAgIGlmIChtX2xvb3AuaXNfcnVubmluZygpKSB7 Ci0tICAgICAgICAgICAgaWYgKG1fc2hvd191bmljb2RlKQotLSAgICAgICAgICAgICAgICBzaG93 X3VuaWNvZGVfYmxvY2tzKCk7Ci0tICAgICAgICAgICAgZWxzZQotLSAgICAgICAgICAgICAgICBz aG93X2NhdGVnb3J5X2xpc3QoKTsKLS0gICAgICAgIH0KLSsgICAgICAgIG1fYW5ub3RhdGlvbiA9 ICIiOwotKyAgICAgICAgLy8gQ2FsbCByZW1vdmVfYWxsX2NoaWxkcmVuKCkgaW5zdGVhZCBvZiBz aG93X2NhdGVnb3J5X2xpc3QoKQotKyAgICAgICAgLy8gc28gdGhhdCBzaG93X2NhdGVnb3J5X2xp c3QgZG8gbm90IHJlbW92ZSBjaGlsZHJlbiB3aXRoCi0rICAgICAgICAvLyBQYWdlVXAvUGFnZURv d24uCi0rICAgICAgICByZW1vdmVfYWxsX2NoaWxkcmVuKCk7Ci0rICAgICAgICBpZiAobV9zaG93 X3VuaWNvZGUpCi0rICAgICAgICAgICAgdXBkYXRlX3VuaWNvZGVfYmxvY2tzKCk7Ci0rICAgICAg ICBlbHNlCi0rICAgICAgICAgICAgdXBkYXRlX2NhdGVnb3J5X2xpc3QoKTsKLSAgICAgfQotIAot IAotQEAgLTE0OTgsMjAgKzE2MzIsMzQgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3Rr LkFwcGxpY2F0aW9uV2luZG93IHsKLSAgICAgfQotIAotIAotLSAgICBwcml2YXRlIHZvaWQgY2Fu ZGlkYXRlX3BhbmVsX3NlbGVjdF9pbmRleCh1aW50IGluZGV4KSB7Ci0rICAgIHByaXZhdGUgdm9p ZCBjYW5kaWRhdGVfcGFuZWxfc2VsZWN0X2luZGV4KHVpbnQgaW5kZXgsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQgYnV0dG9uKSB7Ci0rICAgICAg ICBpZiAoYnV0dG9uID09IEJVVFRPTl9DTE9TRV9CVVRUT04pIHsKLSsgICAgICAgICAgICBoaWRl KCk7Ci0rICAgICAgICAgICAgaWYgKG1fY2FuZGlkYXRlX3BhbmVsX21vZGUgJiYKLSsgICAgICAg ICAgICAgICAgbV9sb29rdXBfdGFibGUuZ2V0X251bWJlcl9vZl9jYW5kaWRhdGVzKCkgPiAwKSB7 Ci0rICAgICAgICAgICAgICAgIC8vIENhbGwgcmVtb3ZlX2FsbF9jaGlsZHJlbigpIGluc3RlYWQg b2Ygc2hvd19jYXRlZ29yeV9saXN0KCkKLSsgICAgICAgICAgICAgICAgLy8gc28gdGhhdCBzaG93 X2NhdGVnb3J5X2xpc3QgZG8gbm90IHJlbW92ZSBjaGlsZHJlbiB3aXRoCi0rICAgICAgICAgICAg ICAgIC8vIFBhZ2VVcC9QYWdlRG93bi4KLSsgICAgICAgICAgICAgICAgcmVtb3ZlX2FsbF9jaGls ZHJlbigpOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgICBtX3Jlc3VsdCA9ICIiOwotKyAg ICAgICAgICAgIHJldHVybjsKLSsgICAgICAgIH0KLSAgICAgICAgIHN0cmluZyB0ZXh0ID0gbV9s b29rdXBfdGFibGUuZ2V0X2NhbmRpZGF0ZShpbmRleCkudGV4dDsKLSAgICAgICAgIHVub3duZWQg R0xpYi5TTGlzdDxzdHJpbmc+PyBlbW9qaXMgPQotICAgICAgICAgICAgICAgICBtX2Vtb2ppX3Rv X2Vtb2ppX3ZhcmlhbnRzX2RpY3QubG9va3VwKHRleHQpOwotICAgICAgICAgaWYgKG1fc2hvd19l bW9qaV92YXJpYW50ICYmIGVtb2ppcyAhPSBudWxsICYmCi0gICAgICAgICAgICAgbV9iYWNrd2Fy ZF9pbmRleCA8IDApIHsKLSAgICAgICAgICAgICBzaG93X2Vtb2ppX3ZhcmlhbnRzKGVtb2ppcyk7 Ci0rICAgICAgICAgICAgc2hvd19hbGwoKTsKLSAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg ICAgbV9yZXN1bHQgPSB0ZXh0OwotLSAgICAgICAgICAgIG1fbG9vcC5xdWl0KCk7Ci0tICAgICAg ICAgICAgaGlkZV9jYW5kaWRhdGVfcGFuZWwoKTsKLSsgICAgICAgICAgICBoaWRlKCk7Ci0gICAg ICAgICB9Ci0gICAgIH0KLSAKLSsKLSAgICAgcHJpdmF0ZSB2b2lkIGNhbmRpZGF0ZV9wYW5lbF9j dXJzb3JfZG93bigpIHsKLSAgICAgICAgIGVudGVyX25vdGlmeV9kaXNhYmxlX3dpdGhfdGltZXIo KTsKLSAgICAgICAgIHVpbnQgbmNhbmRpZGF0ZXMgPSBtX2xvb2t1cF90YWJsZS5nZXRfbnVtYmVy X29mX2NhbmRpZGF0ZXMoKTsKLUBAIC0xNTIzLDcgKzE2NzEsNiBAQCBwdWJsaWMgY2xhc3MgSUJ1 c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICAgICAgfSBlbHNlIHsKLSAg ICAgICAgICAgICBtX2xvb2t1cF90YWJsZS5zZXRfY3Vyc29yX3BvcygwKTsKLSAgICAgICAgIH0K LS0gICAgICAgIHNob3dfY2FuZGlkYXRlX3BhbmVsKCk7Ci0gICAgIH0KLSAKLSAKLUBAIC0xNTQx LDcgKzE2ODgsNiBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25X aW5kb3cgewotICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICBtX2xvb2t1cF90YWJsZS5z ZXRfY3Vyc29yX3BvcygwKTsKLSAgICAgICAgIH0KLS0gICAgICAgIHNob3dfY2FuZGlkYXRlX3Bh bmVsKCk7Ci0gICAgIH0KLSAKLSAKLUBAIC0xNTU4LDcgKzE3MDQsOSBAQCBwdWJsaWMgY2xhc3Mg SUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICAgICAgcmV0dXJuIHBh Z2VfbnVtOwotICAgICB9Ci0gCi0rCi0gICAgIHByaXZhdGUgYm9vbCBjYXRlZ29yeV9saXN0X2N1 cnNvcl9tb3ZlKHVpbnQga2V5dmFsKSB7Ci0rICAgICAgICByZXR1cm5fdmFsX2lmX2ZhaWwgKG1f bGlzdF9ib3ggIT0gbnVsbCwgZmFsc2UpOwotICAgICAgICAgR0xpYi5MaXN0PHdlYWsgR3RrLldp ZGdldD4gbGlzdCA9IG1fbGlzdF9ib3guZ2V0X2NoaWxkcmVuKCk7Ci0gICAgICAgICBpbnQgbGVu Z3RoID0gKGludClsaXN0Lmxlbmd0aCgpOwotICAgICAgICAgaWYgKGxlbmd0aCA9PSAwKQotQEAg LTE2MDAsMzIgKzE3NDgsMzcgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxp Y2F0aW9uV2luZG93IHsKLSAgICAgICAgIHZhciByb3cgPSBtX2xpc3RfYm94LmdldF9zZWxlY3Rl ZF9yb3coKTsKLSAgICAgICAgIGlmIChyb3cgIT0gbnVsbCkKLSAgICAgICAgICAgICBtX2xpc3Rf Ym94LnVuc2VsZWN0X3Jvdyhyb3cpOwotLSAgICAgICAgaWYgKG1fY2F0ZWdvcnlfYWN0aXZlX2lu ZGV4ID49IDApIHsKLS0gICAgICAgICAgICByb3cgPSBtX2xpc3RfYm94LmdldF9yb3dfYXRfaW5k ZXgobV9jYXRlZ29yeV9hY3RpdmVfaW5kZXgpOwotLSAgICAgICAgICAgIG1fbGlzdF9ib3guc2Vs ZWN0X3Jvdyhyb3cpOwotLSAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICByb3cgPSBtX2xp c3RfYm94LmdldF9yb3dfYXRfaW5kZXgoMCk7Ci0tICAgICAgICB9Ci0tICAgICAgICBHdGsuQWxs b2NhdGlvbiBhbGxvYyA9IHsgMCwgMCwgMCwgMCB9OwotLSAgICAgICAgcm93LmdldF9hbGxvY2F0 aW9uKG91dCBhbGxvYyk7Ci0tICAgICAgICB2YXIgYWRqdXN0bWVudCA9IG1fc2Nyb2xsZWRfd2lu ZG93LmdldF92YWRqdXN0bWVudCgpOwotLSAgICAgICAgYWRqdXN0bWVudC5jbGFtcF9wYWdlKGFs bG9jLnksIGFsbG9jLnkgKyBhbGxvYy5oZWlnaHQpOwotKyAgICAgICAgY2xhbXBfcGFnZSAoKTsK LSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICB9Ci0gCi0gCi0tICAgIHByaXZhdGUgYm9vbCBr ZXlfcHJlc3NfY3Vyc29yX2hvcml6b250YWwodWludCBrZXl2YWwsCi0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludCBtb2RpZmllcnMpIHsKLSsgICAgcHVi bGljIGJvb2wgaGFzX3ZhcmlhbnRzKHVpbnQgaW5kZXgpIHsKLSsgICAgICAgIGlmIChpbmRleCA+ PSBtX2xvb2t1cF90YWJsZS5nZXRfbnVtYmVyX29mX2NhbmRpZGF0ZXMoKSkKLSsgICAgICAgICAg ICByZXR1cm4gZmFsc2U7Ci0rICAgICAgICBzdHJpbmcgdGV4dCA9IG1fbG9va3VwX3RhYmxlLmdl dF9jYW5kaWRhdGUoaW5kZXgpLnRleHQ7Ci0rICAgICAgICB1bm93bmVkIEdMaWIuU0xpc3Q8c3Ry aW5nPj8gZW1vamlzID0KLSsgICAgICAgICAgICAgICAgbV9lbW9qaV90b19lbW9qaV92YXJpYW50 c19kaWN0Lmxvb2t1cCh0ZXh0KTsKLSsgICAgICAgIGlmIChtX3Nob3dfZW1vamlfdmFyaWFudCAm JiBlbW9qaXMgIT0gbnVsbCAmJgotKyAgICAgICAgICAgIG1fYmFja3dhcmRfaW5kZXggPCAwKSB7 Ci0rICAgICAgICAgICAgc2hvd19lbW9qaV92YXJpYW50cyhlbW9qaXMpOwotKyAgICAgICAgICAg IHJldHVybiB0cnVlOwotKyAgICAgICAgfQotKyAgICAgICAgcmV0dXJuIGZhbHNlOwotKyAgICB9 Ci0rCi0rCi0rICAgIHB1YmxpYyBib29sIGtleV9wcmVzc19jdXJzb3JfaG9yaXpvbnRhbCh1aW50 IGtleXZhbCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp bnQgbW9kaWZpZXJzKSB7Ci0gICAgICAgICBhc3NlcnQgKGtleXZhbCA9PSBHZGsuS2V5LkxlZnQg fHwga2V5dmFsID09IEdkay5LZXkuUmlnaHQpOwotIAotLSAgICAgICAgdWludCBuY2FuZGlkYXRl cyA9IG1fbG9va3VwX3RhYmxlLmdldF9udW1iZXJfb2ZfY2FuZGlkYXRlcygpOwotLSAgICAgICAg aWYgKG1fY2FuZGlkYXRlX3BhbmVsX2lzX3Zpc2libGUgJiYgbmNhbmRpZGF0ZXMgPiAxKSB7Ci0r ICAgICAgICBpZiAobV9jYW5kaWRhdGVfcGFuZWxfbW9kZSAmJgotKyAgICAgICAgICAgIG1fbG9v a3VwX3RhYmxlLmdldF9udW1iZXJfb2ZfY2FuZGlkYXRlcygpID4gMCkgewotICAgICAgICAgICAg IGVudGVyX25vdGlmeV9kaXNhYmxlX3dpdGhfdGltZXIoKTsKLSAgICAgICAgICAgICBpZiAoa2V5 dmFsID09IEdkay5LZXkuTGVmdCkKLSAgICAgICAgICAgICAgICAgbV9sb29rdXBfdGFibGUuY3Vy c29yX3VwKCk7Ci0gICAgICAgICAgICAgZWxzZSBpZiAoa2V5dmFsID09IEdkay5LZXkuUmlnaHQp Ci0gICAgICAgICAgICAgICAgIG1fbG9va3VwX3RhYmxlLmN1cnNvcl9kb3duKCk7Ci0tICAgICAg ICAgICAgc2hvd19jYW5kaWRhdGVfcGFuZWwoKTsKLSAgICAgICAgIH0gZWxzZSBpZiAobV9lbnRy eS5nZXRfdGV4dCgpLmxlbmd0aCA+IDApIHsKLSAgICAgICAgICAgICBpbnQgc3RlcCA9IDA7Ci0g ICAgICAgICAgICAgaWYgKGtleXZhbCA9PSBHZGsuS2V5LkxlZnQpCi1AQCAtMTY1MCw4ICsxODAz LDggQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsK LSAgICAgfQotIAotIAotLSAgICBwcml2YXRlIGJvb2wga2V5X3ByZXNzX2N1cnNvcl92ZXJ0aWNh bCh1aW50IGtleXZhbCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdWludCBtb2RpZmllcnMpIHsKLSsgICAgcHVibGljIGJvb2wga2V5X3ByZXNzX2N1cnNvcl92 ZXJ0aWNhbCh1aW50IGtleXZhbCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50IG1vZGlmaWVycykgewotICAgICAgICAgYXNzZXJ0IChrZXl2YWwgPT0gR2Rr LktleS5Eb3duIHx8IGtleXZhbCA9PSBHZGsuS2V5LlVwIHx8Ci0gICAgICAgICAgICAgICAgIGtl eXZhbCA9PSBHZGsuS2V5LlBhZ2VfRG93biB8fCBrZXl2YWwgPT0gR2RrLktleS5QYWdlX1VwKTsK LSAKLUBAIC0xNjYxLDggKzE4MTQsOCBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsu QXBwbGljYXRpb25XaW5kb3cgewotICAgICAgICAgICAgIGVsc2UgaWYgKGtleXZhbCA9PSBHZGsu S2V5LlVwKQotICAgICAgICAgICAgICAgICBrZXl2YWwgPSBHZGsuS2V5LlBhZ2VfVXA7Ci0gICAg ICAgICB9Ci0tICAgICAgICB1aW50IG5jYW5kaWRhdGVzID0gbV9sb29rdXBfdGFibGUuZ2V0X251 bWJlcl9vZl9jYW5kaWRhdGVzKCk7Ci0tICAgICAgICBpZiAobV9jYW5kaWRhdGVfcGFuZWxfaXNf dmlzaWJsZSAmJiBuY2FuZGlkYXRlcyA+IDEpIHsKLSsgICAgICAgIGlmICgobV9jYW5kaWRhdGVf cGFuZWxfaXNfdmlzaWJsZSB8fCBtX2Fubm90YXRpb24ubGVuZ3RoID4gMCkKLSsgICAgICAgICAg ICAmJiBtX2xvb2t1cF90YWJsZS5nZXRfbnVtYmVyX29mX2NhbmRpZGF0ZXMoKSA+IDApIHsKLSAg ICAgICAgICAgICBzd2l0Y2ggKGtleXZhbCkgewotICAgICAgICAgICAgIGNhc2UgR2RrLktleS5E b3duOgotICAgICAgICAgICAgICAgICBjYW5kaWRhdGVfcGFuZWxfY3Vyc29yX2Rvd24oKTsKLUBA IC0xNjczLDEyICsxODI2LDEwIEBAIHB1YmxpYyBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBs aWNhdGlvbldpbmRvdyB7Ci0gICAgICAgICAgICAgY2FzZSBHZGsuS2V5LlBhZ2VfRG93bjoKLSAg ICAgICAgICAgICAgICAgZW50ZXJfbm90aWZ5X2Rpc2FibGVfd2l0aF90aW1lcigpOwotICAgICAg ICAgICAgICAgICBtX2xvb2t1cF90YWJsZS5wYWdlX2Rvd24oKTsKLS0gICAgICAgICAgICAgICAg c2hvd19jYW5kaWRhdGVfcGFuZWwoKTsKLSAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg ICAgICAgY2FzZSBHZGsuS2V5LlBhZ2VfVXA6Ci0gICAgICAgICAgICAgICAgIGVudGVyX25vdGlm eV9kaXNhYmxlX3dpdGhfdGltZXIoKTsKLSAgICAgICAgICAgICAgICAgbV9sb29rdXBfdGFibGUu cGFnZV91cCgpOwotLSAgICAgICAgICAgICAgICBzaG93X2NhbmRpZGF0ZV9wYW5lbCgpOwotICAg ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICB9IGVsc2Ugewot QEAgLTE2ODgsMTkgKzE4MzksMTggQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFw cGxpY2F0aW9uV2luZG93IHsKLSAgICAgfQotIAotIAotLSAgICBwcml2YXRlIGJvb2wga2V5X3By ZXNzX2N1cnNvcl9ob21lX2VuZCh1aW50IGtleXZhbCwKLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdWludCBtb2RpZmllcnMpIHsKLSsgICAgcHVibGljIGJvb2wg a2V5X3ByZXNzX2N1cnNvcl9ob21lX2VuZCh1aW50IGtleXZhbCwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50IG1vZGlmaWVycykgewotICAgICAgICAgYXNz ZXJ0IChrZXl2YWwgPT0gR2RrLktleS5Ib21lIHx8IGtleXZhbCA9PSBHZGsuS2V5LkVuZCk7Ci0g Ci0gICAgICAgICB1aW50IG5jYW5kaWRhdGVzID0gbV9sb29rdXBfdGFibGUuZ2V0X251bWJlcl9v Zl9jYW5kaWRhdGVzKCk7Ci0tICAgICAgICBpZiAobV9jYW5kaWRhdGVfcGFuZWxfaXNfdmlzaWJs ZSAmJiBuY2FuZGlkYXRlcyA+IDEpIHsKLSsgICAgICAgIGlmIChtX2NhbmRpZGF0ZV9wYW5lbF9t b2RlICYmIG5jYW5kaWRhdGVzID4gMCkgewotICAgICAgICAgICAgIGVudGVyX25vdGlmeV9kaXNh YmxlX3dpdGhfdGltZXIoKTsKLSAgICAgICAgICAgICBpZiAoa2V5dmFsID09IEdkay5LZXkuSG9t ZSkgewotICAgICAgICAgICAgICAgICBtX2xvb2t1cF90YWJsZS5zZXRfY3Vyc29yX3BvcygwKTsK LSAgICAgICAgICAgICB9IGVsc2UgaWYgKGtleXZhbCA9PSBHZGsuS2V5LkVuZCkgewotICAgICAg ICAgICAgICAgICBtX2xvb2t1cF90YWJsZS5zZXRfY3Vyc29yX3BvcyhuY2FuZGlkYXRlcyAtIDEp OwotICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICBzaG93X2NhbmRpZGF0ZV9wYW5lbCgpOwot ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgfQotICAgICAgICAgaWYgKG1fZW50 cnkuZ2V0X3RleHQoKS5sZW5ndGggPiAwKSB7Ci1AQCAtMTcxNyw0NCArMTg2Nyw0MSBAQCBwdWJs aWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA/IHRydWUgOiBmYWxzZSk7Ci0gICAgICAgICAgICAgcmV0dXJu IHRydWU7Ci0gICAgICAgICB9Ci0tICAgICAgICBpZiAoIW1fY2FuZGlkYXRlX3BhbmVsX2lzX3Zp c2libGUpCi0tICAgICAgICAgICAgcmV0dXJuIGNhdGVnb3J5X2xpc3RfY3Vyc29yX21vdmUoa2V5 dmFsKTsKLS0gICAgICAgIHJldHVybiBmYWxzZTsKLSsgICAgICAgIHJldHVybiBjYXRlZ29yeV9s aXN0X2N1cnNvcl9tb3ZlKGtleXZhbCk7Ci0gICAgIH0KLSAKLSAKLS0gICAgcHJpdmF0ZSBib29s IGtleV9wcmVzc19lc2NhcGUoKSB7Ci0rICAgIHB1YmxpYyBib29sIGtleV9wcmVzc19lc2NhcGUo KSB7Ci0gICAgICAgICBpZiAobV9zaG93X3VuaWNvZGUpIHsKLS0gICAgICAgICAgICBpZiAobV9j YW5kaWRhdGVfcGFuZWxfaXNfdmlzaWJsZSkgewotLSAgICAgICAgICAgICAgICBtX2NhbmRpZGF0 ZV9wYW5lbF9pc192aXNpYmxlID0gZmFsc2U7Ci0tICAgICAgICAgICAgICAgIHNob3dfdW5pY29k ZV9ibG9ja3MoKTsKLS0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0tICAgICAgICAgICAg fSBlbHNlIHsKLSsgICAgICAgICAgICBpZiAoIW1fY2FuZGlkYXRlX3BhbmVsX2lzX3Zpc2libGUp IHsKLSAgICAgICAgICAgICAgICAgbV9zaG93X3VuaWNvZGUgPSBmYWxzZTsKLSAgICAgICAgICAg ICAgICAgbV9jYXRlZ29yeV9hY3RpdmVfaW5kZXggPSAtMTsKLS0gICAgICAgICAgICAgICAgaGlk ZV9jYW5kaWRhdGVfcGFuZWwoKTsKLS0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg ICAgICAgICAgfQotKyAgICAgICAgICAgIGhpZGVfY2FuZGlkYXRlX3BhbmVsKCk7Ci0rICAgICAg ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICB9IGVsc2UgaWYgKG1fYmFja3dhcmRfaW5kZXgg Pj0gMCAmJiBtX2JhY2t3YXJkICE9IG51bGwpIHsKLSAgICAgICAgICAgICBzaG93X2Vtb2ppX2Zv cl9jYXRlZ29yeShtX2JhY2t3YXJkKTsKLSAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLS0gICAg ICAgIH0gZWxzZSBpZiAobV9jYW5kaWRhdGVfcGFuZWxfaXNfdmlzaWJsZSkgewotLSAgICAgICAg ICAgIGhpZGVfY2FuZGlkYXRlX3BhbmVsKCk7Ci0tICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0t ICAgICAgICB9IGVsc2UgaWYgKG1fZW50cnkuZ2V0X3RleHQoKS5sZW5ndGggPT0gMCkgewotLSAg ICAgICAgICAgIG1fbG9vcC5xdWl0KCk7Ci0rICAgICAgICB9IGVsc2UgaWYgKG1fY2FuZGlkYXRl X3BhbmVsX2lzX3Zpc2libGUgJiYgbV9iYWNrd2FyZCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAg aGlkZV9jYW5kaWRhdGVfcGFuZWwoKTsKLSAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg ICAgIH0KLS0gICAgICAgIG1fZW50cnkuZGVsZXRlX3RleHQoMCwgLTEpOwotLSAgICAgICAgcmV0 dXJuIHRydWU7Ci0rICAgICAgICBoaWRlKCk7Ci0rICAgICAgICBpZiAobV9jYW5kaWRhdGVfcGFu ZWxfbW9kZSAmJgotKyAgICAgICAgICAgIG1fbG9va3VwX3RhYmxlLmdldF9udW1iZXJfb2ZfY2Fu ZGlkYXRlcygpID4gMCkgewotKyAgICAgICAgICAgIC8vIENhbGwgcmVtb3ZlX2FsbF9jaGlsZHJl bigpIGluc3RlYWQgb2Ygc2hvd19jYXRlZ29yeV9saXN0KCkKLSsgICAgICAgICAgICAvLyBzbyB0 aGF0IHNob3dfY2F0ZWdvcnlfbGlzdCBkbyBub3QgcmVtb3ZlIGNoaWxkcmVuIHdpdGgKLSsgICAg ICAgICAgICAvLyBQYWdlVXAvUGFnZURvd24uCi0rICAgICAgICAgICAgcmVtb3ZlX2FsbF9jaGls ZHJlbigpOwotKyAgICAgICAgfQotKyAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICB9Ci0gCi0g Ci0tICAgIHByaXZhdGUgYm9vbCBrZXlfcHJlc3NfZW50ZXIoKSB7Ci0rICAgIHB1YmxpYyBib29s IGtleV9wcmVzc19lbnRlcigpIHsKLSAgICAgICAgIGlmIChtX2NhbmRpZGF0ZV9wYW5lbF9pc192 aXNpYmxlKSB7Ci0gICAgICAgICAgICAgdWludCBpbmRleCA9IG1fbG9va3VwX3RhYmxlLmdldF9j dXJzb3JfcG9zKCk7Ci0tICAgICAgICAgICAgY2FuZGlkYXRlX3BhbmVsX3NlbGVjdF9pbmRleChp bmRleCk7Ci0rICAgICAgICAgICAgcmV0dXJuIGhhc192YXJpYW50cyhpbmRleCk7Ci0gICAgICAg ICB9IGVsc2UgaWYgKG1fY2F0ZWdvcnlfYWN0aXZlX2luZGV4ID49IDApIHsKLSAgICAgICAgICAg ICBHdGsuTGlzdEJveFJvdyBndGtyb3cgPSBtX2xpc3RfYm94LmdldF9zZWxlY3RlZF9yb3coKTsK LSAgICAgICAgICAgICBFQm94Um93IHJvdyA9IGd0a3JvdyBhcyBFQm94Um93OwotQEAgLTE3ODks MTMgKzE5MzYsMTExIEBAIHB1YmxpYyBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlv bldpbmRvdyB7Ci0gICAgIH0KLSAKLSAKLSsgICAgcHJpdmF0ZSBHZGsuUmVjdGFuZ2xlIGdldF9t b25pdG9yX2dlb21ldHJ5KCkgewotKyAgICAgICAgR2RrLlJlY3RhbmdsZSBtb25pdG9yX2FyZWEg PSB7IDAsIH07Ci0rCi0rICAgICAgICAvLyBVc2UgZ2V0X21vbml0b3JfZ2VvbWV0cnkoKSBpbnN0 ZWFkIG9mIGdldF9tb25pdG9yX2FyZWEoKS4KLSsgICAgICAgIC8vIGdldF9tb25pdG9yX2FyZWEo KSBleGNsdWRlcyBkb2NrcywgYnV0IHRoZSBsb29rdXAgd2luZG93IHNob3VsZCBiZQotKyAgICAg ICAgLy8gc2hvd24gb3ZlciB0aGVtLgotKyNpZiBWQUxBXzBfMzQKLSsgICAgICAgIEdkay5Nb25p dG9yIG1vbml0b3IgPSBHZGsuRGlzcGxheS5nZXRfZGVmYXVsdCgpLmdldF9tb25pdG9yX2F0X3Bv aW50KAotKyAgICAgICAgICAgICAgICBtX2N1cnNvcl9sb2NhdGlvbi54LAotKyAgICAgICAgICAg ICAgICBtX2N1cnNvcl9sb2NhdGlvbi55KTsKLSsgICAgICAgIG1vbml0b3JfYXJlYSA9IG1vbml0 b3IuZ2V0X2dlb21ldHJ5KCk7Ci0rI2Vsc2UKLSsgICAgICAgIEdkay5TY3JlZW4gc2NyZWVuID0g R2RrLlNjcmVlbi5nZXRfZGVmYXVsdCgpOwotKyAgICAgICAgaW50IG1vbml0b3JfbnVtID0gc2Ny ZWVuLmdldF9tb25pdG9yX2F0X3BvaW50KG1fY3Vyc29yX2xvY2F0aW9uLngsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jdXJzb3JfbG9j YXRpb24ueSk7Ci0rICAgICAgICBzY3JlZW4uZ2V0X21vbml0b3JfZ2VvbWV0cnkobW9uaXRvcl9u dW0sIG91dCBtb25pdG9yX2FyZWEpOwotKyNlbmRpZgotKyAgICAgICAgcmV0dXJuIG1vbml0b3Jf YXJlYTsKLSsgICAgfQotKwotKwotKyAgICBwcml2YXRlIHZvaWQgYWRqdXN0X3dpbmRvd19wb3Np dGlvbigpIHsKLSsgICAgICAgIEdkay5Qb2ludCBjdXJzb3JfcmlnaHRfYm90dG9tID0gewotKyAg ICAgICAgICAgICAgICBtX2N1cnNvcl9sb2NhdGlvbi54ICsgbV9jdXJzb3JfbG9jYXRpb24ud2lk dGgsCi0rICAgICAgICAgICAgICAgIG1fY3Vyc29yX2xvY2F0aW9uLnkgKyBtX2N1cnNvcl9sb2Nh dGlvbi5oZWlnaHQKLSsgICAgICAgIH07Ci0rCi0rICAgICAgICBHdGsuQWxsb2NhdGlvbiBhbGxv Y2F0aW9uOwotKyAgICAgICAgZ2V0X2FsbG9jYXRpb24ob3V0IGFsbG9jYXRpb24pOwotKyAgICAg ICAgR2RrLlBvaW50IHdpbmRvd19yaWdodF9ib3R0b20gPSB7Ci0rICAgICAgICAgICAgY3Vyc29y X3JpZ2h0X2JvdHRvbS54ICsgYWxsb2NhdGlvbi53aWR0aCwKLSsgICAgICAgICAgICBjdXJzb3Jf cmlnaHRfYm90dG9tLnkgKyBhbGxvY2F0aW9uLmhlaWdodAotKyAgICAgICAgfTsKLSsKLSsgICAg ICAgIEdkay5SZWN0YW5nbGUgbW9uaXRvcl9hcmVhID0gZ2V0X21vbml0b3JfZ2VvbWV0cnkoKTsK LSsgICAgICAgIGludCBtb25pdG9yX3JpZ2h0ID0gbW9uaXRvcl9hcmVhLnggKyBtb25pdG9yX2Fy ZWEud2lkdGg7Ci0rICAgICAgICBpbnQgbW9uaXRvcl9ib3R0b20gPSBtb25pdG9yX2FyZWEueSAr IG1vbml0b3JfYXJlYS5oZWlnaHQ7Ci0rCi0rICAgICAgICBpbnQgeCwgeTsKLSsgICAgICAgIGlm ICh3aW5kb3dfcmlnaHRfYm90dG9tLnggPiBtb25pdG9yX3JpZ2h0KQotKyAgICAgICAgICAgIHgg PSBtb25pdG9yX3JpZ2h0IC0gYWxsb2NhdGlvbi53aWR0aDsKLSsgICAgICAgIGVsc2UKLSsgICAg ICAgICAgICB4ID0gY3Vyc29yX3JpZ2h0X2JvdHRvbS54OwotKyAgICAgICAgaWYgKHggPCAwKQot KyAgICAgICAgICAgIHggPSAwOwotKwotKyAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7Ci0r ICAgICAgICBpZiAod2luZG93X3JpZ2h0X2JvdHRvbS55ID4gbW9uaXRvcl9ib3R0b20pIHsKLSsg ICAgICAgICAgICB5ID0gbV9jdXJzb3JfbG9jYXRpb24ueSAtIGFsbG9jYXRpb24uaGVpZ2h0Owot KyAgICAgICAgICAgIC8vIERvIG5vdCB1cCBzaWRlIGRvd24gaW4gV2F5bGFuZAotKyAgICAgICAg ICAgIGlmIChtX2lucHV0X2NvbnRleHRfcGF0aCA9PSAiIikgewotKyAgICAgICAgICAgICAgICBj aGFuZ2VkID0gKG1faXNfdXBfc2lkZV9kb3duID09IGZhbHNlKTsKLSsgICAgICAgICAgICAgICAg bV9pc191cF9zaWRlX2Rvd24gPSB0cnVlOwotKyAgICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAg ICAgICAgICAgIGNoYW5nZWQgPSAobV9pc191cF9zaWRlX2Rvd24gPT0gdHJ1ZSk7Ci0rICAgICAg ICAgICAgICAgIG1faXNfdXBfc2lkZV9kb3duID0gZmFsc2U7Ci0rICAgICAgICAgICAgfQotKyAg ICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICB5ID0gY3Vyc29yX3JpZ2h0X2JvdHRvbS55Owot KyAgICAgICAgICAgIGNoYW5nZWQgPSAobV9pc191cF9zaWRlX2Rvd24gPT0gdHJ1ZSk7Ci0rICAg ICAgICAgICAgbV9pc191cF9zaWRlX2Rvd24gPSBmYWxzZTsKLSsgICAgICAgIH0KLSsgICAgICAg IGlmICh5IDwgMCkKLSsgICAgICAgICAgICB5ID0gMDsKLSsKLSsgICAgICAgIG1vdmUoeCwgeSk7 Ci0rICAgICAgICBpZiAoY2hhbmdlZCkgewotKyAgICAgICAgICAgIGlmIChtX3JlZHJhd193aW5k b3dfaWQgPiAwKQotKyAgICAgICAgICAgICAgICBHTGliLlNvdXJjZS5yZW1vdmUobV9yZWRyYXdf d2luZG93X2lkKTsKLSsgICAgICAgICAgICBtX3JlZHJhd193aW5kb3dfaWQgPSBHTGliLlRpbWVv dXQuYWRkKDEwMCwgKCkgPT4gewotKyAgICAgICAgICAgICAgICBtX3JlZHJhd193aW5kb3dfaWQg PSAwOwotKyAgICAgICAgICAgICAgICB0aGlzLnNob3dfYWxsKCk7Ci0rICAgICAgICAgICAgICAg IHJldHVybiBmYWxzZTsKLSsgICAgICAgICAgICB9KTsKLSsgICAgICAgIH0KLSsgICAgfQotKwot KwotKyNpZiAwCi0rICAgIHByaXZhdGUgdm9pZCBjaGVja19hY3Rpb25fdmFyaWFudF9jYihHdGsu TWVudUl0ZW0gaXRlbSkgewotKyAgICAgICAgR3RrLkNoZWNrTWVudUl0ZW0gY2hlY2sgPSBpdGVt IGFzIEd0ay5DaGVja01lbnVJdGVtOwotKyAgICAgICAgbV9zaG93X2Vtb2ppX3ZhcmlhbnQgPSBj aGVjay5nZXRfYWN0aXZlKCk7Ci0rICAgICAgICAvLyBSZWRyYXcgZW1vamkgY2FuZGlkYXRlIHBh bmVsIGZvciBtX3Nob3dfZW1vamlfdmFyaWFudAotKyAgICAgICAgaWYgKG1fY2FuZGlkYXRlX3Bh bmVsX2lzX3Zpc2libGUpIHsKLSsgICAgICAgICAgICAvLyBET1RPOiBxdWV1ZV9kcmF3KCkgZG9l cyBub3QgZWZmZWN0IGF0IHRoZSByZWFsIHRpbWUuCi0rICAgICAgICAgICAgdGhpcy5xdWV1ZV9k cmF3KCk7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsjZWxzZQotICAgICBwcml2YXRlIHZvaWQgY2hl Y2tfYWN0aW9uX3ZhcmlhbnRfY2IoR0xpYi5TaW1wbGVBY3Rpb24gYWN0aW9uLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpYi5WYXJpYW50PyAgICAgcGFyYW1l dGVyKSB7Ci0gICAgICAgICBtX3Nob3dfZW1vamlfdmFyaWFudCA9ICFhY3Rpb24uZ2V0X3N0YXRl KCkuZ2V0X2Jvb2xlYW4oKTsKLSAgICAgICAgIGFjdGlvbi5zZXRfc3RhdGUobmV3IEdMaWIuVmFy aWFudC5ib29sZWFuKG1fc2hvd19lbW9qaV92YXJpYW50KSk7Ci0gICAgICAgICAvLyBSZWRyYXcg ZW1vamkgY2FuZGlkYXRlIHBhbmVsIGZvciBtX3Nob3dfZW1vamlfdmFyaWFudAotLSAgICAgICAg aWYgKG1fY2FuZGlkYXRlX3BhbmVsX2lzX3Zpc2libGUpCi0tICAgICAgICAgICAgc2hvd19jYW5k aWRhdGVfcGFuZWwoKTsKLSsgICAgICAgIGlmIChtX2NhbmRpZGF0ZV9wYW5lbF9pc192aXNpYmxl KSB7Ci0rICAgICAgICAgICAgLy8gRE9UTzogcXVldWVfZHJhdygpIGRvZXMgbm90IGVmZmVjdCBh dCB0aGUgcmVhbCB0aW1lLgotKyAgICAgICAgICAgIHRoaXMucXVldWVfZHJhdygpOwotKyAgICAg ICAgfQotKyAgICB9Ci0rI2VuZGlmCi0rCi0rCi0rICAgIHByaXZhdGUgdm9pZCBhY3Rpb25fY2xv c2VfY2IoR0xpYi5TaW1wbGVBY3Rpb24gYWN0aW9uLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdMaWIuVmFyaWFudD8gICAgIHBhcmFtZXRlcikgewotKyAgICAgICAgY2FuZGlk YXRlX2NsaWNrZWQoMCwgQlVUVE9OX0NMT1NFX0JVVFRPTiwgMCk7Ci0gICAgIH0KLSAKLSAKLUBA IC0xODQyLDYgKzIwODcsMTIzIEBAIHB1YmxpYyBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBs aWNhdGlvbldpbmRvdyB7Ci0gICAgIH0KLSAKLSAKLSsgICAgcHVibGljIHZvaWQgc2V0X2Fubm90 YXRpb24oc3RyaW5nIGFubm90YXRpb24pIHsKLSsgICAgICAgIG1fYW5ub3RhdGlvbiA9IGFubm90 YXRpb247Ci0rICAgICAgICByZW1vdmVfYWxsX2NoaWxkcmVuKCk7Ci0rICAgICAgICBpZiAoYW5u b3RhdGlvbi5sZW5ndGggPiAwKSB7Ci0rICAgICAgICAgICAgdXBkYXRlX2NhbmRpZGF0ZV93aW5k b3coKTsKLSsgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgaWYgKG1fc2hvd191bmljb2Rl KQotKyAgICAgICAgICAgICAgICB1cGRhdGVfdW5pY29kZV9ibG9ja3MoKTsKLSsgICAgICAgICAg ICBlbHNlCi0rICAgICAgICAgICAgICAgIHVwZGF0ZV9jYXRlZ29yeV9saXN0KCk7Ci0rICAgICAg ICB9Ci0rICAgIH0KLSsKLSsKLSsgICAgcHVibGljIElCdXMuTG9va3VwVGFibGUgZ2V0X29uZV9k aW1lbnNpb25fbG9va3VwX3RhYmxlKCkgewotKyAgICAgICAgdmFyIGxvb2t1cF90YWJsZSA9IG5l dyBJQnVzLkxvb2t1cFRhYmxlKEVNT0pJX0dSSURfUEFHRSwgMCwgdHJ1ZSwgdHJ1ZSk7Ci0rICAg ICAgICB1aW50IGkgPSAwOwotKyAgICAgICAgZm9yICg7IGkgPCBtX2xvb2t1cF90YWJsZS5nZXRf bnVtYmVyX29mX2NhbmRpZGF0ZXMoKTsgaSsrKSB7Ci0rICAgICAgICAgICAgSUJ1cy5UZXh0IHRl eHQgPSBuZXcgSUJ1cy5UZXh0LmZyb21fc3RyaW5nKCIiKTsKLSsgICAgICAgICAgICB0ZXh0LmNv cHkobV9sb29rdXBfdGFibGUuZ2V0X2NhbmRpZGF0ZShpKSk7Ci0rICAgICAgICAgICAgbG9va3Vw X3RhYmxlLmFwcGVuZF9jYW5kaWRhdGUodGV4dCk7Ci0rICAgICAgICB9Ci0rICAgICAgICBpZiAo aSA+IDApCi0rICAgICAgICAgICAgbG9va3VwX3RhYmxlLnNldF9jdXJzb3JfcG9zKG1fbG9va3Vw X3RhYmxlLmdldF9jdXJzb3JfcG9zKCkpOwotKyAgICAgICAgcmV0dXJuIGxvb2t1cF90YWJsZTsK LSsgICAgfQotKwotKwotKyAgICBwdWJsaWMgdWludCBnZXRfbnVtYmVyX29mX2NhbmRpZGF0ZXMo KSB7Ci0rICAgICAgICByZXR1cm4gbV9sb29rdXBfdGFibGUuZ2V0X251bWJlcl9vZl9jYW5kaWRh dGVzKCk7Ci0rICAgIH0KLSsKLSsKLSsgICAgcHVibGljIHVpbnQgZ2V0X2N1cnNvcl9wb3MoKSB7 Ci0rICAgICAgICByZXR1cm4gbV9sb29rdXBfdGFibGUuZ2V0X2N1cnNvcl9wb3MoKTsKLSsgICAg fQotKwotKwotKyAgICBwdWJsaWMgdm9pZCBzZXRfY3Vyc29yX3Bvcyh1aW50IGN1cnNvcl9wb3Mp IHsKLSsgICAgICAgIG1fbG9va3VwX3RhYmxlLnNldF9jdXJzb3JfcG9zKGN1cnNvcl9wb3MpOwot KyAgICB9Ci0rCi0rCi0rICAgIHB1YmxpYyBzdHJpbmcgZ2V0X2N1cnJlbnRfY2FuZGlkYXRlKCkg ewotKyAgICAgICAgLy8gSWYgY2F0ZWdvcnlfbGlzdCBtb2RlLCBkbyBub3Qgc2hvdyB0aGUgY2F0 ZWdvcnkgbmFtZSBvbiBwcmVlZGl0LgotKyAgICAgICAgLy8gSWYgY2FuZGlkYXRlX3BhbmVsIG1v ZGUsIHRoZSBmaXJzdCBzcGFjZSBrZXkgZG9lcyBub3Qgc2hvdyB0aGUKLSsgICAgICAgIC8vIGxv b2t1cCB0YWJsZSBidXQgdGhlIGZpcnN0IGNhbmRpZGF0ZSBpcyBhdmFpYWJsZSBvbiBwcmVlZGl0 LgotKyAgICAgICAgaWYgKCFtX2NhbmRpZGF0ZV9wYW5lbF9tb2RlKQotKyAgICAgICAgICAgIHJl dHVybiAiIjsKLSsgICAgICAgIHVpbnQgY3Vyc29yID0gbV9sb29rdXBfdGFibGUuZ2V0X2N1cnNv cl9wb3MoKTsKLSsgICAgICAgIHJldHVybiBtX2xvb2t1cF90YWJsZS5nZXRfY2FuZGlkYXRlKGN1 cnNvcikudGV4dDsKLSsgICAgfQotKwotKwotKyAgICBwdWJsaWMgSUJ1cy5UZXh0IGdldF90aXRs ZV90ZXh0KCkgewotKyAgICAgICAgdmFyIGxhbmd1YWdlID0gXyhJQnVzLmdldF9sYW5ndWFnZV9u YW1lKG1fY3VycmVudF9sYW5nX2lkKSk7Ci0rICAgICAgICB1aW50IG5jYW5kaWRhdGVzID0gdGhp cy5nZXRfbnVtYmVyX29mX2NhbmRpZGF0ZXMoKTsKLSsgICAgICAgIHN0cmluZyBtYWluX3RpdGxl ID0gXygiRW1vamkgQ2hvaWNlIik7Ci0rICAgICAgICBpZiAobV9zaG93X3VuaWNvZGUpCi0rICAg ICAgICAgICAgbWFpbl90aXRsZSA9IF8oIlVuaWNvZGUgQ2hvaWNlIik7Ci0rICAgICAgICB2YXIg dGV4dCA9IG5ldyBJQnVzLlRleHQuZnJvbV9zdHJpbmcoCi0rICAgICAgICAgICAgICAgICIlcyAo JXMpICgldSAvICV1KSIucHJpbnRmKAotKyAgICAgICAgICAgICAgICAgICAgICAgIG1haW5fdGl0 bGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2UsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgdGhpcy5nZXRfY3Vyc29yX3BvcygpICsgMSwKLSsgICAgICAgICAgICAgICAgICAg ICAgICBuY2FuZGlkYXRlcykpOwotKyAgICAgICAgaW50IGNoYXJfY291bnQgPSB0ZXh0LnRleHQu Y2hhcl9jb3VudCgpOwotKyAgICAgICAgaW50IHN0YXJ0X2luZGV4ID0gLTE7Ci0rICAgICAgICBm b3IgKGludCBpID0gMDsgaSA8IGNoYXJfY291bnQ7IGkrKykgewotKyAgICAgICAgICAgIGlmICh0 ZXh0LnRleHQudXRmOF9vZmZzZXQoaSkuaGFzX3ByZWZpeChsYW5ndWFnZSkpIHsKLSsgICAgICAg ICAgICAgICAgc3RhcnRfaW5kZXggPSBpOwotKyAgICAgICAgICAgICAgICBicmVhazsKLSsgICAg ICAgICAgICB9Ci0rICAgICAgICB9Ci0rICAgICAgICBpZiAoc3RhcnRfaW5kZXggPj0gMCkgewot KyAgICAgICAgICAgIHZhciBhdHRyID0gbmV3IElCdXMuQXR0cmlidXRlKAotKyAgICAgICAgICAg ICAgICAgICAgSUJ1cy5BdHRyVHlwZS5GT1JFR1JPVU5ELAotKyAgICAgICAgICAgICAgICAgICAg MHg4MDgwODAsCi0rICAgICAgICAgICAgICAgICAgICBzdGFydF9pbmRleCwKLSsgICAgICAgICAg ICAgICAgICAgIHN0YXJ0X2luZGV4ICsgbGFuZ3VhZ2UuY2hhcl9jb3VudCgpKTsKLSsgICAgICAg ICAgICB2YXIgYXR0cnMgPSBuZXcgSUJ1cy5BdHRyTGlzdCgpOwotKyAgICAgICAgICAgIGF0dHJz LmFwcGVuZChhdHRyKTsKLSsgICAgICAgICAgICB0ZXh0LnNldF9hdHRyaWJ1dGVzKGF0dHJzKTsK LSsgICAgICAgIH0KLSsgICAgICAgIHJldHVybiB0ZXh0OwotKyAgICB9Ci0rCi0rCi0rI2lmIDAK LSsgICAgcHVibGljIEdMaWIuU0xpc3Q8c3RyaW5nPj8gZ2V0X2NhbmRpZGF0ZXMoKSB7Ci0rICAg ICAgICBpZiAobV9hbm5vdGF0aW9uLmxlbmd0aCA9PSAwKSB7Ci0rICAgICAgICAgICAgcmV0dXJu IG51bGw7Ci0rICAgICAgICB9Ci0rICAgICAgICBpZiAobV9hbm5vdGF0aW9uLmxlbmd0aCA+IG1f ZW1vamlfbWF4X3NlcV9sZW4pIHsKLSsgICAgICAgICAgICByZXR1cm4gbnVsbDsKLSsgICAgICAg IH0KLSsgICAgICAgIHN0cmluZz8gdW5pY29kZV9wb2ludCA9IGNoZWNrX3VuaWNvZGVfcG9pbnQo bV9hbm5vdGF0aW9uKTsKLSsgICAgICAgIEdMaWIuU0xpc3Q8c3RyaW5nPj8gdG90YWxfZW1vamlz ID0KLSsgICAgICAgICAgICBsb29rdXBfZW1vamlzX2Zyb21fYW5ub3RhdGlvbihtX2Fubm90YXRp b24pOwotKyAgICAgICAgaWYgKHRvdGFsX2Vtb2ppcyA9PSBudWxsKSB7Ci0rICAgICAgICAgICAg LyogVXNlcnMgY2FuIHR5cGUgdGl0bGUgc3RyaW5ncyBhZ2FpbnN0IGxvd2VyIGNhc2UuCi0rICAg ICAgICAgICAgICogRS5nLiAiU21pbGUiIGFnYWluc3QgInNtaWxlIgotKyAgICAgICAgICAgICAq IEJ1dCB0aGUgZGljdGlvbmFyeSBoYXMgdGhlIGNhc2Ugc2Vuc2l0aXZlIGFubm90YXRpb25zLgot KyAgICAgICAgICAgICAqIEUuZy4gIjpEIiBhbmQgIjpxIgotKyAgICAgICAgICAgICAqIFNvIG5l ZWQgdG8gY2FsbCBsb29rdXBfZW1vamlzX2Zyb21fYW5ub3RhdGlvbigpIHR3aWNlLgotKyAgICAg ICAgICAgICAqLwotKyAgICAgICAgICAgIHN0cmluZyBsb3dlcl9hbm5vdGF0aW9uID0gbV9hbm5v dGF0aW9uLmRvd24oKTsKLSsgICAgICAgICAgICB0b3RhbF9lbW9qaXMgPSBsb29rdXBfZW1vamlz X2Zyb21fYW5ub3RhdGlvbihsb3dlcl9hbm5vdGF0aW9uKTsKLSsgICAgICAgIH0KLSsgICAgICAg IGlmICh1bmljb2RlX3BvaW50ICE9IG51bGwpCi0rICAgICAgICAgICAgdG90YWxfZW1vamlzLnBy ZXBlbmQodW5pY29kZV9wb2ludCk7Ci0rICAgICAgICByZXR1cm4gdG90YWxfZW1vamlzOwotKyAg ICB9Ci0rI2VuZGlmCi0rCi0rCi0rI2lmIDAKLSAgICAgcHVibGljIHN0cmluZyBydW4oc3RyaW5n ICAgIGlucHV0X2NvbnRleHRfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgR2RrLkV2ZW50 IGV2ZW50KSB7Ci0gICAgICAgICBhc3NlcnQgKG1fbG9vcCA9PSBudWxsKTsKLUBAIC0xOTE1LDEy ICsyMjc3LDM0IEBAIHB1YmxpYyBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldp bmRvdyB7Ci0gCi0gICAgICAgICByZXR1cm4gbV9yZXN1bHQ7Ci0gICAgIH0KLSsjZW5kaWYKLSAK LSAKLSAgICAgLyogb3ZlcnJpZGUgdmlydHVhbCBmdW5jdGlvbnMgKi8KLS0gICAgcHVibGljIG92 ZXJyaWRlIHZvaWQgc2hvdygpIHsKLS0gICAgICAgIGJhc2Uuc2hvdygpOwotLSAgICAgICAgc2V0 X2ZvY3VzX3Zpc2libGUodHJ1ZSk7Ci0rICAgIHB1YmxpYyBvdmVycmlkZSB2b2lkIHNob3dfYWxs KCkgewotKyAgICAgICAgYmFzZS5zaG93X2FsbCgpOwotKyAgICAgICAgaWYgKG1fY2FuZGlkYXRl X3BhbmVsX21vZGUpCi0rICAgICAgICAgICAgc2hvd19jYW5kaWRhdGVfcGFuZWwoKTsKLSsgICAg ICAgIGVsc2UgaWYgKG1fc2hvd191bmljb2RlKQotKyAgICAgICAgICAgIHNob3dfdW5pY29kZV9i bG9ja3MoKTsKLSsgICAgICAgIGVsc2UKLSsgICAgICAgICAgICBzaG93X2NhdGVnb3J5X2xpc3Qo KTsKLSsgICAgfQotKwotKwotKyAgICBwdWJsaWMgb3ZlcnJpZGUgdm9pZCBoaWRlKCkgewotKyAg ICAgICAgYmFzZS5oaWRlKCk7Ci0rICAgICAgICBtX2NhbmRpZGF0ZV9wYW5lbF9pc192aXNpYmxl ID0gZmFsc2U7Ci0rICAgICAgICAvLyBtX2NhbmRpZGF0ZV9wYW5lbF9tb2RlIGlzIG5vdCBmYWxz ZSBpbiB3aGVuIHlvdSB0eXBlIHNvbWV0aGluZwotKyAgICAgICAgLy8gZHVyaW5nIGVuYWJsaW5n IHRoZSBjYW5kaWRhdGUgcGFuZWwuCi0rICAgICAgICBpZiAobV9yZWRyYXdfd2luZG93X2lkID4g MCkgewotKyAgICAgICAgICAgIEdMaWIuU291cmNlLnJlbW92ZShtX3JlZHJhd193aW5kb3dfaWQp OwotKyAgICAgICAgICAgIG1fcmVkcmF3X3dpbmRvd19pZCA9IDA7Ci0rICAgICAgICB9Ci0rICAg ICAgICBpZiAobV91bmljb2RlX3Byb2dyZXNzX2lkID4gMCkgewotKyAgICAgICAgICAgIEdMaWIu U291cmNlLnJlbW92ZShtX3VuaWNvZGVfcHJvZ3Jlc3NfaWQpOwotKyAgICAgICAgICAgIG1fdW5p Y29kZV9wcm9ncmVzc19pZCA9IDA7Ci0rICAgICAgICB9Ci0gICAgIH0KLSAKLSAKLUBAIC0xOTM1 LDExICsyMzE5LDE2IEBAIHB1YmxpYyBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlv bldpbmRvdyB7Ci0gICAgICAgICBzd2l0Y2ggKGtleXZhbCkgewotICAgICAgICAgY2FzZSBHZGsu S2V5LkVzY2FwZToKLSAgICAgICAgICAgICBpZiAoa2V5X3ByZXNzX2VzY2FwZSgpKQotLSAgICAg ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLS0gICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAg ICAgICAgc2hvd19hbGwoKTsKLSsgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgIGNh c2UgR2RrLktleS5SZXR1cm46Ci0gICAgICAgICBjYXNlIEdkay5LZXkuS1BfRW50ZXI6Ci0tICAg ICAgICAgICAga2V5X3ByZXNzX2VudGVyKCk7Ci0rICAgICAgICAgICAgaWYgKGtleV9wcmVzc19l bnRlcigpKSB7Ci0rICAgICAgICAgICAgICAgIHNob3dfYWxsKCk7Ci0rICAgICAgICAgICAgfSBl bHNlIHsKLSsgICAgICAgICAgICAgICAgbV9yZXN1bHQgPSBnZXRfY3VycmVudF9jYW5kaWRhdGUo KTsKLSsgICAgICAgICAgICAgICAgaGlkZSgpOwotKyAgICAgICAgICAgIH0KLSAgICAgICAgICAg ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgIGNhc2UgR2RrLktleS5CYWNrU3BhY2U6Ci0gICAgICAg ICAgICAgaWYgKG1fZW50cnkuZ2V0X3RleHQoKS5sZW5ndGggPiAwKSB7Ci1AQCAtMTk3Nyw0MiAr MjM2Niw0OSBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5k b3cgewotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAg ICAgY2F0ZWdvcnlfbGlzdF9jdXJzb3JfbW92ZShHZGsuS2V5LkRvd24pOwotKyAgICAgICAgICAg ICAgICBzaG93X2FsbCgpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICByZXR1cm4gdHJ1 ZTsKLSAgICAgICAgIGNhc2UgR2RrLktleS5SaWdodDoKLSAgICAgICAgIGNhc2UgR2RrLktleS5L UF9SaWdodDoKLSAgICAgICAgICAgICBrZXlfcHJlc3NfY3Vyc29yX2hvcml6b250YWwoR2RrLktl eS5SaWdodCwgbW9kaWZpZXJzKTsKLSsgICAgICAgICAgICBzaG93X2FsbCgpOwotICAgICAgICAg ICAgIHJldHVybiB0cnVlOwotICAgICAgICAgY2FzZSBHZGsuS2V5LkxlZnQ6Ci0gICAgICAgICBj YXNlIEdkay5LZXkuS1BfTGVmdDoKLSAgICAgICAgICAgICBrZXlfcHJlc3NfY3Vyc29yX2hvcml6 b250YWwoR2RrLktleS5MZWZ0LCBtb2RpZmllcnMpOwotKyAgICAgICAgICAgIHNob3dfYWxsKCk7 Ci0gICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICBjYXNlIEdkay5LZXkuRG93bjoK LSAgICAgICAgIGNhc2UgR2RrLktleS5LUF9Eb3duOgotICAgICAgICAgICAgIGtleV9wcmVzc19j dXJzb3JfdmVydGljYWwoR2RrLktleS5Eb3duLCBtb2RpZmllcnMpOwotKyAgICAgICAgICAgIHNo b3dfYWxsKCk7Ci0gICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICBjYXNlIEdkay5L ZXkuVXA6Ci0gICAgICAgICBjYXNlIEdkay5LZXkuS1BfVXA6Ci0gICAgICAgICAgICAga2V5X3By ZXNzX2N1cnNvcl92ZXJ0aWNhbChHZGsuS2V5LlVwLCBtb2RpZmllcnMpOwotKyAgICAgICAgICAg IHNob3dfYWxsKCk7Ci0gICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICBjYXNlIEdk ay5LZXkuUGFnZV9Eb3duOgotICAgICAgICAgY2FzZSBHZGsuS2V5LktQX1BhZ2VfRG93bjoKLSAg ICAgICAgICAgICBrZXlfcHJlc3NfY3Vyc29yX3ZlcnRpY2FsKEdkay5LZXkuUGFnZV9Eb3duLCBt b2RpZmllcnMpOwotKyAgICAgICAgICAgIHNob3dfYWxsKCk7Ci0gICAgICAgICAgICAgcmV0dXJu IHRydWU7Ci0gICAgICAgICBjYXNlIEdkay5LZXkuUGFnZV9VcDoKLSAgICAgICAgIGNhc2UgR2Rr LktleS5LUF9QYWdlX1VwOgotICAgICAgICAgICAgIGtleV9wcmVzc19jdXJzb3JfdmVydGljYWwo R2RrLktleS5QYWdlX1VwLCBtb2RpZmllcnMpOwotKyAgICAgICAgICAgIHNob3dfYWxsKCk7Ci0g ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICBjYXNlIEdkay5LZXkuSG9tZToKLSAg ICAgICAgIGNhc2UgR2RrLktleS5LUF9Ib21lOgotLSAgICAgICAgICAgIGlmIChrZXlfcHJlc3Nf Y3Vyc29yX2hvbWVfZW5kKEdkay5LZXkuSG9tZSwgbW9kaWZpZXJzKSkKLS0gICAgICAgICAgICAg ICAgcmV0dXJuIHRydWU7Ci0tICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAga2V5X3By ZXNzX2N1cnNvcl9ob21lX2VuZChHZGsuS2V5LkhvbWUsIG1vZGlmaWVycyk7Ci0rICAgICAgICAg ICAgc2hvd19hbGwoKTsKLSsgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgIGNhc2Ug R2RrLktleS5FbmQ6Ci0gICAgICAgICBjYXNlIEdkay5LZXkuS1BfRW5kOgotLSAgICAgICAgICAg IGlmIChrZXlfcHJlc3NfY3Vyc29yX2hvbWVfZW5kKEdkay5LZXkuRW5kLCBtb2RpZmllcnMpKQot LSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLS0gICAgICAgICAgICBicmVhazsKLSsgICAg ICAgICAgICBrZXlfcHJlc3NfY3Vyc29yX2hvbWVfZW5kKEdkay5LZXkuRW5kLCBtb2RpZmllcnMp OwotKyAgICAgICAgICAgIHNob3dfYWxsKCk7Ci0rICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g ICAgICAgICBjYXNlIEdkay5LZXkuSW5zZXJ0OgotICAgICAgICAgY2FzZSBHZGsuS2V5LktQX0lu c2VydDoKLSAgICAgICAgICAgICBHTGliLlNpZ25hbC5lbWl0X2J5X25hbWUobV9lbnRyeSwgInRv Z2dsZS1vdmVyd3JpdGUiKTsKLUBAIC0yMDIzLDI2ICsyNDE5LDMwIEBAIHB1YmxpYyBjbGFzcyBJ QnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7Ci0gICAgICAgICAgICAgc3dpdGNo IChrZXl2YWwpIHsKLSAgICAgICAgICAgICBjYXNlIEdkay5LZXkuZjoKLSAgICAgICAgICAgICAg ICAga2V5X3ByZXNzX2N1cnNvcl9ob3Jpem9udGFsKEdkay5LZXkuUmlnaHQsIG1vZGlmaWVycyk7 Ci0rICAgICAgICAgICAgICAgIHNob3dfYWxsKCk7Ci0gICAgICAgICAgICAgICAgIHJldHVybiB0 cnVlOwotICAgICAgICAgICAgIGNhc2UgR2RrLktleS5iOgotICAgICAgICAgICAgICAgICBrZXlf cHJlc3NfY3Vyc29yX2hvcml6b250YWwoR2RrLktleS5MZWZ0LCBtb2RpZmllcnMpOwotKyAgICAg ICAgICAgICAgICBzaG93X2FsbCgpOwotICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg ICAgICAgICAgICBjYXNlIEdkay5LZXkubjoKLSAgICAgICAgICAgICBjYXNlIEdkay5LZXkuTjoK LSAgICAgICAgICAgICAgICAga2V5X3ByZXNzX2N1cnNvcl92ZXJ0aWNhbChHZGsuS2V5LkRvd24s IG1vZGlmaWVycyk7Ci0rICAgICAgICAgICAgICAgIHNob3dfYWxsKCk7Ci0gICAgICAgICAgICAg ICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgIGNhc2UgR2RrLktleS5wOgotICAgICAgICAg ICAgIGNhc2UgR2RrLktleS5QOgotICAgICAgICAgICAgICAgICBrZXlfcHJlc3NfY3Vyc29yX3Zl cnRpY2FsKEdkay5LZXkuVXAsIG1vZGlmaWVycyk7Ci0rICAgICAgICAgICAgICAgIHNob3dfYWxs KCk7Ci0gICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgIGNhc2UgR2Rr LktleS5oOgotLSAgICAgICAgICAgICAgICBpZiAoa2V5X3ByZXNzX2N1cnNvcl9ob21lX2VuZChH ZGsuS2V5LkhvbWUsIG1vZGlmaWVycykpCi0tICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1 ZTsKLS0gICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAgICAgIGtleV9wcmVzc19j dXJzb3JfaG9tZV9lbmQoR2RrLktleS5Ib21lLCBtb2RpZmllcnMpOwotKyAgICAgICAgICAgICAg ICBzaG93X2FsbCgpOwotKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAg ICBjYXNlIEdkay5LZXkuZToKLS0gICAgICAgICAgICAgICAgaWYgKGtleV9wcmVzc19jdXJzb3Jf aG9tZV9lbmQoR2RrLktleS5FbmQsIG1vZGlmaWVycykpCi0tICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKLS0gICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAgICAgIGtl eV9wcmVzc19jdXJzb3JfaG9tZV9lbmQoR2RrLktleS5FbmQsIG1vZGlmaWVycyk7Ci0rICAgICAg ICAgICAgICAgIHNob3dfYWxsKCk7Ci0rICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg ICAgICAgICAgIGNhc2UgR2RrLktleS51OgotICAgICAgICAgICAgICAgICBpZiAobV9lbnRyeS5n ZXRfdGV4dCgpLmxlbmd0aCA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAgIEdMaWIuU2lnbmFs LmVtaXRfYnlfbmFtZShtX2VudHJ5LAotQEAgLTIxMDMsMTQgKzI1MDMsNDEgQEAgcHVibGljIGNs YXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKLSAgICAgfQotIAotIAot KyAgICBwdWJsaWMgdm9pZCBzZXRfaW5wdXRfY29udGV4dF9wYXRoKHN0cmluZyBpbnB1dF9jb250 ZXh0X3BhdGgpIHsKLSsgICAgICAgIG1faW5wdXRfY29udGV4dF9wYXRoID0gaW5wdXRfY29udGV4 dF9wYXRoOwotKyAgICAgICAgaWYgKGlucHV0X2NvbnRleHRfcGF0aCA9PSAiIikgewotKyAgICAg ICAgICAgIG1fd2FybmluZ19tZXNzYWdlID0gXygiIiArCi0rICAgICAgICAgICAgICAgICJGYWls ZWQgdG8gZ2V0IHRoZSBjdXJyZW50IHRleHQgYXBwbGljYXRpb24uICIgKwotKyAgICAgICAgICAg ICAgICAiUGxlYXNlIHJlLWZvY3VzIHlvdXIgYXBwbGljYXRpb24uIEUuZy4gUHJlc3MgRXNjIGtl eSAiICsKLSsgICAgICAgICAgICAgICAgInNldmVyYWwgdGltZXMgdG8gcmVsZWFzZSB0aGUgZW1v amkgdHlwaW5nIG1vZGUsICIgKwotKyAgICAgICAgICAgICAgICAiY2xpY2sgeW91ciBkZXNrdG9w IGFuZCBjbGljayB5b3VyIHRleHQgYXBwbGljYXRpb24gYWdhaW4uIgotKyAgICAgICAgICAgICk7 Ci0rICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgIG1fd2FybmluZ19tZXNzYWdlID0gIiI7 Ci0rICAgICAgICB9Ci0rICAgIH0KLSsKLSsKLSAgICAgcHVibGljIHN0cmluZyBnZXRfc2VsZWN0 ZWRfc3RyaW5nKCkgewotICAgICAgICAgcmV0dXJuIG1fcmVzdWx0OwotICAgICB9Ci0gCi0gCi0r ICAgIHByaXZhdGUgdm9pZCByZXNldF93aW5kb3dfbW9kZSgpIHsKLSsgICAgICAgIG1fYmFja3dh cmRfaW5kZXggPSAtMTsKLSsgICAgICAgIG1fYmFja3dhcmQgPSBudWxsOwotKyAgICAgICAgbV9j YW5kaWRhdGVfcGFuZWxfaXNfdmlzaWJsZSA9IGZhbHNlOwotKyAgICAgICAgbV9jYW5kaWRhdGVf cGFuZWxfbW9kZSA9IGZhbHNlOwotKyAgICAgICAgLy8gRG8gbm90IGNsZWFyIG1fbG9va3VwX3Rh YmxlIHRvIHdvcmsgd2l0aCBzcGFjZSBrZXkgbGF0ZXIuCi0rICAgIH0KLSsKLSsKLSAgICAgcHVi bGljIHZvaWQgcmVzZXQoKSB7Ci0rICAgICAgICByZXNldF93aW5kb3dfbW9kZSgpOwotICAgICAg ICAgbV9pbnB1dF9jb250ZXh0X3BhdGggPSAiIjsKLSAgICAgICAgIG1fcmVzdWx0ID0gbnVsbDsK LSsgICAgICAgIG1fY2F0ZWdvcnlfYWN0aXZlX2luZGV4ID0gLTE7Ci0rICAgICAgICBtX3Nob3df dW5pY29kZSA9IGZhbHNlOwotICAgICB9Ci0gCi0gCi1AQCAtMjE0NSw2ICsyNTcyLDIzIEBAIHB1 YmxpYyBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7Ci0gICAgIH0K LSAKLSAKLSsgICAgcHVibGljIHZvaWQgc2V0X2N1cnNvcl9sb2NhdGlvbihpbnQgeCwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeSwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50IGhlaWdodCkgewotKyAgICAgICAgR2RrLlJlY3RhbmdsZSBsb2NhdGlv biA9IEdkay5SZWN0YW5nbGUoKXsKLSsgICAgICAgICAgICB4ID0geCwgeSA9IHksIHdpZHRoID0g d2lkdGgsIGhlaWdodCA9IGhlaWdodCB9OwotKyAgICAgICAgaWYgKG1fY3Vyc29yX2xvY2F0aW9u ID09IGxvY2F0aW9uKQotKyAgICAgICAgICAgIHJldHVybjsKLSsgICAgICAgIG1fY3Vyc29yX2xv Y2F0aW9uID0gbG9jYXRpb247Ci0rICAgIH0KLSsKLSsKLSsgICAgcHVibGljIGJvb2wgaXNfY2Fu ZGlkYXRlX3BhbmVsX21vZGUoKSB7Ci0rICAgICAgICByZXR1cm4gbV9jYW5kaWRhdGVfcGFuZWxf bW9kZTsKLSsgICAgfQotKwotKwotICAgICBwdWJsaWMgc3RhdGljIGJvb2wgaGFzX2xvYWRlZF9l bW9qaV9kaWN0KCkgewotICAgICAgICAgaWYgKG1fZW1vamlfdG9fZGF0YV9kaWN0ID09IG51bGwp Ci0gICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotQEAgLTIxNjUsNiArMjYwOSwxMCBAQCBwdWJs aWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICB9Ci0g Ci0gCi0rICAgIHB1YmxpYyBzdGF0aWMgc3RyaW5nIGdldF9hbm5vdGF0aW9uX2xhbmcoKSB7Ci0r ICAgICAgICByZXR1cm4gbV9jdXJyZW50X2xhbmdfaWQ7Ci0rICAgIH0KLSsKLSAgICAgcHVibGlj IHN0YXRpYyB2b2lkIHNldF9lbW9qaV9mb250KHN0cmluZz8gZW1vamlfZm9udCkgewotICAgICAg ICAgcmV0dXJuX2lmX2ZhaWwoZW1vamlfZm9udCAhPSBudWxsICYmIGVtb2ppX2ZvbnQgIT0gIiIp OwotICAgICAgICAgUGFuZ28uRm9udERlc2NyaXB0aW9uIGZvbnRfZGVzYyA9Ci1AQCAtMjE4Miwx OCArMjYzMCwyMSBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25X aW5kb3cgewotICAgICAgICAgbV9oYXNfcGFydGlhbF9tYXRjaCA9IGhhc19wYXJ0aWFsX21hdGNo OwotICAgICB9Ci0gCi0rCi0gICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBzZXRfcGFydGlhbF9tYXRj aF9sZW5ndGgoaW50IGxlbmd0aCkgewotICAgICAgICAgaWYgKGxlbmd0aCA8IDEpCi0gICAgICAg ICAgICAgcmV0dXJuOwotICAgICAgICAgbV9wYXJ0aWFsX21hdGNoX2xlbmd0aCA9IGxlbmd0aDsK LSAgICAgfQotIAotKwotICAgICBwdWJsaWMgc3RhdGljIHZvaWQgc2V0X3BhcnRpYWxfbWF0Y2hf Y29uZGl0aW9uKGludCBjb25kaXRpb24pIHsKLSAgICAgICAgIGlmIChjb25kaXRpb24gPCAwKQot ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgIG1fcGFydGlhbF9tYXRjaF9jb25kaXRpb24g PSBjb25kaXRpb247Ci0gICAgIH0KLSAKLSsKLSAgICAgcHVibGljIHN0YXRpYyB2b2lkIHNldF9m YXZvcml0ZXMoc3RyaW5nW10/IHVub3duZWRfZmF2b3JpdGVzLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJpbmdbXT8gdW5vd25lZF9mYXZvcml0ZV9hbm5vdGF0aW9u cykgewotICAgICAgICAgbV9mYXZvcml0ZXMgPSB7fTsKLWRpZmYgLS1naXQgYS91aS9ndGszL2Vt b2ppZXJhcHAudmFsYSBiL3VpL2d0azMvZW1vamllcmFwcC52YWxhCi1pbmRleCA5NTA2YTk0NS4u Nzg3ZDQ0OGYgMTAwNjQ0Ci0tLS0gYS91aS9ndGszL2Vtb2ppZXJhcHAudmFsYQotKysrIGIvdWkv Z3RrMy9lbW9qaWVyYXBwLnZhbGEKLUBAIC0yOCw4ICsyOCw5IEBAIGludCBwYXJ0aWFsX21hdGNo X2NvbmRpdGlvbiA9IC0xOwotIAotIHB1YmxpYyBjbGFzcyBFbW9qaUFwcGxpY2F0aW9uIDogR3Rr LkFwcGxpY2F0aW9uIHsKLSAgICAgcHJpdmF0ZSBJQnVzRW1vamllcj8gbV9lbW9qaWVyOwotLSAg ICBHTGliLlNldHRpbmdzIG1fc2V0dGluZ3NfZW1vamkgPQotKyAgICBwcml2YXRlIEdMaWIuU2V0 dGluZ3MgbV9zZXR0aW5nc19lbW9qaSA9Ci0gICAgICAgICAgICAgbmV3IEdMaWIuU2V0dGluZ3Mo Im9yZy5mcmVlZGVza3RvcC5pYnVzLnBhbmVsLmVtb2ppIik7Ci0rICAgIHByaXZhdGUgQXBwbGlj YXRpb25Db21tYW5kTGluZT8gbV9jb21tYW5kX2xpbmUgPSBudWxsOwotIAotIAotICAgICBwcml2 YXRlIEVtb2ppQXBwbGljYXRpb24oKSB7Ci1AQCAtNDAsMjUgKzQxLDM5IEBAIHB1YmxpYyBjbGFz cyBFbW9qaUFwcGxpY2F0aW9uIDogR3RrLkFwcGxpY2F0aW9uIHsKLSAKLSAKLSAgICAgcHJpdmF0 ZSB2b2lkIHNob3dfZGlhbG9nKEFwcGxpY2F0aW9uQ29tbWFuZExpbmUgY29tbWFuZF9saW5lKSB7 Ci0tICAgICAgICBtX2Vtb2ppZXIgPSBuZXcgSUJ1c0Vtb2ppZXIoKTsKLS0gICAgICAgIC8vIEZv ciB0aXRsZSBoYW5kbGluZyBpbiBnbm9tZS1zaGVsbAotLSAgICAgICAgYWRkX3dpbmRvdyhtX2Vt b2ppZXIpOwotLSAgICAgICAgR2RrLkV2ZW50IGV2ZW50ID0gR3RrLmdldF9jdXJyZW50X2V2ZW50 KCk7Ci0tICAgICAgICAvLyBQbGFzbWEgYW5kIEdOT01FMyBkZXNrdG9wIHJldHVybnMgbnVsbCBl dmVudAotLSAgICAgICAgaWYgKGV2ZW50ID09IG51bGwpIHsKLS0gICAgICAgICAgICBldmVudCA9 IG5ldyBHZGsuRXZlbnQoR2RrLkV2ZW50VHlwZS5LRVlfUFJFU1MpOwotLSAgICAgICAgICAgIGV2 ZW50LmtleS50aW1lID0gR2RrLkNVUlJFTlRfVElNRTsKLS0gICAgICAgICAgICAvLyBldmVudC5n ZXRfc2VhdCgpIHJlZmVycyBldmVudC5hbnkud2luZG93Ci0tICAgICAgICAgICAgZXZlbnQua2V5 LndpbmRvdyA9IEdkay5nZXRfZGVmYXVsdF9yb290X3dpbmRvdygpOwotLSAgICAgICAgICAgIGV2 ZW50LmtleS53aW5kb3cucmVmKCk7Ci0rICAgICAgICBtX2NvbW1hbmRfbGluZSA9IGNvbW1hbmRf bGluZTsKLSsgICAgICAgIG1fZW1vamllci5yZXNldCgpOwotKyAgICAgICAgbV9lbW9qaWVyLnNl dF9hbm5vdGF0aW9uKCIiKTsKLSsgICAgICAgIG1fZW1vamllci5zaG93X2FsbCgpOwotKyAgICB9 Ci0rCi0rCi0rICAgIHB1YmxpYyB2b2lkIGNhbmRpZGF0ZV9jbGlja2VkX2xvb2t1cF90YWJsZSh1 aW50IGluZGV4LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdWludCBidXR0b24sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50IHN0YXRlKSB7Ci0rICAgICAgICBpZiAobV9jb21tYW5kX2xpbmUgPT0gbnVs bCkKLSsgICAgICAgICAgICByZXR1cm47Ci0rICAgICAgICBpZiAoYnV0dG9uID09IElCdXNFbW9q aWVyLkJVVFRPTl9DTE9TRV9CVVRUT04pIHsKLSsgICAgICAgICAgICBtX2Vtb2ppZXIuaGlkZSgp OwotKyAgICAgICAgICAgIG1fY29tbWFuZF9saW5lLnByaW50KCIlc1xuIiwgXygiQ2FuY2VsZWQg dG8gY2hvb3NlIGFuIGVtb2ppLiIpKTsKLSsgICAgICAgICAgICBtX2NvbW1hbmRfbGluZSA9IG51 bGw7Ci0rICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgfQotLSAgICAgICAgc3RyaW5nIGVt b2ppID0gbV9lbW9qaWVyLnJ1bigiIiwgZXZlbnQpOwotLSAgICAgICAgcmVtb3ZlX3dpbmRvdyht X2Vtb2ppZXIpOwotLSAgICAgICAgaWYgKGVtb2ppID09IG51bGwpIHsKLS0gICAgICAgICAgICBt X2Vtb2ppZXIgPSBudWxsOwotLSAgICAgICAgICAgIGNvbW1hbmRfbGluZS5wcmludCgiJXNcbiIs IF8oIkNhbmNlbGVkIHRvIGNob29zZSBhbiBlbW9qaS4iKSk7Ci0rICAgICAgICBpZiAobV9lbW9q aWVyID09IG51bGwpCi0rICAgICAgICAgICAgcmV0dXJuOwotKyAgICAgICAgYm9vbCBzaG93X2Nh bmRpZGF0ZSA9IGZhbHNlOwotKyAgICAgICAgdWludCBuY2FuZGlkYXRlcyA9IG1fZW1vamllci5n ZXRfbnVtYmVyX29mX2NhbmRpZGF0ZXMoKTsKLSsgICAgICAgIGlmIChuY2FuZGlkYXRlcyA+IDAg JiYgbmNhbmRpZGF0ZXMgPj0gaW5kZXgpIHsKLSsgICAgICAgICAgICBtX2Vtb2ppZXIuc2V0X2N1 cnNvcl9wb3MoaW5kZXgpOwotKyAgICAgICAgICAgIHNob3dfY2FuZGlkYXRlID0gbV9lbW9qaWVy Lmhhc192YXJpYW50cyhpbmRleCk7Ci0rICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgIHJl dHVybjsKLSsgICAgICAgIH0KLSsgICAgICAgIGlmIChzaG93X2NhbmRpZGF0ZSkgewotICAgICAg ICAgICAgIHJldHVybjsKLSAgICAgICAgIH0KLSsgICAgICAgIHN0cmluZyBlbW9qaSA9IG1fZW1v amllci5nZXRfY3VycmVudF9jYW5kaWRhdGUoKTsKLSsgICAgICAgIG1fZW1vamllci5oaWRlKCk7 Ci0gICAgICAgICBHdGsuQ2xpcGJvYXJkIGNsaXBib2FyZCA9IEd0ay5DbGlwYm9hcmQuZ2V0KEdk ay5TRUxFQ1RJT05fQ0xJUEJPQVJEKTsKLSAgICAgICAgIGNsaXBib2FyZC5zZXRfdGV4dChlbW9q aSwgLTEpOwotICAgICAgICAgY2xpcGJvYXJkLnN0b3JlKCk7Ci1AQCAtNzUsOSArOTAsOCBAQCBw dWJsaWMgY2xhc3MgRW1vamlBcHBsaWNhdGlvbiA6IEd0ay5BcHBsaWNhdGlvbiB7Ci0gICAgICAg ICAgICAgZW1vamllcl9mYXZvcml0ZXMgKz0gZW1vamk7Ci0gICAgICAgICAgICAgbV9zZXR0aW5n c19lbW9qaS5zZXRfc3RydigiZmF2b3JpdGVzIiwgZW1vamllcl9mYXZvcml0ZXMpOwotICAgICAg ICAgfQotLQotLSAgICAgICAgbV9lbW9qaWVyID0gbnVsbDsKLS0gICAgICAgIGNvbW1hbmRfbGlu ZS5wcmludCgiJXNcbiIsIF8oIkNvcGllZCBhbiBlbW9qaSB0byB5b3VyIGNsaXBib2FyZC4iKSk7 Ci0rICAgICAgICBtX2NvbW1hbmRfbGluZS5wcmludCgiJXNcbiIsIF8oIkNvcGllZCBhbiBlbW9q aSB0byB5b3VyIGNsaXBib2FyZC4iKSk7Ci0rICAgICAgICBtX2NvbW1hbmRfbGluZSA9IG51bGw7 Ci0gICAgIH0KLSAKLSAKLUBAIC04OCw3ICsxMDIsNyBAQCBwdWJsaWMgY2xhc3MgRW1vamlBcHBs aWNhdGlvbiA6IEd0ay5BcHBsaWNhdGlvbiB7Ci0gICAgIH0KLSAKLSAKLS0gICAgcHJpdmF0ZSBp bnQgX2NvbW1hbmRfbGluZSAoQXBwbGljYXRpb25Db21tYW5kTGluZSBjb21tYW5kX2xpbmUpIHsK LSsgICAgcHJpdmF0ZSBpbnQgX2NvbW1hbmRfbGluZShBcHBsaWNhdGlvbkNvbW1hbmRMaW5lIGNv bW1hbmRfbGluZSkgewotICAgICAgICAgLy8gU2V0IGRlZmF1bHQgZm9udCBzaXplCi0gICAgICAg ICBJQnVzRW1vamllci5zZXRfZW1vamlfZm9udChtX3NldHRpbmdzX2Vtb2ppLmdldF9zdHJpbmco ImZvbnQiKSk7Ci0gCi1AQCAtMTgxLDEzICsxOTUsMjIgQEAgcHVibGljIGNsYXNzIEVtb2ppQXBw bGljYXRpb24gOiBHdGsuQXBwbGljYXRpb24gewotIAotICAgICAgICAgSUJ1c0Vtb2ppZXIubG9h ZF91bmljb2RlX2RpY3QoKTsKLSAKLSsgICAgICAgIGlmIChtX2Vtb2ppZXIgPT0gbnVsbCkgewot KyAgICAgICAgICAgIG1fZW1vamllciA9IG5ldyBJQnVzRW1vamllcigpOwotKyAgICAgICAgICAg IC8vIEZvciB0aXRsZSBoYW5kbGluZyBpbiBnbm9tZS1zaGVsbAotKyAgICAgICAgICAgIGFkZF93 aW5kb3cobV9lbW9qaWVyKTsKLSsgICAgICAgICAgICBtX2Vtb2ppZXIuY2FuZGlkYXRlX2NsaWNr ZWQuY29ubmVjdCgoaSwgYiwgcykgPT4gewotKyAgICAgICAgICAgICAgICBjYW5kaWRhdGVfY2xp Y2tlZF9sb29rdXBfdGFibGUoaSwgYiwgcyk7Ci0rICAgICAgICAgICAgfSk7Ci0rICAgICAgICB9 Ci0rCi0gICAgICAgICBhY3RpdmF0ZV9kaWFsb2coY29tbWFuZF9saW5lKTsKLSAKLSAgICAgICAg IHJldHVybiBQb3NpeC5FWElUX1NVQ0NFU1M7Ci0gICAgIH0KLSAKLSAKLS0gICAgcHVibGljIG92 ZXJyaWRlIGludCBjb21tYW5kX2xpbmUgKEFwcGxpY2F0aW9uQ29tbWFuZExpbmUgY29tbWFuZF9s aW5lKSB7Ci0rICAgIHB1YmxpYyBvdmVycmlkZSBpbnQgY29tbWFuZF9saW5lKEFwcGxpY2F0aW9u Q29tbWFuZExpbmUgY29tbWFuZF9saW5lKSB7Ci0gICAgICAgICAvLyBrZWVwIHRoZSBhcHBsaWNh dGlvbiBydW5uaW5nIHVudGlsIHdlIGFyZSBkb25lIHdpdGggdGhpcyBjb21tYW5kbGluZQotICAg ICAgICAgdGhpcy5ob2xkKCk7Ci0gICAgICAgICBpbnQgcmVzdWx0ID0gX2NvbW1hbmRfbGluZShj b21tYW5kX2xpbmUpOwotQEAgLTE5Niw2ICsyMTksMTMgQEAgcHVibGljIGNsYXNzIEVtb2ppQXBw bGljYXRpb24gOiBHdGsuQXBwbGljYXRpb24gewotICAgICB9Ci0gCi0gCi0rICAgIHB1YmxpYyBv dmVycmlkZSB2b2lkIHNodXRkb3duKCkgewotKyAgICAgICAgYmFzZS5zaHV0ZG93bigpOwotKyAg ICAgICAgcmVtb3ZlX3dpbmRvdyhtX2Vtb2ppZXIpOwotKyAgICAgICAgbV9lbW9qaWVyID0gbnVs bDsKLSsgICAgfQotKwotKwotICAgICBwdWJsaWMgc3RhdGljIGludCBtYWluIChzdHJpbmdbXSBh cmdzKSB7Ci0gICAgICAgICBHTGliLkludGwuYmluZHRleHRkb21haW4oQ29uZmlnLkdFVFRFWFRf UEFDS0FHRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWcuR0xJQl9M T0NBTEVfRElSKTsKLWRpZmYgLS1naXQgYS91aS9ndGszL2V4dGVuc2lvbi52YWxhIGIvdWkvZ3Rr My9leHRlbnNpb24udmFsYQotaW5kZXggN2Q2ZDc2ZTcuLmM3MjlmZDdlIDEwMDY0NAotLS0tIGEv dWkvZ3RrMy9leHRlbnNpb24udmFsYQotKysrIGIvdWkvZ3RrMy9leHRlbnNpb24udmFsYQotQEAg LTUwLDIwICs1MCwyMCBAQCBjbGFzcyBFeHRlbnNpb25HdGsgOiBHdGsuQXBwbGljYXRpb24gewot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmcuZnJlZWRlc2t0b3AuREJ1 cyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5hbWVBY3F1aXJlZCIs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi9vcmcvZnJlZWRlc2t0b3Av REJ1cyIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1cy5TRVJWSUNF X1BBTkVMX0VYVEVOU0lPTiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ QnVzLlNFUlZJQ0VfUEFORUxfRVhURU5TSU9OX0VNT0pJLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIERCdXNTaWduYWxGbGFncy5OT05FLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJ1c19uYW1lX2FjcXVpcmVkX2NiKTsKLSAgICAgICAgIGNvbm5l Y3Rpb24uc2lnbmFsX3N1YnNjcmliZSgib3JnLmZyZWVkZXNrdG9wLkRCdXMiLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmcuZnJlZWRlc2t0b3AuREJ1cyIsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5hbWVMb3N0IiwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiL29yZy9mcmVlZGVza3RvcC9EQnVzIiwKLS0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzLlNFUlZJQ0VfUEFORUxfRVhURU5T SU9OLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCdXMuU0VSVklDRV9Q QU5FTF9FWFRFTlNJT05fRU1PSkksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgREJ1c1NpZ25hbEZsYWdzLk5PTkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYnVzX25hbWVfbG9zdF9jYik7Ci0gICAgICAgICB2YXIgZmxhZ3MgPQotICAgICAgICAg ICAgICAgICBJQnVzLkJ1c05hbWVGbGFnLkFMTE9XX1JFUExBQ0VNRU5UIHwKLSAgICAgICAgICAg ICAgICAgSUJ1cy5CdXNOYW1lRmxhZy5SRVBMQUNFX0VYSVNUSU5HOwotLSAgICAgICAgbV9idXMu cmVxdWVzdF9uYW1lKElCdXMuU0VSVklDRV9QQU5FTF9FWFRFTlNJT04sIGZsYWdzKTsKLSsgICAg ICAgIG1fYnVzLnJlcXVlc3RfbmFtZShJQnVzLlNFUlZJQ0VfUEFORUxfRVhURU5TSU9OX0VNT0pJ LCBmbGFncyk7Ci0gICAgIH0KLSAKLSAKLWRpZmYgLS1naXQgYS91aS9ndGszL3BhbmVsLnZhbGEg Yi91aS9ndGszL3BhbmVsLnZhbGEKLWluZGV4IGQ5MjM4Yzg5Li40YzNiMDBjYSAxMDA2NDQKLS0t LSBhL3VpL2d0azMvcGFuZWwudmFsYQotKysrIGIvdWkvZ3RrMy9wYW5lbC52YWxhCi1AQCAtMTE0 OCwyNiArMTE0OCwxNSBAQCBjbGFzcyBQYW5lbCA6IElCdXMuUGFuZWxTZXJ2aWNlIHsKLSAjaWYg RU1PSklfRElDVAotICAgICAgICAgICAgIGl0ZW0gPSBuZXcgR3RrLk1lbnVJdGVtLndpdGhfbGFi ZWwoXygiRW1vamkgQ2hvaWNlIikpOwotICAgICAgICAgICAgIGl0ZW0uYWN0aXZhdGUuY29ubmVj dCgoaSkgPT4gewotLSAgICAgICAgICAgICAgICBHZGsuRXZlbnQgZXZlbnQgPSBHdGsuZ2V0X2N1 cnJlbnRfZXZlbnQoKTsKLS0gICAgICAgICAgICAgICAgaWYgKGV2ZW50ID09IG51bGwpIHsKLS0g ICAgICAgICAgICAgICAgICAgIGV2ZW50ID0gbmV3IEdkay5FdmVudChHZGsuRXZlbnRUeXBlLktF WV9QUkVTUyk7Ci0tICAgICAgICAgICAgICAgICAgICBldmVudC5rZXkudGltZSA9IEdkay5DVVJS RU5UX1RJTUU7Ci0tICAgICAgICAgICAgICAgICAgICAvLyBldmVudC5nZXRfc2VhdCgpIHJlZmVy cyBldmVudC5hbnkud2luZG93Ci0tICAgICAgICAgICAgICAgICAgICBldmVudC5rZXkud2luZG93 ID0gR2RrLmdldF9kZWZhdWx0X3Jvb3Rfd2luZG93KCk7Ci0tICAgICAgICAgICAgICAgICAgICBl dmVudC5rZXkud2luZG93LnJlZigpOwotLSAgICAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAg ICAgIElCdXMuWEV2ZW50IHhldmVudCA9IG5ldyBJQnVzLlhFdmVudCgKLS0gICAgICAgICAgICAg ICAgICAgICAgICAiZXZlbnQtdHlwZSIsIElCdXMuWEV2ZW50VHlwZS5LRVlfUFJFU1MsCi0tICAg ICAgICAgICAgICAgICAgICAgICAgIndpbmRvdyIsCi0tICAgICAgICAgICAgICAgICAgICAgICAg KGV2ZW50LmtleS53aW5kb3cgYXMgR2RrLlgxMS5XaW5kb3cpLmdldF94aWQoKSwKLS0gICAgICAg ICAgICAgICAgICAgICAgICAidGltZSIsIGV2ZW50LmtleS50aW1lLAotLSAgICAgICAgICAgICAg ICAgICAgICAgICJwdXJwb3NlIiwgImVtb2ppIik7Ci0tICAgICAgICAgICAgICAgIC8qIG5ldyBH TGliLlZhcmlhbnQoIihzdikiLCAiZW1vamkiLCB4ZXZlbnQuc2VyaWFsaXplX29iamVjdCgpKQot KyAgICAgICAgICAgICAgICBJQnVzLkV4dGVuc2lvbkV2ZW50IGV2ZW50ID0gbmV3IElCdXMuRXh0 ZW5zaW9uRXZlbnQoCi0rICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiLCAiZW1vamkiLCAi aXMtZW5hYmxlZCIsIHRydWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtcyIsICJj YXRlZ29yeS1saXN0Iik7Ci0rICAgICAgICAgICAgICAgIC8qIG5ldyBHTGliLlZhcmlhbnQoIihz dikiLCAiZW1vamkiLCBldmVudC5zZXJpYWxpemVfb2JqZWN0KCkpCi0gICAgICAgICAgICAgICAg ICAqIHdpbGwgY2FsbCBnX3ZhcmlhbnRfdW5yZWYoKSBmb3IgdGhlIGNoaWxkIHZhcmlhbnQgYnkg dmFsYS4KLSAgICAgICAgICAgICAgICAgICogSSBoYXZlIG5vIGlkZWEgbm90IHRvIHVucmVmIHRo ZSBvYmplY3Qgc28gaW50ZWdyYXRlZAotLSAgICAgICAgICAgICAgICAgKiB0aGUgcHVycG9zZSB0 byBJQnVzLlhFdmVudCBhYm92ZS4KLSsgICAgICAgICAgICAgICAgICogdGhlIHB1cnBvc2UgdG8g SUJ1cy5FeHRlbnNpb25FdmVudCBhYm92ZS4KLSAgICAgICAgICAgICAgICAgICovCi0tICAgICAg ICAgICAgICAgIHBhbmVsX2V4dGVuc2lvbih4ZXZlbnQuc2VyaWFsaXplX29iamVjdCgpKTsKLSsg ICAgICAgICAgICAgICAgcGFuZWxfZXh0ZW5zaW9uKGV2ZW50KTsKLSAgICAgICAgICAgICB9KTsK LSAgICAgICAgICAgICBtX3N5c19tZW51LmFwcGVuZChpdGVtKTsKLSAjZW5kaWYKLWRpZmYgLS1n aXQgYS91aS9ndGszL3BhbmVsYmluZGluZy52YWxhIGIvdWkvZ3RrMy9wYW5lbGJpbmRpbmcudmFs YQotaW5kZXggNTgxZjcyMWUuLjUyYjc4YzE3IDEwMDY0NAotLS0tIGEvdWkvZ3RrMy9wYW5lbGJp bmRpbmcudmFsYQotKysrIGIvdWkvZ3RrMy9wYW5lbGJpbmRpbmcudmFsYQotQEAgLTIxLDcgKzIx LDE5MyBAQAotICAqIFVTQQotICAqLwotIAotK2NsYXNzIFByZWVkaXQgOiBHdGsuV2luZG93IHsK LSsgICAgcHJpdmF0ZSBHdGsuTGFiZWwgbV9leHRlbnNpb25fcHJlZWRpdF90ZXh0OwotKyAgICBw cml2YXRlIEd0ay5MYWJlbCBtX2V4dGVuc2lvbl9wcmVlZGl0X2Vtb2ppOwotKyAgICBwcml2YXRl IElCdXMuVGV4dD8gbV9lbmdpbmVfcHJlZWRpdF90ZXh0OwotKyAgICBwcml2YXRlIGJvb2wgbV9l bmdpbmVfcHJlZWRpdF90ZXh0X3Nob3c7Ci0rICAgIHByaXZhdGUgdWludCBtX2VuZ2luZV9wcmVl ZGl0X2N1cnNvcl9wb3M7Ci0rICAgIHByaXZhdGUgc3RyaW5nIG1fcHJlZml4ID0gIkAiOwotKyAg ICBwcml2YXRlIGJvb2wgbV9pc19zaG93biA9IHRydWU7Ci0rCi0rCi0rICAgIHB1YmxpYyBQcmVl ZGl0KCkgewotKyAgICAgICAgR0xpYi5PYmplY3QoCi0rICAgICAgICAgICAgbmFtZSA6ICJJQnVz UHJlZWRpdCIsCi0rICAgICAgICAgICAgdHlwZTogR3RrLldpbmRvd1R5cGUuUE9QVVAKLSsgICAg ICAgICk7Ci0rICAgICAgICBtX2V4dGVuc2lvbl9wcmVlZGl0X3RleHQgID0gbmV3IEd0ay5MYWJl bCgiIik7Ci0rICAgICAgICBtX2V4dGVuc2lvbl9wcmVlZGl0X2Vtb2ppICA9IG5ldyBHdGsuTGFi ZWwoIiIpOwotKyAgICB9Ci0rCi0rCi0rICAgIHB1YmxpYyBuZXcgdm9pZCBoaWRlKCkgewotKyAg ICAgICAgcmVzZXQoKTsKLSsgICAgICAgIGJhc2UuaGlkZSgpOwotKyAgICAgICAgbV9pc19zaG93 biA9IGZhbHNlOwotKyAgICB9Ci0rCi0rCi0rICAgIHB1YmxpYyBib29sIGlzX3Nob3duKCkgewot KyAgICAgICAgcmV0dXJuIG1faXNfc2hvd247Ci0rICAgIH0KLSsKLSsKLSsgICAgcHVibGljIHZv aWQgcmVzZXQoKSB7Ci0rICAgICAgICBzZXRfZW1vamkoIiIpOwotKyAgICAgICAgc2V0X3RleHQo IiIpOwotKyAgICAgICAgcmVzaXplKDEsIDEpOwotKyAgICAgICAgbV9pc19zaG93biA9IHRydWU7 Ci0rICAgIH0KLSsKLSsgICAgcHVibGljIHZvaWQgYXBwZW5kX3RleHQoc3RyaW5nIHRleHQpIHsK LSsgICAgICAgIGlmICh0ZXh0Lmxlbmd0aCA9PSAwKQotKyAgICAgICAgICAgIHJldHVybjsKLSsg ICAgICAgIHN0cmluZyB0b3RhbCA9IG1fZXh0ZW5zaW9uX3ByZWVkaXRfdGV4dC5nZXRfdGV4dCgp OwotKyAgICAgICAgdG90YWwgKz0gdGV4dDsKLSsgICAgICAgIG1fZXh0ZW5zaW9uX3ByZWVkaXRf dGV4dC5zZXRfdGV4dCh0b3RhbCk7Ci0rICAgIH0KLSsKLSsKLSsgICAgcHVibGljIHN0cmluZyBn ZXRfdGV4dCgpIHsKLSsgICAgICAgIHJldHVybiBtX2V4dGVuc2lvbl9wcmVlZGl0X3RleHQuZ2V0 X3RleHQoKTsKLSsgICAgfQotKwotKwotKyAgICBwdWJsaWMgdm9pZCBzZXRfdGV4dChzdHJpbmcg dGV4dCkgewotKyAgICAgICAgbV9leHRlbnNpb25fcHJlZWRpdF90ZXh0LnNldF90ZXh0KHRleHQp OwotKyAgICB9Ci0rCi0rCi0rICAgIHB1YmxpYyBzdHJpbmcgZ2V0X2Vtb2ppKCkgewotKyAgICAg ICAgcmV0dXJuIG1fZXh0ZW5zaW9uX3ByZWVkaXRfZW1vamkuZ2V0X3RleHQoKTsKLSsgICAgfQot KwotKwotKyAgICBwdWJsaWMgdm9pZCBzZXRfZW1vamkoc3RyaW5nIHRleHQpIHsKLSsgICAgICAg IG1fZXh0ZW5zaW9uX3ByZWVkaXRfZW1vamkuc2V0X3RleHQodGV4dCk7Ci0rICAgIH0KLSsKLSsK LSsgICAgcHVibGljIGJvb2wgYmFja3NwYWNlKCkgewotKyAgICAgICAgc3RyaW5nIHRvdGFsID0g bV9leHRlbnNpb25fcHJlZWRpdF9lbW9qaS5nZXRfdGV4dCgpOwotKyAgICAgICAgaWYgKHRvdGFs Lmxlbmd0aCA+IDApIHsKLSsgICAgICAgICAgICBtX2V4dGVuc2lvbl9wcmVlZGl0X2Vtb2ppLnNl dF90ZXh0KCIiKTsKLSsgICAgICAgICAgICByZXNpemUoMSwgMSk7Ci0rICAgICAgICAgICAgcmV0 dXJuIGZhbHNlOwotKyAgICAgICAgfQotKyAgICAgICAgdG90YWwgPSBtX2V4dGVuc2lvbl9wcmVl ZGl0X3RleHQuZ2V0X3RleHQoKTsKLSsgICAgICAgIGludCBjaGFyX2NvdW50ID0gdG90YWwuY2hh cl9jb3VudCgpOwotKyAgICAgICAgaWYgKGNoYXJfY291bnQgPT0gMCkKLSsgICAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKLSsgICAgICAgIHRvdGFsID0gdG90YWxbMDp0b3RhbC5pbmRleF9vZl9udGhf Y2hhcihjaGFyX2NvdW50IC0gMSldOwotKyAgICAgICAgcmVzaXplKDEsIDEpOwotKyAgICAgICAg bV9leHRlbnNpb25fcHJlZWRpdF90ZXh0LnNldF90ZXh0KHRvdGFsKTsKLSsgICAgICAgIGlmICh0 b3RhbC5sZW5ndGggPT0gMCkKLSsgICAgICAgICAgICByZXNpemUoMSwgMSk7Ci0rICAgICAgICBy ZXR1cm4gdHJ1ZTsKLSsgICAgfQotKwotKwotKyAgICBwcml2YXRlIHN0cmluZyBnZXRfZXh0ZW5z aW9uX3RleHQgKCkgewotKyAgICAgICAgc3RyaW5nIGV4dGVuc2lvbl90ZXh0ID0gbV9leHRlbnNp b25fcHJlZWRpdF9lbW9qaS5nZXRfdGV4dCgpOwotKyAgICAgICAgaWYgKGV4dGVuc2lvbl90ZXh0 Lmxlbmd0aCA9PSAwKQotKyAgICAgICAgICAgIGV4dGVuc2lvbl90ZXh0ID0gbV9leHRlbnNpb25f cHJlZWRpdF90ZXh0LmdldF90ZXh0KCk7Ci0rICAgICAgICByZXR1cm4gbV9wcmVmaXggKyBleHRl bnNpb25fdGV4dDsKLSsgICAgfQotKwotKwotKyAgICBwcml2YXRlIHZvaWQgc2V0X3ByZWVkaXRf Y29sb3IoSUJ1cy5UZXh0IHRleHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1aW50IHN0YXJ0X2luZGV4LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dWludCBlbmRfaW5kZXgpIHsKLSsgICAgICAgIHRleHQuYXBwZW5kX2F0dHJpYnV0ZShJQnVzLkF0 dHJUeXBlLlVOREVSTElORSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzLkF0 dHJVbmRlcmxpbmUuU0lOR0xFLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0 X2luZGV4LCAoaW50KWVuZF9pbmRleCk7Ci0rICAgIH0KLSsKLSsKLSsgICAgcHVibGljIElCdXMu VGV4dCBnZXRfZW5naW5lX3ByZWVkaXRfdGV4dCgpIHsKLSsgICAgICAgIHN0cmluZyBleHRlbnNp b25fdGV4dCA9IGdldF9leHRlbnNpb25fdGV4dCgpOwotKyAgICAgICAgdWludCBjaGFyX2NvdW50 ID0gZXh0ZW5zaW9uX3RleHQuY2hhcl9jb3VudCgpOwotKyAgICAgICAgSUJ1cy5UZXh0IHJldHZh bDsKLSsgICAgICAgIGlmIChtX2VuZ2luZV9wcmVlZGl0X3RleHQgPT0gbnVsbCB8fCAhbV9lbmdp bmVfcHJlZWRpdF90ZXh0X3Nob3cpIHsKLSsgICAgICAgICAgICByZXR2YWwgPSBuZXcgSUJ1cy5U ZXh0LmZyb21fc3RyaW5nKGV4dGVuc2lvbl90ZXh0KTsKLSsgICAgICAgICAgICBzZXRfcHJlZWRp dF9jb2xvcihyZXR2YWwsIDAsIGNoYXJfY291bnQpOwotKyAgICAgICAgICAgIHJldHVybiByZXR2 YWw7Ci0rICAgICAgICB9Ci0rICAgICAgICByZXR2YWwgPSBuZXcgSUJ1cy5UZXh0LmZyb21fc3Ry aW5nKAotKyAgICAgICAgICAgICAgICBleHRlbnNpb25fdGV4dCArIG1fZW5naW5lX3ByZWVkaXRf dGV4dC5nZXRfdGV4dCgpKTsKLSsgICAgICAgIHNldF9wcmVlZGl0X2NvbG9yKHJldHZhbCwgMCwg Y2hhcl9jb3VudCk7Ci0rCi0rICAgICAgICB1bm93bmVkIElCdXMuQXR0ckxpc3QgYXR0cnMgPSBt X2VuZ2luZV9wcmVlZGl0X3RleHQuZ2V0X2F0dHJpYnV0ZXMoKTsKLSsKLSsgICAgICAgIGlmIChh dHRycyA9PSBudWxsKQotKyAgICAgICAgICAgIHJldHVybiByZXR2YWw7Ci0rCi0rICAgICAgICBp bnQgaSA9IDA7Ci0rICAgICAgICB3aGlsZSAodHJ1ZSkgewotKyAgICAgICAgICAgIElCdXMuQXR0 cmlidXRlIGF0dHIgPSBhdHRycy5nZXQoaSsrKTsKLSsgICAgICAgICAgICBpZiAoYXR0ciA9PSBu dWxsKQotKyAgICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgICBsb25nIHN0YXJ0X2lu ZGV4ID0gYXR0ci5zdGFydF9pbmRleDsKLSsgICAgICAgICAgICBsb25nIGVuZF9pbmRleCA9IGF0 dHIuZW5kX2luZGV4OwotKyAgICAgICAgICAgIGlmIChzdGFydF9pbmRleCA8IDApCi0rICAgICAg ICAgICAgICAgIHN0YXJ0X2luZGV4ID0gMDsKLSsgICAgICAgICAgICBpZiAoZW5kX2luZGV4IDwg MCkKLSsgICAgICAgICAgICAgICAgZW5kX2luZGV4ID0gbV9lbmdpbmVfcHJlZWRpdF90ZXh0Lmdl dF9sZW5ndGgoKTsKLSsgICAgICAgICAgICByZXR2YWwuYXBwZW5kX2F0dHJpYnV0ZShhdHRyLnR5 cGUsIGF0dHIudmFsdWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh cl9jb3VudCArICh1aW50KXN0YXJ0X2luZGV4LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChpbnQpY2hhcl9jb3VudCArIChpbnQpZW5kX2luZGV4KTsKLSsgICAgICAgIH0K LSsgICAgICAgIHJldHVybiByZXR2YWw7Ci0rICAgIH0KLSsKLSsKLSsgICAgcHVibGljIHZvaWQg c2V0X2VuZ2luZV9wcmVlZGl0X3RleHQoSUJ1cy5UZXh0PyB0ZXh0KSB7Ci0rICAgICAgICBtX2Vu Z2luZV9wcmVlZGl0X3RleHQgPSB0ZXh0OwotKyAgICB9Ci0rCi0rCi0rICAgIHB1YmxpYyB2b2lk IHNob3dfZW5naW5lX3ByZWVkaXRfdGV4dCgpIHsKLSsgICAgICAgIG1fZW5naW5lX3ByZWVkaXRf dGV4dF9zaG93ID0gdHJ1ZTsKLSsgICAgfQotKwotKwotKyAgICBwdWJsaWMgdm9pZCBoaWRlX2Vu Z2luZV9wcmVlZGl0X3RleHQoKSB7Ci0rICAgICAgICBtX2VuZ2luZV9wcmVlZGl0X3RleHRfc2hv dyA9IGZhbHNlOwotKyAgICB9Ci0rCi0rCi0rICAgIHB1YmxpYyB1aW50IGdldF9lbmdpbmVfcHJl ZWRpdF9jdXJzb3JfcG9zKCkgewotKyAgICAgICAgcmV0dXJuIGdldF9leHRlbnNpb25fdGV4dCgp LmNoYXJfY291bnQoKSArIG1fZW5naW5lX3ByZWVkaXRfY3Vyc29yX3BvczsKLSsgICAgfQotKwot KwotKyAgICBwdWJsaWMgdm9pZCBzZXRfZW5naW5lX3ByZWVkaXRfY3Vyc29yX3Bvcyh1aW50IGN1 cnNvcl9wb3MpIHsKLSsgICAgICAgIG1fZW5naW5lX3ByZWVkaXRfY3Vyc29yX3BvcyA9IGN1cnNv cl9wb3M7Ci0rICAgIH0KLSsKLSsKLSsgICAgcHVibGljIElCdXMuVGV4dCBnZXRfY29tbWl0X3Rl eHQoKSB7Ci0rICAgICAgICBzdHJpbmcgZXh0ZW5zaW9uX3RleHQgPSBtX2V4dGVuc2lvbl9wcmVl ZGl0X2Vtb2ppLmdldF90ZXh0KCk7Ci0rICAgICAgICBpZiAoZXh0ZW5zaW9uX3RleHQubGVuZ3Ro ID09IDApCi0rICAgICAgICAgICAgZXh0ZW5zaW9uX3RleHQgPSBtX2V4dGVuc2lvbl9wcmVlZGl0 X3RleHQuZ2V0X3RleHQoKTsKLSsgICAgICAgIHJldHVybiBuZXcgSUJ1cy5UZXh0LmZyb21fc3Ry aW5nKGV4dGVuc2lvbl90ZXh0KTsKLSsgICAgfQotKwotKwotKyAgICBwdWJsaWMgdm9pZCBzZXRf ZXh0ZW5zaW9uX25hbWUoc3RyaW5nIGV4dGVuc2lvbl9uYW1lKSB7Ci0rICAgICAgICBpZiAoZXh0 ZW5zaW9uX25hbWUubGVuZ3RoID09IDApCi0rICAgICAgICAgICAgbV9wcmVmaXggPSAiQCI7Ci0r ICAgICAgICBlbHNlCi0rICAgICAgICAgICAgbV9wcmVmaXggPSBleHRlbnNpb25fbmFtZVswOjFd OwotKyAgICB9Ci0rfQotKwotKwotIGNsYXNzIFBhbmVsQmluZGluZyA6IElCdXMuUGFuZWxTZXJ2 aWNlIHsKLSsgICAgcHJpdmF0ZSBib29sIG1faXNfd2F5bGFuZDsKLSsgICAgcHJpdmF0ZSBib29s IG1fd2F5bGFuZF9sb29rdXBfdGFibGVfaXNfdmlzaWJsZTsKLSAgICAgcHJpdmF0ZSBJQnVzLkJ1 cyBtX2J1czsKLSAgICAgcHJpdmF0ZSBHdGsuQXBwbGljYXRpb24gbV9hcHBsaWNhdGlvbjsKLSAg ICAgcHJpdmF0ZSBHTGliLlNldHRpbmdzIG1fc2V0dGluZ3NfcGFuZWwgPSBudWxsOwotQEAgLTM4 LDE4ICsyMjQsMjYgQEAgY2xhc3MgUGFuZWxCaW5kaW5nIDogSUJ1cy5QYW5lbFNlcnZpY2Ugewot ICAgICBwcml2YXRlIGJvb2wgbV9sb2FkZWRfZW1vamkgPSBmYWxzZTsKLSAgICAgcHJpdmF0ZSBi b29sIG1fbG9hZF91bmljb2RlX2F0X3N0YXJ0dXA7Ci0gICAgIHByaXZhdGUgYm9vbCBtX2xvYWRl ZF91bmljb2RlID0gZmFsc2U7Ci0rICAgIHByaXZhdGUgYm9vbCBtX2VuYWJsZV9leHRlbnNpb247 Ci0rICAgIHByaXZhdGUgc3RyaW5nIG1fZXh0ZW5zaW9uX25hbWUgPSAiIjsKLSsgICAgcHJpdmF0 ZSBQcmVlZGl0IG1fcHJlZWRpdDsKLSAKLSAgICAgcHVibGljIFBhbmVsQmluZGluZyhJQnVzLkJ1 cyBidXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgR3RrLkFwcGxpY2F0aW9uIGFwcGxpY2F0 aW9uKSB7Ci0gICAgICAgICBHTGliLmFzc2VydChidXMuaXNfY29ubmVjdGVkKCkpOwotICAgICAg ICAgLy8gQ2hhaW4gdXAgYmFzZSBjbGFzcyBjb25zdHJ1Y3RvcgotICAgICAgICAgR0xpYi5PYmpl Y3QoY29ubmVjdGlvbiA6IGJ1cy5nZXRfY29ubmVjdGlvbigpLAotLSAgICAgICAgICAgICAgICAg ICAgb2JqZWN0X3BhdGggOiBJQnVzLlBBVEhfUEFORUxfRVhURU5TSU9OKTsKLSsgICAgICAgICAg ICAgICAgICAgIG9iamVjdF9wYXRoIDogSUJ1cy5QQVRIX1BBTkVMX0VYVEVOU0lPTl9FTU9KSSk7 Ci0rCi0rICAgICAgICBUeXBlIGluc3RhbmNlX3R5cGUgPSBHZGsuRGlzcGxheS5nZXRfZGVmYXVs dCgpLmdldF90eXBlKCk7Ci0rICAgICAgICBUeXBlIHdheWxhbmRfdHlwZSA9IHR5cGVvZihHZGtX YXlsYW5kLkRpc3BsYXkpOwotKyAgICAgICAgbV9pc193YXlsYW5kID0gaW5zdGFuY2VfdHlwZS5p c19hKHdheWxhbmRfdHlwZSk7Ci0gCi0gICAgICAgICBtX2J1cyA9IGJ1czsKLSAgICAgICAgIG1f YXBwbGljYXRpb24gPSBhcHBsaWNhdGlvbjsKLSAKLSAgICAgICAgIGluaXRfc2V0dGluZ3MoKTsK LSsgICAgICAgIG1fcHJlZWRpdCA9IG5ldyBQcmVlZGl0KCk7Ci0gICAgIH0KLSAKLSAKLUBAIC02 OSwxMiArMjYzLDIwIEBAIGNsYXNzIFBhbmVsQmluZGluZyA6IElCdXMuUGFuZWxTZXJ2aWNlIHsK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmIG1fY3Nz X3Byb3ZpZGVyKTsKLSAgICAgICAgIH0pOwotIAotKyAgICAgICAgbV9zZXR0aW5nc19lbW9qaS5j aGFuZ2VkWyJ1bmljb2RlLWhvdGtleSJdLmNvbm5lY3QoKGtleSkgPT4gewotKyAgICAgICAgICAg ICAgICBzZXRfZW1vamlfaG90a2V5KCk7Ci0rICAgICAgICB9KTsKLSsKLSAgICAgICAgIG1fc2V0 dGluZ3NfZW1vamkuY2hhbmdlZFsiZm9udCJdLmNvbm5lY3QoKGtleSkgPT4gewotICAgICAgICAg ICAgICAgICBCaW5kaW5nQ29tbW9uLnNldF9jdXN0b21fZm9udChtX3NldHRpbmdzX3BhbmVsLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NldHRpbmdz X2Vtb2ppLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZWYgbV9jc3NfcHJvdmlkZXIpOwotICAgICAgICAgfSk7Ci0gCi0rICAgICAgICBtX3NldHRpbmdz X2Vtb2ppLmNoYW5nZWRbImhvdGtleSJdLmNvbm5lY3QoKGtleSkgPT4gewotKyAgICAgICAgICAg ICAgICBzZXRfZW1vamlfaG90a2V5KCk7Ci0rICAgICAgICB9KTsKLSsKLSAgICAgICAgIG1fc2V0 dGluZ3NfZW1vamkuY2hhbmdlZFsiZmF2b3JpdGVzIl0uY29ubmVjdCgoa2V5KSA9PiB7Ci0gICAg ICAgICAgICAgICAgIHNldF9lbW9qaV9mYXZvcml0ZXMoKTsKLSAgICAgICAgIH0pOwotQEAgLTEw OSw2ICszMTEsNTQgQEAgY2xhc3MgUGFuZWxCaW5kaW5nIDogSUJ1cy5QYW5lbFNlcnZpY2Ugewot ICAgICB9Ci0gCi0gCi0rICAgIHByaXZhdGUgdW5vd25lZAotKyAgICBJQnVzLlByb2Nlc3NLZXlF dmVudERhdGE/IHBhcnNlX2FjY2VsZXJhdG9yKHN0cmluZyBhY2NlbGVyYXRvcikgewotKyAgICAg ICAgSUJ1cy5Qcm9jZXNzS2V5RXZlbnREYXRhIGtleSA9IHt9OwotKyAgICAgICAgdWludCBrZXlz eW0gPSAwOwotKyAgICAgICAgSUJ1cy5Nb2RpZmllclR5cGUgbW9kaWZpZXJzID0gMDsKLSsgICAg ICAgIElCdXMuYWNjZWxlcmF0b3JfcGFyc2UoYWNjZWxlcmF0b3IsCi0rICAgICAgICAgICAgICAg IG91dCBrZXlzeW0sIG91dCBtb2RpZmllcnMpOwotKyAgICAgICAgaWYgKGtleXN5bSA9PSAwVSAm JiBtb2RpZmllcnMgPT0gMCkgewotKyAgICAgICAgICAgIHdhcm5pbmcoIkZhaWxlZCB0byBwYXJz ZSBzaG9ydGN1dCBrZXkgJyVzJyIucHJpbnRmKGFjY2VsZXJhdG9yKSk7Ci0rICAgICAgICAgICAg cmV0dXJuIG51bGw7Ci0rICAgICAgICB9Ci0rICAgICAgICBpZiAoKG1vZGlmaWVycyAmIElCdXMu TW9kaWZpZXJUeXBlLlNVUEVSX01BU0spICE9IDApIHsKLSsgICAgICAgICAgICBtb2RpZmllcnMg Xj0gSUJ1cy5Nb2RpZmllclR5cGUuU1VQRVJfTUFTSzsKLSsgICAgICAgICAgICBtb2RpZmllcnMg fD0gSUJ1cy5Nb2RpZmllclR5cGUuTU9ENF9NQVNLOwotKyAgICAgICAgfQotKyAgICAgICAga2V5 LmtleXZhbCA9IGtleXN5bTsKLSsgICAgICAgIGtleS5zdGF0ZSA9IG1vZGlmaWVyczsKLSsgICAg ICAgIHJldHVybiBrZXk7Ci0rICAgIH0KLSsKLSsKLSsgICAgcHJpdmF0ZSB2b2lkIHNldF9lbW9q aV9ob3RrZXkoKSB7Ci0rICAgICAgICBJQnVzLlByb2Nlc3NLZXlFdmVudERhdGFbXSBlbW9qaV9r ZXlzID0ge307Ci0rICAgICAgICBJQnVzLlByb2Nlc3NLZXlFdmVudERhdGEga2V5OwotKyAgICAg ICAgc3RyaW5nW10gYWNjZWxlcmF0b3JzID0gbV9zZXR0aW5nc19lbW9qaS5nZXRfc3RydigiaG90 a2V5Iik7Ci0rICAgICAgICBmb3JlYWNoICh2YXIgYWNjZWxlcmF0b3IgaW4gYWNjZWxlcmF0b3Jz KSB7Ci0rICAgICAgICAgICAga2V5ID0gcGFyc2VfYWNjZWxlcmF0b3IoYWNjZWxlcmF0b3IpOwot KyAgICAgICAgICAgIGVtb2ppX2tleXMgKz0ga2V5OwotKyAgICAgICAgfQotKwotKyAgICAgICAg LyogU2luY2Uge30gaXMgbm90IGFsbG9jYXRlZCwgcGFyc2VfYWNjZWxlcmF0b3IoKSBzaG91bGQg YmUgdW5vd25lZC4gKi8KLSsgICAgICAgIGtleSA9IHt9OwotKyAgICAgICAgZW1vamlfa2V5cyAr PSBrZXk7Ci0rCi0rICAgICAgICBJQnVzLlByb2Nlc3NLZXlFdmVudERhdGFbXSB1bmljb2RlX2tl eXMgPSB7fTsKLSsgICAgICAgIGFjY2VsZXJhdG9ycyA9IG1fc2V0dGluZ3NfZW1vamkuZ2V0X3N0 cnYoInVuaWNvZGUtaG90a2V5Iik7Ci0rICAgICAgICBmb3JlYWNoICh2YXIgYWNjZWxlcmF0b3Ig aW4gYWNjZWxlcmF0b3JzKSB7Ci0rICAgICAgICAgICAga2V5ID0gcGFyc2VfYWNjZWxlcmF0b3Io YWNjZWxlcmF0b3IpOwotKyAgICAgICAgICAgIHVuaWNvZGVfa2V5cyArPSBrZXk7Ci0rICAgICAg ICB9Ci0rICAgICAgICBrZXkgPSB7fTsKLSsgICAgICAgIHVuaWNvZGVfa2V5cyArPSBrZXk7Ci0r Ci0rICAgICAgICBwYW5lbF9leHRlbnNpb25fcmVnaXN0ZXJfa2V5cygiZW1vamkiLCBlbW9qaV9r ZXlzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuaWNvZGUiLCB1 bmljb2RlX2tleXMpOwotKyAgICB9Ci0rCi0rCi0gICAgIHByaXZhdGUgdm9pZCBzZXRfZW1vamlf ZmF2b3JpdGVzKCkgewotICAgICAgICAgbV9lbW9qaWVyX2Zhdm9yaXRlcyA9IG1fc2V0dGluZ3Nf ZW1vamkuZ2V0X3N0cnYoImZhdm9yaXRlcyIpOwotICAgICAgICAgSUJ1c0Vtb2ppZXIuc2V0X2Zh dm9yaXRlcygKLUBAIC0xNTksNiArNDA5LDcgQEAgY2xhc3MgUGFuZWxCaW5kaW5nIDogSUJ1cy5Q YW5lbFNlcnZpY2UgewotIAotICAgICBwdWJsaWMgdm9pZCBsb2FkX3NldHRpbmdzKCkgewotIAot KyAgICAgICAgc2V0X2Vtb2ppX2hvdGtleSgpOwotICAgICAgICAgc2V0X2xvYWRfZW1vamlfYXRf c3RhcnR1cCgpOwotICAgICAgICAgc2V0X2xvYWRfdW5pY29kZV9hdF9zdGFydHVwKCk7Ci0gICAg ICAgICBCaW5kaW5nQ29tbW9uLnNldF9jdXN0b21fZm9udChtX3NldHRpbmdzX3BhbmVsLAotQEAg LTE4MSwzNiArNDMyLDM3IEBAIGNsYXNzIFBhbmVsQmluZGluZyA6IElCdXMuUGFuZWxTZXJ2aWNl IHsKLSAgICAgICAgICAgICBHTGliLlNvdXJjZS5yZW1vdmUobV9lbW9qaWVyX3NldF9lbW9qaV9s YW5nX2lkKTsKLSAgICAgICAgICAgICBtX2Vtb2ppZXJfc2V0X2Vtb2ppX2xhbmdfaWQgPSAwOwot ICAgICAgICAgfQotLSAgICAgICAgbV9hcHBsaWNhdGlvbiA9IG51bGw7Ci0tICAgIH0KLS0KLS0K LS0gICAgcHJpdmF0ZSB2b2lkIHNob3dfZW1vamllcihHZGsuRXZlbnQgZXZlbnQpIHsKLS0gICAg ICAgIGlmICghbV9sb2FkZWRfZW1vamkpCi0tICAgICAgICAgICAgc2V0X2Vtb2ppX2xhbmcoKTsK LS0gICAgICAgIGlmICghbV9sb2FkZWRfdW5pY29kZSAmJiBtX2xvYWRlZF9lbW9qaSkgewotLSAg ICAgICAgICAgIElCdXNFbW9qaWVyLmxvYWRfdW5pY29kZV9kaWN0KCk7Ci0tICAgICAgICAgICAg bV9sb2FkZWRfdW5pY29kZSA9IHRydWU7Ci0tICAgICAgICB9Ci0tICAgICAgICBtX2Vtb2ppZXIg PSBuZXcgSUJ1c0Vtb2ppZXIoKTsKLS0gICAgICAgIC8vIEZvciB0aXRsZSBoYW5kbGluZyBpbiBn bm9tZS1zaGVsbAotLSAgICAgICAgbV9hcHBsaWNhdGlvbi5hZGRfd2luZG93KG1fZW1vamllcik7 Ci0tICAgICAgICBzdHJpbmcgZW1vamkgPSBtX2Vtb2ppZXIucnVuKG1fcmVhbF9jdXJyZW50X2Nv bnRleHRfcGF0aCwgZXZlbnQpOwotLSAgICAgICAgbV9hcHBsaWNhdGlvbi5yZW1vdmVfd2luZG93 KG1fZW1vamllcik7Ci0tICAgICAgICBpZiAoZW1vamkgPT0gbnVsbCkgewotKyAgICAgICAgaWYg KG1fZW1vamllciAhPSBudWxsKSB7Ci0rICAgICAgICAgICAgbV9hcHBsaWNhdGlvbi5yZW1vdmVf d2luZG93KG1fZW1vamllcik7Ci0gICAgICAgICAgICAgbV9lbW9qaWVyID0gbnVsbDsKLS0gICAg ICAgICAgICByZXR1cm47Ci0gICAgICAgICB9Ci0tICAgICAgICB0aGlzLmVtb2ppZXJfZm9jdXNf Y29tbWl0KCk7Ci0rICAgICAgICBtX2FwcGxpY2F0aW9uID0gbnVsbDsKLSAgICAgfQotIAotIAot LSAgICBwcml2YXRlIHZvaWQgaGFuZGxlX2Vtb2ppX3R5cGluZyhHZGsuRXZlbnQgZXZlbnQpIHsK LS0gICAgICAgIGlmIChtX2Vtb2ppZXIgIT0gbnVsbCAmJiBtX2Vtb2ppZXIuaXNfcnVubmluZygp KSB7Ci0tICAgICAgICAgICAgbV9lbW9qaWVyLnByZXNlbnRfY2VudHJhbGl6ZShldmVudCk7Ci0r ICAgIHByaXZhdGUgdm9pZCBjb21taXRfdGV4dF91cGRhdGVfZmF2b3JpdGVzKElCdXMuVGV4dCB0 ZXh0KSB7Ci0rICAgICAgICBjb21taXRfdGV4dCh0ZXh0KTsKLSsgICAgICAgIElCdXMuRXh0ZW5z aW9uRXZlbnQgZXZlbnQgPSBuZXcgSUJ1cy5FeHRlbnNpb25FdmVudCgKLSsgICAgICAgICAgICAg ICAgICAgICJuYW1lIiwgbV9leHRlbnNpb25fbmFtZSwKLSsgICAgICAgICAgICAgICAgICAgICJp cy1lbmFibGVkIiwgZmFsc2UsCi0rICAgICAgICAgICAgICAgICAgICAiaXMtZXh0ZW5zaW9uIiwg dHJ1ZSk7Ci0rICAgICAgICBwYW5lbF9leHRlbnNpb24oZXZlbnQpOwotKyAgICAgICAgc3RyaW5n IGNvbW1pdHRlZF9zdHJpbmcgPSB0ZXh0LnRleHQ7Ci0rICAgICAgICBzdHJpbmcgcHJlZWRpdF9z dHJpbmcgPSBtX3ByZWVkaXQuZ2V0X3RleHQoKTsKLSsgICAgICAgIG1fcHJlZWRpdC5oaWRlKCk7 Ci0rICAgICAgICBpZiAocHJlZWRpdF9zdHJpbmcgPT0gY29tbWl0dGVkX3N0cmluZykKLSAgICAg ICAgICAgICByZXR1cm47Ci0rICAgICAgICBib29sIGhhc19mYXZvcml0ZSA9IGZhbHNlOwotKyAg ICAgICAgZm9yZWFjaCAodW5vd25lZCBzdHJpbmcgZmF2b3JpdGUgaW4gbV9lbW9qaWVyX2Zhdm9y aXRlcykgewotKyAgICAgICAgICAgIGlmIChmYXZvcml0ZSA9PSBjb21taXR0ZWRfc3RyaW5nKSB7 Ci0rICAgICAgICAgICAgICAgIGhhc19mYXZvcml0ZSA9IHRydWU7Ci0rICAgICAgICAgICAgICAg IGJyZWFrOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgIH0KLSsgICAgICAgIGlmICghaGFzX2Zh dm9yaXRlKSB7Ci0rICAgICAgICAgICAgbV9lbW9qaWVyX2Zhdm9yaXRlcyArPSBjb21taXR0ZWRf c3RyaW5nOwotKyAgICAgICAgICAgIG1fc2V0dGluZ3NfZW1vamkuc2V0X3N0cnYoImZhdm9yaXRl cyIsIG1fZW1vamllcl9mYXZvcml0ZXMpOwotICAgICAgICAgfQotLSAgICAgICAgc2hvd19lbW9q aWVyKGV2ZW50KTsKLSAgICAgfQotIAotIAotQEAgLTIyMywxOSArNDc1LDggQEAgY2xhc3MgUGFu ZWxCaW5kaW5nIDogSUJ1cy5QYW5lbFNlcnZpY2UgewotICAgICAgICAgICAgIHByZXZfY29udGV4 dF9wYXRoICE9ICIiICYmCi0gICAgICAgICAgICAgcHJldl9jb250ZXh0X3BhdGggPT0gbV9jdXJy ZW50X2NvbnRleHRfcGF0aCkgewotICAgICAgICAgICAgIElCdXMuVGV4dCB0ZXh0ID0gbmV3IElC dXMuVGV4dC5mcm9tX3N0cmluZyhzZWxlY3RlZF9zdHJpbmcpOwotLSAgICAgICAgICAgIGNvbW1p dF90ZXh0KHRleHQpOwotLSAgICAgICAgICAgIG1fZW1vamllciA9IG51bGw7Ci0tICAgICAgICAg ICAgYm9vbCBoYXNfZmF2b3JpdGUgPSBmYWxzZTsKLS0gICAgICAgICAgICBmb3JlYWNoICh1bm93 bmVkIHN0cmluZyBmYXZvcml0ZSBpbiBtX2Vtb2ppZXJfZmF2b3JpdGVzKSB7Ci0tICAgICAgICAg ICAgICAgIGlmIChmYXZvcml0ZSA9PSBzZWxlY3RlZF9zdHJpbmcpIHsKLS0gICAgICAgICAgICAg ICAgICAgIGhhc19mYXZvcml0ZSA9IHRydWU7Ci0tICAgICAgICAgICAgICAgICAgICBicmVhazsK LS0gICAgICAgICAgICAgICAgfQotLSAgICAgICAgICAgIH0KLS0gICAgICAgICAgICBpZiAoIWhh c19mYXZvcml0ZSkgewotLSAgICAgICAgICAgICAgICBtX2Vtb2ppZXJfZmF2b3JpdGVzICs9IHNl bGVjdGVkX3N0cmluZzsKLS0gICAgICAgICAgICAgICAgbV9zZXR0aW5nc19lbW9qaS5zZXRfc3Ry digiZmF2b3JpdGVzIiwgbV9lbW9qaWVyX2Zhdm9yaXRlcyk7Ci0tICAgICAgICAgICAgfQotKyAg ICAgICAgICAgIGNvbW1pdF90ZXh0X3VwZGF0ZV9mYXZvcml0ZXModGV4dCk7Ci0rICAgICAgICAg ICAgbV9lbW9qaWVyLnJlc2V0KCk7Ci0gICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg ICB9Ci0gCi1AQCAtMjQ5LDggKzQ5MCw3IEBAIGNsYXNzIFBhbmVsQmluZGluZyA6IElCdXMuUGFu ZWxTZXJ2aWNlIHsKLSAgICAgICAgIHN0cmluZyBzZWxlY3RlZF9zdHJpbmcgPSBtX2Vtb2ppZXIu Z2V0X3NlbGVjdGVkX3N0cmluZygpOwotICAgICAgICAgc3RyaW5nIHByZXZfY29udGV4dF9wYXRo ID0gbV9lbW9qaWVyLmdldF9pbnB1dF9jb250ZXh0X3BhdGgoKTsKLSAgICAgICAgIGlmIChzZWxl Y3RlZF9zdHJpbmcgPT0gbnVsbCAmJgotLSAgICAgICAgICAgIHByZXZfY29udGV4dF9wYXRoICE9 ICIiICYmCi0tICAgICAgICAgICAgbV9lbW9qaWVyLmlzX3J1bm5pbmcoKSkgewotKyAgICAgICAg ICAgIHByZXZfY29udGV4dF9wYXRoICE9ICIiKSB7Ci0gICAgICAgICAgICAgdmFyIGNvbnRleHQg PSBHTGliLk1haW5Db250ZXh0LmRlZmF1bHQoKTsKLSAgICAgICAgICAgICBpZiAobV9lbW9qaWVy X2ZvY3VzX2NvbW1pdF90ZXh0X2lkID4gMCAmJgotICAgICAgICAgICAgICAgICBjb250ZXh0LmZp bmRfc291cmNlX2J5X2lkKG1fZW1vamllcl9mb2N1c19jb21taXRfdGV4dF9pZCkKLUBAIC0yNzcs NiArNTE3LDI0MyBAQCBjbGFzcyBQYW5lbEJpbmRpbmcgOiBJQnVzLlBhbmVsU2VydmljZSB7Ci0g ICAgIH0KLSAKLSAKLSsgICAgcHJpdmF0ZSBib29sIGtleV9wcmVzc19lc2NhcGUoKSB7Ci0rICAg ICAgICBpZiAoaXNfZW1vamlfbG9va3VwX3RhYmxlKCkpIHsKLSsgICAgICAgICAgICBib29sIHNo b3dfY2FuZGlkYXRlID0gbV9lbW9qaWVyLmtleV9wcmVzc19lc2NhcGUoKTsKLSsgICAgICAgICAg ICBjb252ZXJ0X3ByZWVkaXRfdGV4dCgpOwotKyAgICAgICAgICAgIHJldHVybiBzaG93X2NhbmRp ZGF0ZTsKLSsgICAgICAgIH0KLSsgICAgICAgIGlmIChtX3ByZWVkaXQuZ2V0X2Vtb2ppKCkgIT0g IiIpIHsKLSsgICAgICAgICAgICBtX3ByZWVkaXQuc2V0X2Vtb2ppKCIiKTsKLSsgICAgICAgICAg ICBzdHJpbmcgYW5ub3RhdGlvbiA9IG1fcHJlZWRpdC5nZXRfdGV4dCgpOwotKyAgICAgICAgICAg IG1fZW1vamllci5zZXRfYW5ub3RhdGlvbihhbm5vdGF0aW9uKTsKLSsgICAgICAgICAgICByZXR1 cm4gZmFsc2U7Ci0rICAgICAgICB9Ci0rICAgICAgICBtX2VuYWJsZV9leHRlbnNpb24gPSBmYWxz ZTsKLSsgICAgICAgIGhpZGVfZW1vamlfbG9va3VwX3RhYmxlKCk7Ci0rICAgICAgICBtX3ByZWVk aXQuaGlkZSgpOwotKyAgICAgICAgSUJ1cy5FeHRlbnNpb25FdmVudCBldmVudCA9IG5ldyBJQnVz LkV4dGVuc2lvbkV2ZW50KAotKyAgICAgICAgICAgICAgICAibmFtZSIsIG1fZXh0ZW5zaW9uX25h bWUsCi0rICAgICAgICAgICAgICAgICJpcy1lbmFibGVkIiwgZmFsc2UsCi0rICAgICAgICAgICAg ICAgICJpcy1leHRlbnNpb24iLCB0cnVlKTsKLSsgICAgICAgIHBhbmVsX2V4dGVuc2lvbihldmVu dCk7Ci0rICAgICAgICByZXR1cm4gZmFsc2U7Ci0rICAgIH0KLSsKLSsKLSsgICAgcHJpdmF0ZSBi b29sIGtleV9wcmVzc19lbnRlcigpIHsKLSsgICAgICAgIGlmIChtX2V4dGVuc2lvbl9uYW1lICE9 ICJ1bmljb2RlIiAmJiBpc19lbW9qaV9sb29rdXBfdGFibGUoKSkgewotKyAgICAgICAgICAgIC8v IENoZWNrIGlmIHZhcmlhdHMgZXhpc3QKLSsgICAgICAgICAgICBpZiAobV9lbW9qaWVyLmtleV9w cmVzc19lbnRlcigpKQotKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSsgICAgICAgIH0K LSsgICAgICAgIElCdXMuVGV4dCB0ZXh0ID0gbV9wcmVlZGl0LmdldF9jb21taXRfdGV4dCgpOwot KyAgICAgICAgY29tbWl0X3RleHRfdXBkYXRlX2Zhdm9yaXRlcyh0ZXh0KTsKLSsgICAgICAgIHJl dHVybiBmYWxzZTsKLSsgICAgfQotKwotKwotKyAgICBwcml2YXRlIHZvaWQgY29udmVydF9wcmVl ZGl0X3RleHQoKSB7Ci0rICAgICAgICBpZiAobV9lbW9qaWVyLmdldF9udW1iZXJfb2ZfY2FuZGlk YXRlcygpID4gMCkKLSsgICAgICAgICAgICBtX3ByZWVkaXQuc2V0X2Vtb2ppKG1fZW1vamllci5n ZXRfY3VycmVudF9jYW5kaWRhdGUoKSk7Ci0rICAgICAgICBlbHNlCi0rICAgICAgICAgICAgbV9w cmVlZGl0LnNldF9lbW9qaSgiIik7Ci0rICAgIH0KLSsKLSsKLSsgICAgcHJpdmF0ZSBib29sIGtl eV9wcmVzc19zcGFjZSgpIHsKLSsgICAgICAgIGJvb2wgc2hvd19jYW5kaWRhdGUgPSBmYWxzZTsK LSsgICAgICAgIGlmIChtX3ByZWVkaXQuZ2V0X2Vtb2ppKCkgIT0gIiIpIHsKLSsgICAgICAgICAg ICBtX2Vtb2ppZXIua2V5X3ByZXNzX2N1cnNvcl9ob3Jpem9udGFsKEdkay5LZXkuUmlnaHQsIDAp OwotKyAgICAgICAgICAgIHNob3dfY2FuZGlkYXRlID0gdHJ1ZTsKLSsgICAgICAgIH0gZWxzZSB7 Ci0rICAgICAgICAgICAgc3RyaW5nIGFubm90YXRpb24gPSBtX3ByZWVkaXQuZ2V0X3RleHQoKTsK LSsgICAgICAgICAgICBpZiAoYW5ub3RhdGlvbi5sZW5ndGggPT0gMCkgewotKyAgICAgICAgICAg ICAgICBzaG93X2NhbmRpZGF0ZSA9IHRydWU7Ci0rICAgICAgICAgICAgICAgIGlmIChpc19lbW9q aV9sb29rdXBfdGFibGUoKSkKLSsgICAgICAgICAgICAgICAgICAgIG1fZW1vamllci5rZXlfcHJl c3NfY3Vyc29yX2hvcml6b250YWwoR2RrLktleS5SaWdodCwgMCk7Ci0rICAgICAgICAgICAgfSBl bHNlIHsKLSsgICAgICAgICAgICAgICAgbV9lbW9qaWVyLnNldF9hbm5vdGF0aW9uKGFubm90YXRp b24pOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgIH0KLSsgICAgICAgIGNvbnZlcnRfcHJlZWRp dF90ZXh0KCk7Ci0rICAgICAgICByZXR1cm4gc2hvd19jYW5kaWRhdGU7Ci0rICAgIH0KLSsKLSsK LSsgICAgcHJpdmF0ZSBib29sIGtleV9wcmVzc19jdXJzb3JfaG9yaXpvbnRhbCh1aW50IGtleXZh bCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50IG1v ZGlmaWVycykgewotKyAgICAgICAgaWYgKGlzX2Vtb2ppX2xvb2t1cF90YWJsZSgpKSB7Ci0rICAg ICAgICAgICAgbV9lbW9qaWVyLmtleV9wcmVzc19jdXJzb3JfaG9yaXpvbnRhbChrZXl2YWwsIG1v ZGlmaWVycyk7Ci0rICAgICAgICAgICAgY29udmVydF9wcmVlZGl0X3RleHQoKTsKLSsgICAgICAg ICAgICByZXR1cm4gdHJ1ZTsKLSsgICAgICAgIH0KLSsgICAgICAgIHJldHVybiBmYWxzZTsKLSsg ICAgfQotKwotKwotKyAgICBwcml2YXRlIGJvb2wga2V5X3ByZXNzX2N1cnNvcl92ZXJ0aWNhbCh1 aW50IGtleXZhbCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dWludCBtb2RpZmllcnMpIHsKLSsgICAgICAgIGlmIChpc19lbW9qaV9sb29rdXBfdGFibGUoKSkg ewotKyAgICAgICAgICAgIG1fZW1vamllci5rZXlfcHJlc3NfY3Vyc29yX3ZlcnRpY2FsKGtleXZh bCwgbW9kaWZpZXJzKTsKLSsgICAgICAgICAgICBjb252ZXJ0X3ByZWVkaXRfdGV4dCgpOwotKyAg ICAgICAgICAgIHJldHVybiB0cnVlOwotKyAgICAgICAgfQotKyAgICAgICAgcmV0dXJuIGZhbHNl OwotKyAgICB9Ci0rCi0rCi0rICAgIHByaXZhdGUgYm9vbCBrZXlfcHJlc3NfY3Vyc29yX2hvbWVf ZW5kKHVpbnQga2V5dmFsLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1aW50IG1vZGlmaWVycykgewotKyAgICAgICAgaWYgKGlzX2Vtb2ppX2xvb2t1cF90YWJs ZSgpKSB7Ci0rICAgICAgICAgICAgbV9lbW9qaWVyLmtleV9wcmVzc19jdXJzb3JfaG9tZV9lbmQo a2V5dmFsLCBtb2RpZmllcnMpOwotKyAgICAgICAgICAgIGNvbnZlcnRfcHJlZWRpdF90ZXh0KCk7 Ci0rICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0rICAgICAgICB9Ci0rICAgICAgICByZXR1cm4g ZmFsc2U7Ci0rICAgIH0KLSsKLSsKLSsgICAgcHJpdmF0ZSBib29sIGtleV9wcmVzc19jb250cm9s X2tleXZhbCh1aW50IGtleXZhbCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50IG1vZGlmaWVycykgewotKyAgICAgICAgYm9vbCBzaG93X2NhbmRpZGF0ZSA9 IGZhbHNlOwotKyAgICAgICAgc3dpdGNoKGtleXZhbCkgewotKyAgICAgICAgY2FzZSBHZGsuS2V5 LmY6Ci0rICAgICAgICAgICAgc2hvd19jYW5kaWRhdGUgPSBrZXlfcHJlc3NfY3Vyc29yX2hvcml6 b250YWwoR2RrLktleS5SaWdodCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMpOwotKyAgICAgICAgICAgIGJyZWFrOwot KyAgICAgICAgY2FzZSBHZGsuS2V5LmI6Ci0rICAgICAgICAgICAgc2hvd19jYW5kaWRhdGUgPSBr ZXlfcHJlc3NfY3Vyc29yX2hvcml6b250YWwoR2RrLktleS5MZWZ0LAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVycyk7Ci0r ICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIEdkay5LZXkubjoKLSsgICAgICAgIGNh c2UgR2RrLktleS5OOgotKyAgICAgICAgICAgIHNob3dfY2FuZGlkYXRlID0ga2V5X3ByZXNzX2N1 cnNvcl92ZXJ0aWNhbChHZGsuS2V5LkRvd24sIG1vZGlmaWVycyk7Ci0rICAgICAgICAgICAgYnJl YWs7Ci0rICAgICAgICBjYXNlIEdkay5LZXkucDoKLSsgICAgICAgIGNhc2UgR2RrLktleS5QOgot KyAgICAgICAgICAgIHNob3dfY2FuZGlkYXRlID0ga2V5X3ByZXNzX2N1cnNvcl92ZXJ0aWNhbChH ZGsuS2V5LlVwLCBtb2RpZmllcnMpOwotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2Fz ZSBHZGsuS2V5Lmg6Ci0rICAgICAgICAgICAgc2hvd19jYW5kaWRhdGUgPSBrZXlfcHJlc3NfY3Vy c29yX2hvbWVfZW5kKEdkay5LZXkuSG9tZSwgbW9kaWZpZXJzKTsKLSsgICAgICAgICAgICBicmVh azsKLSsgICAgICAgIGNhc2UgR2RrLktleS5lOgotKyAgICAgICAgICAgIHNob3dfY2FuZGlkYXRl ID0ga2V5X3ByZXNzX2N1cnNvcl9ob21lX2VuZChHZGsuS2V5LkVuZCwgbW9kaWZpZXJzKTsKLSsg ICAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgR2RrLktleS51OgotKyAgICAgICAgICAg IG1fcHJlZWRpdC5yZXNldCgpOwotKyAgICAgICAgICAgIG1fZW1vamllci5zZXRfYW5ub3RhdGlv bigiIik7Ci0rICAgICAgICAgICAgaGlkZV9lbW9qaV9sb29rdXBfdGFibGUoKTsKLSsgICAgICAg ICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgR2RrLktleS5DOgotKyAgICAgICAgY2FzZSBHZGsu S2V5LmM6Ci0rICAgICAgICAgICAgaWYgKChtb2RpZmllcnMgJiBHZGsuTW9kaWZpZXJUeXBlLlNI SUZUX01BU0spICE9IDApIHsKLSsgICAgICAgICAgICAgICAgaWYgKCFtX2lzX3dheWxhbmQgJiYg bV9lbW9qaWVyICE9IG51bGwgJiYKLSsgICAgICAgICAgICAgICAgICAgIG1fZW1vamllci5nZXRf bnVtYmVyX29mX2NhbmRpZGF0ZXMoKSA+IDApIHsKLSsgICAgICAgICAgICAgICAgICAgIHZhciB0 ZXh0ID0gbV9lbW9qaWVyLmdldF9jdXJyZW50X2NhbmRpZGF0ZSgpOwotKyAgICAgICAgICAgICAg ICAgICAgR3RrLkNsaXBib2FyZCBjbGlwYm9hcmQgPQotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHdGsuQ2xpcGJvYXJkLmdldChHZGsuU0VMRUNUSU9OX0NMSVBCT0FSRCk7Ci0rICAgICAg ICAgICAgICAgICAgICBjbGlwYm9hcmQuc2V0X3RleHQodGV4dCwgLTEpOwotKyAgICAgICAgICAg ICAgICAgICAgY2xpcGJvYXJkLnN0b3JlKCk7Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAg ICAgICAgICAgc2hvd19jYW5kaWRhdGUgPSBpc19lbW9qaV9sb29rdXBfdGFibGUoKTsKLSsgICAg ICAgICAgICB9Ci0rICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBkZWZhdWx0OgotKyAgICAg ICAgICAgIHNob3dfY2FuZGlkYXRlID0gaXNfZW1vamlfbG9va3VwX3RhYmxlKCk7Ci0rICAgICAg ICAgICAgYnJlYWs7Ci0rICAgICAgICB9Ci0rICAgICAgICByZXR1cm4gc2hvd19jYW5kaWRhdGU7 Ci0rICAgIH0KLSsKLSsKLSsgICAgcHJpdmF0ZSB2b2lkIGhpZGVfd2F5bGFuZF9sb29rdXBfdGFi bGUoKSB7Ci0rICAgICAgICBtX3dheWxhbmRfbG9va3VwX3RhYmxlX2lzX3Zpc2libGUgPSBmYWxz ZTsKLSsgICAgICAgIHZhciB0ZXh0ID0gbmV3IElCdXMuVGV4dC5mcm9tX3N0cmluZygiIik7Ci0r ICAgICAgICB1cGRhdGVfYXV4aWxpYXJ5X3RleHRfcmVjZWl2ZWQodGV4dCwgZmFsc2UpOwotKyAg ICAgICAgdXBkYXRlX2xvb2t1cF90YWJsZV9yZWNlaXZlZCgKLSsgICAgICAgICAgICAgICAgbmV3 IElCdXMuTG9va3VwVGFibGUoMSwgMCwgZmFsc2UsIHRydWUpLAotKyAgICAgICAgICAgICAgICBm YWxzZSk7Ci0rICAgIH0KLSsKLSsKLSsgICAgcHJpdmF0ZSB2b2lkIHNob3dfd2F5bGFuZF9sb29r dXBfdGFibGUoSUJ1cy5UZXh0IHRleHQpIHsKLSsgICAgICAgIG1fd2F5bGFuZF9sb29rdXBfdGFi bGVfaXNfdmlzaWJsZSA9IHRydWU7Ci0rICAgICAgICB2YXIgdGFibGUgPSBtX2Vtb2ppZXIuZ2V0 X29uZV9kaW1lbnNpb25fbG9va3VwX3RhYmxlKCk7Ci0rICAgICAgICB1aW50IG5jYW5kaWRhdGVz ID0gdGFibGUuZ2V0X251bWJlcl9vZl9jYW5kaWRhdGVzKCk7Ci0rICAgICAgICB1cGRhdGVfYXV4 aWxpYXJ5X3RleHRfcmVjZWl2ZWQoCi0rICAgICAgICAgICAgICAgIHRleHQsCi0rICAgICAgICAg ICAgICAgIG5jYW5kaWRhdGVzID4gMCA/IHRydWUgOiBmYWxzZSk7Ci0rICAgICAgICB1cGRhdGVf bG9va3VwX3RhYmxlX3JlY2VpdmVkKAotKyAgICAgICAgICAgICAgICB0YWJsZSwKLSsgICAgICAg ICAgICAgICAgbmNhbmRpZGF0ZXMgPiAwID8gdHJ1ZSA6IGZhbHNlKTsKLSsgICAgfQotKwotKwot KyAgICBwcml2YXRlIGJvb2wgaXNfdmlzaWJsZV93YXlsYW5kX2xvb2t1cF90YWJsZSgpIHsKLSsg ICAgICAgIHJldHVybiBtX3dheWxhbmRfbG9va3VwX3RhYmxlX2lzX3Zpc2libGU7Ci0rICAgIH0K LSsKLSsKLSsgICAgcHJpdmF0ZSB2b2lkIGhpZGVfZW1vamlfbG9va3VwX3RhYmxlKCkgewotKyAg ICAgICAgaWYgKG1fZW1vamllciA9PSBudWxsKQotKyAgICAgICAgICAgIHJldHVybjsKLSsgICAg ICAgIGlmIChtX2lzX3dheWxhbmQpCi0rICAgICAgICAgICAgaGlkZV93YXlsYW5kX2xvb2t1cF90 YWJsZSgpOwotKyAgICAgICAgZWxzZQotKyAgICAgICAgICAgIG1fZW1vamllci5oaWRlKCk7Ci0r ICAgIH0KLSsKLSsKLSsgICAgcHJpdmF0ZSB2b2lkIHNob3dfZW1vamlfbG9va3VwX3RhYmxlKCkg ewotKyAgICAgICAgLyogRW1vamllciBjYXRlZ29yeV9saXN0IGlzIHNob3duIGluIGJvdGggWG9y ZyBhbmQgV2F5bGFuZAotKyAgICAgICAgICogYmVjYXVzZSB0aGUgYW5ub3RhdGlvbiBpbmZvcm1h dGlvbiBpcyB1c2VmdWwgYnV0IHRoZSBXYXlsYW5kIGxvb2t1cAotKyAgICAgICAgICogd2luZG93 IGlzIGFsd2F5IG9uZSBkaW1lbnNpb24uIFNvIHRoZSBjYXRlZ29yeV9saXN0IGlzIHNob3duCi0r ICAgICAgICAgKiB3aGVuIHRoZSB1c2VyIGFubm90YXRpb24gaXMgbnVsbC4KLSsgICAgICAgICAq LwotKyAgICAgICAgaWYgKG1faXNfd2F5bGFuZCAmJiBtX3ByZWVkaXQuZ2V0X3RleHQoKSAhPSAi IikgewotKyAgICAgICAgICAgIHZhciB0ZXh0ID0gbV9lbW9qaWVyLmdldF90aXRsZV90ZXh0KCk7 Ci0rICAgICAgICAgICAgc2hvd193YXlsYW5kX2xvb2t1cF90YWJsZSh0ZXh0KTsKLSsgICAgICAg IH0gZWxzZSB7Ci0rICAgICAgICAgICAgLy8gUE9QVVAgd2luZG93IHRha2VzIHRoZSBmb2N1cyBp biBXYXlsYW5kLgotKyAgICAgICAgICAgIGlmIChtX2lzX3dheWxhbmQpCi0rICAgICAgICAgICAg ICAgIG1fZW1vamllci5zZXRfaW5wdXRfY29udGV4dF9wYXRoKG1fcmVhbF9jdXJyZW50X2NvbnRl eHRfcGF0aCk7Ci0rICAgICAgICAgICAgbV9lbW9qaWVyLnNob3dfYWxsKCk7Ci0rICAgICAgICB9 Ci0rICAgIH0KLSsKLSsKLSsgICAgcHJpdmF0ZSBib29sIGlzX2Vtb2ppX2xvb2t1cF90YWJsZSgp IHsKLSsgICAgICAgIGlmIChtX2lzX3dheWxhbmQpCi0rICAgICAgICAgICAgcmV0dXJuIGlzX3Zp c2libGVfd2F5bGFuZF9sb29rdXBfdGFibGUoKTsKLSsgICAgICAgIGVsc2UKLSsgICAgICAgICAg ICByZXR1cm4gbV9lbW9qaWVyLmdldF92aXNpYmxlKCk7Ci0rICAgIH0KLSsKLSsKLSsgICAgcHJp dmF0ZSB2b2lkIHNob3dfcHJlZWRpdF9hbmRfY2FuZGlkYXRlKGJvb2wgc2hvd19jYW5kaWRhdGUp IHsKLSsgICAgICAgIHVpbnQgY3Vyc29yX3BvcyA9IDA7Ci0rICAgICAgICBpZiAoIXNob3dfY2Fu ZGlkYXRlKQotKyAgICAgICAgICAgIGN1cnNvcl9wb3MgPSBtX3ByZWVkaXQuZ2V0X2VuZ2luZV9w cmVlZGl0X2N1cnNvcl9wb3MoKTsKLSsgICAgICAgIHVwZGF0ZV9wcmVlZGl0X3RleHRfcmVjZWl2 ZWQoCi0rICAgICAgICAgICAgICAgIG1fcHJlZWRpdC5nZXRfZW5naW5lX3ByZWVkaXRfdGV4dCgp LAotKyAgICAgICAgICAgICAgICBjdXJzb3JfcG9zLAotKyAgICAgICAgICAgICAgICB0cnVlKTsK LSsgICAgICAgIGlmICghc2hvd19jYW5kaWRhdGUpIHsKLSsgICAgICAgICAgICBoaWRlX2Vtb2pp X2xvb2t1cF90YWJsZSgpOwotKyAgICAgICAgICAgIHJldHVybjsKLSsgICAgICAgIH0KLSsgICAg ICAgIGlmIChtX2Vtb2ppZXIgPT0gbnVsbCkKLSsgICAgICAgICAgICByZXR1cm47Ci0rICAgICAg ICAvKiBXYXlsYW5kIGdpdmVzIHRoZSBmb2N1cyBvbiBFbW9qaXIgd2hpY2ggaXMgYSBHVEsgcG9w dXAgd2luZG93Ci0rICAgICAgICAgKiBhbmQgbW92ZSB0aGUgZm9jdXMgZm9tIHRoZSBjdXJyZW50 IGlucHV0IGNvbnRleHQgdG8gRW1vamllci4KLSsgICAgICAgICAqIFRoaXMgZm9yd2FyZHMgdGhl IGxvb2t1cCB0YWJsZSB0byBnbm9tZS1zaGVsbCdzIGxvb2t1cCB0YWJsZQotKyAgICAgICAgICog YnV0IGl0IGVuYWJsZXMgb25lIGRpbWVuc2lvbiBsb29rdXAgdGFibGUgb25seS4KLSsgICAgICAg ICAqLwotKyAgICAgICAgc2hvd19lbW9qaV9sb29rdXBfdGFibGUoKTsKLSsgICAgfQotKwotKwot ICAgICBwdWJsaWMgb3ZlcnJpZGUgdm9pZCBmb2N1c19pbihzdHJpbmcgaW5wdXRfY29udGV4dF9w YXRoKSB7Ci0gICAgICAgICBtX2N1cnJlbnRfY29udGV4dF9wYXRoID0gaW5wdXRfY29udGV4dF9w YXRoOwotIAotQEAgLTI5OSw0OCArNzc2LDI4MCBAQCBjbGFzcyBQYW5lbEJpbmRpbmcgOiBJQnVz LlBhbmVsU2VydmljZSB7Ci0gICAgIH0KLSAKLSAKLS0gICAgcHVibGljIG92ZXJyaWRlIHZvaWQg cGFuZWxfZXh0ZW5zaW9uX3JlY2VpdmVkKEdMaWIuVmFyaWFudCBkYXRhKSB7Ci0tICAgICAgICBJ QnVzLlhFdmVudD8geGV2ZW50ID0gSUJ1cy5TZXJpYWxpemFibGUuZGVzZXJpYWxpemVfb2JqZWN0 KGRhdGEpCi0tICAgICAgICAgICAgICAgIGFzIElCdXMuWEV2ZW50OwotLSAgICAgICAgaWYgKHhl dmVudCA9PSBudWxsKSB7Ci0tICAgICAgICAgICAgd2FybmluZyAoIkZhaWxlZCB0byBkZXNlcmlh bGl6ZSBJQnVzWEV2ZW50Iik7Ci0rICAgIHB1YmxpYyBvdmVycmlkZSB2b2lkIHBhbmVsX2V4dGVu c2lvbl9yZWNlaXZlZChJQnVzLkV4dGVuc2lvbkV2ZW50IGV2ZW50KSB7Ci0rICAgICAgICBtX2V4 dGVuc2lvbl9uYW1lID0gZXZlbnQuZ2V0X25hbWUoKTsKLSsgICAgICAgIGlmIChtX2V4dGVuc2lv bl9uYW1lICE9ICJlbW9qaSIgJiYgbV9leHRlbnNpb25fbmFtZSAhPSAidW5pY29kZSIpIHsKLSsg ICAgICAgICAgICBzdHJpbmcgZm9ybWF0ID0gIlRoZSBuYW1lICVzIGlzIG5vdCBpbXBsZW1lbnRl ZCBpbiBQYW5lbEV4dGVuc2lvbiI7Ci0rICAgICAgICAgICAgd2FybmluZyAoZm9ybWF0LnByaW50 ZihtX2V4dGVuc2lvbl9uYW1lKSk7Ci0rICAgICAgICAgICAgbV9leHRlbnNpb25fbmFtZSA9ICIi OwotICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgIH0KLS0gICAgICAgIGlmICh4ZXZlbnQu Z2V0X3B1cnBvc2UoKSAhPSAiZW1vamkiKSB7Ci0tICAgICAgICAgICAgc3RyaW5nIGZvcm1hdCA9 ICJUaGUgcHVycG9zZSAlcyBpcyBub3QgaW1wbGVtZW50ZWQgaW4gUGFuZWxFeHRlbnNpb24iOwot LSAgICAgICAgICAgIHdhcm5pbmcgKGZvcm1hdC5wcmludGYoeGV2ZW50LmdldF9wdXJwb3NlKCkp KTsKLSsgICAgICAgIG1fZW5hYmxlX2V4dGVuc2lvbiA9IGV2ZW50LmlzX2VuYWJsZWQ7Ci0rICAg ICAgICBpZiAoIW1fZW5hYmxlX2V4dGVuc2lvbikgewotKyAgICAgICAgICAgIGhpZGVfZW1vamlf bG9va3VwX3RhYmxlKCk7Ci0rICAgICAgICAgICAgcmV0dXJuOwotKyAgICAgICAgfQotKyAgICAg ICAgaWYgKCFtX2xvYWRlZF9lbW9qaSkKLSsgICAgICAgICAgICBzZXRfZW1vamlfbGFuZygpOwot KyAgICAgICAgaWYgKCFtX2xvYWRlZF91bmljb2RlICYmIG1fbG9hZGVkX2Vtb2ppKSB7Ci0rICAg ICAgICAgICAgSUJ1c0Vtb2ppZXIubG9hZF91bmljb2RlX2RpY3QoKTsKLSsgICAgICAgICAgICBt X2xvYWRlZF91bmljb2RlID0gdHJ1ZTsKLSsgICAgICAgIH0KLSsgICAgICAgIGlmIChtX2Vtb2pp ZXIgPT0gbnVsbCkgewotKyAgICAgICAgICAgIG1fZW1vamllciA9IG5ldyBJQnVzRW1vamllcigp OwotKyAgICAgICAgICAgIC8vIEZvciB0aXRsZSBoYW5kbGluZyBpbiBnbm9tZS1zaGVsbAotKyAg ICAgICAgICAgIG1fYXBwbGljYXRpb24uYWRkX3dpbmRvdyhtX2Vtb2ppZXIpOwotKyAgICAgICAg ICAgIG1fZW1vamllci5jYW5kaWRhdGVfY2xpY2tlZC5jb25uZWN0KChpLCBiLCBzKSA9PiB7Ci0r ICAgICAgICAgICAgICAgIGlmICghbV9pc193YXlsYW5kKQotKyAgICAgICAgICAgICAgICAgICAg Y2FuZGlkYXRlX2NsaWNrZWRfbG9va3VwX3RhYmxlKGksIGIsIHMpOwotKyAgICAgICAgICAgIH0p OwotKyAgICAgICAgfQotKyAgICAgICAgbV9lbW9qaWVyLnJlc2V0KCk7Ci0rICAgICAgICBtX2Vt b2ppZXIuc2V0X2Fubm90YXRpb24oIiIpOwotKyAgICAgICAgbV9wcmVlZGl0LnNldF9leHRlbnNp b25fbmFtZShtX2V4dGVuc2lvbl9uYW1lKTsKLSsgICAgICAgIG1fcHJlZWRpdC5yZXNldCgpOwot KyAgICAgICAgdXBkYXRlX3ByZWVkaXRfdGV4dF9yZWNlaXZlZCgKLSsgICAgICAgICAgICAgICAg bV9wcmVlZGl0LmdldF9lbmdpbmVfcHJlZWRpdF90ZXh0KCksCi0rICAgICAgICAgICAgICAgIG1f cHJlZWRpdC5nZXRfZW5naW5lX3ByZWVkaXRfY3Vyc29yX3BvcygpLAotKyAgICAgICAgICAgICAg ICB0cnVlKTsKLSsgICAgICAgIHN0cmluZyBwYXJhbXMgPSBldmVudC5nZXRfcGFyYW1zKCk7Ci0r ICAgICAgICBpZiAocGFyYW1zID09ICJjYXRlZ29yeS1saXN0IikgewotKyAgICAgICAgICAgIGtl eV9wcmVzc19zcGFjZSgpOwotKyAgICAgICAgICAgIHNob3dfcHJlZWRpdF9hbmRfY2FuZGlkYXRl KHRydWUpOwotKyAgICAgICAgfQotKyAgICB9Ci0rCi0rCi0rICAgIHB1YmxpYyBvdmVycmlkZSB2 b2lkIHNldF9jdXJzb3JfbG9jYXRpb24oaW50IHgsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IHksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IHdpZHRoLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCBoZWlnaHQpIHsKLSsgICAgICAgIGlmIChtX2Vtb2ppZXIg IT0gbnVsbCkKLSsgICAgICAgICAgICBtX2Vtb2ppZXIuc2V0X2N1cnNvcl9sb2NhdGlvbih4LCB5 LCB3aWR0aCwgaGVpZ2h0KTsKLSsgICAgfQotKwotKwotKyAgICBwdWJsaWMgb3ZlcnJpZGUgdm9p ZCB1cGRhdGVfcHJlZWRpdF90ZXh0KElCdXMuVGV4dCB0ZXh0LAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQgICAgICBjdXJzb3JfcG9zLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgICAgICB2aXNpYmxl KSB7Ci0rICAgICAgICBtX3ByZWVkaXQuc2V0X2VuZ2luZV9wcmVlZGl0X3RleHQodGV4dCk7Ci0r ICAgICAgICBpZiAodmlzaWJsZSkKLSsgICAgICAgICAgICBtX3ByZWVkaXQuc2hvd19lbmdpbmVf cHJlZWRpdF90ZXh0KCk7Ci0rICAgICAgICBlbHNlCi0rICAgICAgICAgICAgbV9wcmVlZGl0Lmhp ZGVfZW5naW5lX3ByZWVkaXRfdGV4dCgpOwotKyAgICAgICAgbV9wcmVlZGl0LnNldF9lbmdpbmVf cHJlZWRpdF9jdXJzb3JfcG9zKGN1cnNvcl9wb3MpOwotKyAgICAgICAgdXBkYXRlX3ByZWVkaXRf dGV4dF9yZWNlaXZlZChtX3ByZWVkaXQuZ2V0X2VuZ2luZV9wcmVlZGl0X3RleHQoKSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wcmVlZGl0LmdldF9lbmdpbmVfcHJl ZWRpdF9jdXJzb3JfcG9zKCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHZpc2libGUpOwotKyAgICB9Ci0rCi0rCi0rICAgIHB1YmxpYyBvdmVycmlkZSB2b2lkIHNob3df cHJlZWRpdF90ZXh0KCkgewotKyAgICAgICAgbV9wcmVlZGl0LnNob3dfZW5naW5lX3ByZWVkaXRf dGV4dCgpOwotKyAgICAgICAgc2hvd19wcmVlZGl0X2FuZF9jYW5kaWRhdGUoZmFsc2UpOwotKyAg ICB9Ci0rCi0rCi0rICAgIHB1YmxpYyBvdmVycmlkZSB2b2lkIGhpZGVfcHJlZWRpdF90ZXh0KCkg ewotKyAgICAgICAgbV9wcmVlZGl0LmhpZGVfZW5naW5lX3ByZWVkaXRfdGV4dCgpOwotKyAgICAg ICAgc2hvd19wcmVlZGl0X2FuZF9jYW5kaWRhdGUoZmFsc2UpOwotKyAgICB9Ci0rCi0rCi0rICAg IHB1YmxpYyBvdmVycmlkZSBib29sIHByb2Nlc3Nfa2V5X2V2ZW50KHVpbnQga2V5dmFsLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50IGtleWNvZGUsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQgc3RhdGUpIHsK LSsgICAgICAgIGlmICgoc3RhdGUgJiBJQnVzLk1vZGlmaWVyVHlwZS5SRUxFQVNFX01BU0spICE9 IDApCi0rICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotKyAgICAgICAgdWludCBtb2RpZmllcnMg PSBzdGF0ZTsKLSsgICAgICAgIGJvb2wgc2hvd19jYW5kaWRhdGUgPSBmYWxzZTsKLSsgICAgICAg IHN3aXRjaChrZXl2YWwpIHsKLSsgICAgICAgIGNhc2UgR2RrLktleS5Fc2NhcGU6Ci0rICAgICAg ICAgICAgc2hvd19jYW5kaWRhdGUgPSBrZXlfcHJlc3NfZXNjYXBlKCk7Ci0rICAgICAgICAgICAg aWYgKCFtX3ByZWVkaXQuaXNfc2hvd24oKSkKLSsgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7 Ci0rICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIEdkay5LZXkuUmV0dXJuOgotKyAg ICAgICAgY2FzZSBHZGsuS2V5LktQX0VudGVyOgotKyAgICAgICAgICAgIGlmIChtX2V4dGVuc2lv bl9uYW1lID09ICJ1bmljb2RlIikKLSsgICAgICAgICAgICAgICAga2V5X3ByZXNzX3NwYWNlKCk7 Ci0rICAgICAgICAgICAgc2hvd19jYW5kaWRhdGUgPSBrZXlfcHJlc3NfZW50ZXIoKTsKLSsgICAg ICAgICAgICBpZiAoIW1fcHJlZWRpdC5pc19zaG93bigpKSB7Ci0rICAgICAgICAgICAgICAgIGhp ZGVfZW1vamlfbG9va3VwX3RhYmxlKCk7Ci0rICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwot KyAgICAgICAgICAgIH0KLSsgICAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgR2RrLktl eS5CYWNrU3BhY2U6Ci0rICAgICAgICAgICAgbV9wcmVlZGl0LmJhY2tzcGFjZSgpOwotKyAgICAg ICAgICAgIHN0cmluZyBhbm5vdGF0aW9uID0gbV9wcmVlZGl0LmdldF90ZXh0KCk7Ci0rICAgICAg ICAgICAgaWYgKGFubm90YXRpb24gPT0gIiIgJiYgbV9leHRlbnNpb25fbmFtZSA9PSAidW5pY29k ZSIpIHsKLSsgICAgICAgICAgICAgICAga2V5X3ByZXNzX2VzY2FwZSgpOwotKyAgICAgICAgICAg ICAgICByZXR1cm4gdHJ1ZTsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgbV9lbW9qaWVy LnNldF9hbm5vdGF0aW9uKGFubm90YXRpb24pOwotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICAg ICAgY2FzZSBHZGsuS2V5LnNwYWNlOgotKyAgICAgICAgY2FzZSBHZGsuS2V5LktQX1NwYWNlOgot KyAgICAgICAgICAgIHNob3dfY2FuZGlkYXRlID0ga2V5X3ByZXNzX3NwYWNlKCk7Ci0rICAgICAg ICAgICAgaWYgKG1fZXh0ZW5zaW9uX25hbWUgPT0gInVuaWNvZGUiKSB7Ci0rICAgICAgICAgICAg ICAgIGtleV9wcmVzc19lbnRlcigpOwotKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSsg ICAgICAgICAgICB9Ci0rICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIEdkay5LZXku UmlnaHQ6Ci0rICAgICAgICBjYXNlIEdkay5LZXkuS1BfUmlnaHQ6Ci0rICAgICAgICAgICAgLyog b25lIGRpbWVuc2lvbiBpbiBXYXlsYW5kLCB0d28gZGltZW5zaW9ucyBpbiBYMTEgKi8KLSsgICAg ICAgICAgICBpZiAobV9pc193YXlsYW5kKSB7Ci0rICAgICAgICAgICAgICAgIHNob3dfY2FuZGlk YXRlID0ga2V5X3ByZXNzX2N1cnNvcl92ZXJ0aWNhbChHZGsuS2V5LkRvd24sCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmll cnMpOwotKyAgICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgICAgIHNob3dfY2FuZGlk YXRlID0ga2V5X3ByZXNzX2N1cnNvcl9ob3Jpem9udGFsKEdkay5LZXkuUmlnaHQsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1v ZGlmaWVycyk7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAg Y2FzZSBHZGsuS2V5LkxlZnQ6Ci0rICAgICAgICBjYXNlIEdkay5LZXkuS1BfTGVmdDoKLSsgICAg ICAgICAgICBpZiAobV9pc193YXlsYW5kKSB7Ci0rICAgICAgICAgICAgICAgIHNob3dfY2FuZGlk YXRlID0ga2V5X3ByZXNzX2N1cnNvcl92ZXJ0aWNhbChHZGsuS2V5LlVwLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJz KTsKLSsgICAgICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgICAgICBzaG93X2NhbmRpZGF0 ZSA9IGtleV9wcmVzc19jdXJzb3JfaG9yaXpvbnRhbChHZGsuS2V5LkxlZnQsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlm aWVycyk7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2Fz ZSBHZGsuS2V5LkRvd246Ci0rICAgICAgICBjYXNlIEdkay5LZXkuS1BfRG93bjoKLSsgICAgICAg ICAgICBpZiAobV9pc193YXlsYW5kKSB7Ci0rICAgICAgICAgICAgICAgIHNob3dfY2FuZGlkYXRl ID0ga2V5X3ByZXNzX2N1cnNvcl9ob3Jpem9udGFsKEdkay5LZXkuUmlnaHQsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlm aWVycyk7Ci0rICAgICAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICAgICAgc2hvd19jYW5k aWRhdGUgPSBrZXlfcHJlc3NfY3Vyc29yX3ZlcnRpY2FsKEdkay5LZXkuRG93biwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlm aWVycyk7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2Fz ZSBHZGsuS2V5LlVwOgotKyAgICAgICAgY2FzZSBHZGsuS2V5LktQX1VwOgotKyAgICAgICAgICAg IGlmIChtX2lzX3dheWxhbmQpIHsKLSsgICAgICAgICAgICAgICAgc2hvd19jYW5kaWRhdGUgPSBr ZXlfcHJlc3NfY3Vyc29yX2hvcml6b250YWwoR2RrLktleS5MZWZ0LAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMp OwotKyAgICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgICAgIHNob3dfY2FuZGlkYXRl ID0ga2V5X3ByZXNzX2N1cnNvcl92ZXJ0aWNhbChHZGsuS2V5LlVwLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzKTsK LSsgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIEdkay5L ZXkuUGFnZV9Eb3duOgotKyAgICAgICAgY2FzZSBHZGsuS2V5LktQX1BhZ2VfRG93bjoKLSsgICAg ICAgICAgICBpZiAobV9pc193YXlsYW5kKSB7Ci0rICAgICAgICAgICAgICAgIHNob3dfY2FuZGlk YXRlID0ga2V5X3ByZXNzX2N1cnNvcl92ZXJ0aWNhbChHZGsuS2V5LkRvd24sCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmll cnMpOwotKyAgICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgICAgIHNob3dfY2FuZGlk YXRlID0ga2V5X3ByZXNzX2N1cnNvcl92ZXJ0aWNhbChHZGsuS2V5LlBhZ2VfRG93biwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1v ZGlmaWVycyk7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAg Y2FzZSBHZGsuS2V5LlBhZ2VfVXA6Ci0rICAgICAgICBjYXNlIEdkay5LZXkuS1BfUGFnZV9VcDoK LSsgICAgICAgICAgICBpZiAobV9pc193YXlsYW5kKSB7Ci0rICAgICAgICAgICAgICAgIHNob3df Y2FuZGlkYXRlID0ga2V5X3ByZXNzX2N1cnNvcl92ZXJ0aWNhbChHZGsuS2V5LlVwLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9k aWZpZXJzKTsKLSsgICAgICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgICAgICBzaG93X2Nh bmRpZGF0ZSA9IGtleV9wcmVzc19jdXJzb3JfdmVydGljYWwoR2RrLktleS5QYWdlX1VwLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bW9kaWZpZXJzKTsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAg ICBjYXNlIEdkay5LZXkuSG9tZToKLSsgICAgICAgIGNhc2UgR2RrLktleS5LUF9Ib21lOgotKyAg ICAgICAgICAgIHNob3dfY2FuZGlkYXRlID0ga2V5X3ByZXNzX2N1cnNvcl9ob21lX2VuZChHZGsu S2V5LkhvbWUsIG1vZGlmaWVycyk7Ci0rICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNl IEdkay5LZXkuRW5kOgotKyAgICAgICAgY2FzZSBHZGsuS2V5LktQX0VuZDoKLSsgICAgICAgICAg ICBzaG93X2NhbmRpZGF0ZSA9IGtleV9wcmVzc19jdXJzb3JfaG9tZV9lbmQoR2RrLktleS5FbmQs IG1vZGlmaWVycyk7Ci0rICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBkZWZhdWx0OgotKyAg ICAgICAgICAgIGlmICgobW9kaWZpZXJzICYgR2RrLk1vZGlmaWVyVHlwZS5DT05UUk9MX01BU0sp ICE9IDApIHsKLSsgICAgICAgICAgICAgICAgc2hvd19jYW5kaWRhdGUgPSBrZXlfcHJlc3NfY29u dHJvbF9rZXl2YWwoa2V5dmFsLCBtb2RpZmllcnMpOwotKyAgICAgICAgICAgICAgICBicmVhazsK LSsgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgdW5pY2hhciBjaCA9IElCdXMua2V5dmFsX3Rv X3VuaWNvZGUoa2V5dmFsKTsKLSsgICAgICAgICAgICBpZiAoY2guaXNjbnRybCgpKQotKyAgICAg ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSsgICAgICAgICAgICBzdHJpbmcgc3RyID0gY2gudG9f c3RyaW5nKCk7Ci0rICAgICAgICAgICAgbV9wcmVlZGl0LmFwcGVuZF90ZXh0KHN0cik7Ci0rICAg ICAgICAgICAgc3RyaW5nIGFubm90YXRpb24gPSBtX3ByZWVkaXQuZ2V0X3RleHQoKTsKLSsgICAg ICAgICAgICBtX2Vtb2ppZXIuc2V0X2Fubm90YXRpb24oYW5ub3RhdGlvbik7Ci0rICAgICAgICAg ICAgbV9wcmVlZGl0LnNldF9lbW9qaSgiIik7Ci0rICAgICAgICAgICAgc2hvd19jYW5kaWRhdGUg PSBpc19lbW9qaV9sb29rdXBfdGFibGUoKTsKLSsgICAgICAgICAgICBicmVhazsKLSsgICAgICAg IH0KLSsgICAgICAgIHNob3dfcHJlZWRpdF9hbmRfY2FuZGlkYXRlKHNob3dfY2FuZGlkYXRlKTsK LSsgICAgICAgIHJldHVybiB0cnVlOwotKyAgICB9Ci0rCi0rICAgIHB1YmxpYyBvdmVycmlkZSB2 b2lkIGNvbW1pdF90ZXh0X3JlY2VpdmVkKElCdXMuVGV4dCB0ZXh0KSB7Ci0rICAgICAgICB1bm93 bmVkIHN0cmluZz8gc3RyID0gdGV4dC50ZXh0OwotKyAgICAgICAgaWYgKHN0ciA9PSBudWxsKQot KyAgICAgICAgICAgIHJldHVybjsKLSsgICAgICAgIC8qIERvIG5vdCBjYWxsIGNvbnZlcnRfcHJl ZWRpdF90ZXh0KCkgYmVjYXVzZSBpdCBkZXBlbmRzIG9uCi0rICAgICAgICAgKiBlYWNoIElNRSB3 aGV0aGVyIHByb2Nlc3Nfa2V5X2V2ZW50KCkgcmVjZWl2ZXMgU2hpZnQtc3BhY2Ugb3Igbm90Lgot KyAgICAgICAgICovCi0rICAgICAgICBtX3ByZWVkaXQuYXBwZW5kX3RleHQoc3RyKTsKLSsgICAg ICAgIG1fcHJlZWRpdC5zZXRfZW1vamkoIiIpOwotKyAgICAgICAgc3RyaW5nIGFubm90YXRpb24g PSBtX3ByZWVkaXQuZ2V0X3RleHQoKTsKLSsgICAgICAgIG1fZW1vamllci5zZXRfYW5ub3RhdGlv bihhbm5vdGF0aW9uKTsKLSsgICAgICAgIHNob3dfcHJlZWRpdF9hbmRfY2FuZGlkYXRlKGZhbHNl KTsKLSsgICAgfQotKwotKyAgICBwdWJsaWMgb3ZlcnJpZGUgdm9pZCBwYWdlX3VwX2xvb2t1cF90 YWJsZSgpIHsKLSsgICAgICAgIGJvb2wgc2hvd19jYW5kaWRhdGUgPSBrZXlfcHJlc3NfY3Vyc29y X3ZlcnRpY2FsKEdkay5LZXkuVXAsIDApOwotKyAgICAgICAgc2hvd19wcmVlZGl0X2FuZF9jYW5k aWRhdGUoc2hvd19jYW5kaWRhdGUpOwotKyAgICB9Ci0rCi0rICAgIHB1YmxpYyBvdmVycmlkZSB2 b2lkIHBhZ2VfZG93bl9sb29rdXBfdGFibGUoKSB7Ci0rICAgICAgICBib29sIHNob3dfY2FuZGlk YXRlID0ga2V5X3ByZXNzX2N1cnNvcl92ZXJ0aWNhbChHZGsuS2V5LkRvd24sIDApOwotKyAgICAg ICAgc2hvd19wcmVlZGl0X2FuZF9jYW5kaWRhdGUoc2hvd19jYW5kaWRhdGUpOwotKyAgICB9Ci0r Ci0rICAgIHB1YmxpYyBvdmVycmlkZSB2b2lkIGN1cnNvcl91cF9sb29rdXBfdGFibGUoKSB7Ci0r ICAgICAgICBib29sIHNob3dfY2FuZGlkYXRlID0ga2V5X3ByZXNzX2N1cnNvcl9ob3Jpem9udGFs KEdkay5LZXkuTGVmdCwgMCk7Ci0rICAgICAgICBzaG93X3ByZWVkaXRfYW5kX2NhbmRpZGF0ZShz aG93X2NhbmRpZGF0ZSk7Ci0rICAgIH0KLSsKLSsgICAgcHVibGljIG92ZXJyaWRlIHZvaWQgY3Vy c29yX2Rvd25fbG9va3VwX3RhYmxlKCkgewotKyAgICAgICAgYm9vbCBzaG93X2NhbmRpZGF0ZSA9 IGtleV9wcmVzc19jdXJzb3JfaG9yaXpvbnRhbChHZGsuS2V5LlJpZ2h0LCAwKTsKLSsgICAgICAg IHNob3dfcHJlZWRpdF9hbmRfY2FuZGlkYXRlKHNob3dfY2FuZGlkYXRlKTsKLSsgICAgfQotKwot KyAgICBwdWJsaWMgb3ZlcnJpZGUgdm9pZCBjYW5kaWRhdGVfY2xpY2tlZF9sb29rdXBfdGFibGUo dWludCBpbmRleCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVpbnQgYnV0dG9uLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludCBzdGF0ZSkgewotKyAgICAgICAgaWYgKGJ1 dHRvbiA9PSBJQnVzRW1vamllci5CVVRUT05fQ0xPU0VfQlVUVE9OKSB7Ci0rICAgICAgICAgICAg bV9lbmFibGVfZXh0ZW5zaW9uID0gZmFsc2U7Ci0rICAgICAgICAgICAgaGlkZV9lbW9qaV9sb29r dXBfdGFibGUoKTsKLSsgICAgICAgICAgICBtX3ByZWVkaXQuaGlkZSgpOwotKyAgICAgICAgICAg IElCdXMuRXh0ZW5zaW9uRXZlbnQgZXZlbnQgPSBuZXcgSUJ1cy5FeHRlbnNpb25FdmVudCgKLSsg ICAgICAgICAgICAgICAgICAgICJuYW1lIiwgbV9leHRlbnNpb25fbmFtZSwKLSsgICAgICAgICAg ICAgICAgICAgICJpcy1lbmFibGVkIiwgZmFsc2UsCi0rICAgICAgICAgICAgICAgICAgICAiaXMt ZXh0ZW5zaW9uIiwgdHJ1ZSk7Ci0rICAgICAgICAgICAgcGFuZWxfZXh0ZW5zaW9uKGV2ZW50KTsK LSAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICB9Ci0tICAgICAgICBHZGsuRXZlbnRUeXBl IGV2ZW50X3R5cGU7Ci0tICAgICAgICBpZiAoeGV2ZW50LmdldF9ldmVudF90eXBlKCkgPT0gSUJ1 cy5YRXZlbnRUeXBlLktFWV9QUkVTUykgewotLSAgICAgICAgICAgIGV2ZW50X3R5cGUgPSBHZGsu RXZlbnRUeXBlLktFWV9QUkVTUzsKLS0gICAgICAgIH0gZWxzZSBpZiAoeGV2ZW50LmdldF9ldmVu dF90eXBlKCkgPT0gSUJ1cy5YRXZlbnRUeXBlLktFWV9SRUxFQVNFKSB7Ci0tICAgICAgICAgICAg ZXZlbnRfdHlwZSA9IEdkay5FdmVudFR5cGUuS0VZX1JFTEVBU0U7Ci0rICAgICAgICBpZiAobV9l bW9qaWVyID09IG51bGwpCi0rICAgICAgICAgICAgcmV0dXJuOwotKyAgICAgICAgYm9vbCBzaG93 X2NhbmRpZGF0ZSA9IGZhbHNlOwotKyAgICAgICAgdWludCBuY2FuZGlkYXRlcyA9IG1fZW1vamll ci5nZXRfbnVtYmVyX29mX2NhbmRpZGF0ZXMoKTsKLSsgICAgICAgIGlmIChuY2FuZGlkYXRlcyA+ IDAgJiYgbmNhbmRpZGF0ZXMgPj0gaW5kZXgpIHsKLSsgICAgICAgICAgICBtX2Vtb2ppZXIuc2V0 X2N1cnNvcl9wb3MoaW5kZXgpOwotKyAgICAgICAgICAgIHNob3dfY2FuZGlkYXRlID0gbV9lbW9q aWVyLmhhc192YXJpYW50cyhpbmRleCk7Ci0rICAgICAgICAgICAgbV9wcmVlZGl0LnNldF9lbW9q aShtX2Vtb2ppZXIuZ2V0X2N1cnJlbnRfY2FuZGlkYXRlKCkpOwotICAgICAgICAgfSBlbHNlIHsK LS0gICAgICAgICAgICB3YXJuaW5nICgiTm90IHN1cHBvcnRlZCB0eXBlICVkIi5wcmludGYoeGV2 ZW50LmdldF9ldmVudF90eXBlKCkpKTsKLSAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICB9 Ci0tICAgICAgICBHZGsuRXZlbnQgZXZlbnQgPSBuZXcgR2RrLkV2ZW50KGV2ZW50X3R5cGUpOwot LSAgICAgICAgdWludDMyIHRpbWUgPSB4ZXZlbnQuZ2V0X3RpbWUoKTsKLS0gICAgICAgIGlmICh0 aW1lID09IDApCi0tICAgICAgICAgICAgdGltZSA9IEd0ay5nZXRfY3VycmVudF9ldmVudF90aW1l KCk7Ci0tICAgICAgICBldmVudC5rZXkudGltZSA9IHRpbWU7Ci0tICAgICAgICBYLldpbmRvdyB4 aWQgPSB4ZXZlbnQuZ2V0X3dpbmRvdygpOwotLSAgICAgICAgR2RrLkRpc3BsYXk/IGRpc3BsYXkg PSBHZGsuRGlzcGxheS5nZXRfZGVmYXVsdCgpOwotLSAgICAgICAgR2RrLldpbmRvdz8gd2luZG93 ID0gbnVsbDsKLS0gICAgICAgIGlmICh3aW5kb3cgPT0gbnVsbCAmJiB4aWQgIT0gMCkgewotLSAg ICAgICAgICAgIHdpbmRvdyA9IEdkay5YMTEuV2luZG93Lmxvb2t1cF9mb3JfZGlzcGxheSgKLS0g ICAgICAgICAgICAgICAgICAgIGRpc3BsYXkgYXMgR2RrLlgxMS5EaXNwbGF5LCB4aWQpOwotLSAg ICAgICAgfQotLSAgICAgICAgaWYgKHdpbmRvdyA9PSBudWxsICYmIHhpZCAhPSAwKSB7Ci0tICAg ICAgICAgICAgd2luZG93ID0gbmV3IEdkay5YMTEuV2luZG93LmZvcmVpZ25fZm9yX2Rpc3BsYXko Ci0tICAgICAgICAgICAgICAgICAgICBkaXNwbGF5IGFzIEdkay5YMTEuRGlzcGxheSwgeGlkKTsK LS0gICAgICAgIH0KLS0gICAgICAgIGlmICh3aW5kb3cgPT0gbnVsbCkgewotLSAgICAgICAgICAg IHdpbmRvdyA9IEdkay5nZXRfZGVmYXVsdF9yb290X3dpbmRvdygpOwotLSAgICAgICAgICAgIHdp bmRvdy5yZWYoKTsKLS0gICAgICAgIH0KLS0gICAgICAgIGV2ZW50LmtleS53aW5kb3cgPSB3aW5k b3c7Ci0tICAgICAgICBoYW5kbGVfZW1vamlfdHlwaW5nKGV2ZW50KTsKLSsgICAgICAgIGlmICgh c2hvd19jYW5kaWRhdGUpIHsKLSsgICAgICAgICAgICBJQnVzLlRleHQgdGV4dCA9IG1fcHJlZWRp dC5nZXRfY29tbWl0X3RleHQoKTsKLSsgICAgICAgICAgICBjb21taXRfdGV4dF91cGRhdGVfZmF2 b3JpdGVzKHRleHQpOwotKyAgICAgICAgICAgIGhpZGVfZW1vamlfbG9va3VwX3RhYmxlKCk7Ci0r ICAgICAgICAgICAgcmV0dXJuOwotKyAgICAgICAgfQotKyAgICAgICAgc2hvd19wcmVlZGl0X2Fu ZF9jYW5kaWRhdGUoc2hvd19jYW5kaWRhdGUpOwotICAgICB9Ci0gfQotLS0gCi0yLjE0LjMKLQot RnJvbSA3Y2VmNWJmNTcyNTk2MzYxYmM1MDJlOGZhOTE3NTY5Njc2YTgwMzcyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQotRnJvbTogZnVqaXdhcmF0IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29t PgotRGF0ZTogV2VkLCAyMCBKdW4gMjAxOCAxOTowMTo1OSArMDkwMAotU3ViamVjdDogW1BBVENI XSBzZXR1cDogUmVwbGFjZSBlbW9qaSBmb250IHdpdGggVW5pY29kZSBmb250Ci0KLU5vdyB0aGUg Zm9udCBzZXR0aW5ncyBvZiBlbW9qaSBpcyBjb25maWd1cmFibGUgaW4gdGhlIHNlc3Npb24gYmFz ZQotYnV0IG5vdCB0aGUgYXBwbGljYXRpb24gYmFzZSBhbmQgdGhlIGN1cnJlbnQgZm9udCBzZXR0 aW5nIG9uIGlidXMtc2V0dXAKLWVmZmVjdHMgb24gVW5pY29kZSBjaGFyYWN0ZXJzLgotQWxzbyBm aXhlZCB0aGUgcHJvZ3Jlc3MgYmFyIG9uIFVuaWNvZGUgY2FuZGlkYXRlIHRhYmxlLgotLS0tCi0g c2V0dXAvc2V0dXAudWkgICAgICAgfCAgIDQgKy0KLSBzcmMvdGVzdHMvcnVudGVzdCAgICB8ICAg MiArLQotIHVpL2d0azMvZW1vamllci52YWxhIHwgMjEzICsrKysrKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDMgZmlsZXMgY2hhbmdlZCwgMTIwIGluc2Vy dGlvbnMoKyksIDk5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc2V0dXAvc2V0dXAudWkg Yi9zZXR1cC9zZXR1cC51aQotaW5kZXggZjFiZWIxZGUuLjlkOWQ3ZWU5IDEwMDY0NAotLS0tIGEv c2V0dXAvc2V0dXAudWkKLSsrKyBiL3NldHVwL3NldHVwLnVpCi1AQCAtMTAxMCw5ICsxMDEwLDkg QEAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a0xhYmVsIiBp ZD0ibGFiZWxfZW1vamlfZm9udCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9w ZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNhbl9mb2N1cyI+RmFsc2U8L3Byb3BlcnR5PgotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idG9vbHRpcF90ZXh0IiB0 cmFuc2xhdGFibGU9InllcyI+U2V0IGEgZm9udCBvZiBlbW9qaSBjYW5kaWRhdGVzIG9uIHRoZSBl bW9qaSBkaWFsb2c8L3Byb3BlcnR5PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJv cGVydHkgbmFtZT0idG9vbHRpcF90ZXh0IiB0cmFuc2xhdGFibGU9InllcyI+U2V0IGEgZm9udCBv ZiBVbmljb2RlIGNhbmRpZGF0ZXMgb24gdGhlIGVtb2ppIGRpYWxvZzwvcHJvcGVydHk+Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJoYWxpZ24iPnN0YXJ0PC9w cm9wZXJ0eT4KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Imxh YmVsIiB0cmFuc2xhdGFibGU9InllcyI+RW1vamkgZm9udDo8L3Byb3BlcnR5PgotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibGFiZWwiIHRyYW5zbGF0YWJsZT0i eWVzIj5Vbmljb2RlIGZvbnQ6PC9wcm9wZXJ0eT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPHByb3BlcnR5IG5hbWU9Imp1c3RpZnkiPnJpZ2h0PC9wcm9wZXJ0eT4KLSAgICAgICAgICAg ICAgICAgICAgICAgICAgIDwvb2JqZWN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBh Y2tpbmc+Ci1kaWZmIC0tZ2l0IGEvc3JjL3Rlc3RzL3J1bnRlc3QgYi9zcmMvdGVzdHMvcnVudGVz dAotaW5kZXggYjZiODQ1ZDYuLjVjMTYzMDgzIDEwMDc1NQotLS0tIGEvc3JjL3Rlc3RzL3J1bnRl c3QKLSsrKyBiL3NyYy90ZXN0cy9ydW50ZXN0Ci1AQCAtMTQyLDcgKzE0Miw3IEBAIHJ1bl90ZXN0 X2Nhc2UoKQotICAgICAgICAgLS1kYWVtb25pemUgXAotICAgICAgICAgLS1jYWNoZT1ub25lIFwK LSAgICAgICAgIC0tcGFuZWw9ZGlzYWJsZSBcCi0tICAgICAgICAtLXBhbmVsLWV4dGVuc2lvbj1k aXNhYmxlIFwKLSsgICAgICAgIC0tZW1vamktZXh0ZW5zaW9uPWRpc2FibGUgXAotICAgICAgICAg LS1jb25maWc9ZGVmYXVsdCBcCi0gICAgICAgICAtLXZlcmJvc2U7Ci0gCi1kaWZmIC0tZ2l0IGEv dWkvZ3RrMy9lbW9qaWVyLnZhbGEgYi91aS9ndGszL2Vtb2ppZXIudmFsYQotaW5kZXggY2Q5OGM5 ZDcuLjdiZWI2ZjBhIDEwMDY0NAotLS0tIGEvdWkvZ3RrMy9lbW9qaWVyLnZhbGEKLSsrKyBiL3Vp L2d0azMvZW1vamllci52YWxhCi1AQCAtMjUzLDYgKzI1Myw3IEBAIHB1YmxpYyBjbGFzcyBJQnVz RW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7Ci0gICAgIHByaXZhdGUgc3RhdGljIHN0 cmluZyBtX2N1cnJlbnRfbGFuZ19pZDsKLSAgICAgcHJpdmF0ZSBzdGF0aWMgc3RyaW5nIG1fZW1v amlfZm9udF9mYW1pbHk7Ci0gICAgIHByaXZhdGUgc3RhdGljIGludCBtX2Vtb2ppX2ZvbnRfc2l6 ZTsKLSsgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbCBtX2Vtb2ppX2ZvbnRfY2hhbmdlZCA9IGZhbHNl OwotICAgICBwcml2YXRlIHN0YXRpYyBzdHJpbmdbXSBtX2Zhdm9yaXRlczsKLSAgICAgcHJpdmF0 ZSBzdGF0aWMgc3RyaW5nW10gbV9mYXZvcml0ZV9hbm5vdGF0aW9uczsKLSAgICAgcHJpdmF0ZSBz dGF0aWMgaW50IG1fZW1vamlfbWF4X3NlcV9sZW47Ci1AQCAtMzQ4LDg4ICszNDksMjAgQEAgcHVi bGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKLSAgICAgICAg IGFkZF9hY3Rpb24oYWN0aW9uKTsKLSAgICAgICAgIGlmIChtX2N1cnJlbnRfbGFuZ19pZCA9PSBu dWxsKQotICAgICAgICAgICAgIG1fY3VycmVudF9sYW5nX2lkID0gImVuIjsKLS0gICAgICAgIGlm IChtX2Vtb2ppX2ZvbnRfZmFtaWx5ID09IG51bGwpCi0rICAgICAgICBpZiAobV9lbW9qaV9mb250 X2ZhbWlseSA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgbV9lbW9qaV9mb250X2ZhbWlseSA9ICJN b25vc3BhY2UiOwotLSAgICAgICAgaWYgKG1fZW1vamlfZm9udF9zaXplID09IDApCi0rICAgICAg ICAgICAgbV9lbW9qaV9mb250X2NoYW5nZWQgPSB0cnVlOwotKyAgICAgICAgfQotKyAgICAgICAg aWYgKG1fZW1vamlfZm9udF9zaXplID09IDApIHsKLSAgICAgICAgICAgICBtX2Vtb2ppX2ZvbnRf c2l6ZSA9IDE2OwotKyAgICAgICAgICAgIG1fZW1vamlfZm9udF9jaGFuZ2VkID0gdHJ1ZTsKLSsg ICAgICAgIH0KLSAgICAgICAgIGlmIChtX2Zhdm9yaXRlcyA9PSBudWxsKQotICAgICAgICAgICAg IG1fZmF2b3JpdGVzID0ge307Ci0gICAgICAgICBpZiAobV9mYXZvcml0ZV9hbm5vdGF0aW9ucyA9 PSBudWxsKQotICAgICAgICAgICAgIG1fZmF2b3JpdGVfYW5ub3RhdGlvbnMgPSB7fTsKLSAKLS0g ICAgICAgIEdkay5EaXNwbGF5IGRpc3BsYXkgPSBHZGsuRGlzcGxheS5nZXRfZGVmYXVsdCgpOwot LSAgICAgICAgR2RrLlNjcmVlbiBzY3JlZW4gPSAoZGlzcGxheSAhPSBudWxsKSA/Ci0tICAgICAg ICAgICAgICAgIGRpc3BsYXkuZ2V0X2RlZmF1bHRfc2NyZWVuKCkgOiBudWxsOwotLQotLSAgICAg ICAgaWYgKHNjcmVlbiA9PSBudWxsKSB7Ci0tICAgICAgICAgICAgd2FybmluZygiQ291bGQgbm90 IG9wZW4gZGlzcGxheS4iKTsKLS0gICAgICAgICAgICByZXR1cm47Ci0tICAgICAgICB9Ci0tICAg ICAgICAvLyBTZXQgZW4gbG9jYWxlIGJlY2F1c2UgZGVfREUncyBkZWNpbWFsX3BvaW50IGlzICcs JyBpbnN0ZWFkIG9mICcuJwotLSAgICAgICAgc3RyaW5nPyBiYWNrdXBfbG9jYWxlID0KLS0gICAg ICAgICAgICBJbnRsLnNldGxvY2FsZShMb2NhbGVDYXRlZ29yeS5OVU1FUklDLCBudWxsKS5kdXAo KTsKLS0gICAgICAgIGlmIChJbnRsLnNldGxvY2FsZShMb2NhbGVDYXRlZ29yeS5OVU1FUklDLCAi ZW5fVVMuVVRGLTgiKSA9PSBudWxsKSB7Ci0tICAgICAgICAgIGlmIChJbnRsLnNldGxvY2FsZShM b2NhbGVDYXRlZ29yeS5OVU1FUklDLCAiQy5VVEYtOCIpID09IG51bGwpIHsKLS0gICAgICAgICAg ICAgIGlmIChJbnRsLnNldGxvY2FsZShMb2NhbGVDYXRlZ29yeS5OVU1FUklDLCAiQyIpID09IG51 bGwpIHsKLS0gICAgICAgICAgICAgICAgICB3YXJuaW5nKCJZb3UgZG9uJ3QgaW5zdGFsbCBlaXRo ZXIgZW5fVVMuVVRGLTggb3IgQy5VVEYtOCAiICsKLS0gICAgICAgICAgICAgICAgICAgICAgICAg ICJvciBDIGxvY2FsZSIpOwotLSAgICAgICAgICAgICAgfQotLSAgICAgICAgICB9Ci0tICAgICAg ICB9Ci0tICAgICAgICBtX3JnYmEgPSBuZXcgVGhlbWVkUkdCQSh0aGlzKTsKLS0gICAgICAgIHVp bnQgYmdfcmVkID0gKHVpbnQpKG1fcmdiYS5ub3JtYWxfYmcucmVkICogMjU1KTsKLS0gICAgICAg IHVpbnQgYmdfZ3JlZW4gPSAodWludCkobV9yZ2JhLm5vcm1hbF9iZy5ncmVlbiAqIDI1NSk7Ci0t ICAgICAgICB1aW50IGJnX2JsdWUgPSAodWludCkobV9yZ2JhLm5vcm1hbF9iZy5ibHVlICogMjU1 KTsKLS0gICAgICAgIGRvdWJsZSBiZ19hbHBoYSA9IG1fcmdiYS5ub3JtYWxfYmcuYWxwaGE7Ci0t ICAgICAgICBzdHJpbmcgZGF0YSA9Ci0tICAgICAgICAgICAgICAgICIjSUJ1c0Vtb2ppZXJXaGl0 ZUxhYmVsIHsgYmFja2dyb3VuZC1jb2xvcjogIiArCi0tICAgICAgICAgICAgICAgICAgICAgICAg InJnYmEoJXUsICV1LCAldSwgJWxmKTsgIi5wcmludGYoCi0tICAgICAgICAgICAgICAgICAgICAg ICAgYmdfcmVkLCBiZ19ncmVlbiwgYmdfYmx1ZSwgYmdfYWxwaGEpICsKLS0gICAgICAgICAgICAg ICAgImZvbnQtZmFtaWx5OiAlczsgZm9udC1zaXplOiAlZHB0OyAiLnByaW50ZigKLS0gICAgICAg ICAgICAgICAgICAgICAgICBtX2Vtb2ppX2ZvbnRfZmFtaWx5LCBtX2Vtb2ppX2ZvbnRfc2l6ZSkg KwotLSAgICAgICAgICAgICAgICAiYm9yZGVyLXdpZHRoOiA0cHg7IGJvcmRlci1yYWRpdXM6IDNw eDsgfSAiOwotLQotLSAgICAgICAgdWludCBmZ19yZWQgPSAodWludCkobV9yZ2JhLnNlbGVjdGVk X2ZnLnJlZCAqIDI1NSk7Ci0tICAgICAgICB1aW50IGZnX2dyZWVuID0gKHVpbnQpKG1fcmdiYS5z ZWxlY3RlZF9mZy5ncmVlbiAqIDI1NSk7Ci0tICAgICAgICB1aW50IGZnX2JsdWUgPSAodWludCko bV9yZ2JhLnNlbGVjdGVkX2ZnLmJsdWUgKiAyNTUpOwotLSAgICAgICAgZG91YmxlIGZnX2FscGhh ID0gbV9yZ2JhLnNlbGVjdGVkX2ZnLmFscGhhOwotLSAgICAgICAgYmdfcmVkID0gKHVpbnQpKG1f cmdiYS5zZWxlY3RlZF9iZy5yZWQgKiAyNTUpOwotLSAgICAgICAgYmdfZ3JlZW4gPSAodWludCko bV9yZ2JhLnNlbGVjdGVkX2JnLmdyZWVuICogMjU1KTsKLS0gICAgICAgIGJnX2JsdWUgPSAodWlu dCkobV9yZ2JhLnNlbGVjdGVkX2JnLmJsdWUgKiAyNTUpOwotLSAgICAgICAgYmdfYWxwaGEgPSBt X3JnYmEuc2VsZWN0ZWRfYmcuYWxwaGE7Ci0tICAgICAgICBkYXRhICs9ICIjSUJ1c0Vtb2ppZXJT ZWxlY3RlZExhYmVsIHsgY29sb3I6ICIgKwotLSAgICAgICAgICAgICAgICAgICAgICAgICJyZ2Jh KCV1LCAldSwgJXUsICVsZik7ICIucHJpbnRmKAotLSAgICAgICAgICAgICAgICAgICAgICAgIGZn X3JlZCwgZmdfZ3JlZW4sIGZnX2JsdWUsIGZnX2FscGhhKSArCi0tICAgICAgICAgICAgICAgICJm b250LWZhbWlseTogJXM7IGZvbnQtc2l6ZTogJWRwdDsgIi5wcmludGYoCi0tICAgICAgICAgICAg ICAgICAgICAgICAgbV9lbW9qaV9mb250X2ZhbWlseSwgbV9lbW9qaV9mb250X3NpemUpICsKLS0g ICAgICAgICAgICAgICAgImJhY2tncm91bmQtY29sb3I6ICIgKwotLSAgICAgICAgICAgICAgICAg ICAgICAgICJyZ2JhKCV1LCAldSwgJXUsICVsZik7ICIucHJpbnRmKAotLSAgICAgICAgICAgICAg ICAgICAgICAgIGJnX3JlZCwgYmdfZ3JlZW4sIGJnX2JsdWUsIGJnX2FscGhhKSArCi0tICAgICAg ICAgICAgICAgICJib3JkZXItd2lkdGg6IDRweDsgYm9yZGVyLXJhZGl1czogM3B4OyB9IjsKLS0g ICAgICAgIGRhdGEgKz0gIiNJQnVzRW1vamllckdvbGRMYWJlbCB7IGNvbG9yOiAiICsKLS0gICAg ICAgICAgICAgICAgICAgICAgICAicmdiYSgldSwgJXUsICV1LCAlbGYpOyAiLnByaW50ZigKLS0g ICAgICAgICAgICAgICAgICAgICAgICBmZ19yZWQsIGZnX2dyZWVuLCBmZ19ibHVlLCBmZ19hbHBo YSkgKwotLSAgICAgICAgICAgICAgICAiZm9udC1mYW1pbHk6ICVzOyBmb250LXNpemU6ICVkcHQ7 ICIucHJpbnRmKAotLSAgICAgICAgICAgICAgICAgICAgICAgIG1fZW1vamlfZm9udF9mYW1pbHks IG1fZW1vamlfZm9udF9zaXplKSArCi0tICAgICAgICAgICAgICAgICJiYWNrZ3JvdW5kLWNvbG9y OiAjYjA5YzVmOyAiICsKLS0gICAgICAgICAgICAgICAgImJvcmRlci13aWR0aDogNHB4OyBib3Jk ZXItcmFkaXVzOiAzcHg7IH0iOwotLQotLSAgICAgICAgR3RrLkNzc1Byb3ZpZGVyIGNzc19wcm92 aWRlciA9IG5ldyBHdGsuQ3NzUHJvdmlkZXIoKTsKLS0gICAgICAgIHRyeSB7Ci0tICAgICAgICAg ICAgY3NzX3Byb3ZpZGVyLmxvYWRfZnJvbV9kYXRhKGRhdGEsIC0xKTsKLS0gICAgICAgIH0gY2F0 Y2ggKEdMaWIuRXJyb3IgZSkgewotLSAgICAgICAgICAgIHdhcm5pbmcoIkZhaWxlZCBjc3NfcHJv dmlkZXJfZnJvbV9kYXRhOiAlcyIsIGUubWVzc2FnZSk7Ci0tICAgICAgICAgICAgcmV0dXJuOwot LSAgICAgICAgfQotLSAgICAgICAgaWYgKGJhY2t1cF9sb2NhbGUgIT0gbnVsbCkKLS0gICAgICAg ICAgICBJbnRsLnNldGxvY2FsZShMb2NhbGVDYXRlZ29yeS5OVU1FUklDLCBiYWNrdXBfbG9jYWxl KTsKLS0gICAgICAgIGVsc2UKLS0gICAgICAgICAgICBJbnRsLnNldGxvY2FsZShMb2NhbGVDYXRl Z29yeS5OVU1FUklDLCAiIik7Ci0tCi0tICAgICAgICBHdGsuU3R5bGVDb250ZXh0LmFkZF9wcm92 aWRlcl9mb3Jfc2NyZWVuKAotLSAgICAgICAgICAgICAgICBzY3JlZW4sCi0tICAgICAgICAgICAg ICAgIGNzc19wcm92aWRlciwKLS0gICAgICAgICAgICAgICAgR3RrLlNUWUxFX1BST1ZJREVSX1BS SU9SSVRZX0FQUExJQ0FUSU9OKTsKLSsgICAgICAgIHNldF9jc3NfZGF0YSgpOwotIAotICAgICAg ICAgbV92Ym94ID0gbmV3IEd0ay5Cb3goR3RrLk9yaWVudGF0aW9uLlZFUlRJQ0FMLCAwKTsKLSAg ICAgICAgIGFkZChtX3Zib3gpOwotQEAgLTc5NSw2ICs3MjgsODQgQEAgcHVibGljIGNsYXNzIElC dXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKLSAgICAgfQotIAotIAotKyAgICBw cml2YXRlIHZvaWQgc2V0X2Nzc19kYXRhKCkgewotKyAgICAgICAgR2RrLkRpc3BsYXkgZGlzcGxh eSA9IEdkay5EaXNwbGF5LmdldF9kZWZhdWx0KCk7Ci0rICAgICAgICBHZGsuU2NyZWVuIHNjcmVl biA9IChkaXNwbGF5ICE9IG51bGwpID8KLSsgICAgICAgICAgICAgICAgZGlzcGxheS5nZXRfZGVm YXVsdF9zY3JlZW4oKSA6IG51bGw7Ci0rCi0rICAgICAgICBpZiAoc2NyZWVuID09IG51bGwpIHsK LSsgICAgICAgICAgICB3YXJuaW5nKCJDb3VsZCBub3Qgb3BlbiBkaXNwbGF5LiIpOwotKyAgICAg ICAgICAgIHJldHVybjsKLSsgICAgICAgIH0KLSsgICAgICAgIC8vIFNldCBlbiBsb2NhbGUgYmVj YXVzZSBkZV9ERSdzIGRlY2ltYWxfcG9pbnQgaXMgJywnIGluc3RlYWQgb2YgJy4nCi0rICAgICAg ICBzdHJpbmc/IGJhY2t1cF9sb2NhbGUgPQotKyAgICAgICAgICAgIEludGwuc2V0bG9jYWxlKExv Y2FsZUNhdGVnb3J5Lk5VTUVSSUMsIG51bGwpLmR1cCgpOwotKyAgICAgICAgaWYgKEludGwuc2V0 bG9jYWxlKExvY2FsZUNhdGVnb3J5Lk5VTUVSSUMsICJlbl9VUy5VVEYtOCIpID09IG51bGwpIHsK LSsgICAgICAgICAgaWYgKEludGwuc2V0bG9jYWxlKExvY2FsZUNhdGVnb3J5Lk5VTUVSSUMsICJD LlVURi04IikgPT0gbnVsbCkgewotKyAgICAgICAgICAgICAgaWYgKEludGwuc2V0bG9jYWxlKExv Y2FsZUNhdGVnb3J5Lk5VTUVSSUMsICJDIikgPT0gbnVsbCkgewotKyAgICAgICAgICAgICAgICAg IHdhcm5pbmcoIllvdSBkb24ndCBpbnN0YWxsIGVpdGhlciBlbl9VUy5VVEYtOCBvciBDLlVURi04 ICIgKwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yIEMgbG9jYWxlIik7Ci0rICAgICAg ICAgICAgICB9Ci0rICAgICAgICAgIH0KLSsgICAgICAgIH0KLSsgICAgICAgIGlmIChtX3JnYmEg PT0gbnVsbCkKLSsgICAgICAgICAgICBtX3JnYmEgPSBuZXcgVGhlbWVkUkdCQSh0aGlzKTsKLSsg ICAgICAgIHVpbnQgYmdfcmVkID0gKHVpbnQpKG1fcmdiYS5ub3JtYWxfYmcucmVkICogMjU1KTsK LSsgICAgICAgIHVpbnQgYmdfZ3JlZW4gPSAodWludCkobV9yZ2JhLm5vcm1hbF9iZy5ncmVlbiAq IDI1NSk7Ci0rICAgICAgICB1aW50IGJnX2JsdWUgPSAodWludCkobV9yZ2JhLm5vcm1hbF9iZy5i bHVlICogMjU1KTsKLSsgICAgICAgIGRvdWJsZSBiZ19hbHBoYSA9IG1fcmdiYS5ub3JtYWxfYmcu YWxwaGE7Ci0rICAgICAgICBzdHJpbmcgZGF0YSA9Ci0rICAgICAgICAgICAgICAgICIjSUJ1c0Vt b2ppZXJXaGl0ZUxhYmVsIHsgYmFja2dyb3VuZC1jb2xvcjogIiArCi0rICAgICAgICAgICAgICAg ICAgICAgICAgInJnYmEoJXUsICV1LCAldSwgJWxmKTsgIi5wcmludGYoCi0rICAgICAgICAgICAg ICAgICAgICAgICAgYmdfcmVkLCBiZ19ncmVlbiwgYmdfYmx1ZSwgYmdfYWxwaGEpICsKLSsgICAg ICAgICAgICAgICAgImZvbnQtZmFtaWx5OiAlczsgZm9udC1zaXplOiAlZHB0OyAiLnByaW50ZigK LSsgICAgICAgICAgICAgICAgICAgICAgICBtX2Vtb2ppX2ZvbnRfZmFtaWx5LCBtX2Vtb2ppX2Zv bnRfc2l6ZSkgKwotKyAgICAgICAgICAgICAgICAiYm9yZGVyLXdpZHRoOiA0cHg7IGJvcmRlci1y YWRpdXM6IDNweDsgfSAiOwotKwotKyAgICAgICAgdWludCBmZ19yZWQgPSAodWludCkobV9yZ2Jh LnNlbGVjdGVkX2ZnLnJlZCAqIDI1NSk7Ci0rICAgICAgICB1aW50IGZnX2dyZWVuID0gKHVpbnQp KG1fcmdiYS5zZWxlY3RlZF9mZy5ncmVlbiAqIDI1NSk7Ci0rICAgICAgICB1aW50IGZnX2JsdWUg PSAodWludCkobV9yZ2JhLnNlbGVjdGVkX2ZnLmJsdWUgKiAyNTUpOwotKyAgICAgICAgZG91Ymxl IGZnX2FscGhhID0gbV9yZ2JhLnNlbGVjdGVkX2ZnLmFscGhhOwotKyAgICAgICAgYmdfcmVkID0g KHVpbnQpKG1fcmdiYS5zZWxlY3RlZF9iZy5yZWQgKiAyNTUpOwotKyAgICAgICAgYmdfZ3JlZW4g PSAodWludCkobV9yZ2JhLnNlbGVjdGVkX2JnLmdyZWVuICogMjU1KTsKLSsgICAgICAgIGJnX2Js dWUgPSAodWludCkobV9yZ2JhLnNlbGVjdGVkX2JnLmJsdWUgKiAyNTUpOwotKyAgICAgICAgYmdf YWxwaGEgPSBtX3JnYmEuc2VsZWN0ZWRfYmcuYWxwaGE7Ci0rICAgICAgICBkYXRhICs9ICIjSUJ1 c0Vtb2ppZXJTZWxlY3RlZExhYmVsIHsgY29sb3I6ICIgKwotKyAgICAgICAgICAgICAgICAgICAg ICAgICJyZ2JhKCV1LCAldSwgJXUsICVsZik7ICIucHJpbnRmKAotKyAgICAgICAgICAgICAgICAg ICAgICAgIGZnX3JlZCwgZmdfZ3JlZW4sIGZnX2JsdWUsIGZnX2FscGhhKSArCi0rICAgICAgICAg ICAgICAgICJmb250LWZhbWlseTogJXM7IGZvbnQtc2l6ZTogJWRwdDsgIi5wcmludGYoCi0rICAg ICAgICAgICAgICAgICAgICAgICAgbV9lbW9qaV9mb250X2ZhbWlseSwgbV9lbW9qaV9mb250X3Np emUpICsKLSsgICAgICAgICAgICAgICAgImJhY2tncm91bmQtY29sb3I6ICIgKwotKyAgICAgICAg ICAgICAgICAgICAgICAgICJyZ2JhKCV1LCAldSwgJXUsICVsZik7ICIucHJpbnRmKAotKyAgICAg ICAgICAgICAgICAgICAgICAgIGJnX3JlZCwgYmdfZ3JlZW4sIGJnX2JsdWUsIGJnX2FscGhhKSAr Ci0rICAgICAgICAgICAgICAgICJib3JkZXItd2lkdGg6IDRweDsgYm9yZGVyLXJhZGl1czogM3B4 OyB9IjsKLSsgICAgICAgIGRhdGEgKz0gIiNJQnVzRW1vamllckdvbGRMYWJlbCB7IGNvbG9yOiAi ICsKLSsgICAgICAgICAgICAgICAgICAgICAgICAicmdiYSgldSwgJXUsICV1LCAlbGYpOyAiLnBy aW50ZigKLSsgICAgICAgICAgICAgICAgICAgICAgICBmZ19yZWQsIGZnX2dyZWVuLCBmZ19ibHVl LCBmZ19hbHBoYSkgKwotKyAgICAgICAgICAgICAgICAiZm9udC1mYW1pbHk6ICVzOyBmb250LXNp emU6ICVkcHQ7ICIucHJpbnRmKAotKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZW1vamlfZm9u dF9mYW1pbHksIG1fZW1vamlfZm9udF9zaXplKSArCi0rICAgICAgICAgICAgICAgICJiYWNrZ3Jv dW5kLWNvbG9yOiAjYjA5YzVmOyAiICsKLSsgICAgICAgICAgICAgICAgImJvcmRlci13aWR0aDog NHB4OyBib3JkZXItcmFkaXVzOiAzcHg7IH0iOwotKwotKyAgICAgICAgR3RrLkNzc1Byb3ZpZGVy IGNzc19wcm92aWRlciA9IG5ldyBHdGsuQ3NzUHJvdmlkZXIoKTsKLSsgICAgICAgIHRyeSB7Ci0r ICAgICAgICAgICAgY3NzX3Byb3ZpZGVyLmxvYWRfZnJvbV9kYXRhKGRhdGEsIC0xKTsKLSsgICAg ICAgIH0gY2F0Y2ggKEdMaWIuRXJyb3IgZSkgewotKyAgICAgICAgICAgIHdhcm5pbmcoIkZhaWxl ZCBjc3NfcHJvdmlkZXJfZnJvbV9kYXRhOiAlcyIsIGUubWVzc2FnZSk7Ci0rICAgICAgICAgICAg cmV0dXJuOwotKyAgICAgICAgfQotKyAgICAgICAgaWYgKGJhY2t1cF9sb2NhbGUgIT0gbnVsbCkK LSsgICAgICAgICAgICBJbnRsLnNldGxvY2FsZShMb2NhbGVDYXRlZ29yeS5OVU1FUklDLCBiYWNr dXBfbG9jYWxlKTsKLSsgICAgICAgIGVsc2UKLSsgICAgICAgICAgICBJbnRsLnNldGxvY2FsZShM b2NhbGVDYXRlZ29yeS5OVU1FUklDLCAiIik7Ci0rCi0rICAgICAgICBHdGsuU3R5bGVDb250ZXh0 LmFkZF9wcm92aWRlcl9mb3Jfc2NyZWVuKAotKyAgICAgICAgICAgICAgICBzY3JlZW4sCi0rICAg ICAgICAgICAgICAgIGNzc19wcm92aWRlciwKLSsgICAgICAgICAgICAgICAgR3RrLlNUWUxFX1BS T1ZJREVSX1BSSU9SSVRZX0FQUExJQ0FUSU9OKTsKLSsgICAgfQotKwotKwotICAgICBwcml2YXRl IHZvaWQgc2V0X2ZpeGVkX3NpemUoKSB7Ci0gICAgICAgICByZXNpemUoMjAsIDEpOwotICAgICB9 Ci1AQCAtMTAzOCw3ICsxMDQ5LDggQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFw cGxpY2F0aW9uV2luZG93IHsKLSAgICAgICAgICAgICBtX2xvb2t1cF90YWJsZS5hcHBlbmRfY2Fu ZGlkYXRlKHRleHQpOwotICAgICAgICAgfQotICAgICAgICAgbV9iYWNrd2FyZCA9IGJsb2NrX25h bWU7Ci0tICAgICAgICBtX2Fubm90YXRpb24gPSBtX2xvb2t1cF90YWJsZS5nZXRfY2FuZGlkYXRl KDApLnRleHQ7Ci0rICAgICAgICBpZiAobV9sb29rdXBfdGFibGUuZ2V0X251bWJlcl9vZl9jYW5k aWRhdGVzKCkgPiAwKQotKyAgICAgICAgICAgIG1fYW5ub3RhdGlvbiA9IG1fbG9va3VwX3RhYmxl LmdldF9jYW5kaWRhdGUoMCkudGV4dDsKLSAgICAgfQotIAotIAotQEAgLTEzODUsNiArMTM5Nywx MCBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewot ICAgICBwcml2YXRlIHZvaWQgc2hvd19jYW5kaWRhdGVfcGFuZWwoKSB7Ci0gICAgICAgICByZW1v dmVfYWxsX2NoaWxkcmVuKCk7Ci0gICAgICAgICBzZXRfZml4ZWRfc2l6ZSgpOwotKyAgICAgICAg aWYgKG1fZW1vamlfZm9udF9jaGFuZ2VkKSB7Ci0rICAgICAgICAgICAgc2V0X2Nzc19kYXRhKCk7 Ci0rICAgICAgICAgICAgbV9lbW9qaV9mb250X2NoYW5nZWQgPSBmYWxzZTsKLSsgICAgICAgIH0K LSAgICAgICAgIHVpbnQgcGFnZV9zaXplID0gbV9sb29rdXBfdGFibGUuZ2V0X3BhZ2Vfc2l6ZSgp OwotICAgICAgICAgdWludCBuY2FuZGlkYXRlcyA9IG1fbG9va3VwX3RhYmxlLmdldF9udW1iZXJf b2ZfY2FuZGlkYXRlcygpOwotICAgICAgICAgdWludCBjdXJzb3IgPSBtX2xvb2t1cF90YWJsZS5n ZXRfY3Vyc29yX3BvcygpOwotQEAgLTE0ODgsMzIgKzE1MDQsMzMgQEAgcHVibGljIGNsYXNzIElC dXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKLSAKLSAgICAgICAgICAgICBtX2Nh bmRpZGF0ZXMgKz0gbGFiZWw7Ci0gICAgICAgICB9Ci0tICAgICAgICBpZiAobiA+IDApIHsKLS0g ICAgICAgICAgICBtX2NhbmRpZGF0ZV9wYW5lbF9pc192aXNpYmxlID0gdHJ1ZTsKLS0gICAgICAg ICAgICBpZiAoIW1faXNfdXBfc2lkZV9kb3duKSB7Ci0tICAgICAgICAgICAgICAgIHNob3dfYXJy b3dfYnV0dG9ucygpOwotLSAgICAgICAgICAgICAgICBpZiAoYmFja3dhcmRfYnV0dG9uICE9IG51 bGwpIHsKLS0gICAgICAgICAgICAgICAgICAgIG1fdmJveC5hZGQoYmFja3dhcmRfYnV0dG9uKTsK LS0gICAgICAgICAgICAgICAgICAgIGJhY2t3YXJkX2J1dHRvbi5zaG93X2FsbCgpOwotLSAgICAg ICAgICAgICAgICB9Ci0rICAgICAgICBtX2NhbmRpZGF0ZV9wYW5lbF9pc192aXNpYmxlID0gdHJ1 ZTsKLSsgICAgICAgIGlmICghbV9pc191cF9zaWRlX2Rvd24pIHsKLSsgICAgICAgICAgICBzaG93 X2Fycm93X2J1dHRvbnMoKTsKLSsgICAgICAgICAgICBpZiAoYmFja3dhcmRfYnV0dG9uICE9IG51 bGwpIHsKLSsgICAgICAgICAgICAgICAgbV92Ym94LmFkZChiYWNrd2FyZF9idXR0b24pOwotKyAg ICAgICAgICAgICAgICBiYWNrd2FyZF9idXR0b24uc2hvd19hbGwoKTsKLSsgICAgICAgICAgICB9 Ci0rICAgICAgICAgICAgaWYgKG4gPiAwKSB7Ci0gICAgICAgICAgICAgICAgIG1fdmJveC5hZGQo Z3JpZCk7Ci0gICAgICAgICAgICAgICAgIGdyaWQuc2hvd19hbGwoKTsKLSAgICAgICAgICAgICAg ICAgc2hvd19kZXNjcmlwdGlvbigpOwotLSAgICAgICAgICAgICAgICBpZiAoIW1fbG9hZGVkX3Vu aWNvZGUpCi0tICAgICAgICAgICAgICAgICAgICBzaG93X3VuaWNvZGVfcHJvZ3Jlc3NfYmFyKCk7 Ci0gICAgICAgICAgICAgfQotLSAgICAgICAgICAgIGlmIChtX2lzX3VwX3NpZGVfZG93bikgewot LSAgICAgICAgICAgICAgICBpZiAoIW1fbG9hZGVkX3VuaWNvZGUpCi0tICAgICAgICAgICAgICAg ICAgICBzaG93X3VuaWNvZGVfcHJvZ3Jlc3NfYmFyKCk7Ci0rICAgICAgICAgICAgaWYgKCFtX2xv YWRlZF91bmljb2RlKQotKyAgICAgICAgICAgICAgICBzaG93X3VuaWNvZGVfcHJvZ3Jlc3NfYmFy KCk7Ci0rICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgIGlmICghbV9sb2FkZWRfdW5pY29k ZSkKLSsgICAgICAgICAgICAgICAgc2hvd191bmljb2RlX3Byb2dyZXNzX2JhcigpOwotKyAgICAg ICAgICAgIGlmIChuID4gMCkgewotICAgICAgICAgICAgICAgICBzaG93X2Rlc2NyaXB0aW9uKCk7 Ci0gICAgICAgICAgICAgICAgIG1fdmJveC5hZGQoZ3JpZCk7Ci0gICAgICAgICAgICAgICAgIGdy aWQuc2hvd19hbGwoKTsKLS0gICAgICAgICAgICAgICAgaWYgKGJhY2t3YXJkX2J1dHRvbiAhPSBu dWxsKSB7Ci0tICAgICAgICAgICAgICAgICAgICBtX3Zib3guYWRkKGJhY2t3YXJkX2J1dHRvbik7 Ci0tICAgICAgICAgICAgICAgICAgICBiYWNrd2FyZF9idXR0b24uc2hvd19hbGwoKTsKLS0gICAg ICAgICAgICAgICAgfQotLSAgICAgICAgICAgICAgICBzaG93X2Fycm93X2J1dHRvbnMoKTsKLSAg ICAgICAgICAgICB9Ci0rICAgICAgICAgICAgaWYgKGJhY2t3YXJkX2J1dHRvbiAhPSBudWxsKSB7 Ci0rICAgICAgICAgICAgICAgIG1fdmJveC5hZGQoYmFja3dhcmRfYnV0dG9uKTsKLSsgICAgICAg ICAgICAgICAgYmFja3dhcmRfYnV0dG9uLnNob3dfYWxsKCk7Ci0rICAgICAgICAgICAgfQotKyAg ICAgICAgICAgIHNob3dfYXJyb3dfYnV0dG9ucygpOwotICAgICAgICAgfQotICAgICB9Ci0gCi1A QCAtMjYxOCwxMSArMjYzNSwxNSBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBw bGljYXRpb25XaW5kb3cgewotICAgICAgICAgUGFuZ28uRm9udERlc2NyaXB0aW9uIGZvbnRfZGVz YyA9Ci0gICAgICAgICAgICAgICAgIFBhbmdvLkZvbnREZXNjcmlwdGlvbi5mcm9tX3N0cmluZyhl bW9qaV9mb250KTsKLSAgICAgICAgIHN0cmluZyBmb250X2ZhbWlseSA9IGZvbnRfZGVzYy5nZXRf ZmFtaWx5KCk7Ci0tICAgICAgICBpZiAoZm9udF9mYW1pbHkgIT0gbnVsbCkKLSsgICAgICAgIGlm IChmb250X2ZhbWlseSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgbV9lbW9qaV9mb250X2ZhbWls eSA9IGZvbnRfZmFtaWx5OwotKyAgICAgICAgICAgIG1fZW1vamlfZm9udF9jaGFuZ2VkID0gdHJ1 ZTsKLSsgICAgICAgIH0KLSAgICAgICAgIGludCBmb250X3NpemUgPSBmb250X2Rlc2MuZ2V0X3Np emUoKSAvIFBhbmdvLlNDQUxFOwotLSAgICAgICAgaWYgKGZvbnRfc2l6ZSAhPSAwKQotKyAgICAg ICAgaWYgKGZvbnRfc2l6ZSAhPSAwKSB7Ci0gICAgICAgICAgICAgbV9lbW9qaV9mb250X3NpemUg PSBmb250X3NpemU7Ci0rICAgICAgICAgICAgbV9lbW9qaV9mb250X2NoYW5nZWQgPSB0cnVlOwot KyAgICAgICAgfQotICAgICB9Ci0gCi0gCi0tLSAKLTIuMTQuMwotCi1Gcm9tIGY5ZTMwMzU5ZDMy ODA1NDc5M2UxZTIyNWRjZjJmZTUzN2U2YzhjNDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1G cm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDI3 IEp1biAyMDE4IDEyOjExOjQxICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGlidXNlbmdpbmVzaW1w bGU6IEVuYWJsZSBwcmVlZGl0IGZvciBjb21wb3NlIGtleXMKLQotQlVHPWh0dHBzOi8vZ2l0aHVi LmNvbS9pYnVzL2lidXMvaXNzdWVzLzE5MzUKLS0tLQotIHNyYy9pYnVzZW5naW5lc2ltcGxlLmMg fCAxNjYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQot IDEgZmlsZSBjaGFuZ2VkLCAxMTUgaW5zZXJ0aW9ucygrKSwgNTEgZGVsZXRpb25zKC0pCi0KLWRp ZmYgLS1naXQgYS9zcmMvaWJ1c2VuZ2luZXNpbXBsZS5jIGIvc3JjL2lidXNlbmdpbmVzaW1wbGUu YwotaW5kZXggOTRjZTUzYjcuLjYxZGZiODlmIDEwMDY0NAotLS0tIGEvc3JjL2lidXNlbmdpbmVz aW1wbGUuYwotKysrIGIvc3JjL2lidXNlbmdpbmVzaW1wbGUuYwotQEAgLTE4OSwxMSArMTg5LDEy IEBAIGlidXNfZW5naW5lX3NpbXBsZV9yZXNldCAoSUJ1c0VuZ2luZSAqZW5naW5lKQotICAgICAg ICAgcHJpdi0+dGVudGF0aXZlX21hdGNoID0gMDsKLSAgICAgICAgIHByaXYtPnRlbnRhdGl2ZV9t YXRjaF9sZW4gPSAwOwotICAgICAgICAgaWJ1c19lbmdpbmVfaGlkZV9wcmVlZGl0X3RleHQgKChJ QnVzRW5naW5lICopc2ltcGxlKTsKLS0gICAgfQotLSAgICBpZiAocHJpdi0+dGVudGF0aXZlX2Vt b2ppIHx8IHByaXYtPmluX2Vtb2ppX3NlcXVlbmNlKSB7Ci0rICAgIH0gZWxzZSBpZiAocHJpdi0+ dGVudGF0aXZlX2Vtb2ppIHx8IHByaXYtPmluX2Vtb2ppX3NlcXVlbmNlKSB7Ci0gICAgICAgICBw cml2LT5pbl9lbW9qaV9zZXF1ZW5jZSA9IEZBTFNFOwotICAgICAgICAgZ19jbGVhcl9wb2ludGVy ICgmcHJpdi0+dGVudGF0aXZlX2Vtb2ppLCBnX2ZyZWUpOwotICAgICAgICAgaWJ1c19lbmdpbmVf aGlkZV9wcmVlZGl0X3RleHQgKChJQnVzRW5naW5lICopc2ltcGxlKTsKLSsgICAgfSBlbHNlIGlm ICghcHJpdi0+aW5faGV4X3NlcXVlbmNlICYmICFwcml2LT5pbl9lbW9qaV9zZXF1ZW5jZSkgewot KyAgICAgICAgaWJ1c19lbmdpbmVfaGlkZV9wcmVlZGl0X3RleHQgKChJQnVzRW5naW5lICopc2lt cGxlKTsKLSAgICAgfQotIH0KLSAKLUBAIC0yMDksMTggKzIxMCw3OCBAQCBpYnVzX2VuZ2luZV9z aW1wbGVfY29tbWl0X2NoYXIgKElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSwKLSAgICAgICAgIHBy aXYtPmluX2hleF9zZXF1ZW5jZSA9IEZBTFNFOwotICAgICAgICAgcHJpdi0+dGVudGF0aXZlX21h dGNoID0gMDsKLSAgICAgICAgIHByaXYtPnRlbnRhdGl2ZV9tYXRjaF9sZW4gPSAwOwotLSAgICAg ICAgaWJ1c19lbmdpbmVfc2ltcGxlX3VwZGF0ZV9wcmVlZGl0X3RleHQgKHNpbXBsZSk7Ci0gICAg IH0KLSAgICAgaWYgKHByaXYtPnRlbnRhdGl2ZV9lbW9qaSB8fCBwcml2LT5pbl9lbW9qaV9zZXF1 ZW5jZSkgewotICAgICAgICAgcHJpdi0+aW5fZW1vamlfc2VxdWVuY2UgPSBGQUxTRTsKLSAgICAg ICAgIGdfY2xlYXJfcG9pbnRlciAoJnByaXYtPnRlbnRhdGl2ZV9lbW9qaSwgZ19mcmVlKTsKLS0g ICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV91cGRhdGVfcHJlZWRpdF90ZXh0IChzaW1wbGUpOwot ICAgICB9Ci0tCi0gICAgIGlidXNfZW5naW5lX2NvbW1pdF90ZXh0ICgoSUJ1c0VuZ2luZSAqKXNp bXBsZSwKLSAgICAgICAgICAgICBpYnVzX3RleHRfbmV3X2Zyb21fdW5pY2hhciAoY2gpKTsKLSB9 Ci0gCi0rI2RlZmluZSBDT01QT1NFX0tFWVNZTV9UT19VTklDSEFSKGtleXN5bSwgdW5pY2hhcikg eyAgICAgICAgICAgICAgICAgICAgXAotKwotK3N0YXRpYyBndW5pY2hhcgotK2lidXNfa2V5c3lt X3RvX3VuaWNvZGUgKGd1aW50MTYga2V5c3ltKSB7Ci0rI2RlZmluZSBDQVNFKGtleXN5bV9zdWZm aXgsIHVuaWNvZGUpIFwKLSsgICAgICAgIGNhc2UgSUJVU19LRVlfZGVhZF8jI2tleXN5bV9zdWZm aXg6IHJldHVybiB1bmljb2RlCi0rICAgIHN3aXRjaCAoa2V5c3ltKSB7Ci0rICAgIENBU0UoYSwg MHgwMzA0MSk7Ci0rICAgIENBU0UoQSwgMHgwMzA0Mik7Ci0rICAgIENBU0UoaSwgMHgwMzA0Myk7 Ci0rICAgIENBU0UoSSwgMHgwMzA0NCk7Ci0rICAgIENBU0UodSwgMHgwMzA0NSk7Ci0rICAgIENB U0UoVSwgMHgwMzA0Nik7Ci0rICAgIENBU0UoZSwgMHgwMzA0Nyk7Ci0rICAgIENBU0UoRSwgMHgw MzA0OCk7Ci0rICAgIENBU0UobywgMHgwMzA0OSk7Ci0rICAgIENBU0UoTywgMHgwMzA0YSk7Ci0r ICAgIENBU0UoYWJvdmVjb21tYSwgICAgICAgICAgICAgICAgICAgIDB4MDMxMyk7Ci0rICAgIENB U0UoYWJvdmVkb3QsICAgICAgICAgICAgICAgICAgICAgIDB4MDMwNyk7Ci0rICAgIENBU0UoYWJv dmVyZXZlcnNlZGNvbW1hLCAgICAgICAgICAgIDB4MDMxNCk7Ci0rICAgIENBU0UoYWJvdmVyaW5n LCAgICAgICAgICAgICAgICAgICAgIDB4MDMwYSk7Ci0rICAgIENBU0UoYWN1dGUsICAgICAgICAg ICAgICAgICAgICAgICAgIDB4MDMwMSk7Ci0rICAgIENBU0UoYmVsb3dicmV2ZSwgICAgICAgICAg ICAgICAgICAgIDB4MDMyZSk7Ci0rICAgIENBU0UoYmVsb3djaXJjdW1mbGV4LCAgICAgICAgICAg ICAgIDB4MDMyZCk7Ci0rICAgIENBU0UoYmVsb3djb21tYSwgICAgICAgICAgICAgICAgICAgIDB4 MDMyNik7Ci0rICAgIENBU0UoYmVsb3dkaWFlcmVzaXMsICAgICAgICAgICAgICAgIDB4MDMyNCk7 Ci0rICAgIENBU0UoYmVsb3dkb3QsICAgICAgICAgICAgICAgICAgICAgIDB4MDMyMyk7Ci0rICAg IENBU0UoYmVsb3dtYWNyb24sICAgICAgICAgICAgICAgICAgIDB4MDMzMSk7Ci0rICAgIENBU0Uo YmVsb3dyaW5nLCAgICAgICAgICAgICAgICAgICAgIDB4MDMwYSk7Ci0rICAgIENBU0UoYmVsb3d0 aWxkZSwgICAgICAgICAgICAgICAgICAgIDB4MDMzMCk7Ci0rICAgIENBU0UoYnJldmUsICAgICAg ICAgICAgICAgICAgICAgICAgIDB4MDMwNik7Ci0rICAgIENBU0UoY2FwaXRhbF9zY2h3YSwgICAg ICAgICAgICAgICAgIDB4MDE4Zik7Ci0rICAgIENBU0UoY2Fyb24sICAgICAgICAgICAgICAgICAg ICAgICAgIDB4MDMwYyk7Ci0rICAgIENBU0UoY2VkaWxsYSwgICAgICAgICAgICAgICAgICAgICAg IDB4MDMyNyk7Ci0rICAgIENBU0UoY2lyY3VtZmxleCwgICAgICAgICAgICAgICAgICAgIDB4MDMw Mik7Ci0rICAgIENBU0UoY3VycmVuY3ksICAgICAgICAgICAgICAgICAgICAgIDB4MDBhNCk7Ci0r ICAgIC8vIElCVVNfS0VZX2RlYWRfZGFzaWEgPT0gSUJVU19LRVlfZGVhZF9hYm92ZXJldmVyc2Vk Y29tbWEKLSsgICAgQ0FTRShkaWFlcmVzaXMsICAgICAgICAgICAgICAgICAgICAgMHgwMzA4KTsK LSsgICAgQ0FTRShkb3VibGVhY3V0ZSwgICAgICAgICAgICAgICAgICAgMHgwMzBiKTsKLSsgICAg Q0FTRShkb3VibGVncmF2ZSwgICAgICAgICAgICAgICAgICAgMHgwMzBmKTsKLSsgICAgQ0FTRShn cmF2ZSwgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMzAwKTsKLSsgICAgQ0FTRShncmVlaywg ICAgICAgICAgICAgICAgICAgICAgICAgMHgwM2IxKTsKLSsgICAgQ0FTRShob29rLCAgICAgICAg ICAgICAgICAgICAgICAgICAgMHgwMzA5KTsKLSsgICAgQ0FTRShob3JuLCAgICAgICAgICAgICAg ICAgICAgICAgICAgMHgwMzFiKTsKLSsgICAgQ0FTRShpbnZlcnRlZGJyZXZlLCAgICAgICAgICAg ICAgICAgMHgwMzJmKTsKLSsgICAgQ0FTRShpb3RhLCAgICAgICAgICAgICAgICAgICAgICAgICAg MHgwMzQ1KTsKLSsgICAgQ0FTRShtYWNyb24sICAgICAgICAgICAgICAgICAgICAgICAgMHgwMzA0 KTsKLSsgICAgQ0FTRShvZ29uZWssICAgICAgICAgICAgICAgICAgICAgICAgMHgwMzI4KTsKLSsg ICAgLy8gSUJVU19LRVlfZGVhZF9wZXJpc3BvbWVuaSA9PSBJQlVTX0tFWV9kZWFkX3RpbGRlCi0r ICAgIC8vIElCVVNfS0VZX2RlYWRfcHNpbGkgPT0gSUJVU19LRVlfZGVhZF9hYm92ZWNvbW1hCi0r ICAgIENBU0Uoc2VtaXZvaWNlZF9zb3VuZCwgICAgICAgICAgICAgIDB4MzA5YSk7Ci0rICAgIENB U0Uoc21hbGxfc2Nod2EsICAgICAgICAgICAgICAgICAgIDB4MWQ0YSk7Ci0rICAgIENBU0Uoc3Ry b2tlLCAgICAgICAgICAgICAgICAgICAgICAgIDB4MjlmOCk7Ci0rICAgIENBU0UodGlsZGUsICAg ICAgICAgICAgICAgICAgICAgICAgIDB4MDMwMyk7Ci0rICAgIENBU0Uodm9pY2VkX3NvdW5kLCAg ICAgICAgICAgICAgICAgIDB4MzA5OSk7Ci0rICAgIGNhc2UgSUJVU19LRVlfTXVsdGlfa2V5Ogot KyAgICAgICAgcmV0dXJuIDB4MjM4NDsKLSsgICAgZGVmYXVsdDo7Ci0rICAgIH0KLSsgICAgcmV0 dXJuIDB4MDsKLSsjdW5kZWYgQ0FTRQotK30KLSsKLSBzdGF0aWMgdm9pZAotIGlidXNfZW5naW5l X3NpbXBsZV9jb21taXRfc3RyIChJQnVzRW5naW5lU2ltcGxlICpzaW1wbGUsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgKnN0cikKLUBAIC0yNzgsOCAr MzM5LDcgQEAgaWJ1c19lbmdpbmVfc2ltcGxlX3VwZGF0ZV9wcmVlZGl0X3RleHQgKElCdXNFbmdp bmVTaW1wbGUgKnNpbXBsZSkKLSAgICAgICAgICAgICBnX2Fzc2VydCAobGVuIDw9IElCVVNfTUFY X0NPTVBPU0VfTEVOICsgMSk7Ci0gICAgICAgICBlbHNlCi0gICAgICAgICAgICAgZ19hc3NlcnQg KGxlbiA8PSBFTU9KSV9TT1VSQ0VfTEVOICsgMSk7Ci0tICAgIH0KLS0gICAgZWxzZSBpZiAocHJp di0+dGVudGF0aXZlX21hdGNoKSB7Ci0rICAgIH0gZWxzZSBpZiAocHJpdi0+dGVudGF0aXZlX21h dGNoKSB7Ci0gICAgICAgICBvdXRidWZbbGVuKytdID0gcHJpdi0+dGVudGF0aXZlX21hdGNoOwot ICAgICB9IGVsc2UgaWYgKHByaXYtPnRlbnRhdGl2ZV9lbW9qaSAmJiAqcHJpdi0+dGVudGF0aXZl X2Vtb2ppKSB7Ci0gICAgICAgICBJQnVzVGV4dCAqdGV4dCA9IGlidXNfdGV4dF9uZXdfZnJvbV9z dHJpbmcgKHByaXYtPnRlbnRhdGl2ZV9lbW9qaSk7Ci1AQCAtMjg4LDYgKzM0OCwyNCBAQCBpYnVz X2VuZ2luZV9zaW1wbGVfdXBkYXRlX3ByZWVkaXRfdGV4dCAoSUJ1c0VuZ2luZVNpbXBsZSAqc2lt cGxlKQotICAgICAgICAgICAgICAgICBJQlVTX0FUVFJfVFlQRV9VTkRFUkxJTkUsIElCVVNfQVRU Ul9VTkRFUkxJTkVfU0lOR0xFLCAwLCBsZW4pOwotICAgICAgICAgaWJ1c19lbmdpbmVfdXBkYXRl X3ByZWVkaXRfdGV4dCAoKElCdXNFbmdpbmUgKilzaW1wbGUsIHRleHQsIGxlbiwgVFJVRSk7Ci0g ICAgICAgICByZXR1cm47Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgICBpbnQgaGV4Y2hhcnMgPSAw OwotKyAgICAgICAgd2hpbGUgKHByaXYtPmNvbXBvc2VfYnVmZmVyW2hleGNoYXJzXSAhPSAwKSB7 Ci0rICAgICAgICAgICAgZ3VpbnQxNiBrZXlzeW09IHByaXYtPmNvbXBvc2VfYnVmZmVyW2hleGNo YXJzXTsKLSsgICAgICAgICAgICBndW5pY2hhciB1bmljaGFyID0gaWJ1c19rZXlzeW1fdG9fdW5p Y29kZSAoa2V5c3ltKTsKLSsgICAgICAgICAgICBpZiAodW5pY2hhciA+IDApCi0rICAgICAgICAg ICAgICAgIG91dGJ1ZltsZW5dID0gdW5pY2hhcjsKLSsgICAgICAgICAgICBlbHNlCi0rICAgICAg ICAgICAgICAgIG91dGJ1ZltsZW5dID0gaWJ1c19rZXl2YWxfdG9fdW5pY29kZSAoa2V5c3ltKTsK LSsgICAgICAgICAgICBpZiAoIW91dGJ1ZltsZW5dKSB7Ci0rICAgICAgICAgICAgICAgIGdfd2Fy bmluZyAoCi0rICAgICAgICAgICAgICAgICAgICAgICAgIk5vdCBmb3VuZCBhbHRlcm5hdGl2ZSBj aGFyYWN0ZXIgb2YgY29tcG9zZSBrZXkgMHglWCIsCi0rICAgICAgICAgICAgICAgICAgICAgICAg cHJpdi0+Y29tcG9zZV9idWZmZXJbaGV4Y2hhcnNdKTsKLSsgICAgICAgICAgICB9Ci0rICAgICAg ICAgICAgKytsZW47Ci0rICAgICAgICAgICAgKytoZXhjaGFyczsKLSsgICAgICAgIH0KLSsgICAg ICAgIGdfYXNzZXJ0IChsZW4gPD0gSUJVU19NQVhfQ09NUE9TRV9MRU4gKyAxKTsKLSAgICAgfQot IAotICAgICBvdXRidWZbbGVuXSA9IEwnXDAnOwotQEAgLTU2OSw4ICs2NDcsOSBAQCBjaGVja190 YWJsZSAoSUJ1c0VuZ2luZVNpbXBsZSAgICAgICAqc2ltcGxlLAotICAgICAgICAgfQotIAotICAg ICAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX2NvbW1pdF9jaGFyIChzaW1wbGUsIHZhbHVlKTsKLS0g ICAgICAgIC8vIGdfZGVidWcgKCJVKyUwNFhcbiIsIHZhbHVlKTsKLSAgICAgICAgIHByaXYtPmNv bXBvc2VfYnVmZmVyWzBdID0gMDsKLSsgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV91cGRhdGVf cHJlZWRpdF90ZXh0IChzaW1wbGUpOwotKyAgICAgICAgLy8gZ19kZWJ1ZyAoIlUrJTA0WFxuIiwg dmFsdWUpOwotICAgICB9Ci0gICAgIHJldHVybiBUUlVFOwotIH0KLUBAIC03NjgsNDQgKzg0Nywx MCBAQCBpYnVzX2NoZWNrX2FsZ29yaXRobWljYWxseSAoY29uc3QgZ3VpbnQxNiAqY29tcG9zZV9i dWZmZXIsCi0gICAgICAgICBjb21iaW5hdGlvbl9idWZmZXJbbl9jb21wb3NlXSA9IDA7Ci0gICAg ICAgICBpLS07Ci0gICAgICAgICB3aGlsZSAoaSA+PSAwKSB7Ci0tICAgICAgICBzd2l0Y2ggKGNv bXBvc2VfYnVmZmVyW2ldKSB7Ci0tI2RlZmluZSBDQVNFKGtleXN5bSwgdW5pY29kZSkgXAotLSAg ICAgICAgY2FzZSBJQlVTX0tFWV9kZWFkXyMja2V5c3ltOiBcCi0tICAgICAgICAgICAgY29tYmlu YXRpb25fYnVmZmVyW2krMV0gPSB1bmljb2RlOyBcCi0tICAgICAgICAgICAgYnJlYWsKLS0gICAg ICAgIENBU0UgKGdyYXZlLCAweDAzMDApOwotLSAgICAgICAgQ0FTRSAoYWN1dGUsIDB4MDMwMSk7 Ci0tICAgICAgICBDQVNFIChjaXJjdW1mbGV4LCAweDAzMDIpOwotLSAgICAgICAgQ0FTRSAodGls ZGUsIDB4MDMwMyk7ICAgIC8qIEFsc28gdXNlZCB3aXRoIHBlcmlzcG9tZW5pLCAweDM0Mi4gKi8K LS0gICAgICAgIENBU0UgKG1hY3JvbiwgMHgwMzA0KTsKLS0gICAgICAgIENBU0UgKGJyZXZlLCAw eDAzMDYpOwotLSAgICAgICAgQ0FTRSAoYWJvdmVkb3QsIDB4MDMwNyk7Ci0tICAgICAgICBDQVNF IChkaWFlcmVzaXMsIDB4MDMwOCk7Ci0tICAgICAgICBDQVNFIChob29rLCAweDAzMDkpOwotLSAg ICAgICAgQ0FTRSAoYWJvdmVyaW5nLCAweDAzMEEpOwotLSAgICAgICAgQ0FTRSAoZG91YmxlYWN1 dGUsIDB4MDMwQik7Ci0tICAgICAgICBDQVNFIChjYXJvbiwgMHgwMzBDKTsKLS0gICAgICAgIENB U0UgKGFib3ZlY29tbWEsIDB4MDMxMyk7ICAgICAgICAgLyogRXF1aXZhbGVudCB0byBwc2lsaSAq LwotLSAgICAgICAgQ0FTRSAoYWJvdmVyZXZlcnNlZGNvbW1hLCAweDAzMTQpOyAvKiBFcXVpdmFs ZW50IHRvIGRhc2lhICovCi0tICAgICAgICBDQVNFIChob3JuLCAweDAzMUIpOyAgICAvKiBMZWdh Y3kgdXNlIGZvciBwc2lsaSwgMHgzMTMgKG9yIDB4MzQzKS4gKi8KLS0gICAgICAgIENBU0UgKGJl bG93ZG90LCAweDAzMjMpOwotLSAgICAgICAgQ0FTRSAoY2VkaWxsYSwgMHgwMzI3KTsKLS0gICAg ICAgIENBU0UgKG9nb25laywgMHgwMzI4KTsgICAgLyogTGVnYWN5IHVzZSBmb3IgZGFzaWEsIDB4 MzE0LiovCi0tICAgICAgICBDQVNFIChpb3RhLCAweDAzNDUpOwotLSAgICAgICAgQ0FTRSAodm9p Y2VkX3NvdW5kLCAweDMwOTkpOyAgICAvKiBQZXIgTWFya3VzIEt1aG4ga2V5c3ltcy50eHQgZmls ZS4gKi8KLS0gICAgICAgIENBU0UgKHNlbWl2b2ljZWRfc291bmQsIDB4MzA5QSk7ICAgIC8qIFBl ciBNYXJrdXMgS3VobiBrZXlzeW1zLnR4dCBmaWxlLiAqLwotLQotLSAgICAgICAgLyogVGhlIGZv bGxvd2luZyBjYXNlcyBhcmUgdG8gYmUgcmVtb3ZlZCBvbmNlIHhrZXlib2FyZC1jb25maWcsCi0t ICAgICAgICAgICogeG9yZyBhcmUgZnVsbHkgdXBkYXRlZC4KLS0gICAgICAgICAgKi8KLS0gICAg ICAgICAgICAvKiBXb3JrYXJvdW5kIGZvciB0eXBvIGluIDEuNC54IHhzZXJ2ZXIteG9yZyAqLwot LSAgICAgICAgY2FzZSAweGZlNjY6IGNvbWJpbmF0aW9uX2J1ZmZlcltpKzFdID0gMHgzMTQ7IGJy ZWFrOwotLSAgICAgICAgLyogQ0FTRSAoZGFzaWEsIDB4MzE0KTsgKi8KLS0gICAgICAgIC8qIENB U0UgKHBlcmlzcG9tZW5pLCAweDM0Mik7ICovCi0tICAgICAgICAvKiBDQVNFIChwc2lsaSwgMHgz NDMpOyAqLwotLSN1bmRlZiBDQVNFCi0tICAgICAgICBkZWZhdWx0OgotLSAgICAgICAgICAgIGNv bWJpbmF0aW9uX2J1ZmZlcltpKzFdID0gaWJ1c19rZXl2YWxfdG9fdW5pY29kZSAoY29tcG9zZV9i dWZmZXJbaV0pOwotKyAgICAgICAgY29tYmluYXRpb25fYnVmZmVyW2krMV0gPSBpYnVzX2tleXN5 bV90b191bmljb2RlIChjb21wb3NlX2J1ZmZlcltpXSk7Ci0rICAgICAgICBpZiAoIWNvbWJpbmF0 aW9uX2J1ZmZlcltpKzFdKSB7Ci0rICAgICAgICAgICAgY29tYmluYXRpb25fYnVmZmVyW2krMV0g PQotKyAgICAgICAgICAgICAgICAgICAgaWJ1c19rZXl2YWxfdG9fdW5pY29kZSAoY29tcG9zZV9i dWZmZXJbaV0pOwotICAgICAgICAgfQotICAgICAgICAgaS0tOwotICAgICB9Ci1AQCAtODUzLDYg Kzg5OCw3IEBAIG5vX3NlcXVlbmNlX21hdGNoZXMgKElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSwK LSAKLSAgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV9jb21taXRfY2hhciAoc2ltcGxlLCBwcml2 LT50ZW50YXRpdmVfbWF0Y2gpOwotICAgICAgICAgcHJpdi0+Y29tcG9zZV9idWZmZXJbMF0gPSAw OwotKyAgICAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX3VwZGF0ZV9wcmVlZGl0X3RleHQgKHNpbXBs ZSk7Ci0gCi0gICAgICAgICBmb3IgKGk9MDsgaSA8IG5fY29tcG9zZSAtIGxlbiAtIDE7IGkrKykg ewotICAgICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV9wcm9jZXNzX2tleV9ldmVudCAoCi1A QCAtODcyLDIwICs5MTgsMjEgQEAgbm9fc2VxdWVuY2VfbWF0Y2hlcyAoSUJ1c0VuZ2luZVNpbXBs ZSAqc2ltcGxlLAotICAgICAgICAgaWYgKG5fY29tcG9zZSA+IDEpIHsKLSAgICAgICAgICAgICAv KiBJbnZhbGlkIHNlcXVlbmNlICovCi0gICAgICAgICAgICAgLy8gRklYTUUgYmVlcF93aW5kb3cg KGV2ZW50LT53aW5kb3cpOwotKyAgICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV91cGRhdGVf cHJlZWRpdF90ZXh0IChzaW1wbGUpOwotICAgICAgICAgICAgIHJldHVybiBUUlVFOwotICAgICAg ICAgfQotIAotKyAgICAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX3VwZGF0ZV9wcmVlZGl0X3RleHQg KHNpbXBsZSk7Ci0gICAgICAgICBjaCA9IGlidXNfa2V5dmFsX3RvX3VuaWNvZGUgKGtleXZhbCk7 Ci0gICAgICAgICAvKiBJQlVTX0NIQU5HRTogUkgjNzY5MTMzCi0gICAgICAgICAgKiBTaW5jZSB3 ZSB1c2UgaWJ1cyB4a2IgZW5naW5lcyBhcyB0aGUgZGlzYWJsZSBzdGF0ZSwKLSAgICAgICAgICAq IGRvIG5vdCBjb21taXQgdGhlIGNoYXJhY3RlcnMgbG9jYWxseSB3aXRob3V0IGluX2hleF9zZXF1 ZW5jZS4gKi8KLSAgICAgICAgIGlmIChjaCAhPSAwICYmICFnX3VuaWNoYXJfaXNjbnRybCAoY2gp ICYmCi0gICAgICAgICAgICAgcHJpdi0+aW5faGV4X3NlcXVlbmNlKSB7Ci0tICAgICAgICAgICAg aWJ1c19lbmdpbmVfc2ltcGxlX2NvbW1pdF9jaGFyIChzaW1wbGUsIGNoKTsKLSAgICAgICAgICAg ICByZXR1cm4gVFJVRTsKLS0gICAgICAgIH0KLS0gICAgICAgIGVsc2UKLSsgICAgICAgIH0gZWxz ZSB7Ci0gICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwotKyAgICAgICAgfQotICAgICB9Ci0gICAg IHJldHVybiBGQUxTRTsKLSB9Ci1AQCAtMTAyNyw2ICsxMDc0LDcgQEAgaWJ1c19lbmdpbmVfc2lt cGxlX3Byb2Nlc3Nfa2V5X2V2ZW50IChJQnVzRW5naW5lICplbmdpbmUsCi0gICAgICAgICAgICAg aWYgKHByaXYtPnRlbnRhdGl2ZV9tYXRjaCAmJgotICAgICAgICAgICAgICAgICBnX3VuaWNoYXJf dmFsaWRhdGUgKHByaXYtPnRlbnRhdGl2ZV9tYXRjaCkpIHsKLSAgICAgICAgICAgICAgICAgaWJ1 c19lbmdpbmVfc2ltcGxlX2NvbW1pdF9jaGFyIChzaW1wbGUsIHByaXYtPnRlbnRhdGl2ZV9tYXRj aCk7Ci0rICAgICAgICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV91cGRhdGVfcHJlZWRpdF90 ZXh0IChzaW1wbGUpOwotICAgICAgICAgICAgIH0gZWxzZSBpZiAobl9jb21wb3NlID09IDApIHsK LSAgICAgICAgICAgICAgICAgcHJpdi0+bW9kaWZpZXJzX2Ryb3BwZWQgPSBUUlVFOwotICAgICAg ICAgICAgIH0gZWxzZSB7Ci1AQCAtMTE3NiwxMiArMTIyNCwyMSBAQCBpYnVzX2VuZ2luZV9zaW1w bGVfcHJvY2Vzc19rZXlfZXZlbnQgKElCdXNFbmdpbmUgKmVuZ2luZSwKLSAKLSAgICAgICAgIHJl dHVybiBUUlVFOwotICAgICB9Ci0rICAgIGlmICghcHJpdi0+aW5faGV4X3NlcXVlbmNlICYmICFw cml2LT5pbl9lbW9qaV9zZXF1ZW5jZSAmJiBpc19iYWNrc3BhY2UpIHsKLSsgICAgICAgIGlmIChu X2NvbXBvc2UgPiAwKSB7Ci0rICAgICAgICAgICAgbl9jb21wb3NlLS07Ci0rICAgICAgICAgICAg cHJpdi0+Y29tcG9zZV9idWZmZXJbbl9jb21wb3NlXSA9IDA7Ci0rICAgICAgICAgICAgaWJ1c19l bmdpbmVfc2ltcGxlX3VwZGF0ZV9wcmVlZGl0X3RleHQgKHNpbXBsZSk7Ci0rICAgICAgICAgICAg cmV0dXJuIFRSVUU7Ci0rICAgICAgICB9Ci0rICAgIH0KLSAKLSAgICAgLyogQ2hlY2sgZm9yIGhl eCBzZXF1ZW5jZSByZXN0YXJ0ICovCi0gICAgIGlmIChwcml2LT5pbl9oZXhfc2VxdWVuY2UgJiYg aGF2ZV9oZXhfbW9kcyAmJiBpc19oZXhfc3RhcnQpIHsKLSAgICAgICAgIGlmIChwcml2LT50ZW50 YXRpdmVfbWF0Y2ggJiYKLSAgICAgICAgICAgICBnX3VuaWNoYXJfdmFsaWRhdGUgKHByaXYtPnRl bnRhdGl2ZV9tYXRjaCkpIHsKLSAgICAgICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfY29tbWl0 X2NoYXIgKHNpbXBsZSwgcHJpdi0+dGVudGF0aXZlX21hdGNoKTsKLSsgICAgICAgICAgICBpYnVz X2VuZ2luZV9zaW1wbGVfdXBkYXRlX3ByZWVkaXRfdGV4dCAoc2ltcGxlKTsKLSAgICAgICAgIH0K LSAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgIC8qIGludmFsaWQgaGV4IHNlcXVlbmNlICov Ci1AQCAtMTI4Myw2ICsxMzQwLDEyIEBAIGlidXNfZW5naW5lX3NpbXBsZV9wcm9jZXNzX2tleV9l dmVudCAoSUJ1c0VuZ2luZSAqZW5naW5lLAotICAgICAgICAgICAgIHJldHVybiBUUlVFOwotICAg ICAgICAgfQotICAgICB9IGVsc2UgewotKyAgICAgICAgaWYgKGlzX2VzY2FwZSkgewotKyAgICAg ICAgICAgIGlmIChuX2NvbXBvc2UgPiAwKSB7Ci0rICAgICAgICAgICAgICAgIGlidXNfZW5naW5l X3NpbXBsZV9yZXNldCAoZW5naW5lKTsKLSsgICAgICAgICAgICAgICAgcmV0dXJuIFRSVUU7Ci0r ICAgICAgICAgICAgfQotKyAgICAgICAgfQotICAgICAgICAgU0VUX0NPTVBPU0VfQlVGRkVSX0VM RU1FTlRfTkVYVCAocHJpdi0+Y29tcG9zZV9idWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBuX2NvbXBvc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBrZXl2YWwpOwotQEAgLTEzMDIsNiArMTM2NSw3IEBAIGlidXNfZW5n aW5lX3NpbXBsZV9wcm9jZXNzX2tleV9ldmVudCAoSUJ1c0VuZ2luZSAqZW5naW5lLAotICAgICAg ICAgICAgICAgICAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX2NvbW1pdF9jaGFyIChzaW1wbGUsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaXYtPnRlbnRhdGl2ZV9tYXRjaCk7Ci0gICAg ICAgICAgICAgICAgICAgICBwcml2LT5jb21wb3NlX2J1ZmZlclswXSA9IDA7Ci0rICAgICAgICAg ICAgICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfdXBkYXRlX3ByZWVkaXRfdGV4dCAoc2ltcGxl KTsKLSAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgIC8vIEZJ WE1FCi0gICAgICAgICAgICAgICAgICAgICAvKiBpbnZhbGlkIGhleCBzZXF1ZW5jZSAqLwotQEAg LTE0MTcsOSArMTQ4MSw4IEBAIGlidXNfZW5naW5lX3NpbXBsZV9wcm9jZXNzX2tleV9ldmVudCAo SUJ1c0VuZ2luZSAqZW5naW5lLAotICAgICAgICAgICAgIGlmIChjb21wb3NlX2ZpbmlzaCkgewot ICAgICAgICAgICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfY29tbWl0X2NoYXIgKHNpbXBsZSwg b3V0cHV0X2NoYXIpOwotICAgICAgICAgICAgICAgICBwcml2LT5jb21wb3NlX2J1ZmZlclswXSA9 IDA7Ci0tICAgICAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICAgICAgaWJ1c19lbmdpbmVf c2ltcGxlX3VwZGF0ZV9wcmVlZGl0X3RleHQgKHNpbXBsZSk7Ci0gICAgICAgICAgICAgfQotKyAg ICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV91cGRhdGVfcHJlZWRpdF90ZXh0IChzaW1wbGUp OwotICAgICAgICAgICAgIHJldHVybiBUUlVFOwotICAgICAgICAgfQotIAotQEAgLTE0MzAsNiAr MTQ5Myw3IEBAIGlidXNfZW5naW5lX3NpbXBsZV9wcm9jZXNzX2tleV9ldmVudCAoSUJ1c0VuZ2lu ZSAqZW5naW5lLAotICAgICAgICAgICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfY29tbWl0X2No YXIgKHNpbXBsZSwgb3V0cHV0X2NoYXIpOwotICAgICAgICAgICAgICAgICBwcml2LT5jb21wb3Nl X2J1ZmZlclswXSA9IDA7Ci0gICAgICAgICAgICAgfQotKyAgICAgICAgICAgIGlidXNfZW5naW5l X3NpbXBsZV91cGRhdGVfcHJlZWRpdF90ZXh0IChzaW1wbGUpOwotICAgICAgICAgICAgIHJldHVy biBUUlVFOwotICAgICAgICAgfQotICAgICB9Ci0tLSAKLTIuMTQuMwotCi1Gcm9tIDNhNjhkZWQx OTdiM2FkMmU0NWFjMDhmZTUyYzA1MTRhZmY5ODczNjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx Ci1Gcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci1EYXRlOiBGcmks IDI5IEp1biAyMDE4IDE2OjAyOjMyICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGlidXNlbmdpbmVz aW1wbGU6IERvIG5vdCBzaG93IGNvbWJpbmVkIGNoYXJhY3RlciBvbgotIGNvbXBvc2UgcHJlZWRp dAotCi1Tb21lIGFwcGxpY2F0aW9ucyBjb3VsZCBjb21iaW5lIHRoZWlyIGNvbW1pdHRlZCBzdHJp bmcgd2l0aCBjb21wb3NlCi1jaGFyYWN0ZXIgb24gcHJlZWRpdC4gRS5nLiBkZWFkX2dyYXZlIGFm dGVyICdlJyBvbiBmaXJlZm94Ci0KLUJVRz1odHRwczovL2dpdGh1Yi5jb20vaWJ1cy9pYnVzL2lz c3Vlcy8xOTM1Ci0tLS0KLSBzcmMvaWJ1c2VuZ2luZXNpbXBsZS5jIHwgMTE5ICsrKysrKysrKysr KysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwg NjMgaW5zZXJ0aW9ucygrKSwgNTYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvaWJ1 c2VuZ2luZXNpbXBsZS5jIGIvc3JjL2lidXNlbmdpbmVzaW1wbGUuYwotaW5kZXggNjFkZmI4OWYu LjY4ZDZmYjFlIDEwMDY0NAotLS0tIGEvc3JjL2lidXNlbmdpbmVzaW1wbGUuYwotKysrIGIvc3Jj L2lidXNlbmdpbmVzaW1wbGUuYwotQEAgLTIxOSw2NyArMjE5LDczIEBAIGlidXNfZW5naW5lX3Np bXBsZV9jb21taXRfY2hhciAoSUJ1c0VuZ2luZVNpbXBsZSAqc2ltcGxlLAotICAgICAgICAgICAg IGlidXNfdGV4dF9uZXdfZnJvbV91bmljaGFyIChjaCkpOwotIH0KLSAKLS0jZGVmaW5lIENPTVBP U0VfS0VZU1lNX1RPX1VOSUNIQVIoa2V5c3ltLCB1bmljaGFyKSB7ICAgICAgICAgICAgICAgICAg ICBcCi0tCi0gc3RhdGljIGd1bmljaGFyCi0taWJ1c19rZXlzeW1fdG9fdW5pY29kZSAoZ3VpbnQx NiBrZXlzeW0pIHsKLS0jZGVmaW5lIENBU0Uoa2V5c3ltX3N1ZmZpeCwgdW5pY29kZSkgXAotK2li dXNfa2V5c3ltX3RvX3VuaWNvZGUgKGd1aW50MTYgIGtleXN5bSwKLSsgICAgICAgICAgICAgICAg ICAgICAgICBnYm9vbGVhbiBjb21iaW5pbmcpIHsKLSsjZGVmaW5lIENBU0Uoa2V5c3ltX3N1ZmZp eCwgdW5pY29kZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAg ICBjYXNlIElCVVNfS0VZX2RlYWRfIyNrZXlzeW1fc3VmZml4OiByZXR1cm4gdW5pY29kZQotKyNk ZWZpbmUgQ0FTRV9DT01CSU5FKGtleXN5bV9zdWZmaXgsIGNvbWJpbmVkX3VuaWNvZGUsIGlzb2xh dGVkX3VuaWNvZGUpIFwKLSsgICAgICAgIGNhc2UgSUJVU19LRVlfZGVhZF8jI2tleXN5bV9zdWZm aXg6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgaWYgKGNvbWJp bmluZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAg ICAgICAgICAgICAgICByZXR1cm4gY29tYmluZWRfdW5pY29kZTsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgIHJldHVy biBpc29sYXRlZF91bmljb2RlCi0gICAgIHN3aXRjaCAoa2V5c3ltKSB7Ci0tICAgIENBU0UoYSwg MHgwMzA0MSk7Ci0tICAgIENBU0UoQSwgMHgwMzA0Mik7Ci0tICAgIENBU0UoaSwgMHgwMzA0Myk7 Ci0tICAgIENBU0UoSSwgMHgwMzA0NCk7Ci0tICAgIENBU0UodSwgMHgwMzA0NSk7Ci0tICAgIENB U0UoVSwgMHgwMzA0Nik7Ci0tICAgIENBU0UoZSwgMHgwMzA0Nyk7Ci0tICAgIENBU0UoRSwgMHgw MzA0OCk7Ci0tICAgIENBU0UobywgMHgwMzA0OSk7Ci0tICAgIENBU0UoTywgMHgwMzA0YSk7Ci0t ICAgIENBU0UoYWJvdmVjb21tYSwgICAgICAgICAgICAgICAgICAgIDB4MDMxMyk7Ci0tICAgIENB U0UoYWJvdmVkb3QsICAgICAgICAgICAgICAgICAgICAgIDB4MDMwNyk7Ci0tICAgIENBU0UoYWJv dmVyZXZlcnNlZGNvbW1hLCAgICAgICAgICAgIDB4MDMxNCk7Ci0tICAgIENBU0UoYWJvdmVyaW5n LCAgICAgICAgICAgICAgICAgICAgIDB4MDMwYSk7Ci0tICAgIENBU0UoYWN1dGUsICAgICAgICAg ICAgICAgICAgICAgICAgIDB4MDMwMSk7Ci0tICAgIENBU0UoYmVsb3dicmV2ZSwgICAgICAgICAg ICAgICAgICAgIDB4MDMyZSk7Ci0tICAgIENBU0UoYmVsb3djaXJjdW1mbGV4LCAgICAgICAgICAg ICAgIDB4MDMyZCk7Ci0tICAgIENBU0UoYmVsb3djb21tYSwgICAgICAgICAgICAgICAgICAgIDB4 MDMyNik7Ci0tICAgIENBU0UoYmVsb3dkaWFlcmVzaXMsICAgICAgICAgICAgICAgIDB4MDMyNCk7 Ci0tICAgIENBU0UoYmVsb3dkb3QsICAgICAgICAgICAgICAgICAgICAgIDB4MDMyMyk7Ci0tICAg IENBU0UoYmVsb3dtYWNyb24sICAgICAgICAgICAgICAgICAgIDB4MDMzMSk7Ci0tICAgIENBU0Uo YmVsb3dyaW5nLCAgICAgICAgICAgICAgICAgICAgIDB4MDMwYSk7Ci0tICAgIENBU0UoYmVsb3d0 aWxkZSwgICAgICAgICAgICAgICAgICAgIDB4MDMzMCk7Ci0tICAgIENBU0UoYnJldmUsICAgICAg ICAgICAgICAgICAgICAgICAgIDB4MDMwNik7Ci0tICAgIENBU0UoY2FwaXRhbF9zY2h3YSwgICAg ICAgICAgICAgICAgIDB4MDE4Zik7Ci0tICAgIENBU0UoY2Fyb24sICAgICAgICAgICAgICAgICAg ICAgICAgIDB4MDMwYyk7Ci0tICAgIENBU0UoY2VkaWxsYSwgICAgICAgICAgICAgICAgICAgICAg IDB4MDMyNyk7Ci0tICAgIENBU0UoY2lyY3VtZmxleCwgICAgICAgICAgICAgICAgICAgIDB4MDMw Mik7Ci0tICAgIENBU0UoY3VycmVuY3ksICAgICAgICAgICAgICAgICAgICAgIDB4MDBhNCk7Ci0r ICAgIENBU0UgKGEsIDB4MDMwNDEpOwotKyAgICBDQVNFIChBLCAweDAzMDQyKTsKLSsgICAgQ0FT RSAoaSwgMHgwMzA0Myk7Ci0rICAgIENBU0UgKEksIDB4MDMwNDQpOwotKyAgICBDQVNFICh1LCAw eDAzMDQ1KTsKLSsgICAgQ0FTRSAoVSwgMHgwMzA0Nik7Ci0rICAgIENBU0UgKGUsIDB4MDMwNDcp OwotKyAgICBDQVNFIChFLCAweDAzMDQ4KTsKLSsgICAgQ0FTRSAobywgMHgwMzA0OSk7Ci0rICAg IENBU0UgKE8sIDB4MDMwNEEpOwotKyAgICBDQVNFICAgICAgICAgKGFib3ZlY29tbWEsICAgICAg ICAgICAgICAgICAgIDB4MDMxMyk7Ci0rICAgIENBU0VfQ09NQklORSAoYWJvdmVkb3QsICAgICAg ICAgICAgICAgICAgICAgMHgwMzA3LCAweDAyRDkpOwotKyAgICBDQVNFICAgICAgICAgKGFib3Zl cmV2ZXJzZWRjb21tYSwgICAgICAgICAgIDB4MDMxNCk7Ci0rICAgIENBU0VfQ09NQklORSAoYWJv dmVyaW5nLCAgICAgICAgICAgICAgICAgICAgMHgwMzBBLCAweDAyREEpOwotKyAgICBDQVNFX0NP TUJJTkUgKGFjdXRlLCAgICAgICAgICAgICAgICAgICAgICAgIDB4MDMwMSwgMHgwMEI0KTsKLSsg ICAgQ0FTRSAgICAgICAgIChiZWxvd2JyZXZlLCAgICAgICAgICAgICAgICAgICAweDAzMkUpOwot KyAgICBDQVNFX0NPTUJJTkUgKGJlbG93Y2lyY3VtZmxleCwgICAgICAgICAgICAgIDB4MDMyRCwg MHhBNzg4KTsKLSsgICAgQ0FTRV9DT01CSU5FIChiZWxvd2NvbW1hLCAgICAgICAgICAgICAgICAg ICAweDAzMjYsIDB4MDAyQyk7Ci0rICAgIENBU0UgICAgICAgICAoYmVsb3dkaWFlcmVzaXMsICAg ICAgICAgICAgICAgMHgwMzI0KTsKLSsgICAgQ0FTRV9DT01CSU5FIChiZWxvd2RvdCwgICAgICAg ICAgICAgICAgICAgICAweDAzMjMsIDB4MDAyRSk7Ci0rICAgIENBU0VfQ09NQklORSAoYmVsb3dt YWNyb24sICAgICAgICAgICAgICAgICAgMHgwMzMxLCAweDAyQ0QpOwotKyAgICBDQVNFX0NPTUJJ TkUgKGJlbG93cmluZywgICAgICAgICAgICAgICAgICAgIDB4MDMwQSwgMHgwMkYzKTsKLSsgICAg Q0FTRV9DT01CSU5FIChiZWxvd3RpbGRlLCAgICAgICAgICAgICAgICAgICAweDAzMzAsIDB4MDJG Nyk7Ci0rICAgIENBU0VfQ09NQklORSAoYnJldmUsICAgICAgICAgICAgICAgICAgICAgICAgMHgw MzA2LCAweDAyRDgpOwotKyAgICBDQVNFX0NPTUJJTkUgKGNhcGl0YWxfc2Nod2EsICAgICAgICAg ICAgICAgIDB4MDE4RiwgMHgwNEQ4KTsKLSsgICAgQ0FTRV9DT01CSU5FIChjYXJvbiwgICAgICAg ICAgICAgICAgICAgICAgICAweDAzMEMsIDB4MDJDNyk7Ci0rICAgIENBU0VfQ09NQklORSAoY2Vk aWxsYSwgICAgICAgICAgICAgICAgICAgICAgMHgwMzI3LCAweDAwQjgpOwotKyAgICBDQVNFX0NP TUJJTkUgKGNpcmN1bWZsZXgsICAgICAgICAgICAgICAgICAgIDB4MDMwMiwgMHgwMDVFKTsKLSsg ICAgQ0FTRSAgICAgICAgIChjdXJyZW5jeSwgICAgICAgICAgICAgICAgICAgICAweDAwQTQpOwot ICAgICAvLyBJQlVTX0tFWV9kZWFkX2Rhc2lhID09IElCVVNfS0VZX2RlYWRfYWJvdmVyZXZlcnNl ZGNvbW1hCi0tICAgIENBU0UoZGlhZXJlc2lzLCAgICAgICAgICAgICAgICAgICAgIDB4MDMwOCk7 Ci0tICAgIENBU0UoZG91YmxlYWN1dGUsICAgICAgICAgICAgICAgICAgIDB4MDMwYik7Ci0tICAg IENBU0UoZG91YmxlZ3JhdmUsICAgICAgICAgICAgICAgICAgIDB4MDMwZik7Ci0tICAgIENBU0Uo Z3JhdmUsICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDMwMCk7Ci0tICAgIENBU0UoZ3JlZWss ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDNiMSk7Ci0tICAgIENBU0UoaG9vaywgICAgICAg ICAgICAgICAgICAgICAgICAgIDB4MDMwOSk7Ci0tICAgIENBU0UoaG9ybiwgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4MDMxYik7Ci0tICAgIENBU0UoaW52ZXJ0ZWRicmV2ZSwgICAgICAgICAg ICAgICAgIDB4MDMyZik7Ci0tICAgIENBU0UoaW90YSwgICAgICAgICAgICAgICAgICAgICAgICAg IDB4MDM0NSk7Ci0tICAgIENBU0UobWFjcm9uLCAgICAgICAgICAgICAgICAgICAgICAgIDB4MDMw NCk7Ci0tICAgIENBU0Uob2dvbmVrLCAgICAgICAgICAgICAgICAgICAgICAgIDB4MDMyOCk7Ci0r ICAgIENBU0VfQ09NQklORSAoZGlhZXJlc2lzLCAgICAgICAgICAgICAgICAgICAgMHgwMzA4LCAw eDAwQTgpOwotKyAgICBDQVNFX0NPTUJJTkUgKGRvdWJsZWFjdXRlLCAgICAgICAgICAgICAgICAg IDB4MDMwQiwgMHgwMkREKTsKLSsgICAgQ0FTRV9DT01CSU5FIChkb3VibGVncmF2ZSwgICAgICAg ICAgICAgICAgICAweDAzMEYsIDB4MDJGNSk7Ci0rICAgIENBU0VfQ09NQklORSAoZ3JhdmUsICAg ICAgICAgICAgICAgICAgICAgICAgMHgwMzAwLCAweDAwNjApOwotKyAgICBDQVNFICAgICAgICAg KGdyZWVrLCAgICAgICAgICAgICAgICAgICAgICAgIDB4MDNCQyk7Ci0rICAgIENBU0UgICAgICAg ICAoaG9vaywgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMzA5KTsKLSsgICAgQ0FTRSAgICAg ICAgIChob3JuLCAgICAgICAgICAgICAgICAgICAgICAgICAweDAzMUIpOwotKyAgICBDQVNFICAg ICAgICAgKGludmVydGVkYnJldmUsICAgICAgICAgICAgICAgIDB4MDMyRik7Ci0rICAgIENBU0Vf Q09NQklORSAoaW90YSwgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMzQ1LCAweDAzN0EpOwot KyAgICBDQVNFX0NPTUJJTkUgKG1hY3JvbiwgICAgICAgICAgICAgICAgICAgICAgIDB4MDMwNCwg MHgwMEFGKTsKLSsgICAgQ0FTRV9DT01CSU5FIChvZ29uZWssICAgICAgICAgICAgICAgICAgICAg ICAweDAzMjgsIDB4MDJEQik7Ci0gICAgIC8vIElCVVNfS0VZX2RlYWRfcGVyaXNwb21lbmkgPT0g SUJVU19LRVlfZGVhZF90aWxkZQotICAgICAvLyBJQlVTX0tFWV9kZWFkX3BzaWxpID09IElCVVNf S0VZX2RlYWRfYWJvdmVjb21tYQotLSAgICBDQVNFKHNlbWl2b2ljZWRfc291bmQsICAgICAgICAg ICAgICAweDMwOWEpOwotLSAgICBDQVNFKHNtYWxsX3NjaHdhLCAgICAgICAgICAgICAgICAgICAw eDFkNGEpOwotLSAgICBDQVNFKHN0cm9rZSwgICAgICAgICAgICAgICAgICAgICAgICAweDI5Zjgp OwotLSAgICBDQVNFKHRpbGRlLCAgICAgICAgICAgICAgICAgICAgICAgICAweDAzMDMpOwotLSAg ICBDQVNFKHZvaWNlZF9zb3VuZCwgICAgICAgICAgICAgICAgICAweDMwOTkpOwotKyAgICBDQVNF X0NPTUJJTkUgKHNlbWl2b2ljZWRfc291bmQsICAgICAgICAgICAgIDB4MzA5QSwgMHgzMDlDKTsK LSsgICAgQ0FTRV9DT01CSU5FIChzbWFsbF9zY2h3YSwgICAgICAgICAgICAgICAgICAweDFENEEs IDB4MDREOSk7Ci0rICAgIENBU0UgICAgICAgICAoc3Ryb2tlLCAgICAgICAgICAgICAgICAgICAg ICAgMHgwMDJGKTsKLSsgICAgQ0FTRV9DT01CSU5FICh0aWxkZSwgICAgICAgICAgICAgICAgICAg ICAgICAweDAzMDMsIDB4MDA3RSk7Ci0rICAgIENBU0VfQ09NQklORSAodm9pY2VkX3NvdW5kLCAg ICAgICAgICAgICAgICAgMHgzMDk5LCAweDMwOUIpOwotICAgICBjYXNlIElCVVNfS0VZX011bHRp X2tleToKLSAgICAgICAgIHJldHVybiAweDIzODQ7Ci0gICAgIGRlZmF1bHQ6OwotICAgICB9Ci0g ICAgIHJldHVybiAweDA7Ci0gI3VuZGVmIENBU0UKLSsjdW5kZWYgQ0FTRV9DT01CSU5FCi0gfQot IAotIHN0YXRpYyB2b2lkCi1AQCAtMzUyLDcgKzM1OCw3IEBAIGlidXNfZW5naW5lX3NpbXBsZV91 cGRhdGVfcHJlZWRpdF90ZXh0IChJQnVzRW5naW5lU2ltcGxlICpzaW1wbGUpCi0gICAgICAgICBp bnQgaGV4Y2hhcnMgPSAwOwotICAgICAgICAgd2hpbGUgKHByaXYtPmNvbXBvc2VfYnVmZmVyW2hl eGNoYXJzXSAhPSAwKSB7Ci0gICAgICAgICAgICAgZ3VpbnQxNiBrZXlzeW09IHByaXYtPmNvbXBv c2VfYnVmZmVyW2hleGNoYXJzXTsKLS0gICAgICAgICAgICBndW5pY2hhciB1bmljaGFyID0gaWJ1 c19rZXlzeW1fdG9fdW5pY29kZSAoa2V5c3ltKTsKLSsgICAgICAgICAgICBndW5pY2hhciB1bmlj aGFyID0gaWJ1c19rZXlzeW1fdG9fdW5pY29kZSAoa2V5c3ltLCBGQUxTRSk7Ci0gICAgICAgICAg ICAgaWYgKHVuaWNoYXIgPiAwKQotICAgICAgICAgICAgICAgICBvdXRidWZbbGVuXSA9IHVuaWNo YXI7Ci0gICAgICAgICAgICAgZWxzZQotQEAgLTg0NywxMyArODUzLDE0IEBAIGlidXNfY2hlY2tf YWxnb3JpdGhtaWNhbGx5IChjb25zdCBndWludDE2ICpjb21wb3NlX2J1ZmZlciwKLSAgICAgICAg IGNvbWJpbmF0aW9uX2J1ZmZlcltuX2NvbXBvc2VdID0gMDsKLSAgICAgICAgIGktLTsKLSAgICAg ICAgIHdoaWxlIChpID49IDApIHsKLS0gICAgICAgIGNvbWJpbmF0aW9uX2J1ZmZlcltpKzFdID0g aWJ1c19rZXlzeW1fdG9fdW5pY29kZSAoY29tcG9zZV9idWZmZXJbaV0pOwotLSAgICAgICAgaWYg KCFjb21iaW5hdGlvbl9idWZmZXJbaSsxXSkgewotLSAgICAgICAgICAgIGNvbWJpbmF0aW9uX2J1 ZmZlcltpKzFdID0KLS0gICAgICAgICAgICAgICAgICAgIGlidXNfa2V5dmFsX3RvX3VuaWNvZGUg KGNvbXBvc2VfYnVmZmVyW2ldKTsKLSsgICAgICAgICAgICBjb21iaW5hdGlvbl9idWZmZXJbaSsx XSA9IGlidXNfa2V5c3ltX3RvX3VuaWNvZGUgKGNvbXBvc2VfYnVmZmVyW2ldLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJV RSk7Ci0rICAgICAgICAgICAgaWYgKCFjb21iaW5hdGlvbl9idWZmZXJbaSsxXSkgewotKyAgICAg ICAgICAgICAgICBjb21iaW5hdGlvbl9idWZmZXJbaSsxXSA9Ci0rICAgICAgICAgICAgICAgICAg ICAgICAgaWJ1c19rZXl2YWxfdG9fdW5pY29kZSAoY29tcG9zZV9idWZmZXJbaV0pOwotKyAgICAg ICAgICAgIH0KLSsgICAgICAgICAgICBpLS07Ci0gICAgICAgICB9Ci0tICAgICAgICBpLS07Ci0t ICAgIH0KLSAKLSAgICAgICAgIC8qIElmIHRoZSBidWZmZXIgbm9ybWFsaXplcyB0byBhIHNpbmds ZSBjaGFyYWN0ZXIsCi0gICAgICAgICAgKiB0aGVuIG1vZGlmeSB0aGUgb3JkZXIgb2YgY29tYmlu YXRpb25fYnVmZmVyIGFjY29yZGluZ2x5LCBpZiBuZWNlc3NhcnksCi0tLSAKLTIuMTQuMwotCi1G cm9tIGNhZmZlYWVlZTViZTEyMTcxMzEwNGZiYTMzMWI5Y2YzMDcyNmFhOTEgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCi1Gcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+ Ci1EYXRlOiBGcmksIDI5IEp1biAyMDE4IDE2OjA2OjUyICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hd IHBhbmVsYmluZGluZzogRml4IFNFR1YgaW4gcGFuZWxfYmluZGluZ19wYXJzZV9hY2NlbGVyYXRv cgotCi1wYW5lbF9iaW5kaW5nX3BhcnNlX2FjY2VsZXJhdG9yKCkgY291bGQgcmV0dXJuIE5VTEwg b2YgdGhlIHVub3duZWQKLUlCdXMuUHJvY2Vzc0tleUV2ZW50RGF0YSB3aXRoIGdjYyBvcHRpbWl6 YXRpb24uCi1TaW5jZSBWYWxhIGRvZXMgbm90IHByb3ZpY2UgYSBzdGF0aWMgbG9jYWwgdmFyaWFi bGUsIHRoZSB2YXJpYWJsZSBpcwotbW92ZWQgdG8gdGhlIGNsYXNzIG1lbWJlciB0byBmaXggdGhp cyBTRUdWLgotQWxzbyBmaXhlZCBhbiBpbmZpbml0ZSBsb29wIHRvIHNob3cgYSBjb21wb3NlIHBy ZWVkaXQgaW4geHRlcm0uCi1BbHNvIGEgTlVMTCBwcmVlZGl0IGlzIGZpeGVkIGluIHRoZSBmaXJz dCBlbW9qaSBjYW5kaWRhdGUgZnJvbSB0aGUKLWVtb2ppIGNhdGVnb3J5IHdpbmRvdy4KLS0tLQot IGJ1cy9pbnB1dGNvbnRleHQuYyAgICAgICAgfCAgOSArKysrKysrKysKLSBidXMvcGFuZWxwcm94 eS5jICAgICAgICAgIHwgMzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0K LSB1aS9ndGszL3BhbmVsYmluZGluZy52YWxhIHwgMjggKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLQotIDMgZmlsZXMgY2hhbmdlZCwgNjEgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0p Ci0KLWRpZmYgLS1naXQgYS9idXMvaW5wdXRjb250ZXh0LmMgYi9idXMvaW5wdXRjb250ZXh0LmMK LWluZGV4IGJmOWVhZmNmLi45ODYzOWEyNCAxMDA2NDQKLS0tLSBhL2J1cy9pbnB1dGNvbnRleHQu YwotKysrIGIvYnVzL2lucHV0Y29udGV4dC5jCi1AQCAtMTczMCw2ICsxNzMwLDE1IEBAIGJ1c19p bnB1dF9jb250ZXh0X2hpZGVfYXV4aWxpYXJ5X3RleHQgKEJ1c0lucHV0Q29udGV4dCAqY29udGV4 dCkKLSAgICAgfQotIH0KLSAKLSsvKioKLSsgKiBidXNfaW5wdXRfY29udGV4dF91cGRhdGVfbG9v a3VwX3RhYmxlOgotKyAqIEBjb250ZXh0OiAjQnVzSW5wdXRDb250ZXh0Ci0rICogQHRhYmxlOiAj SUJ1c0xvb2t1cFRhYmxlCi0rICogQHZpc2libGU6ICVUUlVFIGlmIHRoZSBsb29rdXAgdGFibGUg aXMgdmlzaWJsZSwgb3RoZXJ3aXNlICVGQUxTRS4KLSsgKiBAaXNfZXh0ZW5zaW9uOiAlVFJVRSBp ZiB0aGUgbG9va3VwIHRhYmxlIGlzIGNhbGxlZCBieSBhIHBhbmVsIGV4dGVuc2lvbi4KLSsgKiAg ICAgICAgICAgICAgICAlRkFMU0UgaWYgaXQncyBjYWxsZWQgYnkgYW4gZW5naW5lLgotKyAqIEku ZS4gaXNfZXh0ZW5zaW9uX2xvb2t1cF90YWJsZSBtZWFucyB0aGUgb3duZXIgb2YgdGhlIGxvb2t1 cCB0YWJsZS4KLSsgKi8KLSB2b2lkCi0gYnVzX2lucHV0X2NvbnRleHRfdXBkYXRlX2xvb2t1cF90 YWJsZSAoQnVzSW5wdXRDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIElCdXNMb29rdXBUYWJsZSAqdGFibGUsCi1kaWZmIC0tZ2l0IGEvYnVz L3BhbmVscHJveHkuYyBiL2J1cy9wYW5lbHByb3h5LmMKLWluZGV4IDFjMGZjY2EyLi4zZTZkNWJl MiAxMDA2NDQKLS0tLSBhL2J1cy9wYW5lbHByb3h5LmMKLSsrKyBiL2J1cy9wYW5lbHByb3h5LmMK LUBAIC03NDMsNiArNzQzLDE2IEBAIF9jb250ZXh0X3VwZGF0ZV9wcmVlZGl0X3RleHRfY2IgKEJ1 c0lucHV0Q29udGV4dCAqY29udGV4dCwKLSAKLSAgICAgZ19yZXR1cm5faWZfZmFpbCAocGFuZWwt PmZvY3VzZWRfY29udGV4dCA9PSBjb250ZXh0KTsKLSAKLSsgICAgLyogVGhlIGNhbGxiYWNrIGlz IGNhbGxlZCB3aXRoIFgxMSBhcHBsaWNhdGlvbnMgYnV0Ci0rICAgICAqIHRoZSBjYWxsYmFjayBp cyBub3QgY2FsbGVkIGZvciBleHRlbnNpb25zIGFuZCBwYW5lbAotKyAgICAgKiBleHRlbnNpb25z IGFyZSBhbHdheXMgY2FsbHMgYnkKLSsgICAgICogYnVzX3BhbmVsX3Byb3h5X3VwZGF0ZV9wcmVl ZGl0X3RleHQoKSBkaXJlY3RseQotKyAgICAgKiBiZWNhdXNlIHBhbmVsIGV4dGVuc2lvbnMgZm93 YXJkIFVwZGF0ZVByZWVkaXRUZXh0IHRvCi0rICAgICAqIFVwZGF0ZVByZWVkaXRUZXh0UmVjZWl2 ZWQgYW5kIGl0IGNhbiBiZSBhbiBpbmZpbml0ZQotKyAgICAgKiBsb29wLgotKyAgICAgKi8KLSsg ICAgaWYgKHBhbmVsLT5wYW5lbF90eXBlICE9IFBBTkVMX1RZUEVfUEFORUwpCi0rICAgICAgICBy ZXR1cm47Ci0gICAgIGJ1c19wYW5lbF9wcm94eV91cGRhdGVfcHJlZWRpdF90ZXh0IChwYW5lbCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3JfcG9zLAotQEAgLTg0Nyw4 ICs4NTcsMzEgQEAgX2NvbnRleHRfc2V0X2NvbnRlbnRfdHlwZV9jYiAoQnVzSW5wdXRDb250ZXh0 ICpjb250ZXh0LAotICAgICAgICAgYnVzX3BhbmVsX3Byb3h5XyMjbmFtZSAocGFuZWwpOyAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0gICAgIH0KLSAKLS1ERUZJTkVfRlVOQ1RJT04gKHNob3df cHJlZWRpdF90ZXh0KQotLURFRklORV9GVU5DVElPTiAoaGlkZV9wcmVlZGl0X3RleHQpCi0rI2Rl ZmluZSBERUZJTkVfRlVOQ1RJT05fTk9fRVhURU5TSU9OKG5hbWUpICAgICAgICAgICAgICAgICAg ICAgIFwKLSsgICAgc3RhdGljIHZvaWQgX2NvbnRleHRfIyNuYW1lIyNfY2IgKEJ1c0lucHV0Q29u dGV4dCAqY29udGV4dCwgXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg QnVzUGFuZWxQcm94eSAgICpwYW5lbCkgICBcCi0rICAgIHsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgIGdfYXNzZXJ0 IChCVVNfSVNfSU5QVVRfQ09OVEVYVCAoY29udGV4dCkpOyAgICAgICAgICAgICAgXAotKyAgICAg ICAgZ19hc3NlcnQgKEJVU19JU19QQU5FTF9QUk9YWSAocGFuZWwpKTsgICAgICAgICAgICAgICAg ICBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSsgICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwgKHBhbmVsLT5mb2N1c2Vk X2NvbnRleHQgPT0gY29udGV4dCk7ICAgXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAvKiBUaGUgY2Fs bGJhY2sgaXMgY2FsbGVkIHdpdGggWDExIGFwcGxpY2F0aW9ucyBidXQgICAgIFwKLSsgICAgICAg ICAqIHRoZSBjYWxsYmFjayBpcyBub3QgY2FsbGVkIGZvciBleHRlbnNpb25zIGFuZCBwYW5lbCAg XAotKyAgICAgICAgICogZXh0ZW5zaW9ucyBhcmUgYWx3YXlzIGNhbGxzIGJ5ICAgICAgICAgICAg ICAgICAgICAgICBcCi0rICAgICAgICAgKiBidXNfcGFuZWxfcHJveHlfdXBkYXRlX3ByZWVkaXRf dGV4dCgpIGRpcmVjdGx5ICAgICAgIFwKLSsgICAgICAgICAqIGJlY2F1c2UgcGFuZWwgZXh0ZW5z aW9ucyBmb3dhcmQgVXBkYXRlUHJlZWRpdFRleHQgdG8gXAotKyAgICAgICAgICogVXBkYXRlUHJl ZWRpdFRleHRSZWNlaXZlZCBhbmQgaXQgY2FuIGJlIGFuIGluZmluaXRlICBcCi0rICAgICAgICAg KiBsb29wLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LSsgICAgICAgICAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotKyAgICAgICAgaWYgKHBhbmVsLT5wYW5lbF90eXBlICE9IFBBTkVMX1RZUEVf UEFORUwpICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgcmV0dXJuOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgIGJ1c19wYW5lbF9wcm94 eV8jI25hbWUgKHBhbmVsKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICB9Ci0rCi0r Ci0rREVGSU5FX0ZVTkNUSU9OX05PX0VYVEVOU0lPTiAoc2hvd19wcmVlZGl0X3RleHQpCi0rREVG SU5FX0ZVTkNUSU9OX05PX0VYVEVOU0lPTiAoaGlkZV9wcmVlZGl0X3RleHQpCi0gREVGSU5FX0ZV TkNUSU9OIChzaG93X2F1eGlsaWFyeV90ZXh0KQotIERFRklORV9GVU5DVElPTiAoaGlkZV9hdXhp bGlhcnlfdGV4dCkKLSBERUZJTkVfRlVOQ1RJT04gKHNob3dfbG9va3VwX3RhYmxlKQotQEAgLTg2 MCw2ICs4OTMsNyBAQCBERUZJTkVfRlVOQ1RJT04gKGN1cnNvcl9kb3duX2xvb2t1cF90YWJsZSkK LSBERUZJTkVfRlVOQ1RJT04gKHN0YXRlX2NoYW5nZWQpCi0gCi0gI3VuZGVmIERFRklORV9GVU5D VElPTgotKyN1bmRlZiBERUZJTkVfRlVOQ1RJT05fTk9fRVhURU5TSU9OCi0gCi0gc3RhdGljIGNv bnN0IHN0cnVjdCB7Ci0gICAgIGdjaGFyICpuYW1lOwotZGlmZiAtLWdpdCBhL3VpL2d0azMvcGFu ZWxiaW5kaW5nLnZhbGEgYi91aS9ndGszL3BhbmVsYmluZGluZy52YWxhCi1pbmRleCA1MmI3OGMx Ny4uOTUxMTViMTMgMTAwNjQ0Ci0tLS0gYS91aS9ndGszL3BhbmVsYmluZGluZy52YWxhCi0rKysg Yi91aS9ndGszL3BhbmVsYmluZGluZy52YWxhCi1AQCAtMjI3LDYgKzIyNyw4IEBAIGNsYXNzIFBh bmVsQmluZGluZyA6IElCdXMuUGFuZWxTZXJ2aWNlIHsKLSAgICAgcHJpdmF0ZSBib29sIG1fZW5h YmxlX2V4dGVuc2lvbjsKLSAgICAgcHJpdmF0ZSBzdHJpbmcgbV9leHRlbnNpb25fbmFtZSA9ICIi OwotICAgICBwcml2YXRlIFByZWVkaXQgbV9wcmVlZGl0OwotKyAgICBwcml2YXRlIElCdXMuUHJv Y2Vzc0tleUV2ZW50RGF0YSBtX2tleV9ldmVudF9kYXRhID0KLSsgICAgICAgICAgICBJQnVzLlBy b2Nlc3NLZXlFdmVudERhdGEoKTsKLSAKLSAgICAgcHVibGljIFBhbmVsQmluZGluZyhJQnVzLkJ1 cyBidXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgR3RrLkFwcGxpY2F0aW9uIGFwcGxpY2F0 aW9uKSB7Ci1AQCAtMzExLDI0ICszMTMsMjQgQEAgY2xhc3MgUGFuZWxCaW5kaW5nIDogSUJ1cy5Q YW5lbFNlcnZpY2UgewotICAgICB9Ci0gCi0gCi0tICAgIHByaXZhdGUgdW5vd25lZAotLSAgICBJ QnVzLlByb2Nlc3NLZXlFdmVudERhdGE/IHBhcnNlX2FjY2VsZXJhdG9yKHN0cmluZyBhY2NlbGVy YXRvcikgewotLSAgICAgICAgSUJ1cy5Qcm9jZXNzS2V5RXZlbnREYXRhIGtleSA9IHt9OwotKyAg ICAvLyBSZXR1cm5pbmcgdW5vd25lZCBJQnVzLktleUV2ZW50RGF0YSBjYXVzZXMgTlVMTCB3aXRo IGdjYyBvcHRpbWl6YXRpb24KLSsgICAgLy8gYW5kIHVzZSBtX2tleV9ldmVudF9kYXRhLgotKyAg ICBwcml2YXRlIHZvaWQgcGFyc2VfYWNjZWxlcmF0b3Ioc3RyaW5nIGFjY2VsZXJhdG9yKSB7Ci0r ICAgICAgICBtX2tleV9ldmVudF9kYXRhID0ge307Ci0gICAgICAgICB1aW50IGtleXN5bSA9IDA7 Ci0gICAgICAgICBJQnVzLk1vZGlmaWVyVHlwZSBtb2RpZmllcnMgPSAwOwotICAgICAgICAgSUJ1 cy5hY2NlbGVyYXRvcl9wYXJzZShhY2NlbGVyYXRvciwKLSAgICAgICAgICAgICAgICAgb3V0IGtl eXN5bSwgb3V0IG1vZGlmaWVycyk7Ci0gICAgICAgICBpZiAoa2V5c3ltID09IDBVICYmIG1vZGlm aWVycyA9PSAwKSB7Ci0gICAgICAgICAgICAgd2FybmluZygiRmFpbGVkIHRvIHBhcnNlIHNob3J0 Y3V0IGtleSAnJXMnIi5wcmludGYoYWNjZWxlcmF0b3IpKTsKLS0gICAgICAgICAgICByZXR1cm4g bnVsbDsKLSsgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICB9Ci0gICAgICAgICBpZiAoKG1v ZGlmaWVycyAmIElCdXMuTW9kaWZpZXJUeXBlLlNVUEVSX01BU0spICE9IDApIHsKLSAgICAgICAg ICAgICBtb2RpZmllcnMgXj0gSUJ1cy5Nb2RpZmllclR5cGUuU1VQRVJfTUFTSzsKLSAgICAgICAg ICAgICBtb2RpZmllcnMgfD0gSUJ1cy5Nb2RpZmllclR5cGUuTU9ENF9NQVNLOwotICAgICAgICAg fQotLSAgICAgICAga2V5LmtleXZhbCA9IGtleXN5bTsKLS0gICAgICAgIGtleS5zdGF0ZSA9IG1v ZGlmaWVyczsKLS0gICAgICAgIHJldHVybiBrZXk7Ci0rICAgICAgICBtX2tleV9ldmVudF9kYXRh LmtleXZhbCA9IGtleXN5bTsKLSsgICAgICAgIG1fa2V5X2V2ZW50X2RhdGEuc3RhdGUgPSBtb2Rp ZmllcnM7Ci0gICAgIH0KLSAKLSAKLUBAIC0zMzcsOCArMzM5LDggQEAgY2xhc3MgUGFuZWxCaW5k aW5nIDogSUJ1cy5QYW5lbFNlcnZpY2UgewotICAgICAgICAgSUJ1cy5Qcm9jZXNzS2V5RXZlbnRE YXRhIGtleTsKLSAgICAgICAgIHN0cmluZ1tdIGFjY2VsZXJhdG9ycyA9IG1fc2V0dGluZ3NfZW1v amkuZ2V0X3N0cnYoImhvdGtleSIpOwotICAgICAgICAgZm9yZWFjaCAodmFyIGFjY2VsZXJhdG9y IGluIGFjY2VsZXJhdG9ycykgewotLSAgICAgICAgICAgIGtleSA9IHBhcnNlX2FjY2VsZXJhdG9y KGFjY2VsZXJhdG9yKTsKLS0gICAgICAgICAgICBlbW9qaV9rZXlzICs9IGtleTsKLSsgICAgICAg ICAgICBwYXJzZV9hY2NlbGVyYXRvcihhY2NlbGVyYXRvcik7Ci0rICAgICAgICAgICAgZW1vamlf a2V5cyArPSBtX2tleV9ldmVudF9kYXRhOwotICAgICAgICAgfQotIAotICAgICAgICAgLyogU2lu Y2Uge30gaXMgbm90IGFsbG9jYXRlZCwgcGFyc2VfYWNjZWxlcmF0b3IoKSBzaG91bGQgYmUgdW5v d25lZC4gKi8KLUBAIC0zNDgsOCArMzUwLDggQEAgY2xhc3MgUGFuZWxCaW5kaW5nIDogSUJ1cy5Q YW5lbFNlcnZpY2UgewotICAgICAgICAgSUJ1cy5Qcm9jZXNzS2V5RXZlbnREYXRhW10gdW5pY29k ZV9rZXlzID0ge307Ci0gICAgICAgICBhY2NlbGVyYXRvcnMgPSBtX3NldHRpbmdzX2Vtb2ppLmdl dF9zdHJ2KCJ1bmljb2RlLWhvdGtleSIpOwotICAgICAgICAgZm9yZWFjaCAodmFyIGFjY2VsZXJh dG9yIGluIGFjY2VsZXJhdG9ycykgewotLSAgICAgICAgICAgIGtleSA9IHBhcnNlX2FjY2VsZXJh dG9yKGFjY2VsZXJhdG9yKTsKLS0gICAgICAgICAgICB1bmljb2RlX2tleXMgKz0ga2V5OwotKyAg ICAgICAgICAgIHBhcnNlX2FjY2VsZXJhdG9yKGFjY2VsZXJhdG9yKTsKLSsgICAgICAgICAgICB1 bmljb2RlX2tleXMgKz0gbV9rZXlfZXZlbnRfZGF0YTsKLSAgICAgICAgIH0KLSAgICAgICAgIGtl eSA9IHt9OwotICAgICAgICAgdW5pY29kZV9rZXlzICs9IGtleTsKLUBAIC01NDQsOCArNTQ2LDEw IEBAIGNsYXNzIFBhbmVsQmluZGluZyA6IElCdXMuUGFuZWxTZXJ2aWNlIHsKLSAgICAgcHJpdmF0 ZSBib29sIGtleV9wcmVzc19lbnRlcigpIHsKLSAgICAgICAgIGlmIChtX2V4dGVuc2lvbl9uYW1l ICE9ICJ1bmljb2RlIiAmJiBpc19lbW9qaV9sb29rdXBfdGFibGUoKSkgewotICAgICAgICAgICAg IC8vIENoZWNrIGlmIHZhcmlhdHMgZXhpc3QKLS0gICAgICAgICAgICBpZiAobV9lbW9qaWVyLmtl eV9wcmVzc19lbnRlcigpKQotKyAgICAgICAgICAgIGlmIChtX2Vtb2ppZXIua2V5X3ByZXNzX2Vu dGVyKCkpIHsKLSsgICAgICAgICAgICAgICAgY29udmVydF9wcmVlZGl0X3RleHQoKTsKLSAgICAg ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0rICAgICAgICAgICAgfQotICAgICAgICAgfQotICAg ICAgICAgSUJ1cy5UZXh0IHRleHQgPSBtX3ByZWVkaXQuZ2V0X2NvbW1pdF90ZXh0KCk7Ci0gICAg ICAgICBjb21taXRfdGV4dF91cGRhdGVfZmF2b3JpdGVzKHRleHQpOwotLS0gCi0yLjE0LjMKLQot RnJvbSA2YjQ3ZTQxZDY2NDk3ZGQzNTc1MmE4OWVhODBlNGJhYzU1YjY0ZTQ1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQotRnJvbTogVGFrdXJvIEFzaGllIDxhc2hpZUBjbGVhci1jb2RlLmNvbT4K LURhdGU6IEZyaSwgMjAgSnVsIDIwMTggMTI6MzA6MDkgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0g UmVtb3ZlIGEgbWlzbGVhZGluZyAiY29uc3QiIG1vZGlmaWVyIG9mIGEgcmV0dXJuIHZhbHVlCi0K LWlidXNfa2V5X2V2ZW50X3RvX3N0cmluZygpIHVzZXMgZ19zdHJpbmdfZnJlZShzdHIsIEZBTFNF KSB0byByZXR1cm4KLWEgc3RyaW5nIHNvIHRoYXQgdXNlcnMgbXVzdCBmcmVlIGl0LiBUbyBjbGFy aWZ5IGl0LCB0aGUgY29uc3QKLW1vZGlmaWVyIHNob3VsZCBiZSByZW1vdmVkLgotLS0tCi0gc3Jj L2lidXNrZXluYW1lcy5jIHwgMiArLQotIHNyYy9pYnVzc2hhcmUuaCAgICB8IDIgKy0KLSAyIGZp bGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdp dCBhL3NyYy9pYnVza2V5bmFtZXMuYyBiL3NyYy9pYnVza2V5bmFtZXMuYwotaW5kZXggZmU3ODM2 ZWUuLmMzNjY1MTI3IDEwMDY0NAotLS0tIGEvc3JjL2lidXNrZXluYW1lcy5jCi0rKysgYi9zcmMv aWJ1c2tleW5hbWVzLmMKLUBAIC0xMjQsNyArMTI0LDcgQEAgbW9kaWZpZXJfbmFtZVtdID0gewot ICAgICBOVUxMLCAgICAgICAgLy8gMzEKLSB9OwotIAotLWNvbnN0IGdjaGFyICoKLStnY2hhciAq Ci0gaWJ1c19rZXlfZXZlbnRfdG9fc3RyaW5nIChndWludCBrZXl2YWwsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICBndWludCBtb2RpZmllcnMpCi0gewotZGlmZiAtLWdpdCBhL3NyYy9pYnVz c2hhcmUuaCBiL3NyYy9pYnVzc2hhcmUuaAotaW5kZXggNGY1YTMwNmIuLmQ3MGFmMjlmIDEwMDY0 NAotLS0tIGEvc3JjL2lidXNzaGFyZS5oCi0rKysgYi9zcmMvaWJ1c3NoYXJlLmgKLUBAIC0zMjYs NyArMzI2LDcgQEAgdm9pZCAgICAgICAgICAgICBpYnVzX2ZyZWVfc3RydiAgICAgICAgIChnY2hh ciAgICAgICAgICAqKnN0cnYpCi0gICoKLSAgKiBSZXR1cm5zOiBUaGUgbmFtZSBvZiBhIGtleSBz eW1ib2wgYW5kIG1vZGlmaWVyLgotICAqLwotLWNvbnN0IGdjaGFyICAgICAqaWJ1c19rZXlfZXZl bnRfdG9fc3RyaW5nCi0rZ2NoYXIgICAgICAgICAgICppYnVzX2tleV9ldmVudF90b19zdHJpbmcK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGd1aW50ICAgICAgICAg ICBrZXl2YWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWlu dCAgICAgICAgICAgbW9kaWZpZXJzKTsKLSAKLS0tIAotMi4xNy4xCi0KLUZyb20gMGRkZTIzOWEz Yzc4NmRjYzQ3OWUzMTAzY2NkNDk5MzhmY2I0NzE5MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK LUZyb206IEtlbnRhcm8gSGF5YXNoaSA8aGF5YXNoaUBjbGVhci1jb2RlLmNvbT4KLURhdGU6IFR1 ZSwgMjQgSnVsIDIwMTggMTU6MjA6NTEgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gYnVzOiB3YXJu IGRlcHJlY2F0ZWQgLS1tZW0tcHJvZmlsZSBvcHRpb24KLQotU2luY2UgR0xpYiAyLjQ2LCBtZW1v cnkgcHJvZmlsaW5nIGZlYXR1cmUgZG9lcyBub3Qgd29yayBhbnltb3JlLgotCi1HTGliIDIuNDYg b3IgbGF0ZXIgbWVhbnMgdGhhdCBVYnVudHUgMTYuMDQgb3IgbGF0ZXIuIFVidW50dQotMTQuMDQg KHRydXN0eSkgYXJlIHN0aWxsIHN1cHBvcnRlZCBhcyBMVFMgcGhhc2UsIGJ1dCBpdCBzZWVtcyB0 aGF0Ci1HTGliIGlzIG9sZCBlbm91Z2ggKDIuNDApIHRvIGRyb3Agc3VwcG9ydC4KLQotQXMgYSBy ZXN1bHQ6Ci0KLSAgKiBvbGRlciB0aGFuIEdMaWIgMi40NjogSnVzdCBkcm9wIHN1cHBvcnQKLSAg KiBHTGliIDIuNDYgb3IgbGF0ZXI6IFNob3cgYSB3YXJuaW5nIG1lc3NhZ2UgaWYgLS1tZW0tcHJv ZmlsZSBpcwotICAgIHVzZWQuCi0tLS0KLSBidXMvbWFpbi5jICAgfCAxNSArLS0tLS0tLS0tLS0t LS0KLSBjb25maWd1cmUuYWMgfCAgNCArKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlv bnMoKyksIDE2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYnVzL21haW4uYyBiL2J1cy9t YWluLmMKLWluZGV4IDJmYjM3YjY5Li42ZjFmMzljYSAxMDA2NDQKLS0tLSBhL2J1cy9tYWluLmMK LSsrKyBiL2J1cy9tYWluLmMKLUBAIC0xNjAsMTggKzE2MCw2IEBAIGRhZW1vbiAoZ2ludCBub2No ZGlyLCBnaW50IG5vY2xvc2UpCi0gfQotICNlbmRpZgotIAotLS8qCi0tICogX3NpZ191c3IyX2hh bmRsZXI6Ci0tICogQHNpZzogdGhlIHNpZ25hbCBudW1iZXIsIHdoaWNoIGlzIHVzdWFsbHkgU0lH VVNSMi4KLS0gKgotLSAqIEEgc2lnbmFsIGhhbmRsZXIgZm9yIFNJR1VTUjIgc2lnbmFsLiBEdW1w IGEgc3VtbWFyeSBvZiBtZW1vcnkgdXNhZ2UgdG8gc3RkZXJyLgotLSAqLwotLXN0YXRpYyB2b2lk Ci0tX3NpZ191c3IyX2hhbmRsZXIgKGludCBzaWcpCi0tewotLSAgICBnX21lbV9wcm9maWxlICgp OwotLX0KLS0KLSBnaW50Ci0gbWFpbiAoZ2ludCBhcmdjLCBnY2hhciAqKmFyZ3YpCi0gewotQEAg LTE5Niw4ICsxODQsNyBAQCBtYWluIChnaW50IGFyZ2MsIGdjaGFyICoqYXJndikKLSAgICAgfQot IAotICAgICBpZiAoZ19tZW1wcm8pIHsKLS0gICAgICAgIGdfbWVtX3NldF92dGFibGUgKGdsaWJf bWVtX3Byb2ZpbGVyX3RhYmxlKTsKLS0gICAgICAgIHNpZ25hbCAoU0lHVVNSMiwgX3NpZ191c3Iy X2hhbmRsZXIpOwotKyAgICAgICAgZ193YXJuaW5nICgiLS1tZW0tcHJvZmlsZSBubyBsb25nZXIg d29ya3Mgd2l0aCB0aGUgR0xpYiAyLjQ2IG9yIGxhdGVyIik7Ci0gICAgIH0KLSAKLSAgICAgLyog Y2hlY2sgdWlkICovCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1p bmRleCBmMzMyYTc3NS4uOGUwMWMyNjYgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBi L2NvbmZpZ3VyZS5hYwotQEAgLTUyLDEyICs1MiwxMiBAQCBtNF9kZWZpbmUoW2lidXNfYmluYXJ5 X3ZlcnNpb25dLAotICAgICAgICAgICBbaWJ1c19tYWpvcl92ZXJzaW9uLmlidXNfYWJpX2N1cnJl bnRfbWludXNfYWdlLmlidXNfYWJpX2FnZS5pYnVzX2FiaV9yZXZpc2lvbl0pCi0gCi0gIyBSZXF1 aXJlZCB2ZXJzaW9ucyBvZiBvdGhlciBwYWNrYWdlcy4KLS1tNF9kZWZpbmUoW2dsaWJfcmVxdWly ZWRfdmVyc2lvbl0sIFsyLjM2LjBdKQotK200X2RlZmluZShbZ2xpYl9yZXF1aXJlZF92ZXJzaW9u XSwgWzIuNDYuMF0pCi0gCi0gIyBWQUxBX1RBUkdFVF9HTElCX1ZFUlNJT04gaXMgdXNlZCBieSB2 YWxhYyAtLWNjb2RlIC0tdGFyZ2V0LWdsaWIgLgotICMgVkFMQV9UQVJHRVRfR0xJQl9WRVJTSU9O IGFuZCBnbGliX3JlcXVpcmVkX3ZlcnNpb24gd2lsbCBiZSBkaWZmZXJlbnQKLSAjIGluIHRoZSBm dXR1cmUuCi0tVkFMQV9UQVJHRVRfR0xJQl9WRVJTSU9OPTIuMzYKLStWQUxBX1RBUkdFVF9HTElC X1ZFUlNJT049Mi40NgotIEFDX1NVQlNUKFZBTEFfVEFSR0VUX0dMSUJfVkVSU0lPTikKLSAKLSAj IEluaXQgYXV0b21ha2UuCi0tLSAKLTIuMTcuMQotCi1Gcm9tIDhkMzAyYzg1M2Y0ZTg4ZjgxNjUy ZTBhZWVjYTg2ZmYxYjU3NzllY2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBmdWpp d2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDI0IEp1bCAyMDE4 IDE2OjA0OjMxICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJIRUwgY29kZSByZXZpZXdzCi0KLS0t LQotIGNsaWVudC94MTEvbWFpbi5jICAgICAgICAgICAgIHwgIDQgKystLQotIHNldHVwL2VuZ2lu ZXRyZWV2aWV3LnB5ICAgICAgIHwgMTAgKystLS0tLS0tLQotIHNldHVwL2lidXMtc2V0dXAuaW4g ICAgICAgICAgIHwgIDUgKystLS0KLSBzcmMvZW1vamktcGFyc2VyLmMgICAgICAgICAgICB8ICA4 ICsrKysrLS0tCi0gc3JjL2lidXNidXMuYyAgICAgICAgICAgICAgICAgfCAgOSArKysrKystLS0K LSBzcmMvaWJ1c2NvbXBvc2V0YWJsZS5jICAgICAgICB8ICA0ICsrLS0KLSBzcmMvaWJ1c2VuZ2lu ZXNpbXBsZS5jICAgICAgICB8IDIyICsrKysrKysrKysrKysrKysrLS0tLS0KLSBzcmMvaWJ1c2hv dGtleS5jICAgICAgICAgICAgICB8ICA1ICsrKy0tCi0gc3JjL2lidXNrZXltYXAuYyAgICAgICAg ICAgICAgfCAxMCArKysrKystLS0tCi0gc3JjL2lidXNrZXluYW1lcy5jICAgICAgICAgICAgfCAg MyArLS0KLSBzcmMvaWJ1c3JlZ2lzdHJ5LmMgICAgICAgICAgICB8ICA0ICsrLS0KLSBzcmMvaWJ1 c3NlcnZpY2UuYyAgICAgICAgICAgICB8IDEzICsrKysrKysrKy0tLS0KLSBzcmMvaWJ1c3htbC5j ICAgICAgICAgICAgICAgICB8ICA5ICsrKysrKy0tLQotIHNyYy91bmljb2RlLXBhcnNlci5jICAg ICAgICAgIHwgIDMgKystCi0gdXRpbC9JTWRraXQvRnJhbWVNZ3IuYyAgICAgICAgfCAgNyArKysr KysrCi0gdXRpbC9JTWRraXQvSU1Db25uLmMgICAgICAgICAgfCAgNiArKysrLS0KLSB1dGlsL0lN ZGtpdC9pMThuQ2xiay5jICAgICAgICB8IDEwICsrKysrKysrKysKLSB1dGlsL0lNZGtpdC9pMThu SWMuYyAgICAgICAgICB8IDExICsrKysrKysrKy0tCi0gdXRpbC9JTWRraXQvaTE4bk1ldGhvZC5j ICAgICAgfCAgNCArKysrCi0gdXRpbC9JTWRraXQvaTE4bk9mZnNldENhY2hlLmMgfCAyMSArKysr KysrKysrKysrKysrKy0tLS0KLSB1dGlsL0lNZGtpdC9pMThuUHRIZHIuYyAgICAgICB8IDI4ICsr KysrKysrKysrKysrKysrKysrKysrLS0tLS0KLSB1dGlsL0lNZGtpdC9pMThuVXRpbC5jICAgICAg ICB8IDEyICsrKysrKysrKy0tLQotIHV0aWwvSU1ka2l0L2kxOG5YLmMgICAgICAgICAgIHwgMTAg KysrKysrKystLQotIDIzIGZpbGVzIGNoYW5nZWQsIDE1NiBpbnNlcnRpb25zKCspLCA2MiBkZWxl dGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NsaWVudC94MTEvbWFpbi5jIGIvY2xpZW50L3gxMS9t YWluLmMKLWluZGV4IDE1OWY0MzAzLi4zYmVhOTRiNyAxMDA2NDQKLS0tLSBhL2NsaWVudC94MTEv bWFpbi5jCi0rKysgYi9jbGllbnQveDExL21haW4uYwotQEAgLTIsNyArMiw3IEBACi0gLyogdmlt OnNldCBldCBzdHM9NDogKi8KLSAvKiBpYnVzCi0gICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTUg UGVuZyBIdWFuZyA8c2hhd24ucC5odWFuZ0BnbWFpbC5jb20+Ci0tICogQ29weXJpZ2h0IChDKSAy MDE1LTIwMTcgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0rICog Q29weXJpZ2h0IChDKSAyMDE1LTIwMTggVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBn bWFpbC5jb20+Ci0gICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTUgUmVkIEhhdCwgSW5jLgotICAq Ci0gICogbWFpbi5jOgotQEAgLTE5Niw3ICsxOTYsNyBAQCBfeGltX3ByZWVkaXRfY2FsbGJhY2tf ZHJhdyAoWElNUyB4aW1zLCBYMTFJQyAqeDExaWMsIGNvbnN0IGdjaGFyICpwcmVlZGl0X3N0cmlu ZwotICAgICAgICAgfQotICAgICB9Ci0gCi0tICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykg ewotKyAgICBmb3IgKGkgPSAwOyBmZWVkYmFjayAmJiBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAg IGZlZWRiYWNrW2ldID0gMDsKLSAgICAgfQotIAotZGlmZiAtLWdpdCBhL3NldHVwL2VuZ2luZXRy ZWV2aWV3LnB5IGIvc2V0dXAvZW5naW5ldHJlZXZpZXcucHkKLWluZGV4IDRkZTRhNTE2Li5hZWE4 NDU5MyAxMDA2NDQKLS0tLSBhL3NldHVwL2VuZ2luZXRyZWV2aWV3LnB5Ci0rKysgYi9zZXR1cC9l bmdpbmV0cmVldmlldy5weQotQEAgLTMsNyArMyw4IEBACi0gIyBpYnVzIC0gVGhlIElucHV0IEJ1 cwotICMKLSAjIENvcHlyaWdodCAoYykgMjAwNy0yMDE1IFBlbmcgSHVhbmcgPHNoYXduLnAuaHVh bmdAZ21haWwuY29tPgotLSMgQ29weXJpZ2h0IChjKSAyMDA3LTIwMTUgUmVkIEhhdCwgSW5jLgot KyMgQ29weXJpZ2h0IChjKSAyMDE0LTIwMTggVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJh MUBnbWFpbC5jb20+Ci0rIyBDb3B5cmlnaHQgKGMpIDIwMDctMjAxOCBSZWQgSGF0LCBJbmMuCi0g IwotICMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vcgotICMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYwotQEAgLTkxLDcgKzkyLDYgQEAgY2xhc3MgRW5naW5lVHJlZVZpZXco R3RrLlRyZWVWaWV3KToKLSAgICAgICAgIHJlbmRlcmVyLnNldF9wcm9wZXJ0eSgidGV4dC1jb2x1 bW4iLCAwKQotICAgICAgICAgcmVuZGVyZXIuc2V0X3Byb3BlcnR5KCJoYXMtZW50cnkiLCBGYWxz ZSkKLSAgICAgICAgIHJlbmRlcmVyLnNldF9wcm9wZXJ0eSgiZWRpdGFibGUiLCBUcnVlKQotLSAg ICAgICAgcmVuZGVyZXIuY29ubmVjdCgiY2hhbmdlZCIsIHNlbGYuX19lbmdpbmVfbGF5b3V0X2No YW5nZWRfY2IpCi0gCi0gICAgICAgICBjb2x1bW4gPSBHdGsuVHJlZVZpZXdDb2x1bW4oXygiS2Jk IikpCi0gICAgICAgICBjb2x1bW4uc2V0X2V4cGFuZChGYWxzZSkKLUBAIC0xNjcsMTIgKzE2Nyw2 IEBAIGNsYXNzIEVuZ2luZVRyZWVWaWV3KEd0ay5UcmVlVmlldyk6Ci0gICAgICAgICByZW5kZXJl ci5zZXRfcHJvcGVydHkoInRleHQiLCBsYXlvdXQpCi0gICAgICAgICByZW5kZXJlci5zZXRfcHJv cGVydHkoIndlaWdodCIsIFBhbmdvLldlaWdodC5OT1JNQUwpCi0gCi0tICAgIGRlZiBfX2VuZ2lu ZV9sYXlvdXRfY2hhbmdlZF9jYihzZWxmLCBjb21ibywgcGF0aCwgaXQpOgotLSAgICAgICAgcmV0 dXJuCi0tICAgICAgICBpID0gc2VsZi5fX21vZGVsLmdldF9pdGVyKHBhdGgpCi0tICAgICAgICBs YXlvdXQgPSBjb21iby5nZXRfcHJvcGVydHkoIm1vZGVsIikuZ2V0X3ZhbHVlKGl0LCAwKQotLSAg ICAgICAgc2VsZi5fX21vZGVsLnNldF92YWx1ZShpLCAxLCBsYXlvdXQpCi0tCi0gICAgIGRlZiBk b19nZXRfcHJvcGVydHkoc2VsZiwgcHJvcCk6Ci0gICAgICAgICBpZiBwcm9wLm5hbWUgPT0gImFj dGl2ZS1lbmdpbmUiOgotICAgICAgICAgICAgIGl0ID0gc2VsZi5nZXRfc2VsZWN0ZWRfaXRlcigp Ci1kaWZmIC0tZ2l0IGEvc2V0dXAvaWJ1cy1zZXR1cC5pbiBiL3NldHVwL2lidXMtc2V0dXAuaW4K LWluZGV4IGUwZWQ5ZmY1Li5iYjVjODVjZiAxMDA2NDQKLS0tLSBhL3NldHVwL2lidXMtc2V0dXAu aW4KLSsrKyBiL3NldHVwL2lidXMtc2V0dXAuaW4KLUBAIC0zLDcgKzMsOCBAQAotICMgaWJ1cyAt IFRoZSBJbnB1dCBCdXMKLSAjCi0gIyBDb3B5cmlnaHQgKGMpIDIwMDctMjAxMCBQZW5nIEh1YW5n IDxzaGF3bi5wLmh1YW5nQGdtYWlsLmNvbT4KLS0jIENvcHlyaWdodCAoYykgMjAwNy0yMDEwIFJl ZCBIYXQsIEluYy4KLSsjIENvcHlyaWdodCAoYykgMjAxOCBUYWthbyBGdWppd2FyYSA8dGFrYW8u ZnVqaXdhcmExQGdtYWlsLmNvbT4KLSsjIENvcHlyaWdodCAoYykgMjAwNy0yMDE4IFJlZCBIYXQs IEluYy4KLSAjCi0gIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yCi0gIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi1AQCAtMjEsOCArMjIsNiBAQAotICMgVVNBCi0gCi0g cHJlZml4PUBwcmVmaXhACi0tZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAotLWRhdGFyb290ZGly PUBkYXRhcm9vdGRpckAKLSBsaWJleGVjZGlyPUBsaWJleGVjZGlyQAotIGV4cG9ydCBJQlVTX1BS RUZJWD1AcHJlZml4QAotIGV4cG9ydCBJQlVTX0RBVEFST09URElSPUBkYXRhcm9vdGRpckAKLWRp ZmYgLS1naXQgYS9zcmMvZW1vamktcGFyc2VyLmMgYi9zcmMvZW1vamktcGFyc2VyLmMKLWluZGV4 IDBmN2M4Y2ZiLi5iOGY0ZGNmMSAxMDA2NDQKLS0tLSBhL3NyYy9lbW9qaS1wYXJzZXIuYwotKysr IGIvc3JjL2Vtb2ppLXBhcnNlci5jCi1AQCAtNDY2LDcgKzQ2Niw4IEBAIHVuaWNvZGVfYW5ub3Rh dGlvbnNfcGFyc2VfeG1sX2ZpbGUgKGNvbnN0IGdjaGFyICAqZmlsZW5hbWUsCi0gICAgIGdfcmV0 dXJuX3ZhbF9pZl9mYWlsIChsaXN0ICE9IE5VTEwsIEZBTFNFKTsKLSAKLSAgICAgaWYgKCFnX2Zp bGVfZ2V0X2NvbnRlbnRzIChmaWxlbmFtZSwgJmNvbnRlbnQsICZsZW5ndGgsICZlcnJvcikpIHsK LS0gICAgICAgIGdfd2FybmluZyAoIkZhaWxlZCB0byBsb2FkICVzOiAlcyIsIGZpbGVuYW1lLCBl cnJvci0+bWVzc2FnZSk7Ci0rICAgICAgICBnX3dhcm5pbmcgKCJGYWlsZWQgdG8gbG9hZCAlczog JXMiLCBmaWxlbmFtZSwKLSsgICAgICAgICAgICAgICAgICAgZXJyb3IgPyBlcnJvci0+bWVzc2Fn ZSA6ICIiKTsKLSAgICAgICAgIGdvdG8gZmFpbGVkX3RvX3BhcnNlX3VuaWNvZGVfYW5ub3RhdGlv bnM7Ci0gICAgIH0KLSAKLUBAIC02MTEsNyArNjEyLDcgQEAgdW5pY29kZV9lbW9qaV90ZXN0X3Bh cnNlX2xpbmUgKGNvbnN0IGdjaGFyICpsaW5lLAotICAgICAgICAgICAgIGludCBpOwotICAgICAg ICAgICAgIGdjaGFyICphbXA7Ci0gICAgICAgICAgICAgc2VnbWVudHMgPSBnX3N0cnNwbGl0KGRh dGEtPnN1YmNhdGVnb3J5LCAiLSIsIC0xKTsKLS0gICAgICAgICAgICBmb3IgKGkgPSAwOyBzZWdt ZW50c1tpXTsgaSsrKSB7Ci0rICAgICAgICAgICAgZm9yIChpID0gMDsgc2VnbWVudHMgJiYgc2Vn bWVudHNbaV07IGkrKykgewotICAgICAgICAgICAgICAgICBpZiAoKGFtcCA9IHN0cmNociAoc2Vn bWVudHNbaV0sICcmJykpICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgIGlmIChhbXAg LSBzZWdtZW50c1tpXSA8PSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgZ193YXJuaW5n ICgiV3JvbmcgYW1wZXJzYW5kIik7Ci1AQCAtNjY1LDcgKzY2Niw4IEBAIHVuaWNvZGVfZW1vamlf dGVzdF9wYXJzZV9maWxlIChjb25zdCBnY2hhciAqZmlsZW5hbWUsCi0gICAgIGdfcmV0dXJuX3Zh bF9pZl9mYWlsIChsaXN0ICE9IE5VTEwsIEZBTFNFKTsKLSAKLSAgICAgaWYgKCFnX2ZpbGVfZ2V0 X2NvbnRlbnRzIChmaWxlbmFtZSwgJmNvbnRlbnQsICZsZW5ndGgsICZlcnJvcikpIHsKLS0gICAg ICAgIGdfd2FybmluZyAoIkZhaWxlZCB0byBsb2FkICVzOiAlcyIsIGZpbGVuYW1lLCBlcnJvci0+ bWVzc2FnZSk7Ci0rICAgICAgICBnX3dhcm5pbmcgKCJGYWlsZWQgdG8gbG9hZCAlczogJXMiLAot KyAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgZXJyb3IgPyBlcnJvci0+bWVzc2FnZSA6ICIi KTsKLSAgICAgICAgIGdvdG8gZmFpbGVkX3RvX3BhcnNlX3VuaWNvZGVfZW1vamlfdGVzdDsKLSAg ICAgfQotICAgICBoZWFkID0gZW5kID0gY29udGVudDsKLWRpZmYgLS1naXQgYS9zcmMvaWJ1c2J1 cy5jIGIvc3JjL2lidXNidXMuYwotaW5kZXggOTg4MjBlOGEuLjMwYzJlMzIxIDEwMDY0NAotLS0t IGEvc3JjL2lidXNidXMuYwotKysrIGIvc3JjL2lidXNidXMuYwotQEAgLTIsNyArMiw3IEBACi0g LyogdmltOnNldCBldCBzdHM9NDogKi8KLSAvKiBpYnVzIC0gVGhlIElucHV0IEJ1cwotICAqIENv cHlyaWdodCAoQykgMjAwOC0yMDE1IFBlbmcgSHVhbmcgPHNoYXduLnAuaHVhbmdAZ21haWwuY29t PgotLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWpp d2FyYTFAZ21haWwuY29tPgotKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IFRha2FvIEZ1aml3 YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotICAqIENvcHlyaWdodCAoQykgMjAwOC0y MDE2IFJlZCBIYXQsIEluYy4KLSAgKgotICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLUBAIC0yMiw2ICsyMiw3IEBACi0gICov Ci0gCi0gI2luY2x1ZGUgImlidXNidXMuaCIKLSsjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVk ZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0gI2luY2x1ZGUgPHVuaXN0 ZC5oPgotQEAgLTU2NSw3ICs1NjYsOSBAQCBpYnVzX2J1c19pbml0IChJQnVzQnVzICpidXMpCi0g ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgfQotICAgICAgICAgaWYgKGJ1Zi5zdF9tb2Rl ICE9IChTX0lGRElSIHwgU19JUldYVSkpIHsKLS0gICAgICAgICAgICBnX2NobW9kIChwYXRoLCAw NzAwKTsKLSsgICAgICAgICAgICBlcnJubyA9IDA7Ci0rICAgICAgICAgICAgaWYgKGdfY2htb2Qg KHBhdGgsIDA3MDApKQotKyAgICAgICAgICAgICAgICBnX3dhcm5pbmcgKCJjaG1vZCBmYWlsZWQ6 ICVzIiwgZXJybm8gPyBnX3N0cmVycm9yIChlcnJubykgOiAiIik7Ci0gICAgICAgICB9Ci0gICAg IH0KLSAKLUBAIC02NzMsNyArNjc2LDcgQEAgaWJ1c19idXNfY29uc3RydWN0b3IgKEdUeXBlICAg ICAgICAgICAgICAgICAgdHlwZSwKLSAgICAgICAgICAgICBpYnVzX2J1c19jb25uZWN0IChfYnVz KTsKLSAgICAgfQotICAgICBlbHNlIHsKLS0gICAgICAgIG9iamVjdCA9IGdfb2JqZWN0X3JlZiAo X2J1cyk7Ci0rICAgICAgICBvYmplY3QgPSBnX29iamVjdF9yZWYgKEdfT0JKRUNUIChfYnVzKSk7 Ci0gICAgIH0KLSAKLSAgICAgcmV0dXJuIG9iamVjdDsKLWRpZmYgLS1naXQgYS9zcmMvaWJ1c2Nv bXBvc2V0YWJsZS5jIGIvc3JjL2lidXNjb21wb3NldGFibGUuYwotaW5kZXggZDQ3M2Y1ODEuLmI4 NDNlN2UxIDEwMDY0NAotLS0tIGEvc3JjL2lidXNjb21wb3NldGFibGUuYwotKysrIGIvc3JjL2li dXNjb21wb3NldGFibGUuYwotQEAgLTEsNyArMSw3IEBACi0gLyogLSotIG1vZGU6IEM7IGMtYmFz aWMtb2Zmc2V0OiA0OyBpbmRlbnQtdGFicy1tb2RlOiBuaWw7IC0qLSAqLwotIC8qIGlidXMgLSBU aGUgSW5wdXQgQnVzCi0gICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTQgUGVuZyBIdWFuZyA8c2hh d24ucC5odWFuZ0BnbWFpbC5jb20+Ci0tICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgVGFrYW8g RnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0rICogQ29weXJpZ2h0IChDKSAy MDEzLTIwMTggVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0gICoK LSAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yCi0gICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYwotQEAgLTUzMiw3ICs1MzIsNyBAQCBpYnVzX2NvbXBvc2VfdGFibGVf c2VyaWFsaXplIChJQnVzQ29tcG9zZVRhYmxlICpjb21wb3NlX3RhYmxlKQotIAotICAgICB2YXJp YW50X2RhdGEgPSBnX3ZhcmlhbnRfbmV3X2ZpeGVkX2FycmF5IChHX1ZBUklBTlRfVFlQRV9VSU5U MTYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBv c2VfdGFibGUtPmRhdGEsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGluZGV4X3N0cmlkZSAqIG5fc2VxcywKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGdzaXplKWluZGV4X3N0cmlkZSAqIG5fc2VxcywKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mIChndWludDE2 KSk7Ci0gICAgIGlmICh2YXJpYW50X2RhdGEgPT0gTlVMTCkgewotICAgICAgICAgZ193YXJuaW5n ICgiQ291bGQgbm90IGNoYW5nZSBjb21wb3NlIGRhdGEgdG8gR1ZhcmlhbnQuIik7Ci1kaWZmIC0t Z2l0IGEvc3JjL2lidXNlbmdpbmVzaW1wbGUuYyBiL3NyYy9pYnVzZW5naW5lc2ltcGxlLmMKLWlu ZGV4IDY4ZDZmYjFlLi5hYWU2YjhkZiAxMDA2NDQKLS0tLSBhL3NyYy9pYnVzZW5naW5lc2ltcGxl LmMKLSsrKyBiL3NyYy9pYnVzZW5naW5lc2ltcGxlLmMKLUBAIC0yLDcgKzIsNyBAQAotIC8qIHZp bTpzZXQgZXQgc3RzPTQ6ICovCi0gLyogaWJ1cyAtIFRoZSBJbnB1dCBCdXMKLSAgKiBDb3B5cmln aHQgKEMpIDIwMTQgUGVuZyBIdWFuZyA8c2hhd24ucC5odWFuZ0BnbWFpbC5jb20+Ci0tICogQ29w eXJpZ2h0IChDKSAyMDE1LTIwMTcgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFp bC5jb20+Ci0rICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTggVGFrYW8gRnVqaXdhcmEgPHRha2Fv LmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0gICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTcgUmVkIEhh dCwgSW5jLgotICAqCi0gICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotQEAgLTgxNCw5ICs4MTQsMjEgQEAgY2hlY2tfbm9ybWFs aXplX25mYyAoZ3VuaWNoYXIqIGNvbWJpbmF0aW9uX2J1ZmZlciwgZ2ludCBuX2NvbXBvc2UpCi0g ICAgICAgICBnX2ZyZWUgKG5mY190ZW1wKTsKLSAKLSAgICAgICAgIGlmIChuX2NvbXBvc2UgPiAy KSB7Ci0tICAgICAgICAgICAgdGVtcF9zd2FwID0gY29tYmluYXRpb25fYnVmZmVyX3RlbXBbaSAl IChuX2NvbXBvc2UgLSAxKSArIDFdOwotLSAgICAgICAgICAgIGNvbWJpbmF0aW9uX2J1ZmZlcl90 ZW1wW2kgJSAobl9jb21wb3NlIC0gMSkgKyAxXSA9IGNvbWJpbmF0aW9uX2J1ZmZlcl90ZW1wWyhp KzEpICUgKG5fY29tcG9zZSAtIDEpICsgMV07Ci0tICAgICAgICAgICAgY29tYmluYXRpb25fYnVm ZmVyX3RlbXBbKGkrMSkgJSAobl9jb21wb3NlIC0gMSkgKyAxXSA9IHRlbXBfc3dhcDsKLSsgICAg ICAgICAgICBnaW50IGogPSBpICUgKG5fY29tcG9zZSAtIDEpICsgMTsKLSsgICAgICAgICAgICBn aW50IGsgPSAoaSsxKSAlIChuX2NvbXBvc2UgLSAxKSArIDE7Ci0rICAgICAgICAgICAgaWYgKGog Pj0gSUJVU19NQVhfQ09NUE9TRV9MRU4pIHsKLSsgICAgICAgICAgICAgICAgZ193YXJuaW5nICgi aiA+PSBJQlVTX01BWF9DT01QT1NFX0xFTiBmb3IgIiBcCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgImNvbWJpbmF0aW9uX2J1ZmZlcl90ZW1wIik7Ci0rICAgICAgICAgICAgICAgIGJyZWFr OwotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgICBpZiAoayA+PSBJQlVTX01BWF9DT01QT1NF X0xFTikgewotKyAgICAgICAgICAgICAgICBnX3dhcm5pbmcgKCJrID49IElCVVNfTUFYX0NPTVBP U0VfTEVOIGZvciAiIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tYmluYXRpb25f YnVmZmVyX3RlbXAiKTsKLSsgICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAgfQot KyAgICAgICAgICAgIHRlbXBfc3dhcCA9IGNvbWJpbmF0aW9uX2J1ZmZlcl90ZW1wW2pdOwotKyAg ICAgICAgICAgIGNvbWJpbmF0aW9uX2J1ZmZlcl90ZW1wW2pdID0gY29tYmluYXRpb25fYnVmZmVy X3RlbXBba107Ci0rICAgICAgICAgICAgY29tYmluYXRpb25fYnVmZmVyX3RlbXBba10gPSB0ZW1w X3N3YXA7Ci0gICAgICAgICB9Ci0gICAgICAgICBlbHNlCi0gICAgICAgICAgICAgYnJlYWs7Ci1A QCAtMTA2Nyw3ICsxMDc5LDcgQEAgaWJ1c19lbmdpbmVfc2ltcGxlX3Byb2Nlc3Nfa2V5X2V2ZW50 IChJQnVzRW5naW5lICplbmdpbmUsCi0gICAgIGdib29sZWFuIGNvbXBvc2VfZmluaXNoOwotICAg ICBndW5pY2hhciBvdXRwdXRfY2hhcjsKLSAKLS0gICAgd2hpbGUgKHByaXYtPmNvbXBvc2VfYnVm ZmVyW25fY29tcG9zZV0gIT0gMCAmJiBuX2NvbXBvc2UgPCBFTU9KSV9TT1VSQ0VfTEVOKQotKyAg ICB3aGlsZSAobl9jb21wb3NlIDwgRU1PSklfU09VUkNFX0xFTiAmJiBwcml2LT5jb21wb3NlX2J1 ZmZlcltuX2NvbXBvc2VdICE9IDApCi0gICAgICAgICBuX2NvbXBvc2UrKzsKLSAgICAgaWYgKG5f Y29tcG9zZSA+PSBFTU9KSV9TT1VSQ0VfTEVOKSB7Ci0gICAgICAgICBnX3dhcm5pbmcgKCJjb3Bt b3NlIHRhYmxlIGJ1ZmZlciBpcyBmdWxsLiIpOwotZGlmZiAtLWdpdCBhL3NyYy9pYnVzaG90a2V5 LmMgYi9zcmMvaWJ1c2hvdGtleS5jCi1pbmRleCAwY2RmYTc4Yi4uMDBkNTAyZmMgMTAwNjQ0Ci0t LS0gYS9zcmMvaWJ1c2hvdGtleS5jCi0rKysgYi9zcmMvaWJ1c2hvdGtleS5jCi1AQCAtMiw3ICsy LDggQEAKLSAvKiB2aW06c2V0IGV0IHN0cz00OiAqLwotIC8qIElCdXMgLSBUaGUgSW5wdXQgQnVz Ci0gICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTAgUGVuZyBIdWFuZyA8c2hhd24ucC5odWFuZ0Bn bWFpbC5jb20+Ci0tICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTAgUmVkIEhhdCwgSW5jLgotKyAq IENvcHlyaWdodCAoQykgMjAxOCBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWls LmNvbT4KLSsgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOCBSZWQgSGF0LCBJbmMuCi0gICoKLSAg KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yCi0gICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH ZW5lcmFsIFB1YmxpYwotQEAgLTQ1Myw3ICs0NTQsNyBAQCBpYnVzX2hvdGtleV9wcm9maWxlX3Jl bW92ZV9ob3RrZXkgKElCdXNIb3RrZXlQcm9maWxlICpwcm9maWxlLAotICAgICAgICAgICAgIGJy ZWFrOwotICAgICB9Ci0gCi0tICAgIGdfYXNzZXJ0IChwMi0+ZXZlbnQgPT0gZXZlbnQpOwotKyAg ICBnX2Fzc2VydCAocDIgJiYgcDItPmV2ZW50ID09IGV2ZW50KTsKLSAKLSAgICAgcDItPmhvdGtl eXMgPSBnX2xpc3RfcmVtb3ZlIChwMi0+aG90a2V5cywgcDEpOwotICAgICBpZiAocDItPmhvdGtl eXMgPT0gTlVMTCkgewotZGlmZiAtLWdpdCBhL3NyYy9pYnVza2V5bWFwLmMgYi9zcmMvaWJ1c2tl eW1hcC5jCi1pbmRleCBkNzQyOGM1ZC4uMjdhNTY3NTQgMTAwNjQ0Ci0tLS0gYS9zcmMvaWJ1c2tl eW1hcC5jCi0rKysgYi9zcmMvaWJ1c2tleW1hcC5jCi1AQCAtMiw3ICsyLDggQEAKLSAvKiB2aW06 c2V0IGV0IHN0cz00OiAqLwotIC8qIElCdXMgLSBUaGUgSW5wdXQgQnVzCi0gICogQ29weXJpZ2h0 IChDKSAyMDA4LTIwMTAgUGVuZyBIdWFuZyA8c2hhd24ucC5odWFuZ0BnbWFpbC5jb20+Ci0tICog Q29weXJpZ2h0IChDKSAyMDA4LTIwMTAgUmVkIEhhdCwgSW5jLgotKyAqIENvcHlyaWdodCAoQykg MjAxOCBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSsgKiBDb3B5 cmlnaHQgKEMpIDIwMDgtMjAxOCBSZWQgSGF0LCBJbmMuCi0gICoKLSAgKiBUaGlzIGxpYnJhcnkg aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICogbW9k aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwot QEAgLTcyLDcgKzczLDcgQEAgc3RhdGljIGdib29sZWFuCi0gaWJ1c19rZXltYXBfcGFyc2VfbGlu ZSAoZ2NoYXIgICpzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgS0VZTUFQICBrZXltYXAp Ci0gewotLSAgICBnY2hhciAqcDEsICpwMjsKLSsgICAgZ2NoYXIgKnAxLCAqcDIsIGNoOwotICAg ICBnaW50IGk7Ci0gICAgIGd1aW50IGtleWNvZGU7Ci0gICAgIGd1aW50IGtleXN5bTsKLUBAIC0x MzksMTEgKzE0MCwxMiBAQCBpYnVzX2tleW1hcF9wYXJzZV9saW5lIChnY2hhciAgKnN0ciwKLSAg ICAgaWYgKGtleXN5bSA9PSBJQlVTX0tFWV9Wb2lkU3ltYm9sKQotICAgICAgICAgcmV0dXJuIEZB TFNFOwotIAotKyAgICAvKiBEbyBub3QgYXNzaWduICpwMSB0byBnX2FzY2lpX2lzYWxwaGEoKSBk aXJlY3RseSBmb3IgdGhlIHN5bnRheCBjaGVjayAqLwotICAgICBpZiAoaSA9PSAwICYmCi0gICAg ICAgICBzdHJuY21wIChwMiwgImFkZHVwcGVyIiwgc2l6ZW9mICgiYWRkdXBwZXIiKSAtIDEpID09 IDAgJiYKLS0gICAgICAgIGdfYXNjaWlfaXNhbHBoYSAoKnAxKSkgewotKyAgICAgICAgKGNoID0g KnAxKSAmJiBnX2FzY2lpX2lzYWxwaGEgKGNoKSkgewotICAgICAgICAgZ2NoYXIgYnVmW10gPSAi YSI7Ci0tICAgICAgICBidWZbMF0gPSBnX2FzY2lpX3RvdXBwZXIoKnAxKTsKLSsgICAgICAgIGJ1 ZlswXSA9IGdfYXNjaWlfdG91cHBlcihjaCk7Ci0gICAgICAgICBrZXltYXBba2V5Y29kZV1bMF0g PSBrZXltYXBba2V5Y29kZV1bM10gPSBrZXlzeW07Ci0gICAgICAgICBrZXltYXBba2V5Y29kZV1b MV0gPSBrZXltYXBba2V5Y29kZV1bMl0gPSBpYnVzX2tleXZhbF9mcm9tX25hbWUgKGJ1Zik7Ci0g Ci1kaWZmIC0tZ2l0IGEvc3JjL2lidXNrZXluYW1lcy5jIGIvc3JjL2lidXNrZXluYW1lcy5jCi1p bmRleCBjMzY2NTEyNy4uMDg1MDU1OTggMTAwNjQ0Ci0tLS0gYS9zcmMvaWJ1c2tleW5hbWVzLmMK LSsrKyBiL3NyYy9pYnVza2V5bmFtZXMuYwotQEAgLTE5Miw4ICsxOTIsNyBAQCBpYnVzX2tleV9l dmVudF9mcm9tX3N0cmluZyAoY29uc3QgZ2NoYXIgKnN0cmluZywKLSAgICAgaWYgKCprZXl2YWwg IT0gSUJVU19LRVlfVm9pZFN5bWJvbCkKLSAgICAgICAgIHJldHZhbCA9IFRSVUU7Ci0gX291dDoK LS0gICAgaWYgKHRva2VucykKLS0gICAgICAgIGdfc3RyZnJlZXYgKHRva2Vucyk7Ci0rICAgIGdf c3RyZnJlZXYgKHRva2Vucyk7Ci0gICAgIHJldHVybiByZXR2YWw7Ci0gfQotIAotZGlmZiAtLWdp dCBhL3NyYy9pYnVzcmVnaXN0cnkuYyBiL3NyYy9pYnVzcmVnaXN0cnkuYwotaW5kZXggZGZkYTJh ZjMuLmIwNDgzOTk4IDEwMDY0NAotLS0tIGEvc3JjL2lidXNyZWdpc3RyeS5jCi0rKysgYi9zcmMv aWJ1c3JlZ2lzdHJ5LmMKLUBAIC0yLDcgKzIsNyBAQAotIC8qIHZpbTpzZXQgZXQgc3RzPTQ6ICov Ci0gLyogYnVzIC0gVGhlIElucHV0IEJ1cwotICAqIENvcHlyaWdodCAoQykgMjAxNSBQZW5nIEh1 YW5nIDxzaGF3bi5wLmh1YW5nQGdtYWlsLmNvbT4KLS0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGFr YW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0rICogQ29weXJpZ2h0IChD KSAyMDE1LTIwMTggVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0g ICogQ29weXJpZ2h0IChDKSAyMDE1IFJlZCBIYXQsIEluYy4KLSAgKgotICAqIFRoaXMgbGlicmFy eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLUBAIC00 NzIsNyArNDcyLDcgQEAgaWJ1c19yZWdpc3RyeV9zYXZlX2NhY2hlX2ZpbGUgKElCdXNSZWdpc3Ry eSAqcmVnaXN0cnksCi0gICAgIH0KLSAKLSAgICAgaWYgKGdfc3RyX2hhc19wcmVmaXggKGZpbGVu YW1lLCBnX2dldF91c2VyX2NhY2hlX2RpciAoKSkpIHsKLS0gICAgICAgIGdfY2htb2QgKGZpbGVu YW1lLCAwNjQ0KTsKLSsgICAgICAgIGdfd2Fybl9pZl9mYWlsICghZ19jaG1vZCAoZmlsZW5hbWUs IDA2NDQpKTsKLSAgICAgfQotIAotICAgICByZXR1cm4gVFJVRTsKLWRpZmYgLS1naXQgYS9zcmMv aWJ1c3NlcnZpY2UuYyBiL3NyYy9pYnVzc2VydmljZS5jCi1pbmRleCAyMTk5ZDYxZC4uODAyMzUy N2IgMTAwNjQ0Ci0tLS0gYS9zcmMvaWJ1c3NlcnZpY2UuYwotKysrIGIvc3JjL2lidXNzZXJ2aWNl LmMKLUBAIC0yLDcgKzIsOCBAQAotIC8qIHZpbTpzZXQgZXQgc3RzPTQ6ICovCi0gLyogaWJ1cyAt IFRoZSBJbnB1dCBCdXMKLSAgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNSBQZW5nIEh1YW5nIDxz aGF3bi5wLmh1YW5nQGdtYWlsLmNvbT4KLS0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNSBSZWQg SGF0LCBJbmMuCi0rICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTggVGFrYW8gRnVqaXdhcmEgPHRh a2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0rICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTggUmVk IEhhdCwgSW5jLgotICAqCi0gICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLUBAIC01MDAsMTIgKzUwMSwxNCBAQCBp YnVzX3NlcnZpY2VfcmVnaXN0ZXIgKElCdXNTZXJ2aWNlICAgICAqc2VydmljZSwKLSAgICAgICAg ICAgICAgICAgICAgICAgIEdEQnVzQ29ubmVjdGlvbiAqY29ubmVjdGlvbiwKLSAgICAgICAgICAg ICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICoqZXJyb3IpCi0gewotKyAgICBHQXJyYXkgKmFy cmF5ID0gTlVMTDsKLSsgICAgR0FycmF5ICppbnRlcmZhY2VzOwotKyAgICBHREJ1c0ludGVyZmFj ZUluZm8gKipwOwotKwotICAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoSUJVU19JU19TRVJWSUNF IChzZXJ2aWNlKSwgRkFMU0UpOwotICAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoR19JU19EQlVT X0NPTk5FQ1RJT04gKGNvbm5lY3Rpb24pLCBGQUxTRSk7Ci0gICAgIGdfcmV0dXJuX3ZhbF9pZl9m YWlsIChlcnJvciA9PSBOVUxMIHx8ICplcnJvciA9PSBOVUxMLCBGQUxTRSk7Ci0gCi0tICAgIEdB cnJheSAqYXJyYXkgPSBOVUxMOwotLQotICAgICBpZiAoZ19oYXNoX3RhYmxlX2xvb2t1cCAoc2Vy dmljZS0+cHJpdi0+dGFibGUsIGNvbm5lY3Rpb24pKSB7Ci0gICAgICAgICBpZiAoZXJyb3IpIHsK LSAgICAgICAgICAgICAqZXJyb3IgPSBnX2Vycm9yX25ldyAoR19EQlVTX0VSUk9SLCBHX0RCVVNf RVJST1JfT0JKRUNUX1BBVEhfSU5fVVNFLAotQEAgLTUxNSw3ICs1MTgsOSBAQCBpYnVzX3NlcnZp Y2VfcmVnaXN0ZXIgKElCdXNTZXJ2aWNlICAgICAqc2VydmljZSwKLSAgICAgICAgIGdvdG8gZXJy b3Jfb3V0OwotICAgICB9Ci0gCi0tICAgIEdEQnVzSW50ZXJmYWNlSW5mbyAqKnAgPSAoR0RCdXNJ bnRlcmZhY2VJbmZvICoqKUlCVVNfU0VSVklDRV9HRVRfQ0xBU1MgKHNlcnZpY2UpLT5pbnRlcmZh Y2VzLT5kYXRhOwotKyAgICBpbnRlcmZhY2VzID0gSUJVU19TRVJWSUNFX0dFVF9DTEFTUyAoc2Vy dmljZSktPmludGVyZmFjZXM7Ci0rICAgIGdfYXNzZXJ0IChpbnRlcmZhY2VzKTsKLSsgICAgcCA9 IChHREJ1c0ludGVyZmFjZUluZm8gKiopaW50ZXJmYWNlcy0+ZGF0YTsKLSAgICAgaWYgKCpwID09 IE5VTEwpIHsKLSAgICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgICplcnJvciA9IGdf ZXJyb3JfbmV3IChHX0RCVVNfRVJST1IsIEdfREJVU19FUlJPUl9GQUlMRUQsCi1kaWZmIC0tZ2l0 IGEvc3JjL2lidXN4bWwuYyBiL3NyYy9pYnVzeG1sLmMKLWluZGV4IDVjYWNjNWFmLi4yNjZhODIw NyAxMDA2NDQKLS0tLSBhL3NyYy9pYnVzeG1sLmMKLSsrKyBiL3NyYy9pYnVzeG1sLmMKLUBAIC0y LDcgKzIsOCBAQAotIC8qIHZpbTpzZXQgZXQgc3RzPTQ6ICovCi0gLyogYnVzIC0gVGhlIElucHV0 IEJ1cwotICAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE1IFBlbmcgSHVhbmcgPHNoYXduLnAuaHVh bmdAZ21haWwuY29tPgotLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE1IFJlZCBIYXQsIEluYy4K LSsgKiBDb3B5cmlnaHQgKEMpIDIwMTggVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBn bWFpbC5jb20+Ci0rICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTggUmVkIEhhdCwgSW5jLgotICAq Ci0gICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vcgotICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMKLUBAIC0yNDAsOCArMjQxLDEwIEBAIGlidXNfeG1sX3BhcnNlX2Zp bGUgKGNvbnN0IGdjaGFyICpmaWxlbmFtZSkKLSAgICAgICAgIHJldHVybiBub2RlOwotICAgICB9 IHdoaWxlICgwKTsKLSAKLS0gICAgZ193YXJuaW5nICgiUGFyc2UgJXMgZmFpbGVkOiAlcyIsIGZp bGVuYW1lLCBlcnJvci0+bWVzc2FnZSk7Ci0tICAgIGdfZXJyb3JfZnJlZSAoZXJyb3IpOwotKyAg ICBpZiAoZXJyb3IpIHsKLSsgICAgICAgIGdfd2FybmluZyAoIlBhcnNlICVzIGZhaWxlZDogJXMi LCBmaWxlbmFtZSwgZXJyb3ItPm1lc3NhZ2UpOwotKyAgICAgICAgZ19lcnJvcl9mcmVlIChlcnJv cik7Ci0rICAgIH0KLSAgICAgZ19tYXJrdXBfcGFyc2VfY29udGV4dF9mcmVlIChjb250ZXh0KTsK LSAgICAgcmV0dXJuIE5VTEw7Ci0gfQotZGlmZiAtLWdpdCBhL3NyYy91bmljb2RlLXBhcnNlci5j IGIvc3JjL3VuaWNvZGUtcGFyc2VyLmMKLWluZGV4IGU5OGM2ZDVmLi4wZTRmZThiNyAxMDA2NDQK LS0tLSBhL3NyYy91bmljb2RlLXBhcnNlci5jCi0rKysgYi9zcmMvdW5pY29kZS1wYXJzZXIuYwot QEAgLTI4MSw3ICsyODEsOCBAQCB1Y2RfcGFyc2VfZmlsZSAoY29uc3QgZ2NoYXIgKmZpbGVuYW1l LAotICAgICBnX3JldHVybl92YWxfaWZfZmFpbCAobGlzdCAhPSBOVUxMLCBGQUxTRSk7Ci0gCi0g ICAgIGlmICghZ19maWxlX2dldF9jb250ZW50cyAoZmlsZW5hbWUsICZjb250ZW50LCAmbGVuZ3Ro LCAmZXJyb3IpKSB7Ci0tICAgICAgICBnX3dhcm5pbmcgKCJGYWlsZWQgdG8gbG9hZCAlczogJXMi LCBmaWxlbmFtZSwgZXJyb3ItPm1lc3NhZ2UpOwotKyAgICAgICAgZ193YXJuaW5nICgiRmFpbGVk IHRvIGxvYWQgJXM6ICVzIiwKLSsgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGVycm9yID8g ZXJyb3ItPm1lc3NhZ2UgOiAiIik7Ci0gICAgICAgICBnb3RvIGZhaWxlZF90b19wYXJzZV91Y2Rf bmFtZXNfbGlzdDsKLSAgICAgfQotICAgICBoZWFkID0gZW5kID0gY29udGVudDsKLWRpZmYgLS1n aXQgYS91dGlsL0lNZGtpdC9GcmFtZU1nci5jIGIvdXRpbC9JTWRraXQvRnJhbWVNZ3IuYwotaW5k ZXggOWI0OTc5NDguLjA4NGI4ODEwIDEwMDY0NAotLS0tIGEvdXRpbC9JTWRraXQvRnJhbWVNZ3Iu YwotKysrIGIvdXRpbC9JTWRraXQvRnJhbWVNZ3IuYwotQEAgLTI3LDYgKzI3LDcgQEAgU09GVFdB UkUuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLwotIAotICNpbmNsdWRlIDxYMTEvWGxpYmludC5oPgotKyNpbmNsdWRl IDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgIkZyYW1lTWdyLmgi Ci0gCi1AQCAtOTg5LDYgKzk5MCw3IEBAIHN0YXRpYyBYaW1GcmFtZVR5cGUgRnJhbWVJbnN0R2V0 TmV4dFR5cGUoRnJhbWVJbnN0IGZpLCBYaW1GcmFtZVR5cGVJbmZvIGluZm8pCi0gICAgICAgICAg ICAgd2hpbGUgKG51bWJlciA+IDApCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICBp ID0gX0ZyYW1lSW5zdERlY3JlbWVudCAoZmktPnRlbXBsYXRlLCBpKTsKLSsgICAgICAgICAgICAg ICAgYXNzZXJ0IChpID49IDApOwotICAgICAgICAgICAgICAgICBzaXplICs9IF9GcmFtZUluc3RH ZXRJdGVtU2l6ZSAoZmksIGkpOwotICAgICAgICAgICAgICAgICBudW1iZXItLTsKLSAgICAgICAg ICAgICB9Ci1AQCAtMTEzOCw2ICsxMTQwLDcgQEAgc3RhdGljIFhpbUZyYW1lVHlwZSBGcmFtZUlu c3RQZWVrTmV4dFR5cGUgKEZyYW1lSW5zdCBmaSwgWGltRnJhbWVUeXBlSW5mbyBpbmZvKQotICAg ICAgICAgICAgIHdoaWxlIChudW1iZXIgPiAwKQotICAgICAgICAgICAgIHsKLSAgICAgICAgICAg ICAgICAgaSA9IF9GcmFtZUluc3REZWNyZW1lbnQgKGZpLT50ZW1wbGF0ZSwgaSk7Ci0rICAgICAg ICAgICAgICAgIGFzc2VydCAoaSA+PSAwKTsKLSAgICAgICAgICAgICAgICAgc2l6ZSArPSBfRnJh bWVJbnN0R2V0SXRlbVNpemUgKGZpLCBpKTsKLSAgICAgICAgICAgICAgICAgbnVtYmVyLS07Ci0g ICAgICAgICAgICAgfQotQEAgLTEzNTYsNiArMTM1OSw3IEBAIHN0YXRpYyBGbVN0YXR1cyBGcmFt ZUluc3RTZXRTaXplIChGcmFtZUluc3QgZmksIGludCBudW0pCi0gCSAgICBicmVhazsKLSAgICAg ICAgIH0KLSAgICAgICAgIC8qZW5kc3dpdGNoKi8KLSsgICAgICAgIGFzc2VydCAoaSA+PSAwKTsK LSAgICAgICAgIGkgPSBfRnJhbWVJbnN0SW5jcmVtZW50KGZpLT50ZW1wbGF0ZSwgaSk7Ci0gICAg IH0KLSAgICAgLyplbmR3aGlsZSovCi1AQCAtMTQ1Nyw2ICsxNDYxLDcgQEAgc3RhdGljIEZtU3Rh dHVzIEZyYW1lSW5zdFNldEl0ZXJDb3VudCAoRnJhbWVJbnN0IGZpLCBpbnQgbnVtKQotIAkgICAg YnJlYWs7Ci0gICAgICAgICB9Ci0gICAgICAgICAvKmVuZHN3aXRjaCovCi0rICAgICAgICBhc3Nl cnQgKGkgPj0gMCk7Ci0gICAgICAgICBpID0gX0ZyYW1lSW5zdEluY3JlbWVudCAoZmktPnRlbXBs YXRlLCBpKTsKLSAgICAgfQotICAgICAvKmVuZHdoaWxlKi8KLUBAIC0xNDc0LDYgKzE0NzksNyBA QCBzdGF0aWMgaW50IEZyYW1lSW5zdEdldFRvdGFsU2l6ZSAoRnJhbWVJbnN0IGZpKQotICAgICB3 aGlsZSAoZmktPnRlbXBsYXRlW2ldLnR5cGUgIT0gRU9MKQotICAgICB7Ci0gICAgICAgICBzaXpl ICs9IF9GcmFtZUluc3RHZXRJdGVtU2l6ZSAoZmksIGkpOwotKyAgICAgICAgYXNzZXJ0IChpID49 IDApOwotICAgICAgICAgaSA9IF9GcmFtZUluc3RJbmNyZW1lbnQgKGZpLT50ZW1wbGF0ZSwgaSk7 Ci0gICAgIH0KLSAgICAgLyplbmR3aGlsZSovCi1AQCAtMjQxOSw2ICsyNDI1LDcgQEAgc3RhdGlj IGludCBfRnJhbWVJbnN0R2V0SXRlbVNpemUgKEZyYW1lSW5zdCBmaSwgaW50IGN1cl9ubykKLSAg ICAgICAgICAgICBzaXplID0gMDsKLSAgICAgICAgICAgICB3aGlsZSAobnVtYmVyID4gMCkKLSAg ICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICAgIGFzc2VydCAoaSA+PSAwKTsKLSAgICAgICAg ICAgICAgICAgaSA9IF9GcmFtZUluc3REZWNyZW1lbnQgKGZpLT50ZW1wbGF0ZSwgaSk7Ci0gICAg ICAgICAgICAgICAgIHNpemUgKz0gX0ZyYW1lSW5zdEdldEl0ZW1TaXplIChmaSwgaSk7Ci0gICAg ICAgICAgICAgICAgIG51bWJlci0tOwotZGlmZiAtLWdpdCBhL3V0aWwvSU1ka2l0L0lNQ29ubi5j IGIvdXRpbC9JTWRraXQvSU1Db25uLmMKLWluZGV4IDZkMzY1ODkzLi44ZThiOGVjZSAxMDA2NDQK LS0tLSBhL3V0aWwvSU1ka2l0L0lNQ29ubi5jCi0rKysgYi91dGlsL0lNZGtpdC9JTUNvbm4uYwot QEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIGNoYXIgKl9GaW5kTW9kaWZpZXJzIChYSU1BcmcgKmFy Z3MpCi0gewotICAgICBjaGFyICptb2RpZmllcnM7Ci0gCi0tICAgIHdoaWxlIChhcmdzLT5uYW1l KQotKyAgICB3aGlsZSAoYXJncyAmJiBhcmdzLT5uYW1lKQotICAgICB7Ci0gCWlmIChzdHJjbXAg KGFyZ3MtPm5hbWUsIElNTW9kaWZpZXJzKSA9PSAwKQotIAl7Ci1AQCAtMTQ0LDggKzE0NCwxMCBA QCBYSU1TIElNT3BlbklNIChEaXNwbGF5ICpkaXNwbGF5LCAuLi4pCi0gICAgIG1vZGlmaWVycyA9 IF9GaW5kTW9kaWZpZXJzIChhcmdzKTsKLSAKLSAgICAgaW1zID0gX0dldElNUyAobW9kaWZpZXJz KTsKLS0gICAgaWYgKGltcyA9PSAoWElNUykgTlVMTCkKLSsgICAgaWYgKGltcyA9PSAoWElNUykg TlVMTCkgewotKyAgICAgICAgWEZyZWUgKGFyZ3MpOwotICAgICAgICAgcmV0dXJuIChYSU1TKSBO VUxMOwotKyAgICB9Ci0gICAgIC8qZW5kaWYqLwotICAgICAKLSAgICAgaW1zLT5jb3JlLmRpc3Bs YXkgPSBkaXNwbGF5OwotZGlmZiAtLWdpdCBhL3V0aWwvSU1ka2l0L2kxOG5DbGJrLmMgYi91dGls L0lNZGtpdC9pMThuQ2xiay5jCi1pbmRleCBiM2VkZjNhZC4uZjU1Zjk3MGYgMTAwNjQ0Ci0tLS0g YS91dGlsL0lNZGtpdC9pMThuQ2xiay5jCi0rKysgYi91dGlsL0lNZGtpdC9pMThuQ2xiay5jCi1A QCAtNTUsNiArNTUsNyBAQCBpbnQgX1hpMThuR2VvbWV0cnlDYWxsYmFjayAoWElNUyBpbXMsIElN UHJvdG9jb2wgKmNhbGxfZGF0YSkKLSAgICAgaWYgKCFyZXBseSkKLSAgICAgewotICAgICAgICAg X1hpMThuU2VuZE1lc3NhZ2UgKGltcywgY29ubmVjdF9pZCwgWElNX0VSUk9SLCAwLCAwLCAwKTsK LSsgICAgICAgIEZyYW1lTWdyRnJlZSAoZm0pOwotICAgICAgICAgcmV0dXJuIEZhbHNlOwotICAg ICB9Ci0gICAgIC8qZW5kaWYqLwotQEAgLTk3LDYgKzk4LDcgQEAgaW50IF9YaTE4blByZWVkaXRT dGFydENhbGxiYWNrIChYSU1TIGltcywgSU1Qcm90b2NvbCAqY2FsbF9kYXRhKQotICAgICBpZiAo IXJlcGx5KQotICAgICB7Ci0gICAgICAgICBfWGkxOG5TZW5kTWVzc2FnZShpbXMsIGNvbm5lY3Rf aWQsIFhJTV9FUlJPUiwgMCwgMCwgMCk7Ci0rICAgICAgICBGcmFtZU1nckZyZWUgKGZtKTsKLSAg ICAgICAgIHJldHVybiBGYWxzZTsKLSAgICAgfQotICAgICAvKmVuZGlmKi8KLUBAIC0xNTksNiAr MTYxLDcgQEAgaW50IF9YaTE4blByZWVkaXREcmF3Q2FsbGJhY2sgKFhJTVMgaW1zLCBJTVByb3Rv Y29sICpjYWxsX2RhdGEpCi0gICAgIGlmICghcmVwbHkpCi0gICAgIHsKLSAgICAgICAgIF9YaTE4 blNlbmRNZXNzYWdlIChpbXMsIGNvbm5lY3RfaWQsIFhJTV9FUlJPUiwgMCwgMCwgMCk7Ci0rICAg ICAgICBGcmFtZU1nckZyZWUgKGZtKTsKLSAgICAgICAgIHJldHVybiBGYWxzZTsKLSAgICAgfQot ICAgICAvKmVuZGlmKi8KLUBAIC0yMTIsNiArMjE1LDcgQEAgaW50IF9YaTE4blByZWVkaXRDYXJl dENhbGxiYWNrIChYSU1TIGltcywgSU1Qcm90b2NvbCAqY2FsbF9kYXRhKQotICAgICBpZiAoIXJl cGx5KQotICAgICB7Ci0gICAgICAgICBfWGkxOG5TZW5kTWVzc2FnZSAoaW1zLCBjb25uZWN0X2lk LCBYSU1fRVJST1IsIDAsIDAsIDApOwotKyAgICAgICAgRnJhbWVNZ3JGcmVlIChmbSk7Ci0gICAg ICAgICByZXR1cm4gRmFsc2U7Ci0gICAgIH0KLSAgICAgLyplbmRpZiovCi1AQCAtMjU2LDYgKzI2 MCw3IEBAIGludCBfWGkxOG5QcmVlZGl0RG9uZUNhbGxiYWNrIChYSU1TIGltcywgSU1Qcm90b2Nv bCAqY2FsbF9kYXRhKQotICAgICBpZiAoIXJlcGx5KQotICAgICB7Ci0gICAgICAgICBfWGkxOG5T ZW5kTWVzc2FnZSAoaW1zLCBjb25uZWN0X2lkLCBYSU1fRVJST1IsIDAsIDAsIDApOwotKyAgICAg ICAgRnJhbWVNZ3JGcmVlIChmbSk7Ci0gICAgICAgICByZXR1cm4gRmFsc2U7Ci0gICAgIH0KLSAg ICAgLyplbmRpZiovCi1AQCAtMjk3LDYgKzMwMiw3IEBAIGludCBfWGkxOG5TdGF0dXNTdGFydENh bGxiYWNrIChYSU1TIGltcywgSU1Qcm90b2NvbCAqY2FsbF9kYXRhKQotICAgICBpZiAoIXJlcGx5 KQotICAgICB7Ci0gICAgICAgICBfWGkxOG5TZW5kTWVzc2FnZSAoaW1zLCBjb25uZWN0X2lkLCBY SU1fRVJST1IsIDAsIDAsIDApOwotKyAgICAgICAgRnJhbWVNZ3JGcmVlIChmbSk7Ci0gICAgICAg ICByZXR1cm4gRmFsc2U7Ci0gICAgIH0KLSAgICAgLyplbmRpZiovCi1AQCAtMzYzLDYgKzM2OSw3 IEBAIGludCBfWGkxOG5TdGF0dXNEcmF3Q2FsbGJhY2sgKFhJTVMgaW1zLCBJTVByb3RvY29sICpj YWxsX2RhdGEpCi0gICAgICAgICBpZiAoIXJlcGx5KQotICAgICAgICAgewotICAgICAgICAgICAg IF9YaTE4blNlbmRNZXNzYWdlIChpbXMsIGNvbm5lY3RfaWQsIFhJTV9FUlJPUiwgMCwgMCwgMCk7 Ci0rICAgICAgICAgICAgRnJhbWVNZ3JGcmVlIChmbSk7Ci0gICAgICAgICAgICAgcmV0dXJuIEZh bHNlOwotICAgICAgICAgfQotICAgICAgICAgLyplbmRpZiovCi1AQCAtMzkwLDYgKzM5Nyw3IEBA IGludCBfWGkxOG5TdGF0dXNEcmF3Q2FsbGJhY2sgKFhJTVMgaW1zLCBJTVByb3RvY29sICpjYWxs X2RhdGEpCi0gICAgICAgICBpZiAoIXJlcGx5KQotICAgICAgICAgewotICAgICAgICAgICAgIF9Y aTE4blNlbmRNZXNzYWdlIChpbXMsIGNvbm5lY3RfaWQsIFhJTV9FUlJPUiwgMCwgMCwgMCk7Ci0r ICAgICAgICAgICAgRnJhbWVNZ3JGcmVlIChmbSk7Ci0gICAgICAgICAgICAgcmV0dXJuIEZhbHNl OwotICAgICAgICAgfQotICAgICAgICAgLyplbmRpZiovCi1AQCAtNDM1LDYgKzQ0Myw3IEBAIGlu dCBfWGkxOG5TdGF0dXNEb25lQ2FsbGJhY2sgKFhJTVMgaW1zLCBJTVByb3RvY29sICpjYWxsX2Rh dGEpCi0gICAgIGlmICghcmVwbHkpCi0gICAgIHsKLSAgICAgICAgIF9YaTE4blNlbmRNZXNzYWdl IChpbXMsIGNvbm5lY3RfaWQsIFhJTV9FUlJPUiwgMCwgMCwgMCk7Ci0rICAgICAgICBGcmFtZU1n ckZyZWUgKGZtKTsKLSAgICAgICAgIHJldHVybiBGYWxzZTsKLSAgICAgfQotICAgICAvKmVuZGlm Ki8KLUBAIC00NzksNiArNDg4LDcgQEAgaW50IF9YaTE4blN0cmluZ0NvbnZlcnNpb25DYWxsYmFj ayAoWElNUyBpbXMsIElNUHJvdG9jb2wgKmNhbGxfZGF0YSkKLSAgICAgaWYgKCFyZXBseSkKLSAg ICAgewotICAgICAgICAgX1hpMThuU2VuZE1lc3NhZ2UgKGltcywgY29ubmVjdF9pZCwgWElNX0VS Uk9SLCAwLCAwLCAwKTsKLSsgICAgICAgIEZyYW1lTWdyRnJlZSAoZm0pOwotICAgICAgICAgcmV0 dXJuIEZhbHNlOwotICAgICB9Ci0gICAgIC8qZW5kaWYqLwotZGlmZiAtLWdpdCBhL3V0aWwvSU1k a2l0L2kxOG5JYy5jIGIvdXRpbC9JTWRraXQvaTE4bkljLmMKLWluZGV4IDg3NDQ1OTg2Li4yODk4 MzdhNiAxMDA2NDQKLS0tLSBhL3V0aWwvSU1ka2l0L2kxOG5JYy5jCi0rKysgYi91dGlsL0lNZGtp dC9pMThuSWMuYwotQEAgLTQ3NSw4ICs0NzUsMTAgQEAgc3RhdGljIFhJQ0F0dHJpYnV0ZSAqQ3Jl YXRlTmVzdGVkTGlzdCAoQ0FSRDE2IGF0dHJfaWQsCi0gICAgIC8qZW5kaWYqLwotICAgICBtZW1z ZXQgKG5lc3RfbGlzdCwgMCwgc2l6ZW9mIChYSUNBdHRyaWJ1dGUpKTsKLSAgICAgbmVzdF9saXN0 LT52YWx1ZSA9ICh2b2lkICopIG1hbGxvYyAodmFsdWVfbGVuZ3RoKTsKLS0gICAgaWYgKG5lc3Rf bGlzdC0+dmFsdWUgPT0gTlVMTCkKLSsgICAgaWYgKG5lc3RfbGlzdC0+dmFsdWUgPT0gTlVMTCkg ewotKyAgICAgICAgWEZyZWUgKG5lc3RfbGlzdCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLSsg ICAgfQotICAgICAvKmVuZGlmKi8KLSAgICAgbWVtc2V0IChuZXN0X2xpc3QtPnZhbHVlLCAwLCB2 YWx1ZV9sZW5ndGgpOwotIAotQEAgLTgxNiw2ICs4MTgsNyBAQCB2b2lkIF9YaTE4bkNoYW5nZUlD IChYSU1TIGltcywKLSAgICAgaWYgKCFyZXBseSkKLSAgICAgewotICAgICAgICAgX1hpMThuU2Vu ZE1lc3NhZ2UgKGltcywgY29ubmVjdF9pZCwgWElNX0VSUk9SLCAwLCAwLCAwKTsKLSsgICAgICAg IEZyYW1lTWdyRnJlZSAoZm0pOwotICAgICAgICAgcmV0dXJuOwotICAgICB9Ci0gICAgIC8qZW5k aWYqLwotQEAgLTk3Myw4ICs5NzYsMTAgQEAgdm9pZCBfWGkxOG5HZXRJQyAoWElNUyBpbXMsIElN UHJvdG9jb2wgKmNhbGxfZGF0YSwgdW5zaWduZWQgY2hhciAqcCkKLSAgICAgZ2V0aWMtPmljX2F0 dHIgPSBpY19hdHRyOwotICAgICBpZiAoaTE4bl9jb3JlLT5hZGRyZXNzLmltcHJvdG8pCi0gICAg IHsKLS0gICAgICAgIGlmICghKGkxOG5fY29yZS0+YWRkcmVzcy5pbXByb3RvIChpbXMsIGNhbGxf ZGF0YSkpKQotKyAgICAgICAgaWYgKCEoaTE4bl9jb3JlLT5hZGRyZXNzLmltcHJvdG8gKGltcywg Y2FsbF9kYXRhKSkpIHsKLSsgICAgICAgICAgICBYRnJlZSAoYXR0cklEX2xpc3QpOwotICAgICAg ICAgICAgIHJldHVybjsKLSsgICAgICAgIH0KLSAgICAgICAgIC8qZW5kaWYqLwotIAlpZiAoX1hp MThuTmVlZFN3YXAgKGkxOG5fY29yZSwgY29ubmVjdF9pZCkpCi0gCSAgU3dhcEF0dHJpYnV0ZXMo Z2V0aWMtPmljX2F0dHIsIGdldGljLT5pY19hdHRyX251bSk7Ci1AQCAtMTAyMCw2ICsxMDI1LDgg QEAgdm9pZCBfWGkxOG5HZXRJQyAoWElNUyBpbXMsIElNUHJvdG9jb2wgKmNhbGxfZGF0YSwgdW5z aWduZWQgY2hhciAqcCkKLSAgICAgaWYgKHJlcGx5ID09IE5VTEwpCi0gICAgIHsKLSAgICAgICAg IF9YaTE4blNlbmRNZXNzYWdlIChpbXMsIGNvbm5lY3RfaWQsIFhJTV9FUlJPUiwgMCwgMCwgMCk7 Ci0rICAgICAgICBYRnJlZSAoYXR0cklEX2xpc3QpOwotKyAgICAgICAgRnJhbWVNZ3JGcmVlIChm bSk7Ci0gICAgICAgICByZXR1cm47Ci0gICAgIH0KLSAgICAgLyplbmRpZiovCi1kaWZmIC0tZ2l0 IGEvdXRpbC9JTWRraXQvaTE4bk1ldGhvZC5jIGIvdXRpbC9JTWRraXQvaTE4bk1ldGhvZC5jCi1p bmRleCAyMDNmODMxNS4uMzZkZDI4YWMgMTAwNjQ0Ci0tLS0gYS91dGlsL0lNZGtpdC9pMThuTWV0 aG9kLmMKLSsrKyBiL3V0aWwvSU1ka2l0L2kxOG5NZXRob2QuYwotQEAgLTg5NSw2ICs4OTUsNyBA QCBzdGF0aWMgU3RhdHVzIHhpMThuX2ZvcndhcmRFdmVudCAoWElNUyBpbXMsIFhQb2ludGVyIHhw KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKLSsgICAgICAgIEZyYW1l TWdyRnJlZSAoZm0pOwotICAgICAgICAgcmV0dXJuIEZhbHNlOwotICAgICB9Ci0gICAgIC8qZW5k aWYqLwotQEAgLTk2NCw2ICs5NjUsNyBAQCBzdGF0aWMgU3RhdHVzIHhpMThuX2NvbW1pdCAoWElN UyBpbXMsIFhQb2ludGVyIHhwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAwKTsKLSsgICAgICAgICAgICBGcmFtZU1nckZyZWUgKGZtKTsKLSAgICAgICAg ICAgICByZXR1cm4gRmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICAgICAvKmVuZGlmKi8KLUBAIC05 OTcsNiArOTk5LDcgQEAgc3RhdGljIFN0YXR1cyB4aTE4bl9jb21taXQgKFhJTVMgaW1zLCBYUG9p bnRlciB4cCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg MCk7Ci0rICAgICAgICAgICAgRnJhbWVNZ3JGcmVlIChmbSk7Ci0gICAgICAgICAgICAgcmV0dXJu IEZhbHNlOwotICAgICAgICAgfQotICAgICAgICAgLyplbmRpZiovCi1AQCAtMTEzMiw2ICsxMTM1 LDcgQEAgc3RhdGljIGludCB4aTE4bl9zeW5jWGxpYiAoWElNUyBpbXMsIFhQb2ludGVyIHhwKQot ICAgICByZXBseSA9ICh1bnNpZ25lZCBjaGFyICopIG1hbGxvYyAodG90YWxfc2l6ZSk7Ci0gICAg IGlmICghcmVwbHkpIHsKLSAgICAgICAgIF9YaTE4blNlbmRNZXNzYWdlIChpbXMsIGNvbm5lY3Rf aWQsIFhJTV9FUlJPUiwgMCwgMCwgMCk7Ci0rICAgICAgICBGcmFtZU1nckZyZWUgKGZtKTsKLSAg ICAgICAgIHJldHVybiBGYWxzZTsKLSAgICAgfQotICAgICBtZW1zZXQgKHJlcGx5LCAwLCB0b3Rh bF9zaXplKTsKLWRpZmYgLS1naXQgYS91dGlsL0lNZGtpdC9pMThuT2Zmc2V0Q2FjaGUuYyBiL3V0 aWwvSU1ka2l0L2kxOG5PZmZzZXRDYWNoZS5jCi1pbmRleCBjOTUyZDViNC4uZDUzNzkwNTEgMTAw NjQ0Ci0tLS0gYS91dGlsL0lNZGtpdC9pMThuT2Zmc2V0Q2FjaGUuYwotKysrIGIvdXRpbC9JTWRr aXQvaTE4bk9mZnNldENhY2hlLmMKLUBAIC0yNyw5ICsyNywxMSBAQAotICAqLwotIAotICNpbmNs dWRlIDxYMTEvWGxpYi5oPgotKyNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8c3RkZGVm Lmg+Ci0gI2luY2x1ZGUgIklNZGtpdC5oIgotICNpbmNsdWRlICJYaTE4bi5oIgotKyNpbmNsdWRl ICJYaTE4bi5oIgotIAotIC8qCi0gICogVGhlIFhJTSBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IGxp bWl0IHRoZSBudW1iZXIgb2Ygd2luZG93IHByb3BlcnRpZXMKLUBAIC01Miw5ICs1NCwxMSBAQCB2 b2lkIF9YaTE4bkluaXRPZmZzZXRDYWNoZSAoWGkxOG5PZmZzZXRDYWNoZSAqb2Zmc2V0X2NhY2hl KQotIHVuc2lnbmVkIGxvbmcgX1hpMThuTG9va3VwUHJvcGVydHlPZmZzZXQgKFhpMThuT2Zmc2V0 Q2FjaGUgKm9mZnNldF9jYWNoZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBBdG9tIGtleSkKLSB7Ci0tICAgIFhpMThuQXRvbU9mZnNldFBhaXIgKmRhdGEgPSBv ZmZzZXRfY2FjaGUtPmRhdGE7Ci0rICAgIFhpMThuQXRvbU9mZnNldFBhaXIgKmRhdGE7Ci0gICAg IHNpemVfdCBpOwotIAotKyAgICBhc3NlcnQgKG9mZnNldF9jYWNoZSk7Ci0rICAgIGRhdGEgPSBv ZmZzZXRfY2FjaGUtPmRhdGE7Ci0gICAgIGZvciAoaSA9IDA7IGkgPCBvZmZzZXRfY2FjaGUtPnNp emU7ICsraSkgewotICAgICAgICAgaWYgKGRhdGFbaV0ua2V5ID09IGtleSkgewotICAgICAgICAg ICAgIHJldHVybiBkYXRhW2ldLm9mZnNldDsKLUBAIC03MCw2ICs3NCw3IEBAIHZvaWQgX1hpMThu U2V0UHJvcGVydHlPZmZzZXQgKFhpMThuT2Zmc2V0Q2FjaGUgKm9mZnNldF9jYWNoZSwgQXRvbSBr ZXksCi0gICAgIFhpMThuQXRvbU9mZnNldFBhaXIgKmRhdGEgPSBvZmZzZXRfY2FjaGUtPmRhdGE7 Ci0gICAgIHNpemVfdCBpOwotIAotKyAgICBhc3NlcnQgKGRhdGEgIT0gTlVMTCk7Ci0gICAgIGZv ciAoaSA9IDA7IGkgPCBvZmZzZXRfY2FjaGUtPnNpemU7ICsraSkgewotICAgICAgICAgaWYgKGRh dGFbaV0ua2V5ID09IGtleSkgewotICAgICAgICAgICAgIGRhdGFbaV0ub2Zmc2V0ID0gb2Zmc2V0 OwotQEAgLTc5LDExICs4NCwxOSBAQCB2b2lkIF9YaTE4blNldFByb3BlcnR5T2Zmc2V0IChYaTE4 bk9mZnNldENhY2hlICpvZmZzZXRfY2FjaGUsIEF0b20ga2V5LAotIAotICAgICBpZiAoKytvZmZz ZXRfY2FjaGUtPnNpemUgPiBvZmZzZXRfY2FjaGUtPmNhcGFjaXR5KSB7Ci0gICAgICAgICBvZmZz ZXRfY2FjaGUtPmNhcGFjaXR5ICo9IE9GRlNFVF9DQUNIRV9HUk9XVEhfRkFDVE9SOwotLSAgICAg ICAgb2Zmc2V0X2NhY2hlLT5kYXRhID0gZGF0YSA9IChYaTE4bkF0b21PZmZzZXRQYWlyICopIHJl YWxsb2MgKGRhdGEsCi0rICAgICAgICBvZmZzZXRfY2FjaGUtPmRhdGEgPSAoWGkxOG5BdG9tT2Zm c2V0UGFpciAqKSByZWFsbG9jIChkYXRhLAotICAgICAgICAgICAgICAgICBvZmZzZXRfY2FjaGUt PmNhcGFjaXR5ICogc2l6ZW9mIChYaTE4bkF0b21PZmZzZXRQYWlyKSk7Ci0rICAgICAgICBpZiAo b2Zmc2V0X2NhY2hlLT5kYXRhID09IE5VTEwpIHsKLSsgICAgICAgICAgICBvZmZzZXRfY2FjaGUt PmRhdGEgPSBkYXRhOwotKyAgICAgICAgICAgIC0tb2Zmc2V0X2NhY2hlLT5zaXplOwotKyAgICAg ICAgfQotKyAgICAgICAgZGF0YSA9IG9mZnNldF9jYWNoZS0+ZGF0YTsKLSAgICAgfQotIAotLSAg ICBkYXRhW2ldLmtleSA9IGtleTsKLS0gICAgZGF0YVtpXS5vZmZzZXQgPSBvZmZzZXQ7Ci0rICAg IGFzc2VydCAoZGF0YSAhPSBOVUxMKTsKLSsgICAgaWYgKG9mZnNldF9jYWNoZS0+c2l6ZSA+IDAp IHsKLSsgICAgICAgIGRhdGFbaV0ua2V5ID0ga2V5OwotKyAgICAgICAgZGF0YVtpXS5vZmZzZXQg PSBvZmZzZXQ7Ci0rICAgIH0KLSB9Ci0gCi1kaWZmIC0tZ2l0IGEvdXRpbC9JTWRraXQvaTE4blB0 SGRyLmMgYi91dGlsL0lNZGtpdC9pMThuUHRIZHIuYwotaW5kZXggMmU2NzM1NDEuLmVhZWVlZTFj IDEwMDY0NAotLS0tIGEvdXRpbC9JTWRraXQvaTE4blB0SGRyLmMKLSsrKyBiL3V0aWwvSU1ka2l0 L2kxOG5QdEhkci5jCi1AQCAtMTEwLDYgKzExMCw3IEBAIHN0YXRpYyB2b2lkIENvbm5lY3RNZXNz YWdlUHJvYyAoWElNUyBpbXMsCi0gICAgIGlmICghcmVwbHkpCi0gICAgIHsKLSAgICAgICAgIF9Y aTE4blNlbmRNZXNzYWdlIChpbXMsIGNvbm5lY3RfaWQsIFhJTV9FUlJPUiwgMCwgMCwgMCk7Ci0r ICAgICAgICBGcmFtZU1nckZyZWUgKGZtKTsKLSAgICAgICAgIHJldHVybjsKLSAgICAgfQotICAg ICAvKmVuZGlmKi8KLUBAIC0yMzAsNiArMjMxLDcgQEAgc3RhdGljIHZvaWQgT3Blbk1lc3NhZ2VQ cm9jKFhJTVMgaW1zLCBJTVByb3RvY29sICpjYWxsX2RhdGEsIHVuc2lnbmVkIGNoYXIgKnApCi0g ICAgIGlmICghcmVwbHkpCi0gICAgIHsKLSAgICAgICAgIF9YaTE4blNlbmRNZXNzYWdlIChpbXMs IGNvbm5lY3RfaWQsIFhJTV9FUlJPUiwgMCwgMCwgMCk7Ci0rICAgICAgICBGcmFtZU1nckZyZWUg KGZtKTsKLSAgICAgICAgIHJldHVybjsKLSAgICAgfQotICAgICAvKmVuZGlmKi8KLUBAIC0zMTIs NiArMzE0LDcgQEAgc3RhdGljIHZvaWQgQ2xvc2VNZXNzYWdlUHJvYyAoWElNUyBpbXMsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAw LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwotKyAgICAgICAgRnJhbWVNZ3JGcmVl IChmbSk7Ci0gICAgICAgICByZXR1cm47Ci0gICAgIH0KLSAgICAgLyplbmRpZiovCi1AQCAtNTEz LDYgKzUxNiwxMCBAQCBzdGF0aWMgdm9pZCBRdWVyeUV4dGVuc2lvbk1lc3NhZ2VQcm9jIChYSU1T IGltcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7Ci0rICAgICAgICBG cmFtZU1nckZyZWUgKGZtKTsKLSsgICAgICAgIGZvciAoaSA9IDA7ICBpIDwgcmVwbHlfbnVtYmVy OyAgaSsrKQotKyAgICAgICAgICAgIFhGcmVlIChleHRfbGlzdFtpXS5uYW1lKTsKLSsgICAgICAg IFhGcmVlICgoY2hhciAqKSBleHRfbGlzdCk7Ci0gICAgICAgICByZXR1cm47Ci0gICAgIH0KLSAg ICAgLyplbmRpZiovCi1AQCAtNjEwLDggKzYxNywxMCBAQCBzdGF0aWMgdm9pZCBHZXRJTVZhbHVl RnJvbU5hbWUgKFhpMThuIGkxOG5fY29yZSwKLSAKLSAgICAgICAgICAgICB0b3RhbF9zaXplID0g RnJhbWVNZ3JHZXRUb3RhbFNpemUgKGZtKTsKLSAgICAgICAgICAgICBkYXRhID0gKHVuc2lnbmVk IGNoYXIgKikgbWFsbG9jICh0b3RhbF9zaXplKTsKLS0gICAgICAgICAgICBpZiAoIWRhdGEpCi0r ICAgICAgICAgICAgaWYgKCFkYXRhKSB7Ci0rICAgICAgICAgICAgICAgIEZyYW1lTWdyRnJlZSAo Zm0pOwotICAgICAgICAgICAgICAgICByZXR1cm47Ci0rICAgICAgICAgICAgfQotICAgICAgICAg ICAgIC8qZW5kaWYqLwotICAgICAgICAgICAgIG1lbXNldCAoZGF0YSwgMCwgdG90YWxfc2l6ZSk7 Ci0gICAgICAgICAgICAgRnJhbWVNZ3JTZXRCdWZmZXIgKGZtLCBkYXRhKTsKLUBAIC02NjYsMTEg KzY3NSwxMiBAQCBzdGF0aWMgWElNQXR0cmlidXRlICpNYWtlSU1BdHRyaWJ1dGVMaXN0IChYaTE4 biBpMThuX2NvcmUsCi0gICAgICAgICAvKmVuZGZvciovCi0gICAgIH0KLSAgICAgLyplbmRmb3Iq LwotLSAgICBhdHRyaWJfbGlzdCA9IChYSU1BdHRyaWJ1dGUgKikgbWFsbG9jIChzaXplb2YgKFhJ TUF0dHJpYnV0ZSkqbGlzdF9udW0pOwotKyAgICBhdHRyaWJfbGlzdCA9Ci0rICAgICAgICAgICAg KFhJTUF0dHJpYnV0ZSAqKSBtYWxsb2MgKHNpemVvZiAoWElNQXR0cmlidXRlKSoobGlzdF9udW0g KyAxKSk7Ci0gICAgIGlmICghYXR0cmliX2xpc3QpCi0gICAgICAgICByZXR1cm4gTlVMTDsKLSAg ICAgLyplbmRpZiovCi0tICAgIG1lbXNldCAoYXR0cmliX2xpc3QsIDAsIHNpemVvZiAoWElNQXR0 cmlidXRlKSpsaXN0X251bSk7Ci0rICAgIG1lbXNldCAoYXR0cmliX2xpc3QsIDAsIHNpemVvZiAo WElNQXR0cmlidXRlKSoobGlzdF9udW0gKyAxKSk7Ci0gICAgIG51bWJlcl9yZXQgPSBsaXN0X251 bTsKLSAgICAgbGlzdF9udW0gPSAwOwotICAgICBmb3IgKGkgPSAwOyAgaSA8ICpudW1iZXI7ICBp KyspCi1AQCAtODA1LDYgKzgxNSwxMCBAQCBzdGF0aWMgdm9pZCBHZXRJTVZhbHVlc01lc3NhZ2VQ cm9jIChYSU1TIGltcywKLSAgICAgaWYgKCFyZXBseSkKLSAgICAgewotICAgICAgICAgX1hpMThu U2VuZE1lc3NhZ2UgKGltcywgY29ubmVjdF9pZCwgWElNX0VSUk9SLCAwLCAwLCAwKTsKLSsgICAg ICAgIEZyYW1lTWdyRnJlZSAoZm0pOwotKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGl0ZXJfY291 bnQ7IGkrKykKLSsgICAgICAgICAgICBYRnJlZShpbV9hdHRyaWJ1dGVfbGlzdFtpXS52YWx1ZSk7 Ci0rICAgICAgICBYRnJlZSAoaW1fYXR0cmlidXRlX2xpc3QpOwotICAgICAgICAgcmV0dXJuOwot ICAgICB9Ci0gICAgIC8qZW5kaWYqLwotQEAgLTk2MSw2ICs5NzUsNyBAQCBzdGF0aWMgdm9pZCBE ZXN0cm95SUNNZXNzYWdlUHJvYyAoWElNUyBpbXMsCi0gICAgIGlmICghcmVwbHkpCi0gICAgIHsK LSAgICAgICAgIF9YaTE4blNlbmRNZXNzYWdlIChpbXMsIGNvbm5lY3RfaWQsIFhJTV9FUlJPUiwg MCwgMCwgMCk7Ci0rICAgICAgICBGcmFtZU1nckZyZWUgKGZtKTsKLSAgICAgICAgIHJldHVybjsK LSAgICAgfQotICAgICAvKmVuZGlmKi8KLUBAIC0xMDI2LDYgKzEwNDEsNyBAQCBzdGF0aWMgdm9p ZCBSZXNldElDTWVzc2FnZVByb2MgKFhJTVMgaW1zLAotICAgICBpZiAoIXJlcGx5KQotICAgICB7 Ci0gICAgICAgICBfWGkxOG5TZW5kTWVzc2FnZSAoaW1zLCBjb25uZWN0X2lkLCBYSU1fRVJST1Is IDAsIDAsIDApOwotKyAgICAgICAgRnJhbWVNZ3JGcmVlIChmbSk7Ci0gICAgICAgICByZXR1cm47 Ci0gICAgIH0KLSAgICAgLyplbmRpZiovCi1AQCAtMTA3Miw3ICsxMDg4LDcgQEAgc3RhdGljIGlu dCBXaXJlRXZlbnRUb0V2ZW50IChYaTE4biBpMThuX2NvcmUsCi0gICAgIC8qIGdldCAmIHNldCBz ZXJpYWwgKi8KLSAgICAgRnJhbWVNZ3JHZXRUb2tlbihmbSwgYzE2KTsKLSAgICAgZXYtPnhhbnku c2VyaWFsID0gKHVuc2lnbmVkIGxvbmcpYzE2OwotLSAgICBldi0+eGFueS5zZXJpYWwgfD0gc2Vy aWFsIDw8IDE2OwotKyAgICBldi0+eGFueS5zZXJpYWwgfD0gKCh1bnNpZ25lZCBsb25nKXNlcmlh bCkgPDwgMTY7Ci0gICAgIGV2LT54YW55LnNlbmRfZXZlbnQgPSBGYWxzZTsKLSAgICAgZXYtPnhh bnkuZGlzcGxheSA9IGkxOG5fY29yZS0+YWRkcmVzcy5kcHk7Ci0gCi1AQCAtMTMwOCw2ICsxMzI0 LDcgQEAgc3RhdGljIHZvaWQgVHJpZ2dlck5vdGlmeU1lc3NhZ2VQcm9jIChYSU1TIGltcywKLSAg ICAgaWYgKCFyZXBseSkKLSAgICAgewotICAgICAgICAgX1hpMThuU2VuZE1lc3NhZ2UgKGltcywg Y29ubmVjdF9pZCwgWElNX0VSUk9SLCAwLCAwLCAwKTsKLSsgICAgICAgIEZyYW1lTWdyRnJlZSAo Zm0pOwotICAgICAgICAgcmV0dXJuOwotICAgICB9Ci0gICAgIC8qZW5kaWYqLwotQEAgLTE0NDMs NyArMTQ2MCw3IEBAIHN0YXRpYyB2b2lkIEVuY29kaW5nTmVnb3RpYXRvbk1lc3NhZ2VQcm9jIChY SU1TIGltcywKLSAgICAgaWYgKGJ5dGVfbGVuZ3RoID4gMCkKLSAgICAgewotICAgICAgICAgZW5j X25lZ28tPmVuY29kaW5naW5mbyA9IChYSU1TdHIgKikgbWFsbG9jIChzaXplb2YgKFhJTVN0cikq MTApOwotLSAgICAgICAgbWVtc2V0IChlbmNfbmVnby0+ZW5jb2RpbmcsIDAsIHNpemVvZiAoWElN U3RyKSoxMCk7Ci0rICAgICAgICBtZW1zZXQgKGVuY19uZWdvLT5lbmNvZGluZ2luZm8sIDAsIHNp emVvZiAoWElNU3RyKSoxMCk7Ci0gICAgICAgICBpID0gMDsKLSAgICAgICAgIHdoaWxlIChGcmFt ZU1ncklzSXRlckxvb3BFbmQgKGZtLCAmc3RhdHVzKSA9PSBGYWxzZSkKLSAgICAgICAgIHsKLUBA IC0xNDg4LDYgKzE1MDUsNyBAQCBzdGF0aWMgdm9pZCBFbmNvZGluZ05lZ290aWF0b25NZXNzYWdl UHJvYyAoWElNUyBpbXMsCi0gICAgIGlmICghcmVwbHkpCi0gICAgIHsKLSAgICAgICAgIF9YaTE4 blNlbmRNZXNzYWdlIChpbXMsIGNvbm5lY3RfaWQsIFhJTV9FUlJPUiwgMCwgMCwgMCk7Ci0rICAg ICAgICBGcmFtZU1nckZyZWUgKGZtKTsKLSAgICAgICAgIHJldHVybjsKLSAgICAgfQotICAgICAv KmVuZGlmKi8KLWRpZmYgLS1naXQgYS91dGlsL0lNZGtpdC9pMThuVXRpbC5jIGIvdXRpbC9JTWRr aXQvaTE4blV0aWwuYwotaW5kZXggNjU1N2JkMWEuLjEwOWRjZGY5IDEwMDY0NAotLS0tIGEvdXRp bC9JTWRraXQvaTE4blV0aWwuYwotKysrIGIvdXRpbC9JTWRraXQvaTE4blV0aWwuYwotQEAgLTE0 OCw2ICsxNDgsNyBAQCB2b2lkIF9YaTE4blNlbmRNZXNzYWdlIChYSU1TIGltcywKLSAgICAgaWYg KHJlcGx5X2hkciA9PSBOVUxMKQotICAgICB7Ci0gICAgICAgICBfWGkxOG5TZW5kTWVzc2FnZSAo aW1zLCBjb25uZWN0X2lkLCBYSU1fRVJST1IsIDAsIDAsIDApOwotKyAgICAgICAgRnJhbWVNZ3JG cmVlIChmbSk7Ci0gICAgICAgICByZXR1cm47Ci0gICAgIH0KLSAgICAgLyplbmRpZiovCi1AQCAt MTYzLDcgKzE2NCw4IEBAIHZvaWQgX1hpMThuU2VuZE1lc3NhZ2UgKFhJTVMgaW1zLAotICAgICBy ZXBseXAgPSByZXBseTsKLSAgICAgbWVtbW92ZSAocmVwbHksIHJlcGx5X2hkciwgaGVhZGVyX3Np emUpOwotICAgICByZXBseXAgKz0gaGVhZGVyX3NpemU7Ci0tICAgIG1lbW1vdmUgKHJlcGx5cCwg ZGF0YSwgbGVuZ3RoKTsKLSsgICAgaWYgKGxlbmd0aCA+IDAgJiYgZGF0YSAhPSBOVUxMKQotKyAg ICAgICAgbWVtbW92ZSAocmVwbHlwLCBkYXRhLCBsZW5ndGgpOwotIAotICAgICBpMThuX2NvcmUt Pm1ldGhvZHMuc2VuZCAoaW1zLCBjb25uZWN0X2lkLCByZXBseSwgcmVwbHlfbGVuZ3RoKTsKLSAK LUBAIC0yMDIsOCArMjA0LDEwIEBAIHZvaWQgX1hpMThuU2VuZFRyaWdnZXJLZXkgKFhJTVMgaW1z LCBDQVJEMTYgY29ubmVjdF9pZCkKLSAgICAgdG90YWxfc2l6ZSA9IEZyYW1lTWdyR2V0VG90YWxT aXplIChmbSk7Ci0gCi0gICAgIHJlcGx5ID0gKHVuc2lnbmVkIGNoYXIgKikgbWFsbG9jICh0b3Rh bF9zaXplKTsKLS0gICAgaWYgKCFyZXBseSkKLSsgICAgaWYgKCFyZXBseSkgewotKyAgICAgICAg RnJhbWVNZ3JGcmVlIChmbSk7Ci0gICAgICAgICByZXR1cm47Ci0rICAgIH0KLSAgICAgLyplbmRp ZiovCi0gICAgIG1lbXNldCAocmVwbHksIDAsIHRvdGFsX3NpemUpOwotICAgICBGcmFtZU1nclNl dEJ1ZmZlciAoZm0sIHJlcGx5KTsKLUBAIC0yNTcsOCArMjYxLDEwIEBAIHZvaWQgX1hpMThuU2V0 RXZlbnRNYXNrIChYSU1TIGltcywKLSAKLSAgICAgdG90YWxfc2l6ZSA9IEZyYW1lTWdyR2V0VG90 YWxTaXplIChmbSk7Ci0gICAgIHJlcGx5ID0gKHVuc2lnbmVkIGNoYXIgKikgbWFsbG9jICh0b3Rh bF9zaXplKTsKLS0gICAgaWYgKCFyZXBseSkKLSsgICAgaWYgKCFyZXBseSkgewotKyAgICAgICAg RnJhbWVNZ3JGcmVlIChmbSk7Ci0gICAgICAgICByZXR1cm47Ci0rICAgIH0KLSAgICAgLyplbmRp ZiovCi0gICAgIG1lbXNldCAocmVwbHksIDAsIHRvdGFsX3NpemUpOwotICAgICBGcmFtZU1nclNl dEJ1ZmZlciAoZm0sIHJlcGx5KTsKLWRpZmYgLS1naXQgYS91dGlsL0lNZGtpdC9pMThuWC5jIGIv dXRpbC9JTWRraXQvaTE4blguYwotaW5kZXggODM4NWFiYTkuLjVlNWMxNWZhIDEwMDY0NAotLS0t IGEvdXRpbC9JTWRraXQvaTE4blguYwotKysrIGIvdXRpbC9JTWRraXQvaTE4blguYwotQEAgLTMx LDYgKzMxLDcgQEAgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0Yg VEhJUyBTT0ZUV0FSRS4KLSAgCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotIAotKyNpbmNsdWRlIDxhc3NlcnQuaD4K LSAjaW5jbHVkZSA8c3RkZGVmLmg+Ci0gI2luY2x1ZGUgPGxpbWl0cy5oPgotICNpbmNsdWRlIDxY MTEvWGxpYi5oPgotQEAgLTkyLDYgKzkzLDcgQEAgc3RhdGljIHVuc2lnbmVkIGNoYXIgKlJlYWRY SU1NZXNzYWdlIChYSU1TIGltcywKLSAgICAgICAgIGNsaWVudCA9IGNsaWVudC0+bmV4dDsKLSAg ICAgfQotIAotKyAgICBhc3NlcnQgKGNsaWVudCk7Ci0gICAgIGlmIChldi0+Zm9ybWF0ID09IDgp IHsKLSAgICAgICAgIC8qIENsaWVudE1lc3NhZ2Ugb25seSAqLwotICAgICAgICAgWGltUHJvdG9I ZHIgKmhkciA9IChYaW1Qcm90b0hkciAqKSBldi0+ZGF0YS5iOwotQEAgLTE1OCw2ICsxNjAsNyBA QCBzdGF0aWMgdW5zaWduZWQgY2hhciAqUmVhZFhJTU1lc3NhZ2UgKFhJTVMgaW1zLAotICAgICAg ICAgLyogVGhlIHByb3BlcnR5IGRhdGEgaXMgcmV0cmlldmVkIGluIDMyLWJpdCBjaHVua3MgKi8K LSAgICAgICAgIGxvbmdfYmVnaW4gPSBvZmZzZXQgLyA0OwotICAgICAgICAgbG9uZ19lbmQgPSAo ZW5kICsgMykgLyA0OwotKyAgICAgICAgYXNzZXJ0ICh4X2NsaWVudCk7Ci0gICAgICAgICByZXR1 cm5fY29kZSA9IFhHZXRXaW5kb3dQcm9wZXJ0eSAoaTE4bl9jb3JlLT5hZGRyZXNzLmRweSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4X2NsaWVudC0+YWNjZXB0 X3dpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdG9tLAot QEAgLTI3NiwxMSArMjc5LDExIEBAIHN0YXRpYyBCb29sIFhpMThuWEVuZChYSU1TIGltcykKLSBz dGF0aWMgY2hhciAqTWFrZU5ld0F0b20gKENBUkQxNiBjb25uZWN0X2lkLCBjaGFyICphdG9tTmFt ZSkKLSB7Ci0gICAgIHN0YXRpYyBpbnQgc2VxdWVuY2UgPSAwOwotLSAgICAKLSAgICAgc3ByaW50 ZiAoYXRvbU5hbWUsCi0gICAgICAgICAgICAgICJfc2VydmVyJWRfJWQiLAotICAgICAgICAgICAg ICBjb25uZWN0X2lkLAotLSAgICAgICAgICAgICAoKHNlcXVlbmNlID4gMjApICA/ICAoc2VxdWVu Y2UgPSAwKSAgOiAgc2VxdWVuY2UrKykpOwotKyAgICAgICAgICAgICAoKHNlcXVlbmNlID4gMjAp ICA/ICAoc2VxdWVuY2UgPSAwKSAgOiAgKDB4MWYgJiBzZXF1ZW5jZSkpKTsKLSsgICAgc2VxdWVu Y2UrKzsKLSAgICAgcmV0dXJuIGF0b21OYW1lOwotIH0KLSAKLUBAIC00MTgsMTMgKzQyMSwxNiBA QCBzdGF0aWMgQm9vbCBYaTE4blhXYWl0IChYSU1TIGltcywKLSAgICAgICAgICAgICAgICAgJiYK LSAgICAgICAgICAgICAgICAgKGhkci0+bWlub3Jfb3Bjb2RlID09IG1pbm9yX29wY29kZSkpCi0g ICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgICBYRnJlZSAocGFja2V0KTsKLSAgICAgICAg ICAgICAgICAgcmV0dXJuIFRydWU7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIGVsc2Ug aWYgKGhkci0+bWFqb3Jfb3Bjb2RlID09IFhJTV9FUlJPUikKLSAgICAgICAgICAgICB7Ci0rICAg ICAgICAgICAgICAgIFhGcmVlIChwYWNrZXQpOwotICAgICAgICAgICAgICAgICByZXR1cm4gRmFs c2U7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIC8qZW5kaWYqLwotKyAgICAgICAgICAg IFhGcmVlIChwYWNrZXQpOwotICAgICAgICAgfQotICAgICAgICAgLyplbmRpZiovCi0gICAgIH0K LS0tIAotMi4xNy4xCi0KLUZyb20gYmU3NTU0Y2VhMjk0YWExM2E2NTg5NWI2NmIyNmU1ZjFmYTRh MTg5NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJ5dXRhcm9oIE1hdHN1bW90bwot IDwzNjY1NzY2NytyeXV0YXJvaC1tYXRzdW1vdG9AdXNlcnMubm9yZXBseS5naXRodWIuY29tPgot RGF0ZTogVGh1LCAyIEF1ZyAyMDE4IDA4OjEwOjA0ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIG9w dGlvbiAtLW1vbml0b3ItdGltZW91dCBzaG91bGQgYmUgcmVtb3ZlZAotCi1pYnVzLWRhZW1vbigx KSBoYXMgZXhwbGFuYXRpb24gb2YgLS1tb25pdG9yLXRpbWVvdXQsIGJ1dCBtYWluLmMgZG9lcyBu b3QgYWNjZXB0IGl0IGFuZCBtYWtlIGFuIGVycm9yLgotLS0tCi0gYnVzL2lidXMtZGFlbW9uLjEu aW4gfCAzIC0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0 IGEvYnVzL2lidXMtZGFlbW9uLjEuaW4gYi9idXMvaWJ1cy1kYWVtb24uMS5pbgotaW5kZXggMmRj OTgyYjIuLmEzZDBkMDNhIDEwMDY0NAotLS0tIGEvYnVzL2lidXMtZGFlbW9uLjEuaW4KLSsrKyBi L2J1cy9pYnVzLWRhZW1vbi4xLmluCi1AQCAtNjIsOSArNjIsNiBAQCBhdXRvLCByZWZyZXNoLCBu b25lIGlzIGF2YWlsYWJsZS4KLSBcZkJcLW9cZlIsIFxmQlwtXC10aW1lb3V0XGZSPVxmSXRpbWVv dXRcZlIgW2RlZmF1bHQgaXMgMjAwMF0KLSBkYnVzIHJlcGx5IHRpbWVvdXQgaW4gbWlsbGlzZWNv bmRzLgotIC5UUAotLVxmQlwtalxmUiwgXGZCXC1cLW1vbml0b3JcLXRpbWVvdXRcZlI9XGZJdGlt ZW91dFxmUiBbZGVmYXVsdCBpcyAwXQotLXRpbWVvdXQgb2YgcG9sbCBjaGFuZ2VzIG9mIGVuZ2lu ZXMgaW4gc2Vjb25kcy4gMCB0byBkaXNhYmxlIGl0LgotLS5UUAotIFxmQlwtbVxmUiwgXGZCXC1c LW1lbVwtcHJvZmlsZVxmUgotIGVuYWJsZSBtZW1vcnkgcHJvZmlsZSwgc2VuZCBTSUdVU1IyIHRv IHByaW50IG91dCB0aGUgbWVtb3J5IHByb2ZpbGUuCi0gLlRQCi0tLSAKLTIuMTcuMQotCi1Gcm9t IDVmNDRlNzMwNzc3MTY4NWM3MDIwMmY5OTZlMzllOWFhNjhkNDhkMmUgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCi1Gcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci1E YXRlOiBGcmksIDMgQXVnIDIwMTggMTQ6NTg6MTAgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gZGF0 YS9kY29uZjogQWRkIG1hbiBwYWdlcyBvZiAwMC11cHN0cmVhbS1zZXR0aW5ncyg1KSBhbmQKLSBp YnVzKDUpCi0KLUFsc28gZGVsZXRlIC0tbWVtLXByb2ZpbGUgb3B0aW9uIGluIGlidXMtZGFlbW9u KDEpCi0tLS0KLSBidXMvaWJ1cy1kYWVtb24uMS5pbiAgICAgICAgICAgICAgICAgfCAgMyAtLQot IGRhdGEvZGNvbmYvMDAtdXBzdHJlYW0tc2V0dGluZ3MuNS5pbiB8IDQwICsrKysrKysrKysrKysr KysrKysrKysKLSBkYXRhL2Rjb25mL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgfCA1MCArKysr KysrKysrKysrKysrKystLS0tLS0tLS0tCi0gZGF0YS9kY29uZi9pYnVzLjUuaW4gICAgICAgICAg ICAgICAgIHwgMzkgKysrKysrKysrKysrKysrKysrKysrKwotIHVpL2d0azMvaWJ1cy1lbW9qaS43 LmluICAgICAgICAgICAgICB8ICA2ICsrLS0KLSA1IGZpbGVzIGNoYW5nZWQsIDExNCBpbnNlcnRp b25zKCspLCAyNCBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZGF0YS9kY29uZi8w MC11cHN0cmVhbS1zZXR0aW5ncy41LmluCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGRhdGEvZGNvbmYv aWJ1cy41LmluCi0KLWRpZmYgLS1naXQgYS9idXMvaWJ1cy1kYWVtb24uMS5pbiBiL2J1cy9pYnVz LWRhZW1vbi4xLmluCi1pbmRleCBhM2QwZDAzYS4uZWQ5NzVhZWQgMTAwNjQ0Ci0tLS0gYS9idXMv aWJ1cy1kYWVtb24uMS5pbgotKysrIGIvYnVzL2lidXMtZGFlbW9uLjEuaW4KLUBAIC02Miw5ICs2 Miw2IEBAIGF1dG8sIHJlZnJlc2gsIG5vbmUgaXMgYXZhaWxhYmxlLgotIFxmQlwtb1xmUiwgXGZC XC1cLXRpbWVvdXRcZlI9XGZJdGltZW91dFxmUiBbZGVmYXVsdCBpcyAyMDAwXQotIGRidXMgcmVw bHkgdGltZW91dCBpbiBtaWxsaXNlY29uZHMuCi0gLlRQCi0tXGZCXC1tXGZSLCBcZkJcLVwtbWVt XC1wcm9maWxlXGZSCi0tZW5hYmxlIG1lbW9yeSBwcm9maWxlLCBzZW5kIFNJR1VTUjIgdG8gcHJp bnQgb3V0IHRoZSBtZW1vcnkgcHJvZmlsZS4KLS0uVFAKLSBcZkJcLXZcZlIsIFxmQlwtXC12ZXJi b3NlXGZSCi0gdmVyYm9zZS4KLSAKLWRpZmYgLS1naXQgYS9kYXRhL2Rjb25mLzAwLXVwc3RyZWFt LXNldHRpbmdzLjUuaW4gYi9kYXRhL2Rjb25mLzAwLXVwc3RyZWFtLXNldHRpbmdzLjUuaW4KLW5l dyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMC4uYjdhNTZmZGEKLS0tLSAvZGV2L251 bGwKLSsrKyBiL2RhdGEvZGNvbmYvMDAtdXBzdHJlYW0tc2V0dGluZ3MuNS5pbgotQEAgLTAsMCAr MSw0MCBAQAotKy5cIiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgbGlj ZW5zZSBhcyB0aGUgaWJ1cwotKy5cIiBwYWNrYWdlLgotKy5cIiBDb3B5cmlnaHQgKEMpIFRha2Fv IEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPiwgMjAxOC4KLSsuXCIKLSsuVEgg MDBcLVVQU1RSRUFNXC1TRVRUSU5HUyAiNSIgIkF1Z3VzdCAyMDE4IiAiQFZFUlNJT05AIiAiVXNl ciBDb21tYW5kcyIKLSsuU0ggTkFNRQotKy5CIDAwXC11cHN0cmVhbVwtc2V0dGluZ3MKLStcLSBk Y29uZiBjb25maWd1cmF0aW9uIGZpbGUKLSsKLSsuU0ggU1lOT1BTSVMKLSsuQiAvZXRjL2Rjb25m L2RiL2lidXMuZC8wMFwtdXBzdHJlYW1cLXNldHRpbmdzCi0rCi0rLlNIIERFU0NSSVBUSU9OCi0r Ci0rLlBQCi0rSUJ1cyBpcyBhbiBJbnRlbGxpZ2VudCBJbnB1dCBCdXMuIEl0IGlzIGEgbmV3IGlu cHV0IGZyYW1ld29yayBmb3IgTGludXgKLStPUy4gSXQgcHJvdmlkZXMgZnVsbCBmZWF0dXJlZCBh bmQgdXNlciBmcmllbmRseSBpbnB1dCBtZXRob2QgdXNlcgotK2ludGVyZmFjZS4gIEl0IGFsc28g bWF5IGhlbHAgZGV2ZWxvcGVycyB0byBkZXZlbG9wIGlucHV0IG1ldGhvZCBlYXNpbHkuCi0rCi0r LlBQCi0rLkIgMDBcLXVwc3RyZWFtXC1zZXR0aW5ncwotK2lzIGEgdGV4dCBjb25maWd1cmF0aW9u IGZpbGUgb2YgZGNvbmYgYW5kIGNhbiBiZSBjb252ZXJ0ZWQgdG8KLSsvZXRjL2Rjb25mL2RiL2li dXMgYnkKLSsuQiBkY29uZiB1cGRhdGUKLStjb21tYW5kIHdpdGggYSB3cml0ZSBwcml2aWxlZ2Ug aW4gL2V0Yy9kY29uZi9kYi4gL2V0Yy9kY29uZi9kYi9pYnVzIGlzIGEKLStkYXRhYmFzZSBmaWxl IG9mIGRjb25mIGFuZCBzYXZlcyB0aGUgSUJ1cyBkZWZhdWx0IHNldHRpbmdzLiBUaGUgc2F2ZWQg a2V5cwotK2FuZCB2YWx1ZXMgY2FuIGJlIHJlYWRlZCBieSBkY29uZiBjb21tYW5kLgotKwotKy5Q UAotKy5SUyA0Ci0rLm5mCi0rZW52IERDT05GX1BST0ZJTEU9aWJ1cyBkY29uZiBsaXN0IC9kZXNr dG9wL2lidXMvCi0rLlJFCi0rCi0rLlNIIEJVR1MKLStJZiB5b3UgZmluZCBhIGJ1ZywgcGxlYXNl IHJlcG9ydCBpdCBhdCBodHRwczovL2dpdGh1Yi5jb20vaWJ1cy9pYnVzL2lzc3VlcwotKwotKy5T SCAiU0VFIEFMU08iCi0rLkJSIGRjb25mICgxKQotKy5CUiBpYnVzICg1KQotZGlmZiAtLWdpdCBh L2RhdGEvZGNvbmYvTWFrZWZpbGUuYW0gYi9kYXRhL2Rjb25mL01ha2VmaWxlLmFtCi1pbmRleCA3 ZjBkMGZkOC4uNDMzZDk5MzcgMTAwNjQ0Ci0tLS0gYS9kYXRhL2Rjb25mL01ha2VmaWxlLmFtCi0r KysgYi9kYXRhL2Rjb25mL01ha2VmaWxlLmFtCi1AQCAtNCw3ICs0LDcgQEAKLSAjCi0gIyBDb3B5 cmlnaHQgKGMpIDIwMDctMjAxMCBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1YW5nQGdtYWlsLmNvbT4K LSAjIENvcHlyaWdodCAoYykgMjAxMSBEYWlraSBVZW5vIDx1ZW5vQHVuaXh1c2VyLm9yZz4KLS0j IENvcHlyaWdodCAoYykgMjAwNy0yMDExIFJlZCBIYXQsIEluYy4KLSsjIENvcHlyaWdodCAoYykg MjAwNy0yMDE4IFJlZCBIYXQsIEluYy4KLSAjCi0gIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gIyBtb2RpZnkgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi1AQCAtMjgsMjIgKzI4 LDYgQEAgZGlzdF9nc2V0dGluZ3Njb252ZXJ0X0RBVEEgPSBpYnVzLmNvbnZlcnQKLSBAR1NFVFRJ TkdTX1JVTEVTQAotIEBJTlRMVE9PTF9YTUxfTk9NRVJHRV9SVUxFQAotIAotLUVYVFJBX0RJU1Qg PSBcCi0tCSQoZ3NldHRpbmdzX3NjaGVtYXNfaW5fZmlsZXMpIFwKLS0JbWFrZS1kY29uZi1vdmVy cmlkZS1kYi5zaCBcCi0tCXByb2ZpbGUvaWJ1cyBcCi0tCTAwLXVwc3RyZWFtLXNldHRpbmdzIFwK LS0JJChOVUxMKQotLQotLUNMRUFORklMRVMgPSBcCi0tCSQoZ3NldHRpbmdzX1NDSEVNQVMpIFwK LS0JJChOVUxMKQotLQotLU1BSU5UQUlORVJDTEVBTkZJTEVTID0gXAotLQkkKGdzZXR0aW5nc19z Y2hlbWFzX2luX2ZpbGVzKSBcCi0tCTAwLXVwc3RyZWFtLXNldHRpbmdzIFwKLS0JJChOVUxMKQot LQotIGRjb25mcHJvZmlsZWRpciA9ICQoc3lzY29uZmRpcikvZGNvbmYvcHJvZmlsZQotIGRjb25m cHJvZmlsZV9EQVRBID0gcHJvZmlsZS9pYnVzCi0gCi1AQCAtNjAsOSArNDQsMzkgQEAgb3JnLmZy ZWVkZXNrdG9wLmlidXMuZ3NjaGVtYS54bWwuaW46ICQodG9wX3NyY2RpcikvZGF0YS9pYnVzLnNj aGVtYXMuaW4KLSAJJChBTV9WX0dFTikgJChzcmNkaXIpL21ha2UtZGNvbmYtb3ZlcnJpZGUtZGIu c2ggPiAkQCB8fCBcCi0gCQl7IHJjPSQkPzsgJChSTSkgLXJmICRAOyBleGl0ICQkcmM7IH0KLSAK LSttYW5fNV9pbl9maWxlcyA9IDAwLXVwc3RyZWFtLXNldHRpbmdzLjUuaW4gaWJ1cy41LmluCi0r bWFuXzVfZmlsZXMgPSAkKG1hbl81X2luX2ZpbGVzOi41LmluPS41KQotK21hbl81X0RBVEEgPSQo bWFuXzVfZmlsZXM6LjU9LjUuZ3opCi0rbWFuXzVkaXIgPSAkKG1hbmRpcikvbWFuNQotKyUuNTog JS41LmluCi0rCSQoQU1fVl9HRU4pIHNlZCBcCi0rCSAgICAtZSAnc3xAVkVSU0lPTltAXXwkKFZF UlNJT04pfGcnICQ8ID4gJEAudG1wICYmIFwKLSsJICAgIG12ICRALnRtcCAkQAotKyUuNS5nejog JS41Ci0rCSQoQU1fVl9HRU4pIGd6aXAgLWMgJDwgPiAkQC50bXAgJiYgbXYgJEAudG1wICRACi0r Ci0gaW5zdGFsbC1kYXRhLWhvb2s6Ci0gCWlmIHRlc3QgLXogIiQoREVTVERJUikiOyB0aGVuIFwK LS0JCWRjb25mIHVwZGF0ZTsgXAotKwkgICAgZGNvbmYgdXBkYXRlOyBcCi0gCWZpCi0gCi0rRVhU UkFfRElTVCA9IFwKLSsgICAgJChnc2V0dGluZ3Nfc2NoZW1hc19pbl9maWxlcykgXAotKyAgICAk KG1hbl81X2luX2ZpbGVzKSBcCi0rICAgIG1ha2UtZGNvbmYtb3ZlcnJpZGUtZGIuc2ggXAotKyAg ICBwcm9maWxlL2lidXMgXAotKyAgICAwMC11cHN0cmVhbS1zZXR0aW5ncyBcCi0rICAgICQoTlVM TCkKLSsKLStDTEVBTkZJTEVTID0gXAotKyAgICAkKGdzZXR0aW5nc19TQ0hFTUFTKSBcCi0rICAg ICQobWFuXzVfREFUQSkgXAotKyAgICAkKG1hbl81X2ZpbGVzKSBcCi0rICAgICQoTlVMTCkKLSsK LStNQUlOVEFJTkVSQ0xFQU5GSUxFUyA9IFwKLSsgICAgJChnc2V0dGluZ3Nfc2NoZW1hc19pbl9m aWxlcykgXAotKyAgICAwMC11cHN0cmVhbS1zZXR0aW5ncyBcCi0rICAgICQoTlVMTCkKLSsKLSAt aW5jbHVkZSAkKHRvcF9zcmNkaXIpL2dpdC5tawotZGlmZiAtLWdpdCBhL2RhdGEvZGNvbmYvaWJ1 cy41LmluIGIvZGF0YS9kY29uZi9pYnVzLjUuaW4KLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRl eCAwMDAwMDAwMC4uZDk1OWM3ZTMKLS0tLSAvZGV2L251bGwKLSsrKyBiL2RhdGEvZGNvbmYvaWJ1 cy41LmluCi1AQCAtMCwwICsxLDM5IEBACi0rLlwiIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1 bmRlciB0aGUgc2FtZSBsaWNlbnNlIGFzIHRoZSBpYnVzCi0rLlwiIHBhY2thZ2UuCi0rLlwiIENv cHlyaWdodCAoQykgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+LCAy MDE4LgotKy5cIgotKy5USCBJQlVTICI1IiAiQXVndXN0IDIwMTgiICJAVkVSU0lPTkAiICJVc2Vy IENvbW1hbmRzIgotKy5TSCBOQU1FCi0rLkIgSUJVUwotK1wtIGRjb25mIGRhdGFiYXNlIGZpbGUg Zm9yIElCdXMKLSsKLSsuU0ggU1lOT1BTSVMKLSsuQiAvZXRjL2Rjb25mL2RiL2lidXMKLSsKLSsu U0ggREVTQ1JJUFRJT04KLSsKLSsuUFAKLStJQnVzIGlzIGFuIEludGVsbGlnZW50IElucHV0IEJ1 cy4gSXQgaXMgYSBuZXcgaW5wdXQgZnJhbWV3b3JrIGZvciBMaW51eAotK09TLiBJdCBwcm92aWRl cyBmdWxsIGZlYXR1cmVkIGFuZCB1c2VyIGZyaWVuZGx5IGlucHV0IG1ldGhvZCB1c2VyCi0raW50 ZXJmYWNlLiAgSXQgYWxzbyBtYXkgaGVscCBkZXZlbG9wZXJzIHRvIGRldmVsb3AgaW5wdXQgbWV0 aG9kIGVhc2lseS4KLSsKLSsuUFAKLSsuQiAvZXRjL2Rjb25mL2RiL2lidXMKLStpcyBhIGRhdGFi YXNlIGZpbGUgZGNvbmYgYW5kIHNhdmVzIHRoZSBJQnVzIGRlZmF1bHQgc2V0dGluZ3MuIEl0IGNh biBiZQotK2dlbmVyYXRlZCBmcm9tIC9ldGMvZGNvbmYvZGIvaWJ1cy5kLzAwXC11cHN0cmVhbVwt c2V0dGluZ3MgYnkKLSsuQiBkY29uZiB1cGRhdGUKLStjb21tYW5kIHdpdGggYSB3cml0ZSBwcml2 aWxlZ2UgaW4gL2V0Yy9kY29uZi9kYi4gVGhlIHNhdmVkIGtleXMKLSthbmQgdmFsdWVzIGNhbiBi ZSByZWFkZWQgYnkgZGNvbmYgY29tbWFuZC4KLSsKLSsuUFAKLSsuUlMgNAotKy5uZgotK2VudiBE Q09ORl9QUk9GSUxFPWlidXMgZGNvbmYgbGlzdCAvZGVza3RvcC9pYnVzLwotKy5SRQotKwotKy5T SCBCVUdTCi0rSWYgeW91IGZpbmQgYSBidWcsIHBsZWFzZSByZXBvcnQgaXQgYXQgaHR0cHM6Ly9n aXRodWIuY29tL2lidXMvaWJ1cy9pc3N1ZXMKLSsKLSsuU0ggIlNFRSBBTFNPIgotKy5CUiBkY29u ZiAoMSkKLSsuQlIgMDBcLXVwc3RyZWFtXC1zZXR0aW5ncyAoNSkKLWRpZmYgLS1naXQgYS91aS9n dGszL2lidXMtZW1vamkuNy5pbiBiL3VpL2d0azMvaWJ1cy1lbW9qaS43LmluCi1pbmRleCAzYTJk YjJjMC4uYjhiNDM1NzQgMTAwNjQ0Ci0tLS0gYS91aS9ndGszL2lidXMtZW1vamkuNy5pbgotKysr IGIvdWkvZ3RrMy9pYnVzLWVtb2ppLjcuaW4KLUBAIC0xLDEwICsxLDEwIEBACi0gLlwiIFRoaXMg ZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBsaWNlbnNlIGFzIHRoZSBpYnVzCi0g LlwiIHBhY2thZ2UuCi0tLlwiIENvcHlyaWdodCAoQykgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1 aml3YXJhMUBnbWFpbC5jb20+LCAyMDE3LgotKy5cIiBDb3B5cmlnaHQgKEMpIFRha2FvIEZ1aml3 YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPiwgMjAxNy0yMDE4LgotIC5cIgotLS5USCAi SUJVUyBFTU9KSSIgMSAiTWF5IDIwMTciICJAVkVSU0lPTkAiICJVc2VyIENvbW1hbmRzIgotKy5U SCAiSUJVUyBFTU9KSSIgMSAiQXVndXN0IDIwMTgiICJAVkVSU0lPTkAiICJVc2VyIENvbW1hbmRz IgotIC5TSCBOQU1FCi0tLkIgaWJ1cyBlbW9qaSB1dGlsaXR5Ci0rLkIgaWJ1cy1lbW9qaQotIFwt IENhbGwgdGhlIElCdXMgZW1vamkgdXRpbGl0eSBieQotIC5CIElCdXMgRW1vamllcgotIAotLS0g Ci0yLjE3LjEKLQotRnJvbSBmMzI4ZmQ2N2Y0NzlmYWE0NmNhODdiZjNjODVlZWQ3MDgwZWM1ZWMw IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZnVqaXdhcmF0IDx0YWthby5mdWppd2Fy YTFAZ21haWwuY29tPgotRGF0ZTogTW9uLCA2IEF1ZyAyMDE4IDEyOjMzOjQ0ICswOTAwCi1TdWJq ZWN0OiBbUEFUQ0hdIGNsaWVudC9ndGsyOiBBZGQgSUJVU19ESVNDQVJEX1BBU1NXT1JEIGZvciBm aXJlZm94IGFuZAotIGNocm9tZQotCi1wb3B1cCB3aW5kb3cgaW4gZmlyZWZveCBpcyBjbG9zZWQg aW4gWG9yZyBHTk9NRSB3aGVuIHBhc3N3b3JkIGVudHJ5Ci1pcyBmb2N1cyBvbi4gSXQncyBjYXVz ZWQgYnkgZ25vbWUtc2hlbGwgWzFdLgotTm93IElCVVNfRElTQ0FSRF9QQVNTV09SRCBhbmQgSUJV U19ESVNDQVJEX1BBU1NXT1JEX0FQUFMgZW52aXJvbWVudAotdmFyaWFibGVzIGFyZSBpbXBsZW1l bnRlZCBpbiBJQnVzIEdUSyBjbGllbnRzIGFzIGEgd29ya2Fyb3VuZC4KLQotZW52IElCVVNfRElT Q0FSRF9QQVNTV09SRD0xIGZpcmVmb3gKLW9yCi1leHBvcnQgSUJVU19ESVNDQVJEX1BBU1NXT1JE X0FQUFM9J2ZpcmVmb3gsLipjaHJvbWUuKicKLQotY2FuIGRpc2NhcmQgdHlwaW5nIGNoYXJhY3Rl cnMgb24gdGhlIHBhc3N3b3JkIGVudHJpZXMuCi0KLVsxXSBodHRwczovL2dpdGxhYi5nbm9tZS5v cmcvR05PTUUvZ25vbWUtc2hlbGwvaXNzdWVzLzM5MQotCi1CVUc9aHR0cHM6Ly9naXRodWIuY29t L2lidXMvaWJ1cy9pc3N1ZXMvMjAwMgotLS0tCi0gY2xpZW50L2d0azIvaWJ1c2ltY29udGV4dC5j IHwgNzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQotIDEgZmlsZSBjaGFu Z2VkLCA1OCBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2Ns aWVudC9ndGsyL2lidXNpbWNvbnRleHQuYyBiL2NsaWVudC9ndGsyL2lidXNpbWNvbnRleHQuYwot aW5kZXggYTgwNjM4MmQuLmU0ZGU1MmQ5IDEwMDY0NAotLS0tIGEvY2xpZW50L2d0azIvaWJ1c2lt Y29udGV4dC5jCi0rKysgYi9jbGllbnQvZ3RrMi9pYnVzaW1jb250ZXh0LmMKLUBAIC05MSw2ICs5 MSw5IEBAIHN0YXRpYyBndWludCAgICBfa2V5X3Nub29wZXJfaWQgPSAwOwotIAotIHN0YXRpYyBn Ym9vbGVhbiBfdXNlX3N5bmNfbW9kZSA9IEZBTFNFOwotIAotK3N0YXRpYyBjb25zdCBnY2hhciAq X2Rpc2NhcmRfcGFzc3dvcmRfYXBwcyAgPSAiIjsKLStzdGF0aWMgZ2Jvb2xlYW4gX3VzZV9kaXNj YXJkX3Bhc3N3b3JkID0gRkFMU0U7Ci0rCi0gc3RhdGljIEd0a0lNQ29udGV4dCAqX2ZvY3VzX2lt X2NvbnRleHQgPSBOVUxMOwotIHN0YXRpYyBJQnVzSW5wdXRDb250ZXh0ICpfZmFrZV9jb250ZXh0 ID0gTlVMTDsKLSBzdGF0aWMgR2RrV2luZG93ICpfaW5wdXRfd2luZG93ID0gTlVMTDsKLUBAIC0x NTcsNyArMTYwLDcgQEAgc3RhdGljIGdib29sZWFuIF9zbGF2ZV9kZWxldGVfc3Vycm91bmRpbmdf Y2IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzSU1D b250ZXh0ICAgICAgKmNvbnRleHQpOwotIHN0YXRpYyB2b2lkICAgICBfcmVxdWVzdF9zdXJyb3Vu ZGluZ190ZXh0ICAgKElCdXNJTUNvbnRleHQgICAgICAqY29udGV4dCk7Ci0gc3RhdGljIHZvaWQg ICAgIF9jcmVhdGVfZmFrZV9pbnB1dF9jb250ZXh0ICAodm9pZCk7Ci0tc3RhdGljIHZvaWQgICAg IF9zZXRfY29udGVudF90eXBlICAgICAgICAgICAoSUJ1c0lNQ29udGV4dCAgICAgICpjb250ZXh0 KTsKLStzdGF0aWMgZ2Jvb2xlYW4gX3NldF9jb250ZW50X3R5cGUgICAgICAgICAgIChJQnVzSU1D b250ZXh0ICAgICAgKmNvbnRleHQpOwotIAotIAotIAotQEAgLTM4Myw3ICszODYsNyBAQCBfcmVx dWVzdF9zdXJyb3VuZGluZ190ZXh0IChJQnVzSU1Db250ZXh0ICpjb250ZXh0KQotICAgICB9Ci0g fQotIAotLXN0YXRpYyB2b2lkCi0rc3RhdGljIGdib29sZWFuCi0gX3NldF9jb250ZW50X3R5cGUg KElCdXNJTUNvbnRleHQgKmNvbnRleHQpCi0gewotICNpZiBHVEtfQ0hFQ0tfVkVSU0lPTiAoMywg NiwgMCkKLUBAIC0zOTYsMTEgKzM5OSwxOCBAQCBfc2V0X2NvbnRlbnRfdHlwZSAoSUJ1c0lNQ29u dGV4dCAqY29udGV4dCkKLSAgICAgICAgICAgICAgICAgICAgICAgImlucHV0LWhpbnRzIiwgJmhp bnRzLAotICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAKLSsgICAgICAgIGlmIChfdXNl X2Rpc2NhcmRfcGFzc3dvcmQpIHsKLSsgICAgICAgICAgICBpZiAocHVycG9zZSA9PSBHVEtfSU5Q VVRfUFVSUE9TRV9QQVNTV09SRCB8fAotKyAgICAgICAgICAgICAgICBwdXJwb3NlID09IEdUS19J TlBVVF9QVVJQT1NFX1BJTikgewotKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7Ci0rICAg ICAgICAgICAgfQotKyAgICAgICAgfQotICAgICAgICAgaWJ1c19pbnB1dF9jb250ZXh0X3NldF9j b250ZW50X3R5cGUgKGNvbnRleHQtPmlidXNjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHB1cnBvc2UsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaGludHMpOwotICAgICB9Ci0gI2VuZGlmCi0rICAgIHJl dHVybiBUUlVFOwotIH0KLSAKLSAKLUBAIC02MDgsMjQgKzYxOCw0NSBAQCBpYnVzX2ltX2NvbnRl eHRfY2xhc3NfaW5pdCAoSUJ1c0lNQ29udGV4dENsYXNzICpjbGFzcykKLSAgICAgX3VzZV9rZXlf c25vb3BlciA9ICFfZ2V0X2Jvb2xlYW5fZW52ICgiSUJVU19ESVNBQkxFX1NOT09QRVIiLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEoRU5BQkxFX1NOT09QRVIp KTsKLSAgICAgX3VzZV9zeW5jX21vZGUgPSBfZ2V0X2Jvb2xlYW5fZW52ICgiSUJVU19FTkFCTEVf U1lOQ19NT0RFIiwgRkFMU0UpOwotKyAgICBfdXNlX2Rpc2NhcmRfcGFzc3dvcmQgPSBfZ2V0X2Jv b2xlYW5fZW52ICgiSUJVU19ESVNDQVJEX1BBU1NXT1JEIiwgRkFMU0UpOwotKwotKyNkZWZpbmUg Q0hFQ0tfQVBQX0lOX0NTVl9FTlZfVkFSSUFCTEVTKHJldHZhbCwgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZfYXBw cywgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZmFsbGJhY2tfYXBwcywgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX2lmX2ZvdW5kKSAgICAgICAgICAg ICAgICAgIFwKLSt7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIGNvbnN0IGdjaGFyICogcHJnbmFtZSA9 IGdfZ2V0X3ByZ25hbWUgKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBnY2hh ciAqKnA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSsgICAgZ2NoYXIgKiogYXBwczsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIGlmIChnX2dldGVudiAoKCNlbnZfYXBw cykpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAg ZmFsbGJhY2tfYXBwcyA9IGdfZ2V0ZW52ICgjZW52X2FwcHMpOyAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSsgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIGFwcHMgPSBnX3N0cnNwbGl0ICgoZmFs bGJhY2tfYXBwcyksICIsIiwgMCk7ICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBmb3Ig KHAgPSBhcHBzOyAqcCAhPSBOVUxMOyBwKyspIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSsgICAgICAgIGlmIChnX3JlZ2V4X21hdGNoX3NpbXBsZSAoKnAsIHByZ25hbWUs IDAsIDApKSB7ICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgcmV0dmFsID0gKHZhbHVl X2lmX2ZvdW5kKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAg ICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSsgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIH0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBnX3N0 cmZyZWV2IChhcHBzKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSt9Ci0gCi0gICAgIC8qIGVudiBJQlVTX0RJU0FCTEVfU05PT1BFUiBkb2VzIG5v dCBleGlzdCAqLwotICAgICBpZiAoX3VzZV9rZXlfc25vb3BlcikgewotICAgICAgICAgLyogZGlz YWJsZSBzbm9vcGVyIGlmIGFwcCBpcyBpbiBfbm9fc25vb3Blcl9hcHBzICovCi0tICAgICAgICBj b25zdCBnY2hhciAqIHByZ25hbWUgPSBnX2dldF9wcmduYW1lICgpOwotLSAgICAgICAgaWYgKGdf Z2V0ZW52ICgiSUJVU19OT19TTk9PUEVSX0FQUFMiKSkgewotLSAgICAgICAgICAgIF9ub19zbm9v cGVyX2FwcHMgPSBnX2dldGVudiAoIklCVVNfTk9fU05PT1BFUl9BUFBTIik7Ci0tICAgICAgICB9 Ci0tICAgICAgICBnY2hhciAqKnA7Ci0tICAgICAgICBnY2hhciAqKiBhcHBzID0gZ19zdHJzcGxp dCAoX25vX3Nub29wZXJfYXBwcywgIiwiLCAwKTsKLS0gICAgICAgIGZvciAocCA9IGFwcHM7ICpw ICE9IE5VTEw7IHArKykgewotLSAgICAgICAgICAgIGlmIChnX3JlZ2V4X21hdGNoX3NpbXBsZSAo KnAsIHByZ25hbWUsIDAsIDApKSB7Ci0tICAgICAgICAgICAgICAgIF91c2Vfa2V5X3Nub29wZXIg PSBGQUxTRTsKLS0gICAgICAgICAgICAgICAgYnJlYWs7Ci0tICAgICAgICAgICAgfQotLSAgICAg ICAgfQotLSAgICAgICAgZ19zdHJmcmVldiAoYXBwcyk7Ci0rICAgICAgICBDSEVDS19BUFBfSU5f Q1NWX0VOVl9WQVJJQUJMRVMgKF91c2Vfa2V5X3Nub29wZXIsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIElCVVNfTk9fU05PT1BFUl9BUFBTLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbm9fc25vb3Blcl9hcHBzLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSk7Ci0gICAgIH0KLSsgICAgaWYg KCFfdXNlX2Rpc2NhcmRfcGFzc3dvcmQpIHsKLSsgICAgICAgIENIRUNLX0FQUF9JTl9DU1ZfRU5W X1ZBUklBQkxFUyAoX3VzZV9kaXNjYXJkX3Bhc3N3b3JkLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBJQlVTX0RJU0NBUkRfUEFTU1dPUkRfQVBQUywKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Rpc2NhcmRfcGFzc3dvcmRfYXBwcywK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSk7Ci0rICAgIH0K LSsKLSsjdW5kZWYgQ0hFQ0tfQVBQX0lOX0NTVl9FTlZfVkFSSUFCTEVTCi0gCi0gICAgIC8qIGlu aXQgYnVzIG9iamVjdCAqLwotICAgICBpZiAoX2J1cyA9PSBOVUxMKSB7Ci1AQCAtOTI2LDcgKzk1 NywxMCBAQCBpYnVzX2ltX2NvbnRleHRfZm9jdXNfaW4gKEd0a0lNQ29udGV4dCAqY29udGV4dCkK LSAKLSAgICAgaWJ1c2ltY29udGV4dC0+aGFzX2ZvY3VzID0gVFJVRTsKLSAgICAgaWYgKGlidXNp bWNvbnRleHQtPmlidXNjb250ZXh0KSB7Ci0tICAgICAgICBfc2V0X2NvbnRlbnRfdHlwZSAoaWJ1 c2ltY29udGV4dCk7Ci0rICAgICAgICBpZiAoIV9zZXRfY29udGVudF90eXBlIChpYnVzaW1jb250 ZXh0KSkgewotKyAgICAgICAgICAgIGlidXNpbWNvbnRleHQtPmhhc19mb2N1cyA9IEZBTFNFOwot KyAgICAgICAgICAgIHJldHVybjsKLSsgICAgICAgIH0KLSAgICAgICAgIGlidXNfaW5wdXRfY29u dGV4dF9mb2N1c19pbiAoaWJ1c2ltY29udGV4dC0+aWJ1c2NvbnRleHQpOwotICAgICB9Ci0gCi1A QCAtOTU4LDkgKzk5MiwxNCBAQCBpYnVzX2ltX2NvbnRleHRfZm9jdXNfb3V0IChHdGtJTUNvbnRl eHQgKmNvbnRleHQpCi0gICAgICAgICByZXR1cm47Ci0gICAgIH0KLSAKLS0gICAgZ19vYmplY3Rf cmVtb3ZlX3dlYWtfcG9pbnRlciAoKEdPYmplY3QgKikgY29udGV4dCwKLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGdwb2ludGVyICopICZfZm9jdXNfaW1fY29udGV4dCk7Ci0t ICAgIF9mb2N1c19pbV9jb250ZXh0ID0gTlVMTDsKLSsgICAgLyogSWYgX3VzZV9kaXNjYXJkX3Bh c3N3b3JkIGlzIFRSVUUgb3IgR3RrRW50cnkgaGFzIG5vIHZpc2liaWxpdHksCi0rICAgICAqIF9m b2N1c19pbV9jb250ZXh0IGlzIE5VTEwuCi0rICAgICAqLwotKyAgICBpZiAoX2ZvY3VzX2ltX2Nv bnRleHQpIHsKLSsgICAgICAgIGdfb2JqZWN0X3JlbW92ZV93ZWFrX3BvaW50ZXIgKChHT2JqZWN0 ICopIGNvbnRleHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3Bv aW50ZXIgKikgJl9mb2N1c19pbV9jb250ZXh0KTsKLSsgICAgICAgIF9mb2N1c19pbV9jb250ZXh0 ID0gTlVMTDsKLSsgICAgfQotIAotICAgICBpYnVzaW1jb250ZXh0LT5oYXNfZm9jdXMgPSBGQUxT RTsKLSAgICAgaWYgKGlidXNpbWNvbnRleHQtPmlidXNjb250ZXh0KSB7Ci0tLSAKLTIuMTcuMQot Ci1Gcm9tIGRjNWU3ZWViYTMwZDBiYzIzMjdmZmE1NjJjZGY2Y2EwYWUyM2FlY2MgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCi1Gcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5j b20+Ci1EYXRlOiBNb24sIDYgQXVnIDIwMTggMTU6MjY6NDIgKzA5MDAKLVN1YmplY3Q6IFtQQVRD SF0gdWkvZ3RrMzogU2hvdyBwcmV2aW91cyBlbW9qaXMgd2l0aCAiaGlzdG9yeSIgYW5ub3RhdGlv bgotCi0tLS0KLSB1aS9ndGszL2Vtb2ppZXIudmFsYSB8IDEwICsrKysrKysrLS0KLSAxIGZpbGUg Y2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEv dWkvZ3RrMy9lbW9qaWVyLnZhbGEgYi91aS9ndGszL2Vtb2ppZXIudmFsYQotaW5kZXggN2JlYjZm MGEuLjg1ZGNkY2ViIDEwMDY0NAotLS0tIGEvdWkvZ3RrMy9lbW9qaWVyLnZhbGEKLSsrKyBiL3Vp L2d0azMvZW1vamllci52YWxhCi1AQCAtMTI5NCw4ICsxMjk0LDE0IEBAIHB1YmxpYyBjbGFzcyBJ QnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7Ci0gICAgICAgICAgICAgcmV0dXJu OwotICAgICAgICAgfQotICAgICAgICAgc3RyaW5nPyB1bmljb2RlX3BvaW50ID0gY2hlY2tfdW5p Y29kZV9wb2ludChhbm5vdGF0aW9uKTsKLS0gICAgICAgIEdMaWIuU0xpc3Q8c3RyaW5nPj8gdG90 YWxfZW1vamlzID0KLS0gICAgICAgICAgICBsb29rdXBfZW1vamlzX2Zyb21fYW5ub3RhdGlvbihh bm5vdGF0aW9uKTsKLSsgICAgICAgIEdMaWIuU0xpc3Q8c3RyaW5nPj8gdG90YWxfZW1vamlzID0g bnVsbDsKLSsgICAgICAgIGlmIChhbm5vdGF0aW9uLmFzY2lpX2Nhc2VjbXAoImhpc3RvcnkiKSA9 PSAwKSB7Ci0rICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX2Zhdm9yaXRlcy5sZW5n dGg7IGkrKykgewotKyAgICAgICAgICAgICAgICB0b3RhbF9lbW9qaXMuYXBwZW5kKG1fZmF2b3Jp dGVzW2ldLmR1cCgpKTsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICB9Ci0rICAgICAgICBpZiAo dG90YWxfZW1vamlzID09IG51bGwpCi0rICAgICAgICAgICAgdG90YWxfZW1vamlzID0gbG9va3Vw X2Vtb2ppc19mcm9tX2Fubm90YXRpb24oYW5ub3RhdGlvbik7Ci0gICAgICAgICBpZiAodG90YWxf ZW1vamlzID09IG51bGwpIHsKLSAgICAgICAgICAgICAvKiBVc2VycyBjYW4gdHlwZSB0aXRsZSBz dHJpbmdzIGFnYWluc3QgbG93ZXIgY2FzZS4KLSAgICAgICAgICAgICAgKiBFLmcuICJTbWlsZSIg YWdhaW5zdCAic21pbGUiCi0tLSAKLTIuMTcuMQotCi1Gcm9tIDQyOGU2NGVhYzhmN2RjM2ZmNjAy MzQ0MzVmZTVmMzRkNTAxMjY0MzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBmdWpp d2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDYgQXVnIDIwMTgg MTU6NTk6MDYgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gc3JjOiBEZXNjcmliZSAiZGVmYXVsdCIg bGF5b3V0IGluIGlidXNfZW5naW5lX2Rlc2NfbmV3KCkKLQotQlVHPWh0dHBzOi8vZ2l0aHViLmNv bS9pYnVzL2lidXMvaXNzdWVzLzIwMTEKLS0tLQotIHNyYy9pYnVzZW5naW5lZGVzYy5oIHwgMTEg KysrKysrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlv bigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2lidXNlbmdpbmVkZXNjLmggYi9zcmMvaWJ1c2VuZ2lu ZWRlc2MuaAotaW5kZXggNDVlYzA2YmYuLjAwYTk4ZTQxIDEwMDY0NAotLS0tIGEvc3JjL2lidXNl bmdpbmVkZXNjLmgKLSsrKyBiL3NyYy9pYnVzZW5naW5lZGVzYy5oCi1AQCAtMiw3ICsyLDggQEAK LSAvKiB2aW06c2V0IGV0IHN0cz00OiAqLwotIC8qIGJ1cyAtIFRoZSBJbnB1dCBCdXMKLSAgKiBD b3B5cmlnaHQgKEMpIDIwMDgtMjAxNSBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1YW5nQGdtYWlsLmNv bT4KLS0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNSBSZWQgSGF0LCBJbmMuCi0rICogQ29weXJp Z2h0IChDKSAyMDExLTIwMTggVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5j b20+Ci0rICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTggUmVkIEhhdCwgSW5jLgotICAqCi0gICog VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vcgotICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMKLUBAIC0xMDcsNiArMTA4LDEwIEBAIEdUeXBlICAgICAgICAgICAgaWJ1c19l bmdpbmVfZGVzY19nZXRfdHlwZSAgICAgICh2b2lkKTsKLSAgKiBAbGF5b3V0OiBLZXlib2FyZCBs YXlvdXQKLSAgKgotICAqIENyZWF0ZXMgYSBuZXcgI0lCdXNFbmdpbmVEZXNjLgotKyAqIElmIGxh eW91dCBpcyAiZGVmYXVsdCIsIHRoZSBlbmdpbmUgaW5oZXJpdHMgdGhlIGN1cnJlbnQgbGF5b3V0 IGFuZAotKyAqIGRvZXMgbm90IGNoYW5nZSB0aGUgbGF5b3V0LiBUaGUgbGF5b3V0cyAiZGVmYXVs dCIgYW5kICIiIGFyZSBzYW1lLgotKyAqIEUuZy4gSWYgeW91IHN3aXRjaCBKUCBYS0IgZW5naW5l IGFuZCBhbiBpbnB1dCBtZXRob2QgZW5naW5lIChJTUUpLAotKyAqIHRoZSBJTUUgaW5oZXJpdHMg dGhlIEpQIGxheW91dC4KLSAgKgotICAqIFJldHVybnM6IEEgbmV3bHkgYWxsb2NhdGVkIElCdXNF bmdpbmVEZXNjLgotICAqLwotQEAgLTEyOCw2ICsxMzMsMTAgQEAgSUJ1c0VuZ2luZURlc2MgICpp YnVzX2VuZ2luZV9kZXNjX25ldyAgICAgICAgICAgKGNvbnN0IGdjaGFyICAgICpuYW1lLAotICAq IGlidXNfZW5naW5lX2Rlc2NfbmV3X3ZhcmFyZ3MoKSBzdXBwb3J0cyB0aGUgdmFfbGlzdCBmb3Jt YXQuCi0gICogbmFtZSBwcm9wZXJ0eSBpcyByZXF1aXJlZC4gZS5nLgotICAqIGlidXNfZW5naW5l X2Rlc2NfbmV3X3ZhcmFyZ3MoIm5hbWUiLCAiaWJ1cy1mb28iLCAibGFuZ3VhZ2UiLCAidXMiLCBO VUxMKQotKyAqIElmIGxheW91dCBpcyAiZGVmYXVsdCIsIHRoZSBlbmdpbmUgaW5oZXJpdHMgdGhl IGN1cnJlbnQgbGF5b3V0IGFuZAotKyAqIGRvZXMgbm90IGNoYW5nZSB0aGUgbGF5b3V0LiBUaGUg bGF5b3V0cyAiZGVmYXVsdCIgYW5kICIiIGFyZSBzYW1lLgotKyAqIEUuZy4gSWYgeW91IHN3aXRj aCBKUCBYS0IgZW5naW5lIGFuZCBhbiBpbnB1dCBtZXRob2QgZW5naW5lIChJTUUpLAotKyAqIHRo ZSBJTUUgaW5oZXJpdHMgdGhlIEpQIGxheW91dC4KLSAgKgotICAqIFJldHVybnM6IEEgbmV3bHkg YWxsb2NhdGVkIElCdXNFbmdpbmVEZXNjLgotICAqLwotLS0gCi0yLjE3LjEKLQo=