R2l0IGNvbW1pdCA4NDE5NzQ1Mjk4OWFhNThhZDZhNTA3ZmE1MWQ5MTg1ZDFiYmJkM2Q0IGJ5IEwu IEUuIFNlZ292aWEuCkNvbW1pdHRlZCBvbiAyOC8wNi8yMDIyIGF0IDE2OjAxLgpQdXNoZWQgYnkg bHNlZ292aWEgaW50byBicmFuY2ggJ21hc3RlcicuCgpMQ01TOiBmaXggdmFsdWUgcmFuZ2UgZGV0 ZWN0aW9uIG9mIFlDYkNyIHByb2ZpbGVzCgpXb2x0aGVyYSdzIHJpZ2h0LCBZQ2JDciAod2hlbiB1 c2VkIGZ1bGwtcmFuZ2UsIElDQyBkb2Vzbid0IGFsbG93Cm90aGVyd2lzZSkgaXMgYSByZWludGVy cHJldGF0aW9uIG9mIFJHQi4gSG93ZXZlciwgbXkgcHJvZmlsZXMgaW1wbGVtZW50CnJvdW5kdHJp cCB0cmFuc2Zvcm1hdGlvbiB0aHJvdWdoIHRoZSBBdG9CMCBhbmQgQnRvQTAgKHBsdXMgdGhlIEZQ CmFsdGVybmF0aXZlcykgc28gcmV0dXJuaW5nIGVhcmx5IGJyZWFrcyB0aGUgcHVycG9zZSBvZiBo YXZpbmcgdGhlbS4KClRoaXMgY29tbWl0IG1vdmVzIHRoZSBjbGF1c2UgdG8gdGhlIGNvcnJlY3Qg bG9jYXRpb24gYW5kIGxldHMgdGhlCnJvdW5kdHJpcCBjaGVjayBleGVjdXRlIGZpcnN0LgoKQ0NN QUlMOiBraW1hZ2VzaG9wQGtkZS5vcmcKCk0gICsxMCAgIC0xNCAgIHBsdWdpbnMvY29sb3IvbGNt czJlbmdpbmUvY29sb3Jwcm9maWxlcy9JY2NDb2xvclByb2ZpbGUuY3BwCgpodHRwczovL2ludmVu dC5rZGUub3JnL2dyYXBoaWNzL2tyaXRhL2NvbW1pdC84NDE5NzQ1Mjk4OWFhNThhZDZhNTA3ZmE1 MWQ5MTg1ZDFiYmJkM2Q0CgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb2xvci9sY21zMmVuZ2luZS9j b2xvcnByb2ZpbGVzL0ljY0NvbG9yUHJvZmlsZS5jcHAgYi9wbHVnaW5zL2NvbG9yL2xjbXMyZW5n aW5lL2NvbG9ycHJvZmlsZXMvSWNjQ29sb3JQcm9maWxlLmNwcAppbmRleCA4YWVkZTJkYmI1Li42 ZmI4YWEyNDA4IDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbG9yL2xjbXMyZW5naW5lL2NvbG9ycHJv ZmlsZXMvSWNjQ29sb3JQcm9maWxlLmNwcAorKysgYi9wbHVnaW5zL2NvbG9yL2xjbXMyZW5naW5l L2NvbG9ycHJvZmlsZXMvSWNjQ29sb3JQcm9maWxlLmNwcApAQCAtNDQyLDE5ICs0NDIsNiBAQCB2 b2lkIEljY0NvbG9yUHJvZmlsZTo6Y2FsY3VsYXRlRmxvYXRVSU1pbk1heCh2b2lkKQogICAgIFFf QVNTRVJUKG51bV9jaGFubmVscyA+PSAxICYmIG51bV9jaGFubmVscyA8PSA0KTsgLy8gbnVtX2No YW5uZWxzPT0xIGlzIGZvciBncmF5c2NhbGUsIHdlIG5lZWQgdG8gaGFuZGxlIGl0CiAgICAgUV9B U1NFUlQoY29sb3Jfc3BhY2VfbWFzayk7CiAKLSAgICBpZiAoY29sb3Jfc3BhY2Vfc2lnID09IGNt c1NpZ1lDYkNyRGF0YSkgewotICAgICAgICAvLyB0cmlja3ksIGJlY2F1c2UgdGhlIGZ1bmRhbWVu dGFsIHByb2JsZW0gaXMgdGhhdCBZQ2JDciBwcm9maWxlcwotICAgICAgICAvLyBhcmUgTFVUIGJh c2VkLCBidXQgdGhpcyBzZWVtcyB0byBiZSB0aGUgY2FzZSB3aXRoIHRoZSBwcm9maWxlcwotICAg ICAgICAvLyB0aGF0IGNhbiBiZSB0ZXN0ZWQuIEdpdmVuIHRoaXMgc3BhY2UgaXMgYSByZWludGVy cHJldGF0aW9uIG9mCi0gICAgICAgIC8vIFJHQiBzcGFjZXMsIHRoaXMgbWlnaHQgYmUgdGhlIGFw cHJvcHJpYXRlIHZhbHVlLCB0aG91Z2guCi0gICAgICAgIHJldC5yZXNpemUobnVtX2NoYW5uZWxz KTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBudW1fY2hhbm5lbHM7ICsr aSkgewotICAgICAgICAgICAgcmV0W2ldLm1pblZhbCA9IDA7Ci0gICAgICAgICAgICByZXRbaV0u bWF4VmFsID0gMTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgLy8g dG8gdHJ5IHRvIGZpbmQgdGhlIG1heCByYW5nZSBvZiBmbG9hdC9kb3VibGVzIGZvciB0aGlzIHBy b2ZpbGUsCiAgICAgLy8gcGFzcyBpbiBtaW4vbWF4IGludCBhbmQgbWFrZSB0aGUgcHJvZmlsZSBj b252ZXJ0IHRoYXQKICAgICAvLyB0aGlzIGlzIGZhciBmcm9tIHBlcmZlY3QsIHdlIG5lZWQgYSBi ZXR0ZXIgd2F5LCBpZiBwb3NzaWJsZSB0byBnZXQgdGhlICJib3VuZHMiIG9mIGEgcHJvZmlsZQpA QCAtNDkzLDcgKzQ4MCwxNiBAQCB2b2lkIEljY0NvbG9yUHJvZmlsZTo6Y2FsY3VsYXRlRmxvYXRV SU1pbk1heCh2b2lkKQogCiAgICAgcmV0LnJlc2l6ZShudW1fY2hhbm5lbHMpOwogICAgIGZvciAo dW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbnVtX2NoYW5uZWxzOyArK2kpIHsKLSAgICAgICAgaWYg KG91dF9taW5fcGl4ZWxbaV0gPCBvdXRfbWF4X3BpeGVsW2ldKSB7CisgICAgICAgIGlmIChjb2xv cl9zcGFjZV9zaWcgPT0gY21zU2lnWUNiQ3JEYXRhKSB7CisgICAgICAgICAgICAvLyBBbHRob3Vn aCBZQ2JDciBwcm9maWxlcyBhcmUgZXNzZW50aWFsbHkgTFVULWJhc2VkCisgICAgICAgICAgICAv LyAoZHVlIHRvIHRoZSBpbmFiaWxpdHkgb2YgSUNDIHRvIHJlcHJlc2VudCBtdWx0aXBsZSBzdWNj ZXNzaXZlCisgICAgICAgICAgICAvLyBtYXRyaXggdHJhbnNmb3JtcyBleGNlcHQgd2l0aCBCdG9E MCB0YWdzIGluIFY0KSwKKyAgICAgICAgICAgIC8vIFlDYkNyIGlzIGludGVuZGVkIHRvIGJlIGEg cm91bmR0cmlwIHRyYW5zZm9ybSB0byB0aGUKKyAgICAgICAgICAgIC8vIGNvcnJlc3BvbmRpbmcg UkdCIHRyYW5zZm9ybSAoQlQuNjAxLCBCVC43MDkpLgorICAgICAgICAgICAgLy8gRm9yY2UgZW5h YmxlIHRoZSBmdWxsIHJhbmdlIG9mIHZhbHVlcy4KKyAgICAgICAgICAgIHJldFtpXS5taW5WYWwg PSAwOworICAgICAgICAgICAgcmV0W2ldLm1heFZhbCA9IDE7CisgICAgICAgIH0gZWxzZSBpZiAo b3V0X21pbl9waXhlbFtpXSA8IG91dF9tYXhfcGl4ZWxbaV0pIHsKICAgICAgICAgICAgIHJldFtp XS5taW5WYWwgPSBvdXRfbWluX3BpeGVsW2ldOwogICAgICAgICAgICAgcmV0W2ldLm1heFZhbCA9 IG91dF9tYXhfcGl4ZWxbaV07CiAgICAgICAgIH0gZWxzZSB7Cgo=