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: Jakub Jelinek To: git-commits@fedoraproject.org Subject: [rpms/gcc] rhel-f41-base: 4.4.1-16 Date: Mon, 29 Jun 2026 12:24:37 GMT Message-ID: <178273587768.1.6842584356701476664.rpms-gcc-b90c67c32ef0@fedoraproject.org> List-ID: X-Git-Repo: rpms/gcc X-Git-Branch: rhel-f41-base X-Git-Rev: b90c67c32ef034e98907602223dc9f8517c7a324 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2NjCkJyYW5jaCA6 IHJoZWwtZjQxLWJhc2UKQ29tbWl0IDogYjkwYzY3YzMyZWYwMzRlOTg5MDc2MDIyMjNkYzlmODUx N2M3YTMyNApBdXRob3IgOiBKYWt1YiBKZWxpbmVrIDxqYWt1YkBmZWRvcmFwcm9qZWN0Lm9yZz4K RGF0ZSAgIDogMjAwOS0wOS0yM1QxODoyMTowOSswMDowMApTdGF0cyAgOiArMjEvLTE1MDUgaW4g NiBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ2Nj L2MvYjkwYzY3YzMyZWYwMzRlOTg5MDc2MDIyMjNkYzlmODUxN2M3YTMyND9icmFuY2g9cmhlbC1m NDEtYmFzZQoKTG9nOgo0LjQuMS0xNgoKLS0tCmRpZmYgLS1naXQgYS8uY3ZzaWdub3JlIGIvLmN2 c2lnbm9yZQppbmRleCA2MGQyYmJmLi42YWFiNGMxIDEwMDY0NAotLS0gYS8uY3ZzaWdub3JlCisr KyBiLy5jdnNpZ25vcmUKQEAgLTEsMiArMSwyIEBACiBmYXN0amFyLTAuOTcudGFyLmd6Ci1nY2Mt NC40LjEtMjAwOTA5MTgudGFyLmJ6MgorZ2NjLTQuNC4xLTIwMDkwOTIzLnRhci5iejIKCmRpZmYg LS1naXQgYS9nY2Muc3BlYyBiL2djYy5zcGVjCmluZGV4IDI0MGEzYjguLjZmMGY1MWUgMTAwNjQ0 Ci0tLSBhL2djYy5zcGVjCisrKyBiL2djYy5zcGVjCkBAIC0xLDkgKzEsOSBAQAotJWdsb2JhbCBE QVRFIDIwMDkwOTE4Ci0lZ2xvYmFsIFNWTlJFViAxNTE4MzUKKyVnbG9iYWwgREFURSAyMDA5MDky MworJWdsb2JhbCBTVk5SRVYgMTUyMDkyCiAlZ2xvYmFsIGdjY192ZXJzaW9uIDQuNC4xCiAjIE5v dGUsIGdjY19yZWxlYXNlIG11c3QgYmUgaW50ZWdlciwgaWYgeW91IHdhbnQgdG8gYWRkIHN1ZmZp eGVzIHRvCiAjICV7cmVsZWFzZX0sIGFwcGVuZCB0aGVtIGFmdGVyICV7Z2NjX3JlbGVhc2V9IG9u IFJlbGVhc2U6IGxpbmUuCi0lZ2xvYmFsIGdjY19yZWxlYXNlIDE1CislZ2xvYmFsIGdjY19yZWxl YXNlIDE2CiAlZ2xvYmFsIF91bnBhY2thZ2VkX2ZpbGVzX3Rlcm1pbmF0ZV9idWlsZCAwCiAlZ2xv YmFsIG11bHRpbGliXzY0X2FyY2hzIHNwYXJjNjQgcHBjNjQgczM5MHggeDg2XzY0CiAlZ2xvYmFs IGluY2x1ZGVfZ2FwcGxldHZpZXdlciAxCkBAIC0xNTksMTAgKzE1OSw3IEBAIFBhdGNoMTU6IGdj YzQ0LXJhdy1zdHJpbmcucGF0Y2gKIFBhdGNoMTY6IGdjYzQ0LXVud2luZC1kZWJ1Zy1ob29rLnBh dGNoCiBQYXRjaDE3OiBnY2M0NC1wcjM4NzU3LnBhdGNoCiBQYXRjaDE4OiBnY2M0NC1saWJzdGRj KystZG9jcy5wYXRjaAotUGF0Y2gxOTogZ2NjNDQtdnRhLWNmZ2V4cGFuZC1wdHItbW9kZS1wcjQx MjQ4LnBhdGNoCi1QYXRjaDIwOiBnY2M0NC1wb3dlcnBjLWxpYmdjY19zX3NvLnBhdGNoCi1QYXRj aDIxOiBnY2M0NC1wcjQxMTc1LnBhdGNoCi1QYXRjaDIyOiBnY2M0NC1wcGM2NC1haXhkZXNjLnBh dGNoCitQYXRjaDE5OiBnY2M0NC1wcGM2NC1haXhkZXNjLnBhdGNoCiAKIFBhdGNoMTAwMDogZmFz dGphci0wLjk3LXNlZ2ZhdWx0LnBhdGNoCiAKQEAgLTQ2OCwxMCArNDY1LDcgQEAgd2hpY2ggYXJl IHJlcXVpcmVkIHRvIGNvbXBpbGUgd2l0aCB0aGUgR05BVC4KICVpZiAle2J1aWxkX2xpYnN0ZGN4 eF9kb2NzfQogJXBhdGNoMTggLXAwIC1iIC5saWJzdGRjKystZG9jc34KICVlbmRpZgotJXBhdGNo MTkgLXAwIC1iIC52dGEtY2ZnZXhwYW5kLXB0ci1tb2RlLXByNDEyNDh+Ci0lcGF0Y2gyMCAtcDAg LWIgLnBvd2VycGMtbGliZ2NjX3Nfc29+Ci0lcGF0Y2gyMSAtcDAgLWIgLnByNDExNzV+Ci0lcGF0 Y2gyMiAtcDAgLWIgLnBwYzY0LWFpeGRlc2N+CislcGF0Y2gxOSAtcDAgLWIgLnBwYzY0LWFpeGRl c2N+CiAKICMgVGhpcyB0ZXN0Y2FzZSBkb2Vzbid0IGNvbXBpbGUuCiBybSBsaWJqYXZhL3Rlc3Rz dWl0ZS9saWJqYXZhLmxhbmcvUFIzNTAyMCoKQEAgLTE4MjcsNiArMTgyMSwyMCBAQCBmaQogJWRv YyBycG0uZG9jL2NoYW5nZWxvZ3MvbGlibXVkZmxhcC9DaGFuZ2VMb2cqCiAKICVjaGFuZ2Vsb2cK KyogV2VkIFNlcCAyMyAyMDA5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuNC4x LTE2CistIHVwZGF0ZSBmcm9tIGdjYy00XzQtYnJhbmNoCisgIC0gUFJzIGMvMzk3NzksIGMvNDEw NDksIGRlYnVnLzQxMDY1LCBsaWJmZmkvNDAyNDIsIGxpYmZmaS80MTQ0MywKKwlsaWJnZm9ydHJh bi80MTMyOCwgdGVzdHN1aXRlLzQxMjg4CistIFZUQSBiYWNrcG9ydHMKKyAgLSBQUnMgYm9vdHN0 cmFwLzQxMzk3LCBib290c3RyYXAvNDE0MDQsIGJvb3RzdHJhcC80MTQwNSwgZGVidWcvNDEyOTUs CisJZGVidWcvNDE0MTEsIGRlYnVnLzQxNDM5CisgIC0gZml4IElDRSBjYXVzZWQgYnkgcmVsb2Fk IHN1YnN0aXR1dGlvbiBvZiBjb25zdF9pbnQgaW50byB6ZXJvX2V4dGVuZAorICAgIGluIGRlYnVn X2luc24gKCM1MjQ0MzkpCistIGZpeCBhbHRpdmVjIHZlY19jbXB7bHQsZ3R9ICgjNTI0MjczKQor LSBmaXggLW1uby1zY2hlZC1lcGlsb2d1ZSBvbiBwcGMgKCM1MjQyMTYsIFBSIHRhcmdldC80MDQ3 MykKKy0gZG9uJ3QgbG9vayBhdCBNVURGTEFQX09QVElPTlMgZW52IHZhciBpbiBzdWlkL3NnaWQg cHJvZ3JhbXMKKyAgKFBSIGxpYm11ZGZsYXAvNDE0MzMpCisKICogRnJpIFNlcCAxOCAyMDA5IEph a3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuNC4xLTE1CiAtIGZvciBub3cgZGlzYWJs ZSBvdXQgb2YgbGluZSBncHIvZnByIHNhdmluZyBvbiBwcGMgd2l0aCAtbTY0IC1PcyAtbWNhbGwt YWl4ZGVzYwogLSBmaXggRFdfQVRfZGVjbF97ZmlsZSxsb2NhdGlvbn0gZm9yIERXX1RBR19zdHJ1 Y3R1cmVfdHlwZSBmb3IgQyBzdHJ1Y3RzCgpkaWZmIC0tZ2l0IGEvZ2NjNDQtcG93ZXJwYy1saWJn Y2Nfc19zby5wYXRjaCBiL2djYzQ0LXBvd2VycGMtbGliZ2NjX3Nfc28ucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmMTY3NGQuLjAwMDAwMDAKLS0tIGEvZ2NjNDQtcG93ZXJw Yy1saWJnY2Nfc19zby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNiArMCwwIEBACi1zdm4g ZGlmZiAtcjE1MTU2NzoxNTE1Njggc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvdHJ1bmsK LQotMjAwOS0wOS0wOSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+Ci0KLQkqIGNv bmZpZy90LXNsaWJnY2MtZWxmLXZlciAoU0hMSUJfTUFLRV9TT0xJTkssIFNITElCX0lOU1RBTExf U09MSU5LKToKLQlOZXcgdmFyaWFibGVzLgotCShTSExJQl9MSU5LLCBTSExJQl9JTlNUQUxMKTog VXNlIHRoZW0uCi0JKiBjb25maWcvdC1zbGliZ2NjLWxpYmdjYzogTmV3IGZpbGUuCi0JKiBjb25m aWcuZ2NjIChwb3dlcnBjKi0qLWxpbnV4KiwgcG93ZXJwYyotKi1nbnUqKTogVXNlIGl0LgotCi0t LS0gZ2NjL2NvbmZpZy5nY2MJKHJldmlzaW9uIDE1MTU2NykKLSsrKyBnY2MvY29uZmlnLmdjYwko cmV2aXNpb24gMTUxNTY4KQotQEAgLTE3MzgsMTIgKzE3MzgsMTIgQEAgcG93ZXJwYzY0LSotbGlu dXgqKQotIAkJdG1fZmlsZT0icnM2MDAwL3NlY3VyZXBsdC5oICR7dG1fZmlsZX0iCi0gCWZpCi0g CWV4dHJhX29wdGlvbnM9IiR7ZXh0cmFfb3B0aW9uc30gcnM2MDAwL3N5c3Y0Lm9wdCByczYwMDAv bGludXg2NC5vcHQiCi0tCXRtYWtlX2ZpbGU9InQtZGZwcnVsZXMgcnM2MDAwL3QtZnBydWxlcyAk e3RtYWtlX2ZpbGV9IHJzNjAwMC90LXBwY2NvbW0gcnM2MDAwL3QtbGludXg2NCByczYwMDAvdC1m cHJ1bGVzLXNvZnRmcCBzb2Z0LWZwL3Qtc29mdGZwIgotKwl0bWFrZV9maWxlPSJ0LWRmcHJ1bGVz IHJzNjAwMC90LWZwcnVsZXMgJHt0bWFrZV9maWxlfSB0LXNsaWJnY2MtbGliZ2NjIHJzNjAwMC90 LXBwY2NvbW0gcnM2MDAwL3QtbGludXg2NCByczYwMDAvdC1mcHJ1bGVzLXNvZnRmcCBzb2Z0LWZw L3Qtc29mdGZwIgotIAk7OwotIHBvd2VycGM2NC0qLWdudSopCi0gCXRtX2ZpbGU9IiR7Y3B1X3R5 cGV9LyR7Y3B1X3R5cGV9LmggZWxmb3MuaCBzdnI0LmggZnJlZWJzZC1zcGVjLmggZ251LmggcnM2 MDAwL3N5c3Y0LmggcnM2MDAwL2xpbnV4NjQuaCByczYwMDAvZ251LmgiCi0gCWV4dHJhX29wdGlv bnM9IiR7ZXh0cmFfb3B0aW9uc30gcnM2MDAwL3N5c3Y0Lm9wdCByczYwMDAvbGludXg2NC5vcHQi Ci0tCXRtYWtlX2ZpbGU9InJzNjAwMC90LWZwcnVsZXMgdC1zbGliZ2NjLWVsZi12ZXIgdC1nbnUg cnM2MDAwL3QtbGludXg2NCByczYwMDAvdC1mcHJ1bGVzLXNvZnRmcCBzb2Z0LWZwL3Qtc29mdGZw IgotKwl0bWFrZV9maWxlPSJyczYwMDAvdC1mcHJ1bGVzIHQtc2xpYmdjYy1lbGYtdmVyIHQtc2xp YmdjYy1saWJnY2MgdC1nbnUgcnM2MDAwL3QtbGludXg2NCByczYwMDAvdC1mcHJ1bGVzLXNvZnRm cCBzb2Z0LWZwL3Qtc29mdGZwIgotIAk7OwotIHBvd2VycGMtKi1kYXJ3aW4qKQotIAlleHRyYV9v cHRpb25zPSIke2V4dHJhX29wdGlvbnN9IHJzNjAwMC9kYXJ3aW4ub3B0IgotQEAgLTE4MjAsMjIg KzE4MjAsMjIgQEAgcG93ZXJwYy0qLXJ0ZW1zKikKLSBwb3dlcnBjLSotbGludXgqYWx0aXZlYyop Ci0gCXRtX2ZpbGU9IiR7dG1fZmlsZX0gZGJ4ZWxmLmggZWxmb3MuaCBzdnI0LmggZnJlZWJzZC1z cGVjLmggcnM2MDAwL3N5c3Y0LmggcnM2MDAwL2xpbnV4LmggcnM2MDAwL2xpbnV4YWx0aXZlYy5o IgotIAlleHRyYV9vcHRpb25zPSIke2V4dHJhX29wdGlvbnN9IHJzNjAwMC9zeXN2NC5vcHQiCi0t CXRtYWtlX2ZpbGU9InJzNjAwMC90LWZwcnVsZXMgcnM2MDAwL3QtZnBydWxlcy1zb2Z0ZnAgc29m dC1mcC90LXNvZnRmcCByczYwMDAvdC1wcGNvcyAke3RtYWtlX2ZpbGV9IHJzNjAwMC90LXBwY2Nv bW0iCi0rCXRtYWtlX2ZpbGU9InJzNjAwMC90LWZwcnVsZXMgcnM2MDAwL3QtZnBydWxlcy1zb2Z0 ZnAgc29mdC1mcC90LXNvZnRmcCByczYwMDAvdC1wcGNvcyAke3RtYWtlX2ZpbGV9IHQtc2xpYmdj Yy1saWJnY2MgcnM2MDAwL3QtcHBjY29tbSIKLSAJOzsKLSBwb3dlcnBjLSotbGludXgqc3BlKikK LSAJdG1fZmlsZT0iJHt0bV9maWxlfSBkYnhlbGYuaCBlbGZvcy5oIHN2cjQuaCBmcmVlYnNkLXNw ZWMuaCByczYwMDAvc3lzdjQuaCByczYwMDAvbGludXguaCByczYwMDAvbGludXhzcGUuaCByczYw MDAvZTUwMC5oIgotIAlleHRyYV9vcHRpb25zPSIke2V4dHJhX29wdGlvbnN9IHJzNjAwMC9zeXN2 NC5vcHQiCi0tCXRtYWtlX2ZpbGU9InQtZGZwcnVsZXMgcnM2MDAwL3QtZnBydWxlcyByczYwMDAv dC1mcHJ1bGVzLXNvZnRmcCBzb2Z0LWZwL3Qtc29mdGZwIHJzNjAwMC90LXBwY29zICR7dG1ha2Vf ZmlsZX0gcnM2MDAwL3QtcHBjY29tbSIKLSsJdG1ha2VfZmlsZT0idC1kZnBydWxlcyByczYwMDAv dC1mcHJ1bGVzIHJzNjAwMC90LWZwcnVsZXMtc29mdGZwIHNvZnQtZnAvdC1zb2Z0ZnAgcnM2MDAw L3QtcHBjb3MgJHt0bWFrZV9maWxlfSB0LXNsaWJnY2MtbGliZ2NjIHJzNjAwMC90LXBwY2NvbW0i Ci0gCTs7Ci0gcG93ZXJwYy0qLWxpbnV4KnBhaXJlZCopCi0gICAgICAgICB0bV9maWxlPSIke3Rt X2ZpbGV9IGRieGVsZi5oIGVsZm9zLmggc3ZyNC5oIGZyZWVic2Qtc3BlYy5oIHJzNjAwMC9zeXN2 NC5oIHJzNjAwMC9saW51eC5oIHJzNjAwMC83NTBjbC5oIgotICAgICAgICAgZXh0cmFfb3B0aW9u cz0iJHtleHRyYV9vcHRpb25zfSByczYwMDAvc3lzdjQub3B0IgotLSAgICAgICAgdG1ha2VfZmls ZT0icnM2MDAwL3QtZnBydWxlcyByczYwMDAvdC1mcHJ1bGVzLXNvZnRmcCBzb2Z0LWZwL3Qtc29m dGZwIHJzNjAwMC90LXBwY29zICR7dG1ha2VfZmlsZX0gcnM2MDAwL3QtcHBjY29tbSIKLSsgICAg ICAgIHRtYWtlX2ZpbGU9InJzNjAwMC90LWZwcnVsZXMgcnM2MDAwL3QtZnBydWxlcy1zb2Z0ZnAg c29mdC1mcC90LXNvZnRmcCByczYwMDAvdC1wcGNvcyAke3RtYWtlX2ZpbGV9IHQtc2xpYmdjYy1s aWJnY2MgcnM2MDAwL3QtcHBjY29tbSIKLSAgICAgICAgIDs7Ci0gcG93ZXJwYy0qLWxpbnV4KikK LSAJdG1fZmlsZT0iJHt0bV9maWxlfSBkYnhlbGYuaCBlbGZvcy5oIHN2cjQuaCBmcmVlYnNkLXNw ZWMuaCByczYwMDAvc3lzdjQuaCIKLSAJZXh0cmFfb3B0aW9ucz0iJHtleHRyYV9vcHRpb25zfSBy czYwMDAvc3lzdjQub3B0IgotLQl0bWFrZV9maWxlPSJ0LWRmcHJ1bGVzIHJzNjAwMC90LWZwcnVs ZXMgcnM2MDAwL3QtcHBjb3MgJHt0bWFrZV9maWxlfSByczYwMDAvdC1wcGNjb21tIgotKwl0bWFr ZV9maWxlPSJ0LWRmcHJ1bGVzIHJzNjAwMC90LWZwcnVsZXMgcnM2MDAwL3QtcHBjb3MgJHt0bWFr ZV9maWxlfSB0LXNsaWJnY2MtbGliZ2NjIHJzNjAwMC90LXBwY2NvbW0iCi0gCWNhc2UgJHtlbmFi bGVfdGFyZ2V0c306JHtjcHVfaXNfNjRiaXR9IGluCi0gCSAgICAqcG93ZXJwYzY0KiB8IGFsbDoq IHwgKjp5ZXMpCi0gCQlpZiB0ZXN0IHgkY3B1X2lzXzY0Yml0ID0geHllczsgdGhlbgotQEAgLTE4 NTcsMTQgKzE4NTcsMTQgQEAgcG93ZXJwYy0qLWxpbnV4KikKLSBwb3dlcnBjLSotZ251LWdudWFs dGl2ZWMqKQotIAl0bV9maWxlPSIke2NwdV90eXBlfS8ke2NwdV90eXBlfS5oIGVsZm9zLmggc3Zy NC5oIGZyZWVic2Qtc3BlYy5oIGdudS5oIHJzNjAwMC9zeXN2NC5oIHJzNjAwMC9saW51eC5oIHJz NjAwMC9saW51eGFsdGl2ZWMuaCByczYwMDAvZ251LmgiCi0gCWV4dHJhX29wdGlvbnM9IiR7ZXh0 cmFfb3B0aW9uc30gcnM2MDAwL3N5c3Y0Lm9wdCIKLS0JdG1ha2VfZmlsZT0icnM2MDAwL3QtZnBy dWxlcyByczYwMDAvdC1mcHJ1bGVzLWZwYml0IHJzNjAwMC90LXBwY29zIHQtc2xpYmdjYy1lbGYt dmVyIHQtZ251IHJzNjAwMC90LXBwY2NvbW0iCi0rCXRtYWtlX2ZpbGU9InJzNjAwMC90LWZwcnVs ZXMgcnM2MDAwL3QtZnBydWxlcy1mcGJpdCByczYwMDAvdC1wcGNvcyB0LXNsaWJnY2MtZWxmLXZl ciB0LXNsaWJnY2MtbGliZ2NjIHQtZ251IHJzNjAwMC90LXBwY2NvbW0iCi0gCWlmIHRlc3QgeCRl bmFibGVfdGhyZWFkcyA9IHh5ZXM7IHRoZW4KLSAJCXRocmVhZF9maWxlPSdwb3NpeCcKLSAJZmkK LSAJOzsKLSBwb3dlcnBjLSotZ251KikKLSAJdG1fZmlsZT0iJHtjcHVfdHlwZX0vJHtjcHVfdHlw ZX0uaCBlbGZvcy5oIHN2cjQuaCBmcmVlYnNkLXNwZWMuaCBnbnUuaCByczYwMDAvc3lzdjQuaCBy czYwMDAvbGludXguaCByczYwMDAvZ251LmgiCi0tCXRtYWtlX2ZpbGU9InJzNjAwMC90LWZwcnVs ZXMgcnM2MDAwL3QtZnBydWxlcy1mcGJpdCByczYwMDAvdC1wcGNvcyB0LXNsaWJnY2MtZWxmLXZl ciB0LWdudSByczYwMDAvdC1wcGNjb21tIgotKwl0bWFrZV9maWxlPSJyczYwMDAvdC1mcHJ1bGVz IHJzNjAwMC90LWZwcnVsZXMtZnBiaXQgcnM2MDAwL3QtcHBjb3MgdC1zbGliZ2NjLWVsZi12ZXIg dC1zbGliZ2NjLWxpYmdjYyB0LWdudSByczYwMDAvdC1wcGNjb21tIgotIAlleHRyYV9vcHRpb25z PSIke2V4dHJhX29wdGlvbnN9IHJzNjAwMC9zeXN2NC5vcHQiCi0gCWlmIHRlc3QgeCRlbmFibGVf dGhyZWFkcyA9IHh5ZXM7IHRoZW4KLSAJCXRocmVhZF9maWxlPSdwb3NpeCcKLS0tLSBnY2MvY29u ZmlnL3Qtc2xpYmdjYy1saWJnY2MJKHJldmlzaW9uIDApCi0rKysgZ2NjL2NvbmZpZy90LXNsaWJn Y2MtbGliZ2NjCShyZXZpc2lvbiAxNTE1NjgpCi1AQCAtMCwwICsxLDMyIEBACi0rIyBDb3B5cmln aHQgKEMpIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIwotKyMgVGhpcyBm aWxlIGlzIHBhcnQgb2YgR0NDLgotKyMKLSsjIEdDQyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0 aW9uKQotKyMgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgR0NDIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQotKyMgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBz ZWUKLSsjIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsjIEluc3RlYWQgb2Yg Y3JlYXRpbmcgJChTSExJQl9TT0xJTkspIHN5bWxpbmsgY3JlYXRlIGEgR05VIGxkCi0rIyBsaW5r ZXIgc2NyaXB0IHdoaWNoIHNvdXJjZXMgaW4gYm90aCAkKFNITElCX1NPTkFNRSkgYW5kIGxpYmdj Yy5hLgotKyMgVGhpcyBpcyBuZWVkZWQgb24gdGFyZ2V0cyB3aGVyZSBsaWJnY2MuYSBjb250YWlu cyByb3V0aW5lcyB0aGF0IGFyZW4ndCBpbgotKyMgJChTSExJQl9TT05BTUUpIGFuZCBhcmUgbmVl ZGVkIGZvciBzaGFyZWQgbGlicmFyaWVzLgotKwotK1NITElCX01BS0VfU09MSU5LID0gXAotKwko ZWNobyAiLyogR05VIGxkIHNjcmlwdCI7IFwKLSsJIGVjaG8gIiAgIFVzZSB0aGUgc2hhcmVkIGxp YnJhcnksIGJ1dCBzb21lIGZ1bmN0aW9ucyBhcmUgb25seSBpbiI7IFwKLSsJIGVjaG8gIiAgIHRo ZSBzdGF0aWMgbGlicmFyeS4gICovIjsgXAotKwkgZWNobyAiR1JPVVAgKCAkKFNITElCX1NPTkFN RSkgbGliZ2NjLmEgKSIgXAotKwkpID4gJChTSExJQl9ESVIpLyQoU0hMSUJfU09MSU5LKQotK1NI TElCX0lOU1RBTExfU09MSU5LID0gXAotKwkkKElOU1RBTExfREFUQSkgJChTSExJQl9ESVIpLyQo U0hMSUJfU09MSU5LKSBcCi0rCSAgJCQoREVTVERJUikkJChzbGliZGlyKSQoU0hMSUJfU0xJQkRJ Ul9RVUFMKS8kKFNITElCX1NPTElOSykKLS0tLSBnY2MvY29uZmlnL3Qtc2xpYmdjYy1lbGYtdmVy CShyZXZpc2lvbiAxNTE1NjcpCi0rKysgZ2NjL2NvbmZpZy90LXNsaWJnY2MtZWxmLXZlcgkocmV2 aXNpb24gMTUxNTY4KQotQEAgLTI4LDYgKzI4LDkgQEAgU0hMSUJfT0JKUyA9IEBzaGxpYl9vYmpz QAotIFNITElCX0RJUiA9IEBtdWx0aWxpYl9kaXJACi0gU0hMSUJfU0xJQkRJUl9RVUFMID0gQHNo bGliX3NsaWJkaXJfcXVhbEAKLSBTSExJQl9MQyA9IC1sYwotK1NITElCX01BS0VfU09MSU5LID0g JChMTl9TKSAkKFNITElCX1NPTkFNRSkgJChTSExJQl9ESVIpLyQoU0hMSUJfU09MSU5LKQotK1NI TElCX0lOU1RBTExfU09MSU5LID0gJChMTl9TKSAkKFNITElCX1NPTkFNRSkgXAotKwkkJChERVNU RElSKSQkKHNsaWJkaXIpJChTSExJQl9TTElCRElSX1FVQUwpLyQoU0hMSUJfU09MSU5LKQotIAot IFNITElCX0xJTksgPSAkKEdDQ19GT1JfVEFSR0VUKSAkKExJQkdDQzJfQ0ZMQUdTKSAtc2hhcmVk IC1ub2RlZmF1bHRsaWJzIFwKLSAJLVdsLC0tc29uYW1lPSQoU0hMSUJfU09OQU1FKSBcCi1AQCAt NDAsNyArNDMsNyBAQCBTSExJQl9MSU5LID0gJChHQ0NfRk9SX1RBUkdFVCkgJChMSUJHQ0MyCi0g CQkkKFNITElCX0RJUikvJChTSExJQl9TT05BTUUpLmJhY2t1cDsgXAotIAllbHNlIHRydWU7IGZp ICYmIFwKLSAJbXYgJChTSExJQl9ESVIpLyQoU0hMSUJfU09OQU1FKS50bXAgJChTSExJQl9ESVIp LyQoU0hMSUJfU09OQU1FKSAmJiBcCi0tCSQoTE5fUykgJChTSExJQl9TT05BTUUpICQoU0hMSUJf RElSKS8kKFNITElCX1NPTElOSykKLSsJJChTSExJQl9NQUtFX1NPTElOSykKLSAjICQoc2xpYmRp cikgZG91YmxlIHF1b3RlZCB0byBwcm90ZWN0IGl0IGZyb20gZXhwYW5zaW9uIHdoaWxlIGJ1aWxk aW5nCi0gIyBsaWJnY2MubWsuICBXZSB3YW50IHRoaXMgZGVsYXllZCB1bnRpbCBhY3R1YWwgaW5z dGFsbCB0aW1lLgotIFNITElCX0lOU1RBTEwgPSBcCi1AQCAtNDgsNyArNTEsNiBAQCBTSExJQl9J TlNUQUxMID0gXAotIAkkKElOU1RBTExfREFUQSkgJChTSExJQl9ESVIpLyQoU0hMSUJfU09OQU1F KSBcCi0gCSAgJCQoREVTVERJUikkJChzbGliZGlyKSQoU0hMSUJfU0xJQkRJUl9RVUFMKS8kKFNI TElCX1NPTkFNRSk7IFwKLSAJcm0gLWYgJCQoREVTVERJUikkJChzbGliZGlyKSQoU0hMSUJfU0xJ QkRJUl9RVUFMKS8kKFNITElCX1NPTElOSyk7IFwKLS0JJChMTl9TKSAkKFNITElCX1NPTkFNRSkg XAotLQkgICQkKERFU1RESVIpJCQoc2xpYmRpcikkKFNITElCX1NMSUJESVJfUVVBTCkvJChTSExJ Ql9TT0xJTkspCi0rCSQoU0hMSUJfSU5TVEFMTF9TT0xJTkspCi0gU0hMSUJfTUtNQVAgPSAkKHNy Y2RpcikvbWttYXAtc3ltdmVyLmF3awotIFNITElCX01BUEZJTEVTID0gJChzcmNkaXIpL2xpYmdj Yy1zdGQudmVyCgpkaWZmIC0tZ2l0IGEvZ2NjNDQtcHI0MTE3NS5wYXRjaCBiL2djYzQ0LXByNDEx NzUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2YzE5YWYuLjAwMDAwMDAK LS0tIGEvZ2NjNDQtcHI0MTE3NS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyMDUgKzAsMCBA QAotMjAwOS0wOS0xNSAgTmF0aGFuIEZyb3lkICA8ZnJveWRuakBjb2Rlc291cmNlcnkuY29tPgot CSAgICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KLQotCVBSIHRhcmdldC80MTE3 NQotCVBSIHRhcmdldC80MDY3NwotCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAobm9fZ2xvYmFs X3JlZ3NfYWJvdmUpOiBGaXggcHJlY2VkZW5jZQotCXByb2JsZW0uCi0JKFNBVlJFU19OT0lOTElO RV9HUFJTX1NBVkVTX0xSLCBTQVZSRVNfTk9JTkxJTkVfRlBSU19TQVZFU19MUiwKLQlTQVZSRVNf Tk9JTkxJTkVfRlBSU19ET0VTTlRfUkVTVE9SRV9MUik6IE5ldyBzdHJhdGVneSBiaXRzLgotCShy czYwMDBfc2F2cmVzX3N0cmF0ZWd5KTogQWx3YXlzIHNhdmUgRlAgcmVnaXN0ZXJzIGlubGluZSBp ZiB0aGUKLQl0YXJnZXQgZG9lc24ndCBzdXBwb3J0IGhhcmR3YXJlIGRvdWJsZS1wcmVjaXNpb24u ICBTZXQgdGhlIGFib3ZlCi0JYml0cyBpbiByZXR1cm4gdmFsdWUgd2hlbiBuZWVkZWQuCi0JKHJz NjAwMF9zYXZyZXNfcm91dGluZV9zeW0pOiBGaXggY29tcHV0YXRpb24gZm9yIGNhY2hlIHNlbGVj dG9yLgotCU1hcmsgdGhlIGdlbmVyYXRlZCBzeW1ib2wgYXMgYSBmdW5jdGlvbi4gIFJlbmFtZSBl eGl0cCBhcmd1bWVudCB0bwotCWxyLiAgTW92ZSBjb2RlIGZvciBkZXRlcm1pbmluZyB0aGUgbmFt ZSBvZiB0aGUgc3ltYm9sLi4uCi0JKHJzNjAwMF9zYXZyZXNfcm91dGluZV9uYW1lKTogLi4uaGVy ZS4gIE5ldyBmdW5jdGlvbi4gIEFkZCBjYXNlcyBmb3IKLQlnZXR0aW5nIHRoZSBuYW1lcyByaWdo dCBvbiBBSVggYW5kIDY0LWJpdCBMaW51eC4KLQkoc2F2cmVzX3JvdXRpbmVfbmFtZSk6IE5ldyB2 YXJpYWJsZS4KLQkocnM2MDAwX21ha2Vfc2F2cmVzX3J0eCk6IFJlbmFtZSBleGl0cCBhcmd1bWVu dCB0byBsci4gIERvbid0IGFzc2VydAotCWxyIGlzbid0IHNldCB3aGVuIHNhdmVwLiAgVXNlIHIx MiByZXNwLiByMSBpbnN0ZWFkIG9mIHIxMSBkZXBlbmRpbmcKLQlvbiB3aGF0IHRoZSB0YXJnZXQg cm91dGluZSB1c2VzIGFzIGEgYmFzZSByZWdpc3Rlci4gIElmIHNhdmVwICYmIGxyCi0JZGVzY3Jp YmUgc2F2aW5nIG9mIHIwIGludG8gbWVtb3J5IHNsb3QuCi0JKHJzNjAwMF9lbWl0X3Byb2xvZ3Vl KTogQ29ycmVjdCB1c2Ugb2YgY2FsbF91c2VkX3JlZ3MuICBGaXggb3V0IG9mCi0JbGluZSBjYWxs cyBmb3IgQUlYIEFCSS4KLQkocnM2MDAwX291dHB1dF9mdW5jdGlvbl9wcm9sb2d1ZSk6IFVzZSBy czYwMDBfc2F2cmVzX3JvdXRpbmVfbmFtZSB0bwotCWRldGVybWluZSBGUCBzYXZlL3Jlc3RvcmUg ZnVuY3Rpb25zLgotCShyczYwMDBfZW1pdF9zdGFja19yZXNldCk6IEhhbmRsZSBzYXZyZXMgaWYg c3Bfb2Zmc2V0ICE9IDAgYW5kCi0JZnJhbWVfcmVnX3J0eCAhPSBzcF9yZWdfcnR4LiAgVXNlIGdl bl9hZGQzX2luc24gaW5zdGVhZCBvZgotCWdlbl9hZGRzaTMuCi0JKHJzNjAwMF9lbWl0X2VwaWxv Z3VlKTogQWRqdXN0IGNvbXB1dGF0aW9uIG9mIHJlc3RvcmVfbHIuCi0JRHVwbGljYXRlIHJlc3Rv cmF0aW9uIG9mIExSIGFuZCBleGVjdXRlIHRoZSBhcHByb3ByaWF0ZSBvbmUKLQlkZXBlbmRpbmcg b24gd2hldGhlciBHUFJzIGFyZSBiZWluZyByZXN0b3JlZCBpbmxpbmUuICBTZXQgcjExIGZyb20K LQlvZmZzZXR0ZWQgZnJhbWVfcmVnX3J0eCBpbnN0ZWFkIG9mIHNwX3JlZ19ydHg7IGlmIGZyYW1l X3JlZ19ydHggaXMKLQlyMTEsIGFkanVzdCBzcF9vZmZzZXQuICBVc2UgZ2VuX2FkZDNfaW5zbiBp bnN0ZWFkIG9mIGdlbl9hZGRzaTMuCi0JRml4IG91dCBvZiBsaW5lIGNhbGxzIGZvciBBSVggQUJJ LgotCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKCpyZXR1cm5fYW5kX3Jlc3RvcmVfZnByZWdz X2FpeF88bW9kZT4pOgotCU5ldyBpbnNuLgotCSogY29uZmlnL3JzNjAwMC9zcGUubWQgKCpzYXZl X2dwcmVnc19zcGUpOiBVc2UgZXhwbGljaXQgbWF0Y2ggZm9yCi0JcmVnaXN0ZXIgMTEuCi0JKCpy ZXN0b3JlX2dwcmVnc19zcGUpOiBMaWtld2lzZS4KLQkoKnJldHVybl9hbmRfcmVzdG9yZV9ncHJl Z3Nfc3BlKTogTGlrZXdpc2UuCi0JKiBjb25maWcvcnM2MDAwL2xpbnV4NjQuaCAoU0FWRV9GUF9T VUZGSVgsIFJFU1RPUkVfRlBfU1VGRklYKToKLQlEZWZpbmUgdG8gZW1wdHkgc3RyaW5nIHVuY29u ZGl0aW9uYWxseS4KLQkqIGNvbmZpZy9yczYwMDAvc3lzdjQuaCAoU0FWRV9GUF9TVUZGSVgsIFJF U1RPUkVfRlBfU1VGRklYKToKLQlEZWZpbmUgdG8gZW1wdHkgc3RyaW5nIHVuY29uZGl0aW9uYWxs eS4KLQkoR1BfU0FWRV9JTkxJTkUsIEZQX1NBVkVfSU5MSU5FKTogSGFuZGxlIFRBUkdFVF82NEJJ VCB0aGUgc2FtZSBhcwotCSFUQVJHRVRfNjRCSVQuCi0KLQkqIGdjYy50YXJnZXQvcG93ZXJwYy9w cjQxMTc1LmM6IE5ldyB0ZXN0LgotCi0tLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Bvd2Vy cGMvcHI0MTE3NS5jCShyZXZpc2lvbiAwKQotKysrIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9w b3dlcnBjL3ByNDExNzUuYwkocmV2aXNpb24gMTUxNzI5KQotQEAgLTAsMCArMSw0NjEgQEAKLSsv KiBQUiB0YXJnZXQvNDExNzUgKi8KLSsvKiB7IGRnLWRvIHJ1biB9ICovCi0rLyogeyBkZy1vcHRp b25zICItT3MiIH0gKi8KLSsKLSsjZGVmaW5lIFgyKG4pIFgxKG4jIzApIFgxKG4jIzEpCi0rI2Rl ZmluZSBYNChuKSBYMihuIyMwKSBYMihuIyMxKQotKyNkZWZpbmUgWDgobikgWDQobiMjMCkgWDQo biMjMSkKLSsKLSsjaWZuZGVmIF9fU1BFX18KLSsjZGVmaW5lIEZMT0FUX1JFR19DT05TVFJBSU5U ICJmIgotKyNlbHNlCi0rI2RlZmluZSBGTE9BVF9SRUdfQ09OU1RSQUlOVCAiciIKLSsjZW5kaWYK LSsKLSt2b2xhdGlsZSBpbnQgbGw7Ci0rCi0rX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKSB2b2lk Ci0rZm9vICh2b2lkKQotK3sKLSsgIGFzbSB2b2xhdGlsZSAoIiIgOiA6IDogIm1lbW9yeSIpOwot K30KLSsKLStfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpIHZvaWQKLStiYXIgKGNoYXIgKnApCi0r ewotKyAgYXNtIHZvbGF0aWxlICgiIiA6IDogInIiIChwKSA6ICJtZW1vcnkiKTsKLSt9Ci0rCi0r X19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKSB2b2lkCi0rZjEgKHZvaWQpCi0rewotKyAgaW50IG1l bTsKLSsjdW5kZWYgWDEKLSsjZGVmaW5lIFgxKG4pIGludCBncHIjI24gPSAwOwotKyAgWDgoYSkg WDgoYikgWDgoYykKLSsjdW5kZWYgWDEKLSsjZGVmaW5lIFgxKG4pICIrciIgKGdwciMjbiksCi0r ICBhc20gdm9sYXRpbGUgKCIiIDogWDgoYSkgIj1tIiAobWVtKSA6IDogIm1lbW9yeSIpOwotKyAg YXNtIHZvbGF0aWxlICgiIiA6IFg4KGIpICI9bSIgKG1lbSkgOiA6ICJtZW1vcnkiKTsKLSsgIGFz bSB2b2xhdGlsZSAoIiIgOiBYOChjKSAiPW0iIChtZW0pIDogOiAibWVtb3J5Iik7Ci0rICBmb28g KCk7Ci0rI3VuZGVmIFgxCi0rI2RlZmluZSBYMShuKSAiciIgKGdwciMjbiksCi0rICBhc20gdm9s YXRpbGUgKCIiIDogOiBYOChhKSAibSIgKG1lbSkgOiAibWVtb3J5Iik7Ci0rICBhc20gdm9sYXRp bGUgKCIiIDogOiBYOChiKSAibSIgKG1lbSkgOiAibWVtb3J5Iik7Ci0rICBhc20gdm9sYXRpbGUg KCIiIDogOiBYOChjKSAibSIgKG1lbSkgOiAibWVtb3J5Iik7Ci0rfQotKwotK19fYXR0cmlidXRl X18oKG5vaW5saW5lKSkgdm9pZAotK2YyICh2b2lkKQotK3sKLSsgIGludCBtZW07Ci0rI3VuZGVm IFgxCi0rI2RlZmluZSBYMShuKSBpbnQgZ3ByIyNuID0gMDsKLSsgIFg4KGEpIFg4KGIpIFg4KGMp Ci0rI3VuZGVmIFgxCi0rI2RlZmluZSBYMShuKSAiK3IiIChncHIjI24pLAotKyAgYXNtIHZvbGF0 aWxlICgiIiA6IFg4KGEpICI9bSIgKG1lbSkgOiA6ICJtZW1vcnkiKTsKLSsgIGFzbSB2b2xhdGls ZSAoIiIgOiBYOChiKSAiPW0iIChtZW0pIDogOiAibWVtb3J5Iik7Ci0rICBhc20gdm9sYXRpbGUg KCIiIDogWDgoYykgIj1tIiAobWVtKSA6IDogIm1lbW9yeSIpOwotKyAgY2hhciAqcHAgPSBfX2J1 aWx0aW5fYWxsb2NhIChsbCk7Ci0rICBiYXIgKHBwKTsKLSsjdW5kZWYgWDEKLSsjZGVmaW5lIFgx KG4pICJyIiAoZ3ByIyNuKSwKLSsgIGFzbSB2b2xhdGlsZSAoIiIgOiA6IFg4KGEpICJtIiAobWVt KSA6ICJtZW1vcnkiKTsKLSsgIGFzbSB2b2xhdGlsZSAoIiIgOiA6IFg4KGIpICJtIiAobWVtKSA6 ICJtZW1vcnkiKTsKLSsgIGFzbSB2b2xhdGlsZSAoIiIgOiA6IFg4KGMpICJtIiAobWVtKSA6ICJt ZW1vcnkiKTsKLSt9Ci0rCi0rX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKSB2b2lkCi0rZjMgKHZv aWQpCi0rewotKyAgaW50IG1lbTsKLSsjdW5kZWYgWDEKLSsjZGVmaW5lIFgxKG4pIGludCBncHIj I24gPSAwOwotKyAgWDgoYSkgWDgoYikgWDgoYykKLSsjdW5kZWYgWDEKLSsjZGVmaW5lIFgxKG4p ICIrciIgKGdwciMjbiksCi0rICBhc20gdm9sYXRpbGUgKCIiIDogWDgoYSkgIj1tIiAobWVtKSA6 IDogIm1lbW9yeSIpOwotKyAgYXNtIHZvbGF0aWxlICgiIiA6IFg4KGIpICI9bSIgKG1lbSkgOiA6 ICJtZW1vcnkiKTsKLSsgIGFzbSB2b2xhdGlsZSAoIiIgOiBYOChjKSAiPW0iIChtZW0pIDogOiAi bWVtb3J5Iik7Ci0rI3VuZGVmIFgxCi0rI2RlZmluZSBYMShuKSAiciIgKGdwciMjbiksCi0rICBh c20gdm9sYXRpbGUgKCIiIDogOiBYOChhKSAibSIgKG1lbSkgOiAibWVtb3J5Iik7Ci0rICBhc20g dm9sYXRpbGUgKCIiIDogOiBYOChiKSAibSIgKG1lbSkgOiAibWVtb3J5Iik7Ci0rICBhc20gdm9s YXRpbGUgKCIiIDogOiBYOChjKSAibSIgKG1lbSkgOiAibWVtb3J5Iik7Ci0rfQotKwotKyNpZm5k ZWYgX19OT19GUFJTX18KLStfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpIHZvaWQKLStmNCAodm9p ZCkKLSt7Ci0rICBpbnQgbWVtOwotKyN1bmRlZiBYMQotKyNkZWZpbmUgWDEobikgaW50IGdwciMj biA9IDA7Ci0rICBYOChhKSBYOChiKSBYOChjKQotKyN1bmRlZiBYMQotKyNkZWZpbmUgWDEobikg ZG91YmxlIGZwciMjbiA9IDAuMDsKLSsgIFg0KGQpCi0rI3VuZGVmIFgxCi0rI2RlZmluZSBYMShu KSAiK3IiIChncHIjI24pLAotKyAgYXNtIHZvbGF0aWxlICgiIiA6IFg4KGEpICI9bSIgKG1lbSkg OiA6ICJtZW1vcnkiKTsKLSsgIGFzbSB2b2xhdGlsZSAoIiIgOiBYOChiKSAiPW0iIChtZW0pIDog OiAibWVtb3J5Iik7Ci0rICBhc20gdm9sYXRpbGUgKCIiIDogWDgoYykgIj1tIiAobWVtKSA6IDog Im1lbW9yeSIpOwotKyN1bmRlZiBYMQotKyNkZWZpbmUgWDEobikgIisiIEZMT0FUX1JFR19DT05T VFJBSU5UIChmcHIjI24pLAotKyAgYXNtIHZvbGF0aWxlICgiIiA6IFg0KGQpICI9bSIgKG1lbSkg OiA6ICJtZW1vcnkiKTsKLSsgIGZvbyAoKTsKLSsjdW5kZWYgWDEKLSsjZGVmaW5lIFgxKG4pICJy IiAoZ3ByIyNuKSwKLSsgIGFzbSB2b2xhdGlsZSAoIiIgOiA6IFg4KGEpICJtIiAobWVtKSA6ICJt ZW1vcnkiKTsKLSsgIGFzbSB2b2xhdGlsZSAoIiIgOiA6IFg4KGIpICJtIiAobWVtKSA6ICJtZW1v cnkiKTsKLSsgIGFzbSB2b2xhdGlsZSAoIiIgOiA6IFg4KGMpICJtIiAobWVtKSA6ICJtZW1vcnki KTsKLSsjdW5kZWYgWDEKLSsjZGVmaW5lIFgxKG4pIEZMT0FUX1JFR19DT05TVFJBSU5UIChmcHIj I24pLAotKyAgYXNtIHZvbGF0aWxlICgiIiA6IDogWDQoZCkgIm0iIChtZW0pIDogIm1lbW9yeSIp OwotK30KLSsKLStfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpIHZvaWQKLStmNSAodm9pZCkKLSt7 Ci0rICBpbnQgbWVtOwotKyN1bmRlZiBYMQotKyNkZWZpbmUgWDEobikgaW50IGdwciMjbiA9IDA7 Ci0rICBYOChhKSBYOChiKSBYOChjKQotKyN1bmRlZiBYMQotKyNkZWZpbmUgWDEobikgZG91Ymxl IGZwciMjbiA9IDAuMDsKLSsgIFg0KGQpCi0rI3VuZGVmIFgxCi0rI2RlZmluZSBYMShuKSAiK3Ii IChncHIjI24pLAotKyAgYXNtIHZvbGF0aWxlICgiIiA6IFg4KGEpICI9bSIgKG1lbSkgOiA6ICJt ZW1vcnkiKTsKLSsgIGFzbSB2b2xhdGlsZSAoIiIgOiBYOChiKSAiPW0iIChtZW0pIDogOiAibWVt b3J5Iik7Ci0rICBhc20gdm9sYXRpbGUgKCIiIDogWDgoYykgIj1tIiAobWVtKSA6IDogIm1lbW9y eSIpOwotKyN1bmRlZiBYMQotKyNkZWZpbmUgWDEobikgIisiIEZMT0FUX1JFR19DT05TVFJBSU5U IChmcHIjI24pLAotKyAgYXNtIHZvbGF0aWxlICgiIiA6IFg0KGQpICI9bSIgKG1lbSkgOiA6ICJt ZW1vcnkiKTsKLSsgIGNoYXIgKnBwID0gX19idWlsdGluX2FsbG9jYSAobGwpOwotKyAgYmFyIChw cCk7Ci0rI3VuZGVmIFgxCi0rI2RlZmluZSBYMShuKSAiciIgKGdwciMjbiksCi0rICBhc20gdm9s YXRpbGUgKCIiIDogOiBYOChhKSAibSIgKG1lbSkgOiAibWVtb3J5Iik7Ci0rICBhc20gdm9sYXRp bGUgKCIiIDogOiBYOChiKSAibSIgKG1lbSkgOiAibWVtb3J5Iik7Ci0rICBhc20gdm9sYXRpbGUg KCIiIDogOiBYOChjKSAibSIgKG1lbSkgOiAibWVtb3J5Iik7Ci0rI3VuZGVmIFgxCi0rI2RlZmlu ZSBYMShuKSBGTE9BVF9SRUdfQ09OU1RSQUlOVCAoZnByIyNuKSwKLSsgIGFzbSB2b2xhdGlsZSAo IiIgOiA6IFg0KGQpICJtIiAobWVtKSA6ICJtZW1vcnkiKTsKLSt9Ci0rCi0rX19hdHRyaWJ1dGVf Xygobm9pbmxpbmUpKSB2b2lkCi0rZjYgKHZvaWQpCi0rewotKyAgaW50IG1lbTsKLSsjdW5kZWYg WDEKLSsjZGVmaW5lIFgxKG4pIGludCBncHIjI24gPSAwOwotKyAgWDgoYSkgWDgoYikgWDgoYykK LSsjdW5kZWYgWDEKLSsjZGVmaW5lIFgxKG4pIGRvdWJsZSBmcHIjI24gPSAwLjA7Ci0rICBYNChk KQotKyN1bmRlZiBYMQotKyNkZWZpbmUgWDEobikgIityIiAoZ3ByIyNuKSwKLSsgIGFzbSB2b2xh dGlsZSAoIiIgOiBYOChhKSAiPW0iIChtZW0pIDogOiAibWVtb3J5Iik7Ci0rICBhc20gdm9sYXRp bGUgKCIiIDogWDgoYikgIj1tIiAobWVtKSA6IDogIm1lbW9yeSIpOwotKyAgYXNtIHZvbGF0aWxl ICgiIiA6IFg4KGMpICI9bSIgKG1lbSkgOiA6ICJtZW1vcnkiKTsKLSsjdW5kZWYgWDEKLSsjZGVm aW5lIFgxKG4pICIrIiBGTE9BVF9SRUdfQ09OU1RSQUlOVCAoZnByIyNuKSwKLSsgIGFzbSB2b2xh dGlsZSAoIiIgOiBYNChkKSAiPW0iIChtZW0pIDogOiAibWVtb3J5Iik7Ci0rI3VuZGVmIFgxCi0r I2RlZmluZSBYMShuKSAiciIgKGdwciMjbiksCi0rICBhc20gdm9sYXRpbGUgKCIiIDogOiBYOChh KSAibSIgKG1lbSkgOiAibWVtb3J5Iik7Ci0rICBhc20gdm9sYXRpbGUgKCIiIDogOiBYOChiKSAi bSIgKG1lbSkgOiAibWVtb3J5Iik7Ci0rICBhc20gdm9sYXRpbGUgKCIiIDogOiBYOChjKSAibSIg KG1lbSkgOiAibWVtb3J5Iik7Ci0rI3VuZGVmIFgxCi0rI2RlZmluZSBYMShuKSBGTE9BVF9SRUdf Q09OU1RSQUlOVCAoZnByIyNuKSwKLSsgIGFzbSB2b2xhdGlsZSAoIiIgOiA6IFg0KGQpICJtIiAo bWVtKSA6ICJtZW1vcnkiKTsKLSt9Ci0rCi0rX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKSB2b2lk Ci0rZjcgKHZvaWQpCi0rewotKyAgaW50IG1lbTsKLSsjdW5kZWYgWDEKLSsjZGVmaW5lIFgxKG4p IGludCBncHIjI24gPSAwOwotKyAgWDgoYSkgWDgoYikgWDgoYykKLSsjdW5kZWYgWDEKLSsjZGVm aW5lIFgxKG4pIGRvdWJsZSBmcHIjI24gPSAwLjA7Ci0rICBYMihkKQotKyN1bmRlZiBYMQotKyNk ZWZpbmUgWDEobikgIityIiAoZ3ByIyNuKSwKLSsgIGFzbSB2b2xhdGlsZSAoIiIgOiBYOChhKSAi PW0iIChtZW0pIDogOiAibWVtb3J5Iik7Ci0rICBhc20gdm9sYXRpbGUgKCIiIDogWDgoYikgIj1t IiAobWVtKSA6IDogIm1lbW9yeSIpOwotKyAgYXNtIHZvbGF0aWxlICgiIiA6IFg4KGMpICI9bSIg KG1lbSkgOiA6ICJtZW1vcnkiKTsKLSsjdW5kZWYgWDEKLSsjZGVmaW5lIFgxKG4pICIrIiBGTE9B VF9SRUdfQ09OU1RSQUlOVCAoZnByIyNuKSwKLSsgIGFzbSB2b2xhdGlsZSAoIiIgOiBYMihkKSAi PW0iIChtZW0pIDogOiAibWVtb3J5Iik7Ci0rICBmb28gKCk7Ci0rI3VuZGVmIFgxCi0rI2RlZmlu ZSBYMShuKSAiciIgKGdwciMjbiksCi0rICBhc20gdm9sYXRpbGUgKCIiIDogOiBYOChhKSAibSIg KG1lbSkgOiAibWVtb3J5Iik7Ci0rICBhc20gdm9sYXRpbGUgKCIiIDogOiBYOChiKSAibSIgKG1l bSkgOiAibWVtb3J5Iik7Ci0rICBhc20gdm9sYXRpbGUgKCIiIDogOiBYOChjKSAibSIgKG1lbSkg OiAibWVtb3J5Iik7Ci0rI3VuZGVmIFgxCi0rI2RlZmluZSBYMShuKSBGTE9BVF9SRUdfQ09OU1RS QUlOVCAoZnByIyNuKSwKLSsgIGFzbSB2b2xhdGlsZSAoIiIgOiA6IFgyKGQpICJtIiAobWVtKSA6 ICJtZW1vcnkiKTsKLSt9Ci0rCi0rX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKSB2b2lkCi0rZjgg KHZvaWQpCi0rewotKyAgaW50IG1lbTsKLSsjdW5kZWYgWDEKLSsjZGVmaW5lIFgxKG4pIGludCBn cHIjI24gPSAwOwotKyAgWDgoYSkgWDgoYikgWDgoYykKLSsjdW5kZWYgWDEKLSsjZGVmaW5lIFgx KG4pIGRvdWJsZSBmcHIjI24gPSAwLjA7Ci0rICBYMihkKQotKyN1bmRlZiBYMQotKyNkZWZpbmUg WDEobikgIityIiAoZ3ByIyNuKSwKLSsgIGFzbSB2b2xhdGlsZSAoIiIgOiBYOChhKSAiPW0iICht ZW0pIDogOiAibWVtb3J5Iik7Ci0rICBhc20gdm9sYXRpbGUgKCIiIDogWDgoYikgIj1tIiAobWVt KSA6IDogIm1lbW9yeSIpOwotKyAgYXNtIHZvbGF0aWxlICgiIiA6IFg4KGMpICI9bSIgKG1lbSkg OiA6ICJtZW1vcnkiKTsKLSsjdW5kZWYgWDEKLSsjZGVmaW5lIFgxKG4pICIrIiBGTE9BVF9SRUdf Q09OU1RSQUlOVCAoZnByIyNuKSwKLSsgIGFzbSB2b2xhdGlsZSAoIiIgOiBYMihkKSAiPW0iICht ZW0pIDogOiAibWVtb3J5Iik7Ci0rICBjaGFyICpwcCA9IF9fYnVpbHRpbl9hbGxvY2EgKGxsKTsK LSsgIGJhciAocHApOwotKyN1bmRlZiBYMQotKyNkZWZpbmUgWDEobikgInIiIChncHIjI24pLAot KyAgYXNtIHZvbGF0aWxlICgiIiA6IDogWDgoYSkgIm0iIChtZW0pIDogIm1lbW9yeSIpOwotKyAg YXNtIHZvbGF0aWxlICgiIiA6IDogWDgoYikgIm0iIChtZW0pIDogIm1lbW9yeSIpOwotKyAgYXNt IHZvbGF0aWxlICgiIiA6IDogWDgoYykgIm0iIChtZW0pIDogIm1lbW9yeSIpOwotKyN1bmRlZiBY MQotKyNkZWZpbmUgWDEobikgRkxPQVRfUkVHX0NPTlNUUkFJTlQgKGZwciMjbiksCi0rICBhc20g dm9sYXRpbGUgKCIiIDogOiBYMihkKSAibSIgKG1lbSkgOiAibWVtb3J5Iik7Ci0rfQotKwotK19f YXR0cmlidXRlX18oKG5vaW5saW5lKSkgdm9pZAotK2Y5ICh2b2lkKQotK3sKLSsgIGludCBtZW07 Ci0rI3VuZGVmIFgxCi0rI2RlZmluZSBYMShuKSBpbnQgZ3ByIyNuID0gMDsKLSsgIFg4KGEpIFg4 KGIpIFg4KGMpCi0rI3VuZGVmIFgxCi0rI2RlZmluZSBYMShuKSBkb3VibGUgZnByIyNuID0gMC4w OwotKyAgWDIoZCkKLSsjdW5kZWYgWDEKLSsjZGVmaW5lIFgxKG4pICIrciIgKGdwciMjbiksCi0r ICBhc20gdm9sYXRpbGUgKCIiIDogWDgoYSkgIj1tIiAobWVtKSA6IDogIm1lbW9yeSIpOwotKyAg YXNtIHZvbGF0aWxlICgiIiA6IFg4KGIpICI9bSIgKG1lbSkgOiA6ICJtZW1vcnkiKTsKLSsgIGFz bSB2b2xhdGlsZSAoIiIgOiBYOChjKSAiPW0iIChtZW0pIDogOiAibWVtb3J5Iik7Ci0rI3VuZGVm IFgxCi0rI2RlZmluZSBYMShuKSAiKyIgRkxPQVRfUkVHX0NPTlNUUkFJTlQgKGZwciMjbiksCi0r ICBhc20gdm9sYXRpbGUgKCIiIDogWDIoZCkgIj1tIiAobWVtKSA6IDogIm1lbW9yeSIpOwotKyN1 bmRlZiBYMQotKyNkZWZpbmUgWDEobikgInIiIChncHIjI24pLAotKyAgYXNtIHZvbGF0aWxlICgi IiA6IDogWDgoYSkgIm0iIChtZW0pIDogIm1lbW9yeSIpOwotKyAgYXNtIHZvbGF0aWxlICgiIiA6 IDogWDgoYikgIm0iIChtZW0pIDogIm1lbW9yeSIpOwotKyAgYXNtIHZvbGF0aWxlICgiIiA6IDog WDgoYykgIm0iIChtZW0pIDogIm1lbW9yeSIpOwotKyN1bmRlZiBYMQotKyNkZWZpbmUgWDEobikg RkxPQVRfUkVHX0NPTlNUUkFJTlQgKGZwciMjbiksCi0rICBhc20gdm9sYXRpbGUgKCIiIDogOiBY MihkKSAibSIgKG1lbSkgOiAibWVtb3J5Iik7Ci0rfQotKwotK19fYXR0cmlidXRlX18oKG5vaW5s aW5lKSkgdm9pZAotK2YxMCAodm9pZCkKLSt7Ci0rICBpbnQgbWVtOwotKyN1bmRlZiBYMQotKyNk ZWZpbmUgWDEobikgaW50IGdwciMjbiA9IDA7Ci0rICBYOChhKSBYOChiKSBYNChjKQotKyN1bmRl ZiBYMQotKyNkZWZpbmUgWDEobikgZG91YmxlIGZwciMjbiA9IDAuMDsKLSsgIFgxKGQpCi0rI3Vu ZGVmIFgxCi0rI2RlZmluZSBYMShuKSAiK3IiIChncHIjI24pLAotKyAgYXNtIHZvbGF0aWxlICgi IiA6IFg4KGEpICI9bSIgKG1lbSkgOiA6ICJtZW1vcnkiKTsKLSsgIGFzbSB2b2xhdGlsZSAoIiIg OiBYOChiKSAiPW0iIChtZW0pIDogOiAibWVtb3J5Iik7Ci0rICBhc20gdm9sYXRpbGUgKCIiIDog WDQoYykgIj1tIiAobWVtKSA6IDogIm1lbW9yeSIpOwotKyN1bmRlZiBYMQotKyNkZWZpbmUgWDEo bikgIisiIEZMT0FUX1JFR19DT05TVFJBSU5UIChmcHIjI24pLAotKyAgYXNtIHZvbGF0aWxlICgi IiA6IFgxKGQpICI9bSIgKG1lbSkgOiA6ICJtZW1vcnkiKTsKLSsgIGZvbyAoKTsKLSsjdW5kZWYg WDEKLSsjZGVmaW5lIFgxKG4pICJyIiAoZ3ByIyNuKSwKLSsgIGFzbSB2b2xhdGlsZSAoIiIgOiA6 IFg4KGEpICJtIiAobWVtKSA6ICJtZW1vcnkiKTsKLSsgIGFzbSB2b2xhdGlsZSAoIiIgOiA6IFg4 KGIpICJtIiAobWVtKSA6ICJtZW1vcnkiKTsKLSsgIGFzbSB2b2xhdGlsZSAoIiIgOiA6IFg0KGMp ICJtIiAobWVtKSA6ICJtZW1vcnkiKTsKLSsjdW5kZWYgWDEKLSsjZGVmaW5lIFgxKG4pIEZMT0FU X1JFR19DT05TVFJBSU5UIChmcHIjI24pLAotKyAgYXNtIHZvbGF0aWxlICgiIiA6IDogWDEoZCkg Im0iIChtZW0pIDogIm1lbW9yeSIpOwotK30KLSsKLStfX2F0dHJpYnV0ZV9fKChub2lubGluZSkp IHZvaWQKLStmMTEgKHZvaWQpCi0rewotKyAgaW50IG1lbTsKLSsjdW5kZWYgWDEKLSsjZGVmaW5l IFgxKG4pIGludCBncHIjI24gPSAwOwotKyAgWDgoYSkgWDgoYikgWDQoYykKLSsjdW5kZWYgWDEK LSsjZGVmaW5lIFgxKG4pIGRvdWJsZSBmcHIjI24gPSAwLjA7Ci0rICBYMShkKQotKyN1bmRlZiBY MQotKyNkZWZpbmUgWDEobikgIityIiAoZ3ByIyNuKSwKLSsgIGFzbSB2b2xhdGlsZSAoIiIgOiBY OChhKSAiPW0iIChtZW0pIDogOiAibWVtb3J5Iik7Ci0rICBhc20gdm9sYXRpbGUgKCIiIDogWDgo YikgIj1tIiAobWVtKSA6IDogIm1lbW9yeSIpOwotKyAgYXNtIHZvbGF0aWxlICgiIiA6IFg0KGMp ICI9bSIgKG1lbSkgOiA6ICJtZW1vcnkiKTsKLSsjdW5kZWYgWDEKLSsjZGVmaW5lIFgxKG4pICIr IiBGTE9BVF9SRUdfQ09OU1RSQUlOVCAoZnByIyNuKSwKLSsgIGFzbSB2b2xhdGlsZSAoIiIgOiBY MShkKSAiPW0iIChtZW0pIDogOiAibWVtb3J5Iik7Ci0rICBjaGFyICpwcCA9IF9fYnVpbHRpbl9h bGxvY2EgKGxsKTsKLSsgIGJhciAocHApOwotKyN1bmRlZiBYMQotKyNkZWZpbmUgWDEobikgInIi IChncHIjI24pLAotKyAgYXNtIHZvbGF0aWxlICgiIiA6IDogWDgoYSkgIm0iIChtZW0pIDogIm1l bW9yeSIpOwotKyAgYXNtIHZvbGF0aWxlICgiIiA6IDogWDgoYikgIm0iIChtZW0pIDogIm1lbW9y eSIpOwotKyAgYXNtIHZvbGF0aWxlICgiIiA6IDogWDQoYykgIm0iIChtZW0pIDogIm1lbW9yeSIp OwotKyN1bmRlZiBYMQotKyNkZWZpbmUgWDEobikgRkxPQVRfUkVHX0NPTlNUUkFJTlQgKGZwciMj biksCi0rICBhc20gdm9sYXRpbGUgKCIiIDogOiBYMShkKSAibSIgKG1lbSkgOiAibWVtb3J5Iik7 Ci0rfQotKwotK19fYXR0cmlidXRlX18oKG5vaW5saW5lKSkgdm9pZAotK2YxMiAodm9pZCkKLSt7 Ci0rICBpbnQgbWVtOwotKyN1bmRlZiBYMQotKyNkZWZpbmUgWDEobikgaW50IGdwciMjbiA9IDA7 Ci0rICBYOChhKSBYOChiKSBYNChjKQotKyN1bmRlZiBYMQotKyNkZWZpbmUgWDEobikgZG91Ymxl IGZwciMjbiA9IDAuMDsKLSsgIFgxKGQpCi0rI3VuZGVmIFgxCi0rI2RlZmluZSBYMShuKSAiK3Ii IChncHIjI24pLAotKyAgYXNtIHZvbGF0aWxlICgiIiA6IFg4KGEpICI9bSIgKG1lbSkgOiA6ICJt ZW1vcnkiKTsKLSsgIGFzbSB2b2xhdGlsZSAoIiIgOiBYOChiKSAiPW0iIChtZW0pIDogOiAibWVt b3J5Iik7Ci0rICBhc20gdm9sYXRpbGUgKCIiIDogWDQoYykgIj1tIiAobWVtKSA6IDogIm1lbW9y eSIpOwotKyN1bmRlZiBYMQotKyNkZWZpbmUgWDEobikgIisiIEZMT0FUX1JFR19DT05TVFJBSU5U IChmcHIjI24pLAotKyAgYXNtIHZvbGF0aWxlICgiIiA6IFgxKGQpICI9bSIgKG1lbSkgOiA6ICJt ZW1vcnkiKTsKLSsjdW5kZWYgWDEKLSsjZGVmaW5lIFgxKG4pICJyIiAoZ3ByIyNuKSwKLSsgIGFz bSB2b2xhdGlsZSAoIiIgOiA6IFg4KGEpICJtIiAobWVtKSA6ICJtZW1vcnkiKTsKLSsgIGFzbSB2 b2xhdGlsZSAoIiIgOiA6IFg4KGIpICJtIiAobWVtKSA6ICJtZW1vcnkiKTsKLSsgIGFzbSB2b2xh dGlsZSAoIiIgOiA6IFg0KGMpICJtIiAobWVtKSA6ICJtZW1vcnkiKTsKLSsjdW5kZWYgWDEKLSsj ZGVmaW5lIFgxKG4pIEZMT0FUX1JFR19DT05TVFJBSU5UIChmcHIjI24pLAotKyAgYXNtIHZvbGF0 aWxlICgiIiA6IDogWDEoZCkgIm0iIChtZW0pIDogIm1lbW9yeSIpOwotK30KLSsKLStfX2F0dHJp YnV0ZV9fKChub2lubGluZSkpIHZvaWQKLStmMTMgKHZvaWQpCi0rewotKyAgaW50IG1lbTsKLSsj dW5kZWYgWDEKLSsjZGVmaW5lIFgxKG4pIGludCBncHIjI24gPSAwOwotKyAgWDgoYSkgWDgoYikg WDIoYykKLSsjdW5kZWYgWDEKLSsjZGVmaW5lIFgxKG4pIGRvdWJsZSBmcHIjI24gPSAwLjA7Ci0r ICBYOChkKQotKyN1bmRlZiBYMQotKyNkZWZpbmUgWDEobikgIityIiAoZ3ByIyNuKSwKLSsgIGFz bSB2b2xhdGlsZSAoIiIgOiBYOChhKSAiPW0iIChtZW0pIDogOiAibWVtb3J5Iik7Ci0rICBhc20g dm9sYXRpbGUgKCIiIDogWDgoYikgIj1tIiAobWVtKSA6IDogIm1lbW9yeSIpOwotKyAgYXNtIHZv bGF0aWxlICgiIiA6IFgyKGMpICI9bSIgKG1lbSkgOiA6ICJtZW1vcnkiKTsKLSsjdW5kZWYgWDEK LSsjZGVmaW5lIFgxKG4pICIrIiBGTE9BVF9SRUdfQ09OU1RSQUlOVCAoZnByIyNuKSwKLSsgIGFz bSB2b2xhdGlsZSAoIiIgOiBYOChkKSAiPW0iIChtZW0pIDogOiAibWVtb3J5Iik7Ci0rICBmb28g KCk7Ci0rI3VuZGVmIFgxCi0rI2RlZmluZSBYMShuKSAiciIgKGdwciMjbiksCi0rICBhc20gdm9s YXRpbGUgKCIiIDogOiBYOChhKSAibSIgKG1lbSkgOiAibWVtb3J5Iik7Ci0rICBhc20gdm9sYXRp bGUgKCIiIDogOiBYOChiKSAibSIgKG1lbSkgOiAibWVtb3J5Iik7Ci0rICBhc20gdm9sYXRpbGUg KCIiIDogOiBYMihjKSAibSIgKG1lbSkgOiAibWVtb3J5Iik7Ci0rI3VuZGVmIFgxCi0rI2RlZmlu ZSBYMShuKSBGTE9BVF9SRUdfQ09OU1RSQUlOVCAoZnByIyNuKSwKLSsgIGFzbSB2b2xhdGlsZSAo IiIgOiA6IFg4KGQpICJtIiAobWVtKSA6ICJtZW1vcnkiKTsKLSt9Ci0rCi0rX19hdHRyaWJ1dGVf Xygobm9pbmxpbmUpKSB2b2lkCi0rZjE0ICh2b2lkKQotK3sKLSsgIGludCBtZW07Ci0rI3VuZGVm IFgxCi0rI2RlZmluZSBYMShuKSBpbnQgZ3ByIyNuID0gMDsKLSsgIFg4KGEpIFg4KGIpIFgyKGMp Ci0rI3VuZGVmIFgxCi0rI2RlZmluZSBYMShuKSBkb3VibGUgZnByIyNuID0gMC4wOwotKyAgWDgo ZCkKLSsjdW5kZWYgWDEKLSsjZGVmaW5lIFgxKG4pICIrciIgKGdwciMjbiksCi0rICBhc20gdm9s YXRpbGUgKCIiIDogWDgoYSkgIj1tIiAobWVtKSA6IDogIm1lbW9yeSIpOwotKyAgYXNtIHZvbGF0 aWxlICgiIiA6IFg4KGIpICI9bSIgKG1lbSkgOiA6ICJtZW1vcnkiKTsKLSsgIGFzbSB2b2xhdGls ZSAoIiIgOiBYMihjKSAiPW0iIChtZW0pIDogOiAibWVtb3J5Iik7Ci0rI3VuZGVmIFgxCi0rI2Rl ZmluZSBYMShuKSAiKyIgRkxPQVRfUkVHX0NPTlNUUkFJTlQgKGZwciMjbiksCi0rICBhc20gdm9s YXRpbGUgKCIiIDogWDgoZCkgIj1tIiAobWVtKSA6IDogIm1lbW9yeSIpOwotKyAgY2hhciAqcHAg PSBfX2J1aWx0aW5fYWxsb2NhIChsbCk7Ci0rICBiYXIgKHBwKTsKLSsjdW5kZWYgWDEKLSsjZGVm aW5lIFgxKG4pICJyIiAoZ3ByIyNuKSwKLSsgIGFzbSB2b2xhdGlsZSAoIiIgOiA6IFg4KGEpICJt IiAobWVtKSA6ICJtZW1vcnkiKTsKLSsgIGFzbSB2b2xhdGlsZSAoIiIgOiA6IFg4KGIpICJtIiAo bWVtKSA6ICJtZW1vcnkiKTsKLSsgIGFzbSB2b2xhdGlsZSAoIiIgOiA6IFgyKGMpICJtIiAobWVt KSA6ICJtZW1vcnkiKTsKLSsjdW5kZWYgWDEKLSsjZGVmaW5lIFgxKG4pIEZMT0FUX1JFR19DT05T VFJBSU5UIChmcHIjI24pLAotKyAgYXNtIHZvbGF0aWxlICgiIiA6IDogWDgoZCkgIm0iIChtZW0p IDogIm1lbW9yeSIpOwotK30KLSsKLStfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpIHZvaWQKLStm MTUgKHZvaWQpCi0rewotKyAgaW50IG1lbTsKLSsjdW5kZWYgWDEKLSsjZGVmaW5lIFgxKG4pIGlu dCBncHIjI24gPSAwOwotKyAgWDgoYSkgWDgoYikgWDIoYykKLSsjdW5kZWYgWDEKLSsjZGVmaW5l IFgxKG4pIGRvdWJsZSBmcHIjI24gPSAwLjA7Ci0rICBYOChkKQotKyN1bmRlZiBYMQotKyNkZWZp bmUgWDEobikgIityIiAoZ3ByIyNuKSwKLSsgIGFzbSB2b2xhdGlsZSAoIiIgOiBYOChhKSAiPW0i IChtZW0pIDogOiAibWVtb3J5Iik7Ci0rICBhc20gdm9sYXRpbGUgKCIiIDogWDgoYikgIj1tIiAo bWVtKSA6IDogIm1lbW9yeSIpOwotKyAgYXNtIHZvbGF0aWxlICgiIiA6IFgyKGMpICI9bSIgKG1l bSkgOiA6ICJtZW1vcnkiKTsKLSsjdW5kZWYgWDEKLSsjZGVmaW5lIFgxKG4pICIrIiBGTE9BVF9S RUdfQ09OU1RSQUlOVCAoZnByIyNuKSwKLSsgIGFzbSB2b2xhdGlsZSAoIiIgOiBYOChkKSAiPW0i IChtZW0pIDogOiAibWVtb3J5Iik7Ci0rI3VuZGVmIFgxCi0rI2RlZmluZSBYMShuKSAiciIgKGdw ciMjbiksCi0rICBhc20gdm9sYXRpbGUgKCIiIDogOiBYOChhKSAibSIgKG1lbSkgOiAibWVtb3J5 Iik7Ci0rICBhc20gdm9sYXRpbGUgKCIiIDogOiBYOChiKSAibSIgKG1lbSkgOiAibWVtb3J5Iik7 Ci0rICBhc20gdm9sYXRpbGUgKCIiIDogOiBYMihjKSAibSIgKG1lbSkgOiAibWVtb3J5Iik7Ci0r I3VuZGVmIFgxCi0rI2RlZmluZSBYMShuKSBGTE9BVF9SRUdfQ09OU1RSQUlOVCAoZnByIyNuKSwK LSsgIGFzbSB2b2xhdGlsZSAoIiIgOiA6IFg4KGQpICJtIiAobWVtKSA6ICJtZW1vcnkiKTsKLSt9 Ci0rI2VuZGlmCi0rCi0raW50Ci0rbWFpbiAoKQotK3sKLSsgIGxsID0gNjA7Ci0rICBmMSAoKTsK LSsgIGYyICgpOwotKyAgZjMgKCk7Ci0rI2lmbmRlZiBfX05PX0ZQUlNfXwotKyAgZjQgKCk7Ci0r ICBmNSAoKTsKLSsgIGY2ICgpOwotKyAgZjcgKCk7Ci0rICBmOCAoKTsKLSsgIGY5ICgpOwotKyAg ZjEwICgpOwotKyAgZjExICgpOwotKyAgZjEyICgpOwotKyAgZjEzICgpOwotKyAgZjE0ICgpOwot KyAgZjE1ICgpOwotKyNlbmRpZgotKyAgcmV0dXJuIDA7Ci0rfQotLS0tIGdjYy9jb25maWcvcnM2 MDAwL3NwZS5tZAkocmV2aXNpb24gMTUxNzI4KQotKysrIGdjYy9jb25maWcvcnM2MDAwL3NwZS5t ZAkocmV2aXNpb24gMTUxNzI5KQotQEAgLTMxNTYsOSArMzE1Niw5IEBAIChkZWZpbmVfaW5zbiAi KnNhdmVfZ3ByZWdzX3NwZSIKLSAgIFsobWF0Y2hfcGFyYWxsZWwgMCAiYW55X3BhcmFsbGVsX29w ZXJhbmQiCi0gCQkgICBbKGNsb2JiZXIgKHJlZzpQIDY1KSkKLSAJCSAgICAodXNlIChtYXRjaF9v cGVyYW5kOlAgMSAic3ltYm9sX3JlZl9vcGVyYW5kIiAicyIpKQotLQkJICAgICh1c2UgKG1hdGNo X29wZXJhbmQ6UCAyICJncGNfcmVnX29wZXJhbmQiICJyIikpCi0tCQkgICAgKHNldCAobWF0Y2hf b3BlcmFuZDpWMlNJIDMgIm1lbW9yeV9vcGVyYW5kIiAiPW0iKQotLQkJCSAobWF0Y2hfb3BlcmFu ZDpWMlNJIDQgImdwY19yZWdfb3BlcmFuZCIgInIiKSldKV0KLSsJCSAgICAodXNlIChyZWc6UCAx MSkpCi0rCQkgICAgKHNldCAobWF0Y2hfb3BlcmFuZDpWMlNJIDIgIm1lbW9yeV9vcGVyYW5kIiAi PW0iKQotKwkJCSAobWF0Y2hfb3BlcmFuZDpWMlNJIDMgImdwY19yZWdfb3BlcmFuZCIgInIiKSld KV0KLSAgICJUQVJHRVRfU1BFX0FCSSIKLSAgICJibCAlejEiCi0gICBbKHNldF9hdHRyICJ0eXBl IiAiYnJhbmNoIikKLUBAIC0zMTY4LDkgKzMxNjgsOSBAQCAoZGVmaW5lX2luc24gIipyZXN0b3Jl X2dwcmVnc19zcGUiCi0gIFsobWF0Y2hfcGFyYWxsZWwgMCAiYW55X3BhcmFsbGVsX29wZXJhbmQi Ci0gCQkgIFsoY2xvYmJlciAocmVnOlAgNjUpKQotIAkJICAgKHVzZSAobWF0Y2hfb3BlcmFuZDpQ IDEgInN5bWJvbF9yZWZfb3BlcmFuZCIgInMiKSkKLS0JCSAgICh1c2UgKG1hdGNoX29wZXJhbmQ6 UCAyICJncGNfcmVnX29wZXJhbmQiICJyIikpCi0tCQkgICAoc2V0IChtYXRjaF9vcGVyYW5kOlYy U0kgMyAiZ3BjX3JlZ19vcGVyYW5kIiAiPXIiKQotLQkJCShtYXRjaF9vcGVyYW5kOlYyU0kgNCAi bWVtb3J5X29wZXJhbmQiICJtIikpXSldCi0rCQkgICAodXNlIChyZWc6UCAxMSkpCi0rCQkgICAo c2V0IChtYXRjaF9vcGVyYW5kOlYyU0kgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiPXIiKQotKwkJCSht YXRjaF9vcGVyYW5kOlYyU0kgMyAibWVtb3J5X29wZXJhbmQiICJtIikpXSldCi0gICJUQVJHRVRf U1BFX0FCSSIKLSAgImJsICV6MSIKLSAgWyhzZXRfYXR0ciAidHlwZSIgImJyYW5jaCIpCi1AQCAt MzE4MSw5ICszMTgxLDkgQEAgKGRlZmluZV9pbnNuICIqcmV0dXJuX2FuZF9yZXN0b3JlX2dwcmVn cwotIAkJICBbKHJldHVybikKLSAJCSAgIChjbG9iYmVyIChyZWc6UCA2NSkpCi0gCQkgICAodXNl IChtYXRjaF9vcGVyYW5kOlAgMSAic3ltYm9sX3JlZl9vcGVyYW5kIiAicyIpKQotLQkJICAgKHVz ZSAobWF0Y2hfb3BlcmFuZDpQIDIgImdwY19yZWdfb3BlcmFuZCIgInIiKSkKLS0JCSAgIChzZXQg KG1hdGNoX29wZXJhbmQ6VjJTSSAzICJncGNfcmVnX29wZXJhbmQiICI9ciIpCi0tCQkJKG1hdGNo X29wZXJhbmQ6VjJTSSA0ICJtZW1vcnlfb3BlcmFuZCIgIm0iKSldKV0KLSsJCSAgICh1c2UgKHJl ZzpQIDExKSkKLSsJCSAgIChzZXQgKG1hdGNoX29wZXJhbmQ6VjJTSSAyICJncGNfcmVnX29wZXJh bmQiICI9ciIpCi0rCQkJKG1hdGNoX29wZXJhbmQ6VjJTSSAzICJtZW1vcnlfb3BlcmFuZCIgIm0i KSldKV0KLSAgIlRBUkdFVF9TUEVfQUJJIgotICAiYiAlejEiCi0gIFsoc2V0X2F0dHIgInR5cGUi ICJicmFuY2giKQotLS0tIGdjYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAkocmV2aXNpb24gMTUx NzI4KQotKysrIGdjYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAkocmV2aXNpb24gMTUxNzI5KQot QEAgLTQzNywxMSArNDM3LDExIEBAIGV4dGVybiBpbnQgZG90X3N5bWJvbHM7Ci0gI3VuZGVmICBT QVZFX0ZQX1BSRUZJWAotICNkZWZpbmUgU0FWRV9GUF9QUkVGSVggKFRBUkdFVF82NEJJVCA/ICIu X3NhdmVmIiA6ICJfc2F2ZWZwcl8iKQotICN1bmRlZiAgU0FWRV9GUF9TVUZGSVgKLS0jZGVmaW5l IFNBVkVfRlBfU1VGRklYIChUQVJHRVRfNjRCSVQgPyAiIiA6ICJfbCIpCi0rI2RlZmluZSBTQVZF X0ZQX1NVRkZJWCAiIgotICN1bmRlZiAgUkVTVE9SRV9GUF9QUkVGSVgKLSAjZGVmaW5lIFJFU1RP UkVfRlBfUFJFRklYIChUQVJHRVRfNjRCSVQgPyAiLl9yZXN0ZiIgOiAiX3Jlc3RmcHJfIikKLSAj dW5kZWYgIFJFU1RPUkVfRlBfU1VGRklYCi0tI2RlZmluZSBSRVNUT1JFX0ZQX1NVRkZJWCAoVEFS R0VUXzY0QklUID8gIiIgOiAiX2wiKQotKyNkZWZpbmUgUkVTVE9SRV9GUF9TVUZGSVggIiIKLSAK LSAvKiBEd2FyZjIgZGVidWdnaW5nLiAgKi8KLSAjdW5kZWYgIFBSRUZFUlJFRF9ERUJVR0dJTkdf VFlQRQotLS0tIGdjYy9jb25maWcvcnM2MDAwL3JzNjAwMC5jCShyZXZpc2lvbiAxNTE3MjgpCi0r KysgZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLmMJKHJldmlzaW9uIDE1MTcyOSkKLUBAIC0xNzk4 MCw3ICsxNzk4MCw4IEBAIHN0YXRpYyBib29sCi0gbm9fZ2xvYmFsX3JlZ3NfYWJvdmUgKGludCBm aXJzdCwgYm9vbCBncHIpCi0gewotICAgaW50IGk7Ci0tICBmb3IgKGkgPSBmaXJzdDsgaSA8IGdw ciA/IDMyIDogNjQgOyBpKyspCi0rICBpbnQgbGFzdCA9IGdwciA/IDMyIDogNjQ7Ci0rICBmb3Ig KGkgPSBmaXJzdDsgaSA8IGxhc3Q7IGkrKykKLSAgICAgaWYgKGdsb2JhbF9yZWdzW2ldKQotICAg ICAgIHJldHVybiBmYWxzZTsKLSAgIHJldHVybiB0cnVlOwotQEAgLTE3OTk3LDU0ICsxNzk5OCwx MzYgQEAgbm9fZ2xvYmFsX3JlZ3NfYWJvdmUgKGludCBmaXJzdCwgYm9vbCBncAotIAotIHN0YXRp YyBHVFkoKCkpIHJ0eCBzYXZyZXNfcm91dGluZV9zeW1zW05fU0FWUkVTX1JFR0lTVEVSU11bOF07 Ci0gCi0tLyogUmV0dXJuIHRoZSBzeW1ib2wgZm9yIGFuIG91dC1vZi1saW5lIHJlZ2lzdGVyIHNh dmUvcmVzdG9yZSByb3V0aW5lLgotKy8qIFRlbXBvcmFyeSBob2xkaW5nIHNwYWNlIGZvciBhbiBv dXQtb2YtbGluZSByZWdpc3RlciBzYXZlL3Jlc3RvcmUKLSsgICByb3V0aW5lIG5hbWUuICAqLwot K3N0YXRpYyBjaGFyIHNhdnJlc19yb3V0aW5lX25hbWVbMzBdOwotKwotKy8qIFJldHVybiB0aGUg bmFtZSBmb3IgYW4gb3V0LW9mLWxpbmUgcmVnaXN0ZXIgc2F2ZS9yZXN0b3JlIHJvdXRpbmUuCi0r ICAgV2UgYXJlIHNhdmluZy9yZXN0b3JpbmcgR1BScyBpZiBHUFIgaXMgdHJ1ZS4gICovCi0rCi0r c3RhdGljIGNoYXIgKgotK3JzNjAwMF9zYXZyZXNfcm91dGluZV9uYW1lIChyczYwMDBfc3RhY2tf dCAqaW5mbywgaW50IHJlZ25vLAotKwkJCSAgICBib29sIHNhdmVwLCBib29sIGdwciwgYm9vbCBs cikKLSt7Ci0rICBjb25zdCBjaGFyICpwcmVmaXggPSAiIjsKLSsgIGNvbnN0IGNoYXIgKnN1ZmZp eCA9ICIiOwotKwotKyAgLyogRGlmZmVyZW50IHRhcmdldHMgYXJlIHN1cHBvc2VkIHRvIGRlZmlu ZQotKyAgICAge1NBVkUsUkVTVE9SRX1fRlBfe1BSRUZJWCxTVUZGSVh9IHdpdGggdGhlIGlkZWEg dGhhdCB0aGUgbmVlZGVkCi0rICAgICByb3V0aW5lIG5hbWUgY291bGQgYmUgZGVmaW5lZCB3aXRo OgotKwotKyAgICAgc3ByaW50ZiAobmFtZSwgIiVzJWQlcyIsIFNBVkVfRlBfUFJFRklYLCByZWdu bywgU0FWRV9GUF9TVUZGSVgpCi0rCi0rICAgICBUaGlzIGlzIGEgbmljZSBpZGVhIGluIHByYWN0 aWNlLCBidXQgaW4gcmVhbGl0eSwgdGhpbmdzIGFyZQotKyAgICAgY29tcGxpY2F0ZWQgaW4gc2V2 ZXJhbCB3YXlzOgotKwotKyAgICAgLSBFTEYgdGFyZ2V0cyBoYXZlIHNhdmUvcmVzdG9yZSByb3V0 aW5lcyBmb3IgR1BScy4KLSsKLSsgICAgIC0gU1BFIHRhcmdldHMgdXNlIGRpZmZlcmVudCBwcmVm aXhlcyBmb3IgMzIvNjQtYml0IHJlZ2lzdGVycywgYW5kCi0rICAgICAgIG5laXRoZXIgb2YgdGhl bSBmaXQgbmVhdGx5IGluIHRoZSBGT09fe1BSRUZJWCxTVUZGSVh9IHJlZ2ltZW4uCi0rCi0rICAg ICAtIFBQQzY0IEVMRiB0YXJnZXRzIGhhdmUgcm91dGluZXMgZm9yIHNhdmUvcmVzdG9yZSBvZiBH UFJzIHRoYXQKLSsgICAgICAgZGlmZmVyIGluIHdoYXQgdGhleSBkbyB3aXRoIHRoZSBsaW5rIHJl Z2lzdGVyLCBzbyBoYXZpbmcgYSBzZXQKLSsgICAgICAgcHJlZml4IGRvZXNuJ3Qgd29yay4gIChX ZSBvbmx5IHVzZSBvbmUgb2YgdGhlIHNhdmUgcm91dGluZXMgYXQKLSsgICAgICAgdGhlIG1vbWVu dCwgdGhvdWdoLikKLSsKLSsgICAgIC0gUFBDMzIgZWxmIHRhcmdldHMgaGF2ZSAiZXhpdCIgdmVy c2lvbnMgb2YgdGhlIHJlc3RvcmUgcm91dGluZXMKLSsgICAgICAgdGhhdCByZXN0b3JlIHRoZSBs aW5rIHJlZ2lzdGVyIGFuZCBjYW4gc2F2ZSBzb21lIGV4dHJhIHNwYWNlLgotKyAgICAgICBUaGVz ZSByZXF1aXJlIGFuIGV4dHJhIHN1ZmZpeC4gIChUaGVyZSBhcmUgYWxzbyAidGFpbCIgdmVyc2lv bnMKLSsgICAgICAgb2YgdGhlIHJlc3RvcmUgcm91dGluZXMgYW5kICJHT1QiIHZlcnNpb25zIG9m IHRoZSBzYXZlIHJvdXRpbmVzLAotKyAgICAgICBidXQgd2UgZG9uJ3QgZ2VuZXJhdGUgdGhvc2Ug YXQgcHJlc2VudC4gIFNhbWUgcHJvYmxlbXMgYXBwbHksCi0rICAgICAgIHRob3VnaC4pCi0rCi0r ICAgICBXZSBkZWFsIHdpdGggYWxsIHRoaXMgYnkgc3ludGhlc2l6aW5nIG91ciBvd24gcHJlZml4 L3N1ZmZpeCBhbmQKLSsgICAgIHVzaW5nIHRoYXQgZm9yIHRoZSBzaW1wbGUgc3ByaW50ZiBjYWxs IHNob3duIGFib3ZlLiAgKi8KLSsgIGlmIChUQVJHRVRfU1BFKQotKyAgICB7Ci0rICAgICAgLyog Tm8gZmxvYXRpbmcgcG9pbnQgc2F2ZXMgb24gdGhlIFNQRS4gICovCi0rICAgICAgZ2NjX2Fzc2Vy dCAoZ3ByKTsKLSsKLSsgICAgICBpZiAoc2F2ZXApCi0rCXByZWZpeCA9IGluZm8tPnNwZV82NGJp dF9yZWdzX3VzZWQgPyAiX3NhdmU2NGdwcl8iIDogIl9zYXZlMzJncHJfIjsKLSsgICAgICBlbHNl Ci0rCXByZWZpeCA9IGluZm8tPnNwZV82NGJpdF9yZWdzX3VzZWQgPyAiX3Jlc3Q2NGdwcl8iIDog Il9yZXN0MzJncHJfIjsKLSsKLSsgICAgICBpZiAobHIpCi0rCXN1ZmZpeCA9ICJfeCI7Ci0rICAg IH0KLSsgIGVsc2UgaWYgKERFRkFVTFRfQUJJID09IEFCSV9WNCkKLSsgICAgewotKyAgICAgIGlm IChUQVJHRVRfNjRCSVQpCi0rCWdvdG8gYWl4X25hbWVzOwotKwotKyAgICAgIGlmIChncHIpCi0r CXByZWZpeCA9IHNhdmVwID8gIl9zYXZlZ3ByXyIgOiAiX3Jlc3RncHJfIjsKLSsgICAgICBlbHNl Ci0rCXByZWZpeCA9IHNhdmVwID8gIl9zYXZlZnByXyIgOiAiX3Jlc3RmcHJfIjsKLSsKLSsgICAg ICBpZiAobHIpCi0rCXN1ZmZpeCA9ICJfeCI7Ci0rICAgIH0KLSsgIGVsc2UgaWYgKERFRkFVTFRf QUJJID09IEFCSV9BSVgpCi0rICAgIHsKLSsjaWZuZGVmIFBPV0VSUENfTElOVVgKLSsgICAgICAv KiBObyBvdXQtb2YtbGluZSBzYXZlL3Jlc3RvcmUgcm91dGluZXMgZm9yIEdQUnMgb24gQUlYLiAg Ki8KLSsgICAgICBnY2NfYXNzZXJ0ICghVEFSR0VUX0FJWCB8fCAhZ3ByKTsKLSsjZW5kaWYKLSsK LSsgICAgYWl4X25hbWVzOgotKyAgICAgIGlmIChncHIpCi0rCXByZWZpeCA9IChzYXZlcAotKwkJ ICA/IChsciA/ICJfc2F2ZWdwcjBfIiA6ICJfc2F2ZWdwcjFfIikKLSsJCSAgOiAobHIgPyAiX3Jl c3RncHIwXyIgOiAiX3Jlc3RncHIxXyIpKTsKLSsjaWZkZWYgUE9XRVJQQ19MSU5VWAotKyAgICAg IGVsc2UgaWYgKGxyKQotKwlwcmVmaXggPSAoc2F2ZXAgPyAiX3NhdmVmcHJfIiA6ICJfcmVzdGZw cl8iKTsKLSsjZW5kaWYKLSsgICAgICBlbHNlCi0rCXsKLSsJICBwcmVmaXggPSBzYXZlcCA/IFNB VkVfRlBfUFJFRklYIDogUkVTVE9SRV9GUF9QUkVGSVg7Ci0rCSAgc3VmZml4ID0gc2F2ZXAgPyBT QVZFX0ZQX1NVRkZJWCA6IFJFU1RPUkVfRlBfU1VGRklYOwotKwl9Ci0rICAgIH0KLSsgIGVsc2Ug aWYgKERFRkFVTFRfQUJJID09IEFCSV9EQVJXSU4pCi0rICAgIHNvcnJ5ICgiT3V0LW9mLWxpbmUg c2F2ZS9yZXN0b3JlIHJvdXRpbmVzIG5vdCBzdXBwb3J0ZWQgb24gRGFyd2luIik7Ci0rCi0rICBz cHJpbnRmIChzYXZyZXNfcm91dGluZV9uYW1lLCAiJXMlZCVzIiwgcHJlZml4LCByZWdubywgc3Vm Zml4KTsKLSsKLSsgIHJldHVybiBzYXZyZXNfcm91dGluZV9uYW1lOwotK30KLSsKLSsvKiBSZXR1 cm4gYW4gUlRMIFNZTUJPTF9SRUYgZm9yIGFuIG91dC1vZi1saW5lIHJlZ2lzdGVyIHNhdmUvcmVz dG9yZSByb3V0aW5lLgotICAgIFdlIGFyZSBzYXZpbmcvcmVzdG9yaW5nIEdQUnMgaWYgR1BSIGlz IHRydWUuICAqLwotIAotIHN0YXRpYyBydHgKLS1yczYwMDBfc2F2cmVzX3JvdXRpbmVfc3ltIChy czYwMDBfc3RhY2tfdCAqaW5mbywgYm9vbCBzYXZlcCwgYm9vbCBncHIsIGJvb2wgZXhpdHApCi0r cnM2MDAwX3NhdnJlc19yb3V0aW5lX3N5bSAocnM2MDAwX3N0YWNrX3QgKmluZm8sIGJvb2wgc2F2 ZXAsCi0rCQkJICAgYm9vbCBncHIsIGJvb2wgbHIpCi0gewotICAgaW50IHJlZ25vID0gZ3ByID8g aW5mby0+Zmlyc3RfZ3BfcmVnX3NhdmUgOiAoaW5mby0+Zmlyc3RfZnBfcmVnX3NhdmUgLSAzMik7 Ci0gICBydHggc3ltOwotICAgaW50IHNlbGVjdCA9ICgoc2F2ZXAgPyAxIDogMCkgPDwgMgotLQkJ fCAoZ3ByCi0tCQkgICAvKiBPbiB0aGUgU1BFLCB3ZSBuZXZlciBoYXZlIGFueSBGUFJzLCBidXQg d2UgZG8gaGF2ZQotLQkJICAgICAgMzIvNjQtYml0IHZlcnNpb25zIG9mIHRoZSByb3V0aW5lcy4g ICovCi0tCQkgICA/IChUQVJHRVRfU1BFX0FCSSAmJiBpbmZvLT5zcGVfNjRiaXRfcmVnc191c2Vk ID8gMSA6IDApCi0tCQkgICA6IDApIDw8IDEKLS0JCXwgKGV4aXRwID8gMTogMCkpOwotKwkJfCAo KFRBUkdFVF9TUEVfQUJJCi0rCQkgICAgLyogT24gdGhlIFNQRSwgd2UgbmV2ZXIgaGF2ZSBhbnkg RlBScywgYnV0IHdlIGRvIGhhdmUKLSsJCSAgICAgICAzMi82NC1iaXQgdmVyc2lvbnMgb2YgdGhl IHJvdXRpbmVzLiAgKi8KLSsJCSAgICA/IChpbmZvLT5zcGVfNjRiaXRfcmVnc191c2VkID8gMSA6 IDApCi0rCQkgICAgOiAoZ3ByID8gMSA6IDApKSA8PCAxKQotKwkJfCAobHIgPyAxOiAwKSk7Ci0g Ci0gICAvKiBEb24ndCBnZW5lcmF0ZSBib2d1cyByb3V0aW5lIG5hbWVzLiAgKi8KLS0gIGdjY19h c3NlcnQgKEZJUlNUX1NBVlJFU19SRUdJU1RFUiA8PSByZWdubyAmJiByZWdubyA8PSBMQVNUX1NB VlJFU19SRUdJU1RFUik7Ci0rICBnY2NfYXNzZXJ0IChGSVJTVF9TQVZSRVNfUkVHSVNURVIgPD0g cmVnbm8KLSsJICAgICAgJiYgcmVnbm8gPD0gTEFTVF9TQVZSRVNfUkVHSVNURVIpOwotIAotICAg c3ltID0gc2F2cmVzX3JvdXRpbmVfc3ltc1tyZWduby1GSVJTVF9TQVZSRVNfUkVHSVNURVJdW3Nl bGVjdF07Ci0gCi0gICBpZiAoc3ltID09IE5VTEwpCi0gICAgIHsKLS0gICAgICBjaGFyIG5hbWVb MzBdOwotLSAgICAgIGNvbnN0IGNoYXIgKmFjdGlvbjsKLS0gICAgICBjb25zdCBjaGFyICpyZWdr aW5kOwotLSAgICAgIGNvbnN0IGNoYXIgKmV4aXRfc3VmZml4OwotLQotLSAgICAgIGFjdGlvbiA9 IHNhdmVwID8gInNhdmUiIDogInJlc3QiOwotLQotLSAgICAgIC8qIFNQRSBoYXMgc2xpZ2h0bHkg ZGlmZmVyZW50IG5hbWVzIGZvciBpdHMgcm91dGluZXMgZGVwZW5kaW5nIG9uCi0tCSB3aGV0aGVy IHdlIGFyZSBzYXZpbmcgMzItYml0IG9yIDY0LWJpdCByZWdpc3RlcnMuICAqLwotLSAgICAgIGlm IChUQVJHRVRfU1BFX0FCSSkKLS0JewotLQkgIC8qIE5vIGZsb2F0aW5nIHBvaW50IHNhdmVzIG9u IHRoZSBTUEUuICAqLwotLQkgIGdjY19hc3NlcnQgKGdwcik7Ci0tCi0tCSAgcmVna2luZCA9IGlu Zm8tPnNwZV82NGJpdF9yZWdzX3VzZWQgPyAiNjRncHIiIDogIjMyZ3ByIjsKLS0JfQotLSAgICAg IGVsc2UKLS0JcmVna2luZCA9IGdwciA/ICJncHIiIDogImZwciI7Ci0tCi0tICAgICAgZXhpdF9z dWZmaXggPSBleGl0cCA/ICJfeCIgOiAiIjsKLSsgICAgICBjaGFyICpuYW1lOwotIAotLSAgICAg IHNwcmludGYgKG5hbWUsICJfJXMlc18lZCVzIiwgYWN0aW9uLCByZWdraW5kLCByZWdubywgZXhp dF9zdWZmaXgpOwotKyAgICAgIG5hbWUgPSByczYwMDBfc2F2cmVzX3JvdXRpbmVfbmFtZSAoaW5m bywgcmVnbm8sIHNhdmVwLCBncHIsIGxyKTsKLSAKLSAgICAgICBzeW0gPSBzYXZyZXNfcm91dGlu ZV9zeW1zW3JlZ25vLUZJUlNUX1NBVlJFU19SRUdJU1RFUl1bc2VsZWN0XQotIAk9IGdlbl9ydHhf U1lNQk9MX1JFRiAoUG1vZGUsIGdnY19zdHJkdXAgKG5hbWUpKTsKLSsgICAgICBTWU1CT0xfUkVG X0ZMQUdTIChzeW0pIHw9IFNZTUJPTF9GTEFHX0ZVTkNUSU9OOwotICAgICB9Ci0gCi0gICByZXR1 cm4gc3ltOwotQEAgLTE4MDcyLDggKzE4MTU1LDExIEBAIHJzNjAwMF9lbWl0X3N0YWNrX3Jlc2V0 IChyczYwMDBfc3RhY2tfdCAKLSAgICAgewotICAgICAgIHJzNjAwMF9lbWl0X3N0YWNrX3RpZSAo KTsKLSAgICAgICBpZiAoc3Bfb2Zmc2V0ICE9IDApCi0tCXJldHVybiBlbWl0X2luc24gKGdlbl9h ZGRzaTMgKHNwX3JlZ19ydHgsIGZyYW1lX3JlZ19ydHgsCi0tCQkJCSAgICAgIEdFTl9JTlQgKHNw X29mZnNldCkpKTsKLSsJewotKwkgIHJ0eCBkZXN0X3JlZyA9IHNhdnJlcyA/IGdlbl9ydHhfUkVH IChQbW9kZSwgMTEpIDogc3BfcmVnX3J0eDsKLSsJICByZXR1cm4gZW1pdF9pbnNuIChnZW5fYWRk M19pbnNuIChkZXN0X3JlZywgZnJhbWVfcmVnX3J0eCwKLSsJCQkJCSAgIEdFTl9JTlQgKHNwX29m ZnNldCkpKTsKLSsJfQotICAgICAgIGVsc2UgaWYgKCFzYXZyZXMpCi0gCXJldHVybiBlbWl0X21v dmVfaW5zbiAoc3BfcmVnX3J0eCwgZnJhbWVfcmVnX3J0eCk7Ci0gICAgIH0KLUBAIC0xODEwMiw3 ICsxODE4OCw3IEBAIHN0YXRpYyBydHgKLSByczYwMDBfbWFrZV9zYXZyZXNfcnR4IChyczYwMDBf c3RhY2tfdCAqaW5mbywKLSAJCQlydHggZnJhbWVfcmVnX3J0eCwgaW50IHNhdmVfYXJlYV9vZmZz ZXQsCi0gCQkJZW51bSBtYWNoaW5lX21vZGUgcmVnX21vZGUsCi0tCQkJYm9vbCBzYXZlcCwgYm9v bCBncHIsIGJvb2wgZXhpdHApCi0rCQkJYm9vbCBzYXZlcCwgYm9vbCBncHIsIGJvb2wgbHIpCi0g ewotICAgaW50IGk7Ci0gICBpbnQgb2Zmc2V0LCBzdGFydF9yZWcsIGVuZF9yZWcsIG5fcmVnczsK LUBAIC0xODExNiwyMCArMTgyMDIsMjEgQEAgcnM2MDAwX21ha2Vfc2F2cmVzX3J0eCAocnM2MDAw X3N0YWNrX3QgKgotIAkgICAgICAgOiBpbmZvLT5maXJzdF9mcF9yZWdfc2F2ZSk7Ci0gICBlbmRf cmVnID0gZ3ByID8gMzIgOiA2NDsKLSAgIG5fcmVncyA9IGVuZF9yZWcgLSBzdGFydF9yZWc7Ci0t ICBwID0gcnR2ZWNfYWxsb2MgKChleGl0cCA/IDQgOiAzKSArIG5fcmVncyk7Ci0rICBwID0gcnR2 ZWNfYWxsb2MgKChsciA/IDQgOiAzKSArIG5fcmVncyk7Ci0gCi0tICAvKiBJZiB3ZSdyZSBzYXZp bmcgcmVnaXN0ZXJzLCB0aGVuIHdlIHNob3VsZCBuZXZlciBzYXkgd2UncmUgZXhpdGluZy4JICov Ci0tICBnY2NfYXNzZXJ0ICgoc2F2ZXAgJiYgIWV4aXRwKSB8fCAhc2F2ZXApOwotLQotLSAgaWYg KGV4aXRwKQotKyAgaWYgKCFzYXZlcCAmJiBscikKLSAgICAgUlRWRUNfRUxUIChwLCBvZmZzZXQr KykgPSBnZW5fcnR4X1JFVFVSTiAoVk9JRG1vZGUpOwotIAotICAgUlRWRUNfRUxUIChwLCBvZmZz ZXQrKykKLSAgICAgPSBnZW5fcnR4X0NMT0JCRVIgKFZPSURtb2RlLCBnZW5fcnR4X1JFRyAoUG1v ZGUsIDY1KSk7Ci0gCi0tICBzeW0gPSByczYwMDBfc2F2cmVzX3JvdXRpbmVfc3ltIChpbmZvLCBz YXZlcCwgZ3ByLCBleGl0cCk7Ci0rICBzeW0gPSByczYwMDBfc2F2cmVzX3JvdXRpbmVfc3ltIChp bmZvLCBzYXZlcCwgZ3ByLCBscik7Ci0gICBSVFZFQ19FTFQgKHAsIG9mZnNldCsrKSA9IGdlbl9y dHhfVVNFIChWT0lEbW9kZSwgc3ltKTsKLS0gIFJUVkVDX0VMVCAocCwgb2Zmc2V0KyspID0gZ2Vu X3J0eF9VU0UgKFZPSURtb2RlLCBnZW5fcnR4X1JFRyAoUG1vZGUsIDExKSk7Ci0rICBSVFZFQ19F TFQgKHAsIG9mZnNldCsrKQotKyAgICA9IGdlbl9ydHhfVVNFIChWT0lEbW9kZSwKLSsJCSAgIGdl bl9ydHhfUkVHIChQbW9kZSwgREVGQVVMVF9BQkkgIT0gQUJJX0FJWCA/IDExCi0rCQkJCSAgICAg ICA6IGdwciAmJiAhbHIgPyAxMgotKwkJCQkgICAgICAgOiAxKSk7Ci0gCi0gICBmb3IgKGkgPSAw OyBpIDwgZW5kX3JlZyAtIHN0YXJ0X3JlZzsgaSsrKQotICAgICB7Ci1AQCAtMTgxNDQsNiArMTgy MzEsMTYgQEAgcnM2MDAwX21ha2Vfc2F2cmVzX3J0eCAocnM2MDAwX3N0YWNrX3QgKgotIAkJCQkJ ICAgICAgIHNhdmVwID8gcmVnIDogbWVtKTsKLSAgICAgfQotIAotKyAgaWYgKHNhdmVwICYmIGxy KQotKyAgICB7Ci0rICAgICAgcnR4IGFkZHIsIHJlZywgbWVtOwotKyAgICAgIHJlZyA9IGdlbl9y dHhfUkVHIChQbW9kZSwgMCk7Ci0rICAgICAgYWRkciA9IGdlbl9ydHhfUExVUyAoUG1vZGUsIGZy YW1lX3JlZ19ydHgsCi0rCQkJICAgR0VOX0lOVCAoaW5mby0+bHJfc2F2ZV9vZmZzZXQpKTsKLSsg ICAgICBtZW0gPSBnZW5fZnJhbWVfbWVtIChQbW9kZSwgYWRkcik7Ci0rICAgICAgUlRWRUNfRUxU IChwLCBpICsgb2Zmc2V0KSA9IGdlbl9ydHhfU0VUIChWT0lEbW9kZSwgbWVtLCByZWcpOwotKyAg ICB9Ci0rCi0gICByZXR1cm4gZ2VuX3J0eF9QQVJBTExFTCAoVk9JRG1vZGUsIHApOwotIH0KLSAK LUBAIC0xODE2NCw3ICsxODI2MSwxMCBAQCByczYwMDBfcmVnX2xpdmVfb3JfcGljX29mZnNldF9w IChpbnQgcmVnCi0gZW51bSB7Ci0gICBTQVZSRVNfTVVMVElQTEUgPSAweDEsCi0gICBTQVZSRVNf SU5MSU5FX0ZQUlMgPSAweDIsCi0tICBTQVZSRVNfSU5MSU5FX0dQUlMgPSAweDQKLSsgIFNBVlJF U19JTkxJTkVfR1BSUyA9IDB4NCwKLSsgIFNBVlJFU19OT0lOTElORV9HUFJTX1NBVkVTX0xSID0g MHg4LAotKyAgU0FWUkVTX05PSU5MSU5FX0ZQUlNfU0FWRVNfTFIgPSAweDEwLAotKyAgU0FWUkVT X05PSU5MSU5FX0ZQUlNfRE9FU05UX1JFU1RPUkVfTFIgPSAweDIwCi0gfTsKLSAKLSAvKiBEZXRl cm1pbmUgdGhlIHN0cmF0ZWd5IGZvciBzYXZpbmdzL3Jlc3RvcmluZyByZWdpc3RlcnMuICAqLwot QEAgLTE4MTc5LDYgKzE4Mjc5LDcgQEAgcnM2MDAwX3NhdnJlc19zdHJhdGVneSAocnM2MDAwX3N0 YWNrX3QgKgotICAgYm9vbCBzYXZyZXNfZ3Byc19pbmxpbmU7Ci0gICBib29sIG5vY2xvYmJlcl9n bG9iYWxfZ3BycwotICAgICA9IG5vX2dsb2JhbF9yZWdzX2Fib3ZlIChpbmZvLT5maXJzdF9ncF9y ZWdfc2F2ZSwgLypncHI9Ki90cnVlKTsKLSsgIGludCBzdHJhdGVneTsKLSAKLSAgIHVzaW5nX211 bHRpcGxlX3AgPSAoVEFSR0VUX01VTFRJUExFICYmICEgVEFSR0VUX1BPV0VSUEM2NAotIAkJICAg ICAgJiYgKCFUQVJHRVRfU1BFX0FCSQotQEAgLTE4MTk4LDYgKzE4Mjk5LDEwIEBAIHJzNjAwMF9z YXZyZXNfc3RyYXRlZ3kgKHJzNjAwMF9zdGFja190ICoKLSAJCQl8fCBpbmZvLT5maXJzdF9mcF9y ZWdfc2F2ZSA9PSA2NAotIAkJCXx8ICFub19nbG9iYWxfcmVnc19hYm92ZSAoaW5mby0+Zmlyc3Rf ZnBfcmVnX3NhdmUsCi0gCQkJCQkJICAvKmdwcj0qL2ZhbHNlKQotKwkJCS8qIFRoZSBvdXQtb2Yt bGluZSBGUCByb3V0aW5lcyB1c2UKLSsJCQkgICBkb3VibGUtcHJlY2lzaW9uIHN0b3Jlczsgd2Ug Y2FuJ3QgdXNlIHRob3NlCi0rCQkJICAgcm91dGluZXMgaWYgd2UgZG9uJ3QgaGF2ZSBzdWNoIHN0 b3Jlcy4gICovCi0rCQkJfHwgKFRBUkdFVF9IQVJEX0ZMT0FUICYmICFUQVJHRVRfRE9VQkxFX0ZM T0FUKQotIAkJCXx8IEZQX1NBVkVfSU5MSU5FIChpbmZvLT5maXJzdF9mcF9yZWdfc2F2ZSkpOwot ICAgc2F2cmVzX2dwcnNfaW5saW5lID0gKGNvbW1vbgotIAkJCS8qIFNhdmluZyBDUiBpbnRlcmZl cmVzIHdpdGggdGhlIGV4aXQgcm91dGluZXMKLUBAIC0xODIzNSw5ICsxODM0MCwyMiBAQCByczYw MDBfc2F2cmVzX3N0cmF0ZWd5IChyczYwMDBfc3RhY2tfdCAqCi0gCXNhdnJlc19ncHJzX2lubGlu ZSA9IHNhdnJlc19ncHJzX2lubGluZSB8fCB1c2luZ19tdWx0aXBsZV9wOwotICAgICB9Ci0gCi0t ICByZXR1cm4gKHVzaW5nX211bHRpcGxlX3AKLS0JICB8IChzYXZyZXNfZnByc19pbmxpbmUgPDwg MSkKLS0JICB8IChzYXZyZXNfZ3Byc19pbmxpbmUgPDwgMikpOwotKyAgc3RyYXRlZ3kgPSAodXNp bmdfbXVsdGlwbGVfcAotKwkgICAgICB8IChzYXZyZXNfZnByc19pbmxpbmUgPDwgMSkKLSsJICAg ICAgfCAoc2F2cmVzX2dwcnNfaW5saW5lIDw8IDIpKTsKLSsjaWZkZWYgUE9XRVJQQ19MSU5VWAot KyAgaWYgKFRBUkdFVF82NEJJVCkKLSsgICAgewotKyAgICAgIGlmICghc2F2cmVzX2ZwcnNfaW5s aW5lKQotKwlzdHJhdGVneSB8PSBTQVZSRVNfTk9JTkxJTkVfRlBSU19TQVZFU19MUjsKLSsgICAg ICBlbHNlIGlmICghc2F2cmVzX2dwcnNfaW5saW5lICYmIGluZm8tPmZpcnN0X2ZwX3JlZ19zYXZl ID09IDY0KQotKwlzdHJhdGVneSB8PSBTQVZSRVNfTk9JTkxJTkVfR1BSU19TQVZFU19MUjsKLSsg ICAgfQotKyNlbHNlCi0rICBpZiAoVEFSR0VUX0FJWCAmJiAhc2F2cmVzX2ZwcnNfaW5saW5lKQot KyAgICBzdHJhdGVneSB8PSBTQVZSRVNfTk9JTkxJTkVfRlBSU19ET0VTTlRfUkVTVE9SRV9MUjsK LSsjZW5kaWYKLSsgIHJldHVybiBzdHJhdGVneTsKLSB9Ci0gCi0gLyogRW1pdCBmdW5jdGlvbiBw cm9sb2d1ZSBhcyBpbnNucy4gICovCi1AQCAtMTgyNTksNyArMTgzNzcsNyBAQCByczYwMDBfZW1p dF9wcm9sb2d1ZSAodm9pZCkKLSAgIGludCB1c2luZ19zdG9yZV9tdWx0aXBsZTsKLSAgIGludCB1 c2luZ19zdGF0aWNfY2hhaW5fcCA9IChjZnVuLT5zdGF0aWNfY2hhaW5fZGVjbCAhPSBOVUxMX1RS RUUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBkZl9yZWdzX2V2ZXJfbGl2ZV9w IChTVEFUSUNfQ0hBSU5fUkVHTlVNKQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYm ICFjYWxsX3VzZWRfcmVnc1tTVEFUSUNfQ0hBSU5fUkVHTlVNXSk7Ci0rCQkJICAgICAgJiYgY2Fs bF91c2VkX3JlZ3NbU1RBVElDX0NIQUlOX1JFR05VTV0pOwotICAgSE9TVF9XSURFX0lOVCBzcF9v ZmZzZXQgPSAwOwotIAotICAgaWYgKFRBUkdFVF9GSVhfQU5EX0NPTlRJTlVFKQotQEAgLTE4NDQ0 LDI0ICsxODU2MiwzMCBAQCByczYwMDBfZW1pdF9wcm9sb2d1ZSAodm9pZCkKLSAJCQkgICAgIGdl bl9ydHhfUkVHIChQbW9kZSwgTFJfUkVHTk8pKTsKLSAgICAgICBSVFhfRlJBTUVfUkVMQVRFRF9Q IChpbnNuKSA9IDE7Ci0gCi0tICAgICAgYWRkciA9IGdlbl9ydHhfUExVUyAoUG1vZGUsIGZyYW1l X3JlZ19ydHgsCi0rICAgICAgaWYgKCEoc3RyYXRlZ3kgJiAoU0FWUkVTX05PSU5MSU5FX0dQUlNf U0FWRVNfTFIKLSsJCQl8IFNBVlJFU19OT0lOTElORV9GUFJTX1NBVkVTX0xSKSkpCi0rCXsKLSsJ ICBhZGRyID0gZ2VuX3J0eF9QTFVTIChQbW9kZSwgZnJhbWVfcmVnX3J0eCwKLSAJCQkgICAgICAg R0VOX0lOVCAoaW5mby0+bHJfc2F2ZV9vZmZzZXQgKyBzcF9vZmZzZXQpKTsKLS0gICAgICByZWcg PSBnZW5fcnR4X1JFRyAoUG1vZGUsIDApOwotLSAgICAgIG1lbSA9IGdlbl9ydHhfTUVNIChQbW9k ZSwgYWRkcik7Ci0tICAgICAgLyogVGhpcyBzaG91bGQgbm90IGJlIG9mIHJzNjAwMF9zcl9hbGlh c19zZXQsIGJlY2F1c2Ugb2YKLS0JIF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcy4gICovCi0rCSAg cmVnID0gZ2VuX3J0eF9SRUcgKFBtb2RlLCAwKTsKLSsJICBtZW0gPSBnZW5fcnR4X01FTSAoUG1v ZGUsIGFkZHIpOwotKwkgIC8qIFRoaXMgc2hvdWxkIG5vdCBiZSBvZiByczYwMDBfc3JfYWxpYXNf c2V0LCBiZWNhdXNlIG9mCi0rCSAgICAgX19idWlsdGluX3JldHVybl9hZGRyZXNzLiAgKi8KLSAK LS0gICAgICBpbnNuID0gZW1pdF9tb3ZlX2luc24gKG1lbSwgcmVnKTsKLS0gICAgICByczYwMDBf ZnJhbWVfcmVsYXRlZCAoaW5zbiwgZnJhbWVfcHRyX3J0eCwgaW5mby0+dG90YWxfc2l6ZSwKLS0J CQkgICAgTlVMTF9SVFgsIE5VTExfUlRYKTsKLSsJICBpbnNuID0gZW1pdF9tb3ZlX2luc24gKG1l bSwgcmVnKTsKLSsJICByczYwMDBfZnJhbWVfcmVsYXRlZCAoaW5zbiwgZnJhbWVfcHRyX3J0eCwg aW5mby0+dG90YWxfc2l6ZSwKLSsJCQkJTlVMTF9SVFgsIE5VTExfUlRYKTsKLSsJfQotICAgICB9 Ci0gCi0tICAvKiBJZiB3ZSBuZWVkIHRvIHNhdmUgQ1IsIHB1dCBpdCBpbnRvIHIxMi4gICovCi0r ICAvKiBJZiB3ZSBuZWVkIHRvIHNhdmUgQ1IsIHB1dCBpdCBpbnRvIHIxMiBvciByMTEuICAqLwot ICAgaWYgKCFXT1JMRF9TQVZFX1AgKGluZm8pICYmIGluZm8tPmNyX3NhdmVfcCAmJiBmcmFtZV9y ZWdfcnR4ICE9IGZyYW1lX3B0cl9ydHgpCi0gICAgIHsKLSAgICAgICBydHggc2V0OwotIAotLSAg ICAgIGNyX3NhdmVfcnR4ID0gZ2VuX3J0eF9SRUcgKFNJbW9kZSwgMTIpOwotKyAgICAgIGNyX3Nh dmVfcnR4Ci0rCT0gZ2VuX3J0eF9SRUcgKFNJbW9kZSwgREVGQVVMVF9BQkkgPT0gQUJJX0FJWCAm JiAhc2F2aW5nX0dQUnNfaW5saW5lCi0rCQkgICAgICAgPyAxMSA6IDEyKTsKLSAgICAgICBpbnNu ID0gZW1pdF9pbnNuIChnZW5fbW92ZXNpX2Zyb21fY3IgKGNyX3NhdmVfcnR4KSk7Ci0gICAgICAg UlRYX0ZSQU1FX1JFTEFURURfUCAoaW5zbikgPSAxOwotICAgICAgIC8qIE5vdywgdGhlcmUncyBu byB3YXkgdGhhdCBkd2FyZjJvdXRfZnJhbWVfZGVidWdfZXhwciBpcyBnb2luZwotQEAgLTE4NTAw LDcgKzE4NjI0LDkgQEAgcnM2MDAwX2VtaXRfcHJvbG9ndWUgKHZvaWQpCi0gCQkJCSAgICBpbmZv LT5mcF9zYXZlX29mZnNldCArIHNwX29mZnNldCwKLSAJCQkJICAgIERGbW9kZSwKLSAJCQkJICAg IC8qc2F2ZXA9Ki90cnVlLCAvKmdwcj0qL2ZhbHNlLAotLQkJCQkgICAgLypleGl0cD0qL2ZhbHNl KTsKLSsJCQkJICAgIC8qbHI9Ki8oc3RyYXRlZ3kKLSsJCQkJCSAgICAmIFNBVlJFU19OT0lOTElO RV9GUFJTX1NBVkVTX0xSKQotKwkJCQkJICAgIT0gMCk7Ci0gICAgICAgaW5zbiA9IGVtaXRfaW5z biAocGFyKTsKLSAgICAgICByczYwMDBfZnJhbWVfcmVsYXRlZCAoaW5zbiwgZnJhbWVfcHRyX3J0 eCwgaW5mby0+dG90YWxfc2l6ZSwKLSAJCQkgICAgTlVMTF9SVFgsIE5VTExfUlRYKTsKLUBAIC0x ODU5Niw3ICsxODcyMiw3IEBAIHJzNjAwMF9lbWl0X3Byb2xvZ3VlICh2b2lkKQotIAkgIHBhciA9 IHJzNjAwMF9tYWtlX3NhdnJlc19ydHggKGluZm8sIGdlbl9ydHhfUkVHIChQbW9kZSwgMTEpLAot IAkJCQkJMCwgcmVnX21vZGUsCi0gCQkJCQkvKnNhdmVwPSovdHJ1ZSwgLypncHI9Ki90cnVlLAot LQkJCQkJLypleGl0cD0qL2ZhbHNlKTsKLSsJCQkJCS8qbHI9Ki9mYWxzZSk7Ci0gCSAgaW5zbiA9 IGVtaXRfaW5zbiAocGFyKTsKLSAJICByczYwMDBfZnJhbWVfcmVsYXRlZCAoaW5zbiwgZnJhbWVf cHRyX3J0eCwgaW5mby0+dG90YWxfc2l6ZSwKLSAJCQkJTlVMTF9SVFgsIE5VTExfUlRYKTsKLUBA IC0xODYxMSwyMyArMTg3MzcsMjMgQEAgcnM2MDAwX2VtaXRfcHJvbG9ndWUgKHZvaWQpCi0gICAg IHsKLSAgICAgICBydHggcGFyOwotIAotLSAgICAgIC8qIE5lZWQgdG8gYWRqdXN0IHIxMSBpZiB3 ZSBzYXZlZCBhbnkgRlBScy4gICovCi0rICAgICAgLyogTmVlZCB0byBhZGp1c3QgcjExIChyMTIp IGlmIHdlIHNhdmVkIGFueSBGUFJzLiAgKi8KLSAgICAgICBpZiAoaW5mby0+Zmlyc3RfZnBfcmVn X3NhdmUgIT0gNjQpCi0gICAgICAgICB7Ci0tICAgICAgICAgIHJ0eCByMTEgPSBnZW5fcnR4X1JF RyAocmVnX21vZGUsIDExKTsKLS0gICAgICAgICAgcnR4IG9mZnNldCA9IEdFTl9JTlQgKGluZm8t PnRvdGFsX3NpemUKLSsJICBydHggZGVzdF9yZWcgPSBnZW5fcnR4X1JFRyAocmVnX21vZGUsIERF RkFVTFRfQUJJID09IEFCSV9BSVgKLSsJCQkJICAgICAgPyAxMiA6IDExKTsKLSsJICBydHggb2Zm c2V0ID0gR0VOX0lOVCAoc3Bfb2Zmc2V0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArICgtOCAqICg2NC1pbmZvLT5maXJzdF9mcF9yZWdfc2F2ZSkpKTsKLS0gICAgICAgICAgcnR4 IHB0cl9yZWcgPSAoc3BfcmVnX3J0eCA9PSBmcmFtZV9yZWdfcnR4Ci0tICAgICAgICAgICAgICAg ICAgICAgICAgID8gc3BfcmVnX3J0eCA6IHIxMSk7Ci0tCi0tCSAgZW1pdF9pbnNuIChnZW5fYWRk M19pbnNuIChyMTEsIHB0cl9yZWcsIG9mZnNldCkpOwotKwkgIGVtaXRfaW5zbiAoZ2VuX2FkZDNf aW5zbiAoZGVzdF9yZWcsIGZyYW1lX3JlZ19ydHgsIG9mZnNldCkpOwotICAgICAgICAgfQotIAot ICAgICAgIHBhciA9IHJzNjAwMF9tYWtlX3NhdnJlc19ydHggKGluZm8sIGZyYW1lX3JlZ19ydHgs Ci0gCQkJCSAgICBpbmZvLT5ncF9zYXZlX29mZnNldCArIHNwX29mZnNldCwKLSAJCQkJICAgIHJl Z19tb2RlLAotIAkJCQkgICAgLypzYXZlcD0qL3RydWUsIC8qZ3ByPSovdHJ1ZSwKLS0JCQkJICAg IC8qZXhpdHA9Ki9mYWxzZSk7Ci0rCQkJCSAgICAvKmxyPSovKHN0cmF0ZWd5Ci0rCQkJCQkgICAg JiBTQVZSRVNfTk9JTkxJTkVfR1BSU19TQVZFU19MUikKLSsJCQkJCSAgICE9IDApOwotICAgICAg IGluc24gPSBlbWl0X2luc24gKHBhcik7Ci0gICAgICAgcnM2MDAwX2ZyYW1lX3JlbGF0ZWQgKGlu c24sIGZyYW1lX3B0cl9ydHgsIGluZm8tPnRvdGFsX3NpemUsCi0gCQkJICAgIE5VTExfUlRYLCBO VUxMX1JUWCk7Ci1AQCAtMTg5MDcsOSArMTkwMzMsMTggQEAgcnM2MDAwX291dHB1dF9mdW5jdGlv bl9wcm9sb2d1ZSAoRklMRSAqZgotICAgICAgZnAgdmFsdWVzLiAgKi8KLSAgIGlmIChpbmZvLT5m aXJzdF9mcF9yZWdfc2F2ZSA8IDY0Ci0gICAgICAgJiYgIUZQX1NBVkVfSU5MSU5FIChpbmZvLT5m aXJzdF9mcF9yZWdfc2F2ZSkpCi0tICAgIGZwcmludGYgKGZpbGUsICJcdC5leHRlcm4gJXMlZCVz XG5cdC5leHRlcm4gJXMlZCVzXG4iLAotLQkgICAgIFNBVkVfRlBfUFJFRklYLCBpbmZvLT5maXJz dF9mcF9yZWdfc2F2ZSAtIDMyLCBTQVZFX0ZQX1NVRkZJWCwKLS0JICAgICBSRVNUT1JFX0ZQX1BS RUZJWCwgaW5mby0+Zmlyc3RfZnBfcmVnX3NhdmUgLSAzMiwgUkVTVE9SRV9GUF9TVUZGSVgpOwot KyAgICB7Ci0rICAgICAgY2hhciAqbmFtZTsKLSsgICAgICBpbnQgcmVnbm8gPSBpbmZvLT5maXJz dF9mcF9yZWdfc2F2ZSAtIDMyOwotKwotKyAgICAgIG5hbWUgPSByczYwMDBfc2F2cmVzX3JvdXRp bmVfbmFtZSAoaW5mbywgcmVnbm8sIC8qc2F2ZXA9Ki90cnVlLAotKwkJCQkJIC8qZ3ByPSovZmFs c2UsIC8qbHI9Ki9mYWxzZSk7Ci0rICAgICAgZnByaW50ZiAoZmlsZSwgIlx0LmV4dGVybiAlc1xu IiwgbmFtZSk7Ci0rCi0rICAgICAgbmFtZSA9IHJzNjAwMF9zYXZyZXNfcm91dGluZV9uYW1lIChp bmZvLCByZWdubywgLypzYXZlcD0qL2ZhbHNlLAotKwkJCQkJIC8qZ3ByPSovZmFsc2UsIC8qbHI9 Ki90cnVlKTsKLSsgICAgICBmcHJpbnRmIChmaWxlLCAiXHQuZXh0ZXJuICVzXG4iLCBuYW1lKTsK LSsgICAgfQotIAotICAgLyogV3JpdGUgLmV4dGVybiBmb3IgQUlYIGNvbW1vbiBtb2RlIHJvdXRp bmVzLCBpZiBuZWVkZWQuICAqLwotICAgaWYgKCEgVEFSR0VUX1BPV0VSICYmICEgVEFSR0VUX1BP V0VSUEMgJiYgISBjb21tb25fbW9kZV9kZWZpbmVkKQotQEAgLTE5MDM1LDYgKzE5MTcwLDcgQEAg cnM2MDAwX2VtaXRfZXBpbG9ndWUgKGludCBzaWJjYWxsKQotICAgcnR4IGZyYW1lX3JlZ19ydHgg PSBzcF9yZWdfcnR4OwotICAgcnR4IGNmYV9yZXN0b3JlcyA9IE5VTExfUlRYOwotICAgcnR4IGlu c247Ci0rICBydHggY3Jfc2F2ZV9yZWcgPSBOVUxMX1JUWDsKLSAgIGVudW0gbWFjaGluZV9tb2Rl IHJlZ19tb2RlID0gUG1vZGU7Ci0gICBpbnQgcmVnX3NpemUgPSBUQVJHRVRfMzJCSVQgPyA0IDog ODsKLSAgIGludCBpOwotQEAgLTE5MDY4LDggKzE5MjA0LDEwIEBAIHJzNjAwMF9lbWl0X2VwaWxv Z3VlIChpbnQgc2liY2FsbCkKLSAJCQkJIHx8IChjZnVuLT5jYWxsc19hbGxvY2EKLSAJCQkJICAg ICAmJiAhZnJhbWVfcG9pbnRlcl9uZWVkZWQpKTsKLSAgIHJlc3RvcmVfbHIgPSAoaW5mby0+bHJf c2F2ZV9wCi0tCQkmJiByZXN0b3JpbmdfR1BSc19pbmxpbmUKLS0JCSYmIHJlc3RvcmluZ19GUFJz X2lubGluZSk7Ci0rCQkmJiAocmVzdG9yaW5nX0ZQUnNfaW5saW5lCi0rCQkgICAgfHwgKHN0cmF0 ZWd5ICYgU0FWUkVTX05PSU5MSU5FX0ZQUlNfRE9FU05UX1JFU1RPUkVfTFIpKQotKwkJJiYgKHJl c3RvcmluZ19HUFJzX2lubGluZQotKwkJICAgIHx8IGluZm8tPmZpcnN0X2ZwX3JlZ19zYXZlIDwg NjQpKTsKLSAKLSAgIGlmIChXT1JMRF9TQVZFX1AgKGluZm8pKQotICAgICB7Ci1AQCAtMTkzNTYs NyArMTk0OTQsNyBAQCByczYwMDBfZW1pdF9lcGlsb2d1ZSAoaW50IHNpYmNhbGwpCi0gCi0gICAv KiBHZXQgdGhlIG9sZCBsciBpZiB3ZSBzYXZlZCBpdC4gIElmIHdlIGFyZSByZXN0b3JpbmcgcmVn aXN0ZXJzCi0gICAgICBvdXQtb2YtbGluZSwgdGhlbiB0aGUgb3V0LW9mLWxpbmUgcm91dGluZXMg Y2FuIGRvIHRoaXMgZm9yIHVzLiAgKi8KLS0gIGlmIChyZXN0b3JlX2xyKQotKyAgaWYgKHJlc3Rv cmVfbHIgJiYgcmVzdG9yaW5nX0dQUnNfaW5saW5lKQotICAgICB7Ci0gICAgICAgcnR4IG1lbSA9 IGdlbl9mcmFtZV9tZW1fb2Zmc2V0IChQbW9kZSwgZnJhbWVfcmVnX3J0eCwKLSAJCQkJICAgICAg aW5mby0+bHJfc2F2ZV9vZmZzZXQgKyBzcF9vZmZzZXQpOwotQEAgLTE5MzcxLDEyICsxOTUwOSwx NyBAQCByczYwMDBfZW1pdF9lcGlsb2d1ZSAoaW50IHNpYmNhbGwpCi0gCQkJICAgICAgIEdFTl9J TlQgKGluZm8tPmNyX3NhdmVfb2Zmc2V0ICsgc3Bfb2Zmc2V0KSk7Ci0gICAgICAgcnR4IG1lbSA9 IGdlbl9mcmFtZV9tZW0gKFNJbW9kZSwgYWRkcik7Ci0gCi0tICAgICAgZW1pdF9tb3ZlX2luc24g KGdlbl9ydHhfUkVHIChTSW1vZGUsIDEyKSwgbWVtKTsKLSsgICAgICBjcl9zYXZlX3JlZyA9IGdl bl9ydHhfUkVHIChTSW1vZGUsCi0rCQkJCSBERUZBVUxUX0FCSSA9PSBBQklfQUlYCi0rCQkJCSAm JiAhcmVzdG9yaW5nX0dQUnNfaW5saW5lCi0rCQkJCSAmJiBpbmZvLT5maXJzdF9mcF9yZWdfc2F2 ZSA8IDY0Ci0rCQkJCSA/IDExIDogMTIpOwotKyAgICAgIGVtaXRfbW92ZV9pbnNuIChjcl9zYXZl X3JlZywgbWVtKTsKLSAgICAgfQotIAotICAgLyogU2V0IExSIGhlcmUgdG8gdHJ5IHRvIG92ZXJs YXAgcmVzdG9yZXMgYmVsb3cuICBMUiBpcyBhbHdheXMgc2F2ZWQKLSAgICAgIGFib3ZlIGluY29t aW5nIHN0YWNrLCBzbyBpdCBuZXZlciBuZWVkcyBSRUdfQ0ZBX1JFU1RPUkUuICAqLwotLSAgaWYg KHJlc3RvcmVfbHIpCi0rICBpZiAocmVzdG9yZV9sciAmJiByZXN0b3JpbmdfR1BSc19pbmxpbmUp Ci0gICAgIGVtaXRfbW92ZV9pbnNuIChnZW5fcnR4X1JFRyAoUG1vZGUsIExSX1JFR05PKSwKLSAJ CSAgICBnZW5fcnR4X1JFRyAoUG1vZGUsIDApKTsKLSAKLUBAIC0xOTQ5Myw3ICsxOTYzNiw3IEBA IHJzNjAwMF9lbWl0X2VwaWxvZ3VlIChpbnQgc2liY2FsbCkKLSAJICBwYXIgPSByczYwMDBfbWFr ZV9zYXZyZXNfcnR4IChpbmZvLCBnZW5fcnR4X1JFRyAoUG1vZGUsIDExKSwKLSAJCQkJCTAsIHJl Z19tb2RlLAotIAkJCQkJLypzYXZlcD0qL2ZhbHNlLCAvKmdwcj0qL3RydWUsCi0tCQkJCQkvKmV4 aXRwPSovdHJ1ZSk7Ci0rCQkJCQkvKmxyPSovdHJ1ZSk7Ci0gCSAgZW1pdF9qdW1wX2luc24gKHBh cik7Ci0gCSAgLyogV2UgZG9uJ3Qgd2FudCBhbnlib2R5IGVsc2UgZW1pdHRpbmcgdGhpbmdzIGFm dGVyIHdlIGp1bXBlZAotIAkgICAgIGJhY2suICAqLwotQEAgLTE5NTExLDIxICsxOTY1NCwyNSBA QCByczYwMDBfZW1pdF9lcGlsb2d1ZSAoaW50IHNpYmNhbGwpCi0gCXJzNjAwMF9lbWl0X3N0YWNr X3Jlc2V0IChpbmZvLCBzcF9yZWdfcnR4LCBmcmFtZV9yZWdfcnR4LAotIAkJCQkgc3Bfb2Zmc2V0 LCBjYW5fdXNlX2V4aXQpOwotICAgICAgIGVsc2UKLS0JZW1pdF9pbnNuIChnZW5fYWRkc2kzIChn ZW5fcnR4X1JFRyAoUG1vZGUsIDExKSwKLS0JCQkgICAgICAgc3BfcmVnX3J0eCwKLS0JCQkgICAg ICAgR0VOX0lOVCAoc3Bfb2Zmc2V0IC0gaW5mby0+ZnBfc2l6ZSkpKTsKLSsJewotKwkgIGVtaXRf aW5zbiAoZ2VuX2FkZDNfaW5zbiAoZ2VuX3J0eF9SRUcgKFBtb2RlLCBERUZBVUxUX0FCSSA9PSBB QklfQUlYCi0rCQkJCQkJCT8gMTIgOiAxMSksCi0rCQkJCSAgICBmcmFtZV9yZWdfcnR4LAotKwkJ CQkgICAgR0VOX0lOVCAoc3Bfb2Zmc2V0IC0gaW5mby0+ZnBfc2l6ZSkpKTsKLSsJICBpZiAoUkVH Tk8gKGZyYW1lX3JlZ19ydHgpID09IDExKQotKwkgICAgc3Bfb2Zmc2V0ICs9IGluZm8tPmZwX3Np emU7Ci0rCX0KLSAKLSAgICAgICBwYXIgPSByczYwMDBfbWFrZV9zYXZyZXNfcnR4IChpbmZvLCBm cmFtZV9yZWdfcnR4LAotIAkJCQkgICAgaW5mby0+Z3Bfc2F2ZV9vZmZzZXQsIHJlZ19tb2RlLAot IAkJCQkgICAgLypzYXZlcD0qL2ZhbHNlLCAvKmdwcj0qL3RydWUsCi0tCQkJCSAgICAvKmV4aXRw PSovY2FuX3VzZV9leGl0KTsKLSsJCQkJICAgIC8qbHI9Ki9jYW5fdXNlX2V4aXQpOwotIAotICAg ICAgIGlmIChjYW5fdXNlX2V4aXQpCi0gCXsKLSAJICBpZiAoaW5mby0+Y3Jfc2F2ZV9wKQotIAkg ICAgewotLQkgICAgICByczYwMDBfcmVzdG9yZV9zYXZlZF9jciAoZ2VuX3J0eF9SRUcgKFNJbW9k ZSwgMTIpLAotLQkJCQkgICAgICAgdXNpbmdfbXRjcl9tdWx0aXBsZSk7Ci0rCSAgICAgIHJzNjAw MF9yZXN0b3JlX3NhdmVkX2NyIChjcl9zYXZlX3JlZywgdXNpbmdfbXRjcl9tdWx0aXBsZSk7Ci0g CSAgICAgIGlmIChERUZBVUxUX0FCSSA9PSBBQklfVjQpCi0gCQljZmFfcmVzdG9yZXMKLSAJCSAg PSBhbGxvY19FWFBSX0xJU1QgKFJFR19DRkFfUkVTVE9SRSwKLUBAIC0xOTYxMiw2ICsxOTc1OSwx NiBAQCByczYwMDBfZW1pdF9lcGlsb2d1ZSAoaW50IHNpYmNhbGwpCi0gICAgICAgICAgIH0KLSAg ICAgfQotIAotKyAgaWYgKHJlc3RvcmVfbHIgJiYgIXJlc3RvcmluZ19HUFJzX2lubGluZSkKLSsg ICAgewotKyAgICAgIHJ0eCBtZW0gPSBnZW5fZnJhbWVfbWVtX29mZnNldCAoUG1vZGUsIGZyYW1l X3JlZ19ydHgsCi0rCQkJCSAgICAgaW5mby0+bHJfc2F2ZV9vZmZzZXQgKyBzcF9vZmZzZXQpOwot KwotKyAgICAgIGVtaXRfbW92ZV9pbnNuIChnZW5fcnR4X1JFRyAoUG1vZGUsIDApLCBtZW0pOwot KyAgICAgIGVtaXRfbW92ZV9pbnNuIChnZW5fcnR4X1JFRyAoUG1vZGUsIExSX1JFR05PKSwKLSsJ CSAgICAgIGdlbl9ydHhfUkVHIChQbW9kZSwgMCkpOwotKyAgICB9Ci0rCi0gICAvKiBSZXN0b3Jl IGZwcidzIGlmIHdlIG5lZWQgdG8gZG8gaXQgd2l0aG91dCBjYWxsaW5nIGEgZnVuY3Rpb24uICAq LwotICAgaWYgKHJlc3RvcmluZ19GUFJzX2lubGluZSkKLSAgICAgZm9yIChpID0gMDsgaSA8IDY0 IC0gaW5mby0+Zmlyc3RfZnBfcmVnX3NhdmU7IGkrKykKLUBAIC0xOTYzOCw3ICsxOTc5NSw3IEBA IHJzNjAwMF9lbWl0X2VwaWxvZ3VlIChpbnQgc2liY2FsbCkKLSAgIC8qIElmIHdlIHNhdmVkIGNy LCByZXN0b3JlIGl0IGhlcmUuICBKdXN0IHRob3NlIHRoYXQgd2VyZSB1c2VkLiAgKi8KLSAgIGlm IChpbmZvLT5jcl9zYXZlX3ApCi0gICAgIHsKLS0gICAgICByczYwMDBfcmVzdG9yZV9zYXZlZF9j ciAoZ2VuX3J0eF9SRUcgKFNJbW9kZSwgMTIpLCB1c2luZ19tdGNyX211bHRpcGxlKTsKLSsgICAg ICByczYwMDBfcmVzdG9yZV9zYXZlZF9jciAoY3Jfc2F2ZV9yZWcsIHVzaW5nX210Y3JfbXVsdGlw bGUpOwotICAgICAgIGlmIChERUZBVUxUX0FCSSA9PSBBQklfVjQpCi0gCWNmYV9yZXN0b3Jlcwot IAkgID0gYWxsb2NfRVhQUl9MSVNUIChSRUdfQ0ZBX1JFU1RPUkUsIGdlbl9ydHhfUkVHIChTSW1v ZGUsIENSMl9SRUdOTyksCi1AQCAtMTk2NjksMTMgKzE5ODI2LDE0IEBAIHJzNjAwMF9lbWl0X2Vw aWxvZ3VlIChpbnQgc2liY2FsbCkKLSAgIGlmICghc2liY2FsbCkKLSAgICAgewotICAgICAgIHJ0 dmVjIHA7Ci0rICAgICAgYm9vbCBsciA9IChzdHJhdGVneSAmIFNBVlJFU19OT0lOTElORV9GUFJT X0RPRVNOVF9SRVNUT1JFX0xSKSA9PSAwOwotICAgICAgIGlmICghIHJlc3RvcmluZ19GUFJzX2lu bGluZSkKLSAJcCA9IHJ0dmVjX2FsbG9jICg0ICsgNjQgLSBpbmZvLT5maXJzdF9mcF9yZWdfc2F2 ZSk7Ci0gICAgICAgZWxzZQotIAlwID0gcnR2ZWNfYWxsb2MgKDIpOwotIAotICAgICAgIFJUVkVD X0VMVCAocCwgMCkgPSBnZW5fcnR4X1JFVFVSTiAoVk9JRG1vZGUpOwotLSAgICAgIFJUVkVDX0VM VCAocCwgMSkgPSAocmVzdG9yaW5nX0ZQUnNfaW5saW5lCi0rICAgICAgUlRWRUNfRUxUIChwLCAx KSA9ICgocmVzdG9yaW5nX0ZQUnNfaW5saW5lIHx8ICFscikKLSAJCQkgID8gZ2VuX3J0eF9VU0Ug KFZPSURtb2RlLCBnZW5fcnR4X1JFRyAoUG1vZGUsIDY1KSkKLSAJCQkgIDogZ2VuX3J0eF9DTE9C QkVSIChWT0lEbW9kZSwKLSAJCQkJCSAgICAgZ2VuX3J0eF9SRUcgKFBtb2RlLCA2NSkpKTsKLUBA IC0xOTY5MCwxMCArMTk4NDgsMTIgQEAgcnM2MDAwX2VtaXRfZXBpbG9ndWUgKGludCBzaWJjYWxs KQotIAkgIHN5bSA9IHJzNjAwMF9zYXZyZXNfcm91dGluZV9zeW0gKGluZm8sCi0gCQkJCQkgICAv KnNhdmVwPSovZmFsc2UsCi0gCQkJCQkgICAvKmdwcj0qL2ZhbHNlLAotLQkJCQkJICAgLypleGl0 cD0qL3RydWUpOwotKwkJCQkJICAgLypscj0qL2xyKTsKLSAJICBSVFZFQ19FTFQgKHAsIDIpID0g Z2VuX3J0eF9VU0UgKFZPSURtb2RlLCBzeW0pOwotIAkgIFJUVkVDX0VMVCAocCwgMykgPSBnZW5f cnR4X1VTRSAoVk9JRG1vZGUsCi0tCQkJCQkgIGdlbl9ydHhfUkVHIChQbW9kZSwgMTEpKTsKLSsJ CQkJCSAgZ2VuX3J0eF9SRUcgKFBtb2RlLAotKwkJCQkJCSAgICAgICBERUZBVUxUX0FCSSA9PSBB QklfQUlYCi0rCQkJCQkJICAgICAgID8gMSA6IDExKSk7Ci0gCSAgZm9yIChpID0gMDsgaSA8IDY0 IC0gaW5mby0+Zmlyc3RfZnBfcmVnX3NhdmU7IGkrKykKLSAJICAgIHsKLSAJICAgICAgcnR4IGFk ZHIsIG1lbTsKLS0tLSBnY2MvY29uZmlnL3JzNjAwMC9yczYwMDAubWQJKHJldmlzaW9uIDE1MTcy OCkKLSsrKyBnY2MvY29uZmlnL3JzNjAwMC9yczYwMDAubWQJKHJldmlzaW9uIDE1MTcyOSkKLUBA IC0xNTQzNiw2ICsxNTQzNiwxOSBAQCAoZGVmaW5lX2luc24gIipyZXR1cm5fYW5kX3Jlc3RvcmVf ZnByZWdzCi0gIFsoc2V0X2F0dHIgInR5cGUiICJicmFuY2giKQotICAgKHNldF9hdHRyICJsZW5n dGgiICI0IildKQotIAotKyhkZWZpbmVfaW5zbiAiKnJldHVybl9hbmRfcmVzdG9yZV9mcHJlZ3Nf YWl4Xzxtb2RlPiIKLSsgWyhtYXRjaF9wYXJhbGxlbCAwICJhbnlfcGFyYWxsZWxfb3BlcmFuZCIK LSsJCSAgWyhyZXR1cm4pCi0rCQkgICAodXNlIChtYXRjaF9vcGVyYW5kOlAgMSAicmVnaXN0ZXJf b3BlcmFuZCIgImwiKSkKLSsJCSAgICh1c2UgKG1hdGNoX29wZXJhbmQ6UCAyICJzeW1ib2xfcmVm X29wZXJhbmQiICJzIikpCi0rCQkgICAodXNlIChtYXRjaF9vcGVyYW5kOlAgMyAiZ3BjX3JlZ19v cGVyYW5kIiAiciIpKQotKwkJICAgKHNldCAobWF0Y2hfb3BlcmFuZDpERiA0ICJncGNfcmVnX29w ZXJhbmQiICI9ZCIpCi0rCQkJKG1hdGNoX29wZXJhbmQ6REYgNSAibWVtb3J5X29wZXJhbmQiICJt IikpXSldCi0rICIiCi0rICJiICV6MiIKLSsgWyhzZXRfYXR0ciAidHlwZSIgImJyYW5jaCIpCi0r ICAoc2V0X2F0dHIgImxlbmd0aCIgIjQiKV0pCi0rCi0gOyBUaGlzIGlzIHVzZWQgaW4gY29tcGls aW5nIHRoZSB1bndpbmQgcm91dGluZXMuCi0gKGRlZmluZV9leHBhbmQgImVoX3JldHVybiIKLSAg IFsodXNlIChtYXRjaF9vcGVyYW5kIDAgImdlbmVyYWxfb3BlcmFuZCIgIiIpKV0KLS0tLSBnY2Mv Y29uZmlnL3JzNjAwMC9zeXN2NC5oCShyZXZpc2lvbiAxNTE3MjgpCi0rKysgZ2NjL2NvbmZpZy9y czYwMDAvc3lzdjQuaAkocmV2aXNpb24gMTUxNzI5KQotQEAgLTI3MiwyNyArMjcyLDI1IEBAIGRv IHsJCQkJCQkJCQlcCi0gI2VuZGlmCi0gCi0gLyogRGVmaW5lIGN1dG9mZiBmb3IgdXNpbmcgZXh0 ZXJuYWwgZnVuY3Rpb25zIHRvIHNhdmUgZmxvYXRpbmcgcG9pbnQuCi0tICAgQ3VycmVudGx5IG9u IDY0LWJpdCBWLjQsIGFsd2F5cyB1c2UgaW5saW5lIHN0b3Jlcy4gIFdoZW4gb3B0aW1pemluZwot LSAgIGZvciBzaXplIG9uIDMyLWJpdCB0YXJnZXRzLCB1c2UgZXh0ZXJuYWwgZnVuY3Rpb25zIHdo ZW4KLS0gICBwcm9maXRhYmxlLiAgKi8KLS0jZGVmaW5lIEZQX1NBVkVfSU5MSU5FKEZJUlNUX1JF RykgKG9wdGltaXplX3NpemUgJiYgIVRBUkdFVF82NEJJVAlcCi0rICAgV2hlbiBvcHRpbWl6aW5n IGZvciBzaXplLCB1c2UgZXh0ZXJuYWwgZnVuY3Rpb25zIHdoZW4gcHJvZml0YWJsZS4gICovCi0r I2RlZmluZSBGUF9TQVZFX0lOTElORShGSVJTVF9SRUcpIChvcHRpbWl6ZV9zaXplCQkJXAotIAkJ CQkgICA/ICgoRklSU1RfUkVHKSA9PSA2MgkJCVwKLSAJCQkJICAgICAgfHwgKEZJUlNUX1JFRykg PT0gNjMpCQlcCi0gCQkJCSAgIDogKEZJUlNUX1JFRykgPCA2NCkKLSAvKiBBbmQgc2ltaWxhcmx5 IGZvciBnZW5lcmFsIHB1cnBvc2UgcmVnaXN0ZXJzLiAgKi8KLSAjZGVmaW5lIEdQX1NBVkVfSU5M SU5FKEZJUlNUX1JFRykgKChGSVJTVF9SRUcpIDwgMzIJXAotLQkJCQkgICAmJiAoVEFSR0VUXzY0 QklUIHx8ICFvcHRpbWl6ZV9zaXplKSkKLSsJCQkJICAgJiYgIW9wdGltaXplX3NpemUpCi0gCi0g LyogUHV0IGp1bXAgdGFibGVzIGluIHJlYWQtb25seSBtZW1vcnksIHJhdGhlciB0aGFuIGluIC50 ZXh0LiAgKi8KLSAjZGVmaW5lIEpVTVBfVEFCTEVTX0lOX1RFWFRfU0VDVElPTiAwCi0gCi0gLyog UHJlZml4IGFuZCBzdWZmaXggdG8gdXNlIHRvIHNhdmluZyBmbG9hdGluZyBwb2ludC4gICovCi0g I2RlZmluZQlTQVZFX0ZQX1BSRUZJWCAiX3NhdmVmcHJfIgotLSNkZWZpbmUgU0FWRV9GUF9TVUZG SVggKFRBUkdFVF82NEJJVCA/ICJfbCIgOiAiIikKLSsjZGVmaW5lIFNBVkVfRlBfU1VGRklYICIi Ci0gCi0gLyogUHJlZml4IGFuZCBzdWZmaXggdG8gdXNlIHRvIHJlc3RvcmluZyBmbG9hdGluZyBw b2ludC4gICovCi0gI2RlZmluZQlSRVNUT1JFX0ZQX1BSRUZJWCAiX3Jlc3RmcHJfIgotLSNkZWZp bmUgUkVTVE9SRV9GUF9TVUZGSVggKFRBUkdFVF82NEJJVCA/ICJfbCIgOiAiIikKLSsjZGVmaW5l IFJFU1RPUkVfRlBfU1VGRklYICIiCi0gCi0gLyogVHlwZSB1c2VkIGZvciBwdHJkaWZmX3QsIGFz IGEgc3RyaW5nIHVzZWQgaW4gYSBkZWNsYXJhdGlvbi4gICovCi0gI2RlZmluZSBQVFJESUZGX1RZ UEUgImludCIKCmRpZmYgLS1naXQgYS9nY2M0NC12dGEtY2ZnZXhwYW5kLXB0ci1tb2RlLXByNDEy NDgucGF0Y2ggYi9nY2M0NC12dGEtY2ZnZXhwYW5kLXB0ci1tb2RlLXByNDEyNDgucGF0Y2gKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3ZGM0M2QuLjAwMDAwMDAKLS0tIGEvZ2NjNDQt dnRhLWNmZ2V4cGFuZC1wdHItbW9kZS1wcjQxMjQ4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs MTUxICswLDAgQEAKLWZvciAgZ2NjL0NoYW5nZUxvZwotZnJvbSAgQWxleGFuZHJlIE9saXZhICA8 YW9saXZhQHJlZGhhdC5jb20+Ci0KLQlQUiBkZWJ1Zy80MTI0OAotCSogY2ZnZXhwYW5kLmMgKGNv bnZlcnRfZGVidWdfbWVtb3J5X2FkZHJlc3MpOiBOZXcuCi0JKGV4cGFuZF9kZWJ1Z19leHByKTog Q29udmVydCBiYXNlIGFkZHJlc3MgYW5kIG9mZnNldCB0byB0aGUgc2FtZQotCW1vZGUuICBVc2Ug aXQgdG8gY29udmVydCBhZGRyZXNzZXMgdG8gb3RoZXIgbW9kZXMuICBBY2NlcHQKLQlwdHJfbW9k ZSBhZGRyZXNzZXMuCi0JCi1mb3IgIGdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nCi1mcm9tICBBbGV4 YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KLQotCVBSIGRlYnVnLzQxMjQ4Ci0JKiBn Y2MuZGcvcHI0MTI0OC5jOiBOZXcuCi0KLUluZGV4OiBnY2MvY2ZnZXhwYW5kLmMKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnY2MvY2ZnZXhwYW5kLmMub3JpZwkyMDA5LTA5LTA3IDE5OjAwOjIwLjAwMDAwMDAw MCAtMDMwMAotKysrIGdjYy9jZmdleHBhbmQuYwkyMDA5LTA5LTA3IDE5OjE3OjI3LjAwMDAwMDAw MCAtMDMwMAotQEAgLTE5NjYsNiArMTk2NiwzOCBAQCB1bndyYXBfY29uc3RhbnQgKHJ0eCB4KQot ICAgcmV0dXJuIHJldDsKLSB9Ci0gCi0rLyogQ29udmVydCBYIHRvIE1PREUsIHRoYXQgbXVzdCBi ZSBQbW9kZSBvciBwdHJfbW9kZSwgd2l0aG91dCBlbWl0dGluZwotKyAgIGFueSBydGwuICAqLwot KwotK3N0YXRpYyBydHgKLStjb252ZXJ0X2RlYnVnX21lbW9yeV9hZGRyZXNzIChlbnVtIG1hY2hp bmVfbW9kZSBtb2RlLCBydHggeCkKLSt7Ci0rICBlbnVtIG1hY2hpbmVfbW9kZSB4bW9kZSA9IEdF VF9NT0RFICh4KTsKLSsKLSsjaWZuZGVmIFBPSU5URVJTX0VYVEVORF9VTlNJR05FRAotKyAgZ2Nj X2Fzc2VydCAobW9kZSA9PSBQbW9kZSk7Ci0rICBnY2NfYXNzZXJ0ICh4bW9kZSA9PSBtb2RlIHx8 IHhtb2RlID09IFZPSURtb2RlKTsKLSsjZWxzZQotKyAgZ2NjX2Fzc2VydCAobW9kZSA9PSBQbW9k ZSB8fCBtb2RlID09IHB0cl9tb2RlKTsKLSsKLSsgIGlmIChHRVRfTU9ERSAoeCkgPT0gbW9kZSB8 fCBHRVRfTU9ERSAoeCkgPT0gVk9JRG1vZGUpCi0rICAgIHJldHVybiB4OwotKwotKyAgaWYgKEdF VF9NT0RFX0JJVFNJWkUgKG1vZGUpIDwgR0VUX01PREVfQklUU0laRSAoeG1vZGUpKQotKyAgICB4 ID0gc2ltcGxpZnlfZ2VuX3N1YnJlZyAobW9kZSwgeCwgeG1vZGUsCi0rCQkJICAgICBzdWJyZWdf bG93cGFydF9vZmZzZXQKLSsJCQkgICAgIChtb2RlLCB4bW9kZSkpOwotKyAgZWxzZSBpZiAoUE9J TlRFUlNfRVhURU5EX1VOU0lHTkVEID4gMCkKLSsgICAgeCA9IGdlbl9ydHhfWkVST19FWFRFTkQg KG1vZGUsIHgpOwotKyAgZWxzZSBpZiAoIVBPSU5URVJTX0VYVEVORF9VTlNJR05FRCkKLSsgICAg eCA9IGdlbl9ydHhfU0lHTl9FWFRFTkQgKG1vZGUsIHgpOwotKyAgZWxzZQotKyAgICBnY2NfdW5y ZWFjaGFibGUgKCk7Ci0rI2VuZGlmIC8qIFBPSU5URVJTX0VYVEVORF9VTlNJR05FRCAqLwotKwot KyAgcmV0dXJuIHg7Ci0rfQotKwotIC8qIFJldHVybiBhbiBSVFggZXF1aXZhbGVudCB0byB0aGUg dmFsdWUgb2YgdGhlIHRyZWUgZXhwcmVzc2lvbgotICAgIEVYUC4gICovCi0gCi1AQCAtMjE0MSw2 ICsyMTczLDcgQEAgZXhwYW5kX2RlYnVnX2V4cHIgKHRyZWUgZXhwKQotIAlyZXR1cm4gTlVMTDsK LSAKLSAgICAgICBnY2NfYXNzZXJ0IChHRVRfTU9ERSAob3AwKSA9PSBQbW9kZQotKwkJICB8fCBH RVRfTU9ERSAob3AwKSA9PSBwdHJfbW9kZQotIAkJICB8fCBHRVRfQ09ERSAob3AwKSA9PSBDT05T VF9JTlQKLSAJCSAgfHwgR0VUX0NPREUgKG9wMCkgPT0gQ09OU1RfRE9VQkxFKTsKLSAKLUBAIC0y MTY3LDYgKzIyMDAsNyBAQCBleHBhbmRfZGVidWdfZXhwciAodHJlZSBleHApCi0gCXJldHVybiBO VUxMOwotIAotICAgICAgIGdjY19hc3NlcnQgKEdFVF9NT0RFIChvcDApID09IFBtb2RlCi0rCQkg IHx8IEdFVF9NT0RFIChvcDApID09IHB0cl9tb2RlCi0gCQkgIHx8IEdFVF9DT0RFIChvcDApID09 IENPTlNUX0lOVAotIAkJICB8fCBHRVRfQ09ERSAob3AwKSA9PSBDT05TVF9ET1VCTEUpOwotIAot QEAgLTIxOTksMTMgKzIyMzMsMzIgQEAgZXhwYW5kX2RlYnVnX2V4cHIgKHRyZWUgZXhwKQotIAot IAlpZiAob2Zmc2V0KQotIAkgIHsKLSsJICAgIGVudW0gbWFjaGluZV9tb2RlIGFkZHJtb2RlLCBv ZmZtb2RlOwotKwotIAkgICAgZ2NjX2Fzc2VydCAoTUVNX1AgKG9wMCkpOwotIAotKwkgICAgb3Aw ID0gWEVYUCAob3AwLCAwKTsKLSsJICAgIGFkZHJtb2RlID0gR0VUX01PREUgKG9wMCk7Ci0rCSAg ICBpZiAoYWRkcm1vZGUgPT0gVk9JRG1vZGUpCi0rCSAgICAgIGFkZHJtb2RlID0gUG1vZGU7Ci0r Ci0gCSAgICBvcDEgPSBleHBhbmRfZGVidWdfZXhwciAob2Zmc2V0KTsKLSAJICAgIGlmICghb3Ax KQotIAkgICAgICByZXR1cm4gTlVMTDsKLSAKLS0JICAgIG9wMCA9IGdlbl9ydHhfTUVNIChtb2Rl LCBnZW5fcnR4X1BMVVMgKFBtb2RlLCBYRVhQIChvcDAsIDApLCBvcDEpKTsKLSsJICAgIG9mZm1v ZGUgPSBHRVRfTU9ERSAob3AxKTsKLSsJICAgIGlmIChvZmZtb2RlID09IFZPSURtb2RlKQotKwkg ICAgICBvZmZtb2RlID0gVFlQRV9NT0RFIChUUkVFX1RZUEUgKG9mZnNldCkpOwotKwotKwkgICAg aWYgKGFkZHJtb2RlICE9IG9mZm1vZGUpCi0rCSAgICAgIG9wMSA9IHNpbXBsaWZ5X2dlbl9zdWJy ZWcgKGFkZHJtb2RlLCBvcDEsIG9mZm1vZGUsCi0rCQkJCQkgc3VicmVnX2xvd3BhcnRfb2Zmc2V0 IChhZGRybW9kZSwKLSsJCQkJCQkJCW9mZm1vZGUpKTsKLSsKLSsJICAgIC8qIERvbid0IHVzZSBv ZmZzZXRfYWRkcmVzcyBoZXJlLCB3ZSBkb24ndCBuZWVkIGEKLSsJICAgICAgIHJlY29nbml6YWJs ZSBhZGRyZXNzLCBhbmQgd2UgZG9uJ3Qgd2FudCB0byBnZW5lcmF0ZQotKwkgICAgICAgY29kZS4g ICovCi0rCSAgICBvcDAgPSBnZW5fcnR4X01FTSAobW9kZSwgZ2VuX3J0eF9QTFVTIChhZGRybW9k ZSwgb3AwLCBvcDEpKTsKLSAJICB9Ci0gCi0gCWlmIChNRU1fUCAob3AwKSkKLUBAIC0yNTI1LDcg KzI1NzgsOSBAQCBleHBhbmRfZGVidWdfZXhwciAodHJlZSBleHApCi0gICAgICAgaWYgKCFvcDAg fHwgIU1FTV9QIChvcDApKQotIAlyZXR1cm4gTlVMTDsKLSAKLS0gICAgICByZXR1cm4gWEVYUCAo b3AwLCAwKTsKLSsgICAgICBvcDAgPSBjb252ZXJ0X2RlYnVnX21lbW9yeV9hZGRyZXNzIChtb2Rl LCBYRVhQIChvcDAsIDApKTsKLSsKLSsgICAgICByZXR1cm4gb3AwOwotIAotICAgICBjYXNlIFZF Q1RPUl9DU1Q6Ci0gICAgICAgZXhwID0gYnVpbGRfY29uc3RydWN0b3JfZnJvbV9saXN0IChUUkVF X1RZUEUgKGV4cCksCi1JbmRleDogZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI0MTI0OC5jCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAw Ci0rKysgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI0MTI0OC5jCTIwMDktMDktMDcgMTk6MTc6Mjcu MDAwMDAwMDAwIC0wMzAwCi1AQCAtMCwwICsxLDI3IEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0g Ki8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZyIgfSAqLwotKwotK3N0cnVjdCBfX2djb3ZfdmFy IHsKLSsgICB1bnNpZ25lZCBpbnQgb2Zmc2V0OwotKyAgIHVuc2lnbmVkIGludCBidWZmZXJbKDEg PDwgMTApICsgMV07Ci0rfSBfX2djb3ZfdmFyOwotK3Vuc2lnbmVkIGludCAqIGdjb3Zfd3JpdGVf d29yZHMgKHVuc2lnbmVkIGludCB3b3JkcykgewotKyAgIHVuc2lnbmVkIGludCAqcmVzdWx0Owot KyAgIHJlc3VsdCA9ICZfX2djb3ZfdmFyLmJ1ZmZlcltfX2djb3ZfdmFyLm9mZnNldF07Ci0rICAg cmV0dXJuIHJlc3VsdDsKLSt9Ci0rCi0rc3RydWN0IGdjb3ZfY3RyX3N1bW1hcnkgeyB9OwotK3N0 cnVjdCBnY292X3N1bW1hcnkgewotKyAgIHVuc2lnbmVkIGludCBjaGVja3N1bTsKLSsgICBzdHJ1 Y3QgZ2Nvdl9jdHJfc3VtbWFyeSBjdHJzWzFdOwotK307Ci0rdm9pZCBfX2djb3Zfd3JpdGVfdW5z aWduZWQgKHVuc2lnbmVkIGludCk7Ci0rdm9pZCBfX2djb3Zfd3JpdGVfc3VtbWFyeSAodW5zaWdu ZWQgaW50IHRhZywKLSsJCQkgICBjb25zdCBzdHJ1Y3QgZ2Nvdl9zdW1tYXJ5ICpzdW1tYXJ5KQot K3sKLSsgICB1bnNpZ25lZCBpeDsKLSsgICBjb25zdCBzdHJ1Y3QgZ2Nvdl9jdHJfc3VtbWFyeSAq Y3N1bTsKLSsgICBfX2djb3Zfd3JpdGVfdW5zaWduZWQgKHN1bW1hcnktPmNoZWNrc3VtKTsKLSsg ICBmb3IgKGNzdW0gPSBzdW1tYXJ5LT5jdHJzLCBpeCA9IDE7IGl4LS07IGNzdW0rKykgeyB9Ci0r fQoKZGlmZiAtLWdpdCBhL3NvdXJjZXMgYi9zb3VyY2VzCmluZGV4IGMxMThhNDEuLjcwZDBlMWEg MTAwNjQ0Ci0tLSBhL3NvdXJjZXMKKysrIGIvc291cmNlcwpAQCAtMSwyICsxLDIgQEAKIDI2NTlm MDljMmU0M2VmOGI3ZDQ0MDYzMjE3NTNmMWIyICBmYXN0amFyLTAuOTcudGFyLmd6Ci1kODBkNDZj ZGI1Njc5MTRkMzQ0MDhhZmNkM2M0ZDVhZiAgZ2NjLTQuNC4xLTIwMDkwOTE4LnRhci5iejIKKzI1 ZWYwNjZjMGVhODc3MGY1NjJlZWQ0NWE5ZTE2MTlmICBnY2MtNC40LjEtMjAwOTA5MjMudGFyLmJ6 Mgo=