Name: series-workflow8n84m Phase: Failed StartedAt: 2026-08-17 13:09:27 +0000 UTC FinishedAt: 2026-08-17 13:27:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8n84m[0] Phase: Succeeded StartedAt: 2026-08-17 13:09:27 +0000 UTC FinishedAt: 2026-08-17 13:27:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8n84m[0].run-triage Phase: Succeeded StartedAt: 2026-08-17 13:09:27 +0000 UTC FinishedAt: 2026-08-17 13:27:41 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDEzOjI3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGhlbHBlciBmdW5jdGlvbiBgZGFtb25fc2V0X3RhcmdldF9waWRgIHRvIHJlcGxhY2UgZHVwbGljYXRlZCBjb2RlIHRoYXQgbG9va3MgdXAgYW5kIGFzc2lnbnMgYSBQSUQgdG8gYSBEQU1PTiB0YXJnZXQuIEl0IGFsc28gcmVtb3ZlcyB1bnVzZWQgc3RhdGljIHZhcmlhYmxlcyBpbiB0aGUgREFNT04gc2FtcGxlIG1vZHVsZXMuIFRoZXNlIGFyZSBwdXJlbHkgc3RydWN0dXJhbCByZWZhY3RvcmluZyBhbmQgY2xlYW51cCBjaGFuZ2VzIHdpdGggbm8gZnVuY3Rpb25hbCBpbXBhY3Qgb24gdGhlIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAxMzoyNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQwYTM3ODY1OGZmY2M2OTU5NWYzY2UyYWJhNmI5N2YwNDA2ZDU3NTJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxNyAxMzoyNzoxMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RhbW9uLmggYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcbmluZGV4IDBjOGI3ZGRlZjlhYmIuLmE5MzdhYTU1MTcwYjQgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZGFtb24uaFxuQEAgLTEwNTQsNiAmIzQzOzEwNTQsNyBAQCBpbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYyk7XG4gXG4gc3RydWN0IGRhbW9uX3RhcmdldCAqZGFtb25fbmV3X3RhcmdldCh2b2lkKTtcbiB2b2lkIGRhbW9uX2FkZF90YXJnZXQoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KTtcbiYjNDM7aW50IGRhbW9uX3NldF90YXJnZXRfcGlkKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIGludCBwaWQpO1xuIGJvb2wgZGFtb25fdGFyZ2V0c19lbXB0eShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpO1xuIHZvaWQgZGFtb25fZnJlZV90YXJnZXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdCk7XG4gdm9pZCBkYW1vbl9kZXN0cm95X3RhcmdldChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpO1xuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuY1xuaW5kZXggNjQ0ZGFmNWExNjU2MC4uODJiMTk2NDA3YWU4NSAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vY29yZS5jXG5AQCAtMTAsNiAmIzQzOzEwLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rdGhyZWFkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tZW1jb250cm9sLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tbS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BpZC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcHNpLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zY2hlZC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG5AQCAtNzk1LDYgJiM0Mzs3OTYsMTcgQEAgdm9pZCBkYW1vbl9hZGRfdGFyZ2V0KHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX3RhcmdldCAqdClcbiBcdGxpc3RfYWRkX3RhaWwoXHUwMDI2dC1cdTAwM2VsaXN0LCBcdTAwMjZjdHgtXHUwMDNlYWRhcHRpdmVfdGFyZ2V0cyk7XG4gfVxuIFxuJiM0MzsvKlxuJiM0MzsgKiBBc3NpZ24gdGhlIHN0cnVjdCBwaWQgb2YgdGhlIGdpdmVuIHBpZCBudW1iZXIgdG8gdGhlIGdpdmVuIHRhcmdldC5cbiYjNDM7ICovXG4mIzQzO2ludCBkYW1vbl9zZXRfdGFyZ2V0X3BpZChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBpbnQgcGlkKVxuJiM0Mzt7XG4mIzQzO1x0dC1cdTAwM2VwaWQgPSBmaW5kX2dldF9waWQocGlkKTtcbiYjNDM7XHRpZiAoIXQtXHUwMDNlcGlkKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gYm9vbCBkYW1vbl90YXJnZXRzX2VtcHR5KHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbiB7XG4gXHRyZXR1cm4gbGlzdF9lbXB0eShcdTAwMjZjdHgtXHUwMDNlYWRhcHRpdmVfdGFyZ2V0cyk7XG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vc3lzZnMuYyBiL21tL2RhbW9uL3N5c2ZzLmNcbmluZGV4IGUzODU4ZmZhYjRiMjIuLjNjODFiNGM5MWFjMGQgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9zeXNmcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9zeXNmcy5jXG5AQCAtMyw3ICYjNDM7Myw2IEBAXG4gICogREFNT04gc3lzZnMgSW50ZXJmYWNlXG4gICovXG4gXG4tI2luY2x1ZGUgXHUwMDNjbGludXgvcGlkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zY2hlZC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG4gXG5AQCAtMjAzNSw5ICYjNDM7MjAzNCw4IEBAIHN0YXRpYyBpbnQgZGFtb25fc3lzZnNfYWRkX3RhcmdldChzdHJ1Y3QgZGFtb25fc3lzZnNfdGFyZ2V0ICpzeXNfdGFyZ2V0LFxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcdGRhbW9uX2FkZF90YXJnZXQoY3R4LCB0KTtcbiBcdGlmIChkYW1vbl90YXJnZXRfaGFzX3BpZChjdHgpKSB7XG4tXHRcdHQtXHUwMDNlcGlkID0gZmluZF9nZXRfcGlkKHN5c190YXJnZXQtXHUwMDNlcGlkKTtcbi1cdFx0aWYgKCF0LVx1MDAzZXBpZClcbi1cdFx0XHQvKiBjYWxsZXIgd2lsbCBkZXN0cm95IHRhcmdldHMgKi9cbiYjNDM7XHRcdC8qIGNhbGxlciB3aWxsIGRlc3Ryb3kgdGFyZ2V0cyAqL1xuJiM0MztcdFx0aWYgKGRhbW9uX3NldF90YXJnZXRfcGlkKHQsIHN5c190YXJnZXQtXHUwMDNlcGlkKSlcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcdHQtXHUwMDNlb2Jzb2xldGUgPSBzeXNfdGFyZ2V0LVx1MDAzZW9ic29sZXRlO1xuZGlmZiAtLWdpdCBhL3NhbXBsZXMvZGFtb24vcHJjbC5jIGIvc2FtcGxlcy9kYW1vbi9wcmNsLmNcbmluZGV4IDg0MjA5OWJkNjIyODYuLjgzZGRmMTI4MTFkNTcgMTAwNjQ0XG4tLS0gYS9zYW1wbGVzL2RhbW9uL3ByY2wuY1xuJiM0MzsmIzQzOyYjNDM7IGIvc2FtcGxlcy9kYW1vbi9wcmNsLmNcbkBAIC0zMiw3ICYjNDM7MzIsNiBAQCBtb2R1bGVfcGFyYW1fY2IoZW5hYmxlZCwgXHUwMDI2ZW5hYmxlZF9wYXJhbV9vcHMsIFx1MDAyNmVuYWJsZWQsIDA2MDApO1xuIE1PRFVMRV9QQVJNX0RFU0MoZW5hYmxlZCwgXCYjMzQ7RW5hYmxlIG9yIGRpc2FibGUgREFNT05fU0FNUExFX1BSQ0xcJiMzNDspO1xuIFxuIHN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpjdHg7XG4tc3RhdGljIHN0cnVjdCBwaWQgKnRhcmdldF9waWRwO1xuIFxuIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX3ByY2xfcmVwZWF0X2NhbGxfZm4odm9pZCAqZGF0YSlcbiB7XG5AQCAtNzksMTIgJiM0Mzs3OCwxMCBAQCBzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9wcmNsX3N0YXJ0KHZvaWQpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFx0fVxuIFx0ZGFtb25fYWRkX3RhcmdldChjdHgsIHRhcmdldCk7XG4tXHR0YXJnZXRfcGlkcCA9IGZpbmRfZ2V0X3BpZCh0YXJnZXRfcGlkKTtcbi1cdGlmICghdGFyZ2V0X3BpZHApIHtcbiYjNDM7XHRpZiAoZGFtb25fc2V0X3RhcmdldF9waWQodGFyZ2V0LCB0YXJnZXRfcGlkKSkge1xuIFx0XHRkYW1vbl9kZXN0cm95X2N0eChjdHgpO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbi1cdHRhcmdldC1cdTAwM2VwaWQgPSB0YXJnZXRfcGlkcDtcbiBcbiBcdHNjaGVtZSA9IGRhbW9uX25ld19zY2hlbWUoXG4gXHRcdFx0XHUwMDI2KHN0cnVjdCBkYW1vc19hY2Nlc3NfcGF0dGVybikge1xuZGlmZiAtLWdpdCBhL3NhbXBsZXMvZGFtb24vd3NzZS5jIGIvc2FtcGxlcy9kYW1vbi93c3NlLmNcbmluZGV4IDM3ZmQ1ZGEyMDE1ODguLjUzOTQ0YWVhODQyOGUgMTAwNjQ0XG4tLS0gYS9zYW1wbGVzL2RhbW9uL3dzc2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvc2FtcGxlcy9kYW1vbi93c3NlLmNcbkBAIC0zMyw3ICYjNDM7MzMsNiBAQCBtb2R1bGVfcGFyYW1fY2IoZW5hYmxlZCwgXHUwMDI2ZW5hYmxlZF9wYXJhbV9vcHMsIFx1MDAyNmVuYWJsZWQsIDA2MDApO1xuIE1PRFVMRV9QQVJNX0RFU0MoZW5hYmxlZCwgXCYjMzQ7RW5hYmxlIG9yIGRpc2FibGUgREFNT05fU0FNUExFX1dTU0VcJiMzNDspO1xuIFxuIHN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpjdHg7XG4tc3RhdGljIHN0cnVjdCBwaWQgKnRhcmdldF9waWRwO1xuIFxuIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX3dzc2VfcmVwZWF0X2NhbGxfZm4odm9pZCAqZGF0YSlcbiB7XG5AQCAtNzksMTIgJiM0Mzs3OCwxMCBAQCBzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV93c3NlX3N0YXJ0KHZvaWQpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFx0fVxuIFx0ZGFtb25fYWRkX3RhcmdldChjdHgsIHRhcmdldCk7XG4tXHR0YXJnZXRfcGlkcCA9IGZpbmRfZ2V0X3BpZCh0YXJnZXRfcGlkKTtcbi1cdGlmICghdGFyZ2V0X3BpZHApIHtcbiYjNDM7XHRpZiAoZGFtb25fc2V0X3RhcmdldF9waWQodGFyZ2V0LCB0YXJnZXRfcGlkKSkge1xuIFx0XHRkYW1vbl9kZXN0cm95X2N0eChjdHgpO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbi1cdHRhcmdldC1cdTAwM2VwaWQgPSB0YXJnZXRfcGlkcDtcbiBcbiBcdGVyciA9IGRhbW9uX3N0YXJ0KFx1MDAyNmN0eCwgMSwgdHJ1ZSk7XG4gXHRpZiAoZXJyKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMTM6Mjc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBoZWxwZXIgZnVuY3Rpb24gYGRhbW9uX3NldF90YXJnZXRfcGlkYCB0byByZXBsYWNlIGR1cGxpY2F0ZWQgY29kZSB0aGF0IGxvb2tzIHVwIGFuZCBhc3NpZ25zIGEgUElEIHRvIGEgREFNT04gdGFyZ2V0LiBJdCBhbHNvIHJlbW92ZXMgdW51c2VkIHN0YXRpYyB2YXJpYWJsZXMgaW4gdGhlIERBTU9OIHNhbXBsZSBtb2R1bGVzLiBUaGVzZSBhcmUgcHVyZWx5IHN0cnVjdHVyYWwgcmVmYWN0b3JpbmcgYW5kIGNsZWFudXAgY2hhbmdlcyB3aXRoIG5vIGZ1bmN0aW9uYWwgaW1wYWN0IG9uIHRoZSBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkMGEzNzg2NThmZmNjNjk1OTVmM2NlMmFiYTZiOTdmMDQwNmQ1NzUyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMTcgMTM6Mjc6MTIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RhbW9uLmggYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmgKaW5kZXggMGM4YjdkZGVmOWFiYi4uYTkzN2FhNTUxNzBiNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9kYW1vbi5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZGFtb24uaApAQCAtMTA1NCw2ICYjNDM7MTA1NCw3IEBAIGludCBkYW1vc19jb21taXRfcXVvdGFfZ29hbHMoc3RydWN0IGRhbW9zX3F1b3RhICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YSAqc3JjKTsKIAogc3RydWN0IGRhbW9uX3RhcmdldCAqZGFtb25fbmV3X3RhcmdldCh2b2lkKTsKIHZvaWQgZGFtb25fYWRkX3RhcmdldChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpOwomIzQzO2ludCBkYW1vbl9zZXRfdGFyZ2V0X3BpZChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBpbnQgcGlkKTsKIGJvb2wgZGFtb25fdGFyZ2V0c19lbXB0eShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpOwogdm9pZCBkYW1vbl9mcmVlX3RhcmdldChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KTsKIHZvaWQgZGFtb25fZGVzdHJveV90YXJnZXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdCwgc3RydWN0IGRhbW9uX2N0eCAqY3R4KTsKZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuYwppbmRleCA2NDRkYWY1YTE2NTYwLi44MmIxOTY0MDdhZTg1IDEwMDY0NAotLS0gYS9tbS9kYW1vbi9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vY29yZS5jCkBAIC0xMCw2ICYjNDM7MTAsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L2t0aHJlYWQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9tZW1jb250cm9sLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbW0uaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcGlkLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcHNpLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc2NoZWQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zbGFiLmgmZ3Q7CkBAIC03OTUsNiAmIzQzOzc5NiwxNyBAQCB2b2lkIGRhbW9uX2FkZF90YXJnZXQoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KQogCWxpc3RfYWRkX3RhaWwoJmFtcDt0LSZndDtsaXN0LCAmYW1wO2N0eC0mZ3Q7YWRhcHRpdmVfdGFyZ2V0cyk7CiB9CiAKJiM0MzsvKgomIzQzOyAqIEFzc2lnbiB0aGUgc3RydWN0IHBpZCBvZiB0aGUgZ2l2ZW4gcGlkIG51bWJlciB0byB0aGUgZ2l2ZW4gdGFyZ2V0LgomIzQzOyAqLwomIzQzO2ludCBkYW1vbl9zZXRfdGFyZ2V0X3BpZChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBpbnQgcGlkKQomIzQzO3sKJiM0MzsJdC0mZ3Q7cGlkID0gZmluZF9nZXRfcGlkKHBpZCk7CiYjNDM7CWlmICghdC0mZ3Q7cGlkKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKIGJvb2wgZGFtb25fdGFyZ2V0c19lbXB0eShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpCiB7CiAJcmV0dXJuIGxpc3RfZW1wdHkoJmFtcDtjdHgtJmd0O2FkYXB0aXZlX3RhcmdldHMpOwpkaWZmIC0tZ2l0IGEvbW0vZGFtb24vc3lzZnMuYyBiL21tL2RhbW9uL3N5c2ZzLmMKaW5kZXggZTM4NThmZmFiNGIyMi4uM2M4MWI0YzkxYWMwZCAxMDA2NDQKLS0tIGEvbW0vZGFtb24vc3lzZnMuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9zeXNmcy5jCkBAIC0zLDcgJiM0MzszLDYgQEAKICAqIERBTU9OIHN5c2ZzIEludGVyZmFjZQogICovCiAKLSNpbmNsdWRlICZsdDtsaW51eC9waWQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zY2hlZC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3NsYWIuaCZndDsKIApAQCAtMjAzNSw5ICYjNDM7MjAzNCw4IEBAIHN0YXRpYyBpbnQgZGFtb25fc3lzZnNfYWRkX3RhcmdldChzdHJ1Y3QgZGFtb25fc3lzZnNfdGFyZ2V0ICpzeXNfdGFyZ2V0LAogCQlyZXR1cm4gLUVOT01FTTsKIAlkYW1vbl9hZGRfdGFyZ2V0KGN0eCwgdCk7CiAJaWYgKGRhbW9uX3RhcmdldF9oYXNfcGlkKGN0eCkpIHsKLQkJdC0mZ3Q7cGlkID0gZmluZF9nZXRfcGlkKHN5c190YXJnZXQtJmd0O3BpZCk7Ci0JCWlmICghdC0mZ3Q7cGlkKQotCQkJLyogY2FsbGVyIHdpbGwgZGVzdHJveSB0YXJnZXRzICovCiYjNDM7CQkvKiBjYWxsZXIgd2lsbCBkZXN0cm95IHRhcmdldHMgKi8KJiM0MzsJCWlmIChkYW1vbl9zZXRfdGFyZ2V0X3BpZCh0LCBzeXNfdGFyZ2V0LSZndDtwaWQpKQogCQkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCXQtJmd0O29ic29sZXRlID0gc3lzX3RhcmdldC0mZ3Q7b2Jzb2xldGU7CmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL3ByY2wuYyBiL3NhbXBsZXMvZGFtb24vcHJjbC5jCmluZGV4IDg0MjA5OWJkNjIyODYuLjgzZGRmMTI4MTFkNTcgMTAwNjQ0Ci0tLSBhL3NhbXBsZXMvZGFtb24vcHJjbC5jCiYjNDM7JiM0MzsmIzQzOyBiL3NhbXBsZXMvZGFtb24vcHJjbC5jCkBAIC0zMiw3ICYjNDM7MzIsNiBAQCBtb2R1bGVfcGFyYW1fY2IoZW5hYmxlZCwgJmFtcDtlbmFibGVkX3BhcmFtX29wcywgJmFtcDtlbmFibGVkLCAwNjAwKTsKIE1PRFVMRV9QQVJNX0RFU0MoZW5hYmxlZCwgJiMzNDtFbmFibGUgb3IgZGlzYWJsZSBEQU1PTl9TQU1QTEVfUFJDTCYjMzQ7KTsKIAogc3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmN0eDsKLXN0YXRpYyBzdHJ1Y3QgcGlkICp0YXJnZXRfcGlkcDsKIAogc3RhdGljIGludCBkYW1vbl9zYW1wbGVfcHJjbF9yZXBlYXRfY2FsbF9mbih2b2lkICpkYXRhKQogewpAQCAtNzksMTIgJiM0Mzs3OCwxMCBAQCBzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9wcmNsX3N0YXJ0KHZvaWQpCiAJCXJldHVybiAtRU5PTUVNOwogCX0KIAlkYW1vbl9hZGRfdGFyZ2V0KGN0eCwgdGFyZ2V0KTsKLQl0YXJnZXRfcGlkcCA9IGZpbmRfZ2V0X3BpZCh0YXJnZXRfcGlkKTsKLQlpZiAoIXRhcmdldF9waWRwKSB7CiYjNDM7CWlmIChkYW1vbl9zZXRfdGFyZ2V0X3BpZCh0YXJnZXQsIHRhcmdldF9waWQpKSB7CiAJCWRhbW9uX2Rlc3Ryb3lfY3R4KGN0eCk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KLQl0YXJnZXQtJmd0O3BpZCA9IHRhcmdldF9waWRwOwogCiAJc2NoZW1lID0gZGFtb25fbmV3X3NjaGVtZSgKIAkJCSZhbXA7KHN0cnVjdCBkYW1vc19hY2Nlc3NfcGF0dGVybikgewpkaWZmIC0tZ2l0IGEvc2FtcGxlcy9kYW1vbi93c3NlLmMgYi9zYW1wbGVzL2RhbW9uL3dzc2UuYwppbmRleCAzN2ZkNWRhMjAxNTg4Li41Mzk0NGFlYTg0MjhlIDEwMDY0NAotLS0gYS9zYW1wbGVzL2RhbW9uL3dzc2UuYwomIzQzOyYjNDM7JiM0MzsgYi9zYW1wbGVzL2RhbW9uL3dzc2UuYwpAQCAtMzMsNyAmIzQzOzMzLDYgQEAgbW9kdWxlX3BhcmFtX2NiKGVuYWJsZWQsICZhbXA7ZW5hYmxlZF9wYXJhbV9vcHMsICZhbXA7ZW5hYmxlZCwgMDYwMCk7CiBNT0RVTEVfUEFSTV9ERVNDKGVuYWJsZWQsICYjMzQ7RW5hYmxlIG9yIGRpc2FibGUgREFNT05fU0FNUExFX1dTU0UmIzM0Oyk7CiAKIHN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpjdHg7Ci1zdGF0aWMgc3RydWN0IHBpZCAqdGFyZ2V0X3BpZHA7CiAKIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX3dzc2VfcmVwZWF0X2NhbGxfZm4odm9pZCAqZGF0YSkKIHsKQEAgLTc5LDEyICYjNDM7NzgsMTAgQEAgc3RhdGljIGludCBkYW1vbl9zYW1wbGVfd3NzZV9zdGFydCh2b2lkKQogCQlyZXR1cm4gLUVOT01FTTsKIAl9CiAJZGFtb25fYWRkX3RhcmdldChjdHgsIHRhcmdldCk7Ci0JdGFyZ2V0X3BpZHAgPSBmaW5kX2dldF9waWQodGFyZ2V0X3BpZCk7Ci0JaWYgKCF0YXJnZXRfcGlkcCkgewomIzQzOwlpZiAoZGFtb25fc2V0X3RhcmdldF9waWQodGFyZ2V0LCB0YXJnZXRfcGlkKSkgewogCQlkYW1vbl9kZXN0cm95X2N0eChjdHgpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9Ci0JdGFyZ2V0LSZndDtwaWQgPSB0YXJnZXRfcGlkcDsKIAogCWVyciA9IGRhbW9uX3N0YXJ0KCZhbXA7Y3R4LCAxLCB0cnVlKTsKIAlpZiAoZXJyKSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDEzOjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MTkKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA3NzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqREFNT04gUmVmYWN0b3Jpbmc6IEEgRGVlcCBEaXZlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7UmVmYWN0b3JpbmcsIHByb2JhYmx5IG5vIGJpZyBkZWFsLiYjMzQ7IEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7dmUgaW50cm9kdWNlZCBhIG5ldyBmdW5jdGlvbiwgYGRhbW9uX3NldF90YXJnZXRfcGlkYCwgaW4gYG1tL2RhbW9uL2NvcmUuY2AgYW5kIGFyZSB1c2luZyBpdCBpbiBhIGZldyBwbGFjZXM6IGBtbS9kYW1vbi9zeXNmcy5jYCwgYW5kIHRoZSBzYW1wbGUgY29kZSBpbiBgc2FtcGxlcy9kYW1vbi9wcmNsLmNgIGFuZCBgc2FtcGxlcy9kYW1vbi93c3NlLmNgLiBUaGV5IGFyZSByZWZhY3RvcmluZyBob3cgdGhlIERBTU9OIHN1YnN5c3RlbSBzZXRzIHRoZSB0YXJnZXQgUElELiBMZXQgbWUgc2VlIGlmIHRoZXJlIGFyZSBhbnkgZnVuY3Rpb25hbCBpbXBsaWNhdGlvbnMgaGVyZS4KCkxldCYjMzk7cyBxdWlja2x5IGNvbXBhcmUgdGhlIG9sZCBhbmQgdGhlIG5ldyBgbW0vZGFtb24vc3lzZnMuY2AgY29kZS4gVGhlIG9sZCBjb2RlIHdhczoKCmBgYGMKCWlmIChkYW1vbl90YXJnZXRfaGFzX3BpZChjdHgpKSB7CgkJdC0mZ3Q7cGlkID0gZmluZF9nZXRfcGlkKHN5c190YXJnZXQtJmd0O3BpZCk7CgkJaWYgKCF0LSZndDtwaWQpCgkJCS8qIGNhbGxlciB3aWxsIGRlc3Ryb3kgdGFyZ2V0cyAqLwoJCQlyZXR1cm4gLUVJTlZBTDsKCX0KYGBgCgpBbmQgdGhlIG5ldyBjb2RlOgoKYGBgYwoJaWYgKGRhbW9uX3RhcmdldF9oYXNfcGlkKGN0eCkpIHsKCQkvKiBjYWxsZXIgd2lsbCBkZXN0cm95IHRhcmdldHMgKi8KCQlpZiAoZGFtb25fc2V0X3RhcmdldF9waWQodCwgc3lzX3RhcmdldC0mZ3Q7cGlkKSkKCQkJcmV0dXJuIC1FSU5WQUw7Cgl9CmBgYAoKVGhlIG5ldyBmdW5jdGlvbiBgZGFtb25fc2V0X3RhcmdldF9waWRgIGl0c2VsZiBpcyBzaW1wbGUsIGJhc2ljYWxseSBlbmNhcHN1bGF0aW5nIHdoYXQgd2FzIHRoZXJlIGJlZm9yZToKCmBgYGMKaW50IGRhbW9uX3NldF90YXJnZXRfcGlkKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIGludCBwaWQpCnsKCXQtJmd0O3BpZCA9IGZpbmRfZ2V0X3BpZChwaWQpOwoJaWYgKCF0LSZndDtwaWQpCgkJcmV0dXJuIC1FSU5WQUw7CglyZXR1cm4gMDsKfQpgYGAKClNlZW1zIGxpa2UgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIHJlZmFjdG9yaW5nLCBlbmNhcHN1bGF0aW5nIHRoZSBQSUQgYXNzaWdubWVudCBhbmQgZXJyb3IgY2hlY2tpbmcuIEkmIzM5O20gbm90IHNlZWluZyBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIGhlcmUuCgpIb2xkIG9uLCBsZXQgbWUgcXVpY2tseSByZXZpZXcgdGhlIGBzYW1wbGVzL2RhbW9uL3dzc2UuY2AgYW5kIGBzYW1wbGVzL2RhbW9uL3ByY2wuY2AgY29kZSB0byBtYWtlIHN1cmUgSSBhbSBub3QgbWlzc2luZyBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzLgoKYGBgYwotCXRhcmdldF9waWRwID0gZmluZF9nZXRfcGlkKHRhcmdldF9waWQpOwotCWlmICghdGFyZ2V0X3BpZHApIHsKJiM0MzsJaWYgKGRhbW9uX3NldF90YXJnZXRfcGlkKHRhcmdldCwgdGFyZ2V0X3BpZCkpIHsKIAkJZGFtb25fZGVzdHJveV9jdHgoY3R4KTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQotCXRhcmdldC0mZ3Q7cGlkID0gdGFyZ2V0X3BpZHA7CmBgYAoKSXQmIzM5O3MgbGl0ZXJhbGx5IHRoZSBzYW1lIGNoYW5nZSBmb3IgYHNhbXBsZXMvZGFtb24vcHJjbC5jYCBhcyB3ZWxsLiBBZ2FpbiwgdGhlIHJlZmFjdG9yaW5nIGlzIGp1c3QgcmVwbGFjaW5nIHRoZSBgZmluZF9nZXRfcGlkYCBjYWxsIGFuZCBlcnJvciBoYW5kbGluZyB3aXRoIHRoZSBuZXcgaGVscGVyIGZ1bmN0aW9uLiBJIGFtIG5vdCBzZWVpbmcgYW55IG5ldyBsb2dpYy4KCldhaXQgYSBzZWNvbmQsIHRoZXJlJiMzOTtzIGFub3RoZXIgc3VidGxlIGNoYW5nZSBJIHNob3VsZCBpbnZlc3RpZ2F0ZS4gVGhlIGNvZGUgc25pcHBldHMgbWVudGlvbiB0aGF0IGB0YXJnZXRfcGlkcGAgd2FzIGEgc3RhdGljIGdsb2JhbCB2YXJpYWJsZToKCmBgYGMKLXN0YXRpYyBzdHJ1Y3QgcGlkICp0YXJnZXRfcGlkcDsKYGBgCgphbmQgbm93IGl0JiMzOTtzIGdvbmUuIFRoYXQgbWVhbnMgdGhlIGdsb2JhbCBzdG9yYWdlIGlzIG5vIGxvbmdlciB0aGVyZS4gSXMgaXQgdXNlZCBhbnl3aGVyZSBlbHNlIGluIHRob3NlIHNhbXBsZSBmaWxlcz8gSSB3aWxsIHF1aWNrbHkgc2VhcmNoIGBzYW1wbGVzL2RhbW9uL3ByY2wuY2AgYW5kIGBzYW1wbGVzL2RhbW9uL3dzc2UuY2AuIFllcCwgaXQmIzM5O3MganVzdCBhIHZhcmlhYmxlIGZvciBzdG9yaW5nIHRoZSBgZmluZF9nZXRfcGlkYCByZXN1bHQgYW5kIG5vdyB0aGF0IHdlJiMzOTtyZSB1c2luZyBhIGhlbHBlciBmdW5jdGlvbiwgaXQmIzM5O3Mgbm8gbG9uZ2VyIG5lY2Vzc2FyeS4gSXQmIzM5O3MgdHJ1bHkgYSByZWZhY3RvcmluZy4KCk9rYXksIEkmIzM5O20gY29uZmlkZW50IHRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgaGVyZSwganVzdCBzdHJ1Y3R1cmFsLiBUaGVyZWZvcmUsIFdvcnRoRnV6emluZz1mYWxzZS4gSSBhbSBjb25maWRlbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMTM6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0YXJnZXRfcGlkcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3NhbXBsZXMvZGFtb24vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAxMzoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDMxCgkJCQkJCQlvdXRwdXQ6IDk1CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQ29kZSBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7dmUgdGFrZW4gYSBsb29rIGF0IHRoaXMgcGF0Y2guIEl0IHNlZW1zIHRoZSBjb2RlIGluIHF1ZXN0aW9uIHdhcyBkZWNsYXJlZCBnbG9iYWxseSwgd2hpY2ggdXN1YWxseSByYWlzZXMgYSByZWQgZmxhZyBmb3IgbWUsIGJ1dCB0aGUgaW1wb3J0YW50IHBvaW50IGlzIHRoYXQgaXQgd2FzbiYjMzk7dCBhY3R1YWxseSBiZWluZyAqdXRpbGl6ZWQqIGFueXdoZXJlLiBSZW1vdmluZyB0aGlzIHVudXNlZCBnbG9iYWwgdmFyaWFibGUgaXMsIHBsYWluIGFuZCBzaW1wbGUsIGEgY2xlYW51cCBvcGVyYXRpb24uIE5vIGZ1bmN0aW9uYWwgY2hhbmdlcywganVzdCBnb29kIGhvdXNla2VlcGluZy4KCkdpdmVuIHRoYXQgaXQmIzM5O3MganVzdCByZWZhY3RvcmluZyBhbmQgY2xlYW51cCwgSSYjMzk7bSBjb25maWRlbnQgaW4gdGFnZ2luZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gTm8gbmVlZCB0byBleHBlbmQgcmVzb3VyY2VzIGZ1enppbmcgdGhpcy4gSXQgaXNuJiMzOTt0IGNoYW5naW5nIGJlaGF2aW9yIGluIGEgd2F5IHRoYXQgd291bGQgaW50cm9kdWNlIGEgdnVsbmVyYWJpbGl0eSBvciByZWdyZXNzaW9uLiBJdCYjMzk7cyBzYWZlIHRvIG1lcmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDEzOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGhlbHBlciBmdW5jdGlvbiBgZGFtb25fc2V0X3RhcmdldF9waWRgIHRvIHJlcGxhY2UgZHVwbGljYXRlZCBjb2RlIHRoYXQgbG9va3MgdXAgYW5kIGFzc2lnbnMgYSBQSUQgdG8gYSBEQU1PTiB0YXJnZXQuIEl0IGFsc28gcmVtb3ZlcyB1bnVzZWQgc3RhdGljIHZhcmlhYmxlcyBpbiB0aGUgREFNT04gc2FtcGxlIG1vZHVsZXMuIFRoZXNlIGFyZSBwdXJlbHkgc3RydWN0dXJhbCByZWZhY3RvcmluZyBhbmQgY2xlYW51cCBjaGFuZ2VzIHdpdGggbm8gZnVuY3Rpb25hbCBpbXBhY3Qgb24gdGhlIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGhlbHBlciBmdW5jdGlvbiBgZGFtb25fc2V0X3RhcmdldF9waWRgIHRvIHJlcGxhY2UgZHVwbGljYXRlZCBjb2RlIHRoYXQgbG9va3MgdXAgYW5kIGFzc2lnbnMgYSBQSUQgdG8gYSBEQU1PTiB0YXJnZXQuIEl0IGFsc28gcmVtb3ZlcyB1bnVzZWQgc3RhdGljIHZhcmlhYmxlcyBpbiB0aGUgREFNT04gc2FtcGxlIG1vZHVsZXMuIFRoZXNlIGFyZSBwdXJlbHkgc3RydWN0dXJhbCByZWZhY3RvcmluZyBhbmQgY2xlYW51cCBjaGFuZ2VzIHdpdGggbm8gZnVuY3Rpb25hbCBpbXBhY3Qgb24gdGhlIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAxMzoyNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTdUMTM6Mjc6MTMuNzk3NzMyMjM4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxOTg2MTEzNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgaGVscGVyIGZ1bmN0aW9uIGBkYW1vbl9zZXRfdGFyZ2V0X3BpZGAgdG8gcmVwbGFjZSBkdXBsaWNhdGVkIGNvZGUgdGhhdCBsb29rcyB1cCBhbmQgYXNzaWducyBhIFBJRCB0byBhIERBTU9OIHRhcmdldC4gSXQgYWxzbyByZW1vdmVzIHVudXNlZCBzdGF0aWMgdmFyaWFibGVzIGluIHRoZSBEQU1PTiBzYW1wbGUgbW9kdWxlcy4gVGhlc2UgYXJlIHB1cmVseSBzdHJ1Y3R1cmFsIHJlZmFjdG9yaW5nIGFuZCBjbGVhbnVwIGNoYW5nZXMgd2l0aCBubyBmdW5jdGlvbmFsIGltcGFjdCBvbiB0aGUgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QxMzoyNzoxMy43OTc3Mzg1MThaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NzEwMTE3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGQwYTM3ODY1OGZmY2M2OTU5NWYzY2UyYWJhNmI5N2YwNDA2ZDU3NTJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMTcgMTM6Mjc6MTIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kYW1vbi5oIGIvaW5jbHVkZS9saW51eC9kYW1vbi5oXFxuaW5kZXggMGM4YjdkZGVmOWFiYi4uYTkzN2FhNTUxNzBiNCAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcXG5AQCAtMTA1NCw2ICsxMDU0LDcgQEAgaW50IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpO1xcbiBcXG4gc3RydWN0IGRhbW9uX3RhcmdldCAqZGFtb25fbmV3X3RhcmdldCh2b2lkKTtcXG4gdm9pZCBkYW1vbl9hZGRfdGFyZ2V0KHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX3RhcmdldCAqdCk7XFxuK2ludCBkYW1vbl9zZXRfdGFyZ2V0X3BpZChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBpbnQgcGlkKTtcXG4gYm9vbCBkYW1vbl90YXJnZXRzX2VtcHR5KHN0cnVjdCBkYW1vbl9jdHggKmN0eCk7XFxuIHZvaWQgZGFtb25fZnJlZV90YXJnZXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdCk7XFxuIHZvaWQgZGFtb25fZGVzdHJveV90YXJnZXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdCwgc3RydWN0IGRhbW9uX2N0eCAqY3R4KTtcXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jXFxuaW5kZXggNjQ0ZGFmNWExNjU2MC4uODJiMTk2NDA3YWU4NSAxMDA2NDRcXG4tLS0gYS9tbS9kYW1vbi9jb3JlLmNcXG4rKysgYi9tbS9kYW1vbi9jb3JlLmNcXG5AQCAtMTAsNiArMTAsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgva3RocmVhZC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbWVtY29udHJvbC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbW0uaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BpZC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcHNpLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zY2hlZC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvc2xhYi5oXFx1MDAzZVxcbkBAIC03OTUsNiArNzk2LDE3IEBAIHZvaWQgZGFtb25fYWRkX3RhcmdldChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXFxuIFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNnQtXFx1MDAzZWxpc3QsIFxcdTAwMjZjdHgtXFx1MDAzZWFkYXB0aXZlX3RhcmdldHMpO1xcbiB9XFxuIFxcbisvKlxcbisgKiBBc3NpZ24gdGhlIHN0cnVjdCBwaWQgb2YgdGhlIGdpdmVuIHBpZCBudW1iZXIgdG8gdGhlIGdpdmVuIHRhcmdldC5cXG4rICovXFxuK2ludCBkYW1vbl9zZXRfdGFyZ2V0X3BpZChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBpbnQgcGlkKVxcbit7XFxuK1xcdHQtXFx1MDAzZXBpZCA9IGZpbmRfZ2V0X3BpZChwaWQpO1xcbitcXHRpZiAoIXQtXFx1MDAzZXBpZClcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiBib29sIGRhbW9uX3RhcmdldHNfZW1wdHkoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbiB7XFxuIFxcdHJldHVybiBsaXN0X2VtcHR5KFxcdTAwMjZjdHgtXFx1MDAzZWFkYXB0aXZlX3RhcmdldHMpO1xcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9zeXNmcy5jIGIvbW0vZGFtb24vc3lzZnMuY1xcbmluZGV4IGUzODU4ZmZhYjRiMjIuLjNjODFiNGM5MWFjMGQgMTAwNjQ0XFxuLS0tIGEvbW0vZGFtb24vc3lzZnMuY1xcbisrKyBiL21tL2RhbW9uL3N5c2ZzLmNcXG5AQCAtMyw3ICszLDYgQEBcXG4gICogREFNT04gc3lzZnMgSW50ZXJmYWNlXFxuICAqL1xcbiBcXG4tI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BpZC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvc2NoZWQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NsYWIuaFxcdTAwM2VcXG4gXFxuQEAgLTIwMzUsOSArMjAzNCw4IEBAIHN0YXRpYyBpbnQgZGFtb25fc3lzZnNfYWRkX3RhcmdldChzdHJ1Y3QgZGFtb25fc3lzZnNfdGFyZ2V0ICpzeXNfdGFyZ2V0LFxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFx0ZGFtb25fYWRkX3RhcmdldChjdHgsIHQpO1xcbiBcXHRpZiAoZGFtb25fdGFyZ2V0X2hhc19waWQoY3R4KSkge1xcbi1cXHRcXHR0LVxcdTAwM2VwaWQgPSBmaW5kX2dldF9waWQoc3lzX3RhcmdldC1cXHUwMDNlcGlkKTtcXG4tXFx0XFx0aWYgKCF0LVxcdTAwM2VwaWQpXFxuLVxcdFxcdFxcdC8qIGNhbGxlciB3aWxsIGRlc3Ryb3kgdGFyZ2V0cyAqL1xcbitcXHRcXHQvKiBjYWxsZXIgd2lsbCBkZXN0cm95IHRhcmdldHMgKi9cXG4rXFx0XFx0aWYgKGRhbW9uX3NldF90YXJnZXRfcGlkKHQsIHN5c190YXJnZXQtXFx1MDAzZXBpZCkpXFxuIFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHR9XFxuIFxcdHQtXFx1MDAzZW9ic29sZXRlID0gc3lzX3RhcmdldC1cXHUwMDNlb2Jzb2xldGU7XFxuZGlmZiAtLWdpdCBhL3NhbXBsZXMvZGFtb24vcHJjbC5jIGIvc2FtcGxlcy9kYW1vbi9wcmNsLmNcXG5pbmRleCA4NDIwOTliZDYyMjg2Li44M2RkZjEyODExZDU3IDEwMDY0NFxcbi0tLSBhL3NhbXBsZXMvZGFtb24vcHJjbC5jXFxuKysrIGIvc2FtcGxlcy9kYW1vbi9wcmNsLmNcXG5AQCAtMzIsNyArMzIsNiBAQCBtb2R1bGVfcGFyYW1fY2IoZW5hYmxlZCwgXFx1MDAyNmVuYWJsZWRfcGFyYW1fb3BzLCBcXHUwMDI2ZW5hYmxlZCwgMDYwMCk7XFxuIE1PRFVMRV9QQVJNX0RFU0MoZW5hYmxlZCwgXFxcIkVuYWJsZSBvciBkaXNhYmxlIERBTU9OX1NBTVBMRV9QUkNMXFxcIik7XFxuIFxcbiBzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqY3R4O1xcbi1zdGF0aWMgc3RydWN0IHBpZCAqdGFyZ2V0X3BpZHA7XFxuIFxcbiBzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9wcmNsX3JlcGVhdF9jYWxsX2ZuKHZvaWQgKmRhdGEpXFxuIHtcXG5AQCAtNzksMTIgKzc4LDEwIEBAIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX3ByY2xfc3RhcnQodm9pZClcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcdH1cXG4gXFx0ZGFtb25fYWRkX3RhcmdldChjdHgsIHRhcmdldCk7XFxuLVxcdHRhcmdldF9waWRwID0gZmluZF9nZXRfcGlkKHRhcmdldF9waWQpO1xcbi1cXHRpZiAoIXRhcmdldF9waWRwKSB7XFxuK1xcdGlmIChkYW1vbl9zZXRfdGFyZ2V0X3BpZCh0YXJnZXQsIHRhcmdldF9waWQpKSB7XFxuIFxcdFxcdGRhbW9uX2Rlc3Ryb3lfY3R4KGN0eCk7XFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHR9XFxuLVxcdHRhcmdldC1cXHUwMDNlcGlkID0gdGFyZ2V0X3BpZHA7XFxuIFxcbiBcXHRzY2hlbWUgPSBkYW1vbl9uZXdfc2NoZW1lKFxcbiBcXHRcXHRcXHRcXHUwMDI2KHN0cnVjdCBkYW1vc19hY2Nlc3NfcGF0dGVybikge1xcbmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL3dzc2UuYyBiL3NhbXBsZXMvZGFtb24vd3NzZS5jXFxuaW5kZXggMzdmZDVkYTIwMTU4OC4uNTM5NDRhZWE4NDI4ZSAxMDA2NDRcXG4tLS0gYS9zYW1wbGVzL2RhbW9uL3dzc2UuY1xcbisrKyBiL3NhbXBsZXMvZGFtb24vd3NzZS5jXFxuQEAgLTMzLDcgKzMzLDYgQEAgbW9kdWxlX3BhcmFtX2NiKGVuYWJsZWQsIFxcdTAwMjZlbmFibGVkX3BhcmFtX29wcywgXFx1MDAyNmVuYWJsZWQsIDA2MDApO1xcbiBNT0RVTEVfUEFSTV9ERVNDKGVuYWJsZWQsIFxcXCJFbmFibGUgb3IgZGlzYWJsZSBEQU1PTl9TQU1QTEVfV1NTRVxcXCIpO1xcbiBcXG4gc3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmN0eDtcXG4tc3RhdGljIHN0cnVjdCBwaWQgKnRhcmdldF9waWRwO1xcbiBcXG4gc3RhdGljIGludCBkYW1vbl9zYW1wbGVfd3NzZV9yZXBlYXRfY2FsbF9mbih2b2lkICpkYXRhKVxcbiB7XFxuQEAgLTc5LDEyICs3OCwxMCBAQCBzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV93c3NlX3N0YXJ0KHZvaWQpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXHR9XFxuIFxcdGRhbW9uX2FkZF90YXJnZXQoY3R4LCB0YXJnZXQpO1xcbi1cXHR0YXJnZXRfcGlkcCA9IGZpbmRfZ2V0X3BpZCh0YXJnZXRfcGlkKTtcXG4tXFx0aWYgKCF0YXJnZXRfcGlkcCkge1xcbitcXHRpZiAoZGFtb25fc2V0X3RhcmdldF9waWQodGFyZ2V0LCB0YXJnZXRfcGlkKSkge1xcbiBcXHRcXHRkYW1vbl9kZXN0cm95X2N0eChjdHgpO1xcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0fVxcbi1cXHR0YXJnZXQtXFx1MDAzZXBpZCA9IHRhcmdldF9waWRwO1xcbiBcXG4gXFx0ZXJyID0gZGFtb25fc3RhcnQoXFx1MDAyNmN0eCwgMSwgdHJ1ZSk7XFxuIFxcdGlmIChlcnIpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMTM6Mjc6MTQuMjU1NDkyNjk0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTY3NDA4MzYzMTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBoZWxwZXIgZnVuY3Rpb24gYGRhbW9uX3NldF90YXJnZXRfcGlkYCB0byByZXBsYWNlIGR1cGxpY2F0ZWQgY29kZSB0aGF0IGxvb2tzIHVwIGFuZCBhc3NpZ25zIGEgUElEIHRvIGEgREFNT04gdGFyZ2V0LiBJdCBhbHNvIHJlbW92ZXMgdW51c2VkIHN0YXRpYyB2YXJpYWJsZXMgaW4gdGhlIERBTU9OIHNhbXBsZSBtb2R1bGVzLiBUaGVzZSBhcmUgcHVyZWx5IHN0cnVjdHVyYWwgcmVmYWN0b3JpbmcgYW5kIGNsZWFudXAgY2hhbmdlcyB3aXRoIG5vIGZ1bmN0aW9uYWwgaW1wYWN0IG9uIHRoZSBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGQwYTM3ODY1OGZmY2M2OTU5NWYzY2UyYWJhNmI5N2YwNDA2ZDU3NTJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxNyAxMzoyNzoxMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZGFtb24uaCBiL2luY2x1ZGUvbGludXgvZGFtb24uaFxuaW5kZXggMGM4YjdkZGVmOWFiYi4uYTkzN2FhNTUxNzBiNCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZGFtb24uaFxuKysrIGIvaW5jbHVkZS9saW51eC9kYW1vbi5oXG5AQCAtMTA1NCw2ICsxMDU0LDcgQEAgaW50IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpO1xuIFxuIHN0cnVjdCBkYW1vbl90YXJnZXQgKmRhbW9uX25ld190YXJnZXQodm9pZCk7XG4gdm9pZCBkYW1vbl9hZGRfdGFyZ2V0KHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX3RhcmdldCAqdCk7XG4raW50IGRhbW9uX3NldF90YXJnZXRfcGlkKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIGludCBwaWQpO1xuIGJvb2wgZGFtb25fdGFyZ2V0c19lbXB0eShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpO1xuIHZvaWQgZGFtb25fZnJlZV90YXJnZXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdCk7XG4gdm9pZCBkYW1vbl9kZXN0cm95X3RhcmdldChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpO1xuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuY1xuaW5kZXggNjQ0ZGFmNWExNjU2MC4uODJiMTk2NDA3YWU4NSAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL2NvcmUuY1xuKysrIGIvbW0vZGFtb24vY29yZS5jXG5AQCAtMTAsNiArMTAsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2t0aHJlYWQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21lbWNvbnRyb2wuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21tLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9waWQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BzaS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2NoZWQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuQEAgLTc5NSw2ICs3OTYsMTcgQEAgdm9pZCBkYW1vbl9hZGRfdGFyZ2V0KHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX3RhcmdldCAqdClcbiBcdGxpc3RfYWRkX3RhaWwoXHUwMDI2dC1cdTAwM2VsaXN0LCBcdTAwMjZjdHgtXHUwMDNlYWRhcHRpdmVfdGFyZ2V0cyk7XG4gfVxuIFxuKy8qXG4rICogQXNzaWduIHRoZSBzdHJ1Y3QgcGlkIG9mIHRoZSBnaXZlbiBwaWQgbnVtYmVyIHRvIHRoZSBnaXZlbiB0YXJnZXQuXG4rICovXG4raW50IGRhbW9uX3NldF90YXJnZXRfcGlkKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIGludCBwaWQpXG4re1xuK1x0dC1cdTAwM2VwaWQgPSBmaW5kX2dldF9waWQocGlkKTtcbitcdGlmICghdC1cdTAwM2VwaWQpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuIGJvb2wgZGFtb25fdGFyZ2V0c19lbXB0eShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG4ge1xuIFx0cmV0dXJuIGxpc3RfZW1wdHkoXHUwMDI2Y3R4LVx1MDAzZWFkYXB0aXZlX3RhcmdldHMpO1xuZGlmZiAtLWdpdCBhL21tL2RhbW9uL3N5c2ZzLmMgYi9tbS9kYW1vbi9zeXNmcy5jXG5pbmRleCBlMzg1OGZmYWI0YjIyLi4zYzgxYjRjOTFhYzBkIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vc3lzZnMuY1xuKysrIGIvbW0vZGFtb24vc3lzZnMuY1xuQEAgLTMsNyArMyw2IEBAXG4gICogREFNT04gc3lzZnMgSW50ZXJmYWNlXG4gICovXG4gXG4tI2luY2x1ZGUgXHUwMDNjbGludXgvcGlkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zY2hlZC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG4gXG5AQCAtMjAzNSw5ICsyMDM0LDggQEAgc3RhdGljIGludCBkYW1vbl9zeXNmc19hZGRfdGFyZ2V0KHN0cnVjdCBkYW1vbl9zeXNmc190YXJnZXQgKnN5c190YXJnZXQsXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFx0ZGFtb25fYWRkX3RhcmdldChjdHgsIHQpO1xuIFx0aWYgKGRhbW9uX3RhcmdldF9oYXNfcGlkKGN0eCkpIHtcbi1cdFx0dC1cdTAwM2VwaWQgPSBmaW5kX2dldF9waWQoc3lzX3RhcmdldC1cdTAwM2VwaWQpO1xuLVx0XHRpZiAoIXQtXHUwMDNlcGlkKVxuLVx0XHRcdC8qIGNhbGxlciB3aWxsIGRlc3Ryb3kgdGFyZ2V0cyAqL1xuK1x0XHQvKiBjYWxsZXIgd2lsbCBkZXN0cm95IHRhcmdldHMgKi9cbitcdFx0aWYgKGRhbW9uX3NldF90YXJnZXRfcGlkKHQsIHN5c190YXJnZXQtXHUwMDNlcGlkKSlcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcdHQtXHUwMDNlb2Jzb2xldGUgPSBzeXNfdGFyZ2V0LVx1MDAzZW9ic29sZXRlO1xuZGlmZiAtLWdpdCBhL3NhbXBsZXMvZGFtb24vcHJjbC5jIGIvc2FtcGxlcy9kYW1vbi9wcmNsLmNcbmluZGV4IDg0MjA5OWJkNjIyODYuLjgzZGRmMTI4MTFkNTcgMTAwNjQ0XG4tLS0gYS9zYW1wbGVzL2RhbW9uL3ByY2wuY1xuKysrIGIvc2FtcGxlcy9kYW1vbi9wcmNsLmNcbkBAIC0zMiw3ICszMiw2IEBAIG1vZHVsZV9wYXJhbV9jYihlbmFibGVkLCBcdTAwMjZlbmFibGVkX3BhcmFtX29wcywgXHUwMDI2ZW5hYmxlZCwgMDYwMCk7XG4gTU9EVUxFX1BBUk1fREVTQyhlbmFibGVkLCBcIkVuYWJsZSBvciBkaXNhYmxlIERBTU9OX1NBTVBMRV9QUkNMXCIpO1xuIFxuIHN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpjdHg7XG4tc3RhdGljIHN0cnVjdCBwaWQgKnRhcmdldF9waWRwO1xuIFxuIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX3ByY2xfcmVwZWF0X2NhbGxfZm4odm9pZCAqZGF0YSlcbiB7XG5AQCAtNzksMTIgKzc4LDEwIEBAIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX3ByY2xfc3RhcnQodm9pZClcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXHR9XG4gXHRkYW1vbl9hZGRfdGFyZ2V0KGN0eCwgdGFyZ2V0KTtcbi1cdHRhcmdldF9waWRwID0gZmluZF9nZXRfcGlkKHRhcmdldF9waWQpO1xuLVx0aWYgKCF0YXJnZXRfcGlkcCkge1xuK1x0aWYgKGRhbW9uX3NldF90YXJnZXRfcGlkKHRhcmdldCwgdGFyZ2V0X3BpZCkpIHtcbiBcdFx0ZGFtb25fZGVzdHJveV9jdHgoY3R4KTtcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG4tXHR0YXJnZXQtXHUwMDNlcGlkID0gdGFyZ2V0X3BpZHA7XG4gXG4gXHRzY2hlbWUgPSBkYW1vbl9uZXdfc2NoZW1lKFxuIFx0XHRcdFx1MDAyNihzdHJ1Y3QgZGFtb3NfYWNjZXNzX3BhdHRlcm4pIHtcbmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL3dzc2UuYyBiL3NhbXBsZXMvZGFtb24vd3NzZS5jXG5pbmRleCAzN2ZkNWRhMjAxNTg4Li41Mzk0NGFlYTg0MjhlIDEwMDY0NFxuLS0tIGEvc2FtcGxlcy9kYW1vbi93c3NlLmNcbisrKyBiL3NhbXBsZXMvZGFtb24vd3NzZS5jXG5AQCAtMzMsNyArMzMsNiBAQCBtb2R1bGVfcGFyYW1fY2IoZW5hYmxlZCwgXHUwMDI2ZW5hYmxlZF9wYXJhbV9vcHMsIFx1MDAyNmVuYWJsZWQsIDA2MDApO1xuIE1PRFVMRV9QQVJNX0RFU0MoZW5hYmxlZCwgXCJFbmFibGUgb3IgZGlzYWJsZSBEQU1PTl9TQU1QTEVfV1NTRVwiKTtcbiBcbiBzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqY3R4O1xuLXN0YXRpYyBzdHJ1Y3QgcGlkICp0YXJnZXRfcGlkcDtcbiBcbiBzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV93c3NlX3JlcGVhdF9jYWxsX2ZuKHZvaWQgKmRhdGEpXG4ge1xuQEAgLTc5LDEyICs3OCwxMCBAQCBzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV93c3NlX3N0YXJ0KHZvaWQpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFx0fVxuIFx0ZGFtb25fYWRkX3RhcmdldChjdHgsIHRhcmdldCk7XG4tXHR0YXJnZXRfcGlkcCA9IGZpbmRfZ2V0X3BpZCh0YXJnZXRfcGlkKTtcbi1cdGlmICghdGFyZ2V0X3BpZHApIHtcbitcdGlmIChkYW1vbl9zZXRfdGFyZ2V0X3BpZCh0YXJnZXQsIHRhcmdldF9waWQpKSB7XG4gXHRcdGRhbW9uX2Rlc3Ryb3lfY3R4KGN0eCk7XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuLVx0dGFyZ2V0LVx1MDAzZXBpZCA9IHRhcmdldF9waWRwO1xuIFxuIFx0ZXJyID0gZGFtb25fc3RhcnQoXHUwMDI2Y3R4LCAxLCB0cnVlKTtcbiBcdGlmIChlcnIpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDEzOjI3OjE0LjI1NTQ5NDA4NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwODgxMTc4ODA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRBTU9OIFJlZmFjdG9yaW5nOiBBIERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgXCJSZWZhY3RvcmluZywgcHJvYmFibHkgbm8gYmlnIGRlYWwuXCIgSXQgbG9va3MgbGlrZSB0aGV5J3ZlIGludHJvZHVjZWQgYSBuZXcgZnVuY3Rpb24sIGBkYW1vbl9zZXRfdGFyZ2V0X3BpZGAsIGluIGBtbS9kYW1vbi9jb3JlLmNgIGFuZCBhcmUgdXNpbmcgaXQgaW4gYSBmZXcgcGxhY2VzOiBgbW0vZGFtb24vc3lzZnMuY2AsIGFuZCB0aGUgc2FtcGxlIGNvZGUgaW4gYHNhbXBsZXMvZGFtb24vcHJjbC5jYCBhbmQgYHNhbXBsZXMvZGFtb24vd3NzZS5jYC4gVGhleSBhcmUgcmVmYWN0b3JpbmcgaG93IHRoZSBEQU1PTiBzdWJzeXN0ZW0gc2V0cyB0aGUgdGFyZ2V0IFBJRC4gTGV0IG1lIHNlZSBpZiB0aGVyZSBhcmUgYW55IGZ1bmN0aW9uYWwgaW1wbGljYXRpb25zIGhlcmUuXG5cbkxldCdzIHF1aWNrbHkgY29tcGFyZSB0aGUgb2xkIGFuZCB0aGUgbmV3IGBtbS9kYW1vbi9zeXNmcy5jYCBjb2RlLiBUaGUgb2xkIGNvZGUgd2FzOlxuXG5gYGBjXG5cdGlmIChkYW1vbl90YXJnZXRfaGFzX3BpZChjdHgpKSB7XG5cdFx0dC1cdTAwM2VwaWQgPSBmaW5kX2dldF9waWQoc3lzX3RhcmdldC1cdTAwM2VwaWQpO1xuXHRcdGlmICghdC1cdTAwM2VwaWQpXG5cdFx0XHQvKiBjYWxsZXIgd2lsbCBkZXN0cm95IHRhcmdldHMgKi9cblx0XHRcdHJldHVybiAtRUlOVkFMO1xuXHR9XG5gYGBcblxuQW5kIHRoZSBuZXcgY29kZTpcblxuYGBgY1xuXHRpZiAoZGFtb25fdGFyZ2V0X2hhc19waWQoY3R4KSkge1xuXHRcdC8qIGNhbGxlciB3aWxsIGRlc3Ryb3kgdGFyZ2V0cyAqL1xuXHRcdGlmIChkYW1vbl9zZXRfdGFyZ2V0X3BpZCh0LCBzeXNfdGFyZ2V0LVx1MDAzZXBpZCkpXG5cdFx0XHRyZXR1cm4gLUVJTlZBTDtcblx0fVxuYGBgXG5cblRoZSBuZXcgZnVuY3Rpb24gYGRhbW9uX3NldF90YXJnZXRfcGlkYCBpdHNlbGYgaXMgc2ltcGxlLCBiYXNpY2FsbHkgZW5jYXBzdWxhdGluZyB3aGF0IHdhcyB0aGVyZSBiZWZvcmU6XG5cbmBgYGNcbmludCBkYW1vbl9zZXRfdGFyZ2V0X3BpZChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBpbnQgcGlkKVxue1xuXHR0LVx1MDAzZXBpZCA9IGZpbmRfZ2V0X3BpZChwaWQpO1xuXHRpZiAoIXQtXHUwMDNlcGlkKVxuXHRcdHJldHVybiAtRUlOVkFMO1xuXHRyZXR1cm4gMDtcbn1cbmBgYFxuXG5TZWVtcyBsaWtlIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCByZWZhY3RvcmluZywgZW5jYXBzdWxhdGluZyB0aGUgUElEIGFzc2lnbm1lbnQgYW5kIGVycm9yIGNoZWNraW5nLiBJJ20gbm90IHNlZWluZyBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIGhlcmUuXG5cbkhvbGQgb24sIGxldCBtZSBxdWlja2x5IHJldmlldyB0aGUgYHNhbXBsZXMvZGFtb24vd3NzZS5jYCBhbmQgYHNhbXBsZXMvZGFtb24vcHJjbC5jYCBjb2RlIHRvIG1ha2Ugc3VyZSBJIGFtIG5vdCBtaXNzaW5nIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMuXG5cbmBgYGNcbi1cdHRhcmdldF9waWRwID0gZmluZF9nZXRfcGlkKHRhcmdldF9waWQpO1xuLVx0aWYgKCF0YXJnZXRfcGlkcCkge1xuK1x0aWYgKGRhbW9uX3NldF90YXJnZXRfcGlkKHRhcmdldCwgdGFyZ2V0X3BpZCkpIHtcbiBcdFx0ZGFtb25fZGVzdHJveV9jdHgoY3R4KTtcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG4tXHR0YXJnZXQtXHUwMDNlcGlkID0gdGFyZ2V0X3BpZHA7XG5gYGBcblxuSXQncyBsaXRlcmFsbHkgdGhlIHNhbWUgY2hhbmdlIGZvciBgc2FtcGxlcy9kYW1vbi9wcmNsLmNgIGFzIHdlbGwuIEFnYWluLCB0aGUgcmVmYWN0b3JpbmcgaXMganVzdCByZXBsYWNpbmcgdGhlIGBmaW5kX2dldF9waWRgIGNhbGwgYW5kIGVycm9yIGhhbmRsaW5nIHdpdGggdGhlIG5ldyBoZWxwZXIgZnVuY3Rpb24uIEkgYW0gbm90IHNlZWluZyBhbnkgbmV3IGxvZ2ljLlxuXG5XYWl0IGEgc2Vjb25kLCB0aGVyZSdzIGFub3RoZXIgc3VidGxlIGNoYW5nZSBJIHNob3VsZCBpbnZlc3RpZ2F0ZS4gVGhlIGNvZGUgc25pcHBldHMgbWVudGlvbiB0aGF0IGB0YXJnZXRfcGlkcGAgd2FzIGEgc3RhdGljIGdsb2JhbCB2YXJpYWJsZTpcblxuYGBgY1xuLXN0YXRpYyBzdHJ1Y3QgcGlkICp0YXJnZXRfcGlkcDtcbmBgYFxuXG5hbmQgbm93IGl0J3MgZ29uZS4gVGhhdCBtZWFucyB0aGUgZ2xvYmFsIHN0b3JhZ2UgaXMgbm8gbG9uZ2VyIHRoZXJlLiBJcyBpdCB1c2VkIGFueXdoZXJlIGVsc2UgaW4gdGhvc2Ugc2FtcGxlIGZpbGVzPyBJIHdpbGwgcXVpY2tseSBzZWFyY2ggYHNhbXBsZXMvZGFtb24vcHJjbC5jYCBhbmQgYHNhbXBsZXMvZGFtb24vd3NzZS5jYC4gWWVwLCBpdCdzIGp1c3QgYSB2YXJpYWJsZSBmb3Igc3RvcmluZyB0aGUgYGZpbmRfZ2V0X3BpZGAgcmVzdWx0IGFuZCBub3cgdGhhdCB3ZSdyZSB1c2luZyBhIGhlbHBlciBmdW5jdGlvbiwgaXQncyBubyBsb25nZXIgbmVjZXNzYXJ5LiBJdCdzIHRydWx5IGEgcmVmYWN0b3JpbmcuXG5cbk9rYXksIEknbSBjb25maWRlbnQgdGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyBoZXJlLCBqdXN0IHN0cnVjdHVyYWwuIFRoZXJlZm9yZSwgV29ydGhGdXp6aW5nPWZhbHNlLiBJIGFtIGNvbmZpZGVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQxOSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc3NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDEzOjI3OjI1LjEzNjY3NTNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzEwMTUwMTQwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0YXJnZXRfcGlkcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJzYW1wbGVzL2RhbW9uL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMTM6Mjc6MjUuNDQ2ODM4MDYxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU0OTQ2NDIwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBDb2RlIENoYW5nZSoqXG5cbk9rYXksIHNvIEkndmUgdGFrZW4gYSBsb29rIGF0IHRoaXMgcGF0Y2guIEl0IHNlZW1zIHRoZSBjb2RlIGluIHF1ZXN0aW9uIHdhcyBkZWNsYXJlZCBnbG9iYWxseSwgd2hpY2ggdXN1YWxseSByYWlzZXMgYSByZWQgZmxhZyBmb3IgbWUsIGJ1dCB0aGUgaW1wb3J0YW50IHBvaW50IGlzIHRoYXQgaXQgd2Fzbid0IGFjdHVhbGx5IGJlaW5nICp1dGlsaXplZCogYW55d2hlcmUuIFJlbW92aW5nIHRoaXMgdW51c2VkIGdsb2JhbCB2YXJpYWJsZSBpcywgcGxhaW4gYW5kIHNpbXBsZSwgYSBjbGVhbnVwIG9wZXJhdGlvbi4gTm8gZnVuY3Rpb25hbCBjaGFuZ2VzLCBqdXN0IGdvb2QgaG91c2VrZWVwaW5nLlxuXG5HaXZlbiB0aGF0IGl0J3MganVzdCByZWZhY3RvcmluZyBhbmQgY2xlYW51cCwgSSdtIGNvbmZpZGVudCBpbiB0YWdnaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBObyBuZWVkIHRvIGV4cGVuZCByZXNvdXJjZXMgZnV6emluZyB0aGlzLiBJdCBpc24ndCBjaGFuZ2luZyBiZWhhdmlvciBpbiBhIHdheSB0aGF0IHdvdWxkIGludHJvZHVjZSBhIHZ1bG5lcmFiaWxpdHkgb3IgcmVncmVzc2lvbi4gSXQncyBzYWZlIHRvIG1lcmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDMxLCJPdXRwdXRUb2tlbnMiOjk1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMTM6Mjc6MzAuOTk2MzA0OTIxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjA1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgaGVscGVyIGZ1bmN0aW9uIGBkYW1vbl9zZXRfdGFyZ2V0X3BpZGAgdG8gcmVwbGFjZSBkdXBsaWNhdGVkIGNvZGUgdGhhdCBsb29rcyB1cCBhbmQgYXNzaWducyBhIFBJRCB0byBhIERBTU9OIHRhcmdldC4gSXQgYWxzbyByZW1vdmVzIHVudXNlZCBzdGF0aWMgdmFyaWFibGVzIGluIHRoZSBEQU1PTiBzYW1wbGUgbW9kdWxlcy4gVGhlc2UgYXJlIHB1cmVseSBzdHJ1Y3R1cmFsIHJlZmFjdG9yaW5nIGFuZCBjbGVhbnVwIGNoYW5nZXMgd2l0aCBubyBmdW5jdGlvbmFsIGltcGFjdCBvbiB0aGUgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgaGVscGVyIGZ1bmN0aW9uIGBkYW1vbl9zZXRfdGFyZ2V0X3BpZGAgdG8gcmVwbGFjZSBkdXBsaWNhdGVkIGNvZGUgdGhhdCBsb29rcyB1cCBhbmQgYXNzaWducyBhIFBJRCB0byBhIERBTU9OIHRhcmdldC4gSXQgYWxzbyByZW1vdmVzIHVudXNlZCBzdGF0aWMgdmFyaWFibGVzIGluIHRoZSBEQU1PTiBzYW1wbGUgbW9kdWxlcy4gVGhlc2UgYXJlIHB1cmVseSBzdHJ1Y3R1cmFsIHJlZmFjdG9yaW5nIGFuZCBjbGVhbnVwIGNoYW5nZXMgd2l0aCBubyBmdW5jdGlvbmFsIGltcGFjdCBvbiB0aGUgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QxMzoyNzozMC45OTYzMzEwMzFaIiwiU2VxIjo3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8n84m[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-17 13:09:27 +0000 UTC FinishedAt: 2026-08-17 13:27:32 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDEzOjI3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGhlbHBlciBmdW5jdGlvbiBgZGFtb25fc2V0X3RhcmdldF9waWRgIHRvIHJlcGxhY2UgZHVwbGljYXRlZCBjb2RlIHRoYXQgbG9va3MgdXAgYW5kIGFzc2lnbnMgYSBQSUQgdG8gYSBEQU1PTiB0YXJnZXQuIEl0IGFsc28gcmVtb3ZlcyB1bnVzZWQgc3RhdGljIHZhcmlhYmxlcyBpbiB0aGUgREFNT04gc2FtcGxlIG1vZHVsZXMuIFRoZXNlIGFyZSBwdXJlbHkgc3RydWN0dXJhbCByZWZhY3RvcmluZyBhbmQgY2xlYW51cCBjaGFuZ2VzIHdpdGggbm8gZnVuY3Rpb25hbCBpbXBhY3Qgb24gdGhlIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAxMzoyNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQwYTM3ODY1OGZmY2M2OTU5NWYzY2UyYWJhNmI5N2YwNDA2ZDU3NTJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxNyAxMzoyNzoxMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RhbW9uLmggYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcbmluZGV4IDBjOGI3ZGRlZjlhYmIuLmE5MzdhYTU1MTcwYjQgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZGFtb24uaFxuQEAgLTEwNTQsNiAmIzQzOzEwNTQsNyBAQCBpbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYyk7XG4gXG4gc3RydWN0IGRhbW9uX3RhcmdldCAqZGFtb25fbmV3X3RhcmdldCh2b2lkKTtcbiB2b2lkIGRhbW9uX2FkZF90YXJnZXQoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KTtcbiYjNDM7aW50IGRhbW9uX3NldF90YXJnZXRfcGlkKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIGludCBwaWQpO1xuIGJvb2wgZGFtb25fdGFyZ2V0c19lbXB0eShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpO1xuIHZvaWQgZGFtb25fZnJlZV90YXJnZXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdCk7XG4gdm9pZCBkYW1vbl9kZXN0cm95X3RhcmdldChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpO1xuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuY1xuaW5kZXggNjQ0ZGFmNWExNjU2MC4uODJiMTk2NDA3YWU4NSAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vY29yZS5jXG5AQCAtMTAsNiAmIzQzOzEwLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rdGhyZWFkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tZW1jb250cm9sLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tbS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BpZC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcHNpLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zY2hlZC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG5AQCAtNzk1LDYgJiM0Mzs3OTYsMTcgQEAgdm9pZCBkYW1vbl9hZGRfdGFyZ2V0KHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX3RhcmdldCAqdClcbiBcdGxpc3RfYWRkX3RhaWwoXHUwMDI2dC1cdTAwM2VsaXN0LCBcdTAwMjZjdHgtXHUwMDNlYWRhcHRpdmVfdGFyZ2V0cyk7XG4gfVxuIFxuJiM0MzsvKlxuJiM0MzsgKiBBc3NpZ24gdGhlIHN0cnVjdCBwaWQgb2YgdGhlIGdpdmVuIHBpZCBudW1iZXIgdG8gdGhlIGdpdmVuIHRhcmdldC5cbiYjNDM7ICovXG4mIzQzO2ludCBkYW1vbl9zZXRfdGFyZ2V0X3BpZChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBpbnQgcGlkKVxuJiM0Mzt7XG4mIzQzO1x0dC1cdTAwM2VwaWQgPSBmaW5kX2dldF9waWQocGlkKTtcbiYjNDM7XHRpZiAoIXQtXHUwMDNlcGlkKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gYm9vbCBkYW1vbl90YXJnZXRzX2VtcHR5KHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbiB7XG4gXHRyZXR1cm4gbGlzdF9lbXB0eShcdTAwMjZjdHgtXHUwMDNlYWRhcHRpdmVfdGFyZ2V0cyk7XG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vc3lzZnMuYyBiL21tL2RhbW9uL3N5c2ZzLmNcbmluZGV4IGUzODU4ZmZhYjRiMjIuLjNjODFiNGM5MWFjMGQgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9zeXNmcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9zeXNmcy5jXG5AQCAtMyw3ICYjNDM7Myw2IEBAXG4gICogREFNT04gc3lzZnMgSW50ZXJmYWNlXG4gICovXG4gXG4tI2luY2x1ZGUgXHUwMDNjbGludXgvcGlkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zY2hlZC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG4gXG5AQCAtMjAzNSw5ICYjNDM7MjAzNCw4IEBAIHN0YXRpYyBpbnQgZGFtb25fc3lzZnNfYWRkX3RhcmdldChzdHJ1Y3QgZGFtb25fc3lzZnNfdGFyZ2V0ICpzeXNfdGFyZ2V0LFxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcdGRhbW9uX2FkZF90YXJnZXQoY3R4LCB0KTtcbiBcdGlmIChkYW1vbl90YXJnZXRfaGFzX3BpZChjdHgpKSB7XG4tXHRcdHQtXHUwMDNlcGlkID0gZmluZF9nZXRfcGlkKHN5c190YXJnZXQtXHUwMDNlcGlkKTtcbi1cdFx0aWYgKCF0LVx1MDAzZXBpZClcbi1cdFx0XHQvKiBjYWxsZXIgd2lsbCBkZXN0cm95IHRhcmdldHMgKi9cbiYjNDM7XHRcdC8qIGNhbGxlciB3aWxsIGRlc3Ryb3kgdGFyZ2V0cyAqL1xuJiM0MztcdFx0aWYgKGRhbW9uX3NldF90YXJnZXRfcGlkKHQsIHN5c190YXJnZXQtXHUwMDNlcGlkKSlcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcdHQtXHUwMDNlb2Jzb2xldGUgPSBzeXNfdGFyZ2V0LVx1MDAzZW9ic29sZXRlO1xuZGlmZiAtLWdpdCBhL3NhbXBsZXMvZGFtb24vcHJjbC5jIGIvc2FtcGxlcy9kYW1vbi9wcmNsLmNcbmluZGV4IDg0MjA5OWJkNjIyODYuLjgzZGRmMTI4MTFkNTcgMTAwNjQ0XG4tLS0gYS9zYW1wbGVzL2RhbW9uL3ByY2wuY1xuJiM0MzsmIzQzOyYjNDM7IGIvc2FtcGxlcy9kYW1vbi9wcmNsLmNcbkBAIC0zMiw3ICYjNDM7MzIsNiBAQCBtb2R1bGVfcGFyYW1fY2IoZW5hYmxlZCwgXHUwMDI2ZW5hYmxlZF9wYXJhbV9vcHMsIFx1MDAyNmVuYWJsZWQsIDA2MDApO1xuIE1PRFVMRV9QQVJNX0RFU0MoZW5hYmxlZCwgXCYjMzQ7RW5hYmxlIG9yIGRpc2FibGUgREFNT05fU0FNUExFX1BSQ0xcJiMzNDspO1xuIFxuIHN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpjdHg7XG4tc3RhdGljIHN0cnVjdCBwaWQgKnRhcmdldF9waWRwO1xuIFxuIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX3ByY2xfcmVwZWF0X2NhbGxfZm4odm9pZCAqZGF0YSlcbiB7XG5AQCAtNzksMTIgJiM0Mzs3OCwxMCBAQCBzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9wcmNsX3N0YXJ0KHZvaWQpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFx0fVxuIFx0ZGFtb25fYWRkX3RhcmdldChjdHgsIHRhcmdldCk7XG4tXHR0YXJnZXRfcGlkcCA9IGZpbmRfZ2V0X3BpZCh0YXJnZXRfcGlkKTtcbi1cdGlmICghdGFyZ2V0X3BpZHApIHtcbiYjNDM7XHRpZiAoZGFtb25fc2V0X3RhcmdldF9waWQodGFyZ2V0LCB0YXJnZXRfcGlkKSkge1xuIFx0XHRkYW1vbl9kZXN0cm95X2N0eChjdHgpO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbi1cdHRhcmdldC1cdTAwM2VwaWQgPSB0YXJnZXRfcGlkcDtcbiBcbiBcdHNjaGVtZSA9IGRhbW9uX25ld19zY2hlbWUoXG4gXHRcdFx0XHUwMDI2KHN0cnVjdCBkYW1vc19hY2Nlc3NfcGF0dGVybikge1xuZGlmZiAtLWdpdCBhL3NhbXBsZXMvZGFtb24vd3NzZS5jIGIvc2FtcGxlcy9kYW1vbi93c3NlLmNcbmluZGV4IDM3ZmQ1ZGEyMDE1ODguLjUzOTQ0YWVhODQyOGUgMTAwNjQ0XG4tLS0gYS9zYW1wbGVzL2RhbW9uL3dzc2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvc2FtcGxlcy9kYW1vbi93c3NlLmNcbkBAIC0zMyw3ICYjNDM7MzMsNiBAQCBtb2R1bGVfcGFyYW1fY2IoZW5hYmxlZCwgXHUwMDI2ZW5hYmxlZF9wYXJhbV9vcHMsIFx1MDAyNmVuYWJsZWQsIDA2MDApO1xuIE1PRFVMRV9QQVJNX0RFU0MoZW5hYmxlZCwgXCYjMzQ7RW5hYmxlIG9yIGRpc2FibGUgREFNT05fU0FNUExFX1dTU0VcJiMzNDspO1xuIFxuIHN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpjdHg7XG4tc3RhdGljIHN0cnVjdCBwaWQgKnRhcmdldF9waWRwO1xuIFxuIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX3dzc2VfcmVwZWF0X2NhbGxfZm4odm9pZCAqZGF0YSlcbiB7XG5AQCAtNzksMTIgJiM0Mzs3OCwxMCBAQCBzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV93c3NlX3N0YXJ0KHZvaWQpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFx0fVxuIFx0ZGFtb25fYWRkX3RhcmdldChjdHgsIHRhcmdldCk7XG4tXHR0YXJnZXRfcGlkcCA9IGZpbmRfZ2V0X3BpZCh0YXJnZXRfcGlkKTtcbi1cdGlmICghdGFyZ2V0X3BpZHApIHtcbiYjNDM7XHRpZiAoZGFtb25fc2V0X3RhcmdldF9waWQodGFyZ2V0LCB0YXJnZXRfcGlkKSkge1xuIFx0XHRkYW1vbl9kZXN0cm95X2N0eChjdHgpO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbi1cdHRhcmdldC1cdTAwM2VwaWQgPSB0YXJnZXRfcGlkcDtcbiBcbiBcdGVyciA9IGRhbW9uX3N0YXJ0KFx1MDAyNmN0eCwgMSwgdHJ1ZSk7XG4gXHRpZiAoZXJyKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMTM6Mjc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBoZWxwZXIgZnVuY3Rpb24gYGRhbW9uX3NldF90YXJnZXRfcGlkYCB0byByZXBsYWNlIGR1cGxpY2F0ZWQgY29kZSB0aGF0IGxvb2tzIHVwIGFuZCBhc3NpZ25zIGEgUElEIHRvIGEgREFNT04gdGFyZ2V0LiBJdCBhbHNvIHJlbW92ZXMgdW51c2VkIHN0YXRpYyB2YXJpYWJsZXMgaW4gdGhlIERBTU9OIHNhbXBsZSBtb2R1bGVzLiBUaGVzZSBhcmUgcHVyZWx5IHN0cnVjdHVyYWwgcmVmYWN0b3JpbmcgYW5kIGNsZWFudXAgY2hhbmdlcyB3aXRoIG5vIGZ1bmN0aW9uYWwgaW1wYWN0IG9uIHRoZSBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkMGEzNzg2NThmZmNjNjk1OTVmM2NlMmFiYTZiOTdmMDQwNmQ1NzUyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMTcgMTM6Mjc6MTIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RhbW9uLmggYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmgKaW5kZXggMGM4YjdkZGVmOWFiYi4uYTkzN2FhNTUxNzBiNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9kYW1vbi5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZGFtb24uaApAQCAtMTA1NCw2ICYjNDM7MTA1NCw3IEBAIGludCBkYW1vc19jb21taXRfcXVvdGFfZ29hbHMoc3RydWN0IGRhbW9zX3F1b3RhICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YSAqc3JjKTsKIAogc3RydWN0IGRhbW9uX3RhcmdldCAqZGFtb25fbmV3X3RhcmdldCh2b2lkKTsKIHZvaWQgZGFtb25fYWRkX3RhcmdldChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpOwomIzQzO2ludCBkYW1vbl9zZXRfdGFyZ2V0X3BpZChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBpbnQgcGlkKTsKIGJvb2wgZGFtb25fdGFyZ2V0c19lbXB0eShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpOwogdm9pZCBkYW1vbl9mcmVlX3RhcmdldChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KTsKIHZvaWQgZGFtb25fZGVzdHJveV90YXJnZXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdCwgc3RydWN0IGRhbW9uX2N0eCAqY3R4KTsKZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuYwppbmRleCA2NDRkYWY1YTE2NTYwLi44MmIxOTY0MDdhZTg1IDEwMDY0NAotLS0gYS9tbS9kYW1vbi9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vY29yZS5jCkBAIC0xMCw2ICYjNDM7MTAsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L2t0aHJlYWQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9tZW1jb250cm9sLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbW0uaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcGlkLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcHNpLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc2NoZWQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zbGFiLmgmZ3Q7CkBAIC03OTUsNiAmIzQzOzc5NiwxNyBAQCB2b2lkIGRhbW9uX2FkZF90YXJnZXQoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KQogCWxpc3RfYWRkX3RhaWwoJmFtcDt0LSZndDtsaXN0LCAmYW1wO2N0eC0mZ3Q7YWRhcHRpdmVfdGFyZ2V0cyk7CiB9CiAKJiM0MzsvKgomIzQzOyAqIEFzc2lnbiB0aGUgc3RydWN0IHBpZCBvZiB0aGUgZ2l2ZW4gcGlkIG51bWJlciB0byB0aGUgZ2l2ZW4gdGFyZ2V0LgomIzQzOyAqLwomIzQzO2ludCBkYW1vbl9zZXRfdGFyZ2V0X3BpZChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBpbnQgcGlkKQomIzQzO3sKJiM0MzsJdC0mZ3Q7cGlkID0gZmluZF9nZXRfcGlkKHBpZCk7CiYjNDM7CWlmICghdC0mZ3Q7cGlkKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKIGJvb2wgZGFtb25fdGFyZ2V0c19lbXB0eShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpCiB7CiAJcmV0dXJuIGxpc3RfZW1wdHkoJmFtcDtjdHgtJmd0O2FkYXB0aXZlX3RhcmdldHMpOwpkaWZmIC0tZ2l0IGEvbW0vZGFtb24vc3lzZnMuYyBiL21tL2RhbW9uL3N5c2ZzLmMKaW5kZXggZTM4NThmZmFiNGIyMi4uM2M4MWI0YzkxYWMwZCAxMDA2NDQKLS0tIGEvbW0vZGFtb24vc3lzZnMuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9zeXNmcy5jCkBAIC0zLDcgJiM0MzszLDYgQEAKICAqIERBTU9OIHN5c2ZzIEludGVyZmFjZQogICovCiAKLSNpbmNsdWRlICZsdDtsaW51eC9waWQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zY2hlZC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3NsYWIuaCZndDsKIApAQCAtMjAzNSw5ICYjNDM7MjAzNCw4IEBAIHN0YXRpYyBpbnQgZGFtb25fc3lzZnNfYWRkX3RhcmdldChzdHJ1Y3QgZGFtb25fc3lzZnNfdGFyZ2V0ICpzeXNfdGFyZ2V0LAogCQlyZXR1cm4gLUVOT01FTTsKIAlkYW1vbl9hZGRfdGFyZ2V0KGN0eCwgdCk7CiAJaWYgKGRhbW9uX3RhcmdldF9oYXNfcGlkKGN0eCkpIHsKLQkJdC0mZ3Q7cGlkID0gZmluZF9nZXRfcGlkKHN5c190YXJnZXQtJmd0O3BpZCk7Ci0JCWlmICghdC0mZ3Q7cGlkKQotCQkJLyogY2FsbGVyIHdpbGwgZGVzdHJveSB0YXJnZXRzICovCiYjNDM7CQkvKiBjYWxsZXIgd2lsbCBkZXN0cm95IHRhcmdldHMgKi8KJiM0MzsJCWlmIChkYW1vbl9zZXRfdGFyZ2V0X3BpZCh0LCBzeXNfdGFyZ2V0LSZndDtwaWQpKQogCQkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCXQtJmd0O29ic29sZXRlID0gc3lzX3RhcmdldC0mZ3Q7b2Jzb2xldGU7CmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL3ByY2wuYyBiL3NhbXBsZXMvZGFtb24vcHJjbC5jCmluZGV4IDg0MjA5OWJkNjIyODYuLjgzZGRmMTI4MTFkNTcgMTAwNjQ0Ci0tLSBhL3NhbXBsZXMvZGFtb24vcHJjbC5jCiYjNDM7JiM0MzsmIzQzOyBiL3NhbXBsZXMvZGFtb24vcHJjbC5jCkBAIC0zMiw3ICYjNDM7MzIsNiBAQCBtb2R1bGVfcGFyYW1fY2IoZW5hYmxlZCwgJmFtcDtlbmFibGVkX3BhcmFtX29wcywgJmFtcDtlbmFibGVkLCAwNjAwKTsKIE1PRFVMRV9QQVJNX0RFU0MoZW5hYmxlZCwgJiMzNDtFbmFibGUgb3IgZGlzYWJsZSBEQU1PTl9TQU1QTEVfUFJDTCYjMzQ7KTsKIAogc3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmN0eDsKLXN0YXRpYyBzdHJ1Y3QgcGlkICp0YXJnZXRfcGlkcDsKIAogc3RhdGljIGludCBkYW1vbl9zYW1wbGVfcHJjbF9yZXBlYXRfY2FsbF9mbih2b2lkICpkYXRhKQogewpAQCAtNzksMTIgJiM0Mzs3OCwxMCBAQCBzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9wcmNsX3N0YXJ0KHZvaWQpCiAJCXJldHVybiAtRU5PTUVNOwogCX0KIAlkYW1vbl9hZGRfdGFyZ2V0KGN0eCwgdGFyZ2V0KTsKLQl0YXJnZXRfcGlkcCA9IGZpbmRfZ2V0X3BpZCh0YXJnZXRfcGlkKTsKLQlpZiAoIXRhcmdldF9waWRwKSB7CiYjNDM7CWlmIChkYW1vbl9zZXRfdGFyZ2V0X3BpZCh0YXJnZXQsIHRhcmdldF9waWQpKSB7CiAJCWRhbW9uX2Rlc3Ryb3lfY3R4KGN0eCk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KLQl0YXJnZXQtJmd0O3BpZCA9IHRhcmdldF9waWRwOwogCiAJc2NoZW1lID0gZGFtb25fbmV3X3NjaGVtZSgKIAkJCSZhbXA7KHN0cnVjdCBkYW1vc19hY2Nlc3NfcGF0dGVybikgewpkaWZmIC0tZ2l0IGEvc2FtcGxlcy9kYW1vbi93c3NlLmMgYi9zYW1wbGVzL2RhbW9uL3dzc2UuYwppbmRleCAzN2ZkNWRhMjAxNTg4Li41Mzk0NGFlYTg0MjhlIDEwMDY0NAotLS0gYS9zYW1wbGVzL2RhbW9uL3dzc2UuYwomIzQzOyYjNDM7JiM0MzsgYi9zYW1wbGVzL2RhbW9uL3dzc2UuYwpAQCAtMzMsNyAmIzQzOzMzLDYgQEAgbW9kdWxlX3BhcmFtX2NiKGVuYWJsZWQsICZhbXA7ZW5hYmxlZF9wYXJhbV9vcHMsICZhbXA7ZW5hYmxlZCwgMDYwMCk7CiBNT0RVTEVfUEFSTV9ERVNDKGVuYWJsZWQsICYjMzQ7RW5hYmxlIG9yIGRpc2FibGUgREFNT05fU0FNUExFX1dTU0UmIzM0Oyk7CiAKIHN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpjdHg7Ci1zdGF0aWMgc3RydWN0IHBpZCAqdGFyZ2V0X3BpZHA7CiAKIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX3dzc2VfcmVwZWF0X2NhbGxfZm4odm9pZCAqZGF0YSkKIHsKQEAgLTc5LDEyICYjNDM7NzgsMTAgQEAgc3RhdGljIGludCBkYW1vbl9zYW1wbGVfd3NzZV9zdGFydCh2b2lkKQogCQlyZXR1cm4gLUVOT01FTTsKIAl9CiAJZGFtb25fYWRkX3RhcmdldChjdHgsIHRhcmdldCk7Ci0JdGFyZ2V0X3BpZHAgPSBmaW5kX2dldF9waWQodGFyZ2V0X3BpZCk7Ci0JaWYgKCF0YXJnZXRfcGlkcCkgewomIzQzOwlpZiAoZGFtb25fc2V0X3RhcmdldF9waWQodGFyZ2V0LCB0YXJnZXRfcGlkKSkgewogCQlkYW1vbl9kZXN0cm95X2N0eChjdHgpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9Ci0JdGFyZ2V0LSZndDtwaWQgPSB0YXJnZXRfcGlkcDsKIAogCWVyciA9IGRhbW9uX3N0YXJ0KCZhbXA7Y3R4LCAxLCB0cnVlKTsKIAlpZiAoZXJyKSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDEzOjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MTkKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA3NzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqREFNT04gUmVmYWN0b3Jpbmc6IEEgRGVlcCBEaXZlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7UmVmYWN0b3JpbmcsIHByb2JhYmx5IG5vIGJpZyBkZWFsLiYjMzQ7IEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7dmUgaW50cm9kdWNlZCBhIG5ldyBmdW5jdGlvbiwgYGRhbW9uX3NldF90YXJnZXRfcGlkYCwgaW4gYG1tL2RhbW9uL2NvcmUuY2AgYW5kIGFyZSB1c2luZyBpdCBpbiBhIGZldyBwbGFjZXM6IGBtbS9kYW1vbi9zeXNmcy5jYCwgYW5kIHRoZSBzYW1wbGUgY29kZSBpbiBgc2FtcGxlcy9kYW1vbi9wcmNsLmNgIGFuZCBgc2FtcGxlcy9kYW1vbi93c3NlLmNgLiBUaGV5IGFyZSByZWZhY3RvcmluZyBob3cgdGhlIERBTU9OIHN1YnN5c3RlbSBzZXRzIHRoZSB0YXJnZXQgUElELiBMZXQgbWUgc2VlIGlmIHRoZXJlIGFyZSBhbnkgZnVuY3Rpb25hbCBpbXBsaWNhdGlvbnMgaGVyZS4KCkxldCYjMzk7cyBxdWlja2x5IGNvbXBhcmUgdGhlIG9sZCBhbmQgdGhlIG5ldyBgbW0vZGFtb24vc3lzZnMuY2AgY29kZS4gVGhlIG9sZCBjb2RlIHdhczoKCmBgYGMKCWlmIChkYW1vbl90YXJnZXRfaGFzX3BpZChjdHgpKSB7CgkJdC0mZ3Q7cGlkID0gZmluZF9nZXRfcGlkKHN5c190YXJnZXQtJmd0O3BpZCk7CgkJaWYgKCF0LSZndDtwaWQpCgkJCS8qIGNhbGxlciB3aWxsIGRlc3Ryb3kgdGFyZ2V0cyAqLwoJCQlyZXR1cm4gLUVJTlZBTDsKCX0KYGBgCgpBbmQgdGhlIG5ldyBjb2RlOgoKYGBgYwoJaWYgKGRhbW9uX3RhcmdldF9oYXNfcGlkKGN0eCkpIHsKCQkvKiBjYWxsZXIgd2lsbCBkZXN0cm95IHRhcmdldHMgKi8KCQlpZiAoZGFtb25fc2V0X3RhcmdldF9waWQodCwgc3lzX3RhcmdldC0mZ3Q7cGlkKSkKCQkJcmV0dXJuIC1FSU5WQUw7Cgl9CmBgYAoKVGhlIG5ldyBmdW5jdGlvbiBgZGFtb25fc2V0X3RhcmdldF9waWRgIGl0c2VsZiBpcyBzaW1wbGUsIGJhc2ljYWxseSBlbmNhcHN1bGF0aW5nIHdoYXQgd2FzIHRoZXJlIGJlZm9yZToKCmBgYGMKaW50IGRhbW9uX3NldF90YXJnZXRfcGlkKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIGludCBwaWQpCnsKCXQtJmd0O3BpZCA9IGZpbmRfZ2V0X3BpZChwaWQpOwoJaWYgKCF0LSZndDtwaWQpCgkJcmV0dXJuIC1FSU5WQUw7CglyZXR1cm4gMDsKfQpgYGAKClNlZW1zIGxpa2UgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIHJlZmFjdG9yaW5nLCBlbmNhcHN1bGF0aW5nIHRoZSBQSUQgYXNzaWdubWVudCBhbmQgZXJyb3IgY2hlY2tpbmcuIEkmIzM5O20gbm90IHNlZWluZyBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIGhlcmUuCgpIb2xkIG9uLCBsZXQgbWUgcXVpY2tseSByZXZpZXcgdGhlIGBzYW1wbGVzL2RhbW9uL3dzc2UuY2AgYW5kIGBzYW1wbGVzL2RhbW9uL3ByY2wuY2AgY29kZSB0byBtYWtlIHN1cmUgSSBhbSBub3QgbWlzc2luZyBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzLgoKYGBgYwotCXRhcmdldF9waWRwID0gZmluZF9nZXRfcGlkKHRhcmdldF9waWQpOwotCWlmICghdGFyZ2V0X3BpZHApIHsKJiM0MzsJaWYgKGRhbW9uX3NldF90YXJnZXRfcGlkKHRhcmdldCwgdGFyZ2V0X3BpZCkpIHsKIAkJZGFtb25fZGVzdHJveV9jdHgoY3R4KTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQotCXRhcmdldC0mZ3Q7cGlkID0gdGFyZ2V0X3BpZHA7CmBgYAoKSXQmIzM5O3MgbGl0ZXJhbGx5IHRoZSBzYW1lIGNoYW5nZSBmb3IgYHNhbXBsZXMvZGFtb24vcHJjbC5jYCBhcyB3ZWxsLiBBZ2FpbiwgdGhlIHJlZmFjdG9yaW5nIGlzIGp1c3QgcmVwbGFjaW5nIHRoZSBgZmluZF9nZXRfcGlkYCBjYWxsIGFuZCBlcnJvciBoYW5kbGluZyB3aXRoIHRoZSBuZXcgaGVscGVyIGZ1bmN0aW9uLiBJIGFtIG5vdCBzZWVpbmcgYW55IG5ldyBsb2dpYy4KCldhaXQgYSBzZWNvbmQsIHRoZXJlJiMzOTtzIGFub3RoZXIgc3VidGxlIGNoYW5nZSBJIHNob3VsZCBpbnZlc3RpZ2F0ZS4gVGhlIGNvZGUgc25pcHBldHMgbWVudGlvbiB0aGF0IGB0YXJnZXRfcGlkcGAgd2FzIGEgc3RhdGljIGdsb2JhbCB2YXJpYWJsZToKCmBgYGMKLXN0YXRpYyBzdHJ1Y3QgcGlkICp0YXJnZXRfcGlkcDsKYGBgCgphbmQgbm93IGl0JiMzOTtzIGdvbmUuIFRoYXQgbWVhbnMgdGhlIGdsb2JhbCBzdG9yYWdlIGlzIG5vIGxvbmdlciB0aGVyZS4gSXMgaXQgdXNlZCBhbnl3aGVyZSBlbHNlIGluIHRob3NlIHNhbXBsZSBmaWxlcz8gSSB3aWxsIHF1aWNrbHkgc2VhcmNoIGBzYW1wbGVzL2RhbW9uL3ByY2wuY2AgYW5kIGBzYW1wbGVzL2RhbW9uL3dzc2UuY2AuIFllcCwgaXQmIzM5O3MganVzdCBhIHZhcmlhYmxlIGZvciBzdG9yaW5nIHRoZSBgZmluZF9nZXRfcGlkYCByZXN1bHQgYW5kIG5vdyB0aGF0IHdlJiMzOTtyZSB1c2luZyBhIGhlbHBlciBmdW5jdGlvbiwgaXQmIzM5O3Mgbm8gbG9uZ2VyIG5lY2Vzc2FyeS4gSXQmIzM5O3MgdHJ1bHkgYSByZWZhY3RvcmluZy4KCk9rYXksIEkmIzM5O20gY29uZmlkZW50IHRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgaGVyZSwganVzdCBzdHJ1Y3R1cmFsLiBUaGVyZWZvcmUsIFdvcnRoRnV6emluZz1mYWxzZS4gSSBhbSBjb25maWRlbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMTM6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0YXJnZXRfcGlkcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3NhbXBsZXMvZGFtb24vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAxMzoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDMxCgkJCQkJCQlvdXRwdXQ6IDk1CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQ29kZSBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7dmUgdGFrZW4gYSBsb29rIGF0IHRoaXMgcGF0Y2guIEl0IHNlZW1zIHRoZSBjb2RlIGluIHF1ZXN0aW9uIHdhcyBkZWNsYXJlZCBnbG9iYWxseSwgd2hpY2ggdXN1YWxseSByYWlzZXMgYSByZWQgZmxhZyBmb3IgbWUsIGJ1dCB0aGUgaW1wb3J0YW50IHBvaW50IGlzIHRoYXQgaXQgd2FzbiYjMzk7dCBhY3R1YWxseSBiZWluZyAqdXRpbGl6ZWQqIGFueXdoZXJlLiBSZW1vdmluZyB0aGlzIHVudXNlZCBnbG9iYWwgdmFyaWFibGUgaXMsIHBsYWluIGFuZCBzaW1wbGUsIGEgY2xlYW51cCBvcGVyYXRpb24uIE5vIGZ1bmN0aW9uYWwgY2hhbmdlcywganVzdCBnb29kIGhvdXNla2VlcGluZy4KCkdpdmVuIHRoYXQgaXQmIzM5O3MganVzdCByZWZhY3RvcmluZyBhbmQgY2xlYW51cCwgSSYjMzk7bSBjb25maWRlbnQgaW4gdGFnZ2luZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gTm8gbmVlZCB0byBleHBlbmQgcmVzb3VyY2VzIGZ1enppbmcgdGhpcy4gSXQgaXNuJiMzOTt0IGNoYW5naW5nIGJlaGF2aW9yIGluIGEgd2F5IHRoYXQgd291bGQgaW50cm9kdWNlIGEgdnVsbmVyYWJpbGl0eSBvciByZWdyZXNzaW9uLiBJdCYjMzk7cyBzYWZlIHRvIG1lcmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDEzOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGhlbHBlciBmdW5jdGlvbiBgZGFtb25fc2V0X3RhcmdldF9waWRgIHRvIHJlcGxhY2UgZHVwbGljYXRlZCBjb2RlIHRoYXQgbG9va3MgdXAgYW5kIGFzc2lnbnMgYSBQSUQgdG8gYSBEQU1PTiB0YXJnZXQuIEl0IGFsc28gcmVtb3ZlcyB1bnVzZWQgc3RhdGljIHZhcmlhYmxlcyBpbiB0aGUgREFNT04gc2FtcGxlIG1vZHVsZXMuIFRoZXNlIGFyZSBwdXJlbHkgc3RydWN0dXJhbCByZWZhY3RvcmluZyBhbmQgY2xlYW51cCBjaGFuZ2VzIHdpdGggbm8gZnVuY3Rpb25hbCBpbXBhY3Qgb24gdGhlIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGhlbHBlciBmdW5jdGlvbiBgZGFtb25fc2V0X3RhcmdldF9waWRgIHRvIHJlcGxhY2UgZHVwbGljYXRlZCBjb2RlIHRoYXQgbG9va3MgdXAgYW5kIGFzc2lnbnMgYSBQSUQgdG8gYSBEQU1PTiB0YXJnZXQuIEl0IGFsc28gcmVtb3ZlcyB1bnVzZWQgc3RhdGljIHZhcmlhYmxlcyBpbiB0aGUgREFNT04gc2FtcGxlIG1vZHVsZXMuIFRoZXNlIGFyZSBwdXJlbHkgc3RydWN0dXJhbCByZWZhY3RvcmluZyBhbmQgY2xlYW51cCBjaGFuZ2VzIHdpdGggbm8gZnVuY3Rpb25hbCBpbXBhY3Qgb24gdGhlIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAxMzoyNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTdUMTM6Mjc6MTMuNzk3NzMyMjM4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxOTg2MTEzNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgaGVscGVyIGZ1bmN0aW9uIGBkYW1vbl9zZXRfdGFyZ2V0X3BpZGAgdG8gcmVwbGFjZSBkdXBsaWNhdGVkIGNvZGUgdGhhdCBsb29rcyB1cCBhbmQgYXNzaWducyBhIFBJRCB0byBhIERBTU9OIHRhcmdldC4gSXQgYWxzbyByZW1vdmVzIHVudXNlZCBzdGF0aWMgdmFyaWFibGVzIGluIHRoZSBEQU1PTiBzYW1wbGUgbW9kdWxlcy4gVGhlc2UgYXJlIHB1cmVseSBzdHJ1Y3R1cmFsIHJlZmFjdG9yaW5nIGFuZCBjbGVhbnVwIGNoYW5nZXMgd2l0aCBubyBmdW5jdGlvbmFsIGltcGFjdCBvbiB0aGUgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QxMzoyNzoxMy43OTc3Mzg1MThaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NzEwMTE3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGQwYTM3ODY1OGZmY2M2OTU5NWYzY2UyYWJhNmI5N2YwNDA2ZDU3NTJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMTcgMTM6Mjc6MTIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kYW1vbi5oIGIvaW5jbHVkZS9saW51eC9kYW1vbi5oXFxuaW5kZXggMGM4YjdkZGVmOWFiYi4uYTkzN2FhNTUxNzBiNCAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcXG5AQCAtMTA1NCw2ICsxMDU0LDcgQEAgaW50IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpO1xcbiBcXG4gc3RydWN0IGRhbW9uX3RhcmdldCAqZGFtb25fbmV3X3RhcmdldCh2b2lkKTtcXG4gdm9pZCBkYW1vbl9hZGRfdGFyZ2V0KHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX3RhcmdldCAqdCk7XFxuK2ludCBkYW1vbl9zZXRfdGFyZ2V0X3BpZChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBpbnQgcGlkKTtcXG4gYm9vbCBkYW1vbl90YXJnZXRzX2VtcHR5KHN0cnVjdCBkYW1vbl9jdHggKmN0eCk7XFxuIHZvaWQgZGFtb25fZnJlZV90YXJnZXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdCk7XFxuIHZvaWQgZGFtb25fZGVzdHJveV90YXJnZXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdCwgc3RydWN0IGRhbW9uX2N0eCAqY3R4KTtcXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jXFxuaW5kZXggNjQ0ZGFmNWExNjU2MC4uODJiMTk2NDA3YWU4NSAxMDA2NDRcXG4tLS0gYS9tbS9kYW1vbi9jb3JlLmNcXG4rKysgYi9tbS9kYW1vbi9jb3JlLmNcXG5AQCAtMTAsNiArMTAsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgva3RocmVhZC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbWVtY29udHJvbC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbW0uaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BpZC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcHNpLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zY2hlZC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvc2xhYi5oXFx1MDAzZVxcbkBAIC03OTUsNiArNzk2LDE3IEBAIHZvaWQgZGFtb25fYWRkX3RhcmdldChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXFxuIFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNnQtXFx1MDAzZWxpc3QsIFxcdTAwMjZjdHgtXFx1MDAzZWFkYXB0aXZlX3RhcmdldHMpO1xcbiB9XFxuIFxcbisvKlxcbisgKiBBc3NpZ24gdGhlIHN0cnVjdCBwaWQgb2YgdGhlIGdpdmVuIHBpZCBudW1iZXIgdG8gdGhlIGdpdmVuIHRhcmdldC5cXG4rICovXFxuK2ludCBkYW1vbl9zZXRfdGFyZ2V0X3BpZChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBpbnQgcGlkKVxcbit7XFxuK1xcdHQtXFx1MDAzZXBpZCA9IGZpbmRfZ2V0X3BpZChwaWQpO1xcbitcXHRpZiAoIXQtXFx1MDAzZXBpZClcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiBib29sIGRhbW9uX3RhcmdldHNfZW1wdHkoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbiB7XFxuIFxcdHJldHVybiBsaXN0X2VtcHR5KFxcdTAwMjZjdHgtXFx1MDAzZWFkYXB0aXZlX3RhcmdldHMpO1xcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9zeXNmcy5jIGIvbW0vZGFtb24vc3lzZnMuY1xcbmluZGV4IGUzODU4ZmZhYjRiMjIuLjNjODFiNGM5MWFjMGQgMTAwNjQ0XFxuLS0tIGEvbW0vZGFtb24vc3lzZnMuY1xcbisrKyBiL21tL2RhbW9uL3N5c2ZzLmNcXG5AQCAtMyw3ICszLDYgQEBcXG4gICogREFNT04gc3lzZnMgSW50ZXJmYWNlXFxuICAqL1xcbiBcXG4tI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BpZC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvc2NoZWQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NsYWIuaFxcdTAwM2VcXG4gXFxuQEAgLTIwMzUsOSArMjAzNCw4IEBAIHN0YXRpYyBpbnQgZGFtb25fc3lzZnNfYWRkX3RhcmdldChzdHJ1Y3QgZGFtb25fc3lzZnNfdGFyZ2V0ICpzeXNfdGFyZ2V0LFxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFx0ZGFtb25fYWRkX3RhcmdldChjdHgsIHQpO1xcbiBcXHRpZiAoZGFtb25fdGFyZ2V0X2hhc19waWQoY3R4KSkge1xcbi1cXHRcXHR0LVxcdTAwM2VwaWQgPSBmaW5kX2dldF9waWQoc3lzX3RhcmdldC1cXHUwMDNlcGlkKTtcXG4tXFx0XFx0aWYgKCF0LVxcdTAwM2VwaWQpXFxuLVxcdFxcdFxcdC8qIGNhbGxlciB3aWxsIGRlc3Ryb3kgdGFyZ2V0cyAqL1xcbitcXHRcXHQvKiBjYWxsZXIgd2lsbCBkZXN0cm95IHRhcmdldHMgKi9cXG4rXFx0XFx0aWYgKGRhbW9uX3NldF90YXJnZXRfcGlkKHQsIHN5c190YXJnZXQtXFx1MDAzZXBpZCkpXFxuIFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHR9XFxuIFxcdHQtXFx1MDAzZW9ic29sZXRlID0gc3lzX3RhcmdldC1cXHUwMDNlb2Jzb2xldGU7XFxuZGlmZiAtLWdpdCBhL3NhbXBsZXMvZGFtb24vcHJjbC5jIGIvc2FtcGxlcy9kYW1vbi9wcmNsLmNcXG5pbmRleCA4NDIwOTliZDYyMjg2Li44M2RkZjEyODExZDU3IDEwMDY0NFxcbi0tLSBhL3NhbXBsZXMvZGFtb24vcHJjbC5jXFxuKysrIGIvc2FtcGxlcy9kYW1vbi9wcmNsLmNcXG5AQCAtMzIsNyArMzIsNiBAQCBtb2R1bGVfcGFyYW1fY2IoZW5hYmxlZCwgXFx1MDAyNmVuYWJsZWRfcGFyYW1fb3BzLCBcXHUwMDI2ZW5hYmxlZCwgMDYwMCk7XFxuIE1PRFVMRV9QQVJNX0RFU0MoZW5hYmxlZCwgXFxcIkVuYWJsZSBvciBkaXNhYmxlIERBTU9OX1NBTVBMRV9QUkNMXFxcIik7XFxuIFxcbiBzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqY3R4O1xcbi1zdGF0aWMgc3RydWN0IHBpZCAqdGFyZ2V0X3BpZHA7XFxuIFxcbiBzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9wcmNsX3JlcGVhdF9jYWxsX2ZuKHZvaWQgKmRhdGEpXFxuIHtcXG5AQCAtNzksMTIgKzc4LDEwIEBAIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX3ByY2xfc3RhcnQodm9pZClcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcdH1cXG4gXFx0ZGFtb25fYWRkX3RhcmdldChjdHgsIHRhcmdldCk7XFxuLVxcdHRhcmdldF9waWRwID0gZmluZF9nZXRfcGlkKHRhcmdldF9waWQpO1xcbi1cXHRpZiAoIXRhcmdldF9waWRwKSB7XFxuK1xcdGlmIChkYW1vbl9zZXRfdGFyZ2V0X3BpZCh0YXJnZXQsIHRhcmdldF9waWQpKSB7XFxuIFxcdFxcdGRhbW9uX2Rlc3Ryb3lfY3R4KGN0eCk7XFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHR9XFxuLVxcdHRhcmdldC1cXHUwMDNlcGlkID0gdGFyZ2V0X3BpZHA7XFxuIFxcbiBcXHRzY2hlbWUgPSBkYW1vbl9uZXdfc2NoZW1lKFxcbiBcXHRcXHRcXHRcXHUwMDI2KHN0cnVjdCBkYW1vc19hY2Nlc3NfcGF0dGVybikge1xcbmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL3dzc2UuYyBiL3NhbXBsZXMvZGFtb24vd3NzZS5jXFxuaW5kZXggMzdmZDVkYTIwMTU4OC4uNTM5NDRhZWE4NDI4ZSAxMDA2NDRcXG4tLS0gYS9zYW1wbGVzL2RhbW9uL3dzc2UuY1xcbisrKyBiL3NhbXBsZXMvZGFtb24vd3NzZS5jXFxuQEAgLTMzLDcgKzMzLDYgQEAgbW9kdWxlX3BhcmFtX2NiKGVuYWJsZWQsIFxcdTAwMjZlbmFibGVkX3BhcmFtX29wcywgXFx1MDAyNmVuYWJsZWQsIDA2MDApO1xcbiBNT0RVTEVfUEFSTV9ERVNDKGVuYWJsZWQsIFxcXCJFbmFibGUgb3IgZGlzYWJsZSBEQU1PTl9TQU1QTEVfV1NTRVxcXCIpO1xcbiBcXG4gc3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmN0eDtcXG4tc3RhdGljIHN0cnVjdCBwaWQgKnRhcmdldF9waWRwO1xcbiBcXG4gc3RhdGljIGludCBkYW1vbl9zYW1wbGVfd3NzZV9yZXBlYXRfY2FsbF9mbih2b2lkICpkYXRhKVxcbiB7XFxuQEAgLTc5LDEyICs3OCwxMCBAQCBzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV93c3NlX3N0YXJ0KHZvaWQpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXHR9XFxuIFxcdGRhbW9uX2FkZF90YXJnZXQoY3R4LCB0YXJnZXQpO1xcbi1cXHR0YXJnZXRfcGlkcCA9IGZpbmRfZ2V0X3BpZCh0YXJnZXRfcGlkKTtcXG4tXFx0aWYgKCF0YXJnZXRfcGlkcCkge1xcbitcXHRpZiAoZGFtb25fc2V0X3RhcmdldF9waWQodGFyZ2V0LCB0YXJnZXRfcGlkKSkge1xcbiBcXHRcXHRkYW1vbl9kZXN0cm95X2N0eChjdHgpO1xcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0fVxcbi1cXHR0YXJnZXQtXFx1MDAzZXBpZCA9IHRhcmdldF9waWRwO1xcbiBcXG4gXFx0ZXJyID0gZGFtb25fc3RhcnQoXFx1MDAyNmN0eCwgMSwgdHJ1ZSk7XFxuIFxcdGlmIChlcnIpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMTM6Mjc6MTQuMjU1NDkyNjk0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTY3NDA4MzYzMTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBoZWxwZXIgZnVuY3Rpb24gYGRhbW9uX3NldF90YXJnZXRfcGlkYCB0byByZXBsYWNlIGR1cGxpY2F0ZWQgY29kZSB0aGF0IGxvb2tzIHVwIGFuZCBhc3NpZ25zIGEgUElEIHRvIGEgREFNT04gdGFyZ2V0LiBJdCBhbHNvIHJlbW92ZXMgdW51c2VkIHN0YXRpYyB2YXJpYWJsZXMgaW4gdGhlIERBTU9OIHNhbXBsZSBtb2R1bGVzLiBUaGVzZSBhcmUgcHVyZWx5IHN0cnVjdHVyYWwgcmVmYWN0b3JpbmcgYW5kIGNsZWFudXAgY2hhbmdlcyB3aXRoIG5vIGZ1bmN0aW9uYWwgaW1wYWN0IG9uIHRoZSBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGQwYTM3ODY1OGZmY2M2OTU5NWYzY2UyYWJhNmI5N2YwNDA2ZDU3NTJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxNyAxMzoyNzoxMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZGFtb24uaCBiL2luY2x1ZGUvbGludXgvZGFtb24uaFxuaW5kZXggMGM4YjdkZGVmOWFiYi4uYTkzN2FhNTUxNzBiNCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZGFtb24uaFxuKysrIGIvaW5jbHVkZS9saW51eC9kYW1vbi5oXG5AQCAtMTA1NCw2ICsxMDU0LDcgQEAgaW50IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpO1xuIFxuIHN0cnVjdCBkYW1vbl90YXJnZXQgKmRhbW9uX25ld190YXJnZXQodm9pZCk7XG4gdm9pZCBkYW1vbl9hZGRfdGFyZ2V0KHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX3RhcmdldCAqdCk7XG4raW50IGRhbW9uX3NldF90YXJnZXRfcGlkKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIGludCBwaWQpO1xuIGJvb2wgZGFtb25fdGFyZ2V0c19lbXB0eShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpO1xuIHZvaWQgZGFtb25fZnJlZV90YXJnZXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdCk7XG4gdm9pZCBkYW1vbl9kZXN0cm95X3RhcmdldChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpO1xuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuY1xuaW5kZXggNjQ0ZGFmNWExNjU2MC4uODJiMTk2NDA3YWU4NSAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL2NvcmUuY1xuKysrIGIvbW0vZGFtb24vY29yZS5jXG5AQCAtMTAsNiArMTAsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2t0aHJlYWQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21lbWNvbnRyb2wuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21tLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9waWQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BzaS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2NoZWQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuQEAgLTc5NSw2ICs3OTYsMTcgQEAgdm9pZCBkYW1vbl9hZGRfdGFyZ2V0KHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX3RhcmdldCAqdClcbiBcdGxpc3RfYWRkX3RhaWwoXHUwMDI2dC1cdTAwM2VsaXN0LCBcdTAwMjZjdHgtXHUwMDNlYWRhcHRpdmVfdGFyZ2V0cyk7XG4gfVxuIFxuKy8qXG4rICogQXNzaWduIHRoZSBzdHJ1Y3QgcGlkIG9mIHRoZSBnaXZlbiBwaWQgbnVtYmVyIHRvIHRoZSBnaXZlbiB0YXJnZXQuXG4rICovXG4raW50IGRhbW9uX3NldF90YXJnZXRfcGlkKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIGludCBwaWQpXG4re1xuK1x0dC1cdTAwM2VwaWQgPSBmaW5kX2dldF9waWQocGlkKTtcbitcdGlmICghdC1cdTAwM2VwaWQpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuIGJvb2wgZGFtb25fdGFyZ2V0c19lbXB0eShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG4ge1xuIFx0cmV0dXJuIGxpc3RfZW1wdHkoXHUwMDI2Y3R4LVx1MDAzZWFkYXB0aXZlX3RhcmdldHMpO1xuZGlmZiAtLWdpdCBhL21tL2RhbW9uL3N5c2ZzLmMgYi9tbS9kYW1vbi9zeXNmcy5jXG5pbmRleCBlMzg1OGZmYWI0YjIyLi4zYzgxYjRjOTFhYzBkIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vc3lzZnMuY1xuKysrIGIvbW0vZGFtb24vc3lzZnMuY1xuQEAgLTMsNyArMyw2IEBAXG4gICogREFNT04gc3lzZnMgSW50ZXJmYWNlXG4gICovXG4gXG4tI2luY2x1ZGUgXHUwMDNjbGludXgvcGlkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zY2hlZC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG4gXG5AQCAtMjAzNSw5ICsyMDM0LDggQEAgc3RhdGljIGludCBkYW1vbl9zeXNmc19hZGRfdGFyZ2V0KHN0cnVjdCBkYW1vbl9zeXNmc190YXJnZXQgKnN5c190YXJnZXQsXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFx0ZGFtb25fYWRkX3RhcmdldChjdHgsIHQpO1xuIFx0aWYgKGRhbW9uX3RhcmdldF9oYXNfcGlkKGN0eCkpIHtcbi1cdFx0dC1cdTAwM2VwaWQgPSBmaW5kX2dldF9waWQoc3lzX3RhcmdldC1cdTAwM2VwaWQpO1xuLVx0XHRpZiAoIXQtXHUwMDNlcGlkKVxuLVx0XHRcdC8qIGNhbGxlciB3aWxsIGRlc3Ryb3kgdGFyZ2V0cyAqL1xuK1x0XHQvKiBjYWxsZXIgd2lsbCBkZXN0cm95IHRhcmdldHMgKi9cbitcdFx0aWYgKGRhbW9uX3NldF90YXJnZXRfcGlkKHQsIHN5c190YXJnZXQtXHUwMDNlcGlkKSlcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcdHQtXHUwMDNlb2Jzb2xldGUgPSBzeXNfdGFyZ2V0LVx1MDAzZW9ic29sZXRlO1xuZGlmZiAtLWdpdCBhL3NhbXBsZXMvZGFtb24vcHJjbC5jIGIvc2FtcGxlcy9kYW1vbi9wcmNsLmNcbmluZGV4IDg0MjA5OWJkNjIyODYuLjgzZGRmMTI4MTFkNTcgMTAwNjQ0XG4tLS0gYS9zYW1wbGVzL2RhbW9uL3ByY2wuY1xuKysrIGIvc2FtcGxlcy9kYW1vbi9wcmNsLmNcbkBAIC0zMiw3ICszMiw2IEBAIG1vZHVsZV9wYXJhbV9jYihlbmFibGVkLCBcdTAwMjZlbmFibGVkX3BhcmFtX29wcywgXHUwMDI2ZW5hYmxlZCwgMDYwMCk7XG4gTU9EVUxFX1BBUk1fREVTQyhlbmFibGVkLCBcIkVuYWJsZSBvciBkaXNhYmxlIERBTU9OX1NBTVBMRV9QUkNMXCIpO1xuIFxuIHN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpjdHg7XG4tc3RhdGljIHN0cnVjdCBwaWQgKnRhcmdldF9waWRwO1xuIFxuIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX3ByY2xfcmVwZWF0X2NhbGxfZm4odm9pZCAqZGF0YSlcbiB7XG5AQCAtNzksMTIgKzc4LDEwIEBAIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX3ByY2xfc3RhcnQodm9pZClcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXHR9XG4gXHRkYW1vbl9hZGRfdGFyZ2V0KGN0eCwgdGFyZ2V0KTtcbi1cdHRhcmdldF9waWRwID0gZmluZF9nZXRfcGlkKHRhcmdldF9waWQpO1xuLVx0aWYgKCF0YXJnZXRfcGlkcCkge1xuK1x0aWYgKGRhbW9uX3NldF90YXJnZXRfcGlkKHRhcmdldCwgdGFyZ2V0X3BpZCkpIHtcbiBcdFx0ZGFtb25fZGVzdHJveV9jdHgoY3R4KTtcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG4tXHR0YXJnZXQtXHUwMDNlcGlkID0gdGFyZ2V0X3BpZHA7XG4gXG4gXHRzY2hlbWUgPSBkYW1vbl9uZXdfc2NoZW1lKFxuIFx0XHRcdFx1MDAyNihzdHJ1Y3QgZGFtb3NfYWNjZXNzX3BhdHRlcm4pIHtcbmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL3dzc2UuYyBiL3NhbXBsZXMvZGFtb24vd3NzZS5jXG5pbmRleCAzN2ZkNWRhMjAxNTg4Li41Mzk0NGFlYTg0MjhlIDEwMDY0NFxuLS0tIGEvc2FtcGxlcy9kYW1vbi93c3NlLmNcbisrKyBiL3NhbXBsZXMvZGFtb24vd3NzZS5jXG5AQCAtMzMsNyArMzMsNiBAQCBtb2R1bGVfcGFyYW1fY2IoZW5hYmxlZCwgXHUwMDI2ZW5hYmxlZF9wYXJhbV9vcHMsIFx1MDAyNmVuYWJsZWQsIDA2MDApO1xuIE1PRFVMRV9QQVJNX0RFU0MoZW5hYmxlZCwgXCJFbmFibGUgb3IgZGlzYWJsZSBEQU1PTl9TQU1QTEVfV1NTRVwiKTtcbiBcbiBzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqY3R4O1xuLXN0YXRpYyBzdHJ1Y3QgcGlkICp0YXJnZXRfcGlkcDtcbiBcbiBzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV93c3NlX3JlcGVhdF9jYWxsX2ZuKHZvaWQgKmRhdGEpXG4ge1xuQEAgLTc5LDEyICs3OCwxMCBAQCBzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV93c3NlX3N0YXJ0KHZvaWQpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFx0fVxuIFx0ZGFtb25fYWRkX3RhcmdldChjdHgsIHRhcmdldCk7XG4tXHR0YXJnZXRfcGlkcCA9IGZpbmRfZ2V0X3BpZCh0YXJnZXRfcGlkKTtcbi1cdGlmICghdGFyZ2V0X3BpZHApIHtcbitcdGlmIChkYW1vbl9zZXRfdGFyZ2V0X3BpZCh0YXJnZXQsIHRhcmdldF9waWQpKSB7XG4gXHRcdGRhbW9uX2Rlc3Ryb3lfY3R4KGN0eCk7XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuLVx0dGFyZ2V0LVx1MDAzZXBpZCA9IHRhcmdldF9waWRwO1xuIFxuIFx0ZXJyID0gZGFtb25fc3RhcnQoXHUwMDI2Y3R4LCAxLCB0cnVlKTtcbiBcdGlmIChlcnIpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDEzOjI3OjE0LjI1NTQ5NDA4NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwODgxMTc4ODA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRBTU9OIFJlZmFjdG9yaW5nOiBBIERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgXCJSZWZhY3RvcmluZywgcHJvYmFibHkgbm8gYmlnIGRlYWwuXCIgSXQgbG9va3MgbGlrZSB0aGV5J3ZlIGludHJvZHVjZWQgYSBuZXcgZnVuY3Rpb24sIGBkYW1vbl9zZXRfdGFyZ2V0X3BpZGAsIGluIGBtbS9kYW1vbi9jb3JlLmNgIGFuZCBhcmUgdXNpbmcgaXQgaW4gYSBmZXcgcGxhY2VzOiBgbW0vZGFtb24vc3lzZnMuY2AsIGFuZCB0aGUgc2FtcGxlIGNvZGUgaW4gYHNhbXBsZXMvZGFtb24vcHJjbC5jYCBhbmQgYHNhbXBsZXMvZGFtb24vd3NzZS5jYC4gVGhleSBhcmUgcmVmYWN0b3JpbmcgaG93IHRoZSBEQU1PTiBzdWJzeXN0ZW0gc2V0cyB0aGUgdGFyZ2V0IFBJRC4gTGV0IG1lIHNlZSBpZiB0aGVyZSBhcmUgYW55IGZ1bmN0aW9uYWwgaW1wbGljYXRpb25zIGhlcmUuXG5cbkxldCdzIHF1aWNrbHkgY29tcGFyZSB0aGUgb2xkIGFuZCB0aGUgbmV3IGBtbS9kYW1vbi9zeXNmcy5jYCBjb2RlLiBUaGUgb2xkIGNvZGUgd2FzOlxuXG5gYGBjXG5cdGlmIChkYW1vbl90YXJnZXRfaGFzX3BpZChjdHgpKSB7XG5cdFx0dC1cdTAwM2VwaWQgPSBmaW5kX2dldF9waWQoc3lzX3RhcmdldC1cdTAwM2VwaWQpO1xuXHRcdGlmICghdC1cdTAwM2VwaWQpXG5cdFx0XHQvKiBjYWxsZXIgd2lsbCBkZXN0cm95IHRhcmdldHMgKi9cblx0XHRcdHJldHVybiAtRUlOVkFMO1xuXHR9XG5gYGBcblxuQW5kIHRoZSBuZXcgY29kZTpcblxuYGBgY1xuXHRpZiAoZGFtb25fdGFyZ2V0X2hhc19waWQoY3R4KSkge1xuXHRcdC8qIGNhbGxlciB3aWxsIGRlc3Ryb3kgdGFyZ2V0cyAqL1xuXHRcdGlmIChkYW1vbl9zZXRfdGFyZ2V0X3BpZCh0LCBzeXNfdGFyZ2V0LVx1MDAzZXBpZCkpXG5cdFx0XHRyZXR1cm4gLUVJTlZBTDtcblx0fVxuYGBgXG5cblRoZSBuZXcgZnVuY3Rpb24gYGRhbW9uX3NldF90YXJnZXRfcGlkYCBpdHNlbGYgaXMgc2ltcGxlLCBiYXNpY2FsbHkgZW5jYXBzdWxhdGluZyB3aGF0IHdhcyB0aGVyZSBiZWZvcmU6XG5cbmBgYGNcbmludCBkYW1vbl9zZXRfdGFyZ2V0X3BpZChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBpbnQgcGlkKVxue1xuXHR0LVx1MDAzZXBpZCA9IGZpbmRfZ2V0X3BpZChwaWQpO1xuXHRpZiAoIXQtXHUwMDNlcGlkKVxuXHRcdHJldHVybiAtRUlOVkFMO1xuXHRyZXR1cm4gMDtcbn1cbmBgYFxuXG5TZWVtcyBsaWtlIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCByZWZhY3RvcmluZywgZW5jYXBzdWxhdGluZyB0aGUgUElEIGFzc2lnbm1lbnQgYW5kIGVycm9yIGNoZWNraW5nLiBJJ20gbm90IHNlZWluZyBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIGhlcmUuXG5cbkhvbGQgb24sIGxldCBtZSBxdWlja2x5IHJldmlldyB0aGUgYHNhbXBsZXMvZGFtb24vd3NzZS5jYCBhbmQgYHNhbXBsZXMvZGFtb24vcHJjbC5jYCBjb2RlIHRvIG1ha2Ugc3VyZSBJIGFtIG5vdCBtaXNzaW5nIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMuXG5cbmBgYGNcbi1cdHRhcmdldF9waWRwID0gZmluZF9nZXRfcGlkKHRhcmdldF9waWQpO1xuLVx0aWYgKCF0YXJnZXRfcGlkcCkge1xuK1x0aWYgKGRhbW9uX3NldF90YXJnZXRfcGlkKHRhcmdldCwgdGFyZ2V0X3BpZCkpIHtcbiBcdFx0ZGFtb25fZGVzdHJveV9jdHgoY3R4KTtcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG4tXHR0YXJnZXQtXHUwMDNlcGlkID0gdGFyZ2V0X3BpZHA7XG5gYGBcblxuSXQncyBsaXRlcmFsbHkgdGhlIHNhbWUgY2hhbmdlIGZvciBgc2FtcGxlcy9kYW1vbi9wcmNsLmNgIGFzIHdlbGwuIEFnYWluLCB0aGUgcmVmYWN0b3JpbmcgaXMganVzdCByZXBsYWNpbmcgdGhlIGBmaW5kX2dldF9waWRgIGNhbGwgYW5kIGVycm9yIGhhbmRsaW5nIHdpdGggdGhlIG5ldyBoZWxwZXIgZnVuY3Rpb24uIEkgYW0gbm90IHNlZWluZyBhbnkgbmV3IGxvZ2ljLlxuXG5XYWl0IGEgc2Vjb25kLCB0aGVyZSdzIGFub3RoZXIgc3VidGxlIGNoYW5nZSBJIHNob3VsZCBpbnZlc3RpZ2F0ZS4gVGhlIGNvZGUgc25pcHBldHMgbWVudGlvbiB0aGF0IGB0YXJnZXRfcGlkcGAgd2FzIGEgc3RhdGljIGdsb2JhbCB2YXJpYWJsZTpcblxuYGBgY1xuLXN0YXRpYyBzdHJ1Y3QgcGlkICp0YXJnZXRfcGlkcDtcbmBgYFxuXG5hbmQgbm93IGl0J3MgZ29uZS4gVGhhdCBtZWFucyB0aGUgZ2xvYmFsIHN0b3JhZ2UgaXMgbm8gbG9uZ2VyIHRoZXJlLiBJcyBpdCB1c2VkIGFueXdoZXJlIGVsc2UgaW4gdGhvc2Ugc2FtcGxlIGZpbGVzPyBJIHdpbGwgcXVpY2tseSBzZWFyY2ggYHNhbXBsZXMvZGFtb24vcHJjbC5jYCBhbmQgYHNhbXBsZXMvZGFtb24vd3NzZS5jYC4gWWVwLCBpdCdzIGp1c3QgYSB2YXJpYWJsZSBmb3Igc3RvcmluZyB0aGUgYGZpbmRfZ2V0X3BpZGAgcmVzdWx0IGFuZCBub3cgdGhhdCB3ZSdyZSB1c2luZyBhIGhlbHBlciBmdW5jdGlvbiwgaXQncyBubyBsb25nZXIgbmVjZXNzYXJ5LiBJdCdzIHRydWx5IGEgcmVmYWN0b3JpbmcuXG5cbk9rYXksIEknbSBjb25maWRlbnQgdGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyBoZXJlLCBqdXN0IHN0cnVjdHVyYWwuIFRoZXJlZm9yZSwgV29ydGhGdXp6aW5nPWZhbHNlLiBJIGFtIGNvbmZpZGVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQxOSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc3NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDEzOjI3OjI1LjEzNjY3NTNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzEwMTUwMTQwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0YXJnZXRfcGlkcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJzYW1wbGVzL2RhbW9uL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMTM6Mjc6MjUuNDQ2ODM4MDYxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU0OTQ2NDIwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBDb2RlIENoYW5nZSoqXG5cbk9rYXksIHNvIEkndmUgdGFrZW4gYSBsb29rIGF0IHRoaXMgcGF0Y2guIEl0IHNlZW1zIHRoZSBjb2RlIGluIHF1ZXN0aW9uIHdhcyBkZWNsYXJlZCBnbG9iYWxseSwgd2hpY2ggdXN1YWxseSByYWlzZXMgYSByZWQgZmxhZyBmb3IgbWUsIGJ1dCB0aGUgaW1wb3J0YW50IHBvaW50IGlzIHRoYXQgaXQgd2Fzbid0IGFjdHVhbGx5IGJlaW5nICp1dGlsaXplZCogYW55d2hlcmUuIFJlbW92aW5nIHRoaXMgdW51c2VkIGdsb2JhbCB2YXJpYWJsZSBpcywgcGxhaW4gYW5kIHNpbXBsZSwgYSBjbGVhbnVwIG9wZXJhdGlvbi4gTm8gZnVuY3Rpb25hbCBjaGFuZ2VzLCBqdXN0IGdvb2QgaG91c2VrZWVwaW5nLlxuXG5HaXZlbiB0aGF0IGl0J3MganVzdCByZWZhY3RvcmluZyBhbmQgY2xlYW51cCwgSSdtIGNvbmZpZGVudCBpbiB0YWdnaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBObyBuZWVkIHRvIGV4cGVuZCByZXNvdXJjZXMgZnV6emluZyB0aGlzLiBJdCBpc24ndCBjaGFuZ2luZyBiZWhhdmlvciBpbiBhIHdheSB0aGF0IHdvdWxkIGludHJvZHVjZSBhIHZ1bG5lcmFiaWxpdHkgb3IgcmVncmVzc2lvbi4gSXQncyBzYWZlIHRvIG1lcmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDMxLCJPdXRwdXRUb2tlbnMiOjk1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMTM6Mjc6MzAuOTk2MzA0OTIxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjA1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgaGVscGVyIGZ1bmN0aW9uIGBkYW1vbl9zZXRfdGFyZ2V0X3BpZGAgdG8gcmVwbGFjZSBkdXBsaWNhdGVkIGNvZGUgdGhhdCBsb29rcyB1cCBhbmQgYXNzaWducyBhIFBJRCB0byBhIERBTU9OIHRhcmdldC4gSXQgYWxzbyByZW1vdmVzIHVudXNlZCBzdGF0aWMgdmFyaWFibGVzIGluIHRoZSBEQU1PTiBzYW1wbGUgbW9kdWxlcy4gVGhlc2UgYXJlIHB1cmVseSBzdHJ1Y3R1cmFsIHJlZmFjdG9yaW5nIGFuZCBjbGVhbnVwIGNoYW5nZXMgd2l0aCBubyBmdW5jdGlvbmFsIGltcGFjdCBvbiB0aGUgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgaGVscGVyIGZ1bmN0aW9uIGBkYW1vbl9zZXRfdGFyZ2V0X3BpZGAgdG8gcmVwbGFjZSBkdXBsaWNhdGVkIGNvZGUgdGhhdCBsb29rcyB1cCBhbmQgYXNzaWducyBhIFBJRCB0byBhIERBTU9OIHRhcmdldC4gSXQgYWxzbyByZW1vdmVzIHVudXNlZCBzdGF0aWMgdmFyaWFibGVzIGluIHRoZSBEQU1PTiBzYW1wbGUgbW9kdWxlcy4gVGhlc2UgYXJlIHB1cmVseSBzdHJ1Y3R1cmFsIHJlZmFjdG9yaW5nIGFuZCBjbGVhbnVwIGNoYW5nZXMgd2l0aCBubyBmdW5jdGlvbmFsIGltcGFjdCBvbiB0aGUgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QxMzoyNzozMC45OTYzMzEwMzFaIiwiU2VxIjo3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8n84m[1] Phase: Running StartedAt: 2026-08-17 13:27:41 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8n84m[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-17 13:27:41 +0000 UTC FinishedAt: 2026-08-17 13:27:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}