Name: series-workflowzcltx Phase: Succeeded StartedAt: 2026-07-06 06:45:38 +0000 UTC FinishedAt: 2026-07-06 11:03:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcltx[0] Phase: Succeeded StartedAt: 2026-07-06 06:45:38 +0000 UTC FinishedAt: 2026-07-06 07:02:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcltx[0].run-triage Phase: Succeeded StartedAt: 2026-07-06 06:45:38 +0000 UTC FinishedAt: 2026-07-06 07:02:25 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "387a926ee166814611acecb960207fe2f3c4fd3e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "387a926ee166814611acecb960207fe2f3c4fd3e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "8cdc78e8-3683-49e4-9fa5-43624827c030" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "em_cmpxchg8b", "emulator_cmpxchg_emulated" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA3OjAxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2VtX2NtcHhjaGc4YiYjMzQ7LAogICAgJiMzNDtlbXVsYXRvcl9jbXB4Y2hnX2VtdWxhdGVkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgZW11bGF0aW5nIHRoZSBjbXB4Y2hnMTZiIGluc3RydWN0aW9uIGluIEtWTS4gSXQgbW9kaWZpZXMgdGhlIGluc3RydWN0aW9uIGVtdWxhdG9yIGFuZCB0aGUgbWVtb3J5IGFjY2VzcyBjYWxsYmFja3MgdG8gaGFuZGxlIDE2LWJ5dGUgYXRvbWljIGNvbXBhcmUtYW5kLWV4Y2hhbmdlIG9wZXJhdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY29yZSBLVk0gZW11bGF0aW9uIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGJ5IGEgZ3Vlc3QgZXhlY3V0aW5nIHRoZSBjbXB4Y2hnMTZiIGluc3RydWN0aW9uLCBhbmQgdGh1cyBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA3OjAxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNjdlMDY0MjY4NTdkMDNkNjA3YjNjNGYwOGE1OTY5ZGQxNWU4ZmU3MFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDYgMDc6MDE6NDUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vdWFjY2Vzcy5oXG5pbmRleCAzNjcyOTdiMTg4YzM5Yy4uMTIzNzU1ZDQ3MTA5OTcgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS91YWNjZXNzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaFxuQEAgLTQwNyw2ICYjNDM7NDA3LDI1IEBAIGRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIFx0aWYgKHVubGlrZWx5KCFzdWNjZXNzKSlcdFx0XHRcdFx0XHRcXFxuIFx0XHQqX29sZCA9IF9fb2xkO1x0XHRcdFx0XHRcdFxcXG4gXHRsaWtlbHkoc3VjY2Vzcyk7XHRcdFx0XHRcdH0pXG4mIzQzOyNlbHNlIC8vICFDT05GSUdfWDg2XzMyXG4mIzQzOyNkZWZpbmUgX190cnlfY21weGNoZzEyOF91c2VyX2FzbShfcHRyLCBfcG9sZCwgX25ldywgbGFiZWwpXHQoe1x0XFxcbiYjNDM7XHRib29sIHN1Y2Nlc3M7XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdF9fdHlwZW9mX18oX3B0cikgX29sZCA9IChfX3R5cGVvZl9fKF9wdHIpKShfcG9sZCk7XHRcdFxcXG4mIzQzO1x0X190eXBlb2ZfXygqKF9wdHIpKSBfX29sZCA9ICpfb2xkO1x0XHRcdFx0XFxcbiYjNDM7XHRfX3R5cGVvZl9fKCooX3B0cikpIF9fbmV3ID0gKF9uZXcpO1x0XHRcdFx0XFxcbiYjNDM7XHRhc21fZ290b19vdXRwdXQoXCYjMzQ7XFxuXCYjMzQ7XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdCAgICAgXCYjMzQ7MTogXCYjMzQ7IExPQ0tfUFJFRklYIFwmIzM0O2NtcHhjaGcxNmIgJVtwdHJdXFxuXCYjMzQ7XHRcdFxcXG4mIzQzO1x0XHQgICAgIF9BU01fRVhUQUJMRV9VQSgxYiwgJWxbbGFiZWxdKVx0XHRcdFxcXG4mIzQzO1x0XHQgICAgIDogXCYjMzQ7PUBjY3pcJiMzNDsgKHN1Y2Nlc3MpLFx0XHRcdFx0XFxcbiYjNDM7XHRcdCAgICAgICBcJiMzNDsmIzQzO0FcJiMzNDsgKF9fb2xkKSxcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdCAgICAgICBbcHRyXSBcJiMzNDsmIzQzO21cJiMzNDsgKCpfcHRyKVx0XHRcdFx0XFxcbiYjNDM7XHRcdCAgICAgOiBcJiMzNDtiXCYjMzQ7ICgodTY0KV9fbmV3KSxcdFx0XHRcdFxcXG4mIzQzO1x0XHQgICAgICAgXCYjMzQ7Y1wmIzM0OyAoKHU2NCkoKHUxMjgpX19uZXcgXHUwMDNlXHUwMDNlIDY0KSlcdFx0XHRcXFxuJiM0MztcdFx0ICAgICA6IFwmIzM0O21lbW9yeVwmIzM0O1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQgICAgIDogbGFiZWwpO1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0aWYgKHVubGlrZWx5KCFzdWNjZXNzKSlcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0Kl9vbGQgPSBfX29sZDtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdGxpa2VseShzdWNjZXNzKTtcdFx0XHRcdFx0fSlcbiAjZW5kaWYgLy8gQ09ORklHX1g4Nl8zMlxuICNlbHNlICAvLyAhQ09ORklHX0NDX0hBU19BU01fR09UT19USUVEX09VVFBVVFxuICNkZWZpbmUgX190cnlfY21weGNoZ191c2VyX2FzbShpdHlwZSwgbHR5cGUsIF9wdHIsIF9wb2xkLCBfbmV3LCBsYWJlbClcdCh7IFxcXG5AQCAtNDYzLDYgJiM0Mzs0ODIsMzAgQEAgZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRpZiAodW5saWtlbHkoIV9fcmVzdWx0KSlcdFx0XHRcdFx0XFxcbiBcdFx0Kl9vbGQgPSBfX29sZDtcdFx0XHRcdFx0XHRcXFxuIFx0bGlrZWx5KF9fcmVzdWx0KTtcdFx0XHRcdFx0fSlcbiYjNDM7I2Vsc2UgLy8hQ09ORklHX1g4Nl8zMlxuJiM0MzsjZGVmaW5lIF9fdHJ5X2NtcHhjaGcxMjhfdXNlcl9hc20oX3B0ciwgX3BvbGQsIF9uZXcsIGxhYmVsKVx0KHtcdFxcXG4mIzQzO1x0aW50IF9fcmVzdWx0O1x0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRfX3R5cGVvZl9fKF9wdHIpIF9vbGQgPSAoX190eXBlb2ZfXyhfcHRyKSkoX3BvbGQpO1x0XHRcXFxuJiM0MztcdF9fdHlwZW9mX18oKihfcHRyKSkgX19vbGQgPSAqX29sZDtcdFx0XHRcdFxcXG4mIzQzO1x0X190eXBlb2ZfXygqKF9wdHIpKSBfX25ldyA9IChfbmV3KTtcdFx0XHRcdFxcXG4mIzQzO1x0YXNtIHZvbGF0aWxlKFwmIzM0O1xcblwmIzM0O1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQgICAgIFwmIzM0OzE6IFwmIzM0OyBMT0NLX1BSRUZJWCBcJiMzNDtjbXB4Y2hnMTZiICVbcHRyXVxcblwmIzM0O1x0XHRcXFxuJiM0MztcdFx0ICAgICBcJiMzNDttb3YgJDAsICVbcmVzdWx0XVxcblxcdFwmIzM0O1x0XHRcdFx0XFxcbiYjNDM7XHRcdCAgICAgXCYjMzQ7c2V0eiAlYltyZXN1bHRdXFxuXCYjMzQ7XHRcdFx0XHRcXFxuJiM0MztcdFx0ICAgICBcJiMzNDsyOlxcblwmIzM0O1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQgICAgIF9BU01fRVhUQUJMRV9UWVBFX1JFRygxYiwgMmIsIEVYX1RZUEVfRUZBVUxUX1JFRyxcdFxcXG4mIzQzO1x0XHRcdFx0XHQgICAlW3Jlc3VsdF0pXHRcdFx0XFxcbiYjNDM7XHRcdCAgICAgOiBbcmVzdWx0XSBcJiMzNDs9cVwmIzM0OyAoX19yZXN1bHQpLFx0XHRcdFxcXG4mIzQzO1x0XHQgICAgICAgXCYjMzQ7JiM0MztBXCYjMzQ7IChfX29sZCksXHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQgICAgICAgW3B0cl0gXCYjMzQ7JiM0MzttXCYjMzQ7ICgqX3B0cilcdFx0XHRcdFxcXG4mIzQzO1x0XHQgICAgIDogXCYjMzQ7YlwmIzM0OyAoKHU2NClfX25ldyksXHRcdFx0XHRcXFxuJiM0MztcdFx0ICAgICAgIFwmIzM0O2NcJiMzNDsgKCh1NjQpKCh1MTI4KV9fbmV3IFx1MDAzZVx1MDAzZSA2NCkpXHRcdFx0XFxcbiYjNDM7XHRcdCAgICAgOiBcJiMzNDttZW1vcnlcJiMzNDssIFwmIzM0O2NjXCYjMzQ7KTtcdFx0XHRcdFx0XFxcbiYjNDM7XHRpZiAodW5saWtlbHkoX19yZXN1bHQgXHUwMDNjIDApKVx0XHRcdFx0XHRcXFxuJiM0MztcdFx0Z290byBsYWJlbDtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdGlmICh1bmxpa2VseSghX19yZXN1bHQpKVx0XHRcdFx0XHRcXFxuJiM0MztcdFx0Kl9vbGQgPSBfX29sZDtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdGxpa2VseShfX3Jlc3VsdCk7XHRcdFx0XHRcdH0pXG4gI2VuZGlmIC8vIENPTkZJR19YODZfMzJcbiAjZW5kaWYgLy8gQ09ORklHX0NDX0hBU19BU01fR09UT19USUVEX09VVFBVVFxuIFxuQEAgLTU1MSwxMSAmIzQzOzU5NCwxOCBAQCBkbyB7XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIFxuIGV4dGVybiB2b2lkIF9fdHJ5X2NtcHhjaGdfdXNlcl93cm9uZ19zaXplKHZvaWQpO1xuIFxuLSNpZm5kZWYgQ09ORklHX1g4Nl8zMlxuJiM0MzsjaWZkZWYgQ09ORklHX1g4Nl8zMlxuJiM0MzsvKiBBbHdheXMgZmFpbCBvbiAzMiBiaXQgYXJjaCBhcyBpdCBkbyBub3Qgc3VwcG9ydCAxMjggY21weGNoZyAoaS5lLiBjbXB4Y2hnMTZiXG4mIzQzOyAqIGluc3RydWN0aW9uKS5cbiYjNDM7ICovXG4mIzQzOyNkZWZpbmUgX190cnlfY21weGNoZzEyOF91c2VyX2FzbShfcHRyLCBfcG9sZCwgX25ldywgbGFiZWwpICgxKVxuJiM0MzsjZWxzZVxuICNkZWZpbmUgX190cnlfY21weGNoZzY0X3VzZXJfYXNtKF9wdHIsIF9vbGRwLCBfbnZhbCwgX2xhYmVsKVx0XHRcXFxuIFx0X190cnlfY21weGNoZ191c2VyX2FzbShcJiMzNDtxXCYjMzQ7LCBcJiMzNDtyXCYjMzQ7LCAoX3B0ciksIChfb2xkcCksIChfbnZhbCksIF9sYWJlbClcbiYjNDM7XG4gI2VuZGlmXG4gXG4mIzQzO1xuIC8qXG4gICogRm9yY2UgdGhlIHBvaW50ZXIgdG8gdVx1MDAzY3NpemVcdTAwM2UgdG8gbWF0Y2ggdGhlIHNpemUgZXhwZWN0ZWQgYnkgdGhlIGFzbSBoZWxwZXIuXG4gICogY2xhbmcvTExWTSBjb21waWxlcyBhbGwgY2FzZXMgYW5kIG9ubHkgZGlzY2FyZHMgdGhlIHVudXNlZCBwYXRocyBhZnRlclxuQEAgLTU4MCw2ICYjNDM7NjMwLDEwIEBAIGV4dGVybiB2b2lkIF9fdHJ5X2NtcHhjaGdfdXNlcl93cm9uZ19zaXplKHZvaWQpO1xuIFx0Y2FzZSA4Olx0X19yZXQgPSBfX3RyeV9jbXB4Y2hnNjRfdXNlcl9hc20oKF9fZm9yY2UgdTY0ICopKF9wdHIpLCAoX29sZHApLFxcXG4gXHRcdFx0XHRcdFx0IChfbnZhbCksIF9sYWJlbCk7XHRcdFxcXG4gXHRcdGJyZWFrO1x0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdGNhc2UgMTY6XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRfX3JldCA9IF9fdHJ5X2NtcHhjaGcxMjhfdXNlcl9hc20oKF9fZm9yY2UgdTEyOCAqKShfcHRyKSxcdFxcXG4mIzQzO1x0XHRcdFx0XHRcdCAgKF9vbGRwKSwgKF9udmFsKSwgX2xhYmVsKTtcdFxcXG4mIzQzO1x0XHRicmVhaztcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdGRlZmF1bHQ6IF9fdHJ5X2NtcHhjaGdfdXNlcl93cm9uZ19zaXplKCk7XHRcdFx0XHRcXFxuIFx0fVx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRfX3JldDtcdFx0XHRcdFx0XHR9KVxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9lbXVsYXRlLmMgYi9hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jXG5pbmRleCBjOGUyOTJlOWEyNGRmZS4uOWRmNTViM2M1NjI3NjUgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jXG5AQCAtMjE4OCwyNCAmIzQzOzIxODgsMzYgQEAgc3RhdGljIGludCBlbV9jYWxsX25lYXJfYWJzKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KVxuIFx0cmV0dXJuIHJjO1xuIH1cbiBcbiYjNDM7I2RlZmluZSBlbV9jbXB4Y2hnOGJfMTZiKF9fYywgcmJpdHMsIG1iaXRzKVxcXG4mIzQzO2RvIHtcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdHUjI21iaXRzIG9sZCA9IF9fYy1cdTAwM2Vkc3Qub3JpZ192YWwjI21iaXRzO1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0QlVJTERfQlVHX09OKHJiaXRzICogMiAhPSBtYml0cyk7XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdGlmICgoKHUjI3JiaXRzKSAob2xkIFx1MDAzZVx1MDAzZSAwKSAhPSAodSMjcmJpdHMpIHJlZ19yZWFkKGN0eHQsIFZDUFVfUkVHU19SQVgpKSB8fFx0XHRcXFxuJiM0MztcdCAgICAoKHUjI3JiaXRzKSAob2xkIFx1MDAzZVx1MDAzZSByYml0cykgIT0gKHUjI3JiaXRzKSByZWdfcmVhZChjdHh0LCBWQ1BVX1JFR1NfUkRYKSkpIHtcdFx0XFxcbiYjNDM7XHRcdCpyZWdfd3JpdGUoY3R4dCwgVkNQVV9SRUdTX1JBWCkgPSAodSMjcmJpdHMpIChvbGQgXHUwMDNlXHUwMDNlIDApO1x0XHRcdFxcXG4mIzQzO1x0XHQqcmVnX3dyaXRlKGN0eHQsIFZDUFVfUkVHU19SRFgpID0gKHUjI3JiaXRzKSAob2xkIFx1MDAzZVx1MDAzZSByYml0cyk7XHRcdFx0XFxcbiYjNDM7XHRcdGN0eHQtXHUwMDNlZWZsYWdzIFx1MDAyNj0gflg4Nl9FRkxBR1NfWkY7XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdH0gZWxzZSB7XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0Y3R4dC1cdTAwM2Vkc3QudmFsIyNtYml0cyA9ICgodSMjbWJpdHMpcmVnX3JlYWQoY3R4dCwgVkNQVV9SRUdTX1JDWCkgXHUwMDNjXHUwMDNjIHJiaXRzKSB8XHRcXFxuJiM0MztcdFx0XHRcdFx0KHUjI3JiaXRzKSByZWdfcmVhZChjdHh0LCBWQ1BVX1JFR1NfUkJYKTtcdFx0XFxcbiYjNDM7XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdGN0eHQtXHUwMDNlZWZsYWdzIHw9IFg4Nl9FRkxBR1NfWkY7XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdH1cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7fSB3aGlsZSgwKVxuJiM0MztcbiBzdGF0aWMgaW50IGVtX2NtcHhjaGc4YihzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dClcbiB7XG4tXHR1NjQgb2xkID0gY3R4dC1cdTAwM2Vkc3Qub3JpZ192YWw2NDtcbi1cbi1cdGlmIChjdHh0LVx1MDAzZWRzdC5ieXRlcyA9PSAxNilcbiYjNDM7XHRpZiAoV0FSTl9PTl9PTkNFKDggJiM0MzsgISEoY3R4dC1cdTAwM2VyZXhfYml0cyBcdTAwMjYgUkVYX1cpICogOCAhPSBjdHh0LVx1MDAzZWRzdC5ieXRlcykpXG4gXHRcdHJldHVybiBYODZFTVVMX1VOSEFORExFQUJMRTtcbiBcbi1cdGlmICgoKHUzMikgKG9sZCBcdTAwM2VcdTAwM2UgMCkgIT0gKHUzMikgcmVnX3JlYWQoY3R4dCwgVkNQVV9SRUdTX1JBWCkpIHx8XG4tXHQgICAgKCh1MzIpIChvbGQgXHUwMDNlXHUwMDNlIDMyKSAhPSAodTMyKSByZWdfcmVhZChjdHh0LCBWQ1BVX1JFR1NfUkRYKSkpIHtcbi1cdFx0KnJlZ193cml0ZShjdHh0LCBWQ1BVX1JFR1NfUkFYKSA9ICh1MzIpIChvbGQgXHUwMDNlXHUwMDNlIDApO1xuLVx0XHQqcmVnX3dyaXRlKGN0eHQsIFZDUFVfUkVHU19SRFgpID0gKHUzMikgKG9sZCBcdTAwM2VcdTAwM2UgMzIpO1xuLVx0XHRjdHh0LVx1MDAzZWVmbGFncyBcdTAwMjY9IH5YODZfRUZMQUdTX1pGO1xuLVx0fSBlbHNlIHtcbi1cdFx0Y3R4dC1cdTAwM2Vkc3QudmFsNjQgPSAoKHU2NClyZWdfcmVhZChjdHh0LCBWQ1BVX1JFR1NfUkNYKSBcdTAwM2NcdTAwM2MgMzIpIHxcbi1cdFx0XHQodTMyKSByZWdfcmVhZChjdHh0LCBWQ1BVX1JFR1NfUkJYKTtcbi1cbi1cdFx0Y3R4dC1cdTAwM2VlZmxhZ3MgfD0gWDg2X0VGTEFHU19aRjtcbi1cdH1cbiYjNDM7XHRpZiAoIShjdHh0LVx1MDAzZXJleF9iaXRzIFx1MDAyNiBSRVhfVykpXG4mIzQzO1x0XHRlbV9jbXB4Y2hnOGJfMTZiKGN0eHQsIDMyLCA2NCk7XG4mIzQzOyNpZmRlZiBDT05GSUdfWDg2XzY0XG4mIzQzO1x0ZWxzZVxuJiM0MztcdFx0ZW1fY21weGNoZzhiXzE2YihjdHh0LCA2NCwgMTI4KTtcbiYjNDM7I2VuZGlmXG4gXHRyZXR1cm4gWDg2RU1VTF9DT05USU5VRTtcbiB9XG4gXG5AQCAtNTQwNSw4ICYjNDM7NTQxNywxNCBAQCBpbnQgeDg2X2VtdWxhdGVfaW5zbihzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCwgYm9vbCBjaGVja19pbnRlcmNlcHRzKVxuIFx0XHRcdGdvdG8gZG9uZTtcbiBcdFx0fVxuIFx0fVxuLVx0LyogQ29weSBmdWxsIDY0LWJpdCB2YWx1ZSBmb3IgQ01QWENIRzhCLiAgKi9cbi1cdGN0eHQtXHUwMDNlZHN0Lm9yaWdfdmFsNjQgPSBjdHh0LVx1MDAzZWRzdC52YWw2NDtcbiYjNDM7XHQvKiBDb3B5IGZ1bGwgNjQvMTI4LWJpdCB2YWx1ZSBmb3IgQ01QWENIRzhCLiAgKi9cbiYjNDM7XG4mIzQzOyNpZmRlZiBDT05GSUdfWDg2XzY0XG4mIzQzO1x0aWYgKGN0eHQtXHUwMDNlZHN0LmJ5dGVzID09IDE2KVxuJiM0MztcdFx0Y3R4dC1cdTAwM2Vkc3Qub3JpZ192YWwxMjggPSBjdHh0LVx1MDAzZWRzdC52YWwxMjg7XG4mIzQzO1x0ZWxzZVxuJiM0MzsjZW5kaWZcbiYjNDM7XHRcdGN0eHQtXHUwMDNlZHN0Lm9yaWdfdmFsNjQgPSBjdHh0LVx1MDAzZWRzdC52YWw2NDtcbiBcbiBzcGVjaWFsX2luc246XG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL2t2bV9lbXVsYXRlLmggYi9hcmNoL3g4Ni9rdm0va3ZtX2VtdWxhdGUuaFxuaW5kZXggZmIzZGFiNGI1YTUzZTcuLmE1MTY3NzIxN2FkYTQzIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL2t2bV9lbXVsYXRlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9rdm1fZW11bGF0ZS5oXG5AQCAtMjU1LDYgJiM0MzsyNTUsOSBAQCBzdHJ1Y3Qgb3BlcmFuZCB7XG4gXHR1bmlvbiB7XG4gXHRcdHVuc2lnbmVkIGxvbmcgb3JpZ192YWw7XG4gXHRcdHU2NCBvcmlnX3ZhbDY0O1xuJiM0MzsjaWZkZWYgQ09ORklHX1g4Nl82NFxuJiM0MztcdFx0dTEyOCBvcmlnX3ZhbDEyODtcbiYjNDM7I2VuZGlmXG4gXHR9O1xuIFx0dW5pb24ge1xuIFx0XHR1bnNpZ25lZCBsb25nICpyZWc7XG5AQCAtMjY4LDYgJiM0MzsyNzEsOSBAQCBzdHJ1Y3Qgb3BlcmFuZCB7XG4gXHR1bmlvbiB7XG4gXHRcdHVuc2lnbmVkIGxvbmcgdmFsO1xuIFx0XHR1NjQgdmFsNjQ7XG4mIzQzOyNpZmRlZiBDT05GSUdfWDg2XzY0XG4mIzQzO1x0XHR1MTI4IHZhbDEyODtcbiYjNDM7I2VuZGlmXG4gXHRcdGNoYXIgdmFscHRyW3NpemVvZihhdngyNTZfdCldO1xuIFx0XHRzc2UxMjhfdCB2ZWNfdmFsO1xuIFx0XHRhdngyNTZfdCB2ZWNfdmFsMjtcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmNcbmluZGV4IDNmYjY0OTA1ZDE5MDcxLi40MGM4NGY4YzQ5MTI5NCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS94ODYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3g4Ni5jXG5AQCAtODMyMiw3ICYjNDM7ODMyMiw3IEBAIHN0YXRpYyBpbnQgZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZChzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCxcbiBcdGludCByO1xuIFxuIFx0LyogZ3Vlc3RzIGNtcHhjaGc4YiBoYXZlIHRvIGJlIGVtdWxhdGVkIGF0b21pY2FsbHkgKi9cbi1cdGlmIChieXRlcyBcdTAwM2UgOCB8fCAoYnl0ZXMgXHUwMDI2IChieXRlcyAtIDEpKSlcbiYjNDM7XHRpZiAoYnl0ZXMgXHUwMDNlIDIgKiBzaXplb2YodW5zaWduZWQgbG9uZykgfHwgKGJ5dGVzIFx1MDAyNiAoYnl0ZXMgLSAxKSkpXG4gXHRcdGdvdG8gZW11bF93cml0ZTtcbiBcbiBcdGdwYSA9IGt2bV9tbXVfZ3ZhX3RvX2dwYV93cml0ZSh2Y3B1LCBhZGRyLCBOVUxMKTtcbkBAIC04MzYyLDYgJiM0Mzs4MzYyLDExIEBAIHN0YXRpYyBpbnQgZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZChzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCxcbiBcdGNhc2UgODpcbiBcdFx0ciA9IGVtdWxhdG9yX3RyeV9jbXB4Y2hnX3VzZXIodTY0LCBodmEsIG9sZCwgbmV3KTtcbiBcdFx0YnJlYWs7XG4mIzQzOyNpZmRlZiBDT05GSUdfWDg2XzY0XG4mIzQzO1x0Y2FzZSAxNjpcbiYjNDM7XHRcdHIgPSBlbXVsYXRvcl90cnlfY21weGNoZ191c2VyKHUxMjgsIGh2YSwgb2xkLCBuZXcpO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzOyNlbmRpZlxuIFx0ZGVmYXVsdDpcbiBcdFx0QlVHKCk7XG4gXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDc6MDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZW1fY21weGNoZzhiJiMzNDssCiAgICAmIzM0O2VtdWxhdG9yX2NtcHhjaGdfZW11bGF0ZWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBlbXVsYXRpbmcgdGhlIGNtcHhjaGcxNmIgaW5zdHJ1Y3Rpb24gaW4gS1ZNLiBJdCBtb2RpZmllcyB0aGUgaW5zdHJ1Y3Rpb24gZW11bGF0b3IgYW5kIHRoZSBtZW1vcnkgYWNjZXNzIGNhbGxiYWNrcyB0byBoYW5kbGUgMTYtYnl0ZSBhdG9taWMgY29tcGFyZS1hbmQtZXhjaGFuZ2Ugb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIEtWTSBlbXVsYXRpb24gbG9naWMgdGhhdCBpcyByZWFjaGFibGUgYnkgYSBndWVzdCBleGVjdXRpbmcgdGhlIGNtcHhjaGcxNmIgaW5zdHJ1Y3Rpb24sIGFuZCB0aHVzIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDY3ZTA2NDI2ODU3ZDAzZDYwN2IzYzRmMDhhNTk2OWRkMTVlOGZlNzAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCA2IDA3OjAxOjQ1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vdWFjY2Vzcy5oCmluZGV4IDM2NzI5N2IxODhjMzljLi4xMjM3NTVkNDcxMDk5NyAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vdWFjY2Vzcy5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaApAQCAtNDA3LDYgJiM0Mzs0MDcsMjUgQEAgZG8gewkJCQkJCQkJCVwKIAlpZiAodW5saWtlbHkoIXN1Y2Nlc3MpKQkJCQkJCVwKIAkJKl9vbGQgPSBfX29sZDsJCQkJCQlcCiAJbGlrZWx5KHN1Y2Nlc3MpOwkJCQkJfSkKJiM0MzsjZWxzZSAvLyAhQ09ORklHX1g4Nl8zMgomIzQzOyNkZWZpbmUgX190cnlfY21weGNoZzEyOF91c2VyX2FzbShfcHRyLCBfcG9sZCwgX25ldywgbGFiZWwpCSh7CVwKJiM0MzsJYm9vbCBzdWNjZXNzOwkJCQkJCQlcCiYjNDM7CV9fdHlwZW9mX18oX3B0cikgX29sZCA9IChfX3R5cGVvZl9fKF9wdHIpKShfcG9sZCk7CQlcCiYjNDM7CV9fdHlwZW9mX18oKihfcHRyKSkgX19vbGQgPSAqX29sZDsJCQkJXAomIzQzOwlfX3R5cGVvZl9fKCooX3B0cikpIF9fbmV3ID0gKF9uZXcpOwkJCQlcCiYjNDM7CWFzbV9nb3RvX291dHB1dCgmIzM0O1xuJiMzNDsJCQkJCQlcCiYjNDM7CQkgICAgICYjMzQ7MTogJiMzNDsgTE9DS19QUkVGSVggJiMzNDtjbXB4Y2hnMTZiICVbcHRyXVxuJiMzNDsJCVwKJiM0MzsJCSAgICAgX0FTTV9FWFRBQkxFX1VBKDFiLCAlbFtsYWJlbF0pCQkJXAomIzQzOwkJICAgICA6ICYjMzQ7PUBjY3omIzM0OyAoc3VjY2VzcyksCQkJCVwKJiM0MzsJCSAgICAgICAmIzM0OyYjNDM7QSYjMzQ7IChfX29sZCksCQkJCQlcCiYjNDM7CQkgICAgICAgW3B0cl0gJiMzNDsmIzQzO20mIzM0OyAoKl9wdHIpCQkJCVwKJiM0MzsJCSAgICAgOiAmIzM0O2ImIzM0OyAoKHU2NClfX25ldyksCQkJCVwKJiM0MzsJCSAgICAgICAmIzM0O2MmIzM0OyAoKHU2NCkoKHUxMjgpX19uZXcgJmd0OyZndDsgNjQpKQkJCVwKJiM0MzsJCSAgICAgOiAmIzM0O21lbW9yeSYjMzQ7CQkJCQkJXAomIzQzOwkJICAgICA6IGxhYmVsKTsJCQkJCQlcCiYjNDM7CWlmICh1bmxpa2VseSghc3VjY2VzcykpCQkJCQkJXAomIzQzOwkJKl9vbGQgPSBfX29sZDsJCQkJCQlcCiYjNDM7CWxpa2VseShzdWNjZXNzKTsJCQkJCX0pCiAjZW5kaWYgLy8gQ09ORklHX1g4Nl8zMgogI2Vsc2UgIC8vICFDT05GSUdfQ0NfSEFTX0FTTV9HT1RPX1RJRURfT1VUUFVUCiAjZGVmaW5lIF9fdHJ5X2NtcHhjaGdfdXNlcl9hc20oaXR5cGUsIGx0eXBlLCBfcHRyLCBfcG9sZCwgX25ldywgbGFiZWwpCSh7IFwKQEAgLTQ2Myw2ICYjNDM7NDgyLDMwIEBAIGRvIHsJCQkJCQkJCQlcCiAJaWYgKHVubGlrZWx5KCFfX3Jlc3VsdCkpCQkJCQlcCiAJCSpfb2xkID0gX19vbGQ7CQkJCQkJXAogCWxpa2VseShfX3Jlc3VsdCk7CQkJCQl9KQomIzQzOyNlbHNlIC8vIUNPTkZJR19YODZfMzIKJiM0MzsjZGVmaW5lIF9fdHJ5X2NtcHhjaGcxMjhfdXNlcl9hc20oX3B0ciwgX3BvbGQsIF9uZXcsIGxhYmVsKQkoewlcCiYjNDM7CWludCBfX3Jlc3VsdDsJCQkJCQkJXAomIzQzOwlfX3R5cGVvZl9fKF9wdHIpIF9vbGQgPSAoX190eXBlb2ZfXyhfcHRyKSkoX3BvbGQpOwkJXAomIzQzOwlfX3R5cGVvZl9fKCooX3B0cikpIF9fb2xkID0gKl9vbGQ7CQkJCVwKJiM0MzsJX190eXBlb2ZfXygqKF9wdHIpKSBfX25ldyA9IChfbmV3KTsJCQkJXAomIzQzOwlhc20gdm9sYXRpbGUoJiMzNDtcbiYjMzQ7CQkJCQkJXAomIzQzOwkJICAgICAmIzM0OzE6ICYjMzQ7IExPQ0tfUFJFRklYICYjMzQ7Y21weGNoZzE2YiAlW3B0cl1cbiYjMzQ7CQlcCiYjNDM7CQkgICAgICYjMzQ7bW92ICQwLCAlW3Jlc3VsdF1cblx0JiMzNDsJCQkJXAomIzQzOwkJICAgICAmIzM0O3NldHogJWJbcmVzdWx0XVxuJiMzNDsJCQkJXAomIzQzOwkJICAgICAmIzM0OzI6XG4mIzM0OwkJCQkJCVwKJiM0MzsJCSAgICAgX0FTTV9FWFRBQkxFX1RZUEVfUkVHKDFiLCAyYiwgRVhfVFlQRV9FRkFVTFRfUkVHLAlcCiYjNDM7CQkJCQkgICAlW3Jlc3VsdF0pCQkJXAomIzQzOwkJICAgICA6IFtyZXN1bHRdICYjMzQ7PXEmIzM0OyAoX19yZXN1bHQpLAkJCVwKJiM0MzsJCSAgICAgICAmIzM0OyYjNDM7QSYjMzQ7IChfX29sZCksCQkJCQlcCiYjNDM7CQkgICAgICAgW3B0cl0gJiMzNDsmIzQzO20mIzM0OyAoKl9wdHIpCQkJCVwKJiM0MzsJCSAgICAgOiAmIzM0O2ImIzM0OyAoKHU2NClfX25ldyksCQkJCVwKJiM0MzsJCSAgICAgICAmIzM0O2MmIzM0OyAoKHU2NCkoKHUxMjgpX19uZXcgJmd0OyZndDsgNjQpKQkJCVwKJiM0MzsJCSAgICAgOiAmIzM0O21lbW9yeSYjMzQ7LCAmIzM0O2NjJiMzNDspOwkJCQkJXAomIzQzOwlpZiAodW5saWtlbHkoX19yZXN1bHQgJmx0OyAwKSkJCQkJCVwKJiM0MzsJCWdvdG8gbGFiZWw7CQkJCQkJXAomIzQzOwlpZiAodW5saWtlbHkoIV9fcmVzdWx0KSkJCQkJCVwKJiM0MzsJCSpfb2xkID0gX19vbGQ7CQkJCQkJXAomIzQzOwlsaWtlbHkoX19yZXN1bHQpOwkJCQkJfSkKICNlbmRpZiAvLyBDT05GSUdfWDg2XzMyCiAjZW5kaWYgLy8gQ09ORklHX0NDX0hBU19BU01fR09UT19USUVEX09VVFBVVAogCkBAIC01NTEsMTEgJiM0Mzs1OTQsMTggQEAgZG8gewkJCQkJCQkJCQlcCiAKIGV4dGVybiB2b2lkIF9fdHJ5X2NtcHhjaGdfdXNlcl93cm9uZ19zaXplKHZvaWQpOwogCi0jaWZuZGVmIENPTkZJR19YODZfMzIKJiM0MzsjaWZkZWYgQ09ORklHX1g4Nl8zMgomIzQzOy8qIEFsd2F5cyBmYWlsIG9uIDMyIGJpdCBhcmNoIGFzIGl0IGRvIG5vdCBzdXBwb3J0IDEyOCBjbXB4Y2hnIChpLmUuIGNtcHhjaGcxNmIKJiM0MzsgKiBpbnN0cnVjdGlvbikuCiYjNDM7ICovCiYjNDM7I2RlZmluZSBfX3RyeV9jbXB4Y2hnMTI4X3VzZXJfYXNtKF9wdHIsIF9wb2xkLCBfbmV3LCBsYWJlbCkgKDEpCiYjNDM7I2Vsc2UKICNkZWZpbmUgX190cnlfY21weGNoZzY0X3VzZXJfYXNtKF9wdHIsIF9vbGRwLCBfbnZhbCwgX2xhYmVsKQkJXAogCV9fdHJ5X2NtcHhjaGdfdXNlcl9hc20oJiMzNDtxJiMzNDssICYjMzQ7ciYjMzQ7LCAoX3B0ciksIChfb2xkcCksIChfbnZhbCksIF9sYWJlbCkKJiM0MzsKICNlbmRpZgogCiYjNDM7CiAvKgogICogRm9yY2UgdGhlIHBvaW50ZXIgdG8gdSZsdDtzaXplJmd0OyB0byBtYXRjaCB0aGUgc2l6ZSBleHBlY3RlZCBieSB0aGUgYXNtIGhlbHBlci4KICAqIGNsYW5nL0xMVk0gY29tcGlsZXMgYWxsIGNhc2VzIGFuZCBvbmx5IGRpc2NhcmRzIHRoZSB1bnVzZWQgcGF0aHMgYWZ0ZXIKQEAgLTU4MCw2ICYjNDM7NjMwLDEwIEBAIGV4dGVybiB2b2lkIF9fdHJ5X2NtcHhjaGdfdXNlcl93cm9uZ19zaXplKHZvaWQpOwogCWNhc2UgODoJX19yZXQgPSBfX3RyeV9jbXB4Y2hnNjRfdXNlcl9hc20oKF9fZm9yY2UgdTY0ICopKF9wdHIpLCAoX29sZHApLFwKIAkJCQkJCSAoX252YWwpLCBfbGFiZWwpOwkJXAogCQlicmVhazsJCQkJCQkJCVwKJiM0MzsJY2FzZSAxNjoJCQkJCQkJCVwKJiM0MzsJCV9fcmV0ID0gX190cnlfY21weGNoZzEyOF91c2VyX2FzbSgoX19mb3JjZSB1MTI4ICopKF9wdHIpLAlcCiYjNDM7CQkJCQkJICAoX29sZHApLCAoX252YWwpLCBfbGFiZWwpOwlcCiYjNDM7CQlicmVhazsJCQkJCQkJCVwKIAlkZWZhdWx0OiBfX3RyeV9jbXB4Y2hnX3VzZXJfd3Jvbmdfc2l6ZSgpOwkJCQlcCiAJfQkJCQkJCQkJCVwKIAlfX3JldDsJCQkJCQl9KQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL2VtdWxhdGUuYyBiL2FyY2gveDg2L2t2bS9lbXVsYXRlLmMKaW5kZXggYzhlMjkyZTlhMjRkZmUuLjlkZjU1YjNjNTYyNzY1IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9lbXVsYXRlLmMKQEAgLTIxODgsMjQgJiM0MzsyMTg4LDM2IEBAIHN0YXRpYyBpbnQgZW1fY2FsbF9uZWFyX2FicyhzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKIAlyZXR1cm4gcmM7CiB9CiAKJiM0MzsjZGVmaW5lIGVtX2NtcHhjaGc4Yl8xNmIoX19jLCByYml0cywgbWJpdHMpXAomIzQzO2RvIHsJCQkJCQkJCQkJCQlcCiYjNDM7CXUjI21iaXRzIG9sZCA9IF9fYy0mZ3Q7ZHN0Lm9yaWdfdmFsIyNtYml0czsJCQkJCQlcCiYjNDM7CQkJCQkJCQkJCQkJXAomIzQzOwlCVUlMRF9CVUdfT04ocmJpdHMgKiAyICE9IG1iaXRzKTsJCQkJCQkJXAomIzQzOwkJCQkJCQkJCQkJCVwKJiM0MzsJaWYgKCgodSMjcmJpdHMpIChvbGQgJmd0OyZndDsgMCkgIT0gKHUjI3JiaXRzKSByZWdfcmVhZChjdHh0LCBWQ1BVX1JFR1NfUkFYKSkgfHwJCVwKJiM0MzsJICAgICgodSMjcmJpdHMpIChvbGQgJmd0OyZndDsgcmJpdHMpICE9ICh1IyNyYml0cykgcmVnX3JlYWQoY3R4dCwgVkNQVV9SRUdTX1JEWCkpKSB7CQlcCiYjNDM7CQkqcmVnX3dyaXRlKGN0eHQsIFZDUFVfUkVHU19SQVgpID0gKHUjI3JiaXRzKSAob2xkICZndDsmZ3Q7IDApOwkJCVwKJiM0MzsJCSpyZWdfd3JpdGUoY3R4dCwgVkNQVV9SRUdTX1JEWCkgPSAodSMjcmJpdHMpIChvbGQgJmd0OyZndDsgcmJpdHMpOwkJCVwKJiM0MzsJCWN0eHQtJmd0O2VmbGFncyAmYW1wOz0gflg4Nl9FRkxBR1NfWkY7CQkJCQkJCVwKJiM0MzsJfSBlbHNlIHsJCQkJCQkJCQkJXAomIzQzOwkJY3R4dC0mZ3Q7ZHN0LnZhbCMjbWJpdHMgPSAoKHUjI21iaXRzKXJlZ19yZWFkKGN0eHQsIFZDUFVfUkVHU19SQ1gpICZsdDsmbHQ7IHJiaXRzKSB8CVwKJiM0MzsJCQkJCSh1IyNyYml0cykgcmVnX3JlYWQoY3R4dCwgVkNQVV9SRUdTX1JCWCk7CQlcCiYjNDM7CQkJCQkJCQkJCQkJXAomIzQzOwkJY3R4dC0mZ3Q7ZWZsYWdzIHw9IFg4Nl9FRkxBR1NfWkY7CQkJCQkJCVwKJiM0MzsJfQkJCQkJCQkJCQkJXAomIzQzO30gd2hpbGUoMCkKJiM0MzsKIHN0YXRpYyBpbnQgZW1fY21weGNoZzhiKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQogewotCXU2NCBvbGQgPSBjdHh0LSZndDtkc3Qub3JpZ192YWw2NDsKLQotCWlmIChjdHh0LSZndDtkc3QuYnl0ZXMgPT0gMTYpCiYjNDM7CWlmIChXQVJOX09OX09OQ0UoOCAmIzQzOyAhIShjdHh0LSZndDtyZXhfYml0cyAmYW1wOyBSRVhfVykgKiA4ICE9IGN0eHQtJmd0O2RzdC5ieXRlcykpCiAJCXJldHVybiBYODZFTVVMX1VOSEFORExFQUJMRTsKIAotCWlmICgoKHUzMikgKG9sZCAmZ3Q7Jmd0OyAwKSAhPSAodTMyKSByZWdfcmVhZChjdHh0LCBWQ1BVX1JFR1NfUkFYKSkgfHwKLQkgICAgKCh1MzIpIChvbGQgJmd0OyZndDsgMzIpICE9ICh1MzIpIHJlZ19yZWFkKGN0eHQsIFZDUFVfUkVHU19SRFgpKSkgewotCQkqcmVnX3dyaXRlKGN0eHQsIFZDUFVfUkVHU19SQVgpID0gKHUzMikgKG9sZCAmZ3Q7Jmd0OyAwKTsKLQkJKnJlZ193cml0ZShjdHh0LCBWQ1BVX1JFR1NfUkRYKSA9ICh1MzIpIChvbGQgJmd0OyZndDsgMzIpOwotCQljdHh0LSZndDtlZmxhZ3MgJmFtcDs9IH5YODZfRUZMQUdTX1pGOwotCX0gZWxzZSB7Ci0JCWN0eHQtJmd0O2RzdC52YWw2NCA9ICgodTY0KXJlZ19yZWFkKGN0eHQsIFZDUFVfUkVHU19SQ1gpICZsdDsmbHQ7IDMyKSB8Ci0JCQkodTMyKSByZWdfcmVhZChjdHh0LCBWQ1BVX1JFR1NfUkJYKTsKLQotCQljdHh0LSZndDtlZmxhZ3MgfD0gWDg2X0VGTEFHU19aRjsKLQl9CiYjNDM7CWlmICghKGN0eHQtJmd0O3JleF9iaXRzICZhbXA7IFJFWF9XKSkKJiM0MzsJCWVtX2NtcHhjaGc4Yl8xNmIoY3R4dCwgMzIsIDY0KTsKJiM0MzsjaWZkZWYgQ09ORklHX1g4Nl82NAomIzQzOwllbHNlCiYjNDM7CQllbV9jbXB4Y2hnOGJfMTZiKGN0eHQsIDY0LCAxMjgpOwomIzQzOyNlbmRpZgogCXJldHVybiBYODZFTVVMX0NPTlRJTlVFOwogfQogCkBAIC01NDA1LDggJiM0Mzs1NDE3LDE0IEBAIGludCB4ODZfZW11bGF0ZV9pbnNuKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0LCBib29sIGNoZWNrX2ludGVyY2VwdHMpCiAJCQlnb3RvIGRvbmU7CiAJCX0KIAl9Ci0JLyogQ29weSBmdWxsIDY0LWJpdCB2YWx1ZSBmb3IgQ01QWENIRzhCLiAgKi8KLQljdHh0LSZndDtkc3Qub3JpZ192YWw2NCA9IGN0eHQtJmd0O2RzdC52YWw2NDsKJiM0MzsJLyogQ29weSBmdWxsIDY0LzEyOC1iaXQgdmFsdWUgZm9yIENNUFhDSEc4Qi4gICovCiYjNDM7CiYjNDM7I2lmZGVmIENPTkZJR19YODZfNjQKJiM0MzsJaWYgKGN0eHQtJmd0O2RzdC5ieXRlcyA9PSAxNikKJiM0MzsJCWN0eHQtJmd0O2RzdC5vcmlnX3ZhbDEyOCA9IGN0eHQtJmd0O2RzdC52YWwxMjg7CiYjNDM7CWVsc2UKJiM0MzsjZW5kaWYKJiM0MzsJCWN0eHQtJmd0O2RzdC5vcmlnX3ZhbDY0ID0gY3R4dC0mZ3Q7ZHN0LnZhbDY0OwogCiBzcGVjaWFsX2luc246CiAKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9rdm1fZW11bGF0ZS5oIGIvYXJjaC94ODYva3ZtL2t2bV9lbXVsYXRlLmgKaW5kZXggZmIzZGFiNGI1YTUzZTcuLmE1MTY3NzIxN2FkYTQzIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0va3ZtX2VtdWxhdGUuaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0va3ZtX2VtdWxhdGUuaApAQCAtMjU1LDYgJiM0MzsyNTUsOSBAQCBzdHJ1Y3Qgb3BlcmFuZCB7CiAJdW5pb24gewogCQl1bnNpZ25lZCBsb25nIG9yaWdfdmFsOwogCQl1NjQgb3JpZ192YWw2NDsKJiM0MzsjaWZkZWYgQ09ORklHX1g4Nl82NAomIzQzOwkJdTEyOCBvcmlnX3ZhbDEyODsKJiM0MzsjZW5kaWYKIAl9OwogCXVuaW9uIHsKIAkJdW5zaWduZWQgbG9uZyAqcmVnOwpAQCAtMjY4LDYgJiM0MzsyNzEsOSBAQCBzdHJ1Y3Qgb3BlcmFuZCB7CiAJdW5pb24gewogCQl1bnNpZ25lZCBsb25nIHZhbDsKIAkJdTY0IHZhbDY0OwomIzQzOyNpZmRlZiBDT05GSUdfWDg2XzY0CiYjNDM7CQl1MTI4IHZhbDEyODsKJiM0MzsjZW5kaWYKIAkJY2hhciB2YWxwdHJbc2l6ZW9mKGF2eDI1Nl90KV07CiAJCXNzZTEyOF90IHZlY192YWw7CiAJCWF2eDI1Nl90IHZlY192YWwyOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3ZtL3g4Ni5jCmluZGV4IDNmYjY0OTA1ZDE5MDcxLi40MGM4NGY4YzQ5MTI5NCAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS94ODYuYwpAQCAtODMyMiw3ICYjNDM7ODMyMiw3IEBAIHN0YXRpYyBpbnQgZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZChzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCwKIAlpbnQgcjsKIAogCS8qIGd1ZXN0cyBjbXB4Y2hnOGIgaGF2ZSB0byBiZSBlbXVsYXRlZCBhdG9taWNhbGx5ICovCi0JaWYgKGJ5dGVzICZndDsgOCB8fCAoYnl0ZXMgJmFtcDsgKGJ5dGVzIC0gMSkpKQomIzQzOwlpZiAoYnl0ZXMgJmd0OyAyICogc2l6ZW9mKHVuc2lnbmVkIGxvbmcpIHx8IChieXRlcyAmYW1wOyAoYnl0ZXMgLSAxKSkpCiAJCWdvdG8gZW11bF93cml0ZTsKIAogCWdwYSA9IGt2bV9tbXVfZ3ZhX3RvX2dwYV93cml0ZSh2Y3B1LCBhZGRyLCBOVUxMKTsKQEAgLTgzNjIsNiAmIzQzOzgzNjIsMTEgQEAgc3RhdGljIGludCBlbXVsYXRvcl9jbXB4Y2hnX2VtdWxhdGVkKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0LAogCWNhc2UgODoKIAkJciA9IGVtdWxhdG9yX3RyeV9jbXB4Y2hnX3VzZXIodTY0LCBodmEsIG9sZCwgbmV3KTsKIAkJYnJlYWs7CiYjNDM7I2lmZGVmIENPTkZJR19YODZfNjQKJiM0MzsJY2FzZSAxNjoKJiM0MzsJCXIgPSBlbXVsYXRvcl90cnlfY21weGNoZ191c2VyKHUxMjgsIGh2YSwgb2xkLCBuZXcpOwomIzQzOwkJYnJlYWs7CiYjNDM7I2VuZGlmCiAJZGVmYXVsdDoKIAkJQlVHKCk7CiAJfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNzowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDMzCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNDczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGNtcHhjaGcxNmIgS1ZNIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gcmV2aWV3aW5nIHRoaXMgcGF0Y2ggdGhhdCBpbnRyb2R1Y2VzIDEyOC1iaXQgY29tcGFyZS1hbmQtc3dhcCAoY21weGNoZzE2Yikgc3VwcG9ydCBpbnRvIHRoZSB4ODYgdWFjY2VzcyBhbmQgS1ZNIGVtdWxhdGlvbiBsYXllcnMuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHNvdW5kLiBUaGV5JiMzOTt2ZSBhZGRlZCBgX190cnlfY21weGNoZzEyOF91c2VyX2FzbWAgdG8gYGFyY2gveDg2L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaGAsIHdoaWNoIGlzIHRoZSBleHBlY3RlZCBsb2NhdGlvbi4gQ3J1Y2lhbGx5LCB0aGUgS1ZNIGVtdWxhdGlvbiBjb21wb25lbnRzIGhhdmUgYmVlbiBtb2RpZmllZDogYGFyY2gveDg2L2t2bS9lbXVsYXRlLmNgLCBgYXJjaC94ODYva3ZtL2t2bV9lbXVsYXRlLmhgLCBhbmQgYGFyY2gveDg2L2t2bS94ODYuY2AgYWxsIHNlZSBjaGFuZ2VzIHRvIGhhbmRsZSB0aGUgY21weGNoZzE2YiBpbnN0cnVjdGlvbi4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIGlzICpkZWZpbml0ZWx5KiByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgKndpdGhpbiB0aGUgS1ZNIGNvbnRleHQqLiBUaGV5JiMzOTt2ZSB1cGRhdGVkIGBlbV9jbXB4Y2hnOGJgIGluIGBlbXVsYXRlLmNgIHRvIGNvbmRpdGlvbmFsbHkgaGFuZGxlIHRoZSAxMjgtYml0IHZlcnNpb24gd2hlbiBgUkVYX1dgIGlzIHNldCAod2hpY2ggaXMgc3RhbmRhcmQgZm9yIDY0LWJpdCBpbnN0cnVjdGlvbnMpLiBBbHNvLCBgZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZGAgaW4gYHg4Ni5jYCBub3cgc3VwcG9ydHMgdGhlIDE2LWJ5dGUgY29tcGFyZS1hbmQtc3dhcCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgc2VlIHRoZSBmbG93OyBpdOKAmXMgYWxsIGNvbm5lY3RlZC4KCk5vdywgbXkgZm9jdXMgc2hpZnRzIHRvIGZ1enppbmcuIFdlIGFic29sdXRlbHkgbmVlZCB0byBzdWJqZWN0IHRoaXMgdG8gcmlnb3JvdXMgdGVzdGluZy4gTGV0JiMzOTtzIGlkZW50aWZ5IHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludHMgZm9yIGZ1enppbmcuIFdlJiMzOTtsbCBiZSB0YXJnZXRpbmc6CgoqICAgYGVtX2NtcHhjaGc4YmAgaW4gYGFyY2gveDg2L2t2bS9lbXVsYXRlLmNgCiogICBgZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZGAgaW4gYGFyY2gveDg2L2t2bS94ODYuY2AKCk5leHQsIEkgbmVlZCB0byB2ZXJpZnkgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBJIHNlZSB0aGUgc3RhbmRhcmQgZ3VhcmRzOiBgI2lmZGVmIENPTkZJR19YODZfNjRgIGFuZCBgI2lmbmRlZiBDT05GSUdfWDg2XzMyYCwgd2hpY2ggaXMgZXhwZWN0ZWQgZm9yIDY0LWJpdCBhcmNoaXRlY3R1cmUgc3VwcG9ydC4gR2l2ZW4gdGhlIEtWTSBpbnZvbHZlbWVudCwgYENPTkZJR19LVk1gIGlzLCBuYXR1cmFsbHksIGEgcHJlcmVxdWlzaXRlLiBUaGF0IGFsbCBsb29rcyBjb3JyZWN0LgoKRmluYWxseSwganVzdCB0byBiZSB0aG9yb3VnaCwgSSB3aWxsIHVzZSBgZ3JlcHBlcmAgb24gdGhlIGNvZGViYXNlIHRvIGxvb2sgZm9yIGFueSByZWxhdGVkIGZ1bmN0aW9ucyB0aGF0IG1heSBoYXZlIGJlZW4gb3Zlcmxvb2tlZCBkdXJpbmcgdGhpcyBwYXRjaC4gSSB3YW50IHRvIGVuc3VyZSB3ZSYjMzk7dmUgZ290IGEgY29tcHJlaGVuc2l2ZSB2aWV3IG9mIHRoZSBjaGFuZ2UmIzM5O3MgaW1wYWN0LiBTcGVjaWZpY2FsbHksIGl0IHdvdWxkIGJlIHVzZWZ1bCB0byBjaGVjayBhbGwgY2FsbCBzaXRlcyB0byBgZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZGAgYW5kIGBlbV9jbXB4Y2hnOGJgIGluIG9yZGVyIHRvIGRldGVybWluZSBhbnkgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy4gSSB3YW50IHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoZXkgZGlkbiYjMzk7dCBtaXNzIHNvbWV0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNzowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlbV9jbXB4Y2hnOGImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL2VtdWxhdGUuYz0yMTc3PXN0YXRpYyBpbnQgZW1fY2FsbF9uZWFyX2FicyhzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dClcbi0tXG5hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jLTIxOTAtXG5hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jOjIxOTE6I2RlZmluZSBlbV9jbXB4Y2hnOGJfMTZiKF9fYywgcmJpdHMsIG1iaXRzKVxcXG5hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jLTIxOTItZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4tLVxuYXJjaC94ODYva3ZtL2VtdWxhdGUuYy0yMjA5LVxuYXJjaC94ODYva3ZtL2VtdWxhdGUuYzoyMjEwOnN0YXRpYyBpbnQgZW1fY21weGNoZzhiKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KVxuYXJjaC94ODYva3ZtL2VtdWxhdGUuYy0yMjExLXtcbi0tXG5hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jLTIyMTUtXHRpZiAoIShjdHh0LVx1MDAzZXJleF9iaXRzIFx1MDAyNiBSRVhfVykpXG5hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jOjIyMTY6XHRcdGVtX2NtcHhjaGc4Yl8xNmIoY3R4dCwgMzIsIDY0KTtcbmFyY2gveDg2L2t2bS9lbXVsYXRlLmMtMjIxNy0jaWZkZWYgQ09ORklHX1g4Nl82NFxuYXJjaC94ODYva3ZtL2VtdWxhdGUuYy0yMjE4LVx0ZWxzZVxuYXJjaC94ODYva3ZtL2VtdWxhdGUuYzoyMjE5Olx0XHRlbV9jbXB4Y2hnOGJfMTZiKGN0eHQsIDY0LCAxMjgpO1xuYXJjaC94ODYva3ZtL2VtdWxhdGUuYy0yMjIwLSNlbmRpZlxuLS1cbmFyY2gveDg2L2t2bS9lbXVsYXRlLmM9NDExMT1zdGF0aWMgY29uc3Qgc3RydWN0IGdyb3VwX2R1YWwgZ3JvdXA5ID0geyB7XG5hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jOjQxMTI6XHROLCBJKERzdE1lbTY0IHwgTG9jayB8IFBhZ2VUYWJsZSwgZW1fY21weGNoZzhiKSwgTiwgTiwgTiwgTiwgTiwgTixcbmFyY2gveDg2L2t2bS9lbXVsYXRlLmMtNDExMy19LCB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDc6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjY2MAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIGNvZGUgc25pcHBldHMsIHN1bW1hcml6ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXMgeW91IHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgYGVtX2NtcHhjaGc4YmAgTGFuZHNjYXBlKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgZW1fY21weGNoZzhiYCBmdW5jdGlvbiwgYW5kIGl0JiMzOTtzIGZsYWdnZWQgYXMgYmVpbmcgcGFydCBvZiB0aGUgYGdyb3VwOWAgaW5zdHJ1Y3Rpb24gZ3JvdXAuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyBzb21ldGhpbmcgY29yZSwgcHJvYmFibHkgcmVsYXRlZCB0byBhdG9taWMgb3BlcmF0aW9ucywgc3BlY2lmaWNhbGx5IG9uIDgtYnl0ZSB2YWx1ZXMuIEdpdmVuIHRoZSBjb250ZXh0LCBJJiMzOTttIGd1ZXNzaW5nIHRoaXMgZnVuY3Rpb24gaXMgZGVlcGx5IGludGVydHdpbmVkIHdpdGggY29uY3VycmVuY3kgcHJpbWl0aXZlcyB3aXRoaW4gdGhlIHZpcnR1YWwgbWFjaGluZS4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB3aGF0IGBncm91cDlgIGFjdHVhbGx5ICppcyogd2l0aGluIHRoaXMgY29kZWJhc2UsIGJ1dCBteSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgaXQmIzM5O3MgaGFuZGxpbmcgbWVtb3J5IHN5bmNocm9uaXphdGlvbiBjb25jZXJucy4KClRoZW4sIEkgc2VlIGBlbXVsYXRvcl9jbXB4Y2hnX2VtdWxhdGVkYCBtZW50aW9uZWQsIHdoaWNoIGlzIGxvY2F0ZWQgaW4gYGFyY2gveDg2L2t2bS94ODYuY2AuIEFoLCByaWdodCwgdGhhdCBwb2ludHMgdG8gdGhlIGVtdWxhdGlvbiBsYXllciB3aXRoaW4gdGhlIEtWTSBoeXBlcnZpc29yIG9uIHg4NiBhcmNoaXRlY3R1cmVzLiBUaGlzIGlzIHRoZSBwYXJ0IHRoYXQgaW50ZXJlc3RzIG1lIHRoZSBtb3N0LCBjb25zaWRlcmluZyBteSBleHBlcmllbmNlLiBJdCBzdHJvbmdseSBpbXBsaWVzIHRoYXQgYGVtX2NtcHhjaGc4YmAgKHdoaWNoIGlzIHByZXN1bWFibHkgZW11bGF0aW5nIHRoZSBDTXB4Y2hnOGIgaW5zdHJ1Y3Rpb24pIGlzIGhhbmRsZWQgaW4gYSBzb2Z0d2FyZSBmYWxsYmFjayBwYXRoLiBUaGlzIGlzIGxpa2VseSB0byBiZSB1c2VkIGluIG9sZGVyIHByb2Nlc3NvcnMgb3Igd2hlbiBjZXJ0YWluIGFyY2hpdGVjdHVyYWwgZmVhdHVyZXMgYXJlIGRpc2FibGVkLiBJIHdhbnQgdG8gbG9vayBpbnRvIGhvdyB0aGUgZW11bGF0ZWQgdmVyc2lvbiBoYW5kbGVzIHRoZSBjb21wbGV4aXRpZXMgb2YgdGhpcyBpbnN0cnVjdGlvbiAobG9hZC1saW5rZWQvc3RvcmUtY29uZGl0aW9uYWwgYW5kIG1lbW9yeSBvcmRlcmluZyksIGVzcGVjaWFsbHkgYXJvdW5kIHRoZSBudWFuY2VzIG9mIGhhbmRsaW5nIGF0b21pYyBvcGVyYXRpb25zIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoaXMgc3VnZ2VzdHMgdGhlIGtlcm5lbCBpcyBsaWtlbHkgcnVubmluZyB0aGUgZW11bGF0ZWQgdmVyc2lvbiByYXRoZXIgdGhhbiBkaXJlY3RseSB1c2luZyB0aGUgbmF0aXZlIGhhcmR3YXJlIGluc3RydWN0aW9uIHRvIG1haW50YWluIGNvbXBhdGliaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDc6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veDg2LmM9ODI5OD1zdGF0aWMgaW50IGVtdWxhdG9yX3dyaXRlX2VtdWxhdGVkKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0LFxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy04MzEwLVxuYXJjaC94ODYva3ZtL3g4Ni5jOjgzMTE6c3RhdGljIGludCBlbXVsYXRvcl9jbXB4Y2hnX2VtdWxhdGVkKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0LFxuYXJjaC94ODYva3ZtL3g4Ni5jLTgzMTItXHRcdFx0XHQgICAgIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9ODg5OT1zdGF0aWMgY29uc3Qgc3RydWN0IHg4Nl9lbXVsYXRlX29wcyBlbXVsYXRlX29wcyA9IHtcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtODkwNy1cdC53cml0ZV9lbXVsYXRlZCAgICAgID0gZW11bGF0b3Jfd3JpdGVfZW11bGF0ZWQsXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODkwODpcdC5jbXB4Y2hnX2VtdWxhdGVkICAgID0gZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZCxcbmFyY2gveDg2L2t2bS94ODYuYy04OTA5LVx0LmludmxwZyAgICAgICAgICAgICAgPSBlbXVsYXRvcl9pbnZscGcsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDc6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM4OAoJCQkJCQkJb3V0cHV0OiAxMzkKCQkJCQkJCXRob3VnaHRzOiAzMDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgS1ZNJiMzOTtzIGNtcHhjaGcxNmIgRW11bGF0aW9uIGZvciBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYGNtcHhjaGcxNmJgIEtWTSBlbXVsYXRpb24gcGF0Y2gsIGFuZCBteSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBjb3JlIGZ1bmN0aW9ucy4gRnJvbSB3aGF0IEkgc2VlLCBgZW1fY21weGNoZzhiYCBhbmQgYGVtdWxhdG9yX2NtcHhjaGdfZW11bGF0ZWRgIGFyZSB0aGUgcHJpbWFyeSBvbmVzIGRlYWxpbmcgd2l0aCB0aGlzIGluc3RydWN0aW9uLiBUaGUgS1ZNIGNvbmZpZ3VyYXRpb24sIG5hdHVyYWxseSwgaXMgYEtWTWAuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLgoKTGV0IG1lIGp1c3QgcXVpY2tseSB2ZXJpZnkgaWYgYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zIGFyZSByZWxldmFudCBoZXJlLiBJJiMzOTttIG5vdGluZyB0aGF0IGBDT05GSUdfWDg2XzY0YCBpcyByZXF1aXJlZCBmb3IgdGhlIDEyOC1iaXQgY29tcGFyZS1hbmQtZXhjaGFuZ2UgbG9naWMsIGJ1dCBzaW5jZSBTeXprYWxsZXIsIHdoaWNoIHRoaXMgaXMgbGlrZWx5IGZvciwgcHJpbWFyaWx5IG9wZXJhdGVzIG9uIHg4Nl82NCwgdGhhdCYjMzk7cyBub3QgYSBtYWpvciBjb25jZXJuLiBUaGUgcHJpbWFyeSBmb2N1cyByZW1haW5zIG9uIGBDT05GSUdfS1ZNYC4KCk5vdywgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhlIHJhdGlvbmFsZSBiZWhpbmQgZnV6emluZyB0aGlzLiBUaGUgcGF0Y2gmIzM5O3MgY29yZSBmdW5jdGlvbiBpcyBlbXVsYXRpbmcgdGhlIGBjbXB4Y2hnMTZiYCBpbnN0cnVjdGlvbiB3aXRoaW4gS1ZNLiBJdCYjMzk7cyB0b3VjaGluZyB0aGUgaW5zdHJ1Y3Rpb24gZW11bGF0b3IgaXRzZWxmLCBhcyB3ZWxsIGFzIHRoZSBtZW1vcnkgYWNjZXNzIGNhbGxiYWNrcywgc3BlY2lmaWNhbGx5IHRvIGhhbmRsZSBhdG9taWMgMTYtYnl0ZSBjb21wYXJlLWFuZC1leGNoYW5nZSBvcGVyYXRpb25zLiBUaGlzIHJlcHJlc2VudHMgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiB0byB0aGUgdmVyeSBoZWFydCBvZiB0aGUgS1ZNIGVtdWxhdGlvbi4gQ3JpdGljYWxseSwgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIGRpcmVjdGx5IGFjY2Vzc2libGUgdG8gYSBndWVzdCB0aGF0IGV4ZWN1dGVzIHRoZSBgY21weGNoZzE2YmAgaW5zdHJ1Y3Rpb24uIFRoZXJlZm9yZSwgZnV6emluZyBpcyBhYnNvbHV0ZWx5IHdhcnJhbnRlZC4gSXQgaXMgYSBjcml0aWNhbCBwYXRoLgoKU28sIHRoZSBrZXkgc3ltYm9scyBJIG5lZWQgdG8gY29uY2VudHJhdGUgb24gZm9yIGZ1enppbmcgcmVtYWluIGBlbV9jbXB4Y2hnOGJgIGFuZCBgZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZGAuIEkmIzM5O3ZlIGFscmVhZHkgY29uZmlybWVkIGBLVk1gIGFzIHRoZSBlc3NlbnRpYWwgY29uZmlnLiBJJiMzOTtsbCBkb3VibGUtY2hlY2sgZm9yIGFueSBvdGhlciBwb3RlbnRpYWxseSByZWxldmFudCBmdW5jdGlvbnMsIGJ1dCBJIHRoaW5rIHRoYXQmIzM5O3MgaXQuIExvb2tpbmcgZGVlcGVyIG5vdzogSSYjMzk7bSBzZWVpbmcgdGhhdCBgX190cnlfY21weGNoZzEyOF91c2VyX2FzbWAgaXMgYSBtYWNybywgYW5kIHNvIGlzIGBlbV9jbXB4Y2hnOGJfMTZiYC4gU28sIG5vLCB0aGUgZm9jdXMgc3ltYm9scyBhcmUgY29ycmVjdC4KClRoYXQgc29saWRpZmllcyB0aGluZ3MuIEkgYW0gc2F0aXNmaWVkIHdpdGggbXkgYW5hbHlzaXMuIEkmIzM5O20gY2FsbGluZyBzZXQtcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNzowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZW1fY21weGNoZzhiJiMzNDssCiAgICAmIzM0O2VtdWxhdG9yX2NtcHhjaGdfZW11bGF0ZWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBlbXVsYXRpbmcgdGhlIGNtcHhjaGcxNmIgaW5zdHJ1Y3Rpb24gaW4gS1ZNLiBJdCBtb2RpZmllcyB0aGUgaW5zdHJ1Y3Rpb24gZW11bGF0b3IgYW5kIHRoZSBtZW1vcnkgYWNjZXNzIGNhbGxiYWNrcyB0byBoYW5kbGUgMTYtYnl0ZSBhdG9taWMgY29tcGFyZS1hbmQtZXhjaGFuZ2Ugb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIEtWTSBlbXVsYXRpb24gbG9naWMgdGhhdCBpcyByZWFjaGFibGUgYnkgYSBndWVzdCBleGVjdXRpbmcgdGhlIGNtcHhjaGcxNmIgaW5zdHJ1Y3Rpb24sIGFuZCB0aHVzIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2VtX2NtcHhjaGc4YiYjMzQ7LAogICAgJiMzNDtlbXVsYXRvcl9jbXB4Y2hnX2VtdWxhdGVkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgZW11bGF0aW5nIHRoZSBjbXB4Y2hnMTZiIGluc3RydWN0aW9uIGluIEtWTS4gSXQgbW9kaWZpZXMgdGhlIGluc3RydWN0aW9uIGVtdWxhdG9yIGFuZCB0aGUgbWVtb3J5IGFjY2VzcyBjYWxsYmFja3MgdG8gaGFuZGxlIDE2LWJ5dGUgYXRvbWljIGNvbXBhcmUtYW5kLWV4Y2hhbmdlIG9wZXJhdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY29yZSBLVk0gZW11bGF0aW9uIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGJ5IGEgZ3Vlc3QgZXhlY3V0aW5nIHRoZSBjbXB4Y2hnMTZiIGluc3RydWN0aW9uLCBhbmQgdGh1cyBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDZUMDc6MDE6NDYuNjQ5MjIyODk2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjczNjI0Mjg0NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZW1fY21weGNoZzhiXCIsXG4gICAgXCJlbXVsYXRvcl9jbXB4Y2hnX2VtdWxhdGVkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBlbXVsYXRpbmcgdGhlIGNtcHhjaGcxNmIgaW5zdHJ1Y3Rpb24gaW4gS1ZNLiBJdCBtb2RpZmllcyB0aGUgaW5zdHJ1Y3Rpb24gZW11bGF0b3IgYW5kIHRoZSBtZW1vcnkgYWNjZXNzIGNhbGxiYWNrcyB0byBoYW5kbGUgMTYtYnl0ZSBhdG9taWMgY29tcGFyZS1hbmQtZXhjaGFuZ2Ugb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIEtWTSBlbXVsYXRpb24gbG9naWMgdGhhdCBpcyByZWFjaGFibGUgYnkgYSBndWVzdCBleGVjdXRpbmcgdGhlIGNtcHhjaGcxNmIgaW5zdHJ1Y3Rpb24sIGFuZCB0aHVzIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA3OjAxOjQ2LjY0OTIyODQyNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkxODc1ODcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNjdlMDY0MjY4NTdkMDNkNjA3YjNjNGYwOGE1OTY5ZGQxNWU4ZmU3MFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCA2IDA3OjAxOjQ1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaFxcbmluZGV4IDM2NzI5N2IxODhjMzljLi4xMjM3NTVkNDcxMDk5NyAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS91YWNjZXNzLmhcXG4rKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS91YWNjZXNzLmhcXG5AQCAtNDA3LDYgKzQwNywyNSBAQCBkbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRpZiAodW5saWtlbHkoIXN1Y2Nlc3MpKVxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0Kl9vbGQgPSBfX29sZDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGxpa2VseShzdWNjZXNzKTtcXHRcXHRcXHRcXHRcXHR9KVxcbisjZWxzZSAvLyAhQ09ORklHX1g4Nl8zMlxcbisjZGVmaW5lIF9fdHJ5X2NtcHhjaGcxMjhfdXNlcl9hc20oX3B0ciwgX3BvbGQsIF9uZXcsIGxhYmVsKVxcdCh7XFx0XFxcXFxcbitcXHRib29sIHN1Y2Nlc3M7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRfX3R5cGVvZl9fKF9wdHIpIF9vbGQgPSAoX190eXBlb2ZfXyhfcHRyKSkoX3BvbGQpO1xcdFxcdFxcXFxcXG4rXFx0X190eXBlb2ZfXygqKF9wdHIpKSBfX29sZCA9ICpfb2xkO1xcdFxcdFxcdFxcdFxcXFxcXG4rXFx0X190eXBlb2ZfXygqKF9wdHIpKSBfX25ldyA9IChfbmV3KTtcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGFzbV9nb3RvX291dHB1dChcXFwiXFxcXG5cXFwiXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQgICAgIFxcXCIxOiBcXFwiIExPQ0tfUFJFRklYIFxcXCJjbXB4Y2hnMTZiICVbcHRyXVxcXFxuXFxcIlxcdFxcdFxcXFxcXG4rXFx0XFx0ICAgICBfQVNNX0VYVEFCTEVfVUEoMWIsICVsW2xhYmVsXSlcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCAgICAgOiBcXFwiPUBjY3pcXFwiIChzdWNjZXNzKSxcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCAgICAgICBcXFwiK0FcXFwiIChfX29sZCksXFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQgICAgICAgW3B0cl0gXFxcIittXFxcIiAoKl9wdHIpXFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQgICAgIDogXFxcImJcXFwiICgodTY0KV9fbmV3KSxcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCAgICAgICBcXFwiY1xcXCIgKCh1NjQpKCh1MTI4KV9fbmV3IFxcdTAwM2VcXHUwMDNlIDY0KSlcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCAgICAgOiBcXFwibWVtb3J5XFxcIlxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0ICAgICA6IGxhYmVsKTtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGlmICh1bmxpa2VseSghc3VjY2VzcykpXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQqX29sZCA9IF9fb2xkO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0bGlrZWx5KHN1Y2Nlc3MpO1xcdFxcdFxcdFxcdFxcdH0pXFxuICNlbmRpZiAvLyBDT05GSUdfWDg2XzMyXFxuICNlbHNlICAvLyAhQ09ORklHX0NDX0hBU19BU01fR09UT19USUVEX09VVFBVVFxcbiAjZGVmaW5lIF9fdHJ5X2NtcHhjaGdfdXNlcl9hc20oaXR5cGUsIGx0eXBlLCBfcHRyLCBfcG9sZCwgX25ldywgbGFiZWwpXFx0KHsgXFxcXFxcbkBAIC00NjMsNiArNDgyLDMwIEBAIGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGlmICh1bmxpa2VseSghX19yZXN1bHQpKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0Kl9vbGQgPSBfX29sZDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGxpa2VseShfX3Jlc3VsdCk7XFx0XFx0XFx0XFx0XFx0fSlcXG4rI2Vsc2UgLy8hQ09ORklHX1g4Nl8zMlxcbisjZGVmaW5lIF9fdHJ5X2NtcHhjaGcxMjhfdXNlcl9hc20oX3B0ciwgX3BvbGQsIF9uZXcsIGxhYmVsKVxcdCh7XFx0XFxcXFxcbitcXHRpbnQgX19yZXN1bHQ7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRfX3R5cGVvZl9fKF9wdHIpIF9vbGQgPSAoX190eXBlb2ZfXyhfcHRyKSkoX3BvbGQpO1xcdFxcdFxcXFxcXG4rXFx0X190eXBlb2ZfXygqKF9wdHIpKSBfX29sZCA9ICpfb2xkO1xcdFxcdFxcdFxcdFxcXFxcXG4rXFx0X190eXBlb2ZfXygqKF9wdHIpKSBfX25ldyA9IChfbmV3KTtcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGFzbSB2b2xhdGlsZShcXFwiXFxcXG5cXFwiXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQgICAgIFxcXCIxOiBcXFwiIExPQ0tfUFJFRklYIFxcXCJjbXB4Y2hnMTZiICVbcHRyXVxcXFxuXFxcIlxcdFxcdFxcXFxcXG4rXFx0XFx0ICAgICBcXFwibW92ICQwLCAlW3Jlc3VsdF1cXFxcblxcXFx0XFxcIlxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0ICAgICBcXFwic2V0eiAlYltyZXN1bHRdXFxcXG5cXFwiXFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQgICAgIFxcXCIyOlxcXFxuXFxcIlxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0ICAgICBfQVNNX0VYVEFCTEVfVFlQRV9SRUcoMWIsIDJiLCBFWF9UWVBFX0VGQVVMVF9SRUcsXFx0XFxcXFxcbitcXHRcXHRcXHRcXHRcXHQgICAlW3Jlc3VsdF0pXFx0XFx0XFx0XFxcXFxcbitcXHRcXHQgICAgIDogW3Jlc3VsdF0gXFxcIj1xXFxcIiAoX19yZXN1bHQpLFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0ICAgICAgIFxcXCIrQVxcXCIgKF9fb2xkKSxcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCAgICAgICBbcHRyXSBcXFwiK21cXFwiICgqX3B0cilcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCAgICAgOiBcXFwiYlxcXCIgKCh1NjQpX19uZXcpLFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0ICAgICAgIFxcXCJjXFxcIiAoKHU2NCkoKHUxMjgpX19uZXcgXFx1MDAzZVxcdTAwM2UgNjQpKVxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0ICAgICA6IFxcXCJtZW1vcnlcXFwiLCBcXFwiY2NcXFwiKTtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGlmICh1bmxpa2VseShfX3Jlc3VsdCBcXHUwMDNjIDApKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0Z290byBsYWJlbDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGlmICh1bmxpa2VseSghX19yZXN1bHQpKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0Kl9vbGQgPSBfX29sZDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGxpa2VseShfX3Jlc3VsdCk7XFx0XFx0XFx0XFx0XFx0fSlcXG4gI2VuZGlmIC8vIENPTkZJR19YODZfMzJcXG4gI2VuZGlmIC8vIENPTkZJR19DQ19IQVNfQVNNX0dPVE9fVElFRF9PVVRQVVRcXG4gXFxuQEAgLTU1MSwxMSArNTk0LDE4IEBAIGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcbiBleHRlcm4gdm9pZCBfX3RyeV9jbXB4Y2hnX3VzZXJfd3Jvbmdfc2l6ZSh2b2lkKTtcXG4gXFxuLSNpZm5kZWYgQ09ORklHX1g4Nl8zMlxcbisjaWZkZWYgQ09ORklHX1g4Nl8zMlxcbisvKiBBbHdheXMgZmFpbCBvbiAzMiBiaXQgYXJjaCBhcyBpdCBkbyBub3Qgc3VwcG9ydCAxMjggY21weGNoZyAoaS5lLiBjbXB4Y2hnMTZiXFxuKyAqIGluc3RydWN0aW9uKS5cXG4rICovXFxuKyNkZWZpbmUgX190cnlfY21weGNoZzEyOF91c2VyX2FzbShfcHRyLCBfcG9sZCwgX25ldywgbGFiZWwpICgxKVxcbisjZWxzZVxcbiAjZGVmaW5lIF9fdHJ5X2NtcHhjaGc2NF91c2VyX2FzbShfcHRyLCBfb2xkcCwgX252YWwsIF9sYWJlbClcXHRcXHRcXFxcXFxuIFxcdF9fdHJ5X2NtcHhjaGdfdXNlcl9hc20oXFxcInFcXFwiLCBcXFwiclxcXCIsIChfcHRyKSwgKF9vbGRwKSwgKF9udmFsKSwgX2xhYmVsKVxcbitcXG4gI2VuZGlmXFxuIFxcbitcXG4gLypcXG4gICogRm9yY2UgdGhlIHBvaW50ZXIgdG8gdVxcdTAwM2NzaXplXFx1MDAzZSB0byBtYXRjaCB0aGUgc2l6ZSBleHBlY3RlZCBieSB0aGUgYXNtIGhlbHBlci5cXG4gICogY2xhbmcvTExWTSBjb21waWxlcyBhbGwgY2FzZXMgYW5kIG9ubHkgZGlzY2FyZHMgdGhlIHVudXNlZCBwYXRocyBhZnRlclxcbkBAIC01ODAsNiArNjMwLDEwIEBAIGV4dGVybiB2b2lkIF9fdHJ5X2NtcHhjaGdfdXNlcl93cm9uZ19zaXplKHZvaWQpO1xcbiBcXHRjYXNlIDg6XFx0X19yZXQgPSBfX3RyeV9jbXB4Y2hnNjRfdXNlcl9hc20oKF9fZm9yY2UgdTY0ICopKF9wdHIpLCAoX29sZHApLFxcXFxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0IChfbnZhbCksIF9sYWJlbCk7XFx0XFx0XFxcXFxcbiBcXHRcXHRicmVhaztcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGNhc2UgMTY6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRfX3JldCA9IF9fdHJ5X2NtcHhjaGcxMjhfdXNlcl9hc20oKF9fZm9yY2UgdTEyOCAqKShfcHRyKSxcXHRcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgKF9vbGRwKSwgKF9udmFsKSwgX2xhYmVsKTtcXHRcXFxcXFxuK1xcdFxcdGJyZWFrO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0ZGVmYXVsdDogX190cnlfY21weGNoZ191c2VyX3dyb25nX3NpemUoKTtcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdH1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdF9fcmV0O1xcdFxcdFxcdFxcdFxcdFxcdH0pXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9lbXVsYXRlLmMgYi9hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jXFxuaW5kZXggYzhlMjkyZTlhMjRkZmUuLjlkZjU1YjNjNTYyNzY1IDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2t2bS9lbXVsYXRlLmNcXG4rKysgYi9hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jXFxuQEAgLTIxODgsMjQgKzIxODgsMzYgQEAgc3RhdGljIGludCBlbV9jYWxsX25lYXJfYWJzKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KVxcbiBcXHRyZXR1cm4gcmM7XFxuIH1cXG4gXFxuKyNkZWZpbmUgZW1fY21weGNoZzhiXzE2YihfX2MsIHJiaXRzLCBtYml0cylcXFxcXFxuK2RvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdHUjI21iaXRzIG9sZCA9IF9fYy1cXHUwMDNlZHN0Lm9yaWdfdmFsIyNtYml0cztcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0QlVJTERfQlVHX09OKHJiaXRzICogMiAhPSBtYml0cyk7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGlmICgoKHUjI3JiaXRzKSAob2xkIFxcdTAwM2VcXHUwMDNlIDApICE9ICh1IyNyYml0cykgcmVnX3JlYWQoY3R4dCwgVkNQVV9SRUdTX1JBWCkpIHx8XFx0XFx0XFxcXFxcbitcXHQgICAgKCh1IyNyYml0cykgKG9sZCBcXHUwMDNlXFx1MDAzZSByYml0cykgIT0gKHUjI3JiaXRzKSByZWdfcmVhZChjdHh0LCBWQ1BVX1JFR1NfUkRYKSkpIHtcXHRcXHRcXFxcXFxuK1xcdFxcdCpyZWdfd3JpdGUoY3R4dCwgVkNQVV9SRUdTX1JBWCkgPSAodSMjcmJpdHMpIChvbGQgXFx1MDAzZVxcdTAwM2UgMCk7XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQqcmVnX3dyaXRlKGN0eHQsIFZDUFVfUkVHU19SRFgpID0gKHUjI3JiaXRzKSAob2xkIFxcdTAwM2VcXHUwMDNlIHJiaXRzKTtcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdGN0eHQtXFx1MDAzZWVmbGFncyBcXHUwMDI2PSB+WDg2X0VGTEFHU19aRjtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdH0gZWxzZSB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRjdHh0LVxcdTAwM2Vkc3QudmFsIyNtYml0cyA9ICgodSMjbWJpdHMpcmVnX3JlYWQoY3R4dCwgVkNQVV9SRUdTX1JDWCkgXFx1MDAzY1xcdTAwM2MgcmJpdHMpIHxcXHRcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdCh1IyNyYml0cykgcmVnX3JlYWQoY3R4dCwgVkNQVV9SRUdTX1JCWCk7XFx0XFx0XFxcXFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdGN0eHQtXFx1MDAzZWVmbGFncyB8PSBYODZfRUZMQUdTX1pGO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0fVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rfSB3aGlsZSgwKVxcbitcXG4gc3RhdGljIGludCBlbV9jbXB4Y2hnOGIoc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpXFxuIHtcXG4tXFx0dTY0IG9sZCA9IGN0eHQtXFx1MDAzZWRzdC5vcmlnX3ZhbDY0O1xcbi1cXG4tXFx0aWYgKGN0eHQtXFx1MDAzZWRzdC5ieXRlcyA9PSAxNilcXG4rXFx0aWYgKFdBUk5fT05fT05DRSg4ICsgISEoY3R4dC1cXHUwMDNlcmV4X2JpdHMgXFx1MDAyNiBSRVhfVykgKiA4ICE9IGN0eHQtXFx1MDAzZWRzdC5ieXRlcykpXFxuIFxcdFxcdHJldHVybiBYODZFTVVMX1VOSEFORExFQUJMRTtcXG4gXFxuLVxcdGlmICgoKHUzMikgKG9sZCBcXHUwMDNlXFx1MDAzZSAwKSAhPSAodTMyKSByZWdfcmVhZChjdHh0LCBWQ1BVX1JFR1NfUkFYKSkgfHxcXG4tXFx0ICAgICgodTMyKSAob2xkIFxcdTAwM2VcXHUwMDNlIDMyKSAhPSAodTMyKSByZWdfcmVhZChjdHh0LCBWQ1BVX1JFR1NfUkRYKSkpIHtcXG4tXFx0XFx0KnJlZ193cml0ZShjdHh0LCBWQ1BVX1JFR1NfUkFYKSA9ICh1MzIpIChvbGQgXFx1MDAzZVxcdTAwM2UgMCk7XFxuLVxcdFxcdCpyZWdfd3JpdGUoY3R4dCwgVkNQVV9SRUdTX1JEWCkgPSAodTMyKSAob2xkIFxcdTAwM2VcXHUwMDNlIDMyKTtcXG4tXFx0XFx0Y3R4dC1cXHUwMDNlZWZsYWdzIFxcdTAwMjY9IH5YODZfRUZMQUdTX1pGO1xcbi1cXHR9IGVsc2Uge1xcbi1cXHRcXHRjdHh0LVxcdTAwM2Vkc3QudmFsNjQgPSAoKHU2NClyZWdfcmVhZChjdHh0LCBWQ1BVX1JFR1NfUkNYKSBcXHUwMDNjXFx1MDAzYyAzMikgfFxcbi1cXHRcXHRcXHQodTMyKSByZWdfcmVhZChjdHh0LCBWQ1BVX1JFR1NfUkJYKTtcXG4tXFxuLVxcdFxcdGN0eHQtXFx1MDAzZWVmbGFncyB8PSBYODZfRUZMQUdTX1pGO1xcbi1cXHR9XFxuK1xcdGlmICghKGN0eHQtXFx1MDAzZXJleF9iaXRzIFxcdTAwMjYgUkVYX1cpKVxcbitcXHRcXHRlbV9jbXB4Y2hnOGJfMTZiKGN0eHQsIDMyLCA2NCk7XFxuKyNpZmRlZiBDT05GSUdfWDg2XzY0XFxuK1xcdGVsc2VcXG4rXFx0XFx0ZW1fY21weGNoZzhiXzE2YihjdHh0LCA2NCwgMTI4KTtcXG4rI2VuZGlmXFxuIFxcdHJldHVybiBYODZFTVVMX0NPTlRJTlVFO1xcbiB9XFxuIFxcbkBAIC01NDA1LDggKzU0MTcsMTQgQEAgaW50IHg4Nl9lbXVsYXRlX2luc24oc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQsIGJvb2wgY2hlY2tfaW50ZXJjZXB0cylcXG4gXFx0XFx0XFx0Z290byBkb25lO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4tXFx0LyogQ29weSBmdWxsIDY0LWJpdCB2YWx1ZSBmb3IgQ01QWENIRzhCLiAgKi9cXG4tXFx0Y3R4dC1cXHUwMDNlZHN0Lm9yaWdfdmFsNjQgPSBjdHh0LVxcdTAwM2Vkc3QudmFsNjQ7XFxuK1xcdC8qIENvcHkgZnVsbCA2NC8xMjgtYml0IHZhbHVlIGZvciBDTVBYQ0hHOEIuICAqL1xcbitcXG4rI2lmZGVmIENPTkZJR19YODZfNjRcXG4rXFx0aWYgKGN0eHQtXFx1MDAzZWRzdC5ieXRlcyA9PSAxNilcXG4rXFx0XFx0Y3R4dC1cXHUwMDNlZHN0Lm9yaWdfdmFsMTI4ID0gY3R4dC1cXHUwMDNlZHN0LnZhbDEyODtcXG4rXFx0ZWxzZVxcbisjZW5kaWZcXG4rXFx0XFx0Y3R4dC1cXHUwMDNlZHN0Lm9yaWdfdmFsNjQgPSBjdHh0LVxcdTAwM2Vkc3QudmFsNjQ7XFxuIFxcbiBzcGVjaWFsX2luc246XFxuIFxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0va3ZtX2VtdWxhdGUuaCBiL2FyY2gveDg2L2t2bS9rdm1fZW11bGF0ZS5oXFxuaW5kZXggZmIzZGFiNGI1YTUzZTcuLmE1MTY3NzIxN2FkYTQzIDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2t2bS9rdm1fZW11bGF0ZS5oXFxuKysrIGIvYXJjaC94ODYva3ZtL2t2bV9lbXVsYXRlLmhcXG5AQCAtMjU1LDYgKzI1NSw5IEBAIHN0cnVjdCBvcGVyYW5kIHtcXG4gXFx0dW5pb24ge1xcbiBcXHRcXHR1bnNpZ25lZCBsb25nIG9yaWdfdmFsO1xcbiBcXHRcXHR1NjQgb3JpZ192YWw2NDtcXG4rI2lmZGVmIENPTkZJR19YODZfNjRcXG4rXFx0XFx0dTEyOCBvcmlnX3ZhbDEyODtcXG4rI2VuZGlmXFxuIFxcdH07XFxuIFxcdHVuaW9uIHtcXG4gXFx0XFx0dW5zaWduZWQgbG9uZyAqcmVnO1xcbkBAIC0yNjgsNiArMjcxLDkgQEAgc3RydWN0IG9wZXJhbmQge1xcbiBcXHR1bmlvbiB7XFxuIFxcdFxcdHVuc2lnbmVkIGxvbmcgdmFsO1xcbiBcXHRcXHR1NjQgdmFsNjQ7XFxuKyNpZmRlZiBDT05GSUdfWDg2XzY0XFxuK1xcdFxcdHUxMjggdmFsMTI4O1xcbisjZW5kaWZcXG4gXFx0XFx0Y2hhciB2YWxwdHJbc2l6ZW9mKGF2eDI1Nl90KV07XFxuIFxcdFxcdHNzZTEyOF90IHZlY192YWw7XFxuIFxcdFxcdGF2eDI1Nl90IHZlY192YWwyO1xcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmNcXG5pbmRleCAzZmI2NDkwNWQxOTA3MS4uNDBjODRmOGM0OTEyOTQgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jXFxuKysrIGIvYXJjaC94ODYva3ZtL3g4Ni5jXFxuQEAgLTgzMjIsNyArODMyMiw3IEBAIHN0YXRpYyBpbnQgZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZChzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCxcXG4gXFx0aW50IHI7XFxuIFxcbiBcXHQvKiBndWVzdHMgY21weGNoZzhiIGhhdmUgdG8gYmUgZW11bGF0ZWQgYXRvbWljYWxseSAqL1xcbi1cXHRpZiAoYnl0ZXMgXFx1MDAzZSA4IHx8IChieXRlcyBcXHUwMDI2IChieXRlcyAtIDEpKSlcXG4rXFx0aWYgKGJ5dGVzIFxcdTAwM2UgMiAqIHNpemVvZih1bnNpZ25lZCBsb25nKSB8fCAoYnl0ZXMgXFx1MDAyNiAoYnl0ZXMgLSAxKSkpXFxuIFxcdFxcdGdvdG8gZW11bF93cml0ZTtcXG4gXFxuIFxcdGdwYSA9IGt2bV9tbXVfZ3ZhX3RvX2dwYV93cml0ZSh2Y3B1LCBhZGRyLCBOVUxMKTtcXG5AQCAtODM2Miw2ICs4MzYyLDExIEBAIHN0YXRpYyBpbnQgZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZChzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCxcXG4gXFx0Y2FzZSA4OlxcbiBcXHRcXHRyID0gZW11bGF0b3JfdHJ5X2NtcHhjaGdfdXNlcih1NjQsIGh2YSwgb2xkLCBuZXcpO1xcbiBcXHRcXHRicmVhaztcXG4rI2lmZGVmIENPTkZJR19YODZfNjRcXG4rXFx0Y2FzZSAxNjpcXG4rXFx0XFx0ciA9IGVtdWxhdG9yX3RyeV9jbXB4Y2hnX3VzZXIodTEyOCwgaHZhLCBvbGQsIG5ldyk7XFxuK1xcdFxcdGJyZWFrO1xcbisjZW5kaWZcXG4gXFx0ZGVmYXVsdDpcXG4gXFx0XFx0QlVHKCk7XFxuIFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDc6MDE6NDcuMTQyMTQyNTU4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjg2OTQ5MzkzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlbV9jbXB4Y2hnOGJcIixcbiAgICBcImVtdWxhdG9yX2NtcHhjaGdfZW11bGF0ZWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGVtdWxhdGluZyB0aGUgY21weGNoZzE2YiBpbnN0cnVjdGlvbiBpbiBLVk0uIEl0IG1vZGlmaWVzIHRoZSBpbnN0cnVjdGlvbiBlbXVsYXRvciBhbmQgdGhlIG1lbW9yeSBhY2Nlc3MgY2FsbGJhY2tzIHRvIGhhbmRsZSAxNi1ieXRlIGF0b21pYyBjb21wYXJlLWFuZC1leGNoYW5nZSBvcGVyYXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgS1ZNIGVtdWxhdGlvbiBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBieSBhIGd1ZXN0IGV4ZWN1dGluZyB0aGUgY21weGNoZzE2YiBpbnN0cnVjdGlvbiwgYW5kIHRodXMgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2N2UwNjQyNjg1N2QwM2Q2MDdiM2M0ZjA4YTU5NjlkZDE1ZThmZTcwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgNiAwNzowMTo0NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaFxuaW5kZXggMzY3Mjk3YjE4OGMzOWMuLjEyMzc1NWQ0NzEwOTk3IDEwMDY0NFxuLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vdWFjY2Vzcy5oXG4rKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS91YWNjZXNzLmhcbkBAIC00MDcsNiArNDA3LDI1IEBAIGRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIFx0aWYgKHVubGlrZWx5KCFzdWNjZXNzKSlcdFx0XHRcdFx0XHRcXFxuIFx0XHQqX29sZCA9IF9fb2xkO1x0XHRcdFx0XHRcdFxcXG4gXHRsaWtlbHkoc3VjY2Vzcyk7XHRcdFx0XHRcdH0pXG4rI2Vsc2UgLy8gIUNPTkZJR19YODZfMzJcbisjZGVmaW5lIF9fdHJ5X2NtcHhjaGcxMjhfdXNlcl9hc20oX3B0ciwgX3BvbGQsIF9uZXcsIGxhYmVsKVx0KHtcdFxcXG4rXHRib29sIHN1Y2Nlc3M7XHRcdFx0XHRcdFx0XHRcXFxuK1x0X190eXBlb2ZfXyhfcHRyKSBfb2xkID0gKF9fdHlwZW9mX18oX3B0cikpKF9wb2xkKTtcdFx0XFxcbitcdF9fdHlwZW9mX18oKihfcHRyKSkgX19vbGQgPSAqX29sZDtcdFx0XHRcdFxcXG4rXHRfX3R5cGVvZl9fKCooX3B0cikpIF9fbmV3ID0gKF9uZXcpO1x0XHRcdFx0XFxcbitcdGFzbV9nb3RvX291dHB1dChcIlxcblwiXHRcdFx0XHRcdFx0XFxcbitcdFx0ICAgICBcIjE6IFwiIExPQ0tfUFJFRklYIFwiY21weGNoZzE2YiAlW3B0cl1cXG5cIlx0XHRcXFxuK1x0XHQgICAgIF9BU01fRVhUQUJMRV9VQSgxYiwgJWxbbGFiZWxdKVx0XHRcdFxcXG4rXHRcdCAgICAgOiBcIj1AY2N6XCIgKHN1Y2Nlc3MpLFx0XHRcdFx0XFxcbitcdFx0ICAgICAgIFwiK0FcIiAoX19vbGQpLFx0XHRcdFx0XHRcXFxuK1x0XHQgICAgICAgW3B0cl0gXCIrbVwiICgqX3B0cilcdFx0XHRcdFxcXG4rXHRcdCAgICAgOiBcImJcIiAoKHU2NClfX25ldyksXHRcdFx0XHRcXFxuK1x0XHQgICAgICAgXCJjXCIgKCh1NjQpKCh1MTI4KV9fbmV3IFx1MDAzZVx1MDAzZSA2NCkpXHRcdFx0XFxcbitcdFx0ICAgICA6IFwibWVtb3J5XCJcdFx0XHRcdFx0XHRcXFxuK1x0XHQgICAgIDogbGFiZWwpO1x0XHRcdFx0XHRcdFxcXG4rXHRpZiAodW5saWtlbHkoIXN1Y2Nlc3MpKVx0XHRcdFx0XHRcdFxcXG4rXHRcdCpfb2xkID0gX19vbGQ7XHRcdFx0XHRcdFx0XFxcbitcdGxpa2VseShzdWNjZXNzKTtcdFx0XHRcdFx0fSlcbiAjZW5kaWYgLy8gQ09ORklHX1g4Nl8zMlxuICNlbHNlICAvLyAhQ09ORklHX0NDX0hBU19BU01fR09UT19USUVEX09VVFBVVFxuICNkZWZpbmUgX190cnlfY21weGNoZ191c2VyX2FzbShpdHlwZSwgbHR5cGUsIF9wdHIsIF9wb2xkLCBfbmV3LCBsYWJlbClcdCh7IFxcXG5AQCAtNDYzLDYgKzQ4MiwzMCBAQCBkbyB7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdGlmICh1bmxpa2VseSghX19yZXN1bHQpKVx0XHRcdFx0XHRcXFxuIFx0XHQqX29sZCA9IF9fb2xkO1x0XHRcdFx0XHRcdFxcXG4gXHRsaWtlbHkoX19yZXN1bHQpO1x0XHRcdFx0XHR9KVxuKyNlbHNlIC8vIUNPTkZJR19YODZfMzJcbisjZGVmaW5lIF9fdHJ5X2NtcHhjaGcxMjhfdXNlcl9hc20oX3B0ciwgX3BvbGQsIF9uZXcsIGxhYmVsKVx0KHtcdFxcXG4rXHRpbnQgX19yZXN1bHQ7XHRcdFx0XHRcdFx0XHRcXFxuK1x0X190eXBlb2ZfXyhfcHRyKSBfb2xkID0gKF9fdHlwZW9mX18oX3B0cikpKF9wb2xkKTtcdFx0XFxcbitcdF9fdHlwZW9mX18oKihfcHRyKSkgX19vbGQgPSAqX29sZDtcdFx0XHRcdFxcXG4rXHRfX3R5cGVvZl9fKCooX3B0cikpIF9fbmV3ID0gKF9uZXcpO1x0XHRcdFx0XFxcbitcdGFzbSB2b2xhdGlsZShcIlxcblwiXHRcdFx0XHRcdFx0XFxcbitcdFx0ICAgICBcIjE6IFwiIExPQ0tfUFJFRklYIFwiY21weGNoZzE2YiAlW3B0cl1cXG5cIlx0XHRcXFxuK1x0XHQgICAgIFwibW92ICQwLCAlW3Jlc3VsdF1cXG5cXHRcIlx0XHRcdFx0XFxcbitcdFx0ICAgICBcInNldHogJWJbcmVzdWx0XVxcblwiXHRcdFx0XHRcXFxuK1x0XHQgICAgIFwiMjpcXG5cIlx0XHRcdFx0XHRcdFxcXG4rXHRcdCAgICAgX0FTTV9FWFRBQkxFX1RZUEVfUkVHKDFiLCAyYiwgRVhfVFlQRV9FRkFVTFRfUkVHLFx0XFxcbitcdFx0XHRcdFx0ICAgJVtyZXN1bHRdKVx0XHRcdFxcXG4rXHRcdCAgICAgOiBbcmVzdWx0XSBcIj1xXCIgKF9fcmVzdWx0KSxcdFx0XHRcXFxuK1x0XHQgICAgICAgXCIrQVwiIChfX29sZCksXHRcdFx0XHRcdFxcXG4rXHRcdCAgICAgICBbcHRyXSBcIittXCIgKCpfcHRyKVx0XHRcdFx0XFxcbitcdFx0ICAgICA6IFwiYlwiICgodTY0KV9fbmV3KSxcdFx0XHRcdFxcXG4rXHRcdCAgICAgICBcImNcIiAoKHU2NCkoKHUxMjgpX19uZXcgXHUwMDNlXHUwMDNlIDY0KSlcdFx0XHRcXFxuK1x0XHQgICAgIDogXCJtZW1vcnlcIiwgXCJjY1wiKTtcdFx0XHRcdFx0XFxcbitcdGlmICh1bmxpa2VseShfX3Jlc3VsdCBcdTAwM2MgMCkpXHRcdFx0XHRcdFxcXG4rXHRcdGdvdG8gbGFiZWw7XHRcdFx0XHRcdFx0XFxcbitcdGlmICh1bmxpa2VseSghX19yZXN1bHQpKVx0XHRcdFx0XHRcXFxuK1x0XHQqX29sZCA9IF9fb2xkO1x0XHRcdFx0XHRcdFxcXG4rXHRsaWtlbHkoX19yZXN1bHQpO1x0XHRcdFx0XHR9KVxuICNlbmRpZiAvLyBDT05GSUdfWDg2XzMyXG4gI2VuZGlmIC8vIENPTkZJR19DQ19IQVNfQVNNX0dPVE9fVElFRF9PVVRQVVRcbiBcbkBAIC01NTEsMTEgKzU5NCwxOCBAQCBkbyB7XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIFxuIGV4dGVybiB2b2lkIF9fdHJ5X2NtcHhjaGdfdXNlcl93cm9uZ19zaXplKHZvaWQpO1xuIFxuLSNpZm5kZWYgQ09ORklHX1g4Nl8zMlxuKyNpZmRlZiBDT05GSUdfWDg2XzMyXG4rLyogQWx3YXlzIGZhaWwgb24gMzIgYml0IGFyY2ggYXMgaXQgZG8gbm90IHN1cHBvcnQgMTI4IGNtcHhjaGcgKGkuZS4gY21weGNoZzE2YlxuKyAqIGluc3RydWN0aW9uKS5cbisgKi9cbisjZGVmaW5lIF9fdHJ5X2NtcHhjaGcxMjhfdXNlcl9hc20oX3B0ciwgX3BvbGQsIF9uZXcsIGxhYmVsKSAoMSlcbisjZWxzZVxuICNkZWZpbmUgX190cnlfY21weGNoZzY0X3VzZXJfYXNtKF9wdHIsIF9vbGRwLCBfbnZhbCwgX2xhYmVsKVx0XHRcXFxuIFx0X190cnlfY21weGNoZ191c2VyX2FzbShcInFcIiwgXCJyXCIsIChfcHRyKSwgKF9vbGRwKSwgKF9udmFsKSwgX2xhYmVsKVxuK1xuICNlbmRpZlxuIFxuK1xuIC8qXG4gICogRm9yY2UgdGhlIHBvaW50ZXIgdG8gdVx1MDAzY3NpemVcdTAwM2UgdG8gbWF0Y2ggdGhlIHNpemUgZXhwZWN0ZWQgYnkgdGhlIGFzbSBoZWxwZXIuXG4gICogY2xhbmcvTExWTSBjb21waWxlcyBhbGwgY2FzZXMgYW5kIG9ubHkgZGlzY2FyZHMgdGhlIHVudXNlZCBwYXRocyBhZnRlclxuQEAgLTU4MCw2ICs2MzAsMTAgQEAgZXh0ZXJuIHZvaWQgX190cnlfY21weGNoZ191c2VyX3dyb25nX3NpemUodm9pZCk7XG4gXHRjYXNlIDg6XHRfX3JldCA9IF9fdHJ5X2NtcHhjaGc2NF91c2VyX2FzbSgoX19mb3JjZSB1NjQgKikoX3B0ciksIChfb2xkcCksXFxcbiBcdFx0XHRcdFx0XHQgKF9udmFsKSwgX2xhYmVsKTtcdFx0XFxcbiBcdFx0YnJlYWs7XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRjYXNlIDE2Olx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0XHRfX3JldCA9IF9fdHJ5X2NtcHhjaGcxMjhfdXNlcl9hc20oKF9fZm9yY2UgdTEyOCAqKShfcHRyKSxcdFxcXG4rXHRcdFx0XHRcdFx0ICAoX29sZHApLCAoX252YWwpLCBfbGFiZWwpO1x0XFxcbitcdFx0YnJlYWs7XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRkZWZhdWx0OiBfX3RyeV9jbXB4Y2hnX3VzZXJfd3Jvbmdfc2l6ZSgpO1x0XHRcdFx0XFxcbiBcdH1cdFx0XHRcdFx0XHRcdFx0XHRcXFxuIFx0X19yZXQ7XHRcdFx0XHRcdFx0fSlcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jIGIvYXJjaC94ODYva3ZtL2VtdWxhdGUuY1xuaW5kZXggYzhlMjkyZTlhMjRkZmUuLjlkZjU1YjNjNTYyNzY1IDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL2VtdWxhdGUuY1xuKysrIGIvYXJjaC94ODYva3ZtL2VtdWxhdGUuY1xuQEAgLTIxODgsMjQgKzIxODgsMzYgQEAgc3RhdGljIGludCBlbV9jYWxsX25lYXJfYWJzKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KVxuIFx0cmV0dXJuIHJjO1xuIH1cbiBcbisjZGVmaW5lIGVtX2NtcHhjaGc4Yl8xNmIoX19jLCByYml0cywgbWJpdHMpXFxcbitkbyB7XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdHUjI21iaXRzIG9sZCA9IF9fYy1cdTAwM2Vkc3Qub3JpZ192YWwjI21iaXRzO1x0XHRcdFx0XHRcdFxcXG4rXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdEJVSUxEX0JVR19PTihyYml0cyAqIDIgIT0gbWJpdHMpO1x0XHRcdFx0XHRcdFx0XFxcbitcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0aWYgKCgodSMjcmJpdHMpIChvbGQgXHUwMDNlXHUwMDNlIDApICE9ICh1IyNyYml0cykgcmVnX3JlYWQoY3R4dCwgVkNQVV9SRUdTX1JBWCkpIHx8XHRcdFxcXG4rXHQgICAgKCh1IyNyYml0cykgKG9sZCBcdTAwM2VcdTAwM2UgcmJpdHMpICE9ICh1IyNyYml0cykgcmVnX3JlYWQoY3R4dCwgVkNQVV9SRUdTX1JEWCkpKSB7XHRcdFxcXG4rXHRcdCpyZWdfd3JpdGUoY3R4dCwgVkNQVV9SRUdTX1JBWCkgPSAodSMjcmJpdHMpIChvbGQgXHUwMDNlXHUwMDNlIDApO1x0XHRcdFxcXG4rXHRcdCpyZWdfd3JpdGUoY3R4dCwgVkNQVV9SRUdTX1JEWCkgPSAodSMjcmJpdHMpIChvbGQgXHUwMDNlXHUwMDNlIHJiaXRzKTtcdFx0XHRcXFxuK1x0XHRjdHh0LVx1MDAzZWVmbGFncyBcdTAwMjY9IH5YODZfRUZMQUdTX1pGO1x0XHRcdFx0XHRcdFx0XFxcbitcdH0gZWxzZSB7XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0XHRjdHh0LVx1MDAzZWRzdC52YWwjI21iaXRzID0gKCh1IyNtYml0cylyZWdfcmVhZChjdHh0LCBWQ1BVX1JFR1NfUkNYKSBcdTAwM2NcdTAwM2MgcmJpdHMpIHxcdFxcXG4rXHRcdFx0XHRcdCh1IyNyYml0cykgcmVnX3JlYWQoY3R4dCwgVkNQVV9SRUdTX1JCWCk7XHRcdFxcXG4rXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0Y3R4dC1cdTAwM2VlZmxhZ3MgfD0gWDg2X0VGTEFHU19aRjtcdFx0XHRcdFx0XHRcdFxcXG4rXHR9XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4rfSB3aGlsZSgwKVxuK1xuIHN0YXRpYyBpbnQgZW1fY21weGNoZzhiKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KVxuIHtcbi1cdHU2NCBvbGQgPSBjdHh0LVx1MDAzZWRzdC5vcmlnX3ZhbDY0O1xuLVxuLVx0aWYgKGN0eHQtXHUwMDNlZHN0LmJ5dGVzID09IDE2KVxuK1x0aWYgKFdBUk5fT05fT05DRSg4ICsgISEoY3R4dC1cdTAwM2VyZXhfYml0cyBcdTAwMjYgUkVYX1cpICogOCAhPSBjdHh0LVx1MDAzZWRzdC5ieXRlcykpXG4gXHRcdHJldHVybiBYODZFTVVMX1VOSEFORExFQUJMRTtcbiBcbi1cdGlmICgoKHUzMikgKG9sZCBcdTAwM2VcdTAwM2UgMCkgIT0gKHUzMikgcmVnX3JlYWQoY3R4dCwgVkNQVV9SRUdTX1JBWCkpIHx8XG4tXHQgICAgKCh1MzIpIChvbGQgXHUwMDNlXHUwMDNlIDMyKSAhPSAodTMyKSByZWdfcmVhZChjdHh0LCBWQ1BVX1JFR1NfUkRYKSkpIHtcbi1cdFx0KnJlZ193cml0ZShjdHh0LCBWQ1BVX1JFR1NfUkFYKSA9ICh1MzIpIChvbGQgXHUwMDNlXHUwMDNlIDApO1xuLVx0XHQqcmVnX3dyaXRlKGN0eHQsIFZDUFVfUkVHU19SRFgpID0gKHUzMikgKG9sZCBcdTAwM2VcdTAwM2UgMzIpO1xuLVx0XHRjdHh0LVx1MDAzZWVmbGFncyBcdTAwMjY9IH5YODZfRUZMQUdTX1pGO1xuLVx0fSBlbHNlIHtcbi1cdFx0Y3R4dC1cdTAwM2Vkc3QudmFsNjQgPSAoKHU2NClyZWdfcmVhZChjdHh0LCBWQ1BVX1JFR1NfUkNYKSBcdTAwM2NcdTAwM2MgMzIpIHxcbi1cdFx0XHQodTMyKSByZWdfcmVhZChjdHh0LCBWQ1BVX1JFR1NfUkJYKTtcbi1cbi1cdFx0Y3R4dC1cdTAwM2VlZmxhZ3MgfD0gWDg2X0VGTEFHU19aRjtcbi1cdH1cbitcdGlmICghKGN0eHQtXHUwMDNlcmV4X2JpdHMgXHUwMDI2IFJFWF9XKSlcbitcdFx0ZW1fY21weGNoZzhiXzE2YihjdHh0LCAzMiwgNjQpO1xuKyNpZmRlZiBDT05GSUdfWDg2XzY0XG4rXHRlbHNlXG4rXHRcdGVtX2NtcHhjaGc4Yl8xNmIoY3R4dCwgNjQsIDEyOCk7XG4rI2VuZGlmXG4gXHRyZXR1cm4gWDg2RU1VTF9DT05USU5VRTtcbiB9XG4gXG5AQCAtNTQwNSw4ICs1NDE3LDE0IEBAIGludCB4ODZfZW11bGF0ZV9pbnNuKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0LCBib29sIGNoZWNrX2ludGVyY2VwdHMpXG4gXHRcdFx0Z290byBkb25lO1xuIFx0XHR9XG4gXHR9XG4tXHQvKiBDb3B5IGZ1bGwgNjQtYml0IHZhbHVlIGZvciBDTVBYQ0hHOEIuICAqL1xuLVx0Y3R4dC1cdTAwM2Vkc3Qub3JpZ192YWw2NCA9IGN0eHQtXHUwMDNlZHN0LnZhbDY0O1xuK1x0LyogQ29weSBmdWxsIDY0LzEyOC1iaXQgdmFsdWUgZm9yIENNUFhDSEc4Qi4gICovXG4rXG4rI2lmZGVmIENPTkZJR19YODZfNjRcbitcdGlmIChjdHh0LVx1MDAzZWRzdC5ieXRlcyA9PSAxNilcbitcdFx0Y3R4dC1cdTAwM2Vkc3Qub3JpZ192YWwxMjggPSBjdHh0LVx1MDAzZWRzdC52YWwxMjg7XG4rXHRlbHNlXG4rI2VuZGlmXG4rXHRcdGN0eHQtXHUwMDNlZHN0Lm9yaWdfdmFsNjQgPSBjdHh0LVx1MDAzZWRzdC52YWw2NDtcbiBcbiBzcGVjaWFsX2luc246XG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL2t2bV9lbXVsYXRlLmggYi9hcmNoL3g4Ni9rdm0va3ZtX2VtdWxhdGUuaFxuaW5kZXggZmIzZGFiNGI1YTUzZTcuLmE1MTY3NzIxN2FkYTQzIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL2t2bV9lbXVsYXRlLmhcbisrKyBiL2FyY2gveDg2L2t2bS9rdm1fZW11bGF0ZS5oXG5AQCAtMjU1LDYgKzI1NSw5IEBAIHN0cnVjdCBvcGVyYW5kIHtcbiBcdHVuaW9uIHtcbiBcdFx0dW5zaWduZWQgbG9uZyBvcmlnX3ZhbDtcbiBcdFx0dTY0IG9yaWdfdmFsNjQ7XG4rI2lmZGVmIENPTkZJR19YODZfNjRcbitcdFx0dTEyOCBvcmlnX3ZhbDEyODtcbisjZW5kaWZcbiBcdH07XG4gXHR1bmlvbiB7XG4gXHRcdHVuc2lnbmVkIGxvbmcgKnJlZztcbkBAIC0yNjgsNiArMjcxLDkgQEAgc3RydWN0IG9wZXJhbmQge1xuIFx0dW5pb24ge1xuIFx0XHR1bnNpZ25lZCBsb25nIHZhbDtcbiBcdFx0dTY0IHZhbDY0O1xuKyNpZmRlZiBDT05GSUdfWDg2XzY0XG4rXHRcdHUxMjggdmFsMTI4O1xuKyNlbmRpZlxuIFx0XHRjaGFyIHZhbHB0cltzaXplb2YoYXZ4MjU2X3QpXTtcbiBcdFx0c3NlMTI4X3QgdmVjX3ZhbDtcbiBcdFx0YXZ4MjU2X3QgdmVjX3ZhbDI7XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3ZtL3g4Ni5jXG5pbmRleCAzZmI2NDkwNWQxOTA3MS4uNDBjODRmOGM0OTEyOTQgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmNcbisrKyBiL2FyY2gveDg2L2t2bS94ODYuY1xuQEAgLTgzMjIsNyArODMyMiw3IEBAIHN0YXRpYyBpbnQgZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZChzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCxcbiBcdGludCByO1xuIFxuIFx0LyogZ3Vlc3RzIGNtcHhjaGc4YiBoYXZlIHRvIGJlIGVtdWxhdGVkIGF0b21pY2FsbHkgKi9cbi1cdGlmIChieXRlcyBcdTAwM2UgOCB8fCAoYnl0ZXMgXHUwMDI2IChieXRlcyAtIDEpKSlcbitcdGlmIChieXRlcyBcdTAwM2UgMiAqIHNpemVvZih1bnNpZ25lZCBsb25nKSB8fCAoYnl0ZXMgXHUwMDI2IChieXRlcyAtIDEpKSlcbiBcdFx0Z290byBlbXVsX3dyaXRlO1xuIFxuIFx0Z3BhID0ga3ZtX21tdV9ndmFfdG9fZ3BhX3dyaXRlKHZjcHUsIGFkZHIsIE5VTEwpO1xuQEAgLTgzNjIsNiArODM2MiwxMSBAQCBzdGF0aWMgaW50IGVtdWxhdG9yX2NtcHhjaGdfZW11bGF0ZWQoc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQsXG4gXHRjYXNlIDg6XG4gXHRcdHIgPSBlbXVsYXRvcl90cnlfY21weGNoZ191c2VyKHU2NCwgaHZhLCBvbGQsIG5ldyk7XG4gXHRcdGJyZWFrO1xuKyNpZmRlZiBDT05GSUdfWDg2XzY0XG4rXHRjYXNlIDE2OlxuK1x0XHRyID0gZW11bGF0b3JfdHJ5X2NtcHhjaGdfdXNlcih1MTI4LCBodmEsIG9sZCwgbmV3KTtcbitcdFx0YnJlYWs7XG4rI2VuZGlmXG4gXHRkZWZhdWx0OlxuIFx0XHRCVUcoKTtcbiBcdH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA3OjAxOjQ3LjE0MjE0NTA3OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgwMDExNjM4ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgY21weGNoZzE2YiBLVk0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gcmV2aWV3aW5nIHRoaXMgcGF0Y2ggdGhhdCBpbnRyb2R1Y2VzIDEyOC1iaXQgY29tcGFyZS1hbmQtc3dhcCAoY21weGNoZzE2Yikgc3VwcG9ydCBpbnRvIHRoZSB4ODYgdWFjY2VzcyBhbmQgS1ZNIGVtdWxhdGlvbiBsYXllcnMuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHNvdW5kLiBUaGV5J3ZlIGFkZGVkIGBfX3RyeV9jbXB4Y2hnMTI4X3VzZXJfYXNtYCB0byBgYXJjaC94ODYvaW5jbHVkZS9hc20vdWFjY2Vzcy5oYCwgd2hpY2ggaXMgdGhlIGV4cGVjdGVkIGxvY2F0aW9uLiBDcnVjaWFsbHksIHRoZSBLVk0gZW11bGF0aW9uIGNvbXBvbmVudHMgaGF2ZSBiZWVuIG1vZGlmaWVkOiBgYXJjaC94ODYva3ZtL2VtdWxhdGUuY2AsIGBhcmNoL3g4Ni9rdm0va3ZtX2VtdWxhdGUuaGAsIGFuZCBgYXJjaC94ODYva3ZtL3g4Ni5jYCBhbGwgc2VlIGNoYW5nZXMgdG8gaGFuZGxlIHRoZSBjbXB4Y2hnMTZiIGluc3RydWN0aW9uLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdGhpcyBpcyAqZGVmaW5pdGVseSogcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsICp3aXRoaW4gdGhlIEtWTSBjb250ZXh0Ki4gVGhleSd2ZSB1cGRhdGVkIGBlbV9jbXB4Y2hnOGJgIGluIGBlbXVsYXRlLmNgIHRvIGNvbmRpdGlvbmFsbHkgaGFuZGxlIHRoZSAxMjgtYml0IHZlcnNpb24gd2hlbiBgUkVYX1dgIGlzIHNldCAod2hpY2ggaXMgc3RhbmRhcmQgZm9yIDY0LWJpdCBpbnN0cnVjdGlvbnMpLiBBbHNvLCBgZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZGAgaW4gYHg4Ni5jYCBub3cgc3VwcG9ydHMgdGhlIDE2LWJ5dGUgY29tcGFyZS1hbmQtc3dhcCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgc2VlIHRoZSBmbG93OyBpdOKAmXMgYWxsIGNvbm5lY3RlZC5cblxuTm93LCBteSBmb2N1cyBzaGlmdHMgdG8gZnV6emluZy4gV2UgYWJzb2x1dGVseSBuZWVkIHRvIHN1YmplY3QgdGhpcyB0byByaWdvcm91cyB0ZXN0aW5nLiBMZXQncyBpZGVudGlmeSB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnRzIGZvciBmdXp6aW5nLiBXZSdsbCBiZSB0YXJnZXRpbmc6XG5cbiogICBgZW1fY21weGNoZzhiYCBpbiBgYXJjaC94ODYva3ZtL2VtdWxhdGUuY2BcbiogICBgZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZGAgaW4gYGFyY2gveDg2L2t2bS94ODYuY2BcblxuTmV4dCwgSSBuZWVkIHRvIHZlcmlmeSB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEkgc2VlIHRoZSBzdGFuZGFyZCBndWFyZHM6IGAjaWZkZWYgQ09ORklHX1g4Nl82NGAgYW5kIGAjaWZuZGVmIENPTkZJR19YODZfMzJgLCB3aGljaCBpcyBleHBlY3RlZCBmb3IgNjQtYml0IGFyY2hpdGVjdHVyZSBzdXBwb3J0LiBHaXZlbiB0aGUgS1ZNIGludm9sdmVtZW50LCBgQ09ORklHX0tWTWAgaXMsIG5hdHVyYWxseSwgYSBwcmVyZXF1aXNpdGUuIFRoYXQgYWxsIGxvb2tzIGNvcnJlY3QuXG5cbkZpbmFsbHksIGp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgd2lsbCB1c2UgYGdyZXBwZXJgIG9uIHRoZSBjb2RlYmFzZSB0byBsb29rIGZvciBhbnkgcmVsYXRlZCBmdW5jdGlvbnMgdGhhdCBtYXkgaGF2ZSBiZWVuIG92ZXJsb29rZWQgZHVyaW5nIHRoaXMgcGF0Y2guIEkgd2FudCB0byBlbnN1cmUgd2UndmUgZ290IGEgY29tcHJlaGVuc2l2ZSB2aWV3IG9mIHRoZSBjaGFuZ2UncyBpbXBhY3QuIFNwZWNpZmljYWxseSwgaXQgd291bGQgYmUgdXNlZnVsIHRvIGNoZWNrIGFsbCBjYWxsIHNpdGVzIHRvIGBlbXVsYXRvcl9jbXB4Y2hnX2VtdWxhdGVkYCBhbmQgYGVtX2NtcHhjaGc4YmAgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIGFueSBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLiBJIHdhbnQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhleSBkaWRuJ3QgbWlzcyBzb21ldGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMzMsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNzowMTo1NS4xNDMzMTJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA0Mzg2NTMwMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlbV9jbXB4Y2hnOGJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL2VtdWxhdGUuYz0yMTc3PXN0YXRpYyBpbnQgZW1fY2FsbF9uZWFyX2FicyhzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dClcXG4tLVxcbmFyY2gveDg2L2t2bS9lbXVsYXRlLmMtMjE5MC1cXG5hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jOjIxOTE6I2RlZmluZSBlbV9jbXB4Y2hnOGJfMTZiKF9fYywgcmJpdHMsIG1iaXRzKVxcXFxcXG5hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jLTIxOTItZG8ge1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmFyY2gveDg2L2t2bS9lbXVsYXRlLmMtMjIwOS1cXG5hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jOjIyMTA6c3RhdGljIGludCBlbV9jbXB4Y2hnOGIoc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpXFxuYXJjaC94ODYva3ZtL2VtdWxhdGUuYy0yMjExLXtcXG4tLVxcbmFyY2gveDg2L2t2bS9lbXVsYXRlLmMtMjIxNS1cXHRpZiAoIShjdHh0LVxcdTAwM2VyZXhfYml0cyBcXHUwMDI2IFJFWF9XKSlcXG5hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jOjIyMTY6XFx0XFx0ZW1fY21weGNoZzhiXzE2YihjdHh0LCAzMiwgNjQpO1xcbmFyY2gveDg2L2t2bS9lbXVsYXRlLmMtMjIxNy0jaWZkZWYgQ09ORklHX1g4Nl82NFxcbmFyY2gveDg2L2t2bS9lbXVsYXRlLmMtMjIxOC1cXHRlbHNlXFxuYXJjaC94ODYva3ZtL2VtdWxhdGUuYzoyMjE5OlxcdFxcdGVtX2NtcHhjaGc4Yl8xNmIoY3R4dCwgNjQsIDEyOCk7XFxuYXJjaC94ODYva3ZtL2VtdWxhdGUuYy0yMjIwLSNlbmRpZlxcbi0tXFxuYXJjaC94ODYva3ZtL2VtdWxhdGUuYz00MTExPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3JvdXBfZHVhbCBncm91cDkgPSB7IHtcXG5hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jOjQxMTI6XFx0TiwgSShEc3RNZW02NCB8IExvY2sgfCBQYWdlVGFibGUsIGVtX2NtcHhjaGc4YiksIE4sIE4sIE4sIE4sIE4sIE4sXFxuYXJjaC94ODYva3ZtL2VtdWxhdGUuYy00MTEzLX0sIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDc6MDI6MDAuMTg3MTg2MjIyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE1MTQ2ODUxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIGNvZGUgc25pcHBldHMsIHN1bW1hcml6ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXMgeW91IHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBgZW1fY21weGNoZzhiYCBMYW5kc2NhcGUqKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgZW1fY21weGNoZzhiYCBmdW5jdGlvbiwgYW5kIGl0J3MgZmxhZ2dlZCBhcyBiZWluZyBwYXJ0IG9mIHRoZSBgZ3JvdXA5YCBpbnN0cnVjdGlvbiBncm91cC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIHNvbWV0aGluZyBjb3JlLCBwcm9iYWJseSByZWxhdGVkIHRvIGF0b21pYyBvcGVyYXRpb25zLCBzcGVjaWZpY2FsbHkgb24gOC1ieXRlIHZhbHVlcy4gR2l2ZW4gdGhlIGNvbnRleHQsIEknbSBndWVzc2luZyB0aGlzIGZ1bmN0aW9uIGlzIGRlZXBseSBpbnRlcnR3aW5lZCB3aXRoIGNvbmN1cnJlbmN5IHByaW1pdGl2ZXMgd2l0aGluIHRoZSB2aXJ0dWFsIG1hY2hpbmUuIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gd2hhdCBgZ3JvdXA5YCBhY3R1YWxseSAqaXMqIHdpdGhpbiB0aGlzIGNvZGViYXNlLCBidXQgbXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGl0J3MgaGFuZGxpbmcgbWVtb3J5IHN5bmNocm9uaXphdGlvbiBjb25jZXJucy5cblxuVGhlbiwgSSBzZWUgYGVtdWxhdG9yX2NtcHhjaGdfZW11bGF0ZWRgIG1lbnRpb25lZCwgd2hpY2ggaXMgbG9jYXRlZCBpbiBgYXJjaC94ODYva3ZtL3g4Ni5jYC4gQWgsIHJpZ2h0LCB0aGF0IHBvaW50cyB0byB0aGUgZW11bGF0aW9uIGxheWVyIHdpdGhpbiB0aGUgS1ZNIGh5cGVydmlzb3Igb24geDg2IGFyY2hpdGVjdHVyZXMuIFRoaXMgaXMgdGhlIHBhcnQgdGhhdCBpbnRlcmVzdHMgbWUgdGhlIG1vc3QsIGNvbnNpZGVyaW5nIG15IGV4cGVyaWVuY2UuIEl0IHN0cm9uZ2x5IGltcGxpZXMgdGhhdCBgZW1fY21weGNoZzhiYCAod2hpY2ggaXMgcHJlc3VtYWJseSBlbXVsYXRpbmcgdGhlIENNcHhjaGc4YiBpbnN0cnVjdGlvbikgaXMgaGFuZGxlZCBpbiBhIHNvZnR3YXJlIGZhbGxiYWNrIHBhdGguIFRoaXMgaXMgbGlrZWx5IHRvIGJlIHVzZWQgaW4gb2xkZXIgcHJvY2Vzc29ycyBvciB3aGVuIGNlcnRhaW4gYXJjaGl0ZWN0dXJhbCBmZWF0dXJlcyBhcmUgZGlzYWJsZWQuIEkgd2FudCB0byBsb29rIGludG8gaG93IHRoZSBlbXVsYXRlZCB2ZXJzaW9uIGhhbmRsZXMgdGhlIGNvbXBsZXhpdGllcyBvZiB0aGlzIGluc3RydWN0aW9uIChsb2FkLWxpbmtlZC9zdG9yZS1jb25kaXRpb25hbCBhbmQgbWVtb3J5IG9yZGVyaW5nKSwgZXNwZWNpYWxseSBhcm91bmQgdGhlIG51YW5jZXMgb2YgaGFuZGxpbmcgYXRvbWljIG9wZXJhdGlvbnMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhpcyBzdWdnZXN0cyB0aGUga2VybmVsIGlzIGxpa2VseSBydW5uaW5nIHRoZSBlbXVsYXRlZCB2ZXJzaW9uIHJhdGhlciB0aGFuIGRpcmVjdGx5IHVzaW5nIHRoZSBuYXRpdmUgaGFyZHdhcmUgaW5zdHJ1Y3Rpb24gdG8gbWFpbnRhaW4gY29tcGF0aWJpbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjY2MCwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA3OjAyOjA0LjMzODY1NzA5OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjYxODg2MTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVtdWxhdG9yX2NtcHhjaGdfZW11bGF0ZWRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jPTgyOTg9c3RhdGljIGludCBlbXVsYXRvcl93cml0ZV9lbXVsYXRlZChzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCxcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy04MzEwLVxcbmFyY2gveDg2L2t2bS94ODYuYzo4MzExOnN0YXRpYyBpbnQgZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZChzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCxcXG5hcmNoL3g4Ni9rdm0veDg2LmMtODMxMi1cXHRcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz04ODk5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgeDg2X2VtdWxhdGVfb3BzIGVtdWxhdGVfb3BzID0ge1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg5MDctXFx0LndyaXRlX2VtdWxhdGVkICAgICAgPSBlbXVsYXRvcl93cml0ZV9lbXVsYXRlZCxcXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODkwODpcXHQuY21weGNoZ19lbXVsYXRlZCAgICA9IGVtdWxhdG9yX2NtcHhjaGdfZW11bGF0ZWQsXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg5MDktXFx0LmludmxwZyAgICAgICAgICAgICAgPSBlbXVsYXRvcl9pbnZscGcsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA3OjAyOjA3LjAwMDU0OTA5OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4ODQzNTExMzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgS1ZNJ3MgY21weGNoZzE2YiBFbXVsYXRpb24gZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYGNtcHhjaGcxNmJgIEtWTSBlbXVsYXRpb24gcGF0Y2gsIGFuZCBteSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBjb3JlIGZ1bmN0aW9ucy4gRnJvbSB3aGF0IEkgc2VlLCBgZW1fY21weGNoZzhiYCBhbmQgYGVtdWxhdG9yX2NtcHhjaGdfZW11bGF0ZWRgIGFyZSB0aGUgcHJpbWFyeSBvbmVzIGRlYWxpbmcgd2l0aCB0aGlzIGluc3RydWN0aW9uLiBUaGUgS1ZNIGNvbmZpZ3VyYXRpb24sIG5hdHVyYWxseSwgaXMgYEtWTWAuIFRoYXQncyB0aGUgYmFzZWxpbmUuXG5cbkxldCBtZSBqdXN0IHF1aWNrbHkgdmVyaWZ5IGlmIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyBhcmUgcmVsZXZhbnQgaGVyZS4gSSdtIG5vdGluZyB0aGF0IGBDT05GSUdfWDg2XzY0YCBpcyByZXF1aXJlZCBmb3IgdGhlIDEyOC1iaXQgY29tcGFyZS1hbmQtZXhjaGFuZ2UgbG9naWMsIGJ1dCBzaW5jZSBTeXprYWxsZXIsIHdoaWNoIHRoaXMgaXMgbGlrZWx5IGZvciwgcHJpbWFyaWx5IG9wZXJhdGVzIG9uIHg4Nl82NCwgdGhhdCdzIG5vdCBhIG1ham9yIGNvbmNlcm4uIFRoZSBwcmltYXJ5IGZvY3VzIHJlbWFpbnMgb24gYENPTkZJR19LVk1gLlxuXG5Ob3csIGxldCdzIGJyZWFrIGRvd24gdGhlIHJhdGlvbmFsZSBiZWhpbmQgZnV6emluZyB0aGlzLiBUaGUgcGF0Y2gncyBjb3JlIGZ1bmN0aW9uIGlzIGVtdWxhdGluZyB0aGUgYGNtcHhjaGcxNmJgIGluc3RydWN0aW9uIHdpdGhpbiBLVk0uIEl0J3MgdG91Y2hpbmcgdGhlIGluc3RydWN0aW9uIGVtdWxhdG9yIGl0c2VsZiwgYXMgd2VsbCBhcyB0aGUgbWVtb3J5IGFjY2VzcyBjYWxsYmFja3MsIHNwZWNpZmljYWxseSB0byBoYW5kbGUgYXRvbWljIDE2LWJ5dGUgY29tcGFyZS1hbmQtZXhjaGFuZ2Ugb3BlcmF0aW9ucy4gVGhpcyByZXByZXNlbnRzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gdG8gdGhlIHZlcnkgaGVhcnQgb2YgdGhlIEtWTSBlbXVsYXRpb24uIENyaXRpY2FsbHksIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBkaXJlY3RseSBhY2Nlc3NpYmxlIHRvIGEgZ3Vlc3QgdGhhdCBleGVjdXRlcyB0aGUgYGNtcHhjaGcxNmJgIGluc3RydWN0aW9uLiBUaGVyZWZvcmUsIGZ1enppbmcgaXMgYWJzb2x1dGVseSB3YXJyYW50ZWQuIEl0IGlzIGEgY3JpdGljYWwgcGF0aC5cblxuU28sIHRoZSBrZXkgc3ltYm9scyBJIG5lZWQgdG8gY29uY2VudHJhdGUgb24gZm9yIGZ1enppbmcgcmVtYWluIGBlbV9jbXB4Y2hnOGJgIGFuZCBgZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZGAuIEkndmUgYWxyZWFkeSBjb25maXJtZWQgYEtWTWAgYXMgdGhlIGVzc2VudGlhbCBjb25maWcuIEknbGwgZG91YmxlLWNoZWNrIGZvciBhbnkgb3RoZXIgcG90ZW50aWFsbHkgcmVsZXZhbnQgZnVuY3Rpb25zLCBidXQgSSB0aGluayB0aGF0J3MgaXQuIExvb2tpbmcgZGVlcGVyIG5vdzogSSdtIHNlZWluZyB0aGF0IGBfX3RyeV9jbXB4Y2hnMTI4X3VzZXJfYXNtYCBpcyBhIG1hY3JvLCBhbmQgc28gaXMgYGVtX2NtcHhjaGc4Yl8xNmJgLiBTbywgbm8sIHRoZSBmb2N1cyBzeW1ib2xzIGFyZSBjb3JyZWN0LlxuXG5UaGF0IHNvbGlkaWZpZXMgdGhpbmdzLiBJIGFtIHNhdGlzZmllZCB3aXRoIG15IGFuYWx5c2lzLiBJJ20gY2FsbGluZyBzZXQtcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzM4OCwiT3V0cHV0VG9rZW5zIjoxMzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDc6MDI6MTMuODg0OTAyOTgzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjY3MjUzMjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVtX2NtcHhjaGc4YlwiLFxuICAgIFwiZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgZW11bGF0aW5nIHRoZSBjbXB4Y2hnMTZiIGluc3RydWN0aW9uIGluIEtWTS4gSXQgbW9kaWZpZXMgdGhlIGluc3RydWN0aW9uIGVtdWxhdG9yIGFuZCB0aGUgbWVtb3J5IGFjY2VzcyBjYWxsYmFja3MgdG8gaGFuZGxlIDE2LWJ5dGUgYXRvbWljIGNvbXBhcmUtYW5kLWV4Y2hhbmdlIG9wZXJhdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY29yZSBLVk0gZW11bGF0aW9uIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGJ5IGEgZ3Vlc3QgZXhlY3V0aW5nIHRoZSBjbXB4Y2hnMTZiIGluc3RydWN0aW9uLCBhbmQgdGh1cyBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVtX2NtcHhjaGc4YlwiLFxuICAgIFwiZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgZW11bGF0aW5nIHRoZSBjbXB4Y2hnMTZiIGluc3RydWN0aW9uIGluIEtWTS4gSXQgbW9kaWZpZXMgdGhlIGluc3RydWN0aW9uIGVtdWxhdG9yIGFuZCB0aGUgbWVtb3J5IGFjY2VzcyBjYWxsYmFja3MgdG8gaGFuZGxlIDE2LWJ5dGUgYXRvbWljIGNvbXBhcmUtYW5kLWV4Y2hhbmdlIG9wZXJhdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY29yZSBLVk0gZW11bGF0aW9uIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGJ5IGEgZ3Vlc3QgZXhlY3V0aW5nIHRoZSBjbXB4Y2hnMTZiIGluc3RydWN0aW9uLCBhbmQgdGh1cyBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowzcltx[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-06 06:45:38 +0000 UTC FinishedAt: 2026-07-06 07:02:15 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "387a926ee166814611acecb960207fe2f3c4fd3e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "387a926ee166814611acecb960207fe2f3c4fd3e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "8cdc78e8-3683-49e4-9fa5-43624827c030" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "em_cmpxchg8b", "emulator_cmpxchg_emulated" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA3OjAxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2VtX2NtcHhjaGc4YiYjMzQ7LAogICAgJiMzNDtlbXVsYXRvcl9jbXB4Y2hnX2VtdWxhdGVkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgZW11bGF0aW5nIHRoZSBjbXB4Y2hnMTZiIGluc3RydWN0aW9uIGluIEtWTS4gSXQgbW9kaWZpZXMgdGhlIGluc3RydWN0aW9uIGVtdWxhdG9yIGFuZCB0aGUgbWVtb3J5IGFjY2VzcyBjYWxsYmFja3MgdG8gaGFuZGxlIDE2LWJ5dGUgYXRvbWljIGNvbXBhcmUtYW5kLWV4Y2hhbmdlIG9wZXJhdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY29yZSBLVk0gZW11bGF0aW9uIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGJ5IGEgZ3Vlc3QgZXhlY3V0aW5nIHRoZSBjbXB4Y2hnMTZiIGluc3RydWN0aW9uLCBhbmQgdGh1cyBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA3OjAxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNjdlMDY0MjY4NTdkMDNkNjA3YjNjNGYwOGE1OTY5ZGQxNWU4ZmU3MFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDYgMDc6MDE6NDUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vdWFjY2Vzcy5oXG5pbmRleCAzNjcyOTdiMTg4YzM5Yy4uMTIzNzU1ZDQ3MTA5OTcgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS91YWNjZXNzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaFxuQEAgLTQwNyw2ICYjNDM7NDA3LDI1IEBAIGRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIFx0aWYgKHVubGlrZWx5KCFzdWNjZXNzKSlcdFx0XHRcdFx0XHRcXFxuIFx0XHQqX29sZCA9IF9fb2xkO1x0XHRcdFx0XHRcdFxcXG4gXHRsaWtlbHkoc3VjY2Vzcyk7XHRcdFx0XHRcdH0pXG4mIzQzOyNlbHNlIC8vICFDT05GSUdfWDg2XzMyXG4mIzQzOyNkZWZpbmUgX190cnlfY21weGNoZzEyOF91c2VyX2FzbShfcHRyLCBfcG9sZCwgX25ldywgbGFiZWwpXHQoe1x0XFxcbiYjNDM7XHRib29sIHN1Y2Nlc3M7XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdF9fdHlwZW9mX18oX3B0cikgX29sZCA9IChfX3R5cGVvZl9fKF9wdHIpKShfcG9sZCk7XHRcdFxcXG4mIzQzO1x0X190eXBlb2ZfXygqKF9wdHIpKSBfX29sZCA9ICpfb2xkO1x0XHRcdFx0XFxcbiYjNDM7XHRfX3R5cGVvZl9fKCooX3B0cikpIF9fbmV3ID0gKF9uZXcpO1x0XHRcdFx0XFxcbiYjNDM7XHRhc21fZ290b19vdXRwdXQoXCYjMzQ7XFxuXCYjMzQ7XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdCAgICAgXCYjMzQ7MTogXCYjMzQ7IExPQ0tfUFJFRklYIFwmIzM0O2NtcHhjaGcxNmIgJVtwdHJdXFxuXCYjMzQ7XHRcdFxcXG4mIzQzO1x0XHQgICAgIF9BU01fRVhUQUJMRV9VQSgxYiwgJWxbbGFiZWxdKVx0XHRcdFxcXG4mIzQzO1x0XHQgICAgIDogXCYjMzQ7PUBjY3pcJiMzNDsgKHN1Y2Nlc3MpLFx0XHRcdFx0XFxcbiYjNDM7XHRcdCAgICAgICBcJiMzNDsmIzQzO0FcJiMzNDsgKF9fb2xkKSxcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdCAgICAgICBbcHRyXSBcJiMzNDsmIzQzO21cJiMzNDsgKCpfcHRyKVx0XHRcdFx0XFxcbiYjNDM7XHRcdCAgICAgOiBcJiMzNDtiXCYjMzQ7ICgodTY0KV9fbmV3KSxcdFx0XHRcdFxcXG4mIzQzO1x0XHQgICAgICAgXCYjMzQ7Y1wmIzM0OyAoKHU2NCkoKHUxMjgpX19uZXcgXHUwMDNlXHUwMDNlIDY0KSlcdFx0XHRcXFxuJiM0MztcdFx0ICAgICA6IFwmIzM0O21lbW9yeVwmIzM0O1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQgICAgIDogbGFiZWwpO1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0aWYgKHVubGlrZWx5KCFzdWNjZXNzKSlcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0Kl9vbGQgPSBfX29sZDtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdGxpa2VseShzdWNjZXNzKTtcdFx0XHRcdFx0fSlcbiAjZW5kaWYgLy8gQ09ORklHX1g4Nl8zMlxuICNlbHNlICAvLyAhQ09ORklHX0NDX0hBU19BU01fR09UT19USUVEX09VVFBVVFxuICNkZWZpbmUgX190cnlfY21weGNoZ191c2VyX2FzbShpdHlwZSwgbHR5cGUsIF9wdHIsIF9wb2xkLCBfbmV3LCBsYWJlbClcdCh7IFxcXG5AQCAtNDYzLDYgJiM0Mzs0ODIsMzAgQEAgZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRpZiAodW5saWtlbHkoIV9fcmVzdWx0KSlcdFx0XHRcdFx0XFxcbiBcdFx0Kl9vbGQgPSBfX29sZDtcdFx0XHRcdFx0XHRcXFxuIFx0bGlrZWx5KF9fcmVzdWx0KTtcdFx0XHRcdFx0fSlcbiYjNDM7I2Vsc2UgLy8hQ09ORklHX1g4Nl8zMlxuJiM0MzsjZGVmaW5lIF9fdHJ5X2NtcHhjaGcxMjhfdXNlcl9hc20oX3B0ciwgX3BvbGQsIF9uZXcsIGxhYmVsKVx0KHtcdFxcXG4mIzQzO1x0aW50IF9fcmVzdWx0O1x0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRfX3R5cGVvZl9fKF9wdHIpIF9vbGQgPSAoX190eXBlb2ZfXyhfcHRyKSkoX3BvbGQpO1x0XHRcXFxuJiM0MztcdF9fdHlwZW9mX18oKihfcHRyKSkgX19vbGQgPSAqX29sZDtcdFx0XHRcdFxcXG4mIzQzO1x0X190eXBlb2ZfXygqKF9wdHIpKSBfX25ldyA9IChfbmV3KTtcdFx0XHRcdFxcXG4mIzQzO1x0YXNtIHZvbGF0aWxlKFwmIzM0O1xcblwmIzM0O1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQgICAgIFwmIzM0OzE6IFwmIzM0OyBMT0NLX1BSRUZJWCBcJiMzNDtjbXB4Y2hnMTZiICVbcHRyXVxcblwmIzM0O1x0XHRcXFxuJiM0MztcdFx0ICAgICBcJiMzNDttb3YgJDAsICVbcmVzdWx0XVxcblxcdFwmIzM0O1x0XHRcdFx0XFxcbiYjNDM7XHRcdCAgICAgXCYjMzQ7c2V0eiAlYltyZXN1bHRdXFxuXCYjMzQ7XHRcdFx0XHRcXFxuJiM0MztcdFx0ICAgICBcJiMzNDsyOlxcblwmIzM0O1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQgICAgIF9BU01fRVhUQUJMRV9UWVBFX1JFRygxYiwgMmIsIEVYX1RZUEVfRUZBVUxUX1JFRyxcdFxcXG4mIzQzO1x0XHRcdFx0XHQgICAlW3Jlc3VsdF0pXHRcdFx0XFxcbiYjNDM7XHRcdCAgICAgOiBbcmVzdWx0XSBcJiMzNDs9cVwmIzM0OyAoX19yZXN1bHQpLFx0XHRcdFxcXG4mIzQzO1x0XHQgICAgICAgXCYjMzQ7JiM0MztBXCYjMzQ7IChfX29sZCksXHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQgICAgICAgW3B0cl0gXCYjMzQ7JiM0MzttXCYjMzQ7ICgqX3B0cilcdFx0XHRcdFxcXG4mIzQzO1x0XHQgICAgIDogXCYjMzQ7YlwmIzM0OyAoKHU2NClfX25ldyksXHRcdFx0XHRcXFxuJiM0MztcdFx0ICAgICAgIFwmIzM0O2NcJiMzNDsgKCh1NjQpKCh1MTI4KV9fbmV3IFx1MDAzZVx1MDAzZSA2NCkpXHRcdFx0XFxcbiYjNDM7XHRcdCAgICAgOiBcJiMzNDttZW1vcnlcJiMzNDssIFwmIzM0O2NjXCYjMzQ7KTtcdFx0XHRcdFx0XFxcbiYjNDM7XHRpZiAodW5saWtlbHkoX19yZXN1bHQgXHUwMDNjIDApKVx0XHRcdFx0XHRcXFxuJiM0MztcdFx0Z290byBsYWJlbDtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdGlmICh1bmxpa2VseSghX19yZXN1bHQpKVx0XHRcdFx0XHRcXFxuJiM0MztcdFx0Kl9vbGQgPSBfX29sZDtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdGxpa2VseShfX3Jlc3VsdCk7XHRcdFx0XHRcdH0pXG4gI2VuZGlmIC8vIENPTkZJR19YODZfMzJcbiAjZW5kaWYgLy8gQ09ORklHX0NDX0hBU19BU01fR09UT19USUVEX09VVFBVVFxuIFxuQEAgLTU1MSwxMSAmIzQzOzU5NCwxOCBAQCBkbyB7XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIFxuIGV4dGVybiB2b2lkIF9fdHJ5X2NtcHhjaGdfdXNlcl93cm9uZ19zaXplKHZvaWQpO1xuIFxuLSNpZm5kZWYgQ09ORklHX1g4Nl8zMlxuJiM0MzsjaWZkZWYgQ09ORklHX1g4Nl8zMlxuJiM0MzsvKiBBbHdheXMgZmFpbCBvbiAzMiBiaXQgYXJjaCBhcyBpdCBkbyBub3Qgc3VwcG9ydCAxMjggY21weGNoZyAoaS5lLiBjbXB4Y2hnMTZiXG4mIzQzOyAqIGluc3RydWN0aW9uKS5cbiYjNDM7ICovXG4mIzQzOyNkZWZpbmUgX190cnlfY21weGNoZzEyOF91c2VyX2FzbShfcHRyLCBfcG9sZCwgX25ldywgbGFiZWwpICgxKVxuJiM0MzsjZWxzZVxuICNkZWZpbmUgX190cnlfY21weGNoZzY0X3VzZXJfYXNtKF9wdHIsIF9vbGRwLCBfbnZhbCwgX2xhYmVsKVx0XHRcXFxuIFx0X190cnlfY21weGNoZ191c2VyX2FzbShcJiMzNDtxXCYjMzQ7LCBcJiMzNDtyXCYjMzQ7LCAoX3B0ciksIChfb2xkcCksIChfbnZhbCksIF9sYWJlbClcbiYjNDM7XG4gI2VuZGlmXG4gXG4mIzQzO1xuIC8qXG4gICogRm9yY2UgdGhlIHBvaW50ZXIgdG8gdVx1MDAzY3NpemVcdTAwM2UgdG8gbWF0Y2ggdGhlIHNpemUgZXhwZWN0ZWQgYnkgdGhlIGFzbSBoZWxwZXIuXG4gICogY2xhbmcvTExWTSBjb21waWxlcyBhbGwgY2FzZXMgYW5kIG9ubHkgZGlzY2FyZHMgdGhlIHVudXNlZCBwYXRocyBhZnRlclxuQEAgLTU4MCw2ICYjNDM7NjMwLDEwIEBAIGV4dGVybiB2b2lkIF9fdHJ5X2NtcHhjaGdfdXNlcl93cm9uZ19zaXplKHZvaWQpO1xuIFx0Y2FzZSA4Olx0X19yZXQgPSBfX3RyeV9jbXB4Y2hnNjRfdXNlcl9hc20oKF9fZm9yY2UgdTY0ICopKF9wdHIpLCAoX29sZHApLFxcXG4gXHRcdFx0XHRcdFx0IChfbnZhbCksIF9sYWJlbCk7XHRcdFxcXG4gXHRcdGJyZWFrO1x0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdGNhc2UgMTY6XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRfX3JldCA9IF9fdHJ5X2NtcHhjaGcxMjhfdXNlcl9hc20oKF9fZm9yY2UgdTEyOCAqKShfcHRyKSxcdFxcXG4mIzQzO1x0XHRcdFx0XHRcdCAgKF9vbGRwKSwgKF9udmFsKSwgX2xhYmVsKTtcdFxcXG4mIzQzO1x0XHRicmVhaztcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdGRlZmF1bHQ6IF9fdHJ5X2NtcHhjaGdfdXNlcl93cm9uZ19zaXplKCk7XHRcdFx0XHRcXFxuIFx0fVx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRfX3JldDtcdFx0XHRcdFx0XHR9KVxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9lbXVsYXRlLmMgYi9hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jXG5pbmRleCBjOGUyOTJlOWEyNGRmZS4uOWRmNTViM2M1NjI3NjUgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jXG5AQCAtMjE4OCwyNCAmIzQzOzIxODgsMzYgQEAgc3RhdGljIGludCBlbV9jYWxsX25lYXJfYWJzKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KVxuIFx0cmV0dXJuIHJjO1xuIH1cbiBcbiYjNDM7I2RlZmluZSBlbV9jbXB4Y2hnOGJfMTZiKF9fYywgcmJpdHMsIG1iaXRzKVxcXG4mIzQzO2RvIHtcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdHUjI21iaXRzIG9sZCA9IF9fYy1cdTAwM2Vkc3Qub3JpZ192YWwjI21iaXRzO1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0QlVJTERfQlVHX09OKHJiaXRzICogMiAhPSBtYml0cyk7XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdGlmICgoKHUjI3JiaXRzKSAob2xkIFx1MDAzZVx1MDAzZSAwKSAhPSAodSMjcmJpdHMpIHJlZ19yZWFkKGN0eHQsIFZDUFVfUkVHU19SQVgpKSB8fFx0XHRcXFxuJiM0MztcdCAgICAoKHUjI3JiaXRzKSAob2xkIFx1MDAzZVx1MDAzZSByYml0cykgIT0gKHUjI3JiaXRzKSByZWdfcmVhZChjdHh0LCBWQ1BVX1JFR1NfUkRYKSkpIHtcdFx0XFxcbiYjNDM7XHRcdCpyZWdfd3JpdGUoY3R4dCwgVkNQVV9SRUdTX1JBWCkgPSAodSMjcmJpdHMpIChvbGQgXHUwMDNlXHUwMDNlIDApO1x0XHRcdFxcXG4mIzQzO1x0XHQqcmVnX3dyaXRlKGN0eHQsIFZDUFVfUkVHU19SRFgpID0gKHUjI3JiaXRzKSAob2xkIFx1MDAzZVx1MDAzZSByYml0cyk7XHRcdFx0XFxcbiYjNDM7XHRcdGN0eHQtXHUwMDNlZWZsYWdzIFx1MDAyNj0gflg4Nl9FRkxBR1NfWkY7XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdH0gZWxzZSB7XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0Y3R4dC1cdTAwM2Vkc3QudmFsIyNtYml0cyA9ICgodSMjbWJpdHMpcmVnX3JlYWQoY3R4dCwgVkNQVV9SRUdTX1JDWCkgXHUwMDNjXHUwMDNjIHJiaXRzKSB8XHRcXFxuJiM0MztcdFx0XHRcdFx0KHUjI3JiaXRzKSByZWdfcmVhZChjdHh0LCBWQ1BVX1JFR1NfUkJYKTtcdFx0XFxcbiYjNDM7XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdGN0eHQtXHUwMDNlZWZsYWdzIHw9IFg4Nl9FRkxBR1NfWkY7XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdH1cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7fSB3aGlsZSgwKVxuJiM0MztcbiBzdGF0aWMgaW50IGVtX2NtcHhjaGc4YihzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dClcbiB7XG4tXHR1NjQgb2xkID0gY3R4dC1cdTAwM2Vkc3Qub3JpZ192YWw2NDtcbi1cbi1cdGlmIChjdHh0LVx1MDAzZWRzdC5ieXRlcyA9PSAxNilcbiYjNDM7XHRpZiAoV0FSTl9PTl9PTkNFKDggJiM0MzsgISEoY3R4dC1cdTAwM2VyZXhfYml0cyBcdTAwMjYgUkVYX1cpICogOCAhPSBjdHh0LVx1MDAzZWRzdC5ieXRlcykpXG4gXHRcdHJldHVybiBYODZFTVVMX1VOSEFORExFQUJMRTtcbiBcbi1cdGlmICgoKHUzMikgKG9sZCBcdTAwM2VcdTAwM2UgMCkgIT0gKHUzMikgcmVnX3JlYWQoY3R4dCwgVkNQVV9SRUdTX1JBWCkpIHx8XG4tXHQgICAgKCh1MzIpIChvbGQgXHUwMDNlXHUwMDNlIDMyKSAhPSAodTMyKSByZWdfcmVhZChjdHh0LCBWQ1BVX1JFR1NfUkRYKSkpIHtcbi1cdFx0KnJlZ193cml0ZShjdHh0LCBWQ1BVX1JFR1NfUkFYKSA9ICh1MzIpIChvbGQgXHUwMDNlXHUwMDNlIDApO1xuLVx0XHQqcmVnX3dyaXRlKGN0eHQsIFZDUFVfUkVHU19SRFgpID0gKHUzMikgKG9sZCBcdTAwM2VcdTAwM2UgMzIpO1xuLVx0XHRjdHh0LVx1MDAzZWVmbGFncyBcdTAwMjY9IH5YODZfRUZMQUdTX1pGO1xuLVx0fSBlbHNlIHtcbi1cdFx0Y3R4dC1cdTAwM2Vkc3QudmFsNjQgPSAoKHU2NClyZWdfcmVhZChjdHh0LCBWQ1BVX1JFR1NfUkNYKSBcdTAwM2NcdTAwM2MgMzIpIHxcbi1cdFx0XHQodTMyKSByZWdfcmVhZChjdHh0LCBWQ1BVX1JFR1NfUkJYKTtcbi1cbi1cdFx0Y3R4dC1cdTAwM2VlZmxhZ3MgfD0gWDg2X0VGTEFHU19aRjtcbi1cdH1cbiYjNDM7XHRpZiAoIShjdHh0LVx1MDAzZXJleF9iaXRzIFx1MDAyNiBSRVhfVykpXG4mIzQzO1x0XHRlbV9jbXB4Y2hnOGJfMTZiKGN0eHQsIDMyLCA2NCk7XG4mIzQzOyNpZmRlZiBDT05GSUdfWDg2XzY0XG4mIzQzO1x0ZWxzZVxuJiM0MztcdFx0ZW1fY21weGNoZzhiXzE2YihjdHh0LCA2NCwgMTI4KTtcbiYjNDM7I2VuZGlmXG4gXHRyZXR1cm4gWDg2RU1VTF9DT05USU5VRTtcbiB9XG4gXG5AQCAtNTQwNSw4ICYjNDM7NTQxNywxNCBAQCBpbnQgeDg2X2VtdWxhdGVfaW5zbihzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCwgYm9vbCBjaGVja19pbnRlcmNlcHRzKVxuIFx0XHRcdGdvdG8gZG9uZTtcbiBcdFx0fVxuIFx0fVxuLVx0LyogQ29weSBmdWxsIDY0LWJpdCB2YWx1ZSBmb3IgQ01QWENIRzhCLiAgKi9cbi1cdGN0eHQtXHUwMDNlZHN0Lm9yaWdfdmFsNjQgPSBjdHh0LVx1MDAzZWRzdC52YWw2NDtcbiYjNDM7XHQvKiBDb3B5IGZ1bGwgNjQvMTI4LWJpdCB2YWx1ZSBmb3IgQ01QWENIRzhCLiAgKi9cbiYjNDM7XG4mIzQzOyNpZmRlZiBDT05GSUdfWDg2XzY0XG4mIzQzO1x0aWYgKGN0eHQtXHUwMDNlZHN0LmJ5dGVzID09IDE2KVxuJiM0MztcdFx0Y3R4dC1cdTAwM2Vkc3Qub3JpZ192YWwxMjggPSBjdHh0LVx1MDAzZWRzdC52YWwxMjg7XG4mIzQzO1x0ZWxzZVxuJiM0MzsjZW5kaWZcbiYjNDM7XHRcdGN0eHQtXHUwMDNlZHN0Lm9yaWdfdmFsNjQgPSBjdHh0LVx1MDAzZWRzdC52YWw2NDtcbiBcbiBzcGVjaWFsX2luc246XG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL2t2bV9lbXVsYXRlLmggYi9hcmNoL3g4Ni9rdm0va3ZtX2VtdWxhdGUuaFxuaW5kZXggZmIzZGFiNGI1YTUzZTcuLmE1MTY3NzIxN2FkYTQzIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL2t2bV9lbXVsYXRlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9rdm1fZW11bGF0ZS5oXG5AQCAtMjU1LDYgJiM0MzsyNTUsOSBAQCBzdHJ1Y3Qgb3BlcmFuZCB7XG4gXHR1bmlvbiB7XG4gXHRcdHVuc2lnbmVkIGxvbmcgb3JpZ192YWw7XG4gXHRcdHU2NCBvcmlnX3ZhbDY0O1xuJiM0MzsjaWZkZWYgQ09ORklHX1g4Nl82NFxuJiM0MztcdFx0dTEyOCBvcmlnX3ZhbDEyODtcbiYjNDM7I2VuZGlmXG4gXHR9O1xuIFx0dW5pb24ge1xuIFx0XHR1bnNpZ25lZCBsb25nICpyZWc7XG5AQCAtMjY4LDYgJiM0MzsyNzEsOSBAQCBzdHJ1Y3Qgb3BlcmFuZCB7XG4gXHR1bmlvbiB7XG4gXHRcdHVuc2lnbmVkIGxvbmcgdmFsO1xuIFx0XHR1NjQgdmFsNjQ7XG4mIzQzOyNpZmRlZiBDT05GSUdfWDg2XzY0XG4mIzQzO1x0XHR1MTI4IHZhbDEyODtcbiYjNDM7I2VuZGlmXG4gXHRcdGNoYXIgdmFscHRyW3NpemVvZihhdngyNTZfdCldO1xuIFx0XHRzc2UxMjhfdCB2ZWNfdmFsO1xuIFx0XHRhdngyNTZfdCB2ZWNfdmFsMjtcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmNcbmluZGV4IDNmYjY0OTA1ZDE5MDcxLi40MGM4NGY4YzQ5MTI5NCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS94ODYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3g4Ni5jXG5AQCAtODMyMiw3ICYjNDM7ODMyMiw3IEBAIHN0YXRpYyBpbnQgZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZChzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCxcbiBcdGludCByO1xuIFxuIFx0LyogZ3Vlc3RzIGNtcHhjaGc4YiBoYXZlIHRvIGJlIGVtdWxhdGVkIGF0b21pY2FsbHkgKi9cbi1cdGlmIChieXRlcyBcdTAwM2UgOCB8fCAoYnl0ZXMgXHUwMDI2IChieXRlcyAtIDEpKSlcbiYjNDM7XHRpZiAoYnl0ZXMgXHUwMDNlIDIgKiBzaXplb2YodW5zaWduZWQgbG9uZykgfHwgKGJ5dGVzIFx1MDAyNiAoYnl0ZXMgLSAxKSkpXG4gXHRcdGdvdG8gZW11bF93cml0ZTtcbiBcbiBcdGdwYSA9IGt2bV9tbXVfZ3ZhX3RvX2dwYV93cml0ZSh2Y3B1LCBhZGRyLCBOVUxMKTtcbkBAIC04MzYyLDYgJiM0Mzs4MzYyLDExIEBAIHN0YXRpYyBpbnQgZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZChzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCxcbiBcdGNhc2UgODpcbiBcdFx0ciA9IGVtdWxhdG9yX3RyeV9jbXB4Y2hnX3VzZXIodTY0LCBodmEsIG9sZCwgbmV3KTtcbiBcdFx0YnJlYWs7XG4mIzQzOyNpZmRlZiBDT05GSUdfWDg2XzY0XG4mIzQzO1x0Y2FzZSAxNjpcbiYjNDM7XHRcdHIgPSBlbXVsYXRvcl90cnlfY21weGNoZ191c2VyKHUxMjgsIGh2YSwgb2xkLCBuZXcpO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzOyNlbmRpZlxuIFx0ZGVmYXVsdDpcbiBcdFx0QlVHKCk7XG4gXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDc6MDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZW1fY21weGNoZzhiJiMzNDssCiAgICAmIzM0O2VtdWxhdG9yX2NtcHhjaGdfZW11bGF0ZWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBlbXVsYXRpbmcgdGhlIGNtcHhjaGcxNmIgaW5zdHJ1Y3Rpb24gaW4gS1ZNLiBJdCBtb2RpZmllcyB0aGUgaW5zdHJ1Y3Rpb24gZW11bGF0b3IgYW5kIHRoZSBtZW1vcnkgYWNjZXNzIGNhbGxiYWNrcyB0byBoYW5kbGUgMTYtYnl0ZSBhdG9taWMgY29tcGFyZS1hbmQtZXhjaGFuZ2Ugb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIEtWTSBlbXVsYXRpb24gbG9naWMgdGhhdCBpcyByZWFjaGFibGUgYnkgYSBndWVzdCBleGVjdXRpbmcgdGhlIGNtcHhjaGcxNmIgaW5zdHJ1Y3Rpb24sIGFuZCB0aHVzIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDY3ZTA2NDI2ODU3ZDAzZDYwN2IzYzRmMDhhNTk2OWRkMTVlOGZlNzAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCA2IDA3OjAxOjQ1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vdWFjY2Vzcy5oCmluZGV4IDM2NzI5N2IxODhjMzljLi4xMjM3NTVkNDcxMDk5NyAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vdWFjY2Vzcy5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaApAQCAtNDA3LDYgJiM0Mzs0MDcsMjUgQEAgZG8gewkJCQkJCQkJCVwKIAlpZiAodW5saWtlbHkoIXN1Y2Nlc3MpKQkJCQkJCVwKIAkJKl9vbGQgPSBfX29sZDsJCQkJCQlcCiAJbGlrZWx5KHN1Y2Nlc3MpOwkJCQkJfSkKJiM0MzsjZWxzZSAvLyAhQ09ORklHX1g4Nl8zMgomIzQzOyNkZWZpbmUgX190cnlfY21weGNoZzEyOF91c2VyX2FzbShfcHRyLCBfcG9sZCwgX25ldywgbGFiZWwpCSh7CVwKJiM0MzsJYm9vbCBzdWNjZXNzOwkJCQkJCQlcCiYjNDM7CV9fdHlwZW9mX18oX3B0cikgX29sZCA9IChfX3R5cGVvZl9fKF9wdHIpKShfcG9sZCk7CQlcCiYjNDM7CV9fdHlwZW9mX18oKihfcHRyKSkgX19vbGQgPSAqX29sZDsJCQkJXAomIzQzOwlfX3R5cGVvZl9fKCooX3B0cikpIF9fbmV3ID0gKF9uZXcpOwkJCQlcCiYjNDM7CWFzbV9nb3RvX291dHB1dCgmIzM0O1xuJiMzNDsJCQkJCQlcCiYjNDM7CQkgICAgICYjMzQ7MTogJiMzNDsgTE9DS19QUkVGSVggJiMzNDtjbXB4Y2hnMTZiICVbcHRyXVxuJiMzNDsJCVwKJiM0MzsJCSAgICAgX0FTTV9FWFRBQkxFX1VBKDFiLCAlbFtsYWJlbF0pCQkJXAomIzQzOwkJICAgICA6ICYjMzQ7PUBjY3omIzM0OyAoc3VjY2VzcyksCQkJCVwKJiM0MzsJCSAgICAgICAmIzM0OyYjNDM7QSYjMzQ7IChfX29sZCksCQkJCQlcCiYjNDM7CQkgICAgICAgW3B0cl0gJiMzNDsmIzQzO20mIzM0OyAoKl9wdHIpCQkJCVwKJiM0MzsJCSAgICAgOiAmIzM0O2ImIzM0OyAoKHU2NClfX25ldyksCQkJCVwKJiM0MzsJCSAgICAgICAmIzM0O2MmIzM0OyAoKHU2NCkoKHUxMjgpX19uZXcgJmd0OyZndDsgNjQpKQkJCVwKJiM0MzsJCSAgICAgOiAmIzM0O21lbW9yeSYjMzQ7CQkJCQkJXAomIzQzOwkJICAgICA6IGxhYmVsKTsJCQkJCQlcCiYjNDM7CWlmICh1bmxpa2VseSghc3VjY2VzcykpCQkJCQkJXAomIzQzOwkJKl9vbGQgPSBfX29sZDsJCQkJCQlcCiYjNDM7CWxpa2VseShzdWNjZXNzKTsJCQkJCX0pCiAjZW5kaWYgLy8gQ09ORklHX1g4Nl8zMgogI2Vsc2UgIC8vICFDT05GSUdfQ0NfSEFTX0FTTV9HT1RPX1RJRURfT1VUUFVUCiAjZGVmaW5lIF9fdHJ5X2NtcHhjaGdfdXNlcl9hc20oaXR5cGUsIGx0eXBlLCBfcHRyLCBfcG9sZCwgX25ldywgbGFiZWwpCSh7IFwKQEAgLTQ2Myw2ICYjNDM7NDgyLDMwIEBAIGRvIHsJCQkJCQkJCQlcCiAJaWYgKHVubGlrZWx5KCFfX3Jlc3VsdCkpCQkJCQlcCiAJCSpfb2xkID0gX19vbGQ7CQkJCQkJXAogCWxpa2VseShfX3Jlc3VsdCk7CQkJCQl9KQomIzQzOyNlbHNlIC8vIUNPTkZJR19YODZfMzIKJiM0MzsjZGVmaW5lIF9fdHJ5X2NtcHhjaGcxMjhfdXNlcl9hc20oX3B0ciwgX3BvbGQsIF9uZXcsIGxhYmVsKQkoewlcCiYjNDM7CWludCBfX3Jlc3VsdDsJCQkJCQkJXAomIzQzOwlfX3R5cGVvZl9fKF9wdHIpIF9vbGQgPSAoX190eXBlb2ZfXyhfcHRyKSkoX3BvbGQpOwkJXAomIzQzOwlfX3R5cGVvZl9fKCooX3B0cikpIF9fb2xkID0gKl9vbGQ7CQkJCVwKJiM0MzsJX190eXBlb2ZfXygqKF9wdHIpKSBfX25ldyA9IChfbmV3KTsJCQkJXAomIzQzOwlhc20gdm9sYXRpbGUoJiMzNDtcbiYjMzQ7CQkJCQkJXAomIzQzOwkJICAgICAmIzM0OzE6ICYjMzQ7IExPQ0tfUFJFRklYICYjMzQ7Y21weGNoZzE2YiAlW3B0cl1cbiYjMzQ7CQlcCiYjNDM7CQkgICAgICYjMzQ7bW92ICQwLCAlW3Jlc3VsdF1cblx0JiMzNDsJCQkJXAomIzQzOwkJICAgICAmIzM0O3NldHogJWJbcmVzdWx0XVxuJiMzNDsJCQkJXAomIzQzOwkJICAgICAmIzM0OzI6XG4mIzM0OwkJCQkJCVwKJiM0MzsJCSAgICAgX0FTTV9FWFRBQkxFX1RZUEVfUkVHKDFiLCAyYiwgRVhfVFlQRV9FRkFVTFRfUkVHLAlcCiYjNDM7CQkJCQkgICAlW3Jlc3VsdF0pCQkJXAomIzQzOwkJICAgICA6IFtyZXN1bHRdICYjMzQ7PXEmIzM0OyAoX19yZXN1bHQpLAkJCVwKJiM0MzsJCSAgICAgICAmIzM0OyYjNDM7QSYjMzQ7IChfX29sZCksCQkJCQlcCiYjNDM7CQkgICAgICAgW3B0cl0gJiMzNDsmIzQzO20mIzM0OyAoKl9wdHIpCQkJCVwKJiM0MzsJCSAgICAgOiAmIzM0O2ImIzM0OyAoKHU2NClfX25ldyksCQkJCVwKJiM0MzsJCSAgICAgICAmIzM0O2MmIzM0OyAoKHU2NCkoKHUxMjgpX19uZXcgJmd0OyZndDsgNjQpKQkJCVwKJiM0MzsJCSAgICAgOiAmIzM0O21lbW9yeSYjMzQ7LCAmIzM0O2NjJiMzNDspOwkJCQkJXAomIzQzOwlpZiAodW5saWtlbHkoX19yZXN1bHQgJmx0OyAwKSkJCQkJCVwKJiM0MzsJCWdvdG8gbGFiZWw7CQkJCQkJXAomIzQzOwlpZiAodW5saWtlbHkoIV9fcmVzdWx0KSkJCQkJCVwKJiM0MzsJCSpfb2xkID0gX19vbGQ7CQkJCQkJXAomIzQzOwlsaWtlbHkoX19yZXN1bHQpOwkJCQkJfSkKICNlbmRpZiAvLyBDT05GSUdfWDg2XzMyCiAjZW5kaWYgLy8gQ09ORklHX0NDX0hBU19BU01fR09UT19USUVEX09VVFBVVAogCkBAIC01NTEsMTEgJiM0Mzs1OTQsMTggQEAgZG8gewkJCQkJCQkJCQlcCiAKIGV4dGVybiB2b2lkIF9fdHJ5X2NtcHhjaGdfdXNlcl93cm9uZ19zaXplKHZvaWQpOwogCi0jaWZuZGVmIENPTkZJR19YODZfMzIKJiM0MzsjaWZkZWYgQ09ORklHX1g4Nl8zMgomIzQzOy8qIEFsd2F5cyBmYWlsIG9uIDMyIGJpdCBhcmNoIGFzIGl0IGRvIG5vdCBzdXBwb3J0IDEyOCBjbXB4Y2hnIChpLmUuIGNtcHhjaGcxNmIKJiM0MzsgKiBpbnN0cnVjdGlvbikuCiYjNDM7ICovCiYjNDM7I2RlZmluZSBfX3RyeV9jbXB4Y2hnMTI4X3VzZXJfYXNtKF9wdHIsIF9wb2xkLCBfbmV3LCBsYWJlbCkgKDEpCiYjNDM7I2Vsc2UKICNkZWZpbmUgX190cnlfY21weGNoZzY0X3VzZXJfYXNtKF9wdHIsIF9vbGRwLCBfbnZhbCwgX2xhYmVsKQkJXAogCV9fdHJ5X2NtcHhjaGdfdXNlcl9hc20oJiMzNDtxJiMzNDssICYjMzQ7ciYjMzQ7LCAoX3B0ciksIChfb2xkcCksIChfbnZhbCksIF9sYWJlbCkKJiM0MzsKICNlbmRpZgogCiYjNDM7CiAvKgogICogRm9yY2UgdGhlIHBvaW50ZXIgdG8gdSZsdDtzaXplJmd0OyB0byBtYXRjaCB0aGUgc2l6ZSBleHBlY3RlZCBieSB0aGUgYXNtIGhlbHBlci4KICAqIGNsYW5nL0xMVk0gY29tcGlsZXMgYWxsIGNhc2VzIGFuZCBvbmx5IGRpc2NhcmRzIHRoZSB1bnVzZWQgcGF0aHMgYWZ0ZXIKQEAgLTU4MCw2ICYjNDM7NjMwLDEwIEBAIGV4dGVybiB2b2lkIF9fdHJ5X2NtcHhjaGdfdXNlcl93cm9uZ19zaXplKHZvaWQpOwogCWNhc2UgODoJX19yZXQgPSBfX3RyeV9jbXB4Y2hnNjRfdXNlcl9hc20oKF9fZm9yY2UgdTY0ICopKF9wdHIpLCAoX29sZHApLFwKIAkJCQkJCSAoX252YWwpLCBfbGFiZWwpOwkJXAogCQlicmVhazsJCQkJCQkJCVwKJiM0MzsJY2FzZSAxNjoJCQkJCQkJCVwKJiM0MzsJCV9fcmV0ID0gX190cnlfY21weGNoZzEyOF91c2VyX2FzbSgoX19mb3JjZSB1MTI4ICopKF9wdHIpLAlcCiYjNDM7CQkJCQkJICAoX29sZHApLCAoX252YWwpLCBfbGFiZWwpOwlcCiYjNDM7CQlicmVhazsJCQkJCQkJCVwKIAlkZWZhdWx0OiBfX3RyeV9jbXB4Y2hnX3VzZXJfd3Jvbmdfc2l6ZSgpOwkJCQlcCiAJfQkJCQkJCQkJCVwKIAlfX3JldDsJCQkJCQl9KQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL2VtdWxhdGUuYyBiL2FyY2gveDg2L2t2bS9lbXVsYXRlLmMKaW5kZXggYzhlMjkyZTlhMjRkZmUuLjlkZjU1YjNjNTYyNzY1IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9lbXVsYXRlLmMKQEAgLTIxODgsMjQgJiM0MzsyMTg4LDM2IEBAIHN0YXRpYyBpbnQgZW1fY2FsbF9uZWFyX2FicyhzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKIAlyZXR1cm4gcmM7CiB9CiAKJiM0MzsjZGVmaW5lIGVtX2NtcHhjaGc4Yl8xNmIoX19jLCByYml0cywgbWJpdHMpXAomIzQzO2RvIHsJCQkJCQkJCQkJCQlcCiYjNDM7CXUjI21iaXRzIG9sZCA9IF9fYy0mZ3Q7ZHN0Lm9yaWdfdmFsIyNtYml0czsJCQkJCQlcCiYjNDM7CQkJCQkJCQkJCQkJXAomIzQzOwlCVUlMRF9CVUdfT04ocmJpdHMgKiAyICE9IG1iaXRzKTsJCQkJCQkJXAomIzQzOwkJCQkJCQkJCQkJCVwKJiM0MzsJaWYgKCgodSMjcmJpdHMpIChvbGQgJmd0OyZndDsgMCkgIT0gKHUjI3JiaXRzKSByZWdfcmVhZChjdHh0LCBWQ1BVX1JFR1NfUkFYKSkgfHwJCVwKJiM0MzsJICAgICgodSMjcmJpdHMpIChvbGQgJmd0OyZndDsgcmJpdHMpICE9ICh1IyNyYml0cykgcmVnX3JlYWQoY3R4dCwgVkNQVV9SRUdTX1JEWCkpKSB7CQlcCiYjNDM7CQkqcmVnX3dyaXRlKGN0eHQsIFZDUFVfUkVHU19SQVgpID0gKHUjI3JiaXRzKSAob2xkICZndDsmZ3Q7IDApOwkJCVwKJiM0MzsJCSpyZWdfd3JpdGUoY3R4dCwgVkNQVV9SRUdTX1JEWCkgPSAodSMjcmJpdHMpIChvbGQgJmd0OyZndDsgcmJpdHMpOwkJCVwKJiM0MzsJCWN0eHQtJmd0O2VmbGFncyAmYW1wOz0gflg4Nl9FRkxBR1NfWkY7CQkJCQkJCVwKJiM0MzsJfSBlbHNlIHsJCQkJCQkJCQkJXAomIzQzOwkJY3R4dC0mZ3Q7ZHN0LnZhbCMjbWJpdHMgPSAoKHUjI21iaXRzKXJlZ19yZWFkKGN0eHQsIFZDUFVfUkVHU19SQ1gpICZsdDsmbHQ7IHJiaXRzKSB8CVwKJiM0MzsJCQkJCSh1IyNyYml0cykgcmVnX3JlYWQoY3R4dCwgVkNQVV9SRUdTX1JCWCk7CQlcCiYjNDM7CQkJCQkJCQkJCQkJXAomIzQzOwkJY3R4dC0mZ3Q7ZWZsYWdzIHw9IFg4Nl9FRkxBR1NfWkY7CQkJCQkJCVwKJiM0MzsJfQkJCQkJCQkJCQkJXAomIzQzO30gd2hpbGUoMCkKJiM0MzsKIHN0YXRpYyBpbnQgZW1fY21weGNoZzhiKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQogewotCXU2NCBvbGQgPSBjdHh0LSZndDtkc3Qub3JpZ192YWw2NDsKLQotCWlmIChjdHh0LSZndDtkc3QuYnl0ZXMgPT0gMTYpCiYjNDM7CWlmIChXQVJOX09OX09OQ0UoOCAmIzQzOyAhIShjdHh0LSZndDtyZXhfYml0cyAmYW1wOyBSRVhfVykgKiA4ICE9IGN0eHQtJmd0O2RzdC5ieXRlcykpCiAJCXJldHVybiBYODZFTVVMX1VOSEFORExFQUJMRTsKIAotCWlmICgoKHUzMikgKG9sZCAmZ3Q7Jmd0OyAwKSAhPSAodTMyKSByZWdfcmVhZChjdHh0LCBWQ1BVX1JFR1NfUkFYKSkgfHwKLQkgICAgKCh1MzIpIChvbGQgJmd0OyZndDsgMzIpICE9ICh1MzIpIHJlZ19yZWFkKGN0eHQsIFZDUFVfUkVHU19SRFgpKSkgewotCQkqcmVnX3dyaXRlKGN0eHQsIFZDUFVfUkVHU19SQVgpID0gKHUzMikgKG9sZCAmZ3Q7Jmd0OyAwKTsKLQkJKnJlZ193cml0ZShjdHh0LCBWQ1BVX1JFR1NfUkRYKSA9ICh1MzIpIChvbGQgJmd0OyZndDsgMzIpOwotCQljdHh0LSZndDtlZmxhZ3MgJmFtcDs9IH5YODZfRUZMQUdTX1pGOwotCX0gZWxzZSB7Ci0JCWN0eHQtJmd0O2RzdC52YWw2NCA9ICgodTY0KXJlZ19yZWFkKGN0eHQsIFZDUFVfUkVHU19SQ1gpICZsdDsmbHQ7IDMyKSB8Ci0JCQkodTMyKSByZWdfcmVhZChjdHh0LCBWQ1BVX1JFR1NfUkJYKTsKLQotCQljdHh0LSZndDtlZmxhZ3MgfD0gWDg2X0VGTEFHU19aRjsKLQl9CiYjNDM7CWlmICghKGN0eHQtJmd0O3JleF9iaXRzICZhbXA7IFJFWF9XKSkKJiM0MzsJCWVtX2NtcHhjaGc4Yl8xNmIoY3R4dCwgMzIsIDY0KTsKJiM0MzsjaWZkZWYgQ09ORklHX1g4Nl82NAomIzQzOwllbHNlCiYjNDM7CQllbV9jbXB4Y2hnOGJfMTZiKGN0eHQsIDY0LCAxMjgpOwomIzQzOyNlbmRpZgogCXJldHVybiBYODZFTVVMX0NPTlRJTlVFOwogfQogCkBAIC01NDA1LDggJiM0Mzs1NDE3LDE0IEBAIGludCB4ODZfZW11bGF0ZV9pbnNuKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0LCBib29sIGNoZWNrX2ludGVyY2VwdHMpCiAJCQlnb3RvIGRvbmU7CiAJCX0KIAl9Ci0JLyogQ29weSBmdWxsIDY0LWJpdCB2YWx1ZSBmb3IgQ01QWENIRzhCLiAgKi8KLQljdHh0LSZndDtkc3Qub3JpZ192YWw2NCA9IGN0eHQtJmd0O2RzdC52YWw2NDsKJiM0MzsJLyogQ29weSBmdWxsIDY0LzEyOC1iaXQgdmFsdWUgZm9yIENNUFhDSEc4Qi4gICovCiYjNDM7CiYjNDM7I2lmZGVmIENPTkZJR19YODZfNjQKJiM0MzsJaWYgKGN0eHQtJmd0O2RzdC5ieXRlcyA9PSAxNikKJiM0MzsJCWN0eHQtJmd0O2RzdC5vcmlnX3ZhbDEyOCA9IGN0eHQtJmd0O2RzdC52YWwxMjg7CiYjNDM7CWVsc2UKJiM0MzsjZW5kaWYKJiM0MzsJCWN0eHQtJmd0O2RzdC5vcmlnX3ZhbDY0ID0gY3R4dC0mZ3Q7ZHN0LnZhbDY0OwogCiBzcGVjaWFsX2luc246CiAKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9rdm1fZW11bGF0ZS5oIGIvYXJjaC94ODYva3ZtL2t2bV9lbXVsYXRlLmgKaW5kZXggZmIzZGFiNGI1YTUzZTcuLmE1MTY3NzIxN2FkYTQzIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0va3ZtX2VtdWxhdGUuaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0va3ZtX2VtdWxhdGUuaApAQCAtMjU1LDYgJiM0MzsyNTUsOSBAQCBzdHJ1Y3Qgb3BlcmFuZCB7CiAJdW5pb24gewogCQl1bnNpZ25lZCBsb25nIG9yaWdfdmFsOwogCQl1NjQgb3JpZ192YWw2NDsKJiM0MzsjaWZkZWYgQ09ORklHX1g4Nl82NAomIzQzOwkJdTEyOCBvcmlnX3ZhbDEyODsKJiM0MzsjZW5kaWYKIAl9OwogCXVuaW9uIHsKIAkJdW5zaWduZWQgbG9uZyAqcmVnOwpAQCAtMjY4LDYgJiM0MzsyNzEsOSBAQCBzdHJ1Y3Qgb3BlcmFuZCB7CiAJdW5pb24gewogCQl1bnNpZ25lZCBsb25nIHZhbDsKIAkJdTY0IHZhbDY0OwomIzQzOyNpZmRlZiBDT05GSUdfWDg2XzY0CiYjNDM7CQl1MTI4IHZhbDEyODsKJiM0MzsjZW5kaWYKIAkJY2hhciB2YWxwdHJbc2l6ZW9mKGF2eDI1Nl90KV07CiAJCXNzZTEyOF90IHZlY192YWw7CiAJCWF2eDI1Nl90IHZlY192YWwyOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3ZtL3g4Ni5jCmluZGV4IDNmYjY0OTA1ZDE5MDcxLi40MGM4NGY4YzQ5MTI5NCAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS94ODYuYwpAQCAtODMyMiw3ICYjNDM7ODMyMiw3IEBAIHN0YXRpYyBpbnQgZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZChzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCwKIAlpbnQgcjsKIAogCS8qIGd1ZXN0cyBjbXB4Y2hnOGIgaGF2ZSB0byBiZSBlbXVsYXRlZCBhdG9taWNhbGx5ICovCi0JaWYgKGJ5dGVzICZndDsgOCB8fCAoYnl0ZXMgJmFtcDsgKGJ5dGVzIC0gMSkpKQomIzQzOwlpZiAoYnl0ZXMgJmd0OyAyICogc2l6ZW9mKHVuc2lnbmVkIGxvbmcpIHx8IChieXRlcyAmYW1wOyAoYnl0ZXMgLSAxKSkpCiAJCWdvdG8gZW11bF93cml0ZTsKIAogCWdwYSA9IGt2bV9tbXVfZ3ZhX3RvX2dwYV93cml0ZSh2Y3B1LCBhZGRyLCBOVUxMKTsKQEAgLTgzNjIsNiAmIzQzOzgzNjIsMTEgQEAgc3RhdGljIGludCBlbXVsYXRvcl9jbXB4Y2hnX2VtdWxhdGVkKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0LAogCWNhc2UgODoKIAkJciA9IGVtdWxhdG9yX3RyeV9jbXB4Y2hnX3VzZXIodTY0LCBodmEsIG9sZCwgbmV3KTsKIAkJYnJlYWs7CiYjNDM7I2lmZGVmIENPTkZJR19YODZfNjQKJiM0MzsJY2FzZSAxNjoKJiM0MzsJCXIgPSBlbXVsYXRvcl90cnlfY21weGNoZ191c2VyKHUxMjgsIGh2YSwgb2xkLCBuZXcpOwomIzQzOwkJYnJlYWs7CiYjNDM7I2VuZGlmCiAJZGVmYXVsdDoKIAkJQlVHKCk7CiAJfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNzowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDMzCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNDczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGNtcHhjaGcxNmIgS1ZNIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gcmV2aWV3aW5nIHRoaXMgcGF0Y2ggdGhhdCBpbnRyb2R1Y2VzIDEyOC1iaXQgY29tcGFyZS1hbmQtc3dhcCAoY21weGNoZzE2Yikgc3VwcG9ydCBpbnRvIHRoZSB4ODYgdWFjY2VzcyBhbmQgS1ZNIGVtdWxhdGlvbiBsYXllcnMuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHNvdW5kLiBUaGV5JiMzOTt2ZSBhZGRlZCBgX190cnlfY21weGNoZzEyOF91c2VyX2FzbWAgdG8gYGFyY2gveDg2L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaGAsIHdoaWNoIGlzIHRoZSBleHBlY3RlZCBsb2NhdGlvbi4gQ3J1Y2lhbGx5LCB0aGUgS1ZNIGVtdWxhdGlvbiBjb21wb25lbnRzIGhhdmUgYmVlbiBtb2RpZmllZDogYGFyY2gveDg2L2t2bS9lbXVsYXRlLmNgLCBgYXJjaC94ODYva3ZtL2t2bV9lbXVsYXRlLmhgLCBhbmQgYGFyY2gveDg2L2t2bS94ODYuY2AgYWxsIHNlZSBjaGFuZ2VzIHRvIGhhbmRsZSB0aGUgY21weGNoZzE2YiBpbnN0cnVjdGlvbi4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIGlzICpkZWZpbml0ZWx5KiByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgKndpdGhpbiB0aGUgS1ZNIGNvbnRleHQqLiBUaGV5JiMzOTt2ZSB1cGRhdGVkIGBlbV9jbXB4Y2hnOGJgIGluIGBlbXVsYXRlLmNgIHRvIGNvbmRpdGlvbmFsbHkgaGFuZGxlIHRoZSAxMjgtYml0IHZlcnNpb24gd2hlbiBgUkVYX1dgIGlzIHNldCAod2hpY2ggaXMgc3RhbmRhcmQgZm9yIDY0LWJpdCBpbnN0cnVjdGlvbnMpLiBBbHNvLCBgZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZGAgaW4gYHg4Ni5jYCBub3cgc3VwcG9ydHMgdGhlIDE2LWJ5dGUgY29tcGFyZS1hbmQtc3dhcCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgc2VlIHRoZSBmbG93OyBpdOKAmXMgYWxsIGNvbm5lY3RlZC4KCk5vdywgbXkgZm9jdXMgc2hpZnRzIHRvIGZ1enppbmcuIFdlIGFic29sdXRlbHkgbmVlZCB0byBzdWJqZWN0IHRoaXMgdG8gcmlnb3JvdXMgdGVzdGluZy4gTGV0JiMzOTtzIGlkZW50aWZ5IHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludHMgZm9yIGZ1enppbmcuIFdlJiMzOTtsbCBiZSB0YXJnZXRpbmc6CgoqICAgYGVtX2NtcHhjaGc4YmAgaW4gYGFyY2gveDg2L2t2bS9lbXVsYXRlLmNgCiogICBgZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZGAgaW4gYGFyY2gveDg2L2t2bS94ODYuY2AKCk5leHQsIEkgbmVlZCB0byB2ZXJpZnkgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBJIHNlZSB0aGUgc3RhbmRhcmQgZ3VhcmRzOiBgI2lmZGVmIENPTkZJR19YODZfNjRgIGFuZCBgI2lmbmRlZiBDT05GSUdfWDg2XzMyYCwgd2hpY2ggaXMgZXhwZWN0ZWQgZm9yIDY0LWJpdCBhcmNoaXRlY3R1cmUgc3VwcG9ydC4gR2l2ZW4gdGhlIEtWTSBpbnZvbHZlbWVudCwgYENPTkZJR19LVk1gIGlzLCBuYXR1cmFsbHksIGEgcHJlcmVxdWlzaXRlLiBUaGF0IGFsbCBsb29rcyBjb3JyZWN0LgoKRmluYWxseSwganVzdCB0byBiZSB0aG9yb3VnaCwgSSB3aWxsIHVzZSBgZ3JlcHBlcmAgb24gdGhlIGNvZGViYXNlIHRvIGxvb2sgZm9yIGFueSByZWxhdGVkIGZ1bmN0aW9ucyB0aGF0IG1heSBoYXZlIGJlZW4gb3Zlcmxvb2tlZCBkdXJpbmcgdGhpcyBwYXRjaC4gSSB3YW50IHRvIGVuc3VyZSB3ZSYjMzk7dmUgZ290IGEgY29tcHJlaGVuc2l2ZSB2aWV3IG9mIHRoZSBjaGFuZ2UmIzM5O3MgaW1wYWN0LiBTcGVjaWZpY2FsbHksIGl0IHdvdWxkIGJlIHVzZWZ1bCB0byBjaGVjayBhbGwgY2FsbCBzaXRlcyB0byBgZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZGAgYW5kIGBlbV9jbXB4Y2hnOGJgIGluIG9yZGVyIHRvIGRldGVybWluZSBhbnkgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy4gSSB3YW50IHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoZXkgZGlkbiYjMzk7dCBtaXNzIHNvbWV0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNzowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlbV9jbXB4Y2hnOGImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL2VtdWxhdGUuYz0yMTc3PXN0YXRpYyBpbnQgZW1fY2FsbF9uZWFyX2FicyhzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dClcbi0tXG5hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jLTIxOTAtXG5hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jOjIxOTE6I2RlZmluZSBlbV9jbXB4Y2hnOGJfMTZiKF9fYywgcmJpdHMsIG1iaXRzKVxcXG5hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jLTIxOTItZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4tLVxuYXJjaC94ODYva3ZtL2VtdWxhdGUuYy0yMjA5LVxuYXJjaC94ODYva3ZtL2VtdWxhdGUuYzoyMjEwOnN0YXRpYyBpbnQgZW1fY21weGNoZzhiKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KVxuYXJjaC94ODYva3ZtL2VtdWxhdGUuYy0yMjExLXtcbi0tXG5hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jLTIyMTUtXHRpZiAoIShjdHh0LVx1MDAzZXJleF9iaXRzIFx1MDAyNiBSRVhfVykpXG5hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jOjIyMTY6XHRcdGVtX2NtcHhjaGc4Yl8xNmIoY3R4dCwgMzIsIDY0KTtcbmFyY2gveDg2L2t2bS9lbXVsYXRlLmMtMjIxNy0jaWZkZWYgQ09ORklHX1g4Nl82NFxuYXJjaC94ODYva3ZtL2VtdWxhdGUuYy0yMjE4LVx0ZWxzZVxuYXJjaC94ODYva3ZtL2VtdWxhdGUuYzoyMjE5Olx0XHRlbV9jbXB4Y2hnOGJfMTZiKGN0eHQsIDY0LCAxMjgpO1xuYXJjaC94ODYva3ZtL2VtdWxhdGUuYy0yMjIwLSNlbmRpZlxuLS1cbmFyY2gveDg2L2t2bS9lbXVsYXRlLmM9NDExMT1zdGF0aWMgY29uc3Qgc3RydWN0IGdyb3VwX2R1YWwgZ3JvdXA5ID0geyB7XG5hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jOjQxMTI6XHROLCBJKERzdE1lbTY0IHwgTG9jayB8IFBhZ2VUYWJsZSwgZW1fY21weGNoZzhiKSwgTiwgTiwgTiwgTiwgTiwgTixcbmFyY2gveDg2L2t2bS9lbXVsYXRlLmMtNDExMy19LCB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDc6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjY2MAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIGNvZGUgc25pcHBldHMsIHN1bW1hcml6ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXMgeW91IHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgYGVtX2NtcHhjaGc4YmAgTGFuZHNjYXBlKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgZW1fY21weGNoZzhiYCBmdW5jdGlvbiwgYW5kIGl0JiMzOTtzIGZsYWdnZWQgYXMgYmVpbmcgcGFydCBvZiB0aGUgYGdyb3VwOWAgaW5zdHJ1Y3Rpb24gZ3JvdXAuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyBzb21ldGhpbmcgY29yZSwgcHJvYmFibHkgcmVsYXRlZCB0byBhdG9taWMgb3BlcmF0aW9ucywgc3BlY2lmaWNhbGx5IG9uIDgtYnl0ZSB2YWx1ZXMuIEdpdmVuIHRoZSBjb250ZXh0LCBJJiMzOTttIGd1ZXNzaW5nIHRoaXMgZnVuY3Rpb24gaXMgZGVlcGx5IGludGVydHdpbmVkIHdpdGggY29uY3VycmVuY3kgcHJpbWl0aXZlcyB3aXRoaW4gdGhlIHZpcnR1YWwgbWFjaGluZS4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB3aGF0IGBncm91cDlgIGFjdHVhbGx5ICppcyogd2l0aGluIHRoaXMgY29kZWJhc2UsIGJ1dCBteSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgaXQmIzM5O3MgaGFuZGxpbmcgbWVtb3J5IHN5bmNocm9uaXphdGlvbiBjb25jZXJucy4KClRoZW4sIEkgc2VlIGBlbXVsYXRvcl9jbXB4Y2hnX2VtdWxhdGVkYCBtZW50aW9uZWQsIHdoaWNoIGlzIGxvY2F0ZWQgaW4gYGFyY2gveDg2L2t2bS94ODYuY2AuIEFoLCByaWdodCwgdGhhdCBwb2ludHMgdG8gdGhlIGVtdWxhdGlvbiBsYXllciB3aXRoaW4gdGhlIEtWTSBoeXBlcnZpc29yIG9uIHg4NiBhcmNoaXRlY3R1cmVzLiBUaGlzIGlzIHRoZSBwYXJ0IHRoYXQgaW50ZXJlc3RzIG1lIHRoZSBtb3N0LCBjb25zaWRlcmluZyBteSBleHBlcmllbmNlLiBJdCBzdHJvbmdseSBpbXBsaWVzIHRoYXQgYGVtX2NtcHhjaGc4YmAgKHdoaWNoIGlzIHByZXN1bWFibHkgZW11bGF0aW5nIHRoZSBDTXB4Y2hnOGIgaW5zdHJ1Y3Rpb24pIGlzIGhhbmRsZWQgaW4gYSBzb2Z0d2FyZSBmYWxsYmFjayBwYXRoLiBUaGlzIGlzIGxpa2VseSB0byBiZSB1c2VkIGluIG9sZGVyIHByb2Nlc3NvcnMgb3Igd2hlbiBjZXJ0YWluIGFyY2hpdGVjdHVyYWwgZmVhdHVyZXMgYXJlIGRpc2FibGVkLiBJIHdhbnQgdG8gbG9vayBpbnRvIGhvdyB0aGUgZW11bGF0ZWQgdmVyc2lvbiBoYW5kbGVzIHRoZSBjb21wbGV4aXRpZXMgb2YgdGhpcyBpbnN0cnVjdGlvbiAobG9hZC1saW5rZWQvc3RvcmUtY29uZGl0aW9uYWwgYW5kIG1lbW9yeSBvcmRlcmluZyksIGVzcGVjaWFsbHkgYXJvdW5kIHRoZSBudWFuY2VzIG9mIGhhbmRsaW5nIGF0b21pYyBvcGVyYXRpb25zIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoaXMgc3VnZ2VzdHMgdGhlIGtlcm5lbCBpcyBsaWtlbHkgcnVubmluZyB0aGUgZW11bGF0ZWQgdmVyc2lvbiByYXRoZXIgdGhhbiBkaXJlY3RseSB1c2luZyB0aGUgbmF0aXZlIGhhcmR3YXJlIGluc3RydWN0aW9uIHRvIG1haW50YWluIGNvbXBhdGliaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDc6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veDg2LmM9ODI5OD1zdGF0aWMgaW50IGVtdWxhdG9yX3dyaXRlX2VtdWxhdGVkKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0LFxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy04MzEwLVxuYXJjaC94ODYva3ZtL3g4Ni5jOjgzMTE6c3RhdGljIGludCBlbXVsYXRvcl9jbXB4Y2hnX2VtdWxhdGVkKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0LFxuYXJjaC94ODYva3ZtL3g4Ni5jLTgzMTItXHRcdFx0XHQgICAgIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9ODg5OT1zdGF0aWMgY29uc3Qgc3RydWN0IHg4Nl9lbXVsYXRlX29wcyBlbXVsYXRlX29wcyA9IHtcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtODkwNy1cdC53cml0ZV9lbXVsYXRlZCAgICAgID0gZW11bGF0b3Jfd3JpdGVfZW11bGF0ZWQsXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODkwODpcdC5jbXB4Y2hnX2VtdWxhdGVkICAgID0gZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZCxcbmFyY2gveDg2L2t2bS94ODYuYy04OTA5LVx0LmludmxwZyAgICAgICAgICAgICAgPSBlbXVsYXRvcl9pbnZscGcsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDc6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM4OAoJCQkJCQkJb3V0cHV0OiAxMzkKCQkJCQkJCXRob3VnaHRzOiAzMDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgS1ZNJiMzOTtzIGNtcHhjaGcxNmIgRW11bGF0aW9uIGZvciBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYGNtcHhjaGcxNmJgIEtWTSBlbXVsYXRpb24gcGF0Y2gsIGFuZCBteSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBjb3JlIGZ1bmN0aW9ucy4gRnJvbSB3aGF0IEkgc2VlLCBgZW1fY21weGNoZzhiYCBhbmQgYGVtdWxhdG9yX2NtcHhjaGdfZW11bGF0ZWRgIGFyZSB0aGUgcHJpbWFyeSBvbmVzIGRlYWxpbmcgd2l0aCB0aGlzIGluc3RydWN0aW9uLiBUaGUgS1ZNIGNvbmZpZ3VyYXRpb24sIG5hdHVyYWxseSwgaXMgYEtWTWAuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLgoKTGV0IG1lIGp1c3QgcXVpY2tseSB2ZXJpZnkgaWYgYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zIGFyZSByZWxldmFudCBoZXJlLiBJJiMzOTttIG5vdGluZyB0aGF0IGBDT05GSUdfWDg2XzY0YCBpcyByZXF1aXJlZCBmb3IgdGhlIDEyOC1iaXQgY29tcGFyZS1hbmQtZXhjaGFuZ2UgbG9naWMsIGJ1dCBzaW5jZSBTeXprYWxsZXIsIHdoaWNoIHRoaXMgaXMgbGlrZWx5IGZvciwgcHJpbWFyaWx5IG9wZXJhdGVzIG9uIHg4Nl82NCwgdGhhdCYjMzk7cyBub3QgYSBtYWpvciBjb25jZXJuLiBUaGUgcHJpbWFyeSBmb2N1cyByZW1haW5zIG9uIGBDT05GSUdfS1ZNYC4KCk5vdywgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhlIHJhdGlvbmFsZSBiZWhpbmQgZnV6emluZyB0aGlzLiBUaGUgcGF0Y2gmIzM5O3MgY29yZSBmdW5jdGlvbiBpcyBlbXVsYXRpbmcgdGhlIGBjbXB4Y2hnMTZiYCBpbnN0cnVjdGlvbiB3aXRoaW4gS1ZNLiBJdCYjMzk7cyB0b3VjaGluZyB0aGUgaW5zdHJ1Y3Rpb24gZW11bGF0b3IgaXRzZWxmLCBhcyB3ZWxsIGFzIHRoZSBtZW1vcnkgYWNjZXNzIGNhbGxiYWNrcywgc3BlY2lmaWNhbGx5IHRvIGhhbmRsZSBhdG9taWMgMTYtYnl0ZSBjb21wYXJlLWFuZC1leGNoYW5nZSBvcGVyYXRpb25zLiBUaGlzIHJlcHJlc2VudHMgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiB0byB0aGUgdmVyeSBoZWFydCBvZiB0aGUgS1ZNIGVtdWxhdGlvbi4gQ3JpdGljYWxseSwgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIGRpcmVjdGx5IGFjY2Vzc2libGUgdG8gYSBndWVzdCB0aGF0IGV4ZWN1dGVzIHRoZSBgY21weGNoZzE2YmAgaW5zdHJ1Y3Rpb24uIFRoZXJlZm9yZSwgZnV6emluZyBpcyBhYnNvbHV0ZWx5IHdhcnJhbnRlZC4gSXQgaXMgYSBjcml0aWNhbCBwYXRoLgoKU28sIHRoZSBrZXkgc3ltYm9scyBJIG5lZWQgdG8gY29uY2VudHJhdGUgb24gZm9yIGZ1enppbmcgcmVtYWluIGBlbV9jbXB4Y2hnOGJgIGFuZCBgZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZGAuIEkmIzM5O3ZlIGFscmVhZHkgY29uZmlybWVkIGBLVk1gIGFzIHRoZSBlc3NlbnRpYWwgY29uZmlnLiBJJiMzOTtsbCBkb3VibGUtY2hlY2sgZm9yIGFueSBvdGhlciBwb3RlbnRpYWxseSByZWxldmFudCBmdW5jdGlvbnMsIGJ1dCBJIHRoaW5rIHRoYXQmIzM5O3MgaXQuIExvb2tpbmcgZGVlcGVyIG5vdzogSSYjMzk7bSBzZWVpbmcgdGhhdCBgX190cnlfY21weGNoZzEyOF91c2VyX2FzbWAgaXMgYSBtYWNybywgYW5kIHNvIGlzIGBlbV9jbXB4Y2hnOGJfMTZiYC4gU28sIG5vLCB0aGUgZm9jdXMgc3ltYm9scyBhcmUgY29ycmVjdC4KClRoYXQgc29saWRpZmllcyB0aGluZ3MuIEkgYW0gc2F0aXNmaWVkIHdpdGggbXkgYW5hbHlzaXMuIEkmIzM5O20gY2FsbGluZyBzZXQtcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNzowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZW1fY21weGNoZzhiJiMzNDssCiAgICAmIzM0O2VtdWxhdG9yX2NtcHhjaGdfZW11bGF0ZWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBlbXVsYXRpbmcgdGhlIGNtcHhjaGcxNmIgaW5zdHJ1Y3Rpb24gaW4gS1ZNLiBJdCBtb2RpZmllcyB0aGUgaW5zdHJ1Y3Rpb24gZW11bGF0b3IgYW5kIHRoZSBtZW1vcnkgYWNjZXNzIGNhbGxiYWNrcyB0byBoYW5kbGUgMTYtYnl0ZSBhdG9taWMgY29tcGFyZS1hbmQtZXhjaGFuZ2Ugb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIEtWTSBlbXVsYXRpb24gbG9naWMgdGhhdCBpcyByZWFjaGFibGUgYnkgYSBndWVzdCBleGVjdXRpbmcgdGhlIGNtcHhjaGcxNmIgaW5zdHJ1Y3Rpb24sIGFuZCB0aHVzIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2VtX2NtcHhjaGc4YiYjMzQ7LAogICAgJiMzNDtlbXVsYXRvcl9jbXB4Y2hnX2VtdWxhdGVkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgZW11bGF0aW5nIHRoZSBjbXB4Y2hnMTZiIGluc3RydWN0aW9uIGluIEtWTS4gSXQgbW9kaWZpZXMgdGhlIGluc3RydWN0aW9uIGVtdWxhdG9yIGFuZCB0aGUgbWVtb3J5IGFjY2VzcyBjYWxsYmFja3MgdG8gaGFuZGxlIDE2LWJ5dGUgYXRvbWljIGNvbXBhcmUtYW5kLWV4Y2hhbmdlIG9wZXJhdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY29yZSBLVk0gZW11bGF0aW9uIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGJ5IGEgZ3Vlc3QgZXhlY3V0aW5nIHRoZSBjbXB4Y2hnMTZiIGluc3RydWN0aW9uLCBhbmQgdGh1cyBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDZUMDc6MDE6NDYuNjQ5MjIyODk2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjczNjI0Mjg0NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZW1fY21weGNoZzhiXCIsXG4gICAgXCJlbXVsYXRvcl9jbXB4Y2hnX2VtdWxhdGVkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBlbXVsYXRpbmcgdGhlIGNtcHhjaGcxNmIgaW5zdHJ1Y3Rpb24gaW4gS1ZNLiBJdCBtb2RpZmllcyB0aGUgaW5zdHJ1Y3Rpb24gZW11bGF0b3IgYW5kIHRoZSBtZW1vcnkgYWNjZXNzIGNhbGxiYWNrcyB0byBoYW5kbGUgMTYtYnl0ZSBhdG9taWMgY29tcGFyZS1hbmQtZXhjaGFuZ2Ugb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIEtWTSBlbXVsYXRpb24gbG9naWMgdGhhdCBpcyByZWFjaGFibGUgYnkgYSBndWVzdCBleGVjdXRpbmcgdGhlIGNtcHhjaGcxNmIgaW5zdHJ1Y3Rpb24sIGFuZCB0aHVzIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA3OjAxOjQ2LjY0OTIyODQyNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkxODc1ODcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNjdlMDY0MjY4NTdkMDNkNjA3YjNjNGYwOGE1OTY5ZGQxNWU4ZmU3MFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCA2IDA3OjAxOjQ1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaFxcbmluZGV4IDM2NzI5N2IxODhjMzljLi4xMjM3NTVkNDcxMDk5NyAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS91YWNjZXNzLmhcXG4rKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS91YWNjZXNzLmhcXG5AQCAtNDA3LDYgKzQwNywyNSBAQCBkbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRpZiAodW5saWtlbHkoIXN1Y2Nlc3MpKVxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0Kl9vbGQgPSBfX29sZDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGxpa2VseShzdWNjZXNzKTtcXHRcXHRcXHRcXHRcXHR9KVxcbisjZWxzZSAvLyAhQ09ORklHX1g4Nl8zMlxcbisjZGVmaW5lIF9fdHJ5X2NtcHhjaGcxMjhfdXNlcl9hc20oX3B0ciwgX3BvbGQsIF9uZXcsIGxhYmVsKVxcdCh7XFx0XFxcXFxcbitcXHRib29sIHN1Y2Nlc3M7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRfX3R5cGVvZl9fKF9wdHIpIF9vbGQgPSAoX190eXBlb2ZfXyhfcHRyKSkoX3BvbGQpO1xcdFxcdFxcXFxcXG4rXFx0X190eXBlb2ZfXygqKF9wdHIpKSBfX29sZCA9ICpfb2xkO1xcdFxcdFxcdFxcdFxcXFxcXG4rXFx0X190eXBlb2ZfXygqKF9wdHIpKSBfX25ldyA9IChfbmV3KTtcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGFzbV9nb3RvX291dHB1dChcXFwiXFxcXG5cXFwiXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQgICAgIFxcXCIxOiBcXFwiIExPQ0tfUFJFRklYIFxcXCJjbXB4Y2hnMTZiICVbcHRyXVxcXFxuXFxcIlxcdFxcdFxcXFxcXG4rXFx0XFx0ICAgICBfQVNNX0VYVEFCTEVfVUEoMWIsICVsW2xhYmVsXSlcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCAgICAgOiBcXFwiPUBjY3pcXFwiIChzdWNjZXNzKSxcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCAgICAgICBcXFwiK0FcXFwiIChfX29sZCksXFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQgICAgICAgW3B0cl0gXFxcIittXFxcIiAoKl9wdHIpXFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQgICAgIDogXFxcImJcXFwiICgodTY0KV9fbmV3KSxcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCAgICAgICBcXFwiY1xcXCIgKCh1NjQpKCh1MTI4KV9fbmV3IFxcdTAwM2VcXHUwMDNlIDY0KSlcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCAgICAgOiBcXFwibWVtb3J5XFxcIlxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0ICAgICA6IGxhYmVsKTtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGlmICh1bmxpa2VseSghc3VjY2VzcykpXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQqX29sZCA9IF9fb2xkO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0bGlrZWx5KHN1Y2Nlc3MpO1xcdFxcdFxcdFxcdFxcdH0pXFxuICNlbmRpZiAvLyBDT05GSUdfWDg2XzMyXFxuICNlbHNlICAvLyAhQ09ORklHX0NDX0hBU19BU01fR09UT19USUVEX09VVFBVVFxcbiAjZGVmaW5lIF9fdHJ5X2NtcHhjaGdfdXNlcl9hc20oaXR5cGUsIGx0eXBlLCBfcHRyLCBfcG9sZCwgX25ldywgbGFiZWwpXFx0KHsgXFxcXFxcbkBAIC00NjMsNiArNDgyLDMwIEBAIGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGlmICh1bmxpa2VseSghX19yZXN1bHQpKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0Kl9vbGQgPSBfX29sZDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGxpa2VseShfX3Jlc3VsdCk7XFx0XFx0XFx0XFx0XFx0fSlcXG4rI2Vsc2UgLy8hQ09ORklHX1g4Nl8zMlxcbisjZGVmaW5lIF9fdHJ5X2NtcHhjaGcxMjhfdXNlcl9hc20oX3B0ciwgX3BvbGQsIF9uZXcsIGxhYmVsKVxcdCh7XFx0XFxcXFxcbitcXHRpbnQgX19yZXN1bHQ7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRfX3R5cGVvZl9fKF9wdHIpIF9vbGQgPSAoX190eXBlb2ZfXyhfcHRyKSkoX3BvbGQpO1xcdFxcdFxcXFxcXG4rXFx0X190eXBlb2ZfXygqKF9wdHIpKSBfX29sZCA9ICpfb2xkO1xcdFxcdFxcdFxcdFxcXFxcXG4rXFx0X190eXBlb2ZfXygqKF9wdHIpKSBfX25ldyA9IChfbmV3KTtcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGFzbSB2b2xhdGlsZShcXFwiXFxcXG5cXFwiXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQgICAgIFxcXCIxOiBcXFwiIExPQ0tfUFJFRklYIFxcXCJjbXB4Y2hnMTZiICVbcHRyXVxcXFxuXFxcIlxcdFxcdFxcXFxcXG4rXFx0XFx0ICAgICBcXFwibW92ICQwLCAlW3Jlc3VsdF1cXFxcblxcXFx0XFxcIlxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0ICAgICBcXFwic2V0eiAlYltyZXN1bHRdXFxcXG5cXFwiXFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQgICAgIFxcXCIyOlxcXFxuXFxcIlxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0ICAgICBfQVNNX0VYVEFCTEVfVFlQRV9SRUcoMWIsIDJiLCBFWF9UWVBFX0VGQVVMVF9SRUcsXFx0XFxcXFxcbitcXHRcXHRcXHRcXHRcXHQgICAlW3Jlc3VsdF0pXFx0XFx0XFx0XFxcXFxcbitcXHRcXHQgICAgIDogW3Jlc3VsdF0gXFxcIj1xXFxcIiAoX19yZXN1bHQpLFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0ICAgICAgIFxcXCIrQVxcXCIgKF9fb2xkKSxcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCAgICAgICBbcHRyXSBcXFwiK21cXFwiICgqX3B0cilcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCAgICAgOiBcXFwiYlxcXCIgKCh1NjQpX19uZXcpLFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0ICAgICAgIFxcXCJjXFxcIiAoKHU2NCkoKHUxMjgpX19uZXcgXFx1MDAzZVxcdTAwM2UgNjQpKVxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0ICAgICA6IFxcXCJtZW1vcnlcXFwiLCBcXFwiY2NcXFwiKTtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGlmICh1bmxpa2VseShfX3Jlc3VsdCBcXHUwMDNjIDApKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0Z290byBsYWJlbDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGlmICh1bmxpa2VseSghX19yZXN1bHQpKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0Kl9vbGQgPSBfX29sZDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGxpa2VseShfX3Jlc3VsdCk7XFx0XFx0XFx0XFx0XFx0fSlcXG4gI2VuZGlmIC8vIENPTkZJR19YODZfMzJcXG4gI2VuZGlmIC8vIENPTkZJR19DQ19IQVNfQVNNX0dPVE9fVElFRF9PVVRQVVRcXG4gXFxuQEAgLTU1MSwxMSArNTk0LDE4IEBAIGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcbiBleHRlcm4gdm9pZCBfX3RyeV9jbXB4Y2hnX3VzZXJfd3Jvbmdfc2l6ZSh2b2lkKTtcXG4gXFxuLSNpZm5kZWYgQ09ORklHX1g4Nl8zMlxcbisjaWZkZWYgQ09ORklHX1g4Nl8zMlxcbisvKiBBbHdheXMgZmFpbCBvbiAzMiBiaXQgYXJjaCBhcyBpdCBkbyBub3Qgc3VwcG9ydCAxMjggY21weGNoZyAoaS5lLiBjbXB4Y2hnMTZiXFxuKyAqIGluc3RydWN0aW9uKS5cXG4rICovXFxuKyNkZWZpbmUgX190cnlfY21weGNoZzEyOF91c2VyX2FzbShfcHRyLCBfcG9sZCwgX25ldywgbGFiZWwpICgxKVxcbisjZWxzZVxcbiAjZGVmaW5lIF9fdHJ5X2NtcHhjaGc2NF91c2VyX2FzbShfcHRyLCBfb2xkcCwgX252YWwsIF9sYWJlbClcXHRcXHRcXFxcXFxuIFxcdF9fdHJ5X2NtcHhjaGdfdXNlcl9hc20oXFxcInFcXFwiLCBcXFwiclxcXCIsIChfcHRyKSwgKF9vbGRwKSwgKF9udmFsKSwgX2xhYmVsKVxcbitcXG4gI2VuZGlmXFxuIFxcbitcXG4gLypcXG4gICogRm9yY2UgdGhlIHBvaW50ZXIgdG8gdVxcdTAwM2NzaXplXFx1MDAzZSB0byBtYXRjaCB0aGUgc2l6ZSBleHBlY3RlZCBieSB0aGUgYXNtIGhlbHBlci5cXG4gICogY2xhbmcvTExWTSBjb21waWxlcyBhbGwgY2FzZXMgYW5kIG9ubHkgZGlzY2FyZHMgdGhlIHVudXNlZCBwYXRocyBhZnRlclxcbkBAIC01ODAsNiArNjMwLDEwIEBAIGV4dGVybiB2b2lkIF9fdHJ5X2NtcHhjaGdfdXNlcl93cm9uZ19zaXplKHZvaWQpO1xcbiBcXHRjYXNlIDg6XFx0X19yZXQgPSBfX3RyeV9jbXB4Y2hnNjRfdXNlcl9hc20oKF9fZm9yY2UgdTY0ICopKF9wdHIpLCAoX29sZHApLFxcXFxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0IChfbnZhbCksIF9sYWJlbCk7XFx0XFx0XFxcXFxcbiBcXHRcXHRicmVhaztcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGNhc2UgMTY6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRfX3JldCA9IF9fdHJ5X2NtcHhjaGcxMjhfdXNlcl9hc20oKF9fZm9yY2UgdTEyOCAqKShfcHRyKSxcXHRcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgKF9vbGRwKSwgKF9udmFsKSwgX2xhYmVsKTtcXHRcXFxcXFxuK1xcdFxcdGJyZWFrO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0ZGVmYXVsdDogX190cnlfY21weGNoZ191c2VyX3dyb25nX3NpemUoKTtcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdH1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdF9fcmV0O1xcdFxcdFxcdFxcdFxcdFxcdH0pXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9lbXVsYXRlLmMgYi9hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jXFxuaW5kZXggYzhlMjkyZTlhMjRkZmUuLjlkZjU1YjNjNTYyNzY1IDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2t2bS9lbXVsYXRlLmNcXG4rKysgYi9hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jXFxuQEAgLTIxODgsMjQgKzIxODgsMzYgQEAgc3RhdGljIGludCBlbV9jYWxsX25lYXJfYWJzKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KVxcbiBcXHRyZXR1cm4gcmM7XFxuIH1cXG4gXFxuKyNkZWZpbmUgZW1fY21weGNoZzhiXzE2YihfX2MsIHJiaXRzLCBtYml0cylcXFxcXFxuK2RvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdHUjI21iaXRzIG9sZCA9IF9fYy1cXHUwMDNlZHN0Lm9yaWdfdmFsIyNtYml0cztcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0QlVJTERfQlVHX09OKHJiaXRzICogMiAhPSBtYml0cyk7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGlmICgoKHUjI3JiaXRzKSAob2xkIFxcdTAwM2VcXHUwMDNlIDApICE9ICh1IyNyYml0cykgcmVnX3JlYWQoY3R4dCwgVkNQVV9SRUdTX1JBWCkpIHx8XFx0XFx0XFxcXFxcbitcXHQgICAgKCh1IyNyYml0cykgKG9sZCBcXHUwMDNlXFx1MDAzZSByYml0cykgIT0gKHUjI3JiaXRzKSByZWdfcmVhZChjdHh0LCBWQ1BVX1JFR1NfUkRYKSkpIHtcXHRcXHRcXFxcXFxuK1xcdFxcdCpyZWdfd3JpdGUoY3R4dCwgVkNQVV9SRUdTX1JBWCkgPSAodSMjcmJpdHMpIChvbGQgXFx1MDAzZVxcdTAwM2UgMCk7XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQqcmVnX3dyaXRlKGN0eHQsIFZDUFVfUkVHU19SRFgpID0gKHUjI3JiaXRzKSAob2xkIFxcdTAwM2VcXHUwMDNlIHJiaXRzKTtcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdGN0eHQtXFx1MDAzZWVmbGFncyBcXHUwMDI2PSB+WDg2X0VGTEFHU19aRjtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdH0gZWxzZSB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRjdHh0LVxcdTAwM2Vkc3QudmFsIyNtYml0cyA9ICgodSMjbWJpdHMpcmVnX3JlYWQoY3R4dCwgVkNQVV9SRUdTX1JDWCkgXFx1MDAzY1xcdTAwM2MgcmJpdHMpIHxcXHRcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdCh1IyNyYml0cykgcmVnX3JlYWQoY3R4dCwgVkNQVV9SRUdTX1JCWCk7XFx0XFx0XFxcXFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdGN0eHQtXFx1MDAzZWVmbGFncyB8PSBYODZfRUZMQUdTX1pGO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0fVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rfSB3aGlsZSgwKVxcbitcXG4gc3RhdGljIGludCBlbV9jbXB4Y2hnOGIoc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpXFxuIHtcXG4tXFx0dTY0IG9sZCA9IGN0eHQtXFx1MDAzZWRzdC5vcmlnX3ZhbDY0O1xcbi1cXG4tXFx0aWYgKGN0eHQtXFx1MDAzZWRzdC5ieXRlcyA9PSAxNilcXG4rXFx0aWYgKFdBUk5fT05fT05DRSg4ICsgISEoY3R4dC1cXHUwMDNlcmV4X2JpdHMgXFx1MDAyNiBSRVhfVykgKiA4ICE9IGN0eHQtXFx1MDAzZWRzdC5ieXRlcykpXFxuIFxcdFxcdHJldHVybiBYODZFTVVMX1VOSEFORExFQUJMRTtcXG4gXFxuLVxcdGlmICgoKHUzMikgKG9sZCBcXHUwMDNlXFx1MDAzZSAwKSAhPSAodTMyKSByZWdfcmVhZChjdHh0LCBWQ1BVX1JFR1NfUkFYKSkgfHxcXG4tXFx0ICAgICgodTMyKSAob2xkIFxcdTAwM2VcXHUwMDNlIDMyKSAhPSAodTMyKSByZWdfcmVhZChjdHh0LCBWQ1BVX1JFR1NfUkRYKSkpIHtcXG4tXFx0XFx0KnJlZ193cml0ZShjdHh0LCBWQ1BVX1JFR1NfUkFYKSA9ICh1MzIpIChvbGQgXFx1MDAzZVxcdTAwM2UgMCk7XFxuLVxcdFxcdCpyZWdfd3JpdGUoY3R4dCwgVkNQVV9SRUdTX1JEWCkgPSAodTMyKSAob2xkIFxcdTAwM2VcXHUwMDNlIDMyKTtcXG4tXFx0XFx0Y3R4dC1cXHUwMDNlZWZsYWdzIFxcdTAwMjY9IH5YODZfRUZMQUdTX1pGO1xcbi1cXHR9IGVsc2Uge1xcbi1cXHRcXHRjdHh0LVxcdTAwM2Vkc3QudmFsNjQgPSAoKHU2NClyZWdfcmVhZChjdHh0LCBWQ1BVX1JFR1NfUkNYKSBcXHUwMDNjXFx1MDAzYyAzMikgfFxcbi1cXHRcXHRcXHQodTMyKSByZWdfcmVhZChjdHh0LCBWQ1BVX1JFR1NfUkJYKTtcXG4tXFxuLVxcdFxcdGN0eHQtXFx1MDAzZWVmbGFncyB8PSBYODZfRUZMQUdTX1pGO1xcbi1cXHR9XFxuK1xcdGlmICghKGN0eHQtXFx1MDAzZXJleF9iaXRzIFxcdTAwMjYgUkVYX1cpKVxcbitcXHRcXHRlbV9jbXB4Y2hnOGJfMTZiKGN0eHQsIDMyLCA2NCk7XFxuKyNpZmRlZiBDT05GSUdfWDg2XzY0XFxuK1xcdGVsc2VcXG4rXFx0XFx0ZW1fY21weGNoZzhiXzE2YihjdHh0LCA2NCwgMTI4KTtcXG4rI2VuZGlmXFxuIFxcdHJldHVybiBYODZFTVVMX0NPTlRJTlVFO1xcbiB9XFxuIFxcbkBAIC01NDA1LDggKzU0MTcsMTQgQEAgaW50IHg4Nl9lbXVsYXRlX2luc24oc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQsIGJvb2wgY2hlY2tfaW50ZXJjZXB0cylcXG4gXFx0XFx0XFx0Z290byBkb25lO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4tXFx0LyogQ29weSBmdWxsIDY0LWJpdCB2YWx1ZSBmb3IgQ01QWENIRzhCLiAgKi9cXG4tXFx0Y3R4dC1cXHUwMDNlZHN0Lm9yaWdfdmFsNjQgPSBjdHh0LVxcdTAwM2Vkc3QudmFsNjQ7XFxuK1xcdC8qIENvcHkgZnVsbCA2NC8xMjgtYml0IHZhbHVlIGZvciBDTVBYQ0hHOEIuICAqL1xcbitcXG4rI2lmZGVmIENPTkZJR19YODZfNjRcXG4rXFx0aWYgKGN0eHQtXFx1MDAzZWRzdC5ieXRlcyA9PSAxNilcXG4rXFx0XFx0Y3R4dC1cXHUwMDNlZHN0Lm9yaWdfdmFsMTI4ID0gY3R4dC1cXHUwMDNlZHN0LnZhbDEyODtcXG4rXFx0ZWxzZVxcbisjZW5kaWZcXG4rXFx0XFx0Y3R4dC1cXHUwMDNlZHN0Lm9yaWdfdmFsNjQgPSBjdHh0LVxcdTAwM2Vkc3QudmFsNjQ7XFxuIFxcbiBzcGVjaWFsX2luc246XFxuIFxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0va3ZtX2VtdWxhdGUuaCBiL2FyY2gveDg2L2t2bS9rdm1fZW11bGF0ZS5oXFxuaW5kZXggZmIzZGFiNGI1YTUzZTcuLmE1MTY3NzIxN2FkYTQzIDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2t2bS9rdm1fZW11bGF0ZS5oXFxuKysrIGIvYXJjaC94ODYva3ZtL2t2bV9lbXVsYXRlLmhcXG5AQCAtMjU1LDYgKzI1NSw5IEBAIHN0cnVjdCBvcGVyYW5kIHtcXG4gXFx0dW5pb24ge1xcbiBcXHRcXHR1bnNpZ25lZCBsb25nIG9yaWdfdmFsO1xcbiBcXHRcXHR1NjQgb3JpZ192YWw2NDtcXG4rI2lmZGVmIENPTkZJR19YODZfNjRcXG4rXFx0XFx0dTEyOCBvcmlnX3ZhbDEyODtcXG4rI2VuZGlmXFxuIFxcdH07XFxuIFxcdHVuaW9uIHtcXG4gXFx0XFx0dW5zaWduZWQgbG9uZyAqcmVnO1xcbkBAIC0yNjgsNiArMjcxLDkgQEAgc3RydWN0IG9wZXJhbmQge1xcbiBcXHR1bmlvbiB7XFxuIFxcdFxcdHVuc2lnbmVkIGxvbmcgdmFsO1xcbiBcXHRcXHR1NjQgdmFsNjQ7XFxuKyNpZmRlZiBDT05GSUdfWDg2XzY0XFxuK1xcdFxcdHUxMjggdmFsMTI4O1xcbisjZW5kaWZcXG4gXFx0XFx0Y2hhciB2YWxwdHJbc2l6ZW9mKGF2eDI1Nl90KV07XFxuIFxcdFxcdHNzZTEyOF90IHZlY192YWw7XFxuIFxcdFxcdGF2eDI1Nl90IHZlY192YWwyO1xcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmNcXG5pbmRleCAzZmI2NDkwNWQxOTA3MS4uNDBjODRmOGM0OTEyOTQgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jXFxuKysrIGIvYXJjaC94ODYva3ZtL3g4Ni5jXFxuQEAgLTgzMjIsNyArODMyMiw3IEBAIHN0YXRpYyBpbnQgZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZChzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCxcXG4gXFx0aW50IHI7XFxuIFxcbiBcXHQvKiBndWVzdHMgY21weGNoZzhiIGhhdmUgdG8gYmUgZW11bGF0ZWQgYXRvbWljYWxseSAqL1xcbi1cXHRpZiAoYnl0ZXMgXFx1MDAzZSA4IHx8IChieXRlcyBcXHUwMDI2IChieXRlcyAtIDEpKSlcXG4rXFx0aWYgKGJ5dGVzIFxcdTAwM2UgMiAqIHNpemVvZih1bnNpZ25lZCBsb25nKSB8fCAoYnl0ZXMgXFx1MDAyNiAoYnl0ZXMgLSAxKSkpXFxuIFxcdFxcdGdvdG8gZW11bF93cml0ZTtcXG4gXFxuIFxcdGdwYSA9IGt2bV9tbXVfZ3ZhX3RvX2dwYV93cml0ZSh2Y3B1LCBhZGRyLCBOVUxMKTtcXG5AQCAtODM2Miw2ICs4MzYyLDExIEBAIHN0YXRpYyBpbnQgZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZChzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCxcXG4gXFx0Y2FzZSA4OlxcbiBcXHRcXHRyID0gZW11bGF0b3JfdHJ5X2NtcHhjaGdfdXNlcih1NjQsIGh2YSwgb2xkLCBuZXcpO1xcbiBcXHRcXHRicmVhaztcXG4rI2lmZGVmIENPTkZJR19YODZfNjRcXG4rXFx0Y2FzZSAxNjpcXG4rXFx0XFx0ciA9IGVtdWxhdG9yX3RyeV9jbXB4Y2hnX3VzZXIodTEyOCwgaHZhLCBvbGQsIG5ldyk7XFxuK1xcdFxcdGJyZWFrO1xcbisjZW5kaWZcXG4gXFx0ZGVmYXVsdDpcXG4gXFx0XFx0QlVHKCk7XFxuIFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDc6MDE6NDcuMTQyMTQyNTU4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjg2OTQ5MzkzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlbV9jbXB4Y2hnOGJcIixcbiAgICBcImVtdWxhdG9yX2NtcHhjaGdfZW11bGF0ZWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGVtdWxhdGluZyB0aGUgY21weGNoZzE2YiBpbnN0cnVjdGlvbiBpbiBLVk0uIEl0IG1vZGlmaWVzIHRoZSBpbnN0cnVjdGlvbiBlbXVsYXRvciBhbmQgdGhlIG1lbW9yeSBhY2Nlc3MgY2FsbGJhY2tzIHRvIGhhbmRsZSAxNi1ieXRlIGF0b21pYyBjb21wYXJlLWFuZC1leGNoYW5nZSBvcGVyYXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgS1ZNIGVtdWxhdGlvbiBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBieSBhIGd1ZXN0IGV4ZWN1dGluZyB0aGUgY21weGNoZzE2YiBpbnN0cnVjdGlvbiwgYW5kIHRodXMgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2N2UwNjQyNjg1N2QwM2Q2MDdiM2M0ZjA4YTU5NjlkZDE1ZThmZTcwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgNiAwNzowMTo0NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaFxuaW5kZXggMzY3Mjk3YjE4OGMzOWMuLjEyMzc1NWQ0NzEwOTk3IDEwMDY0NFxuLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vdWFjY2Vzcy5oXG4rKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS91YWNjZXNzLmhcbkBAIC00MDcsNiArNDA3LDI1IEBAIGRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIFx0aWYgKHVubGlrZWx5KCFzdWNjZXNzKSlcdFx0XHRcdFx0XHRcXFxuIFx0XHQqX29sZCA9IF9fb2xkO1x0XHRcdFx0XHRcdFxcXG4gXHRsaWtlbHkoc3VjY2Vzcyk7XHRcdFx0XHRcdH0pXG4rI2Vsc2UgLy8gIUNPTkZJR19YODZfMzJcbisjZGVmaW5lIF9fdHJ5X2NtcHhjaGcxMjhfdXNlcl9hc20oX3B0ciwgX3BvbGQsIF9uZXcsIGxhYmVsKVx0KHtcdFxcXG4rXHRib29sIHN1Y2Nlc3M7XHRcdFx0XHRcdFx0XHRcXFxuK1x0X190eXBlb2ZfXyhfcHRyKSBfb2xkID0gKF9fdHlwZW9mX18oX3B0cikpKF9wb2xkKTtcdFx0XFxcbitcdF9fdHlwZW9mX18oKihfcHRyKSkgX19vbGQgPSAqX29sZDtcdFx0XHRcdFxcXG4rXHRfX3R5cGVvZl9fKCooX3B0cikpIF9fbmV3ID0gKF9uZXcpO1x0XHRcdFx0XFxcbitcdGFzbV9nb3RvX291dHB1dChcIlxcblwiXHRcdFx0XHRcdFx0XFxcbitcdFx0ICAgICBcIjE6IFwiIExPQ0tfUFJFRklYIFwiY21weGNoZzE2YiAlW3B0cl1cXG5cIlx0XHRcXFxuK1x0XHQgICAgIF9BU01fRVhUQUJMRV9VQSgxYiwgJWxbbGFiZWxdKVx0XHRcdFxcXG4rXHRcdCAgICAgOiBcIj1AY2N6XCIgKHN1Y2Nlc3MpLFx0XHRcdFx0XFxcbitcdFx0ICAgICAgIFwiK0FcIiAoX19vbGQpLFx0XHRcdFx0XHRcXFxuK1x0XHQgICAgICAgW3B0cl0gXCIrbVwiICgqX3B0cilcdFx0XHRcdFxcXG4rXHRcdCAgICAgOiBcImJcIiAoKHU2NClfX25ldyksXHRcdFx0XHRcXFxuK1x0XHQgICAgICAgXCJjXCIgKCh1NjQpKCh1MTI4KV9fbmV3IFx1MDAzZVx1MDAzZSA2NCkpXHRcdFx0XFxcbitcdFx0ICAgICA6IFwibWVtb3J5XCJcdFx0XHRcdFx0XHRcXFxuK1x0XHQgICAgIDogbGFiZWwpO1x0XHRcdFx0XHRcdFxcXG4rXHRpZiAodW5saWtlbHkoIXN1Y2Nlc3MpKVx0XHRcdFx0XHRcdFxcXG4rXHRcdCpfb2xkID0gX19vbGQ7XHRcdFx0XHRcdFx0XFxcbitcdGxpa2VseShzdWNjZXNzKTtcdFx0XHRcdFx0fSlcbiAjZW5kaWYgLy8gQ09ORklHX1g4Nl8zMlxuICNlbHNlICAvLyAhQ09ORklHX0NDX0hBU19BU01fR09UT19USUVEX09VVFBVVFxuICNkZWZpbmUgX190cnlfY21weGNoZ191c2VyX2FzbShpdHlwZSwgbHR5cGUsIF9wdHIsIF9wb2xkLCBfbmV3LCBsYWJlbClcdCh7IFxcXG5AQCAtNDYzLDYgKzQ4MiwzMCBAQCBkbyB7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdGlmICh1bmxpa2VseSghX19yZXN1bHQpKVx0XHRcdFx0XHRcXFxuIFx0XHQqX29sZCA9IF9fb2xkO1x0XHRcdFx0XHRcdFxcXG4gXHRsaWtlbHkoX19yZXN1bHQpO1x0XHRcdFx0XHR9KVxuKyNlbHNlIC8vIUNPTkZJR19YODZfMzJcbisjZGVmaW5lIF9fdHJ5X2NtcHhjaGcxMjhfdXNlcl9hc20oX3B0ciwgX3BvbGQsIF9uZXcsIGxhYmVsKVx0KHtcdFxcXG4rXHRpbnQgX19yZXN1bHQ7XHRcdFx0XHRcdFx0XHRcXFxuK1x0X190eXBlb2ZfXyhfcHRyKSBfb2xkID0gKF9fdHlwZW9mX18oX3B0cikpKF9wb2xkKTtcdFx0XFxcbitcdF9fdHlwZW9mX18oKihfcHRyKSkgX19vbGQgPSAqX29sZDtcdFx0XHRcdFxcXG4rXHRfX3R5cGVvZl9fKCooX3B0cikpIF9fbmV3ID0gKF9uZXcpO1x0XHRcdFx0XFxcbitcdGFzbSB2b2xhdGlsZShcIlxcblwiXHRcdFx0XHRcdFx0XFxcbitcdFx0ICAgICBcIjE6IFwiIExPQ0tfUFJFRklYIFwiY21weGNoZzE2YiAlW3B0cl1cXG5cIlx0XHRcXFxuK1x0XHQgICAgIFwibW92ICQwLCAlW3Jlc3VsdF1cXG5cXHRcIlx0XHRcdFx0XFxcbitcdFx0ICAgICBcInNldHogJWJbcmVzdWx0XVxcblwiXHRcdFx0XHRcXFxuK1x0XHQgICAgIFwiMjpcXG5cIlx0XHRcdFx0XHRcdFxcXG4rXHRcdCAgICAgX0FTTV9FWFRBQkxFX1RZUEVfUkVHKDFiLCAyYiwgRVhfVFlQRV9FRkFVTFRfUkVHLFx0XFxcbitcdFx0XHRcdFx0ICAgJVtyZXN1bHRdKVx0XHRcdFxcXG4rXHRcdCAgICAgOiBbcmVzdWx0XSBcIj1xXCIgKF9fcmVzdWx0KSxcdFx0XHRcXFxuK1x0XHQgICAgICAgXCIrQVwiIChfX29sZCksXHRcdFx0XHRcdFxcXG4rXHRcdCAgICAgICBbcHRyXSBcIittXCIgKCpfcHRyKVx0XHRcdFx0XFxcbitcdFx0ICAgICA6IFwiYlwiICgodTY0KV9fbmV3KSxcdFx0XHRcdFxcXG4rXHRcdCAgICAgICBcImNcIiAoKHU2NCkoKHUxMjgpX19uZXcgXHUwMDNlXHUwMDNlIDY0KSlcdFx0XHRcXFxuK1x0XHQgICAgIDogXCJtZW1vcnlcIiwgXCJjY1wiKTtcdFx0XHRcdFx0XFxcbitcdGlmICh1bmxpa2VseShfX3Jlc3VsdCBcdTAwM2MgMCkpXHRcdFx0XHRcdFxcXG4rXHRcdGdvdG8gbGFiZWw7XHRcdFx0XHRcdFx0XFxcbitcdGlmICh1bmxpa2VseSghX19yZXN1bHQpKVx0XHRcdFx0XHRcXFxuK1x0XHQqX29sZCA9IF9fb2xkO1x0XHRcdFx0XHRcdFxcXG4rXHRsaWtlbHkoX19yZXN1bHQpO1x0XHRcdFx0XHR9KVxuICNlbmRpZiAvLyBDT05GSUdfWDg2XzMyXG4gI2VuZGlmIC8vIENPTkZJR19DQ19IQVNfQVNNX0dPVE9fVElFRF9PVVRQVVRcbiBcbkBAIC01NTEsMTEgKzU5NCwxOCBAQCBkbyB7XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIFxuIGV4dGVybiB2b2lkIF9fdHJ5X2NtcHhjaGdfdXNlcl93cm9uZ19zaXplKHZvaWQpO1xuIFxuLSNpZm5kZWYgQ09ORklHX1g4Nl8zMlxuKyNpZmRlZiBDT05GSUdfWDg2XzMyXG4rLyogQWx3YXlzIGZhaWwgb24gMzIgYml0IGFyY2ggYXMgaXQgZG8gbm90IHN1cHBvcnQgMTI4IGNtcHhjaGcgKGkuZS4gY21weGNoZzE2YlxuKyAqIGluc3RydWN0aW9uKS5cbisgKi9cbisjZGVmaW5lIF9fdHJ5X2NtcHhjaGcxMjhfdXNlcl9hc20oX3B0ciwgX3BvbGQsIF9uZXcsIGxhYmVsKSAoMSlcbisjZWxzZVxuICNkZWZpbmUgX190cnlfY21weGNoZzY0X3VzZXJfYXNtKF9wdHIsIF9vbGRwLCBfbnZhbCwgX2xhYmVsKVx0XHRcXFxuIFx0X190cnlfY21weGNoZ191c2VyX2FzbShcInFcIiwgXCJyXCIsIChfcHRyKSwgKF9vbGRwKSwgKF9udmFsKSwgX2xhYmVsKVxuK1xuICNlbmRpZlxuIFxuK1xuIC8qXG4gICogRm9yY2UgdGhlIHBvaW50ZXIgdG8gdVx1MDAzY3NpemVcdTAwM2UgdG8gbWF0Y2ggdGhlIHNpemUgZXhwZWN0ZWQgYnkgdGhlIGFzbSBoZWxwZXIuXG4gICogY2xhbmcvTExWTSBjb21waWxlcyBhbGwgY2FzZXMgYW5kIG9ubHkgZGlzY2FyZHMgdGhlIHVudXNlZCBwYXRocyBhZnRlclxuQEAgLTU4MCw2ICs2MzAsMTAgQEAgZXh0ZXJuIHZvaWQgX190cnlfY21weGNoZ191c2VyX3dyb25nX3NpemUodm9pZCk7XG4gXHRjYXNlIDg6XHRfX3JldCA9IF9fdHJ5X2NtcHhjaGc2NF91c2VyX2FzbSgoX19mb3JjZSB1NjQgKikoX3B0ciksIChfb2xkcCksXFxcbiBcdFx0XHRcdFx0XHQgKF9udmFsKSwgX2xhYmVsKTtcdFx0XFxcbiBcdFx0YnJlYWs7XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRjYXNlIDE2Olx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0XHRfX3JldCA9IF9fdHJ5X2NtcHhjaGcxMjhfdXNlcl9hc20oKF9fZm9yY2UgdTEyOCAqKShfcHRyKSxcdFxcXG4rXHRcdFx0XHRcdFx0ICAoX29sZHApLCAoX252YWwpLCBfbGFiZWwpO1x0XFxcbitcdFx0YnJlYWs7XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRkZWZhdWx0OiBfX3RyeV9jbXB4Y2hnX3VzZXJfd3Jvbmdfc2l6ZSgpO1x0XHRcdFx0XFxcbiBcdH1cdFx0XHRcdFx0XHRcdFx0XHRcXFxuIFx0X19yZXQ7XHRcdFx0XHRcdFx0fSlcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jIGIvYXJjaC94ODYva3ZtL2VtdWxhdGUuY1xuaW5kZXggYzhlMjkyZTlhMjRkZmUuLjlkZjU1YjNjNTYyNzY1IDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL2VtdWxhdGUuY1xuKysrIGIvYXJjaC94ODYva3ZtL2VtdWxhdGUuY1xuQEAgLTIxODgsMjQgKzIxODgsMzYgQEAgc3RhdGljIGludCBlbV9jYWxsX25lYXJfYWJzKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KVxuIFx0cmV0dXJuIHJjO1xuIH1cbiBcbisjZGVmaW5lIGVtX2NtcHhjaGc4Yl8xNmIoX19jLCByYml0cywgbWJpdHMpXFxcbitkbyB7XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdHUjI21iaXRzIG9sZCA9IF9fYy1cdTAwM2Vkc3Qub3JpZ192YWwjI21iaXRzO1x0XHRcdFx0XHRcdFxcXG4rXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdEJVSUxEX0JVR19PTihyYml0cyAqIDIgIT0gbWJpdHMpO1x0XHRcdFx0XHRcdFx0XFxcbitcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0aWYgKCgodSMjcmJpdHMpIChvbGQgXHUwMDNlXHUwMDNlIDApICE9ICh1IyNyYml0cykgcmVnX3JlYWQoY3R4dCwgVkNQVV9SRUdTX1JBWCkpIHx8XHRcdFxcXG4rXHQgICAgKCh1IyNyYml0cykgKG9sZCBcdTAwM2VcdTAwM2UgcmJpdHMpICE9ICh1IyNyYml0cykgcmVnX3JlYWQoY3R4dCwgVkNQVV9SRUdTX1JEWCkpKSB7XHRcdFxcXG4rXHRcdCpyZWdfd3JpdGUoY3R4dCwgVkNQVV9SRUdTX1JBWCkgPSAodSMjcmJpdHMpIChvbGQgXHUwMDNlXHUwMDNlIDApO1x0XHRcdFxcXG4rXHRcdCpyZWdfd3JpdGUoY3R4dCwgVkNQVV9SRUdTX1JEWCkgPSAodSMjcmJpdHMpIChvbGQgXHUwMDNlXHUwMDNlIHJiaXRzKTtcdFx0XHRcXFxuK1x0XHRjdHh0LVx1MDAzZWVmbGFncyBcdTAwMjY9IH5YODZfRUZMQUdTX1pGO1x0XHRcdFx0XHRcdFx0XFxcbitcdH0gZWxzZSB7XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0XHRjdHh0LVx1MDAzZWRzdC52YWwjI21iaXRzID0gKCh1IyNtYml0cylyZWdfcmVhZChjdHh0LCBWQ1BVX1JFR1NfUkNYKSBcdTAwM2NcdTAwM2MgcmJpdHMpIHxcdFxcXG4rXHRcdFx0XHRcdCh1IyNyYml0cykgcmVnX3JlYWQoY3R4dCwgVkNQVV9SRUdTX1JCWCk7XHRcdFxcXG4rXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0Y3R4dC1cdTAwM2VlZmxhZ3MgfD0gWDg2X0VGTEFHU19aRjtcdFx0XHRcdFx0XHRcdFxcXG4rXHR9XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4rfSB3aGlsZSgwKVxuK1xuIHN0YXRpYyBpbnQgZW1fY21weGNoZzhiKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KVxuIHtcbi1cdHU2NCBvbGQgPSBjdHh0LVx1MDAzZWRzdC5vcmlnX3ZhbDY0O1xuLVxuLVx0aWYgKGN0eHQtXHUwMDNlZHN0LmJ5dGVzID09IDE2KVxuK1x0aWYgKFdBUk5fT05fT05DRSg4ICsgISEoY3R4dC1cdTAwM2VyZXhfYml0cyBcdTAwMjYgUkVYX1cpICogOCAhPSBjdHh0LVx1MDAzZWRzdC5ieXRlcykpXG4gXHRcdHJldHVybiBYODZFTVVMX1VOSEFORExFQUJMRTtcbiBcbi1cdGlmICgoKHUzMikgKG9sZCBcdTAwM2VcdTAwM2UgMCkgIT0gKHUzMikgcmVnX3JlYWQoY3R4dCwgVkNQVV9SRUdTX1JBWCkpIHx8XG4tXHQgICAgKCh1MzIpIChvbGQgXHUwMDNlXHUwMDNlIDMyKSAhPSAodTMyKSByZWdfcmVhZChjdHh0LCBWQ1BVX1JFR1NfUkRYKSkpIHtcbi1cdFx0KnJlZ193cml0ZShjdHh0LCBWQ1BVX1JFR1NfUkFYKSA9ICh1MzIpIChvbGQgXHUwMDNlXHUwMDNlIDApO1xuLVx0XHQqcmVnX3dyaXRlKGN0eHQsIFZDUFVfUkVHU19SRFgpID0gKHUzMikgKG9sZCBcdTAwM2VcdTAwM2UgMzIpO1xuLVx0XHRjdHh0LVx1MDAzZWVmbGFncyBcdTAwMjY9IH5YODZfRUZMQUdTX1pGO1xuLVx0fSBlbHNlIHtcbi1cdFx0Y3R4dC1cdTAwM2Vkc3QudmFsNjQgPSAoKHU2NClyZWdfcmVhZChjdHh0LCBWQ1BVX1JFR1NfUkNYKSBcdTAwM2NcdTAwM2MgMzIpIHxcbi1cdFx0XHQodTMyKSByZWdfcmVhZChjdHh0LCBWQ1BVX1JFR1NfUkJYKTtcbi1cbi1cdFx0Y3R4dC1cdTAwM2VlZmxhZ3MgfD0gWDg2X0VGTEFHU19aRjtcbi1cdH1cbitcdGlmICghKGN0eHQtXHUwMDNlcmV4X2JpdHMgXHUwMDI2IFJFWF9XKSlcbitcdFx0ZW1fY21weGNoZzhiXzE2YihjdHh0LCAzMiwgNjQpO1xuKyNpZmRlZiBDT05GSUdfWDg2XzY0XG4rXHRlbHNlXG4rXHRcdGVtX2NtcHhjaGc4Yl8xNmIoY3R4dCwgNjQsIDEyOCk7XG4rI2VuZGlmXG4gXHRyZXR1cm4gWDg2RU1VTF9DT05USU5VRTtcbiB9XG4gXG5AQCAtNTQwNSw4ICs1NDE3LDE0IEBAIGludCB4ODZfZW11bGF0ZV9pbnNuKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0LCBib29sIGNoZWNrX2ludGVyY2VwdHMpXG4gXHRcdFx0Z290byBkb25lO1xuIFx0XHR9XG4gXHR9XG4tXHQvKiBDb3B5IGZ1bGwgNjQtYml0IHZhbHVlIGZvciBDTVBYQ0hHOEIuICAqL1xuLVx0Y3R4dC1cdTAwM2Vkc3Qub3JpZ192YWw2NCA9IGN0eHQtXHUwMDNlZHN0LnZhbDY0O1xuK1x0LyogQ29weSBmdWxsIDY0LzEyOC1iaXQgdmFsdWUgZm9yIENNUFhDSEc4Qi4gICovXG4rXG4rI2lmZGVmIENPTkZJR19YODZfNjRcbitcdGlmIChjdHh0LVx1MDAzZWRzdC5ieXRlcyA9PSAxNilcbitcdFx0Y3R4dC1cdTAwM2Vkc3Qub3JpZ192YWwxMjggPSBjdHh0LVx1MDAzZWRzdC52YWwxMjg7XG4rXHRlbHNlXG4rI2VuZGlmXG4rXHRcdGN0eHQtXHUwMDNlZHN0Lm9yaWdfdmFsNjQgPSBjdHh0LVx1MDAzZWRzdC52YWw2NDtcbiBcbiBzcGVjaWFsX2luc246XG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL2t2bV9lbXVsYXRlLmggYi9hcmNoL3g4Ni9rdm0va3ZtX2VtdWxhdGUuaFxuaW5kZXggZmIzZGFiNGI1YTUzZTcuLmE1MTY3NzIxN2FkYTQzIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL2t2bV9lbXVsYXRlLmhcbisrKyBiL2FyY2gveDg2L2t2bS9rdm1fZW11bGF0ZS5oXG5AQCAtMjU1LDYgKzI1NSw5IEBAIHN0cnVjdCBvcGVyYW5kIHtcbiBcdHVuaW9uIHtcbiBcdFx0dW5zaWduZWQgbG9uZyBvcmlnX3ZhbDtcbiBcdFx0dTY0IG9yaWdfdmFsNjQ7XG4rI2lmZGVmIENPTkZJR19YODZfNjRcbitcdFx0dTEyOCBvcmlnX3ZhbDEyODtcbisjZW5kaWZcbiBcdH07XG4gXHR1bmlvbiB7XG4gXHRcdHVuc2lnbmVkIGxvbmcgKnJlZztcbkBAIC0yNjgsNiArMjcxLDkgQEAgc3RydWN0IG9wZXJhbmQge1xuIFx0dW5pb24ge1xuIFx0XHR1bnNpZ25lZCBsb25nIHZhbDtcbiBcdFx0dTY0IHZhbDY0O1xuKyNpZmRlZiBDT05GSUdfWDg2XzY0XG4rXHRcdHUxMjggdmFsMTI4O1xuKyNlbmRpZlxuIFx0XHRjaGFyIHZhbHB0cltzaXplb2YoYXZ4MjU2X3QpXTtcbiBcdFx0c3NlMTI4X3QgdmVjX3ZhbDtcbiBcdFx0YXZ4MjU2X3QgdmVjX3ZhbDI7XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3ZtL3g4Ni5jXG5pbmRleCAzZmI2NDkwNWQxOTA3MS4uNDBjODRmOGM0OTEyOTQgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmNcbisrKyBiL2FyY2gveDg2L2t2bS94ODYuY1xuQEAgLTgzMjIsNyArODMyMiw3IEBAIHN0YXRpYyBpbnQgZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZChzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCxcbiBcdGludCByO1xuIFxuIFx0LyogZ3Vlc3RzIGNtcHhjaGc4YiBoYXZlIHRvIGJlIGVtdWxhdGVkIGF0b21pY2FsbHkgKi9cbi1cdGlmIChieXRlcyBcdTAwM2UgOCB8fCAoYnl0ZXMgXHUwMDI2IChieXRlcyAtIDEpKSlcbitcdGlmIChieXRlcyBcdTAwM2UgMiAqIHNpemVvZih1bnNpZ25lZCBsb25nKSB8fCAoYnl0ZXMgXHUwMDI2IChieXRlcyAtIDEpKSlcbiBcdFx0Z290byBlbXVsX3dyaXRlO1xuIFxuIFx0Z3BhID0ga3ZtX21tdV9ndmFfdG9fZ3BhX3dyaXRlKHZjcHUsIGFkZHIsIE5VTEwpO1xuQEAgLTgzNjIsNiArODM2MiwxMSBAQCBzdGF0aWMgaW50IGVtdWxhdG9yX2NtcHhjaGdfZW11bGF0ZWQoc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQsXG4gXHRjYXNlIDg6XG4gXHRcdHIgPSBlbXVsYXRvcl90cnlfY21weGNoZ191c2VyKHU2NCwgaHZhLCBvbGQsIG5ldyk7XG4gXHRcdGJyZWFrO1xuKyNpZmRlZiBDT05GSUdfWDg2XzY0XG4rXHRjYXNlIDE2OlxuK1x0XHRyID0gZW11bGF0b3JfdHJ5X2NtcHhjaGdfdXNlcih1MTI4LCBodmEsIG9sZCwgbmV3KTtcbitcdFx0YnJlYWs7XG4rI2VuZGlmXG4gXHRkZWZhdWx0OlxuIFx0XHRCVUcoKTtcbiBcdH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA3OjAxOjQ3LjE0MjE0NTA3OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgwMDExNjM4ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgY21weGNoZzE2YiBLVk0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gcmV2aWV3aW5nIHRoaXMgcGF0Y2ggdGhhdCBpbnRyb2R1Y2VzIDEyOC1iaXQgY29tcGFyZS1hbmQtc3dhcCAoY21weGNoZzE2Yikgc3VwcG9ydCBpbnRvIHRoZSB4ODYgdWFjY2VzcyBhbmQgS1ZNIGVtdWxhdGlvbiBsYXllcnMuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHNvdW5kLiBUaGV5J3ZlIGFkZGVkIGBfX3RyeV9jbXB4Y2hnMTI4X3VzZXJfYXNtYCB0byBgYXJjaC94ODYvaW5jbHVkZS9hc20vdWFjY2Vzcy5oYCwgd2hpY2ggaXMgdGhlIGV4cGVjdGVkIGxvY2F0aW9uLiBDcnVjaWFsbHksIHRoZSBLVk0gZW11bGF0aW9uIGNvbXBvbmVudHMgaGF2ZSBiZWVuIG1vZGlmaWVkOiBgYXJjaC94ODYva3ZtL2VtdWxhdGUuY2AsIGBhcmNoL3g4Ni9rdm0va3ZtX2VtdWxhdGUuaGAsIGFuZCBgYXJjaC94ODYva3ZtL3g4Ni5jYCBhbGwgc2VlIGNoYW5nZXMgdG8gaGFuZGxlIHRoZSBjbXB4Y2hnMTZiIGluc3RydWN0aW9uLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdGhpcyBpcyAqZGVmaW5pdGVseSogcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsICp3aXRoaW4gdGhlIEtWTSBjb250ZXh0Ki4gVGhleSd2ZSB1cGRhdGVkIGBlbV9jbXB4Y2hnOGJgIGluIGBlbXVsYXRlLmNgIHRvIGNvbmRpdGlvbmFsbHkgaGFuZGxlIHRoZSAxMjgtYml0IHZlcnNpb24gd2hlbiBgUkVYX1dgIGlzIHNldCAod2hpY2ggaXMgc3RhbmRhcmQgZm9yIDY0LWJpdCBpbnN0cnVjdGlvbnMpLiBBbHNvLCBgZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZGAgaW4gYHg4Ni5jYCBub3cgc3VwcG9ydHMgdGhlIDE2LWJ5dGUgY29tcGFyZS1hbmQtc3dhcCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgc2VlIHRoZSBmbG93OyBpdOKAmXMgYWxsIGNvbm5lY3RlZC5cblxuTm93LCBteSBmb2N1cyBzaGlmdHMgdG8gZnV6emluZy4gV2UgYWJzb2x1dGVseSBuZWVkIHRvIHN1YmplY3QgdGhpcyB0byByaWdvcm91cyB0ZXN0aW5nLiBMZXQncyBpZGVudGlmeSB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnRzIGZvciBmdXp6aW5nLiBXZSdsbCBiZSB0YXJnZXRpbmc6XG5cbiogICBgZW1fY21weGNoZzhiYCBpbiBgYXJjaC94ODYva3ZtL2VtdWxhdGUuY2BcbiogICBgZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZGAgaW4gYGFyY2gveDg2L2t2bS94ODYuY2BcblxuTmV4dCwgSSBuZWVkIHRvIHZlcmlmeSB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEkgc2VlIHRoZSBzdGFuZGFyZCBndWFyZHM6IGAjaWZkZWYgQ09ORklHX1g4Nl82NGAgYW5kIGAjaWZuZGVmIENPTkZJR19YODZfMzJgLCB3aGljaCBpcyBleHBlY3RlZCBmb3IgNjQtYml0IGFyY2hpdGVjdHVyZSBzdXBwb3J0LiBHaXZlbiB0aGUgS1ZNIGludm9sdmVtZW50LCBgQ09ORklHX0tWTWAgaXMsIG5hdHVyYWxseSwgYSBwcmVyZXF1aXNpdGUuIFRoYXQgYWxsIGxvb2tzIGNvcnJlY3QuXG5cbkZpbmFsbHksIGp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgd2lsbCB1c2UgYGdyZXBwZXJgIG9uIHRoZSBjb2RlYmFzZSB0byBsb29rIGZvciBhbnkgcmVsYXRlZCBmdW5jdGlvbnMgdGhhdCBtYXkgaGF2ZSBiZWVuIG92ZXJsb29rZWQgZHVyaW5nIHRoaXMgcGF0Y2guIEkgd2FudCB0byBlbnN1cmUgd2UndmUgZ290IGEgY29tcHJlaGVuc2l2ZSB2aWV3IG9mIHRoZSBjaGFuZ2UncyBpbXBhY3QuIFNwZWNpZmljYWxseSwgaXQgd291bGQgYmUgdXNlZnVsIHRvIGNoZWNrIGFsbCBjYWxsIHNpdGVzIHRvIGBlbXVsYXRvcl9jbXB4Y2hnX2VtdWxhdGVkYCBhbmQgYGVtX2NtcHhjaGc4YmAgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIGFueSBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLiBJIHdhbnQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhleSBkaWRuJ3QgbWlzcyBzb21ldGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMzMsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNzowMTo1NS4xNDMzMTJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA0Mzg2NTMwMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlbV9jbXB4Y2hnOGJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL2VtdWxhdGUuYz0yMTc3PXN0YXRpYyBpbnQgZW1fY2FsbF9uZWFyX2FicyhzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dClcXG4tLVxcbmFyY2gveDg2L2t2bS9lbXVsYXRlLmMtMjE5MC1cXG5hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jOjIxOTE6I2RlZmluZSBlbV9jbXB4Y2hnOGJfMTZiKF9fYywgcmJpdHMsIG1iaXRzKVxcXFxcXG5hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jLTIxOTItZG8ge1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmFyY2gveDg2L2t2bS9lbXVsYXRlLmMtMjIwOS1cXG5hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jOjIyMTA6c3RhdGljIGludCBlbV9jbXB4Y2hnOGIoc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpXFxuYXJjaC94ODYva3ZtL2VtdWxhdGUuYy0yMjExLXtcXG4tLVxcbmFyY2gveDg2L2t2bS9lbXVsYXRlLmMtMjIxNS1cXHRpZiAoIShjdHh0LVxcdTAwM2VyZXhfYml0cyBcXHUwMDI2IFJFWF9XKSlcXG5hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jOjIyMTY6XFx0XFx0ZW1fY21weGNoZzhiXzE2YihjdHh0LCAzMiwgNjQpO1xcbmFyY2gveDg2L2t2bS9lbXVsYXRlLmMtMjIxNy0jaWZkZWYgQ09ORklHX1g4Nl82NFxcbmFyY2gveDg2L2t2bS9lbXVsYXRlLmMtMjIxOC1cXHRlbHNlXFxuYXJjaC94ODYva3ZtL2VtdWxhdGUuYzoyMjE5OlxcdFxcdGVtX2NtcHhjaGc4Yl8xNmIoY3R4dCwgNjQsIDEyOCk7XFxuYXJjaC94ODYva3ZtL2VtdWxhdGUuYy0yMjIwLSNlbmRpZlxcbi0tXFxuYXJjaC94ODYva3ZtL2VtdWxhdGUuYz00MTExPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3JvdXBfZHVhbCBncm91cDkgPSB7IHtcXG5hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jOjQxMTI6XFx0TiwgSShEc3RNZW02NCB8IExvY2sgfCBQYWdlVGFibGUsIGVtX2NtcHhjaGc4YiksIE4sIE4sIE4sIE4sIE4sIE4sXFxuYXJjaC94ODYva3ZtL2VtdWxhdGUuYy00MTEzLX0sIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDc6MDI6MDAuMTg3MTg2MjIyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE1MTQ2ODUxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIGNvZGUgc25pcHBldHMsIHN1bW1hcml6ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXMgeW91IHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBgZW1fY21weGNoZzhiYCBMYW5kc2NhcGUqKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgZW1fY21weGNoZzhiYCBmdW5jdGlvbiwgYW5kIGl0J3MgZmxhZ2dlZCBhcyBiZWluZyBwYXJ0IG9mIHRoZSBgZ3JvdXA5YCBpbnN0cnVjdGlvbiBncm91cC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIHNvbWV0aGluZyBjb3JlLCBwcm9iYWJseSByZWxhdGVkIHRvIGF0b21pYyBvcGVyYXRpb25zLCBzcGVjaWZpY2FsbHkgb24gOC1ieXRlIHZhbHVlcy4gR2l2ZW4gdGhlIGNvbnRleHQsIEknbSBndWVzc2luZyB0aGlzIGZ1bmN0aW9uIGlzIGRlZXBseSBpbnRlcnR3aW5lZCB3aXRoIGNvbmN1cnJlbmN5IHByaW1pdGl2ZXMgd2l0aGluIHRoZSB2aXJ0dWFsIG1hY2hpbmUuIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gd2hhdCBgZ3JvdXA5YCBhY3R1YWxseSAqaXMqIHdpdGhpbiB0aGlzIGNvZGViYXNlLCBidXQgbXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGl0J3MgaGFuZGxpbmcgbWVtb3J5IHN5bmNocm9uaXphdGlvbiBjb25jZXJucy5cblxuVGhlbiwgSSBzZWUgYGVtdWxhdG9yX2NtcHhjaGdfZW11bGF0ZWRgIG1lbnRpb25lZCwgd2hpY2ggaXMgbG9jYXRlZCBpbiBgYXJjaC94ODYva3ZtL3g4Ni5jYC4gQWgsIHJpZ2h0LCB0aGF0IHBvaW50cyB0byB0aGUgZW11bGF0aW9uIGxheWVyIHdpdGhpbiB0aGUgS1ZNIGh5cGVydmlzb3Igb24geDg2IGFyY2hpdGVjdHVyZXMuIFRoaXMgaXMgdGhlIHBhcnQgdGhhdCBpbnRlcmVzdHMgbWUgdGhlIG1vc3QsIGNvbnNpZGVyaW5nIG15IGV4cGVyaWVuY2UuIEl0IHN0cm9uZ2x5IGltcGxpZXMgdGhhdCBgZW1fY21weGNoZzhiYCAod2hpY2ggaXMgcHJlc3VtYWJseSBlbXVsYXRpbmcgdGhlIENNcHhjaGc4YiBpbnN0cnVjdGlvbikgaXMgaGFuZGxlZCBpbiBhIHNvZnR3YXJlIGZhbGxiYWNrIHBhdGguIFRoaXMgaXMgbGlrZWx5IHRvIGJlIHVzZWQgaW4gb2xkZXIgcHJvY2Vzc29ycyBvciB3aGVuIGNlcnRhaW4gYXJjaGl0ZWN0dXJhbCBmZWF0dXJlcyBhcmUgZGlzYWJsZWQuIEkgd2FudCB0byBsb29rIGludG8gaG93IHRoZSBlbXVsYXRlZCB2ZXJzaW9uIGhhbmRsZXMgdGhlIGNvbXBsZXhpdGllcyBvZiB0aGlzIGluc3RydWN0aW9uIChsb2FkLWxpbmtlZC9zdG9yZS1jb25kaXRpb25hbCBhbmQgbWVtb3J5IG9yZGVyaW5nKSwgZXNwZWNpYWxseSBhcm91bmQgdGhlIG51YW5jZXMgb2YgaGFuZGxpbmcgYXRvbWljIG9wZXJhdGlvbnMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhpcyBzdWdnZXN0cyB0aGUga2VybmVsIGlzIGxpa2VseSBydW5uaW5nIHRoZSBlbXVsYXRlZCB2ZXJzaW9uIHJhdGhlciB0aGFuIGRpcmVjdGx5IHVzaW5nIHRoZSBuYXRpdmUgaGFyZHdhcmUgaW5zdHJ1Y3Rpb24gdG8gbWFpbnRhaW4gY29tcGF0aWJpbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjY2MCwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA3OjAyOjA0LjMzODY1NzA5OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjYxODg2MTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVtdWxhdG9yX2NtcHhjaGdfZW11bGF0ZWRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jPTgyOTg9c3RhdGljIGludCBlbXVsYXRvcl93cml0ZV9lbXVsYXRlZChzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCxcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy04MzEwLVxcbmFyY2gveDg2L2t2bS94ODYuYzo4MzExOnN0YXRpYyBpbnQgZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZChzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCxcXG5hcmNoL3g4Ni9rdm0veDg2LmMtODMxMi1cXHRcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz04ODk5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgeDg2X2VtdWxhdGVfb3BzIGVtdWxhdGVfb3BzID0ge1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg5MDctXFx0LndyaXRlX2VtdWxhdGVkICAgICAgPSBlbXVsYXRvcl93cml0ZV9lbXVsYXRlZCxcXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODkwODpcXHQuY21weGNoZ19lbXVsYXRlZCAgICA9IGVtdWxhdG9yX2NtcHhjaGdfZW11bGF0ZWQsXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg5MDktXFx0LmludmxwZyAgICAgICAgICAgICAgPSBlbXVsYXRvcl9pbnZscGcsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA3OjAyOjA3LjAwMDU0OTA5OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4ODQzNTExMzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgS1ZNJ3MgY21weGNoZzE2YiBFbXVsYXRpb24gZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYGNtcHhjaGcxNmJgIEtWTSBlbXVsYXRpb24gcGF0Y2gsIGFuZCBteSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBjb3JlIGZ1bmN0aW9ucy4gRnJvbSB3aGF0IEkgc2VlLCBgZW1fY21weGNoZzhiYCBhbmQgYGVtdWxhdG9yX2NtcHhjaGdfZW11bGF0ZWRgIGFyZSB0aGUgcHJpbWFyeSBvbmVzIGRlYWxpbmcgd2l0aCB0aGlzIGluc3RydWN0aW9uLiBUaGUgS1ZNIGNvbmZpZ3VyYXRpb24sIG5hdHVyYWxseSwgaXMgYEtWTWAuIFRoYXQncyB0aGUgYmFzZWxpbmUuXG5cbkxldCBtZSBqdXN0IHF1aWNrbHkgdmVyaWZ5IGlmIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyBhcmUgcmVsZXZhbnQgaGVyZS4gSSdtIG5vdGluZyB0aGF0IGBDT05GSUdfWDg2XzY0YCBpcyByZXF1aXJlZCBmb3IgdGhlIDEyOC1iaXQgY29tcGFyZS1hbmQtZXhjaGFuZ2UgbG9naWMsIGJ1dCBzaW5jZSBTeXprYWxsZXIsIHdoaWNoIHRoaXMgaXMgbGlrZWx5IGZvciwgcHJpbWFyaWx5IG9wZXJhdGVzIG9uIHg4Nl82NCwgdGhhdCdzIG5vdCBhIG1ham9yIGNvbmNlcm4uIFRoZSBwcmltYXJ5IGZvY3VzIHJlbWFpbnMgb24gYENPTkZJR19LVk1gLlxuXG5Ob3csIGxldCdzIGJyZWFrIGRvd24gdGhlIHJhdGlvbmFsZSBiZWhpbmQgZnV6emluZyB0aGlzLiBUaGUgcGF0Y2gncyBjb3JlIGZ1bmN0aW9uIGlzIGVtdWxhdGluZyB0aGUgYGNtcHhjaGcxNmJgIGluc3RydWN0aW9uIHdpdGhpbiBLVk0uIEl0J3MgdG91Y2hpbmcgdGhlIGluc3RydWN0aW9uIGVtdWxhdG9yIGl0c2VsZiwgYXMgd2VsbCBhcyB0aGUgbWVtb3J5IGFjY2VzcyBjYWxsYmFja3MsIHNwZWNpZmljYWxseSB0byBoYW5kbGUgYXRvbWljIDE2LWJ5dGUgY29tcGFyZS1hbmQtZXhjaGFuZ2Ugb3BlcmF0aW9ucy4gVGhpcyByZXByZXNlbnRzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gdG8gdGhlIHZlcnkgaGVhcnQgb2YgdGhlIEtWTSBlbXVsYXRpb24uIENyaXRpY2FsbHksIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBkaXJlY3RseSBhY2Nlc3NpYmxlIHRvIGEgZ3Vlc3QgdGhhdCBleGVjdXRlcyB0aGUgYGNtcHhjaGcxNmJgIGluc3RydWN0aW9uLiBUaGVyZWZvcmUsIGZ1enppbmcgaXMgYWJzb2x1dGVseSB3YXJyYW50ZWQuIEl0IGlzIGEgY3JpdGljYWwgcGF0aC5cblxuU28sIHRoZSBrZXkgc3ltYm9scyBJIG5lZWQgdG8gY29uY2VudHJhdGUgb24gZm9yIGZ1enppbmcgcmVtYWluIGBlbV9jbXB4Y2hnOGJgIGFuZCBgZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZGAuIEkndmUgYWxyZWFkeSBjb25maXJtZWQgYEtWTWAgYXMgdGhlIGVzc2VudGlhbCBjb25maWcuIEknbGwgZG91YmxlLWNoZWNrIGZvciBhbnkgb3RoZXIgcG90ZW50aWFsbHkgcmVsZXZhbnQgZnVuY3Rpb25zLCBidXQgSSB0aGluayB0aGF0J3MgaXQuIExvb2tpbmcgZGVlcGVyIG5vdzogSSdtIHNlZWluZyB0aGF0IGBfX3RyeV9jbXB4Y2hnMTI4X3VzZXJfYXNtYCBpcyBhIG1hY3JvLCBhbmQgc28gaXMgYGVtX2NtcHhjaGc4Yl8xNmJgLiBTbywgbm8sIHRoZSBmb2N1cyBzeW1ib2xzIGFyZSBjb3JyZWN0LlxuXG5UaGF0IHNvbGlkaWZpZXMgdGhpbmdzLiBJIGFtIHNhdGlzZmllZCB3aXRoIG15IGFuYWx5c2lzLiBJJ20gY2FsbGluZyBzZXQtcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzM4OCwiT3V0cHV0VG9rZW5zIjoxMzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDc6MDI6MTMuODg0OTAyOTgzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjY3MjUzMjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVtX2NtcHhjaGc4YlwiLFxuICAgIFwiZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgZW11bGF0aW5nIHRoZSBjbXB4Y2hnMTZiIGluc3RydWN0aW9uIGluIEtWTS4gSXQgbW9kaWZpZXMgdGhlIGluc3RydWN0aW9uIGVtdWxhdG9yIGFuZCB0aGUgbWVtb3J5IGFjY2VzcyBjYWxsYmFja3MgdG8gaGFuZGxlIDE2LWJ5dGUgYXRvbWljIGNvbXBhcmUtYW5kLWV4Y2hhbmdlIG9wZXJhdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY29yZSBLVk0gZW11bGF0aW9uIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGJ5IGEgZ3Vlc3QgZXhlY3V0aW5nIHRoZSBjbXB4Y2hnMTZiIGluc3RydWN0aW9uLCBhbmQgdGh1cyBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVtX2NtcHhjaGc4YlwiLFxuICAgIFwiZW11bGF0b3JfY21weGNoZ19lbXVsYXRlZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgZW11bGF0aW5nIHRoZSBjbXB4Y2hnMTZiIGluc3RydWN0aW9uIGluIEtWTS4gSXQgbW9kaWZpZXMgdGhlIGluc3RydWN0aW9uIGVtdWxhdG9yIGFuZCB0aGUgbWVtb3J5IGFjY2VzcyBjYWxsYmFja3MgdG8gaGFuZGxlIDE2LWJ5dGUgYXRvbWljIGNvbXBhcmUtYW5kLWV4Y2hhbmdlIG9wZXJhdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY29yZSBLVk0gZW11bGF0aW9uIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGJ5IGEgZ3Vlc3QgZXhlY3V0aW5nIHRoZSBjbXB4Y2hnMTZiIGluc3RydWN0aW9uLCBhbmQgdGh1cyBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowzcltx[1] Phase: Succeeded StartedAt: 2026-07-06 07:02:25 +0000 UTC FinishedAt: 2026-07-06 07:02:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcltx[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-06 07:02:25 +0000 UTC FinishedAt: 2026-07-06 07:02:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcltx[2] Phase: Succeeded StartedAt: 2026-07-06 07:02:25 +0000 UTC FinishedAt: 2026-07-06 11:03:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcltx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["em_cmpxchg8b","emulator_cmpxchg_emulated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8cdc78e8-3683-49e4-9fa5-43624827c030","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-06 07:02:25 +0000 UTC FinishedAt: 2026-07-06 11:03:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["em_cmpxchg8b","emulator_cmpxchg_emulated"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8cdc78e8-3683-49e4-9fa5-43624827c030","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowzcltx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["em_cmpxchg8b","emulator_cmpxchg_emulated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8cdc78e8-3683-49e4-9fa5-43624827c030","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-06 07:02:25 +0000 UTC FinishedAt: 2026-07-06 07:02:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcltx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["em_cmpxchg8b","emulator_cmpxchg_emulated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8cdc78e8-3683-49e4-9fa5-43624827c030","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-06 07:02:25 +0000 UTC FinishedAt: 2026-07-06 07:02:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzcltx/series-workflowzcltx-convert-artifact-1423610118/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzcltx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["em_cmpxchg8b","emulator_cmpxchg_emulated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8cdc78e8-3683-49e4-9fa5-43624827c030","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-06 07:02:45 +0000 UTC FinishedAt: 2026-07-06 07:29:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcltx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["em_cmpxchg8b","emulator_cmpxchg_emulated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8cdc78e8-3683-49e4-9fa5-43624827c030","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-06 07:02:45 +0000 UTC FinishedAt: 2026-07-06 07:29:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*626d69d2-cae1-4a3f-bf62-314f12bc048e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzcltx/series-workflowzcltx-convert-artifact-1423610118/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "16d1f317-1dd0-4dc5-8d74-c59d9477e7eb", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzcltx/series-workflowzcltx-build-action-2501629084/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzcltx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["em_cmpxchg8b","emulator_cmpxchg_emulated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8cdc78e8-3683-49e4-9fa5-43624827c030","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-06 07:02:45 +0000 UTC FinishedAt: 2026-07-06 07:29:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*626d69d2-cae1-4a3f-bf62-314f12bc048e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzcltx/series-workflowzcltx-convert-artifact-1423610118/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "16d1f317-1dd0-4dc5-8d74-c59d9477e7eb", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzcltx/series-workflowzcltx-build-action-2501629084/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzcltx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["em_cmpxchg8b","emulator_cmpxchg_emulated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8cdc78e8-3683-49e4-9fa5-43624827c030","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-06 07:29:47 +0000 UTC FinishedAt: 2026-07-06 07:29:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcltx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["em_cmpxchg8b","emulator_cmpxchg_emulated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8cdc78e8-3683-49e4-9fa5-43624827c030","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-06 07:29:47 +0000 UTC FinishedAt: 2026-07-06 07:29:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcltx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["em_cmpxchg8b","emulator_cmpxchg_emulated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8cdc78e8-3683-49e4-9fa5-43624827c030","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-06 07:29:47 +0000 UTC FinishedAt: 2026-07-06 07:30:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcltx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["em_cmpxchg8b","emulator_cmpxchg_emulated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8cdc78e8-3683-49e4-9fa5-43624827c030","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-06 07:29:47 +0000 UTC FinishedAt: 2026-07-06 07:29:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8cdc78e8-3683-49e4-9fa5-43624827c030","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzcltx/series-workflowzcltx-convert-artifact-4001597785/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzcltx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["em_cmpxchg8b","emulator_cmpxchg_emulated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8cdc78e8-3683-49e4-9fa5-43624827c030","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-06 07:30:08 +0000 UTC FinishedAt: 2026-07-06 07:32:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcltx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["em_cmpxchg8b","emulator_cmpxchg_emulated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8cdc78e8-3683-49e4-9fa5-43624827c030","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-06 07:30:08 +0000 UTC FinishedAt: 2026-07-06 07:31:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*16d1f317-1dd0-4dc5-8d74-c59d9477e7eb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzcltx/series-workflowzcltx-build-action-2501629084/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowzcltx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["em_cmpxchg8b","emulator_cmpxchg_emulated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8cdc78e8-3683-49e4-9fa5-43624827c030","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-06 07:32:08 +0000 UTC FinishedAt: 2026-07-06 07:32:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcltx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["em_cmpxchg8b","emulator_cmpxchg_emulated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8cdc78e8-3683-49e4-9fa5-43624827c030","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-06 07:32:08 +0000 UTC FinishedAt: 2026-07-06 07:32:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcltx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["em_cmpxchg8b","emulator_cmpxchg_emulated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8cdc78e8-3683-49e4-9fa5-43624827c030","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-06 07:32:08 +0000 UTC FinishedAt: 2026-07-06 08:00:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcltx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["em_cmpxchg8b","emulator_cmpxchg_emulated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8cdc78e8-3683-49e4-9fa5-43624827c030","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-06 07:32:08 +0000 UTC FinishedAt: 2026-07-06 08:00:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*626d69d2-cae1-4a3f-bf62-314f12bc048e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzcltx/series-workflowzcltx-convert-artifact-4001597785/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "3f389777-358a-4924-a058-b2e92349dc8b", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzcltx/series-workflowzcltx-build-action-2069540277/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzcltx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["em_cmpxchg8b","emulator_cmpxchg_emulated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8cdc78e8-3683-49e4-9fa5-43624827c030","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-06 07:32:08 +0000 UTC FinishedAt: 2026-07-06 08:00:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*626d69d2-cae1-4a3f-bf62-314f12bc048e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzcltx/series-workflowzcltx-convert-artifact-4001597785/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "3f389777-358a-4924-a058-b2e92349dc8b", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzcltx/series-workflowzcltx-build-action-2069540277/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzcltx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["em_cmpxchg8b","emulator_cmpxchg_emulated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8cdc78e8-3683-49e4-9fa5-43624827c030","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-06 08:00:36 +0000 UTC FinishedAt: 2026-07-06 08:00:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcltx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["em_cmpxchg8b","emulator_cmpxchg_emulated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8cdc78e8-3683-49e4-9fa5-43624827c030","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-06 08:00:36 +0000 UTC FinishedAt: 2026-07-06 08:00:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcltx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["em_cmpxchg8b","emulator_cmpxchg_emulated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8cdc78e8-3683-49e4-9fa5-43624827c030","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-06 08:00:36 +0000 UTC FinishedAt: 2026-07-06 08:02:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcltx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["em_cmpxchg8b","emulator_cmpxchg_emulated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8cdc78e8-3683-49e4-9fa5-43624827c030","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-06 08:00:36 +0000 UTC FinishedAt: 2026-07-06 08:02:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3f389777-358a-4924-a058-b2e92349dc8b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzcltx/series-workflowzcltx-build-action-2069540277/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowzcltx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["em_cmpxchg8b","emulator_cmpxchg_emulated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8cdc78e8-3683-49e4-9fa5-43624827c030","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-06 08:02:36 +0000 UTC FinishedAt: 2026-07-06 11:03:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcltx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["em_cmpxchg8b","emulator_cmpxchg_emulated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8cdc78e8-3683-49e4-9fa5-43624827c030","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-06 08:02:36 +0000 UTC FinishedAt: 2026-07-06 11:03:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["em_cmpxchg8b","emulator_cmpxchg_emulated"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*16d1f317-1dd0-4dc5-8d74-c59d9477e7eb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3f389777-358a-4924-a058-b2e92349dc8b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzcltx/series-workflowzcltx-build-action-2501629084/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzcltx/series-workflowzcltx-build-action-2069540277/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowzcltx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["em_cmpxchg8b","emulator_cmpxchg_emulated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8cdc78e8-3683-49e4-9fa5-43624827c030","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-06 08:02:36 +0000 UTC FinishedAt: 2026-07-06 08:02:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcltx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["em_cmpxchg8b","emulator_cmpxchg_emulated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8cdc78e8-3683-49e4-9fa5-43624827c030","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-06 08:02:36 +0000 UTC FinishedAt: 2026-07-06 08:02:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["em_cmpxchg8b","emulator_cmpxchg_emulated"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzcltx/series-workflowzcltx-convert-artifact-1091140942/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzcltx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["em_cmpxchg8b","emulator_cmpxchg_emulated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8cdc78e8-3683-49e4-9fa5-43624827c030","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-06 08:02:36 +0000 UTC FinishedAt: 2026-07-06 08:02:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcltx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["em_cmpxchg8b","emulator_cmpxchg_emulated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8cdc78e8-3683-49e4-9fa5-43624827c030","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-06 08:02:36 +0000 UTC FinishedAt: 2026-07-06 08:02:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcltx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["em_cmpxchg8b","emulator_cmpxchg_emulated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8cdc78e8-3683-49e4-9fa5-43624827c030","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-06 08:02:36 +0000 UTC FinishedAt: 2026-07-06 08:02:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcltx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["em_cmpxchg8b","emulator_cmpxchg_emulated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8cdc78e8-3683-49e4-9fa5-43624827c030","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-06 08:02:46 +0000 UTC FinishedAt: 2026-07-06 11:03:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzcltx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["em_cmpxchg8b","emulator_cmpxchg_emulated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"387a926ee166814611acecb960207fe2f3c4fd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8cdc78e8-3683-49e4-9fa5-43624827c030","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-06 08:02:46 +0000 UTC FinishedAt: 2026-07-06 11:03:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*16d1f317-1dd0-4dc5-8d74-c59d9477e7eb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3f389777-358a-4924-a058-b2e92349dc8b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzcltx/series-workflowzcltx-build-action-2501629084/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzcltx/series-workflowzcltx-build-action-2069540277/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzcltx/series-workflowzcltx-convert-artifact-1091140942/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}