LyoKICogY3RybGFsdGRlbC5jIC0gU2V0IHRoZSBmdW5jdGlvbiBvZiB0aGUgQ3RybC1BbHQtRGVsIGNvbWJpbmF0aW9uCiAqIENyZWF0ZWQgNC1KdWwtOTIgYnkgUGV0ZXIgT3JiYWVrIDxwb2VAZGFpbWkuYWF1LmRrPgogKiBmdHA6Ly9mdHAuZGFpbWkuYWF1LmRrL3B1Yi9saW51eC9wb2UvCiAqIDE5OTktMDItMjIgQXJrYWRpdXN6IE1ptmtpZXdpY3ogPG1pc2lla0BwbGQuT1JHLlBMPgogKiAtIGFkZGVkIE5hdGl2ZSBMYW5ndWFnZSBTdXBwb3J0CiAqCiAqLwoKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDx1bmlzdGQuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RyaW5nLmg+CiNpbmNsdWRlICJsaW51eF9yZWJvb3QuaCIKI2luY2x1ZGUgIm5scy5oIgoKaW50Cm1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgewoKCXNldGxvY2FsZShMQ19BTEwsICIiKTsKCWJpbmR0ZXh0ZG9tYWluKFBBQ0tBR0UsIExPQ0FMRURJUik7Cgl0ZXh0ZG9tYWluKFBBQ0tBR0UpOwoJCgoJaWYoZ2V0ZXVpZCgpKSB7CgkJZnByaW50ZihzdGRlcnIsCgkJICAgIF8oIllvdSBtdXN0IGJlIHJvb3QgdG8gc2V0IHRoZSBDdHJsLUFsdC1EZWwgYmVoYXZpb3VyLlxuIikpOwoJCWV4aXQoMSk7Cgl9CgoJaWYoYXJnYyA9PSAyICYmICFzdHJjbXAoImhhcmQiLCBhcmd2WzFdKSkgewoJCWlmKG15X3JlYm9vdChMSU5VWF9SRUJPT1RfQ01EX0NBRF9PTikgPCAwKSB7CgkJCXBlcnJvcigiY3RybGFsdGRlbDogcmVib290Iik7CgkJCWV4aXQoMSk7CgkJfQoJfSBlbHNlIGlmKGFyZ2MgPT0gMiAmJiAhc3RyY21wKCJzb2Z0IiwgYXJndlsxXSkpIHsKCQlpZihteV9yZWJvb3QoTElOVVhfUkVCT09UX0NNRF9DQURfT0ZGKSA8IDApIHsKCQkJcGVycm9yKCJjdHJsYWx0ZGVsOiByZWJvb3QiKTsKCQkJZXhpdCgxKTsKCQl9Cgl9IGVsc2UgewoJCWZwcmludGYoc3RkZXJyLCBfKCJVc2FnZTogY3RybGFsdGRlbCBoYXJkfHNvZnRcbiIpKTsKCQlleGl0KDEpOwoJfQoJZXhpdCgwKTsKfQoKCg==