Name: series-workflowdkgk5 Phase: Failed StartedAt: 2026-08-14 13:39:48 +0000 UTC FinishedAt: 2026-08-14 14:12:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdkgk5[0] Phase: Succeeded StartedAt: 2026-08-14 13:39:48 +0000 UTC FinishedAt: 2026-08-14 14:12:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdkgk5[0].run-triage Phase: Succeeded StartedAt: 2026-08-14 13:39:48 +0000 UTC FinishedAt: 2026-08-14 14:12:49 +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+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHpvbmVfc3Bhbm5lZF9wYWdlc19pbl9ub2RlYCBhbmQgcmVtb3ZlcyBgYWRqdXN0X3pvbmVfcmFuZ2VfZm9yX3pvbmVfbW92YWJsZWAsIGJvdGggb2Ygd2hpY2ggYXJlIG1hcmtlZCBhcyBgX19pbml0YC4gVGhpcyBpcyBib290LXRpbWUgaW5pdGlhbGl6YXRpb24gY29kZSB0aGF0IHJ1bnMgb25jZSBkdXJpbmcga2VybmVsIHN0YXJ0dXAgYW5kIGlzIG5vdCByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlLCBtYWtpbmcgaXQgdW5zdWl0YWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6MTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1MjM0OWVhYjZlOTIyZjhiMjYyZjhhNmQ2MTlhNTc3MGJlMWIzNTRlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMTQgMTQ6MTI6MTMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vbW1faW5pdC5jIGIvbW0vbW1faW5pdC5jXG5pbmRleCAxNTMzYWViYWZiNjg4Li45ZTZjOWZiMzc1ZWI4IDEwMDY0NFxuLS0tIGEvbW0vbW1faW5pdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9tbV9pbml0LmNcbkBAIC0xMTE5LDQxICYjNDM7MTExOSw2IEBAIHZvaWQgX19yZWYgbWVtbWFwX2luaXRfem9uZV9kZXZpY2Uoc3RydWN0IHpvbmUgKnpvbmUsXG4gfVxuICNlbmRpZlxuIFxuLS8qXG4tICogVGhlIHpvbmUgcmFuZ2VzIHByb3ZpZGVkIGJ5IHRoZSBhcmNoaXRlY3R1cmUgZG8gbm90IGluY2x1ZGUgWk9ORV9NT1ZBQkxFXG4tICogYmVjYXVzZSBpdCBpcyBzaXplZCBpbmRlcGVuZGVudCBvZiBhcmNoaXRlY3R1cmUuIFVubGlrZSB0aGUgb3RoZXIgem9uZXMsXG4tICogdGhlIHN0YXJ0aW5nIHBvaW50IGZvciBaT05FX01PVkFCTEUgaXMgbm90IGZpeGVkLiBJdCBtYXkgYmUgZGlmZmVyZW50XG4tICogaW4gZWFjaCBub2RlIGRlcGVuZGluZyBvbiB0aGUgc2l6ZSBvZiBlYWNoIG5vZGUgYW5kIGhvdyBldmVubHkga2VybmVsY29yZVxuLSAqIGlzIGRpc3RyaWJ1dGVkLiBUaGlzIGhlbHBlciBmdW5jdGlvbiBhZGp1c3RzIHRoZSB6b25lIHJhbmdlc1xuLSAqIHByb3ZpZGVkIGJ5IHRoZSBhcmNoaXRlY3R1cmUgZm9yIGEgZ2l2ZW4gbm9kZSBieSB1c2luZyB0aGUgZW5kIG9mIHRoZVxuLSAqIGhpZ2hlc3QgdXNhYmxlIHpvbmUgZm9yIFpPTkVfTU9WQUJMRS4gVGhpcyBwcmVzZXJ2ZXMgdGhlIGFzc3VtcHRpb24gdGhhdFxuLSAqIHpvbmVzIHdpdGhpbiBhIG5vZGUgYXJlIGluIG9yZGVyIG9mIG1vbm90b25pYyBpbmNyZWFzZXMgbWVtb3J5IGFkZHJlc3Nlc1xuLSAqL1xuLXN0YXRpYyB2b2lkIF9faW5pdCBhZGp1c3Rfem9uZV9yYW5nZV9mb3Jfem9uZV9tb3ZhYmxlKGludCBuaWQsXG4tXHRcdFx0XHRcdHVuc2lnbmVkIGxvbmcgem9uZV90eXBlLFxuLVx0XHRcdFx0XHR1bnNpZ25lZCBsb25nIG5vZGVfZW5kX3Bmbixcbi1cdFx0XHRcdFx0dW5zaWduZWQgbG9uZyAqem9uZV9zdGFydF9wZm4sXG4tXHRcdFx0XHRcdHVuc2lnbmVkIGxvbmcgKnpvbmVfZW5kX3Bmbilcbi17XG4tXHQvKiBPbmx5IGFkanVzdCBpZiBaT05FX01PVkFCTEUgaXMgb24gdGhpcyBub2RlICovXG4tXHRpZiAoem9uZV9tb3ZhYmxlX3BmbltuaWRdKSB7XG4tXHRcdC8qIFNpemUgWk9ORV9NT1ZBQkxFICovXG4tXHRcdGlmICh6b25lX3R5cGUgPT0gWk9ORV9NT1ZBQkxFKSB7XG4tXHRcdFx0KnpvbmVfc3RhcnRfcGZuID0gem9uZV9tb3ZhYmxlX3BmbltuaWRdO1xuLVx0XHRcdCp6b25lX2VuZF9wZm4gPSBtaW4obm9kZV9lbmRfcGZuLFxuLVx0XHRcdFx0YXJjaF96b25lX2hpZ2hlc3RfcG9zc2libGVfcGZuW21vdmFibGVfem9uZV0pO1xuLVxuLVx0XHQvKiBBZGp1c3QgZm9yIFpPTkVfTU9WQUJMRSBzdGFydGluZyB3aXRoaW4gdGhpcyByYW5nZSAqL1xuLVx0XHR9IGVsc2UgaWYgKCp6b25lX3N0YXJ0X3BmbiBcdTAwM2Mgem9uZV9tb3ZhYmxlX3BmbltuaWRdIFx1MDAyNlx1MDAyNlxuLVx0XHRcdCAgICp6b25lX2VuZF9wZm4gXHUwMDNlIHpvbmVfbW92YWJsZV9wZm5bbmlkXSkge1xuLVx0XHRcdCp6b25lX2VuZF9wZm4gPSB6b25lX21vdmFibGVfcGZuW25pZF07XG4tXG4tXHRcdC8qIENoZWNrIGlmIHRoaXMgd2hvbGUgcmFuZ2UgaXMgd2l0aGluIFpPTkVfTU9WQUJMRSAqL1xuLVx0XHR9IGVsc2UgaWYgKCp6b25lX3N0YXJ0X3BmbiBcdTAwM2U9IHpvbmVfbW92YWJsZV9wZm5bbmlkXSlcbi1cdFx0XHQqem9uZV9zdGFydF9wZm4gPSAqem9uZV9lbmRfcGZuO1xuLVx0fVxuLX1cbi1cbiAvKlxuICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIGhvbGVzIGluIGEgcmFuZ2Ugb24gYSBub2RlLiBJZiBuaWQgaXMgTUFYX05VTU5PREVTLFxuICAqIHRoZW4gYWxsIGhvbGVzIGluIHRoZSByZXF1ZXN0ZWQgcmFuZ2Ugd2lsbCBiZSBhY2NvdW50ZWQgZm9yLlxuQEAgLTEyMDMsNiAmIzQzOzExNjgsMTUgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0IHpvbmVfYWJzZW50X3BhZ2VzX2luX25vZGUoaW50IG5pZCxcbiAvKlxuICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIHBhZ2VzIGEgem9uZSBzcGFucyBpbiBhIG5vZGUsIGluY2x1ZGluZyBob2xlc1xuICAqIHByZXNlbnRfcGFnZXMgPSB6b25lX3NwYW5uZWRfcGFnZXNfaW5fbm9kZSgpIC0gem9uZV9hYnNlbnRfcGFnZXNfaW5fbm9kZSgpXG4mIzQzOyAqXG4mIzQzOyAqIFRoZSB6b25lIHJhbmdlcyBwcm92aWRlZCBieSB0aGUgYXJjaGl0ZWN0dXJlIGRvIG5vdCBpbmNsdWRlIFpPTkVfTU9WQUJMRVxuJiM0MzsgKiBiZWNhdXNlIGl0IGlzIHNpemVkIGluZGVwZW5kZW50IG9mIGFyY2hpdGVjdHVyZS4gVW5saWtlIHRoZSBvdGhlciB6b25lcyxcbiYjNDM7ICogdGhlIHN0YXJ0aW5nIHBvaW50IGZvciBaT05FX01PVkFCTEUgaXMgbm90IGZpeGVkLiBJdCBtYXkgYmUgZGlmZmVyZW50XG4mIzQzOyAqIGluIGVhY2ggbm9kZSBkZXBlbmRpbmcgb24gdGhlIHNpemUgb2YgZWFjaCBub2RlIGFuZCBob3cgZXZlbmx5IGtlcm5lbGNvcmVcbiYjNDM7ICogaXMgZGlzdHJpYnV0ZWQuIFRoZSB6b25lIHJhbmdlcyBwcm92aWRlZCBieSB0aGUgYXJjaGl0ZWN0dXJlIGFyZSBhZGp1c3RlZFxuJiM0MzsgKiBmb3IgYSBnaXZlbiBub2RlIGJ5IHVzaW5nIHRoZSBlbmQgb2YgdGhlIGhpZ2hlc3QgdXNhYmxlIHpvbmUgZm9yXG4mIzQzOyAqIFpPTkVfTU9WQUJMRS4gVGhpcyBwcmVzZXJ2ZXMgdGhlIGFzc3VtcHRpb24gdGhhdCB6b25lcyB3aXRoaW4gYSBub2RlIGFyZVxuJiM0MzsgKiBpbiBvcmRlciBvZiBtb25vdG9uaWMgaW5jcmVhc2VzIG1lbW9yeSBhZGRyZXNzZXNcbiAgKi9cbiBzdGF0aWMgdW5zaWduZWQgbG9uZyBfX2luaXQgem9uZV9zcGFubmVkX3BhZ2VzX2luX25vZGUoaW50IG5pZCxcbiBcdFx0XHRcdFx0dW5zaWduZWQgbG9uZyB6b25lX3R5cGUsXG5AQCAtMTIxMywyMSAmIzQzOzExODcsNDAgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0IHpvbmVfc3Bhbm5lZF9wYWdlc19pbl9ub2RlKGludCBuaWQsXG4ge1xuIFx0dW5zaWduZWQgbG9uZyB6b25lX2xvdyA9IGFyY2hfem9uZV9sb3dlc3RfcG9zc2libGVfcGZuW3pvbmVfdHlwZV07XG4gXHR1bnNpZ25lZCBsb25nIHpvbmVfaGlnaCA9IGFyY2hfem9uZV9oaWdoZXN0X3Bvc3NpYmxlX3Bmblt6b25lX3R5cGVdO1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgbW92YWJsZV9wZm4gPSB6b25lX21vdmFibGVfcGZuW25pZF07XG4gXG4gXHQvKiBHZXQgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIHpvbmUgKi9cbiBcdCp6b25lX3N0YXJ0X3BmbiA9IGNsYW1wKG5vZGVfc3RhcnRfcGZuLCB6b25lX2xvdywgem9uZV9oaWdoKTtcbiBcdCp6b25lX2VuZF9wZm4gPSBjbGFtcChub2RlX2VuZF9wZm4sIHpvbmVfbG93LCB6b25lX2hpZ2gpO1xuLVx0YWRqdXN0X3pvbmVfcmFuZ2VfZm9yX3pvbmVfbW92YWJsZShuaWQsIHpvbmVfdHlwZSwgbm9kZV9lbmRfcGZuLFxuLVx0XHRcdFx0XHQgICB6b25lX3N0YXJ0X3Bmbiwgem9uZV9lbmRfcGZuKTtcbiBcbi1cdC8qIENoZWNrIHRoYXQgdGhpcyBub2RlIGhhcyBwYWdlcyB3aXRoaW4gdGhlIHpvbmUmIzM5O3MgcmVxdWlyZWQgcmFuZ2UgKi9cbi1cdGlmICgqem9uZV9lbmRfcGZuIFx1MDAzYyBub2RlX3N0YXJ0X3BmbiB8fCAqem9uZV9zdGFydF9wZm4gXHUwMDNlIG5vZGVfZW5kX3Bmbilcbi1cdFx0cmV0dXJuIDA7XG4mIzQzO1x0LyogTm90aGluZyB0byBhZGp1c3QgaWYgWk9ORV9NT1ZBQkxFIGlzIG5vdCBvbiB0aGlzIG5vZGUgKi9cbiYjNDM7XHRpZiAoIW1vdmFibGVfcGZuKVxuJiM0MztcdFx0Z290byBvdXQ7XG4gXG4tXHQvKiBNb3ZlIHRoZSB6b25lIGJvdW5kYXJpZXMgaW5zaWRlIHRoZSBub2RlIGlmIG5lY2Vzc2FyeSAqL1xuLVx0KnpvbmVfZW5kX3BmbiA9IG1pbigqem9uZV9lbmRfcGZuLCBub2RlX2VuZF9wZm4pO1xuLVx0KnpvbmVfc3RhcnRfcGZuID0gbWF4KCp6b25lX3N0YXJ0X3Bmbiwgbm9kZV9zdGFydF9wZm4pO1xuJiM0MztcdC8qIFNpemUgWk9ORV9NT1ZBQkxFICovXG4mIzQzO1x0aWYgKHpvbmVfdHlwZSA9PSBaT05FX01PVkFCTEUpIHtcbiYjNDM7XHRcdCp6b25lX3N0YXJ0X3BmbiA9IG1vdmFibGVfcGZuO1xuJiM0MztcdFx0KnpvbmVfZW5kX3BmbiA9IG1pbihub2RlX2VuZF9wZm4sXG4mIzQzO1x0XHRcdGFyY2hfem9uZV9oaWdoZXN0X3Bvc3NpYmxlX3Bmblttb3ZhYmxlX3pvbmVdKTtcbiBcbiYjNDM7XHRcdC8qIENoZWNrIHRoYXQgdGhpcyBub2RlIGhhcyBwYWdlcyB3aXRoaW4gdGhlIHpvbmUmIzM5O3MgcmVxdWlyZWQgcmFuZ2UgKi9cbiYjNDM7XHRcdGlmICgqem9uZV9lbmRfcGZuIFx1MDAzYyBub2RlX3N0YXJ0X3BmbiB8fFxuJiM0MztcdFx0ICAgICp6b25lX3N0YXJ0X3BmbiBcdTAwM2Ugbm9kZV9lbmRfcGZuKVxuJiM0MztcdFx0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0XHQvKiBNb3ZlIHRoZSB6b25lIHN0YXJ0IGluc2lkZSB0aGUgbm9kZSBpZiBuZWNlc3NhcnkgKi9cbiYjNDM7XHRcdCp6b25lX3N0YXJ0X3BmbiA9IG1heCgqem9uZV9zdGFydF9wZm4sIG5vZGVfc3RhcnRfcGZuKTtcbiYjNDM7XG4mIzQzO1x0LyogVGhpcyByYW5nZSBzdGFydHMgYmVsb3cgWk9ORV9NT1ZBQkxFICovXG4mIzQzO1x0fSBlbHNlIGlmICgqem9uZV9zdGFydF9wZm4gXHUwMDNjIG1vdmFibGVfcGZuKSB7XG4mIzQzO1x0XHQqem9uZV9lbmRfcGZuID0gbWluKCp6b25lX2VuZF9wZm4sIG1vdmFibGVfcGZuKTtcbiYjNDM7XG4mIzQzO1x0LyogVGhpcyB3aG9sZSByYW5nZSBpcyB3aXRoaW4gWk9ORV9NT1ZBQkxFICovXG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdCp6b25lX3N0YXJ0X3BmbiA9ICp6b25lX2VuZF9wZm47XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7b3V0OlxuIFx0LyogUmV0dXJuIHRoZSBzcGFubmVkIHBhZ2VzICovXG4gXHRyZXR1cm4gKnpvbmVfZW5kX3BmbiAtICp6b25lX3N0YXJ0X3BmbjtcbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6MTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGB6b25lX3NwYW5uZWRfcGFnZXNfaW5fbm9kZWAgYW5kIHJlbW92ZXMgYGFkanVzdF96b25lX3JhbmdlX2Zvcl96b25lX21vdmFibGVgLCBib3RoIG9mIHdoaWNoIGFyZSBtYXJrZWQgYXMgYF9faW5pdGAuIFRoaXMgaXMgYm9vdC10aW1lIGluaXRpYWxpemF0aW9uIGNvZGUgdGhhdCBydW5zIG9uY2UgZHVyaW5nIGtlcm5lbCBzdGFydHVwIGFuZCBpcyBub3QgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSwgbWFraW5nIGl0IHVuc3VpdGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTIzNDllYWI2ZTkyMmY4YjI2MmY4YTZkNjE5YTU3NzBiZTFiMzU0ZQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDE0IDE0OjEyOjEzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vbW1faW5pdC5jIGIvbW0vbW1faW5pdC5jCmluZGV4IDE1MzNhZWJhZmI2ODguLjllNmM5ZmIzNzVlYjggMTAwNjQ0Ci0tLSBhL21tL21tX2luaXQuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9tbV9pbml0LmMKQEAgLTExMTksNDEgJiM0MzsxMTE5LDYgQEAgdm9pZCBfX3JlZiBtZW1tYXBfaW5pdF96b25lX2RldmljZShzdHJ1Y3Qgem9uZSAqem9uZSwKIH0KICNlbmRpZgogCi0vKgotICogVGhlIHpvbmUgcmFuZ2VzIHByb3ZpZGVkIGJ5IHRoZSBhcmNoaXRlY3R1cmUgZG8gbm90IGluY2x1ZGUgWk9ORV9NT1ZBQkxFCi0gKiBiZWNhdXNlIGl0IGlzIHNpemVkIGluZGVwZW5kZW50IG9mIGFyY2hpdGVjdHVyZS4gVW5saWtlIHRoZSBvdGhlciB6b25lcywKLSAqIHRoZSBzdGFydGluZyBwb2ludCBmb3IgWk9ORV9NT1ZBQkxFIGlzIG5vdCBmaXhlZC4gSXQgbWF5IGJlIGRpZmZlcmVudAotICogaW4gZWFjaCBub2RlIGRlcGVuZGluZyBvbiB0aGUgc2l6ZSBvZiBlYWNoIG5vZGUgYW5kIGhvdyBldmVubHkga2VybmVsY29yZQotICogaXMgZGlzdHJpYnV0ZWQuIFRoaXMgaGVscGVyIGZ1bmN0aW9uIGFkanVzdHMgdGhlIHpvbmUgcmFuZ2VzCi0gKiBwcm92aWRlZCBieSB0aGUgYXJjaGl0ZWN0dXJlIGZvciBhIGdpdmVuIG5vZGUgYnkgdXNpbmcgdGhlIGVuZCBvZiB0aGUKLSAqIGhpZ2hlc3QgdXNhYmxlIHpvbmUgZm9yIFpPTkVfTU9WQUJMRS4gVGhpcyBwcmVzZXJ2ZXMgdGhlIGFzc3VtcHRpb24gdGhhdAotICogem9uZXMgd2l0aGluIGEgbm9kZSBhcmUgaW4gb3JkZXIgb2YgbW9ub3RvbmljIGluY3JlYXNlcyBtZW1vcnkgYWRkcmVzc2VzCi0gKi8KLXN0YXRpYyB2b2lkIF9faW5pdCBhZGp1c3Rfem9uZV9yYW5nZV9mb3Jfem9uZV9tb3ZhYmxlKGludCBuaWQsCi0JCQkJCXVuc2lnbmVkIGxvbmcgem9uZV90eXBlLAotCQkJCQl1bnNpZ25lZCBsb25nIG5vZGVfZW5kX3BmbiwKLQkJCQkJdW5zaWduZWQgbG9uZyAqem9uZV9zdGFydF9wZm4sCi0JCQkJCXVuc2lnbmVkIGxvbmcgKnpvbmVfZW5kX3BmbikKLXsKLQkvKiBPbmx5IGFkanVzdCBpZiBaT05FX01PVkFCTEUgaXMgb24gdGhpcyBub2RlICovCi0JaWYgKHpvbmVfbW92YWJsZV9wZm5bbmlkXSkgewotCQkvKiBTaXplIFpPTkVfTU9WQUJMRSAqLwotCQlpZiAoem9uZV90eXBlID09IFpPTkVfTU9WQUJMRSkgewotCQkJKnpvbmVfc3RhcnRfcGZuID0gem9uZV9tb3ZhYmxlX3BmbltuaWRdOwotCQkJKnpvbmVfZW5kX3BmbiA9IG1pbihub2RlX2VuZF9wZm4sCi0JCQkJYXJjaF96b25lX2hpZ2hlc3RfcG9zc2libGVfcGZuW21vdmFibGVfem9uZV0pOwotCi0JCS8qIEFkanVzdCBmb3IgWk9ORV9NT1ZBQkxFIHN0YXJ0aW5nIHdpdGhpbiB0aGlzIHJhbmdlICovCi0JCX0gZWxzZSBpZiAoKnpvbmVfc3RhcnRfcGZuICZsdDsgem9uZV9tb3ZhYmxlX3BmbltuaWRdICZhbXA7JmFtcDsKLQkJCSAgICp6b25lX2VuZF9wZm4gJmd0OyB6b25lX21vdmFibGVfcGZuW25pZF0pIHsKLQkJCSp6b25lX2VuZF9wZm4gPSB6b25lX21vdmFibGVfcGZuW25pZF07Ci0KLQkJLyogQ2hlY2sgaWYgdGhpcyB3aG9sZSByYW5nZSBpcyB3aXRoaW4gWk9ORV9NT1ZBQkxFICovCi0JCX0gZWxzZSBpZiAoKnpvbmVfc3RhcnRfcGZuICZndDs9IHpvbmVfbW92YWJsZV9wZm5bbmlkXSkKLQkJCSp6b25lX3N0YXJ0X3BmbiA9ICp6b25lX2VuZF9wZm47Ci0JfQotfQotCiAvKgogICogUmV0dXJuIHRoZSBudW1iZXIgb2YgaG9sZXMgaW4gYSByYW5nZSBvbiBhIG5vZGUuIElmIG5pZCBpcyBNQVhfTlVNTk9ERVMsCiAgKiB0aGVuIGFsbCBob2xlcyBpbiB0aGUgcmVxdWVzdGVkIHJhbmdlIHdpbGwgYmUgYWNjb3VudGVkIGZvci4KQEAgLTEyMDMsNiAmIzQzOzExNjgsMTUgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0IHpvbmVfYWJzZW50X3BhZ2VzX2luX25vZGUoaW50IG5pZCwKIC8qCiAgKiBSZXR1cm4gdGhlIG51bWJlciBvZiBwYWdlcyBhIHpvbmUgc3BhbnMgaW4gYSBub2RlLCBpbmNsdWRpbmcgaG9sZXMKICAqIHByZXNlbnRfcGFnZXMgPSB6b25lX3NwYW5uZWRfcGFnZXNfaW5fbm9kZSgpIC0gem9uZV9hYnNlbnRfcGFnZXNfaW5fbm9kZSgpCiYjNDM7ICoKJiM0MzsgKiBUaGUgem9uZSByYW5nZXMgcHJvdmlkZWQgYnkgdGhlIGFyY2hpdGVjdHVyZSBkbyBub3QgaW5jbHVkZSBaT05FX01PVkFCTEUKJiM0MzsgKiBiZWNhdXNlIGl0IGlzIHNpemVkIGluZGVwZW5kZW50IG9mIGFyY2hpdGVjdHVyZS4gVW5saWtlIHRoZSBvdGhlciB6b25lcywKJiM0MzsgKiB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIFpPTkVfTU9WQUJMRSBpcyBub3QgZml4ZWQuIEl0IG1heSBiZSBkaWZmZXJlbnQKJiM0MzsgKiBpbiBlYWNoIG5vZGUgZGVwZW5kaW5nIG9uIHRoZSBzaXplIG9mIGVhY2ggbm9kZSBhbmQgaG93IGV2ZW5seSBrZXJuZWxjb3JlCiYjNDM7ICogaXMgZGlzdHJpYnV0ZWQuIFRoZSB6b25lIHJhbmdlcyBwcm92aWRlZCBieSB0aGUgYXJjaGl0ZWN0dXJlIGFyZSBhZGp1c3RlZAomIzQzOyAqIGZvciBhIGdpdmVuIG5vZGUgYnkgdXNpbmcgdGhlIGVuZCBvZiB0aGUgaGlnaGVzdCB1c2FibGUgem9uZSBmb3IKJiM0MzsgKiBaT05FX01PVkFCTEUuIFRoaXMgcHJlc2VydmVzIHRoZSBhc3N1bXB0aW9uIHRoYXQgem9uZXMgd2l0aGluIGEgbm9kZSBhcmUKJiM0MzsgKiBpbiBvcmRlciBvZiBtb25vdG9uaWMgaW5jcmVhc2VzIG1lbW9yeSBhZGRyZXNzZXMKICAqLwogc3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0IHpvbmVfc3Bhbm5lZF9wYWdlc19pbl9ub2RlKGludCBuaWQsCiAJCQkJCXVuc2lnbmVkIGxvbmcgem9uZV90eXBlLApAQCAtMTIxMywyMSAmIzQzOzExODcsNDAgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0IHpvbmVfc3Bhbm5lZF9wYWdlc19pbl9ub2RlKGludCBuaWQsCiB7CiAJdW5zaWduZWQgbG9uZyB6b25lX2xvdyA9IGFyY2hfem9uZV9sb3dlc3RfcG9zc2libGVfcGZuW3pvbmVfdHlwZV07CiAJdW5zaWduZWQgbG9uZyB6b25lX2hpZ2ggPSBhcmNoX3pvbmVfaGlnaGVzdF9wb3NzaWJsZV9wZm5bem9uZV90eXBlXTsKJiM0MzsJdW5zaWduZWQgbG9uZyBtb3ZhYmxlX3BmbiA9IHpvbmVfbW92YWJsZV9wZm5bbmlkXTsKIAogCS8qIEdldCB0aGUgc3RhcnQgYW5kIGVuZCBvZiB0aGUgem9uZSAqLwogCSp6b25lX3N0YXJ0X3BmbiA9IGNsYW1wKG5vZGVfc3RhcnRfcGZuLCB6b25lX2xvdywgem9uZV9oaWdoKTsKIAkqem9uZV9lbmRfcGZuID0gY2xhbXAobm9kZV9lbmRfcGZuLCB6b25lX2xvdywgem9uZV9oaWdoKTsKLQlhZGp1c3Rfem9uZV9yYW5nZV9mb3Jfem9uZV9tb3ZhYmxlKG5pZCwgem9uZV90eXBlLCBub2RlX2VuZF9wZm4sCi0JCQkJCSAgIHpvbmVfc3RhcnRfcGZuLCB6b25lX2VuZF9wZm4pOwogCi0JLyogQ2hlY2sgdGhhdCB0aGlzIG5vZGUgaGFzIHBhZ2VzIHdpdGhpbiB0aGUgem9uZSYjMzk7cyByZXF1aXJlZCByYW5nZSAqLwotCWlmICgqem9uZV9lbmRfcGZuICZsdDsgbm9kZV9zdGFydF9wZm4gfHwgKnpvbmVfc3RhcnRfcGZuICZndDsgbm9kZV9lbmRfcGZuKQotCQlyZXR1cm4gMDsKJiM0MzsJLyogTm90aGluZyB0byBhZGp1c3QgaWYgWk9ORV9NT1ZBQkxFIGlzIG5vdCBvbiB0aGlzIG5vZGUgKi8KJiM0MzsJaWYgKCFtb3ZhYmxlX3BmbikKJiM0MzsJCWdvdG8gb3V0OwogCi0JLyogTW92ZSB0aGUgem9uZSBib3VuZGFyaWVzIGluc2lkZSB0aGUgbm9kZSBpZiBuZWNlc3NhcnkgKi8KLQkqem9uZV9lbmRfcGZuID0gbWluKCp6b25lX2VuZF9wZm4sIG5vZGVfZW5kX3Bmbik7Ci0JKnpvbmVfc3RhcnRfcGZuID0gbWF4KCp6b25lX3N0YXJ0X3Bmbiwgbm9kZV9zdGFydF9wZm4pOwomIzQzOwkvKiBTaXplIFpPTkVfTU9WQUJMRSAqLwomIzQzOwlpZiAoem9uZV90eXBlID09IFpPTkVfTU9WQUJMRSkgewomIzQzOwkJKnpvbmVfc3RhcnRfcGZuID0gbW92YWJsZV9wZm47CiYjNDM7CQkqem9uZV9lbmRfcGZuID0gbWluKG5vZGVfZW5kX3BmbiwKJiM0MzsJCQlhcmNoX3pvbmVfaGlnaGVzdF9wb3NzaWJsZV9wZm5bbW92YWJsZV96b25lXSk7CiAKJiM0MzsJCS8qIENoZWNrIHRoYXQgdGhpcyBub2RlIGhhcyBwYWdlcyB3aXRoaW4gdGhlIHpvbmUmIzM5O3MgcmVxdWlyZWQgcmFuZ2UgKi8KJiM0MzsJCWlmICgqem9uZV9lbmRfcGZuICZsdDsgbm9kZV9zdGFydF9wZm4gfHwKJiM0MzsJCSAgICAqem9uZV9zdGFydF9wZm4gJmd0OyBub2RlX2VuZF9wZm4pCiYjNDM7CQkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CQkvKiBNb3ZlIHRoZSB6b25lIHN0YXJ0IGluc2lkZSB0aGUgbm9kZSBpZiBuZWNlc3NhcnkgKi8KJiM0MzsJCSp6b25lX3N0YXJ0X3BmbiA9IG1heCgqem9uZV9zdGFydF9wZm4sIG5vZGVfc3RhcnRfcGZuKTsKJiM0MzsKJiM0MzsJLyogVGhpcyByYW5nZSBzdGFydHMgYmVsb3cgWk9ORV9NT1ZBQkxFICovCiYjNDM7CX0gZWxzZSBpZiAoKnpvbmVfc3RhcnRfcGZuICZsdDsgbW92YWJsZV9wZm4pIHsKJiM0MzsJCSp6b25lX2VuZF9wZm4gPSBtaW4oKnpvbmVfZW5kX3BmbiwgbW92YWJsZV9wZm4pOwomIzQzOwomIzQzOwkvKiBUaGlzIHdob2xlIHJhbmdlIGlzIHdpdGhpbiBaT05FX01PVkFCTEUgKi8KJiM0MzsJfSBlbHNlIHsKJiM0MzsJCSp6b25lX3N0YXJ0X3BmbiA9ICp6b25lX2VuZF9wZm47CiYjNDM7CX0KJiM0MzsKJiM0MztvdXQ6CiAJLyogUmV0dXJuIHRoZSBzcGFubmVkIHBhZ2VzICovCiAJcmV0dXJuICp6b25lX2VuZF9wZm4gLSAqem9uZV9zdGFydF9wZm47CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzOTYKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAzMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCYjMzk7cyBJbXBhY3Qgb24gRnV6emluZyBUYXJnZXRhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQmIzM5O3MgbWVzc2luZyB3aXRoIGBtbS9tbV9pbml0LmNgLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGlubGluaW5nIHRoZSBgYWRqdXN0X3pvbmVfcmFuZ2VfZm9yX3pvbmVfbW92YWJsZWAgZnVuY3Rpb24gaW50byBgem9uZV9zcGFubmVkX3BhZ2VzX2luX25vZGVgLiBBbmQgYm90aCBvZiB0aGVzZSBmdW5jdGlvbnMgYXJlIG1hcmtlZCB3aXRoIGBfX2luaXRgLiBOb3csIGEgcmVkIGZsYWcgaW1tZWRpYXRlbHkgZ29lcyB1cC4gYF9faW5pdGAgZnVuY3Rpb25zIGFyZSwgYnkgZGVmaW5pdGlvbiwgZXhlY3V0ZWQgb25seSBkdXJpbmcgdGhlIGtlcm5lbCYjMzk7cyBib290IHByb2Nlc3MsIGFuZCB0aGVpciBhc3NvY2lhdGVkIG1lbW9yeSBpcyBmcmVlZCBhZnRlcndhcmQuCgpNeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGZ1enppbmcuIEZ1enppbmcgdXN1YWxseSBmb2N1c2VzIG9uIGFyZWFzIHRyaWdnZXJlZCByZXBlYXRlZGx5IGZyb20gdXNlciBzcGFjZTogc3lzdGVtIGNhbGxzLCBuZXR3b3JrIGludGVyYWN0aW9ucywgZGV2aWNlIG9wZXJhdGlvbnMg4oCTIHRoZSBzdGFuZGFyZCBhdHRhY2sgc3VyZmFjZS4gQm9vdC10aW1lIGluaXRpYWxpemF0aW9uIGlzLCB3ZWxsLCAqYm9vdC10aW1lKi4gQnVncyBpbiBpbml0aWFsaXphdGlvbiAqY2FuKiBsZWFkIHRvIGJvb3QgZmFpbHVyZXMsIGJ1dCB0aGV5JiMzOTtyZSBub3QgZ2VuZXJhbGx5IGFjY2Vzc2libGUgb25jZSB0aGUgc3lzdGVtIGlzIHVwIGFuZCBydW5uaW5nLCBzbyB0aGV5IGFyZSBub3QgaWRlYWwgZm9yIGEgZnV6emVyIGxpa2Ugc3l6a2FsbGVyLgoKQnV0IHdhaXQgYSBtaW51dGUsIGlzIGl0IGFic29sdXRlbHkgaW1wb3NzaWJsZSBmb3IgYHpvbmVfc3Bhbm5lZF9wYWdlc19pbl9ub2RlYCB0byBiZSB0cmlnZ2VyZWQgKmFmdGVyKiBib290PyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgaXQmIzM5O3Mgc3RyaWN0bHkgYF9faW5pdGAuIE9rYXksIGxldCYjMzk7cyBzZWUuLi4geWVwLCBpdCYjMzk7cyBgc3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0IHpvbmVfc3Bhbm5lZF9wYWdlc19pbl9ub2RlKC4uLilgLiBUaGF0IHNlYWxzIGl0OyBpdCYjMzk7cyAqc3VwcG9zZWQqIHRvIGJlIHVucmVhY2hhYmxlIGFmdGVyIGJvb3QuCgpIb2xkIG9uLCB0aGVyZSYjMzk7cyBhbm90aGVyIHBvc3NpYmlsaXR5IHRoYXQgSSBoYXZlIHRvIGFjY291bnQgZm9yLiBNZW1vcnkgaG90cGx1Zy4gSWYgdGhpcyBmdW5jdGlvbiBpcyBwYXJ0IG9mIG1lbW9yeSBob3RwbHVnIGNvZGUsIGl0ICpzaG91bGRuJiMzOTt0KiBiZSBgX19pbml0YC4gSWYgaXQgaXMgYF9faW5pdGAgYW5kIGlzIHRoZW4gdXNlZCBpbiBob3RwbHVnLCBpdCB3aWxsIGluZXZpdGFibHkgbGVhZCB0byBhIGtlcm5lbCBwYW5pYyBpZiBpdCBpcyBjYWxsZWQgYWZ0ZXIgYm9vdC4gVGhhdCYjMzk7cyBhIHNlcmlvdXMgcHJvYmxlbSEgSSBuZWVkIHRvIHZlcmlmeSBpZiBgem9uZV9zcGFubmVkX3BhZ2VzX2luX25vZGVgIGlzIGludm9sdmVkIGluIG1lbW9yeSBob3RwbHVnLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBtYWtlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7em9uZV9zcGFubmVkX3BhZ2VzX2luX25vZGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vbW1faW5pdC5jPTExNTY9c3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0IHpvbmVfYWJzZW50X3BhZ2VzX2luX25vZGUoaW50IG5pZCxcbi0tXG5tbS9tbV9pbml0LmMtMTE2OS0gKiBSZXR1cm4gdGhlIG51bWJlciBvZiBwYWdlcyBhIHpvbmUgc3BhbnMgaW4gYSBub2RlLCBpbmNsdWRpbmcgaG9sZXNcbm1tL21tX2luaXQuYzoxMTcwOiAqIHByZXNlbnRfcGFnZXMgPSB6b25lX3NwYW5uZWRfcGFnZXNfaW5fbm9kZSgpIC0gem9uZV9hYnNlbnRfcGFnZXNfaW5fbm9kZSgpXG5tbS9tbV9pbml0LmMtMTE3MS0gKlxuLS1cbm1tL21tX2luaXQuYy0xMTgwLSAqL1xubW0vbW1faW5pdC5jOjExODE6c3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0IHpvbmVfc3Bhbm5lZF9wYWdlc19pbl9ub2RlKGludCBuaWQsXG5tbS9tbV9pbml0LmMtMTE4Mi1cdFx0XHRcdFx0dW5zaWduZWQgbG9uZyB6b25lX3R5cGUsXG4tLVxubW0vbW1faW5pdC5jPTEyNzA9c3RhdGljIHZvaWQgX19pbml0IGNhbGN1bGF0ZV9ub2RlX3RvdGFscGFnZXMoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCxcbi0tXG5tbS9tbV9pbml0LmMtMTI4Mi1cbm1tL21tX2luaXQuYzoxMjgzOlx0XHRzcGFubmVkID0gem9uZV9zcGFubmVkX3BhZ2VzX2luX25vZGUocGdkYXQtXHUwMDNlbm9kZV9pZCwgaSxcbm1tL21tX2luaXQuYy0xMjg0LVx0XHRcdFx0XHRcdCAgICAgbm9kZV9zdGFydF9wZm4sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ1NwoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVG90YWwgUGFnZXMgQ2FsY3VsYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGlzIGBjYWxjdWxhdGVfbm9kZV90b3RhbHBhZ2VzYCBmdW5jdGlvbi4gUmlnaHQgbm93LCBpdCBzZWVtcyBsaWtlIHRoZSBvbmx5IHBsYWNlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGlzIGZyb20gd2l0aGluIGBjYWxjdWxhdGVfbm9kZV90b3RhbHBhZ2VzYCBpdHNlbGYsIHdoaWNoIGlzIGFsc28gYWN0aW5nIGFzIHRoZSBgX19pbml0X19gIG1ldGhvZC4gVGhhdCYjMzk7cyBhIGJpdCB1bnVzdWFsLCBzbyBpdCB3YXJyYW50cyBhIGNsb3NlciBsb29rLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoaW4gYGNhbGN1bGF0ZV9ub2RlX3RvdGFscGFnZXNgLiBMZXQmIzM5O3MgZGl2ZSBpbiBhbmQgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gd2l0aGluIHRoYXQgZnVuY3Rpb24uIEkmIzM5O2xsIGRlY29uc3RydWN0IGl0IHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgYW5kIGltcGFjdCBvbiB0aGUgb3ZlcmFsbCBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NhbGN1bGF0ZV9ub2RlX3RvdGFscGFnZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0PTM3ND1HZW5lcmFsXG4tLVxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTQ1Ni0gIFRoZSBzdGFydCBwZm4gb2YgdGhlIHpvbmUuIEl0IGlzIGluaXRpYWxpemVkIGJ5XG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3Q6NDU3OiAgYGBjYWxjdWxhdGVfbm9kZV90b3RhbHBhZ2VzKClgYC5cbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC00NTgtXG4tLVxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTQ3MC0gIGBgc3Bhbm5lZF9wYWdlc2BgID0gYGB6b25lX2VuZF9wZm5gYCAtIGBgem9uZV9zdGFydF9wZm5gYC4gSXQgaXMgaW5pdGlhbGl6ZWRcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdDo0NzE6ICBieSBgYGNhbGN1bGF0ZV9ub2RlX3RvdGFscGFnZXMoKWBgLlxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTQ3Mi1cbi0tXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3QtNDgwLSAgYGBwcmVzZW50X3BhZ2VzYGAgc2hvdWxkIHVzZSBgYGdldF9vbmxpbmVfbWVtcygpYGAgdG8gZ2V0IGEgc3RhYmxlIHZhbHVlLiBJdFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0OjQ4MTogIGlzIGluaXRpYWxpemVkIGJ5IGBgY2FsY3VsYXRlX25vZGVfdG90YWxwYWdlcygpYGAuXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3QtNDgyLVxuLS1cbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC00ODYtICBgYENPTkZJR19NRU1PUllfSE9UUExVR2BgIGlzIGVuYWJsZWQgYW5kIGluaXRpYWxpemVkIGJ5XG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3Q6NDg3OiAgYGBjYWxjdWxhdGVfbm9kZV90b3RhbHBhZ2VzKClgYC5cbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC00ODgtXG4tLVxubW0vbW1faW5pdC5jPTEyNDY9c3RhdGljIHZvaWQgX19pbml0IGNhbGNfbnJfa2VybmVsX3BhZ2VzKHZvaWQpXG4tLVxubW0vbW1faW5pdC5jLTEyNjktXG5tbS9tbV9pbml0LmM6MTI3MDpzdGF0aWMgdm9pZCBfX2luaXQgY2FsY3VsYXRlX25vZGVfdG90YWxwYWdlcyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LFxubW0vbW1faW5pdC5jLTEyNzEtXHRcdFx0XHRcdFx0dW5zaWduZWQgbG9uZyBub2RlX3N0YXJ0X3Bmbixcbi0tXG5tbS9tbV9pbml0LmM9MTY0OT1zdGF0aWMgdm9pZCBfX2luaXQgZnJlZV9hcmVhX2luaXRfbm9kZShpbnQgbmlkKVxuLS1cbm1tL21tX2luaXQuYy0xNjY3LVxubW0vbW1faW5pdC5jOjE2Njg6XHRcdGNhbGN1bGF0ZV9ub2RlX3RvdGFscGFnZXMocGdkYXQsIHN0YXJ0X3BmbiwgZW5kX3Bmbik7XG5tbS9tbV9pbml0LmMtMTY2OS1cdH0gZWxzZSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE4NgoJCQkJCQkJb3V0cHV0OiAxMDAKCQkJCQkJCXRob3VnaHRzOiA3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipCb290LVRpbWUgSW5pdGlhbGl6YXRpb24sIE5vIEZ1enppbmcgTmVlZGVkKioKCkFscmlnaHQsIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBteSBpbml0aWFsIHJlYWN0aW9uIGlzIGNsZWFyOiB0aGlzIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgdGhlIG9uZSBiZWluZyBkaXNjdXNzZWQsIGlzIG9ubHkgZXZlciBjYWxsZWQgZHVyaW5nIHRoZSBib290IHByb2Nlc3MuIEl0JiMzOTtzIHRpZWQgdG8gYGZyZWVfYXJlYV9pbml0X25vZGVgLCBhbmQgdGhhdCYjMzk7cyBtYXJrZWQgYXMgYF9faW5pdGAuIFRoYXQgbWVhbnMgdGhpcyBpcyBwdXJlbHkgYm9vdC10aW1lIGluaXRpYWxpemF0aW9uIGNvZGUuIE5vIHdheSB0aGlzIGdldHMgdG91Y2hlZCBieSB1c2VyIHNwYWNlLgoKVGhpcyBpcyBjcml0aWNhbCBiZWNhdXNlIGl0IG1lYW5zIG5vIHN5c3RlbSBjYWxsIGZ1enplciwgbGlrZSBhIHRvb2wgSSYjMzk7bSBmYW1pbGlhciB3aXRoLCBsaWtlIHN5emthbGxlciwgaXMgZ29pbmcgdG8gYmUgYWJsZSB0byByZWFjaCBpdC4gVGhlcmUmIzM5O3MganVzdCBubyBwYXRoIGZyb20gYSB1c2VyLXNwYWNlIHByb2Nlc3MgdG8gZXhlY3V0ZSB0aGlzIGNvZGUgb25jZSB0aGUgc3lzdGVtIGlzIHVwIGFuZCBydW5uaW5nLiBUaGVyZWZvcmUsIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCB0aGlzIGlzbiYjMzk7dCBhIGNhbmRpZGF0ZS4gVGhlICYjMzQ7V29ydGhGdXp6aW5nJiMzNDsgZmxhZz8gRGVmaW5pdGVseSBmYWxzZS4gV2UgY2FuIHNhZmVseSBpZ25vcmUgdGhpcyBwYXJ0IGZvciBmdXp6aW5nIHB1cnBvc2VzLiBJdCYjMzk7cyBhIGRlYWQgZW5kLCBmdXp6aW5nLXdpc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgem9uZV9zcGFubmVkX3BhZ2VzX2luX25vZGVgIGFuZCByZW1vdmVzIGBhZGp1c3Rfem9uZV9yYW5nZV9mb3Jfem9uZV9tb3ZhYmxlYCwgYm90aCBvZiB3aGljaCBhcmUgbWFya2VkIGFzIGBfX2luaXRgLiBUaGlzIGlzIGJvb3QtdGltZSBpbml0aWFsaXphdGlvbiBjb2RlIHRoYXQgcnVucyBvbmNlIGR1cmluZyBrZXJuZWwgc3RhcnR1cCBhbmQgaXMgbm90IHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UsIG1ha2luZyBpdCB1bnN1aXRhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHpvbmVfc3Bhbm5lZF9wYWdlc19pbl9ub2RlYCBhbmQgcmVtb3ZlcyBgYWRqdXN0X3pvbmVfcmFuZ2VfZm9yX3pvbmVfbW92YWJsZWAsIGJvdGggb2Ygd2hpY2ggYXJlIG1hcmtlZCBhcyBgX19pbml0YC4gVGhpcyBpcyBib290LXRpbWUgaW5pdGlhbGl6YXRpb24gY29kZSB0aGF0IHJ1bnMgb25jZSBkdXJpbmcga2VybmVsIHN0YXJ0dXAgYW5kIGlzIG5vdCByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlLCBtYWtpbmcgaXQgdW5zdWl0YWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6MTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjEyOjE0LjY5NjQ3NDI1N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMzIyOTIwMjY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHpvbmVfc3Bhbm5lZF9wYWdlc19pbl9ub2RlYCBhbmQgcmVtb3ZlcyBgYWRqdXN0X3pvbmVfcmFuZ2VfZm9yX3pvbmVfbW92YWJsZWAsIGJvdGggb2Ygd2hpY2ggYXJlIG1hcmtlZCBhcyBgX19pbml0YC4gVGhpcyBpcyBib290LXRpbWUgaW5pdGlhbGl6YXRpb24gY29kZSB0aGF0IHJ1bnMgb25jZSBkdXJpbmcga2VybmVsIHN0YXJ0dXAgYW5kIGlzIG5vdCByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlLCBtYWtpbmcgaXQgdW5zdWl0YWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjEyOjE0LjY5NjQ4MjgzN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI5MjkxNDA4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDUyMzQ5ZWFiNmU5MjJmOGIyNjJmOGE2ZDYxOWE1NzcwYmUxYjM1NGVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBBdWcgMTQgMTQ6MTI6MTMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbW0vbW1faW5pdC5jIGIvbW0vbW1faW5pdC5jXFxuaW5kZXggMTUzM2FlYmFmYjY4OC4uOWU2YzlmYjM3NWViOCAxMDA2NDRcXG4tLS0gYS9tbS9tbV9pbml0LmNcXG4rKysgYi9tbS9tbV9pbml0LmNcXG5AQCAtMTExOSw0MSArMTExOSw2IEBAIHZvaWQgX19yZWYgbWVtbWFwX2luaXRfem9uZV9kZXZpY2Uoc3RydWN0IHpvbmUgKnpvbmUsXFxuIH1cXG4gI2VuZGlmXFxuIFxcbi0vKlxcbi0gKiBUaGUgem9uZSByYW5nZXMgcHJvdmlkZWQgYnkgdGhlIGFyY2hpdGVjdHVyZSBkbyBub3QgaW5jbHVkZSBaT05FX01PVkFCTEVcXG4tICogYmVjYXVzZSBpdCBpcyBzaXplZCBpbmRlcGVuZGVudCBvZiBhcmNoaXRlY3R1cmUuIFVubGlrZSB0aGUgb3RoZXIgem9uZXMsXFxuLSAqIHRoZSBzdGFydGluZyBwb2ludCBmb3IgWk9ORV9NT1ZBQkxFIGlzIG5vdCBmaXhlZC4gSXQgbWF5IGJlIGRpZmZlcmVudFxcbi0gKiBpbiBlYWNoIG5vZGUgZGVwZW5kaW5nIG9uIHRoZSBzaXplIG9mIGVhY2ggbm9kZSBhbmQgaG93IGV2ZW5seSBrZXJuZWxjb3JlXFxuLSAqIGlzIGRpc3RyaWJ1dGVkLiBUaGlzIGhlbHBlciBmdW5jdGlvbiBhZGp1c3RzIHRoZSB6b25lIHJhbmdlc1xcbi0gKiBwcm92aWRlZCBieSB0aGUgYXJjaGl0ZWN0dXJlIGZvciBhIGdpdmVuIG5vZGUgYnkgdXNpbmcgdGhlIGVuZCBvZiB0aGVcXG4tICogaGlnaGVzdCB1c2FibGUgem9uZSBmb3IgWk9ORV9NT1ZBQkxFLiBUaGlzIHByZXNlcnZlcyB0aGUgYXNzdW1wdGlvbiB0aGF0XFxuLSAqIHpvbmVzIHdpdGhpbiBhIG5vZGUgYXJlIGluIG9yZGVyIG9mIG1vbm90b25pYyBpbmNyZWFzZXMgbWVtb3J5IGFkZHJlc3Nlc1xcbi0gKi9cXG4tc3RhdGljIHZvaWQgX19pbml0IGFkanVzdF96b25lX3JhbmdlX2Zvcl96b25lX21vdmFibGUoaW50IG5pZCxcXG4tXFx0XFx0XFx0XFx0XFx0dW5zaWduZWQgbG9uZyB6b25lX3R5cGUsXFxuLVxcdFxcdFxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgbm9kZV9lbmRfcGZuLFxcbi1cXHRcXHRcXHRcXHRcXHR1bnNpZ25lZCBsb25nICp6b25lX3N0YXJ0X3BmbixcXG4tXFx0XFx0XFx0XFx0XFx0dW5zaWduZWQgbG9uZyAqem9uZV9lbmRfcGZuKVxcbi17XFxuLVxcdC8qIE9ubHkgYWRqdXN0IGlmIFpPTkVfTU9WQUJMRSBpcyBvbiB0aGlzIG5vZGUgKi9cXG4tXFx0aWYgKHpvbmVfbW92YWJsZV9wZm5bbmlkXSkge1xcbi1cXHRcXHQvKiBTaXplIFpPTkVfTU9WQUJMRSAqL1xcbi1cXHRcXHRpZiAoem9uZV90eXBlID09IFpPTkVfTU9WQUJMRSkge1xcbi1cXHRcXHRcXHQqem9uZV9zdGFydF9wZm4gPSB6b25lX21vdmFibGVfcGZuW25pZF07XFxuLVxcdFxcdFxcdCp6b25lX2VuZF9wZm4gPSBtaW4obm9kZV9lbmRfcGZuLFxcbi1cXHRcXHRcXHRcXHRhcmNoX3pvbmVfaGlnaGVzdF9wb3NzaWJsZV9wZm5bbW92YWJsZV96b25lXSk7XFxuLVxcbi1cXHRcXHQvKiBBZGp1c3QgZm9yIFpPTkVfTU9WQUJMRSBzdGFydGluZyB3aXRoaW4gdGhpcyByYW5nZSAqL1xcbi1cXHRcXHR9IGVsc2UgaWYgKCp6b25lX3N0YXJ0X3BmbiBcXHUwMDNjIHpvbmVfbW92YWJsZV9wZm5bbmlkXSBcXHUwMDI2XFx1MDAyNlxcbi1cXHRcXHRcXHQgICAqem9uZV9lbmRfcGZuIFxcdTAwM2Ugem9uZV9tb3ZhYmxlX3BmbltuaWRdKSB7XFxuLVxcdFxcdFxcdCp6b25lX2VuZF9wZm4gPSB6b25lX21vdmFibGVfcGZuW25pZF07XFxuLVxcbi1cXHRcXHQvKiBDaGVjayBpZiB0aGlzIHdob2xlIHJhbmdlIGlzIHdpdGhpbiBaT05FX01PVkFCTEUgKi9cXG4tXFx0XFx0fSBlbHNlIGlmICgqem9uZV9zdGFydF9wZm4gXFx1MDAzZT0gem9uZV9tb3ZhYmxlX3BmbltuaWRdKVxcbi1cXHRcXHRcXHQqem9uZV9zdGFydF9wZm4gPSAqem9uZV9lbmRfcGZuO1xcbi1cXHR9XFxuLX1cXG4tXFxuIC8qXFxuICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIGhvbGVzIGluIGEgcmFuZ2Ugb24gYSBub2RlLiBJZiBuaWQgaXMgTUFYX05VTU5PREVTLFxcbiAgKiB0aGVuIGFsbCBob2xlcyBpbiB0aGUgcmVxdWVzdGVkIHJhbmdlIHdpbGwgYmUgYWNjb3VudGVkIGZvci5cXG5AQCAtMTIwMyw2ICsxMTY4LDE1IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIF9faW5pdCB6b25lX2Fic2VudF9wYWdlc19pbl9ub2RlKGludCBuaWQsXFxuIC8qXFxuICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIHBhZ2VzIGEgem9uZSBzcGFucyBpbiBhIG5vZGUsIGluY2x1ZGluZyBob2xlc1xcbiAgKiBwcmVzZW50X3BhZ2VzID0gem9uZV9zcGFubmVkX3BhZ2VzX2luX25vZGUoKSAtIHpvbmVfYWJzZW50X3BhZ2VzX2luX25vZGUoKVxcbisgKlxcbisgKiBUaGUgem9uZSByYW5nZXMgcHJvdmlkZWQgYnkgdGhlIGFyY2hpdGVjdHVyZSBkbyBub3QgaW5jbHVkZSBaT05FX01PVkFCTEVcXG4rICogYmVjYXVzZSBpdCBpcyBzaXplZCBpbmRlcGVuZGVudCBvZiBhcmNoaXRlY3R1cmUuIFVubGlrZSB0aGUgb3RoZXIgem9uZXMsXFxuKyAqIHRoZSBzdGFydGluZyBwb2ludCBmb3IgWk9ORV9NT1ZBQkxFIGlzIG5vdCBmaXhlZC4gSXQgbWF5IGJlIGRpZmZlcmVudFxcbisgKiBpbiBlYWNoIG5vZGUgZGVwZW5kaW5nIG9uIHRoZSBzaXplIG9mIGVhY2ggbm9kZSBhbmQgaG93IGV2ZW5seSBrZXJuZWxjb3JlXFxuKyAqIGlzIGRpc3RyaWJ1dGVkLiBUaGUgem9uZSByYW5nZXMgcHJvdmlkZWQgYnkgdGhlIGFyY2hpdGVjdHVyZSBhcmUgYWRqdXN0ZWRcXG4rICogZm9yIGEgZ2l2ZW4gbm9kZSBieSB1c2luZyB0aGUgZW5kIG9mIHRoZSBoaWdoZXN0IHVzYWJsZSB6b25lIGZvclxcbisgKiBaT05FX01PVkFCTEUuIFRoaXMgcHJlc2VydmVzIHRoZSBhc3N1bXB0aW9uIHRoYXQgem9uZXMgd2l0aGluIGEgbm9kZSBhcmVcXG4rICogaW4gb3JkZXIgb2YgbW9ub3RvbmljIGluY3JlYXNlcyBtZW1vcnkgYWRkcmVzc2VzXFxuICAqL1xcbiBzdGF0aWMgdW5zaWduZWQgbG9uZyBfX2luaXQgem9uZV9zcGFubmVkX3BhZ2VzX2luX25vZGUoaW50IG5pZCxcXG4gXFx0XFx0XFx0XFx0XFx0dW5zaWduZWQgbG9uZyB6b25lX3R5cGUsXFxuQEAgLTEyMTMsMjEgKzExODcsNDAgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0IHpvbmVfc3Bhbm5lZF9wYWdlc19pbl9ub2RlKGludCBuaWQsXFxuIHtcXG4gXFx0dW5zaWduZWQgbG9uZyB6b25lX2xvdyA9IGFyY2hfem9uZV9sb3dlc3RfcG9zc2libGVfcGZuW3pvbmVfdHlwZV07XFxuIFxcdHVuc2lnbmVkIGxvbmcgem9uZV9oaWdoID0gYXJjaF96b25lX2hpZ2hlc3RfcG9zc2libGVfcGZuW3pvbmVfdHlwZV07XFxuK1xcdHVuc2lnbmVkIGxvbmcgbW92YWJsZV9wZm4gPSB6b25lX21vdmFibGVfcGZuW25pZF07XFxuIFxcbiBcXHQvKiBHZXQgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIHpvbmUgKi9cXG4gXFx0KnpvbmVfc3RhcnRfcGZuID0gY2xhbXAobm9kZV9zdGFydF9wZm4sIHpvbmVfbG93LCB6b25lX2hpZ2gpO1xcbiBcXHQqem9uZV9lbmRfcGZuID0gY2xhbXAobm9kZV9lbmRfcGZuLCB6b25lX2xvdywgem9uZV9oaWdoKTtcXG4tXFx0YWRqdXN0X3pvbmVfcmFuZ2VfZm9yX3pvbmVfbW92YWJsZShuaWQsIHpvbmVfdHlwZSwgbm9kZV9lbmRfcGZuLFxcbi1cXHRcXHRcXHRcXHRcXHQgICB6b25lX3N0YXJ0X3Bmbiwgem9uZV9lbmRfcGZuKTtcXG4gXFxuLVxcdC8qIENoZWNrIHRoYXQgdGhpcyBub2RlIGhhcyBwYWdlcyB3aXRoaW4gdGhlIHpvbmUncyByZXF1aXJlZCByYW5nZSAqL1xcbi1cXHRpZiAoKnpvbmVfZW5kX3BmbiBcXHUwMDNjIG5vZGVfc3RhcnRfcGZuIHx8ICp6b25lX3N0YXJ0X3BmbiBcXHUwMDNlIG5vZGVfZW5kX3BmbilcXG4tXFx0XFx0cmV0dXJuIDA7XFxuK1xcdC8qIE5vdGhpbmcgdG8gYWRqdXN0IGlmIFpPTkVfTU9WQUJMRSBpcyBub3Qgb24gdGhpcyBub2RlICovXFxuK1xcdGlmICghbW92YWJsZV9wZm4pXFxuK1xcdFxcdGdvdG8gb3V0O1xcbiBcXG4tXFx0LyogTW92ZSB0aGUgem9uZSBib3VuZGFyaWVzIGluc2lkZSB0aGUgbm9kZSBpZiBuZWNlc3NhcnkgKi9cXG4tXFx0KnpvbmVfZW5kX3BmbiA9IG1pbigqem9uZV9lbmRfcGZuLCBub2RlX2VuZF9wZm4pO1xcbi1cXHQqem9uZV9zdGFydF9wZm4gPSBtYXgoKnpvbmVfc3RhcnRfcGZuLCBub2RlX3N0YXJ0X3Bmbik7XFxuK1xcdC8qIFNpemUgWk9ORV9NT1ZBQkxFICovXFxuK1xcdGlmICh6b25lX3R5cGUgPT0gWk9ORV9NT1ZBQkxFKSB7XFxuK1xcdFxcdCp6b25lX3N0YXJ0X3BmbiA9IG1vdmFibGVfcGZuO1xcbitcXHRcXHQqem9uZV9lbmRfcGZuID0gbWluKG5vZGVfZW5kX3BmbixcXG4rXFx0XFx0XFx0YXJjaF96b25lX2hpZ2hlc3RfcG9zc2libGVfcGZuW21vdmFibGVfem9uZV0pO1xcbiBcXG4rXFx0XFx0LyogQ2hlY2sgdGhhdCB0aGlzIG5vZGUgaGFzIHBhZ2VzIHdpdGhpbiB0aGUgem9uZSdzIHJlcXVpcmVkIHJhbmdlICovXFxuK1xcdFxcdGlmICgqem9uZV9lbmRfcGZuIFxcdTAwM2Mgbm9kZV9zdGFydF9wZm4gfHxcXG4rXFx0XFx0ICAgICp6b25lX3N0YXJ0X3BmbiBcXHUwMDNlIG5vZGVfZW5kX3BmbilcXG4rXFx0XFx0XFx0cmV0dXJuIDA7XFxuK1xcbitcXHRcXHQvKiBNb3ZlIHRoZSB6b25lIHN0YXJ0IGluc2lkZSB0aGUgbm9kZSBpZiBuZWNlc3NhcnkgKi9cXG4rXFx0XFx0KnpvbmVfc3RhcnRfcGZuID0gbWF4KCp6b25lX3N0YXJ0X3Bmbiwgbm9kZV9zdGFydF9wZm4pO1xcbitcXG4rXFx0LyogVGhpcyByYW5nZSBzdGFydHMgYmVsb3cgWk9ORV9NT1ZBQkxFICovXFxuK1xcdH0gZWxzZSBpZiAoKnpvbmVfc3RhcnRfcGZuIFxcdTAwM2MgbW92YWJsZV9wZm4pIHtcXG4rXFx0XFx0KnpvbmVfZW5kX3BmbiA9IG1pbigqem9uZV9lbmRfcGZuLCBtb3ZhYmxlX3Bmbik7XFxuK1xcbitcXHQvKiBUaGlzIHdob2xlIHJhbmdlIGlzIHdpdGhpbiBaT05FX01PVkFCTEUgKi9cXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0KnpvbmVfc3RhcnRfcGZuID0gKnpvbmVfZW5kX3BmbjtcXG4rXFx0fVxcbitcXG4rb3V0OlxcbiBcXHQvKiBSZXR1cm4gdGhlIHNwYW5uZWQgcGFnZXMgKi9cXG4gXFx0cmV0dXJuICp6b25lX2VuZF9wZm4gLSAqem9uZV9zdGFydF9wZm47XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6MTI6MTUuOTkwNTk2MjM1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MjIwMjg3NzY1NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB6b25lX3NwYW5uZWRfcGFnZXNfaW5fbm9kZWAgYW5kIHJlbW92ZXMgYGFkanVzdF96b25lX3JhbmdlX2Zvcl96b25lX21vdmFibGVgLCBib3RoIG9mIHdoaWNoIGFyZSBtYXJrZWQgYXMgYF9faW5pdGAuIFRoaXMgaXMgYm9vdC10aW1lIGluaXRpYWxpemF0aW9uIGNvZGUgdGhhdCBydW5zIG9uY2UgZHVyaW5nIGtlcm5lbCBzdGFydHVwIGFuZCBpcyBub3QgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSwgbWFraW5nIGl0IHVuc3VpdGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1MjM0OWVhYjZlOTIyZjhiMjYyZjhhNmQ2MTlhNTc3MGJlMWIzNTRlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMTQgMTQ6MTI6MTMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9tbV9pbml0LmMgYi9tbS9tbV9pbml0LmNcbmluZGV4IDE1MzNhZWJhZmI2ODguLjllNmM5ZmIzNzVlYjggMTAwNjQ0XG4tLS0gYS9tbS9tbV9pbml0LmNcbisrKyBiL21tL21tX2luaXQuY1xuQEAgLTExMTksNDEgKzExMTksNiBAQCB2b2lkIF9fcmVmIG1lbW1hcF9pbml0X3pvbmVfZGV2aWNlKHN0cnVjdCB6b25lICp6b25lLFxuIH1cbiAjZW5kaWZcbiBcbi0vKlxuLSAqIFRoZSB6b25lIHJhbmdlcyBwcm92aWRlZCBieSB0aGUgYXJjaGl0ZWN0dXJlIGRvIG5vdCBpbmNsdWRlIFpPTkVfTU9WQUJMRVxuLSAqIGJlY2F1c2UgaXQgaXMgc2l6ZWQgaW5kZXBlbmRlbnQgb2YgYXJjaGl0ZWN0dXJlLiBVbmxpa2UgdGhlIG90aGVyIHpvbmVzLFxuLSAqIHRoZSBzdGFydGluZyBwb2ludCBmb3IgWk9ORV9NT1ZBQkxFIGlzIG5vdCBmaXhlZC4gSXQgbWF5IGJlIGRpZmZlcmVudFxuLSAqIGluIGVhY2ggbm9kZSBkZXBlbmRpbmcgb24gdGhlIHNpemUgb2YgZWFjaCBub2RlIGFuZCBob3cgZXZlbmx5IGtlcm5lbGNvcmVcbi0gKiBpcyBkaXN0cmlidXRlZC4gVGhpcyBoZWxwZXIgZnVuY3Rpb24gYWRqdXN0cyB0aGUgem9uZSByYW5nZXNcbi0gKiBwcm92aWRlZCBieSB0aGUgYXJjaGl0ZWN0dXJlIGZvciBhIGdpdmVuIG5vZGUgYnkgdXNpbmcgdGhlIGVuZCBvZiB0aGVcbi0gKiBoaWdoZXN0IHVzYWJsZSB6b25lIGZvciBaT05FX01PVkFCTEUuIFRoaXMgcHJlc2VydmVzIHRoZSBhc3N1bXB0aW9uIHRoYXRcbi0gKiB6b25lcyB3aXRoaW4gYSBub2RlIGFyZSBpbiBvcmRlciBvZiBtb25vdG9uaWMgaW5jcmVhc2VzIG1lbW9yeSBhZGRyZXNzZXNcbi0gKi9cbi1zdGF0aWMgdm9pZCBfX2luaXQgYWRqdXN0X3pvbmVfcmFuZ2VfZm9yX3pvbmVfbW92YWJsZShpbnQgbmlkLFxuLVx0XHRcdFx0XHR1bnNpZ25lZCBsb25nIHpvbmVfdHlwZSxcbi1cdFx0XHRcdFx0dW5zaWduZWQgbG9uZyBub2RlX2VuZF9wZm4sXG4tXHRcdFx0XHRcdHVuc2lnbmVkIGxvbmcgKnpvbmVfc3RhcnRfcGZuLFxuLVx0XHRcdFx0XHR1bnNpZ25lZCBsb25nICp6b25lX2VuZF9wZm4pXG4te1xuLVx0LyogT25seSBhZGp1c3QgaWYgWk9ORV9NT1ZBQkxFIGlzIG9uIHRoaXMgbm9kZSAqL1xuLVx0aWYgKHpvbmVfbW92YWJsZV9wZm5bbmlkXSkge1xuLVx0XHQvKiBTaXplIFpPTkVfTU9WQUJMRSAqL1xuLVx0XHRpZiAoem9uZV90eXBlID09IFpPTkVfTU9WQUJMRSkge1xuLVx0XHRcdCp6b25lX3N0YXJ0X3BmbiA9IHpvbmVfbW92YWJsZV9wZm5bbmlkXTtcbi1cdFx0XHQqem9uZV9lbmRfcGZuID0gbWluKG5vZGVfZW5kX3Bmbixcbi1cdFx0XHRcdGFyY2hfem9uZV9oaWdoZXN0X3Bvc3NpYmxlX3Bmblttb3ZhYmxlX3pvbmVdKTtcbi1cbi1cdFx0LyogQWRqdXN0IGZvciBaT05FX01PVkFCTEUgc3RhcnRpbmcgd2l0aGluIHRoaXMgcmFuZ2UgKi9cbi1cdFx0fSBlbHNlIGlmICgqem9uZV9zdGFydF9wZm4gXHUwMDNjIHpvbmVfbW92YWJsZV9wZm5bbmlkXSBcdTAwMjZcdTAwMjZcbi1cdFx0XHQgICAqem9uZV9lbmRfcGZuIFx1MDAzZSB6b25lX21vdmFibGVfcGZuW25pZF0pIHtcbi1cdFx0XHQqem9uZV9lbmRfcGZuID0gem9uZV9tb3ZhYmxlX3BmbltuaWRdO1xuLVxuLVx0XHQvKiBDaGVjayBpZiB0aGlzIHdob2xlIHJhbmdlIGlzIHdpdGhpbiBaT05FX01PVkFCTEUgKi9cbi1cdFx0fSBlbHNlIGlmICgqem9uZV9zdGFydF9wZm4gXHUwMDNlPSB6b25lX21vdmFibGVfcGZuW25pZF0pXG4tXHRcdFx0KnpvbmVfc3RhcnRfcGZuID0gKnpvbmVfZW5kX3Bmbjtcbi1cdH1cbi19XG4tXG4gLypcbiAgKiBSZXR1cm4gdGhlIG51bWJlciBvZiBob2xlcyBpbiBhIHJhbmdlIG9uIGEgbm9kZS4gSWYgbmlkIGlzIE1BWF9OVU1OT0RFUyxcbiAgKiB0aGVuIGFsbCBob2xlcyBpbiB0aGUgcmVxdWVzdGVkIHJhbmdlIHdpbGwgYmUgYWNjb3VudGVkIGZvci5cbkBAIC0xMjAzLDYgKzExNjgsMTUgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0IHpvbmVfYWJzZW50X3BhZ2VzX2luX25vZGUoaW50IG5pZCxcbiAvKlxuICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIHBhZ2VzIGEgem9uZSBzcGFucyBpbiBhIG5vZGUsIGluY2x1ZGluZyBob2xlc1xuICAqIHByZXNlbnRfcGFnZXMgPSB6b25lX3NwYW5uZWRfcGFnZXNfaW5fbm9kZSgpIC0gem9uZV9hYnNlbnRfcGFnZXNfaW5fbm9kZSgpXG4rICpcbisgKiBUaGUgem9uZSByYW5nZXMgcHJvdmlkZWQgYnkgdGhlIGFyY2hpdGVjdHVyZSBkbyBub3QgaW5jbHVkZSBaT05FX01PVkFCTEVcbisgKiBiZWNhdXNlIGl0IGlzIHNpemVkIGluZGVwZW5kZW50IG9mIGFyY2hpdGVjdHVyZS4gVW5saWtlIHRoZSBvdGhlciB6b25lcyxcbisgKiB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIFpPTkVfTU9WQUJMRSBpcyBub3QgZml4ZWQuIEl0IG1heSBiZSBkaWZmZXJlbnRcbisgKiBpbiBlYWNoIG5vZGUgZGVwZW5kaW5nIG9uIHRoZSBzaXplIG9mIGVhY2ggbm9kZSBhbmQgaG93IGV2ZW5seSBrZXJuZWxjb3JlXG4rICogaXMgZGlzdHJpYnV0ZWQuIFRoZSB6b25lIHJhbmdlcyBwcm92aWRlZCBieSB0aGUgYXJjaGl0ZWN0dXJlIGFyZSBhZGp1c3RlZFxuKyAqIGZvciBhIGdpdmVuIG5vZGUgYnkgdXNpbmcgdGhlIGVuZCBvZiB0aGUgaGlnaGVzdCB1c2FibGUgem9uZSBmb3JcbisgKiBaT05FX01PVkFCTEUuIFRoaXMgcHJlc2VydmVzIHRoZSBhc3N1bXB0aW9uIHRoYXQgem9uZXMgd2l0aGluIGEgbm9kZSBhcmVcbisgKiBpbiBvcmRlciBvZiBtb25vdG9uaWMgaW5jcmVhc2VzIG1lbW9yeSBhZGRyZXNzZXNcbiAgKi9cbiBzdGF0aWMgdW5zaWduZWQgbG9uZyBfX2luaXQgem9uZV9zcGFubmVkX3BhZ2VzX2luX25vZGUoaW50IG5pZCxcbiBcdFx0XHRcdFx0dW5zaWduZWQgbG9uZyB6b25lX3R5cGUsXG5AQCAtMTIxMywyMSArMTE4Nyw0MCBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBfX2luaXQgem9uZV9zcGFubmVkX3BhZ2VzX2luX25vZGUoaW50IG5pZCxcbiB7XG4gXHR1bnNpZ25lZCBsb25nIHpvbmVfbG93ID0gYXJjaF96b25lX2xvd2VzdF9wb3NzaWJsZV9wZm5bem9uZV90eXBlXTtcbiBcdHVuc2lnbmVkIGxvbmcgem9uZV9oaWdoID0gYXJjaF96b25lX2hpZ2hlc3RfcG9zc2libGVfcGZuW3pvbmVfdHlwZV07XG4rXHR1bnNpZ25lZCBsb25nIG1vdmFibGVfcGZuID0gem9uZV9tb3ZhYmxlX3BmbltuaWRdO1xuIFxuIFx0LyogR2V0IHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoZSB6b25lICovXG4gXHQqem9uZV9zdGFydF9wZm4gPSBjbGFtcChub2RlX3N0YXJ0X3Bmbiwgem9uZV9sb3csIHpvbmVfaGlnaCk7XG4gXHQqem9uZV9lbmRfcGZuID0gY2xhbXAobm9kZV9lbmRfcGZuLCB6b25lX2xvdywgem9uZV9oaWdoKTtcbi1cdGFkanVzdF96b25lX3JhbmdlX2Zvcl96b25lX21vdmFibGUobmlkLCB6b25lX3R5cGUsIG5vZGVfZW5kX3Bmbixcbi1cdFx0XHRcdFx0ICAgem9uZV9zdGFydF9wZm4sIHpvbmVfZW5kX3Bmbik7XG4gXG4tXHQvKiBDaGVjayB0aGF0IHRoaXMgbm9kZSBoYXMgcGFnZXMgd2l0aGluIHRoZSB6b25lJ3MgcmVxdWlyZWQgcmFuZ2UgKi9cbi1cdGlmICgqem9uZV9lbmRfcGZuIFx1MDAzYyBub2RlX3N0YXJ0X3BmbiB8fCAqem9uZV9zdGFydF9wZm4gXHUwMDNlIG5vZGVfZW5kX3Bmbilcbi1cdFx0cmV0dXJuIDA7XG4rXHQvKiBOb3RoaW5nIHRvIGFkanVzdCBpZiBaT05FX01PVkFCTEUgaXMgbm90IG9uIHRoaXMgbm9kZSAqL1xuK1x0aWYgKCFtb3ZhYmxlX3BmbilcbitcdFx0Z290byBvdXQ7XG4gXG4tXHQvKiBNb3ZlIHRoZSB6b25lIGJvdW5kYXJpZXMgaW5zaWRlIHRoZSBub2RlIGlmIG5lY2Vzc2FyeSAqL1xuLVx0KnpvbmVfZW5kX3BmbiA9IG1pbigqem9uZV9lbmRfcGZuLCBub2RlX2VuZF9wZm4pO1xuLVx0KnpvbmVfc3RhcnRfcGZuID0gbWF4KCp6b25lX3N0YXJ0X3Bmbiwgbm9kZV9zdGFydF9wZm4pO1xuK1x0LyogU2l6ZSBaT05FX01PVkFCTEUgKi9cbitcdGlmICh6b25lX3R5cGUgPT0gWk9ORV9NT1ZBQkxFKSB7XG4rXHRcdCp6b25lX3N0YXJ0X3BmbiA9IG1vdmFibGVfcGZuO1xuK1x0XHQqem9uZV9lbmRfcGZuID0gbWluKG5vZGVfZW5kX3BmbixcbitcdFx0XHRhcmNoX3pvbmVfaGlnaGVzdF9wb3NzaWJsZV9wZm5bbW92YWJsZV96b25lXSk7XG4gXG4rXHRcdC8qIENoZWNrIHRoYXQgdGhpcyBub2RlIGhhcyBwYWdlcyB3aXRoaW4gdGhlIHpvbmUncyByZXF1aXJlZCByYW5nZSAqL1xuK1x0XHRpZiAoKnpvbmVfZW5kX3BmbiBcdTAwM2Mgbm9kZV9zdGFydF9wZm4gfHxcbitcdFx0ICAgICp6b25lX3N0YXJ0X3BmbiBcdTAwM2Ugbm9kZV9lbmRfcGZuKVxuK1x0XHRcdHJldHVybiAwO1xuK1xuK1x0XHQvKiBNb3ZlIHRoZSB6b25lIHN0YXJ0IGluc2lkZSB0aGUgbm9kZSBpZiBuZWNlc3NhcnkgKi9cbitcdFx0KnpvbmVfc3RhcnRfcGZuID0gbWF4KCp6b25lX3N0YXJ0X3Bmbiwgbm9kZV9zdGFydF9wZm4pO1xuK1xuK1x0LyogVGhpcyByYW5nZSBzdGFydHMgYmVsb3cgWk9ORV9NT1ZBQkxFICovXG4rXHR9IGVsc2UgaWYgKCp6b25lX3N0YXJ0X3BmbiBcdTAwM2MgbW92YWJsZV9wZm4pIHtcbitcdFx0KnpvbmVfZW5kX3BmbiA9IG1pbigqem9uZV9lbmRfcGZuLCBtb3ZhYmxlX3Bmbik7XG4rXG4rXHQvKiBUaGlzIHdob2xlIHJhbmdlIGlzIHdpdGhpbiBaT05FX01PVkFCTEUgKi9cbitcdH0gZWxzZSB7XG4rXHRcdCp6b25lX3N0YXJ0X3BmbiA9ICp6b25lX2VuZF9wZm47XG4rXHR9XG4rXG4rb3V0OlxuIFx0LyogUmV0dXJuIHRoZSBzcGFubmVkIHBhZ2VzICovXG4gXHRyZXR1cm4gKnpvbmVfZW5kX3BmbiAtICp6b25lX3N0YXJ0X3BmbjtcbiB9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDoxMjoxNS45OTA1OTg3OTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODU2MzU3MzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2gncyBJbXBhY3Qgb24gRnV6emluZyBUYXJnZXRhYmlsaXR5KipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0J3MgbWVzc2luZyB3aXRoIGBtbS9tbV9pbml0LmNgLiBTcGVjaWZpY2FsbHksIGl0J3MgaW5saW5pbmcgdGhlIGBhZGp1c3Rfem9uZV9yYW5nZV9mb3Jfem9uZV9tb3ZhYmxlYCBmdW5jdGlvbiBpbnRvIGB6b25lX3NwYW5uZWRfcGFnZXNfaW5fbm9kZWAuIEFuZCBib3RoIG9mIHRoZXNlIGZ1bmN0aW9ucyBhcmUgbWFya2VkIHdpdGggYF9faW5pdGAuIE5vdywgYSByZWQgZmxhZyBpbW1lZGlhdGVseSBnb2VzIHVwLiBgX19pbml0YCBmdW5jdGlvbnMgYXJlLCBieSBkZWZpbml0aW9uLCBleGVjdXRlZCBvbmx5IGR1cmluZyB0aGUga2VybmVsJ3MgYm9vdCBwcm9jZXNzLCBhbmQgdGhlaXIgYXNzb2NpYXRlZCBtZW1vcnkgaXMgZnJlZWQgYWZ0ZXJ3YXJkLlxuXG5NeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGZ1enppbmcuIEZ1enppbmcgdXN1YWxseSBmb2N1c2VzIG9uIGFyZWFzIHRyaWdnZXJlZCByZXBlYXRlZGx5IGZyb20gdXNlciBzcGFjZTogc3lzdGVtIGNhbGxzLCBuZXR3b3JrIGludGVyYWN0aW9ucywgZGV2aWNlIG9wZXJhdGlvbnMg4oCTIHRoZSBzdGFuZGFyZCBhdHRhY2sgc3VyZmFjZS4gQm9vdC10aW1lIGluaXRpYWxpemF0aW9uIGlzLCB3ZWxsLCAqYm9vdC10aW1lKi4gQnVncyBpbiBpbml0aWFsaXphdGlvbiAqY2FuKiBsZWFkIHRvIGJvb3QgZmFpbHVyZXMsIGJ1dCB0aGV5J3JlIG5vdCBnZW5lcmFsbHkgYWNjZXNzaWJsZSBvbmNlIHRoZSBzeXN0ZW0gaXMgdXAgYW5kIHJ1bm5pbmcsIHNvIHRoZXkgYXJlIG5vdCBpZGVhbCBmb3IgYSBmdXp6ZXIgbGlrZSBzeXprYWxsZXIuXG5cbkJ1dCB3YWl0IGEgbWludXRlLCBpcyBpdCBhYnNvbHV0ZWx5IGltcG9zc2libGUgZm9yIGB6b25lX3NwYW5uZWRfcGFnZXNfaW5fbm9kZWAgdG8gYmUgdHJpZ2dlcmVkICphZnRlciogYm9vdD8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGl0J3Mgc3RyaWN0bHkgYF9faW5pdGAuIE9rYXksIGxldCdzIHNlZS4uLiB5ZXAsIGl0J3MgYHN0YXRpYyB1bnNpZ25lZCBsb25nIF9faW5pdCB6b25lX3NwYW5uZWRfcGFnZXNfaW5fbm9kZSguLi4pYC4gVGhhdCBzZWFscyBpdDsgaXQncyAqc3VwcG9zZWQqIHRvIGJlIHVucmVhY2hhYmxlIGFmdGVyIGJvb3QuXG5cbkhvbGQgb24sIHRoZXJlJ3MgYW5vdGhlciBwb3NzaWJpbGl0eSB0aGF0IEkgaGF2ZSB0byBhY2NvdW50IGZvci4gTWVtb3J5IGhvdHBsdWcuIElmIHRoaXMgZnVuY3Rpb24gaXMgcGFydCBvZiBtZW1vcnkgaG90cGx1ZyBjb2RlLCBpdCAqc2hvdWxkbid0KiBiZSBgX19pbml0YC4gSWYgaXQgaXMgYF9faW5pdGAgYW5kIGlzIHRoZW4gdXNlZCBpbiBob3RwbHVnLCBpdCB3aWxsIGluZXZpdGFibHkgbGVhZCB0byBhIGtlcm5lbCBwYW5pYyBpZiBpdCBpcyBjYWxsZWQgYWZ0ZXIgYm9vdC4gVGhhdCdzIGEgc2VyaW91cyBwcm9ibGVtISBJIG5lZWQgdG8gdmVyaWZ5IGlmIGB6b25lX3NwYW5uZWRfcGFnZXNfaW5fbm9kZWAgaXMgaW52b2x2ZWQgaW4gbWVtb3J5IGhvdHBsdWcuIExldCdzIGRpZyBpbiBhbmQgbWFrZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzk2LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6MTI6MjIuODQ2OTU5MTU1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MTgwMTk0NTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiem9uZV9zcGFubmVkX3BhZ2VzX2luX25vZGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vbW1faW5pdC5jPTExNTY9c3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0IHpvbmVfYWJzZW50X3BhZ2VzX2luX25vZGUoaW50IG5pZCxcXG4tLVxcbm1tL21tX2luaXQuYy0xMTY5LSAqIFJldHVybiB0aGUgbnVtYmVyIG9mIHBhZ2VzIGEgem9uZSBzcGFucyBpbiBhIG5vZGUsIGluY2x1ZGluZyBob2xlc1xcbm1tL21tX2luaXQuYzoxMTcwOiAqIHByZXNlbnRfcGFnZXMgPSB6b25lX3NwYW5uZWRfcGFnZXNfaW5fbm9kZSgpIC0gem9uZV9hYnNlbnRfcGFnZXNfaW5fbm9kZSgpXFxubW0vbW1faW5pdC5jLTExNzEtICpcXG4tLVxcbm1tL21tX2luaXQuYy0xMTgwLSAqL1xcbm1tL21tX2luaXQuYzoxMTgxOnN0YXRpYyB1bnNpZ25lZCBsb25nIF9faW5pdCB6b25lX3NwYW5uZWRfcGFnZXNfaW5fbm9kZShpbnQgbmlkLFxcbm1tL21tX2luaXQuYy0xMTgyLVxcdFxcdFxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgem9uZV90eXBlLFxcbi0tXFxubW0vbW1faW5pdC5jPTEyNzA9c3RhdGljIHZvaWQgX19pbml0IGNhbGN1bGF0ZV9ub2RlX3RvdGFscGFnZXMoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCxcXG4tLVxcbm1tL21tX2luaXQuYy0xMjgyLVxcbm1tL21tX2luaXQuYzoxMjgzOlxcdFxcdHNwYW5uZWQgPSB6b25lX3NwYW5uZWRfcGFnZXNfaW5fbm9kZShwZ2RhdC1cXHUwMDNlbm9kZV9pZCwgaSxcXG5tbS9tbV9pbml0LmMtMTI4NC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIG5vZGVfc3RhcnRfcGZuLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDoxMjoyNS41NjQ5ODQ5NjFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjYxNjQ4MTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVG90YWwgUGFnZXMgQ2FsY3VsYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgb24gdGhpcyBgY2FsY3VsYXRlX25vZGVfdG90YWxwYWdlc2AgZnVuY3Rpb24uIFJpZ2h0IG5vdywgaXQgc2VlbXMgbGlrZSB0aGUgb25seSBwbGFjZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpcyBmcm9tIHdpdGhpbiBgY2FsY3VsYXRlX25vZGVfdG90YWxwYWdlc2AgaXRzZWxmLCB3aGljaCBpcyBhbHNvIGFjdGluZyBhcyB0aGUgYF9faW5pdF9fYCBtZXRob2QuIFRoYXQncyBhIGJpdCB1bnVzdWFsLCBzbyBpdCB3YXJyYW50cyBhIGNsb3NlciBsb29rLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIHdpdGhpbiBgY2FsY3VsYXRlX25vZGVfdG90YWxwYWdlc2AuIExldCdzIGRpdmUgaW4gYW5kIHNlZSB3aGF0J3MgZ29pbmcgb24gd2l0aGluIHRoYXQgZnVuY3Rpb24uIEknbGwgZGVjb25zdHJ1Y3QgaXQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBhbmQgaW1wYWN0IG9uIHRoZSBvdmVyYWxsIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0NTcsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDoxMjozMS4yMjY2MzY3ODFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ3NjUxMDQ4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjYWxjdWxhdGVfbm9kZV90b3RhbHBhZ2VzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdD0zNzQ9R2VuZXJhbFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTQ1Ni0gIFRoZSBzdGFydCBwZm4gb2YgdGhlIHpvbmUuIEl0IGlzIGluaXRpYWxpemVkIGJ5XFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0OjQ1NzogIGBgY2FsY3VsYXRlX25vZGVfdG90YWxwYWdlcygpYGAuXFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTQ1OC1cXG4tLVxcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC00NzAtICBgYHNwYW5uZWRfcGFnZXNgYCA9IGBgem9uZV9lbmRfcGZuYGAgLSBgYHpvbmVfc3RhcnRfcGZuYGAuIEl0IGlzIGluaXRpYWxpemVkXFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0OjQ3MTogIGJ5IGBgY2FsY3VsYXRlX25vZGVfdG90YWxwYWdlcygpYGAuXFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTQ3Mi1cXG4tLVxcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC00ODAtICBgYHByZXNlbnRfcGFnZXNgYCBzaG91bGQgdXNlIGBgZ2V0X29ubGluZV9tZW1zKClgYCB0byBnZXQgYSBzdGFibGUgdmFsdWUuIEl0XFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0OjQ4MTogIGlzIGluaXRpYWxpemVkIGJ5IGBgY2FsY3VsYXRlX25vZGVfdG90YWxwYWdlcygpYGAuXFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTQ4Mi1cXG4tLVxcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC00ODYtICBgYENPTkZJR19NRU1PUllfSE9UUExVR2BgIGlzIGVuYWJsZWQgYW5kIGluaXRpYWxpemVkIGJ5XFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0OjQ4NzogIGBgY2FsY3VsYXRlX25vZGVfdG90YWxwYWdlcygpYGAuXFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTQ4OC1cXG4tLVxcbm1tL21tX2luaXQuYz0xMjQ2PXN0YXRpYyB2b2lkIF9faW5pdCBjYWxjX25yX2tlcm5lbF9wYWdlcyh2b2lkKVxcbi0tXFxubW0vbW1faW5pdC5jLTEyNjktXFxubW0vbW1faW5pdC5jOjEyNzA6c3RhdGljIHZvaWQgX19pbml0IGNhbGN1bGF0ZV9ub2RlX3RvdGFscGFnZXMoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCxcXG5tbS9tbV9pbml0LmMtMTI3MS1cXHRcXHRcXHRcXHRcXHRcXHR1bnNpZ25lZCBsb25nIG5vZGVfc3RhcnRfcGZuLFxcbi0tXFxubW0vbW1faW5pdC5jPTE2NDk9c3RhdGljIHZvaWQgX19pbml0IGZyZWVfYXJlYV9pbml0X25vZGUoaW50IG5pZClcXG4tLVxcbm1tL21tX2luaXQuYy0xNjY3LVxcbm1tL21tX2luaXQuYzoxNjY4OlxcdFxcdGNhbGN1bGF0ZV9ub2RlX3RvdGFscGFnZXMocGdkYXQsIHN0YXJ0X3BmbiwgZW5kX3Bmbik7XFxubW0vbW1faW5pdC5jLTE2NjktXFx0fSBlbHNlIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6MTI6MzMuNzAzMTUzMjM5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMxNjE3NDI5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQm9vdC1UaW1lIEluaXRpYWxpemF0aW9uLCBObyBGdXp6aW5nIE5lZWRlZCoqXG5cbkFscmlnaHQsIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBteSBpbml0aWFsIHJlYWN0aW9uIGlzIGNsZWFyOiB0aGlzIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgdGhlIG9uZSBiZWluZyBkaXNjdXNzZWQsIGlzIG9ubHkgZXZlciBjYWxsZWQgZHVyaW5nIHRoZSBib290IHByb2Nlc3MuIEl0J3MgdGllZCB0byBgZnJlZV9hcmVhX2luaXRfbm9kZWAsIGFuZCB0aGF0J3MgbWFya2VkIGFzIGBfX2luaXRgLiBUaGF0IG1lYW5zIHRoaXMgaXMgcHVyZWx5IGJvb3QtdGltZSBpbml0aWFsaXphdGlvbiBjb2RlLiBObyB3YXkgdGhpcyBnZXRzIHRvdWNoZWQgYnkgdXNlciBzcGFjZS5cblxuVGhpcyBpcyBjcml0aWNhbCBiZWNhdXNlIGl0IG1lYW5zIG5vIHN5c3RlbSBjYWxsIGZ1enplciwgbGlrZSBhIHRvb2wgSSdtIGZhbWlsaWFyIHdpdGgsIGxpa2Ugc3l6a2FsbGVyLCBpcyBnb2luZyB0byBiZSBhYmxlIHRvIHJlYWNoIGl0LiBUaGVyZSdzIGp1c3Qgbm8gcGF0aCBmcm9tIGEgdXNlci1zcGFjZSBwcm9jZXNzIHRvIGV4ZWN1dGUgdGhpcyBjb2RlIG9uY2UgdGhlIHN5c3RlbSBpcyB1cCBhbmQgcnVubmluZy4gVGhlcmVmb3JlLCBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZSwgdGhpcyBpc24ndCBhIGNhbmRpZGF0ZS4gVGhlIFwiV29ydGhGdXp6aW5nXCIgZmxhZz8gRGVmaW5pdGVseSBmYWxzZS4gV2UgY2FuIHNhZmVseSBpZ25vcmUgdGhpcyBwYXJ0IGZvciBmdXp6aW5nIHB1cnBvc2VzLiBJdCdzIGEgZGVhZCBlbmQsIGZ1enppbmctd2lzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE4NiwiT3V0cHV0VG9rZW5zIjoxMDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDoxMjozOC4wMTkzMzAzNjFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwNjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB6b25lX3NwYW5uZWRfcGFnZXNfaW5fbm9kZWAgYW5kIHJlbW92ZXMgYGFkanVzdF96b25lX3JhbmdlX2Zvcl96b25lX21vdmFibGVgLCBib3RoIG9mIHdoaWNoIGFyZSBtYXJrZWQgYXMgYF9faW5pdGAuIFRoaXMgaXMgYm9vdC10aW1lIGluaXRpYWxpemF0aW9uIGNvZGUgdGhhdCBydW5zIG9uY2UgZHVyaW5nIGtlcm5lbCBzdGFydHVwIGFuZCBpcyBub3QgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSwgbWFraW5nIGl0IHVuc3VpdGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgem9uZV9zcGFubmVkX3BhZ2VzX2luX25vZGVgIGFuZCByZW1vdmVzIGBhZGp1c3Rfem9uZV9yYW5nZV9mb3Jfem9uZV9tb3ZhYmxlYCwgYm90aCBvZiB3aGljaCBhcmUgbWFya2VkIGFzIGBfX2luaXRgLiBUaGlzIGlzIGJvb3QtdGltZSBpbml0aWFsaXphdGlvbiBjb2RlIHRoYXQgcnVucyBvbmNlIGR1cmluZyBrZXJuZWwgc3RhcnR1cCBhbmQgaXMgbm90IHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UsIG1ha2luZyBpdCB1bnN1aXRhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6MTI6MzguMDE5Mzc1MzIxWiIsIlNlcSI6OSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowdkgk5[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-14 13:39:48 +0000 UTC FinishedAt: 2026-08-14 14:12:39 +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+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHpvbmVfc3Bhbm5lZF9wYWdlc19pbl9ub2RlYCBhbmQgcmVtb3ZlcyBgYWRqdXN0X3pvbmVfcmFuZ2VfZm9yX3pvbmVfbW92YWJsZWAsIGJvdGggb2Ygd2hpY2ggYXJlIG1hcmtlZCBhcyBgX19pbml0YC4gVGhpcyBpcyBib290LXRpbWUgaW5pdGlhbGl6YXRpb24gY29kZSB0aGF0IHJ1bnMgb25jZSBkdXJpbmcga2VybmVsIHN0YXJ0dXAgYW5kIGlzIG5vdCByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlLCBtYWtpbmcgaXQgdW5zdWl0YWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6MTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1MjM0OWVhYjZlOTIyZjhiMjYyZjhhNmQ2MTlhNTc3MGJlMWIzNTRlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMTQgMTQ6MTI6MTMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vbW1faW5pdC5jIGIvbW0vbW1faW5pdC5jXG5pbmRleCAxNTMzYWViYWZiNjg4Li45ZTZjOWZiMzc1ZWI4IDEwMDY0NFxuLS0tIGEvbW0vbW1faW5pdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9tbV9pbml0LmNcbkBAIC0xMTE5LDQxICYjNDM7MTExOSw2IEBAIHZvaWQgX19yZWYgbWVtbWFwX2luaXRfem9uZV9kZXZpY2Uoc3RydWN0IHpvbmUgKnpvbmUsXG4gfVxuICNlbmRpZlxuIFxuLS8qXG4tICogVGhlIHpvbmUgcmFuZ2VzIHByb3ZpZGVkIGJ5IHRoZSBhcmNoaXRlY3R1cmUgZG8gbm90IGluY2x1ZGUgWk9ORV9NT1ZBQkxFXG4tICogYmVjYXVzZSBpdCBpcyBzaXplZCBpbmRlcGVuZGVudCBvZiBhcmNoaXRlY3R1cmUuIFVubGlrZSB0aGUgb3RoZXIgem9uZXMsXG4tICogdGhlIHN0YXJ0aW5nIHBvaW50IGZvciBaT05FX01PVkFCTEUgaXMgbm90IGZpeGVkLiBJdCBtYXkgYmUgZGlmZmVyZW50XG4tICogaW4gZWFjaCBub2RlIGRlcGVuZGluZyBvbiB0aGUgc2l6ZSBvZiBlYWNoIG5vZGUgYW5kIGhvdyBldmVubHkga2VybmVsY29yZVxuLSAqIGlzIGRpc3RyaWJ1dGVkLiBUaGlzIGhlbHBlciBmdW5jdGlvbiBhZGp1c3RzIHRoZSB6b25lIHJhbmdlc1xuLSAqIHByb3ZpZGVkIGJ5IHRoZSBhcmNoaXRlY3R1cmUgZm9yIGEgZ2l2ZW4gbm9kZSBieSB1c2luZyB0aGUgZW5kIG9mIHRoZVxuLSAqIGhpZ2hlc3QgdXNhYmxlIHpvbmUgZm9yIFpPTkVfTU9WQUJMRS4gVGhpcyBwcmVzZXJ2ZXMgdGhlIGFzc3VtcHRpb24gdGhhdFxuLSAqIHpvbmVzIHdpdGhpbiBhIG5vZGUgYXJlIGluIG9yZGVyIG9mIG1vbm90b25pYyBpbmNyZWFzZXMgbWVtb3J5IGFkZHJlc3Nlc1xuLSAqL1xuLXN0YXRpYyB2b2lkIF9faW5pdCBhZGp1c3Rfem9uZV9yYW5nZV9mb3Jfem9uZV9tb3ZhYmxlKGludCBuaWQsXG4tXHRcdFx0XHRcdHVuc2lnbmVkIGxvbmcgem9uZV90eXBlLFxuLVx0XHRcdFx0XHR1bnNpZ25lZCBsb25nIG5vZGVfZW5kX3Bmbixcbi1cdFx0XHRcdFx0dW5zaWduZWQgbG9uZyAqem9uZV9zdGFydF9wZm4sXG4tXHRcdFx0XHRcdHVuc2lnbmVkIGxvbmcgKnpvbmVfZW5kX3Bmbilcbi17XG4tXHQvKiBPbmx5IGFkanVzdCBpZiBaT05FX01PVkFCTEUgaXMgb24gdGhpcyBub2RlICovXG4tXHRpZiAoem9uZV9tb3ZhYmxlX3BmbltuaWRdKSB7XG4tXHRcdC8qIFNpemUgWk9ORV9NT1ZBQkxFICovXG4tXHRcdGlmICh6b25lX3R5cGUgPT0gWk9ORV9NT1ZBQkxFKSB7XG4tXHRcdFx0KnpvbmVfc3RhcnRfcGZuID0gem9uZV9tb3ZhYmxlX3BmbltuaWRdO1xuLVx0XHRcdCp6b25lX2VuZF9wZm4gPSBtaW4obm9kZV9lbmRfcGZuLFxuLVx0XHRcdFx0YXJjaF96b25lX2hpZ2hlc3RfcG9zc2libGVfcGZuW21vdmFibGVfem9uZV0pO1xuLVxuLVx0XHQvKiBBZGp1c3QgZm9yIFpPTkVfTU9WQUJMRSBzdGFydGluZyB3aXRoaW4gdGhpcyByYW5nZSAqL1xuLVx0XHR9IGVsc2UgaWYgKCp6b25lX3N0YXJ0X3BmbiBcdTAwM2Mgem9uZV9tb3ZhYmxlX3BmbltuaWRdIFx1MDAyNlx1MDAyNlxuLVx0XHRcdCAgICp6b25lX2VuZF9wZm4gXHUwMDNlIHpvbmVfbW92YWJsZV9wZm5bbmlkXSkge1xuLVx0XHRcdCp6b25lX2VuZF9wZm4gPSB6b25lX21vdmFibGVfcGZuW25pZF07XG4tXG4tXHRcdC8qIENoZWNrIGlmIHRoaXMgd2hvbGUgcmFuZ2UgaXMgd2l0aGluIFpPTkVfTU9WQUJMRSAqL1xuLVx0XHR9IGVsc2UgaWYgKCp6b25lX3N0YXJ0X3BmbiBcdTAwM2U9IHpvbmVfbW92YWJsZV9wZm5bbmlkXSlcbi1cdFx0XHQqem9uZV9zdGFydF9wZm4gPSAqem9uZV9lbmRfcGZuO1xuLVx0fVxuLX1cbi1cbiAvKlxuICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIGhvbGVzIGluIGEgcmFuZ2Ugb24gYSBub2RlLiBJZiBuaWQgaXMgTUFYX05VTU5PREVTLFxuICAqIHRoZW4gYWxsIGhvbGVzIGluIHRoZSByZXF1ZXN0ZWQgcmFuZ2Ugd2lsbCBiZSBhY2NvdW50ZWQgZm9yLlxuQEAgLTEyMDMsNiAmIzQzOzExNjgsMTUgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0IHpvbmVfYWJzZW50X3BhZ2VzX2luX25vZGUoaW50IG5pZCxcbiAvKlxuICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIHBhZ2VzIGEgem9uZSBzcGFucyBpbiBhIG5vZGUsIGluY2x1ZGluZyBob2xlc1xuICAqIHByZXNlbnRfcGFnZXMgPSB6b25lX3NwYW5uZWRfcGFnZXNfaW5fbm9kZSgpIC0gem9uZV9hYnNlbnRfcGFnZXNfaW5fbm9kZSgpXG4mIzQzOyAqXG4mIzQzOyAqIFRoZSB6b25lIHJhbmdlcyBwcm92aWRlZCBieSB0aGUgYXJjaGl0ZWN0dXJlIGRvIG5vdCBpbmNsdWRlIFpPTkVfTU9WQUJMRVxuJiM0MzsgKiBiZWNhdXNlIGl0IGlzIHNpemVkIGluZGVwZW5kZW50IG9mIGFyY2hpdGVjdHVyZS4gVW5saWtlIHRoZSBvdGhlciB6b25lcyxcbiYjNDM7ICogdGhlIHN0YXJ0aW5nIHBvaW50IGZvciBaT05FX01PVkFCTEUgaXMgbm90IGZpeGVkLiBJdCBtYXkgYmUgZGlmZmVyZW50XG4mIzQzOyAqIGluIGVhY2ggbm9kZSBkZXBlbmRpbmcgb24gdGhlIHNpemUgb2YgZWFjaCBub2RlIGFuZCBob3cgZXZlbmx5IGtlcm5lbGNvcmVcbiYjNDM7ICogaXMgZGlzdHJpYnV0ZWQuIFRoZSB6b25lIHJhbmdlcyBwcm92aWRlZCBieSB0aGUgYXJjaGl0ZWN0dXJlIGFyZSBhZGp1c3RlZFxuJiM0MzsgKiBmb3IgYSBnaXZlbiBub2RlIGJ5IHVzaW5nIHRoZSBlbmQgb2YgdGhlIGhpZ2hlc3QgdXNhYmxlIHpvbmUgZm9yXG4mIzQzOyAqIFpPTkVfTU9WQUJMRS4gVGhpcyBwcmVzZXJ2ZXMgdGhlIGFzc3VtcHRpb24gdGhhdCB6b25lcyB3aXRoaW4gYSBub2RlIGFyZVxuJiM0MzsgKiBpbiBvcmRlciBvZiBtb25vdG9uaWMgaW5jcmVhc2VzIG1lbW9yeSBhZGRyZXNzZXNcbiAgKi9cbiBzdGF0aWMgdW5zaWduZWQgbG9uZyBfX2luaXQgem9uZV9zcGFubmVkX3BhZ2VzX2luX25vZGUoaW50IG5pZCxcbiBcdFx0XHRcdFx0dW5zaWduZWQgbG9uZyB6b25lX3R5cGUsXG5AQCAtMTIxMywyMSAmIzQzOzExODcsNDAgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0IHpvbmVfc3Bhbm5lZF9wYWdlc19pbl9ub2RlKGludCBuaWQsXG4ge1xuIFx0dW5zaWduZWQgbG9uZyB6b25lX2xvdyA9IGFyY2hfem9uZV9sb3dlc3RfcG9zc2libGVfcGZuW3pvbmVfdHlwZV07XG4gXHR1bnNpZ25lZCBsb25nIHpvbmVfaGlnaCA9IGFyY2hfem9uZV9oaWdoZXN0X3Bvc3NpYmxlX3Bmblt6b25lX3R5cGVdO1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgbW92YWJsZV9wZm4gPSB6b25lX21vdmFibGVfcGZuW25pZF07XG4gXG4gXHQvKiBHZXQgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIHpvbmUgKi9cbiBcdCp6b25lX3N0YXJ0X3BmbiA9IGNsYW1wKG5vZGVfc3RhcnRfcGZuLCB6b25lX2xvdywgem9uZV9oaWdoKTtcbiBcdCp6b25lX2VuZF9wZm4gPSBjbGFtcChub2RlX2VuZF9wZm4sIHpvbmVfbG93LCB6b25lX2hpZ2gpO1xuLVx0YWRqdXN0X3pvbmVfcmFuZ2VfZm9yX3pvbmVfbW92YWJsZShuaWQsIHpvbmVfdHlwZSwgbm9kZV9lbmRfcGZuLFxuLVx0XHRcdFx0XHQgICB6b25lX3N0YXJ0X3Bmbiwgem9uZV9lbmRfcGZuKTtcbiBcbi1cdC8qIENoZWNrIHRoYXQgdGhpcyBub2RlIGhhcyBwYWdlcyB3aXRoaW4gdGhlIHpvbmUmIzM5O3MgcmVxdWlyZWQgcmFuZ2UgKi9cbi1cdGlmICgqem9uZV9lbmRfcGZuIFx1MDAzYyBub2RlX3N0YXJ0X3BmbiB8fCAqem9uZV9zdGFydF9wZm4gXHUwMDNlIG5vZGVfZW5kX3Bmbilcbi1cdFx0cmV0dXJuIDA7XG4mIzQzO1x0LyogTm90aGluZyB0byBhZGp1c3QgaWYgWk9ORV9NT1ZBQkxFIGlzIG5vdCBvbiB0aGlzIG5vZGUgKi9cbiYjNDM7XHRpZiAoIW1vdmFibGVfcGZuKVxuJiM0MztcdFx0Z290byBvdXQ7XG4gXG4tXHQvKiBNb3ZlIHRoZSB6b25lIGJvdW5kYXJpZXMgaW5zaWRlIHRoZSBub2RlIGlmIG5lY2Vzc2FyeSAqL1xuLVx0KnpvbmVfZW5kX3BmbiA9IG1pbigqem9uZV9lbmRfcGZuLCBub2RlX2VuZF9wZm4pO1xuLVx0KnpvbmVfc3RhcnRfcGZuID0gbWF4KCp6b25lX3N0YXJ0X3Bmbiwgbm9kZV9zdGFydF9wZm4pO1xuJiM0MztcdC8qIFNpemUgWk9ORV9NT1ZBQkxFICovXG4mIzQzO1x0aWYgKHpvbmVfdHlwZSA9PSBaT05FX01PVkFCTEUpIHtcbiYjNDM7XHRcdCp6b25lX3N0YXJ0X3BmbiA9IG1vdmFibGVfcGZuO1xuJiM0MztcdFx0KnpvbmVfZW5kX3BmbiA9IG1pbihub2RlX2VuZF9wZm4sXG4mIzQzO1x0XHRcdGFyY2hfem9uZV9oaWdoZXN0X3Bvc3NpYmxlX3Bmblttb3ZhYmxlX3pvbmVdKTtcbiBcbiYjNDM7XHRcdC8qIENoZWNrIHRoYXQgdGhpcyBub2RlIGhhcyBwYWdlcyB3aXRoaW4gdGhlIHpvbmUmIzM5O3MgcmVxdWlyZWQgcmFuZ2UgKi9cbiYjNDM7XHRcdGlmICgqem9uZV9lbmRfcGZuIFx1MDAzYyBub2RlX3N0YXJ0X3BmbiB8fFxuJiM0MztcdFx0ICAgICp6b25lX3N0YXJ0X3BmbiBcdTAwM2Ugbm9kZV9lbmRfcGZuKVxuJiM0MztcdFx0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0XHQvKiBNb3ZlIHRoZSB6b25lIHN0YXJ0IGluc2lkZSB0aGUgbm9kZSBpZiBuZWNlc3NhcnkgKi9cbiYjNDM7XHRcdCp6b25lX3N0YXJ0X3BmbiA9IG1heCgqem9uZV9zdGFydF9wZm4sIG5vZGVfc3RhcnRfcGZuKTtcbiYjNDM7XG4mIzQzO1x0LyogVGhpcyByYW5nZSBzdGFydHMgYmVsb3cgWk9ORV9NT1ZBQkxFICovXG4mIzQzO1x0fSBlbHNlIGlmICgqem9uZV9zdGFydF9wZm4gXHUwMDNjIG1vdmFibGVfcGZuKSB7XG4mIzQzO1x0XHQqem9uZV9lbmRfcGZuID0gbWluKCp6b25lX2VuZF9wZm4sIG1vdmFibGVfcGZuKTtcbiYjNDM7XG4mIzQzO1x0LyogVGhpcyB3aG9sZSByYW5nZSBpcyB3aXRoaW4gWk9ORV9NT1ZBQkxFICovXG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdCp6b25lX3N0YXJ0X3BmbiA9ICp6b25lX2VuZF9wZm47XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7b3V0OlxuIFx0LyogUmV0dXJuIHRoZSBzcGFubmVkIHBhZ2VzICovXG4gXHRyZXR1cm4gKnpvbmVfZW5kX3BmbiAtICp6b25lX3N0YXJ0X3BmbjtcbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6MTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGB6b25lX3NwYW5uZWRfcGFnZXNfaW5fbm9kZWAgYW5kIHJlbW92ZXMgYGFkanVzdF96b25lX3JhbmdlX2Zvcl96b25lX21vdmFibGVgLCBib3RoIG9mIHdoaWNoIGFyZSBtYXJrZWQgYXMgYF9faW5pdGAuIFRoaXMgaXMgYm9vdC10aW1lIGluaXRpYWxpemF0aW9uIGNvZGUgdGhhdCBydW5zIG9uY2UgZHVyaW5nIGtlcm5lbCBzdGFydHVwIGFuZCBpcyBub3QgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSwgbWFraW5nIGl0IHVuc3VpdGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTIzNDllYWI2ZTkyMmY4YjI2MmY4YTZkNjE5YTU3NzBiZTFiMzU0ZQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDE0IDE0OjEyOjEzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vbW1faW5pdC5jIGIvbW0vbW1faW5pdC5jCmluZGV4IDE1MzNhZWJhZmI2ODguLjllNmM5ZmIzNzVlYjggMTAwNjQ0Ci0tLSBhL21tL21tX2luaXQuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9tbV9pbml0LmMKQEAgLTExMTksNDEgJiM0MzsxMTE5LDYgQEAgdm9pZCBfX3JlZiBtZW1tYXBfaW5pdF96b25lX2RldmljZShzdHJ1Y3Qgem9uZSAqem9uZSwKIH0KICNlbmRpZgogCi0vKgotICogVGhlIHpvbmUgcmFuZ2VzIHByb3ZpZGVkIGJ5IHRoZSBhcmNoaXRlY3R1cmUgZG8gbm90IGluY2x1ZGUgWk9ORV9NT1ZBQkxFCi0gKiBiZWNhdXNlIGl0IGlzIHNpemVkIGluZGVwZW5kZW50IG9mIGFyY2hpdGVjdHVyZS4gVW5saWtlIHRoZSBvdGhlciB6b25lcywKLSAqIHRoZSBzdGFydGluZyBwb2ludCBmb3IgWk9ORV9NT1ZBQkxFIGlzIG5vdCBmaXhlZC4gSXQgbWF5IGJlIGRpZmZlcmVudAotICogaW4gZWFjaCBub2RlIGRlcGVuZGluZyBvbiB0aGUgc2l6ZSBvZiBlYWNoIG5vZGUgYW5kIGhvdyBldmVubHkga2VybmVsY29yZQotICogaXMgZGlzdHJpYnV0ZWQuIFRoaXMgaGVscGVyIGZ1bmN0aW9uIGFkanVzdHMgdGhlIHpvbmUgcmFuZ2VzCi0gKiBwcm92aWRlZCBieSB0aGUgYXJjaGl0ZWN0dXJlIGZvciBhIGdpdmVuIG5vZGUgYnkgdXNpbmcgdGhlIGVuZCBvZiB0aGUKLSAqIGhpZ2hlc3QgdXNhYmxlIHpvbmUgZm9yIFpPTkVfTU9WQUJMRS4gVGhpcyBwcmVzZXJ2ZXMgdGhlIGFzc3VtcHRpb24gdGhhdAotICogem9uZXMgd2l0aGluIGEgbm9kZSBhcmUgaW4gb3JkZXIgb2YgbW9ub3RvbmljIGluY3JlYXNlcyBtZW1vcnkgYWRkcmVzc2VzCi0gKi8KLXN0YXRpYyB2b2lkIF9faW5pdCBhZGp1c3Rfem9uZV9yYW5nZV9mb3Jfem9uZV9tb3ZhYmxlKGludCBuaWQsCi0JCQkJCXVuc2lnbmVkIGxvbmcgem9uZV90eXBlLAotCQkJCQl1bnNpZ25lZCBsb25nIG5vZGVfZW5kX3BmbiwKLQkJCQkJdW5zaWduZWQgbG9uZyAqem9uZV9zdGFydF9wZm4sCi0JCQkJCXVuc2lnbmVkIGxvbmcgKnpvbmVfZW5kX3BmbikKLXsKLQkvKiBPbmx5IGFkanVzdCBpZiBaT05FX01PVkFCTEUgaXMgb24gdGhpcyBub2RlICovCi0JaWYgKHpvbmVfbW92YWJsZV9wZm5bbmlkXSkgewotCQkvKiBTaXplIFpPTkVfTU9WQUJMRSAqLwotCQlpZiAoem9uZV90eXBlID09IFpPTkVfTU9WQUJMRSkgewotCQkJKnpvbmVfc3RhcnRfcGZuID0gem9uZV9tb3ZhYmxlX3BmbltuaWRdOwotCQkJKnpvbmVfZW5kX3BmbiA9IG1pbihub2RlX2VuZF9wZm4sCi0JCQkJYXJjaF96b25lX2hpZ2hlc3RfcG9zc2libGVfcGZuW21vdmFibGVfem9uZV0pOwotCi0JCS8qIEFkanVzdCBmb3IgWk9ORV9NT1ZBQkxFIHN0YXJ0aW5nIHdpdGhpbiB0aGlzIHJhbmdlICovCi0JCX0gZWxzZSBpZiAoKnpvbmVfc3RhcnRfcGZuICZsdDsgem9uZV9tb3ZhYmxlX3BmbltuaWRdICZhbXA7JmFtcDsKLQkJCSAgICp6b25lX2VuZF9wZm4gJmd0OyB6b25lX21vdmFibGVfcGZuW25pZF0pIHsKLQkJCSp6b25lX2VuZF9wZm4gPSB6b25lX21vdmFibGVfcGZuW25pZF07Ci0KLQkJLyogQ2hlY2sgaWYgdGhpcyB3aG9sZSByYW5nZSBpcyB3aXRoaW4gWk9ORV9NT1ZBQkxFICovCi0JCX0gZWxzZSBpZiAoKnpvbmVfc3RhcnRfcGZuICZndDs9IHpvbmVfbW92YWJsZV9wZm5bbmlkXSkKLQkJCSp6b25lX3N0YXJ0X3BmbiA9ICp6b25lX2VuZF9wZm47Ci0JfQotfQotCiAvKgogICogUmV0dXJuIHRoZSBudW1iZXIgb2YgaG9sZXMgaW4gYSByYW5nZSBvbiBhIG5vZGUuIElmIG5pZCBpcyBNQVhfTlVNTk9ERVMsCiAgKiB0aGVuIGFsbCBob2xlcyBpbiB0aGUgcmVxdWVzdGVkIHJhbmdlIHdpbGwgYmUgYWNjb3VudGVkIGZvci4KQEAgLTEyMDMsNiAmIzQzOzExNjgsMTUgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0IHpvbmVfYWJzZW50X3BhZ2VzX2luX25vZGUoaW50IG5pZCwKIC8qCiAgKiBSZXR1cm4gdGhlIG51bWJlciBvZiBwYWdlcyBhIHpvbmUgc3BhbnMgaW4gYSBub2RlLCBpbmNsdWRpbmcgaG9sZXMKICAqIHByZXNlbnRfcGFnZXMgPSB6b25lX3NwYW5uZWRfcGFnZXNfaW5fbm9kZSgpIC0gem9uZV9hYnNlbnRfcGFnZXNfaW5fbm9kZSgpCiYjNDM7ICoKJiM0MzsgKiBUaGUgem9uZSByYW5nZXMgcHJvdmlkZWQgYnkgdGhlIGFyY2hpdGVjdHVyZSBkbyBub3QgaW5jbHVkZSBaT05FX01PVkFCTEUKJiM0MzsgKiBiZWNhdXNlIGl0IGlzIHNpemVkIGluZGVwZW5kZW50IG9mIGFyY2hpdGVjdHVyZS4gVW5saWtlIHRoZSBvdGhlciB6b25lcywKJiM0MzsgKiB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIFpPTkVfTU9WQUJMRSBpcyBub3QgZml4ZWQuIEl0IG1heSBiZSBkaWZmZXJlbnQKJiM0MzsgKiBpbiBlYWNoIG5vZGUgZGVwZW5kaW5nIG9uIHRoZSBzaXplIG9mIGVhY2ggbm9kZSBhbmQgaG93IGV2ZW5seSBrZXJuZWxjb3JlCiYjNDM7ICogaXMgZGlzdHJpYnV0ZWQuIFRoZSB6b25lIHJhbmdlcyBwcm92aWRlZCBieSB0aGUgYXJjaGl0ZWN0dXJlIGFyZSBhZGp1c3RlZAomIzQzOyAqIGZvciBhIGdpdmVuIG5vZGUgYnkgdXNpbmcgdGhlIGVuZCBvZiB0aGUgaGlnaGVzdCB1c2FibGUgem9uZSBmb3IKJiM0MzsgKiBaT05FX01PVkFCTEUuIFRoaXMgcHJlc2VydmVzIHRoZSBhc3N1bXB0aW9uIHRoYXQgem9uZXMgd2l0aGluIGEgbm9kZSBhcmUKJiM0MzsgKiBpbiBvcmRlciBvZiBtb25vdG9uaWMgaW5jcmVhc2VzIG1lbW9yeSBhZGRyZXNzZXMKICAqLwogc3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0IHpvbmVfc3Bhbm5lZF9wYWdlc19pbl9ub2RlKGludCBuaWQsCiAJCQkJCXVuc2lnbmVkIGxvbmcgem9uZV90eXBlLApAQCAtMTIxMywyMSAmIzQzOzExODcsNDAgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0IHpvbmVfc3Bhbm5lZF9wYWdlc19pbl9ub2RlKGludCBuaWQsCiB7CiAJdW5zaWduZWQgbG9uZyB6b25lX2xvdyA9IGFyY2hfem9uZV9sb3dlc3RfcG9zc2libGVfcGZuW3pvbmVfdHlwZV07CiAJdW5zaWduZWQgbG9uZyB6b25lX2hpZ2ggPSBhcmNoX3pvbmVfaGlnaGVzdF9wb3NzaWJsZV9wZm5bem9uZV90eXBlXTsKJiM0MzsJdW5zaWduZWQgbG9uZyBtb3ZhYmxlX3BmbiA9IHpvbmVfbW92YWJsZV9wZm5bbmlkXTsKIAogCS8qIEdldCB0aGUgc3RhcnQgYW5kIGVuZCBvZiB0aGUgem9uZSAqLwogCSp6b25lX3N0YXJ0X3BmbiA9IGNsYW1wKG5vZGVfc3RhcnRfcGZuLCB6b25lX2xvdywgem9uZV9oaWdoKTsKIAkqem9uZV9lbmRfcGZuID0gY2xhbXAobm9kZV9lbmRfcGZuLCB6b25lX2xvdywgem9uZV9oaWdoKTsKLQlhZGp1c3Rfem9uZV9yYW5nZV9mb3Jfem9uZV9tb3ZhYmxlKG5pZCwgem9uZV90eXBlLCBub2RlX2VuZF9wZm4sCi0JCQkJCSAgIHpvbmVfc3RhcnRfcGZuLCB6b25lX2VuZF9wZm4pOwogCi0JLyogQ2hlY2sgdGhhdCB0aGlzIG5vZGUgaGFzIHBhZ2VzIHdpdGhpbiB0aGUgem9uZSYjMzk7cyByZXF1aXJlZCByYW5nZSAqLwotCWlmICgqem9uZV9lbmRfcGZuICZsdDsgbm9kZV9zdGFydF9wZm4gfHwgKnpvbmVfc3RhcnRfcGZuICZndDsgbm9kZV9lbmRfcGZuKQotCQlyZXR1cm4gMDsKJiM0MzsJLyogTm90aGluZyB0byBhZGp1c3QgaWYgWk9ORV9NT1ZBQkxFIGlzIG5vdCBvbiB0aGlzIG5vZGUgKi8KJiM0MzsJaWYgKCFtb3ZhYmxlX3BmbikKJiM0MzsJCWdvdG8gb3V0OwogCi0JLyogTW92ZSB0aGUgem9uZSBib3VuZGFyaWVzIGluc2lkZSB0aGUgbm9kZSBpZiBuZWNlc3NhcnkgKi8KLQkqem9uZV9lbmRfcGZuID0gbWluKCp6b25lX2VuZF9wZm4sIG5vZGVfZW5kX3Bmbik7Ci0JKnpvbmVfc3RhcnRfcGZuID0gbWF4KCp6b25lX3N0YXJ0X3Bmbiwgbm9kZV9zdGFydF9wZm4pOwomIzQzOwkvKiBTaXplIFpPTkVfTU9WQUJMRSAqLwomIzQzOwlpZiAoem9uZV90eXBlID09IFpPTkVfTU9WQUJMRSkgewomIzQzOwkJKnpvbmVfc3RhcnRfcGZuID0gbW92YWJsZV9wZm47CiYjNDM7CQkqem9uZV9lbmRfcGZuID0gbWluKG5vZGVfZW5kX3BmbiwKJiM0MzsJCQlhcmNoX3pvbmVfaGlnaGVzdF9wb3NzaWJsZV9wZm5bbW92YWJsZV96b25lXSk7CiAKJiM0MzsJCS8qIENoZWNrIHRoYXQgdGhpcyBub2RlIGhhcyBwYWdlcyB3aXRoaW4gdGhlIHpvbmUmIzM5O3MgcmVxdWlyZWQgcmFuZ2UgKi8KJiM0MzsJCWlmICgqem9uZV9lbmRfcGZuICZsdDsgbm9kZV9zdGFydF9wZm4gfHwKJiM0MzsJCSAgICAqem9uZV9zdGFydF9wZm4gJmd0OyBub2RlX2VuZF9wZm4pCiYjNDM7CQkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CQkvKiBNb3ZlIHRoZSB6b25lIHN0YXJ0IGluc2lkZSB0aGUgbm9kZSBpZiBuZWNlc3NhcnkgKi8KJiM0MzsJCSp6b25lX3N0YXJ0X3BmbiA9IG1heCgqem9uZV9zdGFydF9wZm4sIG5vZGVfc3RhcnRfcGZuKTsKJiM0MzsKJiM0MzsJLyogVGhpcyByYW5nZSBzdGFydHMgYmVsb3cgWk9ORV9NT1ZBQkxFICovCiYjNDM7CX0gZWxzZSBpZiAoKnpvbmVfc3RhcnRfcGZuICZsdDsgbW92YWJsZV9wZm4pIHsKJiM0MzsJCSp6b25lX2VuZF9wZm4gPSBtaW4oKnpvbmVfZW5kX3BmbiwgbW92YWJsZV9wZm4pOwomIzQzOwomIzQzOwkvKiBUaGlzIHdob2xlIHJhbmdlIGlzIHdpdGhpbiBaT05FX01PVkFCTEUgKi8KJiM0MzsJfSBlbHNlIHsKJiM0MzsJCSp6b25lX3N0YXJ0X3BmbiA9ICp6b25lX2VuZF9wZm47CiYjNDM7CX0KJiM0MzsKJiM0MztvdXQ6CiAJLyogUmV0dXJuIHRoZSBzcGFubmVkIHBhZ2VzICovCiAJcmV0dXJuICp6b25lX2VuZF9wZm4gLSAqem9uZV9zdGFydF9wZm47CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzOTYKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAzMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCYjMzk7cyBJbXBhY3Qgb24gRnV6emluZyBUYXJnZXRhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQmIzM5O3MgbWVzc2luZyB3aXRoIGBtbS9tbV9pbml0LmNgLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGlubGluaW5nIHRoZSBgYWRqdXN0X3pvbmVfcmFuZ2VfZm9yX3pvbmVfbW92YWJsZWAgZnVuY3Rpb24gaW50byBgem9uZV9zcGFubmVkX3BhZ2VzX2luX25vZGVgLiBBbmQgYm90aCBvZiB0aGVzZSBmdW5jdGlvbnMgYXJlIG1hcmtlZCB3aXRoIGBfX2luaXRgLiBOb3csIGEgcmVkIGZsYWcgaW1tZWRpYXRlbHkgZ29lcyB1cC4gYF9faW5pdGAgZnVuY3Rpb25zIGFyZSwgYnkgZGVmaW5pdGlvbiwgZXhlY3V0ZWQgb25seSBkdXJpbmcgdGhlIGtlcm5lbCYjMzk7cyBib290IHByb2Nlc3MsIGFuZCB0aGVpciBhc3NvY2lhdGVkIG1lbW9yeSBpcyBmcmVlZCBhZnRlcndhcmQuCgpNeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGZ1enppbmcuIEZ1enppbmcgdXN1YWxseSBmb2N1c2VzIG9uIGFyZWFzIHRyaWdnZXJlZCByZXBlYXRlZGx5IGZyb20gdXNlciBzcGFjZTogc3lzdGVtIGNhbGxzLCBuZXR3b3JrIGludGVyYWN0aW9ucywgZGV2aWNlIG9wZXJhdGlvbnMg4oCTIHRoZSBzdGFuZGFyZCBhdHRhY2sgc3VyZmFjZS4gQm9vdC10aW1lIGluaXRpYWxpemF0aW9uIGlzLCB3ZWxsLCAqYm9vdC10aW1lKi4gQnVncyBpbiBpbml0aWFsaXphdGlvbiAqY2FuKiBsZWFkIHRvIGJvb3QgZmFpbHVyZXMsIGJ1dCB0aGV5JiMzOTtyZSBub3QgZ2VuZXJhbGx5IGFjY2Vzc2libGUgb25jZSB0aGUgc3lzdGVtIGlzIHVwIGFuZCBydW5uaW5nLCBzbyB0aGV5IGFyZSBub3QgaWRlYWwgZm9yIGEgZnV6emVyIGxpa2Ugc3l6a2FsbGVyLgoKQnV0IHdhaXQgYSBtaW51dGUsIGlzIGl0IGFic29sdXRlbHkgaW1wb3NzaWJsZSBmb3IgYHpvbmVfc3Bhbm5lZF9wYWdlc19pbl9ub2RlYCB0byBiZSB0cmlnZ2VyZWQgKmFmdGVyKiBib290PyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgaXQmIzM5O3Mgc3RyaWN0bHkgYF9faW5pdGAuIE9rYXksIGxldCYjMzk7cyBzZWUuLi4geWVwLCBpdCYjMzk7cyBgc3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0IHpvbmVfc3Bhbm5lZF9wYWdlc19pbl9ub2RlKC4uLilgLiBUaGF0IHNlYWxzIGl0OyBpdCYjMzk7cyAqc3VwcG9zZWQqIHRvIGJlIHVucmVhY2hhYmxlIGFmdGVyIGJvb3QuCgpIb2xkIG9uLCB0aGVyZSYjMzk7cyBhbm90aGVyIHBvc3NpYmlsaXR5IHRoYXQgSSBoYXZlIHRvIGFjY291bnQgZm9yLiBNZW1vcnkgaG90cGx1Zy4gSWYgdGhpcyBmdW5jdGlvbiBpcyBwYXJ0IG9mIG1lbW9yeSBob3RwbHVnIGNvZGUsIGl0ICpzaG91bGRuJiMzOTt0KiBiZSBgX19pbml0YC4gSWYgaXQgaXMgYF9faW5pdGAgYW5kIGlzIHRoZW4gdXNlZCBpbiBob3RwbHVnLCBpdCB3aWxsIGluZXZpdGFibHkgbGVhZCB0byBhIGtlcm5lbCBwYW5pYyBpZiBpdCBpcyBjYWxsZWQgYWZ0ZXIgYm9vdC4gVGhhdCYjMzk7cyBhIHNlcmlvdXMgcHJvYmxlbSEgSSBuZWVkIHRvIHZlcmlmeSBpZiBgem9uZV9zcGFubmVkX3BhZ2VzX2luX25vZGVgIGlzIGludm9sdmVkIGluIG1lbW9yeSBob3RwbHVnLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBtYWtlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7em9uZV9zcGFubmVkX3BhZ2VzX2luX25vZGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vbW1faW5pdC5jPTExNTY9c3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0IHpvbmVfYWJzZW50X3BhZ2VzX2luX25vZGUoaW50IG5pZCxcbi0tXG5tbS9tbV9pbml0LmMtMTE2OS0gKiBSZXR1cm4gdGhlIG51bWJlciBvZiBwYWdlcyBhIHpvbmUgc3BhbnMgaW4gYSBub2RlLCBpbmNsdWRpbmcgaG9sZXNcbm1tL21tX2luaXQuYzoxMTcwOiAqIHByZXNlbnRfcGFnZXMgPSB6b25lX3NwYW5uZWRfcGFnZXNfaW5fbm9kZSgpIC0gem9uZV9hYnNlbnRfcGFnZXNfaW5fbm9kZSgpXG5tbS9tbV9pbml0LmMtMTE3MS0gKlxuLS1cbm1tL21tX2luaXQuYy0xMTgwLSAqL1xubW0vbW1faW5pdC5jOjExODE6c3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0IHpvbmVfc3Bhbm5lZF9wYWdlc19pbl9ub2RlKGludCBuaWQsXG5tbS9tbV9pbml0LmMtMTE4Mi1cdFx0XHRcdFx0dW5zaWduZWQgbG9uZyB6b25lX3R5cGUsXG4tLVxubW0vbW1faW5pdC5jPTEyNzA9c3RhdGljIHZvaWQgX19pbml0IGNhbGN1bGF0ZV9ub2RlX3RvdGFscGFnZXMoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCxcbi0tXG5tbS9tbV9pbml0LmMtMTI4Mi1cbm1tL21tX2luaXQuYzoxMjgzOlx0XHRzcGFubmVkID0gem9uZV9zcGFubmVkX3BhZ2VzX2luX25vZGUocGdkYXQtXHUwMDNlbm9kZV9pZCwgaSxcbm1tL21tX2luaXQuYy0xMjg0LVx0XHRcdFx0XHRcdCAgICAgbm9kZV9zdGFydF9wZm4sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ1NwoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVG90YWwgUGFnZXMgQ2FsY3VsYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGlzIGBjYWxjdWxhdGVfbm9kZV90b3RhbHBhZ2VzYCBmdW5jdGlvbi4gUmlnaHQgbm93LCBpdCBzZWVtcyBsaWtlIHRoZSBvbmx5IHBsYWNlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGlzIGZyb20gd2l0aGluIGBjYWxjdWxhdGVfbm9kZV90b3RhbHBhZ2VzYCBpdHNlbGYsIHdoaWNoIGlzIGFsc28gYWN0aW5nIGFzIHRoZSBgX19pbml0X19gIG1ldGhvZC4gVGhhdCYjMzk7cyBhIGJpdCB1bnVzdWFsLCBzbyBpdCB3YXJyYW50cyBhIGNsb3NlciBsb29rLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoaW4gYGNhbGN1bGF0ZV9ub2RlX3RvdGFscGFnZXNgLiBMZXQmIzM5O3MgZGl2ZSBpbiBhbmQgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gd2l0aGluIHRoYXQgZnVuY3Rpb24uIEkmIzM5O2xsIGRlY29uc3RydWN0IGl0IHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgYW5kIGltcGFjdCBvbiB0aGUgb3ZlcmFsbCBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NhbGN1bGF0ZV9ub2RlX3RvdGFscGFnZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0PTM3ND1HZW5lcmFsXG4tLVxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTQ1Ni0gIFRoZSBzdGFydCBwZm4gb2YgdGhlIHpvbmUuIEl0IGlzIGluaXRpYWxpemVkIGJ5XG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3Q6NDU3OiAgYGBjYWxjdWxhdGVfbm9kZV90b3RhbHBhZ2VzKClgYC5cbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC00NTgtXG4tLVxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTQ3MC0gIGBgc3Bhbm5lZF9wYWdlc2BgID0gYGB6b25lX2VuZF9wZm5gYCAtIGBgem9uZV9zdGFydF9wZm5gYC4gSXQgaXMgaW5pdGlhbGl6ZWRcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdDo0NzE6ICBieSBgYGNhbGN1bGF0ZV9ub2RlX3RvdGFscGFnZXMoKWBgLlxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTQ3Mi1cbi0tXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3QtNDgwLSAgYGBwcmVzZW50X3BhZ2VzYGAgc2hvdWxkIHVzZSBgYGdldF9vbmxpbmVfbWVtcygpYGAgdG8gZ2V0IGEgc3RhYmxlIHZhbHVlLiBJdFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0OjQ4MTogIGlzIGluaXRpYWxpemVkIGJ5IGBgY2FsY3VsYXRlX25vZGVfdG90YWxwYWdlcygpYGAuXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3QtNDgyLVxuLS1cbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC00ODYtICBgYENPTkZJR19NRU1PUllfSE9UUExVR2BgIGlzIGVuYWJsZWQgYW5kIGluaXRpYWxpemVkIGJ5XG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3Q6NDg3OiAgYGBjYWxjdWxhdGVfbm9kZV90b3RhbHBhZ2VzKClgYC5cbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC00ODgtXG4tLVxubW0vbW1faW5pdC5jPTEyNDY9c3RhdGljIHZvaWQgX19pbml0IGNhbGNfbnJfa2VybmVsX3BhZ2VzKHZvaWQpXG4tLVxubW0vbW1faW5pdC5jLTEyNjktXG5tbS9tbV9pbml0LmM6MTI3MDpzdGF0aWMgdm9pZCBfX2luaXQgY2FsY3VsYXRlX25vZGVfdG90YWxwYWdlcyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LFxubW0vbW1faW5pdC5jLTEyNzEtXHRcdFx0XHRcdFx0dW5zaWduZWQgbG9uZyBub2RlX3N0YXJ0X3Bmbixcbi0tXG5tbS9tbV9pbml0LmM9MTY0OT1zdGF0aWMgdm9pZCBfX2luaXQgZnJlZV9hcmVhX2luaXRfbm9kZShpbnQgbmlkKVxuLS1cbm1tL21tX2luaXQuYy0xNjY3LVxubW0vbW1faW5pdC5jOjE2Njg6XHRcdGNhbGN1bGF0ZV9ub2RlX3RvdGFscGFnZXMocGdkYXQsIHN0YXJ0X3BmbiwgZW5kX3Bmbik7XG5tbS9tbV9pbml0LmMtMTY2OS1cdH0gZWxzZSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE4NgoJCQkJCQkJb3V0cHV0OiAxMDAKCQkJCQkJCXRob3VnaHRzOiA3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipCb290LVRpbWUgSW5pdGlhbGl6YXRpb24sIE5vIEZ1enppbmcgTmVlZGVkKioKCkFscmlnaHQsIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBteSBpbml0aWFsIHJlYWN0aW9uIGlzIGNsZWFyOiB0aGlzIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgdGhlIG9uZSBiZWluZyBkaXNjdXNzZWQsIGlzIG9ubHkgZXZlciBjYWxsZWQgZHVyaW5nIHRoZSBib290IHByb2Nlc3MuIEl0JiMzOTtzIHRpZWQgdG8gYGZyZWVfYXJlYV9pbml0X25vZGVgLCBhbmQgdGhhdCYjMzk7cyBtYXJrZWQgYXMgYF9faW5pdGAuIFRoYXQgbWVhbnMgdGhpcyBpcyBwdXJlbHkgYm9vdC10aW1lIGluaXRpYWxpemF0aW9uIGNvZGUuIE5vIHdheSB0aGlzIGdldHMgdG91Y2hlZCBieSB1c2VyIHNwYWNlLgoKVGhpcyBpcyBjcml0aWNhbCBiZWNhdXNlIGl0IG1lYW5zIG5vIHN5c3RlbSBjYWxsIGZ1enplciwgbGlrZSBhIHRvb2wgSSYjMzk7bSBmYW1pbGlhciB3aXRoLCBsaWtlIHN5emthbGxlciwgaXMgZ29pbmcgdG8gYmUgYWJsZSB0byByZWFjaCBpdC4gVGhlcmUmIzM5O3MganVzdCBubyBwYXRoIGZyb20gYSB1c2VyLXNwYWNlIHByb2Nlc3MgdG8gZXhlY3V0ZSB0aGlzIGNvZGUgb25jZSB0aGUgc3lzdGVtIGlzIHVwIGFuZCBydW5uaW5nLiBUaGVyZWZvcmUsIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCB0aGlzIGlzbiYjMzk7dCBhIGNhbmRpZGF0ZS4gVGhlICYjMzQ7V29ydGhGdXp6aW5nJiMzNDsgZmxhZz8gRGVmaW5pdGVseSBmYWxzZS4gV2UgY2FuIHNhZmVseSBpZ25vcmUgdGhpcyBwYXJ0IGZvciBmdXp6aW5nIHB1cnBvc2VzLiBJdCYjMzk7cyBhIGRlYWQgZW5kLCBmdXp6aW5nLXdpc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgem9uZV9zcGFubmVkX3BhZ2VzX2luX25vZGVgIGFuZCByZW1vdmVzIGBhZGp1c3Rfem9uZV9yYW5nZV9mb3Jfem9uZV9tb3ZhYmxlYCwgYm90aCBvZiB3aGljaCBhcmUgbWFya2VkIGFzIGBfX2luaXRgLiBUaGlzIGlzIGJvb3QtdGltZSBpbml0aWFsaXphdGlvbiBjb2RlIHRoYXQgcnVucyBvbmNlIGR1cmluZyBrZXJuZWwgc3RhcnR1cCBhbmQgaXMgbm90IHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UsIG1ha2luZyBpdCB1bnN1aXRhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHpvbmVfc3Bhbm5lZF9wYWdlc19pbl9ub2RlYCBhbmQgcmVtb3ZlcyBgYWRqdXN0X3pvbmVfcmFuZ2VfZm9yX3pvbmVfbW92YWJsZWAsIGJvdGggb2Ygd2hpY2ggYXJlIG1hcmtlZCBhcyBgX19pbml0YC4gVGhpcyBpcyBib290LXRpbWUgaW5pdGlhbGl6YXRpb24gY29kZSB0aGF0IHJ1bnMgb25jZSBkdXJpbmcga2VybmVsIHN0YXJ0dXAgYW5kIGlzIG5vdCByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlLCBtYWtpbmcgaXQgdW5zdWl0YWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6MTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjEyOjE0LjY5NjQ3NDI1N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMzIyOTIwMjY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHpvbmVfc3Bhbm5lZF9wYWdlc19pbl9ub2RlYCBhbmQgcmVtb3ZlcyBgYWRqdXN0X3pvbmVfcmFuZ2VfZm9yX3pvbmVfbW92YWJsZWAsIGJvdGggb2Ygd2hpY2ggYXJlIG1hcmtlZCBhcyBgX19pbml0YC4gVGhpcyBpcyBib290LXRpbWUgaW5pdGlhbGl6YXRpb24gY29kZSB0aGF0IHJ1bnMgb25jZSBkdXJpbmcga2VybmVsIHN0YXJ0dXAgYW5kIGlzIG5vdCByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlLCBtYWtpbmcgaXQgdW5zdWl0YWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjEyOjE0LjY5NjQ4MjgzN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI5MjkxNDA4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDUyMzQ5ZWFiNmU5MjJmOGIyNjJmOGE2ZDYxOWE1NzcwYmUxYjM1NGVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBBdWcgMTQgMTQ6MTI6MTMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbW0vbW1faW5pdC5jIGIvbW0vbW1faW5pdC5jXFxuaW5kZXggMTUzM2FlYmFmYjY4OC4uOWU2YzlmYjM3NWViOCAxMDA2NDRcXG4tLS0gYS9tbS9tbV9pbml0LmNcXG4rKysgYi9tbS9tbV9pbml0LmNcXG5AQCAtMTExOSw0MSArMTExOSw2IEBAIHZvaWQgX19yZWYgbWVtbWFwX2luaXRfem9uZV9kZXZpY2Uoc3RydWN0IHpvbmUgKnpvbmUsXFxuIH1cXG4gI2VuZGlmXFxuIFxcbi0vKlxcbi0gKiBUaGUgem9uZSByYW5nZXMgcHJvdmlkZWQgYnkgdGhlIGFyY2hpdGVjdHVyZSBkbyBub3QgaW5jbHVkZSBaT05FX01PVkFCTEVcXG4tICogYmVjYXVzZSBpdCBpcyBzaXplZCBpbmRlcGVuZGVudCBvZiBhcmNoaXRlY3R1cmUuIFVubGlrZSB0aGUgb3RoZXIgem9uZXMsXFxuLSAqIHRoZSBzdGFydGluZyBwb2ludCBmb3IgWk9ORV9NT1ZBQkxFIGlzIG5vdCBmaXhlZC4gSXQgbWF5IGJlIGRpZmZlcmVudFxcbi0gKiBpbiBlYWNoIG5vZGUgZGVwZW5kaW5nIG9uIHRoZSBzaXplIG9mIGVhY2ggbm9kZSBhbmQgaG93IGV2ZW5seSBrZXJuZWxjb3JlXFxuLSAqIGlzIGRpc3RyaWJ1dGVkLiBUaGlzIGhlbHBlciBmdW5jdGlvbiBhZGp1c3RzIHRoZSB6b25lIHJhbmdlc1xcbi0gKiBwcm92aWRlZCBieSB0aGUgYXJjaGl0ZWN0dXJlIGZvciBhIGdpdmVuIG5vZGUgYnkgdXNpbmcgdGhlIGVuZCBvZiB0aGVcXG4tICogaGlnaGVzdCB1c2FibGUgem9uZSBmb3IgWk9ORV9NT1ZBQkxFLiBUaGlzIHByZXNlcnZlcyB0aGUgYXNzdW1wdGlvbiB0aGF0XFxuLSAqIHpvbmVzIHdpdGhpbiBhIG5vZGUgYXJlIGluIG9yZGVyIG9mIG1vbm90b25pYyBpbmNyZWFzZXMgbWVtb3J5IGFkZHJlc3Nlc1xcbi0gKi9cXG4tc3RhdGljIHZvaWQgX19pbml0IGFkanVzdF96b25lX3JhbmdlX2Zvcl96b25lX21vdmFibGUoaW50IG5pZCxcXG4tXFx0XFx0XFx0XFx0XFx0dW5zaWduZWQgbG9uZyB6b25lX3R5cGUsXFxuLVxcdFxcdFxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgbm9kZV9lbmRfcGZuLFxcbi1cXHRcXHRcXHRcXHRcXHR1bnNpZ25lZCBsb25nICp6b25lX3N0YXJ0X3BmbixcXG4tXFx0XFx0XFx0XFx0XFx0dW5zaWduZWQgbG9uZyAqem9uZV9lbmRfcGZuKVxcbi17XFxuLVxcdC8qIE9ubHkgYWRqdXN0IGlmIFpPTkVfTU9WQUJMRSBpcyBvbiB0aGlzIG5vZGUgKi9cXG4tXFx0aWYgKHpvbmVfbW92YWJsZV9wZm5bbmlkXSkge1xcbi1cXHRcXHQvKiBTaXplIFpPTkVfTU9WQUJMRSAqL1xcbi1cXHRcXHRpZiAoem9uZV90eXBlID09IFpPTkVfTU9WQUJMRSkge1xcbi1cXHRcXHRcXHQqem9uZV9zdGFydF9wZm4gPSB6b25lX21vdmFibGVfcGZuW25pZF07XFxuLVxcdFxcdFxcdCp6b25lX2VuZF9wZm4gPSBtaW4obm9kZV9lbmRfcGZuLFxcbi1cXHRcXHRcXHRcXHRhcmNoX3pvbmVfaGlnaGVzdF9wb3NzaWJsZV9wZm5bbW92YWJsZV96b25lXSk7XFxuLVxcbi1cXHRcXHQvKiBBZGp1c3QgZm9yIFpPTkVfTU9WQUJMRSBzdGFydGluZyB3aXRoaW4gdGhpcyByYW5nZSAqL1xcbi1cXHRcXHR9IGVsc2UgaWYgKCp6b25lX3N0YXJ0X3BmbiBcXHUwMDNjIHpvbmVfbW92YWJsZV9wZm5bbmlkXSBcXHUwMDI2XFx1MDAyNlxcbi1cXHRcXHRcXHQgICAqem9uZV9lbmRfcGZuIFxcdTAwM2Ugem9uZV9tb3ZhYmxlX3BmbltuaWRdKSB7XFxuLVxcdFxcdFxcdCp6b25lX2VuZF9wZm4gPSB6b25lX21vdmFibGVfcGZuW25pZF07XFxuLVxcbi1cXHRcXHQvKiBDaGVjayBpZiB0aGlzIHdob2xlIHJhbmdlIGlzIHdpdGhpbiBaT05FX01PVkFCTEUgKi9cXG4tXFx0XFx0fSBlbHNlIGlmICgqem9uZV9zdGFydF9wZm4gXFx1MDAzZT0gem9uZV9tb3ZhYmxlX3BmbltuaWRdKVxcbi1cXHRcXHRcXHQqem9uZV9zdGFydF9wZm4gPSAqem9uZV9lbmRfcGZuO1xcbi1cXHR9XFxuLX1cXG4tXFxuIC8qXFxuICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIGhvbGVzIGluIGEgcmFuZ2Ugb24gYSBub2RlLiBJZiBuaWQgaXMgTUFYX05VTU5PREVTLFxcbiAgKiB0aGVuIGFsbCBob2xlcyBpbiB0aGUgcmVxdWVzdGVkIHJhbmdlIHdpbGwgYmUgYWNjb3VudGVkIGZvci5cXG5AQCAtMTIwMyw2ICsxMTY4LDE1IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIF9faW5pdCB6b25lX2Fic2VudF9wYWdlc19pbl9ub2RlKGludCBuaWQsXFxuIC8qXFxuICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIHBhZ2VzIGEgem9uZSBzcGFucyBpbiBhIG5vZGUsIGluY2x1ZGluZyBob2xlc1xcbiAgKiBwcmVzZW50X3BhZ2VzID0gem9uZV9zcGFubmVkX3BhZ2VzX2luX25vZGUoKSAtIHpvbmVfYWJzZW50X3BhZ2VzX2luX25vZGUoKVxcbisgKlxcbisgKiBUaGUgem9uZSByYW5nZXMgcHJvdmlkZWQgYnkgdGhlIGFyY2hpdGVjdHVyZSBkbyBub3QgaW5jbHVkZSBaT05FX01PVkFCTEVcXG4rICogYmVjYXVzZSBpdCBpcyBzaXplZCBpbmRlcGVuZGVudCBvZiBhcmNoaXRlY3R1cmUuIFVubGlrZSB0aGUgb3RoZXIgem9uZXMsXFxuKyAqIHRoZSBzdGFydGluZyBwb2ludCBmb3IgWk9ORV9NT1ZBQkxFIGlzIG5vdCBmaXhlZC4gSXQgbWF5IGJlIGRpZmZlcmVudFxcbisgKiBpbiBlYWNoIG5vZGUgZGVwZW5kaW5nIG9uIHRoZSBzaXplIG9mIGVhY2ggbm9kZSBhbmQgaG93IGV2ZW5seSBrZXJuZWxjb3JlXFxuKyAqIGlzIGRpc3RyaWJ1dGVkLiBUaGUgem9uZSByYW5nZXMgcHJvdmlkZWQgYnkgdGhlIGFyY2hpdGVjdHVyZSBhcmUgYWRqdXN0ZWRcXG4rICogZm9yIGEgZ2l2ZW4gbm9kZSBieSB1c2luZyB0aGUgZW5kIG9mIHRoZSBoaWdoZXN0IHVzYWJsZSB6b25lIGZvclxcbisgKiBaT05FX01PVkFCTEUuIFRoaXMgcHJlc2VydmVzIHRoZSBhc3N1bXB0aW9uIHRoYXQgem9uZXMgd2l0aGluIGEgbm9kZSBhcmVcXG4rICogaW4gb3JkZXIgb2YgbW9ub3RvbmljIGluY3JlYXNlcyBtZW1vcnkgYWRkcmVzc2VzXFxuICAqL1xcbiBzdGF0aWMgdW5zaWduZWQgbG9uZyBfX2luaXQgem9uZV9zcGFubmVkX3BhZ2VzX2luX25vZGUoaW50IG5pZCxcXG4gXFx0XFx0XFx0XFx0XFx0dW5zaWduZWQgbG9uZyB6b25lX3R5cGUsXFxuQEAgLTEyMTMsMjEgKzExODcsNDAgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0IHpvbmVfc3Bhbm5lZF9wYWdlc19pbl9ub2RlKGludCBuaWQsXFxuIHtcXG4gXFx0dW5zaWduZWQgbG9uZyB6b25lX2xvdyA9IGFyY2hfem9uZV9sb3dlc3RfcG9zc2libGVfcGZuW3pvbmVfdHlwZV07XFxuIFxcdHVuc2lnbmVkIGxvbmcgem9uZV9oaWdoID0gYXJjaF96b25lX2hpZ2hlc3RfcG9zc2libGVfcGZuW3pvbmVfdHlwZV07XFxuK1xcdHVuc2lnbmVkIGxvbmcgbW92YWJsZV9wZm4gPSB6b25lX21vdmFibGVfcGZuW25pZF07XFxuIFxcbiBcXHQvKiBHZXQgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIHpvbmUgKi9cXG4gXFx0KnpvbmVfc3RhcnRfcGZuID0gY2xhbXAobm9kZV9zdGFydF9wZm4sIHpvbmVfbG93LCB6b25lX2hpZ2gpO1xcbiBcXHQqem9uZV9lbmRfcGZuID0gY2xhbXAobm9kZV9lbmRfcGZuLCB6b25lX2xvdywgem9uZV9oaWdoKTtcXG4tXFx0YWRqdXN0X3pvbmVfcmFuZ2VfZm9yX3pvbmVfbW92YWJsZShuaWQsIHpvbmVfdHlwZSwgbm9kZV9lbmRfcGZuLFxcbi1cXHRcXHRcXHRcXHRcXHQgICB6b25lX3N0YXJ0X3Bmbiwgem9uZV9lbmRfcGZuKTtcXG4gXFxuLVxcdC8qIENoZWNrIHRoYXQgdGhpcyBub2RlIGhhcyBwYWdlcyB3aXRoaW4gdGhlIHpvbmUncyByZXF1aXJlZCByYW5nZSAqL1xcbi1cXHRpZiAoKnpvbmVfZW5kX3BmbiBcXHUwMDNjIG5vZGVfc3RhcnRfcGZuIHx8ICp6b25lX3N0YXJ0X3BmbiBcXHUwMDNlIG5vZGVfZW5kX3BmbilcXG4tXFx0XFx0cmV0dXJuIDA7XFxuK1xcdC8qIE5vdGhpbmcgdG8gYWRqdXN0IGlmIFpPTkVfTU9WQUJMRSBpcyBub3Qgb24gdGhpcyBub2RlICovXFxuK1xcdGlmICghbW92YWJsZV9wZm4pXFxuK1xcdFxcdGdvdG8gb3V0O1xcbiBcXG4tXFx0LyogTW92ZSB0aGUgem9uZSBib3VuZGFyaWVzIGluc2lkZSB0aGUgbm9kZSBpZiBuZWNlc3NhcnkgKi9cXG4tXFx0KnpvbmVfZW5kX3BmbiA9IG1pbigqem9uZV9lbmRfcGZuLCBub2RlX2VuZF9wZm4pO1xcbi1cXHQqem9uZV9zdGFydF9wZm4gPSBtYXgoKnpvbmVfc3RhcnRfcGZuLCBub2RlX3N0YXJ0X3Bmbik7XFxuK1xcdC8qIFNpemUgWk9ORV9NT1ZBQkxFICovXFxuK1xcdGlmICh6b25lX3R5cGUgPT0gWk9ORV9NT1ZBQkxFKSB7XFxuK1xcdFxcdCp6b25lX3N0YXJ0X3BmbiA9IG1vdmFibGVfcGZuO1xcbitcXHRcXHQqem9uZV9lbmRfcGZuID0gbWluKG5vZGVfZW5kX3BmbixcXG4rXFx0XFx0XFx0YXJjaF96b25lX2hpZ2hlc3RfcG9zc2libGVfcGZuW21vdmFibGVfem9uZV0pO1xcbiBcXG4rXFx0XFx0LyogQ2hlY2sgdGhhdCB0aGlzIG5vZGUgaGFzIHBhZ2VzIHdpdGhpbiB0aGUgem9uZSdzIHJlcXVpcmVkIHJhbmdlICovXFxuK1xcdFxcdGlmICgqem9uZV9lbmRfcGZuIFxcdTAwM2Mgbm9kZV9zdGFydF9wZm4gfHxcXG4rXFx0XFx0ICAgICp6b25lX3N0YXJ0X3BmbiBcXHUwMDNlIG5vZGVfZW5kX3BmbilcXG4rXFx0XFx0XFx0cmV0dXJuIDA7XFxuK1xcbitcXHRcXHQvKiBNb3ZlIHRoZSB6b25lIHN0YXJ0IGluc2lkZSB0aGUgbm9kZSBpZiBuZWNlc3NhcnkgKi9cXG4rXFx0XFx0KnpvbmVfc3RhcnRfcGZuID0gbWF4KCp6b25lX3N0YXJ0X3Bmbiwgbm9kZV9zdGFydF9wZm4pO1xcbitcXG4rXFx0LyogVGhpcyByYW5nZSBzdGFydHMgYmVsb3cgWk9ORV9NT1ZBQkxFICovXFxuK1xcdH0gZWxzZSBpZiAoKnpvbmVfc3RhcnRfcGZuIFxcdTAwM2MgbW92YWJsZV9wZm4pIHtcXG4rXFx0XFx0KnpvbmVfZW5kX3BmbiA9IG1pbigqem9uZV9lbmRfcGZuLCBtb3ZhYmxlX3Bmbik7XFxuK1xcbitcXHQvKiBUaGlzIHdob2xlIHJhbmdlIGlzIHdpdGhpbiBaT05FX01PVkFCTEUgKi9cXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0KnpvbmVfc3RhcnRfcGZuID0gKnpvbmVfZW5kX3BmbjtcXG4rXFx0fVxcbitcXG4rb3V0OlxcbiBcXHQvKiBSZXR1cm4gdGhlIHNwYW5uZWQgcGFnZXMgKi9cXG4gXFx0cmV0dXJuICp6b25lX2VuZF9wZm4gLSAqem9uZV9zdGFydF9wZm47XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6MTI6MTUuOTkwNTk2MjM1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MjIwMjg3NzY1NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB6b25lX3NwYW5uZWRfcGFnZXNfaW5fbm9kZWAgYW5kIHJlbW92ZXMgYGFkanVzdF96b25lX3JhbmdlX2Zvcl96b25lX21vdmFibGVgLCBib3RoIG9mIHdoaWNoIGFyZSBtYXJrZWQgYXMgYF9faW5pdGAuIFRoaXMgaXMgYm9vdC10aW1lIGluaXRpYWxpemF0aW9uIGNvZGUgdGhhdCBydW5zIG9uY2UgZHVyaW5nIGtlcm5lbCBzdGFydHVwIGFuZCBpcyBub3QgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSwgbWFraW5nIGl0IHVuc3VpdGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1MjM0OWVhYjZlOTIyZjhiMjYyZjhhNmQ2MTlhNTc3MGJlMWIzNTRlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMTQgMTQ6MTI6MTMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9tbV9pbml0LmMgYi9tbS9tbV9pbml0LmNcbmluZGV4IDE1MzNhZWJhZmI2ODguLjllNmM5ZmIzNzVlYjggMTAwNjQ0XG4tLS0gYS9tbS9tbV9pbml0LmNcbisrKyBiL21tL21tX2luaXQuY1xuQEAgLTExMTksNDEgKzExMTksNiBAQCB2b2lkIF9fcmVmIG1lbW1hcF9pbml0X3pvbmVfZGV2aWNlKHN0cnVjdCB6b25lICp6b25lLFxuIH1cbiAjZW5kaWZcbiBcbi0vKlxuLSAqIFRoZSB6b25lIHJhbmdlcyBwcm92aWRlZCBieSB0aGUgYXJjaGl0ZWN0dXJlIGRvIG5vdCBpbmNsdWRlIFpPTkVfTU9WQUJMRVxuLSAqIGJlY2F1c2UgaXQgaXMgc2l6ZWQgaW5kZXBlbmRlbnQgb2YgYXJjaGl0ZWN0dXJlLiBVbmxpa2UgdGhlIG90aGVyIHpvbmVzLFxuLSAqIHRoZSBzdGFydGluZyBwb2ludCBmb3IgWk9ORV9NT1ZBQkxFIGlzIG5vdCBmaXhlZC4gSXQgbWF5IGJlIGRpZmZlcmVudFxuLSAqIGluIGVhY2ggbm9kZSBkZXBlbmRpbmcgb24gdGhlIHNpemUgb2YgZWFjaCBub2RlIGFuZCBob3cgZXZlbmx5IGtlcm5lbGNvcmVcbi0gKiBpcyBkaXN0cmlidXRlZC4gVGhpcyBoZWxwZXIgZnVuY3Rpb24gYWRqdXN0cyB0aGUgem9uZSByYW5nZXNcbi0gKiBwcm92aWRlZCBieSB0aGUgYXJjaGl0ZWN0dXJlIGZvciBhIGdpdmVuIG5vZGUgYnkgdXNpbmcgdGhlIGVuZCBvZiB0aGVcbi0gKiBoaWdoZXN0IHVzYWJsZSB6b25lIGZvciBaT05FX01PVkFCTEUuIFRoaXMgcHJlc2VydmVzIHRoZSBhc3N1bXB0aW9uIHRoYXRcbi0gKiB6b25lcyB3aXRoaW4gYSBub2RlIGFyZSBpbiBvcmRlciBvZiBtb25vdG9uaWMgaW5jcmVhc2VzIG1lbW9yeSBhZGRyZXNzZXNcbi0gKi9cbi1zdGF0aWMgdm9pZCBfX2luaXQgYWRqdXN0X3pvbmVfcmFuZ2VfZm9yX3pvbmVfbW92YWJsZShpbnQgbmlkLFxuLVx0XHRcdFx0XHR1bnNpZ25lZCBsb25nIHpvbmVfdHlwZSxcbi1cdFx0XHRcdFx0dW5zaWduZWQgbG9uZyBub2RlX2VuZF9wZm4sXG4tXHRcdFx0XHRcdHVuc2lnbmVkIGxvbmcgKnpvbmVfc3RhcnRfcGZuLFxuLVx0XHRcdFx0XHR1bnNpZ25lZCBsb25nICp6b25lX2VuZF9wZm4pXG4te1xuLVx0LyogT25seSBhZGp1c3QgaWYgWk9ORV9NT1ZBQkxFIGlzIG9uIHRoaXMgbm9kZSAqL1xuLVx0aWYgKHpvbmVfbW92YWJsZV9wZm5bbmlkXSkge1xuLVx0XHQvKiBTaXplIFpPTkVfTU9WQUJMRSAqL1xuLVx0XHRpZiAoem9uZV90eXBlID09IFpPTkVfTU9WQUJMRSkge1xuLVx0XHRcdCp6b25lX3N0YXJ0X3BmbiA9IHpvbmVfbW92YWJsZV9wZm5bbmlkXTtcbi1cdFx0XHQqem9uZV9lbmRfcGZuID0gbWluKG5vZGVfZW5kX3Bmbixcbi1cdFx0XHRcdGFyY2hfem9uZV9oaWdoZXN0X3Bvc3NpYmxlX3Bmblttb3ZhYmxlX3pvbmVdKTtcbi1cbi1cdFx0LyogQWRqdXN0IGZvciBaT05FX01PVkFCTEUgc3RhcnRpbmcgd2l0aGluIHRoaXMgcmFuZ2UgKi9cbi1cdFx0fSBlbHNlIGlmICgqem9uZV9zdGFydF9wZm4gXHUwMDNjIHpvbmVfbW92YWJsZV9wZm5bbmlkXSBcdTAwMjZcdTAwMjZcbi1cdFx0XHQgICAqem9uZV9lbmRfcGZuIFx1MDAzZSB6b25lX21vdmFibGVfcGZuW25pZF0pIHtcbi1cdFx0XHQqem9uZV9lbmRfcGZuID0gem9uZV9tb3ZhYmxlX3BmbltuaWRdO1xuLVxuLVx0XHQvKiBDaGVjayBpZiB0aGlzIHdob2xlIHJhbmdlIGlzIHdpdGhpbiBaT05FX01PVkFCTEUgKi9cbi1cdFx0fSBlbHNlIGlmICgqem9uZV9zdGFydF9wZm4gXHUwMDNlPSB6b25lX21vdmFibGVfcGZuW25pZF0pXG4tXHRcdFx0KnpvbmVfc3RhcnRfcGZuID0gKnpvbmVfZW5kX3Bmbjtcbi1cdH1cbi19XG4tXG4gLypcbiAgKiBSZXR1cm4gdGhlIG51bWJlciBvZiBob2xlcyBpbiBhIHJhbmdlIG9uIGEgbm9kZS4gSWYgbmlkIGlzIE1BWF9OVU1OT0RFUyxcbiAgKiB0aGVuIGFsbCBob2xlcyBpbiB0aGUgcmVxdWVzdGVkIHJhbmdlIHdpbGwgYmUgYWNjb3VudGVkIGZvci5cbkBAIC0xMjAzLDYgKzExNjgsMTUgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0IHpvbmVfYWJzZW50X3BhZ2VzX2luX25vZGUoaW50IG5pZCxcbiAvKlxuICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIHBhZ2VzIGEgem9uZSBzcGFucyBpbiBhIG5vZGUsIGluY2x1ZGluZyBob2xlc1xuICAqIHByZXNlbnRfcGFnZXMgPSB6b25lX3NwYW5uZWRfcGFnZXNfaW5fbm9kZSgpIC0gem9uZV9hYnNlbnRfcGFnZXNfaW5fbm9kZSgpXG4rICpcbisgKiBUaGUgem9uZSByYW5nZXMgcHJvdmlkZWQgYnkgdGhlIGFyY2hpdGVjdHVyZSBkbyBub3QgaW5jbHVkZSBaT05FX01PVkFCTEVcbisgKiBiZWNhdXNlIGl0IGlzIHNpemVkIGluZGVwZW5kZW50IG9mIGFyY2hpdGVjdHVyZS4gVW5saWtlIHRoZSBvdGhlciB6b25lcyxcbisgKiB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIFpPTkVfTU9WQUJMRSBpcyBub3QgZml4ZWQuIEl0IG1heSBiZSBkaWZmZXJlbnRcbisgKiBpbiBlYWNoIG5vZGUgZGVwZW5kaW5nIG9uIHRoZSBzaXplIG9mIGVhY2ggbm9kZSBhbmQgaG93IGV2ZW5seSBrZXJuZWxjb3JlXG4rICogaXMgZGlzdHJpYnV0ZWQuIFRoZSB6b25lIHJhbmdlcyBwcm92aWRlZCBieSB0aGUgYXJjaGl0ZWN0dXJlIGFyZSBhZGp1c3RlZFxuKyAqIGZvciBhIGdpdmVuIG5vZGUgYnkgdXNpbmcgdGhlIGVuZCBvZiB0aGUgaGlnaGVzdCB1c2FibGUgem9uZSBmb3JcbisgKiBaT05FX01PVkFCTEUuIFRoaXMgcHJlc2VydmVzIHRoZSBhc3N1bXB0aW9uIHRoYXQgem9uZXMgd2l0aGluIGEgbm9kZSBhcmVcbisgKiBpbiBvcmRlciBvZiBtb25vdG9uaWMgaW5jcmVhc2VzIG1lbW9yeSBhZGRyZXNzZXNcbiAgKi9cbiBzdGF0aWMgdW5zaWduZWQgbG9uZyBfX2luaXQgem9uZV9zcGFubmVkX3BhZ2VzX2luX25vZGUoaW50IG5pZCxcbiBcdFx0XHRcdFx0dW5zaWduZWQgbG9uZyB6b25lX3R5cGUsXG5AQCAtMTIxMywyMSArMTE4Nyw0MCBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBfX2luaXQgem9uZV9zcGFubmVkX3BhZ2VzX2luX25vZGUoaW50IG5pZCxcbiB7XG4gXHR1bnNpZ25lZCBsb25nIHpvbmVfbG93ID0gYXJjaF96b25lX2xvd2VzdF9wb3NzaWJsZV9wZm5bem9uZV90eXBlXTtcbiBcdHVuc2lnbmVkIGxvbmcgem9uZV9oaWdoID0gYXJjaF96b25lX2hpZ2hlc3RfcG9zc2libGVfcGZuW3pvbmVfdHlwZV07XG4rXHR1bnNpZ25lZCBsb25nIG1vdmFibGVfcGZuID0gem9uZV9tb3ZhYmxlX3BmbltuaWRdO1xuIFxuIFx0LyogR2V0IHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoZSB6b25lICovXG4gXHQqem9uZV9zdGFydF9wZm4gPSBjbGFtcChub2RlX3N0YXJ0X3Bmbiwgem9uZV9sb3csIHpvbmVfaGlnaCk7XG4gXHQqem9uZV9lbmRfcGZuID0gY2xhbXAobm9kZV9lbmRfcGZuLCB6b25lX2xvdywgem9uZV9oaWdoKTtcbi1cdGFkanVzdF96b25lX3JhbmdlX2Zvcl96b25lX21vdmFibGUobmlkLCB6b25lX3R5cGUsIG5vZGVfZW5kX3Bmbixcbi1cdFx0XHRcdFx0ICAgem9uZV9zdGFydF9wZm4sIHpvbmVfZW5kX3Bmbik7XG4gXG4tXHQvKiBDaGVjayB0aGF0IHRoaXMgbm9kZSBoYXMgcGFnZXMgd2l0aGluIHRoZSB6b25lJ3MgcmVxdWlyZWQgcmFuZ2UgKi9cbi1cdGlmICgqem9uZV9lbmRfcGZuIFx1MDAzYyBub2RlX3N0YXJ0X3BmbiB8fCAqem9uZV9zdGFydF9wZm4gXHUwMDNlIG5vZGVfZW5kX3Bmbilcbi1cdFx0cmV0dXJuIDA7XG4rXHQvKiBOb3RoaW5nIHRvIGFkanVzdCBpZiBaT05FX01PVkFCTEUgaXMgbm90IG9uIHRoaXMgbm9kZSAqL1xuK1x0aWYgKCFtb3ZhYmxlX3BmbilcbitcdFx0Z290byBvdXQ7XG4gXG4tXHQvKiBNb3ZlIHRoZSB6b25lIGJvdW5kYXJpZXMgaW5zaWRlIHRoZSBub2RlIGlmIG5lY2Vzc2FyeSAqL1xuLVx0KnpvbmVfZW5kX3BmbiA9IG1pbigqem9uZV9lbmRfcGZuLCBub2RlX2VuZF9wZm4pO1xuLVx0KnpvbmVfc3RhcnRfcGZuID0gbWF4KCp6b25lX3N0YXJ0X3Bmbiwgbm9kZV9zdGFydF9wZm4pO1xuK1x0LyogU2l6ZSBaT05FX01PVkFCTEUgKi9cbitcdGlmICh6b25lX3R5cGUgPT0gWk9ORV9NT1ZBQkxFKSB7XG4rXHRcdCp6b25lX3N0YXJ0X3BmbiA9IG1vdmFibGVfcGZuO1xuK1x0XHQqem9uZV9lbmRfcGZuID0gbWluKG5vZGVfZW5kX3BmbixcbitcdFx0XHRhcmNoX3pvbmVfaGlnaGVzdF9wb3NzaWJsZV9wZm5bbW92YWJsZV96b25lXSk7XG4gXG4rXHRcdC8qIENoZWNrIHRoYXQgdGhpcyBub2RlIGhhcyBwYWdlcyB3aXRoaW4gdGhlIHpvbmUncyByZXF1aXJlZCByYW5nZSAqL1xuK1x0XHRpZiAoKnpvbmVfZW5kX3BmbiBcdTAwM2Mgbm9kZV9zdGFydF9wZm4gfHxcbitcdFx0ICAgICp6b25lX3N0YXJ0X3BmbiBcdTAwM2Ugbm9kZV9lbmRfcGZuKVxuK1x0XHRcdHJldHVybiAwO1xuK1xuK1x0XHQvKiBNb3ZlIHRoZSB6b25lIHN0YXJ0IGluc2lkZSB0aGUgbm9kZSBpZiBuZWNlc3NhcnkgKi9cbitcdFx0KnpvbmVfc3RhcnRfcGZuID0gbWF4KCp6b25lX3N0YXJ0X3Bmbiwgbm9kZV9zdGFydF9wZm4pO1xuK1xuK1x0LyogVGhpcyByYW5nZSBzdGFydHMgYmVsb3cgWk9ORV9NT1ZBQkxFICovXG4rXHR9IGVsc2UgaWYgKCp6b25lX3N0YXJ0X3BmbiBcdTAwM2MgbW92YWJsZV9wZm4pIHtcbitcdFx0KnpvbmVfZW5kX3BmbiA9IG1pbigqem9uZV9lbmRfcGZuLCBtb3ZhYmxlX3Bmbik7XG4rXG4rXHQvKiBUaGlzIHdob2xlIHJhbmdlIGlzIHdpdGhpbiBaT05FX01PVkFCTEUgKi9cbitcdH0gZWxzZSB7XG4rXHRcdCp6b25lX3N0YXJ0X3BmbiA9ICp6b25lX2VuZF9wZm47XG4rXHR9XG4rXG4rb3V0OlxuIFx0LyogUmV0dXJuIHRoZSBzcGFubmVkIHBhZ2VzICovXG4gXHRyZXR1cm4gKnpvbmVfZW5kX3BmbiAtICp6b25lX3N0YXJ0X3BmbjtcbiB9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDoxMjoxNS45OTA1OTg3OTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODU2MzU3MzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2gncyBJbXBhY3Qgb24gRnV6emluZyBUYXJnZXRhYmlsaXR5KipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0J3MgbWVzc2luZyB3aXRoIGBtbS9tbV9pbml0LmNgLiBTcGVjaWZpY2FsbHksIGl0J3MgaW5saW5pbmcgdGhlIGBhZGp1c3Rfem9uZV9yYW5nZV9mb3Jfem9uZV9tb3ZhYmxlYCBmdW5jdGlvbiBpbnRvIGB6b25lX3NwYW5uZWRfcGFnZXNfaW5fbm9kZWAuIEFuZCBib3RoIG9mIHRoZXNlIGZ1bmN0aW9ucyBhcmUgbWFya2VkIHdpdGggYF9faW5pdGAuIE5vdywgYSByZWQgZmxhZyBpbW1lZGlhdGVseSBnb2VzIHVwLiBgX19pbml0YCBmdW5jdGlvbnMgYXJlLCBieSBkZWZpbml0aW9uLCBleGVjdXRlZCBvbmx5IGR1cmluZyB0aGUga2VybmVsJ3MgYm9vdCBwcm9jZXNzLCBhbmQgdGhlaXIgYXNzb2NpYXRlZCBtZW1vcnkgaXMgZnJlZWQgYWZ0ZXJ3YXJkLlxuXG5NeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGZ1enppbmcuIEZ1enppbmcgdXN1YWxseSBmb2N1c2VzIG9uIGFyZWFzIHRyaWdnZXJlZCByZXBlYXRlZGx5IGZyb20gdXNlciBzcGFjZTogc3lzdGVtIGNhbGxzLCBuZXR3b3JrIGludGVyYWN0aW9ucywgZGV2aWNlIG9wZXJhdGlvbnMg4oCTIHRoZSBzdGFuZGFyZCBhdHRhY2sgc3VyZmFjZS4gQm9vdC10aW1lIGluaXRpYWxpemF0aW9uIGlzLCB3ZWxsLCAqYm9vdC10aW1lKi4gQnVncyBpbiBpbml0aWFsaXphdGlvbiAqY2FuKiBsZWFkIHRvIGJvb3QgZmFpbHVyZXMsIGJ1dCB0aGV5J3JlIG5vdCBnZW5lcmFsbHkgYWNjZXNzaWJsZSBvbmNlIHRoZSBzeXN0ZW0gaXMgdXAgYW5kIHJ1bm5pbmcsIHNvIHRoZXkgYXJlIG5vdCBpZGVhbCBmb3IgYSBmdXp6ZXIgbGlrZSBzeXprYWxsZXIuXG5cbkJ1dCB3YWl0IGEgbWludXRlLCBpcyBpdCBhYnNvbHV0ZWx5IGltcG9zc2libGUgZm9yIGB6b25lX3NwYW5uZWRfcGFnZXNfaW5fbm9kZWAgdG8gYmUgdHJpZ2dlcmVkICphZnRlciogYm9vdD8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGl0J3Mgc3RyaWN0bHkgYF9faW5pdGAuIE9rYXksIGxldCdzIHNlZS4uLiB5ZXAsIGl0J3MgYHN0YXRpYyB1bnNpZ25lZCBsb25nIF9faW5pdCB6b25lX3NwYW5uZWRfcGFnZXNfaW5fbm9kZSguLi4pYC4gVGhhdCBzZWFscyBpdDsgaXQncyAqc3VwcG9zZWQqIHRvIGJlIHVucmVhY2hhYmxlIGFmdGVyIGJvb3QuXG5cbkhvbGQgb24sIHRoZXJlJ3MgYW5vdGhlciBwb3NzaWJpbGl0eSB0aGF0IEkgaGF2ZSB0byBhY2NvdW50IGZvci4gTWVtb3J5IGhvdHBsdWcuIElmIHRoaXMgZnVuY3Rpb24gaXMgcGFydCBvZiBtZW1vcnkgaG90cGx1ZyBjb2RlLCBpdCAqc2hvdWxkbid0KiBiZSBgX19pbml0YC4gSWYgaXQgaXMgYF9faW5pdGAgYW5kIGlzIHRoZW4gdXNlZCBpbiBob3RwbHVnLCBpdCB3aWxsIGluZXZpdGFibHkgbGVhZCB0byBhIGtlcm5lbCBwYW5pYyBpZiBpdCBpcyBjYWxsZWQgYWZ0ZXIgYm9vdC4gVGhhdCdzIGEgc2VyaW91cyBwcm9ibGVtISBJIG5lZWQgdG8gdmVyaWZ5IGlmIGB6b25lX3NwYW5uZWRfcGFnZXNfaW5fbm9kZWAgaXMgaW52b2x2ZWQgaW4gbWVtb3J5IGhvdHBsdWcuIExldCdzIGRpZyBpbiBhbmQgbWFrZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzk2LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6MTI6MjIuODQ2OTU5MTU1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MTgwMTk0NTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiem9uZV9zcGFubmVkX3BhZ2VzX2luX25vZGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vbW1faW5pdC5jPTExNTY9c3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0IHpvbmVfYWJzZW50X3BhZ2VzX2luX25vZGUoaW50IG5pZCxcXG4tLVxcbm1tL21tX2luaXQuYy0xMTY5LSAqIFJldHVybiB0aGUgbnVtYmVyIG9mIHBhZ2VzIGEgem9uZSBzcGFucyBpbiBhIG5vZGUsIGluY2x1ZGluZyBob2xlc1xcbm1tL21tX2luaXQuYzoxMTcwOiAqIHByZXNlbnRfcGFnZXMgPSB6b25lX3NwYW5uZWRfcGFnZXNfaW5fbm9kZSgpIC0gem9uZV9hYnNlbnRfcGFnZXNfaW5fbm9kZSgpXFxubW0vbW1faW5pdC5jLTExNzEtICpcXG4tLVxcbm1tL21tX2luaXQuYy0xMTgwLSAqL1xcbm1tL21tX2luaXQuYzoxMTgxOnN0YXRpYyB1bnNpZ25lZCBsb25nIF9faW5pdCB6b25lX3NwYW5uZWRfcGFnZXNfaW5fbm9kZShpbnQgbmlkLFxcbm1tL21tX2luaXQuYy0xMTgyLVxcdFxcdFxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgem9uZV90eXBlLFxcbi0tXFxubW0vbW1faW5pdC5jPTEyNzA9c3RhdGljIHZvaWQgX19pbml0IGNhbGN1bGF0ZV9ub2RlX3RvdGFscGFnZXMoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCxcXG4tLVxcbm1tL21tX2luaXQuYy0xMjgyLVxcbm1tL21tX2luaXQuYzoxMjgzOlxcdFxcdHNwYW5uZWQgPSB6b25lX3NwYW5uZWRfcGFnZXNfaW5fbm9kZShwZ2RhdC1cXHUwMDNlbm9kZV9pZCwgaSxcXG5tbS9tbV9pbml0LmMtMTI4NC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIG5vZGVfc3RhcnRfcGZuLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDoxMjoyNS41NjQ5ODQ5NjFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjYxNjQ4MTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVG90YWwgUGFnZXMgQ2FsY3VsYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgb24gdGhpcyBgY2FsY3VsYXRlX25vZGVfdG90YWxwYWdlc2AgZnVuY3Rpb24uIFJpZ2h0IG5vdywgaXQgc2VlbXMgbGlrZSB0aGUgb25seSBwbGFjZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpcyBmcm9tIHdpdGhpbiBgY2FsY3VsYXRlX25vZGVfdG90YWxwYWdlc2AgaXRzZWxmLCB3aGljaCBpcyBhbHNvIGFjdGluZyBhcyB0aGUgYF9faW5pdF9fYCBtZXRob2QuIFRoYXQncyBhIGJpdCB1bnVzdWFsLCBzbyBpdCB3YXJyYW50cyBhIGNsb3NlciBsb29rLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIHdpdGhpbiBgY2FsY3VsYXRlX25vZGVfdG90YWxwYWdlc2AuIExldCdzIGRpdmUgaW4gYW5kIHNlZSB3aGF0J3MgZ29pbmcgb24gd2l0aGluIHRoYXQgZnVuY3Rpb24uIEknbGwgZGVjb25zdHJ1Y3QgaXQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBhbmQgaW1wYWN0IG9uIHRoZSBvdmVyYWxsIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0NTcsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDoxMjozMS4yMjY2MzY3ODFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ3NjUxMDQ4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjYWxjdWxhdGVfbm9kZV90b3RhbHBhZ2VzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdD0zNzQ9R2VuZXJhbFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTQ1Ni0gIFRoZSBzdGFydCBwZm4gb2YgdGhlIHpvbmUuIEl0IGlzIGluaXRpYWxpemVkIGJ5XFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0OjQ1NzogIGBgY2FsY3VsYXRlX25vZGVfdG90YWxwYWdlcygpYGAuXFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTQ1OC1cXG4tLVxcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC00NzAtICBgYHNwYW5uZWRfcGFnZXNgYCA9IGBgem9uZV9lbmRfcGZuYGAgLSBgYHpvbmVfc3RhcnRfcGZuYGAuIEl0IGlzIGluaXRpYWxpemVkXFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0OjQ3MTogIGJ5IGBgY2FsY3VsYXRlX25vZGVfdG90YWxwYWdlcygpYGAuXFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTQ3Mi1cXG4tLVxcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC00ODAtICBgYHByZXNlbnRfcGFnZXNgYCBzaG91bGQgdXNlIGBgZ2V0X29ubGluZV9tZW1zKClgYCB0byBnZXQgYSBzdGFibGUgdmFsdWUuIEl0XFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0OjQ4MTogIGlzIGluaXRpYWxpemVkIGJ5IGBgY2FsY3VsYXRlX25vZGVfdG90YWxwYWdlcygpYGAuXFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTQ4Mi1cXG4tLVxcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC00ODYtICBgYENPTkZJR19NRU1PUllfSE9UUExVR2BgIGlzIGVuYWJsZWQgYW5kIGluaXRpYWxpemVkIGJ5XFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0OjQ4NzogIGBgY2FsY3VsYXRlX25vZGVfdG90YWxwYWdlcygpYGAuXFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTQ4OC1cXG4tLVxcbm1tL21tX2luaXQuYz0xMjQ2PXN0YXRpYyB2b2lkIF9faW5pdCBjYWxjX25yX2tlcm5lbF9wYWdlcyh2b2lkKVxcbi0tXFxubW0vbW1faW5pdC5jLTEyNjktXFxubW0vbW1faW5pdC5jOjEyNzA6c3RhdGljIHZvaWQgX19pbml0IGNhbGN1bGF0ZV9ub2RlX3RvdGFscGFnZXMoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCxcXG5tbS9tbV9pbml0LmMtMTI3MS1cXHRcXHRcXHRcXHRcXHRcXHR1bnNpZ25lZCBsb25nIG5vZGVfc3RhcnRfcGZuLFxcbi0tXFxubW0vbW1faW5pdC5jPTE2NDk9c3RhdGljIHZvaWQgX19pbml0IGZyZWVfYXJlYV9pbml0X25vZGUoaW50IG5pZClcXG4tLVxcbm1tL21tX2luaXQuYy0xNjY3LVxcbm1tL21tX2luaXQuYzoxNjY4OlxcdFxcdGNhbGN1bGF0ZV9ub2RlX3RvdGFscGFnZXMocGdkYXQsIHN0YXJ0X3BmbiwgZW5kX3Bmbik7XFxubW0vbW1faW5pdC5jLTE2NjktXFx0fSBlbHNlIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6MTI6MzMuNzAzMTUzMjM5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMxNjE3NDI5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQm9vdC1UaW1lIEluaXRpYWxpemF0aW9uLCBObyBGdXp6aW5nIE5lZWRlZCoqXG5cbkFscmlnaHQsIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBteSBpbml0aWFsIHJlYWN0aW9uIGlzIGNsZWFyOiB0aGlzIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgdGhlIG9uZSBiZWluZyBkaXNjdXNzZWQsIGlzIG9ubHkgZXZlciBjYWxsZWQgZHVyaW5nIHRoZSBib290IHByb2Nlc3MuIEl0J3MgdGllZCB0byBgZnJlZV9hcmVhX2luaXRfbm9kZWAsIGFuZCB0aGF0J3MgbWFya2VkIGFzIGBfX2luaXRgLiBUaGF0IG1lYW5zIHRoaXMgaXMgcHVyZWx5IGJvb3QtdGltZSBpbml0aWFsaXphdGlvbiBjb2RlLiBObyB3YXkgdGhpcyBnZXRzIHRvdWNoZWQgYnkgdXNlciBzcGFjZS5cblxuVGhpcyBpcyBjcml0aWNhbCBiZWNhdXNlIGl0IG1lYW5zIG5vIHN5c3RlbSBjYWxsIGZ1enplciwgbGlrZSBhIHRvb2wgSSdtIGZhbWlsaWFyIHdpdGgsIGxpa2Ugc3l6a2FsbGVyLCBpcyBnb2luZyB0byBiZSBhYmxlIHRvIHJlYWNoIGl0LiBUaGVyZSdzIGp1c3Qgbm8gcGF0aCBmcm9tIGEgdXNlci1zcGFjZSBwcm9jZXNzIHRvIGV4ZWN1dGUgdGhpcyBjb2RlIG9uY2UgdGhlIHN5c3RlbSBpcyB1cCBhbmQgcnVubmluZy4gVGhlcmVmb3JlLCBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZSwgdGhpcyBpc24ndCBhIGNhbmRpZGF0ZS4gVGhlIFwiV29ydGhGdXp6aW5nXCIgZmxhZz8gRGVmaW5pdGVseSBmYWxzZS4gV2UgY2FuIHNhZmVseSBpZ25vcmUgdGhpcyBwYXJ0IGZvciBmdXp6aW5nIHB1cnBvc2VzLiBJdCdzIGEgZGVhZCBlbmQsIGZ1enppbmctd2lzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE4NiwiT3V0cHV0VG9rZW5zIjoxMDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDoxMjozOC4wMTkzMzAzNjFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwNjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB6b25lX3NwYW5uZWRfcGFnZXNfaW5fbm9kZWAgYW5kIHJlbW92ZXMgYGFkanVzdF96b25lX3JhbmdlX2Zvcl96b25lX21vdmFibGVgLCBib3RoIG9mIHdoaWNoIGFyZSBtYXJrZWQgYXMgYF9faW5pdGAuIFRoaXMgaXMgYm9vdC10aW1lIGluaXRpYWxpemF0aW9uIGNvZGUgdGhhdCBydW5zIG9uY2UgZHVyaW5nIGtlcm5lbCBzdGFydHVwIGFuZCBpcyBub3QgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSwgbWFraW5nIGl0IHVuc3VpdGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgem9uZV9zcGFubmVkX3BhZ2VzX2luX25vZGVgIGFuZCByZW1vdmVzIGBhZGp1c3Rfem9uZV9yYW5nZV9mb3Jfem9uZV9tb3ZhYmxlYCwgYm90aCBvZiB3aGljaCBhcmUgbWFya2VkIGFzIGBfX2luaXRgLiBUaGlzIGlzIGJvb3QtdGltZSBpbml0aWFsaXphdGlvbiBjb2RlIHRoYXQgcnVucyBvbmNlIGR1cmluZyBrZXJuZWwgc3RhcnR1cCBhbmQgaXMgbm90IHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UsIG1ha2luZyBpdCB1bnN1aXRhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6MTI6MzguMDE5Mzc1MzIxWiIsIlNlcSI6OSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowdkgk5[1] Phase: Running StartedAt: 2026-08-14 14:12:49 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdkgk5[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-14 14:12:49 +0000 UTC FinishedAt: 2026-08-14 14:12:53 +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,}