Ly8gUlVOOiAlY2xhbmdfY2MxIC10cmlwbGUgaTM4Ni11bmtub3duLXVua25vd24gLWVtaXQtbGx2bSAlcyAtbyAtIHwgRmlsZUNoZWNrIC1jaGVjay1wcmVmaXg9Q0hFQ0stQyAlcwovLyBSVU46ICVjbGFuZ19jYzEgLXggYysrIC1zdGQ9YysrMHggLXRyaXBsZSBpMzg2LXVua25vd24tdW5rbm93biAtZW1pdC1sbHZtICVzIC1vIC0gfCBGaWxlQ2hlY2sgLWNoZWNrLXByZWZpeD1DSEVDSy1DUFAwWCAlcwovLyBSVU46ICVjbGFuZ19jYzEgLXggYysrIC1zdGQ9YysrMHggLWZzaG9ydC13Y2hhciAtdHJpcGxlIGkzODYtdW5rbm93bi11bmtub3duIC1lbWl0LWxsdm0gJXMgLW8gLSB8IEZpbGVDaGVjayAtY2hlY2stcHJlZml4PUNIRUNLLVNIT1JUV0NIQVIgJXMKCi8vIFRoaXMgZmlsZSBjb250YWlucyBhIG1peCBvZiBJU08tODg1OS0xIGFuZCBVVEYtOCBlbmNvZGVkIGRhdGEuCi8vIHRoZSBsaXRlcmFsIGFzc2lnbmVkIHRvICdhYScgc2hvdWxkIGJlIHRoZSBJU08tODg1OS0xIGVuY29kaW5nIGZvciB0aGUgY29kZQovLyBwb2ludHMgVSswMEMwIFUrMDBFOSBVKzAwRUUgVSswMEY1IFUrMDBGQwoKLy8gVGhlIHJlc3Qgb2YgdGhlIGxpdGVyYWxzIHNob3VsZCBjb250YWluIHRoZSBVVEYtOCBlbmNvZGluZyBmb3IgVSswNDFBIFUrMDQzRQovLyBVKzA0NDggVSswNDNBIFUrMDQzMAoKI2lmbmRlZiBfX2NwbHVzcGx1cwojaW5jbHVkZSA8c3RkZGVmLmg+CiNlbmRpZgoKI2lmZGVmIF9fY3BsdXNwbHVzCmV4dGVybiAiQyIKI2VuZGlmCnZvaWQgZigpIHsKICAvLyBDSEVDSy1DOiBwcml2YXRlIHVubmFtZWRfYWRkciBjb25zdGFudCBbNiB4IGk4XSBjIlxDMFxFOVxFRVxGNVxGQ1wwMCIsIGFsaWduIDEKICAvLyBDSEVDSy1DUFAwWDogcHJpdmF0ZSB1bm5hbWVkX2FkZHIgY29uc3RhbnQgWzYgeCBpOF0gYyJcQzBcRTlcRUVcRjVcRkNcMDAiLCBhbGlnbiAxCiAgY2hhciBjb25zdCAqYWEgPSAiwOnu9fwiOwogIAogIC8vIENIRUNLLUM6IHByaXZhdGUgdW5uYW1lZF9hZGRyIGNvbnN0YW50IFsxMSB4IGk4XSBjIlxEMFw5QVxEMFxCRVxEMVw4OFxEMFxCQVxEMFxCMFwwMCIsIGFsaWduIDEKICAvLyBDSEVDSy1DUFAwWDogcHJpdmF0ZSB1bm5hbWVkX2FkZHIgY29uc3RhbnQgWzExIHggaThdIGMiXEQwXDlBXEQwXEJFXEQxXDg4XEQwXEJBXEQwXEIwXDAwIiwgYWxpZ24gMQogIGNoYXIgY29uc3QgKmEgPSAi0JrQvtGI0LrQsCI7CiAgCiAgLy8gQ0hFQ0stQzogcHJpdmF0ZSB1bm5hbWVkX2FkZHIgY29uc3RhbnQgWzYgeCBpMzJdIFtpMzIgMTA1MCwgaTMyIDEwODYsIGkzMiAxMDk2LCBpMzIgMTA4MiwgaTMyIDEwNzIsIGkzMiAwXSwgYWxpZ24gNAogIC8vIENIRUNLLVNIT1JUV0NIQVI6IHByaXZhdGUgdW5uYW1lZF9hZGRyIGNvbnN0YW50IFs2IHggaTE2XSBbaTE2IDEwNTAsIGkxNiAxMDg2LCBpMTYgMTA5NiwgaTE2IDEwODIsIGkxNiAxMDcyLCBpMTYgMF0sIGFsaWduIDIKICAvLyBDSEVDSy1DUFAwWDogcHJpdmF0ZSB1bm5hbWVkX2FkZHIgY29uc3RhbnQgWzYgeCBpMzJdIFtpMzIgMTA1MCwgaTMyIDEwODYsIGkzMiAxMDk2LCBpMzIgMTA4MiwgaTMyIDEwNzIsIGkzMiAwXSwgYWxpZ24gNAogIHdjaGFyX3QgY29uc3QgKmIgPSBMItCa0L7RiNC60LAiOwoKICAvLyBDSEVDSy1DOiBwcml2YXRlIHVubmFtZWRfYWRkciBjb25zdGFudCBbNCB4IGkzMl0gW2kzMiAyMDMyMCwgaTMyIDIyOTA5LCBpMzIgNjYzMDQsIGkzMiAwXSwgYWxpZ24gNAogIC8vIENIRUNLLUNQUDBYOiBwcml2YXRlIHVubmFtZWRfYWRkciBjb25zdGFudCBbNCB4IGkzMl0gW2kzMiAyMDMyMCwgaTMyIDIyOTA5LCBpMzIgNjYzMDQsIGkzMiAwXSwgYWxpZ24gNAojaWYgX19XQ0hBUl9NQVhfXyA9PSAyMTQ3NDgzNjQ3CiAgd2NoYXJfdCBjb25zdCAqYjIgPSBMIlx4NGY2MFx4NTk3ZFx4MTAzMDAiOwojZW5kaWYKCiNpZiBfX2NwbHVzcGx1cyA+PSAyMDExMDNMCiAgCiAgLy8gQ0hFQ0stQ1BQMFg6IHByaXZhdGUgdW5uYW1lZF9hZGRyIGNvbnN0YW50IFsxMiB4IGk4XSBjIjFcRDBcOUFcRDBcQkVcRDFcODhcRDBcQkFcRDBcQjBcMDAiLCBhbGlnbiAxCiAgY2hhciBjb25zdCAqYyA9IHU4IjHQmtC+0YjQutCwIjsKICAgIAogIC8vIENIRUNLLUNQUDBYOiBwcml2YXRlIHVubmFtZWRfYWRkciBjb25zdGFudCBbNyB4IGkxNl0gW2kxNiA1MCwgaTE2IDEwNTAsIGkxNiAxMDg2LCBpMTYgMTA5NiwgaTE2IDEwODIsIGkxNiAxMDcyLCBpMTYgMF0sIGFsaWduIDIKICBjaGFyMTZfdCBjb25zdCAqZSA9IHUiMtCa0L7RiNC60LAiOwogIAogIC8vIENIRUNLLUNQUDBYOiBwcml2YXRlIHVubmFtZWRfYWRkciBjb25zdGFudCBbNyB4IGkzMl0gW2kzMiA1MSwgaTMyIDEwNTAsIGkzMiAxMDg2LCBpMzIgMTA5NiwgaTMyIDEwODIsIGkzMiAxMDcyLCBpMzIgMF0sIGFsaWduIDQKICBjaGFyMzJfdCBjb25zdCAqZiA9IFUiM9Ca0L7RiNC60LAiOwoKICAvLyBDSEVDSy1DUFAwWDogcHJpdmF0ZSB1bm5hbWVkX2FkZHIgY29uc3RhbnQgWzEyIHggaThdIGMiNFxEMFw5QVxEMFxCRVxEMVw4OFxEMFxCQVxEMFxCMFwwMCIsIGFsaWduIDEKICBjaGFyIGNvbnN0ICpkID0gdThSIig00JrQvtGI0LrQsCkiOwogIAogIC8vIENIRUNLLUNQUDBYOiBwcml2YXRlIHVubmFtZWRfYWRkciBjb25zdGFudCBbNyB4IGkxNl0gW2kxNiA1MywgaTE2IDEwNTAsIGkxNiAxMDg2LCBpMTYgMTA5NiwgaTE2IDEwODIsIGkxNiAxMDcyLCBpMTYgMF0sIGFsaWduIDIKICBjaGFyMTZfdCBjb25zdCAqZyA9IHVSIig10JrQvtGI0LrQsCkiOwogIAogIC8vIENIRUNLLUNQUDBYOiBwcml2YXRlIHVubmFtZWRfYWRkciBjb25zdGFudCBbNyB4IGkzMl0gW2kzMiA1NCwgaTMyIDEwNTAsIGkzMiAxMDg2LCBpMzIgMTA5NiwgaTMyIDEwODIsIGkzMiAxMDcyLCBpMzIgMF0sIGFsaWduIDQKICBjaGFyMzJfdCBjb25zdCAqaCA9IFVSIig20JrQvtGI0LrQsCkiOwogIAogIC8vIENIRUNLLVNIT1JUV0NIQVI6IHByaXZhdGUgdW5uYW1lZF9hZGRyIGNvbnN0YW50IFs3IHggaTE2XSBbaTE2IDU1LCBpMTYgMTA1MCwgaTE2IDEwODYsIGkxNiAxMDk2LCBpMTYgMTA4MiwgaTE2IDEwNzIsIGkxNiAwXSwgYWxpZ24gMgogIC8vIENIRUNLLUNQUDBYOiBwcml2YXRlIHVubmFtZWRfYWRkciBjb25zdGFudCBbNyB4IGkzMl0gW2kzMiA1NSwgaTMyIDEwNTAsIGkzMiAxMDg2LCBpMzIgMTA5NiwgaTMyIDEwODIsIGkzMiAxMDcyLCBpMzIgMF0sIGFsaWduIDQKICB3Y2hhcl90IGNvbnN0ICppID0gTFIiKDfQmtC+0YjQutCwKSI7CiAgCiNlbmRpZgp9Cg==